Вы находитесь на странице: 1из 11

Chapitre 06 Analyses : Formules

Chap.06 - Analyses : Formules


Table des matières
1. Description............................................................................................................................. 2
2. Fonctionnement..................................................................................................................... 2
2.1. Composantes................................................................................................................... 2
2.2. Conséquences sur résultats.............................................................................................3
2.3. Validation technique.........................................................................................................3
2.4. Opérateurs....................................................................................................................... 3
2.5. Formules conditionnelles..................................................................................................6
3. Exemples pratiques............................................................................................................... 7
3.1. Formules de la numération...............................................................................................7
3.2. Clairance calculée de la créatinine...................................................................................8
3.3. Repasse automatique et Lame sur antériorité..................................................................9
3.4. Conclusion automatique...................................................................................................9
3.5. Gestion des cotations de la NF......................................................................................11
3.6. Ré-édition d'une carte de groupe avec RAI....................................................................11

KaliSil v2.08 Guide Paramétrage 06-1


Chapitre 06 Analyses : Formules

1.Description
Les sous-analyses de type formules de calcul peuvent être utilisées pour atteindre différents
objectifs, allant du calcul mathématique simple aux tests conditionnels pour la détermination d'une
conclusion automatique ou l'ajout d'une repasse en fonction des antériorités du patient par
exemple.
Voici des exemples de compositions de formules :
• calcul mathématique (addition, multiplication, logarithme, puissance, …)
• fonctions mathématiques et logiques (inférieur à, minimum entre 2 nombres, …)
• tests conditionnels (si … alors … sinon ...)
• opérations sur les chaînes de caractères (présence d'un mot, passage en majuscule, …)
• opérations sur les dates (comparaison de dates, nombre de jours entre 2 dates, …)
• concaténation de textes codifiés ou de balises RTF

2.Fonctionnement
2.1. Composantes
Les composantes des formules sont tous les éléments que KaliSil met à disposition concernant
l'analyse, la demande ou le patient. Voici tous les éléments utilisables :

• Codes de sous-analyses : Tous les codes des sous-analyses présentes dans la demande
peuvent être utilisés. Attention : le résultat de la sous-analyse doit être saisi pour que la
formule puisse se calculer. Dans le cas d'une sous-analyse optionnelle, celle-ci doit être
présente dans la demande pour que la formule se calcule. Exemple :
• Une formule contenant simplement "NA[1]" va retranscrire le résultat de NA[1]
(sodium) dès qu'il sera saisi, sans modification.

• Balises RTF : Toutes les balises RTF disponibles dans la liste des codes d'impressions
sont utilisables dans les formules. Exemples :
• Une formule qui contient "[[anaRes(NA[1])]] va retranscrire le résultat de NA[1]
(sodium) dès qu'il sera saisi, sans modification.
• Une formule qui contient "[[demDate]]" va afficher la date de la demande.

• Textes codifiés : Tous les textes codifiés de KaliSil peuvent être utilisés avec la fonction
txt(). Exemple :
• Une formule qui contient "txt(POS)" va retranscrire la valeur texte du texte codifié
"POS", qui est dans notre cas "Positif".

KaliSil v2.08 Guide Paramétrage 06-2


Chapitre 06 Analyses : Formules

• Codes spéciaux : Plusieurs codes spéciaux ont été créés spécialement pour les formules.
En voici la liste complète :
• [[M]] = 1 si le patient est un homme, 0 si c'est une femme
• [[F]] = 1 si la patiente est une femme, 0 si c'est un homme
• [[age]] = l'âge en années du patient (exemple : "10")
• [[ageMois]] = l'âge au format numérique avec virgule (exemple : "10,3")
• [[ageTexte]] = l'âge au format textuel (exemple : "2 ans et 1 mois")
• [[site]] = la référence du site de la demande (exemple : "B")

Il est aussi possible d'utiliser la balise [rl] pour sauter une ligne dans un résultat de type texte.
Exemple : la formule "Positif."+[rl]+"Faible." donne :
Positif.
Faible.

2.2. Conséquences sur résultats


Il est possible d'utiliser les conséquences sur résultats sur des sous-analyses de type formules.
Ceci est particulièrement utilisé dans le cas de formules conditionnelles (cf. § 2.5) pour générer
des alertes ou ajouter des analyses supplémentaires.
Toutefois la conséquence Remplacement de résultat ne doit pas être utilisée. Le
remplacement doit être géré directement dans la formule.

2.3. Validation technique


Le paramétrage des sous analyses de type formule est identique à celui des sous-analyses
numérique ou texte. Il est notamment possible d'utiliser les options Masquer en validation par
exemple. Ou encore Validation valeur vide à Oui, auto si dernière sous-analyse saisie pour avoir
une validation technique automatique lorsque le résultat de cette sous-analyse sera le dernier non
validé de la demande et ainsi éviter de bloquer la demande.

2.4. Opérateurs
Les opérateurs sont les opérations logiques et mathématiques possibles sur les éléments d'une
formule pour atteindre le résultat souhaité. Voici la liste de tous les opérateurs possibles, en
supposant que nous sommes dans la configuration suivante :
• Nous sommes dans une demande datée du 20-06-2011, les résultats utilisés sont les
suivants :
• Sodium NA[1] = 140 (la dernière antériorité date de 70 jours)
• Potassium K[1] = 4,2
• Résultat optionnel fictif K[1.1] = 3 (présent dans la demande)
• Résultat optionnel fictif K[1.2] (n'est pas dans la demande)
• Troponine TROPO[1] = <0,04
• Aspect du sérum ASPS[1] = "Limpide"
• Textes codifiés existant dans KaliSil :
• RAR = "Rares"

KaliSil v2.08 Guide Paramétrage 06-3


Chapitre 06 Analyses : Formules

• GER = "germes"

Opérateur Description Exemple de formule Résultat


Opérateur mathématiques (retourne un nombre ou un texte)
+ Addition numérique NA[1]+2 142
ou Concaténation de texte txt(RAR)+txt(GER) Rares germes
- Soustraction numérique NA[1]-3 137
* Multiplication numérique NA[1]*2 280
/ Division numérique NA[1]/2 70
++ Concaténation de texte sans espace txt(RAR)++txt(GER) Raresgermes
somme(x,y,...) Somme de tous les paramètres passés somme(NA[1],5,10) 155
nombre(x) Valeur numérique de x nombre(TROPO[1]) 0,04
opt(x) Renvoie la valeur de la sous-analyse opt(K[1.1]) 3
optionnelle x si elle existe, et 0 sinon opt(K[1.2]) 0
opt(x,y) Renvoie la valeur de la sous-analyse opt(K[1.1],1) 3
optionnelle x si elle existe, et y sinon opt(K[1.2],1) 1

Fonctions mathématiques
min(x,y) Minimum entre x et y min(NA[1],100) 100
max(x,y) Maximum entre x et y max(NA[1],100) 140
sqrt(x) Racine carrée de x sqrt(NA[1] 11.83
log(x) Logarithme népérien de x log(NA[1]) 4.94
log10(x) Logarithme en base 10 de x log10(NA[1]) 2.14
abs(x) Valeur absolue de x abs(-5) 5
ceil(x) Valeur entière supérieure de x ceil(K[1]) 5
floor(x) Valeur entière inférieure de x floor(K[1]) 4
pow(x,y) x à la puissance y pow(NA[1],2) 19600
exp(x) Exponentielle de x exp(K[1]) 66.68

Fonctions de traitement de chaînes de caractères et de dates/heures


substr(x,y,z) Découpe la chaîne de caractères x à substr(ASPS[1],0,3) Lim
partir de la position y, pour z caractères substr(ASPS[1],3,4) pide
(y négatif : lecture de droite à gauche) substr(ASPS[1],-2,2) de
sci(x,y) Ecriture scientifique de x avec y sci(K[1],2) 4,20e+0
précision sur le CR : 4,20x100
strpos(x,y) Position de y dans la chaîne de strpos(ASPS[1],"pide") 3
caractère x, sensible à la casse strpos(ASPS[1],"oui") faux
stripos(x,y) Position de y dans la chaîne de stripos(ASPS[1],"PIDE") 3
caractère x, insensible à la casse
dateDiff(x,y) Nombre de jours entre la date x et la dateDiff([[demDate]],"23-06-2011") -3
date y, dates au format JJ-MM-AAAA dateDiff([[demDate]],"15-06-2011") 5
str_replace(x,y,z) Remplace x par y dans la chaîne de str_replace("pi","pa",ASPS[1]) Limpade
caractères z str_replace("-","_",[[demDate]]) 20_06_2011
strlen(x) Nombre de caractères dans la chaîne x strlen(ASPS[1]) 7

KaliSil v2.08 Guide Paramétrage 06-4


Chapitre 06 Analyses : Formules

dateMax(x,y,...) Date maximum entre toutes les dates dateMax([[demDate]],"26-06-2011") 20-06-2011


passées en paramètres (6 maximum)
signe_x Signe d'un résultat numérique signe_TROPO[1] <
nombre(x) Valeur numérique de x nombre(TROPO[1]) 0,04
differenceSeconde(x,y) Nombre de secondes entre les differenceMinute([[preleveDateHeure 7200
dates/heures x et y au format JJ-MM- ]],[[demSaisieDateHeure]])
AAAA HH:NN:SS)
differenceMinute(x,y) Nombre de minutes entre les differenceMinute([[preleveDateHeure 120
dates/heures x et y au format JJ-MM- ]],[[demSaisieDateHeure]])
AAAA HH:NN:SS)
differenceHeure(x,y) Nombre d'heures entre les differenceMinute([[preleveDateHeure 2
dates/heures x et y au format JJ-MM- ]],[[demSaisieDateHeure]])
AAAA HH:NN:SS)
differenceJour(x,y) Nombre de jours entre les dates/heures differenceJour([[preleveDateHeure]] 0
x et y au format JJ-MM-AAAA ,[[demSaisieDateHeure]])
HH:NN:SS)

