| name | snomed-lookup |
| description | Search SNOMED CT via the public tx.fhir.org $expand endpoint. Use when LOINC isn't the right vocabulary (problems, procedures, body sites, social context). Knows when SNOMED beats LOINC and when to use both side-by-side. |
SNOMED lookup
When to use this
- The question is about a problem/diagnosis, procedure, body
structure, or social-context concept (LOINC doesn't cover these
well).
- An answerOption set should be SNOMED-coded (e.g. "type of
headache: migraine | tension | cluster | ...").
- A boolean question has a SNOMED finding code that captures the
semantic ("dizziness on standing" = SNOMED
271594007).
How to do it
tx.fhir.org is the IHTSDO public endpoint:
https://tx.fhir.org/r4/CodeSystem/$lookup?system=http://snomed.info/sct&code=<sctid>
https://tx.fhir.org/r4/ValueSet/$expand?url=<valueset-url>&filter=<text>
For a free-text search by display, use the $expand endpoint with
url=http://snomed.info/sct?fhir_vs and &filter=<text>.
When SNOMED beats LOINC
- Diagnoses / problems: SNOMED.
- Procedures: SNOMED (or CPT in US billing context — neither in a
Questionnaire usually).
- Body sites: SNOMED.
- Findings / signs / symptoms: SNOMED is broader than LOINC.
When LOINC beats SNOMED
- Lab orders / lab results: LOINC.
- Survey instruments: LOINC has explicit panel codes.
- Radiology / cardiology study types: LOINC.
When you need both
Questionnaire.code can be LOINC (for the instrument), while
item.answerValueSet can point to a SNOMED-bound ValueSet for the
choice options. Both is a common pattern.
Pitfalls
- SNOMED licensing: free for affiliated countries (US, UK, AU, NL,
many more) but NOT universal. Surface the requirement when
authoring forms intended for a non-affiliated jurisdiction.
- Pre-coordinated vs post-coordinated SNOMED expressions. v1 only
uses pre-coordinated SCTIDs.
- Don't normalize concept IDs to friendly URLs; SNOMED uses the
numeric SCTID (
http://snomed.info/sct + <sctid>).