US Core Implementation Guide
4.1.0 - STU4 Ballot

This page is part of the US Core (v4.1.0: STU5 Ballot 1) based on FHIR R4. The current version which supercedes this version is 5.0.1. For a full list of available versions, see the Directory of published versions

Resource Profile: US Core Immunization Profile

Defining URL:http://hl7.org/fhir/us/core/StructureDefinition/us-core-immunization
Version:4.1.0
Name:USCoreImmunizationProfile
Title:US Core Immunization Profile
Status:Active as of 8/26/19
Definition:

Defines constraints and extensions on the Immunization resource for the minimal set of data to query and retrieve patient's immunization information.

Publisher:HL7 International - Cross-Group Projects
Copyright:

Used by permission of HL7 International, all rights reserved Creative Commons License

Source Resource:XML / JSON / Turtle

The official URL for this profile is:

http://hl7.org/fhir/us/core/StructureDefinition/us-core-immunization

This profile sets minimum expectations for the Immunization resource to record, fetch and search immunization history associated with a patient. It identifies which core elements, extensions, vocabularies and value sets SHALL be present in the resource when using this profile.

Example Usage Scenarios:

The following are example usage scenarios for the US Core-Core Immunization profile:

  • Query for immunizations belonging to a Patient
  • Record or update immunizations belonging to a Patient

Mandatory and Must Support Data Elements

The following data-elements must always be present (Mandatory definition]) or must be supported if the data is present in the sending system (Must Support definition). They are presented below in a simple human-readable explanation. Profile specific guidance and examples are provided as well. The Formal Profile Definition below provides the formal summary, definitions, and terminology requirements.

Each Immunization must have:

  1. a status*
  2. a vaccine code that identifies the kind of vaccine administered
  3. a date the vaccine was administered
  4. a patient

Each Immunization must support:

  1. a statusReason if the vaccine wasn’t given
  2. a flag to indicate whether the vaccine was reported by someone other than the person who administered the vaccine.

Profile specific implementation guidance:

  • Use the status code: not-done to represent that an immunization was not given.
  • Based upon the ONC U.S. Core Data for Interoperability (USCDI) v1 requirements, CVX vaccine codes are required and the NDC vaccine codes SHOULD be supported as a translation.
    • Be aware that there is 10-digit (with dashes) NDC format displayed on drug packaging and an 11-digit (no dashes) NDC format for billing and prescribing (for example “49281-121-65” and “49281012165”). Normalization may be required to avoid validation errors and warnings.
    • CDC provides the CDC National Drug Code (NDC) Directory – Vaccine NDC Linker Table to assist implementers. The example Immunization-imm-1 illustrates using both the CVX and 11 digit NDC codes based upon this table.
    • Note that the CVX code system contains some concepts that are procedures, medications, or substances rather than immunizations. Implementers should not use these non-vaccine-related CVX codes.

Examples

Formal Views of Profile Content

Description of Profiles, Differentials, Snapshots and how the different presentations work.

This structure is derived from Immunization

Summary

Mandatory: 1 element
Must-Support: 6 elements

Structures

This structure refers to these other structures:

This structure is derived from Immunization

NameFlagsCard.TypeDescription & Constraintsdoco
.. Immunization 0..*ImmunizationImmunization event information
... status S1..1codecompleted | entered-in-error | not-done
Binding: ImmunizationStatusCodes (required)
... statusReason S0..1CodeableConceptReason not done
Binding: ImmunizationStatusReasonCodes (example)
... vaccineCode SI1..1CodeableConceptVaccine Product Type (bind to CVX)
Binding: CVX Vaccines Administered Vaccine Set (extensible)
us-core-1: SHOULD have a translation to the NDC value set
... patient S1..1Reference(US Core Patient Profile)Who was immunized
... occurrence[x] S1..1Vaccine administration date
.... occurrenceDateTimedateTime S
.... occurrenceStringstring
... primarySource S1..1booleanIndicates context the data was recorded in