Tests logiques (retourne vrai ou faux pour faire un test conditionnel)


isset(x) Teste la présence de la sous-analyse x isset(K[1.1]) vrai
dans la demande isset(K[1.2]) faux
inf(x,y) Teste si x est inférieur à y, et si x existe inf(NA[1],140) faux
egal(x,y) Teste si x est égal à y, et si x existe egal(NA[1],140) vrai
infEgal(x,y) Teste si x est inférieur ou égal à y, et si infEgal(NA[1],140) vrai
x existe
sup(x,y) Teste si x est supérieur à y, et si x sup(NA[1],140) faux
existe
supEgal(x,y) Teste si x est supérieur ou égal à y, et si supEgal(NA[1],140) vrai
x existe
x<y Teste si x est inférieur à y K[1]<10 vrai
x<=y Teste si x est inférieur ou égal à y K[1]<=4 faux
x>y Teste si x est supérieur à y TROPO[1]>1 faux
x>=y Teste si x est supérieur ou égal à y TROPO[1]>=0.03 vrai
x==y Teste si x est égal à y NA[1]==140 vrai
x!=y Teste si x est différent de y. NA[1]!=140 faux
!x Valeur booléenne inversée de x. Permet !(NA[1]==140) faux
d'inverser le résultat d'un test
x && y Teste si "x et y" est vrai NA[1]>100 && K[1]<10 vrai
NA[1]>100 && K[1]>10 faux
x || y Teste si "x ou y" est vrai NA[1]>100 || K[1]<10 vrai
NA[1]>100 || K[1]>10 vrai
diffAnt(x,y) Teste si on a une valeur d'antériorité diffAnt(NA[1],60) faux
pour l'analyse x sur y jours en arrière diffAnt(NA[1],90) vrai
presence(x,y) Teste la présence de y dans la chaîne presence(ASPS[1],"pide") vrai
de caractères x presence(ASPS[1],"oui") faux
presence(x) Teste la présence de la sous-analyse x presence(K[1.1]) vrai
dans la demande, équivalent de isset(x) presence(K[1.2]) faux
absence(x) Teste l'absence de la sous-analyse x absence(K[1.1]) faux

