diff --git a/smash/web/api_views/serialization_utils.py b/smash/web/api_views/serialization_utils.py
index c1e857ed889a0973ead5f9dd0a8c5e644c32527d..89e2c9c19c2eb5aa958a17165fe12d440b842c58 100644
--- a/smash/web/api_views/serialization_utils.py
+++ b/smash/web/api_views/serialization_utils.py
@@ -41,8 +41,8 @@ def serialize_datetime(date):
 
 
 def add_column(result, name, field_name, column_list, param, columns_used_in_study=None, visible_param=None,
-               sortable=True):
-    add = True
+               sortable=True, add_param=True):
+    add = add_param
     if columns_used_in_study:
         add = getattr(columns_used_in_study, field_name)
     if add:
diff --git a/smash/web/api_views/subject.py b/smash/web/api_views/subject.py
index 5500f2f1b978d696a7645c3a6a8918173473bf2b..f0f7385225b4f185dce5fb17ef5920bc87c854f6 100644
--- a/smash/web/api_views/subject.py
+++ b/smash/web/api_views/subject.py
@@ -17,6 +17,7 @@ from web.views.notifications import get_subjects_with_no_visit, get_subjects_wit
 logger = logging.getLogger(__name__)
 
 
+# noinspection PyUnusedLocal
 @login_required
 def cities(request):
     result_subjects = Subject.objects.filter(city__isnull=False).values_list('city').distinct()
@@ -25,6 +26,7 @@ def cities(request):
     })
 
 
+# noinspection PyUnusedLocal
 @login_required
 def referrals(request):
     result_subjects = StudySubject.objects.filter(referral__isnull=False).values_list('referral').distinct()
@@ -56,6 +58,12 @@ def get_subject_columns(request, subject_list_type):
     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, "Health partner name", "health_partner_first_name", None, "string_filter",
+               add_param=study.columns.health_partner,
+               visible_param=study_subject_columns.health_partner)
+    add_column(result, "Health partner last name", "health_partner_last_name", None, "string_filter",
+               add_param=study.columns.health_partner,
+               visible_param=study_subject_columns.health_partner)
     add_column(result, "Location", "default_location", study_subject_columns, "location_filter", study.columns)
     add_column(result, "Flying team location", "flying_team", study_subject_columns, "flying_team_filter",
                study.columns)
@@ -117,6 +125,10 @@ 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 == "health_partner_first_name":
+        result = subjects_to_be_ordered.order_by(order_direction + 'health_partner__first_name')
+    elif order_column == "health_partner_last_name":
+        result = subjects_to_be_ordered.order_by(order_direction + 'health_partner__last_name')
     elif order_column == "social_security_number":
         result = subjects_to_be_ordered.order_by(order_direction + 'subject__social_security_number')
     elif order_column == "postponed":
@@ -229,6 +241,10 @@ 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 == "health_partner_first_name":
+            result = result.filter(health_partner__first_name__icontains=value)
+        elif column == "health_partner_last_name":
+            result = result.filter(health_partner__last_name__icontains=value)
         elif column == "social_security_number":
             result = result.filter(subject__social_security_number__icontains=value)
         elif column == "default_location":
@@ -294,6 +310,7 @@ def subjects(request, type):
         return e500_error(request)
 
 
+# noinspection PyUnusedLocal
 @login_required
 def types(request):
     data = [{"id": subject_type_id, "name": subject_type_name} for subject_type_id, subject_type_name in
@@ -343,6 +360,12 @@ def serialize_subject(study_subject):
 
     else:
         last_contact_attempt_string = ""
+    health_partner_first_name = ""
+    if study_subject.health_partner:
+        health_partner_first_name = study_subject.health_partner.first_name
+    health_partner_last_name = ""
+    if study_subject.health_partner:
+        health_partner_last_name = study_subject.health_partner.last_name
     result = {
         "first_name": study_subject.subject.first_name,
         "last_name": study_subject.subject.last_name,
@@ -358,6 +381,8 @@ 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),
+        "health_partner_first_name": health_partner_first_name,
+        "health_partner_last_name": health_partner_last_name,
         "social_security_number": study_subject.subject.social_security_number,
         "type": study_subject.get_type_display(),
         "id": study_subject.id,