陸曉野
(右江民族醫(yī)學(xué)院,廣西 百色 533000)
隨著信息化技術(shù)的發(fā)展,我國大多數(shù)三甲醫(yī)院的信息化水平都比較高,電子病歷系統(tǒng)[1-2]已經(jīng)被應(yīng)用于臨床一線多年,而且運(yùn)行比較穩(wěn)定和成熟,對于不同的科室、不同的臨床應(yīng)用場景,都有對應(yīng)的規(guī)范化的電子病歷模板[3-4],但是每種電子病歷模板的項目繁多,如果通過手動一項一項逐一核對錄入,既費(fèi)時又費(fèi)力,而且容易出錯或者遺漏[5-6]。美國醫(yī)學(xué)會(AMA)的統(tǒng)計數(shù)據(jù)表明[7],病歷及與之相關(guān)的文案書寫占據(jù)醫(yī)護(hù)人員所有工作時間的15%~20%,對于實習(xí)期的醫(yī)護(hù)人員,這一數(shù)字更是高達(dá)30%。據(jù)調(diào)查,目前部分三甲醫(yī)院的電子病歷系統(tǒng)已經(jīng)具有語音錄入功能,但是功能比較單一,應(yīng)用層次較低,面對項目繁多的電子病歷模板,需要人工手動一項一項定位光標(biāo)到相應(yīng)的病歷項目,才能語音錄入,遠(yuǎn)遠(yuǎn)沒有達(dá)到智能化錄入的水平,實際自動化應(yīng)用程度并不高[5]。因此,有效提高電子病歷信息錄入的智能化水平,省去醫(yī)生煩瑣錄入電子病歷信息的過程,是當(dāng)下亟須研究和解決的問題,也是醫(yī)學(xué)發(fā)展和構(gòu)建新型醫(yī)療服務(wù)體系的需要。
在當(dāng)前已有的研究和應(yīng)用中,將語音識別技術(shù)應(yīng)用于電子病歷的相關(guān)研究很多,但是相關(guān)研究僅局限于將語音轉(zhuǎn)換成文本的研究,沒有涉及從語音錄入的文本病歷信息中挖掘關(guān)鍵病歷信息與電子病歷表單項匹配對接的研究,導(dǎo)致語音錄入病歷的智能化程度不高。因此,針對智能化水平欠缺的問題,研究設(shè)計基于索引目錄從語音錄入的文本中提取關(guān)鍵病歷信息的文本挖掘算法,快速、準(zhǔn)確、自動地提取關(guān)鍵病歷信息,與電子病歷的表單項匹配對接,實現(xiàn)智能語音錄入,旨在幫助醫(yī)護(hù)人員解決煩瑣的病歷錄入問題,提高臨床的智能化水平,具有現(xiàn)實的研究意義和研究價值,為相似領(lǐng)域的研究提供參考。
基于索引目錄的病歷信息文本挖掘算法,首先,醫(yī)護(hù)人員通過語音識別軟件語音錄入電子病歷信息,并生成文本形式的病歷信息;然后,根據(jù)索引目錄,有針對性地從文本形式的病歷信息中挖掘出關(guān)鍵的病歷信息;最后,把挖掘出的關(guān)鍵病歷信息自動填入電子病歷界面中對應(yīng)的表單項目,以實現(xiàn)智能化語音錄入電子病歷的功能。該算法主要包括的模塊有:索引目錄、文本病歷信息、挖掘關(guān)鍵病歷信息。
1)索引目錄。電子病歷系統(tǒng)包含眾多規(guī)范化的電子病歷表單錄入界面,每張表單都有各自的病歷信息錄入項目。當(dāng)醫(yī)護(hù)人員點(diǎn)擊進(jìn)入電子病歷系統(tǒng)某張表單的病歷信息錄入界面時,算法會根據(jù)當(dāng)前錄入界面的表單項目自動生成對應(yīng)的索引目錄,索引目錄包含該錄入界面的所有表單項目,是該錄入界面表單項目的全集。各項索引目錄的名稱,根據(jù)表單各項項目的名稱來命名,類似如:心率、血氧、收縮壓、舒張壓、體溫等詞語,一般是醫(yī)學(xué)的官方名稱或者簡稱,也是醫(yī)護(hù)人員的習(xí)慣用語。索引目錄的形式,如圖1所示。

