Example #1
0
        /// <summary>
        /// 删除处方明细
        /// </summary>
        /// <param name="PrescriptionDetailId">要删除的明细ID</param>
        /// <returns>被删除的处方明细数</returns>
        public int DeletePrescriptionDetail(int PrescriptionDetailId)
        {
            //HIS.DAL.MZ_PresOrder d_mz_presorder = new HIS.DAL.MZ_PresOrder( );
            //d_mz_presorder._oleDB = this.oleDb;
            HIS.Model.MZ_PresOrder mz_presorder = BindEntity <Model.MZ_PresOrder> .CreateInstanceDAL(oleDb).GetModel(PrescriptionDetailId);

            HIS.Model.MZ_PresMaster mz_presmaster = BindEntity <Model.MZ_PresMaster> .CreateInstanceDAL(oleDb).GetModel(mz_presorder.PresMasterID);

            if (mz_presmaster.Charge_Flag == 1)
            {
                throw new OperatorException("该处方已经收费,不能删除!");
            }

            oleDb.BeginTransaction();
            try
            {
                int effectRow = 0;
                HIS.Model.MZ_PresOrder detail = BindEntity <Model.MZ_PresOrder> .CreateInstanceDAL(oleDb).GetModel(PrescriptionDetailId);

                BindEntity <Model.MZ_PresOrder> .CreateInstanceDAL(oleDb).Delete(detail.PresOrderID);

                effectRow++;
                oleDb.CommitTransaction();
                return(effectRow);
            }
            catch (Exception err)
            {
                oleDb.RollbackTransaction();
                ErrorWriter.WriteLog(err.Message);
                return(0);
            }
        }
