def get_physio_data(self):

            all_physio_data = []

            for measure in PHYSIO_MEASURES:

                print(f"""Querying {measure['name']}""")

                physio_data = query_database(f'''SELECT 
                                                hadm_id,
                                                avg(valuenum) AS AVG_{measure['name']},
                                                stddev(valuenum) AS STD_{measure['name']}
                                                FROM chartevents
                                                WHERE itemid in ({measure['itemid']})
                                                GROUP BY hadm_id
                                                ''')

                filtered_avg_data = remove_outliers(physio_data, 1, 0.01, 0.99)
                filtered_all_data = remove_outliers(physio_data, 2, 0.01, 0.99)

                all_physio_data.append(filtered_all_data)

            return reduce(
                lambda left, right: pd.merge(
                    left, right, on='hadm_id', how='outer'), all_physio_data)
        def _get_surgery_flags(self):

            surgery_flags = pd.read_csv(
                'C:\\mimic-iii-project\\resources\\surgery_flags_i9_2015.csv')
            surgery_flags.columns = ['ICD9_PROC_CODE', 'SURGERY_FLAG', 'DESC']
            surgery_flags['ICD9_PROC_CODE'] = surgery_flags.apply(
                lambda x: int(x['ICD9_PROC_CODE'][1:5]), axis=1)
            surgery_flags['SURGERY_FLAG'] = surgery_flags.apply(
                lambda x: int(x['SURGERY_FLAG'][1:2]), axis=1)

            icd9_proc_codes = query_database(PROC_ICD9_CODES_QUERY)
            icd9_proc_codes['icd9_code'] = icd9_proc_codes['icd9_code'].astype(
                int)

            merge = pd.merge(surgery_flags,
                             icd9_proc_codes,
                             left_on='ICD9_PROC_CODE',
                             right_on='icd9_code',
                             how='outer')
            merge['SURGERY_FLAG'] = merge['SURGERY_FLAG'].map(
                lambda x: preprocessing_service.
                convert_surgery_flag_to_category(x))
            surgery_flags = merge[['hadm_id', 'SURGERY_FLAG']]
            surgery_flags.dropna(inplace=True)

            return surgery_flags
Esempio n. 3
0
def get_report():
    try:
        file = open(os.path.join(app.config['UPLOAD_FOLDER'], app.config['FILE_NAME']+'.txt'))
        report_file_path = app.config['UPLOAD_FOLDER']+'/report.pdf'
        email = request.args['messages']
        hash_values = [line.strip() for line in file]
        total = len(hash_values)
        counter = 0
        report = []
        for lines in list(helper_service.divide_chunks(hash_values, 4)):
            api_server_hits = 0
            for line in lines:
                try:
                    response = query_service.query_database(line)
                    if 'update_flag' in response.keys() and 'value' in response.keys():
                        report.append(query_service.query_server(response['value'],response['update_flag']))
                        api_server_hits+=1
                    else:
                        report.append(response)
                except Exception as e:
                    print(e)
                    continue
            counter += len(lines)
            if api_server_hits>0:
                time.sleep(60)
            print("Percentage of records processed: {}%".format((counter/total)*100))
        pdf_service.create_report_pdf(report,report_file_path)
        email_service.send_email(app.config['GENERIC_EMAIL'],email,app.config['PASSWD'],'report.pdf',report_file_path)
        return "Please find the report attached in the email sent to: "+ email
    except Exception as e:
        print(e)
        def _get_ages(self):

            ages = query_database(AGE_QUERY)

            ages['age'] = ages.apply(lambda x: x['age']
                                     if x['age'] < 300 else 91.4,
                                     axis=1)

            return ages
        def _get_icd9_diag_codes(self):

            icd9_codes = query_database(DIAG_ICD9_CODES_QUERY)
            icd9_codes['icd9_group'] = icd9_codes.apply(
                lambda x: preprocessing_service.group_diag_icd9_code(x[
                    'icd9_code']),
                axis=1)

            return icd9_codes[['hadm_id', 'icd9_group']]
        def _get_services(self):

            services = query_database(SERVICE_QUERY)
            relevant_services_list = list(
                services.apply(
                    lambda x: preprocessing_service.
                    get_relevant_admission_service(x['hadm_id'], services),
                    axis=1))
            relevant_services_df = pd.DataFrame(relevant_services_list,
                                                columns=['hadm_id', 'service'])
            grouped_services = relevant_services_df.groupby("hadm_id").first()
            grouped_services['hadm_id'] = grouped_services.index
            return grouped_services
        def get_lab_data(self):

            lab_results_dfs = []

            for measure in LAB_TEST:

                print(f"""Querying {measure['test']}""")

                lab_test_df = query_database(f'''SELECT hadm_id, 
                                             avg(valuenum) AS AVG_{measure['test']},
                                             stddev(valuenum) AS STD_{measure['test']}
                                             FROM labevents
                                             WHERE itemid in ({measure['itemid']} )
                                             GROUP BY hadm_id''')

                filtered_data = remove_outliers(lab_test_df, 1, 0.01, 0.99)

                lab_results_dfs.append(filtered_data)

            return reduce(
                lambda left, right: pd.merge(
                    left, right, on='hadm_id', how='outer'), lab_results_dfs)
Esempio n. 8
0
    def get_mortality(self):

        return query_database(MORTALITY_QUERY)
        def _get_hospital_expire_flag(self):

            return query_database(HOSPITAL_EXPIRE_FLAG_QUERY)
Esempio n. 10
0
        def _get_mechanical_ventilation_time(self):

            return query_database(MECHANICAL_VENTILATION_TIME_QUERY)
Esempio n. 11
0
        def _get_glasgow_coma_scale(self):

            return query_database(GLASGOW_COMA_SCALE_QUERY)
Esempio n. 12
0
        def _get_severity_scores(self):

            return query_database(SEVERITY_SCORES_QUERY)
Esempio n. 13
0
        def _get_procedure_count(self):

            return query_database(PROCEDURE_COUNT_QUERY)
Esempio n. 14
0
        def _get_total_length_of_stay(self):

            return query_database(TOTAL_LOS_QUERY)
Esempio n. 15
0
        def _get_genders(self):

            return query_database(GENDER_QUERY)
Esempio n. 16
0
        def _get_marital_status(self):

            marital_status_df = query_database(MARITAL_STATUS_QUERY)

            return preprocessing_service.group_marital_status(
                marital_status_df)
Esempio n. 17
0
        def _get_religion(self):

            religion_df = query_database(RELIGION_QUERY)

            return preprocessing_service.group_religion(religion_df)
Esempio n. 18
0
    def get_mortality_time(self):

        return query_database(MORTALITY_TIME_QUERY)
Esempio n. 19
0
        def _get_previous_admissions_count(self):

            admissions = query_database(PREVIOUS_ADMISSIONS_QUERY)

            return get_admission_number(admissions)
Esempio n. 20
0
        def _get_icu_length_of_stay(self):

            return query_database(ICU_LOS_QUERY)
Esempio n. 21
0
        def _get_ethnic_group(self):

            ethnic_group_df = query_database(ETHNICITY_QUERY)

            return preprocessing_service.group_ethnic_groups(ethnic_group_df)