PTRP Γ¨ un'applicazione desktop distribuita per la gestione integrata di:
- π₯ Pazienti - Anagrafe e dati clinici
- π Progetti Terapeutici Riabilitativi - Planning, tracking interventi e visite
- π¨ββοΈ Educatori Professionali - Assegnazione, responsabilitΓ e tracciabilitΓ operazioni
L'applicazione opera con paradigma offline-first: ogni nodo (Coordinatore e Educatori) funziona in modo autonomo con database locale SQLite criptato, sincronizzando i dati tramite pacchetti crittografati e firmati digitalmente.
- π Offline-First: Funzionamento garantito senza connessione internet
- π Crittografia End-to-End: Database locale SQLite criptato + HMAC sui pacchetti di scambio
- β»οΈ Sincronizzazione Asincrona: Risoluzione automatica dei conflitti tramite Master-Slave logic
- π TracciabilitΓ Clinica: Discriminazione fonte dato (EducatorImport vs CoordinatorDirect)
- π― Conflict Resolution: Timestamp-based con gerarchia di permessi (Coordinatore = Master per anagrafiche)
| Componente | Tecnologia | Versione | Motivazione |
|---|---|---|---|
| Runtime | .NET | 10 (LTS) | Supporto esteso, Self-Contained publishing con Velopack |
| UI Framework | WPF | .NET 10 | Desktop nativa Windows, MVVM-native, XAML data binding |
| Language | C# | 13.0+ | Type inference avanzato, pattern matching |
| Pattern Architecture | MVVM + MVVM Toolkit | Microsoft | Separazione concerns, testabilitΓ |
| Database Locale | SQLite | Criptato | Assenza SQL Server, portabilitΓ , crittografia nativa |
| ORM | Entity Framework Core | 10+ | Migrazioni schema, LINQ queries |
| Distribuzione | Velopack | Latest | Delta updates, zero-click deployment |
| UI Design | Material Design for WPF | Latest | Design system coerente e moderno |
| Testing | xUnit + Moq | Latest | Framework robusto |
| Crittografia | System.Security.Cryptography | Built-in | HMAC firma pacchetti, AES database |
PTRP/
βββ src/
β βββ PTRP.Models/ # EntitΓ dati e DTOs
β β βββ Patient.cs # Anagrafica paziente
β β βββ TherapeuticProject.cs # Progetto terapeutico con PTRP
β β βββ ScheduledVisit.cs # Visita programmata
β β βββ ActualVisit.cs # Visita registrata con VisitSource
β β βββ Operator.cs # Educatore/Coordinatore
β β βββ SyncPacket.cs # Pacchetto di scambio crittografato
β βββ PTRP.ViewModels/ # ViewModel - Logica presentazione
β β βββ PatientListViewModel.cs
β β βββ ProjectDetailViewModel.cs
β β βββ SyncViewModel.cs # Gestione sincronizzazione
β βββ PTRP.Views/ # Viste XAML (UserControls)
β β βββ PatientListView.xaml
β β βββ ProjectDetailView.xaml
β β βββ SyncStatusView.xaml
β βββ PTRP.Services/ # Servizi di business logic
β β βββ Database/
β β β βββ PtrpDbContext.cs # SQLite DbContext con crittografia
β β β βββ DbContextSeeder.cs # Data seeding da registro pazienti
β β β βββ Migrations/ # Schema migrations
β β βββ Repositories/ # Data Access Pattern
β β β βββ PatientRepository.cs
β β β βββ ProjectRepository.cs
β β β βββ VisitRepository.cs
β β βββ Business/
β β β βββ PatientService.cs
β β β βββ ProjectService.cs
β β β βββ VisitService.cs
β β β βββ ConflictResolutionService.cs # Master-Slave sync logic
β β βββ Sync/
β β β βββ SyncPacketService.cs # Crittografia + HMAC
β β β βββ DataMergeService.cs # UPSERT logic
β β β βββ SchemaVersioningService.cs # Migration handling
β β βββ Security/
β β βββ EncryptionService.cs # AES database
β β βββ HmacSigningService.cs # Firma pacchetti
β βββ PTRP.App/ # Applicazione principale WPF
β βββ App.xaml / App.xaml.cs
β βββ MainWindow.xaml / MainWindow.xaml.cs
β βββ Bootstrapper.cs # DI configuration
βββ tests/
β βββ PTRP.Tests/
β β βββ ViewModels/
β β βββ Services/
β β βββ Sync/ # Test sincronizzazione e conflict resolution
β β βββ Utilities/
β βββ PTRP.Integration.Tests/ # Test offline scenarios
βββ docs/
β βββ ARCHITECTURE.md # Pattern MVVM e offline-first
β βββ SETUP-GUIDE.md # Setup Visual Studio
β βββ DATABASE.md # Schema SQLite, crittografia, ER diagram
β βββ SYNC-PROTOCOL.md # Protocollo sincronizzazione
β βββ SECURITY.md # Crittografia, HMAC, key management
β βββ API.md # Services API
β βββ WORKFLOW.md # Workflow applicativo
β βββ DEPLOYMENT.md # Velopack, distribution, updates
β βββ DEVELOPMENT.md # Guida sviluppatori, Git workflow
β βββ PROGETTO_PTRP_SYNC.md # Analisi tecnica architettura
β βββ SEED.md # Data seeding strategy
βββ .github/
β βββ workflows/
β βββ validate.yml # Unit tests, SAST scan
β βββ security.yml # Security checks (chiavi, credenziali)
β βββ deploy-velopack.yml # Compile + Velopack release
βββ [config files]
- Visual Studio 2022 (Community, Pro, Enterprise)
- .NET 10 SDK (https://dotnet.microsoft.com/download/dotnet/10.0)
- Git (https://git-scm.com)
-
Clone repository
git clone https://github.com/artcava/PTRP.git cd PTRP -
Apri solution in Visual Studio
start PTRP.sln
-
Restore NuGet packages
- Visual Studio lo farΓ automaticamente
- Oppure:
dotnet restore
-
Database Setup (Automatic Migrations + Data Seeding)
- Alla prima esecuzione, EF Core crea SQLite locale criptato
- Dati iniziali estratti automaticamente dal registro pazienti Excel (DbContextSeeder):
- ~100 pazienti con stati (Active/Suspended/Deceased)
- ~50+ operatori/educatori assegnati
- ~400+ visite programmate (4 fasi: apertura, verifica intermedia, verifica finale, dimissioni)
- ~280 visite registrate effettive (70% completion rate)
- Seeding idempotente: riavvii successivi non duplicano
- Crittografia AES applicata automaticamente
- π Leggi docs/SEED.md per dettagli completi sulla strategia di data initialization
-
Build & Run
dotnet build dotnet run --project src/PTRP.App
- Ogni nodo (Coordinatore + N Educatori) possiede copia locale SQLite criptata
- Sincronizzazione tramite scambio asincrono di pacchetti (email, USB, cloud)
- Nessun database centrale β Resilienza a guasti di connessione
- Coordinatore = Master per: Anagrafiche pazienti, stati PTRP, autorizzazioni
- Educatore = Master per: Visite registrate personalmente fino al merge
- Conflict Resolution: Coordinatore ha prioritΓ assoluta su conflitti di stato
public enum VisitSource {
EducatorImport, // Da app Educatore
CoordinatorDirect // Inserimento manuale Coordinatore (verifiche d'ufficio, emergenze)
}Visualizzazione UI con badge/colori differenti per auditabilitΓ .
- Pacchetti firmati HMAC per integritΓ
- AES per confidenzialitΓ dati sensibili
- UPSERT idempotente basato su GUID
- π Setup Guide - Setup Visual Studio e primo avvio
- ποΈ Architecture - Pattern MVVM, offline-first spiegato
- πΎ Database - Schema SQLite, crittografia AES, ER diagram, query comuni
- π Sync Protocol - Algoritmo sincronizzazione, conflict resolution
- π Security - Crittografia, HMAC, key management
- π± Seeding - Strategia data initialization, DbContextSeeder
- π οΈ Development - Guida per sviluppatori, Git workflow
- π Deployment - Velopack, zero-click updates
- π Technical Analysis - Analisi tecnica completa (architetto)
Feature Branch β Pull Request β Code Review β Merge β Test Suite β Release (Velopack)
Vedi docs/DEVELOPMENT.md per workflow Git dettagliato.
- π Database SQLite criptato con AES-256
- π Firma HMAC su pacchetti scambio per integritΓ
- π‘οΈ No chiavi hardcoded β Key derivation da password locale
- β AuditabilitΓ : traccia completa operazioni (VisitSource, timestamps, operatore)
β οΈ PTRP tratta dati sensibili β GDPR compliance nel roadmap
Dettagli: vedi docs/SECURITY.md
- Marco Cavallo (@artcava) - Lead Developer & Architect
MIT License - See LICENSE file for details
Per domande, bug o feature requests:
- π Issues: GitHub Issues
- π§ Email: cavallo.marco@gmail.com
- π¬ Discussions: GitHub Discussions
Last Updated: January 29, 2026 Architecture Version: PTRP-Sync v1.0 (Offline-First) - WPF Desktop