Lesson 0006 · FHIR · Modul Resource · ±18 menit

LOINC, SNOMED CT, ICD-10; choice type value[x]

Code system mana untuk apa, dan bagaimana satu elemen bisa punya beberapa tipe di JSON

Di lesson 0005 Anda melihat bahwa kode hanya bermakna bersama system-nya. Lesson ini memetakan code system yang paling sering muncul, lalu membahas valueQuantity dan kerabatnya: choice type value[x].

Target lesson ini: Anda bisa menyebut code system yang tepat untuk tes lab, konsep klinis, diagnosis, dan satuan (LOINC, SNOMED CT, ICD-10, UCUM) beserta URI system-nya, serta membaca dan menulis choice type value[x] (valueQuantity, valueCodeableConcept, effectivePeriod) dengan benar.

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. Terminologi: LOINC, SNOMED CT, ICD-10 (±8 menit)

Code systemsystem di FHIRUntuk apaContoh kode
LOINC (Regenstrief Institute)http://loinc.org [6] nama observasi/tes: "The Observation.code is preferably a LOINC concept code." [5] 15074-8 Glucose [Moles/volume] in Blood
SNOMED CT (SNOMED International)http://snomed.info/sct [7] terminologi klinis luas: temuan, prosedur, alasan kunjungan, nilai berkode; "For non-numeric values, the Observation.value is preferably a SNOMED CT concept code." [5] 260385009 Negative; 34068001 Heart valve replacement
ICD-10 (WHO)http://hl7.org/fhir/sid/icd-10; varian nasional mis. …/icd-10-cm [8] klasifikasi penyakit: dasar statistik morbiditas/mortalitas, dan datanya "support payment systems" [9] J21.8 (ditulis dengan titik)
UCUMhttp://unitsofmeasure.org satuan di Quantity: "If the unit can be coded in UCUM and a code is provided, it SHOULD be a UCUM code." [1] mmol/L, [lb_av], min

Latihan 1 — Terminologi

2. Choice type value[x] (±7 menit)

Di definisi, Observation.value[x] bertipe Quantity | CodeableConcept | string | boolean | integer | Range | Ratio | SampledData | time | dateTime | Period dan effective[x] bertipe dateTime | Period | Timing | instant. [5] Di JSON, "[x] is replaced with the title-cased name of the type that is actually used", dan "Elements that have a choice of data type cannot repeat - they must have a maximum cardinality of 1." [3]

// Contoh resmi glukosa (f001): effective[x] = Period, value[x] = Quantity
"effectivePeriod": { "start": "2013-04-02T09:30:10+01:00" },
"valueQuantity": { "value": 6.3, "unit": "mmol/l", "system": "http://unitsofmeasure.org", "code": "mmol/L" }

// Hasil berkode: value[x] = CodeableConcept (contoh dari halaman datatypes)
"valueCodeableConcept": { "coding": [{ "system": "http://snomed.info/sct", "code": "260385009", "display": "Negative" }],
                          "text": "Negative for Chlamydia Trachomatis rRNA" }

// Patient: deceased[x] = boolean atau dateTime
"deceasedBoolean": false

Sumber contoh: [10] [1] [11]

// Padanan TS: union yang diskriminatornya NAMA property, bukan field "type".
type ObservationValue =
  | { valueQuantity: Quantity }
  | { valueCodeableConcept: CodeableConcept }
  | { valueString: string };          // ... dan seterusnya; paling banyak satu yang ada

function showValue(o: Observation): string {
  if (o.valueQuantity) return `${o.valueQuantity.value} ${o.valueQuantity.unit ?? o.valueQuantity.code ?? ""}`;
  if (o.valueCodeableConcept) return label(o.valueCodeableConcept);
  if (o.valueString !== undefined) return o.valueString;
  return o.dataAbsentReason ? label(o.dataAbsentReason) : "-";   // value bisa absen
}

Kalau nilai tidak ada, Observation memakai dataAbsentReason, dan aturannya "dataAbsentReason SHALL only be present if Observation.value[x] is not present". [5] Catatan angka: JSON.parse mengubah 2.00 menjadi 2, padahal presisi decimal FHIR penting secara klinis; dibahas di lesson 0016. [4]

Latihan 2 — value[x]

Latihan 3 — Ucapkan dengan suara keras

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

"Sistem lab kami mengirim hasil glukosa darah dan diagnosis pasien ke server FHIR. Code system apa yang Anda pakai untuk masing-masing, dan bagaimana menuliskannya di JSON?" (60 detik)
Bandingkan dengan jawaban contoh dan checklist-nya

"Apa yang diukur saya tulis di Observation.code dengan LOINC, system http://loinc.org, misalnya 15074-8 untuk glukosa darah; spesifikasi menyebut Observation.code preferably LOINC. Hasil angkanya di valueQuantity dengan satuan UCUM, system http://unitsofmeasure.org, kode mmol/L. Kalau hasilnya berkode, misalnya Negative, value[x] menjadi valueCodeableConcept dengan SNOMED CT, http://snomed.info/sct. Diagnosis untuk pelaporan dan klaim memakai ICD-10, system http://hl7.org/fhir/sid/icd-10, dan kodenya ditulis dengan titik, seperti J21.8; SNOMED CT menamai konsep klinisnya. Setiap kode selalu saya tulis berpasangan dengan system-nya. Di spesifikasi inti, binding Observation.code dan Condition.code hanya example, jadi profile nasional seperti SATUSEHAT biasanya memperketatnya; itu yang saya cek dulu."

Checklist: apakah Anda menyebut…

  • Observation.code memakai LOINC (system http://loinc.org), mis. 15074-8 untuk glukosa darah?
  • hasil angka di valueQuantity dengan satuan UCUM (system http://unitsofmeasure.org)?
  • hasil berkode di valueCodeableConcept dengan SNOMED CT (system http://snomed.info/sct)?
  • diagnosis untuk pelaporan/klaim memakai ICD-10 (system http://hl7.org/fhir/sid/icd-10), kode ditulis dengan titik?
  • kode selalu ditulis berpasangan dengan system-nya?
  • binding Observation.code/Condition.code di spesifikasi inti hanya example; profile nasional (mis. SATUSEHAT) biasanya memperketatnya?

Semua poin dari bagian 1 dan 2 lesson ini; pasangan system + code: "coded values are always treated as a pair composed of 'system' and 'code'". [2] Lulus kalau minimal 4 dari 6.

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] Data Types · [2] Using Codes in Resources · [3] Resource Formats · [4] JSON Representation · [5] Observation · [6] Using LOINC with FHIR · [7] Using SNOMED CT with FHIR · [8] Using ICD-[X] with FHIR · [9] WHO: International Classification of Diseases · [10] Contoh Observation f001 (glukosa) · [11] Contoh Patient