批量删除 FHIR 资源

本页面介绍了如何使用长时间运行的操作从 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 存储区中上次更新时间早于特定时间戳的所有 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
输出如下所示。响应包含长时间运行的操作的标识符。记下 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 列表。

限制

在批量删除操作期间,无法保证引用完整性。建议仅在不需要参照完整性或已知在操作后满足参照完整性时使用此操作。