예제 #1
0
        /// <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);
        }
예제 #2
0
        /// <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);
        }
예제 #3
0
 /// <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);
 }
예제 #4
0
        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);
                }
            }
        }
예제 #5
0
        /// <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);
        }
예제 #6
0
        /// <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);
                }
            }
        }
예제 #7
0
 public static Boolean excludeDrug(MedicalSharingDTO medicalSharingDto)
 {
     return(MedicalSharingCache.getBdHpUnlimitDrugDO(medicalSharingDto.Code));
 }
예제 #8
0
 /// <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);
         }
     }
 }
예제 #9
0
        /// <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");
            }
        }