예제 #1
0
    def test_patient_has_gender(self):
        # first check that db is empty
        all_patients_in_db = Patient.objects.all()
        self.assertEquals(len(all_patients_in_db), 0)

        # can create a patient that is male
        man = Patient()
        man.gender = "M"
        man.save()

        # check db to see if patient exists
        men_in_db = Patient.objects.filter(gender="M")
        self.assertEquals(len(men_in_db), 1)

        # can create a patient that is female
        woman = Patient()
        woman.gender = "F"
        woman.save()

        women_in_db = Patient.objects.filter(gender="F")
        self.assertEquals(len(women_in_db), 1)

        # can create a patient with unknown gender
        person = Patient()
        person.save()
        androgynous_people_in_db = Patient.objects.filter(gender="")
        self.assertEquals(len(androgynous_people_in_db), 1)
    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 gen_patient(self, mrn):
     patient = Patient()
     patient.mrn = mrn
     if randint(0, 1):
         patient.gender = 'male'
         patient.first_name = self._factory.first_name_male()
         patient.middle_name = self._factory.first_name_male()
     else:
         patient.gender = 'female'
         patient.first_name = self._factory.first_name_female()
         patient.middle_name = self._factory.first_name_female()
     patient.last_name = self._factory.last_name()
     offset = timedelta(days=randint(28, 67) * 365)
     patient.birthdate = (self._factory.date_time_this_century() - offset)
     # Values are in centimeters
     patient.height = randint(140, 180)
     # Values are in kg
     patient.weight = randint(60, 90) + round(random(), 2)
     patient.is_sample = True
     return patient
예제 #4
0
    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()
예제 #5
0
def Add_patient(request):
    if request.method =="POST":
        form =request.POST
        #print(form)
        patient= Patient()
        patient.name = form['name']
        patient.mobile = form['mobile']
        patient.id_number = form['id_number']
        patient.address = form['address']
        patient.age = form['age']
        patient.gender = form['gender']
        #patient.address = form['address']
        patient.save()   #insert in database
        
        #give us a new id of the recorded item
        return redirect ('patients:detail', patient.pk)
    return render(request, 'patients/add_patient.html')
예제 #6
0
    def create(self, request):
        try:
            result = ''
            data = request.POST.dict().get('data')
            try:
                data = json.loads(data)
            except Exception as e:
                print(e)
                pass
            patient = data.get('patient')
            patient_name = patient.get('name').strip()
            patients = Patient.objects.filter(name=patient_name)
            if len(patients) > 0:
                return HttpResponse(status=400)
            p = Patient()
            p.name = patient_name
            p.age = patient.get('age').strip()
            p.phone = patient.get('phone').strip()
            p.gender = patient.get('gender').strip()
            p.save()

            treatments = data.get('treatments')
            for treatment in treatments:
                pictures = treatment.get('pictures')
                t = Treatment()
                t.name = treatment.get('name').strip()
                t.detail = treatment.get('detail')
                t.patient = p
                t.save()
                for picture in pictures:
                    pic = Picture()
                    pic.treatment = t
                    pic.name = picture.get('name').strip()
                    pic.data = picture.get('data')
                    pic.save()
            return HttpResponse(status=201)
        except Exception as e:
            return HttpResponse(status=500)