Ce projet permet de
- détecter si une nouvelle version d'un référentiel est disponible
- télécharger les fichiers de données en lien avec la version
- transférer sur un répertoire d'un serveur FTP les fichiers téléchargés
- produire un fichier XML ATOM et de le transférer par FTP sur un serveur
- alerter par mail d'une nouvelle version
- CCAM : Classification Commune des Actes Médicaux
- UCD : médicaments codés en Unités Communes de Dispensation
- LPP : Liste des produits et prestations
- NABM : Table Nationale de Biologie
- CCAM : https://www.opikanoba.org/feeds/ameli_ccam.xml
- UCD : https://www.opikanoba.org/feeds/ameli_ucd.xml
- LPP : https://www.opikanoba.org/feeds/ameli_lpp.xml
- NABM : https://www.opikanoba.org/feeds/ameli_nabm.xml
Nomenclature | Résultat |
---|---|
CCAM | |
UCD | |
LPP | |
NABM |
La détection de la présence d'une nouvelle version se fait par évaluation prédictive. En fonction des réféntiels la méthode est différente :
- pour les LPP, le programme essaie d'accèder à la version suivante (par requete HTTP HEAD)
- pour la CCAM et les UCD, le programme télécharge la page web et l'analyse à la recherche de liens faisant référence à la nouvelle version
$ git clone https://github.com/flrt/ref-ameli.git
$ cd ref-ameli
$ pip3 install -r requirements.txt
$ git clone https://github.com/flrt/atom_to_rss2.git atomtorss2
$ # creation d'un répertoire myconf en copiant/adaptant le repertoire conf
$ # édition du fichier check_ref.sh pour positionner l'URL de base des flux (paramètre --feedbase)
$ sh check_all.sh
$ git clone https://github.com/flrt/ref-ameli.git
$ cd ref-ameli
$ git clone https://github.com/flrt/atom_to_rss2.git atomtorss2
$ # creation d'un répertoire myconf en copiant/adaptant le repertoire conf
$ # édition du fichier check_ref.sh pour positionner l'URL de base des flux (paramètre --feedbase)
$ docker build -t py_ameli .
$ sh start_container.sh
$ sh check_all_docker.sh
Le programme fonctionne avec python 3 et peut être executer soit dans un envionnement python 3 classique, soit dans 1 conteneur docker.
Le programme s'appuie sur un autre projet github pour la généreration des fichiers RSS2. Pour produire des fichiers RSS2, il faut cloner atom_to_rss2. Pour l'utiliser comme un module python, le nom est légèrement changé (nom sans les _):
$ git clone https://github.com/flrt/atom_to_rss2.git atomtorss2
Voir le fichier requirements.txt pour les librairies nécessaires.
$ git clone https://github.com/flrt/ref-ameli.git
$ cd ref-ameli
$ pip3 install -r requirements.txt
$ git clone https://github.com/flrt/atom_to_rss2.git atomtorss2
Le programme s'éxécute dans un conteneur docker qu'il faut construire.
$ git clone https://github.com/flrt/ref-ameli.git
$ cd ref-ameli
$ git clone https://github.com/flrt/atom_to_rss2.git atomtorss2
Pour construire le conteneur :
$ docker build -t py_ameli .
Pour le démarrer (avec un mapping des répertoires dans le conteneur). Le conteneur est nommé "ameli_checker"
$ sh start_container.sh
Dans un contexte docker,
$ docker exec ameli_checker sh ./check_ref.sh lpp
Pour lancer le programme python, soit le programme python est lancé au travers d'un prgramme shell
$ sh ./check_ref.sh lpp
soit directement
$ python3 check.py -h
usage: check.py [-h] [-a {feed,download}] [--feedbase FEEDBASE]
[--feedftp FEEDFTP] [--dataftp DATAFTP] [--mail MAIL]
[--backupdir BACKUPDIR] [--downdir DOWNDIR]
{ucd,lpp,ccam}
positional arguments:
{ucd,lpp,ccam} referentiel : ucd | lpp | ccam | nabm
optional arguments:
-h, --help show this help message and exit
-a {feed,download}, --action {feed,download}
actions disponibles : <feed> -> produit un fichiers de
syndication ATOM, <download> -> télécharge les
fichiers
--feedbase FEEDBASE URL de base des flux atom, utilisés dans le flux ATOM
pour s'autoréférencer (*)
--feedftp FEEDFTP configuration FTP pour upload du flux ATOM, format
JSON
--dataftp DATAFTP configuration FTP pour upload des données, format JSON
--mail MAIL configuration Mail pour envoyer une notification,
format JSON
--backupdir BACKUPDIR
Répertoire de sauvegarde des pages html
--downdir DOWNDIR Répertoire de téléchargements des fichiers de données
(*) Lien sur le lien autoréférencé dans ATOM :
https://www.feedvalidator.org/docs/warning/MissingAtomSelfLink.html
Exemple de ligne de commande pour vérifier si une nouvelle version LPP est disponible :
$ python3 check.py -a feed --feedftp conf/ftp-feed.json \
--feedbase https://www.opikanoba.org/feeds/ \
--dataftp conf/ftp-data.json \
--mail conf/mail.json \
lpp
- racine : fichiers python
- backup : répertoire contenant les fichiers html source téléchargés
- conf : répertoire contenant les fichiers de configuration
- configuration des flux ATOM
- template html pour les compléments d'informations
- configuration mail, ftp
- data : données persistantes permettant de connaître les versions actuelles et de générer les flux ATOM
- down : répertoire de téléchargement des données
- feeds : répertoire local contenant les fichiers XML ATOM
- tests : fichiers de tests unitaires
MIT pour le code
CC BY-SA 3.0 FR pour le contenu ATOM