/// <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); } }
/// <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); }
/// <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("保存处方发生错误!"); } }
/// <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; } }