def setUp(self): super(TestViralLoadRequisition, self).setUp() self.maternal_eligibility = MaternalEligibilityFactory() self.maternal_consent = MaternalConsentFactory( registered_subject=self.maternal_eligibility.registered_subject) self.registered_subject = self.maternal_eligibility.registered_subject PostnatalEnrollmentFactory(registered_subject=self.registered_subject, current_hiv_status=POS, evidence_hiv_status=YES, rapid_test_done=NOT_APPLICABLE) self.appointment = Appointment.objects.get( registered_subject=self.registered_subject, visit_definition__code='1000M') self.maternal_visit = MaternalVisitFactory( appointment=self.appointment) def test_viral_load_meta_data_for_pos(self): labs = ['Viral Load'] maternal_visits = [ '2000M', '2010M', '2030M', '2060M', '2090M', '2120M' ] for visit in maternal_visits: appointment = Appointment.objects.get( registered_subject=self.registered_subject, visit_definition__code=visit) visit = MaternalVisitFactory(appointment=appointment) for mylab in labs: lab_entry = LabEntry.objects.get( model_name=mylab, visit_definition_id=appointment.visit_definition_id) lab_meta_data = RequisitionMetaData.objects.get( lab_entry=lab_entry, appointment=appointment) self.assertEqual(lab_meta_data.entry_status, 'NEW')
def test_offstudy3(self): PostnatalEnrollmentFactory( registered_subject=self.registered_subject, current_hiv_status=NEG, evidence_hiv_status=YES, rapid_test_done=YES, rapid_test_result=NEG) post_natal_visit_schedule = site_visit_schedules.get_visit_schedule('postnatal visit schedule') self.assertEqual(Appointment.objects.filter( registered_subject=self.registered_subject).count(), len(post_natal_visit_schedule.visit_definitions)) appointment = Appointment.objects.get( registered_subject=self.registered_subject, visit_definition__code='1000M', visit_instance='0') maternal_visit = MaternalVisitFactory( appointment=appointment, report_datetime=timezone.now(), study_status=OFF_STUDY, survival_status=ALIVE, reason=COMPLETED_PROTOCOL_VISIT) MaternalOffStudyFactory( registered_subject=appointment.registered_subject, maternal_visit=maternal_visit, report_datetime=timezone.now(), offstudy_date=date.today()) self.assertEqual(Appointment.objects.filter( registered_subject=self.registered_subject).count(), 1)
def test_congentinal_yes(self): postnatal_enrollment = PostnatalEnrollmentFactory( registered_subject=self.registered_subject) self.assertEqual(postnatal_enrollment.enrollment_hiv_status, POS) self.appointment = Appointment.objects.get( registered_subject=self.registered_subject, visit_definition__code='1000M') self.maternal_visit = MaternalVisitFactory(appointment=self.appointment) appointment = Appointment.objects.get( registered_subject=self.registered_subject, visit_definition__code='2000M') maternal_visit = MaternalVisitFactory(appointment=appointment) maternal_labour_del = MaternalLabourDelFactory(maternal_visit=maternal_visit) registered_subject_infant = RegisteredSubject.objects.get( relative_identifier=self.registered_subject.subject_identifier, subject_type=INFANT) InfantBirthFactory( registered_subject=registered_subject_infant, maternal_labour_del=maternal_labour_del) appointment = Appointment.objects.get( registered_subject=registered_subject_infant, visit_definition__code='2000') infant_visit = InfantVisitFactory(appointment=appointment) InfantBirthDataFactory(infant_visit=infant_visit) self.assertEqual( CrfMetaData.objects.filter( entry_status=NEW, crf_entry__app_label='mb_infant', crf_entry__model_name='infantcongenitalanomalies', appointment=appointment).count(), 1)
def test_infantbirtharv_required_on_postnatal_enrollment_pos(self): postnatal_enrollment = PostnatalEnrollmentFactory( registered_subject=self.registered_subject, current_hiv_status=POS, evidence_hiv_status=YES) self.assertEqual(postnatal_enrollment.enrollment_hiv_status, POS) self.appointment = Appointment.objects.get( registered_subject=self.registered_subject, visit_definition__code='1000M') self.maternal_visit = MaternalVisitFactory(appointment=self.appointment) appointment = Appointment.objects.get( registered_subject=self.registered_subject, visit_definition__code='2000M') maternal_visit = MaternalVisitFactory(appointment=appointment) maternal_labour_del = MaternalLabourDelFactory(maternal_visit=maternal_visit) registered_subject_infant = RegisteredSubject.objects.get( relative_identifier=self.registered_subject.subject_identifier, subject_type=INFANT) InfantBirthFactory( registered_subject=registered_subject_infant, maternal_labour_del=maternal_labour_del) appointment = Appointment.objects.get( registered_subject=registered_subject_infant, visit_definition__code='2000') InfantVisitFactory(appointment=appointment, reason=SCHEDULED) self.assertEqual( CrfMetaData.objects.filter( entry_status=UNKEYED, crf_entry__app_label='mb_infant', crf_entry__model_name='infantbirtharv', appointment=appointment).count(), 1)
def setUp(self): try: site_lab_profiles.register(MaternalProfile()) site_lab_profiles.register(InfantProfile()) except AlreadyRegisteredLabProfile: pass AppConfiguration(lab_profiles=site_lab_profiles).prepare() AntenatalEnrollmentVisitSchedule().build() PostnatalEnrollmentVisitSchedule().build() site_rule_groups.autodiscover() InfantBirthVisitSchedule().build() self.maternal_eligibility = MaternalEligibilityFactory() self.maternal_consent = MaternalConsentFactory( registered_subject=self.maternal_eligibility.registered_subject) self.registered_subject = self.maternal_consent.registered_subject PostnatalEnrollmentFactory( registered_subject=self.registered_subject, current_hiv_status=POS, evidence_hiv_status=YES) self.appointment = Appointment.objects.get(registered_subject=self.registered_subject, visit_definition__code='1000M') self.maternal_visit = MaternalVisitFactory(appointment=self.appointment) self.appointment = Appointment.objects.get( registered_subject=self.registered_subject, visit_definition__code='2000M') maternal_visit = MaternalVisitFactory(appointment=self.appointment) self.maternal_labour_del = MaternalLabourDelFactory(maternal_visit=maternal_visit) self.registered_subject_infant = RegisteredSubject.objects.get( subject_type=INFANT, relative_identifier=self.registered_subject.subject_identifier)
def setUp(self): super(TestMaternalObstericalHistoryForm, self).setUp() self.maternal_eligibility = MaternalEligibilityFactory() self.maternal_consent = MaternalConsentFactory( registered_subject=self.maternal_eligibility.registered_subject) self.registered_subject = self.maternal_consent.registered_subject PostnatalEnrollmentFactory(registered_subject=self.registered_subject, current_hiv_status=NEG, evidence_hiv_status=YES, rapid_test_done=YES, rapid_test_result=NEG) appointment = Appointment.objects.get( registered_subject=self.registered_subject, visit_definition__code='1000M') self.maternal_visit = MaternalVisitFactory(appointment=appointment, reason=SCHEDULED) self.data = { 'report_datetime': timezone.now(), 'maternal_visit': self.maternal_visit.id, 'prev_pregnancies': 2, 'pregs_24wks_or_more': 1, 'lost_before_24wks': 1, 'lost_after_24wks': 1, 'live_children': 1, 'children_died_b4_5yrs': 1 }
def test_if_maternal_pos_dna_pcr_required(self): postnatal_enrollment = PostnatalEnrollmentFactory( registered_subject=self.registered_subject, current_hiv_status=POS, evidence_hiv_status=YES) self.assertEqual(postnatal_enrollment.enrollment_hiv_status, POS) self.assertTrue(postnatal_enrollment.is_eligible) appointment = Appointment.objects.get( registered_subject=self.registered_subject, visit_definition__code='1000M') self.maternal_visit = MaternalVisitFactory(appointment=appointment) appointment = Appointment.objects.get( registered_subject=self.registered_subject, visit_definition__code='2000M') maternal_visit = MaternalVisitFactory(appointment=appointment) maternal_labour_del = MaternalLabourDelFactory(maternal_visit=maternal_visit) registered_subject_infant = RegisteredSubject.objects.get( relative_identifier=self.registered_subject.subject_identifier, subject_type=INFANT) InfantBirthFactory( registered_subject=registered_subject_infant, maternal_labour_del=maternal_labour_del) for code in ['2000', '2010', '2030', '2060', '2090', '2120']: appointment = Appointment.objects.get( registered_subject=registered_subject_infant, visit_definition__code=code) InfantVisitFactory( appointment=appointment, reason=SCHEDULED) self.assertEqual(RequisitionMetaData.objects.filter( entry_status=REQUIRED, lab_entry__requisition_panel__name='DNA PCR', lab_entry__app_label='mb_lab', lab_entry__model_name='infantrequisition', appointment=appointment).count(), 1)
def setUp(self): super(TestInfantVisitForm, self).setUp() maternal_eligibility = MaternalEligibilityFactory() maternal_consent = MaternalConsentFactory( registered_subject=maternal_eligibility.registered_subject) registered_subject = maternal_consent.registered_subject postnatal_enrollment = PostnatalEnrollmentFactory( registered_subject=registered_subject, current_hiv_status=POS, evidence_hiv_status=YES, rapid_test_done=NOT_APPLICABLE, rapid_test_result=None, rapid_test_date=None) self.assertTrue(postnatal_enrollment.is_eligible) appointment = Appointment.objects.get( registered_subject=registered_subject, visit_definition__code='1000M') MaternalVisitFactory(appointment=appointment) appointment = Appointment.objects.get( registered_subject=registered_subject, visit_definition__code='2000M') maternal_visit = MaternalVisitFactory(appointment=appointment) maternal_labour_del = MaternalLabourDelFactory( maternal_visit=maternal_visit) self.registered_subject_infant = RegisteredSubject.objects.get( subject_type=INFANT, relative_identifier=registered_subject.subject_identifier) InfantBirthFactory(registered_subject=self.registered_subject_infant, maternal_labour_del=maternal_labour_del) self.appointment = Appointment.objects.get( registered_subject=self.registered_subject_infant, visit_definition__code='2000')
def setUp(self): super(TestInfantBirthRecordExam, self).setUp() self.maternal_eligibility = MaternalEligibilityFactory() self.maternal_consent = MaternalConsentFactory( registered_subject=self.maternal_eligibility.registered_subject) self.registered_subject = self.maternal_consent.registered_subject PostnatalEnrollmentFactory( registered_subject=self.registered_subject, current_hiv_status=POS, evidence_hiv_status=YES, ) self.appointment = Appointment.objects.get( registered_subject=self.registered_subject, visit_definition__code='1000M') self.maternal_visit = MaternalVisitFactory( appointment=self.appointment) self.appointment = Appointment.objects.get( registered_subject=self.registered_subject, visit_definition__code='2000M') maternal_visit = MaternalVisitFactory(appointment=self.appointment) maternal_labour_del = MaternalLabourDelFactory( maternal_visit=maternal_visit) self.registered_subject_infant = RegisteredSubject.objects.get( subject_type=INFANT, relative_identifier=self.registered_subject.subject_identifier) self.infant_birth = InfantBirthFactory( registered_subject=self.registered_subject_infant, maternal_labour_del=maternal_labour_del, gender='F', ) self.appointment = Appointment.objects.get( registered_subject=self.registered_subject_infant, visit_definition__code='2000') self.infant_visit = InfantVisitFactory(appointment=self.appointment) self.data = { 'report_datetime': timezone.now(), 'infant_birth': self.infant_birth.id, 'infant_visit': self.infant_visit.id, 'infant_exam_date': timezone.now().date(), 'general_activity': 'NORMAL', 'abnormal_activity': '', 'physical_exam_result': 'NORMAL', 'heent_exam': YES, 'heent_no_other': '', 'resp_exam': YES, 'resp_exam_other': '', 'cardiac_exam': YES, 'cardiac_exam_other': '', 'abdominal_exam': YES, 'abdominal_exam_other': '', 'skin_exam': YES, 'skin_exam_other': '', 'neurologic_exam': YES, 'neuro_exam_other': '', 'other_exam_info': 'NA', }
def test_if_postnatal_eligible(self): postnatal_enrollment = PostnatalEnrollmentFactory( current_hiv_status=POS, evidence_hiv_status=YES, rapid_test_done=NOT_APPLICABLE, registered_subject=self.registered_subject, gestation_wks_delivered=35, ) self.assertFalse(postnatal_enrollment.is_eligible)
def test_infant_visit_missed_at_2030_requires_circumcision_at_2060(self): """Test an missed infant visit at 2030 would require a circumcision form at 2060""" postnatal_enrollment = PostnatalEnrollmentFactory( registered_subject=self.registered_subject, current_hiv_status=POS, evidence_hiv_status=YES) self.assertEqual(postnatal_enrollment.enrollment_hiv_status, POS) self.appointment = Appointment.objects.get( registered_subject=self.registered_subject, visit_definition__code='1000M') self.maternal_visit = MaternalVisitFactory(appointment=self.appointment) appointment = Appointment.objects.get( registered_subject=self.registered_subject, visit_definition__code='2000M') maternal_visit = MaternalVisitFactory(appointment=appointment) maternal_labour_del = MaternalLabourDelFactory(maternal_visit=maternal_visit) registered_subject_infant = RegisteredSubject.objects.get( relative_identifier=self.registered_subject.subject_identifier, subject_type=INFANT) InfantBirthFactory( registered_subject=registered_subject_infant, maternal_labour_del=maternal_labour_del, gender=MALE) appointment = Appointment.objects.get( registered_subject=registered_subject_infant, visit_definition__code='2000') InfantVisitFactory( appointment=appointment, reason=SCHEDULED) appointment = Appointment.objects.get( registered_subject=registered_subject_infant, visit_definition__code='2010') InfantVisitFactory( appointment=appointment, reason=SCHEDULED) appointment = Appointment.objects.get( registered_subject=registered_subject_infant, visit_definition__code='2030') InfantVisitFactory( appointment=appointment, reason=MISSED_VISIT) appointment = Appointment.objects.get( registered_subject=registered_subject_infant, visit_definition__code='2060') InfantVisitFactory( appointment=appointment, reason=SCHEDULED) self.assertEqual(CrfMetaData.objects.filter( entry_status=UNKEYED, crf_entry__app_label='mb_infant', crf_entry__model_name='infantcircumcision', appointment=appointment).count(), 1)
def test_infant_arv_proph_not_required_from_2010(self): """Test that infant arv proph is required from 2010 visit""" postnatal_enrollment = PostnatalEnrollmentFactory( registered_subject=self.registered_subject, current_hiv_status=NEG, evidence_hiv_status=YES, valid_regimen=NOT_APPLICABLE, valid_regimen_duration=NOT_APPLICABLE, rapid_test_done=YES, rapid_test_date=timezone.now(), rapid_test_result=NEG) self.assertEqual(postnatal_enrollment.enrollment_hiv_status, NEG) maternal_appointment_1000M = Appointment.objects.get( registered_subject=self.registered_subject, visit_definition__code='1000M') MaternalVisitFactory(appointment=maternal_appointment_1000M) maternal_appointment_2000M = Appointment.objects.get( registered_subject=self.registered_subject, visit_definition__code='2000M') maternal_visit_2000M = MaternalVisitFactory(appointment=maternal_appointment_2000M) maternal_labour_del = MaternalLabourDelFactory(maternal_visit=maternal_visit_2000M) registered_subject_infant = RegisteredSubject.objects.get( relative_identifier=self.registered_subject.subject_identifier, subject_type=INFANT) InfantBirthFactory( registered_subject=registered_subject_infant, maternal_labour_del=maternal_labour_del) infant_appointment_2000 = Appointment.objects.get( visit_definition__code='2000', registered_subject=registered_subject_infant) InfantVisitFactory(appointment=infant_appointment_2000) self.assertFalse(CrfMetaData.objects.filter( entry_status=NOT_REQUIRED, crf_entry__app_label='mb_infant', crf_entry__model_name='infantarvproph', appointment=infant_appointment_2000).exists()) infant_appointment_2010 = Appointment.objects.get( registered_subject=registered_subject_infant, visit_definition__code='2010') InfantVisitFactory( appointment=infant_appointment_2010, reason=SCHEDULED) self.assertEqual(CrfMetaData.objects.filter( entry_status=NOT_REQUIRED, crf_entry__app_label='mb_infant', crf_entry__model_name='infantarvproph', appointment=infant_appointment_2010).count(), 1)
def setUp(self): super(TestInfantFu, self).setUp() self.maternal_eligibility = MaternalEligibilityFactory() self.maternal_consent = MaternalConsentFactory( registered_subject=self.maternal_eligibility.registered_subject) self.registered_subject = self.maternal_eligibility.registered_subject PostnatalEnrollmentFactory(registered_subject=self.registered_subject, current_hiv_status=NEG, evidence_hiv_status=YES, rapid_test_done=YES, rapid_test_result=NEG) self.appointment = Appointment.objects.get( registered_subject=self.registered_subject, visit_definition__code='1000M') self.maternal_visit = MaternalVisitFactory( appointment=self.appointment) self.appointment = Appointment.objects.get( registered_subject=self.registered_subject, visit_definition__code='2000M') maternal_visit = MaternalVisitFactory(appointment=self.appointment) maternal_labour_del = MaternalLabourDelFactory( maternal_visit=maternal_visit) infant_registered_subject = RegisteredSubject.objects.get( subject_type=INFANT, relative_identifier=self.registered_subject.subject_identifier) self.infant_birth = InfantBirthFactory( registered_subject=infant_registered_subject, maternal_labour_del=maternal_labour_del) self.appointment = Appointment.objects.get( registered_subject=infant_registered_subject, visit_definition__code='2000') self.infant_visit = InfantVisitFactory(appointment=self.appointment) self.appointment = Appointment.objects.get( registered_subject=infant_registered_subject, visit_definition__code='2010') self.infant_visit = InfantVisitFactory(appointment=self.appointment) self.data = { 'report_datetime': timezone.now(), 'infant_birth': self.infant_birth.id, 'infant_visit': self.infant_visit.id, 'physical_assessment': NO, 'diarrhea_illness': NO, 'has_dx': NO, 'was_hospitalized': NO, }
def test_if_antenatal_postnatal_not_eligible(self): """Asserts raises exception if antenatal enrollment is not eligible and an attempt is made to complete postnatal enrollment.""" antenatal_enrollment = AntenatalEnrollmentFactory( current_hiv_status=POS, evidence_hiv_status=YES, week32_test=NO, rapid_test_done=NOT_APPLICABLE, registered_subject=self.registered_subject, gestation_wks=35) self.assertFalse(antenatal_enrollment.is_eligible) with self.assertRaises(EnrollmentError): PostnatalEnrollmentFactory( current_hiv_status=POS, evidence_hiv_status=YES, rapid_test_done=NOT_APPLICABLE, registered_subject=self.registered_subject)
def test_validate_rapid_test_done_no_result(self): self.maternal_consent.dob = date(2015, 12, 7) self.maternal_consent.save() PostnatalEnrollmentFactory( registered_subject=self.registered_subject, current_hiv_status=NEG, evidence_hiv_status=YES, rapid_test_done=YES, rapid_test_date=date.today(), rapid_test_result=NEG) appointment = Appointment.objects.get( registered_subject=self.registered_subject, visit_definition__code='1000M') maternal_visit = MaternalVisitFactory(appointment=appointment, reason=SCHEDULED) self.data['maternal_visit'] = maternal_visit.id rapid_form = RapidTestResultForm(data=self.data) self.assertIn("If a rapid test was processed, what is the test result?", rapid_form.errors.get("__all__"))
def setUp(self): super(TestMaternalRequisitionModel, self).setUp() self.maternal_eligibility = MaternalEligibilityFactory() self.maternal_consent = MaternalConsentFactory( registered_subject=self.maternal_eligibility.registered_subject, study_site=self.study_site) self.registered_subject = self.maternal_consent.registered_subject self.postnatal_enrollment = PostnatalEnrollmentFactory( current_hiv_status=POS, evidence_hiv_status=YES, registered_subject=self.registered_subject, will_breastfeed=YES) self.panel = Panel.objects.get(name='Breast Milk (Storage)') self.aliquot_type = AliquotType.objects.get(alpha_code='WB') self.appointment = Appointment.objects.get( registered_subject=self.registered_subject, visit_definition__code='1000M')
def setUp(self): super(TestInfantStoolCollection, self).setUp() self.maternal_eligibility = MaternalEligibilityFactory() self.maternal_consent = MaternalConsentFactory(registered_subject=self.maternal_eligibility.registered_subject) self.registered_subject = self.maternal_eligibility.registered_subject PostnatalEnrollmentFactory( registered_subject=self.registered_subject, current_hiv_status=NEG, evidence_hiv_status=YES, rapid_test_done=YES, rapid_test_result=NEG) self.appointment = Appointment.objects.get(registered_subject=self.registered_subject, visit_definition__code='1000M') self.maternal_visit = MaternalVisitFactory(appointment=self.appointment) self.appointment = Appointment.objects.get( registered_subject=self.registered_subject, visit_definition__code='2000M') maternal_visit = MaternalVisitFactory(appointment=self.appointment) maternal_labour_del = MaternalLabourDelFactory(maternal_visit=maternal_visit) infant_registered_subject = RegisteredSubject.objects.get( subject_type=INFANT, relative_identifier=self.registered_subject.subject_identifier) self.infant_birth = InfantBirthFactory( registered_subject=infant_registered_subject, maternal_labour_del=maternal_labour_del) self.appointment = Appointment.objects.get( registered_subject=infant_registered_subject, visit_definition__code='2000') self.infant_visit = InfantVisitFactory(appointment=self.appointment) self.appointment = Appointment.objects.get( registered_subject=infant_registered_subject, visit_definition__code='2010') self.infant_visit = InfantVisitFactory(appointment=self.appointment) self.data = { 'report_datetime': timezone.now(), 'infant_visit': self.infant_visit.id, 'sample_obtained': NO, 'nappy_type': NOT_APPLICABLE, 'other_nappy': '', 'stool_collection': NOT_APPLICABLE, 'stool_collection_time': '', 'stool_stored': NOT_APPLICABLE, 'past_diarrhea': NO, 'diarrhea_past_24hrs': NOT_APPLICABLE, 'antibiotics_7days': NO, 'antibiotic_dose_24hrs': NOT_APPLICABLE }
def test_validate_rapid_test_done_result(self): self.maternal_consent.dob = date(2015, 12, 7) self.maternal_consent.save() PostnatalEnrollmentFactory( registered_subject=self.registered_subject, current_hiv_status=NEG, evidence_hiv_status=YES, rapid_test_done=YES, rapid_test_date=date.today(), rapid_test_result=NEG) appointment = Appointment.objects.get( registered_subject=self.registered_subject, visit_definition__code='1000M') maternal_visit = MaternalVisitFactory(appointment=appointment, reason=SCHEDULED) self.data['maternal_visit'] = maternal_visit.id self.data['result'] = POS rapid_form = RapidTestResultForm(data=self.data) self.assertTrue(rapid_form.is_valid())
def setUp(self): super(TestInfantBirthData, self).setUp() self.maternal_eligibility = MaternalEligibilityFactory() self.maternal_consent = MaternalConsentFactory( registered_subject=self.maternal_eligibility.registered_subject) self.registered_subject = self.maternal_eligibility.registered_subject PostnatalEnrollmentFactory( registered_subject=self.registered_subject, current_hiv_status=NEG, evidence_hiv_status=YES, rapid_test_done=YES, rapid_test_result=NEG) self.appointment = Appointment.objects.get( registered_subject=self.registered_subject, visit_definition__code='1000M') self.maternal_visit = MaternalVisitFactory(appointment=self.appointment) self.appointment = Appointment.objects.get( registered_subject=self.registered_subject, visit_definition__code='2000M') maternal_visit = MaternalVisitFactory(appointment=self.appointment) maternal_labour_del = MaternalLabourDelFactory(maternal_visit=maternal_visit) infant_registered_subject = RegisteredSubject.objects.get( relative_identifier=self.registered_subject.subject_identifier, subject_type=INFANT) self.infant_birth = InfantBirthFactory( registered_subject=infant_registered_subject, maternal_labour_del=maternal_labour_del) self.appointment = Appointment.objects.get( registered_subject=infant_registered_subject, visit_definition__code='2000') self.infant_visit = InfantVisitFactory(appointment=self.appointment) self.data = { 'report_datetime': timezone.now(), 'infant_birth': self.infant_birth.id, 'infant_visit': self.infant_visit.id, 'weight_kg': 3.61, 'infant_length': 89.97, 'head_circumference': 39.30, 'apgar_score': NO, 'apgar_score_min_1': '', 'apgar_score_min_5': '', 'apgar_score_min_10': '', 'congenital_anomalities': NO}
def setUp(self): super(TestInfantImmunizations, self).setUp() self.maternal_eligibility = MaternalEligibilityFactory() self.maternal_consent = MaternalConsentFactory( registered_subject=self.maternal_eligibility.registered_subject) self.registered_subject = self.maternal_eligibility.registered_subject PostnatalEnrollmentFactory(registered_subject=self.registered_subject, current_hiv_status=NEG, evidence_hiv_status=YES, rapid_test_done=YES, rapid_test_result=NEG) self.appointment = Appointment.objects.get( registered_subject=self.registered_subject, visit_definition__code='1000M') self.maternal_visit = MaternalVisitFactory( appointment=self.appointment) self.appointment = Appointment.objects.get( registered_subject=self.registered_subject, visit_definition__code='2000M') maternal_visit = MaternalVisitFactory(appointment=self.appointment) maternal_labour_del = MaternalLabourDelFactory( maternal_visit=maternal_visit) infant_registered_subject = RegisteredSubject.objects.get( subject_type=INFANT, relative_identifier=self.registered_subject.subject_identifier) self.infant_birth = InfantBirthFactory( registered_subject=infant_registered_subject, maternal_labour_del=maternal_labour_del) appointment1 = Appointment.objects.get( registered_subject=infant_registered_subject, visit_definition__code='2000') InfantVisitFactory(appointment=appointment1) self.appointment = Appointment.objects.get( registered_subject=infant_registered_subject, visit_definition__code='2010') self.infant_visit = InfantVisitFactory(appointment=self.appointment) self.data = { 'report_datetime': timezone.now(), 'infant_visit': self.infant_visit.id, 'vaccines_received': YES, 'vaccines_missed': NO }
def infant_arv_proph_setup(self): postnatal_enrollment = PostnatalEnrollmentFactory( registered_subject=self.registered_subject, current_hiv_status=POS, evidence_hiv_status=YES) self.assertEqual(postnatal_enrollment.enrollment_hiv_status, POS) maternal_appointment_1000M = Appointment.objects.get( registered_subject=self.registered_subject, visit_definition__code='1000M') MaternalVisitFactory(appointment=maternal_appointment_1000M) maternal_appointment_2000M = Appointment.objects.get( registered_subject=self.registered_subject, visit_definition__code='2000M') maternal_visit_2000 = MaternalVisitFactory(appointment=maternal_appointment_2000M) maternal_labour_del = MaternalLabourDelFactory(maternal_visit=maternal_visit_2000) registered_subject_infant = RegisteredSubject.objects.get( relative_identifier=self.registered_subject.subject_identifier, subject_type=INFANT) InfantBirthFactory( registered_subject=registered_subject_infant, maternal_labour_del=maternal_labour_del) infant_appointment_2000 = Appointment.objects.get( visit_definition__code='2000', registered_subject=registered_subject_infant) InfantVisitFactory(appointment=infant_appointment_2000) infant_appointment_2010 = Appointment.objects.get( registered_subject=registered_subject_infant, visit_definition__code='2010') infant_visit_2010 = InfantVisitFactory( appointment=infant_appointment_2010, reason=SCHEDULED) self.assertEqual(CrfMetaData.objects.filter( entry_status=UNKEYED, crf_entry__app_label='mb_infant', crf_entry__model_name='infantarvproph', appointment=infant_appointment_2010).count(), 1) InfantArvProphFactory(infant_visit=infant_visit_2010, prophylatic_nvp=YES, arv_status=NO_MODIFICATIONS) self.assertEqual(CrfMetaData.objects.filter( entry_status=KEYED, crf_entry__app_label='mb_infant', crf_entry__model_name='infantarvproph', appointment=infant_appointment_2010).count(), 1) return registered_subject_infant
def setUp(self): super(TestInfantArvProph, self).setUp() self.maternal_eligibility = MaternalEligibilityFactory() self.maternal_consent = MaternalConsentFactory( registered_subject=self.maternal_eligibility.registered_subject) self.registered_subject = self.maternal_consent.registered_subject PostnatalEnrollmentFactory(registered_subject=self.registered_subject, current_hiv_status=POS, evidence_hiv_status=YES) self.appointment = Appointment.objects.get( registered_subject=self.registered_subject, visit_definition__code='1000M') self.maternal_visit = MaternalVisitFactory( appointment=self.appointment) self.appointment = Appointment.objects.get( registered_subject=self.registered_subject, visit_definition__code='2000M') maternal_visit = MaternalVisitFactory(appointment=self.appointment) maternal_labour_del = MaternalLabourDelFactory( maternal_visit=maternal_visit) infant_registered_subject = RegisteredSubject.objects.get( subject_type=INFANT, relative_identifier=self.registered_subject.subject_identifier) self.infant_birth = InfantBirthFactory( registered_subject=infant_registered_subject, maternal_labour_del=maternal_labour_del) self.appointment = Appointment.objects.get( registered_subject=infant_registered_subject, visit_definition__code='2000') self.infant_visit = InfantVisitFactory(appointment=self.appointment) self.infant_birth_arv = InfantBirthArvFactory( infant_visit=self.infant_visit, azt_discharge_supply=YES) self.appointment = Appointment.objects.get( registered_subject=infant_registered_subject, visit_definition__code='2010') self.infant_visit = InfantVisitFactory(appointment=self.appointment) self.data = { 'report_datetime': timezone.now(), 'infant_visit': self.infant_visit.id, 'prophylatic_nvp': YES, 'arv_status': 'modified', }
def setUp(self): super(TestInfantBirthArv, self).setUp() self.maternal_eligibility = MaternalEligibilityFactory() self.maternal_consent = MaternalConsentFactory( registered_subject=self.maternal_eligibility.registered_subject) self.registered_subject = self.maternal_consent.registered_subject PostnatalEnrollmentFactory(registered_subject=self.registered_subject, current_hiv_status=POS, evidence_hiv_status=YES) self.appointment = Appointment.objects.get( registered_subject=self.registered_subject, visit_definition__code='1000M') self.maternal_visit = MaternalVisitFactory( appointment=self.appointment) self.appointment = Appointment.objects.get( registered_subject=self.registered_subject, visit_definition__code='2000M') self.maternal_visit = MaternalVisitFactory( appointment=self.appointment) maternal_labour_del = MaternalLabourDelFactory( maternal_visit=self.maternal_visit) registered_subject_infant = RegisteredSubject.objects.get( subject_type=INFANT, relative_identifier=self.registered_subject.subject_identifier) self.infant_birth = InfantBirthFactory( registered_subject=registered_subject_infant, maternal_labour_del=maternal_labour_del) self.appointment = Appointment.objects.get( registered_subject=registered_subject_infant, visit_definition__code='2000') self.infant_visit = InfantVisitFactory(appointment=self.appointment) self.data = { 'report_datetime': timezone.now(), 'infant_visit': self.infant_visit.id, 'azt_after_birth': YES, 'azt_dose_date': timezone.now().date(), 'azt_additional_dose': YES, 'sdnvp_after_birth': YES, 'nvp_dose_date': timezone.now().date(), }
def test_validate_offstudy_date(self): PostnatalEnrollmentFactory( registered_subject=self.registered_subject, current_hiv_status=NEG, evidence_hiv_status=YES, rapid_test_done=YES, rapid_test_result=NEG) appointment = Appointment.objects.get( registered_subject=self.registered_subject, visit_definition__code='1000M') maternal_visit = MaternalVisitFactory( appointment=appointment, reason=COMPLETED_PROTOCOL_VISIT, study_status=OFF_STUDY, survival_status=ALIVE) self.data['maternal_visit'] = maternal_visit.id self.data['offstudy_date'] = date(2015, 10, 6) offstudy_form = MaternalOffStudyForm(data=self.data) self.assertIn( "Off study date cannot be before consent date", offstudy_form.errors.get("__all__"))
def test_1000M_metadata_set_to_offstudy_if_not_ante(self): """Asserts ineligible at postnatal creates 1000M off study visit and makes off study form required.""" postnatal_enrollment = PostnatalEnrollmentFactory( registered_subject=self.registered_subject, current_hiv_status=NEG, evidence_hiv_status=YES, rapid_test_done=NO) self.assertFalse(postnatal_enrollment.is_eligible) appointment = Appointment.objects.get( registered_subject=self.registered_subject, visit_definition__code='1000M') MaternalVisit.objects.get(appointment=appointment, reason=FAILED_ELIGIBILITY) self.assertEqual(CrfMetaData.objects.filter( entry_status=REQUIRED, crf_entry__app_label='mb_maternal', crf_entry__model_name='maternaloffstudy', appointment=appointment).count(), 1) appointment = Appointment.objects.get( registered_subject=self.registered_subject, visit_definition__code='2000M') self.assertRaises(MaternalVisit.DoesNotExist, MaternalVisit.objects.get, appointment=appointment)
def setUp(self): super(TestOffStudy, self).setUp() self.maternal_eligibility = MaternalEligibilityFactory() self.registered_subject = self.maternal_eligibility.registered_subject self.maternal_consent = MaternalConsentFactory( registered_subject=self.registered_subject) PostnatalEnrollmentFactory(registered_subject=self.registered_subject, current_hiv_status=NEG, evidence_hiv_status=YES, rapid_test_done=YES, rapid_test_result=NEG) self.appointment = Appointment.objects.get( registered_subject=self.registered_subject, visit_definition__code='1000M') self.maternal_visit = MaternalVisitFactory( appointment=self.appointment) self.appointment = Appointment.objects.get( registered_subject=self.registered_subject, visit_definition__code='2000M') maternal_visit = MaternalVisitFactory(appointment=self.appointment) maternal_labour_del = MaternalLabourDelFactory( maternal_visit=maternal_visit) self.infant_registered_subject = RegisteredSubject.objects.get( relative_identifier=self.registered_subject.subject_identifier, subject_type=INFANT) self.infant_birth = InfantBirthFactory( registered_subject=self.infant_registered_subject, maternal_labour_del=maternal_labour_del) self.infant_appointment = Appointment.objects.get( registered_subject=self.infant_registered_subject, visit_definition__code='2000') self.data = { 'registered_subject': self.registered_subject.id, 'reason': 'not_{}'.format(MIN_AGE_OF_CONSENT), 'has_scheduled_data': YES, 'infant_visit': None, 'offstudy_date': timezone.now().date(), }
def setUp(self): super(TestMaternalRequisitionForm, self).setUp() self.maternal_eligibility = MaternalEligibilityFactory() self.maternal_consent = MaternalConsentFactory( registered_subject=self.maternal_eligibility.registered_subject, study_site=self.study_site) self.registered_subject = self.maternal_consent.registered_subject postnatal_enrollment = PostnatalEnrollmentFactory( current_hiv_status=POS, evidence_hiv_status=YES, registered_subject=self.registered_subject, will_breastfeed=YES) self.assertTrue(postnatal_enrollment.is_eligible) appointment = Appointment.objects.get( registered_subject=self.registered_subject, visit_definition__code='1000M') MaternalVisitFactory(appointment=appointment, reason=SCHEDULED) self.appointment = Appointment.objects.get( registered_subject=self.registered_subject, visit_definition__code='2000M') self.panel = Panel.objects.get(name='Breast Milk (Storage)') self.aliquot_type = AliquotType.objects.get(alpha_code='WB') self.data = { 'maternal_visit': None, 'requisition_identifier': 'ZXDF39U', 'requisition_datetime': timezone.now(), 'report_datetime': timezone.now(), 'is_drawn': NO, 'reason_not_drawn': 'collection_failed', 'drawn_datetime': '', 'study_site': self.study_site, 'panel': self.panel.id, 'aliquot_type': self.aliquot_type.id, 'item_type': 'tube', 'item_count_total': '', 'estimated_volume': '', 'priority': '', 'comments': '', }
def test_validate_rapid_test_done_processed1(self): self.maternal_consent.dob = date(2015, 12, 7) self.maternal_consent.save() PostnatalEnrollmentFactory( registered_subject=self.registered_subject, current_hiv_status=NEG, evidence_hiv_status=YES, rapid_test_done=YES, rapid_test_result=NEG) appointment = Appointment.objects.get( registered_subject=self.registered_subject, visit_definition__code='1000M') maternal_visit = MaternalVisitFactory(appointment=appointment, reason=SCHEDULED) result_date = date.today() self.data['maternal_visit'] = maternal_visit.id self.data['rapid_test_done'] = NO self.data['result_date'] = result_date self.data['result'] = None rapid_form = RapidTestResultForm(data=self.data) self.assertIn( 'If a rapid test was not processed, please do not ' 'provide the result date. Got {}.'.format(result_date.strftime('%Y-%m-%d')), rapid_form.errors.get("__all__"))
def test_offstudy2(self): PostnatalEnrollmentFactory( registered_subject=self.registered_subject, current_hiv_status=POS, evidence_hiv_status=YES, rapid_test_done=NOT_APPLICABLE) appointment = Appointment.objects.get( registered_subject=self.registered_subject, visit_definition__code='1000M') maternal_visit = MaternalVisitFactory( appointment=appointment, report_datetime=timezone.now(), study_status=OFF_STUDY, reason=COMPLETED_PROTOCOL_VISIT) MaternalOffStudyFactory( registered_subject=appointment.registered_subject, report_datetime=timezone.now(), offstudy_date=date.today(), maternal_visit=maternal_visit) self.assertEqual( Appointment.objects.filter( registered_subject=self.registered_subject).count(), 1)
def setUp(self): super(TestInfantBirth, self).setUp() maternal_eligibility = MaternalEligibilityFactory() maternal_consent = MaternalConsentFactory( registered_subject=maternal_eligibility.registered_subject) registered_subject = maternal_consent.registered_subject postnatal_enrollment = PostnatalEnrollmentFactory( registered_subject=registered_subject, current_hiv_status=NEG, evidence_hiv_status=YES, rapid_test_done=YES, rapid_test_result=NEG) self.assertTrue(postnatal_enrollment.is_eligible) appointment1000 = Appointment.objects.get( registered_subject=registered_subject, visit_definition__code='1000M') appointment2000 = Appointment.objects.get( registered_subject=registered_subject, visit_definition__code='2000M') MaternalVisitFactory(appointment=appointment1000) maternal_visit = MaternalVisitFactory(appointment=appointment2000) self.maternal_labour_del = MaternalLabourDelFactory( maternal_visit=maternal_visit) self.infant_registered_subject = RegisteredSubject.objects.get( relative_identifier=registered_subject.subject_identifier, subject_type=INFANT) self.data = { 'report_datetime': timezone.now(), 'registered_subject': self.infant_registered_subject.id, 'maternal_labour_del': self.maternal_labour_del.id, 'first_name': 'FIRST NAME', 'initials': 'FN', 'dob': self.maternal_labour_del.delivery_datetime.date(), 'gender': FEMALE }