/// <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);
        }
示例#2
0
        /// <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);
        }