欢迎光临
我们一直在努力

springboot药房管理系统05415-计算机课程设计、毕业设计

第一章 绪论

1.1 研究背景与意义

  医疗机构内部药品流转一直采用人工记录和纸质单据传递的方式,采购计划的制定依靠经验估算,库存盘点滞后容易造成误差,药师发药时不能及时了解准确的存量,单向、滞后的管理方式造成信息割裂和效率低下[1]。早期采用的电脑化管理系统虽然把一些纸质流程电子化,但是大多只在某个部门使用,数据更新滞后的问题比较明显,采购、仓储、调剂等各个环节之间不能形成有效的协同,药房整体运转受到信息壁垒的影响。随着医疗服务量不断上升和药品管理越来越严格,传统的管理模式在即时响应、流程透明、资源调配准确度等各方面存在的不足也越来越突出,现有的手段已经不能满足现代医疗机构对于药品流转高效化、精细化的要求了[2]。

  开发出一个包含采购、仓储、调剂、结算的药房管理系统,可以将药品信息、库存变化和业务操作及时联系起来,从而减少由于信息传递不畅造成的账实不符和重复工作。该系统依靠清晰的角色分工以及流程闭环来推进药品管理由分散记载转向协同共享,给改善药房运作效能并削减人为失误赋予了实质性的支撑,而且也给其他种类医疗机构药事服务的信息化改造给予可参照的实践范例。

1.2 国内外研究现状

  国内药房管理信息化发展从最初的单机版药品管理系统,到现在的网络化综合业务平台。早期医院药房大多使用桌面数据库类型的库存管理系统,主要是对药品的入库、出库进行简单的登记和记账,各个功能模块之间互相独立,不能在不同的科室之间共享数据[3]。伴随着互联网技术的普及,一些医疗机构开始部署以客户端/服务器结构为基础的药房管理系统,使得药品信息可以在药房内部基本流通,但是采购计划和临床用药需求之间还存在着缺少动态联动的问题[4]。近些年来,以Spring Boot、Vue为代表的一批前后端分离技术被广泛地应用到医疗信息系统的创建当中,有些研究把药品采购、库存盘点、财务结算这些模块融合成一个平台,试图打通药房和药库、药房和临床科室之间的数据通道[5]。部分成果针对药品库存预警和效期管理进行研究,用安全库存阈值和近效期提醒来帮助药师改善库存结构[6]。还有研究关注药房业务流程再造,把药品调拨、异常处理纳入到系统的控制范围之内,提高了对突发状况的应对能力[7]。从总体上看,国内有关系统在功能覆盖面不断拓展,但是各个模块之间数据一致性保证以及跨角色协同效率还有待提高。

  国外医疗机构对于药房管理系统建设的起步较早,形成了一套比较完善的实践体系。以美国医院药房为代表,早期的系统主要依靠医院信息系统(HIS)发展起来,把药品管理融入到临床诊疗和收费流程当中,实现了医嘱开立、用药审核、药品调剂和费用结算一体化运作[8]。欧洲一些国家采用集中式的药品供应链管理平台,区域内医疗机构使用统一的系统完成药品的采购和库存的调配,大大降低了重复采购、库存积压的问题[9]。部分研究对药品全流程追溯进行了研究,使用了条形码、射频识别技术,从药品入库到患者用药全过程的管理,可以有效提高用药的安全性[10]。近些年来,基于云架构的药房管理系统渐渐出现,可以对多个院区的药品数据展开实时汇总并实施远程监管,给连锁医疗机构赋予了统一的管理视角[11]。也有学者研究了药房运营数据分析,利用采购记录和消耗数据来改进药品库存模型,从而给管理决策提供支持[12]。国外系统在流程集成度和数据利用深度上具有明显的优势,其设计思想及实施经验给本课题提供重要的借鉴。

1.3 主要研究内容

  本课题以药房管理业务需求为出发点,用Spring Boot框架和Vue前端技术来设计并实现一个药房管理系统。系统面向采购、药师、管理员三个角色,包含药品信息管理、进药计划管理、入库信息管理、用药需求管理、出库信息管理、药品盘点管理、药品调拨管理、药品分类管理、异常处理管理、药房结算管理等主要模块。按照软件工程规范完成需求分析、总体架构设计、功能模块划分、数据库设计和系统实现,采用前后端分离的B/S架构,用MySQL数据库存储业务数据,主要解决药品流转过程中信息滞后、库存账实不符和跨角色协同不畅等问题。

第二章 相关技术介绍

