一种体检预约查询App的跨平台设计与实现

2021-03-08 11:15:10李晓辉李明彩金松林李莉
关键词:体检中心控件界面

李晓辉,李明彩,金松林,李莉

(1.河南科技学院信息工程学院,河南新乡453003;2.新乡医学院医学工程学院,河南新乡453003)

随着我国科技和医疗卫生事业的发展,广大居民更加关注个人健康状况.同时,我国已进入人口老龄化社会[1],居民的健康关乎经济发展和社会进步.2017年7月14日,全国老龄办、民政部、教育部、住房和城乡建设部、国家卫生计生委等五部委联合发布了《关于制定和实施老年人照顾服务项目的意见》[2],其中规定国家对65岁以上老年人进行免费体检;此外,政府机关、企事业单位均定期对职工进行体检[3-4].可见,体检已成为了解身体健康状况的主要途径.

各大医院、社会机构设立了体检中心,采用信息化手段对体检流程和数据进行管理,开发了体检信息管理系统[5-6].但这些系统中,除体检业务外,大多还需要与检验系统(LIS)和影像系统(PACS)对接[7-10],数据拓扑复杂、操作有延迟,导致客户在体检预约和查询时体验不够好.因此,本文将预约和查询数据从体检系统中分离,设计了一款手机端体检预约查询App,以期提高体检客户体验和操作效率.

1 体检预约查询手机App设计方案

1.1 系统功能概要

对于国内的体检中心,体检流程主要包括体检预约、体检登记、缴费并打印指引单、科室分检、总检、领取体检报告等环节.其中体检预约、体检登记和领取体检报告功能可进行整合,确定体检预约查询App总体功能结构,如图1所示.

图1 App总体功能结构Fig.1 The overall functional structure of the App

(1)注册登录功能.客户可以将个人信息进行注册,其中进行过体检预约的客户默认注册成功,账号为手机号,密码通过手机短信发送,注册成功后即可登录App进行相关的操作.

(2)体检预约功能.客户能够通过手机端进行预约,确定体检的日期,并登记客户的主要信息(姓名、年龄、性别、联系方式等),能够查询预约情况和取消预约.系统能够在体检前一天通过手机端和短信推送提醒.

(3)体检报告查询功能.可通过注册的手机号查询关联的历次体检报告,也可通过姓名和体检号查询单次的体检报告.体检报告信息包括总检和科室分检结论,对异常信息进行标识.

(4)健康资讯功能.提供关于身体健康方面的文章和体检报告的解读.

(5)体检信息管理功能.后台管理员实现体检预约、体检报告、健康资讯等信息的管理.

1.2 设计架构

App设计采用展示层、服务层和数据层三层架构,如图2所示.将数据、业务逻辑和数据展示进行分离.展示层实现客户端数据请求和数据的展示,采用Delphi的FireMonkey技术,通过一次编程和业务逻辑的实现,分别封装出IOS和Android两个版本的App程序;服务层实现对请求数据的控制和逻辑操作,并将结果返回到展示层,该层采用Delphi的DataSnap技术开发出WebService服务;数据存储层采用SQLServer数据库管理系统进行数据的存储和操作,影像数据存储在服务器特定的目录下.其中展示层和服务层之间采用TCP/IP协议借助于Json技术进行通信,服务层和数据存储层可位于不同的云服务器,通过TCP/IP协议通信.

图2 App设计架构Fig.2 The design architecture of the App

1.3 数据存储设计

系统中数据的存储包括客户信息、体检结果和影像图像.其中客户信息和体检结果为文本或者数值,采用SQLServer数据库进行存储,而影像数据存储在云服务器固定的目录中,在数据库中存储影像文件的超链接即可.故将数据库表划分为客户总检信息表、客户分检信息表和影像信息表等.客户总检信息表结构如表1所示.

表1 客户总检信息Tab.1 Customer summary examination information

客户分检信息表结构如表2所示.

表2 客户分检信息Tab.2 Customer department examination information

体检数据来自于各体检中心,每天均产生新的体检数据,随着体检数据的增多,数据库进行查询的效率会逐渐降低.针对以上问题,采用数据库分库、分表的方式进行处理,同时,对于时间较早的数据,进行及时归档.

2 体检预约查询App服务层设计

