PRECONIA · Dossier d'audit public

Conformité & traçabilité

Cette page documente, à destination des auditeurs, développeurs et institutions, comment PRECONIA prouve(1) la fidélité de sa base de données aux données officielles de l'Assurance maladie et du CERAH, et (2) la conformité de son algorithme et de son évaluateur de cumul à l'arrêté du 6 février 2025. Le principe directeur : ne jamais demander de nous croire sur parole— chaque affirmation est soit vérifiable automatiquement par un script reproductible, soit tracée vers la section exacte du texte réglementaire et le test qui la verrouille. L'intégralité du code, des données et de leur historique est publique : github.com/PRECONIA/preconia.

1. Vérification reproductible de la base de données

La base tarifaire officielle LPPTOTest publiée par la CNAMTS et téléchargeable par quiconque sur le site du codage de l'Assurance maladie. Le script scripts/verifier-lpptot.mjs du dépôt la télécharge, la parse et confronte chaque code LPP, tarif et libellé des fichiers data/*.jsonde PRECONIA à l'enregistrement officiel correspondant. Il s'exécute sans aucune dépendance, en une commande :

git clone https://github.com/PRECONIA/preconia.git && cd preconia
node scripts/verifier-lpptot.mjs

Résultat de la dernière campagne (9 juillet 2026, base LPPTOT892) :

1092
Contrôles de codes LPP
74
Tarifs confrontés
413
Libellés confrontés
0
Écarts

Les 1092 contrôles portent sur 420 codes LPP distincts : un même code officiel est re-vérifié dans chacun des fichiers qui le référence (code mère, catalogue de recherche, fiche de modèle de marque…), ce qui garantit sa cohérence d'un fichier à l'autre en plus de sa conformité à la base.

Empreinte SHA-256 de la base officielle vérifiée : b99c78f05d4a217c7dd930cc63561f9ab30f4aa996487b5b642c004fb31e4662. Quiconque télécharge la même version de la LPPTOT peut recalculer cette empreinte et ré-exécuter la vérification — c'est l'équivalent informatique d'une contre-expertise. Le script sort en erreur au moindre écart (code absent, radié ou tarif divergent) ; les libellés que nous reformulons pour la lisibilité (abréviations développées) sont signalés à part, en avertissements.

Le contrôle est bidirectionnel: outre la vérification de chaque code porté par PRECONIA, le script énumère l'intégralité des codes « VPH » de la base officielle (427recensés) et signale toute ligne en vigueur absente du catalogue — c'est la détection des nouveautés (nouvelle inscription, lignes RBEU à venir…). À la dernière campagne : 0 nouveauté non couverte ; 7 codes documentés hors périmètre (monte-escaliers transportables, anciens codes en nom de marque transitoires — liste justifiée dans le script).

2. Contrôle continu (intégration continue)

À chaque modification du code ou des données, et chaque semaine à date fixe, GitHub Actions — un tiers neutre — exécute publiquement : la vérification de typage, les tests unitaires des règles, la construction complète du site (qui échoue si une donnée viole un schéma ou une contrainte de cohérence), et le vérificateur LPPTOTci-dessus contre la base courante de la CNAMTS. Personne ne peut donc publier une version dont les données divergent de la base officielle sans que le contrôle passe au rouge — y compris si c'est la CNAMTS qui publie une nouvelle version modifiant un tarif : l'exécution hebdomadaire le détecte. L'historique de toutes les exécutions est consultable sur github.com/PRECONIA/preconia/actions.

3. Traçabilité des données

