Therac-25

Материал из Википедии — свободной энциклопедии
Перейти к: навигация, поиск
Пользовательский интерфейс аппарата[1]

PATIENT NAME   : JOHN DOE
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:

Терак-25 (англ. Therac-25) — аппарат лучевой терапии, медицинский ускоритель[2], созданный канадской государственной организацией «Atomic Energy of Canada Limited» (в дальнейшем AECL) и запущенный в серию в 1982 году. С июня 1985 года по январь 1987 года этот аппарат стал причиной как минимум шести передозировок радиации, некоторые пациенты получили дозы в десятки тысяч рад. Как минимум двое умерли непосредственно от передозировок.

Непосредственной причиной трагедий были ошибки в программном обеспечении аппарата, а принципиальной проблемой была неверная стратегия обеспечения безопасности. Эти программные ошибки считаются приведшими к одним из наихудших последствий (по вине программного обеспечения) за всю историю использования компьютеров[3]. Согласно докладу в мае 1987 года, данные происшествия имели наихудшие последствия за всю 35-летнюю историю лучевой терапии[4][5].

Ошибки Therac-25 не являются единственными, приведшими к смерти и передозировкам людей от аппаратов лучевой терапии. Например, в 1991-м году в Испании, в городе Сарагоса, на эксплуатировавшемся аппарате Sagitar-35, в течении 10 дней подверглись передозировке не менее 24 пациентов, из которых как минимум трое умерли[6][7]. Отличительной особенностью Therac-25 является то, что для расследования происшествий была организована группа экспертов, которая изучала причины и особенности инцидентов. Это позволило не только реконструировать картину произошедшего, но и на основе полученного опыта улучшить процедуры, директивы и систему отчетности для обеспечения безопасности медицинских устройств[5].

Общие сведения[править | править вики-текст]

Медицинкские линейные ускорители усокряют электроны для создания лучей высокой энергии, что позволяет уничтожать опухоли с минимальным ущербом для окружающей здоровой ткани. Опухоли, которые находятся относительно не глубоко, облучаются электронами (бета-излучение)[1][5]. Чтобы достичь более глубоких опухолей, электронами бомбардируется мишень, а вторичным рентгеновским излучением облучается опухоль.

В начале 1970-х годов AECL[en] и французская компания Thompson CGR совместно начали производство аппарата лучевой терапии. В результате их сотрудничества появился Therac-6, который мог создавать электронные лучи с энергией 6 МэВ. Позже появился Therac-20, позволяющий работать с энергией 20 МэВ в двух режимах — электронным и рентгеновским. Оба аппарата являлись версиями уже имеющихся разработок Thompson CGR (the Neptune и Sagittaire соответственно), которые были дополнены мини-ЭВМ DEC PDP-11. Компьютер использовался исключительно для упрощения работы с уже имеющимся аппаратным обеспечением, которое могло работать независимо от программного[1][5].

После создания Therac-20 в 1981 г. компании AECL и Thompson CGR, ссылаясь на давление конкуренции, не продлили срок действия своего соглашения о сотрудничестве[1][5].

В середине 1970-х годов AECL разработала двухпроходную концепцию линейного ускорителя, который занимал меньше места при достижении той же энергии ускорения и был более экономичен в производстве. На базе этого концепта был спроектирован Therac-25, который позволял работать как с электронными, так и рентгеновскими лучами до 25 МэВ, и имел возможность при этом выбирать ряд различных уровней энергии[1][5].

Таким образом, Therac-25 был более компектен, гибок в настройках, и что спорно, удобен в использовании[1][5]. Кроме того, более высокие энергии давали выгоду от феномена глубокой дозы: по мере увеличения энергии глубина облучения также увеличивалась, и тем самым ткань, более близкая к поверхности, облучалась меньше. К экономическим преимуществам также относится то, что использовалась только одна машина для электронной и рентгеновской терапии[1][5].

Первый прототип был собран в 1976 г., серийное производство началось в 1982.

Особенности конструкции[править | править вики-текст]

Аппаратура[править | править вики-текст]

