예제 #1
0
        /// <summary>
        /// 挂号正式结算
        /// </summary>
        /// <param name="Patient"></param>
        /// <param name="budgetInfo"></param>
        /// <returns></returns>
        public override bool Register(RegPatient Patient, ChargeInfo budgetInfo)
        {
            try
            {
                //更新病人门诊号
                BindEntity <Model.MZ_PatList> .CreateInstanceDAL(oleDb).Update(Tables.mz_patlist.PATLISTID + "=" + Patient.PatListID,
                                                                               Tables.mz_patlist.VISITNO + "='" + Patient.VisitNo + "'");

                OPDBillKind invoiceType = OPDBillKind.门诊挂号发票;
                if (Convert.ToInt32(OPDParamter.Parameters["012"]) == 1)
                {
                    invoiceType = OPDBillKind.门诊收费发票;
                }

                string perfChar  = "";
                string invoiceNo = InvoiceManager.GetBillNumber(invoiceType, OperatorId, false, out perfChar);

                Model.MZ_PresMaster mz_presmaster = BindEntity <Model.MZ_PresMaster> .CreateInstanceDAL(oleDb).GetModel(budgetInfo.PrescriptionID);

                mz_presmaster.Record_Flag = 0;        //改为正常状态
                mz_presmaster.Charge_Flag = 1;        //置为收费状态
                mz_presmaster.TicketNum   = invoiceNo;
                mz_presmaster.TicketCode  = perfChar; //前缀
                mz_presmaster.ChargeCode  = OperatorId.ToString( );
                BindEntity <Model.MZ_PresMaster> .CreateInstanceDAL(oleDb).Update(mz_presmaster);

                Model.MZ_CostMaster mz_costmaster = BindEntity <Model.MZ_CostMaster> .CreateInstanceDAL(oleDb).GetModel(budgetInfo.ChargeID);

                mz_costmaster.Record_Flag = 0;
                mz_costmaster.ChargeCode  = OperatorId.ToString( );
                mz_costmaster.ChargeName  = OperatorName;
                mz_costmaster.TicketNum   = invoiceNo;
                mz_costmaster.TicketCode  = perfChar;//发票前缀
                mz_costmaster.Favor_Fee   = budgetInfo.FavorFee;
                mz_costmaster.Money_Fee   = budgetInfo.CashFee;
                mz_costmaster.Pos_Fee     = budgetInfo.PosFee;
                mz_costmaster.Self_Fee    = budgetInfo.SelfFee;
                mz_costmaster.Village_Fee = budgetInfo.VillageFee;
                BindEntity <Model.MZ_CostMaster> .CreateInstanceDAL(oleDb).Update(mz_costmaster);

                return(true);
            }
            catch (OperatorException operr)
            {
                throw operr;
            }
            catch (Exception err)
            {
                throw err;
            }
        }
예제 #2
0
        /// <summary>
        /// 保存结算头表
        /// </summary>
        /// <param name="Patient"></param>
        /// <param name="mz_presmaster"></param>
        /// <returns></returns>
        private Model.MZ_CostMaster SaveCostMaster(RegPatient Patient, Model.MZ_PresMaster mz_presmaster)
        {
            Model.MZ_CostMaster mz_costmaster = new HIS.Model.MZ_CostMaster();
            mz_costmaster.ChargeCode   = OperatorId.ToString();
            mz_costmaster.ChargeName   = OperatorName;
            mz_costmaster.CostDate     = HIS.SYSTEM.PubicBaseClasses.XcDate.ServerDateTime;
            mz_costmaster.Hang_Flag    = (int)OPDOperationType.门诊挂号;
            mz_costmaster.PatID        = Patient.PatID;
            mz_costmaster.PatListID    = Patient.PatListID;
            mz_costmaster.PresMasterID = mz_presmaster.PresMasterID;
            mz_costmaster.Record_Flag  = 9;
            mz_costmaster.Total_Fee    = mz_presmaster.Total_Fee;
            BindEntity <Model.MZ_CostMaster> .CreateInstanceDAL(oleDb).Add(mz_costmaster);

            return(mz_costmaster);
        }
예제 #3
0
 public void LoadPatintInfoByVisitNo(string visitNo)
 {
     try
     {
         HIS.MZ_BLL.RegController regController = new HIS.MZ_BLL.RegController( );
         RegPatient patient = regController.GetPatientInfoByVisitNo(visitNo);
         view.Patient = patient;
     }
     catch (OperatorException oe)
     {
         throw new Exception(oe.Message);
     }
     catch
     {
         throw new Exception("查找病人信息发生错误!");
     }
 }
예제 #4
0
        /// <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);
        }
