コード例 #1
0
        public void ShowExt1and2SubRecord(dri_phdb driSR)
        {
            short so1 = driSR.ext1.ecg12.stII;
            short so2 = driSR.ext1.ecg12.stV5;
            short so3 = driSR.ext1.ecg12.stAVL;

            string pathcsv = Path.Combine(Directory.GetCurrentDirectory(), "AS3ExportData.csv");

            string s1 = ValidateAddData("ST_II", so1, 0.01, false);

            string s2 = ValidateAddData("ST_V5", so2, 0.01, false);

            string s3 = ValidateAddData("ST_aVL", so3, 0.01, false);

            short so4  = driSR.ext2.ent.eeg_ent;
            short so5  = driSR.ext2.ent.emg_ent;
            short so6  = driSR.ext2.ent.bsr_ent;
            short so7  = driSR.ext2.eeg_bis.bis;
            short so8  = driSR.ext2.eeg_bis.sr_val;
            short so9  = driSR.ext2.eeg_bis.emg_val;
            short so10 = driSR.ext2.eeg_bis.sqi_val;

            ValidateAddData("EEG_Entropy", so4, 1, true);
            ValidateAddData("EMG_Entropy", so5, 1, true);
            ValidateAddData("BSR_Entropy", so6, 1, true);
            ValidateAddData("BIS", so7, 1, true);
            ValidateAddData("BIS_BSR", so8, 1, true);
            ValidateAddData("BIS_EMG", so9, 1, true);
            ValidateAddData("BIS_SQI", so10, 1, true);

            Console.WriteLine("ST II {0:0.0}mm ST V5 {1:0.0}mm ST aVL {2:0.0}mm", s1, s2, s3);
        }
コード例 #2
0
        public void ShowExt1and2SubRecord(dri_phdb driSR)
        {
            short so1 = driSR.ext1.ecg12.stII;
            short so2 = driSR.ext1.ecg12.stV5;
            short so3 = driSR.ext1.ecg12.stAVL;

            string pathcsv = Path.Combine(Directory.GetCurrentDirectory(), "AS3ExportData.csv");

            ValidateAddData(so1, 0.01, false);
            string s1 = ValidateDataFormatString(so1, 0.01, false);

            ValidateAddData(so2, 0.01, false);
            string s2 = ValidateDataFormatString(so2, 0.01, false);

            ValidateAddData(so3, 0.01, false);
            string s3 = ValidateDataFormatString(so3, 0.01, false);

            short so4  = driSR.ext2.ent.eeg_ent;
            short so5  = driSR.ext2.ent.emg_ent;
            short so6  = driSR.ext2.ent.bsr_ent;
            short so7  = driSR.ext2.eeg_bis.bis;
            short so8  = driSR.ext2.eeg_bis.sr_val;
            short so9  = driSR.ext2.eeg_bis.emg_val;
            short so10 = driSR.ext2.eeg_bis.sqi_val;

            ValidateAddData(so4, 1, true);
            ValidateAddData(so5, 1, true);
            ValidateAddData(so6, 1, true);
            ValidateAddData(so7, 1, true);
            ValidateAddData(so8, 1, true);
            ValidateAddData(so9, 1, true);
            ValidateAddData(so10, 1, true);

            ExportToCSVFile(pathcsv);

            Console.WriteLine("ST II {0:0.0}mm ST V5 {1:0.0}mm ST aVL {2:0.0}mm", s1, s2, s3);

            //Clear Stringbuilder member last
            m_strBuilder.Clear();

            m_transmissionstart = false;
        }
