Halaman ini menjelaskan cara menggunakan pemulihan point-in-time (PITR) untuk memulihkan resource FHIR di penyimpanan FHIR ke status dalam 21 hari terakhir. Anda dapat menggunakan PITR untuk memulihkan dari perubahan yang tidak diinginkan, seperti tidak sengaja menghapus resource FHIR.
Sebelum memulai
Permintaan PITR dikategorikan sebagai permintaan operasi lanjutan dan ditagih sesuai dengan ketentuan. 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 menghasilkan satu atau beberapa file yang berisi ID dan jenis resource FHIR yang akan dipulihkan. Verifikasi kebenaran file output sebelum menjalankan pemulihan lagi di produksi.
Untuk memulihkan resource tertentu, atau memulihkan resource sesuai dengan kriteria pemfilteran, tentukan filter.
Melakukan uji coba
Sebelum memulihkan resource FHIR dalam produksi, lakukan uji coba.
Contoh berikut menunjukkan cara melakukan uji coba
menggunakan metode
fhirStores.rollback
.
REST
Pulihkan 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 FHIR storeRECOVERY_TIMESTAMP
: titik pemulihan dalam 21 hari terakhir. Gunakan format RFC 3339. Tentukan waktu hingga 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 API Explorer terbuka di sisi kanan halaman. Anda bisa berinteraksi dengan alat ini untuk mengirim permintaan. Tempelkan isi permintaan di alat ini, lengkapi kolom lainnya yang wajib diisi, 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 API Explorer terbuka di sisi kanan halaman. Anda bisa berinteraksi dengan alat ini untuk mengirim permintaan. Lengkapi kolom yang wajib diisi, lalu klik Jalankan.
"done": true
, 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 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 dan memastikan pemulihan berfungsi
seperti yang diharapkan, lihat
Melihat metadata objek.
Jumlah file sebanding dengan jumlah resource FHIR yang dipulihkan.
Nama file menggunakan format trial-NUMBER-of-TOTAL_NUMBER.txt
,
dengan NUMBER
adalah nomor file dan TOTAL_NUMBER
adalah jumlah total file.
Skema file output uji coba
File output dari pemulihan uji coba menggunakan skema yang ditampilkan dalam tabel berikut:
RESOURCE_TYPE |
RESOURCE_ID |
TIMESTAMP |
---|---|---|
Jenis resource FHIR. | ID resource FHIR. | Waktu saat resource FHIR dibuat atau diperbarui di penyimpanan FHIR. |
Memulihkan 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 FHIR storeRECOVERY_TIMESTAMP
: titik pemulihan dalam 21 hari terakhir. Gunakan format RFC 3339. Tentukan waktu hingga 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 API Explorer terbuka di sisi kanan halaman. Anda bisa berinteraksi dengan alat ini untuk mengirim permintaan. Tempelkan isi permintaan di alat ini, lengkapi kolom lainnya yang wajib diisi, 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 API Explorer terbuka di sisi kanan halaman. Anda bisa berinteraksi dengan alat ini untuk mengirim permintaan. Lengkapi kolom yang wajib diisi, lalu klik Jalankan.
"done": true
, operasi yang berjalan lama telah selesai.
Melihat file output pemulihan produksi
Pemulihan produksi menghasilkan file berikut. File 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, lihat
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 sukses 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 (Khusus 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. |
Khusus file error. Menjelaskan alasan resource FHIR diajukan untuk dipulihkan. |
Menggunakan filter untuk memulihkan resource FHIR tertentu
Bagian berikut menjelaskan cara menggunakan filter untuk memulihkan
resource FHIR berdasarkan kriteria filter.
Anda menentukan filter di objek RollbackFhirResourceFilteringFields
saat mengirim permintaan fhirStores.rollback
.
Anda dapat menggabungkan filter atau menggunakannya satu per satu untuk beberapa kasus penggunaan, termasuk sebagai berikut:
- Memulihkan resource FHIR tertentu setelah penghapusan yang tidak disengaja tanpa 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 informasi selengkapnya, lihat Membaca file filter dari Cloud Storage.
File filter dapat memiliki ekstensi apa pun. File ini 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.Argumen system
string
URL yang mereferensikan sistem kode. Untuk mengetahui informasi selengkapnya, lihat Menggunakan Kode dalam Resource.code
string
Nilai yang mengidentifikasi konsep seperti yang ditentukan oleh sistem kode. Untuk mengetahui informasi selengkapnya, lihat Menggunakan Kode dalam Resource.
extension_value_ts
Detail Sintaksis fungsi extension_value_ts("url")
Deskripsi Memfilter resource FHIR berdasarkan nilaiurl
dalam elemenextension
denganurl
adalah stempel waktu Unix. Mendukung operator perbandingan berikut:=
!=
<
>
<=
>=
Argumen 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 informasi selengkapnya, lihat Menentukan Ekstensi.
Memfilter menurut jenis resource FHIR
Untuk memfilter resource FHIR
secara lebih luas hanya berdasarkan jenis resource, tentukan jenis resource dalam
array
types[]
.
Filter 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 dihapus, tentukan nilai
DELETE
.
Jika Anda menentukan CHANGE_TYPE_UNSPECIFIED
,
ALL
,
atau tidak menentukan nilai, semua resource FHIR akan dipulihkan.
Mengecualikan 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 yang ditetapkan ke0:01
. Di2:00
, operasi pemulihan menghapus resource PatientPatient/1
danPatient/2
di penyimpanan FHIR. Operasi pemulihan berakhir pada3:00
. Beberapa hari kemudian, Anda menjalankan operasi pemulihan dengan stempel waktu pemulihan ditetapkan ke
1:00
. Secara default, menjalankan operasi akan menghasilkan hal berikut:- Membuat ulang resource Pasien
Patient/1
danPatient/2
dengan tidak benar. - Memulihkan resource FHIR yang dibuat atau diperbarui setelah
3:00
dengan benar.
- Membuat ulang resource Pasien
Untuk mengecualikan operasi pemulihan awal yang menghapus
resource Pasien Patient/1
dan Patient/2
, dan menghindari pembuatan ulang,
tetapkan excludeRollbacks
ke true
.
Memfilter menggunakan ID operasi yang berjalan lama (LRO)
Jika resource FHIR diubah oleh satu atau beberapa operasi yang berjalan lama (LROs),
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 di 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 dan ID-nya dalam file filter, lalu jalankan pemulihan lagi.
Setiap kali Anda menjalankan pemulihan, pemulihan 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. Hanya memulihkan beberapa resource FHIR mungkin akan membuat penyimpanan FHIR dalam status yang melanggar integritas referensi.PITR melewati validasi profil FHIR karena resource FHIR yang dipulihkan divalidasi saat dibuat atau diperbarui. Jika konfigurasi profil penyimpanan FHIR berubah, PITR dapat membuat penyimpanan FHIR berada dalam status yang melanggar validasi profil.
Jika nilai
rollbackTime
mendahului waktu saat resource FHIR dihapus di penyimpanan FHIR, penyimpanan FHIR harus 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 tidak dipulihkan. Jika Anda mengupdate resource, pemulihan mungkin menimpa update.
PITR menyimpan histori resource FHIR. Setiap resource yang dipulihkan akan mendapatkan versi terbaru dan historinya akan dipertahankan.