服务层将展示层的数据请求进行处理,并对数据存储层中的数据进行操作,将操作结果返回到展示层.该层采用Delphi语言的DataSnap组件实现,在创建DataSnap程序时,系统会默认创建ServerContainerUnit1.pas、ServerMethodUnit1.pas和Unit1.pas三个单元文件.

ServerCaontainerUnit1.pas文件用于设置服务层的支持的协议和服务状态,需设置TDSTCPServerTransport、TDSServer和 TDSServerClass三个控件.其中 TDSTCPServerTransport用于 TCP/IP通信,TDSServer代表服务的状态,需将其AutoStart属性设置为true,表示程序运行后自动启动DataSnap服务,TDSServerClass组件将服务端特定的类发布给远程客户端,用于远程调用.

ServerMethodUnit1.pas文件完成前台数据的请求和对数据库的操作.首先根据连接的数据库类型设置其驱动程序,App中数据存储采用SQLServer,选用FDPhyMSSQLDriverLink即可;其次借助FDConnnection1控件,并设置其连接的数据库服务器名称、数据库名称、用户名和密码,得到连接数据存储层的Connection对象;然后加入FDQuery控件,该控件可获取SQL语句,并将返回结果通过DataSetProvider控件返回到手机端.

Unit1.pas文件作为服务层的主控界面,如图3所示.设置一个文本框和两个按钮,其中文本框用来在启动服务前设置服务层的端口号,两个按钮分别通过单击事件,表示服务层的启动和关闭.

图3 服务层主控界面Fig.3 Main control interface of service layer

3 体检预约查询App客户端设计

目前,主流的手机端App平台包括IOS和Android,为了兼容平台,本App采用Delphi的FireMonkey技术,一次编程,可以分别编译IOS和Android两个版本的手机端程序.同时,手机端App需要满足界面美观,操作简单,主要功能实现如下.

3.1 欢迎界面和功能布局设计

3.1.1 欢迎界面设计 打开App后会进入欢迎界面,采用左右滚动的4张图展示App的特色.将4张图片分别放置到TabItem中,并设置TabIndex的索引值Index,然后按照先后顺序统一放入TabControl容器中,由于图片仅需左右滑动操作,将TabControl的TabPosition值折修改为none,采用GestureMnager对象实现对图片左右滑动的控制,当向左滑动图像时,采用ChangeTabAction方法修改显示的TabItem对象切换图片,反之,按逆序执行.

3.1.2 功能布局设计 App各功能分布在界面下方,采用选项卡的形式展示,当点击某项功能时,即跳转到对应的功能界面,如图4所示.功能布局的设置同欢迎界面设计,由于功能界面需要采用选项卡形式,故将TabControl容器的TabPosition值修改为Bottom.

图4 功能布局界面Fig.4 Interface of function layout

3.2 体检预约功能设计

体检客户在预约界面中可以进行体检预约,首先选择体检的城市,会出现该城市对应的体检中心列表,选择需要预约的体检中心,然后单击体检预约按钮即可填写客户的预约信息,在图4中已显示有关信息.体检中心的选择通过ComboBox控件实现,在App启动时会将城市列表显示在当前位置处,当选择好城市后,将查询体检中心的SQL语句发送到服务端,服务端返回数据.进入预约后,将客户填写的信息插入到数据库PEISPATIENT表,完成预约.

3.3 体检查询功能设计

客户体检完成后,会形成全面的体检报告,但体检报告和影像图像存储在各体检中心本地服务器,因此需要首先将其上传到云数据库,以备远程查询.

3.3.1 上传体检报告功能设计 为了便于体检中心进行操作,上传体检报告功能采用操作窗口形式.分别为云数据库、本地数据库创建Text控件,用于输入数据库引擎、数据库名称、用户名和密码,两个数据库分别通过Connection控件连接云数据库.对于影像图像,需要在窗口中创建FTP控件,实现将影像图像上传.此外,通过设置Text控件接收需要上传数据的条件(如:某客户信息或者一定期限内的体检信息),根据条件构建查询语句对本地数据库进行查询,并将查询结果保存在TADOquery控件中,然后将查询结果逐条插入到云数据库中.其中,由于影像图像是按照相对地址存放在数据库中,需要通过FTP形式上传到云服务器对应的磁盘目录,同时,当影像图像上传不成功时,体检数据要进行事务回滚,以保证数据一致性.