コード例 #3
0
        public void ShowBasicSubRecord(dri_phdb driSR)
        {
            short so1 = driSR.basic.ecg.hr;
            short so2 = driSR.basic.nibp.sys;
            short so3 = driSR.basic.nibp.dia;
            short so4 = driSR.basic.nibp.mean;
            short so5 = driSR.basic.SpO2.SpO2;
            short so6 = driSR.basic.co2.et;

            string s1 = ValidateDataFormatString(so1, 1, true);

            ValidateAddData(so1, 1, true);

            string s2 = ValidateDataFormatString(so2, 0.01, true);

            ValidateAddData(so2, 0.01, true);

            string s3 = ValidateDataFormatString(so3, 0.01, true);

            ValidateAddData(so3, 0.01, true);

            string s4 = ValidateDataFormatString(so4, 0.01, true);

            ValidateAddData(so4, 0.01, true);

            string s5 = ValidateDataFormatString(so5, 0.01, true);

            ValidateAddData(so5, 0.01, true);

            double et = (so6 * driSR.basic.co2.amb_press);

            ValidateAddData(et, 0.00001, true);
            string s6 = ValidateDataFormatString(et, 0.00001, true);

            // MASSIVE SPECIALK HACK
            short  wtf1 = driSR.basic.co2.fi;
            double fraction_inspired_co2 = wtf1 * driSR.basic.co2.amb_press;

            ValidateAddData(fraction_inspired_co2, 0.00001, true);

            short  wtf2         = driSR.basic.o2.et;
            double end_tidal_o2 = wtf2             //02 isnt multiplied by ambient pressure
                                  ValidateAddData(end_tidal_o2, 0.00001, true);

            // EOHACK

            short  so7  = driSR.basic.aa.et;
            short  so8  = driSR.basic.aa.fi;
            short  so9  = driSR.basic.aa.mac_sum;
            ushort so10 = driSR.basic.aa.hdr.label_info;

            ValidateAddData(so7, 0.01, false);
            ValidateAddData(so8, 0.01, false);
            ValidateAddData(so9, 0.01, false);

            string s10 = "";

            switch (so10)
            {
            case 0:
                s10 = "Unknown";
                break;

            case 1:
                s10 = "None";
                break;

            case 2:
                s10 = "HAL";
                break;

            case 3:
                s10 = "ENF";
                break;

            case 4:
                s10 = "ISO";
                break;

            case 5:
                s10 = "DES";
                break;

            case 6:
                s10 = "SEV";
                break;
            }

            m_strBuilder.Append(s10);
            m_strBuilder.Append(',');

            double so11 = driSR.basic.o2.fi;
            double so12 = driSR.basic.n2o.fi;
            double so13 = driSR.basic.n2o.et;
            double so14 = driSR.basic.co2.rr;
            double so15 = driSR.basic.t1.temp;
            double so16 = driSR.basic.t2.temp;

            double so17 = driSR.basic.p1.hr;
            double so18 = driSR.basic.p1.sys;
            double so19 = driSR.basic.p1.dia;
            double so20 = driSR.basic.p1.mean;
            double so21 = driSR.basic.p2.hr;
            double so22 = driSR.basic.p2.sys;
            double so23 = driSR.basic.p2.dia;
            double so24 = driSR.basic.p2.mean;

            double so25 = driSR.basic.flow_vol.ppeak;
            double so26 = driSR.basic.flow_vol.pplat;
            double so27 = driSR.basic.flow_vol.tv_exp;
            double so28 = driSR.basic.flow_vol.tv_insp;
            double so29 = driSR.basic.flow_vol.peep;
            double so30 = driSR.basic.flow_vol.mv_exp;
            double so31 = driSR.basic.flow_vol.compliance;
            double so32 = driSR.basic.flow_vol.rr;


            ValidateAddData(so11, 0.01, false);
            ValidateAddData(so12, 0.01, false);
            ValidateAddData(so13, 0.01, false);
            ValidateAddData(so14, 1, false);
            ValidateAddData(so15, 0.01, false);
            ValidateAddData(so16, 0.01, false);


            ValidateAddData(so17, 1, true);
            ValidateAddData(so18, 0.01, true);
            ValidateAddData(so19, 0.01, true);
            ValidateAddData(so20, 0.01, true);
            ValidateAddData(so21, 1, true);
            ValidateAddData(so22, 0.01, true);
            ValidateAddData(so23, 0.01, true);
            ValidateAddData(so24, 0.01, true);


            ValidateAddData(so25, 0.01, true);
            ValidateAddData(so26, 0.01, true);
            ValidateAddData(so27, 0.1, true);
            ValidateAddData(so28, 0.1, true);
            ValidateAddData(so29, 0.01, true);
            ValidateAddData(so30, 0.01, false);
            ValidateAddData(so31, 0.01, true);
            ValidateAddData(so32, 1, true);



            string s9  = ValidateDataFormatString(so9, 0.01, false);
            string s15 = ValidateDataFormatString(so15, 0.01, false);
            string s16 = ValidateDataFormatString(so16, 0.01, false);

            string s18 = ValidateDataFormatString(so18, 0.01, true);
            string s19 = ValidateDataFormatString(so19, 0.01, true);
            string s20 = ValidateDataFormatString(so20, 0.01, true);

            string s22 = ValidateDataFormatString(so22, 0.01, true);
            string s23 = ValidateDataFormatString(so23, 0.01, true);
            string s24 = ValidateDataFormatString(so24, 0.01, true);

            Console.WriteLine("ECG HR {0:d}/min NIBP {1:d}/{2:d}({3:d})mmHg SpO2 {4:d}% ETCO2 {5:d}mmHg", s1, s2, s3, s4, s5, s6);
            Console.WriteLine("IBP1 {0:d}/{1:d}({2:d})mmHg IBP2 {3:d}/{4:d}({5:d})mmHg MAC {6} T1 {7}°C T2 {8}°C", s18, s19, s20, s22, s23, s24, s9, s15, s16);

            m_transmissionstart = false;
        }
