FHIR-Ressourcen im Bulk löschen

Auf dieser Seite wird beschrieben, wie Sie FHIR-Ressourcen mithilfe eines Vorgangs mit langer Ausführungszeit aus einem FHIR-Speicher löschen.

Sie können mehrere FHIR-Ressourcen in einem einzigen Vorgang löschen. Dazu können Sie Filter wie Ressourcentyp und Zeitpunkt der letzten Aktualisierung verwenden oder eine Liste mit bestimmten Ressourcen-IDs in einer Cloud Storage-Datei angeben. Das ist nützlich für die Verwaltung des Datenlebenszyklus und zur Kosteneinsparung.

Hinweis

Bevor Sie FHIR-Ressourcen im Bulk löschen können, müssen die folgenden Voraussetzungen erfüllt sein:

  • Sie benötigen die Berechtigung healthcare.fhirStores.bulkDelete für den FHIR-Speicher.
  • Wenn Sie ein gcsDestination angeben, muss das Dienstkonto Cloud Healthcare-Dienst-Agent die Rolle roles/storage.objectAdmin für den Ziel-Bucket haben. Weitere Informationen finden Sie unter Cloud Storage-Berechtigungen für FHIR-Speicher.
  • Wenn Sie ein gcsSource angeben, muss das Dienstkonto Cloud Healthcare-Dienst-Agent die Rolle roles/storage.objectViewer für den Quell-Bucket haben. Weitere Informationen finden Sie unter FHIR-Ressourcen im Bulk löschen.

FHIR-Ressourcen im Bulk löschen

Wenn Sie FHIR-Ressourcen im Bulk löschen möchten, verwenden Sie die Methode projects.locations.datasets.fhirStores.bulkDelete.

Diese Methode gibt einen Vorgang mit langer Ausführungszeit zurück. Sie können den Status des LRO anhand des vom API-Aufruf zurückgegebenen Vorgangsnamens verfolgen.

Im folgenden Beispiel wird gezeigt, wie Sie eine POST-Anfrage senden, um alle Observation- und Encounter-Ressourcen in einem FHIR-Speicher, die vor einem bestimmten Zeitstempel zuletzt aktualisiert wurden, im Bulk zu löschen.

REST

Ersetzen Sie diese Werte in den folgenden Anfragedaten:

  • PROJECT_ID: die ID Ihres Google Cloud -Projekts
  • LOCATION ist der Standort des Datasets
  • DATASET_ID: das übergeordnete Dataset des FHIR-Speichers
  • FHIR_STORE_ID: die FHIR-Speicher-ID

JSON-Text der Anfrage:

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

Wenn Sie die Anfrage senden möchten, wählen Sie eine der folgenden Optionen aus:

curl

Speichern Sie den Anfragetext in einer Datei mit dem Namen request.json. Führen Sie folgenden Befehl im Terminal aus, um diese Datei im aktuellen Verzeichnis zu erstellen oder zu überschreiben:

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

Führen Sie dann folgenden Befehl aus, um Ihre REST-Anfrage zu senden:

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

Speichern Sie den Anfragetext in einer Datei mit dem Namen request.json. Führen Sie folgenden Befehl im Terminal aus, um diese Datei im aktuellen Verzeichnis zu erstellen oder zu überschreiben:

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

Führen Sie dann folgenden Befehl aus, um Ihre REST-Anfrage zu senden:

$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
Die Ausgabe sieht so aus. Die Antwort enthält eine Kennung für einen Vorgang mit langer Ausführungszeit. Notieren Sie sich den Wert von OPERATION_ID. Sie benötigen diesen Wert im nächsten Schritt.

FHIR-Ressourcen anhand der Ressourcen-ID im Bulk löschen

Wenn Sie eine bestimmte Liste von FHIR-Ressourcen löschen möchten, legen Sie das Feld gcsSource.uri auf den Cloud Storage-Speicherort einer oder mehrerer Dateien fest, die die zu löschenden Ressourcen-IDs enthalten.

Die Eingabedateien müssen die folgenden Anforderungen erfüllen:

  • Jede Zeile enthält eine Ressource im Format RESOURCE_TYPE/RESOURCE_ID, z. B. Patient/8af1cf10-0fec-4bb3-bde1-77f56a3d8281. Rohressourcen-IDs ohne Ressourcentyp werden nicht unterstützt.
  • Der URI muss auf eine einzelne Datei verweisen, z. B. gs://BUCKET/ids.txt, oder auf ein Platzhaltermuster, z. B. gs://BUCKET/DIRECTORY/*.ndjson. Der URI darf kein Bucket oder Verzeichnis sein, das mit / endet.

Der folgende Inhalt ist ein Beispiel für eine gültige Eingabedatei:

Patient/8af1cf10-0fec-4bb3-bde1-77f56a3d8281
Observation/2c9d4a3e-6b1f-4e2a-9f0d-1a2b3c4d5e6f
Encounter/7f3e2d1c-0b9a-4c8d-8e7f-6a5b4c3d2e1f