Аппарат располагался в комнате с радиационной защитой. ЭВМ и терминал находились за пределами комнаты. Между пациентом и врачом была организована видео- и громкоговорящая связь, в различных местах комнаты находились аварийные выключатели, отключающие излучение.

Сам аппарат представлял собой линейный ускоритель, под которым находился поворотный диск. Диск мог находиться в одном из трёх положений:

  • «Наводка». На пути ускорителя ставится стальной отражатель, излучение имитируется светом. Служит для наводки пучка на больное место.
  • «Электронная терапия». В этом режиме опухоль облучается электронами энергией от 5 до 25 МэВ. Узконаправленные пучки электронов с такой энергией очень опасны, и на пути пучка располагаются отклоняющие магниты, которые распределяют электроны по некоторой области (см. Сила Лоренца).
  • «Рентгеновская терапия». Энергия только одна, 25 МэВ. На пути излучения располагается вольфрамовая мишень, после которой стоит конусообразный рассеиватель. Рассеивание было очень сильным, поэтому для получения терапевтических доз рентгеновского излучения была необходима высокая доза электронов. Доза излучения определялась с помощью ионизационной камеры, расположенной на том же диске.

Для определения положения диска служили три микропереключателя, которые включались выступами на диске.

Основная проблема комбинированных электронно-рентгеновских аппаратов в том, что если по какой-то причине диск окажется не в том положении, пациент, скорее всего, получит передозировку. При этом ионизационная камера будет не под пучком, и будет зафиксировано, что пациенту передана нулевая доза. Традиционно, в таких аппаратах применяются электромеханические блокираторы, не позволяющие запускать аппарат в таком режиме.

В Therac-20 для контроля безопасности использовались аппаратные автоматические выключатели (circuit breakers) и отключающие предохранители (incorporating fuses). В Therac-25 аппаратная защита была убрана и функции безопасности были возложены на программное обеспечение[8].

Программное обеспечение[править | править вики-текст]

Аппаратом управляла мини-ЭВМ PDP-11 с собственной операционной системой реального времени, выполняющей одновременно около десятка задач, которые разделялись на критические и некритические. Всё программное обеспечение было написано на языке ассемблера.

Программное обеспечение Therac-25 состояло из 20 тысяч инструкций кода и была разработано одним программистом в течение нескольких лет, при этом оно включало в себя части кода, написанного для Therac-6 и Therac-20[8].

В суде Техаса было предоставлено очень мало информации о том, кто был данным единственным программистом. AECL могла не предоставлять свои записи о трудоустройстве, а также сотрудники компании не предоставляли данных об их образовании, квалификации и опыте работы. Известно только, что разработчик программного обеспечения покинул компанию в 1986-м году[8].

Пользовательский интерфейс[править | править вики-текст]

Всё управление аппаратом шло через терминал DEC VT100. Установив вручную наклон и положение излучателя, врач вводит предписанные рецептом величины. Если предписанные рецептом величины совпадают с реальными, на экране выводится «Verified». Если же величины не совпадают, лечение не может начаться, пока врач не внесёт коррективы. Также вводится тип лечения и назначенная доза.

На опытных образцах аппарата операторы жаловались, что слишком долго было вводить рецепт для каждого пациента. Программу модифицировали: вместо того, чтобы вручную вводить величину, можно было нажать «CR», скопировав информацию со старого рецепта. Также неправильно введённый рецепт можно было редактировать, нажимая на клавишу «Вверх».

Если аппарат во время лечения заметит какую-то проблему, то возможны два варианта. Если случается treatment suspend, компьютер перезагружается. Если же случается treatment pause, можно внести коррективы и продолжить лечение, нажав на «P». Если treatment pause повторяется пять раз, система перезагружается. Некоторые сообщения об ошибках выводились в виде Malfunction 1Malfunction 64, где число означало лишь номер датчика. В инструкциях не было ни описания этих ошибок, ни каких-либо намёков, представляют ли эти ошибки какой-либо риск для пациента.

Treatment pause случалась довольно часто. Например, это случалось при сдвиге излучателя, недостаточной дозе излучения. Иногда случалось до 40 ошибок в день. Эти паузы не составляли никакой угрозы для пациента и после внесения корректив можно было продолжить лечение. Как впоследствии выяснилось, эти ошибки давали врачам ложное чувство, что переоблучить пациента практически невозможно.

При выпуске аппарата AECL обнародовала результаты исследований надёжности, оформленные в виде блок-схемы. В этом отчёте рассматривались лишь случайные сбои компьютера — предполагалось, что ПО хорошо оттестировано и ошибок в нём не осталось.

Несчастные случаи[править | править вики-текст]

Всего было установлено одиннадцать аппаратов: пять в США и шесть в Канаде. Большинство из них было запущено в эксплуатацию в 1983-м году[8].

3 июня 1985, Мариетта, штат Джорджия[править | править вики-текст]

Информация об этом инциденте довольно расплывчатая, поскольку он не расследовался. Никто, даже врачи, не считали Therac-25 его причиной, хотя пациентка заявляла, что она получила ожоги во время лучевой терапии.

После удаления опухоли молочной железы, 61-летняя женщина проходила 10-МэВ электронную терапию на близлежащем лимфоузле в районе ключицы. Когда подали излучение, она почувствовала ожог. После процедуры она сказала: «Вы обожгли меня», на что врач ответил: «Это невозможно». Хотя явных признаков ожога не было, кожа на этом месте была «тёплой на ощупь».

Через некоторое время плечо опухло, боль была такая, что невозможно было пошевелить рукой. Было очевидно, что она получила радиационный ожог, но врачи не могли найти объяснение этому. Доза радиации оценивалась в 15—20 тыс. рад (облучение всего тела в 1000 рад считается смертельным, обычные терапевтические дозы не превышают 200 рад)[7]. Грудь пришлось удалить. Врач Тим Стилл спросил у AECL, может ли Therac работать в электронном режиме без использования отклоняющих магнитов. В конце 1985 г. в суд подали иск, который был урегулирован в досудебном порядке.

Впоследствии женщина погибла в автокатастрофе[8].

26 июля 1985, Гамильтон, Онтарио[править | править вики-текст]

40-летняя пациентка проходила лечение рака шейки матки, это была её 24-я процедура Therac-25. Через 5 секунд после начала лечения аппарат вывел сообщение «H-tilt», что означало No dose.[8][9] Нажав «P», оператор начал вторую попытку. После пяти неудачных попыток он вызвал ремонтника, но тот не нашёл никаких поломок. Пациентка почувствовала ожог. Через три дня её начали беспокоить боли в бедре и эта область тела покраснела и опухла.

Общая доза радиации, полученной пациенткой, оценивается от 13 до 17 тыс. рад[7].

Пациентка умерла 3 ноября 1985 года. Вскрытие показало, что причиной смерти является рак, но если бы женщина не умерла, ей бы пришлось ампутировать бедро из-за радиации.[8]

AECL расследовало инцидент, но не смогла воспроизвести ошибку. AECL дала неподтверждённое заключение, что при заклинивании одного из микропереключателей диск теоретически мог оказаться не в том положении. В конструкцию аппарата добавили четвёртый, контрольный переключатель, а также изменена подпрограмма, проверявшая положение диска. Через три месяца AECL отозвала все Therac’и и внесла в них соответствующие изменения.

Канадское бюро радиационной безопасности исследовало аппарат. Отчёт гласил, что причиной является поломка микропереключателя, а также ошибки в проектировании аппаратуры и программного обеспечения.

Независимый эксперт, нанятый Фондом рака Онтарио, заявил, что основной проблемой было отсутствие аппаратных блокираторов. Блокиратор установили своими силами (задокументированных случаев переоблучения на этом экземпляре больше не было).

11 декабря 1985, Якима, штат Вашингтон[править | править вики-текст]

Информация об инциденте туманна, так как до последнего момента аппарат был вне подозрения. Therac был модифицирован в ответ на происшествие в Гамильтоне. Пациентка получила покраснение кожи правого бедра в виде параллельных полос. Причиной считали либо реакцию на химиотерапию, либо ожог электрогрелкой. Впоследствии выяснилось, что расположение проводов на грелке совсем не напоминало ожог. Пациентка выжила.

21 марта — 11 апреля 1986, Тайлер, штат Техас[править | править вики-текст]

21 марта пациенту Рэю Коксу (Ray Cox) была предписана электронная терапия. Медсестра случайно ввела «x» (рентгеновская) — рентгеновская терапия применялась чаще и она привыкла к этому. Затем, вернувшись кнопкой «↑», она заменила «x» на «e» и несколько раз нажала «CR». Через несколько секунд после запуска излучения машина остановилась с сообщением «Malfunction 54». Подобные остановки встречались и раньше, но единственным их последствием было некоторое неудобство. Так что она нажала «P». Конкретно в этот день видеосвязь была отключена, а громкоговорящая — сломана, поэтому никакой связи с пациентом не было.

В это время пациент ощутил ожог. Так как это была его не первая процедура (девятая по счету), он понял, что что-то не так. Как только он начал вставать со стола, в этот момент излучатель включился и повторно обжёг руку. Рэй встал, прошел качаясь до входа в комнату и начал стучать в дверь. Услышав стук, оператор немедленно открыл дверь шокированному и раненому пациенту[8].

Рэй Кокс немедленно обратился в медпункт, но из-за отсутствия серьёзных причин (только покраснение кожи) был отправлен домой.

Был вызван врач Фриц Хагер, и он убедился, что калибровка в пределах нормы. Медперсонал проверил машину и не смог обнаружить каких-либо проблем. Therac-25 был опять включен и проработал до конца дня.

Ночью Рэй из-за боли в шее и плече обратился в скорую помощь больницы, где ему поставили диагноз удара электрическим током.

На следующий день аппаратную закрыли. Два техника AECL целый день тестировали аппарат, но не сумели воспроизвести ошибку Malfunction 54. Согласно документации производителя, сообщение возникало тогда, когда машина выполнила передозировку или недозировку, но без каких-либо подробностей, что именно произошло. Электрик из независимой компании сказал, что с заземлением всё в порядке и удара током быть не могло. Хагер запросил у AECL, были ли другие случаи переоблучения и получил ответ «нет» (что странно — это было через семь месяцев после случая в Гамильтоне, да и после аварии в Мариетте они должны были получить иск). 7 апреля Therac был введён в эксплуатацию.

Общая доза радиации, полученная пациентом, оценивается от 16500 до 25000 рад, и она была получена менее, чем за секунду, на площадь около 1 см².[7]

Впоследствии Рэй Кокс начал страдать от периодических приступов тошноты и его левую руку парализовало. Он был госпитализирован по причине радиационного облучения. Наступили ещё большие осложнения (включая паралич ног), и пациент умер в сентябре этого же года.

11 апреля при похожих обстоятельствах этот же Therac-25, управляемый этой же медсестрой, переоблучил ещё одного пациента — это был 66-летний водитель автобуса Вернон Кидд (Vernon Kidd). Ему была прописана терапия рака кожи лица. На этот раз удаленная связь работала — оператор услышала громкий крик и немедленно вбежала в комнату с пациентом, у которого половина лица была обожжена.

Полученная доза была как минимум 4000 рад. Кидд умер через три недели, 1 мая[7].

Вскрытие показало, что причиной смерти являлось высокая доза облучения правой доли мозга и мозгового ствола.

Машина была сразу же выведена из эксплуатации и Хагер начал собственное расследование. Медсестра вспомнила, что в тот день она заменяла «x» на «e». Выяснилось, что если сделать это достаточно быстро, переоблучение случалось практически со 100-процентной вероятностью.

Началось расследование причин ошибки, которое затянулось более чем на два года.

15 апреля AECL отправила отчет о инциденте в FDA и разослало письмо во все клиники, предписывавшее выломать и заклеить кнопку «↑».[8]

« С настоящего момента и до последующего уведомления кнопка, используемая для перемещения курсора в обратную сторону по устанавливаемым значениям (то есть кнопка «UP» с изображением стрелки вверх) не должна использоваться для редактирования или любых иных целей.

Чтобы избежать случайного использования этой кнопки, её нужно снять, а контакты зафиксировать в разомкнутом положении с помощью изоленты или другого изоляционного материала…

Отключение этой клавиши означает, что в случае, если введены неверные данные, то придётся сбросить данные клавишей «R» для перезагрузки и ввести их заново.

»

Данная ограниченная акция не удовлетворила FDA, и 2 мая 1986 года агентство объявило Therac-25 дефектным. Официальные лица FDA также выразили недовольство, что письмо AECL пользователям машины не объясняло адекватно суть дефекта и ту опасность, которая с ним связана.[8]

Врач из Чикаго Фрэнк Борджер, узнав про ошибку Therac-25, решил выяснить, возможно ли такое на его Therac-20. Ошибку повторить не удалось, но позже обнаружилась связь. Когда новая группа студентов начинала практику на Therac-20, часто срабатывали предохранители-автоматы. Это повторялось в течение трёх недель, но потом практически прекращалось — до следующей группы. Новички часто используют нестандартные способы ввода информации — это значит, что при определённой последовательности, введённой с клавиатуры, случается аварийная ситуация. До переоблучения она не развивалась лишь потому, что в Therac-20 стоял аппаратный блокиратор.

Пользователи Therac-25 создали инициативную группу и во время ежегодной конференции Американской ассоциации физиотерапевтов было проведено первое заседание.

FDA задала следующие вопросы:

  • Почему AECL вносит исправления в программное обеспечение, не объясняя пользователям причин?
  • Знала ли AECL о возможных проблемах ПО?
  • Если по поводу первого переоблучения AECL получила судебный иск, то почему не было попыток выяснить причину?
  • Проходило ли исправленное программное обеспечение тестирование?

17 января 1987, Якима, штат Вашингтон[править | править вики-текст]

Пациенту были прописаны два рентгеновских снимка и рентгеновская терапия. Пациент получил передозировку от 8 до 10 тыс. рад и впоследствии умер в апреле этого же года. Однако из-под него забыли вытащить плёнку, что стало вещественным доказательством некорректной работы аппарата.

3 февраля AECL внесла исправление в аппарат. Однако FDA задала ответный вопрос: уверены ли вы в безопасности всей системы?

13 апреля было проведено заседание, на котором присутствовали руководство AECL, пользователи Therac и официальные лица США и Канады. Был сформулирован список желаемых изменений.

Расследование[править | править вики-текст]

Во время ведения судебных дел против AECL прокуратура штата Техас обратилась к Нэнси Ливесон (Nancy G. Leveson) как к эксперту для расследования. В то время она являлась профессором компьютерных наук Калифорнийского Университета в Ирвайне и играла ключевую роль в пионерном развитии наук компьютерной безопасности. Нэнси объединила свои усилия с Кларком Тёрнером (Clark S. Turner) и приблизительно в течение трех лет они занимались сбором материалов и реконструкцией событий, связанных с Therac-25[8]. Данный результат является особенно важным, так как в большинстве инцидентов по безопасности информация является неполной, противоречивой и даже неверной[7].

Замеченные ошибки[править | править вики-текст]

В программном обеспечении Therac-25 были найдены как минимум четыре ошибки, которые могли привести к переоблучению.

  1. Одна и та же переменная применялась как для анализа введённых чисел, так и для определения положения поворотного круга. Поэтому при быстром вводе Therac мог иметь дело с неправильным положением поворотного круга (так называемое состояние гонки).
  2. Настройка положения отклоняющих магнитов занимает около 8 секунд. Если за это время параметры типа и мощности излучения были изменены, а курсор установлен на финальную позицию, то система не обнаруживала изменений.
  3. Деление на величину излучения, приводящее в некоторых случаях к ошибке деления на ноль и к соответствующему увеличению величины облучения до максимально возможной.
  4. Установка булевской переменной (однобайтовой) в значение «истина» производилось командой «x=x+1». Поэтому с вероятностью 1/256 при нажатии кнопки «Set» программа могла пропустить информацию о некорректном положении диска.

