ediverse Explore the platform

Spotlight PEPPOL BIS Billing 3.0 The EU e-invoicing mandate is here — France Sept 2026, Belgium Jan 2026, Germany 2025.

ObservationDefinition — Catalogue entry of an observation

The logical counterpart of SpecimenDefinition on the analyte side. Describes the catalogue entry of a laboratory or clinical measurement: LOINC code, result unit, reference ranges, analysis method, required analytic platform.

Purpose of the resource

For a lab test to be reproducible, its catalogue must carry the full set of business rules: LOINC code (or local), result unit (UCUM), reference ranges (which depend on age, sex and clinical context), analytic method (Hexokinase for glucose, GOD-PAP, ELISA, LC-MS…), analytic platform. ObservationDefinition is the FHIR carrier of that specification.

Where Observation is a real dated measurement on a patient, ObservationDefinition is the catalogue template. ServiceRequest references ObservationDefinition to order a test, and Observation cites ObservationDefinition to signal which definition was applied.

Key fields

FieldTypeCardinalityRole
urluri0..1Canonical URL.
identifierIdentifier[]0..*Business identifier (catalogue number).
versionstring0..1Semantic version.
statuscode1..1draft, active, retired, unknown.
permittedDataTypecode[]0..*Allowed types (Quantity, CodeableConcept, string, boolean, integer, Range, Ratio, SampledData, Period, dateTime).
codeCodeableConcept1..1LOINC or local code.
categoryCodeableConcept[]0..*Category (laboratory, vital-signs, imaging…).
preferredReportNamestring0..1Preferred report name.
specimenReference(SpecimenDefinition)[]0..*Required specimen.
deviceReference(DeviceDefinition)[]0..*Analytic platform.
methodCodeableConcept0..1Analysis method.
quantitativeDetailsBackboneElement0..1Quantitative details (unit, decimal precision).
qualifiedValueBackboneElement[]0..*Reference ranges and thresholds.
componentBackboneElement[]0..*Sub-components (for panels, CBC, electrolyte panel).

JSON example

Fasting glucose, LOINC 1558-6, Hexokinase method, adult normal interval 70-99 mg/dL, diabetes threshold ≥ 126 mg/dL:

json observationdefinition-example.json
{
  "resourceType": "ObservationDefinition",
  "id": "glucose-fasting",
  "url": "https://example.lab.org/ObservationDefinition/glucose-fasting",
  "identifier": [{ "system": "http://lab.example.org/catalog", "value": "GLU-F-001" }],
  "version": "2.0",
  "title": "Plasma fasting glucose",
  "status": "active",
  "experimental": false,
  "publisher": "Acme Reference Lab",
  "permittedDataType": ["Quantity"],
  "code": {
    "coding": [{
      "system": "http://loinc.org",
      "code": "1558-6",
      "display": "Fasting glucose [Mass/volume] in Serum or Plasma"
    }]
  },
  "category": [{
    "coding": [{
      "system": "http://terminology.hl7.org/CodeSystem/observation-category",
      "code": "laboratory"
    }]
  }],
  "preferredReportName": "Fasting glucose",
  "specimen": [{ "reference": "SpecimenDefinition/serum-tube-gold" }],
  "device": [{ "reference": "DeviceDefinition/chemistry-analyzer-x" }],
  "method": {
    "coding": [{
      "system": "http://snomed.info/sct",
      "code": "359789004",
      "display": "Hexokinase method"
    }]
  },
  "quantitativeDetails": {
    "unit": {
      "coding": [{
        "system": "http://unitsofmeasure.org",
        "code": "mg/dL"
      }]
    },
    "decimalPrecision": 0
  },
  "qualifiedValue": [{
    "context": {
      "coding": [{
        "system": "http://terminology.hl7.org/CodeSystem/referencerange-meaning",
        "code": "normal"
      }]
    },
    "appliesTo": [{
      "coding": [{
        "system": "http://terminology.hl7.org/CodeSystem/age-range",
        "code": "adult"
      }]
    }],
    "range": {
      "low":  { "value": 70, "unit": "mg/dL" },
      "high": { "value": 99, "unit": "mg/dL" }
    },
    "condition": "Adult, fasting"
  }, {
    "context": {
      "coding": [{
        "system": "http://terminology.hl7.org/CodeSystem/referencerange-meaning",
        "code": "high"
      }]
    },
    "range": {
      "low":  { "value": 126, "unit": "mg/dL" }
    },
    "condition": "Adult, fasting — diabetes diagnostic threshold"
  }]
}

Typical use cases

  • LOINC ordering catalogue: electronic lab order catalogue.
  • Structured pre-analytics: linked to SpecimenDefinition to describe tube + analyte.
  • Automatic interpretation: the EHR automatically applies H/L/N status from the intervals.
  • Clinical studies: protocol mandating a specific method (Hexokinase vs GOD-PAP produce different results).
  • Multi-lab reconciliation: align units and methods across labs in a network.

Common pitfalls

  • Unit missing or not UCUM: "mg%" is not UCUM. Always use mg/dL or mmol/L.
  • Range without context: the adult interval does not apply to children. Always qualify appliesTo.
  • Method forgotten: for analytes with high inter-method variability (TSH, troponin), method is critical.
  • ObservationDefinition / Observation confusion: ObservationDefinition is a reusable template, Observation is a dated measurement.
  • Decimal precision missing: a glucose in mg/dL has no meaning at 4 decimals. Specify decimalPrecision.
  • Observation — actual measurement.
  • SpecimenDefinition — required specimen.
  • ServiceRequest — test order.
  • ActivityDefinition, PlanDefinition — multi-test protocol.
  • DiagnosticReport — report bundling Observations.

See also: Observation — the actual measurement and SpecimenDefinition — required specimen.