FHIR 中 _summary 参数

前言

在构建基于 HL7 FHIR(Fast Healthcare Interoperability Resources)标准的医疗信息系统时,开发者和架构师常常面临一个关键问题:如何在保证数据完整性的同时,优化网络传输效率与客户端处理性能?

FHIR 规范为此提供了一套标准化的机制——通过_summary搜索参数,允许客户端在发起读取(Read)或搜索(Search)请求时,明确指定所需资源的“详细程度”。这一机制不仅提升了系统整体性能,也增强了 API 的灵活性与可扩展性。


一、什么是_summary

_summary是 FHIR 规范中定义的一个通用搜索参数(Common Search Parameter),适用于所有 FHIR 资源类型(如PatientObservationEncounter等)。它不属于某个特定资源的业务字段,而是由 FHIR 基础层(Base Layer)提供的元控制参数,用于指导服务器在构造响应时对资源内容进行裁剪或摘要。

根据 HL7 FHIR R4 官方文档,_summary的核心目标是:

“Allow the client to request that the server return a subset of the resource, typically to improve performance or reduce bandwidth.”

即:允许客户端请求服务器返回资源的一个子集,通常用于提升性能或减少带宽消耗。


二、_summary的合法取值及其语义

FHIR 规范明确定义了_summary参数的五种标准取值。每种取值对应一种预定义的资源视图(View),服务器必须按照规范要求返回相应结构的数据。

取值类型语义说明返回内容特点
false布尔/字符串默认行为。返回完整资源。包含所有元素,包括text、嵌套复杂对象、扩展等。
true1布尔/字符串返回“摘要视图”(Summary View)。仅包含资源的核心标识性字段强制元素(mandatory elements)。省略大型或非关键数据(如Observation.value[x]DiagnosticReport.presentedForm等)。
text字符串返回人类可读摘要。仅包含Resource.idResource.metaResource.text.div(即 Narrative 部分)。适用于快速渲染资源摘要文本。
data字符串返回结构化数据,但排除 Narrative。包含除text字段外的所有数据。此选项较少使用,主要用于需要纯结构化数据而无需 HTML 渲染的场景。
count字符串仅返回匹配资源数量。不返回任何资源实例。响应 Bundle 的total字段包含匹配总数,entry数组为空。

规范依据:FHIR R4 §3.1.1.2 “_summary”;FHIR R5 保持相同语义。


三、各取值的行为分析

3.1_summary=false(默认)

  • 行为:服务器返回未经修改的完整资源。
  • 用途:详情页、数据同步、审计等需要完整信息的场景。
  • 示例请求
    GET [base]/Patient/pat-123
    等价于:
    GET [base]/Patient/pat-123?_summary=false

