public bool OrdValivate(ciordems.d.EmsUIDTO headDo, CiorderBaseControl ci) { if (headDo.Emsdrugs.Orders < 1) { ci.OrdErrorList.Add("医嘱付数不能小于1"); } if (headDo.IsOpData) { if (headDo.Emsdrugs.Dt_end_ui != null && (headDo.Emsdrugs.Dt_begin_ui.Value < DateTime.Now.AddMinutes(-10))) { ci.OrdErrorList.Add("开始日期不能在当前日期之前!"); } } if (headDo.Emsdrugs.Dt_end_ui != null && (headDo.Emsdrugs.Dt_begin_ui > headDo.Emsdrugs.Dt_end_ui)) { ci.OrdErrorList.Add("结束日期不能在开始日期之前!"); } //校验在开始时间和结束时间之间有没有有效执行顿数,没有给提示 new OrderDrugHerbViewModel().judgeBeginEndTimeHasMpTimes(headDo.Emsdrugs.Dt_begin_ui, headDo.Emsdrugs.Dt_end_ui, headDo.Emsdrugs.Id_freq); if (headDo.Emsdrugs.EmsOrDrugList.Count == 0) { ci.OrdErrorList.Add("没有任何药品!"); } bool bcf = headDo.Emsdrugs.EmsOrDrugList.GroupBy(i => i.Id_mm).Where(g => g.Count() > 1).Count() >= 1; if (bcf) { ci.OrdErrorList.Add("药品有重复!"); } #region 空药品 if (headDo.Emsdrugs.EmsOrDrugList.Count(p => p.Id_srv == null || p.Id_srv == "" || p.Name_srv == null || p.Name_srv == "" || p.Spec_mm == null || p.Spec_mm == "" || p.Spec_mm == null || p.Spec_mm == "") > 0) { ci.OrdErrorList.Add("药品有空数据!"); } #endregion #region 总量大于0 foreach (EmsOrDrug item in headDo.Emsdrugs.EmsOrDrugList) { if (item.Quan_med == null || item.Quan_med.ToDouble() <= 0) { ci.OrdErrorList.Add(item.Name_mm + "剂量必须大于0!"); } } #endregion #region 药品库存的判断 string mmcounterror = LogicEx.GetInstance().validateDrugCount(headDo.Emsdrugs.EmsOrDrugList.ToList()); if (!string.IsNullOrEmpty(mmcounterror)) { ci.OrdErrorList.Add(mmcounterror); } #endregion return(true); }
/// <summary> /// 校验医疗单上的必输项 /// </summary> /// <param name="ci"></param> /// <returns></returns> public bool OrdValidateMustInput(CiorderBaseControl ci) { if (ci is OrdApBuView) { string errorInfo = ((OrdApBuView)ci).validateBeforeSave(); if (!string.IsNullOrWhiteSpace(errorInfo)) { ci.OrdErrorList.Add(errorInfo); return(false); } return(true); } foreach (var ctl in ci.Controls) { if (ctl is XapFormControl) { if (((XapFormControl)ctl).HasErrors) { string errorstr = ((XapFormControl)ctl).ErrorAlertText; ci.OrdErrorList.Add(string.IsNullOrEmpty(errorstr)? "请输入必填项":errorstr); return(false); } } } return(true); }
public bool OrdValivate(EmsUIDTO uiDto, CiorderBaseControl ci) { List <string> errList = new List <string>(); #region 开始日期不能小于入院日期 string errMsg = LogicEx.GetInstance().CompareWithAdmission(uiDto.PatInfo.Id_ent, uiDto.Emsdrugs.Dt_begin_ui); if (!string.IsNullOrEmpty(errMsg)) { errList.Add(errMsg); } #endregion #region 结束日期要大于开始日期 DateTime?dtBegin = uiDto.Emsdrugs.Dt_begin_ui; DateTime?dtEnd = uiDto.Emsdrugs.Dt_end_ui; if (dtBegin != null && dtEnd != null) { if (dtEnd < dtBegin) { errList.Add(OrdParam.MESSAGE_TIEMCHECK); } } #endregion if (errList.Count > 0) { ci.OrdErrorList.AddRange(errList); return(false); } return(true); }
void GetObjInfo() { DirectoryInfo fdir = new DirectoryInfo(Application.StartupPath + "\\Plus"); FileInfo[] file = fdir.GetFiles("*.dll", SearchOption.TopDirectoryOnly); //lup_dll.Properties.DataSource = file; string strdllName = "dll名称"; System.Reflection.Assembly assembly = System.Reflection.Assembly.LoadFrom(Application.StartupPath + "\\Plus\\" + strdllName); System.Type[] types = assembly.GetTypes(); foreach (var item in types) { if (item.BaseType.Name == "CiorderBaseControl") { Type type = assembly.GetType(item.FullName); CiorderBaseControl rm = (CiorderBaseControl)Activator.CreateInstance(type); CiOrdSheet sheet = new CiOrdSheet(); sheet.Name = rm.SheetName; sheet.Des = rm.SheetDes; sheet.Dll_model = strdllName; sheet.Dll_assembly = type.FullName; sheetList.Add(sheet); } } //gc_dllcavas.DataSource = dt; }
public bool OrdValivate(EmsUIDTO uiDto, CiorderBaseControl ci) { List <string> errList = new List <string>(); #region 女性年满18岁,生育史必填 //if (uiDto.PatInfo.Sd_sex == "2" && uiDto.PatInfo.Dt_birth!=null) { // DateTime dt = Convert.ToDateTime(uiDto.PatInfo.Dt_birth); // int age = (DateTime.Now - dt).Days / 365; // if (age >= 18 && (uiDto.Emsapbt.Parturition_cnt == null || uiDto.Emsapbt.Pregnat_num == null)) // { // errList.Add("年满18岁的女性患者,生育史必填!"); // } //} #endregion //献血史勾选上后,献血证号必填 //if (uiDto.Emsapbt.Fg_db != null && uiDto.Emsapbt.Fg_db==true && uiDto.Emsapbt.No_db == null) //{ // errList.Add("请填写献血证号!"); //} if (uiDto.Emsapbt.Parturition_cnt != null && uiDto.Emsapbt.Parturition_cnt > 0) { if (uiDto.Emsapbt.Pregnat_num <= 0) { errList.Add("生育史 孕不能小于0或等于0"); } } if (errList.Count > 0) { ci.OrdErrorList.AddRange(errList); return(false); } return(true); }
public bool OrdValivate(ciordems.d.EmsUIDTO headDo, CiorderBaseControl ci) { List <string> errList = new List <string>(); if (headDo.Emsapcons.EmsConsAssistItem.Count == 0) { errList.Add("请录入协诊方!"); } if (headDo.Emsapcons.EmsConsAssistItem.Count != 1) { string depid = ""; foreach (EmsItemInCons item in headDo.Emsapcons.EmsConsAssistItem) { if (depid != null || depid != "") { if (item.Id_dep_emp.Equals(depid)) { errList.Add("请勿重复邀请同一个科室协诊!"); break; } } depid = item.Id_dep_emp; } } if (errList.Count > 0) { ci.OrdErrorList.AddRange(errList); return(false); } return(true); }
public bool OrdValivate(EmsUIDTO headDo, CiorderBaseControl ci) { List <string> errList = new List <string>(); #region 计划手术时间大于申请时间 if (headDo.Emsapop.Dt_plan < headDo.Emsapop.Dt_creat) { errList.Add("计划手术时间应大于手术申请时间!"); } #endregion if (errList.Count > 0) { ci.OrdErrorList.AddRange(errList); return(false); } #region 将其他人员表中选择了角色但没有选择人员的数据去掉 for (int i = headDo.Emsapop.OpEmpItem.Count - 1; i >= 0; i--) { if (string.IsNullOrEmpty(headDo.Emsapop.OpEmpItem[i].Id_emp_op) && !CiDictCodeConst.SD_OP_ROLE_ZDYS.Equals(headDo.Emsapop.OpEmpItem[i].Sd_role) && !CiDictCodeConst.SD_OP_ROLE_DYZS.Equals(headDo.Emsapop.OpEmpItem[i].Sd_role)) { headDo.Emsapop.OpEmpItem.RemoveAt(i); } } #endregion return(true); }
/// <summary> /// 基于代表医疗单的的字符串反射创建对应的医疗单控件对象 /// </summary> /// <param name="Funcclassstr"></param> /// <returns></returns> public CiorderBaseControl GetCiorderBaseControl(String funcstr) { if (String.IsNullOrEmpty(funcstr)) { new Exception("没有匹配到医疗单"); } EmsFunclassKVDTO funclassDTO = EmsMatchTool.GetEmsFunclassKVDTO(funcstr); string dllAssembly = funclassDTO.Classpath_dll; string libName = funclassDTO.Dll; //String[] str = Funcclassstr.Split(','); //string dllAssembly = str[0]; //string libName = str[1]; try { //Assembly assembly = Assembly.LoadFrom(Application.StartupPath + "\\CiSheetPlus\\" + libName); Assembly assembly = Assembly.LoadFrom(Application.StartupPath + "\\" + libName); Type type = assembly.GetType(dllAssembly); CiorderBaseControl canvas = (CiorderBaseControl)Activator.CreateInstance(type); return(canvas); } catch //(Exception e) { throw new Exception("没有匹配到医疗单"); } }
public bool OrdValivate(EmsUIDTO headDo, CiorderBaseControl ci) { List <string> errList = new List <string>(); if (headDo.Emsdrugs.Use_days == null) { errList.Add("【" + headDo.Emsdrugs.Name_srv + "】使用天数不能为空, 请检查!"); } else if (headDo.Emsdrugs.Use_days == 0) { errList.Add("【" + headDo.Emsdrugs.Name_srv + "】使用天数不能为 0天,请检查!"); } if (headDo.Emsdrugs.EmsOrDrugList[0].Quan_cur == null || headDo.Emsdrugs.EmsOrDrugList[0].Quan_cur == 0) { errList.Add("【" + headDo.Emsdrugs.Name_srv + "】总量不能为空!请检查!"); } #region 药品库存的判断 string mmcounterror = LogicEx.GetInstance().validateDrugCount(headDo.Emsdrugs.EmsOrDrugList.ToList()); if (!string.IsNullOrEmpty(mmcounterror)) { errList.Add(mmcounterror); } #endregion if (errList.Count > 0) { ci.OrdErrorList.AddRange(errList); return(false); } return(true); }
public bool OrdValivate(EmsUIDTO headDo, CiorderBaseControl ci) { LogicEx logicEx = LogicEx.GetInstance(); List <string> errList = new List <string>(); if (headDo.Emsapobs.EmsOrObsList == null || headDo.Emsapobs.EmsOrObsList.Count == 0) { errList.Add("请选择检查项目"); } if (headDo.Emsapobs.EmsOrObsList.Count > 0) { bool isTrue = false; foreach (EmsObsLap obs in headDo.Emsapobs.EmsOrObsList) { if (obs.Name_srv == null || obs.Name_srv == "") { isTrue = true; } } if (isTrue) { errList.Add("检查项目不能空"); } } //if (headDo.Emsapobs.Dt_plan < logicEx.GetServerDataTime()) // errList.Add("检查时间不能小于当前时间!"); if (errList.Count > 0) { ci.OrdErrorList.AddRange(errList); return(false); } return(true); }
/// <summary> /// 使用医疗单上挂接的校验对象进行校验 /// </summary> /// <param name="headDo"></param> /// <param name="ci"></param> /// <returns></returns> public bool OrdBPValidate(EmsUIDTO headDo, CiorderBaseControl ci) { IValidate val = ci.GetOrdValidate(); if (val != null) { return(val.OrdValivate(headDo, ci)); } return(true); }
public bool OrdValivate(ciordems.d.EmsUIDTO headDo, CiorderBaseControl ci) { List <string> errList = new List <string>(); //if (headDo.Emsappathgy.EmsItemInpathgy == null || headDo.Emsappathgy.EmsItemInpathgy.Count == 0) //{ // errList.Add("没有标本信息"); //} if (errList.Count > 0) { ci.OrdErrorList.AddRange(errList); return(false); } return(true); }
public bool OrdValivate(ciordems.d.EmsUIDTO headDo, CiorderBaseControl ci) { List <string> errList = new List <string>(); if (headDo.Emsaptrans.Id_dep_to == headDo.Emsaptrans.Id_dep_from && headDo.Emsaptrans.Id_dep_nur_to == headDo.Emsaptrans.Id_dep_nur_from) { errList.Add("目标科室、目标病区不能与原科室、原病区相同!"); } if (errList.Count > 0) { ci.OrdErrorList.AddRange(errList); return(false); } return(true); }
public bool OrdValivate(ciordems.d.EmsUIDTO headDo, CiorderBaseControl ci) { List <string> errList = new List <string>(); if (headDo.Emsapout.Des_outtp != null && headDo.Emsapout.Des_outtp.Length > 150) { errList.Add("字数超出了数据库的范围!"); } if (errList.Count > 0) { ci.OrdErrorList.AddRange(errList); return(false); } return(true); }
public bool OrdValivate(EmsUIDTO headDo, CiorderBaseControl ci) { List <string> errList = new List <string>(); if (headDo.Emsaplab.EmsOrObsList == null || headDo.Emsaplab.EmsOrObsList.Count == 0) { errList.Add("请选择一个检验项目!"); } if (errList.Count > 0) { ci.OrdErrorList.AddRange(errList); return(false); } return(true); }
/// <summary> /// 保存CI, 并切换到下一个CI /// </summary> public void ClearCurrentEms() { bool deleateflag = false; int deleateindex = -1; //emsDO = null;// 不能在这里面,因为会影响草药 if (currentEmsControl != null) { splitContainer1.RemoveRender(currentEmsControl); for (int index = 0; index < emsIndexAndButtonArea.IndexRenderList.Count; index++) { if (deleateflag) { if (index == deleateindex) { emsIndexAndButtonArea.IndexRenderList[index].Crossflag = false; emsIndexAndButtonArea.IndexRenderList[index].Editflag = true; this.emsDO = emsIndexAndButtonArea.IndexRenderList[index].Ci.EmsHeadDO; this.dto = emsIndexAndButtonArea.IndexRenderList[index].Ci.CiEmsDTO; //this.splitContainer1.Panel1.Controls.Add(render.Ci); emsIndexAndButtonArea.IndexRenderList[index].Ci.Dock = DockStyle.None; emsIndexAndButtonArea.IndexRenderList[index].Location = TMPrender.Location; TMPrender = emsIndexAndButtonArea.IndexRenderList[index]; currentEmsControl = emsIndexAndButtonArea.IndexRenderList[index].Ci; this.splitContainer1.AddControl(emsIndexAndButtonArea.IndexRenderList[index].Ci, xap.cli.sdk.controls.ControlPosition.Center); } else { emsIndexAndButtonArea.IndexRenderList[index].Location = new Point(emsIndexAndButtonArea.IndexRenderList[index - 1].Location.X + 40, emsIndexAndButtonArea.IndexRenderList[index - 1].Location.Y); } emsIndexAndButtonArea.IndexRenderList[index].Invalidate(); } else if (emsIndexAndButtonArea.IndexRenderList[index].Editflag) { this.emsList.Remove(emsIndexAndButtonArea.IndexRenderList[index].ID); emsIndexAndButtonArea.xapScrollBarPanel1.RemoveRender(emsIndexAndButtonArea.IndexRenderList[index]); TMPrender = emsIndexAndButtonArea.IndexRenderList[index]; emsIndexAndButtonArea.IndexRenderList.Remove(emsIndexAndButtonArea.IndexRenderList[index]); deleateflag = true; deleateindex = index--; } } emsIndexAndButtonArea.xapScrollBarPanel1.Invalidate(); } GC.Collect(); }
/// <summary> /// 关闭某个医疗单 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void orCom_deleteevent(object sender, EventArgs e) { //处理 List <XRoundRender> list = new List <XRoundRender>(); XRoundRender activeRender = null; foreach (XRoundRender render in emsIndexAndButtonArea.IndexRenderList) { if (!render.Editflag) { list.Add(render); } else { activeRender = render; emsIndexAndButtonArea.xapScrollBarPanel1.RemoveRender(render); //只有处于编辑状态的是激活的,删除的也是这个 } } //按钮区已删除,处理上边对应的view区域 if (activeRender != null) { XRoundRender nextRender = GetNextActiveRender(activeRender); if (nextRender == null) { emsDO = null; this.splitContainer1.RemoveRender(this.EmsIndexAndButtonArea); //清除“确认”、“取消”按钮 this.tabNaviControl.CanShowForm = false; this.ClearEmsList(); //清空数据 this.tabNaviControl.TabNavigationForm.Close(); //关闭右缩面板 } else { nextRender.Editflag = true; this.emsDO = nextRender.Ci.EmsHeadDO; this.dto = nextRender.Ci.CiEmsDTO; nextRender.Ci.Dock = DockStyle.None; TMPrender = nextRender; currentEmsControl = nextRender.Ci; orderItemView.SetTabText(currentEmsControl.SheetName); this.splitContainer1.AddControl(nextRender.Ci, xap.cli.sdk.controls.ControlPosition.Center); } } emsIndexAndButtonArea.IndexRenderList = list; //zzj,最好能直接删除,不要这样直接替换,能够节约内存 emsIndexAndButtonArea.xapScrollBarPanel1.Invalidate(); }
/// <summary> /// 单击多医疗单情况下的底下的索引序号 /// </summary> /// <param name="sender">点的是哪个序号的控件</param> /// <param name="e"></param> private void orCom_MouseClick(object sender, MouseEventArgs e) { if (TMPrender != null) { TMPrender.Invalidate(); } //splitContainer1.Panel1.Controls.Clear(); XRoundRender render = sender as XRoundRender; //做校验的地方 foreach (XRoundRender Pastrender in emsIndexAndButtonArea.IndexRenderList) { if (Pastrender.Equals(render)) { Pastrender.Crossflag = false; Pastrender.Editflag = true; //currentEmsControl.OnRefreshData(this.UiEmsDict[Pastrender.ID] as EmsUIDTO, this.UiEmsDict[Pastrender.ID] as CiEmsDTO); Pastrender.Ci.EmsHeadDO = this.UiEmsDict[Pastrender.ID] as EmsUIDTO; Pastrender.Ci.CiEmsDTO = this.CiEmsDict[Pastrender.ID] as CiEmsDTO; this.emsDO = Pastrender.Ci.EmsHeadDO; this.dto = Pastrender.Ci.CiEmsDTO; //this.splitContainer1.Panel1.Controls.Add(render.Ci); render.Ci.Dock = DockStyle.None; currentEmsControl = Pastrender.Ci; //界面更换完毕后要刷新界面,否则数据无法显示 currentEmsControl.OnRefreshData(this.UiEmsDict[Pastrender.ID] as EmsUIDTO, this.CiEmsDict[Pastrender.ID] as CiEmsDTO); orderItemView.SetTabText(currentEmsControl.SheetName); this.splitContainer1.AddControl(Pastrender.Ci, xap.cli.sdk.controls.ControlPosition.Center); } else { if (Pastrender.Editflag) { Pastrender.Editflag = false; } } // TMPrender = render; //zzj:这句没必要放循环里,因为每次都是一样的 } TMPrender = render; //zzj:这句没必要放循环里,因为每次都是一样的 }
/// <summary> /// /// </summary> /// <param name="strSdsrvtp"></param> /// <returns></returns> public CiorderBaseControl GetSheet(string strSdsrvtp) { CiOrdSheet sheet = GetSheetId(strSdsrvtp); if (sheet == null) { return(null); } string libName = sheet.Dll_model; string dllAssembly = sheet.Dll_assembly; try { Assembly assembly = Assembly.LoadFrom(Application.StartupPath + "\\CiSheetPlus\\" + libName); Type type = assembly.GetType(dllAssembly); CiorderBaseControl canvas = (CiorderBaseControl)Activator.CreateInstance(type); return(canvas); } catch (Exception e) { throw new Exception(e.ToString()); } }
public bool OrdValivate(EmsUIDTO uiDto, CiorderBaseControl ci) { bool flag = true; #region 校验是否选择了备血申请 if (uiDto.CiordubDTO == null) { ci.OrdErrorList.Add("备血申请不存在,请先开立备血申请!"); flag = false; } #endregion #region 校验用血量 if (uiDto.CiordubDTO != null && (uiDto.CiordubDTO.Quan_medu_ub <= 0 || uiDto.CiordubDTO.Quan_medu_ub > uiDto.CiordubDTO.Num_margin_bu)) { ci.OrdErrorList.Add("本次用血量的值无效!"); flag = false; } #endregion return(flag); }
public bool OrdValivate(EmsUIDTO headDo, CiorderBaseControl ci) { List <string> errList = new List <string>(); if (headDo.Emsdrugs.EmsOrDrugList.Count == 0) { errList.Add("请选择药品服务!"); ci.OrdErrorList.AddRange(errList); return(false); } #region 出院带药下必须填写总量 if (headDo.Emsdrugs.Fg_outp.Value) { foreach (EmsOrDrug item in headDo.Emsdrugs.EmsOrDrugList) { if (item.Quan_cur == null || item.Quan_cur.ToDouble() <= 0) { errList.Add("出院带药必须填写总量,且大于0!"); } if (item.Name_unit_sale == null || item.Name_unit_sale == "") { errList.Add("出院带药必须填写总量单位!"); } } } foreach (EmsOrDrug item in headDo.Emsdrugs.EmsOrDrugList) { if (item.Quan_med == null || item.Quan_med.ToDouble() <= 0) { errList.Add(item.Name_srv + "剂量不能为空且要求大于0!"); } } #endregion #region 长期标志下,使用天数必填 #endregion #region 总量不能为0 //foreach (EmsOrDrug item in headDo.Emsdrugs.EmsOrDrugList) //{ // if (item.Quan_cur == null || item.Quan_cur.Value == 0 || item.Quan_cur.Value < 0) // { // errList.Add("总量必须大于0!"); // } //} #endregion #region 执行次数不能大于频次数 if (!headDo.IsOpData) { //if (headDo.Emsdrugs.Quan_firday_mp == null) //{ // errList.Add("首次执行次数不能为空!"); //} if ((headDo.Emsdrugs.Freqct != null) && (headDo.Emsdrugs.Quan_firday_mp > headDo.Emsdrugs.Freqct)) { errList.Add("首次执行次数不能大于医嘱频次数!"); } } #endregion #region #endregion #region 开始日期不能小于入院日期 string errMsg = cof.CompareWithAdmission(headDo.PatInfo.Id_ent, headDo.Emsdrugs.Dt_begin_ui); if (!string.IsNullOrEmpty(errMsg)) { errList.Add(errMsg); } #endregion #region 结束日期不能小于开始日期 if (headDo.Emsdrugs.Dt_end_ui != null && (headDo.Emsdrugs.Dt_begin_ui > headDo.Emsdrugs.Dt_end_ui)) { errList.Add("结束日期不能在开始日期之前!"); } #endregion #region 频次=星期时,当录入值必须为7的倍数 if (!string.IsNullOrEmpty(headDo.Emsdrugs.Sd_srvtp) && headDo.Emsdrugs.Sd_srvtp.Equals(BdSrvDictCodeConst.SD_FREQUNIT_WEEK) && headDo.Emsdrugs.Use_days % 7 != 0) { errList.Add("周为频次下,天数必须是7的倍数!"); } #endregion #region 药品库存的判断 string mmcounterror = LogicEx.GetInstance().validateDrugCount(headDo.Emsdrugs.EmsOrDrugList.ToList()); if (!string.IsNullOrEmpty(mmcounterror)) { errList.Add(mmcounterror); } #endregion if (errList.Count > 0) { ci.OrdErrorList.AddRange(errList); return(false); } return(true); }
public bool OrdValivate(ciordems.d.EmsUIDTO headDo, CiorderBaseControl ci) { #region 出院带药下必须填写总量 List <string> errList = new List <string>(); if (headDo.Emsdrugs.Fg_outp != null && headDo.Emsdrugs.Fg_outp.Value) { foreach (EmsOrDrug item in headDo.Emsdrugs.EmsOrDrugList) { if (item.Quan_cur == null || item.Quan_cur.ToDouble() <= 0) { errList.Add("出院带药必须填写总量,且大于0!"); } } } #endregion #region 开始日期不能小于入院日期 if (!headDo.IsOpData) { string errMsg = cof.CompareWithAdmission(headDo.PatInfo.Id_ent, headDo.Emsdrugs.Dt_begin_ui); if (!string.IsNullOrEmpty(errMsg)) { errList.Add(errMsg); } } #endregion #region 结束日期不能大于开始日期 if (headDo.Emsdrugs.Dt_end_ui != null && (headDo.Emsdrugs.Dt_begin_ui > headDo.Emsdrugs.Dt_end_ui)) { errList.Add("结束日期不能在开始日期之前!"); } #endregion bool bcf = headDo.Emsdrugs.EmsOrDrugList.GroupBy(i => i.Id_mm).Where(g => g.Count() > 1).Count() >= 1; if (bcf) { ci.OrdErrorList.Add("药品有重复!"); } #region 空药品 if (headDo.Emsdrugs.EmsOrDrugList.Count(p => p.Id_srv == null || p.Id_srv == "") > 0) { ci.OrdErrorList.Add("药品有空数据!"); } #endregion #region 总量大于0 foreach (EmsOrDrug item in headDo.Emsdrugs.EmsOrDrugList) { if (item.Quan_med == null || item.Quan_med.ToDouble() <= 0) { ci.OrdErrorList.Add(item.Name_mm + "剂量必须大于0!"); } } #endregion #region 药品不能为空 if (headDo.Emsdrugs.EmsOrDrugList.Count == 0) { errList.Add("药品不能为空!"); } #endregion #region if (headDo.Emsdrugs.Use_days < 0) { errList.Add("用药天数小于0!"); } #endregion #region 药品库存的判断 string mmcounterror = LogicEx.GetInstance().validateDrugCount(headDo.Emsdrugs.EmsOrDrugList.ToList()); if (!string.IsNullOrEmpty(mmcounterror)) { errList.Add(mmcounterror); } #endregion if (errList.Count > 0) { ci.OrdErrorList.AddRange(errList); return(false); } return(true); }
/// <summary> /// 加载医嘱对应的医疗单视图 /// </summary> /// <param name="srvTp">服务类型</param> /// <param name="med"></param> private void LoadOrderView(string srvTp, MedSrvDO med) { if (srvTp.Length < 4) { this.ShowInfo(string.Format("服务类型有误长度不足4位!目前是{0},请检查", srvTp)); return; } // 20190919的优化 把创建过的对象放到一个字典中,每次用时候 去集合判断 存在直接取用 string ctlKey = ""; switch (srvTp.Substring(0, 2)) { case "01": //药品 switch (srvTp.Substring(2, 2)) { case "01": //西药 case "02": switch (srvTp.Substring(4)) { case "03": case "04": //注射类 currentEmsControl = new OpOrderInfusionView() { Dock = DockStyle.Fill }; emsDO.EmsType = EmsType.IV; break; default: //口服类 currentEmsControl = new OpOrderDrugsView() { Dock = DockStyle.Fill }; emsDO.EmsType = EmsType.COMMONDRUG; break; } break; case "03": //草药 currentEmsControl = new OpOrderHerbsView() { Dock = DockStyle.Fill }; emsDO.EmsType = EmsType.HERB; break; } if (status == DOStatus.NEW) { emsDO.MedSrvDO = med; orDataBing.AddDrugDataBing(emsDO, med); //绑定药品带过来的数据//自定义服务和非自定义服务列表数据绑定的值不同 if (med.Fg_ctm == null || med.Fg_ctm == false) //非自定义服务 { emsDO.Emsdrugs.EmsOrDrug = cof.GetSrvMm(emsDO, med.Id_srv, emsDO.PatInfo.Code_entp); // emsDO.Emsdrugs.EmsOrDrug = cof.MmSortList(emsDO.Emsdrugs.EmsOrDrug); if (emsDO.Emsdrugs.EmsOrDrug.Count > 0) { //每次将关联药品的第一条插入到 药品列表 emsDO.Emsdrugs.EmsOrDrugList.Add(cof.DoCopy(emsDO.Emsdrugs.EmsOrDrug.First())); } if (emsDO.Emsdrugs.EmsOrDrug.Count == 1 && string.IsNullOrEmpty(emsDO.Emsdrugs.EmsOrDrug[0].Id_mm)) { this.ShowInfo(emsDO.Emsdrugs.EmsOrDrug[0].Name_srv + "编码" + emsDO.Emsdrugs.EmsOrDrug[0].Code_srv + "未绑定物品,请与信息科联系!", "提示"); this.emsDO = null; return; } } else { EmsOrDrug customSrv = new EmsOrDrug(); customSrv.Name_srv = med.Name; customSrv.Fg_mm = false; customSrv.Fg_ctm = true; customSrv.Id_srv = med.Id_srv; customSrv.Id_srvtp = med.Id_srvtp; customSrv.Sd_srvtp = med.Sd_srvtp; customSrv.Fg_self = true; customSrv.Id_unit_med = med.Id_unit_med; customSrv.Name_unit_med = med.Med_name; customSrv.Quan_med = med.Quan_med; emsDO.Emsdrugs.EmsOrDrugList.Add(customSrv); } } else { orCiEmsToUiEms.EditDrug(dto, emsDO); } cof.concateExtNote(emsDO.Emsdrugs.EmsOrDrugList, this.bannerDto, emsDO); break; case "02": //检查属性 //emsDO = cof.CreatEmsIntance(); emsDO.PatInfo = bannerDto; emsDO.EmsType = EmsType.RIS; ctlKey = srvTp + "obs"; if (status == DOStatus.NEW) { emsDO.PatInfo = bannerDto; orDataBing.AddCommonHeadDataBing(emsDO, med); obslab.AddObsLoadData(emsDO, med); } else { //orDataBing.EditObsDataBing(emsDO, dto);//检查对照 //emsDO.Emsapobs.EmsOrDrugList.Clear();//检查药品绑定 //emsDO.Emsapobs.EmsOrDrugList = cof.GetOrdMm(emsDO, string.Join("','", agg.getOrdSrvDO().Select(p => p.Id_orsrv))); emsDO.Emsapobs.EmsOrDrugList.Clear(); //检查药品绑定 orCiEmsToUiEms.EditEmsObs(emsDO, dto); } //if(ci==null) this.currentEmsControl = new OpOrderApobsView() { Dock = DockStyle.Fill }; break; case "03": //检验属性 //emsDO = cof.CreatEmsIntance(); emsDO.PatInfo = bannerDto; ctlKey = srvTp + "lab"; emsDO.EmsType = EmsType.LIS; if (status == DOStatus.NEW) { emsDO.PatInfo = bannerDto; //医嘱信息 orDataBing.AddCommonHeadDataBing(emsDO, med); //检验属性和 检验的项目 obslab.AddLabLoadData(emsDO, med); //(服务套) } else { // //orDataBing.EditLabDataBing(emsDO, agg); // emsDO.Emsaplab.EmsOrDrugList.Clear();//检查药品绑定 } // if(ci==null) this.currentEmsControl = new OpOrderAplabView() { Dock = DockStyle.Fill }; break; case "04": //手术属性 //LoadOrderView2(srvTp, dto, med); switch (srvTp.Substring(2, 2)) { case "01": break; default: break; } ctlKey = srvTp + "oper"; if (status == DOStatus.NEW) { //emsDO = cof.CreatEmsIntance(); //公共信息 orDataBing.AddCommonHeadDataBing(emsDO, med); //绑定表单数据 orDataBing.AddOpDataBing(emsDO, med); //手术前检查指标数据 //emsDO.Emsapop.OpLabItem = cof.GetBtLabItme(med.Id_srv);//获取术前检验项目 //EmsItemInOp item = new EmsItemInOp(); //item.Id_mmtp = "0001AA1000000000ELL6"; //item.Name_mmtp = "物品类型"; //emsDO.Emsapop.OpMmItem.Add(item); } else { orCiEmsToUiEms.EditApop(emsDO, dto); // orDataBing.EditHeadDataBing(emsDO, agg); // orDataBing.EditOpDataBing(emsDO, agg);//表单 // orDataBing.EditOpEmpDataBing(emsDO, agg);//手术人员 // orDataBing.EditOpMmDataBing(emsDO, agg);//手术卫材 } emsDO.EmsType = EmsType.OPER; // if(ci==null) this.currentEmsControl = new OrderOpView() { Dock = DockStyle.Fill }; break; case "14": //血液属性 switch (srvTp.Substring(4, 2)) { //140101 血液制品 //140102 用血 case "01": //输血 备血 if (status == DOStatus.NEW) { //emsDO = cof.CreatEmsIntance(); orDataBing.AddCommonHeadDataBing(emsDO, med); orDataBing.AddBtDataBing(emsDO, med); //emsDO.Emsapbt.BtLabItem = cof.GetBtLabItme(med.Id_srv);//获取输血前检验项目 } else { orDataBing.editApbtDataBiding(emsDO, dto); } emsDO.EmsType = EmsType.BT; // if(ci==null) this.currentEmsControl = new OrderApbtView() { Dock = DockStyle.Fill }; break; case "02": //用血 if (status == DOStatus.NEW) { orDataBing.AddCommonHeadDataBing(emsDO, med); } else { OrdAppBtUseDO odp = dto.Orapplysheet[((int)EmsType.BTUSE).ToString()] as OrdAppBtUseDO; FArrayList li = dto.Emssrvs; CiEmsSrvDTO srvDto = li[0] as CiEmsSrvDTO; if (odp != null) { emsDO.CiordubDTO = new CiordubDTO(); emsDO.CiordubDTO.No_applyform_ub = odp.No_applyform; emsDO.CiordubDTO.Dt_bu_pl_ub = odp.Dt_bu_plan; //emsDO.CiordubDTO.Applyform=odp. emsDO.CiordubDTO.Orsrvname = dto.Name; emsDO.CiordubDTO.Id_srv = dto.Id_srv; emsDO.CiordubDTO.Name_unit = srvDto.Name_unit_med; emsDO.CiordubDTO.Quan_medu_ub = srvDto.Quan_med; emsDO.CiordubDTO.Id_route = dto.Id_route; emsDO.CiordubDTO.Name_route = dto.Name_route; emsDO.CiordubDTO.Status = DOStatus.UPDATED; emsDO.CiordubDTO.Id_apbu = odp.Id_apbu; emsDO.CiordubDTO.Name_emp_create = dto.Name_emp_phy; emsDO.CiordubDTO.Id_emp_create = dto.Id_emp_phy; emsDO.CiordubDTO.Id_or_rel = dto.Id_or_rel; } } emsDO.EmsType = EmsType.BTUSE; //if(ci==null) this.currentEmsControl = new OrdApBuView() { Dock = DockStyle.Fill }; break; } break; default: break; } emsDO.MedSrvDO = med; }