コード例 #1
0
        private static int SaveToSmallPict(string sSmallPictFileName, Gen2_Struct ThisGen2, ref string sErrString)
        {
            int iResult = MyData.iErr_UnknowErr;

            sErrString = "";
            try
            {
                // if File exist,delete it.
                if (File.Exists(sSmallPictFileName))
                {
                    File.Delete(sSmallPictFileName);
                }

                // Create Big Picture
                mod_ShowPict PB = new mod_ShowPict();
                PB.pGen2          = ThisGen2;
                PB.DisplayMode    = MyData.DisplayMode_Yello;
                PB.PictBrightness = 0;
                PB.PictContract   = 0;

                PictureBox pbox = new PictureBox();
                pbox.Width  = 700;
                pbox.Height = 700;
                PB.Gen2ToData();
                PB.Gen2ToPict();

                // 缩小保存
                Image    img    = PB.BM;
                int      width  = 60;
                Image    newImg = new Bitmap(width, img.Height * width / img.Width);
                Graphics g      = Graphics.FromImage(newImg);
                g.DrawImage(img, 0, 0, width, img.Height * width / img.Width);
                newImg.Save(sSmallPictFileName);
                iResult    = MyData.iErr_Succ;
                sErrString = "";
            }
            catch (Exception ex)
            {
                iResult    = MyData.iErr_Exception;
                sErrString = "生成索引图时出现意外错误:" + ex.Message;
            }

            return(iResult);
        }
コード例 #2
0
        const double PI_360_Div = PI * 2 / 360.0;    // 细分每一度的圆周值

        // 对当前的gen2记录进行检查
        public static int FindTube(ref Gen2_Struct ThisGen2, ref int iRingNum, ref string sErrString)
        {
            int iResult = iErr_UnknowErr;
            int i = 0, j = 0;

            double[,] BW_Pict  = new double[ThisGen2.ampplot_s.GetUpperBound(0) + 1, ThisGen2.ampplot_s.GetUpperBound(1) + 1];
            double[,] RingMark = new double[ThisGen2.m_NData, MyData.iBinaryzationLineNum];                                       // 保存有值的点:射线上总的扫描点数, 观察多少条线
            int[]         RingMarkTotal = new int[ThisGen2.m_NData];                                                              // 记录每个环有多少条线是有值的
            Ring_Struct[] Rings         = new Ring_Struct[ThisGen2.m_NData];                                                      // 最大就是512个

            try
            {
                // 二值化
                for (i = 0; i < ThisGen2.ampplot_s.GetUpperBound(0) + 1; i++)
                {
                    for (j = 0; j < ThisGen2.ampplot_s.GetUpperBound(1) + 1; j++)
                    {
                        if (ThisGen2.ampplot_s[i, j] > (ThisGen2.m_maxValue * MyData.dBinaryzation))
                        {
                            BW_Pict[i, j]            = 255;
                            ThisGen2.ampplot_s[i, j] = 255;
                        }
                        else
                        {
                            BW_Pict[i, j]            = 0;
                            ThisGen2.ampplot_s[i, j] = 0;
                        }
                    }
                }

                // 获取各圆环上,在指定的n条射线上是否有亮点
                double ChangeLine = ThisGen2.m_NScanSave / MyData.iBinaryzationLineNum; // 平均两条线之间包含的扫描线数量 = 总扫描线/扫描次数
                for (i = 0; i < ThisGen2.m_NData; i++)                                  // i=环
                {
                    // 寻找该环上是否有亮点
                    for (j = 0; j < MyData.iBinaryzationLineNum; j++)
                    {
                        if (BW_Pict[(int)(ChangeLine * j), i] != 0)
                        {
                            RingMark[i, j] = 255;            // 第j线上,在第i环上有值
                            RingMarkTotal[i]++;              // 在第i环上命中点+1
                        }
                    }

                    // 顺便初始化Rings
                    Rings[i] = new Ring_Struct();
                }

                // 合拼亮点环
                bool FindWhite      = false;                  // 前面已经找到第一个亮点
                int  CombineRingNum = -1;                     // 合成环的编号
                for (i = 0; i < ThisGen2.m_NData; i++)        // i=环
                {
                    if (RingMarkTotal[i] > 0)
                    {
                        if (FindWhite)         // 不是新环
                        {
                        }
                        else                   // 新环
                        {
                            CombineRingNum++;
                            Rings[CombineRingNum].Rmin = i;
                            FindWhite = true;
                        }
                        Rings[CombineRingNum].Rmax    = i;
                        Rings[CombineRingNum].Target += RingMarkTotal[i];      // 合并亮点数
                    }
                    else // RingMarkTotal[i] == 0
                    {
                        if (FindWhite)       // 已经有环,就是结束
                        {
                            FindWhite = false;
                        }
                        else     // 不是亮环,不用统计
                        {
                        }
                    }
                }

                double dMaxRing   = 0;
                int    SelectMax  = -1;
                double dMinRing   = 10000;
                int    SelectMin  = -1;
                double dTmp       = 0;
                int    SelectRing = -1;

                // 选取合适的环
                if (CombineRingNum == 0)         // 有一环
                {
                    SelectMin = 0;
                }
                else if (CombineRingNum > 0)                                          // 有多环
                {
                    for (i = 0; i <= CombineRingNum; i++)                             // 观察所有环
                    {
                        dTmp = Rings[i].Target / (Rings[i].Rmax - Rings[i].Rmin + 1); //    亮点数/占用线数

                        Rings[i].RAvg = (int)dTmp;
                        if (dTmp < dMinRing)             // 取最小环
                        {
                            dMinRing  = dTmp;
                            SelectMin = i;
                        }

                        if (dTmp > dMaxRing)             // 取最大环
                        {
                            dMaxRing  = dTmp;
                            SelectMax = i;
                        }
                    }
                }

                SelectRing = SelectMin;

                // 在找到的环上,选择最佳的环数
                double dDistanceAvg = 0;
                if (SelectRing >= 0)
                {
                    dDistanceAvg = Rings[SelectRing].Rmin + (Rings[SelectRing].Rmax - Rings[SelectRing].Rmin) / 2; //    这个环的中心线
                    j            = -1;                                                                             // 选择了那条线
                    dTmp         = 0;
                    for (i = Rings[SelectRing].Rmin; i <= Rings[SelectRing].Rmax; i++)
                    {
                        if (RingMarkTotal[i] > dTmp)
                        {
                            j    = i;
                            dTmp = RingMarkTotal[i];
                        }
                        else if (RingMarkTotal[i] == dTmp)   // 等于时,看看那条更靠近中心线
                        {
                            if (Math.Abs(i - dDistanceAvg) < Math.Abs(j - dDistanceAvg))
                            {
                                j = i;
                            }
                        }
                    }

                    // 返回
                    iRingNum   = j;
                    iResult    = iErr_Succ;
                    sErrString = "";
                }
                else
                {
                    iResult    = iErr_Nofind;
                    sErrString = "没有符合条件的记录";
                }
            }
            catch (Exception ex)
            {
                sErrString = "计算时意外错误(FindTube = " + ex.Message + ")";
                iResult    = iErr_Exception;
            }

            return(iResult);
        }