예제 #5
0
        /// <summary>
        /// 保存处方明细
        /// </summary>
        /// <param name="Patient"></param>
        /// <param name="mz_presmaster"></param>
        /// <param name="base_service_item"></param>
        /// <returns></returns>
        private static Model.MZ_PresOrder SavePresOrder(RegPatient Patient, Model.MZ_PresMaster mz_presmaster, Model.BASE_SERVICE_ITEMS base_service_item)
        {
            Model.MZ_PresOrder mz_presorder = new HIS.Model.MZ_PresOrder();
            mz_presorder.Amount       = 1;
            mz_presorder.BigItemCode  = base_service_item.STATITEM_CODE;
            mz_presorder.Buy_Price    = base_service_item.PRICE;
            mz_presorder.ItemID       = base_service_item.ITEM_ID;
            mz_presorder.ItemName     = base_service_item.ITEM_NAME;
            mz_presorder.ItemType     = "00";
            mz_presorder.PatID        = Patient.PatID;
            mz_presorder.PatListID    = Patient.PatListID;
            mz_presorder.PresAmount   = 1;
            mz_presorder.PresMasterID = mz_presmaster.PresMasterID;
            mz_presorder.RelationNum  = 1;
            mz_presorder.Sell_Price   = base_service_item.PRICE;
            mz_presorder.Unit         = base_service_item.ITEM_UNIT;
            mz_presorder.Tolal_Fee    = mz_presorder.Amount * mz_presorder.PresAmount * mz_presorder.Sell_Price;
            BindEntity <Model.MZ_PresOrder> .CreateInstanceDAL(oleDb).Add(mz_presorder);

            return(mz_presorder);
        }
예제 #6
0
        /// <summary>
        /// 保存病人就诊登记表
        /// </summary>
        /// <param name="Patient"></param>
        /// <returns></returns>
        private static Model.MZ_PatList SavePatList(RegPatient Patient)
        {
            if (Patient.PatID == 0)
            {
                Model.PatientInfo patinfo = new HIS.Model.PatientInfo();
                patinfo.PatName     = Patient.PatientName;
                patinfo.PatSex      = Patient.Sex;
                patinfo.PatBriDate  = Patient.BornDate;
                patinfo.ACCOUNTTYPE = Patient.PatType.Name;
                patinfo.PatGroup    = Patient.Folk;
                patinfo.PYM         = Patient.PYM;
                patinfo.WBM         = Patient.WBM;
                patinfo.LinkAddress = Patient.Address;
                patinfo.LinkTel     = Patient.Tel;
                patinfo.PatAddress  = Patient.Address;
                patinfo.PatTEL      = Patient.Tel;
                patinfo.ALLERGIC    = Patient.Allergic;
                BindEntity <Model.PatientInfo> .CreateInstanceDAL(oleDb).Add(patinfo);

                Patient.PatID = patinfo.PatID;
            }

            Model.MZ_PatList mz_patlist = new HIS.Model.MZ_PatList();
            mz_patlist.Age           = Patient.Age;
            mz_patlist.CureDate      = HIS.SYSTEM.PubicBaseClasses.XcDate.ServerDateTime;
            mz_patlist.MediType      = Patient.PatType.Code;
            mz_patlist.PatID         = Patient.PatID;
            mz_patlist.PatName       = Patient.PatientName;
            mz_patlist.PatSex        = Patient.Sex;
            mz_patlist.RegCode       = Patient.RegTypeCode;
            mz_patlist.RegName       = Patient.RegTypeName;
            mz_patlist.REG_DEPT_CODE = Patient.RegDeptCode;   //挂号科室
            mz_patlist.REG_DEPT_NAME = Patient.RegDeptName;
            mz_patlist.REG_DOC_CODE  = Patient.RegDoctorCode; //挂号医生
            mz_patlist.REG_DOC_NAME  = Patient.RegDoctorName;
            mz_patlist.HpGrade       = Patient.AgeUnit;
            BindEntity <Model.MZ_PatList> .CreateInstanceDAL(oleDb).Add(mz_patlist);

            return(mz_patlist);
        }
예제 #7
0
 /// <summary>
 /// 挂号处理
 /// </summary>
 /// <param name="Patient"></param>
 /// <param name="budgetInfo"></param>
 /// <returns></returns>
 public abstract bool Register(RegPatient Patient, ChargeInfo budgetInfo);
예제 #8
0
 /// <summary>
 /// 挂号预算
 /// </summary>
 /// <param name="Patient"></param>
 /// <returns></returns>
 public abstract ChargeInfo Budget(RegPatient Patient);
