Therac-25

De la Wikipedia, enciclopedia liberă.
Salt la navigare Salt la căutare

Therac-25 a fost o mașină de radioterapie , produsă de canadianul AECL ca succesor al unităților Therac-6 și Therac-20 , construite inițial împreună cu Compagnie Generale de Radiologie franceză.

Această mașină, care între 1985 și 1987 a fost instalată în 11 unități în unele spitale din Statele Unite și Canada , a fost afectată de o serie de bug-uri din programul de computer responsabil cu funcționarea sa, care au provocat șase accidente în timpul cărora pacienții au administrat o doză de radiații. A fost administrat de 100 de ori mai mare decât era necesar (în unele cazuri dispozitivul a fost activat chiar și fără a fi primit comanda corespunzătoare), provocând otrăvire prin radiații și, direct, moartea a trei dintre cei șase pacienți. [1] . Aceste incidente au demonstrat pericolele întâmpinate atunci când software-ul este utilizat pentru controlul echipamentelor medicale și au devenit un studiu tipic de caz în medicina computerizată și ingineria computerelor .

Descrierea problemei

Interfața cu utilizatorul

Interfața utilizatorului a fost afișată pe o tastatură video terminal VT100 . În mod normal, radiologul l-a pus pe pacient să stea pe masa cu raze X și a poziționat utilajul în punctul necesar, astfel încât radiațiile să fie direcționate către punctul corpului pacientului care urmează să fie tratat, apoi a părăsit camera de tratament și a revenit la studiu ( de la care putea supraveghea terapia prin intermediul unei camere cu monitor relativ și cu un microfon), a introdus datele solicitate în terminal: tipul de terapie care trebuie efectuată, energia radiației care trebuie livrată, cantitatea de radiație care trebuie emis pe unitate de timp, durata tratamentului și locația în care a fost plasată mașina. Software-ul a avut grijă să se asigure că datele introduse corespund situației reale a mașinii și, dacă se potrivesc, va afișa cuvântul „VERIFICAT” (verificat), în caz contrar a blocat procesul până când valorile au fost corectate. Numai când toate datele au fost verificate, tratamentul poate fi început prin introducerea comenzii „B” în linia „COMANDĂ”. Procedura de verificare a datelor, destul de lungă și plictisitoare pentru operator, a permis o verificare dublă a setărilor terapiei. În urma reclamațiilor, AECL a permis, pentru Therac-25, să copieze datele care apăreau în coloana „PRESCRIBED” în coloana „ACTUAL” prin simpla apăsare a butonului „returnare transport”, excluzând astfel verificarea dublă.

Interfața utilizatorului mașinii Therac-25 [1]
 NUME PACIENT: JOHN DOE
MOD DE TRATAMENT: TIPUL GRIPULUI FIX: ENERGIA X (MeV): 25
ACTUAL PRESCRIS
    RATA UNITĂȚII / MINUTUL 0 200
    UNITĂȚI DE MONITOR 50 50 200
    TIMP (MIN) 0,27 1,00
ROTAȚIA PORTULUI (DEG) 0,0 0,0 VERIFICAT
ROTAȚIA COLLIMATORULUI (DEG) 349,2 359 VERIFICAT
COLLIMATOR X (CM) 13.2 14.3 VERIFICAT
COLLIMATOR Y (CM) 21.2 27.3 VERIFICAT
PANUL NUMĂR 1 1 VERIFICAT
NUMĂRUL DE ACCESORII 0 0 VERIFICAT
DATA: 84-DEC-27 SISTEM: GRAD OPT. MOD: TRATARE AUTO
TIMP: 12:55: 8 TRATAMENT: TRATARE PAUZĂ X-RAY 173777
ID OPR: T25V02-R03 MOTIV: COMANDĂ OPERATOR:

Terapie

