医院短信平台的设计与开发
2014-10-21瞿怀荣柴守霞王春雷王德红
瞿怀荣 柴守霞 王春雷 王德红
摘要:目前,手机短信平台在国内各行业已有较广泛的应用,并取得了良好的效果。同样,医院信息系统发展到今天,若要实现全面的数字信息化,也需要与短信应用相结合。本项目利用Java相关技术构建了医院短信平台,实现了将医院最新的动态信息定时发送到相关部门人员手机上。
关键词:短信平台;医院信息化;Java;数据库
中图法分类号:TP393
医院信息系统(Hospital Information System,HIS),亦称“医院管理信息系统”(以下简称HIS),是指利用计算机软硬件技术、网络通信技术等现代化手段,对医院及其所属各部门的人流、物流、财流进行综合管理,对在医疗活动各阶段产生的数据进行采集、储存、处理、提取、传输、汇总、加工生成各种信息,从而为医院的整体运行提供全面的、自动化的管理及各种服务的信息系统。
当代社会,随着医院规模的扩大,信息化成度的逐渐提高,如何将信息系统与医院管理协同发展,创新医疗服务的模式,从而全面改善医疗卫生机构的服务能力和水平,成为我们面临的新的问题。在医院管理中,HIS系统起着越来越重要的作用, 医疗卫生管理对信息系统的要求也越来越高,新医改将医疗卫生信息化建设确定为医疗卫生改革的重要支柱之一。
本文所讨论的课题与HIS系统有密切的联系,利用手机短信构建了医院短信平台,实现了将医院最新的动态信息定时发送到相关部门人员手机上,方便医院领导作出医院的运营决策,从而提高医院的核心竞争力,带来很好的社会效益,为医院的持续发展打下了基础。
1 系统分析与设计
1.1 需求分析
“医院短信平台”主要有以下几个功能需求:用户管理、变量管理、电话号码维护、发送任务计划、生成短信内容、发送历史记录等。下面分别对系统各需求模块进行描述:
用户管理:管理员可以选择相应的部门进行人员的修改,并为人员赋予相应的角色,从而达到控制用户的权限。
变量管理:管理员可以控制生成短信的内容和格式,包括变量名、生成结果的前后缀,最终反映到接收人员的手机终端上。
电话号码维护:管理员通过可视化界面可以直接对短信接收人员的信息(如手机号)进行修改、删除和添加,改动之后系统实时更新数据库中的数据。
发送任务计划:该模块可以定义生成短信和发送短信的时间和規则(如短信发送的周期是一天还一个星期,开始时间和结束时间),并填上相应的任务类,系统会在指定的时间运行相应的任务。
生成短信内容:管理员可以查看生成短信的内容,服务器程序在指定的时间从数据库中获取相关数据,并按照一定的格式生成短信内容,最后将要发送的内容插入数据库表中由发送短信程序进行发送。
发送历史记录:管理员可以查看短信的发送历史记录,可以根据发送状态方便地查看短信是否发送成功。
1.2 短信发送系统模块设计
由于本系统主要的功能是短信的发送,所以下面仅对短信发送模块的设计进行论述。主要包括生成短信模块、发送短信模块、获取数据模块和定时模块。短信平台发送模块结构见图1。
1.3 系统功能结构
系统功能结构主要分为两部分,一部分是医院内部网络,另一部分是短信运营商网络,通过互联网相连接。系统功能结构图见图2。
短信系统的整体网络图如上图所示,医院内部系统在整个方案中的位置如上图中矩形框部分所示,本系统所处的位置是矩形框中的“短信接口程序”部分,内部所有的短信应用系统只要对接口数据库进行数据提取,就能完成收发短信的工作。
2 系统实现
本节主要讨论“医院短信平台”的实现部分,将就其中几个主要模块的实现进行论述,分别是短信变量管理模块、电话号码维护模块、发送任务计划模块。
2.1 变量管理模块
此模块的主要功能是控制生成短信的内容和格式,包括变量名、生成结果的前后缀,最终反映到接收人员的手机终端上。变量管理模块见图3。
上图中的结果是连接到医院HIS中SQL Server数据库中查询得到,SQL语句中填写的即相应的查询语句。其次,管理员还可以添加、删除、修改相应的变量,以满足不同医院对短信格式有不同要求的需求。表中的信息保存在Oracle数据库表SMS_VARIABLE中,后台程序通过读取表中的信息执行SQL语句,来获取短信中数据的结果。由于这里使用到了SQL Server和Oracle两个数据库,有必要说明一下它们之间的联系。请参见图4。
在程序中的实现方式是创建两个数据库连接对象,分别对Oracle数据库和SQL Server数据库进行操作。SQL Server数据库连接对象获取短信结果,Oracle数据库连接对象将获取到的结果存放在Oracle数据库SMS_VARIABLE中,插入到短信发送表。
2.2 电话号码维护模块
电话号码维护模块主要的功能是添加、修改、删除短信接收人员,通过可视化的界面即可完成操作。电话号码维护模块见图5。
联系人的信息保存在SMS_TELEPHONE表中,后台程序通过读取表中联系人的手机号码,传入到短信猫发送功能函数的参数中,从而达到发送的目的。
2.3 发送任务计划模块
短信发送任务计划模块分为生成短信任务和发送短信任务,两者都运用了相关的定时技术(后面介绍),但两者的时间触发器的规则不一样。本系统中生成短信的时间是每天早上4:30分,发送短信的时间是每天早上7:30分,到了设定的时间之后相应的短信任务就会自动运行。发送任务模块见图6。
生成短信任务:短信的生成主要流程是后台程序从Oracle数据库表SMS_VARIABLE的SQL_STRING字段中获取短信数据的SQL查询语句,通过程序读取语句并连接SQL Server数据库执行,返回结果集,然后更新短信内容插入SMS_CONTENT发送表中。
发送短信任务:短信的发送主要流程是系统到达指定的时间后,读取短信发送表和联系人表中的内容,运行发送线程类SendSmsThread用短信猫进行发送。
3 核心技术
本节将介绍“醫院短信平台”系统中使用到的相关核心技术,主要包括短信猫的开发,开源框架JNA和Quartz。
3.1 基于短信猫二次开发包DLL接口开发
所谓短信猫,其实是一种用来收发短信的设备,他和我们用的手机一样,需要手机SIM卡的支持,在需要收发短信的时候,在短信猫里面插入一张我们平时用的手机卡,插上电源,通过(USB或者串口、网口)数据线和电脑相连,在电脑中通过应用管理软件或程序就可以实现短信收发的功能。
短信猫DLL接口提供API级的函数调用接口,接口完全底层调用,没有任何界面,适合于广大自主品牌的开发用户。函数接口简单,仅需几个简单的函数调用,就可以实现信息的发送和接收功能。调用结构图见图7。
短信猫通过串行口(COM)和计算机相连,或者通过USB虚拟的串行口和计算机相连,我们这里编程都是对串行口进行的。
3.2 开源框架JNA技术
本系统中调用DLL接口中的C函数时用到了JNA技术。JNA(Java Native Access)框架是一个开源的Java框架,是SUN公司主导开发的,建立在经典的JNI的基础之上的一个框架。JNA框架就是为了解决JNI调用DLL过于繁琐而开发的,它提供一组Java工具类用于在运行期动态访问系统本地共享类库而不需要编写任何Native/JNI代码。开发人员只要在一个Java接口中描述目标Native library的函数与结构,JNA将自动实现Java接口到Native function的映射,大大降低了Java调用本体共享库的开发难度。
接口内部需要一个公共静态常量INSTANCE,通过这个常量,就可以获得这个接口的实例,从而使用接口的方法。也就是调用动态链接库xxtSmsDll.dll中的SendSms函数了。
使用JNA时,需要用JNA类库的Native类的loadLibrary函数,是直接把我们需要的动态链接库载入进来。Native类的loadLibrary方法有两个参数:第一个参数是.dll或者.so文件的名字,但不带后缀名。这符合JNI的规范,因为带了后缀名就不可以跨操作系统平台了。第二个参数是本接口的Class类型,JNA通过这个Class类型,根据指定的dll/.so文件,动态创建接口的实例。
3.3 开源框架Quartz的定时调度技术
本系统中短信的生成和发送任务都是由Quartz中的定时技术实现的,每天4:30系统从数据库中获取数据生成短信内容,7:30发送短信到院长的手机上。
Quartz是一个完全由Java编写的开源任务调度的框架,通过触发器设置作业定时运行规则,控制作业的运行时间。Quartz对任务调度的领域问题进行了高度的抽象,提出了任务、触发器和调度器这3个核心的概念,并在org.quartz通过接口和类对重要的这些核心概念进行描述。
Job:是一个接口,只有一个方法void execute(JobExecutionContext context),开发者实现该接口定义运行任务。用实现接口类JobDetail进行实例化。
Trigger:是一个类,描述触发Job执行的时间触发规则。主要有SimpleTrigger和CronTrigger这两个子类。
Scheduler:代表一个Quartz的独立运行容器,Trigger和JobDetail可以注册到Scheduler中,两者在Scheduler中拥有各自的组及名称,组及名称是Scheduler查找定位容器中某一对象的依据,Trigger的组及名称必须唯一,JobDetail的组和名称也必须唯一。
上述三者的关系图见图8。
4 结束语
通过“医院短信平台”的研究和设计,成功运用Java相关技术实现了本系统的功能需求,即将医院最新的动态信息定时发送到相关部门人员手机上,具有高效、快捷、方便、准确和经济等特点。本系统已经投入实际试运行环境中。
由于多方面的原因,本课题的研究还有很多不足之处,主要包括以下一些方面:
(1)JSP的设计过程中对界面的美化做的不够好。
(2)获取短信数据的SQL语句应该封装起来,由用户在可视化界面中选择相应的短信条目进行获取。
(3)可以增加各科室短信的功能,使其针对的用户更广泛。
这些都是以后系统需要进行逐步完善的,最终达到具有广泛性和实用性。
参考文献:
[1]闫小萍.医院短信平台的构建与应用[J].中国医疗设备.2011.
[2]唐慧.医院短信平台的构建与实施[J].广东省人民医院信息部.2009.
[3]李建鹏.医院门诊短信平台的实现[J].广东省人民医院信息部.2009.
[4]张良鸣.医院信息系统桌面管理应用心得[J].电脑知识与技术,2010.
[5]王珊,萨师煊.数据库系统概论(第四版)[M].高等教育出版社,2005(12).
[6]张海潘.软件工程导论(第五版)[M].清华大学出版社,2003.
[7]孙鑫.Java Web开发详解[M].北京:电子工业大学出版社,2012.
作者简介:瞿怀荣(1982-),男,工程师,研究方向:医疗信息化;通讯作者:柴守霞,女,讲师,研究方向:外科护理学;王春雷,男,工程师,研究方向:计算机应用;王德红,男,工程师,研究方向:信息管理。
作者单位:连云港市第一人民医院 信息科,江苏连云港 222002;湖北医药学院,湖北十堰 442000
基金项目:研究生启动基金项目(项目编号:2011QDZR-24)。