电子病历中应用自然语言生成结构化数据的研究(1)王巍(武汉市第一医院网络中心,武汉430022)时间:2011-8-1516:32:42点击:97摘要:本文主要讨论在电子科技发展的今天,计算机技术与病历系统相结合,通过自然语言录入系统,转化为结构化数据的方法,形成电子病历。研究这些方法在电子病历系统应用中会出现的一些技术难点。关键词:自然语言;结构化数据;db2purexml;电子病历中图分类号:tp274文献标识码:a文章编号:1007-9599(2011)05-0000-03electronicmedicalrecordapplicationofnaturallanguagegenerationstructureddataresearchwangwei(networkcenter,wuhanno.1hospital,wuhan430022,china)abstract:thisarticlefocusesonthedevelopmentofelectronictechnologytoday,computertechnologycombinedwiththemedicalsystemthroughnaturallanguageinputsystem,intoastructureddataapproach,theformationofelectronicmedicalrecords.thesemethodsintheelectronicmedicalrecordsystemapplicationwillappearinanumberoftechnicaldifficulties.keywords:naturallanguage;structureddata;db2purexml;electronicmedicalrecords一、概述电子病历是科技化社会推进过程中的必然发展,其有助于各医院科室间对数据的交流和共享;并成为保存人一生的病历记录的最佳载体,它以时间发展顺序,逐条记录一个人从出生到死亡的所有临床诊断、检验结果和治疗信息情况;其真实客观的记录,也是医学研究最佳的分析资料。目前,我国的电子病历发展经历了三个阶段,概括来说,第一阶段为电子文档的阶段,将纸质的病历录入为电子文档形式,第二阶段为表格化的电子病历,第三个阶段为半结构化阶段。对于电子病历的内容录入,目前较多的采用的还是结构化的表单输入,规定好各种模板,然后通过下拉列表等方式构成一个医学病历录入系统。这种方式,使得数据在录入初始,就是半结构化的,但是,它不符合一般人的信息表述方式,而且不够灵活,使用习惯上,也无法得到认同,医生还是更习惯使用自然语言进行录入。但同时,对于计算机进行数据分析,保存和分享来说,结构化数据才是最合适的,松散的自然语言,计算机并不认识,所以业界认为还是以结构化数据为研究核心,但是未来的发展方向是通过自然语言录入,转化为结构化数据。二、业务分析电子病历是以记录人一生的医疗数据为目标的,其记录的内容可以包括:就医诊断结果,过敏史,药物使用记录,还有许多诊断技术生成的影像和信号,如x线检查、ct扫描、磁共振成像、内镜检查、病理学、超声波、心电图、脑电图、肌电图等等。在未来,他的记录除了医生,护士,还可以包括普通药店等所有与医药相关的工作人员。由于电子病历的录入者,并非专业的计算机人员,甚至还包括许多不会计算机的老医师,故而,它的录入方式需要以简单,容易上手,不改变业务使用人员的操作习惯为目标。一般来说,人从出生开始,就应该建立一个电子病历档案,该档案为全系统通用的,可以进行共享,读取,保存等操作,人在就医的时候,由医生录入其病历资料,扫描保存各种诊断的多媒体资料,由护士录入临床的各种护理操作,甚至药物使用等各种相关信息,并且系统忠实记录录入时间和每次的修改时间。而计算机则对这些信息进行分析处理,形成结构化数据进行保存。医院可以对这些数据进行管理,清楚的知道患者的整个医疗过程,对这些数据进行分析,获得宝贵的医学资料,提高医学质量。三、技术分析(一)自然语言数据录入概述中,已经讨论了,目前的电子病历录入方式,最佳的是通过自然语言录入,在转化为结构化数据进行存储分析。自然语言数据录入——nlp,它是人工智能领域的子集,使用户在输入记录的时候,不必改变使用习惯,当病历录入计算机系统后,由系统分析,将自然语言转化为结构化数据。因为,计算机是不懂得人类的自然语言的,只用转化为结构化数据后,它才能够进行识别、理解和处理,有助于日后的数据分析和搜索。而其中关键的就是对录入的自然语言句子进行分析,处理其中包含的各种医学信息,如图1。结构化数据存储医学术语库计算机分析处理录入自然语言图1、自然语言处理过程自然语言的计算机处理是一个关系到计算机科学,语言学,逻辑学,心理学,人工智能等领域的综合性研究。(二)难点分析首先,我们已经明确,在电子病历系统中,能够用来分析,存储,管理的数据应该是结构化数据,而最佳输入则为,自然语言输入。所以,如何将自然语言通过计算机分析处理转化为结构化数据成为我们要解决的技术问题。对于自然语言,它显然的不同与计算机语言,本身的发展,又是先于计算机语言的,故而,要将这样一种复杂的符号系统转化为计算机可以理解的结构化数据,是有一定难度的。而且自然语言表达的意思,是具有极大的不确定性,和受语义环境影响的,尤其是中文字符的意思,更加复杂了,举个最简单的例子,“意思意思”这个4个字的理解,就可以是多样化的,更遑论,中文断句造成的不同表述:“我想起来了”,可以断成:“我”“想起”“来了”,也可以断成:“我想”“起来了”,这就是完全不同的两种意思。另外,在现代社会,自然语言的发展是迅速的,天天都有不同的新词汇出现,那么资料库的更新也必须及时。当然,由于电子病历应用的特定场合,使得在这个几方面的难度没有普通自然语言转化和维护那么大。首先,电子病历应用中的语言录入,较多的运用到了医学术语,而对于医学术语,我们应该是要建立一个健全的医学术语资料库,并对其进行定期维护更新的,所以对于这方面的顾虑就可以减少很多。再次,病历的语言结构是比较固定的,其语义环境不像平常交谈中的那么多变,所以,我们的语义规则库的建立会缩减很多。当然,对于电子病历的语义转化技术,还是需要有数学模型,算法,规则等来组成的,其复杂程度是一点都没有减少的。(三)语言分析电子病历语义化技术,就是将以自然语言为载体的临床记录,加工成计算机可以直接处理和计算的语义数据,也就是我们进行语言分析的目标,它包括语义标注技术和术语加工平台。假定我们已经建立了表述模型,术语体系和标注规则,那么,实际的语义标注过程可以理解为:1.通过语义识别技术,将自然语言录入的临床表述识别为语义化的临床表述。2.通过术语标注技术,用标准临床术语体系中的概念和关系表示临床表述中的词汇,而此处需要通过定位连接,建立好语义化数据与自然语言临床表述的联系。而术语加工平台的存在,就是为了对医学术语资料库进行维护管理的,它利用一系列工具对此加以维护,使之不断扩充更新,为临床术语标注技术提供数据基础,同时根据不同的术语体系,建立相应的标注规则。通常,一段临床表述中,会有一个核心概念,并且由一些修饰关系来修饰那个核心概念。例如,阵发性前额隐痛。这个自然语言表述,可以分析为:核心概念是隐痛,修饰关系有两个:阵发性,前额。阵发性修饰其发作情况,前额修饰其病症位置,转述为临床术语体系就是:图2、关系图由计算机通过模型分析,转化成一个可以存储的数据格式。(四)存储格式自然语言经过分析后,本文选用xml格式进行组织,这有利于在数据库中的存储,对于数据分析,也可以形成较完整的结构形式。我们可以想象,一个人一生的病历记录该是多么庞大的数据,如果采用一般的表结构,那么可能形成近千张表,这么多表的管理查询是非常耗时耗力的。而xml格式的存储,可以理解是数据元的存储,它用一组属性描述其定义、标识、表示和允许值的数据单元。在特定的语义环境中,它被认为是不可再分的最小数据单元。数据元每一个取值在全局上都是唯一的,完成的数据元标准将有利于表述术语的标准化。xml格式片段如下:o_recordsnamezhangsannamediagnosisnameh1n1diagnosisnameBRprecord…...recordo_records四、数据库分析电子病历因其数据复杂,所以,本文所用purexml存储。它设计简单,使得表数量大大减少;易于理解,医生可直接理解数据;查询方便,可以进行语义化复杂查询条件设置,提高查询的精确性;并且它的配置灵活,可以由医生自定义模板;数据标准化程度高,便于知识库管理和方便的输入。(一)db2和xml数据db2通用数据库是ibm的关系型数据库管理系统,它可以在一个数据库系统中同时处理关系数据和xml数据。xml数据有其内在分层机构,可以用节点以树的形式表现,db29为管理、存储、查询和索引它提供了一些新的机制。db29引入了一种xml数据类型,允许db2以一种经过解析的、分层的格式存储xml文档。而且数据库已经不再需要启用xmlextender功能,因为xml已经支持现在的db2引擎的固有部分。在数据库中,xml文档存储在定义为xml数据类型的列中,一个xml列中的每一行都存储单个格式良好的xml文档,这些文档分层存储,并且保留了xml数据模型,甚至可以存储xml文档的片段,文档不是以文本形式存储,也不映射至另一数据模型。如图,是db29的内部数据示意。图3、db29数据库的内部示意(二)xml数据存储下面创建一个表,用于存储含有xml数据的病历记录。createtableo_records(idintprimarykeynotnull,statusbarchar(10),recordxml);id对应于每个人在电子病历数据库中唯一的标示符,status标示该病历记录的类型,是门诊病历还是手术记录等类型,record是xml格式的,用于存储由自然语言转化而来的xml结构数据。当然,在这个数据库中还应该包括其他的关系型数据表,account——用户表,status——状态表,diagram——图形记录表,等等。我们已知xml数据在db2中存储时,是存储在定义为xml数据类型的列中,如图4,就是关系表中一个xml类型的列。任何结构良好的xml病历文档都可以插入这个列。在物理存储层,主存储单元是一个节点。BRp对于同时包含关系列和xml列的表,关系列存储为关系格式,xml列存储为经过解析的树。tableidstatusrecord(xml列)数据1数据2数据3图4.xml数据存储(三)数据查询db29为xml数据提供的新机制中,还有一项是基于业界标准的查询语言支持,包括sql的新的xml扩展(通常被称作sql/xml)和xquery,他们可以同时处理表格数据结构和xml数据结构,并且,在查询时,可以使用两者的任意一种语言,也可以同时使用两种语言进行查询。图5、db29数据库查询流程示意用sql查询xml数据时,可以使用sql全查询或xmlquery和xmltable的sql/xml查询函数来查询,还可以在针对xml数据的sql查询中使用xmlexists谓词。当仅使用sql查询时,只能通过全查询在列级别进行查询,不能返回xml片段。用xquery函数检索db2数据,可以调用下列函数之一来获取db2数据库中的xml数据:sqlquery和xmlcolumn。下面我们查询,门诊病历中包含“流感”的用户。selectid,xmlquery(’$r/o_records/name’passingo_records.recordasr)fromo_recordswherestatus=1andxmlexists(’$r/o_records/diagnosisname[text()=流感]’passingo_records.recordasr);(四)xml索引xml数据索引可用于提高查询存储在xml