Ejemplo n.º 1
0
        void radioGroup_ValueTextChanged(object sender, EventArgs e)
        {
            XRadioboxGroup radioBox         = (sender as XRadioboxGroup);
            bool           hpTreatAllSelect = true;

            if (radioBox.ValueText == ReportCodeDict.HP_TREAT_ALL_SELECT)
            {
                hpTreatAllSelect = true;
            }
            else
            {
                hpTreatAllSelect = false;
            }
            RowCollectionBase rows = gridView.DataTable.Rows;

            if (rows != null)
            {
                List <XDataRow> rowsList = rows.DataRowList;
                foreach (XDataRow row in rowsList)
                {
                    OrdSrvDO orSrvDO = row.RowDataSource as OrdSrvDO;
                    // 丙类的服务项目自费,非自费单选按钮状态设置为不可操作
                    if (orSrvDO.Sd_hpsrvtp == HpDicCodeConst.SD_HPSRVTP_CLASS_C)
                    {
                        continue;
                    }
                    XCheckboxGroup cell = row.ColumnCellDict["Eu_hpdoctorjudge"] as XCheckboxGroup;
                    cell.checFirst.Checked  = hpTreatAllSelect;
                    cell.checSecond.Checked = !hpTreatAllSelect;

                    orSrvDO.Eu_hpdoctorjudge = hpTreatAllSelect == true ? 1 : 2;
                }
            }
        }
Ejemplo n.º 2
0
        public string GetOrdDes(OrdSrvDO srvDo)
        {
            string des = srvDo.Name + "" + srvDo.Quan_medu + "" + srvDo.Medu_name;

            des += "\n" + srvDo.Route_name + "" + srvDo.Freq_name;

            return(des);
        }
Ejemplo n.º 3
0
        protected override EmsOrDrug EmsOrDrugWithOrdSrvDO(OrdSrvDO ordSrv, int useDays = 1, ordsrvmm.d.OrdSrvMmDO srvMm = null)
        {
            EmsOrDrug tmpDrug = base.EmsOrDrugWithOrdSrvDO(ordSrv, useDays, srvMm);

            tmpDrug.Quan_cur   = 1;
            tmpDrug.Totalprice = tmpDrug.Quan_cur * tmpDrug.Price;
            return(tmpDrug);
        }
Ejemplo n.º 4
0
 /// <summary>
 /// 根据id值查找临床医嘱AggDO数据
 /// </summary>
 /// <param name="id"></param>
 /// <returns></returns>
 public OrdSrvDO findById(String id)
 {
     #region "缓存处理"
     if (ch.IsCached("findById"))
     {
         return(ch.findById(id));
     }
     #endregion
     List <object> param = new List <object>();
     param.Add(id);
     si.url = url_r;
     OrdSrvDO rtn = si.invoke <OrdSrvDO>("findById", param.ToArray());
     return(rtn);
 }
Ejemplo n.º 5
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="emsHeadDO"></param>
        /// <param name="srvList"></param>
        public void SetOpORSrv(EmsUIDTO emsHeadDO, List <OrdSrvDO> srvList)
        {
            OrdSrvDO srv = new OrdSrvDO();

            if (agg.getOrdSrvDO() != null)
            {
                OrdSrvDO srvtmp = agg.getOrdSrvDO().FirstOrDefault(p => p.Id_orsrv == emsHeadDO.Emsapbt.Id_orsrv);
                if (srvtmp != null)
                {
                    srv        = srvtmp;
                    srv.Status = DOStatus.UPDATED;
                }
            }

            orDataBing.SaveOpOrSrvDataBing(emsHeadDO, srv);
            srvList.Add(srv);
        }
