build

Which code system goes where — the terminology families

Updated 2026-07-23 · Level 2

Licensed content: we point at sources — we do not host CPT, SNOMED CT, and X12 code lists.

A FHIR CodeableConcept has a slot for a system and a code, but the profile rarely tells you which system in plain language. "Put a diagnosis here" — in ICD-10-CM or SNOMED CT? "Put a procedure here" — CPT, HCPCS, or ICD-10-PCS? Guessing wrong is one of the most common reasons a payload that looks fine gets rejected.

The key insight: most fields accept a small family of systems, not one — and the family is usually split by who codes it (the clinical record vs the claim) and by licensing. There's an interactive explorer that lets you pick a field and see its family; this card is the map.

Licensing, up front. CPT is owned and licensed by the AMA. SNOMED CT requires a license (free in the US through the NLM UMLS). The X12 code lists are licensed. This Lab names those systems and points at their owners — it never hosts a licensed code list. That is the "point, don't host" rule, and it is why you will not find code values here.

Diagnosis

Condition.code, Claim.diagnosis[].diagnosisCodeableConcept

  • ICD-10-CM — diagnoses for billing and reporting. What the payer expects on the claim. CDC/CMS; free.
  • SNOMED CT — the clinical view of the same problem, in the record. Licensed (free in the US via NLM).

Procedure or service

Procedure.code, Claim.procedure[].procedureCodeableConcept, Claim.item.productOrService

  • CPT — professional and outpatient procedures on the claim. AMA-licensed.
  • HCPCS Level II — products, supplies, and services CPT doesn't cover (DME, administered drugs). CMS; free.
  • ICD-10-PCS — inpatient hospital procedures. CMS; free.
  • SNOMED CT — the clinical procedure concept. Licensed.

Which one depends on the setting: professional/outpatient claims lean CPT/HCPCS, inpatient facility claims use ICD-10-PCS.

Medication

MedicationRequest.medicationCodeableConcept, Medication.code

  • RxNorm — the normalized clinical drug concept ("what drug"). NLM; free.
  • NDC — the exact manufactured package ("which product on the shelf"). FDA; free.

Lab result or observation

Observation.code

  • LOINC — names what was measured (the test). Regenstrief; free under the LOINC license.
  • SNOMED CT — frequently codes the result value. Licensed.

The pattern

When a field confuses you, ask two questions: is this the record or the claim? and is this system licensed? Those two axes place almost every code system in US healthcare. When you have a real payload, the validator will tell you whether the system you chose is the one the profile actually binds.

Go to the source