def update_case(self, case_obj):
<EOL>LOG.info("<STR_LIT>".format(case_obj['<STR_LIT>']))<EOL>old_case = self.case_collection.find_one(<EOL>{'<STR_LIT>': case_obj['<STR_LIT>']}<EOL>)<EOL>updated_case = self.case_collection.find_one_and_update(<EOL>{'<STR_LIT>': case_obj['<STR_LIT>']},<EOL>{<EOL>'<STR_LIT>': {<EOL>'<STR_LIT>': {'<STR_LIT>': case_obj['<STR_LIT>']},<EOL>'<STR_LIT>': {<EOL>'<STR_LIT:date>': old_case['<STR_LIT>'],<EOL>'<STR_LIT>': old_case.get('<STR_LIT>')<EOL>}<EOL>},<EOL>'<STR_LIT>': {<EOL>'<STR_LIT>': case_obj['<STR_LIT>'],<EOL>'<STR_LIT>': case_obj.get('<STR_LIT>'),<EOL>'<STR_LIT>': case_obj['<STR_LIT>'],<EOL>'<STR_LIT>': datetime.datetime.now(),<EOL>'<STR_LIT>': False,<EOL>'<STR_LIT>': case_obj.get('<STR_LIT>', []),<EOL>'<STR_LIT>': case_obj.get('<STR_LIT>', '<STR_LIT>'),<EOL>'<STR_LIT>': case_obj.get('<STR_LIT>'),<EOL>'<STR_LIT>': case_obj.get('<STR_LIT>'),<EOL>'<STR_LIT>': case_obj.get('<STR_LIT>'),<EOL>'<STR_LIT>': case_obj.get('<STR_LIT>'),<EOL>'<STR_LIT>': case_obj.get('<STR_LIT>'),<EOL>'<STR_LIT>': case_obj.get('<STR_LIT>'),<EOL>'<STR_LIT>': case_obj.get('<STR_LIT>', False),<EOL>'<STR_LIT>': case_obj.get('<STR_LIT>', False),<EOL>'<STR_LIT>': case_obj.get('<STR_LIT>'),<EOL>'<STR_LIT>': case_obj.get('<STR_LIT>'),<EOL>}<EOL>},<EOL>return_document=pymongo.ReturnDocument.AFTER<EOL>)<EOL>LOG.info("<STR_LIT>")<EOL>return updated_case<EOL>
Update a case in the database

        The following will be updated:
            - collaborators: If new collaborators these will be added to the old ones
            - analysis_date: Is updated to the new date
            - analyses: The new analysis date will be added to old runs
            - individuals: There could be new individuals
            - updated_at: When the case was updated in the database
            - rerun_requested: Is set to False since that is probably what happened
            - panels: The new gene panels are added
            - genome_build: If there is a new genome build
            - genome_version: - || -
            - rank_model_version: If there is a new rank model
            - madeline_info: If there is a new pedigree
            - vcf_files: paths to the new files
            - has_svvariants: If there are new svvariants
            - has_strvariants: If there are new strvariants
            - multiqc: If there's an updated multiqc report location
            - mme_submission: If case was submitted to MatchMaker Exchange

            Args:
                case_obj(dict): The new case information

            Returns:
                updated_case(dict): The updated case information