예제 #9
0
        /// <summary>
        /// 挂号的预处理
        /// </summary>
        /// <param name="Patient"></param>
        /// <returns></returns>
        public override ChargeInfo Budget(RegPatient Patient)
        {
            //保存就诊记录
            Model.MZ_PatList mz_patlist = SavePatList(Patient);
            Patient.PatListID = mz_patlist.PatListID;

            //查找所需费用项目
            List <Model.MZ_REG_ITEM_FEE> listRegFee = BindEntity <Model.MZ_REG_ITEM_FEE> .CreateInstanceDAL(oleDb).GetListArray(BLL.Tables.mz_reg_item_fee.TYPE_CODE + "='" + Patient.RegTypeCode.Trim() + "'");

            //写入处方表
            Model.MZ_PresMaster mz_presmaster = SavePresMaster(Patient);

            Hashtable htCostOrder = new Hashtable();

            Model.MZ_CostOrder mz_costorder = null;
            foreach (Model.MZ_REG_ITEM_FEE mz_reg_item_fee in listRegFee)
            {
                Model.BASE_SERVICE_ITEMS base_service_item = BindEntity <Model.BASE_SERVICE_ITEMS> .CreateInstanceDAL(oleDb).GetModel(mz_reg_item_fee.ITEM_ID);

                if (base_service_item == null)
                {
                    throw new OperatorException("找不到项目编号为" + mz_reg_item_fee.ITEM_ID.ToString() + "的项目");
                }
                //保存明细
                Model.MZ_PresOrder mz_presorder = SavePresOrder(Patient, mz_presmaster, base_service_item);

                mz_presmaster.Total_Fee += mz_presorder.Tolal_Fee;
                if (htCostOrder.Contains(base_service_item.STATITEM_CODE))
                {
                    ((Model.MZ_CostOrder)htCostOrder[base_service_item.STATITEM_CODE]).Total_Fee += mz_presorder.Tolal_Fee;
                }
                else
                {
                    mz_costorder           = new HIS.Model.MZ_CostOrder();
                    mz_costorder.ItemType  = base_service_item.STATITEM_CODE;
                    mz_costorder.Total_Fee = mz_presorder.Tolal_Fee;
                    htCostOrder.Add(base_service_item.STATITEM_CODE, mz_costorder);
                }
            }
            //写结算记录
            Model.MZ_CostMaster mz_costmaster = SaveCostMaster(Patient, mz_presmaster);

            InvoiceItem[] invoiceItems = new InvoiceItem[htCostOrder.Count];
            int           count        = 0;

            foreach (object item in htCostOrder)
            {
                mz_costorder        = (Model.MZ_CostOrder)((DictionaryEntry)item).Value;
                mz_costorder.CostID = mz_costmaster.CostMasterID;
                BindEntity <Model.MZ_CostOrder> .CreateInstanceDAL(oleDb).Add(mz_costorder);

                Model.BASE_STAT_ITEM base_stat_item = BindEntity <Model.BASE_STAT_ITEM> .CreateInstanceDAL(oleDb).GetModel(BLL.Tables.base_stat_item.CODE + "='" + mz_costorder.ItemType.Trim() + "'");

                Model.BASE_STAT_MZFP base_stat_mzfp = BindEntity <Model.BASE_STAT_MZFP> .CreateInstanceDAL(oleDb).GetModel(BLL.Tables.base_stat_mzfp.CODE + "='" + base_stat_item.MZFP_CODE.Trim() + "'");

                invoiceItems[count].ItemName = base_stat_mzfp.ITEM_NAME;
                invoiceItems[count].ItemCode = base_stat_mzfp.CODE;
                invoiceItems[count].Cost     = mz_costorder.Total_Fee;
                count++;
            }
            //回写处方的总金额和结算号
            BindEntity <Model.MZ_PresMaster> .CreateInstanceDAL(oleDb).Update(BLL.Tables.mz_presmaster.PRESMASTERID + "=" + mz_presmaster.PresMasterID,
                                                                              BLL.Tables.mz_presmaster.TOTAL_FEE + "=" + mz_presmaster.Total_Fee,
                                                                              BLL.Tables.mz_presmaster.COSTMASTERID + "=" + mz_costmaster.CostMasterID);

            ChargeInfo regInfo = new ChargeInfo();

            regInfo.ChargeID       = mz_costmaster.CostMasterID;
            regInfo.ChargeDate     = mz_costmaster.CostDate;
            regInfo.TotalFee       = mz_costmaster.Total_Fee;
            regInfo.PrescriptionID = mz_presmaster.PresMasterID;
            regInfo.Items          = invoiceItems;

            return(regInfo);
        }