GSoC/GCI Archive
Google Summer of Code 2012


Web Page:

Mailing List:


Write Code. Save Lives. Join OpenMRS for Google Summer of Code 2012.

Thank you for your interest in OpenMRS! OpenMRS has been accepted for the 6th year as a mentoring organization for Google Summer of Code in 2012. We're enjoyed participating in this great program in the last 5 years and are even more excited about the projects and mentors we have available this year. Coding for OpenMRS is a great way to practice your coding skills and, at the same time, help benefit people in developing countries who are on the front lines of the battle against HIV/AIDS, TB, and Malaria.

The Summer of Code page on our wiki describes potential projects and our mentors this year. These aren't "busy work" - we've reviewed our actual project list and identified ones that can be completed by students (advised by our team of excellent mentors) during Summer of Code this year.

Why OpenMRS?

Our world continues to be ravaged by a pandemic of epic proportions, as over 40 million people are infected with or dying from HIV/AIDS - most (up to 95%) are in developing countries. Prevention and treatment of HIV/AIDS on this scale requires efficient information management, which is critical as HIV/AIDS care must increasingly be entrusted to less skilled providers. Whether for lack of time, developers, or money, most HIV/AIDS programs in developing countries manage their information with simple spreadsheets or small, poorly designed databases ... if anything at all. To help them, we need to find a way not only to improve management tools, but also to reduce unnecessary, duplicative efforts.

As a response to these challenges, OpenMRS formed in 2004 as a open source medical record system framework for developing countries - a tide which rises all ships. OpenMRS is a multi-institution, nonprofit collaborative led by Regenstrief Institute, a world-renowned leader in medical informatics research, and Partners In Health, a Boston-based philanthropic organization with a focus on improving the lives of underprivileged people worldwide through health care service and advocacy. These teams nurture a growing worldwide network of individuals and organizations all focused on creating medical record systems and a corresponding implementation network to allow system development self reliance within resource constrained environments. To date, OpenMRS has been implemented in several developing countries, including South Africa, Kenya, Rwanda, Lesotho, Uganda, Tanzania, Haiti, Mozambique, Sierra Leone, and many more. This work is supported in part by organizations such as the World Health Organization (WHO), the Centers for Disease Control (CDC), the Rockefeller Foundation, the International Development Research Centre (IDRC) and the US President's Emergency Plan for AIDS Relief (PEPFAR).

