本頁說明如何使用長時間執行的作業,從 FHIR 存放區大量刪除 FHIR 資源。
您可以根據資源類型和上次更新時間等篩選條件,在單一作業中刪除多個 FHIR 資源。這有助於管理資料生命週期和節省成本。
事前準備
大量刪除 FHIR 資源前,請先確認下列事項:
- 您必須具備 FHIR 儲存庫的
healthcare.fhirStores.bulkDelete權限。 - 如果您指定
gcsDestination,Cloud Healthcare 服務代理服務帳戶必須具備目的地 bucket 的roles/storage.objectAdmin角色。詳情請參閱「FHIR 存放區 Cloud Storage 權限」。
大量刪除 FHIR 資源
如要大量刪除 FHIR 資源,請使用 projects.locations.datasets.fhirStores.bulkDelete 方法。
這個方法會傳回長時間執行的作業 (LRO)。您可以使用 API 呼叫傳回的作業名稱,追蹤 LRO 的狀態。
以下範例說明如何發出 POST 要求,大量刪除 FHIR 儲存庫中最後更新時間早於特定時間戳記的所有 Observation 和 Encounter 資源。
REST
使用任何要求資料之前,請先修改下列項目的值:
PROJECT_ID:您 Google Cloud 專案的 IDLOCATION:資料集位置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
查看 LRO 狀態
如要查看大量刪除作業的狀態,請使用 operations.get 方法,並提供從 bulkDelete 呼叫傳回的作業名稱。
REST
使用任何要求資料之前,請先修改下列項目的值:
PROJECT_ID:您 Google Cloud 專案的 IDLOCATION:資料集位置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
追蹤已刪除的資源
大量刪除作業完成後,如果指定了 gcsDestination,系統會在 Cloud Storage 中產生摘要檔案。這個檔案包含作業期間刪除的目前版本資源 ID 清單。
限制
大量刪除作業期間,系統無法保證參照完整性。建議只有在不需要參照完整性,或已知作業後會滿足參照完整性時,才使用這項作業。