基于移动互联的护理预约App研究与设计
2021-06-24潘献梅
潘献梅
(江苏护理职业学院 教务处, 江苏 淮安 223002)
0 引言
随着国民经济的飞速发展,人们对生活水平的要求越来越高,尤其是对自身进行日常护理方面,得到了大众的广泛关注。不过,随着经济和生活水平的提升,人们生活节奏加快、对效率的要求越来越高,因此在对自身进行护理时,尤其是节假日期间,若能够提前进行护理医师的预约,将有效提高人们的生活效率,以便安排个人行程[1-5]。
网络信息发展飞速,因此基于移动互联技术建立护理预约平台,设计相关App,并用于护理预约是有效的预约手段。作为护理预约App,一般需要具有数据实时更新、用户信息和喜好识别、护理医师及其所在护理机构信息的记录、信息共享等功能[6-10]。目前市场中常见的护理预约App的可靠性和整体性都不能够完全满足用户的需求。例如,在技术层面,这些App通常能够实现护理医师的信息共享,但并不能综合医师所在机构地点以及周边停车、交通等信息,提供完整的综合方案;再比如,在预约完成之后,若上一时间段的客人未能及时到店或取消预约,系统一般无法自动实现与下一位客人重新协商时间等。
基于以上问题,本文基于先进的自动化硬件、高效的算法和便捷的网络,设计了一种用于护理预约的App,将其应用到了个人护理预约中,并取得了良好的效果。另外,这种护理预约App也可以用于学校实验室的预约中,例如学生预约教师对其进行护理技能的培训和辅导,也可以通过该App预约实验室的时间和教师的时间;或者是当学生作为志愿者进行社区服务时,社区居民可以通过该App进行学生时间和护理地点的预约。对实验室的管理和学生的培养起到了极大的便利。
1 最佳预约方案算法
本文采用分阶段模型来推荐最佳护理预约方案,这一推荐方法,一方面能够兼顾用户的主管要求,一方面又能考虑到客观因素,可以给出更为合理的预约方案。具体步骤为:先确定符合用户要求的全部护理医师及其所属护理机构;然后按照用户个人对护理医师性别、从业时间、护理机构所处位置等需求进行初筛;最后通过对护理医师及其所处护理机构的综合属性进行推算,给出最佳预约方案的推荐。阶段推荐分两个阶段进行,第一阶段主要考虑用户的需求,即护理类型和护理医师的可预约时间;第二阶段进行综合客观因素筛选,如用户距护理机构的距离、护理费用、护理医师技术和行程交通情况。最佳预约方案推算如式(1)。
(1)
其中,T为最佳护理医师;p1,p2,p3和p4分别为因素重要系数;n1为用户距护理机构距离,可利用预约平台的定位系统进行赋值;n2为护理费用,可由数据库记录并进行赋值;n3为护理医师技术,由数据库记录并进行赋值;n4为行程中的交通状况,可利用TrafficLayer函数获取数据并进行赋值;n1,max为距离最大值,n2,max为费用最高值,n3,max为专业技术最高值,n4,max为交通最拥堵时的赋值。
距离因素和护理费用因素均是属于用户的支出因素,为较为重要的因素;护理医师技术对不同用户以及不同护理项目影响不同,为较次要影响因素;交通状况为最次要影响因素,为了方便推算,将式(1)优化为式(2)。
T=z+M×N
(2)
其中,
N=[n3n4]
将系统内可分配的护理医师信息代入到式(2)中,可进一步将其转变为式(3)。
T=Z+M×S
(3)
其中,
S=[NA1NA2…NB1NB2…]
在进行护理预约时,取n1,n2,n3和n4为实际可取值的x倍。其中,x为整数,处于(1, 10]范围内。设置目标值δ为x×(n1+n2+n3+n4)。编程时,float参量占位为32 bit,结果取值范围为[-3.4×1038,3.4×1038]。实际预约过程中,可预约医师的取值范围为[n4,n1+n2+n3+n4]。推算过程中,如果最终向量Y=x×(n1+n2+n3+n4)的值不溢出上述取值范围时,便是有效预约方案。在进行预约方案推荐之前,首先将Y=δ的方案剔除,然后对比向量Y的值,最终取Y值最小的方案为最佳护理预约方案。
本文所设计的护理预约系统的流程框图,如图1所示。
图1 最佳预约方案推算框图
首先,通过移动互联网将用户信息连接至数据库,获取数据库信息并进行数据初始化处理;通过对用户数据进行检测判定是否预约。若否,则判定是否结束,判定为直接结束,则结束预约;若判定为继续,则返回至数据检测;若进行预约,则获取用户信息、用户需求信息,根据用户信息对数据库中的护理医师进行筛选,获取符合用户需求的护理医师信息;然后对预约方案推算公式中各因素系数进行赋值,计算出护理医师被选择的矩阵值,对比筛选出矩阵值最小的方案,然后推荐最佳预约方案并储存在数据库中,结束预约过程。
2 数据库建立
本文选用MySQL进行数据管理。MySQL数据库能够
将数据按照类别进行储存,可以更为便捷地管理预约数据,简化数据调取的过程。另外,相对其他数据库来说,MySQL数据库的兼容性更好,可以同其他软件搭配使用。同时,MySQL数据库低成本的特性,也使得App开发的成本得到有效控制。
本文数据库主要包括4个不同的类别,分别为用户数据、护理医师数据、推算返回数据和用户预约数据。首先对各项数据进行分类,然后建立一个或多个数据表进行管理。用户数据包括用户注册数据和用户提交数据,用户注册数据储存用户信息表中;用户提交数据包括用户位置,储存于用户经纬度表中;用户预约需求,储存于用户要求信息表中;护理医师数据包括护理医师信息,储存于护理医师信息表中;护理医师所属机构地理位置,储存于护理医师经纬度信息表中;护理医师所属机构信息,储存于护理医师所在机构信息表中;推算返回数据包括用户到护理机构的距离,用户至护理机构行程的交通情况以及最佳护理医师信息;用户预约数据包括了最佳预约信息表和自主预约信息表。本系统的数据库构建整体架构如图2所示。
图2 数据库整体架构
3 App设计
本文基于Android 操作系统进行App的开发,选用java语言,基于eclipse为开发平台,进行编程。App的所有项目的编程均是在eclipse平台内创建完成,App的开发、运行及调试是在genymotion提供的Android 虚拟平台上进行。该护理预约App的菜单结构如图3所示。
图3 护理预约App菜单
包括5个菜单,分别为主菜单、预约定位菜单、预约需求菜单、最佳推荐菜单和自主预约菜单。本App的开发设计包括主菜单设计、预约定位设计、预约需求设计、最佳推荐设计和自主预约设计5个部分。
3.1 主菜单设计
本文所设计护理预约App是利用java语言进行编程,基于eclipse平台建立的。App主菜单的主要功能是实现向子菜单的跳转,因此在其界面显示了所有子菜单,并且具有点击跳转功能。本文设计预约App主菜单的界面文件,如图4所示。
主菜单界面如图4(b)所示,通过点击按钮跳转进入到子菜单界面。利用Android系统中的Button方式设计主菜单界面的按钮布局、用户ID、用户位置、文本以及背景的设置;按钮监听器是利用OnClickListener进行配置和调用,进一步实现主菜单到子菜单的跳转。
(a) (b)
3.2 预约定位菜单设计
用户进行护理预约时,首先要进行预约定位,也就是利用App的定位功能锁定用户位置,将经纬度信息发送至平台。预约定位菜单是通过创建dingwei.xml文件进行显示的,可获取用户ID信息和用户经纬度信息。在预约定位子菜单界面中,利用textview的方法实现用户ID的显示,利用edit-text的方法实现对文本的编辑。用户的经纬度信息是利用locationManager的方法获取,并通过locationListener方法进行实时更新。为了调用用户定位信息,需要在AndroidManifest文件中对Activity进行声明,并且需要添加“uses-permission android: name =“android.Permission.ACCESS_FINE_LOCATION””代码来打开App的定位权限。预约定位子菜单设计相关代码如下。
Public void doGet (HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException{
// TODO Auto-generated method stub
//调取请求的参数(使用utf-8进行解码,然后用ISO08859-1进行编码)
if(request.getParameter(“chepaihao”)!=null||request.getParameter(“jingdu”)!=null||request.getParameter(“weidu”)!=null)
{
//String name=newstring(request.getParameter(“name”).getBytes(“ISO8859-1”), “UTF-8”);
string(request.getParameter(“chepaihao”).getBytes(“ISO8859-1”), “UTF-8”);
string(request.getParameter(“jingdu”).getBytes(“ISO8859-1”), “UTF-8”);
string(request.getParameter(“weidu”).getBytes(“ISO8859-1”), “UTF-8”);
System.out.println(“chepaihao:“+n+”jingdu:“+a+”weidu“+m””);
3.3 预约需求菜单设计
在进行护理预约时,需要对不用的护理医师、护理机构进行综合评析,对客观因素以及用户的主观因素进行考量。通常客观因素,App可以由数据库获取;主观因素需要用户由预约需求菜单提交到平台。预约需求子菜单通过编写yuyuexuqiu.xml文件进行显示,然后通过edit-text方法对文本进行编辑,提交用户预约需求,如图5所示。
图5 预约需求子菜单设计
用户提交的Activity文件依然是利用OnClickListener方法进行监听;信息传输利用http传输协议进行传输;为了调用用户预约需求信息,需要在AndroidManifest文件中对Activity进行声明。
3.4 最佳推荐菜单设计
在用户将其经纬度信息和预约需求信息发送到平台后,平台根据预约方案推算公式,完成最优的预约方案推荐。用户可以通过点击最佳推荐按钮直接跳转至最佳预约方案进行预约。最佳推荐子菜单需要编辑3个.xml文件,分别为activity_main_zuijia.xml用来获取用户信息;layout_loading_zuijia.xml用以实现界面跳转;activity_hello_zuijia.xml最佳预约方案显示。最佳推荐子菜单的显示以及文本编辑也是利用textview方法和edit-text方法实现的。另外,也需要在AndroidManifest文件中对Activity进行声明,方便信息的调用。最佳推荐子菜单设计的部分代码如下。
try{
conn=super.openDB();
if(conn!=null){
String sql=“select*from tab_user where unsername =?”;
preStmt = conn.prepareStatement(sql);
preStmt.setString(1,src);
rs=preStmt.executeQuery();
if(rs.next()){
userBean=new UserBean(rs.getString(1), rs.getString(2), rs.getString(3), rs.getString(4));
System.out.println(“sql:“+sql+”rs:“+rs+”ub:“+userBean+”);
3.5 自主预约菜单设计
当最佳推荐不能满足用户需求时,用户可以进行自主预约,自主预约子菜单的设计如图6所示。
图6 自主预约子菜单设计
自主预约子菜单的设计是通过创建reservation.xml文件进行设计的,用户可以通过输入自己的ID、密码和目标医师实现自主预约。自主预约子菜单的显示以及文本编辑也是利用textview方法和edit-text方法实现的。另外,也需要在AndroidManifest文件中对Activity进行声明,方便信息的调用。
4 总结
基于Matlab环境设计了一款可进行护理预约的App,并对其算法、数据库和App的设计进行了详细的介绍。本护理预约App能够综合考虑多种客观因素和用户的主观因素,然后对护理医师信息进行筛选,得到最佳推荐方案。另外,若最佳推荐方案不满足用户需求,还可以通过自主预约完成护理预约。本App主要包括5个菜单,分别为1个主菜单和预约定位、预约需求、最佳推荐和自主预约4个子菜单。本App是利用java语言进行编程,基于eclipse平台建立的。