Framework FHIR
Pada bagian ini akan dijelaskan secara singkat beberapa landasan yang mendefinisikan framework FHIR beserta struktur JSON-nya, yaitu Element, Resource, DomainResource, dan Bundle.
Element
Element di FHIR adalah sebuah object yang memuat bagian terkait nilai, id, atau ekstensi terkait dari satu jenis data. Sebuah Element memiliki salah satu dari ketiga bagian yang telah disebutkan sebelumnya, dan juga tipe data dari setiap bagian tersebut akan berubah menjadi array dalam kondisi tertentu. Dengan kata lain Element bisa juga diartikan sebagai nama variabel yang memiliki nilai, id, atau informasi ekstensi tertentu dari suatu konteks data. Secara umum, struktur deklarasi Element dapat direpresentasikan sebagai berikut:
| Struktur Element | Struktur JSON |
|---|---|
| |
Nama
Elementitu sendiri dalam struktur JSON akan menjadi nama properti{nama_element}sesuai konteks yang dimaksud. ContohElementuntuk menunjukan indikator dari suatu data dengan namastatusbertipebooleandengan nilaitruedan memiliki id01, struktur JSON-nya:{ status: true _status: { id: "01" } }Untuk
Elementyang memiliki id, dalam penerapan JSON-nya akan disatukan dalam sebuahobjecttersendiri dengan prefikslalu disambung dengan namaElement-`nya (`{nama_element}). Dan id beserta nilainya tadi dimasukkan dalamobjecttersebut di dalam properti bernamaid.Begitu juga dengan ekstensi terkait bila ada, akan dimasukkan dalam properti
_{nama_element}berupaobjectpada propertiextension, dengan tipe dataarray of <Extension> objects.Properti
urladalah bagian dari tipe data<Extension>, di mana tipe data tersebut direpresentasikan sebagaiobjectdalam format JSON. Sama seperti yang dijelaskan pada poin sebelumnya,value<?>ini adalah salah satu properti dariobject <Extension>. Bedanya properti ini penamaan dan nilainya mengikuti tipe data yang dimaksud(<?>). Contoh ekstensi yang digunakan harus mendefinisikan propertivalue<?>dengan tipe datastringdan memiliki nilaistring value, sehingga penerapannya menjadi:valueString: “string value”.
Struktur JSON dari element dapat berubah-ubah sesuai kondisi atau keberadaan dari nilai, id, atau ekstensi terkait yang ada. Selain dari struktur JSON lengkap yang sudah dijelaskan sebelumnya ada, beberapa struktur JSON yang dapat digunakan dalam kondisi tertentu, seperti yang akan dijelaskan pada bagian berikutnya.
Element untuk Tipe Data Primitif
Berikut struktur JSON dengan berbagai kondisi dari keberadaan nilai, id, dan ekstensi terkait:
// hanya ada nilai tanpa ada id atau ekstensi
{
{nama_element}: <*>
}
// ada nilai dengan id tertentu
{
{nama_element}: <*>
_{nama_element}: {
id: string
}
}
// ada nilai dengan ekstensi terkait
{
{nama_element}: <*>
_{nama_element}: {
extension: [{
url: uri
value<?>: <*>
}]
}
}
// tanpa ada nilai, tapi ada id
{
_{nama_element}: {
id: string
}
}
// tanpa ada nilai, tapi ada ekstensi
{
_{nama_element}: {
extension: [{
url: uri
value<?>: <*>
}]
}
}
// tanpa ada nilai, tapi ada id dan ekstensi
{
_{nama_element}: {
id: string
extension: [{
url: uri
value<?>: <*>
}]
}
}Element untuk Tipe Data Non Primitif
Untuk struktur JSON dengan tipe non primitif, seperti untuk tipe umum atau khusus (contohnya Period):
{
id: string
extension: [{
url: uri
value<?>: <*>
}]
}Element yang Berulang
Kadang ada penggunaan Element lebih dari satu untuk mendefinisikan data tertentu. Terdapat perbedaan struktur antara tipe data primitif dan non primitif. Untuk tipe data primitif, nilai dari {nama_element} dan _{nama_element} akan berubah menjadi array dengan tipe data untuk setiap item di array mengikuti tipe data sesuai aturan Element. Bila salah satu item dari array tersebut tidak didefinisikan nilainya, harus diisi dengan nilai null. Berikut bentuk struktur JSON-nya:
// tipe data primitif
{
{nama_element}: [ null ATAU <*> ]
_{nama_element}: [ null ATAU {
id: string
extension: [{
url: uri
value<?>: <*>
}]
}]
}
// tipe data non primitif
[ null ATAU {
id: string
extension: [{
url: uri
value<?>: <*>
}]
}]Resources
Resource di FHIR adalah sebuah object abstrak yang memuat informasi dari suatu entitas yang:
mempunyai identitas yang diketahui (via URL) dan dapat dijadikan referensi,
mengidentifikasikan entitas itu sendiri sebagai salah satu jenis Resource yang ditentukan oleh suatu spesifikasi tertentu,
terdiri dari sekumpulan struktur data seperti yang didefinisikan sesuai jenis Resource-nya, *dan memiliki versi yang dapat diketahui terkait perubahan yang terjadi pada Resource.
Secara umum, struktur deklarasi Resource dapat direpresentasikan sebagai berikut:
| Struktur Resource | Struktur JSON |
|---|---|
| |
Nama
Resourceitu sendiri dalam struktur JSON akan didefinisikan sebagai nilai pada propertiresourceType, misalResourcedengan namaPatient, maka menjadiresourceType: “Patient”.Seperti
Elementyang memiliki id, Resource juga memiliki id unik.Metadata di sini terkait dengan versi dan riwayat dari definisi
Resourceyang didefinisikan. Pembahasan terkait tipe data tersebut diluar cakupan dari dokumen ini, lebih lanjut bisa dilihat di https://hl7.org/FHIR/resource.html#Meta.Terkait aturan atau constraint yang berlaku dari
Resourceyang didefinisikan.Kode untuk bahasa dari
Resourceyang didefinisikan, mengacu pada ValueSet di http://hl7.org/fhir/ValueSet/languages.
DomainResource
DomainResource di FHIR adalah sebuah object abstrak turunan dari Resource yang memuat informasi dari suatu entitas pada domain atau bidang tertentu, yang harus:
memuat informasi dalam format XHTML terkait penjelasan dari resource yang didefinisikan,
bisa memuat data atau resource tambahan di dalam resource yang lainnya,
dan dapat memiliki ekstensi tambahan dan ekstensi kustom.
Secara umum, struktur deklarasi DomainResource dapat direpresentasikan sebagai berikut:
| Struktur DomainResource | Struktur JSON |
|---|---|
| |
Nama
DomainResourceitu sendiri dalam struktur JSON akan didefinisikan sebagai nilai pada propertiresourceType, misalDomainResourcedengan namaPatient, maka menjadiresourceType: “Patient”.Deskripsi dari
DomainResourceterkait, teks dalam format XHTML berada di tipe dataNarativeini. Pembahasan terkait tipe data Narrative di luar cakupan dokumen ini, lebih lanjut di https://hl7.org/FHIR/narrative.html.Data terkait Resource lainnya.
Satu atau beberapa ekstensi tambahan yang diperlukan.
Satu atau beberapa ekstensi kustom tambahan yang diperlukan, lebih lanjut di https://hl7.org/FHIR/domainresource-definitions.html#DomainResource.modifierExtension .
Bundle
Bundle di FHIR adalah sebuah tipe resource khusus yang diturunkan dari definisi Resource, di mana resource ini berisi koleksi atau kumpulan dari resource. Kegunaan dari resource bertipe Bundle ini adalah:
mengembalikan sekumpulan resource saat ingin melihat resource yang memenuhi beberapa kriteria tertentu (RESTful Search),
mengembalikan sekumpulan versi resource saat ingin melihat riwayat dari resource (History),
mengirim sekumpulan resource untuk kebutuhan pertukaran pesan (Messaging),
mengelompokkan sekumpulan resource mandiri untuk bertindak sebagai koleksi yang dapat ditukar dan bertahan lama dengan integritas klinis, contohnya dokumen klinis (Documents),
membuat/memperbarui/menghapus sekumpulan resource di server sebagai operasi tunggal (termasuk melakukannya sebagai transaksi atomic tunggal) (Transactions)
dan untuk menyimpan koleksi dari resource.
Secara umum, struktur deklarasi Bundle dapat direpresentasikan sebagai berikut:
| Struktur Bundle | Struktur JSON |
|---|---|
| |
Dikarenakan
Bundleadalah implementasi dariobjectabstrakResource, maka pada struktur JSON, nilai pada propertiresourceTypeharus diisi denganBundle.Identifier permanen dari
Bundleterkait, menggunakan tipe dataIdentifier.Mengindikasikan tujuan dari penggunaan
Bundleterkait, nilai untuktypeini mengacu ke ValueSetBundleTypedi http://hl7.org/fhir/ValueSet/bundle-type.Tanggal dan waktu lengkap dari sistem yang mengindikasikan kapan
Bundleini dibuat.Jumlah hasil yang sesuai kriteria, wajib ada jika menggunakan fitur pencarian.
Tautan-tautan lainnya dari
Bundleterkait.Tipe relasi dari tautan terkait, nilainya mengacu ke data di website IANA di http://www.iana.org/assignments/link-relations/link-relations.xhtml#link-relations-1
URI yang mereferensikan detail dari tautan yang dimaksud.
Entri-entri yang tersedia di
Bundleterkait, berupaResourceatau informasi tambahan.Tautan-tautan dari entri terkait.
Alamat URI lengkap dari resource (URL absolut atau URI berupa UUID/OID).
Data
Resourcedari entri terkait di dalamBundleyang bersangkutan.Informasi terkait entri hasil pencarian.
Tipe dari pencarian yang didapat, nilainya ini mengacu ke ValueSet
SearchEntryModedi http://hl7.org/fhir/ValueSet/search-entry-mode.Peringkat dari pencarian (antara 0 dan 1).
Informasi tambahan untuk melakukan request data dari entri yang bersangkutan.
Tipe HTTP Method/Verb yang digunakan, nilainya ini mengacu ke ValueSet
HTTPVerbdi http://hl7.org/fhir/ValueSet/http-verb.URL lengkap dengan protokol HTTP untuk entri terkait.
Informasi terkait HTTP header If-None-Match.
Informasi terkait HTTP header If-Modified-Since.
Informasi terkait HTTP header If-Match.
Informasi terkait pembuatan resource dengan kondisi tertentu.
Informasi terkait hasil response yang didapat.
Informasi terkait HTTP status code yang didapat. Nilainya dapat berupa kode statusnya atau bisa lengkap dengan teks dari kode statusnya.
Informasi terkait redirection via HTTP header location, jika ada.
Informasi Etag jika diperlukan. Tanggal dan waktu lengkap dari sistem yang mengindikasikan kapan perubahan terkait response ini terjadi.
Data
Resourceyang didapat.Data terkait validitas dari
Bundle(Digital Signature).