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); }
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))); }