Можно ли искать несколько ресурсов FHIR с помощью одного запроса GET?

Здравствуйте, я работаю над приложением для использования новых стандартов FHIR. Он предназначен для извлечения информации из EHR и ее систематизации.

Мне было интересно, можно ли искать несколько ресурсов FHIR с помощью одного запроса GET. Например, может ли один запрос GET выполнить поиск последних данных об артериальном давлении, частоте сердечных сокращений и т. д. одного пациента?


person jorge54    schedule 25.07.2016    source источник
comment
http://hl7.org/implement/standards/fhir/http.html#search Пакетные и транзакционные взаимодействия отправляют набор действий для выполнения на сервере в одном HTTP-запросе/ответе.   -  person ceejayoz    schedule 25.07.2016


Ответы (5)


Вам необходимо использовать функцию _include для получения связанных ресурсов от пациента. Я не уверен, что все ресурсы, на которые есть ссылки, могут быть получены, для этого вам нужно проверить спецификацию Fhir.

Также см. этот URL-адрес примера сервера Fhir: https://fhirtest.uhn.ca/

person Stef Heyenrath    schedule 09.08.2016

Вы можете использовать ресурс Composition, в этом ресурсе можно объявлять разделы и содержащиеся в них ресурсы. разделы, в которых вы можете организовать ресурсы, но ограниченный ресурс является оболочкой ресурса, например:

<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>
person edandr555    schedule 30.09.2016

Да, вы можете искать и получать несколько ресурсов с сервера fhir с помощью одного запроса GET. Ресурсы, полученные таким образом, возвращаются в структуру, называемую набором ресурсов. Предполагая, что «и т. д.» в вашем исходном вопросе относится к дополнительным клиническим наблюдениям за рассматриваемым пациентом, описанный вами сценарий может быть реализован путем извлечения ресурсов наблюдения, которые содержат «субъект» (ссылку на ресурс пациента) пациента Конкретные поля и возможные параметры поиска для ресурса Observation подробно описаны здесь: https://www.hl7.org/fhir/observation.html . Но, например, если у вас есть ресурс пациента с идентификатором 123 (обратите внимание, что это уникальный идентификатор ресурса на сервере fhir, а не значение «идентификатора», зависящее от кодовой системы), вы можете получить наблюдения, связанные с этим пациентом, используя:

[base]/Observation?subject=Patient/123

Это вернет (с сервера, соответствующего спецификации) пакет, содержащий все ресурсы наблюдения, которые содержат ссылку на ресурс пациента 123 в качестве темы. Вы также можете углубиться в детали, указав дополнительные параметры, чтобы ориентироваться только на те ресурсы наблюдения, которые вы хотите получить. Например:

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

извлечет пакет, содержащий различные наблюдения систолического АД, относящиеся к этому пациенту (при условии, что они были закодированы с помощью LOINC выше). Эти примеры — лишь верхушка айсберга, поскольку стандарт fhir описывает довольно глубокую функциональность запросов. Лучше всего просмотреть информацию на их странице поиска, где описаны особенности этой функции: https://www.hl7.org/fhir/search.html

person roboscott    schedule 27.04.2017

Вы также можете использовать параметр _type, как показано в Вики FHIR нравится эта GET [base]/?_type=Observation,Condition&other params...

Предостережение заключается в том, что other params ДОЛЖЕН быть общим для обоих ресурсов, которые вы ищете, иначе сервер может выдать ошибку.

person BlessedHIT    schedule 18.11.2020

Изучили ли вы взаимодействие пакет/транзакция?

Взаимодействия batch и transaction отправляют набор действий для выполнения на сервере в одном HTTP-запросе/ответе. Действия могут выполняться независимо как пакет или как отдельная атомарная транзакция, когда весь набор изменений завершается успешно или не удается как единое целое.

Взаимодействие batch или transaction выполняется командой HTTP POST, как показано ниже: POST [base] {?_format=[mime-type]}

Вот пример POST запроса на лекарства и аллергии:

{
  "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"
      }
    }
  ]
}
person Ford    schedule 30.03.2021