Introduction
O3 is a modular, extensible frontend framework for OpenMRS. It provides shared components, APIs, and templates so teams can build user interfaces faster.
Recommended learning paths
For developers
Developer path
Core Concepts → Frontend Modules (setup, development, testing, releasing) → Extension System → Workspaces → Framework API Reference
For implementers
Implementer path
Core Concepts → Configuration System → Configure O3 → Feature Flags → Forms in O3 → Recipes
Guiding principles
O3 is guided by the following principles:
- Reuse over rework - shared components, APIs, and templates reduce duplicated effort.
- Modular by design - add, remove, or update modules without rebuilding the system.
- Configuration-first - each frontend module declares its config properties.
- Usability first - optimized for point-of-care workflows and complex clinical records.
- Modern stack - approachable for a global developer community.
- Interoperable - built to work with FHIR and other standards.
What O3 is not
O3 is not a new platform version of OpenMRS. It runs on top of your existing database and uses the same REST and FHIR APIs as the O2 UI. While O3 requires minimum versions of the platform and some backend modules, you do not need to overhaul your backend to use it. To run O3 on an existing installation, follow this recipe.
Technology stack
Frontend
- React - JavaScript library for building user interfaces
- TypeScript - strongly typed superset of JavaScript that adds optional type annotations to JavaScript, which allows for static type checking and better tooling support.
- Carbon design system - an open-source design system from IBM.
- Single SPA - JavaScript router for frontend microservices.
- Rspack and Module Federation - build and runtime-sharing tooling for current React frontend modules. Older modules may still use Webpack-compatible configuration.
Backend APIs
Important resources
Docs and repositories
Design resources
Community
Learning
Last updated on