Basic — Free extensible resource
Basic is the "escape hatch" resource of the FHIR model: it lets you represent a concept that does not (yet) have a dedicated resource, without breaking standard conformance.
Purpose
Basic exists for two uses: carry data that maps to no standard resource yet must still
be exchanged in FHIR, or prototype a future resource before it is normalised.
code identifies what the content is; everything else flows through
extension.
Basic is deliberately minimal: an extensible anchor rather than a rich structure. Using Basic in production without prior consumer agreement is risky — profiles are private and not interoperable.
Key fields
| Field | Type | Cardinality | Role |
|---|---|---|---|
identifier | Identifier[] | 0..* | External identifiers. |
code | CodeableConcept | 1..1 | Type of concept carried by this Basic resource. |
subject | Reference(Any) | 0..1 | Subject (often Patient). |
created | dateTime | 0..1 | Creation date. |
author | Reference(Practitioner | PractitionerRole | Patient | RelatedPerson | Organization) | 0..1 | Author. |
JSON example
Carrying a "referral" concept historically missing from FHIR:
{
"resourceType": "Basic",
"id": "referral-example",
"identifier": [{ "system": "http://example.org/referrals", "value": "REF-2026-001" }],
"code": {
"coding": [{
"system": "http://hl7.org/fhir/basic-resource-type",
"code": "referral",
"display": "Referral"
}]
},
"subject": { "reference": "Patient/example" },
"created": "2026-05-16",
"author": { "reference": "Practitioner/gp-lefevre" }
} Common pitfalls
- Basic in production without an implementation guide: no consumer knows what to do. Always document the expected extensions.
- Generic code: if
codeis not precise (e.g. just "other"), the content is unusable. - Migration to a normalised resource: once a Basic concept becomes a real resource (for example ServiceRequest for referrals), migrate. Keeping Basic indefinitely is tech debt.
Related resources
- StructureDefinition — to formalise expected extensions on a given Basic profile.
- Parameters — another "container" resource for operations.
- Binary — to carry an untyped payload.
See also: Binary, Parameters.