示例#1
0
    def setUp(self):
        site_visit_schedules._registry = {}
        site_visit_schedules.register(visit_schedule)
        self.lab_helper.setup_site_labs()

        class RequisitionForm(RequisitionFormMixin, FormValidatorMixin,
                              forms.ModelForm):

            form_validator_cls = RequisitionFormValidator

            class Meta:
                fields = "__all__"
                model = SubjectRequisition

        self.form_cls = RequisitionForm
        self.subject_identifier = "12345"
        SubjectConsent.objects.create(
            subject_identifier=self.subject_identifier,
            consent_datetime=get_utcnow(),
            identity="1111111",
            confirm_identity="1111111",
            visit_schedule_name="visit_schedule",
            schedule_name="schedule",
        )
        appointment = Appointment.objects.get(visit_code="1000")
        self.subject_visit = SubjectVisit.objects.create(
            appointment=appointment,
            report_datetime=get_utcnow(),
            reason=SCHEDULED)
示例#2
0
 def test_schedule_bad_crf_model(self):
     site_visit_schedules._registry = {}
     visit_schedule = VisitSchedule(
         name="visit_schedule",
         verbose_name="Visit Schedule",
         offstudy_model="visit_schedule_app.subjectoffstudy",
         death_report_model="visit_schedule_app.deathreport",
     )
     schedule = Schedule(
         name="schedule",
         onschedule_model="visit_schedule_app.onschedule",
         offschedule_model="visit_schedule_app.offschedule",
         appointment_model="edc_appointment.appointment",
         consent_model="visit_schedule_app.subjectconsent",
     )
     crfs = FormsCollection(
         Crf(show_order=10, model="blah.CrfOne"),
         Crf(show_order=20, model="blah.CrfTwo"),
         Crf(show_order=30, model="blah.CrfThree"),
     )
     visit = Visit(
         code="1000",
         rbase=relativedelta(days=0),
         rlower=relativedelta(days=0),
         rupper=relativedelta(days=6),
         facility_name="default",
         crfs=crfs,
         timepoint=1,
     )
     schedule.add_visit(visit)
     visit_schedule.add_schedule(schedule)
     site_visit_schedules.register(visit_schedule)
     errors = visit_schedule_check(app_configs=django_apps.get_app_configs())
     self.assertEqual(len(errors), 1)
     self.assertEqual("edc_visit_schedule.visits", errors[0].id)
    def setUp(self):
        self.visit_schedule_name = 'visit_schedule'
        self.schedule_name = 'schedule'

        site_visit_schedules._registry = {}
        site_visit_schedules.loaded = False
        site_visit_schedules.register(visit_schedule)
        site_visit_schedules.register(visit_schedule2)

        self.subject_identifier = '111111111'
        self.subject_identifiers = [
            self.subject_identifier, '222222222', '333333333', '444444444']
        self.consent_datetime = get_utcnow() - relativedelta(weeks=4)
        for subject_identifier in self.subject_identifiers:
            subject_consent = SubjectConsent.objects.create(
                subject_identifier=subject_identifier,
                identity=subject_identifier,
                confirm_identity=subject_identifier,
                consent_datetime=self.consent_datetime,
                dob=get_utcnow() - relativedelta(years=25))
            Enrollment.objects.create(
                subject_identifier=subject_consent.subject_identifier,
                schedule_name=self.schedule_name,
                report_datetime=self.consent_datetime,
                facility_name='default')
        self.subject_consent = SubjectConsent.objects.get(
            subject_identifier=self.subject_identifier,
            dob=get_utcnow() - relativedelta(years=25))
        enrollment = Enrollment.objects.get(
            subject_identifier=self.subject_identifier)
        self.schedule = enrollment.schedule