Ejemplo n.º 6
0
        public void SetCiORSrv(CiorderAggDO agg, EmsUIDTO emsHeadDO, List <OrdSrvDO> srvList)
        {
            int i = 1;

            //emsHeadDO.Emsaplab.EmsOrObsList
            emsHeadDO.Emsaplab.EmsOrObsList.ToList().ForEach(p =>
            {
                //把检查的项目 对照成服务
                OrdSrvDO srv = new OrdSrvDO();
                if (emsHeadDO.Status == DOStatus.UPDATED)
                {
                    //srv = agg.getOrdSrvDO()[emsHeadDO.Emsdrugs.EmsOrDrugList.IndexOf(p)];
                    //srv = agg.getOrdSrvDO().First(x => x.Id_orsrv == p.Id_orsrv);//找到数据库已经存在的
                    if (srv == null)//数据库找不到 可能是修改时候 新增了 药品
                    {
                        srv = new OrdSrvDO();
                    }
                }
                srv.Id_pat    = emsHeadDO.PatInfo.Id_pat;    //患者
                srv.Id_entp   = emsHeadDO.PatInfo.Id_entp;   //就诊类型
                srv.Code_entp = emsHeadDO.PatInfo.Code_entp; //就诊类型编码
                srv.Id_en     = emsHeadDO.PatInfo.Id_ent;    //就诊
                srv.Sortno    = i;                           //TODO: 顺序应该是机制生成的
                srv.Id_srvtp  = emsHeadDO.MedSrvDO.Id_srvtp; //	服务类型
                srv.Sd_srvtp  = emsHeadDO.MedSrvDO.Sd_srvtp; //服务类型编码
                srv.Id_srv    = emsHeadDO.MedSrvDO.Id_srv;   //服务项目
                srv.Name      = emsHeadDO.Emsaplab.Name_srv; //服务项目名称
                srv.Name      = p.Name_srv;

                //agg.getParentDO().Content_or = LogicEx.GetInstance().GetOrDes(emsHeadDO);
                agg.getParentDO().Dt_entry = emsHeadDO.Emsaplab.Dt_plan;//每条检查 不同的属性再进行独立赋值
                srv.Name = p.Name_srv;
                agg.getParentDO().Dt_entry = emsHeadDO.Emsaplab.Dt_plan;
                agg.getParentDO().Dt_stop  = CommonExtentions.NowTime(this);
                agg.getParentDO().Dt_effe  = CommonExtentions.NowTime(this);
                //agg.getParentDO().Content_or = emsHeadDO.Emsaplab.Name_samptp;
                //待完善
                srvList.Add(srv);
                i++;
            });
        }
Ejemplo n.º 7
0
        /// <summary>
        /// 检查的 ci_or_srv 的数据
        /// </summary>
        /// <param name="agg"></param>
        /// <param name="status"></param>
        /// <param name="emsHeadDO"></param>
        /// <param name="srvList"></param>
        public void SetCiORSrv(CiorderAggDO agg, EmsUIDTO emsHeadDO, List <OrdSrvDO> srvList)
        {
            int i = 1;

            XapDataList <EmsObsLap> list = emsHeadDO.Emsapobs.EmsOrObsList;

            foreach (EmsObsLap p in list)
            {
                //把检查的项目 对照成服务
                OrdSrvDO srv = new OrdSrvDO();
                if (emsHeadDO.Status == DOStatus.UPDATED)
                {
                    //srv = agg.getOrdSrvDO()[emsHeadDO.Emsdrugs.EmsOrDrugList.IndexOf(p)];
                    srv = agg.getOrdSrvDO().FirstOrDefault(x => x.Id_orsrv == p.Id_srv); //找到数据库已经存在的
                }
                if (srv == null)                                                         //数据库找不到 可能是修改时候 新增了 药品
                {
                    srv = new OrdSrvDO();
                }
                srv.Id_pat    = emsHeadDO.PatInfo.Id_pat;                //患者
                srv.Id_entp   = emsHeadDO.PatInfo.Id_entp;               //就诊类型
                srv.Code_entp = emsHeadDO.PatInfo.Code_entp;             //就诊类型编码
                srv.Id_en     = emsHeadDO.PatInfo.Id_ent;                //就诊
                srv.Sortno    = i;                                       //TODO: 顺序应该是机制生成的
                srv.Id_srvtp  = emsHeadDO.MedSrvDO.Id_srvtp;             //	服务类型
                srv.Sd_srvtp  = emsHeadDO.MedSrvDO.Sd_srvtp;             //服务类型编码
                srv.Id_srv    = emsHeadDO.MedSrvDO.Id_srv;               //服务项目
                srv.Name      = emsHeadDO.Emsapobs.Name_srv;             //服务项目名称
                srv.Name      = p.Name_srv;
                agg.getParentDO().Dt_entry = emsHeadDO.Emsapobs.Dt_plan; //每条检查 不同的属性再进行独立赋值
                srv.Name = p.Name_srv;
                agg.getParentDO().Dt_entry = emsHeadDO.Emsapobs.Dt_plan;
                agg.getParentDO().Dt_stop  = emsHeadDO.Emsapobs.Dt_plan;
                agg.getParentDO().Dt_effe  = emsHeadDO.Emsapobs.Dt_plan;
                //agg.getParentDO().Content_or = cof.GetOrDes(emsHeadDO, emsType);
                //待完善
                srvList.Add(srv);
                i++;
            }
        }
