In [7]:
from td_lab.models import InfantRequisition

In [8]:
infant_requisition = InfantRequisition.objects.all()

In [9]:
rs_fields = [
    'subject_identifier', 'maternal_identifier', 'dob', 'gender', 'subject_type']
visit_fields = [
    'visit_datetime', 'study_status', 'reason', 'survival_status', 'last_alive_date', 'infant_visit_id']
visit_defination_fields = ['visit_code', 'visit_title', 'time_point']
appointment_fields = ['appt_status', 'appt_datetime', 'timepoint_datetime', 'best_appt_datetime']

In [10]:
requisition_fields = ['created',
 'modified',
 'user_created',
 'user_modified',
 'hostname_created',
 'hostname_modified',
 'revision',
 'id',
 'report_datetime',
 'exported',
 'exported_datetime',
 'export_change_type',
 'export_uuid',
 'subject_identifier',
 'requisition_identifier',
 'requisition_datetime',
 'specimen_identifier',
 'protocol',
 'study_site',
 'clinician_initials',
 'priority',
 'is_drawn',
 'reason_not_drawn',
 'drawn_datetime',
 'item_type',
 'item_count_total',
 'estimated_volume',
 'comments',
 'is_receive',
 'is_receive_datetime',
 'is_packed',
 'is_labelled',
 'is_labelled_datetime',
 'is_lis',
 'packing_list_id',
 'aliquot_type_id',
 'panel_name',
 'reason_not_drawn_other',
 'test_code']
header = rs_fields + visit_fields + visit_defination_fields + appointment_fields + requisition_fields
data = [header]
for m_requisition in infant_requisition:
    visit = m_requisition.infant_visit
    appointment = visit.appointment
    rs = appointment.registered_subject
    visit_defination = appointment.visit_definition

    # Registered_subject data
    rs_data = []
    for rs_f in rs_fields:
        if rs_f == 'maternal_identifier':
            subject_identifier = rs.subject_identifier
            rs_data.append(subject_identifier[:-3])
        else:
            rs_data.append(getattr(rs, rs_f))

    # Visit data
    v_data = []
    for v_f in visit_fields:
        if v_f == 'infant_visit_id':
            v_data.append(getattr(visit, 'id'))
        elif v_f == 'visit_datetime':
            v_data.append(getattr(visit, 'report_datetime'))
        else:
            v_data.append(getattr(visit, v_f))

    # Visit defination data
    vdef_data = []
    for vdef_f in visit_defination_fields:
        if vdef_f == 'visit_code':
            vdef_data.append(getattr(visit_defination, 'code'))
        elif vdef_f == 'visit_title':
            vdef_data.append(getattr(visit_defination, 'title'))
        else:
            vdef_data.append(getattr(visit_defination, vdef_f))

    # Appointment data
    app_data = []
    for ap_f in appointment_fields:
        app_data.append(getattr(appointment, ap_f))

    # Requisition data
    requisition_data = []
    for req_f in requisition_fields:
        if req_f == 'panel_name':
            requisition_data.append(m_requisition.panel.name)
        else:
            value = getattr(m_requisition, req_f)
            if not value:
                value = '.'
            requisition_data.append(value)
    all_data = rs_data + v_data + vdef_data + app_data + requisition_data
    data.append(all_data)

In [11]:
print(len(data))
import csv
with open('td_lab_infantrequisition.csv', 'w+') as f:
    writer = csv.writer(f)
    writer.writerows(data)


3501

In [ ]: