面向移动智慧医疗的POS终端系统的开发

2017-06-19 18:50邢鹏程曾献辉
网络安全与数据管理 2017年11期
关键词:医疗系统调用键盘

邢鹏程,曾献辉

(1. 东华大学 信息科学与技术学院,上海 201620; 2. 数字化纺织服装技术教育部工程研究中心,上海 201620)



面向移动智慧医疗的POS终端系统的开发

邢鹏程1,2,曾献辉1,2

(1. 东华大学 信息科学与技术学院,上海 201620; 2. 数字化纺织服装技术教育部工程研究中心,上海 201620)

针对就医过程中挂号难、预约难、支付难等常见的问题,开发出一套基于POS机终端上的智慧医疗系统,提供建档、绑卡、挂号、预约、支付等一站式功能与服务。系统总体是一个前端基于Html5开发的、以WebService技术为核心的跨平台的应用程序。详细介绍了Html5界面通过WebView组件实现Javascript与Java层通信的方法,并通过此方法实现了在Html5界面上调取POS机的外设硬件设备、获取密码键盘与刷卡信息、访问远程数据库等功能。

智慧医疗;Android;Html5;WebView;WebService

0 引言

就医问题一直困扰着人们。由于患者数量庞大,医疗资源有限,医院便有了排长队预约、挂号、付款的现象,进一步引发医院黄牛、天价挂号费等问题。针对上述问题,本文提出了一套基于POS机终端上的智慧医疗系统,为患者提供自助式服务,缓解就医压力。

基于浏览器的客户端应用程序不仅能够提供更好的用户界面,而且避免了诸多桌面应用程序的开发问题,因此受到越来越多的青睐。本文提出的智慧医疗系统采用Html5(简称H5)技术来开发应用前端,通过实现Html5页面与Android的跨平台通信,完成了前端与系统的融合。此外,系统通过WebService技术访问远程数据库,在预约、挂号、支付等功能发挥核心作用。

作为智慧医疗系统的平台和载体,本文所述的POS机是配备彩色大屏幕、插卡刷卡接口和密码键盘等外部设备的终端,其操作系统是Google公司开发的Android 4.0[1]。

1 智慧医疗系统的总体架构

系统的总体架构基于Android系统,利用Html5和Android对其进行跨平台开发。

前端基于Html5技术开发,用于展示界面和获取信息;H5界面以Android系统的WebView组件为桥梁,通过Javascript(简称Js)实现与Java层通信,这一技术使得在Html5界面上便可调用POS机的外部设备,并可将外部设备获取的信息传输到前端;Java层利用JSON标准封装,通过HTTP协议传输来访问远程数据库。整体架构如图1所示。

图1 系统架构图

Android系统以Java为编程语言,使接口功能化[2]。WebView组件本质是一款高性能的Webkit内核浏览器,可以加载网页文件,并且能与Js进行交互。因此WebView组件便成为Android系统呈现H5页面的窗口。

2 智慧医疗系统的前端开发

对于应用程序来说,美观的界面和人性化的功能可以大大提升用户的体验,提高人机的交互性。Html5是新一代的网站开发标准,CSS作为最优秀的前端表现设计语言[3],可以写出丰富的功能和出色的效果,Js能够增加动态效果和实现交互[4]。因此,本文基于Html5+CSS+Js的前端设计技术,来开发智慧医疗系统的前端。

系统功能丰富,主体分为5个主要功能:建档、绑卡、挂号、预约和支付,如图2所示。

图2 前端呈现图

其中,挂号和预约功能可以在线查看未来8天的各专家门诊的预约情况,并能够在线预约医生和支付相关费用。此功能可通过如下方法实现:日期导航栏中的单个日期用

  • 标签来定义,其中,
  • 标签有两种CSS样式,一种是未点击样式,另一种是已点击样式(此样式的名称定义为clickstyle)。定义两种CSS样式的目的是在点击某一天查看此日专家门诊预约情况的同时,改变此栏的颜色以突出击中效果,如图3所示。

    图3 导航栏效果图

    为实现这种改变CSS样式的动态效果,可定义一个Js函数,监听onclick方法来改变其CSS样式。监听方法如下:

    var oLis=document.getElementsByTagName("li");

    var i,j;

    var length=oLis.length;

    for(i=0;i

    oLis[i].onclick=function(){

    for(j=0;j

    oLis[j].className="";

    }

    //更改className为clickstyle

    this.className+="clickstyle";

    }

    }

    3 Js与Java层的通信

    实现Js与Java层的通信是必要的,调用硬件设备、读取卡片信息、访问远程数据库等功能都是基于H5与Android系统的双向交互。

    3.1 WebView组件

    WebView组件是H5与Android交互的桥梁,在Js与Java层之间的通信中有重要作用。

    在MainActivity中实例化WebView组件的方法有两种[1]:第一种是在布局文件activity_main.xml中声明一个WebView;第二种是直接在MainActivity中实例一个WebView对象:

    WebView webView=new WebView (this);

    3.2 addJavascriptInterface方法

    WebView的addJavascriptInterface接口可以向Web页面注入Java对象,同时Javascript脚本可直接引用该对象并调用该对象的方法[5]。因此,此方法是允许页面Javascript脚本控制Android应用程序的关键。

    值得注意的是,对于API低于17的Android版本,攻击者可以利用Javascript反射机制任意操纵应用程序。因此为了提高安全性,在高版本的Android系统中,必须在Java对象方法中声明@JavascriptInterace注解,才能被Web页面调用[6]。

    4 H5对外接设备的调用

    4.1 调用密码键盘

    在支付过程中,需要调用外接的安全密码键盘。在点击H5页面的输入密码按钮之后,将触发按钮的onclick事件,并对应地执行启动Java层接口的Js脚本。

    Java层通过WebView的addJavascriptInterface接口来实例一个WebHost对象,代码如下:

    webview.addJavascriptInterface(new WebHost( context,webview), "js");

    WebHost是一个自定义的接口,它的功能是调用外设键盘方法,在成功启动键盘并完成输入之后,将结果通过Js反馈到H5页面中。

    pinpadDevice是SDK中调用外接键盘的方法,可通过设备管理器POSTerminal来获得设备对象,代码如下:

    pinpadDevice = (PINPadDevice) POSTerminal.getInstance

    (context).getDevice("cloudpos.device.pinpad");

    其中,"cloudpos.device.pinpad"是标识PIN输入设备的字符串,由具体的实现定义。设备管理器POSTerminal 是获得每个设备的入口,获取该对象不能使用new方法,可以通过getInstance方法获得。

    成功调用密码键盘,并在输入密码和确认之后,执行WebView的loadUrl方法回调Js脚本,反馈给H5界面:

    webview1.loadUrl("javascript:calljs()");

    上述内容通过调用密码键盘的实例介绍了如何利用WebView来成功实现Js与Java层的相互通信。

    4.2 调用银行卡刷卡接口

    银行磁条卡一般有3条磁条轨道,3条磁道在卡上的位置在国际标准ISO007811/5中被严格规定,每条磁道都记录磁卡信息,通常第二、第三磁道用以记录卡号等信息。在SDK中,刷卡接口是msrDevice,此接口可以读取和处理磁道信息,并返回银行卡号字符串。

    调用银行卡刷卡接口的方法与4.1节描述大致相同,用WebView的方法将解析得到的卡号cardNO通过Js传输到H5页面,代码如下:

    public int onConfirmCardNo(String cardNO) {

    pubilc str =“”;

    str += cardNO;

    webview1.loadUrl("javascript:cidjs('"+str+"')");

    return EMVConstants.App_Confirm_OK;

    }

    经测试,在H5页面上成功调用刷卡接口,在刷卡之后,设备成功读取到卡号并将卡号返回到H5页面上来。结果如图4、图5所示。

    图4 Android monitor的debug结果显示成功读取卡号

    图5 成功将卡号返回给H5并显示出来

    5 WebService实现访问远程数据库

    智慧医疗系统不是一个本地的服务应用,而是一个基于WebService的不断进行数据交流的系统。在用户进行实时查询、预约专家、在线挂号、费用支付等过程中,需要系统不断地访问医院终端数据库;在用户进行快捷支付、插卡刷卡、输入密码等过程中,需要系统不断地访问银行终端数据库。因此建立高效、安全的远程数据库访问机制[7]是必要的。

    WebService是一个用于支持网络间不同机器互操作的软件系统,它的优势是不受操作平台和开发语言的种类的束缚,通过它能够像调用本地数据一样去调用远程服务器。

    远程数据库存储医疗、支付等相关的数据。当POS终端系统的Java层向服务器发出请求之后,服务器会相应对远程数据库发起查询、读取,并将获得的数据信息用JSON标准进行封装,并传输给POS终端,如图6所示。整个传输过程都是基于HTTP协议来完成的[8]。

    图6 WebService访问数据库架构图

    其中,JSON是一种轻量级的数据交换格式,可以将Javascript对象中表示的一组数据转换为字符串,轻松地在服务器之间进行传递。

    Android平台调用WebService需要依赖第三方类库ksoap2[8],它是一个SOAP WebService客户端开发包,用于获取服务器端WebServce调用。在通过调用WebService来访问远程数据库时,需要生成SOAP请求信息,并指定SOAP的版本 ,代码如下:

    SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER10);

    由于JSON是通过文本封装数据的,当记录条数比较多时,数据量非常大,考虑到POS终端的带宽相对比较低,上网速度不快,因此必须通过压缩来减少传输的数据量,通过在服务器端对JSON数据进行压缩,在POS终端对其进行解压,可提高网络传输效率及访问数据库的速度,提高用户体验效果。

    同时,考虑到智慧医疗系统在实际应用后,不同的用户所查询的大量数据可能是重复的,例如专家信息介绍、今日出诊医生名单等,而且就医高峰期的用户量很大,因此,可以把频繁访问的数据库内容缓存到Wed应用服务器中。这样不同的客户端访问相同的数据时,不需要每次都到数据库中读取,大大减少了数据库的访问操作次数,提高了数据库的访问效率。

    6 结束语

    本文介绍了在POS终端上的智慧医疗系统的开发,详细介绍了Android操作系统上的Html5页面如何通过Javascript与java层通信的方法,实现跨平台的应用开发,以及如何通过WebService实现远程数据库的访问。

    使用Html5开发APP的优势明显,并且未来会成为一种趋势,因此实现Js与Java的交互是必要的。同时,应用的开发也需要WebService实现访问远程数据库。但此方法的安全性还有待提高,因此还需进一步研究。

    [1] 王运生,聂芬.基于WebView组件的Android平台网页封装程序设计[J].智能计算机与应用,2013,6(3):21-22.

    [2] 百度百科.Android开发[EB/OL].[2016-10-26].http://baike.baidu.com/link?url=cPSFhcxCLnWYyVY_n-n5HCaDdvGzlOPrp0saz9VUh-aOjDbN-pUfhqw7e6KV6YbRJuEw-jeLC2M8HOci4-XzH7TfB-1JqHUwajxJMSDwJ1lZYgNPkkAuZLIM ZGxlYVILG.

    [3] 乐嘉锦.HTML5跨平台技术在视频点播系统中的研究与应用[J].计算机应用技术,2013,6(1):12-13.

    [4] 任柯.HTML5构建Android少数民族文献数字化平台研究[J].西南民族大学学报,2013,39(5):13-15.

    [5] 明日科技.Android从入门到精通[M]. 北京:清华大学出版社, 2012.

    [6] 徐伟.基于Android平台的应用程序安全保护研究与应用[D].成都:电子科技大学,2015.

    [7] 权重民,彭昕昀.利用JSON实现Android高效、安全访问远程数据库的一种方式[J].韶关学院学报,2011,32(12):16-20.

    [8] 黄淑静,杨红梅.利用JSON+WebService实现Android访问远程数据库[J].科技信息,2013(9):98-99,123.

    The development of mobile intelligent medical system in POS

    Xing Pengcheng1,2, Zeng Xianhui1,2

    (1. School of Information Science and Technology, Donghua University, Shanghai 201620, China;2. Engineering Research Center of Digitized Textile & Fashion Technology, Ministry of Education, Shanghai 201620, China)

    For troubles in the process of registration, reservation and payment in hospital, a wisdom health system based on POS terminal is developed, and it provides many one-stop functions such as documentation, tie card,registration, reservation, and payment. The front-end of this health system is based on the development of the HTML 5, and WebService technology is the core of cross-platform application. This paper introduces the method that how the HTML5 interface achieves the communication between Javascript and Java layer through the WebView componens, and through this method to implement POS peripherals hardware, information obtained of password keyboard and the credit card, access to remote databases and other functions on the interface of HTML5.

    wisdom health system; Android; Html5; WebView; WebService

    TP311

    A

    10.19358/j.issn.1674- 7720.2017.11.029

    邢鹏程,曾献辉.面向移动智慧医疗的POS终端系统的开发[J].微型机与应用,2017,36(11):98-101.

    2016-12-12)

    邢鹏程(1993-),通信作者,男,硕士研究生,主要研究方向:数据库应用技术、大数据分析。E-mail:491472180@qq.com。

    曾献辉(1974-),男,博士,副教授,主要研究方向:大数据挖掘、智能优化问题、决策与分析。

    猜你喜欢
    医疗系统调用键盘
    你知道手机拨号键盘上为什么要有*和#吗?
    佳能医疗系统(中国)有限公司
    佳能医疗系统(中国)有限公司
    键盘猫
    核电项目物项调用管理的应用研究
    Cлово месяца
    ikbc R300机械键盘
    基于系统调用的恶意软件检测技术研究
    黑客频繁入侵医疗系统 警惕!医疗健康遭遇安全威胁
    医疗系统内部审计现状与对策