Substance — Physical material in healthcare
A concrete material present in a pharmaceutical supply chain, a laboratory or a health facility: batch, expiry, quantity.
Purpose of the resource
Substance represents a concrete material: a batch of paracetamol stocked in a
pharmacy, a blood fraction, an allergen listed on a patient chart. It can be either a physical
instance (instance=true) or a type described for referencing
(instance=false, without batch or expiry).
Substance is referenced by AllergyIntolerance, Specimen, Medication (composition), AdverseEvent (cause), Group (cohort) and any other resource that needs to point at a material.
Key fields
| Field | Type | Cardinality | Role |
|---|---|---|---|
identifier | Identifier[] | 0..* | Business identifiers (batch, UDI, GTIN). |
instance | boolean | 1..1 | true = physical batch; false = abstract type. |
status | code | 0..1 | active | inactive | entered-in-error. |
category | CodeableConcept[] | 0..* | Category (drug, food, allergen, biological…). |
code | CodeableReference(SubstanceDefinition) | 1..1 | Substance type (often a reference to SubstanceDefinition). |
description | markdown | 0..1 | Free-text description. |
expiry | dateTime | 0..1 | Expiry date. |
quantity | Quantity | 0..1 | Available quantity. |
ingredient | BackboneElement[] | 0..* | Detailed components (substance + quantity). |
JSON example
{
"resourceType": "Substance",
"id": "amoxicillin-lot",
"identifier": [{
"system": "http://example.org/pharmacy/lot",
"value": "AMX-2026-042"
}],
"instance": true,
"status": "active",
"category": [{
"coding": [{
"system": "http://terminology.hl7.org/CodeSystem/substance-category",
"code": "drug",
"display": "Drug or Medicament"
}]
}],
"code": {
"concept": {
"coding": [{
"system": "http://www.nlm.nih.gov/research/umls/rxnorm",
"code": "723",
"display": "Amoxicillin"
}]
}
},
"expiry": "2027-08-31",
"quantity": {
"value": 250,
"unit": "mg"
}
} Substance vs SubstanceDefinition
| Aspect | Substance | SubstanceDefinition |
|---|---|---|
| Granularity | Instance or type | Dictionary |
| Batch | Yes | No |
| Expiry | Yes | No |
| Physical-chemical properties | No | Yes (structure, MW) |
| Use case | Hospital pharmacy, allergology | IDMP reference, research |
Common pitfalls
- Misset
instance— without this flag, it is unclear whether a batch or a type is meant. - No reference to SubstanceDefinition — loses semantic consistency.
- Substance used for badly named allergens — prefer AllergyIntolerance + Substance.
Related resources
- SubstanceDefinition — IDMP dictionary.
- AllergyIntolerance — patient allergy.
- Medication — composition.
- Specimen — sample.
- FHIR R5 hub.