3. 临床知识表示与规则建模
临床决策支持系统(CDSS)能否真正落地,关键不在界面,而在“知识是否被表示成机器可执行的形式”。指南文本是给人读的,规则是给引擎执行的,两者之间需要一次严谨的“知识化”翻译。本节以高血压/糖尿病指南片段为例,走完从自然语言到可执行规则集的完整链路。
一、指南知识化的基本对象
指南知识化,是把“条件—判断—建议”从叙述性文本中抽取为结构化三元组:患者状态(条件)→ 逻辑判断 → 推荐动作。以《中国高血压防治指南》和《2型糖尿病防治指南》常见片段为例,可抽取的核心对象包括:
- 数据项:收缩压(SBP)、舒张压(SDP)、空腹血糖(FPG)、糖化血红蛋白(HbA1c)、年龄、是否合并糖尿病、是否合并慢性肾病(CKD)、是否妊娠。
- 判断阈值:如 SBP≥140 mmHg 且/或 DBP≥90 mmHg 为高血压;FPG≥7.0 mmol/L 或 HbA1c≥6.5% 提示糖尿病。
- 推荐动作:生活方式干预、启动降压药、启动二甲双胍、转诊、复查周期。
知识化的产物不是一段文字,而是一组带条件、带优先级、带动作的结构化规则。它必须能被规则引擎解析,也能被人复核。
二、规则引擎与决策表
规则引擎负责“匹配条件、触发动作”。主流做法有两种表达:产生式规则(IF-THEN)和决策表(条件行 × 动作列)。产生式规则灵活,适合复杂嵌套;决策表紧凑,适合阈值明确、组合有限的场景,且便于临床专家逐行核对。
以高血压合并糖尿病的初始治疗为例,可写成如下决策表(示例参数,仅用于教学):
| 规则ID | 条件:SBP/DBP | 条件:合并糖尿病 | 条件:合并CKD | 动作 | 优先级 |
|---|---|---|---|---|---|
| R1 | ≥140/90 | 是 | 否 | 启动ACEI/ARB + 生活方式干预 | 1 |
| R2 | ≥140/90 | 是 | 是 | 启动ACEI/ARB,监测eGFR与血钾 | 1 |
| R3 | 130–139/85–89 | 是 | 否 | 强化生活方式干预,3个月复查 | 2 |
| R4 | <130/80 | 是 | 任意 | 维持现有方案,年度评估 | 3 |
决策表的每一行就是一条可执行规则。引擎按优先级从高到低匹配,命中即触发动作,避免多条规则冲突。若同一患者同时命中 R1 与 R3,优先级保证只执行 R1。
三、临床逻辑模型与知识图谱基础
规则解决“单点判断”,临床逻辑模型解决“多病共存、时序演进”。它把患者状态建模为状态机:未诊断 → 已诊断未治疗 → 治疗中未达标 → 治疗中达标 → 并发症期,每个状态迁移由规则触发。这样,CDSS 不只看一次血压值,而是看患者处于哪个阶段、下一步该做什么。
知识图谱则把“疾病—药物—检查—禁忌—并发症”连成网络。例如节点“糖尿病”连向“二甲双胍”“eGFR”“乳酸酸中毒风险”,当患者 eGFR<30 mL/min/1.73m² 时,图谱可沿边推导出“二甲双胍禁用”。图谱擅长表达关系与推理路径,规则引擎擅长执行判断,两者常配合使用:图谱提供候选关系,规则引擎做最终裁决。
四、实战:把一段指南变成可执行规则集
假设指南原文为:“对合并糖尿病的高血压患者,若 SBP≥140 mmHg 或 DBP≥90 mmHg,推荐启动 ACEI 或 ARB;若 eGFR<30 mL/min/1.73m²,禁用二甲双胍;未达标者每 3 个月复查。”知识化过程分四步:
- 抽取条件:SBP、DBP、糖尿病标志、eGFR。
- 定义阈值:140、90、30。
- 绑定动作:启动ACEI/ARB、禁用二甲双胍、3个月复查。
- 设定优先级:禁忌规则优先于用药规则,避免“先开药再发现禁用”。
写成产生式规则(伪代码,示例):
rule R1:
when SBP >= 140 or DBP >= 90
and has_diabetes == true
then recommend("启动ACEI/ARB")
priority 1
rule R2:
when eGFR < 30
then contraindicate("二甲双胍")
priority 0 // 最高,先于用药规则
rule R3:
when target_not_reached == true
then schedule("3个月复查")
priority 2
引擎执行时,先跑 R2 做禁忌筛查,再跑 R1 做用药推荐,最后 R3 安排随访。这样,一条指南片段就变成了可执行、可审计、可版本管理的规则集。
五、结果如何判断
规则集是否可用,看三个信号:一是覆盖率——指南中可结构化的条目占比;二是冲突率——同一患者命中多条互斥规则的比例,应通过优先级或互斥条件降到接近零;三是可解释性——每条推荐能否回溯到具体规则ID和指南出处。以示例规则集为例,若 100 例模拟患者中 92 例能命中至少一条规则、冲突仅 2 例且均可由优先级消解,则说明知识化基本达标。
规则引擎、决策表、临床逻辑模型与知识图谱并非互斥,而是分层配合:决策表负责阈值明确的单点判断,规则引擎负责执行与优先级调度,逻辑模型负责时序与状态迁移,知识图谱负责关系推理与禁忌发现。把指南片段按这四层拆解,CDSS 才真正具备“可执行”的临床知识底座。