/
Hacking Healthcare: My OpenMRS GSoC 2025 Adventure

Hacking Healthcare: My OpenMRS GSoC 2025 Adventure

Understanding OpenMRS

OpenMRS (Open Medical Record System) is an open-source, enterprise-grade Electronic Medical Record (EMR) system designed to improve healthcare delivery, particularly in resource-constrained environments.

Primary Features:

  • Patient Management

  • Clinical Data Management

  • Appointment Scheduling

  • Order Entry and Medication Management

  • Billing and Financial Management

  • User Management and Access Control

  • Reporting and Analytics

  • Interoperability and Integration

  • Microfrontend (O3) Framework for UI Development

  • Multi-language and Localization Support

  • Offline Data Capture and Syncing

  • Integration with External Health Systems

  • Security and Data Privacy

  • Deployment Flexibility

  • Community and Open-Source Support

Architecture

  1. Frontend (O3 - Microfrontend Architecture)

  • Developed with React, TypeScript, and Carbon Design System.

  • Modular design allows independent UI components for different workflows.

  • Communicates with the backend via OpenMRS REST API.

  1. Backend

  • Built with Java and Spring Framework, handling business logic and data processing.

  • Uses Hibernate (ORM - Object Relational Mapping) for database interactions.

  • Supports MySQL as the database and runs on Apache Tomcat.

  • Exposes RESTful APIs and GraphQL for frontend and third-party integrations.

  1. Modular System (OMOD - OpenMRS Modules)

  • Supports pluggable modules to extend features without modifying the core.

  • Enables custom workflows and integrations with external health systems.

  • Allows developers to build and share new functionalities easily.

    The Scope of this article is mostly related for frontend-related contributions from here.

Key Repositories:

  1. OpenMRS-ESM-Core: The OpenMRS Core repository is the central codebase of the OpenMRS platform, encompassing the primary API and web application components.
    git clone <https://github.com/openmrs/openmrs-esm-core
    It is packed in "@openmrs/esm-framework" which would be seen by you imported everywhere.

  2. OpenMRS-ESM-Home: Responsible for rendering the UI for the landing page after the user logs in.
    git clone <https://github.com/openmrs/openmrs-esm-home.

  3. OpenMRS-ESM-Patient-Chart: Responsible for all widgets or patient charts of individual patient. E.g. Allergies, Immunization, Biometrics and Vitals, Medications, etc. It is a nice place to start exploring UI as it is more near to what user actually sees.
    git clone <https://github.com/openmrs/openmrs-esm-patient-chart

  4. OpenMRS-ESM-Patient-Management: Responsible for CRUD operations of patients.
    git clone <https://github.com/openmrs/openmrs-esm-patient-management

Later try out,
OpenMRS-ESM-Form Builder
OpenMRS-ESM-Form-Engine-Lib

Installation and Exploration

Now, after cloning this for installation always follow README.md, mostly dependencies are installed by yarn and then yarn start or yarn start --sources 'package-name'.
Then login using Username: admin and Password: Admin123.

Now, explore the application first by using it extensively, clicking every button and doing every possible CRUD.

Pre-Requisites: Knowledge of React, TypeScript, SCSS, basic Programming Skills.
Now, after that start from root-named files then, index-named files and slowly dwell into codebase.

A puzzle that may be new to you: the Extension Slot, a placeholder in OpenMRS microfrontend modules where different UI components are dynamically injected at runtime. This enables customization without modifying the core code. As you explore, observe how functions validate requests and connect via APIs.
Then, OpenMRS also extensively utilizes IBM's Carbon Design System in its frontend development. Carbon offers a comprehensive set of UI components, such as buttons and layouts, along with design patterns and guidelines that ensure consistency and accessibility across OpenMRS applications, a bit like Bootstrap.
And the React i18next library enables multi-language support in OpenMRS by dynamically mapping keywords to translations based on user preferences, ensuring localization and accessibility.

The large codebase (338 Github Repositories as of 24 March 2025), might feel overwhelming if you're not an experienced developer, but keep going on!

Then, another thing read the JavaScript StyleGuide, README of this Repo and even JAVA StyleGuide if

Now, while installing dependencies, sometimes dependencies version mismatch is a common proper around, so edit it accordingly in package.json, or ask in OpenMRS Talk or Slack.
This article is also a lot helpful, you must refer this.

Ya, make sure to join OpenMRS Talk and OpenMRS Slack, its good for community bonding and doubts, suggestions, and clarifications in Development. Also, there are meetings going on according to the schedule, you may join them, it actually feels cool, engaging and professional.

Now, with that achieve atleast /dev/1 Badge in OpenMRS Talk for eligibility in GSoC. This article may guide you further.

Now, its time for actual contribution do code reviews, start from small PRs and move to larger and complex PRs by core members. Then, frame ideas and look for bugs and improvements, try already present issues, make your own pull request, according to proper guidelines, otherwise it may go unnoticed.

Here twist is JIRA, unlike other Open-Source Organizations GitHub Issues is not used, but JIRA, a Issue Tracker by Atlassian, so first open or claim a ticket in it and then make PR.
This article may help you. It’s easy to feel confused here, and beginner-friendly tickets may not be readily available. Take your time, search across all projects regardless of what you are focused on, applying filters like 'Ready for Work.' Many tickets might already be claimed, but that’s actually a sign of an active and thriving organization. So, be patient and persistent!

Don’t get confused between OpenMRS 2.x and OpenMRS 3.x! OpenMRS 2.x uses a server-side UI built with Java and legacy technologies, while OpenMRS 3.x is a modern, microfrontend-based system with a React-powered interface. When contributing, ensure you're working with the right version based on project requirements.

With this foundation, you're all set to navigate and explore the OpenMRS ecosystem codebase.
But remember, open source is a community effort so, don’t be a lone wolf!
Happy coding!

Regards,
Sarang Thakare
GSoC-2025 Aspirant

Related content