Lesson 0003 · FHIR · Modul Fondasi · ±23 menit

Profile, Extension, Implementation Guide; server yang sering disebut

Pertanyaan pembuka yang hampir pasti muncul, dijelaskan dengan bahasa developer JavaScript

Target lesson ini: Anda bisa menjawab "Apa itu profile?" tanpa catatan, dalam kurang dari satu menit: kenapa FHIR "dasar" selalu disesuaikan lewat Profile, Extension (termasuk modifierExtension), dan Implementation Guide, dan mengenali nama server HAPI FHIR dan Medplum.

Semua fakta di bawah diambil dari spesifikasi FHIR R4 (v4.0.1) dan dikutip [n]. Contoh JSON dan TypeScript hanya untuk dibaca, tidak perlu dijalankan. REST, HTTP status, JSON, dan OAuth sudah Anda kuasai; lesson ini hanya mengajarkan yang khas FHIR.

Sebelumnya, di lesson 0002, Anda melihat Resource, datatype, dan status versi R4 (Normative, Trial Use, FMM). Lesson ini menutup modul Fondasi: bagaimana FHIR dasar disesuaikan ke konteks tertentu, dan server yang namanya sering disebut.

1. Profile, Extension, dan Implementation Guide (konsep)

Spesifikasi dasar FHIR sengaja menjadi "a common platform or foundation on which a variety of different solutions are implemented", dan karena itu "usually requires further adaptation to particular contexts of use". [1] Filosofinya: resource dasar memenuhi "the majority of common use cases", dan "There is a built-in extension mechanism to cover the remaining content". [2]

Profile

"A set of constraints on a resource represented as a structure definition", ditulis sebagai resource StructureDefinition. [1] Profile bisa: mengubah kardinalitas ("One key function of profiles"), melarang elemen dengan max 0, memaku nilai tetap, membatasi tipe, mengikat ke value set terminologi lain, dan menandai elemen yang "must be 'supported'". [1] Must support berarti implementasi "SHALL provide 'support' for the element in some meaningful way". [3]

Contoh konkret: di Patient dasar, identifier dan name berkardinalitas 0..* [4]; profile US Core Patient (http://hl7.org/fhir/us/core/StructureDefinition/us-core-patient) mempersempitnya menjadi 1..*. [5] Resource bisa menyatakan kesesuaiannya di meta.profile.

Extension

{
  "resourceType": "Patient",
  "id": "123",
  "extension": [{
    "url": "http://hl7.org/fhir/StructureDefinition/patient-birthPlace",
    "valueAddress": { "city": "Bandung", "country": "ID" }
  }]
}

Padanan TypeScript untuk membaca extension: cari berdasarkan url, jangan berdasarkan posisi array.

const BIRTH_PLACE = "http://hl7.org/fhir/StructureDefinition/patient-birthPlace";
const birthPlace = patient.extension?.find(e => e.url === BIRTH_PLACE)?.valueAddress;

Implementation Guide (IG)

"A coherent and bounded set of adaptations that are published as a single unit" [1]: profile, extension, value set, dan contoh untuk satu negara, organisasi, atau use case. US Core "defines the minimum constraints on the FHIR resources to create the US Core Profiles". [8] Resource ImplementationGuide sendiri ("A set of rules of how a particular interoperability or standards problem is solved") masih Trial Use, FMM 1. [9]

FHIRAnalogi TypeScript (hanya untuk mengingat)
Resource dasartype yang longgar: banyak field opsional (mis. semua field Patient di atas 0..1 atau 0..*)
Profiletype yang lebih ketat + aturan validasi (seperti schema zod yang di-refine)
Extensionfield tambahan yang wajib punya "namespace" (URL) dan definisi
Implementation Guidepackage npm berisi kumpulan type, schema, dan contoh

Latihan 1 — Profile, Extension, IG

2. Server yang mungkin disebut di interview

Cukup kenali namanya; menjalankannya di luar cakupan track ini.

Latihan 2 — Ucapkan dengan suara keras

Pasang timer dan jawab dengan suara keras, seolah sedang interview. Jangan buka jawaban contoh sebelum selesai.

"Kenapa FHIR 'dasar' tidak langsung cukup untuk sebuah negara atau organisasi? Jelaskan Profile, Extension, dan Implementation Guide." (90 detik)
Bandingkan dengan jawaban contoh dan checklist-nya

"Spesifikasi dasar FHIR sengaja menjadi platform bersama: resource-nya hanya memuat elemen yang akan didukung kebanyakan sistem, jadi spesifikasi menyatakan bahwa ia biasanya perlu diadaptasi ke konteks pemakaian. Adaptasi itu ditulis sebagai profile, yaitu StructureDefinition berisi constraint: misalnya identifier pasien wajib (kardinalitas 1..*), elemen tertentu dilarang (max 0), kode harus dari value set tertentu, atau elemen ditandai must support. Kebutuhan yang tidak ada di core ditambahkan sebagai extension: objek dengan url ke definisinya plus value[x]; kalau extension itu mengubah makna data, ia harus menjadi modifierExtension yang tidak boleh diabaikan. Sekumpulan profile, extension, dan terminologi untuk satu konteks diterbitkan sebagai Implementation Guide, misalnya US Core di Amerika yang dibangun di atas R4. Resource bisa menyatakan kesesuaiannya lewat meta.profile. Analogi TypeScript: resource dasar adalah type yang longgar, profile adalah type yang lebih ketat plus aturan validasi, dan IG adalah package berisi kumpulan type itu."

Checklist: apakah Anda menyebut…

  • spesifikasi dasar = platform bersama dengan core kecil, biasanya perlu diadaptasi ke konteks?
  • profile = StructureDefinition berisi constraint (kardinalitas, max 0, binding terminologi, must support)?
  • extension = url ke definisi + value[x]; menambah data yang tidak ada di core?
  • modifierExtension mengubah makna, tidak boleh diabaikan diam-diam?
  • Implementation Guide = kumpulan adaptasi yang diterbitkan sebagai satu unit (contoh US Core di atas R4)?
  • meta.profile untuk menyatakan kesesuaian; analogi TS: type lebih ketat / package type?

Lulus kalau minimal 4 dari 6.

Bacaan lanjutan (opsional, tidak dihitung dalam durasi) HL7 FHIR R4: FHIR Overview – Developers. Baca "Framework", "Example Resource Instance", "URLs and Identities", dan "Managing Variability". Lanjutkan dengan Comparison with HL7 v2 kalau masih ada waktu.

Istilah: GLOSSARY.md (bagian "Fondasi") · Sumber: RESOURCES.md · Komunitas: chat.fhir.org

Ada yang belum jelas? Tanyakan ke saya (agent) di terminal, misalnya: "apa beda id dan identifier?", "kapan sebuah extension harus jadi modifierExtension?", atau "bagaimana menjelaskan Normative vs Trial Use ke interviewer non-teknis?"

Sumber: [1] Profiling FHIR · [2] FHIR Overview · [3] Conformance Rules · [4] Patient · [5] US Core Patient Profile · [6] Extensibility · [7] Extension: patient-birthPlace · [8] US Core IG · [9] ImplementationGuide · [10] HAPI FHIR · [11] Medplum Docs