Plateforme hybride Blockchain pour la santé numérique :
Dossiers Médicaux Sécurisés • Identité Auto-Souveraine • Micro-Assurance DeFi • IA Fédérée
Pourquoi ce projet ? Les 3 axes du cours (Santé, Sécurité, DeFi) réunis en une seule plateforme cohérente.
Concevoir et déployer un MVP fonctionnel combinant blockchain permissionnée (Fabric) et publique (Ethereum/Polygon) pour la gestion sécurisée et autonome de la santé numérique.
1. Réseau Fabric 3 orgs opérationnel
2. SSI basé DID W3C
3. Smart contract audité
4. Portail web complet
5. Démo bout-en-bout
Patients : contrôle et portabilité des données
Médecins : accès rapide au dossier complet
Assureurs : réduction fraude et coûts
Pharmacies : lutte contre les contrefaçons
Architecture hybride combinant blockchain permissionnée (données sensibles), blockchain publique (paiements), IoT, identité décentralisée et IA fédérée.
Ce que les utilisateurs (patient, médecin, pharmacien, assureur) peuvent faire concrètement avec MediChain+.
Le patient visualise toute son historique (consultations, analyses, ordonnances, imagerie) depuis un portail unique, indépendamment de l'hôpital ou du laboratoire.
Accorder l'accès à un médecin pour 24h, ou uniquement aux analyses sanguines. Révocable instantanément. Historique des accès consultable on-chain.
Scan du QR-code d'une boîte de médicament → vérification instantanée de toute la chaîne : usine → distributeur → grossiste → pharmacie. Anti-contrefaçon.
Le smart contract déclenche le paiement en stablecoin (USDC) sous 2 minutes après validation du diagnostic par l'oracle médical. Fin des délais de 30 jours.
Alerte automatique au médecin si un seuil vital est dépassé (ex : glycémie > 2 g/L). Données signées cryptographiquement, non falsifiables.
Plusieurs hôpitaux entraînent ensemble un modèle de détection précoce (cancer, diabète) sans jamais partager leurs données brutes — seuls les gradients agrégés.
Prescription signée cryptographiquement par le médecin, transmise à la pharmacie. Impossible à falsifier ou dupliquer. Validité et dosage vérifiables.
Smart contract détecte les anomalies : multiples réclamations identiques, prescriptions duplicatas, incohérences géographiques. Alerte automatique.
Voyage à l'étranger ? Le médecin local accède aux données (avec consentement du patient) grâce aux standards DID et FHIR interopérables.
Technologies open-source éprouvées, alignées sur les standards industriels et le programme du cours.
Découpage méthodique en 5 phases sur 12 semaines, avec livrables clairs à chaque étape.
Analyse des besoins, benchmark, architecture.
Mise en place du réseau permissionné.
Développement de la couche financière.
Portails utilisateurs et orchestration.
Validation et présentation finale.
Objectifs chiffrés mesurables pour évaluer la réussite du projet.
Parcours complet de Mme Salma, 58 ans, diabétique de type 2 — du capteur IoT au remboursement automatique.
Le glucomètre connecté de Salma enregistre 2.8 g/L à 08h12. La donnée est signée cryptographiquement (ECDSA secp256k1) et envoyée via MQTT/TLS.
Le système vérifie le DID de Salma (did:indy:xyz123) et son Verifiable Credential "patient diabétique de type 2" émis par son médecin traitant.
La mesure est hashée et enregistrée dans Hyperledger Fabric (canal "patient-salma"). Son médecin traitant reçoit une notification avec accès temporaire 24h.
Consultation vidéo à 08h45, prescription d'insuline rapide. L'ordonnance est signée on-chain avec la clé du médecin et transmise à la pharmacie partenaire.
Salma scanne le QR-code de sa boîte d'insuline → vérification complète : Sanofi (usine) → Distribeuro (distributeur) → Pharmacie Al-Andalous. Authentique.
Le smart contract détecte la consultation validée + l'achat remboursable. 85 % du montant (42.50 USDC) est transféré au wallet de Salma en 90 secondes. Fin de l'attente de 30 jours.
Contrat Solidity de micro-assurance paramétrique — version simplifiée mais fonctionnelle.
// SPDX-License-Identifier: MIT pragma solidity ^0.8.20; import "@openzeppelin/contracts/token/ERC20/IERC20.sol"; import "@openzeppelin/contracts/access/AccessControl.sol"; import "@openzeppelin/contracts/security/ReentrancyGuard.sol"; /** * @title MediChainInsurance * @dev Micro-assurance paramétrique : remboursement automatique * après validation du diagnostic par l'oracle médical (pont Fabric). */ contract MediChainInsurance is AccessControl, ReentrancyGuard { bytes32 public constant ORACLE_ROLE = keccak256("ORACLE_ROLE"); bytes32 public constant INSURER_ROLE = keccak256("INSURER_ROLE"); IERC20 public immutable stablecoin; // USDC uint256 public coveragePercent = 85; // 85% du montant struct Claim { address patient; bytes32 diagnosisHash; // hash du DME côté Fabric uint256 amount; // en USDC (6 décimales) uint256 timestamp; bool validated; bool paid; } mapping(bytes32 => Claim) public claims; event ClaimSubmitted(bytes32 indexed id, address patient, uint256 amount); event ClaimValidated(bytes32 indexed id); event ClaimPaid(bytes32 indexed id, address patient, uint256 amount); constructor(address _stablecoin, address oracle, address insurer) { stablecoin = IERC20(_stablecoin); _grantRole(DEFAULT_ADMIN_ROLE, msg.sender); _grantRole(ORACLE_ROLE, oracle); _grantRole(INSURER_ROLE, insurer); } /// @notice Patient (ou assureur) soumet une réclamation function submitClaim( bytes32 id, address patient, bytes32 diagHash, uint256 amount ) external onlyRole(INSURER_ROLE) { require(claims[id].patient == address(0), "Claim already exists"); claims[id] = Claim(patient, diagHash, amount, block.timestamp, false, false); emit ClaimSubmitted(id, patient, amount); } /// @notice L'oracle valide le diagnostic depuis le bridge Fabric function validateAndPay(bytes32 id, bytes32 proofHash) external onlyRole(ORACLE_ROLE) nonReentrant { Claim storage c = claims[id]; require(c.patient != address(0), "Unknown claim"); require(!c.paid, "Already paid"); require(c.diagnosisHash == proofHash, "Hash mismatch"); c.validated = true; c.paid = true; uint256 payout = (c.amount * coveragePercent) / 100; require(stablecoin.transfer(c.patient, payout), "Transfer failed"); emit ClaimValidated(id); emit ClaimPaid(id, c.patient, payout); } }
Flux d'interactions entre les acteurs et les couches — du capteur IoT au remboursement.
MediChain+ face aux principales solutions blockchain santé du marché.
| Critère | MedRec (MIT) | Medicalchain | Guardtime | MediChain+ (nous) |
|---|---|---|---|---|
| Type blockchain | Ethereum | Hyperledger | KSI propriétaire | Hybride (Fabric + Polygon) |
| Identité SSI | Non | Partiel | Non | Oui (DID W3C) |
| DeFi / Paiements auto | Non | Token MTN | Non | Smart contract USDC |
| Intégration IoT | Non | Limitée | Audit logs | Native (MQTT+signature) |
| IA Fédérée | Non | Non | Non | TF Federated |
| Traçabilité médicaments | Non | Non | Non | QR + chaîne complète |
| Open-source | Oui | Partiel | Non | 100% open-source |
| Conformité RGPD | Moyenne | Oui | Oui | Native (off-chain) |
Identification proactive des risques techniques, juridiques et opérationnels, avec stratégies d'atténuation.
| Risque | Probabilité | Impact | Stratégie d'atténuation |
|---|---|---|---|
| 🐛 Bug critique dans smart contract | Moyenne | Très élevé | Audit Slither + MythX + tests Hardhat coverage > 90 % + revue par pair |
| 🔐 Compromission clé privée | Moyenne | Élevé | Hardware wallet + multi-sig pour admin + rotation régulière |
| ⚖️ Non-conformité RGPD | Moyenne | Élevé | Données sensibles off-chain (IPFS chiffré), seuls les hashs on-chain, droit à l'oubli respecté |
| ⚡ Saturation réseau blockchain | Faible | Moyen | Utilisation Polygon (bas gas), batching des transactions, monitoring Prometheus |
| 🔗 Oracle compromis | Faible | Élevé | Oracle décentralisé Chainlink + seuil multi-source + timeout fallback |
| 📡 Capteur IoT falsifié | Moyenne | Moyen | Secure Element matériel (TPM) + attestation à distance + cross-check historique |
| 📅 Dépassement délai projet | Moyenne | Moyen | Méthodologie Agile/Scrum, sprints de 2 semaines, MVP incrémental, buffer de 15 % |
| 🎓 Manque d'expertise équipe | Moyenne | Moyen | Formations ciblées (Udemy, Alchemy University), tutorat du prof, communauté Discord Hyperledger |
Budget pour un projet étudiant avec infrastructure minimaliste (testnet uniquement, pas de frais gas mainnet).
| Poste | Description | Coût (USD) | Remarques |
|---|---|---|---|
| Serveurs Cloud | AWS / DigitalOcean — 3 VM Fabric + 1 API Gateway (3 mois) | 180 | Crédits étudiants AWS Educate possibles (gratuit) |
| Nom de domaine + SSL | medichain-plus.tn + Let's Encrypt | 15 | SSL gratuit |
| Frais Gas Testnet | Polygon Mumbai — MATIC faucet | 0 | Gratuit via faucets |
| Audit sécurité | Slither (gratuit) + MythX (free tier) | 0 | Outils open-source |
| Licences logicielles | 100% open-source | 0 | Aucune licence payante |
| Capteur IoT (démo) | Raspberry Pi 4 + capteur glucose simulé | 85 | 1 unité suffit pour la démo |
| Impression rapport | Rapport 40 pages × 3 exemplaires reliés | 30 | — |
| TOTAL | Budget total projet étudiant | ≈ 310 USD | Réductible à ~115 USD avec crédits cloud |
Organisation suggérée pour une équipe de 4 étudiants — chacun responsable d'un module mais avec rotation sur les revues de code.
Responsabilités : Chaincodes Go, configuration réseau multi-organisations, gestion identités MSP, canaux privés, intégration IPFS.
Responsabilités : Solidity, tests Hardhat, déploiement Polygon, intégration Chainlink, OpenZeppelin, pont Fabric→Ethereum.
Responsabilités : React + TypeScript, Ethers.js, MetaMask, portails patient/médecin/pharmacien/assureur, UX, responsive design.
Responsabilités : Audit Slither/MythX, Docker + Kubernetes, CI/CD GitHub Actions, monitoring Prometheus, documentation technique.
État de l'art, architecture détaillée, choix technologiques, résultats des tests, perspectives d'évolution et bibliographie complète.
Dépôt organisé avec README, docker-compose.yml, scripts de déploiement, guide d'installation, licence MIT.
Démonstration du scénario complet de Salma — du capteur IoT au remboursement automatique, narration en français.
Slides 20 minutes + séance Q&R avec démo en direct sur testnet Polygon Mumbai et réseau Fabric local.
Articles issus de revues indexées (Nature, Elsevier, IEEE, Springer) — 2019 à 2024. Support de l'état de l'art.