public async void CalculateCumulativeStatistics_CalculatesCorrectly(Report[] testReports)
        {
            // Arrange
            Report currentTestReport  = testReports[testReports.Length - 1];
            Report previousTestReport = null;

            if (testReports.Length > 1)
            {
                previousTestReport = testReports[testReports.Length - 2];
            }

            var mock = new Mock <IReportService>();

            mock.Setup(rs => rs.GetPreviousUserReport(It.IsAny <string>())).Returns(previousTestReport);
            mock.Setup(rs => rs.CalculateStatistics(
                           It.IsAny <int>(),
                           It.IsAny <decimal>(),
                           It.IsAny <Grade>(),
                           It.IsAny <int>(),
                           It.IsAny <Report>())).Returns(currentTestReport.Statistics);


            CaseReportViewModel model = new CaseReportViewModel()
            {
                PatientAge  = currentTestReport.Case.PatientAge,
                TumourSize  = currentTestReport.Case.TumourSize,
                TumourGrade = currentTestReport.TumourGrade,
                NumberofLVI = currentTestReport.NumberofLVI
            };

            InterventionData expectedData = InterventionTestData.OrderedInterventionDataSet[testReports.Length - 1];

            //Act
            CaseReportViewModelService crvmService = new CaseReportViewModelService(null, null, mock.Object);
            InterventionData           actualData  = await crvmService.GetInterventionDataForCaseReport(model, "testUser");

            //Assert
            for (int i = 0; i < actualData.ChartXAxis.Length; i++)
            {
                Assert.Equal(Decimal.Round(expectedData.ObservedYValues[i], 5), Decimal.Round(actualData.ObservedYValues[i], 5));
                Assert.Equal(Decimal.Round(expectedData.TheoreticalYValues[i], 5), Decimal.Round(actualData.TheoreticalYValues[i], 5));
            }
            Assert.Equal(Decimal.Round(expectedData.PreTestProbability, 5), Decimal.Round(actualData.PreTestProbability, 5));
            Assert.Equal(Decimal.Round(expectedData.PostTestProbability, 5), Decimal.Round(actualData.PostTestProbability, 5));
        }
        public object FindByID(string entityID)
        {
            try
            {
                InterventionData   interventionData = null;
                List <IMongoQuery> queries          = new List <IMongoQuery>();
                queries.Add(Query.EQ(MEIntervention.IdProperty, ObjectId.Parse(entityID)));
                queries.Add(Query.EQ(MEIntervention.DeleteFlagProperty, false));
                queries.Add(Query.EQ(MEIntervention.TTLDateProperty, BsonNull.Value));
                IMongoQuery mQuery = Query.And(queries);

                using (PatientGoalMongoContext ctx = new PatientGoalMongoContext(_dbName))
                {
                    MEIntervention b = ctx.Interventions.Collection.Find(mQuery).FirstOrDefault();
                    if (b != null)
                    {
                        interventionData = new InterventionData
                        {
                            Id             = b.Id.ToString(),
                            Description    = b.Description,
                            TemplateGoalId = b.TemplateGoalId.ToString(),
                            StartDateRange = b.StartDateRange,
                            CategoryId     = b.CategoryId == null ? null : b.CategoryId.ToString(),
                            AssignedToId   = b.AssignedToId == null ? null : b.AssignedToId.ToString(),
                            BarrierIds     = Helper.ConvertToStringList(b.BarrierIds),
                            StatusId       = ((int)b.Status),
                            StatusDate     = b.StatusDate,
                            StartDate      = b.StartDate,
                            //ClosedDate = b.ClosedDate,
                            CreatedById = b.RecordCreatedBy.ToString(),
                            DeleteFlag  = b.DeleteFlag
                        };
                    }
                }
                return(interventionData);
            }
            catch (Exception) { throw; }
        }
        public async Task <IActionResult> OnGetAdditionalProbabilityDataAsync(int?id, [FromQuery] CaseReportViewModel caseReportData)
        {
            InterventionData = await _caseReportService.GetInterventionDataForCaseReport(caseReportData, _userManager.GetUserId(User));

            return(new JsonResult(InterventionData));
        }