COVID-19 Surveillance Tracker Package Released

Dear All, is the DHIS2 COVID-19 surveillance tracker able to integrate with SORMAS?

1 Like

Dear Dr. Okoye,
SORMAS can report to DHIS2 Tracker, but I don’t believe there is integration with the Tracker module yet. This is one of the reasons we have been documenting what data models are being used by Tracker, SORMAS and others so that we can make them interoperable later. You can see this documentation here:



Great work, @maxk

1 Like

Dear All,
I installed the COVID packages yesterday on our demo server and was able to enter some data.
As at this morning I and other team member can no longer enter data and this is the error we see on the browser console:

Trying to change this to tabular data entry still throws this error.

Trying to get the logs for this.

Please your help is seriously required.

Thank you.

1 Like

Thank you @Litlfred.

1 Like

Dear @ifeanyiokoye,

This is most likely this bug that is fixed and issue will be solved in upcoming patch releases:

See @sele’s post here: Tracker Program Stage Loads Forever for a workaround until then.

Best regards,

Hi Carl, this is great news! The case-based surveillance package has been updated with metadata coded according to the WHO case reporting data dictionary. We also have the capability to add additional codes to the metadata to enable easier integration i.e. with SORMAS or other as long as we know what the standard is. We will update our metadata coding in the spreadsheet shared.

1 Like

Thanks all for this, really great work.

Wanted to comment on the “COVID-19 case-based surveillance” program.

I would recommend that for cases where, in the “health outcome” stage, “death” is selected, there should be a next stage which is the same as the SMoL program which you previously developed (see (or the COVID DHIS2 program should be linked to the SMoL Program if that is already in use to complete the medical certificate of cause of death for that individual). It will be very important to have correct medical certification of cause of death for all individuals who die from COVID-19 (certainly important to have correct medical certification of cause of death for all deaths) – it is not enough to know that the outcome was death, there needs to be a full medical certificate of cause of death. I would say, the link to the SMoL program should only be optional if the country is using another program / software to capture the medical certificate of cause of death (should be WHO 2016 form of medical certification of cause of death – see page 203 (Annexes section 7.1) of ICD volume 2 at

Would be great if countries exploring the use of the COVID-19 DHIS2 Programs which are already using the SMoL Program could explore the link.



Hi Martin,
This is a great use case. As you have mentioned, a Cause of Death data package already exists and could be used in combination with COVID-19 surveillance. In the current design, the Cause of Death program is a separate program. It will be interesting to see if how countries may have implemented this work flow. For example, adding a simple program rule at the Outcome stage if the outcome is “dead” can prompt the user to complete the Certificate of Death. If the country already uses the Cause of Death tracker, the entity can be enrolled in the Cause of Death tracker program to complete the death certificate.

@bratschim I have also heard that @Hannan has been working with MOH in Bangladesh to introduce to the WHO’s new emergency ICD-10 code for COVID-19 and may have experience to share.


1 Like

@Rebecca thanks for this. yes Bangladesh would also be a great setting to test the combination of these DHIS2 programs. indeed WHO is working to provide guidance on the expansion of the ICD-10 dictionary in the SMoL cause of death program to include the ICD-10 codes for COVID-19

1 Like

Dear Colleagues, regarding dhis2 COVID19 module, since we dont know the volume of suspected cases, do we advise countries to use their production system to use case based module which also includes patient followup? or best practice is to have a separate instance dedicated for the COVID19 Cases.

Do we have recommendations on the minimum server capacity before integration to the rest of existing HMIS reports?

1 Like

Hi Andrew,
UiO’s recommendation is to set up a separate instance for COVID-19 tracker programs. As you say, the volume of cases can be unknown and this would minimize risk to the performance and stability of the production HMIS. @bobj has documented set-up guidance that is intended to complement the existing general installation guides on Hope this helps!

1 Like

Hi Andrew

Its really hard to talk about best practice in these early days. What I would say is that many countries have experienced performance and stability issues with some of their large tracker deployments, so adding these modules into the mix would potentially make supporting specific issues difficult. So definitely from a support perspective, running on a separate instance, preferably with a separate database is the wisest thing to do.

If you have a an existing tracker implementation which is lightly loaded and performing well you could get away with merging this - with the additional risk that the new addition might introduce new instability into the original system.

The key to all of this is of course monitoring. There are far too few country systems which have proper monitoring in place where you can assess the performance of your database in particular, and rapidly identify any problems as they emerge. Because many existing systems are running blind like this it would definitely be safer to run the new modules separate to this.



Thanks Bob and Rebecca. I agree, let us consider having separate instance.

1 Like

Dear All,

In the installation of the COVID module, i observed that several Category Option Group set were named as Age in years (…) in the WHO dashboard metadata and again given the same name in COVID module even though the disagregation is different.

The above stops analytics from running and couses the resource table error
ERROR: column “Age in years (0-4, 5-14, 15-24, 25-34, 35-44, 45-” specified more than once

However, this is easy to fix: you have to go in the Category option group set and ensure that the names are different by either putting initials. The error would be Age in years is specificied more than once. Note that this only happens when you installed WHO dashboards in your instance.

I think while generating these metadata, it will be good considering the previous metadata names.

1 Like

I have imported the new meta-data (0.3.3) and re-imported old meta-data over it but I ended up with error

Failed to save the enrollment to the server (Interface)

Failed to load resource: the server responded with a status of 500 () (Console)

{"httpStatus":"Conflict","httpStatusCode":409,"status":"ERROR","message":"At least one organisation unit must be specified"} (Server Response)

Dear All,

I installed the COVID-19 packages on my local maching, Windows 10, Tomcat 9 and PostgreSQL 12. DHIS2 installed successfully following this blog

All metadata packages can be imported into the new instance version 2.33.2. Including the organization unit from different instance. Aggregate and Event packages are running. But, CBS, Contact Tracing and Port Entry could not load organization unit tree and the program tracker metadata and showed this error:

I pushed to search orgunit in the tracker Capture apps, and select an orgunit that has been assign to the program, then the program tracker lists appeared. I select a program, submit data (program attribute, program stage, relationship), everything looked fine. But when I returned to the Tracker Capture apps, the recorded data not appeared in the list, and showed this error:

Trying to find solution in several threads Tracker capture app not loading dhis2 version 2.30 and Tracker Program Stage Loads Forever, still cannot solve the problem.

I checked in the database there was attribute data value at “trackedentityattributevalue” table. I assumed data was recorded in the database.

Any help would be appreciated.

Thank you

Hi Andrew,
Thanks for reporting this! We discovered the issue is that the first n characters of the names are identical (even though not entirely identical).@omielp has updated the name of the Cat option group set and it will be included in the next package release.

1 Like

Hi Gysanjaya,
Please refer to Failed to load metadata Error. It looks like the same problem and it was solved by stephocay


Thank you @omielp
I tried several scenario for server.xml: relaxedQueryChars="[]" (without comma), then change with comma relaxedQueryChars="[,]" and relaxedQueryChars="[,],|"
The Tracker App can load Organisation Unit and Program Metadata, I can register new data, add relationship and it recorded in the table “trackedentityattributevalue” and “trackedentitydatavalueaudit”. However, it still failed to list the data that has been captured when I return to tracker capture app, similar error as above 2nd picture.

In addition, after Clear Cache, it ended up with loading orgunit tree and the program metadata again. I had to trigger from Capture Apps (event program), entry a data value then open Tracker Capture Apps from the capture app. It is weird since Event and Agregate package running well.

Still looking for the solution, if anyone ever had similar problem and find out the solution, please share

Thank you

1 Like