As per discussion in #4388, CaseLoader handling several of the current duties of build_case() would make a lot of sense. Perhaps not the parts involving pulling parts of other documents from the database, but checks and straightforward format changes and name changes would sit snugly!