基于Android客户端的门诊自动分诊导医系统的设计与实现

时间:2022-10-15 08:27:28

基于Android客户端的门诊自动分诊导医系统的设计与实现

摘要:本文以Android客户端为核心,建立了门诊自动分诊导医系统的模型。对模型中的三个重要组成部分门诊医生呼叫终端、Android客户端、导医系统服务器进行了设计与实现。分别通过JSP、Tomcat及NIO Socket方式实现了导医系统服务器与门诊医生呼叫终端、Android客户端的通信。实验结果表明,该门诊自动分诊导医系统能够实现门诊医生自主呼叫病人的功能,解决了拥堵的围医现象,具有良好的稳定性。

关键词:Android;门诊自动分诊导医系统;Tomcat;lsP;NIO Socket

中图分类号:TP302 文献标识码:A DOI:10.3969/j.issn.1003-6970.2013.03.008

0 引言

门诊是医院医疗服务工作中的一个重要组成部分,是医院面向社会的重要窗口,其服务设施的优劣、就诊环境的好差、医疗服务质量的高低,直接影响患者对医院的第一印象和感受,也直接反映医院的整体水平。

我国国情特殊,人口众多。长期以来,医院的门诊量大,病人排队秩序混乱、门诊工作琐碎繁多。就诊人群的“围医”现象,严重地影响了接诊医生的工作环境,降低了工作效率,更不利于保护病人的隐私。这种情况一方面使得病人因为长时间的站立排队透支体力和精力而疲惫不堪,另一方面医生也因为长时间遭受就医人群的围绕而不胜其烦,影响看病质量。因此,提高服务效率,改善服务质量,彻底解决患者就医无序的排队现象,营造公平、合理、有效的就诊环境,提升医院良好的窗口服务形象,同时缓解门诊医生和护士的工作压力,减轻工作强度成为急需解决的问题。

为了改善门诊环境设施,提高服务质量,满足患者的多种需求,使门诊工作规范、安全、快捷、有效地进行,全面体现人性化服务患者、人性化管理职员的理念,实现网络化、无纸化、数字化医院,门诊自动分诊导医系统应运而生。从2003年开始,门诊自动分诊技术产品的市场由导入期过渡到成熟发展期,与之相关的产品市场需求也以年200%的速度递增。目前,国内已经有上海、北京、广东、浙江、江苏等地的多家大医院投入使用了门诊自动分诊导医系统,并且越来越多的医院认识到了使用该系统的必要性,门诊自动分诊导医系统表现出了良好的发展势头。

1 门诊自动分诊导医系统模型的建立

本论文根据门诊自动分诊导医系统所要实现的功能,给出了以基于Android平台的顶置盒客户端为核心的导医系统简化模型。该模型的结构图如图1所示。

一般医院都有一套成熟的HIS系统管理挂号信息、病人信息、医生信息、科室信息等,所以自动分诊导医系统具备良好的数据基础。通过设置一个合理的数据接口,将导医系统数据库与HIS系统对接进行信息共享,可以获取需要的数据。每个护士站客户端配备有基于Android系统的顶置盒,该顶置盒接入以太网与服务器进行通信交互,且连接LCD显示屏用于病人信息的显示。每个医生在自己的电脑终端进行“呼叫”请求,导医系统服务器在收到“呼叫”请求,查询数据库,响应请求,同时将相应的就诊提示信息发送给Android顶置盒,继而由LCD屏幕进行显示。

2 门诊自动分诊导医系统的设计与实现

2.1 门诊医生呼叫终端的设计与实现

门诊医生根据自己诊断的进度,通过呼叫终端呼叫下一位病人。虚拟呼叫器是指通过门诊电脑安装软件(C/S架构)或是浏览网页的方式(B/S架构)进行呼叫。本文结合导医系统服务器与呼叫终端通信的特性和应用要求,采用了B/S架构设计呼叫终端。

