很多朋友想了解關於x射線的一些資料信息,下麵是(揚升資訊www.balincan8.com)小編整理的與x射線相關的內容分享給大家,一起來看看吧。
圖片來源@視覺中國
文 | 郭華
01 殺手的誕生1973年,蘇聯開始在基輔修建切爾諾貝利核電站,除了滿足烏克蘭的用電需求外,還希望借此向世界展示蘇聯“和平利用核能”的形象。
差不多同時,加拿大一家造核電站的公司AECL,成立了醫療部門,開始開發放射治療儀。
核能有三個主要的應用領域,分別是核武器、核動力、核醫學。一般來說,後兩者被認為是和平的,且越靠後就越和平。
AECL全稱Atomic Energy of Canada Limited,成立於1952年,由加拿大國家控股,其使命就是和平利用核能,所以AECL開發放射治療儀似乎天經地義。不過AECL的醫療部門並不是從頭開始的,他選擇了和法國的CGR公司合作,然後把CGR的兩款老產品進行升級,變成了自己的新產品,分別起名為Therac-6和Therac-20。
這算借腹生子?還是借子生子?都不重要,重要的是孩子已經有了。
可能是這兩款產品讓AECL站穩了腳跟,也可能是雙方在市場上產生了分歧,總之因為一些未公開的原因,AECL和CGR的合作在1981年終止。
這年,切爾諾貝利的第三個反應堆建成開始發電,按照預期,六個反應堆都建成後切爾諾貝利將成為蘇聯最大的核電站。
AECL的腳步也沒有暫停,他在結束合作的一年後推出了Therac-25。
Therac-25有很多特別之處。
在AECL的產品體係中,後綴表示輻射能量,Therac-6的能量是6MeV,Therac-20是20MeV,Therac-25就是25MeV。所以他的能量是最大的,更大的能量意味著能夠觸達更深的病灶。而且他更先進,因為他能夠完全由軟件進行控製——就像2007年的iPhone、2010年的特斯拉一樣,更發達的軟件就是先進的表現,至少是現今的表象。借助於發達的軟件,他省去了很多硬件,甚至包括安全鎖,所以他的成本也更低。
更重要的,他是AECL的親兒子。
1983年,加拿大總領事館在美通社新聞中對其進行了隆重發布,並在隨後交付出了11台,其中5台在美國,6台在加拿大。巧合的是,後來發生爆炸的切爾諾貝利四號反應堆也是在這年上線的。
輻射的衡量單位是倫琴。
在切爾諾貝利爆炸的反應堆旁站十分鍾,受到輻射量大概是5000倫琴。
Therac-25在事故中給患者施加的劑量是切爾諾貝利的4倍,能夠達到20000倫琴以上,是常規治療的100倍。
而短期內全身接受1000倫琴的劑量便會致人亡。
所以說如果切爾諾貝利像一個核彈,那麽Therac-25就像一個殺手,披著治病救人的外衣反複作案——在1985-1987年間,他總共製造了6起事故,其中4人亡,2人重傷。
02 失控的核能Therac-25係列事故的本質就是AECL的失控——他的軟件無法控製他的硬件,他也控製不了他的軟件,而他的軟件和硬件一起,又正在控製著核輻射。
1985年6月,美國佐治亞州的肯尼斯通腫瘤中心,第一起。
這是一次胸部腫瘤的常規放射治療,射線強度預期200倫琴,照射位置為前胸,患者是一名61歲女。但治療開始後不久,患者便感覺到了劇烈的灼燒感,隨後前胸的照射點、後背的貫穿對應位置都出現了紅腫,這很像輻射傷。醫生立即停機並聯係了AECL。
三天後,AECL回了電話,表示過量輻射是不可能的。
患者不認可這個結論,醫院又給不出其他合理解釋,於是患者便把醫院和AECL一塊告上了法庭。但AECL始終拒絕承認Therac-25有問題,再加上治療當天Therac-25的打印功能被禁止了,當時的機器參數並沒有備份,所以該起訴訟最終庭外和解。
患者的胸部被切除,後來經過測算,當時的輻射強度大概在15000倫琴到20000倫琴之間。
這起事故發生在美國,美國有個FDA(食品藥品監督管理局),但Therac-25上市並沒有經過FDA的測試。
FDA的上市認可有兩種,一種是PMA(Pre-market Approval)),一種是510K。PMA需要廠家充分證明該設備的安全,並通過FDA組織的臨床試驗與實驗室測試。而510K則輕鬆的多,隻要證明該設備與市場上已存在的設備具備等同即可。
Therac-25上市用的是510K,大概是因為他與Therac-20具有某種意義上的等同。
實際上不僅FDA沒有對Therac-25進行過獨立測試,AECL也沒有,他在1986年提交給FDA的事故報告裏承認了這一點。
AECL表示一直以來所有設備(Therac-6、Therac-20、Therac-25)上的軟件都是一塊進行測試的,沒有單獨對Therac-25進行過完整測試。Therac-25的很多代碼是從Therac-6中移植過來的,大概AECL認為測過Therac-6就相當於測過Therac-25了吧。
另外還需要一提的是,Therac-6的代碼都是法國夥伴CGR編寫的。
後來的事實證明,AECL對這些代碼知之甚少。
1985年7月,加拿大安大略省癌症基金會,第二起。
和第一起類似,患者在治療過程中感覺到了劇痛和灼燒感,但詭異的是,明明是輻射過量,Therac-25顯示器卻多次報出了“No DOSE delivered (沒有劑量傳輸)”信息。
隨後AECL派了工程師去調查,無法複現錯誤。
但他還是表現出了一副控製了局麵的樣子。
他“猜測”問題是由電路故障導致的,然後基於這個猜測,AECL召回Therac-25進行了改造。根據說明,這次改造可以將安全提升5個數量級,也就是原來的10萬倍。
不知道這個數字是怎麽來的,更不知道為什麽如此安全,AECL還是在改造說明中建議用戶使用Therac-25時最好進行“目視檢查”。
這起事故的患者三個月後亡,後來經過測算,當時的輻射強度大概在13000倫琴至17000倫琴之間。
1985年12月,美國雅基瑪穀紀念醫院,第三起。
這次事故中的Therac-25剛剛經過了AECL的所謂5個數量級安全的改造。
和之情的情況類似,先是病人在放療後身體出現了疑似過量輻射的紅斑,於是醫生聯係AECL,之後便是AECL的否認三連:先回複不可能,然後表示從沒有出現過類似的情況,最終猜測可能是其它原因。而且這次AECL還附了一個兩頁紙的說明,詳細列舉了Therac-25不可能過量輻射的理由。
醫生沒有辦法,最終隻能在院方的報告中將事故原因歸為未知。
病人沒有亡,但留下了殘疾和伴隨終生的疼痛。
03 Debugdebug是查找軟件bug的過程,其中的關鍵是複現。
所謂複現,是指找到bug發生的條件,然後模擬這些條件,讓bug重複發生。前麵事故一件件發生,而AECL始終沒有成功複現過問題。
直到第四起和第五起。
這兩起都發生在一個地方,前後間隔不過三周,本質就是一次天然複現。
1986年3月,美國東德克斯說腫瘤中心,第四起。
事故的跡象都是一樣的,患者的症狀也是一樣的,AECL的回複同樣是一樣的:不可能、沒聽說、應該是其它原因。
這次AECL給出的其它原因是漏電,大概因為患者在描述當時的感覺時說像遭受了電擊,並聽到了滋滋聲吧。
和之前一樣,AECL靠著否認三連又一次控製了局麵。
但很快,第五起就發生了。
1986年4月,美國東德克斯說腫瘤中心,第五起。
第五起和第四起發生在同一個地方,對醫院和患者來說,這顯然是一種巨大的不幸。但對整個事件來說,這卻像一種幸運,因為正是如此才讓Therac-25的bug現了原形。
不過複現bug的不是AECL,而是這個醫院的醫生。
第五起事故發生後,他不再相信AECL三周前給出的解釋,開始自己調查事故原因。
他發現兩次事故中,一個共同點是操作員都修改過處方。
圖1是Therac-25的電腦輸入界麵。Therac-25支持兩種射線模式,一種是X射線,一種是電子束,在正常的流程中,操作員依次從左上角輸入到右下角,輸入患者姓名、射線類型、射線能量等參數,最終光標會停到右下角,也就是綠色高亮的位置。
在這兩次事故中,操作員均是在一切都輸入完成後發現了錯誤:射線類型(BEAM TYPE)一欄應該是E(電子束),但錯誤輸入成了X(X射線)。於是他移動光標對其進行了修改,然後又將光標移回了綠色高亮位置,隨後點擊確認,啟動治療。
圖1 Therac-25的操作界麵
但這個操作還不能保證複現問題,經過反複試驗,醫生找到了其中的關鍵,那就是時間,時間要快。
確切的說,修改要在八秒以內,這樣bug就能穩定複現。
然後在醫生的幫助下,AECL終於找到了Therac-25的bug。
圖2 Therac-25 偽代碼片段
實際上這個bug相當簡單,僅僅是一句放錯了位置的代碼(見圖2),但其隱蔽要結合Therac-25的操作流程(圖3)來解讀才能顯現出來。
圖3 Therac-25執行流程圖
把大象裝冰箱要分三步,用Therac-25進行治療也要分三步:第一步,操作員輸入處方;第二步,Therac-25根據處方進行機器設置;第三步,開始治療。正常情況下,三步順序執行沒有任何問題。
但這兩次事故中操作員修改處方數據,實際上形成了一種並行。
並行是計算機領域的一個術語,指多件事同時執行,很多簡單問題一並行就變的難以理解。
Therac-25的原始射線非常集中,而這對人體危害是很大的,所以Therac-25會在射線路徑上放置一係列磁鐵,來對射線進行分散。
設置磁鐵的偽代碼見圖2。
如果懂一些編程的話,應該可以發現其標黃的用以清除標記位的指令(注釋3)放錯了位置,應該放在Magnet函數的循環外(注釋4)。
不懂編程也沒關係,隻需要知道這段代碼有bug,而這個bug會讓Therac-25在調節磁鐵的時候,忽略操作員對處方進行的修改。
調整磁鐵需要8秒鍾左右,這8秒,便是Therac-25的亡窗口。
在這兩起事故中,操作員的修改均發生在這個窗口內,所以修改都沒有生效,也就是說,Therac-25實際執行的是X射線模式。
在Therac-25的設計中,X射線模式的能量隻有一種,就是係統最大的25MeV,然後用一個射線過濾器來調節高強度的原始射線,將其減弱到治療所需強度。
隻不過這個過濾裝置需要手工放置到照射路徑上,而在這兩次事故中顯然都沒有,因為操作員都以為正在執行的是電子束模式!
所以悲劇就這樣發生了。
患者受到了原始的高強度射線的照射,事故中他們聽到的滋滋聲不是電流聲,而是射線測量器被射線穿透後發出的聲音,就像把42度量程的體溫計扔到開水裏一樣,它已經飽和失效了。
後來經過測算,當時的輻射強度為25000倫琴,是站在爆炸的切爾諾貝利反應堆旁邊十分鍾接受的量的5倍。
兩名患者均在不久後亡。
04 後知後覺的監管第五次事故發生後,醫生把事故和複現事故的詳細步驟告知了AECL。
AECL立即給所有用戶發了一份聲明,告知Therac-25存在問題,並給出了修改方案:
禁止向上移動光標。
就這麽簡單。
然後他又給FDA做了匯報。
這是AECL第一次正式給FDA匯報問題,前麵四起事故中,隻有第二起(發生在加拿大)AECL告知了美國的FDA,但隻含糊的說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。
犯錯是人,寬恕是神。
或許比起等待機器產生自我意識,然後要求它們憑借善良本,遵循阿西莫夫的機器人三定律來,這會是一個更理的選擇。
畢竟我們都知道人不能因噎廢食。
參考資料:
1.[Threac-25], https://en.wikipedia.org/wiki/Therac-25
2.[Medical Devices : The Therac-25], Nancy Leveson
3.[ An Investigation of the Therac-25 Accidents],Leveson, Nancy G.; Turner, Clark S
4.[Fatal Dose - Radiation Deaths linked to AECL Computer Errors],http://www.ccnr.org/fatal_dose.html
本文到此結束,希望對大家有所幫助呢。