李劍 溫海燕 張恒
隨著交通多元便捷,大規(guī)模人口的流動(dòng)更加廣泛和快捷,激活了傳染病傳播網(wǎng)絡(luò)中的長(zhǎng)程鏈接,導(dǎo)致傳染病的擴(kuò)散更加迅速,嚴(yán)重影響了傳染病的防控。本文的研究采集某種傳染病確診病人及疑似病人的傳染病史、病歷數(shù)據(jù)和親緣、人口家庭關(guān)系數(shù)據(jù),綜合運(yùn)用圖模型及相關(guān)數(shù)據(jù)庫(kù)平臺(tái)、圖查詢語(yǔ)言等技術(shù),建立滿足傳染病防控工作的人員及其親緣關(guān)系圖模型,實(shí)現(xiàn)現(xiàn)有人口家庭系統(tǒng)數(shù)據(jù)模型到圖數(shù)據(jù)模型的轉(zhuǎn)換及高風(fēng)險(xiǎn)人群的快速定位,對(duì)政府和主管部門決策輔助支持具有重要的意義。
大規(guī)模的人口的流動(dòng)激活了網(wǎng)絡(luò)中的長(zhǎng)程鏈接,使得傳染病的防控任務(wù)更加艱巨。傳染病的爆發(fā)和發(fā)展變化、醫(yī)療衛(wèi)生資源的調(diào)配和部署還缺乏大數(shù)據(jù)支撐,這也給傳染病防控工作帶來(lái)了諸多挑戰(zhàn)。傳染源和傳播途徑是傳染病流行的重要環(huán)節(jié),“控制傳染源,切斷傳播途徑”成為傳染病防控重要措施,需要快速的篩查傳染病患者的密切接觸人員這類高風(fēng)險(xiǎn)人群,避免傳染源增多,此類篩查需要重點(diǎn)對(duì)關(guān)聯(lián)關(guān)系數(shù)據(jù)進(jìn)行分析。目前的諸多衛(wèi)生信息系統(tǒng)大都采用傳統(tǒng)關(guān)系模型,加之流行病學(xué)調(diào)查數(shù)據(jù)量大,且常使用手工填報(bào)非結(jié)構(gòu)化的數(shù)據(jù),這都不利于快速開(kāi)展關(guān)聯(lián)關(guān)系查找分析。圖數(shù)據(jù)庫(kù)作為一類數(shù)據(jù)存儲(chǔ)管理平臺(tái),更適合存儲(chǔ)分析事物間的關(guān)聯(lián)關(guān)系,已在社交網(wǎng)絡(luò)、通信網(wǎng)絡(luò)等領(lǐng)域廣泛應(yīng)用。如果能基于圖數(shù)據(jù)庫(kù),依托傳染病患者、疑似病人的傳染病史、病歷數(shù)據(jù)和親緣、姻緣關(guān)系等數(shù)據(jù),構(gòu)建基于圖模型的親緣姻緣關(guān)系,結(jié)合主索引關(guān)聯(lián)個(gè)體病人的電子健康檔案和歷史就診記錄,對(duì)病人的傳染病暴露風(fēng)險(xiǎn)進(jìn)行分級(jí)評(píng)估,將給予政府和主管部門決策輔助支持具有重要的意義。
(一)主流圖數(shù)據(jù)庫(kù)介紹
在計(jì)算機(jī)科學(xué)中,圖數(shù)據(jù)庫(kù)(Graph Database,GDB[)是一個(gè)使用圖結(jié)構(gòu)進(jìn)行語(yǔ)義查詢的數(shù)據(jù)庫(kù),它使用節(jié)點(diǎn)、邊和屬性來(lái)表示和存儲(chǔ)數(shù)據(jù)。該系統(tǒng)的關(guān)鍵概念是圖,它直接將存儲(chǔ)中的數(shù)據(jù)項(xiàng),與數(shù)據(jù)節(jié)點(diǎn)和節(jié)點(diǎn)間表示關(guān)系的邊的集合相關(guān)聯(lián)。
目前,據(jù)維基百科統(tǒng)計(jì),主流的圖數(shù)據(jù)庫(kù)有十多種,例如Neo4j是一個(gè)基于Java實(shí)現(xiàn),兼容ACID特性的開(kāi)源圖數(shù)據(jù)庫(kù);FlockDB是Twitter為進(jìn)行關(guān)系數(shù)據(jù)分析而構(gòu)建的圖數(shù)據(jù)庫(kù);InfiniteGraph是一個(gè)分布式的圖形數(shù)據(jù)庫(kù),已被美國(guó)國(guó)防部和美國(guó)中央情報(bào)局所采用;HugeGraph是百度開(kāi)源的分布式圖數(shù)據(jù)庫(kù),可支持千億級(jí)規(guī)模關(guān)系數(shù)據(jù);ArangoDB是一個(gè)原生多模型數(shù)據(jù)庫(kù),兼有key/value鍵/值對(duì)、Graph圖和document文檔數(shù)據(jù)模型,該數(shù)據(jù)庫(kù)采用了試用于所有數(shù)據(jù)模型的統(tǒng)一內(nèi)核和統(tǒng)一數(shù)據(jù)庫(kù)查詢語(yǔ)言,無(wú)需在不同數(shù)據(jù)模型間相互“切換”,也不需要執(zhí)行數(shù)據(jù)傳輸過(guò)程。
(二)關(guān)系型數(shù)據(jù)庫(kù)與圖數(shù)據(jù)庫(kù)關(guān)聯(lián)關(guān)系查詢效率比較
關(guān)系型數(shù)據(jù)庫(kù)的數(shù)學(xué)理論關(guān)系代數(shù)將實(shí)體本身的屬性元組視為關(guān)系,實(shí)體間的關(guān)聯(lián)關(guān)系通過(guò)指定鍵值的連接運(yùn)算實(shí)現(xiàn),這就意味著在查找實(shí)體間關(guān)聯(lián)關(guān)系時(shí),將進(jìn)行大量的連接操作,其中需要進(jìn)行集合間的笛卡爾積運(yùn)算和選擇、投影運(yùn)算,消耗大量的計(jì)算、存儲(chǔ)資源,隨著數(shù)據(jù)量的增加,運(yùn)算效率急劇下降。圖數(shù)據(jù)庫(kù)運(yùn)用數(shù)學(xué)理論圖論將數(shù)據(jù)組織為屬性圖,將實(shí)體及其屬性視為節(jié)點(diǎn),實(shí)體間的關(guān)聯(lián)關(guān)系視為邊,相關(guān)類型屬性視為標(biāo)簽,實(shí)體間關(guān)聯(lián)關(guān)系的查找通過(guò)圖的遍歷即可實(shí)現(xiàn),指定實(shí)體的關(guān)聯(lián)關(guān)系與節(jié)點(diǎn)數(shù)量無(wú)關(guān)。文獻(xiàn)以MySQL關(guān)系型數(shù)據(jù)庫(kù)和Neo4j圖數(shù)據(jù)庫(kù)為實(shí)驗(yàn)環(huán)境,100萬(wàn)節(jié)點(diǎn),300萬(wàn)邊數(shù)據(jù)量的不同深度遍歷進(jìn)行了比較,結(jié)果通過(guò)對(duì)比關(guān)聯(lián)關(guān)系查詢時(shí)間發(fā)現(xiàn),在深度為1~2時(shí)(即一對(duì)一映射),無(wú)論關(guān)系型數(shù)據(jù)庫(kù)還是圖數(shù)據(jù)庫(kù),在查詢時(shí)間方面都表現(xiàn)得足夠好。隨著深度的增加,關(guān)系型數(shù)據(jù)庫(kù)查詢時(shí)間呈指數(shù)級(jí)增長(zhǎng),然而圖數(shù)據(jù)庫(kù)卻仍然能在較短的時(shí)間內(nèi)完成查詢?nèi)蝿?wù)。顯然,關(guān)系型數(shù)據(jù)庫(kù)在所擅長(zhǎng)的方面有很好的技術(shù)能力,但在管理關(guān)聯(lián)數(shù)據(jù)時(shí)卻無(wú)能為力,特別是任何超出尋找直接關(guān)系或是尋找2級(jí)間接關(guān)系這樣的淺遍歷查詢,都將因?yàn)樯婕暗乃饕龜?shù)量而使查找變得緩慢。在社交數(shù)據(jù)中遞歸搜索關(guān)聯(lián)關(guān)系這類應(yīng)用中,圖數(shù)據(jù)庫(kù)Neo4j所需要計(jì)算的數(shù)據(jù)量遠(yuǎn)小于關(guān)系型數(shù)據(jù)庫(kù),性能要比關(guān)系數(shù)據(jù)庫(kù)(MySQL)更好,因?yàn)樗梢员闅v給定的社交圖。圖遍歷需要更多的子查詢,查詢應(yīng)該更復(fù)雜。另外,由于關(guān)系模型的原因,關(guān)系數(shù)據(jù)庫(kù)必須在查詢中執(zhí)行幾個(gè)子查詢,這相當(dāng)于在圖形數(shù)據(jù)庫(kù)中執(zhí)行指數(shù)查詢比在符號(hào)查詢中執(zhí)行更多的查詢,因此執(zhí)行時(shí)間比查詢數(shù)據(jù)庫(kù)更長(zhǎng)。圖形數(shù)據(jù)庫(kù)無(wú)論在性能、建模和維護(hù)方面都能迅速響應(yīng)。因此,可以將圖數(shù)據(jù)庫(kù)視為比關(guān)系數(shù)據(jù)庫(kù)更好的數(shù)據(jù)庫(kù),如圖1所示。
患者的直系親屬和家庭成員作為其密切接觸人員,該人群大概率是傳染病的高風(fēng)險(xiǎn)人群,所以快速查找患者的親緣關(guān)系人員是本課題的重要內(nèi)容之一。所在地區(qū)經(jīng)過(guò)多年積累,已建成人口信息數(shù)據(jù)庫(kù),用于支撐日常人口事務(wù)管理的業(yè)務(wù)工作,但其數(shù)據(jù)存儲(chǔ)和管理主要依賴傳統(tǒng)的關(guān)系模型。關(guān)系模型有著嚴(yán)密的關(guān)系代數(shù)數(shù)學(xué)理論支撐,相應(yīng)的數(shù)據(jù)庫(kù)歷經(jīng)多年研究,能夠穩(wěn)定高效的支撐業(yè)務(wù)管理工作,但隨著人口數(shù)據(jù)的不斷增加,傳統(tǒng)的關(guān)系模型在關(guān)聯(lián)事物查找、事物間關(guān)系的發(fā)現(xiàn)和分析方面效率不足的問(wèn)題日益凸顯,特別是數(shù)據(jù)量達(dá)到一定規(guī)模后,查詢效率急劇下降。為快速篩選確診患者密切接觸人群,以圖論為基礎(chǔ)理論,綜合運(yùn)用圖模型及相關(guān)數(shù)據(jù)庫(kù)平臺(tái)、圖查詢語(yǔ)言等技術(shù),建立滿足防疫工作的人員及其親緣關(guān)系圖模型,實(shí)現(xiàn)現(xiàn)有人口家庭系統(tǒng)數(shù)據(jù)模型到圖數(shù)據(jù)模型的轉(zhuǎn)換,實(shí)現(xiàn)高風(fēng)險(xiǎn)人群的快速定位。
(一)患者親緣關(guān)系圖模型轉(zhuǎn)換步驟
基于圖論的圖數(shù)據(jù)模型可以定義為G=(V,E){V=vertex,E=edge},V表示頂點(diǎn)(Vertex)的集合,E表示邊(Edge)的集合,以及兩者相關(guān)的一些屬性信息。相應(yīng)的圖數(shù)據(jù)庫(kù),在高效分析大數(shù)據(jù)關(guān)聯(lián)關(guān)系方面優(yōu)勢(shì)明顯,在關(guān)聯(lián)事物查找方面甚至可以達(dá)到O(1)效率。因此,為快速發(fā)現(xiàn)患者的親緣關(guān)系人群,需要對(duì)現(xiàn)有基于關(guān)系模型的親緣關(guān)系數(shù)據(jù)進(jìn)行數(shù)據(jù)模型轉(zhuǎn)換,使之轉(zhuǎn)換為圖數(shù)據(jù)模型。經(jīng)過(guò)研究分析,結(jié)合現(xiàn)有親緣關(guān)系數(shù)據(jù)庫(kù)的實(shí)際,通過(guò)建立視圖輔助,將人口信息數(shù)據(jù)庫(kù)中的人映射到圖數(shù)據(jù)庫(kù)中的頂點(diǎn),將人的親緣關(guān)系映射到圖數(shù)據(jù)庫(kù)中的邊,有關(guān)數(shù)據(jù)列映射為頂點(diǎn)或邊的屬性,實(shí)際轉(zhuǎn)換方法如下:
1.以傳染病患者的唯一標(biāo)識(shí)Id作為初始集合filter_id_set,作為在親緣關(guān)系中篩選的初始條件;初始化人員關(guān)系集合personEdge_set={};
2.執(zhí)行篩選,得到篩選出的關(guān)系人的唯一標(biāo)識(shí)集合tmp_id_set和相應(yīng)的人員關(guān)系以及相應(yīng)屬性集合tmp_presonEdge_set;
3.將tmp_id_set加入到filter_id_set中,作為第二次篩選的條件;同時(shí)將tmp_presonEdge_set加入到邊集合personEdge_set中;
4.重復(fù)步驟(2),直至(人員關(guān)系是雙向關(guān)聯(lián)關(guān)系數(shù)據(jù));
5.以filter_id_set作為在家庭關(guān)系中篩選的初始條件;
6.執(zhí)行篩選,得到篩選出的家庭唯一標(biāo)識(shí)集合filter_familyId_set和相應(yīng)的人員家庭關(guān)系以及相應(yīng)屬性集合personFamilyEdge_set;
7.以filter_familyId_set作為在家庭關(guān)系中的篩選條件,對(duì)家庭關(guān)系再次進(jìn)行篩選,得到篩選出的家庭關(guān)聯(lián)人的唯一標(biāo)識(shí)集合tmp_id_set和相應(yīng)的家庭人員關(guān)系以及相應(yīng)屬性集合tmp_personFamilyEdge_set。(篩選出家庭(戶籍)中非直系親緣關(guān)系,如侄兒(女)、過(guò)繼等。)
8.將tmp_id_set加入到filter_id_set中,得到所有患者的所有親緣關(guān)系人;將tmp_personFamilyEdge_set加入到personFamilyEdge_set得到所有患者相關(guān)的家庭人員關(guān)系。
通過(guò)上述步驟,得到所有患者的親緣關(guān)系人員(頂點(diǎn))集合filter_id_set,所有親緣關(guān)系(邊)集合 personEdge_set,家庭(頂點(diǎn))集合filter_familyId_ set,家庭人員關(guān)系(邊)集合personFamilyEdge_set。
(二)基于圖數(shù)據(jù)庫(kù)的患者親緣關(guān)系圖模型展示
本研究選用了ArangoDB作為數(shù)據(jù)管理平臺(tái),在該圖數(shù)據(jù)庫(kù)中,將邊和頂點(diǎn)視為文檔(Document),使用集合(Collection)存儲(chǔ)和管理邊和頂點(diǎn),兩者通過(guò)組合定義圖Graph,可以根據(jù)所屬領(lǐng)域來(lái)構(gòu)建圖模型,并在邏輯上將邊和頂點(diǎn)分組在集合中,并賦予查詢它們的能力[7]。圖Graph主要有命名圖和匿名圖兩種類型,命名圖通過(guò)至少一個(gè)邊集合來(lái)定義在命名圖中使用哪些集合,完全由ArangoDB管理,使用了ArangoDB所有圖形功能。匿名圖沒(méi)有邊集合來(lái)定義描述哪個(gè)頂點(diǎn)集合通過(guò)哪個(gè)邊集合連接,圖模型必須在客戶端代碼中維護(hù),如使用AQL遍歷圖,相對(duì)更加自由。以人集合作為頂點(diǎn),親緣關(guān)系集合作為邊,將進(jìn)行模型轉(zhuǎn)換后得到的數(shù)據(jù)導(dǎo)入到ArangoDB中存儲(chǔ)管理,形成可供分析的基礎(chǔ)數(shù)據(jù),如圖 2所示。
傳染病患者的活動(dòng)是流行病學(xué)史的重要內(nèi)容之一,對(duì)快速查找隨機(jī)接觸人群實(shí)施隔離,切斷傳播途徑有重大作用,也是本研究的重要數(shù)據(jù)支撐。研究立足流行病學(xué)調(diào)查的共有特點(diǎn),綜合運(yùn)用現(xiàn)代軟件工程架構(gòu)和設(shè)計(jì)實(shí)現(xiàn)技術(shù),建立可復(fù)用的通用流行病學(xué)調(diào)查數(shù)據(jù)采集系統(tǒng),從而實(shí)現(xiàn)高風(fēng)險(xiǎn)人群的快速查找和疫情防控。
系統(tǒng)主要有數(shù)據(jù)模型配置、數(shù)據(jù)填報(bào)、綜合分析、系統(tǒng)配置四大功能,數(shù)據(jù)模型配置主要提供被采數(shù)據(jù)的元數(shù)據(jù)配置和填寫(xiě)樣式配置功能,提供了基本的元數(shù)據(jù)增刪查改;數(shù)據(jù)填報(bào)功能主要提供基于已配置元數(shù)據(jù)開(kāi)展數(shù)據(jù)采集,此次主要提供了傳染病患者相關(guān)事件公共數(shù)據(jù)采集;綜合分析功能主要提供基于圖數(shù)據(jù)庫(kù)的患者親緣關(guān)系圖模型和患者隨機(jī)活動(dòng)接觸人員圖模型分析結(jié)果的展示;系統(tǒng)配置主要提供了系統(tǒng)用戶、角色以及權(quán)限的配置。系統(tǒng)實(shí)際運(yùn)行時(shí),依據(jù)流行病學(xué)史數(shù)據(jù)模型,結(jié)合傳染病的公共特點(diǎn),對(duì)系統(tǒng)的相關(guān)屬性參數(shù)進(jìn)行了配置,運(yùn)行效果如圖 3所示。
面對(duì)傳染病高風(fēng)險(xiǎn)人群的快速定位與防控工作的諸多挑戰(zhàn),本文在數(shù)據(jù)建模、模型轉(zhuǎn)換、計(jì)算方法和系統(tǒng)建設(shè)等方面進(jìn)行了探索。以重慶市在用人口信息模型和數(shù)據(jù)為基礎(chǔ),結(jié)合基于圖論的圖數(shù)據(jù)模型特點(diǎn),提出了數(shù)據(jù)轉(zhuǎn)換方法,使患者和家庭的關(guān)聯(lián)對(duì)象查找可以達(dá)到O(1)效率,從而快速定位患者在親緣關(guān)系方面的高風(fēng)險(xiǎn)人群。在此基礎(chǔ)上,為應(yīng)對(duì)不同類型流行病防控,綜合運(yùn)用Java、Vue、MySQL、MongoDB、Redis、ArangoDB等軟件和技術(shù),結(jié)合基于圖數(shù)據(jù)庫(kù)的轉(zhuǎn)化模型,研發(fā)通用防控系統(tǒng),抽象系統(tǒng)主要功能,建立系統(tǒng)動(dòng)態(tài)屬性參數(shù)模型,通過(guò)對(duì)參數(shù)模型的配置即可完成防控系統(tǒng)開(kāi)發(fā)。該系統(tǒng)可復(fù)用性強(qiáng),開(kāi)發(fā)上線快,在需求明確的情況下,約2小時(shí)即可完成參數(shù)配置和系統(tǒng)上線運(yùn)行。
作者單位:李劍、溫海燕 重慶市衛(wèi)生健康統(tǒng)計(jì)信息中心
張恒 西南大學(xué)人工智能學(xué)院 重慶市衛(wèi)生健康統(tǒng)計(jì)信息中心
肖兵 重慶市衛(wèi)生健康統(tǒng)計(jì)信息中心