GSoC 2013 Ideas Page

Possible Projects for Google Summer of Code 2013:

Project: Build a Registration Module in NodeJS/Meteor

Brief explanation: Build a registration module in meteor

Used Technologies: JavaScript, HTML5, Meteor

Primary Mentor: Surajit Nundy

Secondary Mentor: John Stoecker


Familiarize yourself with NodeJS and meteor formats

Make registration-related calls to MySQL using meteor

Create a webapp that does all the functions of the current module

Create an iOS and Android app that does all the functions of the current module

Document your module so that we can maintain it.

Project: Build a Radiology Image Viewer that Syncs with OpenMRS

Brief explanation: Build a radiology image viewer that will allow radiologists to input notes and diagnoses

Used Technologies: JavaScript, HTML5, Sencha

Primary Mentor: Akhil Ravindran

Secondary Mentor: Barry Levine


Familiarize yourself with dcm4che and DICOM formats

Create an image editor by forking Oviyam DICOM viewer

Allow radiologists to link radiology patients to OpenMRS

Allow radiologists to input diagnoses/thoughts and send them as observations to OpenMRS

Document your image viewer so we can easily make changes in the future

Project: Implement a faster, node.js-based search

Brief explanation: Build a fast, responsive search layer for medical data. Currently, the search layer in OpenMRS performs many unecessary checks before accessing the data. Your task is to bring that data into a lightweight node.js search layer. Before each database lookup, perform a quick check using the OpenMRS API to see if the user is allowed to view that particular resource.

Used Technologies: SQL, node.js, MongoDB/SOLR

Primary Mentor: Piyush Madan

Secondary Mentor: John Stoecker

Suggested Reading:


Familiarize yourself with different search layer/indexing techniques such as node.js/MongoDB/SOLR

Propose a search model for highly structured medical data

Build a search layer for these resources from OpenMRS: person, patient, encounter, obs, orders

Document your search layer's API

Project: Offline mode for Registration, Screener, and Pharmacy Modules

Brief explanation: In rural hospitals and clinics, cell and data connectivity is sporadic and bandwidth-limited. A point-of-care system needs to be responsive, so caching data on connection fail is a requirement. Your project is to build a cache all relevant data for offline mode, then sync when internet is available.

Used Technologies: JavaScript, HTML5, Sencha/ExtJs, SQLite

Primary Mentor: John Stoecker

Secondary Mentor: Surajit Nundy

Suggested Reading:


Familiarize yourself with the Registration, Screener, and Pharmacy modules on

Propose a cache model using Sencha caching/session storage/SQlite

Cache patient record/data/images when POST fails

Create dummy records when GET on patient fails

Use lists of most-used resources when GET on diagnosis/drug fails

Document your cache, so when patient record data model changes, we can easily cache these

Project: Implement a timeline-based view for patient record images

Brief explanation: Currently, patient images are saved as part of the whole patient record. A useful image viewing tool for doctors would allow them to view similar images over time, seeing how a lesion changes, or how a bone/ligament is healing in an x-ray. In this project, you would create an interactive, intuitive image gallery viewer tailored specifically for medical data over time. Some features this project might include are editing images (such as circling interesting areas of an x-ray) and adding ICD-10 tags to an image.

Used Technologies: JavaScript, HTML5, Sencha/ExtJs

Primary Mentor: John Stoecker

Secondary Mentor: Nathan Leiby


Familiarize yourself with the Outpatient module on

Propose a cache model using Sencha caching/session storage/SQlite

Cache patient record/data/images when POST fails

Create dummy records when GET on patient fails

Use lists of most-used resources when GET on diagnosis/drug fails

Document your cache model, so we can easily change caching when the patient record model changes

Project: 2-way SMS menu for patient-facing module

Brief explanation: Medical data must be accessible to a patient through many channels. With this goal in mind, you will create an interactive module to allow a patient to access and edit their information through SMS. Patients will be able to edit their details, view structured medical data, see current prescriptions, and control who is allowed to access their records.

Used Technologies: Java, OpenMRS, Spring/Hibernate

Primary Mentor: John Stoecker

Secondary Mentor: Surajit Nundy

Suggested Reading:


Familiarize yourself with REST api's for mvaayoo's SMS gateway

Familiarize yourself with OpenMRS' data model and the creation of OpenMRS modules

Implement simple session security that checks whether an incoming SMS matches phone number stored for a patient

Connect to mvayoo SMS gateway API to allow GET/POST calls on these OpenMRS resources: person, patient, obs, orders, encounters

Project: Unsupervised Acoustic Model Trainer

Brief explanation: Most languages, especially the ones used in rural parts of the world, don't share the privilege with languages like English, French and Russian, of existence of vast quantities of freely available and carefully transcribed audio data. This forms a bottle-neck in creating a usable speech recognizer for decoding such languages. However, technology like this could form a potential backbone for any organisation providing support in rural regions. Hence, we want to make an unsupervised acoustic model training system that creates it's own database and an acoustic model from audio collected by JSS and it's supporting organisations.

Used Technologies and Prerequisites: CMUSphinx, Java, Machine Learning, CSS CouchDB

Suggested Reading:

Mentor: Apurv Tiwari

Secondary Mentor: TBD




Project: Lab Reports

Brief explanation: The laboratory module needs to generate a variety of reports: test results, daily log, exception reports, monthly statistics, quality control charts, etc.  Some of these reports will be saved as PDFs and possibly printed, others will be exported to Excel or other tools.  The lab module will also need a report and parameter selection screen.

