def setUp(self): try: site_lab_profiles.register(MpepuInfantProfile()) except AlreadyRegistered: pass MpepuAppConfiguration().prepare() site_lab_tracker.autodiscover() site_visit_schedules.autodiscover() site_visit_schedules.build_all() study_site = StudySiteFactory() content_type_map = ContentTypeMap.objects.get( model='maternalconsent', app_label='mpepu_maternal') consent_catalogue = ConsentCatalogueFactory( content_type_map=content_type_map) consent_catalogue.add_for_app = 'mpepu_infant' consent_catalogue.save() delivery_days_ago = 20 self.delivery_datetime = datetime.today() - timedelta( days=delivery_days_ago - 3) print "Consent a mother" self.maternal_consent = MaternalConsentFactory( study_site=study_site, consent_datetime=datetime.today() - timedelta(days=delivery_days_ago)) print "Consent: {}".format(self.maternal_consent) m_registered_subject = RegisteredSubject.objects.get( subject_identifier=self.maternal_consent.subject_identifier) print 'check if mother is eligible' self.maternal_eligibility = MaternalEligibilityPostFactory( maternal_consent=self.maternal_consent, registered_subject=m_registered_subject, registration_datetime=datetime.today() - timedelta(days=delivery_days_ago)) print 'get the 2000M visit' self.m_appointment = Appointment.objects.get( registered_subject=m_registered_subject, visit_definition__code='2000M') print 'create a maternal visit for the 2000M visit' self.maternal_visit = MaternalVisitFactory( appointment=self.m_appointment, report_datetime=datetime.today() - timedelta(days=delivery_days_ago)) print 'create a maternal_lab_del registering 2 of 2 infants' self.maternal_lab_del = MaternalLabDelFactory( maternal_visit=self.maternal_visit, live_infants=1, live_infants_to_register=1, delivery_datetime=self.delivery_datetime, has_ga='Yes', ga=37, ) print 'maternal lab del: {}'.format(self.maternal_lab_del)
def setUp(self): try: site_lab_profiles.register(MpepuInfantProfile()) except AlreadyRegistered: pass MpepuAppConfiguration().prepare() site_lab_tracker.autodiscover() site_visit_schedules.autodiscover() site_visit_schedules.build_all() self.study_site = StudySiteFactory() content_type_map = ContentTypeMap.objects.get(model='maternalconsent', app_label='mpepu_maternal') consent_catalogue = ConsentCatalogueFactory(content_type_map=content_type_map) consent_catalogue.add_for_app = 'mpepu_infant' consent_catalogue.save()
def test_maternal_eligibility(self): site_lab_tracker.autodiscover() study_specific = StudySpecificFactory() StudySiteFactory() content_type_map_helper = ContentTypeMapHelper() content_type_map_helper.populate() content_type_map_helper.sync() content_type_map = ContentTypeMap.objects.get( model__iexact=ResistanceConsent._meta.object_name) ConsentCatalogueFactory( name=self.app_label, content_type_map=content_type_map, consent_type='sub-study', version=1, start_datetime=study_specific.study_start_datetime, end_datetime=datetime(datetime.today().year + 5, 1, 1), add_for_app=self.app_label) maternal_consent = MaternalConsentFactory(first_name='MELISSA', gender='F', dob='1994-03-25', identity='111121111') self.assertEqual(MaternalConsent.objects.all().count(), 1) print maternal_consent.subject_identifier resistance_consent = ResistanceConsentFactory(first_name='MELISSA', gender='F', dob='1994-03-25', identity='111121111') self.assertEqual(ResistanceConsent.objects.all().count(), 1) print resistance_consent.subject_identifier print 'resistance consent does exists' print 'assert there is no eligibility' self.assertEqual(ResistanceEligibility.objects.all().count(), 0) print 'create eligibility for mother' eligibility = ResistanceEligibilityFactory(co_enrolled='Yes', status_evidence='Yes', lates_cd4=250, who_illness='No') self.assertEqual(ResistanceEligibility.objects.all().count(), 1) print eligibility
def test_p1(self): site_lab_tracker.autodiscover() study_specific = StudySpecificFactory() StudySiteFactory() content_type_map_helper = ContentTypeMapHelper() content_type_map_helper.populate() content_type_map_helper.sync() content_type_map = ContentTypeMap.objects.get(model__iexact=ResistanceConsent._meta.object_name) ConsentCatalogueFactory( name=self.app_label, content_type_map=content_type_map, consent_type='sub-study', version=1, start_datetime=study_specific.study_start_datetime, end_datetime=datetime(datetime.today().year + 5, 1, 1), add_for_app=self.app_label) print 'confirming that a maternal consent exists' consent = MaternalConsentFactory(first_name='MELISSA', gender='F', dob='1994-03-25', identity='111121111') self.assertEqual(MaternalConsent.objects.all().count(), 1) print consent.subject_identifier print 'assert one maternal consent registers one registered_subject' self.assertEqual(MaternalConsent.objects.all().count(), RegisteredSubject.objects.all().count()) print 'consent first resistance mother' consent1 = ResistanceConsentFactory(first_name='MELISSA', gender='F', dob='1994-03-25', identity='111121111') self.assertEqual(ResistanceConsent.objects.all().count(), 1) print consent1.subject_identifier print 'assert that the subject identifier of both consents remains the same' self.assertEqual(consent.subject_identifier, consent1.subject_identifier) print 'assert that the subject identifier on consent1 == subject identifier in registered_subject' self.assertEqual(consent1.subject_identifier, RegisteredSubject.objects.get(subject_identifier=consent1.subject_identifier).subject_identifier)
def setUp(self): try: site_lab_profiles.register(MpepuInfantProfile()) except AlreadyRegistered: pass MpepuAppConfiguration().prepare() site_lab_tracker.autodiscover() site_visit_schedules.autodiscover() site_visit_schedules.build_all() admin.autodiscover() study_site = StudySiteFactory() content_type_map = ContentTypeMap.objects.get( model='maternalconsent', app_label='mpepu_maternal') consent_catalogue = ConsentCatalogueFactory( content_type_map=content_type_map) consent_catalogue.add_for_app = 'mpepu_infant' consent_catalogue.save() self.delivery_days_ago = 20 self.delivery_datetime = datetime.today() - timedelta( days=self.delivery_days_ago - 3) print "Consent a mother" self.maternal_consent = MaternalConsentFactory( study_site=study_site, consent_datetime=datetime.today() - timedelta(days=self.delivery_days_ago)) print "Consent: {}".format(self.maternal_consent) registered_subject = RegisteredSubject.objects.get( subject_identifier=self.maternal_consent.subject_identifier) print 'check if mother is eligible' maternal_eligibility = MaternalEligibilityPostFactory( maternal_consent=self.maternal_consent, registered_subject=registered_subject, registration_datetime=datetime.today() - timedelta(days=self.delivery_days_ago)) print 'get the 2000M visit' appointment = Appointment.objects.get( registered_subject=registered_subject, visit_definition__code='2000M') print 'create a maternal visit for the 2000M visit' maternal_visit = MaternalVisitFactory( appointment=appointment, report_datetime=datetime.today() - timedelta(days=self.delivery_days_ago)) print 'create a maternal_lab_del registering 2 of 2 infants' self.maternal_lab_del = MaternalLabDelFactory( maternal_visit=maternal_visit, live_infants=2, live_infants_to_register=2, delivery_datetime=self.delivery_datetime, has_ga='Yes', ga=37, ) print 'maternal lab del: {}'.format(self.maternal_lab_del) print 'get registered subject of the first infant' self.registered_subject1 = RegisteredSubject.objects.filter( relative_identifier=self.maternal_consent.subject_identifier ).order_by('subject_identifier')[0] print 'first registered subject {}'.format(self.registered_subject1) self.infant_birth1 = InfantBirthFactory( registered_subject=self.registered_subject1, maternal_lab_del=self.maternal_lab_del, dob=self.delivery_datetime.date()) print 'first infant birth {}'.format(self.infant_birth1) appointment1 = Appointment.objects.get( registered_subject=self.registered_subject1, visit_definition__code='2000') infant_visit1 = InfantVisitFactory(appointment=appointment1, report_datetime=datetime.today(), reason='scheduled', study_status='onstudy notrando') print 'get registered subject of the second infant' self.registered_subject2 = RegisteredSubject.objects.filter( relative_identifier=self.maternal_consent.subject_identifier ).order_by('subject_identifier')[1] print 'second registered subject {}'.format(self.registered_subject2) self.infant_birth2 = InfantBirthFactory( registered_subject=self.registered_subject2, maternal_lab_del=self.maternal_lab_del, dob=self.delivery_datetime.date()) print 'second infant birth {}'.format(self.infant_birth2) appointment2 = Appointment.objects.get( registered_subject=self.registered_subject2, visit_definition__code='2000') infant_visit2 = InfantVisitFactory(appointment=appointment2, report_datetime=datetime.today(), reason='scheduled', study_status='onstudy notrando')
def setUp(self): try: site_lab_profiles.register(MpepuInfantProfile()) except AlreadyRegistered: pass MpepuAppConfiguration().prepare() site_lab_tracker.autodiscover() site_visit_schedules.autodiscover() site_visit_schedules.build_all() study_site = StudySiteFactory() content_type_map = ContentTypeMap.objects.get( model='maternalconsent', app_label='mpepu_maternal') consent_catalogue = ConsentCatalogueFactory( content_type_map=content_type_map) consent_catalogue.add_for_app = 'mpepu_infant' consent_catalogue.save() delivery_days_ago = 20 delivery_datetime = datetime.today() - timedelta( days=delivery_days_ago - 3) # print "Consent a mother" self.maternal_consent = MaternalConsentFactory( study_site=study_site, consent_datetime=datetime.today() - timedelta(days=delivery_days_ago)) # print "Consent: {}".format(self.maternal_consent) self.registered_subject = RegisteredSubject.objects.get( subject_identifier=self.maternal_consent.subject_identifier) # print 'check if mother is eligible' self.maternal_eligibility = MaternalEligibilityPostFactory( maternal_consent=self.maternal_consent, registered_subject=self.registered_subject, registration_datetime=datetime.today() - timedelta(days=delivery_days_ago)) # print 'get the 2000M visit' self.m_appointment = Appointment.objects.get( registered_subject=self.registered_subject, visit_definition__code='2000M') # print 'create a maternal visit for the 2000M visit' self.maternal_visit = MaternalVisitFactory( appointment=self.m_appointment, report_datetime=datetime.today() - timedelta(days=delivery_days_ago)) # print 'create a maternal_lab_del registering 2 of 2 infants' self.maternal_lab_del = MaternalLabDelFactory( maternal_visit=self.maternal_visit, live_infants=1, live_infants_to_register=1, delivery_datetime=delivery_datetime, has_ga='Yes', ga=37, ) # print 'maternal lab del: {}'.format(self.maternal_lab_del) # print 'get registered subject of the infant' self.registered_subject = RegisteredSubject.objects.filter( relative_identifier=self.maternal_consent.subject_identifier ).order_by('subject_identifier')[0] print 'infant registered subject {}'.format(self.registered_subject) self.infant_birth = InfantBirthFactory( registered_subject=self.registered_subject, maternal_lab_del=self.maternal_lab_del, dob=delivery_datetime.date()) # print 'infant birth {}'.format(self.infant_birth) self.appointment = Appointment.objects.get( registered_subject=self.registered_subject, visit_definition__code='2000') self.infant_visit = InfantVisitFactory( appointment=self.appointment, report_datetime=datetime.today(), reason='scheduled', study_status='onstudy notrando') self.infant_eligibility = InfantEligibilityFactory( infant_birth=self.infant_birth, registered_subject=self.registered_subject) # print 'infant eligibility {}'.format(self.infant_eligibility) self.app_2010 = Appointment.objects.get( registered_subject=self.registered_subject, visit_definition__code='2010') self.visit_2010 = InfantVisitFactory( appointment=self.app_2010, report_datetime=datetime.today(), reason='scheduled', study_status='onstudy rando today') self.app_2020 = Appointment.objects.get( registered_subject=self.registered_subject, visit_definition__code='2020') self.visit_2020 = InfantVisitFactory( appointment=self.app_2020, report_datetime=datetime.today(), reason='scheduled', study_status='onstudy rando ondrug') self.app_2030 = Appointment.objects.get( registered_subject=self.registered_subject, visit_definition__code='2030') self.visit_2030 = InfantVisitFactory( appointment=self.app_2030, report_datetime=datetime.today(), reason='scheduled', study_status='onstudy rando ondrug')
def test_p1(self): try: site_lab_profiles.register(MpepuMaternalProfile()) except AlreadyRegistered: pass MpepuAppConfiguration().prepare() site_lab_tracker.autodiscover() StudySpecificFactory() study_site = StudySiteFactory() MpepuAppConfiguration().prepare() content_type_map_helper = ContentTypeMapHelper() content_type_map_helper.populate() content_type_map_helper.sync() print 'setup the consent catalogue for app {0}'.format(self.app_label) content_type_map = ContentTypeMap.objects.get( content_type__model=self.subject_consent._meta.object_name.lower()) consent_catalogue = ConsentCatalogueFactory( name=self.consent_catalogue_name, content_type_map=content_type_map) consent_catalogue.add_for_app = self.app_label consent_catalogue.save() print 'setup bhp_visit' content_type_map = ContentTypeMap.objects.get( content_type__model=MaternalEligibilityAnte._meta.object_name. lower()) membership_form = MembershipFormFactory( content_type_map=content_type_map) schedule_group = ScheduleGroupFactory( membership_form=membership_form, group_name='Maternal Ante Natal Reg', grouping_key='ELIGIBILITY') visit_definition = VisitDefinitionFactory( code='1000M', title='Maternal Ante Natal Registration', grouping='maternal') visit_definition.schedule_group.add(schedule_group) content_type_map = ContentTypeMap.objects.get( content_type__model=MaternalEligibilityPost._meta.object_name. lower()) membership_form = MembershipFormFactory( content_type_map=content_type_map) schedule_group = ScheduleGroupFactory( membership_form=membership_form, group_name='Maternal Post Partum Reg', grouping_key='ELIGIBILITY') visit_definition = VisitDefinitionFactory( code='2000M', title='Maternal Post Natal Registration', grouping='maternal') visit_definition.schedule_group.add(schedule_group) content_type_map = ContentTypeMap.objects.get( content_type__model=MaternalPostReg._meta.object_name.lower()) membership_form = MembershipFormFactory( content_type_map=content_type_map) schedule_group = ScheduleGroupFactory( membership_form=membership_form, group_name='Post Partum Follow-up') visit_definition = VisitDefinitionFactory(code='2010M', title='Infant Randomization', grouping='maternal') visit_definition.schedule_group.add(schedule_group) print 'consent a mother (2 days ago)' maternal_consent = MaternalConsentFactory( study_site=study_site, consent_datetime=datetime.today() - timedelta(days=2)) print maternal_consent.subject_identifier print 'get maternal registered subject' registered_subject = RegisteredSubject.objects.get( subject_identifier=maternal_consent.subject_identifier) print 'take mother off study (1 day ago)' maternal_off_study = MaternalOffStudyFactory( registered_subject=registered_subject, offstudy_date=date.today() - timedelta(days=1)) print 'Off study: {0}'.format(maternal_off_study) print 'confirm cannot add a registration form today' self.assertRaises(SubjectOffStudyError, MaternalEligibilityAnteFactory, maternal_consent=maternal_consent, registered_subject=registered_subject, registration_datetime=datetime.today() - timedelta(days=0)) print 'consent a mother (3 days ago)' maternal_consent = MaternalConsentFactory( study_site=study_site, consent_datetime=datetime.today() - timedelta(days=3)) print maternal_consent.subject_identifier print 'get maternal registered subject' registered_subject = RegisteredSubject.objects.get( subject_identifier=maternal_consent.subject_identifier) print 'add a registration form 2 days ago' maternal_eligibility = MaternalEligibilityAnteFactory( maternal_consent=maternal_consent, registered_subject=registered_subject, registration_datetime=datetime.today() - timedelta(days=2)) print 'confirm appointments' appointment = Appointment.objects.get( registered_subject=registered_subject, visit_definition__code='1000M') print 'Appointment {0} {1}'.format(appointment, appointment.appt_datetime) print 'take mother off study (1 day ago)' maternal_off_study = MaternalOffStudyFactory( registered_subject=registered_subject, offstudy_date=appointment.appt_datetime - timedelta(days=1)) print 'Off study: {0} offstudy_datetime={1}'.format( maternal_off_study, date.today() - timedelta(days=1)) print 'confirm appointments deleted' self.assertEquals( Appointment.objects.filter(registered_subject=registered_subject, visit_definition__code='1000M').count(), 0) print 'consent a mother (4 days ago)' maternal_consent = MaternalConsentFactory( study_site=study_site, consent_datetime=datetime.today() - timedelta(days=4)) print maternal_consent.subject_identifier print 'get maternal registered subject' registered_subject = RegisteredSubject.objects.get( subject_identifier=maternal_consent.subject_identifier) print 'add a registration form 3 days ago' maternal_eligibility = MaternalEligibilityAnteFactory( maternal_consent=maternal_consent, registered_subject=registered_subject, registration_datetime=datetime.today() - timedelta(days=3)) print 'confirm appointments' appointment = Appointment.objects.get( registered_subject=registered_subject, visit_definition__code='1000M') print 'add a visit form 2 days ago' appointment = Appointment.objects.get( registered_subject=registered_subject, visit_definition__code='1000M') maternal_visit = MaternalVisitFactory( appointment=appointment, report_datetime=datetime.today() - timedelta(days=2)) print 'confirm cannot take mother off study (3 day ago)' self.assertRaises(SubjectOffStudyDateError, MaternalOffStudyFactory, registered_subject=registered_subject, offstudy_date=date.today() - timedelta(days=3)) print 'confirm can take mother off study (2 day ago)' maternal_off_study = MaternalOffStudyFactory( registered_subject=registered_subject, offstudy_date=date.today() - timedelta(days=2)) print 'Off study: {0}'.format(maternal_off_study) print 'confirm appointments not deleted' self.assertEquals( Appointment.objects.filter(registered_subject=registered_subject, visit_definition__code='1000M').count(), 1)
def test_p3(self): site_lab_tracker.autodiscover() StudySpecificFactory() study_site = StudySiteFactory() content_type_map_helper = ContentTypeMapHelper() content_type_map_helper.populate() content_type_map_helper.sync() print 'setup the consent catalogue for app {0}'.format(self.app_label) content_type_map = ContentTypeMap.objects.get( content_type__model=self.subject_consent._meta.object_name.lower()) consent_catalogue = ConsentCatalogueFactory( name=self.consent_catalogue_name, content_type_map=content_type_map) consent_catalogue.add_for_app = self.app_label consent_catalogue.save() print 'setup bhp_visit' content_type_map = ContentTypeMap.objects.get( content_type__model=MaternalEligibilityAnte._meta.object_name. lower()) membership_form = MembershipFormFactory( content_type_map=content_type_map) schedule_group = ScheduleGroupFactory( membership_form=membership_form, group_name='Maternal Ante Natal Reg', grouping_key='ELIGIBILITY') visit_definition = VisitDefinitionFactory( code='1000M', title='Maternal Ante Natal Registration', grouping='maternal') visit_definition.schedule_group.add(schedule_group) content_type_map = ContentTypeMap.objects.get( content_type__model=MaternalEligibilityPost._meta.object_name. lower()) membership_form = MembershipFormFactory( content_type_map=content_type_map) schedule_group = ScheduleGroupFactory( membership_form=membership_form, group_name='Maternal Post Partum Reg', grouping_key='ELIGIBILITY') visit_definition = VisitDefinitionFactory( code='2000M', title='Maternal Post Natal Registration', grouping='maternal') visit_definition.schedule_group.add(schedule_group) content_type_map = ContentTypeMap.objects.get( content_type__model=MaternalPostReg._meta.object_name.lower()) membership_form = MembershipFormFactory( content_type_map=content_type_map) schedule_group = ScheduleGroupFactory( membership_form=membership_form, group_name='Post Partum Follow-up') visit_definition = VisitDefinitionFactory(code='2010M', title='Infant Randomization', grouping='maternal') visit_definition.schedule_group.add(schedule_group) print 'consent a mother' maternal_consent = MaternalConsentFactory(study_site=study_site) print maternal_consent.subject_identifier print 'get subject registered subject' registered_subject = RegisteredSubject.objects.get( subject_identifier=maternal_consent.subject_identifier) print 'enroll mother ante natal' maternal_eligibility_ante = MaternalEligibilityAnteFactory( maternal_consent=maternal_consent, registered_subject=registered_subject) instances = [maternal_eligibility_ante] print 'test natural key / get_by_natural_key on subject_visit' appointment = Appointment.objects.get( registered_subject=registered_subject, visit_definition__code='1000M') subject_visit = MaternalVisitFactory(appointment=appointment) instances.append(subject_visit) print 'NOTE, not all models tested' print 'test serialization.' self.serialize_deserialize(instances)
def test_p1(self): study_site = StudySiteFactory() content_type_map = ContentTypeMap.objects.get( model='maternalconsent', app_label='mpepu_maternal') consent_catalogue = ConsentCatalogueFactory( content_type_map=content_type_map) consent_catalogue.add_for_app = 'mpepu_infant' consent_catalogue.save() print 'consent a mother (30 days ago)' maternal_consent = MaternalConsentFactory( study_site=study_site, consent_datetime=datetime.today() - timedelta(days=30)) print maternal_consent.subject_identifier print 'get maternal registered subject' registered_subject = RegisteredSubject.objects.get( subject_identifier=maternal_consent.subject_identifier) print 'add a registration form 30 days ago' maternal_eligibility = MaternalEligibilityAnteFactory( maternal_consent=maternal_consent, registered_subject=registered_subject, registration_datetime=datetime.today() - timedelta(days=30)) print 'add a visit form 28 days ago' appointment = Appointment.objects.get( registered_subject=registered_subject, visit_definition__code='1000M') maternal_visit = MaternalVisitFactory( appointment=appointment, report_datetime=datetime.today() - timedelta(days=28)) print 'create a maternal lab-del: registering 2 of 1 infant' delivery_datetime = datetime.today() - timedelta(days=28) maternal_lab_del = MaternalLabDelFactory( maternal_visit=maternal_visit, live_infants=2, live_infants_to_register=1, delivery_datetime=delivery_datetime) print maternal_lab_del print 'confirm infant subject identifier in bhp_identifier.models.SubjectIdentifier and follows derived format {0}'.format( '{0}-25'.format(maternal_consent.subject_identifier)) self.assertIsNotNone( SubjectIdentifier.objects.get(identifier='{0}-25'.format( maternal_consent.subject_identifier))) print 'confirm infant registered subject exists' registered_subject = RegisteredSubject.objects.get( relative_identifier=maternal_consent.subject_identifier) print registered_subject print 'complete infant birth' infant_birth = InfantBirthFactory( registered_subject=registered_subject, maternal_lab_del=maternal_lab_del, dob=date(delivery_datetime.year, delivery_datetime.month, delivery_datetime.day)) print infant_birth print 'add a visit' appointment = Appointment.objects.get( registered_subject=registered_subject, visit_definition__code='2000') infant_visit = InfantVisitFactory(appointment=appointment, report_datetime=datetime.today(), reason='scheduled', study_status='onstudy notrando') print 'complete infant eligibility' infant_eligibility = InfantEligibilityFactory( infant_birth=infant_birth, registered_subject=registered_subject) print 'complete infant birth data' infant_birth_data = InfantBirthDataFactory(infant_visit=infant_visit, infant_birth=infant_birth) print 'complete off study model' infant_off_study = InfantOffStudyFactory( registered_subject=registered_subject, offstudy_date=date.today() - timedelta(days=0), infant_visit=infant_visit) print 'confirm can still save scheduled model' infant_birth_data.save() print 'consent a mother (30 days ago)' maternal_consent = MaternalConsentFactory( study_site=study_site, consent_datetime=datetime.today() - timedelta(days=30)) print maternal_consent.subject_identifier print 'get maternal registered subject' registered_subject = RegisteredSubject.objects.get( subject_identifier=maternal_consent.subject_identifier) print 'add a registration form 30 days ago' maternal_eligibility = MaternalEligibilityAnteFactory( maternal_consent=maternal_consent, registered_subject=registered_subject, registration_datetime=datetime.today() - timedelta(days=30)) print 'add a visit form 28 days ago' appointment = Appointment.objects.get( registered_subject=registered_subject, visit_definition__code='1000M') maternal_visit = MaternalVisitFactory( appointment=appointment, report_datetime=datetime.today() - timedelta(days=28)) print 'create a maternal lab-del: registering 2 of 1 infant' delivery_datetime = datetime.today() - timedelta(days=28) maternal_lab_del = MaternalLabDelFactory( maternal_visit=maternal_visit, live_infants=2, live_infants_to_register=1, delivery_datetime=delivery_datetime) print maternal_lab_del print 'confirm infant subject identifier in bhp_identifier.models.SubjectIdentifier and follows derived format {0}'.format( '{0}-25'.format(maternal_consent.subject_identifier)) self.assertIsNotNone( SubjectIdentifier.objects.get(identifier='{0}-25'.format( maternal_consent.subject_identifier))) print 'confirm infant registered subject exists' registered_subject = RegisteredSubject.objects.get( relative_identifier=maternal_consent.subject_identifier) print registered_subject print 'complete infant birth' infant_birth = InfantBirthFactory( registered_subject=registered_subject, maternal_lab_del=maternal_lab_del, dob=date(delivery_datetime.year, delivery_datetime.month, delivery_datetime.day)) print infant_birth print 'add a visit 1 day ago' appointment = Appointment.objects.get( registered_subject=registered_subject, visit_definition__code='2000') infant_visit = InfantVisitFactory(appointment=appointment, report_datetime=datetime.today() - timedelta(days=1), reason='scheduled', study_status='onstudy notrando') print 'complete off study model' infant_off_study = InfantOffStudyFactory( registered_subject=registered_subject, offstudy_date=date.today() - timedelta(days=1), infant_visit=infant_visit) print 'confirm cannot add a visit' appointment = Appointment.objects.get( registered_subject=registered_subject, visit_definition__code='2000') self.assertRaises(SubjectOffStudyError, InfantVisitFactory, appointment=appointment, report_datetime=datetime.today(), reason='scheduled', study_status='onstudy notrando') print 'remove off study' infant_off_study.delete() infant_off_study = InfantOffStudyFactory( registered_subject=registered_subject, offstudy_date=date.today() - timedelta(days=1), infant_visit=infant_visit) print 'assert cannot complete infant eligibility for today' self.assertRaises(SubjectOffStudyError, InfantEligibilityFactory, infant_birth=infant_birth, registered_subject=registered_subject) print 'remove off study' infant_off_study.delete() print 'complete infant birth data' infant_birth_data = InfantBirthDataFactory(infant_visit=infant_visit, infant_birth=infant_birth) print 'complete off study model' infant_off_study = InfantOffStudyFactory( registered_subject=registered_subject, offstudy_date=date.today() - timedelta(days=1), infant_visit=infant_visit) print 'confirm cannot add an off study with younger data already entered (3 days ago)' self.assertRaises(SubjectOffStudyDateError, InfantOffStudyFactory, registered_subject=registered_subject, offstudy_date=date.today() - timedelta(days=3))
def setUp(self): try: site_lab_profiles.register(MpepuInfantProfile()) except AlreadyRegistered: pass MpepuAppConfiguration().prepare() site_lab_tracker.autodiscover() site_visit_schedules.autodiscover() site_visit_schedules.build_all() study_site = StudySiteFactory() content_type_map = ContentTypeMap.objects.get( model='maternalconsent', app_label='mpepu_maternal') consent_catalogue = ConsentCatalogueFactory( content_type_map=content_type_map) consent_catalogue.add_for_app = 'mpepu_infant' consent_catalogue.save() print "register a mother " delivery_days_ago = 20 delivery_datetime = datetime.today() - timedelta( days=delivery_days_ago - 3) maternal_consent = MaternalConsentFactory( study_site=study_site, consent_datetime=datetime.today() - timedelta(days=delivery_days_ago)) print "Consent: {}".format(maternal_consent) m_registered_subject = RegisteredSubject.objects.get( subject_identifier=maternal_consent.subject_identifier) maternal_eligibility = MaternalEligibilityPostFactory( maternal_consent=maternal_consent, registered_subject=m_registered_subject, registration_datetime=datetime.today() - timedelta(days=delivery_days_ago)) appointment = Appointment.objects.get( registered_subject=m_registered_subject, visit_definition__code='2000M') maternal_visit = MaternalVisitFactory( appointment=appointment, report_datetime=datetime.today() - timedelta(days=delivery_days_ago)) print 'create a maternal_lab_del registering 2 of 2 infants' maternal_lab_del = MaternalLabDelFactory( maternal_visit=maternal_visit, live_infants=2, live_infants_to_register=2, delivery_datetime=delivery_datetime, has_ga='Yes', ga=37, ) print 'maternal lab del: {}'.format(maternal_lab_del) print 'register infant 1 of 2' self.registered_subject1 = RegisteredSubject.objects.filter( relative_identifier=maternal_consent.subject_identifier).order_by( 'subject_identifier')[0] print 'first registered subject {}'.format(self.registered_subject1) self.infant_birth1 = InfantBirthFactory( registered_subject=self.registered_subject1, maternal_lab_del=maternal_lab_del, dob=delivery_datetime.date()) print 'first infant birth {}'.format(self.infant_birth1) self.infant_eligibility1 = InfantEligibilityFactory( infant_birth=self.infant_birth1, registered_subject=self.infant_birth1.registered_subject, clinical_jaundice='No', anemia_neutropenia='No', hiv_result_reference='PENDING', maternal_feeding_choice='BF', maternal_art_status='ON', rando_bf_duration='Yes', ctx_contra='No', congen_anomaly='No', randomization_site='Gaborone', ) print 'First infant Eligibility {}'.format(self.infant_eligibility1) print "register infant 2 of 2" self.registered_subject2 = RegisteredSubject.objects.filter( relative_identifier=maternal_consent.subject_identifier).order_by( 'subject_identifier')[1] print 'second registered subject {}'.format(self.registered_subject2) infant_birth2 = InfantBirthFactory( registered_subject=self.registered_subject2, maternal_lab_del=maternal_lab_del, dob=delivery_datetime.date()) print 'second infant birth {}'.format(infant_birth2) self.registered_subject2.dob = infant_birth2.dob self.registered_subject2.gender = infant_birth2.gender self.registered_subject2.initials = infant_birth2.initials self.registered_subject2.relative_identifier = m_registered_subject.subject_identifier self.registered_subject2.save()