示例#1
0
        /// <summary>
        /// Gets the type of the payment.
        /// </summary>
        /// <param name="contractId">The contract identifier.</param>
        /// <param name="contractServiceTypeId">The contract service type identifier.</param>
        /// <param name="medicareSequesterData">The medicare sequester data.</param>
        /// <returns></returns>
        // ReSharper disable UnusedParameter.Global - As if Future Medicare Sequester we need to apply at service-type level we don't need to change much logic.
        public static PaymentTypeMedicareSequester GetPaymentType(long?contractId, long?contractServiceTypeId, DataTable medicareSequesterData)
// ReSharper restore UnusedParameter.Global
        {
            PaymentTypeMedicareSequester paymentTypeMedicareSequester = null;

            if (medicareSequesterData != null && medicareSequesterData.Rows.Count > 0)
            {
                paymentTypeMedicareSequester = (from DataRow row in medicareSequesterData.Rows
                                                where
                                                ((row["ContractId"] != DBNull.Value &&
                                                  GetValue <long>(row["ContractId"], typeof(long)) == contractId))
                                                select new PaymentTypeMedicareSequester
                {
                    ContractId = DBNull.Value == row["ContractId"]
                                               ? (long?)null
                                               : GetValue <long>(
                        row["ContractId"], typeof(long)),
                    Percentage = GetValue <long>(
                        row["Percentage"], typeof(long)),
                    PaymentTypeDetailId = GetValue <long>(row["PaymentTypeDetailID"], typeof(long)),
                    PaymentTypeId = (byte)Enums.PaymentTypeCodes.MedicareSequester
                }).FirstOrDefault();
            }
            return(paymentTypeMedicareSequester);
        }
示例#2
0
        /// <summary>
        /// Get Payment Type Medicare Sequester
        /// </summary>
        /// <param name="contractId"></param>
        /// <param name="serviceTypeId"></param>
        /// <param name="paymentTypeId"></param>
        /// <param name="isEdit"></param>
        /// <returns></returns>
        public ActionResult PaymentTypeMedicareSequester(long?contractId, long?serviceTypeId, int paymentTypeId, bool isEdit)
        {
            PaymentTypeMedicareSequesterViewModel paymentTypeMedicareSequesterViewModel = new PaymentTypeMedicareSequesterViewModel();

            if (isEdit)
            {
                PaymentTypeMedicareSequester paymentTypeMedicareSequester = new PaymentTypeMedicareSequester
                {
                    ServiceTypeId = serviceTypeId,
                    ContractId    = contractId,
                    PaymentTypeId = paymentTypeId,
                    UserName      = GetCurrentUserName()
                };
                PaymentTypeMedicareSequester paymentTypeMedicareSequesteViewModelInfo =
                    PostApiResponse <PaymentTypeMedicareSequester>(Constants.PaymentTypeMedicareSequester, Constants.GetPaymentMedicareSequester, paymentTypeMedicareSequester);

                paymentTypeMedicareSequesterViewModel =
                    AutoMapper.Mapper.Map <PaymentTypeMedicareSequester, PaymentTypeMedicareSequesterViewModel>(paymentTypeMedicareSequesteViewModelInfo);
            }

            paymentTypeMedicareSequesterViewModel.ContractId    = contractId;
            paymentTypeMedicareSequesterViewModel.ServiceTypeId = serviceTypeId;
            paymentTypeMedicareSequesterViewModel.PaymentTypeId = paymentTypeId;
            paymentTypeMedicareSequesterViewModel.IsEdit        = isEdit;

            return(View(paymentTypeMedicareSequesterViewModel));
        }
示例#3
0
        /// <summary>
        /// Get Payment Type Medicare Sequester.
        /// </summary>
        /// <param name="paymentTypeMedicareSequester"></param>
        /// <returns></returns>
        public PaymentTypeMedicareSequester GetPaymentTypeMedicareSequester(PaymentTypeMedicareSequester paymentTypeMedicareSequester)
        {
            // Initialize the Stored Procedure
            _databaseCommand = _databaseObj.GetStoredProcCommand("GetServiceLinesandPaymentTypes");
            // Pass parameters to Stored Procedure(i.e., @ParamName), add values for
            _databaseObj.AddInParameter(_databaseCommand, "@PaymentTypeID ", DbType.Int64, paymentTypeMedicareSequester.PaymentTypeId);
            _databaseObj.AddInParameter(_databaseCommand, "@ContractID", DbType.Int64, paymentTypeMedicareSequester.ContractId);
            _databaseObj.AddInParameter(_databaseCommand, "@ContractServiceTypeID", DbType.Int64, paymentTypeMedicareSequester.ServiceTypeId);
            _databaseObj.AddInParameter(_databaseCommand, "@ServiceLineTypeId", DbType.Int64, 0);
            _databaseObj.AddInParameter(_databaseCommand, "@UserName", DbType.String, paymentTypeMedicareSequester.UserName);

            // Retrieve the results of the Stored Procedure in Datatable
            DataSet paymentTypePerCaseDataSet = _databaseObj.ExecuteDataSet(_databaseCommand);

            if (paymentTypePerCaseDataSet != null && paymentTypePerCaseDataSet.Tables.Count > 0 &&
                (paymentTypePerCaseDataSet.Tables[0] != null && paymentTypePerCaseDataSet.Tables[0].Rows.Count > 0))
            {
                PaymentTypeMedicareSequester paymentMedicareSequester = new PaymentTypeMedicareSequester
                {
                    Percentage =
                        GetValue <double?>(paymentTypePerCaseDataSet.Tables[0].Rows[0]["Percentage"], typeof(double)),
                    PaymentTypeDetailId =
                        GetValue <long>(paymentTypePerCaseDataSet.Tables[0].Rows[0]["PaymentTypeDetailID"], typeof(long))
                };
                return(paymentMedicareSequester);
            }

            //returns response to Business layer
            return(null);
        }
