helse-it

Programvaren som ble seriemorder

Er dette verdens verste programvare-tabbe? På åttitallet ble flere kreftpasienter utsatt for opptil 100 ganger så høy strålingsdose som de skulle hatt.

Therac-25 var revolusjonerende for sin tid, men skulle koste flere mennesker livet – liv den egentlig skulle redde.
Therac-25 var revolusjonerende for sin tid, men skulle koste flere mennesker livet – liv den egentlig skulle redde.

Digi har skrevet om dyre tabber tidligere, men de var dyre målt i kroner og øre – ikke liv.

Strålebehandlings­maskinen Therac-25, derimot, viste seg å ha en programmerings­tabbe som kostet flere mennesker livet.

Kreftpasientene skulle få strålebehandling som med litt flaks kunne gjøre dem friske.

I stedet ble de i praksis «grillet» av mange ganger så høy stråledose som de skulle ha.

Styrt av programvare

Therac-25 var en nyskapning da den ble lansert på tidlig 80-tall. Den var ikke bare fysisk mindre enn forgjengerne Therac-6 og Therac-20, den var også billigere å produsere, takket være en helt ny måte å generere strålingen på.

DEC PDP-11, datamaskinen som styrte Therac-25 Foto: Wikipedia
DEC PDP-11, datamaskinen som styrte Therac-25

I tillegg var den helt og holdent styrt ved hjelp av programvare.

Både Therac-6 og Therac-20 ble kontrollert med en DEC PDP-11-datamaskin, men kunne om nødvendig fungere og brukes uten denne.

Men med utviklingen av Therac-25 bestemte produsenten AECL seg for å gjøre maskinen programvare-styrt.

Den var i stor grad en videreført versjon av samme programvare som de to forgjengerne brukte.

Men disse maskinene var også delvis mekanisk styrt, og hadde blant annet mekaniske sikkerhetsmekanismer. I Therac-25 var disse fjernet, delvis for å spare noen kroner i produksjonskostnad, og tanken var at programvaren uansett gjorde dem unødvendige.

Det skulle vise seg å være tragisk feil.

Hobbykoder

Koden var skrevet av en enkelt ansatt som hadde programmering som hobby, og ble ikke vurdert da AECL gjorde en sikkerhetsvurdering av maskinen i 1983. Mannen bak koden forlot selskapet i 1986, og er hittil ikke identifisert noe sted.

Strålingskilden i Therac-25 genererte elektronstråler som kunne sendes mot svulster som satt nær overflaten. Elektronstrålen er også for kraftig, og reguleres med magneter som plasseres foran strålingskilden og sprer strålen slik at området som skal bestråles får akkurat riktig dose.

Men slike elektronstråler sprer seg lett i vevet, og går ikke dypt nok til å nå svulster som sitter dypere. Derfor hadde maskinen også et modus der en tynn metallfolie ble plassert i banen for elektronstrålen, i stedet for magnetene. Det genererer røntgenstråling, som kan gå dypere.

Problemet er bare at prosessen er lite effektiv, så styrken på elektronstrålen måtte i slike tilfeller økes kraftig for å generere nok røntgenstråling.

Skjematisk fremstilling av dreieskiven i Therac-25. Foto: FDA
Skjematisk fremstilling av dreieskiven i Therac-25.

Maskinen byttet mellom elektron-modus og røntgen-modus – i tillegg til et sikte-modus som bare sendte ut lys – ved å rotere en dreieskive som speil, metallfolie og magneter var montert på. Originalt hadde denne mikrobrytere som skulle hindre feil posisjon, men det ble på et punkt erstattet av programvaren som konstant skulle sjekke dreieskivens posisjon.

AECL uttalte etter det at sikkerheten hadde økt med 9.999.900 prosent. Men da hadde allerede to personer mottatt tusenvis av rads for mye. Den siste døde bare en måned før utsagnet.

Dødelig dose

En dødelig dose av stråling for mennesker varierer, men det er generelt akseptert at en stråledose på rundt 400–500 rads («radiation absorbed dose») vil være dødelig uten medisinsk behandling for 50 prosent av en befolkning (kjent som LD50), dersom hele kroppen er eksponert.

