Ejemplo n.º 1
0
        /// <summary>
        /// 费用页签加载时,判断适应症和自费标识
        /// </summary>
        /// <param name="drug"></param>
        /// <param name="ordDrug"></param>
        /// <returns></returns>
        public static CiEmsSrvDTO HandleCiEmsSrvDTOHPInfo(CiEmsSrvDTO ciemssrvdto)
        {
            //非医保或者保外诊断时
            CiEnContextDTO ciEnContextDTO = BaseEmsView.BaseEmsInfoContext["CiEnContextDTO"] as CiEnContextDTO;
            bool           isHpEnable     = false;

            //是否启用医保标志
            if (BaseEmsView.BaseEmsInfoContext.ContainsKey("isMedicalInsuranceEnable"))
            {
                isHpEnable = (bool)BaseEmsView.BaseEmsInfoContext["isMedicalInsuranceEnable"];
            }
            int opMedInsuranceAuditHandel = 99;

            if (BaseEmsView.BaseEmsInfoContext.ContainsKey("opMedInsuranceAuditHandel"))
            {
                opMedInsuranceAuditHandel = (int)BaseEmsView.BaseEmsInfoContext["opMedInsuranceAuditHandel"];
            }

            if (!string.IsNullOrEmpty(ciEnContextDTO.Id_hp) &&
                true == ciEnContextDTO.Fg_hpfundpay && HpBeyondEnum.HPDIAG.Equals(ciEnContextDTO.Eu_hpbeyond) /*保内诊断*/ && isHpEnable && opMedInsuranceAuditHandel == 0)
            {
            }
            else
            {
                ciemssrvdto.Fg_selfpay = true;  //自费
                ciemssrvdto.Fg_treat   = false; //非医保适应症
            }
            return(ciemssrvdto);
        }
Ejemplo n.º 2
0
        public override void EditEms(CiEmsDTO ems)
        {
            base.EditEms(ems);

            orCiEmsToUiEms.EditCommon(this.ciEmsDTO, uiEmsDTO);
            this.uiEmsDTO.Status = DOStatus.NEW;
            EmsOrDrug drug = new EmsOrDrug();

            drug.Id_srv   = this.ciEmsDTO.Id_srv;
            drug.Name_srv = this.ciEmsDTO.Name;
            CiEmsSrvDTO emssrv = this.ciEmsDTO.Emssrvs[0] as CiEmsSrvDTO;

            drug.Id_unit_med   = emssrv.Id_unit_med;
            drug.Name_unit_med = emssrv.Name_unit_med;
            drug.Id_freq       = emssrv.Id_freq;
            drug.Name_freq     = emssrv.Name_freq;
            drug.Sd_frequnitct = emssrv.Sd_frequnitct;
            drug.Freqct        = emssrv.Freqct;
            drug.Id_mp_dep     = emssrv.Id_dep;
            drug.Name_mp_dep   = emssrv.Name_dep;
            drug.Note_or       = ciEmsDTO.Note;
            drug.Fg_treat      = emssrv.Fg_indic;
            drug.Use_days      = this.ciEmsDTO.Days_or;
            drug.Quan_med      = (emssrv.Quan_med == null ? 1 : emssrv.Quan_med);
            drug.Quan_cur      = (emssrv.Quan_cur == null ? this.logicEx.getNotDrugTotal(drug.Quan_med.ToDouble(), drug.Id_freq, drug.Freqct.Value, drug.Use_days.Value) : emssrv.Quan_cur);;
            drug.Price         = emssrv.Price;
            drug.Totalprice    = drug.Price * drug.Quan_cur;
            drug.Fg_bl         = emssrv.Fg_bl;
            drug.Id_srvtp      = ciEmsDTO.Id_srvtp;
            drug.Sd_srvtp      = ciEmsDTO.Sd_srvtp;
            drug.Eu_sourcemd   = emssrv.Eu_sourcemd;
            uiEmsDTO.Emsdrugs.EmsOrDrugList.Add(drug);
            //执行科室
            OrWfDeptInfoDTO wf = new GetDeptMpImp().GetDept_mp_ids(this.uiEmsDTO.PatInfo.Code_entp,
                                                                   this.uiEmsDTO.PatInfo.Id_entp,
                                                                   this.uiEmsDTO.MedSrvDO.Sd_srvtp,
                                                                   this.uiEmsDTO.MedSrvDO.Id_srvca,
                                                                   this.uiEmsDTO.MedSrvDO.Id_srv,
                                                                   this.uiEmsDTO.MedSrvDO.Id_route,
                                                                   "", this.uiEmsDTO.PatInfo.Id_dep_nur, this.uiEmsDTO.PatInfo.Id_dep_phy);

            if (wf != null)
            {
                strMpDepFilter = wf.Id_mp_depts;
            }
        }