コード例 #3
0
        public static int ReadGen2FromFile(string sFileName, ref Gen2_Struct ThisGen1, ref string sErrString)
        {
            Gen2_Struct ThisGen2 = new Gen2_Struct();

            //StreamReader sr = null;
            BinaryReader br = null;
            FileStream   fs = null;
            //FileStream ws = null;
            //StreamWriter sw = null;

            int len_lastname       = 0;
            int len_firstname      = 0;
            int len_patientid      = 0;
            int len_sex            = 0;
            int len_dateofbirth    = 0;
            int len_physican1      = 0;
            int len_physican2      = 0;
            int len_image_datatime = 0;
            int len_Procedures     = 0;
            int len_Note           = 0;

            int    iTmp = 0;
            double dTmp = 0;

            int SumData1 = 0;
            int iResult = iErr_UnknowErr;
            int i = 0, j = 0;

            if (sFileName == "")
            {
                sErrString = "没有文件名";
                return(iErr_NoFile);
            }

            if (!File.Exists(sFileName))
            {
                sErrString = "文件不存在";
                return(iErr_NoFile);
            }

            try
            {
                ThisGen2.m_FileName = sFileName;
                fs = new FileStream(sFileName, FileMode.Open, FileAccess.Read);
                //sr = new StreamReader(fs);
                br = new BinaryReader(fs);

                string   sTmp = "";
                string[] sData;
                for (i = 0; i < 10; i++)
                {
                    //sTmp = sr.ReadLine();
                    sTmp     = MyTools.ReadFileLine(br);
                    sData    = sTmp.Split(':');
                    sData[0] = sData[0].ToUpper().Trim();
                    if (sData[0] == "LAST NAME")
                    {
                        len_lastname        = MyTools.GetStringCode(sData[1]);
                        ThisGen2.m_lastname = sData[1].Trim();
                    }
                    else if (sData[0] == "FIRST NAME")
                    {
                        len_firstname        = MyTools.GetStringCode(sData[1]);
                        ThisGen2.m_firstname = sData[1].Trim();
                    }
                    else if (sData[0] == "PATIENT ID")
                    {
                        len_patientid        = MyTools.GetStringCode(sData[1]);
                        ThisGen2.m_patientid = sData[1].Trim();
                    }
                    else if (sData[0] == "SEX")
                    {
                        len_sex        = MyTools.GetStringCode(sData[1]);
                        ThisGen2.m_sex = sData[1].Trim();
                    }
                    else if (sData[0] == "DATE OF BIRTH")
                    {
                        len_dateofbirth        = MyTools.GetStringCode(sData[1]);
                        sTmp                   = sData[1].Trim();
                        ThisGen2.m_dateofbirth = sTmp.Substring(6, 4) + "-" + sTmp.Substring(0, 2) + "-" + sTmp.Substring(3, 2) + " 00:00:00";
                    }
                    else if (sData[0] == "PHYSICAN1")
                    {
                        len_physican1        = MyTools.GetStringCode(sData[1]);
                        ThisGen2.m_physican1 = sData[1].Trim();
                    }
                    else if (sData[0] == "PHYSICAN2")
                    {
                        len_physican2        = MyTools.GetStringCode(sData[1]);
                        ThisGen2.m_physican2 = sData[1].Trim();
                    }
                    else if (sData[0] == "IMAGE DATE AND TIME")
                    {
                        len_image_datatime = MyTools.GetStringCode(sData[1]);

                        // 可能有多种格式:Image Date and Time:20170210-1154-41
                        bool     DateIsOK = false;
                        DateTime dt       = DateTime.Now;
                        sTmp = sData[1].Trim();

                        while (!DateIsOK)
                        {
                            for (int m = 0; m < 2; m++)
                            {
                                try
                                {
                                    switch (m)
                                    {
                                    case 0:
                                        dt       = DateTime.Parse(sTmp);
                                        DateIsOK = true;
                                        break;

                                    case 1:
                                        dt = DateTime.Parse(sTmp.Substring(0, 4) + "-" + sTmp.Substring(4, 2) + "-" + sTmp.Substring(6, 2) + " " +
                                                            sTmp.Substring(9, 2) + ":" + sTmp.Substring(11, 2) + ":" + sTmp.Substring(14, 2));
                                        DateIsOK = true;
                                        break;
                                    }
                                }
                                catch
                                {
                                }

                                if (DateIsOK)
                                {
                                    break;
                                }
                            }

                            if (DateIsOK)
                            {
                                break;
                            }
                            else
                            {
                                string sEditTopic = "注意:检查记录的'检查时间'不是标准的时间格式,请按照'yyyy-mm-dd hh:mm:ss'更正。";
                                string sEditFiled = "检查时间";
                                string sEditText  = sTmp;
                                bool   bEditOK    = false;

                                frm_EditDateTime Frm_EditDateTime = new frm_EditDateTime();
                                Frm_EditDateTime.sEditTopic = sEditTopic;
                                Frm_EditDateTime.sEditFiled = sEditFiled;
                                Frm_EditDateTime.sEditText  = sEditText;
                                Frm_EditDateTime.bEditOK    = bEditOK;
                                Frm_EditDateTime.ShowDialog();

                                sEditText = Frm_EditDateTime.sEditText;
                                bEditOK   = Frm_EditDateTime.bEditOK;
                                Frm_EditDateTime.Close();

                                if (bEditOK)     // 修改过了
                                {
                                    sTmp = sEditText;
                                }
                                else            // 不要修改
                                {
                                    break;
                                }
                            }
                        }

                        if (!DateIsOK)
                        {
                            sErrString = "Gen2文件的'检查时间'数据无效";
                            iResult    = iErr_ValidData;
                            goto Eend;
                        }
                        else
                        {
                            ThisGen2.m_image_datatime = dt.ToString("yyyy-MM-dd HH:mm:ss");
                        }
                    }
                    else if (sData[0] == "PROCEDURES")
                    {
                        len_Procedures        = MyTools.GetStringCode(sData[1]);
                        ThisGen2.m_Procedures = sData[1].Trim();
                    }
                    else if (sData[0] == "NOTES")
                    {
                        len_Note        = MyTools.GetStringCode(sData[1]);
                        ThisGen2.m_Note = sData[1].Trim();
                    }
                }

                // 补充
                ThisGen2.m_FileID     = 0;
                ThisGen2.m_Address    = "";
                ThisGen2.m_Tele       = "";
                ThisGen2.m_IdentifyID = "";
                // 补充 End

                ThisGen2.m_NScanSave       = int.Parse(MyTools.ReadFileLine(br).Trim());
                ThisGen2.m_Angle2          = int.Parse(MyTools.ReadFileLine(br).Trim());
                ThisGen2.m_Number_line_360 = int.Parse(MyTools.ReadFileLine(br).Trim());
                ThisGen2.m_SN = int.Parse(MyTools.ReadFileLine(br).Trim());
                ThisGen2.m_DD = int.Parse(MyTools.ReadFileLine(br).Trim());
                ThisGen2.m_G  = int.Parse(MyTools.ReadFileLine(br).Trim());

                //dTmp = double.Parse(MyTools.ReadFileLine(br).Trim());
                iTmp = int.Parse(MyTools.ReadFileLine(br).Trim());
                while (true)
                {
                    if (iTmp != 1000)
                    {
                        break;
                    }
                    iTmp = int.Parse(MyTools.ReadFileLine(br).Trim());
                }
                //iTmp = (int)(dTmp + 0.1);
                if (iTmp != len_lastname)
                {
                    sErrString = "Gen2文件数据无效";
                    iResult    = iErr_ValidData;
                    goto Eend;
                }

                iTmp = int.Parse(MyTools.ReadFileLine(br).Trim());
                if (iTmp != len_firstname)
                {
                    sErrString = "Gen2文件数据无效";
                    iResult    = iErr_ValidData;
                    goto Eend;
                }

                iTmp = int.Parse(MyTools.ReadFileLine(br).Trim());
                if (iTmp != len_patientid)
                {
                    sErrString = "Gen2文件数据无效";
                    iResult    = iErr_ValidData;
                    goto Eend;
                }

                iTmp = int.Parse(MyTools.ReadFileLine(br).Trim());
                if (iTmp != len_sex)
                {
                    sErrString = "Gen2文件数据无效";
                    iResult    = iErr_ValidData;
                    goto Eend;
                }

                iTmp = int.Parse(MyTools.ReadFileLine(br).Trim());
                if (iTmp != len_dateofbirth)
                {
                    sErrString = "Gen2文件数据无效";
                    iResult    = iErr_ValidData;
                    goto Eend;
                }

                iTmp = int.Parse(MyTools.ReadFileLine(br).Trim());
                if (iTmp != len_physican1)
                {
                    sErrString = "Gen2文件数据无效";
                    iResult    = iErr_ValidData;
                    goto Eend;
                }

                iTmp = int.Parse(MyTools.ReadFileLine(br).Trim());
                if (iTmp != len_physican2)
                {
                    sErrString = "Gen2文件数据无效";
                    iResult    = iErr_ValidData;
                    goto Eend;
                }

                iTmp = int.Parse(MyTools.ReadFileLine(br).Trim());
                if (iTmp != len_image_datatime)
                {
                    sErrString = "Gen2文件数据无效";
                    iResult    = iErr_ValidData;
                    goto Eend;
                }

                iTmp = int.Parse(MyTools.ReadFileLine(br).Trim());
                if (iTmp != len_Procedures)
                {
                    sErrString = "Gen2文件数据无效";
                    iResult    = iErr_ValidData;
                    goto Eend;
                }

                iTmp = int.Parse(MyTools.ReadFileLine(br).Trim());
                if (iTmp != len_Note)
                {
                    sErrString = "Gen2文件数据无效";
                    iResult    = iErr_ValidData;
                    goto Eend;
                }

                ThisGen2.m_NData    = int.Parse(MyTools.ReadFileLine(br).Trim());
                ThisGen2.m_maxValue = double.Parse(MyTools.ReadFileLine(br).Trim());       // 记录这组Data中的最大值与最小值
                ThisGen2.m_minValue = double.Parse(MyTools.ReadFileLine(br).Trim());
                // fscanf(fpp, "%c", &cr);				 // 还要多读一个字符 = 10 0x0A

                ThisGen2.ampplot_sI = new Int32[ThisGen2.m_NScanSave, ThisGen2.m_NData];
                ThisGen2.ampplot_s  = new double[ThisGen2.m_NScanSave, ThisGen2.m_NData];
                SumData1            = 0;
                sbyte d1 = 0;
                sbyte d2 = 0;
                byte  c  = 0;

                // For Print ========================================
                //FileStream FileForPrint = File.Open(Directory.GetCurrentDirectory() + "\\gen2_Ampplot_sI.txt", FileMode.Create);
                //StreamWriter w = new StreamWriter(FileForPrint);
                // ==================================================

                for (j = 0; j < ThisGen2.m_NScanSave; j++)
                {
                    for (i = 0; i < ThisGen2.m_NData; i++)
                    {
                        //d1 = (sbyte)br.ReadByte();
                        //d2 = (sbyte)br.ReadByte();

                        d1 = (sbyte)br.ReadByte();
                        if (d1 == 0x0D)
                        {
                            if (br.BaseStream.Position < (br.BaseStream.Length - 1))
                            {
                                c = br.ReadByte();
                                if (c == 0x0A)
                                {
                                    d1 = (sbyte)c;
                                }
                                else
                                {
                                    br.BaseStream.Seek(-1, SeekOrigin.Current);
                                }
                            }
                        }
                        d2 = (sbyte)br.ReadByte();
                        if (d2 == 0x0D)
                        {
                            if (br.BaseStream.Position < (br.BaseStream.Length - 1))
                            {
                                c = br.ReadByte();
                                if (c == 0x0A)
                                {
                                    d2 = (sbyte)c;
                                }
                                else
                                {
                                    br.BaseStream.Seek(-1, SeekOrigin.Current);
                                }
                            }
                        }

                        //while (true)
                        //{
                        //    d2 = (sbyte)br.ReadByte();
                        //    if (d2 == 0x0D)
                        //    {
                        //        continue;
                        //    }
                        //    break;
                        //}

                        iTmp = d1;
                        if (iTmp < 0)
                        {
                            iTmp += 256;
                        }
                        ThisGen2.ampplot_sI[j, i] = iTmp * 256;

                        iTmp = d2;
                        if (iTmp < 0)
                        {
                            iTmp += 256;
                        }
                        ThisGen2.ampplot_sI[j, i] += iTmp;

                        // For Print ========================
                        //w.Write("ThisGen2.ampplot_sI[" + j.ToString() + "," + i.ToString() + "] = " + ThisGen2.ampplot_sI[j, i].ToString() + Environment.NewLine);
                        // ==================================


                        ThisGen2.ampplot_s[j, i] = (ThisGen2.ampplot_sI[j, i] / 65535.0) * (ThisGen2.m_maxValue - ThisGen2.m_minValue) + ThisGen2.m_minValue;
                        //  temp save raw data for background
                        // U16_RawData.RawData[j][i] = (unsigned short) ampplot_sI[j][i];//ampplot_s[j][i];

                        SumData1 = SumData1 + d1 + d2;
                        //sTmp = "ampot(" + j.ToString("D3") + "," + i.ToString("D3") + ") = " + d1.ToString("X2") + "," + d2.ToString("X2") + "," + ThisGen2.ampplot_sI[j, i].ToString("D6") + ",P = " + br.BaseStream.Position.ToString("X");
                        //sw.WriteLine(sTmp);
                    }
                }

                // For Print ========================
                //w.Close();
                //FileForPrint.Close();
                // ==================================

                sTmp = MyTools.ReadFileLine(br).Trim();      //fscanf(fpp, "%c", &cr);

                sTmp = MyTools.ReadFileLine(br).Trim();
                if (sTmp.Length > 0)
                {
                    iTmp = int.Parse(sTmp);
                }
                else
                {
                    iTmp = 0;
                }

                if (iTmp != SumData1)
                {
                    sErrString = "Gen2文件数据无效";
                    iResult    = iErr_ValidData;
                    goto Eend;
                }

                iTmp = 0;
                ThisGen2.m_CheckNote = "";
                while (true)
                {
                    if (br.BaseStream.Position >= (br.BaseStream.Length - 1))
                    {
                        break;
                    }
                    else
                    {
                        sTmp = MyTools.ReadFileLine(br).Trim();
                        ThisGen2.m_CheckNote += "\r\n" + sTmp;
                    }
                }

                ThisGen1   = ThisGen2;
                iResult    = iErr_Succ;
                sErrString = "";

                br.Close();
                fs.Close();
                // 读完文件后,数据就存放在 FileStruct 中
            }
            catch (Exception ex)
            {
                sErrString = "读Gen文件出错(" + ex.Message + ") j = " + j.ToString() + ",i = " + i.ToString();
                iResult    = iErr_Exception;
            }

Eend:
            if (br != null)
            {
                br.Close();
            }
            if (fs != null)
            {
                fs.Close();
            }
            return(iResult);
        }
