Overview
Translate a single FHIRCoding (system URI + code) into a fully resolved
OMOP concept chain: source concept, standard concept, target CDM table,
optional mapping quality signal, and optional Phoebe recommendations.
The resolver chains existing OMOPHub primitives - get_concept_by_code,
mappings, semantic_search, validate, and recommended - behind a
single composite call. If the structured code lookup fails (or only
display text is provided), the resolver falls back to semantic search.
Use this endpoint when you are building a FHIR-to-OMOP ETL pipeline and
need to determine which OMOP CDM table a FHIR resource should land in
based on its coded fields.
Request Body
FHIR code system URI, e.g.
http://snomed.info/sct, http://loinc.org,
or http://hl7.org/fhir/sid/icd-10-cm. Required unless vocabulary_id
or display is provided.The code value from the FHIR
Coding. Required when system or
vocabulary_id is provided.Optional human-readable display text from the FHIR
Coding. Used as the
semantic search fallback when structured lookup fails, or as the
primary input for text-only CodeableConcept resolution.Direct OMOP
vocabulary_id (e.g. SNOMED, ICD10CM). Alternative to
system for callers who already know the OMOP vocabulary and want to
skip URI resolution.FHIR resource type that carried this coding (e.g.
Condition,
Observation, MedicationStatement). Used to validate domain
alignment and to filter the semantic search fallback. Supported values:
Condition, Observation, MedicationStatement,
MedicationRequest, MedicationAdministration, Immunization,
Procedure, AllergyIntolerance, DiagnosticReport.Include Phoebe-recommended related concepts in the response.
Maximum Phoebe recommendations to return (1–20).
Include a
mapping_quality signal (high, medium, low, or
manual_review) on the resolution.system + code), (vocabulary_id + code), or
display must be provided.
Response Fields
resolution
| Field | Type | Description |
|---|---|---|
vocabulary_id | string | null | OMOP vocabulary the source concept came from |
source_concept | object | The concept resolved from the input code |
standard_concept | object | The standard concept (after any Maps to traversal) |
mapping_type | string | direct, mapped, semantic_match, or unmapped |
relationship_id | string | Set to Maps to when mapping_type = mapped |
similarity_score | number | Only for semantic_match - cosine similarity (0–1) |
target_table | string | null | OMOP CDM target table (e.g. condition_occurrence) |
domain_resource_alignment | string | aligned, misaligned, or not_checked |
alignment_note | string | Human-readable explanation when misaligned |
mapping_quality | string | Only when include_quality=true: high, medium, low, or manual_review |
quality_note | string | Advisory note, e.g. for semantic matches |
alternative_standard_concepts | array | Additional Maps to targets when the source maps to several standard concepts |
recommendations | array | Phoebe recommendations when include_recommendations=true |
Mapping types
direct- The source code was found by exact lookup and is itself a standard concept.mapped- The source code was found but is non-standard; the response contains the standard target reached viaMaps to.semantic_match- The resolver fell back to semantic search (code miss or text-only input). Similarity score ≥ 0.70 is required for a match; ≥ 0.85 is flagged ashighquality, 0.70–0.84 asmedium.unmapped- The source concept was found but no standard target exists viaMaps to. The source is returned as-is; review recommended.
Errors
| HTTP | error.code | Cause |
|---|---|---|
| 400 | unknown_system | Unknown FHIR code system URI. Response includes a suggestion when a close match exists. |
| 400 | missing_input | None of (system + code), (vocabulary_id + code), or display was provided. |
| 400 | invalid_resource_type | resource_type is not a supported FHIR resource type. |
| 403 | vocabulary_restricted | The code system maps to a restricted vocabulary. |
| 404 | concept_not_found | No concept was found via direct lookup and no semantic fallback candidate met the 0.70 threshold. |
See also
- Batch resolve - up to 100 codings per request
- CodeableConcept resolve - pick the best match across multiple codings
- FHIR Integration Guide - end-to-end ETL patterns