在医疗信息化快速发展的今天,电子健康记录(EHR)系统已成为现代医疗机构的核心基础设施。然而,面对海量且高度碎片化的临床数据,医生和医疗从业者常常陷入"数据丰富但信息贫乏"的困境。传统EHR系统主要服务于数据存储和检索功能,缺乏对临床决策的智能支持能力。
AGENTEHR项目应运而生,旨在构建一个基于大型语言模型(LLM)的自主代理系统,能够直接在原始EHR数据上进行复杂的临床推理和决策。与现有解决方案相比,该项目具有三个显著特点:
关键突破:RETROSUM框架解决了传统单向总结方法在临床场景中的两大痛点:(1)早期看似无关但后期关键的信息丢失问题;(2)多轮推理过程中逻辑连贯性断裂问题。
RETROSUM的核心创新在于其双阶段工作机制:
回顾性总结阶段:
python复制Sj = Mθ(Hrec, Sj-w, Hdist, X)
回顾性推理阶段:
python复制Ĥi = Ĥi-1 \ {Si-w} ∪ {(ai, oi), Si} # 总结触发时
ai+1 ∼ πθ(ai+1|Ĥi, X)
为弥补通用LLM在临床专业知识上的不足,RETROSUM设计了经验进化策略:
经验生成:
记忆库构建:
经验引导推理:
python复制Si = Mθ(Hrec, Si-w, Hdist, X, Esum)
ai+1 ∼ πθ(ai+1|Ĥi, X, Eact)
项目采用MIMIC-III和MIMIC-IV两个真实EHR数据集,构建了三个评估子集:
| 子集名称 | 数据特征 | 评估目标 |
|---|---|---|
| MIMIC-IV-Common | 高频病例(前20%诊断) | 标准临床推理能力 |
| MIMIC-IV-Rare | 长尾病例(后5%诊断) | 罕见病识别能力 |
| MIMIC-III | 不同医院系统数据 | 跨机构泛化能力 |
数据处理流程包括:
为支持复杂EHR导航,开发了包含19种专用工具的MCP服务器:
| 工具类别 | 示例工具 | 功能描述 |
|---|---|---|
| 检索类 | TemporalFilter | 按时间范围筛选记录 |
| FuzzySearch | 模糊匹配临床术语 | |
| 分析类 | LabTrendAnalyzer | 检测检验指标变化趋势 |
| ComorbidityDetector | 识别共病模式 | |
| 操作类 | SQLExecutor | 直接执行结构化查询 |
| MedicationTracker | 追踪用药历史 |
工具调用采用标准化JSON接口,示例请求:
json复制{
"tool": "LabTrendAnalyzer",
"params": {
"patient_id": "P12345",
"test_code": "GLU",
"window": "7d"
}
}
采用三阶段训练方案:
基础能力预训练:
EHR特定微调:
强化学习优化:
关键超参数配置:
python复制{
"learning_rate": 3e-5,
"batch_size": 16,
"max_context": 32000,
"summary_window": 30,
"memory_top_k": 3
}
在MIMIC-IV-Common子集上的性能对比(F1分数):
| 模型 | 诊断 | 检验 | 微生物 | 处方 | 手术 | 转科 | 平均 |
|---|---|---|---|---|---|---|---|
| ReAct | 0.095 | 0.129 | 0.127 | 0.076 | 0.247 | 0.277 | 0.159 |
| ReSum | 0.175 | 0.088 | 0.117 | 0.100 | 0.272 | 0.232 | 0.164 |
| RETROSUM | 0.237 | 0.098 | 0.158 | 0.104 | 0.298 | 0.279 | 0.196 |
| +Evolved | 0.251 | 0.109 | 0.157 | 0.129 | 0.307 | 0.317 | 0.212 |
关键发现:
收集500条失败案例进行根因分析:
| 错误类型 | ReAct | ReSum | RETROSUM |
|---|---|---|---|
| 工具选择错误 | 38% | 42% | 11% |
| 信息遗漏 | 29% | 33% | 9% |
| 逻辑断裂 | 19% | 12% | 3% |
| 时间关联丢失 | 14% | 13% | 5% |
典型案例:败血症诊断
| 指标 | ReAct | ReSum | RETROSUM |
|---|---|---|---|
| 平均交互轮数 | 67 | 82 | 35 |
| 平均响应时间 | 4.2s | 5.1s | 3.8s |
| 峰值内存占用 | 18GB | 16GB | 19GB |
虽然单次总结增加15%计算开销,但总token用量减少40%
建议的三层部署架构:
code复制[前端界面]
↓
[AGENTEHR服务层]
↓
[医院EHR系统]
API设计规范:
python复制class AgentEHR:
@post("/query")
def handle_query(self, query: EHRQuery) -> ClinicalDecision:
"""
query: {patient_id, timestamp, instruction}
returns: {diagnoses[], treatments[], evidence[]}
"""
分阶段验证方案:
回溯性评估(3个月)
影子模式运行(6个月)
有限介入试验(12个月)
建立动态更新管道:
code复制[新病例] → [差异检测] → [专家审核] → [记忆库更新]
↑ ↓
[自动标注] ← [反馈收集]
关键参数:
当前主要限制:
正在推进的改进:
我们在实际部署中发现,系统对慢性病管理(如糖尿病)的支持效果显著优于急症场景。一个典型成功案例是通过分析患者3年间的血糖记录和用药变化,准确识别出需要调整胰岛素方案的时间点,而这一模式曾被门诊医生忽视。