1+ -- Validate the MIMIC-IV tables built correctly by checking against known row counts.
2+ -- This script checks using the number of rows in the MIMIC-IV demo, a 100 patient subset
3+ -- of MIMIC-IV.
4+ WITH expected AS
5+ (
6+ SELECT ' admissions' AS tbl, 275 AS row_count UNION ALL
7+ SELECT ' d_hcpcs' AS tbl, 89200 AS row_count UNION ALL
8+ SELECT ' d_icd_diagnoses' AS tbl, 109775 AS row_count UNION ALL
9+ SELECT ' d_icd_procedures' AS tbl, 85257 AS row_count UNION ALL
10+ SELECT ' d_labitems' AS tbl, 1623 AS row_count UNION ALL
11+ SELECT ' diagnoses_icd' AS tbl, 4506 AS row_count UNION ALL
12+ SELECT ' drgcodes' AS tbl, 454 AS row_count UNION ALL
13+ SELECT ' emar' AS tbl, 35835 AS row_count UNION ALL
14+ SELECT ' emar_detail' AS tbl, 72018 AS row_count UNION ALL
15+ SELECT ' hcpcsevents' AS tbl, 61 AS row_count UNION ALL
16+ SELECT ' labevents' AS tbl, 107727 AS row_count UNION ALL
17+ SELECT ' microbiologyevents' AS tbl, 2899 AS row_count UNION ALL
18+ SELECT ' omr' AS tbl, 2964 AS row_count UNION ALL
19+ SELECT ' patients' AS tbl, 100 AS row_count UNION ALL
20+ SELECT ' pharmacy' AS tbl, 15306 AS row_count UNION ALL
21+ SELECT ' poe' AS tbl, 45154 AS row_count UNION ALL
22+ SELECT ' poe_detail' AS tbl, 3053 AS row_count UNION ALL
23+ SELECT ' prescriptions' AS tbl, 18087 AS row_count UNION ALL
24+ SELECT ' procedures_icd' AS tbl, 722 AS row_count UNION ALL
25+ SELECT ' services' AS tbl, 319 AS row_count UNION ALL
26+ SELECT ' transfers' AS tbl, 1190 AS row_count UNION ALL
27+ -- icu data
28+ SELECT ' icustays' AS tbl, 140 AS row_count UNION ALL
29+ SELECT ' d_items' AS tbl, 4014 AS row_count UNION ALL
30+ SELECT ' chartevents' AS tbl, 668862 AS row_count UNION ALL
31+ SELECT ' datetimeevents' AS tbl, 15280 AS row_count UNION ALL
32+ SELECT ' inputevents' AS tbl, 20404 AS row_count UNION ALL
33+ SELECT ' outputevents' AS tbl, 9362 AS row_count UNION ALL
34+ SELECT ' procedureevents' AS tbl, 1468 AS row_count
35+ )
36+ , observed as
37+ (
38+ SELECT ' admissions' AS tbl, count (* ) AS row_count FROM mimiciv_hosp .admissions UNION ALL
39+ SELECT ' d_hcpcs' AS tbl, count (* ) AS row_count FROM mimiciv_hosp .d_hcpcs UNION ALL
40+ SELECT ' d_icd_diagnoses' AS tbl, count (* ) AS row_count FROM mimiciv_hosp .d_icd_diagnoses UNION ALL
41+ SELECT ' d_icd_procedures' AS tbl, count (* ) AS row_count FROM mimiciv_hosp .d_icd_procedures UNION ALL
42+ SELECT ' d_labitems' AS tbl, count (* ) AS row_count FROM mimiciv_hosp .d_labitems UNION ALL
43+ SELECT ' diagnoses_icd' AS tbl, count (* ) AS row_count FROM mimiciv_hosp .diagnoses_icd UNION ALL
44+ SELECT ' drgcodes' AS tbl, count (* ) AS row_count FROM mimiciv_hosp .drgcodes UNION ALL
45+ SELECT ' emar' AS tbl, count (* ) AS row_count FROM mimiciv_hosp .emar UNION ALL
46+ SELECT ' emar_detail' AS tbl, count (* ) AS row_count FROM mimiciv_hosp .emar_detail UNION ALL
47+ SELECT ' hcpcsevents' AS tbl, count (* ) AS row_count FROM mimiciv_hosp .hcpcsevents UNION ALL
48+ SELECT ' labevents' AS tbl, count (* ) AS row_count FROM mimiciv_hosp .labevents UNION ALL
49+ SELECT ' microbiologyevents' AS tbl, count (* ) AS row_count FROM mimiciv_hosp .microbiologyevents UNION ALL
50+ SELECT ' omr' AS tbl, count (* ) AS row_count FROM mimiciv_hosp .omr UNION ALL
51+ SELECT ' patients' AS tbl, count (* ) AS row_count FROM mimiciv_hosp .patients UNION ALL
52+ SELECT ' pharmacy' AS tbl, count (* ) AS row_count FROM mimiciv_hosp .pharmacy UNION ALL
53+ SELECT ' poe' AS tbl, count (* ) AS row_count FROM mimiciv_hosp .poe UNION ALL
54+ SELECT ' poe_detail' AS tbl, count (* ) AS row_count FROM mimiciv_hosp .poe_detail UNION ALL
55+ SELECT ' prescriptions' AS tbl, count (* ) AS row_count FROM mimiciv_hosp .prescriptions UNION ALL
56+ SELECT ' procedures_icd' AS tbl, count (* ) AS row_count FROM mimiciv_hosp .procedures_icd UNION ALL
57+ SELECT ' services' AS tbl, count (* ) AS row_count FROM mimiciv_hosp .services UNION ALL
58+ SELECT ' transfers' AS tbl, count (* ) AS row_count FROM mimiciv_hosp .transfers UNION ALL
59+ -- icu data
60+ SELECT ' icustays' AS tbl, count (* ) AS row_count FROM mimiciv_icu .icustays UNION ALL
61+ SELECT ' chartevents' AS tbl, count (* ) AS row_count FROM mimiciv_icu .chartevents UNION ALL
62+ SELECT ' d_items' AS tbl, count (* ) AS row_count FROM mimiciv_icu .d_items UNION ALL
63+ SELECT ' datetimeevents' AS tbl, count (* ) AS row_count FROM mimiciv_icu .datetimeevents UNION ALL
64+ SELECT ' inputevents' AS tbl, count (* ) AS row_count FROM mimiciv_icu .inputevents UNION ALL
65+ SELECT ' outputevents' AS tbl, count (* ) AS row_count FROM mimiciv_icu .outputevents UNION ALL
66+ SELECT ' procedureevents' AS tbl, count (* ) AS row_count FROM mimiciv_icu .procedureevents
67+ )
68+ SELECT
69+ exp .tbl
70+ , exp .row_count AS expected_count
71+ , obs .row_count AS observed_count
72+ , CASE
73+ WHEN exp .row_count = obs .row_count
74+ THEN ' PASSED'
75+ ELSE ' FAILED'
76+ END AS ROW_COUNT_CHECK
77+ FROM expected exp
78+ INNER JOIN observed obs
79+ ON exp .tbl = obs .tbl
80+ ORDER BY exp .tbl
81+ ;
0 commit comments