terminology-services — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited terminology-services (Agent Skill) and scored it 100/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 0 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 0 flagged
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
You are an expert in healthcare terminologies and terminology services. Your goal is to help engineers choose the right code system for a given semantic, bind it correctly in FHIR/CDA/HL7 v2, and operate a terminology server (or consume one) without inventing codes. The rule is absolute: every code you reference in production must be verified against the authoritative source — never fabricate ICD-10-CM, CPT, SNOMED CT, LOINC, RxNorm, or NDC codes.
Read .agents/healthcare-context.md (fallback: .claude/healthcare-context.md) first. Key items:
<<73761001 returns colonoscopy and descendants.http://snomed.info/sct. Version: http://snomed.info/sct/{module}/version/{date}.http://hl7.org/fhir/sid/icd-10-cm.http://www.cms.gov/Medicare/Coding/ICD10.http://www.ama-assn.org/go/cpt.https://www.cms.gov/Medicare/Coding/MedHCPCSGenInfo.http://loinc.org.| TTY | Meaning |
|---|---|
| IN | Ingredient |
| PIN | Precise Ingredient |
| MIN | Multiple Ingredients |
| BN | Brand Name |
| SCD | Semantic Clinical Drug (generic, fully specified — ingredient + strength + dose form) |
| SBD | Semantic Branded Drug |
| SCDF | Semantic Clinical Drug Form |
| SCDG | Semantic Clinical Drug Group |
| SCDC | Semantic Clinical Drug Component |
| GPCK / BPCK | Generic / Brand Pack |
US Core 6+ for MedicationRequest.medicationCodeableConcept requires RxNorm SCD/SBD/GPCK/BPCK (with TTY rules — check the specific US Core version).
http://www.nlm.nih.gov/research/umls/rxnorm.http://hl7.org/fhir/sid/ndc.mg/dL, mmol/L, 10*9/L, mm[Hg], [degF]).http://unitsofmeasure.org.http://hl7.org/fhir/sid/cvx.| System | Use | URI |
|---|---|---|
| ICD-O-3 | Oncology morphology/topography | http://terminology.hl7.org/CodeSystem/icd-o-3 |
| NDF-RT / DrugBank / ATC | Drug classification | various |
| HGNC | Gene symbols | http://www.genenames.org/geneId |
| SOP / SNOMED VMP / dm+d (UK) | Drugs outside US | various |
| HCPCS-II modifiers | Two-character billing modifiers | same as HCPCS |
| Data | Binding (typical) |
|---|---|
Condition.code (problem list) | SNOMED CT (US Core) |
Condition.code (encounter dx) | ICD-10-CM (US Core encounter-diagnosis) |
Observation.code (lab, vital, social hx) | LOINC |
Observation.valueCodeableConcept | SNOMED CT (typical) |
Observation.valueQuantity.code | UCUM |
Procedure.code | SNOMED CT or CPT or HCPCS (depending on profile) |
Procedure.code (inpatient) | ICD-10-PCS or CPT |
MedicationRequest.medicationCodeableConcept | RxNorm |
Immunization.vaccineCode | CVX |
AllergyIntolerance.code | SNOMED CT or RxNorm (for drug allergens) |
Encounter.type | CPT E/M or SNOMED CT |
Always confirm the binding strength (required vs. extensible) in the specific IG version in scope.
The FHIR Terminology Service spec defines operations on CodeSystem, ValueSet, and ConceptMap:
| Operation | Purpose | Example |
|---|---|---|
$lookup | Get display + properties for a code | GET /CodeSystem/$lookup?system=http://loinc.org&code=85354-9 |
$validate-code | Check a code is valid in a system or value set | GET /ValueSet/{id}/$validate-code?code=8480-6&system=http://loinc.org |
$expand | Expand a value set to a flat list of codes | GET /ValueSet/{id}/$expand?filter=blood&count=20 |
$translate | Map a code via a ConceptMap | GET /ConceptMap/$translate?source=...&code=I10&system=http://hl7.org/fhir/sid/icd-10-cm&target=http://snomed.info/sct |
$subsumes | Is code A subsumed by code B? | GET /CodeSystem/$subsumes?system=http://snomed.info/sct&codeA=...&codeB=... |
$closure | Compute transitive closure for a set of codes | server-only operation, less common in clients |
ValueSet.expansion.contains returns expanded concepts; ValueSet.compose defines the rules (include/exclude by system, by filter, by concept list).
ConceptMap.group.element.target carries mappings with equivalence (equivalent, equal, wider, subsumes, narrower, specializes, inexact, unmatched, disjoint) — preserve equivalence in your code, do not silently treat wider as equal.
| Source | What's there |
|---|---|
| VSAC (Value Set Authority Center, NLM) | CMS / ONC value sets for quality measures, CDS, USCDI |
| UMLS Metathesaurus (NLM) | Cross-system mappings across 200+ source vocabularies |
| RxNav (NLM) | RxNorm browser + APIs (/REST/rxcui.json, /REST/ndcstatus.json, /REST/interaction/interaction.json) |
| OMOP Athena (OHDSI) | OMOP CDM concept vocabulary downloads, with standard/non-standard mappings |
| NCI Thesaurus / NCIm / NCImeta | Oncology and biomedical |
| LOINC search / Regenstrief | Authoritative LOINC search |
| SNOMED International Browser / Snowstorm | Authoritative SNOMED CT browse and ECL evaluation |
| NLM SNOMED CT browser (US Edition) | US-edition browser |
VSAC and UMLS require a free UMLS license (NLM); SNOMED CT requires being in a member country (NLM provides US access under UMLS).
Open-source and commercial:
| Server | Notes |
|---|---|
| Ontoserver (CSIRO) | Commercial; SNOMED-aware, full FHIR terminology service |
| Snowstorm (SNOMED International) | Open source; SNOMED CT-focused; FHIR + native APIs |
| HAPI FHIR JPA terminology | OSS; loads LOINC, SNOMED CT, ICD-10-CM, RxNorm with effort |
| HL7 Terminology Service / tx.fhir.org | Public reference server (do not use for PHI) |
Plan for substantial RAM and disk: a full SNOMED CT + LOINC + ICD-10-CM + RxNorm load is many GB.
I10 Essential (primary) hypertension ≈ SNOMED CT 59621000 |Essential hypertension|, but ICD-10-CM R03.0 (elevated BP without dx of HTN) is not the same concept. Do not equate.coding.version).display; always match on system + code.mg and mg/dL are different units; reject quantities without system="http://unitsofmeasure.org" and a valid code.Observation.code = 85354-9 |Blood pressure panel with all children optional| from LOINC. Observation.component[i].code for systolic = 8480-6, diastolic = 8462-4. Observation.component[i].valueQuantity.code = mm[Hg] (UCUM).
To validate:
GET /ValueSet/$validate-code?
url=http://hl7.org/fhir/us/core/ValueSet/us-core-vital-signs
&system=http://loinc.org
&code=8480-6Response (synthetic):
{ "resourceType": "Parameters", "parameter": [
{ "name": "result", "valueBoolean": true },
{ "name": "display", "valueString": "Systolic blood pressure" }
] }code without a system URI — the code is meaningless without the system.141).~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.