Skip to content
Snippets Groups Projects
Commit 99d6b4a2 authored by Piotr Gawron's avatar Piotr Gawron
Browse files

additional columns in subject list view

parent 82edf5b7
No related branches found
No related tags found
1 merge request!115Resolve "PDP study patient data"
...@@ -41,8 +41,8 @@ def serialize_datetime(date): ...@@ -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, def add_column(result, name, field_name, column_list, param, columns_used_in_study=None, visible_param=None,
sortable=True): sortable=True, add_param=True):
add = True add = add_param
if columns_used_in_study: if columns_used_in_study:
add = getattr(columns_used_in_study, field_name) add = getattr(columns_used_in_study, field_name)
if add: if add:
......
...@@ -17,6 +17,7 @@ from web.views.notifications import get_subjects_with_no_visit, get_subjects_wit ...@@ -17,6 +17,7 @@ from web.views.notifications import get_subjects_with_no_visit, get_subjects_wit
logger = logging.getLogger(__name__) logger = logging.getLogger(__name__)
# noinspection PyUnusedLocal
@login_required @login_required
def cities(request): def cities(request):
result_subjects = Subject.objects.filter(city__isnull=False).values_list('city').distinct() result_subjects = Subject.objects.filter(city__isnull=False).values_list('city').distinct()
...@@ -25,6 +26,7 @@ def cities(request): ...@@ -25,6 +26,7 @@ def cities(request):
}) })
# noinspection PyUnusedLocal
@login_required @login_required
def referrals(request): def referrals(request):
result_subjects = StudySubject.objects.filter(referral__isnull=False).values_list('referral').distinct() result_subjects = StudySubject.objects.filter(referral__isnull=False).values_list('referral').distinct()
...@@ -56,6 +58,12 @@ def get_subject_columns(request, subject_list_type): ...@@ -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, "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, "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, "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, "Location", "default_location", study_subject_columns, "location_filter", study.columns)
add_column(result, "Flying team location", "flying_team", study_subject_columns, "flying_team_filter", add_column(result, "Flying team location", "flying_team", study_subject_columns, "flying_team_filter",
study.columns) study.columns)
...@@ -117,6 +125,10 @@ def get_subjects_order(subjects_to_be_ordered, order_column, order_direction): ...@@ -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') result = subjects_to_be_ordered.order_by(order_direction + 'resigned')
elif order_column == "information_sent": elif order_column == "information_sent":
result = subjects_to_be_ordered.order_by(order_direction + '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": elif order_column == "social_security_number":
result = subjects_to_be_ordered.order_by(order_direction + 'subject__social_security_number') result = subjects_to_be_ordered.order_by(order_direction + 'subject__social_security_number')
elif order_column == "postponed": elif order_column == "postponed":
...@@ -229,6 +241,10 @@ def get_subjects_filtered(subjects_to_be_filtered, filters): ...@@ -229,6 +241,10 @@ def get_subjects_filtered(subjects_to_be_filtered, filters):
result = result.filter(postponed=(value == "true")) result = result.filter(postponed=(value == "true"))
elif column == "information_sent": elif column == "information_sent":
result = result.filter(information_sent=(value == "true")) 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": elif column == "social_security_number":
result = result.filter(subject__social_security_number__icontains=value) result = result.filter(subject__social_security_number__icontains=value)
elif column == "default_location": elif column == "default_location":
...@@ -294,6 +310,7 @@ def subjects(request, type): ...@@ -294,6 +310,7 @@ def subjects(request, type):
return e500_error(request) return e500_error(request)
# noinspection PyUnusedLocal
@login_required @login_required
def types(request): def types(request):
data = [{"id": subject_type_id, "name": subject_type_name} for subject_type_id, subject_type_name in 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): ...@@ -343,6 +360,12 @@ def serialize_subject(study_subject):
else: else:
last_contact_attempt_string = "" 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 = { result = {
"first_name": study_subject.subject.first_name, "first_name": study_subject.subject.first_name,
"last_name": study_subject.subject.last_name, "last_name": study_subject.subject.last_name,
...@@ -358,6 +381,8 @@ def serialize_subject(study_subject): ...@@ -358,6 +381,8 @@ def serialize_subject(study_subject):
"resigned": bool_to_yes_no(study_subject.resigned), "resigned": bool_to_yes_no(study_subject.resigned),
"postponed": bool_to_yes_no(study_subject.postponed), "postponed": bool_to_yes_no(study_subject.postponed),
"information_sent": bool_to_yes_no(study_subject.information_sent), "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, "social_security_number": study_subject.subject.social_security_number,
"type": study_subject.get_type_display(), "type": study_subject.get_type_display(),
"id": study_subject.id, "id": study_subject.id,
......
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