KaliSil v2.08 Guide Paramétrage 06-5


Chapitre 06 Analyses : Formules

dans la demande, équivalent de ! absence(K[1.2]) vrai


isset(x)
membre(x, y, z,...) Teste si x est égal à y ou z ou … membre(ASPS[1],"positif","négatif") faux
(sensible à la casse) membre(ASPS[1],"limpide","clair") vrai
resultat(x,y,z) Vérifie si le patient a déjà obtenu le resultat(RAI[1],"positive") Date ou faux
résultat y pour l'analyse x et récupère le resultat(RAI[1],"positive",IDEN[1]) Résultat ou faux
résultat de l'analyse z (si spécifiée).

Attention à bien respecter la casse dans le nom des analyses

2.5. Formules conditionnelles


Les formules conditionnelles permettent de tester une opération logique pour rendre un résultat
si elle est vraie, et un autre résultat si elle est fausse. La syntaxe obligatoire est la suivante :
( ( TEST CONDITIONNEL ) ? ( RESULTAT SI VRAI ) : ( RESULTAT SI FAUX ) )

Exemple pour tester la présence du terme "positif" dans un résultat texte CBU[1] :
((presence(CBU[1],"positif"))?("Présence de positif"):("Absence de positif"))

Exemple : Si le résultat du sodium NA[1] est supérieur à 200, écrire "Sodium élevé" sinon écrire
"Sodium normal", la formule est la suivante :
((sup(NA[1],200))?("Sodium élevé"):("Sodium normal"))

