curl -X GET "https://api.omophub.com/v1/domains?include_stats=true" \
-H "Authorization: Bearer YOUR_API_KEY"
import { OMOPHub } from '@omophub/omophub-node';
const client = new OMOPHub();
const { data } = await client.domains.list({ includeStats: true });
console.log(`Found ${data?.domains.length} domains`);
data?.domains.forEach(domain => {
const count = domain.concept_count ?? 'N/A';
console.log(`${domain.domain_name}: ${count} concepts`);
});
import requests
url = "https://api.omophub.com/v1/domains"
params = {"include_stats": "true"}
headers = {"Authorization": "Bearer YOUR_API_KEY"}
response = requests.get(url, params=params, headers=headers)
data = response.json()
print(f"Found {len(data['data']['domains'])} domains")
# Display domains sorted by concept count
domains = data['data']['domains']
for domain in sorted(domains, key=lambda d: d.get('concept_count', 0), reverse=True):
count = domain.get('concept_count', 0)
standard = domain.get('standard_concept_count', 0)
print(f"{domain['domain_name']}: {count:,} total, {standard:,} standard")
library(omophub)
client <- omophub_client()
domains <- client$domains$list(include_stats = TRUE)
# Display domains
for (domain in domains$domains) {
cat(sprintf("%s: %d concepts\n",
domain$domain_name,
domain$concept_count %||% 0))
}
{
"success": true,
"data": {
"domains": [
{
"domain_id": "Condition",
"domain_name": "Condition",
"domain_concept_id": 19
},
{
"domain_id": "Drug",
"domain_name": "Drug",
"domain_concept_id": 13
},
{
"domain_id": "Procedure",
"domain_name": "Procedure",
"domain_concept_id": 10
},
{
"domain_id": "Measurement",
"domain_name": "Measurement",
"domain_concept_id": 21
},
{
"domain_id": "Observation",
"domain_name": "Observation",
"domain_concept_id": 27
}
]
},
"meta": {
"request_id": "req_abc123",
"vocab_release": "2025.1"
}
}
{
"success": true,
"data": {
"domains": [
{
"domain_id": "Condition",
"domain_name": "Condition",
"domain_concept_id": 19,
"concept_count": 845672,
"standard_concept_count": 423891,
"vocabulary_coverage": ["SNOMED", "ICD10CM", "ICD10", "ICD9CM", "Read"]
},
{
"domain_id": "Drug",
"domain_name": "Drug",
"domain_concept_id": 13,
"concept_count": 652341,
"standard_concept_count": 198765,
"vocabulary_coverage": ["RxNorm", "RxNorm Extension", "NDC", "SNOMED"]
},
{
"domain_id": "Procedure",
"domain_name": "Procedure",
"domain_concept_id": 10,
"concept_count": 456789,
"standard_concept_count": 234561,
"vocabulary_coverage": ["SNOMED", "ICD10PCS", "HCPCS"]
},
{
"domain_id": "Measurement",
"domain_name": "Measurement",
"domain_concept_id": 21,
"concept_count": 234567,
"standard_concept_count": 156789,
"vocabulary_coverage": ["LOINC", "SNOMED"]
},
{
"domain_id": "Observation",
"domain_name": "Observation",
"domain_concept_id": 27,
"concept_count": 123456,
"standard_concept_count": 87654,
"vocabulary_coverage": ["SNOMED", "LOINC"]
}
]
},
"meta": {
"request_id": "req_xyz789",
"vocab_release": "2025.1"
}
}
Get Domains
Retrieve all OMOP domains - Condition, Drug, Measurement, Observation, Procedure - that group medical concepts into high-level semantic categories.
curl -X GET "https://api.omophub.com/v1/domains?include_stats=true" \
-H "Authorization: Bearer YOUR_API_KEY"
import { OMOPHub } from '@omophub/omophub-node';
const client = new OMOPHub();
const { data } = await client.domains.list({ includeStats: true });
console.log(`Found ${data?.domains.length} domains`);
data?.domains.forEach(domain => {
const count = domain.concept_count ?? 'N/A';
console.log(`${domain.domain_name}: ${count} concepts`);
});
import requests
url = "https://api.omophub.com/v1/domains"
params = {"include_stats": "true"}
headers = {"Authorization": "Bearer YOUR_API_KEY"}
response = requests.get(url, params=params, headers=headers)
data = response.json()
print(f"Found {len(data['data']['domains'])} domains")
# Display domains sorted by concept count
domains = data['data']['domains']
for domain in sorted(domains, key=lambda d: d.get('concept_count', 0), reverse=True):
count = domain.get('concept_count', 0)
standard = domain.get('standard_concept_count', 0)
print(f"{domain['domain_name']}: {count:,} total, {standard:,} standard")
library(omophub)
client <- omophub_client()
domains <- client$domains$list(include_stats = TRUE)
# Display domains
for (domain in domains$domains) {
cat(sprintf("%s: %d concepts\n",
domain$domain_name,
domain$concept_count %||% 0))
}
{
"success": true,
"data": {
"domains": [
{
"domain_id": "Condition",
"domain_name": "Condition",
"domain_concept_id": 19
},
{
"domain_id": "Drug",
"domain_name": "Drug",
"domain_concept_id": 13
},
{
"domain_id": "Procedure",
"domain_name": "Procedure",
"domain_concept_id": 10
},
{
"domain_id": "Measurement",
"domain_name": "Measurement",
"domain_concept_id": 21
},
{
"domain_id": "Observation",
"domain_name": "Observation",
"domain_concept_id": 27
}
]
},
"meta": {
"request_id": "req_abc123",
"vocab_release": "2025.1"
}
}
{
"success": true,
"data": {
"domains": [
{
"domain_id": "Condition",
"domain_name": "Condition",
"domain_concept_id": 19,
"concept_count": 845672,
"standard_concept_count": 423891,
"vocabulary_coverage": ["SNOMED", "ICD10CM", "ICD10", "ICD9CM", "Read"]
},
{
"domain_id": "Drug",
"domain_name": "Drug",
"domain_concept_id": 13,
"concept_count": 652341,
"standard_concept_count": 198765,
"vocabulary_coverage": ["RxNorm", "RxNorm Extension", "NDC", "SNOMED"]
},
{
"domain_id": "Procedure",
"domain_name": "Procedure",
"domain_concept_id": 10,
"concept_count": 456789,
"standard_concept_count": 234561,
"vocabulary_coverage": ["SNOMED", "ICD10PCS", "HCPCS"]
},
{
"domain_id": "Measurement",
"domain_name": "Measurement",
"domain_concept_id": 21,
"concept_count": 234567,
"standard_concept_count": 156789,
"vocabulary_coverage": ["LOINC", "SNOMED"]
},
{
"domain_id": "Observation",
"domain_name": "Observation",
"domain_concept_id": 27,
"concept_count": 123456,
"standard_concept_count": 87654,
"vocabulary_coverage": ["SNOMED", "LOINC"]
}
]
},
"meta": {
"request_id": "req_xyz789",
"vocab_release": "2025.1"
}
}
This endpoint provides information about all domains available in the OMOP vocabulary system. Domains represent high-level categorizations that group medical concepts by their semantic meaning, such as Condition, Drug, Procedure, and others.
Query Parameters
Include concept counts and vocabulary coverage for each domain
Specific vocabulary release version to query
Example:
Example:
2025.1Response
Array of domain objects with their properties
Show Domain Object
Show Domain Object
Unique identifier for the domain (e.g., “Condition”, “Drug”, “Procedure”)
Human-readable name of the domain
OMOP concept ID representing this domain
Total number of concepts in this domain (when
include_stats=true)Number of standard concepts in this domain (when
include_stats=true)List of vocabularies that contribute concepts to this domain (when
include_stats=true)curl -X GET "https://api.omophub.com/v1/domains?include_stats=true" \
-H "Authorization: Bearer YOUR_API_KEY"
import { OMOPHub } from '@omophub/omophub-node';
const client = new OMOPHub();
const { data } = await client.domains.list({ includeStats: true });
console.log(`Found ${data?.domains.length} domains`);
data?.domains.forEach(domain => {
const count = domain.concept_count ?? 'N/A';
console.log(`${domain.domain_name}: ${count} concepts`);
});
import requests
url = "https://api.omophub.com/v1/domains"
params = {"include_stats": "true"}
headers = {"Authorization": "Bearer YOUR_API_KEY"}
response = requests.get(url, params=params, headers=headers)
data = response.json()
print(f"Found {len(data['data']['domains'])} domains")
# Display domains sorted by concept count
domains = data['data']['domains']
for domain in sorted(domains, key=lambda d: d.get('concept_count', 0), reverse=True):
count = domain.get('concept_count', 0)
standard = domain.get('standard_concept_count', 0)
print(f"{domain['domain_name']}: {count:,} total, {standard:,} standard")
library(omophub)
client <- omophub_client()
domains <- client$domains$list(include_stats = TRUE)
# Display domains
for (domain in domains$domains) {
cat(sprintf("%s: %d concepts\n",
domain$domain_name,
domain$concept_count %||% 0))
}
{
"success": true,
"data": {
"domains": [
{
"domain_id": "Condition",
"domain_name": "Condition",
"domain_concept_id": 19
},
{
"domain_id": "Drug",
"domain_name": "Drug",
"domain_concept_id": 13
},
{
"domain_id": "Procedure",
"domain_name": "Procedure",
"domain_concept_id": 10
},
{
"domain_id": "Measurement",
"domain_name": "Measurement",
"domain_concept_id": 21
},
{
"domain_id": "Observation",
"domain_name": "Observation",
"domain_concept_id": 27
}
]
},
"meta": {
"request_id": "req_abc123",
"vocab_release": "2025.1"
}
}
{
"success": true,
"data": {
"domains": [
{
"domain_id": "Condition",
"domain_name": "Condition",
"domain_concept_id": 19,
"concept_count": 845672,
"standard_concept_count": 423891,
"vocabulary_coverage": ["SNOMED", "ICD10CM", "ICD10", "ICD9CM", "Read"]
},
{
"domain_id": "Drug",
"domain_name": "Drug",
"domain_concept_id": 13,
"concept_count": 652341,
"standard_concept_count": 198765,
"vocabulary_coverage": ["RxNorm", "RxNorm Extension", "NDC", "SNOMED"]
},
{
"domain_id": "Procedure",
"domain_name": "Procedure",
"domain_concept_id": 10,
"concept_count": 456789,
"standard_concept_count": 234561,
"vocabulary_coverage": ["SNOMED", "ICD10PCS", "HCPCS"]
},
{
"domain_id": "Measurement",
"domain_name": "Measurement",
"domain_concept_id": 21,
"concept_count": 234567,
"standard_concept_count": 156789,
"vocabulary_coverage": ["LOINC", "SNOMED"]
},
{
"domain_id": "Observation",
"domain_name": "Observation",
"domain_concept_id": 27,
"concept_count": 123456,
"standard_concept_count": 87654,
"vocabulary_coverage": ["SNOMED", "LOINC"]
}
]
},
"meta": {
"request_id": "req_xyz789",
"vocab_release": "2025.1"
}
}
Usage Examples
Basic Domain List
Get all available domains:TypeScript
const { data } = await client.domains.list();
console.log(data?.domains);
Domains with Statistics
Get domains with concept counts and vocabulary coverage:TypeScript
const { data } = await client.domains.list({ includeStats: true });
// Find the domain with the most concepts
const largestDomain = data?.domains.reduce<{ domain_name?: string; concept_count?: number }>(
(max, domain) => ((domain.concept_count ?? 0) > (max.concept_count ?? 0) ? domain : max),
{},
);
console.log(`Largest domain: ${largestDomain?.domain_name} with ${largestDomain?.concept_count} concepts`);
Filter by Vocabulary Coverage
Find domains that include concepts from a specific vocabulary:TypeScript
const { data } = await client.domains.list({ includeStats: true });
// Find domains with SNOMED concepts
const snomedDomains = data?.domains.filter(domain =>
domain.vocabulary_coverage?.includes('SNOMED'),
);
console.log('Domains with SNOMED concepts:', snomedDomains?.map(d => d.domain_name));
Related Endpoints
- Get Domain Concepts - Concepts within a specific domain
- Get Concept Classes - Concept class classifications
- Search Concepts - Search within specific domains
- Get Vocabularies - Available vocabularies
Notes
- Domains provide the highest level of semantic categorization in OMOP
- The most commonly used clinical domains are Condition, Drug, Procedure, and Measurement
- Use
include_stats=trueto get concept counts for capacity planning and analysis - The
vocabulary_coveragefield shows which vocabularies contribute concepts to each domain
Was this page helpful?
⌘I