Cette page explique comment supprimer des ressources FHIR d'un store FHIR de manière groupée à l'aide d'une opération de longue durée.
Vous pouvez supprimer plusieurs ressources FHIR en une seule opération en fonction de filtres tels que le type de ressource et la date de dernière modification, ou en fournissant une liste d'ID de ressources spécifiques dans un fichier Cloud Storage. Cela est utile pour la gestion du cycle de vie des données et les économies de coûts.
Avant de commencer
Avant de pouvoir supprimer des ressources FHIR de manière groupée, assurez-vous des points suivants :
- Vous devez disposer de l'autorisation
healthcare.fhirStores.bulkDeletesur le magasin FHIR. - Si vous spécifiez un
gcsDestination, le compte de service Agent de service Cloud Healthcare doit disposer du rôleroles/storage.objectAdminsur le bucket de destination. Pour en savoir plus, consultez Autorisations Cloud Storage pour les magasins FHIR. - Si vous spécifiez un
gcsSource, le compte de service Agent de service Cloud Healthcare doit disposer du rôleroles/storage.objectViewersur le bucket source. Pour en savoir plus, consultez Supprimer des ressources FHIR de manière groupée.
Supprimer des ressources FHIR de manière groupée
Pour supprimer des ressources FHIR de manière groupée, utilisez la méthode projects.locations.datasets.fhirStores.bulkDelete.
Cette méthode renvoie une opération de longue durée (LRO). Vous pouvez suivre l'état de l'opération de longue durée à l'aide du nom d'opération renvoyé par l'appel d'API.
L'exemple suivant montre comment effectuer une requête POST pour supprimer de manière groupée toutes les ressources Observation et Encounter d'un magasin FHIR qui ont été mises à jour pour la dernière fois avant un code temporel spécifique.
REST
Avant d'utiliser les données de requête, effectuez les remplacements suivants :
PROJECT_ID: ID de votre projet Google CloudLOCATION: emplacement de l'ensemble de donnéesDATASET_ID: ensemble de données parent du magasin FHIR.FHIR_STORE_ID: ID du magasin FHIR.
Corps JSON de la requête :
{
"type": "Observation,Encounter",
"versionConfig": "ALL",
"until": "2025-01-01T00:00:00Z",
"gcsDestination": {
"uriPrefix": "gs://BUCKET/DIRECTORY"
}
}
Pour envoyer votre requête, choisissez l'une des options suivantes :
curl
Enregistrez le corps de la requête dans un fichier nommé request.json.
Exécutez la commande suivante dans le terminal pour créer ou écraser ce fichier dans le répertoire actuel :
cat > request.json << 'EOF'
{
"type": "Observation,Encounter",
"versionConfig": "ALL",
"until": "2025-01-01T00:00:00Z",
"gcsDestination": {
"uriPrefix": "gs://BUCKET/DIRECTORY"
}
}
EOFExécutez ensuite la commande suivante pour envoyer votre requête REST :
curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json" \
-d @request.json \
"https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID:bulkDelete"
PowerShell
Enregistrez le corps de la requête dans un fichier nommé request.json.
Exécutez la commande suivante dans le terminal pour créer ou écraser ce fichier dans le répertoire actuel :
@'
{
"type": "Observation,Encounter",
"versionConfig": "ALL",
"until": "2025-01-01T00:00:00Z",
"gcsDestination": {
"uriPrefix": "gs://BUCKET/DIRECTORY"
}
}
'@ | Out-File -FilePath request.json -Encoding utf8Exécutez ensuite la commande suivante pour envoyer votre requête REST :
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json" `
-InFile request.json `
-Uri "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID:bulkDelete" | Select-Object -Expand Content
Supprimer des ressources FHIR par ID de ressource
Pour supprimer une liste spécifique de ressources FHIR, définissez le champ gcsSource.uri sur l'emplacement Cloud Storage d'un ou de plusieurs fichiers contenant les ID de ressources à supprimer.
Les fichiers d'entrée doivent répondre aux exigences suivantes :
- Chaque ligne contient une ressource au format
RESOURCE_TYPE/RESOURCE_ID, par exemplePatient/8af1cf10-0fec-4bb3-bde1-77f56a3d8281. Les ID de ressources bruts sans type de ressource ne sont pas acceptés. - L'URI doit pointer vers un seul fichier, tel que
gs://BUCKET/ids.txt, ou vers un modèle générique, tel quegs://BUCKET/DIRECTORY/*.ndjson. L'URI ne peut pas être un bucket ni un répertoire se terminant par/.
Voici un exemple de fichier d'entrée valide :
Patient/8af1cf10-0fec-4bb3-bde1-77f56a3d8281 Observation/2c9d4a3e-6b1f-4e2a-9f0d-1a2b3c4d5e6f Encounter/7f3e2d1c-0b9a-4c8d-8e7f-6a5b4c3d2e1f
Notez le comportement suivant :
- Le champ
gcsSourcene peut pas être utilisé avec les filtrestypeouuntil. Si vous spécifiezgcsSourceavec l'un des filtres, la requête échoue. - Vous pouvez utiliser
gcsSourceavecversionConfigetgcsDestination. - Les lignes vides sont ignorées. Les lignes qui ne correspondent pas au format
RESOURCE_TYPE/RESOURCE_IDou qui contiennent un type de ressource non compatible sont ignorées, et l'opération se poursuit. - Les ID de ressources qui n'existent pas dans le store FHIR sont ignorés.
- Ne modifiez ni ne supprimez les fichiers d'entrée tant que l'opération n'est pas terminée.
L'exemple suivant montre comment envoyer une requête POST pour supprimer de manière groupée les ressources FHIR listées dans un fichier Cloud Storage.
REST
Avant d'utiliser les données de requête, effectuez les remplacements suivants :
PROJECT_ID: ID de votre projet Google CloudLOCATION: emplacement de l'ensemble de donnéesDATASET_ID: ensemble de données parent du magasin FHIR.FHIR_STORE_ID: ID du magasin FHIR.BUCKET/PATH_TO_IDS_FILE: emplacement Cloud Storage du fichier ou modèle générique listant les ressources à supprimer au formatRESOURCE_TYPE/RESOURCE_ID
Corps JSON de la requête :
{
"versionConfig": "ALL",
"gcsSource": {
"uri": "gs://BUCKET/PATH_TO_IDS_FILE"
}
}
Pour envoyer votre requête, choisissez l'une des options suivantes :
curl
Enregistrez le corps de la requête dans un fichier nommé request.json.
Exécutez la commande suivante dans le terminal pour créer ou écraser ce fichier dans le répertoire actuel :
cat > request.json << 'EOF'
{
"versionConfig": "ALL",
"gcsSource": {
"uri": "gs://BUCKET/PATH_TO_IDS_FILE"
}
}
EOFExécutez ensuite la commande suivante pour envoyer votre requête REST :
curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json" \
-d @request.json \
"https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID:bulkDelete"
PowerShell
Enregistrez le corps de la requête dans un fichier nommé request.json.
Exécutez la commande suivante dans le terminal pour créer ou écraser ce fichier dans le répertoire actuel :
@'
{
"versionConfig": "ALL",
"gcsSource": {
"uri": "gs://BUCKET/PATH_TO_IDS_FILE"
}
}
'@ | Out-File -FilePath request.json -Encoding utf8Exécutez ensuite la commande suivante pour envoyer votre requête REST :
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json" `
-InFile request.json `
-Uri "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID:bulkDelete" | Select-Object -Expand Content
Afficher l'état de l'opération de longue durée
Pour afficher l'état de l'opération de suppression groupée, utilisez la méthode operations.get avec le nom d'opération renvoyé par l'appel bulkDelete.
REST
Avant d'utiliser les données de requête, effectuez les remplacements suivants :
PROJECT_ID: ID de votre projet Google CloudLOCATION: emplacement de l'ensemble de donnéesDATASET_ID: ensemble de données parent du magasin FHIR.OPERATION_ID: ID renvoyé par l'opération de longue durée
Pour envoyer votre requête, choisissez l'une des options suivantes :
curl
Exécutez la commande suivante :
curl -X GET \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
"https://healthcare.googleapis.com/v1alpha2/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/operations/OPERATION_ID"
PowerShell
Exécutez la commande suivante :
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method GET `
-Headers $headers `
-Uri "https://healthcare.googleapis.com/v1alpha2/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/operations/OPERATION_ID" | Select-Object -Expand Content
Suivre les ressources supprimées
Une fois l'opération de suppression groupée terminée, un fichier récapitulatif est généré dans Cloud Storage si un gcsDestination a été spécifié. Ce fichier contient la liste des ID de ressources de la version actuelle qui ont été supprimées lors de l'opération.
Limites
L'intégrité référentielle n'est pas garantie lors d'une opération de suppression groupée. Il est recommandé d'utiliser cette opération uniquement lorsque l'intégrité référentielle n'est pas requise ou est connue pour être satisfaite après l'opération.