Ejemplo n.º 3
0
        /// <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;
        }
Ejemplo n.º 4
0
        /// <summary>
        /// 保存费用清单数据
        /// </summary>
        /// <returns></returns>

        public bool Save()
        {
            bool rtn = true;

            this.errorMsgString = "";
            // 从表格数据源获取
            List <CiEmsSrvDTO> updateSrvList = new List <CiEmsSrvDTO>();

            this.tableDatasource.ToList().ForEach(srv =>
            {
                if (srv.IsNEW && idor2EmsDTOMap.ContainsKey(srv.Id_or))
                {
                    /**
                     * 新增场景:通过 Id_or 找到对应的医疗单,然后,拿到医疗单的服务列表对象,将表格中补录的费用对象。转化为医疗单服务对象,追加到医疗单列表中;
                     * 并设置医疗单为更新状态
                     **/
                    CiEmsDTO ems       = idor2EmsDTOMap[srv.Id_or];
                    CiEmsSrvDTO addSrv = new CiEmsSrvDTO();
                    addSrv.deSerializeJson(srv.serializeJson());
                    addSrv.Id_srv_src = ems.Id_srv;
                    //addSrv.Id_or = null;
                    addSrv.Fg_set        = false;
                    addSrv.Dt_create_srv = CommonExtentions.NowTime(this);
                    addSrv.Price_cur     = addSrv.Amt_total;
                    addSrv.Amt_total     = null;
                    addSrv.Sortno        = ems.Emssrvs.Cast <CiEmsSrvDTO>().Count(p => !p.IsDELETED) + 1;
                    updateSrvList.Add(addSrv);
                }
                else if (srv.IsDELETED && idor2EmsDTOMap.ContainsKey(srv.Id_or))
                {
                    /**
                     * 删除场景:找到医疗单中需要删除的 服务项目 ,然后设置 status 状态为 Deleted;
                     * 如果在医疗单的服务项目中没有找到,列表选择的 服务项目 ,则应该是出现了异常情况,不应该发生;
                     **/
                    CiEmsDTO ems = idor2EmsDTOMap[srv.Id_or];
                    // id_orsrv 不为空,则进行数据库数据删除
                    if (!string.IsNullOrEmpty(srv.Id_orsrv))
                    {
                        CiEmsSrvDTO delSrv = ems.Emssrvs.Cast <CiEmsSrvDTO>().FirstOrDefault(p => p.Id_orsrv.Equals(srv.Id_orsrv));
                        if (delSrv != null)
                        {
                            delSrv.Status = DOStatus.DELETED;
                            updateSrvList.Add(delSrv);
                        }
                    }
                    // 非数据库中记录数据,则直接从列表中删除
                    else
                    {
                        this.tableDatasource.Remove(srv);
                    }
                }
                else if (srv.IsUPDATED && idor2EmsDTOMap.ContainsKey(srv.Id_or))
                {
                    /**
                     * 更新场景:找到医疗单中需要更新的 服务项目 ,然后设置 status 状态为 Update;
                     * 如果在医疗单的服务项目中没有找到,列表选择的 服务项目 ,则应该是出现了异常情况,不应该发生;
                     **/
                    CiEmsDTO ems          = idor2EmsDTOMap[srv.Id_or];
                    CiEmsSrvDTO updateSrv = ems.Emssrvs.Cast <CiEmsSrvDTO>().FirstOrDefault(p => srv.Id_orsrv.Equals(p.Id_orsrv));
                    if (updateSrv != null)
                    {
                        ems.Status = DOStatus.UPDATED;
                        updateSrv.deSerializeJson(srv.serializeJson());
                        updateSrvList.Add(updateSrv);
                    }
                    else
                    {
                        this.errorMsgString = "需要更新的费用项目,并没有在后台查到相关记录";
                        rtn = false;
                    }
                }
                //else if (srv.IsUNCHANGED && idor2EmsDTOMap.ContainsKey(srv.Id_or))
                //{
                //    // 将没有改变的
                //    CiEmsDTO ems = idor2EmsDTOMap[srv.Id_or];
                //    CiEmsSrvDTO unChangedSrv = ems.Emssrvs.Cast<CiEmsSrvDTO>().FirstOrDefault(p => srv.Id_orsrv.Equals(p.Id_orsrv));
                //    unChangedSrv.Status = DOStatus.UNCHANGED;
                //    updateSrvList.Add(unChangedSrv);
                //}
            });

            if (updateSrvList.Count > 0)
            {
                try {
                    CiEnContextDTO ctx    = CiEnContextUtil.GetCiEnContext(this.GetEnt4BannerDTO(), this.context);
                    CiEmsSrvDTO[]  rtSrvs = XapServiceMgr.find <ICiOrdMaintainService>().saveOrdFeeBill(updateSrvList.ToArray(), ctx);
                }
                catch (XapServiceException e) {
                    this.errorMsgString = e.ErrorMsg != null?e.ErrorMsg.Message:e.Message;
                    rtn = false;
                }
                catch (Exception e) {
                    this.errorMsgString = e.Message;
                    rtn = false;
                }
            }
            return(rtn);
        }
