Esempio n. 1
0
        public ActionResult Overview(string page)
        {
            // *** Basic list of tracked patients ***

            ActionResult    returnValue;
            TrackedPatients model = new TrackedPatients();

            int pageNum = GetPage(page);

            // *** Get the patients from the repository ***
            //TrackedPatientsResult result = this.DashboardRepository.Patients.GetTrackedPatients(pageNum, ItemsPerPage);
            TrackedPatientsResult result = this.DashboardRepository.Patients.GetTrackedPatients(-1, -1);

            // *** Assign model based on result ***
            if (result.Success)
            {
                model.List.AddRange(result.Patients);

                model.Paging.SetPagingData(ItemsPerPage, pageNum, result.TotalResults);
                model.Paging.BaseUrl = Url.Action("Overview", "PatientList", new { page = "" });

                TempData[LastPatientListUrl] = Url.Action("Overview", "PatientList", new { page = pageNum });
            }
            else
            {
                this.Error(result.Message);
            }

            // *** Set the return value ***
            returnValue = View(model);

            return(returnValue);
        }
Esempio n. 2
0
        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));
        }