Il est possible de concaténer plusieurs tests avec l'opérateur "+"


Exemple : Si le résultat du sodium NA[1] est supérieur à 200, écrire "Sodium élevé", s'il est
inférieur à 50 écrire "Sodium faible", sinon écrire "Sodium normal" :
(((sup(NA[1],200))?("Sodium élevé"):(""))+
((inf(NA[1],50))?("Sodium faible"):(""))+
((infEgal(NA[1],200) && supEgal(NA[1],50))?("Sodium normal"):("")))
Cette concaténation permet aussi d'éviter des calculs aberrants. Dans le cas du premier
exemple, un résultat "positive" entraînerait un calcul "Absence de positif" puisque la
condition testée n'est pas remplie. Dans certains cas, il est alors préférable de tester
indépendamment chaque réponse en concaténant les tests comme ci-dessus.

Recommandations spécifiques aux formules conditionnelles :


→ Il est fortement déconseillé d'utiliser des caractères spéciaux ("+" et "," par exemple)
dans les résultats. Dans ce cas il faut passer par un texte codifié : C+ => txt(Cp) qui
donnera C+
→ L'utilisation de la fonction txt() pour les textes codifiés n'est possible que dans les
résultats (si vrai, si faux) pas dans le test lui-même
→ Attention à respecter la casse dans les tests. Exemple : =="Oui" est différent de =="oui".
→ Il est fortement conseillé de ne pas imbriquer plusieurs tests conditionnels entre eux :

Exemple : au lieu d'écrire : ((TEST1)?(SI VRAI 1):( ((TEST2)?(SI VRAI 2):(SI FAUX)) ))

KaliSil v2.08 Guide Paramétrage 06-6


Chapitre 06 Analyses : Formules

il vaut mieux écrire : ((TEST1)?(SI VRAI 1):("")) + ((!TEST1 && TEST2)?(SI VRAI 2):(SI
FAUX))

Dans ce cas là, il faut penser à inverser le TEST1 en le faisant précéder de "!" dans la 2e
condition pour éviter un conflit de résultat.

3.Exemples pratiques
3.1. Formules de la numération
La numération contient plusieurs formules numériques simples. Dans notre exemple, voici les
sous-analyses utilisées :
• Leucocytes : NF[1]
• Polynucléaires neutrophiles en % : NF[10]
• Polynucléaires éosinophiles en % : NF[12]
• Polynucléaires basophiles en % : NF[14]
• Lymphocytes en % : NF[16]
• Monocytes % : NF[18]

Pour calculer les polynucléaires neutrophiles en valeur absolue, il faut disposer du résultat des
Leucocytes et des Polynucléaires neutrophiles en % dans la demande, tant qu'ils ne sont pas
saisis le calcul ne se fera pas. La formule est la suivante :
NF[1]*NF[10]/100

Pour calculer le contrôle 100% des différentes valeurs en %, la formule est la suivante :
NF[10]+NF[12]+NF[14]+NF[16]+NF[18]

Le calcul peut être complexifié en ajoutant les cellules optionnelles pas forcément présentes :
• Myéloblastes en % : NF[20.1] (présent dans la demande)
• Plasmocytes en % : NF[20.2] (présent dans la demande)
• Tricholeucocytes en % : NF[20.3] (absent de la demande)
NF[10]+NF[12]+NF[14]+NF[16]+NF[18]+opt(NF[20.1])+opt(NF[20.2])+opt(NF[20.3])

