예제 #1
0
        public ServiceResponseData BalanceDataInit()
        {
            int operatorID = requestData.GetData <int>(0);

            BasicDataManagement basicmanagement = NewObject <BasicDataManagement>();
            DataTable           dtCardType      = NewObject <ME_CardTypeList>().gettable(" UseFlag=1");

            responseData.AddData(dtCardType);//卡类型

            DataTable dtPattype = basicmanagement.GetPatType(false);

            responseData.AddData(dtPattype);//病人类型

            DataTable dtDept = basicmanagement.GetBasicData(DeptDataSourceType.全部科室);

            responseData.AddData(dtDept);//门诊科室

            DataTable dtDoctor = basicmanagement.GetBasicData(EmpDataSourceType.医生);

            responseData.AddData(dtDoctor);                                                     //医生

            string obj = NewObject <CommonMethod>().GetOpConfig(OpConfigConstant.HasOpDSystem); //判断是否上医生站,上了医生站不能录入药品和组合项目

            string curInvoiceNO = string.Empty;
            int    invoiceCount = NewObject <CommonMethod>().GetInvoiceInfo(InvoiceType.门诊收费, operatorID, out curInvoiceNO);

            responseData.AddData(invoiceCount); //可用票据张数
            responseData.AddData(curInvoiceNO); //当前可用票据号

            responseData.AddData(Convert.ToInt32(obj));
            return(responseData);
        }
예제 #2
0
        public ServiceResponseData RegDataInit()
        {
            int operatorID = requestData.GetData <int>(0);
            BasicDataManagement basicmanagement = NewObject <BasicDataManagement>();
            DataTable           dtRegType       = NewObject <CommonMethod>().GetRegType();

            responseData.AddData(dtRegType);//挂号类别

            DataTable dtCardType = NewObject <ME_CardTypeList>().gettable(" UseFlag=1");

            responseData.AddData(dtCardType);//卡类型

            DataTable dtPattype = basicmanagement.GetPatType(false);

            responseData.AddData(dtPattype);//病人类型

            string regMoningBTime    = NewObject <CommonMethod>().GetOpConfig(OpConfigConstant.RegMoningBTime);
            string regAfternoonBtime = NewObject <CommonMethod>().GetOpConfig(OpConfigConstant.RegAfternoonBtime);
            string regNightBtime     = NewObject <CommonMethod>().GetOpConfig(OpConfigConstant.RegNightBtime);

            responseData.AddData(regMoningBTime);
            responseData.AddData(regAfternoonBtime);
            responseData.AddData(regNightBtime);

            string curInvoiceNO = string.Empty;
            int    invoiceCount = NewObject <CommonMethod>().GetInvoiceInfo(InvoiceType.门诊挂号, operatorID, out curInvoiceNO);

            responseData.AddData(invoiceCount); //可用票据张数
            responseData.AddData(curInvoiceNO); //当前可用票据号
            return(responseData);
        }
예제 #3
0
        /// <summary>
        /// 获取挂号支付方式
        /// </summary>
        /// <returns>DataTable挂号支付方式</returns>
        public DataTable GetRegPayMentType()
        {
            DataTable           dtPayment       = new DataTable();
            BasicDataManagement basicmanagement = NewObject <BasicDataManagement>();

            dtPayment = basicmanagement.GetBasicData(HIS_PublicManage.ObjectModel.PatientInfoDataSourceType.挂号支付方式, false);
            return(dtPayment);
        }
예제 #4
0
        public ServiceResponseData getDisease()
        {
            BasicDataManagement basicmanagement = NewObject <BasicDataManagement>();
            DataTable           dtDisease       = basicmanagement.GetDisease();

            responseData.AddData(dtDisease);
            return(responseData);
        }
예제 #5
0
        public ServiceResponseData getIpDept()
        {
            BasicDataManagement basicmanagement = NewObject <BasicDataManagement>();
            DataTable           dtDept          = basicmanagement.GetBasicData(HIS_PublicManage.ObjectModel.DeptDataSourceType.住院临床科室, false);

            responseData.AddData(dtDept);
            return(responseData);
        }
