Therac-25
Fehler in medizinischen Geräten
Therac-25 & Co
Guy Kuam
Markus Rieger
Christian Trübswetter
04.12.2002
Therac-25
Kuam, Rieger, Trübswetter
-1-
Therac-25
Die Therac-Serie
• Therac-25 war die 3. Baureihe von medizinischen
Linearbeschleunigern, Betrieb ab 1983
– Strahlentherapie bei Krebspatienten
• Vorgänger: Therac-6, Therac-20
– elektro-mechanische Geräte
– Einstellungen direkt am Gerät
– mechanische Verriegelung („Hardware Interlocks“) als
Schutzvorrichtung
• Hersteller: AECL Medical (Atomic Energie of Canada
Limited), staatlich, heute privat
• Elf Geräte in USA und Canada
04.12.2002
Therac-25
Kuam, Rieger, Trübswetter
-2-
Therac-25
Grundlegende Funktionsweise
• Therac-25 Dual Mode:
– Röntgen- und Elektronenstrahlung
• Bei Geweben an der Oberfläche: Elektronenmodus
• Bei tieferen Geweben: Röntgenmodus
 Bündelung der Energie
– Ablenkmagneten und verschiedene Filter
04.12.2002
Therac-25
Kuam, Rieger, Trübswetter
-3-
Therac-25
Konflikt:
So viel Strahlung wie nötig, so wenig wie möglich !!
• Unterschied Röntgenmodus – Elektronenmodus:
– Bei Röntgenmodus: Platte zwischen Patient und Beschleuniger
• dadurch wird Energie absorbiert und fokussiert (punktuelle
Bestrahlung)
• deutlich mehr Ausgangsenergie nötig (vielfaches)
 Problem, wenn Platte bei Röntgenmodus an falscher
Stelle
04.12.2002
Therac-25
Kuam, Rieger, Trübswetter
-4-
Therac-25
04.12.2002
Der Behandlungsraum
Therac-25
Kuam, Rieger, Trübswetter
-5-
Therac-25
04.12.2002
Drehteller
Therac-25
Kuam, Rieger, Trübswetter
-6-
Therac-25
Drehtellerpositionierung
• Richtige Position entscheidend
– Bei Röntgenposition und Elektronenstrahlung:
 Dosis zu niedrig
– Bei Elektronenstrahlposition Und Röntgenstrahlung:
 Überdosis
• Computergesteuerte Drehtellerposition
– Computer kontrolliert Drehung
– Drei Sensorendaten aufgezeichnet
– Software überprüft die Werte und vergleicht sie
 Dadurch Verriegelungen überflüssig
04.12.2002
Therac-25
Kuam, Rieger, Trübswetter
-7-
Therac-25
Bedienung des Gerätes
•
Typischer Ablauf einer Behandlung
–
–
–
–
–
–
–
Behandlungsraum betreten
Patienten auf dem Behandlungstisch positionieren
Energie einstellen, Drehteller positionieren, Platten, Filter
einfügen, Magneten einstellen
Behandlungsraum verlassen
Patientendaten eingeben, nochmals Therac-25 Einstellungen
eingeben
Übereinstimmung überprüfen: „VERIFIED“
Behandlung beginnen
04.12.2002
Therac-25
Kuam, Rieger, Trübswetter
-8-
Therac-25
04.12.2002
User Interface
Therac-25
Kuam, Rieger, Trübswetter
-9-
Therac-25
Benutzerfreundlichkeit verbessern
• Pro Operator bis zu 30 Patienten pro Tag
• Datensatz zweimal eingeben dauerte zu lange
 Lösung: neues Feature
