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