APP下载

基于MVC架构的个人健康信息管理系统设计与实现

2018-04-18贾顺贺陈建飞陈古运

计算机应用与软件 2018年3期
关键词:服务提供者信息管理系统服务器

贾顺贺 陈建飞 陈古运 周 熠 张 胜

(南京邮电大学光电工程学院 江苏 南京 210046)

0 引 言

随着社会的发展,人们日益增强对个人健康的重视,特别是在美国和日本这样的发达国家。1973年,美国通过了健康维护法案,该法案使得健康维护和管理方面有了法律依据。在日本,各种先进的健康仪器和健康系统的开发也足以说明日本对个人健康的日益重视。虽然国内对健康信息化的研究和发展起步较晚,但同样发展迅速。2009年《健康档案公用数据元(试行)》的编制对我们个人健康信息管理的开发和逐步推广奠定了很好的理论和政策的保障。《健康档案公用数据元(试行)》旨在促进健康和医疗信息的数据共享和数据库之间的数据同构化,以便规范化管理系统的开发和设计[1]。

目前国内大多使用国外的健康管理系统产品,然而这些系统大多应用于医院,康复中心等医疗机构,其中面向大众的产品少之又少。并且这些系统功能单一,使用逻辑复杂,还无法满足用户的健康咨询及建议需求,所以并非真正意义上的个人健康信息PHR(Personal Health Record)管理系统。个人健康信息管理系统作为一种新兴的医疗信息管理模式,其主要目的是使用户能自行管理与自身健康状况密切相关的健康数据和医疗数据。

本文针对个人对管理自身健康数据和医疗数据的需求,对个人健康信息管理系统进行了需求分析;再根据分析报告开发了一个面向大众、功能丰富的个人健康信息管理系统;最后进行了系统运行效果验证。该系统采用安全可靠的信息技术,不仅拥有及时、准确、可靠的信息传输和数据存储能力,同时具有较高的可扩展、可移植和易维护等特性。

1 系统需求分析

本文将个人健康信息管理系统用户分为普通注册用户、服务提供者注册用户、系统管理员。除基本的用户注册、登录、基本信息维护外,普通注册用户作为系统主要服务对象还需要系统为其提供健康档案管理、健康数据管理、健康服务管理等功能模块。服务提供者注册用户是指能为普通注册用户提供信息咨询、健康评估、指导建议等内容服务的提供者,例如医生、护理人员和康复指导员等。系统管理员主要由用户信息管理和角色权限管理两个功能模块组成[2-3]。功能分配如图1所示。

图1 系统功能分配图

1.1 普通注册用户功能需求

1.1.1健康档案管理

个人健康信息管理系统作为一个PHR的管理平台需要为个人用户维护最基本的和完善的健康档案信息。健康档案应该符合国家标准、信息覆盖全面、实现全生命的特性管理[4]。

1.1.2健康数据管理

注册用户除了可以查询自己的健康档案信息外,还可以通过系统维护自己的个人基本资料、查询诊疗信息等。一般来说,整个平台的核心任务是数据存储。个人健康信息管理系统需要把汇集各地方的个人健康信息数据资源到该平台上,然后实现健康数据的管理、存储与共享。由于系统之间的不同使得健康信息数据是异构的,因此系统需要统一标准对健康数据进行重构后再存储。

1.1.3健康服务管理

注册用户可以查找到已注册服务提供者,同时系统还应为用户提供咨询、预约、权限授予等功能。例如,当用户查找并预约到医疗机构就诊时,可以通过管理系统授权医务人员调阅健康档案、查阅过往诊疗信息、制定健康计划、评估健康风险等权利,从而使得医务人员可以为注册用户提供更好的医疗服务。

除核心功能中,个人健康信息管理系统还为普通注册用户提供了健康知识科普、就医信息推荐、投诉与建议等周到细致的服务。

1.2 服务提供者注册用户功能需求

1.2.1信息咨询

当普通注册用户向服务提供者发送咨询,服务提供者接收到咨询信息后可以查看普通注册用户的性别、年龄、身高、体重、血压等基本信息用于对咨询做出基本反馈或建议。服务提供者反馈咨询信息后可以做出相应信息记录以便提高日后对同一普通注册用户的反馈效率。

