Esempio n. 1
0
        GetRtaDataByClaim(EvaluateableClaim evaluateableClaim)
        {
            RtaData rtaData = new RtaData {
                EvaluateableClaim = evaluateableClaim, Contracts = new List <Contract>()
            };

            if (evaluateableClaim != null)
            {
                // Initialize the Stored Procedure
                _databaseCommandObj = _databaseObj.GetStoredProcCommand("RTA_GetDataByClaim");

                // Pass parameters to Stored Procedure(i.e., @ParamName), add values for
                _databaseObj.AddInParameter(_databaseCommandObj, "@SsiNumber", DbType.Int32, evaluateableClaim.Ssinumber);
                _databaseObj.AddInParameter(_databaseCommandObj, "@Hcpcs", DbType.String, string.Join(",", evaluateableClaim.ClaimCharges.Select(q => q.HcpcsCode)));
                _databaseObj.AddInParameter(_databaseCommandObj, "@ZipCode", DbType.String, evaluateableClaim.ProviderZip);
                _databaseObj.AddInParameter(_databaseCommandObj, "@StatementFrom", DbType.DateTime, evaluateableClaim.StatementFrom);
                _databaseObj.AddInParameter(_databaseCommandObj, "@StatementThru", DbType.DateTime, evaluateableClaim.StatementThru);
                _databaseObj.AddInParameter(_databaseCommandObj, "@PayerName", DbType.String, evaluateableClaim.PriPayerName);
                _databaseObj.AddInParameter(_databaseCommandObj, "@IsInstitutional", DbType.Boolean, evaluateableClaim.ClaimType.ToLower().Contains(Constants.ClaimTypeInstitutionalContract));

                // Retrieve the results of the Stored Procedure in Data table
                DataSet dataSet = _databaseObj.ExecuteDataSet(_databaseCommandObj);

                if (dataSet.Tables.Count > 0)
                {
                    rtaData.FacilityId = dataSet.Tables[0].Rows[0]["FacilityID"] == DBNull.Value
                        ? (long?)null
                        : Convert.ToInt64(dataSet.Tables[0].Rows[0]["FacilityID"]);
                    if (rtaData.FacilityId != null)
                    {
                        rtaData.EvaluateableClaim.MedicareLabFeeSchedules = GetMedicareLabFeeSchedules(dataSet);
                        //Remove RTA related Tables from dataSet and than pass dataSet to CMS logic to build List<Contract>
                        dataSet.Tables.RemoveAt(MedicareTablePosition);          //Remove Medicare Lab Fee Schedule Table
                        dataSet.Tables.RemoveAt(FacilityTablePosition);          //Remove Facility Table
                        DataTable contractBasicInfo = dataSet.Tables[0];
                        dataSet.Tables.RemoveAt(ContractBasicInfoTablePosition); //Remove Contract Basic Info Table.
                        rtaData.Contracts = ContractRepository.GetContracts(dataSet);
                        rtaData.Contracts.AddRange(ContractRepository.GetContracts(contractBasicInfo));
                    }
                }
            }
            return(rtaData);
        }
Esempio n. 2
0
 public Dictionary <long, List <PaymentResult> > Adjudicate(RtaData rtaData)
 {
     return(_rtaLogic.AdjudicateClaimData(new List <EvaluateableClaim> {
         rtaData.EvaluateableClaim
     }, rtaData.Contracts));
 }
Esempio n. 3
0
        public void GetRtaDataByClaimIsNotNull()
        {
            //Mock Input
            EvaluateableClaim evaluateableClaim = new EvaluateableClaim
            {
                ClaimId    = 123,
                ClaimTotal = 100,
                SmartBox   = new SmartBox
                {
                    CAA = 5,
                    LOS = 10,
                    TCC = 15
                },
                ClaimCharges = new List <ClaimCharge>
                {
                    new ClaimCharge
                    {
                        Line    = 1,
                        Amount  = 20,
                        RevCode = "300"
                    }
                }
            };
            RtaData rtaData = new RtaData
            {
                Contracts = new List <Contract>
                {
                    new Contract
                    {
                        ContractId   = 111,
                        ContractName = "Contract1"
                    }
                },
                EvaluateableClaim = new EvaluateableClaim
                {
                    ClaimId    = 123,
                    ClaimTotal = 100,
                    SmartBox   = new SmartBox
                    {
                        CAA = 5,
                        LOS = 10,
                        TCC = 15
                    },
                    ClaimCharges = new List <ClaimCharge>
                    {
                        new ClaimCharge
                        {
                            Line    = 1,
                            Amount  = 20,
                            RevCode = "300"
                        }
                    }
                }
            };

            _mockRtaRepository      = new Mock <IRtaRepository>();
            _mockAdjudicationEngine = new Mock <IAdjudicationEngine>();
            _mockRtaRepository.Setup(f => f.GetRtaDataByClaim(It.IsAny <EvaluateableClaim>())).Returns(rtaData);
            _target = new RtaLogic(_mockRtaRepository.Object, _mockAdjudicationEngine.Object);
            RtaData actual = _target.GetRtaDataByClaim(evaluateableClaim);

            Assert.AreEqual(rtaData, actual);
        }