2.1 Spring Boot框架

  Spring Boot是基于Spring生态系统建立起来的,用自动化的配置方式简化了传统Spring应用的搭建和部署过程。该框架采用的是约定优于配置的设计思想,把很多常用的配置项预先设定成默认值,开发者只需对某些场景做一些简单的自定义设置即可,大大简化了项目初始化的过程[13]。从运行机制上来讲,Spring Boot自带Tomcat、Jetty等Servlet容器,将一个应用打包成独立的JAR文件可以直接运行,不需要部署在外部的服务器上,这样就使微服务架构中服务独立部署变得可行。框架主要由自动配置模块、启动器依赖管理模块和Actuator监控模块组成,自动配置模块根据项目依赖的jar包动态装配出对应的Bean实例,启动器将常用的依赖合并在一起,简化了Maven或者Gradle的配置。Spring Boot同持久层框架无缝对接,在数据处理方面用统一的资源管理方式来对数据库连接、事务控制加以封装。本系统选用Spring Boot作为后端开发框架,依靠它的依赖注入和面向切面编程特性来组织业务逻辑,把采购计划的制定、药品的入库登记、库存的调拨申请等主要操作做成独立的服务层组件,各个组件之间依靠接口相互联系,减小了模块之间的耦合程度。

  框架的自动配置机制会一直起作用,它在系统运行过程中不断起作用。当系统启动的时候,Spring Boot会扫描类路径下的配置类以及注解,并且根据条件化的注解来决定是否创建出相应的Bean实例。运行时的决策机制可以实现系统对于不同的部署环境可以自动配置相应的数据库连接池、缓存策略等配置信息,在没有对代码进行任何修改的情况下就可以在开发环境和生产环境之间切换不同的部署方式。框架的Actuator模块可以实时公布应用运行状况指标,内存利用情况,线程池状态,HTTP请求统计数据等都可被公开出来,给系统运维赋予可视化的监视入口。本系统在开发时使用了Spring Boot的单元测试来对药品信息管理、出库信息管理等模块进行独立测试,在模拟MVC环境下检验控制器层接口是否正确,保证核心业务流程在迭代过程中不出现变动。

2.2 Vue.js框架

  Vue.js是一个渐进式的JavaScript框架,主要用来构建用户界面层,它的核心库只关心视图层,可以方便地和其他库或者现有的项目进行整合。该框架使用响应式数据绑定的方式,当数据模型发生变化的时候,视图层就会自动完成更新,而不需要开发者去手动修改DOM元素,从根本上改变了前端代码的组织方式[14]。Vue.js利用虚拟DOM技术来提高渲染效率,框架在内存里保存一份轻量级的DOM树表示,当数据发生变化的时候计算出最小差异集,然后一次性完成真实的DOM更新,从而避免了频繁重绘造成的性能损失。组件化设计也是Vue.js的一个主要特点,每一个组件都包含有自己的模板、样式以及交互逻辑,不同的组件之间则是通过属性传递和事件广播来进行交流的。本系统前端开发把药品信息管理页面分成药品列表组件、筛选表单组件和药品详情编辑组件,各个组件分别独立开发和测试,最后用组件树组装成完整的功能页面。

  框架的路由模块对单页面应用中的视图切换进行管理。Vue Router采用浏览器历史记录模式进行页面跳转,用户在不同功能模块之间切换的时候,只替换页面主体区域的组件,公共头部和侧边栏保持不变,从而减少由于页面刷新而产生的网络请求。Vuex状态管理库用来存放应用中需要跨组件共享的数据,例如当前登录用户的角色信息、药品分类树结构等等,各个组件通过提交变更函数而不是直接修改状态来保证数据流向的可追溯性。本系统用Vue.js的指令系统来创建动态交互效果,用药需求列表根据后台推送的数据实时更新,库存预警信息用高亮样式显示出来,药师可以很快地找到需要处理的药品项。

2.3 MySQL数据库

  MySQL数据库属于关系型数据库管理系统的一种,具有高性能、高可靠性和易用性,在各种Web应用中被广泛应用。该数据库采用多线程结构,用连接池来管理客户端会话,每一个会话都会独立地执行SQL语句并得到结果集[15]。InnoDB存储引擎是MySQL的默认存储引擎,支持事务处理、行级锁定和外键约束,在保证数据一致性的基础上又可以满足并发访问的需求。数据库索引使用B+树结构,把索引键值和数据行物理地址联系起来,对药品编码、药品名称等经常出现在查询条件里的字段创建索引之后,系统就能迅速找到想要的数据,而不会出现全表扫描引发的响应延迟。

  本系统的设计过程是以采购、药师、管理员这三个角色的业务需求为依据来制定数据库结构的。药品信息表存放药品通用名、规格、生产厂家、批准文号等基本数据,用药品分类表的外键关联来实现分类层级管理。进药计划表和入库信息表分别记载采购需求和到货验收状况,两表经由计划编号联系起来,从而保证采购流程的完备性。库存变动用流水表方式记录,每笔出库、入库、盘点、调拨操作都会产生一条库存流水记录,库存总量是基础库存数据加上流水的总和,这样的设计方式有利于追溯任意时间点的库存情况。MySQL事务隔离机制保证并发情况下数据操作的正确性,当药师同时提出出库申请的时候,数据库用行级锁来控制同一个药品库存记录的并发修改,防止出现超卖或者库存数据混乱的情况。

