放射科設備 |
超聲科設備 |
手術室設備 |
檢驗科設備 |
實驗室設備 |
理療科設備 |
急救室設備 |
兒科設備 |
眼科設備 |
牙科設備 |
婦科男科設備 |
滅菌消毒設備 |
醫用教學模型 |
美容儀器設備 |
家庭保健器具 |
CR病床 推車 柜 |
ABS病床輪椅 |
醫用耗材 |
新聞中心
醫療器械現成軟件組件的風險考量與控制要點研究——以開源軟件為例
內容提要:隨著軟件功能復雜性的提升以及軟件供應鏈的成熟,醫療器械獨立軟件開發時使用現成軟件組件的情況越來越普遍。現成軟件通常是指企業沒有進行完整生存周期管理的軟件,而企業難以對現成軟件的運行邏輯、缺陷漏洞等進行把控,因此其使用風險相對較高。文章以最常使用的開源軟件為例,從醫療器械質量管理體系的角度出發,在軟件生存周期的重點環節提出了質量控制的相關建議。
關 鍵 詞:現成軟件 開源軟件 質量控制
現成軟件通常指的是醫療器械注冊人沒有進行完整生存周期控制的軟件[1]。從定義來看,現成軟件的范圍非常廣泛,不僅包括對軟件起到支持作用的外部軟件環境,如操作系統(如Windows)、中間件(如MySQL)、軟件開發與測試工具(如Pycharm)等,還包括包含在醫療器械軟件中的組件,也稱現成軟件組件。與外部軟件環境不同,現成軟件組件是醫療器械軟件的組成部分,可以實現一部分醫療器械功能。現成軟件組件從來源上可以分為成品軟件、外包軟件和遺留軟件三類[1]。其中,成品軟件與外包軟件可類比標準品與定制品,區別在于外包軟件實質是一種定制化委托開發的產品,而成品軟件則是供應商已經開發完成的產品。
開源軟件是成品軟件的一種特殊情形。區別于商業成品軟件,開源軟件是通過開放協作開發和維護的軟件,通常是免費提供的,可供任何人使用、檢查、修改和重新分發。隨著軟件功能復雜性的提升以及軟件供應鏈的成熟,大量企業在軟件開發時都會用到開源組件來減少重復開發,提高開發資源的使用效率[2]。考慮到醫療器械軟件失效可能會給患者和醫生帶來不可接受的風險,且企業難以對現成軟件的運行邏輯、缺陷漏洞等進行把控,因此本研究以開源組件為例,從醫療器械質量管理體系的角度,在設計開發的各個環節,提出相應的質量控制建議,為業內及監管人士提供參考。
1.監管現狀
1.1 現成軟件的法規標準
目前,各國監管機構均關注到了醫療器械現成軟件的質量管理,并制定了一系列指南、標準等文件。表1 列舉了不同文件中現成軟件的名詞與含義。不同文件中的定義存在一些差異,如未知來源軟件(Software of the Unknown Prevalence,SOUP),不包括那些第三方開發的、為了包含到醫療器械內的軟件,但這部分軟件屬于現成軟件(Off-the-Shelf Software,OTSS)。可以看出,我國的《醫療器械軟件注冊審查指導原則(2022 年修訂版)》(下簡稱《軟件指導原則》)中“現成軟件”的范圍是最廣的,包含了其他文件中的所有情形。雖然定義存在差異,但不同文件中質量管理的方法仍值得學習。為了不產生混淆,下文統一使用“現成軟件”這一名稱,不再對這幾種名詞進行區分。
醫療器械現成軟件組件的風險考量與控制要點研究——以開源軟件為例
雖然不同文件中的定義存在差異,但質量控制的要求基本一致。美國食品藥品監督管理局在1999 年發布了現成軟件使用的指南,經多次修訂后,2023 年版的指南建議注冊人從需求、驗證、風險管理、維護和更新幾方面,基于風險等級提交不同詳盡程度的現成軟件研究文檔[5]。類似的,我國《軟件指導原則》也要求注冊人從設計開發到售后維護的全生命周期對現成軟件進行質控,重點關注采購、設計開發和上市后監測方面[1]。YY/T 0664和IEC 62304則從軟件生存周期過程控制的角度,規定了各個階段現成軟件的活動要求,如在設計開發計劃階段將現成軟件納入配置項、結構設計階段規定現成軟件的硬件和軟件環境要求等[3,4]。除此之外,目前國內外尚無細則研討如何具體地對現成軟件開展管理。
1.2 開源軟件的風險
根據開放源代碼促進會(Open Source Initiative,OSI)的定義,開源不僅僅是“開放源代碼”,還擁有自由分發、允許修改、限制未經修改的源代碼的重新分發以保護原作者代碼的完整性、許可協議必須技術中立等特點,這些特點賦予了它高度的透明度和靈活性[6]。
開源軟件“全開放”的特性,也帶來了一些安全管理上的挑戰,其風險主要包括以下方面:①代碼來源不可控。開源軟件的源代碼可被任何人獲取和修改,由于缺乏嚴格的準入機制,惡意攻擊者可能會將惡意代碼提交到開源項目的代碼倉庫中。②供應鏈風險。開源軟件的漏洞在供應鏈上具有傳播性,比如目前影響最為嚴重的Log4Shell 漏洞事件[7]。此外,非官方的分發渠道也可能引入額外的風險。③知識產權風險。開源軟件的使用需要遵循開源許可協議,如BSD、MIT、Apache 2.0、GPL協議等。如果使用開源軟件時忽視了不同開源許可協議的要求,可能會帶來知識產權的糾紛,帶來不必要的損失與風險。
根據美國新思科技發布的《2023年開源安全和風險分析報告》[8],醫療保健、健康科技和生命科學行業中,代碼庫中開源代碼的百分比達80%,其中約50%的代碼庫含有漏洞。因此,使用開源組件時,應當意識到開源組件的風險,并在軟件全生命周期中予以控制。
2.現成軟件組件的質量控制——以開源軟件為例
本研究基于軟件生存周期模型,結合開源軟件的特點,在一些關鍵環節提出現成軟件組件的質量控制建議。
2.1 設計策劃與需求分析
不同于自研軟件,注冊人對現成軟件的開發資料掌握不足,一旦在測試階段發現該現成軟件不滿足要求,難以通過修改代碼的方式進行修復。如果涉及更換現成軟件,則可能會導致重新開發,更是開發資源非常大浪費,因此在設計策劃與需求階段應對現成軟件開展詳細的使用前評估,決定哪些部分使用現成軟件、現成軟件的功能是什么、其他部分如何設計才能與之兼容等尤為重要。
對于開源軟件而言,開發者的開發實力、開源軟件的成熟度、知名度與用戶規模都與開源軟件的質量密切相關[9]。如果開源軟件是某個行業的通用庫,用戶群體非常大,通常可以認為此開源軟件的性能是非常穩定的,軟件Bug較少且通常能夠得到及時的解決。因此,建議在選擇開源軟件的供應商時,評估以下方面:①供應商資質:此軟件的開發商是否具有較強的軟件開發能力?②產品成熟度:此軟件的成熟度、知名度、用戶規模如何?③產品質量:此軟件的用戶評價如何?軟件缺陷是否頻發,且有不可接受的風險?④開源協議:我是否能滿足此軟件的開源協議?⑤開發文檔:供應商是否提供了詳細的開發文檔,以便我更好地使用此軟件?
除此以外,在設計策劃與需求分析階段,注冊人還應定義對現成軟件的需求,這包括現成軟件功能、性能、接口、網絡安全、風險管理、兼容性、維護更新等方面的需求,以及為了配合現成軟件的使用,其他軟件項的接口、功能、性能、網絡安全等方面的需求。本研究參照各國監管經驗,總結了下列現成軟件使用前應當評估的問題,見表2[5,10]。
醫療器械現成軟件組件的風險考量與控制要點研究——以開源軟件為例
2.2 軟件驗證
注冊人要根據現成軟件的測試要求編寫不同類型的測試用例,舉例見表3。需要注意的是,不同的現成軟件要求不同,下面的例子不一定適用所有的現成軟件。為了盡可能在測試階段發現現成軟件的缺陷,注冊人可以使用等價劃分法、邊界值分析法、錯誤推測法等方法結合,設計高質量的測試用例。
醫療器械現成軟件組件的風險考量與控制要點研究——以開源軟件為例
2.3 軟件更新
變更控制不僅是軟件生存周期質量控制的特殊要求,也是醫療器械質量管理規范與ISO 13485 對過程控制的要求。注冊人應在軟件更新控制程序中規定軟件更新活動的相關要求,如更新請求、更新策劃、更新實施等。
對于開源軟件,可能發生的變更包括需求變更、因缺陷修復引發的變更以及外部開發者公布新版本等情況。開發者公布新版本時,注冊人應評估更新內容的必要性,但如果涉及重大網絡安全更新,建議注冊人選擇新版本的軟件。當開源軟件發生更新后,需要評估更新影響的范圍,是否對其他軟件項或者已經采取的風險控制措施產生了影響,并開展相應的回歸測試。
2.4 軟件維護
軟件維護從時間順序上在正式發布、上市銷售之后,屬于軟件生存周期的一部分,注冊人需要制定軟件維護計劃,包括收集用戶反饋的流程、解決軟件發布后問題的流程、使用配置管理程序來管理變更后的軟件等內容。
對于現成軟件組件(開源軟件),注冊人可以制定一個定期維護跟蹤的計劃,如定期跟蹤開發者公布的缺陷清單、或者在開發階段確定的需要定期驗證的事項等。
在軟件正式發布之后,如果涉及對已上市軟件的更新,注冊人除按照變更控制程序發起、批準、執行、驗證變更外,還應按照法規和信息告知程序,告知用戶和/ 或監管機構已發布醫療器械軟件中的任何問題以及不變更繼續使用的后果,并制定安裝更新的指導文件。
2.5 缺陷管理
高質量的軟件開發離不開清晰明確的缺陷管理流程,注冊人需要在缺陷管理制度中確定軟件缺陷評估、修復、回歸測試、風險管理、配置管理、評審等活動的要求。
注冊人在使用開源軟件時,可以通過開發者自行公布的問題清單、開發者論壇、第三方漏洞庫等多種渠道了解軟件缺陷,形成該軟件的已知問題清單。注冊人應當對問題清單進行評估,從風險管理的角度,分析已知的缺陷是否有可能造成危險情況的事件序列[4]。此外,如果注冊人判定需要對已知缺陷進行修復,就應判定缺陷修復影響的范圍并開展回歸測試,并按照流程更新相關配置項和版本。
2.6 配置管理
軟件配置管理是一種標識與控制修改的技術,使軟件的變更在開發過程中處于可控的狀態。軟件配置管理應當建立控制程序并形成文件,規范軟件版本、源代碼、文件、工具等控制要求,確定配置標識、變更控制、配置狀態記錄等活動要求。
從配置管理的角度來說,開源軟件的管理與其他類型的現成軟件組件并無不同。現成軟件組件是軟件的一部分,應當作為軟件的配置項加以識別。為了易于識別、控制與管理,配置標識一般包括軟件名稱、供應商、版本、發布日期等[4]。配置內容通常是已編譯的文件。當現成軟件組件發生變更時,應當按照配置管理控制程序的要求對配置狀態的變化進行記錄,如在現成軟件組件的變更評審關閉后,由配置管理人員對變更后的現成軟件組件進行歸檔,更改配置標識,記錄當前配置狀態。
2.7 版本控制
軟件沒有實體,無法從外觀或結構上觀察到軟件的變化,所以軟件版本是一種標識軟件狀態的工具。軟件版本與軟件是表里的關系,當軟件發生變化時軟件版本也應隨之變化[11]。
現成軟件組件是產品的組成部分,其更新也應體現在軟件版本的變化中。因此,注冊人在設計開發階段,應當明確使用的開源軟件的版本,并將開源軟件作為配置項管理。此外,注冊人還應制定軟件版本命名規則,涵蓋開源軟件的更新類型,各字段含義應當明確且無歧義無矛盾。
3.小結
本研究(jiu)以開源(yuan)軟(ruan)(ruan)(ruan)件(jian)(jian)(jian)為例,概述了現成軟(ruan)(ruan)(ruan)件(jian)(jian)(jian)的國際監管現狀與(yu)開源(yuan)軟(ruan)(ruan)(ruan)件(jian)(jian)(jian)的風險(xian),并(bing)基于軟(ruan)(ruan)(ruan)件(jian)(jian)(jian)生(sheng)存(cun)周期模型,在一些關鍵(jian)環節提(ti)出現成軟(ruan)(ruan)(ruan)件(jian)(jian)(jian)組(zu)件(jian)(jian)(jian)的質量控(kong)制建(jian)議,為業(ye)內及監管人(ren)士提(ti)供(gong)參考(kao)。
本文由廣州佳譽醫療(liao)器(qi)械(xie)有限(xian)(xian)公司/佛山浩(hao)揚醫療(liao)器(qi)械(xie)有限(xian)(xian)公司聯合編輯(ji)