一种医疗业务数据处理方法及装置与流程

文档序号:12122089阅读:192来源:国知局
一种医疗业务数据处理方法及装置与流程
本发明涉及数据处理,尤其涉及应用于医疗业务中的数据处理。
背景技术
:医院的CIS、LIS、HIS等各个系统中来自不同的厂商,随着系统数据增多以及业务项目复杂性的增加,各子系统之间共享数据和交互数据的需求也越来越强烈,但由于各子系统中定义的业务属性千差万别,因此造成了存储业务属性值的二维表结构之间存在着很多的差异。在医院现有的子系统之间,如果想要实现在各个子系统之间获得双方数据信息的共享,一般采用以下三种方式:1、针对不同结构的数据表信息查询,一般厂商提供完成了相应功能的WebService接口,并将接口开放给第三用户,用户通过调用接口,获取相应的HL7V3信息格式的数据样例,实现医院子系统的信息交互功能,这种功能的实现方式主要基于推送数据的模式。2、如果医院各个子系统没有提供WebService接口,可以使用一定权限的动态库访问方式,定位需要提供访问数据的二维表,通过视图或中间库将信息数据查询出来,同时加载现有的HL7V3模板,将两者功能结合,封装生成的HL7V3信息格式的样例。3、如果医院各子系统通过信息集成平台进行关联,则可以利用平台上的消息中间件提供的消息队列MQ的方式,生成所需要的HL7V3信息格式的数据样例,并将其发送到平台上,其他需要消费数据样例的子系统,可以对平台队列中的封装消息进行订阅,实现一个数据样例可供多个系统使用的功能,这种功能的实现方式主要基于拉送数据的模式。上述三种HL7V3信息格式样例的生成模式,虽然在很大程度上,能够实现将子系统的二维表中的消息数据封装成HL7V3信息格式样例的功能,但是存在以下缺点:首先,WebService接口推送数据的方式,虽然能够保证系统提供实时数据,但是当推送的数据量过大或者数据更新过于频繁的情况下,就会影响系统性能的发挥;同时,WebService接口的发布严重依赖于子系统的厂商,尤其是当原来二维表数据结构发生变化时,需要同步更新接口的设计以及重新发布接口。其次,对于使用动态库(DLL)实现获得数据信息的功能,则存在较大的安全风险,尤其针对医院中的患者保密信息,大量动态库的使用会暴露子系统数据库设计的细节,在一定程度上这种方式会加重后台数据格式转化、封装信息数据样例的负担。最后,针对关联了信息集成平台的子系统而言,MQ操作方式,虽方便了数据的发送和拉送功能,但发送前,后台仍然需要进行大量数据查询,并利用模板进行数据样例封装的操作,对于实时性要求较高的系统而言,这种方式造成的系统访问延迟在很大程度上是无法接受的。技术实现要素:为了克服现有技术的不足,本发明的目的在于提供了一种医疗业务数据处理方法及装置,其能够解决现有技术中医疗业务数据不同,导致查询数据效率不高的问题。本发明的目的采用以下技术方案实现:本发明提供了一种医疗业务数据处理方法,应用于医疗业务数据处理系统中,该系统包括多个子系统和信息平台;子系统用于提供医疗消息数据,每个子系统都有对应的数据库;所述信息平台用于获取所述数据库中的消息数据,并将其转换为消息数据样例;该处理方法包括以下步骤:S1:获取子系统数据访问请求,并获取对应的子系统的SQL语句;S2:通过调用所述SQL语句对所述子系统的数据库进行操作并得到结果表;所述结果表包括表属性别名和表属性值;S3:根据表属性别名与预设消息模板中对应的节点属性之间的映射关系得到预设消息模板中对应的节点属性;S4:根据节点属性从结果表中获取到对应的表属性值并将其封装于预设消息模板中,从而生成消息数据样例并存储。优选地,所述SQL语句是针对一子系统,用户按照需求组织成对应的SQL语句并预先存储于该子系统中。优选地,所述预设消息模板为HL7V3消息模板。为了克服现有技术的不足,本发明的目的之二在于提供了一种医疗业务数据处理装置,其能够解决现有技术中医疗业务数据不同,导致查询数据效率不高的问题。本发明的目的之二采用以下技术方案实现:本发明还提供了一种医疗业务数据处理装置,包括:获取模块,用于获取子系统数据访问请求,并获取对应的子系统的SQL语句;处理模块,用于通过调用该SQL语句对所述子系统的数据库进行操作并得到结果表;所述结果表包括表属性别名和表属性值;转换模块,用于根据表属性别名与预设消息模板中对应的节点属性之间的映射关系得到预设消息模板中对应的节点属性;封装模块,用于根据节点属性从结果表中获取到对应的表属性值并将其封装于预设消息模板中,从而生成消息数据样例并存储。优选地,所述SQL语句是针对一子系统,用户按照需求组织成对应的SQL语句并预先存储于该子系统中。优选地,所述预设消息模板为HL7V3消息模板。相比现有技术,本发明的有益效果在于:本发明将来自于不同医疗子系统中的医疗数据转换为统一格式的消息数据样例,从而大大提高了各个医疗子系统之间消息数据传输的效率。附图说明图1为本发明提供的一实施例的方法流程图;图2为本发明提供的一实施例的装置模块图。具体实施方式下面,结合附图以及具体实施方式,对本发明做进一步描述:如图1所示,本发明提供了一种医疗业务数据处理方法,由于各个医疗子系统,比如LIS、CIS、HIS等,每个子系统所定义的业务属性千差万别。因此在存储业务属性数据值时,一般都存储于数据库中,其存储的二维表的结构也存在很多差异。这样在访问各个医疗子系统的数据库时,查询到的结果也不同,不能够对查询结果进行统一处理。比如,查询病人的就诊记录,由于系统A和系统B定义不同,则通过子系统A和子系统B查询得到的病人的就诊记录数据不能够共享或整合等。因此,为了解决上述技术问题,提出该方法,其应用于医疗业务数据处理系统中,该系统包括多个医疗子系统和信息平台,医疗子系统是用于提供医疗消息数据的,而信息平台用于将通过每个医疗子系统获取到的医疗数据转换为统一格式的信息数据样例,从而方便用户的访问。该系统包括四个功能模块,分别为HL7V3消息模板入库、组织SQL语句、数据格式转化和数据样例封装。在医疗信息平台中,医疗消息数据的封装格式一般包括HL7V2消息格式与HL7V3消息格式,当然还有由软件开发商自身定义的格式,但是通常情况下,使用的较多的是Hl7V2和HL7V3这两种消息格式。对于Hl7V2消息格式属于混杂的固定格式,其一般来说以<SB>开始,以<EB结尾>,该公式在左右方向延伸,该消息的每段头部信息都用一个唯一的三字符代码所标识,这个代码作为段标识(ID),比如MSH、MSA、ERP、EVN、PID、ROL、OBS、QAK、ACK,提示该行数据代表的医疗信息定义,消息的内容部分则是通过数量不等的标记符合的组合,对所存储的消息内容进行分割,其中消息中的符号主要有<CR>、|、^、&、~、\等,解析这种消息时首先根据消息头部的英文字母定位到某行,然后在该行中,根据标记符号|的数量和HL7V2的属性解析,将患者信息逐一提取出来。由于HL7V2消息格式的混乱性,导致在解析HL7V2消息的数据时非常复杂、查找消息内容中各个属性的时间也较长,尤其是消息数据信息非常庞大的情况下,解析效率较低。HL7V2消息格式的具体实例如下:MSH|^~\&|NIS||HIS||20151214164326||RAS^017|NIS_978125592798|P|2.4PID||000157882601|0000377419^^^^PatientNO~^^^^IDCard~^^^^^IdentifyNO||李惠敏(婴1)||20151204102400|M……对于HL7V3消息格式,其与HL7V2消息格式不同,是属于上下分层的树状式,每个节点具有唯一的root(根)属性进行标记。这种类型的消息排布方式一目了然,上下层次清晰,属性节点的配置方向明确,节点路径唯一,尤其是解析时能够迅速定位到消息中的节点,解析方便、速度迅速,即使消息中节点数据庞大、复杂,也不会对消息的解析效率造成明显影响,非常适合用于作为消息制作的标准格式,在集成信息平台以及医院子系统之间传递信息。HL7V3消息格式的具体实例如下:因此,鉴于上述HL7V3消息格式的特点,本发明所采用的消息数据模板为HL7V3消息模板,也即是将通过各个子系统获取到的消息数据转换为HL7V3格式的消息数据样例。由HL7V3消息格式的模板中得知,HL7V3消息格式中存在有很多关键性节点、主节点以及子节点,比如在主节点patientRole中存在id、addr、patient以及providerOrganization四个子节点,其中id节点属性用于标识患者在就诊时会涉及的编号,会有多个不同值;对于每个子节点中可能还会包含多个属于实际自定义业务的节点,比如对于患者ID,子系统A定义为A_ID、而对于子系统B定义为B_ID。针对HL7V3消息格式的结构组成,每个节点都具有不同的节点定位路径(XPath)以及具有唯一根值root进行区分。在对HL7V3消息模板进行存储的时候,是按照HL7V3消息模板的节点组成以及节点的上下隶属关系,将节点属性、节点属性值以及节点的关系存储于数据库中,形成二维表结构。其中节点属性包括节点ID、节点根值、节点名称、节点类型、节点扩展、节点类编码、节点编码所述的系统、节点展示名和节点决定码;节点属性值包括节点值类型,一般为字符型、数值型和空值;节点的关系包括隶属关系、并列关系以及节点段的循环关系。将上述HL7V3消息模板中的节点属性、节点属性值以及节点之间的关系通过数据库表的形式存储于数据库中,每个节点也有自己的节点路径以及对应的唯一根植root进行区分。所述组织SQL语句是用于针对各个子系统在进行数据库查询时,所用到的SQL语句,由于各个系统中存储数据的数据库的表以及表中的定义属性不同,则在访问每个子系统的数据库中时,SQL语句也不同。本发明中的SQL语句均是每个子系统根据自身的特点组织对应的SQL语句。当信息平台访问一子系统的数据库时,调用对应的SQL语句即可实现对该子系统的数据库访问。为了将通过对子系统的数据库查询的结果与HL7V3消息模板中的节点之间进行一一对应,能够方便生成HL7V3格式的消息数据样例。则首先必要使得查询各个数据库所得到的结果是同步地,也即是查询同一类型,其每个数据库的结果都应该是相同的。本发明在组织SQL语句时,针对表达同一含义的数据表中的字段(也即是表属性名)统一定义一别名,这样不管是查询哪个子系统的数据库表,只要是表达同一含义的内容均定义为同一表属性别名,这样就可以将通过不同子系统查询得到的结果进行整合。该表属性别名是与HL7V3消息模板中的节点属性之间具有映射关系,比如该表属性别名与节点属性相同。其具体的实现如下:假如对于子系统A,其数据库表A为:SEQUENCEST_IDST_NAMEST_SEXST_PATIENT_IDST_DEPART11st_01黎明男wuzhong_pd001神经科22st_02张茂男wuzhong_pd002内科33st_03常磊男wuzhong_pd003外科对于子系统B,其数据库表B为:SEQUENCESF_IDSF_NAMESF_SEXSF_PATIENT_IDSF_DEPART11sf_01李显丽女wuzhong_pf001内分泌科22sf_02韦珍女wuzhong_pf002皮肤科33sf_03赵稷山男wuzhong_pf003骨科针对表A来说,其数据结果的查询语句为:selectSEQUENCE,ST_ID,T_NAME,T_SEX,T_PATIENT_ID,T_DEPARTfromAwhere1=1。针对表B来说,其数据结果的查询语句为:selectSEQUENCE,SF_ID,SF_NAME,SF_SEX,SF_PATIENT_ID,SF_DEPARTfromBwhere1=1。通过对上述两表查询结果来看,表中数据要表示的内容类型是相同的,即标记患者的编号、姓名、性别、就诊号以及就诊科室,但是其实际查询到的结果表,由于其定义的数据库表的字段(属性)不同,得到的结果表也是不一样的。因此,针对这种情况,将上述不同表中标记同一内容的不同属性定义为相同的表属性别名,从而完成对不同数据库不同表的同步查询。即表A中的数据结果的查询语句变为:selectSEQUENCE,ST_IDasID,ST_NAMEasNAME,ST_SEXasSEX,ST_PATIENT_IDasPATIENT_ID,ST_DEPARTasDEPARTfromAwhere1=1。表B中的数据结果的查询语句变为:selectSEQUENCE,SF_IDasID,SF_NAMEasNAME,SF_SEXasSEX,SF_PATIENT_IDasPATIENT_ID,SF_DEPARTasDEPARTfromBwhere1=1。上述的表A和表B通过上述查询语句再次查询对应的数据库,获得的数据结果分别如下所示:表A的查询结果:SEQUENCEIDNAMESEXPATIENT_IDDEPART11st_01黎明男wuzhong_pd001神经科22st_02张茂男wuzhong_pd002内科33st_03常磊男wuzhong_pd003外科表B的查询结果:SEQUENCEIDNAMESEXPATIENT_IDDEPART11sf_01李显丽女wuzhong_pf001内分泌科22sf_02韦珍女wuzhong_pf002皮肤科33sf_03赵稷山男wuzhong_pf003骨科通过上述SQL语句查询得到的结果表,可得知,查询结果数据同步,也即是通过访问不同的子系统得到的消息数据就可以进行整合,从而实现数据格式的统一。所述数据格式转化模块用于将SQL查询语句得到的结果表中的数据值转换为HL7V3消息模板中对应的节点属性的值。也即是首先根据预先定义的表属性别名与HL7V3消息模板中的节点属性之间的对应关系,将上述表中的数据值赋值给HL7V3消息模板中节点属性的值。比如别名ID所对应的是病人的编号,而在HL7V3中表示病人ID的节点属性值赋值为st_01;依次类似地将病人名称、病人性别、病人就诊编号、病人就诊科室均赋值给对应的节点,从而可得到该病人的一条就诊记录导入到HL7V3消息模板中。同样地,可将上述表A和表B的查询得到的结果表批量地导入到HL7V3消息模板中,从而可快速生成HL7V3消息格式的信息数据样例并存储,可供用户访问数据使用。由于本发明将来自于不同医疗子系统的数据转换为统一的消息格式,并存储在信息平台中。当用户需要查询数据时,比如查询病人的就诊记录,只需发送对应的获取指令,就可从该信息平台中获取到对应的医疗数据,其数据处理更快、效率更高。而不是像原有的设计一样,必须对每个子系统的数据库进行访问,而导致数据处理、数据传送的效率低下。则,该医疗业务数据处理方法,具体包括以下步骤:S1:获取子系统数据访问请求,并获取对应的子系统的SQL语句。本步骤中,当需要获取某一子系统的消息数据时,首先系统向子系统发送一子系统数据访问请求,这样子系统根据该子系统数据访问请求就可以得到该子系统所对应的数据库的SQL语句,并根据该SQL语句对该子系统的数据库进行SQL操作。优选地,该SQL语句均是通过各个子系统的商家针对自身的子系统的数据库预先组织生成。S2:通过调用所述SQL语句对该子系统的数据库进行操作得到结果表;所述结果表包括表属性别名以及表属性值。本步骤中,根据所述SQL语句来访问对应的子系统数据库从而得到结果表,该结果表中表属性别名以及表属性值。其中表属性别名是指通过预先定义的与预设数据模板中节点对应的节点属性之间具有一一映射的关系的字段。比如,通过对子系统A的数据库表A可通过以下SQL语句:selectSEQUENCE,ST_IDasID,ST_NAMEasNAME,ST_SEXasSEX,ST_PATIENT_IDasPATIENT_ID,ST_DEPARTasDEPARTfromAwhere1=1。其查询结果为:SEQUENCEIDNAMESEXPATIENT_IDDEPART11st_01黎明男wuzhong_pd001神经科22st_02张茂男wuzhong_pd002内科33st_03常磊男wuzhong_pd003外科其中,ST_ID、ST_NAME、ST_SEX是表属性,而ID、NAME、SEX等均为别名,st_01、黎明、男等是表属性值。S3:根据所述表属性别名与预设数据模板中对应的节点属性之间的映射关系得到预设消息模板中对应的节点属性。可通过查表的方式得到每一条数据记录,然后在通过表属性别名与节点属性之间的映射关系,从而可得到预设数据模板中对应的节点属性。比如,结果表中的表属性别名ID、NAME、SEX等是与预设消息模板中的节点之间具有一一对应的关系,由于该表为患者的信息表,比如ID对应于预设消息模板中表示患者的节点id,这样通过这种对应关系,根据表属性别名得到预设消息模板中对应的节点属性值。S4:根据节点属性从结果表中获取到对应的表属性值并将其封装于预设消息模板中,从而生成消息数据样例并存储。在将结果表中表属性别名所对应的表属性值,根据表属性别名与节点属性之间的映射关系,将表属性值赋值给节点属性,然后将表属性值对应地封装于预设消息模板中,从而生成消息数据样例并存储于信息平台上。由于预设消息模板中每个节点属性的值都已获取到,然后将其封装于预设消息模板中,从而得到信息数据样例。该信息数据样例也即是统一的格式,比如本文中采用的预设消息模板为HL7V3消息模板,这样就将来自于不同子系统的不同格式的消息数据进行整合成统一的HL7V3消息模板,从而使得用户在获取数据时,系统效率更高。本发明具有以下技术效果:1、各个医疗子系统中的医疗数据通过本发明转换为统一格式的消息数据样例,大大提高了子系统之间消息传递的效率。2、通过将HL7V3消息模板提前存储于系统中,并且组织SQL语句中采用与模板节点对应的别名,避免了在系统后台使用大量程序代码来解析以及拼接SQL所带来的弊端,大大降低了消息数据样例生成的复杂性。3、通过本发明可避免了现有技术中采用WebService接口调用和直接动态库方位所带来的系统资源的占用,同时,也避免了需要多次访问数据库的操作,节省了访问时间,提高了系统的运行效率。4、本发明对消息数据样例的封装仅仅涉及到子系统的数据库的一部分就可以完成对应的功能,保护了子系统数据库中二维表的设计细节,大大降低了患者信息泄露的危险性,保证了子系统的安全性。如图2所示,本发明还提供了一种医疗业务数据处理装置,其包括:获取模块,用于获取子系统数据访问请求,并获取对应的子系统的SQL语句;处理模块,用于通过调用该SQL语句对所述子系统的数据库进行操作并得到结果表;所述结果表包括表属性别名和表属性值;转换模块,用于根据表属性别名与预设消息模板中对应的节点属性之间的映射关系得到预设消息模板中对应的节点属性;封装模块,用于根据节点属性从结果表中获取到对应的表属性值并将其封装于预设消息模板中,从而生成消息数据样例并存储。优选地,所述SQL语句是针对一子系统,用户按照需求组织成对应的SQL语句并预先存储于该子系统中。优选地,所述预设消息模板为HL7V3消息模板。对本领域的技术人员来说,可根据以上描述的技术方案以及构思,做出其它各种相应的改变以及形变,而所有的这些改变以及形变都应该属于本发明权利要求的保护范围之内。当前第1页1 2 3 
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1