Aller au contenu
Retour aux réalisations

Plateforme santé — réseau de laboratoires

Laboratoire SION · UNILAB

Une plateforme pour un réseau de huit laboratoires d'analyses médicales qui fonctionnaient chacun sur une copie isolée d'un logiciel historique, couvrant quatre systèmes distincts construits par un seul ingénieur : le site vitrine, une couche de synchronisation, un outil de pilotage commercial et comptable, et un service des opérations de laboratoire aujourd'hui en pilote sur un site.

Client
Laboratoires SION — Cameroun
Rôle
Responsable du département informatique — unique ingénieur de la plateforme
Période
Septembre 2025 – aujourd'hui
Statut
En production (déploiement site par site)
Page d'accueil du site vitrine Laboratoires SIONMission confidentielle

Le problème

Laboratoires SION exploite huit sites de laboratoire à Yaoundé, Douala et Bafoussam. Chaque site tournait sur sa propre copie d'un logiciel de laboratoire historique écrit en Django, adossé à une base SQLite locale, sans possibilité de modifier le logiciel et sans aucun lien entre les sites. La direction ne disposait d'aucune vue consolidée du chiffre d'affaires, des prescripteurs ou des patients à l'échelle du réseau : chaque chiffre devait être reconstitué à la main à partir d'exports.

Les huit bases avaient été dérivées d'un même tronc en novembre 2023 et continuaient d'attribuer leurs identifiants depuis le même compteur. En septembre 2026, 72 % des identifiants d'ordonnances, 69 % des identifiants de patients et 42 % des identifiants de prescripteurs entraient en collision d'un site à l'autre, ce qui rendait toute fusion naïve impossible. Les sauvegardes étaient manuelles, effectuées sur des postes Windows exposés aux coupures de courant, et personne ne gérait de façon centrale qui avait le droit de faire quoi.

La commande était donc double : donner à la direction une image fiable de l'activité dès maintenant, sans toucher au logiciel historique, puis le remplacer site par site sans jamais interrompre les guichets d'accueil, dont certains peuvent rester hors ligne jusqu'à 72 heures.

Le produit

Quatre systèmes, chacun répondant à une partie de cette commande — voir les onglets ci-dessous pour ce que fait réellement chacun d'eux et le problème précis qu'il a dû résoudre : le site vitrine (patients et prescripteurs), Bridge (la couche de synchronisation des données qui rend tout le reste possible), Pilot (l'outil de pilotage que la direction ouvre chaque jour) et Home (le service cible qui remplacera à terme le logiciel historique, aujourd'hui en pilote sur un site).

L'ensemble est conçu, codé, testé, déployé et exploité par un seul ingénieur, avec un document d'architecture qui cadre 13 décisions structurantes et 38 arbitrages documentés, et un guide de déploiement de 40 pages utilisé par les équipes du client.

Mon rôle

J'ai rejoint Laboratoires SION en septembre 2025 comme responsable du département informatique. Sur cette plateforme, je suis le seul ingénieur sur les quatre systèmes : j'ai rédigé le document d'architecture, puis conçu, codé, testé et déployé chaque composant, des agents de synchronisation Bun au poste Flutter, et écrit les procédures d'exploitation utilisées par les équipes du client.

Le travail s'organise en jalons datés : site vitrine en octobre 2025, l'outil de pilotage Pilot sur les bases historiques à partir de mars 2026, Bridge (synchronisation multi-sites) à partir de juin 2026, puis les services fédérés de Home, le poste de travail et le portail de livraison en septembre 2026. Les jalons suivants de l'architecture cible de Home (orchestration des tâches, notifications, passerelle temps réel) sont spécifiés mais pas encore développés.

Les systèmes

Site vitrine

En production

laboratoiresion.org — site vitrine bilingue