2.4 前后端分离架构

  前后端分离架构把用户界面和业务逻辑分成两个独立部署的子系统,前端应用通过HTTP协议调用后端提供的接口来获取数据或者提交操作请求。该架构模式下前端完成页面渲染和用户交互,后端完成业务规则处理和数据持久化,两者之间用预先约定好的接口契约进行协作[16]。前后端分离把传统的单体应用中视图层和控制层的紧密耦合情况打破,前端应用可以单独开发、测试和部署,技术选择不再受到后端框架的制约。在开发流程上,前后端团队按照接口文档进行工作,后端团队负责业务逻辑的实现以及接口性能的提升,前端团队负责交互体验和界面展示,沟通成本大大降低。

  本系统使用前后端分离的方式来组织整个结构。前端使用Vue应用编译打包得到静态资源文件,部署到Nginx服务器上,后端使用Spring Boot应用部署到独立应用服务器上,两者之间用RESTful风格的接口进行通信。前端发起药品信息查询请求的时候,把查询参数拼装成JSON格式发送到后端指定的URL上,后端控制器层收到请求之后调用服务层进行业务处理,然后把结果封装成统一的响应格式返回给前端。该种数据交互方式可以使得系统对不同的终端接入有较好的适应性,如果要开发移动端的应用,可以直接使用后端接口,不需要重新实现业务逻辑。接口层用Token来管理用户的身份认证,采购、药师、管理员三种角色登录之后会得到不同的权限范围的Token,后端根据Token携带的角色信息对接口访问权限进行校验,从而达到业务操作的安全可控的目的。

第三章 系统分析

3.1 功能需求分析

3.1.1 采购人员功能

  采购人员在系统中进行药品信息登记,按照库存预警情况制定进药计划,到货后录入入库信息。采购人员用例图如下图3-1所示。

image 图3-1采购人员用例图

3.1.2 药师功能

  药师负责药品信息的维护,根据临床用药的需求来提出出库申请,定期进行药品盘点来核对账实情况,在库存分布不均的时候提出药品调拨的请求,对进药计划的执行情况进行跟踪。药师用例图如下图3-2所示。

image 图3-2药师用例图

3.1.3 管理员功能

  管理员负责药品分类体系的维护工作,对药品的基本信息进行统一管理,监督药品盘点的过程,审批药品调拨申请,处理业务运行中出现的各种异常情况,完成药房财务结算的操作。管理员用例图如下图3-3所示。

image 图3-3管理员用例图

3.2 可行性分析

3.2.1 技术可行性

  系统采用前后端分离的架构,后端用Spring Boot框架实现业务逻辑,前端用Vue框架完成界面展示,数据层用MySQL数据库进行存储。Spring Boot框架在Java Web开发中经过很多项目的验证,它的依赖注入、自动配置等特性可以减少项目搭建的复杂程度。Vue框架以组件化开发模式著称,有利于前端功能模块的拆分和复用。MySQL数据库具有良好的事务支持以及索引优化能力,可以满足药品库存管理系统对于数据一致性的需求。开发人员有以上技术栈的实践经验,可以独立完成系统开发任务。从性能上来说,系统针对医疗机构内部药房的使用,并发访问量处于可控制范围内,在常规部署环境中硬件资源可以满足系统的正常运行。从数据安全角度出发,用用户身份认证和权限分层控制来限制不同角色的操作范围,防止越权访问。因此系统的技术上是可行的。

3.2.2 操作可行性

  系统界面设计参照医疗机构药房日常业务办理流程,将药品入库、出库、盘点、调拨等操作按照角色职责进行划分。采购人员登录之后可以立即进入到采购计划的制定和入库登记的页面上,药师的工作台集中显示了用药需求处理以及库存变动的操作入口,管理员后台汇总了分类管理、异常处理和结算的功能。各个功能模块使用统一的交互风格,操作路径和药房现行工作流程大体上一致,使用者不需要重新适应复杂的操作逻辑。系统上线之后,原有的手工记录和纸质单据流转方式将会被电子化的流程所取代,数据实时同步可以降低跨岗位沟通的成本。后续的维护工作主要是对基础数据和权限的修改,可以由药房管理人员自行进行,不需要开发人员参与。因此,系统在操作上是可行的。

