电子病历(Electronic Medical Record,EMR)体系是一个数字技能、核算机技能、通讯技能、软件工程、图形图像归纳技能等多学科的高新科技项目。
其完好材料、数据处理、网络传输、医治援助、统计剖析等均是纸质病历无法比拟的。
体温是电子病历体系中一个重要的数据,比方某患者体温升高能够让临床医师知道该患者有发热的症状。在电子病历体系中,体温单所针对的用户是医院的护理。护理每天记载患者的体温等各项信息,录入到数据库中,体系主动生成电子体温单,并制作成曲线图。体温曲线图直观地显现了患者的体温等相关数据,这些数据与有关疾病和医治的常识相结合,可作为进一步确诊及确认医治计划的根底。
笔者参加开发的电子病历体系依据某大型医院的实践需求,在.NET平台下全程选用C#言语开发完结。本文侧重介绍电子病历体系中体温曲线图的规划和完结。
1 电子病历体系首要功用
本体系依据医院的实践需求,最首要的意图是收集患者的数据,使之能为临床医师供给所需求的确诊和决议计划信息,更进一步的意图是这些信息能够用于临床科研。体系首要功用如图1所示。
2 体温曲线图的规划与完结
2.1 体温表的生成
在电子病历体系中,每个来院就诊的病患在医院就诊期间会发生一个病历号,这是标志患者的确认码,通常在数据库体系中也作为专一的对应码和关键字。患者人院后,护理对患者进行体温、脉息、呼吸等各个方面的检测,将这些数据录入到电子病历体系中,体系则主动生成体温单。
在患者的体温单中,需求记载并剖析患者的体温改换状况。体温单信息的“体温”、“脉息”、“呼吸”这三项信息是要每隔4个小时记载1次,分别在4时、8时、12时、16时、20时、24时这几个时刻段。而“大便次数”、“小便次数或量”、“摄人量”、“排出量”、“血压”、“体重”等信息是1天记载1次。依据体温单信息,以1天为1个单位,画出1天内患者在各个时刻段的“体温”、“脉息”、“呼吸”的曲线改变状况,以及记载的“大便次数”、“小便次数或量”、“摄入量”、“排出量”、“血压”、“体重”等信息。整个体温图1次只显现7天的状况。在体温图顶用坐标以及曲线描绘患者体温的接连改变状况,直观地满意了护理对患者的体温、呼吸、脉息等信息的录入和查询的需求。图2是体温单显现界面。
2.2 体温图的制作
体温图是依据体温单的数据主动生成的。因为体温图每次只显现患者7天的体温改变状况,所以规划了翻页的功用,对住院时刻久的患者经过翻页每次越过7天,保证患者的体温信息完好的显现。
2.2.1 C#的GDI+绘图
体温图的制作由.NET基类集组成的GDI+完结,这些基类可用于在屏幕上完结定制绘图,能把适宜的指令发送到图形设备的驱动程序上,保证在显现器屏幕上显现正确的输出。
在GDI中,辨认输出设备的办法是运用目标设备环境(DC)。该目标存储特定设备的信息,并能把GDI API函数调用转化为要发送给该设备的指令。完结画图的功用要运用到GDI+画图技能。经过重写Form类中的OnPaint(PaintEventArgs e)履行画图操作。
在OnPaint()中,首要从PaintEventArgs中引证Graphics目标,制作图形。最终调用基类的OnPaint()办法。
在应用程序榜首次发动,窗口榜首次显现出来时,也调用了OnPaint(),所以不需求在结构函数中仿制绘图代码。
因为整个体温图比较大,而显现窗口定为800×600,为了能完好显现体温图文档,需求在文档超出窗口时,告诉窗口在右侧呈现翻滚条。为此,把整个文档区域定为(800,1 886)像素,并在窗体规划器的特点中把AutoScroll特点设置为True。这样,在体温图超越窗口时主动呈现翻滚条。
2.2.2 肯定坐标到相对坐标的改换
在一般的绘图代码中,因为所制作的图形区域一般不超越窗口的巨细,所以不需求特别的留意。Graphics实例在默许状况下把坐标解释为是相关于窗口的,它并不知道翻滚条的状况。当用户滑动翻滚条时,Windows没有要求应用程序从头制作现已显现在屏幕中的内容。Windows只指出屏幕上现在显现的内容能够滑润的移动,以匹配翻滚条的方位。关于多出来的文档部分,在应用程序榜首次显现时,没有制作这部分窗口,因为在翻滚窗口前,这部分在窗口区域的外部。这表明Windows要求ScrollShapes应用程序制作这个区域。它将引发Paint事情,把这个区域作为剪切的矩形,在窗口中和本来的图形一同显现出来,这样会呈现一个窗口中有多个图形堆叠,形成图形的紊乱。
处理的办法是把Graphics实例默许的坐标表明为相对坐标,即坐标是相关于窗口的左上角,而不是文档开始的左上角,把肯定坐标转化为相对坐标。这儿用图3阐明这一转化。
实线矩形标记了屏幕区域的边框和整个文档的边框。虚线矩形标记了企图要制作的矩形和椭圆。P标记要制作的某个随意点。在调用绘图办法时,供给Graphics实例和从A点到P点的矢量,整个矢量表明为一个Ponit实例。而实践上需求的是从点B到点P的矢量。问题是,这儿只知道从A点到P点的矢量,这是P相关于文档左上角的坐标,而要在文档的P点绘图。别的还知道从A点到B点的矢量,这是翻滚的距离,它储存在Form类的一个特点AutoScrollPosition中。要知道从B点到P点的矢量只需求进行矢量相减即可。Graphics类的TranslateTransform办法能够进行这些矢量的核算。这儿给它传送水平缓笔直坐标,表明窗口驱谴、与的左上角相关于文档的左上角的矢量(AutoScrollPosition特点,它是图中从A到B的矢量),然后Graphics设备考虑窗口区域相关于文档区域的方位,处理这些坐标。只要在绘图代码中参加以下句子:g.TranslateTransform(this.AutoScrollPositiort.X,this.AutoScrollPosition.Y);即可处理坐标转化的问题。
2.2.3 体温图的制作技能
体温图的制作依据体温单中患者的相关信息,运用才C#的GDI+能够制作出相应的体温曲线图。在程序中首要进行肯定坐标和相对坐标的改换,然后用Pen类界说画笔,用Brush类界说画刷色彩,关于需求填充的当地用画刷进行填充,再调用Graphics类的DrawLine办法画出所需的线条。在DrawLine办法中,需求供给画笔类型,线段起点和结尾坐标等参数。
体温图初始化之后,依据从体温表传递的患者编号作为体温图中的全局变量,对数据库进行查询,并把查询成果转化为坐标,传递给画图办法DrawLine和FillEllipse,画出图形。图4是一张体温图显现界面。
2.2.4 体温图中翻页的完结
因为体温图每次只显现患者1周的体温改换信息,要显现1周之前的体温信息,能够运用翻页功用。完结翻页功用首要运用在读取数据时运用到的Read()办法的特性。经过Read()办法在读取数据的一起把当时的指针向下移动1位。开始它坐落数据集的榜首行之前,因而榜首次调用Read()将把指针置于榜首行上,使它成为当时行。跟着每次调用Read()导致指针向下移动,依照从上至下的次第获取数据集行。代码如下:
其间变量n为全局变量,由翻页按钮对其进行赋值。以当时的变量n减1乘7为所需越过的距离数,以日期为单位,对数据会集的日期进行挑选,选出这一周的日期储存到数组array中。
3 结 语
电子病历是医院信息化发展的必然趋势。依据HL7的标准化要求,当时国内电子病历的研讨还很不完善,要拟定出比较完善的习惯国内医院运用的电子病历原型体系还需求更深化的研讨。本文讨论运用C#制作电子病历体系体温图的技能,企图对完善电子病历体系做有利的测验。电子病历体系相关的研讨内容将会不断发展和深化,而电子病历的技能构架和软件流程也将会越来越老练。