Demande d'analyse
Le dossier est ouvert, rien n'est encore prélevé.
SmartLabo est le logiciel de gestion complet d'un laboratoire d'analyses médicales : rendez-vous, dossiers patients, prélèvements, paillasse, double validation, caisse, comptabilité, partenaires et assurances. Un seul circuit, huit étapes, aucune ressaisie.
Le même socle fait tourner des laboratoires au Canada, en France, au Sénégal et en Côte d'Ivoire. Des tailles, des organisations et des réglementations différentes — un seul circuit, de la prescription au compte rendu signé.
L'écran de suivi est ouvert à tous les postes. Il lit l'avancement sur les états qui existent déjà — statut de l'analyse, statut du tube, position dans les files de validation. Aucune colonne d'avancement à maintenir : deux vérités finiraient par diverger, et c'est celle de l'écran que tout le monde croirait.
Le dossier est ouvert, rien n'est encore prélevé.
Le tube est prélevé et encore sur place.
Le lot est expédié, le laboratoire ne l'a pas pointé.
Le tube a été trouvé dans le colis.
Un résultat est en cours de saisie sur la paillasse.
Le technicien a confirmé sa ligne.
Le prélèvement est sur le bureau du biologiste.
Signature faite, compte rendu édité.
Un tube manquant ou une analyse rejetée s'arrête à l'une des huit étapes — et c'est cette étape qui intéresse. « Tube manquant » dit qu'il faut rappeler le patient ; « rejetée » serait vrai et inutile.
Déplier une ligne ouvre ses huit étapes avec les dates réellement horodatées. Les étapes franchies sans marqueur propre le disent, plutôt que d'emprunter la date de leur voisine.
L'écran montre une étape, des dates et une ancienneté. Il ne donne à personne plus que ce que son propre poste lui montre déjà.
Chaque poste a son écran, et les écrans partagent les mêmes données. Ce qu'un préleveur enregistre, le technicien le voit ; ce que le biologiste signe, la caisse le facture ; ce que le caissier encaisse, la comptabilité le reçoit.
Le laboratoire décrit sa semaine une fois — heures d'ouverture, durée d'un créneau, nombre de patients à la fois — et le guichet place les patients dedans. Un rendez-vous n'ouvre aucun dossier et n'encaisse rien : c'est une place tenue dans la journée. Le dossier s'ouvre au comptoir, le jour venu, et solde le rendez-vous du même geste.
Le patient est enregistré une fois. Le dossier porte ses analyses, le prélèvement porte ses tubes, le lot porte les tubes expédiés. À la réception, le laboratoire pointe le colis en une fois : les tubes non signalés sont déclarés présents, les manquants sont marqués et les analyses qu'ils portaient sont rejetées avec un motif nommé.
Une analyse n'atteint l'état validée que par la validation biologique, elle-même conditionnée à la validation technique. Il n'existe aucun endroit dans l'application où l'on choisit un statut cible : le rejet et le renvoi au technicien sont des actions explicites, toutes motivées.
Le circuit a cinq étapes et chacune est tenue par un poste différent : le caissier encaisse, ferme sa journée, verse ; le comptable accepte en saisissant ce qu'il a réellement compté, ou refuse avec un motif ; le caissier corrige, pièces justificatives à l'appui, et redépose.
Une analyse porte une cotation en B ou un prix fixe — jamais les deux, jamais aucun. La règle est tenue par le domaine et doublée d'une contrainte de table. Le prix d'une analyse cotée est nombre de B × valeur du B : changer la valeur du B reprice tout le catalogue d'un coup.
L'interface s'adapte à toutes les tailles d'écran. Rien à télécharger, rien à installer : c'est la même application, ouverte dans le navigateur du téléphone, avec le même compte et les mêmes autorisations. Un préleveur en tournée, un biologiste appelé le week-end et un patient qui vient chercher son résultat n'ont pas besoin du même écran — mais ils ont besoin du même logiciel.
Pas d'application à télécharger, pas de magasin, pas de mise à jour à pousser sur les téléphones : l'adresse du laboratoire s'ouvre dans le navigateur, et la version est celle du serveur. Un poste ne peut pas rester en retard d'une version.
Un téléphone n'ouvre pas plus de portes qu'un poste fixe. C'est le même compte, le même rôle et les mêmes refus côté serveur : un préleveur qui se connecte de chez lui voit sa tournée, et rien d'autre.
Les écrans de saisie dense — une feuille de paillasse, un catalogue — restent conçus pour un clavier et un grand écran. Les rétrécir donnerait une saisie de résultats au pouce, sur un téléphone, dans un laboratoire. Nous nous y sommes refusés.
Deux circuits, deux logiques. Un partenaire ouvre ses propres dossiers, prélève lui-même et doit le prix entier ; un assureur n'envoie personne mais se porte garant d'un patient venu de lui-même, et doit un pourcentage de ce qu'il a été facturé.
Un espace dédié où le partenaire gère ses patients, ses dossiers, ses prélèvements, son colis en cours, son suivi, ses comptes rendus signés et ses factures. Il s'arrête à l'expédition du colis : au-delà, c'est le circuit du laboratoire.
Le taux se configure en un champ sur la fiche de l'assureur et s'applique à tous ses assurés ; un rattachement peut le surcharger — une convention couvre souvent l'agent à un taux et ses ayants droit à un autre.
Un écran qui affiche seulement « suspendu » laisse celui qui décroche le téléphone sans rien à dire. L'écran des créances répond aux trois questions qu'on pose réellement : depuis combien de jours le tiers est en retard, le jour où la porte s'est fermée, et le montant à régler pour la rouvrir — qui n'est pas le total dû.
Facture patient, relevé partenaire, facture assureur et compte rendu sortent du même générateur, bâtis depuis la requête que l'écran lit déjà. Le document et l'écran ne peuvent pas annoncer deux montants différents.
Vous avez déjà un en-tête sur votre papier ? Téléversez-le scanné : comptes rendus et factures l'impriment sur toute la largeur, en haut de chaque page, et ne composent plus ni le nom, ni le logo, ni la mention d'accréditation — ils sont déjà dans l'image.
Le reçu porte un code. Le patient le saisit sur votre site avec sa date de naissance, et ouvre ses comptes rendus signés — sans compte à créer, sans mot de passe à réinitialiser, sans appel au standard pour savoir si c'est prêt.
Un patient demande un prix au guichet : le devis chiffre la demande sans ouvrir de dossier, et se convertit en dossier réel d'un clic s'il revient. Rien à ressaisir, rien à retrouver.
Le biologiste peut demander une lecture des résultats depuis l'écran de signature. Ce qui quitte le laboratoire : la désignation de l'analyse, sa valeur, son unité, sa plage de référence — plus une tranche d'âge et un sexe si vous l'autorisez. Ni nom, ni numéro de dossier, ni identifiant interne.
Avant de piquer, une relecture automatique compare l'ordonnance scannée aux analyses enregistrées et rend un verdict — conforme, écart, illisible — plus quelques conseils pour ce prélèvement précis : jeûne, ordre des tubes, hémoculture avant antibiotique.
Le classique — surfaces pleines, contrastes francs — est le plus lisible pour lire un tableau pendant huit heures. Le verre — panneaux translucides, fond animé — est plus agréable à regarder. Clair et sombre sont un axe indépendant : changer de design ne retire jamais l'autre choix.
Les autorisations ne sont pas une liste de routes tenue à la main. La politique par défaut de l'API est fermée : un écran qui veut servir un profil doit le déclarer.
Un contrôle placé dans un formulaire se contourne le jour où quelqu'un ajoute un second formulaire. Dans SmartLabo, les invariants appartiennent aux entités du domaine et, quand c'est possible, sont doublés d'une contrainte en base. Conséquence directe : aucune fonctionnalité future ne peut contourner une règle, même par erreur.
Une clôture de caisse, un versement reçu, une ligne d'historique de résultat : toute tentative de modification ou de suppression est rejetée à l'enregistrement, pas seulement masquée dans l'interface.
Mots de passe hachés avec BCrypt, jeton signé à durée de vie configurable, verrouillage du compte après cinq tentatives échouées, limitation de débit sur les écrans de connexion. Aucun secret n'est écrit dans le code.
L'identité du partenaire n'est jamais un paramètre : elle est lue dans son jeton et poussée comme filtre. Une requête forgée qui nomme un dossier étranger reçoit « introuvable », pas « interdit » — distinguer les deux confirmerait son existence.
Les numéros de facture et de dossier viennent de séquences PostgreSQL, pas d'un comptage. Deux caissiers qui valident au même instant ne peuvent plus obtenir le même numéro.
Factures, paiements, analyses et prélèvements portent un jeton de concurrence. Deux modifications simultanées ne s'écrasent pas : la seconde est refusée avec une invitation à recharger.
Livré en conteneurs Docker : une commande installe l'API, la base PostgreSQL et l'interface. Sur le serveur du laboratoire ou sur un hébergement de votre choix — vos données restent là où vous décidez.
API en .NET, base PostgreSQL, interface React — des technologies courantes, que votre informaticien connaît déjà.
Chiffres d'une reprise de données réelle, depuis l'export d'un laboratoire en activité.
Une démonstration d'une heure, avec votre catalogue et un échantillon de vos dossiers. Vous verrez le circuit réel de votre laboratoire dans l'application, pas une présentation générique.