Halaman ini menjelaskan cara Cloud Healthcare API mendukung ekstensi FHIR.
Ringkasan
FHIR memungkinkan ekstensi yang ditentukan pengguna pada resource dan jenis data. Cloud Healthcare API mendukung penyimpanan dan pengambilan ekstensi ini.
Nilai ekstensi
Elemen ekstensi adalah pasangan nilai kunci. Kunci yang disimpan di kolom url
menunjukkan URL kanonis dari definisi ekstensi yang menentukan konten dan arti ekstensi. Kolom value
adalah elemen pilihan
yang dapat berisi berbagai jenis data FHIR.
Mekanisme ini sama untuk semua versi FHIR, hanya saja versi sebelumnya memiliki lebih sedikit jenis data yang tersedia. Jenis data yang tersedia untuk ekstensi dapat ditemukan di standar FHIR (DSTU2, STU3, R4).
Contoh berikut menunjukkan resource Patient
dengan dua ekstensi, warna rambut
dan kewargaan, pada elemen root:
{
"resourceType": "Patient",
"active": true,
"gender": "male",
"extension": [
{
"url": "http://example.com/fhir/StructureDefinition/hair-color",
"valueString": "brown"
},
{
"url": "http://example.com/fhir/StructureDefinition/patient-citizenship",
"valueCodeableConcept": {
"coding" : [{
"system" : "urn:iso:std:iso:3166",
"code" : "US"
}]
}
}
]
}
Jenis dan elemen data kompleks dengan kolom turunan juga dapat memiliki ekstensi; misalnya, Patient
ini berisi ekstensi di kolom identifier
yang merupakan jenis data kompleks dan ekstensi di kolom communication
yang memiliki kolom turunan lainnya:
{
"resourceType": "Patient",
"active": true,
"gender": "male",
"identifier": [
"system": "MRN",
"value": "AB1234",
"extension": [
{
"url": "http://example.com/fhir/StructureDefinition/last-verified",
"valueDateTime": "2021-01-01T00:00:00Z"
}
]
],
"communication": [
{
"language": {
"coding": [{
"system": "urn:iso:std:iso:639",
"code": "EN"
}]
},
"extension": [
{
"url": "http://example.com/fhir/StructureDefinition/fluency-level",
"valueInteger": 7
}
]
}
]
}
Setiap elemen ekstensi hanya dapat memiliki satu kolom nilai. Untuk menentukan ekstensi yang berisi array nilai, Anda harus menentukan beberapa elemen ekstensi dengan url
yang sama.
Anda tidak dapat menentukan ekstensi pada elemen root untuk jenis resource berikut:
Binary
Bundle
Parameters
Ekstensi kompleks
Ekstensi dapat berisi ekstensi untuk menentukan struktur bertingkat. Nama url
ekstensi turunan relatif terhadap ekstensi luar. Setiap elemen ekstensi harus memiliki elemen nilai atau ekstensi turunan bertingkat, tetapi tidak keduanya.
Contoh berikut menunjukkan resource Patient
yang berisi ekstensi patient-citizenship
kompleks dengan ekstensi turunan code
dan period
:
{
"resourceType": "Patient",
"extension": [
{
"url": "http://hl7.org/fhir/StructureDefinition/patient-citizenship",
"extension": [
{
"url": "code",
"valueCodeableConcept": {
"coding": [{
"system": "urn:iso:std:iso:3166",
"code": "CA"
}]
}
},
{
"url": "period",
"valuePeriod": {
"start": "2010-01-01"
}
}
]
}
]
}
Ekstensi pada jenis primitif
Jenis data primitif di FHIR juga dapat memiliki ekstensi. Jika ditampilkan dalam format JSON, ekstensi akan dinyatakan dalam properti JSON tambahan dengan _
ditambahkan di depan nama elemen dasar, seperti yang ditentukan dalam representasi JSON FHIR.
Contoh berikut, dalam format JSON, menunjukkan resource Patient
dengan ekstensi di kolom birthDate
:
{
"resourceType": "Patient",
"active": true,
"gender": "male",
"birthDate": "1970-01-01",
"_birthDate": {
"extension": [
{
"url": "http://example.com/fhir/StructureDefinition/date-type",
"valueString": "A"
}
]
}
}
Jika elemen primitif diulang, properti dengan _
juga ditangani sebagai
array, dengan nilai null yang digunakan untuk menyelaraskan nilai ekstensi dengan
primitif yang sesuai.
Contoh berikut menunjukkan resource Patient
dengan ekstensi pada nilai kedua name.given
, tetapi tanpa ekstensi pada nilai pertama:
{
"resourceType": "Patient",
"name": {
"given": [
"ABC",
"DEF"
],
"_given": [
null,
{
"extension": [
{
"url": "http://hl7.org/fhir/StructureDefinition/display",
"valueString": "XYZ"
}
]
}
]
}
}
Menentukan ekstensi dengan StructureDefinition
Untuk tujuan interoperabilitas, nama dan arti ekstensi dapat ditentukan dengan resource StructureDefinition
yang dapat dipublikasikan atau didistribusikan agar pengguna data dapat menafsirkannya. Hal ini bersifat opsional
saat menggunakan ekstensi di Cloud Healthcare API.
Identitas definisi ini ditunjukkan oleh URL kanonis di kolom 'url'. Untuk data yang dipertukarkan antar-organisasi,
sebaiknya gunakan URL yang dapat diikuti konsumen data
untuk mendapatkan StructureDefinition
. Cloud Healthcare API tidak memvalidasi URL ini atau mencoba menyelesaikannya.
Konten resource StructureDefinition
dapat bersifat kompleks dan sering
ditentukan menggunakan alat untuk membuat profil FHIR.
Ekstensi pengubah
Ekstensi pengubah
mirip dengan ekstensi, tetapi disimpan di kolom modifierExtension
. Ekstensi
pengubah adalah data tambahan yang tidak dapat diabaikan karena dapat
membatalkan interpretasi elemen yang memuatnya.
Misalnya, ekstensi pengubah dapat menunjukkan bahwa pasien tidak memiliki kondisi yang ditentukan atau bahwa suatu obat tidak boleh diberikan resep.
Cloud Healthcare API menyimpan dan mengambil ekstensi pengubah, tetapi tidak mencoba menafsirkan artinya. Aplikasi disarankan untuk mengambil tindakan yang tepat saat menemukan ekstensi pengubah yang tidak memahaminya, mungkin dengan menampilkan peringatan atau menolak resource sepenuhnya. Implementasi harus menghindari penggunaan ekstensi pengubah jika memungkinkan.