Skip to content

collab-uniba/Genetics

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

71 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

🧬 Sistema di Gestione Pedigree Genetici

Progetto di Tesi - Sistema web completo per la gestione pazienti, creazione e analisi di alberi genealogici in ambito medico-genetico

Angular Spring Boot PostgreSQL PedigreeJS

πŸ“‹ Indice

🎯 Panoramica

Il Sistema di Gestione Pedigree Genetici Γ¨ una piattaforma web completa sviluppata per supportare professionisti sanitari nella gestione pazienti, creazione e analisi di alberi genealogici in ambito medico-genetico. Il sistema integra la potente libreria PedigreeJS, sviluppata dal team del Centre for Cancer Genetic Epidemiology dell'UniversitΓ  di Cambridge, con un'interfaccia moderna e intuitiva.

🎯 Obiettivi del Progetto

  • Digitalizzazione dei processi di raccolta dati genealogici
  • Standardizzazione secondo formati medici internazionali (BOADICEA, CanRisk)
  • Miglioramento dell'efficienza nella consulenza genetica
  • Facilitazione dell'analisi del rischio ereditario

✨ Funzionalità Principali

πŸ‘₯ Gestione Pazienti

  • βœ… Operazioni CRUD complete (Create, Read, Update, Delete)
  • βœ… Anagrafica dettagliata pazienti
  • βœ… Gestione caregiver - Assegnazione e gestione assistenti/familiari
  • βœ… Dashboard intuitiva per navigazione rapida
  • βœ… Ricerca e filtri avanzati

🌳 Editor Pedigree Avanzato

  • βœ… Creazione interattiva di alberi genealogici
  • βœ… Pannello laterale personalizzato per editing dettagli
  • βœ… Validazione real-time dei dati inseriti
  • βœ… Gestione gemelli (monozigoti/dizigoti)
  • βœ… Controllo modifiche non salvate con guard di navigazione

πŸ“Š Import/Export Professionale

  • βœ… Export PNG/SVG ad alta risoluzione
  • βœ… Export BOADICEA v4 (standard medico internazionale)
  • βœ… Export CanRisk v4.0 (analisi rischio genetico)
  • βœ… Export JSON (formato nativo)
  • βœ… Stampa PDF professionale
  • βœ… Import da formati medici standard

πŸ” FunzionalitΓ  Mediche Specializzate

  • βœ… Diagnosi oncologiche con etΓ  di insorgenza
  • βœ… Storia riproduttiva (aborti, stillbirth, interruzioni)
  • βœ… Stato adozione (adottato/dato in adozione)
  • βœ… Validazione coerenza dati medici

πŸ—οΈ Architettura

Il sistema segue un'architettura client-server moderna con separazione netta tra front-end e back-end:

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”    HTTP/REST    β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”    JPA/Hibernate    β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚                 β”‚ ◄──────────────► β”‚                 β”‚ ◄──────────────────► β”‚                 β”‚
β”‚   Angular 19    β”‚                 β”‚  Spring Boot    β”‚                     β”‚   PostgreSQL    β”‚
β”‚   (Front-end)   β”‚                 β”‚   (Back-end)    β”‚                     β”‚   (Database)    β”‚
β”‚                 β”‚                 β”‚                 β”‚                     β”‚                 β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜                 β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜                     β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
        β”‚                                   β”‚
        β”‚                                   β”‚
        β–Ό                                   β–Ό
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”                 β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚   PedigreeJS    β”‚                 β”‚  Spring Data    β”‚
β”‚   (Rendering)   β”‚                 β”‚      JPA        β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜                 β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

πŸ› οΈ Tecnologie Utilizzate

🎨 Front-end

  • Angular 19.0.5 - Framework principale
  • Bootstrap 5.3.3 - UI Framework
  • PedigreeJS v4.0.0-rc1 - Rendering pedigree
  • D3.js - Visualizzazioni grafiche
  • jQuery 3.7.1 - Manipolazione DOM
  • FontAwesome 6.7.2 - Iconografia
  • ApexCharts 3.49.2 - Grafici e statistiche

βš™οΈ Back-end

  • Spring Boot 3.4.4 - Framework principale
  • Spring Data JPA - Persistenza dati
  • Spring Security - Autenticazione e autorizzazione
  • Spring Validation - Validazione dati
  • Java 17 - Linguaggio di programmazione
  • Maven - Gestione dipendenze
  • Lombok - Riduzione boilerplate code

