Menghapus resource FHIR secara massal

Halaman ini menjelaskan cara menghapus resource FHIR secara massal dari penyimpanan FHIR menggunakan operasi yang berjalan lama.

Anda dapat menghapus beberapa resource FHIR dalam satu operasi berdasarkan filter seperti jenis resource dan waktu terakhir diperbarui, atau dengan memberikan daftar ID resource tertentu dalam file Cloud Storage. Hal ini berguna untuk pengelolaan siklus proses data dan penghematan biaya.

Sebelum memulai

Sebelum Anda dapat menghapus massal resource FHIR, pastikan hal berikut:

  • Anda harus memiliki izin healthcare.fhirStores.bulkDelete di FHIR store.
  • Jika Anda menentukan gcsDestination, akun layanan Agen Layanan Cloud Healthcare harus memiliki peran roles/storage.objectAdmin di bucket tujuan. Untuk mengetahui informasi selengkapnya, lihat izin Cloud Storage FHIR store.
  • Jika Anda menentukan gcsSource, akun layanan Agen Layanan Cloud Healthcare harus memiliki peran roles/storage.objectViewer di bucket sumber. Untuk mengetahui informasi selengkapnya, lihat Menghapus resource FHIR secara massal.

Menghapus resource FHIR secara massal

Untuk menghapus resource FHIR secara massal, gunakan metode projects.locations.datasets.fhirStores.bulkDelete.

Metode ini menampilkan operasi yang berjalan lama (LRO). Anda dapat melacak status LRO menggunakan nama operasi yang ditampilkan oleh panggilan API.

Contoh berikut menunjukkan cara membuat permintaan POST untuk menghapus secara massal semua resource Observation dan Encounter di FHIR store yang terakhir diperbarui sebelum stempel waktu tertentu.

REST

Sebelum menggunakan salah satu data permintaan, lakukan penggantian berikut:

  • PROJECT_ID: ID Google Cloud project Anda
  • LOCATION: lokasi set data
  • DATASET_ID: set data induk FHIR store
  • FHIR_STORE_ID: ID FHIR store

Meminta isi JSON:

{
  "type": "Observation,Encounter",
  "versionConfig": "ALL",
  "until": "2025-01-01T00:00:00Z",
  "gcsDestination": {
    "uriPrefix": "gs://BUCKET/DIRECTORY"
  }
}

Untuk mengirim permintaan Anda, pilih salah satu opsi berikut:

curl

Simpan isi permintaan dalam file bernama request.json. Jalankan perintah berikut di terminal untuk membuat atau menimpa file ini di direktori saat ini:

cat > request.json << 'EOF'
{
  "type": "Observation,Encounter",
  "versionConfig": "ALL",
  "until": "2025-01-01T00:00:00Z",
  "gcsDestination": {
    "uriPrefix": "gs://BUCKET/DIRECTORY"
  }
}
EOF

Kemudian, jalankan perintah berikut untuk mengirim permintaan REST Anda:

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

Simpan isi permintaan dalam file bernama request.json. Jalankan perintah berikut di terminal untuk membuat atau menimpa file ini di direktori saat ini:

@'
{
  "type": "Observation,Encounter",
  "versionConfig": "ALL",
  "until": "2025-01-01T00:00:00Z",
  "gcsDestination": {
    "uriPrefix": "gs://BUCKET/DIRECTORY"
  }
}
'@  | Out-File -FilePath request.json -Encoding utf8

Kemudian jalankan perintah berikut untuk mengirim permintaan REST Anda:

$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
Output-nya adalah sebagai berikut. Respons berisi ID untuk operasi yang berjalan lama. Catat nilai OPERATION_ID. Anda memerlukan nilai ini pada langkah berikutnya.

Menghapus resource FHIR secara massal berdasarkan ID resource

Untuk menghapus daftar resource FHIR tertentu, tetapkan kolom gcsSource.uri ke lokasi Cloud Storage dari satu atau beberapa file yang berisi ID resource yang akan dihapus.

File input harus memenuhi persyaratan berikut:

  • Setiap baris berisi satu resource dalam format RESOURCE_TYPE/RESOURCE_ID, misalnya Patient/8af1cf10-0fec-4bb3-bde1-77f56a3d8281. ID resource mentah tanpa jenis resource tidak didukung.
  • URI harus mengarah ke satu file, seperti gs://BUCKET/ids.txt, atau pola karakter pengganti, seperti gs://BUCKET/DIRECTORY/*.ndjson. URI tidak boleh berupa bucket atau direktori yang diakhiri dengan /.

