Halaman ini menjelaskan cara menggunakan pemulihan point-in-time (PITR) untuk memulihkan resource FHIR di penyimpanan FHIR menjadi kondisi dalam 21 hari terakhir. Anda dapat menggunakan PITR untuk memulihkan dari perubahan yang tidak diinginkan, seperti menghapus resource FHIR secara tidak sengaja.
Sebelum memulai
Permintaan PITR dikategorikan sebagai permintaan operasi lanjutan dan akan ditagih sesuai permintaan. Sebelum menggunakan PITR, tinjau harga untuk permintaan operasi lanjutan.
Histori versi resource PITR dan FHIR
PITR tidak bergantung pada histori versi resource FHIR.
Anda masih dapat menggunakan PITR jika kolom disableResourceVersioning
di penyimpanan FHIR adalah true
, atau jika versi historis resource FHIR telah dihapus.
Alur kerja pemulihan
Untuk memastikan pemulihan produksi berjalan seperti yang diharapkan, lakukan uji coba terlebih dahulu. Uji coba ini menghasilkan satu atau beberapa file yang berisi ID dan jenis resource FHIR yang akan dipulihkan. Verifikasi kebenaran file output sebelum menjalankan pemulihan lagi dalam produksi.
Untuk memulihkan resource tertentu, atau memulihkan resource sesuai dengan kriteria pemfilteran, tentukan filter.
Lakukan uji coba
Sebelum memulihkan resource FHIR dalam produksi, lakukan uji coba.
Contoh berikut menunjukkan cara melakukan uji coba
menggunakan metode
fhirStores.rollback
.
REST
Memulihkan resource FHIR.
Untuk melakukan uji coba, pastikan kolom
force
adalahfalse
.Sebelum menggunakan salah satu data permintaan, lakukan penggantian berikut:
PROJECT_ID
: ID project Google Cloud AndaLOCATION
: lokasi set dataDATASET_ID
: set data induk penyimpanan FHIRFHIR_STORE_ID
: ID toko FHIRRECOVERY_TIMESTAMP
: titik pemulihan dalam 21 hari terakhir. Gunakan format RFC 3339. Tentukan waktu ke detik dan sertakan zona waktu, misalnya2015-02-07T13:28:17.239+02:00
atau2017-01-01T00:00:00Z
.CLOUD_STORAGE_BUCKET
: URI yang sepenuhnya memenuhi syarat ke folder atau bucket Cloud Storage tempat file output ditulis
Meminta isi JSON:
{ "rollbackTime": "RECOVERY_TIMESTAMP", "resultGcsBucket": "gs://CLOUD_STORAGE_BUCKET", "force": "false" }
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' { "rollbackTime": "RECOVERY_TIMESTAMP", "resultGcsBucket": "gs://CLOUD_STORAGE_BUCKET", "force": "false" } 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; charset=utf-8" \
-d @request.json \
"https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID:rollback"PowerShell
Simpan isi permintaan dalam file bernama
request.json
. Jalankan perintah berikut di terminal untuk membuat atau menimpa file ini di direktori saat ini:@' { "rollbackTime": "RECOVERY_TIMESTAMP", "resultGcsBucket": "gs://CLOUD_STORAGE_BUCKET", "force": "false" } '@ | 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; charset=utf-8" `
-InFile request.json `
-Uri "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID:rollback" | Select-Object -Expand ContentAPIs Explorer
Salin isi permintaan dan buka halaman referensi metode. Panel APIs Explorer akan terbuka di sisi kanan halaman. Anda bisa berinteraksi dengan alat ini untuk mengirim permintaan. Tempelkan isi permintaan di alat ini, lengkapi kolom wajib lainnya, lalu klik Jalankan.
OPERATION_ID
. Anda memerlukan nilai ini di langkah berikutnya.Gunakan metode
projects.locations.datasets.operations.get
untuk mendapatkan status operasi yang berjalan lama.Sebelum menggunakan salah satu data permintaan, lakukan penggantian berikut:
PROJECT_ID
: ID project Google Cloud AndaDATASET_ID
: ID set dataLOCATION
: lokasi set dataOPERATION_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/v1/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/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/operations/OPERATION_ID" | Select-Object -Expand ContentAPIs Explorer
Buka halaman referensi metode. Panel APIs Explorer akan terbuka di sisi kanan halaman. Anda bisa berinteraksi dengan alat ini untuk mengirim permintaan. Lengkapi kolom yang wajib diisi, lalu klik Jalankan.
"done": true
, berarti operasi yang berjalan lama telah selesai.
Melihat file output uji coba
Setiap uji coba menghasilkan satu atau beberapa file yang berisi ID dan jenis resource FHIR
yang akan dipulihkan. File akan dibuat dalam subfolder dalam folder rollback_resources
di bucket Cloud Storage tujuan. Nama subfolder adalah ID LRO yang ditampilkan dalam
respons fhirStores.rollback
. Untuk melihat file dan memastikan pemulihan berfungsi
seperti yang diharapkan, baca
Melihat metadata objek.
Jumlah file sebanding dengan jumlah resource FHIR yang dipulihkan.
Nama file menggunakan format trial-NUMBER-of-TOTAL_NUMBER.txt
,
dengan NUMBER
sebagai nomor file dan TOTAL_NUMBER
adalah jumlah total file.
Skema file output uji coba
File output dari pemulihan uji coba menggunakan skema yang ditunjukkan dalam tabel berikut:
RESOURCE_TYPE |
RESOURCE_ID |
TIMESTAMP |
---|---|---|
Jenis resource FHIR. | ID resource FHIR. | Waktu saat resource FHIR dibuat atau diupdate di penyimpanan FHIR. |
Pulihkan dalam produksi
Sebelum melakukan pemulihan dalam produksi, lakukan uji coba dan periksa file output uji coba untuk memastikan pemulihan produksi berjalan seperti yang diharapkan.
Contoh berikut menunjukkan cara memulihkan resource FHIR dalam produksi
menggunakan metode
fhirStores.rollback
.
REST
Memulihkan resource FHIR.
Pastikan kolom
force
adalahtrue
.Sebelum menggunakan salah satu data permintaan, lakukan penggantian berikut:
PROJECT_ID
: ID project Google Cloud AndaLOCATION
: lokasi set dataDATASET_ID
: set data induk penyimpanan FHIRFHIR_STORE_ID
: ID toko FHIRRECOVERY_TIMESTAMP
: titik pemulihan dalam 21 hari terakhir. Gunakan format RFC 3339. Tentukan waktu ke detik dan sertakan zona waktu, misalnya2015-02-07T13:28:17.239+02:00
atau2017-01-01T00:00:00Z
.CLOUD_STORAGE_BUCKET
: URI yang sepenuhnya memenuhi syarat ke folder atau bucket Cloud Storage tempat file output ditulis
Meminta isi JSON:
{ "rollbackTime": "RECOVERY_TIMESTAMP", "resultGcsBucket": "gs://CLOUD_STORAGE_BUCKET", "force": "true" }
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' { "rollbackTime": "RECOVERY_TIMESTAMP", "resultGcsBucket": "gs://CLOUD_STORAGE_BUCKET", "force": "true" } 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; charset=utf-8" \
-d @request.json \
"https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID:rollback"PowerShell
Simpan isi permintaan dalam file bernama
request.json
. Jalankan perintah berikut di terminal untuk membuat atau menimpa file ini di direktori saat ini:@' { "rollbackTime": "RECOVERY_TIMESTAMP", "resultGcsBucket": "gs://CLOUD_STORAGE_BUCKET", "force": "true" } '@ | 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; charset=utf-8" `
-InFile request.json `
-Uri "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID:rollback" | Select-Object -Expand ContentAPIs Explorer
Salin isi permintaan dan buka halaman referensi metode. Panel APIs Explorer akan terbuka di sisi kanan halaman. Anda bisa berinteraksi dengan alat ini untuk mengirim permintaan. Tempelkan isi permintaan di alat ini, lengkapi kolom wajib lainnya, lalu klik Jalankan.
OPERATION_ID
. Anda memerlukan nilai ini di langkah berikutnya.Gunakan metode
projects.locations.datasets.operations.get
untuk mendapatkan status operasi yang berjalan lama.Sebelum menggunakan salah satu data permintaan, lakukan penggantian berikut:
PROJECT_ID
: ID project Google Cloud AndaDATASET_ID
: ID set dataLOCATION
: lokasi set dataOPERATION_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/v1/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/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/operations/OPERATION_ID" | Select-Object -Expand ContentAPIs Explorer
Buka halaman referensi metode. Panel APIs Explorer akan terbuka di sisi kanan halaman. Anda bisa berinteraksi dengan alat ini untuk mengirim permintaan. Lengkapi kolom yang wajib diisi, lalu klik Jalankan.
"done": true
, berarti operasi yang berjalan lama telah selesai.
Melihat file output pemulihan produksi
Pemulihan produksi menghasilkan file berikut. File akan dibuat di subfolder dalam folder rollback_resources
di bucket Cloud Storage tujuan. Nama subfolder adalah ID LRO yang ditampilkan dalam
respons fhirStores.rollback
. Untuk melihat file, baca bagian Melihat metadata objek.
success-NUMBER-of-TOTAL_NUMBER.txt
: Berisi resource FHIR yang berhasil dipulihkan.fail-NUMBER-of-TOTAL_NUMBER.txt
: Berisi resource FHIR yang gagal dipulihkan. File kosong akan dibuat meskipun tidak ada kegagalan.
Dalam nama file, NUMBER
adalah nomor file, dan TOTAL_NUMBER
adalah jumlah total file.
Skema file output produksi
File berhasil dan gagal dari pemulihan produksi menggunakan skema berikut. File error berisi kolom
ERROR_MESSAGE
tambahan.
RESOURCE_TYPE |
RESOURCE_ID |
ROLLBACK_VERSION_ID |
NEW_VERSION_ID |
ERROR_MESSAGE (Hanya file error) |
---|---|---|---|---|
Jenis resource FHIR. | ID resource FHIR. | ID versi resource saat ini pada saat pemulihan dimulai. | ID versi resource saat ini setelah pemulihan. Jika disableResourceVersioning adalah true , atau jika memulihkan resource akan menghapus resource, ROLLBACK_VERSION_ID dan NEW_VERSION_ID akan kosong. |
Hanya file error. Menjelaskan alasan resource FHIR diajukan agar dapat dipulihkan. |
Menggunakan filter untuk memulihkan resource FHIR tertentu
Bagian berikut menjelaskan cara menggunakan filter untuk memulihkan
resource FHIR berdasarkan kriteria filter.
Anda menentukan filter dalam objek RollbackFhirResourceFilteringFields
saat mengirim
permintaan fhirStores.rollback
.
Anda dapat menggabungkan filter atau menggunakannya satu per satu untuk beberapa kasus penggunaan, termasuk yang berikut:
- Memulihkan resource FHIR tertentu setelah penghapusan yang tidak disengaja sekaligus tidak mengubah resource lainnya.
- Memulihkan penyimpanan FHIR ke status sebelum operasi impor tertentu mengimpor resource FHIR tertentu.
Menggunakan file filter
Secara default, PITR memulihkan semua resource FHIR di penyimpanan FHIR. Untuk memulihkan
resource FHIR tertentu, tentukan jenis resource dan ID resource-nya dalam file,
lalu upload file tersebut ke
Cloud Storage. Tentukan lokasi file di kolom
inputGcsObject
.
Untuk membaca file filter dari Cloud Storage, Anda harus memberikan izin ke akun layanan Cloud Healthcare Service Agent. Untuk mengetahui informasi selengkapnya, lihat Membaca file filter dari Cloud Storage.
File filter dapat memiliki ekstensi apa pun. Aplikasi harus menggunakan skema berikut, dengan satu resource FHIR per baris:
FHIR_RESOURCE_TYPE/FHIR_RESOURCE_ID
Misalnya, untuk memulihkan resource Pasien dengan ID 8f25b0ac
dan dua
resource Pengamatan dengan ID d507417e90e
dan e9950d90e
, tentukan
hal berikut dalam file filter:
Patient/8f25b0ac
Observation/d507417e90e
Observation/e9950d90e
Menggunakan fungsi kustom
Cloud Healthcare API menyediakan fungsi pemfilteran kustom berikut.
Anda dapat menggabungkan fungsi kustom dengan kolom rollbackTime
untuk menerapkan filter tambahan.
tag
Detail Sintaksis fungsi tag("system") = "code"
Deskripsi Memfilter resource FHIR berdasarkan elemenMeta.tag
resource.Arguments system
string
URL yang merujuk ke sistem kode. Untuk informasi selengkapnya, lihat Menggunakan Kode di Referensi.code
string
Nilai yang mengidentifikasi konsep sebagaimana didefinisikan oleh sistem kode. Untuk informasi selengkapnya, lihat Menggunakan Kode di Referensi.
extension_value_ts
Detail Sintaksis fungsi extension_value_ts("url")
Deskripsi Memfilter resource FHIR berdasarkan nilaiurl
dalam elemenextension
denganurl
sebagai stempel waktu Unix. Mendukung operator perbandingan berikut:=
!=
<
>
<=
>=
Arguments url
string
URL kanonis resource StructureDefinition yang menentukan ekstensi. Misalnya, dalam elemenextension
berikut,url
adalahhttp://hl7.org/fhir/StructureDefinition/timezone
:"extension" : [{ "url" : "http://hl7.org/fhir/StructureDefinition/timezone", "valueCode" : "America/New_York" }]
Untuk mengetahui informasi selengkapnya, lihat Menentukan Ekstensi.
Filter menurut jenis resource FHIR
Untuk memfilter resource FHIR secara lebih luas berdasarkan jenis resource saja, tentukan jenis resource dalam array types[]
.
Memfilter menurut jenis operasi
Untuk memfilter resource FHIR yang diubah oleh transaksi CREATE
, UPDATE
, atau
DELETE
,
tentukan nilai dalam enum ChangeType
.
Misalnya,
untuk hanya memulihkan resource FHIR yang telah dihapus, tentukan nilai
DELETE
.
Jika Anda menentukan CHANGE_TYPE_UNSPECIFIED
, ALL
, atau tidak menentukan nilai, semua resource FHIR akan dipulihkan.
Kecualikan pemulihan sebelumnya
Untuk mengecualikan pemulihan sebelumnya saat memulihkan resource FHIR, tetapkan
kolom excludeRollbacks
ke true
. Anda dapat mengecualikan pemulihan sebelumnya jika
pemulihan berfungsi dengan benar dan Anda tidak ingin menimpa perubahannya.
Anda juga dapat menjalankan beberapa pemulihan dengan stempel waktu yang tumpang-tindih.
Pertimbangkan skenario berikut:
- Pada
1:00
, Anda memulai pemulihan dengan stempel waktu pemulihan disetel ke0:01
. Di2:00
, operasi pemulihan akan menghapus resource PasienPatient/1
danPatient/2
di penyimpanan FHIR. Operasi pemulihan berakhir pukul3:00
. Beberapa hari kemudian, Anda menjalankan operasi pemulihan dengan stempel waktu pemulihan ditetapkan ke
1:00
. Secara default, menjalankan operasi akan menghasilkan hal berikut:- Salah membuat ulang resource Pasien
Patient/1
danPatient/2
. - Memulihkan resource FHIR yang dibuat atau diperbarui dengan benar setelah
3:00
.
- Salah membuat ulang resource Pasien
Untuk mengecualikan operasi pemulihan awal yang menghapus resource Patient/1
dan Patient/2
, serta menghindari pembuatan ulang resource tersebut, tetapkan excludeRollbacks
ke true
.
Memfilter menggunakan ID operasi yang berjalan lama (LRO)
Jika resource FHIR diubah oleh satu atau beberapa operasi yang berjalan lama (LRO),
Anda dapat menentukan ID LRO di kolom operationIds
untuk memulihkan resource yang diubah.
Lihat Mencantumkan LRO untuk mengetahui informasi tentang cara mencantumkan dan melihat ID LRO dalam set data Cloud Healthcare API.
Mencoba lagi resource FHIR yang gagal dipulihkan dalam produksi
Jika beberapa resource FHIR gagal dalam pemulihan produksi, Anda dapat mencoba lagi pemulihan. Gunakan file output produksi yang dihasilkan untuk menemukan resource FHIR yang gagal. Tentukan jenis resource FHIR ini beserta ID-nya dalam file filter, lalu jalankan pemulihan lagi.
Setiap kali Anda menjalankan pemulihan, pemulihan tersebut bersifat idempoten jika Anda menggunakan konfigurasi yang sama di setiap permintaan dan stempel waktu berada dalam 21 hari terakhir.
Batasan
PITR tidak menerapkan integritas referensial, terlepas dari setelan
disableReferentialIntegrity
di penyimpanan FHIR. Dengan memulihkan beberapa resource FHIR, penyimpanan FHIR dapat mengalami status yang melanggar integritas referensial.PITR melewati validasi profil FHIR karena resource FHIR yang dipulihkan telah divalidasi saat dibuat atau diperbarui. Jika konfigurasi profil penyimpanan FHIR berubah, PITR dapat membiarkan penyimpanan FHIR dalam status yang melanggar validasi profil.
Jika nilai
rollbackTime
mendahului waktu saat resource FHIR dihapus di penyimpanan FHIR, penyimpanan FHIR harus telah mengaktifkanenableUpdateCreate
atau resource tidak akan dipulihkan.Anda dapat memperbarui penyimpanan FHIR atau membaca dan menulis data selama pemulihan, tetapi Anda mungkin melihat hasil yang tidak terduga, bergantung pada tahap pemulihan. Misalnya, permintaan baca dapat menampilkan kombinasi resource FHIR yang dipulihkan dan yang tidak dipulihkan. Jika Anda mengupdate resource, pemulihan mungkin menimpa update.
PITR menyimpan histori resource FHIR. Setiap resource yang dipulihkan akan mendapatkan versi baru saat ini dan historinya akan dipertahankan.