Contatti
← Invariance / Portfolio
Progetto clienteSanità · 2024–2025

Tre estensioni che hanno dato a un gestionale storico una seconda lingua — e un correttore.

La Dolomiti Sportclinic scrive i referti in un ERP web senza correttore, senza traduzione e senza dettatura. Sostituirlo non è mai stato in discussione. Abbiamo invece costruito tre estensioni per browser che entrano nel sistema che i medici già usano.

Il popup dell'estensione di correzione, aperto su un campo del referto

Il popup dell'estensione di correzione, aperto su un campo del referto

Il popup di correzione. Un pulsante rilegge il campo in cui si trova il cursore; il secondo percorre in sequenza tutte e nove le sezioni di un referto strutturato. Il selettore di lingua decide solo quali regole applicare: qui non si traduce nulla.

Il popup dell'estensione di traduzione con la lingua di destinazione scelta

Il popup dell'estensione di traduzione con la lingua di destinazione scelta

Il popup di traduzione. La lingua di destinazione si scegle una volta e la sezione tradotta viene aggiunta sotto l'originale, così il campo porta entrambe le versioni. Un secondo passaggio sostituisce la traduzione precedente invece di accumularne una terza.

Il popup dell'estensione di dettatura durante la registrazione

Il popup dell'estensione di dettatura durante la registrazione

Il popup di dettatura. La registrazione avviene nel browser, la trascrizione viene ripulita prima di arrivare nel campo e, su un referto strutturato, il parlato si distribuisce da sé nelle sezioni corrette.

Ruolo
Prodotto · Architettura · Sviluppo full-stack · Consegna
Lingue
Tedesco · Italiano · Inglese
Stato
In uso clinico quotidiano

Introduzione

Il software non si poteva cambiare. Il lavoro sì.

I clinici altoatesini passano dal tedesco all’italiano a metà frase e scrivono tra un paziente e l’altro. Il loro sistema di refertazione è un’applicazione web di lunga vita, priva di qualsiasi assistenza al testo, e i referti vanno a pazienti, assicurazioni e medici invianti. Riscrivere l’ERP sarebbe stato un progetto pluriennale. Il flusso di lavoro attorno si poteva sistemare in poche settimane.

150.000+

utilizzi delle estensioni

28,7 mln

parole elaborate

~10.000

ore di lavoro manuale risparmiate

Correzione

Revisione

Corregge ortografia, punteggiatura e lievi errori grammaticali direttamente nel campo, nella lingua in cui il testo è stato scritto — senza toccare contenuti, date o struttura. Un campo, o tutte e nove le sezioni in sequenza.

Traduttore

Tedesco · Italiano · Inglese

Traduce una sezione nella lingua scelta e la aggiunge sotto l’originale, così il campo contiene entrambe le versioni. Una nuova traduzione sostituisce la precedente invece di accumularne una terza.

Dettatura

Voce in testo

Registra nel browser, trascrive, ripulisce il risultato e lo scrive nel referto. Su un referto strutturato distribuisce da sé quanto detto nelle sezioni corrette.

Dimostrazione

Quello che il medico vede davvero.

Una ricostruzione dell’estensione di correzione davanti a un sostituto del sistema clinico, rifatta dal suo stesso markup e dai suoi stili. Premete Korrigieren e guardate il campo — ogni parola cambiata riceve la sua sottolineatura.

Referto — ambulatoriale

AnamnesiEsame obiettivoEsami strumentaliDiagnosiTerapia

Anamnesi

78-jähriger Patien stellt sich nach einem sturz aus dem stand mit starken schmerzen in der rechten hüfte vor. Es besteht eine unfähigkeit das bein zu belasten sowie ein stechender schmerz in der leistenregion. Verdacht auf eine mediale schenkelhalsfraktur weitere diagnostik durch röntgen und ggf CT geplant.

Testo di esempio — nessun dato di pazienti.

Traduzione

Traduzione che si aggiunge, non sostituisce.

L’estensione di traduzione scrive il risultato sotto l’originale dietro un marcatore di lingua: il campo diventa bilingue — digitato così come la clinica lo vede arrivare.

Referto — ambulatoriale

AnamnesiEsame obiettivoEsami strumentaliDiagnosiTerapia

Anamnesi

78-jähriger Patien stellt sich nach einem sturz aus dem stand mit starken schmerzen in der rechten hüfte vor. Es besteht eine unfähigkeit das bein zu belasten sowie ein stechender schmerz in der leistenregion. Verdacht auf eine mediale schenkelhalsfraktur weitere diagnostik durch röntgen und ggf CT geplant.

Testo di esempio — nessun dato di pazienti.

Tecnologia

Strumenti collaudati, scelti come sistema.

Nulla nel browser che possa invecchiare; le parti mobili restano nei servizi dietro.

Manifest V3 extensions

Google Chrome