3.2.3 市场可行性

  医疗机构药房管理普遍存在库存信息滞后、采购和出库脱节、账实不符等问题,在各级医院药房以及社会药房中均有不同程度的表现。目前的解决办法大多依靠人工盘点和Excel台账记录,信息传递依靠口头交流或者纸质单据,处理效率低、容易出错。本系统把采购、入库、出库、盘点、调拨等各个环节都纳入到同一个平台上,使药品的流转全过程可以追溯,库存变化可以即时更新。与现有的方式相比,系统在数据的准确性、流程的透明度方面有明显的区别,可以针对药房管理中主要的痛点进行有针对性的解决。因此系统在市场方面是可行的。

第四章 系统设计

4.1 系统架构设计

  系统用前后端分离的模块化设计思想把界面展示、业务逻辑和数据存储分成了不同的层次。用户在浏览器端发出操作请求,Vue框架完成页面渲染以及交互事件的监听,用Axios库异步地把请求数据发送到后端接口。Spring Boot框架收到请求之后,控制器层对参数进行解析,并调用对应的业务规则,即药品入库、库存盘点、药品调拨等核心业务规则,进行数据的校验和事务的处理。数据持久化使用MySQL数据库,用MyBatis映射器把实体对象和数据库表记录转换成原子性的、一致性的操作[17]。分层结构使各个模块的职责明确,前端只做用户交互体验,后端只做业务逻辑处理,数据库做数据存储和完整性约束,减少了系统的耦合程度。系统整体架构图如下图4-1所示。

image 图4-1系统架构图

4.2 系统结构功能设计

  系统以采购人员、药师、管理员这三个用户角色为基础来创建功能模块。采购人员可以对药品进行信息管理、进药计划管理、入库信息管理等操作,是药品的源头采购者和入库验收人。药师从事药品信息管理、用药需求处理、出库信息登记、进药计划跟踪、药品盘点实施、药品调拨申请等工作,是药房日常运营的各个重要部分。管理员有药品分类管理、药品信息审核、药品盘点监督、药品调拨审批、异常处理处置、药房结算核算等权限,从全局角度保证系统的运行规范性。各个模块根据角色权限来实施隔离,同样的功能,在不同的角色视角之下会有着差别化的操作范畴。该系统的功能结构如图4-2所示。

image 图4-2系统功能结构图

4.3 系统流程设计

4.3.1 系统总体业务流程设计

  用户按照分配的角色登录系统。采购人员根据进药计划提交审核,审核通过后执行药品入库操作,更新库存数量。药师接收到临床用药需求,核对库存之后办理出库,定期开展库存盘点,根据盘点结果发起调拨申请。管理员审批调拨申请,处理业务异常,药房财务结算。各个环节的数据可以实现实时同步,形成采购、入库、出库、盘点、调拨完整闭环。系统总体业务流程图如图4-3所示。

image 图4-3系统总体业务流程图

4.3.2 进药计划管理流程设计

  采购人员登录之后进入进药计划管理模块,查看药品库存预警信息,根据临床需求制定采购计划。填完药品编码、采购数量、采购单价等信息后提交计划,系统自动生成合计金额。计划进入审核环节,审核通过之后计划状态变为已审核,采购人员据此执行后续的入库操作。进药计划管理流程图见图4-4。

image 图4-4进药计划管理流程图

4.3.3 药品出库管理流程设计

  药师登录系统之后查看用药需求列表,选择需要处理的用药申请。系统根据需要的数量进行药品库存的校验,如果库存不足则会发出提醒药师调整出库数量或者暂缓处理。库存足够时药师填写出库信息,系统扣除对应药品的库存并产生出库记录。出库后用药需求状态变为已发药。药品出库管理流程图见图4-5。

image 图4-5药品出库管理流程图

4.3.4 药品盘点管理流程设计

  药师定时创建药品盘点任务,系统给出盘点单号。药师录入盘点日期,逐项填药品实物数量,系统把账面库存和实物数量做对比,算出盈亏差异。药师根据不同的情况填写盘点说明,然后上报盘点记录。盘点结果经审核之后,系统按照审核意见对账面库存进行调整,保证账实相符。药品盘点管理流程图如图4-6所示。

image 图4-6药品盘点管理流程图

4.3.5 药品调拨管理流程设计

  药师发现某一药品库存分布不均时发出调拨申请,填写调拨药品信息、调拨数量和调拨去向。申请提交之后由管理员进行审批,审批通过后系统从调出库房扣减库存,向调入库房增加库存,生成调拨流水记录。调拨过程中如果发现药品近效期或者质量问题,系统会将异常信息记录下来,供以后处理使用。药品调拨管理流程图见图4-7。

