Share via


Exécution d’un travail de réindexation

Il existe des scénarios dans lesquels vous pouvez avoir des paramètres de recherche dans le service FHIR dans Azure Health Data Services qui n’ont pas encore été indexés. Ce scénario est pertinent lorsque vous définissez vos propres paramètres de recherche personnalisés. Tant que le paramètre de recherche n’est pas indexé, il ne peut pas être utilisé en production dynamique. Cet article explique comment exécuter un travail de réindexation pour indexer tous les paramètres de recherche personnalisés qui n’ont pas encore été indexés dans votre base de données de service FHIR.

Avertissement

Il est important de lire cet article en entier avant de commencer. Une tâche de réindexation peut être très gourmande en performances. Cet article décrit les options permettant de limiter et de contrôler un travail de réindexation.

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

Le travail de réindexation peut être exécuté sur la base de données de service FHIR entière et sur un paramètre de recherche personnalisé spécifique.

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

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

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

"resourceType": "Parameters",  

"parameter": [] 

}

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

Si la demande réussit, vous recevez un code 201 Créé status 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": "maximumConcurrency",
            "valueDecimal": 3.0
        },
        {
            "name": "queryDelayIntervalInMilliseconds",
            "valueDecimal": 500.0
        },
        {
            "name": "maximumNumberOfResourcesPerQuery",
            "valueDecimal": 100.0
        }
    ]
}

Exécuter le 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 Parameters format 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.}"
    }
] 

}

Notes

Pour case activée la status d’un travail de réindexation ou pour l’annuler, vous avez besoin de l’ID de réindexation. Il s’agit de la "id" valeur portée dans la "parameter" valeur retournée dans la réponse. Dans l’exemple ci-dessus, l’ID du travail de réindexation serait 560c7c61-2c70-4c54-b86d-c53a9d29495e.

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

Une fois que vous avez démarré une tâche de réindexation, vous pouvez vérifier l’état de la tâche à 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": "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
        }
    ]
}

Les informations suivantes sont présentées dans la réponse ci-dessus :

  • totalResourcesToReindex: inclut le nombre total de ressources qui sont réindexées dans ce travail.

  • resourcesSuccessfullyReindexed: nombre total de ressources qui ont déjà été réindexées dans ce travail.

  • progress: Réindexer le pourcentage de travail terminé. resourcesSuccessfullyReindexed/totalResourcesToReindex Est égal à x 100.

  • status: indique si la tâche de réindexation est mise en file d’attente, en cours d’exécution, terminée, ayant échoué ou annulée.

  • resources: répertorie tous les types de ressources impactés par le travail de réindexation.

  • 'resourceReindexProgressByResource (CountReindexed of Count)' : fournit le nombre réindexé du nombre total, par type de ressource. Dans les cas où la réindexation pour un type de ressource spécifique est mise en file d’attente, seul Count est fourni.

  • 'searchParams' : répertorie l’URL des paramètres de recherche impactés par la tâche de réindexation.

Supprimer une tâche de réindexation

Si vous devez annuler un travail 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 propose des contrôles de limitation pour vous aider à gérer l’exécution d’un travail de réindexation sur votre base de données.

Notes

Il n’est pas rare que les jeux de données volumineux d’une tâche de réindexation s’exécutent pendant des jours.

Vous trouverez ci-dessous un tableau décrivant les paramètres disponibles, les valeurs par défaut et les plages recommandées pour le contrôle des ressources de calcul des travaux de réindexation. Vous pouvez utiliser ces paramètres pour accélérer le processus (utiliser plus de calcul) ou ralentir le processus (utiliser moins de calcul).

Paramètre Description Par défaut Plage disponible
QueryDelayIntervalInMilliseconds Délai entre chaque lot de ressources lancée pendant la tâche de réindexation. Un nombre plus petit accélère le travail tandis qu’un plus grand nombre le ralentit. 500 MS (0,5 secondes) 50 à 5000000
MaximumResourcesPerQuery Nombre maximal de ressources incluses dans le lot de ressources à réindexer. 100 1-5 000
MaximumConcurrency Nombre de lots effectués à la fois. 1 1-10

Si vous souhaitez utiliser l’un des paramètres ci-dessus, vous pouvez les transmettre à la Parameters ressource lorsque vous envoyez la demande initiale POST de démarrage d’un travail de réindexation.


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

É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

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