-
Notifications
You must be signed in to change notification settings - Fork 48
/
Copy pathcheck_etl.sql
180 lines (157 loc) · 2.99 KB
/
check_etl.sql
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
-- -----------------------------------------------------------------------------
-- File created - January-9-2018
-- ----------------------------------------------------------------------------
-- --------------------------------------------------
-- Need to install pgTAP
-- http://pgtap.org/
-- --------------------------------------------------
BEGIN;
SELECT plan( 7 );
SELECT results_eq
(
'
SELECT hadm_id, count(1) as total
from omop.visit_detail v
JOIN admissions a ON v.visit_occurrence_id = a.mimic_id
WHERE v.visit_type_concept_id = 4079617
GROUP BY 1
ORDER BY 2 DESC, 1;
'
,
'
WITH tmp as
(
SELECT hadm_id, count(1) counter
from transfers
where eventtype is distinct from ''discharge''
group by 1 order by 2 desc
),
minus_bed_changement as
(
SELECT hadm_id, count(*) nb_minus
FROM transfers
WHERE prev_wardid = curr_wardid
group by hadm_id
)
SELECT hadm_id,
case when nb_minus is null then counter else counter - nb_minus end as total
FROM tmp
LEFT JOIN minus_bed_changement USING (hadm_id)
ORDER BY 2 desc, 1;
'
,
'VISIT_DETAIL -- test same number transfers'
);
SELECT results_eq
(
'
SELECT count(visit_source_concept_id)
FROM omop.visit_detail
GROUP BY visit_source_concept_id
ORDER BY 1 DESC;
'
,
'
SELECT count(visit_source_value)
FROM omop.visit_detail
GROUP BY visit_source_value
ORDER BY 1 DESC;
'
,
'VISIT_DETAIL -- test visit_source_value and visit_source_concept_id match'
);
SELECT results_eq
(
'
SELECT COUNT(admitting_source_concept_id)
FROM omop.visit_detail
GROUP BY admitting_source_concept_id
ORDER BY 1 DESC;
'
,
'
SELECT COUNT(admitting_source_value)
FROM omop.visit_detail
GROUP BY admitting_source_value
ORDER BY 1 DESC;
'
,
'VISIT_DETAIL -- test admitting_source_concept_id and admitting_source_value match'
);
SELECT results_eq
(
'
SELECT COUNT(distinct person_id)
, COUNT(distinct visit_occurrence_id)
FROM omop.visit_detail
WHERE visit_detail_concept_id = 581382
AND visit_type_concept_id = 2000000006;
'
,
'
SELECT COUNT(distinct subject_id)
, COUNT(distinct hadm_id)
FROM icustays;
'
,
'VISIT_DETAIL -- test patients number in visit_detail/icustays'
);
SELECT results_eq
(
'
WITH tmp AS
(
SELECT visit_detail_id, visit_occurrence_id
, CASE
WHEN visit_end_datetime < visit_start_datetime
THEN 1
ELSE 0 END AS abnormal
FROM omop.visit_detail
)
SELECT sum(abnormal) FROM tmp;
'
,
'
select 0::integer;
'
,
'VISIT_DETAIL -- check start_datetime < end_datetime'
);
SELECT results_eq
(
'
WITH tmp AS
(
SELECT visit_detail_id, visit_occurrence_id
, CASE
WHEN visit_end_date < visit_start_date
THEN 1
ELSE 0
END AS abnormal
FROM omop.visit_detail
)
SELECT sum(abnormal) FROM tmp;
'
,
'
select 0::integer;
'
,
'VISIT_DETAIL -- check start_date < end_date'
);
select results_eq
(
'
SELECT COUNT(*)::INTEGER AS res
FROM omop.visit_detail
WHERE care_site_id IS NULL;
'
,
'
SELECT 0::INTEGER AS res;
'
,
'VISIT_DETAIL -- check care site is never null'
);
SELECT * FROM finish();
ROLLBACK;