Esempio n. 1
0
        /// <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());
        }
Esempio n. 2
0
        /// <summary>
        /// 获取要保存确费对象
        /// </summary>
        /// <param name="presId">明细ID</param>
        /// <param name="systemType">类型 0门诊 1住院</param>
        /// <param name="empId">医生ID</param>
        /// <param name="empName">医生名称</param>
        /// <returns>确费实体对象</returns>
        private EXA_MedicalConfir GetMedical(int presId, int systemType, int empId, string empName)
        {
            EXA_MedicalConfir medicalconfir = new EXA_MedicalConfir();

            medicalconfir.PresDetailID     = presId;
            medicalconfir.MarkFlag         = systemType;
            medicalconfir.ConfirDoctorID   = empId;
            medicalconfir.ConfirDoctorName = empName;
            return(medicalconfir);
        }
Esempio n. 3
0
        /// <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());
        }
Esempio n. 4
0
 /// <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);
 }
Esempio n. 5
0
        /// <summary>
        /// 检查该记录是否已经确费
        /// </summary>
        /// <param name="presId">处方明细ID</param>
        /// <returns>返回true存在</returns>
        private bool IsExist(int presId)
        {
            EXA_MedicalConfir medical = NewDao <IThatFeeDao>().GetConfir(presId);

            if (medical != null)
            {
                if (medical.CancelFlag == 0)
                {
                    return(true);
                }
                else
                {
                    return(false);
                }
            }
            else
            {
                return(true);
            }
        }