Improved Implementer Tools (GSoC 2025)
Summary
The implementer tool is a tool to help non-technical implementers/administrators customize/ tune the OpenMRS 3 as per their requirements.
Project Size: Medium
Project Link
https://github.com/openmrs/openmrs-esm-core/tree/main/packages/apps/esm-implementer-tools-app
Pre-requisite knowledge
Configuration System: Configuration System
User case
A few use cases of the implementer tools are as follows:
Change the theme of the project
Customize fields in the patient registration form
Add/ remove extensions/ widgets on an extension slot. For information on Extensions/ Extension slots, please refer Extension System
Add translations for texts in the system and more: Refer this configuration file from Ozone Cambodia to understand more about Translation Overrides.
Add display conditions for extensions and ESMs based on users' privileges. Refer this configuration file from Ozone Cambodia to understand more about Display Conditions.
Current Implementation
The current implementation of the Implementer tools uses the Carbon’s Dark Theme as shown in the image below. The change in the theme symbolizes that it’s not a part of the main UI, but is a separate entity.
As is visible, different micro-frontend apps are listed as accordions, which when expanded display different configurable points related to the expanded app, along with information about the configuration point on the right side.
The configuration value can be of different types:
String
Numeric
Boolean
Array
Objects
Concept UUIDs
Work to be done
Theme
As mentioned above, the implementer tools uses the dark theme, but the issue with the same is that the dark mode is currently implemented as style overrides, rather than following the Carbon’s theme guidelines.
Fool-proof UI
In case a config point is not defined properly in the given ESM, and the user tries to edit that property, the implementer tools UI breaks down. These edge cases need to be handled properly, such that the UI doesn’t break.
Also, the Implementer tool needs to properly handle editing the object values as well.
Better support for adding translation overrides
As mentioned, the implementer tools should also provide support for adding translation overrides natively in the UI.
Better support for adding, removing, and modifying extensions
As mentioned, the configuration system allows adding, removing, and modifying extension and extension slot properties, which is currently implemented, but not useful much.
Support for adding privilege-based display conditions
The configuration system allows adding display conditions based on the user’s privileges so that users can view apps/ extensions only if the user has the mentioned privileges.
Saving the updated configuration on the server
Currently, the overrides added in the implementer tools are only added locally to the user’s local storage. The user must be able to save the overrides in the server using an API (TBC) so that it’s valid application-wide for all users.
Open to new findings
The improvement is not only confined to the above pointers but new findings related to where the implementer tools can be improved is also a huge bonus when submitting proposal.
Still have some doubts?
In case of any doubts, you can contact @Vineet Sharma on OpenMRS Slack, or OpenMRS Talk.