Skip to content

artcava/PTRP

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

57 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

PTRP - Gestione Progetti Terapeutici Riabilitativi Personalizzati

Status .NET UI Framework Architecture License

πŸ“‹ Descrizione Progetto

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.

Caratteristiche Architetturali Uniche

  • πŸ”’ 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)

πŸ› οΈ Stack Tecnologico

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

πŸ“ Struttura Progetto

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]

πŸš€ Quick Start

Prerequisiti

Setup Locale

  1. Clone repository

    git clone https://github.com/artcava/PTRP.git
    cd PTRP
  2. Apri solution in Visual Studio

    start PTRP.sln
  3. Restore NuGet packages

    • Visual Studio lo farΓ  automaticamente
    • Oppure: dotnet restore
  4. 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
  5. Build & Run

    dotnet build
    dotnet run --project src/PTRP.App

πŸ”„ Concetti Architetturali Chiave

Offline-First Paradigm

  • 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

Master-Slave Logic

  • 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

Visit Source Tracking

public enum VisitSource {
    EducatorImport,    // Da app Educatore
    CoordinatorDirect  // Inserimento manuale Coordinatore (verifiche d'ufficio, emergenze)
}

Visualizzazione UI con badge/colori differenti per auditabilitΓ .

Sincronizzazione Crittografata

  • Pacchetti firmati HMAC per integritΓ 
  • AES per confidenzialitΓ  dati sensibili
  • UPSERT idempotente basato su GUID

πŸ“š Documentazione

  • πŸ“– 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)

πŸ“ Workflow Sviluppo

Feature Branch β†’ Pull Request β†’ Code Review β†’ Merge β†’ Test Suite β†’ Release (Velopack)

Vedi docs/DEVELOPMENT.md per workflow Git dettagliato.


πŸ”’ Sicurezza e Privacy

  • πŸ” 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


πŸ‘₯ Contributors

  • Marco Cavallo (@artcava) - Lead Developer & Architect

πŸ“„ License

MIT License - See LICENSE file for details


πŸ“ž Support

Per domande, bug o feature requests:


Last Updated: January 29, 2026 Architecture Version: PTRP-Sync v1.0 (Offline-First) - WPF Desktop

About

Gestione Progetti Terapeutici

Resources

License

Contributing

Security policy

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages