From 82edf5b77d9667a4d0815bc17ee28f20ee93e60f Mon Sep 17 00:00:00 2001
From: Piotr Gawron <piotr.gawron@uni.lu>
Date: Mon, 11 Dec 2017 18:22:45 +0100
Subject: [PATCH] list of columns includes social security number

---
 smash/web/api_views/subject.py | 6 ++++++
 1 file changed, 6 insertions(+)

diff --git a/smash/web/api_views/subject.py b/smash/web/api_views/subject.py
index ac069955..5500f2f1 100644
--- a/smash/web/api_views/subject.py
+++ b/smash/web/api_views/subject.py
@@ -51,6 +51,7 @@ def get_subject_columns(request, subject_list_type):
     add_column(result, "Screening", "screening_number", study_subject_columns, "string_filter", study.columns)
     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, "Social Security Number", "social_security_number", 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, study.columns)
     add_column(result, "Last contact attempt", "last_contact_attempt", study_subject_list, None)
@@ -116,6 +117,8 @@ def get_subjects_order(subjects_to_be_ordered, order_column, order_direction):
         result = subjects_to_be_ordered.order_by(order_direction + 'resigned')
     elif order_column == "information_sent":
         result = subjects_to_be_ordered.order_by(order_direction + 'information_sent')
+    elif order_column == "social_security_number":
+        result = subjects_to_be_ordered.order_by(order_direction + 'subject__social_security_number')
     elif order_column == "postponed":
         result = subjects_to_be_ordered.order_by(order_direction + 'postponed')
     elif order_column == "type":
@@ -226,6 +229,8 @@ def get_subjects_filtered(subjects_to_be_filtered, filters):
             result = result.filter(postponed=(value == "true"))
         elif column == "information_sent":
             result = result.filter(information_sent=(value == "true"))
+        elif column == "social_security_number":
+            result = result.filter(subject__social_security_number__icontains=value)
         elif column == "default_location":
             result = result.filter(default_location=value)
         elif column == "flying_team":
@@ -353,6 +358,7 @@ def serialize_subject(study_subject):
         "resigned": bool_to_yes_no(study_subject.resigned),
         "postponed": bool_to_yes_no(study_subject.postponed),
         "information_sent": bool_to_yes_no(study_subject.information_sent),
+        "social_security_number": study_subject.subject.social_security_number,
         "type": study_subject.get_type_display(),
         "id": study_subject.id,
         "visits": serialized_visits,
-- 
GitLab