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

在 FHIR 服务中使用 Patient-everything

患者一切操作用于提供与患者相关的所有资源的视图。 此操作可用于让患者访问其整个记录,或者让提供商或其他用户执行与患者相关的批量数据下载。 根据快速医疗保健互操作性资源 (FHIR®) 规范,Patient-everything 返回与调用此操作的资源或上下文中描述的一个或多个患者相关的所有信息。 在 Azure Health Data Services 的 FHIR 服务 (称为 FHIR 服务) ,患者一切可用于拉取与特定患者相关的数据。

使用 Patient-everything

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

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

注意

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

FHIR 服务验证是否可以找到与所提供的患者 ID 匹配的患者。 如果找到结果,响应将是类型 searchset 为的捆绑包,其中包含以下信息:

  • 患者资源
  • 患者资源直接引用的资源,但链接引用除外,这些引用也看不到,或者链接seealso引用 。RelatedPerson
  • 如果存在 seealso 指向其他患者 () ) 的链接引用 (,则结果将包括针对 seealso 列出的患者 () 的患者所有操作。
  • 患者隔离舱中的资源。
  • 引用患者资源的设备资源。

注意

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

patient-everything 参数

FHIR 服务支持以下查询参数。 所有参数都是可选的:

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

注意

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

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

FHIR 规范详细概述了不同类型的 患者链接,但我们提供了一个概要摘要:

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

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这也是行为。

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

注意

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

患者-所有响应顺序

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

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

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

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

Patient-everything 示例

下面是使用 Patient-everything 操作的一些示例。 除了这些示例之外,我们还提供了一个示例 REST 文件,用于说明 和 replaced-by 行为的工作原理seealso

若要使用 Patient-everything 查询 2010 年至 2020 年间患者的“所有内容”,请使用以下调用:

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

后续步骤

现在,你已了解如何使用 Patient-everything 操作,接下来可以了解搜索选项。 有关详细信息,请参阅

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