Insight on program indicator and rule

Hi all,

Wondering if anyone could help with an indicator and a program rule.

Hi there Natalie!
Your program indicator looks all good. Can it be that the aggregation type is not "Count"? If your expression is a count, then the aggregation type needs to be "Count" or "Custom" for advanced cases.
Tip: There is also a d2:yearsBetween function.

For the program rule, I wonder if your A{Agree to be contacted} field might be of datatype "Yes/No"? If so, the correct syntax would be:
A{Agree to be contacted} == false

What version of DHIS2 are you on?

Best regards,
Markus

···

15. mar. 2018 kl. 18:33 skrev Natalie Tibbels <ntibbel1@jhu.edu>:

Hi all,
Wondering if anyone could help with an indicator and a program rule.

What is wrong with this indicator (to calculate age from date of birth):
Want to count total enrollments where age is 35-39

Expression:
V{enrollment_count}

Filter:
(d2:daysBetween(A{Date of birth},V{enrollment_date}) / 365) >= 35 and (d2:daysBetween(A{Date of birth},V{enrollment_date}) / 365) <= 39

[In the actual expression, the date of birth is the UID for date of birth]

It’s producing no data but there should be some – think I’m making a simple mistake.

What is wrong with this program rule:
If the person says "no" for agreement to be contacted, hide the phone number field

Name: Hide phone number field

Expression: A{Agree to be contacted} == 'No'

BUT, when I test it, if I click “Yes, agree to be contacted” the phone number disappears and if I click “No” the phone number remains. So the opposite of what I want….

Thanks for any suggestions!

_______________________________________________
Mailing list: DHIS 2 Users in Launchpad
Post to : dhis2-users@lists.launchpad.net <mailto:dhis2-users@lists.launchpad.net>
Unsubscribe : DHIS 2 Users in Launchpad
More help : ListHelp - Launchpad Help

Hi Natalie,

In addition to Markus advice above, also check the you use of brackets, they are not balanced

(d2:daysBetween(A{Date of birth},V{enrollment_date}) / 365) in this expression, you are dividing before executing and calcultating the entire days between, should be

(d2:daysBetween(A{Date of birth},V{enrollment_date})) / 365

But better to use years between as Markus advises

Regards

···

On Thu, Mar 15, 2018 at 9:19 PM, Markus Bekken markus@dhis2.org wrote:

Hi there Natalie!
Your program indicator looks all good. Can it be that the aggregation type is not “Count”? If your expression is a count, then the aggregation type needs to be “Count” or “Custom” for advanced cases.

Tip: There is also a d2:yearsBetween function.

For the program rule, I wonder if your A{Agree to be contacted} field might be of datatype “Yes/No”? If so, the correct syntax would be:

A{Agree to be contacted} == false

What version of DHIS2 are you on?

Best regards,

Markus

  1. mar. 2018 kl. 18:33 skrev Natalie Tibbels ntibbel1@jhu.edu:

Hi all,

Wondering if anyone could help with an indicator and a program rule.


What is wrong with this indicator (to calculate age from date of birth):

Want to count total enrollments where age is 35-39

Expression:

V{enrollment_count}

Filter:

(d2:daysBetween(A{Date of birth},V{enrollment_date}) / 365) >= 35 and (d2:daysBetween(A{Date of birth},V{enrollment_date}) / 365) <= 39

[In the actual expression, the date of birth is the UID for date of birth]

It’s producing no data but there should be some – think I’m making a simple mistake.

What is wrong with this program rule:

If the person says “no” for agreement to be contacted, hide the phone number field

Name: Hide phone number field

Expression: A{Agree to be contacted} == ‘No’

BUT, when I test it, if I click “Yes, agree to be contacted” the phone number disappears and if I click “No” the phone number remains. So the opposite of what I want….

Thanks for any suggestions!


Mailing list: https://launchpad.net/~dhis2-users
Post to : dhis2-users@lists.launchpad.net
Unsubscribe : https://launchpad.net/~dhis2-users
More help : https://help.launchpad.net/ListHelp


