OpenMRS CDA Generator

2014 Internship Project

This project is being considered as a potential project for 2014 Internships. If you are a potential intern and are interested in working on this project, please discuss it in detail with the mentor(s) listed here before submitting your internship proposal.

Primary mentorSuranga Kasthurirathne
Backup mentorJeremy Keiper
Assigned toVaibhav Agarwal


As part of the OpenHIE initiative, OpenMRS will be able to support the parsing of CDA documents into OpenMRS domain objects. However, we are yet to identify the best approach to support the parsing of OpenMRS domain objects into a CDA document.

In 2012, OpenMRS introduced the HL7 Query module, which allows users to export OpenMRS data in the form of hl7 v2 data. The hl7 messages are generated based on groovy templates, which are created by administrators, and populated with data based on requests made by users.

Given that OpenMRS is taking steps towards supporting HL7 v3, there is benefit in developing an alternative module which uses a similar approach to generate CDA documents based on the user's requests.


The scope of this project is limited to producing CDA documents. How they will be delivered (wrapped in DS.b envelopes or HL7 messages) will be concluded elsewhere.

Project Champions

Suranga Kasthurirathne


  1. Review and identify CDA profiles to be supported in the first phase of the module release
    (Potential profiles to be considered for implementation are Antepartum Summary (APS), Antepartum History and Physical (APHP) and Antepartum Education (APE) etc.)
    Tangent : The above profiles are all maternal care related profiles. What others are relevant in terms of clinical care?

  2. Create a basic module using the module archetype and upload it to a new Github repository

  3. Following the basic architectural principals adopted for the HL7 Query module, develop a new set of templates and sub templates which can be grouped together to produce CDA documents populated with OpenMRS data
    This includes,
    1. Identification of suitable sub templates
    2. The resolution of zero or many or one or many relationships between sub templates
    3. Validation procedures
    4. Optimal mapping of OpenMRS data to CDA profiles (etc. resolution of 'null flavour' and other challenges)

  4. Implement mechanisms to trigger CDA profile generation and message retrieval from the new module

Extra credit


For more information on IHE profiles and templates, please refer to the following sites,