C-CDA on FHIR
1.2.0 - STU 1 United States of America flag

This page is part of the C-CDA on FHIR Implementation Guide (v1.2.0: STU 1) based on FHIR (HL7® FHIR® Standard) R4. This is the current published version. For a full list of available versions, see the Directory of published versions

C-CDA to FHIR Immunizations

This page provides a mapping from CDA to FHIR. For the FHIR to CDA mapping, please refer to Immunizations FHIR → CDA. For guidance on how to read the table below, see Reading the C-CDA ↔ FHIR Mapping Pages

Mapping is from @moodCode="EVN" (i.e. historical) immunizations, not INT (future / planned) immunizations.



C-CDA to FHIR

C-CDA¹
Immunization Activity substanceAdministration
FHIR
Immunization
Transform Steps
/@negationInd=”true”   Set .status="not-done" when @negationInd=”true”
/id .identifier CDA id ↔ FHIR identifier
/statusCode .status CDA statusCode → FHIR status
/effectiveTime/@value
or
/effectiveTime/low/@value
.occurrenceDateTime EVN immunizations typically only contain a value, but if effectiveTime contains low/high, the occurenceDateTime should come from low.
CDA ↔ FHIR Time/Dates
/repeatNumber/@value .protocolApplied.doseNumberPositiveInt Note: for @moodCode=EVN immunizations only
/routeCode .route CDA coding ↔ FHIR CodeableConcept
/approachSiteCode .site CDA coding ↔ FHIR CodeableConcept
/doseQuantity .doseQuantity CDA ↔ FHIR Quantity
/consumable/manufacturedProduct/manufacturedMaterial/code .vaccineCode CDA coding ↔ FHIR CodeableConcept
/consumable/manufacturedMaterial/lotNumberText .lotNumber  
/consumable/manufacturedMaterial/manufacturerOrganization .manufacturer  
N/A .primarySource Since this is unavailable in CDA, when mapping to a FHIR profile that requires the element (such as USCore prior to Release 6), include a data-absent-reason extension.
/author Provenance CDA ↔ FHIR Provenance
/author/time .recorded Earliest, if more than one.
CDA ↔ FHIR Time/Dates
/performer .performer Set performer.function="AP"
Immunization Refusal Reason
/entryRelationship[@typeCode=”RSON”]²/observation/code
(only if code is from ValueSet No Immunization Reason)
.statusReason CDA refusal → FHIR statusReason
Indicates the reason the immunization event was not performed. This is generally only used for the status of “not-done”.
Indication
/entryRelationship[@typeCode=”RSON”]²/observation/value
(only if observation/code is from ValueSet Problem Type)
.reasonCode CDA coding ↔ FHIR CodeableConcept
Reaction
/entryRelationship[@typeCode=”MFST”]/observation/value
.reaction It is recommended that reaction observation value be mapped to reaction detail (Observation) valueCodeable concept. Comments are welcome on how this may be best implemented.
Comment Activity
/entryRelationship/act[code/@code=”48767-8”]/text
Annotation
.note
 

1. XPath abbrievated for C-CDA Immunization Activity as:
ClinicalDocument/component/structuredBody/component/section[code/@code=”11369-6”]/entry/substanceAdministration
2. Both indication and refusal reason are observations related by @typeCode=”RSON”. Typically templateIds should not be used to identify content, but the Indication template does not require a specific code. If the observation/code comes from ValueSet No Immunization Reason, then it is clearly a refusal reason. If it comes from ValueSet Problem Type, then it is an indication. But if the code comes from neither value set, the observation is possibly an indication, but the only way to know is to check the templateId.

Illustrative example

An illustrative example with highlighting is shown above based on the consensus of mapping and guidance. Not all possible elements in CDA or FHIR may be represented. To access the content for the above example, click on the links below.


The consensus mapping example developed through multiple vendors are available below:

Prior work and Expanded Spreadsheets

As reviewed in the methodology, a more comprehensive review was performed via spreadsheets. These spreadsheets have been consolidated and further revised in the tables above but are provided for reference here