コード例 #4
0
        public void ReadSubRecords()
        {
            foreach (datex_record_type dx_record in RecordList)
            {
                short dxrecordmaintype = dx_record.hdr.r_maintype;

                if (dxrecordmaintype == DataConstants.DRI_MT_PHDB)
                {
                    short[] sroffArray  = { dx_record.hdr.sr_offset1, dx_record.hdr.sr_offset2, dx_record.hdr.sr_offset3, dx_record.hdr.sr_offset4, dx_record.hdr.sr_offset5, dx_record.hdr.sr_offset6, dx_record.hdr.sr_offset7, dx_record.hdr.sr_offset8 };
                    byte[]  srtypeArray = { dx_record.hdr.sr_type1, dx_record.hdr.sr_type2, dx_record.hdr.sr_type3, dx_record.hdr.sr_type4, dx_record.hdr.sr_type5, dx_record.hdr.sr_type6, dx_record.hdr.sr_type7, dx_record.hdr.sr_type8 };

                    uint     unixtime   = dx_record.hdr.r_time;
                    dri_phdb phdata_ptr = new dri_phdb();

                    WriteNumericHeaders();

                    for (int i = 0; i < 8 && (srtypeArray[i] != 0xFF); i++)
                    {
                        //if (srtypeArray[i] == DataConstants.DRI_PH_DISPL && srtypeArray[i] !=0xFF)
                        {
                            int offset = (int)sroffArray[i];

                            byte[] buffer = new byte[270];
                            for (int j = 0; j < 270; j++)
                            {
                                buffer[j] = dx_record.data[4 + j + offset];
                            }

                            GCHandle handle = GCHandle.Alloc(buffer, GCHandleType.Pinned);

                            /*int uMemlen = buffer.GetLength(0);
                             * IntPtr ptr = Marshal.AllocHGlobal(uMemlen);
                             * Marshal.Copy(buffer, 0, ptr, uMemlen);*/


                            switch (i)
                            {
                            case 0:
                                Marshal.PtrToStructure(handle.AddrOfPinnedObject(), phdata_ptr.basic);
                                //Marshal.PtrToStructure(ptr, phdata_ptr.basic);
                                break;

                            case 1:
                                Marshal.PtrToStructure(handle.AddrOfPinnedObject(), phdata_ptr.ext1);
                                //Marshal.PtrToStructure(ptr, phdata_ptr.ext1);
                                break;

                            case 2:
                                Marshal.PtrToStructure(handle.AddrOfPinnedObject(), phdata_ptr.ext2);
                                //Marshal.PtrToStructure(ptr, phdata_ptr.ext2);
                                break;

                            case 3:
                                Marshal.PtrToStructure(handle.AddrOfPinnedObject(), phdata_ptr.ext3);
                                //Marshal.PtrToStructure(ptr, phdata_ptr.ext3);
                                break;
                            }

                            handle.Free();
                            //Marshal.FreeHGlobal(ptr);
                        }
                    }
                    // Unix timestamp is seconds past epoch
                    DateTime dtDateTime = new DateTime(1970, 1, 1, 0, 0, 0, 0);
                    //dtDateTime = dtDateTime.AddSeconds(unixtime).ToLocalTime();
                    dtDateTime = dtDateTime.AddSeconds(unixtime);

                    Console.WriteLine();
                    Console.WriteLine("Time:{0}", dtDateTime.ToString());
                    m_strBuilder.Append(dtDateTime.ToShortDateString());
                    m_strBuilder.Append(',');
                    m_strBuilder.Append(dtDateTime.ToLongTimeString());
                    m_strBuilder.Append(',');

                    ShowBasicSubRecord(phdata_ptr);
                    ShowExt1and2SubRecord(phdata_ptr);
                }
            }
        }
