基于PHP 的PEAR 代码库对医信通平台的设计与实践
2015-08-26王连根任慧朋
王连根,任慧朋,周 睿
(1. 解放军第九八医院信息科 浙江 湖州 313000;2.南京政治学院军事信息管理系 上海200433)
医院信息系统是利用电子计算机和通讯设备, 为医院所属各部门提供病人诊疗信息和行政管理信息的收集、存储、处理、提取和数据交换的能力,并满足所有授权用户的功能需求。 医院的目标、任务和性质决定了医院信息系统是目前企业级信息系统中最复杂的类型之一。 医疗卫生行业信息化建设起步较早,90 年代初, 随着网络技术的日益成熟和医院管理的迫切需要,于是一些医院依靠自己的计算机技术人员开始开发本院的信息系统,那时的信息系统主要应用于医院的收费管理和物资管理方面,以减少漏费、跑费和物资积压等现象。 随着医院信息系统的不断推广和信息化步伐的加快,信息系统开发项目日益增加,软件传统开发模式下的一些不足问题比较突出,主要表现为:一是开发力量分散,一般1~2 个人负责一个软件开发项目;二是重复开发项目多,软件通用性较差,一般重复率可达70%左右;三是没有统一开发平台,团队协作无法展开,导致版本控制与管理困难,开发周期长,开发效益低。 因此,两年前笔者有一个想法油然而生:为中小型医院提供一个B/S(Browser/Server)三层架构的智能信息系统通用开发平台(简称医信通),变得十分迫切。
1 设计思想
为了解决传统开发模式存在的这些问题,改善信息系统的易开发性、易扩充性和易维护性,笔者所在医院的开发团队结合长期从事医院管理与医院信息系统开发的经验,对中小型医院信息系统的共性特点进行分析研究[1],把应用软件分为设计、编程、测试、发布、维护、服务等6 个环节,对软件开发中的各类人员、各项技术、各种资源实行一体化管理,设计一个集角色管理、用户管理、模块管理、数据表管理等公用模块为一体,并为二次开发者提供专用模块管理的医信通平台。 通过这个医信通平台不仅像是建立了一条现代化的软件开发生产流水线,而且各类人员可以在同一个医信通平台并行工作,只是因角色不同而面对不同的界面和功能,每个角色看似有自己独立的虚拟软件环境, 可以各行其事各负其责,使软件开发管理发生深刻变化,能极大地提高软件开发与维护的质量、速度和效益。
2 设计架构
2.1 MVC 框架介绍
MVC (Model View Controller), 是模型 (model)-视图(view)-控制器(controller)的缩写,这种模式用一种业务逻辑、数据、界面显示分离的方法组织代码,将业务逻辑聚集到一个部件里面,而且界面和用户围绕数据的交互能被改进,个性化定制而不需要重新编写业务逻辑[2]。 MVC 开发模式是现阶段主流的项目开发模式之一, 可使整个项目的各个层次独立出来,这样开发人员和美工人员可以同步开发,也为日后项目的功能扩展与维护提供极大方便。 本文以国产开源的PHP 语言的MVC 框架,实现对医信通平台的设计,如图1 所示。
图1 MVC 模式架构示意图Fig. 1 Schema diagram of MVC model
2.2 PHP 语言
PHP 即 超 文 本 预 处 理 器 ( 英 文 名:Hypertext Preprocessor),是一种通用的公开源代码的脚本语言,运行于WEB 服务端,具有很强的跨平台运行、执行速度快、占用资源少的特点。 近年来,由于其强大的表单处理功能和对多种数据库广泛支持,逐渐向应用软件领域扩展,目前绝大多数医院选择了Oracle 来支持关键应用, 我们正是利用PHP 提供的从Web 充分访问Oracle 的有力手段, 在医信通平台开发中达到PHP 与Oracle 数据库的完美结合[3]。
2.3 PEAR 代码库
PEAR 是PHP 扩 展 与 应 用 库 (the PHP Extension and Application Repository)的缩写,它是PHP 面向对象扩展及应用的一个代码库,Stig S. Bakken 在1999 年创立了PEAR 项目。对于开发者来说,如果每一次开发PHP 程序,从无到有都要完全靠自己来编写的话, 虽然可以锻炼程序编写能力,但效率太低,成本也太高了。 若一些常用的功能可以用代码库的方式来处理,将可以为开发者解决许多困难,因此引用代码库的开发方式已经渐渐成为一种趋势。 PEAR 就像是已经针对你的需求而准备好了预制件,你只要运用创意将它们组合起来就可以了。 我们在PHP 开发医信通平台过程中引入PEAR,不仅大幅缩减撰写程序代码的工作量和时间,而且用简单的方法就得到许多強大的动态网页功能[4]。 例如PEAR其中的一个包PEAR::DB 就很受欢迎, 我们用它编写出适用于Oracle、MySQL 等脚本,增强了扩展性和灵活性。
3 设计过程
3.1 平台开发环境
平台的具体开发环境,如表1 所示。
表1 平台开发环境Tab.1 Environment of platform development
3.2 模块功能的设计与实现
通过医信通平台的设计思想和需求分析,平台根据功能模块可划分为公用模块和专用模块,公用模块主要包括角色管理、用户管理、模块管理、数据表管理等模块,专用模块是指根据业务功能创建的个性化功能模块。 在开发信息系统时,只要创建不同业务功能的专用模块,再通过平台的公用模块管理确定角色、用户权限等,对专用模块实现管理并与公用模块智能组合,就快速形成不同的信息系统。 平台主界面设计成一个动态的网页,导航条主要由公用模块与专用模块的栏目菜单组成,用户通过不同的帐号登录时,根据该用户的角色权限生成一个动态网页: 当用户有管理权限时,就展现一个管理平台;登录用户没有管理权限而只有业务功能模块权限时,就展现一个医院信息系统界面给用户。
3.2.1 角色管理
角色管理模块主要定义角色的操作权限。 单击“增加角色”,输入角色名称,再单击“权限设置”文本框,选择相应的权限后增加角色完成。 对已有角色,还可编辑或删除操作。
3.2.2 用户管理
用户管理模块主要定义用户的帐号与角色。 增加用户窗口显示,如图2 所示。
3.2.3 模块管理
模块管理主要用于根据业务功能增加专用模块,并定义显示的菜单栏。 在增加功能模块窗口,输入模块名称、执行页面等即增加模块完成。
3.2.4 数据表管理
根据显示格式要求,事先定义设置所要查询表(已建好的Oracle 表)的结构及参数,包括指定表的英文名、中文名,字段的英文名、中文名、宽度,以及默认显示哪些字段。
图2 用户管理界面Fig. 2 Interface of users management
4 实现效果
借助于医信通平台开发医院信息系统, 实际上是二次开发者通过创建个性化功能模块和模块智能组合而快速形成信息系统的过程。 下面结合《医院高值耗材管理系统》的入库管理模块开发实例,简要说明开发过程。 系统运行主界面,如图3 所示。
图3 系统运行主界面Fig. 3 Main interface of system running
运行模块管理后,单击“增加功能模块”,在增加功能模块窗口, 录入模块名称 “入库管理”、 执行页面“mtrl_import.php”等。保存后增加模块完成[5]。根据需要可任意定义下级模块及菜单的级别深度。 高值耗材入库单录入后,界面显示如图4 所示。
图4 高值耗材入库单显示界面Fig. 4 Interface of warehouse warrant of high-value consumable
5 结束语
当今医院信息系统的应用规模与复杂程度史无前例,传统的软件开发模式的瓶颈逐步显现。 该医信通平台自从两年前形成雏形以来,我们边开发边完善,利用它已经成功开发了《医院高值耗材管理系统》等系列软件,实践证明,该医信通基本满足了中小型医院信息系统通用开发和跨平台的需求,达到了缩短软件开发周期、降低软件服务成本的目的,使信息系统的开发更安全、更高效,从而极大地提高了中小型医院信息系统的开发与维护效率[6]。
[1] 张昌明,朱红. .NET技术在医院信息系统中的应用研究[J].医学信息学杂志,2013(5):28-30.
ZHANG Chang-min, ZHU Hong, Research on application of.Net technology in the HIS [J].Journal of Medical Informatics,2013(5):28-30.
[2] 任凤仙,李强,张振华. 利用PHP的MVC框架开发电子书库的设计实践[J].电子设计工程,2014(16):25-27.
REN Feng-xian,LI Qiang,ZHANG Zhen-hua.Design practice with the MVC framework of PHP to develop E-book stack room [J].Electronic Design Engineering,2014(16):25-27.
[3] 魏秋红.基于应用服务复用开发平台的CMS研究与实现[J].计算机与数字工程,2013(1):151-154.
WEI Qiu-hong.Study and implementation of application service reuse development platform-base content management system[J].Computer&Digital Engineering,2013(1):151-154.
[4] 王德广,张军卒,王超. 基于数据字典的通用开发平台的研究[J].微型电脑应用,2010(5):19-22.
WANG De-guang,ZHANG Jun-zu,WANG Chao.Research on common development platform -base data dictionary [J].Microcomputer Applications,2010(5):19-22.
[5] 李尤丰.工程类系统通用开发平台的研究与设计[J].计算机技术与发展,2013,23(2):162-164.
LI You-feng.Research and design of an integrated development platform of project system [J].Computer Technology and Development,2013,23(2):162-164.
[6] 陈丽欣,张荣霞,张昭.C/S与B/S混合软件体系结构在医院信息系统设计中的应用[J].医学信息,2010(6):1584-1585.
CHEN Li-xin,ZHANG Rong-xia,ZHANG Zhao.Application of C/S and B/S hybrid architecture in hospital information system[J].Medical Information, 2010(6):1584-1585.