Telemedic
Piattaforma telemedicina open-source con WebRTC + FHIR + SSO, EU public sector compliant
- Stato
- WIP
- Licenza
- EUPL-1.2
- Categoria
- Healthcare
- Aggiornato
Stato del progetto
Descrizione
Telemedic è una piattaforma di telemedicina open-source che permette consulti video tra medico e paziente con qualità clinica (HD + audio chiaro + bandwidth adattivo) e tracciabilità conforme ai requisiti EU. L'architettura combina WebRTC peer-to-peer per il flusso media (latency <200ms target, no transcodifica server-side se possibile), un server di signaling Spring Boot 3 che gestisce session setup/teardown e ICE candidate exchange, e un layer FHIR R4 che persiste i metadati del consulto (Encounter, DiagnosticReport, Practitioner, Patient, Observation) per integrazione con sistemi EHR esistenti come MedBook. La sicurezza è progettata per dati sanitari sensibili: DTLS-SRTP per cifratura media end-to-end, Keycloak SSO con OIDC per autenticazione medico e paziente, audit log immutabile di ogni sessione (chi ha visto chi, quando, durata, esito), session recording opzionale e configurabile (con consenso esplicito del paziente, cifrato a riposo e accessibile solo al medico curante). L'integrazione TimescaleDB permette di archiviare metriche di qualità (RTT, packet loss, jitter, bitrate medio) per audit qualità tecnica e troubleshooting. Il frontend Angular 21 SSR con standalone components offre una UI semplice (lobby, waiting room, sala consulto, chat di testo accessoria, condivisione file referti) accessibile WCAG 2.1 AA. License EUPL-1.2 per allineamento EU public sector. Deploy target: cliniche piccole-medie, mutualistiche, telemedicina pubblica regionale, studi specialistici (cardiologia, psichiatria, dermatologia con foto-consulto). La filosofia è 'sovereign telemedicine': i dati clinici e i flussi video non transitano mai per server US-based, niente Zoom/Teams sotto-il-cofano, niente analytics commerciali.
Funzionalità chiave
WebRTC peer-to-peer HD
Signaling Spring Boot, ICE candidate exchange, STUN/TURN configurabili, fallback relay se peer-to-peer fallisce, bitrate adattivo.
Cifratura DTLS-SRTP end-to-end
Media stream cifrato peer-to-peer, niente decifratura intermedia, key rotation per session, FIPS 140-2 compliant ciphers.
FHIR R4 Encounter integration
Encounter Resource creato a session start, DiagnosticReport persistito a session end, integrazione MedBook o EHR esistente via REST.
Keycloak SSO medico + paziente
Due realm Keycloak (clinic + patient), autenticazione SPID/CIE supportata in roadmap Q1 2027, OIDC standard.
Audit log immutabile sessioni
Tabella _aud Envers su Encounter, durata sessione, esito, motivo cancellazione, log immutabile per audit AGENAS/AgID.
Recording opzionale cifrato
Session recording con consenso esplicito paziente (UI dedicata), MP4 cifrato a riposo, retention configurabile, accesso restricted al medico.
Metriche qualità TimescaleDB
RTT, packet loss, jitter, bitrate medio per session, dashboard Grafana ready, alert se qualità sotto soglia clinica accettabile.
Frontend WCAG 2.1 AA
Standalone components Angular 21, screen reader compatible, keyboard navigation, contrasto WCAG AA verificato, supporto reduced motion.
Tech stack
- Spring Boot 3.4
- Java 21
- WebRTC
- Angular 21
- FHIR R4
- Keycloak SSO
- TimescaleDB
- coturn (STUN/TURN)
- Docker Compose
Casi d'uso
- Clinica specialistica che offre consulti follow-up via telemedicina (cardiologia, psichiatria, dermatologia)
- Mutualistica o assicurazione sanitaria che integra telemedicina nel piano di copertura
- Telemedicina pubblica regionale (USL) come alternativa open-source a soluzioni commerciali
- Studio medico associato che vuole offrire consulti remoti senza esporre dati a SaaS US
Roadmap
- v0.1.0 Pianificata
Signaling + WebRTC base
- Signaling server Spring Boot WebSocket
- WebRTC peer connection setup + ICE
- Frontend Angular lobby + sala consulto base
- Keycloak SSO medico realm
- v0.5.0 Pianificata
FHIR integration + Audit + Quality metrics
- Encounter + DiagnosticReport FHIR mapping
- Hibernate Envers audit log sessioni
- TimescaleDB metrics RTT/jitter/packet loss
- Patient realm Keycloak + UI consenso
- v1.0.0 Pianificata
Recording + WCAG + Production deploy
- Session recording cifrato opzionale
- WCAG 2.1 AA audit frontend
- Documentazione MkDocs + deploy guide
- Integration test end-to-end con MedBook
A chi è rivolto
Quick Start
Avvia il progetto localmente in pochi comandi.
# Quick start (work-in-progress, repo non ancora pubblicato)
# git clone https://github.com/<tba>/telemedic.git
# cd telemedic
# cp .env.example .env # configura STUN/TURN, Keycloak, TimescaleDB
# docker compose up -d # signaling + keycloak + timescale + frontendContribuisci al progetto
Telemedic è open source. Apri una issue, proponi una pull request o lascia una stella su GitHub: ogni contributo, anche piccolo, è benvenuto.
- ⭐ Lascia una stella se ti è utile
- 🐛 Segnala bug o proponi feature via issue
- 🔧 Invia pull request con fix o miglioramenti
- 📣 Condividi il progetto se lo trovi interessante