Therac-25

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 г. Этот аппарат был причиной как минимум шести передозировок радиации, некоторые пациенты получили дозы в десятки тысяч рад. Как минимум двое умерли непосредственно от передозировок.

Непосредственной причиной трагедий были ошибки в программном обеспечении аппарата, а принципиальной проблемой была неверная стратегия обеспечения безопасности. Эти программные ошибки считаются приведшими к одним из самых серьёзных последствий за всю историю использования компьютеров[3].

Содержание

Введение

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

В начале 1970-х годов AECL и французская компания CGR совместно строили аппараты лучевой терапии на линейных ускорителях. В результате их работы появились Therac-6, с энергией электронного пучка 6 МэВ, и Therac-20, с 20 МэВ. Оба аппарата были более старыми разработками CGR, которые были объединены с мини-ЭВМ PDP-11 фирмы DEC. Компьютер использовался исключительно для упрощения работы, оба аппарата могли работать и без компьютера.

После создания Therac-20 сотрудничество прекратилось. В 1981 г. компании не продлили соглашение.

В середине 1970-х годов AECL разработала двухпроходную концепцию линейного ускорителя, который занимал меньше места и позволял достигать большей энергии электрона. Электроны высокой энергии позволяли лечить более глубокие опухоли. На этом ускорителе был создан аппарат Therac-25 — первый прототип был собран в 1976 г., серийное производство началось в 1982. Один аппарат позволял проводить лучевую терапию в двух режимах: электронном и фотонном (рентгеновском), что экономило деньги и место.

Особенности конструкции

Аппаратура

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

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

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

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

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

Программное обеспечение

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

Пользовательский интерфейс

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

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

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

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

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

Несчастные случаи

Всего было установлено одиннадцать аппаратов: пять в США и шесть в Канаде.

3 июня 1985, Мариетта, штат Джорджия

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

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

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

26 июля 1985, Гамильтон, Онтарио

40-летняя пациентка проходила лечение рака шейки матки. Через 5 секунд после начала лечения аппарат вывел сообщение No dose. Нажав «P», врач начал вторую попытку. После пяти неудачных попыток он вызвал ремонтника, тот не нашёл никаких поломок. Пациентка также почувствовала ожог.

Пациентка умерла через несколько месяцев от рака. Но если бы она не умерла, ей бы требовалась ампутация.

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

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

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

Декабрь 1985, Якима, штат Вашингтон

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

21 марта — 11 апреля 1986, Тайлер, штат Техас

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

В это время пациент ощутил ожог. Так как это была его не первая процедура, он понимал, что аппарат не в порядке. Он встал, и в это время излучатель включился повторно и обжёг руку. Вызвали врача Фрица Хагера, тот убедился, что калибровка в пределах нормы. До конца дня Therac исправно работал. По результатам обследования, пациент получил удар током.

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

Пациент умер от осложнений переоблучения через пять месяцев.

11 апреля при похожих обстоятельствах этот же Therac, управляемый этой же медсестрой, переоблучил ещё одного пациента. Переоблучение мозга не оставило ему никаких шансов на жизнь. При этом через громкоговоритель (уже отремонтированный) было слышно сильное гудение.

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

Началось расследование причин ошибки, которое затянулось более чем на два года. Как вре́менное решение, AECL порекомендовала выломать клавишу «Вверх» и заклеить её контакты (таким образом, при ошибке придётся вводить параметры заново).

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

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

Американская администрация по контролю пищевых продуктов, лекарств и фармацевтической промышленности (FDA) задала такие вопросы:

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

17 января 1987, Якима, штат Вашингтон

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

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

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

Замеченные ошибки

В программном обеспечении 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. Medical Devices: The Therac-25
  2. Ж. М. Ниязова О культуре безопасности в радиологических центрах страны // Альманах клинической медицины — Московский областной научно-исследовательский клинический институт им. М. Ф. Владимирского, 2006 — c. 91-91 — ISSN 2072-0505
  3. Simson Garfinkel History's Worst Software Bugs // Wired, 11.05.2008

Литература


Wikimedia Foundation. 2010.

Игры ⚽ Нужен реферат?

Полезное


Смотреть что такое "Therac-25" в других словарях:

  • Therac — 25 war ein Linearbeschleuniger zur Anwendung in der Strahlentherapie. Er wurde von 1982 bis 1985 in elf Exemplaren von der kanadischen Regierungsfirma Atomic Energy of Canada Limited (AECL) gebaut und in Kliniken in den USA und in Kanada… …   Deutsch Wikipedia

  • Therac-25 — war ein Linearbeschleuniger zur Anwendung in der Strahlentherapie. Er wurde von 1982 bis 1985 in elf Exemplaren von der kanadischen Regierungsfirma Atomic Energy of Canada Limited (AECL) gebaut und in Kliniken in den USA und in Kanada installiert …   Deutsch Wikipedia

  • Therac-25 — était le nom d une machine de radiothérapie développée conjointement par l Énergie atomique du Canada Limitée (EACL, Canada) et CGR MeV (France). Il s agissait d une évolution des modèles Therac 6 et Therac 20. Entre 1985 et 1987, le Therac 25… …   Wikipédia en Français

  • Therac-25 — era una máquina empleada en terapia de radiación, producida por Atomic Energy of Canada Limited, notoria por haber sido objeto del error de software, causando al menos seis accidentes entre 1985 y 1987, y que le costó la vida al menos a cinco… …   Enciclopedia Universal

  • Therac-25 — The Therac 25 was a radiation therapy machine produced by Atomic Energy of Canada Limited (AECL) and CGR MeV of France after the Therac 6 and Therac 20 units. It was involved with at least six accidents between 1985 and 1987, in which patients… …   Wikipedia

  • Therac-25 — La Therac 25 era una máquina de radioterapia producida por la Atomic Energy of Canada Limited (AECL) después de las unidades Therac 6 y Therac 20 (las unidades anteriores fueron producidas en asociación con CGR de Francia). Estuvo envuelta en al… …   Wikipedia Español

  • Therac-25-Beschleuniger — Therac 25 war ein Linearbeschleuniger zur Anwendung in der Strahlentherapie. Er wurde von 1982 bis 1985 in elf Exemplaren von der kanadischen Regierungsfirma Atomic Energy of Canada Limited (AECL) gebaut und in Kliniken in den USA und in Kanada… …   Deutsch Wikipedia

  • Состояние гонки — У этого термина существуют и другие значения, см. Гонки. Состояние гонки (англ. race condition)  ошибка проектирования многопоточной системы или приложения, при которой работа системы или приложения зависит от того, в каком порядке… …   Википедия

  • List of software bugs — Many software bugs are merely annoying or inconvenient but some can have extremely serious consequences either financially or as a threat to human well being. This is a list of the software bugs with the most notable consequences: Space… …   Wikipedia

  • Software bug — To report a MediaWiki error on Wikipedia, see Wikipedia:Bug reports. A software bug is the common term used to describe an error, flaw, mistake, failure, or fault in a computer program or system that produces an incorrect or unexpected result, or …   Wikipedia


Поделиться ссылкой на выделенное

Прямая ссылка:
Нажмите правой клавишей мыши и выберите «Копировать ссылку»