/// <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); }
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; } }
/// <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; }
/// <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); }
/// <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 }); }
/// <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); }
protected virtual bool NeedGenExpense(CiEmsSrvDTO emsSrv) { return(emsSrv.Id_srv != null /*&& (emsSrv.Fg_bl != null && emsSrv.Fg_bl == true)*/); }
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)); }