Estimate baseline serum creatinine for AKI assessment. Use for KDIGO staging, AKI research, or renal function baseline establishment.
Estimates the patient's baseline (pre-illness) serum creatinine, which is critical for accurate AKI staging. The true baseline is often unknown; this query uses a hierarchical approach.
The baseline creatinine is determined hierarchically:
SELECT
hadm_id,
gender,
age,
scr_min, -- Lowest creatinine during admission
ckd, -- 1 if CKD diagnosis present
mdrd_est, -- Estimated creatinine from MDRD
scr_baseline -- Final baseline determination
FROM mimiciv_derived.creatinine_baseline;
For patients without normal creatinine and without CKD, baseline is estimated:
Male patients:
scr_baseline = (75 / 186 / age^(-0.203))^(-1/1.154)
Female patients:
scr_baseline = (75 / 186 / age^(-0.203) / 0.742)^(-1/1.154)
This back-calculates creatinine assuming eGFR = 75 mL/min/1.73m^2 (lower limit of normal).
CKD is identified from ICD codes:
Adults Only: Query filters to age >= 18 (pediatric creatinine norms differ).
MDRD Limitations:
Admission Bias: Using admission creatinine as baseline may underestimate for patients admitted already in AKI (AKI-on-admission).
CKD May Be Coded Late: ICD codes are assigned at discharge, so this technically uses future information. In most research this is acceptable.
Missing Values: If no creatinine measured during admission, baseline will be NULL.
Race Coefficient: The original MDRD had a race coefficient; this implementation does not use it, consistent with recent guidelines removing race from eGFR calculations.
SELECT
CASE
WHEN scr_min <= 1.1 THEN 'Normal admission Cr'
WHEN ckd = 1 THEN 'CKD (using min)'
ELSE 'MDRD estimated'
END AS baseline_source,
COUNT(*) AS n_admissions,
ROUND(AVG(scr_baseline), 2) AS avg_baseline
FROM mimiciv_derived.creatinine_baseline
GROUP BY 1;
SELECT
cb.hadm_id,
cb.scr_baseline,
cb.scr_min AS admission_min_cr,
ROUND(cb.scr_min / NULLIF(cb.scr_baseline, 0), 2) AS cr_ratio,
CASE
WHEN cb.scr_min >= cb.scr_baseline * 1.5 THEN 'AKI Stage 1+'
ELSE 'No AKI at admission'
END AS admission_aki_status
FROM mimiciv_derived.creatinine_baseline cb
WHERE cb.scr_baseline IS NOT NULL;
SELECT
CASE
WHEN age < 40 THEN '<40'
WHEN age < 60 THEN '40-59'
WHEN age < 80 THEN '60-79'
ELSE '80+'
END AS age_group,
gender,
ROUND(AVG(mdrd_est), 2) AS avg_mdrd_baseline
FROM mimiciv_derived.creatinine_baseline
WHERE ckd = 0 AND scr_min > 1.1
GROUP BY 1, 2
ORDER BY 1, 2;
Other approaches used in literature (not implemented here):