示例#4
0
        public JsonResult AddEditPaymentMedicareSequester(PaymentTypeMedicareSequesterViewModel info)
        {
            PaymentTypeMedicareSequester medicareSequesterPaymentInfo = AutoMapper.Mapper.Map <PaymentTypeMedicareSequesterViewModel, PaymentTypeMedicareSequester>(info);

            //Get the Name of User logged in
            medicareSequesterPaymentInfo.UserName = GetCurrentUserName();
            long medicareSequesterId = PostApiResponse <long>(Constants.PaymentTypeMedicareSequester, Constants.AddEditPaymentMedicareSequester, medicareSequesterPaymentInfo);

            return(medicareSequesterId > 0 ? Json(new { sucess = true, Id = medicareSequesterId }) : Json(new { sucess = false }));
        }
        public void AddNewPaymentTypeMedicareSequesterValueTest()
        {
            var mockAddNewPaymentTypeMedicareSequester = new Mock <IPaymentTypeMedicareSequesterRepository>();

            mockAddNewPaymentTypeMedicareSequester.Setup(f => f.AddEditPaymentTypeMedicareSequester(It.IsAny <PaymentTypeMedicareSequester>())).Returns(1);
            PaymentTypeMedicareSequesterLogic target = new PaymentTypeMedicareSequesterLogic(mockAddNewPaymentTypeMedicareSequester.Object);
            PaymentTypeMedicareSequester      paymentTypeMedicareSequester = new PaymentTypeMedicareSequester {
                PaymentTypeDetailId = 1
            };
            long actual = target.AddEditPaymentType(paymentTypeMedicareSequester);

            Assert.AreEqual(1, actual);
        }
        public void GetPaymentTypeMedicareSequesterIfParameterIsNullTest()
        {
            //Mock Input
            PaymentTypeMedicareSequester paymentTypePercentageDiscount = new PaymentTypeMedicareSequester {
                PaymentTypeId = 0, ContractId = 0, ServiceTypeId = 0
            };
            //Mock output
            PaymentTypeMedicareSequester expectedResult = new PaymentTypeMedicareSequester {
                Percentage = 0, PaymentTypeDetailId = 0
            };
            var mockGetPaymentTypeMedicareSequester = new Mock <IPaymentTypeMedicareSequesterRepository>();

            mockGetPaymentTypeMedicareSequester.Setup(f => f.GetPaymentTypeMedicareSequester(paymentTypePercentageDiscount)).Returns(expectedResult);
            PaymentTypeMedicareSequesterLogic target = new PaymentTypeMedicareSequesterLogic(mockGetPaymentTypeMedicareSequester.Object);
            PaymentTypeMedicareSequester      actual = (PaymentTypeMedicareSequester)target.GetPaymentType(paymentTypePercentageDiscount);

            Assert.AreEqual(expectedResult.Percentage, actual.Percentage);
            Assert.AreEqual(expectedResult.PaymentTypeDetailId, actual.PaymentTypeDetailId);
        }
示例#7
0
        //FIXED-2016-R3-S2 : Naming convention of stored procedure parameter is wrong. It should be Pascal naming convention. Eg. @Paymenttypedetailid should be @PaymentTypeDetailID.
        /// <summary>
        /// Add and edit payment type Medicare Sequester.
        /// </summary>
        /// <param name="paymentTypePerCase">The payment type Medicare Sequester.</param>
        /// <returns></returns>
        public long AddEditPaymentTypeMedicareSequester(PaymentTypeMedicareSequester paymentTypePerCase)
        {
            //Checks if input request is not null
            if (paymentTypePerCase != null)
            {
                // Initialize the Stored Procedure
                _databaseCommand = _databaseObj.GetStoredProcCommand("AddEditMedicareSequesterPayment");
                // Pass parameters to Stored Procedure(i.e., @ParamName), add values for
                _databaseObj.AddInParameter(_databaseCommand, "@PaymenTypeDetailId", DbType.Int64, paymentTypePerCase.PaymentTypeDetailId);
                _databaseObj.AddInParameter(_databaseCommand, "@Percentage", DbType.Decimal, paymentTypePerCase.Percentage);
                _databaseObj.AddInParameter(_databaseCommand, "@PaymentTypeId", DbType.Int64, paymentTypePerCase.PaymentTypeId);
                _databaseObj.AddInParameter(_databaseCommand, "@ContractId", DbType.Int64, paymentTypePerCase.ContractId);
                _databaseObj.AddInParameter(_databaseCommand, "@ContractServiceTypeId", DbType.Int64, paymentTypePerCase.ServiceTypeId);
                _databaseObj.AddInParameter(_databaseCommand, "@UserName", DbType.String, paymentTypePerCase.UserName);

                // Retrieve the results of the Stored Procedure in Datatable
                return(long.Parse(_databaseObj.ExecuteScalar(_databaseCommand).ToString()));
            }
            return(0);
        }