Beachten Sie Folgendes:

  • Das Feld gcsSource kann nicht zusammen mit den Filtern type oder until verwendet werden. Wenn Sie gcsSource zusammen mit einem der beiden Filter angeben, schlägt die Anfrage fehl.
  • Sie können gcsSource mit versionConfig und gcsDestination verwenden.
  • Leere Zeilen werden ignoriert. Zeilen, die nicht dem Format RESOURCE_TYPE/RESOURCE_ID entsprechen oder einen nicht unterstützten Ressourcentyp enthalten, werden übersprungen und der Vorgang wird fortgesetzt.
  • Ressourcen-IDs, die im FHIR-Speicher nicht vorhanden sind, werden übersprungen.
  • Ändern oder löschen Sie die Eingabedateien erst, wenn der Vorgang abgeschlossen ist.

Im folgenden Beispiel wird gezeigt, wie Sie eine POST-Anfrage stellen, um die in einer Cloud Storage-Datei aufgeführten FHIR-Ressourcen im Bulk zu löschen.

REST

Ersetzen Sie diese Werte in den folgenden Anfragedaten:

  • PROJECT_ID: die ID Ihres Google Cloud -Projekts
  • LOCATION ist der Standort des Datasets
  • DATASET_ID: das übergeordnete Dataset des FHIR-Speichers
  • FHIR_STORE_ID: die FHIR-Speicher-ID
  • BUCKET/PATH_TO_IDS_FILE: Der Cloud Storage-Speicherort der Datei oder des Platzhaltermusters, in dem die zu löschenden Ressourcen im Format RESOURCE_TYPE/RESOURCE_ID aufgeführt sind.

JSON-Text der Anfrage:

{
  "versionConfig": "ALL",
  "gcsSource": {
    "uri": "gs://BUCKET/PATH_TO_IDS_FILE"
  }
}

Wenn Sie die Anfrage senden möchten, wählen Sie eine der folgenden Optionen aus:

curl

Speichern Sie den Anfragetext in einer Datei mit dem Namen request.json. Führen Sie folgenden Befehl im Terminal aus, um diese Datei im aktuellen Verzeichnis zu erstellen oder zu überschreiben:

cat > request.json << 'EOF'
{
  "versionConfig": "ALL",
  "gcsSource": {
    "uri": "gs://BUCKET/PATH_TO_IDS_FILE"
  }
}
EOF

Führen Sie dann folgenden Befehl aus, um Ihre REST-Anfrage zu senden:

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

Speichern Sie den Anfragetext in einer Datei mit dem Namen request.json. Führen Sie folgenden Befehl im Terminal aus, um diese Datei im aktuellen Verzeichnis zu erstellen oder zu überschreiben:

@'
{
  "versionConfig": "ALL",
  "gcsSource": {
    "uri": "gs://BUCKET/PATH_TO_IDS_FILE"
  }
}
'@  | Out-File -FilePath request.json -Encoding utf8

Führen Sie dann folgenden Befehl aus, um Ihre REST-Anfrage zu senden:

$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
Die Ausgabe sieht so aus. Die Antwort enthält eine Kennung für einen Vorgang mit langer Ausführungszeit. Notieren Sie sich den Wert von OPERATION_ID. Sie benötigen diesen Wert im nächsten Schritt.

LRO-Status ansehen

Verwenden Sie die Methode operations.get mit dem Vorgangsnamen, der vom bulkDelete-Aufruf zurückgegeben wird, um den Status des Vorgangs zum Massenlöschen aufzurufen.

REST

Ersetzen Sie diese Werte in den folgenden Anfragedaten:

  • PROJECT_ID: die ID Ihres Google Cloud -Projekts
  • LOCATION ist der Standort des Datasets
  • DATASET_ID: das übergeordnete Dataset des FHIR-Speichers
  • OPERATION_ID: die ID, die vom Vorgang mit langer Ausführungszeit zurückgegeben wurde

Wenn Sie die Anfrage senden möchten, wählen Sie eine der folgenden Optionen aus:

curl

Führen Sie folgenden Befehl aus:

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

Führen Sie diesen Befehl aus:

$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
Wenn die Anfrage erfolgreich ist, gibt der Server eine Antwort mit dem Status des Vorgangs im JSON-Format zurück:

Gelöschte Ressourcen nachverfolgen

Wenn der Vorgang zum Massenlöschen abgeschlossen ist und ein gcsDestination angegeben wurde, wird in Cloud Storage eine Zusammenfassungsdatei generiert. Diese Datei enthält eine Liste der Ressourcen-IDs für die Ressourcen der aktuellen Version, die während des Vorgangs gelöscht wurden.

Beschränkungen

Die referenzielle Integrität wird während eines Massenlöschvorgangs nicht garantiert. Es wird empfohlen, diesen Vorgang nur zu verwenden, wenn die referenzielle Integrität nicht erforderlich ist oder nach dem Vorgang erfüllt ist.