Esempio n. 1
0
        /// <summary>
        /// 根据就诊信息费用清单数据
        /// </summary>
        /// <returns></returns>
        public bool newLoad()
        {
            if (this.GetEnt4BannerDTO() == null)
            {
                return(false);
            }
            FeeListLoadDTO feeListLoadDTO = new FeeListLoadDTO();
            CiEnContextDTO ciEnContextDTO = BaseEmsView.BaseEmsInfoContext["CiEnContextDTO"] as CiEnContextDTO;

            if (ciEnContextDTO == null)
            {
                return(false);
            }
            feeListLoadDTO.EnContext = ciEnContextDTO;
            FeeListRstDTO feeListRstDTO = iCiFeeListMainService.load(feeListLoadDTO);
            FArrayList    feeList       = feeListRstDTO.Document as FArrayList;

            if (null != feeList && feeList.Count > 0)
            {
                this.tableDatasource = feeList.Cast <CiOrdFeeSrvDTO>().ToArray(); // 控件不支持,不应该直接改写对象
            }
            else
            {
                //this.errorMsgString = "获取费用清单数据失败";
                tableDatasource.Clear();
            }
            return(false);
        }
Esempio n. 2
0
        public bool oldLoad()
        {
            if (this.GetEnt4BannerDTO() == null)
            {
                return(false);
            }
            this.errorMsgString = "";
            try
            {
                idor2EmsDTOMap.Clear();
                idor2OrderDOMap.Clear();
                {
                    FMap2 rtnMap = iCiOrdQryService.getOrdFeebill(GetEnt4BannerDTO().Id_ent, GetEnt4BannerDTO().Code_entp);
                    if (rtnMap != null && rtnMap.Keys.Count > 0 && rtnMap.Keys.Contains("orders") && rtnMap.Keys.Contains("emses"))
                    {
                        FArrayList ordList  = rtnMap["orders"] as FArrayList;
                        FArrayList emsList  = rtnMap["emses"] as FArrayList;
                        FMap       blsrvmap = rtnMap["blsrvdes"] as FMap;

                        CiOrderDO[] szOrders = ordList.Cast <CiOrderDO>().ToArray();
                        CiEmsDTO[]  szEmses  = emsList.Cast <CiEmsDTO>().ToArray();

                        // 装配UI数据
                        List <CiOrdFeeSrvDTO> list = OrdFeeBillListFrom(szOrders, szEmses, blsrvmap);
                        if (null != list && list.Count > 0)
                        {
                            this.tableDatasource = list.ToArray(); // 控件不支持,不应该直接改写对象
                        }
                        else
                        {
                            tableDatasource.Clear();
                        }
                    }
                    else
                    {
                        this.errorMsgString = "获取费用清单数据失败";
                        return(false);
                    }
                }
            }
            catch (XapServiceException e)
            {
                this.errorMsgString = e.ErrorMsg.Message;
            }
            catch (Exception e)
            {
                this.errorMsgString = e.Message;
            }


            return(false);
        }
 /// <summary>
 /// 获取控件相关的数据,不涉及界面(不读写界面元素)。
 /// </summary>
 protected override void OnLoadData()
 {
     if (!string.IsNullOrWhiteSpace(this.id_ortmpl))
     {
         FMap map = this.model.getNewOrderTemplateDTO2(this.Ent4BannerDTO, new string[] { this.id_ortmpl });
         if (map != null)
         {
             FArrayList templList = map[this.id_ortmpl] as FArrayList;
             if (templList != null)
             {
                 templateDtoArray = templList.Cast <NewOrderTemplateDTO>().ToArray();
             }
         }
     }
 }
