基于模板的医学图文报告设计与实现
2016-08-02安美君王淑上海健康医学院健康信息技术与管理学院上海市00093上海市儿童医院信息科上海市00040
安美君,王淑(.上海健康医学院健康信息技术与管理学院,上海市 00093;.上海市儿童医院信息科,上海市 00040)
基于模板的医学图文报告设计与实现
安美君1,王淑2
(1.上海健康医学院健康信息技术与管理学院,上海市 200093;2.上海市儿童医院信息科,上海市 200040)
摘要:本文结合医院临床用血管理系统的参数输出要求,介绍一种灵活输出医学图文报告内容的处理方法,使用数据字典保存系统所有可输出参数项,通过Word模板选择报告输出内容、设置报告输出格式,使用Word查找、替换功能输出模板设定的检测结果。结果:在医学检测系统软件编程时无需考虑报告输出格式和输出内容,输出报告内容和风格可在模板中动态调整,有较强的应用价值。
关键词:计算机应用技术;Word模板;数据字典;图文报告
0 引言
在一个功能繁多的医学检测系统中,如何按照检测项目的不同,输出格式迥异的医学图文报告,是每个软件开发人员需要直面的问题。目前,在大多数检测系统中, 报告的格式是在需求分析时预先确定的,用户自己不能做出改变,报告格式发生一个小小的变化, 都需软件开发人员再开发,系统缺乏必要的灵活性,不能满足检测报告多样性需求。为解决输出报告灵活性和软件开发的复杂性矛盾,可以把报告输出任务分解成两步进行:由用户自己制定输出报告格式[1][2][3](包括自己设定字体大小、风格、颜色、表格形式等),软件系统控制具体输出内容,借助与检测系统配套的数据字典和用户设定的Word模板,快速开发具有灵活报告输出功能的医学检测系统报告输出模块。本文介绍该系统功能模块的实现方法。图文报告实现过程如图一所示:
图1 图文报告实现过程
1 组成部件设计
1.1数据字典
数据字典的项目由检测系统的输出要求确定,可以用数据库保存,也可以采用系统配置文件保存。系统所有可以输出的项目指标均作为一条记录保存,不允许出现重复记录,可以按照输出参数类型和输出图形类型进行分类存储。本文涉及系统采用系统配置文件格式,以文本文件方式保存数据项,方便查看和修改。数据字典的内容包括项目名称和项目代码,项目名称是项目代码的具体解释,项目代码决定具体的输出参数,项目代码和名称之间用分号隔离,即方便编程分离出项目代码,也便于系统维护人员校对检查。字典文件有系统开发工程师编写,其内容书写格式如图二所示:
1.2Word模板
Word 是世界上使用最多的文字处理系统,医生们基本上对Word操作比较熟悉,使用该软件可以灵活地编辑修改文档模板、制作复杂报表。在建立Word 模板文件时,医生可按照输出内容要求设计报告文档格式,指定字体大小、颜色、表格的边框线形、行列数和宽度,当需要输出检测参数和各种检测波形(图形)时,在相应位置填写数据字典的项目代码即可。医生可以按照不同要求制作多个模板文件,供报告系统调用,输出不同内容的图文报告。
图2 字典文件形式
1.3检测系统报告输出模块
检测系统的报告输出模块具有数据字典的读取、项目代码保存功能,同时还需要打开Word模板文件,按照被测试人员的具体信息改名另存为一个Word文件,然后进行项目代码查找和替换,数据波形插入,Word文件保存和关闭等功能。
2 系统功能实现
图文报告处理流程如下图所示:
图3 图文报告处理流程
2.1数据字典的处理
为保持输出参数的灵活性,可以采用MFC提供的CStringArray类按行保存数据字典的内容,按行保存时注意除去首尾空格。CStringArray类提供了丰富的操作属性,通过GetSize()得到可以输出数据项目总数,GetAt(i)得到第i行的具体内容。数据字典文件内容的处理函数执行流程如下:
数据字典处理函数()
{ 定义CStdioFile文件类型变量和CStringArray类型变量;
清空CStringArray类型变量内容;
选择并打开数据字典文件;
while( 依序读取文件一行内容,判断是否到达字典文件结尾位置 )
{ 清除该行首部和尾部空格;
按照“;”分离上述行的内容,提取图一中项目代码;
按照字符串和图片类型对提取项目代码进行分类;
把内容添加到对应的CStringArray变量中;
}
关闭数据字典文件;
}
2.2报告输出处理
为减少软件开发过程中处理字体大小、颜色、表格外形的编程工作量,增加报告的灵活性,可以采用打开已经设计好的文档模板,通过使用SaveAs()函数另存为一个指定命名的Word文档,然后遍历数据字典的每个数据项,采用查找替换函数对该文档进行操作,用实际输出内容替代原模板中的数据项代码[4][5][6]。输出过程伪代码如下:
图文报告输出函数()
{ 选择并打开图文报告输出模板;
按照系统命名规则,生成输出图文报告名称;
把选中模板更名另存为上述名称的报告文档;
for( 遍历数据字典中的所有条目 )
{ if(判断条目内容,确定条目是字符串内容或者图片)
{ /*处理要输出的文本*/
如果是字符串,遍历整个报告文档;
查找与数据项相匹配的项目代码,找到后用系统实际输出值替代它;
}
else/*处理图片*/
{ 打开项目代码对应的图片文件;
读取图片数据,在内存中生成图形;
图形拷贝到剪切板;
用剪切板中图形替代输出报告文档中项目代码;
关闭已经打开的图片文件;
}
}
保存已经修改完成的图文报告文件;
关闭图文报告文件。
}
图三显示了医生设计图文报告模板和系统最终输出的图文报告结果。
图4 输出模板和输出报告
2.3系统设计关键技术
2.3.1输出参数处理
通过字典文件,系统向医生提供可输出的参数项,但每个检查项目具体数据则完全有系统确定。在系统软件中,设置专门用于输出参数的类,该类对所有输出参数设置缺省值,当选择好被检查患者后,它及时更新各参数值,供Word输入调用。为处理方便,所有输出数据转化成字符串类型。当需要输出图片时,其对应字符串为该图片文件的全路径名称。如参数“病人姓名”的处理方法如下:
COutPutClass:: COutPutClass(){m_strPatientName = “”;}//构造函数设置缺省值
CString COutPutClass::GetName(){ return m_strPatientName;}//得到病人姓名
void COutPutClass::SetName(CString strName){ m_strPatientName = strName;}//设置姓名值
2.3.2图形输出
在Word 模板中,有数据和图形两种内容输出。为很好区分二者,在数据字典中规定图形内容使用“.bmp”后缀,后期做替换处理时需要分别对待。Word操作中,使用图片替代字符串的操作有特殊的前提,必须先把图片拷贝到剪切板中,然后才能使用剪切板中的图片替代字符串,由于是替换操作,在Word模板中在该位置必须保留足够空间存放图形,否则图形会覆盖该区内容,也可以根据图片高度插入适当空行解决内容被覆盖问题。图形拷贝到剪切板的操作过程是:(1)调入图片文件,得到图片的大小;(2)按照图片大小申请内存空间把图片内容拷贝到该内存空间;(3)打开剪切板并清空其内容;(4)把前面准备好的内存空间数据拷贝到剪切板;(5)关闭剪切板,清理内存。
2.3.3操作函数参数获取
微软公司发布的Word产品有多个版本,在Word文档的打开、另存、查找替换、保存、关闭等操作函数中参数很多,而且每个版本参数个数和次序存在差异,为给函数参数准确赋值,本系统开发过程中采用Word2007软件提供的宏操作指令,把相应的操作用宏指令记录下来,然后按照宏指令的执行次序和记录的参数,调用相关函数,完成指定操作。相关操作函数如下:
文档另存函数原型是 void SaveAs(VARIANT* FileName, VARIANT* FileFormat,VARIANT* LockComments, VARIANT* Password, VARIANT* AddToRecentFiles, VARIANT* WritePassword, VARIANT* ReadOnlyRecommended, VARIANT* EmbedTrueTypeFonts, VARIANT* SaveNativePictureFormat, VARIANT* SaveFormsData, VARIANT* SaveAsAOCELetter);
文 档 查 找 替 换 函 数 原 型 是BOOL Execute(VARIANT* FindText, VARIANT* MatchCase,VARIANT* MatchWholeWord, VARIANT* MatchWildcards, VARIANT* MatchSoundsLike, VARIANT* MatchAllWordForms, VARIANT* Forward, VARIANT* Wrap, VARIANT* Format, VARIANT* ReplaceWith, VARIANT* Replace, VARIANT* MatchKashida, VARIANT* MatchDiacritics, VARIANT* MatchAlefHamza, VARIANT* MatchControl);
文档关闭函数原型是void Quit(VARIANT* SaveChanges, VARIANT* OriginalFormat, VARIANT* RouteDocument);
3 结束语
软件设计人员了解系统可输出的各项参数,软件使用人员了解输出报告的样式和重要指标。按照软件系统开发和使用人员的不同特点,把输出报告的处理分为二个阶段,开发人员提供可选参数项和各项具体值,使用者设计最终报告模板,确定输出的数据、报告的样式,二者结合实现完美的报告输出。本文设计思想在医院临床用血管理系统软件的报告输出模块开发中得到应用,参照临床用血管理系统数据字典,医生、护士和输血科管理人员设计不同的输出模板,实现灵活的图文报告输出。
参考文献
[1] 胡伟中,吴国华,多模板复杂图文诊断报告打印的研究与实现[J].铁路计算机应用,2006, 15(11): 15-18.
[2] 余建军,黄云龙,基于Word 模板的报表控件的设计[J].计算机与现代化,2004(9):117-120.
[3] 岳亮,在VC中利用WORD生成图文报告[J].计算机编程与维护,2002(5):43-45.
[4] 梁海珍,宋玲,VC++调用WORD功能实现批量查找替换[J].计算机编程与维护,2011(13):18-20.
[5] 黄二亮,冯前进,吕庆文等,基于Word对象模型的医学图文报告设计与实现[J].医院数字化,2009,24(4):39-42.
[6] 熊瑜容,柴毅,王淑娟等,基于VC++的Word文档自动生成技术[J] .计算机时代2010年第1期, 2010(1):52-54.
基金项目:上海市教育委员会科研创新项目(编号YZ146);
作者简介:安美君,男,高级工程师,主要研究医学信息处理和康复设备控制系统。
Design and Implement of Medical Image-Text Report System Based on Template
AN Mei-jun1, WANG Shu2
(Shanghai University Of Medicine & Health Sciences,Shanghai 200093;The Information Department of Shanghai Children’s Hospital,Shanghai 200040)
Abstract:This paper describes a kind of processing method that can output medical graphic and text report flexibly,according to parameters of clinical use of blood management system. The data dictionary saves all output parameters of the software system. The word template selects the content and format of output report. The test results can be outputted by using locating and replace function of the word. Results: When programming a medical test system, there is no need to consider the output format and content of the report, which can be adjusted in the template dynamically. The research has a great application value.
Key words:Computer application technology;Word Template;Data Dictionary;Image-text Report