Beispiel #1
0
        public string skinTestLogic(EmsOrDrug drug, Control owner = null)
        {
            SkinTestParamDTO param = new SkinTestParamDTO();

            param.Id_mm      = drug.Id_mm;
            param.Id_org     = UserManager.getInstance().CurrentOrg.Id_org;
            param.Id_pi      = PatInfo.Id_pat;
            param.Dt_birth   = DateTime.Parse(PatInfo.Dt_birth);
            param.Id_srv     = drug.Id_srv;
            param.Id_skinsrv = drug.Id_srvskin;
            SkinTestRstDTO retDTO = qryService.skinTestLogicMainBP(param);

            return(CheckSkinTestRst(drug, retDTO, owner));
        }
Beispiel #2
0
        /// <summary>
        /// 判断皮试结果
        /// </summary>
        /// <param name="drug">物品</param>
        /// <param name="skinTestRst">皮试结果</param>
        /// <param name="patInfo">患者信息</param>
        /// <returns></returns>
        public static string CheckSkinTestRst(EmsOrDrug drug, SkinTestRstDTO skinTestRst, Ent4BannerDTO patInfo)
        {
            //数据回写后,进行皮试判断

            if (drug.Fg_skintest != null && drug.Fg_skintest == true)
            {
                SkinTestLogic logic = new SkinTestLogic(patInfo);
                string        code  = logic.CheckSkinTestRst(drug, skinTestRst);
                if ("0".Equals(code))
                {//皮试为阳性,禁用
                    return("");
                    //return "患者存在该药品过敏史并禁用该药!";
                }
                else if ("9".Equals(code))
                {
                    return("患者存在该药品过敏史,未录入强制使用原因,禁用该药!");
                }
            }
            return(null);
        }
Beispiel #3
0
 private int?drugSkinTestLogic(XapDataList <EmsOrDrug> drugs)
 {
     //服务对应的物品中是否存在皮试物品,是皮试物品且为禁用时,切换到下一个物品
     for (int i = 0; drugs != null && i < drugs.Count; i++)
     {
         EmsOrDrug skinDrug = drugs[i];
         if (i == 0 && (skinDrug.Fg_skintest == null || skinDrug.Fg_skintest == false))
         {
             return(0);
         }
         else if (skinDrug.Fg_skintest == true)
         {
             SkinTestParamDTO param = new SkinTestParamDTO();
             param.Id_mm      = skinDrug.Id_mm;
             param.Id_org     = this.Context.Org.Id_org;
             param.Id_pi      = this.bannerDto.Id_pat;
             param.Dt_birth   = DateTime.Parse(this.bannerDto.Dt_birth);
             param.Id_srv     = emsDO.Emsdrugs.Id_srv;
             param.Id_skinsrv = skinDrug.Id_srvskin;
             try
             {
                 SkinTestRstDTO retDTO = this.orderCardViewModel.skinTestLogic(param);
                 string         code   = retDTO.Allergicpharmhandlemode.ToString();
                 if (code.Equals("0") && (i == emsDO.Emsdrugs.EmsOrDrug.Count - 1))
                 {
                     this.ShowInfo("用药医嘱时,患者存在该药品过敏史并禁用该药异常!");
                     return(null);
                 }
             }
             catch (Exception ex)
             {
                 throw ex;
             }
             return(i);
         }
     }
     return(null);
 }
