一种病历本套印的方法、装置及存储介质与流程

文档序号:30544153发布日期:2022-06-29 00:20阅读:90来源:国知局
1.本技术涉及病历打印的
技术领域
:,尤其是涉及一种病历本套印的方法、装置及存储介质。
背景技术
::2.在门诊诊病过程中,医院一般会发一本病历本给患者,病历本首页印有医院的log和填写患者的基本信息,病历本每一也的填写线已经印刷好,医生诊病后手写填写诊病相关内容后给患者留存。手写病历本有有书写效率低的缺点,为了克服手写病历本的缺点,目前有些医院实现了对病历本进行打印,但是仍旧存在以下缺陷:病历本像书本一样有中间的折叠部分,如果将打印页面大小设置为病历本展开的大小,打印程序容易把字打在病历本中央,导致部分字无法打清晰打印,如果将打印页面大小设置为病历本折叠后的半面大小,则会造成打印机吐纸异常而且需要多次进纸。技术实现要素:3.针对上述病历本像书本一样有中间的折叠部分,如果将打印页面大小设置为病历本展开的大小,打印程序容易把字打在病历本中央,导致部分字无法打清晰打印,如果将打印页面大小设置为病历本折叠后的半面大小,则会造成打印机吐纸异常而且需要多次进纸的问题,本技术提出了一种病历本套印的方法、装置及存储介质。4.第一方面,本技术提出了一种病历本套印的方法,包括以下步骤:5.s1:制作模板制作器;6.所述s1具体包括以下步骤:7.s11:在html5canvas的画布上构建基本元素,所述基本元素包括表格、文字和数据元,所述文字和数据元位于所述表格的单元格内;8.s12:对每个所述基本元素设置printable属性;9.s13:将所述画布在逻辑上分为多页;10.s14:对每个所述数据元设置关键属性,所述关键属性包括字段标识、段名称、字段类型以及显示格式;11.s2:利用所述模板制作器制作病历本模板:使用所述表格排版病历本轮廓位置,使用所述数据元标记占位患者基本信息,并使用所述数据元标记处方的位置;12.s3:获取病历数据,根据所述病历本模板中数据元设定的字段标识将病历数据中的主表类数据填充到所述病历本模板中对应的数据元位置中;13.s4:获取处方数据,将所述处方数据依据所述模板制作器的数据格式规则生成一个处方表格,然后根据所述病历本模板中标识的处方占位位置将所述处方表格插入到病历本模板指定的位置中,以生成病历本数据;14.s5:利用html5canvas的接口htmlcanvaselement.todataurl将所述病历本数据按页转化为病历数据图片,每张所述病历数据图片的大小为病历本折叠后的大小;15.s6:判断病历本的类型,若病历本是a4类型或者单页彩印类型,则直接将所述病历数据图片发送至打印机以完成病历本打印;若病历本是书本类型,则继续判断所述病历数据图片的页数,若所述病历数据图片为单张,则执行s7,否则执行s8;16.s7:利用windowsapi将单张的所述病历数据图片发送至打印机以完成病历本打印;17.s8:利用html5canvas接口将所述病历数据图片中相邻的奇数页图片与偶数页图片合并成为一张图片,形成拼接病历图片;18.s9:利用windowsapi将所述拼接病历图片发送至打印机以进行病历本套印。19.通过采用上述技术方案,先利用html5canvas制作模板制作器,然后利用所述模板制作器制作病历本模板,之后获取病历数据和处方数据填充到病历本模板中,以生成病历本数据,利用html5canvas的接口htmlcanvaselement.todataurl将所述病历本数据按页转化为病历数据图片,之后判断病历本的类型,利用html5canvas接口将所述病历数据图片中相邻的奇数页图片与偶数页图片合并成为一张图片,形成拼接病历图片,利用windowsapi将所述拼接病历图片发送至打印机以进行病历本套印;实现了按照病历本印刷好的书写线分两半套打到病历本中,不仅使得病历中的字可以清晰打印,还解决了打印机吐纸异常的问题,提高了病历本的打印效率、美观程度以及实用效果。20.优选的,所述s9具体包括:21.若所述病历数据图片的页数为偶数,则所述拼接病历图片仅包括双页拼接图片,此时直接利用windowsapi将所述双页拼接图片发送至打印机以进行病历本套印;22.若所述病历数据图片的页数为奇数,则所述拼接病历图片包括双页拼接图片和尾页图片,此时先利用windowsapi将所述双页拼接图片发送至打印机,然后再将所述尾页图片发送至打印机以进行病历本套印。从而适配偶数页的病历数据图片以及奇数页的病历数据图片。23.优选的,所述s3具体包括:获取病历数据,将所述病历数据的主表类数据放入一个map中,所述map中包含字段标识和字段的值,然后在所述病历本模板中找到相同字段标识的数据元,将该数据元的字段的值设置为所述map中的字段的值。从而实现根据所述病历本模板中数据元设定的字段标识将病历数据中的主表类数据填充到所述病历本模板中对应的数据元位置中的效果。24.优选的,所述s4中,所述将处方数据依据模板制作器的数据格式规则生成一个处方表格具体包括:将处方数据的第一条数据直接赋值到所述病历本模板的数据行上,然后往所述数据行下方插入赋值的行,用处方数据的第二条数据对所述赋值的行赋值,剩下的处方数据则用同样的方法赋值到病历本模板中。从而将全部处方数据插入到病历本模板指定的位置中。25.优选的,在所述s6中,利用windowsapicreatedc、cdc::startpage、cimage::draow、cdc::enddoc将所述病历数据图片发送至打印机以完成病历本打印。26.优选的,在所述s7中,利用windowsapicreatedc、cdc::startpage、cimage::draow、cdc::enddoc将单张的所述病历数据图片发送至打印机以进行病历本套印。27.优选的,在所述s8中,所述html5canvas接口包括document.createelement、htmlcanvaselement.getcontext以及canvasdrawimage.drawimage。28.第二方面,本技术还提出了一种病历本套印的装置,其特征在于,所述装置包括:29.病历模板制作模块,被配置用于制作病历本模板;30.病历数据填充模块,被配置用于获取病历数据和处方数据,并将所述病历数据和处方数据填充到所述病历本模板中以生成病历本数据;31.病历数据图片生成模块,被配置用于将所述病历本数据生成病历数据图片;32.拼接病历图片模块,被配置用于将所述病历数据图片中相邻的奇数页图片与偶数页图片合并成为一张图片,形成拼接病历图片;33.打印模块,被配置用于将所述病历数据图片或者拼接病历图片发送至打印机以进行病历本套印。34.第三方面,本技术还提出了一种计算机可读存储介质,其上存储有计算机程序,所述程序被处理器执行时实现如第一方面中所述的计算方法。35.综上所述,本技术至少包括以下有益技术效果:36.1.实现一个模板制作器,模板制作器包括表格、文字、数据元等基本元素、并且可以分页;37.2.利用html5canvas接口将所述病历数据图片中相邻的奇数页图片与偶数页图片合并成为一张图片,形成拼接病历图片,利用windowsapi将所述拼接病历图片发送至打印机以进行病历本套印;只需做一个类似word的模板,调好病历本的布局,就能够实现病历本的套打,按照病历印刷好的书写线分两半套打到病历本中;38.3.该方法不仅使得病历中的字可以清晰打印,还解决了打印机吐纸异常的问题;提高了病历本的打印效率、美观程度以及实用效果。附图说明39.包括附图以提供对实施例的进一步理解并且附图被并入本说明书中并且构成本说明书的一部分。附图图示了实施例并且与描述一起用于解释本技术的原理。将容易认识到其它实施例和实施例的很多预期优点,因为通过引用以下详细描述,它们变得被更好地理解。附图的元件不一定是相互按照比例的。同样的附图标记指代对应的类似部件。40.图1是本技术一个实施例中的病历本套印的方法的流程图。41.图2是根据本技术病历本套印的方法的一个具体实施例的示意图。42.图3是本技术一个实施例中的病历本模板的示意图。43.图4是本技术一个实施例中填充处方数据的示意图。44.图5是本技术一个实施例中完整的病历本数据的示意图。45.图6是本技术一个实施例中病历本为a4类型或者单页彩印类型的示意图。46.图7是本技术一个实施例中病历本是书本类型的示意图。47.图8是本技术一个实施例中拼接病历图片的示意图。48.图9是本技术一个实施例中病历本打印中的示意图。49.图10是本技术一个实施例中病历本打印之后的效果图。50.图11是本技术一个实施例中病历本套印的装置的模块结构示意图。51.图12是适于用来实现本技术实施例的电子设备的计算机系统的结构示意图。具体实施方式52.下面结合附图和实施例对本技术作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释相关发明,而非对该发明的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与有关发明相关的部分。53.需要说明的是,在不冲突的情况下,本技术中的实施例及实施例中的特征可以相互组合。下面将参考附图并结合实施例来详细说明本技术。54.图1示出了可以应用本技术实施例的基于病历本套印的方法的流程图,图2是根据本技术病历本套印的方法的一个具体实施例的示意图,结合参考图1和图2,该方法具体包括以下步骤:55.s1:制作模板制作器;56.在具体的实施例中,模板制作器可以插入表格、文字、数据元(一种数据占位标识)等基本元素。模板中的基本元素支持流式排版,任何元素内容和位置的变动都会影响周围元素的排版位置。57.在具体的实施例中,所述s1具体包括以下步骤:58.s11:在html5canvas的画布上构建基本元素,所述基本元素包括表格、文字和数据元,所述文字和数据元位于所述表格的单元格内;59.模板制作器使用html5canvas作为技术基础实现,html5canvas提供了一张画布和绘制基础文字和图形的方法。模板制作器在此基础之上构建表格、文字、数据元等基本元素,每个基本元素按照顺序记录,文档之内是表格,表格之内是表格行,表格行之内是单元格,单元格之内文本或者数据元,当每个元素变动时,绘制内容时,按照顺序绘制内容实现流式排版。60.s12:对每个所述基本元素设置printable属性;61.每个基本元素都有一个printable属性,当执行打印接口生成图片时,printable属性为false的元素不调用html5canvas的绘制接口,不进行绘制。但是在显示的时候进行绘制,方便预览。62.s13:将所述画布在逻辑上分为多页;63.模板制作器支持分页,根据设定的页面大小和边距,将画布区局逻辑上分为多页,进行显示或者打印绘制时,计算模板上的所有元素的位置并且和页面大小及边距进行对比,超出一页的部分绘制到下一页中,实现自动分页处理。64.s14:对每个所述数据元设置关键属性,所述关键属性包括字段标识、段名称、字段类型以及显示格式;65.各字段作用如下:66.字段标识:用于后端数据获取到后把值填充到对应的数据元中。对应为数据库表中的字段英文名。67.字段名称:用于显示需要填充的字段。68.字段类型:用于标识被填充的字段类型,方便对数字和时间类型进行特殊处理,例如保留小数,时间格式等。69.显示格式标识:用于记录显示的格式,如保留小数,时间格式等。70.s2:利用所述模板制作器制作病历本模板:使用所述表格排版病历本轮廓位置,使用所述数据元标记占位患者基本信息,并使用所述数据元标记处方的位置;如图3所示,为制作好的病历本模板的示意图。71.s3:获取病历数据,根据所述病历本模板中数据元设定的字段标识将病历数据中的主表类数据填充到所述病历本模板中对应的数据元位置中;72.在一个具体的实施例中,所述s3具体包括:获取病历数据,将所述病历数据的主表类数据放入一个map中,所述map中包含字段标识和字段的值,然后在所述病历本模板中找到相同字段标识的数据元,将该数据元的字段的值设置为所述map中的字段的值。73.打印程序执行时,抽取系统中的患者数据、处方数据等,根据模板中数据元设定的字段标识将主表类数据(数据记录只有一条的,例如病人姓名年龄等患者信息数据)数据自动填充到模板中对应的数据元位置中。自动填充过程如下,主表数据获取后只有一条数据,将数据放入一个map中,map的key为数据元字段标识,value为改字段的值,例如姓名key:patient_name,vlaue:张三。在模板数据模型中找到字段标识为patient_name的数据元,设置器值为张三。74.s4:获取处方数据,将所述处方数据依据所述模板制作器的数据格式规则生成一个处方表格,然后根据所述病历本模板中标识的处方占位位置将所述处方表格插入到病历本模板指定的位置中,以生成病历本数据;75.在一个具体的实施例中,如图4所示,在所述s4中,所述将处方数据依据模板制作器的数据格式规则生成一个处方表格具体包括:将处方数据的第一条数据直接赋值到所述病历本模板的数据行上,然后往所述数据行下方插入赋值的行,用处方数据的第二条数据对所述赋值的行赋值,剩下的处方数据则用同样的方法赋值到病历本模板中。制作完成的病历本数据如图5所示。76.s5:利用html5canvas的接口htmlcanvaselement.todataurl将所述病历本数据按页转化为病历数据图片,每张所述病历数据图片的大小为病历本折叠后的大小;病历数据有几页则转化为几张图片。77.s6:判断病历本的类型,若病历本是a4类型或者单页彩印类型,则直接将所述病历数据图片发送至打印机以完成病历本打印;若病历本是书本类型,则继续判断所述病历数据图片的页数,若所述病历数据图片为单张,则执行s7,否则执行s8;78.在一个具体的实施例中,在所述s6中,利用windowsapicreatedc、cdc::startpage、cimage::draow、cdc::enddoc将所述病历数据图片发送至打印机以完成病历本打印。如图6所示,病历本为a4类型或者单页彩印类型;如图7所示,病历本为书本类型。79.s7:利用windowsapi将单张的所述病历数据图片发送至打印机以完成病历本打印;80.在一个具体的实施例中,在所述s7中,利用windowsapicreatedc、cdc::startpage、cimage::draow、cdc::enddoc将单张的所述病历数据图片发送至打印机以进行病历本套印。81.s8:利用html5canvas接口将所述病历数据图片中相邻的奇数页图片与偶数页图片合并成为一张图片,形成拼接病历图片;82.在一个具体的实施例中,在所述s8中,所述html5canvas接口包括document.createelement、htmlcanvaselement.getcontext以及canvasdrawimage.drawimage。83.s9:利用windowsapi将所述拼接病历图片发送至打印机以进行病历本套印。84.在一个具体的实施例中,所述s9具体包括:85.若所述病历数据图片的页数为偶数,则所述拼接病历图片仅包括双页拼接图片,此时直接利用windowsapi将所述双页拼接图片发送至打印机以进行病历本套印;86.若所述病历数据图片的页数为奇数,则所述拼接病历图片包括双页拼接图片和尾页图片,此时先利用windowsapi将所述双页拼接图片发送至打印机,然后再将所述尾页图片发送至打印机以进行病历本套印。87.参照图8,如果病历图片张数大于1,则使用html5canvas技术将偶数倍图片与奇数倍图片按数据合成为一张图片,大小刚好为病历本展开后的大小。如图片有5张,则将第1张与第2张拼接在一起、第3张图片与第4张图片拼接在一起,拼接以后的图片大小刚好等于病历本展开以后的大小。把拼接以后的图片依次使用windowsapicreatedc、cdc::startpage、cimage::draow、cdc::enddoc将图片数据发送至打印机。如果图片剩最后一张,例如上例中的第5张图片,则把最后一张图片使用windowsapicreatedc、cdc::startpage、cimage::draow、cdc::enddoc将图片数据发送至打印机,完成病历本打印。如图9和图10所示,图9为病历本打印中的示意图,图10为病历本打印之后的效果图。88.进一步参考图11,作为对上述所述方法的实现,本技术提供了一种病历本套印的装置的一个实施例,该系统实施例与图1所示的方法实施例相对应,该系统具体可以应用于各种电子设备中。89.参考图11,一种病历本套印的装置,包括:90.病历模板制作模块101,被配置用于制作病历本模板;91.病历数据填充模块102,被配置用于获取病历数据和处方数据,并将所述病历数据和处方数据填充到所述病历本模板中以生成病历本数据;92.病历数据图片生成模块103,被配置用于将所述病历本数据生成病历数据图片;93.拼接病历图片模块104,被配置用于将所述病历数据图片中相邻的奇数页图片与偶数页图片合并成为一张图片,形成拼接病历图片;94.打印模块105,被配置用于将所述病历数据图片或者拼接病历图片发送至打印机以进行病历本套印。95.下面参考图12,其示出了适于用来实现本技术实施例的电子设备的计算机系统200的结构示意图。图12示出的电子设备仅仅是一个示例,不应对本技术实施例的功能和使用范围带来任何限制。96.如图12所示,计算机系统200包括中央处理单元(cpu)201,其可以根据存储在只读存储器(rom)202中的程序或者从存储部分208加载到随机访问存储器(ram)203中的程序而执行各种适当的动作和处理。在ram203中,还存储有系统200操作所需的各种程序和数据。cpu201、rom202以及ram203通过总线204彼此相连。输入/输出(i/o)接口205也连接至总线204。97.以下部件连接至i/o接口205:包括键盘、鼠标等的输入部分206;包括诸如液晶显示器(lcd)等以及扬声器等的输出部分207;包括硬盘等的存储部分208;以及包括诸如lan卡、调制解调器等的网络接口卡的通信部分209。通信部分209经由诸如因特网的网络执行通信处理。驱动器210也根据需要连接至i/o接口205。可拆卸介质211,诸如磁盘、光盘、磁光盘、半导体存储器等等,根据需要安装在驱动器210上,以便于从其上读出的计算机程序根据需要被安装入存储部分208。98.特别地,根据本公开的实施例,上文参考流程图描述的过程可以被实现为计算机软件程序。例如,本公开的实施例包括一种计算机程序产品,其包括承载在计算机可读介质上的计算机程序,该计算机程序包含用于执行流程图所示的方法的程序代码。在这样的实施例中,该计算机程序可以通过通信部分209从网络上被下载和安装,和/或从可拆卸介质211被安装。在该计算机程序被中央处理单元(cpu)201执行时,执行本技术的方法中限定的上述功能。99.作为另一方面,本技术还提供了一种计算机可读存储介质,该计算机可读存储介质可以是上述实施例中描述的电子设备中所包含的;也可以是单独存在,而未装配入该电子设备中。上述计算机可读存储介质承载有一个或者多个程序,当上述一个或者多个程序被该电子设备执行时,使得该电子设备执行时实现如图1中所示的方法。100.需要说明的是,本技术所述的计算机可读存储介质可以是计算机可读信号介质或者计算机可读存储介质或者是上述两者的任意组合。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子可以包括但不限于:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机访问存储器(ram)、只读存储器(rom)、可擦式可编程只读存储器(eprom或闪存)、光纤、便携式紧凑磁盘只读存储器(cd-rom)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本技术中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。而在本技术中,计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读存储介质,该计算机可读存储介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。计算机可读存储介质上包含的程序代码可以用任何适当的介质传输,包括但不限于:无线、电线、光缆、rf等等,或者上述的任意合适的组合。101.可以以一种或多种程序设计语言或其组合来编写用于执行本技术的操作的计算机程序代码,所述程序设计语言包括面向对象的程序设计语言—诸如java、smalltalk、c++,还包括常规的过程式程序设计语言—诸如“c”语言或类似的程序设计语言。程序代码可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络——包括局域网(lan)或广域网(wan)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。102.附图中的流程图和框图,图示了按照本技术各种实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,该模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。103.以上描述了本技术的具体实施方式,但本技术的保护范围并不局限于此,任何熟悉本
技术领域
:的技术人员在本技术揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本技术的保护范围之内。因此,本技术的保护范围应以权利要求的保护范围为准。104.在本技术的描述中,需要理解的是,术语“上”、“下”、“内”、“外”等指示的方位或位置关系为基于附图所示的方位或位置关系,仅是为了便于描述本技术和简化描述,而不是指示或暗示所指的装置或元件必须具有特定的方位、以特定的方位构造和操作,因此不能理解为对本技术的限制。措词‘包括’并不排除在权利要求未列出的元件或步骤的存在。元件前面的措词‘一’或‘一个’并不排除多个这样的元件的存在。在相互不同从属权利要求中记载某些措施的简单事实不表明这些措施的组合不能被用于改进。在权利要求中的任何参考符号不应当被解释为限制范围。当前第1页12当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1