示例#8
0
 public PaymentTypeMedicareSequester GetPaymentMedicareSequester(PaymentTypeMedicareSequester paymentMedicareSequester)
 {
     return((PaymentTypeMedicareSequester)_paymentTypeMedicareSequesterLogic.GetPaymentType(paymentMedicareSequester));
 }
示例#9
0
 public long AddEditPaymentMedicareSequester(PaymentTypeMedicareSequester paymentMedicareSequester)
 {
     return(_paymentTypeMedicareSequesterLogic.AddEditPaymentType(paymentMedicareSequester));
 }
        public void EvaluateIfAdjudicatedValueIsNotNullTest()
        {
            List <PaymentResult> paymentResults = new List <PaymentResult>
            {
                new PaymentResult {
                    ClaimId = 123, AdjudicatedValue = 350, ClaimTotalCharges = 110, ServiceTypeId = 1
                },
                new PaymentResult {
                    ClaimId = 123, Line = 1, AdjudicatedValue = 85, ClaimTotalCharges = 110, ServiceTypeId = 1
                }
            };
            // 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 <IPaymentTypeMedicareSequesterRepository> paymentTypeMedicareSequesterRepository = new Mock <IPaymentTypeMedicareSequesterRepository>();

            paymentTypeMedicareSequesterRepository.Setup(x => x.GetPaymentTypeMedicareSequester(It.IsAny <PaymentTypeMedicareSequester>()))
            .Returns(new PaymentTypeMedicareSequester());

            PaymentTypeMedicareSequester paymentTypeMedicareSequester = new PaymentTypeMedicareSequester
            {
                Conditions = new List <ICondition>
                {
                    new Condition
                    {
                        ConditionOperator = (byte)Enums.ConditionOperation.EqualTo,
                        LeftOperands      = new List <string> {
                            "300"
                        },
                        OperandType  = (byte)Enums.OperandIdentifier.HcpcsCode,
                        RightOperand = "300"
                    }
                },
                ServiceTypeId = 1,
                ValidLineIds  = new List <int> {
                    1, 2
                },
                HcpcsCode  = "ABCDE",
                ContractId = 1,
                Percentage = 50
            };

            _target = new PaymentTypeMedicareSequesterLogic(paymentTypeMedicareSequesterRepository.Object)
            {
                PaymentTypeBase = paymentTypeMedicareSequester
            };

            IEvaluateableClaim evaluateableClaim = new EvaluateableClaim
            {
                PatientResponsibility = 25
            };

            evaluateableClaim.ClaimId      = 123;
            evaluateableClaim.ClaimTotal   = 100;
            evaluateableClaim.ClaimCharges = new List <ClaimCharge>
            {
                new ClaimCharge
                {
                    Line    = 1,
                    Amount  = 20,
                    RevCode = "250"
                }
            };

            List <PaymentResult> updatedPaymentResults = new List <PaymentResult>
            {
                new PaymentResult {
                    ClaimId = 123, ContractId = 1, AdjudicatedValue = 110, ClaimTotalCharges = 110, ServiceTypeId = 1
                },
                new PaymentResult {
                    ClaimId = 123, Line = 1, ContractId = 1, AdjudicatedValue = 110, ClaimTotalCharges = 110, ServiceTypeId = 1
                }
            };

            Mock <ContractBaseLogic> mockContractBaseLogic = new Mock <ContractBaseLogic>();

            mockContractServiceTypeLogic.Setup(x => x.Evaluate(evaluateableClaim, paymentResults, false, false))
            .Returns(updatedPaymentResults);
            mockContractBaseLogic.SetupAllProperties();

            //Act
            List <PaymentResult> actual = _target.EvaluatePaymentType(evaluateableClaim, paymentResults, false, false);

            // Assert
            Assert.AreEqual(2, actual.Count);
            var firstOrDefault = paymentResults.FirstOrDefault();

            if (firstOrDefault != null)
            {
                Assert.AreEqual(162.5, firstOrDefault.MedicareSequesterAmount);
            }
            if (firstOrDefault != null)
            {
                Assert.AreEqual(187.5, firstOrDefault.AdjudicatedValue);
            }
        }