Therac -25 — это компьютеризированный аппарат лучевой терапии , произведенный компанией Atomic Energy of Canada Limited (AECL) в 1982 году после аппаратов Therac-6 и Therac-20 (более ранние аппараты производились в партнерстве с французской компанией Compagnie générale de radiologie (CGR) ). [1]
Therac-25 был вовлечен по меньшей мере в шесть аварий в период с 1985 по 1987 год, в ходе которых некоторые пациенты получили огромные передозировки радиации . [2] : 425 Из-за одновременных ошибок программирования (также известных как состояния гонки) он иногда давал своим пациентам дозы радиации, которые были в сотни раз больше нормы, что приводило к смерти или серьезным травмам. [3] Эти аварии подчеркнули опасность программного управления критически важными для безопасности системами.
Therac-25 стал стандартным примером для изучения в области медицинской информатики , разработки программного обеспечения и компьютерной этики . Он подчеркивает опасность самоуверенности инженеров [2] : 428 после того, как инженеры отклонили отчеты конечных пользователей, что привело к серьезным последствиям.
Французская компания CGR изготовила линейные ускорители Neptune и Sagittaire .
В начале 1970-х годов CGR и канадская публичная компания Atomic Energy of Canada Limited (AECL) сотрудничали в создании линейных ускорителей, управляемых миникомпьютером DEC PDP-11 : Therac-6, который производил рентгеновские лучи до 6 МэВ, и Therac-20, который мог производить рентгеновские лучи или электроны до 20 МэВ. Компьютер повысил простоту использования, поскольку ускоритель мог работать без него. CGR разработала программное обеспечение для Therac-6 и повторно использовала некоторые подпрограммы для Therac-20. [4]
В 1981 году обе компании прекратили свое соглашение о сотрудничестве. AECL разработала новую концепцию двойного прохода для ускорения электронов в более ограниченном пространстве, изменив свой источник энергии с клистрона на магнетрон . В некоторых методах полученные электроны используются напрямую, в то время как в других они сталкиваются с вольфрамовым анодом для получения рентгеновских лучей. Эта концепция двойного ускорителя была применена к Therac-20 и Therac-25, причем последний был намного более компактным, универсальным и простым в использовании. Также для больницы было более экономично иметь двойную машину, которая могла бы применять лечение электронами и рентгеновскими лучами, вместо двух машин.
Therac-25 был разработан как машина, управляемая компьютером, в результате чего некоторые механизмы безопасности были переведены с аппаратного на программное обеспечение. AECL решила не дублировать некоторые механизмы безопасности и повторно использовала модули и кодовые процедуры из Therac-20 для Therac-25.
Первый прототип Therac-25 был построен в 1976 году и поступил в продажу в конце 1982 года.
Программное обеспечение для Therac-25 разрабатывалось одним человеком в течение нескольких лет с использованием языка ассемблера PDP-11. Это была эволюция программного обеспечения Therac-6. В 1986 году программист покинул AECL. В последующем судебном процессе юристы не смогли идентифицировать программиста или узнать о его квалификации и опыте.
Пять машин были установлены в Соединенных Штатах и шесть в Канаде. [4]
После аварий в 1988 году AECL распустила медицинское подразделение AECL, а компания Theratronics International Ltd взяла на себя техническое обслуживание установленных машин Therac-25. [5]
Машина имела три режима работы, при этом поворотный стол перемещал некоторое оборудование в положение для каждого из этих режимов: либо свет, либо несколько сканирующих магнитов , либо вольфрамовую мишень и выравниватель . [6]
Пациент размещается на неподвижных носилках. Над ними находится поворотный стол, на котором закреплены компоненты, изменяющие электронный луч. Поворотный стол имеет положение для рентгеновского режима (фотонов), другое положение для электронного режима и третье положение для внесения корректировок с использованием видимого света. В этом положении электронный луч не ожидается, а свет, отраженный в зеркале из нержавеющей стали, имитирует луч. В этом положении нет ионной камеры, действующей как дозиметр радиации, поскольку не ожидается, что радиационный луч будет функционировать.
Поворотный стол имеет несколько микропереключателей , которые указывают положение компьютеру. Когда пластина находится в одном из трех разрешенных фиксированных положений, плунжер блокирует ее с помощью блокировки . В этом типе машины традиционно использовались электромеханические замки, чтобы гарантировать, что поворотный стол находится в правильном положении перед началом лечения. В Therac-25 они были заменены программными проверками. [6]
Шесть задокументированных несчастных случаев произошли, когда высокоточный электронный луч, сгенерированный в режиме рентгеновского излучения, был доставлен непосредственно к пациентам. Причиной стали две ошибки программного обеспечения. [6] Одна из них произошла, когда оператор неправильно выбрал режим рентгеновского излучения перед быстрым переключением в электронный режим, что позволило настроить электронный луч на режим рентгеновского излучения без установленной рентгеновской мишени. Вторая ошибка позволила электронному лучу активироваться в режиме полевого освещения, во время которого ни один сканер луча не был активен или мишень не была установлена.
В предыдущих моделях были предусмотрены аппаратные блокировки для предотвращения подобных сбоев, но в Therac-25 они были устранены, и теперь безопасность обеспечивается программными проверками.
Сильноточный электронный пучок поразил пациентов примерно в 100 раз большей дозой радиации, и в более узкой области, доставив потенциально смертельную дозу бета-излучения . Пациент Рэй Кокс описал это чувство как «сильный электрический шок», заставивший его закричать и выбежать из процедурного кабинета. [7] Через несколько дней появились радиационные ожоги , и у пациентов проявились симптомы радиационного отравления ; в трех случаях пострадавшие пациенты позже умерли в результате передозировки. [8]
Therac-25 работал в течение шести месяцев в Мариетте, штат Джорджия, в Региональном онкологическом центре Кеннестоуна, когда 3 июня 1985 года 61-летней женщине Кэти Ярброу провели лучевую терапию после лампэктомии . Ей назначили 10-МэВ-ную дозу электронной терапии в ключицу . Когда началась терапия, она заявила, что испытала «огромную силу жара... это раскаленное ощущение». Техник вошел в комнату, и Кэти сказала: «Вы меня обожгли». Техник заверил ее, что это невозможно. Она вернулась домой, где в последующие дни почувствовала покраснение в области лечения. Вскоре после этого ее плечо зафиксировалось на месте, и она испытала спазмы. В течение двух недель вышеупомянутое покраснение распространилось от груди до спины, что указывало на то, что источник ожога прошел через нее, что и происходит при радиационных ожогах. Персонал лечебного центра не верил, что Therac-25 мог вызвать такую травму, и это рассматривалось как симптом ее рака . Позже физик больницы проконсультировался с AECL по поводу инцидента. Он подсчитал, что примененная доза составила от 15 000 до 20 000 рад (поглощенная доза радиации), когда ей следовало получить дозу в 200 рад. Доза в 1000 рад может быть смертельной. В октябре 1985 года Кэти подала в суд на больницу и производителя машины. В ноябре 1985 года AECL был уведомлен об иске. Только в марте 1986 года, после еще одного инцидента с Therac-25, AECL сообщил FDA, что получил жалобу от пациента.
Из-за передозировки радиации ей пришлось хирургически удалить грудь, рука и плечо были обездвижены, и она постоянно испытывала боль. Функция распечатки лечения не была активирована во время лечения, и не было никаких записей о примененных данных радиации. Было достигнуто внесудебное урегулирование для разрешения иска. [3]
Therac-25 работал в клинике в течение шести месяцев, когда 26 июля 1985 года 40-летняя пациентка получала 24-ю процедуру лечения рака шейки матки . Оператор активировал процедуру, но через пять секунд машина остановилась с сообщением об ошибке «H-tilt», индикацией паузы в процедуре и дозиметром, показывающим, что облучение не применялось. Оператор нажал клавишу P(Proceed : continue). Машина снова остановилась. Оператор повторил процесс пять раз, пока машина не остановила процедуру. Был вызван техник, который не обнаружил никаких проблем. Машина использовалась для лечения шести других пациентов в тот же день.
Пациентка жаловалась на жжение и отек в этой области и была госпитализирована 30 июля. У нее подозревали передозировку радиации, и аппарат вывели из эксплуатации. 3 ноября 1985 года пациентка умерла от рака, хотя вскрытие показало, что если бы она не умерла тогда, ей пришлось бы сделать замену тазобедренного сустава из-за повреждений, вызванных передозировкой радиации. Техник подсчитал, что она получила от 13 000 до 17 000 рад.
Об инциденте было сообщено в FDA и Канадское бюро радиационной защиты.
AECL подозревал, что могла быть ошибка с тремя микропереключателями, которые сообщали о положении поворотного стола. AECL не смог воспроизвести отказ микропереключателей, и тестирование микропереключателей было неубедительным. Затем они изменили метод, чтобы сделать его терпимым к одному отказу, и модифицировали программное обеспечение, чтобы проверять, движется ли поворотный стол или находится ли он в положении лечения.
Впоследствии AECL заявила, что эти изменения привели к повышению безопасности на пять порядков. [3]
В декабре 1985 года у женщины развилась эритема с рисунком в виде параллельных полос после прохождения лечения на установке Therac-25. 31 января 1986 года персонал больницы направил письмо в AECL об инциденте. AECL ответил на двух страницах, подробно изложив причины, по которым передозировка радиации невозможна на установке Therac-25, заявив, что как отказ машины, так и ошибка оператора невозможны.
Через шесть месяцев у пациентки развились хронические язвы под кожей из-за некроза тканей. Ей сделали операцию и пересадили кожу. Пациентка продолжала жить с незначительными последствиями . [3]
За два года эта больница вылечила более 500 пациентов с помощью Therac-25 без каких-либо инцидентов. 21 марта 1986 года пациент пришел на девятый сеанс лечения опухоли на спине. Лечение было назначено на 22 МэВ электронов с дозой 180 рад на площади 10x17 см, с накопленной радиацией за 6 недель в размере 6000 рад.
Опытный оператор ввел данные сеанса и понял, что она написала «x» для «рентгеновского излучения» вместо «e» для «электронного пучка» в качестве типа лечения. С помощью курсора она поднялась и изменила «x» на «e», и поскольку остальные параметры были правильными, она нажимала, пока не добралась до командного поля. Все параметры были помечены как «Проверено», и появилось сообщение «Лучи готовы». Она нажала клавишу («Луч включен»). Аппарат остановился и отобразил сообщение «Неисправность 54» (ошибка 54). Также было показано «Пауза лечения». В руководстве говорилось, что сообщение «Неисправность 54» было ошибкой «ввода дозы 2». Позже техник подтвердил, что «ввод дозы 2» означал, что доставленное излучение было либо слишком высоким, либо слишком низким.↵ EnterB
Радиационный монитор (дозиметр) отметил поставку 6 единиц, когда он запрашивал 202 единицы. Оператор нажал (Продолжить: продолжить). Машина снова остановилась с сообщением «Неисправность 54» (ошибка 54), а дозиметр показал, что подал меньше единиц, чем требовалось. Камера наблюдения в комнате радиации была отключена, а переговорное устройство в тот день было сломано.P
При первой дозе пациент почувствовал удар током и услышал треск от аппарата. Поскольку это был его девятый сеанс, он понял, что это ненормально. Он начал вставать из-за стола, чтобы попросить о помощи. В этот момент оператор нажал, чтобы продолжить лечение. Пациент почувствовал удар током через руку, как будто ему оторвали руку. Он добрался до двери и начал стучать в нее, пока оператор ее не открыл. На место происшествия немедленно вызвали врача, который заметил сильную эритему в этой области, заподозрив, что это был простой удар током. Он отправил пациента домой. Больничный физик проверил аппарат, и, поскольку он был откалиброван в соответствии с правильными техническими характеристиками, он продолжал лечить пациентов в течение всего дня. Техники не знали, что пациент получил огромную дозу радиации от 16 500 до 25 000 рад менее чем за секунду на площади в один см 2 . Треск машины был вызван насыщением ионизационных камер, что свидетельствовало о том, что приложенная доза радиации была очень низкой.P
В течение следующих недель у пациента наблюдался паралич левой руки, тошнота, рвота, и в итоге он был госпитализирован с радиационным миелитом спинного мозга. Его ноги, средняя часть диафрагмы и голосовые связки оказались парализованы. У него также были рецидивирующие кожные инфекции простого герпеса. Он умер через пять месяцев после передозировки.
Со следующего дня после аварии техники AECL проверили машину и не смогли воспроизвести ошибку 54. Они проверили заземление машины, чтобы исключить поражение электрическим током как причину. Машина снова была в работе 7 апреля 1986 года. [3]
11 апреля 1986 года пациенту предстояло пройти электронное лечение рака кожи на лице. Рецепт был 10 МэВ для области 7x10 см. Оператор был тот же, что и в мартовском инциденте тремя неделями ранее. После заполнения всех данных о лечении она поняла, что ей нужно изменить режим с X на E. Она так и сделала и нажала , чтобы перейти к командному блоку. Когда на дисплее появилось сообщение «Beam ready», она нажала (Proceed : continue). Аппарат издал громкий шум, который был слышен через переговорное устройство. На дисплее появилась ошибка 54. Оператор вошел в комнату, и пациент описал жжение на лице. Пациент умер 1 мая 1986 года, чуть меньше чем через 3 недели. Вскрытие показало тяжелое радиационное поражение правой височной доли и ствола мозга.↵ EnterP
Физик больницы остановил машинное лечение и уведомил AECL. После напряженной работы физик и оператор смогли воспроизвести сообщение об ошибке 54. Они определили, что скорость редактирования ввода данных была ключевым фактором в возникновении ошибки 54. После долгой практики он смог воспроизвести ошибку 54 по своему желанию. AECL заявили, что они не смогли воспроизвести ошибку, и они получили ее только после того, как выполнили инструкции физика, так что ввод данных был очень быстрым. [3]
17 января 1987 года пациент должен был получить лечение с двумя проверочными экспозициями пленки 4 и 3 рад, плюс 79-рад фотонная терапия для общей экспозиции 86 рад. Пленка была помещена под пациента, и 4 рад были введены через отверстие 22 см × 18 см. Машина была остановлена, отверстие было открыто до 35 см × 35 см, и была введена доза 3 рад. Машина остановилась. Оператор вошел в комнату, чтобы снять пластины пленки и отрегулировать положение пациента. Он использовал ручное управление внутри комнаты, чтобы отрегулировать поворотный стол. Он вышел из комнаты, забыв пластины пленки. В комнате управления, увидев сообщение «Луч готов», он нажал клавишу, чтобы запустить лучи. Через 5 секунд машина остановилась и отобразила сообщение, которое быстро исчезло. Поскольку машина была приостановлена, оператор нажал (Продолжить: продолжить). Машина остановилась, указав «Плоскостность» в качестве причины. Оператор услышал пациента по внутренней связи, но не смог его понять и вошел в комнату. Пациент почувствовал сильное жжение в груди. Экран показал, что ему дали всего 7 рад. Через несколько часов у пациента появились ожоги на коже в этой области. Четыре дня спустя покраснение этой области имело полосатый рисунок, похожий на тот, что был получен в инциденте годом ранее, и причину которого они не нашли. AECL начала расследование, но не смогла воспроизвести событие.BP
Физик больницы провел испытания с пленочными пластинами, чтобы проверить, сможет ли он воссоздать инцидент, который включал два параметра рентгеновского излучения с поворотным столом в положении полевого освещения. Пленка, по-видимому, совпадала с пленкой, которая была оставлена по ошибке под пациентом во время аварии. Было обнаружено, что пациент подвергся облучению от 8000 до 10000 рад вместо предписанных 86 рад. Пациент умер в апреле 1987 года от осложнений, вызванных передозировкой радиации. Родственники подали иск, который закончился внесудебным урегулированием. [3]
Комиссия приписала основную причину в целом плохим практикам проектирования и разработки программного обеспечения, а не выделению конкретных ошибок кодирования. В частности, программное обеспечение было разработано таким образом, что его было реально невозможно протестировать строгим, автоматизированным способом. : Safeware, [48] [ требуется дополнительная ссылка(и) ]
Исследователи, которые расследовали несчастные случаи, обнаружили несколько способствующих причин. Они включали следующие институциональные причины:
Исследователи также обнаружили несколько технических проблем:
Левесон отмечает, что урок, который следует извлечь из инцидента, заключается в том, что не следует предполагать, что повторно используемое программное обеспечение безопасно: [9] «Часто делается наивное предположение, что повторное использование программного обеспечения или использование коммерческого готового программного обеспечения повысит безопасность, поскольку программное обеспечение будет широко использоваться. Повторное использование программных модулей не гарантирует безопасности в новой системе, в которую они переносятся...» [6] В ответ на инциденты, подобные тем, что связаны с Therac-25, был создан стандарт IEC 62304 , который вводит стандарты жизненного цикла разработки программного обеспечения для медицинских устройств и конкретные рекомендации по использованию программного обеспечения неизвестной родословной . [10]