Ejemplo n.º 5
0
        /// <summary>
        /// 将CiEmsSrvDTO对象转化为UI模型EmsOrDrug对象
        /// </summary>
        /// <param name="p"></param>
        /// <param name="dto"></param>
        /// <returns></returns>
        protected virtual EmsOrDrug ConvertOf(CiEmsSrvDTO p, CiEmsDTO dto = null)
        {
            return(new EmsOrDrug
            {
                Status = (p.Eu_sourcemd == (int)OrSrvSourceFromEnum.PHYSIANFEEADD ? DOStatus.UPDATED : DOStatus.UNCHANGED),
                Id_orsrv = p.Id_orsrv,     //医疗单项目主键标识
                Id_srv_src = p.Id_srv_src, // 所属服务来源
                //Id_or =         //医疗单	SINGLE	F
                Sortno = p.Sortno,         //序号	SINGLE	I
                Id_srv = p.Id_srv,         //医疗服务	REF
                Sd_srvtp = p.Sd_srvtp,     //服务类型sd
                Id_srvtp = p.Id_srvtp,     //服务类型id
                Id_srvca = p.Id_srvca,     //服务分类
                Code_srv = p.Code_srv,
                //Id_srv_set	     //所属服务套	SINGL
                Name_srv = p.Name_srv,           //医疗服务名称	SINGL
                Id_unit_med = p.Id_unit_med,     //医疗单位	REF
                Name_unit_med = p.Name_unit_med, //医疗单位编码	SINGL
                Quan_med = p.Quan_med,           //剂量	SINGLE	F
                Price = p.Price,                 //参考价格	SINGL
                Id_freq = p.Id_freq,             //医嘱频次	REF
                Name_freq = p.Name_freq,         //医嘱频次名称	SINGL
                Freqct = p.Freqct,

                //Des = p.Des_srv,          //备注	SINGLE
                Fg_or = p.Fg_or,                  //医嘱标识	SINGL
                Fg_bl = p.Fg_bl,                  //费用标识	SINGL
                //Id_org_srv	      //开立机构	SINGL
                //Id_dep_srv	      //开立科室	SINGL
                //Id_ward_srv	      //开立病区	SINGL
                //Id_emp_srv	      //开立人员	SINGL
                //Dt_last_bl	      //最近生成日期	SINGL
                Eu_sourcemd = p.Eu_sourcemd,                                    // 来源
                Eu_blmd = p.Eu_blmd,                                            //划价方式	SINGL
                Id_emsordrug = p.Id_orsrvmm,                                    //服务项目物品	SINGL
                Id_mm = p.Id_mm,                                                //物品	SINGLE
                Code_mm = p.Code_mm,                                            //物品编码	SINGL
                Name_mm = p.Name_mm,                                            //物品名称	SINGL
                Spec_mm = p.Spec_mm,                                            //规格	SINGLE	S
                Id_pgku_cur = p.Id_unit_sale,                                   //零售单位	REF
                Name_pgku_cur = p.Name_unit_sale,                               //零售单位名称	SINGL
                Id_unit_base = p.Id_unit_base,                                  //基本单位	REF
                Id_unit_sale = p.Id_unit_sale,                                  //总量单位id
                Name_unit_base = p.Name_unit_base,                              //基本单位名称	SINGL
                Name_unit_sale = p.Name_unit_sale,
                Quan_cur = (p.Fg_mm == false ? p.Quan_total_medu : p.Quan_cur), //总量_当前	SINGL
                Quan_base = p.Quan_base,                                        //总量_基本	SINGL
                Factor_cb = p.Factor_cb,                                        //当前基本换算系数	S
                Factor_mb = p.Factor_mb,                                        //医疗基本换算系数	S
                Id_dosage = p.Id_dosage,                                        //药品剂型	SINGL
                Sd_dosage = p.Sd_dosage,                                        //药品剂型编码	SINGL
                Id_pharm = p.Id_pharm,                                          //药理分类	SINGL
                Sd_pharm = p.Sd_pharm,                                          //药理分类编码	SINGL
                Id_pois = p.Id_pois,                                            //毒麻分类	SINGL
                Sd_pois = p.Sd_pois,                                            //毒麻分类编码	SINGL
                Id_anti = p.Id_anti,                                            //抗菌药分类	SINGL
                Sd_anti = p.Sd_anti,                                            //抗菌药分类编码	S
                Id_mmtp = p.Id_mmtp,                                            //物品类型	SINGL
                Sd_mmtp = p.Sd_mmtp,                                            //物品类型编码	SINGL
                Id_val = p.Id_val,                                              //价值分类	SINGL
                Sd_val = p.Sd_val,                                              //价值分类编码	SINGL
                Id_boildes = p.Id_boildes,                                      //煎法
                Name_boildes = p.Name_boildes,                                  //煎法名称
                Fg_propc = p.Fg_propc,                                          //预防用药标识
                Fg_treat = p.Fg_indic,                                          //治疗用药标识
                Note_or = p.Des_srv,                                            //备注
                Id_mp_dep = p.Id_dep,                                           //执行科室id
                Name_mp_dep = p.Name_dep,                                       //执行科室
                Fg_self = p.Fg_self,                                            //自备药标识
                Fg_dose_anoma = p.Fg_dose_anoma,                                //变动用药标识
                Fg_ctm = p.Fg_selfsrv,                                          //自定义服务标志
                Fg_selfpay = p.Fg_selfpay,                                      // 自费标志
                //Indica = p.Indica,	          //适应症	SINGLE	S
                //Constr	          //禁忌症	SINGLE	S
                //React	          //不良反应	SINGL
                //Guide	          //主要作用	SINGL
                //Fg_otc	          //OTC标识	SINGL
                //Emsfreqdose	      //变动用药安排	SINGL
                //Id_body	          //部位	SINGLE
                //Sd_body	          //部位编码	SINGL
                //Id_pos	          //体位	SINGLE
                //Sd_pos	          //体位编码	SINGL
                //Body_name	      //部位名称	SINGL
                Id_route = p.Id_route,
                Name_route = p.Name_route,
                Id_routedes = p.Id_routedes,
                Id_boil = p.Id_boil,
                Name_boil = p.Name_boil,
                Priby = p.Priby,
                Id_pri = p.Id_primd,
                Use_days = (dto != null ? dto.Days_or : 1), //使用天数
                Id_hp = p.Id_hp,
                Id_hpsrvtp = p.Id_hpsrvtp,
                Sd_hpsrvtp = p.Sd_hpsrvtp,
                Name_hpsrvtp = p.Name_hpsrvtp,
                Limit = p.Limit,
                Fg_hpindicjudged = p.Fg_hpindicjudged,//医生是否已判断过标识
                Des = p.Des_bl
            });
        }
