Exécuter un travail de réindexation dans le service FHIR

Certains scénarios nécessitent une réindexation des paramètres de recherche dans le service FHIR® dans Services de données de santé Azure. Ce scénario est pertinent lorsque vous définissez vos propres paramètres de recherche personnalisée. Tant qu’un paramètre de recherche n’est pas indexé, vous ne pouvez pas l’utiliser en production dynamique. Cet article explique comment exécuter un travail de réindexation pour indexer les paramètres de recherche personnalisés dans votre base de données de service FHIR.

Avertissement

Lisez l’intégralité de cet article avant de commencer. Une tâche de réindexation peut être très gourmande en performances. Cet article traite des options pour limiter et contrôler une tâche de réindexation.

Guide pratique pour exécuter un travail de réindexation

Vous pouvez exécuter une tâche de réindexation sur une base de données de service FHIR entière ou sur des paramètres de recherche personnalisés spécifiques.

Exécuter un travail de réindexation sur l’ensemble de la base de données de service FHIR

Pour exécuter un travail de réindexation, utilisez l’appel suivant POST avec la ressource au format Parameters JSON dans le corps de la requête.

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

"resourceType": "Parameters",  

"parameter": [] 

}

Si vous n’avez pas besoin d’ajuster les ressources allouées au travail de réindexation, laissez le "parameter": [] champ vide (comme indiqué).

Si la demande réussit, vous recevez un code d’état 201 créé en plus d’une Parameters ressource dans la réponse.

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": "maximumNumberOfResourcesPerQuery",
            "valueDecimal": 100.0
        },
        {
            "name": "maximumNumberOfResourcesPerWrite",
            "valueDecimal": 100.0
        }
    ]
}

Exécuter un travail de réindexation sur un paramètre de recherche personnalisé spécifique

Pour exécuter une tâche de réindexation sur un paramètre de recherche personnalisé spécifique, utilisez l’appel suivant POST avec la ressource au format Parameters JSON dans le corps de la requête.

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

}

Remarque

Pour vérifier l’état ou l’annulation d’un travail de réindexation, vous avez besoin de l’ID de réindexation. L’ID de réindexation correspond à "id", figurant dans la valeur "parameter" de la réponse. Dans l’exemple précédent, l’ID du travail de réindexation est 560c7c61-2c70-4c54-b86d-c53a9d29495e.

Comment vérifier l’état d’un travail de réindexation

Après avoir démarré une tâche de réindexation, vérifiez l’état à l’aide de l’appel suivant.

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

Voici un exemple de réponse.

{
    "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": "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": "maximumNumberOfResourcesPerQuery",
            "valueDecimal": 100.0
        },
        {
            "name": "maximumNumberOfResourcesPerWrite",
            "valueDecimal": 100.0
        }
    ]
}

La réponse précédente affiche les informations suivantes :

Paramètre Description
totalResourcesToReindex Nombre total de ressources que le travail réindexe.
resourcesSuccessfullyReindexed Nombre total de ressources que la tâche réindexe.
progress Pourcentage d’avancement de l’opération de réindexation. Égal à resourcesSuccessfullyReindexed divisé par totalResourcesToReindex, multiplié par 100.
status État du travail de réindexation. Elle peut être en attente, en cours d’exécution, terminée, échouée ou annulée.
resources Tous les types de ressources affectés par la tâche de réindexation.
resourceReindexProgressByResource (CountReindexed of Count) Nombre réindexé du nombre total, par type de ressource. Si la réindexation d’un type de ressource spécifique est en attente, seul Count est fourni.
searchParams URL des paramètres de recherche impactés par le travail de réindexation.

Annuler un travail de réindexation

Pour annuler une tâche de réindexation, utilisez un DELETE appel et spécifiez l’ID de travail de réindexation.

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

Considérations relatives aux performances

Une tâche de réindexation peut être très gourmande en performances. Le service FHIR offre des mécanismes de limitation pour vous aider à contrôler l’exécution d’un travail de réindexation sur votre base de données. Utilisez le MaximumResourcesPerQuery paramètre pour accélérer le processus (utiliser plus de calcul) ou ralentir le processus (utilisez moins de calcul). Le MaximumResourcesPerQuery paramètre définit le nombre maximal de ressources incluses dans le lot à réindexer. La valeur par défaut est 100 et vous pouvez définir la valeur comprise entre 1 et 5 000. Exemple de requête avec le paramètre :


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

Remarque

Il n’est pas rare qu’un travail de réindexation sur des jeux de données volumineux s’exécute pendant des jours.

Étapes suivantes

Dans cet article, vous avez appris à effectuer une tâche de réindexation dans votre service FHIR. Pour savoir comment définir des paramètres de recherche personnalisés, consultez

Remarque

FHIR® est une marque déposée de HL7 utilisé avec l’autorisation de HL7.