Applicazione web per la gestione della sorveglianza sanitaria e della medicina sul lavoro del personale, sviluppata per I.S.P.R.A. e rilasciata in riuso.
Funzionalità principali
- Gestione anagrafica dipendenti (import REST-API JSON o inserimento manuale)
- Categorizzazione rischi e profilazione dipendenti
- Calendarizzazione visite e analisi cliniche
- Gestione storico delle idoneità e scadenze
- Comunicazioni via e-mail
- Reportistica per medico competente
- Autenticazione Single Sign-On (supporto OIDC)
Questo repository contiene il codice sorgente dell'applicazione. Lo stack attuale (da verificare a seconda del ramo/commit) è basato su:
- Ruby: 4.0.x (compatibile con Ruby 4.0.3+)
- Rails: 8.1
- Database: PostgreSQL >= 17
- JavaScript runtime: Node.js (compatibile con v16+), Bun >= 1.3 usato come package manager
- Hotwire/Turbo/Stimulus per UX
Se il tuo ambiente locale usa versioni diverse, usa rbenv/rvm/asdf per allineare Ruby/Rails.
- OS: Linux/macOS/Windows WSL2
- CPU: 2 vCPU
- RAM: 4 GB
- Ruby 4.0.x
- Rails 8.1
- PostgreSQL 15+ (per sviluppo è possibile usare 12/13, ma in produzione si raccomanda >=17)
- Node.js v16+ o Bun >=1.3
- OS: Linux (preferibilmente Ubuntu/RHEL/CentOS)
- CPU: 2-4 vCPU
- RAM: 8 GB
- PostgreSQL >= 17
- Nginx + Puma
- Certificati TLS per HTTPS
- Storage: filesystem condiviso per
public/systemse usi più istanze
- Clona il repository
git clone https://github.com/isprambiente/medplan.git
cd medplan- Imposta Ruby (es. rbenv/asdf/rvm) e installa dipendenze
# esempio con rbenv
rvm install ruby-4.0.3
rvm use 4.0.3
gem install bundler
bundle install- Installa dipendenze JS con Bun o npm/yarn
bun install
# oppure
npm install- Configura variabili d'ambiente e credenziali
- Copia
.env_samplein.enve aggiorna i valori locali - Genera
master.key/ credenziali Rails se necessario
rails credentials:edit
# oppure per generare una master.key
rails secret > config/master.key- Crea il database e carica i seed
rails db:create db:migrate db:seed- Avvia l'app in sviluppo
bin/rails serverNota: per lo sviluppo su Windows è consigliabile usare WSL2.
- Costruisci e avvia i container
docker-compose up --build -d- Se necessario, esegui le migration e i seed dentro il container
docker-compose exec web rails db:create db:migrate db:seedCredenziali demo (se incluse nell'immagine):
mario.rossi/password(utente standard)editor/password(editor)dottore/password(medico)admin/password(amministratore)
L'app supporta l'autenticazione Single Sign-On via OIDC. Per abilitare OIDC in produzione/configurazione:
- Aggiungere i parametri OIDC nelle credenziali (es.
config/credentials.yml.enc) o inconfig/settings.local.yml:
oidc:
issuer: 'https://openid.example.com'
client_id: 'your_client_id'
client_secret: 'your_client_secret'
redirect_uri: 'https://yourapp.example.com/auth/oidc/callback'- Verificare di avere nel Gemfile gem per OpenID Connect / OmniAuth se non già presente (es.
omniauth-openid-connect). - Configurare il provider OIDC nell'inizializzatore (es.
config/initializers/omniauth.rb).
Se in passato era usato CAS, il progetto mantiene parti di codice per CAS: preferibile migrare a OIDC in ambienti moderni.
Per deploy in produzione si raccomanda Capistrano (esistente in repository):
- Aggiornare
config/deploy.rbeconfig/deploy/production.rbcon i percorsi e gli utenti corretti - Assicurarsi che i file sensibili (
database.yml,master.key,settings.local.yml) siano presenti inshared/config/sul server
Esempio rapido:
cap production deployconfig/settings.ymlpuò essere sovrascritto daconfig/settings.local.yml(non tracciato).- Tenere sempre aggiornato
master.keye proteggere le credenziali - Usare HTTPS in produzione e disabilitare l'accesso diretto a
/publicse non necessario
- Usare
asdforbenvper gestire facilmente le versioni Ruby locali - Automatizzare backup e rotazione dei log
- Monitorare le migration e mantenere allineato l'ambiente PostgreSQL con la produzione
Contribuzioni, segnalazioni e discussioni su GitHub:
- Repository: https://github.com/isprambiente/medplan
- Discussions: https://github.com/isprambiente/medplan/discussions
- Issues: https://github.com/isprambiente/medplan/issues
Il codice sorgente è rilasciato sotto licenza MIT (vedere file LICENSE).