protected virtual void OnBeforeCallServiceSave(CiEmsDTO ems) { // TODO: 费用数据 -> ciemsdto(合并) if (expenseList.Count > 0) { this.MergeExpenseSrv(this.expenseList.ToArray(), ems); } if (ems.Times_cur == null) { ems.Times_cur = CalQuantumUtil.GetInstance().getTotalTimes(ems.Id_freq, ems.Days_or); } //if (ems.Freqct != null && ems.Days_or != null&& ems.Times_mp_in == null && ems.Fg_mp_in != null && ems.Fg_mp_in.GetValueOrDefault(false)) { // ems.Times_mp_in = ems.Freqct * ems.Days_or; //} //门诊中频次为once,使用天数设置为0;结束时间=开始时间+使用天数 ciUseDayAndDtEnd(ems); // 添加基本医保判断结果属性 // 第一位 医保就诊为1 非医保就诊为0 // 第二位 黑白名单: 白名单为0 黑名单为 1 非医保就诊时为9 // 第三位 是否为保外诊断:保外诊断 0 保内诊断 1 非医保就诊时为 9 CiEnContextDTO contextDTO = CiEnContextUtil.GetCiEnContext(this.ent4BannerDTO, EmsAppModeEnum.SVEMSAPPMODE); ems.Fg_vip = this.ent4BannerDTO.Fg_gcvip;//vip标识 ems.Bhpjudgerst = contextDTO.Bhpjudgerst; ems.Des_bhpjudgerst = contextDTO.Des_bhpjudgerst; //医保保外诊断的处理,fg_selfpay=Y,fg_indic=false foreach (CiEmsSrvDTO ciemssrvdto in ems.Emssrvs) { HpJudgeUtil.HandleCiEmsSrvDTOHPInfo(ciemssrvdto); } }
protected override void OnXapFormControl_ModelFilled(object sender, EventArgs e) { object emsObj = this.GetViewModel().GetEmsUIDTO(); if (emsObj != null) { EmsUIDTO emsUiDto = emsObj as EmsUIDTO; if (emsUiDto.PatInfo != null) { if (isHideSelfpay(emsUiDto.PatInfo)) { if (this.GetXapFormControl().GetUserRender(FORM_CARD_PAGECODE, "fg_selfpay") != null) { (this.GetXapFormControl().GetUserRender(FORM_CARD_PAGECODE, "fg_selfpay") as XLabelBaseUserRender).Visible = false; } } else { //医保共享验证 CiEnContextDTO ciEnContextDto = CiEnContextUtil.GetCiEnContext(emsUiDto.PatInfo, EmsAppModeEnum.SVEMSAPPMODE, this.Context);//诊断是否保外的 if (ciEnContextDto.Eu_hpbeyond == HpBeyondEnum.HPEXTERNALDIAG) { if (this.GetXapFormControl().GetUserRender(FORM_CARD_PAGECODE, "fg_selfpay") != null) { (this.GetXapFormControl().GetUserRender(FORM_CARD_PAGECODE, "fg_selfpay") as XLabelBaseUserRender).Checked = true; (this.GetXapFormControl().GetUserRender(FORM_CARD_PAGECODE, "fg_selfpay") as XLabelBaseUserRender).Enabled = false; } } } } } }
protected EmsRstDTO[] LoadRemote(String id_or, Dictionary <String, Object> ctmInfo = null) { ICiEmsMainService emsMainService = XapServiceMgr.find <ICiEmsMainService>(); if (null != emsMainService) { EmsLoadDTO[] emsloads = new EmsLoadDTO[1]; var emsload = new EmsLoadDTO(); emsload.Id_or = id_or; emsload.Extension = new FMap2(); emsload.EnContext = CiEnContextUtil.GetCiEnContext(this.GetEnt4BannerDTO(), this.GetContext()); emsload.EmsDriver = ((int)this.uiEmsDTO.EmsType).ToString(); emsload.OperateSourceFrom = IOprSourceFromConst.IOSF_EMS; if (null != ctmInfo) { emsload.Extension = new FMap2(); foreach (String key in ctmInfo.Keys) { emsload.Extension.Add(key, ctmInfo[key]); } } emsloads[0] = emsload; return(emsMainService.load(emsloads)); } return(null); }
protected EmsRstDTO[] CreateRemote(String id_srv, String id_mm = null, Dictionary <String, Object> ctmInfo = null) { ICiEmsMainService emsMainService = XapServiceMgr.find <ICiEmsMainService>(); if (null != emsMainService) { EmsCrtDTO[] emsCrts = new EmsCrtDTO[1]; var emsCrt = new EmsCrtDTO(); emsCrt.Id_srv = id_srv; emsCrt.Id_mm = id_mm; emsCrt.EmsMgrInfo = this.emsMgrDTO; emsCrt.EnContext = CiEnContextUtil.GetCiEnContext(this.GetEnt4BannerDTO(), this.GetContext()); emsCrt.EmsDriver = ((int)this.uiEmsDTO.EmsType).ToString(); emsCrt.OperateSourceFrom = IOprSourceFromConst.IOSF_EMS; if (null != ctmInfo) { emsCrt.Extension = new FMap2(); foreach (String key in ctmInfo.Keys) { emsCrt.Extension.Add(key, ctmInfo[key]); } } emsCrts[0] = emsCrt; return(emsMainService.create(emsCrts)); } return(null); }
/// <summary> /// 通过服务id_srv和banner信息,获得服务关联的所有物品信息 /// </summary> /// <param name="id_srvs"></param> /// <param name="PatInfo"></param> /// <param name="isOutPres">出院带药</param>> /// <returns></returns> public static XapDataList <EmsOrDrug> getMMOfDrug(string id_srvs, Ent4BannerDTO PatInfo, bool isOutPres = false) { //通过患者信息拼接就诊上下文 CiEnContextDTO contextdto = CiEnContextUtil.GetCiEnContext(PatInfo); return(new OrderCardViewModel().GetOrDrugs(id_srvs, PatInfo.Id_hp, isOutPres == true?EnDictCodeConst.SD_ENTP_OUTPATIENT:PatInfo.Code_entp, contextdto)); }
public void saveEmptyDI(Ent4BannerDTO patientsDTO) { DIDTO diDTO = new DIDTO(); FillDiInfo(diDTO, patientsDTO); try { CiEnContextDTO ciEnContextDto = CiEnContextUtil.GetCiEnContext(patientsDTO); SaveResult = mainService.SaveCiDiDtos(new DIDTO[] { diDTO }, "", ciEnContextDto); } catch (XapServiceException xapex) { if (xapex != null) { this.ShowMessage(xapex.Message); } else { this.ShowMessage("后台服务异常!"); } } catch { } }
/// <summary> /// 获取特殊病提示消息 /// </summary> /// <param name="ctx">患者就诊环境</param> /// <param name="drugList">EmsOrDrug对象集合</param> /// <returns>特殊病诊断提示信息</returns> public string GetSpecialDiseaseJudgeRst(CiEnContextDTO ctx, List <EmsOrDrug> drugList) { FMap mmMap = new FMap(); // 非特殊病患者,直接返回空串 if (!CiEnContextUtil.IsHpSpecillPat(ctx.Ent4BannerDTO)) { return(""); } foreach (EmsOrDrug drug in drugList) { if (drug.Fg_selfpay == FBoolean.True) { continue; } mmMap.Add(drug.Id_mm, drug.Name_srv + "[" + drug.Name_mm + "]"); } if (mmMap.Count == 0) { return(""); } string specialMsg = this.ciOrdMedicalInsuranceService.GetSpecialDiseaseJudgeRst(ctx, mmMap); if (!string.IsNullOrEmpty(specialMsg)) { specialMsg += "请录入!"; } return(specialMsg); }
/// <summary> /// 根据医嘱获取对应的医嘱模板拷贝对象 /// </summary> /// <param name="ordIds">医嘱id集合</param> /// <returns></returns> public MoreEmsParamDTO GetMoreEmsParam(string[] ordIds) { // 获取当前上下文就诊环境,需要包含医嘱来源、医疗单类型属性 CiEnContextDTO ciEnContext = CiEnContextUtil.GetCiEnContext(bannerDTO, EmsAppModeEnum.SVEMSAPPMODE, OrSourceFromEnum.IIHPATIPASTHELPER, context); return(ciOrdQryService.getHistoryMoreEmsParam(ordIds, ciEnContext)); }
/// <summary> /// 查询医保规则 /// </summary> /// <param name="id_srv"></param> /// <param name="id_mm"></param> /// <param name="patinfo"></param> /// <returns></returns> public BdHpIndicationDTO[] getBdHpIndicationDTO(string[] id_srvs, string[] id_mms, Ent4BannerDTO patinfo) { if (id_srvs == null || patinfo == null || string.IsNullOrEmpty(patinfo.Id_hp) || true != patinfo.Fg_hpfundpay) { return(null); } CiEnContextDTO contextdto = CiEnContextUtil.GetCiEnContext(patinfo); ICiOrdQryService service = XapServiceMgr.find <ICiOrdQryService>(); BdHpIndicDTO[] bdhpindic = service.getBdHpIndicationDTOs(id_srvs, id_mms, contextdto); if (bdhpindic != null) { BdHpIndicationDTO[] bdHpIndications = new BdHpIndicationDTO[bdhpindic.Length]; for (int i = 0; i < bdhpindic.Length; i++) { BdHpIndicationDTO bdHpIndication = new BdHpIndicationDTO(); LogicEx.GetInstance().CopyTo(bdhpindic[i], bdHpIndication); bdHpIndications[i] = bdHpIndication; } return(bdHpIndications); } else { return(null); } }
public CiOrderDO SaveDTO(EmsUIDTO emsHeadDO, CiEmsDTO dto, int Eu_sourcemd, delegateBeforeSave OnBeforeSaveEms = null) { //保存前进行患者状态校验 judgePatEntStatus(emsHeadDO.PatInfo); model.SaveCiDTO(emsHeadDO, dto, Eu_sourcemd); dto.Id_dept_ns = emsHeadDO.PatInfo.Id_dep_nur; //校验频次、剂量、剂量单位 if (!LogicEx.GetInstance().validateBeforeSaveCiEmsDto(emsHeadDO, dto)) { return(null); } //设置医保信息 后台获取医保目录类型的方法已经被注释掉了,前台在调用浪费时间 // LogicEx.GetInstance().setHpInfo(dto, emsHeadDO.PatInfo.Id_hp); //if (emsHeadDO.IsNEW && LogicEx.GetInstance().validateEmsUIDTO(dto)) //{ // List<string> errorList = LogicEx.GetInstance().validateFreqAndUnitmed(dto); // if (errorList.Count > 0) // { // string strErr = ""; // errorList.ForEach( // p => { strErr += string.Format("{0}.{1}\n", errorList.IndexOf(p) + 1, p); }); // string errInfo = " 验证失败,操作取消!\n" + strErr; // this.ShowInfo(errInfo, "提示:"); // return null; // } //} if (OnBeforeSaveEms != null) { OnBeforeSaveEms(dto); } return(ordMaintainService.SaveCiEmsDTO(dto, CiEnContextUtil.GetCiEnContext(emsHeadDO.PatInfo, EmsAppModeEnum.IVEMSAPPMODE))); }
/// <summary> /// 获取当前就诊环境 /// </summary> /// <returns></returns> protected virtual CiEnContextDTO GetCiEnContextParam() { // 获取当前的业务环境变量,用于助手传递到后台,医疗单类型在AssistantBtnBaseView的实现类中设置,医嘱来源属性Eu_orsrcmdtp, 在各个助手(使用处)设置 CiEnContextDTO ciEnContext = CiEnContextUtil.GetCiEnContext(this.ent4BannerDTO, this.Context); this.SetCustomCiEnContext(ciEnContext); return(ciEnContext); }
/// <summary> /// 保存诊断信息 /// </summary> /// <param name="id_ent">就诊id</param> /// <param name="itemDOList">界面选取的诊断集合</param> public DIDTO[] SaveCiDiagItemDOs(Ent4BannerDTO bannerDTO, List <CiDiagItemDO> itemDOList) { DIDTO[] didtos = null; List <DIDTO> listDto = this.GetDIDTOList(bannerDTO, itemDOList); if (listDto != null && listDto.Count > 0) { CiEnContextDTO ciEnContextDto = CiEnContextUtil.GetCiEnContext(bannerDTO, this.context); didtos = mainService.SaveCiDiDtos(listDto.ToArray(), "", ciEnContextDto); } return(didtos); }
protected override void OnXapFormControl_RefResult(object sender, RefResultEventArgs e) { if (e.BindingFieldName.Equals("Name_srv")) { var orDrug = e.DataObject as EmsOrDrug; if (string.IsNullOrEmpty(orDrug.Id_srv)) { this.SetStatusMsg("提示:参照操作过快,不能正常查询数据"); return; } Ent4BannerDTO patDo = this.GetViewModel().GetEnt4BannerDTO(); List <MedicalSharingDTO> infoMedicalSharing = null; //医保共享验证 CiEnContextDTO ciEnContextDto = CiEnContextUtil.GetCiEnContext(patDo, EmsAppModeEnum.SVEMSAPPMODE, this.Context);//诊断是否保外的 if (patDo != null && ciEnContextDto != null && ciEnContextDto.Eu_hpbeyond == HpBeyondEnum.HPDIAG && !EnDictCodeConst.SD_ENTP_EMERGENCY.Equals(patDo.Code_entp) && patDo.No_hp != null && patDo.Sd_hptp != null && patDo.Sd_hptp.StartsWith("1")) { MedicalSharingDTO[] arrMedicalSharingDtos = new MedicalSharingDTO[1]; MedicalSharingDTO medicalSharing = new MedicalSharingDTO(); medicalSharing.Code = orDrug.Code_hpsrvorca; medicalSharing.Name_srv = orDrug.Name_srv; medicalSharing.Sd_srvtp = orDrug.Sd_srvtp; arrMedicalSharingDtos[0] = medicalSharing; infoMedicalSharing = MedicalSharingDateRule.MedicalSharingValidate(this.Context, arrMedicalSharingDtos, patDo); } if (infoMedicalSharing != null && infoMedicalSharing.Count > 0) { //弹出医保共享信息 using (MedicalSharingInfoForm from = new MedicalSharingInfoForm(infoMedicalSharing)) { if (from.ShowDialog() == DialogResult.OK) { orDrug.Fg_selfpay = FBoolean.True; AsynchronousHandle(orDrug); } else { GetLogicEx().clearEmsOrDrugPropety(orDrug); LoadData(); } } } else { AsynchronousHandle(orDrug); } } }
/// <summary> /// 当前加载合理用药类 /// </summary> //public string RationalDrugViewClass { get; set; } #endregion #region 命令定义区域 #endregion #region 事件发送区域 #endregion #region 事件接收区域 #endregion #region 父类继承区 public override void OnSelected(object sender, TargetEventArgs e) { BannerData bannerData = e.Object as BannerData; if (bannerData != null && bannerData.Ent4BannerDTO != null) { viewModel.InitRationStatus(); this.ctxDTO = CiEnContextUtil.GetCiEnContext(bannerData.Ent4BannerDTO, this.Context); // this.pat = patiMDOCrudService.findById(this.ctxDTO.Id_pat); } else { this.ctxDTO = null; this.pat = null; } }
protected EmsRstDTO SaveRemote(Object uiModel) { ICiEmsMainService emsMainService = XapServiceMgr.find <ICiEmsMainService>(); var emsSave = new EmsSaveDTO(); emsSave.Document = new FArrayList(); emsSave.Document.Add(uiModel); emsSave.EnContext = CiEnContextUtil.GetCiEnContext( this.GetEnt4BannerDTO(), EmsAppModeEnum.SVEMSAPPMODE, OrSourceFromEnum.IIHSRVREF, this.GetContext()); emsSave.EmsDriver = ((int)this.uiEmsDTO.EmsType).ToString(); emsSave.OperateSourceFrom = IOprSourceFromConst.IOSF_EMS; return(emsMainService.save(emsSave)); }
/// <summary> /// 当前操作的诊断是否已经关联了医嘱 /// </summary> /// <param name="id_en">就诊id</param> /// <param name="id_didef">诊断定义id</param> /// <returns>是否有关联的医嘱,true:有关联,false : 没有关联</returns> public bool IsCiDiRelateCiOrders(Ent4BannerDTO ent4BannerDTO, string id_didef) { // 判断是否为医保就诊,当医保计划Id_hp为空,或者医保类型不匹配(1开头的是社保) 、医保基金支付标识 不等于 true 都是非医保 if (!CiEnContextUtil.IsHpPat(ent4BannerDTO)) { return(false); } //CiOrderDO[] ciOrders = ciOrdQryService.getCiOrdersUsedHpCiDi(ent4BannerDTO.Id_ent, id_didef); String Hpdiexpensese = ciOrdQryService.getUsedHpdiexpensese(ent4BannerDTO.Id_ent, id_didef); if (Hpdiexpensese == null || Hpdiexpensese == "") { return(false); } return(true); }
/// <summary> /// 重新分方 /// </summary> /// <param name="id_ent"></param> /// <param name="sd_entp"></param> /// <returns></returns> public String[] CiOPAgainPres(string id_ent, string id_dep_sign, string sd_entp, Ent4BannerDTO patDo, BaseContext Context) { string[] ids = null; CiEnContextDTO contextDTO = CiEnContextUtil.GetCiEnContext(patDo, Context); CiOrderDO[] orders = this.maintainService.CiOPAgainPres(id_ent, id_dep_sign, sd_entp, contextDTO); if (orders != null && orders.Length > 0) { int i = 0; ids = new string[orders.Length]; foreach (CiOrderDO ord in orders) { ids[i] = ord.Id_or; i++; } } return(ids); }
/// <summary> /// 重置医疗单上下文中的就诊上下文信息 /// </summary> private void resetCiEnContextDTOFromBaseEmsContext() { //诊断信息修改后,更新临床上下文信息,包含保外诊断信息 if (BaseEmsView.BaseEmsInfoContext.ContainsKey("CiEnContextDTO")) { BaseEmsView.BaseEmsInfoContext.Remove("CiEnContextDTO"); } CiEnContextDTO ciEnContext = CiEnContextUtil.GetCiEnContext(this.ent4BannerDTO, EmsAppModeEnum.SVEMSAPPMODE, this.Context); BaseEmsView.BaseEmsInfoContext.Add("CiEnContextDTO", ciEnContext); //如果患者的医保计划为空或者患者是高端商保,查询默认医保计划 改为在构造CiEnContextDTO 中查询 //IPpQueService ppQueService = XapServiceMgr.find<IPpQueService>(); //FMap hpIdMap = ppQueService.getHpIdForHpCatalog(new string[] { ciEnContext.Id_en }); //if (hpIdMap != null && hpIdMap[ciEnContext.Id_en] != null) //{ // ciEnContext.Id_hp_default = (string)hpIdMap[ciEnContext.Id_en]; //} }
/// <summary> /// 优化后方法 /// </summary> /// <param name="ciOrderDO"></param> private void New_EditOrder(CiOrderDO ciOrderDO) { ICiEmsMainService emsMainService = XapServiceMgr.find <ICiEmsMainService>(); if (null != emsMainService) { EmsLoadDTO[] emsloads = new EmsLoadDTO[1]; var emsload = new EmsLoadDTO(); emsload.Id_or = ciOrderDO.Id_or; emsload.Extension = new FMap2(); emsload.EnContext = CiEnContextUtil.GetCiEnContext(this.GetEnt4BannerDTO(), this.GetContext()); emsload.EmsDriver = ((int)this.uiEmsDTO.EmsType).ToString(); emsloads[0] = emsload; EmsRstDTO[] rsts = emsMainService.load(emsloads); EmsRstDTO rst = rsts[0]; if (rst != null) { uiEmsDTO.CiordubDTO = (rst.Document[0] as CiordubDTO); //String utf8Str = System.Text.Encoding.UTF8.GetString(Convert.FromBase64String(rst.DocumentString)); //uiEmsDTO.CiordubDTO.deSerializeJson(utf8Str); if (rst.Extension != null && rst.Extension.Keys.Contains("CiEmsDTO")) { this.ciEmsDTO = rst.Extension["CiEmsDTO"] as CiEmsDTO; } if (rst.Extension != null && rst.Extension.Keys.Contains("MedSrvDO")) { this.uiEmsDTO.MedSrvDO = rst.Extension["MedSrvDO"] as MedSrvDO; } tableDatasource = new XapDataList <CiordubDTO>(); this.tableDatasource.Add(uiEmsDTO.CiordubDTO); //其他处理 uiEmsDTO.Id_srvof = ciEmsDTO.Id_srvof; this.ciEmsDTO.Status = DOStatus.UPDATED; this.uiEmsDTO.Status = DOStatus.UPDATED; HandleExpenseItems(ciEmsDTO); } }//*/ }
//public String GetStr /// <summary> /// 保存诊断明细数据 /// </summary> /// <param name="isSigned"></param> /// <param name="patientsDTO"></param> public void save(Ent4BannerDTO patientsDTO) { string des = ""; string xy = ""; string zy = ""; this.SaveResult = null; List <DIDTO> listDto = new List <DIDTO>(); string ditp_code = this.HeadDiDiagDO.Sd_ditp; if (this.xyCidiList != null && this.xyCidiList.Count > 0) { // 西医集合 xy = "西医诊断\n"; des += collectDidtoListFromxyList(ditp_code, patientsDTO, listDto, this.xyCidiList, xy); } if (this.zyCidiList != null && this.zyCidiList.Count > 0) { //中医集合 zy = "\n中医诊断\n"; des += collectDidtoListFromzyList(ditp_code, patientsDTO, listDto, this.zyCidiList, zy); } try { CiEnContextDTO ciEnContextDto = CiEnContextUtil.GetCiEnContext(patientsDTO); SaveResult = mainService.SaveCiDiDtos(listDto.ToArray(), des, ciEnContextDto); } catch (XapServiceException xapex) { if (xapex != null) { this.ShowMessage(xapex.Message); } else { this.ShowMessage("后台服务异常!"); } } catch { } }
/// <summary> /// 查询医保规则 /// </summary> /// <param name="id_srv"></param> /// <param name="id_mm"></param> /// <param name="patinfo"></param> /// <returns></returns> public BdHpIndicationDTO getBdHpIndicationDTO(string id_srv, string id_mm, Ent4BannerDTO patinfo) { if (string.IsNullOrEmpty(id_srv) || patinfo == null || string.IsNullOrEmpty(patinfo.Id_hp) || true != patinfo.Fg_hpfundpay) { return(null); } CiEnContextDTO contextdto = CiEnContextUtil.GetCiEnContext(patinfo); ICiOrdQryService service = XapServiceMgr.find <ICiOrdQryService>(); BdHpIndicDTO bdhpindic = service.getBdHpIndicationDTO(id_srv, id_mm, contextdto); if (bdhpindic != null) { BdHpIndicationDTO bdHpIndication = new BdHpIndicationDTO(); LogicEx.GetInstance().CopyTo(bdhpindic, bdHpIndication); return(bdHpIndication); } else { return(null); } }
/// <summary> /// 新会诊远程保存逻辑调用 /// </summary> /// <returns></returns> public CiOrderDO New_Save() { ICiEmsMainService emsMainService = XapServiceMgr.find <ICiEmsMainService>(); if (null != emsMainService) { var emsSave = new EmsSaveDTO(); this.uiEmsDTO.Emsapcons.Id_srvof = emsMgrDTO.Id_ems; emsSave.Document = new FArrayList(); emsSave.Document.Add(this.uiEmsDTO.Emsapcons); emsSave.EnContext = CiEnContextUtil.GetCiEnContext(this.GetEnt4BannerDTO(), EmsAppModeEnum.SVEMSAPPMODE, OrSourceFromEnum.IIHSRVREF, this.GetContext()); emsSave.EmsDriver = ((int)this.uiEmsDTO.EmsType).ToString(); EmsRstDTO rst = emsMainService.save(emsSave); if (rst != null) { return((rst.Document[0] as CiorderAggDO).getParentDO()); } } return(null); }
/// <summary> /// 获取个性化参数 /// </summary> /// <returns></returns> protected override Dictionary <string, object> GetCustomParmDic() { if (CustomParamDic == null) { CustomParamDic = new Dictionary <string, object>(); // 就诊历史使用的事件发送对象 ConfigFactory config = this.Context.Config; EntHistoryInitEvent entHistoryInitEvent = config.GetInstance("EntHistoryInitEvent") as EntHistoryInitEvent; CustomParamDic.Add("entHistoryInitEvent", entHistoryInitEvent); // 术语辅助录入使用的事件发送对象 XapBaseControl emrTermEvent = config.GetInstance("ciorderEmrTermEvent") as XapBaseControl; CustomParamDic.Add("emrTermEvent", emrTermEvent); CustomParamDic.Add("AssButtonOpView", this); // 就诊上下文环境 CiEnContextDTO ciEnContextDTO = CiEnContextUtil.GetCiEnContext(this.ent4BannerDTO, EmsAppModeEnum.SVEMSAPPMODE, this.Context); CustomParamDic.Add("ciEnContextDTO", ciEnContextDTO); } return(CustomParamDic); }
// type :false 保存,true 是签署 //ditp_code 是 诊断类型 补充诊断没有主诊断 // public void save(bool type, string ditp_code, bool IsAdd, Ent4BannerDTO patientsDTO, string id_di, XapDataList <Cidixy> list, XapDataList <Cididtozy> listzy) { // 判断新增 还是 修改 string id_di_temp = null; string des = ""; string xy = ""; string zy = ""; if (IsAdd) { id_di_temp = null; } else { id_di_temp = id_di; } List <DIDTO> listDto = new List <DIDTO>(); if (list != null && list.Count > 0 && listzy != null && listzy.Count > 0) { xy = "西医诊断\n"; zy = "\n中医诊断\n"; } if (list != null && list.Count > 0) { // 西医集合 des += getxyList(type, ditp_code, patientsDTO, id_di_temp, listDto, list, xy); } if (listzy != null && listzy.Count > 0) { //中医集合 des += getzyList(type, ditp_code, patientsDTO, id_di_temp, listDto, listzy, zy); } // CiEnContextDTO ciEnContextDto = null; CiEnContextDTO ciEnContextDto = CiEnContextUtil.GetCiEnContext(patientsDTO); mainService.SaveCiDiDtos(listDto.ToArray(), des, ciEnContextDto); }
/// <summary> /// 优化后编辑方法 /// </summary> /// <param name="ord"></param> private void New_EditOrder(CiOrderDO ord) { ICiEmsMainService emsMainService = XapServiceMgr.find <ICiEmsMainService>(); if (null != emsMainService) { EmsLoadDTO[] emsloads = new EmsLoadDTO[1]; var emsload = new EmsLoadDTO(); emsload.Id_or = ord.Id_or; emsload.Extension = new FMap2(); emsload.EnContext = CiEnContextUtil.GetCiEnContext(this.GetEnt4BannerDTO(), this.GetContext()); emsload.EmsDriver = ((int)this.uiEmsDTO.EmsType).ToString(); emsload.OperateSourceFrom = IOprSourceFromConst.IOSF_EMS; emsloads[0] = emsload; EmsRstDTO[] rsts = emsMainService.load(emsloads); EmsRstDTO rst = rsts[0]; if (rst != null) { uiEmsDTO.Emsappathgy.deSerializeJson((rst.Document[0] as EmsPathgyItemDO).serializeJson()); //String utf8Str = System.Text.Encoding.UTF8.GetString(Convert.FromBase64String(rst.DocumentString)); //uiEmsDTO.Emsappathgy.deSerializeJson(utf8Str); if (rst.Extension != null && rst.Extension.Keys.Contains("CiEmsDTO")) { this.ciEmsDTO = rst.Extension["CiEmsDTO"] as CiEmsDTO; } if (rst.Extension != null && rst.Extension.Keys.Contains("MedSrvDO")) { this.uiEmsDTO.MedSrvDO = rst.Extension["MedSrvDO"] as MedSrvDO; strSd_srvtp = this.uiEmsDTO.MedSrvDO.Sd_srvtp; } if (rst.Extension != null && rst.Extension.Keys.Contains("MpDepFilter")) { idDepMps = rst.Extension["MpDepFilter"] as String; } else { idDepMps = ""; } if (this.uiEmsDTO.Emsappathgy.EmsItemInpathgyList != null) { if (null == this.uiEmsDTO.Emsappathgy.EmsItemInpathgy) { this.uiEmsDTO.Emsappathgy.EmsItemInpathgy = new XapDataList <EmsItemInPathgy>(); } this.uiEmsDTO.Emsappathgy.EmsItemInpathgy.Clear(); this.uiEmsDTO.Emsappathgy.EmsItemInpathgyList.Cast <EmsItemInPathgy>().ToList().ForEach(o => { this.uiEmsDTO.Emsappathgy.EmsItemInpathgy.Add(o); }); } if (uiEmsDTO.Emsappathgy.EmsItemInpathgy.Count <= 0) { uiEmsDTO.Emsappathgy.EmsItemInpathgy.AddNew(); uiEmsDTO.Emsappathgy.EmsItemInpathgy[0].Sortno = 1; } } this.lstEmsPathgyItemDO.Add(uiEmsDTO.Emsappathgy); // 其他 this.ciEmsDTO.Status = DOStatus.UPDATED; this.uiEmsDTO.Status = DOStatus.UPDATED; // 处理分拣费用项目 HandleExpenseItems(ciEmsDTO); } }
/// <summary> /// 重新分方 /// </summary> /// <param name="id_ent"></param> /// <param name="sd_entp"></param> /// <returns></returns> public void RepeatPres(string id_ent, string id_dep_sign, string sd_entp, Ent4BannerDTO ent4BannerDTO) { CiEnContextDTO contextDTO = CiEnContextUtil.GetCiEnContext(ent4BannerDTO, this.context); CiOrderDO[] orders = this.maintainService.CiOPAgainPres(id_ent, id_dep_sign, sd_entp, contextDTO); }
/// <summary> /// 诊断保存 /// </summary> /// <param name="didtos">新增的诊断</param> /// <returns>保存成功的DIDTO集合</returns> private List <DIDTO> SaveDIDTOs(List <DIDTO> didtoList) { // 疾病诊断id集合 List <string> savedidefIdList = new List <string>(); // 本次需要保存诊断集合(包含以保存的,和本次待保存的诊断) List <DIDTO> saveList = new List <DIDTO>(); // 获取已保存的诊断集合 List <DIDTO> savedDidtoList = this.GetSavedDIDTOs(this.ent4BannerDTO.Id_ent); // 添加已经保存的诊断集合 if (savedDidtoList != null || savedDidtoList.Count > 0) { foreach (DIDTO didto in savedDidtoList) { didto.Id_di = null; didto.Id_diitm = null; savedidefIdList.Add(didto.Id_didef); // 添加已保存的DIDTO集合 saveList.Add(didto); } } // 如果当前不存在待保存的诊断,不需要对已有诊断在重新保存,直接返回已有的结果 if (didtoList == null || didtoList.Count == 0) { return(saveList); } // 如果待保存诊断中不存在主诊断,将待保存第一项做为主诊断 bool Fg_majdi = FBoolean.False; foreach (DIDTO didto in didtoList) { didto.Id_di = null; didto.Id_diitm = null; if (saveList.Count == 0) // 如果不存在已经保存的诊断,将本次选择的诊断全部添加到待保存的诊断集合中,并且保证只有一条主诊断 { if (didto.Fg_majdi == FBoolean.True) { if (Fg_majdi) { didto.Fg_majdi = FBoolean.False; } else { Fg_majdi = FBoolean.True; } } saveList.Add(didto); } else { // 添加未保存过的诊断 if (!savedidefIdList.Contains(didto.Id_didef)) { Fg_majdi = FBoolean.True; didto.Fg_majdi = FBoolean.False; saveList.Add(didto); } } } if (Fg_majdi == FBoolean.False) { didtoList[0].Fg_majdi = FBoolean.True; } // 保存所有的诊断(已保存、待保存) //CiEnContextDTO ciEnContextDto = null; CiEnContextDTO ciEnContextDto = CiEnContextUtil.GetCiEnContext(this.ent4BannerDTO); DIDTO[] didtos = mainService.SaveCiDiDtos(saveList.ToArray(), "", ciEnContextDto); return(new List <DIDTO>(didtos)); }
/// <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="idOrs"></param> /// <param name="id_psndoc"></param> /// <param name="ciEnContextDTO"></param> /// <returns></returns> public String setOrderRefundBillCancelReserve(String[] idOrs, String id_psndoc, Ent4BannerDTO ent4BannerDto) { CiEnContextDTO contextDTO = CiEnContextUtil.GetCiEnContext(ent4BannerDto, this.emsAppModeEnum, this.context); return(this.maintainService.setOrderRefundBillCancelReserve(idOrs, id_psndoc, contextDTO)); }
/// <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); }