摘要:本文主要研究的是構建一個智能病案分析推薦系統(tǒng),在醫(yī)生進行臨床操作、書寫患者病歷時,能夠?qū)崟r根據(jù)患者的病歷情況推薦出比較相近的歷史病案,包括診療方案、治療反饋等等,以供給醫(yī)生進行比較準確的診療方案的選擇與運用。甚至在足夠多的正向案例支持下,我們的系統(tǒng)可以總結出對于特定案例的最佳診療路徑。
關鍵詞:中醫(yī);智能分析;病案;系統(tǒng)
中醫(yī)是我國傳統(tǒng)文化的瑰寶,近些年來國家也在大力提倡中醫(yī)藥的傳承與發(fā)展。而傳統(tǒng)的中醫(yī)要在現(xiàn)代社會發(fā)展進步,就要走信息化的道路。在中醫(yī)的信息化、智能化研究領域,有很大一部分工作都是對于中醫(yī)病案的處理與分析,在我們上千年的歷史中留下來大量的中醫(yī)名家醫(yī)案,尤其是近代與當代的名家醫(yī)案,包括現(xiàn)代醫(yī)療衛(wèi)生體系中的每一家中醫(yī)院以及中西結合醫(yī)院中都有大量的中醫(yī)醫(yī)案。如何使用一個相對統(tǒng)一的標準對于這些醫(yī)案進行分析研究,以及在臨床過程中如何對于這些醫(yī)案進行智能的分析使用,這是本文研究的一個關鍵要點。
1 系統(tǒng)構建過程的數(shù)據(jù)準備
在構建系統(tǒng)之前,先要進行數(shù)據(jù)的準備工作。智能數(shù)據(jù)分析推薦系統(tǒng),第一要素就是數(shù)據(jù),沒有足夠量的數(shù)據(jù)是無法進行所謂智能分析推薦的,也就無法構建系統(tǒng)。至于數(shù)據(jù)的來源,既可以是歷代名家醫(yī)案,也可以是醫(yī)院之前所積累的歷史醫(yī)案。首先導入一定數(shù)量的病案數(shù)據(jù),這個數(shù)據(jù)可以是結構化數(shù)據(jù),也可以是半結構化或者非結構化的文本數(shù)據(jù)??紤]到當下醫(yī)院的實際情況,半結構化與非結構化的數(shù)據(jù)應該是比較普遍的情況。應對這類非結構化或者說結構化程度不高的數(shù)據(jù),就需要先構建一個NLP(自然語言識別)模塊,專門用于解析疾病、癥狀、體征等中醫(yī)臨床關注的數(shù)據(jù)項。
2系統(tǒng)構建過程中數(shù)據(jù)處理
如何運用技術手段構建一個適用的NLP模塊,這是一個專門的課題,這里由于篇幅有限就不展開細說了。簡單說說這個NLP模塊主要起到的作用就是對于非結構化的病歷數(shù)據(jù)進行解析處理,提取出標準化的疾病、癥狀、體征等數(shù)據(jù)。這里要特別說明的一點,就是由于醫(yī)生對于病癥描述的多樣性,導致同一個癥狀可能會有多種不同的描述,比如胸悶,可能描述為胸部悶塞、心胸滿悶、胸中窒塞、胸悶痛、胸脹悶等等,這里面涉及到癥狀的相似相近相同,癥狀的包含細分等等復雜情況。而不同的情況要進行不同的技術處理,如果是完全相同的癥狀可以采用一個統(tǒng)一的標準進行癥狀的歸一化操作,而相似相近或者包含細分的癥狀處理情況就比較復雜。在這里如果要比較完善的處理這個工作,就需要有一個比較清晰的標準癥狀體系。現(xiàn)階段并沒有一個公認的中醫(yī)標準癥狀體系規(guī)范,我們這里可以采用中國中醫(yī)藥信息學會2019年3月份發(fā)布的團標《中醫(yī)臨床基本癥狀信息分類與代碼(TCIATCM 020-2019)》[1],以及《中醫(yī)脈象診斷信息分類與代碼(TCIATCM 011-2019)》[2]、《中醫(yī)舌象診斷信息分類與代碼(TCIATCM 010-2019)》[3]。至于由癥狀相似相近或者包含細分等延伸出來的癥狀關系,我們可以歸入次級癥狀關系之中,在進行癥狀關聯(lián)分析時進行相應的權重減分處理。
3 算法分析處理
我們構建一個NLP模塊主要用于進行病案的結構化標準化處理。數(shù)據(jù)標準化處理過后,下一步再進行智能算法分析,我們這里主要使用關聯(lián)分析算法。關聯(lián)分析算法也叫關聯(lián)規(guī)則挖掘[4],它是屬于無監(jiān)督算法的一種,主要用于從大量的數(shù)據(jù)中挖掘出潛在的關聯(lián)關系,常見的關聯(lián)分析算法有Apriori和FP-growth算法,它們可以高效自動地從數(shù)據(jù)集中挖掘出潛在的屬性關聯(lián)組合規(guī)則。這里使用關聯(lián)分析算法主要用于計算每個疾病下癥狀與疾病間的關系,以及計算疾病中癥狀權重配比。這個其實就是一個中醫(yī)藥知識工程的過程[5]。
如圖1、圖2所示,得到疾病與癥狀、癥狀組、癥狀群、證型、治療方案之間的關系,然后結合之前對于標準癥狀的分類分級處理,再結合支持度、置信度、提升度[6]的具體數(shù)值設置,就可以對于數(shù)據(jù)規(guī)則進行分類構建,對于不同級別癥狀的權重也可以進行對應的設置。
支持度(Support),簡單的字面理解就是支持的程度,表示事務A與事務B在一個數(shù)據(jù)集中同時出現(xiàn)的頻率,支持度是沒有方向概念的。可以用于數(shù)據(jù)初步過濾,以及權重初始設置。算法公式:S=F[(A&B)/N]
置信度(Confidence),是指表示使用包含A的事務中同時包含B事務的比例,即同時包含A和B的事務占包含A事務的比例。可以處理成疾病、證型與癥狀之間的詳細關系設置。算法公式:C=F(A&B)/F(A)
提升度(Lift),表示含有A的條件下,同時含有B的概率。并且與B總體發(fā)生的概率做比值。如果提升度>1,則關聯(lián)規(guī)則是一個強關聯(lián)規(guī)則;如果提升度小于等于1,則為無效的關聯(lián)規(guī)則,如果提升度=1,則A與B相互獨立??梢杂糜跀?shù)據(jù)關系強化設置。算法公式:L=S(A&B)/[S(A)*S(B)]
當然權重的設置可以進行多個維度的考慮,單一的衡量維度有可能會失于偏頗。事實上從臨床層面出發(fā),醫(yī)生對于患者的病情判斷本身也是會從多個維度出發(fā),最終得到的是一個綜合判斷的結果。此處可以與業(yè)務專家進行探討,比如可以設置疾病維度、證型維度、病機維度、體質(zhì)維度等等,從不同的維度、不同的層面對于數(shù)據(jù)進行算法分析處理,得到不同坐標的權重數(shù)值設置,最終實現(xiàn)模擬臨床的中醫(yī)辨證思維。
舉個簡單的例子,比如處理單個疾病與癥狀之間的關系,由于限定了疾病,則在數(shù)據(jù)關系中相對簡單,只需要考慮支持度就可以了,因為這里的置信度與支持度是一致的,而提升度則都是1。
數(shù)據(jù)如圖3所示,可以根據(jù)支持度對于疾病癥狀群劃分幾個等級,支持度小于0.2的可以直接舍棄,即由支持度大于等于0.2的癥狀構成疾病的有效癥狀群,然后再在疾病有效癥狀群中根據(jù)支持度劃分等級權重。簡單的計算方法可以直接設置等級,比如0.2-0.4的為一級癥狀,0.4-0.6的為二級癥狀,0.6-0.8的為三級癥狀。當然這種設置方法是比較粗糙的,事實上0.41和0.39相差不大,設置成兩個等級是有問題的。所以這種等級設置是概念上的,而實際計算使用支持度具體數(shù)值會比較準確。
再舉個例子,如圖4所示是高血壓疾病下證型與癥狀之間的關系,在進行這類數(shù)據(jù)關系處理時,要注意不同證型數(shù)據(jù)的分布比例,因為原始數(shù)據(jù)中有可能會產(chǎn)生某類證型占比過高的現(xiàn)象,比如冠心病心絞痛中可能“心血瘀阻型”會占比過高,而其他證型占比過少,而產(chǎn)生數(shù)據(jù)的不均勻分布,這就需要進行一定的數(shù)據(jù)處理。還需要注意有些癥狀可能是疾病關聯(lián),與證型關聯(lián)不大,比如“冠心病心絞痛”中“胸痛”這個癥狀每個證型都會有,支持度、置信度都挺高,但其實沒有實際作用意義。在這個維度下進行計算時,可以不必考慮(當然由于每個證型都有,其實計算進去也沒什么,于結果無影響,只是會多耗費一些算力)。
此處其實有兩種思維模式,一種是可以參考疾病-癥狀的模式,按照單一證型與癥狀關系來處理,這樣只需要單純考慮支持度就可以。缺點是比較繁瑣,每個疾病的每種證型都需要單獨處理一遍。而另一種就是綜合處理、綜合考慮。
4 系統(tǒng)框架構建
數(shù)據(jù)權重分析設置完成之后,對于基礎數(shù)據(jù)的處理就基本上就告一個段落了,當然這是一個需要反復測試調(diào)整的過程,不是一次二次設置就能完成的,在很多情況下都需要一個病種一個病種地進行調(diào)試設置。再之后的工作就是構建搜索程序,主要就是進行一系列的判斷規(guī)則的生成構建應用。
我們使用JAVA編程語言進行整個智能分析推薦程序的研發(fā)。整體程序的架構如下圖5所示。
系統(tǒng)整體采用多層架構。NLP模塊在應用服務程序中要繼續(xù)使用,主要用于醫(yī)生所錄入病歷的解析識別。將之識別為標準體系內(nèi)的疾病和癥狀,用于作為分析、辨證模塊判斷的基礎。
在設計研發(fā)分析、辨證、搜索模塊時,需要注意對于不同邏輯規(guī)則的綜合判斷,以及搜索算法的性能優(yōu)化,要實現(xiàn)秒級以內(nèi)的響應速度,不然會影響前臺使用體驗。
使用系統(tǒng)時,醫(yī)生在前臺輸入病案,由后端NLP模塊識別標準癥狀與疾病,再由智能分析模塊根據(jù)疾病、癥狀權重進行多層次、多維度的判斷比對,最終給前臺推薦出關聯(lián)度最高的病案。
當然,在醫(yī)院實際上線應用時,還需要考慮和HIS系統(tǒng)、EMR系統(tǒng)的集成對接??梢灾苯訉⑶芭_交予HIS/EMR系統(tǒng),系統(tǒng)作為一個后端服務存在。這樣能夠達到與醫(yī)院現(xiàn)有系統(tǒng)的無縫對接,避免醫(yī)生使用多套系統(tǒng)。
5 系統(tǒng)構建的關鍵要點、優(yōu)缺點、注意點
關于構建此系統(tǒng)架構的關鍵要點:(1)輸入歷史病案的權威性、豐富性。(2)NLP模塊的準確識別率。(3)對于病案數(shù)據(jù)進行算法分析時多維度、多層面的權重數(shù)值設置。(4)對于輸入病案進行權重分析推薦是的邏輯判斷規(guī)則,以及搜索效率。
采用此系統(tǒng)架構的優(yōu)點:(1)解決傳統(tǒng)的病案搜索中相同癥狀不同寫法無法匹配的問題,比如有的醫(yī)生寫胸痛,有的醫(yī)生寫胸口疼,傳統(tǒng)的文本匹配是無法實現(xiàn)匹配搜索的。(2)解決傳統(tǒng)的病案搜索中單純依靠癥狀匹配個數(shù)來處理病案匹配程度,導致匹配無法量化,匹配不準確的問題。(3)可以對于過于相似的病案進行預處理,防止出現(xiàn)推薦一排病歷大同小異的情況。
采用此系統(tǒng)架構的缺點:(1)亦是之前的關鍵要點1,系統(tǒng)受限于歷史病案的豐富程度。如果病案不豐富,則在數(shù)據(jù)分析階段就無法進行。(2)對于醫(yī)生臨床輸入的病歷也會有一定要求,醫(yī)生輸入的病歷越完整,得到有價值推薦病案的概率就越高。
在系統(tǒng)研發(fā)中還有一些注意點:要注意對于陰性癥狀的判斷識別,因為傳統(tǒng)的病案癥狀搜索過程中都是注重對于陽性癥狀的搜索處理,忽略陰性癥狀的搜索,但事實上陰性癥狀也是非常重要的判斷標準,甚至是第一序列的判斷條件,比如患者流涕,不咳嗽。那么在所有的案例搜索中,第一時間應該是排除全部有咳嗽癥狀的病案,然后再去對比流涕癥狀的權重。
6小結
最后,回顧一下主題,本文主要探討的就是構建一個智能的中醫(yī)病案推薦系統(tǒng)。構建過程中主要使用了NLP、數(shù)據(jù)挖掘、關聯(lián)分析算法、搜索算法、中醫(yī)辨證分析思維、標準癥狀體系、癥狀分類分級等等技術以及思維模型,希望對于中醫(yī)的信息化、智能化能有一定幫助,對于中醫(yī)信息技術的臨床應用能起到積極的作用。
參考文獻:
[1]TCIATCM 020-2019.中醫(yī)臨床基本癥狀信息分類與代碼[S].2019.
[2]TCIATCM 011-2019.中醫(yī)脈象診斷信息分類與代碼[S].2019.
[3]TCIATCM 010-2019.中醫(yī)舌象診斷信息分類與代碼[S].2019.
[4]于彤,陳華鈞,姜曉紅.中醫(yī)藥知識工程[M].科學出版社.2018.
[5]范明,范宏建 譯.數(shù)據(jù)挖掘?qū)д揫M].人民郵電出版社.2010.
[6]范明,孟小峰 譯.數(shù)據(jù)挖掘:概念與技術[M].機械工業(yè)出版社.2007.
作者簡介:董桂峰(1981—),男,漢族,南昌大學碩士在讀,單位:南京大經(jīng)中醫(yī)藥信息技術有限公司,研究方向為醫(yī)療信息化、智能化。