コード例 #5
0
        public void ShowBasicSubRecord(dri_phdb driSR)
        {
            short so1 = driSR.basic.ecg.hr;
            short so2 = driSR.basic.nibp.sys;
            short so3 = driSR.basic.nibp.dia;
            short so4 = driSR.basic.nibp.mean;
            short so5 = driSR.basic.SpO2.SpO2;
            short so6 = driSR.basic.co2.et;

            string s1 = ValidateAddData("ECG_HR", so1, 1, true);

            string s2 = ValidateAddData("NIBP_Systolic", so2, 0.01, true);

            string s3 = ValidateAddData("NIBP_Diastolic", so3, 0.01, true);

            string s4 = ValidateAddData("NIBP_Mean", so4, 0.01, true);

            string s5 = ValidateAddData("SpO2", so5, 0.01, true);

            double et = (so6 * driSR.basic.co2.amb_press);
            string s6 = ValidateAddData("ET_CO2", et, 0.00001, true);

            short  so7  = driSR.basic.aa.et;
            short  so8  = driSR.basic.aa.fi;
            short  so9  = driSR.basic.aa.mac_sum;
            ushort so10 = driSR.basic.aa.hdr.label_info;

            ValidateAddData("AA_ET", so7, 0.01, false);
            ValidateAddData("AA_FI", so8, 0.01, false);
            string s9 = ValidateAddData("AA_MAC_SUM", so9, 0.01, false);

            string s10 = "";

            switch (so10)
            {
            case 0:
                s10 = "Unknown";
                break;

            case 1:
                s10 = "None";
                break;

            case 2:
                s10 = "HAL";
                break;

            case 3:
                s10 = "ENF";
                break;

            case 4:
                s10 = "ISO";
                break;

            case 5:
                s10 = "DES";
                break;

            case 6:
                s10 = "SEV";
                break;
            }

            AddDataString("Agent_AA", s10);

            double so11 = driSR.basic.o2.fi;
            double so12 = driSR.basic.n2o.fi;
            double so13 = driSR.basic.n2o.et;
            double so14 = driSR.basic.co2.rr;
            double so15 = driSR.basic.t1.temp;
            double so16 = driSR.basic.t2.temp;

            double so17 = driSR.basic.p1.hr;
            double so18 = driSR.basic.p1.sys;
            double so19 = driSR.basic.p1.dia;
            double so20 = driSR.basic.p1.mean;
            double so21 = driSR.basic.p2.hr;
            double so22 = driSR.basic.p2.sys;
            double so23 = driSR.basic.p2.dia;
            double so24 = driSR.basic.p2.mean;

            double so25 = driSR.basic.flow_vol.ppeak;
            double so26 = driSR.basic.flow_vol.pplat;
            double so27 = driSR.basic.flow_vol.tv_exp;
            double so28 = driSR.basic.flow_vol.tv_insp;
            double so29 = driSR.basic.flow_vol.peep;
            double so30 = driSR.basic.flow_vol.mv_exp;
            double so31 = driSR.basic.flow_vol.compliance;
            double so32 = driSR.basic.flow_vol.rr;


            ValidateAddData("O2_FI", so11, 0.01, false);
            ValidateAddData("N2O_FI", so12, 0.01, false);
            ValidateAddData("N2O_ET", so13, 0.01, false);
            ValidateAddData("CO2_RR", so14, 1, false);
            string s15 = ValidateAddData("T1_Temp", so15, 0.01, false);
            string s16 = ValidateAddData("T2_Temp", so16, 0.01, false);


            ValidateAddData("P1_HR", so17, 1, true);
            string s18 = ValidateAddData("P1_Systolic", so18, 0.01, true);
            string s19 = ValidateAddData("P1_Disatolic", so19, 0.01, true);
            string s20 = ValidateAddData("P1_Mean", so20, 0.01, true);

            ValidateAddData("P2_HR", so21, 1, true);
            string s22 = ValidateAddData("P2_Systolic", so22, 0.01, true);
            string s23 = ValidateAddData("P2_Diastolic", so23, 0.01, true);
            string s24 = ValidateAddData("P2_Mean", so24, 0.01, true);


            ValidateAddData("PPeak", so25, 0.01, true);
            ValidateAddData("PPlat", so26, 0.01, true);
            ValidateAddData("TV_Exp", so27, 0.1, true);
            ValidateAddData("TV_Insp", so28, 0.1, true);
            ValidateAddData("PEEP", so29, 0.01, true);
            ValidateAddData("MV_Exp", so30, 0.01, false);
            ValidateAddData("Compliance", so31, 0.01, true);
            ValidateAddData("RR", so32, 1, true);

            Console.WriteLine("ECG HR {0:d}/min NIBP {1:d}/{2:d}({3:d})mmHg SpO2 {4:d}% ETCO2 {5:d}mmHg", s1, s2, s3, s4, s5, s6);
            Console.WriteLine("IBP1 {0:d}/{1:d}({2:d})mmHg IBP2 {3:d}/{4:d}({5:d})mmHg MAC {6} T1 {7}°C T2 {8}°C", s18, s19, s20, s22, s23, s24, s9, s15, s16);
        }
