Skip to content

Immunizations Section

Template ID: 2.16.840.1.113883.10.20.22.2.2.1 Version: R2.1 (2015-08-01) Badge: Core Section

Overview

The Immunizations Section documents vaccines administered to a patient, including childhood immunizations, adult boosters, seasonal vaccines (like influenza), and travel-related immunizations. This section is essential for preventive care tracking and public health reporting.

Clinical Purpose and Context

The Immunizations Section records: - All vaccines administered to the patient - Dates of immunization administration - Vaccine product details (CVX codes) - Administration status (completed, refused, etc.) - Lot numbers and manufacturer information - Route and site of administration

This information is essential for: - Maintaining accurate immunization records - Determining due dates for upcoming vaccines - Public health surveillance and outbreak management - School and employment immunization requirements - Travel medicine planning - Meeting Meaningful Use requirements

When to Include

The Immunizations Section is a required section in most C-CDA document types, including: - Continuity of Care Documents (CCD) - Consultation Notes - History and Physical Notes - Transfer Summaries - Discharge Summaries

Even if a patient has no recorded immunizations, the section should be included with narrative text stating "No known immunizations."

Template Details

Official OID

  • Root: 2.16.840.1.113883.10.20.22.2.2.1
  • Extension: 2015-08-01 (R2.1) / 2014-06-09 (R2.0)

Conformance Level

  • Conformance: SHALL (Required in entries-required variant)
  • Section Code: 11369-6 (LOINC - "History of Immunization Narrative")

Cardinality

  • Section: 1..1 (Required in most C-CDA document types)
  • Entries: 1..* (At least one Immunization Activity entry is required for entries-required variant)
  • Immunization Activity (V3): 2.16.840.1.113883.10.20.22.4.52:2015-08-01
  • Immunization Refusal Reason: 2.16.840.1.113883.10.20.22.4.53

Protocol Requirements

The ImmunizationProtocol defines the data contract for immunization entries. Each immunization must provide:

Required Properties

Property Type Description
vaccine_name str Name of the vaccine
cvx_code str CVX code for the vaccine (CDC vaccine code system)
administration_date date or datetime Date the vaccine was administered
status str Status: 'completed', 'refused', 'not_administered'

Optional Properties

Property Type Description
lot_number Optional[str] Vaccine lot number
manufacturer Optional[str] Vaccine manufacturer name
route Optional[str] Route of administration (e.g., "Intramuscular")
site Optional[str] Body site where administered (e.g., "Left deltoid")
dose_quantity Optional[str] Dose quantity and unit (e.g., "0.5 mL")

Data Types and Constraints

  • vaccine_name: Free-text vaccine name (e.g., "Influenza vaccine")
  • cvx_code: Must be a valid CVX code from CDC's vaccine code system
  • administration_date: Can be date or datetime object
  • status: Typically 'completed' for administered vaccines, 'refused' for patient refusals
  • lot_number: Manufacturer's lot number for vaccine traceability
  • manufacturer: Organization name or MVX code
  • route: FDA Route of Administration code (e.g., "Intramuscular", "Oral", "Intranasal")
  • site: Body site code from SNOMED CT or display name

Code Example

Here's a complete working example using ccdakit to create an Immunizations Section:

from datetime import date, datetime
from ccdakit.builders.sections.immunizations import ImmunizationsSection
from ccdakit.core.base import CDAVersion

# Define an immunization using a simple class that implements ImmunizationProtocol
class Immunization:
    def __init__(self, vaccine_name, cvx_code, administration_date, status,
                 lot_number=None, manufacturer=None, route=None, site=None, dose_quantity=None):
        self.vaccine_name = vaccine_name
        self.cvx_code = cvx_code
        self.administration_date = administration_date
        self.status = status
        self.lot_number = lot_number
        self.manufacturer = manufacturer
        self.route = route
        self.site = site
        self.dose_quantity = dose_quantity

# Create immunization instances
immunizations = [
    Immunization(
        vaccine_name="Influenza vaccine",
        cvx_code="141",
        administration_date=date(2023, 10, 15),
        status="completed",
        lot_number="U3421AA",
        manufacturer="Sanofi Pasteur",
        route="Intramuscular",
        site="Left deltoid",
        dose_quantity="0.5 mL"
    ),
    Immunization(
        vaccine_name="Tetanus, diphtheria toxoids and acellular pertussis vaccine (Tdap)",
        cvx_code="115",
        administration_date=date(2020, 5, 10),
        status="completed",
        lot_number="P8765ZZ",
        manufacturer="GlaxoSmithKline",
        route="Intramuscular",
        site="Right deltoid",
        dose_quantity="0.5 mL"
    ),
    Immunization(
        vaccine_name="Pneumococcal conjugate vaccine",
        cvx_code="133",
        administration_date=date(2022, 3, 20),
        status="completed",
        manufacturer="Pfizer",
        route="Intramuscular",
        site="Left deltoid"
    ),
    Immunization(
        vaccine_name="Zoster vaccine (shingles)",
        cvx_code="121",
        administration_date=date(2021, 8, 5),
        status="completed",
        lot_number="X2109BC",
        manufacturer="Merck",
        route="Subcutaneous"
    )
]

