curl -X GET "https://api.omophub.com/v1/concept-classes?include_stats=true" \
-H "Authorization: Bearer YOUR_API_KEY"
import { OMOPHub } from '@omophub/omophub-node';
// Top-level `/concept-classes` endpoint is not yet a dedicated SDK method
// (the SDK exposes vocabulary-scoped `client.vocabularies.conceptClasses(vocabId)`).
// Use the typed low-level helper for the global list.
const client = new OMOPHub();
const { data } = await client.get<{ concept_classes: Array<{ concept_class_name: string; concept_count?: number }> }>(
'/concept-classes',
{ query: { includeStats: true } },
);
console.log(`Found ${data?.concept_classes.length} concept classes`);
data?.concept_classes.forEach(cc => {
console.log(`${cc.concept_class_name}: ${cc.concept_count ?? 'N/A'} concepts`);
});
import requests
response = requests.get(
"https://api.omophub.com/v1/concept-classes",
params={"include_stats": True, "vocabulary_ids": "SNOMED,RxNorm"},
headers={"Authorization": "Bearer YOUR_API_KEY"}
)
data = response.json()
for cc in data["data"]["concept_classes"]:
print(f"{cc['concept_class_name']}: {cc.get('concept_count', 'N/A')} concepts")
{
"success": true,
"data": {
"concept_classes": [
{
"concept_class_id": "Clinical Finding",
"concept_class_name": "Clinical Finding",
"concept_class_concept_id": 441840,
"concept_count": 425891,
"vocabulary_coverage": ["SNOMED", "Read"]
},
{
"concept_class_id": "Ingredient",
"concept_class_name": "Ingredient",
"concept_class_concept_id": 441828,
"concept_count": 45678,
"vocabulary_coverage": ["RxNorm", "SNOMED"]
},
{
"concept_class_id": "Procedure",
"concept_class_name": "Procedure",
"concept_class_concept_id": 441838,
"concept_count": 198765,
"vocabulary_coverage": ["SNOMED", "HCPCS"]
}
]
},
"meta": {
"request_id": "req_abc123",
"vocab_release": "2025.1",
"timestamp": "2025-01-05T10:00:00Z"
}
}
Get Concept Classes
Retrieve all OMOP concept classes that categorize medical concepts - Clinical Finding, Ingredient, Procedure, and the complete OHDSI classification set.
curl -X GET "https://api.omophub.com/v1/concept-classes?include_stats=true" \
-H "Authorization: Bearer YOUR_API_KEY"
import { OMOPHub } from '@omophub/omophub-node';
// Top-level `/concept-classes` endpoint is not yet a dedicated SDK method
// (the SDK exposes vocabulary-scoped `client.vocabularies.conceptClasses(vocabId)`).
// Use the typed low-level helper for the global list.
const client = new OMOPHub();
const { data } = await client.get<{ concept_classes: Array<{ concept_class_name: string; concept_count?: number }> }>(
'/concept-classes',
{ query: { includeStats: true } },
);
console.log(`Found ${data?.concept_classes.length} concept classes`);
data?.concept_classes.forEach(cc => {
console.log(`${cc.concept_class_name}: ${cc.concept_count ?? 'N/A'} concepts`);
});
import requests
response = requests.get(
"https://api.omophub.com/v1/concept-classes",
params={"include_stats": True, "vocabulary_ids": "SNOMED,RxNorm"},
headers={"Authorization": "Bearer YOUR_API_KEY"}
)
data = response.json()
for cc in data["data"]["concept_classes"]:
print(f"{cc['concept_class_name']}: {cc.get('concept_count', 'N/A')} concepts")
{
"success": true,
"data": {
"concept_classes": [
{
"concept_class_id": "Clinical Finding",
"concept_class_name": "Clinical Finding",
"concept_class_concept_id": 441840,
"concept_count": 425891,
"vocabulary_coverage": ["SNOMED", "Read"]
},
{
"concept_class_id": "Ingredient",
"concept_class_name": "Ingredient",
"concept_class_concept_id": 441828,
"concept_count": 45678,
"vocabulary_coverage": ["RxNorm", "SNOMED"]
},
{
"concept_class_id": "Procedure",
"concept_class_name": "Procedure",
"concept_class_concept_id": 441838,
"concept_count": 198765,
"vocabulary_coverage": ["SNOMED", "HCPCS"]
}
]
},
"meta": {
"request_id": "req_abc123",
"vocab_release": "2025.1",
"timestamp": "2025-01-05T10:00:00Z"
}
}
This endpoint returns concept classes, which provide categorization of medical concepts within their domains. Concept classes distinguish between different types of concepts like “Clinical Finding” vs “Disorder” within conditions, or “Ingredient” vs “Clinical Drug” within drugs.
Query Parameters
string
Filter concept classes to those used by specific vocabularies. Comma-separated list.
Example:
Example:
SNOMED,RxNorm,ICD10CMboolean
default:"false"
Include concept counts and vocabulary coverage for each concept class.
string
Specific vocabulary release version to query
Example:
Example:
2025.1Response
boolean
Indicates if the request was successful.
object
Response data container.
Show Data Object
Show Data Object
array
Array of concept class objects.
Show Concept Class Object
Show Concept Class Object
string
Unique identifier for the concept class.
string
Human-readable name of the concept class.
integer
OMOP concept ID representing this concept class.
integer
Number of concepts in this concept class (when
include_stats=true).array
List of vocabulary IDs that have concepts in this class (when
include_stats=true).object
curl -X GET "https://api.omophub.com/v1/concept-classes?include_stats=true" \
-H "Authorization: Bearer YOUR_API_KEY"
import { OMOPHub } from '@omophub/omophub-node';
// Top-level `/concept-classes` endpoint is not yet a dedicated SDK method
// (the SDK exposes vocabulary-scoped `client.vocabularies.conceptClasses(vocabId)`).
// Use the typed low-level helper for the global list.
const client = new OMOPHub();
const { data } = await client.get<{ concept_classes: Array<{ concept_class_name: string; concept_count?: number }> }>(
'/concept-classes',
{ query: { includeStats: true } },
);
console.log(`Found ${data?.concept_classes.length} concept classes`);
data?.concept_classes.forEach(cc => {
console.log(`${cc.concept_class_name}: ${cc.concept_count ?? 'N/A'} concepts`);
});
import requests
response = requests.get(
"https://api.omophub.com/v1/concept-classes",
params={"include_stats": True, "vocabulary_ids": "SNOMED,RxNorm"},
headers={"Authorization": "Bearer YOUR_API_KEY"}
)
data = response.json()
for cc in data["data"]["concept_classes"]:
print(f"{cc['concept_class_name']}: {cc.get('concept_count', 'N/A')} concepts")
{
"success": true,
"data": {
"concept_classes": [
{
"concept_class_id": "Clinical Finding",
"concept_class_name": "Clinical Finding",
"concept_class_concept_id": 441840,
"concept_count": 425891,
"vocabulary_coverage": ["SNOMED", "Read"]
},
{
"concept_class_id": "Ingredient",
"concept_class_name": "Ingredient",
"concept_class_concept_id": 441828,
"concept_count": 45678,
"vocabulary_coverage": ["RxNorm", "SNOMED"]
},
{
"concept_class_id": "Procedure",
"concept_class_name": "Procedure",
"concept_class_concept_id": 441838,
"concept_count": 198765,
"vocabulary_coverage": ["SNOMED", "HCPCS"]
}
]
},
"meta": {
"request_id": "req_abc123",
"vocab_release": "2025.1",
"timestamp": "2025-01-05T10:00:00Z"
}
}
Usage Examples
All Concept Classes
Get all concept classes without statistics:GET /v1/concept-classes
With Statistics
Get concept classes with concept counts and vocabulary coverage:GET /v1/concept-classes?include_stats=true
Filter by Vocabulary
Get concept classes used by specific vocabularies:GET /v1/concept-classes?vocabulary_ids=SNOMED,RxNorm&include_stats=true
Related Endpoints
- Get Domains - Available domain information
- Get Domain Concepts - Concepts within a domain
Notes
- Concept classes provide finer categorization than domains
- Many concept classes are vocabulary-specific (e.g., “3-char billing code” for ICD codes)
- When filtering by vocabulary, only concept classes that contain concepts from those vocabularies are returned
- The
vocabulary_coveragefield shows which vocabularies contribute concepts to each class
Was this page helpful?