d2: daysbetween AND d2:yearsbetween not working properly in 2.27 build revision b6e8cde

Hello all!

I am trying to create a program rule based on Date of birth and Enrollment date. Basically, I want to hide one set of data elements if the client is below 18 years old and another set of data elements if the client is above 18 years of age.

This is what I tried:

  1.  (d2:daysBetween(A{Date of Birth}, V{enrollment_date})/365)  <18             **THIS DOES NOT WORK**
    

**2) ** (d2:yearsBetween(A{Date of Birth}, V{ enrollment _date})/365) <18 This actually works(hides the data element I want), but I don’t think it is the correct expression.

  1.  d2:yearsBetween(A{Date of Birth}, V{ enrollment _date})  <18                      **I think that this is the correct expression, but it is executing the rule (does not hide the data element).**
    

Do you think that there might be a bug in how these expressions work? If not, can someone guide me to the correct expression?

Thanks in advance,

Georgi

Georgi Chakarov, CIA | georgi@logicaloutcomes.net | +1-647-478-5634 x 104 | LogicalOutcomes c/o Centre for Social Innovation, 720 Bathurst Street, Toronto Canada M5S 2R4 | * You may unsubscribe from receiving commercial electronic messages from LogicalOutcomes by emailing *info@logicaloutcomes.net

Hello all! Any thoughts on my email below from last week?

Thanks,

Georgi

···

From: Georgi Chakarov

Sent: Friday, August 4, 2017 1:01 PM

To: DHIS Users dhis2-users@lists.launchpad.net; DHIS 2 Developers list dhis2-devs@lists.launchpad.net

Cc: Sara Gaudon sara@logicaloutcomes.net; Kristiyan Panayotov Kristiyan@logicaloutcomes.net

Subject: d2: daysbetween AND d2:yearsbetween not working properly in 2.27 build revision b6e8cde

Hello all!

I am trying to create a program rule based on Date of birth and Enrollment date. Basically, I want to hide one set of data elements if the client is below 18 years old and another set of data elements if the client is above 18 years of age.

This is what I tried:

  1.  (d2:daysBetween(A{Date of Birth}, V{enrollment_date})/365)  <18             **THIS DOES NOT WORK**
    

**2) ** (d2:yearsBetween(A{Date of Birth}, V{ enrollment _date})/365) <18 This actually works(hides the data element I want), but I don’t think it is the correct expression.

  1.  d2:yearsBetween(A{Date of Birth}, V{ enrollment _date})  <18                      **I think that this is the correct expression, but it is executing the rule (does not hide the data element).**
    

Do you think that there might be a bug in how these expressions work? If not, can someone guide me to the correct expression?

Thanks in advance,

Georgi

Georgi Chakarov, CIA | georgi@logicaloutcomes.net | +1-647-478-5634 x 104 | LogicalOutcomes c/o Centre for Social Innovation, 720 Bathurst Street, Toronto Canada M5S 2R4 | * You may unsubscribe from receiving commercial electronic messages from LogicalOutcomes by emailing *info@logicaloutcomes.net

Hi there Georgi!
The expression
d2:yearsBetween(A{Date of Birth}, V{ enrollment _date}) <18
should be the correct one. I would change the V{ enrollment _date} to V{enrollment _date}

Note that before the birth date is not entered, the expression will evaluate to 0 - which will be less than 18.

Let me know how it goes.

Markus

···

9. aug. 2017 kl. 00.41 skrev Georgi Chakarov <georgi@logicaloutcomes.net>:

Hello all! Any thoughts on my email below from last week?

Thanks,

Georgi

From: Georgi Chakarov
Sent: Friday, August 4, 2017 1:01 PM
To: DHIS Users <dhis2-users@lists.launchpad.net>; DHIS 2 Developers list <dhis2-devs@lists.launchpad.net>
Cc: Sara Gaudon <sara@logicaloutcomes.net>; Kristiyan Panayotov <Kristiyan@logicaloutcomes.net>
Subject: d2: daysbetween AND d2:yearsbetween not working properly in 2.27 build revision b6e8cde

Hello all!

I am trying to create a program rule based on Date of birth and Enrollment date. Basically, I want to hide one set of data elements if the client is below 18 years old and another set of data elements if the client is above 18 years of age.

This is what I tried:
1) (d2:daysBetween(A{Date of Birth}, V{enrollment_date})/365) <18 THIS DOES NOT WORK
2) (d2:yearsBetween(A{Date of Birth}, V{ enrollment _date})/365) <18 This actually works(hides the data element I want), but I don’t think it is the correct expression.
3) d2:yearsBetween(A{Date of Birth}, V{ enrollment _date}) <18 I think that this is the correct expression, but it is executing the rule (does not hide the data element).

Do you think that there might be a bug in how these expressions work? If not, can someone guide me to the correct expression?

Thanks in advance,

Georgi

