Skip to main content

Overview

The advanced search endpoint provides powerful multi-criteria search capabilities across healthcare vocabularies. Use complex queries, filters, and ranking to find the most relevant medical concepts.
Best for: Complex search scenarios requiring multiple filters, specific vocabularies, or advanced ranking criteria.
Query Requirements: Provide a configured whole-query clinical abbreviation, a query of at least 3 characters, or at least one selective filter (vocabulary_ids, domain_ids, or concept_class_ids). Filter-only requests and other 1-2 character queries are accepted only when one of those filters is present.

Endpoint

string
/v1/search/advanced

Authentication

string
required
Bearer token with your API key

Request Body

string
The search query termExample: "diabetes mellitus type 2"Validation: Query must be a configured abbreviation (COPD, CHF, MI, T2DM, HTN, or CKD) or at least 3 characters long, unless the request includes a vocabulary_ids, domain_ids, or concept_class_ids value. The field may be omitted for filter-only searches.
string[]
Array of vocabulary IDs to search withinOptions: SNOMED, ICD10CM, ICD9CM, RxNorm, LOINC, HCPCS, etc.Default: All vocabularies
string[]
Array of domain IDs to filter byOptions: Condition, Drug, Procedure, Measurement, Observation, etc.
string[]
Array of concept class IDs to filter byExamples: Clinical Finding, Pharmaceutical Substance, Procedure
boolean
default:false
Whether to include only standard (S) concepts. When omitted, concepts of every standard status are eligible.
boolean
default:true
Whether to include invalid/deprecated concepts. Set to false to return only currently valid concepts.
boolean
default:true
Whether to include facet counts in the response. Set to false when facet data is not needed.
boolean
default:false
Include published OMOP synonyms in candidate retrieval and match evidence.
string
default:"full_text"
Lexical retrieval mode. Semantic and hybrid search use their dedicated endpoints and are not aliases of this option.
number
default:"0"
Minimum bounded lexical-evidence score. This threshold is evaluated before clinical-utility ranking, so it removes weak text matches consistently rather than excluding an entire Standard, Classification, or non-standard tier.
string
default:"relevance"
Result sort. Clinical ranking applies only to relevance.
string
default:"desc"
Sort direction.
array
Require each returned concept to satisfy every relationship filter in the array. Filters are combined with AND, so every filter is required; there is no required field. Unknown relationship or vocabulary identifiers, and any field not listed below, return 400. Vocabulary access policy is always enforced on the concept at the other end of the relationship, including when only target_concept_id is supplied.
string
required
OMOP relationship identifier to require.
integer
Optional concept ID that the relationship must connect to.
string[]
Optional vocabulary IDs (1-20). The concept at the other end of the relationship must belong to one of them. Combined with target_concept_id, both conditions apply to the same relationship. Restricted vocabularies return 403 unless your API key is licensed for them.
string
Direction in which to evaluate the relationship. forward matches the returned concept as concept_id_1, reverse matches it as concept_id_2, and both accepts either orientation. Defaults to forward.
To keep only source concepts that map to SNOMED, for example ICD10CM codes with a standard SNOMED equivalent:
object
Return concepts valid at any point in this inclusive date range. A concept matches when its validity interval overlaps the requested interval; it does not need to start and end within the range. Either bound may be omitted for an open-ended range.
integer
default:"1"
Page number (1-based indexing)
integer
default:"20"
Number of results per page (max: 1000)

Response

boolean
Whether the request was successful
object
object
Response metadata including pagination

Examples

Complex Relationship Filtering

Search Features

  • Multi-field search: Searches concept names, synonyms, and descriptions
  • Phrase matching: Use quotes for exact phrases: "myocardial infarction"
  • Wildcard support: Use * for partial matching: diabet*
  • Boolean operators: Use AND, OR, NOT: diabetes AND type 2

Relevance Scoring

search_score is the normalized form of the shared deterministic ranking policy. Exact concept IDs and codes occupy the highest band. Text searches then use non-overlapping clinical-utility bands (valid Standard, Classification, valid non-standard, non-clinical artifact, invalid), with exact primary name, exact published synonym, prefix/phrase, token/full-text, and fuzzy/substring evidence ordered inside each band. Correlated text signals cannot cross a utility or evidence boundary. min_score is deliberately different: it filters the bounded lexical-evidence component only. For example, 0.6 retains exact primary-name and exact synonym evidence without treating a lower clinical-utility tier as insufficient merely because it is lower utility.

Result Ordering

With the default sort_by=relevance, search_score is authoritative, followed by deterministic core-clinical-domain, vocabulary-authority, name-length, name, and concept_id tie-breaks. The same score and order are used by optimized and fallback paths. sort_by=name, code and date are honoured exactly as asked and are not reordered by the policy. Passing a demoted class in concept_class_ids turns its demotion off, the same way it does on /v1/search/concepts. Use facets to understand result distribution:

Performance Tips

  1. Use specific vocabulary_ids: Limit search to relevant vocabularies only
  2. Filter by domain_ids: Reduce result set with domain filters
  3. Reasonable page sizes: Use page_size of 20-100 for best performance
  4. Cache results: Cache frequently accessed searches
  5. Use standard concepts: Set standard_concepts_only: true for faster queries
  6. Avoid broad queries: Queries shorter than 3 characters, including an omitted query, require at least one vocabulary_ids, domain_ids, or concept_class_ids filter.

Basic Search

Simple concept search with minimal parameters

Search Autocomplete

Real-time search suggestions

Similar Concepts

Find semantically similar concepts

Search Facets

Get available search facets