Exemple #1
0
        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);
            }
        }
Exemple #2
0
        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;
                            }
                        }
                    }
                }
            }
        }
Exemple #3
0
        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);
        }
Exemple #4
0
        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);
        }
Exemple #5
0
        /// <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));
        }
Exemple #6
0
        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
            {
            }
        }
Exemple #7
0
        /// <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);
        }
Exemple #8
0
        /// <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));
        }
Exemple #9
0
        /// <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);
            }
        }
Exemple #10
0
 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)));
 }
Exemple #11
0
        /// <summary>
        /// 获取当前就诊环境
        /// </summary>
        /// <returns></returns>
        protected virtual CiEnContextDTO GetCiEnContextParam()
        {
            // 获取当前的业务环境变量,用于助手传递到后台,医疗单类型在AssistantBtnBaseView的实现类中设置,医嘱来源属性Eu_orsrcmdtp, 在各个助手(使用处)设置
            CiEnContextDTO ciEnContext = CiEnContextUtil.GetCiEnContext(this.ent4BannerDTO, this.Context);

            this.SetCustomCiEnContext(ciEnContext);

            return(ciEnContext);
        }
Exemple #12
0
        /// <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);
                }
            }
        }
Exemple #14
0
        /// <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;
            }
        }
Exemple #15
0
        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));
        }
Exemple #16
0
        /// <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);
        }
Exemple #17
0
        /// <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);
        }
Exemple #18
0
        /// <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];
            //}
        }
Exemple #19
0
        /// <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);
                }
            }//*/
        }
Exemple #20
0
        //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
            {
            }
        }
Exemple #21
0
        /// <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);
            }
        }
Exemple #22
0
        /// <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);
        }
Exemple #23
0
        /// <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);
        }
Exemple #24
0
        // 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);
        }
Exemple #25
0
        /// <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);
            }
        }
Exemple #26
0
        /// <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));
        }
Exemple #28
0
        /// <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);
        }
Exemple #29
0
        /// <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));
        }
Exemple #30
0
        /// <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);
        }