Mașina a oferit două metode pentru radioterapie :

  • Terapia cu fascicul de electroni , care a livrat un fascicul de electroni cu energie reglabilă de la 5 MeV la 25 MeV;
  • Terapia cu raze X cu energie ridicată , care a furnizat raze X bombardând o țintă metalică cu un fascicul de electroni cu o energie de 25 MeV.

A existat, de asemenea, un al treilea mod de funcționare, numit " modul de lumină de câmp ", care a fost util doar în faza de pregătire pentru a plasa dispozitivul în locul potrivit, deoarece în acest mod nu au fost emiși electroni, ci un fascicul subțire de lumină vizibilă, pe care a luminat pacientul în punctul în care fasciculul s-ar fi îndreptat prin activarea mașinii în poziția în care se afla.

Când mașina a fost configurată pentru a furniza electroni , a fost produs un fascicul de electroni care a fost dirijat și difuzat prin magneți de ghidare și difuzor. Când s-a efectuat terapia cu raze X, totuși, mașina a emis electroni la energie maximă care a trecut prin 4 componente, care au fost poziționate automat doar atunci când acest mod de tratament a fost activ: o țintă metalică, care a emis raze X atunci când a fost lovită de electroni; un filtru de difuzie, care a împrăștiat razele X pe o zonă mai mare; un colimator, care a schimbat conturul fasciculului de raze X; o cameră de ionizare, care măsura cantitatea de raze X emise.

Primele accidente au avut loc pe măsură ce emisia de electroni de mare energie a avut loc fără ca difuzorul să fie poziționat în același timp. Fasciculul de electroni de mare putere a lovit pacienții direct cu o doză de aproximativ 100 de ori mai mare decât doza dorită, provocând o senzație descrisă ca un șoc electric și căldură puternică, drept urmare pacienții au țipat și au cerut ajutor, iar unii au fugit din cameră. [2] Câteva zile mai târziu, pacienții supuși acestui tip de accident prezentau simptome de otrăvire cu radiații și, pe porțiunea expusă, prezentau arsuri la radiații ; în urma otrăvirii, trei dintre acești oameni au murit.

Un alt tip de accident s-a întâmplat, mai târziu, într-un mod diferit: mașina a intrat în funcțiune emițând fasciculul de electroni la energie maximă în timp ce setările erau încă în desfășurare și comanda de pornire nu fusese încă dată.

Principalele puncte slabe ale programului au fost identificate într-o serie de condiții de cursă și o revărsare numerică.

Principalele cauze

Comisia de anchetă a concluzionat [3] că principalele cauze au fost atribuite unui program slab scris și dezvoltat, fără a face referire în mod specific la numeroasele erori de programare găsite. În special, programul a fost scris în așa fel încât testele automate au fost practic imposibile.

Cercetătorii care au investigat cazul au găsit numeroase cauze care contribuie la această problemă, unele dintre acestea putând fi atribuite direct organismelor competente :

  • AECL nu a primit codul verificat de un organism independent.
  • AECL nu a proiectat programul pe baza modului în care ar trebui să funcționeze și să se comporte în cazul unei erori.
  • Atât personalul AECL, cât și personalul medical nu au crezut inițial că există probleme tehnice, probabil din cauza securității excesive. [4]
  • Când sistemul a detectat o defecțiune, terminalul video a afișat „MALFUNCTION” urmat de un număr de identificare a problemei între 1 și 64, dar emisia razelor a fost oprită doar pentru unele dintre posibilele probleme. Operatorul a avut apoi posibilitatea de a apăsa tasta „P” pentru a ignora eroarea și a continua tratamentul. Mai exact, problema cauzatoare de accidente a fost indicată cu mesajul „MALFUNCTION 54” și a făcut ca mașina să se întrerupă. Manualele furnizate operatorilor nu raportau corespondența codurilor de eroare cu problemele aferente, ba mai mult s-a întâmplat destul de frecvent să apară mesaje de eroare care, chiar dacă au fost ignorate, nu au împiedicat finalizarea terapiei fără avarii; probabil din această cauză, operatorii au fost determinați să ignore semnalele și să repornească tratamentul cu tasta „P”.
  • AECL nu a efectuat niciodată teste operaționale ale mașinii Therac-25 și ale programului său înainte ca diferitele unități să fie instalate în spitale.

