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

在 FHIR 服务中使用 Patient-everything

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

使用 Patient-everything

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

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

注释

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

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

  • 患者资源
  • 患者资源直接引用的资源
  • 如果存在指向其他患者的 seealso 链接引用,则结果包括针对列出的 seealso 患者执行的 Patient-everything 操作。
  • 患者隔离舱中的资源。
  • 引用患者资源的设备资源

注释

最多将返回与患者链接的前 100 台设备。

Patient-everything 参数

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

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

注释

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

在患者资源上,有一个名为链接的元素,该元素将患者链接到其他患者或相关人员。 这些链接的患者有助于全面了解原始患者。 当患者替换另一个患者或两个患者资源具有互补信息时,可以使用链接参考。 链接的一个用例是当接收到 ADT 38 或 39 HL7v2 消息时。 它描述了患者的更新。 此更新可以作为链接元素中两个患者之间的引用进行存储。

FHIR 规范详细概述了不同类型的 患者链接,但此处提供了一个高层次的总结。

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

FHIR 服务中的 Patient-everything 操作以不同的方式处理患者链接,让你可以最全面地了解患者。

注释

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

当前,replacesrefer 链接包含在 Patient-everything 操作中,作为患者隔间内链接患者的一部分。

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

注释

此设置仅跟踪一层深度的 seealso 链接。 它不处理 seealso 链接中的 seealso 链接。

另请参阅流程图。

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

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

注释

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

Patient-everything 响应顺序

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

  1. 第 1 阶段除了返回它引用的任何 PatientgeneralPractitioner 资源之外,还返回 managingOrganization 资源本身。
  2. 第 2 阶段和第 3 阶段都返回患者隔间中的资源。 如果指定了 startend 查询参数,阶段 2 将返回来自分区的资源,可以按临床日期筛选;而阶段 3 将返回来自分区的资源,无法按临床日期筛选。 如果未指定这两个参数,则跳过阶段 2,阶段 3 将返回所有患者隔离区资源。
  3. 第 4 阶段返回所有引用患者的设备。

每个阶段都以捆绑包返回结果。 如果结果跨越多个页面,捆绑包中的下一个链接将指向该阶段的下一页结果。 当一个阶段的所有结果返回后,捆绑包中的下一个链接将指向发起下一阶段调用的操作。

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

Patient-everything 示例

下面是使用 Patient-everything 操作的一些示例。 除了这些示例,我们还有一个示例 REST 文件来演示 seealsoreplaced-by 的行为。

若要使用患者一切功能在 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 许可使用。