Go to the main page

DHIS2 Software Architecture

DHIS2 is an open-source software platform based on standard web technologies and optimized to run in resource-challenged environments. DHIS2 is fully generic, flexible, extensible, and integration-ready by design, allowing you to take ownership of your DHIS2 system.

Jump to a section on this page

    DHIS2 as a platform

    DHIS2 has been designed from the ground up with flexibility in mind. Data structures such as data elements, organisation units, forms and user roles can be defined completely freely through the DHIS2 user interface, making it possible for the system to be adapted to a multitude of locale contexts and use cases. Meanwhile, the design of DHIS2 as an application platform with a fully open web API supports the development of custom applications and extensions, as well as integration with other systems.

    Explore the sections below to learn more about the architecture of the DHIS2 software platform.

    Web-based

    DHIS2 is an on-premise web application based on standard Java technology. This means that the application runs on any Java enabled web server or servlet container, and can be accessed via a web browser over the Internet.

    Deployable on premise

    Deploying and running a DHIS2 system involves installing the DHIS2 .war file, PostgreSQL database, monitoring server, and proxy server. These components can be installed on a single server or distributed on multiple servers. DHIS2 can thus be deployed in many different ways to support different requirements, for example on a national online server or deployed on a private local network.

     

    Learn more

    Cloud-ready

    DHIS2 can be deployed on public or private cloud environments, including as Software-as-a-Service (SaaS). For example, it can be deployed as a Docker container, including in orchestrated container environments such as Kubernetes.

     

    Learn more

    Platform independent

    DHIS2 is written in Java. Java applications run on any platform for which there exists a Java Runtime Environment. In practice, this includes all popular platforms, including Windows, Linux, and Mac OS X, among others.

    Runs on all major web browsers

    DHIS2 is written according to the W3C standard for HTML and CSS and runs on any standard compliant web browser like Chrome, Firefox, Opera, the latest Safari and Edge. The DHIS2 team recommends Chrome as it provides excellent performance for Javascript-intensive applications like DHIS2.

    Mobile support

    DHIS2 offers a full-featured rest API, which can be used on Android clients. We offer an Android Software Developer Kit (SDK) that makes it easier to develop Android clients, and we develop our own native mobile operating system for Android devices, the DHIS2 Android Capture app.

     

    Learn more

    Works offline

    DHIS2 is a web application, implying that Internet availability (or local network connection) is generally required to access and use it. However when using the data entry module, data is stored locally in the browser, allowing the system to be operated in locations with unstable internet connections. If the Internet goes down during a working session, the user can continue to enter data into the system, and it will be uploaded to the central server as soon as connectivity returns. The DHIS2 Dashboard app can also be installed separately on a mobile device as a progressive web app, allowing limited offline access to analytics outputs.

    Full offline functionality is included in the DHIS2 Android app for data entry on mobile devices, where data is stored locally on the device and synced with the central server when internet connectivity is available.

     

    Learn more

    Flexible data model

    DHIS2 metadata is very configurable. It can cater for special requirements for data entry or analysis through the user interface, without the need for developer involvement. For instance, the system allows you to define any data element for which to capture data and features a flexible hierarchy of organizational units and reporting sources. The DHIS2 metadata model generally uses abstract or generic concepts instead of use-case-specific concepts, for example using a generic “tracked entity” instead of “patient” or “person,” which you can define as needed by adding customized attributes. This also allows you to achieve semantic interoperability with different standards without developer effort.

    DHIS2’s generic and flexible design also means that configuration is required in order to use the system, as it is not pre-configured for any use case “out of the box.”

     

    Learn more

    Installable and shareable configurations

    In addition to offering the flexibility to configure your own system, DHIS2 allows you to create, export, and import metadata configurations as .json files. This allows implementers to use an existing configuration as a starting point for a given program (which can then be further customized as needed) instead of beginning with a blank configuration. Organizations can also export their own configurations and share them for use in other DHIS2 systems.

    The DHIS2 core team at HISP UiO has worked with public health experts at the World Health Organization (WHO), Unicef, the CDC, and others to develop downloadable metadata packages for the DHIS2 Health Data Toolkit, supporting the adoption of global standards and best practices for essential health programs.

     

    Learn more

    Extensible platform

    DHIS2 is designed as an application platform, in which the core DHIS2 frontend applications use DHIS2’s REST-based web API to interact with the platform backend, and can be updated independently of the backend software. The DHIS2 API provides a programmatic interface to all of the core DHIS2 functionality, and is fully open and well-documented, supporting development of custom applications and plug-ins. The DHIS2 App Hub allows independent developers to share their apps with the DHIS2 community.

     

    Learn more

    Interoperable

    DHIS2 is integration-ready by design. The DHIS2 REST-based web API also supports integration with other systems and data sources by providing programmatic access to most parts of the DHIS2 system, while the flexible DHIS2 data model makes it possible to achieve semantic interoperability with a large variety of data standards. The DHIS2 integration team also provides a set of integration tools to support common integration patterns as well as interoperability standards such as FHIR.

     

    Learn more

    Internationalized

    DHIS2 is internationalized both in terms of user interface and database metadata content. This means that the user is free to select which locale to display. DHIS2 is currently available in English, French, Spanish, Portuguese, Hindi, Vietnamese, Chinese and Norwegian, and the interface and metadata can be translated into additional languages. We use Transifex as our localization platform, and DHIS2 users can contribute their own translations. DHIS2 supports RTL languages, and provides limited support for non-Gregorian calendars.

     

    Learn more

    Licensed as open-source software

    DHIS2 is released as free and open software under the BSD 3-clause license. This means that it is not only available for download free of charge, but you have access to the source code and may modify the software in any way you like.

    Explore the DHIS2 project on GitHub:

    Learn more

    For full technical details about DHIS2’s software architecture, as well as guidance on installation and configuration, visit the DHIS2 Documentation site: docs.dhis2.org