C-CDA on FHIR
2.0.0-ballot - STU 2 Ballot United States of America flag

C-CDA on FHIR, published by HL7 International / Cross-Group Projects. This guide is not an authorized publication; it is the continuous build for version 2.0.0-ballot built by the FHIR (HL7® FHIR® Standard) CI Build. This version is based on the current content of https://github.com/HL7/ccda-on-fhir/ and changes regularly. See the Directory of published versions

C-CDA to FHIR Encounters

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

Encounter Activities in the Encounters Section (or elsewhere in the document, such as <entryReference> on Clinical Notes) correspond FHIR Encounter resources. If the document itself contains a componentOf/encompassingEncounter, this should also be converted to a FHIR Encounter resource. In all cases, when the same encounter is referenced multiple times (such as the encompassingEncounter and an Encounter Activity in the Encounters Section containing the same <id>), it should be converted to a single FHIR resource.

C-CDA Encounter to FHIR

(b) - indicates element is only present in Encounter Activity in the body of the document
(h) - indicates element is only present in EncompassingEncounter in the header of the document

C-CDA¹
Encounter Activity or EncompassingEncounter
FHIR
Encounter
Transform Steps
/id .identifier CDA id ↔ FHIR identifier
/code .class Only the V3 ActCode system, which may be present in the root element or any <translation>.
Other code systems may map to V3 ActCode (for example CPT codes 99211-99215 map to AMB, 99221-99223 to IMP, 99281-99285 to EMER, etc), but if this mapping is not possible, use the Data Absent Reason extension.
/code .type The remaining codes besides V3 ActCode
CDA coding ↔ FHIR CodeableConcept
/statusCode (b) .status CDA → FHIR encounter status
Note: statusCode is optional in C-CDA. If missing, fallback to effectiveTime mapping.
/effectiveTime .status If effectiveTime is a single timestamp or contains a high, status = "finished".
If low is present and high is missing, the status may be "in-progress" but implementers may choose to evaluate historical values as "finished" or "unknown" if appropriate.
/effectiveTime/@value
/effectiveTime/low/@value
.period.start CDA ↔ FHIR Time/Dates
/effectiveTime/high/@value .period.end CDA ↔ FHIR Time/Dates
/sdtc:dischargeDispositionCode (b)
/dischargeDispositionCode (h)
.hospialization.dischargeDisposition CDA coding ↔ FHIR CodeableConcept
/performer (b)
/encounterParticipant (h)
.participant C-CDA → FHIR Participation
/performer/sdtc:functionCode (b) .participant.type CDA coding ↔ FHIR CodeableConcept
/participant[@typeCode="LOC"] (b)
/location (h)
.location C-CDA → FHIR Participation
Indication (b)
/entryRelationship[@typeCode="RSON"]/observation
.reasonCode
or
.reasonReference
If the id of the indication references a problem in the document that has been converted to a FHIR resource, populate .reasonReference with a reference to that resource. Otherwise, map observation/value to .reasonCode.
CDA coding ↔ FHIR CodeableConcept
Encounter Diagnosis (b)
/entryRelationship/act[code/@code="29308-4"]/observation
Encounter Diagnosis
&
.diagnosis.condition
The observation maps identically to CDA → FHIR Problems.
Since this is an encounter diagnosis, the Observation.category should be set to encounter-diagnosis.

Example: Encounter

CDA EncounterFHIR Encounter Resource
<encounter classCode="ENC" moodCode="EVN"> <templateId root="2.16.840.1.113883.10.20.22.4.49" extension="2015-08-01"/> <templateId root="2.16.840.1.113883.10.20.22.4.49"/> <id root="2a620155-9d11-439e-92b3-5d9815ff4de8"/> <code code="99213" displayName="Office outpatient visit 15 minutes" codeSystemName="CPT" codeSystem="2.16.840.1.113883.6.12" codeSystemVersion="4"> <originalText> <reference value="#Encounter1_type"/> </originalText> </code> <text> <reference value="#Encounter1"/> </text> <effectiveTime value="201208151000-0800"/> <!-- Maps to reference: Practitioner/62f17e2ae0231200076884d4 --> <performer> <assignedEntity> ... </assignedEntity> </performer> <entryRelationship typeCode="REFR"> <act classCode="ACT" moodCode="EVN"> <!-- Encounter Diagnosis --> <!-- Creates reference: Condition/62f17e2aa2392d0008fbb232 --> <templateId root="2.16.840.1.113883.10.20.22.4.80" extension="2015-08-01" /> <templateId root="2.16.840.1.113883.10.20.22.4.80"/> <code code="29308-4" displayName="Diagnosis" codeSystem="2.16.840.1.113883.6.1" codeSystemName="LOINC"/> <entryRelationship typeCode="SUBJ"> ... </entryRelationship> </act> </entryRelationship> </encounter>
{ "resourceType": "Encounter", "id": "62f17e2aa2392d0008fbb224", "identifier": [{ "value": "urn:uuid:2a620155-9d11-439e-92b3-5d9815ff4de8", "system": "urn:ietf:rfc:3986" }], "status": "finished", "class": { "system": "http://terminology.hl7.org/CodeSystem/v3-ActCode", "code": "AMB", "display": "ambulatory" }, "type": [{ "coding": [{ "system": "http://www.ama-assn.org/go/cpt", "code": "99213", "display": "Office outpatient visit 15 minutes" }], "text": "Office outpatient visit" }], "subject": { "reference": "Patient/62f17e29b7532c0009e217b7" }, "participant": [{ "individual": { "reference": "Practitioner/62f17e2ae0231200076884d4" } }], "period": { "start": "2012-08-15T10:00:00-08:00" }, "diagnosis": [{ "condition": { "reference": "Condition/62f17e2aa2392d0008fbb232" } }] }

Example: EncompassingEncounter

CDA EncompassingEncounter ExampleFHIR Encounter Resource
<encompassingEncounter> <id root="2a620155-9d11-439e-92b3-5d9815ff4de8"/> <code code="99213" displayName="Office outpatient visit 15 minutes" codeSystemName="CPT" codeSystem="2.16.840.1.113883.6.12" codeSystemVersion="4" /> <effectiveTime> <low value="20120815100000-0800" /> <high value="20120815101500-0800" /> </effectiveTime> <!-- Maps to reference: Practitioner/62f17e2ae0231200076884d4 --> <participant> ... </participant> <!-- Maps to reference: Location/sdLoc --> <location> ... </location> </encompassingEncounter>
{ "resourceType": "Encounter", "id": "62f17e2aa2392d0008fbb224", "identifier": [{ "value": "urn:uuid:2a620155-9d11-439e-92b3-5d9815ff4de8", "system": "urn:ietf:rfc:3986" }], "status": "finished", "class": { "system": "http://terminology.hl7.org/CodeSystem/v3-ActCode", "code": "AMB", "display": "ambulatory" }, "type": [{ "coding": [{ "system": "http://www.ama-assn.org/go/cpt", "code": "99213", "display": "Office outpatient visit 15 minutes" }] }], "subject": { "reference": "Patient/62f17e29b7532c0009e217b7" }, "location": [{ "location": { "reference": "Location/sdLoc" } }], "participant": [{ "individual": { "reference": "Practitioner/62f17e2ae0231200076884d4" } }], "period": { "start": "2012-08-15T10:00:00-08:00", "end": "2012-08-15T10:15:00-08:00" } }