cfind

来源:互联网 发布:知游文化传播有限公司 编辑:程序博客网 时间:2024/05/16 19:08
 

if (from.scu == null)
            {
                MessageBox.Show("请先连接服务器", "提示", MessageBoxButtons.OK, MessageBoxIcon.Asterisk);
                return;
            }
            from.f2.Show();
            CFindStudyQuery stud = new CFindStudyQuery();
            getQyeryTxt(stud);
            CFindStudyClient scu = new CFindStudyClient();

            scu.CalledAE = from.scu.CalledAE;
            scu.CallingAE = from.scu.CalledAE;
            scu.ConnectTimeout = from.scu.ConnectTimeout;
            scu.DimseTimeout = from.scu.DimseTimeout;
            scu.SocketTimeout = from.scu.DimseTimeout;
            scu.MaxPduSize = from.scu.MaxPduSize;
            scu.AddQuery(stud);
            DataTable dt = new DataTable();
            for (int i = 0; i < 14; i++)
            {
                DataColumn col = new DataColumn(i + "");
                dt.Columns.Add(col);
            }
            DataRow row = null;
            scu.OnCFindResponse = delegate(CFindStudyQuery q,
            CFindStudyResponse r)
            {

                try
                {
                    if (r != null)
                    {
                        row = dt.NewRow();
                        row[0] = r.PatientID;
                        row[1] = r.PatientsName;
                        row[2] = r.PatientsBirthDate.ToLongDateString();
                        row[3] = r.PatientsSex;
                        row[4] = r.StudyID;
                        row[5] = r.AccessionNumber;
                        row[6] = r.StudyInstanceUID;
                        row[7] = r.Modality;
                        row[8] = r.ModalitiesInStudy;
                        row[9] = r.StudyDescription;
                        row[10] = r.StudyDate.ToLongDateString();
                        row[11] = r.StudyTime.ToLongTimeString();
                        row[12] = r.NumberOfStudyRelatedSeries;
                        row[13] = r.NumberOfStudyRelatedInstances;
                        dt.Rows.Add(row);

                    }

                }
                finally
                {
                  

                }

            };

            System.Threading.ThreadPool.QueueUserWorkItem(new WaitCallback(delegate(object obj)
                {
                    scu.Connect(from.conf.RemoteHost, int.Parse(from.conf.RemotePort), from.conf.UseTls == "1" ? DcmSocketType.TLS : DcmSocketType.TCP);
                    if (scu.Wait())
                    {
                        tabPage1.BeginInvoke(new bddataview(bdQueryedData), new object[] { dt });
                        tabPage1.BeginInvoke(new updateData(from.f2.Hide), new object[] {});
                      
                    }
                  
                }));

        }
       

        /// <summary>
        /// 绑定查询后的数据
        /// </summary>
        private void bdQueryedData(DataTable dt)
        {
            if (dt != null)
            {
                dataResult.DataSource = dt.DefaultView;
                dataResult.Columns[0].HeaderText = "病人id";
                dataResult.Columns[1].HeaderText = "病人姓名";
                dataResult.Columns[2].HeaderText = "出生日期";
                dataResult.Columns[3].HeaderText = "性别";
                dataResult.Columns[4].HeaderText = "研究id";
                dataResult.Columns[5].HeaderText = "加入数字";
                dataResult.Columns[6].HeaderText = "研究实例uid";
                dataResult.Columns[7].HeaderText = "图像类别";
                dataResult.Columns[8].HeaderText = "研究中的图像类别";
                dataResult.Columns[9].HeaderText = "研究描述";
                dataResult.Columns[10].HeaderText = "研究日期";
                dataResult.Columns[11].HeaderText = "研究时间";
                dataResult.Columns[12].HeaderText = "研究中序列数";
                dataResult.Columns[13].HeaderText = "研究实例数";
                dataResult.Columns[2].Visible = false;

            }
        }
        private void getQyeryTxt(CFindStudyQuery stud)
        {
            if (txt_examine.Text != "")
            {
                stud.StudyID = txt_examine.Text.Trim();
            }
            if (checkBox2.Checked && txt_intervalDays.Text != "")
            {
                if (isshu(txt_intervalDays.Text.Trim()))
                {
                    int day = int.Parse(txt_intervalDays.Text);
                    stud.StudyDate = new DcmDateRange(DateTime.Now.AddDays(-day), DateTime.Now);
                }

            }
            if (checkBox1.Checked && dateTimePicker1.Text != "")
            {
                stud.StudyDate = new DcmDateRange(dateTimePicker1.Value, dateTimePicker1.Value);
            }
            if (txt_pationt.Text != "")
            {
                stud.PatientsName = txt_pationt.Text.Trim();
            }
            if (txt_patents_number.Text != null)
            {
                stud.PatientID = txt_patents_number.Text;
            }
            if (cnb_modality.SelectedItem != null && cnb_modality.SelectedItem.ToString() != "")
            {
                stud.ModalitiesInStudy = cnb_modality.SelectedItem.ToString();
            }