Cross-mapping
April 9, 2026 · View on GitHub
Hermes supports bidirectional mapping between SNOMED CT and other code systems (ICD-10, OPCS, Read codes) as well as mapping into arbitrary reference sets for analytics.
SNOMED to external code system
Map a SNOMED concept to an external code system using its map reference set.
# Multiple sclerosis → ICD-10
# 999002271000000101 is the UK ICD-10 complex map reference set
curl -s 'http://localhost:8080/v1/snomed/concepts/24700007/map/999002271000000101' | jq .
[
{
"active": true,
"mapAdvice": "ALWAYS G35.X",
"mapTarget": "G35X",
"mapGroup": 1,
"mapPriority": 1,
"referencedComponentId": 24700007,
"refsetId": 999002271000000101
}
]
Hierarchy walking
Not every SNOMED concept has a direct map. When a concept is not directly represented in a map reference set, hermes automatically walks up the IS-A hierarchy until it finds the nearest mapped ancestor.
This means you can record at maximum clinical granularity and still get correct external codes for reporting, billing and analytics — without maintaining manual lookup tables.
External code to SNOMED
Map from an external code back to SNOMED concepts:
# ICD-10 G35.X → SNOMED concepts
curl -s 'http://localhost:8080/v1/snomed/crossmap/999002271000000101/G35X' | jq '.[] | .referencedComponentId'
Map-into for analytics
map-into classifies any SNOMED concept into a target reference set by walking
up the hierarchy to find the most specific ancestor(s) that belong to that set.
This is powerful for reducing clinical granularity to reporting categories.
# Multiple sclerosis (24700007) is in the UK emergency unit reference set
curl -s 'http://localhost:8080/v1/snomed/concepts/24700007/map/991411000000109' | jq .
# => returns the direct membership
# "Limbic encephalitis with LGI1 antibodies" (763794005) is NOT in the emergency
# unit refset — hermes walks up the hierarchy to "Encephalitis" (45170000) which is
curl -s 'http://localhost:8080/v1/snomed/concepts/763794005/map/991411000000109' | jq .
Try it live: limbic encephalitis mapped into emergency refset
This lets clinicians record with full SNOMED granularity while mapping to reporting categories on demand — reducing dimensionality for analytics without losing clinical precision.
The target can be any reference set — not just cross-map reference sets. This works with simple reference sets, allowing you to define your own analytics categories.
Reference set memberships
Check which reference sets a concept belongs to:
curl -s 'http://localhost:8080/v1/snomed/concepts/24700007/refsets' | jq '.[] | .refsetId'
Historical associations
When concepts are retired, SNOMED provides historical associations indicating what replaced them:
curl -s -H 'Accept-Language: en-GB' \
'http://localhost:8080/v1/snomed/concepts/586591000000100/historical' | jq .
Association types include SAME AS, REPLACED BY, POSSIBLY EQUIVALENT TO and others. This is essential for maintaining data quality when concepts change between releases.