Info-Medoc.fr, Présentation

Posted on dim. 02 juillet 2017 in Annonces

La semaine dernière, j'ai lancé un nouveau site : info-medoc.fr. C'est parti d'une idée toute bête : je voulais savoir si mes médicaments étaient remboursables par la sécu et si oui, dans quelle proportion. Problème, je ne trouvais l'information nul part.

Open-Data

Après moult recherches, je suis tombé sur http://medicaments.gouv.fr/, qui mettait à disposition la base de donnée des médicaments à la vente en France via http://base-donnees-publique.medicaments.gouv.fr/.

Avant cela, petit point "OpenData" :

L'open data ou donnée ouverte est une donnée numérique dont l'accès et l'usage sont laissés libres aux usagers. Elle peut être d'origine publique ou privée, produite notamment par une collectivité, un service public (éventuellement délégué) ou une entreprise. Elle est diffusée de manière structurée selon une méthode et une licence ouverte garantissant son libre accès et sa réutilisation par tous, sans restriction technique, juridique ou financière.

Ni une, ni deux, je vérifie les conditions qui sont très permissives. Merci l'état Français !
Le contenu des fichiers est très bien expliqué avec un beau fichier PDF. Merci encore une fois aux personnes qui s'en sont chargé, ce n'était pas couru d'avance.

Importation de la base de donnée

Commençons le code pour importer tout ça dans une base de donnée. Vue la taille des fichiers, une base SQLite ira très bien.

Commençons par décrire notre base de donnée. D'après le document descriptif nous pouvons créer la première table ainsi :

CREATE TABLE CIS_bdpm (cis INT,
    denomination TEXT,
    forme TEXT,
    administration TEXT,
    status_amm TEXT,
    type_amm TEXT,
    etat_com TEXT,
    date_amm DATE,
    statut_bdm TEXT,
    autorisation_euro TEXT,
    titulaire TEXT,
    surveillance BOOL
    );

Je ne vais pas détailler les autres tables, tout est disponible sur ce gist github.

Mettons tout ça dans du code python :

import sqlite3
import urllib.request

conn = sqlite3.connect('medocs_db.sqlite3')
cur = conn.cursor()

# Téléchargement du fichier
response = urllib.request.urlopen(db['url'])
data = response.read().decode('latin_1')

# Creation la DB
cur.execute(db['sql_create'])

for line in data.split('\n'):
    # Insertion ligne par ligne dans la DB
    cur.execute(db['sql_insert'], elements)

conn.commit()
conn.close()

Avec ça, on a la base. Il manque un peu d'enrobage et on est bon.
Pour le code complet de l'importation, ça se passe aussi sur github (il faut combiner avec le fichier de settings).

Nous disposons maintenant d'un magnifique fichier de base de donnée SQLite avec toutes les informations disponibles en opendata sur la base de donnée publique des médicaments.

Bénéfices

C'est bien, d'avoir cette base de donnée. Mais qu'en faire ?
On peut en extraire pas mal de données. Celles qui viennent le plus à l'esprit sont de savoir si un médicament est remboursable par la sécu.
Heureusement ! C'était quand même le point de départ de ce projet. Et aussi si le médicament est disponible en automédication ou uniquement sur prescription.

En gros, un petit site web en a émergé : info-medoc.fr.

On peut aller plus loin en extrayant quelques stats. En voici quelques exemples :

  • il y a 620 laboratoires qui vendent 14583 médicaments en France.
  • moins d'un quart des médicaments qui ne nécessitent pas de prescription.
  • environ la moitié des médicaments ne sont plus remboursables par la sécu.