La fonction opt() permet à la fois de tester la présence d'une sous-analyse optionnelle pour
renvoyer sa valeur, et de renvoyer 0 sinon, ce qui ne fausse pas le calcul en cas d'absence.

On peut aussi utiliser la fonction somme() qui additionne tous les paramètres entre eux :
somme(NF[10],NF[12],NF[14],NF[16],NF[18],opt(NF[20.1]),opt(NF[20.2]),opt(NF[20.3]))

KaliSil v2.08 Guide Paramétrage 06-7


Chapitre 06 Analyses : Formules

3.2. Clairance calculée de la créatinine


La clairance calculée peut s'estimer de 3 manières différentes :
• Méthode de Cockroft (Gault et al., Predicting Glomerular Function from Adjusted Serum
Creatinine, Nephron, 1992, 62, pp. 249-256), il faut disposer des éléments
suivants (ml/min) :
• Créatinine : CR[1] en µmol/l
• Poids du patient demandé à l'accueil en kg : COCK[1]
• Age du patient : donc date de naissance dans la demande
• Sexe du patient dans la demande
([[F]]*1.04+[[M]]*1.23)*(140-[[age]])*COCK[1]/CR[1]
si CR[1] en mg/l : ([[F]]*0.85+[[M]]*1)*(140-[[age]])*COCK[1]/(7.2*CR[1])
ou ([[F]]*1.04+[[M]]*1.23)*(140-[[age]])*COCK[1]/CR[1]*0.113

• MDRD (Levey et al., A more accurate method to estimate glomerular filtration rate from
serum creatinine: a new prediction equation. Modification of Diet in Renal Disease Study
Group, 1999, Ann Intern Med, 130(6), pp 461-470), il faut disposer des éléments
suivants (ml/min/1,73m²):
• Créatinine : CR[1] en µmol/l (si en mg/l, dans la formule remplacer le facteur 0,0113
par 0,1)
• Age du patient : donc date de naissance dans la demande
• Sexe du patient dans la demande
En cas de mesure standardisée de la créatinine :
175*pow((CR[1]*0.0113),-1.154)*pow([[age]],-0.203)*([[F]]*0.742+[[M]]*1)
En cas de mesure non standardisée de la créatinine :
186*pow((CR[1]*0.0113),-1.154)*pow([[age]],-0.203)*([[F]]*0.742+[[M]]*1)
Pour les populations d'origine Africaine, il faut appliquer un facteur de correction
multiplicateur de 1.21.

