利用C#开发电子病历系统体温曲线图
时间:01-14
来源:互联网
点击:
电子病历(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说明这一转换。
体温是电子病历系统中一个重要的数据,比如某病人体温升高可以让临床医生知道该病人有发热的症状。在电子病历系统中,体温单所针对的用户是医院的护士。护士每天记录病人的体温等各项信息,录入到数据库中,系统自动生成电子体温单,并绘制成曲线图。体温曲线图直观地显示了病人的体温等相关数据,这些数据与有关疾病和治疗的知识相结合,可作为进一步诊断及确定治疗方案的基础。
笔者参与开发的电子病历系统根据某大型医院的实际需求,在.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说明这一转换。
- 基于中颖SH79F164单片机的电子血压计应用(07-01)
- 医疗电子发展方向(04-17)
- 世界首个固态量子处理器问世(07-13)
- 医疗电子技术大会折射行业发展方向(04-18)
- 医疗电子:梦想与现实的巨大鸿沟(07-16)
- “聪明的药丸”(07-20)