基于C#开发电子病历系统体温曲线图设计
解决的方法是把Graphics实例默认的坐标表示为相对坐标,即坐标是相对于窗口的左上角,而不是文档开头的左上角,把绝对坐标转换为相对坐标。这里用图3说明这一转换。
本文引用地址:http://www.amcfsurvey.com/article/164954.htm
实线矩形标记了屏幕区域的边框和整个文档的边框。虚线矩形标记了试图要绘制的矩形和椭圆。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#绘制电子病历系统体温图的技术,试图对完善电子病历系统做有益的尝试。电子病历系统相关的研究内容将会不断发展和深入,而电子病历的技术构架和软件流程也将会越来越成熟。
评论