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
Element
itu sendiri dalam struktur JSON akan menjadi nama properti{nama_element}
sesuai konteks yang dimaksud. ContohElement
untuk menunjukan indikator dari suatu data dengan namastatus
bertipeboolean
dengan nilaitrue
dan memiliki id01
, struktur JSON-nya:{ status: true _status: { id: "01" } }
Untuk
Element
yang memiliki id, dalam penerapan JSON-nya akan disatukan dalam sebuahobject
tersendiri dengan prefikslalu disambung dengan nama
Element-`nya (`{nama_element}
). Dan id beserta nilainya tadi dimasukkan dalamobject
tersebut di dalam properti bernamaid
.Begitu juga dengan ekstensi terkait bila ada, akan dimasukkan dalam properti
_{nama_element}
berupaobject
pada propertiextension
, dengan tipe dataarray of <Extension> objects
.Properti
url
adalah bagian dari tipe data<Extension>
, di mana tipe data tersebut direpresentasikan sebagaiobject
dalam 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 datastring
dan 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
Resource
itu sendiri dalam struktur JSON akan didefinisikan sebagai nilai pada propertiresourceType
, misalResource
dengan namaPatient
, maka menjadiresourceType: “Patient”
.Seperti
Element
yang memiliki id, Resource juga memiliki id unik.Metadata di sini terkait dengan versi dan riwayat dari definisi
Resource
yang 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
Resource
yang didefinisikan.Kode untuk bahasa dari
Resource
yang 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
DomainResource
itu sendiri dalam struktur JSON akan didefinisikan sebagai nilai pada propertiresourceType
, misalDomainResource
dengan namaPatient
, maka menjadiresourceType: “Patient”
.Deskripsi dari
DomainResource
terkait, teks dalam format XHTML berada di tipe dataNarative
ini. 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
Bundle
adalah implementasi dariobject
abstrakResource
, maka pada struktur JSON, nilai pada propertiresourceType
harus diisi denganBundle
.Identifier permanen dari
Bundle
terkait, menggunakan tipe dataIdentifier
.Mengindikasikan tujuan dari penggunaan
Bundle
terkait, nilai untuktype
ini mengacu ke ValueSetBundleType
di http://hl7.org/fhir/ValueSet/bundle-type.Tanggal dan waktu lengkap dari sistem yang mengindikasikan kapan
Bundle
ini dibuat.Jumlah hasil yang sesuai kriteria, wajib ada jika menggunakan fitur pencarian.
Tautan-tautan lainnya dari
Bundle
terkait.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
Bundle
terkait, berupaResource
atau informasi tambahan.Tautan-tautan dari entri terkait.
Alamat URI lengkap dari resource (URL absolut atau URI berupa UUID/OID).
Data
Resource
dari entri terkait di dalamBundle
yang bersangkutan.Informasi terkait entri hasil pencarian.
Tipe dari pencarian yang didapat, nilainya ini mengacu ke ValueSet
SearchEntryMode
di 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
HTTPVerb
di 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
Resource
yang didapat.Data terkait validitas dari
Bundle
(Digital Signature).