patient.handle_died() patient.save() else: save_pat = False for case in patient.cases: if not case.closed: case.manual_close(Outcome.PATIENT_DIED, datetime.utcnow()) save_pat = True if save_pat: patient.save() def close_ltfu_cases(sender, patient_id, **kwargs): """ Checks if any open cases in the patient are passed the LTFU date and if they are closes them with status lost to followup. """ from bhoma.apps.patient.models import CPatient from bhoma.apps.case.bhomacaselogic.ltfu import close_as_lost patient = CPatient.get(patient_id) save_pat = False for case in patient.cases: today = datetime.utcnow().date() if not case.closed and case.ltfu_date and case.ltfu_date < today: close_as_lost(case) save_pat = True if save_pat: patient.save() patient_updated.connect(update_patient_deceased_status) patient_updated.connect(close_ltfu_cases)
from bhoma.apps.patient.signals import patient_updated import logging def update_pregnancy_report_data(sender, patient_id, **kwargs): """ Update pregnancies of a patient. """ from bhoma.apps.reports.calc.pregnancy import PregnancyReportData from bhoma.apps.reports.models import PregnancyReportRecord from bhoma.apps.patient.models import CPatient patient = CPatient.get(patient_id) # manually remove old pregnancies, since all pregnancy data is dynamically generated for old_preg in PregnancyReportRecord.view("reports/pregnancies_for_patient", key=patient_id, include_docs=True).all(): old_preg.delete() for preg in patient.pregnancies: preg_report_data = PregnancyReportData(patient, preg) couch_pregnancy = preg_report_data.to_couch_object() couch_pregnancy.save() patient_updated.connect(update_pregnancy_report_data)