Skip to main content
Search for concepts by text:
results <- client$search$basic("diabetes mellitus", page_size = 20)
for (concept in results$data) {
  cat(sprintf("%s: %s\n", concept$concept_id, concept$concept_name))
}

Filter by Vocabulary

Restrict search to specific vocabularies:
results <- client$search$basic(
  "heart attack",
  vocabulary_ids = "SNOMED"
)

# Multiple vocabularies
results <- client$search$basic(
  "heart attack",
  vocabulary_ids = c("SNOMED", "ICD10CM")
)

Filter by Domain

Search within specific domains:
results <- client$search$basic(
  "aspirin",
  domain_ids = "Drug",
  page_size = 10
)

Combined Filters

results <- client$search$basic(
  "myocardial infarction",
  vocabulary_ids = "SNOMED",
  domain_ids = "Condition",
  page_size = 20
)

Autocomplete

Get suggestions as the user types:
result <- client$search$autocomplete("diab", max_suggestions = 10)
for (suggestion in result$suggestions) {
  print(suggestion$suggestion)
}

Pagination

Manual Pagination

# Get first page
results <- client$search$basic("diabetes", page = 1, page_size = 50)

# Access pagination metadata
pagination <- results$meta
cat(sprintf("Total: %d\n", pagination$total_items))
cat(sprintf("Pages: %d\n", pagination$total_pages))
cat(sprintf("Has next: %s\n", pagination$has_next))

# Get next page
if (isTRUE(pagination$has_next)) {
  results <- client$search$basic("diabetes", page = 2, page_size = 50)
}

Auto-Pagination with basic_all()

Fetch all results automatically and return as a tibble:
# Fetch up to 5 pages of results
all_results <- client$search$basic_all(
  "diabetes",
  page_size = 100,
  max_pages = 5,
  progress = TRUE  # Show progress bar
)

# Results are returned as a tibble
print(nrow(all_results))
print(names(all_results))

# Use with dplyr
library(dplyr)
all_results %>%
  filter(vocabulary_id == "SNOMED") %>%
  select(concept_id, concept_name, domain_id)
The basic_all() method returns a tibble, making it easy to integrate with tidyverse workflows.
Use advanced search with additional options:
results <- client$search$advanced(
  "diabetes",
  vocabularies = c("SNOMED", "ICD10CM"),
  domains = "Condition",
  standard_concepts_only = TRUE,
  limit = 50
)