Skip to main content
This endpoint provides a comprehensive hierarchical view of a concept, showing its position within the medical vocabulary structure by including both ancestor (parent) and descendant (child) relationships in a single response.

Path Parameters

concept_id
integer
required
The unique identifier of the concept to retrieve hierarchy for
Example: 73211009 (Diabetes mellitus)

Query Parameters

format
string
default:"flat"
Response format for hierarchy data
Options: flat, graph
  • flat: Returns ancestors and descendants as separate arrays (default)
  • graph: Returns nodes and edges for visualization (similar to OHDSI Athena)
vocabulary_ids
string
Filter hierarchy to specific vocabularies (comma-separated)
Example: SNOMED,ICD10CM
domain_ids
string
Filter hierarchy to specific domains (comma-separated)
Example: Condition,Drug
max_levels
integer
default:"10"
Maximum number of hierarchy levels to traverse in both directions
Range: 1-20
max_results
integer
default:"500"
Maximum number of results to return per direction (ancestors/descendants) for performance optimization
Range: 1-5000
Recommended: Use 100-500 for interactive queries, up to 1000 for bulk analysis
This endpoint always traverses the Is a / Subsumes hierarchy. It reads OMOP’s precomputed concept_ancestor closure, which has no relationship column to filter on. A relationship_types parameter is accepted for backwards compatibility but has no effect here - passing Part of, or even a nonexistent relationship, returns the same result. To traverse other relationship types, use GET /v1/concepts/{concept_id}/relationships or POST /v1/concepts/relationships/traverse.
include_invalid
boolean
default:"false"
Include deprecated/invalid concepts in hierarchy (by default they are excluded)
vocab_release
string
Specific vocabulary release version to query
Example: 2025.1

Response

Flat Format (default)

concept_id
integer
The concept ID for which hierarchy was retrieved
ancestors
array
Array of ancestor concepts in hierarchical order
descendants
array
Array of descendant concepts in hierarchical order
level
integer
Current concept’s level in the hierarchy
max_level
integer
Maximum hierarchy depth
total_ancestors
integer
Total number of ancestor concepts
total_descendants
integer
Total number of descendant concepts

Graph Format (format=graph)

concept_id
integer
The concept ID for which hierarchy was retrieved
nodes
array
Array of concept nodes for visualization
edges
array
Array of relationship edges between concepts

Usage Examples

Basic Hierarchy View

Get complete hierarchy context for a concept:
TypeScript

Limited Depth Hierarchy

Control the depth of ancestor and descendant traversal:
TypeScript

Graph Format for Visualization

Get hierarchy in graph structure for D3.js or similar visualization libraries:
TypeScript

Filtered Hierarchy

Filter to specific vocabularies:
TypeScript

Notes

  • The hierarchy endpoint combines ancestors and descendants in a single request for convenience
  • Use the graph format when building visualizations (compatible with D3.js, Cytoscape, etc.)
  • The flat format is better for data processing and analysis
  • In graph format, level 0 is the central concept, negative levels are ancestors, positive are descendants
  • Large hierarchies may be limited by max_results to ensure performance
  • Cross-vocabulary concepts may show relationships spanning multiple vocabularies