Med intensiv medisinsk behandling kan noen mennesker overleve noe høyere doser, opptil rundt 600–700 rads, men sjansen for overlevelse avtar raskt med høyere doser.

Doser over 1000 rads er nesten alltid dødelige.

Merk at rads er en utdatert måleenhet som til en viss grad ennå brukes i USA. 100 rads tilsvarer én Gray, som er den moderne måleenheten. Vi bruker likevel rads her, da det er enheten brukt av kildene.

Avviste feil

Men alarmen gikk ikke hos selskapet, og bare en måned etter det igjen var det enda en pasient som fikk en strålingsdose som var 100 ganger for kraftig.

Etter dette begynte leger og annet helsepersonell å ane ugler i mosen. Men etter å ha undersøkt saken uttalte AECL to måneder senere at strålingsskadene pasientene hadde blitt påført umulig kunne stamme fra en funksjonsfeil med Therac-25, eller noen som helst operatørfeil av den.

Likevel, i løpet av de neste 12 månedene tok nettopp slike feil livet av ikke mindre enn tre pasienter som alle fikk mange ganger så kraftig stråledose som de skulle ha.

Ofrene

Pasientenes navn varierer fra kilde til kilde, sannsynligvis av personvernhensyn. Informasjon som kjønn, alder, datoer, strålingsdose og utfall varierer imidlertid svært lite på tvers av kilder. Vi har valgt å benytte navnene som er oppgitt av Online Ethics Center.

3. juni 1985: Linda Knight (61)

Skulle hatt 200 rads, men fikk omkring 20.000. Måtte fjerne et bryst på grunn av stråleskader, og ble lam i venstre arm. Hun døde fem år senere i en bilulykke, men skadene fra strålingen hadde allerede svekket henne betydelig og kan ha vært medvirkende årsak til ulykken.

26. juli 1985: Donna Gartner (40)

Skulle hatt 200 rads, men fikk omkring 17.000. Fikk alvorlige strålingsskader og døde en måned senere. Offisiell dødsårsak var livmorhalskreft, men obduksjon viste at hoften hennes var ødelagt av strålingen og ville måtte erstattes om hun hadde overlevd.

Desember 1985: Janis Tilman

Skulle hatt 200 rads, men fikk omkring 20.000. Hun fikk mindre uførhet og arrdannelse, men overlevde utrolig nok ulykken.

22. mars 1986: Isaac Dahl (33)

Skulle hatt 180 rads, men fikk det som ble estimert som mellom 15.000 og 25.000 - langt over det redningsarbeidere ved Tsjenobyl-ulykken fikk bare halvannen måned senere. Fikk alvorlige stråleskader og døde i august samme år av strålingssyke.

11. april 1986: Daniel McCarthy

Skulle ha en ukjent dose som del av behandling av hudkreft i ansiktet, men fikk en dødelig overdose som førte til alvorlig stråleskade på hjernen og hjernestammen. Døde en måned senere av skadene.

17. januar 1987: Anders Engman

Skulle hatt 86 rads, men fikk rundt 10.000. Det førte til akutt strålingssyke, og han døde tre måneder senere.

«P» for «proceed»

Når man endelig fant ut av det, viste problemet seg å ikke overraskende skyldes en kombinasjon av dårlig programvare og menneskelig feil.

Therac-25s programvare bestod av rundt 100.000 linjer med kode. Det er lite etter dagens standard, men likevel komplisert nok.

Og, skulle det vise seg – fullt av feil.

Ofte fikk operatørene feilmeldinger som ikke var nøyere spesifisert, som for eksempel «Malfunction 54». Tallet kunne være fra 1 til 64, og de kunne dukke opp opptil fire–fem ganger om dagen. Noen forklaring på betydningen av hvert tall var ikke tilgjengelig og var ikke oppført i noen brukermanual.

Disse feilkodene var ofte resultat av mindre feil, og operatørene kunne enkelt forsøke på nytt ved å trykke «P» for «proceed», opptil fem ganger per feil.

Dette gikk det automatikk i, skulle det senere vise seg, og operatørene trykket svært ofte P uten å vite hva som var galt.

Og i de fleste tilfeller gikk det helt greit, siden dette var en mulighet de i teorien kun hadde når det var småfeil som inntraff. Alvorlige feil krevde at oppsettet av behandlingen med maskinen måtte gjøres på nytt.

