Program Rule

Dear All,

I am working on DHIS2 2.30 project.

I am trying to hide/show program stage depending on a user selection. I succeed to hide the program stage, but its not showing back.

Also there is no errors in the console.

Regards,

···

Save a tree, Please don’t print this email unless you really need to.

Amjad M. Ata-Allah


M: +970.599.721.158
Em: ataallah.amjad@gmail.com
Em: amjad.ataallah@hotmail.com

Skype: amjad.ataallah


Hi Stephen

Here is the condition expression:

#{aDiagnose} != ‘Meningitis - Other Bacterial’ || #{aDiagnose} != ‘Meningitis - Hemophillus Influenza’ || #{aDiagnose} != ‘Meningitis - Meningococcal Meningitis’

Thanks,

···

Save a tree, Please don’t print this email unless you really need to.

Amjad M. Ata-Allah


M: +970.599.721.158
Em: ataallah.amjad@gmail.com
Em: amjad.ataallah@hotmail.com

Skype: amjad.ataallah


Hi Amjad

Is aDiagnose an option set? If it is then try using code instead of name.

Zubair

···

Den man. 8. okt. 2018, 6:50 a.m. skrev Amjad Ata Allah ataallah.amjad@gmail.com:

Hi Stephen

Here is the condition expression:

#{aDiagnose} != ‘Meningitis - Other Bacterial’ || #{aDiagnose} != ‘Meningitis - Hemophillus Influenza’ || #{aDiagnose} != ‘Meningitis - Meningococcal Meningitis’

Thanks,

On Mon, Oct 8, 2018 at 12:41 AM Stephen Ocaya socaya@hispuganda.org wrote:

Hello Amjad M. Ata-Allah , Kindly share the condition expression for the program rule.

regards

On Sun, Oct 7, 2018 at 10:15 PM Amjad Ata Allah ataallah.amjad@gmail.com wrote:

Dear All,

I am working on DHIS2 2.30 project.

I am trying to hide/show program stage depending on a user selection. I succeed to hide the program stage, but its not showing back.

Also there is no errors in the console.

Regards,


Save a tree, Please don’t print this email unless you really need to.

Amjad M. Ata-Allah


M: +970.599.721.158
Em: ataallah.amjad@gmail.com
Em: amjad.ataallah@hotmail.com

Skype: amjad.ataallah



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

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

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

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

Strategic Information Systems for Actions

Plot 36 Impala Avenue, Kololo

P.O. Box 4750, Kampala


Save a tree, Please don’t print this email unless you really need to.

Amjad M. Ata-Allah


M: +970.599.721.158
Em: ataallah.amjad@gmail.com
Em: amjad.ataallah@hotmail.com

Skype: amjad.ataallah



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

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

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

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

Dear Zubair,

Yes it is, and i tried both (name and code).

Regards,

···

On Oct 8, 2018, at 9:47 AM, Zubair Asghar Raja zubair@dhis2.org wrote:

Hi Amjad

Is aDiagnose an option set? If it is then try using code instead of name.

Zubair

Den man. 8. okt. 2018, 6:50 a.m. skrev Amjad Ata Allah ataallah.amjad@gmail.com:

Hi Stephen

Here is the condition expression:

#{aDiagnose} != ‘Meningitis - Other Bacterial’ || #{aDiagnose} != ‘Meningitis - Hemophillus Influenza’ || #{aDiagnose} != ‘Meningitis - Meningococcal Meningitis’

Thanks,

On Mon, Oct 8, 2018 at 12:41 AM Stephen Ocaya socaya@hispuganda.org wrote:

Hello Amjad M. Ata-Allah , Kindly share the condition expression for the program rule.

regards

On Sun, Oct 7, 2018 at 10:15 PM Amjad Ata Allah ataallah.amjad@gmail.com wrote:

Dear All,

I am working on DHIS2 2.30 project.

I am trying to hide/show program stage depending on a user selection. I succeed to hide the program stage, but its not showing back.

Also there is no errors in the console.

Regards,


Save a tree, Please don’t print this email unless you really need to.

Amjad M. Ata-Allah


M: +970.599.721.158
Em: ataallah.amjad@gmail.com
Em: amjad.ataallah@hotmail.com

Skype: amjad.ataallah



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

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

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

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

Strategic Information Systems for Actions

Plot 36 Impala Avenue, Kololo

P.O. Box 4750, Kampala


Save a tree, Please don’t print this email unless you really need to.

Amjad M. Ata-Allah


M: +970.599.721.158
Em: ataallah.amjad@gmail.com
Em: amjad.ataallah@hotmail.com

Skype: amjad.ataallah



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

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

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

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

Hi

You only use the code if that has been specified in the option set (tick-box).

Secondly, you are using OR and NOT in your expression:

#{aDiagnose} != ‘Meningitis - Other Bacterial’ || #{aDiagnose} != ‘Meningitis - Hemophillus Influenza’ || #{aDiagnose} != ‘Meningitis - Meningococcal Meningitis’

Basically that means the expression will always return true, at least if aDiagnose is a single value diagnosis field. Even if you select let us say “Meningitis - Mengingococcal Meningitis” as the aDiagnosis value, the three other components in the expression will be true so the total is true due to the OR…

Try using AND

#{aDiagnose} != ‘Meningitis - Other Bacterial’ && #{aDiagnose} != ‘Meningitis - Hemophillus Influenza’ && #{aDiagnose} != ‘Meningitis - Meningococcal Meningitis’

Meaning : when aDiagnosis is NOT diag1 AND not diag2 AND NOT diag3 then hide stage X

Regards

Calle

Regards

Calle

···

Calle Hedberg

46D Alma Road, 7700 Rosebank, SOUTH AFRICA

Tel/fax (home): +27-21-685-6472

Cell: +27-82-853-5352

Iridium SatPhone: +8816-315-19119

Email: calle.hedberg@gmail.com

Skype: calle_hedberg


Dear Calle,

The case is that i have like 20 diagnosis, i need to hide the stage if the diagnose is not one of those 3 diagnosis and show the stage if its one of them.

I also tried the &&, but didn’t work also.

After clearing the cache, i have this error:

TypeError: Cannot read property ‘id’ of undefined

at dataentry-controller.js:405

at Object.r [as forEach] (angular.js:331)

at processRuleEffect (dataentry-controller.js:298)

at dataentry-controller.js:201

at n.$broadcast (angular.js:14785)

at dhis2.angular.services.js:2873

at angular.js:13248

at n.$eval (angular.js:14466)

at n.$digest (angular.js:14282)

at n.$apply (angular.js:14571)

Regards,

···

Save a tree, Please don’t print this email unless you really need to.

Amjad M. Ata-Allah


M: +970.599.721.158
Em: ataallah.amjad@gmail.com
Em: amjad.ataallah@hotmail.com

Skype: amjad.ataallah


Amjad,

That error is a data-related error (I had something similar last week, and tracked it down to one single orgunit that had an erroneous attribute value - but in your case the data error might be somewhere else, no idea where). If you get that kind of error, it often results in other program rules not executing.

In any case, you cannot combine OR and NOT the way you do - then the expression is always true.

Regards
Calle

···

Calle Hedberg

46D Alma Road, 7700 Rosebank, SOUTH AFRICA

Tel/fax (home): +27-21-685-6472

Cell: +27-82-853-5352

Iridium SatPhone: +8816-315-19119

Email: calle.hedberg@gmail.com

Skype: calle_hedberg


Thanks Calle

I replaced the OR with AND.

I added another action to the rule “Show warning message” for testing, and now the warning message appears but the program stage don’t.

So the issue is with the program stage.

Any suggestions?

Regards,

···

Save a tree, Please don’t print this email unless you really need to.

Amjad M. Ata-Allah


M: +970.599.721.158
Em: ataallah.amjad@gmail.com
Em: amjad.ataallah@hotmail.com

Skype: amjad.ataallah


Hi

If the warning message appear when the dagnosis value is something else than meninges, then it means the expression correctly evaluated to TRUE.

So the expression is correct.