1.2.2健康评估

服务提供者在接待普通注册用户后,登录系统并完成来访者基本信息录入和来访原由,并可通过使用健康评估功能对来访者进行评估诊断。健康评估主要包括:现今健康状态、健康发展趋势和愈合恢复能力等评估内容。

1.2.3指导建议

服务提供者在完成病因诊断和健康评估后,可通过使用健康指导功能,针对性的进行健康指导。如饮食注意事项、休息睡眠注意事项及其他可能事项。

1.3 系统管理员功能需求

1.3.1用户信息管理

系统管理员登录后可对注册用户信息进行管理,包括用户基本信息的修改、用户意见反馈、垃圾数据清理和服务提供者信息认证等。

1.3.2角色权限管理

系统管理员登录系统后,使用查找功能,可以查询服务提供者账号、密码、权限级别等信息;使用授权功能,可以对服务提供者账号进行权限更改;使用删除功能,可以对服务提供者账号进行删除等操作。

除基本功能性要求外,个人健康信息管理系统作为一个服务门户网站应该具有以下特性:

可靠性:在系统运行期间,应当保证用户数据安全,一旦出现数据操作异常,应当及时做出数据回滚、备份恢复或垃圾数据清理等操作予以补救。

可扩展性:Web 应用应当可以为其他平台客户端提供访问接口,并实现数据与业务控制分离,保证数据导入不会影响业务。

易维护性:系统设计开发过程中应遵循高内聚低耦合的设计原则,并提供数据迁移、导入等功能,以保证后期维护便捷。

2 系统总体设计

2.1 系统技术架构

为保证系统后期的可扩展性以及可维护性,本系统采用基于J2EE 平台的MVC模式开发,达到降低应用程序耦合性的目的。MVC,即模型、视图、控制器的首字母,它把应用程序抽象为功能截然不同的三部分[5]。MVC结构如图2所示。

图2 MVC结构图

模型层主要负责封装数据、提供接口和执行操作等。模型层主要作用是通过控制层为多个视图提供数据。

视图层主要负责将模型层的数据显示给用户,并实现用户与系统的交互。

控制层主要负责连接视图层与模型层。用户在界面中进行的操作,如点击按钮、输入文本等,控制层会按照设定的规则将用户输入的信息写入模型层,或者修改模型层的数据,另外决定呈现给用户哪些界面。

使用 MVC 模式的目的是实现系统代码的模型,控制器和视图分离。模型层与视图层分离的使得系统拥有不同的表达形式,其中一层发生需要改动时,其他各层基本不需要做出大面积修改,这样就可以增加管理系统的可维护性。

2.2 SSH框架实现MVC架构

下面介绍运用SSH 框架实现 MVC 架构的个人健康信息管理系统的实现过程及方法。使用Struts、Spring和Hibernate 集成SSH框架分别实现表现层、业务层和持久层。分层设计方法的使用可以使每层中只集中解决特定的问题,有利于最大限度发挥框架的作用,同时降低层与层间的耦合关系。系统结构如图3所示。

图3 系统结构图

系统工作流程描述如下:

客户端发出Http 请求,该请求将在系统中经过一系列的过滤器(Filter)到达Struts 中的FilterDispatcher 控制器。FilterDispatcher控制器再把请求交给ActionProxy代理进行处理。代理通过Struts.xml配置文件找到需要调用的Action类。在调用Action的过程中,还会伴有相关拦截器调用。最后Action Servlet将 Http请求一次转发给其他相关页面实现响应。

Spring主要负责类的实例化,包括Struts 的中 Action、Service、DAO 类和Hibernate 数据源等类,同时还有添加事务处理等功能[8]。Spring利用 Spring的控制反转IoC(Inversion of Control)容器整合表现层、业务层和持久层,使用面向方面编程AOP(Aspect-Oriented Programming)实现DAO类的事务控制。