示例#4
0
    def setUp(self):
        self.visit_schedule_name = "visit_schedule1"
        self.schedule_name = "schedule1"

        site_visit_schedules._registry = {}
        site_visit_schedules.loaded = False
        site_visit_schedules.register(visit_schedule1)
        site_visit_schedules.register(visit_schedule2)

        self.schedule1 = visit_schedule1.schedules.get("schedule1")
        self.schedule2 = visit_schedule2.schedules.get("schedule2")

        self.subject_identifier = "111111111"
        self.subject_identifiers = [
            self.subject_identifier,
            "222222222",
            "333333333",
            "444444444",
        ]
        self.consent_datetime = get_utcnow() - relativedelta(weeks=4)
        dob = get_dob(age_in_years=25, now=self.consent_datetime)
        for subject_identifier in self.subject_identifiers:
            subject_consent = SubjectConsent.objects.create(
                subject_identifier=subject_identifier,
                identity=subject_identifier,
                confirm_identity=subject_identifier,
                consent_datetime=self.consent_datetime,
                dob=dob,
            )
            self.schedule1.put_on_schedule(
                subject_identifier=subject_consent.subject_identifier,
                onschedule_datetime=self.consent_datetime,
            )
        self.subject_consent = SubjectConsent.objects.get(
            subject_identifier=self.subject_identifier, dob=dob)
 def setUp(self):
     import_holidays()
     self.panel_one = Panel.objects.create(name='one')
     register_to_site_reference_configs()
     site_visit_schedules._registry = {}
     site_visit_schedules.loaded = False
     site_visit_schedules.register(visit_schedule)
     site_reference_configs.register_from_visit_schedule(
         visit_models={
             'edc_appointment.appointment': 'edc_metadata.subjectvisit'})
     self.subject_identifier = '1111111'
     subject_consent = SubjectConsent.objects.create(
         subject_identifier=self.subject_identifier,
         consent_datetime=get_utcnow())
     _, self.schedule = site_visit_schedules.get_by_onschedule_model(
         'edc_metadata.onschedule')
     self.schedule.put_on_schedule(
         subject_identifier=self.subject_identifier,
         onschedule_datetime=subject_consent.consent_datetime)
     self.appointment = Appointment.objects.get(
         subject_identifier=self.subject_identifier,
         visit_code=self.schedule.visits.first.code)
     self.subject_visit = SubjectVisit.objects.create(
         appointment=self.appointment,
         subject_identifier=self.subject_identifier,
         reason=SCHEDULED)
    def setUp(self):
        self.panel_one = Panel.objects.create(name="one")

        site_visit_schedules._registry = {}
        site_visit_schedules.loaded = False
        site_visit_schedules.register(visit_schedule)

        register_to_site_reference_configs()
        site_reference_configs.register_from_visit_schedule(
            visit_models={
                "edc_appointment.appointment": "edc_metadata.subjectvisit"
            })

        self.subject_identifier = "1111111"
        subject_consent = SubjectConsent.objects.create(
            subject_identifier=self.subject_identifier,
            consent_datetime=get_utcnow())
        _, self.schedule = site_visit_schedules.get_by_onschedule_model(
            "edc_metadata.onschedule")
        self.schedule.put_on_schedule(
            subject_identifier=self.subject_identifier,
            onschedule_datetime=subject_consent.consent_datetime,
        )
        self.appointment = Appointment.objects.get(
            subject_identifier=self.subject_identifier,
            visit_code=self.schedule.visits.first.code,
        )
        self.subject_visit = SubjectVisit.objects.create(
            appointment=self.appointment,
            subject_identifier=self.subject_identifier,
            reason=SCHEDULED,
        )
    def setUp(self):
        self.user = User.objects.create_superuser("user_login",
                                                  "*****@*****.**", "pass")

        site_labs._registry = {}
        site_labs.loaded = False
        site_labs.register(lab_profile=lab_profile)

        register_to_site_reference_configs()
        site_visit_schedules._registry = {}
        site_visit_schedules.loaded = False
        site_visit_schedules.register(visit_schedule)
        site_reference_configs.register_from_visit_schedule(
            visit_models={
                "edc_appointment.appointment": "edc_model_admin.subjectvisit"
            })

        self.subject_identifier = "101-12345"
        SubjectConsent.objects.create(
            subject_identifier=self.subject_identifier,
            consent_datetime=get_utcnow(),
            identity="1111111",
            confirm_identity="1111111",
            visit_schedule_name="visit_schedule",
            schedule_name="schedule",
        )
        appointment = Appointment.objects.get(visit_code="1000")
        self.subject_visit = SubjectVisit.objects.create(
            appointment=appointment,
            report_datetime=get_utcnow(),
            reason=SCHEDULED)
    def setUp(self):
        import_holidays()
        register_to_site_reference_configs()
        for name in ['one', 'two', 'three', 'four', 'five', 'six']:
            Panel.objects.create(name=name)

        site_visit_schedules._registry = {}
        site_visit_schedules.loaded = False
        site_visit_schedules.register(visit_schedule)
        site_reference_configs.register_from_visit_schedule(
            visit_models={
                'edc_appointment.appointment': 'edc_metadata.subjectvisit'})
        self.subject_identifier = '1111111'
        self.assertEqual(CrfMetadata.objects.all().count(), 0)
        self.assertEqual(RequisitionMetadata.objects.all().count(), 0)
        subject_consent = SubjectConsent.objects.create(
            subject_identifier=self.subject_identifier,
            consent_datetime=get_utcnow())
        _, self.schedule = site_visit_schedules.get_by_onschedule_model(
            'edc_metadata.onschedule')
        self.schedule.put_on_schedule(
            subject_identifier=self.subject_identifier,
            onschedule_datetime=subject_consent.consent_datetime)
        self.appointment = Appointment.objects.get(
            subject_identifier=self.subject_identifier,
            visit_code=self.schedule.visits.first.code)
        self.subject_visit = SubjectVisit.objects.create(
            appointment=self.appointment,
            subject_identifier=self.subject_identifier,
            reason=SCHEDULED)
