Get Mappings for a Concept
Find how a concept maps to other vocabularies:
result <- client$mappings$get(201826) # Type 2 diabetes mellitus
for (mapping in result$data$mappings) {
cat(sprintf("%s: %s\n", mapping$relationship_id, mapping$target_concept_name))
}
Filter by Target Vocabulary
Get mappings to a specific vocabulary only:
result <- client$mappings$get(
201826,
target_vocabulary = "ICD10CM"
)
for (mapping in result$data$mappings) {
cat(sprintf("%s: %s\n", mapping$target_concept_id, mapping$target_concept_name))
}
Include Invalid Mappings
Include deprecated or invalid mappings in results:
result <- client$mappings$get(
201826,
target_vocabulary = "ICD10CM",
include_invalid = TRUE
)
Use Specific Vocabulary Version
Query mappings from a specific vocabulary release:
result <- client$mappings$get(
201826,
target_vocabulary = "ICD10CM",
vocab_release = "2025.1"
)
Map Multiple Concepts
Map a batch of concept IDs to a target vocabulary:
result <- client$mappings$map(
target_vocabulary = "ICD10CM",
source_concepts = c(201826, 4329847) # Diabetes, MI
)
for (mapping in result$data$mappings) {
source <- mapping$source_concept_id
target <- mapping$target_concept_id
cat(sprintf("%s -> %s\n", source, target))
}
Map Using Vocabulary Codes
Map concepts directly using vocabulary codes instead of OMOP concept IDs:
result <- client$mappings$map(
target_vocabulary = "RxNorm",
source_codes = list(
list(vocabulary_id = "SNOMED", concept_code = "387517004"), # Acetaminophen
list(vocabulary_id = "SNOMED", concept_code = "108774000") # Anastrozole
)
)
for (mapping in result$data$mappings) {
cat(sprintf("%s -> %s\n", mapping$source_concept_name, mapping$target_concept_name))
}
Use source_codes when you have vocabulary-specific codes (e.g., SNOMED codes from your source system).
Use source_concepts when you already have OMOP concept IDs.
You cannot use both parameters in the same request.
Map with Specific Mapping Type
Filter mappings by type:
result <- client$mappings$map(
target_vocabulary = "ICD10CM",
source_concepts = c(201826, 192671),
mapping_type = "direct" # "direct", "equivalent", "broader", "narrower"
)
Common Use Case: SNOMED to ICD-10
Option 1: Direct mapping using vocabulary codes (recommended)
result <- client$mappings$map(
target_vocabulary = "ICD10CM",
source_codes = list(
list(vocabulary_id = "SNOMED", concept_code = "44054006") # Type 2 diabetes
)
)
for (m in result$data$mappings) {
cat(sprintf(" -> %s (%s)\n", m$target_concept_name, m$target_concept_code))
}
Option 2: Using OMOP concept IDs
# First get the OMOP concept ID
concept <- client$concepts$get_by_code("SNOMED", "44054006")
# Then map using the concept ID
mappings <- client$mappings$get(
concept$concept_id,
target_vocabulary = "ICD10CM"
)
cat(sprintf("Mapping %s:\n", concept$concept_name))
for (m in mappings$data$mappings) {
cat(sprintf(" -> %s (confidence: %s)\n", m$target_concept_name, m$confidence))
}
Working with Mapping Results
Convert mappings to a data frame for analysis:
result <- client$mappings$get(201826)
# Create a data frame from mappings
mapping_df <- do.call(rbind, lapply(result$data$mappings, function(m) {
data.frame(
source_id = m$source_concept_id,
source_name = m$source_concept_name,
target_id = m$target_concept_id,
target_name = m$target_concept_name,
relationship = m$relationship_id,
confidence = m$confidence,
stringsAsFactors = FALSE
)
}))
print(mapping_df)