处方审核 Agent 中药物知识库 no result 的状态设计

药物知识库 API 返回 no result,不能直接写成“无风险”。

在处方审核 Agent 里,接口 200、JSON 合法、延迟正常,只能说明工具调用成功。它不能证明药名已经标准化,不能证明知识库覆盖完整,也不能证明本院规则和患者上下文都参与了判断。医生端如果看到“未发现相互作用风险”,而底层只是一次空查询,这就是状态设计问题。

本文只讨论工程状态、字段和审计日志,不涉及诊断、处方或治疗建议。

图1:药物知识库 API 返回 no result,医生端提示旁标红:no result ≠ no risk图1:药物知识库 API 返回 no result,医生端提示旁标红:no result ≠ no risk

先把 no result 拆开

no result 至少要分成几种状态:

类型常见原因系统动作前端表达
normalization_failed 商品名、别名、剂型、复方拆分失败 停止自动结论 药品标准化失败,需人工确认
db_not_covered 药物库未覆盖该药品或组合 标记覆盖缺口 当前知识库未覆盖该查询范围
version_stale 药物库、说明书、指南版本过旧 标记版本风险 知识版本需确认
local_rule_missing 本院目录、限制用药规则未接入 进入院内规则复核 缺少本院规则依据
patient_context_missing 肾功能、妊娠、过敏史等未参与 限制相关判断 患者上下文不足
no_known_evidence 前置条件满足后仍无明确证据 记录来源和范围 当前来源和版本内未见明确证据

最后一行最容易被误写成低风险。更稳妥的做法是把它放进 evidence_status,而不是映射成 risk_level=low

一个简单流程可以写成:

input_drug
  -> normalized_drug
  -> query_scope
  -> evidence_status
  -> gap_type
  -> ehr_write_state
  -> reviewer

只有药名标准化成功、查询范围明确、知识版本可用、本院规则参与、必要患者上下文字段齐全时,gap_type 才能是 none。否则应进入 draftpending_reviewescalated

图2:状态机简图:input_drug → normalized_drug → query_scope → evidence_status → gap_type → ehr_write_state → reviewer图2:状态机简图:input_drug → normalized_drug → query_scope → evidence_status → gap_type → ehr_write_state → reviewer

schema 要能表达“不确定”

很多 demo 只返回 risk_levelsummaryreferences,这会诱导模型补一句完整结论。处方审核 Agent 至少要保留缺口字段:

{
  "input_drugs": ["拜某某"],
  "normalized_drugs": [{
    "input_name": "拜某某",
    "standard_id": null,
    "mapping_confidence": "low"
  }],
  "query_scope": {
    "interaction": true,
    "renal_dose": true,
    "pregnancy": false,
    "hospital_policy": true
  },
  "evidence_status": "not_assessable",
  "gap_type": "normalization_failed",
  "knowledge_version": {
    "drug_db": "2026.05",
    "label_date": "2026-04-20",
    "guideline": null,
    "local_policy": "HOSP-RULE-2026-05"
  },
  "ehr_write_state": "pending_review",
  "escalation": "pharmacist_review",
  "agent_statement": "药品标准化失败,无法形成自动审核结论,需人工确认。"
}

这里的关键字段是 mapping_confidenceevidence_statusgap_typeehr_write_state。例如 mapping_confidence=low 时,不应生成“未见风险”;local_policy=null 时,涉及院内目录、限制用药、科室权限的判断不能自动确认。

文献只作为规则来源的一环

整理 drug-drug interaction alert、clinical decision support override、medication safety AI、pharmacovigilance 等资料时,可以用 超能文献 做中文检索,并追溯 DOI、PMID、研究对象和结论边界。它适合作为文献入口和来源追踪工具;候选文献进入规则库前,仍应由药师、临床专家和工程负责人确认。

一个可复用 query:

drug-drug interaction alert clinical decision support override medication safety AI no result evidence status

检索结果不要只摘结论,还要记录药物范围、数据来源、研究场景、排除条件、更新时间和适用边界。规则库中的每条规则,都应该能回到原始来源。

审计日志要能回放现场

处方审核日志不能只记:

tool_call_id=xxx
success=true

至少要记录:原始药名、标准化结果、标准化置信度、查询范围、工具版本、知识版本、说明书日期、本院规则版本、患者上下文字段参与状态、evidence_statusgap_type、Agent 原话、EHR 写回状态、复核人和复核结论。

冲突也要入账。药物数据库提示风险,但本院规则存在例外,应展示来源差异、适用条件和例外依据,并进入 pending_review。数据库无结果且本院规则缺失,应进入 escalated。患者关键上下文没有参与查询时,相关判断只能保留为草稿提示。

落地时可以先做 50 条审计样本,覆盖商品名映射失败、复方拆分失败、院内规则缺失、版本过期、患者上下文缺失、数据库与本院规则冲突等场景。验收标准很直接:每条样本都必须输出 evidence_statusgap_typeehr_write_state、证据版本和复核动作。只要还有 no result 被写成“无风险”,这个 Agent 就不该进生产流程。

 

作者:超能文献(suppr.ai)

posted @ 2026-05-19 22:01  JaxGo  阅读(29)  评论(0)    收藏  举报