示例#9
0
    def setUp(self):
        load_list_data(
            list_data=list_data,
            model_name="edc_visit_tracking.subjectvisitmissedreasons",
        )
        self.subject_identifier = "12345"
        self.helper = self.helper_cls(
            subject_identifier=self.subject_identifier)
        crfs = FormsCollection(
            Crf(show_order=1, model="edc_metadata.crfone", required=True),
            Crf(show_order=2, model="edc_metadata.crftwo", required=True),
            Crf(show_order=3, model="edc_metadata.crfthree", required=True),
            Crf(show_order=4, model="edc_metadata.crffour", required=True),
            Crf(show_order=5, model="edc_metadata.crffive", required=True),
        )
        crfs_missed = FormsCollection(
            Crf(
                show_order=1,
                model="edc_visit_tracking.subjectvisitmissed",
                required=True,
            ), )

        visit_schedule1 = VisitSchedule(
            name="visit_schedule1",
            offstudy_model="edc_visit_tracking.subjectoffstudy",
            death_report_model="edc_visit_tracking.deathreport",
            locator_model="edc_locator.subjectlocator",
        )
        schedule1 = Schedule(
            name="schedule1",
            onschedule_model="edc_visit_tracking.onscheduleone",
            offschedule_model="edc_visit_tracking.offscheduleone",
            consent_model="edc_visit_tracking.subjectconsent",
            appointment_model="edc_appointment.appointment",
        )
        visits = []
        for index in range(0, 4):
            visits.append(
                Visit(
                    code=f"{index + 1}000",
                    title=f"Day {index + 1}",
                    timepoint=index,
                    rbase=relativedelta(days=index),
                    rlower=relativedelta(days=0),
                    rupper=relativedelta(days=6),
                    requisitions=[],
                    crfs=crfs,
                    crfs_missed=crfs_missed,
                    allow_unscheduled=True,
                ))
        for visit in visits:
            schedule1.add_visit(visit)
        visit_schedule1.add_schedule(schedule1)
        site_visit_schedules._registry = {}
        site_visit_schedules.register(visit_schedule=visit_schedule1)
        site_reference_configs.register_from_visit_schedule(visit_models={
            "edc_appointment.appointment":
            "edc_visit_tracking.subjectvisit"
        })
示例#10
0
 def setUp(self):
     import_holidays()
     self.helper = Helper()
     site_visit_schedules._registry = {}
     site_visit_schedules.register(visit_schedule1)
     self.path = mkdtemp()
     self.helper.create_crfs(5)
     self.subject_visit = SubjectVisit.objects.all()[0]
示例#11
0
 def setUpClass(cls):
     super().setUpClass()
     import_holidays()
     site_consents.registry = {}
     site_consents.register(v1)
     site_visit_schedules._registry = {}
     site_visit_schedules.register(visit_schedule)
     Site.objects.create(id=10, name="edc", domain="edc.example.com")
 def setUp(self):
     import_holidays()
     self.subject_identifier = '12345'
     self.helper = self.helper_cls(
         subject_identifier=self.subject_identifier)
     site_visit_schedules._registry = {}
     site_visit_schedules.register(visit_schedule=visit_schedule1)
     site_visit_schedules.register(visit_schedule=visit_schedule2)
示例#13
0
 def setUp(self):
     site_consents.registry = {}
     self.study_open_datetime = Protocol().study_open_datetime
     self.study_close_datetime = Protocol().study_close_datetime
     site_visit_schedules._registry = {}
     site_visit_schedules.register(visit_schedule)
     self.subject_identifier = "12345"
     super().setUp()
