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

there must be date in the visit to mark is as finished when importing from redcap

parent 0aa8b2a1
No related branches found
No related tags found
1 merge request!242there must be date in the visit to mark is as finished when importing from redcap
Pipeline #25344 passed
# -*- coding: utf-8 -*-
# Generated by Django 1.10.3 on 2017-04-04 09:43
from __future__ import unicode_literals
from django.db import migrations
from web.models.constants import RED_CAP_SAMPLE_DATE_FIELD_TYPE
def create_item(apps, type, value, name):
# We can't import the ConfigurationItem model directly as it may be a newer
# version than this migration expects. We use the historical version.
ConfigurationItem = apps.get_model("web", "ConfigurationItem")
item = ConfigurationItem.objects.create()
item.type = type
item.value = value
item.name = name
item.save()
def configuration_items(apps, schema_editor):
create_item(apps, RED_CAP_SAMPLE_DATE_FIELD_TYPE, "",
"Redcap field for sample date in the visit")
class Migration(migrations.Migration):
dependencies = [
('web', '0163_study_redcap_first_visit_number'),
]
operations = [
migrations.RunPython(configuration_items),
]
......@@ -62,6 +62,7 @@ RED_CAP_SEX_FIELD_TYPE = 'RED_CAP_SEX_FIELD_TYPE'
RED_CAP_DATE_BORN_FIELD_TYPE = 'RED_CAP_DATE_BORN_FIELD_TYPE'
RED_CAP_ND_NUMBER_FIELD_TYPE = 'RED_CAP_ND_NUMBER_FIELD_TYPE'
RED_CAP_VIRUS_FIELD_TYPE = 'RED_CAP_VIRUS_FIELD_TYPE'
RED_CAP_SAMPLE_DATE_FIELD_TYPE = "RED_CAP_SAMPLE_DATE_FIELD_TYPE"
MAIL_TEMPLATE_CONTEXT_SUBJECT = 'S'
MAIL_TEMPLATE_CONTEXT_APPOINTMENT = 'A'
......
......@@ -16,7 +16,7 @@ from web.models.constants import REDCAP_TOKEN_CONFIGURATION_TYPE, \
REDCAP_BASE_URL_CONFIGURATION_TYPE, CRON_JOB_TIMEOUT, RED_CAP_LANGUAGE_4_FIELD_TYPE, RED_CAP_LANGUAGE_3_FIELD_TYPE, \
RED_CAP_LANGUAGE_2_FIELD_TYPE, RED_CAP_LANGUAGE_1_FIELD_TYPE, RED_CAP_MPOWER_ID_FIELD_TYPE, RED_CAP_DEAD_FIELD_TYPE, \
RED_CAP_SEX_FIELD_TYPE, RED_CAP_DATE_BORN_FIELD_TYPE, RED_CAP_ND_NUMBER_FIELD_TYPE, RED_CAP_VIRUS_FIELD_TYPE, \
GLOBAL_STUDY_ID
GLOBAL_STUDY_ID, RED_CAP_SAMPLE_DATE_FIELD_TYPE
from web.models.inconsistent_subject import InconsistentField, InconsistentSubject
from web.models.missing_subject import MissingSubject
......@@ -81,6 +81,7 @@ class RedcapConnector(object):
self.language_4_field = ConfigurationItem.objects.get(type=RED_CAP_LANGUAGE_4_FIELD_TYPE).value
self.m_power_id_field = ConfigurationItem.objects.get(type=RED_CAP_MPOWER_ID_FIELD_TYPE).value
self.virus_field = ConfigurationItem.objects.get(type=RED_CAP_VIRUS_FIELD_TYPE).value
self.sample_date_field = ConfigurationItem.objects.get(type=RED_CAP_SAMPLE_DATE_FIELD_TYPE).value
self.study = Study.objects.get(id=GLOBAL_STUDY_ID)
......@@ -187,6 +188,7 @@ class RedcapConnector(object):
result.append(inconsistent_subject)
if appointment_type_to_finish is not None:
for visit in red_cap_subject.visits:
smasch_visits = Visit.objects.filter(visit_number=visit.visit_number, subject=subject)
smasch_appointments = Appointment.objects.filter(visit__in=smasch_visits,
appointment_types=appointment_type_to_finish,
......@@ -328,7 +330,9 @@ class RedcapConnector(object):
visit.virus = False
elif row.get(self.virus_field) == "Positive":
visit.virus = True
redcap_subject.visits.append(visit)
if self.sample_date_field != "":
if row.get(self.sample_date_field) != "":
redcap_subject.visits.append(visit)
result.append(redcap_subject)
for i in range(1, 9):
query_data = self.get_subject_query_data()
......@@ -342,13 +346,15 @@ class RedcapConnector(object):
for redcap_subject in result:
if redcap_subject.nd_number == nd_number:
visit = RedcapVisit()
visit.visit_number = i
visit.visit_number = i + self.study.redcap_first_visit_number + 1
if self.virus_field != "":
if row.get(self.virus_field) == "Negative":
visit.virus = False
elif row.get(self.virus_field) == "Positive":
visit.virus = True
redcap_subject.visits.append(visit)
if self.sample_date_field != "":
if row.get(self.sample_date_field) != "":
redcap_subject.visits.append(visit)
return result
......@@ -397,6 +403,9 @@ class RedcapConnector(object):
if self.virus_field != "":
result['fields[' + str(field_number) + ']'] = self.virus_field
field_number += 1
if self.sample_date_field != "":
result['fields[' + str(field_number) + ']'] = self.sample_date_field
field_number += 1
return result
def get_language(self, name):
......
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