Пример #1
0
        /// <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);
            }
        }
Пример #2
0
        /// <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);
            }
        }
Пример #3
0
        /// <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);
            }
        }
Пример #4
0
        /// <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);
            }
        }
Пример #5
0
        //重审已上传数据
        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;
            }
        }