예제 #6
0
        public ServiceResponseData GetDeptList()
        {
            BasicDataManagement basicmanagement = NewObject <BasicDataManagement>();
            int       doctorID = requestData.GetData <int>(0);
            DataTable dtDept   = basicmanagement.GetBasicData(HIS_PublicManage.ObjectModel.DeptDataSourceType.住院临床科室, false);

            responseData.AddData(dtDept);
            return(responseData);
        }
예제 #7
0
        public ServiceResponseData LoadCashier()
        {
            DataTable           dt = new DataTable();
            BasicDataManagement basicmanagement = NewObject <BasicDataManagement>();

            dt = basicmanagement.GetBasicData(HIS_PublicManage.ObjectModel.EmpDataSourceType.收费员, false);
            responseData.AddData(dt);
            return(responseData);
        }
예제 #8
0
        public ServiceResponseData SchedualDataInit()
        {
            BasicDataManagement basicmanagement = NewObject <BasicDataManagement>();
            DataTable           dtDept          = basicmanagement.GetBasicData(HIS_PublicManage.ObjectModel.DeptDataSourceType.门诊临床科室, false);

            responseData.AddData(dtDept);//科室
            DataTable dtDoctor = basicmanagement.GetBasicData(HIS_PublicManage.ObjectModel.EmpDataSourceType.医生和科室, false);

            responseData.AddData(dtDoctor);//医生
            return(responseData);
        }
예제 #9
0
        public ServiceResponseData RecipterInit()
        {
            //获取收费员列表
            DataTable           dt = new DataTable();
            BasicDataManagement basicmanagement = NewObject <BasicDataManagement>();//收费员

            dt = basicmanagement.GetBasicData(HIS_PublicManage.ObjectModel.EmpDataSourceType.收费员, false);
            responseData.AddData(dt);

            DataTable dtPattype = basicmanagement.GetPatType(false);

            responseData.AddData(dtPattype);                                          //病人类型

            DataTable dtPayMent = NewObject <Basic_Payment>().gettable(" delflag=0"); //支付方式

            responseData.AddData(dtPayMent);
            return(responseData);
        }
예제 #10
0
        public ServiceResponseData OpCostSearchDataInit()
        {
            //获取收费员列表
            DataTable           dt = new DataTable();
            BasicDataManagement basicmanagement = NewObject <BasicDataManagement>();//收费员

            dt = basicmanagement.GetBasicData(HIS_PublicManage.ObjectModel.EmpDataSourceType.收费员, true);
            responseData.AddData(dt);

            DataTable dtPattype = basicmanagement.GetPatType(false);

            responseData.AddData(dtPattype);//病人类型

            DataTable dtDept = basicmanagement.GetBasicData(HIS_PublicManage.ObjectModel.DeptDataSourceType.门诊临床科室, true);

            responseData.AddData(dtDept);//科室
            DataTable dtDoctor = basicmanagement.GetBasicData(HIS_PublicManage.ObjectModel.EmpDataSourceType.医生, true);

            responseData.AddData(dtDoctor);//医生
            return(responseData);
        }
예제 #11
0
        public ServiceResponseData AccountInit()
        {
            int      empID = requestData.GetData <int>(0);      //人员ID
            DateTime bdate = requestData.GetData <DateTime>(1); //开始日期
            DateTime edate = requestData.GetData <DateTime>(2); //结束日期

            //获取收费员列表
            DataTable           dt = new DataTable();
            BasicDataManagement basicmanagement = NewObject <BasicDataManagement>();

            dt = basicmanagement.GetBasicData(HIS_PublicManage.ObjectModel.EmpDataSourceType.收费员, false);
            responseData.AddData(dt);

            //获取未缴款记录
            List <OP_Account> notAccountList = NewObject <AccountProcess>().GetNotAccountByEmp(empID);

            responseData.AddData(notAccountList);

            //获取已经缴款记录
            List <OP_Account> historyAccountList = NewObject <AccountProcess>().GetHistoryAccountByEmp(empID, bdate, edate);

            responseData.AddData(historyAccountList);
            return(responseData);
        }
예제 #12
0
        /// <summary>
        /// 取得用户名
        /// </summary>
        /// <param name="empId">员工Id</param>
        /// <returns>用户名</returns>
        private string GetEmpName(int empId)
        {
            BasicDataManagement baseData = NewObject <BasicDataManagement>();

            return(baseData.GetEmpName(empId));
        }
