发明内容
本发明的目的,就是针对现有技术的缺陷,提供一种心电数据打印方法,采用多线程机制使得心电图机可以同时进行多个心电数据接收与多个心电数据处理从而提高了设备的使用效率;采用多线程机制对上一个心电数据进行打印的同时还可以处理下一个心电数据的图形化工作,进一步提高了设备的打印效率;采用多线程机制使得程序设计模块化明显提高了程序的升级与功能扩展能力。
为实现上述目的,本发明提供了一种心电数据打印方法,其特征在于,所述方法包括:
心电数据打印模块从心电数据调度模块获取第一打印数据包,所述第一打印数据包至少包括:打印模式字、打印参数、患者信息、打印模板字、第一心电数据;
所述心电数据打印模块根据所述打印模式字,创建静态模板实例生成第一打印格式模板;
所述心电数据打印模块根据所述打印模式字,创建动态对象实例生成第一打印对象;所述第一打印对象的属性至少包括:打印参数属性、用户信息属性、打印模板属性、心电数据属性、输出数据属性;
所述心电数据打印模块根据所述第一打印数据包对所述第一打印对象进行对象属性设置处理;
所述心电数据打印模块提取所述第一打印对象的对象指针生成第一对象指针;
所述心电数据打印模块创建单例线程生成第一画图线程;所述第一画图线程的属性至少包括:画图对象指针队列;
所述心电数据打印模块根据所述第一对象指针,将所述第一打印对象向所述第一画图线程进行对象添加处理;
所述心电数据打印模块启动所述第一画图线程的画图执行方法,对加入所述画图对象指针队列的打印对象进行图像生成处理;
所述心电数据打印模块创建单例线程生成第一打印线程;所述第一打印线程的属性至少包括:打印对象指针队列;
所述心电数据打印模块根据所述第一对象指针,将所述第一打印对象向所述第一打印线程进行对象添加处理;
所述心电数据打印模块启动所述第一打印线程的打印执行方法,对加入所述打印对象指针队列的打印对象进行图像打印处理并生成第一打印状态;
所述心电数据打印模块向所述心电数据调度模块发送所述第一打印状态。
进一步的,所述心电数据打印模块根据所述第一打印数据包对所述第一打印对象进行对象属性设置处理,具体包括:
所述心电数据打印模块根据所述第一打印数据包的所述打印参数,调用所述第一打印对象的配置打印参数方法,对所述第一打印对象的所述打印参数属性进行设置处理;
所述心电数据打印模块根据所述第一打印数据包的所述患者信息,调用所述第一打印对象的所述配置对象属性方法,对所述第一打印对象的所述用户信息属性进行设置处理;
所述心电数据打印模块根据所述第一打印数据包的所述打印模板字,调用所述第一打印对象的所述配置对象属性方法,对所述第一打印对象的所述打印模板属性进行设置处理;
所述心电数据打印模块根据所述第一打印数据包的所述第一心电数据,调用所述第一打印对象的所述配置对象属性方法,对所述第一打印对象的所述心电数据属性进行设置处理。
进一步的,所述心电数据打印模块根据所述第一对象指针,将所述第一打印对象向所述第一画图线程进行对象添加处理,具体包括:
所述心电数据打印模块调用所述第一画图线程的画图队列添加方法,将所述第一对象指针向所述第一画图线程的所述画图对象指针队列进行对象指针添加处理。
进一步的,所述心电数据打印模块启动所述第一画图线程的画图执行方法,对加入所述画图对象指针队列的打印对象进行图像生成处理,具体包括:
所述心电数据打印模块启动所述第一画图线程的所述画图执行方法;
所述画图执行方法从所述画图对象指针队列中获取所述第一对象指针;
所述画图执行方法根据所述第一对象指针,获取所述第一打印对象的所述打印模板属性、心电数据属性;
所述画图执行方法根据所述打印模板属性、心电数据属性,调用所述第一打印对象的第二画图方法对所述第一打印对象进行图像生成处理。
优选的,所述画图执行方法根据所述打印模板属性、心电数据属性,调用所述第一打印对象的第二画图方法对所述第一打印对象进行图像生成处理,具体包括:
所述画图执行方法根据所述打印模板属性、心电数据属性,使用所述第一打印格式模板的第一画图方法生成第一图像数据;
根据所述第一图像数据对与所述第一打印对象的所述输出数据属性进行设置处理。
进一步的,所述心电数据打印模块根据所述第一对象指针,将所述第一打印对象向所述第一打印线程进行对象添加处理,具体包括:
所述心电数据打印模块调用所述第一打印线程的打印队列添加方法,将所述第一对象指针向所述第一打印线程的所述打印对象指针队列进行对象指针添加处理。
优选的,所述心电数据打印模块启动所述第一打印线程的打印执行方法,对加入所述打印对象指针队列的打印对象进行图像打印处理并生成第一打印状态,具体包括:
所述心电数据打印模块启动所述第一打印线程的所述打印执行方法;
所述打印执行方法从所述打印对象指针队列中获取所述第一对象指针;
所述打印执行方法根据所述第一对象指针,调用所述第一打印对象的第二获取画图结果方法生成第二打印数据包;
所述打印执行方法对所述第二打印数据包进行打印驱动协议处理生成第三打印数据包;
所述打印执行方法向打印机驱动发送所述第三打印数据包;
所述打印执行方法接收从所述打印机驱动发回的所述第一打印状态。
进一步的,所述打印执行方法根据所述第一对象指针,调用所述第一打印对象的第二获取画图结果方法生成第二打印数据包,具体包括:
所述打印执行方法调用所述第一打印格式模板的第一获取画图结果方法,获取所述第一对象指针对应的所述第一打印对象的所述输出数据属性;
所述打印执行方法提取所述输出数据属性的全部字节生成所述第二打印数据包。
进一步的,所述打印模式字包括:手动波形打印模式,自动波形打印模式、自动报告打印模式、预览波形打印模式、间隔波形打印模式中的一种或多种;
所述打印模板字包括:手动12通道模板、手动6通道模板、手动6+1通道模板、手动3+3通道模板、手动单通道模板、自动12通道模板、自动6*2通道模板、自动6*2+1通道模板、自动3*4+3通道模板、自动12通道加分析报告模板、自动6*2通道加分析报告模板、自动6*2+1通道加分析报告模板、自动3*4+3通道加分析报告模板、自动分析报告模板中的一种或多种。
进一步的,所述方法还包括:
在当所述心电数据打印模块处理多个打印数据时,所述心电数据打印模块在执行所述第一画图线程的所述画图执行方法与所述第一打印线程的所述打印执行方法的同时,从所述心电数据调度模块继续接收第四打印数据包并通过创建动态对象实例生成第二打印对象;所述心电数据打印模块在根据所述第四打印数据包对所述第二打印对象完成对象属性设置处理之后,将所述第二打印对象分别向所述第一画图线程与所述第一打印线程进行对象添加处理;所述心电数据打印模块完成对所述第二打印对象的对象添加之后,从所述心电数据调度模块继续接收下一个打印数据包并通过创建动态对象实例生成下一个打印对象;
在当所述第一画图线程的所述画图对象指针队列的对象指针总数大于0时,所述第一画图线程的所述画图执行方法对所述画图对象指针队列的对象指针对应的打印对象依次进行图像生成处理,并在每个打印对象的图像生成处理成功之后将当前打印对象从所述画图对象指针队列中移除并将所述画图对象指针队列的对象指针总数减1;
在当所述第一打印线程的所述打印对象指针队列中的对象指针总数大于0时,所述第一打印线程的所述打印执行方法对所述打印对象指针队列的对象指针对应的打印对象依次进行图像打印处理并将生成的当前打印状态向第一打印状态序列进行添加,在每个打印对象的图像打印处理成功之后将当前打印对象从所述打印对象指针队列中移除并将所述打印对象指针队列的对象指针总数减1;
在所述画图对象指针队列对应的全部打印对象均完成图像生成且所述打印对象指针队列对应的全部打印对象均完成图像打印之后,所述心电数据打印模块将所述第一打印状态序列向所述心电数据调度模块发送。
本发明提供的一种心电数据打印方法,首先,采用多线程机制分离心电数据的接收与处理流程,使得心电图机可以同时进行多个心电数据接收与多个心电数据处理,从而提高了设备的使用效率;其次,采用多线程机制分离心电数据的图像转化与图像打印流程,即在对上一个心电数据进行打印的同时还可以处理下一个心电数据的图形化工作,通过提高数据的处理效率进一步提高了设备的打印效率;再者,采用多线程机制使得程序设计模块化明显,也提高了程序的升级与功能扩展能力;另外,在处理打印任务时采用单例线程连接打印外设,保障了由多线程任务生成的打印对象数据在进行具体打印时不会发生对象数据错位的问题。
具体实施方式
为了使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明作进一步地详细描述,显然,所描述的实施例仅仅是本发明一部份实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本发明保护的范围。
如图1为本发明实施例一提供的一种心电数据打印方法的示意图所示,本方法主要包括如下步骤:
步骤1,心电数据打印模块从心电数据调度模块获取第一打印数据包,第一打印数据包至少包括:打印模式字、打印参数、患者信息、打印模板字、第一心电数据。
此处,一般心电图机在处理数据打印/显示时,相关的模块主要分为:心电数据采集模块、心电数据调度模块与心电数据打印模块,如图2为本发明实施例提供的心电图机数据处理模块示意图所示。心电数据采集模块主要是通过前置电极获取心电的电位信号将电位信号向心电数据调度模块发送。心电数据调度模块主要是将前端收集的多种通道的心电的电位信号进行标准格式数据转化操作,并将转化后的数据以打印数据包的方式向心电数据打印模块进行输出。心电数据打印模块主要是负责将接收到的打印数据包按照打印/显示要求将数据向对应的打印设备或显示设备进行转发。本发明实施例在心电数据打印模块处理数据转发的时候,为提高转发效率,从传统的单线程画图-打印/显示工作模式,变更为以多线程工作方式为主的并发工作模式,将原有的从心电数据调度模块获取数据-将数据进行图像化处理-将处理后的图形进行打印/显示处理的线性工作流程,变更为三者可错时、并行的工作方式,很大程度提高了设备的输出效率、缩短了工作时间、提升了系统资源的有效利用率。
此处,心电图机常见的工作模式有三种:手动模式、自动模式与间隔模式,所以打印模式字对应的就有:手动波形打印模式,自动波形打印模式、自动报告打印模式、预览波形打印模式、间隔波形打印模式。其中,对带有图像预览显示功能的心电图机可以使用预览波形打印模式,使用该模式与其他模式的区别是:其他模式将最终生成的心电图图像文件向打印设备输出并打印出来,该模式是将生成的心电图图形文件向显示设备输出并显示出来。
打印参数,是指与打印设备相关的配置参数。
患者信息由客户定制,可以包括姓名、性别、年龄及其他。
打印模板字,是与打印/显示效果相关的,也就是图像模板参数,至少包括:手动12通道模板、手动6通道模板、手动6+1通道模板、手动3+3通道模板、手动单通道模板、自动12通道模板、自动6*2通道模板、自动6*2+1通道模板、自动3*4+3通道模板、自动12通道加分析报告模板、自动6*2通道加分析报告模板、自动6*2+1通道加分析报告模板、自动3*4+3通道加分析报告模板、自动分析报告模板。例如,手动12通道模板就是指根据第一心电数据提取12导联心电数据信息,并按照12通道全显示方式进行顺次波形排列打印/显示输出。
第一心电数据,与工作模式相关,即在当前工作模式下采集的心电数据包。
步骤2,心电数据打印模块根据打印模式字,创建静态模板实例生成第一打印格式模板。
此处,第一打印格式模板的方法(或称类函数)至少包括:第一画图方法、第一获取画图结果方法。
此处,第一打印格式模板主要提供多种打印显示画图处理程序,标准接口程序方法(或称类函数)至少包括两个:第一画图方法、第一获取画图结果方法,上述两个方法根据打印模式字的具体取值不同,其执行的程序效果是不一样的,在具体实现上可以在一个程序中用多状态分支处理,也可以对接口程序根据打印模式字不同的赋值多次进行重构。
步骤3,心电数据打印模块根据打印模式字,创建动态对象实例生成第一打印对象。
此处,第一打印对象的方法(或称类函数)至少包括:配置打印参数方法、配置对象属性方法、第二画图方法、第二获取画图结果方法;第一打印对象的属性至少包括:打印参数属性、用户信息属性、打印模板属性、心电数据属性、输出数据属性。
此处,每一个接收的数据包对应一个对象。该对象的基础方法程序至少包括:配置打印参数方法、配置对象属性方法、第二画图方法、第二获取画图结果方法,其中配置打印参数方法是对对象的打印参数属性进行赋值的,配置对象属性方法是对对象的用户信息属性、打印模板属性、心电数据属性进行赋值,第二画图方法是生成对象的输出数据属性的,第二获取画图结果方法是向外输出对象的输出数据属性的。其中输出数据属性就是按照打印模板字要求输出的心电图图形数据。
步骤4,心电数据打印模块根据第一打印数据包对第一打印对象进行对象属性设置处理,
具体包括:步骤41,心电数据打印模块根据第一打印数据包的打印参数,调用第一打印对象的配置打印参数方法(或称类函数),对第一打印对象的打印参数属性进行设置;
步骤42,心电数据打印模块根据第一打印数据包的患者信息,调用第一打印对象的配置对象属性方法(或称类函数),对第一打印对象的用户信息属性进行设置;
步骤43,心电数据打印模块根据第一打印数据包的打印模板字,调用第一打印对象的配置对象属性方法(或称类函数),对第一打印对象的打印模板属性进行设置;
步骤44,心电数据打印模块根据第一打印数据包的第一心电数据,调用第一打印对象的配置对象属性方法(或称类函数),对第一打印对象的心电数据属性进行设置。
此处,对创建的第一打印对象进行属性赋值,以便于后续利用打印对象进行图像生成处理与图像打印处理。
步骤5,心电数据打印模块提取第一打印对象的对象指针生成第一对象指针。
步骤6,心电数据打印模块创建单例线程生成第一画图线程。
此处,第一画图线程的方法(或称类函数)至少包括:画图队列添加方法、画图执行方法;第一画图线程的属性至少包括:画图对象指针队列。
此处,按单例线程方式生成第一画图线程,则在一次完整的任务中(1个或多个心电数据处理任务),该线程只生成一次,心电数据打印模块将多个打印对象依次加入画图对象指针队列中进行排队处理,生成完一个对象的输出数据属性之后就将该对象的对象指针从画图对象指针队列中移除。
步骤7,心电数据打印模块根据第一对象指针,将第一打印对象向第一画图线程进行对象添加处理。
具体的,心电数据打印模块调用第一画图线程的画图队列添加方法(或称类函数),将第一对象指针向第一画图线程的画图对象指针队列进行对象指针添加处理。
步骤8,心电数据打印模块启动第一画图线程的画图执行方法(或称类函数),对加入画图对象指针队列的打印对象进行图像生成处理,
具体包括:步骤81,心电数据打印模块启动第一画图线程的画图执行方法(或称类函数);
步骤82,画图执行方法从画图对象指针队列中获取第一对象指针;
步骤83,画图执行方法根据第一对象指针,获取第一打印对象的打印模板属性、心电数据属性;
步骤84,画图执行方法根据打印模板属性、心电数据属性,调用第一打印对象的第二画图方法(或称类函数)对第一打印对象进行图像生成处理,
具体包括:步骤841,根据打印模板属性、心电数据属性,使用第一打印格式模板的第一画图方法(或称类函数)生成第一图像数据;
步骤842,根据第一图像数据对与第一对象指针对应的第一打印对象的输出数据属性进行设置。
步骤9,心电数据打印模块创建单例线程生成第一打印线程。
此处,第一打印线程的方法(或称类函数)至少包括:打印队列添加方法、打印执行方法;第一打印线程的属性至少包括:打印对象指针队列。
此处,按单例线程方式生成第一打印线程,则在一次完整的任务中(1个或多个心电数据处理任务),该线程只生成一次,心电数据打印模块将多个打印对象依次加入打印对象指针队列中进行排队处理,完成一个对象的图形打印之后就将该对象的对象指针从打印对象指针队列中移除。
步骤10,心电数据打印模块根据第一对象指针,将第一打印对象向第一打印线程进行对象添加处理,
具体的,调用第一打印线程的打印队列添加方法(或称类函数),将第一对象指针向第一打印线程的打印对象指针队列进行对象指针添加处理。
步骤11,心电数据打印模块启动第一打印线程的打印执行方法(或称类函数),对加入打印对象指针队列的打印对象进行图像打印处理并生成第一打印状态,
具体包括:步骤111,心电数据打印模块启动第一打印线程的打印执行方法(或称类函数);
步骤112,打印执行方法从打印对象指针队列中获取第一对象指针;
步骤113,打印执行方法根据第一对象指针,调用第一打印对象的第二获取画图结果方法(或称类函数)生成第二打印数据包,
具体包括:步骤1131,调用第一打印格式模板的第一获取画图结果方法(或称类函数),获取第一对象指针对应的第一打印对象的输出数据属性;
步骤1132,提取输出数据属性的全部数据生成第二打印数据包;
步骤114,打印执行方法对第二打印数据包进行打印驱动协议处理生成第三打印数据包;
步骤115,打印执行方法向打印机驱动发送第三打印数据包;
步骤116,打印执行方法接受从打印机驱动发回的第一打印状态。
步骤12,心电数据打印模块将第一打印状态向心电数据调度模块发送。
如图3为本发明实施例二提供的一种心电数据打印方法的示意图所示,本方法主要包括如下步骤:
步骤201,心电数据打印模块从心电数据调度模块获取数据包总数,初始化第一索引的值为1,初始化第一打印状态序列为空。
此处,在当心电数据打印模块处理多个打印数据时,本发明实施例提供的数据处理方法支持数据获取与数据处理同步:心电数据打印模块在执行第一画图线程的画图执行方法与第一打印线程的打印执行方法的同时,从心电数据调度模块继续接收下一个打印数据包并通过创建动态对象实例生成下一个打印对象。具体执行时,心电数据打印模块首先根据已接收到的打印数据包对当前生成的动态打印对象完成对象属性设置处理,然后将当前打印对象分别向第一画图线程与第一打印线程进行对象添加,添加成功之后心电数据打印模块继续接收下一个打印数据包并通过创建下一个打印对象。这个过程中,第一画图线程与第一打印线程只生成一次,这样才能保证心电数据打印模块每次都是往同一个线程中添加的打印对象。
步骤202,心电数据打印模块从心电数据调度模块获取数据包生成第一索引打印数据包,第一索引打印数据包至少包括:打印模式字、打印参数、患者信息、打印模板字、第一心电数据。
步骤203,在当第一索引的值为1时,心电数据打印模块根据打印模式字,创建静态模板实例生成第一打印格式模板;第一打印格式模板的方法(或称类函数)至少包括:第一画图方法、第一获取画图结果方法。
步骤204,心电数据打印模块根据打印模式字,创建动态对象实例生成第一索引打印对象;第一索引打印对象的方法(或称类函数)至少包括:配置打印参数方法、配置对象属性方法、第二画图方法、第二获取画图结果方法;第一索引打印对象的属性至少包括:打印参数属性、用户信息属性、打印模板属性、心电数据属性、输出数据属性。
步骤205,心电数据打印模块根据第一索引打印数据包对第一索引打印对象进行对象属性设置处理。
步骤206,心电数据打印模块提取第一索引打印对象的对象指针生成第一索引对象指针。
步骤207,在当第一索引的值为1时,心电数据打印模块创建单例线程生成第一画图线程;第一画图线程的方法(或称类函数)至少包括:画图队列添加方法、画图执行方法;第一画图线程的属性至少包括:画图对象指针队列。
步骤208,心电数据打印模块根据第一索引对象指针,将第一索引打印对象向第一画图线程进行对象添加。
步骤209,心电数据打印模块启动第一画图线程的画图执行方法,对加入画图对象指针队列的打印对象进行图像生成处理。
第一画图线程的画图执行方法的执行与获取打印数据的线程是平行线程,心电数据打印模块在将打印对象对第一画图线程的对象指针队列进行添加之后,第一画图线程只根据对象指针队列的对象总数进行图像生成处理;具体的,在当第一画图线程的画图对象指针队列的对象指针总数大于0时,第一画图线程的画图执行方法对画图对象指针队列的对象指针对应的打印对象依次进行图像生成处理,并在每个打印对象的图像生成处理成功之后将当前打印对象从画图对象指针队列中移除并将画图对象指针队列的对象指针总数减1。
步骤210,在当第一索引的值为1时,心电数据打印模块创建单例线程生成第一打印线程;第一打印线程的方法(或称类函数)至少包括:打印队列添加方法、打印执行方法;第一打印线程的属性至少包括:打印对象指针队列。
步骤211,心电数据打印模块根据第一索引对象指针,将第一索引打印对象向第一打印线程进行对象添加。
步骤212,心电数据打印模块启动第一打印线程的打印执行方法,对加入打印对象指针队列的打印对象进行图像打印处理并生成第一索引打印状态。
第一打印线程的打印执行方法的执行与获取打印数据的线程、第一画图线程都是平行线程,心电数据打印模块在将打印对象对第一打印线程的对象指针队列进行添加之后,第一打印线程只根据对象指针队列的对象总数进行图像打印处理;具体的,在当第一打印线程的打印对象指针队列的对象指针总数大于0时,第一打印线程的打印执行方法对打印对象指针队列的对象指针对应的打印对象依次进行图像打印处理,并在每个打印对象的图像打印成功之后将当前打印对象从打印对象指针队列中移除并将打印对象指针队列的对象指针总数减1。
步骤213,心电数据打印模块将第一索引打印状态向第一打印状态序列进行数据项添加。
步骤214,心电数据打印模块将第一索引的值加1。
步骤215,心电数据打印模块判断第一索引的值是否大于数据包总数的值,如果第一索引的值大于数据包总数的值则转至步骤216,如果第一索引的值小于或等于数据包总数的值则转至步骤202。
步骤216,心电数据打印模块将第一打印状态序列向心电数据调度模块发送。
本发明提供的一种心电数据打印方法,首先,采用多线程机制分离心电数据的接收与处理流程,使得心电图机可以同时进行多个心电数据接收与多个心电数据处理,从而提高了设备的使用效率;其次,采用多线程机制分离心电数据的图像转化与图像打印流程,即在对上一个心电数据进行打印的同时还可以处理下一个心电数据的图形化工作,通过提高数据的处理效率进一步提高了设备的打印效率;再者,采用多线程机制使得程序设计模块化明显,也提高了程序的升级与功能扩展能力;另外,在处理打印任务时采用单例线程连接打印外设,保障了由多线程任务生成的打印对象数据在进行具体打印时不会发生对象数据错位的问题。
结合本文中所公开的实施例描述的方法或算法的步骤可以用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(RAM)、内存、只读存储器(ROM)、电可编程ROM、电可擦除可编程ROM、寄存器、硬盘、可移动磁盘、CD-ROM、或技术领域内所公知的任意其它形式的存储介质中。
以上所述的具体实施方式,对本发明的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本发明的具体实施方式而已,并不用于限定本发明的保护范围,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。