Example #2
0
        /// <summary>
        /// 得到冲正的处方
        /// </summary>
        /// <param name="orgPrescriptionId">被冲处方的ID</param>
        /// <returns></returns>
        private Prescription GetDisChargePrescription(int orgPrescriptionId)
        {
            Prescription _prescription = new Prescription();

            #region ...
            HIS.Model.MZ_PresMaster model_mz_presmaster = new HIS.Model.MZ_PresMaster();
            //红冲的处方头
            model_mz_presmaster = HIS.SYSTEM.Core.BindEntity <Model.MZ_PresMaster> .CreateInstanceDAL(oleDb).GetModel("OLDID=" + orgPrescriptionId);

            if (model_mz_presmaster == null)
            {
                throw new OperatorException("没有找到冲正的处方记录!");
            }
            _prescription.Charge_Flag    = model_mz_presmaster.Charge_Flag;
            _prescription.ChargeCode     = model_mz_presmaster.ChargeCode;
            _prescription.ChargeID       = model_mz_presmaster.CostMasterID;
            _prescription.Drug_Flag      = model_mz_presmaster.Drug_Flag;
            _prescription.ExecDeptCode   = model_mz_presmaster.ExecDeptCode;
            _prescription.ExecDocCode    = model_mz_presmaster.ExecDocCode;
            _prescription.OldPresID      = model_mz_presmaster.OldID;
            _prescription.PresCostCode   = model_mz_presmaster.PresCostCode;
            _prescription.PrescriptionID = model_mz_presmaster.PresMasterID;
            _prescription.PrescType      = model_mz_presmaster.PresType;
            _prescription.PresDeptCode   = model_mz_presmaster.PresDocCode;
            _prescription.PresDocCode    = model_mz_presmaster.PresDocCode;
            _prescription.Record_Flag    = model_mz_presmaster.Record_Flag;
            _prescription.TicketCode     = model_mz_presmaster.TicketCode;
            _prescription.TicketNum      = model_mz_presmaster.TicketNum;
            _prescription.Total_Fee      = model_mz_presmaster.Total_Fee;

            List <HIS.Model.MZ_PresOrder> orders = HIS.SYSTEM.Core.BindEntity <Model.MZ_PresOrder> .CreateInstanceDAL(oleDb).GetListArray("PresmasterID=" + model_mz_presmaster.PresMasterID);

            PrescriptionDetail[] details = new PrescriptionDetail[orders.Count];
            for (int j = 0; j < orders.Count; j++)
            {
                #region 明细
                details[j].Amount      = orders[j].Amount;
                details[j].BigitemCode = orders[j].BigItemCode;
                details[j].Buy_price   = orders[j].Buy_Price;
                details[j].ComplexId   = orders[j].CaseID;
                details[j].DetailId    = orders[j].PresOrderID;
                details[j].ItemId      = orders[j].ItemID;
                details[j].Itemname    = orders[j].ItemName;
                details[j].ItemType    = orders[j].ItemType;
                details[j].Order_Flag  = orders[j].Order_Flag;
                details[j].PassId      = orders[j].PassID;
                details[j].PresAmount  = orders[j].PresAmount;
                details[j].PresctionId = orders[j].PresMasterID;
                details[j].RelationNum = orders[j].RelationNum;
                details[j].Sell_price  = orders[j].Sell_Price;
                details[j].Standard    = orders[j].Standard;
                details[j].Tolal_Fee   = orders[j].Tolal_Fee;
                details[j].Unit        = orders[j].Unit;
                #endregion
            }
            _prescription.PresDetails = details;
            #endregion
            return(_prescription);
        }
        /// <summary>
        /// 保存处方头表
        /// </summary>
        /// <param name="Patient"></param>
        /// <returns></returns>
        private Model.MZ_PresMaster SavePresMaster(RegPatient Patient)
        {
            Model.MZ_PresMaster mz_presmaster = new HIS.Model.MZ_PresMaster();
            mz_presmaster.Charge_Flag  = 0;
            mz_presmaster.ExecDeptCode = Patient.RegDeptCode;
            mz_presmaster.ExecDocCode  = Patient.RegDoctorCode;
            mz_presmaster.Hand_Flag    = (int)OPDOperationType.门诊挂号;
            mz_presmaster.PatID        = Patient.PatID;
            mz_presmaster.PatListID    = Patient.PatListID;
            mz_presmaster.PresAmount   = 1;
            mz_presmaster.PresCostCode = OperatorId.ToString();
            mz_presmaster.PresDate     = Patient.RegDate;
            mz_presmaster.PresDeptCode = Patient.RegDeptCode;
            mz_presmaster.PresDocCode  = Patient.RegDoctorCode;
            mz_presmaster.PresType     = "-1";
            mz_presmaster.Record_Flag  = 9; //预算状态为9
            mz_presmaster.PresDate     = HIS.SYSTEM.PubicBaseClasses.XcDate.ServerDateTime;
            BindEntity <Model.MZ_PresMaster> .CreateInstanceDAL(oleDb).Add(mz_presmaster);

            return(mz_presmaster);
        }
