1+ -- This query creates a single table with ongoing doses of vasoactive agents.
2+ -- TBD: rarely angiotensin II, methylene blue, and isoprenaline/isoproterenol are used.
3+ -- these are not in the query currently (they don't appear to be documented in MetaVision).
4+
5+ -- collect all vasopressor administration times
6+ -- create a single table with these as start/stop times
7+ WITH tm AS
8+ (
9+ SELECT stay_id, starttime AS vasotime FROM mimic_derived .dobutamine
10+ UNION DISTINCT
11+ SELECT stay_id, starttime AS vasotime FROM mimic_derived .dopamine
12+ UNION DISTINCT
13+ SELECT stay_id, starttime AS vasotime FROM mimic_derived .epinephrine
14+ UNION DISTINCT
15+ SELECT stay_id, starttime AS vasotime FROM mimic_derived .norepinephrine
16+ UNION DISTINCT
17+ SELECT stay_id, starttime AS vasotime FROM mimic_derived .phenylephrine
18+ UNION DISTINCT
19+ SELECT stay_id, starttime AS vasotime FROM mimic_derived .vasopressin
20+ UNION DISTINCT
21+ SELECT stay_id, starttime AS vasotime FROM mimic_derived .milrinone
22+ UNION DISTINCT
23+ -- combine end times from the same tables
24+ SELECT stay_id, endtime AS vasotime FROM mimic_derived .dobutamine
25+ UNION DISTINCT
26+ SELECT stay_id, endtime AS vasotime FROM mimic_derived .dopamine
27+ UNION DISTINCT
28+ SELECT stay_id, endtime AS vasotime FROM mimic_derived .epinephrine
29+ UNION DISTINCT
30+ SELECT stay_id, endtime AS vasotime FROM mimic_derived .norepinephrine
31+ UNION DISTINCT
32+ SELECT stay_id, endtime AS vasotime FROM mimic_derived .phenylephrine
33+ UNION DISTINCT
34+ SELECT stay_id, endtime AS vasotime FROM mimic_derived .vasopressin
35+ UNION DISTINCT
36+ SELECT stay_id, endtime AS vasotime FROM mimic_derived .milrinone
37+ )
38+ -- create starttime/endtime from all possible times collected
39+ , tm_lag AS
40+ (
41+ SELECT stay_id
42+ , vasotime AS starttime
43+ -- note: the last row for each partition (stay_id) will have a NULL endtime
44+ -- we can drop this row later, as we know that no vasopressor will start at this time
45+ -- (otherwise, we would have a later end time, which would mean it's not the last row!)
46+ -- QED? :)
47+ , LEAD(vasotime, 1 ) OVER (PARTITION BY stay_id ORDER BY vasotime) AS endtime
48+ FROM tm
49+ )
50+ -- left join to raw data tables to combine doses
51+ SELECT t .stay_id , t .starttime , t .endtime
52+ -- inopressors/vasopressors
53+ , dop .vaso_rate AS dopamine
54+ , epi .vaso_rate AS epinephrine
55+ , nor .vaso_rate AS norepinephrine
56+ , phe .vaso_rate AS phenylephrine
57+ , vas .vaso_rate AS vasopressin
58+ -- inodialators
59+ , dob .vaso_rate AS dobutamine
60+ , mil .vaso_rate AS milrinone
61+ -- isoproterenol is used in CCU/CVICU but not in metavision
62+ -- other drugs not included here but (rarely) used in the BIDMC:
63+ -- angiotensin II, methylene blue
64+ FROM tm_lag t
65+ LEFT JOIN mimic_derived .dobutamine dob
66+ ON t .stay_id = dob .stay_id
67+ AND t .starttime >= dob .starttime
68+ AND t .endtime <= dob .endtime
69+ LEFT JOIN mimic_derived .dopamine dop
70+ ON t .stay_id = dop .stay_id
71+ AND t .starttime >= dop .starttime
72+ AND t .endtime <= dop .endtime
73+ LEFT JOIN mimic_derived .epinephrine epi
74+ ON t .stay_id = epi .stay_id
75+ AND t .starttime >= epi .starttime
76+ AND t .endtime <= epi .endtime
77+ LEFT JOIN mimic_derived .norepinephrine nor
78+ ON t .stay_id = nor .stay_id
79+ AND t .starttime >= nor .starttime
80+ AND t .endtime <= nor .endtime
81+ LEFT JOIN mimic_derived .phenylephrine phe
82+ ON t .stay_id = phe .stay_id
83+ AND t .starttime >= phe .starttime
84+ AND t .endtime <= phe .endtime
85+ LEFT JOIN mimic_derived .vasopressin vas
86+ ON t .stay_id = vas .stay_id
87+ AND t .starttime >= vas .starttime
88+ AND t .endtime <= vas .endtime
89+ LEFT JOIN mimic_derived .milrinone mil
90+ ON t .stay_id = mil .stay_id
91+ AND t .starttime >= mil .starttime
92+ AND t .endtime <= mil .endtime
93+ -- remove the final row for each stay_id
94+ -- it will not have any infusions associated with it
95+ WHERE t .endtime IS NOT NULL ;
0 commit comments