Therac-25 () — аппарат лучевой терапии, медицинский ускорительЖ. М. Ниязова О культуре безопасности в радиологических центрах страны // Альманах клинической медицины — Московский областной научно-исследовательский клинический институт им. М. Ф. Владимирского, 2006 — c. 91-91 — ISSN 2072-0505, созданный канадской государственной организацией «» (далее AECL) и запущенный в серию в 1982 году. С июня 1985 года по январь 1987 года этот аппарат стал причиной как минимум шести передозировок радиации, некоторые пациенты получили дозы в десятки тысяч рад. Как минимум двое умерли непосредственно от передозировок.
Непосредственной причиной трагедий были ошибки в программном обеспечении аппарата, а принципиальной проблемой была неверная стратегия обеспечения безопасности. Эти программные ошибки считаются приведшими к одним из наихудших последствий (по вине программного обеспечения) за всю историю использования компьютеровSimson Garfinkel History’s Worst Software Bugs // Wired, 11.08.2005. Согласно докладу в мае 1987 года, данные происшествия имели наихудшие последствия за всю 35-летнюю историю лучевой терапии.
Ошибки Therac-25 не являются единственными, приведшими к смерти и передозировкам людей от аппаратов лучевой терапии. Например, в 1991 году в Испании, в городе Сарагоса, на эксплуатировавшемся аппарате Sagitar-35 в течение 10 дней подверглись передозировке не менее 25 пациентов, из которых как минимум трое умерли. Отличительной особенностью случая с Therac-25 стало то, что для его расследования происшествий была организована группа экспертов, изучившая причины и особенности инцидентов. Это позволило не только реконструировать картину произошедшего, но и на основе полученного опыта улучшить процедуры, директивы и систему отчётности для обеспечения безопасности медицинских устройств.
Медицинское применение
Медицинские линейные ускорители используют электроны для создания высокоэнергетических лучей, которые позволяют уничтожать опухоли с минимальным ущербом для окружающей здоровой ткани. Опухоли, которые находятся относительно неглубоко, облучаются непосредственно электронами (бета-излучением); более глубоко расположенные опухоли облучаются вторичным рентгеновским излучением, возникающем при бомбардировке электронами специальной мишени.
История создания
Разработка В начале 1970-х годов и французская компания Thomson CGR совместно начали производство аппарата лучевой терапии. В результате их сотрудничества появился Therac-6, который мог создавать электронные лучи с энергией 6 МэВ. Позже появился Therac-20, позволяющий работать с энергией 20 МэВ в двух режимах — электронном и рентгеновском. Оба аппарата являлись версиями уже имеющихся разработок Thompson CGR («Neptune» и «Sagittaire» соответственно), которые были дополнены мини-ЭВМ DEC PDP-11. Компьютер использовался исключительно для упрощения работы с уже имеющимся аппаратным обеспечением, которое могло работать независимо от программного.
После создания Therac-20 в 1981 г. компании AECL и Thompson CGR, ссылаясь на давление конкуренции, не продлили срок действия своего соглашения о сотрудничестве.
В середине 1970-х годов AECL разработала двухпроходную концепцию линейного ускорителя, который занимал меньше места при достижении той же энергии ускорения и был более экономичен в производстве. На базе этого концепта был спроектирован Therac-25, который позволял работать как с электронными, так и рентгеновскими лучами до 25 МэВ, и имел при этом возможность выбирать ряд различных уровней энергии.
Таким образом, Therac-25 был более компактен, гибок в настройках, и, что спорно, более удобен в использовании. Кроме того, более высокие энергии давали выгоду от первой дозы: по мере увеличения энергии глубина облучения также увеличивалась, и тем самым ткань, более близкая к поверхности, облучалась меньше. Преимуществом было также и то, что как для электронной, так и для рентгеновской терапии использовался один и тот же аппарат.
Первый прототип, который управлялся полностью аппаратно, был создан в 1976 г. В конце 1982 г. была готова коммерческая версия, которая управлялась уже с помощью компьютера.
Влияние истории разработки на безопасность Для понимания причин несчастных случаев важны несколько особенностей разработки Therac-25. Прежде всего, Therac-6 и Therac-20, как и Therac-25, управлялись компьютером PDP-11. Однако AECL спроектировала Therac-25 таким образом, чтобы использовать программное обеспечение для взаимодействия с пользователем, что имело свои преимущества. Кроме того, при создании Therac-25 разработка шла в окружении уже имеющихся устройств, которые не были спроектированы для программного управления.
В дополнение, программное обеспечение Therac-25 брало на себя больше ответственности за безопасность работы всего комплекса, по сравнению с тем, что было ранее. Так, Therac-20 имел независимые цепи блокировки, контролирующие электронный луч, и механические блокираторы, которые также отвечали за безопасность. Также в Therac-20 для контроля безопасности использовались аппаратные автоматические выключатели () и отключающие предохранители (). В Therac-25 аппаратная защита была убрана и функции безопасности были возложены на программное обеспечение.
Таким образом в Therac-25 часть описанных функций взяло на себя программное обеспечение, а AECL приняло решение не дублировать проверку посредством аппаратных устройств.
Менеджер контроля качества AECL, ответственный за верификацию аппаратов Therac, сообщил, что с начала разработки программного обеспечения Therac-20 и Therac-25 использовался один и тот же пакет библиотек. Однако такое повторное использование оказалось ошибочным. Во время расследования в пакете библиотек была обнаружена ошибка, которая проявлялась на всех аппаратах — как на Therac-20, так и Therac-25 — но в последнем защита посредством внешних проверок была слабее.
Особенности конструкции
Устройство аппарата и принцип работы Аппарат располагался в комнате с радиационной защитой. ЭВМ и терминал находились за пределами комнаты. Между пациентом и врачом была организована видео- и громкоговорящая связь, в различных местах комнаты находились аварийные выключатели, отключающие излучение.
Сам аппарат представлял собой линейный ускоритель, под которым находился поворотный диск. Диск мог находиться в одном из трёх положений:
«Наводка» — на пути ускорителя устанавливается стальной отражатель, излучение имитируется светом. Данный режим служит для прицельного наведения на патологический очаг у пациента для того, чтобы не подвергуть его лишнему облучению. «Электронная терапия» — опухоль облучается электронами энергией от 5 до 25 МэВ. Узконаправленные пучки электронов с такой энергией очень опасны, и на пути пучка располагаются отклоняющие магниты, которые распределяют электроны по некоторой области (см. сила Лоренца). «Рентгеновская терапия» — глубоко расположенная опухоль облучается рентгеновскими лучами, получаемыми при столкновении электронов с вольфрамовой мишенью, за которой стоит конусообразный рассеиватель. Рассеивание было очень сильным, и получения терапевтических доз рентгеновского излучения использовали максимальную энергию электронов 25 МэВ. Доза излучения определялась с помощью ионизационной камеры, расположенной на том же диске.
Для определения положения диска служили три микропереключателя, которые включались выступами на диске, и плунжерный механизм, шток которого выдвигается только при нахождении диска в одном из трёх рабочих положений. ПО идентифицировало положение диска путём считывания 3-битного сигнала о положении микропереключателей.
Основная проблема комбинированных электронно-рентгеновских аппаратов в том, что если ускоритель заработает в рентгеновском режиме, а диск с насадками окажется «по-электронному», пациент, скорее всего, получит передозировку. При этом ионизационная камера будет не под пучком, и будет зафиксировано, что пациенту передана нулевая доза. Традиционно в таких аппаратах применяются электромеханические блокираторы, не позволяющие запускать аппарат в таком режиме.
Опухоль бывает на самых разных частях тела, и подготовка аппарата к каждому новому больному отнимает время. Расположение излучателя на моторизованной конструкции с компьютерным управлением позволяло быстро перевести машину в нужное положение.
Программное обеспечение Аппаратом управляла мини-ЭВМ PDP-11 с собственной операционной системой реального времени, выполняющей одновременно около десятка задач, которые разделялись на критические и некритические. Всё программное обеспечение было написано на языке ассемблера.
Программное обеспечение Therac-25 состояло из 20 тысяч инструкций кода и было разработано одним программистом в течение нескольких лет, при этом оно включало в себя части кода, написанного для Therac-6 и Therac-20.
В суде Техаса было предоставлено очень мало информации о том, кто был данным единственным программистом. AECL могла не предоставлять свои записи о трудоустройстве, а также сотрудники компании не предоставляли данных об их образовании, квалификации и опыте работы. Известно только, что разработчик программного обеспечения покинул компанию в 1986 году.
Пользовательский интерфейс Пользовательский интерфейс аппарата PATIENT NAME : TEST TREATMENT MODE : FIX BEAM TYPE: X ENERGY (MeV): 25
ACTUAL PRESCRIBED UNIT RATE/MINUTE 0 200 MONITOR UNITS 50 50 200 TIME (MIN) 0.27 1.00
GANTRY ROTATION (DEG) 0.0 0 VERIFIED COLLIMATOR ROTATION (DEG) 359.2 359 VERIFIED COLLIMATOR X (CM) 14.2 14.3 VERIFIED COLLIMATOR Y (CM) 27.2 27.3 VERIFIED WEDGE NUMBER 1 1 VERIFIED ACCESSORY NUMBER 0 0 VERIFIED
DATE : 84-OCT-26 SYSTEM : BEAM READY OP.MODE: TREAT AUTO TIME : 12:55.8 TREAT : TREAT PAUSE : X-RAY 173777 OPR ID : T25VO2-RO3 REASON : OPERATOR COMMAND:
Всё управление аппаратом шло через терминал DEC VT100. Установив вручную наклон и положение излучателя, оператор вводит с клавиатуры предписанные рецептом параметры. Если они совпадают с установленными вручную, на экране выводится «Verified» (). Если же параметры не совпадают, то лечение не может начаться до тех пор, пока оператор не внесёт коррективы. Также вводится тип излучения, назначенная доза и длительность процедуры.
На опытных образцах аппарата операторы жаловались, что на ввод рецепта для каждого пациента уходило слишком много времени. Программу модифицировали и вместо того, чтобы вручную вводить величину, можно было нажать клавишу «CR», скопировав информацию со старого рецепта. Также неправильно введённый рецепт можно было редактировать, нажимая на клавишу «Вверх».
Если аппарат во время лечения замечает какую-то проблему, то возможны два сценария поведения: «treatment suspend» () и «treatment pause» (). «treatment suspend» ведёт к перезагрузке компьютера. В случае «treatment pause» можно внести коррективы и продолжить лечение, нажав клавишу «P». Если событие «treatment pause» повторяется пять раз, система перезагружается. Некоторые сообщения об ошибках выводились в виде «Malfunction 1»… «Malfunction 64» (), где число означало номер аналогового или цифрового канала, по которому произошла ошибка. В инструкциях не было ни описания этих ошибок, ни каких-либо намёков, представляют ли эти ошибки какой-либо риск для пациента.
Событие «treatment suspend» случалась довольно часто. Например, это случалось при сдвиге излучателя или при недостаточной дозе излучения. Иногда случалось до 40 ошибок в день. Эти паузы не представляли никакой угрозы для пациента и после внесения корректировок можно было продолжить лечение. Как впоследствии выяснилось, эти ошибки давали врачам ложное чувство, что переоблучить пациента практически невозможно.
При выпуске аппарата AECL обнародовала результаты исследований надёжности, оформленные в виде блок-схемы. В этом отчёте рассматривались лишь случайные сбои компьютера — предполагалось, что программное обеспечение хорошо оттестировано и ошибок в нём не осталось.
Несчастные случаи