Exemplo n.º 1
0
        /// <summary>
        /// Adjudicates the claims data task.
        /// </summary>
        /// <param name="taskId">The task identifier.</param>
        /// <param name="noOfRecords">The no of records.</param>
        /// <param name="claimsCount">The claims count for thread.</param>
        /// <param name="contracts">The contracts.</param>
        /// <param name="startRow">The start row.</param>
        /// <param name="endRow">The end row.</param>
        /// <param name="connectionString">The connection string.</param>
        /// <returns></returns>
        private void AdjudicateClaimsDataTask(long taskId, int noOfRecords, long claimsCount, List <Contract> contracts,
                                              long startRow, long endRow, string connectionString)
        {
            IAdjudicationEngine adjudicationEngine = Factory.CreateInstance <IAdjudicationEngine>(connectionString, true);

            try
            {
                while (claimsCount > 0)
                {
                    // Adjudication Starts
                    AdjudicatedClaimsResult paymentResultDictionary = adjudicationEngine.AdjudicateClaimsDataThread(taskId, noOfRecords, contracts, startRow, endRow);
                    lock (_paymentResultQueue)
                    {
                        // Adding payment result and claim information into Queue. If Job is paused, then have to stop adjudication by setting 'claimsCountForThread=0'
                        if (!paymentResultDictionary.IsPaused)
                        {
                            _paymentResultQueue.Enqueue(paymentResultDictionary);
                        }
                        else
                        {
                            claimsCount = 0;
                        }
                    }

                    claimsCount = claimsCount - noOfRecords;
                }
            }
            catch (Exception ex)
            {
                Log.LogError(Constants.AdjudicationExceptionLog + taskId, Constants.BackgroundServiceUser, ex);
            }
        }
Exemplo n.º 2
0
        /// <summary>
        /// Adjudicates the claims data thread.
        /// </summary>
        /// <param name="taskId">The task identifier.</param>
        /// <param name="noOfRecords">The no of records.</param>
        /// <param name="contracts">The contracts.</param>
        /// <param name="startRow">The start row.</param>
        /// <param name="endRow">The end row.</param>
        /// <returns></returns>
        public AdjudicatedClaimsResult AdjudicateClaimsDataThread(long taskId, int noOfRecords, List <Contract> contracts, long startRow, long endRow)
        {
            AdjudicatedClaimsResult  adjudicatedClaimsResult = new AdjudicatedClaimsResult();
            List <EvaluateableClaim> adjudicateClaims        = new List <EvaluateableClaim>();
            List <EvaluateableClaim> earlyExitClaims         = new List <EvaluateableClaim>();


            _contractLogic.AdjudicateClaims = new List <EvaluateableClaim>();
            _contractLogic.EarlyExitClaims  = new List <EvaluateableClaim>();

            //Retrieves claims from database based on taskId
            List <EvaluateableClaim> evaluateableClaims =
                _evaluateableClaimRepository.GetEvaluateableClaims(taskId, noOfRecords, startRow, endRow);
            Dictionary <long, List <PaymentResult> > paymentResultDictionary = new Dictionary <long, List <PaymentResult> >();

            try
            {
                if (evaluateableClaims != null && evaluateableClaims.Count > 0)
                {
                    //Get Payment Result Dictionary from claim and contract list
                    paymentResultDictionary =
                        AdjudicateClaim(evaluateableClaims,
                                        contracts, taskId);

                    adjudicateClaims.AddRange(_contractLogic.AdjudicateClaims);
                    earlyExitClaims.AddRange(_contractLogic.EarlyExitClaims);
                }
                else
                {
                    adjudicatedClaimsResult.IsPaused = true;
                }

                adjudicatedClaimsResult.AdjudicateClaims = adjudicateClaims;
                adjudicatedClaimsResult.EarlyExitClaims  = earlyExitClaims;
                adjudicatedClaimsResult.PaymentResult    = paymentResultDictionary;
            }
            catch (Exception ex)
            {
                Log.LogError("AdjudicateClaimsDataThread - AdjudicateClaim " + taskId + "No of Records = " + noOfRecords + " " + ex.StackTrace, "AdjudicateClaim");
            }

            return(adjudicatedClaimsResult);
        }
Exemplo n.º 3
0
 /// <summary>
 /// Updates the payment result task.
 /// </summary>
 /// <param name="taskId">The task identifier.</param>
 /// <param name="noOfRecords">The no of records.</param>
 /// <param name="contracts">The contracts.</param>
 /// <param name="adjudicatedClaimsResult">The payment result.</param>
 /// <returns></returns>
 private bool UpdatePaymentResultTask(long taskId, int noOfRecords, List <Contract> contracts, AdjudicatedClaimsResult adjudicatedClaimsResult)
 {
     return(_adjudicationEngine.UpdatePaymentResultsThread(taskId, noOfRecords, contracts, adjudicatedClaimsResult.PaymentResult,
                                                           adjudicatedClaimsResult.AdjudicateClaims, adjudicatedClaimsResult.EarlyExitClaims));
 }