Примеры поиска FHIR для Azure API для FHIR
Внимание
Поддержка Azure API для FHIR будет прекращена 30 сентября 2026 г. Следуйте стратегиям миграции, чтобы перейти в службу FHIR® служб azure Health Data Services к этой дате. Из-за прекращения поддержки Azure API для FHIR с 1 апреля 2025 г. новые развертывания будут невозможны. Служба FHIR служб работоспособности Azure — это развивающаяся версия Azure API для FHIR, которая позволяет клиентам управлять службами FHIR, DICOM и MedTech с интеграцией с другими службами Azure.
Ниже приведены примеры использования операций поиска "Ресурсы быстрого взаимодействия со здравоохранением" (FHIR®), включая параметры поиска и модификаторы поиска, цепочку и обратный поиск цепочки, составной поиск, просмотр следующего набора записей для результатов поиска и поиск по запросу POST
. Дополнительные сведения о поиске см. в разделе "Обзор поиска FHIR".
Параметры результата поиска
_включать
_include
выполняет поиск по ресурсам для тех, которые включают указанный параметр ресурса. Например, можно выполнить поиск по MedicationRequest
ресурсам, чтобы найти только те, которые включают сведения о рецептах для конкретного пациента, который является параметром reference
patient
. В следующем примере извлекаются все MedicationRequests
пациенты, на которые ссылается ссылка MedicationRequests
.
GET [your-fhir-server]/MedicationRequest?_include=MedicationRequest:patient
Примечание.
_include и _revinclude ограничены 100 элементами.
_revinclude
_revinclude
позволяет искать противоположное направление, как _include
. Например, можно искать пациентов, а затем обратно включать все встречи, ссылающиеся на пациентов:
GET [your-fhir-server]/Patient?_revinclude=Encounter:subject
_азы
_elements
Сужает результат поиска до подмножества полей, чтобы уменьшить размер ответа, пропуская ненужные данные. Параметр принимает разделенный запятыми список базовых элементов.
GET [your-fhir-server]/Patient?_elements=identifier,active
Из этого запроса вы получите пакет пациентов, где каждый ресурс содержит только идентификаторы и активное состояние пациента. Ресурсы в этом ответе meta.tag
содержат значение SUBSETTED
, указывающее, что они являются неполным набором результатов.
Модификаторы поиска
:не
:not
позволяет найти ресурсы, в которых атрибут не является истинным. Например, вы можете искать пациентов, где пол не является женщиной.
GET [your-fhir-server]/Patient?gender:not=female
В качестве возвращаемого значения вы получите все записи пациентов, где пол не является женщиной, включая пустые значения (записи, указанные без пола). Это отличается от поиска пациентов, где пол является мужчиной, так как это не будет включать записи без определенного пола.
:недостающий
:missing
возвращает все ресурсы, которые не имеют значения для указанного элемента, если значение равно true
, и возвращает все ресурсы, содержащие указанный элемент при значении false
. Для простых элементов типа данных соответствует всем ресурсам, :missing=true
где элемент присутствует с расширениями, но имеет пустое значение. В следующем примере показано, как найти все Patient
ресурсы, отсутствующие сведения о дате рождения.
GET [your-fhir-server]/Patient?birthdate:missing=true
:точный
:exact
используется для string
параметров и возвращает результаты, соответствующие параметру точно, например в регистре и объединения символов.
GET [your-fhir-server]/Patient?name:exact=Jon
Этот запрос возвращает Patient
ресурсы, которые имеют имя точно так же, как Jon
. Если ресурс имел пациентов с такими именами, как Jonathan
или joN
, поиск будет игнорировать и пропускать ресурс, так как он не соответствует указанному значению.
:Содержит
:contains
используется для string
параметров и ищет ресурсы с частичными совпадениями указанного значения в любом месте строки в поле поиска. contains
не учитывает регистр и разрешает объединение символов. Например:
GET [your-fhir-server]/Patient?address:contains=Meadow
Этот запрос вернет все Patient
ресурсы с полями address
с значениями, содержащими строку "Луг". Это означает, что у вас могут быть адреса, которые включают такие значения, как "Луозеры" или "59 лугового ST", возвращенные в качестве результатов поиска.
Поиск в цепочке
Чтобы выполнить ряд операций поиска, охватывающих несколько ссылочных параметров, можно "цепочку" ряда ссылочных параметров, добавив их в запрос сервера по одному с помощью периода .
. Например, если вы хотите просмотреть все DiagnosticReport
ресурсы со ссылкой subject
на Patient
ресурс, содержащий конкретный name
:
GET [your-fhir-server]/DiagnosticReport?subject:Patient.name=Sarah
Этот запрос возвратит все DiagnosticReport
ресурсы с субъектом пациента с именем "Сара". .
Период после Patient
выполнения поля в цепочке поиска по эталонным параметрам subject
параметра параметра.
Другое распространенное использование регулярного поиска (а не прицепленного поиска) заключается в поиске всех встреч для конкретного пациента. Patient
часто имеют один или несколько Encounter
с темой. В следующем примере выполняется поиск всех Encounter
ресурсов для предоставленного Patient
id
ресурса.
GET [your-fhir-server]/Encounter?subject=Patient/78a14cbe-8968-49fd-a231-d43e6619399f
С помощью цепочки поиска можно найти все Encounter
ресурсы, соответствующие определенной части Patient
информации, например birthdate
.
GET [your-fhir-server]/Encounter?subject:Patient.birthdate=1987-02-20
Это позволит найти Encounter
ресурсы для всех пациентов, имеющих указанное значение даты рождения.
Кроме того, поиск в цепочке можно выполнять несколько раз в одном запросе с помощью символа &
, который позволяет выполнять поиск нескольких условий в одном запросе. В таких случаях поиск по цепочке "независимо" выполняет поиск каждого параметра, а не поиск условий, удовлетворяющих только всем условиям одновременно:
GET [your-fhir-server]/Patient?general-practitioner:Practitioner.name=Sarah&general-practitioner:Practitioner.address-state=WA
Это вернет все Patient
ресурсы, имеющие "Сара" как и generalPractitioner
имеющий generalPractitioner
адрес с состоянием WA. Иными словами, если у пациента была Сара из штата Нью-Йорк и Билл из штата WA оба ссылались как на пациента generalPractitioner
, оба возвращаются.
В сценариях, в которых поиск должен быть AND
операцией, которая охватывает все условия как группу, см. пример в составном поиске.
Поиск обратной цепочки
Поиск по цепочке позволяет искать ресурсы на основе свойств ресурсов, на которые они ссылаются. Использование обратного поиска цепочки позволяет сделать это другим способом. Вы можете искать ресурсы на основе свойств ресурсов, ссылающихся на них, с помощью _has
параметра. Например, Observation
ресурс имеет параметр patient
поиска, ссылающийся на ресурс "Пациент". Используйте следующую команду, чтобы найти все ресурсы пациентов, Observation
на которые ссылается конкретный code
объект.
GET [base]/Patient?_has:Observation:patient:code=527
Этот запрос возвращает ресурсы пациентов, Observation
на которые ссылается код 527
.
Кроме того, поиск обратной цепочки может иметь рекурсивную структуру. Например, следующий поиск всех пациентов, у Observation
которых наблюдение имеет событие аудита от конкретного пользователя janedoe
.
GET [base]/Patient?_has:Observation:patient:_has:AuditEvent:entity:agent:Practitioner.name=janedoe
Примечание.
В Azure API для FHIR и сервере FHIR с открытым исходным кодом, поддерживаемом Azure Cosmos DB, цепочка поиска и обратный поиск — это реализация MVP. Для выполнения цепочки поиска в Azure Cosmos DB реализация проходит по выражению поиска и выдает вложенные запросы для разрешения сопоставленных ресурсов. Это делается для каждого уровня выражения. Если любой запрос возвращает более 100 результатов, возникает ошибка.
Составной поиск
Для поиска ресурсов, удовлетворяющих нескольким условиям одновременно, используйте составной поиск, который объединяет последовательность значений одного параметра с символом $
. Результатом будет пересечение ресурсов, которые соответствуют всем условиям, указанным параметрами присоединенного поиска. Такие параметры поиска называются составными параметрами поиска, и они определяют новый параметр, который объединяет несколько параметров в вложенной структуре. Например, следующий поиск находит все DiagnosticReport
ресурсы, содержащие Observation
значение калия меньше или равно 9,2.
GET [your-fhir-server]/DiagnosticReport?result.code-value-quantity=2823-3$lt9.2
Этот запрос указывает компонент, содержащий код 2823-3
, который в данном случае будет калием. После символа $
он задает диапазон значения компонента, используемого lt
для "меньше или равно" и 9.2
для диапазона значений калия.
Поиск следующего набора записей
Максимальное количество записей, которые можно возвращать на один поисковый запрос, составляет 1000. Если более 1000 записей, соответствующих поисковому запросу, можно использовать следующую процедуру для просмотра записей, превышающих 1000.
Используйте значение маркера url
продолжения в searchset
, как показано в следующем Bundle
результате.
"resourceType": "Bundle",
"id": "98731cb7-3a39-46f3-8a72-afe945741bd9",
"meta": {
"lastUpdated": "2021-04-22T09:58:16.7823171+00:00"
},
"type": "searchset",
"link": [
{
"relation": "next",
"url": "[your-fhir-server]/Patient?_sort=_lastUpdated&ct=WzUxMDAxNzc1NzgzODc5MjAwODBd"
},
{
"relation": "self",
"url": "[your-fhir-server]/Patient?_sort=_lastUpdated"
}
],
Затем выполните запрос GET для предоставленного URL-адреса в поле relation: next
.
GET [your-fhir-server]/Patient?_sort=_lastUpdated&ct=WzUxMDAxNzc1NzgzODc5MjAwODBd
Возвращает следующий набор записей для результата поиска. Это searchset
полный набор записей результатов поиска, а маркер url
продолжения — это ссылка, предоставляемая сервером для получения записей, которые не отображаются в первом 1000.
Поиск с помощью POST
Все приведенные ранее примеры поиска использовали запросы GET
. Вы также можете выполнять операции поиска с помощью POST
запросов._search
POST [your-fhir-server]/Patient/_search?_id=45
Этот запрос возвращает Patient
ресурсы со значением id
45. Как и в случае с запросами GET, сервер определяет, какой из наборов ресурсов соответствует условию, и возвращает ресурс пакета в ответе HTTP.
Другой пример поиска с помощью POST, где параметры запроса отправляются в виде текста формы, как показано ниже.
POST [your-fhir-server]/Patient/_search
content-type: application/x-www-form-urlencoded
name=John
Следующие шаги
В этой статье вы узнали, как выполнять поиск с помощью различных параметров поиска, модификаторов и средств поиска FHIR. Дополнительные сведения о поиске FHIR см. в разделе
Примечание.
FHIR® является зарегистрированным товарным знаком HL7 и используется с разрешением HL7 .