Role Based Menus
From OpenEMR Project Wiki
- Starting in OpenEMR 5.0.1, there is support for role based menus. There are several standard menus and there is a mechanism to support unlimited number of custom menus.
Main Menu
Allows customisation of OpenEMR's main menu.
- Select menu for a user in Administration->Users ('Main Menu Role' setting)
- Can select a standardized options (Standard, Answering Service, Front Office)
- Can select custom options which are stored at: sites/<site>/documents/custom_menus/
- An example of this is the Custom option (note that any .json menu file stored in above location can be selected)
Patient Summary Menu
Allows customisation of the sub-menu in the Medical Record Dashboard.
- Select menu for a user in Administration->Users ('Patient Menu Role' setting)
- Can select a standardized option
- Can select custom options which are stored at: sites/<site>/documents/custom_menus/patient_menus/
- An example of this is the Custom option (note that any .json menu file stored in above location can be selected)
Custom Menu Development Explanation
When developing a custom menu each menu item has the following fields
Property | Explanation |
---|---|
label | The English human readable label that will be displayed to the user. This value will be translated to other languages. |
menu_id | The unique string identifier that represents this menu item and can be used / referenced in code and module extensions |
target | The tab/screen that you want this menu to open or update. If an existing tab with this target is already open, clicking on this menu will replace that tab/screen's contents. Otherwise it will open a new tab/screen inside OpenEMR. |
url | The unique URL that will be opened when a user clicks this menu item. |
children | A JSON array of custom menu items (that follow the same format as described in this table) that will show underneath this menu item when it is hovered over |
requirement | A integer value between 0-5 that represents data that must be loaded and available from inside the OpenEMR interface.
|
acl_req | The Access Control List (ACL) to use for restricting access to this menu item. A single ACL can be provided with an ACL array of [section, value], or multiple ACLS can used with an array of [ACL, ACL,...]. If multiple ACLs are provided, the menu is displayed if the currently logged in user has access to any ACL. |
global_req | The menu item will display if the specified OpenEMR global setting exists and is truthy. You can negate this by putting an ! in front of the global setting name. An array of global settings can be passed into this property. If any setting is truthy, it will display the menu item. |
global_req_strict | The menu item will display only if ALL of the global settings exist and are truthy (or not Truthy if negated via !) |
An example menu item is below
{ "label": "Portal Dashboard", "menu_id": "por2", "target": "por", "url": "/portal/patient/provider", "children": [], "requirement": 0, "global_req_strict": "portal_onsite_two_enable", "acl_req": [ "patientportal", "portal" ] }