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


Определение пользовательских параметров поиска

Спецификация FHIR® определяет набор параметров поиска, которые применяются ко всем ресурсам. Кроме того, FHIR определяет множество параметров поиска, относящихся к определенным ресурсам. Однако может потребоваться выполнить поиск по элементу в ресурсе, который не определен спецификацией FHIR в качестве стандартного параметра поиска. В этой статье описывается, как определить собственные параметры пользовательского поиска для использования в службе FHIR в службах данных Работоспособности Azure.

Примечание.

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

Создание нового параметра поиска

Чтобы создать новый параметр поиска, необходимо указать POST SearchParameter ресурс в базе данных службы FHIR.

POST {{FHIR_URL}}/SearchParameter

В следующих примерах показано создание нового настраиваемого параметра поиска.

Создание нового параметра поиска для каждого определения в руководстве по реализации

В следующем примере кода показано, как добавить параметр поиска гонки US Core в Patient тип ресурса в базе данных службы FHIR.

{
  "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"
}

Создание нового параметра поиска для атрибутов ресурсов с ссылочным типом

В следующем примере кода показано, как создать настраиваемый параметр поиска для поиска ресурсов MedicationDispense в зависимости от расположения, в котором они были отложены. Это пример добавления настраиваемого параметра поиска для ссылочного типа.

{
 "resourceType": "SearchParameter",
  "id": "a3c28d46-fd06-49ca-aea7-5f9314ef0497",
  "url": "{{An absolute URI that is used to identify this search parameter}}",
  "version": "1.0",
  "name": "MedicationDispenseLocationSearchParameter",
  "status": "active",
  "description": "Search parameter for MedicationDispense by location",
  "code": "location",
  "base": ["MedicationDispense"],
  "target": ["Location"],
  "type": "reference",
  "expression": "MedicationDispense.location"
}

Примечание.

Новый параметр поиска появится в инструкции возможностей службы FHIR после того, как параметр POST поиска в базу данных и переиндексировать базу данных. SearchParameter Просмотр инструкции возможности — единственный способ определить, поддерживается ли параметр поиска в службе FHIR. Если вы не можете найти SearchParameter в инструкции возможностей, то для активации параметра поиска необходимо переиндексировать базу данных. Перед активацией операции переиндексирования можно использовать POST несколько параметров поиска.

Важные элементы SearchParameter ресурса:

  • url: уникальный ключ для описания параметра поиска. Такие организации, как HL7, используют стандартный формат URL-адреса для параметров поиска, которые они определяют, как показано выше в параметре поиска гонки в США Core.

  • code: значение, хранящееся в элементе кода , — это имя, используемое для параметра поиска при включении в вызов API. В приведенном выше примере с расширением "Основная гонка США" вы будете искать, где GET {{FHIR_URL}}/Patient?race=<code> <code> находится в наборе значений из указанной системы кодирования. Этот вызов будет извлекать всех пациентов определенной расы.

  • base: описывает, к каким типам ресурсов применяется параметр поиска. Если параметр поиска применяется ко всем ресурсам, можно использовать Resource; в противном случае можно перечислить все соответствующие типы ресурсов.

  • target: описывает, какие типы ресурсов совпадают с параметром поиска.

  • type: описывает тип данных для параметра поиска. Тип ограничен поддержкой типов данных в службе FHIR. Это означает, что нельзя определить параметр поиска типа Special или определить составной параметр поиска, если это не поддерживается сочетание.

  • expression: описывает, как вычислить значение для поиска. При описании параметра поиска необходимо включить выражение, даже если оно не требуется спецификацией. Это связано с тем, что требуется выражение или синтаксис xpath, а служба FHIR игнорирует синтаксис xpath.

Тестирование новых параметров поиска

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

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

GET https://{{FHIR_URL}}/{{RESOURCE}}/{{RESOURCE_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

При выполнении этого POST вызова индексы для всех параметров поиска, определенных для экземпляра ресурса, указанного в запросе. Этот вызов вносит изменения в базу данных службы FHIR. Теперь можно выполнить поиск и задать x-ms-use-partial-indices для заголовка trueзначение, которое приводит к возврату результатов службы FHIR для любого из ресурсов с индексированием параметра поиска, даже если не все экземпляры ресурсов этого типа индексируются.

Продолжая наш пример, можно проиндексировать одного пациента, чтобы включить SearchParameter:

POST {{FHIR_URL}}/Patient/{{PATIENT_ID}}/$reindex

А затем выполните тестовые поиски:

  1. Для пациента по расе:
GET {{FHIR_URL}}/Patient?race=2028-9
x-ms-use-partial-indices: true
  1. Для расположения (ссылочный тип)
{{fhirurl}}/MedicationDispense?location=<locationid referenced in MedicationDispense Resource>
x-ms-use-partial-indices: true

После тестирования нового параметра поиска и подтверждения того, что он работает должным образом, запустите или запланируйте задание переиндексации, чтобы новые параметры поиска можно было использовать в динамической рабочей среде.

Сведения о повторном индексации базы данных службы FHIR см. в статье "Выполнение задания переиндексации".

Обновление параметра поиска

Чтобы обновить параметр поиска, используйте PUT для создания новой версии параметра поиска. Необходимо включить идентификатор параметра поиска в поле в id текст PUT запроса и PUT строку запроса.

Примечание.

Если вы не знаете идентификатор параметра поиска, его можно найти с помощью GET {{FHIR_URL}}/SearchParameter. При этом будут возвращены все пользовательские и стандартные параметры поиска. Чтобы найти нужный параметр поиска, прокрутите список. Вы также можете ограничить поиск по имени. Как показано в следующем примере запроса, имя пользовательского SearchParameter экземпляра ресурса равно USCoreRace. Этот ресурс можно найти SearchParameter по имени.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 ресурс.

Предупреждение

Будьте осторожны при обновлении параметров поиска. Изменение существующего параметра поиска может повлиять на ожидаемое поведение. Рекомендуется немедленно запустить задание переиндексации.

Удаление параметра поиска

Если необходимо удалить параметр поиска, используйте следующее.

DELETE {{FHIR_URL}}/SearchParameter/{{SearchParameter_ID}}

Предупреждение

Будьте осторожны при удалении параметров поиска. Удаление существующего параметра поиска может повлиять на ожидаемое поведение. Рекомендуется немедленно запустить задание переиндексации.

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

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

Примечание.

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