Read more about OpenMRS at


  • Anatomical Drawing Custom Datatype (Design Page) This goal of this project is to create a custom data type in Complex Obs just like how we have ImageHandler. When this handler is rendered at the UI it would open up an editor which can help the physician draw different parts of the body , annotate it with remarks , upload the image of patient , etc
  • Better Error Submission Process for FDBK Module Better Error Submission Process for FDBK Module is an extension of the project General Feedback Mechanism. The main objective of the Feedback module is to provide a mechanism for users to communicate with system supporters/admins with system-related (not patient-specific) messages, refactoring the error submission process and make it more easy and effective preferably a wizard driven one.
  • CDA-based Clinical Patient Summary Import and Export This project is to support OpenMRS’ ability to generate and exchange patient clinical summaries using the Clinical Document Architecture (CDA) model, an xml-based HL7 version 3 standard for clinical documents.
  • Database Synchronization with SymmetricDS The proposed project enables common view of all data in implementations, where multiple OpenMRS instances on different nodes use multiple databases. Each OpenMRS instance with its database can be easily managed. But once multiple databases need to share data to show a common view to all instances, synchronization of data needs to be done. SymmetricDS is a smart, opensource solution to address relational database synchronization bi-directionally, even in resource poor implementation environments.
  • Dynamic List Entry Tags and Widgets This specific project entails implementing a set of tags for HTML Form Entry to allow form designers to have widgets that allow the input of dynamic lists, where clinicians can add and remove items for fields on a patients form. This project will require designing and implementing the HTML tags and backend to create these dyanmic list widgets, and creating some real life example forms that use the new functionality.
  • Filtering Forms on Dashboard " Filtering Forms on Dashboard " project looks in point of user who is looking for patient details. There can be cases where the unnecessary forms are seen on patient dashboard , this can be acceptable till forms a limited but when the forms count increase to ten's and more starts challenge to user. So to filter these forms is the main aim of this project. Example:- A user who has selected a 40 year-old patient, they don't want to be bothered with pediatric forms designed for children in the list that are obviously inappropriate for that patient.
  • HTML Form Entry Module Enhancements The HTML Form Entry module allows anyone with basic HTML skills and a knowledge of the OpenMRS system to create forms to enter and edit patient data within the system. The main feature of the HTML module is facilitating user with the ability to write form using standard HTML tags along with with a set of special tags that reference different aspects of the OpenMRS data model. Therefore the module makes it easy for the user to write user defined set of HTML forms according to their wish. This project is intended on improving the features support of the current HTML Form Entry module with creating several new tags as well as improving some existing tags for better performance too. In addition to that it is also concerned on implementing extra features requested by the community according to the remaining time duration of the project.
  • Human Resource Module This project aims at developing tests around existing HR module, making it more suitable for distributed development, and developing it further to add remaining functionality.
  • Implementing Novel Features to Improving De-duplication User Experience Patient matching module has been developed for OpenMRS to identify and merge the duplication data of the patients. As a student, I will be improving the usability of module by improving the validation, suggestions to avoid potential errors, and adding advanced features to the module's web interface.
  • In-page Localization In-page l10n tool will allow making translations of OpenMRS right when viewing web page. For now, it’s annoying for developers to make number of steps to provide even a default translation of a text message within OpenMRS. In addition, actual translators also need to complete a lot of actions to provide further translation. Obviously, it makes translations process inconvenient and not efficient. So, the main goal of this project is to implement and integrate pretty handy tool for in-page l10n.
  • Logging Errors to the Database The more application the more potential errors in it can be. That's why any big project has many tests. The role of testing is to determine the presence and location of errors remaining in a well-designed program. But tests still can not anticipate all possible errors and bugs in the application. So developers began to use logging. Log messages that tell what the application is doing can help locate any defects that are present is application. Without logging in an application, maintenance can become an intricate problem for the developers. But even with a system of logging in the application programmer is still hard to keep track of all the errors, because the application can use several different organizations. And end-users have to somehow report to the administrator of application about error, and he in turn to developers. The administrator must to find detail information about error in the server logs and send this information to the developers. This is a laborious and lengthy work. So the developers of OpenMRS solved this problem by using default error handler. They provide information about error to users in the default error handler so that they can provide a specific error log id along with their bug report. So end-users can report bugs directly to the developers. Currently user can press button "Report Problem" to report about error and afret then create a new ticket on bugtracker. But it is still far from ideal mechanism for fixing bugs. So, the main goal of my project is to create tools to improve and systematize the error detection mechanism.
  • Merge Concept Module Merge concept tool for altering concepts through the entire database: As the OCC and MCL are improving to manage concepts from various sources, it is time for a super admininstrative tool for changing concept_ids through-out the database. The application would search obs, drug, program/ workflow/ state, all varieties of forms, etc. for tables which use the concept_id (including answer_concept/ discontinued_reason/ etc) and replace with a different concept. This would be helpful when cleaning duplicate concepts and merging with other concept dictionaries.
  • Metadata Sharing Server Project The goal of this project is to create a central repository of metadata where OpenMRS installations can publish their metadata. The Metadata Sharing Server will store metadata from different OpenMRS servers and expose them to clients. Clients will be able to search through metadata packages and choose some to import and subscribe. In this model the Metadata Sharing Server will act as a central subscription server for clients.
  • Patient Dashboard Tabs Loaded via AJAX The world we are living in is overwhelmed by the spread of numerous diseases. They can be hard to cure and some might even be life threatening. This is even a greater problem in developing countries where the governments do not have money in abundance to invest in state-of-the-art health care management systems. In this context, OpenMRS can be a life saver for the poor countries that rely on stone aged systems to manage information in their hospital systems. In this proposal, I will be presenting how I plan on making the patient dashboard AJAX enabled so that it loads quickly and easily.
  • Personal Health Record Module Enhancement This module is provides patients with personal dashboard where the patient can keep track of his recovery and exchange information with social group. Enhancements to this module includes features like printing of data, customizing data according to patients, clinical decisions for side effects tab etc...
  • Re-implement BIRT module on top of reporting module OpenMRS BIRT module produces clinical patient summaries, facility, indicator reports in different formats. But currently it lacks support for latest BIRT Runtime releases, data generated by the core reporting module and RESTful web services and ultimately not well integrated with the recent OpenMRS Reporting module.
  • Upload and View or Download Image or File in HTMLForm It is important to load images or other files (such as Excel spreadsheets generated during EBRT - External Beam radiation Therapy or Brachytherapy based Oncology treatments) with patients clinical record. We are proposing this project so that, the implementers while developing the HTML Forms using the HTMLForm entry module can provide a file upload button to the data entry user. Consequently, when the user load a file/image while doing data entry for an encounter, those files should be stored in the server so that they are available to be viewed/downloaded by other users.