Title: Therac-25
1Fehler in medizinischen Geräten
- Therac-25 Co
- Guy Kuam
- Markus Rieger
- Christian Trübswetter
2Die 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
3Grundlegende 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
4KonfliktSo 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
5Der Behandlungsraum
6Drehteller
7Drehtellerpositionierung
- 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
8Bedienung 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
9User Interface
10Benutzerfreundlichkeit 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
11Ü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 gehts weiter
- Wiederaufnahme der Behandlung nach Unterbrechung
bis zu fünf mal
12Die 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
13Das Unglück
- Sechsmal (1985 1987) trat eine massive
Überdosierung auf - 1987 wurde Therac-25 zurückgerufen
141. 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
152. 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
163. 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
174. 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
184. 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
195. 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
20Untersuchung 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
21Analyse 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
testset) - 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
22Texas Bug
23Texas Bug Code
Magnet Set bending magnet flag repeat
Set next magnet call Ptime if
mode/energy has changed, then exit until all
magnets are set return Ptime repeat
if bending magnet flag is set then if
editing taking place then if mode/energy
has changed then exit until hysteresis delay
has expired Clear bending magnet flag
return
Datent begin calculate table index
repeat fetch parameter output
parameter point to next parameter
until all parameters set call Magnet
if mode/energy changed then return end if
data entry is complete then set Tphase to 3 if
data entry is not complete then if reset
command entered then set Tphase to 0
246. 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
25Washington 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)
26Washington 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 (Fmal) - signalisiert Fehlfunktionen im System
- Falls Fmal ungleich 0
- Fehlfunktion ? SET-UP-TEST wird erneut
aufgerufen
27Washington 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
28Fazit (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
29Fazit (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
30Konsequenzen
- 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
31Sonstige 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
32Sonstige 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
33London 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
34London 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
35Das wars
- Danke fürs zuhören
- Fragen?
- Andere Fehler in medizinischen Geräten?
- ? Markus zeigt Web-Site