Ekstensi FHIR

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.