summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDenise sur Lya <sekhmet@lya>2020-11-12 23:47:51 +0100
committerDenise sur Lya <sekhmet@lya>2020-11-12 23:47:51 +0100
commitb5ac625bdf312851ad3d7acf5dfdc5a94fcbf0be (patch)
tree8b956625fa147bf61cccd8e435c29c0f60864e99
parentd5687a7f2b929f28bb8fc2de503812ec3b27cd9e (diff)
downloadoms-b5ac625bdf312851ad3d7acf5dfdc5a94fcbf0be.tar.gz
oms-b5ac625bdf312851ad3d7acf5dfdc5a94fcbf0be.tar.zst
oms-b5ac625bdf312851ad3d7acf5dfdc5a94fcbf0be.zip
V 2.2 : possibilité d'avoir des prémas (bêta)
-rw-r--r--configuration.py3
-rw-r--r--data/changelog_data.txt11
-rw-r--r--gestion_donnees.py10
-rw-r--r--templates/index.html2
-rw-r--r--trace_courbe.py53
5 files changed, 66 insertions, 13 deletions
diff --git a/configuration.py b/configuration.py
index c56e569..79bcd6d 100644
--- a/configuration.py
+++ b/configuration.py
@@ -113,6 +113,9 @@ DEFAUT["tracevide"] = ""
113DEFAUT["memechelle"] = "" 113DEFAUT["memechelle"] = ""
114DEFAUT["positionlegende"] = "hg" 114DEFAUT["positionlegende"] = "hg"
115 115
116DEFAUT["prematurite"] = "0j"
117DEFAUT["agecorrige"] = "oui"
118
116 119
117# initialiser la config 120# initialiser la config
118def config_init(): 121def config_init():
diff --git a/data/changelog_data.txt b/data/changelog_data.txt
index 2eda864..3b680f3 100644
--- a/data/changelog_data.txt
+++ b/data/changelog_data.txt
@@ -1,8 +1,17 @@
1"Version 2.2","12/11/2020","<p>Ajout de la possibilité d'avoir la courbe ajustée pour les prématurés. Attention c'est encore en bêta ! Le principe c'est simplement les courbes OMS décalées de la durée de prématurité, ce qui convient plus ou moins bien aux enfants nés prématurés une fois qu'ils ont atteint l'âge du terme en âge corrigé.
2<ul>
3<li>Si vous n'êtes pas concerné(e), laisser ""0j"" (0 jours) en prématurité (logique non ?)</li>
4<li>Si vous préférez l'âge corrigé, cocher la case. L'âge de l'enfant sera alors potentiellement négatif.</li>
5<li>Si vous préférez l'âge réel, c'est la courbe OMS qui sera alors décalée</li>
6</ul>
7Tout retour sur cette fonctionnalité est le bienvenu !
8</p>"
9
1"Version 2.1","28/07/2020","<p>Petites améliorations : 10"Version 2.1","28/07/2020","<p>Petites améliorations :
2<ul> 11<ul>
3<li>Bug corrigé : quand on ajoute des lignes, maintenant ça ajoute aussi des saisies de taille ! ^^</li> 12<li>Bug corrigé : quand on ajoute des lignes, maintenant ça ajoute aussi des saisies de taille ! ^^</li>
4<li>Par défaut, les saisies de taille sont masquées (car la plupart du temps on regarde le poids). On peut cliquer pour afficher les tailles.</li> 13<li>Par défaut, les saisies de taille sont masquées (car la plupart du temps on regarde le poids). On peut cliquer pour afficher les tailles.</li>
5</ul>" 14</ul></p>"
6 15
7"Version 2.0","28/07/2020","<p>Nouveauté : courbes de taille disponible ! 16"Version 2.0","28/07/2020","<p>Nouveauté : courbes de taille disponible !
8<ul> 17<ul>
diff --git a/gestion_donnees.py b/gestion_donnees.py
index 3523e7e..880614d 100644
--- a/gestion_donnees.py
+++ b/gestion_donnees.py
@@ -21,6 +21,7 @@ def convertit_jours_vers_python(chaine,liste_err):
21 Si un des caractères n'est ni un nombre, ni une lettre "autorisée" ni une espace, 21 Si un des caractères n'est ni un nombre, ni une lettre "autorisée" ni une espace,
22 on affiche un warning et on ignore ce caractère 22 on affiche un warning et on ignore ce caractère
23 """ 23 """
24# debug("conversion de "+chaine+" vers un nb de jours",liste_err)
24 chainenombre = "" 25 chainenombre = ""
25 agejours = 0. 26 agejours = 0.
26 for lettre in chaine: 27 for lettre in chaine:
@@ -52,6 +53,7 @@ def convertit_jours_vers_python(chaine,liste_err):
52 if agejours<0: 53 if agejours<0:
53 warning("L'âge est négatif !",liste_err) 54 warning("L'âge est négatif !",liste_err)
54 agejours = 0 55 agejours = 0
56# debug("On a convertit ! Résultat : "+str(agejours),liste_err)
55 return agejours 57 return agejours
56 58
57# python -> json 59# python -> json
@@ -209,6 +211,12 @@ def gere_configuration(data,liste_err):
209 naissance = convertit_date_vers_python(naissance,liste_err) 211 naissance = convertit_date_vers_python(naissance,liste_err)
210 configuration["naissance"] = naissance 212 configuration["naissance"] = naissance
211 213
214 prematurite = data.get("prematurite","")
215 j = convertit_jours_vers_python(prematurite,liste_err)
216 configuration["prematurite"] = convertit_age_vers_texte(j)
217
218 configuration["agecorrige"] = gere_checkbox(data.get("agecorrige",""))
219
212 # Type de courbe. Au pire on met P 220 # Type de courbe. Au pire on met P
213 tyc = data.get("typecourbe","") 221 tyc = data.get("typecourbe","")
214 if not (tyc in ["P","Z"]): 222 if not (tyc in ["P","Z"]):
@@ -383,7 +391,7 @@ def fusionne_donnees(listes_jours,listes_donnees):
383 if lj[cle_mini]== []: 391 if lj[cle_mini]== []:
384 cle_mini = cle 392 cle_mini = cle
385 elif lj[cle] != []: 393 elif lj[cle] != []:
386 if convertit_jours_vers_python(lj[cle][0],[])<convertit_jours_vers_python(lj[cle_mini][0],[]): 394 if convertit_jours_vers_python(lj[cle][0],initialise_erreurs())<convertit_jours_vers_python(lj[cle_mini][0],initialise_erreurs()):
387 cle_mini = cle 395 cle_mini = cle
388 return cle_mini 396 return cle_mini
389 397
diff --git a/templates/index.html b/templates/index.html
index 8f5eb87..6dc7ed6 100644
--- a/templates/index.html
+++ b/templates/index.html
@@ -37,6 +37,8 @@
37| <label><input type="radio" name="sexe" value="M" {%if valform.sexe == "M"%} checked {% endif %}> masculin</label> | <label><input type="radio" name="sexe" value="N" {%if valform.sexe == "N"%} checked {% endif %}> neutre (expérimental)</label></li> 37| <label><input type="radio" name="sexe" value="M" {%if valform.sexe == "M"%} checked {% endif %}> masculin</label> | <label><input type="radio" name="sexe" value="N" {%if valform.sexe == "N"%} checked {% endif %}> neutre (expérimental)</label></li>
38<li><label>Date de naissance&nbsp;: </label> <input type="date" name="naissance" value="{{ valform.naissance }}"> 38<li><label>Date de naissance&nbsp;: </label> <input type="date" name="naissance" value="{{ valform.naissance }}">
39 <p id="changemode" class="petit"><span onclick="change_mode_dates('text')" class="bouton">Cliquer ici</span> pour saisir les dates comme du texte.</p> </li> 39 <p id="changemode" class="petit"><span onclick="change_mode_dates('text')" class="bouton">Cliquer ici</span> pour saisir les dates comme du texte.</p> </li>
40<li><label>Prématurité (expérimental) ?</label> <input type="text" name="prematurite" value="{{ valform.prematurite }}"> <input type="checkbox" name="agecorrige" {% if valform.agecorrige == "oui"%}checked{%endif%}> Afficher l'âge corrigé <p class="petit">Si l'enfant est prématuré, saisir de quelle durée (en mois, jours, semaines, voir syntaxe plus bas). Sinon, laisser 0j. Attention c'est encore en bêta !</p> </li>
41
40</ul> 42</ul>
41 43
42 44
diff --git a/trace_courbe.py b/trace_courbe.py
index a967916..d004dcb 100644
--- a/trace_courbe.py
+++ b/trace_courbe.py
@@ -3,7 +3,7 @@
3from configuration import CONFIG 3from configuration import CONFIG
4from gestionOMS import * 4from gestionOMS import *
5from gestion_unites import * 5from gestion_unites import *
6from gestion_donnees import calcule_max_graphique 6from gestion_donnees import calcule_max_graphique, convertit_jours_vers_python
7 7
8import matplotlib.pyplot as plt 8import matplotlib.pyplot as plt
9 9
@@ -24,7 +24,6 @@ def cree_figure(conf,l_jours,l_poids,typedonnee,liste_err):
24 print(conf) 24 print(conf)
25 print(conf["non_sauve"]) 25 print(conf["non_sauve"])
26 if conf["non_sauve"].get("maxi",0) == 0: 26 if conf["non_sauve"].get("maxi",0) == 0:
27 print("bla")
28 jour_maxi = calcule_max_graphique(l_jours) 27 jour_maxi = calcule_max_graphique(l_jours)
29 else: 28 else:
30 jour_maxi = conf["non_sauve"]["maxi"]+1 29 jour_maxi = conf["non_sauve"]["maxi"]+1
@@ -45,11 +44,27 @@ def cree_figure(conf,l_jours,l_poids,typedonnee,liste_err):
45 else: 44 else:
46 unite = conf["non_sauve"]["unite"] 45 unite = conf["non_sauve"]["unite"]
47 46
47 #debug("prématurité dans la config : "+conf["prematurite"],liste_err)
48 prema = int(convertit_jours_vers_python(conf["prematurite"],liste_err))
49 ## Gestion des prémas, deux cas :
50 # Si agecorrige est oui, alors on veut juste soustraire la valeur de préma
51 # à toutes les données.
52 # Si agecorrige est non, alors on veut ajouter la valeur de préma aux courbes de référence.
53
54 debug("Prématurité : "+str(prema)+"age corrigé : "+conf["agecorrige"],liste_err)
55
56
57 if prema>0 and conf["agecorrige"] == "oui":
58 l_jours = [j-prema for j in l_jours]
59 jour_maxi = jour_maxi - prema
60# debug("liste des jours : "+str(l_jours),liste_err)
61 else:
62 debug("bla",liste_err)
48 l_jours_conv = convertit_tableau(l_jours,unite,liste_err) 63 l_jours_conv = convertit_tableau(l_jours,unite,liste_err)
49 # Attention, comme les jours commencent à partir de 0, faut enlever 1 pour avoir la borne... 64 # Attention, comme les jours commencent à partir de 0, faut enlever 1 pour avoir la borne...
50 age_maxi = convertitunite(jour_maxi-1,unite,liste_err) 65 age_maxi = convertitunite(jour_maxi-1,unite,liste_err)
51 66
52 debug("cree_figure : conversion des unités ok",liste_err) 67 debug("cree_figure : conversion des unités ok : "+str(l_jours_conv),liste_err)
53 68
54 titre = "Courbe de "+typedonnee+" OMS" 69 titre = "Courbe de "+typedonnee+" OMS"
55 70
@@ -79,13 +94,22 @@ def cree_figure(conf,l_jours,l_poids,typedonnee,liste_err):
79 else: 94 else:
80 erreur("Type de courbe invalide"+conf["typecourbe"],liste_err) 95 erreur("Type de courbe invalide"+conf["typecourbe"],liste_err)
81 return "" 96 return ""
82
83 debug("cree_figure : géré le type de courbe ok. Liste des data labels : "+str(liste_data_labels),liste_err)
84 debug("Fichier d'où extraire les données : "+fichier_oms,liste_err)
85 97
86 # Si y'a un nom on met "courbe de machin" 98 # Si y'a un nom on met "courbe de machin"
87 if conf["nom"] !="": 99 if conf["nom"] !="":
88 titre += " de " +conf["nom"] 100 titre += " de " +conf["nom"]
101
102
103 if prema>0:
104 titre+= ", préma de "+conf["prematurite"]
105 if conf["agecorrige"] == "oui":
106 titre+=" (courbe en âge corrigé)"
107 else:
108 titre+=" (courbe en âge réel, données OMS décalées)"
109
110 debug("cree_figure : géré le type de courbe ok. Liste des data labels : "+str(liste_data_labels),liste_err)
111 debug("Fichier d'où extraire les données : "+fichier_oms,liste_err)
112
89 113
90 114
91 # convertir les unités 115 # convertir les unités
@@ -98,14 +122,18 @@ def cree_figure(conf,l_jours,l_poids,typedonnee,liste_err):
98 return "" 122 return ""
99 123
100 debug("cree_figure : on va convertir données OMS à la bonne unité",liste_err) 124 debug("cree_figure : on va convertir données OMS à la bonne unité",liste_err)
101 try: 125 try:
102 coljour = convertit_tableau(extraire_colonne(t,0,jour_maxi),unite,liste_err) 126 coljour= (extraire_colonne(t,0,jour_maxi))
127 if prema>0 and conf["agecorrige"] != "oui":
128 coljour = [j + prema for j in coljour]
129 coljour = convertit_tableau(coljour,unite,liste_err)
103 except: 130 except:
104 erreur("Problème à la conversion du tableau OMS. jour_maxi = "+str(jour_maxi)+" unite = "+unite,liste_err) 131 erreur("Problème à la conversion du tableau OMS. jour_maxi = "+str(jour_maxi)+" unite = "+unite,liste_err)
105 return "" 132 return ""
106 133
107 debug("cree_figure : prête à créer la figure",liste_err) 134 debug("cree_figure : prête à créer la figure",liste_err)
108 #### La figure 135 #### La figure, params
136
109 fig = plt.figure(num=None, figsize=(conf["largeur"], conf["hauteur"]), dpi=100, facecolor=conf["couleurs"]["fond"]) 137 fig = plt.figure(num=None, figsize=(conf["largeur"], conf["hauteur"]), dpi=100, facecolor=conf["couleurs"]["fond"])
110 plt.rcParams['axes.facecolor'] = conf["couleurs"]["fond"] 138 plt.rcParams['axes.facecolor'] = conf["couleurs"]["fond"]
111 plt.rcParams['axes.edgecolor']= conf["couleurs"]["cadretxt"] 139 plt.rcParams['axes.edgecolor']= conf["couleurs"]["cadretxt"]
@@ -140,14 +168,17 @@ def cree_figure(conf,l_jours,l_poids,typedonnee,liste_err):
140 168
141 #warning("Jusque là ça marche",liste_err) 169 #warning("Jusque là ça marche",liste_err)
142 debug("cree_figure : prête à tracer la courbe de l'enfant",liste_err) 170 debug("cree_figure : prête à tracer la courbe de l'enfant",liste_err)
143 171
172
173 ### Tracé pour de bon
144 if l_jours != []: 174 if l_jours != []:
145 plt.plot(l_jours_conv,l_poids,label=conf["nom"],color=conf["couleurs"]["cadretxt"],marker='o') 175 plt.plot(l_jours_conv,l_poids,label=conf["nom"],color=conf["couleurs"]["cadretxt"],marker='o')
176 debug("Tracé de la courbe enfant, avec les jours "+str(l_jours_conv),liste_err)
146 177
147 plt.xlabel("Âge en "+unite,color=conf["couleurs"]["cadretxt"]) 178 plt.xlabel("Âge en "+unite,color=conf["couleurs"]["cadretxt"])
148 plt.ylabel(typedonnee.capitalize()+" en "+CONFIG["unites_typedonnees"][typedonnee],color=conf["couleurs"]["cadretxt"]) 179 plt.ylabel(typedonnee.capitalize()+" en "+CONFIG["unites_typedonnees"][typedonnee],color=conf["couleurs"]["cadretxt"])
149 plt.title(titre,color=conf["couleurs"]["cadretxt"]) 180 plt.title(titre,color=conf["couleurs"]["cadretxt"])
150 plt.axis([0,age_maxi,poids_min,poids_max]) 181 plt.axis([min(0,l_jours_conv[0]),age_maxi,poids_min,poids_max])
151 182
152 if conf['legende']=="oui": 183 if conf['legende']=="oui":
153 legende = plt.legend(loc=conf['positionlegende']) 184 legende = plt.legend(loc=conf['positionlegende'])