3.2_summary=true

  • 行为:返回“摘要视图”。该视图由 FHIR 规范为每种资源类型明确定义,通常包括:
    • id
    • meta
    • implicitRules
    • language
    • 标识性字段(如identifier
    • 状态字段(如status
    • 主体引用(如subject
    • 时间戳(如date,effectiveDateTime
    • 编码字段(如code,category
  • 省略内容:大型附件、嵌套列表(如Observation.component)、扩展(除非标记为 summary)、Narrative(text)等。
  • 典型用途:患者列表、检查结果概览、下拉选择器等 UI 场景。
  • 示例请求
    GET [base]/Observation?patient=Patient/123&_summary=true

🔍注意:摘要视图的具体字段由 FHIR 资源定义中的isSummary元素标记决定。例如,在Patient资源中,namegenderbirthDate通常被标记为摘要字段。

3.3_summary=text

  • 行为:仅返回idmetatext.div
  • text.div是什么?
    它是 FHIR 资源中的Narrative(叙述性文本),通常由服务器在资源创建时生成,是一段符合 CDA 样式的 XHTML,用于人类阅读。例如,一个 Encounter 的text.div可能是:“2025年12月1日,张三因发热就诊于内科门诊。”
  • 用途:快速预览、打印摘要、无障碍访问等。
  • 示例请求
    GET [base]/Encounter/enc-456?_summary=text

3.4_summary=data

  • 行为:返回除text字段外的所有结构化数据。
  • 用途:极少见。可能用于某些自动化处理流程,希望避免解析 HTML 内容。
  • 风险提示:由于text字段常包含重要临床摘要,省略后可能导致信息缺失。一般不推荐使用

3.5_summary=count

  • 行为:执行查询但不返回资源,仅在 Bundle 中设置total字段。
  • 响应结构示例
    {"resourceType":"Bundle","type":"searchset","total":142,"entry":[]}
  • 用途
    • 分页前获取总记录数;
    • 统计类查询(如“某患者有多少条检验结果?”);
    • 性能监控(评估查询复杂度)。
  • 性能警告:对于大数据集,_summary=count仍需服务器执行完整查询以计算总数,可能耗时。部分 FHIR 服务器(如 HAPI FHIR)支持通过数据库索引优化此操作。

四、使用场景与最佳实践

4.1 列表展示(List Views)

  • 场景:在 UI 中显示患者列表、医嘱列表、检验结果列表。
  • 推荐参数_summary=true
  • 优势:减少 50%~80% 的响应体积,加快页面加载速度。
  • 示例
    GET [base]/Patient?_count=20&_summary=true

4.2 详情跳转(Detail Navigation)

  • 场景:用户点击列表项后查看完整信息。
  • 操作:先用_summary=true获取列表,再对选中项发起无_summary的完整请求。
  • 模式按需加载(Lazy Loading),平衡性能与功能。

4.3 数据统计与分页

  • 场景:实现分页控件(如“共 142 条,当前第 1 页”)。
  • 操作
    1. 先请求_summary=count获取总数;
    2. 再请求_summary=true&_count=20&page=1获取第一页数据。
  • 注意:若总数变化频繁(如实时数据),可考虑前端估算或省略总数显示。

4.4 快速预览(Quick Preview)

  • 场景:鼠标悬停显示资源摘要、移动端卡片预览。
  • 推荐参数_summary=text
  • 优势:直接渲染 HTML,无需客户端拼接字段。

五、与其他机制的对比

5.1_summaryvs_elements

特性_summary_elements
控制粒度预定义视图(粗粒度)自定义字段列表(细粒度)
规范性FHIR 强制标准,跨服务器一致FHIR 支持,但依赖服务器实现
使用方式?_summary=true?_elements=id,name,birthDate
适用场景通用摘要、性能优化精确字段需求、最小化数据暴露
组合使用不建议(语义冲突)可单独使用

建议:优先使用_summary=true;若其摘要字段不满足业务需求,再考虑_elements

5.2_summary=countvstotalin Bundle

  • 所有 FHIR 搜索响应 Bundle 默认包含total字段(若服务器支持)。
  • 但某些服务器为性能考虑,默认不计算total(设为0或省略)。
  • _summary=count显式强制服务器返回准确总数的标准方式。

六、服务器实现注意事项

FHIR 服务器(如 HAPI FHIR、IBM FHIR Server、Microsoft FHIR Server)在实现_summary时应遵循以下原则:

  1. 一致性:对同一资源类型,_summary=true的返回字段应在不同请求间保持一致。
  2. 完整性:摘要视图必须包含所有标记为isSummary=true的元素(依据 FHIR StructureDefinition)。
  3. 安全性_summary不是访问控制机制!即使使用摘要,仍需通过授权策略(如 SMART on FHIR)限制数据可见性。
  4. 性能_summary=count应尽可能利用数据库 COUNT 优化,避免全表扫描。
  5. 兼容性:对不支持的_summary值(如_summary=xyz),应返回400 Bad Request

七、常见误区与澄清

误区正确认知
_summary=true会返回我想要的所有关键字段。”否。它只返回 FHIR 规范定义的摘要字段,可能缺少业务所需字段(如telecom)。需验证实际返回。
_summary=count总是很快。”否。在无索引的大表上,COUNT 查询可能很慢。应结合分页和缓存策略。
“使用_summary可以替代权限控制。”严重错误!摘要仍可能包含敏感信息(如诊断代码)。必须配合 RBAC/ABAC。
_summary=text包含所有临床信息。”否。Narrative 是生成的摘要,可能省略细节。不能用于临床决策支持。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/1150291.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

AI自动化编排:从入门到精通(基于Dify构建AI智能系统)

目录第一篇:范式重构 —— AI 编排底层基石第1章 AI 自动化编排:开启“人机协同”新时代1.1 从命令式编程到声明式编排1.2 LLM 为什么需要“手脚”:AI 应用的三阶段演化1.3 AI 编排的核心目标:让系统具备行动能力1.4 技术选型逻辑…

Nuxt3全栈开发实战指南

目录第一篇:全栈基石 —— Nuxt 核心概念篇第 1 章:NuxtJS 的前世今生与生态位现代 Web 开发的痛点(SEO、白屏、开发效率)什么是 NuxtJS:Vue 3 的超集与全栈框架SSR(服务端渲染)、SSG&#xff0…

为什么AI算法工程师年薪能破百万?大厂高薪岗位学习指南与实战经验分享_月薪35-50k 16薪

大模型算法工程师成为当前薪资最高的技术岗位,月薪中位数近3万元,顶尖人才年薪破百万。字节、腾讯等大厂大量扩招AI人才,DeepSeek等开出高达154万年薪。然而多数求职者能力不足以满足企业需求。《AI算法工程师培养计划》由一线大厂专家主讲&a…

深度学习计算机毕设之基于python-CNN深度学习的卷积神经网络对狗的行为识别

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围:&am…

不用卡尺怎么测量复杂零件尺寸?告别卡尺,精准高效:SIMSCAN-E手持扫描仪在复杂零件检测中的革命性应用

告别卡尺,精准高效:SIMSCAN-E手持扫描仪在复杂零件检测中的革命性应用图1:思看科技(SCANTECH)—全球领先的三维视觉产品与解决方案提供商一、机械加工与来料检测的挑战:传统测量方法的局限在机械加工和来料…

【毕业设计】深度学习基于python-CNN深度学习对宠物体型识别

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围:&am…

【毕业设计】深度学习基于python-CNN深度学习对宠物体型识别

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围:&am…

南昌出租车打表价格为3.15元/公里,没有燃油费,大家觉得贵吗?2026.1.1

南昌出租车打表价格为3.15元/公里,没有燃油费,大家觉得贵吗?

【课程设计/毕业设计】基于机器学习python-CNN深度学习对宠物体型识别

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围:&am…

【课程设计/毕业设计】通过python的对狗的体型识别通过python-CNN深度学习对狗的体型识别

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围:&am…

动态机器码

链接:https://pan.quark.cn/s/e84e768b1e70

动态机器码

链接:https://pan.quark.cn/s/e84e768b1e70

上海AI实验室突破:视觉提示技术实现机器人多角度感知

这项突破性研究来自上海AI实验室、清华大学、上海交通大学和密歇根大学的联合团队,发表于2025年1月的arXiv预印本平台(论文编号:arXiv:2601.05241v1)。想要深入了解技术细节的读者可以通过这个编号查询完整论文。现代机器人要想真…

Edge Remove

链接:https://pan.quark.cn/s/d1b49f057f4c软件特点无界面设计:为用户提供了简洁的操作体验。一键卸载:用户只需点击一次,即可开始卸载Microsoft Edge。确认卸载功能:在进行卸载之前,会有一个确认过程&…

【毕业设计】通过python-CNN深度学习对狗的体型识别通过python-CNN深度学习对狗的体型识别

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围:&am…

深度学习毕设项目:通过python-CNN深度学习对狗的体型识别

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围:&am…

计算机深度学习毕设实战-通过python-CNN机器学习对狗的体型识别通过python-CNN深度学习对狗的体型识别

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围:&am…

基于SpringAI的在线考试系统-企业级软件研发工程应用规范实现细节

从“考生参加考试”看DDD四层架构:把业务需求拆成可落地的代码逻辑 在企业级在线考试系统中,“考生参加考试并提交答卷”是核心场景之一。我们用DDD四层架构,把用户的自然语言需求,转化为“业务规则→流程→接口→技术实现”的完整…

单机防护机器码 仿网吧

链接:https://pan.quark.cn/s/3af0c8a38d9e软件介绍:机器码防护 理论就是仿网吧无盘 弹出的磁盘是无序列号的 理论是可以的 例子 防护电脑不出现1天以上的机器码 内包含教程

基于SpringAI的在线考试系统-企业级软件研发工程应用规范实现细节(完整)

完整版|考试系统 DDD 四层架构落地全解(含领域层四大核心对象+分层联动+设计原则,博客级完善版) 前言:为什么DDD分层设计是复杂业务的最优解 我们做考试系统这类业务系统,最核心的痛点是:业务规则多变、需求迭代快、技术选型易替换,而DDD的核心价值,就是把「业务规则…