操作员|核能杀手Therac-25:治病机器与杀人软件( 四 )


不过AECL到底还是晚了一步,在此之前,FDA已经获得了来自德克萨斯州健康部门的“非法”汇报,并且已经开始调查AECL的问题了。
说“非法”,是因为当时的美国法律只要求医疗设备的制造商汇报问题,并没要求医院等使用者,所以FDA一直不知道发生了这么多起事故。实际上当时FDA对医院发生的、因医疗设备问题而引起的伤亡事故所知不足1%。Therac-25事件后,美国对这条规则进行了修改,同样要求使用者向FDA汇报问题。当然这都是后话。
当时FDA很快否定了AECL那个禁止向上移动光标的用户声明,并要求他按照《健康与安全辐射控制法》的规定进行整改,具体包括:通知所有购买者、调查问题、确定解决方案、提交对应的改进计划。
这时时间是1986年4月,惊世骇俗的切尔诺贝利大爆炸也发生在这一个月。
1986年5月,FDA再次要求AECL重新通知用户,详细说明问题,并提交改进计划。
这时Therac-25的用户也坐不住了,他们联合起来,举办了第一届Therac-25用户大会。
从某种意义上来说,这很像一种自救:事故在不断发生,而厂家给出的信息总是令人失望,对问题避重就轻,对改进夸大其词。作为用户,他们至少享有知情权。用户聚在一起,讨论了事故的详细经过,然后开始共同寻找解决方案。AECL也派人参加了会议,他们表示之前没透露太多信息完全是不想引发谣言,AECL绝对没有keep things quite的公司政治。
用户讨论后要求增加硬件锁。
AECL拒绝了他们,理由是多余。
但他表示自己正在开发一个能够把Therac-25的安全性再提升几个量级的补丁。这个补丁于1986年6月13发布,叫补丁V1。
不过FDA马上否定了补丁V1,并要求AECL给出详细测试计划。
AECL表示测试计划很难,但可以再加一个补丁,于是在1986年12月22日发布了补丁V2。
V2上线后的第25天,第六起事故发生了。
1987年1月,美国雅基玛谷纪念医院,第六起。
第六起和第三起发生在同一个地方。
在用户和FDA的压力下,AECL很快查明了问题。
简单来说,这起事故是由另一个bug引起的。和之前的一样,单从本身看,这个bug本身也不是什么大问题,仅仅是一个字节使用不当而已,但它们的影响都是致命的。
至此,AECL的信任被消耗的差不多了,哪怕他宣布立即上线之前被否定的硬件锁,也没有再让大家相信Therac-25的安全性。
FDA很快下线了所有的Therac-25。
AECL继续孜孜不倦的开发补丁。1987年7月21日,他发布了最后一版补丁,第5版,所以叫补丁V5。
但这个补丁并没有V5起来,后面的日子里,Therac-25江河日下。
1988年,AECL重组了开发Therac-25的医疗部门,将其更名为Theratronics,并试图打包卖给别人,未遂。
1991年,因为Therac-25的问题,FDA禁止了该公司的全部产品线。
2005年,Theratronics公司解散。
Therac-25事件后,FDA开始仔细研究医疗软件设备的审查标准,并逐渐发展成了现行的IEC62304(2006版,国内对应为YY/T0664)。这也是现在医疗软件开发过程管理的基本标准。
05 尾声Therac-25其实就是一种机器人。
自机器人被发明,甚至被幻想出来开始,关于它不听话了要怎么办的担忧就没有停过。
而且这并不像科幻小说那么遥远,你肯定听过自动驾驶的故障,也用过只知道绕圈子息事宁人的智能客服,从广义上来说,这都是机器对你的碾压。
给牛顿写了墓志铭的英国人蒲柏有这么一句诗:
To err is human; to forgive, divine。
犯错是人性,宽恕是神性。
或许比起等待机器产生自我意识,然后要求它们凭借善良本性,遵循阿西莫夫的机器人三定律来,这会是一个更理性的选择。