doco Documentation for this format
NameFlagsCard.TypeDescription & Constraintsdoco
.. Immunization 0..*ImmunizationImmunization event information
... id Σ0..1stringLogical id of this artifact
... meta Σ0..1MetaMetadata about the resource
... implicitRules ?!Σ0..1uriA set of rules under which this content was created
... language 0..1codeLanguage of the resource content
Binding: CommonLanguages (preferred)
Max Binding: AllLanguages: A human language.

... text 0..1NarrativeText summary of the resource, for human interpretation
... contained 0..*ResourceContained, inline Resources
... extension 0..*ExtensionAdditional content defined by implementations
... modifierExtension ?!0..*ExtensionExtensions that cannot be ignored
... identifier 0..*IdentifierBusiness identifier
... status ?!SΣ1..1codecompleted | entered-in-error | not-done
Binding: ImmunizationStatusCodes (required)
... statusReason S0..1CodeableConceptReason not done
Binding: ImmunizationStatusReasonCodes (example)
... vaccineCode SΣI1..1CodeableConceptVaccine Product Type (bind to CVX)
Binding: CVX Vaccines Administered Vaccine Set (extensible)
us-core-1: SHOULD have a translation to the NDC value set
... patient SΣ1..1Reference(US Core Patient Profile)Who was immunized
... encounter 0..1Reference(Encounter)Encounter immunization was part of
... occurrence[x] SΣ1..1Vaccine administration date
.... occurrenceDateTimedateTime S
.... occurrenceStringstring
... recorded 0..1dateTimeWhen the immunization was first captured in the subject's record
... primarySource SΣ1..1booleanIndicates context the data was recorded in
... reportOrigin 0..1CodeableConceptIndicates the source of a secondarily reported record
Binding: ImmunizationOriginCodes (example): The source of the data for a record which is not from a primary source.

... location 0..1Reference(Location)Where immunization occurred
... manufacturer 0..1Reference(Organization)Vaccine manufacturer
... lotNumber 0..1stringVaccine lot number
... expirationDate 0..1dateVaccine expiration date
... site 0..1CodeableConceptBody site vaccine was administered
Binding: CodesForImmunizationSiteOfAdministration (example): The site at which the vaccine was administered.

... route 0..1CodeableConceptHow vaccine entered body
Binding: ImmunizationRouteCodes (example): The route by which the vaccine was administered.

... doseQuantity 0..1SimpleQuantityAmount of vaccine administered
... performer Σ0..*BackboneElementWho performed event
.... id 0..1stringUnique id for inter-element referencing
.... extension 0..*ExtensionAdditional content defined by implementations
.... modifierExtension ?!Σ0..*ExtensionExtensions that cannot be ignored even if unrecognized
.... function Σ0..1CodeableConceptWhat type of performance was done
Binding: ImmunizationFunctionCodes (extensible): The role a practitioner or organization plays in the immunization event.

.... actor Σ1..1Reference(Practitioner | PractitionerRole | Organization)Individual or organization who was performing
... note Σ0..*AnnotationAdditional immunization notes
... reasonCode 0..*CodeableConceptWhy immunization occurred
Binding: ImmunizationReasonCodes (example): The reason why a vaccine was administered.


... reasonReference 0..*Reference(Condition | Observation | DiagnosticReport)Why immunization occurred
... isSubpotent ?!Σ0..1booleanDose potency
... subpotentReason 0..*CodeableConceptReason for being subpotent
Binding: ImmunizationSubpotentReason (example): The reason why a dose is considered to be subpotent.


... education I0..*BackboneElementEducational material presented to patient
imm-1: One of documentType or reference SHALL be present
.... id 0..1stringUnique id for inter-element referencing
.... extension 0..*ExtensionAdditional content defined by implementations
.... modifierExtension ?!Σ0..*ExtensionExtensions that cannot be ignored even if unrecognized
.... documentType 0..1stringEducational material document identifier
.... reference 0..1uriEducational material reference pointer
.... publicationDate 0..1dateTimeEducational material publication date
.... presentationDate 0..1dateTimeEducational material presentation date
... programEligibility 0..*CodeableConceptPatient eligibility for a vaccination program
Binding: ImmunizationProgramEligibility (example): The patient's eligibility for a vaccation program.


... fundingSource 0..1CodeableConceptFunding source for the vaccine
Binding: ImmunizationFundingSource (example): The source of funding used to purchase the vaccine administered.

