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: status is also mapped from effectiveTime below. The Concept Map should only be used for statusCode values other than completed and active, or in the event that the effectiveTime is missing or ambiguous.
/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" } }