Кроме этих явных ошибок было замечено множество потенциальных — например, в многозадачной операционной системе не было никакой синхронизации.

Исправления[править | править вики-текст]

  1. Ошибки дозиметрии стали считаться фатальными (после них система перезагружается).
  2. Добавлена мгновенно перезапускающая систему программная ветвь и делающая то же самое независимая аппаратная цепь.
  3. Исправлены все найденные ошибки; добавлена перестраховка.
  4. Непонятные сообщения об ошибках заменены осмысленными.
  5. Положение диска дополнительно считывается потенциометром и передаётся на пульт управления.
  6. Изменение положения диска и других частей аппарата теперь возможно только тогда, когда оператор удерживает специальную педаль.
  7. В режиме рентгеновской терапии отклоняющие магниты для электронной терапии устанавливаются в такую конфигурацию, что отклоняют пучок электронов на 270°.

Причины[править | править вики-текст]

  • Излишняя надежда на программное обеспечение, из-за чего не было предусмотрено механических блокираторов.
  • Отсутствие перестраховки, из-за чего программа выводила не то, что есть на самом деле, и выполняла не то, что было введено.
  • Самонадеянность AECL. Реальная работа началась только тогда, когда были переоблучены несколько человек. Например, в Гамильтоне причиной неисправности считали микропереключатели, хотя инженеры не нашли неисправности и не смогли повторить ошибку.
  • Небезопасная манера программирования. В частности, в программном обеспечении было много «трюкачества», а программные модули практически не тестировались поодиночке (бо́льшая часть тестирования производилась на готовом аппарате). Следует заметить, что всё ПО было написано на ассемблере, хотя в данном случае более мудрым решением было бы использовать язык высокого уровня.
  • Повторное использование программного кода с Therac-6 и Therac-20. В Therac-6 вообще не было рентгеновской терапии, в Therac-20 применялся механический блокиратор. Безопасность — это черта всей системы, а не одного только программного обеспечения. Зачастую безопаснее переписать ПО и получить простую и прозрачную систему, чем использовать имеющийся код.
  • Излишняя «дружественность» пользовательского интерфейса. Разработчики пытались сделать машину настолько простой в использовании, насколько можно, а пользовательский интерфейс оставлял желать лучшего. Но лучше заставить пользователя вводить информацию второй раз, чем надеяться, что он проверит все введённые значения.

Примечания[править | править вики-текст]

  1. 1 2 3 4 5 6 7 Nancy Leveson. Medical Devices: The Therac-25. Addison-Wesley (1995).
  2. Ж. М. Ниязова О культуре безопасности в радиологических центрах страны // Альманах клинической медицины — Московский областной научно-исследовательский клинический институт им. М. Ф. Владимирского, 2006 — c. 91-91 — ISSN 2072-0505
  3. Simson Garfinkel History’s Worst Software Bugs // Wired, 11.08.2005
  4. J.A. Rawlinson Report on the Therac-25 (англ.) // OCTRF/OCI Physicists Meeting. — Kingston, Ont., Canada, May, 1987.
  5. 1 2 3 4 5 6 7 8 Nancy G. Leveson Safeware: System Safety and Computers. — Addison-Wesley, April 17, 1995. — ISBN 0-201-11972-2
  6. Trevor Cradduck. LINAC deaths at Zaragoza (28 Feb 1991).
  7. 1 2 3 4 5 6 Neumann, Peter G. Computer-Related Risks. — Addison-Wesley/ACM Press, 1995. — ISBN 0-201-55805-X
  8. 1 2 3 4 5 6 7 8 9 10 11 Ivars, Peterson Fatal Defect: Chasing Killer Computer Bugs. — New York: Vintage Books, 1996. — ISBN 0-8129-2023-6
  9. Nancy Leveson, Clark S. Turner An Investigation of the Therac-25 Accidents (англ.) // IEEE Computer. — July 1993. — № Vol. 26, No. 7. — P. 18-41.

Литература[править | править вики-текст]