Konten berikut adalah contoh file input yang valid:

Patient/8af1cf10-0fec-4bb3-bde1-77f56a3d8281
Observation/2c9d4a3e-6b1f-4e2a-9f0d-1a2b3c4d5e6f
Encounter/7f3e2d1c-0b9a-4c8d-8e7f-6a5b4c3d2e1f

Perhatikan perilaku berikut:

  • Kolom gcsSource tidak dapat digunakan bersama dengan filter type atau until. Jika Anda menentukan gcsSource bersama dengan salah satu filter, permintaan akan gagal.
  • Anda dapat menggunakan gcsSource dengan versionConfig dan gcsDestination.
  • Baris kosong diabaikan. Baris yang tidak cocok dengan format RESOURCE_TYPE/RESOURCE_ID atau yang berisi jenis resource yang tidak didukung akan dilewati, dan operasi akan dilanjutkan.
  • ID resource yang tidak ada di penyimpanan FHIR akan dilewati.
  • Jangan mengubah atau menghapus file input hingga operasi selesai.

Contoh berikut menunjukkan cara membuat permintaan POST untuk menghapus secara massal resource FHIR yang tercantum dalam file Cloud Storage.

REST

Sebelum menggunakan salah satu data permintaan, lakukan penggantian berikut:

  • PROJECT_ID: ID Google Cloud project Anda
  • LOCATION: lokasi set data
  • DATASET_ID: set data induk FHIR store
  • FHIR_STORE_ID: ID FHIR store
  • BUCKET/PATH_TO_IDS_FILE: lokasi Cloud Storage file, atau pola karakter pengganti, yang mencantumkan resource yang akan dihapus dalam format RESOURCE_TYPE/RESOURCE_ID

Meminta isi JSON:

{
  "versionConfig": "ALL",
  "gcsSource": {
    "uri": "gs://BUCKET/PATH_TO_IDS_FILE"
  }
}

Untuk mengirim permintaan Anda, pilih salah satu opsi berikut:

curl

Simpan isi permintaan dalam file bernama request.json. Jalankan perintah berikut di terminal untuk membuat atau menimpa file ini di direktori saat ini:

cat > request.json << 'EOF'
{
  "versionConfig": "ALL",
  "gcsSource": {
    "uri": "gs://BUCKET/PATH_TO_IDS_FILE"
  }
}
EOF

Kemudian, jalankan perintah berikut untuk mengirim permintaan REST Anda:

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

Simpan isi permintaan dalam file bernama request.json. Jalankan perintah berikut di terminal untuk membuat atau menimpa file ini di direktori saat ini:

@'
{
  "versionConfig": "ALL",
  "gcsSource": {
    "uri": "gs://BUCKET/PATH_TO_IDS_FILE"
  }
}
'@  | Out-File -FilePath request.json -Encoding utf8

Kemudian jalankan perintah berikut untuk mengirim permintaan REST Anda:

$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
Output-nya adalah sebagai berikut. Respons berisi ID untuk operasi yang berjalan lama. Catat nilai OPERATION_ID. Anda memerlukan nilai ini pada langkah berikutnya.

Melihat status LRO

Untuk melihat status operasi penghapusan massal, gunakan metode operations.get dengan nama operasi yang ditampilkan dari panggilan bulkDelete.

REST

Sebelum menggunakan salah satu data permintaan, lakukan penggantian berikut:

  • PROJECT_ID: ID Google Cloud project Anda
  • LOCATION: lokasi set data
  • DATASET_ID: set data induk FHIR store
  • OPERATION_ID: ID yang ditampilkan dari operasi yang berjalan lama

Untuk mengirim permintaan Anda, pilih salah satu opsi berikut:

curl

Jalankan perintah berikut:

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

Jalankan perintah berikut:

$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
Jika permintaan berhasil, server akan menampilkan respons dengan status operasi dalam format JSON:

Melacak resource yang dihapus

Setelah operasi penghapusan massal selesai, jika gcsDestination ditentukan, file ringkasan akan dibuat di Cloud Storage. File ini berisi daftar ID resource untuk resource versi saat ini yang dihapus selama operasi.

Batasan

Integritas referensial tidak dijamin selama operasi penghapusan massal. Sebaiknya gunakan operasi ini hanya jika integritas referensial tidak diperlukan atau diketahui terpenuhi setelah operasi.