Skip to content
Snippets Groups Projects
Commit 8f27f6a3 authored by Valentin Groues's avatar Valentin Groues :eyes:
Browse files

Merge branch '219-exceeded-visit-status' into 'master'

Resolve "exceeded visit status"

Closes #219

See merge request NCER-PD/scheduling-system!152
parents c0070e26 a18c3e66
No related branches found
No related tags found
1 merge request!152Resolve "exceeded visit status"
Pipeline #6303 failed
...@@ -199,11 +199,11 @@ def filter_by_visit(result, visit_number, visit_type): ...@@ -199,11 +199,11 @@ def filter_by_visit(result, visit_number, visit_type):
elif visit_type == "EXCEED": elif visit_type == "EXCEED":
result = result.filter(**{datetime_begin_filter + "__lt": get_today_midnight_date()}). \ result = result.filter(**{datetime_begin_filter + "__lt": get_today_midnight_date()}). \
filter(**{is_finished_filter: 0}). \ filter(**{is_finished_filter: 0}). \
filter(**{scheduled_appointments_filter: 0}). \
filter(**{datetime_end_filter + "__lt": get_today_midnight_date()}) filter(**{datetime_end_filter + "__lt": get_today_midnight_date()})
elif visit_type == "IN_PROGRESS": elif visit_type == "IN_PROGRESS":
result = result.filter(**{datetime_begin_filter + "__lt": get_today_midnight_date()}). \ result = result.filter(**{datetime_begin_filter + "__lt": get_today_midnight_date()}). \
filter(**{is_finished_filter: 0}). \ filter(**{is_finished_filter: 0}). \
filter(**{datetime_end_filter + "__gt": get_today_midnight_date()}). \
filter(**{scheduled_appointments_filter + "__gt": 0}) filter(**{scheduled_appointments_filter + "__gt": 0})
elif visit_type == "SHOULD_BE_IN_PROGRESS": elif visit_type == "SHOULD_BE_IN_PROGRESS":
result = result.filter(**{datetime_begin_filter + "__lt": get_today_midnight_date()}). \ result = result.filter(**{datetime_begin_filter + "__lt": get_today_midnight_date()}). \
...@@ -330,7 +330,12 @@ def serialize_subject(study_subject): ...@@ -330,7 +330,12 @@ def serialize_subject(study_subject):
else: else:
status = "MISSED" status = "MISSED"
elif visit.datetime_end < get_today_midnight_date(): elif visit.datetime_end < get_today_midnight_date():
status = "EXCEEDED" scheduled_appointments_count = visit.appointment_set.filter(
status=Appointment.APPOINTMENT_STATUS_SCHEDULED).count()
if scheduled_appointments_count > 0:
status = "IN_PROGRESS"
else:
status = "EXCEEDED"
else: else:
scheduled_appointments_count = visit.appointment_set.filter( scheduled_appointments_count = visit.appointment_set.filter(
status=Appointment.APPOINTMENT_STATUS_SCHEDULED).count() status=Appointment.APPOINTMENT_STATUS_SCHEDULED).count()
......
...@@ -183,6 +183,45 @@ class NotificationViewTests(LoggedInTestCase): ...@@ -183,6 +183,45 @@ class NotificationViewTests(LoggedInTestCase):
self.assertTrue(visits[0].datetime_begin < visits[1].datetime_begin) self.assertTrue(visits[0].datetime_begin < visits[1].datetime_begin)
self.assertTrue(visits[1].datetime_begin < visits[2].datetime_begin) self.assertTrue(visits[1].datetime_begin < visits[2].datetime_begin)
def test_get_exceeded_visits(self):
subject = create_study_subject()
visit = create_visit(subject)
visit.datetime_begin = get_today_midnight_date() + datetime.timedelta(days=-12)
visit.datetime_end = get_today_midnight_date() + datetime.timedelta(days=-10)
visit.visit_number = 1
visit.is_finished = True
visit.save()
visit = create_visit(subject)
visit.datetime_begin = get_today_midnight_date() + datetime.timedelta(days=-10)
visit.datetime_end = get_today_midnight_date() + datetime.timedelta(days=-8)
visit.visit_number = 2
visit.save()
visits = get_exceeded_visits(self.user)
self.assertEquals(1, visits.count())
def test_get_exceeded_visits_with_scheduled_appointment(self):
subject = create_study_subject()
visit = create_visit(subject)
visit.datetime_begin = get_today_midnight_date() + datetime.timedelta(days=-12)
visit.datetime_end = get_today_midnight_date() + datetime.timedelta(days=-10)
visit.visit_number = 1
visit.is_finished = True
visit.save()
visit = create_visit(subject)
visit.datetime_begin = get_today_midnight_date() + datetime.timedelta(days=-10)
visit.datetime_end = get_today_midnight_date() + datetime.timedelta(days=-8)
visit.visit_number = 2
visit.save()
create_appointment(visit)
visits = get_exceeded_visits(self.user)
self.assertEquals(0, visits.count())
def test_get_approaching_visits_without_appointments_count(self): def test_get_approaching_visits_without_appointments_count(self):
original_notification = get_approaching_visits_without_appointments_count(self.user) original_notification = get_approaching_visits_without_appointments_count(self.user)
subject = create_study_subject() subject = create_study_subject()
......
...@@ -244,7 +244,9 @@ def get_exceeded_visits(user): ...@@ -244,7 +244,9 @@ def get_exceeded_visits(user):
).filter( ).filter(
# by default any visit where visit number is bigger than 1 # by default any visit where visit number is bigger than 1
# or in case of first visit - visits that had some successful appointment # or in case of first visit - visits that had some successful appointment
Q(visit_number__gt=1) | Q(appointment__status=Appointment.APPOINTMENT_STATUS_FINISHED)).order_by( Q(visit_number__gt=1) | Q(appointment__status=Appointment.APPOINTMENT_STATUS_FINISHED)).filter(
# visits that have scheduled appointments should be excluded
~Q(appointment__status=Appointment.APPOINTMENT_STATUS_SCHEDULED)).order_by(
'datetime_begin') 'datetime_begin')
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment