Přeskočit obsah
For the complete DHIS2 documentation index, see llms.txt.

Pravidla programu podporovaná v aplikaci Android Capture

Následuje úplný seznam všech komponent Program Rule (typy proměnných a akcí) dostupných v DHIS2 a poznámky o tom, zda byly nebo nebyly implementovány v DHIS2 Android App.

Note

Any issues around using a particular feature with Android are highlighted with an exclamation mark !.

legenda popis
Typ hodnoty implementován
Typ hodnoty není implementován, ale bude bezpečně ignorován (pokud není povinný)
Nelze použít
Probíhající práce. Funkce ještě není zcela implementována nebo již bylo hlášeno neočekávané chování

Pravidlo programu Podporovány jsou různé typy zdrojů

Typ proměnné Popis typu proměnné Program s registrací Program bez registrace Poznámky k provádění
Datový prvek z nejnovější události pro fázi programu Tento typ zdroje funguje stejně jako „Datový prvek z nejnovější události v aktuálním programu“, kromě toho, že vyhodnocuje pouze hodnoty z konkrétní fáze programu.
Datový prvek z nejnovější události v aktuálním programu (s registrací) Tento zdrojový typ je naplněn nejnovější hodnotou dat shromážděnou pro zadaný datový prvek v rámci registrace.
Datový prvek z nejnovější události v aktuálním programu (bez registrace) Tato proměnná pravidla programu bude naplněna nejnovější hodnotou dat nalezenou v 10 nejnovějších událostech ve stejné organizační jednotce.
Datový prvek v aktuální u dálosti (s registrací) Proměnná převezme hodnotu datového element’s z aktuální události.
Datový prvek v aktuální události (bez registrace) Obsahuje hodnotu dat ze stejné události, kterou má uživatel aktuálně otevřenou.
Datový prvek z předchozí události (s registrací) Proměnné pravidel programu s tímto typem zdroje budou obsahovat nejnovější hodnotu ze všech předchozích událostí pro zadaný datový prvek. Aktuálně otevřená událost se nevyhodnocuje.
Datový prvek z předchozí události (bez registrace) Tato proměnná pravidla programu bude naplněna nejnovější hodnotou dat nalezenou v 10 událostech předcházejících aktuálnímu datu události (tj. Bez aktuální události).
Atribut trasované entity Naplní proměnnou pravidla programu zadaným atributem trasované entity pro aktuální TEI (např. Aktuální pacient).
Vypočítaná hodnota Vypočítaná hodnota.

Podporovány akce pravidla programu (datový prvek v aktuální události)

Akce Popis akce Program s registrací Program bez registrace Poznámky k provádění
Skrýt pole Skryje jednotlivý datový prvek, pokud je pravidlo pravdivé. ! Pokud změníte hodnotu poté, co je pole skryté, vrátí akci zpět v závislosti na výchozí hodnotě engine type pravidla hodnoty. Doporučujeme jeho použití v kombinaci s funkcí hasvalue.
Skrýt sekci Skryje celou sekci a její datové prvky, pokud je pravidlo pravdivé.
Skrýt možnost Skryje jednu možnost pro možnost nastavenou v daném atributu datového prvku / trasované entity. V kombinaci se zobrazit skupinu možností skrýt možnosti přednost 
Skrýt skupinu možností Skrýt všechny možnosti v dané skupině možností a atributu datového prvku / trasované entity. V kombinaci se zobrazit skupinu možností má přednost možnost skrýt
Zobrazit skupinu možností Slouží k zobrazení pouze možností z dané skupiny možností v daném atributu datového prvku / trasované entity. Chcete-li skupinu možností implicitně skrýt, skryjí se všechny možnosti, které nejsou součástí zobrazené skupin(y).
Přiřadit hodnotu Přiřadí hodnotu zadanému datovému prvku nebo atributu, pokud je pravidlo pravdivé. Zadání textu musí být v jednoduchých uvozovkách. Například: '2+2' zobrazí text 2+2 a 2+2, bez jednoduchých uvozovek zobrazí 4.
Zobrazit varování Zobrazuje uživateli vyskakovací varování, pokud je pravidlo pravdivé; nebrání uživateli v pokračování.
Varování na dokončení Zobrazí uživateli vyskakovací varování, pokud v místě, na které kliknete dokončit, je pravidlo pravdivé; a nebrání uživateli v pokračování.
Zobrazit chybu Jakmile je pravidlo pravdivé, zobrazí uživateli vyskakovací chybovou zprávu a zabrání uživateli v pokračování, dokud pravidlo již nebude pravdivé. Hodnota se neuloží, ale text se nevymaže, aby ji uživatel mohl snadno opravit.
Chyba při dokončení Zobrazí uživateli vyskakovací varování, že pokud klikne na dokončení; a pravidlo je pravdivé tak zabrání uživateli v pokračování, dokud pravidlo již nebude pravdivé.
Nastavit pole jako povinné Nastaví datový prvek jako „povinný“; pokud je pravidlo pravdivé.
Zobrazit text (programy událostí) Slouží k zobrazení informací, které nejsou chybou nebo varováním, například zpětnou vazbou. Nezávisle na typu zdrojové proměnné se text zobrazí ve formuláři jako poslední prvek poslední sekce. Text se zobrazí jako zprávy na kartě indikátory.
Zobrazit text (sledovací programy) Slouží k zobrazení informací, které nejsou chybou nebo varováním, například zpětnou vazbou. 1. Pravidlo programu nakonfigurované jako „Pravidlo spouštění pouze pro fázi programu“. Text se zobrazí POUZE ve formuláři jako poslední prvek poslední sekce. Text se zobrazí jako zprávy na kartě indikátory. -> Pokud pravidlo programu používá jakýkoli typ proměnné, který není z aktuální fáze, pravidlo nebude moci vyhodnotit a zpráva se nezobrazí. 2. Pravidlo programu NENÍ nakonfigurováno jako „Pravidlo spouštění pouze pro fázi programu“. Text se zobrazí POUZE na kartě indikátory a NE ve formuláři. -> Pokud pravidlo programu používá jakoukoli proměnnou typu aktuální událost, pravidlo nebude moci vyhodnotit a zpráva se nezobrazí.
Zobrazit Hodnotu klíče / páru (Programy Událostí) Slouží k zobrazení informací čerpaných z datového prvku. Variable Type: * Data element from the newest event in the current program* Data element from previous event* Data element in current event* Built-in variableKey/Value Pair will be displayed in the form ONLY in the specified section.
Zobrazit dvojici klíč / hodnota (Trasovací programy) Slouží k zobrazení informací čerpaných z datového prvku. 1. Variable Type:* Data element in current eventKey/Value Pair will be displayed in the form ONLY in the specified section.2. Variable Type:* Data element from the newest event in the current program* Data element from previous event* Data element from the newest event for a program stage* Tracked entity attribute* Built-in variableKey/Value Pair will be displayed ONLY in the indicators tab and NOT in the form.
Skrýt programovou fázi Skryje celou fázi programu před uživatelem, pokud je pravidlo pravdivé. Pravidlo akce je podporováno pouze pro Datový prvek z nejnovější události v aktuálním typu programu a proměnné atributu trasované entity .
Poslat zprávu Odeslat zprávu spustí upozornění na základě poskytnuté šablony zprávy. Tato akce bude provedena vždy, když dojde ke změně hodnoty dat. Toto chování však lze řídit poskytnutím stavu registrace události ve výrazu pravidla programu Tato funkce se provádí na straně serveru.
Plánování zprávy Plánování zprávy naplánuje oznámení k datu uvedenému výrazem v datovém poli. Tato funkce se provádí na straně serveru.

Podporované akce pravidel programu (další proměnné)

Akce Popis akce Datový prvek z nejnovější události v aktuálním programu (s registrací) Datový prvek z nejnovější události v aktuálním programu (bez registrace) Datový prvek z předchozí Události (s registrací) Datový prvek z předchozí události (bez registrace) Datový prvek z nejnovější události pro programovou fázi (s registrací) Atribut trasovaného subjektu (s registrací) Poznámky k provádění
Skrýt pole Skryje jednotlivý datový prvek, pokud je pravidlo pravdivé.
Skrýt sekci Skryje celou sekci a její datové prvky, pokud je pravidlo pravdivé.
Skrýt možnost Skrýt jednu možnost pro možnosti nastavené v daném atributu datového prvku / trasované entity. V kombinaci se zobrazit skupinu možností má přednost před skrýt možnost.
Skrýt skupinu možností Skryje všechny možnosti v dané skupině možností a atributu datového prvku / trasované entity. Při kombinaci se Zobrazit skupinu možností, má přednost možnost Skrýt.
Přiřadit hodnotu Přiřadí hodnotu zadanému datovému prvku nebo atributu, pokud je pravidlo pravdivé. Zadání textu musí být v jednoduchých uvozovkách. Například: '2+2' zobrazí text 2+2 a 2+2, bez jednoduchých uvozovek zobrazí 4.
Zobrazit varování Zobrazuje uživateli vyskakovací varování, pokud je pravidlo pravdivé; nebrání uživateli v pokračování.
Varování na dokončení Zobrazuje uživateli vyskakovací varování, pokud je v místě kliknutí na „dokončeno“ pravidlo pravdivé; to nebrání uživateli v pokračování.
Zobrazit chybu Jakmile je pravidlo pravdivé, zobrazí uživateli vyskakovací chybovou zprávu a zabrání uživateli v pokračování, dokud pravidlo již nebude pravdivé. Pravidlo umožní uživateli dokončit zápis, ale zabrání dokončení událostí, dokud pravidlo již nebude pravdivé. Hodnota se neuloží, ale text se nevymaže, aby ho uživatel mohl snadno opravit.
Chyba při dokončení Zobrazuje uživateli vyskakovací varování, pokud je v místě kliknutí na „dokončeno“ pravidlo pravdivé; to nebrání uživateli v pokračování.
Nastavit pole jako povinné Nastaví datový prvek jako „povinný“, pokud je pravidlo pravdivé.
Zobrazit text (programy událostí) Slouží k zobrazení informací, které nejsou chybou nebo varováním, například zpětnou vazbou. Nezávisle na typu zdrojové proměnné se text zobrazí ve formuláři jako poslední prvek poslední sekce. Text se zobrazí jako zprávy na kartě indikátory.
Zobrazit text (sledovací programy) Slouží k zobrazení informací, které nejsou chybou nebo varováním, například zpětnou vazbou. 1. Pravidlo programu nakonfigurované jako „Pravidlo spouštění pouze pro fázi programu“. Text se zobrazí POUZE ve formuláři jako poslední prvek poslední sekce. Text se zobrazí jako zprávy na kartě indikátory. -> Pokud pravidlo programu používá jakýkoli typ proměnné, který není z aktuální fáze, pravidlo nebude moci vyhodnotit a zpráva se nezobrazí. 2. Pravidlo programu NENÍ nakonfigurováno jako „Pravidlo spouštění pouze pro fázi programu“. Text se zobrazí POUZE na kartě indikátory a NE ve formuláři. -> Pokud pravidlo programu používá jakoukoli proměnnou typu aktuální událost, pravidlo nebude moci vyhodnotit a zpráva se nezobrazí.
Zobrazit Hodnotu klíče / páru (Programy Událostí) Slouží k zobrazení informací čerpaných z datového prvku. Variable Type: * Data element from the newest event in the current program* Data element from previous event* Data element in current event* Built-in variableKey/Value Pair will be displayed in the form ONLY in the specified section.
Zobrazit dvojici klíč / hodnota (Trasovací programy) Slouží k zobrazení informací čerpaných z datového prvku. 1. Variable Type:* Data element in current eventKey/Value Pair will be displayed in the form ONLY in the specified section.2. Variable Type:* Data element from the newest event in the current program* Data element from previous event* Data element from the newest event for a program stage* Tracked entity attribute* Built-in variableKey/Value Pair will be displayed ONLY in the indicators tab and NOT in the form.
Skrýt programovou fázi Skryje celou fázi programu před uživatelem, pokud je pravidlo pravdivé. Pravidlo akce je podporováno pouze pro datový prvek z nejnovější události v aktuální proměnné programu . Pokud je událost generována automaticky, pravidlo se nepoužije.
Poslat zprávu Odeslat zprávu spustí upozornění na základě poskytnuté šablony zprávy. Tato akce bude provedena vždy, když dojde ke změně hodnoty dat. Toto chování však lze řídit poskytnutím stavu registrace události ve výrazu pravidla programu Tato funkce se provádí na straně serveru.
Plánování zprávy Plánování zprávy naplánuje oznámení k datu uvedenému výrazem v datovém poli. Tato funkce se provádí na straně serveru.

Funkce pro použití ve výrazech pravidel programu

