def _change_index(self, old_index_patient, new_index_patient): self.set_as_index_patient(new_index_patient) updated_rels = set([]) original_relatives = set( [r.pk for r in old_index_patient.relatives.all()]) for relative_dict in self.relatives: if relative_dict["class"] == "PatientRelative": patient_relative = PatientRelative.objects.get( pk=relative_dict["pk"]) patient_relative.patient = new_index_patient patient_relative.relationship = relative_dict["relationship"] patient_relative.save() updated_rels.add(patient_relative.pk) elif relative_dict["class"] == "Patient": # index 'demoted' : create patient rel object patient = Patient.objects.get(pk=relative_dict["pk"]) new_patient_relative = PatientRelative() new_patient_relative.date_of_birth = patient.date_of_birth new_patient_relative.patient = new_index_patient new_patient_relative.relative_patient = patient new_patient_relative.given_names = relative_dict["given_names"] new_patient_relative.family_name = relative_dict["family_name"] self.set_as_relative(patient) new_patient_relative.relationship = relative_dict[ "relationship"] new_patient_relative.save() updated_rels.add(new_patient_relative.pk) else: fml_log("???? %s" % relative_dict) promoted_relatives = original_relatives - updated_rels fml_log("promoted rels = %s" % promoted_relatives)
def _update_relatives(self): for relative_dict in self.relatives: if relative_dict['class'] == "PatientRelative": rel = PatientRelative.objects.get(pk=relative_dict["pk"]) if rel.relationship != relative_dict["relationship"]: rel.relationship = relative_dict["relationship"] rel.save() elif relative_dict['class'] == "Patient": patient = Patient.objects.get(pk=relative_dict["pk"]) rel = PatientRelative() rel.date_of_birth = patient.date_of_birth rel.patient = self.index_patient rel.given_names = relative_dict["given_names"] rel.family_name = relative_dict["family_name"] rel.relationship = relative_dict["relationship"] rel.relative_patient = patient rel.save() self.set_as_relative(patient)
def _change_index(self, old_index_patient, new_index_patient): self.set_as_index_patient(new_index_patient) updated_rels = set([]) index_and_rels = set() original_relatives = set([r.pk for r in old_index_patient.relatives.all()]) for relative_dict in self.relatives: if relative_dict["class"] == "PatientRelative": patient_relative = PatientRelative.objects.get(pk=relative_dict["pk"]) patient_relative.patient = new_index_patient patient_relative.relationship = relative_dict["relationship"] patient_relative.save() updated_rels.add(patient_relative.patient.id) index_and_rels.add(patient_relative.relative_patient.id) index_and_rels.add(patient_relative.patient.id) elif relative_dict["class"] == "Patient": # index 'demoted' : create patient rel object patient = Patient.objects.get(pk=relative_dict["pk"]) new_patient_relative = PatientRelative() new_patient_relative.date_of_birth = patient.date_of_birth new_patient_relative.patient = new_index_patient new_patient_relative.relative_patient = patient new_patient_relative.given_names = relative_dict["given_names"] new_patient_relative.family_name = relative_dict["family_name"] self.set_as_relative(patient) new_patient_relative.relationship = relative_dict["relationship"] new_patient_relative.save() updated_rels.add(new_patient_relative.patient.id) index_and_rels.add(new_patient_relative.relative_patient.id) index_and_rels.add(new_patient_relative.patient.id) else: fml_log("???? %s" % relative_dict) # recalculate fields for the changed patients call_command('update_calculated_fields', registry_code=self.registry_model.code, patient_id=index_and_rels) promoted_relatives = original_relatives - updated_rels fml_log("promoted rels = %s" % promoted_relatives)