Esempio n. 4
0
        /// <summary>
        /// 获取控件相关的数据,不涉及界面(不读写界面元素)。
        /// </summary>
        protected override void OnLoadData()
        {
            if (!string.IsNullOrWhiteSpace(modeltype))
            {
                this.treeKeyModel = this.model.loadTreeModel(this.modeltype);
            }

            isLoaded = true;
            FArrayList modelIds = this.model.getModelIdByModelType(this.modeltype);

            modelMap = this.model.getNewOrderTemplateDTO2(this.BannerDTO, modelIds.Cast <string>().ToArray());
            foreach (string keyId in modelMap.Keys)
            {
                FArrayList list = modelMap[keyId] as FArrayList;
                if (this.parentFrame.cacheModelItem == null)
                {
                    this.parentFrame.cacheModelItem = new Dictionary <string, FArrayList>();
                }
                if (!this.parentFrame.cacheModelItem.ContainsKey(keyId))
                {
                    this.parentFrame.cacheModelItem.Add(keyId, list);
                }
            }
        }
Esempio n. 5
0
        /// <summary>
        /// 签署
        /// </summary>
        /// <param name="orders"></param>
        /// <param name="ent4BannerDto"></param>
        /// <returns></returns>
        public bool SignCiOrder(CiOrderDO[] orders, Ent4BannerDTO ent4BannerDto)
        {
            if (orders.Count() == 0)
            {
                return(false);
            }
            // 增加就诊上下文环境,用户医嘱签署时,在医嘱中保存保外诊断相关属性
            CiEnContextDTO contextDTO = CiEnContextUtil.GetCiEnContext(ent4BannerDto, this.emsAppModeEnum, this.context);
            List <string>  idors      = orders.Select(p => p.Id_or).ToList();
            // 签署,如果不满足签署条件返回提示信息
            ValidateRtnInfoDTO vlInfoDto = this.maintainService.ciOrderSign(idors.ToArray(), contextDTO);
            FMap2 fm1 = vlInfoDto.Scenedatum;

            if (fm1 != null && fm1["specilDrugs"] != null)
            {
                if (this.IsContinue("提示", fm1["specilDrugs"].ToString()))
                {
                    return(false);
                }
            }
            if (fm1 != null && fm1["willCheckIdOrs"] != null)
            {
                //医保和临床路径未判断的话,就弹窗进行判断
                FArrayList   willCheckIdOrs = (FArrayList)fm1["willCheckIdOrs"];
                string[]     id_ors         = willCheckIdOrs.Cast <string>().ToArray();
                OrReport     report         = new OrReport(id_ors);
                DialogResult result         = report.ShowDialog(XFormManager.MainFrom);
                if (result == DialogResult.OK)
                {
                    return(SignCiOrder(orders, ent4BannerDto));
                }
                else
                {
                    return(false);
                }
            }
            //开立权限校验
            if (fm1 != null && fm1.Keys.Contains("UnCheckIdors"))
            {
                FArrayList    uncheckidList = fm1["UnCheckIdors"] as FArrayList;
                List <string> uncheckids    = uncheckidList.Cast <String>().ToList();// fm1["UnCheckIdors"].ToString().Substring(1, fm1["UnCheckIdors"].ToString().Length-2).Split(',').ToList();
                if (uncheckids.Count == orders.Length)
                {
                    this.ShowInfo(fm1["ErrMsg"].ToString());
                    return(false);
                }
                if (!this.IsContinue("提示", fm1["ErrMsg"] + "是否继续?"))
                {
                    return(false);
                }
                else
                {
                    if (uncheckids.Count > 0)
                    {
                        List <CiOrderDO> ciordlist = orders.ToList();
                        foreach (string idor in uncheckids)
                        {
                            ciordlist.Remove(ciordlist.Find(p => p.Id_or == idor.Trim()));
                        }
                        return(SignCiOrder(ciordlist.ToArray(), ent4BannerDto));
                    }
                    else
                    {
                        if (!this.IsContinue("提示", fm1["ErrMsg"] + "是否继续?"))
                        {
                            return(false);
                        }
                        else
                        {
                            if (uncheckids.Count > 0)
                            {
                                List <CiOrderDO> ciordlist = orders.ToList();
                                foreach (string idor in uncheckids)
                                {
                                    ciordlist.Remove(ciordlist.Find(p => p.Id_or == idor.Trim()));
                                }
                                return(SignCiOrder(ciordlist.ToArray(), ent4BannerDto));
                            }
                        }
                    }
                }
            }
            FMap2 HpMesage = vlInfoDto.Rtnvalue;

            if (HpMesage != null)
            {
                String message = (String)HpMesage["HPMessage"];
                if (message != null)
                {
                    this.ShowInfo(message);
                    vlInfoDto = this.maintainService.CiOrderSignMedicalInsurance(vlInfoDto.Scenedatum, code_entp);
                }
            }
            FMap2 fm = vlInfoDto.Rtnvalue;

            if (fm1 != null && fm1["checkPatInfoSrvs"] != null)
            {
                // 如果是毒麻药,需要保存代理人信息
                FArrayList              checkPatInfoSrvs = (FArrayList)fm1["checkPatInfoSrvs"];
                OrSrvAgentInfoDO        agentInfo        = LogicEx.GetInstance().newOrSrvAgentInfoDOFromBanner(ent4BannerDto);
                CheckPatAgentInfoDialog dialog           = new CheckPatAgentInfoDialog(agentInfo, checkPatInfoSrvs);
                if (dialog.ShowDialog() == DialogResult.OK)
                {
                    this.maintainService.saveCheckPatInfo(checkPatInfoSrvs, agentInfo);
                }
                else
                {
                    return(false);
                }
            }
            this.InitMrSignCiOrderList(vlInfoDto);
            ReactExtOrsAndStopOrsDO redo = (ReactExtOrsAndStopOrsDO)fm["willstopors"];

            if (!(redo != null && redo.Reactextdos != null && redo.Stopordos != null))
            {
                if (fm1 != null)
                {
                    vlInfoDto = maintainService.ciOrderSignStep1(fm1, ent4BannerDto.Code_entp, contextDTO);
                    this.InitMrSignCiOrderList(vlInfoDto);
                }
                return(true);
            }
            fm1.Add("willstopors", redo);
            FArrayList fa2   = new FArrayList();
            FArrayList extdo = redo.Reactextdos;
            FArrayList wildo = redo.Stopordos;

            if (extdo != null && wildo != null)
            {
                string strReactType       = "";
                string modifyStopTimeSrvs = ""; //修改停止时间的服务名称串
                string addStopTimeSrvs    = ""; //添加停止时间的服务名称串
                if (extdo.Count > 0)
                {
                    int?   reacttype = (extdo[0] as CiorderAggExtDO).Reacttype;
                    string name_or   = (extdo[0] as CiorderAggExtDO).Aggdo.getParentDO().Name_or;
                    if (reacttype != null)
                    {
                        if ((int)reacttype == 1)
                        {
                            strReactType = "全排斥";
                        }
                        else if ((int)reacttype == 2)
                        {
                            strReactType = "组内排斥";
                        }
                    }
                    foreach (CiOrderDO stopordo in wildo)
                    {
                        if (stopordo.Fg_stop == null || stopordo.Fg_stop == false)
                        {
                            addStopTimeSrvs += stopordo.Name_or + ",";
                        }
                        else
                        {
                            modifyStopTimeSrvs += stopordo.Name_or + ",";
                        }
                    }
                    if (addStopTimeSrvs.Length > 0)
                    {
                        addStopTimeSrvs = addStopTimeSrvs.Substring(0, addStopTimeSrvs.Length - 1);
                    }
                    if (modifyStopTimeSrvs.Length > 0)
                    {
                        modifyStopTimeSrvs = modifyStopTimeSrvs.Substring(0, modifyStopTimeSrvs.Length - 1);
                    }
                    string msg = reactOrWarnInfo(name_or, strReactType, addStopTimeSrvs, modifyStopTimeSrvs);
                    var    a   = MessageBoxEx.Show(msg, "医嘱排斥", MessageBoxButtons.YesNo);
                    if (a == DialogResult.Yes)
                    {
                        maintainService.ciOrderSignStep1(fm1, ent4BannerDto.Code_entp, contextDTO);
                    }
                    else
                    {
                        return(false);
                    }
                }
            }
            return(true);
        }
