Skip to main content

dhis2 Adaptor developer README.md

Source: https://github.com/OpenFn/adaptors/tree/main/packages/dhis2

Language DHIS2

An OpenFn language pack for building expressions and operations to work with the DHIS2 API. Commonly used via OpenFn.org or manually with OpenFn CLI.

Table of Contents

  1. Getting Started
  2. Important Note
  3. Configuration
  4. Helper Functions
  5. Development

Getting Started

To use this package, execute commands via OpenFn/core from the root of the repository:

openfn job.js -a dhis2 -s tmp/state.json

For installation and usage, see the docs site.


Important Note

  • For DHIS2 API versions 2.42+ and the new tracker, use adaptor 6.0+. Refer to the DHIS2 API documentation for details.
  • For old tracker versions and DHIS2 API versions prior to 2.42, use adaptor 5.0+. But we highly recommend upgrading to the latest version.

Configuration

All required and optional properties for state.configuration are defined in the official configuration-schema.

Ensure you configure:

  • Username: DHIS2 admin username
  • Password: Corresponding DHIS2 admin password
  • Host URL: URL of the DHIS2 instance

Example configuration:

{
"username": "admin",
"password": "district",
"hostUrl": "https://play.dhis2.org/2.36.6"
}

Helper Functions

Helper functions simplify common DHIS2 operations. View the complete function documentation.

Development

Running Tests

To run unit and integration tests, use the following commands:

  • Unit Tests: pnpm test
  • Integration Tests: pnpm test:integration

Note: Integration tests depend on a live DHIS2 instance.

Unit Tests

Unit tests validate helper functions independently. For example:

  • Does create('events', payload) perform a correct POST request?

Add new unit tests whenever helper functions are updated.

Integration Tests

Integration tests validate end-to-end behavior with a live DHIS2 instance. Ensure your test environment includes:

  • At least one organisation unit.
  • One program and a corresponding program stage.
  • A tracked entity instance enrolled in the program.

Modify globalState in test/integration.js as needed:

before(done => {
fixture.initialState = {
configuration: {
username: 'admin',
password: 'district',
hostUrl: 'https://play.dhis2.org/2.36.6',
},
program: 'IpHINAT79UW',
orgUnit: 'DiszpKrYNg8',
trackedEntityInstance: 'uhubxsfLanV',
programStage: 'eaDHS084uMp',
};
done();
});

Troubleshooting Tests

  • Timeout Errors: Increase the global timeout in test/mocha.opts.
  • Environment Issues: Ensure DHIS2 components (programs, org units, etc.) are correctly configured.

For further technical details, see the documentation or contact the OpenFn community.