And the other action if expression is true, is to hide the meninges stage, yes? and that stage correctly does not appear?

Seems like you have what you want?

Regards

Calle

···

Calle Hedberg

46D Alma Road, 7700 Rosebank, SOUTH AFRICA

Tel/fax (home): +27-21-685-6472

Cell: +27-82-853-5352

Iridium SatPhone: +8816-315-19119

Email: calle.hedberg@gmail.com

Skype: calle_hedberg


Calle

Yes, but the programe stage should appear when the expression is false, which is not happening. Even the warning message disappear when the expression is false.

···

On Oct 8, 2018, at 11:03 PM, Calle Hedberg calle.hedberg@gmail.com wrote:

Hi

If the warning message appear when the dagnosis value is something else than meninges, then it means the expression correctly evaluated to TRUE.

So the expression is correct.

And the other action if expression is true, is to hide the meninges stage, yes? and that stage correctly does not appear?

Seems like you have what you want?

Regards

Calle

On Mon, 8 Oct 2018 at 21:26, Amjad Ata Allah ataallah.amjad@gmail.com wrote:

Thanks Calle

I replaced the OR with AND.

I added another action to the rule “Show warning message” for testing, and now the warning message appears but the program stage don’t.

So the issue is with the program stage.

Any suggestions?

Regards,

On Mon, Oct 8, 2018 at 2:41 PM Calle Hedberg calle.hedberg@gmail.com wrote:

Amjad,

That error is a data-related error (I had something similar last week, and tracked it down to one single orgunit that had an erroneous attribute value - but in your case the data error might be somewhere else, no idea where). If you get that kind of error, it often results in other program rules not executing.

In any case, you cannot combine OR and NOT the way you do - then the expression is always true.

Regards
Calle

On Mon, 8 Oct 2018 at 13:37, Amjad Ata Allah ataallah.amjad@gmail.com wrote:

Dear Calle,

The case is that i have like 20 diagnosis, i need to hide the stage if the diagnose is not one of those 3 diagnosis and show the stage if its one of them.

I also tried the &&, but didn’t work also.

After clearing the cache, i have this error:

TypeError: Cannot read property ‘id’ of undefined

at dataentry-controller.js:405

at Object.r [as forEach] (angular.js:331)

at processRuleEffect (dataentry-controller.js:298)

at dataentry-controller.js:201

at n.$broadcast (angular.js:14785)

at dhis2.angular.services.js:2873

at angular.js:13248

at n.$eval (angular.js:14466)

at n.$digest (angular.js:14282)

at n.$apply (angular.js:14571)

Regards,

On Mon, Oct 8, 2018 at 1:27 PM Calle Hedberg calle.hedberg@gmail.com wrote:

Hi

You only use the code if that has been specified in the option set (tick-box).

Secondly, you are using OR and NOT in your expression:

#{aDiagnose} != ‘Meningitis - Other Bacterial’ || #{aDiagnose} != ‘Meningitis - Hemophillus Influenza’ || #{aDiagnose} != ‘Meningitis - Meningococcal Meningitis’

Basically that means the expression will always return true, at least if aDiagnose is a single value diagnosis field. Even if you select let us say “Meningitis - Mengingococcal Meningitis” as the aDiagnosis value, the three other components in the expression will be true so the total is true due to the OR…

Try using AND

#{aDiagnose} != ‘Meningitis - Other Bacterial’ && #{aDiagnose} != ‘Meningitis - Hemophillus Influenza’ && #{aDiagnose} != ‘Meningitis - Meningococcal Meningitis’

Meaning : when aDiagnosis is NOT diag1 AND not diag2 AND NOT diag3 then hide stage X

Regards

Calle

Regards

Calle

On Mon, 8 Oct 2018 at 09:11, Amjad Ata-Allah ataallah.amjad@gmail.com wrote:

Dear Zubair,

Yes it is, and i tried both (name and code).

Regards,

Sent from my iPhone

On Oct 8, 2018, at 9:47 AM, Zubair Asghar Raja zubair@dhis2.org wrote:

Hi Amjad

