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 1.2.0 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
This page provides a mapping from CDA to FHIR. For the FHIR to CDA mapping, please refer to Procedures FHIR → CDA. For guidance on how to read the table below, see Reading the C-CDA ↔ FHIR Mapping Pages
C-CDA 2.1 describes three templates for Procedures: Procedure Activity Act, Procedure Activity Observation, and Procedure Activity Procedure. Procedure Activity Procedure is the most complete, containing everything the other two contain except Observation.value, and several properties not contained by the others. The C-CDA 2.1 Companion Guide points out that “most vendors successfully and exclusively use the . . . Procedure Activity Procedure,” and it then specifies this template for “all interventional, non-interventional, surgical, diagnostic, or therapeutic procedures or treatments pertinent to the patient historically at the time the document is generated.” For this reason, we begin with this most common pattern in this publication. Additional guidance for the other two templates (which will be very similar) will be forthcoming.
C-CDA¹ Procedure Activity procedure |
FHIR Procedure |
Transform Steps |
---|---|---|
/@negationInd=”true” | set status=”not-done” | |
/id | .identifier | CDA id ↔ FHIR identifier |
/code | .code | CDA coding ↔ FHIR CodeableConcept |
/statusCode | .status | CDA statusCode → FHIR status |
/effectiveTime | .performedDateTime | Constraint: Use this when effectiveTime@value is populated CDA ↔ FHIR Time/Dates If no effectiveTime content is provided, put the FHIR [ data-absent-reason ] (https://hl7.org/fhir/R4/extension-data-absent-reason.html) extension on the performedDateTime element. |
/effectiveTime/low | .performedPeriod.start | Constraint: Use this when effectiveTime@value is not populated CDA ↔ FHIR Time/Dates |
/effectiveTime/high | .performedPeriod.end | Constraint: Use this when effectiveTime@value is not populated CDA ↔ FHIR Time/Dates |
/targetSiteCode | .bodySite | CDA coding ↔ FHIR CodeableConcept |
/author | .recorder & Provenance |
CDA ↔ FHIR Provenance If a latest author can be identified, map to .recorder. Any author with a time can be put in Provenance. |
/performer/assignedEntity | .performer.actor | May map to Practitioner, PractitionerRole, or Organization onBehalfOf should not be used when actor is a Practitioner or PractitionerRole |
Service Delivery Location /participant[@typeCode=”LOC”]/participantRole |
.location | |
Indication /entryRelationship[@typeCode=”RSON”]/observation/value |
.reasonCode | CDA coding ↔ FHIR CodeableConcept |
Comment Activity /entryRelationship/act[code/@code=”48767-8”]/text |
Annotation .note |
1. XPath abbrievated for C-CDA Procedure as:
ClinicalDocument/component/structuredBody/component/section[code/@code=”47519-4”]/entry/procedure
The consensus mapping example developed through multiple vendors are available below:
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