DHIS 2 Android App 1.3.0 is released [2.32 compatibility]

Dear DHIS2 Community,

After one month of beta testing we can release today the 1.3.0 production version of the DHIS2 Capture Android App, many thanks for all your testing and feedback!

The functional improvements include improvements in selectors for org units and dates, simplifies the flow for the complete action, improves error management and performance and includes a lot of improvements for user experience.

There are alos many bugs fixed related to data entry, program rules, sync Problems and crashes.

Detailed information:

Get it on:

  • Google Play (the upload is being processed in Google Play Store and will be available in the next hours)
  • Github (already available)

Remember that, if you need to take screenshots or broadcast your screen for training purposes or demos sessions, there is a Training APK available in Github .

All this information is also available in the Android Section of the DHIS2 web site !

the Android team


Thanks Marta, lets test on our side.

1 Like

Thank you very much dear Marta.

1 Like


According to Bridget, the program rule bug causing negative calculated age values is still there, and the negative values blocks the synchronising (plus being absurd, obviously)

We discussed that bug when testing the SA IDSR-Malaria system way back - it is most likely related to incorrect processing of this expression: d2:monthsBetween(A{dateOfBirth},V{enrollment_date}).

So this bug continues to be a showstopper - any chance a fix can be committed and a patch released?




Hi @Calle_Hedberg ,

We are trying to test this issue in your training instance, but currently the server is down. Please can you inform us when its back up so that we can verify it.

Ferdy R.

1 Like

Oh sweet thanks.

1 Like


I think you tried to access that server right in the middle of an update to the latest 2.29 build. The system is up again now and will remain up.

NOTE one important thing:

When Bridget Makgoba mentioned that the calculated negative month values blocked synchronization (we have the same age calculation program rules in the Sierra Leone Case Based Disease System), I changed those three Age TEAs from “Positive or zero integer” to just “Integer” - the objective being to at least remove the system blocking the saving of negative values. What was really strange is that this “relaxation” of the data type also seems to circumvent the negative month result in the first place - or in other words, it provides a workaround.

I then also changed the za-idsr instance to using Integer, but for the purpose of tracking down this bug I’ve changed them back to “Positive or zero Integer” in the training instance - because there is obviously still a difference between browser-based data capture and android data capture when it comes to the processing of those program rules. The data type differences might give you a clue, although I’m not sure if the problem relates to the d2:monthsBetween function or the d2:floor function and their interaction with the data type.

Best regards


1 Like

Hi @Calle_Hedberg,

we tested the following configuration in 2.32.1:

  • Added to Child program 3 DE of value type integer, zero or positive integer y number.
  • Added to Child program an attribute of value type Age
  • Added to Childl program a program rule which calculates and assigns the age in months to the three DE (using months between(Age, date of enrollment).

Result is that months are properly calculated in all cases (positive value, zero months and negative values).

When syncing the TEI with negative value is synced but not the DE with negative values (and this is as web)

We could bring to the tracker meeting the suggestion no to return negative values… but everything seems to be working as expected… Are yours or Bridget,s servers behaving different to this??

1 Like

@Marta Vila

One difference I can see is that our Date of Birth is data type DATE, not AGE.

Secondly, what are the exact Program rules you are using?

And did you test the same on za-idsr/training, which you have access too?

I suspect that it is a specific set of data types & functions that causes the problem, here - but I will also test this myself (the trigger for this query was testing done by Bridget in Sierra Leone)



1 Like

Hi Calle,

I thought it was Age. Wasn’t sure where to look at on your server.
We will reproduce the testing with a Date Data Element though.

The program rule used was:

1 Like

This is interesting.
I will make a follow up

1 Like

The link to the google docs seems not to be working or atleast we don’t have permission to access the resource. Kindly help us sort this out @dhis2-android.


1 Like

Thanks dear Martha

1 Like

Hi Philip @paleu256,

@marta can correct me if I am wrong, but I think the relevant document is one that Marta’s team has recently converted and made available in HTML (HTML single page) and PDF.

Kind regards,

1 Like

Hi @FerdyRod and @marta I have tested this age calculation from the user-entered date of birth on the South Africa malaria instance (2.32, android 1.3.2) and we are still getting negative months in the Android app, with the web working correctly.

If you are unable to reproduce on your end, can you use the SA test credentials provided to you?

1 Like