• CKD-EPI (Levey et al. A new equation to estimate glomerular filtration rate, Ann Intern
Med., 2009, 150(9), pp 604-612), il faut disposer des éléments suivants pour (résultat en
ml/min/1.73m²
• Créatinine : CR[1] en µmol/l (si en mg/l, dans la formule remplacer le facteur 0,0113
par 0,1)
• Age du patient : donc date de naissance dans la demande
• Sexe du patient dans la demande
Ce calcul nécessite une mesure standardisée de la créatinine :
141*pow((min(((0.0113*CR[1]/([[M]]*0.9+[[F]]*0.7))),1)),([[M]]*-0.411+
[[F]]*-0.329))*pow((max(((0.0113*CR[1]/([[M]]*0.9+[[F]]*0.7))),1)),-
1.209)*pow(0.993,[[age]])*([[M]]*1+[[F]]*1.018)
Pour les populations d'origine Africaine, il faut appliquer un facteur de correction
multiplicateur de 1.159.

Pour appliquer les facteurs de correction ethnique, il suffit de créer une deuxième sous-
analyse en ajoutant le facteur à la formule existante. Par exemple pour MDRD :

KaliSil v2.08 Guide Paramétrage 06-8


Chapitre 06 Analyses : Formules

1.21*175*pow((CR[1]*0.0113),-1.154)*pow([[age]],-0.203)*([[F]]*0.742+[[M]]*1)

Il est aussi possible d'intégrer directement une sous-analyse à saisir à l'accueil (CR[2],
origine africaine, avec réponse O/N. Exemple pour MDRD :

((CR[2]=="O")?(1.21):(1))*175*pow((CR[1]*0.0113),-1.154)*pow([[age]],-
0.203)*([[F]]*0.742+[[M]]*1)

Des calculateurs en ligne sur internet sont disponibles pour vérifier les formules après
paramétrage dans KaliSil (ex. : http://www.soc-nephrologie.org/eservice/calcul/eDFG.htm).

3.3. Repasse automatique et Lame sur antériorité

Il est possible d'utiliser les formules conditionnelles pour retourner un résultat égal à 1 ou 0 selon
le test effectué, pour ensuite lancer une conséquence sur résultat si la formule est égale à 1.

Exemple : Si le résultat actuel des plaquettes PLA[1] est inférieur à 100 et que la dernière
antériorité des plaquettes de ce patient est supérieure à 150, alors retourner 1 sinon 0. Nous allons
utiliser la balise RTF [[anaAnt1Res(X)]] pour chercher la dernière antériorité du patient.

La formule est la suivante :


(([[anaAnt1Res(PLA[1])]]>150 && PLA[1]<100)?("1"):("0"))

Dans les conséquences de la sous-analyse de formule, on met la ligne : "si égal à 1 alors repasse
de l'analyse plaquettes", ainsi on lance une repasse automatique si un delta trop important est
détecté entre la valeur actuelle des plaquettes et son antériorité.

Si on complexifie la formule précédente, on peut ajouter un test sur l'ancienneté de l'antériorité.


L'exemple ci-dessous renvoie 1 si la valeur absolue des lymphocytes NF[17] est supérieure ou
égale à 5 et que la dernière antériorité de cette analyse date de plus de 60 jours. Ceci permet
d'autoriser un délai "d'oubli" du patient.

(( diffAnt(NF[17],60) || NF[17]<5 )?("0"):("1"))

Dans les conséquences de la sous-analyse de formule, on met la ligne : "si égal à 1 alors ajout de
l'analyse lames", ainsi on ajoute la lame uniquement si le patient a des lymphocytes élevés et qu'il
n'a pas fait de numération depuis 2 mois.

3.4. Conclusion automatique


3.4.1. Exemple Toxoplasmose
En utilisant les formules conditionnelles, on peut tenter de déterminer une conclusion automatique
en fonction des résultats de la toxoplasmose, tout en laissant la possibilité de saisir une conclusion
manuelle à l'utilisateur. Dans l'exemple suivant, les composantes sont les suivantes :
• Réponse à la question Grossesse ? TOXO[1] = "oui" ou "non"

KaliSil v2.08 Guide Paramétrage 06-9


Chapitre 06 Analyses : Formules

• IgG TOXO[2]
• IgM TOXO[3]
• Conclusion manuelle texte si nécessaire : TOXO[4.1] optionnelle à ajouter si besoin
La formule va dans un premier temps tester la présence de la conclusion manuelle TOXO[4.1] et si
elle est dans la demande, afficher sa valeur. Sinon, si on est dans le cadre d'une grossesse et que
les IgG sont inférieurs à 0,5, et que les IgM sont inférieurs à 0,8 : on affiche la conclusion
automatique du texte codifié "CCLNEG".

Voici la syntaxe découpée :


opt(TOXO[4.1],"")+
((absence(TOXO[4.1]) && presence(TOXO[1],"oui") && inf(TOXO[2],0.5) &&
inf(TOXO[3],0.8))?(txt(CCLNEG)):(""))

3.4.2. Exemple PSA libre


En utilisant les formules conditionnelles, on peut tenter de déterminer une conclusion automatique
en fonction des résultats de la PSA libre. Dans l'exemple suivant, les composantes sont les
suivantes :
• Résultat PSA : PSA[1]
• Résultat PSA libre : PSAL[1]
• Rapport PSA libre / total : PSAL[1.1] (optionnelle)
• Conclusion : PSAL[2]
La formule va tester les résultats PSA et rapport PSA libre et afficher en fonction un texte codifié.
Dans cette configuration, la formule se compose de plusieurs formules conditionnelles
concaténées affichant un texte codifié si la condition est remplie.
Attention à ce que plusieurs conditions ne puissent pas être réunies en même temps au
risque de concaténer plusieurs résultats.

Condition sur le rapport Résultat attendu pour PSAL[2]


Condition sur PSA[1]
PSAL[1.1] (nom du texte codifié)

PSA[1] ≤ 2 (aucune) PSALNOR2


2 < PSA[1] ≤ 4 PSAL[1.1] < 10 PSALCOMPL
2 < PSA[1] ≤ 4 PSAL[1.1] ≥ 10 PSALNOR4
4 < PSA[1] ≤ 10 PSAL[1.1] < 25 PSALCOMPL1
4 < PSA[1] ≤ 10 PSAL[1.1] ≥ 25 PSALNORM
PSA[1] > 10 (aucune) PSALCOMPL2

La syntaxe résultant de ce tableau pour la formule PSAL[2] est la suivante :


((infEgal(PSA[1],2))?(txt(PSALNOR2)):(""))+
((sup(PSA[1],2) && infEgal(PSA[1],4) && inf(PSAL[1.1],10))?(txt(PSALCOMPL)):(""))+
((sup(PSA[1],2) && infEgal(PSA[1],4) && supEgal(PSAL[1.1],10))?(txt(PSALNOR4)):(""))+
((sup(PSA[1],4) && infEgal(PSA[1],10) && inf(PSAL[1.1],25))?(txt(PSALCOMPL1)):(""))+
((sup(PSA[1],4) && infEgal(PSA[1],10) && supEgal(PSAL[1.1],25))?(txt(PSALNORM)):(""))+
((sup(PSA[1],10))?(txt(PSALCOMPL2)):(""))

KaliSil v2.08 Guide Paramétrage 06-10


Chapitre 06 Analyses : Formules

Il est fortement conseillé d'utiliser les fonctions inf, sup, infEgal et supEgal à la place des
symboles < > <= >= car ces fonctions testent en même temps la présence de la sous-
analyse et du résultat saisi en plus de la condition.

3.5. Gestion des cotations de la NF


Il est possible d'utiliser les formules pour gérer efficacement les cotations de la NF en cas
d'hémopathie. Pour cela, il faut paramétrer la NF en cotation par sous analyse et créer 2 sous-
analyses :
• une obligatoire de type formule (NF[21])
• une optionnelle de type texte (NF[21.1] par exemple) avec un groupe de 3 textes
codifiés :
- NFn : Cotation minimale (avec la cotation 1104) ; valeur par défaut
- NFdec : Découverte d'hémopathie (cotation 1105)
- NFsuivi : Suivi d'hémopathie (cotation 1106)

La syntaxe de la formule est la suivante :


((presence(NF[21.1]))?(NF[21.1]):(""))+
((absence(NF[21.1]) && [[anaAnt1Res(NF[21])]]=="")?(txt(NFn)):(""))+
((absence(NF[21.1]) && [[anaAnt1Res(NF[21])]]==txt(NFdec))?(txt(NFsuivi)):(""))+
((absence(NF[21.1]) && [[anaAnt1Res(NF[21])]]==txt(NFsuivi))?(txt(NFsuivi)):(""))+
((absence(NF[21.1]) && [[anaAnt1Res(NF[21])]]==txt(NFn))?(txt(NFn)):(""))

Ainsi, pour toute NF, la cotation 1104 s'applique. En cas d'hémopathie, il est possible de modifier la
première sous-analyse en mettant "NFdec" ce qui appliquera la cotation 1105 (qui écrasera le
1104 de la formule via la règle de nomenclature). A partir de là, pour tous les dossiers suivants, la
formule de calcul mettra "NFsuivi" avec la cotation 1106 (qui écrasera le 1104 de la sous-analyse
texte).

3.6. Ré-édition d'une carte de groupe avec RAI


Il est possible d'utiliser les formules pour faire apparaître sur une carte de groupe le résultat d'une
RAI positive détectée après la recherche de groupe sanguin.
La formule peut s'utiliser avec les deux syntaxes suivantes :
• resultat(RAI[1],"positive")
La formule va rechercher la dernière demande où le patient a obtenu le résultat « positive »
pour l'analyse « RAI[1] ». Si une occurrence de ce résultat est trouvé, la formule retourne la
date et l'heure de validation biologique du résultat. Sinon, la formule retourne « faux ».

• resultat(RAI[1],"positive", IDEN[1])
La formule va rechercher la dernière demande où le patient a obtenu le résultat « positive »
pour l'analyse « RAI[1] ». Si une occurrence de ce résultat est trouvé, la formule retourne le
résultat de l'analyse « IDEN[1] ». Sinon, la formule retourne « faux ».

KaliSil v2.08 Guide Paramétrage 06-11

Вам также может понравиться