public async Task <CaseReportViewModel> GetCaseReportForUser(string userId, int caseId) { Case currentCase = await _caseRepository.GetByIdAsync(caseId); Report report = GetExistingReport(userId, caseId); if (currentCase == null) { return(null); } CaseReportViewModel caseReport = new CaseReportViewModel { CaseNumber = currentCase.CaseNumber, PatientAge = currentCase.PatientAge, TumourSize = currentCase.TumourSize, SlideUrl = currentCase.SlideURL, IsSubmitted = false }; if (report != null) { caseReport.TumourGrade = report.TumourGrade; caseReport.NumberofLVI = report.NumberofLVI; caseReport.IsSubmitted = report.IsSubmitted; } return(caseReport); }
public void GivenCaseReportWithNoDescription() { _caseReportViewModel = new CaseReportViewModel { Title = "Test Title", Description = null, OpenDate = new DateTime() }; }
public void AddCaseReport__SavesReportToDatabase__ReturnsViewModel() { var title = $"Jessie James Report {Guid.NewGuid()}"; var caseReport = new CaseReportViewModel { Title = title, Description = "Jessie was captured and put in prison." }; var caseReportService = new CaseReportsService(); var actual = caseReportService.PostCaseReport(caseReport); Assert.AreEqual(actual.Title, caseReport.Title); Assert.AreEqual(actual.Description, caseReport.Description); }
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 async Task GetPreTestProbabilityData(CaseReportViewModel caseReportViewModel, ReportStatistics statistics) { if (statistics.BayesForSize > 0) { await Task.Run(() => _reportService.CalculatePreTestProbability(statistics, caseReportViewModel.TumourGrade)); } else { // Assume we haven't yet calculated the first two bayes theorum values (probabilities based on age and tumour size) await Task.Run(() => _reportService.CalculateAgeBasedStatistics(statistics, caseReportViewModel.PatientAge)); await Task.Run(() => _reportService.CalculateSizeBasedStatistics(statistics, caseReportViewModel.TumourSize)); await Task.Run(() => _reportService.CalculatePreTestProbability(statistics, caseReportViewModel.TumourGrade)); } return; }
public void AddCaseReport__SavesReportToDatabaseSuccessfully() { var title = $"Jessie James Report {Guid.NewGuid()}"; var caseReport = new CaseReportViewModel { Title = title, Description = "Jessie was captured and put in prison." }; var caseReportService = new CaseReportsService(); caseReportService.PostCaseReport(caseReport); var dbReport = GetCaseReportFromDatabase(title); Assert.AreEqual(dbReport.Title, caseReport.Title); Assert.AreEqual(dbReport.Description, caseReport.Description); }
public async Task <InterventionData> GetInterventionDataForCaseReport(CaseReportViewModel caseReportViewModel, string userId) { int[] chartXAxis; decimal[] theoreticalYValues; decimal[] observedYValues; Report previousReport = _reportService.GetPreviousUserReport(userId); int currentReportNumber = previousReport != null ? previousReport.UserReportNumber + 1 : 1; // Calculate statistics for the current case report on the fly ReportStatistics currentStatistics = await Task.Run(() => _reportService.CalculateStatistics( caseReportViewModel.PatientAge, caseReportViewModel.TumourSize, caseReportViewModel.TumourGrade, caseReportViewModel.NumberofLVI, previousReport)); // Get the theoretical series values (x and y) theoreticalYValues = new decimal[currentReportNumber + 1]; observedYValues = new decimal[currentReportNumber + 1]; chartXAxis = new int[currentReportNumber + 1]; BinomialDistribution binomDist = new BinomialDistribution(currentReportNumber, (double)currentStatistics.CumulativeAverageBayesForGrade); for (int i = 0; i <= currentReportNumber; i++) { theoreticalYValues[i] = (decimal)binomDist.ProbabilityMassFunction(i); observedYValues[i] = currentStatistics.CumulativeCasesWithLVIPos == i ? currentStatistics.BinomialDist : 0; chartXAxis[i] = i; } return(new InterventionData() { TheoreticalYValues = theoreticalYValues, ObservedYValues = observedYValues, ChartXAxis = chartXAxis, PreTestProbability = currentStatistics.BayesForGrade, PostTestProbability = currentStatistics.BayesForNumberOfLVI, LVIReported = caseReportViewModel.NumberofLVI > 0 ? true : false }); }
public void GivenCaseReport() { _caseReportViewModel = JessieJamesCaseReportViewModel.Build(_docketNumber); }
public ActionResult PostCaseReport(CaseReportViewModel caseReportViewModel) { return(Ok(_caseReportsService.PostCaseReport(caseReportViewModel))); }
public async Task CreateOrUpdateCaseReport(CaseReportViewModel caseReport, Report existingReport, int caseId, string userId, bool isSubmitted = false) { Case currentCase = await _caseRepository.GetByIdAsync(caseId); await _reportService.CreateOrUpdateReportFromCase(currentCase, existingReport, caseReport.TumourGrade, caseReport.NumberofLVI, userId, isSubmitted); }
public async Task <IActionResult> OnGetAdditionalProbabilityDataAsync(int?id, [FromQuery] CaseReportViewModel caseReportData) { InterventionData = await _caseReportService.GetInterventionDataForCaseReport(caseReportData, _userManager.GetUserId(User)); return(new JsonResult(InterventionData)); }
public async Task <IActionResult> OnGetPreTestProbabilityDataAsync(int?id, [FromQuery] CaseReportViewModel caseReportData) { await _caseReportService.GetPreTestProbabilityData(caseReportData, _statistics); return(new JsonResult(_statistics.BayesForGrade)); }
public PostCaseReportCommand(CaseReportViewModel caseReport) { _caseReport = caseReport; }