image 图4-7药品调拨管理流程图

4.4 数据库设计

  数据库设计使用关系型数据模型,用规范化理论把业务实体转换成二维表结构,用主键和外键约束来保证数据之间的关联完整性。关系型数据库的优点就是可以进行复杂的查询以及事务处理,保证多表操作时数据的一致性[18]。药品信息、库存变动、业务单据等主要数据都用MySQL进行持久化存储,数据库层面的唯一约束和检查约束从源头上杜绝了重复录入以及异常数据的插入。事务机制保证采购入库和库存更新的原子性,防止由于操作中断造成数据不一致的问题[19]。

4.4.1 概念设计

  药品信息实体主要是药品信息id、药品编码、药品名称、药品规格等属性。药品信息实体属性图如下图4-8所示。

image 图4-8药品信息实体属性图

  进药计划实体由进药计划id、采购单号、药品编码、药品名称等组成。进药计划实体属性图如图4-9所示。

image 图4-9进药计划实体属性图

  入库信息实体有入库信息id,入库编码,药品编码,药品名称等属性。入库信息实体属性图如下图4-10所示。

image 图4-10入库信息实体属性图

  用药需求实体由用药需求id、批次编码、药品编码、药品名称等组成。用药需求实体属性图如图4-11所示。

image 图4-11用药需求实体属性图

  出库信息实体主要是出库信息id、出库编码、药品编码、药品名称等。出库信息实体属性图如图4-12所示。

image 图4-12出库信息实体属性图

  药品盘点实体主要是由药品盘点id、盘点单号、药品编码、药品名称等组成。药品盘点实体属性图如图4-13所示。

image 图4-13药品盘点实体属性图

  药品调拨实体有药品调拨id、药品编码、药品名称、调拨数量等属性。药品调拨实体属性图如图4-14所示。

image 图4-14药品调拨实体属性图

  异常处理实体包含异常处理id、药品编码、药品名称、异常类型等属性。异常处理实体属性图如图4-15所示。

image 图4-15异常处理实体属性图

  药房结算实体由药房结算id、结算类型、收入金额、支出金额等组成。药房结算实体属性图如图4-16所示。

image 图4-16药房结算实体属性图

  药品分类实体主要是药品分类id、药品类型等属性。药品分类实体属性图如下图4-17所示。

image

图4-17药品分类实体属性图

  系统全局E-R图如图4-18所示。

image 图4-18系统E-R图

4.4.2 数据库表设计

  药品信息表主要用来存放药品的基本信息以及库存情况。主要包括药品信息id、药品编码、药品名称、药品规格等字段。表4-1为结果。

表4-1药品信息表

序号字段名类型长度是否非空是否主键备注
1 drug_information_id int 11 药品信息ID
2 drug_code varchar 64 药品编码
3 drug_name varchar 64 药品名称
4 drug_specifications varchar 64 药品规格

  进药计划表是采购人员制定的药品采购计划。含有进药计划id、采购单号、药品编码、药品名称等字段。表4-2为数据表。

表4-2进药计划表

序号字段名类型长度是否非空是否主键备注
1 intake_plan_id int 11 进药计划ID
2 purchase_order_number varchar 64 采购单号
3 drug_code varchar 64 药品编码
4 drug_name varchar 64 药品名称

  入库信息表主要是对药品入库验收情况进行登记。入库信息表由入库信息id,入库编码,药品编码,药品名称等组成。表4-3为数据表。

表4-3入库信息表

序号字段名类型长度是否非空是否主键备注
1 receipt_information_id int 11 入库信息ID
2 receipt_code varchar 64 入库编码
3 drug_code varchar 64 药品编码
4 drug_name varchar 64 药品名称

  用药需求表主要是记录临床科室提出药品使用申请。由用药需求ID、批次编码、药品编码、药品名称等组成。表4-4为结果。

表4-4用药需求表

序号字段名类型长度是否非空是否主键备注
1 medication_demand_id int 11 用药需求ID
2 batch_code varchar 64 批次编码
3 drug_code varchar 64 药品编码
4 drug_name varchar 64 药品名称

  出库信息表主要用来记录药品出库发放的记录。主要包括出库信息id、出库编码、药品编码、药品名称等字段。如表4-5所示。

表4-5出库信息表

