Therac-25

Da Wikipedia, l'enciclopedia libera.
Interfaccia utente della macchina Therac-25 [1]

PATIENT NAME   : JOHN DOE
TREATMENT MODE : FIX  BEAM TYPE: X    ENERGY (MeV): 25

                      ACTUAL        PRESCRIBED
    UNIT RATE/MINUTE     0                200
    MONITOR UNITS       50 50             200
    TIME (MIN)          0.27              1.00

GANTRY ROTATION (DEG)     0.0              0.0     VERIFIED
COLLIMATOR ROTATION (DEG) 349.2            359     VERIFIED
COLLIMATOR X (CM)         13.2             14.3    VERIFIED
COLLIMATOR Y (CM)         21.2             27.3    VERIFIED
WEDGE NUMBER               1                1      VERIFIED
ACCESSORY NUMBER           0                0      VERIFIED

DATE   : 84-DEC-27   SYSTEM : BEAM READY   OP. MODE : TREAT AUTO
TIME   : 12:55: 8    TREAT  : TREAT PAUSE             X-RAY 173777
OPR ID : T25V02-R03  REASON : OPERATOR     COMMAND:

Il Therac-25 è stata una macchina per curare tramite la radioterapia, prodotta dalla AECL come succeditrice alle unità Therac-6 e Therac-20, prodotte inizialmente insieme alla francese Compagnie Generale de Radiologie. Questa macchina è stata causa di almeno sei incidenti avvenuti tra il 1985 e il 1987, durante i quali ai pazienti venne somministrata una dose di radiazioni 100 volte superiore a quella richiesta, causando un avvelenamento da radiazioni e causando direttamente la morte di tre dei sei pazienti.[1]. Questi incidenti dimostrarono i pericoli di un sistema software di controllo nelle apparecchiature medicali e sono divenuti un caso di studio nelle materie di medicina informatica e ingegneria informatica.

Descrizione del problema[modifica | modifica sorgente]

L'interfaccia utente[modifica | modifica sorgente]

L'interfaccia utente era progettata per essere visionata su un VT100. Di norma il tecnico radiologo faceva accomodare il paziente sul tavolo radiografico e sistemava la macchina nel punto adeguato, dopodiché lasciava la sala e, tornato nello studio, immetteva i dati richiesti nel terminale. Il software si preoccupava di verificare che i dati immessi corrispondessero alla reale situazione della macchina e, se combaciavano, mostrava la scritta "VERIFIED" e rendeva possibile il trattamento, altrimenti bloccava il processo, finché i dati non venivano corretti. Questa procedura, benché lunga e noiosa per il tecnico, permetteva un doppio controllo sulle impostazioni della terapia. A seguito di lamentele, la AECL consentì, per il Therac-25, di ricopiare i dati che comparivano nella colonna "PRESCRIBED" nella colonna "ACTUAL" semplicemente premendo il pulsante di "carriage return", rendendo vano il controllo.

La terapia[modifica | modifica sorgente]

La macchina offriva due metodi per la radioterapia:

  • Terapia a base di fasci di elettroni, che erogava una bassa dose di elettroni ad alta energia (da 5 MeV a 25 MeV) per poco tempo;
  • Terapia a base di raggi X ad alta energia, che erogava raggi X tramite il bombardamento di un "bersaglio" con un fascio di elettroni da 25Mev.

Quando la macchina era impostata per erogare elettroni, veniva erogato un fascio di elettroni a bassa energia, poi indirizzati e diffusi tramite dei magneti di guida ed un diffusore. Quando era attivata per emettere raggi X, la macchina era progettata per ruotare 4 componenti nel fascio di elettroni: il bersaglio, che convertiva gli elettroni in raggi X; un filtro a diffusione, che diffondeva gli elettroni in un'area più grande; il collimatore, che modificava il contorno del fascio di raggi; ed una camera a ionizzazione, che misurava la quantità di raggi X emessa.

Gli incidenti accadevano quando erroneamente veniva attivata la modalità di emissione di elettroni ad alta potenza invece che quella a potenza ridotta in contemporanea alla mancanza del diffusore. Il programma che controllava la macchina non riusciva a rilevare l'anomalia e, di conseguenza, non poteva evitare che venisse somministrata una dose letale di radiazioni. Il fascio di elettroni ad alta potenza colpiva i pazienti con una dose 100 volte superiore a quella desiderata, causando una sensazione descritta come "un'intensa scossa elettrica", di conseguenza alcuni pazienti urlavano e scappavano dalla stanza.[2] Alcuni giorni dopo, i pazienti soggetti a questo genere di incidente, mostravano i primi sintomi di un avvelenamento da radiazione e, sulla parte esposta, si potevano notare delle bruciature da radiazioni che, in seguito all'avvelenamento, hanno causato la morte di tre pazienti.

