Esempio n. 1
0
        public ActionResult GetCustomerEventCriticalData(CustomerEventCriticalDataListModelFilter filter = null, int pageNumber = 1)
        {
            int totalRecords;

            if (filter == null)
            {
                filter = new CustomerEventCriticalDataListModelFilter();
            }
            var model = _testResultService.GetCustomerwithCriticalData(pageNumber, _pageSize, filter, out totalRecords);

            if (model == null)
            {
                model = new CustomerEventCriticalDataListModel();
            }
            model.Filter = filter;

            var currentAction          = ControllerContext.RouteData.Values["action"].ToString();
            Func <int, string> urlFunc = pn => Url.Action(currentAction, new { pageNumber = pn, filter.CustomerName, filter.CustomerId, filter.FromDate, filter.ToDate, filter.EventId });

            model.PagingModel = new PagingModel(pageNumber, _pageSize, totalRecords, urlFunc);
            return(View(model));
        }
Esempio n. 2
0
        public CustomerEventCriticalDataListModel Create(IEnumerable <EventCustomerResult> eventCustomerResults, IEnumerable <Event> events, IEnumerable <Customer> customers, IEnumerable <OrderedPair <long, string> > ecAndPackagePair,
                                                         IEnumerable <OrderedPair <long, string> > ecAndTestPair, IEnumerable <CustomerCriticalData> customersCriticalData, IEnumerable <PrimaryCarePhysician> primaryCarePhysicians, IEnumerable <AssignedPhysicianViewModel> assignedPhysicians,
                                                         IEnumerable <CustomerResultStatusViewModel> customerResults, IEnumerable <Test> tests, IEnumerable <OrderedPair <long, long> > eventCustomerResultIdNotesIdPairs, IEnumerable <Notes> notes, IEnumerable <OrderedPair <long, string> > idNamePairs,
                                                         IEnumerable <Pod> pods, IEnumerable <OrderedPair <long, string> > eventIdHospitalPartnerNamePairs)
        {
            var listModel  = new CustomerEventCriticalDataListModel();
            var collection = new List <CustomerEventCriticalDataViewModel>();

            foreach (var eventCustomerResult in eventCustomerResults)
            {
                var theEvent = events.Where(e => e.Id == eventCustomerResult.EventId).Single();
                var customer = customers.Where(c => c.CustomerId == eventCustomerResult.CustomerId).Single();

                var podNames = string.Join(", ", pods.Where(p => theEvent.PodIds.Contains(p.Id)).Select(p => p.Name));

                var packagename = ecAndPackagePair.Where(p => p.FirstValue == eventCustomerResult.Id).Select(p => p.SecondValue).SingleOrDefault();
                var testsName   = string.Join(", ", ecAndTestPair.Where(p => p.FirstValue == eventCustomerResult.Id).Select(p => p.SecondValue).ToArray());

                if (string.IsNullOrEmpty(packagename))
                {
                    packagename = testsName;
                }
                else if (!string.IsNullOrEmpty(testsName))
                {
                    packagename += " + " + testsName;
                }

                var criticalData =
                    customersCriticalData.Where(
                        ccd =>
                        ccd.CustomerId == eventCustomerResult.CustomerId && ccd.EventId == eventCustomerResult.EventId)
                    .Select(ccd => ccd).ToList();

                var primaryCarePhysician = primaryCarePhysicians.Where(pcp => pcp.CustomerId == eventCustomerResult.CustomerId).Select(pcp => pcp).SingleOrDefault();

                var assignedPhysician =
                    assignedPhysicians.Where(ap => ap.EventCustomerId == eventCustomerResult.Id).Select(ap => ap).
                    SingleOrDefault();

                IEnumerable <Notes> customerNotes    = null;
                var eventCustomerResultIdNotesIdPair = eventCustomerResultIdNotesIdPairs.Where(ecrn => ecrn.FirstValue == eventCustomerResult.Id).Select(ecrn => ecrn.SecondValue).ToArray();
                if (eventCustomerResultIdNotesIdPair.Count() > 0)
                {
                    customerNotes = notes.Where(n => eventCustomerResultIdNotesIdPair.Contains(n.Id)).Select(n => n);
                }

                var hospitalPartnerName = eventIdHospitalPartnerNamePairs.Where(ehp => ehp.FirstValue == theEvent.Id).Select(ehp => ehp.SecondValue).SingleOrDefault();

                var viewModel = new CustomerEventCriticalDataViewModel
                {
                    EventCustomerResultId = eventCustomerResult.Id,
                    CustomerId            = customer.CustomerId,
                    CustomerName          = customer.NameAsString,
                    Address                                                     = Mapper.Map <Address, AddressViewModel>(customer.Address),
                    Email                                                       = customer.Email != null?customer.Email.ToString() : "",
                                                           Phone                = criticalData.Count > 0 ? criticalData.First().ContactNumber.ToString() : customer.HomePhoneNumber.ToString(),
                                                           CustomerOrder        = packagename,
                                                           EventId              = theEvent.Id,
                                                           EventName            = theEvent.Name,
                                                           EventDate            = theEvent.EventDate,
                                                           Pod                  = podNames,
                                                           HospitalSponsor      = !string.IsNullOrEmpty(hospitalPartnerName) ? hospitalPartnerName : "N/A",
                                                           PrimaryCarePhysician =
                                                               primaryCarePhysician != null?primaryCarePhysician.Name.ToString() : "",
                                                                   PrimaryPhysician  = assignedPhysician != null && assignedPhysician.Primary != null ? assignedPhysician.Primary.Name : "",
                                                                   OverReadPhysician = assignedPhysician != null && assignedPhysician.Overread != null ? assignedPhysician.Overread.Name : "",
                                                                   Notes             = customerNotes
                };
                var criticalTestDataViewModels = new List <CustomerEventCriticalTestDataViewModel>();

                var customerResult = customerResults.Where(tr => tr.EventCustomerId == eventCustomerResult.Id).FirstOrDefault();

                var testResults = customerResult.TestResults.Where(tr => tr.IsCritical || tr.CriticalMarkedByPhysician);
                var result      = "Urgent";
                foreach (var testResultStatusViewModel in testResults)
                {
                    var customerCriticalData = criticalData.Where(cd => cd.TestId == testResultStatusViewModel.TestId).Select(cd => cd).FirstOrDefault();
                    var testModel            = new CustomerEventCriticalTestDataViewModel
                    {
                        DateOfSubmission = customerCriticalData != null ? customerCriticalData.DateofSubmission : (DateTime?)null,
                        ContactNumber    = customerCriticalData != null ? customerCriticalData.ContactNumber : customer.HomePhoneNumber,
                        TechnicianName   = customerCriticalData != null?idNamePairs.Where(inp => inp.FirstValue == customerCriticalData.TechnicianId).Select(inp => inp.SecondValue).SingleOrDefault() : "",
                                               ValidatingTechnicianName = customerCriticalData != null?idNamePairs.Where(inp => inp.FirstValue == customerCriticalData.ValidatingTechnicianId).Select(inp => inp.SecondValue).SingleOrDefault() : "",
                                                                              PrimaryPhysicianName        = customerCriticalData != null ? customerCriticalData.Physician : "",
                                                                              TestName                    = tests.Where(t => t.Id == testResultStatusViewModel.TestId).Select(t => t.Name).Single(),
                                                                              TechnicianNotes             = customerCriticalData != null && !string.IsNullOrEmpty(customerCriticalData.TechnicianNotes) ? customerCriticalData.TechnicianNotes : "N/A",
                                                                              TechnicianNotesForPhysician =
                                                                                  customerCriticalData != null && !string.IsNullOrEmpty(customerCriticalData.TechnicianNotesforPhysician) ? customerCriticalData.TechnicianNotesforPhysician : "N/A",
                                                                              TestId     = testResultStatusViewModel.TestId,
                                                                              IsCritical = testResultStatusViewModel.IsCritical,
                                                                              IsUrgent   = testResultStatusViewModel.CriticalMarkedByPhysician
                    };
                    if (testModel.IsCritical)
                    {
                        result = "Critical";
                    }
                    if (!testModel.IsCritical && testModel.IsUrgent)
                    {
                        testModel.PrimaryPhysicianName        = testResultStatusViewModel.EvaluatedBy;
                        testModel.TechnicianNotesForPhysician = testResultStatusViewModel.PhysicianRemarks;
                    }
                    criticalTestDataViewModels.Add(testModel);
                }

                viewModel.Tests  = criticalTestDataViewModels;
                viewModel.Result = result;
                collection.Add(viewModel);
            }
            listModel.Collection = collection;
            return(listModel);
        }