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

  1. Configuration System: Configuration System

User case

A few use cases of the implementer tools are as follows:

  1. Change the theme of the project

  2. Customize fields in the patient registration form

  3. Add/ remove extensions/ widgets on an extension slot. For information on Extensions/ Extension slots, please refer Extension System

  4. Add translations for texts in the system and more: Refer this configuration file from Ozone Cambodia to understand more about Translation Overrides.

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

image-20250313-184327.png

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.

image-20250313-184614.png

The configuration value can be of different types:

  1. String

  2. Numeric

  3. Boolean

  4. Array

  5. Objects

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

 

Related content