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

Principe :

Écrire sous la forme

2 ans 6 mois

Le délai qui sépare 2 dates.

D’ou je pars ?

  • Doctor
    • Questionnaire
      • Question
        • Texte
          • Valeur (par défaut)

 

Code d’incidence :

  • L’incidence “Médycs” est le grand carré blanc dans lequel je vais taper mon code :

  • Variables :
    • Une variable est un bout de code qui prend une valeur
      • Cette valeur peut varier à tout moment
    • Dans une incidence MédyCS chaque variable est déclarée par le préfixe :
@@_

@@_ANS = Nombre d’années

@@_MOIS = nombre de mois

  • Pour utiliser une variable dans une incidence, on conseille d’utiliser le menu [(X!)]

SCRIPT COMPLET:

@@_DATE_DERNIERE := {C1841:MAMMO Date Dernière}

/* NE PAS MODIFIER SOUS CETTE LIGNE */

@@_ANS := DATEDIFF("yyyy";{V:_DATE_DERNIERE};AUJOURDHUI())

/* Conversion des années entières en nombre de mois */
@@_ANS_MOIS := {V:_ANS} * 12

/* Calcul du nombre total de mois */
@@_MOIS := DATEDIFF("m";{V:_DATE_DERNIERE};AUJOURDHUI())

/* Déduction des mois restants en dehors des années entières */
@@_MOIS := {V:_MOIS} - {V:_ANS_MOIS}

/* orthographe des pluriels */
@@_Affiche_ANS  := SI({V:_ANS}=0;"";SI({V:_ANS}=1;{V:_ANS} & " an ";{V:_ANS} & " ans "))
@@_Affiche_MOIS := SI({V:_MOIS}=0;"";{V:_MOIS} & " mois")

/* résultat retourné */
@@_DELAI :={V:_Affiche_ANS} & {V:_Affiche_MOIS}

Explications :

 @@_DATE_DERNIERE := {C1841:MAMMO Date Dernière} On place ici la date de référence (ici la date de la dernière mammographie). Cela permet de porter le script sur toutes les installations.
 /* NE PAS MODIFIER SOUS CETTE LIGNE */  Abuser des commentaires pour la compréhension du script
@@_ANS := DATEDIFF(“yyyy”;{V:_DATE_DERNIERE};AUJOURDHUI()) Je calcule le nombre d’années entières entre les 2 dates :

  • variable @@_ans
  • fonction datediff
    • intervalle : “yyyy” = années entières
    • date antérieur à gauche
    • date postérieure à droite
  • Ne pas utiliser Maintenant mais Aujourdhui+++
@@_ANS_MOIS := {V:_ANS} * 12 Je calcule combien il y a de mois dans le nombre d’années entières
@@_MOIS := DATEDIFF(“m”;{V:_DATE_DERNIERE};AUJOURDHUI()) Je calcule combien il y a des mois en tout entre les 2 dates

  • intervalle : “m” = mois entiers
@@_MOIS := {V:_MOIS} – {V:_ANS_MOIS} Je déduis de ce calcul le nombre de mois qu’il y a déjà dans le compte des années (il me reste le nombre de mois dans l’année en cours)
@@_Affiche_ANS  := SI({V:_ANS}=0;””;SI({V:_ANS}=1;{V:_ANS} & ” an “;{V:_ANS} & ” ans “)) Cette routine :

  1. N’affiche rien si ANS est à 0 (“”)
  2. Affiche AN au singulier s’il y en a 1 (“an“)
  3. Au pluriel sinon (“ans“)
@@_Affiche_MOIS := SI({V:_MOIS}=0;””;{V:_MOIS} & ” mois”) Même chose pour les mois, sachant que Mois est toujours au pluriel.
@@_DELAI :={V:_Affiche_ANS} & {V:_Affiche_MOIS} Affiche le résultat sous la forme :

  • 6 mois (si 0 ans et 6 mois)
  • 1 an (si 12 mois => an au singulier, 0 mois non affiché)
  • 2 ans 3 mois … (=>ans au pluriel)

Portabilité :

  • Pour reporter ce script dans une incidence perso, il suffit de poser après @@_DATE_DERNIERE la réponse à la question à tester
 @@_DATE_DERNIERE := {?}

 

 

Laisser un commentaire