Skip to main content
curl -X GET "https://api.omophub.com/v1/concept-classes/Clinical%20Finding/concepts?vocabulary_ids=SNOMED&page_size=20" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Accept: application/json"
{
  "success": true,
  "data": {
  "concept_class": {
    "concept_class_id": "Clinical Finding",
    "concept_class_name": "Clinical Finding",
    "concept_class_concept_id": 404684003,
    "description": "A clinical finding represents a result of an observation, assessment, or judgment"
  },
  "concepts": [
    {
      "concept_id": 201826,
      "concept_name": "Type 2 diabetes mellitus",
      "vocabulary_id": "SNOMED",
      "domain_id": "Condition",
      "concept_class_id": "Clinical Finding",
      "standard_concept": "S",
      "concept_code": "44054006",
      "valid_start_date": "2002-01-31",
      "valid_end_date": "2099-12-31",
      "invalid_reason": null
    },
    {
      "concept_id": 4182210,
      "concept_name": "Hypertensive disorder",
      "vocabulary_id": "SNOMED",
      "domain_id": "Condition",
      "concept_class_id": "Clinical Finding",
      "standard_concept": "S",
      "concept_code": "38341003",
      "valid_start_date": "2002-01-31",
      "valid_end_date": "2099-12-31",
      "invalid_reason": null
    },
    {
      "concept_id": 313217,
      "concept_name": "Atrial fibrillation",
      "vocabulary_id": "SNOMED",
      "domain_id": "Condition",
      "concept_class_id": "Clinical Finding",
      "standard_concept": "S",
      "concept_code": "49436004",
      "valid_start_date": "2002-01-31",
      "valid_end_date": "2099-12-31",
      "invalid_reason": null
    }
  ],
  "statistics": {
    "total_concepts_in_class": 156847,
    "filtered_concept_count": 98532,
    "standard_concept_count": 87124,
    "vocabulary_distribution": {
      "SNOMED": 87124,
      "ICD10CM": 7893,
      "ICD9CM": 3515
    },
    "domain_distribution": {
      "Condition": 92156,
      "Observation": 4891,
      "Measurement": 1485
    },
    "validity_status": {
      "valid": 96847,
      "invalid": 1685
    }
  },
  "meta": {
    "pagination": {
      "page": 1,
      "page_size": 50,
      "total_items": 98532,
      "total_pages": 1971,
      "has_next": true,
      "has_previous": false
    }
  },
  "meta": {
    "pagination": {
      "page": 1,
      "page_size": 50,
      "total_items": 98532,
      "total_pages": 1971,
      "has_next": true,
      "has_previous": false
    },
    "request_id": "req_class_concepts_123456",
    "timestamp": "2024-12-22T10:30:00Z",
    "vocab_release": "2025.2"
  }
}

Overview

This endpoint returns all concepts that belong to a specific concept class, providing a way to explore concepts within a particular classification category. Concept classes group related concepts by their semantic type and purpose within medical terminology.

Path Parameters

classId
string
required
The concept class ID to retrieve concepts for (e.g., “Clinical Finding”, “Procedure”, “Substance”)

Query Parameters

vocabulary_ids
string
Comma-separated list of vocabulary IDs to filter concepts (e.g., “SNOMED,ICD10CM”)
domain_ids
string
Comma-separated list of domain IDs to filter concepts (e.g., “Condition,Drug”)
standard_concept
string
Filter by standard concept flag: “S” (standard), “C” (classification), or “N” (non-standard)
include_invalid
boolean
default:"false"
Include invalid/deprecated concepts in results
search_term
string
Filter concepts by name containing this search term
sort_by
string
default:"concept_name"
Sort results by: “concept_name”, “concept_id”, “concept_code”, or “vocabulary_id”
sort_order
string
default:"asc"
Sort order: “asc” or “desc”
vocab_release
string
Specific vocabulary release version (e.g., “2024.1”)
page
integer
default:"1"
Page number for pagination (1-based)
page_size
integer
default:"50"
Number of concepts per page

Response

concept_class
object
required
Information about the concept class
concepts
array
required
Array of concepts in this class
statistics
object
required
Statistics about concepts in this class
curl -X GET "https://api.omophub.com/v1/concept-classes/Clinical%20Finding/concepts?vocabulary_ids=SNOMED&page_size=20" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Accept: application/json"
{
  "success": true,
  "data": {
  "concept_class": {
    "concept_class_id": "Clinical Finding",
    "concept_class_name": "Clinical Finding",
    "concept_class_concept_id": 404684003,
    "description": "A clinical finding represents a result of an observation, assessment, or judgment"
  },
  "concepts": [
    {
      "concept_id": 201826,
      "concept_name": "Type 2 diabetes mellitus",
      "vocabulary_id": "SNOMED",
      "domain_id": "Condition",
      "concept_class_id": "Clinical Finding",
      "standard_concept": "S",
      "concept_code": "44054006",
      "valid_start_date": "2002-01-31",
      "valid_end_date": "2099-12-31",
      "invalid_reason": null
    },
    {
      "concept_id": 4182210,
      "concept_name": "Hypertensive disorder",
      "vocabulary_id": "SNOMED",
      "domain_id": "Condition",
      "concept_class_id": "Clinical Finding",
      "standard_concept": "S",
      "concept_code": "38341003",
      "valid_start_date": "2002-01-31",
      "valid_end_date": "2099-12-31",
      "invalid_reason": null
    },
    {
      "concept_id": 313217,
      "concept_name": "Atrial fibrillation",
      "vocabulary_id": "SNOMED",
      "domain_id": "Condition",
      "concept_class_id": "Clinical Finding",
      "standard_concept": "S",
      "concept_code": "49436004",
      "valid_start_date": "2002-01-31",
      "valid_end_date": "2099-12-31",
      "invalid_reason": null
    }
  ],
  "statistics": {
    "total_concepts_in_class": 156847,
    "filtered_concept_count": 98532,
    "standard_concept_count": 87124,
    "vocabulary_distribution": {
      "SNOMED": 87124,
      "ICD10CM": 7893,
      "ICD9CM": 3515
    },
    "domain_distribution": {
      "Condition": 92156,
      "Observation": 4891,
      "Measurement": 1485
    },
    "validity_status": {
      "valid": 96847,
      "invalid": 1685
    }
  },
  "meta": {
    "pagination": {
      "page": 1,
      "page_size": 50,
      "total_items": 98532,
      "total_pages": 1971,
      "has_next": true,
      "has_previous": false
    }
  },
  "meta": {
    "pagination": {
      "page": 1,
      "page_size": 50,
      "total_items": 98532,
      "total_pages": 1971,
      "has_next": true,
      "has_previous": false
    },
    "request_id": "req_class_concepts_123456",
    "timestamp": "2024-12-22T10:30:00Z",
    "vocab_release": "2025.2"
  }
}

Usage Examples

Basic Class Exploration

Get all concepts in a specific class:
curl -X GET "https://api.omophub.com/v1/concept-classes/Procedure/concepts?page_size=100" \
  -H "Authorization: Bearer YOUR_API_KEY"

Standard Concepts Only

Get only standard concepts from SNOMED:
curl -X GET "https://api.omophub.com/v1/concept-classes/Clinical%20Finding/concepts?vocabulary_ids=SNOMED&standard_concept=S" \
  -H "Authorization: Bearer YOUR_API_KEY"

Search Within Class

Search for specific concepts within a class:
curl -X GET "https://api.omophub.com/v1/concept-classes/Substance/concepts?search_term=insulin&vocabulary_ids=RxNorm" \
  -H "Authorization: Bearer YOUR_API_KEY"

Cross-Vocabulary Analysis

Compare concepts across vocabularies:
curl -X GET "https://api.omophub.com/v1/concept-classes/Clinical%20Finding/concepts?vocabulary_ids=SNOMED,ICD10CM&domain_ids=Condition" \
  -H "Authorization: Bearer YOUR_API_KEY"

Taxonomy Building

Use for building classification hierarchies:
async function buildClassTaxonomy(classId, vocabularyIds = ['SNOMED']) {
  const response = await fetch(`/v1/concept-classes/${encodeURIComponent(classId)}/concepts?vocabulary_ids=${vocabularyIds.join(',')}&standard_concept=S&page_size=1000`);
  const data = await response.json();
  
  return {
    className: data.concept_class.concept_class_name,
    totalConcepts: data.statistics.total_concepts_in_class,
    standardConcepts: data.statistics.standard_concept_count,
    vocabularyBreakdown: data.statistics.vocabulary_distribution,
    sampleConcepts: data.concepts.slice(0, 10).map(c => ({
      id: c.concept_id,
      name: c.concept_name,
      code: c.concept_code,
      vocabulary: c.vocabulary_id
    }))
  };
}

Important Notes

  • URL encoding - Class IDs with spaces must be URL encoded (e.g., “Clinical Finding” → “Clinical%20Finding”)
  • Large result sets - Some concept classes contain hundreds of thousands of concepts; use pagination
  • Standard concepts - Filter by standard_concept=S for most clinical applications
  • Performance - Searching within large classes may take longer; consider using specific filters
  • Vocabulary coverage - Concept class availability varies by vocabulary
I