Поделиться через


Примеры поиска FHIR

Ниже приведены примеры вызовов API быстрого взаимодействия со службами быстрого взаимодействия здравоохранения с® различными параметрами поиска, модификаторами, цепочками и обратными цепочками поиска, составными поисками, POST запросами поиска и т. д. Общие сведения о концепциях поиска FHIR см. в обзоре поиска FHIR.

Параметры результата поиска

_include

_include позволяет искать экземпляры ресурсов и включать в результаты другие ресурсы, на которые ссылаются целевые экземпляры ресурсов. Например, можно использовать _include для запроса MedicationRequest ресурсов и ограничения поиска рецептов для конкретного пациента. Затем служба FHIR вернет MedicationRequest ресурсы и указанный Patient ресурс. В следующем примере запрос извлекает все MedicationRequest экземпляры ресурсов в базе данных и всех пациентов, на которые ссылается MedicationRequest экземпляры.

 GET {{FHIR_URL}}/MedicationRequest?_include=MedicationRequest:patient

Примечание.

Служба FHIR в службах данных Azure Health Data Services ограничивает поиск и _include _revinclude возвращает не более 100 элементов.

_revinclude

_revinclude позволяет искать экземпляры ресурсов и включать в результаты другие ресурсы, ссылающиеся на целевые экземпляры ресурсов. Например, можно искать пациентов, а затем обратно включать все встречи, ссылающиеся на пациентов.

GET {{FHIR_URL}}/Patient?_revinclude=Encounter:subject

_elements

_elements Сужает сведения в результатах поиска до подмножества элементов, определенных для типа ресурса. Параметр _elements принимает разделенный запятыми список базовых элементов.

GET {{FHIR_URL}}/Patient?_elements=identifier,active

Предыдущий запрос возвращает пакет пациентов. Каждая запись включает только идентификаторы и активное состояние пациента. Записи в ответе meta.tag содержат значение SUBSETTED , указывающее, что не все элементы, определенные для ресурса, включены.

Модификаторы поиска

:not

:not позволяет найти ресурсы с элементом, который не имеет заданного значения. Например, вы можете искать пациентов, которые не являются женщинами.

GET {{FHIR_URL}}/Patient?gender:not=female

В свою очередь, вы получите все Patient ресурсы gender , значения элемента которых не femaleзаданы, включая пациентов без гендерной ценности. Это отличается от поиска Patient ресурсов с гендерным male значением, так как это будет игнорировать пациентов без указанного пола.

:missing

:missing возвращает все ресурсы, не имеющие значения для указанного элемента, когда :missing=true. Кроме того, :missing возвращает все ресурсы, содержащие указанный элемент, когда :missing=false. Для простых элементов типа данных соответствует всем ресурсам, :missing=true где присутствует элемент, но имеет пустое значение. Например, если вы хотите найти все Patient ресурсы, в которых отсутствуют сведения birthdate, можно выполнить следующий вызов.

GET {{FHIR_URL}}/Patient?birthdate:missing=true

:exact

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

GET {{FHIR_URL}}/Patient?name:exact=Jon

Этот запрос возвращает Patient ресурсы с given именем или family именем Jon. Если были пациенты с такими именами, как Jonathan или JON, поиск будет игнорировать эти ресурсы, так как их имена не соответствуют указанному значению точно.

:contains

:contains используется для запроса string элементов типа и позволяет совпадать с указанным значением в любом месте поля. contains не учитывает регистр и распознает соответствующие строки, объединенные с другими символами. Например:

GET {{FHIR_URL}}/Patient?address:contains=Meadow

Этот запрос возвратит все Patient ресурсы с полями address элементов, содержащими строку "Луг" (без учета регистра). Это означает, что у вас могут быть адреса со значениями, такими как "Луос Лейн", "Сосновая место" или "Луголарк St", которые возвращают положительные совпадения.

Для выполнения операций поиска, охватывающих элементы, содержащиеся в ресурсе, на который ссылается ссылка, можно создать цепочку параметров вместе с .. Например, если вы хотите просмотреть все DiagnosticReport ресурсы со ссылкой subject на пациента, указанного с помощью nameследующего запроса.

 GET {{FHIR_URL}}/DiagnosticReport?subject:Patient.name=Sarah

Этот запрос возвращает все DiagnosticReport ресурсы с субъектом пациента с именем "Сара". Указывает . прицеленный поиск к name элементу в ресурсе, на который Patient ссылается ссылка.

Другое распространенное использование поиска FHIR заключается в поиске всех встреч для конкретного пациента. Чтобы выполнить обычный (нецелевой) поиск Encounter ресурсов, ссылающихся на Patient указанные id ниже данные.

GET {{FHIR_URL}}/Encounter?subject=Patient/78a14cbe-8968-49fd-a231-d43e6619399f

С помощью цепочки поиска можно найти все Encounter ресурсы, которые ссылаются на пациентов, сведения которых соответствуют параметру поиска. В следующем примере показано, как искать встречи, ссылающиеся на пациентов, сужаемых birthdate.

GET {{FHIR_URL}}/Encounter?subject:Patient.birthdate=1987-02-20

При этом возвращаются все Encounter экземпляры, ссылающиеся на пациентов с указанным birthdate значением.

Кроме того, можно инициировать несколько цепочки поиска с помощью & оператора, который позволяет выполнять поиск по нескольким ссылкам в одном запросе. В случаях, когда &поиск в цепочке "независимо" проверяется для каждого значения элемента.

