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