Dashboard

SNOMED CT Search API

Search SNOMED CT IPS (International Patient Set) clinical concepts by text, category, or semantic tag.

Endpoint

GET /v1/snomed/search

Quick Start

Node.js
import { Fhirfly } from "@fhirfly-io/terminology";

const client = new Fhirfly({ apiKey: "YOUR_API_KEY" });

// Search for heart-related conditions
const results = await client.snomed.search({
  q: "heart failure",
});

console.log(`Found ${results.count} concepts`);
for (const concept of results.results) {
  console.log(`${concept.concept_id}: ${concept.preferred_term}`);
}

Parameters

ParameterDescriptionExample
qText search across preferred terms, FSN, and synonymsq=heart failure

Filters

ParameterTypeDescriptionExample
ips_categorystringFilter by IPS categorycondition
semantic_tagstringFilter by semantic tagdisorder
activebooleanFilter by active status (default: true)true

Pagination

ParameterDefaultMaxDescription
limit100500Maximum results to return
skip0Offset for pagination

At least one of q, ips_category, or semantic_tag is required.

Example Response

{
  "count": 12,
  "results": [
    {
      "concept_id": "84114007",
      "active": true,
      "fsn": "Heart failure (disorder)",
      "preferred_term": "Heart failure",
      "synonyms": ["Cardiac failure", "Heart failure, NOS"],
      "ips_category": "condition",
      "semantic_tag": "disorder"
    },
    {
      "concept_id": "42343007",
      "active": true,
      "fsn": "Congestive heart failure (disorder)",
      "preferred_term": "Congestive heart failure",
      "synonyms": ["CHF", "Congestive cardiac failure"],
      "ips_category": "condition",
      "semantic_tag": "disorder"
    }
  ],
  "meta": {
    "legal": {
      "license": "CC BY 4.0",
      "attribution_required": true,
      "source_name": "SNOMED CT IPS Free Set",
      "citation": "SNOMED CT IPS Free Set. SNOMED International. Licensed under CC BY 4.0."
    }
  }
}

Use Cases

Browse Conditions

Node.js
const conditions = await client.snomed.search({
  ips_category: "condition",
  limit: 20,
});

Find Substances for Allergy Lists

Node.js
const substances = await client.snomed.search({
  q: "penicillin",
  ips_category: "substance",
});

Search Procedures

Node.js
const procedures = await client.snomed.search({
  ips_category: "procedure",
  q: "bypass",
});

Paginate Through Results

Node.js
// Get page 1
const page1 = await client.snomed.search({
  ips_category: "condition",
  limit: 10,
  skip: 0,
});

// Get page 2
const page2 = await client.snomed.search({
  ips_category: "condition",
  limit: 10,
  skip: 10,
});

IPS Categories

Use the ips_category filter with any of these values:

CategoryDescription
substanceSubstances (for allergies, medications)
productMedicinal products
conditionDisorders, clinical findings
findingClinical findings
procedureProcedures, therapies
body_structureBody structures, anatomical sites
organismOrganisms (allergens, pathogens)
qualifierQualifier values, attributes
deviceMedical devices
observableObservable entities (lab results)
specimenSpecimen types
situationSituational concepts
eventEvents
environmentEnvironmental/geographic
socialSocial context, occupations

You can also retrieve this list programmatically via GET /v1/snomed/categories.

Response Format Notes

SNOMED search does not use response shapes or facets. All results return the same full concept structure. Unlike other search APIs, SNOMED search uses count and results instead of total, items, and has_more.

Required Scope

snomed.search

See Also