圖1 索引目錄
2)文本病歷信息。醫(yī)護(hù)人員通過麥克風(fēng)語音錄入電子病歷信息,則語音識別軟件把語音信息轉(zhuǎn)換成文本的形式,形成文本病歷信息。醫(yī)護(hù)人員通過當(dāng)前錄入界面顯示的各項病歷信息的名稱來錄入病歷信息,使得算法的設(shè)計更具有針對性,同時與該表單項目的索引目錄匹配對應(yīng),提高算法運(yùn)行的效率和準(zhǔn)確率。語音錄入電子病歷信息的方式是,先說出具體的項目名稱,再說出對應(yīng)的病歷信息,比如:“心率80”“血氧96”“收縮壓121”等,語音錄入各病歷項目時,中間會有1~2秒的停頓,這樣語音識別軟件會在各病歷項目的信息之間加入逗號,錄入較長的病歷描述時,根據(jù)中間的停頓或者文本的意思也會適當(dāng)加入逗號。當(dāng)語音錄入結(jié)束時,說出“完畢”,則文本病歷信息以“完畢”結(jié)尾。語音錄入電子病歷信息的文本形式,如圖2所示。

圖2 文本病歷信息
3)挖掘關(guān)鍵病歷信息。根據(jù)當(dāng)前電子病歷錄入界面的索引目錄,從語音錄入的文本病歷信息中,挖掘出每項索引目錄對應(yīng)的關(guān)鍵病歷信息,與電子病歷系統(tǒng)的表單項目進(jìn)行匹配,自動把關(guān)鍵病歷信息填入相應(yīng)的表單項目中,完成智能語音錄入功能。對圖2中的文本病歷信息進(jìn)行挖掘,挖掘出的關(guān)鍵病歷信息,如圖3所示。
基于索引目錄的病歷信息文本挖掘算法,主要包含如下幾個步驟,算法的流程圖,如圖4所示。

圖4 算法流程圖
1)構(gòu)建索引目錄。當(dāng)醫(yī)護(hù)人員點(diǎn)擊進(jìn)入某個電子病歷的錄入界面時,算法自動搜索該錄入界面所包含的所有表單項目,根據(jù)表單項目的名稱逐項生成對應(yīng)的索引目錄,最后進(jìn)行集成,構(gòu)建該電子病歷模板完整的索引目錄。
2)形成文本病歷信息。語音識別軟件將醫(yī)護(hù)人員語音錄入的電子病歷信息轉(zhuǎn)換成文本的形式,形成文本病歷信息。文本病歷信息以逗號來分隔,以“完畢”結(jié)尾。
3)分解文本病歷信息。算法根據(jù)文本病歷信息中的逗號,對整個文本病歷信息進(jìn)行分解,把分解后的文本病歷信息逐項以字符串的形式存放到向量Vector。遍歷圖2 中的文本病歷信息,對文本進(jìn)行分解,得到分解后的文本病歷信息的形式,如圖5所示。

圖5 分解后的文本病歷信息
4)挖掘關(guān)鍵病歷信息。根據(jù)索引目錄,逐條遍歷存放文本病歷信息的向量Vector,如果某條病歷信息的前面幾個字符與索引目錄中的某一項索引名稱相匹配,則創(chuàng)建一條新的鍵值對,鍵是索引名稱,值是對應(yīng)的關(guān)鍵病歷信息,并存放到容器Map 中;如果該條病歷信息的前幾個字符沒有與索引目錄中的任何一項索引名稱相匹配,則該條病歷信息屬于上一項索引目錄的病歷信息,追加存放到上一條Map鍵值對的值中,如圖3所示,其中,“主訴”“現(xiàn)病史”“既往史”“個人史”等索引目錄都包含多條病歷信息,后面的條目都需要追加到上一條病歷信息中。當(dāng)算法搜索到“完畢”時,遍歷結(jié)束。
5)關(guān)鍵病歷信息填入電子病歷系統(tǒng)的表單項目。遍歷存放關(guān)鍵病歷信息的容器Map,用容器Map 的鍵與當(dāng)前錄入界面表單項目的名稱進(jìn)行匹配,把匹配的鍵值自動填入相應(yīng)的表單項目中,完成智能語音錄入。
算法采用C++程序設(shè)計語言進(jìn)行編寫。索引目錄存放在向量Vector 中,變量命名為v_index;分解后的文本病歷信息也存放在向量Vector中,變量命名為v_text;而挖掘出的關(guān)鍵病歷信息,則以鍵值對的形式存放在容器Map中,變量命名為map_key。
在語音錄入的過程中,允許醫(yī)護(hù)人員對某一項已經(jīng)錄入的病歷信息進(jìn)行修改,只要再次語音錄入該項病歷信息即可,最新語音錄入的信息就會覆蓋原先的信息,算法只保存最后一次錄入的信息。針對這種情況,算法的實現(xiàn)細(xì)節(jié)是,在創(chuàng)建一條新的鍵值對之前,先遍歷當(dāng)前存放關(guān)鍵病歷信息的容器map_key,如果容器map_key 中已經(jīng)存在該鍵,則用最新的病歷信息去覆蓋該鍵對應(yīng)的值;如果容器map_key 中不存在該鍵,則把該條鍵值對插入到容器map_key中。
算法關(guān)鍵步驟的偽代碼,如圖6所示。

