Partilhar via


Executando um trabalho de reindexação na API do Azure para FHIR

Importante

A API do Azure para FHIR será desativada em 30 de setembro de 2026. Siga as estratégias de migração para fazer a transição para o serviço FHIR® dos Serviços de Dados de Saúde do Azure até essa data. Devido à desativação da API do Azure para FHIR, novas implantações não serão permitidas a partir de 1 de abril de 2025. O serviço FHIR dos Serviços de Dados de Saúde do Azure é a versão evoluída da API do Azure para FHIR que permite aos clientes gerir serviços FHIR, DICOM e MedTech com integrações noutros serviços do Azure.

Há cenários em que você pode ter parâmetros de pesquisa ou classificação na API do Azure para FHIR® que ainda não foram indexados. Esse cenário é relevante quando você define seus próprios parâmetros de pesquisa. Até que o parâmetro de pesquisa seja indexado, ele não pode ser usado na pesquisa. Este artigo aborda como executar um trabalho de reindexação para indexar parâmetros de pesquisa em seu banco de dados de serviço FHIR.

Aviso

É importante que você leia este artigo inteiro antes de começar. Um trabalho de reindexação pode exigir muito desempenho. Este artigo inclui opções sobre como limitar e controlar o trabalho de reindexação.

Como executar um trabalho de reindexação

Um trabalho de reindexação pode ser executado em todo o banco de dados de serviço FHIR e em parâmetros de pesquisa personalizados específicos.

Executar trabalho de reindexação em todo o banco de dados de serviço FHIR

Para executar um trabalho de reindexação, use a seguinte POST chamada com o recurso formatado Parameters JSON no corpo da solicitação.

POST {{FHIR URL}}/$reindex 

{ 

“resourceType”: “Parameters”,  

“parameter”: [] 

}

Deixe o "parameter": [] campo em branco (conforme mostrado) se não precisar ajustar os recursos alocados para o trabalho de reindexação.

Se a solicitação for bem-sucedida, você receberá um código de status 201 Created além de um Parameters recurso na resposta, como no exemplo a seguir.

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
    }
  ]
}

Executar trabalho de reindexação em relação a parâmetros de pesquisa personalizados específicos

Para executar um trabalho de reindexação em relação a um parâmetro de pesquisa personalizado específico, use a seguinte POST chamada com o recurso formatado Parameters JSON no corpo da solicitação.

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 seperated.}"
    }
] 

}

Nota

Para verificar o status de um trabalho de reindexação ou cancelar o trabalho, você precisará do ID de reindexação. Este é o "id" valor transportado "parameter" na resposta. No exemplo anterior, a ID para o trabalho de reindexação seria 560c7c61-2c70-4c54-b86d-c53a9d29495e.

Como verificar o status de um trabalho de reindexação

Depois de iniciar um trabalho de reindexação, você pode verificar o status do trabalho usando a seguinte chamada.

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

Eis uma resposta de exemplo.

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

As seguintes informações são mostradas na resposta.

  • totalResourcesToReindex: Inclui o número total de recursos que estão sendo reindexados neste trabalho.

  • resourcesSuccessfullyReindexed: O número total de recursos que já foram reindexados neste trabalho.

  • progress: Reindexar a porcentagem do trabalho concluído. Calculado como resourcesSuccessfullyReindexed/totalResourcesToReindex x 100.

  • status: Indica se o trabalho de reindexação está enfileirado, em execução, concluído, com falha ou cancelado.

  • resources: Lista todos os tipos de recursos afetados pelo trabalho de reindexação.

  • resourceReindexProgressByResource (CountReindexed of Count): Fornece uma contagem reindexada da contagem total, por tipo de recurso. Nos casos em que a reindexação para um tipo de recurso específico é enfileirada, apenas Count é fornecido.

  • searchParams: Lista a url dos parâmetros de pesquisa afetados pelo trabalho de reindexação.

Excluir um trabalho de reindexação

Se você precisar cancelar um trabalho de reindexação, use uma chamada de exclusão e especifique o ID do trabalho de reindexação:

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

Considerações de desempenho

Um trabalho de reindexação pode ser bastante intensivo em termos de desempenho. Implementamos alguns controles de limitação para ajudá-lo a gerenciar como um trabalho de reindexação é executado em seu banco de dados.

Nota

Não é incomum em grandes conjuntos de dados que um trabalho de reindexação seja executado por dias. Para um banco de dados com 30.000.000 de recursos, notamos que levou de 4 a 5 dias em 100.000 unidades de solicitação (RUs) para reindexar todo o banco de dados.

A seguir está uma tabela que descreve os parâmetros disponíveis, padrões e intervalos recomendados. Você pode usar esses parâmetros para acelerar o processo (usar mais computação) ou retardar o processo (usar menos computação). Por exemplo, você pode executar o trabalho de reindexação em um momento de baixo tráfego e aumentar sua computação para fazê-lo mais rapidamente. Você também pode usar as configurações para garantir um baixo uso de computação e executá-la por dias em segundo plano.

Parâmetro Descrição Predefinição Gama Disponível
QueryDelayIntervalInMilliseconds O atraso entre cada lote de recursos sendo iniciado durante o trabalho de reindexação. Um número menor acelera o trabalho, enquanto um número maior o atrasa. 500 MS (.5 segundos) 50-500000
MaximumResourcesPerQuery O número máximo de recursos incluídos no lote de recursos a serem reindexados. 100 1-5000
MaximumConcurrency O número de lotes feitos de cada vez. 1 1-10
targetDataStoreUsagePercentage Permite especificar qual porcentagem do seu armazenamento de dados deve ser usada para o trabalho de reindexação. Por exemplo, você poderia especificar 50% e isso garantiria que, no máximo, o trabalho de reindexação usaria 50% das RUs disponíveis no Azure Cosmos DB. Não está presente, o que significa que até 100% pode ser usado. 0-100

Se quiser usar qualquer um dos parâmetros anteriores, você pode passá-los para o recurso Parâmetros ao iniciar o trabalho de reindexação.

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

Próximos passos

Neste artigo, você aprendeu como iniciar um trabalho de reindexação. Para saber como definir novos parâmetros de pesquisa que exigem o trabalho de reindexação, consulte

Nota

FHIR® é uma marca registada da HL7 e é utilizada com a permissão da HL7.