private void load() { string se = Request.QueryString["SerialNumber"].ToString(); DataTable dt = CreateTable(); RPCResult <ReportStatistics> r = PretreatmentProxy.GetStatusReportService().GetReportStatistics(Guid.Parse(se)); if (r.Success) { lbl_message.Visible = false; ReportStatistics s = r.Value; if (r.Value != null) { DataRow dr = dt.NewRow(); dr["SerialNumber"] = s.SerialNumber; dr["Account"] = s.Account; dr["BeginSendTime"] = s.BeginSendTime; dr["FailureCount"] = s.FailureCount; dr["LastResponseTime"] = s.LastResponseTime; dr["SendCount"] = s.SendCount; dr["SplitNumber"] = s.SplitNumber; dr["Succeed"] = s.Succeed; dt.Rows.Add(dr); } } lbl_message.Visible = false; GridView1.DataSource = dt; GridView1.DataBind(); Session["dt"] = dt; }
//public static void AddStatusReport(List<StatusReport> reports) //{ // MongoCollection collection = GetCollection(); // collection.InsertBatch(typeof(BsonDocument), reports); //} public static void Update(ReportStatistics report) { MongoCollection collection = GetCollection(); var query = new QueryDocument("SerialNumber", report.SerialNumber); ReportStatisticsCache sr = collection.FindOneAs <ReportStatisticsCache>(query); if (sr != null) { sr.Account = report.Account; sr.BeginSendTime = report.BeginSendTime; sr.FailureCount = report.FailureCount; sr.LastResponseTime = report.LastResponseTime; sr.Numbers = report.Numbers; sr.SendCount = report.SendCount; sr.SerialNumber = report.SerialNumber; sr.SplitNumber = report.SplitNumber; collection.Save(sr); } else { sr = new ReportStatisticsCache(); sr.Account = report.Account; sr.BeginSendTime = report.BeginSendTime; sr.FailureCount = report.FailureCount; sr.LastResponseTime = report.LastResponseTime; sr.Numbers = report.Numbers; sr.SendCount = report.SendCount; sr.SerialNumber = report.SerialNumber; sr.SplitNumber = report.SplitNumber; collection.Insert <ReportStatisticsCache>(sr); } }
public async Task CreateOrUpdateReportFromCase(Case currentCase, Report report, Grade grade, int numberOfLVI, string userId, bool isSubmitted = false) { Report previousReport = GetPreviousUserReport(userId); ReportStatistics statistics = null; if (isSubmitted) { statistics = await Task.Run(() => CalculateStatistics(currentCase.PatientAge, currentCase.TumourSize, grade, numberOfLVI, previousReport)); } if (report == null) { int newReportNumber = previousReport != null ? previousReport.UserReportNumber + 1 : 1; Report newReport = new Report(newReportNumber, userId, currentCase.Id, statistics, isSubmitted); newReport.TumourGrade = grade; newReport.NumberofLVI = numberOfLVI; await _reportRepository.AddAsync(newReport); } else { report.TumourGrade = grade; report.NumberofLVI = numberOfLVI; report.Statistics = statistics; await _reportRepository.UpdateAsync(report); } }
public ReportStatistics CalculateStatistics(int ptAge, decimal tumourSize, Grade grade, int numLVISeen, Report previousReport) { ReportStatistics statistics = new ReportStatistics(); // The four sets of Bayes theorum calculations need to be performed sequentially for the entire statistics set to be correct CalculateAgeBasedStatistics(statistics, ptAge); CalculateSizeBasedStatistics(statistics, tumourSize); CalculatePreTestProbability(statistics, grade); CalculatePostTestProbability(statistics, numLVISeen); // Calculate the cumulative values based on results of previously submitted cases int numberOfUserReports = previousReport != null ? previousReport.UserReportNumber + 1 : 1; if (previousReport != null) { statistics.CumulativeBayesForGrade = previousReport.Statistics.CumulativeBayesForGrade + statistics.BayesForGrade; statistics.CumulativeAverageBayesForGrade = statistics.CumulativeBayesForGrade / numberOfUserReports; statistics.CumulativeCasesWithLVIPos = previousReport.Statistics.CumulativeCasesWithLVIPos + (statistics.LVIPresent ? 1 : 0); } else { statistics.CumulativeBayesForGrade = statistics.BayesForGrade; statistics.CumulativeAverageBayesForGrade = statistics.CumulativeBayesForGrade / numberOfUserReports; statistics.CumulativeCasesWithLVIPos = statistics.LVIPresent ? 1 : 0; } BinomialDistribution binomDist = new BinomialDistribution(numberOfUserReports, (double)statistics.CumulativeAverageBayesForGrade); statistics.BinomialDist = (decimal)binomDist.ProbabilityMassFunction(statistics.CumulativeCasesWithLVIPos); return(statistics); }
public Report(int userReportNumber, string userId, int caseId, ReportStatistics statistics, bool isSubmitted = false) { UserReportNumber = userReportNumber; LVIStudyUserID = userId; CaseId = caseId; Statistics = statistics; IsSubmitted = isSubmitted; }
public static ReportStatistics GetStatusReport(string serial) { MongoCollection collection = GetCollection(); var query = new QueryDocument("SerialNumber", serial); ReportStatistics report = collection.FindOneAs <ReportStatisticsCache>(query).Clone(); return(report); }
public void CalculateAgeBasedStatistics(ReportStatistics statistics, int ptAge) { statistics.ProbLVIPos50Plus = ptAge < 51 ? DataConstants.BelowFiftyYearsLVIPos : 1 - DataConstants.BelowFiftyYearsLVIPos; statistics.ProbLVINeg50Plus = ptAge < 51 ? DataConstants.BelowFiftyYearsLVINeg : 1 - DataConstants.BelowFiftyYearsLVINeg; statistics.BayesForAge = CalculateBayes(DataConstants.ProbLVIPos, statistics.ProbLVIPos50Plus, statistics.ProbLVINeg50Plus, DataConstants.ProbLVINeg); }
private bool containNum(ReportStatistics s, string num) { if (s.Telephones == null) { return(false); } else { return(s.Telephones.Count(t => t.IndexOf(num) > -1) > 0 ? true : false); } }
public static bool AddSMSHistory(ReportStatistics sms) { string tableName = "ReportStatistics_" + sms.SendTime.Value.ToString("yyyyMMdd"); StringBuilder strSql = new StringBuilder(); strSql.Append("insert into " + tableName + "("); string sql = @"insert into " + tableName + @"(ID,AccountID,SPNumber,Content,Signature,NumberCount,SendTime,SplitNumber,FeeTotalCount,AuditResult,AuditTime,AuditType,AuditAccountLoginName,Channel,SMSType,Status,Source) values(@ID,@AccountID,@SPNumber,@Content,@Signature,@NumberCount,@SendTime,@SplitNumber,@FeeTotalCount,@AuditResult,@AuditTime,@AuditType,@AuditAccountLoginName,@Channel,@SMSType,@Status,@Source)"; DBHelper.Instance.Execute(sql, sms); return(true); }
public void CalculateSizeBasedStatistics(ReportStatistics statistics, decimal tumourSize) { statistics.ProbLVIPosSize = tumourSize > (decimal)2 ? DataConstants.TwoToFivecmLVIPos : tumourSize > (decimal)1 ? DataConstants.OneToTwocmLVIPos : DataConstants.BelowOnecmLVIPos; statistics.ProbLVINegSize = tumourSize > (decimal)2 ? DataConstants.TwoToFivecmLVINeg : tumourSize > (decimal)1 ? DataConstants.OneToTwocmLVINeg : DataConstants.BelowOnecmLVINeg; statistics.BayesForSize = CalculateBayes (statistics.BayesForAge, statistics.ProbLVIPosSize, statistics.ProbLVINegSize, 1 - statistics.BayesForAge); }
public void CalculatePreTestProbability(ReportStatistics statistics, Grade grade) { statistics.ProbLVIPosGrade = (int)grade == 1 ? DataConstants.GradeOneLVIPos : (int)grade == 2 ? DataConstants.GradeTwoLVIPos : DataConstants.GradeThreeLVIPos; statistics.ProbLVINegGrade = (int)grade == 1 ? DataConstants.GradeOneLVINeg : (int)grade == 2 ? DataConstants.GradeTwoLVINeg : DataConstants.GradeThreeLVINeg; statistics.BayesForGrade = CalculateBayes (statistics.BayesForSize, statistics.ProbLVIPosGrade, statistics.ProbLVINegGrade, 1 - statistics.BayesForSize); }
public ReportStatistics Clone() { ReportStatistics rs = new ReportStatistics(); rs.Account = base.Account; rs.BeginSendTime = base.BeginSendTime; rs.FailureCount = base.FailureCount; rs.LastResponseTime = base.LastResponseTime; rs.Numbers = base.Numbers; rs.SendCount = base.SendCount; rs.SerialNumber = base.SerialNumber; rs.SplitNumber = base.SplitNumber; return(rs); }
public static void AddReportStatistics(ReportStatistics report) { ReportStatisticsCache srm = new ReportStatisticsCache(); srm.Account = report.Account; srm.BeginSendTime = report.BeginSendTime; srm.FailureCount = report.FailureCount; srm.LastResponseTime = report.LastResponseTime; srm.Numbers = report.Numbers; srm.SendCount = report.SendCount; srm.SerialNumber = report.SerialNumber; srm.SplitNumber = report.SplitNumber; MongoCollection collection = GetCollection(); collection.Insert <ReportStatisticsCache>(srm); }
public void UpdateStatistic(ReportStatistics.ReportName reportName) { string country = CmsOpsModel.CountryFilterModel.GetCode(); int poolId = CmsOpsModel.GeneralThreeFilterModel.TopModel.GetId(); int locationId = CmsOpsModel.GeneralThreeFilterModel.MiddleModel.GetId(); var branch = CmsOpsModel.GeneralThreeFilterModel.BottomModel.SelectedValue; try { ReportStatistics.InsertStatistics((int)reportName , country, poolId, locationId, -1, -1, branch, HttpContext.Current.User.Identity.Name, DateTime.Now); } catch (SqlException ex) { //ILog _logger = log4net.LogManager.GetLogger("Pooling"); //if (_logger != null) _logger.Error(" SQL Exception thrown in PoolingController(Abstract) accessing ReportStatistics.InsertStatistics, message : " + ex.Message); } }
public void CalculatePostTestProbability(ReportStatistics statistics, int numLVISeen) { statistics.LVIPresent = numLVISeen > 0; statistics.ProbLVIPosNumberOfLVI = numLVISeen == 0 ? DataConstants.ZeroLVIImagesLVIPos : numLVISeen < 3 ? DataConstants.OneToTwoLVIImagesLVIPos : numLVISeen < 4 ? DataConstants.TwoToThreeLVIImagesLVIPos : DataConstants.FivePlusLVIImagesLVIPos; statistics.ProbLVINegNumberOfLVI = numLVISeen == 0 ? DataConstants.ZeroLVIImagesLVINeg : numLVISeen < 3 ? DataConstants.OneToTwoLVIImagesLVINeg : numLVISeen < 4 ? DataConstants.TwoToThreeLVIImagesLVINeg : DataConstants.FivePlusLVIImagesLVINeg; statistics.BayesForNumberOfLVI = CalculateBayes (statistics.BayesForGrade, statistics.ProbLVIPosNumberOfLVI, statistics.ProbLVINegNumberOfLVI, 1 - statistics.BayesForGrade); }
public void UpdateTest() { SMS sms = GetSMS(); var b = ReportStatisticsDB.AddSMSHistory(sms); Assert.IsTrue(b); var r = ReportStatisticsDB.GetReportStatistics(sms.SerialNumber, sms.SendTime); Assert.IsNotNull(r); ReportStatistics rs = new ReportStatistics() { SerialNumber = sms.SerialNumber, SendCount = 100, SendTime = sms.SendTime }; b = ReportStatisticsDB.Update("account", rs); Assert.IsTrue(b); }
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 CalculateCumulativeStatistics_CalculatesCorrectly(Report[] testReports) { //Arrange var reportService = new ReportService(null, null); Report latestTestreport = testReports[testReports.Length - 1]; Report previousTestReport = null; if (testReports.Length > 1) { previousTestReport = testReports[testReports.Length - 2]; } //Act ReportStatistics actualStats = reportService.CalculateStatistics(latestTestreport.Case.PatientAge, latestTestreport.Case.TumourSize, latestTestreport.TumourGrade, latestTestreport.NumberofLVI, previousTestReport); //Assert Assert.Equal(Decimal.Round(latestTestreport.Statistics.CumulativeBayesForGrade, 5), Decimal.Round(actualStats.CumulativeBayesForGrade, 5)); Assert.Equal(Decimal.Round(latestTestreport.Statistics.CumulativeAverageBayesForGrade, 5), Decimal.Round(actualStats.CumulativeAverageBayesForGrade, 5)); Assert.Equal(Decimal.Round(latestTestreport.Statistics.CumulativeCasesWithLVIPos, 5), Decimal.Round(actualStats.CumulativeCasesWithLVIPos, 5)); Assert.Equal(Decimal.Round(latestTestreport.Statistics.BinomialDist, 5), Decimal.Round(actualStats.BinomialDist, 5)); }
protected void GridviewSortingAndPagingDate(string sortExpression) { var marsTool = int.Parse(ddlAvailabilityOrPooling.SelectedValue); var gridViewStatisticsDate = marsTool != 4 ? GridviewStatisticsDate : GridviewStatisticsDatePooling; var gridViewStatisticsDateTotal = marsTool != 4 ? GridviewStatisticsDateTotals : GridviewStatisticsDateTotalsPooling; ReportStatistics.SelectStatistics(marsTool, Convert.ToInt32(SessionHandler.AvailabilityStatisticsLogic), SessionHandler.AvailabilityStatisticsCountry, Convert.ToInt32(SessionHandler.AvailabilityStatisticsCMSPoolId), SessionHandler.AvailabilityStatisticsCMSLocationGroupCode ?? 0, SessionHandler.AvailabilityStatisticsRacfID, Convert.ToInt32(SessionHandler.AvailabilityStatisticsOPSRegionId), Convert.ToInt32(SessionHandler.AvailabilityStatisticsOPSAreaId), SessionHandler.AvailabilityStatisticsLocation, Convert.ToDateTime(SessionHandler.AvailabilityStatisticsStartDate), Convert.ToDateTime(SessionHandler.AvailabilityStatisticsEndDate), Convert.ToInt32(SessionHandler.AvailabilityStatisticsDatePageSize), Convert.ToInt32(SessionHandler.AvailabilityStatisticsDateCurrentPageNumber), sortExpression, this.PagerControlStatisticsDate.PagerButtonFirst, this.PagerControlStatisticsDate.PagerButtonNext, this.PagerControlStatisticsDate.PagerButtonPrevious, this.PagerControlStatisticsDate.PagerButtonLast, this.PagerControlStatisticsDate.PagerLabelTotalPages, this.PagerControlStatisticsDate.PagerDropDownListPage, gridViewStatisticsDate, gridViewStatisticsDateTotal, this.LabelTotalRecordsDisplayStatisticsDate, (int)ReportStatistics.StatisticsType.ByDate, this.PanelStatisticsDate, this.PanelStatisticsDateEmptyDataTemplate); this.UpdatePanelStatistics.Update(); }
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 static bool Update(string accountID, ReportStatistics statistics) { throw new NotImplementedException(); return(true); }
protected void GenerateReport() { //Get Selection Values from reportselection user controls int selectedLogic = this.UserControlReportSettings.Logic; //Set values from report selection string country = this.UserControlReportSettings.Country; //Set default values for CMS / OPS logic int cms_pool_id = -1; string cms_pool = null; int cms_location_group_id = -1; string cms_location_group = null; int ops_region_id = -1; string ops_region = null; int ops_area_id = -1; string ops_area = null; //Check option logic switch (selectedLogic) { case (int)ReportSettings.OptionLogic.CMS: //Set Values for CMS cms_pool_id = this.UserControlReportSettings.CMS_Pool_Id; cms_pool = this.UserControlReportSettings.CMS_Pool; cms_location_group_id = this.UserControlReportSettings.CMS_Location_Group_Id; cms_location_group = this.UserControlReportSettings.CMS_Location_Group; break; case (int)ReportSettings.OptionLogic.OPS: //Set Values for OPS ops_region_id = this.UserControlReportSettings.OPS_Region_Id; ops_region = this.UserControlReportSettings.OPS_Region; ops_area_id = this.UserControlReportSettings.OPS_Area_Id; ops_area = this.UserControlReportSettings.OPS_Area; break; } //Set common values string location = this.UserControlReportSettings.Location; string racfId = this.UserControlReportSettings.RacfId; //Statistics values DateTime startDate = this.UserControlReportSettings.StatisticsStartDate; DateTime endDate = this.UserControlReportSettings.StatisticsEndDate; //Set Selection Session Values this.SetSelectionSessionValues(country, selectedLogic, cms_pool_id, cms_location_group_id, ops_region_id, ops_area_id, location, startDate, endDate, racfId); var marsTool = int.Parse(ddlAvailabilityOrPooling.SelectedValue); var poolingSelected = marsTool == 4; GridviewStatisticsDate.Visible = !poolingSelected; GridviewStatisticsDatePooling.Visible = poolingSelected; GridviewStatisticsSelection.Visible = !poolingSelected; GridviewStatisticsSelectionPooling.Visible = poolingSelected; GridviewStatisticsSelectionTotals.Visible = !poolingSelected; GridviewStatisticsSelectionTotalsPooling.Visible = poolingSelected; GridviewStatisticsDateTotals.Visible = !poolingSelected; GridviewStatisticsDateTotalsPooling.Visible = poolingSelected; var gridViewStatisticsSelection = !poolingSelected ? GridviewStatisticsSelection : GridviewStatisticsSelectionPooling; var gridViewStatisticsDate = !poolingSelected ? GridviewStatisticsDate : GridviewStatisticsDatePooling; var gridViewStatisticsSelectionTotal = !poolingSelected ? GridviewStatisticsSelectionTotals : GridviewStatisticsSelectionTotalsPooling; var gridViewStatisticsDateTotal = !poolingSelected ? GridviewStatisticsDateTotals : GridviewStatisticsDateTotalsPooling; //Load Data By Selection ReportStatistics.SelectStatistics(marsTool, selectedLogic, country, cms_pool_id, cms_location_group_id, racfId, ops_region_id, ops_area_id, location, startDate, endDate, Convert.ToInt32(SessionHandler.AvailabilityStatisticsSelectionPageSize), Convert.ToInt32(SessionHandler.AvailabilityStatisticsSelectionCurrentPageNumber), null, this.PagerControlStatisticsSelection.PagerButtonFirst, this.PagerControlStatisticsSelection.PagerButtonNext, this.PagerControlStatisticsSelection.PagerButtonPrevious, this.PagerControlStatisticsSelection.PagerButtonLast, this.PagerControlStatisticsSelection.PagerLabelTotalPages, this.PagerControlStatisticsSelection.PagerDropDownListPage, gridViewStatisticsSelection, gridViewStatisticsSelectionTotal, this.LabelTotalRecordsDisplayStatisticsSelection, (int)ReportStatistics.StatisticsType.BySelection, this.PanelStatisticsSelection, this.PanelStatisticsSelectionEmptyDataTemplate); //Load Data By Date ReportStatistics.SelectStatistics(marsTool, selectedLogic, country, cms_pool_id, cms_location_group_id, racfId, ops_region_id, ops_area_id, location, startDate, endDate, Convert.ToInt32(SessionHandler.AvailabilityStatisticsDatePageSize), Convert.ToInt32(SessionHandler.AvailabilityStatisticsDateCurrentPageNumber), null, this.PagerControlStatisticsDate.PagerButtonFirst, this.PagerControlStatisticsDate.PagerButtonNext, this.PagerControlStatisticsDate.PagerButtonPrevious, this.PagerControlStatisticsDate.PagerButtonLast, this.PagerControlStatisticsDate.PagerLabelTotalPages, this.PagerControlStatisticsDate.PagerDropDownListPage, gridViewStatisticsDate, gridViewStatisticsDateTotal, this.LabelTotalRecordsDisplayStatisticsDate, (int)ReportStatistics.StatisticsType.ByDate, this.PanelStatisticsDate, this.PanelStatisticsDateEmptyDataTemplate); //Set Report Selection User Control SetReportSelection(selectedLogic, country, cms_pool_id, cms_location_group_id, ops_region_id, ops_area_id, location, startDate, endDate, racfId); //Set Last Selection Value base.SaveLastSelectionToSession(selectedLogic, country, cms_pool_id, cms_location_group_id, ops_region_id, ops_area_id, location, null, null, null); this.UpdatePanelStatistics.Update(); }