FHIR 리소스 일괄 삭제

이 페이지에서는 장기 실행 작업을 사용하여 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 저장소의 모든 ObservationEncounter 리소스를 일괄 삭제하는 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 목록이 포함되어 있습니다.

제한사항

일괄 삭제 작업 중에는 참조 무결성이 보장되지 않습니다. 참조 무결성이 필요하지 않거나 작업 후 참조 무결성이 충족되는 것으로 알려진 경우에만 이 작업을 사용하는 것이 좋습니다.