Краткое содержание
- Шесть известных инцидентов с Therac-25, связанных с массивными передозировками облучения, произошли с июня 1985 года по январь 1987 года. Сохранившиеся документы фиксируют тяжёлые травмы и смерти, но не позволяют считать каждую последующую смерть следствием исключительно передозировки или приписать каждому пациенту точную дозу.
- Два разных программных пути установлены достаточно надёжно. В инцидентах в Тайлере быстрое редактирование режима лечения и энергии могло оставить отображаемые данные предписания несоответствующими фактической настройке аппарата. Во втором инциденте в Якиме 8-битный счётчик мог переполниться до нуля и обойти проверку положения коллиматора. Точный программный путь первых трёх инцидентов остаётся неизвестным.
- Более глубокая причина отказа носила архитектурный характер. Более ранние аппараты Therac сохраняли независимые защитные цепи и механические блокировки. Therac-25 возложил на программное обеспечение большую ответственность за безопасность и не продублировал все эти защиты, позволив ошибке ПО и связанному состоянию системы стать путём к катастрофическому облучению.
- Выявление сбоев не сработало на нескольких уровнях. Малопонятные сообщения классифицировали опасные состояния как паузы лечения, мониторы дозы могли насыщаться и показывать кажущуюся недодозировку, частые неопасные прерывания приучили операторов продолжать сеанс, журналы аудита лечения были неполными, а сообщения из разных больниц не складывались в своевременную общую картину инцидентов.
- AECL контролировала конструкцию, повторно используемый код, документацию на ПО, анализ опасностей, предупреждения клиентов и план корректирующих мер. Больницы контролировали местную эксплуатацию, наблюдение за пациентами, вывод оборудования из использования и эскалацию. Регуляторы контролировали выявление дефектов, классификацию отзыва продукции и одобрение корректирующих мер, но действовавшая тогда в США система отчётности во многом полагалась на производителей и не возлагала на учреждения-пользователи те обязанности, которые появились позже.
- Доказательства ремонта существенны, но ограничены. Итоговый план корректирующих мер добавил независимое от компьютера отключение и блокировки поворотного стола, превратил паузы в приостановки, улучшил сообщения, ограничил редактирование, исправил известные дефекты и потребовал дальнейших испытаний и анализа безопасности. В открытых документах нет полного современного пакета валидации, истории исходного кода, всех результатов испытаний или набора данных о долгосрочной эксплуатации.
- Главный урок не в том, что медицинские изделия должны избегать программного обеспечения. Он в том, что ПО нельзя позволять делать катастрофическое состояние достижимым через один-единственный неконтролируемый путь. Независимые барьеры, требования, основанные на анализе опасностей, реалистичное тестирование взаимодействия, понятные аварийные сигналы, журналы аудита, быстрое информирование между площадками и независимо проверяемые доказательства корректирующих мер — всё это часть доказательства безопасности.
Известные ошибки — это доказательство, а не полное объяснение
Therac-25 запомнился потому, что связь между кодом и вредом для пациентов прослеживается необычно чётко. Эта ясность полезна, но она может исказить оценку ответственности, если расследование начинается и заканчивается гонкой данных или переполнением переменной. Дефект объясняет, как вёл себя конкретный путь выполнения.
Сам по себе он не объясняет, почему один путь мог привести мощный пучок излучения в опасную конфигурацию, почему в физической системе не было независимого останова, почему консоль могла показать малую дозу или её отсутствие после массивного облучения, почему обученного оператора система приглашала продолжить и почему предупреждения из нескольких учреждений не сошлись вовремя.
Первоначальное расследование Nancy Leveson и Clark Turner, опубликованное в IEEE Computer в 1993 году и основанное на материалах FDA, канадских регуляторных документах, письмах и показаниях под присягой, необычно откровенно говорит о границах доказательной базы. Авторам удалось задокументировать шесть известных инцидентов, два программных механизма и длинную последовательность корректирующих мер. Они не смогли получить полную информацию об управлении разработкой в AECL, о контроле качества или обо всех событиях. Поэтому их отчёт подтверждает выводы системного уровня, но не каждое утверждение, накопившееся вокруг этого дела.
Официальный документ об отзыве продукции даёт важный независимый ориентир. Проведённое U.S. General Accounting Officeисследование избранных отзывов медицинских изделийотносит Therac-25 к отзыву класса I, затрагивающему пять ускорителей в США и датированному 3 июня 1987 года, и называет два дефекта ПО, способных вызывать массивные передозировки облучения. Этот документ охватывает меньше, чем полная история инцидентов. Leveson и Turner сообщали об одиннадцати установленных аппаратах: пяти в США и шести в Канаде. Поэтому цифру GAO следует понимать как число аппаратов, отозванных в США в рамках этого набора данных, а не как количество Therac-25 по всему миру.
Это различие подводит к главному вопросу ответственности. Производитель не может обещать, что в критичном для безопасности ПО не будет дефектов. Но он решает, достаточно ли одного дефекта для получения катастрофической энергии, проверяет ли состояние аппарата отдельный физический механизм, передаёт ли интерфейс опасность, сохраняются и объединяются ли данные с мест эксплуатации и устраняет ли корректирующая мера класс опасности, а не только последнюю воспроизведённую последовательность ввода. Это были контролируемые решения в области проектирования и управления.
Архитектура перенесла физическую функцию безопасности в программное обеспечение
Therac-25 был медицинским линейным ускорителем двойного режима. Он мог использовать ускоренные электроны для более поверхностного лечения или производить рентгеновские лучи для более глубокого. В фотонном режиме на пути пучка требовались мишень и выравнивающее оборудование. В электронном режиме нужны были сканирующее и другое оборудование, чтобы распределять и контролировать пучок. Вращающийся поворотный стол выводил нужное оборудование в рабочее положение.
Физическая опасность была очевидна, даже если реализация сложна: высокая мощность пучка в сочетании с неверным положением поворотного стола или коллиматора могла сконцентрировать энергию, которая должна была формироваться, измеряться или блокироваться.
Сохранённое MITописание поворотного столапоказывает, почему блокировка была барьером безопасности, а не функцией удобства. Три микропереключателя сообщали компьютеру положение. Компьютер позиционировал и проверял поворотный стол. В положении светового поля на пути пучка находилось зеркало для выравнивания пациента, и ионизационная камера там не предполагалась, поскольку лечебного пучка быть не должно. Традиционные электромеханические блокировки предотвращали работу в несовместимом состоянии. В Therac-25 многие из них заменили программные проверки.
Эта замена означала существенное изменение по сравнению с линейкой, на которую опиралась AECL. Therac-6 и Therac-20 добавляли компьютерное управление машинам, которые могли работать независимо, и сохраняли стандартные для отрасли аппаратные защиты. Therac-25 был спроектирован вокруг компьютерного управления. Его ПО несло большую ответственность за контроль безопасной работы, при этом не все прежние защитные цепи были продублированы.
Более старый Therac-20 позднее дал случайное сравнение: сходный дефект редактирования мог пережечь предохранители или разомкнуть автоматы, но независимые защитные цепи не допускали активации пучка, и сопоставимого облучения пациента не произошло.
Повторное использование кода само по себе не было ошибкой. AECL заимствовала структуру и подпрограммы прежних машин, а повторное использование может сохранять проверенное поведение. Проблема в том, что допущения системы с независимой аппаратной защитой перешли в систему, где ПО стало частью основного контура безопасности. Сохранившеесяописание разработки ПОговорит, что программа выросла из кода Therac-6, была написана на языке ассемблера PDP-11 и использовала собственную операционную среду реального времени с параллельными задачами и обработчиками прерываний. Там же отмечены скудная документация и опасение рецензента FDA, что спецификации и план испытаний ПО отсутствуют.
В безобидном приложении унаследованные допущения могут обернуться неудобствами. В медицинском ускорителе они становятся опасными, когда новая система убирает независимый компонент, который раньше их сдерживал. Вопрос жизненного цикла не сводится к тому, работал ли повторно используемый код годами. Он в том, были ли заново подтверждены все допущения безопасности применительно к новому оборудованию, новому объёму управляющих полномочий, новому рабочему процессу оператора и новым последствиям отказа. В открытых документах нет свидетельств, что такой комплексный пересмотр допущений проводился до клинического применения.
Анализ безопасности до инцидентов не проверил новый источник управления
В марте 1983 года AECL провела анализ безопасности методом дерева отказов. Согласно расследованию, он исходил из того, что ошибки программирования сокращены обширным тестированием, и исключал остаточные дефекты ПО. Ошибки компьютерного исполнения рассматривались преимущественно как следствия аппаратных сбоев или случайных помех. При этом ПО теперь несло функции безопасности, которые в более ранних машинах выполняло оборудование. Поэтому анализ уделил мало полезного внимания компоненту, чьи полномочия выросли сильнее всего.
Это была не просто количественная проблема. Присвоение крайне низкой вероятности смутно описанному компьютерному событию не может показать, что опасные состояния выявлены. Детерминированные дефекты ПО не возникают случайно, как изношенная деталь; они воспроизводятся всякий раз, когда совпадают нужное состояние и момент времени. Если анализ не моделирует быстрое редактирование, взаимодействие общих переменных, переполнение счётчика, устаревшую конфигурацию машины, насыщение мониторов или противоречивые показания, небольшой численный результат мало что говорит об этих путях.
Более поздняясводка анализа безопасности Therac-25— свидетельство более серьёзного пересмотра после инцидентов. В ней использовались анализ видов и последствий отказов, анализ дерева отказов и экспертиза ПО. Были определены критичные для безопасности функции, включая сканирование, выбор энергии, отключение пучка и калибровку, и сформулированы рекомендации по независимым от компьютера блокировкам. Даже этот поздний анализ честно признавал ограничения: инспекция кода не могла дать высокой уверенности в сложных функциях сканирования и выбора энергии. Эта неопределённость поддерживала добавление барьеров, а не утверждение, что инспекция доказала полноту кода.
Обоснованный вывод: исходное доказательство безопасности структурно не соответствовало конструкции. Открытые данные не устанавливают, кто утверждал каждое допущение, какие внутренние возражения высказывались и была ли стоимость решающей причиной отказа от дублирования аппаратной защиты. Но они устанавливают, что анализ исключал остаточные ошибки ПО в то время, как именно ПО доверяли предотвращение опасных физических конфигураций. Этого достаточно, чтобы отнести проблему ответственности к уровню системного проектирования, не выдумывая корыстный мотив.
Шесть аварий стали одной проблемой лишь после повторного вреда
Хронология важна, потому что каждое событие меняло то, что можно было разумно знать.Сводная хронология событийначинается 3 июня 1985 года в онкологическом центре Kennestone Regional Oncology Center в Мариетте, штат Джорджия. Пациент, получавший электронное лечение, сообщил о сильном жаре, а позже у него развилась тяжёлая лучевая травма. Печать протокола лечения была отключена, поэтому бумажной записи сеанса не осталось. Больничный физик спросил у AECL, может ли аппарат работать в электронном режиме без сканирования; AECL ответила, что не может. Сведения о том, когда AECL получила официальное уведомление, расходятся, но к ноябрю 1985 года у компании было официальное уведомление о судебном разбирательстве.
Своевременного расследования, которое установило бы путь в аппарате, не проводилось.
26 июля 1985 года пациент клиники Ontario Cancer Foundation в Гамильтоне столкнулся с повторяющимися паузами лечения и сообщением H-tilt. На дисплее значилась нулевая доза, и оператор несколько раз воспользовался разрешённой командой продолжения. Пациент получил серьёзную локальную передозировку. AECL не смогла воспроизвести событие и заподозрила неисправность микропереключателя. Компания переработала логику переключателей и сделала очень крупное заявление об улучшении безопасности, хотя её собственное объяснение причины не было твёрдым.
Канадские официальные лица и независимый консультант потребовали более решительных изменений, включая независимую проверку положения поворотного стола и приостановку лечения при соответствующих неисправностях. На этом этапе AECL не установила запрошенную независимую блокировку.
В декабре 1985 года у пациента больницы Yakima Valley Memorial Hospital после лечения появилась полосатая кожная реакция. Персонал изучал другие объяснения и 31 января 1986 года написал в AECL. Компания ответила 24 февраля, что ни неисправность аппарата, ни ошибка оператора не могли вызвать такое повреждение, и сослалась на отсутствие аналогичных инцидентов.Первый отчёт из Якимыпоказывает, почему контроль над информацией имел значение: учреждение не знало полной истории других площадок и полагалось на техническую уверенность производителя. Только после второго инцидента в Якиме первое повреждение признали вероятной передозировкой.
21 марта 1986 года первый пациент в Тайлере получал электронное лечение после того, как опытный оператор быстро исправил изначально введённый рентгеновский режим. Аппарат выдал сообщение Malfunction 54, классифицировал состояние как паузу лечения и показал кажущуюся недодозировку. Оператор действовал по обычному регламенту и продолжил. В тот день аудио- и видеосвязь с экранированным процедурным кабинетом не работала, из-за чего поняли, что пациенту плохо, лишь с задержкой. Инженеры AECL сначала не смогли воспроизвести неисправность и снова предположили электрическую причину.
После проверок, не выявивших проблем с заземлением, клиника 7 апреля вернула аппарат в эксплуатацию.
11 апреля второй пациент в Тайлере столкнулся с тем же Malfunction 54 после того, как тот же оператор быстро отредактировал режим. На этот раз интерком работал, и оператор остановил сеанс. Больничный физик Fritz Hager вывел аппарат из эксплуатации и работал с оператором, пока не смог воспроизвести последовательность. Недостающим условием была скорость. Когда AECL сообщили, что правку нужно выполнять быстро, компания воспроизвела неисправность и измерила массивную мощность. 15 апреля AECL подала отчёт об инциденте в FDA. 2 мая FDA признало изделие дефектным и потребовало план корректирующих мер.
17 января 1987 года второй пациент в Якиме был облучён, когда поворотный стол находился в положении светового поля. Консоль не показывала лечебную дозу сверх более ранних плёночных экспозиций, аппарат сделал паузу, и оператор мог продолжить. Это был другой программный путь. Предварительная реконструкция AECL оценивала тысячи рад за попытку, но точная полученная доза остаётся неопределённой. Событие показало, что исправление, ориентированное только на Тайлер, не является полным доказательством безопасности. В феврале FDA и канадские власти рекомендовали приостановить рутинное использование до завершения постоянных доработок.
Хронология не подтверждает утверждение, что один человек проигнорировал шесть одинаковых сигналов. Аварии произошли в разных учреждениях, сопровождались разными сообщениями и не все были технически поняты в тот момент. Но она подтверждает вывод, что информация об инцидентах оставалась разрозненной, ранние выводы о невозможности были слишком категоричными, а корректирующие меры первое время следовали за подозреваемыми компонентами, а не за классом опасности. Каждое новое событие должно было снижать уверенность в предпосылке, что ПО и существующие проверки делают передозировку невозможной.
Тайлер вскрыл зависимое от времени рассогласование экрана и аппарата
Триггер в Тайлере не сводился к тому, что оператор слишком быстро печатал. Оператор ввёл режим лечения, перешёл к командной строке, вернулся в режим редактирования и изменил запись с рентгеновского на электронный режим в тот период, когда аппарат настраивал отклоняющие магниты. Экран отражал исправление. Параллельные программные задачи не гарантировали перенос изменённого состояния на все параметры аппарата.
Подробнаяреконструкция ПО для Тайлераописывает общие переменные, используемые обработчиком клавиатуры, процедурой ввода данных и задачами управления лечением. Флаг завершения означал, что курсор достиг командной строки, а не что редактирование действительно закончено. Другой флаг, связанный с настройкой магнитов, сбрасывался слишком рано, поэтому более поздние правки могли остаться незамеченными. Младший и старший байты переменной режима и энергии могли влиять на разные задачи. При нужном моменте времени позиционирование поворотного стола или коллиматора могло следовать отредактированному значению, тогда как другие рабочие параметры оставались производными от прежнего рентгеновского выбора.
Поэтому непосредственный триггер можно сформулировать узко: быстрая правка в конкретном временном окне позволяла несогласованному состоянию пройти в лечение. Дефект воспроизводился только при выполнении рабочего процесса с реалистичной скоростью эксперта. Медленный инженер, идущий по письменной инструкции, мог его не заметить. Именно поэтому реконструкция больничного физика имела значение. Он рассматривал опыт оператора как условие теста, а не как свидетельство неправильного использования.
Для опасного исхода требовалось больше, чем гонка. ПО не выполняло финальную независимую проверку согласованности между отображаемым лечением, конфигурацией аппарата и параметрами пучка. Оборудование независимо не блокировало несовместимую конфигурацию. Ионизационные камеры насыщались под интенсивным импульсом и могли показать низкое значение. Аппарат пометил событие как паузу и сделал доступным перезапуск одной клавишей. Оператора к использованию этой команды приучили многие безвредные паузы. В первом инциденте в Тайлере неработавшие камеры в процедурном кабинете лишили последнего человеческого канала обнаружения.
Назвать действие оператора причиной значило бы перевернуть отношение контроля. Интерфейс намеренно поддерживал быстрый ввод и редактирование, потому что операторы просили об эффективности. Клавиша продолжения была предусмотренной реакцией на паузу. Скорость и привычность действий оператора были предсказуемыми характеристиками целевой среды использования. Они запускали дефект, но именно AECL решала, может ли такое взаимодействие создать опасное состояние аппарата и будет ли это состояние независимо остановлено.
Якима вскрыла другой путь — через переполнение счётчика
Механизм второго инцидента в Якиме находился дальше по логике управления. Однобайтовая переменная, использовавшаяся в повторяющихся проверках настройки, увеличивалась на каждом проходе. Поскольку она могла представлять только 256 состояний, на каждом 256-м проходе она переполнялась до нуля. Ноль также означал, что проверка несоответствия верхнего коллиматора не требуется. Если оператор подавал команду установки в момент переполнения, проверка положения могла быть пропущена, и лечение могло продолжиться при поворотном столе, всё ещё находящемся в опасном состоянии, связанном со световым полем.
Первоначальная реконструкция дефекта в Якимеотличает его от Тайлера. Параллельная задача Housekeeper выполняла проверку коллиматора только тогда, когда общая переменная Class3 была ненулевой. Процедура Set-Up Test увеличивала эту переменную сотни раз в ожидании настройки аппарата. При переполнении ПО обходило проверку. Немедленным исправлением кода в AECL стала установка переменной в фиксированное ненулевое значение вместо её инкремента.
И снова изменение кода устранило выявленный триггер, но само по себе не установило безопасность. Критичное для безопасности значение статуса, разделяемое между параллельными задачами, не должно молча совмещать счётчик и состояние разрешения. Ещё важнее, что никакой независимый физический барьер не препятствовал активации пучка при неверной конфигурации поворотного стола. Поэтому итоговые корректирующие меры требовали и исправления кода, и блокировки поворотного стола, не зависящей от того же программного пути.
В сохранившихся документах нет точного пути в коде для Кеннестона, Гамильтона или первого инцидента в Якиме. Высказывались предположения, что Гамильтон мог напоминать второй механизм Якимы, но Leveson и Turner пометили это как предположение. Не исключено, что были задействованы неизвестные гонки или другие дефекты. Строгий разбор не должен задним числом приписывать два более поздних механизма каждой ранней травме лишь потому, что физический исход выглядел похоже.
Эта неизвестность не оправдывает и не должна заполняться ложной уверенностью. Она показывает, почему важна архитектура. Когда несколько неизвестных программных путей могут привести к одному и тому же катастрофическому состоянию, доказывать и латать по одному дефекту — неадекватная стратегия контроля. Независимый барьер может сдержать и известные, и неизвестные пути. В этом практическая ценность эшелонированной защиты: она снижает зависимость доказательства безопасности от полного знания поведения ПО.
Интерфейс превращал противоречивые сигналы опасности в рутинную работу
Интерфейс оператора Therac-25различал приостановку лечения, требующую сброса, и паузу лечения, допускающую продолжение одной клавишей. Он также регулярно выдавал неисправности, обычно связывавшиеся с неудобством или недодозировкой. Операторы на собственном опыте усвоили, что пауза с последующим продолжением — это нормально. Обучение укрепляло уверенность, что многочисленные механизмы безопасности делают передозировку практически невозможной.
В инцидентах эта модель работы отказала несколькими способами. Номера неисправностей были малопонятны и недостаточно объяснялись в доступных руководствах. Тяжёлое состояние, связанное с дозой, могло отображаться с низким приоритетом. Насыщенное контрольно-измерительное оборудование могло показывать кажущуюся недодозировку именно тогда, когда мощность была опасно высокой. Консоль могла показывать «проверено» или «пучок готов», хотя физическая конфигурация и внутренние параметры были несогласованы. Аппарат допускал повторное облучение, не требуя нового предписания или независимой проверки.
Это не отдельные косметические дефекты. Сигнал тревоги — средство контроля, только если он помогает оператору отличить опасное состояние и предпринять верное действие. Пауза с низким приоритетом, разрешающая немедленное продолжение, — это разрешение. Дисплей, занижающий выданную дозу, меняет решение оператора. Сообщение «проверено» — это утверждение о безопасности. Когда эти сигналы противоречат жалобе пациента на жжение или показаниям физического монитора, система должна направлять пользователей к более консервативной интерпретации.
Сформулированные позжеуроки IAEA по случайным переоблучениям при радиотерапиизакрепляют этот принцип, не делая ретроактивного юридического вывода об AECL. Они требуют расследовать противоречивые сигналы, исходить из более серьёзного показания, пока оно не опровергнуто, проектировать и тестировать с учётом клинической среды «человек—машина», обучать персонал интерпретации нештатных показаний и использовать несколько уровней защиты. Therac-25 показывает, почему эти элементы должны входить в инженерную систему, а не оставаться личной бдительностью.
Практический контроль был распределён, но неравномерно
У AECL был самый широкий превентивный контроль. Она выбирала аппаратную и программную архитектуру, решала, какие блокировки сохранить, управляла исходным кодом и документацией, задавала смысл и приоритет сигналов, проектировала поведение при перезапуске, проводила первоначальный анализ опасностей, получала сообщения с мест, выпускала уведомления для клиентов и предлагала корректирующие меры. Она же контролировала, получают ли пользователи и регуляторы полную картину по всем площадкам. Эти полномочия делали производителя главным носителем рисков системного проектирования и извлечения уроков из инцидентов.
Это не делает больницы пассивными. Учреждения контролировали, работают ли аудио и видео в кабинете, включены ли печать протоколов и функции аудита, как регистрируются повторяющиеся неисправности, когда оборудование выводится из эксплуатации, как быстро медицинский физик начинает расследование и что сообщается властям штата или федеральным властям. Первый инцидент в Тайлере показывает локальный сбой выявления: аудиовизуальная связь была недоступна, и лечение позже продолжилось. Второй инцидент в Тайлере показывает эффективный локальный контроль: оператор поднял тревогу, физик остановил использование, и учреждение воспроизвело триггер.
Первое расследование в Якиме показывает предел местной экспертизы, когда производитель отрицал, что аппарат мог причинить наблюдаемый вред, а данные других площадок были недоступны.
Операторы контролировали ввод данных, подготовку пациента и непосредственное решение продолжить после паузы, но не контролировали скрытую модель параллелизма, классификацию сигналов, поведение насыщенного монитора дозы или отсутствующие независимые блокировки. Их действия следует оценивать в контексте предусмотренного рабочего процесса и доступной информации. Обученный пользователь, быстро исправляющий обычную ошибку ввода, — не непредсказуемое враждебное воздействие. Нажатие команды, которую интерфейс предлагает при паузе лечения, — не доказательство того, что пользователь согласился на нераскрытый риск передозировки.
Медицинские физики обладали важной диагностической силой. Работа Hager в Тайлере дала воспроизводимую последовательность, которую не нашли ни рутинные сервисные проверки, ни первоначально более медленная инженерная реконструкция. Пользователи также объединились в группу, обменивались информацией и настаивали на аппаратных изменениях, понятных сообщениях, независимой экспертизе ПО и журнале аудита. Однако у них не было доступа к исходному коду, а полные материалы они получили недостаточно рано, чтобы действовать как скоординированная сеть безопасности.
Регуляторы контролировали юридические выводы и шлюз корректирующих мер. FDA могло признать излучающее изделие дефектным, потребовать уведомления покупателей и рассматривать план корректирующих мер AECL. Канадские органы радиационной безопасности могли требовать соблюдения требований и рекомендовать прекращение использования. Они не управляли процедурными кабинетами и не писали ПО, а американская система отчётности тогда ещё не требовала от учреждений-пользователей сообщать об инцидентах, как это установят более поздние законы.
Их ответственность касается того, собирались ли предупреждения, своевременно ли применялись полномочия, оспаривались ли предложенные исправления и зависело ли закрытие вопроса от доказательств, а не от утверждений.
У пациентов были самые прямые свидетельства вреда и меньше всего системного контроля. Несколько человек сразу сообщили о жаре, жжении или ощущениях, похожих на удар током, противоречивших показаниям аппарата. Они не могли проверить состояние машины, получить историю инцидентов на других площадках или отключить конструктивную функцию. Система безопасности, считающая слова пациента менее достоверными, чем дисплей, который, как известно, способен насыщаться, отдаёт доказательную силу наименее надёжному сигналу.
Сначала подвело выявление, а уже потом реагирование
Полезно разделять выявление и реагирование. Сбой выявления происходил, когда система не сохраняла или не интерпретировала свидетельства того, что произошло опасное событие. Отсутствие бумажных протоколов лечения в Кеннестоне, насыщенные ионизационные камеры, заниженная или нулевая доза на дисплее, малопонятные коды неисправностей, неполные руководства, отключённый контроль кабинета и невозможность воспроизвести чувствительные к времени последовательности — всё это снижало наблюдаемость. Разрозненность площадок означала, что каждая клиника могла казаться себе жертвой изолированной аномалии.
Сбой реагирования начинался, когда имеющиеся доказательства не приводили к достаточно широкой предосторожности. После Гамильтона AECL занялась подозреваемой логикой микропереключателей и сократила число разрешённых повторов, но не установила запрошенную независимую блокировку положения и не превратила все соответствующие паузы в приостановки. После первого сообщения из Якимы компания заявила, что ни неисправность аппарата, ни ошибка оператора не могли причинить травму. После первого инцидента в Тайлере невозможность воспроизвести Malfunction 54 поддержала электрическую гипотезу, и аппарат вернули в эксплуатацию.
Эти действия были понятны, только если действующей модели безопасности доверяли больше, чем неблагоприятным данным.
В последовательности событий видна повторяющаяся эпистемическая ошибка: невозможность воспроизведения слишком часто воспринималась как доказательство невозможности. Чувствительное к времени параллельное ПО может быть детерминированным и всё же ускользать от теста, который не воссоздаёт тайминг, нагрузку и взаимодействие эксперта. Отрицательный результат должен ослаблять или перенаправлять гипотезу, а не закрывать опасность, когда последствия тяжёлые, а физическая травма согласуется с избыточным облучением.
Коммуникация сама была средством контроля. Пользователь, знавший о Кеннестоне, Гамильтоне и Якиме, оценил бы Malfunction 54 иначе, чем пользователь, которому сказали, что передозировок не было. Регулятор, вовремя получавший отчёты производителя и учреждений, мог бы быстрее увидеть закономерность. Сервисный инженер с точными журналами аудита мог бы отличить несоответствие конфигурации от электрической помехи. Отсутствие этих общих данных увеличивало период, в течение которого опасная эксплуатация оставалась правдоподобной.
Обоснованный вывод: более раннее объединение данных и консервативная эскалация могли сократить время воздействия опасности. Открытые документы не позволяют установить, была бы наверняка предотвращена та или иная более поздняя авария, поскольку точные ранние механизмы остаются неизвестными, а потребности в лечении различались. Но они показывают, что у институтов, обладавших информацией и контролем, были возможности остановить рутинное использование, добавить независимые барьеры или выпустить более решительные предупреждения до января 1987 года.
Режим отчётности был сопутствующим условием, а не полным оправданием
Во время первых инцидентов американская отчётность о медицинских изделиях во многом зависела от производителей и импортёров. Больницы и медработники ещё не подпадали под появившуюся позже федеральную обязанность отчётности учреждений-пользователей. Сообщения из Тайлера дошли до FDA через департамент здравоохранения Техаса раньше, чем подробный отчёт AECL об изделии. Такая структура делала федеральную систему раннего предупреждения уязвимой к локальной неопределённости и к тому, как производитель распространяет информацию.
Слабость была не только теоретической. Подготовленный в тот периодобзор GAO 1986 года о занижении отчётности по медицинским изделиямвыявил серьёзные пробелы в том, как больницы, производители и FDA сообщали о проблемах с изделиями, и рекомендовал укрепить отношения отчётности. Более позднийобзор GAO о внедрении FDA системы отчётности по медицинским изделиямнашёл недостатки в оценке соблюдения требований, обработке данных и документировании того, как сообщения приводили к корректирующим мерам. Впоказаниях GAO в Конгрессе в 1989 годубыл сделан вывод, что система отчётности не обеспечивала предусмотренное раннее предупреждение, а полномочия FDA по отзыву продукции были ограничены законом.
После инцидентов Конгресс изменил правовую базу.Закон о безопасных медицинских изделиях 1990 года (Safe Medical Devices Act of 1990)обязал учреждения-пользователи сообщать информацию, разумно указывающую на то, что изделие стало причиной смерти пациента или тяжёлой травмы либо способствовало им, установил сроки отчётности и расширил полномочия по исправлению, изъятию и отзыву продукции. Этот закон — свидетельство более позднего политического ответа на широкие слабости надзора. Его не следует описывать как судебное установление того, что инциденты с Therac-25 породили каждое его положение, а его позднейшие обязанности нельзя применять задним числом к больницам в 1985 году.
Канадские полномочия действовали через другую структуру.Radiation Emitting Devices Actзапрещал продажу, сдачу в аренду или ввоз устройств, не отвечающих применимым стандартам или создающих указанные радиационные риски, и предусматривал полномочия по инспекциям, уведомлениям и регулированию. Canadian Radiation Protection Bureau запросило аппаратные и программные изменения после Гамильтона, а затем согласовало с FDA рекомендацию приостановить рутинное использование. В документах всё же видна задержка между первым запросом независимой блокировки и её установкой в рамках итоговых корректирующих мер.
Регуляторная разрозненность значима и в США. Действующееописание NRC радиационной юрисдикцииобъясняет, что штаты регулируют машины, производящие излучение, такие как рентгеновские аппараты и ускорители частиц, тогда как федеральные ведомства имеют отдельные роли. Поэтому в деле Therac-25 участвовали больницы, радиационные органы штатов, FDA и канадские структуры. Распределённая юрисдикция не обязательно дефектна, но она требует явного маршрута, по которому локальная аномалия лечения становится национальным и трансграничным сигналом об изделии.
Корневую причину, способствующие условия и триггеры нужно различать
Непосредственным триггером в Тайлере было быстрое редактирование во временном окне. Непосредственным триггером второго инцидента в Якиме — команда установки в момент переполнения 8-битной переменной до нуля. Эти события выбирали опасные пути в ПО. Они не являются корневой причиной, потому что ни одно из них не объясняет, почему путь имел полномочия активировать опасную энергию без независимого останова.
Центральное положение о корневой причине, подтверждаемое документами, носит архитектурный и организационный характер: ответственность за безопасность перешла от независимых аппаратных блокировок к ПО без анализа опасностей, жизненного цикла ПО, комплексной валидации, проектирования интерфейса и системы извлечения уроков, соразмерных возможному вреду. Конструкция позволяла одной управляемой ПО цепочке задавать конфигурацию, судить о согласованности, отображать состояние и разрешать лечение. Общая зависимость сводила на нет видимость множественных проверок.
К способствующим инженерным условиям относились повторно используемые подпрограммы, чьи допущения не были заново подтверждены в новой архитектуре; общие переменные и параллельные задачи с небезопасной семантикой состояний; отсутствие финальной проверки согласованности; способные насыщаться мониторы; обработка неисправностей, допускавшая перезапуск; малопонятные сообщения; скудная документация на ПО; и практики тестирования, которые поначалу не включали реалистичное редактирование на скорости эксперта. Отношение исходного дерева отказов к ПО снижало вероятность того, что эти пути будут изучены до развёртывания.
К способствующим эксплуатационным условиям относились частые безвредные паузы, обучение операторов, подчёркивавшее обилие механизмов безопасности, отсутствующие или отключённые каналы аудита и контроля кабинета, а также ограниченная возможность учреждений сопоставлять инциденты. Локальное решение возобновить работу имело значение, но оно принималось внутри информационной среды, созданной и контролируемой производителем.
К способствующим управленческим условиям относились слабая проработка инцидентов, категоричные заявления о невозможности или огромном улучшении безопасности без воспроизведённой корневой причины, неполное распространение неблагоприятной информации, материалы корректирующих мер без запрошенных деталей по ПО и планов испытаний, а также задержка с превращением рекомендаций о независимой аппаратной защите в установленные барьеры. Цитируемые в расследовании документы FDA показывают повторяющиеся запросы документации, анализа взаимодействия, понятных сообщений и испытаний при установке.
Сбой реагирования следует также отличать от сбоя восстановления. Реагирование было медленным, когда аппараты продолжали рутинное клиническое использование, пока опасность оставалась неясной. Восстановление стало отдельной задачей, когда потребовалось несколько редакций CAP, а доработки выявляли новые незакрытые подсистемы. Исправление, которое нельзя единообразно установить, проверить и подтвердить на каждом аппарате, ещё не означает восстановления всего парка.
Последствия нельзя свести к одной дозе или одному числу смертей
Подтверждённые последствия тяжёлые. Шесть известных инцидентов были связаны с массивными передозировками. Пациенты получили лучевые травмы, инвалидность, длительную боль; смерти были связаны с облучением во времени, а в ряде случаев — документально зафиксированы медициной. Согласно расследованию, двое пациентов в Тайлере умерли от последствий передозировки. У второго пациента в Якиме до инцидента была терминальная стадия рака; он умер после осложнений передозировки; родственники утверждали, что облучение сократило жизнь и усилило страдания, и иск был урегулирован.
Пациент в Гамильтоне умер от агрессивного рака, а в материалах вскрытия зафиксировано серьёзное лучевое повреждение, которое в противном случае потребовало бы серьёзного лечения.
Заявления о точных дозах должны оставаться оговорёнными. Ионизационные камеры аппарата насыщались, разные учреждения воспроизводили разную мощность, частота импульсов различалась, а в некоторых сеансах не было бумажных данных. Моделирование после событий давало диапазоны, а не прямые измерения. Поэтому статья не превращает каждую оценку в измеренную дозу пациента и не сравнивает локальное облучение со смертельностью при облучении всего тела так, будто биологические эффекты эквивалентны.
Эксплуатационные последствия вышли за пределы шести пациентов. Одиннадцать учреждений зависели от аппарата, безопасное состояние которого нельзя было установить по его собственному дисплею. Клиникам приходилось приостанавливать или ограничивать лечение, проверять аппараты, менять рабочие процессы, участвовать в совещаниях пользователей и вести пациентов, нуждающихся в продолжении терапии. Операторы и физики несли бремя реконструкции поведения без доступа к исходному коду и без полной информации об инцидентах. Регуляторам и пользователям потребовалось более двух лет, чтобы пройти путь от обнаружения в Тайлере до итогового анализа безопасности.
Правовые и финансовые последствия измерить труднее. В исходном расследовании упоминаются несколько исков и мировых соглашений, но просмотренные здесь открытые первичные документы не содержат решения по существу, распределяющего ответственность, полных условий мировых соглашений, выплат страховщиков или совокупного ущерба. Мировое соглашение подтверждает урегулирование спора, а не установленную судом небрежность или признание вины. Было бы вводящим в заблуждение превращать частные исходы в точные корпоративные издержки или правовые выводы.
Более широкий системный эффект — изменение того, какие доказательства требует безопасность медицинских изделий. Позднейший закон усилил отчётность о неблагоприятных событиях и полномочия по отзыву. Позднейшее регулирование добавило проектные контролы. Современные руководства требуют риск-ориентированной документации по ПО, валидации и работы с человеческим фактором. Therac-25 имеет отношение к этим контролям, но релевантность — не доказательство того, что одна серия инцидентов сама по себе создала весь современный режим.
Корректирующие меры прошли путь от обходного решения с клавишей до независимых барьеров
Первая инструкция AECL пользователям после Тайлера сводилась к отключению клавиши «курсор вверх», в том числе к физическому запрету её использования, чтобы операторы заново вводили всё предписание. FDA отклонило это уведомление как неадекватное: оно не объясняло дефект или опасность, а его тон не передавал срочности. Это различие с точки зрения ответственности между эксплуатационным обходным решением и ремонтом безопасности. Обходное решение может устранить один триггер, оставляя пользователей неспособными оценить остаточный риск.
Первый официальный план корректирующих мер в июне 1986 года пошёл дальше. Он предлагал исправить поведение, выявленное в Тайлере, изменить контроль импульсов, превратить многие неисправности из пауз в приостановки, добавить схему, блокирующую модулятор после чрезмерного импульса, ограничить клавиши редактирования и пересмотреть руководства. FDA согласилось с направлением, но неоднократно запрашивало больше документации по ПО, анализ взаимодействия и детальный план испытаний. AECL сначала ответила, что единого плана испытаний ПО и отчёта не существует, поскольку аппаратура и ПО проверялись годами.
Документы о реакции регуляторов и пользователейпоказывают, почему потребовалось пять редакций CAP. FDA возражало против сохранения поведения паузы при сбоях скорости дозы и наклона пучка, требовало содержательных сообщений и хотело строгих испытаний каждой будущей модификации ПО. После второго инцидента в Якиме агентство пришло к выводу, что одно ПО не может гарантировать безопасную работу. Канадские власти заняли аналогичную позицию. Рутинное использование не рекомендовалось, пока разрабатывались постоянные изменения.
Участие пользователей существенно улучшило план. На совещании в марте 1987 года пользователи, AECL, FDA, канадские регуляторы и технические представители разобрали все шесть инцидентов. Пользователи просили независимую оценку ПО, доступ к исходному коду, бумажный журнал аудита и дополнительные аппаратные доработки. В документах сказано, что исходный код предоставлен не был, а против варианта с журналом аудита приводилась ограниченность памяти. Эти решения оставили пробелы в прозрачности, но совещание создало прямой механизм проверки предложения AECL на клиническом опыте.
Итоговый CAP в июле 1987 года изменил архитектуру и эксплуатацию. Дозиметрические прерывания стали приостановками, а не возобновляемыми паузами. Операторам приходилось заново вводить параметры. Была добавлена защита отключения за один импульс, включая аппаратную защиту, описанную ранее в процессе. Добавлены блокировки положения поворотного стола и отклоняющих магнитов. Активация пучка блокировалась, когда поворотный стол находился в положении светового поля или в промежуточном положении.
Малопонятные коды неисправностей заменили содержательными сообщениями, поведение редактирования ограничили, исправили известные дефекты Тайлера и Якимы, пересмотрели руководства, а многочисленные другие изменения ПО устранили неисправности, найденные при пересмотре.
Одобрение FDA было обусловлено итоговыми результатами испытаний, независимым анализом безопасности, пересмотренной документацией и завершением установки. Более поздний анализ безопасности выявил дополнительные критичные для безопасности подсистемы, не полностью охваченные более ранней редакцией CAP, что демонстрирует ценность рассмотрения опасности за пределами воспроизведённых ошибок. Его рекомендации добавили независимую от компьютера защиту сканирования и выбора энергии и продолжили сопровождение ПО в более поздних выпусках.
Документ GAO об отзыве классифицирует действие США как отзыв класса I — категории, предназначенной для разумной вероятности серьёзных неблагоприятных последствий для здоровья или смерти. Он датирует отзыв 3 июня 1987 года, тогда как описание показывает процесс, выходящий за пределы этой административной даты в обе стороны. Дата отзыва, одобрение CAP, установка и итоговый отчёт об анализе безопасности — разные вехи. Принимать любую из них за момент ремонта значило бы скрыть, как долго собиралась гарантия безопасности.
Доказательства ремонта реальны, но современный читатель не может воспроизвести полное доказательство безопасности
Сильнейшее доказательство ремонта — переход от общей зависимости от ПО к независимой физической защите. Аппаратное отключение после одного чрезмерного импульса и независимые проверки состояния поворотного стола, сканирования и выбора энергии могут сдержать ещё не обнаруженные дефекты ПО. Приостановки не позволяют оператору многократно разрешать нерешённое дозиметрическое состояние. Понятные сообщения улучшают выявление. Испытания при установке и протоколы будущих модификаций снижают вероятность того, что правильная конструкция будет скопирована или сконфигурирована неверно.
Регуляторная проверка — ещё одна форма доказательства. FDA не сочло достаточными ни первое уведомление пользователей, ни первый CAP. Оно запрашивало спецификации, планы испытаний, анализ взаимодействия, более ясные схемы, испытания будущих модификаций и проверку установки. Оно выявило противоречивые данные испытаний и потребовало независимого анализа безопасности. Канадские власти и пользователи настаивали на аппаратных барьерах. Такие документы весомее, чем одно лишь заявление производителя.
Тем не менее открытые документы не дотягивают до полного воспроизводимого пакета гарантий. В них нет полного дерева исходного кода и истории версий, всех требований до и после модификаций, каждого тестового входа и ожидаемого результата, покрытия состояний тайминга и переполнения, анализа независимости каждой блокировки, записей об установке на каждом аппарате, журнала нерешённых дефектов или долгосрочных эксплуатационных данных по версиям ПО и аппаратуры. Сама итоговая сводка анализа говорит, что инспекция кода не могла дать высокой уверенности для некоторых сложных функций.
Отсутствие другой публично задокументированной катастрофы Therac-25 после доработки согласуется с эффективным ремонтом, но не является контролируемым тестом. Парк был небольшим, применение изменилось, аппараты вырабатывали свой срок службы, а публичная отчётность была несовершенной. Защитимый вывод: CAP существенно укрепил систему и целенаправленно перекрыл известные катастрофические пути. Более сильное утверждение, что каждый опасный программный путь был найден и устранён, не является ни необходимым, ни подтверждённым.
Более поздние законы и стандарты показывают, каких доказательств не хватало, а не то, что требовал закон в 1985 году
Когда Therac-25 начал применяться, в США не было более поздней системы проектных контролов. Закон 1990 года расширил механизмы отчётности и отзыва.Итоговое правило FDA 1996 года о системе качества, вступившее в силу в 1997 году, добавило проектные контролы на этапе до производства после того, как исследования выявили конструктивные недостатки за существенной долей отзывов и сбоев, связанных с ПО. Эти более поздние правила не следует представлять как требования, нарушенные AECL до их появления. Они — ориентир для определения категорий контроля, которых не хватало в исторических документах.
Общие принципы валидации программного обеспечения FDAпозднее описали валидацию как доказательство в течение всего жизненного цикла, а не как финальное тестовое событие. Действующеепредпродажное руководство для программных функций изделийтребует документации, соразмерной риску, включая архитектуру, требования, анализ опасностей, верификацию и валидацию, историю изменений и нерешённые аномалии. Цель ссылок на эти документы — сравнительная: они показывают артефакты, которые современный рецензент ожидал бы найти, но которых нет в сохранившихся материалах по Therac-25.
Современные требования к человеческому фактору также касаются интерфейсного пути.Руководство FDA по человеческому фактору и удобству использованиярассматривает целевых пользователей, среды применения, критические задачи и связанные с использованием опасности как исходные данные проектирования. При таком подходе быстрое исправление опытным оператором, частые паузы, двусмысленные сообщения и команда продолжения одной клавишей проверялись бы как часть проблемы безопасности, а не отвергались как поведение вне инженерного контроля.
FDA признаётIEC 62304стандартом жизненного цикла ПО медицинских изделий. Его процессная структура не гарантирует безопасность ПО и сама по себе не валидирует конечное изделие. Но она требует поддерживаемого процесса разработки и сопровождения, который делает требования, меры управления рисками, конфигурацию, решение проблем и влияние изменений более проверяемыми. Это напрямую относится к коду, унаследованному через поколения Therac и позднее латаному через несколько редакций CAP.
На дату публикации статьиРегламент FDA о системе управления качеством (Quality Management System Regulation)действует с 2 февраля 2026 года и включает ISO 13485:2016 путём ссылки. Он даёт нынешним регуляторам более широкую рамку управления качеством и инспекций, включая проектирование и разработку, расследование жалоб и записи. Это свидетельство нынешнего базового уровня ответственности, а не доказательство того, что инспекция нашла бы в AECL четыре десятилетия назад.
Рамка отчётности теперь тоже более явная.История регламента FDA об отчётности по медицинским изделиям (MDR)прослеживает расширение после 1990 года на учреждения-пользователи, а текущийобзор отчётностиразличает обязанности производителя, импортёра и учреждения. Лучшие правила повышают вероятность того, что аномалия в одной больнице станет сигналом об изделии. Но они по-прежнему зависят от того, распознает ли персонал, что событие может быть связано с изделием, и сохранит ли достаточно доказательств для расследования.
Ответственность нельзя выводить из одного лишь технического контроля
Практический контроль — дисциплинированный способ исследовать ответственность, но он не заменяет применение права судом. Проектные полномочия AECL, её знания и роль в корректирующих мерах говорят о высокой инженерной ответственности. Полномочия больниц по эксплуатации и отчётности оправдывают проверку локальных решений. Полномочия регуляторов оправдывают проверку сроков и достаточности мер. Ни одно из этих наблюдений само по себе не устанавливает элементы небрежности, причинно-следственной связи, дефекта изделия, нарушения закона или ущерба в конкретной юрисдикции и деле.
Первоначальное расследование опиралось на показания под присягой и сообщало, что несколько исков были урегулированы во внесудебном порядке. Мировое соглашение может отражать судебные издержки, неопределённость, страхование, конфиденциальность, сострадание или распределение риска. Без публичных условий и установленных судом фактов оно не может подтвердить признание вины или совокупный ущерб. В использованных здесь первичных документах нет публично доступного решения по существу, разрешающего основные иски о травмах, связанных с Therac-25.
Аккуратности требует и корпоративная идентичность. AECL была канадской коронной корпорацией, а её медицинский бизнес позже менял названия и собственников. Очевидный субъект — Atomic Energy of Canada Limited, поскольку AECL контролировала изделие в период инцидентов и CAP. Более поздние юридические лица не должны автоматически наследовать фактическое знание или правовую ответственность без сделок и корпоративных документов, устанавливающих такую связь.
Ответственность может быть установлена и без преувеличенных обвинений. Статья может определить, кто мог предотвратить, выявить, ограничить и устранить опасность; сравнить эти полномочия с реальными действиями; и сохранить неопределённость относительно правовых исходов. Это даёт более полезный результат, чем объявление вины на основе дефекта ПО или трактовка конфиденциальных мировых соглашений как оправдания.
Ранние контрфактические сценарии полезнее фантазии об идеальном коде
Самый слабый контрфактический сценарий — что более хорошие программисты написали бы безупречный код. Он непроверяем и задаёт неверный стандарт. Параллельное ПО реального времени может содержать дефекты и при компетентной работе. Доказательство безопасности должно исходить из того, что часть дефектов выживает, и не давать ни одному из них достичь катастрофической энергии.
Самый сильный контрфактический сценарий начинается с архитектуры. Если бы Therac-25 сохранил независимые блокировки сканирования и поворотного стола, сопоставимые с защитами Therac-20, общий дефект редактирования мог бы привести к отключению, а не к облучению. Это подтверждается более поздним обнаружением дефекта того же класса на Therac-20 без травмы пациента и независимыми барьерами, выбранными в итоговом CAP. Но это не доказывает, что все шесть инцидентов были бы предотвращены: точные пути первых трёх неизвестны.
Второй контрфактический сценарий начинается после Кеннестона. Если бы вопрос физика, травма пациента и уведомление об иске попали в формальный журнал опасностей, доступный всем пользователям и регуляторам, более поздние учреждения имели бы основание не доверять кажущейся недодозировке и заявлениям о невозможности. Аппарат можно было ограничить, пока сканирование и поведение блокировок проверялись в наихудших состояниях. Документы не доказывают, что данных июня 1985 года хватило бы для окончательного отзыва, но их хватало для консервативного документированного расследования.
Третий начинается после Гамильтона. Канадские чиновники и независимый консультант рекомендовали независимую блокировку положения и невозобновляемую обработку сбоев скорости дозы. Установка этих изменений по всему парку до возобновления рутинного использования закрыла бы класс опасных конфигураций шире, чем модификация логики микропереключателей. Более поздний CAP принял близкие по смыслу контроли. Поэтому разумно делать вывод, что более ранняя реализация могла снизить риск, но нельзя утверждать, что она наверняка заблокировала бы неизвестный механизм Кеннестона или первой Якимы.
Четвёртый начинается с первого выявления в Тайлере. Правило, по которому любое серьёзное противоречие по дозе требует приостановки лечения, оценки пациента, сохранения состояния аппарата и эскалации производителю и регулятору, предотвратило бы немедленное продолжение одной клавишей. Работающие аудио и видео улучшили бы человеческое выявление. Ни один из этих контролов не чинит ПО, но оба ограничивают повторное облучение и улучшают доказательства. После первого события удержание аппарата вне клинической службы до воспроизведения Malfunction 54, вероятно, предотвратило бы второе облучение в Тайлере на этом аппарате.
Пятый касается тестирования. Воспроизведение редактирования на скорости эксперта, рандомизация тайминга задач, принудительное переполнение байта, внесение устаревшего и противоречивого общего состояния, насыщение входов измерений и проверка итоговой физической конфигурации против предписания имели бы больше шансов вскрыть известные пути, чем обычное многократное использование. Этот вывод подтверждается тем, как физик из Тайлера воспроизвёл дефект и как в итоге объяснили Якиму. Открытые данные не показывают, какой приём нашёл бы какой дефект до выпуска.
Подтверждённые факты, обоснованные выводы и публичные неизвестные
К подтверждённым фактам относятся шесть известных инцидентов; большая роль в безопасности, возложенная на ПО Therac-25; отсутствие некоторых независимых защит, сохранённых в более ранних машинах; исключение остаточных ошибок ПО из анализа 1983 года; зависимый от времени путь редактирования в Тайлере; путь переполнения счётчика в Якиме; вводящее в заблуждение или малопонятное поведение интерфейса; разрозненная коммуникация об инцидентах; вывод FDA о дефекте и неоднократные возражения по CAP; требования канадских властей об изменениях; отзыв класса I в США; и итоговые корректирующие меры, добавившие независимую аппаратную защиту, изменения ПО,
более строгое поведение приостановок и пересмотренную документацию.
Подтверждено и то, что документы FDA не принимали ряд заверений AECL на веру. Агентство отклонило неадекватное первоначальное уведомление пользователей, запросило больше деталей и испытаний, усомнилось в данных, не подтверждающих заявленное исправление, потребовало изменений за пределами дефекта Тайлера и обусловило одобрение CAP итоговыми результатами и независимым анализом. Пользователи и канадские чиновники внесли вклад в итоговый набор контролов. Ремонт поэтому согласовывался и проверялся несколькими институтами, а не поставлялся как один бесспорный патч.
Обоснованные выводы начинаются там, где эти факты взаимодействуют. Более ранние независимые барьеры, вероятно, предотвратили бы хотя бы часть катастрофических облучений, поскольку та же разновидность программной несогласованности сдерживалась аппаратурой на Therac-20 и поскольку итоговый CAP выбрал эти барьеры. Общий журнал опасностей и своевременное предупреждение между площадками, вероятно, ускорили бы распознавание, потому что вера каждого учреждения в невозможность частично опиралась на отсутствие информации об инцидентах. Более реалистичное комплексное тестирование могло бы вскрыть условия тайминга и переполнения.
Это вероятные эффекты контроля, а не реконструированная альтернативная история.
Ряд фактов оспаривается или неопределёнен. Сроки и полнота ранней осведомлённости AECL различаются в версиях компании, больниц и судебных материалов. Механизм Гамильтона так и не был твёрдо воспроизведён. Первые три инцидента нельзя по открытым данным приписать конкретному дефекту ПО. Точные дозы пациентов различаются в зависимости от реконструкции и условий работы аппарата. У некоторых пациентов на исход влияли и рак, и лучевая травма, поэтому простое число смертей не может выразить медицинскую причинность. Частные соображения при проектных решениях и распределение корпоративных полномочий между конкретными людьми не публичны.
Правовые и финансовые неизвестные значительны. Суммы и условия мировых соглашений в основных первичных документах отсутствуют. Нет публичного решения по существу, распределяющего ответственность между AECL, больницами, клиницистами или сервисными организациями. Страховое покрытие, гарантии возмещения, судебные расходы и объёмы компенсаций недоступны. Отсутствие этих документов не означает, что издержек или ответственности не было; оно не позволяет делать точные заявления.
Остаются и неизвестные в части ремонта. Открытые источники не дают результатов каждого испытания CAP, полных рабочих материалов независимой проверки, записей об установке на всех аппаратах, истории контроля версий кода или многолетней статистики инцидентов. Они не доказывают, как вёл себя каждый модифицированный аппарат до вывода из эксплуатации. Более поздняя регуляторная и стандартная рамка показывает, что содержал бы современный пакет доказательств, но не может задним числом создать недостающие артефакты.
Доказательства, способные изменить вывод, включают полный журнал опасностей AECL, историю исходного кода и изменений, исходные требования и анализы безопасности, записи внутренних проверок, все сервисные журналы учреждений, переписку регуляторов, не воспроизведённую в расследовании, полные данные испытаний CAP, результаты приёмочных испытаний при установке и рассекреченные материалы мировых соглашений или суда. Такие материалы могли бы уточнить, кто и когда что знал.
Они не изменили бы базовый физический факт — независимые барьеры отсутствовали до инцидентов и были добавлены при ремонте, — но могли бы существенно изменить распределение и сроки организационной ответственности.
Устойчивый тест ответственности для медицинской безопасности, зависящей от ПО
Первый тест — владение опасностью. Есть ли для каждого опасного энергетического состояния один названный организационный владелец с полномочиями по требованиям, архитектуре, валидации, мониторингу на местах и корректирующим мерам? Поддерживает ли этот владелец опасность через поколения продукта и повторно используемые компоненты? Опасность, разделённая между аппаратными, программными и клиническими командами без единой ответственной точки интеграции, скорее всего, окажется между ними.
Второй тест — независимость барьеров. Может ли один дефект ПО, устаревшая общая переменная, повреждённая конфигурация или ошибочная команда победить и управляющее действие, и его проверку? Вторая программная процедура на том же процессоре, читающая то же состояние и использующая те же допущения, может быть избыточна в коде, но не независима в безопасности. Для катастрофической энергии нужен барьер, чей отказ не вызван тем же путём: физическое определение положения, жёстко прошитое отключение, независимый мониторинг или другой явно отделённый механизм.
Третий тест — контроль допущений при повторном использовании. Содержит ли каждая повторно используемая процедура документированные допущения об аппаратных блокировках, тайминге, числовых диапазонах, поведении планировщика, достоверности датчиков и рабочем процессе оператора? Подтверждаются ли эти допущения заново, когда ПО переходит в новый продукт? Долгая история работы в защищённом предшественнике — не полевое доказательство для преемника, который убирает защиту.
Четвёртый тест — программные доказательства, ведомые опасностью. Начинаются ли требования с опасных физических состояний и необходимых ограничений или с функций и ожидаемого поведения? Могут ли рецензенты проследить каждую опасность до требований, архитектуры, кода, тестов, остаточного риска и мониторинга на местах? Оцениваются ли нерешённые аномалии по наихудшему правдоподобному последствию, а не только по частоте? Прохождение обычных сеансов не задействует редкие комбинации состояний.
Пятый тест — реалистичное тестирование взаимодействия. Наблюдают ли за опытными пользователями при выполнении обычных исправлений на полной скорости? Вносятся ли намеренно тайминг прерываний, быстрые правки, повторные паузы, границы переполнения, вытеснение задач и противоречивые значения датчиков? Включает ли тестирование самого быстрого и самого опытного оператора, а не только медленную скриптовую последовательность? Предусмотренная эффективность должна считаться частью рабочей среды.
Шестой тест — консервативное распределение полномочий «человек—машина». Передаёт ли дисплей опасность языком, на котором оператор может действовать? Переходит ли серьёзное противоречие по умолчанию в приостановку? Блокируется ли перезапуск, пока состояние не восстановлено и независимо не проверено? Измеряются ли и сокращаются ли частые ложные сигналы до того, как они нормализуют опасное продолжение? Система сигнализации, приучившая пользователей игнорировать её, израсходовала собственный запас безопасности.
Седьмой тест — правдивое измерение. Могут ли мониторы отображать наихудшую правдоподобную мощность без насыщения или вводящего в заблуждение запасного значения? При конфликте независимых показаний сохраняет ли система оба и исходит ли из более опасного состояния? Сохраняются ли сырые показания, пределы диапазона и достоверность датчиков? Показанный ноль опасен, когда он означает, что прибор превысил свою ёмкость, а не что ничего не произошло.
Восьмой тест — проверяемая запись инцидентов. Сохраняет ли каждый сеанс предписание, правки, версии ПО и конфигурации, физические состояния блокировок, команды пучка, показания мониторов, сигналы, перезапуски и синхронизацию часов? Может ли физик реконструировать последовательность, не полагаясь на память? Защищена ли запись от рутинного отключения и рассчитана ли на срок жизни продукта? Расследование превращается в домысел, когда система выбрасывает значимое состояние.
Девятый тест — эскалация между площадками. Может ли любое учреждение сообщить о подозрении на серьёзное событие, не доказывая предварительно, что причиной стало изделие? Агрегируются ли сообщения по продукту и опасности через страны, сервисные организации и корпоративные подразделения? Получают ли пользователи своевременные фактические предупреждения, отличающие подтверждённые механизмы от нерешённого риска? Производителю не следует ждать одинаковых травм, когда общий исход катастрофичен.
Десятый тест — широта корректирующих мер. Устраняет ли реакция только воспроизведённый триггер или выявляет все пути к опасному состоянию? Помечаются ли временные обходные решения как таковые, с остаточным риском и сроком действия? Включает ли итоговый ремонт анализ влияния изменений, регрессионные испытания, независимую проверку, верификацию установки и постмаркетинговый мониторинг? Ограничение клавиши может выиграть время; оно не может закрыть доказательство безопасности.
Одиннадцатый тест — доказательства, готовые для регулятора. Может ли производитель предоставить требования, спецификации, планы испытаний, результаты, записи аномалий и данные об установке по запросу, или ему приходится восстанавливать их после травмы? Есть ли у регуляторов полномочия и сеть отчётности, позволяющие действовать до того, как производитель обретёт полную уверенность? Указывает ли одобрение условия и доказательства завершения? Гарантия безопасности слабеет, когда документация следует за ремонтом, а не управляет им.
Двенадцатый тест — устойчивая верификация. Подвергаются ли независимые барьеры периодическим проверкам в реалистичных условиях отказов? Оцениваются ли изменения ПО против исходных опасностей даже после смены персонала и собственников? Отслеживаются ли тенденции ложных сигналов, полевых аномалий и близких к инциденту событий? Публикует ли организация достаточно агрегированных данных, чтобы больницы и регуляторы знали, что контроль остаётся встроенным? Отсутствие сообщаемых катастроф не эквивалентно доказательству работы.
Поэтому Therac-25 нельзя сводить к моральной притче о небрежном коде или невнимательных операторах. Это была система управления, в которой полномочия ПО расширились, тогда как независимая защита, наблюдаемость и институциональное обучение не расширились вместе с ним. Известные дефекты сделали этот дисбаланс видимым. Более ранние неподтверждённые механизмы и неполные документы показывают, почему ответственность не может зависеть от нахождения каждой ошибки уже после вреда.
Ремонт пошёл в верном направлении, потому что изменил то, кто и что может остановить пучок. Независимые блокировки, отключение за один импульс, невозобновляемые сбои безопасности, более понятные сообщения, более широкий анализ и проверенные регулятором корректирующие меры сделали систему менее зависимой от идеального кода и идеальной интерпретации. Оставшийся урок — доказательный: производитель критичных для безопасности изделий обязан показать до развёртывания и после каждого серьёзного сигнала, что ни один скрытый путь не может превратить обычную клиническую работу в катастрофическое облучение.

