FHIR リソースの一括削除

このページでは、長時間実行オペレーションを使用して FHIR ストアから FHIR リソースを一括削除する方法について説明します。

リソースタイプや最終更新時刻などのフィルタに基づいて、1 回のオペレーションで複数の FHIR リソースを削除できます。これは、データ ライフサイクル管理とコスト削減に役立ちます。

始める前に

FHIR リソースを一括削除する前に、次のことを確認してください。

  • FHIR ストアに対する healthcare.fhirStores.bulkDelete 権限が必要です。
  • gcsDestination を指定する場合は、Cloud Healthcare サービス エージェントのサービス アカウントに、宛先バケットに対する roles/storage.objectAdmin ロールが必要です。詳細については、FHIR ストアの Cloud Storage 権限をご覧ください。

FHIR リソースの一括削除

FHIR リソースを一括削除するには、projects.locations.datasets.fhirStores.bulkDelete メソッドを使用します。

このメソッドは、長時間実行オペレーション(LRO)を返します。API 呼び出しから返されたオペレーション名を使用して、LRO のステータスを追跡できます。

次のサンプルは、特定のタイムスタンプより前に最後に更新された FHIR ストア内のすべての Observation リソースと Encounter リソースを一括削除する POST リクエストを行う方法を示しています。

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 のステータスを表示する

一括削除オペレーションのステータスを表示するには、bulkDelete 呼び出しから返されたオペレーション名を使用して operations.get メソッドを使用します。

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 のリストが含まれています。

制限事項

一括削除オペレーションでは、参照整合性は保証されません。このオペレーションは、参照整合性が不要な場合、またはオペレーション後に参照整合性が満たされることがわかっている場合にのみ使用することをおすすめします。