吴坤:医疗系统软件开发成功之基础——系统分析

发布时间:2022-08-02
浏览次数:

  系统分析工作是软件系统项目成功的基础,对于医疗系统软件也是如此。在开始系列文章撰写之前,笔者特意将系统分析作为一个议题撰文与同行交流研讨。

  1 什么是系统分析?为什么要进行系统分析?

  应用软件开发过程中,系统分析是非常重要的环节。那么什么是系统分析,为什么要进行系统分析呢?一个企业系统中的应用软件为企业业务和管理发展提供支撑和服务,随着企业组织的快速发展,原有的应用软件系统会出现了新的问题。例如工作效率低下、流程繁琐、业务产出质量差等,企业用户对此感到难以忍受,会提出了一些新的预期。例如在医疗机构的发展过程中,当医院内出现流程繁琐、患者就医体验不佳、医疗业务效率低差错率高、业务效率低下等问题时,就需要开展系统分析工作,找出问题原因和改进方案。系统分析是随着问题的产生以及用户对系统和业务的改造愿望而产生的,系统分析最终将产生系统问题分析说明文档等资料,这些文档资料是后续系统开发工作的设计依据和验收依据。

  2 怎样进行系统分析?系统分析的方法有哪些?

  系统分析最主要的目的是让软件开发人员理解软件要解决的业务问题是什么,从而确定针对这些问题的解决方案。系统分析有多种方法,比较常见的有结构化分析方法、信息工程法、面向对象分析方法和原型分析法等。

  结构化分析方法是最早使用的系统分析方法之一,目前仍然在广泛使用。结构化分析方法是面向数据流进行需求分析的方法,采用自顶向下、逐层分解,建立系统的处理流程,以数据流图和数据字典为主要工具,建立系统内在的逻辑模型。

  信息工程法关注系统中存储的数据结构,而不是过程,是一种以数据为中心的方法。实体关系图是信息工程法中进行数据建模的常用工具。

  面向对象法不把信息系统看作数据和过程的集合,而是一组封装了数据和过程的对象。对象可以包含很多属性,创建、读取、修改和删除对象的数据的唯一方式是通过嵌入对象中的过程(或称方法)来实现,统一建模语言(UML)是面向对象系统分析方法常用的工具。

  原型分析法是一种快速迭代的系统分析方法,当用户或者系统分析人员对系统缺少直观认知时,通过构建一个小规模、不完整但可以使用的实例作为原型。原型分析法的思想,主要是源于“当我看到它时,我才知道我想要什么”的思维方式。因而原先分析法更有利于用户表述自己的应用需求。

  3 系统分析环节和步骤?

  根据系统分析的主要任务是对当前系统进行调查研究,得到当前系统的详细资料,对医疗机构内部整体业务管理状况和信息处理过程进行分析,为系统开发提供所需要的资料,并提交系统方案说明书。通常情况下,系统分析步骤包括范围定义、问题分析、需求分析、逻辑设计、决策分析等阶段。

(1)定义分析范围

  系统的研发必须要有一个明确的任务目标,即明确系统应该解决哪些问题,提供哪些功能。大型医院进行系统研发,往往是“众口难调”,可能每个人都有自己的需求和想法。在范围定义时,要重点关注系统所有者视图,也就是医院重要管理人员的需求和预期。这些重要管理人员,大都是医院领导,对系统决策、方案确定、验收等环节起着决定性作用。在范围定义阶段,需要完成的工作包括列出问题和机会、确定项目范围等。

  列出问题和机会:确定触发系统开发的问题和机会,是业务开展需要、管理变革还是外部政策法规驱使,并且对每个问题的紧急程度、实现难度和优先级进行初步评估。可采用现场实地调研或召开研讨会,并制定问题描述文档,问题描述文档包括问题简要描述、紧急程度、优先级、建议采用的方案、问题提出人、联系方式等内容。

  确定项目初步范围:在系统开发过程中,用户方很容易提出新的需求和想法。但是,在系统分析阶段依然有必要确定项目的范围,并以文档的形式保留下来。这样,之后如果项目范围发生了变化,院方用户就能明白为什么项目开发的进度和经费投入也要相应变化。

  (2)理解用户要求阶段

  问题分析阶段的主要任务是,充分研究和理解问题领域,了解用户的要求,并分析其中存在的问题、机会和约束条件。在医疗系统软件研发时,一般要达到两个要求:对系统范围和问题相关内容精确化;为系统定义一个工作术语表。主要包括三方面工作:研究问题领域、分析业务流程、制定系统改进目标和计划工作。

  研究问题领域:对问题和专业术语进行理解,通常借助于系统上下图文工具,下图是门诊挂号系统上下图文。在上下文中,可以比较清楚地了解系统必须响应哪些输入、生成哪些输出。对于列出的问题,不能仅停留在表面认识,而应该详尽分析问题的原因和结果。

微信图片_20220802094017.jpg

  业务流程分析:对于关键医疗业务流程进行分析,例如挂号流程、急诊分诊流程、检查预约流程等,需要注意的是业务流程分析主要依赖于问题领域知识,不易涉及太多技术细节。业务流程分析结果,通常用数据流程图来展示,如下图所示:

微信图片_20220802094019.jpg

  制定系统改进目标和计划:系统目标和项目计划的制定,要基于对系统范围、问题和机会的正确理解认识。系统目标是制定一个评估准则,对系统的任何改动都按照该准则来度量,包括预期和约束条件。

  举例如下。

  第一,系统预期:

  高峰期门诊问诊响应时间低于1分钟;

  系统年宕机次数不高于两次且宕机恢复时间期限在10分钟内;

  系统支持市医保和跨省医保结算;

  ……

  第二,约束条件:

  系统必须要2022年12月28日之前上线运行;

  系统总研发成本少于500万;

  系统必须与其他系统实现数据互通;

  系统按照电子病历五级标准;

  ……

  根据系统目标和约束条件来制定和调整项目计划,始终坚持以系统目标为项目计划导向原则。最终,可以生成一个简要的系统改进和建议报告如下图所示:

微信图片_20220802094024.jpg

  (3)需求分析阶段

  用户需求分析是在分析存在的问题基础上,确定哪些是希望通过开发新的软件所要解决的问题,其目的是明确软件开发的目的和工作任务。

  需求分析是非常重要的工作,需求分析的主要工作是将系统开发工作的目标转化为系统的功能需求和非功能需求:功能需求是软件开发人员,提供什么样的功能,满足用户的业务需求;非功能需求是软件系统提供的应用软件的质量上的要求,保护应用响应时间,用户界面友好性,以及信息保护和安全等方面的需求。

  需求分析不是记录下用户对需求的描述,而是从用户业务需求中,抽象出软件实现应用目标,应用程序所实现的输入、输出、过程和存储的数据的形式定义。比如患者建档输入为患者基本信息,输出为患者档案信息。通常在需求分析时,采用用例建模工具来描述业务需求。关于系统需求分析,是一个非常复杂的工程,后续将专门撰文介绍。

  (4)软件逻辑设计

  系统分析需要创建一个系统模型,也就是系统建模。逻辑设计阶段采用系统模型进一步记录业务需求,系统模型包含了数据结构、业务流程和用户接口等内容。逻辑设计从系统的角度,验证了需求和系统目标的正确性。关于逻辑设计,后续将撰文详细介绍。逻辑设计阶段,最终可生产一个系统业务需求陈述文档。

  (5)方案选择决策阶段

  关于系统问题和需求目标,可能有多个解决方案。决策分析的主要任务是,分析候选方案,并根据分析结果推荐最佳方案。在分析候选方案时,尽可能的要求系统关键确定人员(比如分管院长、业务科室主任)参与。系统分析人员向医院相关领导详细介绍和描述各方案优缺点,然后听取医院方人员建议。必要时,系统分析人员可发表指导性和建设性意见。

  在系统分析时,有必要做价值评估工作。特别是要注意项目所代理的机会有哪些,在哪些技术方面可能会有创造性的突破,能否展现公司或者医院信息部门的技术实力,对于医院信息部门后续的发展规划,有哪些积极和消极的影响。

  4 医疗系统分析的特点和难点

  医疗行业与其他行业相比,有其特殊性,如业务的复杂性和业务管理高标准要求等。系统分析需要搞清楚系统需要提供的功能和解决的问题是比较困难的,主要体现在下述几个方面:

  (1)临床医学与IT技术是两个差距非常大的专业,因而系统分析工程师在与医院用户进行调研沟通过程中,容易出现理解和沟通障碍。医院用户可能很难理解系统涉及的复杂流程,导致系统分析工作面临很大的困难。

  (2)医疗业务的复杂性,是医疗系统分析工作的另一个巨大挑战。特别是在目前国内医疗机构在管理上尚未严格的统一标准,特别是大型医院,有很多个性化特色需求,这些因素极大地增加了医疗系统分析工作的复杂性。在医院内部,日常业务开展非常繁忙。特别是大型医院,其工作人员同时兼临床、科研和管理工作,能够参与系统分析调研工作的时间有限。因而,系统分析工程师在开展工作时,要特别注意方式技巧,根据用户的工作状况,合理的安排时间规划。

  (3)医疗行业的封闭性,是医疗系统分析工作面临的一个非常严重的困难。通常情况下,非医疗行业从业人员,甚至非本医疗机构工作人员,很难对医疗机构内部业务管理流程有了解和认识,导致在开展系统分析工作时,很难有前置资料了解问题和用户需求,只能一步步事无巨细进行实地用户调研。

  当前,医院信息系统软考开发依然存在很多问题,比如技术实力欠缺、开发过程简陋等。为确保医院信息系统软考项目的成功,有必要开展系统分析工作。在具体项目开展时,不一定严格按照文中所述步骤,但基本的范围定义和问题分析等工作还是做扎实。

  作者简介

微信图片_20220802094030.jpg

  吴坤,计算机专业硕士,华中科技大学同济医学院附属同济医院信息中心软件工程师。专业计算机程序员,国内在医疗行业积极推广IT技术的青年工程师和技术践行者,热衷于以信息技术提高医疗行业服务质量和改善患者就医体验。