/
Summer of Code 2025

Summer of Code 2025

Write Code. Save Lives.

OpenMRS is hoping to be a mentoring organization for Google Summer of Code™ 2025! Since 2007, we've enjoyed participating in this great program and we're extremely excited about the projects and mentorship opportunities 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 public health challenges.

If you are new to OpenMRS, we recommend starting with our Guide to the New & Curious. It will introduce you to our community, the tools and spaces we use, and help you get to know the different squads and teams working on various community projects. For a more detailed history of who we are and what we do, please see here.

On this page ....

Google Summer of Code at OpenMRS 
om.rs/gsoc

Learn more about Google Summer of Code 2025:
Google Summer of Code website

GSoC 2025 Program Administrators

@beryl @Jayasanka Weerasinghe  

Please see GSoC Admin Guidelines for more information, or Org Admin Tips and Program Rules.

Projects for GSoC 2025

Project Ideas

Project Name & Expected Outcome

Rating and Size

 

Project Description

Skills (Required / Preferred)

Primary Mentor

Backup Mentor

Project Name & Expected Outcome

Rating and Size

 

Project Description

Skills (Required / Preferred)

Primary Mentor

Backup Mentor

Support for horizontal scaling of OpenMRS instances (talk)

Large

In the scope of the project would be (depending on the progress we make using other contribution channels):

  1. Adjust codebase across core and O3 modules to use a new storage service described here.

  2. Adjust code in core and O3 modules to use distributed caching

  3. Experiment with Hibernate Search using OpenSearch as backend instead of a local Lucene index.

Java, Hibernate

Rafal Korytkowski

@Rafal Korytkowski

 

Interactive Builder for Form Translations within the Form Builder

Large

Right now, in order to add translations to a form, the way to do this to add it to a configuration folder that can be picked up by Iniz. This is annoying because

  1. You’d need a developer’s help to know what to do and where to do it

  2. The JSON file format is quite different from that of a form, so its not very intuitive for a non-techy person to do

  3. There’s no a dynamic and user-friendly way to do it

The ideas is to create a UI that would enable users to add the translations for a form for any language.

React, CSS

@nethmi

 

Archiving voided data

Large

Voiding in OpenMRS is a form of soft-deleting. We basically set a binary column to 1 and attempt to ignore data at various points. Voiding data is meant to mark it as invalid for one reason or another (e.g., an obs has been superceded or data was recorded against the wrong patient). This is very useful, because voided data can be easily restored, but over the long term (especially with “immutable” objects likes obs), this causes some OpenMRS tables to grow to contain far more voided data than non-voided data. To address this, we should add a mechanism to archive voided data with the possibility of restoring it.

Java, Hibernate

 

TBA

@Wikum Weerakutti

Service Queues

Medium

We have a service queues app in O3, which is functional, but needs some attention, both to the frontend design and to the backend APIs that are used to populate it. The goal here would be to fix various UI issues and improve the overall performance and reliability of the queue module. The Service Queues view is incredibly useful for managing outpatient clinics, allowing users to track who is waiting for service, how long they’ve been waiting for etc.

React

@Ian Bacher

 

Improved Appointments Calendar View

Medium

We have an appointments calendar that is meant to give an overview of appointments. Unfortunately, it is currently less useful than it should be. A few things we need to address: the ability to drill-down into, e.g., monthly, weekly, and daily views; the ability to see all appointments, not just the number per service, instead of changing screens when clicking on a day or service, the app should likely display a modal; the calendar view should not be hard-coded around the Gregorian calendar, but support the various calendars from the @internationalized/date package.

React

TBA

 

Extend Performance Tests

Medium

The current load tests cover only two scenarios, limiting performance insights. This project aims to:

  • Identify key scenarios that should be tested for better system performance evaluation.

  • Implement additional performance tests to ensure comprehensive coverage.

  • Enhance the existing test framework for scalability and reliability.

This will improve OpenMRS’s ability to handle high-load conditions and optimize system performance.

Repo: OpenMRS Performance Tests

Java, Gatling

@Jayasanka Weerasinghe

 

Improved Audit Logging

Medium

We added Hibernate Envers for audit logging in OpenMRS 2.7.0, but right now, admin users cannot easily view or manage these logs.