πŸ—„οΈ Database

  • PostgreSQL - Database relazionale principale
  • Hibernate - ORM (Object-Relational Mapping)

πŸ”§ Strumenti di Sviluppo

  • Git - Controllo versione
  • GitHub - Repository hosting
  • ESLint - Linting JavaScript/TypeScript
  • Prettier - Code formatting

πŸ“¦ Installazione

πŸ“‹ Prerequisiti

  • Node.js (versione 18+ consigliata) - Include npm automaticamente
  • Java 17+ (JDK, non solo JRE)
  • Maven 3.6+ (opzionale - il progetto include Maven Wrapper)
  • PostgreSQL 12+
  • Git

πŸ”§ Setup Database

  1. Installa PostgreSQL (se non giΓ  presente)

  2. Importa il database dal dump incluso:

# Crea il database
createdb [nome_db]

# Importa il dump
psql -d [nome_db] -f db/medical_db_dump.sql
  1. Configura le credenziali in back-end/crud/src/main/resources/application.properties

πŸ“₯ Clonazione Repository

git clone https://github.com/D4n1l0S4/tesi-app.git
cd tesi-app

🎨 Setup Front-end

cd front-end/angular
npm install

βš™οΈ Setup Back-end

cd back-end/crud

# Opzione 1: Se hai Maven installato
mvn clean install

# Opzione 2: Usando Maven Wrapper (raccomandato)
# Su Linux/macOS:
./mvnw clean install

# Su Windows:
mvnw.cmd clean install

πŸš€ Avvio del Sistema

1. πŸ—„οΈ Avvia Database

# Assicurati che PostgreSQL sia in esecuzione
sudo service postgresql start
# oppure su macOS: brew services start postgresql
# oppure su Windows: net start postgresql-x64-XX

2. βš™οΈ Avvia Back-end

cd back-end/crud

# Su Windows:
.\mvnw.cmd spring-boot:run

# Su Linux/macOS:
./mvnw spring-boot:run

# Se hai Maven installato globalmente:
mvn spring-boot:run

Il server sarΓ  disponibile su: http://localhost:8085

3. 🎨 Avvia Front-end

cd front-end/angular
npm start

L'applicazione sarΓ  disponibile su: http://localhost:4200

⚠️ Nota: Servono 2 terminali separati - uno per il back-end e uno per il front-end.

πŸ›‘ Fermare i Servizi

  • Ctrl + C in entrambi i terminali per fermare i servizi
  • Verifica: netstat -ano | findstr ":4200 :8085" (nessun output = servizi fermati)

πŸ“– Utilizzo

πŸ” Accesso al Sistema

  1. Naviga su http://localhost:4200
  2. Effettua il login con le credenziali di test:
    • Username: user
    • Password: 12345678
  3. Accedi alla dashboard principale

πŸ‘₯ Gestione Pazienti

  1. Sezione "Pazienti" β†’ Visualizza lista completa
  2. "Aggiungi Paziente" β†’ Inserisci nuova anagrafica
  3. Modifica/Elimina β†’ Gestisci pazienti esistenti
  4. Gestione Caregiver β†’ Assegna assistenti/familiari ai pazienti
  5. Ricerca e filtri β†’ Trova rapidamente pazienti specifici

🧬 Creazione Pedigree

  1. Sezione "Genetica" β†’ Seleziona paziente
  2. "Crea Pedigree" β†’ Avvia editor interattivo
  3. Aggiungi familiari β†’ Usa widget PedigreeJS
  4. Pannello laterale β†’ Modifica dettagli persona selezionata
  5. Salva β†’ Persisti nel database

πŸ“Š Export Dati

  1. Apri pedigree esistente
  2. Toolbar Export β†’ Scegli formato desiderato
  3. Download automatico del file generato

πŸ”§ Configurazione

πŸ—„οΈ Database (application.properties)

server.port=8085
spring.datasource.url=jdbc:postgresql://localhost:5432/[nome_db]
spring.datasource.username=[username_db]
spring.datasource.password=[password_db]
spring.jpa.hibernate.ddl-auto=update

🌐 CORS (per sviluppo)

cors.allowed.origins=http://localhost:4200

🎨 Angular Environment

// src/environments/environment.ts
export const environment = {
  production: false,
  apiUrl: 'http://localhost:8085/api/v1'
};

