diff options
-rw-r--r-- | configuration.py | 3 | ||||
-rw-r--r-- | data/changelog_data.txt | 11 | ||||
-rw-r--r-- | gestion_donnees.py | 10 | ||||
-rw-r--r-- | templates/index.html | 2 | ||||
-rw-r--r-- | trace_courbe.py | 53 |
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"] = "" | |||
113 | DEFAUT["memechelle"] = "" | 113 | DEFAUT["memechelle"] = "" |
114 | DEFAUT["positionlegende"] = "hg" | 114 | DEFAUT["positionlegende"] = "hg" |
115 | 115 | ||
116 | DEFAUT["prematurite"] = "0j" | ||
117 | DEFAUT["agecorrige"] = "oui" | ||
118 | |||
116 | 119 | ||
117 | # initialiser la config | 120 | # initialiser la config |
118 | def config_init(): | 121 | def 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> | ||
7 | Tout 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 : </label> <input type="date" name="naissance" value="{{ valform.naissance }}"> | 38 | <li><label>Date de naissance : </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 @@ | |||
3 | from configuration import CONFIG | 3 | from configuration import CONFIG |
4 | from gestionOMS import * | 4 | from gestionOMS import * |
5 | from gestion_unites import * | 5 | from gestion_unites import * |
6 | from gestion_donnees import calcule_max_graphique | 6 | from gestion_donnees import calcule_max_graphique, convertit_jours_vers_python |
7 | 7 | ||
8 | import matplotlib.pyplot as plt | 8 | import 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']) |