/// <summary> /// Gets the dept_mp. /// </summary> /// <param name="id_entp">The .</param> /// <param name="id_srvtp">The id_srvtp.</param> /// <param name="id_srv">The id_srv.</param> /// <returns>id_dept|name_dept</returns> /// Author:admin ///// Date:2015-09-19 //public List<EmsDrugItemDO> GetDept_mp(string id_entp, string id_srvtp, string id_srvCa, string id_srv, string id_route) //{ // //入参数:就诊类型id、服务类型编码、服务分类id、服务项目id、医嘱用法id、医嘱长临标志。 // //传回参数:执行科室id // //传入参数:就诊类型id、服务分类id,服务项目id,其他参数传值为null。 // List<EmsDrugItemDO> list = new List<EmsDrugItemDO>(); // MdWfOrDO[] md = ordmpService.getMdwfOrDos(new WforQryCondDTO() // { // Entp = id_entp, // Srvtp = id_srvtp, // Id_qry = id_srv, // Srvca = id_srvCa, // Usg = id_route // }); // md.ToList().ForEach(p => // { // list.Add(new EmsDrugItemDO { Id_dep = p.Id_dept, Name_dep = p.Dept_name }); // }); // return list; //} /// <summary> /// 获取执行科室id集合 /// </summary> /// <param name="id_entp">The id_entp.</param> /// <param name="id_srvtp">The id_srvtp.</param> /// <param name="id_srvCa">The id_srv ca.</param> /// <param name="id_srv">The id_srv.</param> /// <param name="id_route">The id_route.</param> /// <returns></returns> /// Author:admin ///// Date:2015-12-10 //public string GetDept_mp_ids(string code_entp, string id_entp, string sd_srvtp, string id_srvCa, string id_srv, string id_route, string id_mm,string id_dept_nur) //{ // OrWfExDeptParamDTO dto = new OrWfExDeptParamDTO(); // dto.Id_dept_en = id_entp; // dto.Id_srvca = id_srvCa; // dto.Id_srv = id_srv; // dto.Sd_srvtp = sd_srvtp; // dto.Id_usage = id_route; // dto.Code_entp = code_entp; // dto.Id_dept_ns = id_dept_nur; // dto.Id_mm = "";// 基数药使用 todo // OrWfExDeptDTO[] deps = new IBdFcQryServiceImpl().getOrExDept4OpenMode(dto); // if (deps == null) return ""; // string str = string.Join("','", deps.Select(p => p.Id_dept)); // string strdep = "'" + str + "'"; // return strdep; //} /// <summary> /// 获取医嘱流向科室数据 /// </summary> /// <param name="code_entp"></param> /// <param name="id_entp"></param> /// <param name="sd_srvtp"></param> /// <param name="id_srvCa"></param> /// <param name="id_srv"></param> /// <param name="id_route"></param> /// <param name="id_mm"></param> /// <param name="id_dept_nur"></param> /// <param name="id_dep_ent"></param> /// <param name="id_dep_follow"></param> /// <returns></returns> public OrWfDeptInfoDTO GetDept_mp_ids(string code_entp, string id_entp, string sd_srvtp, string id_srvCa, string id_srv, string id_route, string id_mm, string id_dept_nur, string id_dep_ent = "", string id_dep_follow = "") { DataTable dt = new DataTable(); OrWfExDeptParamDTO dto = new OrWfExDeptParamDTO(); dto.Eu_wftp = Convert.ToInt32(EnumFlow.NULL); // 0执行与物资 1执行科室 2物资流向 dto.Code_entp = code_entp; // 就诊类型 dto.Id_dept_ns = id_dept_nur; //就诊护理病区 dto.Id_dept_or = UserManager.getInstance().CurrentDept.Id_dep; //开单科室 dto.Id_dept_en = id_dep_ent; //id_dept_en;//就诊科室 //dto.Recurstr = ""; //长临需要的 不知道 就为空 dto.Id_srv = id_srv; //服务 dto.Sd_srvtp = sd_srvtp; //服务类型sd dto.Id_srvca = id_srvCa; //服务分类 dto.Id_dept_ex = id_dep_follow; // 主服务执行科室--用于跟随情况 //dto.Innercode_srvca = "";//服务分类内码 dto.Id_mm = id_mm; // 服务选取的关联物品 dto.Id_usage = id_route; //用法 //dto.Weekno = "2";//生效日期时间相关的 周#与时间 dto.Timestr = new DateTime(); //dto.Reserv1 = ""; //暂时无用途 //预留项 //dto.Reserv2 = ""; //暂时无用途 //dto.Reserv3 = ""; //套内项目时: BD套内项目的科室计算方式sd值,BD套内项目的固定执行科室ID值,所属套的执行科室ID值 OrWfDeptInfoDTO deps = null; try { deps = new ICiOrdQryServiceImpl().getExeDepts4CiOrSrvN(dto); } catch (Exception ex) { LogManager.GetLogger().ErrorEx("获取执行科室错误!", ex); } return(deps); }
public override bool LoadMedSrv(EmsCreatedParameter emsCreatedParameter, int pos) //EmsCreateParameter { MedSrvDO med = emsCreatedParameter.getMedSrvDO(); String id_mm = emsCreatedParameter.getMmID(); if (String.IsNullOrEmpty(id_mm)) { this.errorMsgString = "没有物品ID"; return(false); } // 获取列表最后一个数据 EmsOrDrug newDrug = null; AssCostTimeTool.Enabled = true; AssCostTimeTool t1 = new AssCostTimeTool("加载数据时候,LoadMedSrv2 解析 MedSrv 耗时:", false); EmsRstDTO[] rsts = CreateRemote(med.Id_srv, id_mm); EmsRstDTO rst = rsts[0]; if (rst != null) { EmsDrugItemDO emsDrugItem = (rst.Document[0] as EmsDrugItemDO); //String utf8Str = System.Text.Encoding.UTF8.GetString(Convert.FromBase64String(rst.DocumentString)); //EmsDrugItemDO emsDrugItem = new EmsDrugItemDO(); //emsDrugItem.deSerializeJson(utf8Str); FMap2 emsExtMap = rst.Extension; MedSrvDO medSrv = emsExtMap["MedSrvDO"] as MedSrvDO; OrWfDeptInfoDTO wf = emsExtMap["OrWfDeptInfoDTO"] as OrWfDeptInfoDTO; emsDrugItem.EmsOrDrug = new XapDataList <EmsOrDrug>(); // 列表中显示的物品 XapDataList <EmsOrDrug> emsOrDrugList = new XapDataList <EmsOrDrug>(); FArrayList drugList_ex = emsDrugItem.EmsOrDrugListEx; foreach (EmsOrDrug drug in drugList_ex) { emsOrDrugList.Add(drug); emsDrugItem.EmsOrDrug.Add(drug); } newDrug = this.GetSelectedObject() as EmsOrDrug; if (pos < 0) { this.uiEmsDTO.MedSrvDO = med; emsDrugItem.EmsOrDrugList = emsOrDrugList; this.uiEmsDTO.Emsdrugs = emsDrugItem; return(true); } //TODO: 可以放到查询药品前,重复就不用走后台了 if (this.uiEmsDTO.Emsdrugs.EmsOrDrugList.Count(p => p.Name_srv == newDrug.Name_srv && !p.IsDELETED) > 1) { this.errorMsgString = "已经存在服务【" + medSrv.Name + "】!"; this.uiEmsDTO.Emsdrugs.EmsOrDrugList.Remove(newDrug); this.logicEx.Clear <EmsOrDrug>(newDrug); newDrug.Status = DOStatus.NEW; this.uiEmsDTO.Emsdrugs.EmsOrDrug.Clear(); this.uiEmsDTO.Emsdrugs.EmsOrDrug.Add(newDrug); return(false); } // 获取从后台返回的用于医嘱列表显示的数据 if (emsOrDrugList == null || string.IsNullOrEmpty(emsOrDrugList[0].Id_mm)) {// TODO 什么情况没有数据 this.errorMsgString = "服务未绑定物品,请联系信息科!"; this.logicEx.Clear <EmsOrDrug>(newDrug); return(false); } EmsOrDrug tempDrug = emsOrDrugList[0]; if (!newDrug.IsUPDATED) { tempDrug.Status = DOStatus.NEW; } else { // 增加该逻辑分支 针对 已保存的 医嘱项目 进行服务项目的修改 -- 2016-11-21 by wangqz tempDrug.Status = DOStatus.UPDATED; tempDrug.Id_orsrv = newDrug.Id_orsrv; } // 新加的药品要与已有的保持同频次,同周期,同用法 tempDrug.Id_route = this.uiEmsDTO.Emsdrugs.Id_route; tempDrug.Name_route = this.uiEmsDTO.Emsdrugs.Name_route; // 草药外配标识在医疗单中,勾选外配,全为外配 tempDrug.Fg_extdispense = this.uiEmsDTO.Emsdrugs.Fg_extdispense; // 同频次 tempDrug.Id_freq = this.uiEmsDTO.Emsdrugs.Id_freq; tempDrug.Name_freq = this.uiEmsDTO.Emsdrugs.Name_freq; tempDrug.Sd_frequnitct = this.uiEmsDTO.Emsdrugs.Sd_frequnitct; tempDrug.Freqct = this.uiEmsDTO.Emsdrugs.Freqct; // 如果只有一条记录,恢复到服务默认的频次,用法 fillSameInfoWithMedSrvDO(tempDrug, medSrv); // 同周期 tempDrug.Use_days = this.uiEmsDTO.Emsdrugs.Use_days; // 计算总次数 TODO 需要提供前台计算方法,数据都有了,不用走后台了 int?times_cur = this.uiEmsDTO.Emsdrugs.Times_cur; // CalQuantumUtil.GetInstance().getTotalTimes(tempDrug.Id_freq, (int)this.uiEmsDTO.Emsdrugs.Use_days); int?orders = this.uiEmsDTO.Emsdrugs.Orders; // 计算总量 tempDrug.Quan_cur = CalQuantumUtil.GetInstance().getMMQuantum(tempDrug.Sd_mupkgutp, tempDrug.Quan_med, tempDrug.Factor_mb, tempDrug.Factor_cb, orders); tempDrug.Totalprice = tempDrug.Price * tempDrug.Quan_cur; // 计算总价 // 将返回数据加到表格数据源中 newDrug.Replace(tempDrug); } return(true); }
/// <summary> /// 创建医疗单 /// </summary> /// <param name="emsCreateParameter"></param> /// <param name="pos"></param> /// <returns></returns> //public override bool LoadMedSrv(EmsCreatedParameter emsCreateParameter, int pos) //{ // base.LoadMedSrv(emsCreateParameter, pos); // MedSrvDO med = emsCreateParameter.getMedSrvDO(); // String id_mm = emsCreateParameter.getMmID(); // // 获取列表最后一个数据 // EmsOrDrug newDrug = null; // EmsCrtDTO emsCrt = new EmsCrtDTO(); // emsCrt.Id_srv = med.Id_srv; // emsCrt.Id_mm = id_mm; // emsCrt.EmsMgrInfo = this.emsMgrDTO; // emsCrt.EnContext = BaseEmsView.BaseEmsInfoContext["CiEnContextDTO"] as CiEnContextDTO; // emsCrt.EmsDriver = ((int)this.uiEmsDTO.EmsType).ToString(); // // 临时用,验证结束需要调整到后台 // emsCrt.CustomInfo = emsCreateParameter.GetParameter() == null ? null : emsCreateParameter.GetParameter().ToString(); // EmsRstDTO rst = emsMainService.create(emsCrt); // if (rst != null) // { // String utf8Str = System.Text.Encoding.UTF8.GetString(Convert.FromBase64String(rst.EmsDocument)); // EmsDrugItemDO emsDrugItem = new EmsDrugItemDO(); // emsDrugItem.deSerializeJson(utf8Str); // FMap2 emsExtMap = rst.EmsExtension; // this.id_dosages = emsExtMap["id_dosages"] as string; // MedSrvDO medSrv = emsExtMap["MedSrvDO"] as MedSrvDO; // OrWfDeptInfoDTO wf = emsExtMap["OrWfDeptInfoDTO"] as OrWfDeptInfoDTO; // SkinTestRstDTO skinTestRst = emsExtMap["SkinTestRstDTO"] as SkinTestRstDTO; // if (emsExtMap["isShowWarnInfo"] != null && (bool)emsExtMap["isShowWarnInfo"]) // { // this.tipInfoMsgString = emsExtMap["specillDrugWarnInfo"] as string; // } // // 物品参照 // XapDataList<EmsOrDrug> emsOrDrugRef = new XapDataList<EmsOrDrug>(); // if (emsDrugItem.EmsOrDrugEx == null || emsDrugItem.EmsOrDrugEx.Count == 0) { // this.errorMsgString = "服务"+emsDrugItem.Name_srv+"未绑定物品,请联系信息科!"; // return false; // } // foreach (EmsOrDrug drug in emsDrugItem.EmsOrDrugEx) // { // emsOrDrugRef.Add(drug); // } // emsDrugItem.EmsOrDrug = emsOrDrugRef; // // 列表中显示的物品 // XapDataList<EmsOrDrug> emsOrDrugList = new XapDataList<EmsOrDrug>(); // FArrayList drugList_ex = emsDrugItem.EmsOrDrugListEx; // foreach (EmsOrDrug drug in drugList_ex) // { // emsOrDrugList.Add(drug); // } // if (pos < 0) // { // this.uiEmsDTO.MedSrvDO = med; // emsDrugItem.EmsOrDrugList = emsOrDrugList; // // 当物品id查询不到对应物品时,不做赋值操作 // if (emsOrDrugList.Count > 0) // { // this.uiEmsDTO.Emsdrugs = emsDrugItem; // } // newDrug = this.uiEmsDTO.Emsdrugs.EmsOrDrugList.LastOrDefault(); // } // else // { // newDrug = this.uiEmsDTO.Emsdrugs.EmsOrDrugList.ElementAt(pos); // } // // 设置当前选择项目 // SetSelectedObject(newDrug); // if (emsOrDrugList.Count == 0) // { // this.errorMsgString = med.Name + "(" + id_mm + "), 没有关联物品或者物品数据错误!"; // this.logicEx.Clear<EmsOrDrug>(newDrug); // return false; // } // // 获取从后台返回的用于医嘱列表显示的数据 // EmsOrDrug tempDrug = emsOrDrugList[0]; // //皮试判断逻辑 // string skinErrorInfo = AssToolEx.CheckSkinTestRst(tempDrug, skinTestRst, this.GetEnt4BannerDTO()); // if (!string.IsNullOrEmpty(skinErrorInfo)) // { // this.errorMsgString = skinErrorInfo; // this.logicEx.Clear<EmsOrDrug>(newDrug); // return false; // } // // 加载第一条记录信息已经是全的了,不用执行后边的 // if (pos < 0) // { // return true; // } // if (!newDrug.IsUPDATED) // { // tempDrug.Status = DOStatus.NEW; // } // else // { // 增加该逻辑分支 针对 已保存的 医嘱项目 进行服务项目的修改 -- 2016-11-21 by wangqz // tempDrug.Status = DOStatus.UPDATED; // } // // 保留id_orsrv ,当对编辑项通过退格键删除后,在选择其他服务,Id_orsrv存在 // tempDrug.Id_orsrv = newDrug.Id_orsrv; // // 新加的药品要与已有的保持同频次,同周期,同用法 // tempDrug.Id_route = this.uiEmsDTO.Emsdrugs.Id_route; // tempDrug.Name_route = this.uiEmsDTO.Emsdrugs.Name_route; // // 同频次 // tempDrug.Id_freq = this.uiEmsDTO.Emsdrugs.Id_freq; // tempDrug.Name_freq = this.uiEmsDTO.Emsdrugs.Name_freq; // tempDrug.Sd_frequnitct = this.uiEmsDTO.Emsdrugs.Sd_frequnitct; // tempDrug.Freqct = this.uiEmsDTO.Emsdrugs.Freqct; // // 如果只有一条记录,恢复到服务默认的频次,用法 // fillSameInfoWithMedSrvDO(tempDrug, medSrv); // // 同周期 // tempDrug.Use_days = this.uiEmsDTO.Emsdrugs.Use_days; // // 计算总次数 // int times_cur = CalQuantumUtil.GetInstance().getTotalTimes(tempDrug.Id_freq, (int)this.uiEmsDTO.Emsdrugs.Use_days); // // 计算总量 // tempDrug.Quan_cur = CalQuantumUtil.GetInstance().getMMQuantum(tempDrug.Sd_opmutp, tempDrug.Quan_med, tempDrug.Factor_mb, tempDrug.Factor_cb, times_cur); // // 计算总价 // tempDrug.Totalprice = tempDrug.Price * tempDrug.Quan_cur; // // 将返回数据加到表格数据源中 // newDrug.Replace(tempDrug); // } // return true; //} public override bool LoadMedSrv(EmsCreatedParameter emsCreateParameter, int pos) { base.LoadMedSrv(emsCreateParameter, pos); MedSrvDO med = emsCreateParameter.getMedSrvDO(); String id_mm = emsCreateParameter.getMmID(); Dictionary <String, Object> ctmInfo = new Dictionary <string, object>(); ctmInfo.Add("CustomInfo", emsCreateParameter.GetParameter() == null ? null : emsCreateParameter.GetParameter().ToString()); EmsRstDTO[] rsts = CreateRemote(med.Id_srv, id_mm, ctmInfo); EmsRstDTO rst = rsts[0]; if (rst != null) { // 获取列表最后一个数据 EmsOrDrug newDrug = null; EmsDrugItemDO emsDrugItem = (rst.Document[0] as EmsDrugItemDO); //String utf8Str = System.Text.Encoding.UTF8.GetString(Convert.FromBase64String(rst.DocumentString)); //EmsDrugItemDO emsDrugItem = new EmsDrugItemDO(); //emsDrugItem.deSerializeJson(utf8Str); FMap2 emsExtMap = rst.Extension; this.id_dosages = emsExtMap["DosagesFilter"] as string; MedSrvDO medSrv = emsExtMap["MedSrvDO"] as MedSrvDO; OrWfDeptInfoDTO wf = emsExtMap["OrWfDeptInfoDTO"] as OrWfDeptInfoDTO; SkinTestRstDTO skinTestRst = emsExtMap["SkinTestRstDTO"] as SkinTestRstDTO; if (emsExtMap["IsShowWarnInfo"] != null && (bool)emsExtMap["IsShowWarnInfo"]) { this.tipInfoMsgString = emsExtMap["SpecilDrugWarnInfo"] as string; } // 物品参照 if (emsDrugItem.EmsOrDrug == null) { emsDrugItem.EmsOrDrug = new XapDataList <EmsOrDrug>(); } foreach (EmsOrDrug drug in emsDrugItem.EmsOrDrugListEx) { emsDrugItem.EmsOrDrug.Add(drug); } // 列表中显示的物品 XapDataList <EmsOrDrug> emsOrDrugList = new XapDataList <EmsOrDrug>(); foreach (EmsOrDrug drug in emsDrugItem.EmsOrDrugListEx) { emsOrDrugList.Add(drug); } // 获取从后台返回的用于医嘱列表显示的数据 EmsOrDrug tempDrug = emsOrDrugList[0]; if (pos < 0) { this.uiEmsDTO.MedSrvDO = med; emsDrugItem.EmsOrDrugList = emsOrDrugList; // 当物品id查询不到对应物品时,不做赋值操作 if (emsOrDrugList.Count > 0) { this.uiEmsDTO.Emsdrugs = emsDrugItem; } newDrug = this.uiEmsDTO.Emsdrugs.EmsOrDrugList.LastOrDefault(); this.uiEmsDTO.Emsdrugs.Id_dep = tempDrug.Id_mp_dep; this.uiEmsDTO.Emsdrugs.Name_dep = tempDrug.Name_mp_dep; } else { newDrug = this.uiEmsDTO.Emsdrugs.EmsOrDrugList.ElementAt(pos); } // 设置当前选择项目 SetSelectedObject(newDrug); //皮试判断逻辑 string skinErrorInfo = AssToolEx.CheckSkinTestRst(tempDrug, skinTestRst, this.GetEnt4BannerDTO()); if (skinErrorInfo != null) { this.errorMsgString = skinErrorInfo; this.logicEx.Clear <EmsOrDrug>(newDrug); return(false); } // 加载第一条记录信息已经是全的了,不用执行后边的 if (pos < 0) { return(true); } if (!newDrug.IsUPDATED) { tempDrug.Status = DOStatus.NEW; } else { // 增加该逻辑分支 针对 已保存的 医嘱项目 进行服务项目的修改 -- 2016-11-21 by wangqz tempDrug.Status = DOStatus.UPDATED; } // 保留id_orsrv ,当对编辑项通过退格键删除后,在选择其他服务,Id_orsrv存在 tempDrug.Id_orsrv = newDrug.Id_orsrv; // 新加的药品要与已有的保持同频次,同周期,同用法 tempDrug.Id_route = this.uiEmsDTO.Emsdrugs.Id_route; tempDrug.Name_route = this.uiEmsDTO.Emsdrugs.Name_route; // 同频次 tempDrug.Id_freq = this.uiEmsDTO.Emsdrugs.Id_freq; tempDrug.Name_freq = this.uiEmsDTO.Emsdrugs.Name_freq; tempDrug.Sd_frequnitct = this.uiEmsDTO.Emsdrugs.Sd_frequnitct; tempDrug.Freqct = this.uiEmsDTO.Emsdrugs.Freqct; // 如果只有一条记录,恢复到服务默认的频次,用法 fillSameInfoWithMedSrvDO(tempDrug, medSrv); // 同周期 tempDrug.Use_days = this.uiEmsDTO.Emsdrugs.Use_days; // 计算总次数 int times_cur = CalQuantumUtil.GetInstance().getTotalTimes(tempDrug.Id_freq, (int)this.uiEmsDTO.Emsdrugs.Use_days); // 计算总量 tempDrug.Quan_cur = CalQuantumUtil.GetInstance().getMMQuantum(tempDrug.Sd_opmutp, tempDrug.Quan_med, tempDrug.Factor_mb, tempDrug.Factor_cb, times_cur); // 计算总价 tempDrug.Totalprice = tempDrug.Price * tempDrug.Quan_cur; // 将返回数据加到表格数据源中 newDrug.Replace(tempDrug); } return(true); }