diff --git a/AUTHORS b/AUTHORS index fb695c7..b4ccd08 100644 --- a/AUTHORS +++ b/AUTHORS @@ -34,5 +34,8 @@ Contributors at the University of Florida Other Contributors + * Brook Hurd * L. D. Nicolas May - + * Elijah D. Rockers + * Kathleen Bradbury + * Stephanie Wenzlawsh diff --git a/nacc/ftld/fvp/builder.py b/nacc/ftld/fvp/builder.py index 95e97ed..14fd124 100644 --- a/nacc/ftld/fvp/builder.py +++ b/nacc/ftld/fvp/builder.py @@ -477,8 +477,67 @@ def update_header(record, packet): header.FORMVER = 3 header.ADCID = record['adcid'] header.PTID = record['ptid'] - header.VISITMO = record['visitmo'] - header.VISITDAY = record['visitday'] - header.VISITYR = record['visityr'] + + # Custom header info + formdate = '' + formrater = '' + try: + if header.FORMID.value == "Z1X": + formdate = record['fu_z1x_date'] + formrater = record['fu_z1x_rater'] + elif header.FORMID.value == "A3A": + formdate = record['fu_a3a_date'] + formrater = record['fu_a3a_rater'] + elif header.FORMID.value == "B3F": + formdate = record['fu_b3f_date'] + formrater = record['fu_b3f_rater'] + elif header.FORMID.value == "B9F": + formdate = record['fu_b9f_date'] + formrater = record['fu_b9f_rater'] + elif header.FORMID.value == "C1F": + formdate = record['fu_c1f_date'] + formrater = record['fu_c1f_rater'] + elif header.FORMID.value == "C2F": + formdate = record['fu_c2f_date'] + formrater = record['fu_c2f_rater'] + elif header.FORMID.value == "C3F": + formdate = record['fu_c3f_date'] + formrater = record['fu_c3f_rater'] + elif header.FORMID.value == "C4F": + formdate = record['fu_c4f_date'] + formrater = record['fu_c4f_rater'] + elif header.FORMID.value == "C5F": + formdate = record['fu_c5f_date'] + formrater = record['fu_c5f_rater'] + elif header.FORMID.value == "C6F": + formdate = record['fu_c6f_date'] + formrater = record['fu_c6f_rater'] + elif header.FORMID.value == "E2F": + formdate = record['fu_e2f_date'] + formrater = record['fu_e2f_rater'] + elif header.FORMID.value == "E3F": + formdate = record['fu_e3f_date'] + formrater = record['fu_e3f_rater'] + # Date should be format of yyyy-mm-dd. If not, + # then use form header defaults. + if len(formdate.split("-")) == 3: + yyyy = formdate.split("-")[0] + mm = formdate.split("-")[1] + dd = formdate.split("-")[2] + else: + yyyy = record['visityr'] + mm = record['visitmo'] + dd = record['visitday'] + header.VISITMO = mm + header.VISITDAY = dd + header.VISITYR = yyyy + except KeyError: + header.VISITMO = record['visitmo'] + header.VISITDAY = record['visitday'] + header.VISITYR = record['visityr'] + header.VISITNUM = record['visitnum'] - header.INITIALS = record['initials'] + if formrater != '': + header.INITIALS = formrater + else: + header.INITIALS = record['initials'] diff --git a/nacc/ftld/ivp/builder.py b/nacc/ftld/ivp/builder.py index 3f82c6e..21b6473 100644 --- a/nacc/ftld/ivp/builder.py +++ b/nacc/ftld/ivp/builder.py @@ -478,8 +478,67 @@ def update_header(record, packet): header.FORMVER = 3 header.ADCID = record['adcid'] header.PTID = record['ptid'] - header.VISITMO = record['visitmo'] - header.VISITDAY = record['visitday'] - header.VISITYR = record['visityr'] + + # Custom header info + formdate = '' + formrater = '' + try: + if header.FORMID.value == "Z1X": + formdate = record['z1x_date'] + formrater = record['z1x_rater'] + elif header.FORMID.value == "A3A": + formdate = record['a3a_date'] + formrater = record['a3a_rater'] + elif header.FORMID.value == "B3F": + formdate = record['b3f_date'] + formrater = record['b3f_rater'] + elif header.FORMID.value == "B9F": + formdate = record['b9f_date'] + formrater = record['b9f_rater'] + elif header.FORMID.value == "C1F": + formdate = record['c1f_date'] + formrater = record['c1f_rater'] + elif header.FORMID.value == "C2F": + formdate = record['c2f_date'] + formrater = record['c2f_rater'] + elif header.FORMID.value == "C3F": + formdate = record['c3f_date'] + formrater = record['c3f_rater'] + elif header.FORMID.value == "C4F": + formdate = record['c4f_date'] + formrater = record['c4f_rater'] + elif header.FORMID.value == "C5F": + formdate = record['c5f_date'] + formrater = record['c5f_rater'] + elif header.FORMID.value == "C6F": + formdate = record['c6f_date'] + formrater = record['c6f_rater'] + elif header.FORMID.value == "E2F": + formdate = record['e2f_date'] + formrater = record['e2f_rater'] + elif header.FORMID.value == "E3F": + formdate = record['e3f_date'] + formrater = record['e3f_rater'] + # Date should be format of yyyy-mm-dd. If not, + # then use form header defaults. + if len(formdate.split("-")) == 3: + yyyy = formdate.split("-")[0] + mm = formdate.split("-")[1] + dd = formdate.split("-")[2] + else: + yyyy = record['visityr'] + mm = record['visitmo'] + dd = record['visitday'] + header.VISITMO = mm + header.VISITDAY = dd + header.VISITYR = yyyy + except KeyError: + header.VISITMO = record['visitmo'] + header.VISITDAY = record['visitday'] + header.VISITYR = record['visityr'] + header.VISITNUM = record['visitnum'] - header.INITIALS = record['initials'] + if formrater != '': + header.INITIALS = formrater + else: + header.INITIALS = record['initials'] diff --git a/nacc/lbd/fvp/builder.py b/nacc/lbd/fvp/builder.py index 2b575e3..54e4b0c 100644 --- a/nacc/lbd/fvp/builder.py +++ b/nacc/lbd/fvp/builder.py @@ -504,8 +504,73 @@ def update_header(record, packet): header.FORMVER = 3 header.ADCID = record['adcid'] header.PTID = record['ptid'] - header.VISITMO = record['visitmo'] - header.VISITDAY = record['visitday'] - header.VISITYR = record['visityr'] + + # Custom header info + formdate = '' + formrater = '' + try: + if header.FORMID.value == "B1L": + formdate = record['fu_b1l_date'] + formrater = record['fu_b1l_rater'] + elif header.FORMID.value == "B2L": + formdate = record['fu_b2l_date'] + formrater = record['fu_b2l_rater'] + elif header.FORMID.value == "B3L": + formdate = record['fu_b3l_date'] + formrater = record['fu_b3l_rater'] + elif header.FORMID.value == "B4L": + formdate = record['fu_b4l_date'] + formrater = record['fu_b4l_rater'] + elif header.FORMID.value == "B5L": + formdate = record['fu_b5l_date'] + formrater = record['fu_b5l_rater'] + elif header.FORMID.value == "B6L": + formdate = record['fu_b6l_date'] + formrater = record['fu_b6l_rater'] + elif header.FORMID.value == "B7L": + formdate = record['fu_b7l_date'] + formrater = record['fu_b7l_rater'] + elif header.FORMID.value == "B8L": + formdate = record['fu_b8l_date'] + formrater = record['fu_b8l_rater'] + elif header.FORMID.value == "B9L": + formdate = record['fu_b9l_date'] + formrater = record['fu_b9l_rater'] + elif header.FORMID.value == "C1L": + formdate = record['fu_c1l_date'] + formrater = record['fu_c1l_rater'] + elif header.FORMID.value == "D1L": + formdate = record['fu_d1l_date'] + formrater = record['fu_d1l_rater'] + elif header.FORMID.value == "E1L": + formdate = record['fu_e1l_date'] + formrater = record['fu_e1l_rater'] + elif header.FORMID.value == "E2L": + formdate = record['fu_e2l_date'] + formrater = record['fu_e2l_rater'] + elif header.FORMID.value == "E3L": + formdate = record['fu_e3l_date'] + formrater = record['fu_e3l_rater'] + # Date should be format of yyyy-mm-dd. If not, + # then use form header defaults. + if len(formdate.split("-")) == 3: + yyyy = formdate.split("-")[0] + mm = formdate.split("-")[1] + dd = formdate.split("-")[2] + else: + yyyy = record['visityr'] + mm = record['visitmo'] + dd = record['visitday'] + header.VISITMO = mm + header.VISITDAY = dd + header.VISITYR = yyyy + except KeyError: + header.VISITMO = record['visitmo'] + header.VISITDAY = record['visitday'] + header.VISITYR = record['visityr'] + header.VISITNUM = record['visitnum'] - header.INITIALS = record['initials'] + if formrater != '': + header.INITIALS = formrater + else: + header.INITIALS = record['initials'] diff --git a/nacc/lbd/ivp/builder.py b/nacc/lbd/ivp/builder.py index 3992a56..03e42bc 100644 --- a/nacc/lbd/ivp/builder.py +++ b/nacc/lbd/ivp/builder.py @@ -503,8 +503,73 @@ def update_header(record, packet): header.FORMVER = 3 header.ADCID = record['adcid'] header.PTID = record['ptid'] - header.VISITMO = record['visitmo'] - header.VISITDAY = record['visitday'] - header.VISITYR = record['visityr'] + + # Custom header info + formdate = '' + formrater = '' + try: + if header.FORMID.value == "B1L": + formdate = record['b1l_date'] + formrater = record['b1l_rater'] + elif header.FORMID.value == "B2L": + formdate = record['b2l_date'] + formrater = record['b2l_rater'] + elif header.FORMID.value == "B3L": + formdate = record['b3l_date'] + formrater = record['b3l_rater'] + elif header.FORMID.value == "B4L": + formdate = record['b4l_date'] + formrater = record['b4l_rater'] + elif header.FORMID.value == "B5L": + formdate = record['b5l_date'] + formrater = record['b5l_rater'] + elif header.FORMID.value == "B6L": + formdate = record['b6l_date'] + formrater = record['b6l_rater'] + elif header.FORMID.value == "B7L": + formdate = record['b7l_date'] + formrater = record['b7l_rater'] + elif header.FORMID.value == "B8L": + formdate = record['b8l_date'] + formrater = record['b8l_rater'] + elif header.FORMID.value == "B9L": + formdate = record['b9l_date'] + formrater = record['b9l_rater'] + elif header.FORMID.value == "C1L": + formdate = record['c1l_date'] + formrater = record['c1l_rater'] + elif header.FORMID.value == "D1L": + formdate = record['d1l_date'] + formrater = record['d1l_rater'] + elif header.FORMID.value == "E1L": + formdate = record['e1l_date'] + formrater = record['e1l_rater'] + elif header.FORMID.value == "E2L": + formdate = record['e2l_date'] + formrater = record['e2l_rater'] + elif header.FORMID.value == "E3L": + formdate = record['e3l_date'] + formrater = record['e3l_rater'] + # Date should be format of yyyy-mm-dd. If not, + # then use form header defaults. + if len(formdate.split("-")) == 3: + yyyy = formdate.split("-")[0] + mm = formdate.split("-")[1] + dd = formdate.split("-")[2] + else: + yyyy = record['visityr'] + mm = record['visitmo'] + dd = record['visitday'] + header.VISITMO = mm + header.VISITDAY = dd + header.VISITYR = yyyy + except KeyError: + header.VISITMO = record['visitmo'] + header.VISITDAY = record['visitday'] + header.VISITYR = record['visityr'] + header.VISITNUM = record['visitnum'] - header.INITIALS = record['initials'] + if formrater != '': + header.INITIALS = formrater + else: + header.INITIALS = record['initials'] diff --git a/nacc/lbd/v3_1/fvp/builder.py b/nacc/lbd/v3_1/fvp/builder.py index a1b199a..8e82a56 100644 --- a/nacc/lbd/v3_1/fvp/builder.py +++ b/nacc/lbd/v3_1/fvp/builder.py @@ -389,8 +389,70 @@ def update_header(record, packet): header.FORMVER = 3.1 header.ADCID = record['adcid'] header.PTID = record['ptid'] - header.VISITMO = record['visitmo'] - header.VISITDAY = record['visitday'] - header.VISITYR = record['visityr'] + + # Custom header info + formdate = '' + formrater = '' + try: + if header.FORMID.value == "B1L": + formdate = record['fu_b1l_date'] + formrater = record['fu_b1l_rater'] + elif header.FORMID.value == "B2L": + formdate = record['fu_b2l_date'] + formrater = record['fu_b2l_rater'] + elif header.FORMID.value == "B3L": + formdate = record['fu_b3l_date'] + formrater = record['fu_b3l_rater'] + elif header.FORMID.value == "B4L": + formdate = record['fu_b4l_date'] + formrater = record['fu_b4l_rater'] + elif header.FORMID.value == "B5L": + formdate = record['fu_b5l_date'] + formrater = record['fu_b5l_rater'] + elif header.FORMID.value == "B6L": + formdate = record['fu_b6l_date'] + formrater = record['fu_b6l_rater'] + elif header.FORMID.value == "B7L": + formdate = record['fu_b7l_date'] + formrater = record['fu_b7l_rater'] + elif header.FORMID.value == "B9L": + formdate = record['fu_b9l_date'] + formrater = record['fu_b9l_rater'] + elif header.FORMID.value == "C1L": + formdate = record['fu_c1l_date'] + formrater = record['fu_c1l_rater'] + elif header.FORMID.value == "D1L": + formdate = record['fu_d1l_date'] + formrater = record['fu_d1l_rater'] + elif header.FORMID.value == "E1L": + formdate = record['fu_e1l_date'] + formrater = record['fu_e1l_rater'] + elif header.FORMID.value == "E2L": + formdate = record['fu_e2l_date'] + formrater = record['fu_e2l_rater'] + elif header.FORMID.value == "E3L": + formdate = record['fu_e3l_date'] + formrater = record['fu_e3l_rater'] + # Date should be format of yyyy-mm-dd. If not, + # then use form header defaults. + if len(formdate.split("-")) == 3: + yyyy = formdate.split("-")[0] + mm = formdate.split("-")[1] + dd = formdate.split("-")[2] + else: + yyyy = record['visityr'] + mm = record['visitmo'] + dd = record['visitday'] + header.VISITMO = mm + header.VISITDAY = dd + header.VISITYR = yyyy + except KeyError: + header.VISITMO = record['visitmo'] + header.VISITDAY = record['visitday'] + header.VISITYR = record['visityr'] + header.VISITNUM = record['visitnum'] - header.INITIALS = record['initials'] + if formrater != '': + header.INITIALS = formrater + else: + header.INITIALS = record['initials'] diff --git a/nacc/lbd/v3_1/ivp/builder.py b/nacc/lbd/v3_1/ivp/builder.py index 6535362..ecf74e1 100644 --- a/nacc/lbd/v3_1/ivp/builder.py +++ b/nacc/lbd/v3_1/ivp/builder.py @@ -387,8 +387,70 @@ def update_header(record, packet): header.FORMVER = 3.1 header.ADCID = record['adcid'] header.PTID = record['ptid'] - header.VISITMO = record['visitmo'] - header.VISITDAY = record['visitday'] - header.VISITYR = record['visityr'] + + # Custom header info + formdate = '' + formrater = '' + try: + if header.FORMID.value == "B1L": + formdate = record['b1l_date'] + formrater = record['b1l_rater'] + elif header.FORMID.value == "B2L": + formdate = record['b2l_date'] + formrater = record['b2l_rater'] + elif header.FORMID.value == "B3L": + formdate = record['b3l_date'] + formrater = record['b3l_rater'] + elif header.FORMID.value == "B4L": + formdate = record['b4l_date'] + formrater = record['b4l_rater'] + elif header.FORMID.value == "B5L": + formdate = record['b5l_date'] + formrater = record['b5l_rater'] + elif header.FORMID.value == "B6L": + formdate = record['b6l_date'] + formrater = record['b6l_rater'] + elif header.FORMID.value == "B7L": + formdate = record['b7l_date'] + formrater = record['b7l_rater'] + elif header.FORMID.value == "B9L": + formdate = record['b9l_date'] + formrater = record['b9l_rater'] + elif header.FORMID.value == "C1L": + formdate = record['c1l_date'] + formrater = record['c1l_rater'] + elif header.FORMID.value == "D1L": + formdate = record['d1l_date'] + formrater = record['d1l_rater'] + elif header.FORMID.value == "E1L": + formdate = record['e1l_date'] + formrater = record['e1l_rater'] + elif header.FORMID.value == "E2L": + formdate = record['e2l_date'] + formrater = record['e2l_rater'] + elif header.FORMID.value == "E3L": + formdate = record['e3l_date'] + formrater = record['e3l_rater'] + # Date should be format of yyyy-mm-dd. If not, + # then use form header defaults. + if len(formdate.split("-")) == 3: + yyyy = formdate.split("-")[0] + mm = formdate.split("-")[1] + dd = formdate.split("-")[2] + else: + yyyy = record['visityr'] + mm = record['visitmo'] + dd = record['visitday'] + header.VISITMO = mm + header.VISITDAY = dd + header.VISITYR = yyyy + except KeyError: + header.VISITMO = record['visitmo'] + header.VISITDAY = record['visitday'] + header.VISITYR = record['visityr'] + header.VISITNUM = record['visitnum'] - header.INITIALS = record['initials'] + if formrater != '': + header.INITIALS = formrater + else: + header.INITIALS = record['initials'] diff --git a/nacc/redcap2nacc.py b/nacc/redcap2nacc.py index 75feda2..b946878 100755 --- a/nacc/redcap2nacc.py +++ b/nacc/redcap2nacc.py @@ -165,22 +165,34 @@ def check_redcap_event(options, record) -> bool: """ if options.lbd and options.ivp: event_name = 'initial' - form_match_lbd = record['lbd_ivp_b1l_complete'] + try: + form_match_lbd = record['lbd_ivp_b1l_complete'] + except KeyError: + form_match_lbd = record['lbd_ivp_b1l_clinical_symptoms_and_exam_complete'] if form_match_lbd in ['0', '']: return False elif options.lbd and options.fvp: event_name = 'follow' - form_match_lbd = record['lbd_fvp_b1l_complete'] + try: + form_match_lbd = record['lbd_fvp_b1l_complete'] + except KeyError: + form_match_lbd = record['lbd_fvp_b1l_clinical_symptoms_and_exam_complete'] if form_match_lbd in ['0', '']: return False elif options.lbdsv and options.ivp: event_name = 'initial' - form_match_lbd = record['lbd_ivp_b1l_complete'] + try: + form_match_lbd = record['lbd_ivp_b1l_complete'] + except KeyError: + form_match_lbd = record['lbd_ivp_b1l_clinical_symptoms_and_exam_complete'] if form_match_lbd in ['0', '']: return False elif options.lbdsv and options.fvp: event_name = 'follow' - form_match_lbd = record['lbd_fvp_b1l_complete'] + try: + form_match_lbd = record['lbd_fvp_b1l_complete'] + except KeyError: + form_match_lbd = record['lbd_fvp_b1l_clinical_symptoms_and_exam_complete'] if form_match_lbd in ['0', '']: return False elif options.ftld and options.ivp: @@ -303,6 +315,13 @@ def set_to_zero_if_blank(*field_names): if empty(field): field.value = 0 + # B6 G1. + try: + if packet['GDS'] in range(0, 15): + set_to_zero_if_blank('NOGDS') + except KeyError: + pass + # B8 2. try: if packet['PARKSIGN'] == 1: diff --git a/nacc/uds3/fvp/builder.py b/nacc/uds3/fvp/builder.py index 52a8224..12c8d9c 100644 --- a/nacc/uds3/fvp/builder.py +++ b/nacc/uds3/fvp/builder.py @@ -1095,8 +1095,82 @@ def update_header(record, packet): header.FORMVER = 3 header.ADCID = record['adcid'] header.PTID = record['ptid'] - header.VISITMO = record['visitmo'] - header.VISITDAY = record['visitday'] - header.VISITYR = record['visityr'] + + # Custom header info + formdate = '' + formrater = '' + try: + if header.FORMID.value == "A1": + formdate = record['fu_a1_date'] + formrater = record['fu_a1_rater'] + elif header.FORMID.value == "A2": + formdate = record['fu_a2_date'] + formrater = record['fu_a2_rater'] + elif header.FORMID.value == "A3": + formdate = record['fu_a3_date'] + formrater = record['fu_a3_rater'] + elif header.FORMID.value == "A4D": + formdate = record['fu_a4d_date'] # check eli's code- this might also be a3 + formrater = record['fu_a4d_rater'] + elif header.FORMID.value == "A4G": + formdate = record['fu_a4g_date'] + formrater = record['fu_a4g_rater'] + elif header.FORMID.value == "B1": + formdate = record['fu_b1_date'] + formrater = record['fu_b1_rater'] + elif header.FORMID.value == "B4": + formdate = record['fu_b4_date'] + formrater = record['fu_b4_rater'] + elif header.FORMID.value == "B5": + formdate = record['fu_b5_date'] + formrater = record['fu_b5_rater'] + elif header.FORMID.value == "B6": + formdate = record['fu_b6_date'] + formrater = record['fu_b6_rater'] + elif header.FORMID.value == "B7": + formdate = record['fu_b7_date'] + formrater = record['fu_b7_rater'] + elif header.FORMID.value == "B9": + formdate = record['fu_b9_date'] + formrater = record['fu_b9_rater'] + elif header.FORMID.value == "C1S": + formdate = record['fu_c1s_date'] + formrater = record['fu_c1s_rater'] + elif header.FORMID.value == "C2": + formdate = record['fu_c2_date'] + formrater = record['fu_c2_rater'] + elif header.FORMID.value == "D1": + formdate = record['fu_d1_date'] + formrater = record['fu_d1_rater'] + elif header.FORMID.value == "D2": + formdate = record['fu_d2_date'] + formrater = record['fu_d2_rater'] + elif header.FORMID.value == "Z1": + formdate = record['fu_z1_date'] + formrater = record['fu_z1_rater'] + elif header.FORMID.value == "Z1X": + formdate = record['fu_z1x_date'] + formrater = record['fu_z1x_rater'] + # Date should be format of yyyy-mm-dd. If not, + # then use form header defaults. + if len(formdate.split("-")) == 3: + yyyy = formdate.split("-")[0] + mm = formdate.split("-")[1] + dd = formdate.split("-")[2] + else: + yyyy = record['visityr'] + mm = record['visitmo'] + dd = record['visitday'] + header.VISITMO = mm + header.VISITDAY = dd + header.VISITYR = yyyy + except KeyError: + header.VISITMO = record['visitmo'] + header.VISITDAY = record['visitday'] + header.VISITYR = record['visityr'] + header.VISITNUM = record['visitnum'] - header.INITIALS = record['initials'] \ No newline at end of file + if formrater != '': + header.INITIALS = formrater + else: + header.INITIALS = record['initials'] \ No newline at end of file diff --git a/nacc/uds3/fvp/forms.py b/nacc/uds3/fvp/forms.py index 3305a9a..19d3295 100644 --- a/nacc/uds3/fvp/forms.py +++ b/nacc/uds3/fvp/forms.py @@ -805,7 +805,7 @@ def __init__(self): self.fields['BRNINJIF'] = nacc.uds3.Field(name='BRNINJIF', typename='Num', position=(386, 386), length=1, inclusive_range=(1, 3), allowable_values=['3', '2', '1'], blanks=['Blank if Question 20 BRNINJ ne 1 (Present)', 'Blank if Question 2 NORMCOG = 1 (Yes)']) self.fields['BRNINCTE'] = nacc.uds3.Field(name='BRNINCTE', typename='Num', position=(388, 388), length=1, inclusive_range=(0, 1), allowable_values=['9', '1', '0'], blanks=['Blank if Question 20 BRNINJ ne 1 (Present)']) self.fields['HYCEPH'] = nacc.uds3.Field(name='HYCEPH', typename='Num', position=(390, 390), length=1, inclusive_range=(0, 1), allowable_values=['1', '0'], blanks=[]) - self.fields['HYCEPHIF'] = nacc.uds3.Field(name='HYCEPHIF', typename='Num', position=(392, 392), length=1, inclusive_range=(1, 3), allowable_values=['3', '2', '1'], blanks=['Blank if Question 21 NPHYDR ne 1 (Present)', 'Blank if Question 2 NORMCOG = 1 (Yes)']) + self.fields['HYCEPHIF'] = nacc.uds3.Field(name='HYCEPHIF', typename='Num', position=(392, 392), length=1, inclusive_range=(1, 3), allowable_values=['3', '2', '1'], blanks=['Blank if Question 21 HYCEPH ne 1 (Present)', 'Blank if Question 2 NORMCOG = 1 (Yes)']) self.fields['EPILEP'] = nacc.uds3.Field(name='EPILEP', typename='Num', position=(394, 394), length=1, inclusive_range=(0, 1), allowable_values=['1', '0'], blanks=[]) self.fields['EPILEPIF'] = nacc.uds3.Field(name='EPILEPIF', typename='Num', position=(396, 396), length=1, inclusive_range=(1, 3), allowable_values=['3', '2', '1'], blanks=['Blank if Question 22 EPILEP ne 1 (Present)', 'Blank if Question 2 NORMCOG = 1 (Yes)']) self.fields['NEOP'] = nacc.uds3.Field(name='NEOP', typename='Num', position=(398, 398), length=1, inclusive_range=(0, 1), allowable_values=['1', '0'], blanks=[]) @@ -944,7 +944,7 @@ def __init__(self): self.fields['B7NOT'] = nacc.uds3.Field(name='B7NOT', typename='Num', position=(95, 96), length=2, inclusive_range=(95,98), allowable_values=['98','97','96','95'], blanks=['Blank if Question 10 B7SUB = 1 (Yes)']) self.fields['LANGB8'] = nacc.uds3.Field(name='LANGB8', typename='Num', position=(98, 98), length=1, inclusive_range=(1,2), allowable_values=['2','1'], blanks=[]) self.fields['LANGB9'] = nacc.uds3.Field(name='LANGB9', typename='Num', position=(100, 100), length=1, inclusive_range=(1,2), allowable_values=['2','1'], blanks=[]) - self.fields['LANGC1'] = nacc.uds3.Field(name='LANGC2', typename='Num', position=(102, 102), length=1, inclusive_range=(1,2), allowable_values=['2','1'], blanks=['Blank if 13a LANGC2 = 1 (English) or 2 (Spanish)']) + self.fields['LANGC1'] = nacc.uds3.Field(name='LANGC1', typename='Num', position=(102, 102), length=1, inclusive_range=(1,2), allowable_values=['2','1'], blanks=['Blank if 13a LANGC2 = 1 (English) or 2 (Spanish)']) self.fields['LANGC2'] = nacc.uds3.Field(name='LANGC2', typename='Num', position=(104, 104), length=1, inclusive_range=(1,2), allowable_values=['2','1'], blanks=['Blank if 12a LANGC1 = 1 (English) or 2 (Spanish)']) self.fields['LANGD1'] = nacc.uds3.Field(name='LANGD1', typename='Num', position=(106, 106), length=1, inclusive_range=(1,2), allowable_values=['2','1'], blanks=[]) self.fields['LANGD2'] = nacc.uds3.Field(name='LANGD2', typename='Num', position=(108, 108), length=1, inclusive_range=(1,2), allowable_values=['2','1'], blanks=[]) diff --git a/nacc/uds3/ivp/builder.py b/nacc/uds3/ivp/builder.py index f433595..582b3f8 100644 --- a/nacc/uds3/ivp/builder.py +++ b/nacc/uds3/ivp/builder.py @@ -1193,8 +1193,85 @@ def update_header(record, packet): header.FORMVER = 3 header.ADCID = record['adcid'] header.PTID = record['ptid'] - header.VISITMO = record['visitmo'] - header.VISITDAY = record['visitday'] - header.VISITYR = record['visityr'] + + # Custom header info + formdate = '' + formrater = '' + try: + if header.FORMID.value == "A1": + formdate = record['a1_date'] + formrater = record['a1_rater'] + elif header.FORMID.value == "A2": + formdate = record['a2_date'] + formrater = record['a2_rater'] + elif header.FORMID.value == "A3": + formdate = record['a3_date'] + formrater = record['a3_rater'] + elif header.FORMID.value == "A4D": + formdate = record['a4d_date'] + formrater = record['a4d_rater'] + elif header.FORMID.value == "A4G": + formdate = record['a4g_date'] + formrater = record['a4g_rater'] + elif header.FORMID.value == "A5": + formdate = record['a5_date'] + formrater = record['a5_rater'] + elif header.FORMID.value == "B1": + formdate = record['b1_date'] + formrater = record['b1_rater'] + elif header.FORMID.value == "B4": + formdate = record['b4_date'] + formrater = record['b4_rater'] + elif header.FORMID.value == "B5": + formdate = record['b5_date'] + formrater = record['b5_rater'] + elif header.FORMID.value == "B6": + formdate = record['b6_date'] + formrater = record['b6_rater'] + elif header.FORMID.value == "B7": + formdate = record['b7_date'] + formrater = record['b7_rater'] + elif header.FORMID.value == "B9": + formdate = record['b9_date'] + formrater = record['b9_rater'] + elif header.FORMID.value == "C1S": + formdate = record['c1s_date'] + formrater = record['c1s_rater'] + elif header.FORMID.value == "C2": + formdate = record['c2_date'] + formrater = record['c2_rater'] + elif header.FORMID.value == "D1": + formdate = record['d1_date'] + formrater = record['d1_rater'] + elif header.FORMID.value == "D2": + formdate = record['d2_date'] + formrater = record['d2_rater'] + elif header.FORMID.value == "Z1": + formdate = record['z1_date'] + formrater = record['z1_rater'] + elif header.FORMID.value == "Z1X": + formdate = record['z1x_date'] + formrater = record['z1x_rater'] + # Date should be format of yyyy-mm-dd. If not, + # then use form header defaults. + if len(formdate.split("-")) == 3: + yyyy = formdate.split("-")[0] + mm = formdate.split("-")[1] + dd = formdate.split("-")[2] + else: + yyyy = record['visityr'] + mm = record['visitmo'] + dd = record['visitday'] + header.VISITMO = mm + header.VISITDAY = dd + header.VISITYR = yyyy + except KeyError: + header.VISITMO = record['visitmo'] + header.VISITDAY = record['visitday'] + header.VISITYR = record['visityr'] + header.VISITNUM = record['visitnum'] - header.INITIALS = record['initials'] + if formrater != '': + header.INITIALS = formrater + else: + header.INITIALS = record['initials'] diff --git a/nacc/uds3/m/builder.py b/nacc/uds3/m/builder.py index 4426e9d..6c04ed1 100644 --- a/nacc/uds3/m/builder.py +++ b/nacc/uds3/m/builder.py @@ -84,7 +84,7 @@ def parse_date(date, DMY_choice): return m[0] + m[1] elif date == '': return '' - raise ValueError('Inccorect death date format, date must be MM/DD/YYYY') + raise ValueError('Incorrect death date format, date must be MM/DD/YYYY') def subject_deceased(status): diff --git a/nacc/uds3/tfp/v3_2/builder.py b/nacc/uds3/tfp/v3_2/builder.py index e665dde..94f4000 100644 --- a/nacc/uds3/tfp/v3_2/builder.py +++ b/nacc/uds3/tfp/v3_2/builder.py @@ -57,9 +57,12 @@ def build_uds3_tfp_new_form(record, err=sys.stderr): add_b7(record, packet) except KeyError: pass - - add_b9(record, packet) - add_c2t(record, packet) + add_b9(record, packet) + try: + if record['tele_c2sub'] == '1': + add_c2t(record, packet) + except KeyError: + pass add_d1(record, packet) add_d2(record, packet) try: @@ -864,8 +867,73 @@ def update_header(record, packet): header.FORMVER = "3.2" header.ADCID = record['adcid'] header.PTID = record['ptid'] - header.VISITMO = record['visitmo'] - header.VISITDAY = record['visitday'] - header.VISITYR = record['visityr'] + + # Custom header info + formdate = '' + formrater = '' + try: + if header.FORMID.value == "T1": + formdate = record['tfp_t1_date'] + formrater = record['tfp_t1_rater'] + elif header.FORMID.value == "A1": + formdate = record['tfp_a1_date'] + formrater = record['tfp_a1_rater'] + elif header.FORMID.value == "A2": + formdate = record['tfp_a2_date'] + formrater = record['tfp_a2_rater'] + elif header.FORMID.value == "A3": + formdate = record['tfp_a3_date'] + formrater = record['tfp_a3_rater'] + elif header.FORMID.value == "A4D": + formdate = record['tfp_a4d_date'] + formrater = record['tfp_a4d_rater'] + elif header.FORMID.value == "A4G": + formdate = record['tfp_a4g_date'] + formrater = record['tfp_a4g_rater'] + elif header.FORMID.value == "B4": + formdate = record['tfp_b4_date'] + formrater = record['tfp_b4_rater'] + elif header.FORMID.value == "B5": + formdate = record['tfp_b5_date'] + formrater = record['tfp_b5_rater'] + elif header.FORMID.value == "B7": + formdate = record['tfp_b7_date'] + formrater = record['tfp_b7_rater'] + elif header.FORMID.value == "B9": + formdate = record['tfp_b9_date'] + formrater = record['tfp_b9_rater'] + elif header.FORMID.value == "C2": + formdate = record['tfp_c2_date'] + formrater = record['tfp_c2_rater'] + elif header.FORMID.value == "D1": + formdate = record['tfp_d1_date'] + formrater = record['tfp_d1_rater'] + elif header.FORMID.value == "D2": + formdate = record['tfp_d2_date'] + formrater = record['tfp_d2_rater'] + elif header.FORMID.value == "Z1X": + formdate = record['tfp_z1x_date'] + formrater = record['tfp_z1x_rater'] + # Date should be format of yyyy-mm-dd. If not, + # then use form header defaults. + if len(formdate.split("-")) == 3: + yyyy = formdate.split("-")[0] + mm = formdate.split("-")[1] + dd = formdate.split("-")[2] + else: + yyyy = record['visityr'] + mm = record['visitmo'] + dd = record['visitday'] + header.VISITMO = mm + header.VISITDAY = dd + header.VISITYR = yyyy + except KeyError: + header.VISITMO = record['visitmo'] + header.VISITDAY = record['visitday'] + header.VISITYR = record['visityr'] + header.VISITNUM = record['visitnum'] - header.INITIALS = record['initials'] \ No newline at end of file + if formrater != '': + header.INITIALS = formrater + else: + header.INITIALS = record['initials'] \ No newline at end of file diff --git a/tests/test_tfp_blanks.py b/tests/test_tfp_blanks.py index ce7bd49..b73d251 100644 --- a/tests/test_tfp_blanks.py +++ b/tests/test_tfp_blanks.py @@ -165,7 +165,7 @@ def make_filled_form() -> dict: 'tele_b7not': '', 'tele_langb9': '', 'tele_langc2': '', - 'tele_c2sub': '', + 'tele_c2sub': '1', 'tele_c2not': '', 'tele_langd1': '', 'tele_langd2': '', @@ -188,6 +188,7 @@ def make_filled_form() -> dict: 'tele_lange3f': '', 'tele_langcls': '', 'tele_clssub': '', + 'tvp_z1x_checklist_complete': '2', 'telcog': '', 'telill': '', 'telhome': '',