예제 #13
0
        /// <summary>
        /// 根据发票号获取处方
        /// </summary>
        /// <param name="invoiceNo">票据号</param>
        /// <param name="patlistid">病人ID</param>
        /// <returns>处方对象</returns>
        public List <Prescription> GetPrescriptionByInvoiceNo(string invoiceNo, int patlistid)
        {
            List <Prescription> preslist  = new List <Prescription>();
            BasicDataManagement basicdata = NewObject <BasicDataManagement>();
            string condiction             = string.Empty;

            condiction = " PatListID = " + patlistid + " AND ChargeFlag = 1 AND ChargeStatus = 0 And invoiceNO='" + invoiceNo + "' and regflag=0";
            condiction = condiction + " order by feeitemheadid";

            //得到实体列表
            List <OP_FeeItemHead> presMastList = NewObject <OP_FeeItemHead>().getlist <OP_FeeItemHead>(condiction);

            if (presMastList.Count == 0)
            {
                throw new Exception("找不到发票信息!\r\n1、请确认发票号是否正确。\r\n2、请确认该发票是否已退费。");
            }

            for (int i = 0; i < presMastList.Count; i++)
            {
                decimal refundfee = 0;
                List <OP_FeeItemDetail> presDetailList = NewObject <OP_FeeItemDetail>().getlist <OP_FeeItemDetail>(" FeeItemHeadID=" + presMastList[i].FeeItemHeadID + " order by PresDetailID");
                for (int j = 0; j < presDetailList.Count; j++)
                {
                    #region 明细
                    Prescription pres = new Prescription();
                    pres.PresDetailID    = presDetailList[j].PresDetailID;
                    pres.FeeItemHeadID   = presDetailList[j].FeeItemHeadID;
                    pres.PatListID       = presDetailList[j].PatListID;
                    pres.ItemID          = presDetailList[j].ItemID;
                    pres.ItemName        = presDetailList[j].ItemName;
                    pres.Spec            = presDetailList[j].Spec;
                    pres.PackUnit        = presDetailList[j].PackUnit;
                    pres.UnitNO          = presDetailList[j].UnitNO;
                    pres.StockPrice      = presDetailList[j].StockPrice;
                    pres.Amount          = presDetailList[j].Amount;
                    pres.PresAmount      = presDetailList[j].PresAmount;
                    pres.TotalFee        = presDetailList[j].TotalFee;
                    pres.ExamItemID      = presDetailList[j].ExamItemID;
                    pres.DocPresDetailID = presDetailList[j].DocPresDetailID;
                    pres.MiniUnit        = presDetailList[j].MiniUnit;
                    pres.RetailPrice     = presDetailList[j].RetailPrice;
                    pres.StatID          = presDetailList[j].StatID;
                    pres.ItemType        = presDetailList[j].ItemType;

                    pres.PrescGroupID = i + 1;
                    pres.presNO       = j == 0 ? i + 1 : 0;
                    pres.PresDeptID   = presMastList[i].PresDeptID;
                    pres.PresEmpID    = presMastList[i].PresEmpID;
                    pres.ExecDeptID   = presMastList[i].ExecDeptID;
                    pres.PresDocName  = basicdata.GetEmpName(presMastList[i].PresEmpID);
                    pres.ExecDetpName = basicdata.GetDeptName(presMastList[i].ExecDeptID);
                    pres.PresType     = presMastList[i].PresType;
                    pres.ModifyFlag   = 0;
                    pres.Selected     = 1;
                    pres.CostHeadID   = presMastList[i].CostHeadID;

                    pres.DocPresNO       = presMastList[i].DocPresNO;
                    pres.DocPresHeadID   = presMastList[i].DocPresHeadID;
                    pres.DocPresDetailID = presDetailList[j].DocPresDetailID;
                    List <OP_FeeRefundHead>   refundHeadList   = NewObject <OP_FeeRefundHead>().getlist <OP_FeeRefundHead>(" invoiceNum='" + invoiceNo + "' and flag=0");
                    List <OP_FeeRefundDetail> refundDetailList = NewObject <OP_FeeRefundDetail>().getlist <OP_FeeRefundDetail>(" ReHeadID=" + refundHeadList[0].ReHeadID + " and FeeItemDetailID=" + presDetailList[j].PresDetailID + " ");
                    if (refundDetailList.Count == 0)
                    {
                        continue;
                    }

                    OP_FeeRefundDetail refundDetail = refundDetailList[0] as OP_FeeRefundDetail;
                    pres.Refundamount = refundDetail.RefundAmount;
                    pres.Refundfee    = refundDetail.RefundFee;
                    if (Convert.ToInt32(pres.ItemType) == (int)OP_Enum.ItemType.收费项目 || Convert.ToInt32(pres.ItemType) == (int)OP_Enum.ItemType.组合项目)
                    {
                        pres.MiniAmount = presDetailList[j].Amount;
                        pres.PackAmount = (presDetailList[j].Amount - pres.MiniAmount) / pres.UnitNO;

                        pres.RefundMiniAmount = refundDetail.RefundAmount;
                        pres.RefundPackAmount = (refundDetail.RefundAmount - pres.RefundMiniAmount) / pres.UnitNO;
                    }
                    else
                    {
                        pres.MiniAmount = presDetailList[j].Amount % presDetailList[j].UnitNO;
                        pres.PackAmount = (presDetailList[j].Amount - pres.MiniAmount) / pres.UnitNO;

                        pres.RefundMiniAmount = refundDetail.RefundAmount % pres.UnitNO;
                        pres.RefundPackAmount = (refundDetail.RefundAmount - pres.RefundMiniAmount) / pres.UnitNO;
                    }

                    pres.DocPresHeadID = presMastList[i].DocPresHeadID;
                    pres.Refundfee     = refundDetail.RefundFee;
                    refundfee         += pres.Refundfee;
                    #endregion
                    preslist.Add(pres);
                }

                Prescription presTotal = new Prescription();
                presTotal.ExecDetpName = "小 计";
                presTotal.SubTotalFlag = 1;
                presTotal.PrescGroupID = i + 1;
                presTotal.presNO       = 0;
                presTotal.TotalFee     = presMastList[i].TotalFee;
                presTotal.Refundfee    = refundfee;
                presTotal.Selected     = 1;
                preslist.Add(presTotal);
            }

            return(preslist);
        }
