Lesson 0007 · FHIR · Modul Resource · ±20 menit

meta, contained, extension; membaca resource utuh

Metadata dari server, resource tanpa identitas sendiri, data di luar definisi inti, lalu satu Observation dibaca dari awal sampai akhir

Di lesson 0006 Anda membaca kode dan value[x]. Tinggal tiga bagian dari kerangka resource di lesson 0004 yang belum dibahas: meta, contained, dan extension. Setelah itu, satu Observation resmi dibaca utuh.

Target lesson ini: Anda bisa menjelaskan isi meta (versionId, lastUpdated, profile) dan siapa yang mengisinya, kapan contained boleh dipakai, beda extension dan modifierExtension, lalu membaca Observation utuh baris per baris: siapa, apa, kapan, hasil, dan artinya.

Semua JSON di lesson ini diadaptasi (dipendekkan) dari contoh resmi spesifikasi FHIR R4 (4.0.1); tautannya ada di setiap blok. Tanpa lab: cukup baca, jawab kuis, lalu latihan lisan. Kuis di sini adalah feedback cepat; bukti penguasaan hanya dari review campuran 0012.

1. meta, contained, extension (±12 menit)

meta: metadata teknis, diisi server

"meta": {
  "versionId": "3",                                   // berubah setiap konten berubah
  "lastUpdated": "2024-05-01T08:15:00+07:00",         // waktu server saat versi ini dibuat
  "profile": ["http://example.org/fhir/StructureDefinition/my-patient"]   // klaim conformance
}

contained: resource tanpa identitas sendiri

{
  "resourceType": "Condition",
  "contained": [{ "resourceType": "Practitioner", "id": "p1",
                  "name": [{ "family": "Person", "given": ["Patricia"] }] }],
  "asserter": { "reference": "#p1" }
}

Contoh resmi: interface engine membuat Condition dari pesan HL7 v2 dan hanya tahu nama dokter, yang tidak cukup untuk membuat Practitioner yang teridentifikasi. [2]

Kutipan: [2] [6]

extension: data di luar definisi inti

Spesifikasi sengaja hanya memuat kebutuhan yang disepakati umum; kebutuhan lain "will be implemented as extensions". "Every element in a resource can have extension child elements", dan "Applications should not reject resources merely because they contain extensions". [3]

// Patient contoh resmi: jam lahir ditempel ke nilai primitif birthDate lewat _birthDate
"birthDate": "1974-12-25",
"_birthDate": {
  "extension": [{
    "url": "http://hl7.org/fhir/StructureDefinition/patient-birthTime",   // WAJIB: canonical URL definisinya
    "valueDateTime": "1974-12-25T14:35:45-05:00"                         // value[x] lagi
  }]
}

Sumber: [8] [4]

Latihan 1 — meta, contained, extension

2. Baca utuh (±5 menit)

Tutup bagian di atas. Baca Observation resmi ini dan jelaskan setiap baris dengan suara keras: siapa, apa, kapan, hasil, dan apa artinya. [7]

{
  "resourceType": "Observation",
  "id": "f001",
  "identifier": [{ "use": "official", "system": "http://www.bmc.nl/zorgportal/identifiers/observations", "value": "6323" }],
  "status": "final",
  "code": { "coding": [{ "system": "http://loinc.org", "code": "15074-8", "display": "Glucose [Moles/volume] in Blood" }] },
  "subject": { "reference": "Patient/f001", "display": "P. van de Heuvel" },
  "effectivePeriod": { "start": "2013-04-02T09:30:10+01:00" },
  "issued": "2013-04-03T15:30:10+01:00",
  "performer": [{ "reference": "Practitioner/f005", "display": "A. Langeveld" }],
  "valueQuantity": { "value": 6.3, "unit": "mmol/l", "system": "http://unitsofmeasure.org", "code": "mmol/L" },
  "interpretation": [{ "coding": [{ "system": "http://terminology.hl7.org/CodeSystem/v3-ObservationInterpretation",
                                    "code": "H", "display": "High" }] }],
  "referenceRange": [{ "low":  { "value": 3.1, "unit": "mmol/l", "system": "http://unitsofmeasure.org", "code": "mmol/L" },
                       "high": { "value": 6.2, "unit": "mmol/l", "system": "http://unitsofmeasure.org", "code": "mmol/L" } }]
}
Bandingkan bacaan Anda