Le point d'entrée public unique du réseau, servant six publics différents depuis un même site Next.js bilingue (FR/EN) : un patient qui cherche un examen et son tarif, des prescripteurs, des assureurs, des partenaires de recherche et des candidats à l'embauche ont chacun leur section (Espace Patient, Espace Pro, Nos Agences, Recherche Scientifique, Blog), avec un catalogue d'examens public qui publie à la fois le tarif standard et le tarif assurance pour chaque analyse, de la biochimie sanguine courante aux marqueurs tumoraux.

  • Next.js
  • next-intl
  • Tailwind CSS
  • Vercel
Page d'accueil du site vitrine Laboratoires SION, version française
Accueil
Catalogue des examens avec tarifs sur le site vitrine Laboratoires SION
Catalogue des examens
Page de localisation des agences sur le site vitrine Laboratoires SION
Localisation des agences
Section recherche scientifique du site vitrine Laboratoires SION
Recherche scientifique
  1. Un seul site public, six visiteurs différents

    Le problème

    Le site d'un réseau de laboratoires doit servir un patient qui vérifie un tarif, un prescripteur qui cherche un laboratoire partenaire, un assureur qui vérifie des conditions de prise en charge et un chercheur qui cherche un site partenaire — depuis la même navigation, sans devenir ni une plaquette institutionnelle qui ignore les patients, ni une appli de prise de rendez-vous qui ignore tout le reste.

    Ce que j'ai construit

    Le site s'organise autour de parcours clairement identifiés pour chaque public plutôt qu'un menu générique unique, le catalogue d'examens — la page la plus utile pour un patient — restant à un clic de l'accueil dans les deux langues, avec des tarifs publiés ouvertement plutôt que cachés derrière un formulaire de contact.

Le résultat

Sites de laboratoire
8document d'architecture, 2 sept. 2026
Postes de travail
42document d'architecture, 2 sept. 2026
Ordonnances par jour
~90document d'architecture, 2 sept. 2026
Tests automatisés
2 000+suites Jest, Flutter et Bun
Rôles / permissions / portées
13 / 68 / 6
Lignes de code
~230 kTypeScript et Dart
Modèles de données
102Prisma : 43 référentiel, 41 activité, 18 identité
Durcissement du VPS
Lynis 82/100

au 25 septembre 2026

La direction dispose désormais d'une vue unique, consolidée et cloisonnée par rôle, du chiffre d'affaires, des prescripteurs et des patients sur les huit sites, calculée à partir de bases sauvegardées automatiquement et non plus à la main. Le site vitrine, Bridge et Pilot sont pleinement en production ; les services fédérés et le poste Flutter de Home sont installés sur un site pilote et se déploient site par site.

La plateforme est livrée avec un kit d'exploitation plutôt qu'avec une poignée de scripts : une image par service construite en intégration continue et épinglée par empreinte, des déploiements déclenchés par webhook, un retour arrière vers l'empreinte précédente, des sauvegardes hors site dont la restauration a été répétée, et un VPS durci jusqu'à un score Lynis de 82/100. L'ensemble du code, environ 230 000 lignes de TypeScript et de Dart, est couvert par plus de 2 000 tests automatisés et a été écrit par un seul développeur en quelque 437 commits.

Stack technique

Web
  • Next.js (App Router)
  • React 19
  • Tailwind CSS 4
  • next-auth v5
  • next-intl
Poste de travail
  • Flutter 3 / Dart
  • drift + sqlite3 (stockage hors ligne)
  • Riverpod
  • go_router
  • impression PDF
Services
  • NestJS 11
  • Apollo Federation 2 (supergraphe composé et vérifié en intégration continue)
  • Prisma 7 sur PostgreSQL
  • TypeORM (API de synchronisation)
  • Agents Bun compilés en binaires natifs
  • better-sqlite3
Données
  • PostgreSQL 16
  • SQLite + API Online Backup
  • Redis (révocation des jetons)
Exploitation
  • Docker Compose, une image par service, déployée par empreinte
  • Traefik avec ForwardAuth
  • GitHub Actions (CI, vérification du supergraphe, images, builds Flutter et Bun)
  • pgbackrest + restic, secrets chiffrés avec SOPS/age
  • Vercel (site vitrine)
Qualité
  • Jest (unitaires et bout en bout)
  • flutter test
  • bun test
  • husky + lint-staged + Prettier