Salta al contenuto principale
WIP EUPL-1.2Healthcare

MedBook

Cartella clinica elettronica self-hosted FHIR R4 + GDPR, per cliniche e medici di base in EU

Stato
WIP
Licenza
EUPL-1.2
Categoria
Healthcare
Aggiornato

Stato del progetto

Descrizione

MedBook è un sistema di cartella clinica elettronica (EHR) self-hosted progettato per cliniche piccole-medie, ambulatori specialistici e medici di base in area EU che vogliono possedere i propri dati pazienti senza dipendere da SaaS cloud (USA-based). L'architettura è Clean Architecture 4-layer Spring Boot 3.4 con domain JPA-agnostic, frontend Angular 21 SSR con standalone components e signals, persistenza PostgreSQL 16 con cifratura a riposo (pgcrypto) e audit trail completo via Hibernate Envers. Il modello dati è progettato attorno a FHIR R4 (Patient, Practitioner, Observation, Condition, MedicationStatement, AllergyIntolerance, Procedure, DiagnosticReport) con mapping JPA entity ↔ FHIR Resource via HAPI FHIR library, garantendo interoperabilità con sistemi sanitari nazionali. La sicurezza è first-class: Keycloak SSO con OIDC, RBAC (medico, infermiere, segretaria, admin), audit log immutabile per ogni accesso a dati paziente (chi, cosa, quando, perché), session timeout configurabile, password policy NIST 800-63B compliant. Il consenso GDPR è gestito tramite uno schema dedicato (granular consent per categoria di dati: anamnesi, allergie, esami, terapia farmacologica), con flag di revoca tracciabili e diritto all'oblio implementato come anonimizzazione (non hard delete, per non rompere referential integrity di prescrizioni e ricette). License EUPL-1.2 per allineamento esplicito allo standard EU public sector e compatibilità con FSE 2.0 italiano, AgID e direttive eHealth Network. Deploy via Docker Compose o systemd unit, target medico singolo o cluster di 2-20 utenti concorrenti. La filosofia è 'data sovereignty by design': i dati vivono sulla VPS del cliente, niente analytics esterne, niente telemetry, niente CDN per i bundle medici.

Funzionalità chiave

  • Modello dati FHIR R4 nativo

    JPA entity mappate a FHIR Resource (Patient, Observation, Condition, MedicationStatement) via HAPI FHIR, export bundle JSON/XML standard.

  • Audit trail completo Hibernate Envers

    Ogni accesso a dato paziente tracciato (operatore, timestamp, action, IP, reason), tabelle _aud immutabili, query timeline per audit GDPR.

  • Keycloak SSO + RBAC granulare

    OIDC integration, 4 ruoli predefiniti (medico/infermiere/segretaria/admin), permission matrix configurabile, session timeout per ruolo.

  • GDPR consent management

    Consenso granulare per categoria dati, revoca tracciabile, diritto all'oblio come anonimizzazione, export DSAR (Data Subject Access Request) automatico.

  • Frontend Angular 21 SSR

    Standalone components, signals reattivi, OnPush change detection, prerender per pagine pubbliche (about, login), bundle ottimizzato per LTE.

  • Cifratura a riposo pgcrypto

    Colonne sensibili (codice fiscale, anamnesi, allergie) cifrate con pgcrypto PGP_SYM_ENCRYPT, chiave master in KMS o env var hardened.

  • Backup automatici cifrati

    pg_dump notturno cifrato GPG, retention configurabile, opzione Hetzner Storage Box, test restore guidato in documentazione.

  • Deploy systemd hardened

    Unit systemd con NoNewPrivileges, ProtectSystem=strict, PrivateTmp, no Docker required, alternative Docker Compose se preferito.

Tech stack

  • Spring Boot 3.4
  • Java 21
  • Angular 21
  • PostgreSQL 16
  • HAPI FHIR R4
  • Keycloak
  • Hibernate Envers
  • pgcrypto
  • Docker Compose

Casi d'uso

  • Ambulatorio medico di base che vuole digitalizzare cartelle pazienti senza affidarsi a SaaS US-based
  • Clinica specialistica piccola (2-20 utenti) con esigenza di FHIR R4 export per laboratori e specialisti esterni
  • Studio dentistico o fisioterapista che gestisce anamnesi e piani terapeutici con vincoli GDPR stringenti
  • Ricercatori medici che hanno bisogno di un EHR open-source per studi clinici locali piccoli

Roadmap

  1. v0.1.0 Pianificata

    Core EHR: Patient + Practitioner + Audit

    • Modello FHIR Patient + Practitioner mappato JPA
    • CRUD endpoint con Keycloak SSO + RBAC base
    • Hibernate Envers audit trail attivo su entity sensibili
    • Frontend Angular login + dashboard paziente
  2. v0.5.0 Pianificata

    Observation + Condition + Medication

    • FHIR Observation + Condition + MedicationStatement
    • Export FHIR bundle JSON/XML via endpoint /fhir/Patient/{id}/$everything
    • Cifratura pgcrypto su colonne anamnesi/allergie
    • GDPR consent UI + revoca + DSAR export
  3. v1.0.0 Pianificata

    FSE 2.0 IT integration + Production deploy

    • Connettore FSE 2.0 IT (gateway nazionale)
    • Backup automatici cifrati + test restore
    • Documentazione MkDocs completa + deploy guide VPS
    • Audit di sicurezza pre-release + penetration test (deferito post-MVP)

A chi è rivolto

  • Pro Dev senior
  • Decision Maker / Founder

Quick Start

Avvia il progetto localmente in pochi comandi.

# Quick start (work-in-progress, repo non ancora pubblicato)
# git clone https://github.com/<tba>/medbook.git
# cd medbook
# cp .env.example .env  # configura DB, Keycloak, KMS
# docker compose up -d  # postgres + keycloak + medbook-backend + medbook-frontend

Contribuisci al progetto

MedBook è 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