Ejemplo n.º 8
0
        /// <summary>
        /// 创建用血医嘱元数据
        /// </summary>
        /// <param name="id_or"></param>
        /// <returns></returns>
        CiordubDTO creatBuEmsDO(string id_or, MedSrvDO medSrcDO)
        {
            CiorderAggDO ciagg   = XapServiceMgr.find <ICiorderCrudService>().findById(id_or);
            CiOrderDO    ciOrder = ciagg.getParentDO();

            OrdApBtDO[] btdos   = XapServiceMgr.find <ICiorappbtMDOCrudService>().find("id_or='" + id_or + "'", null, FBoolean.False);
            OrdApBtDO   btdo    = btdos[0];
            OrdSrvDO    mainSrv = null;

            foreach (OrdSrvDO ordsrv in ciagg.getOrdSrvDO())
            {
                if (ordsrv.Eu_sourcemd != null && ordsrv.Eu_sourcemd == (int)OrSrvSourceFromEnum.PHYSIAN && ordsrv.Sd_srvtp == BdSrvDictCodeConst.SD_SRVTP_BLOODPROD_BLOODPROD_READYBLOOD)
                {
                    mainSrv = ordsrv;
                    break;
                }
            }
            (this.GetViewModel().GetEmsUIDTO() as EmsUIDTO).CiordubDTO           = new CiordubDTO();
            (this.GetViewModel().GetEmsUIDTO() as EmsUIDTO).CiordubDTO.Id_or_rel = ciOrder.Id_or;
            (this.GetViewModel().GetEmsUIDTO() as EmsUIDTO).CiordubDTO.Applyform = btdo.No_applyform;
            if (mainSrv != null)
            {
                (this.GetViewModel().GetEmsUIDTO() as EmsUIDTO).CiordubDTO.Orsrvname = mainSrv.Name;
                (this.GetViewModel().GetEmsUIDTO() as EmsUIDTO).CiordubDTO.Quan_medu = mainSrv.Quan_medu;
                (this.GetViewModel().GetEmsUIDTO() as EmsUIDTO).CiordubDTO.Id_unit   = mainSrv.Id_medu;
                (this.GetViewModel().GetEmsUIDTO() as EmsUIDTO).CiordubDTO.Name_unit = mainSrv.Medu_name;
            }

            (this.GetViewModel().GetEmsUIDTO() as EmsUIDTO).CiordubDTO.Id_srv = ciOrder.Id_srv;

            (this.GetViewModel().GetEmsUIDTO() as EmsUIDTO).CiordubDTO.Dt_bt_pl      = Convert.ToDateTime(btdo.Dt_bt_pl);
            (this.GetViewModel().GetEmsUIDTO() as EmsUIDTO).CiordubDTO.Num_margin_bu = btdo.Num_margin_bu;
            (this.GetViewModel().GetEmsUIDTO() as EmsUIDTO).CiordubDTO.Id_emp_sign   = ciOrder.Id_emp_sign;
            (this.GetViewModel().GetEmsUIDTO() as EmsUIDTO).CiordubDTO.Name_emp_sign = ciOrder.Emp_sign_name;
            (this.GetViewModel().GetEmsUIDTO() as EmsUIDTO).CiordubDTO.Id_route      = medSrcDO.Id_route;
            (this.GetViewModel().GetEmsUIDTO() as EmsUIDTO).CiordubDTO.Name_route    = medSrcDO.Route_name;
            (this.GetViewModel().GetEmsUIDTO() as EmsUIDTO).CiordubDTO.Quan_medu_ub  = (this.GetViewModel().GetEmsUIDTO() as EmsUIDTO).CiordubDTO.Quan_medu;
            (this.GetViewModel().GetEmsUIDTO() as EmsUIDTO).CiordubDTO.Id_unit       = (this.GetViewModel().GetEmsUIDTO() as EmsUIDTO).Emsapbt.Id_unit_med;
            return((this.GetViewModel().GetEmsUIDTO() as EmsUIDTO).CiordubDTO);
        }
