이 페이지에서는 장기 실행 작업을 사용하여 FHIR 저장소에서 FHIR 리소스를 대량 삭제하는 방법을 설명합니다.
리소스 유형, 마지막 업데이트 시간과 같은 필터를 기반으로 단일 작업에서 여러 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 목록이 포함되어 있습니다.
제한사항
일괄 삭제 작업 중에는 참조 무결성이 보장되지 않습니다. 참조 무결성이 필요하지 않거나 작업 후 참조 무결성이 충족되는 것으로 알려진 경우에만 이 작업을 사용하는 것이 좋습니다.