Toute la connaissance métier de PRECONIA vit dans des fichiers de données séparés du code (data/*.json), chacun portant sa source et sa date de mise à jour. Aucun coefficient, code ou tarif n'est écrit « en dur » dans l'interface.

FichierContenuSource officielleVérification
device-lpp.json22 codes mères d'achat neuf par type/classe, avec tarifsBase LPP (LPPTOT, CNAMTS)Vérificateur : existence, vigueur et tarif de chaque code
device-models.jsonCatalogue des modèles inscrits (396 codes marque/modèle)Liste CERAH des VPH inscrits + base LPPVérificateur : existence et vigueur ; marque retrouvée dans la désignation
lppr.json / lppr-adjonctions.json380 lignes du moteur de recherche (achat neuf, adjonctions, PAP)Base LPP (LPPTOT, CNAMTS)Vérificateur : existence, vigueur et libellé de chaque code
lppr-prestations.json32 forfaits LLD, LCD, SAV, MAD et livraison, avec tarifsBase LPP (LPPTOT, CNAMTS)Vérificateur : existence, vigueur, tarif et libellé
location-forfaits.jsonCorrespondance catégorie → forfaits de location (LCD ≤ 13 / 14–26 sem, option d'achat, MAD LCD, LLD par classe)Arrêté du 06/02/2025 (Titre I ch. 9, Titre IV 3.3) + base LPPVérificateur + contrôles de cohérence au build (lib/data.ts)
mad-forfaits.jsonNiveaux MAD1/MAD2 par catégorie de VPHArrêté du 06/02/2025 (Titre IV 5.1 et 5.2) + base LPPVérificateur + tests unitaires (madForfaitFor)
adjonctions.json / pap.json / adjonction-brands.jsonAdjonctions facturables du parcours, forfaits PAP A/B, variantes de marqueArrêté du 06/02/2025 (Titre IV §7) + base LPPVérificateur (codes, tarifs, sentinelle « sur devis ») + tests de compatibilité
devices.jsonCatégories, modes de prise en charge, paliers de prescripteur, DAPArrêté du 06/02/2025 (Titre I et IV)Tests unitaires (éligibilités, prescriberFor) + revue contre le texte
cumul.jsonMatrice des non-cumuls entre catégoriesArrêté du 06/02/2025 (Titre IV 4.1–4.2)Tests unitaires ligne à ligne (isCumulAllowed, cumulVerdict)
device-indications.jsonIndications officielles de prise en charge par catégorie et modeArrêté du 06/02/2025 (sections « indications »)Revue contre le texte (citations quasi littérales)
classes.json / besoins.jsonClasses d'usage A/B/C (code de la route) ; fiche d'évaluation des besoinsArrêté du 06/02/2025 (Titre IV §2) ; fiche d'évaluation 2026Tests unitaires (classeRoute) + revue

Prestations et forfaits à jour du 2026-07-02 ; règles de cumul à jour du 2026-07-01. Source générale : Nomenclature VPH 2025 (LPPR) + fiche d'évaluation des besoins 2026 + fiche de préconisation 2026.

4. Traçabilité des règles de l'algorithme et du cumul

Toute la logique réglementaire est isolée dans des fonctions pures (lib/rules.ts), sans état ni dépendance à l'interface, couvertes par des tests unitaires (tests/rules.test.ts) dont les assertions citent les sections de l'arrêté. La table ci-dessous fait correspondre chaque règle implémentée à sa référence dans l'arrêté du 6 février 2025, à son implémentation et à son contrôle. Un auditeur peut la parcourir ligne à ligne, texte en main.

Règle implémentéeRéférence (arrêté du 06/02/2025)ImplémentationContrôle
Catégories de VPH et acronymes (FMP … SCO)Titre IV, §1data/devices.jsonSchémas zod au build
Éligibilité à la LCD : FMP, FMPR, FRM, FRE uniquementTitre I ch. 9, 9.1devices.json (modes) + deviceAllowedForDuree()tests/rules.test.ts (temporalité) + E2E
Éligibilité à la LLD : FRMP, FRMV, FREP (A/B/C), FREV, POU_MRETitre IV, 3.3.1devices.json (modes) + deviceAllowedForDuree()tests/rules.test.ts + E2E
Forfait hebdomadaire LCD selon la durée (≤ 13 sem / 14–26 sem)Titre I, 9.3lcdForfaitFor() + location-forfaits.jsontests « forfaits de location » + vérificateur LPPTOT
Option d'achat LCD par catégorie, au terme des 26 semaines ; garantie 2 ansTitre I, 9.3 ; 6.1.1lcdOptionAchatFor() + note détaillée sur la ficheTests unitaires + E2E
Forfait trimestriel LLD par catégorie, FREP décliné par classe A/B/CTitre IV, 3.3.2lldForfaitFor()Tests unitaires + vérificateur
MAD1 / MAD2 réservés à l'achat et à la LLD, 3 niveaux selon la catégorieTitre IV, 5.1 et 5.2madForfaitFor() + mad-forfaits.jsonTests unitaires + vérificateur
MAD LCD dédiée, réservée FRM et FRE, une fois par épisode de locationTitre I, 9.8madLcdFor()Tests unitaires + E2E
Livraison sur prescription : 1 par VPH / 5 ans (3 ans avant 16 ans)Titre I, 9.9meta.json (livraison) + libellé sur la ficheVérificateur (code, tarif) + revue
Prescripteur à l'achat (qui signe l'ordonnance) : médecin/ergo (FMP, FMPR, FRM, BASE, POU_S) ; MPR/DU/formation ou ergo seul (FRMC, FRMA, FRMP) ; MPR/DU ou ergo en équipe pluridisciplinaire (FRMS, FRMV, FRE, FREP, FREV, POU_MRE, CYC, SCO)Titre IV, 3.1.4.1 et 3.1.4.2.4devices.json (presc) + prescriberFor()Tests dédiés (prescriberFor)
Évaluation des besoins et fiche de préconisation — professionnel distinct du prescripteur : équipe pluridisciplinaire (catégories complexes) ; prescripteur compétent (FRM, FRMC, FRMA, FRMP) ; non requise (FMP, FMPR, BASE, POU_S)Titre IV, 3.1.4.2.1devices.json (eval) + carte evaluatorsSchéma zod + cohérence eval/fiche au build
LCD manuelle prescriptible par médecin, ergothérapeute ou kinésithérapeuteTitre I, 9.5.aprescriberFor(pec = lcd)Test dédié + E2E
LCD d'un FRE : palier restreint, DAP, essai préalable et certificat de conduiteTitre I, 9.5.bprescriberFor() + devices.json (dap) + essaisNotes()Test dédié + E2E
Renouvellement à l'identique par médecin généraliste ou ergothérapeuteTitre IV, 3.1.6prescriberFor(mad = renouv_id)Test dédié + E2E
LCD : 26 forfaits hebdomadaires consécutifs maximum par année glissanteTitre I, 9.6Encarts du parcours + fiche PDFE2E (présence des encarts)
Délai de carence d'un an après le dernier forfait de location (dérogation : indication différente)Titre I, 9.6 ; Titre IV, 3.3.2 et 3.1Encarts CARENCE_LCD / CARENCE_LLD + fiche PDFE2E
Renouvellement à 5 ans (3 ans avant 16 ans) ; seuil réglementaire de 16 ansTitre IV, 3.1.6 et 3.3.5 ; Titre I, 9.9Étape âge du parcours + libellésE2E
Renouvellement anticipé dérogatoire (VPH irréparable, évolution rapide)Art. R. 165-24 CSS ; Titre IV, 3.1.6 et 3.3.5Encart de l'étape mise à dispositionE2E
En LCD, adjonctions et PAP inclus au forfait hebdomadaire — aucune facturation séparéeTitre IV, §7 ; Titre I, 9.3WalkerShell (billAdj) : codes/tarifs retirés, rubrique « à fournir » sur la ficheE2E (parcours LCD complet)
Supplément appui-tête non cumulable avec le forfait PAP ATitre IV, §7Exclusion automatique dans l'étape adjonctionsE2E
Forfait PAP A = membre supérieur et dossier ; PAP B = membre inférieur, hanches et siègeTitre IV, §7pap.json (régions → forfaits)Vérificateur (codes/tarifs) + revue contre le texte
Compatibilité des adjonctions par catégorie de VPHTitre IV, §7.1adjonctions.json (compat) + filterAdjonctions()Tests unitaires (invariant 3)
Adjonctions sur devis : DAP, mention manuscrite, essai réel, confirmation écrite du patientTitre IV, §7Notes dédiées (étape adjonctions + fiche PDF)Revue + E2E
Non-cumuls : deux non-modulaires ; deux manuels modulaires (exception sport FRMS) ; deux électriques modulaires ; cycle + manuel modulaire ; scooter + électrique ; AAP + électrique ou scooter ; sièges coquille. Le cumul manuel modulaire + électrique modulaire est autorisé.Tableau ministériel « Cumul 2025 » (handicap.gouv.fr) + Titre IV 4.2cumul.json + isCumulAllowed()Tests unitaires ligne à ligne
LCD exclusive de tout autre VPH loué ou vendu ; dérogation LCD d'un FRE (manuel possédé sans AAP, impossibilité transitoire)Titre IV, 4.1cumulVerdict() + verdict « dérogation » du module cumulTests dédiés + E2E
Essais achat/LLD : 4 modèles sur catalogue, comparatif d'au moins 2, essai réel 7 j (48 h min) — aucune facturation avant la finTitre IV, 3.1.4.2.3essaisNotes() (résultat + fiche PDF)E2E
Essai préalable en équipe pluridisciplinaire + certificat (FRE, scooters, AAP)Titre IV, 3.1.4.2.3 ; Titre I, 9.5.b ; §7.1.1.1essaisNotes() + question aptitude à la conduiteE2E
Pièces conditionnant le remboursement : évaluation, préconisation, certificat d'essais, devis, prescription définitiveTitre IV, 3.3.6Checklist de la fiche PDF (achat modulaire / LLD)E2E
Classes d'usage A/B/C (FRE, FREP) et A+/B/C (scooters) ; classes B et C soumises au code de la routeTitre IV, §2classes.json + classeRoute()Tests unitaires (invariant 4)
Poussettes réservées aux enfants de moins de 16 ansTitre IV, 3.1.3.8, 3.1.3.9 et 3.3.3.5Filtre d'âge du parcoursE2E
Scooters (SCO) : achat uniquement, classes d'usage A+/B/C, aptitude à la conduite condition de l'indication (pas d'exception accompagnant), PAP non applicables, éclairage code de la route selon la classe, mention pathologie évolutiveTitre IV, 2.4.2.4, 3.1.3.5, 3.1.5 et 4.2classes-sco.json + parcours besoins/adjonctions dédiéTests dédiés (SCO) + E2E
Dispositions transitoires : anciens VPH délivrables jusqu'au 01/12/2026 ; anciens codes de location ≥ 52 sem facturables jusqu'au 30/11/2027Arrêté du 06/02/2025, art. 2 et 3Encart « période transitoire » de l'accueilRevue

« E2E » : scénarios de bout en bout rejoués dans un navigateur contre la version de production avant chaque mise en ligne (parcours complets LCD, LLD, achat, cumuls). Les contrôles de cohérence au build (lib/data.ts) refusent par construction toute donnée incohérente : catégorie sans forfait, code de forfait absent des prestations, niveau MAD orphelin, etc.

5. Limites et statut

Ces preuves établissent la fidélité aux sources officielles à une date donnéeet la traçabilité des règles vers le texte — elles ne confèrent aucune valeur réglementaire à l'outil. PRECONIA est une aide à la décision non opposable: seuls font foi l'arrêté du 6 février 2025, la base LPP de la CNAMTS et la liste CERAH des VPH inscrits, accessibles depuis l'encart « Liens officiels » de l'accueil. Aide à la décision non opposable. Ne remplace ni l'essai réel ni l'évaluation ergothérapique. Codes, paliers de prescripteur, classes et cumuls à confirmer dans la nomenclature et les fiches en vigueur.

Contact : Dr Thomas BREDEL — Médecine Physique et de Réadaptation, Rouen. ← Retour à PRECONIA