Program indicators: Deduplicating repeatable stages

I need to create program indicators that count people, based on criteria in a repeatable stage. I realize this is exactly why enrollment/TEI count was invented, but I can’t use enrollment count or TEI count because I need to filter by an attribute option combo that can only apply to the program stages (it is not possible to apply the attribute option combo to the enrollment itself!). If I use enrollment/TEI count, there is no attribute option combo assigned. If that makes sense to you and you can think of a workaround where I could continue to use enrollment count but have the attribute option combo apply, I’d be grateful!

Anyway, if all that stuff about the attribute option combo doesn’t make sense to you, just assume that I have to use event count in my program indicators but I want to count people. In the programs, I have the TEAs and a repeatable stage (sometimes also a non-repeatable stage). If I have the expression “event count” and then filters that draw from the repeatable stage, it will count all the stages and double/triple count the person. For example, if a person was contacted for follow-up 3 times, the indicator would return 3, but I want to know the number of people who were followed up (at all). If I draw from two different stages (trying to add a filter based on a non-repeatable stage), it appears not to work because it can’t do an event count based on criteria from two events (based on testing in play demo).

Thanks for any ideas!

Hi there @Natalie_Tibbels!
I assume you mean that you cannot make an indicator with analytics type enrollment?

The if you use a analytics type event, it should still work to use the V{tei_count} variable in your expression. This indicator would deduplicate by making sure each TEI is only counted once, even when there is several evens matching the filter for that TEI.


Hi @Markus,

I have a tracker that enrolls participants in activities (A, B, C, D). These four activities are created as 4 non repeatable stages.
From the program indicators below, I was able to build the first Program indicator with the of @Natalie_Tibbels , but the second seems to be difficult to build.

  1. Total number of participants who attended all activities (A. B, C and D)
  2. Total number of participants who attended at least two activities. (The word at least is puzzling me)

@Natalie_Tibbels also suggested I just create a filter with all possible combinations of 2 Activities for Program indicator 2. However, the problem is if there are 10 stages or more, making a lot of combinations would be cumbersome.

I was wondering if you could help please shed some light for me on this program indicator could be built even if the 4 activities were one repeatable stage.

Thanks in advance for any advice/clarification

Hi @Markus! The TEI count doesn’t work, because the category combo assigned to the tracker program does not apply to the TEI itself or to the enrollment, only to the program stages. So none of the indicators return any values when looking by the attribute option combos. This is why I suspect most people don’t apply a category combo (like enrollments by project or by CHW) to tracker programs.

Hi again,
Ok, yes you are right. As this is an indicator that needs to pull data from different stages, you have to use an enrollment type indicator. The enrollment might belong to several different categories, and therefore these indicators will not work.

I tested with an event type indicator, using the V{tei_count} as expression to acheive district counting among the TEI that the event relates to. This seems to work normally together with categories. See an example of such an indicator with the “Implementing partner” category:

…but as you understood this is limited to event type program indicators. My point from above was that you will be able to use V{tei_count} also with event indicators, but this does not help you here.

To understand your use case: What category should have been used in case there is discrepancies between the events in the enrollment?


Hi @Markus,

I was wondering if you could me help to solve my problem posted above.

Thanks in advance