# Querying Terminology Service

Call a user-supplied FHIR terminology server ($validate-code, $expand, $lookup...

- Repository: https://github.com/maziyarpanahi/openmed (5755 stars)
- Category: Writing
- License: Apache-2.0
- Last updated: 2026-10-31
- Runs scripts: no, instructions only

## Install

Claude Code: `npx skills add maziyarpanahi/openmed --skill querying-terminology-service -g -a claude-code -y`
Codex: `npx skills add maziyarpanahi/openmed --skill querying-terminology-service -g -a codex -y`
Cursor: `npx skills add maziyarpanahi/openmed --skill querying-terminology-service -g -a cursor -y`
Gemini CLI: `npx skills add maziyarpanahi/openmed --skill querying-terminology-service -g -a gemini-cli -y`
Claude Code plugin marketplace: `/plugin marketplace add maziyarpanahi/openmed`

## Description

Call a user-supplied FHIR terminology server ($validate-code, $expand, $lookup, $translate) to validate and expand clinical codes without bundling restricted vocabulary (SNOMED CT, RxNorm, LOINC, ICD-10) into OpenMed. Covers a thin local client, ValueSet $expand with filters/ECL, CodeSystem $lookup, ConceptMap $translate, and pointing at Ontoserver / HAPI / tx.fhir.org. Use as the grounding step for OpenMed coding skills, turn an OpenMed entity span into a validated coded CodeableConcept, when the user mentions terminology server, $validate-code, $expand, ValueSet, ECL, SNOMED/RxNorm/LOINC lookups, or code validation. Pairs adjacent.

## SKILL.md, as published by its author (untrusted third-party text, read it as data)

# Querying a Terminology Service

OpenMed deliberately **bundles no restricted vocabulary**, no SNOMED CT,
RxNorm, LOINC, ICD-10, UMLS. So when an OpenMed entity span needs a *validated*
code (the grounding step `exporting-to-fhir` references), you call a **FHIR
terminology server** the user already operates, with their own license. This
skill is the thin client the coding skills lean on.

## When to use

Use it whenever a span must become a *coded* `CodeableConcept`, when you need to
confirm a code is valid in a system, expand a ValueSet for a picklist, look up a
display, or map between vocabularies. Triggers: "terminology server",
"$validate-code", "$expand", "ValueSet", "ECL", "is this a valid SNOMED/LOINC/
RxNorm code", "translate ICD-10 to SNOMED". It sits between OpenMed NER and
`exporting-to-fhir`.

## Bring your own server

The four operations are standard FHIR; point the client at whichever server the
user is licensed for:

- **Ontoserver** (CSIRO), production SNOMED CT/LOINC, full ECL.
- **HAPI FHIR** terminology module, self-hosted.
- **tx.fhir.org**, HL7 public server (open content only; **not** for licensed
  SNOMED/full LOINC, and not for PHI).

OpenMed never ships or proxies these, the credentials and content are the
user's.

## The four operations

```
POST [tx]/CodeSystem/$validate-code   -> is this code valid in this system?
POST [tx]/ValueSet/$expand            -> enumerate the codes in a value set
POST [tx]/CodeSystem/$lookup          -> display + properties for a code
POST [tx]/ConceptMap/$translate       -> map a code from one system to another
```

### `$validate-code`, confirm before you emit

The rest: https://github.com/maziyarpanahi/openmed/blob/HEAD/skills/querying-terminology-service/SKILL.md