Ejemplo n.º 6
0
        /// <summary>
        /// 将UI模型中的EmsOrDrug对象转化为CiEmsSrvDTO对象
        /// </summary>
        /// <param name="p"></param>
        /// <param name="fg_set"></param>
        /// <param name="srv"></param>
        /// <returns></returns>
        protected virtual CiEmsSrvDTO ConvertOf(EmsOrDrug p, bool fg_set = false, CiEmsSrvDTO srv = null)
        {
            CiEmsSrvDTO srvdto = (srv ?? new CiEmsSrvDTO());                   //

            srvdto.Eu_sourcemd = p.Eu_sourcemd;                                //医疗单项目数据来源
            srvdto.Id_orsrv    = p.Id_orsrv;                                   //医疗单项目主键标识
            //srvdto.Id_or	=                   //医疗单	SINGLE	F
            srvdto.Sortno     = p.Sortno;                                      //序号	SINGLE	I
            srvdto.Id_srv     = p.Id_srv;                                      //医疗服务	REF
            srvdto.Id_srv_src = (srv == null ? p.Id_srv_src : srv.Id_srv_src); // 所属服务来源 bl
            //srvdto.Id_srv_set = (fg_set ? srvdto.Id_srv_src : null);
            srvdto.Id_unit_med   = p.Id_unit_med;                              //医疗单位	REF
            srvdto.Name_unit_med = p.Name_unit_med;                            //医疗单位编码	SINGL
            srvdto.Quan_med      = p.Quan_med;                                 //剂量	SINGLE	F
            srvdto.Price         = p.Price;                                    //参考价格	SINGL
            srvdto.Id_freq       = p.Id_freq;                                  //医嘱频次	REF
            srvdto.Name_freq     = p.Name_freq;                                //医嘱频次名称	SINGL
            srvdto.Freqct        = p.Freqct;
            srvdto.Sd_frequnitct = p.Sd_frequnitct;
            srvdto.Id_route      = p.Id_route;                                          //用法标识	REF
            srvdto.Name_route    = p.Name_route;                                        //用法	SINGLE	S
            srvdto.Id_routedes   = (srv == null ? p.Id_routedes : srv.Id_route);        // p.Id_routedes;	      //用法要求标识	REF
            srvdto.Name_routedes = (srv == null ? p.Name_routedes : srv.Name_routedes); //p.Name_routedes;	  //用法要求	SINGL
            srvdto.Id_boil       = (srv == null ? p.Id_boil : srv.Id_boil);             //p.Id_boil;	          //煎法标识	REF
            srvdto.Name_boil     = (srv == null ? p.Name_boil : srv.Name_boil);         //p.Name_boil;	      //煎法	SINGLE	S
            srvdto.Id_boildes    = p.Id_boildes;                                        //煎法要求标识	REF
            srvdto.Name_boildes  = p.Name_boildes;                                      //煎法要求	SINGL
            srvdto.Fg_dose_anoma = p.Fg_dose_anoma;                                     //变动用药标识	SINGL
            srvdto.Des_srv       = p.Des;                                               //备注	SINGLE
            // srvdto.Fg_outp = (srv == null ? null : srv.Fg_outp);//p.Fg_outp;	          //出院带药标识	SINGL   ---- 已经弃用!!!
            srvdto.Fg_bl = p.Fg_bl;                                                     //
            //srvdto.Id_org_srv	      //开立机构	SINGL
            //srvdto.Id_dep_srv	      //开立科室	SINGL
            //srvdto.Id_ward_srv	      //开立病区	SINGL
            //srvdto.Id_emp_srv	      //开立人员	SINGL
            srvdto.Dt_create_srv = (srv == null ? CommonExtentions.NowTime(this) : srv.Dt_create_srv);//CommonExtentions.NowTime(this); //开立时间	SINGL
            //srvdto.Dt_last_bl	      //最近生成日期	SINGL
            //srvdto.Eu_blmd = p.Eu_blmd;          //划价方式	SINGL
            //srvdto.Id_orsrvmm = p.Id_emsordrug;	      //服务项目物品	SINGL
            srvdto.Id_mm   = p.Id_mm;                                                             //物品	SINGLE
            srvdto.Code_mm = p.Code_mm;                                                           //物品编码	SINGL
            srvdto.Name_mm = p.Name_mm;                                                           //物品名称	SINGL
            //srvdto.Spec_mm	          //规格	SINGLE	S
            srvdto.Id_unit_sale   = p.Id_unit_sale;                                               //零售单位	REF
            srvdto.Name_unit_sale = p.Name_unit_sale;                                             //零售单位名称	SINGL
            srvdto.Id_unit_base   = p.Id_unit_base;                                               //基本单位	REF
            srvdto.Name_unit_base = p.Name_unit_base;                                             //基本单位名称	SINGL
            //srvdto.Quan_num_base = p.Quan_base;	  //单次数量_分子	S
            srvdto.Quan_den_base   = 1;                                                           //单次数量_分母	S
            srvdto.Price_cur       = p.Price;                                                     //参考价当前	SINGL
            srvdto.Quan_cur        = p.Quan_cur;                                                  //总量_当前	SINGL
            srvdto.Quan_base       = p.Quan_base;                                                 //总量_基本	SINGL
            srvdto.Quan_bed_medu   = 0;                                                           //床边量_医学	SINGL
            srvdto.Quan_total_medu = p.Quan_cur;
            srvdto.Factor_cb       = p.Factor_cb;                                                 //当前基本换算系数	S
            srvdto.Factor_mb       = (p.Factor_mb == null || p.Factor_mb == 0) ? 1 : p.Factor_mb; //医疗基本换算系数	S
            srvdto.Id_dosage       = p.Id_dosage;                                                 //药品剂型	SINGL
            srvdto.Sd_dosage       = p.Sd_dosage;                                                 //药品剂型编码	SINGL
            srvdto.Id_pharm        = p.Id_pharm;                                                  //药理分类	SINGL
            srvdto.Sd_pharm        = p.Sd_pharm;                                                  //药理分类编码	SINGL
            srvdto.Id_pois         = p.Id_pois;                                                   //毒麻分类	SINGL
            srvdto.Sd_pois         = p.Sd_pois;                                                   //毒麻分类编码	SINGL
            srvdto.Id_anti         = p.Id_anti;                                                   //抗菌药分类	SINGL
            srvdto.Sd_anti         = p.Sd_anti;                                                   //抗菌药分类编码	S
            srvdto.Id_mmtp         = p.Id_mmtp;                                                   //物品类型	SINGL
            srvdto.Sd_mmtp         = p.Sd_mmtp;                                                   //物品类型编码	SINGL
            srvdto.Id_val          = p.Id_val;                                                    //价值分类	SINGL
            srvdto.Sd_val          = p.Sd_val;                                                    //价值分类编码	SINGL
            srvdto.Fg_self         = p.Fg_self;                                                   //自备药标识	SINGL
            srvdto.Fg_propc        = p.Fg_propc;                                                  //预防用药标识	SINGL
            srvdto.Fg_indic        = p.Fg_treat;                                                  //治疗用药标识	SINGL
            srvdto.Id_dep          = p.Id_mp_dep;                                                 //执行科室	REF
            srvdto.Name_dep        = p.Name_mp_dep;                                               //执行科室	REF
            srvdto.Des_srv         = p.Note_or;
            //皮试内容
            srvdto.Fg_skintest             = p.Fg_skintest;
            srvdto.Id_skintest_skip_reason = p.Id_skintest_skip_reason;
            srvdto.Sd_reltp        = p.Sd_reltp;
            srvdto.Id_or_rel       = p.Id_or_rel;
            srvdto.Fg_mm           = p.Fg_mm;
            srvdto.Fg_selfsrv      = p.Fg_ctm;
            srvdto.Fg_selfpay      = p.Fg_selfpay;                                               // 自费标志
            srvdto.Name_srv        = p.Name_srv;
            srvdto.Id_dep_wh       = p.Id_dep_wh;                                                //库房id 2016-08-03 zwq
            srvdto.Id_srvtp        = p.Id_srvtp;                                                 //服务类型	REF
            srvdto.Sd_srvtp        = p.Sd_srvtp;                                                 //服务类型编码	SINGL
            srvdto.Code_srv        = p.Code_srv;                                                 //医疗服务编码	SINGL
            srvdto.Name_srv        = p.Name_srv;                                                 //医疗服务名称	SINGL
            srvdto.Id_srvca        = p.Id_srvca;                                                 //服务项目基本分类	S
            srvdto.Fg_mm           = p.Fg_mm;                                                    //物品标识	SINGL
            srvdto.Fg_set          = (srv == null ? false : srv.Fg_set);                         //服务套标识	SINGL   bl
            srvdto.Fg_or           = (srv == null ? p.Fg_or : srv.Fg_or);                        //医嘱标识	SINGL
            srvdto.Innercode_srvca = (srv == null ? p.Innercode_srvca : srvdto.Innercode_srvca); //服务分类内部编码 bl
            //srvdto.Id_srv_set	     //所属服务套	SINGL
            srvdto.Id_hp            = p.Id_hp;                                                   //医保计划id zwq 2016-07-12
            srvdto.Id_hpsrvtp       = p.Id_hpsrvtp;                                              //医保目录类型 zwq 2016-07-12
            srvdto.Sd_hpsrvtp       = p.Sd_hpsrvtp;                                              //医保目录类型编码 zwq 2016-07-12
            srvdto.Fg_hpindicjudged = p.Fg_hpindicjudged;                                        //医生是否已判断过标识
            srvdto.Eu_blmd          = (srv == null ? p.Eu_blmd : srvdto.Eu_blmd);                //划价方式 bl
            srvdto.Emsagentinfo     = p.Agentinfolist;                                           //毒麻药品时核对的患者信息
            srvdto.Priby            = p.Priby;
            srvdto.Id_primd         = p.Id_pri;
            srvdto.Status           = (srv == null ? p.Status : srv.Status);
            return(srvdto);
        }