序号字段名类型长度是否非空是否主键备注
1 issue_information_id int 11 出库信息ID
2 issue_code varchar 64 出库编码
3 drug_code varchar 64 药品编码
4 drug_name varchar 64 药品名称

  药品盘点表是记载药房库存盘点结果的表格。主要包含药品盘点id、盘点单号、药品编码、药品名称等字段。见表4-6。

表4-6药品盘点表

序号字段名类型长度是否非空是否主键备注
1 drug_inventory_id int 11 药品盘点ID
2 count_sheet_number varchar 64 盘点单号
3 drug_code varchar 64 药品编码
4 drug_name varchar 64 药品名称

  药品调拨表是记载药品在各个库位之间调配情况的表。包含药品调拨id、药品编码、药品名称、调拨数量等字段。表4-7为数据。

表4-7药品调拨表

序号字段名类型长度是否非空是否主键备注
1 drug_allocation_id int 11 药品调拨ID
2 drug_code varchar 64 药品编码
3 drug_name varchar 64 药品名称
4 transfer_quantity double 调拨数量

  异常处理表是药房运营过程中发生异常事件时所用到的表格。异常处理的id,药品编码,药品名称,异常类型等。表4-8为结果。

表4-8异常处理表

序号字段名类型长度是否非空是否主键备注
1 exception_handling_id int 11 异常处理ID
2 drug_code varchar 64 药品编码
3 drug_name varchar 64 药品名称
4 exception_type varchar 64 异常类型

  药房结算表是用来记载药房财务收支汇总情况的。主要包含药房结算ID、结算类型、收入金额、支出金额等。表4-9为实验结果。

表4-9药房结算表

序号字段名类型长度是否非空是否主键备注
1 pharmacy_settlement_id int 11 药房结算ID
2 settlement_type varchar 64 结算类型
3 amount_of_income double 收入金额
4 expenditure_amount double 支出金额

  药品分类表是用来保存药品分类层级信息的。主要包含药品分类id、药品种类等字段。如表4-10所示。

表4-10药品分类表

序号字段名类型长度是否非空是否主键备注
1 class_nameification_of_drugs_id int 11 药品分类ID
2 type_of_drug varchar 64 药品类型

第五章 系统实现

5.1 采购功能实现

5.1.1 药品信息管理功能实现

  采购人员利用药品信息管理模块来对药品的基本信息进行登记和维护。录入药品编码时系统自动校验唯一性,药品名称、规格、生产厂家等信息按照表单结构逐项填写,提交后数据存入数据库供其它模块调用。药品信息管理界面如图5-1所示。

image 图5-1药品信息管理界面

5.1.2 进药计划管理功能实现

  采购人员根据库存预警和临床需求来制订进药计划,填写药品编码、采购数量和单价之后生成采购单号。计划提交进入审核环节,审核通过后状态变更为已审核,采购人员据此开展后续的入库工作。进药计划管理界面如图5-2所示。

image 图5-2进药计划管理界面

5.1.3 入库信息管理功能实现

  药品到货后采购员根据采购单号调出相应计划,核对药品数量、规格后进行入库登记。系统会自动生成药品的入库编号,将药品的入库信息与进药计划相绑定,形成一个闭环的采购流程。入库信息管理界面图5-3。

image 图5-3入库信息管理界面

5.2 药师功能实现

5.2.1 药品信息管理功能实现

  药师登录系统后可以查看药品的详细信息,即药品的库存量、存放地点、有效期等重要信息。对药品信息变更的需求,药师用编辑功能提交修改申请,审核通过之后再更新到数据库中。药品信息管理界面如图5-4所示。

image 图5-4药品信息管理界面

5.2.2 用药需求管理功能实现

  药师接收到临床科室提出的用药需求后,会显示出来需要的药品规格、数量、开方医生等信息。药师核对信息之后判断需求是否有效,为之后的出库操作提供依据。用药需求管理界面如下图5-5所示。

image 图5-5用药需求管理界面

5.2.3 出库信息管理功能实现

  药师根据已经确认的用药需求进行出库操作,系统检验药品库存是否充足之后才能出库。药师出库编码、出库时间填完后提交,系统从库存里减去对应的库存数量,同时把需求的状态改成已经发药。出库信息管理界面如图5-6所示。

image 图5-6出库信息管理界面

5.2.4 进药计划管理功能实现

  药师可以查看进药计划列表以及审核状态,从而对采购进度进行跟踪,进而对日常出库做出相应的调整。对没有完成的采购计划,药师可以提出建议,帮助采购人员改进采购方案。进药计划管理界面如下图5-7所示。

image 图5-7进药计划管理界面

5.2.5 药品盘点管理功能实现

  药师定期发起药品盘点任务,系统自动生成盘点单号用于后序追溯。药师填记盘点日期之后逐项输入实物数量,系统自动计算出盈亏差额,药师将结果提交到盘点记录中。药品盘点管理界面如图5-8所示。