# Build the Immunizations Section
section_builder = ImmunizationsSection(
    immunizations=immunizations,
    title="Immunizations",
    version=CDAVersion.R2_1
)

# Generate XML element
section_element = section_builder.build()

# Convert to XML string (for demonstration)
from lxml import etree
xml_string = etree.tostring(section_element, pretty_print=True, encoding='unicode')
print(xml_string)

Official Reference

For complete specification details, refer to the official HL7 C-CDA R2.1 documentation: - HL7 C-CDA R2.1 Implementation Guide - Section: 5.27 - Immunizations Section (entries required)

Additional resources: - CDC CVX Codes - CDC Vaccine Manufacturer Codes (MVX)

Best Practices

Common Patterns

  1. Use CVX Codes Consistently
  2. CVX codes are the standard for vaccine identification
  3. Always use the most specific CVX code available
  4. Check CDC's CVX code list for updates regularly
  5. Example: CVX 141 = Influenza, seasonal, injectable

  6. Document Lot Numbers for Traceability

  7. Lot numbers are critical for vaccine recalls
  8. Should be recorded at time of administration
  9. Required by many immunization registries
  10. Improves patient safety and quality reporting

  11. Include Manufacturer Information

  12. Manufacturer names or MVX codes help with specificity
  13. Important for distinguishing between similar products
  14. Required for some vaccine types with multiple brands

  15. Record Administration Details

  16. Route and site provide complete administration record
  17. Important for proper technique documentation
  18. Can affect efficacy and adverse event assessment

  19. Track Historical Immunizations

  20. Include childhood immunizations when available
  21. Document vaccines from previous providers
  22. Note patient-reported immunizations with appropriate qualifiers

Validation Tips

  1. Section Code Validation
  2. Ensure section code is 11369-6 (LOINC)
  3. This is automatically set by the builder

  4. Template ID Validation

  5. Verify template ID includes correct extension
  6. R2.1: extension="2015-08-01"
  7. R2.0: extension="2014-06-09"

  8. CVX Code Validation

  9. Verify CVX codes are current and valid
  10. Check CDC's CVX code list
  11. Some CVX codes are deprecated and should not be used

  12. Status Code Validation

  13. 'completed' (moodCode="EVN", statusCode="completed")
  14. 'not_administered' requires negationInd="true"
  15. 'refused' should include refusal reason

  16. Date Format Validation

  17. Administration dates should be in the past (not future)
  18. Use YYYYMMDD format for dates
  19. Can include time for precise documentation (YYYYMMDDHHMMSS)

Gotchas to Avoid

  1. Using Outdated CVX Codes
  2. CDC periodically deprecates CVX codes
  3. Check CVX code status before implementation
  4. Update systems when codes are changed or retired

  5. Missing Lot Numbers

  6. While optional in the schema, lot numbers are clinically important
  7. Many immunization registries require lot numbers
  8. Record at time of administration, as retrospective capture is difficult

  9. Incorrect Route Codes

  10. Route must match the vaccine's approved administration method
  11. Use FDA Route of Administration terminology
  12. Examples: IM (Intramuscular), SC (Subcutaneous), PO (Oral), IN (Intranasal)

  13. Confusing Status Codes

  14. Don't use 'active' for immunizations (use 'completed')
  15. 'completed' means the vaccine was administered
  16. Use negationInd for vaccines that were not given

  17. Duplicate Entries

  18. Avoid documenting the same vaccine administration multiple times
  19. Check for duplicates when consolidating from multiple sources
  20. Use unique IDs to track across documents

  21. Historical Data Quality

  22. Patient-reported immunizations may lack detail
  23. Document source of information (patient reported vs. verified)
  24. May lack lot numbers, manufacturer, or specific dates

  25. Date Precision

  26. Some historical records may only have year or month
  27. Use date precision indicators appropriately
  28. Don't fabricate precise dates from vague records

  29. Manufacturer Codes vs. Names

  30. MVX codes are preferred but names are acceptable
  31. Ensure manufacturer name matches the lot number
  32. Cross-reference with CDC's MVX code list

  33. Combination Vaccines

  34. Use appropriate CVX code for combination products
  35. Example: CVX 130 for DTaP-IPV (4-component)
  36. Don't list individual components separately

  37. Refused Immunizations

    • Document refusals with status="refused" or negationInd="true"
    • Include refusal reason when available
    • Important for outbreak investigations and coverage calculations
  38. Future Immunizations

    • Don't document scheduled but not-yet-administered vaccines
    • Use Care Plan or Procedure Plan for future vaccines
    • Immunization section is for historical/completed vaccines
  39. Narrative-Entry Consistency

    • Ensure narrative table matches structured entries
    • The builder handles this automatically
    • Include key details (lot number, date) in narrative