Example #4
0
        /// <summary>
        /// 保存处方
        /// </summary>
        /// <param name="Prescriptions">要保存的处方</param>
        /// <returns>成功标志</returns>
        /// <remarks></remarks>
        public bool SavePrescription(Prescription[] Prescriptions)
        {
            oleDb.BeginTransaction();
            try
            {
                for (int i = 0; i < Prescriptions.Length; i++)
                {
                    if (!Prescriptions[i].Modified)
                    {
                        continue;
                    }

                    if (Prescriptions[i].PresDetails == null)
                    {
                        continue;
                    }

                    if (Prescriptions[i].PresDetails.Length == 0)
                    {
                        continue;
                    }

                    HIS.Model.MZ_PresMaster t_mz_prescMaster = new HIS.Model.MZ_PresMaster( );
                    #region 赋值
                    t_mz_prescMaster.PatID        = Prescriptions[i].PatientID;
                    t_mz_prescMaster.PatListID    = Prescriptions[i].RegisterID;
                    t_mz_prescMaster.Charge_Flag  = Prescriptions[i].Charge_Flag;
                    t_mz_prescMaster.ChargeCode   = Prescriptions[i].ChargeCode;
                    t_mz_prescMaster.CostMasterID = Prescriptions[i].ChargeID;
                    t_mz_prescMaster.Drug_Flag    = Prescriptions[i].Drug_Flag;
                    t_mz_prescMaster.ExecDeptCode = Prescriptions[i].ExecDeptCode;
                    t_mz_prescMaster.ExecDocCode  = Prescriptions[i].ExecDocCode;
                    t_mz_prescMaster.OldID        = Prescriptions[i].OldPresID;
                    t_mz_prescMaster.PresCostCode = Prescriptions[i].PresCostCode;
                    t_mz_prescMaster.PresMasterID = Prescriptions[i].PrescriptionID;
                    t_mz_prescMaster.PresType     = Prescriptions[i].PrescType;
                    t_mz_prescMaster.PresDeptCode = Prescriptions[i].PresDeptCode;
                    t_mz_prescMaster.PresDocCode  = Prescriptions[i].PresDocCode;
                    t_mz_prescMaster.Record_Flag  = Prescriptions[i].Record_Flag;
                    t_mz_prescMaster.TicketCode   = Prescriptions[i].TicketCode;
                    t_mz_prescMaster.TicketNum    = Prescriptions[i].TicketNum;
                    t_mz_prescMaster.Total_Fee    = Prescriptions[i].Total_Fee;
                    t_mz_prescMaster.PresDate     = Prescriptions[i].PresDate;
                    t_mz_prescMaster.PresAmount   = Prescriptions[i].PresDetails[0].PresAmount;
                    t_mz_prescMaster.Hand_Flag    = (int)OPDOperationType.门诊收费;
                    t_mz_prescMaster.DocPresId    = Prescriptions[i].DocPresId;
                    #endregion
                    if (BindEntity <Model.MZ_PresMaster> .CreateInstanceDAL(oleDb).Exists(Prescriptions[i].PrescriptionID))
                    {
                        Model.MZ_PresMaster mz_presmaster = BindEntity <Model.MZ_PresMaster> .CreateInstanceDAL(oleDb).GetModel(Prescriptions[i].PrescriptionID);

                        if (mz_presmaster.Charge_Flag == 1)
                        {
                            throw new OperatorException("处方已收费,不能修改!");
                        }
                        //更新处方头
                        BindEntity <Model.MZ_PresMaster> .CreateInstanceDAL(oleDb).Update(t_mz_prescMaster);
                    }
                    else
                    {
                        //插入新处方
                        int ret1 = BindEntity <Model.MZ_PresMaster> .CreateInstanceDAL(oleDb).Add(t_mz_prescMaster);

                        Prescriptions[i].PrescriptionID = ret1;
                    }
                    //更新或增加明细
                    PrescriptionDetail[] details = Prescriptions[i].PresDetails;
                    for (int j = 0; j < details.Length; j++)
                    {
                        if (details[j].Amount == 0)
                        {
                            throw new OperatorException("【" + details[j].Itemname + "】数量为零,请输入一个大于零的数");
                        }
                        if (details[j].BigitemCode == "01" || details[j].BigitemCode == "02" || details[j].BigitemCode == "03")
                        {
                            decimal sellprice, buyprice, storevalue;
                            decimal inputValue = details[j].Amount * details[j].PresAmount;
                            PublicDataReader.StoreExists(details[j].ItemId, Prescriptions[i].ExecDeptCode, inputValue,
                                                         out sellprice, out buyprice, out storevalue);
                        }

                        HIS.Model.MZ_PresOrder t_mz_presOrder = new HIS.Model.MZ_PresOrder( );
                        #region 赋值
                        t_mz_presOrder.Amount       = details[j].Amount;
                        t_mz_presOrder.BigItemCode  = details[j].BigitemCode;
                        t_mz_presOrder.Buy_Price    = details[j].Buy_price;
                        t_mz_presOrder.CaseID       = details[j].ComplexId; //预留的CASEID用来保存组合项目的ID
                        t_mz_presOrder.ItemID       = details[j].ItemId;
                        t_mz_presOrder.ItemName     = details[j].Itemname;
                        t_mz_presOrder.ItemType     = details[j].ItemType;
                        t_mz_presOrder.Order_Flag   = details[j].Order_Flag;
                        t_mz_presOrder.PassID       = details[j].DocPrescDetailId; //预留的PassID用来保存门诊医生处方明细ID
                        t_mz_presOrder.PatID        = this.patient.PatID;
                        t_mz_presOrder.PatListID    = this.patient.PatListID;
                        t_mz_presOrder.PresAmount   = details[j].PresAmount;
                        t_mz_presOrder.PresMasterID = Prescriptions[i].PrescriptionID;
                        t_mz_presOrder.PresOrderID  = details[j].DetailId;
                        t_mz_presOrder.RelationNum  = details[j].RelationNum;
                        t_mz_presOrder.Sell_Price   = details[j].Sell_price;
                        t_mz_presOrder.Standard     = details[j].Standard;
                        t_mz_presOrder.Tolal_Fee    = details[j].Tolal_Fee;
                        t_mz_presOrder.Unit         = details[j].Unit;
                        #endregion

                        if (BindEntity <Model.MZ_PresOrder> .CreateInstanceDAL(oleDb).Exists(details[j].DetailId))
                        {
                            //更新处方明细
                            BindEntity <Model.MZ_PresOrder> .CreateInstanceDAL(oleDb).Update(t_mz_presOrder);
                        }
                        else
                        {
                            //插入新处方明细
                            int ret2 = BindEntity <Model.MZ_PresOrder> .CreateInstanceDAL(oleDb).Add(t_mz_presOrder);

                            details[j].DetailId = ret2;
                        }
                    }
                }

                oleDb.CommitTransaction( );
                return(true);
            }
            catch (OperatorException operr)
            {
                oleDb.RollbackTransaction( );
                throw operr;
            }
            catch (Exception err)
            {
                oleDb.RollbackTransaction( );
                ErrorWriter.WriteLog(err.Message);
                throw new Exception("保存处方发生错误!");
            }
        }