Beispiel #4
0
        /// <summary>
        /// 根据皮试逻辑结果判断是否可进行皮试
        /// </summary>
        /// <param name="drug">物品对象</param>
        /// <param name="skinTestRst">皮试结果</param>
        /// <param name="owner"></param>
        /// <returns></returns>
        public string CheckSkinTestRst(EmsOrDrug drug, SkinTestRstDTO skinTestRst, Control owner = null)
        {
            string code = skinTestRst.Allergicpharmhandlemode.ToString();

            //禁用
            if (code.Equals("0"))
            {
                this.ShowInfo("患者于" + (skinTestRst.Dt_act == null?"":skinTestRst.Dt_act.ToTarget.ToString("yyyy-MM-dd")) + "对" + drug.Name_mm + "过敏!");
                drug.Id_mm   = null;
                drug.Name_mm = null;
            }//再皮试1;皮试逻辑,3
            else if (code.Equals("1") || code.Equals("3"))
            {
                drug.Sd_reltp    = CiDictCodeConst.CODE_SKIN_SKIN;
                drug.Fg_skintest = true;
            }//强制使用2
            else if (code.Equals("2"))
            {
                SkinTestForm skinFrom = new SkinTestForm(drug, skinTestRst.Dt_act);
                if (owner != null)
                {
                    if (owner.FindForm() != null && owner.FindForm() is TabNavigatorForm)
                    {
                        (owner.FindForm() as TabNavigatorForm).OnFocused = true;
                    }
                    if (skinFrom.ShowDialog(owner) == DialogResult.OK)
                    {
                        drug.Sd_reltp    = CiDictCodeConst.CODE_SKIN_FORCEUSE;
                        drug.Fg_skintest = false;
                    }
                    else
                    {
                        return("9");//禁用了
                    }
                }
                else
                {
                    if (skinFrom.ShowDialog() == DialogResult.OK)
                    {
                        drug.Sd_reltp    = CiDictCodeConst.CODE_SKIN_FORCEUSE;
                        drug.Fg_skintest = false;
                    }
                    else
                    {
                        return("9");//禁用了
                    }
                }
            }//直接使用,不皮试4
            else if (code.Equals("4"))
            {
                drug.Sd_reltp    = CiDictCodeConst.CODE_SKIN_FORCEUSE;
                drug.Fg_skintest = false;
            }//测试了,未出结果5
            else if (code.Equals("5"))
            {
                drug.Sd_reltp    = CiDictCodeConst.CODE_SKIN_NORESULT;
                drug.Fg_skintest = true;
                drug.Id_or_rel   = skinTestRst.Id_skinor;
            }
            return(code);
        }
