// New Search Query

        public async Task <List <PatientDetailDto> > Search(SearchPatientDetailsQuery searchRequest)
        {
            var ClientIndex = searchRequest.ClientName.Replace(" ", string.Empty).ToLower();
            var filters     = new List <Func <QueryContainerDescriptor <PatientDetailDto>, QueryContainer> >();

            if (!string.IsNullOrEmpty(searchRequest.Facility))
            {
                filters.Add(fq => fq.Match(t => t.Field(f => f.Facility).Query(searchRequest.Facility)));
            }
            if (!string.IsNullOrEmpty(searchRequest.FirstName))
            {
                filters.Add(fq => fq.Match(t => t.Field(f => f.FirstName).Query(searchRequest.FirstName)));
            }

            if (!string.IsNullOrEmpty(searchRequest.LastName))
            {
                filters.Add(fq => fq.Match(t => t.Field(f => f.LastName).Query(searchRequest.LastName)));
            }

            if (!string.IsNullOrEmpty(searchRequest.FinancialClass))
            {
                filters.Add(fq => fq.Match(t => t.Field(f => f.FinancialClass).Query(searchRequest.FinancialClass)));
            }

            if (!string.IsNullOrEmpty(searchRequest.PayerCode))
            {
                filters.Add(fq => fq.Match(t => t.Field(f => f.PayerCode).Query(searchRequest.PayerCode)));
            }

            if (!string.IsNullOrEmpty(searchRequest.AccountNumber))
            {
                filters.Add(fq => fq.Terms(t => t.Field(f => f.AccountNumber).Terms(searchRequest.AccountNumber)));
            }
            if (searchRequest.DateFrom != null || searchRequest.DateTo != null)
            {
                if (searchRequest.DateFrom != null)
                {
                    filters.Add(fq => fq.DateRange(d => d.Field(f => f.AdmitDate).GreaterThanOrEquals(searchRequest.DateFrom)));
                }

                if (searchRequest.DateTo != null)
                {
                    filters.Add(fq => fq.DateRange(d => d.Field(f => f.AdmitDate).LessThanOrEquals(searchRequest.DateTo)));
                }
            }

            var results = await ElasticSearchClient.GetClient().SearchAsync <PatientDetailDto>(s => s
                                                                                               .From(searchRequest.Skip)
                                                                                               .Size(searchRequest.PageSize)
                                                                                               .Index(ClientIndex)
                                                                                               .Query((q => q
                                                                                                       .Bool(bq => bq.Filter(filters)))));

            return(results.Documents.ToList());
        }
Example #2
0
        public async Task <ActionResult> SearchAsync([FromQuery] QueryStringConstructor q)
        {
            var command = new SearchPatientDetailsQuery()
            {
                QueryText = q.Query
            };

            _logger.LogInformation("-----Sending command: RegistrationCommand");
            var result = await _mediatr.Send(command);

            return(new JsonResult(result));
        }
        public async Task <List <PatientDetailDto> > FindPatientDetails(SearchPatientDetailsQuery searchRequest)
        {
            var result = await ElasticSearchClient.GetClient()
                         .SearchAsync <PatientDetailDto>(
                s =>
                s.From(0)
                .Size(10)
                .Query(q =>
                       q.Bool(b =>
                              b.Must(m =>
                                     m.Match(mm =>
                                             mm.Query(searchRequest.Query)
                                             .Field(f => f.PatientVisitID))))));

            return(result.Documents.ToList());
        }
Example #4
0
        public async Task <ActionResult <IEnumerable <PatientSearchDto> > > SearchAsync([FromQuery] QueryStringConstructor Searchquery)
        {
            var command = new SearchPatientDetailsQuery()
            {
                Query          = Searchquery.Query, FirstName = Searchquery.FirstName,
                LastName       = Searchquery.LastName,
                AccountNumber  = Searchquery.AccountNumber,
                DateFrom       = Searchquery.DateFrom,
                PayerCode      = Searchquery.PayerCode,
                DateTo         = Searchquery.DateTo,
                FinancialClass = Searchquery.FinancialClass,
                ClientName     = Searchquery.ClientName, Facility = Searchquery.FacilityCode
            };

            _logger.LogInformation("-----Sending command: RegistrationCommand");
            var result = await _mediatr.Send(command);

            return(new JsonResult(result.SearchResult));
        }