Example #5
0
        /// <summary>
        /// 结算
        /// </summary>
        /// <param name="BudgetaryChargeInfos">预算后产生的计算信息</param>
        /// <param name="prescriptions">要收费的处方</param>
        /// <param name="ChargeInvoicies">结算成功后返回的发票结果,数组对象</param>
        /// <returns></returns>
        private bool _charge(ChargeInfo[] BudgetaryChargeInfos, Prescription[] prescriptions, out BaseInvoice[] ChargeInvoicies)
        {
            try
            {
                MZClinicInterface clinicInterface = new MZClinicInterface();
                for (int presindex = 0; presindex < prescriptions.Length; presindex++)
                {
                    if (prescriptions[presindex].DocPresId > 0)
                    {
                        decimal mzdocfee = clinicInterface.GetDocPresMoney(prescriptions[presindex].DocPresId);
                        if (mzdocfee != prescriptions[presindex].Total_Fee)
                        {
                            throw new Exception("门诊医生站已对该收费处方进行修改,请重新刷新处方再点收银!");
                        }
                    }
                }
                for (int chargeCount = 0; chargeCount < BudgetaryChargeInfos.Length; chargeCount++)
                {
                    if (BindEntity <Model.MZ_CostMaster> .CreateInstanceDAL(oleDb).Exists(BudgetaryChargeInfos[chargeCount].ChargeID))
                    {
                        HIS.Model.MZ_CostMaster chargeBill = new HIS.Model.MZ_CostMaster( );
                        chargeBill = BindEntity <Model.MZ_CostMaster> .CreateInstanceDAL(oleDb).GetModel(BudgetaryChargeInfos[chargeCount].ChargeID);

                        chargeBill.Self_Fee    = BudgetaryChargeInfos[chargeCount].SelfFee;
                        chargeBill.Village_Fee = BudgetaryChargeInfos[chargeCount].VillageFee;
                        chargeBill.Favor_Fee   = BudgetaryChargeInfos[chargeCount].FavorFee;
                        chargeBill.Pos_Fee     = BudgetaryChargeInfos[chargeCount].PosFee;
                        chargeBill.Money_Fee   = BudgetaryChargeInfos[chargeCount].CashFee;
                        chargeBill.Self_Tally  = BudgetaryChargeInfos[chargeCount].SelfTally;
                        chargeBill.Ticket_Flag = 0;
                        chargeBill.CostDate    = HIS.SYSTEM.PubicBaseClasses.XcDate.ServerDateTime;
                        chargeBill.Record_Flag = 0;
                        string perfCode = "";
                        chargeBill.TicketNum  = InvoiceManager.GetBillNumber(OPDBillKind.门诊收费发票, OperatorId, false, out perfCode);
                        chargeBill.TicketCode = perfCode; //前缀

                        //BudgetaryChargeInfos[chargeCount].InvoiceSerialNO = Convert.ToInt32( chargeBill.TicketNum );
                        //BudgetaryChargeInfos[chargeCount].PerfChar = perfCode;
                        //BudgetaryChargeInfos[chargeCount].ChargeDate = chargeBill.CostDate;

                        BudgetaryChargeInfos[chargeCount].InvoiceSerialNO = Convert.ToInt32(chargeBill.TicketNum);
                        BudgetaryChargeInfos[chargeCount].InvoiceNO       = chargeBill.TicketNum;
                        BudgetaryChargeInfos[chargeCount].PerfChar        = perfCode;
                        BudgetaryChargeInfos[chargeCount].ChargeDate      = chargeBill.CostDate;

                        BindEntity <Model.MZ_CostMaster> .CreateInstanceDAL(oleDb).Update(chargeBill);  //更新结算表

                        //更新处方表收费标识
                        HIS.Model.MZ_PresMaster presMaster = new HIS.Model.MZ_PresMaster( );

                        presMaster = BindEntity <Model.MZ_PresMaster> .CreateInstanceDAL(oleDb).GetModel(BudgetaryChargeInfos[chargeCount].PrescriptionID);

                        if (presMaster.Charge_Flag == 0)
                        {
                            presMaster.Charge_Flag   = 1;
                            presMaster.RoungingMoney = presMaster.Total_Fee - BudgetaryChargeInfos[chargeCount].TotalFee;
                            presMaster.Total_Fee     = BudgetaryChargeInfos[chargeCount].TotalFee;
                            presMaster.TicketCode    = perfCode;//前缀//BudgetaryChargeInfos[chargeCount].InvoiceNO;
                            presMaster.TicketNum     = chargeBill.TicketNum;
                            presMaster.CostMasterID  = BudgetaryChargeInfos[chargeCount].ChargeID;
                            presMaster.ChargeCode    = OperatorId.ToString( );
                            BindEntity <Model.MZ_PresMaster> .CreateInstanceDAL(oleDb).Update(presMaster);
                        }
                        else
                        {
                            throw new OperatorException("该处方已被其他收费员收费!");
                        }
                    }
                    else
                    {
                        throw new OperatorException("没有找到结算号的记录!");
                    }
                }
                for (int i = 0; i < prescriptions.Length; i++)
                {
                    clinicInterface.ChangePresStatus(prescriptions[i].DocPresId, 1);
                }
                //生成发票
                ChargeInvoicies = new BaseInvoice[BudgetaryChargeInfos.Length];
                for (int i = 0; i < BudgetaryChargeInfos.Length; i++)
                {
                    ChargeInvoicies[i] = new Invoice(BudgetaryChargeInfos[i].PerfChar, BudgetaryChargeInfos[i].InvoiceNO, OPDBillKind.门诊收费发票);
                }
                return(true);
            }
            catch (OperatorException operr)
            {
                throw operr;
            }
            catch (Exception err)
            {
                throw err;
            }
        }