曾汪旺++謝穎夫+胡光闊


摘要:隨著醫院信息系統的快速發展,為醫院帶來了海量數據。對這些數據的有效利用、分析,挖掘其中隱含的信息,能為醫院管理提供更好的決策支持。但如何從醫院信息化進程中產生的海量多源異構數據中甄選出高質量數據,是醫療大數據領域首當其沖的問題。文章在盡量不影響改變醫院現有系統的基礎上,利用數據中間件的形式,對多源異構數據進行清洗轉換,為上層應用提供標準數據集。
Abstract: The rapid development of hospital information system has brought huge amounts of data for the hospital. The effective use of these data, analysis, and to mine the hidden information, can provide better decision support for hospital management. But how to select high quality data from the massive multi-source heterogeneous data in the process of hospital information is the most important problem in the field of big medical data. This paper is trying to make use of the form of data middleware to clean and convert multi-source heterogeneous data, and provide the standard data set for the upper application on the basis of not changing the existing hospital system.
關鍵詞:大數據;多源異構數據;模式匹配
Key words: big data;multi-source heterogeneous data;pattern matching
中圖分類號:TP311.5;P208 文獻標識碼:A 文章編號:1006-4311(2017)08-0080-03
0 引言
信息技術及互聯網的高速發展和全球的數字信息資源的急劇增加,推動著大數據時代的來臨,各行各業每天都在產生數量巨大的數據碎片。在“大數據時代”我們所要做的事情就是對隱藏于大數據中有價值的信息進行分析與挖掘[1],將分散的數據變為有用的信息,再加以創新和積累形成知識。只有形成了知識的數據才具有資產價值。我們面臨的第一個挑戰就是如何采集高質量的數據。高質量的數據集需滿足以下5種特性:精確性、一致性、完整性、同一性和實效性。精確性指數據符合規定的精度,不超出誤差范圍;一致性指數據之間不能存在相互矛盾;完整性指數據的值不能為空;同一性指實體的標識是唯一的;時效性指數據的值反映了實際的狀態。此外,還需考慮到人為因素,即數據不能是人工偽造的。
數據質量問題在醫療行業中表現得尤為突出。醫院信息化在近三十年的飛速發展過程中,信息系統的建設規模越來越大,應用越來越復雜多樣。這些系統因其處理的業務和采用的技術架構不同,其采集、處理、存儲和交換數據的標準均存在較大的差異。從數據的結構形式來看,分為結構化數據、半結構化數據和非結構化數據。例如:PACS和心電監護系統等產生視頻、音頻等以多媒體格式存儲的非結構化數據;HIS和LIS產生患者檔案、醫囑處方、化驗單等以標準表單形式存儲的結構化數據;電子病歷又以產生半結構化數據為主。另一方面,從信息記錄的模式來看,同一實體可能在多個系統均有記錄,但是其具體屬性集合可能各有不同。就算是同一屬性,其命名或數據更是可能在交互過程因為系統或者手工記錄的原因發生錯誤從而存在相互矛盾沖突的地方。
從以上現象我們不難看出,醫療行業中的數據呈現出一種多源異構性,而且該特征會產生嚴重的數據質量問題。“失之毫厘謬以千里”,這種不良的數據會對醫療大數據的后續應用產生極為不利的影響。為解決這個問題,我們必須對這些多源異構的數據集進行收集和整合,轉換為新的高質量的數據集,從而為上層的大數據分析應用打下良好的基礎。
1 系統設計
如果采用傳統的數據倉庫策略,我們的方法簡單說來可以分為以下幾步:先抽取原始數據,再根據業務規則對其進行清洗和轉換,最后按標準的格式將數據裝載到數據倉庫中。其簡稱為ELT。這種策略可以提供有力的決策支持,但是也存在一些不足之處。首先,數據倉庫的策略多為離線處理,面對海量的實時數據處理,處理效率不高。其次,這種策略在抽取之前就需要定義好規則和標準,難以應對可能隨時會變更的需求。最后,如果想要在不中斷在用生產系統即無增量數據產生的前提下,對海量的存量數據進行一次性的ELT,成本太高。針對以上的不足,本文提出的解決方案如下。
系統的結構圖如圖1所示。在不影響醫院在用的生產系統的基礎上,增加數據實時采集子系統和增量式映射管理平臺兩個中間件。生產系統上的實時數據和歷史數據,先經過數據采集子系統進行采集和過濾,然后將這些數據分發至備份數據存儲集群進行存儲,再由映射管理平臺對這些異構數據進行實時整合,建立緩存庫和知識庫,并為大數據分析平臺提供標準化的數據接口。
1.1 數據實時采集子系統
1.1.1 數據采集模塊
該模塊的功能可分為歷史數據采集和實時數據采集。其中,歷史數據的采集采用設置規則過濾后全量導入的方式;實時數據的采集采用基于數據庫日志解析的方式來獲取增量變更實現數據的同步,這種方法對在用的生產系統幾乎不會產生任何負面的影響。
1.1.2 數據預處理模塊
該模塊負責對數據進行以下預處理:
①無效信息過濾。識別并剔除錯誤數據和重復數據,提高處理效率和整合的準確度[3]。
②數據加密。為保障數據安全,對原始數據進行加密。
③數據壓縮。對原始數據采用無損的壓縮處理,提升存儲空間利用率和傳輸效率。
1.2 增量式映射管理平臺
該平臺包括查詢處理模塊、模式匹配模塊、語義轉換模塊、知識庫管理模塊、緩存管理模塊及緩存庫和知識庫。該平臺的工作流程如下[3]:
①查詢處理模塊接到數據查詢請求,首先查找緩存管理模塊中是否己經整合過該請求。如查找成功,對于已緩存了數據集的,直接返回結果;對于未緩存數據集的查詢,進入步驟④。如果查找失敗,則進入步驟③。
②調用模式匹配模塊,根據查詢需求對各異構數據與標準目標數據進行匹配,建立映射關系。
③根據模式的映射關系,轉換查詢請求并下發到各匹配的異構數據源。
④查詢處理模塊整合返回的結果數據集,并調用語義轉換模塊對部分結果進行語義轉換并通過知識庫管理模塊更新知識庫。
⑤查詢處理模塊通過同一數據接口標準向上層系統提供查詢結果。
為提高系統效率,各個模塊在必要情況下會對部分數據或中間結果進行緩存,而不是每次都重新計算或者重新查找。系統會隨著中間計算結果和映射的緩存不斷擴大,知識庫的不斷豐富,不斷提升查詢的效率跟精確度。
以下對系統的關鍵處理模塊——模式匹配模塊和語義轉換模塊進行介紹。
1.2.1 模式匹配模塊
該模塊的匹配流程如圖2所示。
圖中,進行模式匹配的依據為屬性的相似度,其簡易的度量公式(模式匹配算法公式)如下:
sim(S1.ei,S2.ej)=AGG(simf(S1.ei,S2.ej))
其中,ei與ej是分屬于模式S1和S2的兩個屬性,simf是基于特征f的相似度算法。AGG為聚合函數。該公式根據一定的聚合規則,綜合考慮多個相似度算法的結果,得出兩個屬性的最終相似度。目前國內外正在研究的相似度算法即屬性匹配器有:基于單詞相似度的屬性匹配器,基于單詞編輯距離的屬性匹配器,基于數據類型的屬性匹配器,基于數據實例的屬性匹配器。在實際應用場景中,還可以根據業務實際情況,添加自定義的屬性匹配器,通過各屬性匹配器的合理搭配使用,提高屬性近似度的精度。
1.2.2 語義轉換模塊(詳見圖3)
該模塊主要負責將各異構數據源的屬性數據轉換成標準數據。例如,上層分析系統可能需要獲取醫囑的具體內容,而某些數據源中僅僅包含醫囑代碼。這時,語義轉換模塊就可以根據知識庫中醫囑代碼與醫囑具體內容的映射關系,將醫囑代碼轉換為醫囑內容。我們設定一個閥值T,當在一個數據表中成功匹配到T及以上個樣例數據則匹配成功。如圖3所示的匹配過程中,我們設定的T值為1,經過第一輪匹配,我們發現table1中存在樣例數據(“qd”→“每日一次”),table2中存在樣例數據(“bid”→“每日兩次”),即從知識庫中匹配到了兩個數據表。根據tablel和table2中的數據,繼續轉換query中 “advice_code”屬性未轉換的數據。tablel中存在“qid”與“q2h”的數據,table2中存在“qn”與“qh”的數據,可直接轉換。但是query中“M.D.S”卻沒有找到對應的結果。進行第二次迭代匹配,發現了table3并在其中找到了“M.D.S”對應的轉換結果[3]。以上示例過程中,我們通過增加迭代匹配的次數,來提高轉換率。但是這種處理會導致執行時間的延長。因此,在實際場景中,我們需要對轉換率和執行時間做一個折衷。另外,還可以通過機器學習、人為干預等方式,豐富我們的知識庫,從而提高其支撐的語義轉換模塊的轉換率。語義轉換最理想的目標是使得所有轉換只需一次匹配就能完成所有查詢數據的轉換。
2 結語
本文針對醫療數據中的多源異構特征產生的數據質量問題,提出了初步的解決方案。但是文中提到的幾個處理過程相對簡單,存在很大的改善空間,比如可利用云計算技術,采用分布式的采集和存儲提高效率。其依賴的模式匹配器的算法也需要對國內外的研究進展保持跟蹤,不斷進行優化調整。此外,對醫院存在的大量非結構化數據的處理,以及對沖突數據的處理,也是本系統可以擴展的一個研究點。
參考文獻:
[1]鄒北驥.大數據分析及其在醫療領域中的應用[D].計算機教育,2014(7).
[2]李曉菲.數據預處理算法的研究與應用[D].西南交通大學,2006.
[3]葉茂偉.大規模異構數據即時整合系統的研究與實現[D].浙江大學,2016.