In [1]:
# Import libraries
import pandas as pd
import matplotlib.pyplot as plt
import psycopg2
import os
# Plot settings
%matplotlib inline
plt.style.use('ggplot')
fontsize = 20 # size for x and y ticks
plt.rcParams['legend.fontsize'] = fontsize
plt.rcParams.update({'font.size': fontsize})
In [2]:
# create a database connection
sqluser = 'postgres'
dbname = 'eicu'
schema_name = 'eicu_crd'
sqlhost = 'localhost'
sqlport = 5432
# Connect to the database
con = psycopg2.connect(dbname=dbname, user=sqluser, host=sqlhost, port=sqlport)
In [3]:
query_schema = 'set search_path to public,eicu_crd_phi;'
query = query_schema + """
with t1 as
(
select
patientunitstayid
, treatmentoffset
, case
when treatmentstring like 'pulmonary|ventilation and oxygenation|mechanical ventilation%' then 1
when treatmentstring like 'surgery|pulmonary therapies|mechanical ventilation%' then 1
when treatmentstring like 'toxicology|drug overdose|mechanical ventilation%' then 1
else 0 end as mechvent
from treatment
)
select
patientunitstayid
, min(treatmentoffset) as mvstart
, max(treatmentoffset) as mvend
from t1
where mechvent = 1
group by patientunitstayid
order by patientunitstayid
"""
tr = pd.read_sql_query(query, con)
In [8]:
query_schema = 'set search_path to public,eicu_crd_phi;'
query = query_schema + """
select
apv.patientunitstayid
, oOBIntubDay1 as mv_apache
from apachepredvar apv
inner join apachepatientresult apr
on apv.patientunitstayid = apr.patientunitstayid
and apacheversion = 'IVa'
where apr.predictedhospitalmortality != '-1'
"""
ap = pd.read_sql_query(query, con)
In [16]:
# cross-reference
df = ap.merge(tr, how='left', on='patientunitstayid').copy()
df['mv_treatment'] = (df['mvstart'] < 1440).astype(int)
pd.crosstab(df['mv_apache'],df['mv_treatment'], margins=True, normalize=True)
Out[16]:
In [15]:
df.loc[~df['mvstart'].isnull(),:]
Out[15]: