public IEnumerable <PeriodPerformanceInfo> GetPeriodPerformanceReport(string hospitalId, string specialtyCode)
        {
            var parsedHospitalId = int.Parse(hospitalId);
            var clinicians       = _clinicianRepository
                                   .Get(clinician =>
                                        clinician.Specialty.Code == specialtyCode &&
                                        ((string.IsNullOrEmpty(hospitalId)) || clinician.Hospital.Id == parsedHospitalId))
                                   .ToArray();

            var clinicianIds = clinicians.Select(clinician => clinician.Id);

            var allCompletedEvents = _completedEventRepository
                                     .Get(completedEvent =>
                                          clinicianIds.Contains(completedEvent.Clinician.Id) &&
                                          completedEvent.Period.ShouldCountForBreaches,
                                          null, null,
                                          completedEvent => completedEvent.Period,
                                          completedEvent => completedEvent.Clinician)
                                     .ToArray();

            return(from clinicianId in clinicianIds
                   let completedEventsForClinician = allCompletedEvents
                                                     .Where(completedEventForClinician => completedEventForClinician.Clinician.Id == clinicianId)
                                                     .ToList()
                                                     let periodBreachesCounter = _periodBreachesCounterReportService
                                                                                 .GetPeriodBreachesCounterInfo(completedEventsForClinician, clinicians.Single(clinician => clinician.Id == clinicianId).Name, clinicianId.ToString(CultureInfo.InvariantCulture))
                                                                                 where periodBreachesCounter != null
                                                                                 select periodBreachesCounter);
        }
Example #2
0
 public virtual IEnumerable <ClinicianInfo> GetClinicians(int?hospitalId, string specialtyCode)
 {
     return(_clinicianRepository.Get(clinician =>
                                     (string.IsNullOrEmpty(specialtyCode) || clinician.Specialty.Code == specialtyCode) &&
                                     (hospitalId == null || clinician.Hospital.Id == hospitalId)).Select(clinician => _clinicianToClinicianInfoMapper.Map(clinician)));
 }