public ServiceResponseData CompleteDiagonsis() { int patListId = requestData.GetData <int>(0); OP_PatList pat = (OP_PatList)NewObject <OP_PatList>().getmodel(patListId); pat.VisitStatus = 2; this.BindDb(pat); int iRtn = pat.save(); if (iRtn > 0) { responseData.AddData(true); } else { responseData.AddData(false); } return(responseData); }
/// <summary> /// 更新就诊医生 /// </summary> /// <param name="patListId">病人id</param> /// <param name="currentDocId">当前接诊医生Id</param> /// <param name="currentDocDeptId">当前接诊科室Id</param> /// <returns>true更新成功</returns> public bool UpdatePatCurrentDoctorID(int patListId, int currentDocId, int currentDocDeptId) { bool bRtn = true; //查询该病人是否生成处方, List <OPD_PresHead> presHeadList = NewObject <OPD_PresHead>().getlist <OPD_PresHead>("PatListID=" + patListId); //没有生成任何处方 if (presHeadList.Count == 0) { OP_PatList pat = NewObject <OP_PatList>().getmodel(patListId) as OP_PatList; //更新挂号表当前病人的就诊医生Id if (pat.CureEmpID != currentDocId) { pat.CureEmpID = currentDocId; this.BindDb(pat); int iRtn = pat.save(); bRtn = iRtn > 0 ? true : false; } } if (bRtn == true) { //更改病人信息表中的当前就诊科室 OP_PatList patList = NewObject <OP_PatList>().getmodel(patListId) as OP_PatList; //更新挂号表当前病人的就诊医生Id if (patList.CureDeptID != currentDocDeptId) { patList.CureDeptID = currentDocDeptId; this.BindDb(patList); int iRtn = patList.save(); bRtn = iRtn > 0 ? true : false; } } return(bRtn); }
/// <summary> /// 挂号提交 /// </summary> /// <param name="curPatlist">病人对象</param> /// <param name="paymentInfoList">支付对象</param> /// <param name="totalFee">总金额</param> /// <param name="cashFee">现金金额</param> /// <param name="posFee">POS金额</param> /// <param name="dtPrint">返回的打印数据</param> /// <param name="promFee">优惠金额</param> /// <returns>true成功false失败</returns> public bool SaveRegInfo(OP_PatList curPatlist, PayMentInfoList paymentInfoList, decimal totalFee, decimal cashFee, decimal posFee, out DataTable dtPrint, decimal promFee) { try { dtPrint = new DataTable(); bool result = false; //插入挂号就诊表记录 #region 插入挂号就诊表记录 SerialNumberSource serialNumberSource = NewObject <SerialNumberSource>(); curPatlist.VisitNO = serialNumberSource.GetSerialNumber(SnType.门诊流水号); curPatlist.CureDeptID = curPatlist.RegDeptID; curPatlist.CureEmpID = curPatlist.RegEmpID; curPatlist.RegDate = DateTime.Now; curPatlist.VisitStatus = 0; curPatlist.RegStatus = 0; curPatlist.RegCategory = 0; DataTable dtOld = NewObject <OP_PatList>().gettable(" MemberID=" + curPatlist.MemberID); if (dtOld != null && dtOld.Rows.Count > 0) { curPatlist.IsNew = 0; } else { curPatlist.IsNew = 1; } this.BindDb(curPatlist); curPatlist.save(); #endregion int iAccountType = 0; //得到当前结账ID int curAccountId = NewObject <CommonMethod>().GetAccountId(curPatlist.OperatorID, iAccountType); //插入结算主表对象 #region 插入结算主表对象 OP_CostHead costHead = new OP_CostHead(); SetRegCostHead(costHead, curPatlist); costHead.CashFee = cashFee; costHead.PosFee = posFee; costHead.TotalFee = totalFee; costHead.PromFee = promFee; costHead.AccountID = curAccountId; this.BindDb(costHead); costHead.save(); #endregion #region 插入费用表 //插入费用主表 OP_FeeItemHead OP_FeeItemHead feeItemHead = new OP_FeeItemHead(); SetRegFeeHeadValue(feeItemHead, costHead, curPatlist); this.BindDb(feeItemHead); feeItemHead.save(); //插入费用明细表 OP_FeeItemDetail List <OP_FeeItemDetail> feeDetials = SetRegFeeDetailValue(feeItemHead.FeeItemHeadID, curPatlist); foreach (OP_FeeItemDetail feeDetial in feeDetials) { this.BindDb(feeDetial); feeDetial.save(); } #endregion //插入结算明细表 #region 插入结算明细表 DataTable dtRegFeeDetail = NewDao <IOPManageDao>().GetRegItemFeeByStat(curPatlist.RegTypeID); for (int rowindex = 0; rowindex < dtRegFeeDetail.Rows.Count; rowindex++) { OP_CostDetail costDetail = new OP_CostDetail(); costDetail.CostHeadID = costHead.CostHeadID; costDetail.FeeItemHeadID = feeItemHead.FeeItemHeadID; costDetail.ExeDeptID = curPatlist.RegDeptID; costDetail.PresEmpID = curPatlist.RegEmpID; costDetail.PresDeptID = curPatlist.RegDeptID; costDetail.TotalFee = Convert.ToDecimal(dtRegFeeDetail.Rows[rowindex]["statFee"]); costDetail.StatID = Convert.ToInt32(dtRegFeeDetail.Rows[rowindex]["statId"]); this.BindDb(costDetail); costDetail.save(); } #endregion //插入结算支付方式明细表 #region 插入结算支付方式明细表 foreach (OP_CostPayMentInfo costpaymentinfo in paymentInfoList.paymentInfolist) { if (costpaymentinfo.PayMentMoney > 0) { costpaymentinfo.AccountID = curAccountId; costpaymentinfo.CostHeadID = costHead.CostHeadID; costpaymentinfo.PatListID = curPatlist.PatListID; costpaymentinfo.PatName = curPatlist.PatName; costpaymentinfo.PatType = costHead.PatTypeID.ToString(); this.BindDb(costpaymentinfo); costpaymentinfo.save(); } } #endregion //挂号记录表回写costheadid curPatlist.CostHeadID = costHead.CostHeadID; curPatlist.ChargeFlag = 1; this.BindDb(curPatlist); curPatlist.save(); //结账表插入汇总金额 NewObject <CommonMethod>().AddAccoutFee(costHead, curAccountId, 1, 0); //查数据库得到打印dtPrint dtPrint = NewObject <IOPManageDao>().GetRegPrint(curPatlist.PatListID); result = true; return(result); } catch (Exception err) { throw new Exception(err.Message); } }
/// <summary> /// 退号提交 /// </summary> /// <param name="invoiceNO">票据号</param> /// <param name="operatorID">操作员ID</param> public void BackReg(string invoiceNO, int operatorID) { int iAccountType = 0; List <OP_CostHead> costList = NewObject <OP_CostHead>().getlist <OP_CostHead>(" endInvoiceNO='" + invoiceNO + "' and regFlag=1"); if (costList == null || costList.Count == 0) { throw new Exception("找不到该票据号信息"); } else if (costList[0].CostStatus != 0) { throw new Exception("该票据号已经退费,不能再退"); } else if (costList[0].CostStatus == 0 && costList[0].CostDate.ToString("yyyy-MM-dd") != DateTime.Now.ToString("yyyy-MM-dd")) { throw new Exception("已超过退号日期,只能退当天挂的号"); } //原op_patlist变化 OP_PatList patlist = NewObject <OP_PatList>().getmodel(costList[0].PatListID) as OP_PatList; if (patlist.VisitStatus != 0) { throw new Exception("您已就诊,不能再退号"); } patlist.RegStatus = 1;//原挂号记录状态置1 this.BindDb(patlist); patlist.save(); //得到当前结账ID int curAccountId = NewObject <CommonMethod>().GetAccountId(operatorID, iAccountType); //原op_costHead变化 OP_CostHead oldCostHead = costList[0].Clone() as OP_CostHead; oldCostHead.CostStatus = 1;//原有记录状态改为1 this.BindDb(oldCostHead); oldCostHead.save(); //生成新op_costHead变化 OP_CostHead newCostHead = costList[0].Clone() as OP_CostHead; newCostHead.CostHeadID = 0; newCostHead.CostDate = DateTime.Now; newCostHead.CostStatus = 2;//新增记录状态为2 newCostHead.ChargeEmpID = operatorID; newCostHead.AccountID = curAccountId; newCostHead.CashFee = (oldCostHead.CashFee + oldCostHead.PosFee) * (-1);//退金额,POS金额退现金 newCostHead.PosFee = 0; newCostHead.PromFee = oldCostHead.PromFee * (-1); newCostHead.OldID = oldCostHead.CostHeadID;//写入原退记录ID newCostHead.TotalFee = newCostHead.TotalFee * (-1); this.BindDb(newCostHead); newCostHead.save(); //得到原来OP_FeeItemHead List <OP_FeeItemHead> listFeeitemHead = NewObject <OP_FeeItemHead>().getlist <OP_FeeItemHead>(" costheadid=" + oldCostHead.CostHeadID); OP_FeeItemHead newFeeItemHead = new OP_FeeItemHead(); if (listFeeitemHead != null && listFeeitemHead.Count > 0) { OP_FeeItemHead oldFeeItemHead = listFeeitemHead[0].Clone() as OP_FeeItemHead; oldFeeItemHead.ChargeStatus = 1;//原有记录状态改为1 this.BindDb(oldFeeItemHead); oldFeeItemHead.save(); //生成新OP_FeeItemHead变化 newFeeItemHead = listFeeitemHead[0].Clone() as OP_FeeItemHead; newFeeItemHead.FeeItemHeadID = 0; newFeeItemHead.ChargeStatus = 2; newFeeItemHead.CostHeadID = newCostHead.CostHeadID; newFeeItemHead.TotalFee = newFeeItemHead.TotalFee * (-1); newFeeItemHead.OldID = oldFeeItemHead.FeeItemHeadID;//写入原退记录ID this.BindDb(newFeeItemHead); newFeeItemHead.save(); List <OP_FeeItemDetail> listFeeItemDetail = NewObject <OP_FeeItemDetail>().getlist <OP_FeeItemDetail>(" FeeItemHeadID=" + oldFeeItemHead.FeeItemHeadID); foreach (OP_FeeItemDetail oldfeeitemDetail in listFeeItemDetail) { OP_FeeItemDetail newfeeitemDetail = oldfeeitemDetail.Clone() as OP_FeeItemDetail; newfeeitemDetail.PresDetailID = 0; newfeeitemDetail.FeeItemHeadID = newFeeItemHead.FeeItemHeadID; newfeeitemDetail.TotalFee = newfeeitemDetail.TotalFee * (-1); newfeeitemDetail.Amount = oldfeeitemDetail.Amount * (-1); this.BindDb(newfeeitemDetail); newfeeitemDetail.save(); } } //生成新op_costDetail List <OP_CostDetail> costDetailList = NewObject <OP_CostDetail>().getlist <OP_CostDetail>(" costheadid=" + oldCostHead.CostHeadID); foreach (OP_CostDetail oldcostDetail in costDetailList) { OP_CostDetail newCostDetail = oldcostDetail.Clone() as OP_CostDetail; newCostDetail.CostHeadID = newCostHead.CostHeadID; newCostDetail.FeeItemHeadID = newFeeItemHead.FeeItemHeadID; newCostDetail.TotalFee = oldcostDetail.TotalFee * (-1); newCostDetail.CostDetailID = 0; this.BindDb(newCostDetail); newCostDetail.save(); } //生成新OP_CostPayMentInfo List <OP_CostPayMentInfo> costPayMentInfoList = NewObject <OP_CostPayMentInfo>().getlist <OP_CostPayMentInfo>(" costheadid=" + oldCostHead.CostHeadID); decimal oldposfee = 0; foreach (OP_CostPayMentInfo oldCostpayInfo in costPayMentInfoList) { if (oldCostpayInfo.PayMentCode == "02") { oldposfee = oldCostpayInfo.PayMentMoney; } } foreach (OP_CostPayMentInfo oldCostpayInfo in costPayMentInfoList) { OP_CostPayMentInfo newCostPayInfo = oldCostpayInfo.Clone() as OP_CostPayMentInfo; newCostPayInfo.AccountID = curAccountId; newCostPayInfo.ID = 0; newCostPayInfo.CostHeadID = newCostHead.CostHeadID; //POS if (oldCostpayInfo.PayMentCode == "02") { newCostPayInfo.PayMentMoney = 0; } //现金 if (oldCostpayInfo.PayMentCode == "01") { newCostPayInfo.PayMentMoney = (oldCostpayInfo.PayMentMoney + oldposfee) * (-1); } else { newCostPayInfo.PayMentMoney = oldCostpayInfo.PayMentMoney * (-1); } this.BindDb(newCostPayInfo); newCostPayInfo.save(); } //结账表插入汇总金额 NewObject <CommonMethod>().AddAccoutFee(newCostHead, curAccountId, 0, 1); }
/// <summary> /// 处方保存 /// </summary> /// <param name="curPalist">病人对象</param> /// <param name="prescriptions">处方对象</param> /// <param name="feeHeadCount">费用头ID</param> /// <param name="operatorid">操作员ID</param> public void SavePrescription(OP_PatList curPalist, List <Prescription> prescriptions, List <int> feeHeadCount, int operatorid) { try { DrugStoreManagement drugManager = NewObject <DrugStoreManagement>(); DateTime presdate = DateTime.Now; for (int i = 0; i < feeHeadCount.Count; i++) { int groupid = feeHeadCount[i]; List <Prescription> presModifyDetails = prescriptions.Where(p => p.PrescGroupID == groupid && p.SubTotalFlag == 0 && p.ModifyFlag == 1).ToList(); if (presModifyDetails.Count == 0) { continue; } List <Prescription> presDetails = prescriptions.Where(p => p.PrescGroupID == groupid && p.SubTotalFlag == 0).ToList(); if (presDetails.Count > 0) { OP_FeeItemHead feeitemHead = new OP_FeeItemHead(); //OP_FeeItemHead赋值 SetFeeHeadValue(feeitemHead, presDetails[0], curPalist); feeitemHead.ChargeEmpID = operatorid; decimal roundingMoney = 0; feeitemHead.TotalFee = NewObject <PrescMoneyCalculate>().GetPrescriptionTotalMoney(presDetails, out roundingMoney); feeitemHead.RoungingFee = roundingMoney; if (feeitemHead.DocPresHeadID > 0) { feeitemHead.PresDate = presDetails[0].DocPresDate; } else { feeitemHead.PresDate = presdate; } feeitemHead.RegFlag = 0; if (feeitemHead.FeeItemHeadID == 0) { feeitemHead.FeeNo = DateTime.Now.Ticks;// Convert.ToDecimal( DateTime.Now.ToString("yyyyMMddHHmmssffff"));// GetTimeStamp();//生成费用流水号 } if (Convert.ToInt32(presDetails[0].ItemType) == (int)OP_Enum.ItemType.药品) { if (presDetails[0].StatID == 100) { feeitemHead.PresType = "1";//西药处方 } else if (presDetails[0].StatID == 101) { feeitemHead.PresType = "2";//中成药处方 } else if (presDetails[0].StatID == 102) { feeitemHead.PresType = "3";//中草药处方 } } else { feeitemHead.PresType = "0";//非药品处方 } this.BindDb(feeitemHead); feeitemHead.save(); for (int j = 0; j < prescriptions.Count; j++) { if (prescriptions[j].PrescGroupID == groupid && prescriptions[j].SubTotalFlag == 0) { OP_FeeItemDetail feeDetail = new OP_FeeItemDetail(); //OP_FeeItemDetail赋值 SetFeeDetailValue(feeDetail, prescriptions[j], curPalist); if (feeDetail.Amount == 0) { throw new Exception("【" + feeDetail.ItemName + "】数量为零,请输入一个大于零的数"); } if (Convert.ToInt32(feeDetail.ItemType) == (int)ItemType.药品 && prescriptions[j].Selected == 1) { //判断实时库存 decimal storAmount = drugManager.GetStorage(feeDetail.ItemID, feeitemHead.ExecDeptID); if (storAmount < feeDetail.Amount) { throw new Exception("【" + feeDetail.ItemName + "】库存不足,请重新输入"); } } feeDetail.FeeItemHeadID = feeitemHead.FeeItemHeadID; this.BindDb(feeDetail); feeDetail.save(); prescriptions[j].FeeItemHeadID = feeitemHead.FeeItemHeadID; prescriptions[j].PresDetailID = feeDetail.PresDetailID; prescriptions[j].FeeNo = feeitemHead.FeeNo; prescriptions[j].ModifyFlag = 0; } } this.BindDb(curPalist); curPalist.save(); } } } catch (Exception err) { throw new Exception(err.Message); } }