... reaction 0..*BackboneElementDetails of a reaction that follows immunization
.... id 0..1stringUnique id for inter-element referencing
.... extension 0..*ExtensionAdditional content defined by implementations
.... modifierExtension ?!Σ0..*ExtensionExtensions that cannot be ignored even if unrecognized
.... date 0..1dateTimeWhen reaction started
.... detail 0..1Reference(Observation)Additional information on reaction
.... reported 0..1booleanIndicates self-reported reaction
... protocolApplied 0..*BackboneElementProtocol followed by the provider
.... id 0..1stringUnique id for inter-element referencing
.... extension 0..*ExtensionAdditional content defined by implementations
.... modifierExtension ?!Σ0..*ExtensionExtensions that cannot be ignored even if unrecognized
.... series 0..1stringName of vaccine series
.... authority 0..1Reference(Organization)Who is responsible for publishing the recommendations
.... targetDisease 0..*CodeableConceptVaccine preventatable disease being targetted
Binding: ImmunizationTargetDiseaseCodes (example): The vaccine preventable disease the dose is being administered for.


.... doseNumber[x] 1..1Dose number within series
..... doseNumberPositiveIntpositiveInt
..... doseNumberStringstring
.... seriesDoses[x] 0..1Recommended number of doses for immunity
..... seriesDosesPositiveIntpositiveInt
..... seriesDosesStringstring

doco Documentation for this format
NameFlagsCard.TypeDescription & Constraintsdoco
.. Immunization 0..*ImmunizationImmunization event information
... status ?!Σ1..1codecompleted | entered-in-error | not-done
Binding: ImmunizationStatusCodes (required)
... statusReason 0..1CodeableConceptReason not done
Binding: ImmunizationStatusReasonCodes (example)
... vaccineCode ΣI1..1CodeableConceptVaccine Product Type (bind to CVX)
Binding: CVX Vaccines Administered Vaccine Set (extensible)
us-core-1: SHOULD have a translation to the NDC value set
... patient Σ1..1Reference(US Core Patient Profile)Who was immunized
... occurrence[x] Σ1..1Vaccine administration date
.... occurrenceDateTimedateTime
... primarySource Σ1..1booleanIndicates context the data was recorded in

doco Documentation for this format

This structure is derived from Immunization

Summary

Mandatory: 1 element
Must-Support: 6 elements

Structures

This structure refers to these other structures:

Differential View

This structure is derived from Immunization

NameFlagsCard.TypeDescription & Constraintsdoco
.. Immunization 0..*ImmunizationImmunization event information
... status S1..1codecompleted | entered-in-error | not-done
Binding: ImmunizationStatusCodes (required)
... statusReason S0..1CodeableConceptReason not done
Binding: ImmunizationStatusReasonCodes (example)
... vaccineCode SI1..1CodeableConceptVaccine Product Type (bind to CVX)
Binding: CVX Vaccines Administered Vaccine Set (extensible)
us-core-1: SHOULD have a translation to the NDC value set
... patient S1..1Reference(US Core Patient Profile)Who was immunized
... occurrence[x] S1..1Vaccine administration date
.... occurrenceDateTimedateTime S
.... occurrenceStringstring
... primarySource S1..1booleanIndicates context the data was recorded in

doco Documentation for this format

Snapshot View

NameFlagsCard.TypeDescription & Constraintsdoco
.. Immunization 0..*ImmunizationImmunization event information
... id Σ0..1stringLogical id of this artifact
... meta Σ0..1MetaMetadata about the resource
... implicitRules ?!Σ0..1uriA set of rules under which this content was created
... language 0..1codeLanguage of the resource content
Binding: CommonLanguages (preferred)
Max Binding: AllLanguages: A human language.

