Introduction
The omophub package provides an R interface to the OMOPHub API for accessing OHDSI ATHENA standardized medical vocabularies. This vignette demonstrates basic usage patterns.
Installation
Install from GitHub:
# install.packages("devtools")
devtools::install_github("omophub/omophub-R")Authentication
The package requires an API key from OMOPHub.
Set your API key as an environment variable:
Sys.setenv(OMOPHUB_API_KEY = "your_api_key_here")Or add it to your .Renviron file for persistence:
OMOPHUB_API_KEY=your_api_key_here
Creating a Client
library(omophub)
# Create client (reads API key from environment)
client <- OMOPHubClient$new()
# Or provide API key explicitly
client <- OMOPHubClient$new(api_key = "your_api_key")
# With additional options
client <- OMOPHubClient$new(
api_key = "your_api_key",
timeout = 30,
max_retries = 3,
vocab_version = "2025.1"
)Getting Concepts
Retrieve a concept by its OMOP concept ID:
concept <- client$concepts$get(201826)
print(concept$concept_name)
# [1] "Type 2 diabetes mellitus"Get a concept by vocabulary-specific code:
concept <- client$concepts$get_by_code("SNOMED", "44054006")
print(concept$concept_name)
# [1] "Type 2 diabetes mellitus"Searching Concepts
Basic search:
results <- client$search$basic("diabetes mellitus", page_size = 10)
for (concept in results$data) {
cat(sprintf("%s: %s\n", concept$concept_id, concept$concept_name))
}Search with filters:
results <- client$search$basic(
"heart attack",
vocabulary_ids = "SNOMED",
domain_ids = "Condition",
page_size = 20
)Autocomplete
Get suggestions for autocomplete:
suggestions <- client$search$autocomplete("diab", max_suggestions = 5)
for (s in suggestions$suggestions) {
print(s$suggestion)
}Pagination
Manual Pagination
# First page
results <- client$search$basic("diabetes", page = 1, page_size = 50)
# Check pagination info
print(results$meta$total_items)
print(results$meta$has_next)
# Get next page if available
if (isTRUE(results$meta$has_next)) {
page2 <- client$search$basic("diabetes", page = 2, page_size = 50)
}Hierarchy Navigation
Get ancestors (parent concepts):
result <- client$hierarchy$ancestors(201826, max_levels = 3)
for (ancestor in result$ancestors) {
print(ancestor$concept_name)
}Get descendants (child concepts):
result <- client$hierarchy$descendants(201826, max_levels = 2)
for (descendant in result$descendants) {
print(descendant$concept_name)
}Concept Mappings
Find how a concept maps to other vocabularies:
result <- client$mappings$get(201826)
for (mapping in result$mappings) {
cat(sprintf("%s: %s\n",
mapping$target_vocabulary_id,
mapping$target_concept_name))
}Map to specific vocabularies:
result <- client$mappings$get(
201826,
target_vocabularies = c("ICD10CM", "ICD9CM")
)