基于索引目录的病历信息文本挖掘算法

2023-11-06 11:04陆晓野
电脑知识与技术 2023年27期
关键词:表单病历医护人员

陆晓野

(右江民族医学院,广西 百色 533000)

0 引言

随着信息化技术的发展,我国大多数三甲医院的信息化水平都比较高,电子病历系统[1-2]已经被应用于临床一线多年,而且运行比较稳定和成熟,对于不同的科室、不同的临床应用场景,都有对应的规范化的电子病历模板[3-4],但是每种电子病历模板的项目繁多,如果通过手动一项一项逐一核对录入,既费时又费力,而且容易出错或者遗漏[5-6]。美国医学会(AMA)的统计数据表明[7],病历及与之相关的文案书写占据医护人员所有工作时间的15%~20%,对于实习期的医护人员,这一数字更是高达30%。据调查,目前部分三甲医院的电子病历系统已经具有语音录入功能,但是功能比较单一,应用层次较低,面对项目繁多的电子病历模板,需要人工手动一项一项定位光标到相应的病历项目,才能语音录入,远远没有达到智能化录入的水平,实际自动化应用程度并不高[5]。因此,有效提高电子病历信息录入的智能化水平,省去医生烦琐录入电子病历信息的过程,是当下亟须研究和解决的问题,也是医学发展和构建新型医疗服务体系的需要。

在当前已有的研究和应用中,将语音识别技术应用于电子病历的相关研究很多,但是相关研究仅局限于将语音转换成文本的研究,没有涉及从语音录入的文本病历信息中挖掘关键病历信息与电子病历表单项匹配对接的研究,导致语音录入病历的智能化程度不高。因此,针对智能化水平欠缺的问题,研究设计基于索引目录从语音录入的文本中提取关键病历信息的文本挖掘算法,快速、准确、自动地提取关键病历信息,与电子病历的表单项匹配对接,实现智能语音录入,旨在帮助医护人员解决烦琐的病历录入问题,提高临床的智能化水平,具有现实的研究意义和研究价值,为相似领域的研究提供参考。

1 算法需求分析

基于索引目录的病历信息文本挖掘算法,首先,医护人员通过语音识别软件语音录入电子病历信息,并生成文本形式的病历信息;然后,根据索引目录,有针对性地从文本形式的病历信息中挖掘出关键的病历信息;最后,把挖掘出的关键病历信息自动填入电子病历界面中对应的表单项目,以实现智能化语音录入电子病历的功能。该算法主要包括的模块有:索引目录、文本病历信息、挖掘关键病历信息。

1)索引目录。电子病历系统包含众多规范化的电子病历表单录入界面,每张表单都有各自的病历信息录入项目。当医护人员点击进入电子病历系统某张表单的病历信息录入界面时,算法会根据当前录入界面的表单项目自动生成对应的索引目录,索引目录包含该录入界面的所有表单项目,是该录入界面表单项目的全集。各项索引目录的名称,根据表单各项项目的名称来命名,类似如:心率、血氧、收缩压、舒张压、体温等词语,一般是医学的官方名称或者简称,也是医护人员的习惯用语。索引目录的形式,如图1所示。

图1 索引目录

2)文本病历信息。医护人员通过麦克风语音录入电子病历信息,则语音识别软件把语音信息转换成文本的形式,形成文本病历信息。医护人员通过当前录入界面显示的各项病历信息的名称来录入病历信息,使得算法的设计更具有针对性,同时与该表单项目的索引目录匹配对应,提高算法运行的效率和准确率。语音录入电子病历信息的方式是,先说出具体的项目名称,再说出对应的病历信息,比如:“心率80”“血氧96”“收缩压121”等,语音录入各病历项目时,中间会有1~2秒的停顿,这样语音识别软件会在各病历项目的信息之间加入逗号,录入较长的病历描述时,根据中间的停顿或者文本的意思也会适当加入逗号。当语音录入结束时,说出“完毕”,则文本病历信息以“完毕”结尾。语音录入电子病历信息的文本形式,如图2所示。

图2 文本病历信息

3)挖掘关键病历信息。根据当前电子病历录入界面的索引目录,从语音录入的文本病历信息中,挖掘出每项索引目录对应的关键病历信息,与电子病历系统的表单项目进行匹配,自动把关键病历信息填入相应的表单项目中,完成智能语音录入功能。对图2中的文本病历信息进行挖掘,挖掘出的关键病历信息,如图3所示。

2 算法设计

基于索引目录的病历信息文本挖掘算法,主要包含如下几个步骤,算法的流程图,如图4所示。

图4 算法流程图

1)构建索引目录。当医护人员点击进入某个电子病历的录入界面时,算法自动搜索该录入界面所包含的所有表单项目,根据表单项目的名称逐项生成对应的索引目录,最后进行集成,构建该电子病历模板完整的索引目录。

2)形成文本病历信息。语音识别软件将医护人员语音录入的电子病历信息转换成文本的形式,形成文本病历信息。文本病历信息以逗号来分隔,以“完毕”结尾。