示例#14
0
    def setUp(self):

        v1_consent = Consent(
            "visit_schedule_app.subjectconsent",
            version="1",
            start=Protocol().study_open_datetime,
            end=Protocol().study_close_datetime,
            age_min=18,
            age_is_adult=18,
            age_max=64,
            gender=[MALE, FEMALE],
        )

        import_holidays()
        site_consents.registry = {}
        site_consents.register(v1_consent)

        self.visit_schedule = VisitSchedule(
            name="visit_schedule",
            verbose_name="Visit Schedule",
            offstudy_model="visit_schedule_app.subjectoffstudy",
            death_report_model="visit_schedule_app.deathreport",
        )

        self.schedule = Schedule(
            name="schedule",
            onschedule_model="visit_schedule_app.onschedule",
            offschedule_model="visit_schedule_app.offschedule",
            appointment_model="edc_appointment.appointment",
            consent_model="visit_schedule_app.subjectconsent",
        )

        visit = Visit(
            code="1000",
            rbase=relativedelta(days=0),
            rlower=relativedelta(days=0),
            rupper=relativedelta(days=6),
            timepoint=1,
        )
        self.schedule.add_visit(visit)
        self.visit_schedule.add_schedule(self.schedule)
        site_visit_schedules._registry = {}
        site_visit_schedules.register(self.visit_schedule)

        site_reference_configs.registry = {}
        site_reference_configs.register_from_visit_schedule(visit_models={
            "edc_appointment.appointment":
            "visit_schedule_app.subjectvisit"
        })

        self.subject_consent = SubjectConsent.objects.create(
            subject_identifier="12345",
            consent_datetime=get_utcnow() - relativedelta(seconds=1),
            dob=date(1995, 1, 1),
            identity="11111",
            confirm_identity="11111",
        )
        self.subject_identifier = self.subject_consent.subject_identifier
 def setUp(self):
     self.subject_identifier = '12345'
     site_visit_schedules._registry = {}
     site_visit_schedules.register(visit_schedule=visit_schedule1)
     site_visit_schedules.register(visit_schedule=visit_schedule2)
     self.helper = self.helper_cls(
         subject_identifier=self.subject_identifier,
         now=arrow.Arrow.fromdatetime(
             datetime(2017, 1, 7), tzinfo='UTC').datetime)
示例#16
0
 def __init__(self, now=None, subject_identifier=None):
     site_visit_schedules._registry = {}
     site_visit_schedules.register(visit_schedule1)
     self.now = now or get_utcnow()
     self.subject_identifier = subject_identifier or uuid.uuid4().hex
     self.consent_and_put_on_schedule()
     self.subject_visit = None
     self.thing_one = None
     self.thing_two = None
    def setUp(self):
        import_holidays()
        site_visit_schedules._registry = {}
        site_visit_schedules.loaded = False
        site_visit_schedules.register(visit_schedule)

        # note crfs in visit schedule are all set to REQUIRED by default.
        _, self.schedule = site_visit_schedules.get_by_onschedule_model(
            'edc_metadata.onschedule')
 def setUp(self):
     import_holidays()
     SubjectVisit.visit_sequence_cls = VisitSequence
     self.subject_identifier = '12345'
     self.helper = self.helper_cls(
         subject_identifier=self.subject_identifier)
     site_visit_schedules._registry = {}
     site_visit_schedules.register(visit_schedule=visit_schedule1)
     site_visit_schedules.register(visit_schedule=visit_schedule2)
     self.helper.consent_and_put_on_schedule()
 def setUp(self):
     import_holidays()
     self.subject_identifier = '12345'
     self.helper = self.helper_cls(
         subject_identifier=self.subject_identifier)
     site_visit_schedules._registry = {}
     site_visit_schedules.register(visit_schedule=visit_schedule1)
     site_visit_schedules.register(visit_schedule=visit_schedule2)
     self.helper.consent_and_put_on_schedule()
     self.appointment = Appointment.objects.all(
     ).order_by('timepoint_datetime')[0]
示例#20
0
 def setUp(self):
     site_visit_schedules._registry = {}
     site_visit_schedules.loaded = False
     site_visit_schedules.register(visit_schedule)
     register_to_site_reference_configs()
     site_reference_configs.register_from_visit_schedule(visit_models={
         "edc_appointment.appointment":
         "edc_metadata_rules.subjectvisit"
     })
     _, self.schedule = site_visit_schedules.get_by_onschedule_model(
         "edc_metadata_rules.onschedule")
