Únase a la Conferencia Digital Anual del 12 al 15 de junio Obtenga mas información y registrese
DHIS 2.38 Overview
DHIS2 version 2.38 is out with many new features, improvements and bug fixes. On this page you can find information on this software version, including feature descriptions, links to technical documentation, and more
Enlaces directos al contenido de la página
Feature Demo Videos
Discover some highlights of new features in this DHIS2 release with feature demonstrations by DHIS2 experts.
Available via Continuous Delivery
The following are the highlight application updates that have been developed during the v2.38 release cycle, but which are not included in the bundled v2.38.0 release. You will be able install these core apps directly from the App Hub, and have the new version override the bundled version in DHIS2 using the App Management app.
- Line Listing App
- Capture App – Tracker functionality
An overview of the key features in these applications is included in the relevant sections below.
Analytics Features

Catchment areas for org units
DHIS v2.38 supports multiple geometries (points and shapes) for all organisation units. These can be viewed in the Maps app for any standard layer through an option in the org. unit selector. Practically this means that system administrators can upload catchment areas for their facilities, community health posts, schools, hospitals, etc. and visualize any data by catchment.
Video | Screenshot | Docs

Support for Google's Earth Building/Structures Layer
In the Maps app, users can now see structure outlines as identified by Google’s Open Building dataset. This data set includes 516M buildings (64% of the African continent). It is useful for population estimation, urban planning, outreach and health programs, and humanitarian response, for example. The number of buildings can be shown by catchment or org unit boundaries.
Vector tiles support in Maps
The Maps app now users and supports vector tiles. This should result in some performance improvements and updated underlying technology.
Indicator aggregationType override
An indicator may specify an aggregation type, overriding the default type assigned to a data element. For example if a data element has aggregation type SUM, an indicator may also report the value by AVERAGE, COUNT, FIRST, LAST, MIN, MAX, etc.
Example expression in indicators: #{EX2jBdKe4Yq}.aggregationType(COUNT) Description: ER Teachers Trained.aggregationType(COUNT)
Indicator minDate and maxDate
A minimum and/or maximum date may be specified for fetching a data element for an indicator. This can be useful when data semantics change from time to time requiring different calculations for the same result. It allows an indicator to report consistently across these changes by changing the way the indicator is calculated through time. Don’t forget, the ‘periodOffset’ function (since 2.36) can also be used to include data from a different period in an indicator expression.
Example minDate and maxDate expression in indicators: #{EX2jBdKe4Yq}.minDate(2021-1-1).maxDate(2021-6-30) Description: ER Teachers Trained.minDate(2021-1-1).maxDate(2021-6-30) -> Only values between Jan. 1, 2021 and June 30, 2021 for ER Teachers Trained will be used in the indicator calculation.
Example periodOffset expression in indicators: #{EX2jBdKe4Yq} + #{EX2jBdKe4Yq}.periodOffset(-1) + #{EX2jBdKe4Yq}.periodOffset(-2) Description: ER Teachers Trained + Description: ER Teachers Trained + ER Teachers Trained.periodOffset(-1) + ER Teachers Trained.periodOffset(-2) -> Sum of the ER Teachers Trained over the last three months relative to the period selection in the analytics app being used to visualize this value.
Indicator subexpressions (for 2.38.1)
Indicators can count the number of organisation units where a data element compares in a specific way with a fixed value.
Example subExpression expression in indicators: subExpression( if (#{vq2q03TrNi} > 100, 1, 0) ) Description: subExpression(if(IDSR Malaria>100,1,0)) -> Counts the number of organisation units where more than 100 Malaria cases were reported within a given period defined in the analytics app being used to visualize this value.
Video | Docs
New Line Listing application
A new Line Listing application has been released via the App Hub, and will be bundled with the core release from DHIS v2.38.1 onwards. Later versions of this app will be released continuously on the App Hub. Bug fixes and new features will therefore be available to be downloaded and integrated at the time they are needed, without upgrading the rest of the DHIS2 platform. The App Hub is accessed through the App management app.
This new application is a massive improvement for producing line lists of tracked entities in DHIS2 over the event reports application. The new line listing application replicated all of the line listing functionalities of the event reports app, and it has a completely new, much improved user experience that makes it much easier for users to make a line list of tracked entities. It also includes many new features. A list of some of the key new features is below.
Video | Screenshot | Docs

Visualizing multiple repeating events
You are now able to produce a line list that can display data from multiple repeating stage for a single tracked entity. You can specify how many repeated stages you would like to see data from. This is useful for many health and education programs by enabling the visualization of data captured repeatedly over time for a single patient or student.
New, Tracker-specific period dimensions
In the new Line Listing application you can produce a linelist showing enrollment date, event date, and/or incident date. These can be each defined, sorted, and shown together in a single line list.
Created by and Last updated by
This allows you to see the user name of the user that has either created the enrollment or the user that has last updated the data for the tracked entity.

Tracker program working lists improvements
The functionality for working lists for Tracker programs has been expanded to be similar to those of Event working lists. The Capture app now allows working lists to be configured, saved, shared, deleted and updated through the user interface.
Video | Screenshot | Docs | Jira
Translation of Program Rule Actions in Tracker Capture and Capture app
The content of program rule actions — the «Static text» that is being visualized to the users — can be translated and shown in Tracker programs.

Description and URLs for data elements and tracked entity attributes
Description and URL set on these data items are displayed in a popover. This popover can be accessed by clicking an ‘i’ icon that displays after the data element name. The description is set in the Maintenance app and can be used to give more information about what to capture for the data item.
Video | Screenshot | Jira
New org unit component implemented in Capture app
The org unit component used in Capture app has been replaced with the redesigned org unit from d2-ui.
Support for GS1 Data Matrix
GS1 Data Matrix is used for pharmaceutical and health commodity bar coding, and will support supply chain use cases. Given a field value formatted with the GS1 data matrix standard and a string key from the GS1 application identifiers, there is now support for program rules extracting the values from this delimited text and assigning values to their designated fields. This is implemented in Tracker Capture, Capture and the Android Capture app.
Data/Value type for Program Rule Variable
For the program rule variables with Source Type «Calculated value,» the Maintenance app will offer the user to assign a value type. The default value type for calculated values will be text. For all other Program Rule Variable Source Types, the value type selection should not be visible, as the variable will inherit the type from the underlying data element or tracked entity attribute.
Capture app continuously released
From DHIS 2.38, the Capture app will be released continuously on the app hub. Bug fixes and new features will therefore be available to be downloaded and integrated at the time they are needed, without upgrading the rest of the application. The first updated version of the Capture app will be available on the App Hub shortly after the 2.38.0 release. The App Hub is accessed through the App management app.
Tracker features in Capture App
In addition to the Tracker functionality that was added in 2.37 for closed beta testing, additional functionality has been added. The new functionality can be tested by installing the updated Capture app from the App Hub, and opting in to using the Tracker features in the Capture app. Only superusers or users with access to changing the program metadata will have the opt-in functionality available. The new Tracker functionality that can be tested by opting in is listed below.
TEI profile widget
On the enrollment dashboard, you can view the Tracked Entity Instance profile widget. Inside the profile widget you can view the key attributes values. Click the Edit button to make changes to the Tracked Entity Instance profile. Editing the profile opens a dialog where the profile attributes can be changed.
Scheduling event widget form
Instead of reporting an event the user can select to schedule an event later. This is done with a scheduled date. The dialog will open with a suggested scheduled date, and this date is determined by a set of rules from program stage configuration and program configuration.
"Add new" for Completed enrollments in Enrollment Widget
There can only be one active enrollment at a time, but if all enrollments is completed, there will be an option to enroll the TEI in the program again in the enrollment widget, if the program allows more than one enrollment per TEI. If program does not allow more than one enrollment, the ‘add new’ button will be disabled.
Re-enroll an existing tracked entity instance
By having a Tracked Entity Instance selected in the locked selector and selecting a different program, you can now re-enroll existing TEIs into other programs. The registration page will be pre-filled with any overlapping tracked entity attribute values.
Tracker and Event Features
Version check notifications
A new DHIS2 version check notification service is introduced, which will send notifications in the form of DHIS2 system inbox messages when newer versions of DHIS2 has become available. This includes major and patch versions. This is useful to encourage sysadmins to upgrade DHIS2 to keep their instance secure and up to date.
Account disable notifications
When automatically disabling users through the disable users scheduled job, an email notification can be sent to the relevant user. The number of days before the notification can be defined in the job configuration. This is useful to give users a chance to log in before their account is disabled.
Group set short name
The indicator group set and category option group sets now have short name properties, which allows for precise and UI-friendly rendering. The short names are now used as column names in resource tables instead of names.
Analytics cache handling
The cache for analytics data is now automatically flushed when the analytics database tables are updated. This ensures that analytics queries read the latest data from the analytics data and reduce the time lag between analytics tables being updated and data appearing in data visualizations.
Platform Features
Request logging
Clients of the API can now submit a value with the ‘X-Request-ID’ HTTP header which is included in all log statements. This is useful when looking at DHIS2 logs and trying to understand which client/app made a request, for example when debugging an issue which applies to a specific installation of an Android app on a phone.
Cancel analytics table jobs
You can now cancel (stop) analytics tables jobs while they are running. This is useful in order to stop long-running jobs without having to wait for them to complete.
Data store improvements
The data store API has received numerous improvements to make it a fully-fledged data store and more useful to web apps and other clients.
Field filtering
Allows you to return only specific keys and values of entries in the data store using the fields
parameter. Works similar to fields filtering in the metadata API. The filtering takes place at the namespace level and is useful when a client needs to list many entries with specific keys/values in a single query.
Entry filtering
Allows you to match and filter entries in a namespace based on a variety of operators, such as eq
, lt
, le
, gt
, ge
, like
, null
, using the filter
parameter. Works similar to object filtering in the metadata API. The filtering is useful when a client wants to list many entries which match one or many criteria.
Sorting
Allows you to sort entries in a namespace ascending or descending based on a specific key/value using the order
parameter. This is useful when clients have specific requirements for sorting a list of entries.
Docs | Jira
Release Information
This version of the DHIS2 core software is fully compatible with the DHIS2 Android Capture App version 2.6.
Click on the links in the table below for more information about this software release and to access an interactive demo. You can also add comments or ask questions about this release on the DHIS2 Community of Practice.
To find more details about... | Follow this link: |
---|---|
Download release and sample database | Downloads |
Documentation and Javadocs | Documentation |
Upgrade notes | Upgrade notes on Github |
Full list of features and bugs | Release Note |
Source code on Github | DHIS2 source code |
Demo instance | Demos |
Docker hub images | Docker repository |
DHIS2 community | DHIS2 Community of Practice |