Summary
The Mapping Editor is the main alignment screen: source concepts on the left, target concepts on the right. You select a source concept, find its standard equivalent, pick the semantic relationship, and the mapping is created in one click.
At a glance
The editor is a resizable two-column layout, separated by a divider you can drag to adjust the space to your preference:
| Vocab | Concept name | Concept code | Patients | Records | ||
|---|---|---|---|---|---|---|
| ICCA | creatinine serum | L0021 | 1,842 | 9,614 | ||
| ICCA | lactate blood | L0102 | 1,203 | 4,871 | ||
| ICCA | hemoglobin | L0301 | 1,688 | 7,203 | ||
| ICCA | platelet count | L0411 | 974 | 3,120 | ||
| ICCA | WBC count | L0512 | 881 | 2,954 |
| Name | Code | Vocab. | Domain |
|---|---|---|---|
| Creatinine [Mass/volume] in Serum or Plasma | 2160-0 | LOINC | Measurement |
| Creatinine [Mass/volume] in Blood | 38483-4 | LOINC | Measurement |
| Creatinine [Moles/volume] in Serum or Plasma | 14682-9 | LOINC | Measurement |
The workflow is always the same:
- Select a source concept in the left table.
- Find the target concept in the right pane (via a concept set or a search in the OHDSI vocabularies).
- Click Exact match — or pick another equivalence level from the dropdown (more on this below).
Source concepts
| Vocab | Concept name | Concept code | Patients | Records | ||
|---|---|---|---|---|---|---|
| ICCA | creatinine serum | L0021 | 1,842 | 9,614 | ||
| ICCA | lactate blood | L0102 | 1,203 | 4,871 | ||
| ICCA | hemoglobin | L0301 | 1,688 | 7,203 | ||
| ICCA | platelet count | L0411 | 974 | 3,120 | ||
| ICCA | WBC count | L0512 | 881 | 2,954 |
The left table lists all the concepts to map with infinite scroll — rows load progressively as you scroll down.
Search bar
A full-width search bar sits above the table. Type a name, code or identifier, then press Enter or click Search. The search combines three strategies ranked by relevance:
- Exact match on the numeric identifier.
- Substring match on name and code.
- Fuzzy match via Jaro-Winkler (threshold ≥ 0.8) — handles typos and spelling variants.
Table columns
Available columns depend on the data present in your source. The button at the bottom of the table lets you show or hide columns:
- Status (small coloured dot) — see below.
- Vocabulary * — source terminology (e.g.,
Laboratory,ICCA…). - Category — useful for filtering source concepts by clinical domain and working through an entire category at once.
- Source concept ID — numeric ID used in OMOP exports. For file sources without an ID column, this is the ID assigned from the global view.
- Concept name — label of the concept.
- Concept code * — local code of the concept in your source system.
- Patients and Records — observed frequencies in your database. Essential for prioritising the most common concepts.
- Metadata — visible only when the
Metadata (JSON)column was configured at import. Clicking it opens the concept detail view.
* required columns at import.
Inline filters
A second header row, directly below the column titles, holds the filters. They combine in real time:
- Mapping status — dropdown with options: All · Unmapped · Mapped · Mapped elsewhere.
- Concept name — exact text match, unlike the search bar above which performs a fuzzy search.
- Code and ID — text fields.
- Vocabulary, Category, Subcategory, Domain, Class — multi-select menus, populated from the distinct values in your source.
The status dot
Each row starts with a coloured dot indicating the mapping state of the concept:
Grey
Unmapped
Green
Mapped in this project
Blue
Mapped in another project
Dark grey
Ignored
Green dot — hovering shows a summary of existing mappings for this concept in this project: target concept, vocabulary, equivalence, and received reviews.
MAPPED
→ Creatinine [Mass/volume] in Serum or Plasma
LOINC · exactMatch
✓ 2
Blue dot — the same code has already been mapped in another project of the workspace. Clicking it opens a popover listing those mappings, with an Import button to bring them into the current project in one click.
2 mappings in other projects
→ Creatinine [Mass/vol] in Serum or Plasma
MIMIC-IV Project · LOINC · exactMatch
✓ 3
→ Creatinine [Mass/vol] in Serum or Plasma
ICU-Renal Project · LOINC · closeMatch
✓ 1⚑ 1
Grouped import
The Evaluation tab has an Import from other projects button that lets you select and import available mappings from the workspace in one go — handy when creating a new project for a new database where the mapping work has already been done partially elsewhere.
Concept metadata
If your source includes metadata, the icon at the end of a row opens the concept metadata view in place of the source table. This view displays, depending on the content:
- A descriptive statistics card (min, median, mean, max, standard deviation…) with a boxplot.
- Interactive charts (distribution histogram, bar chart, pie chart, temporal trend by year).
- A breakdown by hospital unit.
- A free-form properties table.
- The full raw JSON (
{}button in the top right).
Heart_rate
ICCA · M0042 · 12,450 records · 1,842 patients
Statistics
| Min | 0 |
| P25 | 65 |
| Median | 78 |
| P75 | 92 |
| Max | 245 |
| Mean | 82.3 |
| Std | 18.7 |
Boxplot
Distribution
Distribution by sex
Trend by year
Hospital units
Properties
| Unit | bpm |
| Frequency | Hourly |
| Completeness | 98% |
| Source | Monitoring |
A ← Back button returns to the source table, preserving your scroll position.
Expected JSON structure
The Metadata (JSON) column must contain a JSON object. Linkr recognises two formats.
{
"metadata": {
"granularity": "Day",
"completeness": "98 %"
},
"statistics": {
"min": 0,
"p25": 45,
"median": 72,
"p75": 110,
"max": 980,
"mean": 78.4,
"std": 32.1,
"count": 12450
},
"distributions": [
{
"name": "Distribution by sex",
"type": "pie",
"data": [
{ "label": "Female", "value": 6230 },
{ "label": "Male", "value": 6220 }
]
},
{
"name": "Trend by year",
"type": "line",
"data": [
{ "label": "2020", "value": 3100 },
{ "label": "2021", "value": 4200 }
]
}
],
"properties": [
{ "label": "Unit", "value": "mg/dL" },
{ "label": "Source", "value": "LAB" }
]
}
| Key | Type | Required | Description |
|---|---|---|---|
metadata | object | no | Scalar key/value pairs displayed as a list. |
statistics | object | no | Descriptive statistics. If min, p25, median, p75, and max are all present, a boxplot is rendered. Accepted aliases: q1/p25, q3/p75, p50/median, sd/std. |
distributions | array | no | List of charts. Each entry has a name (title), a type ("bar", "pie", or "line", default "bar"), and a data array of { label, value } objects. |
properties | array | no | { label, value } pairs displayed in a free-form properties table. |
Target concepts
The right pane has three modes, toggled via a switcher at the top: Concept sets, Search and Suggestions. Each has its own logic, but all three let you select a target concept that you then map using the action bar.
”Concept sets” mode
A concept set is a group of standard concepts gathered around the same clinical reality (e.g. Heart rate, Creatinine), with expert notes attached: definition, included/excluded concepts, mapping rules. It guides you by narrowing the choice to candidates already validated for that category, instead of trawling the millions of ATHENA concepts.
You browse the concept sets linked to the project (those imported from the Target Concepts tab), sorted and filtered by Category, Subcategory and name. The Items, Version and Provenance columns are hidden by default.
| Category | Subcategory | Concept Set | |
|---|---|---|---|
| Biology | Renal | Creatinine | |
| Biology | Haematology | CBC — Complete blood count | |
| Biology | Hepatic | Liver panel | |
| Drugs | Antibiotics | Penicillins | |
| Imaging | Chest | Chest X-ray |
The ⓘ icon opens a side sheet detailing the concept set: expert-written description, usage statistics, resolved concepts and the raw expression. That’s where you find the mapping rules — e.g. “map plain HR to the generic concept, not the pulse-oximeter variant”.
Heart rate
Definition & Clinical Context
Heart rate is the number of heartbeats per unit of time, expressed in beats per minute (bpm). It is a vital sign and hemodynamic parameter. Normal ranges: 60–100 bpm in adults, 110–160 bpm in neonates.
This concept set captures numeric heart rate values only. It excludes pulse waveform morphology, pulse intensity, heart rhythm classification, calculated differences, measurement duration, and fetal heart rate (covered by a dedicated concept set).
Included Concepts
This concept set contains 22 standard concepts (20 LOINC + 2 SNOMED) organised by clinical context. The most generic concept — 3027018 / 8867-4 (LOINC) — should be used as the default when the source data does not specify a method, site, or position.
By measurement method
- 3027018 / 8867-4 — Heart rate (LOINC) — default, no method or site.
- 3001376 / 8889-8 — Heart rate by Pulse oximetry (LOINC) — from a pulse oximeter.
- 21490670 / 60978-4 — Heart rate Intra arterial line by Invasive (LOINC) — from an arterial line.
- 21490872 / 76282-3 — Heart rate.beat-to-beat by EKG (LOINC) — instantaneous R-R interval.
Mapping Notes
When the source records "heart rate" or "pulse" without specifics, map to 3027018 / 8867-4 (LOINC). If the source explicitly identifies the origin (pulse oximeter, arterial line, ECG), use the matching specific concept.
Click a row to open the concept set in the main pane: the top bar shows its name, category and concept count. You see its resolved concepts, navigate via search and column filters, and pick the one that matches. Concepts already mapped to the source concept appear greyed out.
Creatinine
Biology / Renal · 5 concepts
| Vocab | Name | Domain | Std |
|---|---|---|---|
| LOINC | Creatinine [Mass/volume] in Serum or Plasma | Measurement | S |
| LOINC | Creatinine [Mass/volume] in Blood | Measurement | S |
| LOINC | Creatinine [Moles/volume] in Serum or Plasma | Measurement | S |
| SNOMED | Serum creatinine measurement | Procedure | S |
| LOINC | Creatinine renal clearance | Measurement | S |
This is the fast and focused mode when your source concept belongs to a clinical category already covered by a reference concept set.
”Search” mode
Type a name, code or numeric ID and Linkr queries the ATHENA reference loaded into the project. Like the source-concept search, it combines exact match (on the ID), substring (every word in the query), and fuzzy (Jaro-Winkler ≥ 0.8) — useful for typos and spelling variants. Results are ranked by relevance.
| Vocab | Name | Code | Domain | Std | |
|---|---|---|---|---|---|
| LOINC | Creatinine [Mass/volume] in Serum or Plasma | 2160-0 | Measurement | S | |
| LOINC | Creatinine [Mass/volume] in Blood | 38483-4 | Measurement | S | |
| LOINC | Creatinine [Moles/volume] in Serum or Plasma | 14682-9 | Measurement | S | |
| SNOMED | Serum creatinine measurement | 113075003 | Procedure | S | |
| LOINC | Creatinine renal clearance | 2164-2 | Measurement | S |
The filters button (icon on the left of the search bar) opens a popover to restrict the search to specific vocabularies, domains, concept classes or standard concepts only. You also set the max result count there (default 1,000; over 10,000 will slow the browser).
Unfiltered search
With no filter active, Linkr warns you that the query will scan the entire ATHENA vocabulary — several seconds at minimum. Filter by at least one vocabulary (LOINC, SNOMED, RxNorm…) for faster, more relevant results.
Target concept sheet
The ⓘ icon at the end of a row — available in both Search and Suggestions modes — opens a side sheet detailing the OMOP concept: its properties, its relations (Maps to, Has component, Has method…), its ancestor/descendant hierarchy, and its synonyms. Essential to confirm a candidate is standard, current, and that its position in the hierarchy matches your source code.
Creatinine [Mass/volume] in Serum or Plasma
”Suggestions” mode
| Score | Methods | Vocab | Concept name | Code | Std | |
|---|---|---|---|---|---|---|
92% | 95%88%91% | LOINC | Creatinine [Mass/volume] in Serum or Plasma | 2160-0 | S | |
81% | 83%79%82% | LOINC | Creatinine [Mass/volume] in Blood | 38483-4 | S | |
76% | 80%71%77% | LOINC | Creatinine [Moles/volume] in Serum or Plasma | 14682-9 | S | |
68% | 72%64% | SNOMED | Serum creatinine measurement | 113075003 | S | |
54% | 58%51% | LOINC | Creatinine renal clearance | 2164-2 | S |
You browse pre-computed candidates for the selected source concept, ranked by combined score. Each row exposes the per-method scores (Syntactic, Semantic, Statistical, AI) as colour-coded dots, and a Manage suggestions button lets you import the scores file, tune the weights, or wipe everything.
These scores are not computed by Linkr: they come from a .parquet file produced by the Claude concept-mapping Skill, run outside the app on the ZIP export of your project.
All about suggestions
The scoring methods, the export → Claude Code → import workflow, and validation best practices are described on the dedicated Suggestions page.
Action bar
The action bar is only visible when a source concept is selected on the left. Its content changes depending on whether a target concept is selected on the right.
Map
When a source concept and a target concept are both selected, two elements appear:
- Green “Exact” button (SKOS badge, with dropdown arrow ) — a direct click creates the mapping as
skos:exactMatch. The arrow opens a menu to pick another equivalence (Close,Broad,Narrow,Related); the button badge then changes colour accordingly. - button (Map with comment) — opens a dialog where you pick the equivalence and type an explanatory comment.
The mapping is created immediately with status Unchecked, ready to be validated in the Evaluation tab.
Ignore
When a source concept is selected but no target concept is, the action bar switches to the ignore buttons:
- “Ignore” button — marks the source concept as having no standard equivalent. It leaves the count of concepts to map and appears in the “Ignored” KPI on the project dashboard. If the concept is already ignored, the button reads Remove ignored status.
- button (Ignore with comment) — same action, with a dialog to explain why (e.g., “admin identifier with no clinical meaning”).
Choosing the SKOS equivalence
Linkr uses the SKOS (Simple Knowledge Organization System) W3C standard to qualify how strong a mapping is. SSSOM exports (Simple Standard for Sharing Ontological Mappings) consume the same predicates. Five levels, from most precise to broadest:
The local code and the standard concept denote exactly the same clinical reality.
Very close — a swap is acceptable in most contexts.
The standard concept is broader than the local code.
The standard concept is more specific than the local code.
Recognised semantic link, but the two concepts are not interchangeable.
Practical rule: if you hesitate between Exact and Close, prefer Close and add a comment — a reviewer can escalate to Exact during evaluation. Avoid Related unless no other equivalence fits: OMOP exports (source_to_concept_map) treat all levels the same, but a Related in an SSSOM export signals to partners that the mapping is weak.
See also the Mapping section of the SKOS Primer for the W3C examples.
Multiple mappings
A single source concept can have multiple mappings to different targets. This is common when distinguishing the value, unit and instrument of a single measurement (e.g., maps_to, maps_to_value, maps_to_unit in OMOP nomenclature). Just re-select the source concept and map again; extra mappings stack and appear together in the Evaluation tab.
Workflow summary
Choose your order
Sort the source table by Patients (descending) to start with the most frequent concepts, or filter by Category to work through an entire clinical domain at once.
Select a source concept
Click a row. It highlights and the actions in the right pane become available.
Find the target concept
Browse a concept set (Concept sets mode), search freely in ATHENA (Search mode), or let pre-computed Suggestions rank the candidates. Click the matching row to select it.
Create the mapping
Click Exact match for a direct mapping, or use the dropdown for another SKOS equivalence. Add a comment if the choice needs explanation.
Move to the next
The dot on the source-concept row turns green. Click the next concept in the list.
Mapping stays manual
Even when working in Suggestions mode, you are still the one who creates the mapping by clicking Exact (or another SKOS equivalence). Linkr never maps automatically from a score: the suggestion ranks candidates, the expert keeps the decision.