判断AKI我们可以通过肌酐和尿量两个指标来看, 今天我们主要提取肌酐。
kidgo指南的表格
AKI诊断标准: |
---|
符合以下情况之一者即可被诊断为AKI: |
①48小时内Scr升高超过26.5μmol/L(0.3mg/dl); |
②Scr升高超过基线1.5倍——确认或推测为7天内发生; |
③尿量<0.5ml/(kg·h),且持续6小时以上。 |
AKI分期标准: | ||
---|---|---|
分期 | Scr | 尿量 |
1期 | 升高为基线的1.5~1.9倍,或升高超过26.5μmol/L(0.3mg/dl) | <0.5ml/(kg·h) 持续6~12h |
2期 | 升高为基线的2.0~2.9倍 | <0.5ml/(kg·h) ≥12h |
3期 | 升高为基线的3倍,或绝对值≥353.6μmol/L(4.0mg/dl),或开始使用肾脏替代治疗,或患者<18岁且eGFR<35ml/(min·1.73m2) | <0.3ml/(kg·h) ≥24h,或无尿≥12h |
结果解读 | 根据AKI分期的推荐处理如下: |
---|---|
相关解释 | 1.单用尿量改变作为诊断标准时,需要除外尿路梗阻及其他导致尿量减少的原因。2.指南推荐血清肌酐和尿量仍然作为AKI最好的标志物(ⅠB)。 |
参考来源 | 1. KDIGO Clinical Practice Guideline for Acute Kidney Injury. 2012.3. http://www.kidney-international.org2. 图片作者:大连医科大学附属第一医院 重症医学科 李青栋 |
AKI是MIMIC相关研究的常用指标,MIMIC数据库里面AKI诊断按照KIDGO指南,内容太多,今天这个只包括肌酐水平评估:
MIMIC数据库里面的基线值并不是一个固定的值而是动态的值。
主要涉及ICU住院记录icustays和实验室检查labevents两张表。
labevents表里CHARTTIME表示测量时间,VALUENUM表示测量值。
icustays表里面intime和outtime分别表示出入ICU时间。
两张表格根据subject_id这个患者唯一标识进行连接。
一、kdigo_creatinine.sql 提取入ICU前7天所有肌酐值
-- Extract all creatinine values from labevents around patient's ICU stay 从患者入住 ICU 期间的实验室事件中提取所有肌酐值
-- 提取入ICU前7天所有肌酐值
WITH cr AS (
SELECT
ie.hadm_id
, ie.stay_id
, le.charttime
-- 如果同一个时间点有两个检查就取平均值
, AVG(le.valuenum) AS creat
-- 主要涉及ICU住院记录icustays和实验室检查labevents两张表。
FROM mimiciv_icu.icustays ie
LEFT JOIN mimiciv_hosp.labevents le
-- 使用subject_id连接表格
ON ie.subject_id = le.subject_id
-- 使用ITEMID 50912提取肌酐
AND le.itemid = 50912
AND le.valuenum IS NOT NULL
-- 只包括<150的肌酐值,超过为异常值
AND le.valuenum <= 150
-- 提取范围是入ICU时间前7天。
AND le.charttime >= mimiciv_derived.DATETIME_SUB(ie.intime, INTERVAL '7' DAY)
AND le.charttime <= ie.outtime
GROUP BY ie.hadm_id, ie.stay_id, le.charttime
)
-- -- 每个肌酐检查值之前48小时的肌酐最小值
, cr48 AS (
-- add in the lowest value in the previous 48 hours
-- 添加过去 48 小时内的最低值
SELECT
cr.stay_id
, cr.charttime
, MIN(cr48.creat) AS creat_low_past_48hr
FROM cr
-- add in all creatinine values in the last 48 hours
-- 添加过去 48 小时内的所有肌酐值
LEFT JOIN cr cr48
ON cr.stay_id = cr48.stay_id
AND cr48.charttime < cr.charttime
AND cr48.charttime >= mimiciv_derived.DATETIME_SUB(cr.charttime, INTERVAL '48' HOUR)
GROUP BY cr.stay_id, cr.charttime
)
-- 每个肌酐检查值之前七天最小肌酐值
, cr7 AS (
-- add in the lowest value in the previous 7 days
-- 添加前 7 天内的最低值
SELECT
cr.stay_id
, cr.charttime
, MIN(cr7.creat) AS creat_low_past_7day
FROM cr
-- add in all creatinine values in the last 7 days
-- 添加过去 7 天内的所有肌酐值
LEFT JOIN cr cr7
ON cr.stay_id = cr7.stay_id
AND cr7.charttime < cr.charttime
AND cr7.charttime >= mimiciv_derived.DATETIME_SUB(cr.charttime, INTERVAL '7' DAY)
GROUP BY cr.stay_id, cr.charttime
)
SELECT
cr.hadm_id
, cr.stay_id
, cr.charttime
, cr.creat
, cr48.creat_low_past_48hr
, cr7.creat_low_past_7day
FROM cr
LEFT JOIN cr48
ON cr.stay_id = cr48.stay_id
AND cr.charttime = cr48.charttime
LEFT JOIN cr7
ON cr.stay_id = cr7.stay_id
AND cr.charttime = cr7.charttime
;
二、kdigo_stages.sql 基线标准
如何理解上面说的这个基线值是动态的?我们来看下kdigo标准的sql
CREATE MATERIALIZED VIEW work.organfailure_kdigo_stage_cr_only AS
SELECT
cr.stay_id
, cr.charttime
, cr.creat_low_past_7day
, cr.creat_low_past_48hr
, cr.creat
, CASE
-- 3x baseline
-- 7天内超过基线值3倍
WHEN cr.creat >= (cr.creat_low_past_7day * 3.0) THEN 3
-- *OR* cr >= 4.0 with associated increase
-- 肌酐超过4mg/dl同时基线值1.5倍
-- 或者
-- 肌酐超过4mg/dl同时在48小时内增长超过0.3mg/dl(4-3.7)
WHEN cr.creat >= 4
-- For patients reaching Stage 3 by SCr >4.0 mg/dl
-- require that the patient first achieve ...
-- an acute increase >= 0.3 within 48 hr
-- *or* an increase of >= 1.5 times baseline
AND (
cr.creat_low_past_48hr <= 3.7 OR cr.creat >= (
1.5 * cr.creat_low_past_7day
)
)
THEN 3
-- TODO: initiation of RRT
-- 超过基线值2倍
WHEN cr.creat >= (cr.creat_low_past_7day * 2.0) THEN 2
-- 48小时内Cr增长超过0.3mg/dl
WHEN cr.creat >= (cr.creat_low_past_48hr + 0.3) THEN 1
-- 7天内超过基线值1.5倍
WHEN cr.creat >= (cr.creat_low_past_7day * 1.5) THEN 1
ELSE 0 END AS aki_stage_creat
FROM mimiciv_derived.kdigo_creatinine cr
我们来从organfailure_kdigo_stage_cr_only里面选取一个病人来看。
-
stay_id:30013402
可以看出来,这个病人住ICU前七天到出ICU期间一共做了12次下肌酐,第3次肌酐前面两次肌酐分别为1.6和1.5,都是48小时内,所有48小时内基线和7天内基线都是他们中的最小值1.5,增加超过0.3,所以是AKI1级;第7次肌酐检查时,前48小时基线值和前7天基线值就不一样了,增长超过基线两倍,所以是AKI2级
我们看到在kdigo_stages.sql下还有提取尿量和CRRT的代码,感兴趣同学看这篇和后续文章,本章暂时不讲解
三、(必看)官方代码里面存在的的问题!!!
我们看图中红框内的代码
在 KDIGO AKI 标准第21页(KDIGO-2012-AKI-Guideline, 后台回复 “KDIGO AKI 2012” 下载)中,AKI 第 3 阶段的定义是满足以下两个条件:
-
sCR >=4.0
-
sCR 增量 >=0.3 48h内 or sCR 基线* 1.5
然而,上述代码的逻辑是由固定数字3.7定义的。这是错误的定义,所以应该改为
CREATE MATERIALIZED VIEW work.organfailure_kdigo_stage_cr_only_2 AS
SELECT
cr.stay_id
, cr.charttime
, cr.creat_low_past_7day
, cr.creat_low_past_48hr
, cr.creat
, CASE
-- 3x baseline
-- 7天内超过基线值3倍
WHEN cr.creat >= (cr.creat_low_past_7day * 3.0) THEN 3
-- *OR* cr >= 4.0 with associated increase
-- 肌酐超过4mg/dl同时基线值1.5倍
-- 或者
-- 肌酐超过4mg/dl同时在48小时内增长超过0.3mg/dl(4-3.7)
WHEN cr.creat >= 4
-- For patients reaching Stage 3 by SCr >4.0 mg/dl
-- require that the patient first achieve ...
-- an acute increase >= 0.3 within 48 hr
-- *or* an increase of >= 1.5 times baseline
-- 这行修改了代码
AND (cr.creat >= (cr.creat_low_past_48hr+0.3) OR cr.creat >= (1.5 *cr.creat_low_past_7day))
THEN 3
-- TODO: initiation of RRT
-- 超过基线值2倍
WHEN cr.creat >= (cr.creat_low_past_7day * 2.0) THEN 2
-- 48小时内Cr增长超过0.3mg/dl
WHEN cr.creat >= (cr.creat_low_past_48hr + 0.3) THEN 1
-- 7天内超过基线值1.5倍
WHEN cr.creat >= (cr.creat_low_past_7day * 1.5) THEN 1
ELSE 0 END AS aki_stage_creat
FROM mimiciv_derived.kdigo_creatinine cr
查看筛选出来的数据是有很大差异的
该问题官方已经准备在下个版本修复
这是有道理的,对于初始肌酐为 4.0 或更高的人来说,这不会导致 AKI。我会尽快修复它,可能值得进行前后比较。