Exemplo n.º 1
0
    def test_deletes_appointments_with_unscheduled(self):
        """Asserts manager method can delete appointments."""
        self.helper.consent_and_put_on_schedule()
        appointments = Appointment.objects.filter(
            subject_identifier=self.subject_identifier)
        self.assertEqual(appointments.count(), 4)

        SubjectVisit.objects.create(
            appointment=appointments[0],
            report_datetime=appointments[0].appt_datetime,
            reason=SCHEDULED,
        )

        appointment = appointments[0]
        appointment.appt_status = INCOMPLETE_APPT
        appointment.save()

        self.helper.add_unscheduled_appointment(appointment)
        self.assertEqual(appointments.count(), 5)

        visit_schedule = site_visit_schedules.get_visit_schedule(
            visit_schedule_name=appointments[0].visit_schedule_name)
        schedule = visit_schedule.schedules.get(appointments[0].schedule_name)

        # this calls the manager method "delete_for_subject_after_date"
        schedule.take_off_schedule(
            subject_identifier=self.subject_identifier,
            offschedule_datetime=appointments[0].appt_datetime,
        )

        self.assertEqual(
            Appointment.objects.filter(
                subject_identifier=self.subject_identifier).count(),
            1,
        )
Exemplo n.º 2
0
    def next_appointment(self, **kwargs):
        """Returns the next appointment relative to the criteria or
        None if there is no next.

        For visit_code_sequence=0.

        Next is the next visit in a schedule, so schedule_name is required.

        For example:
            next_appointment = (Appointment.objects.
                first_appointment(appointment=appointment))
        or:
            next_appointment = Appointment.objects.first_appointment(
                visit_code=visit_code, appointment=appointment)
        or:
            next_appointment = Appointment.objects.first_appointment(
                visit_code=visit_code,
                subject_identifier=subject_identifier,
                visit_schedule_name=visit_schedule_name,
                schedule_name=schedule_name)
        """
        options = self.get_query_options(**kwargs)
        schedule = site_visit_schedules.get_visit_schedule(
            options.get("visit_schedule_name")).schedules.get(
                options.get("schedule_name"))
        options.update(
            visit_code=self.get_visit_code("next", schedule, **kwargs))
        try:
            next_appointment = self.filter(**options).order_by(
                "timepoint", "visit_code_sequence")[0]
        except IndexError:
            next_appointment = None
        return next_appointment
Exemplo n.º 3
0
    def test_deletes_appointments(self):
        """Asserts manager method can delete appointments."""
        self.helper.consent_and_put_on_schedule()
        appointments = Appointment.objects.filter(
            subject_identifier=self.subject_identifier)
        self.assertEqual(appointments.count(), 4)

        SubjectVisit.objects.create(
            appointment=appointments[0],
            report_datetime=appointments[0].appt_datetime,
            reason=SCHEDULED,
        )

        visit_schedule = site_visit_schedules.get_visit_schedule(
            visit_schedule_name=appointments[0].visit_schedule_name)
        schedule = visit_schedule.schedules.get(appointments[0].schedule_name)

        # this calls the manager method "delete_for_subject_after_date"
        schedule.offschedule_model_cls.objects.create(
            subject_identifier=self.subject_identifier,
            offschedule_datetime=appointments[0].appt_datetime,
        )

        self.assertEqual(
            Appointment.objects.filter(
                subject_identifier=self.subject_identifier).count(),
            1,
        )
Exemplo n.º 4
0
 def __init__(self):
     visit_schedule = site_visit_schedules.get_visit_schedule(
         "visit_schedule")
     for schedule in tqdm(visit_schedule.schedules.values()):
         for visit_code, visit in schedule.visits.items():
             for appointment in self.appointments_for(visit_code):
                 try:
                     subject_visit = SubjectVisit.objects.get(
                         appointment=appointment)
                 except ObjectDoesNotExist:
                     pass
                 else:
                     subject_visit.save()
                     for model_cls in tqdm([
                             ClinicalReviewBaseline, ClinicalReview,
                             Medications
                     ]):
                         try:
                             obj = model_cls.objects.get(
                                 subject_visit=subject_visit)
                         except ObjectDoesNotExist:
                             pass
                         else:
                             obj.update_reference_on_save()
                             obj.metadata_update()
                             obj.run_metadata_rules_for_crf()
Exemplo n.º 5
0
 def __init__(self, visit=None, **kwargs):
     """param visit is a visit model instance but the
     instance attr is not.
     """
     self.crf_creator = self.crf_creator_cls(visit=visit, **kwargs)
     self.requisition_creator = self.requisition_creator_cls(
         visit=visit, **kwargs)
     self.visit_code_sequence = visit.visit_code_sequence
     visit_schedule = site_visit_schedules.get_visit_schedule(
         visit.visit_schedule_name)
     schedule = visit_schedule.schedules.get(visit.schedule_name)
     self.visit = schedule.visits.get(visit.visit_code)
Exemplo n.º 6
0
 def dehydrate_offstudy(self, obj):
     visit_schedule = site_visit_schedules.get_visit_schedule(
         visit_schedule_name=obj.visit_schedule_name)
     schedule = visit_schedule.schedules.get(obj.schedule_name)
     try:
         off_schedule_obj = schedule.offschedule_model_cls.objects.get(
             subject_identifier=obj.subject_identifier,
             report_datetime__lte=obj.appt_datetime,
         )
     except ObjectDoesNotExist:
         return None
     return off_schedule_obj.offschedule_datetime
Exemplo n.º 7
0
 def __init__(
     self,
     update_keyed: bool,
     visit_model_instance: VisitModel,
 ) -> None:
     self.visit_model_instance: VisitModel = visit_model_instance
     self.update_keyed = update_keyed
     self.visit_code_sequence = self.visit_model_instance.visit_code_sequence
     self.visit = (site_visit_schedules.get_visit_schedule(
         self.visit_model_instance.visit_schedule_name).schedules.get(
             self.visit_model_instance.schedule_name).visits.get(
                 self.visit_model_instance.visit_code))
Exemplo n.º 8
0
    def previous_appointment(self, **kwargs):
        """Returns the previous appointment relative to the criteria
        or None if there is no previous.

        For visit_code_sequence=0.
        """
        options = self.get_query_options(**kwargs)
        schedule = site_visit_schedules.get_visit_schedule(
            options.get("visit_schedule_name")).schedules.get(
                options.get("schedule_name"))
        options.update(
            visit_code=self.get_visit_code("previous", schedule, **kwargs))
        try:
            previous_appointment = (self.filter(**options).order_by(
                "timepoint", "visit_code_sequence").reverse()[0])
        except IndexError:
            previous_appointment = None
        return previous_appointment