Durch Eingeben von „Enter“ existierenden Eintrag übernehmen
04.12.2002
Therac-25
Kuam, Rieger, Trübswetter
- 10 -
Therac-25
Überwachung des Patienten
• Kommunikation des Operators kommuniziert mit dem
Patienten per Videoübertragung
• Bei Unstimmigkeiten Unterbrechung:
– „Treatment suspend“: Behandlung von vorne beginnen
– „Treatment pause“: mit „p“ geht‘s weiter
– Wiederaufnahme der Behandlung nach Unterbrechung bis zu
fünf mal
04.12.2002
Therac-25
Kuam, Rieger, Trübswetter
- 11 -
Therac-25
Die Fehlermeldungen
• Systementwickler legte keinen Wert auf Implementierung
von Fehlermeldungen
• Sie waren
– Kryptisch („MALFUNCTION 54“)
– Nicht dokumentiert
– Traten ständig auf (bis zu 50 Mal pro Tag)
• Fehlermeldungen alltäglich, aber nicht wichtig, denn
– Maschinenservice macht Fehlerbehebung
– Verhinderung einer Überbestrahlung durch verschiedenste
andere eingebaute Sicherheitsmechanismen
04.12.2002
Therac-25
Kuam, Rieger, Trübswetter
- 12 -
Therac-25
Das Unglück
Sechsmal (1985 –1987) trat eine massive
Überdosierung auf
1987 wurde Therac-25 zurückgerufen
04.12.2002
Therac-25
Kuam, Rieger, Trübswetter
- 13 -
Therac-25
1. Fall: Marietta, Georgia, Juni 1985
• Behandlung einer 61-Jährigen Frau
• Bestrahlung der Lymphknoten im Elektronenmodus
• Überdosis (15 000rad statt 200rad):
– Brust entfernt
– Lähmung von Schulter und Arm
• Fall nicht untersucht
• AECL schließt Fehler ihrerseits aus
04.12.2002
Therac-25
Kuam, Rieger, Trübswetter
- 14 -
Therac-25
2. Fall: Hamilton, Ontario, Juli 1985
•
•
•
•
•
Patient mit Gebärmutterhalskrebs
Dosis von 200rad
Maschinenstop mit „HTILT“-Fehler
Konsolenanzeige „NO DOSE“
Fortsetzten der Behandlung
– Fortsetzung nach einem Fehler war die Regel
• Gleicher Fehler
• Fortsetzung noch viermal wiederholt, dann automatischer
Reset
• Patient stirbt fünf Monate später
• Geschätzte Überdosis: 15 000rad
04.12.2002
Therac-25
Kuam, Rieger, Trübswetter
- 15 -
Therac-25
3. Fall: Yakima, Washington, Dez. 1985
• AECL bessert Fehler aus
– Defekter Microswitch bewirkt 1-Bit-Fehler
– Switch kann falsche Positionsdaten an Therac-25 liefern
– Zusätzliche Kontrollsoftware für Microswitch
• Drei Monate später:
–
–
–
–
Patient erleidet Verbrennung der Hüfte
AECL gesteht Fehler nicht ein
Offiziell: „Cause unknown“
Patient lebt heute mit steifer Hüfte
04.12.2002
Therac-25
Kuam, Rieger, Trübswetter
- 16 -
Therac-25
4. Fall: Texas, März 1986 (I)
• Patient mit Tumor im Rücken, 180rad Elektronentherapie
• Operatorin gibt versehentlich „x“ für „X-Ray“ ein
– Mit  zurück und Eintrag „x“ in „e“ für geändert
– Kein anderer Parameter geändert
• Behandlungsunterbrechung mit „MALFUCTION 54“
– Undokumentiert, Dosis zu niedrig oder zu hoch
• Gerät stoppt mit „UNDERDOSE“
• Behandlung fortgesetzt, stoppt mit gleichem Fehler
• Patient ruft um Hilfe
04.12.2002
Therac-25
Kuam, Rieger, Trübswetter
- 17 -
Therac-25
4. Fall: Texas, März 1986 (II)
• Nach der ersten Dosis:
– Patient spürt einen „Schock“ im Rücken
– ruft Operatorin
• Videodisplay ausgesteckt und Audiosystem zur Zeit
kaputt
• Patient verlässt Behandlungstisch, genau als die zweite
Dosis kommt
• Tod nach fünf Monaten wegen Komplikationen aufgrund
Überdosis
• Geschätzte Überdosis ca. 20 000rad
04.12.2002
Therac-25
Kuam, Rieger, Trübswetter
- 18 -
Therac-25
5. Fall: Texas, April 1986
• Patient mit Hautkrebs am Gesicht, 180rad, Elektron
• Gleiche Operatorin, gleicher Fehler
• Operatorin gibt Daten ein und bemerkt, „x“ statt „e“
– Wieder „ “ und „Enter...“
– Andere Parameter gleich
• Behandlung startet, hält mit „MALFUNCTION 54“ an
• Operatorin hört Patienten schreien (Audio repariert)
• Tod 20 Tage später wegen Überbestrahlung des rechten
Schläfenlappen
• Geschätzte Überdosis: 20 000rad
04.12.2002
Therac-25
Kuam, Rieger, Trübswetter
- 19 -
Therac-25
Untersuchung der Texas-Fälle
• Operatorin des Krankenhauses versucht, zusammen mit
einem Physiker des Krankenhauses, das Problem zu
rekonstruieren
– Ergebnis: schnelle Eingabegeschwindigkeit Ursache für
„MALFUNCTION 54“
• Rekonstruktion des Fehlers auch an Therac-20
– Sicherheit nicht beeinträchtigt wegen „Hardware Interlocks“
• Lösung:
 und  werden auf den Keyboards entfernt