3)分解文本病历信息。算法根据文本病历信息中的逗号,对整个文本病历信息进行分解,把分解后的文本病历信息逐项以字符串的形式存放到向量Vector。遍历图2 中的文本病历信息,对文本进行分解,得到分解后的文本病历信息的形式,如图5所示。

图5 分解后的文本病历信息

4)挖掘关键病历信息。根据索引目录,逐条遍历存放文本病历信息的向量Vector,如果某条病历信息的前面几个字符与索引目录中的某一项索引名称相匹配,则创建一条新的键值对,键是索引名称,值是对应的关键病历信息,并存放到容器Map 中;如果该条病历信息的前几个字符没有与索引目录中的任何一项索引名称相匹配,则该条病历信息属于上一项索引目录的病历信息,追加存放到上一条Map键值对的值中,如图3所示,其中,“主诉”“现病史”“既往史”“个人史”等索引目录都包含多条病历信息,后面的条目都需要追加到上一条病历信息中。当算法搜索到“完毕”时,遍历结束。

5)关键病历信息填入电子病历系统的表单项目。遍历存放关键病历信息的容器Map,用容器Map 的键与当前录入界面表单项目的名称进行匹配,把匹配的键值自动填入相应的表单项目中,完成智能语音录入。

3 算法伪代码

算法采用C++程序设计语言进行编写。索引目录存放在向量Vector 中,变量命名为v_index;分解后的文本病历信息也存放在向量Vector中,变量命名为v_text;而挖掘出的关键病历信息,则以键值对的形式存放在容器Map中,变量命名为map_key。

在语音录入的过程中,允许医护人员对某一项已经录入的病历信息进行修改,只要再次语音录入该项病历信息即可,最新语音录入的信息就会覆盖原先的信息,算法只保存最后一次录入的信息。针对这种情况,算法的实现细节是,在创建一条新的键值对之前,先遍历当前存放关键病历信息的容器map_key,如果容器map_key 中已经存在该键,则用最新的病历信息去覆盖该键对应的值;如果容器map_key 中不存在该键,则把该条键值对插入到容器map_key中。

算法关键步骤的伪代码,如图6所示。

图6 算法关键步骤的伪代码

4 实验

实验环境:实验使用日常生活中普通的电脑进行模拟实验,并不是在医院电子病历系统的真实环境中进行的实验。

电脑配置:Intel Core i7-9700,内存8GB,机械硬盘1TB,Windows 10系统。算法采用C++语言实现,采用科大讯飞语音识别软件。算法运行期间,不运行其他的应用程序。

实验设计:根据医院电子病历录入的真实场景,设计一个电子病历模板的录入界面,同时准备一份电子病历信息的讲稿。在一间无其他干扰的房间内,通过麦克风,用标准的普通话以正常的语速录入讲稿信息,即根据电子病历模板的表单项目,模拟语音录入电子病历信息,观察算法运行的实验结果。

实验结果表明,算法运行情况良好。算法的运行效率比较高,录入界面显示出病历信息的速度与语音录入病历信息基本上是同步的,因为本次实验模拟语音录入的电子病历信息的总字数是237个,这样的总字数不会给电脑的CPU 和内存造成任何负担。据前期调查,在医院电子病历录入的真实场景中,大多数电子病历信息的总字数在150~350字,本实验的设计符合医院应用的真实场景。本实验算法运行的准确率为100%,因为在安静的环境下进行语音录入,没有受到周围环境其他噪声的影响,而且用标准的普通话以正常的语速录入,语音识别软件把语音转换成文本的准确率为100%,电子病历信息的讲稿也是按照表单项目进行规范化设计的,所以算法运行的准确率非常高。可见,该算法不仅具有研究的价值和意义,还具有良好的应用前景。

5 结论

基于索引目录的病历信息文本挖掘算法,根据当前录入界面的表单项目自动生成对应的索引目录,同时医护人员语音录入电子病历信息时,也根据当前的表单项目有针对性地语音录入,使得算法的设计更具体、更具有针对性。算法的设计采用向量Vector 和容器Map,有利于算法的实现。实验结果表明,算法运行的效率和准确率都比较高,具有研究的价值和意义。

本文算法还有改进与优化的空间,对今后的研究工作提出两点展望。1)针对有的医护人员存在地方口音或者读音不标准的问题,改进算法,使算法具有一定的容错性;2)在真实应用场景中,语音录入的病历信息中可能包含一些无效的信息,比如一些尾音,因此优化算法,对于挖掘出的关键病历信息,进行差错检测,并删除无效信息,只保留关键核心信息。

猜你喜欢
表单病历医护人员
强迫症病历簿
电子表单系统应用分析
“大数的认识”的诊断病历
战疫一线医护人员如何调适自己
南平市妇联关爱援鄂医护人员家属
浅谈网页制作中表单的教学
为何要公开全部病历?
帮助医护人员处理好四种关系
村医未写病历,谁之过?
动态表单技术在教学管理中的应用*