public ActionResult Index(string page) { // *** Show the flagged patient index *** FlaggedPatientList model = new FlaggedPatientList(); int pageNum = GetPage(page); // *** Get flagged patients *** FlaggedPatientsResult result = this.DashboardRepository.Patients.GetFlaggedPatients(pageNum, ItemsPerPage); if (result.Success) { // *** Add current page's patients *** //int startIdx = (pageNum - 1) * ItemsPerPage; //int endIdx = startIdx + ItemsPerPage - 1; //if (endIdx >= result.Patients.Count) // endIdx = result.Patients.Count - 1; //for (int i = startIdx; i <= endIdx; i++) // model.Patients.Add(result.Patients[i]); model.Patients.AddRange(result.Patients); // *** Set paging info *** model.Paging.SetPagingData(ItemsPerPage, pageNum, result.TotalResults); //model.Paging.SetPagingData(ItemsPerPage, pageNum, result.Patients.Count); model.Paging.BaseUrl = Url.Action("Index", "FlaggedPatients", new { page = "" }); TempData[ReturnUrl] = Url.Action("Index", "FlaggedPatients", new { page = pageNum }); } return(View(model)); }
public ActionResult Dashboard(Outcomes outcomes) { DashboardModel model = new DashboardModel(); // *** Get tracked patients *** TrackedPatientsResult trackedResult = this.DashboardRepository.Patients.GetTrackedPatients(1, 9999); if (trackedResult.Success) { // *** Add to the model *** model.TrackedPatients = trackedResult.TotalResults; // *** Check if we have something to work with *** if (trackedResult.Patients != null) { // *** Get the day of the week as integer *** int day = (int)DateTime.Now.DayOfWeek; // *** Calculate Babies Due This Week *** DateTime weekStart = DateTime.Now.Date.AddDays(-1 * day); DateTime weekEnd = DateTime.Now.Date.AddDays(6 - day); model.DueThisWeek = trackedResult.Patients.Count(p => p.EDD.Date >= weekStart && p.EDD.Date <= weekEnd); // *** Calculate number of high-risk pregnancies *** model.HighRisk = trackedResult.Patients.Count(p => p.CurrentPregnancyHighRisk == true); // *** Get data for trimester pie chart *** model.Tri1 = trackedResult.Patients.Count(p => p.Trimester == 1); model.Tri2 = trackedResult.Patients.Count(p => p.Trimester == 2); model.Tri3 = trackedResult.Patients.Count(p => p.Trimester == 3); model.TriUnknown = trackedResult.Patients.Count(p => p.Trimester == -1); // *** Get data for T4B pie chart *** model.T4BEnrolled = trackedResult.Patients.Count(p => p.Text4BabyStatus == Text4BabyStatus.Enrolled); model.T4BNotInterested = trackedResult.Patients.Count(p => p.Text4BabyStatus == Text4BabyStatus.NotInterested); model.T4BUnknown = trackedResult.Patients.Count(p => p.Text4BabyStatus == Text4BabyStatus.Unknown); // *** Get 10 patients with items due *** model.NextDueList = trackedResult.Patients .Where(p => p.NextChecklistDue != DateTime.MinValue) .OrderBy(p => p.NextChecklistDue) .Take(10) .ToList(); } } // *** Get count of flagged patients *** FlaggedPatientsResult flaggedResult = this.DashboardRepository.Patients.GetFlaggedPatients(1, 1); if (flaggedResult.Success) { model.FlaggedPatients = flaggedResult.TotalResults; } // *** Get bar chart data *** BarData outcomesBarData = GetOutcomesBarData(); BarData upcomingBarData = GetUpcomingBarData(trackedResult.Patients); //BarData historical = GetHistoricalBarData(); // *** Set up serializer *** JsonSerializerSettings settings = new JsonSerializerSettings(); settings.ContractResolver = new LowerCaseContractResolver(); // *** Serialize as JSON *** model.OutcomesJson = JsonConvert.SerializeObject(outcomesBarData, settings); model.UpcomingPregnanciesJson = JsonConvert.SerializeObject(upcomingBarData, settings); DateTime fromDate = DateTime.MinValue; DateTime toDate = DateTime.Now; if (outcomes != null) { if (!outcomes.AllDates) { model.Outcomes.FromDate = VistaDates.StandardizeDateFormat(outcomes.FromDate); if (!string.IsNullOrWhiteSpace(model.Outcomes.FromDate)) { fromDate = VistaDates.ParseDateString(model.Outcomes.FromDate, VistaDates.VistADateOnlyFormat); } model.Outcomes.ToDate = VistaDates.StandardizeDateFormat(outcomes.ToDate); if (!string.IsNullOrWhiteSpace(model.Outcomes.ToDate)) { toDate = VistaDates.ParseDateString(model.Outcomes.ToDate, VistaDates.VistADateOnlyFormat); } } model.Outcomes.AllDates = outcomes.AllDates; } PregnancyOutcomeResult pregResult = this.DashboardRepository.Pregnancy.GetPregnancyOutcomes(fromDate, toDate, 1, 1000); if (pregResult.Success) { model.Outcomes.PregnancyOutcomes = pregResult.PregnancyOutcomes; } return(View(model)); }