<html> <head> <title>Phpcovid : Fichiers csv "évolution de la vaccination"</title> <meta name=author content="Bernard Chardonneau"> <meta name=copyleft content="Logiciel et données publiés dans le domaine public"> <meta name=robots content="noindex,follow"> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <link href="css/misenpage.css" rel="stylesheet" type="text/css"> <link href="css/styles.css" rel="stylesheet" type="text/css"> </head> <body> <div id="contenu"> <h1>Récupération et traitement des fichiers csv "évolution de la vaccination"</h1> Pour l'évolution de la vaccination, on fait appel à deux fichiers de référence. Par rapport aux fichiers indiquant l'état de la vaccination à ce jour, ils reprennent le même genre d'information (sauf la population estimée), mais la fournissent pour tous les jours depuis le 27 décembre 2020, jusqu'à la veille ou le jeudi précédent.<br> <br> Ça entraîne des fichiers de référence beaucoup plus gros, et qui s'allongent un peu chaque jour. Par exemple, le fichier de référence qui montre l'évolution de la vaccination par classe d'âge a le contenu suivant :<br> <br> <iframe src="vurl-ifr.php?fich=vacsi_a_fra" width="800" height="300"></iframe><br> <br> Pour connaître la date de dernière mise à jour de ce fichier, il faut au moins lire en entier la première classe d'âge. On peut aussi lire tout le fichier et récupérer la date de la dernière ligne. Mais récupérer la totalité d'un fichier de référence juste pour savoir s'il est utile de faire une mise à jour du fichier local est stupide !<br> <br> Donc, pour déterminer si un fichier local relatif à l'évolution de la vaccination est à jour (ou à peu près), on utilisera la même méthode que pour le fichier local <tt>vacsi-totgen.csv</tt><br> <br> Les fonctions <tt>testmaj_a_fra ()</tt> et <tt>testmaj_regdom ()</tt> permettent de mettre à jours les fichiers csv locaux :<br> <ul> <li><tt>vacsi-a-fra.csv</tt> pour la première,</li> <li><tt>vacsi-reg.csv</tt> et <tt>vacsi-dom.csv</tt> pour la suivante.</li> </ul> Ce fichiers locaux permettront de réaliser des graphiques d'évolution pour les différentes classes d'âge, les différentes régions, et les différents DOM.<br> <br> Toutefois, il est également intéressant de voir cette évolution sous la forme de tableaux. Mais dans ce cas, une ligne par jour donnerait des tables inutilement longues et précises. On préfère dans ce cas se limiter à l'affichage pour 3 jours de chaque mois.<br> <br> Des fichiers se limitant aux jours sélectionnés sont aussi générés. <br> <h2>Le fichier vacsi-a-fra et les fichiers dérivés</h2> Tout d'abord, on cherche à savoir s'il est utile de faire une mise à jour du fichier local <tt>vacsi-a-fra.csv</tt> (et des fichiers dérivés). Pour cela, on regarde si le fichier local <tt>vacsi-tot-a-fra.csv</tt> est plus récent que <tt>vacsi-a-fra.csv</tt>. On ne fera une mise à jour que dans ce cas.<br> !vsource exemples-code/testdate-a-fra.php <u>Remarque :</u> Dans le pire des cas, depuis la dernière mise à jour des données sur le site web de référence, ni l'utilisateur actuel, ni un utilisateur antérieur aura consulté l'état de la vaccination à ce jour avant de regarder l'évolution de la vaccination. Dans ce cas, le fichier <tt>vacsi-a-fra.csv</tt> et ses dérivés ne seront pas mis à jour à tort.<br> <br> Toutefois :<br> <ul> <li>c'est moins grave d'oublier les tous derniers jours que dans le cas de l'état de la vaccination "à ce jour",</li> <li>si on accède à la partie vaccination de ce site par le lien "Voir les statistiques de vaccination" de la page d'accueil, on arrive sur le tableau de l'état général de la vaccination à ce jour et le problème ne se pose pas.</li> </ul> Comme pour les fichiers de référence sur la vaccination à ce jour, les classes d'âge sont presque dans l'ordre mais pas tout à fait. La classe d'âge concernant le 5 à 9 ans est entre la classe d'âge des 40 à 49 ans et celle des 40 à 49 ans.<br> <br> Pour remettre ça dans l'ordre (même si ce n'est pas indispensable), on va recopier les lignes issues du fichier de référence dans 2 fichiers distincts, un pour les deux classes d'âge jusqu'à 9 ans, et l'autre pour toutes les classes d'âge à partir de 10 ans. Pour cela, on teste le premier chiffre de la classe d'âge.<br> !vsource exemples-code/memlig-a-fra.php Il faut à présent mettre le contenu du 2ème fichier dans le premier.<br> !vsource exemples-code/copsuite-a-fra.php Il reste les données concernant la vaccination tous âges confondus qu'on va rajouter à la fin du fichier en remplaçant la classe d'âge numérotée 0 par "ta".<br> !vsource exemples-code/memlig-a-gen.php Le remplissage du fichier <tt>vacsi-a-fra.csv</tt> est terminé.<br> <br> À présent, à partir de ce fichier, on va créer un fichier par classe d'âge et un fichier tous âges confondus représentant l'évolution de la vaccination tous les 10 jours environ.<br> <br> On choisira de mémoriser dans les nouveaux fichiers les données des 1<sup>er</sup>, 11<sup>ème</sup> et 21<sup>ème</sup> jours ou, si l'une d'elles venait à être absentes, celle du premier jour qui suit.<br> <br> L'état de la vaccination pour le jour le plus récent disponible sera aussi recopié dans le fichier s'il ne l'a pas déjà été en sélectionnant un jour sur 10.<br> <br> Pour ça, on lit ligne par ligne le fichier <tt>vacsi-a-fra.csv</tt> que l'on vient de créer. A chaque nouvelle ligne, on commence par tester la classe d'âge. Si ce n'est pas la même que pour la ligne précédente, on va créer un nouveau fichier.<br> !vsource exemples-code/changefic-cl-age.php Les fichiers créés ont comme nom <tt>vacsi-age-??.csv</tt> avec la classe d'âge à la place des <tt>???</tt> . Par exemple <tt>vacsi-age-24.csv</tt> pour la classe d'âge des 18 à 24 ans. Le fichiers de l'évolution tous âges confondus s'appelle <tt>vacsi-age-ta.csv</tt><br> <br> On va recopier certaines lignes du fichier <tt>vacsi-a-fra.csv</tt> dans le nouveau fichier. Pour qu'une ligne soit choisie, il faut que le chiffre des dizaines du jour du mois ait changé par rapport à la dernière ligne recopiée et que le chiffre des unités du jour du mois ne soit pas 0. On exclue aussi le 31<sup>ème</sup> jour lorsqu'il existe.<br> <br> Le passage d'une dizaine de jours à la suivante s'effectue simplement grâce à une addition modulo 3.<br> !vsource exemples-code/selectligne-cl-age.php Enfin, lorsque toutes les dates d'une classe d'âge ont été explorée, on recopie les données concernant le jour le plus récent si elles ne viennent pas de l'être.<br> !vsource exemples-code/copderdate-cl-age.php Cette dernière opération se fait :<br> <ul> <li>lorsqu'on a lu entièrement le fichier <tt>vacsi-a-fra.csv</tt> après avoir traité la catégorie "tous âges confondus",</li> <li>à chaque changement de classe d'âge. Dans ce cas, ces deux instruction sont mise à la place des <tt>(...)</tt> dans le code un peu plus haut.</li> </ul> <br> <h2>Les fichiers vacsi-reg , vacsi-dom et les fichiers dérivés</h2> Ces fichiers sont réalisés à partir d'un fichier de référence qui a la même structure que le fichier de référence d'évolution de la vaccination pas classe d'âge.<br> <br> En particulier l'indication du DOM ou de la région figure en début de ligne sous la forme d'un code de 2 chiffres :<br> <ul> <li>les DOM qui sont numérotés de 01 à 08,</li> <li>les régions de métropole ont des numéros compris entre 11 et 94.</li> </ul> Dans les fichiers <tt>vacsi-dom.csv</tt> et <tt>vacsi-reg.csv</tt> on va remplacer ces codes numériques par des codes de 3 lettres :<br> <ul> <li>les 3 première lettres du nom de la région ou du DOM dans la plupart des cas,</li> <li>la lettre s suivi des 2 premières lettres du 2<sup>ème</sup> mot si le nom du DOM commence par "Saint".</li> </ul> Pour transformer les codes numérique de DOM puis de région en un code de 3 lettres, on procède de manière similaire à ce qui a été fait pour les fichiers <tt>vacsi-tot-dom.csv</tt> et <tt>vacsi-tot-reg.csv</tt><br> <br> Un tableau est utilisé pour les DOM :<br> !vsource exemples-code/liste-codedom.php et une instruction <tt>switch ... case</tt> pour les codes de région.<br> <br> Une fois les fichiers <tt>vacsi-dom.csv</tt> et <tt>vacsi-reg.csv</tt> réalisés, on va créer des fichiers de nom <tt>vacsi-dom-???.csv</tt> et <tt>vacsi-reg-???.csv</tt> avec le code de région ou de DOM à la place des <tt>???</tt><br> <br> Pour cela, on va utiliser une fonction appelée 2 fois :<br> !vsource exemples-code/appel-synt-regdom.php Le fonctionnement de <tt>synthese_regdom (...)</tt> est similaire au traitement qui a été fait pour les classes d'âge. La seule différence est qu'on utilise des codes de 3 caractères au lieu de 2<br> <br> </div> <div id="menu"> XXXMENU </div> </body> </html>