肖红玉,贺 辉,陈红顺
(北京师范大学珠海分校 信息技术学院,广东 珠海 519087)
自动体外除颤仪(automated external defibrillator,AED)作为一种通过电击来抢救和治疗致命性心律失常的便携式设备是院外心搏骤停(out-of-hospital cardiac arrest,OHCA)的“救命神器”。近20年来,欧美、日本、韩国、台湾、香港等发达国家和地区在公共场所密集配置自动体外心脏除颤仪(AED),美国每10万人口便拥有198.9台AED设备,日本每10万人拥有234台,英国作为发达国家,在AED配置方面与美国类似,英国政府早在1999年就制定了在大型购物商场、机场、火车站等公共场所安置AED的政策。由于发达国家和地区AED设备投放几乎达到消防设施配置标准,使心脏骤停的救活率从20年前的不足6%提高到50%以上。
国内这方面的工作起步较晚,2006年北京首都机场在二号航站楼内安装了11台AED设备,开创了国内公共场所安装AED设备的先河[1],14年来,全国各地在公共场所安装的AED总数达到数千台,主要集中在经济发达地区。上海在机场、火车站、地铁、公交枢纽、体育场馆、商业中心、学校等人流密集的公共场所设置AED计1 400余台,上海市民可通过微信公众号“上海市红十字会服务号”和“上海120”的置底菜单获取这些设备的位置分布情况。从2017年开始,深圳在机场、地铁站、火车站、体育馆等人流密集公众场所配备AED(自动体外除颤仪),这些AED自安装以来,已成功救治多名心脏骤停患者,据深圳市急救中心2020年4月的数据,深圳已完成首期500台AED、二期1 000台AED安装配置工作,第三期2 000台AED正在安装中。安装完成后,深圳公共场所AED救命神器将增至3 500台。2017年珠海在珠海度假村酒店投放首台AED设备,此后陆续在机场、学校、政府办事机构、车站、码头、大型商场、街道社区等人群密集区域进行了投放;据不完全统计,珠海机场投放了16台AED设备,金湾区应急办向辖区的5所高校及16所中小学校发放了AED,完成了全区校园AED全覆盖工作;珠海市横琴新区管理委员会社会事务局通过组织、统筹协调辖区内各机关、口岸、学校、单位、乡村等部门,在公共场所投放22台AED;其他投放AED的设备还包括圆明新园、横琴长隆度假区、农科中心等人口密集区域。但是已投放的AED设备缺乏有效的管理机制和平台,导致存在以下问题:市民不了解AED在全市的分布情况,意外发生时,无法第一时间获取相关信息;公众对AED的认识严重不足,超过半数的市民不了解AED,甚至没听说过。因此,该文利用GIS(geographic information system,地理信息系统)、LBS(location based services,基于位置服务)、微信小程序等技术,设计研发珠海AED急救地图,便于管理机构对AED设备进行有效统一管理,便于珠海市民了解、熟悉、使用AED设备,充分发挥“救命神器”的作用。
珠海AED急救地图系统架构的主要设计思想是将业务数据的处理、计算和存储交给云端,移动终端(手机)向云端发出HTTP通信请求并获取数据[2]。鉴于移动终端的存储、计算、处理能力有限,这一设计思想能够充分发挥云服务器快速处理、海量存储的优势,结合了移动终端的便捷性,带给用户更佳的使用体验。系统架构主要有三层,分别是最上层的移动终端应用层、中间AED急救地图管理层和底层的云服务层。移动端由微信小程序接入,采用WXML、WXSS和JavaScript语言完成,其中WXML负责数据绑定、组件样式等工作;WXSS负责对WXML组件样式渲染;JavaScript负责应用逻辑层设计。急救地图管理层采用MVC设计模式、SpringBoot开发框架,通过阿里云平台架构,应用服务器采用支持高并发的Ngnix,数据库采用MySQL。登录界面采用小程序授权无感登录方式,方便快捷,一键获得用户的微信号及微信头像信息。所有数据存储在服务器端,服务器通过提供restful api接口,以JSON格式和小程序间进行交互,服务器通过访问MySQL数据库获取数据,并将数据返回给小程序端[2-5]。具体的架构如图1所示。
图1 珠海AED急救地图系统架构
文中的AED急救地图移动端以微信小程序为载体,微信小程序具有无需下载、无需安装的优势,避免了App繁琐下载注册等步骤,真正做到了用完即走的理念,用户不用担心手机上安装过多的软件以及内存占用的问题。2018年,微信小程序获得“世界互联网领先科技成果”,累计至2019年11月,小程序数量超过450万。微信小程序依赖微信应运而生,提供了全套的微信小程序端和后台服务器端的API应用,适合当下主流的“接口开发”模式。微信小程序的标签语言与HTML5高度相似,其脚本语言使用当下最流行的前端框架之一——VUE框架,使得逻辑层和渲染层分开设计,逻辑层运行在JSCore中。
文中的小程序端在功能上主要由以下部分组成:查看AED分布、地图导航、一键拨打120急救电话、浏览急救资讯。小程序以其丰富的地理信息相关API接口为GIS的应用开发提供了便利,利用第三方地图API通过查找并展示定位地点周边的POI信息,快速知道“我周围有什么”。利用用户手机获取当前位置,通过逆地址解析,把当前位置的经纬度坐标转换为地址,展示定位地点的详细地址信息及周边高权重的POI分布数据,快速知道“我在哪”,逆地址解析服务默认对当前定位后的坐标进行解析,也可以在调用时指定经纬度进行解析。检索返回的结果包含完整AED数据项,当用户位置发生变化时,地图上的标识符也会实时改变。
目前公众对AED的认识严重不足,超过半数的市民不了解AED,甚至没听说过,只有少数人充分了解并且愿意使用AED,因此,移动终端的另一个功能是AED科普知识宣传推广。在微信小程序中的资讯模块可实时获得AED地图管理层发布的AED科普知识、资讯、视频、音频材料等。
为了便于用户一键获得珠海全市AED投放信息,需要在基础地图上绘制自定义POI,首先将AED的投放位置经纬度、状态、地址名称、厂家、型号、生产日期、检修日期等数据存入数据库中,调用百度/高德/腾讯等地图API创建AED标注并且打到地图上,调整视野使得添加的标注可见。为了使标注直观、清晰、可快捷获得丰富的有效信息,该文还在标注点上放置了自定义覆盖物,将包含标注Marker、文字标签Label、信息窗口InfoWindow、圆形Circle、多边形Polygon和折线Polyline的自定义覆盖物绘制在AED地图上,当用户打开地图时,将显示珠海市的全部AED标注,选中某一个AED标注时将弹出信息窗口,显示该AED设备的详细信息。启用定位服务,将显示周边附近的AED设备。
文中的AED急救地图系统设计了3个角色:普通用户(游客)、安全员、系统管理员。普通用户可利用系统查找全市AED并导航至最近或选定的AED,安全员负责AED设备管理,包括AED设备上新、AED设备运维管理,系统管理员负责急救资讯发布、信息审核、角色操作权限分配、系统运维等。
普通用户无需登录,安全员和系统管理员需要登录。当安全员和系统管理员首次扫码微信登录码的时候,需要授权允许获取一些数据信息,如openid、unionid、微信号、微信头像等,系统验证用户的唯一标识openid是否已经存在数据库中,且是否分配了相应模块的操作权限,如果openid已保存在数据库中表明用户已经将相应的个人信息补充完整,可操作获得权限的功能模块;若不存在则需要用户同意授权获得其微信号、微信头像等信息,此过程相当于在系统中进行注册,以后的登录操作扫码即可,便捷方便。
设备服务模块主要完成AED设备上新及AED日常运维工作,包括定期检查AED的状态并保存至云数据库服务器中。当上新AED设备时,需要提供AED设备的编号、AED设备的生产时间、AED设备的购买时间、AED设备的安装时间、AED设备的状态、AED设备的生产厂家、AED设备的型号、AED设备的放置位置信息(经度、纬度、所在的区域、详细地址等),安全员负责将以上信息填写完整,并发送给系统管理员审核,审核通过后即完成上新,普通用户可在地图上查找到该设备。运维工作主要为安全员完成设备的定期巡检,并实时记录设备的运行状态。
文中设计的数据表包括:用户表、AED设备基础信息表、AED设备巡检表、资讯表、角色表、菜单表、用户角色表、角色菜单表等。
用户表,用于存储用户基本信息,系统采用微信扫码登录的方式,所以把openid作为用户的唯一标识,同时也是用户表的主键,除此之外还记录unionid,此为用户在开放平台的唯一标识符,nickName用于记录用户昵称,wxId表示获取到的微信号,avator表示微信头像,mobile记录用户手机号(非必填项),手机号可通过用户授权获得,也可以由用户在用户中心补充填写,createTime记录用户账号创建时间(必填,默认为系统时间),loginTime记录用户最后登录时间(必填,默认获取用户最后登录时的系统当前时间)。
AED设备基础信息表,用于用户记录AED设备的基础信息,包括:AED设备的编号,每个AED设备有唯一的标号,同时编号为基础信息表的主键;AED设备的生产时间(必非填);AED设备的购买时间(必填);AED设备的安装时间(非必填);AED设备的状态,状态可细分为:正在调试、正在维修、可用、损毁等情况,可在运维过程中根据实际情况定制状态码;AED设备的生产厂家;AED设备的型号(必填);AED设备的放置位置信息,位置信息包括经度、纬度、所在的区域、详细地址。
AED设备巡检表,用于用户记录AED设备的定期或不定期巡检记录,包括主键列巡检id;AED设备的编号,设备编号为外键,引用AED设备基础信息表中的AED设备的编号列;巡检时间(必填,默认获取记录填写时的系统时间);AED设备的状态;设备详情,设备的详情不仅仅包括文字,也可以包括图片或者视频等信息,在操作界面上提供的是一个富文本插件,方便用户上传这些详细信息。
资讯表,用于记录系统上发布的各种资讯,包括资讯的编号(主键,资讯的唯一标识);资讯的发布时间(必填,默认为发布时系统的当前时间);资讯标题;资讯的内容,资讯内容不仅仅包含文字,还可上传图片、视频、链接、附件等富文本信息;发布者的微信号,此列为外键,引用用户表中的微信号列;资讯的状态,状态包括:草稿、待审核、审核通过等。
用户权限管理指的是用户通过角色与权限进行关联,简单地说,一个用户拥有若干角色,每个角色拥有若干权限,构造成“用户-角色-权限”授权模型。在该模型中,用户与角色之间,角色与权限之间通常都是多对多的关系,涉及的表结构也比较多。文中跟权限管理相关的表有:角色表、菜单表、用户角色表、角色菜单表等。角色表有2个字段,分别用于记录角色ID和角色名称;菜单表记录菜单编号、菜单名称、菜单URL以及父菜单编号;用户角色表记录用户和角色的对应关系,可有2列,分别是用户id和角色id;角色菜单表记录角色和菜单的对应关系,可有2列,分别是角色id和菜单id。
在此仅给出用户表、AED设备基础信息表、AED设备巡检表、资讯表,分别如表1~表4所示。
表1 用户表
表2 AED设备基础信息表
表3 AED设备巡检表
表4 资讯表
续表4
部分AED设备投放在机场、火车站、地铁站、体育馆等大型的建筑物内,如何在建筑物内快速定位并导航到最近的AED设备争取救援生命的“黄金4分钟”,是非常关键的问题。室内导航服务模块由定位和路径规划两部分组成,与室外常用GPS定位不同,室内的定位通常利用WiFi(wireless fidelity)和智能手机传感器实现[6]。该文采用基于粒子滤波融合定位方法进行室内定位,该方法融合了PDR(pedestrian dead reckoning,行人航迹推算)算法和WiFi信号指纹定位[7-11],可以有效提高定位精度。结合PDR和WiFi定位的粒子滤波融合算法如图2所示,PDR分为2个阶段:①构建WiFi指纹数据库,此为离线阶段,采用行走采集的方式,记录PDR坐标和WiFi信号并存储入库;②计算用户位置,此为在线实时计算,将PDR定位和WiFi定位结果进行粒子滤波融合并计算获得用户实时位置[12-15]。
图2 融合PDR和WiFi定位的粒子滤波算法流程
该文依据Dijkstra算法为用户提供路径规划,Dijkstra算法基于1个包含顶点和弧的有向图,在地图中,顶点即为道路节点,弧的长度为节点之间的距离。所以,需要预先建立定位区域的导航路网:将地图中所有的拐点、道路终点、进出门口的两侧设为节点;若相邻节点之间的距离大于5 m,则每隔5 m在室内道路上设定1个节点;连接所有相邻节点并标记节点之间的距离即形成到导航路网。用户开启导航功能时,以距离用户定位位置最近的道路节点为起点,距离目标位置最近的道路节点为终点,Dijkstra算法便能计算得到1条起点到终点的最短路径,结合航向就能够为用户提供路径导航[16-18]。
该文对室内定位与导航进行了实验及结果分析,实验场地为珠海机场,机场已安装了16台AED设备及数十个WiFi路由器。实验所用设备为华为nova 7,操作系统为Android 6.0。首先进行PDR实验,为验证PDR实验中的步态检测和步长估计是否准确,在长度为50米的直行道路上,实验者手持手机在该路径进行了30次测试并取其平均值,结果表明,与实际距离的平均误差为2.2米,相对精度约95.6%,稳定性与相对精度均符合要求。接着在总长度为40米环形道路上测试,同样是实验者手持手机在该路径进行了30次测试并取其平均值,结果表明,平均误差为2.9米,具有较好的航向和精度。其次构建WiFi指纹数据库,实验中,测绘人员手持移动终端沿着机场候机楼的各主要干道匀速行走,记录行走坐标并采集WiFi信号,建立实验指纹库,当经过拐点时,进行PDR坐标修正,保证PDR轨迹与实际行走路径基本重合。虽然室内存在干扰WiFi信号的因素,但由于行走采集方法的采用密度较大,在一定程度上弥补了信号的不稳定性,结果表明基于行走采集方法构建的WiFi指纹数据库具有较大的可靠性,且具有较好的时间效率。第三步进行粒子滤波融合定位实验验证,实验中每隔2.5 s获取一次WiFi定位结果,测试过程中匀速行走,粒子初识数量设为1 500,结果表明粒子滤波融合定位轨迹与真实路径的基本重合,最大误差约5.91米,平均误差3.12米。最后进行路径规划验证,用户在候机楼一楼入口打开AED急救地图,找到最近的AED设备,开启路径导航功能,终端显示从用户当前位置到AED设备所在位置的最短路径,用户根据规划路径快速找到AED设备,结果表明规划的最短路径与真实的最短路径吻合度较高。
该文以微信小程序为载体,基于百度/高德/腾讯地图API设计并实现了珠海AED急救地图,系统由移动终端应用层、AED急救地图管理层和云服务层组成,用户使用移动终端可一键获得珠海AED设备的投放数据信息,可定位查找周边附近的AED设备;采用融合PDR和WiFi指纹数据库的粒子滤波融合定位算法,可较精确定位用户室内位置,采用Dijkstra最短路径规划算法,推荐的最短导航路径与实际路径基本吻合。资讯管理模块有助于AED科普知识的推广。POI服务模块、设备服务模块、角色服务模块为系统的辅助管理模块。