医疗器械软件产品经理必读的法规及标准-YY/T0664(一)

医疗器械软件的产品经理,需要熟读医药行业标准,在软件设计开发的整个生存周期过程中,我们需要根据《YY/T 0664 医疗器械软件 软件生存周期过程》的标准来执行。在各个阶段输出相应的文档及记录,申请NMPA认证。接下来我针对软件开发过程写以下几个过程。

  1. 软件开发策划

  2. 软件需求分析

  3. 软件系统结构设计

软件开发过程由若干个活动组成,主要包括软件开发策划、软件需求分析、软件体系结构设计、软件单元实现、软件集成和集成测试、软件系统测试、软件发布。在整个生命周期中需要对软件进行风险管理,医疗器械软件的风险管理可参考YY/T 0316 医疗器械 风险管理对医疗器械的应用。同样,在整个设计开发过程中需要对软件进行配置管理。这些活动如下图所示:

医疗器械软件的安全等级划分为A、B、C三个安全级别。具体如下图所示,主要是根据软件在最不利的情况下促成的危险情况引发的对患者、操作者或其他人员伤害的风险。

1.软件开发策划

1.1软件开发计划

在软件策划阶段,需拟定开发计划,开发计划应说明以下各项

(1) 软件开发过程的相关活动,按照软件开发的各个阶段来划分:开发策划、需求分析、体系结构设计、详细设计、单元实现、集成和集成测试、系统测试、发布。

(2) 软件开发各项活动的交付物。例如,需求分析阶段,需交付需求规格说明书等。

(3) 需要保证每个阶段的可追溯性。例如,在体系结构设计阶段,需要追溯体系结构设计是否完全覆盖了需求分析所要求的各项,剩余风险是否可为接受状态。

(4) 需明确配置和变更管理,需明确用于支持开发的软件,例如,医疗影像软件的显示需用到VTK、ITK等现成软件。这些均需要在开发计划中体现。

1.2 软件风险管理策划

在策划阶段,需明确在软件开发过程中,如何对风险进行管理,需制定风险管理计划,风险管理计划则需要明确衡量风险严重度、风险发生的概率等的风险评价标准,以及风险判定可接受的准则。以下给出YY/T 0316中的附录D3.4 示例。

严重度定性分5级示例

半定量概率分级示例

半定量风险矩阵示例

2.软件需求分析

2.1 需求分析内容

YY/T 0664中规定医疗器械软件的需求分析需包括:功能和性能的需求、软件系统的输入和输出、软件系统和其他系统之间的接口、软件驱动的报警、警告和操作者信息、信息安全需求、由软件实现的用户界面的需求、数据定义和数据库需求、已交付医疗器械软件在一个或多个操作和维护现场的安装和验收需求、与操作和维护方法有关的需求、与IT方面有关的需求、用户维护需求、法规要求。

各位产品策划擅长写用户界面的需求,画原型,设计交互。但是在医疗器械软件中需要考虑多个方面。例如信息安全,患者的健康数据需要保证在传输过程中的安全性和完整性,所以这个时候就需要设计数据匿名化,传输加密等功能。

在《医疗器械网络安全技术审查指导原则(第二版)征求意见稿》中有对网络安全部分相关的规定,该指导原则规定,需提供网络安全需求规范文档。医疗器械网络安全能力包括[3]:

  • 自动注销

  • 审核

  • 授权

  • 网络安全特征配置

  • 网络安全补丁升级

  • 数据去标识化

  • 数据备份与灾难恢复

  • 紧急访问

  • 数据完整性与真实性

  • 恶意软件探测与防护

  • 节点鉴别

  • 人员鉴别

  • 物理防护

  • 现成软件维护

  • 系统固化

  • 网络安全指导

  • 存储保密性与完整性

  • 远程访问与控制

  • 扛拒绝服务攻击

2.2 验证软件需求

需求需要经过评审,从而验证软件的需求。需求分析需满足以下要求

(1)实现了系统需求,包括那些与风险控制有关的需求。例如:用户需求、临床需求等无遗漏,风险分析过程中,如果通过某个需求来控制该风险的发生,则该需求不可遗漏。

(2)需求之间不相互矛盾。

(3)需求文档具有可读性,不会出现含糊不清的术语,引起歧义的用词。

(4)需求可被唯一识别。

(5)需求的可追溯性,每个需求的来源,有些来自于竞品,有些来自于用户需求,保证其可追溯到其来源。

在需求分析阶段可以设计需求跟踪矩阵,将每条需求罗列出来,以保证后续开发的可追溯性。或使用项目管理工具对其进行追溯。

3.软件体系结构设计

3.1 体系结构设计

体系结构设计阶段将需求转化为形成文件的体系结构,需识别所有的软件项。该阶段需输出体系结构设计说明书。可设计体系架构图描述软件的体系结构。以下给出体系结构图示例:

3.2 验证软件体系结构

体系结构设计需要经过评审,验证下列各项:

(1)体系结构是否实现了各项需求;

(2)是否可以支撑软件项之间,软件项与硬件之间的接口;

(3)是否可支持其他未知来源的软件向正常运行。

后记

本文是在实际执行0664标准的过程中的一些总结与体会。后续会更新0664后面章节的总结体会。

参考文献

[1] YY/T 0664-2020 医疗器械软件 软件生存周期过程

[2] YY/T 0316-2016 医疗器械 风险管理对医疗器械的应用

[3] 医疗器械网络安全技术审查指导原则(第二版)征求意见稿

