余艷霞 王燕 聞?wù)x
摘要:本文針對(duì)電子病歷數(shù)據(jù)中存在的數(shù)據(jù)結(jié)構(gòu)復(fù)雜、數(shù)據(jù)冗余性、數(shù)據(jù)不完整性、數(shù)據(jù)不一致性等特點(diǎn),采取數(shù)據(jù)抽取、數(shù)據(jù)清理、數(shù)據(jù)集成和數(shù)據(jù)轉(zhuǎn)換等方法對(duì)這些數(shù)據(jù)進(jìn)行了處理,旨在提取電子病歷數(shù)據(jù)庫(kù)中有價(jià)值的信息并挖掘隱含在其中的醫(yī)學(xué)診斷規(guī)則和模式,從而為疾病的診斷和治療提供科學(xué)的、準(zhǔn)確的輔助決策。
關(guān)鍵詞:電子病歷;數(shù)據(jù)挖掘;信息技術(shù)
中圖分類號(hào):R197.324 文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):1007-9416(2018)08-0035-04
1 前言
近年來,隨著醫(yī)療信息系統(tǒng)在我國(guó)的不斷普及信息技術(shù)在醫(yī)學(xué)領(lǐng)域不斷發(fā)展,很多大中型醫(yī)療機(jī)構(gòu)已經(jīng)構(gòu)建了相當(dāng)完善的數(shù)據(jù)信息系統(tǒng),積累了大量的電子病歷數(shù)據(jù)。但是,國(guó)內(nèi)大多數(shù)醫(yī)院并沒有對(duì)數(shù)據(jù)進(jìn)行進(jìn)一步的分析和研究,只是運(yùn)用傳統(tǒng)的數(shù)據(jù)檢索和統(tǒng)計(jì)方法來對(duì)數(shù)據(jù)進(jìn)行處理,更多的還是停留在對(duì)電子病歷數(shù)據(jù)的增加、刪除、修改和查詢上,比如說,醫(yī)院會(huì)根據(jù)病人的多次住院情況記錄來進(jìn)行比較,總體上了解病人的病情發(fā)展情況,并未對(duì)這些記錄做進(jìn)一步的分析,來發(fā)現(xiàn)其中的規(guī)律。這就產(chǎn)生了“數(shù)據(jù)豐富,但信息貧乏”的現(xiàn)象。電子病歷數(shù)據(jù)形式含有文字、圖像、影像和切片等,主要還是以文本為主,這些文本包括了病人的基本信息以及患者在醫(yī)院就診的相關(guān)信息。這些數(shù)據(jù)中存在大量復(fù)雜的、重復(fù)的、不完整的數(shù)據(jù)。如果直接在這些數(shù)據(jù)進(jìn)行研究,效果肯定不會(huì)很好,甚至?xí)霈F(xiàn)結(jié)果的嚴(yán)重偏差,而醫(yī)學(xué)研究關(guān)系到人的生命和身體健康,因此,需要對(duì)這些數(shù)據(jù)進(jìn)行處理。只有這樣,才能改進(jìn)數(shù)據(jù)的質(zhì)量,提高數(shù)據(jù)的利用率,保證結(jié)果的正確性和合理性。
在進(jìn)行數(shù)據(jù)處理之前,需要對(duì)電子病歷系統(tǒng)的結(jié)構(gòu)和電子病歷數(shù)據(jù)的特點(diǎn)有一定的了解,知道電子病歷系統(tǒng)中的數(shù)據(jù)結(jié)構(gòu),如出院記錄、病名名稱和手術(shù)記錄等在數(shù)據(jù)庫(kù)中對(duì)應(yīng)的表名等,它屬于哪個(gè)表空間,含有哪些字段屬性,還有就是每個(gè)字段的類型和長(zhǎng)度分別是什么。電子病歷數(shù)據(jù)的特點(diǎn)如下:
(1)數(shù)據(jù)不完整性、不一致性。電子病歷中的數(shù)據(jù)一般會(huì)由醫(yī)院的醫(yī)務(wù)人員進(jìn)行操作,目前國(guó)內(nèi)還沒一套很標(biāo)準(zhǔn)的規(guī)范,以至于不同的人會(huì)對(duì)同一種病描述的不一樣,從而會(huì)產(chǎn)生數(shù)據(jù)的不一致性。其次,電子病歷只是對(duì)患者病情的概括性描述,并不能完全表達(dá)患者的病情,可能還會(huì)產(chǎn)生遺漏,這種情況會(huì)造成數(shù)據(jù)的不完整。
(2)數(shù)據(jù)結(jié)構(gòu)復(fù)雜。電子病歷數(shù)據(jù)表現(xiàn)的形式很多,有文本類型的,有圖像類型的,還有數(shù)字類型。這些形式的使得我們無法以統(tǒng)一的格式對(duì)它們進(jìn)行挖掘,需要采取不同的方法。
(3)數(shù)據(jù)冗余性。隨著醫(yī)療技術(shù)的快速發(fā)展,每天都會(huì)產(chǎn)生大量的數(shù)據(jù),這些數(shù)據(jù)中會(huì)存在一些重復(fù)的數(shù)據(jù)。比如說,有些疾病,比如說流行性感冒,患者表現(xiàn)的癥狀還有醫(yī)生給出的治療方案一般都很相似,這樣就會(huì)造成數(shù)據(jù)庫(kù)中數(shù)據(jù)的重復(fù),還有就是患者在不同醫(yī)院進(jìn)行就診也會(huì)產(chǎn)生重復(fù)的數(shù)據(jù)。這些情況都會(huì)造成數(shù)據(jù)的冗余。
(4)數(shù)據(jù)隱私性。電子病歷數(shù)據(jù)包含了患者的所有在醫(yī)院進(jìn)行治療的信息。其中有些信息就屬于病人的隱私,如姓名、年齡、聯(lián)系方式、婚姻情況和所患疾病等,在數(shù)據(jù)處理過程中需要對(duì)這些信息進(jìn)行保護(hù)。
下面分別對(duì)數(shù)據(jù)處理常用的方法包括數(shù)據(jù)抽取、數(shù)據(jù)清理、數(shù)據(jù)變換和數(shù)據(jù)規(guī)約等進(jìn)行研究。
2 數(shù)據(jù)抽取方法
數(shù)據(jù)抽取方法的主要目標(biāo)在從電子病歷數(shù)據(jù)中找出符合我們要求的特征屬性??紤]到電子病歷數(shù)據(jù)的數(shù)據(jù)格式多樣,本文從兩方面對(duì)數(shù)據(jù)進(jìn)行抽取,具體描述如下:
(1)結(jié)構(gòu)化的數(shù)據(jù)。對(duì)于已經(jīng)結(jié)構(gòu)化的數(shù)據(jù),根據(jù)研究的目標(biāo)從數(shù)據(jù)庫(kù)中找到相應(yīng)的數(shù)據(jù),取出我們所需的屬性的值即可。圖1所示的是從Oracle數(shù)據(jù)庫(kù)中截取的關(guān)于病人出院診斷記錄表中的部分截圖,里面包括了患者的ID號(hào),診斷編碼和診斷病名名稱等屬性。
我們可以使用SQL語句從中選出病人的ID號(hào)和對(duì)應(yīng)的診斷病名名稱,并對(duì)數(shù)據(jù)格式進(jìn)行轉(zhuǎn)換,然后利用算法尋找不同疾病之間的關(guān)系。
(2)非結(jié)構(gòu)化的數(shù)據(jù)。電子病歷中含有大量非結(jié)構(gòu)化的數(shù)據(jù),要想在這些數(shù)據(jù)中挖掘出有效的信息,我們需要將它們轉(zhuǎn)換為結(jié)構(gòu)化的數(shù)據(jù)來進(jìn)行處理。我國(guó)的電子病歷共享文檔很多都是以XML文檔的形式存在,這種非結(jié)構(gòu)化的數(shù)據(jù)形式并不利于我們進(jìn)行處理和分析。我們需要將XML文檔映射到關(guān)系數(shù)據(jù)庫(kù)中。在研讀了一些資料發(fā)現(xiàn),將XML文檔直接映射到關(guān)系數(shù)據(jù)庫(kù)并沒有很好的方法。因此,本文所用的科研數(shù)據(jù)庫(kù)采用將XML文檔與對(duì)象之間、對(duì)象與關(guān)系數(shù)據(jù)庫(kù)之間進(jìn)行映射的方法來解決這個(gè)問題。首先,通過對(duì)象的序列化和反序列化來實(shí)現(xiàn)XML文檔和對(duì)象之間的相互轉(zhuǎn)換,然后,通過對(duì)象關(guān)系映射(ORM)來實(shí)現(xiàn)對(duì)象與關(guān)系數(shù)據(jù)庫(kù)之間的相互轉(zhuǎn)化。映射流程如圖2所示。
電子病歷共享文檔結(jié)構(gòu)化需要經(jīng)過兩個(gè)步驟。(1)電子數(shù)據(jù)抽?。和ㄟ^XSLT技術(shù),將CDA文檔中的電子病歷數(shù)據(jù)抽取出來放在一個(gè)簡(jiǎn)化的XML文檔中。醫(yī)療數(shù)據(jù)包含在文檔中的元素或者屬性當(dāng)中,這些數(shù)的類型和意義已經(jīng)在關(guān)系數(shù)據(jù)庫(kù)表中定義了,因此,只需提取電子病歷共享文檔中的數(shù)據(jù),和關(guān)系數(shù)據(jù)庫(kù)中表中的字段對(duì)應(yīng)。(2)XML數(shù)據(jù)映射到關(guān)系數(shù)據(jù)庫(kù):運(yùn)用Java中對(duì)象的發(fā)序列技術(shù),將抽取數(shù)據(jù)后的XML文檔反序列化為Java對(duì)象,并且處理好對(duì)象之間的關(guān)系,然后通過ORM將這些java對(duì)象存儲(chǔ)到關(guān)系數(shù)據(jù)庫(kù)中。
對(duì)于非結(jié)構(gòu)化的文本數(shù)據(jù),需要利用自然語言處理技術(shù)(NLP)對(duì)其進(jìn)行處理。對(duì)文本數(shù)據(jù)進(jìn)行處理需要經(jīng)歷以下幾個(gè)步驟:
(1)文本分詞。文本分詞是文本預(yù)處理過程中不可缺少的部分,與英文文本中單詞中有空格不同,漢語文本字之間是連續(xù)的,所以要想獲取特征詞,就必須對(duì)這些文本數(shù)據(jù)進(jìn)行分詞是,常用得中文分詞工具有ICTCLAS2015漢語分詞系統(tǒng)、IKAnalyer分詞、庖丁解牛分詞等。本文中運(yùn)用的是ICTCLAS分詞工具對(duì)電子病歷系統(tǒng)中的文本文件進(jìn)行處理,ICTCLAS由中科院研發(fā),是最早的中文分詞工具,采用C/C++進(jìn)行編寫。選擇其作為分詞工具主要考慮到以下幾個(gè)方面原因:首先,自2000年誕生以來,目前全球用戶已經(jīng)突破30萬人,得到很高認(rèn)可;其次,該分詞工具支持許多操作系統(tǒng),如Linux、Windows。另外,還支持不同的語言進(jìn)行開發(fā),如C/C++、java等主流語言開發(fā);最后,它可以同時(shí)支持中英文分詞。
圖3表示的是電子病歷數(shù)據(jù)中部分片段截圖。
上述病歷片段在經(jīng)過ICTCLAS分詞工具分詞后的結(jié)果如圖4所示。
(2)去停用詞。文本數(shù)據(jù)中并不是所有的詞都能代表數(shù)據(jù)的特征,如“你”、“我”、“他”、“的”、“地”等,這些詞需要從文本中去掉。ICTCLAS分詞工具中會(huì)有這些詞的文檔,用戶自己還可以加入自己的一些無關(guān)的停用詞。
(3)詞頻統(tǒng)計(jì)。這一步非常關(guān)鍵。在去除掉停用詞后,剩下的詞就是文本的精華所在,此時(shí),判斷一個(gè)詞的重要性就要統(tǒng)計(jì)它們?cè)谖臋n中出現(xiàn)的次數(shù),即詞頻。一個(gè)詞在文本中出現(xiàn)的次數(shù)越多,則說明這個(gè)詞語越能表征這個(gè)文本。比如說,在糖尿病的診斷病例中,臨床癥狀會(huì)多次出現(xiàn)“多飲”、“多尿”等詞語。這些詞語就可以代表對(duì)糖尿病進(jìn)行診斷的特征。
(4)特征轉(zhuǎn)換。就是把提取出來的特征轉(zhuǎn)換為適合算法運(yùn)行的形式。
3 數(shù)據(jù)清理方法
電子病歷數(shù)據(jù)會(huì)含有一些不完整的、有噪聲的和不一致的數(shù)據(jù),我們需要對(duì)這些數(shù)據(jù)進(jìn)行數(shù)據(jù)清理。如在本文研究的電子病歷數(shù)據(jù)中的出院診斷記錄中在疾病診斷一欄就有許多缺失的數(shù)據(jù)。這些數(shù)據(jù)如果直接被用來進(jìn)行數(shù)據(jù)處理的話,會(huì)很大程度上影響結(jié)果,給人產(chǎn)生誤導(dǎo),所以說對(duì)其進(jìn)行數(shù)據(jù)清理是十分必要的。
(1)缺省值處理。由于電子病歷系統(tǒng)中數(shù)據(jù)量特別的大,更新的數(shù)據(jù)快的特點(diǎn),會(huì)產(chǎn)生很多缺失的數(shù)據(jù)。如XXX醫(yī)院的電子病歷系統(tǒng)中出院診斷記錄中有許多缺省的診斷數(shù)據(jù)。常用解決缺省值的辦法有忽略元組,這種方法在缺失數(shù)據(jù)特別少的時(shí)候特別有效;在醫(yī)學(xué)專家的指導(dǎo)下,人工填寫缺失值,該方法效率比較低,很花費(fèi)時(shí)間。本文為了避免缺省數(shù)據(jù)對(duì)算法挖掘效果的影響,采用的辦法就是直接刪除掉缺省的數(shù)據(jù)。
(2)重復(fù)數(shù)據(jù)處理。在仔細(xì)分析了電子病歷數(shù)據(jù)庫(kù)中的表中的數(shù)據(jù)后,發(fā)現(xiàn)這些數(shù)據(jù)中含有許多重復(fù)的或者相似的記錄,比如說,患者中診斷結(jié)果中有“高血壓”、還有“高血壓3級(jí)”,按照醫(yī)學(xué)原理,它們屬于同一種病。所以在關(guān)聯(lián)規(guī)則的挖掘中的實(shí)驗(yàn)中,我們把他們都按照“高血壓”來處理,所以刪除“高血壓3級(jí)”的記錄,類似的還有“糖尿病”與“2型糖尿病”等等。
4 數(shù)據(jù)集成方法
電子病歷數(shù)據(jù)來源十分廣泛,可以來源于某些電子儀器,可以來源醫(yī)生對(duì)病情的記錄等等,我們需要把這些數(shù)據(jù)進(jìn)行整合且進(jìn)行統(tǒng)一存儲(chǔ),建立數(shù)據(jù)倉(cāng)庫(kù)的過程實(shí)際上就是數(shù)據(jù)集成。本文的數(shù)據(jù)源統(tǒng)一來自O(shè)RACLE11G數(shù)據(jù)庫(kù),數(shù)據(jù)進(jìn)行抽取后同樣存于ORACLE11G數(shù)據(jù)庫(kù)。
5 數(shù)據(jù)轉(zhuǎn)換方法
電子病歷系統(tǒng)中的許多數(shù)據(jù)不能直接拿來就能進(jìn)行關(guān)聯(lián)處理的,必須在進(jìn)行挖掘工作前對(duì)數(shù)據(jù)進(jìn)行變換,所以需要把電子病歷數(shù)據(jù)轉(zhuǎn)化為包含項(xiàng)的事務(wù)數(shù)據(jù)格式。電子病歷數(shù)據(jù)包括數(shù)值屬性、類別屬性等。數(shù)值屬性如患者的年齡、醫(yī)院檢測(cè)數(shù)據(jù)等,我們不可能把每個(gè)數(shù)值都當(dāng)作一個(gè)項(xiàng)進(jìn)行處理,這樣會(huì)導(dǎo)致數(shù)據(jù)維度太高,不利于關(guān)聯(lián)處理,我們需要根據(jù)某種標(biāo)準(zhǔn)數(shù)據(jù)進(jìn)行區(qū)間劃分,不同區(qū)間分別對(duì)應(yīng)一個(gè)標(biāo)識(shí)。比如對(duì)患者的年齡,可以分為3個(gè)區(qū)間,A1:age<30,A2:30
以糖尿病數(shù)據(jù)為例,在進(jìn)行數(shù)據(jù)變換之前,首先通過閱讀適當(dāng)醫(yī)學(xué)資料和咨詢醫(yī)院專家來確定劃分的標(biāo)準(zhǔn)。本文對(duì)9個(gè)屬性進(jìn)行數(shù)據(jù)轉(zhuǎn)換如下所示。
(1)年齡:A1:小于30歲;A2:30歲到60歲;A3:大于60歲。
(2)性別:M:男;F:女。
(3)臨床表現(xiàn):Z1:多飲、多尿、多食和消瘦;Z2:疲乏無力、身體肥胖;Z3:其它。
(4)是否嗜煙:S1:是;S2:否。
(5)是否嗜酒:D1:是;D2:否。
(6)是否空腹:L1:是;L2:否。
(7)血糖含量:B1:血糖含量小于7毫摩爾/升;B2:血糖含量在7毫摩爾/升和10毫摩爾/升之間;B3:血糖含量在10毫摩爾/升和15毫摩爾/升之間;B4:血糖含量大于15毫摩爾/升之間。
(8)視力情況:E1:不正常;E2:正常。
(9)糖尿病類型:I1:1型糖尿??;I2:2型糖尿病。
數(shù)據(jù)經(jīng)過這些變換后,就可應(yīng)用關(guān)聯(lián)規(guī)則算法進(jìn)行規(guī)則挖掘了,來發(fā)現(xiàn)這些屬性之間的關(guān)系了。圖5表現(xiàn)數(shù)據(jù)進(jìn)行數(shù)據(jù)轉(zhuǎn)換后的部分結(jié)果展示。
6 結(jié)語
本文針對(duì)電子病歷數(shù)據(jù)中存在的數(shù)據(jù)結(jié)構(gòu)復(fù)雜、數(shù)據(jù)冗余性、數(shù)據(jù)不完整性、數(shù)據(jù)不一致性等特點(diǎn),采取數(shù)據(jù)抽取、數(shù)據(jù)清理、數(shù)據(jù)變換和數(shù)據(jù)規(guī)約等方法對(duì)這些數(shù)據(jù)進(jìn)行了處理,旨在提取電子病歷數(shù)據(jù)庫(kù)中有價(jià)值的信息并挖掘隱含在其中的醫(yī)學(xué)診斷規(guī)則和模式,從而為疾病的診斷和治療提供科學(xué)的、準(zhǔn)確的輔助決策。也就是說,醫(yī)院中關(guān)于患者的病歷數(shù)據(jù)中蘊(yùn)含著豐富的信息和知識(shí),比如說疾病的主要特征、疾病之間隱含的關(guān)系以及疾病的發(fā)展規(guī)律等,這些信息的提取可以在一定程度上幫助科研人員進(jìn)行醫(yī)學(xué)研究、輔助醫(yī)生臨床診斷,從而促進(jìn)醫(yī)學(xué)發(fā)展。來發(fā)現(xiàn)數(shù)據(jù)中有用的規(guī)則和知識(shí)。并且可以利用這些規(guī)律去輔助醫(yī)生診斷、改善醫(yī)院管理、豐富研究?jī)?nèi)容。快速、有效地從這些的數(shù)據(jù)中發(fā)現(xiàn)隱藏其中的、有用的信息和知識(shí),從而提高醫(yī)療水平,因此,對(duì)電子病歷數(shù)據(jù)進(jìn)行研究無論在科研方面還是在應(yīng)用方面都很有意義。
參考文獻(xiàn)
[1]郭煜.電子病歷與手寫病歷缺陷比較及對(duì)策分析[J].基層醫(yī)學(xué)論壇,2012,(z1):91-92.
[2]Ravindranath K R. Clinical Decision Support System for heart diseases using Extended sub tree[C]//Pervasive Computing (ICPC), 2015 International Conference on. IEEE, 2015:1-5.
[3]丁衛(wèi)平,祁恒,董建成,等.基于關(guān)聯(lián)規(guī)則的電子病歷挖掘算法研究與應(yīng)用[J].微電子學(xué)與計(jì)算機(jī),2007,24(3):69-73.
[4]胡光闊,王天朝,江曉云,等.基于粗糙集理論的數(shù)據(jù)挖掘技術(shù)臨床應(yīng)用研究[J].中國(guó)數(shù)字醫(yī)學(xué),2011,06(1):26-27.
[5]王欣萍,李燕.數(shù)據(jù)挖掘技術(shù)于醫(yī)學(xué)電子病歷系統(tǒng)的應(yīng)用[J].現(xiàn)代預(yù)防醫(yī)學(xué),2008,35(13):2450-2451.
[6]Hoogendoorn M, Moons L M G, Numans M E, et al. Utilizing data mining for predictive modeling of colorectal cancer using electronic medical records[M]//Brain Informatics and Health. Springer International Publishing, 2014: 132-141.
[7]Zhongguang Q, Zong-yuan M, Zhao-zhi D. The application of rough set in the Chinese medicine rheumatic arthritis diagnosis[J]. Chinese Journal of Biomedical Engineering,2001,20(4):357-363.
[8]莊軍,郭平,周楊,等.電子病歷數(shù)據(jù)預(yù)處理技術(shù)[J].計(jì)算機(jī)科學(xué),2007,34(3):141-144.
[9]Utama P A, Distiawan B. Spark-gram: Mining frequent N-grams using parallel processing in Spark[C]//2015 International Conference on Advanced Computer Science and Information Systems (ICACSIS). IEEE, 2015: 129-136.
[10]Gui F, Ma Y, Zhang F, et al. A distributed frequent itemset mining algorithm based on Spark[C]//Computer Supported Cooperative Work in Design (CSCWD), 2015 IEEE 19th International Conference on. IEEE, 2015: 271-275.