Exemple #1
0
        public int Compare(object x, object y)
        {
            Neusoft.HISFC.Models.Pharmacy.ApplyOut o1 = (x as Neusoft.HISFC.Models.Pharmacy.ApplyOut).Clone();
            Neusoft.HISFC.Models.Pharmacy.ApplyOut o2 = (y as Neusoft.HISFC.Models.Pharmacy.ApplyOut).Clone();

            string oX = o1.Item.ID;
            string oY = o2.Item.ID;

            int nComp;

            if (oX == null)
            {
                nComp = (oY != null) ? -1 : 0;
            }
            else if (oY == null)
            {
                nComp = 1;
            }
            else
            {
                nComp = string.Compare(oX.ToString(), oY.ToString());
            }

            return(nComp);
        }
Exemple #2
0
        /// <summary>
        /// 取消作废
        /// </summary>
        /// <returns>成功返回1 失败返回-1</returns>
        protected int UnCancelApply()
        {
            //Neusoft.FrameWork.Management.Transaction t = new Transaction(Neusoft.FrameWork.Management.Connection.Instance);
            //t.BeginTransaction();
            Neusoft.FrameWork.Management.PublicTrans.BeginTransaction();
            Neusoft.HISFC.BizLogic.Pharmacy.Item itemManager = new Neusoft.HISFC.BizLogic.Pharmacy.Item();
            //itemManager.SetTrans(t.Trans);

            //{E8849BB0-3C69-4d60-8771-C201E445BD5D}  预扣库存的判断处理
            Neusoft.HISFC.BizProcess.Integrate.Common.ControlParam ctrlIntegrate = new Neusoft.HISFC.BizProcess.Integrate.Common.ControlParam();
            bool isPreOut = ctrlIntegrate.GetControlParam <bool>(Neusoft.HISFC.BizProcess.Integrate.PharmacyConstant.InDrug_Pre_Out, false, true);

            string applyID = this.fpCancelApply_Sheet1.Cells[this.fpCancelApply_Sheet1.ActiveRowIndex, (int)ColumnSet.ColID].Text;

            Neusoft.HISFC.Models.Pharmacy.ApplyOut applyOut = this.hsApply[applyID] as Neusoft.HISFC.Models.Pharmacy.ApplyOut;

            //取消作废摆药申请
            //{E8849BB0-3C69-4d60-8771-C201E445BD5D}  传入参数调整
            if (itemManager.UndoCancelApplyOutByID(applyOut.ID, isPreOut) == -1)
            {
                Neusoft.FrameWork.Management.PublicTrans.RollBack();
                MessageBox.Show(Language.Msg("取消作废摆药申请失败"));
                return(-1);
            }

            //取消作废医嘱执行档

            Neusoft.FrameWork.Management.PublicTrans.Commit();

            MessageBox.Show(Language.Msg("取消作废申请成功"));

            this.AddRemoveCancelApply(false);

            return(1);
        }
Exemple #3
0
            public int Compare(object x, object y)
            {
                Neusoft.HISFC.Models.Pharmacy.ApplyOut o1 = (x as Neusoft.HISFC.Models.Pharmacy.ApplyOut).Clone();
                Neusoft.HISFC.Models.Pharmacy.ApplyOut o2 = (y as Neusoft.HISFC.Models.Pharmacy.ApplyOut).Clone();

                string oX = o1.PlaceNO.PadLeft(5, '0') + o1.Item.UserCode;          //货位号+自定义码{D9BE63EB-D955-48e2-A3A9-8FDB77BB3998}
                string oY = o2.PlaceNO.PadLeft(5, '0') + o1.Item.UserCode;          //货位号+自定义码

                int nComp;

                if (oX == null)
                {
                    nComp = (oY != null) ? -1 : 0;
                }
                else if (oY == null)
                {
                    nComp = 1;
                }
                else
                {
                    nComp = string.Compare(oX.ToString(), oY.ToString());
                }

                return(nComp);
            }
Exemple #4
0
 /// <summary>
 /// 打印单个药品
 /// </summary>
 /// <param name="applyOut"></param>
 public void AddSingle(Neusoft.HISFC.Models.Pharmacy.ApplyOut applyOut)
 {
     //this.Clear();
     Neusoft.HISFC.Models.Pharmacy.Item item = applyOut.Item;
     this.GetRecipeLabelItem(applyOut.StockDept.ID, applyOut.Item.ID, ref item);
     //设置患者信息显示、发药信息
     this.SetPatiAndSendInfo(applyOut);
     //退改药标志
     this.fpSpread1_Sheet1.AddRows(this.fpSpread1_Sheet1.Rows.Count, 2);
     this.fpSpread1_Sheet1.Rows[this.fpSpread1_Sheet1.Rows.Count - 1].Font     = new System.Drawing.Font("宋体", 9.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
     this.fpSpread1_Sheet1.Rows[this.fpSpread1_Sheet1.Rows.Count - 2].Font     = new System.Drawing.Font("宋体", 12F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
     this.fpSpread1_Sheet1.Cells[this.fpSpread1_Sheet1.Rows.Count - 2, 0].Text = item.NameCollection.RegularName;
     this.fpSpread1_Sheet1.Cells[this.fpSpread1_Sheet1.Rows.Count - 1, 0].Text = "     [" + item.Name + "]";
     this.fpSpread1_Sheet1.Cells[this.fpSpread1_Sheet1.Rows.Count - 2, 1].Text = item.Specs;
     this.fpSpread1_Sheet1.Cells[this.fpSpread1_Sheet1.Rows.Count - 1, 1].Text = applyOut.Usage.Name.ToString();
     this.fpSpread1_Sheet1.Cells[this.fpSpread1_Sheet1.Rows.Count - 2, 2].Text = applyOut.Operation.ApplyQty.ToString() + applyOut.Item.MinUnit;
     if (applyOut.PlaceNO != null)
     {
         this.fpSpread1_Sheet1.Cells[this.fpSpread1_Sheet1.Rows.Count - 2, 3].Text = applyOut.PlaceNO.ToString();
     }
     this.fpSpread1_Sheet1.Cells[this.fpSpread1_Sheet1.Rows.Count - 2, 4].Text = applyOut.Item.Price.ToString();
     this.fpSpread1_Sheet1.Cells[this.fpSpread1_Sheet1.Rows.Count - 2, 5].Text = "80%";
     TotCost += applyOut.Operation.ApplyQty * applyOut.Item.Price;
     this.lblTotCost.Text = TotCost.ToString();
 }
        /// <summary>
        /// 打印单个药品
        /// </summary>
        /// <param name="applyOut"></param>
        public void AddSingle(Neusoft.HISFC.Models.Pharmacy.ApplyOut applyOut)
        {
            this.Clear();
            Neusoft.HISFC.Models.Pharmacy.Item item = applyOut.Item;
            this.GetRecipeLabelItem(applyOut.StockDept.ID, applyOut.Item.ID, ref item);
            //设置患者信息显示、发药信息
            this.SetPatiAndSendInfo(applyOut);
            //设置处方内发药药品信息
            this.neuSpread1_Sheet1.Cells[(int)RowSet.RowDrugBegin, 0].ColumnSpan = 3;
            //退改药标志
            if (applyOut.ValidState == Neusoft.HISFC.Models.Base.EnumValidState.Extend)
            {
                this.neuSpread1_Sheet1.Cells[(int)RowSet.RowDrugBegin, 0].Text = "[改] " + applyOut.Item.Name + "[" + applyOut.Item.Specs + "]"; //名称
            }
            else
            {
                this.neuSpread1_Sheet1.Cells[(int)RowSet.RowDrugBegin, 0].Text = applyOut.Item.Name + "[" + applyOut.Item.Specs + "]";           //名称
            }
            this.neuSpread1_Sheet1.Cells[(int)RowSet.RowDrugBegin, 3].Text     = applyOut.Operation.ApplyQty.ToString() + applyOut.Item.MinUnit; //申请量、单位
            this.neuSpread1_Sheet1.Cells[(int)RowSet.RowDrugBegin + 1, 0].Text = applyOut.Item.NameCollection.RegularName;                       //名称
            if (applyOut.ExecNO.ToString() != "" && applyOut.ExecNO.ToString() != "0")
            {
                this.neuSpread1_Sheet1.Cells[(int)RowSet.RowDrugBegin + 1, 2].Text = "院注" + applyOut.ExecNO.ToString() + "次";
            }

            this.neuSpread1_Sheet1.Cells[(int)RowSet.RowDrugBegin + 2, 0].Text = this.usageHelper.GetName(applyOut.Usage.ID);                                           //用法

            //屏蔽代码
            //			this.neuSpread1_Sheet1.Cells[(int)RowSet.RowDrugBegin + 2,1].Text = "每次" + applyOut.DoseOnce.ToString() + applyOut.Item.DoseUnit;	//每次量
            //			this.neuSpread1_Sheet1.Cells[(int)RowSet.RowDrugBegin + 2,2].Text = "  " + this.frequencyHelper.GetName(applyOut.Frequency.ID);		//频次

            this.neuSpread1_Sheet1.Cells[(int)RowSet.RowDrugBegin + 2, 1].Text = "  " + this.frequencyHelper.GetName(applyOut.Frequency.ID);            //频次
            //对注射剂每次量 显示剂量单位
            //string str = applyOut.Item.NameCollection.UserCode;
            //if (str != null && str.Length > 3 && (str.Substring(0, 3) == "002" || str.Substring(0, 3) == "003" || str.Substring(0, 3) == "004"))
            //    this.neuSpread1_Sheet1.Cells[(int)RowSet.RowDrugBegin + 2, 2].Text = "每次" + applyOut.DoseOnce.ToString() + applyOut.Item.DoseUnit;	//每次量
            //else
            //    this.neuSpread1_Sheet1.Cells[(int)RowSet.RowDrugBegin + 2, 2].Text = "每次" + this.DoseToMin(applyOut.DoseOnce, applyOut.Item.BaseDose).ToString() + applyOut.Item.MinUnit;	//每次量

            this.neuSpread1_Sheet1.Cells[(int)RowSet.RowDrugBegin + 2, 2].Text = "每次" + applyOut.DoseOnce.ToString() + applyOut.Item.DoseUnit;  //每次量

            //用法包含'适量'字样的药品不打印每次量
            if (this.usageHelper.GetObjectFromID(applyOut.Usage.ID) != null)
            {
                if (this.usageHelper.GetName(applyOut.Usage.ID).IndexOf("适量") != -1)
                {
                    this.neuSpread1_Sheet1.Cells[(int)RowSet.RowDrugBegin + 2, 2].Text = "";
                }
            }

            this.neuSpread1_Sheet1.Cells[(int)RowSet.RowDrugBegin + 3, 1].Text = applyOut.Item.Product.Caution;                                                         //注意事项
            //默认不显示存储
            //			if (applyOut.Item.StoreCondition == "")
            //				applyOut.Item.StoreCondition = "常温存储";
            //			this.neuSpread1_Sheet1.Cells[(int)RowSet.RowDrugBegin + 4,1].Text = applyOut.Item.StoreCondition;						//存储条件
            this.neuSpread1_Sheet1.Cells[(int)RowSet.RowDrugBegin + 4, 1].Text = "";

            this.labelNum = this.labelNum + 1;
        }
 /// <summary>
 /// 主键获取
 /// </summary>
 /// <param name="applyOut"></param>
 /// <returns></returns>
 private string GetKey(Neusoft.HISFC.Models.Pharmacy.ApplyOut applyOut)
 {
     if (applyOut.OutBillNO == null)
     {
         applyOut.OutBillNO = "";
     }
     return(applyOut.Item.ID + applyOut.OutBillNO);
 }
Exemple #7
0
 /// <summary>
 /// 向FpPatientMerge内加入数据 显示科室摆药汇总信息
 /// </summary>
 /// <param name="iIndex">需加入行索引</param>
 /// <param name="applyOut">发药申请信息</param>
 /// <param name="drugTot">汇总数量</param>
 protected void AddTotDataToFpDeptMerge(int iIndex, Neusoft.HISFC.Models.Pharmacy.ApplyOut applyOut, decimal drugNum)
 {
     this.neuSpread3_DeptDetailSheet.Cells[iIndex, 0].Value = applyOut.Item.Name + "[" + applyOut.Item.Specs + "]";
     this.neuSpread3_DeptDetailSheet.Cells[iIndex, 1].Value = applyOut.Item.PriceCollection.RetailPrice;
     this.neuSpread3_DeptDetailSheet.Cells[iIndex, 2].Value = drugNum;
     this.neuSpread3_DeptDetailSheet.Cells[iIndex, 3].Value = applyOut.Item.MinUnit;
     this.neuSpread3_DeptDetailSheet.Rows[iIndex].Tag       = applyOut;
 }
Exemple #8
0
        public void AddSingle(Neusoft.HISFC.Models.Pharmacy.ApplyOut info)
        {
            ArrayList al = new ArrayList();

            al.Add(info);

            this.AddAllData(al);
        }
Exemple #9
0
            public int Compare(object x, object y)
            {
                Neusoft.HISFC.Models.Pharmacy.ApplyOut o1 = (x as Neusoft.HISFC.Models.Pharmacy.ApplyOut).Clone();
                Neusoft.HISFC.Models.Pharmacy.ApplyOut o2 = (y as Neusoft.HISFC.Models.Pharmacy.ApplyOut).Clone();

                string oX = o1.User02 + o1.PlaceNO.PadLeft(5, '0') + o1.Item.UserCode;      //患者床号+货位号+自定义码
                string oY = o2.User02 + o2.PlaceNO.PadLeft(5, '0') + o1.Item.UserCode;      //患者床号+货位号+自定义码

                return(string.Compare(oX, oY));
            }
            public int Compare(object x, object y)
            {
                // TODO:  添加 FeeSort.Compare 实现
                Neusoft.HISFC.Models.Pharmacy.ApplyOut obj1 = x as Neusoft.HISFC.Models.Pharmacy.ApplyOut;
                Neusoft.HISFC.Models.Pharmacy.ApplyOut obj2 = y as Neusoft.HISFC.Models.Pharmacy.ApplyOut;
                if (obj1 == null || obj2 == null)
                {
                    throw new Exception("数组内必须为Pharmacy.ApplyOut类型");
                }
                int i1 = NConvert.ToInt32(obj1.CombNO);
                int i2 = NConvert.ToInt32(obj2.CombNO);

                return(i1 - i2);
            }
Exemple #11
0
        /// <summary>
        /// 作废用药申请
        /// </summary>
        /// <returns>成功返回1 失败返回-1</returns>
        internal int CancelApply()
        {
            if (this.fpCancelApply_Sheet1.Rows.Count <= 0)
            {
                return(0);
            }

            Neusoft.FrameWork.Management.PublicTrans.BeginTransaction();

            //Neusoft.FrameWork.Management.Transaction t = new Transaction(Neusoft.FrameWork.Management.Connection.Instance);
            //t.BeginTransaction();

            Neusoft.HISFC.BizLogic.Pharmacy.Item itemManager = new Neusoft.HISFC.BizLogic.Pharmacy.Item();
            //itemManager.SetTrans(t.Trans);
            //{E8849BB0-3C69-4d60-8771-C201E445BD5D}  预扣库存的判断处理
            Neusoft.HISFC.BizProcess.Integrate.Common.ControlParam ctrlIntegrate = new Neusoft.HISFC.BizProcess.Integrate.Common.ControlParam();
            bool isPreOut = ctrlIntegrate.GetControlParam <bool>(Neusoft.HISFC.BizProcess.Integrate.PharmacyConstant.InDrug_Pre_Out, false, true);

            for (int i = 0; i < this.fpCancelApply_Sheet1.Rows.Count; i++)
            {
                string applyID = this.fpCancelApply_Sheet1.Cells[i, (int)ColumnSet.ColID].Text;

                Neusoft.HISFC.Models.Pharmacy.ApplyOut applyOut = this.hsApply[applyID] as Neusoft.HISFC.Models.Pharmacy.ApplyOut;

                //对已经无效的数据 不重复保存
                if (applyOut.ValidState == Neusoft.HISFC.Models.Base.EnumValidState.Invalid)
                {
                    continue;
                }

                //作废摆药申请
                //{E8849BB0-3C69-4d60-8771-C201E445BD5D}  传入参数调整
                if (itemManager.CancelApplyOutByID(applyOut.ID, isPreOut) == -1)
                {
                    Neusoft.FrameWork.Management.PublicTrans.RollBack();
                    MessageBox.Show(Language.Msg("作废摆药申请失败"));
                    return(-1);
                }

                //作废医嘱执行档
            }

            Neusoft.FrameWork.Management.PublicTrans.Commit();

            MessageBox.Show(Language.Msg("作废申请成功"));

            this.Clear();

            return(1);
        }
Exemple #12
0
        /// <summary>
        /// 合并汇总计算科室药品总数量 金额
        /// </summary>
        public virtual void MergeDeptData()
        {
            this.neuSpread3_DeptDetailSheet.Rows.Count = 0;
            this.deptDrugInfo = new ArrayList();
            this.deptDrugNum  = new ArrayList();
            try
            {
                Neusoft.HISFC.Models.Pharmacy.ApplyOut info;
                Neusoft.HISFC.Models.Pharmacy.ApplyOut privInfo = new Neusoft.HISFC.Models.Pharmacy.ApplyOut();

                for (int i = 0; i < this.neuSpread1_DetailSheet.Rows.Count; i++)
                {
                    if (this.neuSpread1_DetailSheet.Cells[i, 2].Value != null && this.neuSpread1_DetailSheet.Cells[i, 2].Value.ToString() == "True")
                    {
                        info = this.neuSpread1_DetailSheet.Rows[i].Tag as Neusoft.HISFC.Models.Pharmacy.ApplyOut;
                        if (info == null)
                        {
                            continue;
                        }
                        bool isFind = false;
                        for (int j = 0; j < this.deptDrugInfo.Count; j++)
                        {
                            Neusoft.HISFC.Models.Pharmacy.ApplyOut temp = this.deptDrugInfo[j] as Neusoft.HISFC.Models.Pharmacy.ApplyOut;
                            if (temp.Item.ID == info.Item.ID)
                            {
                                this.deptDrugNum[j] = (decimal)this.deptDrugNum[j] + info.Operation.ApplyQty * info.Days;
                                isFind = true;
                                break;
                            }
                        }
                        if (!isFind)
                        {
                            this.deptDrugInfo.Add(info);
                            this.deptDrugNum.Add(info.Operation.ApplyQty * info.Days);
                        }
                    }
                }
                for (int i = 0; i < this.deptDrugInfo.Count; i++)
                {
                    this.neuSpread3_DeptDetailSheet.Rows.Add(i, 1);
                    this.AddTotDataToFpDeptMerge(i, this.deptDrugInfo[i] as Neusoft.HISFC.Models.Pharmacy.ApplyOut, (decimal)this.deptDrugNum[i]);
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
                return;
            }
        }
        /// <summary>
        /// 根据药品编码加入数据
        /// </summary>
        /// <param name="drugNO">药品编码</param>
        /// <param name="outBillNO">出库流水号</param>
        /// <returns></returns>
        private int AddDrugData(string drugNO, string outBillNO, decimal applyQty)
        {
            //取药品字典信息
            Neusoft.HISFC.BizLogic.Pharmacy.Item itemManager = new Neusoft.HISFC.BizLogic.Pharmacy.Item();
            Neusoft.HISFC.Models.Pharmacy.Item   item        = itemManager.GetItem(drugNO);
            if (item == null)
            {
                MessageBox.Show(Language.Msg("检索药品基本信息失败"));
                return(-1);
            }

            Neusoft.HISFC.Models.Pharmacy.ApplyOut applyOut = new Neusoft.HISFC.Models.Pharmacy.ApplyOut();

            applyOut.Item = item;

            if (outBillNO != null)
            {
                applyOut.OutBillNO = outBillNO;
            }

            if (this.hsApplyData.Contains(this.GetKey(applyOut)))
            {
                MessageBox.Show(Language.Msg("该药品已添加"));
                return(0);
            }

            applyOut.Days       = 1;
            applyOut.ApplyDept  = this.phaInManager.DeptInfo;       //申请科室
            applyOut.StockDept  = this.phaInManager.TargetDept;     //库存科室 (目标科室)
            applyOut.State      = "0";                              //状态 申请
            applyOut.SystemType = this.phaInManager.PrivType.Memo;
            applyOut.PrivType   = this.phaInManager.PrivType.ID;

            if (applyQty != -1)
            {
                applyOut.Operation.ApplyQty = applyQty;
            }

            if (this.AddDataToTable(applyOut, "1") == 1)
            {
                this.hsApplyData.Add(this.GetKey(applyOut), applyOut);

                this.SetFormat();

                this.SetFocusSelect();
            }

            return(1);
        }
Exemple #14
0
        /// <summary>
        /// 向FpDetail加入数据 显示摆药明细信息
        /// </summary>
        /// <param name="applyOut">出库申请信息</param>
        /// <param name="i"></param>
        protected void AddDataToFpDetail(Neusoft.HISFC.Models.Pharmacy.ApplyOut applyOut, int iIndex)
        {
            if (applyOut.User01.Length > 4)
            {
                applyOut.User01 = applyOut.User01.Substring(4);
            }
            this.neuSpread1_DetailSheet.Cells[iIndex, 0].Value  = applyOut.User01; //床号
            this.neuSpread1_DetailSheet.Cells[iIndex, 1].Value  = applyOut.User02; //姓名
            this.neuSpread1_DetailSheet.Cells[iIndex, 2].Value  = true;
            this.neuSpread1_DetailSheet.Cells[iIndex, 3].Value  = applyOut.Item.Name + "[" + applyOut.Item.Specs + "]";
            this.neuSpread1_DetailSheet.Cells[iIndex, 4].Value  = applyOut.Item.PriceCollection.RetailPrice;
            this.neuSpread1_DetailSheet.Cells[iIndex, 5].Value  = applyOut.DoseOnce;
            this.neuSpread1_DetailSheet.Cells[iIndex, 6].Value  = applyOut.Item.DoseUnit;
            this.neuSpread1_DetailSheet.Cells[iIndex, 7].Value  = applyOut.Operation.ApplyQty * applyOut.Days;
            this.neuSpread1_DetailSheet.Cells[iIndex, 8].Value  = applyOut.Item.MinUnit;
            this.neuSpread1_DetailSheet.Cells[iIndex, 9].Value  = applyOut.Frequency.ID;
            this.neuSpread1_DetailSheet.Cells[iIndex, 10].Value = applyOut.Usage.Name;
            this.neuSpread1_DetailSheet.Cells[iIndex, 11].Value = applyOut.Operation.ApplyOper.OperTime.ToString();

            if (this.hsPerson.ContainsKey(applyOut.Operation.ExamOper.ID) == false)         //不包含人员编码/姓名信息 重新获取
            {
                Neusoft.HISFC.BizProcess.Integrate.Manager managerIntegrate = new Neusoft.HISFC.BizProcess.Integrate.Manager();
                Neusoft.HISFC.Models.Base.Employee         person           = managerIntegrate.GetEmployeeInfo(applyOut.Operation.ExamOper.ID);
                if (person != null)
                {
                    applyOut.Operation.ExamOper.Name = person.Name;
                    this.hsPerson.Add(applyOut.Operation.ExamOper.ID, person.Name);
                }
            }
            else
            {
                applyOut.Operation.ExamOper.Name = this.hsPerson[applyOut.Operation.ExamOper.ID].ToString();
            }

            this.neuSpread1_DetailSheet.Cells[iIndex, 12].Value = applyOut.Operation.ExamOper.Name;

            if (applyOut.Operation.ExamOper.OperTime != System.DateTime.MinValue)
            {
                this.neuSpread1_DetailSheet.Cells[iIndex, 13].Value = applyOut.Operation.ExamOper.OperTime.ToString();
            }

            this.neuSpread1_DetailSheet.Cells[iIndex, 14].Value = this.orderTypeHelper.GetName(applyOut.OrderType.ID);
            this.neuSpread1_DetailSheet.Rows[iIndex].Tag        = applyOut;
            //如果摆药单已作废或者不摆药,则用红色特殊显示此行
            if (applyOut.ValidState == Neusoft.HISFC.Models.Base.EnumValidState.Invalid || applyOut.ValidState == Neusoft.HISFC.Models.Base.EnumValidState.Ignore)
            {
                this.neuSpread1_DetailSheet.Rows[iIndex].ForeColor = System.Drawing.Color.Red;
            }
        }
 /// <summary>
 /// 打印一组药品
 /// </summary>
 /// <param name="alCombo"></param>
 public void AddCombo(ArrayList alCombo)
 {
     for (int i = 0; i < alCombo.Count; i++)
     {
         Neusoft.HISFC.Models.Pharmacy.ApplyOut applyOut = alCombo[i] as Neusoft.HISFC.Models.Pharmacy.ApplyOut;
         if (i == 0)
         {
             this.SetPatiAndSendInfo(applyOut);
         }
         this.AddSingle(applyOut);
         if (i < alCombo.Count - 1)
         {
             this.Print();
         }
     }
 }
 /// <summary>
 /// 设置患者信息
 /// </summary>
 protected void SetPatiAndSendInfo(Neusoft.HISFC.Models.Pharmacy.ApplyOut applyOut, decimal labelNum)
 {
     //设置条码
     this.lbBarCode.Text = "*" + applyOut.RecipeNO + "*";
     //设置患者信息、发药信息
     if (this.patientInfo != null)
     {
         //姓名
         this.neuSpread1_Sheet1.Cells[(int)RowSet.RowPatiInfo, 0].Text = this.patientInfo.Name;
         //设置发药信息
         this.neuSpread1_Sheet1.Cells[(int)RowSet.RowPatiInfo, 1].Text = applyOut.Operation.ApplyOper.OperTime.ToString();
         //货位号
         this.neuSpread1_Sheet1.Cells[(int)RowSet.RowPatiInfo, 2].Text = applyOut.Item.User01;
         //配药标签总页数/当前页数
         this.neuSpread1_Sheet1.Cells[(int)RowSet.RowSendInfo, 3].Text = labelNum + "/" + this.drugTotNum;
     }
 }
Exemple #17
0
            public int Compare(object x, object y)
            {
                Neusoft.HISFC.Models.Pharmacy.ApplyOut o1 = (x as Neusoft.HISFC.Models.Pharmacy.ApplyOut).Clone();
                Neusoft.HISFC.Models.Pharmacy.ApplyOut o2 = (y as Neusoft.HISFC.Models.Pharmacy.ApplyOut).Clone();

                string oX = o1.User01;          //患者姓名
                string oY = o2.User01;          //患者姓名

                if (o1.User02.Length > 4)
                {
                    oX = o1.User02.Substring(4);
                }
                else
                {
                    oX = o1.User02;
                }
                if (o2.User02.Length > 4)
                {
                    oY = o2.User02.Substring(4);
                }
                else
                {
                    oY = o2.User02;
                }
                oX = oX.PadLeft(5, '0') + o1.User01;
                oY = oY.PadLeft(5, '0') + o2.User01;

                int nComp;

                if (oX == null)
                {
                    nComp = (oY != null) ? -1 : 0;
                }
                else if (oY == null)
                {
                    nComp = 1;
                }
                else
                {
                    nComp = string.Compare(oX.ToString(), oY.ToString());
                }

                return(nComp);
            }
Exemple #18
0
 /// <summary>
 /// 根据出库申请数据 设置退药单方号显示
 /// </summary>
 /// <param name="applyOut">出库申请数据</param>
 private void SetBillCodeData(Neusoft.HISFC.Models.Pharmacy.ApplyOut applyOut)
 {
     if (this.isBillCodeClear && this.IsFilterBillCode)
     {
         bool isNew = true;
         for (int i = 0; i < alBillCode.Count; i++)
         {
             if (alBillCode[i] as string == applyOut.BillNO)
             {
                 isNew = false;
                 break;
             }
         }
         if (isNew)
         {
             alBillCode.Add(applyOut.BillNO);
             this.cmbBillCode.Items.Add(applyOut.BillNO);
         }
     }
 }
Exemple #19
0
        /// <summary>
        /// 库存警戒线判断
        /// </summary>
        /// <param name="drugCode"></param>
        public virtual void JudgeWarnStore()
        {
            if ((this.funModle == OutpatientFun.Drug && this.IsJudgeWarnDruged) || (this.funModle == OutpatientFun.Send && this.IsJudgeWarnSend))
            {
                Neusoft.HISFC.BizLogic.Pharmacy.Item itemManager = new Neusoft.HISFC.BizLogic.Pharmacy.Item();

                for (int i = 0; i < this.neuSpread1_Sheet1.Rows.Count - 1; i++)
                {
                    Neusoft.HISFC.Models.Pharmacy.ApplyOut applyOut = this.neuSpread1_Sheet1.Rows[i].Tag as Neusoft.HISFC.Models.Pharmacy.ApplyOut;

                    if (itemManager.JudgeIsWarnStore(this.ApproveDept.ID, applyOut.Item.ID, this.judgeWarnPreStore, this.judgeWarnLowQty))
                    {
                        if (this.MessageEvent != null)
                        {
                            this.MessageEvent(this.neuSpread1_Sheet1.Cells[i, 1].Text + " 已达到库存警戒线!!", System.EventArgs.Empty);
                        }
                    }
                }
            }
        }
Exemple #20
0
 /// <summary>
 /// 正常用药申请信息检索
 /// </summary>
 /// <returns></returns>
 private int SetNormalApply(Neusoft.HISFC.Models.Pharmacy.ApplyOut applyOut)
 {
     this.dtNormalApply.Rows.Add(new object[] {
         applyOut.Item.Name,
         applyOut.Item.Specs,
         applyOut.Item.PriceCollection.RetailPrice,
         applyOut.Operation.ApplyQty,
         System.Math.Round((applyOut.Operation.ApplyQty * applyOut.Days / applyOut.Item.PackQty) * applyOut.Item.PriceCollection.RetailPrice, 2),
         this.deptHelper.GetName(applyOut.ApplyDept.ID),
         this.deptHelper.GetName(applyOut.StockDept.ID),
         this.personHelper.GetName(applyOut.Operation.ApplyOper.ID),
         applyOut.Operation.ApplyOper.OperTime,
         applyOut.Memo,
         applyOut.ID,
         applyOut.Item.NameCollection.SpellCode,
         applyOut.Item.NameCollection.WBCode,
         applyOut.Item.NameCollection.UserCode
     });
     return(1);
 }
        /// <summary>
        /// 将患者预扣药品申请信息加入Fp
        /// </summary>
        /// <param name="applyOut">预扣申请信息</param>
        /// <returns>成功返回1 失败返回-1</returns>
        protected int AddDataToFp(Neusoft.HISFC.Models.Pharmacy.ApplyOut applyOut)
        {
            int rowCount = this.patientSpread1_Sheet1.Rows.Count;

            this.patientSpread1_Sheet1.Rows.Add(rowCount, 1);

            this.patientSpread1_Sheet1.Cells[rowCount, 0].Value = false;
            this.patientSpread1_Sheet1.Cells[rowCount, 1].Text  = applyOut.Item.Name;
            this.patientSpread1_Sheet1.Cells[rowCount, 2].Text  = applyOut.Item.Specs;
            this.patientSpread1_Sheet1.Cells[rowCount, 3].Text  = applyOut.Item.PriceCollection.RetailPrice.ToString();
            this.patientSpread1_Sheet1.Cells[rowCount, 4].Text  = applyOut.Days.ToString();
            this.patientSpread1_Sheet1.Cells[rowCount, 5].Text  = applyOut.Operation.ApplyQty.ToString();
            this.patientSpread1_Sheet1.Cells[rowCount, 6].Text  = applyOut.Item.MinUnit;
            this.patientSpread1_Sheet1.Cells[rowCount, 7].Text  = System.Math.Round((applyOut.Operation.ApplyQty * applyOut.Days * applyOut.Item.PriceCollection.RetailPrice / applyOut.Item.PackQty), 2).ToString();
            this.patientSpread1_Sheet1.Cells[rowCount, 8].Text  = applyOut.Operation.ApplyOper.OperTime.ToString();

            this.patientSpread1_Sheet1.Rows[rowCount].Tag = applyOut;

            return(1);
        }
        /// <summary>
        /// 患者虚库存管理保存
        /// </summary>
        /// <returns>成功返回1 失败返回-1</returns>
        public int SavePatientPreStock()
        {
            Neusoft.FrameWork.Management.PublicTrans.BeginTransaction();

            //Neusoft.FrameWork.Management.Transaction t = new Transaction(Neusoft.FrameWork.Management.Connection.Instance);
            //t.BeginTransaction();

            this.itemManager.SetTrans(Neusoft.FrameWork.Management.PublicTrans.Trans);

            bool isHaveChecked = false;

            for (int i = 0; i < this.patientSpread1_Sheet1.Rows.Count; i++)
            {
                if (NConvert.ToBoolean(this.patientSpread1_Sheet1.Cells[i, 0].Value))
                {
                    Neusoft.HISFC.Models.Pharmacy.ApplyOut applyOut = this.patientSpread1_Sheet1.Rows[i].Tag as Neusoft.HISFC.Models.Pharmacy.ApplyOut;

                    if (this.itemManager.UpdateStockinfoPreOutNum(applyOut, -applyOut.Operation.ApplyQty, applyOut.Days) == -1)
                    {
                        Neusoft.FrameWork.Management.PublicTrans.RollBack();
                        MessageBox.Show(Language.Msg("保存操作 更新库存失败") + this.itemManager.Err);
                        return(-1);
                    }

                    isHaveChecked = true;
                }
            }

            Neusoft.FrameWork.Management.PublicTrans.Commit();

            if (isHaveChecked)
            {
                MessageBox.Show(Language.Msg("保存成功"));
            }
            else
            {
                MessageBox.Show(Language.Msg("请选择需保存的患者虚扣药品"));
            }

            return(1);
        }
Exemple #23
0
 /// <summary>
 /// 向FpPatientMerge内加入数据 显示患者摆药汇总信息
 /// </summary>
 /// <param name="iIndex">需加入行索引</param>
 /// <param name="applyOut">发药申请信息</param>
 /// <param name="drugTot">汇总数量</param>
 protected void AddDataToFpPatientMerge(int iIndex, Neusoft.HISFC.Models.Pharmacy.ApplyOut applyOut, decimal drugTot)
 {
     this.neuSpread2_PatientDetailSheet.Cells[iIndex, 0].Value  = applyOut.User01; //床号
     this.neuSpread2_PatientDetailSheet.Cells[iIndex, 1].Value  = applyOut.User02; //姓名
     this.neuSpread2_PatientDetailSheet.Cells[iIndex, 2].Value  = applyOut.Item.Name + "[" + applyOut.Item.Specs + "]";
     this.neuSpread2_PatientDetailSheet.Cells[iIndex, 3].Value  = applyOut.Item.PriceCollection.RetailPrice;
     this.neuSpread2_PatientDetailSheet.Cells[iIndex, 4].Value  = applyOut.DoseOnce;
     this.neuSpread2_PatientDetailSheet.Cells[iIndex, 5].Value  = applyOut.Item.DoseUnit;
     this.neuSpread2_PatientDetailSheet.Cells[iIndex, 6].Value  = drugTot;
     this.neuSpread2_PatientDetailSheet.Cells[iIndex, 7].Value  = applyOut.Item.MinUnit;
     this.neuSpread2_PatientDetailSheet.Cells[iIndex, 8].Value  = applyOut.Frequency.Name;
     this.neuSpread2_PatientDetailSheet.Cells[iIndex, 9].Value  = applyOut.Usage.Name;
     this.neuSpread2_PatientDetailSheet.Cells[iIndex, 10].Value = applyOut.Operation.ApplyOper.OperTime.ToString();
     this.neuSpread2_PatientDetailSheet.Cells[iIndex, 11].Value = this.orderTypeHelper.GetName(applyOut.OrderType.ID);
     this.neuSpread2_PatientDetailSheet.Rows[iIndex].Tag        = applyOut;
     //如果摆药单已作废或者不摆药,则用红色特殊显示此行
     if (applyOut.ValidState == Neusoft.HISFC.Models.Base.EnumValidState.Invalid || applyOut.ValidState == Neusoft.HISFC.Models.Base.EnumValidState.Ignore)
     {
         this.neuSpread2_PatientDetailSheet.Rows[iIndex].ForeColor = System.Drawing.Color.Red;
     }
 }
Exemple #24
0
 /// <summary>
 /// 设置患者信息
 /// </summary>
 protected void SetPatiAndSendInfo(Neusoft.HISFC.Models.Pharmacy.ApplyOut applyOut, decimal labelNum)
 {
     //设置条码
     // this.lbBarCode.Text = "*" + applyOut.RecipeNO + "*";
     //设置患者信息、发药信息
     if (this.patientInfo != null)
     {
         //姓名
         this.lblPatientName.Text = this.patientInfo.Name;
         this.lblPatientId.Text   = this.patientInfo.ID;
         this.lblInvoiceNo.Text   = this.patientInfo.InvoiceNO;//发票号
         this.lblPactName.Text    = this.patientInfo.Pact.Name;
         this.lblSex.Text         = this.patientInfo.Sex.Name;
         this.lblAge.Text         = this.patientInfo.Age;
         this.lblDeptName.Text    = this.patientInfo.DoctorInfo.Templet.Dept.Name;
         this.lblDignoseName.Text = this.patientInfo.ClinicDiagnose;
         this.lblDrug.Text        = "发药人";
         this.lblDoct.Text        = this.patientInfo.DoctorInfo.Templet.Doct.Name;
         this.lblSendWindow.Text  = applyOut.SendWindow;
     }
 }
        /// <summary>
        /// 根据药品信息添加申请信息
        /// </summary>
        /// <param name="drugNO"></param>
        /// <param name="batchNO"></param>
        /// <param name="storageQty"></param>
        /// <returns></returns>
        protected virtual int AddDrugData(string drugNO, string batchNO, decimal storageQty)
        {
            if (this.phaOutManager.TargetDept.ID == "")
            {
                MessageBox.Show(Language.Msg("请选择领药单位!"));
                return(0);
            }

            if (this.hsApplyData.ContainsKey(drugNO + batchNO))
            {
                MessageBox.Show(Language.Msg("该药品已添加"));
                return(0);
            }

            Neusoft.HISFC.Models.Pharmacy.Item item = this.itemManager.GetItem(drugNO);
            if (item == null)
            {
                MessageBox.Show(Language.Msg("根据药品编码获取药品字典信息时发生错误" + this.itemManager.Err));
                return(-1);
            }

            Neusoft.HISFC.Models.Pharmacy.ApplyOut applyOut = new Neusoft.HISFC.Models.Pharmacy.ApplyOut();

            applyOut.Item       = item;                                      //药品信息
            applyOut.BatchNO    = batchNO;                                   //批号
            applyOut.SystemType = this.phaOutManager.PrivType.Memo;          //系统类型

            applyOut.StockDept = this.phaOutManager.DeptInfo;                //当前科室
            applyOut.ApplyDept = this.phaOutManager.TargetDept;              //目标科室

            //applyOut.StockDept = this.phaOutManager.TargetDept;                //目标科室
            //applyOut.ApplyDept = this.phaOutManager.DeptInfo;                  //当前科室

            if (this.AddDataToTable(applyOut) == 1)
            {
                this.hsApplyData.Add(drugNO + batchNO, applyOut);
            }

            return(1);
        }
Exemple #26
0
        private void cmbBillCode_SelectedIndexChanged(object sender, EventArgs e)
        {
            if (this.neuSpread1_DetailSheet.Rows.Count < this.alApplyOutInfo.Count)
            {
                this.isBillCodeClear = false;
                this.ShowData(this.alApplyOutInfo);
                this.isBillCodeClear = true;
            }

            if (this.cmbBillCode.Text == "")
            {
                return;
            }

            for (int i = this.neuSpread1_DetailSheet.Rows.Count - 1; i >= 0; i--)
            {
                Neusoft.HISFC.Models.Pharmacy.ApplyOut applyOut = this.neuSpread1_DetailSheet.Rows[i].Tag as Neusoft.HISFC.Models.Pharmacy.ApplyOut;
                if (applyOut.BillNO != this.cmbBillCode.Text)
                {
                    this.neuSpread1_DetailSheet.Rows[i].Remove();
                }
            }
        }
Exemple #27
0
        /// <summary>
        /// 读取药品退费申请信息
        /// </summary>
        /// <param name="inpatientNO">住院流水号</param>
        /// <param name="beginTime">开始时间</param>
        /// <param name="endTime">结束时间</param>
        private void RetrieveReturnApplyDrug(string inpatientNO, DateTime beginTime, DateTime endTime)
        {
            this.fpQuit_SheetDrug.RowCount = 0;

            ArrayList applyReturnFromApplyOut = new ArrayList();
            ArrayList applyReturnsUnQuit      = new ArrayList(); //未处理的退费申请信息
            ArrayList confirmDrugList         = new ArrayList(); //核准药品信息

            //获取药品退费申请信息  检索有效的退药申请记录 由出库申请表获取退药申请 申请状态且有效的
            //该部分获取的对已发药的药品的退费申请 由ApplyOut内检索的状态为0(申请)的记录
            //			al = this.drugItem.GetDrugReturn(this.PatientInfo.PVisit.PatientLocation.Dept.ID,"AAAA",this.PatientInfo.ID);
            //applyReturnFromApplyOut = this.drugItem.GetDrugReturn("AAAA", "AAAA", this.PatientInfo.ID);
            if (applyReturnFromApplyOut == null)
            {
                return;
            }
            //获取未发药(药房未做过退药确认)的退药申请 对此部分退费申请 保存时会直接置出库申请表内出库申请记录为无效
            //该部分获取的对未发药的药品的退费申请 由CancelItem内检索得出
            //获取该患者未确认 未发药的退费申请记录
            applyReturnsUnQuit = this.returnApplyManager.QueryDrugReturnApplys(this.patientInfo.ID, false, false);
            if (applyReturnsUnQuit != null)
            {
                Neusoft.HISFC.Models.Pharmacy.ApplyOut applyOut = null;
                foreach (Neusoft.HISFC.Models.Fee.ReturnApply applyReturn in applyReturnsUnQuit)
                {
                    applyOut                    = new Neusoft.HISFC.Models.Pharmacy.ApplyOut();
                    applyOut.ID                 = applyReturn.ID;                       //申请流水号
                    applyOut.BillNO             = applyReturn.ApplyBillNO;              //申请单据号
                    applyOut.RecipeNO           = applyReturn.RecipeNO;                 //处方号
                    applyOut.SequenceNO         = applyReturn.SequenceNO;               //处方内项目流水号
                    applyOut.ApplyDept.ID       = applyReturn.RecipeOper.Dept.ID;       //申请科室
                    applyOut.Item.Name          = applyReturn.Item.Name;                //项目名称
                    applyOut.Item.ID            = applyReturn.Item.ID;                  //项目编码
                    applyOut.Item.Specs         = applyReturn.Item.Specs;               //规格
                    applyOut.Item.Price         = applyReturn.Item.Price;               //零售价  以最小单位计算的零售价
                    applyOut.Operation.ApplyQty = applyReturn.Item.Qty;                 //申请退药数量(乘以付数后的总数量)
                    applyOut.Item.PackQty       = applyReturn.Item.PackQty;
                    applyOut.Days               = applyReturn.Days;                     //付数
                    applyOut.Item.MinUnit       = applyReturn.Item.PriceUnit;           //计价单位
                    applyOut.User01             = "0";                                  //标志该数据由病区退费申请表获得 由applyReturn实体获取

                    applyReturnFromApplyOut.Add(applyOut);
                }
            }


            #region 获取药房已退药确认 住院处尚未退费确认得费申请记录
            //该部分获取的对已发药的药品退费申请 药房已做过退药确认 住院处尚未做退费确认的数据 由CancelItem内检索
            confirmDrugList = this.returnApplyManager.QueryDrugReturnApplys(this.patientInfo.ID, false, true);
            if (confirmDrugList != null)
            {
                Neusoft.HISFC.Models.Pharmacy.ApplyOut applyOut;
                foreach (Neusoft.HISFC.Models.Fee.ReturnApply applyReturn in confirmDrugList)
                {
                    applyOut                    = new Neusoft.HISFC.Models.Pharmacy.ApplyOut();
                    applyOut.ID                 = applyReturn.ID;                       //申请流水号
                    applyOut.BillNO             = applyReturn.ApplyBillNO;              //申请单据号
                    applyOut.RecipeNO           = applyReturn.RecipeNO;                 //处方号
                    applyOut.SequenceNO         = applyReturn.SequenceNO;               //处方内项目流水号
                    applyOut.ApplyDept.ID       = applyReturn.RecipeOper.Dept.ID;       //申请科室
                    applyOut.Item.Name          = applyReturn.Item.Name;                //项目名称
                    applyOut.Item.ID            = applyReturn.Item.ID;                  //项目编码
                    applyOut.Item.Specs         = applyReturn.Item.Specs;               //规格
                    applyOut.Item.Price         = applyReturn.Item.Price;               //零售价  以最小单位计算的零售价
                    applyOut.Operation.ApplyQty = applyReturn.Item.Qty;                 //申请退药数量(乘以付数后的总数量)
                    applyOut.Item.PackQty       = applyReturn.Item.PackQty;
                    applyOut.Days               = applyReturn.Days;                     //付数
                    applyOut.Item.MinUnit       = applyReturn.Item.PriceUnit;           //计价单位
                    applyOut.User01             = "0";                                  //标志该数据由病区退费申请表获得 由applyReturn实体获取
                    applyOut.User02             = "1";                                  //标志该数据 药房已退药确认 但住院处尚未退费确认

                    applyReturnFromApplyOut.Add(applyOut);
                }
            }
            #endregion

            for (int i = 0; i < applyReturnFromApplyOut.Count; i++)
            {
                Neusoft.HISFC.Models.Pharmacy.ApplyOut applyOut = new Neusoft.HISFC.Models.Pharmacy.ApplyOut();
                applyOut = applyReturnFromApplyOut[i] as Neusoft.HISFC.Models.Pharmacy.ApplyOut;
                if (applyOut == null)
                {
                    return;
                }

                //取费用信息
                Neusoft.HISFC.Models.Fee.Inpatient.FeeItemList feeItemList;
                //feeItemList = this.inpatientManager.GetItemListByRecipeNO(applyOut.RecipeNO, applyOut.SequenceNO, true);
                feeItemList = this.inpatientManager.GetItemListByRecipeNO(applyOut.RecipeNO, applyOut.SequenceNO, HISFC.Models.Base.EnumItemType.Drug);
                if (feeItemList == null)
                {
                    MessageBox.Show("获取未核准退费申请信息的费用明细出错");
                    return;
                }
                //临时存储申请科室
                feeItemList.ExecOper.Dept.User03 = applyOut.ApplyDept.ID;

                //获取医生姓名
                //string DoctName = "";
                //DoctName = this.personHelp.GetName(feeItemList.FeeInfo.ReciptDoct.ID);
                //feeItemList.FeeInfo.ReciptDoct.Name = DoctName;

                //获取最小费用名称--Add By Maokb
                //string MinFee = "";
                //MinFee = this.minfeeHelp.GetName(feeItemList.Item.MinFee.ID);
                //feeItemList.Item.MinFee.Name = MinFee;
                //获取执行科室名称--Add By Maokb
                //string DeptName = "";
                //DeptName = this.deptHelp.GetName(feeItemList.FeeInfo.ExeDept.ID);
                //feeItemList.FeeInfo.ExeDept.Name = DeptName;



                this.fpQuit_SheetDrug.Rows.Add(this.fpQuit_SheetDrug.RowCount, 1);

                int index = this.fpQuit_SheetDrug.Rows.Count - 1;

                applyOut.Item.PackQty = feeItemList.Item.PackQty;
                if (applyOut.Item.PackQty == 0)
                {
                    applyOut.Item.PackQty = 1;
                }
                if (feeItemList.Item.PackQty == 0)
                {
                    feeItemList.Item.PackQty = 1;
                }
                if (applyOut.Days == 0)
                {
                    applyOut.Days = 1;
                }
                decimal iNum  = 0;
                decimal iCost = 0;;
                if (applyOut.User01 == "0")                                                                               //该条数据由病区退费申请表获取 根据applyReturn实体获取数据转换为applyOut实体
                {
                    iNum  = applyOut.Operation.ApplyQty;                                                                  //申请退药数量(乘以付数后的总数量)
                    iCost = feeItemList.Item.Price * applyOut.Operation.ApplyQty / feeItemList.Item.PackQty;              //总金额
                }
                else                                                                                                      //该条数据由出库申请表获取
                {
                    iNum  = Neusoft.FrameWork.Public.String.FormatNumber(applyOut.Operation.ApplyQty * applyOut.Days, 4); //退费数量
                    iCost = applyOut.Operation.ApplyQty * applyOut.Item.Price / applyOut.Item.PackQty;                    //总金额
                }

                this.fpQuit_SheetDrug.SetValue(index, (int)DrugColumns.ItemName, applyOut.Item.Name);
                this.fpQuit_SheetDrug.SetValue(index, (int)DrugColumns.Specs, applyOut.Item.Specs);
                this.fpQuit_SheetDrug.SetValue(index, (int)DrugColumns.Price, applyOut.Item.Price);
                this.fpQuit_SheetDrug.SetValue(index, (int)DrugColumns.Qty, iNum);
                this.fpQuit_SheetDrug.SetValue(index, (int)DrugColumns.Unit, feeItemList.Item.PriceUnit);
                this.fpQuit_SheetDrug.SetValue(index, (int)DrugColumns.Cost, iCost);
                this.fpQuit_SheetDrug.SetValue(index, (int)DrugColumns.FeeDate, feeItemList.FeeOper.OperTime);
                this.fpQuit_SheetDrug.SetValue(index, (int)DrugColumns.IsConfirm, feeItemList.IsConfirmed);
                this.fpQuit_SheetDrug.SetValue(index, (int)DrugColumns.IsApply, false);

                feeItemList.User02      = applyOut.BillNO; //退费申请单据号
                feeItemList.Item.Qty    = iNum;
                feeItemList.FT.TotCost  = iCost;
                feeItemList.User03      = applyOut.ID;                  //退费申请流水号
                feeItemList.User01      = applyOut.User01;              // "0" 该条数据由病区退费申请表获取 其他 该条数据由出库申请表获取
                feeItemList.Item.User01 = applyOut.User02;              //"1" 标志该数据已退药确认 但尚未退费确认
                //用于区别是否为已保存过的退费申请
                feeItemList.Memo = "OLD";

                this.fpQuit_SheetDrug.Rows[index].Tag = feeItemList;
            }
        }
 void Neusoft.HISFC.BizProcess.Interface.Pharmacy.IDrugPrint.AddSingle(Neusoft.HISFC.Models.Pharmacy.ApplyOut info)
 {
     throw new Exception("The method or operation is not implemented.");
 }
Exemple #29
0
        public void Save()
        {
            this.phaOutManager.Fp.StopCellEditing();

            if (!this.Valid())
            {
                return;
            }

            DialogResult rs = MessageBox.Show(Language.Msg("确认向" + this.phaOutManager.TargetDept.Name + "进行出库操作吗?"), "", MessageBoxButtons.YesNo, MessageBoxIcon.Question, MessageBoxDefaultButton.Button1);

            if (rs == DialogResult.No)
            {
                return;
            }

            this.dt.DefaultView.RowFilter = "1=1";
            for (int i = 0; i < this.dt.DefaultView.Count; i++)
            {
                this.dt.DefaultView[i].EndEdit();
            }

            DataTable dtAddMofity = this.dt.GetChanges(DataRowState.Added | DataRowState.Modified);

            if (dtAddMofity == null || dtAddMofity.Rows.Count <= 0)
            {
                return;
            }

            this.phaOutManager.Fp.StopCellEditing();

            Neusoft.FrameWork.WinForms.Classes.Function.ShowWaitForm("正在进行保存操作..请稍候");
            System.Windows.Forms.Application.DoEvents();

            #region 事务定义

            Neusoft.FrameWork.Management.PublicTrans.BeginTransaction();

            Neusoft.HISFC.BizLogic.Pharmacy.Constant    phaCons      = new Neusoft.HISFC.BizLogic.Pharmacy.Constant();
            Neusoft.HISFC.BizProcess.Integrate.Pharmacy phaIntegrate = new Neusoft.HISFC.BizProcess.Integrate.Pharmacy();

            //Neusoft.FrameWork.Management.Transaction t = new Neusoft.FrameWork.Management.Transaction(Neusoft.FrameWork.Management.Connection.Instance);
            //t.BeginTransaction();
            this.itemManager.SetTrans(Neusoft.FrameWork.Management.PublicTrans.Trans);
            //phaIntegrate.SetTrans(t.Trans);
            //phaCons.SetTrans(t.Trans);

            #endregion

            DateTime sysTime   = this.itemManager.GetDateTimeFromSysDateTime();
            string   outListNO = "";
            string   inListNO  = "";
            //判断领用科室是否管理库存
            bool isManagerStore = phaCons.IsManageStore(this.phaOutManager.TargetDept.ID);
            //如管理库存 则提示是否确认保存出库
            if (isManagerStore)
            {
                Neusoft.FrameWork.WinForms.Classes.Function.HideWaitForm();

                DialogResult rsResult = MessageBox.Show(Language.Msg(this.phaOutManager.TargetDept.Name + "管理库存。确认进行出库操作吗?\n出库时将直接更新对方库存"), "", MessageBoxButtons.YesNo, MessageBoxIcon.Question, MessageBoxDefaultButton.Button2);
                if (rsResult == DialogResult.No)
                {
                    Neusoft.FrameWork.Management.PublicTrans.RollBack();
                    return;
                }

                Neusoft.FrameWork.WinForms.Classes.Function.ShowWaitForm("正在进行保存操作..请稍候");
                System.Windows.Forms.Application.DoEvents();
            }

            //一般出库对应的入库记录
            Neusoft.HISFC.Models.Pharmacy.Input input = null;

            //-------原程序处理方式
            //    //如领用科室管理库存 则只处理出库记录、更新本科室库存 不处理入库记录和领药科室库存 待领药科室入库核准后才处理库存
            //    //如领药科室不管理库存 则处理出库记录、更新本科室库存,试用期间处理入库记录、更新领药科室库存
            //    //						正式使用后不处理入库记录和领药科室库存
            //    //只需对isManagerStore赋值改变 对下边入库记录处理的判断做下修改即可
            //    //更新领药科室库存的操作封装于入库函数内 和入库记录一同处理 可通过传入参数判断是否处理库存
            //-------新程序处理方式
            //      一般出库时,不管目标科室是不是管理库存,都直接设置出库记录状态为已核准。
            //                  目标科室管理库存时,对目标科室产生入库记录,状态为已核准
            //                  目标科室不管理库存时,对目标科室不产生入库记录

            this.alPrintData = new ArrayList();

            foreach (DataRow dr in dtAddMofity.Rows)
            {
                string key = dr["药品编码"].ToString() + dr["批号"].ToString();
                Neusoft.HISFC.Models.Pharmacy.Output output = this.hsOutData[key] as Neusoft.HISFC.Models.Pharmacy.Output;

                output.Operation.ExamOper.ID       = this.phaOutManager.OperInfo.ID; //审核人
                output.Operation.ExamOper.OperTime = sysTime;                        //审核日期
                output.Operation.Oper = output.Operation.ExamOper;                   //操作信息

                #region 对数据来源为申请的数据进行处理

                if (dr["数据来源"].ToString() == "1")
                {
                    Neusoft.HISFC.Models.Pharmacy.ApplyOut applyOut = this.hsApplyData[output.User02] as Neusoft.HISFC.Models.Pharmacy.ApplyOut;

                    applyOut.State     = "1";                   //状态 审批
                    applyOut.Operation = output.Operation;      //操作信息

                    if (this.itemManager.UpdateApplyOut(applyOut) == -1)
                    {
                        Neusoft.FrameWork.Management.PublicTrans.RollBack();
                        Function.ShowMsg("更新" + output.Item.Name + "出库申请信息时出错");
                        return;
                    }

                    if (outListNO == "")
                    {
                        outListNO = applyOut.BillNO;
                    }
                }

                #endregion

                #region 获取单据号

                if (outListNO == "")
                {
                    // //{59C9BD46-05E6-43f6-82F3-C0E3B53155CB} 更改入库单号获取方式
                    outListNO = phaIntegrate.GetInOutListNO(this.phaOutManager.DeptInfo.ID, false);
                    if (outListNO == null)
                    {
                        Neusoft.FrameWork.Management.PublicTrans.RollBack();
                        Function.ShowMsg("获取新出库单号出错" + phaIntegrate.Err);
                        return;
                    }
                }

                output.OutListNO = outListNO;

                #endregion

                #region Output实体必要信息赋值

                if (this.isUseMinUnit)                                                      //使用最小单位
                {
                    output.Quantity = NConvert.ToDecimal(dr["出库数量"]);                       //出库数量
                }
                else                                                                        //使用包装单位
                {
                    output.Quantity = NConvert.ToDecimal(dr["出库数量"]) * output.Item.PackQty; //出库数量
                }
                output.StoreQty  = output.StoreQty - output.Quantity;
                output.StoreCost = output.StoreQty * output.Item.PriceCollection.RetailPrice / output.Item.PackQty;

                output.Operation.ExamQty = output.Quantity;                     //审核数量
                output.Memo         = dr["备注"].ToString();
                output.DrugedBillNO = "0";                                      //摆药单号 不能为空

                output.GetPerson = this.phaOutManager.TargetPerson.ID;          //领药人

                //----原数据处理方式
                //if (isManagerStore)             //目标(领用)科室管理库存
                //    output.State = "1";         //审核
                //else
                //    output.State = "2";         //核准
                //----现处理方式 对于一般出库 直接设置出库状态为2
                output.State = "2";

                if (this.isSpecialOut)          //特殊出库 直接更新状态为核准
                {
                    output.SpecialFlag = "1";
                    output.State       = "2";
                }

                if (output.State == "2")
                {
                    output.Operation.ApproveOper = output.Operation.Oper;
                }

                #endregion

                #region 以下信息在每次添加新数据时自动生成

                output.PrivType   = this.phaOutManager.PrivType.ID;             //出库类型
                output.SystemType = this.phaOutManager.PrivType.Memo;           //系统类型
                output.StockDept  = this.phaOutManager.DeptInfo;                //当前科室
                output.TargetDept = this.phaOutManager.TargetDept;              //目标科室

                #endregion

                #region 形成目标科室的入库记录

                #region 根据领药科室是否管理库存   在不管理库存的情况下才处理入库记录
                if (!this.isSpecialOut)
                {
                    input = new Neusoft.HISFC.Models.Pharmacy.Input();
                    //设置入库单号
                    if (inListNO == "")
                    {
                        // //{59C9BD46-05E6-43f6-82F3-C0E3B53155CB} 更改入库单号获取方式
                        inListNO = phaIntegrate.GetInOutListNO(this.phaOutManager.TargetDept.ID, false);
                        if (inListNO == null)
                        {
                            Neusoft.FrameWork.Management.PublicTrans.RollBack();
                            MessageBox.Show(Language.Msg("对目标库存科室插入入库记录时获取入库单号出错") + this.itemManager.Err);
                            return;
                        }
                    }

                    //获取关联权限类型 关联权限类型不存在时 设置为默认值
                    if (this.privJoinClass3 != null)
                    {
                        input.PrivType   = this.privJoinClass3.Class3Code;
                        input.SystemType = this.privJoinClass3.Class3MeaningCode;
                    }
                    else
                    {
                        input.PrivType   = "01";                                                                                //一般入库对应的用户类型
                        input.SystemType = "11";                                                                                //一般入库
                    }

                    input.State     = "2";                                              //已审批
                    input.StockDept = this.phaOutManager.TargetDept;                    //库存部门

                    input.TargetDept = this.phaOutManager.DeptInfo;                     //目标科室 供货单位

                    input.InListNO                    = inListNO;                       //入库单据号
                    input.OutListNO                   = outListNO;                      //出库单据号
                    input.Operation.ExamOper.ID       = this.phaOutManager.OperInfo.ID; //审批人
                    input.Operation.ExamOper.OperTime = sysTime;                        //审批日期

                    input.Operation.ApproveOper = input.Operation.ExamOper;
                    input.Operation.ApplyOper   = input.Operation.ExamOper;

                    decimal storeQty = 0;
                    if (this.itemManager.GetStorageNum(this.phaOutManager.TargetDept.ID, output.Item.ID, out storeQty) == -1)
                    {
                        Neusoft.FrameWork.Management.PublicTrans.RollBack();
                        MessageBox.Show(Language.Msg("获取" + output.Item.Name + "库存数量时发生错误" + this.itemManager.Err));
                        return;
                    }
                    input.StoreQty = storeQty + output.Quantity;

                    //设置出库记录中对应的入库单据号
                    output.InListNO = inListNO;
                }
                else
                {
                    input = null;
                }
                #endregion

                #endregion


                //原处理方式 第三个参数始终传入False
                if (this.itemManager.Output(output, input, isManagerStore) == -1)
                {
                    Neusoft.FrameWork.Management.PublicTrans.RollBack();
                    Function.ShowMsg("出库保存发生错误" + this.itemManager.Err);
                    return;
                }

                this.alPrintData.Add(output);
            }

            Neusoft.FrameWork.Management.PublicTrans.Commit();

            //for (int i = 0; i < this.dt.DefaultView.Count; i++)
            //{
            //    this.dt.DefaultView[i].BeginEdit();
            //}

            Function.ShowMsg("保存成功");

            DialogResult rsPrint = MessageBox.Show(Language.Msg("是否打印出库单?"), "", MessageBoxButtons.YesNo, MessageBoxIcon.Question);
            if (rsPrint == DialogResult.Yes)
            {
                this.Print();
            }


            this.Clear();
        }
Exemple #30
0
        public void Save()
        {
            if (!this.Valid())
            {
                return;
            }

            Neusoft.HISFC.BizLogic.Pharmacy.Constant phaConsManager = new Neusoft.HISFC.BizLogic.Pharmacy.Constant();
            bool isManagerStore = phaConsManager.IsManageStore(this.phaOutManager.TargetDept.ID);

            if (!isManagerStore)
            {
                MessageBox.Show(Language.Msg(this.phaOutManager.TargetDept.Name + " 不管理库存,不能通过出库审批进行出库"), "", MessageBoxButtons.OK, MessageBoxIcon.Information);
                return;
            }

            DialogResult rs = MessageBox.Show(Language.Msg("确认向" + this.phaOutManager.TargetDept.Name + "进行出库操作吗?"), "", MessageBoxButtons.YesNo, MessageBoxIcon.Question, MessageBoxDefaultButton.Button1);

            if (rs == DialogResult.No)
            {
                return;
            }

            this.dt.DefaultView.RowFilter = "1=1";
            for (int i = 0; i < this.dt.DefaultView.Count; i++)
            {
                this.dt.DefaultView[i].EndEdit();
            }

            DataTable dtAddMofity = this.dt.GetChanges(DataRowState.Added | DataRowState.Modified);

            if (dtAddMofity == null || dtAddMofity.Rows.Count <= 0)
            {
                return;
            }

            Neusoft.FrameWork.WinForms.Classes.Function.ShowWaitForm("正在进行保存操作..请稍候");
            System.Windows.Forms.Application.DoEvents();

            #region 事务定义

            Neusoft.FrameWork.Management.PublicTrans.BeginTransaction();

            Neusoft.HISFC.BizLogic.Pharmacy.Constant    phaCons      = new Neusoft.HISFC.BizLogic.Pharmacy.Constant();
            Neusoft.HISFC.BizProcess.Integrate.Pharmacy phaIntegrate = new Neusoft.HISFC.BizProcess.Integrate.Pharmacy();

            this.itemManager.SetTrans(Neusoft.FrameWork.Management.PublicTrans.Trans);

            #endregion

            DateTime sysTime = this.itemManager.GetDateTimeFromSysDateTime();

            string outListNO = "";

            this.alPrintData = new ArrayList();

            foreach (DataRow dr in dtAddMofity.Rows)
            {
                string key = dr["药品编码"].ToString() + dr["批号"].ToString();
                Neusoft.HISFC.Models.Pharmacy.Output output = this.hsOutData[key] as Neusoft.HISFC.Models.Pharmacy.Output;

                if (this.isUseMinUnit)                                                      //使用最小单位
                {
                    output.Quantity = NConvert.ToDecimal(dr["实发数量"]);                       //实发数量
                }
                else                                                                        //使用包装单位
                {
                    output.Quantity = NConvert.ToDecimal(dr["实发数量"]) * output.Item.PackQty; //实发数量
                }
                output.StoreQty     = output.StoreQty - output.Quantity;
                output.StoreCost    = output.StoreQty * output.Item.PriceCollection.RetailPrice / output.Item.PackQty;
                output.Memo         = dr["备注"].ToString();
                output.DrugedBillNO = "0";                                           //摆药单号 不能为空

                output.Operation.ExamOper.ID       = this.phaOutManager.OperInfo.ID; //审核人
                output.Operation.ExamOper.OperTime = sysTime;                        //审核日期
                output.Operation.ExamQty           = output.Quantity;                //审核数量
                output.Operation.Oper = output.Operation.ExamOper;                   //操作信息
                output.GetPerson      = this.phaOutManager.TargetPerson.ID;          //领药人

                output.State = "1";                                                  //状态 审批

                #region 对数据来源为申请的数据进行更新 对本次新添加的数据生成申请信息记录

                if (dr["数据来源"].ToString() == "1")
                {
                    Neusoft.HISFC.Models.Pharmacy.ApplyOut applyOut = this.hsApplyData[output.User02] as Neusoft.HISFC.Models.Pharmacy.ApplyOut;

                    if (outListNO == "")
                    {
                        outListNO = applyOut.BillNO;
                    }

                    decimal tempApproveQty = applyOut.Operation.ApproveQty;
                    applyOut.Operation = output.Operation;              //操作信息
                    //未选择审批标记 只记录本次待发送的数量 不扣库存处理
                    if (!NConvert.ToBoolean(dr["审批"]))
                    {
                        //数量累计
                        applyOut.Operation.ApproveQty = tempApproveQty + output.Quantity;
                        applyOut.State = "0";
                    }
                    else
                    {
                        applyOut.Operation.ApproveOper = output.Operation.Oper;
                        applyOut.State = "2";
                    }

                    // {EE05DA01-8969-404d-9A6B-EE8AD0BC1CD0}处理出库审批并发的问题
                    int resultApplyOut = this.itemManager.UpdateApplyOut(applyOut, true);
                    if (resultApplyOut == -1)
                    {
                        Neusoft.FrameWork.Management.PublicTrans.RollBack();
                        Function.ShowMsg("更新" + output.Item.Name + "出库申请信息时出错");
                        return;
                    }
                    if (resultApplyOut == 0)
                    {
                        Neusoft.FrameWork.Management.PublicTrans.RollBack();
                        Function.ShowMsg("该" + output.Item.Name + "申请信息已改变,请重新获取申请信息");
                        return;
                    }
                }
                else
                {
                    #region 无申请记录 此时只需更改申请人 到底需不需要添加申请信息呢? 不需要

                    output.Operation.ApplyOper = output.Operation.Oper;     //申请人
                    output.Operation.ApplyQty  = output.Quantity;           //申请数量

                    #endregion
                }

                #endregion

                #region 获取单据号

                if (outListNO == "")
                {
                    // //{59C9BD46-05E6-43f6-82F3-C0E3B53155CB} 更改入库单号获取方式
                    outListNO = phaIntegrate.GetInOutListNO(this.phaOutManager.DeptInfo.ID, false);
                    if (outListNO == null)
                    {
                        Neusoft.FrameWork.Management.PublicTrans.RollBack();
                        Function.ShowMsg("获取新出库单号出错" + phaIntegrate.Err);
                        return;
                    }
                }

                output.OutListNO = outListNO;

                #endregion

                #region 以下信息在每次添加新数据时自动生成

                output.PrivType   = this.phaOutManager.PrivType.ID;             //出库类型
                output.SystemType = this.phaOutManager.PrivType.Memo;           //系统类型
                output.StockDept  = this.phaOutManager.DeptInfo;                //当前科室
                output.TargetDept = this.phaOutManager.TargetDept;              //目标科室

                #endregion

                //非药柜科室向药柜出库 进行特殊处理
                if (!this.phaOutManager.IsStockArk && this.phaOutManager.IsTargetArk)
                {
                    if (this.itemManager.ArkOutput(output, this.phaOutManager.IsStockArk, this.phaOutManager.IsTargetArk, false, true) == -1)
                    {
                        Neusoft.FrameWork.Management.PublicTrans.RollBack();
                        Function.ShowMsg("出库保存发生错误" + this.itemManager.Err);
                        return;
                    }
                }
                else
                {
                    if (this.itemManager.Output(output, null, false) == -1)
                    {
                        Neusoft.FrameWork.Management.PublicTrans.RollBack();
                        Function.ShowMsg("出库保存发生错误" + this.itemManager.Err);
                        return;
                    }
                }

                this.alPrintData.Add(output);
            }

            Neusoft.FrameWork.Management.PublicTrans.Commit();

            Function.ShowMsg("保存成功");

            DialogResult rsPrint = MessageBox.Show(Language.Msg("是否打印出库单?"), "", MessageBoxButtons.YesNo, MessageBoxIcon.Question);
            if (rsPrint == DialogResult.Yes)
            {
                this.Print();
            }

            this.Clear();
        }