Webinar on Tracker Implementation Considerations, Wednesday 28 April - Q&A thread - Add your questions and comments below

Hi @SDKAAA !
Your question is quite general, so it is possible that I am missing some of prerequisites linked to your question. At the first glance, if your goal is to produce reports based on data from several stages within one program, there is quite a lot you can reach with program indicators. It is possible to use data from program Indicators in reports.

Feel free to share more details. Hopefully, we can provide more detailed answers then.

Here is an overview of programIndicator functions

1 Like

This is a great question @SDKAAA and a high priority for more advanced tracker configurations.

For event reports, you might look into the enrollment line-listing. This allows you to do show data from two different stages on the same event report. Example below shows a program attribute, and data elements from repeatable TB visit and TB lab stage.

For program indicator analytics I’d recommend you look into the d2:count* class of functions for filtering enrollments by conditions across multiple stages or events. @YuryR has provided a link to those functions in docs above.

For example, consider that all of these are enrollment type program indicators with V{enrollment_count} expression.

Using a program indicator filters you can answer questions like this:
d2:count(#{jdRD35YwbRH.zocHNQIQBIN})>=1
“How many TB patients had at least one result for a smear microscopy test”?

d2:countIfValue(#{jdRD35YwbRH.zocHNQIQBIN},'Positive')>=1
“How many TB patients had at least one positive result for a smear microscopy test”?

d2:countIfCondition(#{edqlbukwRfQ.vANAXwtLwcT},'>8')>=1
“How many pregnancies had at least one ANC visit with a hemoglobin value over 8?”

It should be noted that currently these are only possible with enrollment type program indicators, and therefore the organisation unit assignment is where the TEI was enrolled.

4 Likes

Android Manual sync’ing is always a problem for users. Any recommendations on using device remote management tools e.g sureMDM by 42gears to invoke a sync job or scheduling sync jobs on an Android device to ensure all devices stay sync’d with server?

Also kindly speak a little bit more on tracker implementation for clinical research - documented best case use scenarios!

2 Likes

Hi @ar.shahab . Using program stages to mirror a fixed clinical schedule like ANC or immunization is one way to configure Tracker, but it is not the only way. There are many different Tracker setups that support health programs where it is not known when a patient/client is expected, or what service they will need when they arrive. For example, you can set up a generic program for primary care, with questions related to a general patient visit. This could have an accompanying stage for lab work, or even a separate program for lab. When a diagnosis is determined, the patient could then be enrolled in a specific tracker program for that condition, such as TB or ART.

1 Like

Thank you Mike for the clarification.

1 Like

Thank you for your question @Morley!

The Android team has developed some MDM guidelines which can be accessed here:

They have also developed a guide on how to build your own APK which can also be helpful for private MDM deployments:

Hopefully those guidelines will be of help to you, and let us know if you have any additional questions there!

Also ccing some Android colleagues @jaime.bosque and @jose for any additional input.

1 Like

Question - say a program has 2 stages, how can you show some of the ‘element value’ entered in stage 1, while entering data for stage 2, as reference.

1 Like

@Morley , with regard to using Tracker data for research, there are three key ways that this can be done:

  1. A specific Tracker program can be set up for collecting the necessary data for a trial, with a workflow and analytics aimed at supporting the trial processes and needs. The data can also be exported from Tracker to an outside statistical tool, such as R, where more robust analytics can be run.

  2. A country can allow anonymized access to their existing Tracker program for research purposes. The eRegistries Initiative at the Norwegian Institute of Public Health has worked on this process for trials related to antenatal care in Palestine and Bangladesh. More information can be found here.

  3. A multi-country or global repository can be established for a specific need, where countries choose to export their individual level data for research or global level decision making. Various global agencies have established such repositories using DHIS2.

1 Like

Question - when an element value changes in a stage, can we update an attribute value of the tracker entity? Using any event, custom code etc?

1 Like

Question - when a TEI stage is submitted - can we update/recalculate some element values in a specific aggregate dataset?

1 Like

Question: How to configure a Tracker in which you have a repeatable stage and you want to be able to export a linelisting for this repeatable stage with all the events of each TEI in the same line. And you link it with data for the TEI in other non repeatable stages.

1 Like

I faced this situation during exporting a linelisting from a tracker program. TEI without id. I will like to know what is the cause. And how to prevent this kind of situation during configuration and/or training of users.

1 Like

Question: When options for a specific optionset change. What is the best manner to change it ?

Hi @Mahmud,

You can achieve this by creating programRuleVariables that takes data values from Data Elements.
Here you have the option of a programRuleVariable based on previous event, current event, latest event or a calculated value. You can then use program rules to display these data values from previous events, for example then from Stage 1 when you are entering data from Stage 2.

If you want to use the values as references, you can choose to display them in different ways - there are program rule actions for displaying values in the Feedback widget and the Program Indicator widget - but if you would like it directly next to value you are entering in Stage 2 then you can do it as a warning box (Show warning) or even as an autofilled new Data Element right next to it.

Questions: A tracker program used in health facilities. How to do to get a real time data with a high number of users?
Capacities of the server? What to activate in DHIS2? Etc.

Thank you Mike for the additional information in Zoom.

Hello Alice.
Is there any link for registration in the upcoming Tracker academy?

1 Like

Hi Mahmud

Unfortunately there is no way to immediately ASSIGN a value to an TEI Attribute while you are updating a program stage. You would need to again open the registration form with the TEI Attributes.

This is by design: here is an explanation from Markus

Of course there may be workarounds with custom scripts etc to update the TEI attribute via a PUT request, depending on the use case, but there is no built-in solution. Perhaps you could consider a warning box in the program stage to ask the user to update the TEI attribute. There is also the option to ASSIGN the TEI attribute value to a data element when the program rule is executed.

2 Likes

The answer to this question really depends on how you transfer data between your Tracker and Aggregate instances.

One simple manual approach might be a program stage notification which would send a message to the data manager when a program stage is completed – they could then re-run analytics tables and re-send data to the aggregate dataset.

If you configure this message to send based on program rules, you could possibly even trigger the message if the event date is within the reporting window, but the current date is X days after the aggregate of reporting window.

Again, custom scripts are on option but it depends on your tracker->aggregate workflow.

1 Like

Hey there @paulyvan
Exporting all the data for a repeating event in one line represents a challenge and can not be done with todays tools - not in the way you describe at least.

For the new line list app being developed, we are considering ways of meeting this challenge and making it possible to line list TEI with columns for data from different events. The mechanism will probably involve making a definition of columns in the line list that defines wether to load data for the first, last or perhaps a differently specified event within the repeating stage. This is a release or two away though, and haven’t got a finished design. It would be useful to know your full use case for the process of designing this feature.

When it comes to workarounds, there is 2 paths I can think of. One would be to create a program indicator and use the d2:count***() functions that @Brian mentions in another post above. The other is using SQL views and producing your report with custom SQL.

Markus

1 Like