Supprimer des ressources FHIR de manière groupée

Cette page explique comment supprimer des ressources FHIR d'un magasin FHIR de façon 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. Cela est utile pour la gestion du cycle de vie des données et pour réaliser des économies.

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.bulkDelete sur le magasin FHIR.
  • Si vous spécifiez un gcsDestination, le compte de service Agent de service Cloud Healthcare doit disposer du rôle roles/storage.objectAdmin sur le bucket de destination. Pour en savoir plus, consultez la section Autorisations Cloud Storage pour les datastores FHIR.

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 Cloud
  • LOCATION : emplacement de l'ensemble de données
  • DATASET_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"
  }
}
EOF

Exé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 utf8

Exé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
Le résultat est le suivant. La réponse contient un identifiant pour une opération de longue durée. Notez la valeur de OPERATION_ID. Vous aurez besoin de cette valeur à l'étape suivante.

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 de l'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 Cloud
  • LOCATION : emplacement de l'ensemble de données
  • DATASET_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
Si la requête aboutit, le serveur renvoie une réponse avec l'état de l'opération au format JSON :

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.