自助三维导诊系统的研究与实现
2019-03-22黄云辉刘笑寒姚俊峰吕奕清陈进春
黄云辉,刘笑寒,姚俊峰,吕奕清,陈进春
(1.厦门市中医院 信息科,福建 厦门361009;2.厦门大学 软件学院数字媒体技术研究中心,福建 厦门 361005;3.福建省厦门市人大,福建 厦门 361000)
0 引言
传统医院各个部门分工过分专业,环节衔接不流畅,工作效率低,导致患者对医院信息不了解,整个就医过程割裂,就医体验不佳,也给医院管理带来了很大的困难[1].
随着信息技术的快速发展,越来越多的医院正加速实施信息化平台建设,以提高医院的服务水平与核心竞争力.王伟东等[2]基于Web设计了3D虚拟人智能导诊系统,虚拟人可以与患者和医务人员进行简单对话交互,提供帮助,但关于医院的信息不多;蔡莹莹等[3]创建全景导诊系统,可以反映医院各个部分的情况,但医患双方互动性还有待加强;邓娴等[4]建立了一套门诊患者诊后检查智能引导系统,为患者提供最优检查方案和最短路线指引;刘艳丽等[5]介绍了包括自助查询系统、排队叫号系统、电子处方系统在内的多媒体导诊系统.
目前已有的导诊系统大多是针对一个功能,而且展示方式比较传统,不够直观.笔者系统将三维虚拟现实技术和医院信息系统融合在一起,对厦门中医院总院门诊片区进行三维虚拟,通过与患者智能交互,可以有效帮助患者了解医院,并解决就医过程中遇到的相关问题.
1 系统设计与研究
1.1 系统总体设计
厦门中医院自助三维导诊系统主要由虚拟现实三维展示模块、互动功能模块、硬件设备3部分构成,系统结构如图1所示.
图1 系统结构图Fig.1 The system structure frame
自助三维导诊系统的系统架构如图2所示.前端UI主要是基于Web的Html和CSS以及图片.展示层包括外景三维展示、内景三维展示、三维导航牌、医疗设备展示,采用当前流行的3DMAX、RHINO、MAYA等三维建模软件进行建模.业务层中系统的各种功能主要在 Unity3d中实现.数据层包括系统中各种数据的处理缓存等.
图2 系统架构图Fig.2 System architecture frame
1.2 自动导航技术
自动导航技术是本三维导诊系统的关键互动模块.当用户选择某一目标后,计算机会根据当前位置和目标位置自动计算出最优路径,然后引导虚拟角色沿路径行走.
自动导航功能使用 Unity3d实现,其关键是路径规划.路径规划根据漫游前所知信息的多少可以分为全局路径规划和局部路径规划.全局路径规划就是在漫游前已经知道漫游区域的所有信息,从而规划出最优路径;局部路径规划在漫游前不知道或只知道部分信息,需要根据漫游中获得的信息进行路径规划[6].由于虚拟医院的构造信息已知,障碍物固定,所以采用全局路径规划.寻路方式选择静态寻路,在漫游前确定路径,沿着规划好的路径漫游.对于虚拟医院,由于目标一般是整个房间,范围较大,不易规划路径,所以将每个科室简化为用门口代替的一个节点.
在Unity3d中使用A*算法实现自动寻路.定义估价函数F(n),F(n)代表当前节点的重要性,F(n)越小,说明经过该节点到达目标的代价越小,该节点重要性越强.F(n)的计算公式如下:
其中,G(n)为既定代价[7],如果只考虑距离,那么G(n)就是起始节点到当前节点所走过的路径长度;H(n)为估算代价,H(n)需要根据启发函数得到.由于医院走廊大多是直线纵横连接,因此采用曼哈顿启发函数,它只计算当前节点与目标节点行数差与列数差之和,也就是不走对角线,如图3.
图3 曼哈顿启发函数示意图Fig.3 The Effects of Manhattan heuristic function
综上所述,定义每个节点代表医院中一个科室或柜台,节点中存储科室位置(本文抽象为科室门口位置)、当前节点的既定代价G(n)、当前节点的估算代价H(n)、当前节点的估价函数F(n).
使用自动导航功能时,用户输入目标位置,系统自动定位当前位置,从而识别当前节点和目标节点.算法会得出最短路径,包括经过的节点及顺序,系统再将该最短路径在地图中标出并输出给用户,还可以提供语音导航.
A*算法中设有开启列表和关闭列表,开启列表中存放所有待检查节点,关闭列表中保存所有不需要再次检查的节点.得到用户当前位置,输入当前节点后,算法主循环流程如下:
①将所有需要检测的节点读入开启列表.
②取开启列表中F(n)最小的顶点作为当前节点.
③若当前节点是终点,那么寻路完成,转到(4).
④检查当前节点的相邻节点:
(a)若该相邻节点不可通过,则跳过继续检查下一个邻节点,否则继续.
(b)计算该邻节点的估价函数F(n).
(c)检查开启列表或关闭列表,判断节点现在计算出的F(n)值是否小于之前的F(n)值.如果是,那么将当前计算出的G(n)、H(n)、F(n)赋给该节点,当前节点变为其父节点,跳过步骤(4).否则,跳过该节点处理下一个邻节点.若这个邻节点不在开启或关闭列表中,继续下一步.
(d)将该节点的G(n)、H(n)、F(n)更新为新计算出的值,并将节点读入开启列表.
⑤将当前节点加进关闭列表.
2 系统实现
系统基于Microsoft Windows平台开发.
1.3D展示模块:场景建模过程借助 CAD建筑布局图对建筑进行参照,可较为精确地对医院各楼层及场所位置进行编辑,然后以中医院实景拍摄数据为基础对建模进行修正.模型完成后,通过Photoshop图像处理软件进行材质处理、灯光处理以及烘焙,最终达到仿真的效果.
2.互动操作功能:采用虚拟现实技术来实现.将已建立好的3D场景和其他3D展示模块导入到Unityy3d,进行功能和位置编辑,通过引擎中的模块化功能调整灯光、环境、质感,使整个场景达到逼真的效果,从而形成一个虚拟的三维场景.然后在场景中增加虚拟角色、通过设置属性功能,为物体添加道路属性、墙壁属性、障碍物属性、碰撞属性、重力环境属性实现环境仿真.
再运用C#、javascript等程序语言编程来实现用户的操作互动功能,自动漫游功能、三维导航功能、科室介绍、设备介绍、角色创建功能、前台咨询功能、预约功能、实时聊天功能等都可以通过编程来实现.
3.后台模块:该部分主要使用Microsoft SQL Server创建数据库,然后在数据库中创建相应的表,表中包含所需要的字段,并结合 C#、javascript等开发程序,建立前台与数据库之间的连接,实现前台与后台的通信,完成数据存储和调用.
3 系统功能展示
3.1 外景及内景漫游
用户可以通过手指拖动画面中的人物进行漫游,如在内景的时候可通过点击界面左上角的“外景漫游”图标切换至医院外景.如图4.
图4 外景漫游Fig.4 Outdoor scene wandering
3.2 就医导航
用户可以点击菜单栏上的“就医导航”按钮,点击后会跳出以下窗口选择想要导航去的科室,如图5.系统会自动计算出最短线路,指引画面中的人物走到目的地,起到导航的作用.
图5 就医导航Fig.5 Hospitalization navigation
3.3 医院简介
用户可以点击菜单栏上的“医院简介”按钮,系统会自动弹出医院简介窗口.如图6.
图6 医院简介Fig.6 Hospital introduction
3.4 就医指南
用户可以点击菜单栏上的“就医指南”按钮,会弹出一个子菜单,里面包含医院分布图、住院须知、就诊流程、交通指南、专家门诊时间等按钮.通过点击相应的按钮会弹出相应的信息介绍,用户可以通过手指左右滑动或者上下滑动来切换内容.如图7.
3.5 中医特色
用户点击菜单栏上的“中医特色”按钮,会弹出一些对中医特色治疗法的介绍,点击“查看特色治疗法”,会弹出相应的内容,如图8所示.
图7 就医指南Fig.7 Hospitalization guidance
3.6 科室介绍及专家介绍
如用户想对科室或专家进行了解,可以自行走到科室导诊台前也可通过导航到科室导诊台前,点击对话框或者护士角色,会弹出科室介绍及专家介绍的窗口(部分科室含有注意事项及设备展示),如图9所示.
图8 中医特色Fig.8 Traditional Chinese Medicine
图9 科室介绍Fig.9 Department introduction
3.7 小地图
小地图位于界面的右下角,如图10.用户可以通过小地图观察自己所在的位置.用户可以点击小地图左上角的三角按钮来隐藏小地图或者显示小地图.
图10 小地图Fig.10 Minimap
4 结论
厦门中医院自助三维导诊系统包括漫游、自动寻路、医院与科室介绍功能,为医院省去大量的人工引导和讲解,节约成本,也有利于患者了解就诊路线,缩短了就医时间,通过该系统,患者可以自主就医和了解医院信息.