📐 Méthodologie

Sources de données, algorithmes de détection, limites et niveau de confiance de BreathIQ.

🗂 1. Sources de données

SourceDonnéeFréquenceLicenceStatut
Santé Publique France (SPF)Incidence grippale ILI, COVID-19, MpoxHebdomadaireOpen data EtalabRÉEL
SUM'EAU / data.gouv.frSARS-CoV-2 dans les eaux usées (signal précoce)HebdomadaireOpen data EtalabRÉEL
ECDC opendataCas Mpox Union Européenne / EEEHebdomadaireCC BY 4.0RÉEL
WHO Disease Outbreak NewsAlertes épidémiques mondiales officiellesQuotidienPublicRÉEL
Open-MeteoQualité de l'air (PM2.5, PM10, AQI européen)HoraireCC BY 4.0RÉEL
WAQI (World Air Quality Index)AQI stations localesHoraireToken requisRÉEL
OpenStreetMap / Overpass APIPharmacies locales (géolocalisation)ContinueODbLRÉEL
Score régional /100Indice respiratoire compositeESTIMATIF

RÉEL = données issues de sources officielles vérifiables · ESTIMATIF = modèle interne pondéré, non validé cliniquement · DÉSACTIVÉ = source indisponible

📊 2. Algorithme de détection — Z-score (OMS 7-1-7)

Le score Z mesure l'écart d'une valeur hebdomadaire par rapport à la norme historique des 52 semaines précédentes.

Z = (valeur_semaine_N − μ₅₂) / σ₅₂

Seuils d'alerte — Algorithme OMS 7-1-7

NiveauSeuil Zp-valueSignification clinique
🟢 NORMALz < 1.5σp > 6.7%Signal dans la norme historique — aucune action requise
⚠️ JAUNEz ≥ 1.5σp < 6.7%Augmentation inhabituelle — surveiller, renforcer la déclaration
🟠 ORANGEz ≥ 2.0σp < 2.3%Signal épidémique probable — déclencher l'investigation
🔴 ROUGEz ≥ 3.0σp < 0.3%Épidémie confirmée — déclarer aux autorités, activer la réponse
⚠️ Limite importante : Le score Z n'est calculé que sur les maladies disposant d'une série temporelle SPF/ECDC de 52+ semaines (grippe, COVID-19, Mpox). Pour les pathogènes sans historique disponible (Ebola, Marburg, Nipah), les statuts affichés sont basés directement sur les alertes OMS.

🤖 3. Pipeline IA — Analyse automatique SPF

Fonctionnement

ÉtapeDescription
1. CollecteChaque lundi à 09h UTC, un script GitHub Actions récupère 5 pages de Santé Publique France
2. Compression localeLe texte HTML est nettoyé localement puis réduit aux titres, dates, régions, maladies, chiffres et signaux importants
3. Synthèse LLMSeuls les extraits compacts sont envoyés au modèle Groq/Llama-3.3-70b avec un budget strict de tokens
4. ValidationLe JSON est validé par format avant publication ; un fallback heuristique local est utilisé si l'IA échoue
5. PublicationLe fichier data/spf-live.json est commité sur GitHub → Netlify redéploie en < 2 min

Modèle utilisé

Llama-3.3-70b-versatile via Groq API. Le pipeline n'envoie jamais les bulletins complets groupés au modèle : il compresse d'abord localement les sources, limite la réponse et bascule vers une synthèse locale courte en cas d'erreur API.

⚠️ Limite : L'IA peut produire des erreurs d'extraction ou des hallucinations. Toute information critique doit être vérifiée sur santepubliquefrance.fr avant tout acte médical.

🧭 3b. Orientation clinique — non diagnostique

Le vérificateur de symptômes BreathIQ n'établit aucun diagnostic. Il classe les informations saisies vers un niveau de recours prudent : urgence, régulation médicale, médecin le jour même, pharmacie ou auto-surveillance.

SignalOrientation prioritaireRaison
Dyspnée au repos, cyanose, douleur thoracique, confusionUrgences / régulationSignes de gravité cardiorespiratoire ou neurologique
Fièvre + raideur de nuque, purpura, convulsionsUrgence immédiateMéningite ou sepsis à exclure rapidement
Fièvre + retour zone à risque fièvre hémorragiqueRégulation médicale avant déplacementÉviter l'exposition non contrôlée d'autres patients et soignants
Nourrisson, senior, grossesse, immunodépressionSeuil d'avis médical abaisséTerrain à risque de complication
Symptômes légers sans signe rougePharmacie ou auto-surveillanceOrientation prudente avec réévaluation si aggravation
Non-dispositif médical : l'algorithme est une aide d'information et d'orientation. Il ne remplace pas l'interrogatoire, l'examen clinique, la décision médicale ni les recommandations des autorités sanitaires.

📍 3c. Recherche de soins locaux