Georgi Chakarov, CIA | georgi@logicaloutcomes.net <mailto:georgi@logicaloutcomes.net> | +1-647-478-5634 x 104 | LogicalOutcomes c/o Centre for Social Innovation, 720 Bathurst Street, Toronto Canada M5S 2R4 | You may unsubscribe from receiving commercial electronic messages from LogicalOutcomes by emailing info@logicaloutcomes.net <mailto:info@logicaloutcomes.net>

_______________________________________________
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

Thanks Markus! I will let you know once I test this.

···

From: Markus Bekken [mailto:markus@dhis2.org]

Sent: Wednesday, August 9, 2017 11:01 AM

To: Georgi Chakarov georgi@logicaloutcomes.net

Cc: DHIS Users dhis2-users@lists.launchpad.net; DHIS 2 Developers list dhis2-devs@lists.launchpad.net

Subject: Re: [Dhis2-users] FW: d2: daysbetween AND d2:yearsbetween not working properly in 2.27 build revision b6e8cde

Hi there Georgi!

The expression

d2:yearsBetween(A{Date of Birth}, V{ enrollment _date}) <18

should be the correct one. I would change the V{ enrollment _date} to V{enrollment _date}

Note that before the birth date is not entered, the expression will evaluate to 0 - which will be less than 18.

Let me know how it goes.

Markus

  1. aug. 2017 kl. 00.41 skrev Georgi Chakarov georgi@logicaloutcomes.net:

Hello all! Any thoughts on my email below from last week?

Thanks,

Georgi

From: Georgi Chakarov

Sent: Friday, August 4, 2017 1:01 PM

To: DHIS Users dhis2-users@lists.launchpad.net; DHIS 2 Developers list dhis2-devs@lists.launchpad.net

Cc: Sara Gaudon sara@logicaloutcomes.net; Kristiyan Panayotov Kristiyan@logicaloutcomes.net

Subject: d2: daysbetween AND d2:yearsbetween not working properly in 2.27 build revision b6e8cde

Hello all!

I am trying to create a program rule based on Date of birth and Enrollment date. Basically, I want to hide one set of data elements if the client is below 18 years old and another set of data elements if the client is above 18 years of age.

This is what I tried:

  1.   (d2:daysBetween(A{Date of Birth}, V{enrollment_date})/365)  <18             **THIS DOES NOT WORK**
    

2) (d2:yearsBetween(A{Date of Birth}, V{ enrollment _date})/365) <18 This actually works(hides the data element I want), but I don’t think it is the correct expression.

  1.   d2:yearsBetween(A{Date of Birth}, V{ enrollment _date})  <18                      **I think that this is the correct expression, but it is executing the rule (does not hide the data element).**
    

Do you think that there might be a bug in how these expressions work? If not, can someone guide me to the correct expression?

Thanks in advance,

Georgi

Georgi Chakarov, CIA | georgi@logicaloutcomes.net | +1-647-478-5634 x 104 | LogicalOutcomes c/o Centre for Social Innovation, 720 Bathurst Street, Toronto Canada M5S 2R4 | * You may unsubscribe from receiving commercial electronic messages from LogicalOutcomes by emailing *info@logicaloutcomes.net


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

Hi Markus,

I was able to test this expression d2:yearsBetween(A{Date of Birth}, V{ enrollment _date}) <18

The problem was that my Date of Birth attribute was of value type AGE. Once I changed it to DATE the program rule started working.

Is there anything specific that needs to be taken into consideration when working with Age value type?

Regards,

Georgi

···

From: Markus Bekken [mailto:markus@dhis2.org]

Sent: Wednesday, August 9, 2017 11:01 AM

To: Georgi Chakarov georgi@logicaloutcomes.net

Cc: DHIS Users dhis2-users@lists.launchpad.net; DHIS 2 Developers list dhis2-devs@lists.launchpad.net

Subject: Re: [Dhis2-users] FW: d2: daysbetween AND d2:yearsbetween not working properly in 2.27 build revision b6e8cde

Hi there Georgi!

The expression

d2:yearsBetween(A{Date of Birth}, V{ enrollment _date}) <18

should be the correct one. I would change the V{ enrollment _date} to V{enrollment _date}

Note that before the birth date is not entered, the expression will evaluate to 0 - which will be less than 18.

Let me know how it goes.

Markus

  1. aug. 2017 kl. 00.41 skrev Georgi Chakarov georgi@logicaloutcomes.net:

Hello all! Any thoughts on my email below from last week?

Thanks,

Georgi

From: Georgi Chakarov

Sent: Friday, August 4, 2017 1:01 PM

To: DHIS Users dhis2-users@lists.launchpad.net; DHIS 2 Developers list dhis2-devs@lists.launchpad.net

Cc: Sara Gaudon sara@logicaloutcomes.net; Kristiyan Panayotov Kristiyan@logicaloutcomes.net

Subject: d2: daysbetween AND d2:yearsbetween not working properly in 2.27 build revision b6e8cde

Hello all!

I am trying to create a program rule based on Date of birth and Enrollment date. Basically, I want to hide one set of data elements if the client is below 18 years old and another set of data elements if the client is above 18 years of age.