Observation dengan logical id f001 dan business identifier 6323 dari sistem rumah sakit. Status final. Yang diukur: glukosa darah, LOINC 15074-8 (CodeableConcept dengan satu Coding). Pasiennya Patient/f001 (literal reference relatif + display). Waktu klinisnya effectivePeriod (choice type effective[x]), dirilis (issued) sehari kemudian, oleh Practitioner/f005. Hasil valueQuantity 6.3 mmol/L (UCUM), di atas rentang rujukan 3.1–6.2, jadi interpretation = H (High). issued adalah "Date/Time this version was made available", berbeda dari effective[x] "Clinically relevant time/time-period for observation". [5]

Latihan 2 — Membaca resource

Latihan 3 — Ucapkan dengan suara keras

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

"Rumah sakit kami butuh data yang tidak ada di resource FHIR standar. Apa yang Anda lakukan? Jelaskan juga meta.profile dan contained." (60 detik)
Bandingkan dengan jawaban contoh dan checklist-nya

"FHIR sengaja menaruh kebutuhan di luar inti ke extension: setiap elemen boleh punya extension, yang wajib punya url ke StructureDefinition yang mendefinisikannya, plus satu value[x] atau sub-extension. Aplikasi tidak boleh menolak resource hanya karena ada extension. Kalau data itu mengubah makna resource sehingga tidak aman diabaikan, wajib pakai modifierExtension. Extension biasanya didefinisikan dalam profile, dan resource bisa mengklaim mematuhi profile lewat meta.profile; meta juga berisi versionId dan lastUpdated yang diisi server. contained beda lagi: resource kecil yang disisipkan di dalam resource lain karena tidak bisa diidentifikasi sendiri, dirujuk dengan #id; jangan dipakai kalau datanya bisa punya identitas sendiri."

Checklist: apakah Anda menyebut…

  • kebutuhan di luar inti memakai extension, bukan property JSON baru?
  • extension wajib punya url (StructureDefinition) dan value[x] atau sub-extension?
  • modifierExtension untuk data yang mengubah makna dan tidak aman diabaikan?
  • meta.profile = klaim resource mematuhi profile (StructureDefinition)?
  • meta.versionId dan meta.lastUpdated diisi server dan berubah setiap konten berubah?
  • contained = resource tanpa identitas sendiri di dalam resource lain, dirujuk dengan #id?

Lulus kalau minimal 4 dari 6. Review 0012 akan menanyakan salah satunya lagi.

Bacaan lanjutan (opsional, tidak dihitung dalam durasi) HL7 FHIR R4: Data Types, bagian Coding dan CodeableConcept, lalu Resource References (bagian Literal, Logical, dan Contained). Kalau masih ada waktu, buka halaman Observation dan baca tabel Structure-nya dengan kolom Card. dan Type.

Ringkasan untuk dicetak: Reference: Anatomi resource + datatype · Istilah: GLOSSARY.md (bagian "Resource dan datatype")

Ada yang belum jelas? Tanyakan ke saya (agent) di terminal, misalnya: "kapan Observation memakai component alih-alih beberapa Observation?", "bagaimana mengetik resource FHIR di TypeScript tanpa menulis semuanya sendiri?", atau "apa beda ValueSet dan CodeSystem?"

Sumber (semua diakses 26 Oktober 2026): [1] Resource · [2] Resource References · [3] Extensibility · [4] JSON Representation · [5] Observation · [6] DomainResource · [7] Contoh Observation f001 (glukosa) · [8] Contoh Patient