Funkce Popis funkce Status Poznámky k provádění
d2:ceil Zaokrouhlí vstupní argument na nejbližší celé číslo.
d2:floor Zaokrouhlí vstupní argument na nejbližší celé číslo.
d2:round Zaokrouhlí vstupní argument na nejbližší celé číslo.
d2:modulus Produkuje absolutní hodnotu při dělení prvního a druhého argumentu.
d2:zing Vyhodnotí argument typu číslo na nulu, pokud je hodnota záporná, jinak na samotnou hodnotu.
d2:oizp Vyhodnotí argument typu číslo na jeden, pokud je hodnota nula nebo kladná, jinak nula.
d2:concatenate Produkuje zřetězený řetězec ze vstupních parametrů. Podporuje libovolný počet parametrů. Použijte funkci d2:concatenate namísto použití znaku „+“, protože vyhodnocovač výrazů v aplikaci bude přidávat čísla, pokud je to možné.
d2:daysBetween Vytváří počet dní mezi prvním a druhým argumentem. Pokud je datum druhého argumentu před prvním argumentem, vrácená hodnota bude záporný počet dní mezi těmito dvěma daty. Statický formát data je 'yyyy-MM-dd'.
d2:weeksBetween Vytváří počet celých týdnů mezi prvním a druhým argumentem. Pokud je datum druhého argumentu před prvním argumentem, vrácená hodnota bude záporný počet týdnů mezi těmito dvěma daty. Statický formát data je 'yyyy-MM-dd'.
d2:monthsBetween Produkuje počet celých měsíců mezi prvním a druhým argumentem. Pokud je datum druhého argumentu před prvním argumentem, návratová hodnota bude záporný počet měsíců mezi dvěma daty. Statický formát data je „rrrr-MM-dd“.
d2:yearsBetween Produkuje počet let mezi prvním a druhým argumentem. Pokud je datum druhého argumentu před prvním argumentem, návratová hodnota bude záporný počet let mezi dvěma daty. Statický formát data je „rrrr-MM-dd“.
d2:addDays Vytvoří datum na základě data prvního argumentu a přidá počet dní druhého argumentu.
d2:count Spočítá počet hodnot zadaných pro zdrojové pole v argumentu.
d2:countIfValue Spočítá počet odpovídajících hodnot, který je zadán pro zdrojové pole v prvním argumentu. Počítají se pouze výskyty, které odpovídají druhému argumentu.
d2:countIfZeroPos Spočítá počet hodnot, které jsou nulové nebo kladné zadané pro zdrojové pole v argumentu. Parametr zdrojového pole je název jednoho z definovaných zdrojových polí v programu.
d2:hasValue Evaluates to true of the argument source field contains a value, false if no value is entered.
d2:validatePattern Vyhodnotí se jako true, pokud je vstupní text přesnou shodou s dodaným vzorem regulárního výrazu. Regulárnímu výrazu je třeba uniknout.
d2:left Vyhodnocuje k levé části textu počet znaků od prvního znaku.
d2:right Vyhodnocuje na pravou část textu počet znaků od posledního znaku.
d2:substring Vyhodnocuje se na část řetězce určenou počátečním a koncovým číslem znaku.
d2:split Rozdělte text oddělovačem a ponechejte n-tý prvek (0 je první).
d2:length Najděte délku řetězce.
d2:zpvc Vrátí počet číselných nul a kladných hodnot mezi danými argumenty objektu. Lze uvést libovolný počet argumentů.
d2:inOrgUnitGroup* Vyhodnocuje, zda je aktuální organizační jednotka ve skupině argumentů. Argument lze definovat buď ID, nebo kódem skupiny organizační jednotky.
d2:hasUserRole** Vrátí true, pokud má aktuální uživatel tuto roli, jinak false.
d2:zScoreWFA*** Funkce vypočítá z-skóre na základě údajů poskytnutých indikátorem hmotnosti podle věku WHO. Jeho hodnota se pohybuje mezi -3,5 až 3,5 v závislosti na hodnotě hmotnosti. Providing an age less than 0 or greater than 60 will result in the program rule to not be calculated. Also, WFA tables have the age parameter increment in steps of 1, providing a fraction age will floor the value (2.3 months → 2 months).
d2:zScoreHFA*** Function calculates z-score based on data provided by WHO height-for-age indicator. Its value varies between -3.5 to 3.5 depending upon the value of weight. Providing an age less than 0 or greater than 60 will result in the program rule to not be calculated. Also, HFA tables have the age parameter increment in steps of 1, providing a fraction age will floor the value (2.3 months → 2 months).
d2:zScoreWFH*** Function calculates z-score based on data provided by WHO weight-for-height indicator. Its value varies between -3.5 to 3.5 depending upon the value of weight. Providing a height less than 45 or greater than 120 will result in the program rule to not be calculated. Also, WFH tables have the height parameter increment in steps of 0.5, providing a fraction height will floor the value (45.3 → 45

Note

  • Available in DHIS2 v2.30 ** Available in DHIS2 v2.31 and greater *** Available in DHIS2 v2.32 and greater

Standardní proměnné pro použití ve výrazech pravidel programu

K dispozici ve verzi DHIS2 v2.30

Proměnná Popis funkce Status Poznámky k provádění
V{current_date} Obsahuje aktuální datum, kdykoli je pravidlo provedeno.
V{event_date} Obsahuje datum události aktuálního provedení události. V okamžiku, kdy je pravidlo provedeno jako součást registračního formuláře, nebude mít hodnotu.
V{event_status} Obsahuje stav aktuální události nebo zápisu.
V{due_date} * Tato proměnná bude obsahovat aktuální datum, kdy je pravidlo provedeno. Poznámka: To znamená, že pravidlo může produkovat různé výsledky v různých časech, i když se nic jiného nezměnilo.
V{event_count} Obsahuje celkový počet událostí v zápisu.
V{enrollment_date} * Obsahuje datum zápisu aktuálního zápisu. Nebude mít hodnotu pro jednotlivé programy událostí.
V{incident_date} * Obsahuje datum incidentu aktuálního zápisu. Nebude mít hodnotu pro jednotlivé programy událostí.
V{enrollment_id} * Řetězec univerzálního identifikátoru (UID) aktuálního zápisu. Nebude mít hodnotu pro jednotlivé programy událostí.
V{event_id} Řetězec univerzálního identifikátoru (UID) aktuálního kontextu události. V okamžiku, kdy je pravidlo provedeno jako součást registračního formuláře, nebude mít hodnotu.
V{orgunit_code} Obsahuje kód org. jednotky, která je propojena s aktuálním zápisem. U programů s jednou událostí se místo toho použije kód z aktuální události organizační jednotky.
V{environment} Obsahuje kód představující aktuální běhové prostředí pro pravidla. Možné hodnoty jsou „WebClient“, „AndroidClient“ a „Server“. Lze použít, když se pravidlo programu má spustit pouze v jednom nebo více typech klientů.
V{program_stage_id} Obsahuje ID aktuální programové fáze, která spustila pravidla. To lze použít ke spuštění pravidel ve specifických fázích programu nebo k zabránění provádění v určitých fázích. Při provádění pravidel v kontextu registračního formuláře TEI bude proměnná prázdná.
V{program_stage_name} Obsahuje název aktuální programové fáze, která spustila pravidla. To lze použít ke spuštění pravidel ve specifických fázích programu nebo k zabránění provádění v určitých fázích. Při provádění pravidel v kontextu registračního formuláře TEI bude proměnná prázdná.

Poznámky

*Platí pouze pro trasovač

Rozdíly mezi pravidly programu na webu a u verze systému Android

Vzhledem k tomu, že web a aplikace pro Android v současné době používají jiný engine programových pravidel, mohou existovat programy, které v jednom systému fungují a ve druhém nikoli. Obecně lze říci, že Android engine programových pravidel je přísnější, a tak některá Programová pravidla, která fungují ve webové verzi DHIS2, v Androidu selžou. Tato podkapitola popisuje hlavní rozdíly a jak upravit pravidla, aby fungovala v obou systémech.

Vyhodnocení typu Boolean

DHIS2 web version considers the type boolean as 0 or 1 (which can be evaluated to true or false), however Android evaluates them only as true or false. While this makes possible the addition of booleans in web, it will fail in Android; in order to fix this an additional program rule variable is needed to transform the boolean into an number that can be operated. Check the table below for examples and possible solutions.

V následujících příkladech zvažte následující:

  • yn_prv1: je proměnná pravidla programu, která byla nakonfigurována tak, aby získala hodnotu datového prvku „Ano / Ne“
  • yn_prv2: je proměnná pravidla programu, která byla nakonfigurována tak, aby získala hodnotu datového prvku „Ano / Ne“
  • prv_boolean_one: je proměnná pravidla programu, která byla nakonfigurována tak, aby získala hodnotu datového prvku „Ano / Ne“
  • prv_boolean_two: je proměnná pravidla programu, která byla nakonfigurována tak, aby získala hodnotu datového prvku „Ano / Ne“
  • prv_boolean_one_to_number: je proměnná pravidla programu s vypočítanou hodnotou
  • prv_boolean_two_to_number: je proměnná pravidla programu s vypočítanou hodnotou
  • někdy se jako podmínka pravidla programu používá true, což znamená, že akce je vždy provedena
  • The following acronyms are used:
    • DE (Data Elemetn)
    • PR (Program Rule)
    • PRE (Program Rule Expression)
    • PRC (Program Rule Condition)
    • PRV (Program Rule Variable)
    • PRA (Program Rule Action)
Podmínka(y) pravidla programu Akce pravidla(el) programu Webová verze Android verze Komentář
d2:hasValue('yn_prv1') || d2:hasValue('yn_prv2') Přiřaďte pevnou hodnotu DE
#{yn_prv1} || #{yn_prv2} Přiřaďte pevnou hodnotu DE
d2:hasValue('yn_prv1') || d2:hasValue('yn_prv2') Přiřazená hodnota k DE: #{yn_prv1} + #{yn_prv2} + 1 Crashes in Android whenver a boolean is marked as the expression would result in true+false+1
PR1: #{prv_boolean_one}

PR2: #{prv_boolean_two}

PR3: #{prv_boolean_one} || #{prv_boolean_two}
PRA1. Assign value "1" to PRV "#{prv_bool_one_to_number}"

PRA2. Assign value: "1" to PRV "#{prv_bool_two_to_number}"

PRA3. Assign value to DE: "#{prv_bool_one_to_number} + #{prv_bool_two_to_number} + 1"
Pro boolean existují 2 proměnné, jedna získá hodnotu pomocí definice PRV „value form DE“ a druhá prostřednictvím PRA. Pokud logická hodnota není označena, bude se místo čísla počítat jako řetězec
Čtyři PR pro přiřazení 1 nebo 0 k booleanům a další pro sčítání. Priority jdou shora dolů

PRC1: !d2:hasValue('prv_boolean_one') || !#{prv_boolean_one}

PRC2: d2:hasValue('prv_boolean_one') && #{prv_boolean_one}

PRC3: !d2:hasValue('prv_boolean_two') || !#{prv_boolean_two}

PRC4: d2:hasValue('prv_boolean_two') && #{prv_boolean_two}

PRC5: true
PRA1: Assign value: "0" to PRV "#{prv_bool_one_to_number}"

PRA2: Assign value: "1" to PRV "#{prv_bool_one_to_number}"

PRA3: Assign value: "0" to PRV "#{prv_bool_two_to_number}"

PRA4: Assign value: "1" to PRV "#{prv_bool_two_to_number}"

PRA5: Assign value: "#{prv_bool_one_to_number} + #{prv_bool_two_to_number} + 1" to DE
K dispozici jsou 2 proměnné pro boolean, jedna získá hodnotu pomocí definice PRV „value form DE“ a druhá prostřednictvím PRA.

Vyhodnocení čísel

DHIS2 web version evaluate numbers in a more flexible way casting values from integer to floats and viceversa. This can lead to some issues as explained in the examples below.

Division of numbers

If required for a division web will cast from integer to float, however, Android take numbers as such (literally and without casting) which my end up giving unexpected results. Check the table below for examples and possible solutions.

Podmínka(y) pravidla programu Akce pravidla(el) programu Webová verze Android verze Komentář
true Přiřadit hodnotu DE: d2:daysBetween('2020-05-13', '2020-05-17') / 3 Uživatel by očekával, že se poměr bude počítat jako 4/3 s výsledkem 1,3333. Android však nedělí 4 na číslo s periodou (4.0 jako webová verze), takže výsledek v Androidu je čistá 1 jako výsledek celočíselného dělení 4/3
true Přiřadit hodnotu k DE: d2:daysBetween('2020-05-13', '2020-05-17') / 3.0 Výsledkem dělení je 1,33333 na webu i Androidu

Using the function validatePattern

In the same way, if a DataElement of the type number is used, Android will use that value as float (including decimals) which might lead to validatePattern function not working as expected.

Consider the following:

  • temperatue_prv: is a Program Rule Variable containing the value of the Data Element temperature.
  • User inputs 38 in the Data Element.
Podmínka(y) pravidla programu Akce pravidla(el) programu Webová verze Android verze Komentář
!d2:validatePattern(#{temperature_prv},'\\{d}') Display error if value is not 2 digits The user would expect the program rule to NOT show an error as 38 does match the pattern. However, Android attempts to validate the pattern \{d} against 38.0 resulting in Android displaying the error.
!d2:validatePattern(#{temperature_prv},'(\\d{2}|\\d{2}\\.\\d|\\d{2}\\.\\d{2})$') Display error if value is not 2 digits The regular expression used here will match both integeres and floats resulting in being properly evaluated in web and Android and not displaying an error.

Changes in Program Rules (as from version 2.2 of the app)

In the version 2.2 of the application (released on August, 2020) a new rule-engine was included. This rule-engine requires some optional and some mandatory changes to be performed on the program rules expressions in order to make it work in the new application. A list of those changes, how to detect them and how to fix them is included in the following subsections.

Vyhodnocení 'd2:hasValue'

Popis

This is an optional change. d2:hasValue now works with both single quotes or full variable expression. The following expressions is valid: (d2:hasValue('variable_name') and d2:hasValue(#{variable_name}))

Jak ověřit identitu pomocí API?

Získejte programová pravidla, kde podmínka nebo akce pravidla programu používá funkci d2:hasValue.

https://example.org/api/programRules?fields=program[name],name,programRuleActions[data],condition&filter=programRuleActions.data:like:hasValue&filter=condition:like:hasValue&rootJunction=OR
<programRule name="PR01 - Check variable with hasValue(#{variable})">
<condition>d2:hasValue(#{Věk v rocích})</condition>
<program name="JB_Testing_2.2"/>
<programRuleActions>
<programRuleAction/>
</programRuleActions>
</programRule>
<programRule name="PR01 - Check variable with hasValue('variable')">
<condition>d2:hasValue('Věk v rocích')</condition>
<program name="JB_Testing_2.2"/>
<programRuleActions>
<programRuleAction/>
</programRuleActions>
</programRule>

Jak to opravit?

Výše uvedený příklad ukazuje, jak různé způsoby použití funkce hasValue budou mít stejný účinek jako od verze 2.2. Neexistují žádné povinné změny, ale mějte na paměti, že při psaní nových pravidel programu může být konzistentní, aby se zabránilo problémům.

Vyhodnocení proměnné

Popis

This is a mandatory change. !#{variable_name} can only be used boolean type variables (BOOLEAN and TRUE_ONLY).

Jak ověřit identitu pomocí API?

Získejte programRulesVariables s datovými prvky typu NOT BOOLEAN nebo TRUE_ONLY

https://example.org/api/programRuleVariables?fields=name&filter=dataElement.valueType:!in:[TRUE_ONLY,BOOLEAN]&paging=False

Získejte všechny programRule.conditions

https://example.org/api/programRules?fields=displayName,condition&paging=False

Ručně (nebo programově pomocí skriptu) zkontrolujte, zda se v seznamu programRule.conditions (získaných prostřednictvím druhého volání API) používá některá z proměnných pravidel programu (získaných prostřednictvím prvního volání API).

Například z prvního seznamu získáme:

<programRuleVariable name="AdditionalMedication"/>
<programRuleVariable name="age"/>
<programRuleVariable name="Age in years"/>
<programRuleVariable name="AgeYears"/>
<programRuleVariable name="allergies"/>
<programRuleVariable name="apgarcomment"/>

A můžeme porovnat s druhým seznamem:

<programRule>
<condition>!#{Pregant}</condition>
<displayName>PR03- !#{varible_name} - BOOLEAN</displayName>
</programRule>
<programRule>
<condition>!#{Age in years}</condition>
<displayName>PR03- !#{varible_name} - NOT BOOLEAN</displayName>
</programRule>
<programRule>
<condition>#{PregnancyStatus} != 'YES'</condition>
<displayName>Pregnancy status : false</displayName>
</programRule>

To ukazuje, že proměnná NON BOOLEAN se používá nesprávně.

Jak to opravit?

Ujistěte se, že ve svých podmínkách hodnotíte proměnné BOOLEAN nebo TRUE_ONLY . V případě, že proměnná pravidla programu není tohoto typu, aktualizujte podmínku pravidla programu pomocí d2:hasValue(#{variable_name}) nebo d2:hasValue(‘variable_name’)

Ve výše uvedeném příkladu by se podmínka měla změnit z:

<condition>!#{Age in years}</condition>
Do:
<condition>d2:hasValue(‘Age in years’)</condition>

Vyhodnocení textů

Popis

This is a mdantory change. In program rule actions of the type ASSIGN, DISPLAY TEXT, DISPLAY KEY/VALUE PAIR, SHOW WARNING, SHOW ERROR, WARNING ON COMPLETE or ERROR ON COMPLETE if the Expression to evaluate and assign/display is a text, it must be enclosed with single quotes.

Jak ověřit identitu pomocí API?

Získejte pravidla programu, jehož akce jsou na psaný text, s nějskými daty v polích a ověřte jejich datový obsah, abyste našli řetězce bez uvozovek.

https://example.org/api/programRules?fields=program[name],name,programRuleActions[programRuleActionType,content,data]&filter=programRuleActions.programRuleActionType:in:[ASSIGN,DISPLAYTEXT,DISPLAYKEYVALUEPAIR,SHOWWARNING,SHOWERROR]&filter=programRuleActions.data:!null&paging=false

Například zde můžeme detekovat chybu textového pole bez uvozovek v první akci pravidla programu, zatímco druhá je správná.

<programRule name="PR04- !#{varible_name} - BOOLEAN - Assign text without quotes">
<program name="JB_Testing_2.2"/>
<programRuleActions>
<programRuleAction>
<programRuleActionType>SHOWWARNING</programRuleActionType>
<data>embarazada</data>
<content>PR04 text with quotes is: </content>
</programRuleAction>
</programRuleActions>
</programRule>
<programRule name="PR04- !#{varible_name} - BOOLEAN - Assign text with quotes">
<program name="JB_Testing_2.2"/>
<programRuleActions>
<programRuleAction>
<programRuleActionType>SHOWWARNING</programRuleActionType>
<data>'embarazada'</data>
<content>PR04 text with quotes is: </content>
</programRuleAction>
</programRuleActions>
</programRule>

Jak to opravit?

Naskenujte vygenerovaný seznam (prostřednictvím navrhovaných volání API), abyste našli datové komponenty akce Program Rule, kde není citován text, poté přejděte ke každému z identifikovaných pravidel programu a aktualizujte je.

Spojení řetězce a objektů

Popis

This is a mdantory change. In program rule actions of the type ASSIGN, DISPLAY TEXT, DISPLAY KEY/VALUE PAIR, SHOW WARNING, SHOW ERROR, WARNING ON COMPLETE or ERROR ON COMPLETE if the Expression to evaluate and assign/display is a text, it must be enclosed with single quotes (same as previous change); but, on top of that, if it requires to concatenate two strings or a combination of functions it is mandatory to use the d2:concatenate function.

Jak ověřit identitu pomocí API?

Získejte pravidla programu, které akce jsou typového textu, s jakýmkoli obsahem v datech pole a ověřte jejich datový obsah a zkontrolujte, zda v případě připojení dvou nebo více řetězců (nebo jiných objektů) je použita funkce d2:concatenate

Získejte pravidla programu, které akce mají typový text, a ověřte jejich datový obsah, abyste našli řetězce bez uvozovek.

http://localhost:8034/api/programRules?fields=program[name],name,programRuleActions[programRuleActionType,content,data]&filter=programRuleActions.programRuleActionType:in:[ASSIGN,DISPLAYTEXT,DISPLAYKEYVALUEPAIR,SHOWWARNING,SHOWERROR]&filter=programRuleActions.data:!null&paging=false

Například zde můžeme detekovat chybu dvou řetězců v akci bez použití d2:concatenate.

<programRule name="PR08- Assign text and variable without concatenate">
<program name="JB_Testing_2.2"/>
<programRuleActions>
<programRuleAction>
<programRuleActionType>SHOWWARNING</programRuleActionType>
<data>'Age is 10 and modulus' 'another string'</data>
<content>PR05 text without concat is: </content>
</programRuleAction>
</programRuleActions>
</programRule>

Jak to opravit?

Projděte vygenerovaný seznam (pomocí navrhovaných volání API), abyste našli datové komponenty akce Program Rule Action, kde dochází ke spojování dvou nebo více objektů, a aktualizujte je tak, aby používaly funkci d2:concatenate.

Ve výše uvedeném příkladu by se data měla změnit z:

<data>'Age is 10 and modulus' 'another string'</data>
Do:
<data>d2:concatenate('Age is 10 and modulus','another string')</data>