圖6 算法關(guān)鍵步驟的偽代碼
實驗環(huán)境:實驗使用日常生活中普通的電腦進(jìn)行模擬實驗,并不是在醫(yī)院電子病歷系統(tǒng)的真實環(huán)境中進(jìn)行的實驗。
電腦配置:Intel Core i7-9700,內(nèi)存8GB,機(jī)械硬盤1TB,Windows 10系統(tǒng)。算法采用C++語言實現(xiàn),采用科大訊飛語音識別軟件。算法運(yùn)行期間,不運(yùn)行其他的應(yīng)用程序。
實驗設(shè)計:根據(jù)醫(yī)院電子病歷錄入的真實場景,設(shè)計一個電子病歷模板的錄入界面,同時準(zhǔn)備一份電子病歷信息的講稿。在一間無其他干擾的房間內(nèi),通過麥克風(fēng),用標(biāo)準(zhǔn)的普通話以正常的語速錄入講稿信息,即根據(jù)電子病歷模板的表單項目,模擬語音錄入電子病歷信息,觀察算法運(yùn)行的實驗結(jié)果。
實驗結(jié)果表明,算法運(yùn)行情況良好。算法的運(yùn)行效率比較高,錄入界面顯示出病歷信息的速度與語音錄入病歷信息基本上是同步的,因為本次實驗?zāi)M語音錄入的電子病歷信息的總字?jǐn)?shù)是237個,這樣的總字?jǐn)?shù)不會給電腦的CPU 和內(nèi)存造成任何負(fù)擔(dān)。據(jù)前期調(diào)查,在醫(yī)院電子病歷錄入的真實場景中,大多數(shù)電子病歷信息的總字?jǐn)?shù)在150~350字,本實驗的設(shè)計符合醫(yī)院應(yīng)用的真實場景。本實驗算法運(yùn)行的準(zhǔn)確率為100%,因為在安靜的環(huán)境下進(jìn)行語音錄入,沒有受到周圍環(huán)境其他噪聲的影響,而且用標(biāo)準(zhǔn)的普通話以正常的語速錄入,語音識別軟件把語音轉(zhuǎn)換成文本的準(zhǔn)確率為100%,電子病歷信息的講稿也是按照表單項目進(jìn)行規(guī)范化設(shè)計的,所以算法運(yùn)行的準(zhǔn)確率非常高。可見,該算法不僅具有研究的價值和意義,還具有良好的應(yīng)用前景。
基于索引目錄的病歷信息文本挖掘算法,根據(jù)當(dāng)前錄入界面的表單項目自動生成對應(yīng)的索引目錄,同時醫(yī)護(hù)人員語音錄入電子病歷信息時,也根據(jù)當(dāng)前的表單項目有針對性地語音錄入,使得算法的設(shè)計更具體、更具有針對性。算法的設(shè)計采用向量Vector 和容器Map,有利于算法的實現(xiàn)。實驗結(jié)果表明,算法運(yùn)行的效率和準(zhǔn)確率都比較高,具有研究的價值和意義。
本文算法還有改進(jìn)與優(yōu)化的空間,對今后的研究工作提出兩點(diǎn)展望。1)針對有的醫(yī)護(hù)人員存在地方口音或者讀音不標(biāo)準(zhǔn)的問題,改進(jìn)算法,使算法具有一定的容錯性;2)在真實應(yīng)用場景中,語音錄入的病歷信息中可能包含一些無效的信息,比如一些尾音,因此優(yōu)化算法,對于挖掘出的關(guān)鍵病歷信息,進(jìn)行差錯檢測,并刪除無效信息,只保留關(guān)鍵核心信息。