Примеры поиска 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
ресурсы, на которые ссылается конкретный code
Observation
объект, используйте следующий код.
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 .