Go to the main page

DHIS 2.39 Overview

DHIS2 version 2.39 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

Jump to a section on this page

    Feature Demo Videos

    Discover some highlights of new features in this DHIS2 release with feature demonstrations by DHIS2 experts.

    Analytics Features

    Legend sets for line lists

    The Line Listing app you can now apply a legend to data items. Legends can be predefined or automatically generated. This allows you to make your data more easily interpretable by applying a color coding to indicate performance, status or severity.

    Video | Screenshot | Jira

    Scheduled date in line lists

    Scheduled date is made available as a time dimension in the Line Listing app. You can now present or filter data by scheduled date.

    Video | Screenshot | Jira

    Earth Engine population data import

    In the Import/Export app you can now import data sets from Google Earth Engine. DHIS2 already allows visualizing Earth Engine layers in the Maps app. The new importer takes this further by allowing for dynamic calculation of population data sets based on org unit geometries, and subsequent import of the population data as raw data in DHIS2. This will allow implementations to use the population data from Earth Engine in DHIS2 visualizations and combine it with other data sets as part of indicator expressions.

    Video | Screenshot | Jira

    Tracker and Event Features

    Continuously released Capture App

    The Capture app was released shortly after the 2.38 release on the App Hub, and is now continuously released in 2.38 and 2.39. If you are running any of these versions you will be able to continuously upgrade to the latest version of the Capture app and receive the following features and fixes. The following Tracker features are all available in both the 2.38 and 2.39 versions though the App Hub.

    Video | Screenshot

    Enroll TEI in multiple programs

    A tracked entity instance (TEI) can now be enrolled in multiple programs in the Capture app.

    Video | Screenshot | Docs | Jira

    Open data entry after enrollment

    When enrolling a TEI into a program where one of the program stages is marked to be opened after enrollment, the user is taken directly to the form for adding that program stage to the enrollment. This is useful for reducing the amount of clicks and speeding up the data entry process.

    Docs | Jira

    Display front page lists

    The front page list view can now be disabled in the Capture app. After selecting the program and org unit, the user can be taken directly to the search screen instead of displaying the list of tracked entity instances enrolled in the org unit. This will improve the user experience when users are expected to primarily search and find tracked entity instances. Avoiding unnecessary loading of the front page list also has performance benefits.

    Video | Docs | Jira

    Working lists in search screen

    In the Capture app, the search screen will now show working lists for the selected program. This is helpful when the user either wants to search for a tracked entity instance or in some cases use a targeted working list. This works well in combination with disabling the front page list and instead directing a user to the search page, but also for allowing one-click access to working lists.

    Screenshot | Docs | Jira

    See previous selected org unit

    In the Capture app, a user that just deselected an org unit in the context selector will see the previously selected org unit highlighted. This is useful when working systematically through many org units.

    Video | Screenshot | Jira

    Preserve filters on navigation

    When filtering and sorting a working list in the Capture app, the filter selections will now persist through context switches. This is useful when a user needs to apply a filter across different org units as the org unit can be changed without losing the current filter and list settings. This works both with saved working lists and with unsaved filters.

    Video | Jira

    Improved search in all programs

    When searching for a tracked entity instance in a specific program, the search might not yield any result in the context of the program. In this case the user can expand the search to look for a tracked entity instance in all programs. The expanded search happens without the user changing the context, and the possible expanded search results is displayed below the original program results. This allows the user to easily revise the search criteria and continue working in the context they started in, potentially expanding the search again if no results is found in the program.

    Video | Screenshot | Docs | Jira

    Platform Features

    New Data Entry app

    A new aggregate Data Entry app is now available. The new app is built on the modern technology stack and brings a number of usability improvements. The data set, org unit and period selection is always visible, making it easy to see the current selections. The org unit tree makes it easy to see which org units are open for data entry for the currently selected data set. The details of a data value, including metadata info, comments, min and max limits, data value history and audit log are available in a sidebar and can remain visible while doing data entry. Data validation rules will open and can be easily triggered in a sidebar as well. Data which is captured offline will be automatically synchronized with the server. The new Data Entry app supports custom HTML forms but lacks Javascript/CSS support, which may be added later. The current data entry module will be phased out and removed in version 2.41.

    Video | Screenshot 1 | Scr 2 | Scr 3 | Scr 4 | Demo | Docs

    User group management

    The user group management in the user app now supports adding and removing users for databases which contain a large number of users. Users can be added and removed individually and the modifications will take effect when the user group is saved.

    Screenshot | Demo | Docs

    Multiple org unit geometries

    DHIS2 can now store and visualize multiple geometries for org units. This is supported through a new metadata attribute GeoJSON value type. GeoJSON data can be imported through the metadata importer and stored using the new value type. This allows for example for displaying both the location (as a point) and the catchment area (as a polygon) for org units.

    Video | Screenshot | Demo

    GeoJSON geometry import

    A new import service supporting the industry standard GeoJSON format for geospatial data is now available. The importer allows for importing GeoJSON geometry and associate it with org units, using the org unit primary geometry field or custom metadata attributes of value type GeoJSON. The GeoJSON format is supported by most geospatial tools and services and enables integration with external systems. The new importer makes importing geometries and setting up maps a lot easier compared to the previous GML format.

    Screenshot | Demo | Docs | geojson.org

    Aggregate data exchange

    A new service for aggregate data exchange allows for exchanging data from one DHIS2 instance to another, as well as within a single instance of DHIS2. The service will aggregate data in the source instance using the analytics engine, and import the data as aggregate data values in the target instance. Data exchanges can be triggered from the API, from the data exchange web app or run as a scheduled job. This is useful for transferring data from an HMIS instance to a DHIS2 data portal instance, to import aggregated numbers into a DHIS2 HMIS instance based on individual records in a DHIS2 Tracker instance, and to pre-compute aggregate numbers based on individual tracker records using program indicators. A new web app named Data exchange will be made available from the App Hub shortly.

    VideoScreenshot 1 | Scr 2 | Scr 3 | API docs | Jira | Web app coming soon

    Redis for cluster management

    When running DHIS2 in a cluster (using multiple servers/nodes for a single instance), Redis can now be used for dynamic invalidation of caches across instances. This is an improvement over the Debezium-based approach introduced in 2.38 as it is more reliable and works on other database engines beyond standard PostgreSQL such as AWS RDS. The new cluster management solution allows for adding and removing nodes dynamically without any updates to the DHIS2 configuration files of the existing nodes. The new solution requires Redis to be available, though Redis is already required for cluster configurations.


    RapidPro integration

    The DHIS2-RapidPro integration is generally available. It allows for synchronization of RapidPro contacts with DHIS2 users, transfer of aggregate data reports from RapidPro to DHIS2 and reminders to RapidPro contacts when aggregate reports are overdue. Read more at the GitHub repository and contact the DHIS2 integration team for assistance if you are interested in configuring the integration for your country or organization.

    Video 1 | Video 2 | GitHub

    Platform API Features

    Shorthand fields notation for attributes

    A new shorthand notation is supported for attributes and values in the metadata endpoints, and attribute values can now be conveniently referred to using the metadata attribute identifier: filter={attribute-id}:eq:{value}. The same applies to object filtering, where the attribute identifier can be used in filters: filter={attribute-id}:eq:{value}.

    Docs 1 | Docs 2 | Jira 1 | Jira 2

    Data entry endpoints

    A collection of API endpoints optimized for the new Data Entry app is made available. These endpoints are also useful for custom data entry web apps. These include retrieving metadata for accessible data sets, retrieving custom data entry forms, retrieving data values for a form, retrieving context for a form, saving min-max limits and completing a form.


    API improvements

    Several incremental API improvements have been made available.

    • CSV data value import supports a data set parameter, allowing for completing the data set. Docs | Jira
    • In the user data store API, an admin can modify data store values for other users through a username query parameter. Docs | Jira
    • The data value importer only creates an audit record if the data value was actually modified (identical values are ignored). Jira
    • The tracked entity audit endpoints support org unit, start and end date and program stage query parameters. Docs | Jira
    • All geometry data for org units can be removed in a single API call, which is useful for integration. Docs | Jira
    • Metadata attribute values are now properly validated based on the value type of the associated data element. Jira
    • Deletion of data elements is significantly faster. Jira

    Android Compatibility

    This version of the DHIS2 core software is fully compatible with the DHIS2 Android Capture App version 2.7.

    Release Information

    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 databaseDownloads
    Documentation and JavadocsDocumentation
    Upgrade notesUpgrade notes on Github
    Full list of features and bugsRelease Note
    Source code on GithubDHIS2 source code
    Demo instanceDemos
    Docker hub imagesDocker repository
    DHIS2 communityDHIS2 Community of Practice