【问题标题】:Is it possible to search multiple FHIR resources with a single GET Request是否可以使用单个 GET 请求搜索多个 FHIR 资源
【发布时间】:2016-07-25 00:57:46
【问题描述】:

您好,我正在开发一个使用新 FHIR 标准的应用程序。它旨在从 EHR 中提取信息并对其进行组织。

我想知道是否可以使用单个 GET 请求搜索多个 FHIR 资源。比如单个 GET 请求是否可以搜索单个患者的最新血压、心率等?

【问题讨论】:

标签: hl7-fhir


【解决方案1】:

您是否查看过batch/transaction 互动?

batchtransaction 交互提交一组操作,以在单个 HTTP 请求/响应中在服务器上执行。这些操作可以作为“批处理”独立执行,也可以作为单个原子“事务”执行,其中整个更改集作为单个实体成功或失败。

batchtransaction 交互由 HTTP POST 命令执行,如下所示: POST [base] {?_format=[mime-type]}

这是一个 POST 请求 meds and allergies 的示例:

{
  "resourceType": "Bundle",
  "id": "bundle-request-medsallergies",
  "type": "batch",
  "entry": [
    {
      "request": {
        "method": "GET",
        "url": "/Patient/example"
      }
    },
    {
      "request": {
        "method": "GET",
        "url": "/MedicationStatement?patient=example&_list=$current-medications"
      }
    },
    {
      "request": {
        "method": "GET",
        "url": "/AllergyIntolerance?patient=example&_list=$current-allergies"
      }
    },
    {
      "request": {
        "method": "GET",
        "url": "/Condition?patient=example&_list=$current-problems"
      }
    },
    {
      "request": {
        "method": "GET",
        "url": "/MedicationStatement?patient=example&notgiven:not=true"
      }
    }
  ]
}

【讨论】:

    【解决方案2】:

    您需要使用 _include 功能从患者那里检索相关资源。我不确定是否可以检索所有引用的资源,您需要检查 Fhir 规范。

    另请参阅此 URL 以获取示例 Fhir 服务器: https://fhirtest.uhn.ca/

    【讨论】:

      【解决方案3】:

      您可以使用合成资源,在此资源中可以声明部分和包含的资源。您可以组织资源的部分,但连续资源是资源的包装器,例如:

      <Composition>
          <contained>
              <Patient>
                  <id value="patient1"/>
                  .....
              <Patient>
          </contained>
          <contained>
              <MedicationOrder>
                  <id value="medicationOrder1"/>
              </MedicationOrder>
          </contained>
          <contained>
              <MedicationOrder>
                  <id value="medicationOrder2"/>
              </MedicationOrder>
          </contained>
          <contained>
              <List>
                <id value="list-medicationOrder"/>
                .....
                <entry>
                  <item>
                    <reference value="#medicationOrder1"/>
                  </item>
                </entry>
                <entry>
                  <item>
                    <reference value="#medicationOrder2"/>
                  </item>
                </entry>        
              </List>
          </contained>
          <section>
              <title value="Section medication order list"/>
              ....
              <entry>
                <reference value="#list-medicationOrder"/>
              </entry>
          </section>
      </Composition>
      

      【讨论】:

        【解决方案4】:

        是的,您可以使用单个 GET 请求从 fhir 服务器搜索和检索多个资源。以这种方式检索的资源以称为资源束的结构返回。假设您原始问题中的“等”是指有关所讨论患者的其他临床观察,您所描述的场景可以通过检索包含患者“主题”(对患者资源的引用)的观察资源来实现您感兴趣。观察资源的特定字段和可能的搜索参数在此处详细说明:https://www.hl7.org/fhir/observation.html。但是例如,如果您有一个 id 为 123 的 Patient 资源(请注意,这是 fhir 服务器上的唯一资源 id,而不是代码系统特定的“标识符”值),您可以使用以下方法检索与该患者关联的观察:

        [base]/Observation?subject=Patient/123
        

        这将(从符合规范的服务器)返回一个 Bundle,其中包含所有 Observation 资源,其中包含对 Patient 资源 123 的引用作为其主题。您还可以通过指定其他参数以仅针对您有兴趣检索的观察资源来进一步深入研究。例如:

        [base]/Observation?subject=Patient/123&code=8480-6
        

        将检索包含与该患者相关的各种 SystolicBP 观察值的包(假设它们已使用上述 LOINC 进行编码)。这些示例只是冰山一角,因为 fhir 标准概述了非常深入的查询功能。您最好查看他们的搜索页面上的信息,其中概述了此功能的细节:https://www.hl7.org/fhir/search.html

        【讨论】:

          【解决方案5】:

          您也可以使用FHIR wiki 中描述的_type 参数,例如GET [base]/?_type=Observation,Condition&amp;other params...

          需要注意的是,other params 必须对您正在搜索的两个资源都是通用的,否则服务器可能会出错。

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2021-05-23
            相关资源
            最近更新 更多