예제 #14
0
        /// <summary>
        /// 获取病人处方
        /// </summary>
        /// <param name="patlistid">病人ID</param>
        /// <param name="status">状态</param>
        /// <param name="isCharge">是否收费处检索</param>
        /// <param name="beginDate">开始时间</param>
        /// <param name="endDate">结束时间</param>
        /// <param name="invoiceNo">发票号</param>
        /// <param name="execDeptCode">执行科室ID</param>
        /// <returns>处方信息</returns>
        public List <Prescription> GetPrescriptions(int patlistid, OP_Enum.PresStatus status, bool isCharge, string beginDate, string endDate, string invoiceNo, int execDeptCode)
        {
            BasicDataManagement basicdata = NewObject <BasicDataManagement>();
            List <Prescription> preslist  = new List <Prescription>();
            string condiction             = string.Empty;

            switch (status)
            {
            case PresStatus.全部:
                condiction = " PatListID = " + patlistid + " AND ChargeStatus in (0,1)";
                break;

            case PresStatus.未收费:
                condiction = " PatListID = " + patlistid + " AND ChargeFlag = 0 AND ChargeStatus = 0";
                break;

            case PresStatus.已收费未发药:
            case PresStatus.已收费已退药:
                condiction = " PatListID = " + patlistid + " AND ChargeFlag = 1 AND ChargeStatus = 0 And DistributeFlag = 0";
                break;

            case PresStatus.已收费已发药:
                condiction = " PatListID = " + patlistid + " AND ChargeFlag = 1 AND ChargeStatus = 0 And DistributeFlag = 1";
                break;
            }

            condiction += " and DocPresHeadID=0 ";
            if (execDeptCode != 0)
            {
                condiction = condiction + " and ExecDeptID = " + execDeptCode;
            }

            if (string.IsNullOrEmpty(invoiceNo))
            {
                if (!string.IsNullOrEmpty(beginDate.Trim()))
                {
                    condiction = condiction + " and PresDate>='" + beginDate + "'";
                }

                if (endDate.Trim() != string.Empty)
                {
                    condiction = condiction + " and PresDate<='" + endDate + "'";
                }
            }

            if (!string.IsNullOrEmpty(invoiceNo))
            {
                condiction = condiction + " and regflag=0 and CostHeadID in (select CostHeadID from OP_CostHead where EndInvoiceNO='" + invoiceNo + "' and CostStatus IN (0,1))";
            }
            int presGroupID = 0;
            List <OP_FeeItemHead> presMastList = NewObject <OP_FeeItemHead>().getlist <OP_FeeItemHead>(condiction);

            if (presMastList.Count > 0)
            {
                DataTable           dtPres  = NewDao <IOPManageDao>().GetPrescription(condiction);
                List <Prescription> oldPres = EFWCoreLib.CoreFrame.Common.ConvertExtend.ToList <Prescription>(dtPres);
                for (int i = 0; i < presMastList.Count; i++)
                {
                    List <Prescription> presDetailList = oldPres.Where(p => p.FeeItemHeadID == presMastList[i].FeeItemHeadID).ToList();
                    if (presDetailList.Count == 0)
                    {
                        continue;
                    }
                    presGroupID += 1;
                    for (int j = 0; j < presDetailList.Count; j++)
                    {
                        #region 明细
                        presDetailList[j].PrescGroupID = presGroupID;
                        presDetailList[j].presNO       = j == 0 ? presGroupID : 0;
                        presDetailList[j].PresDeptID   = presMastList[i].PresDeptID;
                        presDetailList[j].PresEmpID    = presMastList[i].PresEmpID;
                        presDetailList[j].ExecDeptID   = presMastList[i].ExecDeptID;
                        presDetailList[j].ModifyFlag   = 0;
                        presDetailList[j].Selected     = 1;
                        if (Convert.ToInt32(presDetailList[j].ItemType) == (int)OP_Enum.ItemType.收费项目 || Convert.ToInt32(presDetailList[j].ItemType) == (int)OP_Enum.ItemType.组合项目)
                        {
                            presDetailList[j].MiniAmount = presDetailList[j].Amount;
                            presDetailList[j].PackAmount = (presDetailList[j].Amount - presDetailList[j].MiniAmount) / presDetailList[j].UnitNO;
                        }
                        else
                        {
                            presDetailList[j].MiniAmount = presDetailList[j].Amount % presDetailList[j].UnitNO;
                            presDetailList[j].PackAmount = (presDetailList[j].Amount - presDetailList[j].MiniAmount) / presDetailList[j].UnitNO;
                        }

                        presDetailList[j].DocPresHeadID = presMastList[i].DocPresHeadID;
                        #endregion
                        preslist.Add(presDetailList[j]);
                    }

                    Prescription presTotal = new Prescription();
                    presTotal.ExecDetpName = "小 计";
                    presTotal.SubTotalFlag = 1;
                    presTotal.PrescGroupID = presGroupID;
                    presTotal.presNO       = 0;
                    presTotal.TotalFee     = presMastList[i].TotalFee;
                    presTotal.Selected     = 1;
                    preslist.Add(presTotal);
                }
            }

            //如果有医生站处方,则读取医生站处方
            string obj = NewObject <CommonMethod>().GetOpConfig(OpConfigConstant.HasOpDSystem);
            if (Convert.ToInt32(obj) == 1)
            {
                presGroupID += 1;
                List <Prescription> docPresList = GetOpdPres(patlistid, presGroupID);
                foreach (Prescription docPres in docPresList)
                {
                    preslist.Add(docPres);
                }
            }

            return(preslist);
        }
