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


Выполнение задания переиндексирования в 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.

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

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

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

Как выполнить задание повторной индексации

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

Выполнение задания переиндексации во всей базе данных службы FHIR

Чтобы запустить задание повторной индексации, используйте следующий POST вызов с отформатированным Parameters ресурсом JSON в тексте запроса.

POST {{FHIR URL}}/$reindex 

{ 

“resourceType”: “Parameters”,  

“parameter”: [] 

}

"parameter": [] Оставьте поле пустым (как показано), если вам не нужно настраивать ресурсы, выделенные для задания переиндексации.

Если запрос выполнен успешно, вы получите код состояния 201 в дополнение к Parameters ресурсу в ответе, как показано в следующем примере.

HTTP/1.1 201 Created 
Content-Location: https://{{FHIR URL}}/_operations/reindex/560c7c61-2c70-4c54-b86d-c53a9d29495e 

{
  "resourceType": "Parameters",
  "id": "560c7c61-2c70-4c54-b86d-c53a9d29495e",
  "meta": {
    "versionId": "\"4c0049cd-0000-0100-0000-607dc5a90000\""
  },
  "parameter": [
    {
      "name": "id",
      "valueString": "560c7c61-2c70-4c54-b86d-c53a9d29495e"
    },
    {
       "name": "lastModified",
       "valueDateTime": "2023-06-08T04:52:44.0974408+00:00"
    },
    {
       "name": "queuedTime",
       "valueDateTime": "2023-06-08T04:52:44.0974406+00:00"
    },
    {
       "name": "totalResourcesToReindex",
       "valueDecimal": 0.0
    },
    {
       "name": "resourcesSuccessfullyReindexed",
       "valueDecimal": 0.0
    },
    {
       "name": "progress",
       "valueDecimal": 0.0
    },
    {
       "name": "status",
       "valueString": "Queued"
    },
    {
       "name": "maximumConcurrency",
       "valueDecimal": 3.0
    },
    {
        "name": "queryDelayIntervalInMilliseconds",
        "valueDecimal": 500.0
    },
    {
        "name": "maximumNumberOfResourcesPerQuery",
        "valueDecimal": 100.0
    }
  ]
}

Выполнение задания переиндексации для определенного настраиваемого параметра поиска

Чтобы запустить задание переиндексации для определенного настраиваемого параметра поиска, используйте следующий POST вызов с отформатированным Parameters ресурсом JSON в тексте запроса.

POST {{FHIR_URL}}/$reindex 
content-type: application/fhir+json
{ 

"resourceType": "Parameters",  

"parameter": [
    {
      "name": "targetSearchParameterTypes",
      "valueString": "{url of custom search parameter. In case of multiple custom search parameters, url list can be comma separated.}"
    }
] 

}

Примечание.

Чтобы проверить состояние задания переиндексации или отменить задание, потребуется идентификатор повторной индексации. "id" Это перенос в значении"parameter", возвращаемом в ответе. В предыдущем примере идентификатор задания переиндексации будет 560c7c61-2c70-4c54-b86d-c53a9d29495e.

Как проверить состояние задания переиндексирования

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

