Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

  1. What types of CDA Documents or Messages are currently supported by the CDA Generator module
  2. Design of the Module
  3. How users can extend on CDA Generator module
  4. How we are populating sections of APHP CDA Message
  5. Installation of the Module
  6. Potential Improvements
  7. Screenshots
  8. Quick Demonstration
  9. Sample APHP Documents produced by the CDA Generator module

What types of CDA Documents or Messages are currently generated by the CDA Generator module ?

This release of module only supports the generation of an APHP CDA Document type. However, developers are free to write up new CDA documents  which can be added to the module. There are many types of CDA documents (APHP, APS, APL ,APE, e.t.c) people refer to it as IHE Profilesthat may be found on the IHE profile page.

 

Design of the Module

During this summer our focus was to generate APHP CDA message, but there are many types of IHE profile or CDA documents types.

Now question isHowever, will our module allow any other type of CDA Document?Yes, It doesour module was designed to be configured in a manner that allows users to write their own CDA message handlers.

 

We have designed our module to ensure that our work is flexible for , and can be extended further extension. If someone wants to add new CDA type documents other than APHP, our module accommodates this change. So, our Our design consists of an hierarchy of classes (or as we call them as a , an hierarchy of handlers. BaseCdaTypeHandler is serves as the base class which contains all attributes necessary for CDA document and all . All other handlers extend this BaseCdaTypeHandler (example APHP handler, APS handler or some other handler).

In our entire code base we are using the reference of Our module uses the BaseCDATypeHandler to make our work as generic as possible.

If we want to add a new CDA Document Type, all we need to do is create a class, extend from this BasCdaTypeHandler class and use setter methods to add values that’s it. Its as simple as that!

 

The same design approach is followed for Section as well. There we have BaseCdaSectionhandler and child handlers extending upon it.

 

Class Diagrams

 Image Removed                

Image Added    

The class digram above depicts how different Document handler classes extend on the BaseCdaTypeHandler.            

             Image Removed Image Added    

 

How can users

...

extend on the CDA Generator module?

Users can extend the module by adding new CDA document Type Types or Editing existing oneones (not recommended). Each CDA document consist of few sections and users can also add new sections to the module or Edit existing ones. The Editing/Adding/Deleting of Sections and CDA document types can be done programmatically through code not the User Interface.

...

Image showing location to add new CDA Document Type

Image RemovedImage Added     

 

Sample Code

...

Image showing location to add new sections

Image RemovedImage Added


Sample Code

Code Block
languagejava
titleCode showing how New Section Class Must look like
firstline1
package org.openmrs.module.CDAGenerator.SectionHandlers;
public class MySection extends BaseCdaSectionHandler
{

public ChiefComplaintSection()
{
    this.sectionName="My Section";
    this.templateid="";//ihe specific id
    this.sectionDescription="This is my new section";
    this.code="";//Ihe specific code for section
}
}

...

Similarly one can edit or delete any Sections or CDA document type.

...

Populating sections of the APHP CDA Message

We have used OpenMRS Concept Dictionary to populate APHP CDA message section with answers. We used IHE APHP Document value sets which list out specific concepts that must be used for specific sections. We are updating OpenMRS the MVP-CIEL Concept dictionary with LOINC codes,  SNOMED codes and new concept which that our module needs.

Installation of the Module

Installation of the OpenMRS CDA Generator Module

Potential Improvements

  • We can Add/Edit/Delete  CDA Documents and Sections Programmatically but not though the UI.

  •  Create clients to consume CDAs by hitting a REST Web Service with a patient identifier and cda document type to download their CDA instead of users downloading through administrative tab.

  • We are using gazelle as an external validator in addition to mdht cda validation code in our module. I’m manually using GUI gazelle validator to check our cda documents. So, we can call gazelle validator via a web service from our module.

...

1) Administration tab (After the module is loaded)

Image RemovedImage Added

 

2) Export CDA Document Link

Image RemovedImage Added

 

3) Validation of Export CDA Form

 

Image RemovedImage Added                                         Image Removed Image Added

 

4) Successful Generation of CDA Document

Image RemovedImage Added

 

5) Error report (If generated document is invalid)

Image RemovedImage Added

 

6) Manage CDA Section Link

It lists out all sections present in our module and also provide details of each section

 

Image RemovedImage Added                   Image Removed Image Added

 

7) Manage CDA Type Link

It lists out all CDA Document types present in our module and also provide details of each document type

 

Image RemovedImage Added                            Image Removed Image Added

 

 

Quick

...

Demonstration


Please watch demonstration of module :

...

Widget Connector
urlhttps://www.youtube.com/watch?v=aBTfdt8ImRY

Sample CDA Documents for review

For a sample document generated using the OpenMRS CDA generator module, see here 

Downloads

Source code: https://github.com/openmrs/openmrs-module-cdagenerator

...