如何获得排序/嵌套的 FHIR 捆绑响应?

时间:2021-04-22 08:25:45

标签: api hl7-fhir fhir-resource javascript-fhir

我对 fhir 真的很陌生,我想知道是否可以对 Bundle 进行 api 调用,以便响应更加排序/嵌套?因此,我的请求应该类似于“给我与相关患者的该组织的所有会面”:

[Base]/Encounter?service-provider=Organization/<id>&_include=Encounter:subject

实际上响应是这样的一个包(缩写版):

{
  "resourceType": "Bundle",
  "entry": [
    {
      "resource": {
        "resourceType": "Encounter",
      }
    },
    {
      "resource": {
        "resourceType": "Encounter",
      }
    },
    {
      "resource": {
        "resourceType": "Patient",
      }
    },
    {
      "resource": {
        "resourceType": "Patient",
      }
    }
  ],
  [...]
}

但我想要这样的东西,一个更嵌套的对象,我不需要将患者分类到遭遇:

{
  "resourceType": "Bundle",
  "entry": [
    {
      "resource": {
        "resourceType": "Encounter",
        "subject": {
            "resource": {
               "resourceType": "Patient",
             }
         }
    },
    {
      "resource": {
        "resourceType": "Encounter",
        "subject": {
            "resource": {
               "resourceType": "Patient",
             }
         }
    },
  ],
  [...]
}

有没有办法做到这一点?或者我是否需要使用 fhirpath 之类的东西来对结果进行排序? 我需要一个客户端解决方案,因为会有不同的 fhir-servers 使用我的应用程序。

3 个答案:

答案 0 :(得分:0)

无法按照您在此处描述的方式要求服务器嵌入资源。使用您已经获得的结果是正确的方法。

答案 1 :(得分:0)

FHIR 不允许嵌套资源,因为 FHIR 中没有隐式层次结构。当考虑到扩展时,单个资源可能与多个患者、多个遭遇等相关联(可能使用不同的关系)。因此,任何层次结构/网络都需要通过遍历 Bundle 中资源中存在的关系在内存中重新建立。

排序是可能的 - 有一个 _sort 搜索参数可以在查看搜索集时使用。详情请见here。 (在其他类型的 Bundles - 例如文档、批次、事务等中,订单通常是没有意义的并且无法控制,除非文档和消息总是以特殊资源开头 - 分别是 Composition 和 MessageHeader。)

答案 2 :(得分:0)

它是,但不在您提供的 URI 上。您可以实现自定义 FHIR 操作,该操作将执行您需要的任何操作。检查此链接 https://www.hl7.org/fhir/operations.html#extensibility