商金秋, 朱衛(wèi)國, 樊銀亭, 李偉亨, 馬翠霞, 滕東興
1(中國科學(xué)院軟件研究所 人機交互技術(shù)與智能信息處理實驗室, 北京100190)2(中國科學(xué)院大學(xué), 北京100190)3(中原工學(xué)院 計算機學(xué)院, 鄭州450007)4(中國醫(yī)學(xué)科學(xué)院 北京協(xié)和醫(yī)學(xué)院 北京協(xié)和醫(yī)院 普通內(nèi)科&信息管理處, 北京100730)
基于電子病歷可視分析的臨床診斷模型①
商金秋1,2, 朱衛(wèi)國4, 樊銀亭3, 李偉亨1,2, 馬翠霞1, 滕東興1
1(中國科學(xué)院軟件研究所 人機交互技術(shù)與智能信息處理實驗室, 北京100190)2(中國科學(xué)院大學(xué), 北京100190)3(中原工學(xué)院 計算機學(xué)院, 鄭州450007)4(中國醫(yī)學(xué)科學(xué)院 北京協(xié)和醫(yī)學(xué)院 北京協(xié)和醫(yī)院 普通內(nèi)科&信息管理處, 北京100730)
針對當(dāng)前醫(yī)生在臨床診療過程中缺乏系統(tǒng)有效的手段, 以及隱藏在大量電子病歷中的醫(yī)學(xué)知識沒有得到充分利用的現(xiàn)狀, 研究了利用可視分析和數(shù)據(jù)挖掘相結(jié)合的方法, 輔助醫(yī)生進(jìn)行臨床診療服務(wù). 本文以不明原因發(fā)熱疾病為例, 首先對電子病歷進(jìn)行數(shù)據(jù)預(yù)處理和結(jié)構(gòu)化提取, 然后結(jié)合具體需求進(jìn)行可視組織與分析, 再利用數(shù)據(jù)挖掘相關(guān)算法對患者大量癥狀和發(fā)熱原因之間的關(guān)系進(jìn)行學(xué)習(xí), 幫助醫(yī)生發(fā)現(xiàn)病歷中潛在的醫(yī)療知識,輔助醫(yī)生進(jìn)行診斷. 在上述工作的基礎(chǔ)上, 構(gòu)建了一個面向臨床診療的可視分析與輔助診斷框架, 并給出了系統(tǒng)實例加以驗證, 結(jié)果表明該系統(tǒng)可以有效的幫助醫(yī)生分析不明原因發(fā)熱電子病歷內(nèi)的知識, 有利于進(jìn)一步的疾病診斷, 縮短了平均確診時間.
電子病歷; 可視分析; 數(shù)據(jù)挖掘; 輔助診斷
醫(yī)療信息化的快速發(fā)展不僅提升了醫(yī)生的工作效率, 減輕了醫(yī)生的工作負(fù)擔(dān), 同時也改善了用戶對醫(yī)院的滿意度和信任度. 盡管我國許多大中型醫(yī)院在醫(yī)療信息化平臺建設(shè)方面已經(jīng)有了較快進(jìn)展, 但是大部分醫(yī)院的醫(yī)療信息系統(tǒng)僅僅是一種管理工具, 是對醫(yī)院日常業(yè)務(wù)的一種支撐, 未能給醫(yī)生提供更為有效的診療服務(wù).
一方面, 目前醫(yī)生在臨床診療過程中主要依靠自身的專業(yè)知識及經(jīng)驗積累, 疾病的診治缺乏系統(tǒng)有效的手段, 但由于醫(yī)生自身的知識更新速度很難趕上醫(yī)學(xué)知識發(fā)展速度, 在形成診斷結(jié)論、制定診療計劃時,仍然需要依賴計算機的輔助支持以提高工作的準(zhǔn)確性和效率. 計算機輔助的臨床診療服務(wù)通過準(zhǔn)確的、有針對性的方式提供給醫(yī)生診療建議, 可以提高醫(yī)療服務(wù)質(zhì)量和效率. 然而, 當(dāng)前智能化的臨床診療服務(wù)并未得到有效開展, 主要表現(xiàn)在: 醫(yī)學(xué)知識獲取水平不高、更新滯后; 醫(yī)學(xué)知識服務(wù)水平難以保證海量資源信息的充分利用; 醫(yī)療服務(wù)環(huán)境和用戶人群的復(fù)雜多樣性使得傳統(tǒng)的臨床診療服務(wù)流程與模式難以滿足廣大用戶的個性化需求.
另一方面, 電子病歷系統(tǒng)的廣泛應(yīng)用, 產(chǎn)生了大量的電子病歷數(shù)據(jù), 但當(dāng)前基于電子病歷來輔助醫(yī)生進(jìn)行臨床診療的服務(wù)卻比較匱乏, 電子病歷僅僅是簡單的記錄了病人的基本情況、體格檢查、用藥情況和病程等, 僅僅是記錄診療過程的作用, 隱藏在病歷中大量的醫(yī)學(xué)知識和診療經(jīng)驗沒有得到充分的挖掘和利用.
本文針對以上問題, 以用戶需求為中心, 以不明原因發(fā)熱電子病歷為實例, 提出了一種面向臨床診療的可視分析與輔助診斷方法. 主要工作包括: 1)研究了大量臨床診療信息的復(fù)雜關(guān)聯(lián)關(guān)系, 特別是不明原因發(fā)熱疾病臨床診治的現(xiàn)狀, 給出了一種臨床診療環(huán)境下人機協(xié)同認(rèn)知特性; 2)構(gòu)建了符合特定數(shù)據(jù)組織方式的可視形態(tài)集及自然的交互任務(wù)集; 3)利用病歷文件訓(xùn)練了輔助醫(yī)生進(jìn)行臨床診斷的數(shù)據(jù)挖掘模型; 4)構(gòu)建了一個面向臨床決策推理的可視分析與輔助診療框架; 5)給出了系統(tǒng)實例加以驗證. 結(jié)果表明本文所述方法能夠為醫(yī)療從業(yè)人員提供更加便捷的信息利用方式, 輔助其對病歷數(shù)據(jù)的分析、歸納、整理活動, 減輕醫(yī)生對不明原因發(fā)熱病歷數(shù)據(jù)進(jìn)行分析的負(fù)擔(dān), 在醫(yī)療診斷過程中提供決策支持服務(wù).
1.1 臨床決策支持系統(tǒng)
斯坦福大學(xué)的Shortliffe等人在20世紀(jì)70年代研發(fā)的MYCIN[1]是世界上首個功能較全面的臨床決策支持系統(tǒng), 它能夠輔助醫(yī)生對細(xì)菌感染病進(jìn)行診斷和治療, 在MYCIN 系統(tǒng)框架基礎(chǔ)上建立的肺功能專家系統(tǒng)PUFF曾在舊金山太平洋醫(yī)療中心使用過一段時間, 也是醫(yī)學(xué)專家系統(tǒng)首次在臨床得到應(yīng)用. 近年由Archimedes Model設(shè)計推出的IndiGO[2]針對“個體化指導(dǎo)和決策”目標(biāo), 利用數(shù)學(xué)語言分析了臨床、診治和生理學(xué)資料, 基于分析結(jié)果設(shè)計出一個診斷模型, 以及診治方案和人體生理標(biāo)準(zhǔn). 為了真正實現(xiàn)“個體化指導(dǎo)”的目標(biāo), IndiGO 對于每位患者, 選取了30多種不同特征來分析, 這些特征包括既往病史、高危致病因素、過往治療信息以及提示不同疾病的生物標(biāo)記物,個體化指南也會自動將其推薦的治療費用和醫(yī)保報銷范圍進(jìn)行比較, 這樣可以幫助患者掌握診療費用. Auminence[3]系統(tǒng)對患者既往史、已有癥狀和其他相關(guān)資料進(jìn)行綜合分析, 從所提供的患者資料中搜索與之對應(yīng)的各個可能的疾病類型及發(fā)生的可能性大小.
1.2 病歷數(shù)據(jù)可視分析
陳湖山針對電子病歷數(shù)據(jù)研究了可動態(tài)配置的集成可視化視圖, 提出了一種分層次的集成視圖動態(tài)配置方法[4]; Bui等人采用TimeLine 可視化形態(tài)展現(xiàn)各類醫(yī)療文檔和醫(yī)學(xué)影像[5]; 曾志榮利用可視化的方式研究了電子病歷中關(guān)系型數(shù)據(jù), 通過一系列交互式可視化形態(tài)幫助醫(yī)生分析病歷[6]; 鄭威琳用具體的可視化形態(tài)將病人的歷史醫(yī)療信息表達(dá)出來, 使得醫(yī)生不用讀取、分析醫(yī)療報告就可直觀地了解病人的歷史以及健康狀態(tài)[7].
1.3 基于病歷數(shù)據(jù)的數(shù)據(jù)挖掘
近年來, 數(shù)據(jù)挖掘結(jié)合醫(yī)療領(lǐng)域的研究也越來越多, 劉立剛將數(shù)據(jù)挖掘中經(jīng)典算法Apriori應(yīng)用到電子病歷數(shù)據(jù)中, 挖掘了具有診斷價值的關(guān)聯(lián)規(guī)則, 以此來提高醫(yī)生的診斷效率[8]. 張連育等人將不同的數(shù)據(jù)挖掘算法運用到中醫(yī)領(lǐng)域不同問題上, 對比不同方法的結(jié)果, 達(dá)到了最大化利用某一種方法的效果[9].
利用可視分析和數(shù)據(jù)挖掘方法相結(jié)合的方式幫助醫(yī)生整理、組織、分析電子病歷內(nèi)容的研究也越來越多. 徐天明將LDA主題模型和可視分析方法結(jié)合起來分析中文電子病歷語義層面的關(guān)系, 利用主題這一語義層面的概念來表達(dá)大量文本內(nèi)容的原始病歷文件,通過計算主題向量內(nèi)積的方式, 幫助醫(yī)生快速理解病歷間的相似性及對病歷進(jìn)行分類[10].
認(rèn)知心理學(xué)將認(rèn)知過程定義為由信息的獲取、分析、歸納、編碼、儲存、概念形成、提取和使用等一系列階段組成的, 按一定程序進(jìn)行信息加工的系統(tǒng).其中, 信息提取指依據(jù)一定的線索從記憶中尋找并獲取已經(jīng)儲存的信息, 信息使用指利用提取的信息對信息進(jìn)行認(rèn)知加工[11]. 臨床診療過程中, 臨床醫(yī)生經(jīng)常會面臨診斷、決策任務(wù), 臨床診療過程中往往需要反復(fù)閱讀分析病人病歷. 如何為決策者提供自然的、輔助醫(yī)生進(jìn)行思維決策的可視化形態(tài)和交互方式, 對于診斷來說具有重大意義.
人機交互的過程就是人與計算機借助各種符號和動作進(jìn)行信息雙向交換的過程, 人和計算機系統(tǒng)是交互主體[12]. 作為可視分析的認(rèn)知主體, 分析決策者一方面需要通過不斷“動手”與機器交互, 完成信息獲取、加工等決策支撐活動, 另一方面還需要不斷“動腦”來分析判斷信息進(jìn)而決策, 如圖1所示.
圖1 決策分析活動中的人機協(xié)同工作模式
從人的認(rèn)知角度出發(fā), 電子病歷中海量的、具有復(fù)雜關(guān)聯(lián)關(guān)系的醫(yī)學(xué)信息給臨床醫(yī)生帶來了信息過載的問題. 計算機在處理速度、存貯容量、數(shù)值計算、邏輯推理等方面具有非常明顯的優(yōu)勢, 但卻無法超越人的大腦在學(xué)習(xí)能力、創(chuàng)造能力、環(huán)境適應(yīng)能力以及經(jīng)驗總結(jié)和知識歸納等方面的能力. 人機交互過程中,當(dāng)信息的表現(xiàn)形式與人的認(rèn)知能力越接近, 人感到認(rèn)知負(fù)擔(dān)越小、交互越自然, 相應(yīng)地對計算機信息加工處理的能力要求也越高. 反之, 當(dāng)信息的表現(xiàn)形式越接近計算機可處理的計算模型, 信息加工處理過程越簡單, 但卻會增加人的認(rèn)知負(fù)擔(dān).
目前可視分析系統(tǒng)在決策支撐方面的應(yīng)用注意到了可視分析活動的漸進(jìn)特點, 提供了漸 進(jìn)式的使能技術(shù)來支持用戶展開深入分析活動, 但仍然較多關(guān)注系統(tǒng)的建設(shè)成本, 而對人類的閱讀和認(rèn)知成本關(guān)注不夠[13]. 一方面由于缺乏對信息利用過程中大腦思維過程的深入研究, 另一方面缺乏對人在信息利用與分析過程中的交互習(xí)慣和方式的研究, 沒有充分利用人們長期生活中已經(jīng)習(xí)得的交互方式和手段, 導(dǎo)致人在信息利用的過程中的思維活動經(jīng)常被信息搜索和整理等基本活動所打斷, 干擾了思維活動的有效進(jìn)行. 可視分析的過程可以看作是用戶與數(shù)據(jù)不斷會話的過程,因此, 自然高效的、對用戶思維活動干擾少的交互方式是降低分析決策者的交互負(fù)擔(dān)、有效提高可視分析效率的重要手段, 它需要滿足:
① 能真實有效地記錄醫(yī)療行為和醫(yī)療知識;
② 能很好的組織專家經(jīng)驗, 支持信息的復(fù)用和重組;
③ 能利用相關(guān)歷史行為數(shù)據(jù)和病人診療歷史為分析決策過程提供必要的支持;
④ 能將分析過程與可視化界面關(guān)聯(lián)起來.
本文在分析了上述人機協(xié)同認(rèn)知特性的基礎(chǔ)上,針對不明原因發(fā)熱疾病實際診療過程醫(yī)生的認(rèn)知負(fù)擔(dān),并結(jié)合計算機智能化處理數(shù)據(jù)的高速計算能力, 研究了利用可視分析和數(shù)據(jù)挖掘方法輔助醫(yī)生進(jìn)行診療活動, 減輕醫(yī)生的認(rèn)知負(fù)擔(dān).
3.1 不明原因發(fā)熱電子病歷的收集與整理
本文研究過程中所用的電子病歷來自于北京協(xié)和醫(yī)院普通內(nèi)科科室, 共288份發(fā)熱待查患者病歷, 時間從2012年3月到2015年12月, 其中在出院時確診的有260例, 未確診的有28例, 將260例出院確診患者的病歷作為數(shù)據(jù)挖掘診斷模型的訓(xùn)練數(shù)據(jù). 根據(jù)臨床醫(yī)生的醫(yī)學(xué)知識, 將出院診斷中共29個病因劃分為共四個大類, 分別是: 感染、免疫、腫瘤和其他. 每個患者的病歷包括入院記錄, 出院記錄, 病程記錄三部分. 病程文件記錄了醫(yī)生每次對患者的治療過程, 包括做了哪些檢查及用了什么藥; 出院記錄中記錄了患者出院時的診斷結(jié)論和醫(yī)囑.
3.2 不明原因發(fā)熱電子病歷預(yù)處理
醫(yī)院存儲患者電子病歷的方法通常是采用XML格式存儲在數(shù)據(jù)庫中, 本文首先采用java工具包dom4j對XML格式的原始病歷文件進(jìn)行解析, 提取入院記錄中的現(xiàn)病史部分, 對于word、excel等格式的數(shù)據(jù)先轉(zhuǎn)換成純文本格式, 再利用NLPIR系統(tǒng)中的中文分詞器進(jìn)行去停用詞處理, 再以特定符號為分隔符進(jìn)行斷句處理; 根據(jù)醫(yī)生提供的癥狀詞典, 采用正向最大匹配算法從文本中提取出<key,value>結(jié)構(gòu), 其中key的取值為醫(yī)生提供的癥狀詞典中的癥狀, value的取值為癥狀key的患者臨床表現(xiàn), 例如當(dāng)key的取值為“嘔吐”這一癥狀時, value的值為“有”或“無”; 對于體格檢查中的生理指標(biāo), 直接提取其中的具體數(shù)值, 最終將原始的病歷文本處理成結(jié)構(gòu)化格式, 如圖2所示,醫(yī)生參照原始病歷內(nèi)容, 利用數(shù)據(jù)預(yù)處理頁面中的工具核對提取結(jié)果, 最后將核對過的結(jié)構(gòu)化數(shù)據(jù)提交到服務(wù)器. 這樣的數(shù)據(jù)格式不僅是本文進(jìn)行可視分析和數(shù)據(jù)挖掘的基礎(chǔ), 也是幫助臨床醫(yī)生進(jìn)行病歷整理和病情討論的參考.
圖2 病歷提取結(jié)果截圖
在對病歷中現(xiàn)病史和體格檢查進(jìn)行結(jié)構(gòu)化提取之后, 利用NLPIR系統(tǒng)中的分詞工具對病歷所有的文本內(nèi)容進(jìn)行分詞處理, 該工具在用戶指定了自定義詞典之后, 在完成中文分詞的基礎(chǔ)上, 還能夠?qū)Ψ衷~結(jié)果進(jìn)行詞性標(biāo)注, 如名詞、動詞、形容詞. 在不明原因發(fā)熱電子病歷中, 對病人癥狀的描述大多采用形容詞,分析分詞結(jié)果中形容詞的使用情況可以幫助實習(xí)醫(yī)生快速掌握常用醫(yī)學(xué)術(shù)語, 熟悉醫(yī)務(wù)流程.
3.3 面向不明原因發(fā)熱電子病歷的可視化形態(tài)
本文基于上述得到的病歷處理結(jié)果, 結(jié)合不明原因發(fā)熱臨床診治的特點及臨床診療環(huán)境下人機協(xié)同認(rèn)知特性, 構(gòu)建了一系列可視化形態(tài).
3.3.1 患者治療過程可視化形態(tài)
不明原因發(fā)熱患者的住院時間通常是數(shù)周到數(shù)月的時間不等, 往往要經(jīng)過多個病程的治療才會出院,在病程記錄文件中, 每次的病程都記錄了當(dāng)時患者的身體狀況和醫(yī)生的治療方法, 如針對哪些癥狀用了哪些藥等記錄, 所以每位住院患者的病程病歷文件中完整的記錄了從入院到出院的治療過程, 但從以文本段落的方式記錄顯示的病程中發(fā)現(xiàn)診治規(guī)律往往很難,通過可視化形態(tài)可以簡單直觀的展現(xiàn)患者的整個診治過程.
圖3 病程數(shù)據(jù)可視化
如圖3所示, 為某一患者的病程病歷的可視化結(jié)果: 圖中每個節(jié)點代表一次病程, 右鍵后可以查看本次病程的具體治療細(xì)節(jié).
3.3.2 患者病癥描述詞分布比例可視化形態(tài)
在一份發(fā)熱待查患者的病歷中, 有大量的文本用來描述患者的相關(guān)癥狀臨床表現(xiàn), 標(biāo)簽云可視化形態(tài)將文本中每個詞的出現(xiàn)頻率作為權(quán)重, 用特定的布局算法, 在一定空間內(nèi)用不同的顏色和大小編碼每個標(biāo)簽, 很直觀的表示出了哪些詞是出現(xiàn)頻率比較高的.如圖4所示, 出現(xiàn)頻率比較高的所占的空間比較大.圖5用柱狀圖的方式顯示了在一份病歷中, 形容詞出現(xiàn)的最多的10個詞的分布情況, 從中可以看出哪些形容詞最多的用在病歷中用來描述病人的身體狀況.
圖4 病歷文本內(nèi)容可視化
圖5 一份病歷中使用頻率最高的10個形容詞
3.3.3 患者診治過程中體溫變化情況可視化
醫(yī)生在患者的每次病程中的都會記錄患者當(dāng)天的最高體溫, 下圖用折線圖和柱狀圖可視化形態(tài)展示了患者從入院到出院的每天最高體溫變化情況, 圖中底部的滑塊可以用來進(jìn)行篩選日期幫助醫(yī)生查看感興趣時間段內(nèi)的體溫變化.
圖6 患者最高體溫變化情況
3.3.4 患者體格檢查中各項生理指標(biāo)可視化
為了確診患者發(fā)熱的原因, 醫(yī)生要對患者進(jìn)行各項生理指標(biāo)的輔助檢查, 常見的包括CRP、鐵蛋白, 血壓等十幾項化驗和檢查, 通過對比病人各項體格檢查結(jié)果和正常值的高低, 找出可能引起病人發(fā)熱的原因,所以各項輔助檢查結(jié)果是一種維數(shù)比較高的數(shù)據(jù), 單純的從病歷文本中分析這些數(shù)據(jù)的關(guān)系顯然對醫(yī)生是一個很大的挑戰(zhàn). 平行坐標(biāo)可視化形態(tài)通過將每一維的數(shù)據(jù)映射到一個坐標(biāo)軸上, 使得可以在有限的空間內(nèi)展示大量數(shù)值型數(shù)據(jù)之間的大小和變化關(guān)系, 如圖7所示, 圖中表示的是一位發(fā)熱待查患者住院期間輔助檢查結(jié)果, 每一條不同顏色的折線代表一天中各個生理指標(biāo), 通過觀察同一個坐標(biāo)軸上數(shù)據(jù)的波動情況,可以分析哪些檢查結(jié)果對于發(fā)熱待查疾病的診治有意義.
圖7 一位患者生理指標(biāo)變化情況
針對當(dāng)前醫(yī)生在臨床診療過程中缺乏系統(tǒng)有效手段的現(xiàn)狀, 結(jié)合當(dāng)前計算機在快速運算和智能學(xué)習(xí)方面的優(yōu)勢, 充分發(fā)揮人機結(jié)合的優(yōu)勢, 以不明原因發(fā)熱電子病歷為例, 利用數(shù)據(jù)挖掘的相關(guān)模型從大量的患者病歷中學(xué)習(xí)眾多癥狀和診治結(jié)論之間的內(nèi)在關(guān)系,輔助醫(yī)生對新的不明原因發(fā)熱患者病因進(jìn)行診斷.
4.1 訓(xùn)練數(shù)據(jù)處理和模型特征選擇
將3.2節(jié)中預(yù)處理后的病歷文件作為學(xué)習(xí)模型輸入的原始數(shù)據(jù), 根據(jù)臨床醫(yī)生的經(jīng)驗和模型的復(fù)雜度,結(jié)合病歷文件中各個癥狀的分布情況, 從87個癥狀中選擇了26個癥狀作為特征, 如對于發(fā)熱這一癥狀, 幾乎在每位患者病歷中都出現(xiàn)了, 對于診斷病因沒有區(qū)別性, 不作為模型的特征; 根據(jù)癥狀的臨床表現(xiàn)陰陽性, 數(shù)值化癥狀的臨床表現(xiàn), 有設(shè)為1, 無設(shè)為0. 這樣, 將原始的每個文本病歷結(jié)構(gòu)化為一個帶有分類標(biāo)簽的多維向量.
4.2 診斷模型的選擇
不明原因發(fā)熱患者的出院診斷中往往有多個病因,各個病因的診斷可能性不同, 在數(shù)據(jù)挖掘領(lǐng)域中這是一個多標(biāo)簽分類問題. 根據(jù)已有病歷數(shù)據(jù)的特點和規(guī)模, 選擇神經(jīng)網(wǎng)絡(luò)算法和決策樹算法對數(shù)據(jù)進(jìn)行建模,這樣可以對比分析兩種模型在處理不明原因發(fā)熱診斷問題上的效果, 找到適合該疾病診斷的最佳模型, 最后選擇學(xué)習(xí)效果比較好的模型作為輔助醫(yī)生進(jìn)行診斷的模型.
神經(jīng)網(wǎng)絡(luò)算法的實現(xiàn)選用了基于java的開源框架Neuroph, Neuroph是輕量級的java神經(jīng)網(wǎng)絡(luò)的框架, 可以用來模擬常見的神經(jīng)網(wǎng)絡(luò)架構(gòu), 用戶可以模塊化定義需要的網(wǎng)絡(luò)結(jié)構(gòu), 在將訓(xùn)練數(shù)據(jù)處理成特定的格式后, 模型會自動進(jìn)行訓(xùn)練學(xué)習(xí), 直到收斂或迭代指定的次數(shù). 本文選用框架中提供的分類能力較好、學(xué)習(xí)過程收斂速度較快的多層感知機(Multi-Layer Perceptron)神經(jīng)網(wǎng)絡(luò)模型, 訓(xùn)練算法采用后向傳播(Back Propagation簡稱BP)算法, 通過輸出后的誤差來估計前一層的誤差,一層一層的反傳下去, 在輸入樣本不斷的刺激下, 改變網(wǎng)絡(luò)連接的權(quán)重, 以使網(wǎng)絡(luò)的輸出逐步接近期望的輸出. BP神經(jīng)網(wǎng)絡(luò)以其非線性映射能力和自適應(yīng)能力在分類問題上得到了廣泛的應(yīng)用. 決策樹的學(xué)習(xí)采用ID3算法, 通過計算每個特征的信息增益選擇分裂節(jié)點, 每一次的決策是向樹的底部深度遍歷的過程, 直到遇到葉子節(jié)點, 給出數(shù)據(jù)的分類標(biāo)簽.
4.3 模型訓(xùn)練及結(jié)果評估
由于出院診斷明確的病歷數(shù)量較少, 為了提高模型訓(xùn)練結(jié)果的精度, 模型的訓(xùn)練采用交叉驗證的方式,將260份出院診斷明確的病例隨機均分成10組, 每輪選擇9組作為訓(xùn)練數(shù)據(jù), 其余的1組病歷數(shù)據(jù)作為驗證, 進(jìn)行10輪的訓(xùn)練和驗證, 最后計算10輪訓(xùn)練的平均錯誤率. 下圖為最終2個模型的訓(xùn)練結(jié)果, 決策樹和神經(jīng)網(wǎng)絡(luò)的平均錯誤率分別是0.33和0.38, 從圖中可以看出, 整體上決策樹模型的學(xué)習(xí)效果優(yōu)于神經(jīng)網(wǎng)絡(luò)模型.
圖8 模型訓(xùn)練結(jié)果對比
在模型訓(xùn)練結(jié)束后, 系統(tǒng)保留錯誤率最低的模型參數(shù), 醫(yī)生利用診斷模型頁面中提供的操作方法, 上傳新的病歷后, 模型輸出該病人發(fā)熱原因, 供醫(yī)生參考.
在以上工作基礎(chǔ)上, 本文開發(fā)了基于不明原因發(fā)熱電子病歷可視分析與輔助診斷系統(tǒng), 系統(tǒng)架構(gòu)圖如圖9所示, 系統(tǒng)分為5層.
圖9 系統(tǒng)架構(gòu)圖
① 數(shù)據(jù)源層: 主要負(fù)責(zé)從不同的數(shù)據(jù)源以不同的格式讀取原始的電子病歷, 現(xiàn)在各大醫(yī)院的電子病歷系統(tǒng)存儲病歷的方式還未統(tǒng)一, 常見的格式如數(shù)據(jù)庫、word格式、excel格式、XML格式, 純文本格式等,數(shù)據(jù)源層通過不同的數(shù)據(jù)接口, 從系統(tǒng)外讀取電子病歷, 將其轉(zhuǎn)換成純文本的格式, 供數(shù)據(jù)處理層使用.
② 數(shù)據(jù)處理層: 對上述處理得到的純文本數(shù)據(jù)進(jìn)行基本的去停用詞和標(biāo)點符號處理, 對相關(guān)文本進(jìn)行分詞處理, 同時基于醫(yī)生提供的癥狀詞典, 運用自然語言處理的相關(guān)方法從病歷文本中提取癥狀和癥狀描述以及某些生理指標(biāo), 如體溫數(shù)據(jù), 為后面的可視化和模型訓(xùn)練做數(shù)據(jù)準(zhǔn)備.
③ 數(shù)據(jù)組織層: 根據(jù)上層可視化形態(tài)和交互任務(wù)的要求, 將相關(guān)數(shù)據(jù)組織成特定的格式供上層使用,將提取出來的癥狀數(shù)據(jù)編碼成數(shù)值型數(shù)據(jù).
④ 可視形態(tài)層和模型層: 根據(jù)醫(yī)生的具體需要, 從可視化組件庫中選擇可視化形態(tài), 利用相關(guān)布局算法和投影映射機制, 將數(shù)據(jù)組織層提供的結(jié)構(gòu)化數(shù)據(jù), 用可視化形態(tài)展現(xiàn)病歷內(nèi)的規(guī)律和病歷間的關(guān)系; 在完成了特征選擇和特征變化之后, 通過數(shù)據(jù)挖掘中的算法模型學(xué)習(xí)病歷內(nèi)不明原因發(fā)熱相關(guān)癥狀和診治結(jié)論之間的關(guān)系, 再用學(xué)習(xí)完成的模型幫助醫(yī)生對新病人的診斷.
⑤ 交互層: 提供基本交互任務(wù)集, 如平移、旋轉(zhuǎn)、過濾等, 醫(yī)生通過和視圖之間不斷的交互操作, 漸進(jìn)式的完成可視分析的任務(wù).
6.1 癥狀提取算法-正向最大匹配算法
癥狀提取的目標(biāo)是從病歷中的現(xiàn)病史和體格檢查部分中提取醫(yī)生對患者臨床癥狀的具體描述, 根據(jù)醫(yī)生提供的不明原因發(fā)熱疾病癥狀詞典, 在病歷文本中搜索癥狀詞典中的詞, 從中找到最長匹配的癥狀以及癥狀的具體表現(xiàn). 正向最大匹配算法在待搜索中文字符串中, 從左到右掃描中文字符串, 當(dāng)有與詞典中的詞匹配的字符串時, 暫存該詞及詞的長度, 當(dāng)整個中文字符串搜索結(jié)束后, 取長度最大的詞為最終提取結(jié)果.
6.2 決策樹構(gòu)造算法-ID3
決策樹構(gòu)造的關(guān)鍵是從眾多特征中, 怎樣選擇合適的特征作為根節(jié)點以及分裂節(jié)點, ID3算法基于信息論中熵的概念[14], 通過計算每個特征的信息增益的方法選擇分裂節(jié)點. 下面具體介紹ID3算法的計算過程.
假設(shè)訓(xùn)練數(shù)據(jù)集為D, 共有m個不同的類別Ci(i=1,…,m),|Ci,D|表示數(shù)據(jù)D中類別為i的樣本個數(shù), |D|表示訓(xùn)練集的大小, 則D的熵定義為:
其中pi為D中任何一個樣本屬于類別Ci的概率, 用|Ci,D|/|D|來估計; 假設(shè)我們在特征A上對整個數(shù)據(jù)集進(jìn)行劃分, 即將A特征作為根結(jié)點, A在數(shù)據(jù)集D中有v個不同的取值{a1,a2,…,av},則特征A可以根據(jù)其取值將數(shù)據(jù)集D劃分為v個不同子集{D1,D2,…,Dv}, 即對于子集Dj的所有樣本在特征A上的取值都為aj,則特征A的熵定義為:
則特征A的信息增益定義為:
同理可以計算數(shù)據(jù)集D中其他特征的信息增益,最后選擇信息增益最大特征作為根結(jié)點; 在A劃分的v個子集上繼續(xù)使用上述方法選擇信息增益大的特征作為分裂結(jié)點, 直到某個子集中的類別全部一樣, 將類別標(biāo)簽作為葉子結(jié)點.
6.3 標(biāo)簽云中關(guān)鍵詞布局算法
標(biāo)簽云(word cloud)可視化形態(tài)常常用來表達(dá)大量文本中出現(xiàn)頻率較高的關(guān)鍵有哪些, 通過詞的大小和顏色幫助用戶快速瀏覽文本中的關(guān)鍵信息, 常常用來做網(wǎng)站的導(dǎo)航和個人主頁特點展示. 其中, 用來布局的重要參數(shù)就是每個詞的權(quán)重, 本文中所用的布局算法將每個詞在病歷中出現(xiàn)的次數(shù)作為權(quán)重, 在完成了詞的權(quán)重和標(biāo)簽云中字體大小、顏色的映射之后, 將詞表和詞表中詞的權(quán)重作為算法的輸入數(shù)據(jù), 首先隨機的將權(quán)重最大的詞放置在某個起點位置, 通常是靠近中間或中央水平線某處, 如果該詞與任何先前放置的詞相交, 移動它, 沿著螺旋上升一步. 重復(fù), 直到?jīng)]有交叉點. 下面的偽代碼簡單的描述了算法的流程:
基于上述研究, 開發(fā)了基于不明原因發(fā)熱電子病歷可視分析與輔助診斷系統(tǒng), 如圖10所示, 針對已有的電子病歷數(shù)據(jù)進(jìn)行了實例驗證. 系統(tǒng)采用經(jīng)典的MVC設(shè)計模式, 服務(wù)器端由java編寫, 前端頁面由html+css+javascript完成, 其中可視化工具選擇了成熟的d3.js和ECharts.js.
圖10 系統(tǒng)可視分析頁面
系統(tǒng)可以直接讀取服務(wù)器端后臺中存儲的從HIS系統(tǒng)中導(dǎo)出的XML格式電子病歷, 利用java工具包解析XML, 從中提取中病歷中的現(xiàn)病史、體格檢查等病歷內(nèi)容, 再利用自然語言處理方法中的正向最大匹配算法從病歷文本中提取患者和發(fā)熱相關(guān)的癥狀以及該癥狀的具體表現(xiàn), 最后在瀏覽器中以表格的形式呈現(xiàn)給醫(yī)生, 醫(yī)生參照原始病歷內(nèi)容, 核對提取結(jié)果, 最后將核對過的提取結(jié)果存到服務(wù)器端.
同時, 醫(yī)生對處理后的病歷, 可以通過可視分析頁面左側(cè)的文件目錄選擇要分析的病歷文件, 再選擇相關(guān)的可視化形態(tài)查看分析病歷內(nèi)容, 如可以通過病程可視化形態(tài)查看每次治療的具體用藥和檢查結(jié)果等, 通過折線圖和熱力圖分析病歷體溫和癥狀在治療前后的變化情況; 通過標(biāo)簽云和柱狀圖分析一份病歷文件中哪些詞出現(xiàn)的頻率最高, 以及哪些形容詞在描述病人體征情況時用的較多. 系統(tǒng)支持在線上傳新的病歷文件, 系統(tǒng)解析后, 返回提取結(jié)果給醫(yī)生.
圖11 系統(tǒng)輔助診斷頁面
在輔助診斷頁面, 醫(yī)生可以利用已經(jīng)訓(xùn)練好的模型對新的不明原因發(fā)熱患者的病歷進(jìn)行分析, 系統(tǒng)給出可能的發(fā)熱原因; 此外, 醫(yī)生也可以從已經(jīng)處理完成的患者病歷中選擇一部分作為訓(xùn)練數(shù)據(jù), 在線訓(xùn)練診斷模型, 根據(jù)返回的訓(xùn)練結(jié)果, 下一步可以進(jìn)行診斷或繼續(xù)訓(xùn)練優(yōu)化模型.
本文針對當(dāng)前醫(yī)生在臨床診斷中缺少系統(tǒng)有效手段的問題, 提出了一種以可視分析和數(shù)據(jù)挖掘方法相結(jié)合的方式, 輔助醫(yī)生進(jìn)行臨床診療, 并以不明原因發(fā)熱電子病歷為實例進(jìn)行了實驗驗證. 通過和臨床醫(yī)生溝通后確定了關(guān)注的癥狀集合, 運用自然語言處理的相關(guān)算法對電子病歷進(jìn)行了預(yù)處理和癥狀的結(jié)構(gòu)化提取, 根據(jù)不明原因發(fā)熱疾病的特點和病歷數(shù)據(jù)內(nèi)的規(guī)律, 設(shè)計了一系列相關(guān)的可視形態(tài)幫助醫(yī)生分析病歷內(nèi)潛在的規(guī)律; 利用數(shù)據(jù)挖掘相關(guān)模型挖掘大量患者癥狀和出院診斷之間的關(guān)系, 用計算機的智能對新的不明原因發(fā)熱患者的病因給出參考, 在一定程度上減輕了醫(yī)生的診療負(fù)擔(dān).
同時, 本文的研究內(nèi)容還存在以下不足: 設(shè)計的可視化形態(tài)不夠豐富, 交互性還有待進(jìn)一步的提高;特征選擇和模型選擇還可以采用更加科學(xué)有效的方法進(jìn)行驗證, 模型還可以嘗試更多, 比如隨機森林, 樸素貝葉斯等, 在后續(xù)工作中, 收集到更多的病歷后,完善以上的不足, 更好的輔助醫(yī)生進(jìn)行診斷.
1 Shortliffe EH, Axline SG, Buchanan BG, et al. An artificial intelligence program to advise physicians regarding antimicrobial therapy. Computers and Biomedical Research, 1973, 6(6): 544–560.
2 Bellows J, Patel S, Young SS. Use of IndiGO individualized clinical guidelines in primary care. Journal of the American Medical Informatics Association, 2013.
3 agchi S, Barborak MA, Daniels S D, et al. User interface for an evidence-based, hypothesis-generating decision support system. U.S. Patent Application 13/448,607. [2012-4-17].
4 陳湖山.可動態(tài)配置的電子病歷數(shù)據(jù)集成視圖研究與開發(fā)[學(xué)碩士位論文].杭州:浙江大學(xué),2012.
5 Bui AAT, Taira RK, Churchill B, et al. Integrated visualization of problemcentric urologic patient records. Annals of the New York Academy of Sciences, 2002, 980(1): 267–277.
6 曾志榮.電子病歷中關(guān)系型數(shù)據(jù)的質(zhì)量分析可視化技術(shù)[學(xué)位論文].北京:中國科學(xué)院研究生院,2012.
7 鄭威琳.病人醫(yī)療信息多維可視化表達(dá)方法與實現(xiàn)技術(shù)研究[博士學(xué)位論文].上海:中國科學(xué)院研究生院上海技術(shù)物理研究所,2014.
8 劉立剛,鐘銳,楊娟.基于興趣度的Apriori 算法在電子病歷數(shù)據(jù)分析中的應(yīng)用.江西理工大學(xué)學(xué)報,2013,34(5):72–76.
9 張連育,呂立.基于策略模式的中醫(yī)數(shù)據(jù)挖掘平臺.計算機系統(tǒng)應(yīng)用,2010,19(11):5–9.
10徐天明,樊銀亭,馬翠霞,等.面向電子病歷中文醫(yī)學(xué)信息的可視組織方法.計算機系統(tǒng)應(yīng)用,2015,24(11):44–51.
11陳為,沈則潛,陶煜波.數(shù)據(jù)可視化.北京:電子工業(yè)出版社,2013.12
12 滕東興,王子璐,楊海燕,等.基于交互式可視組件的分析決策環(huán)境研究.計算機學(xué)報,2011,34(3):555–565.
13董士海,王衡.人機交互.北京:北京大學(xué)出版社,2004.
14 Han J, Kamber M, Pei J. Data Mining: Concepts and Techniques. Elsevier, 2011.
Clinical Diagnosis Model Based on Visual Analysis for Electronic Medical Record
SHANG Jin-Qiu1,2, ZHU Wei-Guo4, FAN Yin-Ting3, LI Wei-Heng1,2, MA Cui-Xia1, TENG Dong-Xing112
(Intelligence Engineering Lab, Institute of Software, Chinese Academy of Sciences, Beijing 100190, China)3(University of Chinese Academy of Sciences, Beijing 100190, China)4(School of Computer Science, Zhongyuan University of Technology, Zhengzhou 450007, China) (Division of General Internal, Medicine Department of IT Management, Peking Union Medical College Hospital, Beijing 100730, China)
To help doctors better diagnose diseases, overcome the lack of systematic and effective means in the process of clinical diagnosis and treatment and make the best of the medical knowledge in electronic medical records, a diagnosis model is proposed based on visual analysis and data mining for electronic medical record. Firstly, electronic medical records of fever of unknown origin are preprocessed into structured data by extracting patients’ symptoms. Secondly, the structured data is organized and visualized based on specific requirements. Finally, a diagnosis model is trained to discover the relationship between symptoms and causes,helping doctors find the potential medical knowledge in medical records and assisting doctors to diagnose. A visual analysis and auxiliary diagnosis framework for clinical diagnosis and treatment is designed based on the above analysis. Experiments show that the system could help doctors analyze the knowledge of electronic medical records of unknown cause, which could help doctors diagnose diseases in a shorter period of time.
electronic medical records; visual analysis; data mining; computer aided diagnosis
北京協(xié)和醫(yī)院杰出青年基金項目(JQ201509);國家高技術(shù)研究發(fā)展計劃(863)(2012AA02A608);國家自然科學(xué)基金(U1304611)
2016-03-21;收到修改稿時間:2016-04-24
10.15888/j.cnki.csa.005465