Mailing list: https://launchpad.net/~dhis2-users

Post to : dhis2-users@lists.launchpad.net

Unsubscribe : https://launchpad.net/~dhis2-users

More help : https://help.launchpad.net/ListHelp

Prosper Behumbiize, MPH
DHIS2 Implementation Adviser| HISP Uganda

prosper@hispuganda.org | prosper@dhis2.org | Skype: prospertb

Natalie,

In addition to what Markus and Prosper have suggested, do you have access to the logs of your server? That can be a very useful source of information especially when trying to debug program indicators. I will usually set up a terminal tailing the log and then try to view my program indicator in one of the analytics apps. You’ll see a lot of angry error messages if it isn’t properly formulated and can give some better clues as to why.

One time I had an expression that was considered valid by the edit screen but was failing when trying to view in analytics. Turned out it was because my spacing was off in between multiple d2:condition statements. The only way I figured it out was by watching the logs and saw a malformed sql query error.

Good luck!

Aaron

···

On Fri, Mar 16, 2018 at 7:39 AM, Prosper BT ptb3000@gmail.com wrote:

Hi Natalie,

In addition to Markus advice above, also check the you use of brackets, they are not balanced

(d2:daysBetween(A{Date of birth},V{enrollment_date}) / 365) in this expression, you are dividing before executing and calcultating the entire days between, should be

(d2:daysBetween(A{Date of birth},V{enrollment_date})) / 365

But better to use years between as Markus advises

Regards


Mailing list: https://launchpad.net/~dhis2-users

Post to : dhis2-users@lists.launchpad.net

Unsubscribe : https://launchpad.net/~dhis2-users

More help : https://help.launchpad.net/ListHelp

Aaron C. White

919.522.5585

Prosper Behumbiize, MPH
DHIS2 Implementation Adviser| HISP Uganda

prosper@hispuganda.org | prosper@dhis2.org | Skype: prospertb

On Thu, Mar 15, 2018 at 9:19 PM, Markus Bekken markus@dhis2.org wrote:

Hi there Natalie!
Your program indicator looks all good. Can it be that the aggregation type is not “Count”? If your expression is a count, then the aggregation type needs to be “Count” or “Custom” for advanced cases.

Tip: There is also a d2:yearsBetween function.

For the program rule, I wonder if your A{Agree to be contacted} field might be of datatype “Yes/No”? If so, the correct syntax would be:

A{Agree to be contacted} == false

What version of DHIS2 are you on?

Best regards,

Markus

  1. mar. 2018 kl. 18:33 skrev Natalie Tibbels ntibbel1@jhu.edu:

Hi all,

Wondering if anyone could help with an indicator and a program rule.


What is wrong with this indicator (to calculate age from date of birth):

Want to count total enrollments where age is 35-39

Expression:

V{enrollment_count}

Filter:

(d2:daysBetween(A{Date of birth},V{enrollment_date}) / 365) >= 35 and (d2:daysBetween(A{Date of birth},V{enrollment_date}) / 365) <= 39

[In the actual expression, the date of birth is the UID for date of birth]

It’s producing no data but there should be some – think I’m making a simple mistake.

What is wrong with this program rule:

If the person says “no” for agreement to be contacted, hide the phone number field

Name: Hide phone number field

Expression: A{Agree to be contacted} == ‘No’

BUT, when I test it, if I click “Yes, agree to be contacted” the phone number disappears and if I click “No” the phone number remains. So the opposite of what I want….

Thanks for any suggestions!


Mailing list: https://launchpad.net/~dhis2-users
Post to : dhis2-users@lists.launchpad.net
Unsubscribe : https://launchpad.net/~dhis2-users
More help : https://help.launchpad.net/ListHelp


Mailing list: https://launchpad.net/~dhis2-users

Post to : dhis2-users@lists.launchpad.net

Unsubscribe : https://launchpad.net/~dhis2-users

More help : https://help.launchpad.net/ListHelp