Ejemplo n.º 7
0
 protected virtual bool NeedGenExpense(CiEmsSrvDTO emsSrv)
 {
     return(emsSrv.Id_srv != null /*&& (emsSrv.Fg_bl != null && emsSrv.Fg_bl == true)*/);
 }
Ejemplo n.º 8
0
        public CiOrderDO Old_Save()
        {
            EmsOrDrug ems = uiEmsDTO.Emsdrugs.EmsOrDrugList[0];

            this.uiEmsDTO.Emsdrugs.Id_srv         = ems.Id_srv;
            this.uiEmsDTO.Emsdrugs.Name_srv       = ems.Name_srv;
            this.uiEmsDTO.Emsdrugs.Quan_med       = ems.Quan_med;
            this.uiEmsDTO.Emsdrugs.Id_unit_med    = ems.Id_unit_med;
            this.uiEmsDTO.Emsdrugs.Id_freq        = ems.Id_freq;
            this.uiEmsDTO.Emsdrugs.Name_freq      = ems.Name_freq;
            this.uiEmsDTO.Emsdrugs.Sd_frequnitct  = ems.Sd_frequnitct;
            this.uiEmsDTO.Emsdrugs.Freqct         = ems.Freqct;
            this.uiEmsDTO.Emsdrugs.Use_days       = ems.Use_days;
            this.uiEmsDTO.Emsdrugs.Quan_cur       = ems.Quan_cur;
            this.uiEmsDTO.Emsdrugs.Id_unit_sale   = ems.Id_unit_sale;
            this.uiEmsDTO.Emsdrugs.Name_unit_sale = ems.Name_unit_sale;
            this.uiEmsDTO.Emsdrugs.Id_dep         = ems.Id_mp_dep;
            this.uiEmsDTO.Emsdrugs.Name_dep       = ems.Name_mp_dep;
            this.uiEmsDTO.Emsdrugs.Price          = ems.Price;
            this.uiEmsDTO.Emsdrugs.Totalprice     = ems.Totalprice.ToString();
            this.uiEmsDTO.Emsdrugs.Note_or        = ems.Note_or;
            this.uiEmsDTO.Emsdrugs.Fg_treat       = ems.Fg_treat;
            this.uiEmsDTO.Emsdrugs.Id_srvtp       = ems.Id_srvtp;
            this.uiEmsDTO.Emsdrugs.Sd_srvtp       = ems.Sd_srvtp;
            this.uiEmsDTO.Emsdrugs.Fg_bl          = ems.Fg_bl;
            this.uiEmsDTO.Emsdrugs.Id_srvtp       = ems.Id_srvtp;
            this.uiEmsDTO.Emsdrugs.Sd_srvtp       = ems.Sd_srvtp;
            this.uiEmsDTO.Emsdrugs.Fg_selfpay     = ems.Fg_selfpay;
            List <CiEmsSrvDTO> srvList   = new List <CiEmsSrvDTO>();
            CiEmsSrvDTO        srvCommon = new CiEmsSrvDTO();

            if (ciEmsDTO.Emssrvs != null && ciEmsDTO.Emssrvs.Count > 0)
            {
                foreach (CiEmsSrvDTO item in ciEmsDTO.Emssrvs)
                {//遍历一下 把多条服务的放到内存集合当中,做什么用呢,后面你就知道了,为了修改时候 直接 把修改的字段赋值
                    srvList.Add(item);
                }
                //srvList = ciEmsDTO.Emssrvs.Cast<CiEmsSrvDTO>().ToList();
                CiEmsSrvDTO srvdb = srvList.FirstOrDefault(p => (p.Eu_sourcemd == (int)OrSrvSourceFromEnum.PHYSIAN && p.Id_srv == this.ciEmsDTO.Id_srv));//srvCommon  公用服务 专门针对那些只有一条服务的
                if (srvdb != null)
                {
                    srvCommon = srvdb;
                }
                //srvCommon = srvList[0];//srvCommon  公用服务 专门针对那些只有一条服务的
                srvCommon.Id_orsrv       = ems.Id_orsrv;
                srvCommon.Id_srv         = ems.Id_srv;
                srvCommon.Sd_srvtp       = ems.Sd_srvtp;
                srvCommon.Id_srvtp       = ems.Id_srvtp;
                srvCommon.Id_srvca       = ems.Id_srvca;
                srvCommon.Name_srv       = ems.Name_srv;
                srvCommon.Quan_med       = ems.Quan_med;
                srvCommon.Id_unit_med    = ems.Id_unit_med;
                srvCommon.Id_freq        = ems.Id_freq;
                srvCommon.Name_freq      = ems.Name_freq;
                srvCommon.Sd_frequnitct  = ems.Sd_frequnitct;
                srvCommon.Freqct         = ems.Freqct;
                srvCommon.Quan_cur       = ems.Quan_cur;
                srvCommon.Id_unit_sale   = ems.Id_unit_sale;
                srvCommon.Name_unit_sale = ems.Name_unit_sale;
                srvCommon.Id_dep         = ems.Id_mp_dep;
                srvCommon.Name_dep       = ems.Name_mp_dep;
                srvCommon.Price          = ems.Price;
                srvCommon.Fg_treat       = ems.Fg_treat;
                srvCommon.Fg_bl          = ems.Fg_bl;
                srvCommon.Eu_sourcemd    = ems.Eu_sourcemd;
                srvCommon.Status         = DOStatus.UPDATED;
                uiEmsDTO.Status          = DOStatus.UPDATED;
            }
            else
            {
                srvCommon.Status = DOStatus.NEW;
                uiEmsDTO.Status  = DOStatus.NEW;
                uiEmsDTO.Status  = DOStatus.NEW;
            }
            ciEmsDTO.Fg_urgent = ems.Fg_urgent;
            ciEmsDTO.Times_cur = this.uiEmsDTO.Emsdrugs.Times_cur;
            this.orDataConvert.SaveDtoCommonDataBing(ciEmsDTO, uiEmsDTO);
            this.orDataConvert.SaveCommonSrvDataBing(srvCommon, this.uiEmsDTO, (int)OrSrvSourceFromEnum.PHYSIAN);
            this.orDataConvert.SaveApDrug(ciEmsDTO, this.uiEmsDTO);
            this.orDataConvert.SaveApCommonSrv(srvCommon, uiEmsDTO);
            srvCommon.Quan_med   = ems.Quan_med;
            srvCommon.Fg_indic   = ems.Fg_treat;
            srvCommon.Price      = ems.Price;
            srvCommon.Price_cur  = ems.Totalprice;
            srvCommon.Id_primd   = ems.Id_pri;
            srvCommon.Fg_or      = uiEmsDTO.MedSrvDO.Fg_or;
            srvCommon.Fg_selfpay = ems.Fg_selfpay;
            if (ems.Fg_selfpay != null && ems.Fg_selfpay.Value)
            {
                srvCommon.Fg_hpindicjudged    = (int)HpIndicJudgeEnum.SELFPAY;
                this.ciEmsDTO.Eu_hpindicjudge = (int)HpIndicJudgeEnum.SELFPAY;
            }
            else
            {
                srvCommon.Fg_hpindicjudged = null;
            }
            //当医嘱类型是治疗类时,为皮试医嘱 zwq 2016-08-19
            if (BdSrvDictCodeConst.SD_SRVTP_TREAT_SKINMINGANTEST.Equals(this.uiEmsDTO.MedSrvDO.Sd_srvtp))
            {
                this.ciEmsDTO.Fg_skintest = true;
            }
            if (this.uiEmsDTO.MedSrvDO.Fg_set.Value)
            {
                this.orDataConvert.getCommonOrdSetItemSrv(this.ciEmsDTO, srvCommon, this.uiEmsDTO, 0);
            }
            else
            {
                ciEmsDTO.Emssrvs.Clear();
                ciEmsDTO.Emssrvs.Add(srvCommon);
            }
            // TODO: 费用数据 -> ciemsdto(合并)
            if (expenseList.Count > 0)
            {
                this.MergeExpenseSrv(this.expenseList.ToArray(), this.ciEmsDTO);
            }

            //医保保外诊断的处理,fg_selfpay=Y,fg_indic=false
            foreach (CiEmsSrvDTO ciemssrvdto in this.ciEmsDTO.Emssrvs)
            {
                HpJudgeUtil.HandleCiEmsSrvDTOHPInfo(ciemssrvdto);
            }
            ciUseDayAndDtEnd(this.ciEmsDTO);
            this.ciEmsDTO.Fg_vip = this.ent4BannerDTO.Fg_gcvip;//vip标识
            return(ordMaintainService.SaveCiEmsDTO(this.ciEmsDTO, BaseEmsView.BaseEmsInfoContext["CiEnContextDTO"] as CiEnContextDTO));
        }