コード例 #4
0
        public static int Gen2DataToDB(string sFileName, Gen2_Struct ThisGen2, bool IsCheckPatientID, bool IsCheckName, int iPatientMode, bool IsCheckRecord, int iRecordMode, ref string sErrString)
        {
            // PatientMode, RecordMode: See MyData.CoverMode;

            int     iResult           = MyData.iErr_UnknowErr;
            int     iFileId           = 0;
            int     iId               = -1;
            int     ThisDataCoverMode = MyData.iDataCoverMode_New;
            string  sSql              = "";
            string  sTmp              = "";
            DataSet DS = null;

            sErrString = "";

            try
            {
                if (IsCheckPatientID || IsCheckName)
                {
                    // 是否检查已有相同 PatientID、 Name的档案
                    sSql = "";
                    if (IsCheckPatientID)
                    {
                        sSql = "Where PatientID = '" + ThisGen2.m_patientid + "'";
                    }
                    if (IsCheckName)
                    {
                        if (sSql == "")
                        {
                            sSql = "Where Name = '" + ThisGen2.m_firstname + ThisGen2.m_lastname + "'";
                        }
                        else
                        {
                            sSql += " OR Name = '" + ThisGen2.m_firstname + ThisGen2.m_lastname + "'";
                        }
                    }
                    sSql = "Select FileID, PatientID from Patient " + sSql;
                    if (!MyData.MySqlite.ReadData(sSql, ref DS, ref sErrString))
                    {
                        //MyTools.ShowMsg("导入失败!", "查询数据库失败: " + sErrString);
                        sErrString = "查询受检人数据表失败=" + sErrString;
                        goto Eend;
                    }

                    if (DS != null && DS.Tables[0].Rows.Count > 0)
                    {
                        if (iPatientMode == MyData.iDataCoverMode_Cover)   // 覆盖保存
                        {
                            iFileId           = int.Parse(DS.Tables[0].Rows[0]["FileID"].ToString());
                            ThisDataCoverMode = MyData.iDataCoverMode_Cover;
                        }
                        else if (iPatientMode == MyData.iDataCoverMode_New)  // 新增
                        {
                            iFileId           = -1;
                            ThisDataCoverMode = MyData.iDataCoverMode_New;
                        }
                        else if (iPatientMode == MyData.iDataCoverMode_NotCover)  // 不覆盖
                        {
                            iFileId           = int.Parse(DS.Tables[0].Rows[0]["FileID"].ToString());
                            ThisDataCoverMode = MyData.iDataCoverMode_NotCover;
                        }
                    }
                    else   // 不存在
                    {
                        ThisDataCoverMode = MyData.iDataCoverMode_New;
                    }
                }
                else   // 不检查就是新增
                {
                    ThisDataCoverMode = MyData.iDataCoverMode_New;
                }

                if (ThisDataCoverMode == MyData.iDataCoverMode_New)
                {
                    // 新增
                    sSql = "Insert into Patient (PatientID, Name, Birthday, Sex, Address, Tele, IdentifyID, Memo ) Values(" +
                           "'" + ThisGen2.m_patientid + "'," +
                           "'" + ThisGen2.m_firstname + ThisGen2.m_lastname + "'," +
                           "'" + ThisGen2.m_dateofbirth + "'," +
                           "'" + (ThisGen2.m_sex == "男" ? "男" : "女") + "'," +
                           "'" + ThisGen2.m_Address + "'," +
                           "'" + ThisGen2.m_Tele + "'," +
                           "'" + ThisGen2.m_IdentifyID + "'," +
                           "'" + ThisGen2.m_Note + "')";
                    if (!MyData.MySqlite.WriteData(sSql, true, ref iFileId, ref sErrString))
                    {
                        //MyTools.ShowMsg("添加数据时出现错误", sErrString);
                        sErrString = "添加数据时出现错误=" + sErrString;
                        goto Eend;
                    }
                }
                else if (ThisDataCoverMode == MyData.iDataCoverMode_Cover)
                {
                    // 覆盖保存,FileID已读取
                    sSql = "Update Patient Set " +
                           "PatientID = '" + ThisGen2.m_patientid + "'," +
                           "Name = '" + ThisGen2.m_firstname + "'," +
                           "Birthday = '" + ThisGen2.m_dateofbirth + "'," +
                           "Sex = '" + ThisGen2.m_sex + "'," +
                           "Address = '" + ThisGen2.m_Address + "'," +
                           "Tele = '" + ThisGen2.m_Tele + "'," +
                           "IdentifyID = '" + ThisGen2.m_IdentifyID + "'," +
                           "Memo = '" + ThisGen2.m_Note + "' " +
                           "Where FileID = " + iFileId.ToString();
                    iId = -1;
                    if (!MyData.MySqlite.WriteData(sSql, false, ref iId, ref sErrString))
                    {
                        //MyTools.ShowMsg("覆盖数据时出现错误", sErrString);
                        sErrString = "覆盖数据时出现错误=" + sErrString;
                        goto Eend;
                    }
                }
                else if (ThisDataCoverMode == MyData.iDataCoverMode_NotCover)
                {
                    // 不做任何事情
                }

                // Save Check Record ==================================================================
                sTmp = System.Environment.CurrentDirectory + "\\Data\\" + iFileId.ToString();
                int iRecordID = -1;
                if (!Directory.Exists(sTmp))
                {
                    Directory.CreateDirectory(sTmp);
                }

                if (!Directory.Exists(sTmp + "\\Small"))
                {
                    Directory.CreateDirectory(sTmp + "\\Small");
                }

                if (!Directory.Exists(sTmp + "\\Big"))
                {
                    Directory.CreateDirectory(sTmp + "\\Big");
                }

                // 是否已有同 PatientID + Record 的档案
                if (IsCheckRecord)
                {
                    sSql       = "Select FileID, RecordID, BIGPICT from Record Where FileId = '" + iFileId + "' AND CHECKTIME = '" + DateTime.Parse(ThisGen2.m_image_datatime).ToString("yyyy-MM-dd HH:mm:ss") + "'";
                    DS         = null;
                    sErrString = "";
                    if (!MyData.MySqlite.ReadData(sSql, ref DS, ref sErrString))
                    {
                        //MyTools.ShowMsg("导入失败!", "查询数据库失败: " + sErrString);
                        sErrString = "查询受检记录表失败=" + sErrString;
                        goto Eend;
                    }

                    if (DS != null && DS.Tables[0].Rows.Count > 0)
                    {
                        bool   IsEqual = false;
                        string sFN1    = "";
                        string sFN2    = "";
                        for (int i = 0; i < DS.Tables[0].Rows.Count; i++)
                        {
                            sFN1 = System.IO.Path.GetExtension(DS.Tables[0].Rows[0]["BIGPICT"].ToString());
                            sFN2 = System.IO.Path.GetExtension(sFileName);
                            if (sFN1 == sFN2)
                            {
                                IsEqual = true;
                                break;
                            }
                        }

                        if (IsEqual)
                        {
                            if (iRecordMode == MyData.iDataCoverMode_Cover)   // 覆盖保存
                            {
                                iRecordID         = int.Parse(DS.Tables[0].Rows[0]["RecordID"].ToString());
                                ThisDataCoverMode = MyData.iDataCoverMode_Cover;
                            }
                            else if (iRecordMode == MyData.iDataCoverMode_New)  // 新增
                            {
                                iRecordID         = -1;
                                ThisDataCoverMode = MyData.iDataCoverMode_New;
                            }
                            else if (iRecordMode == MyData.iDataCoverMode_NotCover)  // 不覆盖
                            {
                                iRecordID         = int.Parse(DS.Tables[0].Rows[0]["RecordID"].ToString());
                                ThisDataCoverMode = MyData.iDataCoverMode_NotCover;
                            }
                        }
                        else   // 不存在
                        {
                            iRecordID         = -1;
                            ThisDataCoverMode = MyData.iDataCoverMode_New;
                        }
                    }
                    else   // 不存在
                    {
                        iRecordID         = -1;
                        ThisDataCoverMode = MyData.iDataCoverMode_New;
                    }
                }
                else   // 不检查就是新增
                {
                    iRecordID         = -1;
                    ThisDataCoverMode = MyData.iDataCoverMode_New;
                }

                string sExtendName = System.IO.Path.GetExtension(sFileName);
                if ((ThisDataCoverMode == MyData.iDataCoverMode_New) || (ThisDataCoverMode == MyData.iDataCoverMode_Cover))
                {
                    if (File.Exists(sTmp + "\\Big\\" + iFileId.ToString() + "BP_" + DateTime.Parse(ThisGen2.m_image_datatime).ToString("yyyyMMddHHmmss") + sExtendName))
                    {
                        File.Delete(sTmp + "\\Big\\" + iFileId.ToString() + "BP_" + DateTime.Parse(ThisGen2.m_image_datatime).ToString("yyyyMMddHHmmss") + sExtendName);
                    }
                    File.Copy(sFileName, sTmp + "\\Big\\" + iFileId.ToString() + "BP_" + DateTime.Parse(ThisGen2.m_image_datatime).ToString("yyyyMMddHHmmss") + sExtendName);


                    if (File.Exists(sTmp + "\\Small\\" + iFileId.ToString() + "SP_" + DateTime.Parse(ThisGen2.m_image_datatime).ToString("yyyyMMddHHmmss") + ".png"))
                    {
                        File.Delete(sTmp + "\\Small\\" + iFileId.ToString() + "SP_" + DateTime.Parse(ThisGen2.m_image_datatime).ToString("yyyyMMddHHmmss") + ".png");
                    }
                    if (SaveToSmallPict(sTmp + "\\Small\\" + iFileId.ToString() + "SP_" + DateTime.Parse(ThisGen2.m_image_datatime).ToString("yyyyMMddHHmmss") + ".png", ThisGen2, ref sErrString) != MyData.iErr_Succ)
                    {
                        sErrString = "复制Small Picture档案时出现错误 =" + sErrString;
                        goto Eend;
                    }

                    if (ThisDataCoverMode == MyData.iDataCoverMode_New)
                    {
                        // 新增
                        sSql = "Insert into Record ( FileID, CheckTime, Doctor, CheckInfo, SmallPict, BigPict ) Values (" +
                               iFileId.ToString() + "," +
                               "'" + ThisGen2.m_image_datatime + "'," +
                               "'" + ThisGen2.m_physican1 + "'," +
                               "'" + ThisGen2.m_CheckNote + "'," +
                               "'" + iFileId.ToString() + "SP_" + DateTime.Parse(ThisGen2.m_image_datatime).ToString("yyyyMMddHHmmss") + ".png" + "'," +
                               "'" + iFileId.ToString() + "BP_" + DateTime.Parse(ThisGen2.m_image_datatime).ToString("yyyyMMddHHmmss") + sExtendName + "')";
                        iId = -1;
                        if (!MyData.MySqlite.WriteData(sSql, false, ref iId, ref sErrString))
                        {
                            sErrString = "添加检验数据时出现错误=" + sErrString;
                            goto Eend;
                        }
                    }
                    else  // if (ThisDataCoverMode == MyData.iDataCoverMode_Cover)
                    {
                        // 覆盖保存,FileID,RecordID 已读取
                        sSql = "Update Record Set " +
                               "CHECKTIME = '" + ThisGen2.m_image_datatime + "'," +
                               "Doctor = '" + ThisGen2.m_physican1 + "'," +
                               "CheckInfo = '" + ThisGen2.m_CheckNote + "'," +
                               "SmallPict = '" + iFileId.ToString() + "SP_" + DateTime.Parse(ThisGen2.m_image_datatime).ToString("yyyyMMddHHmmss") + ".png'," +
                               "BigPict = '" + iFileId.ToString() + "BP_" + DateTime.Parse(ThisGen2.m_image_datatime).ToString("yyyyMMddHHmmss") + sExtendName + "' " +
                               "Where RecordID = " + iRecordID.ToString();
                        iId = -1;
                        if (!MyData.MySqlite.WriteData(sSql, false, ref iId, ref sErrString))
                        {
                            //MyTools.ShowMsg("覆盖数据时出现错误", sErrString);
                            sErrString = "覆盖Record数据时出现错误=" + sErrString;
                            goto Eend;
                        }
                    }
                }
                else if (ThisDataCoverMode == MyData.iDataCoverMode_NotCover)
                {
                    // 不做任何事情
                }

                //MyTools.ShowMsg("导入成功!", "");
                sErrString = "";
                iResult    = MyData.iErr_Succ;
            }
            catch (Exception ex)
            {
                //MyTools.ShowMsg("复制档案时出现意外错误", "ex = " + ex.Message);
                sErrString = "意外错误=" + ex.Message;
                iResult    = MyData.iErr_Exception;
            }

Eend:
            if (DS != null)
            {
                DS = null;
            }
            return(iResult);
        }
