Thursday, April 24, 2008

Accepted to GSOC 2008 with OpenMRS!

I just found out this week that I was accepted into this summer's GSOC and will be working with OpenMRS on extending their BIRT ODA from last year's GSOC. My mentor is Justin Miranda and I'm really looking forward to coding this summer under his guidance. I will be blogging my progress for this project here. The following is the abstract for this project that was accepted:

A high level description for this project is available at
http://openmrs.org/wiki/Projects#Extend_OpenMRS_ODA_Plugin. Basically, the
goal of this project is to further improve upon the ODA that was created during last year's GSOC (http://openmrs.org/wiki/BIRT_ODA_Plugin_User_Guide). The ODA is a BIRT plugin that uses OpenMRS's Logic Web Service as a datasource.

Additional optimizations need to be made with respect to how the tokens are treated. Currently, tokens can be filtered upon by choosing the tag but it would be nice to add a feature where the users could search for a particular token name using a regular expression. The list of tokens and their tag relationships should be cached on the client side so that the web service does not have to be hit every time a tag or search is made. The CD4 Count token is a multi-value token. The interface should "explode" the multiple values to show the date as well as the actual value of the CD4 count. The user should also be able to change the default datatype of a token to another datatype.

The Logic Web Service will also need to be enhanced to support more tokens as required. It should handle all of the methods available within the Logic Web Service's already constructed interface so that the ODA can leverage any of those APIs that could be useful. A more complex query builder is desired on the ODA side that would take advantage of all the LWS's operator/modifier APIs that are appropriate for a given token/datatype. Also, there should be an option within the web service that would allow the user to choose not to have the tokens returned if they did not contain any data.

This project would also include developing a simple mechanism/framework to upload the BIRT report designs to the appropriate directory on the OpenMRS server automatically. This will allow for quick and easy deployment. Another area to improve upon as far as usability would be the ease of integration of the BIRT report itself. The data source can be configured such that the connection details to the OpenMRS server can be set at runtime of the report. This would involve both the ODA as well as report design improvements/changes. Common data sets could also be configured in the BIRT report design via BIRT templates. Using templates would streamline and simplify report design for creating new reports. A report designer could just drag and drop the individual data items within the precreated datasets in the BIRT template.

When these ODA / Logic Web Service changes have been implemented, I would like to develop some useful reports to show off the new functionality. We can create some reports that were too troublesome to design or easily implement runtime parameters in the past due to only having the JDBC option available. We could also recreate the data access part of existing BIRT reports with the new ODA and make them better.