Les urgences au Québec

santé
opendata
données
visualisation
vega

#1

Depuis la fin de novembre 2017, je capture les rapports horaires et quotidiens de la situation des urgences du Québec.

Hier, j’ai commencé à extraire les données des PDF pour produire quelques graphiques et j’ai mis une démo en ligne.

En théorie, il s’agit de données ouvertes mais elles ne sont pas mises à jour très souvent en CSV alors voilà, je dois capturer et parser les PDF un à un.

Si un projet de ce genre vous intéresse, je suis très ouvert à collaborer. N’hésitez pas à me faire signe.

P.S.: oh, on dirait que j’ai gagné l’habilité de faire des tags!


#2

J’ai essayé de visionner mais j’ai des filtres assez agressifs pour le javascript.

Est-il possible d’éliminer les fonts/javascript de Google de ce genre de projets?

Le reste du javascript est-il 100% libre?


#3

Salut @MagicFab, merci pour l’intérêt.

Tu peux me décrire comment «ça ne marche pas» exactement? Si c’est seulement la police qui ne charge pas, c’est pas grave du tout. S’il y a autre chose, même avec tes filtres, j’aimerais bien les détails et voir comment je peux améliorer ça.

La police vient de Bulma Swatch (bulma, genre bootstrap/css). Ce n’est vraiment pas essentiel au fonctionnement. Mise à jour: je viens de changer de thème, cerulean au lieu de materia, comme ça la dépendance à Google pour la police n’est plus.

Côté JS, c’est pas mal MIT, BSD et Apache 2. Les graphiques utilisent vega et je suis en train d’ajouter PouchDB pour améliorer la performance avec du stockage locale au lieu de devoir dealer avec 30 MiB de JSON.

Enfin, comme c’est très préliminaire, j’ai pas de build à faire. Les ressources externes viennent en grande partie du CDN jsDeliv et j’utilise les hash Subresource Integrity (SRI) pour m’assurer que le JS demandé est bien le JS obtenu (et CSS). Oups, j’avais oublié quelques SRI, je viens juste de corriger sur le serveur. Éventuellement, je pourrais faire une aggrégation de ces JS et ils proviendront du serveur du site.

Mon code par défault c’est AGPLv3 mais encore là, c’est préliminaire et j’ai pas attaché la license aux dépots encore. Je dis dépots, parce qu’il y a la partie extraction des PDF et la partie visualisation web, qui sont deux dépots distincts.

Côté filtres, est-ce qu’ils tiennent compte du SRI? Pour jQuery (dont j’ai pas vraiment besoin, mais j’ai démarré le projet à partir de HTML5 Boilerplate. jQuery vient de la source.

Bref, tout ce que je fais depuis 2000 c’est avec du libre essentiellement et la tendance devrait se poursuivre :slight_smile: Par contre, à ce stade-ci (2-3 jours que j’ai commencé ça…) je me penche plus sur la performance (gestion de 80,000 enregistrements par mois) et sur les graphiques à présenter.


#4

Merci pour la réponse détaillée. Pour SRi aucune idée. Je crois que t’as enlevé tout ce qui avait rapport à Google?

Voici une capture d’écran de ce que ça donne sans modifier les filtres de uMatrix:

En désactivant les filtres pour les 3 sites tiers j’ai un affichage.

Pour les dépendances à des sites tiers, mon intérêt vient surtout d’évaluer la possibilité d’auto-hébergement pour tout site / outil que je croise.


#5

J’ai pas compris la légende non plus… pat (binned) vs. # of records?

À droite j’ai fini par comprendre qu’on pouvait cliquer sur 24 / 48 / pat, si c’était des bouttons p. être qu e ce serait + évident.


#6

C’est full work in progress, désolé.

CDN

Alors oui, éventuellement, on peut bien sûr utiliser les scripts js (et le css) localement, probablement bundlé avec webpack. Je crois tout de même que les CDN ont leur place sur le web, même privé.

Le SRI c’est un hash du fichier. Si un bit change dans la source chez le CDN et que le hash ne correspond plus, le navigateur sonne l’alerte. Comme ça tu peux valider les sources utilisées à partir d’un CDN une fois et avoir l’assurance qu’il n’y aura pas de changement. Ça prend bien sûr https itou pour pas que le hash dans le html soit modifié.

Graphiques, légendes

Je me concentre sur le fichier horaire pour le moment, parce que c’est le plus simple. Il comprends à chaque heure, pour plus de 100 établissements:

  1. Nombre de civières
  2. Nombre de patients sur civières
  3. Nombre de patients sur civières depuis plus de 24h
  4. Nombre de patients sur civières depuis plus de 48h

Franchement, je ne sais pas trop quoi représenter, quels graphiques seraient intéressants, etc. Je suis très très ouvert aux suggestions là dessus :slight_smile:

Hier, le graphique montrait l’information dans le temps, soit depuis fin nombre, ou sur les 1-2 semaines dernières. J’ai modifié ça pour montrer plutôt le nombre d’établissements qui avaient un certain pourcentages de patients, patients sur 24h et 48h. Autrement dit, je tatonne un peu.

Performance

Avec tout le data en main, changer de graphique peut parfois prendre 15-20 secondes et je ne trouve pas ça acceptable. J’en suis donc rendu à mettre le data en local storage (IndexDB avec PouchDB) en espérant que je puisse ainsi réduire le traitement d’un graphique à 1-2 secondes, max.


#7

c’est vraiment un beau projet, fascinant! continue :slight_smile:


#8

Merci! Le plus surprenant, (mais j’ai pas cherché tant que ça) c’est que ça n’existe pas déjà. Comme quand j’étais le seul avec des stats de Kazaa (tout le monde a sa machine à voyager dans le temps? :wink: et depuis quelques années, sur les perturbations des autobus à Montréal. Faudra d’ailleurs que je revise celui-là un moment donné.

Ce que le monde appelle AJAX, moi j’appelle ça un API


#9

un clasique. :slight_smile: les variations saisonnières sont vraiment étranges pour les autobus! c’est comme si les retards perturbations étaient plus fréquentes de l’été à l’automne!


#10

Bonjour, Savoir-Faire Linux (SFL) avait mis en place le site “quebec247” pour monitorer differences choses dont les urgences mais cela ne semble plus etre actif. Ils nous avaient presenté pendant un Meetup “Monitoring Montreal” dans les locaux de SFL.


J’avais été interpelé par la chose car je travaille dans les hôpitaux et ai vu passé quelques projets comme celui du temps d’attente du Children Hospital du MUHC: http://wog.muhc.mcgill.ca


#11

Bonjour @vince,

Je me souviens de ça

Ça n’a malheureusement pas été maintenu très longtemps et c’était pas mal ambitieux, de mesurer le Québec :wink:

Je suis très ouvert aux suggestions pour savoir comment mieux présenter l’information des rapports
horaires et quotidiens de la situation des urgences du Québec.

Merci pour le lien du MUHC, ça donne des idées.