This project aims to build a backend module that can

  • Show Audit Logs: Pull and display audits for database tables.

  • Filters: Let users filter logs by things like who made the changes, when, and what they changed.

  • REST Endpoints: Add APIs so other systems can access the audit data.

Java, Spring, Hibernate

@Wikum Weerakutti

@Manoj Rathnapriya

Enhancing Swagger Documentation: Automating OpenAPI Specification Generation

Medium

Errors related to the Swagger documentation have been under review, with efforts made to upgrade it to the latest versions of OpenAPI (or a similar version). The necessary pull requests have already been submitted.

For this GSoC, it is suggested that, in addition to the ongoing work, efforts should be directed towards developing tooling or a mechanism that would enable the automatic generation of Swagger documentation by analyzing Javadocs, return types, and other relevant elements. Some work has already been undertaken to achieve this, utilizing reflection to scan OpenMRS resource handlers. It is proposed that further developments be made on top of this existing foundation to enhance the envisioned tooling.

The ultimate objective is for the OpenAPI specification to be generated at compile time rather than at runtime, as is currently the case. This shift would ensure that errors are identified at compile time rather than being detected during runtime.

For reference,

Improving Our Swagger Documentation Process

Upgrade swagger from 2.0 to swagger/openapi 3.0

Challenges with Existing OpenAPI Documentations

Java, OpenAPI

@Chi Bong Ho

@herman muhereza

OpenMRS Standalone

Large

Replace the Standalone with something else. Very old, can’t even build in our latest releases - we disable it as the technology no longer works and is no longer supported. We now just ship the .war file and README. Suggestion to leverage Docker - something that works by double clicking and then just runs.

We never intended to use the OpenMRS Standalone version in production. But it turned out to be used in a number of places because they found it easier to use for sites that did not have support staff with advanced IT skills. We are also seeing an increasing number of people in our community who do not have lots of computer skills and just want something to download, click and run for their hospitals.

Java

@Daniel Kayiwa

 

Improved Implementer Tools

Medium

The Implementor Tools in OpenMRS can be enhanced for better usability and functionality.

Proposed Improvements:

  • Color Picker & Preview: Currently, only the hex code is shown. Or at least adding a color picker and visual preview would improve user experience.

  • Better Nested Object Handling: The UI editor struggles with nested objects, making it harder to edit complex structures.

  • Font Visibility Fixes: Some font colors blend into the background, affecting readability. Improved contrast would enhance accessibility.

Other potential improvements include better validation, UI optimizations, and enhancements to streamline configuration. These changes will make the tool more intuitive and user-friendly.

React

@Vineet Sharma

 

Integrating Data Filter for Data Segregation / Multi-tenancy

Large

Data Filter is a powerful module that uses Hibernate’s filtering APIs to add additional where clauses to various SELECT statements. The use-case for this is to allow system-wide filters to be applied to the data added. Currently Data Filter includes a default set of filters that restrict the availability of data on patients to a set of locations a user has access to. The point of this project would be to expand on these capabilities to add things like: an administrative UI for associating users and patients with specific locations, additional rules to account for the various modules used in the O3 RefApp, templates for additional rules that may be useful (i.e., tie the ability to see obs with certain codes to certain privileges).

Java, Hibernate

TBA

@Joshua Nsereko ?

@Wyclif Luyima ?

 

Fix the Fast Data Entry feature

Medium

  • The Bulk Data Entry feature (BDE) is broken and unusable in the OpenMRS community’s main product (the O3 RefApp). No community organization or contributor has had the time or ability to fix this, and yet it is an important foundational feature for OpenMRS users.

  • The goal of this project is to fix the BDE feature and get it useable again in the O3 RefApp, primarily by engineering the feature to leverage the React Form Engine instead of the Angular Form Engine.

React

@Samuel Male

 

Forms Migration Tool: Help HTML Form users switch to using O3 React Forms

