Executando um trabalho de reindexação
Há cenários em que você pode ter parâmetros de pesquisa no serviço FHIR® nos Serviços de Dados de Saúde do Azure que ainda precisam ser indexados. Esse cenário é relevante quando você define seus próprios parâmetros de pesquisa personalizados. Até que um parâmetro de pesquisa seja indexado, ele não pode ser usado na produção ao vivo. Este artigo aborda como executar um trabalho de reindexação para indexar quaisquer parâmetros de pesquisa personalizados 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 discute opções sobre como limitar e controlar um trabalho de reindexação.
Como executar um trabalho de reindexação
Um trabalho de reindexação pode ser executado em um banco de dados de serviço FHIR inteiro e em parâmetros de pesquisa personalizados específicos.
Executar um 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
content-type: application/fhir+json
{
"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.
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": "138035"
},
"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 um trabalho de reindexação em relação a um parâmetro de pesquisa personalizado específico
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 separated.}"
}
]
}
Nota
Para verificar o status ou cancelar um trabalho de reindexação, você precisa do ID de reindexação. Este é o "id"
valor da "parameter"
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}}"
},
{
"name": "queryDelayIntervalInMilliseconds",
"valueDecimal": 500.0
},
{
"name": "maximumNumberOfResourcesPerQuery",
"valueDecimal": 100.0
}
]
}
As seguintes informações são mostradas na resposta anterior:
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. Igual aresourcesSuccessfullyReindexed
/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 DELETE
chamada 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. O serviço FHIR oferece controles de limitação para ajudar 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.
Abaixo está uma tabela que descreve os parâmetros disponíveis, os padrões e os intervalos recomendados para controlar os recursos de computação do trabalho de reindexação. Você pode usar esses parâmetros para acelerar o processo (usar mais computação) ou retardar o processo (usar menos computação).
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 a 500000 |
MaximumResourcesPerQuery |
O número máximo de recursos incluídos no lote a ser reindexado. | 100 | 1-5000 |
MaximumConcurrency |
O número de lotes feitos de cada vez. | 1 | 1-10 |
Se quiser usar qualquer um dos parâmetros anteriores, você pode passá-los para o Parameters
recurso quando enviar a solicitação inicial POST
para iniciar um trabalho de reindexação.
POST {{FHIR_URL}}/$reindex
content-type: application/fhir+json
{
"resourceType": "Parameters",
"parameter": [
{
"name": "maximumConcurrency",
"valueInteger": "3"
},
{
"name": "queryDelayIntervalInMilliseconds",
"valueInteger": "1000"
},
{
"name": "maximumNumberOfResourcesPerQuery",
"valueInteger": "1"
}
]
}
Próximos passos
Neste artigo, você aprendeu como executar um trabalho de reindexação em seu serviço FHIR. Para saber como definir parâmetros de pesquisa personalizados, consulte
Nota
FHIR® é uma marca registada da HL7 e é utilizada com a permissão da HL7.