Esempio n. 6
0
        /// <summary>
        /// 将费用项目合并到医疗单的服务项目列表中
        /// </summary>
        /// <param name="szExpenseSrv"></param>
        /// <returns></returns>
        protected virtual bool MergeExpenseSrv(EmsOrDrug[] szExpenseSrv, CiEmsDTO ems)
        {
            FArrayList srvList = ems.Emssrvs;
            var        addList = new List <CiEmsSrvDTO>();

            foreach (EmsOrDrug item in szExpenseSrv)
            {
                // 处理逻辑删除数据
                srvList.Cast <CiEmsSrvDTO>().ToList().ForEach(p =>
                {
                    if (!string.IsNullOrEmpty(p.Id_orsrv) && string.IsNullOrEmpty(p.Id_srv) && p.Status != DOStatus.DELETED)
                    {
                        p.Status = DOStatus.DELETED;
                    }
                });

                // 临床项目和相同的服务,处理医保信息和医保的医生是否已判断标识
                if (item.Fg_or.Value || srvList.Cast <CiEmsSrvDTO>().Count(p => p.Id_srv != null && p.Id_srv.Equals(item.Id_srv)) > 0)
                {
                    var emssrvdto = srvList.Cast <CiEmsSrvDTO>().FirstOrDefault(p => p.Status != DOStatus.DELETED && p.Id_srv != null && p.Id_srv.Equals(item.Id_srv));
                    if (emssrvdto != null)
                    {
                        if (emssrvdto.Fg_selfpay != null && !emssrvdto.Fg_selfpay.Value)
                        {
                            //emssrvdto.Fg_hpindicjudged = item.Fg_hpindicjudged;
                            emssrvdto.Fg_indic = item.Fg_treat;
                            //emssrvdto.Fg_selfpay = item.Fg_selfpay;
                        }
                    }
                    continue;
                }
                // 处理删除状态的费用项目
                if (item.IsDELETED && !string.IsNullOrEmpty(item.Id_orsrv))
                {
                    var delItem = srvList.Cast <CiEmsSrvDTO>().FirstOrDefault(p => p.Id_orsrv != null && p.Id_orsrv.Equals(item.Id_orsrv));
                    if (null != delItem)
                    {
                        delItem.Status = DOStatus.DELETED;
                    }
                }

                // 套内 非临床 不计费 设置为删除
                if ((ems.Fg_set != null && ems.Fg_set == true) && (item.Fg_or == null || !item.Fg_or.Value) && (item.Fg_bl == null || !item.Fg_bl.Value))
                {
                    item.Status = DOStatus.DELETED;
                }


                // 处理更新状态的费用项目

                // 处理新增状态的费用项目

                addList.Add(ConvertOf(item, ems.Fg_set != null && ems.Fg_set.Value));
            }
            // 如果有新追加的费用项目,则将其追加到医疗单费用列表的尾部
            if (addList.Count > 0)
            {
                srvList.AddRange(addList);
            }
            return(true);
        }
