1.2.0 - STU 1 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 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

C-CDA to FHIR Procedures

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

Note on template selection

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.


Procedure Activity 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

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
.reasonCode CDA coding ↔ FHIR CodeableConcept
Comment Activity

1. XPath abbrievated for C-CDA Procedure as:

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