/// <summary> /// Handles the specified request. /// </summary> /// <param name="request">The request.</param> /// <returns>A <see cref="Agatha.Common.Response"/></returns> public override Response Handle(GetPatientsByKeywordsRequest request) { IList <Expression <Func <Patient, object> > > propertiesToSearch = new List <Expression <Func <Patient, object> > > { p => p.Name.First, p => p.Name.Middle, p => p.Name.Last }; IList <Order> orders = new List <Order> { Order.Asc(Projections.Property <Patient> (p => p.Name.Last)), Order.Asc(Projections.Property <Patient> (p => p.Name.First)) }; IList <Expression <Func <Patient, IEnumerable> > > eagerLoadingAssociations = new List <Expression <Func <Patient, IEnumerable> > > { p => p.PhoneNumbers, p => p.Addresses }; var result = _keywordsSearchService.FindPagedEntityListByKeywords( request.SearchCriteria, propertiesToSearch, request.PageIndex, request.PageSize, orders, eagerLoadingAssociations); var pagedPatientSearchResultDto = new PagedPatientSearchResultDto { TotalCount = result.TotalCount, PageIndex = result.PageIndex, PageSize = result.PageSize, PagedList = Mapper.Map <IList <Patient>, IList <PatientSearchResultDto> > (result.ItemList) }; var response = CreateTypedResponse(); response.SearchCriteria = request.SearchCriteria; response.PagedPatientSearchResultDto = pagedPatientSearchResultDto; return(response); }
/// <summary> /// Handles the specified request. /// </summary> /// <param name="request">The request.</param> /// <returns>A <see cref="Agatha.Common.Response"/></returns> public override Response Handle(GetPatientsByAdvancedSearchRequest request) { var result = _patientRepository.FindPatientsByAdvancedSearch( request.FirstName, request.MiddleName, request.LastName, request.GenderWellKnownName, request.BirthDate, request.MotherMaidenName, request.IdentifierTypeWellKnownName, request.Identifier, request.AddressLineOne, request.City, request.StateWellKnownName, request.SuffixName, request.ZipCode, request.UniqueIdentifier, request.PageIndex, request.PageSize); var patientSearchResultDtos = Mapper.Map <IList <Patient>, IList <PatientSearchResultDto> > (result.Item3); var pagedPatientSearchResultDto = new PagedPatientSearchResultDto { TotalCount = result.Item1, PageIndex = result.Item2, PageSize = request.PageSize, PagedList = patientSearchResultDtos }; var response = CreateTypedResponse(); response.PagedPatientSearchResultDto = pagedPatientSearchResultDto; return(response); }