大量刪除 FHIR 資源

本頁說明如何使用長時間執行的作業,從 FHIR 存放區大量刪除 FHIR 資源。

您可以根據資源類型和上次更新時間等篩選條件,在單一作業中刪除多個 FHIR 資源。這有助於管理資料生命週期和節省成本。

事前準備

大量刪除 FHIR 資源前,請先確認下列事項:

  • 您必須具備 FHIR 儲存庫的 healthcare.fhirStores.bulkDelete 權限。
  • 如果您指定 gcsDestinationCloud Healthcare 服務代理服務帳戶必須具備目的地 bucket 的 roles/storage.objectAdmin 角色。詳情請參閱「FHIR 存放區 Cloud Storage 權限」。

大量刪除 FHIR 資源

如要大量刪除 FHIR 資源,請使用 projects.locations.datasets.fhirStores.bulkDelete 方法。

這個方法會傳回長時間執行的作業 (LRO)。您可以使用 API 呼叫傳回的作業名稱,追蹤 LRO 的狀態。

以下範例說明如何發出 POST 要求,大量刪除 FHIR 儲存庫中最後更新時間早於特定時間戳記的所有 ObservationEncounter 資源。

REST

使用任何要求資料之前,請先修改下列項目的值:

  • PROJECT_ID:您 Google Cloud 專案的 ID
  • LOCATION:資料集位置
  • DATASET_ID:FHIR 儲存庫的父項資料集
  • FHIR_STORE_ID:FHIR 儲存庫 ID

JSON 要求內文:

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

如要傳送要求,請選擇以下其中一個選項:

curl

將要求主體儲存在名為 request.json 的檔案中。 在終端機中執行下列指令,在目前目錄中建立或覆寫這個檔案:

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

然後執行下列指令,傳送 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

將要求主體儲存在名為 request.json 的檔案中。 在終端機中執行下列指令,在目前目錄中建立或覆寫這個檔案:

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

然後執行下列指令,傳送 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
輸出內容如下所示。回應會包含長時間執行作業的 ID。 請記下 OPERATION_ID 的值。下一個步驟會用到這個值。

查看 LRO 狀態

如要查看大量刪除作業的狀態,請使用 operations.get 方法,並提供從 bulkDelete 呼叫傳回的作業名稱。

REST

使用任何要求資料之前,請先修改下列項目的值:

  • PROJECT_ID:您 Google Cloud 專案的 ID
  • LOCATION:資料集位置
  • DATASET_ID:FHIR 儲存庫的父項資料集
  • OPERATION_ID:長時間執行作業傳回的 ID

如要傳送要求,請選擇以下其中一個選項:

curl

執行下列指令:

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

執行下列指令:

$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
如果要求成功,伺服器會以 JSON 格式傳回作業狀態的回應:

追蹤已刪除的資源

大量刪除作業完成後,如果指定了 gcsDestination,系統會在 Cloud Storage 中產生摘要檔案。這個檔案包含作業期間刪除的目前版本資源 ID 清單。

限制

大量刪除作業期間,系統無法保證參照完整性。建議只有在不需要參照完整性,或已知作業後會滿足參照完整性時,才使用這項作業。