04.12.2002
Therac-25
Kuam, Rieger, Trübswetter
- 20 -
Therac-25
Analyse des Systems
• Betriebssystem: Eigenbau-Echtzeitsystem auf 32K PDP 11/23
• Präemptives Scheduling von kritischen und nichtkritischen tasks
– Serielle Ausführung der Tasks, gewichtet nach ihrer Criticality
– Keine Synchronisationsoperationen (außer „test&set“)
• Vier Hauptkomponenten der Software
–
–
–
–
Gespeicherte Daten (Maschinensetup und Patientenbehandlungsdaten)
Interrupt Handler
Kritische Tasks
Nicht kritische Tasks
• Keine Dokumentation der Software
• Keine Softwaretests (2700 Stunden in Betrieb)
• Risk Analysis ohne Software 1983
04.12.2002
Therac-25
Kuam, Rieger, Trübswetter
- 21 -
Therac-25
04.12.2002
Texas Bug
Therac-25
Kuam, Rieger, Trübswetter
- 22 -
Therac-25
Texas Bug: Code
Magnet:
Datent:
Set bending magnet flag
begin
repeat
calculate table index
Set next magnet
repeat
call Ptime
fetch parameter
if mode/energy has changed, then exit
output parameter
until all magnets are set
point to next parameter
return
until all parameters set
call Magnet
Ptime:
if mode/energy changed then return
repeat
end
if bending magnet flag is set then
if data entry is complete then set Tphase to 3
if editing taking place then
if data entry is not complete then
if mode/energy has changed then exit
if reset command entered then set Tphase to 0
until hysteresis delay has expired
Clear bending magnet flag
return
04.12.2002
Therac-25
Kuam, Rieger, Trübswetter
- 23 -
Therac-25
6. Fall: Yakima, Washington Jan, 1987
• Vorfall
– Brust eines Patienten verbrannt
– Tod im April
– Vermutlich Hamilton Fehler, der gefixt sein sollte
• Erkenntnis:
– Oft kein einzelner Fehler, Zusammenhang zwischen technischen und
menschlichen Fehlern
– Zu starkes Vertrauen in Software
• Beitragende Faktoren:
– Keine mechanische Verriegelung
– Unrealistische Risikobewertung
04.12.2002
Therac-25
Kuam, Rieger, Trübswetter
- 24 -
Therac-25
Washington Bug (I)
• Fehler nur unter ganz bestimmten Vorraussetzungen
• Einstellvorgang
–
–
–
–
–
–
–
–
Eingeben der Parameter an Konsole
Meldung auf Konsole: „UNVERIFIED“
Anschließend Feineinstellung direkt am Gerät
Konsolenmeldung: „VERIFIED“ (aller relevanten Parameter)
Operator drückt „SET“: Gerät bringt sich in gewünschte Position
Eingabe verifizieren  Änderung der Kontrollvariable „Tphase“
„SET-UP-TEST“-Routine aufrufen
Bei jedem Aufruf: setzen einer „shared variable“ („Class3“)
04.12.2002
Therac-25
Kuam, Rieger, Trübswetter
- 25 -
Therac-25
Washington Bug (II)
• Behandlung einer Inkonsistenz
– Wenn „Class 3“ ungleich 0:
• Vorliegen einer Inkonsistenz
– Wenn „Class 3“ gleich 0:
• alle relevanten Parameter konsistent
• Strahl nicht unterbrochen wird
– Nachdem „Class 3“ gesetzt, Überprüfung einer weiteren „Shared
variable“ („F$mal“)
• signalisiert Fehlfunktionen im System
– Falls „F$mal“ ungleich 0:
• Fehlfunktion  „SET-UP-TEST“ wird erneut aufgerufen
04.12.2002
Therac-25
Kuam, Rieger, Trübswetter
- 26 -
Therac-25
Washington Bug (III)
• Rekonstruktion des Fehlers
– Während der Einstellung des Geräts:
• „SET-UP-TEST“ mehrere 100 Mal durchlaufen
• ruft sich selber bei jeder Änderung erneut auf
– Bei jedem Durchlauf von „SET-UP-TEST“ Inkrementierung der
Variablen „Class 3“
– Größe von „Class 3“ Variable: ist 1 Byte groß
 Overflow bei 256: „Class 3“ wird 0 trotz Bestehen des Fehlers
 bei jedem 256. Aufruf: Fehler nicht entdeckt
