// 扫描医院条码 显示匹配信息 private void txtBarcode_KeyPress(object sender, KeyPressEventArgs e) { //是否回车 if (e.KeyChar != (char)Keys.Enter) { return; } string cusbarcode = string.Empty; if (this.dtpBeginDate.Value.Date > this.dtpEndDate.Value.Date) { ShowMessageHelper.ShowBoxMsg("结束时间应大于开始时间!"); return; } cusbarcode = this.txtBarcode.Text.Trim(); if (cusbarcode == "") { ShowMessageHelper.ShowBoxMsg("医院条码或样本号不能为空!"); return; } this.txtBarcode.Text = string.Empty; Hashtable ht = new Hashtable(); if (chxHosNumer.Checked == false) { ht.Add("Hospsampleid", cusbarcode); } else { ht.Add("dtpBeginDate", Convert.ToDateTime(this.dtpBeginDate.Value).ToString("yyyy-MM-dd")); ht.Add("dtpEndDate", Convert.ToDateTime(this.dtpEndDate.Value.AddDays(+1)).ToString("yyyy-MM-dd")); ht.Add("Hospsamplenumber", cusbarcode); } //是否输入条码值 // if (message == "") { return; } //绑定医院条码相关信息 //实现List排序,否则无法点击表头按列重新排序 fenghp BindingCollection <VDaLisrequest> list = new BindingCollection <VDaLisrequest>(); foreach (VDaLisrequest lst in new VDALisrequestBLL().GetVDaLisrequestList(ht)) { list.Add(lst); } if (list.Count == 0) { ShowMessageHelper.ShowBoxMsg("无医院条码或样本信息!"); return; } this.bgSource1.DataSource = list; VDaLisrequest vda = (VDaLisrequest)gvLisrequest.Rows[gvLisrequest.CurrentCell.RowIndex].DataBoundItem; BindRightData(vda); }
// 扫描达安条码 插入订单 private void txtDaanBarcode_KeyPress(object sender, KeyPressEventArgs e) { //是否回车键 if (e.KeyChar != (char)Keys.Enter) { return; } string barcode = this.txtDaanBarcode.Text.Trim(); this.txtDaanBarcode.Text = string.Empty; if (barcode == "") { ShowMessageHelper.ShowBoxMsg("达安条码不能为空!"); return; } Regex r = new Regex(@"^\d*00$|\:"); //正则12位数字尾数必须为0 //达安条码为12位 if (barcode.Length != 12) { ShowMessageHelper.ShowBoxMsg("请核对达安条码为12位数字!"); return; } //达安条码为数字 if (!r.IsMatch(barcode)) { ShowMessageHelper.ShowBoxMsg("请核对达安条码后两位为0的12位数字!"); return; } if (gvLisrequest.RowCount == 0) { ShowMessageHelper.ShowBoxMsg("无医院相关信息!"); return; } BindingSource TestData = gvDaLis.DataSource as BindingSource; if (TestData.Count == 0) { ShowMessageHelper.ShowBoxMsg("没有项目,不能添加!"); return; } try { #region >>>> zhouy 添加过滤 //选中的当前行 VDaLisrequest vda = (VDaLisrequest)gvLisrequest.Rows[gvLisrequest.CurrentCell.RowIndex].DataBoundItem; //是否存在相同的达安条码 List <DAOutspecimen> daoutlist = outspecimenbll.GetOutspecimenList(new Hashtable() { { "txtRequestcode", barcode } }); if (daoutlist.Count > 0) { ShowMessageHelper.ShowBoxMsg("已存在相同的达安条码!"); return; } #endregion #region >>>插入订单主表、从表、结果表 //项目列表 取列表项目,可见见即可得 List <VDaLisrequesttest> VTestList = ((BindingCollection <VDaLisrequesttest>)TestData.List).ToList().FindAll(c => c.IsSelect); //项目是否匹配 if (VTestList.FindAll(c => c.Datestcode == "").Count != 0) { ShowMessageHelper.ShowBoxMsg("项目不匹配,数据添加失败!"); return; } SortedList SQLlist = new SortedList(new MySort()); #region >>>> zhouy 申请单 DAOutspecimen daoutspecimen = new DAOutspecimen(); int age = 0; if (vda.Age != null && vda.Age != "") { if (!int.TryParse(vda.Age, out age)) { ShowMessageHelper.ShowBoxMsg("年龄格式不对!"); return; } //如果年龄大于200岁 if (age > 200 && age < 0 && vda.Ageunit == "0") { ShowMessageHelper.ShowBoxMsg("年龄不能大于200岁!"); return; } } daoutspecimen.Age = age; daoutspecimen.Requestcode = barcode; daoutspecimen.Hospsampleid = vda.Hospsampleid; // if (chxHosNumer.Checked) { daoutspecimen.Hospsamplenumber = vda.Hospsamplenumber; // } daoutspecimen.Customercode = SystemConfig.Config.Username; daoutspecimen.Remark = ""; daoutspecimen.Patientnumber = vda.Patientnumber; daoutspecimen.Bednumber = vda.Bednumber; daoutspecimen.Samplingdate = vda.Samplingdate; daoutspecimen.Patientsource = vda.Patientnumber; daoutspecimen.Patientname = vda.Pname; daoutspecimen.Bodystyle = vda.Bodystyle; daoutspecimen.Sex = vda.Sex; daoutspecimen.Patienttel = vda.Patienttel; daoutspecimen.Location = vda.Sectionoffice; daoutspecimen.Doctor = vda.Doctor; daoutspecimen.Doctortel = vda.Doctortel; daoutspecimen.Birthday = vda.Birthday; daoutspecimen.Ageunit = vda.Ageunit; daoutspecimen.Diagnostication = vda.Diagnostication; daoutspecimen.Status = "0"; daoutspecimen.Babycount = vda.Babycount; daoutspecimen.Lmp = vda.Lmp; daoutspecimen.Lmpdate = vda.Lmpdate; daoutspecimen.Uninevolumn = vda.Uninevolumn.ToString(); daoutspecimen.Weight = vda.Weight.ToString(); daoutspecimen.Height = vda.Height.ToString(); daoutspecimen.Bultrasonic = vda.Bultrasonic; daoutspecimen.Pregnant = vda.Pregnant; daoutspecimen.Enterby = SystemConfig.UserInfo.UserCode; //"";//录单人 daoutspecimen.Enterbydate = DateTime.Now; daoutspecimen.Lastupdatedate1 = DateTime.Now; daoutspecimen.Createdate = DateTime.Now; daoutspecimen.Usertype = SystemConfig.UserInfo.UserType.ToString(); #endregion //显示校验医院项目是否与达安项目匹配 List <string> strCoustomercode = new List <string>(); //客户项目代码 List <string> strCoustomername = new List <string>(); //客户项目名称 List <string> strDatecode = new List <string>(); //达安项目代码 List <string> strDatename = new List <string>(); //达安项目名称 //查询系统中 医院中的所有项目 Hashtable ht = new Hashtable(); ht.Add("Hospsampleid", daoutspecimen.Hospsampleid); List <DAResult> _daresult = new DAResultBLL().GetDAResultList(ht); //显示基本信息 foreach (VDaLisrequesttest vdl in VTestList) { string[] dacodearr = vdl.Datestcode.Split(','); #region >>>> 申请单项目表 for (int i = 0; i < dacodearr.Length; i++) { string dacode = dacodearr[i].Trim(); string daname = ""; IEnumerable <string> IEdaname = from a in DaTestList where a.Datestcode.Trim() == dacode select a.Datestname; if (IEdaname.Count() == 0) { //dacode = daname = ""; ShowMessageHelper.ShowBoxMsg(string.Format("达安项目中不存在编号为[{0}]的项目!", dacode)); return; } // else { daname = IEdaname.First(); } DAOutspecimentest daouttest = new DAOutspecimentest(); daouttest.Hospsampleid = vda.Hospsampleid; //if (chxHosNumer.Checked) { daouttest.Hospsamplenumber = vda.Hospsamplenumber; // } daouttest.Requestcode = barcode; daouttest.Customertestcode = vdl.Testcode; daouttest.Customertestname = vdl.Testname; daouttest.Datestcode = dacode; daouttest.Datestname = daname; daouttest.Createdate = DateTime.Now; SQLlist.Add(new Hashtable() { { "INSERT", "Da.InsertDAOutspecimentest" } }, daouttest); } #endregion //保存重复过的项目名称 string testnamelist = ""; #region >>>> 插入结果表 List <VDAListests> vdalisttest = new VDAListestsBLL().GetVDaListestsresultByCode(new Hashtable() { { "Testcode", vdl.Testcode } }); foreach (VDAListests item in vdalisttest) { DAResult daResult = new DAResult(); daResult.Requestcode = barcode; daResult.Hospsampleid = vda.Hospsampleid; //if (chxHosNumer.Checked) { daResult.Hospsamplenumber = vda.Hospsamplenumber; // } daResult.Testtype = item.Testtype; daResult.Customergroupcode = item.CustomerGroupCode; //医院组合代码 daResult.Customergroupname = item.CustomerGroupName; //医院组合名称 daResult.Customertestcode = item.Subtestcode; //医院单项代码 daResult.Customertestname = item.Subtestname; //医院单项名称 //不存在单项名 取组合名 if (item.Subtestcode == null || item.Subtestcode == "") { daResult.Customertestcode = item.CustomerGroupCode; //医院单项代码 daResult.Customertestname = item.CustomerGroupName; //医院单项名称 } //如果已经插入系统的项目 再次扫描不允许插入 if (_daresult.FindAll(c => c.Customertestcode.Trim() == daResult.Customertestcode.Trim()).Count > 0) { testnamelist += daResult.Customertestname + ","; continue; } daResult.Dagroupcode = string.Empty; daResult.Dagroupname = string.Empty; daResult.Datestcode = string.Empty; //达安单项代码 daResult.Datestname = string.Empty; //达安单项名称 SQLlist.Add(new Hashtable() { { "INSERT", "InsertDAResult" } }, daResult); } #endregion //同意医院条码有重复项目 if (testnamelist != "") { ShowMessageHelper.ShowBoxMsg( string.Format("送检人【{0}】医院条码[{1}]的项目[{2}]已经添加到系统中,分开条码请先删除已添加的项目,或者去掉勾选", daoutspecimen.Patientname, daoutspecimen.Hospsampleid, testnamelist.TrimEnd(','))); return; } daoutspecimen.Customertestcodes += vdl.Testcode + ","; daoutspecimen.Customertestnames += vdl.Testname + ","; daoutspecimen.Datestcodes += vdl.Datestcode + ","; daoutspecimen.Datestnames += vdl.Datestname + ","; } daoutspecimen.Customertestcodes = daoutspecimen.Customertestcodes.TrimEnd(','); daoutspecimen.Customertestnames = daoutspecimen.Customertestnames.TrimEnd(','); daoutspecimen.Datestcodes = daoutspecimen.Datestcodes.TrimEnd(','); daoutspecimen.Datestnames = daoutspecimen.Datestnames.TrimEnd(','); SQLlist.Add(new Hashtable() { { "INSERT", "Da.InsertDAOutspecimen" } }, daoutspecimen); #region >>>> 写操作日志 DAOperationlog daoperationlog = new DAOperationlog(); daoperationlog.Dictuserid = SystemConfig.UserInfo.UserId == "" ? 0 : Convert.ToDecimal(SystemConfig.UserInfo.UserId); daoperationlog.Usercode = SystemConfig.UserInfo.UserCode; daoperationlog.Username = SystemConfig.UserInfo.UserName; daoperationlog.Usertype = SystemConfig.UserInfo.UserType.ToString(); daoperationlog.Optype = "新增订单信息"; daoperationlog.Createdate = DateTime.Now; daoperationlog.Opcontent = "生成订单号:" + barcode; daoperationlog.Requestcode = barcode; daoperationlog.Hospsampleid = vda.Hospsampleid; // if (chxHosNumer.Checked) { daoperationlog.Hospsamplenumber = vda.Hospsamplenumber; // } SQLlist.Add(new Hashtable() { { "INSERT", "InsertDAOperationlog" } }, daoperationlog); #endregion string errmsg = ""; if (!outspecimenbll.ExecuteSqlTran(SQLlist, ref errmsg)) { ShowMessageHelper.ShowBoxMsg("添加失败!:" + errmsg); return; } DataBind(daoutspecimen); this.txtBarcode.Focus(); #endregion } catch (Exception Ex) { ShowMessageHelper.ShowBoxMsg("添加订单异常:" + Ex.Message); return; } }
private void BindRightData(VDaLisrequest vda) { //绑定医院项目信息 //实现List排序,否则无法点击表头按列重新排序 fenghp BindingCollection <VDaLisrequesttest> list2 = new BindingCollection <VDaLisrequesttest>(); Hashtable htCode = new Hashtable(); htCode.Add("Hospsampleid", vda.Hospsampleid); List <VDaLisrequesttest> VtestList = new VDALisrequesttestBLL().GetVDaLisrequesttestList(htCode); //显示校验医院项目是否与达安项目匹配 Hashtable htmap = new Hashtable(); foreach (VDaLisrequesttest vdl in VtestList) { //解决病理常有两个项目一起做,LIS病理项目必须单独条码,所以扫描时需要去掉其中一个勾选,重复操作两次,等待解决 //if (txtCode.Text.Trim() == "") //{ // vdl.IsSelect = cbIsSelect.Checked; //} //else if (txtCode.Text.Trim() == vdl.Testcode) //{ // vdl.IsSelect = true; //} //else //{ // vdl.IsSelect = false; //} vdl.IsSelect = cbIsSelect.Checked; //选择存在对应关系的序列值 var result = (from a in DaTestMap where a.Customertestcode == vdl.Testcode group a by new { a.Datestname, a.Datestcode } into g select new { g.Key.Datestname, g.Key.Datestcode, }).ToArray(); string dacode = "", daname = ""; //一对多则 拼接多个项目 foreach (var item in result) { dacode += item.Datestcode.Trim() + ","; daname += item.Datestname.Trim() + ","; } vdl.Datestcode = dacode.TrimEnd(','); vdl.Datestname = daname.TrimEnd(','); #region >>>> zhouy 按照医学专业组过滤标本类型 if (result.Length > 0) { string strtype = ""; var type = (from a in DaTestList where a.Datestcode.Trim() == result[0].Datestcode.Trim() group a by new { a.Testtype } into g select new { g.Key.Testtype }).ToArray(); if (type.Length == 0) { ShowMessageHelper.ShowBoxMsg(string.Format("请检查医院代码为[{0}]的项目对照!", vdl.Testcode)); return; } strtype = type[0].Testtype; //病理 if (radioButton2.Checked) { vdl.IsDelete = DefaultConfig.TestType_病理 != strtype; }//微生物 else if (radioButton3.Checked) { vdl.IsDelete = DefaultConfig.TestType_微生物 != strtype; }//糖筛 else if (radioButton4.Checked) { vdl.IsDelete = DefaultConfig.TestType_唐氏筛查 != strtype; }//常规 else { vdl.IsDelete = DefaultConfig.TestType_病理 == strtype || DefaultConfig.TestType_微生物 == strtype || DefaultConfig.TestType_唐氏筛查 == strtype; } } #endregion } List <VDaLisrequesttest> VtestList2 = VtestList.FindAll(c => !c.IsDelete); foreach (VDaLisrequesttest lst in VtestList2) { list2.Add(lst); } this.bgSource2.DataSource = list2; DaHeaderCheckBox.Checked = cbIsSelect.Checked; StringBuilder str = new StringBuilder(); if (VtestList2.Count > 0) { str.Append("项目没有对照:"); int num = 0; for (int i = 0; i < VtestList2.Count; i++) { if (VtestList2[i].Datestcode == "" || VtestList2[i].Datestname == "") { str.Append("项目编码:" + VtestList2[i].Testcode + "[" + VtestList2[i].Testname + "],"); num++; } } if (num > 0) { //写项目匹配错误日志 this.lblMessage.Text = str.ToString().TrimEnd(','); DAErrorlog eaerror = new DAErrorlog(); eaerror.Dictuserid = Convert.ToDecimal(SystemConfig.UserInfo.UserId); eaerror.Createdate = DateTime.Now; eaerror.LastUpdateDate = DateTime.Now; eaerror.Opcontent = this.lblMessage.Text; eaerror.Usercode = SystemConfig.UserInfo.UserCode; eaerror.Usertype = SystemConfig.UserInfo.UserType.ToString(); eaerror.Ipaddress = common.GetHostIP(); //获取本机IP地址 eaerror.Machinename = common.GetHostName(); //获取本机机器名 new DAErrorLogBLL().SaveErrorLog(eaerror); } else { this.lblMessage.Text = ""; this.txtDaanBarcode.Focus(); } } gvDaLis.ClearSelection(); gvDaLis.TabStop = false; }