La debolezza del programma venne individuata in una race condition.

Cause principali[modifica | modifica sorgente]

La commissione di inchiesta concluse [3] che le cause principali erano imputate ad un programma scritto e sviluppato male, ma non specificatamente a molti errori di programmazione rilevati. In particolare, il programma era scritto in modo tale da rendere praticamente impossibili i test automatici.

I ricercatori che stavano investigando, trovarono numerose concause a questo problema, alcune di queste erano direttamente imputabili agli organi competenti:

  • L'AECL non ha fatto controllare il codice da un organismo indipendente.
  • L'AECL non considerava l'idea di progettare il programma su come il programma doveva funzionare e su come doveva comportarsi in caso di errore.
  • Il sistema rilevava un malfunzionamento e, per questo arrestava l'emissione di raggi X, ma mostrava solamente la scritta "MALFUNCTION" seguita da un numero compreso tra 1 e 64. Il manuale utente non specificava la tipologia d'errore abbinata ai numero, così l'operatore, ignaro di tutto, premeva il tasto "P" (per ignorare l'errore) e proseguiva la terapia normalmente.
  • Il personale della AECL, così come gli operatori sanitari, inizialmente non credevano che vi fossero problemi, probabilmente a causa di una troppa confidenza[4]
  • L'AECL non ha mai testato il programma per il Therac-25 con la macchina operativa, almeno fino a quando il tutto non veniva montato in ospedale.

I ricercatori trovarono anche numerosi problemi a carattere ingegneristico:

  • L'errore accadeva solo quando veniva digitata una sequenza non standard sulla tastiera del terminale VT100, che controllava un computer PDP-11: una "X" per selezionare (erroneamente) la modalità raggi X da 25MV seguita dalla pressione del tasto "cursor up", "E" per selezionare (correttamente) la modalità elettroni da 25 MeV, poi il tasto "Enter". Questa sequenza era improbabile, così nel breve termine non vennero rilevati problemi.[2]
  • Il progetto non prevedeva sicure meccaniche per evitare che il fascio di elettroni operasse alla massima potenza senza il bersaglio convertitore.
  • Il programmatore ha riciclato parti di codice presenti nei modelli Therac precedenti che, al contrario di questo modello, avevano delle protezioni. Queste protezioni, però non segnalavano il loro intervento, così il problema rimase nascosto per molto tempo.
  • La macchina non prevedeva alcun controllo da parte del software, in quanto era progettato per un funzionamento ad "anello aperto". Il controllo sulla posizione degli strumenti fu il primo dispositivo ad essere ritenuto responsabile dei malfunzionamenti, così venne introdotto un controllo ridondante sulla posizione.
  • Le routine di controllo non riuscivano a sincronizzarsi bene con il terminale utente, così accadevano delle race condition nel caso cui l'utente digitasse i dati troppo velocemente. Questo problema non venne rilevato fino a che gli utenti, con un po' di pratica, riuscirono a digitare velocemente i dati.
  • Il programma utilizzava una variabile flag, aumentandola o diminuendola. Ogni tanto accadevano degli overflow che causavano al programma la mancata esecuzione delle routine di sicurezza.

Il programma era scritto in Assembly, di conseguenza era richiesta una maggiore attenzione nella programmazione. Comunque la scelta del linguaggio di programmazione non era una causa, inoltre le macchine possedevano un proprio sistema operativo.

Voci correlate[modifica | modifica sorgente]

Note[modifica | modifica sorgente]

  1. ^ Baase 2008, p.425.
  2. ^ a b Set Phasers On Stun - Design and Human Error, Steven Casey, pp. 11-16
  3. ^ http://sunnyday.mit.edu/papers/therac.pdf
  4. ^ Baase 2008, p.428.

Riferimenti[modifica | modifica sorgente]

  • Baase, S (2008). "A Gift of Fire", Pearson Prentice Hall.

Collegamenti esterni[modifica | modifica sorgente]

Catastrofi Portale Catastrofi: accedi alle voci di Wikipedia che trattano di Catastrofi