医疗器械软件产品经理必读的法规及标准-YY/T0664(一)的更多相关文章

  1. 医疗器械软件产品经理必读的法规及标准-YY/T0664(二)

    上节主要讲了软件开发策划.软件需求分析.软件系统结构设计三个阶段,这节来分析以下几个阶段. 1.软件单元实现 2.软件集成和集成测试 3.软件系统测试 软件开发过程由若干个活动组成,主要包括软件开发策 ...

  2. 智软科技医疗器械GSP监管软件通过多省市药监局检查

    提供医疗器械GSP监管软件,通过多省市药监局检查,符合2016年最新GSP监管条例的要求. 企业客户列表 温岭市万悦医疗器械有限公司 杭州市上善医疗器械有限公司 武汉明德生物科技股份有限公司 http ...

  3. 医疗器械c#上位机开发指引教程

    此教程面向的读者:对医疗器械上位机编程有兴趣,或者急需了解医疗器械(尿常规.血液分析.生化.心电.B超等医疗下位仪器)的编程流程.编程细节的程序员. 1.得到仪器协议 当我们需要与医疗器械等下位机数据 ...

  4. 记一次 .NET 某医疗器械 程序崩溃分析

    一:背景 1.讲故事 前段时间有位朋友在微信上找到我,说他的程序偶发性崩溃,让我帮忙看下怎么回事,上面给的压力比较大,对于这种偶发性崩溃,比较好的办法就是利用 AEDebug 在程序崩溃的时候自动抽一 ...

  5. 对XX证券报关于物联网操作系统的几个问题的答复

    XX证券报提问了几个关于物联网和物联网操作系统的问题,个人表达了一些粗陋的观点,在这里发表出来,与行业朋友交流和探讨. 物联网行业最需要解决的问题是什么? 虽然物联网这个行业被炒得比较热,但是截至目前 ...

  6. 推荐一本写给IT项目经理的好书

    原文地址:http://www.cnblogs.com/cbook/archive/2011/01/19/1939060.html (防止原文作者删除.只能拷贝一份了) 推荐一本写给IT项目经理的好书 ...

  7. 医疗行业预测性产品的质量如何把关?MES系统帮大忙

    作为行业细分的医疗设备制造正在向工业4.0快速发展.它也可能仍然是世界上受监管最严格的行业之一,产品的个性化发展速度比其他行业更快. 在医疗设备行业中,由于需求或由于市场特定的规定,产品越来越多地定制 ...

  8. 开发者说 | 云+AI赋能心电医疗领域的应用

    以"医工汇聚 智竞心电"为主题的首届中国心电智能大赛自2019年1月1日启动全球招募起,共吸引总计545支来自世界各地的医工结合团队,308支团队近780名选手通过初赛资格审查,经 ...

  9. 互联网医疗行业PEST分析实践

    前言 今年开始逐步切入产品与数据工作,完全脱离了原来的舒适区,确实有一些挑战.开始以为只做数仓建设的事情,就仓促的学习了一些数仓相关的知识,但没搞多久,还要负责公司BI的工作,又开始补习数分相关的知识 ...

随机推荐

  1. 『动善时』JMeter基础 — 40、JMeter中ForEach控制器详解

    目录 1.什么是逻辑控制器 2.ForEach控制器介绍 3.ForEach控制器的使用 (1)测试计划内包含的元件 (2)获取学院列表请求内容 (3)JSON提取器内容 (4)ForEach控制器内 ...

  2. NX二次开发-通过3x3矩阵获取XYZ轴矢量

    函数:UF_CSYS_ask_wcs() 函数说明:通过3x3矩阵获取XYZ轴矢量 用法: 1 #include <uf.h> 2 #include <uf_mtx.h> 3 ...

  3. 如何使用perf进行程序分析

    1.安装. sudo apt-get install linux-tools 如果提示没有可安装候选.请输入: sudo apt-get install linux-perf-version 其中ve ...

  4. 强烈推荐!15 个Github 顶级Java教程类开源项目

    大家好,我是 Guide 哥!今天给大家推荐 15 个新手也能看懂的 Java 教程方向的开源项目.这些项目无论是对于你学习 Java 还是准备 Java 方向的面试都非常有帮助. 正如我第一个要推荐 ...

  5. hash表及带注释插头dp

    struct hash_map { node s[SZ+10];int e,adj[SZ+10]; inline void init(){e=0;memset(adj,0,sizeof(adj));} ...

  6. Golang中的各种时间操作

    Golang中的各种时间操作 需求 时间格式的转换比较麻烦,自己写了个工具,可以通过工具中的这些方法相互调用转成自己想要的格式,代码如下,后续有新的函数再添加 实现代码 package utils i ...

  7. 铂金07:整齐划一-CountDownLatch如何协调多线程的开始和结束

    欢迎来到<并发王者课>,本文是该系列文章中的第20篇. 在上一篇文章中,我们介绍了Condition的用法.在本文中,将为你介绍CountDownLatch的用法.CountDownLat ...

  8. 浅析C++的函数式编程

    前言 Java8在Java中通过lambda表达式.Stream API引入了函数式编程,那么C++中是否也支持函数式编程呢?答案是肯定的.目前关于C++进行函数式编程的语法探究的相关博客.文章并不多 ...

  9. Visual Studio Code 和Visual Studio插件收集(持续更新)

    Visual Studio Code 插件收集 Chinese (Simplified) Language Pack 默认刚安装的VSC是原味英文的,如果你用不习惯,非常简单,官方出品的简体中文语言包 ...

  10. 详细解释 使用FileReference类加载和保存本地文件

    一般而言,用户不希望web浏览器中运行的应用程序访问电脑硬盘里的文件.然而,随着基于浏览器(browser-based)的富因特网应用程序的增多,一些应用程序迫切需要访问用户所选择的文件,或者将文件保 ...