作为一个用户服务型系统,数据的持久化( Persistence) 是整个系统中最为关键的一个环节。持久化是把数据保存的存储设备中,并将数据使用者和数据实体相关联。Hibernate 是实现持久层的框架,Hibernate通过Configration类解析hibernate.cfg.xml配置文件及映射文件中的信息。同时应用这些信息生成一个SessionFactory工厂对象用于生成Session对象。通过Session对象的get()、load()、save()和update()等方法,对持久化对象PO(Persistent Object)进行加载、保存、更新、删除等操作。在查询的情况下, Session对象将生成一个Query对象执行查询操作。最后如果没有异常,负责事务的Transaction对象将提交这些操作结果到数据库中,完成持久化过程[8]。

2.3 数据库设计与创建

2.3.1用户信息(users)数据表设计

作为健康类服务系统,系统开发过程中把血型、体重、身高等最为基本的健康数据作为基本信息进行考虑。因此用于存储用户基本信息资料的数据表包括如表1所示数据。

表1 users信息表

2.3.2用户信息(users)数据表创建

考虑到系统后期维护、扩展和升级操作,在创建数据时使用MySQL的标准SQL语句的方式创建数据库。同时为了更好地兼容中文字符,数据库采用 utf-8 编码。

创建health数据库:

DROP DATABASE IF EXISTS health;

CREATE DATABASE health DEFAULT CHARACTER SET utf8;

创建users数据表:

USE health;

DROP TABLE IF EXISTS user;

CREATE TABLE user

(

uid bigint NOT NULL AUTO_INCREMENT,

uname VARCHAR(48) UNIQUE KEY,

name VARCHAR(48) NOT NULL,

password VARCHAR(48) NOT NULL,

sex VARCHAR(24) NOT NULL,

birthday VARCHAR(24) NOT NULL,

weight VARCHAR(24),

height VARCHAR(24),

bloodtype VARCHAR(24),

phone VARCHAR(24) UNIQUE KEY,

phone2 VARCHAR(24),

diploma VARCHAR(24) ,

email VARCHAR(48) UNIQUE KEY,

address VARCHAR(48) NOT NULL,

marry VARCHAR(24) ,

createtime VARCHAR(24) NOT NULL,

role VARCHAR(24) NOT NULL,

illhistory VARCHAR(48) ,

note VARCHAR(128),

CONSTRAINT pk_user PRIMARY KEY (uid)

);

2.3.3单点登录的实现

单点登录SSO(Single Sign On)是在多个应用系统中,用户仅需一次登录就可以访问其他所有授信应用系统的登录机制[9]。开发过程中一般使用Session或者Cookie来保存用户状态,然后Session容易丢失和引起并发问题,Cookie则容易暴露用户信息。所以本系统开发过程中使用Redis来解决以上问题。

登录的处理流程如图4所示:用户在登录页面提交用户名和密码。系统对用户名和密码进行验证,登录成功后生成token,并把用户信息保存到Redis。保存过程中Key就是token,value就是use对象转换成json。然后使用String类型保存Session信息,可以使用“前缀:token”为key,并设置key的过期时间来模拟Session的过期时间。最后把token写入Cookie中,Cookie在关闭浏览器时失效。

图4 登录处理流程图

当已登录用户发出页面请求时,系统从Cookie中取出token,并在Redis中进行查询。如果查询到token对应用户信息则返回请求页面,否则跳转到用户登录界面。

3 系统测试

系统测试是系统开过的最后一步,也是保证系统质量和可靠性的关键步骤,本系统在开发过程中进行了单元测试和功能性测试。单元测试主要测试了代码逻辑和基础功能模块的正确性。功能性测试主要通过人工模拟用户使用过程,进行功能完整性测试,包括Cookies测试、链接测试、表单测试和数据库测试等。最后,在保存功能性完整前提下进行了性能测试。

3.1 测试环境

测试环境如表2所示。

表2 测试环境

3.2 性能测试

在系统性能测试过程中,利用系统响应时间和丢包率两个指标来对系统的并发性能、响应客户的性能进行测试。限于网络环境和服务器性能对性能指标有较大影响,测试过程中的网络环境选定为学校内部网络,服务器为拥有全新系统的单机服务器和具有两个单机服务器的集群,测试工具为Mercury LoadRunner。利用Mercury LoadRunner制造并发访问,对单服务器环境下的系统和具有两个服务器的集群环境下的系统进行性能测试,并对记录数据进行整理得到结果如图5、图6所示。

