医疗器械软件生产环节应予以更多关注
2015-11-03焦彦超
文 焦彦超
北京市密云县食品药品监督管理局
近年来,医疗器械产业的飞速发展,医疗器械软件的应用越来越广泛,起到了关键甚至核心的作用,而同时软件错误造成严重后果的情况也越来越突出。经统计,美国FDA 公布的数据,1999 ~2005 年期间,共有3771 个产品被召回,由于软件故障被召回的产品有425 个,占全部被召回产品的11.3%。什么是医疗器械软件?与常规医疗器械相比有哪些特点?如何保障其质量安全?笔者结合日常工作就此进行分析。
医疗器械软件应用广泛
根据医药行业标准YY/T0664-2008《医疗器械软件 软件生存周期过程》,医疗器械软件是指包括在被开发的医疗器械内的已开发的软件系统或者预期本身用作医疗器械而开发的软件系统。《医疗器械监督管理条例》规定,医疗器械是单独或组合用于人体的仪器、设备、器具、材料或者其他物品,包括所需要的软件。例如医疗器械产品中嵌入的软件、附件中的软件、医疗器械软件产品(例如图像存档和通信系统-PACS,模拟重建血管系统软件)等。
软件容易变更,也容易发生错误
软件产品同常规医疗器械生产的显著不同。
一是质量主要取决于设计开发。绝大多数软件问题是在设计与开发过程中形成的。常规医疗器械质量主要取决于设计、开发和生产,而软件产品质量主要取决于设计和开发,与软件生产基本无关。软件生产由复制(拷贝)构成,很容易验证,可以持续大量生成与原始程序一致的拷贝。
二是缺陷的隐蔽性。与硬件不同,软件不是物理实体,所以不会磨损,缺陷会更加隐蔽。软件错误往往没有任何警告就发生,允许执行不同路径的软件分支可能隐藏着一些潜在的缺陷,这些缺陷可能在软件产品上市后很长时间才被发现。
三是变更容易且迅速,易发生错误。与硬件相比,技术人员认为软件问题很容易纠正,可以根据硬件的需要而更改,因而误以为软件不需要像硬件那样严格控制。事实上,恰恰相反,由于软件的复杂性,对软件的部分改动(包括升级和更改)都可能导致引入新的缺陷或导致其他部分的意外错误。
四是不易标准化和相互替代。各企业间设置了较为严格的技术壁垒,因此定义和开发可以复用的软件代码组件比较困难,同时软件需要满足不断增长、日趋复杂的使用需求,加之软件开发人员的高度流动性,使软件不像硬件那样容易标准化和互相替代。
医疗器械软件产品具有其特殊性和复杂性,对该类产品的监督管理也应有别于其他医疗器械产品。具体体现在生产企业许可证核发检查和质量管理体系检查中,关注的重点亦有所不同。
测试人员不得从事开发工作
根据《北京市医疗器械软件生产企业现场审查标准》,软件类生产企业的现场检查除医疗器械通用检查项目外,还具有显著不同,增设了针对性项目。在检查项目时,应当注意几方面细节。
应获得并查看企业产品标准。关注软件所需的硬件配置、系统要求、软件环境要求、软件的载体,以及硬件配置指标,如CPU 工作频率、显示器分辨率,内存容量,软件环境要求,如编码语言、操作系统,工况环境,如温度、湿度等。软件载体是软件产品的交付介质,如磁盘、光盘、优盘、移动硬盘等。企业测试用的计算机应当满足产品标准规定的硬件、软件环境要求,防止企业在设计开发和测试过程中出现配置错误。
必要时比照企业标准,进行软件测试。对软件来说,需要确认其功能及操作符合标准要求。可以通过黑盒测试的方法,通过创建测试用例的方法对程序和数据进行测试。
对于网络版的软件,如果需要测试硬件接口,可准备两台符合要求的计算机,通过接口(串行口)将两台计算机连接,其中一台计算机上模拟具备串行通信能力的检测仪器,发送检验仪器的原始数据,在另一台计算机上运行相应的接口程序,运行检测的主程序,在结果浏览窗口检验接受数据的正确性、完整性,尤其是模拟某些标准中规定的超限值,看是否按照软件功能予以警告和终止或触发其他操作。
对于测试网络连接口,可准备两台局域网中的计算机,设置网络协议为TCP/IP,其中一台模拟具备网络通信能力的检验仪器,运行发送程序,模拟发送检验仪器的原始数据,另一台计算机运行相应的接收程序,运行检验主程序,在结果浏览窗口检验接收数据的正确性、完整性。
对于测试软接口,可以根据检验仪器的计算机控制台,运行控制台模拟检验结果,运行相应接口程序,读取数据并发送至网络,另一台计算机运行主程序,在结果浏览窗口检验接收数据的正确性、完整性,并应能对该数据进行操作。
对人员应有特殊要求。企业应当配备与软件设计开发、维护相适应的软件相关技术人员并建立完善的培训制度,包括法规培训,质量管理体系培训,专业培训,落实《医疗软件产品技术审评规范》(2012 版)中软件研发的基本要求,统一代码书写要求和代码注释,方便代码的复查和修改。除检查培训记录外,可采用两种手段考核开发人员,一是即使不加代码注释,开发人员也能够读懂程序;二是熟记良好的开发规范,不提倡标新立异,对同一任务能写出几乎一样的代码,并能正常运行,这样才符合要求。即使出现员工离职情况,代码质量也不会因为员工的离职而发生变动。
测试人员不得从事开发工作。测试工作需要客观严谨的态度,编程开发人员一般不愿否定自己的工作,所以标准要求测试人员不得从事开发工作,以避免自己测试自己程序的现象,如果由他人测试程序,结果更为客观。这里所说的测试与设计编程过程中的代码互查不是同一概念,代码互查针对的是一个编程人员一天的工作结果,而测试则是一个团队一段时间的工作成果,是模块级别的测试。
软件的维护过程和开发过程一样重要
对生产企业的质量管理体系的检查,可以依照《医疗器械生产质量管理规范》适用条款予以检查。
例如对第五章设计和开发环节的检查,重点检查软件开发各个阶段的输出,例如需求分析阶段输出是产品需求文档,设计阶段的输出是软件架构设计文档和详细设计文档,软件实现阶段输出的是源代码和代码注释。检查企业设计开发是否履行这些程序:对设计开发文档的评审应由该部门负责人召集组织,其他部门有关人员参加。按照检查方案(检查表)对文档内容进行逐一核查,当提出的问题都解决后,各评审人员签字,部门主管签署批准意见。对源代码的每一个模块进行评审,由设计负责人主持,对代码的格式、逻辑性等进行细致的评审,填写评审记录。评审文档经质量管理部门确认后才算完成,若不符合规定,则重新修订。如遇注册后软件存在瑕疵,需要进行设计开发的更改也应当进行评审、验证和确认并保存相应记录。企业应提出修改申请,经评审同意修改后,有关开发人员做相应修改,修改完成后提交测试部门验证,通过验证后,对修改申请进行关闭。需要保证每一个修改要求都能够被跟踪和落实。可以用专门的软件记录和跟踪软件缺陷的修复,并在源代码中加以标记。缺陷跟踪记录包括:发现人、缺陷描述、修复人、修复记录、确认人和确认结论,通过后才能关闭记录。修改后的软件应标明版本,防止混淆和误用。在对功能结构等较大修改时(例如涉及产品性能和使用范围的改变),企业需要履行产品注册资料修改,乃至重新办理注册手续。
例如对第八章监视和测量环节的检查。软件产品是和计算机配套使用的专用软件,附加值高、批量小,所以对医疗器械软件产品的出厂检验,一般进行全数检验。出厂检验项目至少还包括产品描述和用户文档的要求。由于软件产品的要求都是在计算机界面中呈现的指标,一般不存在孰轻孰重的问题,即不能采取接受质量限的判定方式,所以医疗器械软件产品各检验项目的判定规则是一样的,如果判定为有任何一项性能不符合本标准要求时,则判定该产品出厂检验不合格。
由于软件是计算机上执行的代码,离开软件的安装、使用说明等文档则寸步难行,所以标准中规定的说明书等文档资料也作为产品的组成部分,同样需要严格检验。
软件的维护过程和开发过程一样重要,据统计,软件维护占整个软件生存周期工作总量的70%以上。软件维护活动有时和开发活动类似,企业应当在有维护要求的情况下,规定维护活动及其验证的要求,并保持实施的记录。