示例#21
0
    def setUp(self):
        site_visit_schedules._registry = {}
        site_visit_schedules.loaded = False
        site_visit_schedules.register(visit_schedule)

        register_to_site_reference_configs()

        # note crfs in visit schedule are all set to REQUIRED by default.
        _, self.schedule = site_visit_schedules.get_by_onschedule_model(
            "edc_metadata.onschedule"
        )
示例#22
0
 def setUp(self):
     self.subject_identifier = "12345"
     self.helper = self.helper_cls(
         subject_identifier=self.subject_identifier)
     site_visit_schedules._registry = {}
     site_visit_schedules.register(visit_schedule=visit_schedule1)
     site_visit_schedules.register(visit_schedule=visit_schedule2)
     site_reference_configs.register_from_visit_schedule(visit_models={
         "edc_appointment.appointment":
         "edc_visit_tracking.subjectvisit"
     })
示例#23
0
    def test_requires_consent(self):
        site_visit_schedules._registry = {}
        site_visit_schedules.register(visit_schedule)
        consent_object_factory(start=self.study_open_datetime, end=self.study_close_datetime)
        consent_obj = baker.make_recipe(
            "edc_consent.subjectconsent",
            subject_identifier=self.subject_identifier,
            consent_datetime=self.study_open_datetime + relativedelta(months=1),
        )
        subject_visit = SubjectVisit.objects.create(subject_identifier=self.subject_identifier)
        self.assertRaises(
            SiteConsentError,
            CrfOne.objects.create,
            subject_visit=subject_visit,
            subject_identifier="12345",
            report_datetime=self.study_close_datetime + relativedelta(months=1),
        )
        subject_visit = SubjectVisit.objects.create(subject_identifier=self.subject_identifier)
        try:
            CrfOne.objects.create(
                subject_visit=subject_visit,
                subject_identifier="12345",
                report_datetime=self.study_open_datetime + relativedelta(months=1),
            )
        except (SiteConsentError, NotConsentedError) as e:
            self.fail(f"Exception unexpectedly raised. Got {e}")
        consent_obj.delete()
        subject_visit = SubjectVisit.objects.create(subject_identifier=self.subject_identifier)
        self.assertRaises(
            NotConsentedError,
            CrfOne.objects.create,
            subject_visit=subject_visit,
            subject_identifier="12345",
            report_datetime=self.study_open_datetime + relativedelta(months=1),
        )
        self.assertRaises(
            NotConsentedError,
            SubjectLocator.objects.create,
            subject_identifier="12345",
            report_datetime=self.study_open_datetime - relativedelta(months=1),
        )

        # delete singleton action item
        # created for the subject locator
        ActionItem.objects.all().delete()

        try:
            SubjectLocator.objects.create(
                subject_identifier="12345",
                report_datetime=self.study_open_datetime + relativedelta(months=1),
            )
        except NotConsentedError as e:
            self.fail(f"NotConsentedError unexpectedly raised. Got {e}")
 def setUp(self):
     site_visit_schedules._registry = {}
     site_visit_schedules.register(visit_schedule)
     self.user = User.objects.create(username="******",
                                     is_staff=True,
                                     is_active=True)
     self.subject_identifier = "1234"
     for permission in Permission.objects.filter(
             content_type__app_label="edc_fieldsets"):
         self.user.user_permissions.add(permission)
     RegisteredSubject.objects.create(
         subject_identifier=self.subject_identifier)
    def setUp(self):
        self.user = get_user_model().objects.create_superuser(
            "user_login", "*****@*****.**", "pass")

        site_labs._registry = {}
        site_labs.loaded = False
        site_labs.register(lab_profile=lab_profile)

        site_visit_schedules._registry = {}
        site_visit_schedules.loaded = False
        site_visit_schedules.register(visit_schedule)
        populate_visit_schedule()