This is what I tried:

  1.   (d2:daysBetween(A{Date of Birth}, V{enrollment_date})/365)  <18             **THIS DOES NOT WORK**
    

2) (d2:yearsBetween(A{Date of Birth}, V{ enrollment _date})/365) <18 This actually works(hides the data element I want), but I don’t think it is the correct expression.

  1.   d2:yearsBetween(A{Date of Birth}, V{ enrollment _date})  <18                      **I think that this is the correct expression, but it is executing the rule (does not hide the data element).**
    

Do you think that there might be a bug in how these expressions work? If not, can someone guide me to the correct expression?

Thanks in advance,

Georgi

Georgi Chakarov, CIA | georgi@logicaloutcomes.net | +1-647-478-5634 x 104 | LogicalOutcomes c/o Centre for Social Innovation, 720 Bathurst Street, Toronto Canada M5S 2R4 | * You may unsubscribe from receiving commercial electronic messages from LogicalOutcomes by emailing *info@logicaloutcomes.net


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

Hi Georgi!
The age should also have worked fine - the age is in reality just a date being displayed in another way. Can you report the bug in Jira please?

One thing to consider if you want to combine this rule with the AGE data type: The number of years displayed in the AGE data element is calculated based on todays date. The calculation that you are doing the rule is calculating the age of the person at the time of enrollment. That means that if you register a person 17 years old today, with today as the enrollment date, the AGE dataelement would display 17 as the age and your rule would also consider the person to be 17. Then if you come back in 1 year, the AGE data element would show 18 as the age - but the underlying birthdate and enrollment date would be unchanged and therefore the rule would still calculate the age to 17.

Markus

···

9. aug. 2017 kl. 14.24 skrev Georgi Chakarov <georgi@logicaloutcomes.net>:

Hi Markus,

I was able to test this expression d2:yearsBetween(A{Date of Birth}, V{ enrollment _date}) <18
The problem was that my Date of Birth attribute was of value type AGE. Once I changed it to DATE the program rule started working.

Is there anything specific that needs to be taken into consideration when working with Age value type?

Regards,

Georgi

From: Markus Bekken [mailto:markus@dhis2.org]
Sent: Wednesday, August 9, 2017 11:01 AM
To: Georgi Chakarov <georgi@logicaloutcomes.net>
Cc: DHIS Users <dhis2-users@lists.launchpad.net>; DHIS 2 Developers list <dhis2-devs@lists.launchpad.net>
Subject: Re: [Dhis2-users] FW: d2: daysbetween AND d2:yearsbetween not working properly in 2.27 build revision b6e8cde

Hi there Georgi!
The expression
d2:yearsBetween(A{Date of Birth}, V{ enrollment _date}) <18
should be the correct one. I would change the V{ enrollment _date} to V{enrollment _date}

Note that before the birth date is not entered, the expression will evaluate to 0 - which will be less than 18.

Let me know how it goes.

Markus

9. aug. 2017 kl. 00.41 skrev Georgi Chakarov <georgi@logicaloutcomes.net <mailto:georgi@logicaloutcomes.net>>:

Hello all! Any thoughts on my email below from last week?

Thanks,

Georgi

From: Georgi Chakarov
Sent: Friday, August 4, 2017 1:01 PM
To: DHIS Users <dhis2-users@lists.launchpad.net <mailto:dhis2-users@lists.launchpad.net>>; DHIS 2 Developers list <dhis2-devs@lists.launchpad.net <mailto:dhis2-devs@lists.launchpad.net>>
Cc: Sara Gaudon <sara@logicaloutcomes.net <mailto:sara@logicaloutcomes.net>>; Kristiyan Panayotov <Kristiyan@logicaloutcomes.net <mailto:Kristiyan@logicaloutcomes.net>>
Subject: d2: daysbetween AND d2:yearsbetween not working properly in 2.27 build revision b6e8cde

Hello all!

I am trying to create a program rule based on Date of birth and Enrollment date. Basically, I want to hide one set of data elements if the client is below 18 years old and another set of data elements if the client is above 18 years of age.

This is what I tried:
1) (d2:daysBetween(A{Date of Birth}, V{enrollment_date})/365) <18 THIS DOES NOT WORK
2) (d2:yearsBetween(A{Date of Birth}, V{ enrollment _date})/365) <18 This actually works(hides the data element I want), but I don’t think it is the correct expression.
3) d2:yearsBetween(A{Date of Birth}, V{ enrollment _date}) <18 I think that this is the correct expression, but it is executing the rule (does not hide the data element).

Do you think that there might be a bug in how these expressions work? If not, can someone guide me to the correct expression?

Thanks in advance,

Georgi

Georgi Chakarov, CIA | georgi@logicaloutcomes.net <mailto:georgi@logicaloutcomes.net> | +1-647-478-5634 x 104 | LogicalOutcomes c/o Centre for Social Innovation, 720 Bathurst Street, Toronto Canada M5S 2R4 | You may unsubscribe from receiving commercial electronic messages from LogicalOutcomes by emailing info@logicaloutcomes.net <mailto:info@logicaloutcomes.net>

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