/// <summary>
        /// 获得所有的子节点中的医嘱模板的id
        /// </summary>
        /// <param name="tmpl"></param>
        /// <returns></returns>
        public FArrayList getAllChildOrTmplDTO(OrTmplDTO tmpl, string sd_ortmpltp)
        {
            FArrayList modelList = new FArrayList();

            if (tmpl.OrtmplType == "1")
            {
                modelList.Add(tmpl.Id_ortmpl.Substring(0, tmpl.Id_ortmpl.Length - 1));
            }
            if (this.mapTree != null)
            {
                FArrayList hospitalList = mapTree[BdSrvDictCodeConst.SD_OWTP_HOSPIAL_ID] as FArrayList;
                foreach (OrTmplDTO dto in hospitalList)
                {
                    if (dto.Id_ortmplca == tmpl.Id_ortmpl && dto.Sd_ortmpltp == sd_ortmpltp)
                    {
                        if (dto.OrtmplType == "1")
                        {
                            modelList.Add(dto.Id_ortmpl.Substring(0, dto.Id_ortmpl.Length - 1));
                        }
                        modelList.AddRange(getAllChildOrTmplDTO(dto, sd_ortmpltp));
                    }
                }
            }
            return(modelList);
        }
        private XapDataList <OrTmplDTO> pickOrTmlBySdModelType(FArrayList hospitalList, string sd_type)
        {
            XapDataList <OrTmplDTO> dataTree = new XapDataList <OrTmplDTO>();
            //if (sd_type == BdSrvDictCodeConst.SD_ORTMPLTP_FHMBA)
            //{
            //    foreach (OrTmplDTO dto in hospitalList)
            //    {
            //        dataTree.Add(dto);
            //    }
            //}
            //else
            //{
            FArrayList modelItmlist  = new FArrayList();   //模板类型下的数据
            FArrayList modelClaslist = new FArrayList();   //模板分类

            foreach (OrTmplDTO dto in hospitalList)
            {
                if (string.IsNullOrWhiteSpace(dto.Sd_ortmpltp))
                {
                    modelClaslist.Add(dto);
                    continue;
                }
                if (dto.Sd_ortmpltp.Equals(sd_type))
                {
                    modelItmlist.Add(dto);
                }
            }
            if (modelItmlist.Count > 0)
            {
                FArrayList reModelClasList = new FArrayList();
                foreach (OrTmplDTO dto in modelItmlist)
                {
                    getParentOrTmplDTO(modelClaslist, reModelClasList, dto);
                }
                modelItmlist.AddRange(reModelClasList);
                int i = 1;
                foreach (OrTmplDTO dto in modelItmlist)
                {
                    //Log.writelog(dto.Id_ortmpl + "," + dto.Name + ":" + (i++));
                    dataTree.Add(dto);
                }
            }
            //}
            return(dataTree);
        }
Exemple #3
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);
        }