• 最近开发的ECG项目


    最近参与公司开发了一款读取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不适用其它产品 这也是行业所欠缺的吧 我觉得 要是能统一一下就好了 共享链接

    https://files.cnblogs.com/wangnannan/GifDll.rar

     https://files.cnblogs.com/wangnannan/FilterFile.rar

      

  • 相关阅读:
    Newtonsoft.Json.SerializeObject 转换参数
    EntityFramework Code First 特性
    删除SVN
    C# 数据库连接字符串
    javascript 计算后 无聊的小数点处理
    python index 自己实现
    springcloud 网关过滤器Zuul Filter
    Spring Cloud Feign服务通信与负载均衡机制
    Spring Cloid Ribbon服务的通信与负载均衡搭建
    spring-cloud注册中心集群
  • 原文地址:https://www.cnblogs.com/wangnannan/p/wangnannan.html
Copyright © 2020-2023  润新知