Excluir recursos FHIR em massa

Nesta página, explicamos como excluir em massa recursos FHIR de um armazenamento FHIR usando uma operação de longa duração.

É possível excluir vários recursos FHIR em uma única operação com base em filtros como tipo de recurso e hora da última atualização. Isso é útil para o gerenciamento do ciclo de vida dos dados e a economia de custos.

Antes de começar

Antes de excluir recursos do FHIR em massa, verifique o seguinte:

  • Você precisa ter a permissão healthcare.fhirStores.bulkDelete no armazenamento FHIR.
  • Se você especificar um gcsDestination, a conta de serviço do Agente de serviço do Cloud Healthcare precisará ter o papel roles/storage.objectAdmin no bucket de destino. Para mais informações, consulte Permissões do Cloud Storage para armazenamento FHIR.

Excluir recursos FHIR em massa

Para excluir recursos do FHIR em massa, use o método projects.locations.datasets.fhirStores.bulkDelete.

Esse método retorna uma operação de longa duração (LRO, na sigla em inglês). É possível acompanhar o status da LRO usando o nome da operação retornado pela chamada de API.

O exemplo a seguir mostra como fazer uma solicitação POST para excluir em massa todos os recursos Observation e Encounter em um armazenamento FHIR que foram atualizados pela última vez antes de um carimbo de data/hora específico.

REST

Antes de usar os dados da solicitação abaixo, faça as substituições a seguir:

  • PROJECT_ID: ID do seu projeto Google Cloud
  • LOCATION: o local do conjunto de dados;
  • DATASET_ID: o conjunto de dados pai do armazenamento de FHIR
  • FHIR_STORE_ID: o ID de armazenamento de FHIR

Corpo JSON da solicitação:

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

Para enviar a solicitação, escolha uma destas opções:

curl

Salve o corpo da solicitação em um arquivo chamado request.json. Execute o comando a seguir no terminal para criar ou substituir esse arquivo no diretório atual:

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

Depois execute o comando a seguir para enviar a solicitação 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

Salve o corpo da solicitação em um arquivo chamado request.json. Execute o comando a seguir no terminal para criar ou substituir esse arquivo no diretório atual:

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

Depois execute o comando a seguir para enviar a solicitação 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
A saída é esta: A resposta contém um identificador para uma operação de longa duração. Anote o valor de OPERATION_ID. Você vai precisar desse valor na próxima etapa.

Como visualizar o status da LRO

Para conferir o status da operação de exclusão em massa, use o método operations.get com o nome da operação retornado da chamada bulkDelete.

REST

Antes de usar os dados da solicitação abaixo, faça as substituições a seguir:

  • PROJECT_ID: ID do seu projeto Google Cloud
  • LOCATION: o local do conjunto de dados;
  • DATASET_ID: o conjunto de dados pai do armazenamento de FHIR
  • OPERATION_ID: o ID retornado da operação de longa duração.

Para enviar a solicitação, escolha uma destas opções:

curl

Execute o seguinte 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

Execute o seguinte 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
Se a solicitação for bem-sucedida, o servidor retornará uma resposta com o status da operação no formato JSON:

Como rastrear recursos excluídos

Quando a operação de exclusão em massa for concluída, se um gcsDestination tiver sido especificado, um arquivo de resumo será gerado no Cloud Storage. Esse arquivo contém uma lista dos IDs de recursos da versão atual que foram excluídos durante a operação.

Limitações

A integridade referencial não é garantida durante uma operação de exclusão em massa. Recomendamos usar essa operação apenas quando a integridade referencial não for necessária ou for conhecida por ser atendida após a operação.