本文采用JSP+JavaBean组合的技术开发动态网页应用程

JSP(Java Server Page)是由Sun公司主导,并采纳了计算机硬件、通信、数据库领域多家厂商的意见而共同制定的一种基于Java的Web动态页面技术。JSP秉承了Java“一次编写,到处运行”的精神,既与硬件平台无关,也与操作系统和Web服务器无关,是一种与平台无关的技术。

JavaBean是Java的可重用组件技术,实质是一种符合某些命名方法和设计规范的Java类。在JSP的Web应用中集成JavaBean组件,由JavaBean执行复杂的计算任务,封装事务逻辑、数据库操作等。在JSP页面中直接调用JavaBean的处理结果,着重网页界面的设计,从而实现业务逻辑和前台显示部分的分离。

本文中的门诊医生登录界面、操作界面(呼叫终端)、管理员登陆界面、管理员操作界面等均通过JSP+JavaBean的组合技术实现。门诊医生网页呼叫终端的效果如图3所示。

2.2 Android顶置盒客户端的实现

2.2.1 Android顶置盒硬件平台的选择

基于Android系统的顶置盒设计方案对硬件平台有如下要求:

1 强大的CPU处理能力支持:运行Android系统需要CPU主频至少200MHz以上(ARM9),为了流畅地运行Android系统,获得更好的用户体验,本文要求采用的微处理器CPU主频高于500MHz。

2 充足的内存资源:Android系统占用资源相对较大,至少需要256M内存的支持。

3 拥有丰富的外设资源:为扩展应用,需要提供SD卡、USB口、网口、VGA接口等外设支持。

4 具备功耗低、性价比高、尺寸小等特点。

5 具备良好的调试及下载支持。

针对以上要求,分析目前主流的嵌入式处理平台,最终选择基于ARM体系结构的

ARMll$3C6410作为系统的硬件处理器,分析如下:

1)ARM处理器的优势。目前主流的嵌入式架构有ARM、MIPS、PowerPC,相对于MIPS和PowerPC,ARM微处理器作为32位精简指令集架构,以其高性能、低成本、低功耗的优点在嵌入式应用领域占据了更大的市场。

2)ARM11 S3C6410的选择。S3C6410是一个16/32位的RISC微处理器,旨在提供一个具有成本效益、功耗低、性能高的应用处理器解决方案。基于ARMll76JZF-S内核构建的$3C6410是高性能多媒体应用处理器,它不仅具有强大的硬件编解码单元,完善的外设,而且拥有高达667MHz的运行频率(可跳频到533MHz和800MHz)。

本文中,Android系统顶置盒使用的硬件平台是广州华天正公司开发的ARM11开发板Real6410。Real6410是用于高端手持设备和微型智能控制设备的开发套件,采用三星公司的ARM11内核处理器$3C6410。该开发板用于本论文所设计系统的原型系统设计与验证。

2.2.2 Android顶置盒与服务器的通信

Android客户端与PC服务器之间常用的通信方式是Socket。基于10的传统Socket通信是阻塞式通信,它的特点是:每建立一个Socket连接时,同时创建一个新线程供该Socket进行单独通信。这种方式具有很高的响应速度,并且控制简单,在连接数比较少的时候非常有效。但是每一个连接都产生一个线程是对系统资源的浪费,在连接数较多的情况下,会出现资源不足的情况。

基于NIO的Socket通信是一种很好的解决方案,NIO是非阻塞式通信模式。基于事件的通知模式使得多并发时不用维持高数量的线程,高并发的Socket服务器的java实现成为现实。NIO的非阻塞I/O机制是围绕通道Channel和选择器Selector构建的。Channel类:表示服务器和客户端之间的一种通信机制。Selector类:是Channel类的多路复用器。Selector类将传入的客户端请求多路分用并将它们分派到各自的请求处理程序。