GET {{FHIR URL}}/_operations/reindex/{{reindexJobId}

Вот пример ответа.

{
    "resourceType": "Parameters",
    "id": "560c7c61-2c70-4c54-b86d-c53a9d29495e",
    "meta": {
        "versionId": "138087"
    },
    "parameter": [
        {
            "name": "id",
            "valueString": "560c7c61-2c70-4c54-b86d-c53a9d29495e"
        },
        {
            "name": "startTime",
            "valueDateTime": "2023-06-08T04:54:53.2943069+00:00"
        },
        {
            "name": "endTime",
            "valueDateTime": "2023-06-08T04:54:54.4052272+00:00"
        },
        {
            "name": "lastModified",
            "valueDateTime": "2023-06-08T04:54:54.4053002+00:00"
        },
        {
            "name": "queuedTime",
            "valueDateTime": "2023-06-08T04:52:44.0974406+00:00"
        },
        {
            "name": "totalResourcesToReindex",
            "valueDecimal": 2.0
        },
        {
            "name": "resourcesSuccessfullyReindexed",
            "valueDecimal": 2.0
        },
        {
            "name": "progress",
            "valueDecimal": 100.0
        },
        {
            "name": "status",
            "valueString": "Completed"
        },
        {
            "name": "maximumConcurrency",
            "valueDecimal": 3.0
        },
        {
            "name": "resources",
            "valueString": "{{LIST_OF_IMPACTED_RESOURCES}}"
        },
        {
            "name": "resourceReindexProgressByResource (CountReindexed of Count)",
            "valueString": "{{RESOURCE_TYPE:REINDEXED_COUNT OF TOTAL_COUNT}}"
        },
        {
            "name": "searchParams",
            "valueString": "{{LIST_OF_SEARCHPARAM_URLS}}h"
        },
        {
            "name": "queryDelayIntervalInMilliseconds",
            "valueDecimal": 500.0
        },
        {
            "name": "maximumNumberOfResourcesPerQuery",
            "valueDecimal": 100.0
        }
    ]
}

В ответе показаны следующие сведения.

  • totalResourcesToReindex: включает общее количество ресурсов, которые переиндексированы в этом задании.

  • resourcesSuccessfullyReindexed: общее количество ресурсов, которые уже были переиндексированы в этом задании.

  • progress: процент завершения задания переиндексации. Вычисляется как resourcesSuccessfullyReindexed/totalResourcesToReindex x 100.

  • status: указывает, если задание повторной индексации находится в очереди, выполняется, завершается, завершается сбоем или отменяется.

  • resources: выводит список всех типов ресурсов, затронутых заданием переиндексации.

  • resourceReindexProgressByResource (CountReindexed of Count): предоставляет переиндексированное количество общего количества ресурсов для каждого типа ресурса. В случаях, когда переиндексирование для определенного типа ресурса помещается в очередь, предоставляется только число.

  • searchParams: выводит URL-адрес параметров поиска, затронутых заданием переиндексации.

Удаление задания переиндексации

Если необходимо отменить задание повторной индексации, используйте вызов удаления и укажите идентификатор задания переиндексации:

Delete {{FHIR URL}}/_operations/reindex/{{reindexJobId}

Замечания, связанные с быстродействием

Задание переиндексации может быть довольно интенсивным. Мы реализовали некоторые элементы управления регулированием, которые помогут вам управлять выполнением задания переиндексации в базе данных.

Примечание.

Это не редкость в больших наборах данных для задания переиндексации для выполнения в течение нескольких дней. Для базы данных с 30 000 000 ресурсами мы заметили, что для повторной индексации всей базы данных потребовалось 4-5 дней в 100 000 единиц запросов (ЕЗ).

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

Параметр Description По умолч. Доступный диапазон
QueryDelayIntervalInMilliseconds Задержка между каждым пакетом ресурсов, запускаемой во время задания переиндексации. Меньшее число ускоряет задание, в то время как более высокое число замедляет его. 500 МС (5 секунд) 50-500000
MaximumResourcesPerQuery Максимальное количество ресурсов, включенных в пакет ресурсов, которые необходимо переиндексировать. 100 1-5000
Максимальная параллелизмность Количество пакетов, выполненных за раз. 1 1–10
targetDataStoreUsagePercentage Позволяет указать, какой процент хранилища данных будет использоваться для задания повторного индексации. Например, можно указать 50 % и убедиться, что в большинстве случаев задание переиндексации будет использовать 50 % доступных единиц запросов в Azure Cosmos DB. Нет, это означает, что можно использовать до 100 % . 0–100

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

{
  "resourceType": "Parameters",
  "parameter": [
    {
      "name": "maximumConcurrency",
      "valueInteger": "3"
    },
    {
      "name": "targetDataStoreUsagePercentage",
      "valueInteger": "20"
    },
    {
      "name": "queryDelayIntervalInMilliseconds",
      "valueInteger": "1000"
    },
    {
      "name": "maximumNumberOfResourcesPerQuery",
      "valueInteger": "1"
    }
  ]
}

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

Из этой статьи вы узнали, как запустить задание повторного индексации. Сведения о том, как определить новые параметры поиска, требующие задания переиндексации, см. в разделе

Примечание.

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