Wiki Spaces
Documentation
Projects
Resources
Get Help from Others
Q&A: Ask OpenMRS
Discussion: OpenMRS Talk
Real-Time: IRC Chat | Slack
Archived Project
This page was archived as of Feb 2 2022. The information on this page may not be up-to-date or maintained.
tl;dr – OpenMRS is moving from legacy server-rendered pages to React using Carbon Design within a micro frontend framework. To help implementers make this transition, we need to port our administration functions from the legacy approach to the new framework. This requires a combination of frontend and backend work that we've divided up into several GSoC projects.
OpenMRS is used in over 40 countries, including several large scale national deployments, supporting the care of people with HIV, tuberculosis, malaria, and cancer as well as helping maternal child health programs. Over the past 15 years, organizations and countries have adopted OpenMRS to meet local needs. In some cases, this has resulted in different distributions (“flavors”) of OpenMRS, including Bahmni, KenyaEMR, UgandaEMR, NigeriaMRS, etc. As frontend technologies have evolved quickly over the past 5 years, many sites have started making their own frontends for the platform. It’s exciting to see how many developing countries can adapt OpenMRS to meet local needs; however, these developments have made it harder for different sites & different countries to share functionality across implementations. The OpenMRS community has embraced micro frontend architecture to help bring these diverse efforts into a unified frontend framework. In the meantime, all of these various flavors of OpenMRS still share two features: (1) they all use the same OpenMRS platform/backend and (2) they all still rely on the original administration screens (built in 2005 by Ben Wolfe, the first programmer for OpenMRS) to manage their settings, user access, and other metadata. As it turns out, one of the most widely used OpenMRS modules worldwide is our Legacy UI module – created during GSoC 2015 – that allowed the legacy administration functions to run in OpenMRS 2.x.
You could make a valuable contribution to OpenMRS by helping us port these legacy administration functions into our new micro frontend framework.
Since there are dozens of administration functions and a good chunk of these functions do net yet expose REST endpoints for a React app to use, so this larger goal has been divided into several GSoC projects.
As part of the micro frontend framework, projects that build frontend assets will need to follow the conventions of this framework (e.g., React with TypeScript and using Carbon Design).
While these projects will all work together toward the goal of porting our administration functions to our new frontend framework, the modular architecture of micro frontends makes it easier to break the work into pieces and allows them to have minimal direct dependencies. The most significant dependency between these projects will be ensuring REST endpoints are created for administration functions that do not yet have them. While each project could create their own REST endpoints, we have created one project to focus specifically on building these endpoints so the other projects can spend more time on frontend functionality.
By its design, the micro frontend framework provides a modular approach to frontend development. Even if some parts of this project were unfulfilled (e.g., if a student had to withdraw due to illness or other unforeseen circumstance), the remaining projects can still stand on their own. We also have a wonderful community of developers around the world (with whom you will soon be interacting if you haven't already), who can help in a pinch. When you're writing code to save lives, we're all in this together!
Micro frontends leverages the ECMAScript module specification to package and deploy frontend code in a way that allows a frontend application to be built in parts. In fact, some parts can be written in React and other parts in Angular or Vue. In a large project like OpenMRS, where contributors are working around the world, a framework like this makes it easier for work from multiple organizations to be woven together into a single application. It also allows implementations to customize the application to suit their local needs, since there isn't one solution that can meet everyone's needs.
The OpenMRS community needs to move away from server-side rendering of web pages (like JSPs) and toward contemporary development of client-side applications leveraging data via web services (FHIR whenever possible; otherwise our bespoke REST API). Now, with the work of the Micro Frontend Squad, we have a framework in which to build contemporary administration functions. This is the perfect time to rebuild our administration functions:
Given that Google Summer of Code is shorter than prior years, we do not anticipate being able to port all administration functions with this effort. Some functions that are not included are: