本页面介绍了如何使用长时间运行的操作从 FHIR 存储区中批量删除 FHIR 资源。
您可以根据资源类型和上次更新时间等过滤条件,在一次操作中删除多个 FHIR 资源。这有助于进行数据生命周期管理并节省费用。
准备工作
在批量删除 FHIR 资源之前,请确保满足以下条件:
- 您必须拥有 FHIR 存储区的
healthcare.fhirStores.bulkDelete权限。 - 如果您指定
gcsDestination,则 Cloud Healthcare Service Agent 服务账号必须在目标存储桶中具有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 列表。
限制
在批量删除操作期间,无法保证引用完整性。建议仅在不需要参照完整性或已知在操作后满足参照完整性时使用此操作。