CN107590007A - 一种基于模板引擎的his接口配置方法 - Google Patents
一种基于模板引擎的his接口配置方法 Download PDFInfo
- Publication number
- CN107590007A CN107590007A CN201710865429.0A CN201710865429A CN107590007A CN 107590007 A CN107590007 A CN 107590007A CN 201710865429 A CN201710865429 A CN 201710865429A CN 107590007 A CN107590007 A CN 107590007A
- Authority
- CN
- China
- Prior art keywords
- template
- file
- caching
- dynamic link
- interface
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Landscapes
- Stored Programmes (AREA)
Abstract
本发明公开了一种基于模板引擎的HIS接口配置方法,包括以下步骤:步骤1、接口工具启动流程;步骤2、接口工具模板解析流程;步骤3、接口工具模板修改流程。本发明通过基于模板引擎的接口配置工具,通过直接在服务器上修改模板文件,就能实现通过身份证号取地址、性别、出生年月的规则。同时,通过多种渠道日志输出,方便调试、后期维护、接口变动时,快捷定位错误,调试排错。最后,集成大部分主流数据库驱动。有效解决了现有技术的不足。
Description
技术领域
本发明涉及计算机技术领域,尤其涉及一种基于模板引擎的HIS接口配置方法。
背景技术
现有的软件对接技术,通常只支持简单的 字段映射配置,一经编译成exe可执行程序布署后,可能会面临如下问题:
1、接口有调整时,不能做到即改即用,需开发人员在办公室修改接口程序后,再联系医院信息科将程序传到内网服务器布署,再调试,如调试出现问题,又需重复上述步骤,这样费时费力。
2、数据库驱动不兼容,这样导致接口程序在开发环境运行时正常,可布署到医院内网时,却因驱动问题导致不能正常读取接口数据。
3、接口字段类型不匹配,比如接口文档要求“现病史”字段是字符串类型,结果HIS工程师给出的是字节数组类型,这样导致读取接口报错,程序异常。或字符集不匹配,导致取出的数据是乱码。
4、接口字段名称不匹配,比如接口文档要求“患者姓名”字段名为“PatientName”,但HIS工程师给出的字段名为“pName”,这样导致接口程序读取不到字段而出错。
5、数据格式定义不一致,比如接口文档要求性别用:1、男,2、女表示,但HIS工程师给出的字义为:M、男,F、女,这样导致接口异常。
6、程序报错调试定位困难,现有的软件对接程序,都是编译好的exe程序文件,再布署到医院内网服务器,运行过程中任何问题都有可能导致程序无法捕获,异常退出,这样错误就很难重现,很难定位问题并修复。
在不修改源代码重新编译发布程序的情况下,只通过在接口服务器上修改模板文件,完成接口对接配置,模板文件支持C#语法(一种高级编程语言),通过模板文件能实现复杂的业务逻辑配置,例如需要通过接口调取HIS系统中患者的省市地址、性别、出生年月信息,而HIS接口现在只提供了患者身份证号字段,就只能通过身份证获取上述信息,这样现有的接口技术在不修改源代码的前提下就实现不了,现有接口映射技术只适用于处理简单的规则,例如性别(1男,2女)映射成(M男,F女)。因此,亟待开发一种新的软件对接方法。
发明内容
有鉴于现有技术的上述缺陷,本发明所要解决的技术问题是提供一种基于模板引擎的HIS接口配置方法,以解决现有技术的不足。
为实现上述目的,本发明提供了一种基于模板引擎的HIS接口配置方法,其特征在于,包括以下步骤:
步骤1、接口工具启动流程;
步骤2、接口工具模板解析流程;
步骤3、接口工具模板修改流程。
上述的一种基于模板引擎的HIS接口配置方法,所述步骤1包括:
步骤11、启动配置工具,判断是否有临时配置文件,如果有清空临时文件,如果没有修改临时文件位置到程序根目录;
步骤12、初始化RazorEngine组件,预加载本地程序集;
步骤13、初始化log4net日志组件,配置工具启动完成。
上述的一种基于模板引擎的HIS接口配置方法,所述步骤2包括:
步骤21、启动配置工具,接收命令行参数;
步骤22、根据参数到缓存中查找是否存在已经编译过的模板动态链接库;
步骤23、如果步骤22存在已经编译过的模板动态链接库,执行动态链接库,输出执行结果;
步骤24、如果步骤22不存在已经编译过的模板动态链接库,读取并编译模板文件,判断模板文件编译是否通过,如果编译通过将模板编译后的动态链接库添加到缓存,执行动态链接库,输出执行结果;如果编译不通过输出错误日志,修改模板中的错误保存后继续读取模板文件。
上述的一种基于模板引擎的HIS接口配置方法,所述步骤24包括:
通过ReadTxtFile方法读取对应的模板文件,通过IRazorEngineService接口的Compile方法编译模板文件,编译前先通过InvalidatingCachingProvider类的TryRetrieveTemplate方法检查模板缓存是否存在,如果存在,则直接通过IRazorEngineService接口的Run方法直接运行缓存的动态链接库,如果检测到没有缓存则执行IRazorEngineService接口的Compile方法进行编译,编译结束后会在临时文件夹中生成动态链接库的临时文件,并通过DelegateTemplateManager类的RemoveDynamic方法预先从缓存从移除该模板对应的键,在通过Compile方法编译时默认添加该模板动态链接库到缓存中,供下次使用。
上述的一种基于模板引擎的HIS接口配置方法,所述步骤3包括:
步骤31、启动配置工具,启动模板监听服务,实时监听;
步骤32、判断模板文件是否被修改,若模板文件被修改,查找缓存,若模板文件未被修改,继续实时监听;
步骤33、判断模板文件是否有旧的动态链接库缓存,如果存在旧的动态链接库缓存移除缓存,如果不存在旧的动态链接库缓存移除缓存,读取模板文件;
步骤34、编译模板文件,判断编译是否通过,如果编译通过将模板编译后的动态链接库添加到缓存,如果编译不通过,输出错误日志,修改模板中的错误并保存,继续读取模板文件;
步骤35、如果编译通过将模板编译后的动态链接库添加到缓存,执行动态链接库,输出执行结果;
步骤36、判断是否需要继续监听模板文件,若需要继续实时监听,若不需要退出配置工具。
上述的一种基于模板引擎的HIS接口配置方法,所述log4net日志组件支持输出日志到文件系统、数据库、控制台、操作系统日志中。
上述的一种基于模板引擎的HIS接口配置方法,所述模板文件的任意位置插入log4net日志生成代码。
本发明的有益效果是:
本发明通过基于模板引擎的接口配置工具,通过直接在服务器上修改模板文件,就能实现通过身份证号取地址、性别、出生年月的规则。同时,通过多种渠道日志输出,方便调试、后期维护、接口变动时,快捷定位错误,调试排错。最后,集成大部分主流数据库驱动。有效解决了现有技术的不足。
以下将结合附图对本发明的构思、具体结构及产生的技术效果作进一步说明,以充分地了解本发明的目的、特征和效果。
附图说明
图1是本发明的基于模板引擎的HIS接口配置工具方框图。
图2是本发明的接口工具启动流程图。
图3是本发明的接口工具模板解析流程图。
图4是本发明的接口工具模板修改流程图。
具体实施方式
如图1-4所示,一种基于模板引擎的HIS接口配置方法,其特征在于,包括以下步骤:
步骤1、接口工具启动流程;
步骤2、接口工具模板解析流程;
步骤3、接口工具模板修改流程。
本实施例中,所述步骤1包括:
步骤11、启动配置工具,判断是否有临时配置文件,如果有清空临时文件,如果没有修改临时文件位置到程序根目录。因为RazorEngine组件运行过程中,会在系统临时文件夹中生成随机命名的临时文件,且不会自动删除,这样导致程序使用过程中,临时文件会逐渐膨胀,因此对RazorEngine组件进行优化,程序启动时第一步就清空操作。同时RazorEngine组件默认会使用操作系统中的临时文件夹,但配置工具没有权限去清空操作系统的临时文件夹,因此需要在当前会话中更改临时文件夹的位置,以便上一步骤中能有权限去清空临时文件夹。
步骤12、初始化RazorEngine组件,预加载本地程序集,因为模板文件中可能调用了其他程序集,如果不预先加载程序集,则编译模板可能会报错。
步骤13、初始化log4net日志组件,配置工具启动完成。
本实施例中,所述步骤2包括:
步骤21、启动配置工具,接收命令行参数;
步骤22、根据参数到缓存中查找是否存在已经编译过的模板动态链接库,将模板文件编译生成的动态链接库存入缓存,是为了实现一次编译,多次使用的目的,这样使得配置工具的性能达到最优。
步骤23、如果步骤22存在已经编译过的模板动态链接库,执行动态链接库,输出执行结果;
步骤24、如果步骤22不存在已经编译过的模板动态链接库,读取并编译模板文件,判断模板文件编译是否通过,如果编译通过将模板编译后的动态链接库添加到缓存,执行动态链接库,输出执行结果;如果编译不通过输出错误日志,修改模板中的错误保存后继续读取模板文件。
本实施例中,所述步骤3包括:
步骤31、启动配置工具,启动模板监听服务,实时监听;
步骤32、判断模板文件是否被修改,若模板文件被修改,查找缓存,若模板文件未被修改,继续实时监听;
步骤33、判断模板文件是否有旧的动态链接库缓存,如果存在旧的动态链接库缓存移除缓存,如果不存在旧的动态链接库缓存移除缓存,读取模板文件;
步骤34、编译模板文件,判断编译是否通过,如果编译通过将模板编译后的动态链接库添加到缓存,如果编译不通过,输出错误日志,修改模板中的错误并保存,继续读取模板文件;
步骤35、如果编译通过将模板编译后的动态链接库添加到缓存,执行动态链接库,输出执行结果;
步骤36、判断是否需要继续监听模板文件,若需要继续实时监听,若不需要退出配置工具。
本实施例中,所述log4net日志组件支持输出日志到文件系统、数据库、控制台、操作系统日志中。
本实施例中,所述模板文件的任意位置插入log4net日志生成代码。
1、关于模板,用到了开源的RazorEngine组件,并对RazorEngine进行进一步包装优化, 增加模板文件监视、预加载本地程序集(供编译模板使用)、模板预编译、模板缓存、临时文件管理。即:接口配置工具初始化时,通过Environment类的SetEnvironmentVariable方法修改环境变量临时文件夹的位置来实现临时文件管理。然后重写RazorEngine的IReferenceResolver接口,在GetReferences方法中生成CompilerReference集合来并预加载本地程序集,并初始化log4net日志组件。配置工具启动完毕后,接受程序入口函数Main方法的args参数调用,通过ReadTxtFile方法读取对应的模板文件,通过IRazorEngineService接口的Compile方法编译模板文件,编译前先通过InvalidatingCachingProvider类的TryRetrieveTemplate方法检查模板缓存是否存在,如果存在,则直接通过IRazorEngineService接口的Run方法直接运行缓存的动态链接库,如果检测到没有缓存则执行IRazorEngineService接口的Compile方法进行编译,编译结束后会在临时文件夹中生成动态链接库的临时文件,并通过DelegateTemplateManager类的RemoveDynamic方法预先从缓存从移除该模板对应的键,在通过Compile方法编译时默认添加该模板动态链接库到缓存中,供下次使用。接口调用完成后立即退出程序,并注销占用的资源,直到下次再启动配置工具时,会首先调用Directory类的Delete方法清空临时文件夹中生成的所有临时文件,这样优化了RazorEngine组件的临时文件处理策略,保证硬盘空间不会越来越膨胀。在修改模板文件时,通过FileSystemWatcher类的OnChanged事件去监听模板文件的变动,通过InvalidatingCachingProvider类的InvalidateCache方法清除该模板之前编译后的缓存,并调用Compile方法重新编译,在临时文件夹中生成动态链接库的临时文件,并添加该模板动态链接库到缓存中,供下次使用。
其中,上述英文名词解释如下:
RazorEngine组件前身是ASP.NET MVC的view引擎,后来开放源码,被修改成一种可以独立使用的模版引擎;
Environment类是.net框架中提供的一个应用程序接口,负责管理应用程序的运行环境;
SetEnvironmentVariable方法为可修改操作系统环境变量;
IReferenceResolver接口为提供编译选项的应用程序接口;
GetReferences方法用于获取编译选项的应用程序接口;
CompilerReference集合负责存储编译选项;
Main方法为应用程序的入口方法;
args参数为命令行参数;
ReadTxtFile为用C#编程语言封装的公共方法,用于读取文件中的文本信息;
IRazorEngineService接口为实现模板服务定义了接口规范,是运行解析模板的主要应用程序接口;
InvalidatingCachingProvider类为一个基于内存的的缓存提供程序,可自行在应用程序域中定期回收内存,在生产环境中使用它而不需要考虑任何回收策略;
TryRetrieveTemplate方法尝试从缓存中恢复模板,成功返回true,失败则返回false;
DelegateTemplateManager类为模板的委托管理类,提供管理模板的应用程序接口;
RemoveDynamic方法使用这个应用程序接口来移除模板,如果模板已经缓存了,则需要先使缓存无效;
Directory类为.net框架中负责文件目录管理的应用程序接口;
Delete方法为删除目录的应用程序接口;
FileSystemWatcher类为.net框架中负责文件系统监视的 应用程序接口;
OnChanged事件为文件系统中的文件,改变时触发该方法;
InvalidatingCachingProvider类为一个基于内存的的缓存提供程序,可自行在应用程序域中定期回收内存,在生产环境中使用它而不需要考虑任何回收策略;
InvalidateCache方法表示使用为使缓存无效;
Compile方法,该应用程序接口的作用是编译模板。
2、关于日志输出,用到了开源的log4net组件,进行集成,支持输出日志到文件系统、数据库、控制台、操作系统日志中。由于模板文件用的是C#语法,因此可以在模板的任意位置插入log4net日志生成代码,接口开发人员在用模板文件进行配置的时候,可根据实际需要在模板文件中插入日志记录代码,方便调试排错。
3、关于数据库驱动,集成主流的数据库驱动,如:sql server、oracle、postgresql、db2、mysql、hbase、mongodb、lucene、nosql,由于只是集成,没有创新创作的部分,工作量的问题,同行技术人员只要花时间也能做到,这里就不多做说明。
本发明通过基于模板引擎的接口配置工具,通过直接在服务器上修改模板文件,就能实现通过身份证号取地址、性别、出生年月的规则。同时,通过多种渠道日志输出,方便调试、后期维护、接口变动时,快捷定位错误,调试排错。最后,集成大部分主流数据库驱动。有效解决了现有技术的不足。
以上详细描述了本发明的较佳具体实施例。应当理解,本领域的普通技术人员无需创造性劳动就可以根据本发明的构思做出诸多修改和变化。因此,凡本技术领域中技术人员依本发明的构思在现有技术的基础上通过逻辑分析、推理或者有限的实验可以得到的技术方案,皆应在由权利要求书所确定的保护范围内。
Claims (7)
1.一种基于模板引擎的HIS接口配置方法,其特征在于,包括以下步骤:
步骤1、接口工具启动流程;
步骤2、接口工具模板解析流程;
步骤3、接口工具模板修改流程。
2.如权利要求1所述的一种基于模板引擎的HIS接口配置方法,其特征在于,所述步骤1包括:
步骤11、启动配置工具,判断是否有临时配置文件,如果有清空临时文件,如果没有修改临时文件位置到程序根目录;
步骤12、初始化RazorEngine组件,预加载本地程序集;
步骤13、初始化log4net日志组件,配置工具启动完成。
3.如权利要求1所述的一种基于模板引擎的HIS接口配置方法,其特征在于,所述步骤2包括:
步骤21、启动配置工具,接收命令行参数;
步骤22、根据参数到缓存中查找是否存在已经编译过的模板动态链接库;
步骤23、如果步骤22存在已经编译过的模板动态链接库,执行动态链接库,输出执行结果;
步骤24、如果步骤22不存在已经编译过的模板动态链接库,读取并编译模板文件,判断模板文件编译是否通过,如果编译通过将模板编译后的动态链接库添加到缓存,执行动态链接库,输出执行结果;如果编译不通过输出错误日志,修改模板中的错误保存后继续读取模板文件。
4.如权利要求3所述的一种基于模板引擎的HIS接口配置方法,其特征在于,所述步骤24包括:
通过ReadTxtFile方法读取对应的模板文件,通过IRazorEngineService接口的Compile方法编译模板文件,编译前先通过InvalidatingCachingProvider类的TryRetrieveTemplate方法检查模板缓存是否存在,如果存在,则直接通过IRazorEngineService接口的Run方法直接运行缓存的动态链接库,如果检测到没有缓存则执行IRazorEngineService接口的Compile方法进行编译,编译结束后会在临时文件夹中生成动态链接库的临时文件,并通过DelegateTemplateManager类的RemoveDynamic方法预先从缓存从移除该模板对应的键,在通过Compile方法编译时默认添加该模板动态链接库到缓存中,供下次使用。
5.如权利要求1所述的一种基于模板引擎的HIS接口配置方法,其特征在于,所述步骤3包括:
步骤31、启动配置工具,启动模板监听服务,实时监听;
步骤32、判断模板文件是否被修改,若模板文件被修改,查找缓存,若模板文件未被修改,继续实时监听;
步骤33、判断模板文件是否有旧的动态链接库缓存,如果存在旧的动态链接库缓存移除缓存,如果不存在旧的动态链接库缓存移除缓存,读取模板文件;
步骤34、编译模板文件,判断编译是否通过,如果编译通过将模板编译后的动态链接库添加到缓存,如果编译不通过,输出错误日志,修改模板中的错误并保存,继续读取模板文件;
步骤35、如果编译通过将模板编译后的动态链接库添加到缓存,执行动态链接库,输出执行结果;
步骤36、判断是否需要继续监听模板文件,若需要继续实时监听,若不需要退出配置工具。
6.如权利要求2所述的一种基于模板引擎的HIS接口配置方法,其特征在于:所述log4net日志组件支持输出日志到文件系统、数据库、控制台、操作系统日志中。
7.如权利要求3所述的一种基于模板引擎的HIS接口配置方法,其特征在于:所述模板文件的任意位置插入log4net日志生成代码。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710865429.0A CN107590007A (zh) | 2017-09-22 | 2017-09-22 | 一种基于模板引擎的his接口配置方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710865429.0A CN107590007A (zh) | 2017-09-22 | 2017-09-22 | 一种基于模板引擎的his接口配置方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN107590007A true CN107590007A (zh) | 2018-01-16 |
Family
ID=61048431
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710865429.0A Pending CN107590007A (zh) | 2017-09-22 | 2017-09-22 | 一种基于模板引擎的his接口配置方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN107590007A (zh) |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8667394B1 (en) * | 2007-06-19 | 2014-03-04 | William C. Spencer | System for generating an intelligent cross-platform document |
CN106569795A (zh) * | 2016-09-29 | 2017-04-19 | 山东浪潮云服务信息科技有限公司 | 一种基于JavaScript模板引擎的保存数据可视化属性配置的方法 |
CN106844643A (zh) * | 2017-01-13 | 2017-06-13 | 王洋 | 一种基于模板引擎的数据库动态生成方法 |
-
2017
- 2017-09-22 CN CN201710865429.0A patent/CN107590007A/zh active Pending
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8667394B1 (en) * | 2007-06-19 | 2014-03-04 | William C. Spencer | System for generating an intelligent cross-platform document |
CN106569795A (zh) * | 2016-09-29 | 2017-04-19 | 山东浪潮云服务信息科技有限公司 | 一种基于JavaScript模板引擎的保存数据可视化属性配置的方法 |
CN106844643A (zh) * | 2017-01-13 | 2017-06-13 | 王洋 | 一种基于模板引擎的数据库动态生成方法 |
Non-Patent Citations (1)
Title |
---|
艾码士J: "Razor模板引擎", 《博客园(HTTPS://WWW.CNBLOGS.COM/GREEN-JCX/P/5786669.HTML)》 * |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105184166B (zh) | 基于内核的安卓程序实时行为分析方法及系统 | |
CN104881285B (zh) | 基于本体的代码片段标注与重用系统 | |
CN105867978A (zh) | Ogg版本部署方法和系统 | |
CN106844682A (zh) | 数据交换方法、装置及系统 | |
JP2013033583A (ja) | 連想メモリ更新のためのシステム | |
CN103455424A (zh) | 基于VxWorks操作系统的动态内存泄漏检测方法及装置 | |
CN104820959A (zh) | 基于数据挖掘的医学知识库系统 | |
CN106164897A (zh) | 用于寄存内存数据库的系统及方法 | |
CN108681556A (zh) | 分布式指令域数据的访问方法及其系统 | |
CN113961584A (zh) | 字段血缘分析方法、装置、电子设备及存储介质 | |
US10733057B2 (en) | Techniques for application undo and redo using SQL patchsets or changesets | |
KR101877828B1 (ko) | 인공지능 기반의 사용자 인터페이스 통합 플랫폼 시스템 | |
CN114201328A (zh) | 基于人工智能的故障处理方法、装置、电子设备及介质 | |
CN115168166A (zh) | 业务数据变更的记录方法、装置、设备及存储介质 | |
CN114691403A (zh) | 一种服务器故障诊断方法、装置、电子设备及存储介质 | |
Geng et al. | Fine-grained code-comment semantic interaction analysis | |
CN117034230A (zh) | 一种数据校验方法、装置、设备及其存储介质 | |
CN107590007A (zh) | 一种基于模板引擎的his接口配置方法 | |
Neumann et al. | OXDBS: extension of a native XML database system with validation by consistency checking of OWL-DL ontologies | |
CN116756021A (zh) | 基于事件分析的故障定位方法、装置、电子设备及介质 | |
Huang et al. | Using alloy to support feature-based DSL construction for mining software repositories | |
CN114936111A (zh) | 前端变量异常检测及修复方法、装置、设备及存储介质 | |
Meng et al. | IT troubleshooting with drift analysis in the DevOps era | |
CN115002011A (zh) | 流量双向测试方法、装置、电子设备及存储介质 | |
CN114356379A (zh) | 基于备份的服务升级方法、装置、设备及存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
WD01 | Invention patent application deemed withdrawn after publication | ||
WD01 | Invention patent application deemed withdrawn after publication |
Application publication date: 20180116 |