def _create_new_patient(row): print(f"Adding patient {row['Patient number']}") patient = Patient() patient.unique_id = row["Patient number"] patient.government_id = row["State Patient Number"] patient.diagnosed_date = datetime.strptime(row["Date Announced"], "%d/%m/%Y") if row["Age Bracket"].strip(): patient.age = int(row["Age Bracket"]) if row["Gender"] == "M": patient.gender = Gender.MALE elif row["Gender"] == "F": patient.gender = Gender.FEMALE elif row["Gender"]: patient.gender = Gender.OTHERS else: patient.gender = Gender.UNKNOWN city = row.get("Detected City", None).strip() patient.detected_city = city patient.detected_district = row["Detected District"] state = row.get("Detected State", None).strip() patient.detected_state = state patient.detected_city_pt = Patient.get_point_for_location(city=city, state=state) patient.current_location_pt = patient.detected_city_pt patient.nationality = "" if row["Current Status"] in PatientStatus.CHOICES: patient.current_status = row["Current Status"] patient.status_change_date = datetime.strptime( row["Status Change Date"], "%d/%m/%Y") patient.notes = row["Notes"] if row["Backup Notes"].strip() and row["Backup Notes"] != row["Notes"]: patient.notes += ".\n" + row["Backup Notes"] patient.nationality = row["Nationality"] patient.save() links = row["Contracted from which Patient (Suspected)"].split(",") for link in links: link = link.strip().strip("P") try: contact = Patient.objects.get(unique_id=link) patient.contacts.add(contact) except Patient.DoesNotExist: continue patient.save() for source in ["Source_1", "Source_2", "Source_3"]: text = row.get(source, "") if not text: continue if text.startswith("http") or text.startswith("www"): patient.source_set.create(url=text, is_verified=True) else: patient.source_set.create(description=text, is_verified=True)
def _create_new_patient(row): print(f"Adding patient {row['Patient number']}") patient = Patient() patient.unique_id = row["Patient number"] patient.diagnosed_date = datetime.strptime(row["Date Announced"], "%d/%m/%Y") patient.status_change_date = datetime.strptime( row["Status Change Date"], "%d/%m/%Y") if row["Age Bracket"].strip(): patient.age = int(row["Age Bracket"]) if row["Gender"] == "M": patient.gender = Gender.MALE elif row["Gender"] == "F": patient.gender = Gender.FEMALE elif row["Gender"]: patient.gender = Gender.OTHERS else: patient.gender = Gender.UNKNOWN city = row.get("Detected City", None).strip() patient.detected_city = city patient.detected_district = row["Detected District"] state = row.get("Detected State", None).strip() patient.detected_state = state patient.detected_city_pt = Patient.get_point_for_location(city=city, state=state) patient.current_location_pt = patient.detected_city_pt patient.nationality = "" if row["Current Status"] in PatientStatus.CHOICES: patient.current_status = row["Current Status"] patient.notes = row["Notes"] patient.source = "\n".join( [row["Source_1"], row["Source_2"], row["Source_3"]]).strip() patient.nationality = row["Nationality"] patient.save()