巴劍波,連凌,欒潔,徐雄利,盧姍姍
全球傳染病疫情的監(jiān)測(cè)預(yù)警是公共衛(wèi)生領(lǐng)域的研究熱點(diǎn)[1]。及時(shí)監(jiān)測(cè)全球當(dāng)下正在發(fā)生的傳染病疫情、早期發(fā)現(xiàn)和識(shí)別傳染病流行,有利于我國(guó)科學(xué)采取公共衛(wèi)生措施阻止傳染病傳入我國(guó)、降低其對(duì)我國(guó)全球戰(zhàn)略利益的影響[2]。目前,我國(guó)尚缺乏海外生物安全哨點(diǎn)監(jiān)測(cè)預(yù)警體系,基于互聯(lián)網(wǎng)信息技術(shù)的全球傳染病疫情監(jiān)測(cè)預(yù)警技術(shù)就成為首選的監(jiān)測(cè)預(yù)警手段?!叭騻魅静∫咔榫W(wǎng)絡(luò)數(shù)據(jù)監(jiān)測(cè)系統(tǒng)”是我們自主建設(shè)、自動(dòng)運(yùn)維、實(shí)時(shí)更新的監(jiān)測(cè)預(yù)警系統(tǒng),具有自動(dòng)數(shù)據(jù)收集、分析和多平臺(tái)展現(xiàn)的特點(diǎn),以世界各國(guó)正在流行的傳染病數(shù)據(jù)為重點(diǎn),提供當(dāng)下傳染病發(fā)生的地域分布、流行強(qiáng)度和流行態(tài)勢(shì),為我國(guó)入境人員傳染病篩查、出境人員免疫接種、國(guó)際旅行人群(尤其是軍事力量走向世界執(zhí)行聯(lián)合國(guó)維和、亞丁灣護(hù)航、環(huán)球航行、海上聯(lián)合訓(xùn)練與演習(xí)等)衛(wèi)生防護(hù)提供參考。
本文主要介紹“全球傳染病疫情網(wǎng)絡(luò)數(shù)據(jù)監(jiān)測(cè)系統(tǒng)”的設(shè)計(jì)和實(shí)施方案,以供類(lèi)似系統(tǒng)開(kāi)發(fā)參考。
“全球傳染病疫情網(wǎng)絡(luò)數(shù)據(jù)監(jiān)測(cè)系統(tǒng)”從系統(tǒng)架構(gòu)上分為數(shù)據(jù)庫(kù)、數(shù)據(jù)采集和數(shù)據(jù)展現(xiàn)3個(gè)部分。其中數(shù)據(jù)展現(xiàn)又分為一個(gè)后臺(tái)服務(wù)模塊和兩個(gè)客戶(hù)端模塊,見(jiàn)圖1??紤]到本系統(tǒng)中數(shù)據(jù)采集的頻度較低,數(shù)據(jù)展現(xiàn)的訪(fǎng)問(wèn)量短期內(nèi)也不會(huì)有爆炸性增長(zhǎng),所以數(shù)據(jù)庫(kù)模塊采用通用的關(guān)系型數(shù)據(jù)庫(kù)進(jìn)行實(shí)現(xiàn)。將來(lái)如果數(shù)據(jù)展現(xiàn)的需求提升,數(shù)據(jù)庫(kù)成為瓶頸,可以考慮對(duì)數(shù)據(jù)庫(kù)模塊進(jìn)行升級(jí),比如采用讀寫(xiě)分離或者緩存數(shù)據(jù)庫(kù)等。這些技術(shù)已經(jīng)有成熟的實(shí)現(xiàn)方案。
圖1 全球傳染病疫情網(wǎng)絡(luò)數(shù)據(jù)監(jiān)測(cè)系統(tǒng)構(gòu)成與模塊
1.1 數(shù)據(jù)采集模塊 主要負(fù)責(zé)收集疫情數(shù)據(jù)和疫情新聞,并對(duì)數(shù)據(jù)進(jìn)行查重、賦權(quán)、概數(shù)計(jì)算、歸類(lèi)比對(duì)等初步處理和整理,分別按照疾病名稱(chēng)、國(guó)家和地區(qū)、數(shù)據(jù)獲取時(shí)間等維度保存到系統(tǒng)本地?cái)?shù)據(jù)庫(kù)中,為系統(tǒng)數(shù)據(jù)調(diào)取、圖表呈現(xiàn)、地圖顯示等提供服務(wù)。
1.2 后臺(tái)服務(wù)模塊 主要負(fù)責(zé)按照客戶(hù)端請(qǐng)求從系統(tǒng)本地?cái)?shù)據(jù)庫(kù)中抽取數(shù)據(jù),并將數(shù)據(jù)分類(lèi)匯總后提供給客戶(hù)端。后臺(tái)服務(wù)模塊采用Web API架構(gòu),支持RESTFUL設(shè)計(jì)風(fēng)格和開(kāi)發(fā)方式,這種服務(wù)的簡(jiǎn)便性讓用戶(hù)能夠與之直接交互,使用它們的Web瀏覽器向后臺(tái)服務(wù)模塊提供的URL發(fā)送Get、Post等請(qǐng)求,獲取返回的內(nèi)容。
瀏覽器客戶(hù)端和手機(jī)客戶(hù)端UU兩個(gè)模塊分別適用于不同的工作環(huán)境,但它們的功能基本一致,就是從后臺(tái)服務(wù)模塊獲取數(shù)據(jù),將數(shù)據(jù)進(jìn)行可視化的展現(xiàn)。瀏覽器客戶(hù)端采用JavaScript和CSS3,手機(jī)客戶(hù)端則采用Android原生模式。
這樣的模塊劃分,有利于使模塊間接口清晰。模塊間的耦合度越低,邏輯結(jié)構(gòu)越容易理解,功能修改越容易實(shí)現(xiàn)。
2.1 數(shù)據(jù)采集來(lái)源 “全球傳染病疫情網(wǎng)絡(luò)數(shù)據(jù)監(jiān)測(cè)系統(tǒng)”首要目的是提供全球傳染病流行地域分布、流行強(qiáng)度和流行態(tài)勢(shì)特征,解決當(dāng)下有沒(méi)有傳染病爆發(fā)流行、爆發(fā)流行威脅程度和流行趨勢(shì)預(yù)判的問(wèn)題,其疫情數(shù)據(jù)的時(shí)效性、連續(xù)性、敏感性要求較高,而對(duì)傳染病發(fā)病準(zhǔn)確例數(shù)、轉(zhuǎn)歸預(yù)后、病死率等則要求較低。因此,系統(tǒng)數(shù)據(jù)來(lái)源就極為重要。數(shù)據(jù)來(lái)源渠道主要有二:其一是來(lái)源于專(zhuān)業(yè)從事網(wǎng)絡(luò)傳染病數(shù)據(jù)傳報(bào)的非官方網(wǎng)絡(luò)平臺(tái)(包括各類(lèi)非政府組織和機(jī)構(gòu)的自媒體、公告板、論壇等),其數(shù)據(jù)更新頻繁、及時(shí),時(shí)效性強(qiáng),較少受到來(lái)自政府和權(quán)威機(jī)構(gòu)的制約。該來(lái)源渠道為本系統(tǒng)的主要渠道;其二是來(lái)源于官方渠道的網(wǎng)絡(luò)平臺(tái),包括世界衛(wèi)生組織(WHO)、美國(guó)疾控中心(CDC)、歐盟疾控中心(ECDC)、美國(guó)醫(yī)療健康中心(NHC)及各個(gè)國(guó)家和地區(qū)政府網(wǎng)站,其數(shù)據(jù)權(quán)威性高,但通常疫情數(shù)據(jù)更新滯后,會(huì)受到政府和權(quán)威機(jī)構(gòu)的掣肘,也存在數(shù)據(jù)不全情況。該來(lái)源渠道只限定在WHO宣布疫情為全球突發(fā)公共衛(wèi)生事件時(shí),各官方網(wǎng)站才每日或?qū)崟r(shí)更新疫情數(shù)據(jù),如埃博拉疫情、新型冠狀病毒肺炎疫情等。
2.2 數(shù)據(jù)采集抓取 數(shù)據(jù)采集模塊以后臺(tái)服務(wù)模式運(yùn)行在服務(wù)器上,定時(shí)從互聯(lián)網(wǎng)預(yù)設(shè)網(wǎng)站抓取數(shù)據(jù),數(shù)據(jù)抓取頻度可以在控制臺(tái)人工調(diào)整并立即生效?;趥魅静∫咔榱餍袛?shù)據(jù)的實(shí)時(shí)性要求,系統(tǒng)預(yù)設(shè)的采集頻度通常以小時(shí)為單位。在系統(tǒng)初次部署時(shí),采取以分鐘為單位的數(shù)據(jù)抓取,以完成系統(tǒng)基礎(chǔ)歷史數(shù)據(jù)采集。當(dāng)系統(tǒng)進(jìn)入日常運(yùn)行狀態(tài)時(shí),應(yīng)當(dāng)將采集頻度降低。數(shù)據(jù)采集抓取的方式和頻度需要合理設(shè)置,過(guò)高的數(shù)據(jù)采集頻度可能影響源數(shù)據(jù)網(wǎng)站的正常運(yùn)行。
為了提高數(shù)據(jù)抓取的準(zhǔn)確性,筆者對(duì)數(shù)據(jù)源的網(wǎng)站結(jié)構(gòu)和頁(yè)面結(jié)構(gòu)進(jìn)行了逐一分析,為每一個(gè)網(wǎng)站分別設(shè)置用于數(shù)據(jù)過(guò)濾的正確表達(dá)式和其他相關(guān)的過(guò)濾規(guī)則。
正因如此,眾多的英語(yǔ)老師始終在跨文化教學(xué)中培養(yǎng)學(xué)生的交際能力、思維能力,通過(guò)外語(yǔ)的學(xué)習(xí)來(lái)掌握外國(guó)文化,了解外國(guó)文化,對(duì)其有更深層次的認(rèn)識(shí)。然而,相當(dāng)一部分學(xué)生的閱讀與寫(xiě)作能力較強(qiáng),但是聽(tīng)力與口語(yǔ)能力堪憂(yōu),使得其對(duì)于英語(yǔ)的整體掌握程度不能達(dá)到要求,也不能很好的掌握外國(guó)文化。正是在此基礎(chǔ)上,本文結(jié)合外語(yǔ)教學(xué)的現(xiàn)實(shí)情況,著重探討提出一些現(xiàn)實(shí)中發(fā)生的問(wèn)題,并且在研究中尋找切實(shí)可行的對(duì)策。
另外,疫情數(shù)據(jù)是動(dòng)態(tài)變化的,經(jīng)常會(huì)發(fā)生數(shù)據(jù)的修訂。因此,數(shù)據(jù)采集模塊被設(shè)計(jì)為能夠自動(dòng)判斷數(shù)據(jù)是否已經(jīng)發(fā)生修訂,如果發(fā)現(xiàn)數(shù)據(jù)變化,及時(shí)更新本地?cái)?shù)據(jù)庫(kù)中的數(shù)據(jù)。
2.3 數(shù)據(jù)分析整理和漢化 系統(tǒng)數(shù)據(jù)采集模塊對(duì)抓取到的數(shù)據(jù)進(jìn)行查重、比對(duì)、計(jì)算和分析,并按照疾病名稱(chēng)、國(guó)家和地區(qū)、采集時(shí)間等維度進(jìn)行整理。
模塊中內(nèi)含翻譯子模塊,對(duì)于收集到的英文信息自動(dòng)進(jìn)行翻譯漢化。對(duì)于疾病名稱(chēng)、國(guó)家/地區(qū)名稱(chēng),筆者設(shè)計(jì)了中英對(duì)照字典庫(kù)。初始時(shí),字典庫(kù)為空,對(duì)采集到的英文信息通過(guò)調(diào)用百度翻譯API接口進(jìn)行機(jī)器翻譯。同時(shí)將翻譯保存到本地的字典庫(kù),下次翻譯時(shí)就不再需要調(diào)用百度翻譯API接口。管理員可以對(duì)字典庫(kù)中的條目進(jìn)行修改,以避免機(jī)器漢化翻譯中的錯(cuò)誤和差錯(cuò)。一旦條目被修改,會(huì)立即觸發(fā)對(duì)已經(jīng)完成翻譯的疾病名稱(chēng)、國(guó)家/地區(qū)名稱(chēng)的修改。這樣就保證了系統(tǒng)中數(shù)據(jù)的正確性。
系統(tǒng)中設(shè)置的傳染病疫情新聞版塊也通過(guò)百度翻譯API進(jìn)行漢化,方便用戶(hù)閱讀,作為監(jiān)測(cè)預(yù)警信息的有效補(bǔ)充。由于新聞內(nèi)容為整段文字的翻譯,而非如疾病名稱(chēng)那樣的單詞或詞組,因此新聞版塊的翻譯結(jié)果不保存到字典庫(kù),管理員無(wú)須對(duì)新聞內(nèi)容進(jìn)行修正。
實(shí)際流程中,翻譯子模塊采用獨(dú)立的線(xiàn)程進(jìn)行工作,對(duì)數(shù)據(jù)中未翻譯的信息進(jìn)行翻譯,并將新獲得的單詞或詞組類(lèi)型的翻譯結(jié)果保存到字典中。見(jiàn)圖2。
圖2 翻譯模塊相關(guān)的UML序列圖
數(shù)據(jù)展現(xiàn)是直接面向使用者的模塊,決定了用戶(hù)對(duì)系統(tǒng)的直觀(guān)感受。因此需要考慮可用性、安全性和美觀(guān)性[3]。
3.1 可用性 數(shù)據(jù)展現(xiàn)是系統(tǒng)數(shù)據(jù)采集、數(shù)據(jù)分析的最終目的,直接決定了系統(tǒng)的可用性。為了方便用戶(hù)使用,系統(tǒng)設(shè)計(jì)時(shí)采用了前后端分離的模式,后端使用Web API提供數(shù)據(jù)服務(wù),前端通過(guò)瀏覽器的JavaScript語(yǔ)言以AJAX方式從Web API接口讀取數(shù)據(jù),實(shí)現(xiàn)數(shù)據(jù)列表、可視化繪圖、電子地圖應(yīng)用等展現(xiàn)效果;而手機(jī)上開(kāi)發(fā)的原生模式的APP也通過(guò)調(diào)用Web API獲取數(shù)據(jù)進(jìn)行數(shù)據(jù)列表顯示。前后端分離的好處是一個(gè)后端服務(wù)可以同時(shí)提供PC機(jī)和手機(jī)兩種不同的客戶(hù)端,便于系統(tǒng)功能的拓展和日常的維護(hù)。AJAX網(wǎng)頁(yè)開(kāi)發(fā)技術(shù)的應(yīng)用通過(guò)在后臺(tái)與服務(wù)器進(jìn)行少量數(shù)據(jù)交換實(shí)現(xiàn)異步更新,而不用重新加載整個(gè)網(wǎng)頁(yè),具備頁(yè)面操作流暢的特點(diǎn),有利于提高系統(tǒng)的可用性。
3.2 安全性 B/S架構(gòu)首先要面對(duì)的就是如何對(duì)用戶(hù)進(jìn)行驗(yàn)證,防止非法的訪(fǎng)問(wèn)。系統(tǒng)前端用戶(hù)登錄時(shí),將用戶(hù)名和密碼傳給后端與數(shù)據(jù)庫(kù)中保留的賬戶(hù)信息進(jìn)行匹配。如果匹配成功,就產(chǎn)生一個(gè)令牌。后端服務(wù)在返回令牌給前端的同時(shí),將令牌與用戶(hù)賬戶(hù)、權(quán)限等信息的映射關(guān)系保存在內(nèi)存中的令牌哈希表里。前端程序(包括PC端和手機(jī)端)的數(shù)據(jù)訪(fǎng)問(wèn)均包含這個(gè)令牌,系統(tǒng)后端在收到數(shù)據(jù)請(qǐng)求時(shí)進(jìn)行令牌驗(yàn)證和權(quán)限驗(yàn)證,否則將通知前端程序強(qiáng)制退出到登錄界面;后端令牌哈希表的信息中包含一個(gè)時(shí)間戳,系統(tǒng)后端每次收到用戶(hù)訪(fǎng)問(wèn),都會(huì)更新此時(shí)間戳,如果用戶(hù)長(zhǎng)時(shí)間沒(méi)有訪(fǎng)問(wèn)動(dòng)作,時(shí)間戳將過(guò)期,則系統(tǒng)后端服務(wù)就會(huì)刪除此令牌,這個(gè)機(jī)制有效保證了用戶(hù)使用本系統(tǒng)的權(quán)限不被誤用或?yàn)E用。
3.3 美觀(guān)性 在系統(tǒng)前端開(kāi)發(fā)中,客戶(hù)端采用了CSS3渲染,使界面具有較好的視覺(jué)效果。在數(shù)據(jù)展現(xiàn)方面,充分利用各種成熟的組件,如DataTables、HighCharts、百度地圖、高德地圖等,提升系統(tǒng)可視化水平。
系統(tǒng)采用DataTables工具用于實(shí)現(xiàn)自帶分頁(yè)、排序等功能的數(shù)據(jù)表格,選擇DataTables是因?yàn)樗哂忻烙^(guān)易用的特性,更重要的是它提供了更強(qiáng)大的擴(kuò)展能力。例如,本課題組編寫(xiě)了漢字拼音轉(zhuǎn)換代碼掛接在其fn.dataTableExt.oSort接口中實(shí)現(xiàn)漢字拼音的排序,見(jiàn)圖3。
圖3 漢字拼音排序?qū)崿F(xiàn)的代碼
系統(tǒng)通過(guò)修改ColumnDefs的render屬性實(shí)現(xiàn)了點(diǎn)擊疾病名稱(chēng)自動(dòng)跳轉(zhuǎn)到相關(guān)的百度百科詞條的功能。見(jiàn)圖4。
圖4 字段中超鏈接實(shí)現(xiàn)的代碼
系統(tǒng)利用HighCharts工具豐富的功能接口實(shí)現(xiàn)圖表繪制,可以將疫情數(shù)據(jù)以直方圖、折線(xiàn)圖、餅圖、雷達(dá)圖等多種圖表繪制出來(lái),以實(shí)現(xiàn)可視化應(yīng)用,并大大減輕了整個(gè)開(kāi)發(fā)過(guò)程的工作強(qiáng)度,見(jiàn)圖5~6。
圖5 HighCharts工具實(shí)現(xiàn)的病例分布柱狀圖
圖6 HighCharts工具實(shí)現(xiàn)的病例趨勢(shì)曲線(xiàn)
系統(tǒng)充分利用百度地圖、高德地圖、amCharts等國(guó)內(nèi)外最知名的電子地圖,通過(guò)將數(shù)據(jù)在地圖上展現(xiàn)的方式,可以實(shí)現(xiàn)各種形式的基于地圖的數(shù)據(jù)分析,給用戶(hù)以一目了然的直觀(guān)感受。在系統(tǒng)建立的新冠疫情專(zhuān)題板塊,利用高德地圖在客戶(hù)端加載完成的特點(diǎn),建立了疫情流行與分布散點(diǎn)圖,直觀(guān)展現(xiàn)疫情數(shù)據(jù)的同時(shí)降低了服務(wù)器負(fù)載,收到較好的應(yīng)用效果,見(jiàn)圖7。
圖7 用高德地圖實(shí)現(xiàn)的新型冠狀病毒肺炎疫情分布地圖
以上是筆者在本次全球傳染病監(jiān)測(cè)預(yù)警系統(tǒng)的開(kāi)發(fā)中的主要設(shè)計(jì)思想,以及采用的實(shí)現(xiàn)方案。從設(shè)計(jì)思想來(lái)說(shuō),核心目標(biāo)是通過(guò)切分明晰的模塊邊界,減少模塊的耦合度;通過(guò)合理安排線(xiàn)程間的調(diào)度,提高整個(gè)系統(tǒng)的效率。從實(shí)現(xiàn)方案的角度,盡可能采用了功能強(qiáng)大、使用廣泛并且有很好技術(shù)支持的插件,從而縮短開(kāi)發(fā)周期?;镜脑瓌t是在用戶(hù)的使用體驗(yàn)和開(kāi)發(fā)的便利性?xún)蓚€(gè)方面尋求平衡點(diǎn),即兼顧使用效果和生產(chǎn)成本。