Setting and Reading Global Properties

Settings (formerly Global Properties from 1.9 downwards) are configuration variables that the user can set through the Administration menu, without restarting or recompiling the application. They're useful when module code needs to refer to a value that's unique to a particular installation, such as a concept ID number or a file path.

ADDING A SETTING (FORMERLY GLOBAL PROPERTY FROM 1.9 DOWNWARDS) FOR YOUR MODULE

Settings (formerly Global Properties from 1.9 downwards) are defined in your module's config file. The property is added when the module is started if it doesn't already exist in the OpenMRS installation. See the module config file documentation for instructions to define properties in your module.

READING A SETTING (FORMERLY GLOBAL PROPERTY FROM 1.9 DOWNWARDS) IN CODE

Setting (formerly Global Property from 1.9 downwards) values or objects can be retrieved through the API's AdministrationService. See the API documentation for AdministrationService and for the GlobalProperty class. 

Some of the core OpenMRS Settings (formerly Global Properties from 1.9 downwards) are described at http://wiki.openmrs.org/display/docs/Settings+Descriptions.

READING A GLOBAL PROPERTY IN A JSP

From the EHSDI 204 Module Development class slides on OpenMRS tags:

"<openmrs:globalProperty> tag:  Used to access global properties, which are name/value pairs stored in the database If var is specified, var becomes attribute with the property value If not, then property value printed to response   For example... The global property called "concept.weight" stores the ID of the concept to use for patient weight observations This can set as an attribute called weightConceptId as follows... <openmrs:globalProperty key="concept.weight" var="weightConceptId"/>"

To view the class slides, download the course material ZIP file .  Lesson 12 covers OpenMRS tags. 

SETTING A SETTINGS (FORMERLY GLOBAL PROPERTY FROM 1.9 DOWNWARDS) VALUE

Settings (formerly Global Properties from 1.9 downwards) are set in the Administration menu under Maintenance > Manage Settings (formerly Global Properties from 1.9 downwards). You can try it here on the demo site.  (Username is admin, password is Admin123).

To make it easier for users to configure your module, you can create an administration page that displays the Global Properties portlet. The portlet allows you to show only specific properties, rather than the entire list of Settings (formerly Global Properties from 1.9 downwards). Remember to add the link for this admin page to your module's extension.html.AdminList::getLinks() method so it appears on the OpenMRS Administration page.  

You can also redirect users to the configuration page with the RequireConfiguration Taglib when a value hasn't been set. 

In the API, some AdministrationService::getGlobalProperty() method signatures allow you to specify a default value.Â