====== Therac-25: A hibaüzenet, amit senki nem értett ====== A **Therac-25** egy úgynevezett //lineáris gyorsító (linac)// volt, amelyet elsősorban rákos daganatok sugárkezelésére használtak az 1980-as években. Bár korának legmodernebb eszközének számított, a használata és elterjedtsége korlátozott maradt, éppen a bekövetkezett balesetek miatt. Összesen mindössze 11 darabot épített belőle az **AECL** (//Atomic Energy of Canada Limited//); 5 gép az Egyesült Államokban és 6 gép Kanadában üzemelt. Neves onkológiai központokban használták, többek között a texasi Tylerben, a washingtoni Yakimában és a kanadai Hamiltonban. {{ :passport:therac_25_1.png |Therac-25}} A berendezés a korábbi modellekhez (Therac-6, Therac-20) képest sokkal hatékonyabbnak tűnt, mert egyrészt a számítógépes vezérlés miatt a technikusoknak kevesebb manuális beállítást kellett végezniük, így több beteget tudtak ellátni egy nap alatt, másrészt egy új technológiának köszönhetően a gép kisebb helyet foglalt el, így olcsóbban lehetett telepíteni a kórházakba. A Therac-25 kezelései alapvetően két helyszínen – a sugárbiztos kezelőben és a külső vezérlőteremben – zajlottak, szigorú, de a szoftveresítés miatt felgyorsított protokoll szerint. Először a radiológus technikus a beteget a kezelőasztalra fektette és manuálisan beállította a gép fejét (gantry), a besugárzási mező méretét, valamint rögzítette a szükséges kiegészítőket. A gép úgynevezett „field light” (mezőfény) üzemmódba állításával egy tükör segítségével látható fényt vetítettek a betegre. Ez pontosan megmutatta, hová fog irányulni a (jó esetben) láthatatlan sugár. Ezután a technikus elhagyta a védett szobát és a külső terminálnál (billentyűzet és monitor segítségével) megadta a beteg adatait és a kezelési tervet: az üzemmódot (Elektron vagy röntgen), az energiaszintet és a dózist. A szoftver összehasonlította a terminálon beírt adatokat a gép mechanikus beállításaival. Ha egyeztek, megjelent a //"VERIFIED"// felirat. Végül a technikus a //"Beam ON"// gombbal indította el a kezelést, amely általában 1–5 percig tartott. ===== A végzetes "gyorsaság" ===== A tapasztalt kezelők rendkívül gyorsan, rutinszerűen kezelték a billentyűzetet. Néha előfordult, hogy a kezelő véletlenül X-et (Röntgenmód) ütött be, majd villámgyorsan visszalépett és ezt javította E-re (Elektronmód). Ha ez a javítás 8 másodpercen belül történt, a szoftver kijelezte az új módot, de (és ez a kezelő számára nem derült ki) a gép belső mechanikája (a forgótárcsa) már nem állt át időben. A berendezés ugyan jelezte a hibát a semmitmondó “**Malfunction 54**” hibakóddal, aminek a jelentése //„dose input 2”// (dózisbevitel 2) volt. Ez azonban még a szakembereknek sem mondott semmit arról, hogy mi a valódi probléma. A kezelőknek adott kézikönyvben nem szerepelt a hibakódok listája vagy magyarázata. Semmi nem utalt arra, hogy ez a jelzés bármilyen kockázatot jelentene a betegre. Amikor a **Malfunction 54** megjelent, a gép nem állt le vészleállással, hanem csak //„szüneteltette”// (Pause) a kezelést. A kezelőszemélyzet úgy tudta, hogy a szünetelést okozó hibák ártalmatlanok (például egy kisebb feszültségingadozás), és az eljárás a "P" (Proceed) gombbal egyszerűen folytatható. A képernyőn a hiba mellett az jelent meg, hogy //„No dose”// (nincs dózis), vagyis a gép azt állította, hogy még egyáltalán nem sugárzott. A kezelő ezért nyugodt szívvel nyomta meg a folytatást, hogy a beteg megkapja a tervezett dózist – miközben valójában minden egyes gombnyomással újabb halálos retesznyitást hajtott végre a gép. A technikusok naponta akár 40 hasonló hibaüzenetet is láttak, amelyek többsége valóban ártalmatlan volt. Emiatt kialakult náluk egyfajta //„riasztási fásultság”//: a Malfunction 54-et is csak egynek látták a sok bosszantó, de jelentéktelen szoftveres hiba közül. Több esetben a betegek a kezelések után jelezték, hogy valami nincs rendben. Ray Cox, az egyik áldozat, egy //„elektromos ütést”// érzett és látta a gépből kivillanó kékes fényt. A kórházi személyzet azonban eleinte nem hitt nekik, mert a monitor tájékoztatása szerint minden a legnagyobb rendben zajlott. Amikor a Tyler-i kórház először mégis jelezte a problémát az AECL-nek, a gyártó (meglehetősen arrogánsan) úgy reagált, hogy a Therac-25-tel soha nem történt még sugártúladagolás. Azt állították, hogy a gép hardveresen és szoftveresen is biztonságos, a hibát pedig elektromos zárlatnak, de leginkább tévedésnek tulajdonították. [{{ :passport:therac_25_2.png |Therac-25}}] ===== Fritz Hager magánnyomozása ===== **Fritz Hager**, aki a texasi Tylerben található **East Texas Cancer Center** vezető fizikusa volt, nem fogadta el a gyártó válaszait. Amikor 1986 áprilisában egy második beteg is ugyanazokat az igencsak gyanús jelenségeket észlelte ugyanannál a technikusnál, Hager elhatározta, hogy addig nem hagyja abba a készülék tesztelését, amíg nem reprodukálja a jelenséget. Hager és a technikus órákon és napokon át próbálgatták a gépet, de az hibamentesen működött. Végül rájöttek a titokra: a technikusnak olyan gyorsan kellett gépelnie, ahogy csak a napi rutin során szokott. Amikor Hagernek sikerült a javítást 8 másodpercen belül elvégeznie, a gép végre kiírta a hírhedt **Malfunction 54** üzenetet. Hager ekkor mérőműszereket telepített az ágyra, a beteg helyére, és elszörnyedve látta, hogy a gép a tervezett dózis százszorosát adta le. Ezzel a bizonyítékkal a kezében már nem tudott mit tenni a gyártó: kénytelenek voltak belső vizsgálatba kezdeni, majd végül beismerni a szoftverhibát és jelenteni az esetet az FDA-nak (//U.S. Food and Drug Administration//). Hager felismerte, hogy a gyártó mérnökei azért nem bukkanhattak a hibára, mert ők //„mérnöki lassúsággal”//; óvatosan gépeltek, míg a napi rutinban dolgozó technikusok ujjai szinte repültek a billentyűkön, és a hiba csak ilyenkor állt elő. Végül a vizsgálat során kielemezték, hogy a gépet vezérlő **PDP-11 számítógép** egy valós idejű operációs rendszert futtatott, amely egyszerre több feladatot (taszkot) kezelt. A szoftverben a billentyűzetről érkező adatok feldolgozása és a gép fizikai beállítása (például a tárcsa forgatása) két külön folyamat volt. Amikor a kezelő Röntgenmódról Elektronmódra váltott, a szoftver elindított egy folyamatot a tárcsa mozgatására. Ha azonban a kezelő a javítást 8 másodpercen belül elvégezte, a szoftver egy része már az új adatokat látta, de a gép fizikai beállításáért felelős rész még a régi állapotnál tartott. A gép úgy hitte, minden készen áll, de valójában a röntgenmódhoz szükséges óriási sugárenergiát küldte ki a betegre. ===== Következmények ===== A Therac-25 tragédiája alapjaiban rengette meg az orvostechnikai eszközök szabályozását és a szoftverfejlesztési etikát. Több túlélő áldozat és az elhunytak családtagjai indítottak kártérítési pert az AECL és a kezelést végző kórházak ellen. A felek végül minden esetben peren kívüli egyezséget kötöttek, így a kártérítések pontos összege soha nem került nyilvánosságra. Az amerikai FDA (Élelmiszer- és Gyógyszerügyi Hivatal) 1987-ben hibásnak nyilvánította a berendezést, és elrendelte az összes Therac-25 leállítását, amíg a gyártó el nem végezte a szükséges módosításokat. A gépeken végül több mint 20 módosítást végeztek, beépítették a korábban elhagyott mechanikus biztonsági reteszeket, amelyek a szoftvertől függetlenül képesek voltak leállítani a sugárzást. Az eset után kötelezővé tették a kórházak számára, hogy minden súlyos balesetet jelentsenek a hatóságoknak. Korábban ugyanis a gyártók elhallgathatták a hibákat, így a különböző kórházak nem tudtak egymás eseteiről. [{{ :passport:therac_25_3.png |Therac-25 séma, Source: createdigital.org.au / Diagram adapted from Leveson (1995)}}] A szoftver fejlesztőjét soha nem nevezték meg nyilvánosan. A vizsgálatok során kiderült, hogy a teljes vezérlőszoftvert egyetlen személy írta, PDP-11 assembly nyelven. A későbbi perek során a védőügyvédek sem tudták azonosítani a programozót, és semmit nem tudtak meg a végzettségéről vagy a korábbi tapasztalatairól sem. Annyit lehet tudni, hogy a programozó 1986-ban – még a botrány teljes kibontakozása előtt – távozott az AECL-től. A Therac-25 azóta a szoftvermérnöki képzés //„állatorvosi lova”// lett: azt tanítják vele, hogy a túlzott magabiztosság, a szoftverbe vetett vak bizalom és a független biztonsági rendszerek elhagyása életekbe kerülhet. Fritz Hager jelenleg is él, bár az 1980-as évek eseményei óta visszavonult a nyilvánosságtól. Nemrégiben (2024 végén) egy szakmai interjúban szólalt meg, amelyben ismét felidézte a Therac-25 eseményeit. Továbbra is fontosnak tartja, hogy a jövő szoftvermérnökei tanuljanak a múlt hibáiból. Egy friss publikációban úgy nyilatkozott, hogy a Therac-25 esetei egyedülállóak a sugárterápia történetében, és fontos, hogy ezeket az //"osztályteremben tanulják meg, ne pedig emberéletek árán"//. A fizikus elszántsága nélkül valószínűleg még több áldozata lett volna a hibás szoftvernek, mivel a gyártó (AECL) az ő mindent elsöprő bizonyítékai előtt minden vádat tagadott. {{page>passport:great_bugs}} {{page>passport:lablec}} ===== Források ===== [[https://www.cs.columbia.edu/~junfeng/08fa-e6998/sched/readings/therac25.pdf|cs.columbia.edu - therac25.pdf]] \\ [[https://en.wikipedia.org/wiki/Therac-25|en.wikipedia.org - Therac-25]] \\ [[https://ethicsunwrapped.utexas.edu/case-study/therac-25|ethicsunwrapped.utexas.edu - case-study/therac-25]] \\ [[https://utsouthwestern.elsevierpure.com/en/publications/thc20302-the-therac-25-incidents-and-present-day-problems-with-co|utsouthwestern.elsevierpure.com - Therac 25 incidents]] \\ [[https://de.wikipedia.org/wiki/Therac-25|de.wikipedia.org - Therac-25]] \\ [[https://smartbear.com/blog/bug-day-race-condition-therac-25/|smartbear.com - Bug day race condition therac-25]] \\ [[https://www.worldhealthexpo.com/insights/ai-automation/the-deadly-case-of-the-therac-25-a-warning-for-medical-ai|worldhealthexpo.com - The deadly case of the Therac-25: a warning for medical AI]] \\ [[https://onlineethics.org/cases/therac-25/history-introduction-and-shut-down-therac-25|onlineethics.org - A History of the Introduction and Shut Down of Therac-25]] \\ [[https://ethicsunwrapped.utexas.edu/case-study/therac-25|ethicsunwrapped.utexas.edu - Therac-25]] \\ [[https://w3.cs.jmu.edu/lam2mo/papers/2004-JMU-Therac.pdf|w3.cs.jmu.edu - 2004-JMU-Therac.pdf]]\\ ===== Ajánló ===== Hasonló jellegű bejegyzéseket a **Érdekes történet** tag alatt talál: {{topic>erdekes_toertenet&nodate&nouser}} {{tag>2026 Therac-25 great_bugs lineáris_gyorsító linac 1980 AECL Malfunction_54 Fritz_Hager FDA PDP-11 erdekes_toertenet tech USA}} ~~NOCACHE~~ Bejegyzésmegtekintések száma: {{counter|total}}