<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>