/// <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);
        }
Beispiel #2
0
        /// <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);
        }
Beispiel #4
0
        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);
        }
Beispiel #8
0
        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);
        }