... text 0..1NarrativeText summary of the resource, for human interpretation
... contained 0..*ResourceContained, inline Resources
... extension 0..*ExtensionAdditional content defined by implementations
... modifierExtension ?!0..*ExtensionExtensions that cannot be ignored
... identifier 0..*IdentifierBusiness identifier
... status ?!SΣ1..1codecompleted | entered-in-error | not-done
Binding: ImmunizationStatusCodes (required)
... statusReason S0..1CodeableConceptReason not done
Binding: ImmunizationStatusReasonCodes (example)
... vaccineCode SΣI1..1CodeableConceptVaccine Product Type (bind to CVX)
Binding: CVX Vaccines Administered Vaccine Set (extensible)
us-core-1: SHOULD have a translation to the NDC value set
... patient SΣ1..1Reference(US Core Patient Profile)Who was immunized
... encounter 0..1Reference(Encounter)Encounter immunization was part of
... occurrence[x] SΣ1..1Vaccine administration date
.... occurrenceDateTimedateTime S
.... occurrenceStringstring
... recorded 0..1dateTimeWhen the immunization was first captured in the subject's record
... primarySource SΣ1..1booleanIndicates context the data was recorded in
... reportOrigin 0..1CodeableConceptIndicates the source of a secondarily reported record
Binding: ImmunizationOriginCodes (example): The source of the data for a record which is not from a primary source.

... location 0..1Reference(Location)Where immunization occurred
... manufacturer 0..1Reference(Organization)Vaccine manufacturer
... lotNumber 0..1stringVaccine lot number
... expirationDate 0..1dateVaccine expiration date
... site 0..1CodeableConceptBody site vaccine was administered
Binding: CodesForImmunizationSiteOfAdministration (example): The site at which the vaccine was administered.

... route 0..1CodeableConceptHow vaccine entered body
Binding: ImmunizationRouteCodes (example): The route by which the vaccine was administered.

... doseQuantity 0..1SimpleQuantityAmount of vaccine administered
... performer Σ0..*BackboneElementWho performed event
.... id 0..1stringUnique id for inter-element referencing
.... extension 0..*ExtensionAdditional content defined by implementations
.... modifierExtension ?!Σ0..*ExtensionExtensions that cannot be ignored even if unrecognized
.... function Σ0..1CodeableConceptWhat type of performance was done
Binding: ImmunizationFunctionCodes (extensible): The role a practitioner or organization plays in the immunization event.

.... actor Σ1..1Reference(Practitioner | PractitionerRole | Organization)Individual or organization who was performing
... note Σ0..*AnnotationAdditional immunization notes
... reasonCode 0..*CodeableConceptWhy immunization occurred
Binding: ImmunizationReasonCodes (example): The reason why a vaccine was administered.


... reasonReference 0..*Reference(Condition | Observation | DiagnosticReport)Why immunization occurred
... isSubpotent ?!Σ0..1booleanDose potency
... subpotentReason 0..*CodeableConceptReason for being subpotent
Binding: ImmunizationSubpotentReason (example): The reason why a dose is considered to be subpotent.


... education I0..*BackboneElementEducational material presented to patient
imm-1: One of documentType or reference SHALL be present
.... id 0..1stringUnique id for inter-element referencing
.... extension 0..*ExtensionAdditional content defined by implementations
.... modifierExtension ?!Σ0..*ExtensionExtensions that cannot be ignored even if unrecognized
.... documentType 0..1stringEducational material document identifier
.... reference 0..1uriEducational material reference pointer
.... publicationDate 0..1dateTimeEducational material publication date
.... presentationDate 0..1dateTimeEducational material presentation date
... programEligibility 0..*CodeableConceptPatient eligibility for a vaccination program
Binding: ImmunizationProgramEligibility (example): The patient's eligibility for a vaccation program.


... fundingSource 0..1CodeableConceptFunding source for the vaccine
Binding: ImmunizationFundingSource (example): The source of funding used to purchase the vaccine administered.

... reaction 0..*BackboneElementDetails of a reaction that follows immunization
.... id 0..1stringUnique id for inter-element referencing
.... extension 0..*ExtensionAdditional content defined by implementations
.... modifierExtension ?!Σ0..*ExtensionExtensions that cannot be ignored even if unrecognized
.... date 0..1dateTimeWhen reaction started
.... detail 0..1Reference(Observation)Additional information on reaction
.... reported 0..1booleanIndicates self-reported reaction
... protocolApplied 0..*BackboneElementProtocol followed by the provider
.... id 0..1stringUnique id for inter-element referencing
.... extension 0..*ExtensionAdditional content defined by implementations
.... modifierExtension ?!Σ0..*ExtensionExtensions that cannot be ignored even if unrecognized
.... series 0..1stringName of vaccine series
.... authority 0..1Reference(Organization)Who is responsible for publishing the recommendations
.... targetDisease 0..*CodeableConceptVaccine preventatable disease being targetted
Binding: ImmunizationTargetDiseaseCodes (example): The vaccine preventable disease the dose is being administered for.