Cercetătorii au identificat, de asemenea, numeroase probleme de inginerie:

  • Eroarea „MALFUNCTION 54” s-a produs numai atunci când a fost introdusă o anumită secvență de comenzi prin intermediul tastaturii terminalului VT100 , care controla un computer PDP-11 : introducerea „X” în câmpul „TIP BEAM”, adică un mod eronat de selecție a modul de raze X de 25 MeV și coborârea cu butoanele săgeată ale tastaturii către câmpul „COMANDĂ”, urmată în următoarele 8 secunde de o revenire la „TIP BEAM” cu inserarea „E” pentru a corecta „ eroare și selectați, după cum doriți, modul electron cu energie variabilă și, în cele din urmă, din revenirea la „COMANDĂ” pentru a începe tratamentul. Rutinele de control nu au putut să se sincronizeze corect cu terminalul utilizatorului în acest interval de timp de 8 secunde, în consecință au existat condiții de cursă după care mașina a activat emisia de electroni la 25 MeV, tipică terapiei cu raze X X și nu a poziționați convertorul, așa cum se așteaptă corect în terapia cu electroni. Această secvență a fost tastată numai în cazul unei erori la introducerea tipului de terapie și corectarea rapidă a acesteia, rezultând astfel destul de puțin probabil, astfel încât problema nu a fost detectată până când radiologii care au folosit aparatul au făcut această greșeală după ce au dobândit o experiență precum folosiți comenzile destul de repede. [2]
  • Spre deosebire de celelalte mașini din seria Therac, Therac-25 nu a fost echipat cu dispozitive de siguranță fizică pentru a împiedica activarea fasciculului de electroni la energie maximă fără convertor.
  • Producătorul a reciclat bucăți de cod prezente în modelele anterioare Therac, care însă, spre deosebire de acest model, au fost echipate cu interblocări sau module de programare dedicate verificărilor ulterioare de siguranță ale stării mașinii. Aceste blocaje, însă, nu au semnalat intervenția lor, astfel încât problema, probabil, a apărut și pe mașinile modelelor anterioare fără posibilitatea de a fi detectate.
  • Accidentele cauzate de activarea bruscă și neașteptată a mașinii în timpul pregătirii s-au datorat utilizării de către program a unei variabile numerice modificate continuu în urma variației setărilor, cărora li s-a atribuit valoarea 0 la continuarea tratamentului. Deoarece această variabilă este alocată într-un spațiu de memorie egal cu 1 octet , care poate conține doar valori numerice cuprinse între 0 și 255, de fiecare dată când a atins valoarea de 255 a avut loc o revărsare care a adus-o înapoi la 0, provocând astfel începutul mașina fără să acorde atenție condițiilor reale în care se afla.

Programul a fost scris în asamblare , un limbaj foarte complex și de nivel scăzut, așa că o mare atenție a fost necesară în programare. Cu toate acestea, alegerea limbajului de programare nu a fost considerată o cauză. În plus, mașinile aveau propriul lor sistem de operare .

Notă

  1. ^ Baase 2008 , p.425.
  2. ^ a b Set Phasers On Stun - Design and Human Error, Steven Casey, pp. 11-16
  3. ^ Copie arhivată ( PDF ), la sunnyday.mit.edu . Adus la 6 noiembrie 2009 (depus de 'url original 16 februarie 2008).
  4. ^ Baase 2008 , p.428.

Bibliografie

  • Baase, S (2008). „Un dar de foc”, Pearson Prentice Hall.

Elemente conexe

linkuri externe