Indicators
Introduction
SanteDB's business intelligence system allows for developers to define key performance indicators which are captured and executed on defined periods. Over time, these indicators allow data analysts to determine improvement or deterioration of a KPI over time.
Indicators differ from a Reportsin that an indicator allows for more granular investigation of the change of a population or indicator score over time. Examples of indicators are:
The number of patients who present a certain symptom compared to the total patient population
The number of children who received a vaccination compared to the total population of children
The number of abnormal temperature events detected in a facility as a proportion of all temperature readings
In SanteDB's BI implementation, and indicator is comprised of:
Metadata about the indicator (such as authorship, identification, status, etc.)
A query definition - the source of data which is used to populate the indicator
A period definition - the recurrence of measure for the indicator (example: monthly, weekly, etc.)
A subject definition - the person/place/organization against which the indicator is measured
Measurements - the computed measurements for the indicator
Stratifiers - if the measurements are dis-aggregated (for example: by age, by gender, etc.)
The output of an indicator is a structured result containing discrete data values for numerators, denominators, exclusions to the denominator, etc.
Defining an Indicator
An indicator is defined by creating a new .xml file in the bi/directory of your applet. This file starts with the BiIndicatorDefinition element and the standard BI metadata.
Defining a Query
An indicator must be derived form a Query. This query can be referenced from a shared query (see: Queries) or can be an inline query. If your indicator shares information with a report which is generated in SnateDB, you can reference the query directly:
If, however, our indicator extends the query org.example.bi.queries.someReportSourcewe would reference this query and extend it. In the example below, we normalize someReportSourceby preparing our stratifier columns to their display names:
Defining a Period
Your indicator definition should define a period (how often the indicator is computed) and a subject (the place, organization, or other entity against which the indicator is being measured).
SanteDB provides four standard period definitions:
org.santedb.bi.core.period.yearly
Every year (Jan 1 - Dec 31)
org.santedb.bi.core.period.monthly
Every month (first of month to last day of month)
org.santedb.bi.core.period.weekly
Every week (monday - sunday)
org.santedb.bi.core.period.daily
Every day (00:00 - 23:59)
The period is defined using the <period> element, to reuse an existing period definition you merely need to express the parameters in your query to which the period bounds apply:
To define a custom period, you will need to define a few additional elements:
Defining a Subject
The subject defines the objects against which the indicator is being measured. A subject is defined using the <subject> element:
Defining Measures
Finally, an indicator must contain one or more measure definitions. A measure definition instructs the BI layer how to compute the indicator for each of the periods and subjects identified. Each measure is contained as an <add>element in the <measures>.
The example above would result in an indicator which may be represented for each facility as:
bcg
100
110
bcg:under_24h
80
90
bcg:over_24h
20
20
bcg:under_24h:Male
45
50
bcg:under_24h:Female
35
40
bcg:over_24h:Male
15
15
bcg:over_24h:Female
5
5
Last updated
Was this helpful?