πŸ“ Struttura del Progetto

tesi-app/
β”œβ”€β”€ πŸ“ front-end/
β”‚   └── πŸ“ angular/
β”‚       β”œβ”€β”€ πŸ“ src/
β”‚       β”‚   β”œβ”€β”€ πŸ“ app/
β”‚       β”‚   β”‚   β”œβ”€β”€ πŸ“ components/
β”‚       β”‚   β”‚   β”‚   β”œβ”€β”€ πŸ“ genetica/           # Dashboard genetica
β”‚       β”‚   β”‚   β”‚   └── πŸ“ pedigree-viewer/    # Editor pedigree
β”‚       β”‚   β”‚   β”œβ”€β”€ πŸ“ services/               # Servizi Angular
β”‚       β”‚   β”‚   β”œβ”€β”€ πŸ“ models/                 # Modelli TypeScript
β”‚       β”‚   β”‚   └── πŸ“ guards/                 # Route guards
β”‚       β”‚   └── πŸ“ assets/
β”‚       └── πŸ“ libs/
β”‚           └── πŸ“ pedigreejs/                 # Libreria PedigreeJS
β”œβ”€β”€ πŸ“ back-end/
β”‚   └── πŸ“ crud/
β”‚       β”œβ”€β”€ πŸ“ src/main/java/
β”‚       β”‚   └── πŸ“ it/uniba/crud/
β”‚       β”‚       β”œβ”€β”€ πŸ“ controller/             # REST Controllers
β”‚       β”‚       β”œβ”€β”€ πŸ“ service/                # Business Logic
β”‚       β”‚       β”œβ”€β”€ πŸ“ repository/             # Data Access
β”‚       β”‚       β”œβ”€β”€ πŸ“ model/                  # EntitΓ  JPA
β”‚       β”‚       └── πŸ“ dto/                    # Data Transfer Objects
β”‚       └── πŸ“ src/main/resources/
β”œβ”€β”€ πŸ“ db/                                     # Database dump e script
β”‚   └── medical_db_dump.sql                   # Dump completo del database
└── πŸ“„ README.md

πŸ“Š Export e Formati Supportati

πŸ“‹ Formati di Export

Formato Descrizione Uso Clinico
PNG Immagine ad alta risoluzione Documentazione medica
SVG Grafico vettoriale scalabile Pubblicazioni scientifiche
JSON Formato nativo del sistema Backup e interoperabilitΓ 
BOADICEA v4 Standard internazionale Analisi rischio breast/ovarian cancer
CanRisk v4.0 Formato CanRisk Valutazione rischio multi-cancer
PDF Documento stampabile Referti e documentazione

πŸ”„ Formati di Import

  • βœ… JSON (formato nativo)
  • βœ… BOADICEA (standard medico)
  • βœ… CanRisk (formato rischio)
  • βœ… PED (formato genealogico)

🀝 Contributi

Questo progetto Γ¨ stato sviluppato come progetto di tesi. Per contributi o segnalazioni:

  1. 🍴 Fork del repository
  2. 🌿 Crea feature branch (git checkout -b feature/AmazingFeature)
  3. πŸ’Ύ Commit delle modifiche (git commit -m 'Add AmazingFeature')
  4. πŸ“€ Push del branch (git push origin feature/AmazingFeature)
  5. πŸ”„ Apri Pull Request

πŸ“„ Licenza

Questo progetto Γ¨ sviluppato per scopi accademici come parte di un progetto di tesi universitaria.

πŸ“š Librerie Terze Parti

  • PedigreeJS: GPL-3.0-or-later (Centre for Cancer Genetic Epidemiology, University of Cambridge)
  • Angular: MIT License
  • Spring Boot: Apache License 2.0
  • Bootstrap: MIT License

πŸ‘¨β€πŸ’» Autore

Danilo Santo


πŸ™ Ringraziamenti

  • Centre for Cancer Genetic Epidemiology, University of Cambridge per lo sviluppo della libreria PedigreeJS
  • Relatore di tesi per la supervisione e guida durante lo sviluppo
  • Community open source per le librerie utilizzate

⭐ Se questo progetto ti è stato utile, lascia una stella! ⭐

Sviluppato con ❀️ per la comunità medico-genetica

About

Frontend Angular_Bootstrap + Backend SpringBoot per tesi

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published