3.3.2 体检报告查询功能设计 体检报告查询根据手机端选择的体检中心、客户账号和查询密码,组成查询语句对PEISPATIENT表进行查询,当有查询结果记录数为0时,提示“未查询到您的记录,请重新输入!”.当查询结果记录数大于等于1时,则跳转到结果显示页面,将PEISPATIENT表中的Conclusion(总检结论)字段显示在总检结论中,各科室的分检结果根据客户体检号进一步在PEISPATIENEXAMITEM中进行查询,并显示在分检结果页面,如图5所示.

图5 体检报告页面Fig.5 Page of physical examination report

3.4 注册登录功能设计

用户在预约时,必须输入个人的手机号,通过调用阿里云短信平台发送验证码,验证通过后,即默认注册成功,密码通过阿里云短信平台发送到手机.登录时,通过手机号码和密码即可成功登录.登录成功后即可进行体检预约、体检报告查询、个人信息修改等操作.

4 体检预约查询App测试

体检预约App基于北京标软信息技术有限公司体检软件平台对预约和报告查询功能进行测试.

4.1 测试环境

App测试环境选用云服务器和云数据库,其中云服务器负责服务端的运行和体检影像的存储,云数据库负责体检报告数据、体检科室的存储,硬件和软件配置信息如下:

品牌:阿里云服务器C

PU:4 块,双核 CPU

内存:128 G

硬盘:10 TB

带宽:200 MB

系统:Windows Server 2012

云数据库:SQL Server 2008R2

4.2 体检预约功能测试

体检预约功能测试包括App终端界面测试和功能测试.在终端界面测试方面,客户可以通过预约页面,选择体检城市(默认通过手机GPS定位功能,确定城市,亦可根据需要选择其他城市),然后在选择体检中心位置会自动弹出所选城市的体检中心,选定体检中心后,即可通过体检预约按钮,跳转到登记界面,用于登记个人信息和联系方式.在功能测试方面,客户按流程登记信息并提交后,数据会提交到远程服务器,并将数据登记在SQL Server数据库中.经测试,体检预约功能达到了预期的效果.

4.3 体检报告查询功能测试

体检报告查询功能包括体检数据上传测试和体检报告查询测试.

4.3.1 上传体检报告功能测试 上传体检报告界面如图6所示,通过连接数据库按钮,弹出的输入框,分别设置本地数据库、云数据库和FTP服务器的相关设置信息,选择自动上传当天体检数据或者总检时间,即可查询得到本地数据库的体检报告,并将数据自动上传到云数据库.经查看云数据库,影像字段和存储位置一一对应,实现了上传功能.

图6 上传体检报告图Fig.6 Upload report page

4.3.2 体检报告查询功能测试 用户点击查看体检报告,跳转入体检报告查询页面,体检客户可通过选择体检中心所在的省、城市、体检中心,并输入体检号和密码,查询体检号对应的一次体检报告.如果体检客户需要查询多次体检报告,可通过登录的方式查看.体检报告展示页面,可查看总监医生的建议和各科室分检的详细结果.

5 小结

为了兼容IOS和Android手机端平台,基于Delphi的相关技术开发了体检预约查询App,该App采用展示层、服务层、数据存储层三层架构,将手机端、数据控制和数据存储进行分离,实现了体检预约查询功能.但随着体检数据量逐渐增加,体检报告查询时间延迟较大,对数据库进行了多服务器分库、分表的优化处理,并且对较早的数据进行了数据归档.该App在北京标软信息技术有限公司平台进行了测试,用户体验较好,达到了预期效果,运行稳定.

猜你喜欢
体检中心控件界面
精细化健康体检管理模式在体检中心的应用探析
医院体检中心护理风险管理的应用效果分析
国企党委前置研究的“四个界面”
当代陕西(2020年13期)2020-08-24 08:22:02
关于.net控件数组的探讨
软件(2018年7期)2018-08-13 09:44:42
基于FANUC PICTURE的虚拟轴坐标显示界面开发方法研究
人机交互界面发展趋势研究
手机界面中图形符号的发展趋向
新闻传播(2015年11期)2015-07-18 11:15:04
针对提高体检中心护理质量的管理与方法
人本位理念在我院体检中心的体现
就这样玩会VBA中常见的自定义控件
电脑迷(2012年24期)2012-04-29 00:44:03