GSoC 2021: The REST of Administration
Primary mentor | @Daniel Kayiwa |
Backup mentor | @CLIFF GITA |
Assigned to | @Bartłomiej Rasztabiga |
This project is part of [ARCHIVED] GSOC 2021: Modernizing Administration functions for OpenMRS
Description
In order to meet our goal of migrating our administration functions to our new micro frontend framework, we need to make sure all of our administration functions are accessible through REST APIs. This is a unique opportunity to work at the heart of OpenMRS and with some of the most experienced OpenMRS developers while extending the capabilities of the platform.
The Legacy UI uses an extension point on its admin page to render a list of administration links for installed modules. This list can be seen on the advanced administration screen of the Reference Application (demo.openmrs.org) as everything listed after the "Modules" section in the third (rightmost) column. The "Modules" section is hardcoded onto this admin screen, but everything below it is dynamically generated based on which modules are installed and running in OpenMRS.
Modules implement the AdministrationSectionExt interface (examples: Basic Module and HTML Form Entry) to participate in this list. The goal of this project will be to find a backwards-compatible way to expose this list via the REST API to properly authenticated users (i.e., users who could see this list in the admin page of the Legacy UI should be able to retrieve the list of modules and their links via the REST API). This REST endpoint will be needed to allow a Micro Frontend-based administration application to discover and render the appropriate links.
Skills Needed
Proficiency with Java
Experience with designing and/or writing REST APIs
Interest in learning about the Fast Health Interoperability Resources (FHIR) standard
Objectives
Create REST endpoints for managing administration functions that are not yet available via REST - COMPLETED
Wherever possible & appropriate, build FHIR-based endpoints within the FHIR2 module (may not be relevant to this particular project) - COMPLETED
Issues
The goal of this project is to be able to render links to administration pages for install modules within a new (REACT-based) administration application. The links will still go to the legacy administration screens for most/all modules (probably best in a new tab to avoid losing context within the single page app running the new administration functions). Refactoring administration screens for the myriad of OpenMRS modules is not within scope for this project.
Resources
Extra Credit
Finding a way to support the admin list for installed modules that not only works for existing implementations (backwards compatible), but also works without requiring the Legacy UI module to be installed.