Canonical UCUM Units the FHIR Spec Assumes You'll Use

Editorial illustration in zellij-islamic-geometric style depicting a zellij unit tableau of canonical UCUM codes by category

The FHIR spec references UCUM constantly but never publishes an exhaustive "use these codes" list. It leans on implementer common sense and a handful of examples. In practice about forty UCUM codes cover ninety-plus percent of clinical observations. Learning that set makes the ambiguity in Quantity fields disappear for daily work. The site's Clinical UCUM unit converter recognises this canonical set. For the wider FHIR framing, the FHIR healthcare hub has more.

Mass

  • g gram
  • kg kilogram
  • mg milligram
  • ug microgram (µg in display, ug in code)
  • ng nanogram
  • pg picogram

Volume

  • L liter
  • mL milliliter (NOT ml)
  • uL microliter

Length

  • m meter
  • cm centimeter
  • mm millimeter
  • um micrometer

Time

  • s second
  • min minute
  • h hour
  • d day
  • wk week
  • mo month
  • a annum (year)

Temperature

  • Cel degree Celsius (NOT degC)
  • [degF] degree Fahrenheit (bracketed convention)
  • K kelvin

Pressure

  • mm[Hg] millimeters of mercury (blood pressure)
  • cm[H2O] centimeters of water (respiratory pressure)
  • Pa pascal
  • kPa kilopascal

Mass Concentration (per volume)

  • mg/dL milligrams per deciliter (glucose, cholesterol)
  • mg/L milligrams per liter
  • g/L grams per liter
  • ug/dL micrograms per deciliter

Molar Concentration

  • mmol/L millimoles per liter (glucose in SI units)
  • umol/L micromoles per liter
  • mol/L moles per liter

Cell Count / Frequency

  • 10*3/uL thousand cells per microliter (WBC count)
  • 10*6/uL million cells per microliter (RBC count)
  • 10*9/L billion cells per liter (SI convention)
  • /min per minute (heart rate)
  • 1/min beats per minute (explicit)

Ratios

  • % percent
  • {ratio} dimensionless (with curly-brace annotation)
  • mL/kg/h milliliters per kilogram per hour (dosing)

The Curly-Brace Annotation

UCUM allows {annotation} inside a unit code to distinguish otherwise-identical units. {RBC}/uL and {WBC}/uL are both per-microliter counts but annotated with the cell type.

The annotation does not change the unit's mathematical meaning. It is human-readable context. Downstream systems that dispatch on the base unit still work.

For the reasons to prefer the canonical set, UCUM in Observation.valueQuantity: the strict version covers the FHIR contract.

What FHIR Actually Requires

Every valueQuantity should carry:

  • system = http://unitsofmeasure.org
  • code from the canonical set (or a valid UCUM expression outside the set)
  • unit for human display

Some servers accept alternative systems for legacy interoperability. Sending system = your organization's URL with a private unit is technically valid — and interoperability-poor. Use UCUM.

Prefer The Common Codes

Two units may represent the same measurement — mg/dL and mmol/L for glucose, for example. Pick the code your downstream consumers expect, not the one that matches your source system's rendering. That is the storage question, and it deserves its own treatment. For the trade-off, storing quantities: original unit, canonical unit, or both covers the mechanic.

The Short Version

Forty codes cover the vast majority of clinical observations. Case-sensitive. mL not ml. Cel not degC. Brackets for compound units of mercury or water pressure. Curly braces for annotations. Learn the canonical set once; save the trip to the UCUM spec on every incident.

Zellij-geometric diagram of the canonical UCUM set arranged by category — mass, volume, length, time, temperature, pressure, concentration, cell count — as a tiled unit tableau with indigo and violet accents on ivory

Sources

Aaliyah Jenkins

Interoperability specialist in Indianapolis. Covers MLLP, HL7v2 transport, and the parts of healthcare integration that haven't changed in 20 years.