コード例 #1
0
        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);
        }
コード例 #2
0
ファイル: OrderDataVerify.cs プロジェクト: fhis/order.client
 /// <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);
 }
コード例 #3
0
        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);
        }
コード例 #4
0
        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;
        }
コード例 #5
0
        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);
        }
コード例 #6
0
        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);
        }
コード例 #7
0
ファイル: OrderOpValidate.cs プロジェクト: fhis/order.client
        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);
        }
コード例 #8
0
ファイル: OrderGetSheetEx.cs プロジェクト: fhis/order.client
        /// <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("没有匹配到医疗单");
            }
        }
コード例 #9
0
        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);
        }
コード例 #10
0
        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);
        }
コード例 #11
0
ファイル: OrderDataVerify.cs プロジェクト: fhis/order.client
        /// <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);
        }
コード例 #12
0
        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);
        }
コード例 #13
0
        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);
        }
コード例 #14
0
ファイル: OrderOutValidate.cs プロジェクト: fhis/order.client
        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);
        }
コード例 #15
0
        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);
        }
コード例 #16
0
ファイル: OpOrderCardView.cs プロジェクト: fhis/order.client
        /// <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();
        }
コード例 #17
0
ファイル: OpOrderCardView.cs プロジェクト: fhis/order.client
        /// <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();
        }
コード例 #18
0
ファイル: OpOrderCardView.cs プロジェクト: fhis/order.client
        /// <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:这句没必要放循环里,因为每次都是一样的
        }
コード例 #19
0
ファイル: OrderGetSheetEx.cs プロジェクト: fhis/order.client
        /// <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());
            }
        }
コード例 #20
0
        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);
        }
コード例 #21
0
        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);
        }
コード例 #22
0
        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);
        }
コード例 #23
0
ファイル: OpOrderCardView.cs プロジェクト: fhis/order.client
        /// <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;
        }