 |
This information is copied from [DEP:DHIS's general design] and need to be updated. |
The DHIS 2 data model
DHIS is designed to deal with statistical data, especially health data. The data is aggregated to an organisation unit level, typically that of a district clinic or hospital. User will register and sum up occurrences of for example the number of patient who were in for a consultation, the number of beds in the facility, etc.
There are a few basic concepts in DHIS, expressed as different classes:
Organisation units, organisation unit groups and organisation hierarchy
In DHIS 2 an organisation unit represents any clinic, hospital, province administrative office, national health institution or similar which can register and report data. Organisation units are organised in a hierarchy with a parent and a set of children. Each organisation unit is identified by a name and possibly an organisation unit code.
Organisation units can be created, mirroring when a new office is opened. Organisation units may be be moved around in the hierarchy, for example when province or district borders change. They can be removed, for example when the actual organisation unit is closed. Instead of removing an organisation unit in the system, however, one would simply chose to mark it as closed. This way it's history and data can be retained.
Organisation units may be grouped into logical groups, for example all organisation units which are ... Note that a valid group would not be all the organisation units in, for example, a district, as this is handled by the organisation unit hierarchy itself.
OrganisationHierarchy object...
This is represented by the OrganisationUnit, OrganisationHierarchy, OrganisationUnitGroup and OrganisationUnitGroupSet classes.
[uml]
Typical abbreviations include: org unit, orgunit, OrgUnit and orgUnit.
Periods and period types
A period represents a time span, from a given start date to a given end date. Each period is linked to a period type, which specifies what sort of span the period represents. Examples of periods are monthly, quarterly, yearly, etc. The period and it's period type is connected to the registering or reporting frequency.
[uml]
This is represented by the Period and PeriodType class.
Data elements, data sets and data element groups
Data elements refers to that which one can register data for. For example, when counting the number of TB vaccinated patients in a district, "Number of TB vaccinated patients" would be a data element. The data element defines what kind of data may be registered, either a number, a line of text or a yes/no selection. In the system this corresponds to an integer, a String or a boolean value. This means that DataValue objects which refer to this data element, must have data on the same type.
Data elements may be grouped into logical groups, for example all data elements which are ...
Data elements can be organised in data sets, typically a collection of data elements it is natural to register data or report for as a unit. An example would be all data elements related to AIDS information or to vaccines. The data set defines a period type specifying how often an organisation unit is supposed to report data for the set.
This represented by the DataElement, DataSet and DataElementGroup classes.
[uml]
As mentioned, data sets represent collections of data elements it is natural to report for. As such, it is possible to define an association between a data set and an organisation unit: This clinic must register data for this data set. This is accomplished by creating a DataRegisteringAssociation object which combines the two. This way, the data set is only defined once. It also makes it possible for organisation units to override the default period type by adding a FrequencyOverrideAssociation.
[uml]
Data values
A data value represents one value collected for one particular kind of data element, for one particular period, for one particular organisation unit. For example: In the local health clinic (the organisation unit) registered that five (the data value) people were vaccinated for TB (the data element) in January 2006 (the period).
This is represented by the DataValue class, which is connected to an OrganisationUnit, Period and DataElement object.
[uml]
Types of data
The data model is basically dealing with three types of data that can be linked to any organisational unit in a 6 (or n?)-level organisational unit structure (hierarchy) (typically 1: country, 2: province, 3: district, 4: ward, 5: facility, 6: sub-section / routine data reporting unit). The term "geographical aggregation" denotes adding data from different orgunits together, and "temporal aggregation" denotes the adding together of data from different validity periods. The three types of data are:
- Routine data (any data collection frequency), which in most cases represent a count of "atomic" events like patient visits or procedures performed (both temporal and geographical aggregates will be SUMMED, usually).
- Semi-permanent data (any non-overlapping validity period, usually continuous) that in most cases represent a "level" or "stable state" of something (staff numbers, target population, grid electricity in facility, working phone in facility), where temporal aggregation often would be AVERAGE and geographical aggregation either SUM or COUNT).
- Survey data (any validity period), which might overlap with the two other types but usually also include qualitative data (staff/patient viewpoints, surveyor observations) and snapshot measurements (folder reviews, thermometer reading in vaccine fridge). Routine and semi-permanent data must have unique validity periods, whereas survey data don't (two overlapping surveys might yield different answers to the same question due to timing or subjective points of view).
Indicators
Indicators are more complex and informative views of data and is typically calculated based on a formula (definition) that combines different data elements. In the core module the user can define the indicators and set up the required formula to calculate them. These formulas are on the form nominator/denominator where both the nominator and denominator are data elements or combinations of one or more data elements and constant values.
Example 1:
Indicator name: Nurse clinic workload, type: number
Formula: (PHC Headcount under 5 years + PHC headcount 5 years and older) /Nurse clinical work days
Example 2:
Name: Immunisation coverage under 1 year, type: %x12
Formula: Fully immunised under 1 year / (Female population under 1 year + male population under 1 year)
[uml]