Il browser in cui lavora la clinica e la piattaforma di estensioni per cui i plugin sono costruiti. Manifest V3 li tiene a permessi circoscritti e alle sole pagine in cui servono davvero.

Manifest V2 builds

Firefox

Il secondo browser per cui la suite viene distribuita. Le sue API per le estensioni sono abbastanza vicine a quelle di Chrome perché una sola base di codice serva entrambi, con un manifest per build.

No framework, no build

JavaScript

Le estensioni sono JavaScript puro, senza framework e senza build — il file distribuito è il file scritto. In un'estensione per browser è un vantaggio: meno da controllare, niente che si rompa in silenzio a un aggiornamento.

Service language

Python

Il linguaggio dei servizi di backend, scelto per quanto direttamente lavora con il testo e con i modelli linguistici. Mantiene i servizi abbastanza piccoli da leggerli per intero.

Correction & translation API

Django

Il framework che serve correzione e traduzione. Porta con sé ciò che a un servizio reale serve — modelli di dati, autenticazione, un pannello di amministrazione — così il lavoro va nel dominio e non nell'impalcatura.

Dictation service

FastAPI

Il framework che serve la dettatura. È asincrono, cosa che conta quando le richieste consistono soprattutto nell'attendere un modello, e ricava validazione e documentazione dell'API direttamente dai tipi.

Language models

OpenAI

I modelli di linguaggio e voce che fanno il lavoro vero: trascrizione, correzione, traduzione. Si usano via API sotto contratto, quindi nulla dipende da un modello ospitato sull'hardware della clinica.

Reproducible runtime

Docker

L'applicazione e tutto ciò che le serve stanno in un'unica immagine: la versione testata è bit per bit quella che va in produzione. Il rilascio non dipende più da cosa è installato su un server.

Architettura

Entrare in un sistema che non si può modificare.

L’applicazione clinica resta intatta. Tutto avviene nel browser, nella sessione del medico, tra l’ultima parola e il clic.

Nel browser

ERP clinico

Invariato. Il medico scrive; l'applicazione non viene mai toccata.

Estensione del browser

Gira nella sessione del medico, su un clic esplicito.

  • Schermata riconosciuta
  • Campo attivo individuato
Correzione
Traduzione
Dettatura

Evento di input nativo

L'applicazione si aggiorna come se avesse digitato una persona.

Fuori dal browser

Solo il passaggio selezionato lascia il browser

Servizio Django

Correzione e traduzione

Servizio FastAPI

Dettatura

Modello linguistico

API OpenAI

RichiestaElaborazioneRisposta
  1. Riconoscere la schermata

    La vista referto e quella di segreteria sono costruite in modo diverso. L’estensione capisce quale è aperta e adatta ciò che offre — l’azione su tutte le sezioni sparisce dove non ha senso.

  2. Trovare il campo giusto

    Un referto è diviso in nove sezioni dietro una barra di schede. L’estensione individua la scheda attiva e legge il campo sottostante; per l’esecuzione completa percorre le schede in ordine e riporta il medico dove si trovava.

  3. Inviare solo il testo

    Il passaggio selezionato va a un servizio che applica il modello linguistico e restituisce il testo corretto — nient’altro sul paziente o sulla sessione viaggia con esso.

  4. Riscrivere in modo credibile

    Impostare un valore non basta a un framework web moderno. L’estensione scrive il testo e poi genera lo stesso evento di input del browser, così il modello dell’applicazione si aggiorna come se avesse digitato una persona.

Legale

Dove passa la linea legale.

Questi strumenti trasportano referti di pazienti: per questo il progetto stabilisce cosa lascia il browser, cosa viene conservato e chi decide l'invio.

Viaggia solo il passaggio

Il testo del campo è l'intero payload. Nessun identificativo del paziente, numero di pratica o contesto di sessione è allegato a una richiesta: non c'è nulla da correlare nemmeno in transito.

Da parte nostra non resta nulla

I servizi non tengono alcun archivio del testo dei referti. Una richiesta viene elaborata e risposta; dopo non resta nulla da violare, sequestrare o esportare.

Decide la clinica, ogni volta

Nulla viene inviato in background. Ogni estensione agisce su un clic esplicito, sul singolo campo in cui il medico sta lavorando: la decisione di inviare testo clinico resta umana.

Ciò che è stato costruito è della clinica

Codice, build e materiale di firma appartengono alla clinica. Invariance non conserva copie dei contenuti clinici né alcun diritto d'uso autonomo su di essi.

Risultato

Usate ogni giorno, da persone che non hanno mai chiesto software.

Le tre estensioni sono in uso quotidiano in clinica. Il sistema di refertazione a cui si agganciano non è stato modificato nemmeno una volta — ed è esattamente per questo che il progetto è stato possibile. Lo stesso schema vale ovunque un’azienda sia legata a un sistema che non può sostituire ma su cui non riesce più a lavorare.

Prenotate una chiamata