image 图5-8药品盘点管理界面

5.2.6 药品调拨管理功能实现

  药师发现药品库存分布不均时发出调拨申请,填写调拨药品、调拨数量和调拨去向。申请提交之后进入审批环节,审批通过之后系统完成库存转移并生成调拨流水。药品调拨管理界面如下图5-9所示。

image 图5-9药品调拨管理界面

5.3 管理员功能实现

5.3.1 药品分类管理功能实现

  管理员可以对药品的分类体系进行添加或者修改,也可以对药品的分类名称进行修改。分类数据更新之后前端界面立刻生效,药品信息管理模块按照分类结构显示药品列表。药品分类管理界面如下图5-10所示。

image 图5-10药品分类管理界面

5.3.2 药品信息管理功能实现

  管理员对药品信息做统一审核和监管,可以查看所有的药品详细资料,对异常数据执行下架或者修正操作。药品信息的增删改查权限按照管理员的身份来开放。药品信息管理界面如图5-11所示。

image 图5-11药品信息管理界面

5.3.3 药品盘点管理功能实现

  管理员可以对药师的盘点过程进行监督,可以查看盘点记录和盈亏情况。对盘点差异大的情况进行复核,保证库存数据的准确性。药品盘点管理界面如下图5-12所示。

image 图5-12药品盘点管理界面

5.3.4 药品调拨管理功能实现

  管理员审核药师提出的调拨申请,查看调拨的数量和方向是否合理。审批通过之后系统会自动完成库存转移,审批驳回时药师可以重新填写申请信息。药品调拨管理界面如图5-13所示。

image 图5-13药品调拨管理界面

5.3.5 异常处理管理功能实现

  管理员对药房运营中出现的近效期药品处理、库存差异调查、采购退货等异常情况进行处理。异常信息登记之后系统会记载处理的过程和结果,给后续业务改善给予支撑。异常处理管理界面如图5-14所示。

image 图5-14异常处理管理界面

5.3.6 药房结算管理功能实现

  管理员定时开展药房财务结算工作,对某一时间段内收入和支出进行汇总,产生结算报告。结算类型分为药品销售收入和采购支出,结算结果可以供财务部门核对使用。药房结算管理界面如下图5-15所示。

image 图5-15药房结算管理界面

第六章 系统测试

6.1 测试方法

  本系统测试过程用黑盒测试和白盒测试相结合的方式进行。黑盒测试主要是对功能模块的外在表现进行测试,测试人员根据需求文档制定测试用例,检验各个角色在各种操作场景下输出的结果是否符合预期。白盒测试主要针对核心业务逻辑代码进行路径覆盖,主要检验药品库存变动、事务回滚等重要环节的代码执行是否正确[20]。测试环境搭建在本地开发环境中,前端服务和后端服务都运行在一个节点上,数据库使用的是MySQL实例。测试执行时记录缺陷信息及修复情况,回归测试每次代码修改后都会重复执行已有的功能,防止新的代码对已有功能造成影响。

6.2 测试目的

  系统测试的主要目的就是保证软件实现和需求规格说明书一致。按照预定的测试用例进行执行,保证采购、药师、管理员这三个角色的功能模块可以正常使用,业务流程符合药房管理规范。测试过程是找出系统存在的错误和逻辑上的漏洞,包含数据一致性的错误、权限控制的漏洞、界面交互出错等各方面问题。测试结果可以用来评价系统的稳定性和可靠性,给系统正式上线提供依据。测试阶段得到的缺陷数据以及修复记录,给之后系统维护和功能改进给予参照素材。

6.3 测试用例

6.3.1 药品信息管理测试

  药品信息管理模块测试主要是对药品基础数据录入和维护功能进行检验。测试过程主要是对药品编码唯一性校验机制是否生效进行检验,药品名称、规格、生产厂家等信息的存储和更新是否正确,数据在各个角色视图中展示的一致性也加以考察。药品信息管理测试见表6-1。

表6-1药品信息管理测试用例表

测试内容测试步骤预期结果实际结果
药品信息录入 填写药品信息并提交 系统保存数据并返回成功提示 符合预期
药品编码重复校验 录入已存在编码的药品 系统提示编码重复无法提交 符合预期
药品信息修改 修改已存在药品信息并保存 数据库记录同步更新 符合预期

6.3.2 进药计划管理测试

  进药计划管理模块测试主要检验采购计划由拟定到审核的全部过程。检查计划信息提交之后数据是否能够持久化、审核状态变更逻辑是否正确、计划与后面入库操作之间的关联是否建立。进药计划管理测试见表6-2。