.... doseNumber[x] 1..1Dose number within series
..... doseNumberPositiveIntpositiveInt
..... doseNumberStringstring
.... seriesDoses[x] 0..1Recommended number of doses for immunity
..... seriesDosesPositiveIntpositiveInt
..... seriesDosesStringstring

doco Documentation for this format

 

Other representations of profile: CSV, Excel, Schematron

Terminology Bindings

PathConformanceValueSet
Immunization.languagepreferredCommonLanguages
Max Binding: AllLanguages
Immunization.statusrequiredImmunizationStatusCodes
Immunization.statusReasonexampleImmunizationStatusReasonCodes
Immunization.vaccineCodeextensibleCVX Vaccines Administered Vaccine Set
Immunization.reportOriginexampleImmunizationOriginCodes
Immunization.siteexampleCodesForImmunizationSiteOfAdministration
Immunization.routeexampleImmunizationRouteCodes
Immunization.performer.functionextensibleImmunizationFunctionCodes
Immunization.reasonCodeexampleImmunizationReasonCodes
Immunization.subpotentReasonexampleImmunizationSubpotentReason
Immunization.programEligibilityexampleImmunizationProgramEligibility
Immunization.fundingSourceexampleImmunizationFundingSource
Immunization.protocolApplied.targetDiseaseexampleImmunizationTargetDiseaseCodes

Constraints

IdPathDetailsRequirements
us-core-1Immunization.vaccineCodeSHOULD have a translation to the NDC value set
: coding.where(system='http://hl7.org/fhir/sid/ndc').empty()
imm-1Immunization.educationOne of documentType or reference SHALL be present
: documentType.exists() or reference.exists()

Notes:


Quick Start


Below is an overview of the required Server RESTful FHIR interactions for this profile - for example, search and read operations - when supporting the US Core interactions to access this profile’s information (Profile Support + Interaction Support). Note that systems that support only US Core Profiles (Profile Only Support) are not required to support these interactions. See the US Core Server CapabilityStatement for a complete list of supported RESTful interactions for this IG.

  • The syntax used to describe the interactions is described here.
  • See the General Guidance section for additional rules and expectations when a server requires status parameters.
  • See the General Guidance section for additional guidance on searching for multiple patients.

Mandatory Search Parameters:

The following search parameters and search parameter combinations SHALL be supported:

  1. SHALL support searching for all immunizations for a patient using the patient search parameter:

    GET [base]/Immunization?patient={Type/}[id]

    Example:

    1. GET [base]/Immunization?patient=1137192

    Implementation Notes: Fetches a bundle of all Immunization resources for the specified patient (how to search by reference)

Optional Search Parameters:

The following search parameter combinations SHOULD be supported:

  1. SHOULD support searching using the combination of the patient and date search parameters:
    • including support for these date comparators: gt,lt,ge,le
    • including optional support for AND search on date (e.g.date=[date]&date=[date]]&...)

    GET [base]/Immunization?patient={Type/}[id]&date={gt|lt|ge|le}[date]{&date={gt|lt|ge|le}[date]&...}

    Example:

    1. GET [base]/Immunization?patient=1137192&date=ge2019-01-14T00:00:00Z

    Implementation Notes: Fetches a bundle of all Immunization resources for the specified patient and date (how to search by date and how to search by reference)

  2. SHOULD support searching using the combination of the patient and status search parameters:

    GET [base]/Immunization?patient={Type/}[id]&status={system|}[code]

    Example:

    1. GET [base]/Immunization?patient=1137192&status=completed

    Implementation Notes: Fetches a bundle of all Immunization resources for the specified patient and status (how to search by reference and how to search by date)