> ## Documentation Index
> Fetch the complete documentation index at: https://docs.omophub.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Get Related Concepts

> Find OMOP concepts related through relationship analysis - ingredients, routes, brand names, and hierarchical links - for concept set expansion.

## Overview

This endpoint finds concepts that are related to a given concept through various relationship types. Results are scored and ordered by relationship strength.

## Path Parameters

<ParamField path="conceptId" type="integer" required>
  The unique OMOP concept ID to find related concepts for
</ParamField>

## Query Parameters

<ParamField query="page_size" type="integer" default="20">
  Maximum number of related concepts to return (1-100)
</ParamField>

<ParamField query="min_score" type="number" default="0.1">
  Minimum relationship score (0.0-1.0) to include in results
</ParamField>

<ParamField query="relationship_types" type="string">
  Comma-separated list of relationship types to filter by (e.g., "Is a,Maps to")
</ParamField>

<ParamField query="vocab_release" type="string">
  Specific vocabulary release version (e.g., "2025.1")
</ParamField>

## Response

<ResponseField name="success" type="boolean" required>
  Indicates if the request was successful
</ResponseField>

<ResponseField name="data" type="array" required>
  Array of related concepts ordered by relationship score

  <Expandable title="data">
    <ResponseField name="concept_id" type="integer">
      Related concept ID
    </ResponseField>

    <ResponseField name="concept_name" type="string">
      Related concept name
    </ResponseField>

    <ResponseField name="concept_code" type="string">
      Related concept code
    </ResponseField>

    <ResponseField name="vocabulary_id" type="string">
      Related concept vocabulary ID
    </ResponseField>

    <ResponseField name="vocabulary_name" type="string">
      Related concept vocabulary name
    </ResponseField>

    <ResponseField name="domain_id" type="string">
      Related concept domain
    </ResponseField>

    <ResponseField name="concept_class_id" type="string">
      Related concept class
    </ResponseField>

    <ResponseField name="standard_concept" type="string">
      Standard concept flag ("S" for standard, "C" for classification, null for non-standard)
    </ResponseField>

    <ResponseField name="relationship_id" type="string">
      Relationship type ID (e.g., "Is a", "Maps to")
    </ResponseField>

    <ResponseField name="relationship_name" type="string">
      Human-readable relationship name
    </ResponseField>

    <ResponseField name="relationship_score" type="number">
      Relationship strength score (0.0-1.0)
    </ResponseField>

    <ResponseField name="relationship_distance" type="integer">
      Number of relationship steps from source concept
    </ResponseField>
  </Expandable>
</ResponseField>

<ResponseField name="meta" type="object" required>
  Response metadata

  <Expandable title="meta">
    <ResponseField name="request_id" type="string">
      Unique request identifier
    </ResponseField>

    <ResponseField name="timestamp" type="string">
      ISO 8601 timestamp
    </ResponseField>

    <ResponseField name="vocab_release" type="string">
      Vocabulary release version used
    </ResponseField>
  </Expandable>
</ResponseField>