Used Technologies: BIRT or iReport for report generation, Java for integrating the report generator into the module, jsp with jquery and/or HTML5 for the report and parameter selection screen.

Mentor: Piyush Madan




Project: Arden Syntax Implementation

Brief explanation: Adapt and extend OpenMRS' Arden Syntax implementation at Raxa EMR. The EMR has a data structure derived from OpenMRS on which we are creating point-of-care and after-care interfaces for both providers and patients. These interfaces will have intelligence, both heuristically-derived and data-driven, to provide support so that providers and patients can make evidence-based, informed decisions about their plan of care. These rules will be implemented using Medical Logic Module interfaces such as the Arden Syntax, so that the rules created here can be used by other such systems, and so that rules from other systems can be implemented easily here. During this project, we shall be creating the software interfaces to implement rule-based validation and suggestions during provider data entry and patient behavior.


Raxa JSS EMR Decision Support

Used Technologies: Arden Syntax, OpenMRS


Familiarize yourself with the Arden Syntax as implemented in OpenMRS

Create service for Arden Rules (e.g.

Create user interface using HTML5/Javascript/ExtJS4 that will allow non-developer users to create rules for the system on the backend

Add REST service to the backend to serve Arden Rules to module apps

Insert calls to the REST service in the Outpatient Module frontend code so that Arden rules can be followed

Primary Mentor: Surajit Nundy

Backup Mentor: Dr Rachna Kucheria

Project: E-Triage System

Objectives: Develop e-triage system

Reason: In rural areas of India and other similar parts of the world, patient-doctor ratios may be 10000-1 or lower.  Alternative technologies are required to enable emergency response and for optimal connection of doctors to patients. The objective is to develop an IVR setup that patients can call into.  The patients will be guided through a brief dialogue system that supports natural language queries and requests. The spoken input will be analyzed, and based on its contents, the system will automatically connect the patient to the optimal available doctor or hospital, where "optimality" will be decided based on emergency level of the call, distance of the patience to the doctor, the doctor's current load and other such factors.  In cases of epidemics or other obvious illnesses, the system will also dispense emergency advice to follow before getting to the doctor.

Used Technologies: Open source speech recognition, dialog system and natural language processing tools.

Primary Mentor: Apurv Tiwari

Backup Mentor: TBD

Project: Medical Disaster Response

Objectives: Implement voice-based input/output modalities for a Disaster response system for Raxa

Reason: Disasters, ranging from medical disasters such as cholera or malaria, to earthquakes, floods, etc. require immediate response, access to information, etc. The objective is to adapt disaster management tools into the Raxa structure, with to implement voice-based mechanisms for populating the information databases in it via human input, in addition to current methods, as well as voice-based responses.

Used Technologies: Open source disaster response tools from, open source speech recognition, synthesis and dialog system tools,Ushahidi

Primary Mentor: TBD

Secondary Mentor: TBD

Project: UI for Raxa EMR Analytics and Reporting

Objectives: To create an intuitive, beautiful, and easy-to-use interface for accessing information about the relationships between disease prevalence, geography, demography, the seasonality of illnesses and other contributing factors to health.

Reason: To make healthcare information meaningful, useful and effective in the service of providing better levels of care, providers need to quickly, conveniently access and analyze the data captured in an EMR. The objective is better evaluate treatment protocols, staged interventions and physician responsiveness to the leading causes of morbidity and mortality.

Used Technologies: Open source technologies such as Pentaho, I2B2, Sencha Touch Charts, Greenplum Chorus

Primary Mentor: Surajit Nundy

Secondary Mentor: Shuro Nundy

Project: Geolocation and Mapping Tools

Brief explanation: Create a flexible tool to overlay useful data on a local village maps. The primary focus of this mapping task is to assist community health workers in finding patients and monitoring/updating village-specific data (clean water access, disease trends, landmarks). A major requirement is to emphasize that aspects of this data should be accessible and editable while offline (downloaded/updated while in WiFi areas). This work should be developed in coordination with the Analytics and Reporting project, to ensure maximum overlap in shared functionality.

Used Technologies: OpenLayers, OpenStreetMaps, GoogleMaps , Leaflet, Cloudmade
Nathan Leiby

Project: Patient Medical Timeline

Brief explanation: This is basically an idea taken from facebook timeline. Just like we have the timeline in facebook, we could have a timeline of the patient's medical history. Reports like X-ray report, blood report etc will be attached to the specific point in history, which would make it easy to understand and access it, instead of having all attachments in either hard-copy or dumped in a single folder. Later in years to come, we can come-up with ideas to share/export data with other doctors, say for example the patient moves to city for better treatment.

Used Technologies: TBD

Project: CHW Project

Background: Many are community health workers are semi-literate, and request help with decision making. CHWs want knowledge in a particular format; many have an aversion to writen text and would succeed more with images and and audio. The platform must be appropriate.We are working with various technology platforms to provide a couchy feel of application for use by public health at Raxa


Develop a case management platform to allow for users to implement case management for common diseases in JSS

Implement MOTECH engine of connecting to openmrs for platform communication

Improve task management of community health workers

Added benefit: These are not core tasks, but will add a plus if implemeneted:

Implement Arden decision rules support for the mobile platform

Improving patient matching and record linkage strategies with the main JSS openmrs system.

Used Technologies: HTML5, Javascript, CSS CouchDb
John Stoecker

Backup mentor : to be decided