OMOP 本体:字面查询漏掉 57% 的脓毒症患者
上一篇文章里,我们把 MIMIC 变成了 31 个模板。模板解决「怎么查」的问题,但还有一个更隐蔽的问题:查什么?
「查脓毒症患者」——听起来很简单。但 Sepsis 在 ICD-10 里不是 1 个码,是几十个码:A41.9(脓毒症未特指)、A40.0(链球菌脓毒症)、A41.0(金黄色葡萄球菌脓毒症)、A41.5(革兰氏阴性菌脓毒症)……每个码都代表脓毒症的一个子类型。
你写 WHERE icd_code LIKE 'A41%',只抓到一部分;写 LIKE 'A4%',又把不是脓毒症的码捞进来。字面查询和概念查询之间的差距,就是数据里的漏网之鱼。
我们实测过这个差距,结果有点吓人。
● ● ●
字面查询漏了多少
我们在 eICU 数据库(美国 200 多家医院的 ICU 数据,15 万患者)上做了个实验:用两种方式查脓毒症患者。
Sepsis 概念展开:LIKE 查询 vs is-a 展开
方式一(字面前缀):icd_code LIKE 'A41%' 或 LIKE 'R65.2%',靠编码前缀猜。
方式二(本体展开):先查 OMOP 标准词表,找到 Sepsis 概念的全部 135 个后代(is-a 关系展开),再用这 135 个码去查。
结果(ICD-10 口径):
| 20,674 | +57.4% |
多出来的 7,538 名患者,字面查询完全漏掉——因为他们用的不是 A41 或 R65.2 开头的码,而是 A40(链球菌)、A41.0(金黄色葡萄球菌)、B37.7(念珠菌脓毒症)这些「看起来不像」的编码。
贫血更夸张。Anemia 的 ICD-10 码散在 D5x-D6x 十几个族里,字面前缀根本无从写起,本体展开直接 +221.9%(1,615 → 5,198 患者)。
● ● ●
本体是什么
「本体」这个词听着吓人,其实就是一张概念关系网:
- 概念
:1.4 百万个医学概念(Sepsis、AKI、Anemia……每个都有唯一 ID) - is-a 关系
:800 万条「属于」边(A41.9 is-a 脓毒症,脓毒症 is-a 感染性疾病) - 映射关系
:各编码体系互转(ICD-10CM → SNOMED-CT,MIMIC 里的高频诊断码我们实测 12/12 全部映射命中)
OMOP(Observational Medical Outcomes Partnership)是这套东西的行业标准:全球 500 多个数据库、9.7 亿患者的标准化方案。
查询时不是直接 LIKE,而是:问题 → 概念 → 展开全部后代 → 生成 SQL。
● ● ●
为什么 +57.4% 是真实的,不是查询 bug
第一反应肯定是:是不是本体展开把不该算的也算进来了?
我们做了双重验证:
跨库验证。MIMIC 和 eICU 是两个完全独立的 ICU 数据库,各自都有 ICD 编码。我们在两个库上分别做本体展开,增益方向一致(MIMIC 上 Sepsis +36.5%,eICU 上 ICD-9 也是 +36.5%,ICD-10 下 +57.4%)。两个独立库互相印证,不是单个库的编码特例。
0% 增益的反例。AKI(急性肾损伤)本体展开增益 0%,T2DM(2 型糖尿病)也是 0%。为什么?因为这两个病的 ICD 码集中在几个编码区间,字面前缀 LIKE 'N17%' 已经覆盖全了。增益不是恒定的,它和「编码分散度」成正比——编码越散,字面查询漏得越多,本体收益越大。
● ● ●
什么时候用本体,什么时候用模板
这里要诚实说一句:不是所有查询都需要本体。
- 模板路线
(上一篇):31 个模板覆盖高频临床问题,查得快、结果稳。适合 80% 的常见问题。 - 本体路线
(这篇):处理模板覆盖不到的开放式问题,尤其是「某种疾病的所有亚型」。适合查全、查准的场景。
我们的架构里两者是叠加的:模板路由查常见问题,本体层做概念展开兜底。论文复现、队列构建、流行病学统计这类「一个都不能少」的场景,本体展开是必需品。
● ● ●
一个容易踩的坑:展开要包含种子自身
第一次做本体展开时,我们只查了 Sepsis 的后代码,漏了种子概念本身的码(A41.9 是最大的单一编码)。
Sepsis 的 13,136 名患者里,A41.9 占大头。只展开后代、不含种子,等于把最大的一块漏了。展开结果必须包含种子概念自身,这是本体查询最容易错的地方。
● ● ●
对 LLM 的意义
回到 AI 查询的语境:LLM 擅长把「自然语言」变成「编码猜测」,但它不知道 A40.0 也是脓毒症。
把本体展开放在 LLM 前面(问题 → 概念 → 135 个后代码 → SQL),LLM 就不需要记住 A40/A41/B37.7 这些编码知识——它只负责把问题翻译成概念,编码展开交给本体层。编码知识沉淀进数据资产,不靠模型记忆。 这和模板路线的思路一脉相承:把知识放进资产,而不是放进 prompt。
● ● ●
参考来源
- 01
OHDSI OMOP Common Data Model(标准词表与建模规范):https://ohdsi.github.io/CommonDataModel/ - 02
OMOP Athena(词表下载与浏览):https://athena.ohdsi.org/ - 03
SNOMED-CT 与 ICD-10 映射文档:https://www.nlm.nih.gov/healthit/snomedct/ - 04
eICU Collaborative Research Database(交叉验证数据源):https://physionet.org/content/eicu-crd/2.0/