Immunization
Introduction
Scope and Usage
The Immunization resource is intended to cover the recording of current and historical administration of vaccines to patients across all healthcare disciplines in all care settings and all regions. This includes immunization of both humans and animals but does not include the administration of non-vaccine agents, even those that may have or claim to have immunological effects. While the terms "immunization" and "vaccination" are not clinically identical, for the purposes of the FHIR resources, the terms are used synonymously.
Additionally, the Immunization resource is expected to cover key concepts related to the creation, revision and querying of a patient's immunization history. This resource - through consultation with the Public Health work group - is believed to meet key use cases and information requirements as defined in the existing HL7 V2 immunization implementation guide, HL7 v3 POIZ domain and Immunization Domain Analysis Model.
Boundaries and Relationships
Administration of vaccines is intended to be handled using the Immunization resource. MedicationAdministration is intended for tracking the administration of non-vaccine medications. Some systems treat immunizations in the same way as any other medication administration. Such systems SHOULD use an immunization resource to represent these. If systems need to use a MedicationAdministration resource to capture vaccinations for workflow or other reasons, they SHOULD also expose an equivalent Immunization instance.
While the Immunization and MedicationAdministration resources are distinct, they are both able to capture specific details of the administered product. The Immunization resource uses Immunization.vaccineCode to indicate the nature of the vaccine administered to the patient. The Immunization.administeredProduct may additionally be used to identify the specific product used (either as a coded value or as a reference to a Medication resource). The Immunization resource also contains data about the administered vaccine including the manufacturer, lot number and expiration date. However, the data elements contained within Immunization are expected to only be used when Immunization.administeredProduct does not reference a Medication resource which contains the same information about the product.
Similarly, MedicationAdministration.medication references a Medication resource which is used to identify the administered product. Medication.marketingAuthorizationHolder, Medication.batch.lotNumber and Medication.batch.expirationDate are all analogous to the Immunization resource elements and are similarly used to capture details of the administered product.
Immunization.reaction may be an indication of an allergy or intolerance. If this is deemed to be the case, a separate AllergyIntolerance resource instance should be created to indicate it, as most systems will not query against past Immunization.reaction.
Some workflows may require documenting that specific educational materials were presented to the patient (or other responsible party) at the time of or before the immunization event. Conveyance of this information should be accomplished using the Communication resource. This resource can be linked to an Immunization resource and indicate the timing and nature of the educational material provided. The Communication resource may be a standalone resource or may be contained within the Immunization resource as appropriate.
StructureDefinition
Elements (Simplified)
- Immunization [0..*]: - Immunization event information
- Immunization.identifier [0..*]: Identifier Business identifier
- Immunization.basedOn [0..*]: [Reference(CarePlan](/Reference(CarePlan), MedicationRequest, ServiceRequest)) Authority that the immunization event is based on
- Immunization.status [1..1]: code required:immunization-status completed | entered-in-error | not-done
- Immunization.statusReason [0..1]: CodeableConcept example:immunization-status-reason Reason for current status
- Immunization.vaccineCode [1..1]: CodeableConcept example:vaccine-code Vaccine administered
- Immunization.administeredProduct [0..1]: CodeableReference Product that was administered
- Immunization.manufacturer [0..1]: CodeableReference Vaccine manufacturer
- Immunization.lotNumber [0..1]: string Vaccine lot number
- Immunization.expirationDate [0..1]: date Vaccine expiration date
- Immunization.patient [1..1]: Reference(Patient) Who was immunized
- Immunization.encounter [0..1]: Reference(Encounter) Encounter immunization was part of
- Immunization.supportingInformation [0..*]: Reference(Resource) Additional information in support of the immunization
- Immunization.occurrence[x] [1..1]: dateTime, string Vaccine administration date
- Immunization.primarySource [0..1]: boolean Indicates context the data was captured in
- Immunization.informationSource [0..1]: CodeableReference example:immunization-origin Indicates the source of a reported record
- Immunization.location [0..1]: Reference(Location) The service delivery location
- Immunization.site [0..1]: CodeableConcept example:immunization-site Body site vaccine was administered
- Immunization.route [0..1]: CodeableConcept example:immunization-route How vaccine entered body
- Immunization.doseQuantity [0..1]: Quantity(SimpleQuantity) Amount of vaccine administered
- Immunization.performer [0..*]: BackboneElement Who performed event
- Immunization.performer.function [0..1]: CodeableConcept extensible:immunization-function Type of performance
- Immunization.performer.actor [1..1]: [Reference(Practitioner](/Reference(Practitioner), PractitionerRole, Organization, Patient, RelatedPerson)) Individual or organization who performed the event
- Immunization.note [0..*]: Annotation Additional immunization notes
- Immunization.reason [0..*]: CodeableReference example:immunization-reason Why immunization occurred
- Immunization.isSubpotent [0..1]: boolean Dose potency
- Immunization.subpotentReason [0..*]: CodeableConcept example:immunization-subpotent-reason Reason for being subpotent
- Immunization.programEligibility [0..*]: BackboneElement Patient eligibility for a specific vaccination program
- Immunization.programEligibility.program [1..1]: CodeableConcept example:immunization-vaccine-funding-program The program that eligibility is declared for
- Immunization.programEligibility.programStatus [1..1]: CodeableConcept example:immunization-program-eligibility The patient's eligibility status for the program
- Immunization.fundingSource [0..1]: CodeableConcept example:immunization-funding-source Funding source for the vaccine
- Immunization.reaction [0..*]: BackboneElement Details of a reaction that followed the immunization
- Immunization.reaction.date [0..1]: dateTime When reaction started
- Immunization.reaction.manifestation [0..1]: CodeableReference Additional information on reaction
- Immunization.reaction.reported [0..1]: boolean Indicates self-reported reaction
- Immunization.protocolApplied [0..*]: BackboneElement Protocol followed by the provider
- Immunization.protocolApplied.series [0..1]: string Name of vaccine series
- Immunization.protocolApplied.authority [0..1]: Reference(Organization) Who is responsible for publishing the recommendations
- Immunization.protocolApplied.targetDisease [0..*]: CodeableConcept example:immunization-target-disease Vaccine preventable disease being targeted
- Immunization.protocolApplied.doseNumber [0..1]: CodeableConcept Dose number within series
- Immunization.protocolApplied.seriesDoses [0..1]: CodeableConcept Recommended number of doses for immunity
Mappings
- Immunization Mappings — 102 mapping entries
Implementation Guide
implementationguide-Immunization-core.xml
<?xml version="1.0" encoding="UTF-8"?>
<ImplementationGuide xmlns="http://hl7.org/fhir">
<id value="Immunization-core"/>
<version value="0.01"/>
<name value="ImmunizationHL7Extensions"/>
<title value="Immunization H L7 Extensions"/>
<status value="draft"/>
<date value="1970-01-01T10:00:00+10:00"/>
<publisher value="HL7"/>
<description value="Defines common extensions used with or related to the Immunization resource"/>
</ImplementationGuide>
Resource Packs
list-Immunization-packs.xml
<?xml version="1.0" encoding="UTF-8"?>
<List xmlns="http://hl7.org/fhir" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://hl7.org/fhir ../../publish/List.xsd">
<id value="Immunization-packs"/>
<status value="current"/>
<mode value="working"/>
<entry>
<item>
<reference value="ImplementationGuide/Immunization-core"/>
</item>
</entry>
</List>
Search Parameters
- date — date — Vaccination (non)-Administration Date —
(Immunization.occurrence.ofType(dateTime)) - encounter — reference — The Encounter this Immunization was part of —
Immunization.encounter - identifier — token — Business identifier —
Immunization.identifier - location — reference — The service delivery location or facility in which the vaccine was / was to be administered —
Immunization.location - lot-number — string — Vaccine Lot Number —
Immunization.lotNumber - manufacturer — reference — Vaccine Manufacturer —
Immunization.manufacturer.reference - patient — reference — The patient for the vaccination record —
Immunization.patient - performer — reference — The practitioner, individual or organization who played a role in the vaccination —
Immunization.performer.actor - reaction — reference — Additional information on reaction —
Immunization.reaction.manifestation.reference - reaction-date — date — When reaction started —
Immunization.reaction.date - reason-code — token — Reason why the vaccine was administered —
Immunization.reason.concept - reason-reference — reference — Reference to a resource (by instance) —
Immunization.reason.reference - series — string — The series being followed by the provider —
Immunization.protocolApplied.series - status — token — Immunization event status —
Immunization.status - status-reason — token — Reason why the vaccine was not administered —
Immunization.statusReason - target-disease — token — The target disease the dose is being administered against —
Immunization.protocolApplied.targetDisease - vaccine-code — token — Vaccine Product Administered —
Immunization.vaccineCode
Examples
- example — immunization-example — Example of Immunization
- historical — immunization-example-historical — Example of a Historical Example
- immunization-example — immunization-example
- immunization-example-historical — immunization-example-historical
- immunization-example-protocol — immunization-example-protocol
- immunization-example-reaction — immunization-example-reaction
- immunization-example-refused — immunization-example-refused
- immunization-example-subpotent — immunization-example-subpotent
- immunization-examples-header — immunization-examples-header
- notGiven — immunization-example-refused — Not Given Immunization Example
- protocol — immunization-example-protocol — Example where the provider indicates the protocol being followed
- reaction — immunization-example-reaction — Example of Immunization with a Reaction
- subpotent — immunization-example-subpotent — Example of a Subpotent Dose
Mapping Exceptions
immunization-event-mapping-exceptions.xml
Divergent Elements
- Event.identifier → Immunization.identifier
- summary | reason=Unknown | pattern=true
- shortUnmatched | reason=Unknown | pattern=Business identifier for immunization | resource=Business identifier
- definitionUnmatched | reason=Unknown | pattern=Business identifiers assigned to this immunization by the performer and/or other systems. These identifiers remain constant as the resource is updated and propagates from server to server. | resource=A unique identifier assigned to this immunization record.
- commentsUnmatched | reason=Unknown | pattern=Note: This is a business identifier, not a resource identifier (see discussion). It is best practice for the identifier to only appear on a single resource instance, however business practices may occasionally dictate that multiple resource instances with the same identifier can exist - possibly even with different resource types. For example, multiple Patient and a Person resource instance might share the same social insurance number.
- requirementsUnmatched | reason=Unknown | pattern=Allows identification of the immunization as it is known by various participating systems and in a way that remains consistent across servers.
- Event.basedOn → Immunization.basedOn
- missingTypes | reason=Unknown | pattern=Reference(Request)
- extraTypes | reason=Unknown
- shortUnmatched | reason=Unknown | pattern=Fulfills plan, proposal or order | resource=Authority that the immunization event is based on
- definitionUnmatched | reason=Unknown | pattern=A plan, proposal or order that is fulfilled in whole or in part by this immunization. | resource=A plan, order or recommendation fulfilled in whole or in part by this immunization.
- requirementsUnmatched | reason=Unknown | pattern=Allows tracing of authorization for the immunization and tracking whether proposals/recommendations were acted upon.
- Event.status → Immunization.status
- shortUnmatched | reason=Unknown | pattern=preparation | in-progress | not-done | suspended | aborted | completed | entered-in-error | unknown | resource=completed | entered-in-error | not-done
- definitionUnmatched | reason=Unknown | pattern=The current state of the immunization. | resource=Indicates the current status of the immunization event.
- commentsUnmatched | reason=Unknown | pattern=A nominal state-transition diagram can be found in the (Event pattern documentation
Unknown does not represent "other" - one of the defined statuses must apply. Unknown is used when the authoring system is not sure what the current status is. | resource=Will generally be set to show that the immunization has been completed or not done. This element is labeled as a modifier because the status contains codes that mark the resource as not currently valid.
- Event.statusReason → Immunization.statusReason
- definitionUnmatched | reason=Unknown | pattern=Captures the reason for the current state of the immunization. | resource=Indicates the reason the immunization event was not performed.
- commentsUnmatched | reason=Unknown | pattern=This is generally only used for "exception" statuses such as "not-done", "suspended" or "cancelled". The reason for performing the event at all is captured in reasonCode, not here. . | resource=This is generally only used for the status of "not-done". The reason for performing the immunization event is captured in reasonCode, not here.
- Event.code → Immunization.vaccineCode
- shortUnmatched | reason=Unknown | pattern=What service was done | resource=Vaccine administered
- definitionUnmatched | reason=Unknown | pattern=A code that identifies the specific service or action that was or is being performed. | resource=Vaccine that was administered or was to be administered.
- Event.code → Immunization.administeredProduct
- missingTypes | reason=Unknown | pattern=CodeableConcept
- extraTypes | reason=Unknown
- summary | reason=Unknown | pattern=true
- shortUnmatched | reason=Unknown | pattern=What service was done | resource=Product that was administered
- definitionUnmatched | reason=Unknown | pattern=A code that identifies the specific service or action that was or is being performed. | resource=An indication of which product was administered to the patient. This is typically a more detailed representation of the concept conveyed by the vaccineCode data element. If a Medication resource is referenced, it may be to a stand-alone resource or a contained resource within the Immunization resource.
- Event.subject → Immunization.patient
- missingTypes | reason=Unknown | pattern=Reference(Group)
- shortUnmatched | reason=Unknown | pattern=Individual service was done for/to | resource=Who was immunized
- definitionUnmatched | reason=Unknown | pattern=The individual or set of individuals the action is being or was performed on. | resource=The patient who either received or did not receive the immunization.
- requirementsUnmatched | reason=Unknown | pattern=Links the immunization to the Patient context. May also affect access control.
- Event.encounter → Immunization.encounter
- summary | reason=Unknown | pattern=true
- shortUnmatched | reason=Unknown | pattern=Encounter the immunization is part of | resource=Encounter immunization was part of
- definitionUnmatched | reason=Unknown | pattern=The Encounter during which this immunization was created or to which the creation of this record is tightly associated. | resource=The visit or admission or other contact between patient and health care provider the immunization was performed as part of.
- commentsUnmatched | reason=Unknown | pattern=This will typically be the encounter the immunization was created during, but some immunizations may be initiated prior to or after the official completion of an encounter but still be tied to the context of the encounter (e.g. pre-admission lab tests).
- requirementsUnmatched | reason=Unknown | pattern=Links the immunization to the Encounter context. May also affect access control.
- Event.occurrence[x] → Immunization.occurrence[x]
- missingTypes | reason=Unknown | pattern=Period, Timing
- extraTypes | reason=Unknown
- shortUnmatched | reason=Unknown | pattern=When immunization occurred/is occurring | resource=Vaccine administration date
- definitionUnmatched | reason=Unknown | pattern=The date, period or timing when the immunization did occur or is occurring. | resource=Date vaccine administered or was to be administered.
- commentsUnmatched | reason=Unknown | pattern=This indicates when the activity actually occurred or is occurring, not when it was asked/requested/ordered to occur. For the latter, look at the occurence element of the Request this {{event}} is "basedOn". The status code allows differentiation of whether the timing reflects a historic event or an ongoing event. Ongoing events should not include an upper bound in the Period or Timing.bounds. . | resource=When immunizations are given, a specific date and time should always be recorded if known. If the time is not known, it should not be included. However, systems primarily rely on the date component of the immunization record for determining dose validity and future dose forecasting. For this reason, immunization records should preserve the immunization date as recorded for the time zone where the dose was administered. Care should be taken when recording and transmitting time and time zone information, as adjustments based on time zone can shift the recorded date. Additionally, because Patient.birthDate does not include a time component, systems should ensure that comparisons between occurrence date and birth date do not introduce inconsistencies in determining patient age at vaccination. When immunizations are patient reported, a specific date might not be known. Although partial dates are allowed, an adult patient might not be able to recall the year a childhood immunization was given. An exact date is always preferable, but the use of the String data type is acceptable when an exact date is not known. A small number of vaccines (e.g. live oral typhoid vaccine) are given as a series of patient self-administered dose over a span of time. In cases like this, often, only the first dose (typically a provider supervised dose) is recorded with the occurrence indicating the date/time of the first dose.
- Event.reported[x] → Immunization.primarySource
- missingTypes | reason=Unknown | pattern=Reference(Patient, RelatedPerson, Practitioner, PractitionerRole, Organization)
- shortUnmatched | reason=Unknown | pattern=Reported rather than primary record | resource=Indicates context the data was captured in
- definitionUnmatched | reason=Unknown | pattern=Indicates if this record was captured as a secondary 'reported' record rather than as an original primary source-of-truth record. It may also indicate the source of the report. | resource=Indicates whether the data contained in the resource was captured by the individual/organization which was responsible for the administration of the vaccine rather than as 'secondary reported' data documented by a third party. A value of 'true' means this data originated with the individual/organization which was responsible for the administration of the vaccine.
- requirementsUnmatched | reason=Unknown | pattern=Reported data may have different rules on editing and may be visually distinguished from primary data.
- Event.reported[x] → Immunization.informationSource
- missingTypes | reason=Unknown | pattern=boolean, Reference(Patient, RelatedPerson, Practitioner, PractitionerRole, Organization)
- extraTypes | reason=Unknown
- summary | reason=Unknown | pattern=true
- shortUnmatched | reason=Unknown | pattern=Reported rather than primary record | resource=Indicates the source of a reported record
- definitionUnmatched | reason=Unknown | pattern=Indicates if this record was captured as a secondary 'reported' record rather than as an original primary source-of-truth record. It may also indicate the source of the report. | resource=Typically the source of the data when the report of the immunization event is not based on information from the person who administered the vaccine.
- requirementsUnmatched | reason=Unknown | pattern=Reported data may have different rules on editing and may be visually distinguished from primary data.
- Event.performer → Immunization.performer
- extraTypes | reason=Unknown
- shortUnmatched | reason=Unknown | pattern=Who performed immunization and what they did | resource=Who performed event
- definitionUnmatched | reason=Unknown | pattern=Indicates who or what performed the immunization and how they were involved. | resource=Indicates who performed the immunization event.
- Event.performer.function → Immunization.performer.function
- bindingStrength | reason=Unknown | pattern=example
- definitionUnmatched | reason=Unknown | pattern=Distinguishes the type of involvement of the performer in the immunization.. | resource=Describes the function played by the performer in the immunization event (e.g. ordering provider, administering provider, etc.).
- requirementsUnmatched | reason=Unknown | pattern=Allows disambiguation of the types of involvement of different performers.
- Event.performer.actor → Immunization.performer.actor
- missingTypes | reason=Unknown | pattern=Reference(CareTeam, Device)
- shortUnmatched | reason=Unknown | pattern=Who performed immunization | resource=Individual or organization who performed the event
- definitionUnmatched | reason=Unknown | pattern=Indicates who or what performed the immunization. | resource=The practitioner or organization who performed the action.
- Event.location → Immunization.location
- summary | reason=Unknown | pattern=true
- shortUnmatched | reason=Unknown | pattern=Where immunization occurred | resource=The service delivery location
- definitionUnmatched | reason=Unknown | pattern=The principal physical location where the immunization was performed. | resource=The service delivery location where the vaccine administration occurred.
- requirementsUnmatched | reason=Unknown | pattern=Ties the event to where the records are likely kept and provides context around the event occurrence (e.g. if it occurred inside or outside a dedicated healthcare setting).
- Event.reason → Immunization.reason
- summary | reason=Unknown | pattern=true
- shortUnmatched | reason=Unknown | pattern=Why was immunization performed? | resource=Why immunization occurred
- definitionUnmatched | reason=Unknown | pattern=Describes why the immunization occurred in coded or textual form or Indicates another resource whose existence justifies this immunization. | resource=Describes why the immunization occurred in coded or textual form, or indicates another resource (Condition, Observation or DiagnosticReport) whose existence justifies this immunization.
- commentsUnmatched | reason=Unknown | pattern=Textual reasons can be captured using reasonCode.text.
- Event.note → Immunization.note
- summary | reason=Unknown | pattern=false
- shortUnmatched | reason=Unknown | pattern=Comments made about the event | resource=Additional immunization notes
- definitionUnmatched | reason=Unknown | pattern=Comments made about the immunization by the performer, subject or other participants. | resource=Extra information about the immunization that is not conveyed by the other attributes.
Unmapped Elements
- Event.partOf — Unknown
- Event.relevantHistory — Unknown
- Event.category — Unknown
- Event.recorded — Unknown
- Event.product — Unknown
immunization-fivews-mapping-exceptions.xml
Divergent Elements
- FiveWs.context → Immunization.supportingInformation
Unmapped Elements
- FiveWs.recorded — Unknown
- FiveWs.author — Unknown
- FiveWs.cause — Unknown
- FiveWs.version — Unknown
- FiveWs.witness — Unknown
- FiveWs.class — Unknown
- FiveWs.init — Unknown
- FiveWs.why — Unknown
- FiveWs.who — Unknown
- FiveWs.grade — Unknown
- FiveWs.planned — Unknown