<RequestExample>
  ```bash cURL theme={null}
  curl -X GET "https://api.omophub.com/v1/concepts/201826/related?min_score=0.4&page_size=20" \
    -H "Authorization: Bearer YOUR_API_KEY"
  ```

  ```python Python theme={null}
  import requests

  concept_id = 201826  # Type 2 diabetes
  url = f"https://api.omophub.com/v1/concepts/{concept_id}/related"
  params = {
      "min_score": 0.4,
      "page_size": 30,
      "relationship_types": "Is a,Maps to"
  }

  headers = {
      "Authorization": "Bearer YOUR_API_KEY"
  }

  response = requests.get(url, params=params, headers=headers)
  data = response.json()

  print(f"Found {len(data['data'])} related concepts")

  for related in data['data'][:5]:
      print(f"  - {related['concept_name']} ({related['vocabulary_id']})")
      print(f"    Relationship: {related['relationship_name']}")
      print(f"    Score: {related['relationship_score']:.2f}")
  ```

  ```javascript JavaScript theme={null}
  const conceptId = 201826; // Type 2 diabetes
  const response = await fetch(`https://api.omophub.com/v1/concepts/${conceptId}/related?min_score=0.3&page_size=20`, {
    headers: {
      'Authorization': 'Bearer YOUR_API_KEY'
    }
  });

  const result = await response.json();

  console.log(`Found ${result.data.length} related concepts`);

  result.data.slice(0, 5).forEach((concept, index) => {
    console.log(`${index + 1}. ${concept.concept_name} (${concept.vocabulary_id})`);
    console.log(`   Relationship: ${concept.relationship_name}`);
    console.log(`   Score: ${concept.relationship_score.toFixed(2)}`);
  });
  ```
</RequestExample>

<ResponseExample>
  ```json theme={null}
  {
    "success": true,
    "data": [
      {
        "concept_id": 73211009,
        "concept_name": "Diabetes mellitus",
        "concept_code": "73211009",
        "vocabulary_id": "SNOMED",
        "vocabulary_name": "SNOMED CT",
        "domain_id": "Condition",
        "concept_class_id": "Clinical Finding",
        "standard_concept": "S",
        "relationship_id": "Is a",
        "relationship_name": "Is a",
        "relationship_score": 0.95,
        "relationship_distance": 1
      },
      {
        "concept_id": 443735,
        "concept_name": "Type 2 diabetes mellitus without complications",
        "concept_code": "443735",
        "vocabulary_id": "SNOMED",
        "vocabulary_name": "SNOMED CT",
        "domain_id": "Condition",
        "concept_class_id": "Clinical Finding",
        "standard_concept": "S",
        "relationship_id": "Subsumes",
        "relationship_name": "Subsumes",
        "relationship_score": 0.87,
        "relationship_distance": 1
      },
      {
        "concept_id": 435216,
        "concept_name": "Type 2 diabetes mellitus",
        "concept_code": "E11",
        "vocabulary_id": "ICD10CM",
        "vocabulary_name": "ICD10CM",
        "domain_id": "Condition",
        "concept_class_id": "ICD10 code",
        "standard_concept": null,
        "relationship_id": "Maps to",
        "relationship_name": "Maps to",
        "relationship_score": 0.92,
        "relationship_distance": 1
      }
    ],
    "meta": {
      "request_id": "req_related_123",
      "timestamp": "2024-12-22T10:00:00Z",
      "vocab_release": "2025.1"
    }
  }
  ```
</ResponseExample>

## Usage Examples

### Basic Related Concepts

Find general related concepts:

```bash theme={null}
curl -X GET "https://api.omophub.com/v1/concepts/201826/related" \
  -H "Authorization: Bearer YOUR_API_KEY"
```

### High-Score Relationships

Get only strongly related concepts:

```bash theme={null}
curl -X GET "https://api.omophub.com/v1/concepts/201826/related?min_score=0.7&page_size=10" \
  -H "Authorization: Bearer YOUR_API_KEY"
```

### Filtered by Relationship Type

Find specific relationship types:

```bash theme={null}
curl -X GET "https://api.omophub.com/v1/concepts/201826/related?relationship_types=Is%20a,Maps%20to" \
  -H "Authorization: Bearer YOUR_API_KEY"
```

## Important Notes

* **Score interpretation** - Scores above 0.7 indicate strong relationships, 0.4-0.7 moderate, below 0.4 weak
* **Distance interpretation** - Distance of 1 means direct relationship, higher values indicate indirect connections
* **Performance** - Results are cached for improved response times on repeated queries

## Related Endpoints

* [Get Concept Relationships](/api-reference/concepts/get-concept-relationships) - Get all direct relationships
* [Traverse Relationships](/api-reference/concepts/traverse-relationships) - Complex relationship traversals
