Starting with version 1.15, the Core Apps module provides support for context-specific dashboards.
What they are
The reference application provides a clinician-facing dashboard that is highly configurable–it has two columns, and an implementer, via json, can configure a variety of different widgets to appear within these two columns. However, previously only a single dashboard was available. Context-specific dashboards allow implementer to define multiple dashboard configuration based on context. The only concrete implementation at the moment are program-specific dashboards, but the functionality is meant to support a variety of different configurations in the future.
How they work
The standard clinical dashboard is configured via several extension points, including:
This functionality has been extended so that the clinician-facing dashboard page controller takes in an optional parameter dashboard. If this parameter is present, the controller will look for a different set of extension points, with the "patientDashboard" component of the extension point name replaced with the parameter passed in to "dashboard". For example, if the page request included "dashboard=myFirstDashboard" then the controller will load any extensions it finds for the following extension points:
Additionally, if message property is defined in the format myFirstDashboard.custom.title, this title will be rendered at the top of the dashboard (below the patient header but above the two dashboard columns)
By using the context-specific dashboard in conjunction with the Programs List widget (see Patient Summary Widget Documentation) implementers are able to create dashboards customs to certain programs.
The Programs List widget can be configured to provide links to to a Program-Specific Dashboard by setting an "enableProgramDashboards" configuration to true. When this is set to true, the widget will create hyperlinks for each of the configured programs. This will link to the patient dashboard, but will pass in the uuid of the program as the dashboard parameter.
For example if the implementer has created an HIV program with the uuid "some-uuid-aaaa-bbbb" and configured that program to be listed as part of the Programs List, a custom dashboard could be defined for that program by adding extensions via the following extension points:
Note that the Program Status and Program History widgets (Patient Summary Widget Documentation) are specifically designed to appear on a Program-Specific dashboard to facilitate enrolling a patient in a specific program and managing patient program enrollment.