Beispiel #1
0
        /// <summary>
        /// Gets the dept_mp.
        /// </summary>
        /// <param name="id_entp">The  .</param>
        /// <param name="id_srvtp">The id_srvtp.</param>
        /// <param name="id_srv">The id_srv.</param>

        /// <returns>id_dept|name_dept</returns>
        /// Author:admin
        ///// Date:2015-09-19
        //public List<EmsDrugItemDO> GetDept_mp(string id_entp, string id_srvtp, string id_srvCa, string id_srv, string id_route)
        //{
        //    //入参数:就诊类型id、服务类型编码、服务分类id、服务项目id、医嘱用法id、医嘱长临标志。
        //    //传回参数:执行科室id
        //    //传入参数:就诊类型id、服务分类id,服务项目id,其他参数传值为null。

        //    List<EmsDrugItemDO> list = new List<EmsDrugItemDO>();
        //    MdWfOrDO[] md = ordmpService.getMdwfOrDos(new WforQryCondDTO()
        //    {
        //        Entp = id_entp,
        //        Srvtp = id_srvtp,
        //        Id_qry = id_srv,
        //        Srvca = id_srvCa,
        //        Usg = id_route



        //    });
        //    md.ToList().ForEach(p =>
        //    {
        //        list.Add(new EmsDrugItemDO { Id_dep = p.Id_dept, Name_dep = p.Dept_name });
        //    });
        //    return list;
        //}
        /// <summary>
        /// 获取执行科室id集合
        /// </summary>
        /// <param name="id_entp">The id_entp.</param>
        /// <param name="id_srvtp">The id_srvtp.</param>
        /// <param name="id_srvCa">The id_srv ca.</param>
        /// <param name="id_srv">The id_srv.</param>
        /// <param name="id_route">The id_route.</param>
        /// <returns></returns>
        /// Author:admin
        ///// Date:2015-12-10
        //public string GetDept_mp_ids(string code_entp, string id_entp, string sd_srvtp, string id_srvCa, string id_srv, string id_route, string id_mm,string id_dept_nur)
        //{

        //    OrWfExDeptParamDTO dto = new OrWfExDeptParamDTO();
        //    dto.Id_dept_en = id_entp;
        //    dto.Id_srvca = id_srvCa;
        //    dto.Id_srv = id_srv;
        //    dto.Sd_srvtp = sd_srvtp;
        //    dto.Id_usage = id_route;
        //    dto.Code_entp = code_entp;
        //    dto.Id_dept_ns = id_dept_nur;
        //    dto.Id_mm = "";// 基数药使用 todo
        //    OrWfExDeptDTO[] deps = new IBdFcQryServiceImpl().getOrExDept4OpenMode(dto);

        //    if (deps == null) return "";
        //    string str = string.Join("','", deps.Select(p => p.Id_dept));
        //    string strdep = "'" + str + "'";
        //    return strdep;
        //}

        /// <summary>
        /// 获取医嘱流向科室数据
        /// </summary>
        /// <param name="code_entp"></param>
        /// <param name="id_entp"></param>
        /// <param name="sd_srvtp"></param>
        /// <param name="id_srvCa"></param>
        /// <param name="id_srv"></param>
        /// <param name="id_route"></param>
        /// <param name="id_mm"></param>
        /// <param name="id_dept_nur"></param>
        /// <param name="id_dep_ent"></param>
        /// <param name="id_dep_follow"></param>
        /// <returns></returns>
        public OrWfDeptInfoDTO GetDept_mp_ids(string code_entp, string id_entp, string sd_srvtp, string id_srvCa, string id_srv, string id_route, string id_mm, string id_dept_nur, string id_dep_ent = "", string id_dep_follow = "")
        {
            DataTable          dt  = new DataTable();
            OrWfExDeptParamDTO dto = new OrWfExDeptParamDTO();

            dto.Eu_wftp    = Convert.ToInt32(EnumFlow.NULL);               //    0执行与物资   1执行科室 2物资流向
            dto.Code_entp  = code_entp;                                    //     就诊类型
            dto.Id_dept_ns = id_dept_nur;                                  //就诊护理病区
            dto.Id_dept_or = UserManager.getInstance().CurrentDept.Id_dep; //开单科室
            dto.Id_dept_en = id_dep_ent;                                   //id_dept_en;//就诊科室
            //dto.Recurstr = "";   //长临需要的   不知道 就为空
            dto.Id_srv     = id_srv;                                       //服务
            dto.Sd_srvtp   = sd_srvtp;                                     //服务类型sd
            dto.Id_srvca   = id_srvCa;                                     //服务分类
            dto.Id_dept_ex = id_dep_follow;                                // 主服务执行科室--用于跟随情况
            //dto.Innercode_srvca = "";//服务分类内码
            dto.Id_mm    = id_mm;                                          // 服务选取的关联物品
            dto.Id_usage = id_route;                                       //用法
            //dto.Weekno = "2";//生效日期时间相关的 周#与时间
            dto.Timestr = new DateTime();
            //dto.Reserv1 = "";  //暂时无用途   //预留项
            //dto.Reserv2 = "";  //暂时无用途
            //dto.Reserv3 = "";  //套内项目时: BD套内项目的科室计算方式sd值,BD套内项目的固定执行科室ID值,所属套的执行科室ID值
            OrWfDeptInfoDTO deps = null;

            try {
                deps = new ICiOrdQryServiceImpl().getExeDepts4CiOrSrvN(dto);
            }
            catch (Exception ex) {
                LogManager.GetLogger().ErrorEx("获取执行科室错误!", ex);
            }

            return(deps);
        }
