Share via


Ejecución de un trabajo de reindexación

Hay escenarios en los que es posible que tenga parámetros de búsqueda en el servicio FHIR en Azure Health Data Services que aún no se hayan indexado. Este escenario es relevante al definir sus propios parámetros de búsqueda personalizados. Hasta que se indexe el parámetro de búsqueda, no se puede usar en producción activa. En este artículo se explica cómo ejecutar un trabajo de reindexación para indexar los parámetros de búsqueda personalizados que aún no se han indexado en la base de datos del servicio FHIR.

Advertencia

Antes de empezar, lea todo el artículo. Un trabajo de reindexación puede requerir mucho rendimiento. En este artículo se describen las opciones para limitar y controlar un trabajo de reindexación.

Procedimientos para ejecutar un trabajo de reindexación

El trabajo de reindexación se puede ejecutar en toda la base de datos del servicio FHIR y en un parámetro de búsqueda personalizado específico.

Ejecución del trabajo de reindexación en toda la base de datos del servicio FHIR

Para ejecutar el trabajo de reindexación, use la siguiente POST llamada con el recurso con formato Parameters JSON en el cuerpo de la solicitud:

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

"resourceType": "Parameters",  

"parameter": [] 

}

Deje el "parameter": [] campo en blanco (como se muestra) si no necesita ajustar los recursos asignados al trabajo de reindexación.

Si la solicitud se realiza correctamente, recibirá un código de estado 201 Creado además de un Parameters recurso en la respuesta.

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

Ejecución del trabajo de reindexación en un parámetro de búsqueda personalizado específico

Para ejecutar el trabajo de reindexación en un parámetro de búsqueda personalizado específico, use la siguiente POST llamada con el recurso con Parameters formato JSON en el cuerpo de la solicitud:

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 comprobar el estado de un trabajo de reindexación o cancelar el trabajo, necesitará el identificador de reindexación. Este es el "id" objeto que se lleva en el "parameter" valor devuelto en la respuesta. En el ejemplo anterior, el identificador del trabajo de reindexación sería 560c7c61-2c70-4c54-b86d-c53a9d29495e.

Comprobación del estado de un trabajo de reindexación

Una vez que inicia un trabajo de reindexación, puede comprobar el estado del trabajo mediante la siguiente llamada:

GET {{FHIR_URL}}/_operations/reindex/{{reindexJobId}}

Una respuesta de ejemplo:

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

La siguiente información se muestra en la respuesta anterior:

  • totalResourcesToReindex: incluye el número total de recursos que se vuelven a indexar en este trabajo.

  • resourcesSuccessfullyReindexed: el número total de recursos que ya se han reindexado en este trabajo.

  • progress: porcentaje de trabajo de reindexación completado. Es igual a resourcesSuccessfullyReindexed/totalResourcesToReindex x 100.

  • status: indica si el trabajo de reindexación está en cola, en ejecución, completado, con errores o cancelado.

  • resources: enumera todos los tipos de recursos afectados por el trabajo de reindexación.

  • 'resourceReindexProgressByResource (CountReindexed of Count)': proporciona un recuento reindexado del recuento total, por tipo de recurso. En los casos en los que se pone en cola la reindexación de un tipo de recurso específico, solo se proporciona Count.

  • 'searchParams': muestra la dirección URL de los parámetros de búsqueda afectados por el trabajo de reindexación.

Eliminación de un trabajo de reindexación

Si necesita cancelar un trabajo de reindexación, use una DELETE llamada y especifique el identificador del trabajo de reindexación:

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

Consideraciones de rendimiento

Un trabajo de reindexación puede requerir mucho rendimiento. El servicio FHIR ofrece algunos controles de limitación para ayudarle a administrar cómo se ejecuta un trabajo de reindexación en la base de datos.

Nota

En los conjuntos de datos de gran tamaño, no es poco frecuente que la ejecución de un trabajo de reindexación dure varios días.

A continuación se muestra una tabla que describe los parámetros disponibles, los valores predeterminados y los intervalos recomendados para controlar los recursos de proceso del trabajo de reindexación. Puede usar estos parámetros ya sea para acelerar el proceso (usar más proceso) o ralentizarlo (usar menos proceso).

Parámetro Descripción Valor predeterminado Intervalo disponible
QueryDelayIntervalInMilliseconds Retraso entre cada lote de recursos que se va a iniciar durante el trabajo de reindexación. Un número menor acelera el trabajo mientras un número mayor lo ralentiza. 500 MS (0,5 segundos) De 50 a 500000
MaximumResourcesPerQuery Número máximo de recursos incluidos en el lote de recursos que se van a reindexar. 100 1-5000
MaximumConcurrency Es el número de lotes que se realiza al mismo tiempo. 1 1-10

Si desea usar cualquiera de los parámetros anteriores, puede pasarlos al Parameters recurso al enviar la solicitud inicial POST para iniciar un trabajo de reindexación.


POST {{FHIR_URL}}/$reindex 
content-type: application/fhir+json
{
  "resourceType": "Parameters",
  "parameter": [
    {
      "name": "maximumConcurrency",
      "valueInteger": "3"
    },
    {
      "name": "queryDelayIntervalInMilliseconds",
      "valueInteger": "1000"
    },
    {
      "name": "maximumNumberOfResourcesPerQuery",
      "valueInteger": "1"
    }
  ]
}

Pasos siguientes

En este artículo, ha aprendido a realizar un trabajo de reindexación en el servicio FHIR. Para obtener información sobre cómo definir parámetros de búsqueda personalizados, consulte

FHIR® es una marca registrada de HL7 y se usa con su permiso.