Ejemplo n.º 9
0
        public void CreatPres(string id_pat)
        {
            //TODO:执行之前 只针对未设置处方的,只生成新的处方,不进行修改,暂时只是按照 分类进行分方,并没有对每个方子里的条数 进行限制
            OrdSrvDO[] orderSrvs = modelSrv.GetSrvs(id_pat);//代表已经获取该患者的所有医嘱服务 参数 患者id
            //分组 医嘱服务

            var v = from c in orderSrvs
                    group c by new
            {
                SD_SRVTP = c.Sd_srvtp
            } into s
                select new
            {
                SD_SRVTP    = s.Select(p => p.Sd_srvtp).First(),
                ordSrvCount = s.Select(p => p.Sd_srvtp).Count()
            };

            v.ToList().ForEach(p =>
            {
                OrdSrvDO srvtem = orderSrvs.First(t => t.Sd_srvtp == p.SD_SRVTP);
                string ci_code  = "PRES" + CommonExtentions.NowTime(this).Year + CommonExtentions.NowTime(this).Month + CommonExtentions.NowTime(this).Day + CommonExtentions.NowTime(this).Hour + CommonExtentions.NowTime(this).Minute + CommonExtentions.NowTime(this).Second + CommonExtentions.NowTime(this).Millisecond + ran.Next(0, 100);//code 生成机制
                CiPresDO ci     = new CiPresDO()
                {
                    //-此为处方所有字段,用到那个 解开注释加哪个
                    Id_pati   = srvtem.Id_pat,
                    Id_entp   = srvtem.Id_entp,   // "0001AA10000000004O80",//TODO: 临时数据,
                    Code_entp = srvtem.Code_entp, // "01",
                    Id_en     = srvtem.Id_en,     //"0001AA1000000001OM3N",//TODO: 临时数据,
                    Id_di     = "患者的诊断",          //患者诊断,
                    //Id_diitm,
                    //Str_id_di,
                    //Str_name_di,
                    Id_srvtp  = srvtem.Id_srvtp,
                    Sd_srvtp  = p.SD_SRVTP, //服务类型编码,
                    Id_prestp = "01",       //TODO:处方类型 后面改正
                    Sd_prestp = p.SD_SRVTP,
                    Code      = ci_code,
                    Name      = srvtem.Id_pat + "处方",
                    Id_dep_or = UserManager.getInstance().CurrentDept.Id_dep,  //开立科室
                    Id_emp_or = UserManager.getInstance().CurrentUser.Id_user, //开立医生
                    Dt_entry  = CommonExtentions.NowTime(this),                //开立日期
                    //Fg_bb,
                    //No_bb,
                    //Id_bb,
                    Id_route    = srvtem.Id_route,//用法,
                    Id_routedes = srvtem.Id_routedes,
                    //Id_boil,
                    //Id_boildes,
                    //Fg_charge,
                    Fg_dispense = false,//发药标识,
                    //Id_backtp,
                    //Sd_backtp,
                    //Fg_back,
                    //Id_emp,
                    //Fg_prn,
                    //Fg_prn_add,
                    //Id_pres_rel_add,
                    Id_su_bl = "1", //TODO:记账状态 先假数据
                    Sd_su_bl = "1", //记账状态,
                    //Fg_makeup,
                    Createdby    = UserManager.getInstance().CurrentUser.Createdby,
                    Createdtime  = UserManager.getInstance().CurrentUser.Createdtime,
                    Modifiedby   = UserManager.getInstance().CurrentUser.Modifiedby,
                    Modifiedtime = UserManager.getInstance().CurrentUser.Modifiedtime,
                    //Ds,
                    //Sv
                };
                string id_pres = Save(ci)[0].Id_pres;
                orderSrvs.ToList().ForEach(x =>
                {
                    if (x.Sd_srvtp == p.SD_SRVTP)
                    {
                        x.Id_pres = id_pres;
                        x.Status  = DOStatus.UPDATED;
                    }
                });
            });

            //所有的医嘱单已经生成完毕 更新srv

            modelSrv.Save(orderSrvs);
        }
