C-CDA R2.1 to FHIR R4 Transformation

CDA to FHIR Converter

Transform C-CDA R2.1 clinical documents to validated FHIR R4 bundles. Complete support for 9 document types and 33 clinical sections.

// Convert C-CDA to FHIR
var cdaXml = File.ReadAllText(
    "ccd.xml");

var result = await Interop
    .CDAToFhirAsync(cdaXml);

// US Core 6.1.0 compliant!

9 C-CDA R2.1 Document Types

Every major clinical document type used in healthcare exchange

CCD

Continuity of Care Document - comprehensive patient summary with all clinical data

Discharge Summary

Hospital discharge documentation with diagnoses and care instructions

Progress Note

Clinical progress documentation from ongoing patient care

Consultation Note

Specialist consultation findings and recommendations

History & Physical

Complete patient history and physical examination

Operative Note

Surgical procedure documentation

Also supports: Referral Note, ED Note, Unstructured Documents

33 Clinical Section Mappers

Every clinical section mapped to appropriate FHIR resources

Patient Data

  • Problems / Conditions
  • Allergies & Intolerances
  • Medications
  • Immunizations
  • Vital Signs

Clinical Results

  • Laboratory Results
  • Diagnostic Reports
  • Procedures
  • Encounters
  • Medical Devices

Care Planning

  • Care Plan
  • Goals
  • Advance Directives
  • Social History
  • Family History

US Core 6.1.0 Compliant

Every FHIR resource generated is validated against official US Core 6.1.0 profiles, ensuring compatibility with USCDI v3 requirements and healthcare exchange networks.

  • Patient, Practitioner, Organization
  • Condition (us-core-condition)
  • AllergyIntolerance (us-core-allergyintolerance)
  • Observation (labs, vitals, social history)
  • MedicationRequest, Immunization, Procedure
  • DocumentReference, Provenance

Large Document Processing

C-CDA documents can contain thousands of clinical entries. InteropSuite automatically uses chunked processing for large documents:

  • Documents split into ~3,000 entry chunks
  • Chunks processed independently
  • Results merged into single FHIR bundle
  • Prevents memory exhaustion

Monitor progress with optional callback:

var progress = new Progress<TransformProgress>(p =>
    Console.WriteLine($"Chunk {p.CurrentChunk}/{p.TotalChunks}"));
var result = await Interop.CDAToFhirAsync(cda, progress);

Frequently Asked Questions

InteropSuite supports 9 C-CDA R2.1 document types: CCD (Continuity of Care Document), Discharge Summary, Progress Note, Consultation Note, History & Physical, Operative Note, Referral Note, ED Note, and Unstructured Documents.

InteropSuite maps 33 clinical sections including Problems, Allergies, Medications, Vital Signs, Results/Labs, Procedures, Immunizations, Encounters, Social History, Family History, Functional Status, Mental Status, Advance Directives, Payers, Care Plan, Goals, and Devices.

Yes. InteropSuite uses automatic chunked processing for large C-CDA documents. Documents with thousands of clinical entries (20,000+) are split into manageable chunks of ~3,000 entries, processed independently, and stream-merged into a single FHIR bundle without memory exhaustion.

Yes. C-CDA narrative text is preserved in DocumentReference resources and in the text.div element of applicable FHIR resources. This ensures human-readable content remains accessible while structured data is extracted to discrete FHIR resources.

C-CDA sections map to specific FHIR resources: Problems to Condition, Allergies to AllergyIntolerance, Medications to MedicationRequest/MedicationStatement, Results to Observation and DiagnosticReport, Procedures to Procedure, Immunizations to Immunization. Section narrative is preserved in DocumentReference.

InteropSuite uses tolerant parsing mode that handles variations in CDA structure. While optimized for C-CDA R2.1 templates, it can process documents with custom templates by extracting data from standard clinical sections regardless of template IDs.

CDA entryRelationship elements (RSON, SUBJ, COMP, etc.) are mapped to FHIR resource references and extension elements. For example, a medication reason-for-use relationship maps to MedicationRequest.reasonReference pointing to a Condition resource.

InteropSuite is optimized for C-CDA R2.1 (the current standard) but also processes C-CDA 2.0 documents. The tolerant parsing mode handles minor structural differences between versions while extracting maximum clinical data.

Patient demographics from CDA recordTarget are converted to a FHIR Patient resource with identifiers (MRN, SSN), demographics (name, DOB, gender, address), and contact information. Patient matching with existing records is the responsibility of the consuming system.

Ready to Convert C-CDA to FHIR?

Start your free trial today. No credit card required. Full functionality for 14 days.

Also need HL7 to FHIR, X12 to FHIR, or EDI to FHIR?