/// <summary> /// 重复开药(同一天) ///医嘱不可重复:在医保共享数据中若已存在某医嘱,本次开立的医嘱中,不能有保内的同样的医嘱。再确认一下。 //若出现重复,提示信息【医嘱共享数据中已存在该药品,不可重复开立】,按钮【放弃开立】【自费开立】 /// <param name="historyTradeInfo"></param> /// <param name="Itemcode"></param> /// <returns></returns> public static string repeatDrug(ClincHistoryTradeInfo historyTradeInfo, MedicalSharingDTO medicalSharingDto, DateTime systemDateTime) { string info = ""; List <TradeInfoEach> list = historyTradeInfo.TradeInfoEachs; if (list != null && list.Count > 0) { foreach (TradeInfoEach tradeInfo in list) { List <FeeItemEach> FeeList = tradeInfo.FeeItemEaches; if (FeeList != null && FeeList.Count > 0) { foreach (FeeItemEach feeItem in FeeList) { if (feeItem.ItemCode != null && feeItem.ItemCode.Equals(medicalSharingDto.Code)) { // dt.GetDateTimeFormats('D')[0].ToString();//2005年11月5日 string[] times = systemDateTime.GetDateTimeFormats('D'); ///string tmp= systemDateTime.GetDateTimeFormats('D')[3].ToString(); //string tmp2 = ((DateTime) tradeInfo.TradeDate).GetDateTimeFormats('D')[3].ToString(); if (systemDateTime.GetDateTimeFormats('D')[0].ToString() == ((DateTime)tradeInfo.TradeDate).GetDateTimeFormats('D')[0].ToString()) { medicalSharingDto.Name14 = feeItem.ItemName; info = "该病人在" + tradeInfo.TradeDate + "在" + tradeInfo.TradeMiName + " 开过" + medicalSharingDto.Name_srv + "药 ,按医保要求,今天不能再开"; } } } } } } return(info); }
/// <summary> /// 医保规则 /// </summary> /// <param name="tmpOrderDo"></param> private CiOrderDO MedicalInfoRule(CiOrderDO tmpOrderDo, List <MedicalSharingDTO> medicalSharinglist) { bool information = false; // fasle 提示, true 终止 if (tmpOrderDo != null && tmpOrderDo.Mdicalinfo != "" && tmpOrderDo.Mdicalinfo != null) { String[] hpmessage = tmpOrderDo.Mdicalinfo.Split('^'); if (medicalSharinglist == null || medicalSharinglist.Count == 0) { if (hpmessage != null && hpmessage.Length > 1) { foreach (string hpmess in hpmessage) { if (hpmess != null && (hpmess == "Stop")) { information = true; } } MedicalSharingDTO dto = new MedicalSharingDTO(); if (tmpOrderDo.Code_or != null) { dto.Code_or = tmpOrderDo.Code_or; } else { dto.Code_or = ""; } dto.Name_srv = tmpOrderDo.Name_or; dto.Reason = hpmessage[1]; medicalSharinglist.Add(dto); } } using (MedicalSharingInfoForm from = new MedicalSharingInfoForm(medicalSharinglist)) { from.Text = "医保规则验证"; if (information) { from.confirmBtn.Visible = false; from.cancelBtn.Text = "确定"; if (from.ShowDialog() == DialogResult.OK) { return(this.GetEmsView().AgainSaveOrder()); } else { medicalSharinglist.Clear(); return(null); } } else { from.cancelBtn.Visible = false; from.confirmBtn.Text = "确定"; return(this.GetEmsView().AgainSaveOrder()); } } } return(tmpOrderDo); }
/// <summary> /// //不限制药品 //中草药,葡萄糖及氯化钠相关注射液。溶媒类 /// </summary> /// <param name="historyTradeInfo"></param> /// <param name="Itemcode"></param> /// <returns></returns> public static Boolean NoLimitDrug(ClincHistoryTradeInfo historyTradeInfo, MedicalSharingDTO medicalSharingDto) { if (medicalSharingDto != null && medicalSharingDto.Sd_srvtp != null && (medicalSharingDto.Sd_srvtp.StartsWith(BdSrvDictCodeConst.SD_SRVTP_DRUG_WESTDRUG_DSY) || medicalSharingDto.Sd_srvtp.StartsWith(BdSrvDictCodeConst.SD_SRVTP_HERBDRUG))) { return(true); } return(false); }
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> /// 天数是否超出 /// 遍历医保共享数据,若(交易日期 + 药品开立天数)- 当前日期 > 5时,该医嘱不可开立 /// </summary> /// <param name="historyTradeInfo"></param> /// <param name="Itemcode"></param> /// <returns></returns> public static String Daysexceeding(ClincHistoryTradeInfo historyTradeInfo, MedicalSharingDTO medicalSharingDto, DateTime systemDateTime, string code) { String info = null; List <TradeInfoEach> list = historyTradeInfo.TradeInfoEachs; if (list != null && list.Count > 0) { foreach (TradeInfoEach tradeInfo in list) { List <FeeItemEach> FeeList = tradeInfo.FeeItemEaches; string tradMicode = tradeInfo.TradeMiCode; if (tradMicode != null && tradMicode == code) { Hospital_code = tradeInfo.TradeMiName; } if (FeeList != null && FeeList.Count > 0) { foreach (FeeItemEach feeItem in FeeList) { if (feeItem.ItemCode != null && feeItem.ItemCode.Equals(medicalSharingDto.Code) && tradeInfo.TradeFundType != null && tradeInfo.TradeFundType.Equals(MedicalSharingCache.getcodeHpKind())) { int num = sumDys(tradeInfo.TradeDate, feeItem.Days, systemDateTime); if (num > 5) { medicalSharingDto.Name14 = feeItem.ItemName; info = "该病人在" + tradeInfo.TradeDate + "在" + tradeInfo.TradeMiName + " 开过" + medicalSharingDto.Name_srv + "药 ,\n 用药" + feeItem.Days + "天,按领量未服用完,按医保要求,今天不能再开"; } } } } } } return(info); }
/// <summary> /// 本院数据验证 /// </summary> /// <param name="context"></param> /// <param name="medicalSharingDto"></param> /// <param name="ent4BannerDto"></param> /// <param name="systemDateTime"></param> private static void LocalValiDate(BaseContext context, MedicalSharingDTO[] medicalSharingDto, Ent4BannerDTO ent4BannerDto, DateTime systemDateTime) { //本院数据 (签署 未交费的) MedicalSharingDTO[] LocalmedicalSharingDTO = ciOrderQryService.getMedicalSharing(ent4BannerDto.Id_pat, ent4BannerDto.Id_hp); if (medicalSharingDto != null && LocalmedicalSharingDTO != null) { MedicalSharingDTO infoDto = new MedicalSharingDTO(); foreach (MedicalSharingDTO medical in medicalSharingDto) { if (NoLimitDrug(null, medical)) { continue; } foreach (MedicalSharingDTO localmedical in LocalmedicalSharingDTO) { //1同日开药 if (medical.Code == localmedical.Code && !localmedical.Sd_srvtp.StartsWith("0103") && medical.Sd_srvtp != BdSrvDictCodeConst.SD_SRVTP_DRUG_WESTDRUG_DSY) { string[] times = systemDateTime.GetDateTimeFormats('D'); if (localmedical.Dt_effe != null && systemDateTime.GetDateTimeFormats('D')[0].ToString() == ((DateTime)localmedical.Dt_effe).GetDateTimeFormats('D')[0].ToString()) { infoDto.Id_orsrv = medical.Id_orsrv; infoDto.Code_or = medical.Code_or; if (!localmedical.Sd_srvtp.StartsWith("0103")) { infoDto.Name_srv = medical.Name_srv + "(" + localmedical.Mm_name + ")"; } else { infoDto.Name_srv = medical.Name_srv; } infoDto.Code_or = localmedical.Code_or; infoDto.Reason = "该病人" + localmedical.Dt_effe + "在" + localmedical.Dept_name + "本院医生" + localmedical.Doctor_name + "已经开过" + medical.Name_srv + "按领量未服用完,按医保要求,今天不能再开"; } // 2 if (sumDys(localmedical.Dt_entry, (short)localmedical.Days_or, systemDateTime) > 5 && localmedical.Sd_srvtp != BdSrvDictCodeConst.SD_SRVTP_DRUG_WESTDRUG_DSY) { infoDto.Id_orsrv = medical.Id_orsrv; infoDto.Code_or = localmedical.Code_or; if (!localmedical.Sd_srvtp.StartsWith("0103")) { infoDto.Name_srv = medical.Name_srv + "(" + localmedical.Mm_name + ")"; } else { infoDto.Name_srv = medical.Name_srv; } infoDto.Code_or = localmedical.Code_or; if (infoDto.Reason != null) { infoDto.Reason = "\n 该病人" + localmedical.Dt_effe + "在" + localmedical.Dept_name + "本院医生" + localmedical.Doctor_name + "已经开过" + localmedical.Name_srv + "药,\n 用药天数" + localmedical.Days_or + "天,按领量未用完,按医保要求,今天不能再开"; } else { infoDto.Reason = "该病人" + localmedical.Dt_effe + "在" + localmedical.Dept_name + "本院医生" + localmedical.Doctor_name + "已经开过" + localmedical.Name_srv + "药,\n 用药天数" + localmedical.Days_or + "天,按领量未用完,按医保要求,今天不能再开"; } } } } } if (infoDto.Reason != null) { infoMedicalSharingDto.Add(infoDto); } } }
public static Boolean excludeDrug(MedicalSharingDTO medicalSharingDto) { return(MedicalSharingCache.getBdHpUnlimitDrugDO(medicalSharingDto.Code)); }
/// <summary> /// 外院数据验证 /// </summary> /// <param name="context"></param> /// <param name="medicalSharingDto"></param> /// <param name="ent4BannerDto"></param> /// <param name="systemDateTime"></param> private static void OutValiDate(BaseContext context, MedicalSharingDTO[] medicalSharingDto, ClincHistoryTradeInfo historyTradeInfo, Ent4BannerDTO ent4BannerDto, DateTime systemDateTime) { foreach (MedicalSharingDTO medical in medicalSharingDto) { //判断排斥有的药品 //不限制药品 //中草药,葡萄糖及氯化钠相关注射液。溶媒类 if (excludeDrug(medical)) { continue; } if (NoLimitDrug(historyTradeInfo, medical)) { continue; } MedicalSharingDTO infoDto = new MedicalSharingDTO(); //1 同一天重复开药 string message2 = repeatDrug(historyTradeInfo, medical, systemDateTime); if (message2 != "") { infoDto.Id_or = medical.Id_or; infoDto.Id_orsrv = medical.Id_orsrv; if (!medical.Sd_srvtp.StartsWith("0103")) { infoDto.Name_srv = medical.Name_srv + "(" + medical.Name14 + ")"; } else { infoDto.Name_srv = medical.Name_srv; } infoDto.Code_or = medical.Code_or; infoDto.Reason = message2; } string message = Daysexceeding(historyTradeInfo, medical, systemDateTime, context.Org.Code); if (message != "") { infoDto.Id_or = medical.Id_or; infoDto.Id_orsrv = medical.Id_orsrv; if (!medical.Sd_srvtp.StartsWith("0103")) { infoDto.Name_srv = medical.Name_srv + "(" + medical.Name14 + ")"; } else { infoDto.Name_srv = medical.Name_srv; } infoDto.Code_or = medical.Code_or; if (infoDto.Reason != null) { infoDto.Reason = "\n " + message; } else { infoDto.Reason = message; } } if (infoDto.Reason != null) { infoMedicalSharingDto.Add(infoDto); } } }
/// <summary> /// 引用参照结果处理 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> protected override void OnXapFormControl_RefResult(object sender, RefResultEventArgs e) { RefDataCollection data = e.RefResultSet; var drug = e.DataObject as EmsOrDrug; if (!this.GetViewModel().IsEmpty() && this.GetViewModel().OnRefResultData(e.BindingFieldName, drug)) { this.updateCustomerControlInfo(this.GetGridControl().GetFocusedRow(), drug); this.SentNotify(EventCodeType.NM_EMS_ORSRV_DATACHANGED); return; } // 判断是否清空参照数据,则执行清空医疗单数据操作 if (e.BindingFieldName.Equals("Name_srv")) { // 如果清空了参照服务内容 if (data.IsEmpty && (this.GetViewModel().IsEmpty() || this.GetViewModel().GetCountWithOutDelete() <= 1)) { // 新建 或者 存储模型的id_or为空,则直接关闭 var emsUIDTO = this.GetViewModel().GetEmsUIDTO() as EmsUIDTO; if (null == emsUIDTO || emsUIDTO.IsNEW || String.IsNullOrEmpty(this.GetViewModel().getCiEmsDTO().Id_or)) { SentNotify(EventCodeType.NM_EMS_CLOSE); } return; } if (string.IsNullOrEmpty(drug.Id_srv)) { this.UnRegFormEvent_DataChanged(); string id_orsrv = drug.Id_orsrv; GetLogicEx().Clear <EmsOrDrug>(drug, new String[] { "Status" }); drug.Id_orsrv = id_orsrv; this.RegFormEvent_DataChanged(); return; } // 获取 BDSrvDO 数据 //var service = XapServiceMgr.find<IMedsrvMDOCrudService>(); //var medSrvDO = service.findById((e.DataObject as EmsOrDrug).Id_srv); var orDrug = e.DataObject as EmsOrDrug; //Ent4BannerDTO patDo = this.Context["banner"] as Ent4BannerDTO; 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); } } } else { // 异步调用 //delegateRunnable.DelayCall(AsynchronousHandle, orDrug); AsynchronousHandle(orDrug); } } else { this.SentNotify(EventCodeType.NM_EMS_ORSRV_DATACHANGED, e.BindingFieldName, "Name_freq"); } }