Ejemplo n.º 10
0
        void tabControl_DataDisplay(Object sender, XDataDisplayEventArgs e)
        {
            XDataRow row     = sender as XDataRow;
            OrdSrvDO orSrvDO = row.RowDataSource as OrdSrvDO;

            orSrvDO.Eu_hpdoctorjudge = 0;
            if (orSrvDO.Indicitemid == null)
            {
                orSrvDO.Indicitemid = orSrvDO.Sd_srvtp;
            }
            GetSysParamDTO sysParamDto = SysParamUtils.getSysParam().SYS_PARAM_IsAdmintHpIndicJudgeFeeItemUnDrugOR;

            //0两个都不选,1:first选择,2:second选择
            if (row != null && row.ColumnCellDict.ContainsKey("Eu_hpdoctorjudge"))
            {
                XCheckboxGroup cell = row.ColumnCellDict["Eu_hpdoctorjudge"] as XCheckboxGroup;
                // 如果医保目录为丙类的不允许编辑
                cell.Enabled = orSrvDO.Sd_hpsrvtp != HpDicCodeConst.SD_HPSRVTP_CLASS_C;


                if (cell.Enabled)
                {
                    if (sysParamDto.OrgParam != null && sysParamDto.OrgParam.Equals("true"))
                    {
                        cell.Enabled = this.getCanEdit();
                    }
                    else
                    {
                        if (this.orderType != null &&
                            (this.orderType.StartsWith("02") || this.orderType.StartsWith("03")))
                        {
                            cell.Enabled = false;
                        }
                        else
                        {
                            cell.Enabled = this.getCanEdit();
                        }
                    }
                }

                //cell.checFirst.Text = "符合-医保 全选";
                //cell.checSecond.Text = "不符合-自费 全选";
                cell.checFirst.Text  = "符合-医保";
                cell.checSecond.Text = "不符合-自费";
                //待判断
                if (orSrvDO.Fg_hpindicjudged == (int)HpIndicJudgeEnum.WAITINGJUDGE)
                {
                    if (orSrvDO.Fg_indic != null)
                    {
                        //if (orSrvDO.Fg_indic == true)
                        //{
                        //    cell.checFirst.ForeColor = Color.Red;
                        //}
                        //else {
                        //    cell.checSecond.ForeColor = Color.Red;
                        //}
                    }
                    orSrvDO.Eu_hpdoctorjudge = 0;
                }//已判断
                else
                {
                    if (orSrvDO.Fg_indic == null)
                    {
                        // 两个都不选中,该值会设置适应,非适应都不选中
                        orSrvDO.Eu_hpdoctorjudge = 0;
                        //cell.checFirst.Checked = false;
                        //cell.checSecond.Checked = false;
                    }
                    else
                    {
                        bool firChecked = FBoolean.True == orSrvDO.Fg_indic && FBoolean.False == orSrvDO.Fg_selfpay;
                        //bool secChecked = FBoolean.False == orSrvDO.Fg_indic || FBoolean.True == orSrvDO.Fg_selfpay;
                        if (firChecked)
                        {
                            // 两个都不选中,该值会设置适应症选中
                            orSrvDO.Eu_hpdoctorjudge = 1;
                        }
                        else
                        {
                            // 两个都不选中,该值会设置非适应症选中
                            orSrvDO.Eu_hpdoctorjudge = 2;
                        }
                    }
                }
            }
        }
