예제 #1
0
icds=["icd_0","icd_1","icd_2","icd_3","icd_4","icd_5","icd_6","icd_7","icd_8","icd_9","icd_10","icd_11",
                                                  "icd_12","icd_13","icd_14","icd_15","icd_16","icd_17","icd_18","icd_19","icd_20","icd_21","icd_22","icd_23",
                                                  "icd_24","icd_25","icd_26","icd_27","icd_28","icd_29","icd_30","icd_31","icd_32","icd_33","icd_34","icd_35","icd_36","icd_37","icd_38"]
#df=diagnoses_1.astype({'HADM_ID': 'int32'})
diagnoses_1=diagnoses_1.fillna('')
#idx="HADM_ID"
#icds=["icd_0","icd_1","icd_2","icd_3","icd_4"]
df=diagnoses_1.sort_values(by=['HADM_ID'])
df=df.fillna('')
df.reset_index(drop=True)
#df.set_index('HADM_ID')
#df=df[['icd_0','icd_1', 'icd_2','icd_3', 'icd_4','HADM_ID']].head(n=1266)
#df=df[['icd_0','icd_1', 'icd_2','icd_3', 'icd_4','HADM_ID']].iloc[1264:1266]
#df['person_id'] = np.arange(len(df))+1
#create dx grouping indicators
comorbidity= icd.icd_to_comorbidities(df, "HADM_ID", icds, mapping="quan_elixhauser9")
#comorbidity.head(n=1)
#df.head(n=1)
comorbidity=comorbidity.reset_index(drop=True)
tt=tt.reset_index(drop=True)
# join the indicators with the patient, admission, and diagnosis codes
adm_w_dxind= pd.merge(tt, comorbidity, on=['HADM_ID'], how='inner')

adm_w_dxind['NEXT_ADM_DATE'] = adm_w_dxind['ADMITTIME'].shift(-1)
adm_w_dxind['DAYS_TO_NEXT_ADM'] = (adm_w_dxind['NEXT_ADM_DATE'] - adm_w_dxind['DISCHTIME']).dt.days
#check data types
adm_w_dxind.dtypes
adm_w_dxind.to_excel("case.xlsx")


예제 #2
0
def test_custom_mapping():
    custom_map = {
        "paraplegia_and_hemiplegia": [
            'G81', 'G82', 'G041', 'G114', 'G801', 'G802', 'G830', 'G831',
            'G832', 'G833', 'G834', 'G839'
        ],
        "renal_disease": [
            'N18', 'N19', 'N052', 'N053', 'N054', 'N055', 'N056', 'N057',
            'N250', 'I120', 'I131', 'N032', 'N033', 'N034', 'N035', 'N036',
            'N037', 'Z490', 'Z491', 'Z492', 'Z940', 'Z992'
        ],
        "cancer": [
            'C00', 'C01', 'C02', 'C03', 'C04', 'C05', 'C06', 'C07', 'C08',
            'C09', 'C10', 'C11', 'C12', 'C13', 'C14', 'C15', 'C16', 'C17',
            'C18', 'C19', 'C20', 'C21', 'C22', 'C23', 'C24', 'C25', 'C26',
            'C30', 'C31', 'C32', 'C33', 'C34', 'C37', 'C38', 'C39', 'C40',
            'C41', 'C43', 'C45', 'C46', 'C47', 'C48', 'C49', 'C50', 'C51',
            'C52', 'C53', 'C54', 'C55', 'C56', 'C57', 'C58', 'C60', 'C61',
            'C62', 'C63', 'C64', 'C65', 'C66', 'C67', 'C68', 'C69', 'C70',
            'C71', 'C72', 'C73', 'C74', 'C75', 'C76', 'C81', 'C82', 'C83',
            'C84', 'C85', 'C88', 'C90', 'C91', 'C92', 'C93', 'C94', 'C95',
            'C96', 'C97'
        ],
        "moderate_or_sever_liver_disease": [
            'K704', 'K711', 'K721', 'K729', 'K765', 'K766', 'K767', 'I850',
            'I859', 'I864', 'I982'
        ],
        "metastitic_carcinoma": ['C77', 'C78', 'C79', 'C80'],
        "aids_hiv": ['B20', 'B21', 'B22', 'B24']
    }

    d = icd.icd_to_comorbidities(df,
                                 "id",
                                 ["icd_0", "icd_1", "icd_2", "icd_3", "icd_4"],
                                 mapping=custom_map)

    validation_data = {
        'aids_hiv': {
            1: False,
            2: False,
            3: False
        },
        'cancer': {
            1: False,
            2: False,
            3: False
        },
        'id': {
            1: 1,
            2: 2,
            3: 3
        },
        'metastitic_carcinoma': {
            1: False,
            2: True,
            3: False
        },
        'moderate_or_sever_liver_disease': {
            1: False,
            2: False,
            3: False
        },
        'paraplegia_and_hemiplegia': {
            1: False,
            2: False,
            3: False
        },
        'renal_disease': {
            1: False,
            2: False,
            3: False
        }
    }

    assert d.to_dict(), validation_data
