このページでは、長時間実行オペレーションを使用して 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 プロジェクトの 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 のステータスを表示する
一括削除オペレーションのステータスを表示するには、bulkDelete 呼び出しから返されたオペレーション名を使用して operations.get メソッドを使用します。
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 のリストが含まれています。
制限事項
一括削除オペレーションでは、参照整合性は保証されません。このオペレーションは、参照整合性が不要な場合、またはオペレーション後に参照整合性が満たされることがわかっている場合にのみ使用することをおすすめします。