/// <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="ids">需要确费处方明细ID</param> /// <param name="empId">确费医生ID</param> /// <param name="empName">确费医生名称</param> /// <param name="systemType">0门诊 1住院</param> /// <returns>返回取消确费成功或异常消息</returns> public string CancelThatFees(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++) { if (Convert.ToString(dtInfo.Rows[i]["ApplyStatus"]) != "2") { result.Append("项目:" + Convert.ToString(dtInfo.Rows[i]["ItemName"]) + ",结果:取消确费失败,原因:该项目还未确费\n"); continue; } int presId = Convert.ToInt32(dtInfo.Rows[i]["PresDetailID"]); EXA_MedicalConfir medical = NewDao <IThatFeeDao>().GetConfir(presId); if (medical.CancelFlag != 1) { result.Append("项目:" + Convert.ToString(dtInfo.Rows[i]["ItemName"]) + ",结果:取消确费失败,原因:不能重复取消确费\n"); continue; } if (medical.ConfirDoctorID != empId) { result.Append("项目:" + Convert.ToString(dtInfo.Rows[i]["ItemName"]) + ",结果:取消确费失败,原因:不能取消其他医生的确费记录\n"); continue; } if (medical != null) { medical.IsCancel = 1; BindDb(medical); medical.save(); } int meid = 0; //将费用表以及医技表改为取消确费状态 NewDao <IThatFeeDao>().UpdateStatus(presId, 1, 0, systemType); EXA_MedicalConfir medicalconfir = GetMedical(presId, systemType, empId, empName); meid = SaveFeeHead(medicalconfir, dtInfo.Rows[i], 0); List <EXA_MedicalConfirDetail> detailList = NewDao <IThatFeeDao>().GetConfirDetailList(medical.ConfirID);//获取确费明细记录并插入数量和金额为负的记录 foreach (EXA_MedicalConfirDetail medicaldetail in detailList) { medicaldetail.ConfirID = meid; medicaldetail.ExamItemID = medicalconfir.ItemID; medicaldetail.MarkFlag = systemType; SaveFeeDetail(medicaldetail, null, 1, systemType); } result.Append("项目:" + Convert.ToString(dtInfo.Rows[i]["ItemName"]) + ",结果:取消确费成功\n"); } return(result.ToString()); }
/// <summary> /// 生成费用头表 /// </summary> /// <param name="medicalconfir">确费实体</param> /// <param name="dr">申请数据行数据</param> /// <param name="type">取消确费标识0取消1确费</param> /// <returns>确费id</returns> private int SaveFeeHead(EXA_MedicalConfir medicalconfir, DataRow dr, int type) { medicalconfir.ApplyType = Convert.ToInt32(dr["ApplyType"]); medicalconfir.CancelFlag = type; medicalconfir.IsCancel = 0; medicalconfir.ConfirDate = DateTime.Now; medicalconfir.ExamTypeID = Convert.ToInt32(dr["ExamTypeID"]); medicalconfir.Fee = Convert.ToInt32(dr["TotalFee"]); medicalconfir.ItemID = Convert.ToInt32(dr["ItemID"]); medicalconfir.ItemName = Convert.ToString(dr["ItemName"]); medicalconfir.MemberID = Convert.ToInt32(dr["MemberID"]); medicalconfir.PatListID = Convert.ToInt32(dr["PatListID"]); medicalconfir.ConfirDeptID = Convert.ToInt32(dr["ExecuteDeptID"]); medicalconfir.ConfirDeptName = Convert.ToString(dr["DeptName"]); BindDb(medicalconfir); medicalconfir.save(); return(medicalconfir.ConfirID); }