Esempio n. 1
0
        public SearchResults Search(string resourceType, SearchParams searchCommand)
        {
            SearchResults results = new SearchResults();

            var criteria = parseCriteria(searchCommand, results);

            if (!results.HasErrors)
            {
                results.UsedCriteria = criteria.Select(c => c.Clone()).ToList();

                criteria = EnrichCriteriaWithSearchParameters(_fhirModel.GetResourceTypeForResourceName(resourceType),
                                                              results);

                var normalizedCriteria    = NormalizeNonChainedReferenceCriteria(criteria, resourceType);
                var normalizeSortCriteria = NormalizeSortItems(resourceType, searchCommand);

                List <BsonValue> selfLinks = CollectSelfLinks(resourceType, normalizedCriteria, results, 0, normalizeSortCriteria);

                foreach (BsonValue selfLink in selfLinks)
                {
                    results.Add(selfLink.ToString());
                }
                results.MatchCount = selfLinks.Count;
            }

            return(results);
        }
Esempio n. 2
0
        public SearchResults Search(string resourceType, SearchParams searchCommand)
        {
            SearchResults results = new SearchResults();

            var criteria = parseCriteria(searchCommand, results);

            if (!results.HasErrors)
            {
                results.UsedCriteria = criteria.Select(c => c.Clone()).ToList();

                criteria = EnrichCriteriaWithSearchParameters(criteria, _fhirModel.GetResourceTypeForResourceName(resourceType), results);

                var normalizedCriteria = NormalizeNonChainedReferenceCriteria(criteria, resourceType);
                List <BsonValue> keys  = CollectKeys(resourceType, normalizedCriteria, results, 0);

                int numMatches = keys.Count();

                results.AddRange(KeysToSearchResults(keys));
                results.MatchCount = numMatches;
            }

            return(results);
        }