示例#26
0
    def setUp(self):
        self.user = User.objects.create_superuser("user_login",
                                                  "*****@*****.**", "pass")

        site_labs._registry = {}
        site_labs.loaded = False
        site_labs.register(lab_profile=lab_profile)

        register_to_site_reference_configs()
        site_visit_schedules._registry = {}
        site_visit_schedules.loaded = False
        site_visit_schedules.register(visit_schedule)
        site_reference_configs.register_from_visit_schedule(visit_models={
            "edc_appointment.appointment":
            "review_dashboard_app.subjectvisit"
        })

        self.subject_identifiers = ["101-40990028-3", "101-40990029-4"]

        for subject_identifier in self.subject_identifiers:
            subject_consent = SubjectConsent.objects.create(
                subject_identifier=subject_identifier,
                consent_datetime=get_utcnow(),
                identity=subject_identifier,
                confirm_identity=subject_identifier,
                dob=get_utcnow() - relativedelta(years=25),
            )

            for schedule in visit_schedule.schedules.values():
                for visit in schedule.visits.values():
                    appointment = Appointment.objects.create(
                        appt_datetime=get_utcnow(),
                        subject_identifier=subject_identifier,
                        visit_schedule_name="visit_schedule",
                        schedule_name="schedule",
                        timepoint=visit.timepoint,
                        visit_code=visit.code,
                        user_created="user_login",
                    )
                    SubjectVisit.objects.create(
                        appointment=appointment,
                        subject_identifier=subject_identifier,
                        reason=SCHEDULED,
                        user_created="user_login",
                    )
            # put subject on schedule
            _, schedule = site_visit_schedules.get_by_onschedule_model(
                "review_dashboard_app.onschedule")
            schedule.put_on_schedule(
                subject_identifier=subject_consent.subject_identifier,
                onschedule_datetime=subject_consent.consent_datetime,
            )
示例#27
0
 def setUp(self):
     SubjectVisit.visit_sequence_cls = VisitSequence
     self.subject_identifier = "12345"
     self.helper = self.helper_cls(
         subject_identifier=self.subject_identifier)
     site_visit_schedules._registry = {}
     site_visit_schedules.register(visit_schedule=visit_schedule1)
     site_visit_schedules.register(visit_schedule=visit_schedule2)
     site_reference_configs.register_from_visit_schedule(visit_models={
         "edc_appointment.appointment":
         "edc_visit_tracking.subjectvisit"
     })
     self.helper.consent_and_put_on_schedule()
    def setUp(self):
        site_visit_schedules._registry = {}
        site_visit_schedules.loaded = False
        site_visit_schedules.register(visit_schedule)

        site_reference_configs.register_from_visit_schedule(visit_models={
            "edc_appointment.appointment":
            "edc_metadata_rules.subjectvisit"
        })

        # note crfs in visit schedule are all set to REQUIRED by default.
        _, self.schedule = site_visit_schedules.get_by_onschedule_model(
            "edc_metadata_rules.onschedule")

        site_metadata_rules.registry = OrderedDict()
        site_metadata_rules.register(rule_group_cls=CrfRuleGroupGender)
 def test_already_registered(self):
     site_visit_schedules._registry = {}
     schedule = Schedule(
         name="schedule",
         onschedule_model="visit_schedule_app.onschedule",
         offschedule_model="visit_schedule_app.offschedule",
         appointment_model="edc_appointment.appointment",
         consent_model="visit_schedule_app.subjectconsent",
     )
     self.visit_schedule.add_schedule(schedule)
     site_visit_schedules.register(self.visit_schedule)
     self.assertRaises(
         AlreadyRegisteredVisitSchedule,
         site_visit_schedules.register,
         self.visit_schedule,
     )
 def register_visit_schedule(self, facility_name=None):
     """Overwrite facility name on each visit and register
     the modified visit_schedule.
     """
     visit_schedule = deepcopy(visit_schedule1)
     for schedule_name, schedule in visit_schedule.schedules.items():
         visit_collection = VisitCollection()
         for k, v in schedule.visits.items():
             v.facility_name = facility_name
             visit_collection.update({k: v})
         schedule.visits = visit_collection
         visit_schedule.schedules[schedule_name] = schedule
     site_visit_schedules._registry = {}
     site_visit_schedules.register(visit_schedule=visit_schedule)
     visit_schedule = site_visit_schedules.get_visit_schedule(
         visit_schedule.name)
     for schedule_name, schedule in visit_schedule.schedules.items():
         for k, v in schedule.visits.items():
             self.assertEqual(v.facility_name, facility_name)
