admin 管理员组文章数量: 1086019
2024年4月20日发(作者:html网站页面设计代码模版)
第24卷第5期
2017年10月
莆田学院学报
允燥怎则灶葬造燥枣孕怎贼蚤葬灶哉灶蚤增藻则泽蚤贼赠
中图分类号:TP319;R197.323.1
Vol.24No.5
Oct.2017
文献标识码:A文章编号:1672-4143(2017)05-0041-04
基于RichView的电子病历编辑器的开发
陈建辉
(莆田学院信息工程学院,福建莆田351100)
摘
分析了电子病历编辑器的功能需求和系统架构,利用和封装RichView组件,实现电子病历的打开、编
要:
辑、保存及个性化打印等功能。该编辑器提供源码二次开发平台,便于系统的扩展,进而提供更好的适应性。根据
目前在中小医院的使用情况,该电子病历编辑器运行安全可靠。
电子病历;RichView;编辑器;组件
关键词:
DevelopmentofElectronicMedicalRecord
EditorBasedonRichView
CHENJianhui
(SchoolofInformationEngineering,PutianUniversity,PutianFujian351100,China)
Abstract:
Thispaperintroducedthefunc
usingandencapsulatingRichViewcomponents,itimplementedtheelectronicmedicalrecordswiththefunctionof
openning,editing,etheeditorprovidedtheredevelopmentplatformforthe
sourcecode,itwaseasytoextendthesystem,ingtotheusageofsmalland
medium-sizedhospitals,thiseditorhadsafeandreliableoperation.
Keywords:
electronicmedicalrecord;RichView;editor;component
的医学编辑器
[6-7]
等。这些编辑器基本上实现了富
文本编辑功能如特殊字符、表格、图像随机插入,
不仅能减轻医护工作者的病历录入工作量,而且
减少了因手工书写而引起的各种问题
,不过以上
编辑器所依赖的组件一般不提供源码
,不利于二
次开发,因此很有必要开发基于RichView的电子
病历编辑器。
0引言
电子病历系统是指医疗机构内部支持电子病
历信息的采集、存储、访问和在线帮助,并围绕提
高医疗质量、保障医疗安全、提高医疗效率而提供
信息处理和智能化服务功能的计算机信息系统
[1]
。
电子病历管理在医院信息管理中有重要作用,是
而电子病历编
维系医院与病人信息的桥梁与纽带。
因为电子病历
辑器是电子病历系统的核心和难点,
系统开发80%以上的技术难点集中在电子病历编
辑器。目前电子病历编辑器的实现有基于Word的
电子病历编辑器
[2]
、基于Zen的电子病历编辑器
[3]
、
基于AbiWord的电子病历编辑器
[4-5]
、基于XML
收稿日期:2017-09-03
1电子病历编辑器的功能需求
电子病历编辑器类似于Word的富文本编辑
器,具有所见即所得的编辑效果,它减少了对于文
字、段落、表格、图片等的编辑需求,而强调对模板
设计的需求。因此所设计的电子病历编辑器不仅
基金项目:福建省教育厅资助省属高校专项课题(JK2015042)
作者简介:陈建辉(1974-),男,福建莆田人,副教授,硕士,主要从事医疗信息化、数据挖掘研究。
42
莆田学院学报
2017年10月
要涵盖基本的病历书写功能,
还要包括电子病历
并
可扩展应页面设置、病历模板制作等辅助功能,
用于检查检验报告模板的编辑
[8]
,同时具有良好的
规范性、实用性、安全性和扩展性。
按照卫生部《电子病历系统功能规范(试行)》
用户数量,为了有利于所开发的电子病历编辑器的
使用和推广,笔者所开发的电子病历编辑器的支撑
环境采用Windows操作系统,以面向对象的程序开
发语言Delphi来编写开发。电子病历编辑器的系统
架构
[9]
如图1所示,整个架构以RichView编辑组件
的要求,对现实电子病历进行分析参考其他电子
病历系统功能,
编辑器的
基本功能需求如下:
(1)支持富文本编辑,能够实现类Word“所见
即所得”的编辑形式,即呈现的电子病历与打印出
的电子病历相一致
。
(2)支持自定义模板的电子病历的编辑,不同
医院的电子病历有一定的差距,要求支持医院所有
科室所有种类的自定义病历类型的编辑与打印。
(3)支持电子病历的导入导出
,支持电子病历
内容导出RTF格式,模版导入需要保证电子病历
结构的准确呈现。
(4)支持个性化打印功能,
支持全部文档打
印、当前页面打印、续打、选择打印等功能。
2RichView
RichView是一套Delphi/C++Builder组件,主
要用于显示、编辑和打印超文本文档。该组件支持
字体、文本背景颜色,自定义下拉列表等特征属
性。RichView所创建的文档不仅可以包含图片、图
像
、
表格等常见的编辑元素
,而且可嵌入任意的
Delphi控件,具有段落排列、项目符号编号、页面
设置、缩进样式、背景图片等排版格式,支持打印
预览、RTF输入和输出
、
HTML输出等
。
RichView
由9个组件组成:TRVStyle、TRichView、
TRichViewEdit、TDBRichView、TDBRichViewEdit、
TRVPrint、TRVPrintPreview、TRVReportHelper和
TRVOfficeConverter,使用TRichView富文本控
件,
可以
创建一个编辑器能够导出HTML和docx
格式的文档。RichView程序包完全由Delphi所编
写,而不需借助外部的DLL或者ActiveX文件,因
此在Delphi中使用RichView非常方便
,可
以轻松
实现图文混排,满足电子病历编辑器的功能需求。
3基于RichView的电子病历编辑器的设计
3.1电子病历编辑器的系统架构
鉴于目前我国使用Windows操作系统的庞大
为中心,编辑框架类往电子病历编辑器添加文本
域、表格、图像并设置格式等
,事件模块响
应电子病
历编辑器的消息及点击事件,如插入公式、编码输
入等,文档排版模块进行页面设置等,文档打开存
储模块负责将文档载入到电子病历编辑器和保存
数据,文档导入导出模块将外面数据导入到文档,
或将文档数据导出。
编辑框架类
RichView
编辑组件
事件模块
文档排版文档打开存储文档导入导出
图1电子病历编辑器系统架构
3.2编辑框架类
编辑功能是电子病历编辑器的核心功能之
一,用户通过编辑功能可以制作电子病历模板和
录入电子病历,以满足不同医疗机构或者科室对
电子病历的个性化需求。通过对电子病历的逻辑
结构进行细致分析,把常用的编辑组件封装成框
架类,其界面如图2所示,封装代码部分如下。
TfrRVCooBar=class(TFrame)
RVAControlPanel1:TRVAControlPanel;
pmSpacing:TPopupMenu;
SingleLineSpacing1:TMenuItem;
N15LineSpacing1:TMenuItem;
DoubleLineSpacing1:TMenuItem;
RVPrint1:TRVPrint;
pmFakeDropDown:TPopupMenu;
pmRichView:TPopupMenu;
actlRV:TActionList;
rvActionAlignLeft1:TrvActionAlignLeft;
rvActionAlignRight1:TrvActionAlignRight;
rvActionAlignCenter:TrvActionAlignCenter;
rvActionAlignJustify1:TrvActionAlignJustify;
rvActionInsertTable1:TrvActionInsertTable;
第5期
陈建辉:基于RichView的电子病历编辑器的开发43
图2编辑框架类界面
//省略大部分定义...
end;
m_itFomula:=RVRtEditFomula;
//常用公式
m_extStyleChanged:=RVCurTextStyle
Changed;
m_extStyleChanged:=RVCur
TextStyleChanged;
m_extStyleChanged:=RVCur
TextStyleChanged;
//自定义响应事件
FOnRichViewRefresh:=OnRichViewRefresh;
rtRichViewRefresh(Self,'',C_RV_Change_Height);
end;
3.3事件模块
事件模块,负责处理RichView编辑器的窗体
消息,实现事件响应机制。在编辑框架类中定义了
TOnRichViewRefresh自定义事件和SetRichView
方法
,
SetRichView方法将键盘和鼠标的所有事件
相对应地写入,当编辑器在接收到用户的操作消
息时,系统通过回调函数自动执行该映射关系来
完成对某个事件的响应动作,而各个编辑组件的
事件直接由TrvAction类实现,SetRichView方法
主要代码如下。
hView(RichView:Tsdl
Richview;
OnRichViewRefresh:TOnRichViewRefresh);
begin
m_table:=nil;
m_isRtTableMouseUp:=False;
m_RichView:=RichView;
//RichViewMouseUp为自定义鼠标按键被松开时发生
的事件,实现左、右键等鼠标事件
ifAssigned(m_eUp)=Falsethen
m_eUp:=RichViewMouseUp;
//改变样式触发事件
ifAssigned(m_bleMouseUp)=False
then
m_bleMouseUp:=RichViewRtTable
MouseUp;
//当前编辑器改变
ifAssigned(m_geActiveEditor)=False
then
m_geActiveEditor:=RVChangeActive
Editor;
//公式编辑器触发
3.4公式编辑器
医学中要使用的公式有许多,且一些特定的
医学公式无法在文档中编写
,为了解决公式的编
辑与数据存储问题,笔者通过在电子病历中插入
图像来解决。在电子病历编辑器中点击“插入公
式”会弹出如图3所示的界面,公式类型可以根据
医院的需要增加,选择相应公式类型填写相应数
据后,点击“确定”会触发上面介绍的事件模块中
m_Fomula('HF_'+IntToStr(AppPa
以下是
描绘公ID),sValue,nil,true)方法,
图3插入公式界面
44
莆田学
式文本和线的部分代码
:
//R1公式左侧生成文本
DrawText(,sText,-1,R1,DT_VCENTERor
DT_SINGLELINEorDT_CALCRECT);
//画线
DrawLine(Canvas,,+iTmp,R2.
Right,+iTmp);
3.5病历个性化打印
在打印电子病历时,除了全部文档打印
、当前
页打印等,各个医院在实际使用过程中还会出现
各种打印场景,如续打、选择打印等个性化打印功
能。个性化打印实现的主要原理是在最终发给打
印画布之前,处理要打印的内容(画布上的图),即
获取要打印的起始行位置,将此位置之前的所有
内容都“涂”为白色,因此对TSRichViewEdit组件
进行封装,改写PaintPage方法,实现个性化打印,
其代码部分如下
。
PageRect:=ScaleRectOut(PageRect,ScaleX,ScaleY);
OffsetRect(PageRect,OffsetX,OffsetY);
:=bsSolid;
ifSequelPageEnd<0then
begin
tmp:=PaintRect;
ifBottomSequethen
begin
//1:顶部至于页面初始横线
:=round(SequelPos/(FViewProp
ercent*0.01))
+;
end
else
begin
//2:顶部至于页面初始横线
:=round(SequelPos/(FViewProperty.
FZoomPercent*0.01))
+;
end;
//把续打前面(或底部)部分清除
ct(tmp);
end
4结语
笔者介绍了自主开发的基于RichView的电
院学报
2017年10月
子病历编辑器的系统架构及解决方案
,实现了电
子病历模板设计、电子病历书写等,且与其他医疗
信息系统集成应用(如图4所示),调用LIS、PACS
系统,完成检查检验报告的编辑处理与阅读,而且
已经成功地在多家中小医院运行,切合中小医院
实际。但整个编辑器还存在一些缺陷,如病历书写
痕迹保留和注解功能等。
图4电子病历编辑器集成应用
参考文献:
[
1]卫生部.电子病历基本规范(试行
)
[EB/OL].(2011-01-04)
[2017-07-01]./mohyzs/s3585/201012
/.
[2]陈建辉.基于Word编辑器的电子病历系统的设计与实
现[J].莆田学院学报,2014,21(2):50-54.
[3]李光明,王芳,郭文强.基于ZEN的电子病历编辑器的
开发[J].陕西科技大学学报,2009,27(2):88-91.
[4]邓健.基于AbiWord的电子病历编辑器的研究与实现
[D].西安:西北大学信息科学与技术学院,2015.
[5]熊志刚,尚浩.基于AbiWord的结构化电子病历系统研
究[J].中国数字医学,2017,12(2):45-47.
[6]王蒙.基于XML的医学编辑器系统的研究与实现[D].
长沙:中南大学生物医学工程学院,2012.
[7]肖强.基于XML的半结构化电子病历录入方法研究[J].
中国数字医学,2015,10(1):43-44.
[8]杨飞.一种电子病历报告模板编辑系统的设计与实现
[D].武汉:华中科技大学软件学院,2014.
[9]茅伟强.基于结构化电子病历的临床路径系统设计应用
[J].信息系统工程,2017(1):80-81.
[责任编辑林锋]
版权声明:本文标题:基于RichView的电子病历编辑器的开发 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://roclinux.cn/b/1713558942a640711.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论