Borra recursos de FHIR de forma masiva

En esta página, se explica cómo borrar de forma masiva recursos de FHIR de un almacén de FHIR con una operación de larga duración.

Puedes borrar varios recursos de FHIR en una sola operación según filtros como el tipo de recurso y la fecha de última actualización. Esto es útil para la administración del ciclo de vida de los datos y el ahorro de costos.

Antes de comenzar

Antes de borrar de forma masiva recursos de FHIR, asegúrate de lo siguiente:

  • Debes tener el permiso healthcare.fhirStores.bulkDelete en el almacén de FHIR.
  • Si especificas un gcsDestination, la cuenta de servicio del agente de servicio de Cloud Healthcare debe tener el rol roles/storage.objectAdmin en el bucket de destino. Para obtener más información, consulta Permisos de Cloud Storage de la tienda de FHIR.

Borra recursos de FHIR de forma masiva

Para borrar recursos de FHIR de forma masiva, usa el método projects.locations.datasets.fhirStores.bulkDelete.

Este método devuelve una operación de larga duración (LRO). Puedes hacer un seguimiento del estado de la LRO con el nombre de la operación que muestra la llamada a la API.

En el siguiente ejemplo, se muestra cómo realizar una solicitud POST para borrar de forma masiva todos los recursos Observation y Encounter en un almacén de FHIR que se actualizaron por última vez antes de una marca de tiempo específica.

REST

Antes de usar cualquiera de los datos de solicitud a continuación, realiza los siguientes reemplazos:

  • PROJECT_ID: Es el ID de tu proyecto de Google Cloud .
  • LOCATION: La ubicación del conjunto de datos
  • DATASET_ID es el conjunto de datos superior del almacén de FHIR
  • FHIR_STORE_ID es el ID del almacén de FHIR

Cuerpo JSON de la solicitud:

{
  "type": "Observation,Encounter",
  "versionConfig": "ALL",
  "until": "2025-01-01T00:00:00Z",
  "gcsDestination": {
    "uriPrefix": "gs://BUCKET/DIRECTORY"
  }
}

Para enviar tu solicitud, elige una de estas opciones:

curl

Guarda el cuerpo de la solicitud en un archivo llamado request.json. Ejecuta el comando siguiente en la terminal para crear o reemplazar este archivo en el directorio actual:

cat > request.json << 'EOF'
{
  "type": "Observation,Encounter",
  "versionConfig": "ALL",
  "until": "2025-01-01T00:00:00Z",
  "gcsDestination": {
    "uriPrefix": "gs://BUCKET/DIRECTORY"
  }
}
EOF

Luego, ejecuta el siguiente comando para enviar tu solicitud de 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

Guarda el cuerpo de la solicitud en un archivo llamado request.json. Ejecuta el comando siguiente en la terminal para crear o reemplazar este archivo en el directorio actual:

@'
{
  "type": "Observation,Encounter",
  "versionConfig": "ALL",
  "until": "2025-01-01T00:00:00Z",
  "gcsDestination": {
    "uriPrefix": "gs://BUCKET/DIRECTORY"
  }
}
'@  | Out-File -FilePath request.json -Encoding utf8

Luego, ejecuta el siguiente comando para enviar tu solicitud de 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
Este es el resultado. La respuesta contiene un identificador para una operación de larga duración. Toma nota del valor de OPERATION_ID. Necesitarás este valor en el siguiente paso.

Cómo ver el estado de la LRO

Para ver el estado de la operación de eliminación masiva, usa el método operations.get con el nombre de la operación que se devolvió de la llamada a bulkDelete.

REST

Antes de usar cualquiera de los datos de solicitud a continuación, realiza los siguientes reemplazos:

  • PROJECT_ID: Es el ID de tu proyecto de Google Cloud .
  • LOCATION: La ubicación del conjunto de datos
  • DATASET_ID es el conjunto de datos superior del almacén de FHIR
  • OPERATION_ID: Es el ID que muestra la operación de larga duración.

Para enviar tu solicitud, elige una de estas opciones:

curl

Ejecuta el siguiente comando:

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

Ejecuta el siguiente comando:

$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 solicitud es exitosa, el servidor mostrará una respuesta con el estado de la operación en formato JSON:

Seguimiento de los recursos borrados

Cuando se completa la operación de eliminación masiva, si se especificó un gcsDestination, se genera un archivo de resumen en Cloud Storage. Este archivo contiene una lista de los IDs de los recursos de la versión actual que se borraron durante la operación.

Limitaciones

No se garantiza la integridad referencial durante una operación de eliminación masiva. Se recomienda usar esta operación solo cuando no se requiere la integridad referencial o se sabe que se cumple después de la operación.