diff --git a/smash/web/api_views/subject.py b/smash/web/api_views/subject.py index 946b45b25de13468f0322604072b172b1fa9581a..7e04327593454621d23ffe3c42818551e65aa5fd 100644 --- a/smash/web/api_views/subject.py +++ b/smash/web/api_views/subject.py @@ -67,8 +67,9 @@ def get_subject_columns(request, subject_list_type): add_column(result, "First name", "first_name", subject_columns, "string_filter") add_column(result, "Last name", "last_name", subject_columns, "string_filter") add_column(result, "Date of birth", "date_born", subject_columns, None) - add_column(result, "Contact on", "datetime_contact_reminder", study_subject_columns, None) + add_column(result, "Contact on", "datetime_contact_reminder", study_subject_columns, None, study.columns) add_column(result, "Last contact attempt", "last_contact_attempt", study_subject_list, None) + add_column(result, "Referred by", "referral", study_subject_columns, "string_filter", study.columns) add_column(result, "Location", "default_location", study_subject_columns, "location_filter", study.columns) add_column(result, "Deceased", "dead", subject_columns, "yes_no_filter") add_column(result, "Resigned", "resigned", study_subject_columns, "yes_no_filter", study.columns) @@ -118,6 +119,8 @@ def get_subjects_order(subjects_to_be_ordered, order_column, order_direction): result = subjects_to_be_ordered.order_by(order_direction + 'subject__last_name') elif order_column == "nd_number": result = subjects_to_be_ordered.order_by(order_direction + 'nd_number') + elif order_column == "referral": + result = subjects_to_be_ordered.order_by(order_direction + 'referral') elif order_column == "screening_number": result = subjects_to_be_ordered.order_by(order_direction + 'screening_number') elif order_column == "default_location": @@ -226,6 +229,8 @@ def get_subjects_filtered(subjects_to_be_filtered, filters): result = result.filter(subject__last_name__icontains=value) elif column == "nd_number": result = result.filter(nd_number__icontains=value) + elif column == "referral": + result = result.filter(referral__icontains=value) elif column == "screening_number": result = result.filter(screening_number__icontains=value) elif column == "dead": @@ -370,6 +375,7 @@ def serialize_subject(study_subject): "last_contact_attempt": last_contact_attempt_string, "nd_number": study_subject.nd_number, "screening_number": study_subject.screening_number, + "referral": study_subject.referral, "default_location": location, "dead": get_yes_no(study_subject.subject.dead), "resigned": get_yes_no(study_subject.resigned), diff --git a/smash/web/tests/api_views/test_subject.py b/smash/web/tests/api_views/test_subject.py index 71f3adc756e5c49e2cd25ceba76ad23e3aacdc78..c16d85bb63849d34ba62fdc22b294a6b3303fd90 100644 --- a/smash/web/tests/api_views/test_subject.py +++ b/smash/web/tests/api_views/test_subject.py @@ -229,6 +229,17 @@ class TestApi(TestCase): self.check_subject_ordered("last_name", [subject, subject2]) + def test_subjects_sort_referral(self): + subject = self.study_subject + subject.referral = "XXX" + subject.save() + + subject2 = create_study_subject(2) + subject2.referral = "YYY" + subject2.save() + + self.check_subject_ordered("referral", [subject, subject2]) + def test_subjects_sort_dead(self): study_subject = self.study_subject study_subject.subject.dead = True