public string skinTestLogic(EmsOrDrug drug, Control owner = null) { SkinTestParamDTO param = new SkinTestParamDTO(); param.Id_mm = drug.Id_mm; param.Id_org = UserManager.getInstance().CurrentOrg.Id_org; param.Id_pi = PatInfo.Id_pat; param.Dt_birth = DateTime.Parse(PatInfo.Dt_birth); param.Id_srv = drug.Id_srv; param.Id_skinsrv = drug.Id_srvskin; SkinTestRstDTO retDTO = qryService.skinTestLogicMainBP(param); return(CheckSkinTestRst(drug, retDTO, owner)); }
/// <summary> /// 判断皮试结果 /// </summary> /// <param name="drug">物品</param> /// <param name="skinTestRst">皮试结果</param> /// <param name="patInfo">患者信息</param> /// <returns></returns> public static string CheckSkinTestRst(EmsOrDrug drug, SkinTestRstDTO skinTestRst, Ent4BannerDTO patInfo) { //数据回写后,进行皮试判断 if (drug.Fg_skintest != null && drug.Fg_skintest == true) { SkinTestLogic logic = new SkinTestLogic(patInfo); string code = logic.CheckSkinTestRst(drug, skinTestRst); if ("0".Equals(code)) {//皮试为阳性,禁用 return(""); //return "患者存在该药品过敏史并禁用该药!"; } else if ("9".Equals(code)) { return("患者存在该药品过敏史,未录入强制使用原因,禁用该药!"); } } return(null); }
private int?drugSkinTestLogic(XapDataList <EmsOrDrug> drugs) { //服务对应的物品中是否存在皮试物品,是皮试物品且为禁用时,切换到下一个物品 for (int i = 0; drugs != null && i < drugs.Count; i++) { EmsOrDrug skinDrug = drugs[i]; if (i == 0 && (skinDrug.Fg_skintest == null || skinDrug.Fg_skintest == false)) { return(0); } else if (skinDrug.Fg_skintest == true) { SkinTestParamDTO param = new SkinTestParamDTO(); param.Id_mm = skinDrug.Id_mm; param.Id_org = this.Context.Org.Id_org; param.Id_pi = this.bannerDto.Id_pat; param.Dt_birth = DateTime.Parse(this.bannerDto.Dt_birth); param.Id_srv = emsDO.Emsdrugs.Id_srv; param.Id_skinsrv = skinDrug.Id_srvskin; try { SkinTestRstDTO retDTO = this.orderCardViewModel.skinTestLogic(param); string code = retDTO.Allergicpharmhandlemode.ToString(); if (code.Equals("0") && (i == emsDO.Emsdrugs.EmsOrDrug.Count - 1)) { this.ShowInfo("用药医嘱时,患者存在该药品过敏史并禁用该药异常!"); return(null); } } catch (Exception ex) { throw ex; } return(i); } } return(null); }
/// <summary> /// 根据皮试逻辑结果判断是否可进行皮试 /// </summary> /// <param name="drug">物品对象</param> /// <param name="skinTestRst">皮试结果</param> /// <param name="owner"></param> /// <returns></returns> public string CheckSkinTestRst(EmsOrDrug drug, SkinTestRstDTO skinTestRst, Control owner = null) { string code = skinTestRst.Allergicpharmhandlemode.ToString(); //禁用 if (code.Equals("0")) { this.ShowInfo("患者于" + (skinTestRst.Dt_act == null?"":skinTestRst.Dt_act.ToTarget.ToString("yyyy-MM-dd")) + "对" + drug.Name_mm + "过敏!"); drug.Id_mm = null; drug.Name_mm = null; }//再皮试1;皮试逻辑,3 else if (code.Equals("1") || code.Equals("3")) { drug.Sd_reltp = CiDictCodeConst.CODE_SKIN_SKIN; drug.Fg_skintest = true; }//强制使用2 else if (code.Equals("2")) { SkinTestForm skinFrom = new SkinTestForm(drug, skinTestRst.Dt_act); if (owner != null) { if (owner.FindForm() != null && owner.FindForm() is TabNavigatorForm) { (owner.FindForm() as TabNavigatorForm).OnFocused = true; } if (skinFrom.ShowDialog(owner) == DialogResult.OK) { drug.Sd_reltp = CiDictCodeConst.CODE_SKIN_FORCEUSE; drug.Fg_skintest = false; } else { return("9");//禁用了 } } else { if (skinFrom.ShowDialog() == DialogResult.OK) { drug.Sd_reltp = CiDictCodeConst.CODE_SKIN_FORCEUSE; drug.Fg_skintest = false; } else { return("9");//禁用了 } } }//直接使用,不皮试4 else if (code.Equals("4")) { drug.Sd_reltp = CiDictCodeConst.CODE_SKIN_FORCEUSE; drug.Fg_skintest = false; }//测试了,未出结果5 else if (code.Equals("5")) { drug.Sd_reltp = CiDictCodeConst.CODE_SKIN_NORESULT; drug.Fg_skintest = true; drug.Id_or_rel = skinTestRst.Id_skinor; } return(code); }
/// <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); }