Ejemplo n.º 11
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="drug"></param>
        /// <param name="ordSrv"></param>
        /// <param name="useDays"></param>
        /// <param name="srvMm"></param>
        /// <returns></returns>
        protected virtual EmsOrDrug EmsOrDrugWithOrdSrvDO(OrdSrvDO ordSrv, int useDays = 1, OrdSrvMmDO srvMm = null)
        {
            EmsOrDrug drug = new EmsOrDrug();

            drug.Code_mm       = (srvMm != null ? srvMm.Code_mm : null);
            drug.Code_srv      = ordSrv.Code_srv;
            drug.Des           = ordSrv.Note_srv;
            drug.Id_srv_src    = ordSrv.Id_srv_src; // 服务所属来源
            drug.Id_boil       = ordSrv.Id_boil;
            drug.Name_boil     = ordSrv.Boil_name;
            drug.Id_routedes   = ordSrv.Id_routedes;
            drug.Name_routedes = ordSrv.Routedes_name;
            drug.Priby         = ordSrv.Priby;
            drug.Id_pri        = ordSrv.Id_primd;

            //             drug.Fact_count
            drug.Factor_cb = (srvMm != null ? srvMm.Factor : null);
            drug.Factor_mb = (srvMm != null ? srvMm.Factor_mb : null);
            //drug.Fg_anti = ordSrv.Fg_anti;
            drug.Fg_bl = ordSrv.Fg_bl;
            //         drug.Fg_chk = ordSrv
            drug.Fg_ctm        = ordSrv.Fg_selfsrv; //自定义服务
            drug.Fg_dose_anoma = ordSrv.Fg_dose_anoma;
            drug.Fg_mm         = ordSrv.Fg_mm;
            drug.Fg_otc        = (srvMm != null ? srvMm.Fg_otc : null);
            //          drug.Fg_pois =
            drug.Fg_propc    = ordSrv.Fg_propc;
            drug.Fg_self     = ordSrv.Fg_self;
            drug.Fg_selfpay  = ordSrv.Fg_selfpay;
            drug.Fg_skintest = ordSrv.Fg_skintest;
            drug.Fg_treat    = ordSrv.Fg_indic;
            //        drug.Fg_urgent = ordSrv
            drug.Fg_or       = ordSrv.Fg_or;
            drug.Fg_bl       = ordSrv.Fg_bl;
            drug.Eu_sourcemd = ordSrv.Eu_sourcemd;
            drug.Freqct      = (ordSrv.Freqct == null ? 1 : ordSrv.Freqct);
            //        drug.Hpdes = ordSrv
            drug.Id_anti    = (srvMm != null ? srvMm.Id_anti : null);
            drug.Id_antipsy = (srvMm != null ? srvMm.Id_antipsy : null);
            drug.Id_boildes = ordSrv.Id_boildes;
            drug.Id_dosage  = (srvMm != null ? srvMm.Id_dosage : null);
            //         drug.Id_emsordrug = ordSrv
            drug.Id_freq       = ordSrv.Id_freq;
            drug.Sd_frequnitct = ordSrv.Sd_frequnitct;
            //        drug.Id_freqtime = ordSrv
            drug.Id_hp      = ordSrv.Id_hp;
            drug.Id_hpsrvtp = ordSrv.Id_hpsrvtp;
            drug.Sd_hpsrvtp = ordSrv.Sd_hpsrvtp;
            drug.Limit      = ordSrv.Des_hplimit;
            //判断医生是否已经处理医保信息的标识
            drug.Fg_hpindicjudged = ordSrv.Fg_hpindicjudged;
            drug.Id_mm            = (srvMm != null ? srvMm.Id_mm : null);
            drug.Id_mmtp          = (srvMm != null ? srvMm.Id_mmtp : null);
            drug.Id_mp_dep        = ordSrv.Id_dep_mp;
            drug.Id_or_rel        = ordSrv.Id_or_rel;
            drug.Id_orsrv         = ordSrv.Id_orsrv;

            drug.Id_pharm = (srvMm != null ? srvMm.Id_pharm : null);
            drug.Id_pois  = (srvMm != null ? srvMm.Id_pois : null);
            drug.Id_pri   = ordSrv.Id_primd;
            drug.Id_reltp = ordSrv.Id_reltp;
            drug.Id_route = ordSrv.Id_route;
            drug.Id_skintest_skip_reason = ordSrv.Id_skintest_skip_reason;
            drug.Id_srv   = ordSrv.Id_srv;
            drug.Id_srvca = ordSrv.Id_srvca;

            drug.Id_srvmm = (srvMm != null ? srvMm.Id_orsrvmm : null);
            //          drug.Id_srvskin =
            drug.Id_srvtp     = ordSrv.Id_srvtp;
            drug.Id_pgku_cur  = (srvMm != null ? srvMm.Id_pgku_cur : ordSrv.Id_medu);
            drug.Id_unit_base = (srvMm != null ? srvMm.Id_pgku_base : null);
            drug.Id_unit_med  = ordSrv.Id_medu;
            drug.Id_unit_sale = (srvMm != null ? srvMm.Id_pgku_cur : ordSrv.Id_medu);
            drug.Id_val       = (srvMm != null ? srvMm.Id_val : null);

            drug.Name_boildes = ordSrv.Boil_name;
            drug.Name_freq    = ordSrv.Freq_name;
            //         drug.Name_freqtime = ordSrv
            //         drug.Name_hp = ordSrv.n
            drug.Name_hpsrvtp = ordSrv.Name_hpsrvtp;

            drug.Name_mm = (srvMm != null ? srvMm.Name_mm : null);
            //            drug.Name_mmtp =
            drug.Name_mp_dep    = ordSrv.Dep_mp_name;
            drug.Name_pgku_cur  = (srvMm != null ? srvMm.Name_pgku_cur : ordSrv.Medu_name);
            drug.Name_unit_sale = (srvMm != null ? srvMm.Name_pgku_cur : ordSrv.Medu_name); // 零售单位 = 总量单位 = 剂量单位
            drug.Name_route     = ordSrv.Route_name;
            drug.Name_srv       = ordSrv.Name;
            drug.Name_unit_base = (srvMm != null ? srvMm.Name_pgku_base : null);
            drug.Name_unit_med  = ordSrv.Medu_name;

            //         drug.Note_ext = ordSrv
            drug.Note_or = ordSrv.Note_srv;

            //当服务是物品时,单价应该从物品的do中取得
            if (srvMm != null)
            {
                drug.Price = srvMm.Price_pgku_cur;
            }
            else
            {
                drug.Price = ordSrv.Pri;
            }
            //         drug.Pycode = ordSrv
            drug.Use_days = useDays;
            if (srvMm != null && srvMm.Quan_den_base != null)
            {
                drug.Quan_base = (srvMm != null ? srvMm.Quan_num_base / srvMm.Quan_den_base : null); // 单次数量
            }
            drug.Quan_med = (ordSrv.Quan_medu == null ? 1 : ordSrv.Quan_medu);
            if (ordSrv.Fg_mm != null && ordSrv.Fg_mm.Value && !ordSrv.Sd_srvtp.Equals(BdSrvDictCodeConst.SD_SRVTP_BLOODPROD_BLOODPROD_USEBLOOD))
            {
                drug.Quan_cur = srvMm == null?null:srvMm.Quan_cur;
            }
            else
            {
                drug.Quan_cur = ordSrv.Quan_total_medu;
            }
            drug.Totalprice    = (drug.Quan_cur == null ? 0 : drug.Quan_cur) * (drug.Price == null ? 0 : drug.Price);
            drug.Sd_anti       = (srvMm != null ? srvMm.Sd_anti : null);
            drug.Sd_antipsy    = (srvMm != null ? srvMm.Sd_antipsy : null);
            drug.Sd_dosage     = (srvMm != null ? srvMm.Sd_dosage : null);
            drug.Sd_frequnitct = ordSrv.Sd_frequnitct;

            //         drug.Sd_mmbind_ip = ordSrv
            drug.Sd_mmtp = (srvMm != null ? srvMm.Sd_mmtp : null);
            //         drug.Sd_mupkgutp = ordSrv
            drug.Sd_pharm = (srvMm != null ? srvMm.Sd_pharm : null);
            drug.Sd_pois  = (srvMm != null ? srvMm.Sd_pois : null);
            drug.Sd_reltp = ordSrv.Sd_reltp;
            drug.Sd_skintest_skip_reason = ordSrv.Sd_skintest_skip_reason;
            drug.Sd_srvtp = ordSrv.Sd_srvtp;
            drug.Sd_val   = (srvMm != null ? srvMm.Sd_val : null);
            drug.Sortno   = ordSrv.Sortno;
            drug.Spec_mm  = (srvMm != null ? srvMm.Spec : null);
            //         drug.Str_unit_pkg_ids = ordSrv
            drug.Sv = ordSrv.Sv;

            //         drug.Vender = ordSrv
            return(drug);
        }