Beispiel #5
0
        /// <summary>
        /// 创建医疗单
        /// </summary>
        /// <param name="emsCreateParameter"></param>
        /// <param name="pos"></param>
        /// <returns></returns>
        //public override bool LoadMedSrv(EmsCreatedParameter emsCreateParameter, int pos)
        //{
        //    base.LoadMedSrv(emsCreateParameter, pos);
        //    MedSrvDO med = emsCreateParameter.getMedSrvDO();
        //    String id_mm = emsCreateParameter.getMmID();

        //    // 获取列表最后一个数据
        //    EmsOrDrug newDrug = null;

        //    EmsCrtDTO emsCrt = new EmsCrtDTO();
        //    emsCrt.Id_srv = med.Id_srv;
        //    emsCrt.Id_mm = id_mm;
        //    emsCrt.EmsMgrInfo = this.emsMgrDTO;
        //    emsCrt.EnContext = BaseEmsView.BaseEmsInfoContext["CiEnContextDTO"] as CiEnContextDTO;
        //    emsCrt.EmsDriver = ((int)this.uiEmsDTO.EmsType).ToString();

        //    // 临时用,验证结束需要调整到后台
        //    emsCrt.CustomInfo = emsCreateParameter.GetParameter() == null ? null : emsCreateParameter.GetParameter().ToString();
        //    EmsRstDTO rst = emsMainService.create(emsCrt);
        //    if (rst != null)
        //    {
        //        String utf8Str = System.Text.Encoding.UTF8.GetString(Convert.FromBase64String(rst.EmsDocument));
        //        EmsDrugItemDO emsDrugItem = new EmsDrugItemDO();
        //        emsDrugItem.deSerializeJson(utf8Str);

        //        FMap2 emsExtMap = rst.EmsExtension;

        //        this.id_dosages = emsExtMap["id_dosages"] as string;
        //        MedSrvDO medSrv = emsExtMap["MedSrvDO"] as MedSrvDO;
        //        OrWfDeptInfoDTO wf = emsExtMap["OrWfDeptInfoDTO"] as OrWfDeptInfoDTO;
        //        SkinTestRstDTO skinTestRst = emsExtMap["SkinTestRstDTO"] as SkinTestRstDTO;
        //        if (emsExtMap["isShowWarnInfo"] != null && (bool)emsExtMap["isShowWarnInfo"])
        //        {
        //            this.tipInfoMsgString = emsExtMap["specillDrugWarnInfo"] as string;
        //        }
        //        // 物品参照
        //        XapDataList<EmsOrDrug> emsOrDrugRef = new XapDataList<EmsOrDrug>();
        //        if (emsDrugItem.EmsOrDrugEx == null || emsDrugItem.EmsOrDrugEx.Count == 0) {
        //            this.errorMsgString = "服务"+emsDrugItem.Name_srv+"未绑定物品,请联系信息科!";
        //            return false;
        //        }
        //        foreach (EmsOrDrug drug in emsDrugItem.EmsOrDrugEx)
        //        {
        //            emsOrDrugRef.Add(drug);
        //        }
        //        emsDrugItem.EmsOrDrug = emsOrDrugRef;

        //        // 列表中显示的物品
        //        XapDataList<EmsOrDrug> emsOrDrugList = new XapDataList<EmsOrDrug>();
        //        FArrayList drugList_ex = emsDrugItem.EmsOrDrugListEx;
        //        foreach (EmsOrDrug drug in drugList_ex)
        //        {
        //            emsOrDrugList.Add(drug);
        //        }


        //        if (pos < 0)
        //        {
        //            this.uiEmsDTO.MedSrvDO = med;

        //            emsDrugItem.EmsOrDrugList = emsOrDrugList;
        //            // 当物品id查询不到对应物品时,不做赋值操作
        //            if (emsOrDrugList.Count > 0)
        //            {
        //                this.uiEmsDTO.Emsdrugs = emsDrugItem;
        //            }
        //            newDrug = this.uiEmsDTO.Emsdrugs.EmsOrDrugList.LastOrDefault();
        //        }
        //        else
        //        {
        //            newDrug = this.uiEmsDTO.Emsdrugs.EmsOrDrugList.ElementAt(pos);
        //        }

        //        // 设置当前选择项目
        //        SetSelectedObject(newDrug);

        //        if (emsOrDrugList.Count == 0)
        //        {
        //            this.errorMsgString = med.Name + "(" + id_mm + "), 没有关联物品或者物品数据错误!";
        //            this.logicEx.Clear<EmsOrDrug>(newDrug);
        //            return false;
        //        }

        //        // 获取从后台返回的用于医嘱列表显示的数据
        //        EmsOrDrug tempDrug = emsOrDrugList[0];

        //        //皮试判断逻辑
        //        string skinErrorInfo = AssToolEx.CheckSkinTestRst(tempDrug, skinTestRst, this.GetEnt4BannerDTO());
        //        if (!string.IsNullOrEmpty(skinErrorInfo))
        //        {
        //            this.errorMsgString = skinErrorInfo;
        //            this.logicEx.Clear<EmsOrDrug>(newDrug);
        //            return false;
        //        }

        //        // 加载第一条记录信息已经是全的了,不用执行后边的
        //        if (pos < 0)
        //        {
        //            return true;
        //        }

        //        if (!newDrug.IsUPDATED)
        //        {
        //            tempDrug.Status = DOStatus.NEW;
        //        }
        //        else
        //        { // 增加该逻辑分支   针对 已保存的 医嘱项目 进行服务项目的修改 -- 2016-11-21 by wangqz
        //            tempDrug.Status = DOStatus.UPDATED;
        //        }
        //        // 保留id_orsrv ,当对编辑项通过退格键删除后,在选择其他服务,Id_orsrv存在
        //        tempDrug.Id_orsrv = newDrug.Id_orsrv;

        //        // 新加的药品要与已有的保持同频次,同周期,同用法
        //        tempDrug.Id_route = this.uiEmsDTO.Emsdrugs.Id_route;
        //        tempDrug.Name_route = this.uiEmsDTO.Emsdrugs.Name_route;

        //        // 同频次
        //        tempDrug.Id_freq = this.uiEmsDTO.Emsdrugs.Id_freq;
        //        tempDrug.Name_freq = this.uiEmsDTO.Emsdrugs.Name_freq;
        //        tempDrug.Sd_frequnitct = this.uiEmsDTO.Emsdrugs.Sd_frequnitct;
        //        tempDrug.Freqct = this.uiEmsDTO.Emsdrugs.Freqct;

        //        // 如果只有一条记录,恢复到服务默认的频次,用法
        //        fillSameInfoWithMedSrvDO(tempDrug, medSrv);

        //        // 同周期
        //        tempDrug.Use_days = this.uiEmsDTO.Emsdrugs.Use_days;

        //        // 计算总次数
        //        int times_cur = CalQuantumUtil.GetInstance().getTotalTimes(tempDrug.Id_freq, (int)this.uiEmsDTO.Emsdrugs.Use_days);

        //        // 计算总量
        //        tempDrug.Quan_cur = CalQuantumUtil.GetInstance().getMMQuantum(tempDrug.Sd_opmutp, tempDrug.Quan_med, tempDrug.Factor_mb, tempDrug.Factor_cb, times_cur);

        //        // 计算总价
        //        tempDrug.Totalprice = tempDrug.Price * tempDrug.Quan_cur;

        //        // 将返回数据加到表格数据源中
        //        newDrug.Replace(tempDrug);
        //    }

        //    return true;
        //}
        public override bool LoadMedSrv(EmsCreatedParameter emsCreateParameter, int pos)
        {
            base.LoadMedSrv(emsCreateParameter, pos);
            MedSrvDO med   = emsCreateParameter.getMedSrvDO();
            String   id_mm = emsCreateParameter.getMmID();


            Dictionary <String, Object> ctmInfo = new Dictionary <string, object>();

            ctmInfo.Add("CustomInfo", emsCreateParameter.GetParameter() == null ? null : emsCreateParameter.GetParameter().ToString());
            EmsRstDTO[] rsts = CreateRemote(med.Id_srv, id_mm, ctmInfo);
            EmsRstDTO   rst  = rsts[0];

            if (rst != null)
            {
                // 获取列表最后一个数据
                EmsOrDrug newDrug = null;

                EmsDrugItemDO emsDrugItem = (rst.Document[0] as EmsDrugItemDO);
                //String utf8Str = System.Text.Encoding.UTF8.GetString(Convert.FromBase64String(rst.DocumentString));
                //EmsDrugItemDO emsDrugItem = new EmsDrugItemDO();
                //emsDrugItem.deSerializeJson(utf8Str);

                FMap2 emsExtMap = rst.Extension;

                this.id_dosages = emsExtMap["DosagesFilter"] as string;
                MedSrvDO        medSrv      = emsExtMap["MedSrvDO"] as MedSrvDO;
                OrWfDeptInfoDTO wf          = emsExtMap["OrWfDeptInfoDTO"] as OrWfDeptInfoDTO;
                SkinTestRstDTO  skinTestRst = emsExtMap["SkinTestRstDTO"] as SkinTestRstDTO;
                if (emsExtMap["IsShowWarnInfo"] != null && (bool)emsExtMap["IsShowWarnInfo"])
                {
                    this.tipInfoMsgString = emsExtMap["SpecilDrugWarnInfo"] as string;
                }
                // 物品参照
                if (emsDrugItem.EmsOrDrug == null)
                {
                    emsDrugItem.EmsOrDrug = new XapDataList <EmsOrDrug>();
                }
                foreach (EmsOrDrug drug in emsDrugItem.EmsOrDrugListEx)
                {
                    emsDrugItem.EmsOrDrug.Add(drug);
                }

                // 列表中显示的物品
                XapDataList <EmsOrDrug> emsOrDrugList = new XapDataList <EmsOrDrug>();

                foreach (EmsOrDrug drug in emsDrugItem.EmsOrDrugListEx)
                {
                    emsOrDrugList.Add(drug);
                }

                // 获取从后台返回的用于医嘱列表显示的数据
                EmsOrDrug tempDrug = emsOrDrugList[0];

                if (pos < 0)
                {
                    this.uiEmsDTO.MedSrvDO = med;

                    emsDrugItem.EmsOrDrugList = emsOrDrugList;
                    // 当物品id查询不到对应物品时,不做赋值操作
                    if (emsOrDrugList.Count > 0)
                    {
                        this.uiEmsDTO.Emsdrugs = emsDrugItem;
                    }
                    newDrug = this.uiEmsDTO.Emsdrugs.EmsOrDrugList.LastOrDefault();
                    this.uiEmsDTO.Emsdrugs.Id_dep   = tempDrug.Id_mp_dep;
                    this.uiEmsDTO.Emsdrugs.Name_dep = tempDrug.Name_mp_dep;
                }
                else
                {
                    newDrug = this.uiEmsDTO.Emsdrugs.EmsOrDrugList.ElementAt(pos);
                }

                // 设置当前选择项目
                SetSelectedObject(newDrug);


                //皮试判断逻辑
                string skinErrorInfo = AssToolEx.CheckSkinTestRst(tempDrug, skinTestRst, this.GetEnt4BannerDTO());
                if (skinErrorInfo != null)
                {
                    this.errorMsgString = skinErrorInfo;
                    this.logicEx.Clear <EmsOrDrug>(newDrug);
                    return(false);
                }

                // 加载第一条记录信息已经是全的了,不用执行后边的
                if (pos < 0)
                {
                    return(true);
                }

                if (!newDrug.IsUPDATED)
                {
                    tempDrug.Status = DOStatus.NEW;
                }
                else
                { // 增加该逻辑分支   针对 已保存的 医嘱项目 进行服务项目的修改 -- 2016-11-21 by wangqz
                    tempDrug.Status = DOStatus.UPDATED;
                }
                // 保留id_orsrv ,当对编辑项通过退格键删除后,在选择其他服务,Id_orsrv存在
                tempDrug.Id_orsrv = newDrug.Id_orsrv;

                // 新加的药品要与已有的保持同频次,同周期,同用法
                tempDrug.Id_route   = this.uiEmsDTO.Emsdrugs.Id_route;
                tempDrug.Name_route = this.uiEmsDTO.Emsdrugs.Name_route;

                // 同频次
                tempDrug.Id_freq       = this.uiEmsDTO.Emsdrugs.Id_freq;
                tempDrug.Name_freq     = this.uiEmsDTO.Emsdrugs.Name_freq;
                tempDrug.Sd_frequnitct = this.uiEmsDTO.Emsdrugs.Sd_frequnitct;
                tempDrug.Freqct        = this.uiEmsDTO.Emsdrugs.Freqct;

                // 如果只有一条记录,恢复到服务默认的频次,用法
                fillSameInfoWithMedSrvDO(tempDrug, medSrv);

                // 同周期
                tempDrug.Use_days = this.uiEmsDTO.Emsdrugs.Use_days;

                // 计算总次数
                int times_cur = CalQuantumUtil.GetInstance().getTotalTimes(tempDrug.Id_freq, (int)this.uiEmsDTO.Emsdrugs.Use_days);

                // 计算总量
                tempDrug.Quan_cur = CalQuantumUtil.GetInstance().getMMQuantum(tempDrug.Sd_opmutp, tempDrug.Quan_med, tempDrug.Factor_mb, tempDrug.Factor_cb, times_cur);

                // 计算总价
                tempDrug.Totalprice = tempDrug.Price * tempDrug.Quan_cur;

                // 将返回数据加到表格数据源中
                newDrug.Replace(tempDrug);
            }

            return(true);
        }