肖紅玉,賀 輝,陳紅順
(北京師范大學珠海分校 信息技術學院,廣東 珠海 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服務模塊、設備服務模塊、角色服務模塊為系統的輔助管理模塊。