Exemple #1
0
        public ActionResult SelectPatient()
        {
            UserClient uc = new UserClient();
            var        patientsForCurrentUser = uc.GetPatientsForUser();

            List <PatientModel> data   = new List <PatientModel>();
            PatientClient       client = new PatientClient();

            foreach (var u in patientsForCurrentUser.StringDictionary)
            {
                OperationResultAsUserDetails result = client.GetDetailsForPatient(u.Key);
                if (!result.Succeeded)
                {
                    TempData["ErrorMessage"] = result.ErrorMessages;
                }
                else
                {
                    data.Add(new PatientModel()
                    {
                        Id = result.PatientDetails.Id, Firstname = result.PatientDetails.FirstName, LastName = result.PatientDetails.LastName, Email = result.PatientDetails.Email, DateOfBirth = result.PatientDetails.DateOfBirth, mobileNumber = result.PatientDetails.PhoneNumber, ExternalId = result.PatientDetails.ExternalId
                    });
                }
            }
            TempData["Patients"] = data;

            return(View());
        }
Exemple #2
0
        public ActionResult Index(string patientId, bool closing = false)
        {
            Dictionary <Episode, List <QuestionnaireUserResponseGroup> > result = this.userQuestionnaireClient.GetOutstandingQuestionnairesForPatient(patientId).EpisodeQuestionnaires;

            Dictionary <Episode, List <QuestionnaireUserResponseGroup> > tmp = result == null ? new Dictionary <Episode, List <QuestionnaireUserResponseGroup> >() : result.ToDictionary(r => r.Key, r => r.Value.Where(g => !g.Completed).ToList());

            tmp = tmp.OrderByDescending(e => e.Key.DateCreated).ToDictionary(d => d.Key, d => d.Value);

            foreach (KeyValuePair <Episode, List <QuestionnaireUserResponseGroup> > e in tmp)
            {
                List <QuestionnaireUserResponseGroup> value = e.Value.OrderByDescending(g => g.DueDate).OrderBy(g => g.Completed).ToList();
                e.Value.Clear();
                e.Value.AddRange(value);
            }

            ViewBag.Outstanding = tmp;
            Dictionary <Episode, List <QuestionnaireUserResponseGroup> > data = result == null ? new Dictionary <Episode, List <QuestionnaireUserResponseGroup> >() : result.ToDictionary(r => r.Key, r => r.Value.Where(g => g.Completed).ToList());

            /*List<QuestionnaireUserResponseGroup> noEpisodes = data.Where(r => r.Key.Condition == null).SelectMany(r => r.Value).ToList();
             * noEpisodes.OrderBy(g => g.Completed).ThenByDescending(g => g.DateTimeCompleted);
             * ViewBag.NoEpisodes = noEpisodes;
             */
            data = data.OrderByDescending(e => e.Key.DateCreated).ToDictionary(d => d.Key, d => d.Value);
            //Dictionary<Episode, List<QuestionnaireUserResponseGroup>> tmp2 = data.Where(r => r.Key.Condition != null).ToDictionary(r => r.Key, r => r.Value);
            foreach (KeyValuePair <Episode, List <QuestionnaireUserResponseGroup> > e in data)
            {
                List <QuestionnaireUserResponseGroup> value = e.Value.OrderByDescending(g => g.DateTimeCompleted).OrderBy(g => g.Completed).ToList();
                e.Value.Clear();
                e.Value.AddRange(value);
            }

            ViewBag.Completed = data;

            if (!closing)
            {
                var resultWithPatientDetails = patientClient.GetDetailsForPatient(patientId);
                if (resultWithPatientDetails.Succeeded)
                {
                    if (resultWithPatientDetails.PatientDetails.ShareDataForQualityAssurance == null || resultWithPatientDetails.PatientDetails.ShareDataWithResearcher == null)
                    {
                        ViewBag.ShowPopUp = "SelectConfidentialityScope";
                    }
                }
            }

            return(View());
        }
        public ActionResult CurrentCondition(string patientId, int?episodeId, FormCollection collection)
        {
            PatientEpisodeClient uec    = new PatientEpisodeClient();
            PatientClient        client = new PatientClient();
            var clientResult            = client.GetDetailsForPatient(patientId);

            if (!clientResult.Succeeded)
            {
                ViewBag.ErrorMessage += clientResult.ErrorMessages;
            }
            else
            {
                //uec.GetConditionQuestionnaire(episodeId);
                ProClient pro = new ProClient();

                QuestionnaireClient qc = new QuestionnaireClient();
                ViewBag.Questionnaires = qc.GetAllQuestionnairesWithTags().Questionnaires;

                var uecResult = uec.GetEpisodesWithDetailsForPatient(patientId);

                if (!uecResult.Succeeded)
                {
                    ViewBag.ErrorMessage = uecResult.ErrorMessages;
                    return(View());
                }

                uecResult.Episodes.Sort((e1, e2) =>
                {
                    if (e1.MileStones.Count == 0 && e2.MileStones.Count == 0)
                    {
                        return(0);
                    }
                    if (e1.MileStones.Count > 0 && e2.MileStones.Count == 0)
                    {
                        return(-1);
                    }
                    if (e1.MileStones.Count == 0 && e2.MileStones.Count > 0)
                    {
                        return(1);
                    }

                    DateTime e1D = e1.MileStones.OrderByDescending(e => e.MilestoneDate).First().MilestoneDate;
                    DateTime e2D = e2.MileStones.OrderByDescending(e => e.MilestoneDate).First().MilestoneDate;

                    return(e1D.CompareTo(e2D));
                });

                ViewBag.Episodes  = uecResult.Episodes;
                ViewBag.Patient   = clientResult.PatientDetails;
                ViewBag.PatientId = patientId;

                if (!episodeId.HasValue)
                {
                    episodeId       = 0;
                    ViewBag.Episode = new Episode();
                }
                else
                {
                    ViewBag.Episode = uecResult.Episodes.Where(e => e.Id == episodeId.Value).FirstOrDefault();
                }

                //if(episodeId.HasValue)
                {
                    ViewBag.EpisodeId = episodeId.Value;
                    var assignedQuestionnaires = uec.GetAssignedQuestionnairesForEpisode(episodeId.Value).AssignedQuestionnaires;
                    ViewBag.AssignedQuestionnaires = assignedQuestionnaires;
                    Dictionary <Episode, Dictionary <string, Dictionary <string, object> > > data;
                    Dictionary <Episode, Dictionary <string, List <ProDomainResultSet> > >   sets = ProResults.GetProDomainResultSetForPatient(patientId, episodeId.Value, out data);
                    ViewBag.DomainResultsSetData = data;
                    ViewBag.DomainResultsSet     = sets;
                    ViewBag.howManyColumns       = 5;
                }
            }

            return(View());
        }
        public ActionResult Patient(string patientId, PatientDetails details, string externalEpisodeId, string Condition, string PractitionerId, DateTime?Date)
        {
            if (string.IsNullOrWhiteSpace(patientId))
            {
                return(RedirectToAction("SeachPatients"));
            }

            if (details != null && !string.IsNullOrWhiteSpace(details.FirstName) && !string.IsNullOrWhiteSpace(details.LastName))
            {
                details.Id = patientId;
                PatientClient pc     = new PatientClient();
                var           result = pc.SavePatientDetails(patientId, details);
                if (result.Succeeded)
                {
                    return(RedirectToAction("Patient", new { patientId = patientId }));
                }
                ViewBag.ErrorMessage = result.ErrorMessages;
            }
            else if (!string.IsNullOrWhiteSpace(Condition))
            {
                PatientEpisodeClient uec    = new PatientEpisodeClient();
                OperationResult      result = uec.AssignEpisode(patientId, Condition, Date, externalEpisodeId, PractitionerId);

                if (result.Succeeded)
                {
                    return(RedirectToAction("Patient", new { patientId = patientId }));
                }
                ViewBag.ErrorMessage = result.ErrorMessages;
            }

            PatientClient client       = new PatientClient();
            var           clientResult = client.GetDetailsForPatient(patientId);

            if (!clientResult.Succeeded)
            {
                ViewBag.ErrorMessage += clientResult.ErrorMessages;
                return(View());
            }
            else
            {
                PatientEpisodeClient uec = new PatientEpisodeClient();
                var uecResult            = uec.GetEpisodesForPatient(patientId);

                if (!uecResult.Succeeded)
                {
                    ViewBag.ErrorMessage = uecResult.ErrorMessages;
                    return(View());
                }

                uecResult.Episodes.Sort((e1, e2) =>
                {
                    if (e1.MileStones.Count == 0 && e2.MileStones.Count == 0)
                    {
                        return(0);
                    }
                    if (e1.MileStones.Count > 0 && e2.MileStones.Count == 0)
                    {
                        return(-1);
                    }
                    if (e1.MileStones.Count == 0 && e2.MileStones.Count > 0)
                    {
                        return(1);
                    }

                    DateTime e1D = e1.MileStones.OrderByDescending(e => e.MilestoneDate).First().MilestoneDate;
                    DateTime e2D = e2.MileStones.OrderByDescending(e => e.MilestoneDate).First().MilestoneDate;

                    return(e1D.CompareTo(e2D));
                });

                ViewBag.Episodes  = uecResult.Episodes;
                ViewBag.PatientId = patientId;

                var ucClient = new UserClient();
                var ucResult = ucClient.GetPractitioners();
                ViewBag.Practitioners = ucResult.StringDictionary;
                return(View(clientResult.PatientDetails));
            }
        }