GSoC 2021: People Management
Primary mentor |
|
Backup mentor | @Pahonsi Bebeto Achile |
Assigned to | TBD |
This project is part of [ARCHIVED] GSOC 2021: Modernizing Administration functions for OpenMRS
Description
Porting administration functions for managing people within OpenMRS to OpenMRS 3.0: A Frontend Framework. This project focuses on user accounts, patients, providers, and their associated person records.
The primary goal of this project is to creating working micro frontend module(s) for these administration functions that can plug into the Administration Dashboard, meaning these functions will be expected to be developed using the best practices defined by the OpenMRS 3.0 Frontend Framework (Carbon Design, React/TypeScript) and register with the administration dashboard (mechanism to be determined), providing a title and a React component to render the administration function(s). The dashboard project will be responsible for organizing available administration functions, overall screen layout, and navigation between administration functions.
This project may include writing Java code to extend the REST Module to create needed REST endpoints. Those functions that have been implemented as Open Web Apps (OWAs) likely have the necessary REST endpoints, but functions that exist only in the legacy UI may not have yet been exposed as REST endpoints. The REST of Administration project can help in filling these gaps.
"OWA" refers to Mozilla's Open Web Apps (OWA), a legacy standard from 2010 that existed before frontend frameworks like React, Angular, Vue, etc. were popular. In the early 2010s, OWAs were an attempt in the OpenMRS community to use a standard to create client-side applications. OWAs are not recommended for new development; new development is encouraged to adopt conventions of the new Frontend Framework.
Project Champions
@Burke Mamlin
@Daniel Kayiwa
Skills Needed
Familiarity with Java and JavaScript
Familiarity with React and TypeScript
Good understanding of REST
HTML/CSS
Objectives
Create a "Hello World" ESM module to plug into the Administration Dashboard following conventions of the Frontend Framework (React, TypeScript, Carbon Design). See this page for an overview of the plan. The module should register itself as an administration function and, when selected, display it's "Hello World" within the Administration Dashboard's content pane.
Implement the following administration functions as ESM module(s), each registering as an administration function.
For those administration features that do not have existing REST endpoints, create (or coordinate with the GSoC 2021: The REST of Administration project to create) those endpoints by extending the REST Module.
Below are the administration functions to be recreated in the new frontend framework. Examples of existing versions of each functions (in the Reference Application, as an OWA, or in the Legacy UI of OpenMRS 1.x) are provided for reference.
Users
These functions provide the fundamental tools to manage users within OpenMRS. See System Administration > Manage Accounts in the Reference Application.
Reference Application 2.x implementation for Manage Accounts - github pages & fragments
Reference Application 2.x implementation for roles & privileges within Configure Metadata - github
Legacy UI implementation in Advanced Configuration - github
Manage Users* | List and search users, add/edit user form
Extra credit
|
Manage Roles* | List, search, add, edit, and delete roles. Prevent system roles from being edited/deleted. Extra credit:
|
Manage Privileges | List, search, add, edit, and delete privileges. Prevent system privileges from being edit/deleted.
|
Manage Alerts | Create system-wide messages.
|
Person
These functions provide administration for Person entries and associated metadata within OpenMRS. In OpenMRS, a Person is used to store demographic and other person-specific information for Patients, Users, Providers, and people related to patients (children, relatives, caretakers, etc.)