Skip to end of metadata
Go to start of metadata

You are viewing an old version of this content. View the current version.

Compare with Current View Version History

« Previous Version 3 Next »

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 Name & Expected Outcome

Rating and Size


Project Description

Skills (Required / Preferred)

Selected Contributor

Primary Mentor

Backup Mentor

Pending Project Ideas

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.

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.

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.

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).

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.

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.

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.

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

Improved Audit Logging

Medium

We added Hibernate Envers for audit logging in OpenMRS 2.7.0, but right now, there’s no easy way for admin users to view or manage these logs. One idea is to build a backend module to handle this.

Here’s what it could include:

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.

I played around with this idea and only had time to put together a very basic UI, which you can check out here: Audit Log UI Module

Wikum Weerakutti

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

herman muhereza

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

Better way to receive feedback from clinicians / users

Stricter Typescript configuration for strong typing

Chi Bong Ho ?

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.

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.

Program Timeline

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

  • ONGOING GSoC 2025 preparations: Community Brainstorming

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

  • DEADLINE February 11: Mentoring organization application deadline

  • 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

  • No labels