コード例 #1
0
 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)
コード例 #2
0
 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()
コード例 #3
0
    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
コード例 #4
0
    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)
コード例 #5
0
    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')
コード例 #6
0
    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')
コード例 #7
0
    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)
コード例 #8
0
    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)
コード例 #9
0
    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))
コード例 #10
0
    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()