Program Indicators Returning Zero Despite Matching Event Data (DHIS2 2.41)

Hello DHIS2 Community,

I am experiencing an issue with Program Indicators in DHIS2 version 2.41 and would appreciate your guidance.

Background

I have a Tracker program with two program stages:

  • Beneficiary (Client) Registration (M4vhzvytRCl)
    • Captures beneficiary demographics such as:
      • Age (LdjKI3jwppE)
      • Sex (bxRw9QNc9Y9)
  • Services Provided (Awqf8EbrvIL)
    • Captures service delivery information including:
      • Returned to Care (YvwHpYkkpax) – Yes/No (1/0)
      • LTFU Re-engagement (mCudE8KBYHy) – Yes/No (1/0)
      • Pregnant (TUfrbmUp0fi)
      • Breastfeeding (HQpsHC0CnZ0)

What works

When I use Data Visualizer directly on the data element Bloom2 - LTFU Re-engagement, I get the expected results:

  • April 2026 = 27
  • May 2026 = 14
  • June 2026 = 1

Similarly, if I create simple Program Indicators using only:

#{Awqf8EbrvIL.YvwHpYkkpax} == 1

or

#{Awqf8EbrvIL.mCudE8KBYHy} == 1

they return data.

The problem

I am trying to build disaggregated Program Indicators for:

  • SVC-05: Number of Children LTFU Brought Back on ART
    • Male 0–4
    • Male 5–9
    • Male 10–14
    • Female 0–4
    • Female 5–9
    • Female 10–14
  • SVC-06: Number of PBFW LTFU Brought Back on ART
    • 10–14 years
    • 15–19 years
    • 20–24 years

The indicators always return zero, despite the Event Report showing clients that should satisfy the criteria.

For example:

(

#{Awqf8EbrvIL.YvwHpYkkpax} == 1

||

#{Awqf8EbrvIL.mCudE8KBYHy} == 1

)

&&

#{M4vhzvytRCl.LdjKI3jwppE} >= 0

&&

#{M4vhzvytRCl.LdjKI3jwppE} <= 4

&&

#{M4vhzvytRCl.bxRw9QNc9Y9} == ‘Female’

and for PBFW:

(

#{Awqf8EbrvIL.YvwHpYkkpax} == 1

||

#{Awqf8EbrvIL.mCudE8KBYHy} == 1

)

&&

(

#{Awqf8EbrvIL.TUfrbmUp0fi} == 1

||

#{Awqf8EbrvIL.HQpsHC0CnZ0} == 1

)

&&

#{M4vhzvytRCl.LdjKI3jwppE} >= 20

&&

#{M4vhzvytRCl.LdjKI3jwppE} <= 24

Important clarification

Initially I used:

Returned to Care == 1 && LTFU Re-engagement == 1

However, I realised these represent different service types and are not expected to both be Yes in the same service event. I therefore changed the logic to use OR, but the indicators still return zero.

Program Indicator configuration

  • DHIS2 Version: 2.41
  • Analytics Type: Event
  • Program Stage: Services Provided (Awqf8EbrvIL)
  • Expression: 1
  • Filter: contains the logic shown above.

My questions

  1. Is it supported in DHIS2 2.41 to reference Age and Sex from the Registration stage while evaluating events from the Services Provided stage in an Event Program Indicator?
  2. Are there any known limitations when combining data elements from different program stages in Event Analytics?
  3. Is there a recommended approach for creating age- and sex-disaggregated Program Indicators in this type of Tracker program?
  4. Is there anything incorrect about the expressions or Program Indicator configuration that could explain why all disaggregated indicators return zero while the underlying event data clearly exists?

Any guidance or examples of similar implementations would be greatly appreciated.

Thank you very much for your support.

Hi @Golooba_Ronald

Thanks for sharing this. I think it will be quite helpful if we first address your first two questions before we delve into questions 3 and 4 because this will help us understand the issue better.

I’m wondering why is this not an Enrollment type tracker program because as I’m looking at the description of program, this appears to be best suited for a tracker program of enrollment type where the Age and Sex are Tracked Entity Attributes, and as TEAs, they can be referenced across all program stages regardless of the program indicator type (enrollment/event). Is there a reason why it’s not a tracker enrollment program?

If the program indicator is of type event, you will not be able to evaluate from multiple stages.

You can combine data elements from different program stages in a program indicator of type ‘enrollment’ and not of type event.

Hi @Gassim
Its an enrollment tracker program - plus while i was customizing the data elements i also developed attributes too similar to the DEs. Let me try using attributes and see if it makes a difference.

Plus I am using enrollment analytics not event.

Hi :slight_smile:

Great, so Sex and Age are usually created as Tracked Entity Attributes linked to the Tracked Entity instance (and not data elements in a specific stage). :folded_hands:

I was referring to the part when you said that analytics type is event:

Thanks!