curl -X POST "https://api.omophub.com/v1/concepts/hierarchy/batch" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"queries": [
{
"query_id": "q1",
"concept_id": 201826,
"operation": "ancestors",
"params": {
"max_levels": 5
}
},
{
"query_id": "q2",
"concept_id": 4182210,
"operation": "descendants",
"params": {
"max_levels": 3
}
},
{
"query_id": "q3",
"concept_id": 313217,
"operation": "hierarchy",
"params": {
"max_levels": 4,
"relationship_types": ["Is a"]
}
}
]
}'
{
"success": true,
"data": {
"results": [
{
"query_id": "q1",
"concept_id": 201826,
"operation": "ancestors",
"success": true,
"data": {
"ancestors": [
{
"concept_id": 73211009,
"concept_name": "Diabetes mellitus",
"vocabulary_id": "SNOMED",
"domain_id": "Condition",
"concept_class_id": "Clinical Finding",
"standard_concept": "S",
"level": 1
},
{
"concept_id": 64572001,
"concept_name": "Disease",
"vocabulary_id": "SNOMED",
"domain_id": "Condition",
"concept_class_id": "Clinical Finding",
"standard_concept": "S",
"level": 2
}
],
"total_count": 2
}
},
{
"query_id": "q2",
"concept_id": 4182210,
"operation": "descendants",
"success": true,
"data": {
"descendants": [
{
"concept_id": 320128,
"concept_name": "Essential hypertension",
"vocabulary_id": "SNOMED",
"domain_id": "Condition",
"concept_class_id": "Clinical Finding",
"standard_concept": "S",
"level": 1
}
],
"total_count": 1
}
},
{
"query_id": "q3",
"concept_id": 313217,
"operation": "hierarchy",
"success": true,
"data": {
"ancestors": [
{
"concept_id": 49436004,
"concept_name": "Atrial fibrillation and flutter",
"vocabulary_id": "SNOMED",
"domain_id": "Condition",
"concept_class_id": "Clinical Finding",
"standard_concept": "S",
"level": 1
}
],
"descendants": [],
"total_count": 1
}
}
]
},
"meta": {
"request_id": "req_batch_hierarchy_123",
"timestamp": "2024-12-22T10:00:00Z",
"vocab_release": "2025.1"
}
}
Batch Hierarchy Queries
Run multiple OMOP concept hierarchy lookups in a single batched request to efficiently retrieve ancestors and descendants for bulk ETL workflows.
curl -X POST "https://api.omophub.com/v1/concepts/hierarchy/batch" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"queries": [
{
"query_id": "q1",
"concept_id": 201826,
"operation": "ancestors",
"params": {
"max_levels": 5
}
},
{
"query_id": "q2",
"concept_id": 4182210,
"operation": "descendants",
"params": {
"max_levels": 3
}
},
{
"query_id": "q3",
"concept_id": 313217,
"operation": "hierarchy",
"params": {
"max_levels": 4,
"relationship_types": ["Is a"]
}
}
]
}'
{
"success": true,
"data": {
"results": [
{
"query_id": "q1",
"concept_id": 201826,
"operation": "ancestors",
"success": true,
"data": {
"ancestors": [
{
"concept_id": 73211009,
"concept_name": "Diabetes mellitus",
"vocabulary_id": "SNOMED",
"domain_id": "Condition",
"concept_class_id": "Clinical Finding",
"standard_concept": "S",
"level": 1
},
{
"concept_id": 64572001,
"concept_name": "Disease",
"vocabulary_id": "SNOMED",
"domain_id": "Condition",
"concept_class_id": "Clinical Finding",
"standard_concept": "S",
"level": 2
}
],
"total_count": 2
}
},
{
"query_id": "q2",
"concept_id": 4182210,
"operation": "descendants",
"success": true,
"data": {
"descendants": [
{
"concept_id": 320128,
"concept_name": "Essential hypertension",
"vocabulary_id": "SNOMED",
"domain_id": "Condition",
"concept_class_id": "Clinical Finding",
"standard_concept": "S",
"level": 1
}
],
"total_count": 1
}
},
{
"query_id": "q3",
"concept_id": 313217,
"operation": "hierarchy",
"success": true,
"data": {
"ancestors": [
{
"concept_id": 49436004,
"concept_name": "Atrial fibrillation and flutter",
"vocabulary_id": "SNOMED",
"domain_id": "Condition",
"concept_class_id": "Clinical Finding",
"standard_concept": "S",
"level": 1
}
],
"descendants": [],
"total_count": 1
}
}
]
},
"meta": {
"request_id": "req_batch_hierarchy_123",
"timestamp": "2024-12-22T10:00:00Z",
"vocab_release": "2025.1"
}
}
Overview
This endpoint allows you to perform multiple hierarchy queries (ancestors, descendants, or full hierarchy) for multiple concepts in a single API call. This is highly efficient for applications that need hierarchical information for many concepts simultaneously.Request Body
Array of hierarchy query requests (1-100 queries)
Show queries
Show queries
Unique identifier for this query (used to match results)
The OMOP concept ID to query hierarchy for
Type of hierarchy query. Options:
ancestors, descendants, hierarchy, level, relationships, related, traverseOptional parameters for the query
Show params
Show params
Maximum number of hierarchy levels to traverse
Array of relationship types to follow (default: [“Is a”])
Limit results to specific vocabularies
Limit results to specific domains
Include relationships to invalid/deprecated concepts
Query Parameters
Specific vocabulary release version (e.g., “2025.1”)
Response
Indicates whether the request was successful
Response data containing batch results
Show data
Show data
Array of query results matching the input order
Show results
Show results
The query identifier from the request
The concept ID that was queried
The operation that was performed
Whether this individual query succeeded
Result data if the query succeeded (structure varies by operation)
Show data (ancestors/descendants)
Show data (ancestors/descendants)
Array of ancestor concepts (for ancestors/hierarchy operations)
Show concept object
Show concept object
OMOP concept ID
Primary concept name
Source vocabulary identifier
Clinical domain classification
Concept class identifier
Standard concept flag (S, C, or null)
Distance from the source concept in hierarchy
Array of descendant concepts (for descendants/hierarchy operations)
Show concept object
Show concept object
OMOP concept ID
Primary concept name
Source vocabulary identifier
Clinical domain classification
Concept class identifier
Standard concept flag (S, C, or null)
Distance from the source concept in hierarchy
Total number of results
Error message if the query failed
curl -X POST "https://api.omophub.com/v1/concepts/hierarchy/batch" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"queries": [
{
"query_id": "q1",
"concept_id": 201826,
"operation": "ancestors",
"params": {
"max_levels": 5
}
},
{
"query_id": "q2",
"concept_id": 4182210,
"operation": "descendants",
"params": {
"max_levels": 3
}
},
{
"query_id": "q3",
"concept_id": 313217,
"operation": "hierarchy",
"params": {
"max_levels": 4,
"relationship_types": ["Is a"]
}
}
]
}'
{
"success": true,
"data": {
"results": [
{
"query_id": "q1",
"concept_id": 201826,
"operation": "ancestors",
"success": true,
"data": {
"ancestors": [
{
"concept_id": 73211009,
"concept_name": "Diabetes mellitus",
"vocabulary_id": "SNOMED",
"domain_id": "Condition",
"concept_class_id": "Clinical Finding",
"standard_concept": "S",
"level": 1
},
{
"concept_id": 64572001,
"concept_name": "Disease",
"vocabulary_id": "SNOMED",
"domain_id": "Condition",
"concept_class_id": "Clinical Finding",
"standard_concept": "S",
"level": 2
}
],
"total_count": 2
}
},
{
"query_id": "q2",
"concept_id": 4182210,
"operation": "descendants",
"success": true,
"data": {
"descendants": [
{
"concept_id": 320128,
"concept_name": "Essential hypertension",
"vocabulary_id": "SNOMED",
"domain_id": "Condition",
"concept_class_id": "Clinical Finding",
"standard_concept": "S",
"level": 1
}
],
"total_count": 1
}
},
{
"query_id": "q3",
"concept_id": 313217,
"operation": "hierarchy",
"success": true,
"data": {
"ancestors": [
{
"concept_id": 49436004,
"concept_name": "Atrial fibrillation and flutter",
"vocabulary_id": "SNOMED",
"domain_id": "Condition",
"concept_class_id": "Clinical Finding",
"standard_concept": "S",
"level": 1
}
],
"descendants": [],
"total_count": 1
}
}
]
},
"meta": {
"request_id": "req_batch_hierarchy_123",
"timestamp": "2024-12-22T10:00:00Z",
"vocab_release": "2025.1"
}
}
Usage Examples
Simple Batch Ancestors
Get ancestors for multiple concepts:{
"queries": [
{"query_id": "q1", "concept_id": 201826, "operation": "ancestors"},
{"query_id": "q2", "concept_id": 4182210, "operation": "ancestors"},
{"query_id": "q3", "concept_id": 313217, "operation": "ancestors"}
]
}
Mixed Operations
Combine different operations in one batch:{
"queries": [
{"query_id": "ancestors_query", "concept_id": 201826, "operation": "ancestors", "params": {"max_levels": 5}},
{"query_id": "descendants_query", "concept_id": 4182210, "operation": "descendants", "params": {"max_levels": 3}},
{"query_id": "full_hierarchy", "concept_id": 313217, "operation": "hierarchy", "params": {"max_levels": 4}}
]
}
With Filtering
Use vocabulary and relationship filters:{
"queries": [
{
"query_id": "filtered_query",
"concept_id": 201826,
"operation": "hierarchy",
"params": {
"max_levels": 5,
"relationship_types": ["Is a"],
"vocabulary_ids": ["SNOMED", "ICD10CM"]
}
}
]
}
Important Notes
- Batch size limit: Maximum 100 queries per batch request
- Performance optimization: Batch processing is significantly faster than individual requests
- Error handling: Individual query failures don’t affect other queries in the batch
- Result matching: Use
query_idto match results to your input queries - Rate limiting: Batch requests count as single requests for rate limiting purposes
Related Endpoints
- Get Concept Ancestors - Single concept ancestors
- Get Concept Descendants - Single concept descendants
- Get Concept Hierarchy - Complete hierarchy tree
Was this page helpful?
⌘I