你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

FHIR 中的 Patient-everything

患者一切操作用于提供与患者相关的所有资源的视图。 此操作可用于让患者访问其整个记录,或者让提供商或其他用户执行与患者相关的批量数据下载。 根据 FHIR 规范,Patient-everything 返回与调用此操作的资源或上下文中描述的一个或多个患者相关的所有信息。 在 Azure API for FHIR 中,患者一切可用于拉取与特定患者相关的数据。

使用 Patient-everything

若要调用 Patient-everything,请使用以下命令:

GET {FHIRURL}/Patient/{ID}/$everything

注意

必须指定特定患者的 ID。 如果需要所有患者的所有数据,请参阅 $导出

Azure API for FHIR 验证其是否能找到与所提供的患者 ID 匹配的患者。 如果找到结果,则响应将是包含以下信息的类型的 searchset 捆绑包:

  • 患者资源
  • 由患者资源直接引用的资源,但 链接 引用不 可见 或链接 seealso 引用 RelatedPerson除外。
  • 如果存在 seealso 指向其他患者 () ) 链接引用 (,则结果将包括针对 seealso 列出的患者 () 的患者一切操作。
  • 患者隔离舱中的资源
  • 引用患者资源的设备资源。

注意

如果患者关联的设备超过 100 台,则仅返回 100 台设备的信息。

patient-everything 参数

Azure API for FHIR 支持以下查询参数。 所有参数都是可选的:

查询参数 说明
_type 允许指定要包含在响应中的资源类型。 例如,_type=Encounter 将仅 Encounter 返回与患者关联的资源。
_因为 仅返回在所提供时间后修改的资源。
start 指定开始日期将拉取那些临床日期晚于指定开始日期的资源。 如果未提供开始日期,那么结束日期前的所有记录都处于范围内。
end 指定结束日期将拉取那些临床日期早于指定结束日期的资源。 如果未提供结束日期,那么开始日期后的所有记录都将处于范围内。

注意

Patient-everything 的此实现不支持 _count 参数。

在患者资源上,有一个名为 link 的元素,它将患者链接到其他患者或相关人员。 这些关联的患者有助于提供原始患者的整体视图。 当患者替换另一个患者或两个患者资源具有补充信息时,可以使用链接引用。 链接的一个用例是 ADT 38 或 39 HL7v2 消息出现时。 ADT38/39 描述对患者的更新。 此更新可以作为链接元素中的两个患者之间的引用进行存储。

FHIR 规范详细概述了不同类型的 患者链接,但下面是一个概要摘要:

  • replaces - 患者资源替换不同的患者。
  • 引用 - 患者有效,但不被视为主要信息来源。 指向另一个患者以检索其他信息。
  • seealso - 患者包含指向另一个同样有效的患者的链接。
  • replaced-by - 患者资源替换其他患者。

Azure API for FHIR 中的“患者一切”操作以不同的方式处理患者链接,以提供最全面的患者视图。

注意

链接还可以引用 RelatedPerson。 目前, RelatedPerson 不会在 Patient-everything 中处理资源,也不会在捆绑包中返回资源。

现在, 替换引用 链接被患者一切操作忽略,链接的患者不会在捆绑包中返回。

如前所述, seealso 链接引用另一个被认为对原始患者同样有效的患者。 运行 Patient-everything 操作后,如果患者具有 seealso 与其他患者的链接,该操作在每个 seealso 链接上运行 Patient-everything。 这意味着,如果患者链接到具有类型 seealso 链接的其他五个患者,我们将在这五个患者中的每一个上运行 Patient-everything。

注意

此设置仅遵循 seealso 一层深的链接。 它不会处理 seealso 链接 seealso 的链接。

另请参阅流程图。

最终链接类型 被替换为 。 在这种情况下,不再使用原始患者资源, replaced-by 并且链接指向应使用的患者。 默认情况下, 的 Patient-everything 实现将包括捆绑包开始时的操作结果,并警告患者不再有效。 当标头设置为 handling=lenient时,Prefer这也是行为。

此外,可以将 标头handling=strict设置为 Prefer 以改为引发错误。 在这种情况下,返回错误代码 301 MovedPermanently 表示当前患者已过期,并返回链接中包含的正确患者的 ID。 ContentLocation返回的错误标头将指向正确且最新的请求。

注意

replaced-by如果存在链接,Prefer: handling=lenient并且结果在多个捆绑包中异步返回,则一个捆绑包中仅返回一个操作结果。

Patient-everything 响应顺序

Patient-everything 操作分阶段返回结果:

  1. 阶段 1 返回 Patient 资源本身以及任何 generalPractitionermanagingOrganization 资源 ir 引用。
  2. 阶段 2 和 3 都返回患者隔离舱中的资源。 如果指定了开始或结束查询参数,阶段 2 将从可按其临床日期筛选的资源舱中返回资源,而阶段 3 将从无法按临床日期筛选的资源舱中返回资源。 如果未指定这两个参数,则跳过阶段 2,阶段 3 返回所有患者隔离室资源。
  3. 阶段 4 将返回引用患者的任何设备。

每个阶段都将返回捆绑包中的结果。 如果结果跨多个页面,捆绑包中的下一个链接将指向该阶段的下一页结果。 返回某个阶段的所有结果后,捆绑包中的下一个链接将指向启动下一阶段的调用。

如果原始患者有任何 seealso 联系,则每个患者将重复第 1 阶段到第 4 阶段。

Patient-everything 的示例

下面是使用患者一切操作的一些示例。 除了这些示例,我们还有一个示例 REST 文件,用于说明 和 replaced-by 行为的工作原理seealso

若要在 2010 年至 2020 年间使用 Patient-everything 进行查询,请使用以下调用:

GET {FHIRURL}/Patient/{ID}/$everything?start=2010&end=2020

若要使用 $patient-everything 查询患者的“观察结果”和“所遇问题”,请使用以下调用:

GET {FHIRURL}/Patient/{ID}/$everything?_type=Observation,Encounter 

若要使用 $patient-everything 查询患者自 2021-05-27T05:00:00Z 以来的“所有内容”,请使用以下调用:

GET {FHIRURL}/Patient/{ID}/$everything?_since=2021-05-27T05:00:00Z 

如果每个呼叫都找到了患者,你将使用相应资源的 返回 200 响应 Bundle

后续步骤

了解如何使用“患者一切”操作后,可以了解搜索选项。

FHIR® 是 HL7 的注册商标,经 HL7 许可使用。