← Back to team overview

dhis2-devs team mailing list archive

Re: Generating sequential numbers in program rule

 

Dear Shurajit

Thanks for the advice. This worked fantastically - however, the
documentation is a little confusing with regards to the required format. Is
there somewhere where I can possibly make suggestions for clarification?

The string that eventually worked under the Auto-generate section is as
follows:
CURRENT_DATE(yyyy-MM)-"-"-ORG_UNIT_CODE(...........)-"-"-SEQUENTIAL(####)

The '+' did not work for me and gave a parse error - this is what is
specified in some parts of the documentation, whereas using the '-' worked
(as is shown in one example under "SEQUENTIAL(format)".

It seems that currently only CURRENT_DATE is supported and not enrollment
date? Is there some way to include Enrollment date instead? I tried to
simply include ENROLLMENT_DATE(yyyy-MM) and this did not work.

Thank you once again for the help! Really appreciate it as I have been
struggling with this for a while.

Kind regards,
Terence

Terence Scott

Global Alliance for Rabies Control (GARC)
Pan-African Rabies Control Network (PARACON) Steering Committee
terence.scott@xxxxxxxxxxxxxxxxxx
https://paracon.rabiesalliance.org
Skype: tpscott1987



On Thu, Nov 1, 2018 at 3:46 AM Shurajit Dutta <shurajitdutta@xxxxxxxxx>
wrote:

> Hi Terence
>
> This textpattern applies to generating unique tracked entity attributes.
> So if you make the attribute unique and then system generated you can enter
> the pattern accordingly:
>
> [image: image.png]
>
> On Wed, Oct 31, 2018 at 5:58 PM Terence Scott <
> terence.scott@xxxxxxxxxxxxxxxxxx> wrote:
>
>> Hi MSP
>>
>> Thank you for the suggestion. I have also attempted this and was unable
>> to have any success. I tried to create a new rule with simply having
>> "Sequential(###)" alone, and did not have any success either. Therefore, I
>> assumed that there would be some sort of additional text that is required
>> to make it work.
>>
>> Kind regards,
>> Terence
>>
>> Terence Scott
>>
>> Global Alliance for Rabies Control (GARC)
>> Pan-African Rabies Control Network (PARACON) Steering Committee
>> terence.scott@xxxxxxxxxxxxxxxxxx
>> https://paracon.rabiesalliance.org
>> Skype: tpscott1987
>>
>>
>>
>> On Tue, Oct 30, 2018 at 5:49 PM M.Selvaraaj Prabu <msp.cbe@xxxxxxxxx>
>> wrote:
>>
>>> Hi Terrance,
>>>
>>> Sometime back I read about this. I think you need to use the expression
>>> like
>>>
>>>    -
>>>
>>>    ORG_UNIT_CODE(…) + "-" + CURRENT_DATE(yyyyww) + "-" + SEQUENTIAL(#####)
>>>
>>>
>>> Instead of using the function concatenate. Please refer the below link
>>> for more details:
>>>
>>>    -
>>>    https://docs.dhis2.org/master/en/user/html/working-with-textpattern.html
>>>
>>> Hope this helps.
>>>
>>> Thanks and regards
>>>
>>> MSP
>>>
>>>
>>> On Tue, Oct 30, 2018 at 4:56 PM Terence Scott <
>>> terence.scott@xxxxxxxxxxxxxxxxxx> wrote:
>>>
>>>> Dear Zubair, Nick
>>>>
>>>> I have upgraded the instance to 2.30 now and am attempting to once
>>>> again implement the sequential numbering using the TextPattern option. I am
>>>> using it on a TEAttribute, but have not had any success.
>>>>
>>>> Thus far, my Defined program rule action looks as follows:
>>>>
>>>> d2:concatenate( V{enrollment_date}, '-', V{orgunit_code}, '-')
>>>>
>>>> This is currently working and generating the UID, but of course,
>>>> without the sequential numbers. I have attempted the following combinations
>>>> to try include the sequential numbers to no avail:
>>>> d2:concatenate( V{enrollment_date}, '-', V{orgunit_code}, '-',
>>>> SEQUENTIAL(###))
>>>> d2:concatenate( V{enrollment_date}, '-', V{orgunit_code}, '-',
>>>> Sequential(###))
>>>> d2:concatenate( V{enrollment_date}, '-', V{orgunit_code}, '-',
>>>> V{Sequential(###)})
>>>> d2:concatenate( V{enrollment_date}, '-', V{orgunit_code}, '-',
>>>> V{sequential(###)})
>>>> d2:concatenate( V{enrollment_date}, '-', V{orgunit_code}, '-',
>>>> V{sequential###})
>>>> d2:concatenate( V{enrollment_date}, '-', V{orgunit_code}, '-',
>>>> 'SEQUENTIAL(###)') - this one simply added the text in (as suspected).
>>>> d2:concatenate( V{enrollment_date}, '-', V{orgunit_code}, '-') +
>>>> SEQUENTIAL(###)
>>>>
>>>> None of these combinations have worked thus far. Clearly I am
>>>> misunderstanding something or missing something and would appreciate any
>>>> help.
>>>>
>>>> Kind regards,
>>>> Terence
>>>>
>>>>
>>>> Terence Scott
>>>>
>>>> Global Alliance for Rabies Control (GARC)
>>>> Pan-African Rabies Control Network (PARACON) Steering Committee
>>>> terence.scott@xxxxxxxxxxxxxxxxxx
>>>> https://paracon.rabiesalliance.org
>>>> Skype: tpscott1987
>>>>
>>>>
>>>>
>>>> On Wed, Oct 10, 2018 at 3:06 PM Zubair Asghar Raja <zubair@xxxxxxxxx>
>>>> wrote:
>>>>
>>>>> Hi Terence,
>>>>> There could be many reasons for that.
>>>>> Have you tried implementing what Nick suggested? The only limitation
>>>>> is that the TextPattern option is only available for TEAttribute and not to
>>>>> DataElement.
>>>>>
>>>>>
>>>>> Zubair Asghar
>>>>> DHIS-2 Developer
>>>>> University of Oslo
>>>>> zubair@xxxxxxxxx <lars@xxxxxxxxx>
>>>>> https://www.dhis2.org
>>>>>
>>>>>
>>>>> On Wed, Oct 10, 2018 at 2:48 PM Terence Scott <
>>>>> terence.scott@xxxxxxxxxxxxxxxxxx> wrote:
>>>>>
>>>>>> Dear Zubair
>>>>>>
>>>>>> Thank you for your rapid response. I have attempted to do this
>>>>>> without success. I think I am misunderstanding.
>>>>>>
>>>>>> 1) I created the program variable "auto-increment' as suggested
>>>>>> 2) In this step - is this a new program rule? I created a program
>>>>>> rule as follows: "d2:hasValue #UID", Assign "#auto-increment + 1" to field
>>>>>> "auto-increment". I then set this as priority 2.
>>>>>> 3) I created my UID program rule as with the following action:
>>>>>> "d2:concatenate( V{enrollment_date}, '-', A{Closest Health Center},
>>>>>> #{auto-increment})" assigned to the attribute for UID. This is set as
>>>>>> priority 1.
>>>>>>
>>>>>> Unfortunately, this does not create the sequential number, but the
>>>>>> concatenated sequence is showing in the UID Attribute.
>>>>>>
>>>>>> Do I have my priorities incorrect or have I done something else
>>>>>> incorrectly?
>>>>>>
>>>>>> Kind regards,
>>>>>> Terence
>>>>>>
>>>>>> Terence Scott
>>>>>>
>>>>>> Global Alliance for Rabies Control (GARC)
>>>>>> Pan-African Rabies Control Network (PARACON) Steering Committee
>>>>>> terence.scott@xxxxxxxxxxxxxxxxxx
>>>>>> https://paracon.rabiesalliance.org
>>>>>> Skype: tpscott1987
>>>>>>
>>>>>>
>>>>>>
>>>>>> On Wed, Oct 10, 2018 at 2:01 PM Zubair Asghar Raja <zubair@xxxxxxxxx>
>>>>>> wrote:
>>>>>>
>>>>>>> Hi Terence,
>>>>>>> Should be possible using CALCULATED_VALUE.
>>>>>>> Program rule variable having source type as CALCULATED_VALUE will
>>>>>>> get its value assigned by some other program rule. Try these steps
>>>>>>> 1. create program rule variable of source type CALCULATED_VALUE //
>>>>>>> Let say "auto-increment"
>>>>>>> 2. create program rule with Program Rule Action as Assign Value and
>>>>>>> select variable created in step 1 and assign it "#{auto-increment} + 1"
>>>>>>> 3. Use it in your program rule where ever needed for example
>>>>>>> v{current-date}-#{orgunit}-#{auto-increment}
>>>>>>>
>>>>>>> In order to use CALCULATED_CALUE make sure you are correctly setting
>>>>>>> rule *priority*.
>>>>>>>
>>>>>>> Zubair Asghar
>>>>>>> DHIS-2 Developer
>>>>>>> University of Oslo
>>>>>>> zubair@xxxxxxxxx <lars@xxxxxxxxx>
>>>>>>> https://www.dhis2.org
>>>>>>>
>>>>>>>
>>>>>>> On Wed, Oct 10, 2018 at 1:25 PM Terence Scott <
>>>>>>> terence.scott@xxxxxxxxxxxxxxxxxx> wrote:
>>>>>>>
>>>>>>>> Dear All
>>>>>>>>
>>>>>>>> I am creating a program rule to develop a UID for the patient. I
>>>>>>>> have currently created a program rule using d2:concatenate to bring various
>>>>>>>> attributes and DEs together into the Unique ID (such as date and OrgUnit
>>>>>>>> code). However, I would also like to include sequential numbering after
>>>>>>>> this to ensure that more than 1 case can be registered on a single day.
>>>>>>>>
>>>>>>>> I have looked through all of the documentation and am unable to
>>>>>>>> find anything along these lines. Is it possible?
>>>>>>>>
>>>>>>>> Example:
>>>>>>>> 2018-10-10-OrgUnit code-1;
>>>>>>>> 2018-10-10-OrgUnit code-2;
>>>>>>>> 2018-10-10-OrgUnit code-3; etc.  (where 1,2 and 3 are the
>>>>>>>> sequential numbers generated).
>>>>>>>>
>>>>>>>> I have also looked at Program Rule variables and am unsure as to
>>>>>>>> what the "Calculated value" source type is, as in the documentation it is
>>>>>>>> listed as "TBA" with no further information.
>>>>>>>>
>>>>>>>> I would appreciate any help or advise.
>>>>>>>>
>>>>>>>> Kind regards,
>>>>>>>> Terence
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>> Terence Scott
>>>>>>>>
>>>>>>>> Global Alliance for Rabies Control (GARC)
>>>>>>>> Pan-African Rabies Control Network (PARACON) Steering Committee
>>>>>>>> terence.scott@xxxxxxxxxxxxxxxxxx
>>>>>>>> https://paracon.rabiesalliance.org
>>>>>>>> Skype: tpscott1987
>>>>>>>>
>>>>>>>> _______________________________________________
>>>>>>>> Mailing list: https://launchpad.net/~dhis2-devs
>>>>>>>> Post to     : dhis2-devs@xxxxxxxxxxxxxxxxxxx
>>>>>>>> Unsubscribe : https://launchpad.net/~dhis2-devs
>>>>>>>> More help   : https://help.launchpad.net/ListHelp
>>>>>>>>
>>>>>>> _______________________________________________
>>>> Mailing list: https://launchpad.net/~dhis2-devs
>>>> Post to     : dhis2-devs@xxxxxxxxxxxxxxxxxxx
>>>> Unsubscribe : https://launchpad.net/~dhis2-devs
>>>> More help   : https://help.launchpad.net/ListHelp
>>>>
>>>
>
> --
> Shurajit Dutta (MPH, MHI)
> Health Information Systems Adviser
>

PNG image


Follow ups

References