图5 单服务器环境测试结果

图6 集群环境测试结果

由测试结果可以看出,在单服务器环境下当并发量为400时系统响应时间和丢包率开始有明显变化,在具有两个服务器的集群环境下当并发量为700时系统响应时间和丢包率开始有明显变化。所以在单机服务器环境下最接近该系统的并发服务数量应为400,在具有两个服务器的集群环境下最接近该系统的并发服务数量应为700。测试结果表明,该系统性能能够满足预计需求,在多系统环境下可以复用,通过后期扩展可进一步提升性能。

最后通过更换MySQL数据库为PostgreSQL数据库后重复上述测试,测试结果同更换前测试结果基本一致,进一步说明系统同时具有较好的可移植性和易维护性。

3.3 运行效果图

图7是部分关键界面运行效果图。

图7 用户主界面

4 结 语

本文通过分析国内外目前健康管理的现状,结合我国国情确定设计并实现了一个基于MVC架构的个人健康信息管理系统。本文通过对系统的功能需求进行分析后,把管理系统的用户分为普通注册用户,服务提供者注册用户和系统管理员。同时根据用户类别细化了功能性需求,以便后期的功能开发和测试。为了使模块划分方面完全满足高内聚、低耦合的特点,在系统架构设计和开发过程中使用了MVC架构思想。Struts、Spring和Hibernate三大主流框架的使用也极大地提升了系统在可维护性和扩展性。最后对各个模块进行了全面单元测试、功能性测试和性能测试,以保证系统能够满足用户在功能上和性能上的需求。

[1] 中华人民共和国卫生部卫生信息标准专业委员会.健康档案公用数据元标准(试行)[S].2009.

[2] 冯丹,周游,姚远,等.我国居民健康档案基本数据集数据元目录编制[J].中国卫生信息管理杂志,2012,9(1):71-74.

[3] 中华人民共和国国家卫生和计划生育委员会.基于健康档案的区域卫生信息平台建设指南( 试行 )[EB/OL].http://www.moh.gov.cn/cmsresources/wsb/cmsrsdocument/doc4513.doc.

[4] 孙强.档案利用中的个人隐私保护问题探析[J].档案学研究,2014(4):40-43.

[5] Li H,Zhou M,Xu G J,et al.Aspect-Oriented Programming for MVC Framework[C]//International Conference on Biomedical Engineering and Computer Science.IEEE,2010:1-4.

[6] 林子雨,邹权,赖永炫,等.关系数据库中的关键词查询结果动态优化[J].软件学报,2014,25(3):528-546.

[7] Chen W.Enterprise information management system based on J2EE and MVC mode[C]//Proceedings of the 9th International Symposium on Linear Drives for Industry Applications,2014,3:427-433.

[8] 彭霞,朱萍.MVC模式高校科研管理平台构建方案[J].计算机技术与发展,2013(4):249-253.

[9] 陈渌漪,管小清.单点登录(SSO)系统的设计与实现[J].电脑知识与技术:学术交流,2008,3(7):1457-1459,1466.

[10] 黄少滨,杨欣欣,申林山,等.高阶异构数据模糊联合聚类算法[J].通信学报,2014,35(6):15-24.

[11] 丁亮,许舒人.基于SSH框架的Java代码自动生成[J].计算机系统应用,2014,23(9):72-77.

[12] 徐小龙,刘笑笑.面向移动计算环境的混合式数据同步机制[J].通信学报,2016,37(8):1-12.

猜你喜欢

服务提供者信息管理系统服务器
“红旗规则”视域下网络服务提供者版权保护法定注意义务认定研究*
三维可视化信息管理系统在选煤生产中的应用
信息管理系统在工程项目管理的应用
食品检测实验室信息管理系统应用现状
网络服务提供者的侵权责任研究
网络服务提供者的侵权责任研究
网络服务提供者“应知规则”的再厘定及适用探讨
计算机通信技术在信息管理系统中的运用
PowerTCP Server Tool
BlackJumboDog