Beispiel #2
0
        public override bool LoadMedSrv(EmsCreatedParameter emsCreatedParameter, int pos) //EmsCreateParameter
        {
            MedSrvDO med   = emsCreatedParameter.getMedSrvDO();
            String   id_mm = emsCreatedParameter.getMmID();

            if (String.IsNullOrEmpty(id_mm))
            {
                this.errorMsgString = "没有物品ID";
                return(false);
            }

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

            AssCostTimeTool.Enabled = true;

            AssCostTimeTool t1 = new AssCostTimeTool("加载数据时候,LoadMedSrv2 解析 MedSrv 耗时:", false);

            EmsRstDTO[] rsts = CreateRemote(med.Id_srv, id_mm);
            EmsRstDTO   rst  = rsts[0];

            if (rst != 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;

                MedSrvDO        medSrv = emsExtMap["MedSrvDO"] as MedSrvDO;
                OrWfDeptInfoDTO wf     = emsExtMap["OrWfDeptInfoDTO"] as OrWfDeptInfoDTO;

                emsDrugItem.EmsOrDrug = new XapDataList <EmsOrDrug>();

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

                newDrug = this.GetSelectedObject() as EmsOrDrug;
                if (pos < 0)
                {
                    this.uiEmsDTO.MedSrvDO    = med;
                    emsDrugItem.EmsOrDrugList = emsOrDrugList;
                    this.uiEmsDTO.Emsdrugs    = emsDrugItem;
                    return(true);
                }

                //TODO: 可以放到查询药品前,重复就不用走后台了
                if (this.uiEmsDTO.Emsdrugs.EmsOrDrugList.Count(p => p.Name_srv == newDrug.Name_srv && !p.IsDELETED) > 1)
                {
                    this.errorMsgString = "已经存在服务【" + medSrv.Name + "】!";
                    this.uiEmsDTO.Emsdrugs.EmsOrDrugList.Remove(newDrug);
                    this.logicEx.Clear <EmsOrDrug>(newDrug);
                    newDrug.Status = DOStatus.NEW;
                    this.uiEmsDTO.Emsdrugs.EmsOrDrug.Clear();
                    this.uiEmsDTO.Emsdrugs.EmsOrDrug.Add(newDrug);
                    return(false);
                }

                // 获取从后台返回的用于医嘱列表显示的数据
                if (emsOrDrugList == null || string.IsNullOrEmpty(emsOrDrugList[0].Id_mm))
                {// TODO 什么情况没有数据
                    this.errorMsgString = "服务未绑定物品,请联系信息科!";
                    this.logicEx.Clear <EmsOrDrug>(newDrug);
                    return(false);
                }
                EmsOrDrug tempDrug = emsOrDrugList[0];

                if (!newDrug.IsUPDATED)
                {
                    tempDrug.Status = DOStatus.NEW;
                }
                else
                { // 增加该逻辑分支   针对 已保存的 医嘱项目 进行服务项目的修改 -- 2016-11-21 by wangqz
                    tempDrug.Status   = DOStatus.UPDATED;
                    tempDrug.Id_orsrv = newDrug.Id_orsrv;
                }


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

                // 草药外配标识在医疗单中,勾选外配,全为外配
                tempDrug.Fg_extdispense = this.uiEmsDTO.Emsdrugs.Fg_extdispense;

                // 同频次
                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;

                // 计算总次数 TODO 需要提供前台计算方法,数据都有了,不用走后台了
                int?times_cur = this.uiEmsDTO.Emsdrugs.Times_cur; // CalQuantumUtil.GetInstance().getTotalTimes(tempDrug.Id_freq, (int)this.uiEmsDTO.Emsdrugs.Use_days);


                int?orders = this.uiEmsDTO.Emsdrugs.Orders;
                // 计算总量
                tempDrug.Quan_cur = CalQuantumUtil.GetInstance().getMMQuantum(tempDrug.Sd_mupkgutp, tempDrug.Quan_med, tempDrug.Factor_mb, tempDrug.Factor_cb, orders);

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

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

            return(true);
        }
Beispiel #3
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);
        }