Timo Remy - Développeur logiciel

← Retour à l'index#001

Film du produit
Vue période de trois mois simulés, 67 % du temps dans la cible, GMI 7,0 %, moyenne 154 mg/dL et variabilité 39 %, chacun noté selon les objectifs cliniques.
Le temps dans les cibles, noté selon les objectifs cliniques
Vue du 25 septembre, une courte hypo la nuit et une autre après le repas de midi, et un pic de 291 mg/dL au petit-déjeuner qui dure près de quatre heures.
N'importe quel jour, heure par heure
Profil glycémique ambulatoire sur 24 heures, une courbe médiane avec les bandes de percentiles 25 à 75 et 5 à 95.
La journée type, en profil AGP
Calendrier du temps dans la cible par jour sur trois mois avec les épisodes bas signalés, à côté de 117 épisodes et d'un histogramme de leur heure de début.
Chaque jour d'un coup d'œil, chaque hypo expliquée
Carte de chaleur du glucose médian par jour de la semaine et par heure, avec le temps dans la cible de chaque jour.
Les tendances de la semaine, heure par heure

Dexcom Archive

Intention

Une archive autonome de données de mesure continue du glucose, avec des rapports de niveau clinique calculés hors ligne dans le navigateur.

Pourquoi

Les plateformes des fabricants décident combien de temps les données sont gardées et où les rapports tournent. Je voulais des années de données dans des formats ouverts, et des rapports qui tournent partout, sans serveur.

Trois dépôts forment un seul produit, reliés par un seul contrat : le schéma SQLite.

  • Collecteur (Python, GitHub Actions). Une tâche quotidienne récupère chaque enregistrement via l’API Dexcom v3. Chaque passage relit les deux derniers jours, donc un passage manqué se rattrape tout seul. Les écritures sont idempotentes, le jeton OAuth, qui change à chaque passage, est stocké chiffré (AES-256-GCM), et un échec ou des données périmées ouvrent une issue d’eux-mêmes.
  • Archive (SQLite). Un fichier par année, en ajout seul, avec un schéma qui ne fait que grandir. SQLite, DuckDB ou Datasette le lisent tel quel.
  • Tableau de bord (Next.js, DuckDB-WASM). L’archive devient du Parquet et le SQL tourne dans un worker du navigateur : temps dans la cible, percentiles AGP, calendrier quotidien, épisodes, carte de chaleur jour par heure. Les graphiques sont en SVG écrit à la main, et chaque indicateur est vérifié contre une implémentation de référence en Python.

Extensible par construction : une nouvelle source de données, c’est un endpoint et une table côté collecteur. Le tableau de bord lit le schéma, jamais le collecteur, et des tests verrouillent le contrat des deux côtés.

Les données de santé restent privées : les dépôts sont privés et le tableau de bord n’écoute qu’en local. Le film et les écrans de cette page montrent six mois de données simulées de diabète de type 1, générées pour la démo.