Médycs: @@_TP #3 – @@_AGE (en années et en vrais mois)

BUT

Afficher un Age en Années et Mois véritables

QUESTION = AGE DU DERNIER EXAMEN ?

TYPE
  • DOCTOR …
    • Type NUMERIQUE
    • 2 décimales
ALGORITHME
  • DATEDIFF calcule le nombre de mois entre 2 dates
  • Le Script présenté Convertit ce Nombre en Années et en Mois restants
    • Ainsi 2 ans et demi
      • donne 2,6
      • et non 2,5 car correspond à 2 ans et 6 mois.
INCIDENCE : VALEUR PAR DEFAUT

@@_DATE_DERNIER := {C1869:FCV Date du dernier frottis}

/*** INITIALISATION : DATE *** Ne rien changer en dessous ***/

/*
* RETOURNE L’AGE EN ANNÉES ET EN MOIS à partir d’une date
*/

/*** CALCULS ***/

@@_MOIS := DATEDIFF( “m”;{V:_DATE_DERNIER};AUJOURDHUI() )

/*
* Nombre de mois écoulés entre la DATE et Aujourd’hui
*/

@@_ANNNES_ENTIERES := {V:_MOIS} \ 12

/*
* Nombre d’années ENTIERES comprises dans le Nombre de MOIS
* => Utilisation de la Divison Entière ou Antislash \
*/

@@_MOIS := {V:_MOIS} – ( {V:_ANNNES_ENTIERES} * 12 )

/*
* Le NOMBRE DE MOIS RESTANTS correspond
* au nombre total de mois
* – moins les mois compris dans les ANNÉES ENTIÈRES
* => L’utilisation des parenthèses ici est obligatoire pour hiérarchiser les opérations
*/

/*** FORMAT DE RETOUR DE LA VALEUR : NUMERIQUE ***/

@@_AGE := {V:_ANNNES_ENTIERES} + ( {V:_MOIS} /10 )

/*
* La valeur retournée est un nombre réel
* Dont la partie entière correspond au nombre d’années
* et la partie décimale au nombre de mois restants dans l’année en cours.
* => (MOIS / 10 décale les mois derrière la virgule )
* => 2 ans et 6 mois me donnent donc 2,6 alors que la simple division par 12 me donnait 2,5
* => Il est bon d’avoir les 2 (2,5 est plus utile pour les calculs internes, 2,6 pour l’affichage)
* Il est également possible de retourner une chaine du type : “2 ans et 6 mois”
* AGE := ANNNES_ENTIERES & ” ans et ” & MOIS ” mois”
*/

/*** BlueGYN 19/01/2019 ***/

EXPLICATIONS

Mise en forme du Script

  • Articulation générale :
    1. Initialisation
    2. Calculs
    3. Valeur de retour
  • Commentaires
    • A noter
      1. qu’une incidence VALEUR ne peut pas commencer par un COMMENTAIRE /* */ , (les commentaires de l’initialisation doivent être en dessous des variables à initialiser)
      2. Et ne peut pas se terminer par un MESSAGE @@_SHOW
      3. Et qu’il ne peut y avoir de variables citées dans les commentaires
  • 2 FONCTIONS MEDYSCRIPT : (Surligner puis F1 pour de l’aide)
    • DATEDIFF
    • AUJOURDHUI
    • A NOTER l’utilisation de la division ENTIÈRE \
      • Qui ne retourne que la parie entière de l’Opération (ici le nombre d’années entières)

INTÉRÊT = PORTABILITÉ INTRA et INTER

  • Le grand intérêt d’un script clair et hiérarchisé, est qu’une fois qu’il est testé et fonctionne sur une question date, il peut être appliqué à n’importe quelle autre question date, de n’importe quel autre utilisateur, par un simple copié collé,

Il suffira juste de remplacer le code personnel de la QUESTION :

  • DATE DERNIER

Selon l’utilisateur et le contexte.

Leçon :

    • User et abuser les VARIABLES INTERMÉDIAIRES ET DES COMMENTAIRES !!!
    • On remarque que le calcul n’utilise QUE DES VARIABLES, ce qui le rend particulièrement :
      • Facile à écrire (on ne se perd plus dans les jeux de parenthèses ouvrantes et fermantes en limitant leur nombre au maximum
      • Facile à comprendre (c’est presque du langage courant, et les commentaires sont presque superflus)
      • Facile à diffuser (CTRL+A, CTRL+C => CTRL+V)
    • On note aussi que le Moteur du MédycsScript fait pas mal de boulot à notre place
      • Il déclare et convertit automatiquement les variables (ce qui est très pratique, mais peut parfois donner des résultats imprévus)
      • Par contre, comme il s’agit d’un langage interprété, qui lit le Script de Haut en Bas et de gauche à droite,  il ne sait pas hiérarchiser implicitement les opérations imbriquées (d’où l’hyper-parenthésage spaghetti parfois nécessaire pour les calculs complexes)
      • Il faut écrire :
MOIS_RESTANTS = TOTAL_MOIS - ( ANNEES_ENTIERES * 12 )

Afin qu’il calcule

ANNEES_ENTIERES * 12

Avant de le soustraire à

TOTAL_MOIS

On pourrait s’amuser à remplacer le calcul intermédiaire par une variable du type

  • @@_MOIS_COMPRIS_DANS_ANNEES_ENTIERES := ANNEES_ENTIERES * 12
  • @@_MOIS_RESTANTS = TOTAL_MOIS –  MOIS_COMPRIS_DANS_ANNEES_ENTIERES

Mais une règle qui ne laisse aucune fantaisie de l’enfreindre de temps en temps si on en a envie, ça s’appellerait clairement une dictature… (L’important c’est qu’on s’y retrouve et que ça fonctionne.)

Travaux pratiques à la maison :

  • Calculer l’age en Années, Mois et Jours !

Médycs: @@_TP #3 – @@_AGE (en années et en vrais mois)

Afficher un Age en Années et Mois véritables

0 commentaire

Médycs: @@_TP #2 – DateReponse (Jouer avec les Variables)

L’incidence “Valeur” va chercher la date du dernier examen, si cet examen n’a jamais été fait, met la date du jour par défaut.

0 commentaire

Médycs: IMC (Utilisation des variables @@_)

On demande de calculer l’IMC d’une patiente en utilisant les variables Médycs

0 commentaire

Médycs: TAILLE – Valeur par défaut (Utilisation des variables @@_)

L’idée est de donner une “Valeur par défaut” au poids et à la Taille d’une patiente,

afin de se familiariser avec la manipulation des variables @@_

0 commentaire

Médycs: POIDS – Valeur par défaut (Utilisation des variables @@_)

L’idée est de donner une “Valeur par défaut” au poids et à la Taille d’une patiente,

afin de se familiariser avec la manipulation des variables @@_

0 commentaire

MédyCS – Incidence : Écrire un délai entre 2 dates

Écrire sous la forme

2 ans 6 mois

Le délai qui sépare 2 dates

0 commentaire

Médycs : Les Variables “Message”

Afficher un message dans un boite d’Alerte

0 commentaire

Laisser un commentaire