医疗器械软件标准测试
医疗器械 软件标准 测试 医疗器械 软件标准测试 本文作者任海萍女士,博士、国家食品药品监督管理局中检所医疗器械质量监督检验中 心;奚廷斐先生,主任、研究员、博士生导师,中国生物医学工程学会常务理事、生物材 料分会主任委员,人工器官分会副主任委员,全国医疗器械生物学评价标准化技术委员会 主任委员;汤京龙先生,助理研究员;王硕先生、王建宇先生,实习研究员;陆颂芳女 士,主任技师。 关键词:医疗器械 软件标准测试 一概述 随着计算机技术的发展,越来越多的医用电气设备中使用了计算机软件技术,其安全性 是非常重要的,而它的复杂性超过了那些单纯的治疗和/或诊断医用电气设备。同时,越 来越多的软件被用于在医疗监视下对患者进行诊断、治疗或监护。医疗器械的许多重要功 能,越来越多地依靠软件进行控制,因此,医疗器械中软件错误导致的后果可能非常严 重。而软件产品可能在六个月内就已经过时了。从而,在医疗器械生产企业和管理部门之 间存在着矛盾:生产企业必须尽快使新的含软件器械上市,但同时,管理部门必须保护公 众免受与软件相关的器械故障造成的危害。 2003年开始,我国国家食品药品监督管理局将相关软件纳入了医疗器械管理。软件质量 已成为大家共同关注的焦点。由于我国目前医疗器械管理的技术基础主要是产品的第三方 测试,因此,软件测试是否充分、有效,直接影响到软件产品的质量,也影响着是否能够 对医疗器械软件进行有效管理。但是,由于软件产品的特殊性,我国至今尚未形成医疗器 械软件产品测试的国家标准和行业标准。本文通过对美国FDA的医疗器械软件管理、软件 工程以及软件测试情况的介绍,希望能为我国加强医疗器械软件的管理、尽快制定技术标 准提供参考。 二软件的特殊性 美国FDA对于作为医疗器械组件、部件或附件的软件、本身就是医疗器械的软件(例如 模拟重建血管系统软件)、加工制造医疗器械时使用的软件(例如加工器械时使用的逻辑控 制程序)以及器械制造商在质控系统中所使用的软件(例如记录和保存器械历史记录的软件) 都根据其特定的使用要求进行验证。 软件与硬件的特性非常不同。其中的一个不同点就是几乎所有的软件问题都是在软件开 发过程中的错误造成的。软件错误在本质上是系统性的,而不是随机的。软件本身不会因 为磨损而导致运行失败,从安装开始,就包含了那些导致失败的所有错误。软件的质量问 题事实上是设计问题,一般来说不是生产问题。软件与硬件的第二个不同点就是软件的 复杂性。由于软件对于不同的输入执行不同的语句(路径),因此,即使对一个简单程序, 测试其全部可能的执行路径都是不切合实际的。所以,几乎不可能确定该软件是否完全没 有错误。故此,软件的质量不能够单单通过测试衡量。 软件和硬件的第工个不同之处在于软件的灵活性。在开发周期的后继阶段,软件的改变 会更容易一些。这提供了更多的灵活性,使得人们可以更好地根据硬件的要求以及开发中 出现的其他问题的要求进行工作。由于软件可以比较容易地进行更改,可能造成人们误认 为软件的错误也非常容易改正。事实上,对软件的某个部分进行改动,即使是对那些看起 来很不合理的部分进行改动,都可能导致其他部分的意外错误。美国FDA对1992至1998 年之间认证的3140个医疗器械软件系统进行了回顾性分析,在这3140例中,有242例 (7. 7%)软件系统失效,而其中192例(79%)是由于对软件最初版本进行修改后导致软件系 统出现缺陷并造成软件系统失效的。 软件组成虽然不象硬件组成那样有一定的标准和可替代品,但在其开发中,开发者常常 使用某些单元开发工具和技术。目标定项方法和现有软件单元的使用将会加快软件开发速 度,降低软件开发费用。然而,基本单元需要在集成过程中更加小心谨慎,在集成之前, 要全面定义、扩展可重复应用软件代码,全面理解现有单元的作用。 因此,设计合理有效的软件、编程实现它,并确保进行的改动是完全且正确的,这需要 一个系统性的方法。这就是软件工程。软件的测试已经超越了对最终产品的传统测试和评 价,还包括了对其生产过程的要求,在风险管理、风险防范和开发生命周期的基础上,从 软件工程角度对软件进行管理、测试和评价。美国FDA “General Principles of Software Validation; Final Guidance for Industry and FDA Staff 和 I EC 60601T- 4 Medical electrical equipment-Part 1~4: General requirements for safetycollateral standard: Programmable electrical medical systems“都是从这个角度来 讨论对于医疗器械软件的管理的。 三软件管理和标准 FDA使用“测试水平”来评价设备出现潜在危险、设计失误,或者使用该医疗器械软件 可能对病人或操作者产生直接或间接伤害的程度。如果软件对设备的操作可能直接使病人 和/或操作者致死或重伤,或由软件的错误或信■息的滞后而间接引起的死亡或重伤,该软 件的测试水平为高。如果软件对设备的操作可能直接使病人和/或操作者非严重伤害,或 由软件的错误或信息的滞后而间接引起的非严重伤害,该软件测试水平为中。如果软件的 运行错误或设计问题并不引起任何对病人和操作人员的伤害,该软件测试水平为低。软件 上市前测试过程的范围和危险管理都是与其测试水平相对应的。 如果生产上可以证明某个医疗器械的软件是使用很好的软件工程过程实现的,那么,对 此器械的上市前审查就可以集中于与器械相关的风险以及如何最好地管理这些风险。FDA 不对软件开发过程进行审查,这使得上市前审查更加快捷,一致性更强。 软件标准要求对构成软件工程工作的各部分进行详细的文件描述和定义。表1是FDA 软件标准技术小组解释的各种不同水平软件标准。其中,国内比较熟悉的有IEC在1996 年5月发布的“IEC 60601-1-4并行标准:可编程医用电气系统”标准。此标准要求生产 商遵循某过程,该过程包括风险分析和开发活动,要求生产商建立该过程的记录以支持使 用可编程电子子系统的医用电气设备的安全性声明。IEC 60601-1-4标准作为医疗设备系 统的风险管理标准是非常有用的,遵循此标准非常有益。不过,IEC 60601-4是作为一个 风险管理标准而起草的,并没有计划阐述软件有效性;该标准只涵盖了产品生命周期中的 设计部分,并没有阐述软件的维护和报废;该标准阐述了系统水平的风险分析,但是较少 阐述软件的规划;IEC 60601-1-4没有涵盖FDA管理的所有医疗器械(如单机软件)。 四软件的测试 软件的测试应当是在其整个生命周期进行的,V模型是其较常用的测试模型之 一。我们必须清楚,并不存在某一种测试模型或者测试方法可以确保对某一个特定软件 进行彻底的测试。对所有的程序功能进行测试也不意味着对整个程序进行了测试。测试一 个程序的所有代码也不意味着对程序中所有必须的功能进行了测试。即使测试了所有程序 的功能和所有程序代码也不代表程序就是100%正确的。一般来说,常见的软件测试可分为 白盒测试、黑盒