/// <summary> /// Get the payment type fee schedule details. /// </summary> /// <param name="paymentTypeFeeSchedules">The payment type fee schedules.</param> /// <returns>paymentTypeASCFeeScheduleId</returns> public PaymentTypeFeeSchedule GetPaymentTypeFeeSchedule(PaymentTypeFeeSchedule paymentTypeFeeSchedules) { // Initialize the Stored Procedure _cmd = _db.GetStoredProcCommand("GetServiceLinesandPaymentTypes"); // Pass parameters to Stored Procedure(i.e., @ParamName), add values for _db.AddInParameter(_cmd, "@PaymentTypeID ", DbType.Int64, paymentTypeFeeSchedules.PaymentTypeId); _db.AddInParameter(_cmd, "@ContractID", DbType.Int64, paymentTypeFeeSchedules.ContractId); _db.AddInParameter(_cmd, "@ContractServiceTypeID", DbType.Int64, paymentTypeFeeSchedules.ServiceTypeId); _db.AddInParameter(_cmd, "@ServiceLineTypeId", DbType.Int64, 0); _db.AddInParameter(_cmd, "@UserName", DbType.String, paymentTypeFeeSchedules.UserName); // Retrieve the results of the Stored Procedure in Datatable DataSet paymentTypeFeeDataSet = _db.ExecuteDataSet(_cmd); if (paymentTypeFeeDataSet != null && paymentTypeFeeDataSet.Tables.Count > 0) { //populating ContractBasicInfo data if (paymentTypeFeeDataSet.Tables[0].Rows != null && paymentTypeFeeDataSet.Tables[0] != null && paymentTypeFeeDataSet.Tables[0].Rows.Count > 0) { PaymentTypeFeeSchedule paymentTypeSchedules = new PaymentTypeFeeSchedule { FeeSchedule = DBNull.Value == paymentTypeFeeDataSet.Tables[0].Rows[0]["FeeSchedule"] ? (double?)null : Convert.ToDouble(paymentTypeFeeDataSet.Tables[0].Rows[0]["FeeSchedule"]), NonFeeSchedule = DBNull.Value == paymentTypeFeeDataSet.Tables[0].Rows[0]["NonFeeSchedule"] ? (double?)null : Convert.ToDouble(paymentTypeFeeDataSet.Tables[0].Rows[0]["NonFeeSchedule"]), ClaimFieldDocId = DBNull.Value == paymentTypeFeeDataSet.Tables[0].Rows[0]["ClaimFieldDocID"] ? (long?)null : Convert.ToInt64(paymentTypeFeeDataSet.Tables[0].Rows[0]["ClaimFieldDocID"]), PaymentTypeDetailId = Convert.ToInt64(paymentTypeFeeDataSet.Tables[0].Rows[0]["PaymentTypeDetailID"]), IsObserveUnits = Convert.ToBoolean(paymentTypeFeeDataSet.Tables[0].Rows[0]["IsObserveUnits"]) }; return(paymentTypeSchedules); } } //returns response to Business layer return(null); }
/// <summary> /// Payments the type fee schedule details. /// </summary> /// <param name="contractId">The contract unique identifier.</param> /// <param name="serviceTypeId">The service type unique identifier.</param> /// <param name="paymentTypeId">The payment type unique identifier.</param> /// <param name="isEdit">if set to <c>true</c> [is edit].</param> /// <returns></returns> public ActionResult PaymentTypeFeeSchedule(long?contractId, long?serviceTypeId, int paymentTypeId, bool isEdit) { PaymentTypeFeeSchedulesViewModel modelPaymentTypeFeeSchedulesViewMode = new PaymentTypeFeeSchedulesViewModel(); if (isEdit) { PaymentTypeFeeSchedule paymentTypeFeeSchedulesForPost = new PaymentTypeFeeSchedule { ServiceTypeId = serviceTypeId, ContractId = contractId, PaymentTypeId = paymentTypeId, UserName = GetCurrentUserName() }; PaymentTypeFeeSchedule paymentTypeFeeSchedulesViewModelInfo = PostApiResponse <PaymentTypeFeeSchedule>("PaymentTypeFeeSchedule", "GetPaymentTypeFeeSchedule", paymentTypeFeeSchedulesForPost); modelPaymentTypeFeeSchedulesViewMode = AutoMapper.Mapper.Map <PaymentTypeFeeSchedule, PaymentTypeFeeSchedulesViewModel>(paymentTypeFeeSchedulesViewModelInfo); } modelPaymentTypeFeeSchedulesViewMode.ContractId = contractId; modelPaymentTypeFeeSchedulesViewMode.ServiceTypeId = serviceTypeId; modelPaymentTypeFeeSchedulesViewMode.PaymentTypeId = paymentTypeId; modelPaymentTypeFeeSchedulesViewMode.IsEdit = isEdit; return(View(modelPaymentTypeFeeSchedulesViewMode)); }
public void EvaluateWithAdjudicatedLineTest() { // Arrange _mockPaymentTypeFeeScheduleRepository = new Mock <IPaymentTypeFeeScheduleRepository>(); _target = new PaymentTypeFeeScheduleLogic(_mockPaymentTypeFeeScheduleRepository.Object); var paymentType = new PaymentTypeFeeSchedule { ValidLineIds = new List <int> { 1 }, NonFeeSchedule = 50, ServiceTypeId = 12, ClaimFieldDoc = new ClaimFieldDoc { ClaimFieldDocId = 12, ClaimFieldValues = new List <ClaimFieldValue> { new ClaimFieldValue { Identifier = "J2123", Value = "50" } } }, Conditions = new List <ICondition>() }; _target.PaymentTypeBase = paymentType; IEvaluateableClaim evaluateableClaim = new EvaluateableClaim(); evaluateableClaim.ClaimId = 123; evaluateableClaim.ClaimCharges = new List <ClaimCharge> { new ClaimCharge { Line = 1, Amount = 20, HcpcsCode = "12500", HcpcsCodeWithModifier = "12500" } }; var paymentResults = new List <PaymentResult> { new PaymentResult { Line = 1, AdjudicatedValue = 10, ServiceTypeId = 12 } }; //Act List <PaymentResult> actual = _target.Evaluate(evaluateableClaim, paymentResults, true, false); // Assert Assert.AreEqual(paymentResults.Count, actual.Count); }
public void AddNewPaymentTypeDrgPaymentIfNotNull() { var mockPaymentTypeDrgPayment = new Mock <IPaymentTypeFeeScheduleRepository>(); mockPaymentTypeDrgPayment.Setup(f => f.AddEditPaymentTypeFeeSchedule(It.IsAny <PaymentTypeFeeSchedule>())).Returns(1); PaymentTypeFeeScheduleLogic target = new PaymentTypeFeeScheduleLogic(mockPaymentTypeDrgPayment.Object); PaymentTypeFeeSchedule objAddNewPaymentTypeDrgPayment = new PaymentTypeFeeSchedule { PaymentTypeDetailId = 1 }; long actual = target.AddEditPaymentType(objAddNewPaymentTypeDrgPayment); Assert.AreEqual(1, actual); }
public void EditPaymentTypeFeeScheduleCaseMockTest() { var mockAddEditFeeScheduleDocs = new Mock <IPaymentTypeFeeScheduleRepository>(); mockAddEditFeeScheduleDocs.Setup(f => f.AddEditPaymentTypeFeeSchedule(It.IsAny <PaymentTypeFeeSchedule>())).Returns(1); PaymentTypeFeeScheduleLogic target = new PaymentTypeFeeScheduleLogic(mockAddEditFeeScheduleDocs.Object); PaymentTypeFeeSchedule objAddNewPaymentTypeFeeSchedule = new PaymentTypeFeeSchedule { PaymentTypeDetailId = 1 }; long actual = target.AddEditPaymentType(objAddNewPaymentTypeFeeSchedule); Assert.IsNotNull(actual); }
public void IsPaymentTypeConditionWithInvalidDataTest() { // Arrange _mockPaymentTypeFeeScheduleRepository = new Mock <IPaymentTypeFeeScheduleRepository>(); _target = new PaymentTypeFeeScheduleLogic(_mockPaymentTypeFeeScheduleRepository.Object); var paymentType = new PaymentTypeFeeSchedule { ValidLineIds = new List <int> { 1 }, NonFeeSchedule = 50, Conditions = new List <ICondition> { new Condition { ConditionOperator = (byte)Enums.ConditionOperation.EqualTo, RightOperand = "K2250", OperandIdentifier = (byte)Enums.OperandIdentifier.HcpcsCode, OperandType = (byte)Enums.OperandType.AlphaNumeric, PropertyColumnName = Constants.PropertyHcpcsCode, LeftOperands = new List <string> { "J2250", "12350" } } } }; IEvaluateableClaim evaluateableClaim = new EvaluateableClaim(); evaluateableClaim.ClaimId = 123; evaluateableClaim.ClaimCharges = new List <ClaimCharge> { new ClaimCharge { Line = 1, Amount = 20, RevCode = "250", HcpcsCode = "12545", HcpcsCodeWithModifier = "12545" } }; //Act bool actual = _target.IsPaymentTypeConditions(paymentType, evaluateableClaim); // Assert Assert.AreEqual(false, actual); }
public void IsMatchTest() { // Arrange _mockPaymentTypeFeeScheduleRepository = new Mock <IPaymentTypeFeeScheduleRepository>(); _target = new PaymentTypeFeeScheduleLogic(_mockPaymentTypeFeeScheduleRepository.Object); var paymentType = new PaymentTypeFeeSchedule { ValidLineIds = new List <int> { 1 }, NonFeeSchedule = 50, Conditions = new List <ICondition> { new Condition { ConditionOperator = (byte)Enums.ConditionOperation.EqualTo, RightOperand = "250", OperandIdentifier = (byte)Enums.OperandIdentifier.RevCode, OperandType = (byte)Enums.OperandType.Numeric, PropertyColumnName = Constants.PropertyRevCode, LeftOperands = new List <string> { "250", "350" } } } }; _target.PaymentTypeBase = paymentType; IEvaluateableClaim evaluateableClaim = new EvaluateableClaim(); evaluateableClaim.ClaimId = 123; evaluateableClaim.ClaimCharges = new List <ClaimCharge> { new ClaimCharge { Line = 1, Amount = 20, RevCode = "250" } }; //Act bool actual = _target.IsMatch(evaluateableClaim); // Assert Assert.AreEqual(true, actual); }
public JsonResult AddEditPaymentTypeFeeSchedule(PaymentTypeFeeSchedulesViewModel info) { long paymentTypeFeeScheduleId = 0; if (info.ClaimFieldDocId != null) { PaymentTypeFeeSchedule feeSchedule = AutoMapper.Mapper.Map <PaymentTypeFeeSchedulesViewModel, PaymentTypeFeeSchedule>(info); feeSchedule.UserName = GetCurrentUserName(); paymentTypeFeeScheduleId = PostApiResponse <long>("PaymentTypeFeeSchedule", "AddEditPaymentTypeFeeSchedule", feeSchedule); } return(paymentTypeFeeScheduleId > 0 ? Json(new { sucess = true, Id = paymentTypeFeeScheduleId, documentId = info.ClaimFieldDocId }) : Json(new { sucess = false, documentId = info.ClaimFieldDocId })); }
public void GetPaymentTypeFeeScheduleMockTest() { PaymentTypeFeeSchedule objGetPaymentTypeFeeSchedule = new PaymentTypeFeeSchedule { FeeSchedule = 1 }; var mockGetPaymentTypeFeeSchedule = new Mock <IPaymentTypeFeeScheduleRepository>(); mockGetPaymentTypeFeeSchedule.Setup(f => f.GetPaymentTypeFeeSchedule(It.IsAny <PaymentTypeFeeSchedule>())) .Returns(objGetPaymentTypeFeeSchedule); PaymentTypeFeeScheduleLogic target = new PaymentTypeFeeScheduleLogic(mockGetPaymentTypeFeeSchedule.Object); PaymentTypeFeeSchedule actual = (PaymentTypeFeeSchedule)target.GetPaymentType(null); Assert.AreEqual(1, actual.FeeSchedule); // Assert.IsNotNull(actual); }
/// <summary> /// Gets the payment type fee schedules. /// </summary> /// <param name="contractServiceTypeId">The contract service type identifier.</param> /// <param name="dtFeeScheduleTable">The dt fee schedule table.</param> /// <param name="dtDoc">The dt document.</param> /// <param name="dtDocValues">The dt document values.</param> /// <returns></returns> public static PaymentTypeFeeSchedule GetPaymentType(long contractServiceTypeId, DataTable dtFeeScheduleTable, DataTable dtDoc, DataTable dtDocValues) { PaymentTypeFeeSchedule paymentTypeFeeSchedule = null; if (dtFeeScheduleTable != null && dtFeeScheduleTable.Rows.Count > 0) { paymentTypeFeeSchedule = (from DataRow row in dtFeeScheduleTable.Rows where (row["contractServiceTypeId"] != DBNull.Value && Convert.ToInt64(row["contractServiceTypeId"]) == contractServiceTypeId) select new PaymentTypeFeeSchedule { FeeSchedule = DBNull.Value == row["FeeSchedule"] ? (double?)null : Convert.ToDouble( row["FeeSchedule"]), NonFeeSchedule = DBNull.Value == row["NonFeeSchedule"] ? (double?)null : Convert.ToDouble(row["NonFeeSchedule"]), ClaimFieldDocId = Convert.ToInt64(row["ClaimFieldDocID"]), ContractId = DBNull.Value == row["ContractId"] ? (long?)null : Convert.ToInt64( row["ContractId"]), ServiceTypeId = DBNull.Value == row["ContractServiceTypeID"] ? (long?)null : Convert.ToInt64( row["ContractServiceTypeID"]), ClaimFieldDoc = GetClaimFieldDoc( Convert.ToInt64(row["ClaimFieldDocID"]), dtDoc, dtDocValues), PaymentTypeDetailId = Convert.ToInt64(row["PaymentTypeDetailID"]), PaymentTypeId = (byte)Enums.PaymentTypeCodes.FeeSchedule, IsObserveUnits = Convert.ToBoolean(row["IsObserveUnits"]) }).FirstOrDefault(); } return(paymentTypeFeeSchedule); }
/// <summary> /// Add Edit the payment type fee schedule details. /// </summary> /// <param name="paymentTypeFeeSchedules">The payment type fee schedules.</param> /// <returns>paymentTypeASCFeeScheduleId</returns> public long AddEditPaymentTypeFeeSchedule(PaymentTypeFeeSchedule paymentTypeFeeSchedules) { //Checks if input request is not null if (paymentTypeFeeSchedules != null) { // Initialize the Stored Procedure _cmd = _db.GetStoredProcCommand("AddEditFeeSchedulePayment"); // Pass parameters to Stored Procedure(i.e., @ParamName), add values for _db.AddInParameter(_cmd, "@PaymentTypeDetailID", DbType.Int64, paymentTypeFeeSchedules.PaymentTypeDetailId); _db.AddInParameter(_cmd, "@FeeSchedule ", DbType.Decimal, paymentTypeFeeSchedules.FeeSchedule); _db.AddInParameter(_cmd, "@NonFeeSchedule ", DbType.Decimal, paymentTypeFeeSchedules.NonFeeSchedule); _db.AddInParameter(_cmd, "@PaymentTypeID ", DbType.Int64, paymentTypeFeeSchedules.PaymentTypeId); _db.AddInParameter(_cmd, "@ContractID", DbType.Int64, paymentTypeFeeSchedules.ContractId); _db.AddInParameter(_cmd, "@ContractServiceTypeID", DbType.Int64, paymentTypeFeeSchedules.ServiceTypeId); _db.AddInParameter(_cmd, "@ClaimFieldDocID", DbType.Int64, paymentTypeFeeSchedules.ClaimFieldDocId); _db.AddInParameter(_cmd, "@UserName", DbType.String, paymentTypeFeeSchedules.UserName); _db.AddInParameter(_cmd, "@IsObserveUnits", DbType.Boolean, paymentTypeFeeSchedules.IsObserveUnits); // Retrieve the results of the Stored Procedure in Datatable return(long.Parse(_db.ExecuteScalar(_cmd).ToString())); } return(0); }
public PaymentTypeFeeSchedule GetPaymentTypeFeeSchedule(PaymentTypeFeeSchedule paymentTypeFeeSchedules) { return((PaymentTypeFeeSchedule)_feeScheduleLogic.GetPaymentType(paymentTypeFeeSchedules)); }
/// <summary> /// Adds the new payment type fee schedule. /// </summary> /// <param name="paymentTypeFeeSchedules">The payment type fee schedules.</param> /// <returns></returns> public long AddEditPaymentTypeFeeSchedule(PaymentTypeFeeSchedule paymentTypeFeeSchedules) { return(_feeScheduleLogic.AddEditPaymentType(paymentTypeFeeSchedules)); }
public void EvaluatePaymentTypeWithHcpcsWithoutIsObervervedServiceUnit() { List <PaymentResult> paymentResults = new List <PaymentResult> { new PaymentResult { ClaimId = 123, ServiceTypeId = 1, Line = 2 }, new PaymentResult { ClaimId = 123, Line = 1, ServiceTypeId = 1 } }; PaymentTypeFeeSchedule paymentTypeFeeSchedule = new PaymentTypeFeeSchedule { Conditions = new List <ICondition> { new Condition { ConditionOperator = (byte)Enums.ConditionOperation.EqualTo, LeftOperands = new List <string> { "ABCDE" }, OperandType = (byte)Enums.OperandIdentifier.HcpcsCode, RightOperand = "ABCDE" } }, ClaimFieldDoc = new ClaimFieldDoc { ClaimFieldValues = new List <ClaimFieldValue> { new ClaimFieldValue { Identifier = "40101", Value = "100" }, new ClaimFieldValue { Identifier = "3010126", Value = "100" } } }, ServiceTypeId = 1, ValidLineIds = new List <int> { 1, 2 }, HcpcsCode = "ABCDE", NonFeeSchedule = 50, FeeSchedule = 75, IsObserveUnits = false }; // Arrange var mockContractServiceTypeLogic = new Mock <IContractServiceTypeLogic>(); var mockPaymentResultLogic = new Mock <IPaymentResultLogic>(); mockPaymentResultLogic.Setup( x => x.Evaluate(It.IsAny <EvaluateableClaim>(), It.IsAny <List <PaymentResult> >(), It.IsAny <bool>(), It.IsAny <bool>())).Returns(paymentResults); Mock <IPaymentTypeFeeScheduleRepository> paymentTypeFeeScheduleRepository = new Mock <IPaymentTypeFeeScheduleRepository>(); paymentTypeFeeScheduleRepository.Setup(x => x.GetPaymentTypeFeeSchedule(It.IsAny <PaymentTypeFeeSchedule>())) .Returns(paymentTypeFeeSchedule); var target = new PaymentTypeFeeScheduleLogic(paymentTypeFeeScheduleRepository.Object) { PaymentTypeBase = paymentTypeFeeSchedule }; // _target.Contract = contract; IEvaluateableClaim evaluateableClaim = new EvaluateableClaim(); evaluateableClaim.ClaimId = 123; evaluateableClaim.ClaimTotal = 100; evaluateableClaim.ClaimCharges = new List <ClaimCharge> { new ClaimCharge { Line = 1, Amount = 20, RevCode = "250", HcpcsCode = "3000126", Units = 2, HcpcsCodeWithModifier = "3000126", HcpcsModifiers = "261" }, new ClaimCharge { Line = 2, Amount = 200, RevCode = "250", HcpcsCode = "40101", Units = 2, HcpcsCodeWithModifier = "4010126", HcpcsModifiers = "26" } }; List <PaymentResult> updatedPaymentResults = new List <PaymentResult> { new PaymentResult { ClaimId = 123, ContractId = 1, AdjudicatedValue = 110 }, new PaymentResult { ClaimId = 123, Line = 1, ContractId = 1, AdjudicatedValue = 110 } }; Mock <ContractBaseLogic> mockContractBaseLogic = new Mock <ContractBaseLogic>(); mockContractServiceTypeLogic.Setup(x => x.IsValidServiceType()).Returns(true); mockContractServiceTypeLogic.Setup(x => x.Evaluate(evaluateableClaim, paymentResults, false, false)) .Returns(updatedPaymentResults); mockContractBaseLogic.SetupAllProperties(); //Act List <PaymentResult> actual = target.EvaluatePaymentType(evaluateableClaim, paymentResults, false, false); // Assert var firstOrDefault = paymentResults.FirstOrDefault(x => x.AdjudicatedValue != null); if (firstOrDefault != null) { Assert.AreEqual(75, firstOrDefault.AdjudicatedValue); } Assert.AreEqual(2, actual.Count); }