La recherche locale transmet uniquement la latitude, la longitude et le type de recours demandé. Les symptômes saisis ne sont pas envoyés aux API de cartographie.

CoucheUsageStatut
OpenStreetMap / OverpassPharmacies, hôpitaux, médecins, cliniques, dispensaires, centres de santéACTIF
Normalisation BreathIQFormat unique : type, distance, source, téléphone, site, horaires, confianceACTIF
Ranking de pertinenceDistance, type adapté, source, téléphone/horaires, fraîcheurACTIF
FINESS / RPPS / API FHIR Annuaire SantéSource officielle française à brancher via adaptateur serveurPRÉPARÉ
WHO GHFD / HDX / Google Places / HERE / MapboxExtensions internationales ou premiumPRÉPARÉ
Limite annuaires : les horaires, téléphones et capacités d'urgence peuvent être incomplets ou obsolètes. En cas de signe grave, appeler la régulation médicale ou les urgences avant tout déplacement.

🌍 4. Alertes OMS — Disease Outbreak News

Chaque jour à 07h UTC, un pipeline récupère le flux RSS officiel des Disease Outbreak News (DON) de l'OMS.

SourceURLFréquence
WHO DON RSSwho.int/feeds/entity/csr/don/en/rss.xmlQuotidien
WHO Emergencieswho.int/emergencies/disease-outbreak-newsQuotidien

Classification du niveau de risque automatique basée sur les mots-clés du titre (PHEIC, Ebola, outbreak…). Classification définitive = OMS uniquement.

🌬️ 5. Indice Respiratoire Global /100 — Méthodologie et limites

⚠️ Score ESTIMATIF : L'indice /100 est un score composite pondéré, non validé cliniquement. Il ne reflète pas une réalité épidémique régionale précise.

Pondération

Score = 0.40 × AQI + 0.30 × circulation_virale + 0.20 × pollen + 0.10 × météo
ComposantePoidsSourceStatut
Qualité air (AQI)40%Open-Meteo / WAQIRÉEL
Circulation virale30%SPF national (extrapolé région)ESTIMATIF
Indice pollinique20%Modèle saisonnier approximatifESTIMATIF
Météo10%Open-MeteoRÉEL

🔬 6. Checker de symptômes — Moteur diagnostique

⚠️ Non dispositif médical (Règlement UE 2017/745) : Le checker n'est pas homologué CE. Il ne pose aucun diagnostic. Il fournit une orientation indicative basée sur des référentiels publiés.

Algorithme

Moteur bayésien pondéré basé sur les critères de définition de cas ILI (OMS), CURB-65, FLU score et SARI. Chaque symptôme coché incrémente le score de probabilité des pathogènes correspondants selon des coefficients issus de la littérature.

Références

OMS Influenza Surveillance, ECDC Case Definitions, CDC Influenza, HCSP France, Critères SARI (Severe Acute Respiratory Illness).

⚠️ 7. Limites et incertitudes

📍
Granularité géographique limitée — Les données SPF sont disponibles au niveau national/régional, pas communal. Les scores locaux sont extrapolés.
⏱️
Délai de publication — Les bulletins SPF sont publiés avec un délai de 7 à 10 jours. Les données affichées ne sont donc pas en temps réel pour la France.
🤖
Extraction IA non infaillible — Le pipeline Llama/Groq peut commettre des erreurs d'interprétation. Une validation humaine est prévue pour les données critiques.
🌍
Couverture internationale inégale — La surveillance est plus complète pour la France et l'UE. Les données Afrique, Asie et Amériques reposent principalement sur les alertes OMS/ECDC.
📊
Score Z basé sur déclarations — Les déclarations locales sont stockées uniquement en localStorage. Le score Z local repose sur des données non agrégées au niveau national.
💊
Non substitut à l'expertise clinique — Aucune information de BreathIQ ne peut se substituer à l'examen clinique, l'anamnèse ou le jugement d'un professionnel de santé.

🔒 8. Données personnelles et RGPD

DonnéeStockageTransmissionDurée
Préférences (thème, langue)localStorage navigateurAucuneJusqu'à effacement
Profil soignant (pays, spécialité)localStorage navigateurAucuneJusqu'à effacement
Déclarations de caslocalStorage navigateurAucuneJusqu'à effacement
Position géographique (optionnel)Mémoire session uniquementAPI Open-Meteo/WAQI (coordonnées arrondies)Session uniquement

Aucune donnée personnelle n'est transmise à des serveurs BreathIQ. Les données de déclaration de cas ne quittent jamais votre navigateur.

📬 9. Contact et signalement

Pour signaler une erreur médicale, une donnée incorrecte ou une amélioration :

Dr Clément Médeau — Docteur en médecine, La Rochelle (France)

contact@breathiq.fr

BreathIQ est un projet indépendant open-source. Il n'est affilié à aucune institution publique.