本文中,Android顶置盒客户端与导医系统服务器之间采用NIO Socket进行通信。Android顶置盒的客户端结构如图4所示。在I/O Handler中处理的业务逻辑传递到过滤链IoFilter中进行编码处理,通过I/O Connector将请求发送到服务器端进行处理。

2.2.3 Android顶置盒显示呼叫信息

在Android顶置盒显示呼叫信息程序中,定义了ViewActivity类对病人的信息进行显示。该类继承自ListActivity,它实际上是ListView和Activity的结合体。HstActivity内置了ListView对象,实现数据源的绑定与显示,数据源通常会是一个array或者一个拥有查询结果的cursor。只要设置了数据源,ListView就会自动地显示出来。

本文的程序中,实现列表的显示有以下几个步骤:

1)在ViewActivity对应的布局文件view.xml中添加一个ListView控件。

2)确定ListView中每行显示的格式,Android系统提供了多种模板进行选择。本文采用了自定义模板的方式,在该模板中添加TextView组件显示相应的文本信息。

3)对ListView进行数据绑定,必须使用到一个Adapter接口。本文使用了SimpleAdapter适配器实现ListView与数据源的绑定。

通过实现以上的步骤,即可将呼叫的病人信息按照列表的形式显示出来。实现效果如图5所示。

2.3 导医系统服务器的设计与实现

2.3.1 导医系统服务器与门诊医生呼叫终端的通信

服务器端采用Windows XP+Tomcat搭建了Web服务器环境,在8080端口监听门诊医生的呼叫终端HTTP请求。导医系统服务器响应网页呼叫终端命令的程序流程图如图6所示。

导医系统服务器响应JSP网页呼叫终端的请求命令后,根据命令的内容连接MySQL数据库获取对应的信息。本文采用了JDBC数据库连接体系结构。

JDBC(Java Database Connectivity)是SUN公司为Java开发的数据库连接解决方案,

它通过JDBC-ODBC桥接器,使用微软的ODBC(0penDatabase Connectivity)来实现与不同数据库的连接,但在编程方面较ODBC更加方便。JDBC内嵌的SQL为程序员提供了一个纯Java的数据库编程接口(由一组类和接口构成),通过它们,JDBC实现了三个最基本的数据库访问功能:建立与数据库的连接、执行SQL语句和处理执行结果。

在本文中,服务器端封装了一个数据库操作类DatabaseWork来实现基本的数据库访问功能。

2.3.2 导医系统服务器与Android顶置盒的通信

作为同时连接几百上千个顶置盒客户端的导医系统服务器,必须具有相当强大的并发性能。构建高性能的服务器不仅从硬件上,而且还要从服务器软件上提高性能。因此,需要使用一种高效的I/O底层,来开发出高性能的网络应用程序。本文中,服务器端采用Mina框架构建了高性能网络服务器。

Mina同时提供了网络通信的Server端、Client端的封装,无论在哪端,Mina在整个网络通信结构中都处于如下的位置:(图7)

可见,Mina框架将真正的网络通信与用户应用程序隔离开,用户只需要关心发送和接收的数据以及业务逻辑。服务器端Mina框架的实现过程与Android顶置盒客户端类似,区别在于Android客户端采用I/0 Connector发送连接请求,而服务器端采用I/O Acceptor接收连接请求。整个服务器端运行流程如下图所示:(图8)

3 结论

本文通过门诊医生呼叫终端、Android顶置盒客户端、导医系统服务器这三部分的设计与实现,成功地实现了门诊自动分诊导医系统。通过该系统,门诊医生可以自主地呼叫下一位病人,从而避免了拥堵的围医现象,为患者和医生提供了一个良好的环境。

系统还存在一些有待改进之处,比如网络故障自检功能、Android顶置盒客户端的离线通知等功能的设计与添加。

上一篇:基于国产基础软件的分布式国土资源信息共享服... 下一篇:气象短信制作与发送程序设计