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); }
public Dictionary <long, List <PaymentResult> > Adjudicate(RtaData rtaData) { return(_rtaLogic.AdjudicateClaimData(new List <EvaluateableClaim> { rtaData.EvaluateableClaim }, rtaData.Contracts)); }
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); }