本发明涉及医疗信息化模型生成
技术领域:
,具体涉及基于思维导图的openehr原型与模板自动生成方法。
背景技术:
:医疗信息模型是对医疗信息进行有效组织、表达的一种形式,是实现医疗信息互操作的重要基础,目前主流的医疗信息模型规范主要包括hl7v3、fhir、iso13606、openehr信息模型、clinicalelementmodel等。openehr因其稳定、开放、共享、完备等特点,越来越受到全世界相关领域使用人员的认可和关注。它由openehr组织制定的开放式电子健康档案规范,其核心在于将医疗领域知识从具体的临床信息中分离出来,并建立了两层模型,即参考模型和原型模型。参考模型是对信息系统中稳定的概念进行建模,定义了信息表达所需的基础数据类型和数据结构。原型模型包括原型和模板,原型通过对参考模型添加约束的方式来定义临床内容,表达领域知识;模板通过对原型的约束和定制,满足实际应用需求。一般来讲,基于openehr规范的原型构建过程至少需要两类人员参与,包括拥有领域知识的领域专家和掌握openehr知识的建模人员,需要两类人员的深度协作。领域知识是原型定义的来源和依据,openehr知识是原型定义、评估和使用的指导和规范。常见的原型构建在流程上包含需求收集、概念表达、原型映射、原定定义等四个步骤。领域专家通常利用思维导图作为需求收集、概念逻辑表达的媒介进行逻辑模型梳理,熟悉openehr知识的建模人员则通过检索openehr原型将逻辑模型组合映射为openehr原型,并根据映射情况对业务人员构建的思维导图进行逻辑模型微调,在双方对微调后的逻辑模型进行反复讨论、迭代修改并最终确认后,形成既满足业务逻辑需求又符合openehr建模逻辑的基于思维导图的逻辑模型表达。在逻辑模型确定后,由建模人员根据逻辑模型利用原型、模板构建工具进行原型重用、修改、新建以及模板创建,完成特定医疗信息模型的原型构建工作。但是,一方面,建模人员通常会在业务人员基于思维导图构建的逻辑模型基础上新建一个带openehr规范标记的模型表示思维导图,并以此为后续原型创建的依据,因此在整个原型构建过程中,通常存在两套不同的模型表示逻辑。当业务需求需要迭代变更时,需要确保业务人员和建模人员对这两套标注逻辑进行同步微调,操作比较繁琐,容易引入模型版本一致性问题。另一方面,在建模人员和业务人员协作完成逻辑模型并由建模人员根据openehr规范建立含原型标注的思维导图后,建模人员仍需要花大量时间进行原型和模版的创建工作(根据实际操作评估,该过程大约占总时间的30%以上)。因此,传统的基于openehr规范的模型构建方法存在缺乏统一标记方法、模型构建时间长等问题。技术实现要素:针对传统原型、模板构建方法存在的不足,本发明提出基于思维导图的openehr原型与模板自动生成方法和系统。本发明第一方面提供基于思维导图的openehr原型与模板自动生成方法,包括以下步骤:根据业务需求构建业务逻辑模型和思维导图标注规范;从业务全局角度,按照“业务模型”、“共用模型”分类对业务逻辑模型进行拆分;依据所述思维导图标注规范,对所述业务逻辑模型拆分得到的“业务模型”、“共用模型”进行节点标注,形成含标记的模型思维导图;思维导图解析,用于解析用户标记后的思维导图数据集模型,得到所述思维导图数据集模型的节点详细信息;原型和模板生成,输出openehr原型和模板文件。进一步的,所述思维导图标注规范包括sheet标题和思维导图节点规范,所述sheet标题包括业务名称和模板名称,所述思维导图节点规范包括标题、标签和链接。进一步的,所述标题包括概念名和变量名,概念名必须有中文概念名和英文概念名,并且中文概念名和英文概念名之间用/间隔;所述标签记录类型信息,包括概念id/类型名称或repeat,所述概念id/类型名称包含openehr的基础rm类型名称。进一步的,对所述业务逻辑模型进行节点标注后,数据集模型的节点详细信息包括中文概念名、英文概念名、节点别名,节点类型或原型id,节点是否重复标识,节点引用链接信息,节点树状关系。进一步的,所述原型和模板生成步骤包括原型依赖解析与新原型生成步骤,根据解析所得的标记信息,对模型树按照openehr原型单元进行划分,形成原型子树结构。进一步的,对每个所述原型子树根据原型id,自动地从ckm库列表中查询该原型是否已经存在;若已存在,则将该原型归入依赖原型列表中;若原型不存在,则将该原型子树归入待新建原型列表中;再根据依赖原型列表从ckm库中自动下载原型adl文件;对于待新建的原型,根据原型子树的结构信息以及用户对子树中每个节点的标注信息,新创建相应的openehr原型,并生成相应的原型adl文件。进一步的,获得依赖原型和新建原型后,根据模型树,对这些原型进行组装,合成从原型出发可以得到的原型树。进一步的,所述原型和模板生成步骤还包括思维导图与原型树比对步骤,对从思维导图得到原型树和从openehr原型组合得到的原型树进行对比,从所述组合得到的原型树中找出在思维导图中不存在的节点,加入待删除节点列表。进一步的,所述原型和模板生成步骤还包括模板文件生成步骤,根据openehr模板文件描述语法,通过对依赖的adl文件和新建的adl文件进行组装,并根据所述待删除节点列表,对模型中不存在的节点进行删除约束,以得到最终和思维导图描述的数据模型一致的模板oet文件内容;对依赖的openehr原型、新建的openehr原型和openehr模板以对应文件的形式进行保存打包。本发明第二方面提供基于思维导图的openehr原型与模板自动生成系统,包括以下模块:模型构建模块,用于根据业务需求构建业务逻辑模型和思维导图标注规范;标注模块,用于依据所述思维导图标注规范,对所述业务逻辑模型进行节点标注,形成含标记的模型思维导图;思维导图解析模块,用于解析用户标记后的思维导图数据集模型,得到所述思维导图数据集模型的节点详细信息;原型和模板生成模块,用于输出openehr原型和模板文件。依据本发明提出的思维导标记规范创建数据模型的思维导图后,通过本发明提出的openehr原型与模板自动生成方法,可快速获得符合openehr规范、满足业务需求的所有依赖以及新创建的openehr原型和模板文件,大大节省了建模人员创建原型和模板的时间。附图说明在不一定按比例绘制的附图中,相同的附图标记可以在不同的视图中描述相似的部件。附图大体上通过举例而不是限制的方式示出各种实施例,并且与说明书以及权利要求书一起用于对所公开的实施例进行说明。在适当的时候,在所有附图中使用相同的附图标记指代同一或相似的部分。这样的实施例是例证性的,而并非旨在作为本系统或方法的穷尽或排他实施例。图1为基于思维导图的openehr原型与模板自动生成方法总体流程图;图2为本发明提出的基于思维导图的模型标注规范;图3为最终原型、模板导出流程图;图4为未标注版本的“b18.门急诊摘要信息”业务逻辑模型;图5为“b18.门急诊摘要信息”拆分后未标注版本的共用模型:“档案业务表头”;图6为“b18.门急诊摘要信息”拆分后未标注版本的业务信息模型;图7为标注完成的共用模板“t1.档案业务表头”;图8为标注完成的“b18.门急诊摘要信息”业务信息模型。具体实施方式为使本发明的目的、技术方案、优点更加清晰,下面通过具体实施方式以及附图,对本发明做进一步详细阐述,但不以任何方式对本发明加以限制,基于本发明教导所作的任何变换或替换,均属于本发明的保护范围。如图1所示,本发明提出面向openehr原型构建的模型标注方法和一种基于思维导图的openehr原型与模板自动生成方法,包含以下步骤:s10:根据业务需求构建业务逻辑模型和思维导图标注规范;如图2所示,本发明提出的思维导图标注规范包括sheet标题和思维导图节点规范。sheet标题包括业务名称和模板名称及其他。业务名称代表一个业务模型,如数据集,也可以当成一种模板。模板名称代表一个共用模板,即同一个原型可以创建多个模板。其他部分在无前缀的情况下,表示一个原型定义。思维导图节点规范包括标题、标签和链接。标题主要用于记录概念名及模板中的对应字段的别名,标题包括概念名和变量名,概念名必须有中文概念名和英文概念名,并且中文概念名和英文概念名之间用/间隔。变量名为可选,在概念名和变量名之间用:间隔开。当未设置变量名varname时,应去除:间隔,默认情况下,varname为英文概念名的驼峰命名。标题的格式为:中文概念名/conceptname:varname或中文概念名/conceptname。标签主要记录类型信息,目前节点中最多仅允许出现两种信息:概念id/类型名称或repeat。概念id/类型名称包含openehr的基础rm类型名称(如codedtext/terminology/date等)或者conceptid(如openehr-ehr-observation.blood_pressure.v2等)用于说明节点的类型或概念名称。叶子节点标签类型与原型数据类型对应关系:"duration":"dv_duration","quantity":"dv_quantity","test":"dv_text","codedtext":"dv_coded_text","date":"dv_date","datetime":"dv_date_time","boolean":"dv_boolean","multimedia":"dv_multimedia","terminology":"dv_coded_text"repeat:当节点可以出现多次时,标签里应包含repeat。标签里最多仅能出现2个标签,且当出现两个时,其中一个必为repeat。无label时,若该节点为叶子节点,则代表为text类型;若该节点为非叶子节点,则该节点为内部cluster。链接:有链接且label中有archetypeid,则说明是一次外部引用。如果该节点有子节点,则子节点中的内容表示是基于对外部引用约束后的结果;如果该节点没有子节点,则表示会将外部引用中的所有内容都包含进来。若链接指向txxx.模板名称,说明是一次模板引用。通过思维导图节点规范,可以规范化每种标记的用处和含义,通过默认值,减少用户标记的工作量。s20:依据思维导图标注规范,对业务逻辑模型进行节点标注,形成含标记的模型思维导图;业务人员在根据业务需求构建业务逻辑模型后,首先从业务全局角度,按照“业务模型”、“共用模型”分类对业务逻辑模型进行拆分,然后依据本s10步骤中规定的思维导图标注规范,进行节点标注。标注内容主要包括中文概念名、英文概念名、节点别名,节点类型或原型id,节点是否重复标识,节点引用链接等信息。优选的,思维导图标注规范可利用思维导图中的页面标题作为模型树类型(业务模型、共用模板、原型定义等)的标记;思维导图标注规范利用节点标题记录中文概念名、英文概念名及模板中的对应字段的节点别名;思维导图标注规范利用标签记录节点类型信息,包括原型id(类型名称)、数组标记;思维导图标注规范利用节点链接记录原型引用关系。通过该标注方法,用户可将业务逻辑模型转换为含标记的模型思维导图。本发明的思维导图标注规范不限定标记的位置,可以使用节点题目作为概念名、变量名使用;也可以将概念名、变量名信息在标签中体现,并将节点题目作为他用。因此本发明不限于上述标记方法,其他利用思维导图进行模型标记的方法也在本发明的涵盖范围之内。s30:解析用户标记后的思维导图数据集模型,得到所述思维导图数据集模型的节点详细信息思维导图解析步骤解析用户标记后的思维导图数据集模型,以得到数据集模型的节点详细信息。信息主要包括用户标记的中文概念名、英文概念名、节点别名,节点类型或原型id,节点是否重复标识,节点引用链接,节点树状关系等模型标注方法涉及的所有信息内容。解析后,若思维导图中存在不符合标注规范的情况,系统则根据情况给标注人员准确的标注错误提示;对于无错误标记的思维导图,解析后的信息以数据对象的方式存在于内存中。s40:原型和模板生成,输出openehr原型和模板文件,包括以下步骤:s401:原型依赖解析与新原型生成步骤,解析所得的标记信息,对模型树按照openehr原型单元进行划分,形成一系列原型子树结构。其中每个子树结构对应一个独立的openehr原型结构,每个子树的根部节点都有原型id以及对应的中文概念名、英文概念名。该步骤再对每个原型子树根据原型id,自动地从官方公开的ckm库[https://www.openehr.org/ckm/retrieveresources?list=true]列表中查询该原型是否已经存在;若已存在,则将该原型归入依赖原型列表中;若原型不存在,则将该原型子树归入待新建原型列表中。随后,根据依赖原型列表从ckm库中自动下载原型adl文件;对于待新建的原型,则根据原型子树的结构信息以及用户对子树中每个节点的标注信息,新创建相应的openehr原型,并生成相应的原型adl文件。s402:思维导图与原型树比对步骤,在s401步骤中,新生成的openehr原型结构节点是根据模型子树节点严格一一对应创建的,因此生成的原型和思维导图能够完全对应;而对于依赖的原型,由于思维导图标注方法允许不在思维导图中创建那些在原型定义中存在但在业务中不需要的节点,因此系统根据原型的id进行依赖原型下载得到的原型中可能存在原型中有定义但原型树中不需要的节点。为此,在获得依赖原型和新建原型后,系统根据模型树,对这些原型进行组装,合成从原型出发可以得到的原型树。一般情况下,从依赖原型和新建原型出发得到的原型树要比从思维导图直接推导创建的原型树具有更多的节点。为此,本发明会对从思维导图得到原型树和从openehr原型组合得到的原型树进行对比,从组合得到的原型树中找出在思维导图中不存在的节点,放入待删除节点列表,以在模板文件生成阶段标记删除这些节点。s403:模板文件生成步骤。首先根据openehr模板文件描述语法,通过对依赖的adl文件和新建的adl文件进行组装,并根据s402步骤中得到的待删除节点列表,对模型中不存在的节点进行删除约束,以得到最终和思维导图描述的数据模型一致的模板oet文件内容。同时,在此过程中,依赖的openehr原型、新建的openehr原型、openehr模板都会以对应文件的形式进行保存打包。下面以图3为例,说明本发明从业务逻辑模型到最终原型、模板导出的流程。首先通过思维导图标注规范对模型进行标注,结合系统输入,将模型拆分为原型树状结构,对于依赖下载的原型,自动下载依赖的adl文件,对于需要生成的原型,产生新建的adl文件,将下载的依赖的adl文件和新建的adl文件输入参考模型,将待删除节点标记处理,通过模型约束,去除待删除节点,再输入目标模型中,通过模板生成,得到oet文件,系统最终输出oet文件、依赖的adl文件和新建的adl文件。依据本发明提出的思维导标记规范创建数据模型的思维导图后,再通过本发明提出的openehr原型与模板自动生成方法,便可快速获得符合openehr规范、满足业务需求的所有依赖以及新创建的openehr原型和模板文件。本发明的有益效果是建立了统一标记方法,解决了模型构建时间长的问题,大大节省了建模人员创建原型和模板的时间。实施例本实施例用于说明利用本发明构建电子健康档案系统原型与模板。电子健康档案系统旨在构建能够涵盖个人全维度健康相关数据的业务管理系统。其不仅包含门诊、住院、体检等医疗业务数据,还包括行为生活习惯、职业与环境等与健康密切相关的调查性业务数据,涉及的业务多样、模型复杂。1)使用本发明的技术方案,业务人员首先根据电子健康档案系统业务需求构建业务逻辑模型,并从业务全局角度,按照“业务模型”、“共用模型”分类对业务逻辑模型进行拆分,然后按照图2所示的模型标注规范对节点进行标注,形成含标注的模型思维导图。以电子健康档案系统的门急诊摘要信息为例。具体地,门急诊摘要信息是电子健康档案系统的核心业务之一,其业务逻辑模型如图4所示。而后从业务全局角度,将其拆分为“业务模型”——“门急诊摘要信息”(如图5所示)和“共用模型”——“档案业务表头”(如图6所示)。然后按照图2所示的模型标注规范对图5和图6中的模型进行标注,形成含标记的模型思维导图,分别如图7和图8所示。具体地,门急诊摘要信息为电子健康档案系统的第18个业务模型,占据整个业务逻辑模型思维导图的一个独立页面(sheet)。按照图2所示的模型标注规范,页面标题命名为【b18.门急诊摘要信息】。标题开头的字母b代表门急诊摘要信息的模型树类型(业务模型、共用模板、原型定义等)为业务模型。具体地,继续按照图2所示的模型标注规范对页面中所有节点的标题进行标注。思维导图表达的业务逻辑模型中,节点名称即可作为中文概念名,在此基础上,按照节点标题标注规范,添加节点的英文概念名,并按照需要添加节点别名。例如,根节点标题标注为【门急诊摘要信息/outpatient】,代表其两个子业务的两个子节点的标题标注分别为:【表头/header】和【业务信息/content】,【业务信息/content】的第一个子节点标题标注为【门诊概要/outpatientsummary:summary】,其中包含了中文概念名、英文概念名和变量名,以此类推,递归地完成门急诊摘要信息业务模型树所有节点的标题标注。具体地,继续按照图2所示的模型标注规范对本页面中所有节点的标签和链接信息进行标注。例如,根节点是业务模型,对应openehr已有的composition类原型encounter,使用encounter原型的conceptid进行标注,具体标注为【openehr-ehr-composition.encounter.v1】,且此节点不会重复,不适用repeat标注。【表头/header】子节点,是健康档案系统领域特定模型,存在于所有业务模型中,所以其单独定义在另一个思维导图页面(sheet)中,被所有的业务模型以外部引用的方式使用,适用模型标注规范中的链接规则进行标注。具体地,本例中,使用其conceptid标注为【openehr-ehr-admin_entry.business_form_header.v0】(其中,openehr-ehr-admin_entry表示openehr模型体系中的原型类型,bussiness_form_header表示模型名称),并使用标注为一次外部引用,且此节点不重复,不适用repeat标注。【业务信息】子节点,适用openehr已有的section类原型adhoc,使用其conceptid标注为【openehr-ehr-section.adhoc.v1】,此节点不会重复,不适用repeat标注。以此类推,从【业务信息】节点出发直至所有叶子节点,递归地使用图2所示的模型标注规范,完成节点标签和链接信息的标注。具体地,继续对上一步骤中需要单独定义在另一个思维导图页面中的【表头/header】实施标注。按照图2所示的模型标注规范,页面(sheet)标题命名为【t1.档案业务表头】。标题开头的字母t代表档案业务表头的模型树类型(业务模型、共用模板、原型定义等)为共用模板。具体地,继续依据图2所示的模型标注规范对【t1.档案业务表头】所有节点的标题进行标注。如图5所示,首先将根节点标注为【档案业务表头/businessformheader】,以此类推,递归地完成【t1.档案业务表头】模型树所有节点的标题标注。具体地,继续按照图2所示的模型标注规范对【t1.档案业务表头】页面中所有节点的标签和链接信息进行标注。其中,根节点【档案业务表头/businessformheader】,使用conceptid进行标注,具体地标注为【openehr-ehr-admin_entry.business_form_header.v0】,且此节点不会重复,不适用repeat标注。以此类推,从【档案业务表头/businessformheader】节点出发直至所有叶子节点,递归地使用图2所示的模型标注规范,完成节点标签和链接信息的标注。标注完成的【t1.档案业务表头】如图7所示,标注完成的门急诊摘要【业务信息】如图8所示。2)使用本发明的思维导图解析模块,解析用户标注后的门急诊摘要信息思维导图数据集模型,可以得到门急诊摘要信息数据集模型的节点详细信息,以数据对象的形式存在于内存之中。3)使用本发明的原型依赖解析与新原型生成模块,对上一步解析得到的门急诊摘要信息数据集模型标记信息,按照openehr原型单元进行划分,形成一系列原型子树结构。具体地,包括:门急诊摘要信息:openehr-ehr-composition.encounter.v1表头:cn.ac.bmi::openehr-ehr-admin_entry.business_form_header.v0业务信息:openehr-ehr-section.adhoc.v1人口统计学详细信息:cn.ac.bmi::openehr-ehr-cluster.demographic_details.v0地址:cn.ac.bmi::openehr-ehr-cluster.address.v0血型:cn.ac.bmi::openehr-ehr-cluster.blood_type.v0个人当前信息:cn.ac.bmi::openehr-ehr-cluster.present_personal_information.v0门诊概要:cn.ac.bmi::openehr-ehr-admin_entry.outpatient_summary.v0就诊原因:openehr-ehr-evaluation.reason_for_encounter.v1诊断信息:cn.ac.bmi::openehr-ehr-evaluation.problem_diagnosis-mehr.v1手术:cn.ac.bmi::openehr-ehr-action.procedure-mehr.v1用药管理:openehr-ehr-action.medication.v1药物结构化细节;openehr-ehr-cluster.medication.v1使用量:cn.ac.bmi::openehr-ehr-cluster.dosage-mehr.v1单日时间模式:openehr-ehr-cluster.timing_daily.v1检验结果:openehr-ehr-observation.laboratory_test_result.v1检验结果细节:cn.ac.bmi::openehr-ehr-cluster.laboratory_test_analyte-mehr.v1影像检查结果:cn.ac.bmi::openehr-ehr-observation.imaging_exam_result-mehr.v0心电图检查结果:cn.ac.bmi::openehr-ehr-observation.ecg_result-mehr.v1以上每个子树结构对应一个独立的openehr原型结构,每个子树的根节点都有原型id以及对应的中文概念名、英文概念名。该模块逐个取得每个原型子树的原型id,以此原型id为查询参数,自动地从官方公开的ckm库[https://www.openehr.org/ckm/retrieveresources?list=true]列表中查询该原型是否已经存在;若已存在,则将该原型归入依赖原型列表中;若原型不存在,则将该原型子树归入待新建原型列表中。具体地,依赖原型列表如下:门急诊摘要信息openehr-ehr-composition.encounter.v1业务信息openehr-ehr-section.adhoc.v1就诊原因openehr-ehr-evaluation.reason_for_encounter.v1用药管理openehr-ehr-action.medication.v1药物结构化细节openehr-ehr-cluster.medication.v1单日时间模式openehr-ehr-cluster.timing_daily.v1检验结果openehr-ehr-observation.laboratory_test_result.v1本发明的原型依赖解析模块会根据上述列表从ckm库中自动下载原型adl文件。待新建原型列表如下:本发明的新原型生成模块会根据上述列表中原型子树的结构信息以及用户对子树中每个节点的标注信息,新创建相应的openehr原型,并生成相应的原型adl文件。4)使用本发明的思维导图与原型树比对模块,基于步骤3中下载的依赖原型和新创建原型,严格比对原型树。具体地,从原型树中找出在思维导图中不存在的节点,在生成模板阶段标记删除这些节点,最终合成生成模板数据集的原型树。具体地,以上新建openehr原型结构节点是根据模型子树节点严格一一对应创建的,因此生成的原型和思维导图能够完全对应;而下载的依赖原型中,可能存在原型中有定义但原型树中不需要的节点,比对的过程就是找出这些节点,将其标记为删除。5)使用本发明的【模板生成模块】组装、约束得到与逻辑模型树相一致的模板oet文件,并保存打包所有的原型adl文件和模板oet文件。具体地,根据openehr模板文件描述语法,对依赖原型的adl文件和新建原型的adl文件进行组装,结合上一模块得到的待删除节点列表,将模型树中不存在的节点进行删除约束,得到最终和思维导图描述数据模型一致的模板oet文件。然后,将依赖的openehr原型、新建的openehr原型、openehr模板以对应文件的形式进行保存打包。上述实施例为本发明方法用于一种基于思维导图的openehr原型与模板自动生成的一种实施方式,但本发明的实施方式并不受所述实施例的限制,其他的任何背离本发明的精神实质与原理下所做的改变、修饰、代替、组合、简化,均应为等效的置换方式,都包含在本发明的保护范围之内。当前第1页12