Ejemplo n.º 12
0
        /// <summary>
        /// 将 OrdSrvDO 列表数据转化为 EmsOrDrug 数据
        /// </summary>
        /// <param name="orAggDO"></param>
        /// <param name="tmpCacheSrv"></param>
        /// <returns></returns>
        protected virtual EmsOrDrug[] ToEmsOrDrugs(CiorderAggDO orAggDO, Dictionary <String, object> tmpCacheSrv = null, FMap srvMmMap = null, FMap blsrvFMap = null)
        {
            List <EmsOrDrug> szDrugs = new List <EmsOrDrug>();

            // 处理附加项
            for (int i = 0; i < orAggDO.ChildrenList.Count; ++i)
            {
                for (int index = 0; index < orAggDO.ChildrenList[i].Count; ++index)
                {
                    OrdSrvDO obj = orAggDO.ChildrenList[i][index] as OrdSrvDO;

                    // 获取医嘱医疗单相关信息
                    object ordSrvItem = null;

                    // 过滤 Fg_bl = false 的项目
                    //if (obj.Fg_bl == null || obj.Fg_bl == false)
                    //{
                    //    continue;
                    //}
                    if (obj.Status == DOStatus.DELETED)
                    {
                        continue;
                    }
                    // 检阅 EmsOrDrug 内容,可以根据医疗单数据进行修正
                    EmsOrDrug drug = HandleEmsOrDrug(
                        // 根据医嘱服务创建 UI EmsOrDrug 对象以及数据
                        EmsOrDrugWithOrdSrvDO(
                            obj,
                            orAggDO.getParentDO().Days_or != null ? orAggDO.getParentDO().Days_or.Value : 1,
                            (srvMmMap != null && srvMmMap.Keys.Contains(obj.Id_srv)) ? srvMmMap[obj.Id_srv] as OrdSrvMmDO : null
                            ),
                        ordSrvItem
                        );
                    //费用注意信息
                    if (blsrvFMap != null && blsrvFMap.Keys.Count != 0)
                    {
                        if (blsrvFMap.Keys.Contains(obj.Id_srv))
                        {
                            drug.Des = (blsrvFMap[obj.Id_srv] as MedSrvDO).Des;
                        }
                    }
                    // 计算总量和总金额
                    if (drug.Fg_mm != null && drug.Fg_mm.Value)
                    {
                        if (drug.Quan_cur == null)
                        {
                            GetLogicEx().GetDrugTotal(drug, null, ent4BannerDTO.Code_entp, true);
                        }

                        ////药品的总价=总量*单价
                        //if (drug.Quan_cur!=null&&drug.Price!=null)
                        //    drug.Totalprice = drug.Quan_cur * drug.Price;
                    }
                    else
                    {
                        drug.Quan_cur = obj.Quan_total_medu;
                        if (drug.Quan_cur != null && drug.Price != null)
                        {
                            drug.Totalprice = drug.Quan_cur * drug.Price;
                        }
                    }
                    //只有没有执行科室的时候才查询
                    if (string.IsNullOrEmpty(drug.Id_mp_dep) || string.IsNullOrEmpty(drug.Name_mp_dep))
                    {
                        // 计算执行科室
                        CalculateDeptMp(drug);
                    }

                    szDrugs.Add(drug);
                }
            }
            return(szDrugs.ToArray());
        }