/// <summary> /// 根据就诊信息费用清单数据 /// </summary> /// <returns></returns> public bool newLoad() { if (this.GetEnt4BannerDTO() == null) { return(false); } FeeListLoadDTO feeListLoadDTO = new FeeListLoadDTO(); CiEnContextDTO ciEnContextDTO = BaseEmsView.BaseEmsInfoContext["CiEnContextDTO"] as CiEnContextDTO; if (ciEnContextDTO == null) { return(false); } feeListLoadDTO.EnContext = ciEnContextDTO; FeeListRstDTO feeListRstDTO = iCiFeeListMainService.load(feeListLoadDTO); FArrayList feeList = feeListRstDTO.Document as FArrayList; if (null != feeList && feeList.Count > 0) { this.tableDatasource = feeList.Cast <CiOrdFeeSrvDTO>().ToArray(); // 控件不支持,不应该直接改写对象 } else { //this.errorMsgString = "获取费用清单数据失败"; tableDatasource.Clear(); } return(false); }
public bool oldLoad() { if (this.GetEnt4BannerDTO() == null) { return(false); } this.errorMsgString = ""; try { idor2EmsDTOMap.Clear(); idor2OrderDOMap.Clear(); { FMap2 rtnMap = iCiOrdQryService.getOrdFeebill(GetEnt4BannerDTO().Id_ent, GetEnt4BannerDTO().Code_entp); if (rtnMap != null && rtnMap.Keys.Count > 0 && rtnMap.Keys.Contains("orders") && rtnMap.Keys.Contains("emses")) { FArrayList ordList = rtnMap["orders"] as FArrayList; FArrayList emsList = rtnMap["emses"] as FArrayList; FMap blsrvmap = rtnMap["blsrvdes"] as FMap; CiOrderDO[] szOrders = ordList.Cast <CiOrderDO>().ToArray(); CiEmsDTO[] szEmses = emsList.Cast <CiEmsDTO>().ToArray(); // 装配UI数据 List <CiOrdFeeSrvDTO> list = OrdFeeBillListFrom(szOrders, szEmses, blsrvmap); if (null != list && list.Count > 0) { this.tableDatasource = list.ToArray(); // 控件不支持,不应该直接改写对象 } else { tableDatasource.Clear(); } } else { this.errorMsgString = "获取费用清单数据失败"; return(false); } } } catch (XapServiceException e) { this.errorMsgString = e.ErrorMsg.Message; } catch (Exception e) { this.errorMsgString = e.Message; } return(false); }
/// <summary> /// 获取控件相关的数据,不涉及界面(不读写界面元素)。 /// </summary> protected override void OnLoadData() { if (!string.IsNullOrWhiteSpace(this.id_ortmpl)) { FMap map = this.model.getNewOrderTemplateDTO2(this.Ent4BannerDTO, new string[] { this.id_ortmpl }); if (map != null) { FArrayList templList = map[this.id_ortmpl] as FArrayList; if (templList != null) { templateDtoArray = templList.Cast <NewOrderTemplateDTO>().ToArray(); } } } }
/// <summary> /// 获取控件相关的数据,不涉及界面(不读写界面元素)。 /// </summary> protected override void OnLoadData() { if (!string.IsNullOrWhiteSpace(modeltype)) { this.treeKeyModel = this.model.loadTreeModel(this.modeltype); } isLoaded = true; FArrayList modelIds = this.model.getModelIdByModelType(this.modeltype); modelMap = this.model.getNewOrderTemplateDTO2(this.BannerDTO, modelIds.Cast <string>().ToArray()); foreach (string keyId in modelMap.Keys) { FArrayList list = modelMap[keyId] as FArrayList; if (this.parentFrame.cacheModelItem == null) { this.parentFrame.cacheModelItem = new Dictionary <string, FArrayList>(); } if (!this.parentFrame.cacheModelItem.ContainsKey(keyId)) { this.parentFrame.cacheModelItem.Add(keyId, list); } } }
/// <summary> /// 签署 /// </summary> /// <param name="orders"></param> /// <param name="ent4BannerDto"></param> /// <returns></returns> public bool SignCiOrder(CiOrderDO[] orders, Ent4BannerDTO ent4BannerDto) { if (orders.Count() == 0) { return(false); } // 增加就诊上下文环境,用户医嘱签署时,在医嘱中保存保外诊断相关属性 CiEnContextDTO contextDTO = CiEnContextUtil.GetCiEnContext(ent4BannerDto, this.emsAppModeEnum, this.context); List <string> idors = orders.Select(p => p.Id_or).ToList(); // 签署,如果不满足签署条件返回提示信息 ValidateRtnInfoDTO vlInfoDto = this.maintainService.ciOrderSign(idors.ToArray(), contextDTO); FMap2 fm1 = vlInfoDto.Scenedatum; if (fm1 != null && fm1["specilDrugs"] != null) { if (this.IsContinue("提示", fm1["specilDrugs"].ToString())) { return(false); } } if (fm1 != null && fm1["willCheckIdOrs"] != null) { //医保和临床路径未判断的话,就弹窗进行判断 FArrayList willCheckIdOrs = (FArrayList)fm1["willCheckIdOrs"]; string[] id_ors = willCheckIdOrs.Cast <string>().ToArray(); OrReport report = new OrReport(id_ors); DialogResult result = report.ShowDialog(XFormManager.MainFrom); if (result == DialogResult.OK) { return(SignCiOrder(orders, ent4BannerDto)); } else { return(false); } } //开立权限校验 if (fm1 != null && fm1.Keys.Contains("UnCheckIdors")) { FArrayList uncheckidList = fm1["UnCheckIdors"] as FArrayList; List <string> uncheckids = uncheckidList.Cast <String>().ToList();// fm1["UnCheckIdors"].ToString().Substring(1, fm1["UnCheckIdors"].ToString().Length-2).Split(',').ToList(); if (uncheckids.Count == orders.Length) { this.ShowInfo(fm1["ErrMsg"].ToString()); return(false); } if (!this.IsContinue("提示", fm1["ErrMsg"] + "是否继续?")) { return(false); } else { if (uncheckids.Count > 0) { List <CiOrderDO> ciordlist = orders.ToList(); foreach (string idor in uncheckids) { ciordlist.Remove(ciordlist.Find(p => p.Id_or == idor.Trim())); } return(SignCiOrder(ciordlist.ToArray(), ent4BannerDto)); } else { if (!this.IsContinue("提示", fm1["ErrMsg"] + "是否继续?")) { return(false); } else { if (uncheckids.Count > 0) { List <CiOrderDO> ciordlist = orders.ToList(); foreach (string idor in uncheckids) { ciordlist.Remove(ciordlist.Find(p => p.Id_or == idor.Trim())); } return(SignCiOrder(ciordlist.ToArray(), ent4BannerDto)); } } } } } FMap2 HpMesage = vlInfoDto.Rtnvalue; if (HpMesage != null) { String message = (String)HpMesage["HPMessage"]; if (message != null) { this.ShowInfo(message); vlInfoDto = this.maintainService.CiOrderSignMedicalInsurance(vlInfoDto.Scenedatum, code_entp); } } FMap2 fm = vlInfoDto.Rtnvalue; if (fm1 != null && fm1["checkPatInfoSrvs"] != null) { // 如果是毒麻药,需要保存代理人信息 FArrayList checkPatInfoSrvs = (FArrayList)fm1["checkPatInfoSrvs"]; OrSrvAgentInfoDO agentInfo = LogicEx.GetInstance().newOrSrvAgentInfoDOFromBanner(ent4BannerDto); CheckPatAgentInfoDialog dialog = new CheckPatAgentInfoDialog(agentInfo, checkPatInfoSrvs); if (dialog.ShowDialog() == DialogResult.OK) { this.maintainService.saveCheckPatInfo(checkPatInfoSrvs, agentInfo); } else { return(false); } } this.InitMrSignCiOrderList(vlInfoDto); ReactExtOrsAndStopOrsDO redo = (ReactExtOrsAndStopOrsDO)fm["willstopors"]; if (!(redo != null && redo.Reactextdos != null && redo.Stopordos != null)) { if (fm1 != null) { vlInfoDto = maintainService.ciOrderSignStep1(fm1, ent4BannerDto.Code_entp, contextDTO); this.InitMrSignCiOrderList(vlInfoDto); } return(true); } fm1.Add("willstopors", redo); FArrayList fa2 = new FArrayList(); FArrayList extdo = redo.Reactextdos; FArrayList wildo = redo.Stopordos; if (extdo != null && wildo != null) { string strReactType = ""; string modifyStopTimeSrvs = ""; //修改停止时间的服务名称串 string addStopTimeSrvs = ""; //添加停止时间的服务名称串 if (extdo.Count > 0) { int? reacttype = (extdo[0] as CiorderAggExtDO).Reacttype; string name_or = (extdo[0] as CiorderAggExtDO).Aggdo.getParentDO().Name_or; if (reacttype != null) { if ((int)reacttype == 1) { strReactType = "全排斥"; } else if ((int)reacttype == 2) { strReactType = "组内排斥"; } } foreach (CiOrderDO stopordo in wildo) { if (stopordo.Fg_stop == null || stopordo.Fg_stop == false) { addStopTimeSrvs += stopordo.Name_or + ","; } else { modifyStopTimeSrvs += stopordo.Name_or + ","; } } if (addStopTimeSrvs.Length > 0) { addStopTimeSrvs = addStopTimeSrvs.Substring(0, addStopTimeSrvs.Length - 1); } if (modifyStopTimeSrvs.Length > 0) { modifyStopTimeSrvs = modifyStopTimeSrvs.Substring(0, modifyStopTimeSrvs.Length - 1); } string msg = reactOrWarnInfo(name_or, strReactType, addStopTimeSrvs, modifyStopTimeSrvs); var a = MessageBoxEx.Show(msg, "医嘱排斥", MessageBoxButtons.YesNo); if (a == DialogResult.Yes) { maintainService.ciOrderSignStep1(fm1, ent4BannerDto.Code_entp, contextDTO); } else { return(false); } } } return(true); }
/// <summary> /// 将费用项目合并到医疗单的服务项目列表中 /// </summary> /// <param name="szExpenseSrv"></param> /// <returns></returns> protected virtual bool MergeExpenseSrv(EmsOrDrug[] szExpenseSrv, CiEmsDTO ems) { FArrayList srvList = ems.Emssrvs; var addList = new List <CiEmsSrvDTO>(); foreach (EmsOrDrug item in szExpenseSrv) { // 处理逻辑删除数据 srvList.Cast <CiEmsSrvDTO>().ToList().ForEach(p => { if (!string.IsNullOrEmpty(p.Id_orsrv) && string.IsNullOrEmpty(p.Id_srv) && p.Status != DOStatus.DELETED) { p.Status = DOStatus.DELETED; } }); // 临床项目和相同的服务,处理医保信息和医保的医生是否已判断标识 if (item.Fg_or.Value || srvList.Cast <CiEmsSrvDTO>().Count(p => p.Id_srv != null && p.Id_srv.Equals(item.Id_srv)) > 0) { var emssrvdto = srvList.Cast <CiEmsSrvDTO>().FirstOrDefault(p => p.Status != DOStatus.DELETED && p.Id_srv != null && p.Id_srv.Equals(item.Id_srv)); if (emssrvdto != null) { if (emssrvdto.Fg_selfpay != null && !emssrvdto.Fg_selfpay.Value) { //emssrvdto.Fg_hpindicjudged = item.Fg_hpindicjudged; emssrvdto.Fg_indic = item.Fg_treat; //emssrvdto.Fg_selfpay = item.Fg_selfpay; } } continue; } // 处理删除状态的费用项目 if (item.IsDELETED && !string.IsNullOrEmpty(item.Id_orsrv)) { var delItem = srvList.Cast <CiEmsSrvDTO>().FirstOrDefault(p => p.Id_orsrv != null && p.Id_orsrv.Equals(item.Id_orsrv)); if (null != delItem) { delItem.Status = DOStatus.DELETED; } } // 套内 非临床 不计费 设置为删除 if ((ems.Fg_set != null && ems.Fg_set == true) && (item.Fg_or == null || !item.Fg_or.Value) && (item.Fg_bl == null || !item.Fg_bl.Value)) { item.Status = DOStatus.DELETED; } // 处理更新状态的费用项目 // 处理新增状态的费用项目 addList.Add(ConvertOf(item, ems.Fg_set != null && ems.Fg_set.Value)); } // 如果有新追加的费用项目,则将其追加到医疗单费用列表的尾部 if (addList.Count > 0) { srvList.AddRange(addList); } return(true); }
/// <summary> /// 医嘱签署 /// </summary> /// <param name="orders"></param> /// <param name="patInfo"></param> /// <returns></returns> public bool SignOrders(CiOrderDO[] orders, Ent4BannerDTO ent4BannerDto, FMap2 map2) { // TODO:填写医嘱签署逻辑 if (orders == null || orders.Length == 0) { return(false); } OrderOperateDTO operateDTO = new OrderOperateDTO(); // 增加就诊上下文环境,用户医嘱签署时,在医嘱中保存保外诊断相关属性 CiEnContextDTO contextDTO = CiEnContextUtil.GetCiEnContext(ent4BannerDto, EmsAppModeEnum.SVEMSAPPMODE, this.context); operateDTO.Document = new FArrayList(); orders.ToList <CiOrderDO>().ForEach(ord => { operateDTO.Document.append(ord.Id_or); }); operateDTO.EnContext = contextDTO; operateDTO.Extension = map2; OrderRstDTO orderRstDTO = orderActionSign.exec(new OrderOperateDTO[] { operateDTO })[0]; if (orderRstDTO == null) { return(false); } FMap2 emsExtension = orderRstDTO.Extension; if (emsExtension != null) { if (emsExtension["specilDrugs"] != null) { //特殊药判断提示 if (!this.IsContinue("提示", emsExtension["specilDrugs"].ToString())) { return(SignOrders(orders, ent4BannerDto, emsExtension)); } else { return(false); } } //医保规则 if (emsExtension["hprule"] != null) { FArrayList2 hplist = (FArrayList2)emsExtension["hprule"]; bool information = false; // fasle 提示, true 终止 if (hplist != null && hplist.Count > 0) { List <MedicalSharingDTO> medicalSharinglist = new List <MedicalSharingDTO>(); foreach (MedicalSharingDTO dto in hplist) { if (dto != null && dto.Code == "Stop") { information = true; } medicalSharinglist.Add(dto); } using (MedicalSharingInfoForm from = new MedicalSharingInfoForm(medicalSharinglist)) { from.Text = "医保规则验证"; if (information) { from.confirmBtn.Visible = false; from.cancelBtn.Text = "确定"; } else { from.cancelBtn.Visible = false; from.confirmBtn.Text = "确定"; } if (from.ShowDialog() == DialogResult.OK) { return(SignOrders(orders, ent4BannerDto, emsExtension)); } else { return(false); } } } } if (emsExtension["willCheckIdOrs"] != null) { //医保和临床路径未判断的话,就弹窗进行判断 FArrayList willCheckIdOrs = (FArrayList)emsExtension["willCheckIdOrs"]; string[] id_ors = willCheckIdOrs.Cast <string>().ToArray(); OrReport report = new OrReport(id_ors); DialogResult result = report.ShowDialog(XFormManager.MainFrom); if (result == DialogResult.OK) { FMap2 map = map2; return(SignOrders(orders, ent4BannerDto, map)); } else { return(false); } } if (emsExtension.Keys.Contains("UnCheckIdors")) { //开立权限校验 FArrayList uncheckidList = emsExtension["UnCheckIdors"] as FArrayList; List <string> uncheckids = uncheckidList.Cast <String>().ToList(); if (uncheckids.Count == orders.Length) { this.ShowInfo(emsExtension["ErrMsg"].ToString()); return(false); } if (!this.IsContinue("提示", emsExtension["ErrMsg"] + "是否继续?")) { return(false); } else { if (uncheckids.Count > 0) { List <CiOrderDO> ciordlist = orders.ToList(); foreach (string idor in uncheckids) { ciordlist.Remove(ciordlist.Find(p => p.Id_or == idor.Trim())); } FMap2 map = new FMap2(); return(SignOrders(ciordlist.ToArray(), ent4BannerDto, map)); } } } if (emsExtension["checkPatInfoSrvs"] != null) { // 如果是毒麻药,需要保存代理人信息 FArrayList checkPatInfoSrvs = (FArrayList)emsExtension["checkPatInfoSrvs"]; OrSrvAgentInfoDO agentInfo = LogicEx.GetInstance().newOrSrvAgentInfoDOFromBanner(ent4BannerDto); CheckPatAgentInfoDialog dialog = new CheckPatAgentInfoDialog(agentInfo, checkPatInfoSrvs); if (dialog.ShowDialog() == DialogResult.OK) { this.maintainService.saveCheckPatInfo(checkPatInfoSrvs, agentInfo); FMap2 map = new FMap2(); return(SignOrders(orders, ent4BannerDto, map)); } else { return(false); } } this.initMrSignCiOrderList(emsExtension); } return(true); }