– Wenn der Operator genau zu diesem Zeitpunkt „SET“ drückt,
kommt es zur Überdosis, da Gerät falsche Position hat
• Lösung: Anstatt Inkrementeller Variable Bool-Variable
04.12.2002
Therac-25
Kuam, Rieger, Trübswetter
- 27 -
Therac-25
Fazit (I)
• Verhinderung rechtzeitiger Diagnose durch
Gleichgültigkeit, Selbstzufriedenheit
• Sinn von Fehlermeldungen muss klar sein
• Grundursache beseitigen
– Echtes Problem nicht durch Fix des vermuteten Bugs zu beheben
• Hardware-Überwachung in der Regel sicherer als
Softwareüberwachung (aber kostenintensiver)
• Größere Sicherheit bei Verwendung eines kommerziellen
Betriebssystems
04.12.2002
Therac-25
Kuam, Rieger, Trübswetter
- 28 -
Therac-25
Fazit (II)
• Risikobewertung
– Therac-25 hatte Risk analysis (aber nicht die Software)
• Angemessene Untersuchung und Folgeuntersuchung
• Software Engineering Praktiken
– Kritische Software muss einfach und testbar sein
• Schwer einschätzbare Probleme bei Wiederverwendung
von bestehenden Softwareteilen
• Sicheres vs. benutzerfreundliches Benutzerinterface
04.12.2002
Therac-25
Kuam, Rieger, Trübswetter
- 29 -
Therac-25
Konsequenzen
• Erster großer Fehler in einem radiologischen Gerät
• Center for Devices and Radiological Health (CDRH)
eingeschaltet
• Softwareprozesse vieler Hersteller nicht ausgereift
 Fix sehr schwierig
• Reformen bei FDA/CDRH
– Stärkerer Fokus auf Software(prozesse)
– Höhere verbindliche „Reporting Requirements“
04.12.2002
Therac-25
Kuam, Rieger, Trübswetter
- 30 -
Therac-25
Sonstige Fehler (I)
• 19. September 1989
– Überlauf einer 2-Byte Integervariablen in einem Krankenhaus in
Washington DC
– den Absturz eines Notfallgerätes
– Ersatz durch manuelle Behandlung
• Frau dreht durch
– Mord an ihrer Tochter
– versuchte sich selbst und ihren Sohn umzubringen ,
– Falsche Diagnose aufgrund eines Softwarefehlers:
unheilbare Krankheit
04.12.2002
Therac-25
Kuam, Rieger, Trübswetter
- 31 -
Therac-25
Sonstige Fehler (II)
• Ein System für Überwachung mehrere Patienten
– Verwechslung der Patienten
– Sofortiger Rückruf
• Absturz eines programmierbaren Herzschrittmachers
während der Justierung
• Vorrichtung für das Zuführen des Insulins
– Fehler in der Regelungssoftware
04.12.2002
Therac-25
Kuam, Rieger, Trübswetter
- 32 -
Therac-25
London Ambulance Service, 1992 (I)
• Umstelleung des London Ambulance Service auf ein
Computer Aided Despatch (CAD) System
– Empfang der Notrufe für Krankenwagen
– Verteilung der Krankenwagen zu den Einsatzorten
– Automatisierung des Verwaltungsprozesses
• CAD Software
–
–
–
–
Nicht ausgereift
Nicht komplett implementiert
Komponenten nicht richtig abgestimmt
Nicht völlig getestet
04.12.2002
Therac-25
Kuam, Rieger, Trübswetter
- 33 -
Therac-25
London Ambulance Service, 1992 (II)
• Probleme mit dem Datenaustausch des Systems
• Personal nicht ausreichend ausgebildet
– Krankenwagenfahrer: ungewohnte und nicht vollständig
funktionierende Kommunikation per Spracheingabe
– Verwaltungspersonal in neuen Positionen, komplett ohne
Papierarbeit
• Das System wurde drei Tage lang benutzt
– Am 26.10, 27.10 und am 4.11.1992
• Stilllegung nach massiven öffentlicher Beschwerden und
großer Aufmerksamkeit der Medien
• Kosten: 11 000 000€
04.12.2002
Therac-25
Kuam, Rieger, Trübswetter
- 34 -
Therac-25
Das war‘s
Danke für‘s zuhören
Fragen?
Andere Fehler in medizinischen Geräten?
 Markus zeigt Web-Site
04.12.2002
Therac-25
Kuam, Rieger, Trübswetter
- 35 -

Vortrag