コード例 #6
0
        public void ReadSubRecords()
        {
            foreach (datex_record_type dx_record in RecordList)
            {
                short dxrecordmaintype = dx_record.hdr.r_maintype;

                if (dxrecordmaintype == DataConstants.DRI_MT_PHDB)
                {
                    short[] sroffArray  = { dx_record.hdr.sr_offset1, dx_record.hdr.sr_offset2, dx_record.hdr.sr_offset3, dx_record.hdr.sr_offset4, dx_record.hdr.sr_offset5, dx_record.hdr.sr_offset6, dx_record.hdr.sr_offset7, dx_record.hdr.sr_offset8 };
                    byte[]  srtypeArray = { dx_record.hdr.sr_type1, dx_record.hdr.sr_type2, dx_record.hdr.sr_type3, dx_record.hdr.sr_type4, dx_record.hdr.sr_type5, dx_record.hdr.sr_type6, dx_record.hdr.sr_type7, dx_record.hdr.sr_type8 };

                    uint     unixtime   = dx_record.hdr.r_time;
                    dri_phdb phdata_ptr = new dri_phdb();

                    for (int i = 0; i < 8 && (srtypeArray[i] != 0xFF); i++)
                    {
                        //if (srtypeArray[i] == DataConstants.DRI_PH_DISPL && srtypeArray[i] !=0xFF)
                        {
                            int offset = (int)sroffArray[i];

                            byte[] buffer = new byte[270];
                            for (int j = 0; j < 270; j++)
                            {
                                buffer[j] = dx_record.data[4 + j + offset];
                            }

                            GCHandle handle = GCHandle.Alloc(buffer, GCHandleType.Pinned);

                            switch (i)
                            {
                            case 0:
                                Marshal.PtrToStructure(handle.AddrOfPinnedObject(), phdata_ptr.basic);
                                break;

                            case 1:
                                Marshal.PtrToStructure(handle.AddrOfPinnedObject(), phdata_ptr.ext1);
                                break;

                            case 2:
                                Marshal.PtrToStructure(handle.AddrOfPinnedObject(), phdata_ptr.ext2);
                                break;

                            case 3:
                                Marshal.PtrToStructure(handle.AddrOfPinnedObject(), phdata_ptr.ext3);
                                break;
                            }

                            handle.Free();
                        }
                    }

                    // Unix timestamp is seconds past epoch
                    DateTime dtDateTime = new DateTime(1970, 1, 1, 0, 0, 0, 0);
                    //dtDateTime = dtDateTime.AddSeconds(unixtime).ToLocalTime();
                    dtDateTime     = dtDateTime.AddSeconds(unixtime);
                    m_strTimestamp = dtDateTime.ToString("G", DateTimeFormatInfo.InvariantInfo);

                    Console.WriteLine();
                    Console.WriteLine("Time:{0}", dtDateTime.ToString());

                    ShowBasicSubRecord(phdata_ptr);
                    ShowExt1and2SubRecord(phdata_ptr);

                    if (m_dataexportset == 2)
                    {
                        ExportNumValListToJSON();
                    }
                    SaveNumericValueListRows();
                }
            }
        }