Questa pagina spiega come eliminare in blocco le risorse FHIR da un FHIR store utilizzando un'operazione a lunga esecuzione.
Puoi eliminare più risorse FHIR in una singola operazione in base a filtri come il tipo di risorsa e l'ora dell'ultimo aggiornamento oppure fornendo un elenco di ID risorsa specifici in un file Cloud Storage. Questa funzionalità è utile per la gestione del ciclo di vita dei dati e il risparmio sui costi.
Prima di iniziare
Prima di poter eliminare in blocco le risorse FHIR, assicurati di quanto segue:
- Devi disporre dell'autorizzazione
healthcare.fhirStores.bulkDeletesul datastore FHIR. - Se specifichi un
gcsDestination, il account di servizio Service agent Cloud Healthcare deve disporre del ruoloroles/storage.objectAdminsul bucket di destinazione. Per maggiori informazioni, consulta Autorizzazioni Cloud Storage per l'archivio FHIR. - Se specifichi un
gcsSource, il account di servizio Service agent Cloud Healthcare deve disporre del ruoloroles/storage.objectViewersul bucket di origine. Per saperne di più, consulta Eliminazione collettiva delle risorse FHIR.
Eliminazione collettiva delle risorse FHIR
Per eliminare in blocco le risorse FHIR, utilizza il metodo projects.locations.datasets.fhirStores.bulkDelete.
Questo metodo restituisce un'operazione a lunga esecuzione (LRO). Puoi monitorare lo stato dell'operazione a lunga esecuzione utilizzando il nome dell'operazione restituito dalla chiamata API.
L'esempio seguente mostra come effettuare una richiesta POST per eliminare collettivamente tutte le risorse Observation e Encounter in un datastore FHIR che sono state aggiornate l'ultima volta prima di un timestamp specifico.
REST
Prima di utilizzare i dati della richiesta, apporta le sostituzioni seguenti:
PROJECT_ID: l'ID del tuo Google Cloud progettoLOCATION: la posizione del set di datiDATASET_ID: il set di dati padre dell'archivio FHIRFHIR_STORE_ID: l'ID del datastore FHIR
Corpo JSON della richiesta:
{
"type": "Observation,Encounter",
"versionConfig": "ALL",
"until": "2025-01-01T00:00:00Z",
"gcsDestination": {
"uriPrefix": "gs://BUCKET/DIRECTORY"
}
}
Per inviare la richiesta, scegli una di queste opzioni:
curl
Salva il corpo della richiesta in un file denominato request.json.
Esegui questo comando nel terminale per creare o sovrascrivere
questo file nella directory corrente:
cat > request.json << 'EOF'
{
"type": "Observation,Encounter",
"versionConfig": "ALL",
"until": "2025-01-01T00:00:00Z",
"gcsDestination": {
"uriPrefix": "gs://BUCKET/DIRECTORY"
}
}
EOFQuindi esegui questo comando per inviare la richiesta 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
Salva il corpo della richiesta in un file denominato request.json.
Esegui questo comando nel terminale per creare o sovrascrivere
questo file nella directory corrente:
@'
{
"type": "Observation,Encounter",
"versionConfig": "ALL",
"until": "2025-01-01T00:00:00Z",
"gcsDestination": {
"uriPrefix": "gs://BUCKET/DIRECTORY"
}
}
'@ | Out-File -FilePath request.json -Encoding utf8Quindi esegui questo comando per inviare la richiesta 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
Eliminazione collettiva di risorse FHIR per ID risorsa
Per eliminare un elenco specifico di risorse FHIR, imposta il campo gcsSource.uri sul percorso Cloud Storage di uno o più file contenenti gli ID risorsa da eliminare.
I file di input devono soddisfare i seguenti requisiti:
- Ogni riga contiene una risorsa nel formato
RESOURCE_TYPE/RESOURCE_ID, ad esempioPatient/8af1cf10-0fec-4bb3-bde1-77f56a3d8281. Gli ID risorsa non elaborati senza un tipo di risorsa non sono supportati. - L'URI deve rimandare a un singolo file, ad esempio
gs://BUCKET/ids.txt, o a un pattern jolly, ad esempiogs://BUCKET/DIRECTORY/*.ndjson. L'URI non può essere un bucket o una directory che termina con/.
I seguenti contenuti sono un esempio di file di input valido:
Patient/8af1cf10-0fec-4bb3-bde1-77f56a3d8281 Observation/2c9d4a3e-6b1f-4e2a-9f0d-1a2b3c4d5e6f Encounter/7f3e2d1c-0b9a-4c8d-8e7f-6a5b4c3d2e1f
Tieni presente quanto segue:
- Il campo
gcsSourcenon può essere utilizzato insieme ai filtritypeountil. Se specifichigcsSourceinsieme a uno dei due filtri, la richiesta non va a buon fine. - Puoi utilizzare
gcsSourceconversionConfigegcsDestination. - Le righe vuote vengono ignorate. Le righe che non corrispondono al formato
RESOURCE_TYPE/RESOURCE_IDo che contengono un tipo di risorsa non supportato vengono ignorate e l'operazione continua. - Gli ID risorsa che non esistono nel datastore FHIR vengono ignorati.
- Non modificare o eliminare i file di input finché l'operazione non è completata.
Il seguente esempio mostra come effettuare una richiesta POST per eliminare in blocco le risorse FHIR elencate in un file Cloud Storage.
REST
Prima di utilizzare i dati della richiesta, apporta le sostituzioni seguenti:
PROJECT_ID: l'ID del tuo Google Cloud progettoLOCATION: la posizione del set di datiDATASET_ID: il set di dati padre dell'archivio FHIRFHIR_STORE_ID: l'ID del datastore FHIRBUCKET/PATH_TO_IDS_FILE: il percorso di Cloud Storage del file o il pattern jolly che elenca le risorse da eliminare nel formatoRESOURCE_TYPE/RESOURCE_ID
Corpo JSON della richiesta:
{
"versionConfig": "ALL",
"gcsSource": {
"uri": "gs://BUCKET/PATH_TO_IDS_FILE"
}
}
Per inviare la richiesta, scegli una di queste opzioni:
curl
Salva il corpo della richiesta in un file denominato request.json.
Esegui questo comando nel terminale per creare o sovrascrivere
questo file nella directory corrente:
cat > request.json << 'EOF'
{
"versionConfig": "ALL",
"gcsSource": {
"uri": "gs://BUCKET/PATH_TO_IDS_FILE"
}
}
EOFQuindi esegui questo comando per inviare la richiesta 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
Salva il corpo della richiesta in un file denominato request.json.
Esegui questo comando nel terminale per creare o sovrascrivere
questo file nella directory corrente:
@'
{
"versionConfig": "ALL",
"gcsSource": {
"uri": "gs://BUCKET/PATH_TO_IDS_FILE"
}
}
'@ | Out-File -FilePath request.json -Encoding utf8Quindi esegui questo comando per inviare la richiesta 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
Visualizzare lo stato dell'LRO
Per visualizzare lo stato dell'operazione di eliminazione collettiva, utilizza il metodo operations.get con il nome dell'operazione restituito dalla chiamata bulkDelete.
REST
Prima di utilizzare i dati della richiesta, apporta le sostituzioni seguenti:
PROJECT_ID: l'ID del tuo Google Cloud progettoLOCATION: la posizione del set di datiDATASET_ID: il set di dati padre dell'archivio FHIROPERATION_ID: l'ID restituito dall'operazione a lunga esecuzione
Per inviare la richiesta, scegli una di queste opzioni:
curl
Esegui questo 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
Esegui questo 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
Monitoraggio delle risorse eliminate
Al termine dell'operazione di eliminazione collettiva, se è stato specificato un gcsDestination, viene generato un file di riepilogo in Cloud Storage. Questo file contiene un elenco degli ID risorsa per le risorse della versione corrente che sono state eliminate durante l'operazione.
Limitazioni
L'integrità referenziale non è garantita durante un'operazione di eliminazione collettiva. Ti consigliamo di utilizzare questa operazione solo quando l'integrità referenziale non è richiesta o è noto che viene soddisfatta dopo l'operazione.