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
| Method | Path | Description |
|---|---|---|
| GET | /v1/snomed/:concept_id |
Single concept lookup |
| POST | /v1/snomed/_batch |
Batch lookup (up to 100) |
| GET | /v1/snomed/search |
Search IPS concepts |
| GET | /v1/snomed/categories |
List IPS categories |
| GET | /v1/snomed/:concept_id/mappings |
Reverse mappings from other terminologies |
Single Lookup
Look up Diabetes mellitus
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);{
"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.
| Input | Valid | Description |
|---|---|---|
73211009 |
Yes | Diabetes mellitus |
84114007 |
Yes | Heart failure |
E11.9 |
No | ICD-10 format — not a SNOMED ID |
abc |
No | Non-numeric |
Batch Lookup
Look up multiple SNOMED concepts in a single request (up to 100):
Look up multiple clinical concepts
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);{
"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:
| Category | Description |
|---|---|
substance |
Substances (for allergies, medications) |
product |
Medicinal products |
condition |
Disorders, clinical findings |
finding |
Clinical findings |
procedure |
Procedures, therapies |
body_structure |
Body structures, anatomical sites |
organism |
Organisms (allergens, pathogens) |
qualifier |
Qualifier values, attributes |
device |
Medical devices |
observable |
Observable entities (lab results) |
specimen |
Specimen types |
situation |
Situational concepts (e.g., "no known allergies") |
event |
Events |
environment |
Environmental/geographic |
social |
Social 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
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);{
"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
| Type | Description |
|---|---|
equivalent |
Direct semantic equivalence |
broader |
SNOMED concept is broader than the source |
narrower |
SNOMED concept is narrower than the source |
related |
Related 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 mappingssnomed.search— Search endpoint
See Also
- SNOMED CT Search API — Search IPS concepts by text and filters
- ICD-10 API — Diagnosis codes with SNOMED enrichment
- RxNorm API — Drug terminology with SNOMED enrichment