Referensi resource FHIR

Halaman ini menjelaskan cara Cloud Healthcare API mendukung referensi resource FHIR.

Ringkasan

Referensi resource FHIR adalah link terarah dari resource sumber ke resource target. Referensi resource FHIR dapat digunakan untuk menghubungkan resource. Misalnya, jenis resource FHIR Observation memiliki kolom subject dari jenis Reference, yang dapat digunakan untuk ditautkan ke resource Patient sebagai subjek pengamatan.

Referensi resource FHIR juga dapat bersifat sirkuler. Misalnya, jenis resource FHIR CarePlan memiliki kolom replaces yang dapat mengarah ke CarePlan lain.

Elemen terpenting dalam struktur referensi FHIR adalah referensi. Elemen lainnya, seperti display dan identifier, dipertahankan seperti di Cloud Healthcare API.

Format Reference.reference yang didukung di Cloud Healthcare API meliputi:

Referensi resource lokal

Referensi resource didefinisikan sebagai RESOURCE_TYPE/RESOURCE_ID. Cloud Healthcare API juga mendukung penambahan nama lengkap penyimpanan FHIR di depan RESOURCE_TYPE/RESOURCE_ID. Contoh, FHIR_STORE_NAME/RESOURCE_TYPE/RESOURCE_ID. Jika Anda menggunakan format ini, nama penyimpanan harus cocok dengan penyimpanan FHIR permintaan. Jika tidak, permintaan akan ditolak karena referensi non-lokal.

Opsi konfigurasi penyimpanan FhirStore.disableReferentialIntegrity mengontrol pemeriksaan integritas referensial untuk validasi referensi lokal, yang diaktifkan secara default. Untuk mengetahui informasi selengkapnya tentang pemeriksaan integritas referensial, lihat Integritas referensial FHIR.

Referensi versi

Cloud Healthcare API mendukung referensi ke versi resource target tertentu. Untuk menautkan ke versi resource target tertentu, gunakan format setelah RESOURCE_ID/_history/VERSION_ID] dalam referensi lokal.

Saat pemeriksaan integritas referensial diaktifkan, server akan memverifikasi bahwa versi historis ada di penyimpanan FHIR. Metode Resource-purge menghapus versi historis, terlepas dari apakah versi tersebut direferensikan.

Referensi bersyarat

Sebagai alternatif untuk menentukan ID resource target secara eksplisit, executeBundle menerima kueri penelusuran referensi bersyarat untuk resource target yang di-resolve ke ID resource target pada waktu permintaan. Contohnya, Patient?identifier=abc

Jika kueri penelusuran tidak me-resolve ke resource target atau me-resolve ke lebih dari satu resource target, server akan menolak permintaan tersebut, terlepas dari apakah pemeriksaan integritas referensial diaktifkan atau tidak.

URI yang diawali dengan urn:uuid atau urn:oid

Saat menggunakan metode executeBundle dengan paket transaksi, referensi ID unik universal (UUID) atau ID objek(OID) dapat digunakan untuk me-resolve referensi ke resource lain yang dibuat atau diperbarui dalam paket yang sama. Untuk mengetahui informasi selengkapnya, lihat Panduan mengelola paket FHIR.

URL eksternal lengkap

URL eksternal lengkap seperti http://www.example.com/abc disimpan tanpa diubah di kolom referensi. Cloud Healthcare API tidak menyelesaikan URL atau mencoba memverifikasi validitasnya.

Jika URL eksternal lengkap cocok dengan URL lengkap penyimpanan FHIR dalam permintaan, referensi akan diperlakukan sebagai referensi resource lokal.

Referensi fragmen

Referensi fragmen menunjuk ke resource yang ada yang disisipkan dalam resource. Misalnya, jika catatan Pengamatan menyebutkan praktisi umum, tetapi tidak ada direktori praktisi terkontrol, resource Praktisi lengkap tidak dapat dibuat. Praktisi umum adalah sumber daya yang terdapat dalam catatan Pengamatan. Kolom Referensi pada resource dapat menunjuk ke resource inline menggunakan bentuk #[INLINE_RESOURCE_ID].

Dalam contoh FHIR R4 berikut, p1 dan p2 adalah ID resource inline yang direferensikan sebagai #p1 dan #p2:

{
  "resourceType": "Observation",
  "contained": [
    {
      "resourceType":"Patient",
      "id": "p1",
      "generalPractitioner": {"reference": "#p2"}
    },
    {
      "resourceType":"Practitioner",
      "id": "p2"
    }
  ],
  "status": "final",
  "subject": {"reference": "#p1"},
  "performer": [{"reference": "#p2"}]
}

[INLINE_RESOURCE_ID] harus ada sebagai resource yang tertampung di dalam resource. Jika tidak, server akan menolak permintaan tersebut. Resource yang tertampung hanya dapat direferensikan oleh container atau resource lain yang tertampung di dalam penampung yang sama.