PICO 临床问题检索
该工作流用于临床对比类问题。MCP 服务器不会对自然语言临床问题做语义解析。智能体负责抽取 P/I/C/O,通过 parse_pico 提交结构化交接信息,然后执行返回的模板:pico 流水线,或展开后的布尔查询。
PICO 要素
要素 | 含义 | 示例 P | 人群 / 患者组 | 需要镇静的 ICU 患者 I | 干预 / 暴露 / 指标检测 | remimazolam C | 对照,可选 | propofol O | 结局,推荐提供 | 谵妄、低血压、镇静效果
工作流
智能体抽取 P/I/C/O -> parse_pico(description, p, i, c, o) -> 可选地使用 generate_search_queries 对 P/I/C/O 进行扩展 -> unified_search(query=原始问题, pipeline=parse_pico.pipeline)
第 1 步:智能体抽取 PICO
语义处理在智能体侧完成。不要让 MCP 服务器从自由文本中推断 P/I/C/O。如果 P 或 I 不明确,应在检索前询问用户。不要虚构缺失的临床细节。
第 2 步:验证交接信息
pico = parse_pico( description="Is remimazolam better than propofol for ICU sedation?", p="ICU patients requiring sedation", i="remimazolam", c="propofol", o="delirium, hypotension, sedation efficacy", question_type="therapy", sources="pubmed,europe_pmc", limit=50, )
预期可用字段:
validation:必需的 P/I 字段是否存在
pico:人类可读的 P/I/C/O
query_elements:后端将使用的检索片段
pipeline:可直接运行的模板:pico YAML
next_tool_call:建议的 unified_search 调用
仅提供 description 时,parse_pico 会返回一个 schema,并要求智能体带着结构化要素再次调用它。
第 3 步:可选 MeSH / 同义词扩展
当主题需要受控词表或系统评价式覆盖时使用。
generate_search_queries(topic="ICU patients") generate_search_queries(topic="remimazolam") generate_search_queries(topic="propofol") generate_search_queries(topic="delirium")
如果构建出高质量检索片段,可将其回传为:
parse_pico( description="Is remimazolam better than propofol for ICU sedation?", p="ICU patients requiring sedation", p_query='("Intensive Care Units"[MeSH] OR ICU[tiab])', i="remimazolam", i_query="(remimazolam[tiab] OR CNS7056[tiab])", c="propofol", c_query='("Propofol"[MeSH] OR propofol[tiab])', o="delirium", o_query='("Delirium"[MeSH] OR delirium[tiab])', )
第 4 步:执行检索
unified_search( query="Is remimazolam better than propofol for ICU sedation?", pipeline=pico["pipeline"], ranking="quality", )
后端 PICO 流水线会检索兼顾 O 的精确率与召回率变体,对结果去重,合并排序列表,并充实最终结果集。
缺失字段
缺少 C:允许。不要虚构对照。
缺少 O:允许但不推荐。当结局是核心时,询问用户。
缺少 P 或 I:在运行结构化 PICO 检索前询问用户。
推荐的报告方式
始终展示最终的 P/I/C/O 表、所使用的查询或流水线配置,以及主要限制,例如来源、年份、物种和临床查询过滤器。