示例#31
0
 def test_visit_schedule_ok(self):
     site_visit_schedules._registry = {}
     visit_schedule = VisitSchedule(
         name="visit_schedule",
         verbose_name="Visit Schedule",
         offstudy_model="visit_schedule_app.subjectoffstudy",
         death_report_model="visit_schedule_app.deathreport",
     )
     schedule = Schedule(
         name="schedule",
         onschedule_model="visit_schedule_app.onschedule",
         offschedule_model="visit_schedule_app.offschedule",
         appointment_model="edc_appointment.appointment",
         consent_model="visit_schedule_app.subjectconsent",
     )
     visit_schedule.add_schedule(schedule)
     site_visit_schedules.register(visit_schedule)
     errors = visit_schedule_check(app_configs=django_apps.get_app_configs())
     self.assertEqual(len(errors), 0)
 def setUp(self):
     self.panel_one = Panel.objects.create(name=panel_one.name)
     self.panel_two = Panel.objects.create(name=panel_two.name)
     self.panel_three = Panel.objects.create(name=panel_three.name)
     self.panel_four = Panel.objects.create(name=panel_four.name)
     self.panel_five = Panel.objects.create(name=panel_five.name)
     self.panel_six = Panel.objects.create(name=panel_six.name)
     self.panel_seven = Panel.objects.create(name=panel_seven.name)
     self.panel_eight = Panel.objects.create(name=panel_eight.name)
     site_visit_schedules._registry = {}
     site_visit_schedules.loaded = False
     site_visit_schedules.register(visit_schedule)
     site_reference_configs.register_from_visit_schedule(visit_models={
         "edc_appointment.appointment":
         "edc_metadata_rules.subjectvisit"
     })
     _, self.schedule = site_visit_schedules.get_by_onschedule_model(
         "edc_metadata_rules.onschedule")
     site_metadata_rules.registry = OrderedDict()
 def register_visit_schedule(self, facility_name=None):
     """Overwrite facility name on each visit and register
     the modified visit_schedule.
     """
     visit_schedule = deepcopy(visit_schedule1)
     for schedule_name, schedule in visit_schedule.schedules.items():
         visit_collection = VisitCollection()
         for k, v in schedule.visits.items():
             v.facility_name = facility_name
             visit_collection.update({k: v})
         schedule.visits = visit_collection
         visit_schedule.schedules[schedule_name] = schedule
     site_visit_schedules._registry = {}
     site_visit_schedules.register(visit_schedule=visit_schedule)
     visit_schedule = site_visit_schedules.get_visit_schedule(
         visit_schedule.name)
     for schedule_name, schedule in visit_schedule.schedules.items():
         for k, v in schedule.visits.items():
             self.assertEqual(v.facility_name, facility_name)
示例#34
0
    def setUp(self):

        self.user = User.objects.create(username="******")

        for name in [
                "one", "two", "three", "four", "five", "six", "seven", "eight",
                "nine"
        ]:
            Panel.objects.create(name=name)

        site_visit_schedules._registry = {}
        site_visit_schedules.loaded = False
        site_visit_schedules.register(visit_schedule)

        register_to_site_reference_configs()
        site_reference_configs.register_from_visit_schedule(
            visit_models={
                "edc_appointment.appointment": "edc_metadata.subjectvisit"
            })

        self.subject_identifier = "1111111"
        self.assertEqual(CrfMetadata.objects.all().count(), 0)
        self.assertEqual(RequisitionMetadata.objects.all().count(), 0)

        subject_consent = SubjectConsent.objects.create(
            subject_identifier=self.subject_identifier,
            consent_datetime=get_utcnow())
        _, self.schedule = site_visit_schedules.get_by_onschedule_model(
            "edc_metadata.onschedule")
        self.schedule.put_on_schedule(
            subject_identifier=self.subject_identifier,
            onschedule_datetime=subject_consent.consent_datetime,
        )
        self.appointment = Appointment.objects.get(
            subject_identifier=self.subject_identifier,
            visit_code=self.schedule.visits.first.code,
        )
        self.subject_visit = SubjectVisit.objects.create(
            appointment=self.appointment,
            subject_identifier=self.subject_identifier,
            reason=SCHEDULED,
        )
示例#35
0
 def setUp(self):
     site_visit_schedules._registry = {}
     site_visit_schedules.register(visit_schedule)
     self.subject_identifier = "1111111111"
     self.lab_helper.setup_site_labs()
     self.panel = self.lab_helper.panel
     SubjectConsent.objects.create(
         subject_identifier=self.subject_identifier,
         consent_datetime=get_utcnow(),
         identity="1111111",
         confirm_identity="1111111",
         visit_schedule_name="visit_schedule",
         schedule_name="schedule",
         site=Site.objects.get_current(),
     )
     appointment = Appointment.objects.get(visit_code="1000")
     self.subject_visit = SubjectVisit.objects.create(
         appointment=appointment,
         report_datetime=get_utcnow(),
         reason=SCHEDULED)
