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.

Immunization — Administered vaccination

The record of a vaccine dose: product, lot, route, site, vaccination series. Key resource for vaccination passports and registries.

Purpose of the resource

Immunization documents the actual administration of a vaccine dose to a patient. Not to be confused with ImmunizationRecommendation (calendar-driven recommendation) or MedicationRequest (prescription). Immunization is a past event: the dose was injected, or refused (status=not-done), at a specific time and location.

Typical use cases: electronic vaccination record, national immunisation registry (REIVAC in France, IIS in the US), digital vaccine passport (DCC / EU Digital Covid Certificate, SMART Health Cards), epidemiological reporting and pharmacovigilance.

Key fields

FieldTypeCardinalityRole
identifierIdentifier[]0..*Local business identifier.
statuscode1..1completed, entered-in-error, not-done.
statusReasonCodeableConcept0..1Reason for not-done (contraindication, patient refusal…).
vaccineCodeCodeableConcept1..1Vaccine code. CVX (US), SNOMED CT, ATC, or national code.
administeredProductCodeableReference0..1Specific pharmaceutical product (reference to Medication).
manufacturerCodeableReference0..1Manufacturer.
lotNumberstring0..1Lot number (critical for pharmacovigilance traceability).
expirationDatedate0..1Lot expiry date.
patientReference(Patient)1..1Vaccinated subject (mandatory).
encounterReference(Encounter)0..1Associated visit.
occurrence[x]dateTime | string1..1Administration date (datetime or text if approximate).
primarySourceboolean0..1true if data comes from the vaccinator; false if copied from another record.
locationReference(Location)0..1Place of administration (clinic, pharmacy, school).
siteCodeableConcept0..1Anatomic site (LA / RA / LT / RT = left/right arm/thigh).
routeCodeableConcept0..1Route (IM, SC, intradermal, oral).
doseQuantitySimpleQuantity0..1Administered volume / dose.
performerBackboneElement[]0..*Who administered (function + actor).
reactionBackboneElement[]0..*Immediate reactions (referenced Observation).
protocolAppliedBackboneElement[]0..*Vaccine series, target disease, dose number in series.

Vaccine code systems

