最近参与公司开发了一款读取ECG心电接口程序
原理就是通过心电设备读取患者的心电数据 并生成ECG文件 然后通过ECG客户端程序读取ECG文件 并解析转换成图片 上传至服务器
下边是客户端程序截图 客户端配发给个乡镇诊所 主要负责采集患者的心电数据 并压缩上传服务器 这样异地的医生通过登录心电平台 能够及时的对患者的病情做出诊疗 大致开发的时候是这个设想
医生登录服务端
心电盒设备
心电盒可以读取患者的心电数据 并生成ECG文件
但由于心电盒这种设备磁盘读取非常耗电 所以解析文件都是把文件拷贝到本地磁盘进行解析操作
由于项目是BS的 参考很多项目 ECG多数都是显示都是CS程序中 BS必须转成图片才可以 所以本地程序把ECG文件转换成了GIF图片 和滤波文件(滤波文件只能CS程序查看 这里调用的是ECGVIEW) 并压缩成BYTE[]流 通过WCF的方式
上传到服务端预览
患者的数据也是通过客户端上传过来的
读取心电盒数据的读取和读取U盘数据一样 操作很简单
//读取U盘ECG文件 并序列化为流
protected override void WndProc(ref Message m)
{
try
{
if (m.Msg == WM_DEVICECHANGE)
{
switch (m.WParam.ToInt32())
{
case WM_DEVICECHANGE:
break;
case DBT_DEVICEARRIVAL://U盘插入 bool result = false;
DriveInfo[] s = DriveInfo.GetDrives();
foreach (DriveInfo drive in s)
{
if (drive.DriveType == DriveType.Removable)
{
string path = Path.Combine(drive.Name.ToString(), "CCSDSM.ECG");
if (File.Exists(path))
{
result = true;
break;
}
}
} if (!result)
{
return;
}
if (this.WindowState == FormWindowState.Minimized)
{
this.Visible = true;//弹出MainForm this.WindowState = FormWindowState.Normal;//最大化 } if (!setRepeatOpenForm("frmMain"))
{
_frmBaseInfo = new frmMain();
_frmBaseInfo.Show(dockPanel1);
} if (DialogResult.OK == MessageBox.Show("发现ECG心电数据,是否进行上传?", "提示", MessageBoxButtons.OKCancel, MessageBoxIcon.Question))
{ _frmBaseInfo.btnReadXD.Enabled = true;
object t=null;
EventArgs e=new EventArgs ();
_frmBaseInfo.btnReadXD_Click(t, e);
}
else
{
_frmBaseInfo.btnReadXD.Enabled = false;
} break;
case DBT_CONFIGCHANGECANCELED:
break;
case DBT_CONFIGCHANGED:
break;
case DBT_CUSTOMEVENT:
break;
case DBT_DEVICEQUERYREMOVE:
break;
case DBT_DEVICEQUERYREMOVEFAILED:
break;
case DBT_DEVICEREMOVECOMPLETE: //U盘卸载
break;
case DBT_DEVICEREMOVEPENDING:
break;
case DBT_DEVICETYPESPECIFIC:
break;
case DBT_DEVNODES_CHANGED:
break;
case DBT_QUERYCHANGECONFIG:
break;
case DBT_USERDEFINED:
break;
default:
break;
}
}
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
base.WndProc(ref m);
}
ecg解析和滤波文件的生成用的是这两个DLL dll应该是用delphi开的 如果有的朋友能给反编译出代码 记得共享一下哈
由于每种心电盒调用的DLL不一样 所以这种DLL不适用其它产品 这也是行业所欠缺的吧 我觉得 要是能统一一下就好了 共享链接