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 get_basic_features(ta, frame_name, in_path, overwrite = True): if (frame_name in ta.get_frame_names()): if (not overwrite): return ta.get_frame(frame_name) else: ta.drop_frames(frame_name) frame = loader.load_frame(ta, in_path, frame_name, data_columns) add_udf_files(ta, [uphs_fields, filters]) frame.filter(lambda row: patid_filter(row) and visid_filter(row)) impute_with_constants(frame, default_values) return frame