表6-2进药计划管理测试用例表

测试内容测试步骤预期结果实际结果
进药计划提交 填写采购单号与药品信息后提交 计划状态显示待审核 符合预期
计划审核通过 管理员审核通过计划 计划状态变更为已审核 符合预期
计划审核驳回 管理员驳回计划并填写理由 计划状态变更为已驳回 符合预期

6.3.3 入库信息管理测试

  入库信息管理模块测试主要是对药品入库流程的完整性以及数据的一致性进行检验。对入库操作根据采购单号正确关联计划、入库登记后药品库存数量是否正确增加、入库记录和计划状态是否同步更新进行测试。入库信息管理测试见表6-3。

表6-3入库信息管理测试用例表

测试内容测试步骤预期结果实际结果
入库登记执行 依据采购计划录入入库信息 系统生成入库编码 符合预期
库存数量更新 完成入库登记后查看库存 药品库存数量正确增加 符合预期
入库记录关联 入库完成后查看关联计划 计划状态关联入库记录 符合预期

6.3.4 用药需求管理测试

  用药需求管理模块测试是对临床用药申请处理逻辑的测试。测试过程中关注需求信息提交之后的状态流转,需求和出库操作的衔接是否顺畅,需求数据在不同的药师账号之间是否可以被看见。用药需求管理测试结果如表6-4所示。

表6-4用药需求管理测试用例表

测试内容测试步骤预期结果实际结果
用药需求提交 录入需求信息后提交 需求状态显示待处理 符合预期
需求信息核对 药师查看需求列表 需求详细信息正确展示 符合预期
需求状态更新 完成出库后查看需求 需求状态更新为已处理 符合预期

6.3.5 出库信息管理测试

  出库信息管理模块测试主要是检验药品出库业务流程中各个方面的执行是否符合业务规则。测试过程中检查库存不足时系统给出的提示是否正确,出库登记后的库存减少是否正确,出库记录和用药需求之间的关系是否正确。出库信息管理测试结果如下表6-5所示。

表6-5出库信息管理测试用例表

测试内容测试步骤预期结果实际结果
出库申请提交 依据用药需求填写出库信息 系统生成出库编码 符合预期
库存不足处理 对库存不足的药品发起出库 系统提示库存不足 符合预期
库存数量扣减 完成出库后查看药品库存 库存数量正确减少 符合预期

6.3.6 药品盘点管理测试

  药品盘点管理模块测试主要是检验库存盘点流程是否完整,盈亏处理逻辑是否正确。测试过程主要考察盘点单号生成机制,实物数量录入之后系统计算出的盈亏结果是否正确,盘点审核之后库存调整是否生效。药品盘点管理测试见表6-6。

表6-6药品盘点管理测试用例表

测试内容测试步骤预期结果实际结果
盘点任务发起 创建盘点任务并生成单号 系统生成唯一盘点单号 符合预期
盈亏差异计算 录入实物数量后提交 系统计算盈亏差异 符合预期
盘点审核执行 管理员审核盘点记录 库存依据盘点结果调整 符合预期

6.3.7 药品调拨管理测试

  药品调拨管理模块测试主要是对库存调配流程的规范性、数据的一致性进行检验。测试过程中检查调拨申请提交之后的审批流转,调拨通过之后库存转移是否准确,调拨记录是否完整保留供后续追溯。药品调拨管理测试表6-7。

表6-7药品调拨管理测试用例表

测试内容测试步骤预期结果实际结果
调拨申请提交 填写调拨信息后提交申请 申请状态显示待审批 符合预期
调拨审批通过 管理员审批通过调拨申请 调出库存减少调入增加 符合预期
调拨记录生成 调拨完成后查看记录 系统生成调拨流水 符合预期

测试结论

  对药品信息管理、进药计划管理、入库信息管理、用药需求管理、出库信息管理、药品盘点管理、药品调拨管理七大部分的测试用例进行执行,全部按照计划完成。药品信息录入时编码唯一性校验生效,重复编码不能提交。进药计划提交之后状态变为待审核,管理员审核通过之后状态会自动更新。入库登记之后药品库存数量正确地增加了,出库操作之后药品库存数量就会随之减少。库存不足时系统提示无法出库,盘点盈亏计算和实物录入结果一致。调拨申请提交之后经过审批完成库存转移,所有的操作记录都可以被追踪到。测试结果说明各个模块的功能实现满足预期。

项目分享:大家可自取用于参考学习,获取方式可私信哦!

赞(0)
未经允许不得转载:171主机测评 » springboot药房管理系统05415-计算机课程设计、毕业设计
分享到: 更多 (0)

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址