예제 #3
0
def test_invalid_stings():
    with pytest.raises(Exception):
        icd.icd_to_comorbidities(df,
                                 "id",
                                 ["icd_0", "icd_1", "icd_2", "icd_3", "icd_4"],
                                 mapping="bad_string")
예제 #4
0
def test_default_mapping():
    d = icd.icd_to_comorbidities(df, "id",
                                 ["icd_0", "icd_1", "icd_2", "icd_3", "icd_4"])

    validation_data = {
        'aids_hiv': {
            1: False,
            2: False,
            3: False
        },
        'alcohol_abuse': {
            1: False,
            2: False,
            3: False
        },
        'blood_loss_anemia': {
            1: False,
            2: False,
            3: False
        },
        'cardiac_arrhythmia': {
            1: False,
            2: False,
            3: False
        },
        'chronic_pulmonary_disease': {
            1: False,
            2: False,
            3: False
        },
        'coagulopathy': {
            1: False,
            2: False,
            3: False
        },
        'congestive_heart_failure': {
            1: False,
            2: False,
            3: False
        },
        'deficiency_anemia': {
            1: False,
            2: False,
            3: False
        },
        'depression': {
            1: False,
            2: True,
            3: False
        },
        'diabetes_complicated': {
            1: False,
            2: False,
            3: False
        },
        'diabetes_uncomplicated': {
            1: False,
            2: False,
            3: False
        },
        'drug_abuse': {
            1: True,
            2: False,
            3: False
        },
        'fluid_and_electrolyte_disorders': {
            1: False,
            2: False,
            3: False
        },
        'hypertension_complicated': {
            1: False,
            2: False,
            3: False
        },
        'hypertension_uncomplicated': {
            1: False,
            2: False,
            3: False
        },
        'hypothyroidism': {
            1: False,
            2: False,
            3: False
        },
        'id': {
            1: 1,
            2: 2,
            3: 3
        },
        'liver_disease': {
            1: False,
            2: False,
            3: False
        },
        'lymphoma': {
            1: False,
            2: False,
            3: False
        },
        'metastatic_cancer': {
            1: False,
            2: True,
            3: False
        },
        'obesity': {
            1: False,
            2: False,
            3: False
        },
        'other_neurological_disorder': {
            1: False,
            2: False,
            3: True
        },
        'paralysis': {
            1: False,
            2: False,
            3: False
        },
        'peptic_ulcer_disease_excluding_bleeding': {
            1: False,
            2: False,
            3: False
        },
        'peripheral vascular_disorder': {
            1: False,
            2: False,
            3: False
        },
        'psychoses': {
            1: False,
            2: False,
            3: False
        },
        'pulmonary_circulation_disorder': {
            1: False,
            2: False,
            3: False
        },
        'renal_failure': {
            1: False,
            2: False,
            3: False
        },
        'rheumatoid_arhritis': {
            1: False,
            2: False,
            3: False
        },
        'solid_tumor_wo_metastasis': {
            1: False,
            2: False,
            3: False
        },
        'valvular_disease': {
            1: False,
            2: False,
            3: False
        },
        'weight_loss': {
            1: True,
            2: False,
            3: False
        }
    }

    assert d.to_dict(), validation_data
예제 #5
0
def test_charlson_mapping():
    d = icd.icd_to_comorbidities(df,
                                 "id",
                                 ["icd_0", "icd_1", "icd_2", "icd_3", "icd_4"],
                                 mapping="charlson10")

    validation_data = {
        'aids_hiv': {
            1: False,
            2: False,
            3: False
        },
        'cancer': {
            1: False,
            2: False,
            3: False
        },
        'cerebrovascular_disease': {
            1: False,
            2: False,
            3: False
        },
        'chronic_pulmonary_disease': {
            1: False,
            2: False,
            3: False
        },
        'congestive_heart_failure': {
            1: False,
            2: False,
            3: False
        },
        'connective_tissue_disease_rheumatic_disease': {
            1: False,
            2: False,
            3: False
        },
        'dementia': {
            1: False,
            2: False,
            3: False
        },
        'diabetes_w_complications': {
            1: False,
            2: False,
            3: False
        },
        'diabetes_wo_complications': {
            1: False,
            2: False,
            3: False
        },
        'id': {
            1: 1,
            2: 2,
            3: 3
        },
        'metastitic_carcinoma': {
            1: False,
            2: True,
            3: False
        },
        'mild_liver_disease': {
            1: False,
            2: False,
            3: False
        },
        'moderate_or_sever_liver_disease': {
            1: False,
            2: False,
            3: False
        },
        'myocardial_infarction': {
            1: False,
            2: False,
            3: False
        },
        'paraplegia_and_hemiplegia': {
            1: False,
            2: False,
            3: False
        },
        'peptic_ulcer_disease': {
            1: False,
            2: False,
            3: False
        },
        'periphral_vascular_disease': {
            1: False,
            2: False,
            3: False
        },
        'renal_disease': {
            1: False,
            2: False,
            3: False
        }
    }

    assert d.to_dict(), validation_data