Определение настраиваемых параметров поиска для 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.
Спецификация fast Healthcare Interoperability Resources (FHIR®) определяет набор параметров поиска для всех ресурсов и параметров поиска, относящихся к ресурсу. Однако существуют сценарии, в которых может потребоваться выполнить поиск по элементу в ресурсе, который не определен как стандартный параметр поиска в спецификации FHIR. В этой статье описывается, как определить собственные параметры поиска, которые будут использоваться в API Azure для FHIR.
Примечание.
Каждый раз при создании, обновлении или удалении параметра поиска необходимо выполнить задание повторной индексации, чтобы включить параметр поиска для использования в рабочей среде. В этой статье описано, как протестировать параметры поиска перед повторной индексированием всего сервера FHIR.
Создание нового параметра поиска
Чтобы создать новый параметр поиска, ресурс POST
SearchParameter
в базу данных. В следующем примере кода показано, как добавить в ресурс поиск гонки Patient
US Core.
POST {{FHIR_URL}}/SearchParameter
{
"resourceType" : "SearchParameter",
"id" : "us-core-race",
"url" : "http://hl7.org/fhir/us/core/SearchParameter/us-core-race",
"version" : "3.1.1",
"name" : "USCoreRace",
"status" : "active",
"date" : "2019-05-21",
"publisher" : "US Realm Steering Committee",
"contact" : [
{
"telecom" : [
{
"system" : "other",
"value" : "http://www.healthit.gov/"
}
]
}
],
"description" : "Returns patients with a race extension matching the specified code.",
"jurisdiction" : [
{
"coding" : [
{
"system" : "urn:iso:std:iso:3166",
"code" : "US",
"display" : "United States of America"
}
]
}
],
"code" : "race",
"base" : [
"Patient"
],
"type" : "token",
"expression" : "Patient.extension.where(url = 'http://hl7.org/fhir/us/core/StructureDefinition/us-core-race').extension.value.code"
}
Примечание.
Новый параметр поиска появится в инструкции функции сервера FHIR после публикации параметра поиска в базу данных и повторной индексации базы данных. SearchParameter
Просмотр инструкции возможности является единственным способом определить, поддерживается ли параметр поиска на сервере FHIR. Если вы можете найти параметр поиска, но не видите его в инструкции возможности, вам по-прежнему нужно индексировать параметр поиска. Перед активацией операции переиндексации можно ОПУБЛИКОВАТЬ несколько параметров поиска.
Важные элементы включают следующие элементы SearchParameter
.
url: уникальный ключ для описания параметра поиска. Многие организации, такие как HL7, используют стандартный формат URL-адреса для параметров поиска, которые они определяют, как показано ранее в параметре поиска гонки US Core.
код: значение, хранящееся в коде , — это то, что вы используете при поиске. В предыдущем примере вы будете искать всех
GET {FHIR_URL}/Patient?race=<code>
пациентов определенной расы. Код должен быть уникальным для ресурса, к который применяется параметр поиска.base: описывает, к какой ресурс применяется параметр поиска. Если параметр поиска применяется ко всем ресурсам, можно использовать
Resource
; в противном случае можно перечислить все соответствующие ресурсы.тип данных: описывает тип данных для параметра поиска. Тип ограничен поддержкой Azure API для FHIR. Это означает, что нельзя определить параметр поиска типа Special или определить составной параметр поиска, если это не поддерживается сочетание.
выражение: описывает, как вычислить значение для поиска. При описании параметра поиска необходимо включить выражение, даже если оно не требуется спецификацией. Это связано с тем, что требуется выражение или синтаксис xpath, а API Azure для FHIR игнорирует синтаксис xpath.
Проверка параметров поиска
Хотя вы не можете использовать параметры поиска в рабочей среде, пока не будет выполнено задание переиндексирования, можно протестировать параметры поиска, прежде чем переиндексировать всю базу данных.
Сначала можно протестировать новый параметр поиска, чтобы узнать, какие значения возвращаются. Выполнив следующую команду для определенного экземпляра ресурса (путем ввода идентификатора), вы получите список пар значений с именем параметра поиска и значением, хранящимся для конкретного пациента. Сюда входят все параметры поиска для ресурса. Чтобы найти созданный параметр поиска, прокрутите возвращенный список. Выполнение этой команды не изменит поведение на сервере FHIR.
GET https://{{FHIR_URL}}/{{RESOURCE}}/{{RESOUCE_ID}}/$reindex
Например, чтобы найти все параметры поиска для пациента, используйте следующее.
GET https://{{FHIR_URL}}/Patient/{{PATIENT_ID}}/$reindex
Результат выглядит следующим образом.
{
"resourceType": "Parameters",
"id": "8be24e78-b333-49da-a861-523491c3437a",
"meta": {
"versionId": "1"
},
"parameter": [
{
"name": "deceased",
"valueString": "http://hl7.org/fhir/special-values|false"
},
{
"name": "language",
"valueString": "urn:ietf:bcp:47|en-US"
},
{
"name": "race",
"valueString": "2028-9"
},
...
Когда вы увидите, что параметр поиска отображается должным образом, можно переиндексировать один ресурс для тестирования поиска с помощью элемента. Сначала переиндексировать один ресурс:
POST https://{{FHIR_URL}/{{RESOURCE}}/{{RESOURCE_ID}}/$reindex
При выполнении этот параметр задает индексы для всех параметров поиска для определенного ресурса, определенного для этого типа ресурса. Это делает обновление сервера FHIR. Теперь можно выполнить поиск и задать для заголовка частичных индексов значение true, что означает, что возвращает результаты, в которых индексируется любой из ресурсов, индексированных параметром поиска, даже если не все ресурсы этого типа индексируются.
Продолжая наш пример, можно проиндексировать одного пациента, чтобы включить основную гонку SearchParameter
США, как показано ниже.
POST https://{{FHIR_URL}/Patient/{{PATIENT_ID}}/$reindex
Затем найдите пациентов, у которых есть определенная гонка:
GET https://{{FHIR_URL}}/Patient?race=2028-9
x-ms-use-partial-indices: true
Убедившись, что параметр поиска работает должным образом, запустите или запланируйте задание переиндексирования, чтобы параметры поиска можно было использовать на сервере FHIR для рабочих вариантов использования.
Обновление параметра поиска
Чтобы обновить параметр поиска, используйте PUT
для создания новой версии параметра поиска. Необходимо включить SearchParameter ID
в элемент текста PUT
запроса и в PUT
id
вызов.
Примечание.
Если вы не знаете идентификатор параметра поиска, его можно найти. При использовании GET {{FHIR_URL}}/SearchParameter
будут возвращены все настраиваемые параметры поиска, и вы можете прокрутить список, чтобы найти нужный параметр поиска. Вы также можете ограничить поиск по имени. В следующем примере можно найти имя с помощью USCoreRace: GET {{FHIR_URL}}/SearchParameter?name=USCoreRace
.
PUT {{FHIR_URL}}/SearchParameter/{SearchParameter ID}
{
"resourceType" : "SearchParameter",
"id" : "SearchParameter ID",
"url" : "http://hl7.org/fhir/us/core/SearchParameter/us-core-race",
"version" : "3.1.1",
"name" : "USCoreRace",
"status" : "active",
"date" : "2019-05-21",
"publisher" : "US Realm Steering Committee",
"contact" : [
{
"telecom" : [
{
"system" : "other",
"value" : "http://www.healthit.gov/"
}
]
}
],
"description" : "New Description!",
"jurisdiction" : [
{
"coding" : [
{
"system" : "urn:iso:std:iso:3166",
"code" : "US",
"display" : "United States of America"
}
]
}
],
"code" : "race",
"base" : [
"Patient"
],
"type" : "token",
"expression" : "Patient.extension.where(url = 'http://hl7.org/fhir/us/core/StructureDefinition/us-core-race').extension.value.code"
}
Результатом является обновление SearchParameter
и увеличение версии.
Предупреждение
Будьте осторожны при обновлении searchParameters, которые уже индексированы в базе данных. Изменение существующего поведения SearchParameter может повлиять на ожидаемое поведение. Рекомендуется немедленно запустить задание переиндексации.
Удаление параметра поиска
Если необходимо удалить параметр поиска, используйте следующее.
Delete {{FHIR_URL}}/SearchParameter/{SearchParameter ID}
Предупреждение
Будьте осторожны при удалении searchParameters, которые уже индексированы в базе данных. Изменение существующего поведения SearchParameter может повлиять на ожидаемое поведение. Рекомендуется немедленно запустить задание переиндексации.
Следующие шаги
Из этой статьи вы узнали, как создать параметр поиска. Далее вы можете узнать, как переиндексировать сервер FHIR.
Примечание.
FHIR® является зарегистрированным товарным знаком HL7 и используется с разрешением HL7 .