/// <summary> /// 确费操作 /// </summary> /// <param name="ids">需要确费处方明细ID</param> /// <param name="empId">确费医生ID</param> /// <param name="empName">确费医生名称</param> /// <param name="systemType">0门诊 1住院</param> /// <returns>返回操作异常或成功消息</returns> public string ThatFees(string ids, int empId, string empName, int systemType) { StringBuilder result = new StringBuilder(); DataTable dtInfo = NewDao <IThatFeeDao>().ConfigInfo(ids);//获取医技项目详细信息 for (int i = 0; i < dtInfo.Rows.Count; i++) { decimal totalFee = Convert.ToDecimal(dtInfo.Rows[i]["TotalFee"]); int presId = Convert.ToInt32(dtInfo.Rows[i]["PresDetailID"]); if (totalFee <= 0) { result.Append("项目:" + Convert.ToString(dtInfo.Rows[i]["ItemName"]) + ",结果:金额为0不能确费\n"); continue; } if (systemType == 0 && !GetPayFlag(presId)) { result.Append("项目:" + Convert.ToString(dtInfo.Rows[i]["ItemName"]) + ",结果:该项目已申请退费\n"); continue; } if (Convert.ToString(dtInfo.Rows[i]["IsReturns"]) != "0") { result.Append("项目:" + Convert.ToString(dtInfo.Rows[i]["ItemName"]) + ",结果:该项目已退款\n"); continue; } if (Convert.ToString(dtInfo.Rows[i]["ApplyStatus"]) != "1") { result.Append("项目:" + Convert.ToString(dtInfo.Rows[i]["ItemName"]) + ",结果:不能重复确费\n"); continue; } EXA_MedicalConfir medical = NewDao <IThatFeeDao>().GetConfir(presId); if (medical != null && medical.CancelFlag == 0) { medical.IsCancel = 1; BindDb(medical); medical.save(); } int meid = 0; NewDao <IThatFeeDao>().UpdateStatus(presId, 2, 1, systemType); //将费用表以及医技表改为确费状态 EXA_MedicalConfir medicalconfir = GetMedical(presId, systemType, empId, empName); meid = SaveFeeHead(medicalconfir, dtInfo.Rows[i], 1); //插入确费记录 DataTable dtfee = GetFeeDt(systemType, presId); for (int j = 0; j < dtfee.Rows.Count; j++) { EXA_MedicalConfirDetail medicaldetail = new EXA_MedicalConfirDetail(); medicaldetail.ConfirID = meid; medicaldetail.ExamItemID = medicalconfir.ItemID; medicaldetail.MarkFlag = systemType; SaveFeeDetail(medicaldetail, dtfee.Rows[j], 0, systemType);//插入确费费用明细记录 } result.Append("项目:" + Convert.ToString(dtInfo.Rows[i]["ItemName"]) + ",结果:确费成功\n"); } return(result.ToString()); }
/// <summary> /// 生成费用明细 /// </summary> /// <param name="medicaldetail">确费明细实体</param> /// <param name="dr">数据行</param> /// <param name="type">0新增1修改</param> /// <param name="systemType">0门诊 1住院</param> private void SaveFeeDetail(EXA_MedicalConfirDetail medicaldetail, DataRow dr, int type, int systemType) { if (type == 0) { if (systemType == 0) { medicaldetail.FeeDetailID = Convert.ToInt32(dr["PresDetailID"]); medicaldetail.ItemPrice = Convert.ToDecimal(dr["RetailPrice"]); medicaldetail.Unit = Convert.ToString(dr["MiniUnit"]); } else { medicaldetail.FeeDetailID = Convert.ToInt32(dr["OrderID"]); medicaldetail.ItemPrice = Convert.ToDecimal(dr["SellPrice"]); medicaldetail.Unit = Convert.ToString(dr["Unit"]); } medicaldetail.ItemID = Convert.ToInt32(dr["ItemID"]); medicaldetail.ItemName = Convert.ToString(dr["ItemName"]); medicaldetail.TotalFee = Convert.ToDecimal(dr["TotalFee"]); medicaldetail.Amount = Convert.ToInt32(dr["Amount"]); } else { medicaldetail.ConfirDetailID = 0; medicaldetail.TotalFee = -medicaldetail.TotalFee; medicaldetail.Amount = -medicaldetail.Amount; } BindDb(medicaldetail); medicaldetail.save(); }