Basic Search
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)
}
# 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)
}
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.
Advanced Search
Use advanced search with additional options:
results <- client$search$advanced(
"diabetes",
vocabularies = c("SNOMED", "ICD10CM"),
domains = "Condition",
standard_concepts_only = TRUE,
limit = 50
)