牛道森 劉曉東 劉陽
1 上海理工大學(xué)機(jī)械工程學(xué)院 (上海 200093)
2 上海出入境檢驗檢疫局機(jī)電產(chǎn)品檢測技術(shù)中心 (上海 200135)
隨著計算機(jī)技術(shù)的發(fā)展和廣泛應(yīng)用,包含軟件的醫(yī)療器械也讓人類享受到了高科技帶來的便利。現(xiàn)在的醫(yī)療器械中,從大型的影像診斷設(shè)備到小型的監(jiān)護(hù)儀、注射泵等都有軟件的身影,軟件在醫(yī)療器械中所起的作用越來越重要,因而其安全性也受到越來越多的關(guān)注。ISO/IEC 導(dǎo)則51:1999 定義安全性為“免除于不可接受的風(fēng)險”。對于醫(yī)療器械軟件 , 安全性是指該軟件在醫(yī)療設(shè)備系統(tǒng)運行環(huán)境中不產(chǎn)生不可接受的風(fēng)險。
根據(jù)美國FDA 報告,1983~1991 年期間,共有 2792 個醫(yī)療器械因質(zhì)量問題被召回,其中 165 個產(chǎn)品與軟件故障相關(guān),約占總數(shù)的 6%;1992~1998 年間共召回醫(yī)療器械3140 起,其中242 起是由于醫(yī)療器械產(chǎn)品中軟件失效而引起的,約占總數(shù)的7.7%;1999~2005 年期間共有3771 個產(chǎn)品被召回,其中由于軟件故障而被召回的產(chǎn)品有 425 個,占全部被召回產(chǎn)品的11.3%。從這些數(shù)據(jù)可以看出,軟件故障導(dǎo)致被召回的醫(yī)療器械數(shù)量呈比較明顯的增長趨勢。在國內(nèi),軟件安全性的研究滯后于軟件應(yīng)用的研究,雖然沒有醫(yī)療器械軟件故障的確切統(tǒng)計數(shù)據(jù),但目前,國內(nèi)醫(yī)療器械軟件質(zhì)量、安全性評價方法和法律法規(guī)還比較欠缺,更需要引起我們對醫(yī)療器械軟件的重視[1~3]。
醫(yī)療器械軟件是軟件的特定應(yīng)用,具有其他軟件的類似特點[4~5]:
(1) 高度抽象性:醫(yī)療器械軟件是一個具有高度抽象性和嚴(yán)密邏輯性的邏輯系統(tǒng),人們可以把軟件記錄在紙上,保存在存儲介質(zhì)中,但卻必須通過觀察、分析、思考、比較、判斷等方法去了解它。
(2) 極強(qiáng)隱藏性:不同于硬件的失效率遵循浴盆曲線,軟件的失效往往會毫無征兆的出現(xiàn),錯誤更為隱蔽,并且很多錯誤可能會在長期使用后才能被意識到。
(3) 測試無法充分:由于軟件可能的輸入范圍大,可能的運行路徑多,無法窮盡測試,無法全部覆蓋,并且從不同角度看,軟件的缺陷標(biāo)準(zhǔn)不同,導(dǎo)致軟件測試?yán)щy重重。
因此,由于以上特點導(dǎo)致軟件質(zhì)量和可靠性問題成為制約軟件產(chǎn)業(yè)發(fā)展的瓶頸,也是醫(yī)療器械軟件風(fēng)險無法消除的重要原因。
針對醫(yī)療器械軟件的風(fēng)險,理解以下幾點很重要[8]:
(1) 軟件本身不是危害,但會引發(fā)危害處境。不同于熱能、電能,軟件本身不是危害(傷害的潛在源),接觸軟件不會受傷,但它可能引起人暴露在危害中,也就是說它會導(dǎo)致一個危害處境,從而造成傷害。
(2) 軟件失效表現(xiàn)為隨機(jī)失效,但實為系統(tǒng)性失效。由于軟件沒有硬件的老化過程,沒有隨機(jī)失效的問題,但設(shè)計錯誤或運行故障會導(dǎo)致系統(tǒng)失效。
(3) 軟件失效概率難以計算,通?;趽p害嚴(yán)重度分析。由于軟件失效不是隨機(jī)失效,通常基于軟件異常造成傷害的嚴(yán)重度評價其風(fēng)險。
(4) 軟件風(fēng)險管理是整個醫(yī)療器械風(fēng)險管理的組成部分,孤立進(jìn)行是不合適的。因為硬件失效、軟件失效、硬件和軟件風(fēng)險控制措施的相互依賴。
(5) 一些潛在的軟件因素。
? 不正確或不完整的功能規(guī)范;
? 應(yīng)用的軟件功能有瑕疵;
? 可能導(dǎo)致不可預(yù)測軟件行為的硬件或軟件失效;
? 合理的可預(yù)見的誤用;
? 源于SOUP(Software of unknown provenance)的失效或不期望的結(jié)果。
醫(yī)療器械的風(fēng)險控制是在風(fēng)險分析和風(fēng)險評價的基礎(chǔ)上進(jìn)行的。對于經(jīng)判斷為可接受的風(fēng)險應(yīng)當(dāng)采取可行的措施將風(fēng)險降到最低;對于經(jīng)判斷為不可接受的風(fēng)險,應(yīng)在設(shè)計開發(fā)階段依次從以下幾個方面進(jìn)行風(fēng)險控制方案分析,判定使用一個或多個風(fēng)險控制措施,以把風(fēng)險降低到可接受水平[6]。
(1) 用設(shè)計方法取得固有安全性(不嵌入瑕疵,發(fā)現(xiàn)并消除瑕疵)
? 消除特定的危害;
? 降低損害的發(fā)生概率;
? 降低損害的嚴(yán)重度。
固有安全設(shè)計是通過移除醫(yī)療器械不安全的特征,或改變設(shè)計以用一個更安全的方法實現(xiàn),它是一種消除或最小化危害處境的方法。通常這種方法可以簡化設(shè)計,使設(shè)計更容易實施,并且用戶更容易操作。固有安全設(shè)計應(yīng)用于軟件的情況包括:
? 消除不必要的特征;
? 改變軟件架構(gòu),以消除可以導(dǎo)致危害處境的事件序列;
? 簡化用戶界面,以減少人為使用錯誤的可能性;
? 規(guī)范的軟件設(shè)計,以消除軟件異常。如用靜態(tài)存儲器分配消除動態(tài)存儲器分配出現(xiàn)的軟件異常;用可編程語言的限制版本以消除很可能導(dǎo)致編程錯誤的結(jié)構(gòu)。
(2) 在醫(yī)療器械本身或在制造過程中的防護(hù)措施
使用軟件的醫(yī)療器械的防護(hù)措施可以用軟件或硬件實現(xiàn)。保護(hù)措施的設(shè)計應(yīng)表明防護(hù)措施獨立于應(yīng)用功能。當(dāng)軟件防護(hù)措施應(yīng)用于硬件或者相反的情況相對容易實現(xiàn)。選擇應(yīng)用于軟件失效的軟件防護(hù)措施的情況下,要消除一個原因引起的多個失效。如果防護(hù)措施用于探測或阻止危害處境,制造商應(yīng)證明防護(hù)措施和提供必要性能的軟件之間充分的分離。比如,用于患者的治療的軟件和用于實施軟件防護(hù)措施的軟件運行在兩個不同的處理器上。
(3) 安全性信息
? 在產(chǎn)品隨附文件中給出警告、使用說明;
? 限制醫(yī)療器械的使用或限制使用環(huán)境;
? 對操作者進(jìn)行培訓(xùn)。
醫(yī)療器械使用軟件很可能導(dǎo)致用戶界面更復(fù)雜,因此導(dǎo)致更加需要安全性信息,從簡單的屏幕警告到復(fù)雜的用戶手冊和明確培訓(xùn)課程。好的用戶界面設(shè)計可以減少它們的復(fù)雜性,用戶界面的設(shè)計可參考IEC62366[7]。
為了有效實施合適的風(fēng)險控制措施,應(yīng)詳細(xì)考慮產(chǎn)品開發(fā)和軟件生存周期過程。一些在設(shè)計初期很容易實施的風(fēng)險控制措施,如果在開發(fā)的后期實施起來會造成費時費力且代價很大。此外,合理的實施風(fēng)險管理可以把安全相關(guān)軟件項減少到最小的范圍,把風(fēng)險控制的作用發(fā)揮到最需要的地方[8~10]。
2.2.1 容錯架構(gòu)
醫(yī)療器械的許多功能可能要求用于確?;颊吆褪褂谜叩陌踩?。這樣的功能包括臨床不能中斷或耽誤的功能,以及實施保護(hù)性的風(fēng)險控制措施的功能。
容錯設(shè)計是改善醫(yī)療器械可靠性的很普遍的方法,容錯設(shè)計的目的是確保安全相關(guān)功能在部件故障或軟件異常時繼續(xù)運行。容錯設(shè)計通常使用冗余,它可能僅僅是備份一個關(guān)鍵部件用于一個部件失效時繼續(xù)運行,或者由附加的部件組成,用于檢測失效并轉(zhuǎn)換到可選擇的另一個模式。當(dāng)容錯用于軟件失效情況下持續(xù)運行的關(guān)鍵功能時,簡單的相同軟件的多重備份冗余是不夠的,由于相同的缺陷將在每一個軟件備份中出現(xiàn),此時,容錯措施的多樣性將是必要的,附加的軟件應(yīng)避免一個軟件缺陷導(dǎo)致它們?nèi)渴?。?dāng)使用冗余時,信號通知用戶很重要,否則醫(yī)療器械有可能是在冗余的安全上運行,這樣就喪失了冗余本身的意義。當(dāng)容錯技術(shù)無法控制系統(tǒng)的故障時,為保證系統(tǒng)在最后的結(jié)果狀態(tài)處于安全可接受的范圍內(nèi),應(yīng)采用故障安全技術(shù)完成該任務(wù),避免造成災(zāi)難性后果。
2.2.2 有效隔離
軟件缺陷有可能導(dǎo)致運行在相同硬件的不相關(guān)的軟件出現(xiàn)錯誤,所以制造商應(yīng)選一個方法將安全相關(guān)軟件和非安全相關(guān)軟件隔離,并且應(yīng)表明隔離的有效性。軟件項之間的有效隔離必須處理如下易于出現(xiàn)非預(yù)期影響的方面:
(1)軟件項有可能共享硬件(如處理器、存儲器和其他輸入/輸出器件)造成運行時間沖突,這將阻止軟件在預(yù)定的時間運行。
(2)軟件項在同一內(nèi)存共存。這將導(dǎo)致一個軟件項非預(yù)期的改變屬于另一軟件項的數(shù)據(jù)。
(3)軟件項在共享變量時相互影響,包括全局變量,環(huán)境變量和操作系統(tǒng)參數(shù)。這將導(dǎo)致一個軟件項存在的缺陷傳遞到另一個軟件項。所以軟件項直接的共享變量應(yīng)盡可能的少。
最可靠的分離軟件項的形式是讓它們運行在分離的處理器上,然而,是否運行在單獨的處理器,需要根據(jù)詳細(xì)的結(jié)構(gòu)設(shè)計確定一個合適的度。
有效的隔離應(yīng)證明,在正常運行的情況下:
(a)數(shù)據(jù)流的破壞應(yīng)阻止:非安全相關(guān)軟件項不能修改安全相關(guān)軟件項;
(b)控制流的破壞應(yīng)阻止:
? 安全相關(guān)功能能在正確的時間執(zhí)行,不被非安全相關(guān)軟件項的動作影響;
? 非安全相關(guān)軟件項不能修改安全相關(guān)軟件項;
(c)執(zhí)行環(huán)境的破壞應(yīng)阻止:用于安全相關(guān)和非安全相關(guān)軟件項的部件的破壞不應(yīng)出現(xiàn)。2.2.3 降級運行
在一些情況下,安全性以犧牲部分功能為代價實現(xiàn)。在失效-安全的架構(gòu)下,系統(tǒng)可以持續(xù)安全運行,但是需要降級運行(比如降容或延長響應(yīng)時間等)。
2.2.4 及時阻止和通知危害處境
風(fēng)險控制措施的分類可以有效提高阻止危害處境出現(xiàn)的概率。除了阻止危害處境的出現(xiàn),還應(yīng)考慮將檢測到的故障及時通知用戶,防止一系列風(fēng)險控制措施失效最終導(dǎo)致傷害的出現(xiàn)。此外,還應(yīng)考慮軟件風(fēng)險控制措施運行頻率,以確保在失效引起傷害之前軟件風(fēng)險控制措施能夠?qū)⑹z測出來。
2.2.5 過程作為一項風(fēng)險控制措施
如果軟件異常能導(dǎo)致一系列危害事件發(fā)生,很難設(shè)計采用一些風(fēng)險控制措施阻止傷害發(fā)生,那么最好使用固有安全設(shè)計來解決。如果軟件異常還得不到解決,一個有效的軟件開發(fā)過程和風(fēng)險管理過程將可能有助于減少軟件異常出現(xiàn)的概率。一個普遍認(rèn)可的觀點是,軟件開發(fā)過程和風(fēng)險管理過程越嚴(yán)格,軟件異常越少。雖然測試也能減少軟件異常的數(shù)量,但是僅靠測試不足以建立軟件置信度。
2.2.6 SOUP(Software Of Unknown Provenance)的考慮
SOUP 指已經(jīng)開發(fā)且通??傻玫降?,并不是為用以包含在醫(yī)療器械內(nèi)而開發(fā)的軟件項(也通稱為成品軟件),或以前開發(fā)的、不能得到其開發(fā)過程足夠記錄的軟件。當(dāng)醫(yī)療器械包含SOUP 時,需要注意由于SOUP 的使用造成醫(yī)療器械的安全性打折。
2.2.7 軟件獨立第三方測試
軟件獨立第三方測試是獨立軟件驗證與確認(rèn)的一種形式,在包含安全相關(guān)軟件的設(shè)備中,除了進(jìn)行系統(tǒng)全面的軟件測試,還應(yīng)進(jìn)行第三方獨立測試。其目的是進(jìn)一步加強(qiáng)軟件開發(fā)的質(zhì)量保證工作,進(jìn)行第三方獨立測試有以下優(yōu)點:
(1) 發(fā)揮專業(yè)技術(shù)優(yōu)勢。通常確定進(jìn)行獨立測試的機(jī)構(gòu)是一些權(quán)威性的、具有軟件測試專業(yè)技術(shù)和豐富經(jīng)驗的機(jī)構(gòu),由他們進(jìn)行獨立測試能較有效地發(fā)揮專業(yè)技術(shù)優(yōu)勢。
(2) 發(fā)揮獨立性優(yōu)勢。第三方測試機(jī)構(gòu)相對獨立于軟件任務(wù)的交辦方、承制方,可以比較客觀地開展工作。
(3) 進(jìn)一步促進(jìn)承制方的工作。在承制方完成軟件開發(fā)工作后,還要由第三方進(jìn)行獨立的驗證與確認(rèn),無意會進(jìn)一步促進(jìn)承制方改進(jìn)和加強(qiáng)其自身的質(zhì)量保證工作。
總之,針對醫(yī)療器械軟件的風(fēng)險控制,在風(fēng)險控制方案實施前,如果經(jīng)方案分析確定所需的風(fēng)險降低是不可行的,則應(yīng)收集相關(guān)資料對剩余風(fēng)險進(jìn)行風(fēng)險/受益分析;若經(jīng)評審所收集的資料和文獻(xiàn)不支持受益大于風(fēng)險,則應(yīng)放棄設(shè)計。反之,應(yīng)確保經(jīng)判定的危害處境產(chǎn)生的一個或多個風(fēng)險得到了考慮,保證風(fēng)險控制的完整性。在風(fēng)險控制方案實施中或?qū)嵤┖?,?yīng)對實施效果進(jìn)行驗證,以確定控制措施的適應(yīng)性和有效性,對任何剩余風(fēng)險都應(yīng)根據(jù)風(fēng)險可接受準(zhǔn)則進(jìn)行評價,對判斷為不可接受的風(fēng)險,還應(yīng)采取進(jìn)一步的風(fēng)險控制措施。如果控制措施不可行,則應(yīng)收集和評審相關(guān)的資料和文獻(xiàn)對剩余風(fēng)險進(jìn)行風(fēng)險/受益分析,若受益大于風(fēng)險,則剩余風(fēng)險依然是可接收到,如果風(fēng)險大于受益,則為不可接受。對于判斷為可接受的剩余風(fēng)險,還應(yīng)協(xié)調(diào)決定哪些剩余風(fēng)險應(yīng)予以公開,依據(jù)ISO14971:2007(等同于YY/T0316:2008)附件J 的指南公開那些剩余風(fēng)險。同時對控制措施的實施是否會引起的一個或多個新的風(fēng)險,或?qū)Σ扇〈胧┲霸u價的風(fēng)險是否有影響進(jìn)行分析,必要時再次進(jìn)行風(fēng)險分析、風(fēng)險評價和風(fēng)險控制,所采取活動的結(jié)果應(yīng)進(jìn)行記錄并保存,以便于對風(fēng)險管理過程進(jìn)行修改、補充和更新。
本文提出了一些針對醫(yī)療器械軟件的風(fēng)險控制措施,希望在推動醫(yī)療器械軟件的安全性和可靠性研究等方面起到拋磚引玉的作用。同時,由于醫(yī)療器械軟件故障的多樣性和復(fù)雜性,往往很難確保軟件百分之百的安全。針對醫(yī)療器械軟件的風(fēng)險,不僅要從技術(shù)方面而且要從管理方面和評審方面保證系統(tǒng)可靠運行。在技術(shù)方面,要在需求分析、設(shè)計實現(xiàn)、驗證確認(rèn)和后期維護(hù)等階段采取避免失效和控制失效的措施;在管理方面,要加強(qiáng)質(zhì)量管理、風(fēng)險管理、軟件生命周期過程的嚴(yán)格控制和相關(guān)法律法規(guī)制定;在評審方面,要進(jìn)行獨立的第三方審評,進(jìn)一步確保軟件質(zhì)量。只有通過全方位的對醫(yī)療器械軟件進(jìn)行控制,才能盡可能地減少醫(yī)療器械軟件的風(fēng)險和危害。
[1] 郝素麗,王云山.軟件故障導(dǎo)致召回的醫(yī)療器械數(shù)據(jù)分析[J].中國醫(yī)療器械信息, 2011, 17(4): 51-52.
[2] 李軍,楊國忠.淺議我國醫(yī)療器械軟件監(jiān)管工作[J].中國醫(yī)療器械雜志,2011,35(3):210-212.
[3] 俞思聰,潘鷹,俞西萍等.國內(nèi)外醫(yī)療器械軟件安全性評價方法比較研究[J].中國醫(yī)療器械雜志,2010,34(5):360-364.
[4] 杜堃,何濤,馬莉.醫(yī)療器械軟件安全性探討[J].中國醫(yī)療器械信息,2009,15(1):30-33.
[5] 劉斌.軟件驗證與確認(rèn)[M].北京:國防工業(yè)出版社,2011.
[6] YY/T 0316-2008 醫(yī)療器械 風(fēng)險管理對醫(yī)療器械的應(yīng)用[S].
[7] IEC 62366-2007 醫(yī)療設(shè)備 可用性工程學(xué)對醫(yī)療設(shè)備的應(yīng)用[S].
[8] IEC/TR 80002-1 Medical device software – Part 1: Guidance on the application of ISO 14971 to medical device software, September, 2009.
[9] YY/T 0664-2008 醫(yī)療器械軟件 軟件生存周期過程[S].
[10] GB/T 20438.3-2006 電氣/電子/可編程電子安全相關(guān)系統(tǒng)的功能安全 第3 部分:軟件要求[S].