DHIS2 version 2.33 is out with many new features, apps, improvements and bug fixes.



Multiple maps and timelines: In the maps application you can now render multiple maps in the same screen to show how the data has evolved over time. You can also have a single map which can “play” the changes to data on a timeline to show the change over time. This is useful e.g. to show how an outbreak is spreading over time, or how coverage of a service changes over time.

Screenshot 1 | 2 | 3 | Jira

Single value charts and dashboard items: You can now render a single aggregated value in data visualizer. This simple visualization displays a single value which can be saved and added to the dashboard. This allows for a dashboard item which provides essential information at a glance, such as the number of new cases of a disease or the number of facilities currently having a stock-out. |

Demo | Screenshot 1 | 2 | Jira

Patient line-listing with data from multiple stages in event reports:  You can now create a list of patients or tracked entity instances based on enrollment that displays data across any number of stages in a single table. In the case of disease surveillance patients line listing, this would typically be demographic data (Patient/TEAs), initial clinical examination and diagnosis (stage 1), specimen tracking & lab results (stages 2x), case investigations (stages 3x), follow-up visit stages and final outcome stage, all in a single table.

Screenshot 1 | Jira

Improved date reporting in Event reports: Event reports now show enrollment dates and incident dates as well as event program stage dates. It can also show the description of these dates instead of just “Event date”. This can be configured in the program, e.g. as “Date of birth” or “Date of postnatal visit”.

Screenshot 1 | Jira 1 | 2

Google Earth Engine Layers: Several improvements have been made to the temperature and precipitation layers from Google Earth Engine. Previously it took a long time to load the weekly periods for multiple years. Two dropdowns have been added, one for year (default is the most recent) and one for week. For temperature layers, the data set has been updated to include the more recent time periods.

Screenshot | Jira 1 | 2



Performance and stability improvements: This version offers significant performance and stability improvements, in particular in the area of transaction handling and queries optimization:


- The system has been reviewed to minimize the number of expensive read-write transactions, which has an impact on overall performance and might lead to database deadlocks.

- Tracker attribute uniqueness check performance has been optimized.

- Tracker notifications are asynchronous to avoid blocking.

- Tracked entity instance auditing is asynchronous to avoid blocking.

- Removed expensive circular checks for tracked entity instances, enrollments and events.

- Removed expensive loops checking access permission on data elements during import.

- Database indexes reviewed to make sure the relevant indexes are used for data-intensive queries.

Working lists based on user assignment in tracker capture: It is now possible to build working lists based on user assignment of events. This functionality lists tracked entity instances and filtering criteria and makes it easier to view and follow up on events. Working lists can be incorporated into the user’s normal work processes, enabling planning, prioritization and focus on specific events and specific TEI.

Screenshot 1 | 2 | Docs | Jira

Working lists and user assignment in capture app: Similar to the working lists in tracker capture, single event programs can now be configured to allow user assignment of events and create working lists based on filtering criteria such as user, date, status and more.

Demo | Screenshot 1 | 2 | Docs 1 | Docs 2 | Jira 1 | Jira 2

Listing of tracker programs in capture app: The capture app now lists tracker programs as well as single event programs in the program selector. Selecting a tracker program provides an information screen explaining that the program is handled in another app, and the user can click a deep link to open the tracker in the correct org unit and program. This feature lets users see all their programs, both tracker and event programs, in the same place.

Screenshot | Docs | Jira 

Display of program ownership: The current ownership of all enrollments in the selected program is now displayed as “owned by” in the enrollment widget. The ownership is first assigned to the organisation unit that enrolled the TEI into the given program, and is transferred by referring to a TEI using the “move permanently” option. Ownership can be different for a single TEI in different programs, for example one clinic can follow up a patient in HIV, while another clinic follows up the same patient in MCH.

A user that has capture access to the organisation unit that is the current owner of the TEI/Program will have write access to all enrollments for that TEI/Program combination. A user that has search access to the organisation unit that is the current owner will have access to search and find the TEI/Program combination.

Screenshot 1 | 2 | Docs | Jira

Deduplication flagging in tracker capture: When searching for tracked entity instances in tracker capture, it is now possible to flag the presence of possible duplicates in the results. When a duplicate is flagged, it acts as a reminder that the data needs to be cleaned up, and as information for anyone using the data in their daily work. The data is also available for future functionality for identifying and merging duplicates.

Screenshot | Docs | Jira

Bidirectional relationships: Bidirectional relationships can now be configured in tracker capture. A relationship represents a link between two entities in the tracker data model, and is considered data in DHIS2 based on a Relationship Type, similar to how a Tracked Entity Instance is based on a Tracked Entity Type. Relationships can now be defined as unidirectional or bidirectional, with bidirectional relationships creating an automatic relationship on both sides of the linked entities, such as a Mother and Child.

Screenshot | Docs | Jira

Updated icon library: The icon library has been updated to include 534 searchable icons, covering a wide variety of health, agriculture, transport and education-related topics.

Screenshot | Jira

Image resizing: It is now possible to resize/downgrade the images stored in the server when returned via the API, in order to reduce bandwidth consumption when downloading associated images to DEs, TE attributes or Options, and to minimize storage on the Android database. When requesting a data value of type image, the query can specify Small (256x256px); Medium (512x512px); Large (1024x1024px).

Docs | Jira

Program indicator and program rules health checks: Program indicators and rules are now evaluated during the integrity check in the Data Administration app, reviewing for invalid expressions and filters; missing actions or priority and more.


Screenshot | Docs | Jira

Z-score calculations in program rules: Standard functions for calculating Z scores “weight for height” and “height for age” are now available in program rules. Z score calculation for weight for age was present from 2.32. This is useful in settings where a clinician would otherwise be calculating Z-scores by hand. The d2 function calculates z-score based on data provided by WHO weight-for-height indicator. Its value varies between -3.5 to 3.5 depending upon the value of height.

Screenshot 1 | 2 | Docs | Jira 1 | 2



Reports app: The new reports app is out of beta and comes with many new improvements. As an example, standard reports are now linkable and can be opened from a URL. The old reports module has been removed.

Demo 1 | 2 | Screenshot | Docs | Jira

Enrollment section forms: You can now create section-based forms for enrollments in tracker. The configuration can be done in the maintenance app under the “attributes” section > “Create registration form”  in the tracker program configuration wizard. This allows for creation a section-based tracker enrollment form without creating custom HTML-based forms.

Demo | Screenshot | Docs | Jira



Release Information


Download release and sample database


Documentation and Javadocs


Upgrade notes

Upgrade notes for 2.33 on GitHub

Details about each feature on JIRA (requires login)


Overview of bugs fixed in JIRA (requires login)


Source code on Github


Demo instance


DHIS 2 community