Exécution d’un travail de réindexation
Il existe des scénarios où 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ée. Tant qu’un 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 les paramètres de recherche personnalisé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
Un travail de réindexation peut être exécuté sur une base de données de service FHIR entière et 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": []
}
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 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": "maximumConcurrency",
"valueDecimal": 3.0
},
{
"name": "queryDelayIntervalInMilliseconds",
"valueDecimal": 500.0
},
{
"name": "maximumNumberOfResourcesPerQuery",
"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 annuler une tâche de réindexation, vous avez besoin de l’ID de réindexation. Il s’agit de la "id"
"parameter"
valeur de la réponse. Dans l’exemple précédent, 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é un travail de réindexation, vous pouvez vérifier l’état du travail à 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 s’affichent dans la réponse précédente :
totalResourcesToReindex
: inclut le nombre total de ressources réindexées dans ce travail.resourcesSuccessfullyReindexed
: nombre total de ressources qui ont déjà été réindexées dans ce travail.progress
: Réindexez 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 affectés par la tâche de réindexation.'resourceReindexProgressByResource (CountReindexed of Count)' : fournit un nombre réindexé du nombre total, par type de ressource. Dans les cas où la réindexation d’un type de ressource spécifique est mise en file d’attente, seul le nombre est fourni.
« searchParams » : répertorie l’URL des paramètres de recherche affecté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 réindexé.
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 contrôles de limitation pour vous aider à gérer l’exécution d’un travail de réindexation sur votre base de données.
Remarque
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 contrôler les 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 alors qu’un plus grand nombre le ralentit. | 500 MS (0,5 secondes) | 50 à 500000 |
MaximumResourcesPerQuery |
Nombre maximal de ressources incluses dans le lot à 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 précédents, vous pouvez les transmettre à la Parameters
ressource lorsque vous envoyez la requête initiale POST
pour démarrer 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
Remarque
FHIR® est une marque déposée de HL7 utilisé avec l’autorisation de HL7.