예제 #15
0
        /// <summary>
        /// 处方退费
        /// </summary>
        /// <param name="costHeadid">结算ID</param>
        /// <param name="operatoreid">操作员ID</param>
        /// <param name="refundPrescriptions">退处方对象</param>
        /// <param name="refundInvoiceNO">退费票据号</param>
        /// <returns> 被退后的处方对象</returns>
        public override List <Prescription> RefundFee(int costHeadid, int operatoreid, List <Prescription> refundPrescriptions, string refundInvoiceNO)
        {
            //先全退,再算出需退处方再退费
            AllRefund(costHeadid, operatoreid, refundPrescriptions, refundInvoiceNO);
            List <Prescription> balancePresc = new List <Prescription>();

            //返回需要补收的处方记录
            foreach (Prescription refundPresc in refundPrescriptions)
            {
                if (refundPresc.Amount != refundPresc.Refundamount)
                {
                    refundPresc.Amount   = refundPresc.Amount - refundPresc.Refundamount;
                    refundPresc.TotalFee = refundPresc.TotalFee - refundPresc.Refundfee;
                    balancePresc.Add(refundPresc);
                }
            }

            #region 暂不用
            //OP_CostHead oldCostHead = NewObject<OP_CostHead>().getmodel(costHeadid) as OP_CostHead;
            //bool autoProcess = false;
            //if (oldCostHead.TotalFee == oldCostHead.CashFee + oldCostHead.PosFee + oldCostHead.RoundingFee)
            //{
            //    autoProcess = true;
            //}
            //if (autoProcess)//全现金处理
            //{
            //    if (_isallRefund)
            //    {
            //        List<OP_FeeItemHead> feeItemHeadList = NewObject<OP_FeeItemHead>().getlist<OP_FeeItemHead>(" costHeadId=" + costHeadid + " and invoiceNO!='" + RefundInvoiceNO + " and ChargeStatus=1");
            //        if (feeItemHeadList.Count == 0)//表示一次结算只有一张票据
            //        {
            //            return balancePresc;
            //        }
            //        decimal allTotalFee = feeItemHeadList.Sum(p => p.TotalFee);
            //        OP_CostHead costHead = new OP_CostHead();
            //        costHead.CostHeadID = 0;
            //        costHead.TotalFee = allTotalFee;
            //        costHead.CashFee = allTotalFee;
            //        costHead.PosFee = 0;
            //        costHead.PromFee = 0;
            //        costHead.ChargeEmpID = operatoreid;
            //        costHead.CostDate = DateTime.Now;
            //        foreach (OP_FeeItemHead feeitemHead in feeItemHeadList)
            //        {

            //        }
            //    }
            //}
            #endregion
            BasicDataManagement basicdata = NewObject <BasicDataManagement>();

            //补收的处方数据保存到数据库
            if (balancePresc.Count > 0)
            {
                OP_FeeItemHead oldFeeitemHead = NewObject <OP_FeeItemHead>().getmodel(balancePresc[0].FeeItemHeadID) as OP_FeeItemHead;
                OP_FeeItemHead feeitemHead    = oldFeeitemHead.Clone() as OP_FeeItemHead;
                feeitemHead.FeeItemHeadID = 0;
                feeitemHead.ChargeEmpID   = operatoreid;
                feeitemHead.ChargeDate    = DateTime.Now;
                feeitemHead.ChargeFlag    = 0;
                feeitemHead.ChargeStatus  = 0;
                decimal roundingMoney = 0;
                feeitemHead.TotalFee = NewObject <PrescMoneyCalculate>().GetPrescriptionTotalMoney(balancePresc, out roundingMoney);
                this.BindDb(feeitemHead);
                feeitemHead.save();
                for (int j = 0; j < balancePresc.Count; j++)
                {
                    OP_FeeItemDetail oldfeeDetail = NewObject <OP_FeeItemDetail>().getmodel(balancePresc[j].PresDetailID) as OP_FeeItemDetail;
                    OP_FeeItemDetail feeDetial    = oldfeeDetail.Clone() as OP_FeeItemDetail;
                    feeDetial.PresDetailID  = 0;
                    feeDetial.Amount        = balancePresc[j].Amount;
                    feeDetial.TotalFee      = balancePresc[j].TotalFee;
                    feeDetial.FeeItemHeadID = feeitemHead.FeeItemHeadID;
                    feeDetial.save();
                    balancePresc[j].FeeItemHeadID = feeitemHead.FeeItemHeadID;
                    balancePresc[j].PresDetailID  = feeDetial.PresDetailID;
                    balancePresc[j].FeeNo         = feeitemHead.FeeNo;
                    balancePresc[j].ModifyFlag    = 0;
                }
            }

            OP_CostHead           oldCostHead     = NewObject <OP_CostHead>().getmodel(costHeadid) as OP_CostHead;
            List <OP_FeeItemHead> feeItemHeadList = NewObject <OP_FeeItemHead>().getlist <OP_FeeItemHead>(" costHeadId=" + costHeadid + " and invoiceNO!='" + refundInvoiceNO + "' and ChargeStatus=1");
            int i = 1;
            foreach (OP_FeeItemHead oldfeeitemhead in feeItemHeadList)
            {
                OP_FeeItemHead newfeeitemhead = oldfeeitemhead.Clone() as OP_FeeItemHead;
                newfeeitemhead.ChargeFlag    = 0;
                newfeeitemhead.FeeItemHeadID = 0;
                newfeeitemhead.ChargeStatus  = 0;
                newfeeitemhead.ChargeEmpID   = operatoreid;
                newfeeitemhead.CostHeadID    = 0;
                newfeeitemhead.save();
                List <OP_FeeItemDetail> feeItemDetaliList = NewObject <OP_FeeItemDetail>().getlist <OP_FeeItemDetail>(" feeitemheadid=" + oldfeeitemhead.FeeItemHeadID);
                foreach (OP_FeeItemDetail oldfeeItemDetail in feeItemDetaliList)
                {
                    int j = 0;
                    OP_FeeItemDetail newFeeitemDetail = oldfeeItemDetail.Clone() as OP_FeeItemDetail;
                    newFeeitemDetail.PresDetailID  = 0;
                    newFeeitemDetail.FeeItemHeadID = newfeeitemhead.FeeItemHeadID;
                    newfeeitemhead.save();
                    #region 明细
                    Prescription pres = new Prescription();
                    pres.PresDetailID    = newFeeitemDetail.PresDetailID;
                    pres.FeeItemHeadID   = newFeeitemDetail.FeeItemHeadID;
                    pres.PatListID       = newFeeitemDetail.PatListID;
                    pres.ItemID          = newFeeitemDetail.ItemID;
                    pres.ItemName        = newFeeitemDetail.ItemName;
                    pres.Spec            = newFeeitemDetail.Spec;
                    pres.PackUnit        = newFeeitemDetail.PackUnit;
                    pres.UnitNO          = newFeeitemDetail.UnitNO;
                    pres.StockPrice      = newFeeitemDetail.StockPrice;
                    pres.Amount          = newFeeitemDetail.Amount;
                    pres.PresAmount      = newFeeitemDetail.PresAmount;
                    pres.TotalFee        = newFeeitemDetail.TotalFee;
                    pres.ExamItemID      = newFeeitemDetail.ExamItemID;
                    pres.DocPresDetailID = newFeeitemDetail.DocPresDetailID;
                    pres.MiniUnit        = newFeeitemDetail.MiniUnit;
                    pres.RetailPrice     = newFeeitemDetail.RetailPrice;
                    pres.StatID          = newFeeitemDetail.StatID;
                    pres.ItemType        = newFeeitemDetail.ItemType;

                    pres.PrescGroupID = i + 1;
                    pres.presNO       = j == 0 ? i + 1 : 0;
                    pres.PresDeptID   = newfeeitemhead.PresDeptID;
                    pres.PresEmpID    = newfeeitemhead.PresEmpID;
                    pres.ExecDeptID   = newfeeitemhead.ExecDeptID;
                    pres.PresDocName  = basicdata.GetEmpName(newfeeitemhead.PresEmpID);
                    pres.ExecDetpName = basicdata.GetDeptName(newfeeitemhead.ExecDeptID);
                    pres.PresType     = newfeeitemhead.PresType;
                    pres.ModifyFlag   = 0;
                    pres.Selected     = 1;
                    if (Convert.ToInt32(pres.ItemType) == (int)OP_Enum.ItemType.收费项目 || Convert.ToInt32(pres.ItemType) == (int)OP_Enum.ItemType.组合项目)
                    {
                        pres.MiniAmount = newFeeitemDetail.Amount;
                        pres.PackAmount = (newFeeitemDetail.Amount - pres.MiniAmount) / pres.UnitNO;
                    }
                    else
                    {
                        pres.MiniAmount = newFeeitemDetail.Amount % newFeeitemDetail.UnitNO;
                        pres.PackAmount = (newFeeitemDetail.Amount - pres.MiniAmount) / pres.UnitNO;
                    }

                    pres.DocPresHeadID = newfeeitemhead.DocPresHeadID;
                    balancePresc.Add(pres);
                    j += 1;
                    #endregion
                }

                i += 1;
            }

            return(balancePresc);
        }