/// <summary> /// 智审控费接口调用 /// </summary> /// <param name="myTb"></param> /// <param name="MNGType"></param> /// <param name="Kind"></param> /// <param name="BinID"></param> /// <param name="BabyID"></param> /// <returns></returns> private bool DoVaildYbFee(DataTable myTb, int MNGType, int Kind, Guid BinID, long BabyID, out string strMsg) { BmiAuditClass clsAdtChk = new BmiAuditClass(); ClsAuditCheck cls = new ClsAuditCheck(_DataBase); strMsg = ""; string strRet = ""; string zyh = ""; string yblx = ""; string ybzlx = ""; try { string inAGENCIES_ID = ""; string ssql = string.Format("select YBLX,XZLX,INPATIENT_NO from VI_ZY_VINPATIENT_ALL where INPATIENT_ID ='{0}' ", BinID.ToString()); try { DataTable dtInp = _DataBase.GetDataTable(ssql); if (dtInp == null || dtInp.Rows.Count <= 0) { throw new Exception("未找到该住院号的病人信息\r"); } yblx = dtInp.Rows[0]["YBLX"].ToString().Trim(); ybzlx = dtInp.Rows[0]["XZLX"].ToString().Trim(); zyh = dtInp.Rows[0]["INPATIENT_NO"].ToString().Trim(); if (yblx.Equals("1")) { inAGENCIES_ID = "1"; } else if (yblx.Equals("3") && ybzlx.Equals("55")) { inAGENCIES_ID = "2"; } } catch (Exception ex) { throw new Exception("未找到该住院号的病人信息\r" + ex.Message); } //wait to filter myTb DataTable dtVal = DoGetValidateFeeInfo(); DataTable dtFeeDetails = cls.GetPostFeeInfo(dtVal, MNGType, Kind, BinID, BabyID); decimal sum = 0M; DataTable dtDetail = cls.GetDetailFeeInfo(dtFeeDetails, yblx, ybzlx, out sum); //无上传明细,不审 if (dtDetail.Rows.Count <= 0) { return(true); } DataTable dtMain = ClsAuditCheck.RetAfSetMainInfo(BinID.ToString(), zyh, sum, _DataBase); strRet = clsAdtChk.ClaimAudit4Hospital_N(dtMain, dtDetail); if (strRet.Equals("0") || strRet.Equals("2")) { ///返回: 0:审核失败 //1:审核结果正常 //2:调用步骤出错 //3:审核结果有违规(取消) //4:审核结果有违规(保存);申明方法如下: string err = (strRet.Equals("0") ? "医保智审【审核失败!】" : "医保智审【调用步骤出错!】"); err = err + "\r\r返回原因:" + clsAdtChk.l_error_message; throw new Exception(err + "\r\r请手动上传该病人费用到中公网!"); } else if (strRet.Equals("3")) { //取消,不保存上传费用 //但是his费用已经产生 //强行保存这部分费用 strRet = clsAdtChk.ClaimAudit4Hospital_S(dtMain, dtDetail); string err = (strRet.Equals("0") ? "医保智审【审核失败!】" : "医保智审【调用步骤出错!】"); err = err + "\r\r返回原因:" + clsAdtChk.l_error_message; if (strRet.Equals("0") || strRet.Equals("2")) { throw new Exception("数据保存成功,上传中公网数据成功! \r\t医保智能审核检测到存在违规数据,请停止违规医嘱,并冲正费用,再手动上传该病人所有费用到中公网!"); } // bool bSc = cls.UpdateScbz(dtDetail); throw new Exception("数据保存成功,上传中公网数据成功," + (bSc ? "成功更新本地标识" : "失败更新本地标识") + "!\r\t医保智能审核检测到存在违规数据,请停止违规医嘱,并冲正费用! \r\t请在 问题数据处理界面 重新查看该医嘱"); } //强制提交是否需要日志记录或者相关信息 wait jchl strMsg = ""; bool bSc1 = cls.UpdateScbz(dtDetail); if (!bSc1) { throw new Exception("数据保存成功,上传中公网数据成功,失败更新本地标识!请手动上传该病人费用!"); } return(true); } catch (Exception ex) { strMsg = "医保智审数据上传错误" + ":" + ex.Message.ToString().Trim(); myFunc.SaveLog(FrmMdiMain.CurrentDept.DeptId, FrmMdiMain.CurrentUser.EmployeeId, "医保智审", BinID.ToString() + "医保智审数据上传错误" + ":" + ex.Message.ToString().Trim(), 1, 4); //wait log return(false); } }
/// <summary> /// 智审控费接口调用 /// </summary> /// <param name="myTb"></param> /// <param name="MNGType">全部9</param> /// <param name="Kind">所有0</param> /// <param name="BinID"></param> /// <param name="BabyID">只处理0</param> /// <returns></returns> private bool DoVaildYbFee(DataTable myTb, int MNGType, int Kind, Guid BinID, string zyh, long BabyID, out string strMsg) { BabyID = 0;//不处理小孩医嘱和费用 BmiAuditClass clsAdtChk = new BmiAuditClass(); ClsAuditCheck cls = new ClsAuditCheck(database); strMsg = ""; string strRet = ""; //string serr = "0"; string yblx = ""; string ybzlx = ""; try { string inAGENCIES_ID = ""; //string ssql = string.Format("select YBLX,XZLX,INPATIENT_NO from VI_ZY_VINPATIENT_ALL where INPATIENT_ID ='{0}' ", BinID.ToString()); string ssql = string.Format("select YBLX,XZLX,INPATIENT_NO from ZY_INPATIENT where INPATIENT_ID ='{0}' ", BinID.ToString()); try { DataTable dtInp = database.GetDataTable(ssql); if (dtInp == null || dtInp.Rows.Count <= 0) { throw new Exception("未找到该住院号的病人信息\r"); } yblx = dtInp.Rows[0]["YBLX"].ToString().Trim(); ybzlx = dtInp.Rows[0]["XZLX"].ToString().Trim(); zyh = dtInp.Rows[0]["INPATIENT_NO"].ToString().Trim(); if (yblx.Equals("1")) { inAGENCIES_ID = "1"; } else if (yblx.Equals("3") && ybzlx.Equals("55")) { inAGENCIES_ID = "2"; } } catch (Exception ex) { throw new Exception("未找到该住院号的病人信息\r" + ex.Message); } DataTable dtFeeDetails = GetPostFeeInfo(myTb, MNGType, Kind, BinID, BabyID); if (dtFeeDetails.Rows.Count <= 0) { //throw new Exception("该病人没有需要上传的费用明细"); return(false); } //serr += "2"; decimal sum = 0M; DataTable dtDetail = cls.GetDetailFeeInfo(dtFeeDetails, yblx, ybzlx, true, out sum); DataTable dtMain = ClsAuditCheck.RetAfSetMainInfo(BinID.ToString(), zyh, sum, true, database); if (dtMain.Rows.Count != 1) { //throw new Exception("该病人主单信息不唯一"); return(false); } if (dtMain.Rows.Count != 1 || dtDetail.Rows.Count <= 0) { return(false); } //serr += "4"; strRet = clsAdtChk.ClaimAudit4Hospital_S(dtMain, dtDetail); if (strRet.Equals("0") || strRet.Equals("2")) { ///返回: 0:审核失败 //1:审核结果正常 //2:调用步骤出错 //3:审核结果有违规(取消) //4:审核结果有违规(保存);申明方法如下: string err = (strRet.Equals("0") ? "医保智审【审核失败!】" : "医保智审【调用步骤出错!】"); err = err + "\r\r返回原因:" + clsAdtChk.l_error_message; throw new Exception(err + " \r\r请手动上传该病人费用到中公网!"); } return(true); } catch (Exception ex) { strMsg = "医保智审数据上传错误" + ":" + ex.Message.ToString().Trim(); myFunc.SaveLog(FrmMdiMain.CurrentDept.DeptId, FrmMdiMain.CurrentUser.EmployeeId, "医保智审", BinID.ToString() + "医保智审数据上传错误" + ":" + ex.Message.ToString().Trim(), 1, 4); //wait log return(false); } }
/// <summary> /// 删除上传费用,重置上传标志[] /// </summary> /// <param name="inpId"></param> /// <returns></returns> private bool DoDelInpFeeInfo(string inpId) { BmiAuditClass clsAdtChk = new BmiAuditClass(); try { string inAGENCIES_ID = ""; string ssql = string.Format("select YBLX,XZLX,INPATIENT_NO from VI_ZY_VINPATIENT_ALL where INPATIENT_ID ='{0}' ", inpId); string yblx = ""; string ybzlx = ""; string impNo = ""; string mainID = ""; try { DataTable dtInp = database.GetDataTable(ssql); if (dtInp == null || dtInp.Rows.Count <= 0) { throw new Exception("未找到该住院号的病人信息\r"); } yblx = dtInp.Rows[0]["YBLX"].ToString().Trim(); ybzlx = dtInp.Rows[0]["XZLX"].ToString().Trim(); impNo = dtInp.Rows[0]["INPATIENT_NO"].ToString().Trim(); if (yblx.Equals("1")) { inAGENCIES_ID = "1"; mainID = inpId; } else if (yblx.Equals("3") && ybzlx.Equals("55")) { inAGENCIES_ID = "2"; //获取医保主单 DataTable dtYbDjInfo = ClsAuditCheck.GetOldYbdjInfo(impNo, yblx, ybzlx, database); mainID = dtYbDjInfo.Rows[0]["akc190"] == null ? "" : dtYbDjInfo.Rows[0]["akc190"].ToString().Trim(); } } catch (Exception ex) { throw new Exception("未找到该住院号的病人信息\r" + ex.Message); } string sRet = clsAdtChk.deleteClaim4Hospital(mainID, inAGENCIES_ID); //string sRet = "1"; if (sRet.Trim().Equals("0")) { throw new Exception("重审删除主单数据返回出错!"); } else if (sRet.Trim().Equals("1") || sRet.Trim().Equals("2")) { //先清除主单,再更新标志,会多传一部分费用【就控费来说:比先更新标志,在清除主单 少传数据好】 string strSql = string.Format(@"update ZY_YBZNSH_Info set scbz=0 where inpatient_id='{0}' ", inpId); int iRet = database.DoCommand(strSql); if (iRet > 0) { //记录重审 重置上传标志位 的数据行【并行操作 可能实际上传数据行多于实际数据行 】 myFunc.SaveLog(FrmMdiMain.CurrentDept.DeptId, FrmMdiMain.CurrentUser.EmployeeId, "医保智审", inpId + " 重审重置上传标志返回数据行【" + iRet + "行】", 1, 4); } else { throw new Exception(" 重审重置上传标志返回数据行【" + iRet + "行】"); } } return(true);//1:成功 0:失败 } catch (Exception ex) { myFunc.SaveLog(FrmMdiMain.CurrentDept.DeptId, FrmMdiMain.CurrentUser.EmployeeId, "医保智审", inpId + " 删除重传操作错误:" + ex.Message, 1, 4); MessageBox.Show("医保智审-- 删除重传操作错误:" + ex.Message, "提示", MessageBoxButtons.OK, MessageBoxIcon.Warning); return(false); } }
/// <summary> /// 智审控费接口调用 /// </summary> /// <param name="myTb"></param> /// <param name="MNGType">全部9</param> /// <param name="Kind">所有0</param> /// <param name="BinID"></param> /// <param name="BabyID">只处理0</param> /// <returns></returns> private bool DoVaildYbFee(DataTable myTb, int MNGType, int Kind, Guid BinID, long BabyID, bool IsDelOrd, out string strMsg) { BabyID = 0;//不处理小孩医嘱和费用 BmiAuditClass clsAdtChk = new BmiAuditClass(); ClsAuditCheck cls = new ClsAuditCheck(database); strMsg = ""; string strRet = ""; string yblx = ""; string ybzlx = ""; string zyh = ""; try { string inAGENCIES_ID = ""; string ssql = string.Format("select YBLX,XZLX,INPATIENT_NO from VI_ZY_VINPATIENT_ALL where INPATIENT_ID ='{0}' ", BinID.ToString()); try { DataTable dtInp = database.GetDataTable(ssql); if (dtInp == null || dtInp.Rows.Count <= 0) { throw new Exception("未在病人信息\r"); } yblx = dtInp.Rows[0]["YBLX"].ToString().Trim(); ybzlx = dtInp.Rows[0]["XZLX"].ToString().Trim(); zyh = dtInp.Rows[0]["INPATIENT_NO"].ToString().Trim(); if (yblx.Equals("1")) { inAGENCIES_ID = "1"; } else if (yblx.Equals("3") && ybzlx.Equals("55")) { inAGENCIES_ID = "2"; } } catch (Exception ex) { throw new Exception("未找到该住院号的病人信息\r" + ex.Message); } if (IsDelOrd) { //wait to filter myTb DataTable dtVal = DoGetValidateFeeInfo(myTb, MNGType, Kind); //当天首次执行的医嘱 与开单时自动上传的未计费医嘱当天重复 需删除开单上传的费用 DataTable dtDel = cls.GetNoneFeeOrdInfo(dtVal, MNGType, Kind, BinID, BabyID); if (dtDel != null && dtDel.Rows.Count > 0) { for (int i = 0; i < dtDel.Rows.Count; i++) { string ordId = dtDel.Rows[i]["order_id"].ToString(); strRet = clsAdtChk.deleteDetail4Hospital(BinID.ToString(), ordId, inAGENCIES_ID); if (strRet.Trim().Equals("0")) { //日志记录wait log myFunc.SaveLog(FrmMdiMain.CurrentDept.DeptId, FrmMdiMain.CurrentUser.EmployeeId, "医保智审", "删除医嘱明细--病人:" + BinID.ToString() + " 医嘱:" + ordId + " 返回结果:" + strRet, 1, 4); } } } } DataTable dtFeeDetails = cls.GetPostFeeInfo(myTb, MNGType, Kind, BinID, BabyID); decimal sum = 0M; DataTable dtDetail = cls.GetDetailFeeInfo(dtFeeDetails, yblx, ybzlx, out sum); DataTable dtMain = ClsAuditCheck.RetAfSetMainInfo(BinID.ToString(), zyh, sum, database); strRet = clsAdtChk.ClaimAudit4Hospital_N(dtMain, dtDetail); if (strRet.Equals("0") || strRet.Equals("2")) { ///返回: 0:审核失败 //1:审核结果正常 //2:调用步骤出错 //3:审核结果有违规(取消) //4:审核结果有违规(保存);申明方法如下: string err = (strRet.Equals("0") ? "医保智审【审核失败!】" : "医保智审【调用步骤出错!】"); err = err + "\r\r返回原因:" + clsAdtChk.l_error_message; throw new Exception(err + " \r\r请手动上传该病人费用到中公网!"); } else if (strRet.Equals("3")) { //取消,不保存上传费用 //但是his费用已经产生 //强行保存这部分费用 strRet = clsAdtChk.ClaimAudit4Hospital_S(dtMain, dtDetail); string err = (strRet.Equals("0") ? "医保智审【审核失败!】" : "医保智审【调用步骤出错!】"); err = err + "\r\r返回原因:" + clsAdtChk.l_error_message; if (strRet.Equals("0") || strRet.Equals("2")) { throw new Exception("数据保存成功,上传中公网数据成功! \r\r 医保智能审核检测到存在违规数据,请停止违规医嘱,并冲正费用,再手动上传该病人所有费用到中公网!"); } // bool bSc = cls.UpdateScbz(dtDetail); throw new Exception("数据保存成功,上传中公网数据成功," + (bSc ? "成功更新本地标识" : "失败更新本地标识") + "!\r\r医保智能审核检测到存在违规数据,请停止违规医嘱,并冲正费用! \r\r请在 住院医保费用重审界面通过违规查询功能 重新查看违规明细!"); } //强制提交是否需要日志记录或者相关信息 wait jchl strMsg = ""; bool bSc1 = cls.UpdateScbz(dtDetail); if (!bSc1) { throw new Exception("数据保存成功,上传中公网数据成功,失败更新本地标识!请手动上传该病人费用!"); } return(true); } catch (Exception ex) { strMsg = "医保智审" + ":" + ex.Message.ToString().Trim(); myFunc.SaveLog(FrmMdiMain.CurrentDept.DeptId, FrmMdiMain.CurrentUser.EmployeeId, "医保智审", BinID.ToString() + "医保智审数据上传错误" + ":" + ex.Message.ToString().Trim(), 1, 4); //wait log return(false); } }
//重审已上传数据 private void btnReCheck_Click(object sender, EventArgs e) { this.Cursor = PubStaticFun.WaitCursor(); BmiAuditClass clsAdtChk = new BmiAuditClass(); try { string zyh = txtZyh.Text.Trim(); if (string.IsNullOrEmpty(zyh)) { MessageBox.Show("请输入住院号!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Warning); return; } string strSql = string.Format("select INPATIENT_ID,YBLX,XZLX from VI_ZY_VINPATIENT_ALL where INPATIENT_NO ='{0}' and {2}='{1}' ", zyh, _iYsHs == 0 ? InstanceForm.BCurrentDept.DeptId.ToString() : InstanceForm.BCurrentDept.WardId, _iYsHs == 0 ? "DEPT_ID" : "ward_id"); string inp = ""; string yblx = ""; string ybzlx = ""; string mainID = ""; try { DataTable dtInp = database.GetDataTable(strSql); if (dtInp == null || dtInp.Rows.Count <= 0) { throw new Exception("未在本科室找到该住院号:" + zyh + " 的病人信息\r"); } inp = dtInp.Rows[0]["INPATIENT_ID"].ToString().Trim(); yblx = dtInp.Rows[0]["YBLX"].ToString().Trim(); ybzlx = dtInp.Rows[0]["XZLX"].ToString().Trim(); } catch (Exception ex) { throw new Exception("未在本科室找到该住院号:" + zyh + " 的病人信息\r" + ex.Message); } bool CanAudit = ClsAuditCheck.CheckIsAuditCheck(inp, database);//是否需要智审 if (!CanAudit) { MessageBox.Show("该病人不满足进行智审判断条件", "提示", MessageBoxButtons.OK, MessageBoxIcon.Warning); return; } string inAGENCIES_ID = ""; if (yblx.Equals("1")) { inAGENCIES_ID = "1"; mainID = inp; } else if (yblx.Equals("3") && ybzlx.Equals("55")) { inAGENCIES_ID = "2"; //获取医保主单 DataTable dtYbDjInfo = ClsAuditCheck.GetOldYbdjInfo(zyh, yblx, ybzlx, database); mainID = dtYbDjInfo.Rows[0]["akc190"] == null ? "" : dtYbDjInfo.Rows[0]["akc190"].ToString().Trim(); } //inAGENCIES_ID :保险ID 1市直医保 2省直医保 string sRet = clsAdtChk.ReCheckLoadInfo(mainID, inAGENCIES_ID); if (sRet.Trim().Equals("0")) { MessageBox.Show("审核返回错误,请重新操作!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Warning); } else if (sRet.Trim().Equals("1")) { MessageBox.Show("已上传费用审核通过", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information); } } catch (Exception ex) { MessageBox.Show("审核出错" + ex.Message, "提示", MessageBoxButtons.OK, MessageBoxIcon.Warning); } finally { this.Cursor = Cursors.Arrow; } }