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.bulkDeletedi FHIR store. - Jika Anda menentukan
gcsDestination, akun layanan Agen Layanan Cloud Healthcare harus memiliki peranroles/storage.objectAdmindi bucket tujuan. Untuk mengetahui informasi selengkapnya, lihat izin Cloud Storage FHIR store. - Jika Anda menentukan
gcsSource, akun layanan Agen Layanan Cloud Healthcare harus memiliki peranroles/storage.objectViewerdi 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 AndaLOCATION: lokasi set dataDATASET_ID: set data induk FHIR storeFHIR_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"
}
}
EOFKemudian, 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 utf8Kemudian 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
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, misalnyaPatient/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, sepertigs://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
gcsSourcetidak dapat digunakan bersama dengan filtertypeatauuntil. Jika Anda menentukangcsSourcebersama dengan salah satu filter, permintaan akan gagal. - Anda dapat menggunakan
gcsSourcedenganversionConfigdangcsDestination. - Baris kosong diabaikan. Baris yang tidak cocok dengan format
RESOURCE_TYPE/RESOURCE_IDatau 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 AndaLOCATION: lokasi set dataDATASET_ID: set data induk FHIR storeFHIR_STORE_ID: ID FHIR storeBUCKET/PATH_TO_IDS_FILE: lokasi Cloud Storage file, atau pola karakter pengganti, yang mencantumkan resource yang akan dihapus dalam formatRESOURCE_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"
}
}
EOFKemudian, 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 utf8Kemudian 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
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 AndaLOCATION: lokasi set dataDATASET_ID: set data induk FHIR storeOPERATION_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
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.