コード例 #5
0
        public static int ReadGen2FromGGClass(mod_GG GG, ref Gen2_Struct ThisGen2, ref string sErrString)
        {
            int iResult = iErr_UnknowErr;

            // 用GG当前帧的数据构建 Gen2
            ThisGen2 = new Gen2_Struct();

            try
            {
                ThisGen2.m_FileName       = GG.ggData.m_szFileName;
                ThisGen2.m_cbsize         = 0;
                ThisGen2.m_lastname       = GG.ggData.m_ggheader.szLastname;
                ThisGen2.m_firstname      = GG.ggData.m_ggheader.szFirstname;
                ThisGen2.m_patientid      = GG.ggData.m_ggheader.szPatientid;
                ThisGen2.m_sex            = GG.ggData.m_ggheader.szSex;
                ThisGen2.m_dateofbirth    = GG.ggData.m_ggheader.szDateofBirth;
                ThisGen2.m_physican1      = GG.ggData.m_ggheader.szPhysican1;
                ThisGen2.m_physican2      = GG.ggData.m_ggheader.szPhysican2;
                ThisGen2.m_image_datatime = DateTime.Parse(GG.ggData.m_ggheader.szDate).ToString("yyyy-MM-dd ") +
                                            DateTime.Parse(GG.ggData.m_ggheader.szTime).ToString("HH:mm:ss");

                // 补充
                ThisGen2.m_FileID     = 0;
                ThisGen2.m_Address    = "";
                ThisGen2.m_Tele       = "";
                ThisGen2.m_IdentifyID = "";
                // 补充 End

                //ThisGen2.m_Procedures;
                ThisGen2.m_Note = GG.ggData.m_ggheader.szNote;

                ThisGen2.m_NScanSave       = GG.ggData.m_ggheader.numberofline;
                ThisGen2.m_Angle2          = (int)GG.ggData.m_ggheader.Angle2;
                ThisGen2.m_Number_line_360 = GG.ggData.m_ggheader.NumberOfline_360;
                ThisGen2.m_SN = GG.ggData.m_ggheader.SN;
                ThisGen2.m_DD = GG.ggData.m_ggheader.DD;
                ThisGen2.m_G  = GG.ggData.m_ggheader.G;

                ThisGen2.m_NData    = GG.ggData.m_ggheader.numberofpointofline;
                ThisGen2.m_maxValue = GG.ggData.m_ggframe_info.raw_maxvalue;       // 记录这组Data中的最大值与最小值
                ThisGen2.m_minValue = GG.ggData.m_ggframe_info.raw_minvalue;

                ThisGen2.ampplot_sI = new Int32[ThisGen2.m_NScanSave, ThisGen2.m_NData];
                ThisGen2.ampplot_s  = new double[ThisGen2.m_NScanSave, ThisGen2.m_NData];

                sbyte  d1 = 0;
                sbyte  d2 = 0;
                int    i = 0, j = 0;
                int    iTmp = 0;
                ushort uSi  = 0;

                double Max = 0, Min = 0;

                // For Print ========================================
                //FileStream FileForPrint = File.Open(Directory.GetCurrentDirectory() + "\\gg_Ampplot_sI.txt", FileMode.Create);
                //StreamWriter w = new StreamWriter(FileForPrint);
                // ==================================================

                for (j = 0; j < ThisGen2.m_NScanSave; j++)
                {
                    for (i = 0; i < ThisGen2.m_NData; i++)
                    {
                        ////d1 = (sbyte)br.ReadByte();
                        ////d2 = (sbyte)br.ReadByte();

                        //d1 = (sbyte)GG.ggData.m_lprawdata[j * ThisGen2.m_NData + 2 * i];
                        //d2 = (sbyte)GG.ggData.m_lprawdata[j * ThisGen2.m_NData + 2 * i + 1];
                        //iTmp = d1;
                        //if (iTmp < 0)
                        //    iTmp += 256;
                        //ThisGen2.ampplot_sI[j, i] = iTmp * 256;

                        //iTmp = d2;
                        //if (iTmp < 0)
                        //    iTmp += 256;
                        //ThisGen2.ampplot_sI[j, i] += iTmp;

                        uSi = BitConverter.ToUInt16(GG.ggData.m_lprawdata, j * 2 * ThisGen2.m_NData + 2 * i);
                        ThisGen2.ampplot_sI[j, i] = uSi;

                        // For Print ========================
                        //w.Write("ThisGen2.ampplot_sI[" + j.ToString() + "," + i.ToString() + "] = " + ThisGen2.ampplot_sI[j, i].ToString() + Environment.NewLine);
                        // ==================================

                        //if (j < 10)
                        ThisGen2.ampplot_s[j, i] = (ThisGen2.ampplot_sI[j, i] / 65535.0) * (ThisGen2.m_maxValue - ThisGen2.m_minValue) + ThisGen2.m_minValue;
                        //else
                        //    ThisGen2.ampplot_s[j, i] = 0;

                        if (ThisGen2.ampplot_s[j, i] < Min)
                        {
                            Min = ThisGen2.ampplot_s[j, i];
                        }

                        if (ThisGen2.ampplot_s[j, i] > Max)
                        {
                            Max = ThisGen2.ampplot_s[j, i];
                        }
                    }
                }

                // For Print ========================
                //w.Close();
                //FileForPrint.Close();
                // ==================================

                iResult    = iErr_Succ;
                sErrString = "";
            }
            catch (Exception ex)
            {
                iResult    = iErr_Exception;
                sErrString = "GG转换成Gen2时意外错误(" + ex.Message + ")";
            }

            return(iResult);
        }