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

virus data are filled in loop instead of copy paste

parent 75cb53ff
No related branches found
No related tags found
1 merge request!253Resolve "import of serology data"
import logging import logging
import re import re
from django.db.models import Count, Case, When, Min, Max from django.db.models import Count, Case, When, Min, Max
from django.db.models import Q from django.db.models import Q
from django.http import JsonResponse from django.http import JsonResponse
...@@ -90,8 +91,8 @@ def get_subject_columns(request, subject_list_type): ...@@ -90,8 +91,8 @@ def get_subject_columns(request, subject_list_type):
visit_numbers = range(1, study.visits_to_show_in_subject_list + 1) visit_numbers = range(1, study.visits_to_show_in_subject_list + 1)
for one_based_idx, virus_visit_number in enumerate(virus_visit_numbers, 1): for one_based_idx, virus_visit_number in enumerate(virus_visit_numbers, 1):
add_column(result, add_column(result,
'Virus {} RT-PCR'.format(virus_visit_number), 'Virus {} RT-PCR'.format(virus_visit_number),
'virus_test_{}'.format(one_based_idx), #always starts in 1 'virus_test_{}'.format(one_based_idx), #always starts in 1
study_subject_columns, study_subject_columns,
'yes_no_null_inconclusive_filter', study.columns) 'yes_no_null_inconclusive_filter', study.columns)
...@@ -118,10 +119,10 @@ def get_subject_columns(request, subject_list_type): ...@@ -118,10 +119,10 @@ def get_subject_columns(request, subject_list_type):
add_column(result, "Type", "type", study_subject_columns, "type_filter", study.columns) add_column(result, "Type", "type", study_subject_columns, "type_filter", study.columns)
add_column(result, "Edit", "edit", None, None, sortable=False) add_column(result, "Edit", "edit", None, None, sortable=False)
for one_based_idx, visit_number in enumerate(visit_numbers, 1): for one_based_idx, visit_number in enumerate(visit_numbers, 1):
visit_key = "visit_{}".format(one_based_idx) #always starts in 1 visit_key = "visit_{}".format(one_based_idx) #always starts in 1
add_column(result, "Visit {}".format(visit_number), visit_key, None, add_column(result, "Visit {}".format(visit_number), visit_key, None,
"visit_filter", visible_param=study_subject_list.visits) "visit_filter", visible_param=study_subject_list.visits)
return JsonResponse({"columns": result}) return JsonResponse({"columns": result})
...@@ -215,15 +216,15 @@ def get_subjects_order(subjects_to_be_ordered, order_column, order_direction, co ...@@ -215,15 +216,15 @@ def get_subjects_order(subjects_to_be_ordered, order_column, order_direction, co
elif str(order_column).startswith("visit_"): elif str(order_column).startswith("visit_"):
visit_number = get_visit_number_from_visit_x_string(order_column) visit_number = get_visit_number_from_visit_x_string(order_column)
result = order_by_visit(subjects_to_be_ordered, order_direction, visit_number) result = order_by_visit(subjects_to_be_ordered, order_direction, visit_number)
elif re.search(r'^virus_test_[1-5]$',order_column): elif re.search(r'^virus_test_[1-5]$', order_column):
result = subjects_to_be_ordered.order_by(order_direction + order_column) result = subjects_to_be_ordered.order_by(order_direction + order_column)
elif re.search(r'^virus_test_[1-5]_updated$',order_column): elif re.search(r'^virus_test_[1-5]_updated$', order_column):
result = subjects_to_be_ordered.order_by(order_direction + order_column) result = subjects_to_be_ordered.order_by(order_direction + order_column)
elif re.search(r'^virus_test_[1-5]_collection_date',order_column): elif re.search(r'^virus_test_[1-5]_collection_date', order_column):
result = subjects_to_be_ordered.order_by(order_direction + order_column) result = subjects_to_be_ordered.order_by(order_direction + order_column)
elif re.search(r'^virus_test_[1-5]_iga_status',order_column): elif re.search(r'^virus_test_[1-5]_iga_status', order_column):
result = subjects_to_be_ordered.order_by(order_direction + order_column) result = subjects_to_be_ordered.order_by(order_direction + order_column)
elif re.search(r'^virus_test_[1-5]_igg_status',order_column): elif re.search(r'^virus_test_[1-5]_igg_status', order_column):
result = subjects_to_be_ordered.order_by(order_direction + order_column) result = subjects_to_be_ordered.order_by(order_direction + order_column)
else: else:
logger.warn("Unknown sort column: " + str(order_column)) logger.warn("Unknown sort column: " + str(order_column))
...@@ -360,25 +361,25 @@ def get_subjects_filtered(subjects_to_be_filtered, filters): ...@@ -360,25 +361,25 @@ def get_subjects_filtered(subjects_to_be_filtered, filters):
else: else:
result = result.filter(virus_test_5=(value == "true")) result = result.filter(virus_test_5=(value == "true"))
elif column == "virus_test_1_iga_status": elif column == "virus_test_1_iga_status":
result = result.filter( virus_test_1_iga_status=value) result = result.filter(virus_test_1_iga_status=value)
elif column == "virus_test_1_igg_status": elif column == "virus_test_1_igg_status":
result = result.filter( virus_test_1_igg_status=value) result = result.filter(virus_test_1_igg_status=value)
elif column == "virus_test_2_iga_status": elif column == "virus_test_2_iga_status":
result = result.filter( virus_test_2_iga_status=value) result = result.filter(virus_test_2_iga_status=value)
elif column == "virus_test_2_igg_status": elif column == "virus_test_2_igg_status":
result = result.filter( virus_test_2_igg_status=value) result = result.filter(virus_test_2_igg_status=value)
elif column == "virus_test_3_iga_status": elif column == "virus_test_3_iga_status":
result = result.filter( virus_test_3_iga_status=value) result = result.filter(virus_test_3_iga_status=value)
elif column == "virus_test_3_igg_status": elif column == "virus_test_3_igg_status":
result = result.filter( virus_test_3_igg_status=value) result = result.filter(virus_test_3_igg_status=value)
elif column == "virus_test_4_iga_status": elif column == "virus_test_4_iga_status":
result = result.filter( virus_test_4_iga_status=value) result = result.filter(virus_test_4_iga_status=value)
elif column == "virus_test_4_igg_status": elif column == "virus_test_4_igg_status":
result = result.filter( virus_test_4_igg_status=value) result = result.filter(virus_test_4_igg_status=value)
elif column == "virus_test_5_iga_status": elif column == "virus_test_5_iga_status":
result = result.filter( virus_test_5_iga_status=value) result = result.filter(virus_test_5_iga_status=value)
elif column == "virus_test_5_igg_status": elif column == "virus_test_5_igg_status":
result = result.filter( virus_test_5_igg_status=value) result = result.filter(virus_test_5_igg_status=value)
elif column == "brain_donation_agreement": elif column == "brain_donation_agreement":
result = result.filter(brain_donation_agreement=(value == "true")) result = result.filter(brain_donation_agreement=(value == "true"))
elif column == "postponed": elif column == "postponed":
...@@ -544,31 +545,6 @@ def serialize_subject(study_subject): ...@@ -544,31 +545,6 @@ def serialize_subject(study_subject):
"dead": bool_to_yes_no(study_subject.subject.dead), "dead": bool_to_yes_no(study_subject.subject.dead),
"resigned": bool_to_yes_no(study_subject.resigned), "resigned": bool_to_yes_no(study_subject.resigned),
"endpoint_reached": bool_to_yes_no(study_subject.endpoint_reached), "endpoint_reached": bool_to_yes_no(study_subject.endpoint_reached),
"virus_test_1": virus_test_to_str(study_subject.virus_test_1, study_subject.virus_test_1_updated),
"virus_test_2": virus_test_to_str(study_subject.virus_test_2, study_subject.virus_test_2_updated),
"virus_test_3": virus_test_to_str(study_subject.virus_test_3, study_subject.virus_test_3_updated),
"virus_test_4": virus_test_to_str(study_subject.virus_test_4, study_subject.virus_test_4_updated),
"virus_test_5": virus_test_to_str(study_subject.virus_test_5, study_subject.virus_test_5_updated),
"virus_test_1_updated": study_subject.virus_test_1_updated,
"virus_test_2_updated": study_subject.virus_test_2_updated,
"virus_test_3_updated": study_subject.virus_test_3_updated,
"virus_test_4_updated": study_subject.virus_test_4_updated,
"virus_test_5_updated": study_subject.virus_test_5_updated,
"virus_test_1_collection_date": study_subject.virus_test_1_collection_date,
"virus_test_2_collection_date": study_subject.virus_test_2_collection_date,
"virus_test_3_collection_date": study_subject.virus_test_3_collection_date,
"virus_test_4_collection_date": study_subject.virus_test_4_collection_date,
"virus_test_5_collection_date": study_subject.virus_test_5_collection_date,
"virus_test_1_iga_status": study_subject.virus_test_1_iga_status,
"virus_test_1_igg_status": study_subject.virus_test_1_igg_status,
"virus_test_2_iga_status": study_subject.virus_test_2_iga_status,
"virus_test_2_igg_status": study_subject.virus_test_2_igg_status,
"virus_test_3_iga_status": study_subject.virus_test_3_iga_status,
"virus_test_3_igg_status": study_subject.virus_test_3_igg_status,
"virus_test_4_iga_status": study_subject.virus_test_4_iga_status,
"virus_test_4_igg_status": study_subject.virus_test_4_igg_status,
"virus_test_5_iga_status": study_subject.virus_test_5_iga_status,
"virus_test_5_igg_status": study_subject.virus_test_5_igg_status,
"postponed": bool_to_yes_no(study_subject.postponed), "postponed": bool_to_yes_no(study_subject.postponed),
"brain_donation_agreement": bool_to_yes_no(study_subject.brain_donation_agreement), "brain_donation_agreement": bool_to_yes_no(study_subject.brain_donation_agreement),
"excluded": bool_to_yes_no(study_subject.excluded), "excluded": bool_to_yes_no(study_subject.excluded),
...@@ -580,4 +556,12 @@ def serialize_subject(study_subject): ...@@ -580,4 +556,12 @@ def serialize_subject(study_subject):
"id": study_subject.id, "id": study_subject.id,
"visits": serialized_visits, "visits": serialized_visits,
} }
for i in range(1, 6):
result['virus_test_{}'.format(i)] = virus_test_to_str(getattr(study_subject, "virus_test_{}".format(i)),
getattr(study_subject, "virus_test_{}_updated".format(i)))
result["virus_test_{}_updated".format(i)] = getattr(study_subject, "virus_test_{}_updated".format(i))
result["virus_test_{}_collection_date".format(i)] = getattr(study_subject,
"virus_test_{}_collection_date".format(i))
result["virus_test_{}_iga_status".format(i)] = getattr(study_subject, "virus_test_{}_iga_status".format(i))
result["virus_test_{}_igg_status".format(i)] = getattr(study_subject, "virus_test_{}_igg_status".format(i))
return result return result
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