示例#36
0
    def test_bad_offschedule1(self):
        site_visit_schedules.loaded = False
        site_visit_schedules._registry = {}
        site_visit_schedules.register(visit_schedule6)

        SubjectConsent.objects.create(
            subject_identifier=self.subject_identifier,
            consent_datetime=get_utcnow() - relativedelta(years=2),
        )
        OnScheduleSix.objects.create(
            subject_identifier=self.subject_identifier,
            onschedule_datetime=get_utcnow() - relativedelta(years=2),
        )

        self.assertRaises(
            ImproperlyConfigured,
            BadOffSchedule1.objects.create,
            subject_identifier=self.subject_identifier,
            my_offschedule_date=get_utcnow(),
        )
示例#37
0
    def test_offschedule_custom_field_datetime(self):
        site_visit_schedules.loaded = False
        site_visit_schedules._registry = {}
        site_visit_schedules.register(visit_schedule5)

        SubjectConsent.objects.create(
            subject_identifier=self.subject_identifier,
            consent_datetime=get_utcnow() - relativedelta(years=2),
        )
        OnScheduleFive.objects.create(
            subject_identifier=self.subject_identifier,
            onschedule_datetime=get_utcnow() - relativedelta(years=2),
        )

        offschedule_datetime = get_utcnow() - relativedelta(years=1)
        obj = OffScheduleFive.objects.create(
            subject_identifier=self.subject_identifier,
            my_offschedule_datetime=offschedule_datetime,
        )
        self.assertEqual(obj.my_offschedule_datetime, offschedule_datetime)
        self.assertEqual(obj.offschedule_datetime, offschedule_datetime)
示例#38
0
    def test_offschedule_no_meta_defaults_offschedule_field(self):
        site_visit_schedules.loaded = False
        site_visit_schedules._registry = {}
        site_visit_schedules.register(visit_schedule7)

        SubjectConsent.objects.create(
            subject_identifier=self.subject_identifier,
            consent_datetime=get_utcnow() - relativedelta(years=2),
        )
        OnScheduleSeven.objects.create(
            subject_identifier=self.subject_identifier,
            onschedule_datetime=get_utcnow() - relativedelta(years=2),
        )

        offschedule_datetime = get_utcnow()
        obj = OffScheduleSeven.objects.create(
            subject_identifier=self.subject_identifier,
            offschedule_datetime=offschedule_datetime,
        )

        self.assertEqual(obj.offschedule_datetime, offschedule_datetime)
示例#39
0
 def setUp(self):
     site_visit_schedules.loaded = False
     site_visit_schedules._registry = {}
     site_visit_schedules.register(visit_schedule)
     site_reference_configs.register_from_visit_schedule(visit_models={
         "edc_appointment.appointment":
         "visit_schedule_app.subjectvisit"
     })
     v1_consent = Consent(
         "visit_schedule_app.subjectconsent",
         version="1",
         start=Protocol().study_open_datetime,
         end=Protocol().study_close_datetime,
         age_min=18,
         age_is_adult=18,
         age_max=64,
         gender=[MALE, FEMALE],
     )
     self.subject_identifier = "1234"
     site_consents.registry = {}
     site_consents.register(v1_consent)
 def test_requires_consent(self):
     site_visit_schedules._registry = {}
     site_visit_schedules.register(visit_schedule)
     self.consent_object_factory()
     consent_obj = mommy.make_recipe(
         'edc_consent.subjectconsent',
         subject_identifier=self.subject_identifier,
         consent_datetime=self.study_open_datetime + relativedelta(months=1))
     self.assertRaises(
         SiteConsentError,
         CrfOne.objects.create,
         subject_identifier='12345',
         report_datetime=get_utcnow())
     try:
         CrfOne.objects.create(
             subject_identifier='12345',
             report_datetime=self.study_open_datetime + relativedelta(months=1))
     except (SiteConsentError, NotConsentedError) as e:
         self.fail(f'Exception unexpectedly raised. Got {e}')
     consent_obj.delete()
     self.assertRaises(
         NotConsentedError,
         CrfOne.objects.create,
         subject_identifier='12345',
         report_datetime=self.study_open_datetime + relativedelta(months=1))
     self.assertRaises(
         NotConsentedError,
         SubjectLocator.objects.create,
         subject_identifier='12345',
         report_datetime=self.study_open_datetime - relativedelta(months=1))
     try:
         SubjectLocator.objects.create(
             subject_identifier='12345',
             report_datetime=self.study_open_datetime + relativedelta(months=1))
     except NotConsentedError as e:
         self.fail(f'NotConsentedError unexpectedly raised. Got {e}')
 def setUp(self):
     site_visit_schedules._registry = {}
     site_visit_schedules.register(visit_schedule)
     super().setUp()