Medium

  • Many OpenMRS implementers have used HTML Forms (HFE) for many years. Some organizations have dozens or even hundreds of OpenMRS forms encoded in HTML. This makes it intimidating to consider moving to O3, since O3 uses a custom Form Schema.

  • There was a previous community project with scripts that help convert HTML forms into the O3 Form Schema for the Angular Form Engine. This did not convert 100% of the form into the new schema, but got most of it done (60-80%) so that it is faster for a team to work on the transition.

  • This project needs to be (1) updated to enable implementers to convert HTML forms into the newer React Form Engine schema, and (2) documented to explain how to use it.

 

 

 

Immunization & Vaccination Schedule app for O3

Medium

  • Immunization Schedules (timings) are a key feature to make sure people (especially children) get the right vaccinations, at the right times, and enough of them, so that they are safely covered from diseases.

  • This visual project will make it easier for clinicians to see how many doses a child/person has had, and what immunizations they are due for.

React

 

 

Growth Chart App for O3

Medium

  • Growth Charts are a common need in Primary Health Care for children (pediatrics). Growth Charts are available in O2, but never yet added to O3.

  • With more and more implementers using O3 for care that involves infants, babies, and young children, we need Growth Charts in O3!

React

 

 

Pending Ideas

These ideas are either not well-defined or lack sufficient mentors. If you're interested in becoming a mentor, feel free to reach out to our organization admins.

Project Name & Expected Outcome

Rating and Size

 

Project Description

Skills (Required / Preferred)

Primary Mentor

Backup Mentor

Project Name & Expected Outcome

Rating and Size

 

Project Description

Skills (Required / Preferred)

Primary Mentor

Backup Mentor

Appointments

Medium

Scheduling appointments is an important function of an EMR. Unfortunately, the RefApp is currently stuck on an older version of the appointments module. What we would probably want to do here is (unfortunately) fork the appointments module to get the various fixes the OpenMRS community needs, update to the latest version of the module.

Java, Hibernate, Spring

 

TBA

 

Dynamic EHR: Custom Home screen (and other screens) based on User roles, locations and other values. (doc)

 

Medium

We would like to show UI elements on the O3 home page and other pages that are most relevant to the user. Currently, there is ability to do so based on User privilege. However, this is limiting and not general enough. We would like to define what to show based on other values, such as Location, currenting displayed Visit / Encounter, etc…

More generally, this can be solved by having a way to write custom logic (in the form of a reduced set of JavaScript expressions) to define whether an Extension should be shown. There is actually something (what?) similar in O2 already. We should be able to inject dynamic variable

 

React

 

Stricter Typescript configuration for strong typing

 

 

 

?

 

Better way to receive feedback from clinicians / users

 

 

 

 

 

 

Program Timeline

Look here for more info on the full GSoC 2025 program timeline.

  • DONE GSoC 2025 preparations: Community Brainstorming

  • Done January 27: Mentoring organizations can begin submitting applications to Google

  • Done February 11: Mentoring organization application deadline

  • Pending February 27: List of accepted mentoring organizations announced

  • February 27 - March 24: Prospective GSoC Contributors reach out to Accepted Mentoring Orgs, discuss application ideas

  • March 24:  GSoC contributor application period begins

  • DEADLINE April 8: GSoC contributor application deadline: Prospective GSoC Contributors Submit their 2025 Applications (includes proposals)

  • DEADLINE TODO April 29: GSoC contributor proposal rankings due from Org Admins

  • May 8: Accepted GSoC contributor projects announced

  • May 8 - June 1: Community Bonding Period. Students get to know mentors, read documentation, prepare for work on their projects

  • June 2:  Coding officially begins

  • July 14: Mentors and GSoC contributors can begin submitting midterm evaluations (for standard 12 week coding projects)

  • DEADLINE TODO July 18: Midterm evaluation deadline (standard coding period)

  • July 14 - August 25: Work Period | GSoC contributors work on their project with guidance from Mentors

  • August 25 - September 1: Final week: GSoC contributors submit their final work product and their final mentor evaluation (standard coding period)

  • DEADLINE September 1 - 8th: Mentors submit final GSoC contributor evaluations (standard coding period)

  • September 1 - November 9: GSoC contributors with extended timelines continue coding

  • DEADLINE November 10: Final date for all GSoC contributors to submit their final work product and final evaluation

  • DEADLINE November 17: Final date for mentors to submit evaluations for GSoC contributor projects with extended deadlines

Guidelines

OpenMRS resources to know