Code systemCoverageExample
CVX (http://hl7.org/fhir/sid/cvx)United States (CDC)208 = COVID-19 Pfizer-BioNTech mRNA 30 mcg.
SNOMED CTInternational1119349007 = SARS-CoV-2 mRNA vaccine.
ATCEurope (WHO)J07BX03 = COVID-19 vaccines.
NDCUnited States (finished product)59267-1000-3 = Pfizer product code.
CIPFrance (finished product)French CIP13 code.
EU MAH / vaccineEU (DCC)EU/1/20/1528-type codes for vaccine passport context.

JSON example

COVID-19 booster (3rd dose) Pfizer-BioNTech administered on 14 May 2026 to Patient "example", left arm, IM, 0.3 mL dose, lot EM0477:

json immunization-covid-booster.json
{
  "resourceType": "Immunization",
  "id": "covid-booster",
  "status": "completed",
  "vaccineCode": {
    "coding": [{
      "system": "http://hl7.org/fhir/sid/cvx",
      "code": "208",
      "display": "COVID-19, mRNA, LNP-S, PF, 30 mcg/0.3 mL dose"
    }, {
      "system": "http://snomed.info/sct",
      "code": "1119349007",
      "display": "Severe acute respiratory syndrome coronavirus 2 mRNA vaccine"
    }]
  },
  "administeredProduct": {
    "concept": {
      "coding": [{
        "system": "http://hl7.org/fhir/sid/ndc",
        "code": "59267-1000-3",
        "display": "Pfizer-BioNTech COVID-19 Vaccine"
      }]
    }
  },
  "manufacturer": {
    "reference": { "reference": "Organization/pfizer" }
  },
  "lotNumber": "EM0477",
  "expirationDate": "2026-11-30",
  "patient": { "reference": "Patient/example" },
  "encounter": { "reference": "Encounter/vaccination-visit" },
  "occurrenceDateTime": "2026-05-14T14:30:00+01:00",
  "primarySource": true,
  "location": { "reference": "Location/pharmacy-001" },
  "site": {
    "coding": [{
      "system": "http://terminology.hl7.org/CodeSystem/v3-ActSite",
      "code": "LA",
      "display": "Left arm"
    }]
  },
  "route": {
    "coding": [{
      "system": "http://terminology.hl7.org/CodeSystem/v3-RouteOfAdministration",
      "code": "IM",
      "display": "Intramuscular"
    }]
  },
  "doseQuantity": {
    "value": 0.3,
    "unit": "mL",
    "system": "http://unitsofmeasure.org",
    "code": "mL"
  },
  "performer": [{
    "function": {
      "coding": [{
        "system": "http://terminology.hl7.org/CodeSystem/v2-0443",
        "code": "AP",
        "display": "Administering Provider"
      }]
    },
    "actor": { "reference": "Practitioner/nurse-001" }
  }],
  "protocolApplied": [{
    "series": "COVID-19 booster",
    "targetDisease": [{
      "coding": [{
        "system": "http://snomed.info/sct",
        "code": "840539006",
        "display": "Disease caused by Severe acute respiratory syndrome coronavirus 2"
      }]
    }],
    "doseNumberPositiveInt": 3
  }]
}
  • status=completed and primarySource=true: data captured by the vaccinator, source of truth.
  • vaccineCode dual-coded CVX (USA) + SNOMED CT (international) for maximum interop.
  • administeredProduct NDC specifies the exact brand.
  • lotNumber EM0477 + expirationDate for pharmacovigilance (in case of a Pfizer lot recall).
  • protocolApplied.doseNumberPositiveInt=3 indicates this is the 3rd dose of the series.

REST API

  • GET /Immunization?patient=Patient/example — full immunisation history.
  • GET /Immunization?patient=Patient/example&status=completed&_sort=-date — recent doses sorted by date.
  • GET /Immunization?vaccine-code=208&date=ge2026-01-01 — all COVID Pfizer doses since 1 Jan 2026 (regional registry).
  • POST /Immunization — create after vaccination.
  • GET /Immunization?lot-number=EM0477 — search by lot (pharmacovigilance).
  • GET /Patient/example/$everything?_type=Immunization,AllergyIntolerance — composite for vaccination visit.

National profiles

ProfileRegulatorSpecifics
US Core ImmunizationHL7 US Realm — ONC EHRMust carry vaccineCode CVX, patient, status, occurrence[x], primarySource.
IPS ImmunizationHL7 + CEN/TC 251For international Patient Summary.
FR Core ImmunizationANSFor Mon Espace Santé. vaccineCode in SNOMED CT FR.
EU Digital Covid Certificate (DCC)European CommissionLight profile for signed digital vaccine passport.
SMART Health CardsVCI (US)Signed FHIR Bundle for vaccination proof.
AU Core ImmunizationHL7 AustraliaFor AIR (Australian Immunisation Register).

Common pitfalls

  • CVX / NDC confusion — CVX codes the vaccine (antigen and general context), NDC codes the specific pharmaceutical product (brand + dosage + packaging). Always carry both for full traceability.
  • Missing lotNumber — without a lot number, impossible to respond to a pharmacovigilance signal or lot recall.
  • Wrong primarySource — if the dose was transcribed from a paper record, set false. Otherwise registry data-quality analytics wrongly count it as primary source.
  • Missing protocolApplied — for multi-dose vaccines (COVID, HPV, hep B), forgetting doseNumberPositiveInt makes it impossible to compute schedule completion.
  • Refusal encoded as absence — a refused vaccination must be encoded with status=not-done + statusReason, not by absence of an Immunization resource. Otherwise "never offered" cannot be distinguished from "explicitly refused".
  • Free-text occurrence — avoid occurrenceString except when the date is fully unknown (legacy paper card import).
  • ImmunizationRecommendation — calendar-driven recommendations.
  • ImmunizationEvaluation — evaluation of a dose against the schedule.
  • Medication — referenced pharmaceutical product.
  • AllergyIntolerance — contraindication to check beforehand.
  • Observation — documented post-vaccination reactions.
  • Patient — vaccinated subject.