Is aDiagnose an option set? If it is then try using code instead of name.

Zubair

Den man. 8. okt. 2018, 6:50 a.m. skrev Amjad Ata Allah ataallah.amjad@gmail.com:

Hi Stephen

Here is the condition expression:

#{aDiagnose} != ‘Meningitis - Other Bacterial’ || #{aDiagnose} != ‘Meningitis - Hemophillus Influenza’ || #{aDiagnose} != ‘Meningitis - Meningococcal Meningitis’

Thanks,

On Mon, Oct 8, 2018 at 12:41 AM Stephen Ocaya socaya@hispuganda.org wrote:

Hello Amjad M. Ata-Allah , Kindly share the condition expression for the program rule.

regards

On Sun, Oct 7, 2018 at 10:15 PM Amjad Ata Allah ataallah.amjad@gmail.com wrote:

Dear All,

I am working on DHIS2 2.30 project.

I am trying to hide/show program stage depending on a user selection. I succeed to hide the program stage, but its not showing back.

Also there is no errors in the console.

Regards,


Save a tree, Please don’t print this email unless you really need to.

Amjad M. Ata-Allah


M: +970.599.721.158
Em: ataallah.amjad@gmail.com
Em: amjad.ataallah@hotmail.com

Skype: amjad.ataallah



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

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

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

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

Strategic Information Systems for Actions

Plot 36 Impala Avenue, Kololo

P.O. Box 4750, Kampala


Save a tree, Please don’t print this email unless you really need to.

Amjad M. Ata-Allah


M: +970.599.721.158
Em: ataallah.amjad@gmail.com
Em: amjad.ataallah@hotmail.com

Skype: amjad.ataallah



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

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

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

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


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

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

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

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


Calle Hedberg

46D Alma Road, 7700 Rosebank, SOUTH AFRICA

Tel/fax (home): +27-21-685-6472

Cell: +27-82-853-5352

Iridium SatPhone: +8816-315-19119

Email: calle.hedberg@gmail.com

Skype: calle_hedberg



Save a tree, Please don’t print this email unless you really need to.

Amjad M. Ata-Allah


M: +970.599.721.158
Em: ataallah.amjad@gmail.com
Em: amjad.ataallah@hotmail.com

Skype: amjad.ataallah



Calle Hedberg

46D Alma Road, 7700 Rosebank, SOUTH AFRICA

Tel/fax (home): +27-21-685-6472

Cell: +27-82-853-5352

Iridium SatPhone: +8816-315-19119

Email: calle.hedberg@gmail.com

Skype: calle_hedberg



Save a tree, Please don’t print this email unless you really need to.

Amjad M. Ata-Allah


M: +970.599.721.158
Em: ataallah.amjad@gmail.com
Em: amjad.ataallah@hotmail.com

Skype: amjad.ataallah



Calle Hedberg

46D Alma Road, 7700 Rosebank, SOUTH AFRICA

Tel/fax (home): +27-21-685-6472

Cell: +27-82-853-5352

Iridium SatPhone: +8816-315-19119

Email: calle.hedberg@gmail.com

Skype: calle_hedberg


Hi

agree - if the expression is false, no action is taken.

maybe it’s a refresh thing - have you tried to refresh the page?

And does the stage appear if you remove the hide program stage action from the Prog Rule?

Regards

calle

···

Calle Hedberg

46D Alma Road, 7700 Rosebank, SOUTH AFRICA

Tel/fax (home): +27-21-685-6472

Cell: +27-82-853-5352

Iridium SatPhone: +8816-315-19119

Email: calle.hedberg@gmail.com

Skype: calle_hedberg


Calle

Yes, i did a refresh and a hard refresh and even more i deleted all the browser cache :smiley:

Yes, the stage appear if i remove the hide program stage rule.

Regards,

···

Save a tree, Please don’t print this email unless you really need to.

Amjad M. Ata-Allah


M: +970.599.721.158
Em: ataallah.amjad@gmail.com
Em: amjad.ataallah@hotmail.com

Skype: amjad.ataallah


6 posts were split to a new topic: Program rule not working