Example #1
0
def build_meds_frame(ta, frame_name, in_path, overwrite = True):

    print "*** CREATING DRUG HISTORY FRAME at " + frame_name
    if (frame_name in ta.get_frame_names()):
        if (not overwrite):
            return ta.get_frame(frame_name)
        else:
            ta.drop_frames([frame_name])

    add_udf_files(ta, [clean_drugs, derived_features, history_utilities, uphs_fields, uphs_schema])

    data_fields = [ PATID, VISID, ADM_DATE,  MED_ORDER_NAMEs, DISCHARGE_MED_ORDER_NAMEs ]
    data_frame = loader.load_frame(ta, in_path, frame_name, data_fields)

    print "Filtering out rows with missing or junk patient ids and/or visit ids"

    data_frame.filter(lambda row:  row[PATID] != None and row[VISID] != None and [PATID] != 'None' and row[VISID] != 'None')
    data_defaults = {MED_ORDER_NAMEs : "", DISCHARGE_MED_ORDER_NAMEs: ""}

    print "Imputing missing drug fields with empty lists"
    impute_with_constants(data_frame, data_defaults)


    data_frame.add_columns(lambda row: row[MED_ORDER_NAMEs] + ", " + row[DISCHARGE_MED_ORDER_NAMEs], (UNCLEAN_COMBINED_MEDLIST, str))
    data_frame.drop_columns([MED_ORDER_NAMEs, DISCHARGE_MED_ORDER_NAMEs])

    data_frame.add_columns(lambda row: drug_cleaner.to_clean_doc(row[UNCLEAN_COMBINED_MEDLIST], medlist_delimiter), (COMBINED_MEDLIST, str))
    data_frame.drop_columns([UNCLEAN_COMBINED_MEDLIST])

    return data_frame
def inpat_med_lists_prior_to_admit(admit_date_atk, window,  inpat_history, meds_field, history_delimiter = '|'):

    if admit_date_atk == None:
        return ""

    end = get_datetime_from_atk_encoding(admit_date_atk)
    start = end - datetime.timedelta(days = window)


    import json
    inpat_json_events = filter(lambda event: ADM_DATE in event, map(json.loads, char_sep_string_to_list(inpat_history, delimiter=history_delimiter)))

    in_visits = events_admitting_in_range(inpat_json_events, start, end)


    from clean_drugs import to_clean_doc

    if (in_visits == []):
        return ""
    else:
        med_list =  ' '.join(map(lambda event: get_string_field(event, MED_ORDER_NAMEs) + get_string_field(event, meds_field), in_visits))
        return to_clean_doc(med_list)