GET {{FHIR_URL}}/Patient?general-practitioner:Practitioner.name=Sarah&general-practitioner:Practitioner.address-state=WA

Это возвращает все Patient ресурсы, имеющие ссылку на "Сара" в качестве generalPractitioner плюс ссылки на адрес generalPractitioner , имеющий адрес в штате Вашингтон. Другими словами, если у пациента был названный generalPractitioner Сара из штата Нью-йорк и другой generalPractitioner по имени Билл из штата Вашингтон, оба будут соответствовать условиям положительного матча при выполнении этого поиска.

В сценариях, в которых поиск требует логического условия AND, которое строго проверяет наличие парных значений элементов, см. в следующих примерах составного поиска .

Использование обратного цепочки поиска в FHIR позволяет искать целевые экземпляры ресурсов, на которые ссылаются другие ресурсы. Другими словами, можно искать ресурсы на основе свойств ресурсов, ссылающихся на них. Это достигается с _has помощью параметра. Например, Observation ресурс имеет параметр patient поиска, который проверяет ссылку на Patient ресурс. Чтобы найти все Patient ресурсы, на которые ссылается конкретный codeObservation объект, используйте следующий код.

GET {{FHIR_URL}}/Patient?_has:Observation:patient:code=527

Этот запрос возвращает Patient ресурсы, на которые ссылается Observation ресурсы с кодом 527.

Кроме того, обратный поиск в цепочке может иметь рекурсивную структуру. Например, если вы хотите искать всех пациентов, на которые ссылается Observation наблюдение, ссылается AuditEvent конкретный практикующий janedoe, используйте:

GET {{FHIR_URL}}/Patient?_has:Observation:patient:_has:AuditEvent:entity:agent:Practitioner.name=janedoe

Для поиска ресурсов, содержащих элементы, сгруппированные как логически подключенные пары, FHIR определяет составной поиск, который объединяет значения отдельных параметров вместе с $ оператором — формируя подключенную пару параметров. В составном поиске положительное совпадение возникает, когда пересечение значений элементов удовлетворяет всем условиям, заданным в парных параметрах поиска. В следующем примере запрашивается все DiagnosticReport ресурсы, содержащие значение калия меньше 9.2:

GET {{FHIR_URL}}/DiagnosticReport?result.code-value-quantity=2823-3$lt9.2

Парные элементы в этом случае будут элементом (из Observation ресурса, на который ссылается code ссылка как resultна ) и value элементом, подключенным к элементуcode. После кода с $ оператором задает value условие как lt (для "меньше") 9.2 (для значения калия mmol/L).

Составные параметры поиска также можно использовать для фильтрации нескольких значений кода компонента с помощью логического ИЛИ. Например, чтобы запросить наблюдения с диастолическим кровяном давлением больше 90 ИЛИ систоличного кровяного давления больше 140:

GET {{FHIR_URL}}/Observation?component-code-value-quantity=http://loinc.org|8462-4$gt90,http://loinc.org|8480-6$gt140

Обратите внимание, как , функции в качестве логического оператора OR между двумя условиями.

Просмотр следующего набора записей

Максимальное количество ресурсов, возвращаемых одновременно из поискового запроса, равно 1000. Однако у вас может быть более 1000 экземпляров ресурсов, которые соответствуют поисковому запросу, и вы хотите получить следующий набор результатов после первых 1000 записей. В этом случае вы будете использовать значение маркера url продолжения (т"next". е. ) в searchset пакете, возвращенном из поиска, как показано ниже.

    "resourceType": "Bundle",
    "id": "98731cb7-3a39-46f3-8a72-afe945741bd9",
    "meta": {
        "lastUpdated": "2021-04-22T09:58:16.7823171+00:00"
    },
    "type": "searchset",
    "link": [
        {
            "relation": "next",
            "url": "{{FHIR_URL}}/Patient?_sort=_lastUpdated&ct=WzUxMDAxNzc1NzgzODc5MjAwODBd"
        },
        {
            "relation": "self",
            "url": "{{FHIR_URL}}/Patient?_sort=_lastUpdated"
        }
    ],

Вы будете запрашивать указанный GET URL-адрес:

GET {{FHIR_URL}}/Patient?_sort=_lastUpdated&ct=WzUxMDAxNzc1NzgzODc5MjAwODBd

Возвращает следующий набор записей для результатов поиска. Пакет searchset — это полный набор записей результатов поиска, а маркер url продолжения — это ссылка, предоставляемая службой FHIR, для получения записей, которые не соответствуют первому подмножеству (из-за ограничения максимального количества записей, возвращаемых для одной страницы).

Поиск с помощью POST

Все примеры поиска, упомянутые здесь, используют GET запросы. Однако вызовы POST API поиска FHIR также можно использовать с параметром _search следующим образом.

POST {{FHIR_URL}}/Patient/_search?_id=45

Этот запрос возвращает Patient экземпляр ресурса с заданным id значением. Как и при GET запросах, сервер определяет, какие экземпляры ресурсов удовлетворяют условиям и возвращают пакет в ответе HTTP.

Другая функция поиска POST заключается в том, что он позволяет отправлять параметры запроса в виде текста формы.

POST {{FHIR_URL}}/Patient/_search
content-type: application/x-www-form-urlencoded

name=John

Следующие шаги

В этой статье вы узнали о поиске в FHIR с помощью параметров поиска, модификаторов и других методов. Дополнительные сведения о поиске FHIR см. в разделе

Примечание.

FHIR® является зарегистрированным товарным знаком HL7 и используется с разрешением HL7 .