Esempio n. 7
0
        /// <summary>
        /// 医嘱签署
        /// </summary>
        /// <param name="orders"></param>
        /// <param name="patInfo"></param>
        /// <returns></returns>
        public bool SignOrders(CiOrderDO[] orders, Ent4BannerDTO ent4BannerDto, FMap2 map2)
        {
            // TODO:填写医嘱签署逻辑
            if (orders == null || orders.Length == 0)
            {
                return(false);
            }

            OrderOperateDTO operateDTO = new OrderOperateDTO();
            // 增加就诊上下文环境,用户医嘱签署时,在医嘱中保存保外诊断相关属性
            CiEnContextDTO contextDTO = CiEnContextUtil.GetCiEnContext(ent4BannerDto, EmsAppModeEnum.SVEMSAPPMODE, this.context);

            operateDTO.Document = new FArrayList();
            orders.ToList <CiOrderDO>().ForEach(ord => { operateDTO.Document.append(ord.Id_or); });


            operateDTO.EnContext = contextDTO;
            operateDTO.Extension = map2;
            OrderRstDTO orderRstDTO = orderActionSign.exec(new OrderOperateDTO[] { operateDTO })[0];

            if (orderRstDTO == null)
            {
                return(false);
            }
            FMap2 emsExtension = orderRstDTO.Extension;

            if (emsExtension != null)
            {
                if (emsExtension["specilDrugs"] != null)
                {
                    //特殊药判断提示
                    if (!this.IsContinue("提示", emsExtension["specilDrugs"].ToString()))
                    {
                        return(SignOrders(orders, ent4BannerDto, emsExtension));
                    }
                    else
                    {
                        return(false);
                    }
                }
                //医保规则
                if (emsExtension["hprule"] != null)
                {
                    FArrayList2 hplist      = (FArrayList2)emsExtension["hprule"];
                    bool        information = false; // fasle  提示, true 终止

                    if (hplist != null && hplist.Count > 0)
                    {
                        List <MedicalSharingDTO> medicalSharinglist = new List <MedicalSharingDTO>();

                        foreach (MedicalSharingDTO dto in hplist)
                        {
                            if (dto != null && dto.Code == "Stop")
                            {
                                information = true;
                            }
                            medicalSharinglist.Add(dto);
                        }
                        using (MedicalSharingInfoForm from = new MedicalSharingInfoForm(medicalSharinglist))
                        {
                            from.Text = "医保规则验证";
                            if (information)
                            {
                                from.confirmBtn.Visible = false;
                                from.cancelBtn.Text     = "确定";
                            }
                            else
                            {
                                from.cancelBtn.Visible = false;
                                from.confirmBtn.Text   = "确定";
                            }
                            if (from.ShowDialog() == DialogResult.OK)
                            {
                                return(SignOrders(orders, ent4BannerDto, emsExtension));
                            }
                            else
                            {
                                return(false);
                            }
                        }
                    }
                }
                if (emsExtension["willCheckIdOrs"] != null)
                {
                    //医保和临床路径未判断的话,就弹窗进行判断
                    FArrayList   willCheckIdOrs = (FArrayList)emsExtension["willCheckIdOrs"];
                    string[]     id_ors         = willCheckIdOrs.Cast <string>().ToArray();
                    OrReport     report         = new OrReport(id_ors);
                    DialogResult result         = report.ShowDialog(XFormManager.MainFrom);
                    if (result == DialogResult.OK)
                    {
                        FMap2 map = map2;
                        return(SignOrders(orders, ent4BannerDto, map));
                    }
                    else
                    {
                        return(false);
                    }
                }

                if (emsExtension.Keys.Contains("UnCheckIdors"))
                {
                    //开立权限校验
                    FArrayList    uncheckidList = emsExtension["UnCheckIdors"] as FArrayList;
                    List <string> uncheckids    = uncheckidList.Cast <String>().ToList();
                    if (uncheckids.Count == orders.Length)
                    {
                        this.ShowInfo(emsExtension["ErrMsg"].ToString());
                        return(false);
                    }
                    if (!this.IsContinue("提示", emsExtension["ErrMsg"] + "是否继续?"))
                    {
                        return(false);
                    }
                    else
                    {
                        if (uncheckids.Count > 0)
                        {
                            List <CiOrderDO> ciordlist = orders.ToList();
                            foreach (string idor in uncheckids)
                            {
                                ciordlist.Remove(ciordlist.Find(p => p.Id_or == idor.Trim()));
                            }
                            FMap2 map = new FMap2();
                            return(SignOrders(ciordlist.ToArray(), ent4BannerDto, map));
                        }
                    }
                }

                if (emsExtension["checkPatInfoSrvs"] != null)
                {
                    // 如果是毒麻药,需要保存代理人信息
                    FArrayList              checkPatInfoSrvs = (FArrayList)emsExtension["checkPatInfoSrvs"];
                    OrSrvAgentInfoDO        agentInfo        = LogicEx.GetInstance().newOrSrvAgentInfoDOFromBanner(ent4BannerDto);
                    CheckPatAgentInfoDialog dialog           = new CheckPatAgentInfoDialog(agentInfo, checkPatInfoSrvs);
                    if (dialog.ShowDialog() == DialogResult.OK)
                    {
                        this.maintainService.saveCheckPatInfo(checkPatInfoSrvs, agentInfo);
                        FMap2 map = new FMap2();
                        return(SignOrders(orders, ent4BannerDto, map));
                    }
                    else
                    {
                        return(false);
                    }
                }

                this.initMrSignCiOrderList(emsExtension);
            }

            return(true);
        }