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 definisi ekstensi yang menentukan konten dan makna ekstensi. Kolom value
adalah elemen pilihan
yang dapat berisi berbagai jenis data FHIR.
Mekanisme ini sama di semua versi FHIR, kecuali versi sebelumnya memiliki lebih sedikit jenis data yang tersedia. Jenis data yang tersedia untuk ekstensi dapat ditemukan dalam standar FHIR (DSTU2, STU3, R4).
Contoh berikut menunjukkan resource Patient
dengan dua ekstensi, warna rambut
dan kewarganegaraan, 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 data dan elemen kompleks dengan kolom turunan juga dapat memiliki ekstensi; misalnya, Patient
ini berisi ekstensi pada kolom identifier
yang merupakan jenis data kompleks dan ekstensi pada 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 bersifat 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. Saat direpresentasikan dalam
format JSON, ekstensi direpresentasikan dalam properti JSON tambahan dengan
_
ditambahkan ke nama elemen primitif, 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 primitifnya
yang sesuai.
Contoh berikut menunjukkan resource Patient
dengan ekstensi pada
nilai kedua name.given
, tetapi tidak ada 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 konsumen 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 apa pun yang dipertukarkan antarorganisasi,
sebaiknya gunakan URL yang dapat diikuti konsumen data
untuk mendapatkan StructureDefinition
. Cloud Healthcare API tidak
memvalidasi URL ini atau mencoba me-resolve-nya.
Konten resource StructureDefinition
dapat bersifat kompleks dan sering kali
ditentukan menggunakan alat untuk menulis 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 berisinya.
Misalnya, ekstensi pengubah dapat menunjukkan bahwa pasien tidak memiliki kondisi yang ditentukan atau bahwa obat tidak boleh diresepkan.
Cloud Healthcare API menyimpan dan mengambil ekstensi pengubah, tetapi tidak mencoba menafsirkan maknanya. Aplikasi disarankan untuk mengambil tindakan yang sesuai saat menemukan ekstensi pengubah yang tidak dipahami, mungkin dengan menampilkan peringatan atau menolak resource sepenuhnya. Jika memungkinkan, pelaksana harus menghindari penggunaan ekstensi pengubah.