Dashboard

SNOMED CT API

Look up SNOMED CT clinical concepts from the IPS (International Patient Set) free set.

Overview

SNOMED CT is the world's most comprehensive clinical terminology. FHIRfly provides access to the IPS Free Set — approximately 12,000 curated concepts used in International Patient Summary implementations, licensed under CC BY 4.0.

Unlike other FHIRfly APIs, SNOMED does not use response shapes (compact/standard/full). All lookups return a single consistent format.

Endpoints

MethodPathDescription
GET/v1/snomed/:concept_idSingle concept lookup
POST/v1/snomed/_batchBatch lookup (up to 100)
GET/v1/snomed/searchSearch IPS concepts
GET/v1/snomed/categoriesList IPS categories
GET/v1/snomed/:concept_id/mappingsReverse mappings from other terminologies

Single Lookup

Look up Diabetes mellitus

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

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

const result = await client.snomed.lookup("73211009");
console.log(result.data);
Response
JSON
{
  "data": {
    "concept_id": "73211009",
    "active": true,
    "fsn": "Diabetes mellitus (disorder)",
    "preferred_term": "Diabetes mellitus",
    "synonyms": [
      "DM - Diabetes mellitus",
      "Diabetes mellitus, NOS"
    ],
    "ips_category": "condition",
    "semantic_tag": "disorder"
  },
  "meta": {
    "source": {
      "name": "SNOMED CT IPS Free Set",
      "url": "https://www.snomed.org/our-standards/ips-terminology",
      "version": "IPS 1.1.0"
    },
    "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."
    }
  }
}

Concept ID Format

SNOMED concept IDs are numeric strings (digits only). Non-numeric values return a 400 error.

InputValidDescription
73211009YesDiabetes mellitus
84114007YesHeart failure
E11.9NoICD-10 format — not a SNOMED ID
abcNoNon-numeric

Batch Lookup

Look up multiple SNOMED concepts in a single request (up to 100):

Look up multiple clinical concepts

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

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

const result = await client.snomed.lookupMany(["73211009","84114007","invalid"]);
console.log(result.data.results);
Response
JSON
{
  "count": 3,
  "results": [
    {
      "input": "73211009",
      "concept_id": "73211009",
      "status": "ok",
      "data": {
        "concept_id": "73211009",
        "preferred_term": "Diabetes mellitus",
        "ips_category": "condition"
      }
    },
    {
      "input": "84114007",
      "concept_id": "84114007",
      "status": "ok",
      "data": {
        "concept_id": "84114007",
        "preferred_term": "Heart failure",
        "ips_category": "condition"
      }
    },
    {
      "input": "invalid",
      "concept_id": "invalid",
      "status": "invalid",
      "error": "Invalid SNOMED concept ID format (must be numeric)"
    }
  ],
  "meta": {
    "legal": {
      "license": "CC BY 4.0",
      "attribution_required": true,
      "source_name": "SNOMED CT IPS Free Set"
    }
  }
}

IPS Categories

The IPS organizes concepts into 15 clinical categories. Use GET /v1/snomed/categories to list them:

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 (e.g., "no known allergies")
eventEvents
environmentEnvironmental/geographic
socialSocial context, occupations

Reverse Mappings

Find what codes from other terminologies (ICD-10, RxNorm, NDC) map to a SNOMED concept:

Find codes that map to Diabetes mellitus

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

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

const result = await client.snomed.lookup("73211009/mappings");
console.log(result.data);
Response
JSON
{
  "data": {
    "snomed_code": "73211009",
    "snomed_display": "Diabetes mellitus",
    "mappings": [
      {
        "source_system": "icd10_cm",
        "source_code": "E11.9",
        "map_type": "narrower",
        "mapping_source": "snomed-extended-map"
      },
      {
        "source_system": "rxnorm",
        "source_code": "173",
        "map_type": "related",
        "mapping_source": "umls-rxnrel"
      }
    ]
  },
  "meta": {
    "legal": {
      "license": "CC BY 4.0",
      "attribution_required": true
    }
  }
}

Mapping Types

TypeDescription
equivalentDirect semantic equivalence
broaderSNOMED concept is broader than the source
narrowerSNOMED concept is narrower than the source
relatedRelated but not equivalent

Cross-Terminology Enrichment

When SNOMED mappings exist, they appear automatically in other API responses. For example, looking up ICD-10 code E11.9 with shape=standard includes a snomed array:

{
  "data": {
    "code": "E119",
    "display": "Type 2 diabetes mellitus without complications",
    "snomed": [
      {
        "concept_id": "44054006",
        "display": "Diabetes mellitus type 2",
        "map_type": "equivalent",
        "map_source": "snomed-extended-map"
      }
    ]
  }
}

This enrichment is available on:

  • ICD-10 (CM only) — standard and full shapes
  • RxNorm — standard and full shapes
  • NDC — standard and full shapes (derived via RxNorm)

License Notice

SNOMED CT IPS Free Set data requires attribution under the CC BY 4.0 license. The meta.legal field in every response provides the required citation text.

Required Scopes

  • snomed.read — Single lookup, batch lookup, categories, and reverse mappings
  • snomed.search — Search endpoint

See Also