Simulering av brukergrensesnittet på Therac-25. Hvis noen endret BEAM TYPE (øverst i midten) for raskt, kunne det gå galt. Veldig, veldig galt. Foto: Wikipedia
Simulering av brukergrensesnittet på Therac-25. Hvis noen endret BEAM TYPE (øverst i midten) for raskt, kunne det gå galt. Veldig, veldig galt.

«Malfunction 54»

Nettopp «Malfunction 54» skulle senere vise seg å være langt mer alvorlig å hoppe over, enn alle de andre feilkodene.

Dreieskiven i Therac-25 brukte hele åtte sekunder på å rotere fra en posisjon til en annen, og dersom operatøren var for kjapp med å trykke på aktiveringsknappen, ville «Malfunction 54» inntreffe.

Ingen stråle ville da aktiveres, men operatøren kunne trykke «P» for «proceed», og strålen ville da aktiveres uten at verken magneter eller metallfolie var i posisjon.

Programvaren sjekket i slike tilfeller ikke dreieskivens posisjon, og bare antok at den var riktig. Dermed var det da ingen ting som hindret at pasienten fikk maksimaldosen – ofte 100 ganger så kraftig som intensjonen var.

Og det uten at systemet meldte noe annet galt enn «Malfunction 54».

«Ingen andre lignende uhell»

Feilen ble på et punkt oppdaget av en operatør og meldt videre til AECL. Men ingen klarte ikke å replisere feilen, og AECL fortalte sykehuset at en overdose var umulig, og at de ikke kjente til andre lignende hendelser.

Dette var i mars 1986, og da hadde allerede tre andre pasienter opplevd slike enorme overdoser av stråling. Men ingen plukket det opp, og etter to-tre uker ble den aktuelle maskinen satt i drift igjen.

Men nå begynte noen å mistenke at ikke alt var som det skulle være, og en operatør og fysiker ved et medisinsk senter bestemte seg for å arbeide natten igjennom med å forsøke å fremprovosere «Malfunction 54».

Det tok dem mange timer med forsøk av ulike slag, men til slutt lyktes de.

AECL og tilsynsmyndighet i USA ble kontaktet, og ikke lenge etter gikk det ut melding om å umiddelbart slutte å bruke prosedyren som førte til «Malfunction 54».

«Overflow»

Bruk av maskinene ble stoppet mens programvaren ble korrigert og oppdatert, men etter noen måneder ble Therac-25 atter en gang satt i tjeneste, i november 1986.

Seks uker senere, i midten januar 1987, drepte Therac-25 på nytt.

Det viste seg at Therac-25 hadde enda en programvarefeil, og denne hadde ikke blitt fikset.

Prosessen som hele tiden sjekket dreieskivens posisjon var bare allokert med én byte minne.

Når dreieskiven var i korrekt posisjon, var status oppgitt som 000. I alle andre tilfeller talte verdien opp derfra og programvaren ville ikke tillate at strålen ble aktivert inntil justering ble gjort og telleren satt tilbake til 000.

Men, når verdien nådde 255 og en feil posisjon ble oppdaget, ville telleren tikke over til 000, selv om dreieskivens posisjon ikke var riktig.

Dersom en operatør da aktiverte strålen, kunne en pasient motta maksimal dose uten at de reduserende magnetene eller metallfolien var i posisjon, akkurat som før.

Og det var nettopp det som skjedde 17. januar 1987, da Therac-25 tok sitt siste liv.

I februar 1987 ble Therac-25 atter en gang erklært defekt, og alle enheter tatt ut av tjeneste. All behandling ble stoppet inntil et stor mengde sikkerhetsutbedringer ble utført.

23 ulike endringer i programvaren og seks ulike fysiske sikkerhetsfunksjoner ble lagt til, og i juni 2987 ble Therac-25 igjen godkjent for bruk. Ryktet var imidlertid da grundig ødelagt, og i 1988 la AECL ned sin medisinske avdeling.

Erstatningssøksmål fra etterlatte ble avgjort ved forlik, og så aldri noen rettssal.

I dag er det så vidt man vet ingen som benytter en Therac-25-maskin.

Powered by Labrador CMS