Summary
A mapping project bundles a source (database or imported file) and all the alignments made from it. This page explains how to create, organise and navigate between your projects, and how to extract a database’s concepts before mapping them.
Project list
Each project shows up in the list as a card with the key information:
- Name — short project label (here
MIMIC-IV lab data). - Source — connected database or imported file (spreadsheet icon + filename).
- Badges — colored free labels to group projects (by hospital, team, study…). A project can carry several.
- Status — colored pill:
In progress(blue),On hold(amber) orCompleted(green). - Progress — bar showing mapped / total, with the approved count in green above.
Creating a project
Click New mapping project at the top of the list. A dialog opens:
New mapping project
Create a new concept mapping project from a database or an imported file.
Used in other projects
Drag & drop a file or click to browse
CSV, TSV, Excel (.xlsx, .xls), Parquet
You fill in:
- Name (required) and a technical identifier (a
used in the URL and exports, auto-generated from the name).slug - Description of the scope.
- Initial status — three options, usually In progress at creation:
- In progress — active work. Most projects sit here.
- On hold — paused (waiting on validation, data, etc.).
- Completed — mapping done and exported. Keep for traceability.
- Badges — colored free labels to group projects (by hospital, team, study…). Pick a colour, type a label, confirm. Multiple badges allowed. If other projects in the workspace already use badges, they’re suggested for reuse.
- Source type — toggle button:
- Source database: pick a database already connected to your workspace. Its concepts are then extracted from the Source Concepts tab (see below).
- File import: drop a
.csv,.tsv,.txt,.xlsx,.xlsor.parquetfile. A second settings page appears automatically (see below).
Import settings (file only)
For file sources, a second page of the dialog appears:
Import settings
Configure file parsing and map columns to concept fields.
Map file columns to concept fields. At least the concept name or code is required.
| # | itemid | label | fluid | category |
|---|---|---|---|---|
| 1 | 50808 | Free Calcium | Blood | Blood Gas |
| 2 | 50826 | Tidal Volume | Blood | Blood Gas |
| 3 | 50813 | Lactate | Blood | Blood Gas |
| 4 | 52029 | % Ionized Calcium | Blood | Blood Gas |
| 5 | 50801 | Alveolar-arterial Gradient | Blood | Blood Gas |
| 6 | 50810 | Hematocrit, Calculated | Blood | Blood Gas |
| 7 | 50820 | pH | Blood | Blood Gas |
| 8 | 50912 | Creatinine | Blood | Chemistry |
| 9 | 51221 | Hematocrit | Blood | Hematology |
| 10 | 51301 | White Blood Cells | Blood | Hematology |
Two blocks to fill in (a third one, the Preview, is computed automatically by Linkr and lets you verify that parsing is correct):
Parsing options
Linkr provides sensible defaults that work for most files; tweak as needed:
- Delimiter — auto-detected by default. Can be forced to comma, semicolon, tab or pipe.
- Encoding — UTF-8 by default. ISO-8859-1 or Windows-1252 available for older Excel/Windows files.
- Skip rows — useful if the file has decorative headers before the actual first row.
- Header row — Yes if the first row contains column names (standard case).
Column mapping
For each column in your file, indicate what it represents:
- Vocabulary * — name of the source terminology, usually local (e.g.
ICCAfor codes from the ICCA ICU software,Labsfor the laboratory system…). Used to filter by vocabulary later. - Category — grouping present in the source system (e.g. lab parameter family, prescription type, clinical specialty…) that helps identify concepts and chunk the work.
- Concept code * — source code of the concept, e.g.
itemidin MIMIC. - Source concept ID — numeric ID matching the
source_concept_idused in the OMOP ETL (source_to_concept_maptable). Fill it in if your file already has one; otherwise Linkr can generate one automatically in the OMOP custom range (see Overview). - Concept name — label of the concept, e.g.
labelin MIMIC. - Record count / Patient count — frequencies observed in the source database. Very useful to prioritise the most common concepts.
- Info (JSON) — column with JSON metadata (distributions, statistics) shown in the detail panel. The expected structure is detailed on the Mapping Editor page.
- Extra columns — any other columns you want to keep as free-form metadata.
* required.
Auto-detection
Linkr tries to pre-fill column fields from header names (e.g. concept_name, code, vocabulary_id…). Double-check before confirming.
Extracting the concepts of a database
For a project on a source database, Linkr does not read the concepts to map straight from the database: it extracts them once, from the project’s Source Concepts tab. Until something has been extracted, the Mapping Editor shows “Source concepts not extracted yet” and a Go to Source Concepts button.
The reason is volume. Counting each concept’s records and patients, or computing its distribution, scans the clinical tables — on a warehouse of several hundred million rows, that takes minutes, even hours. The extraction does this work once; from then on, the editor, its sorting and its filters read a local table and answer at once.
Options
- Concept dictionary — the schema’s concept tables to extract. All of them by default.
- Compute concept metadata — when off, Linkr only copies the list (codes, names, categories), with no counts and no profile. Much faster.
- Only concepts present in the data — on by default. Skips the dictionary concepts that no record uses. On OMOP, the dictionary is the whole
concepttable: hundreds of thousands of concepts, of which only a small share appears in your data. - What to compute for each concept — the blocks of the profile: record and patient counts, completeness, value statistics and distribution, unit, distribution over time…
- Screen first and Order — the order concepts are extracted in. By default, Concepts with the most records, Largest first: if you pause, you already have the most frequent concepts.
- Minimum patients and Minimum occurrences per value — confidentiality thresholds. Below the first, a concept keeps its counts but gets no profile; below the second, a categorical value is left out.
When the database links one dictionary to several event tables — on OMOP, measurements, drugs, conditions, procedures… — each concept is counted and profiled in the table holding most of its records.
Start, pause, resume
Click Start extraction. Progress is counted in concepts and saved as it goes: Pause at any point, then Resume, even days later. The concepts extracted so far are available in the editor at once. Start over runs the extraction again from the beginning, Discard deletes it; either way, the mappings you have already made are not affected.
The result is a table of concepts identical to an imported file: it travels with the project on export and git sync.
Local vocabularies in an OMOP database
An OMOP database’s dictionary is its concept table. A local code only appears there if it was loaded as a custom concept, with an id from 2,000,000,000 up, its code and its name. A code recorded only in *_source_value, with a *_source_concept_id of 0 or an id missing from concept, stays invisible to a mapping project: load your local vocabularies into concept first.
ZIP import / export
Two actions, in two different places:
- Import — button above the project list, to load a Linkr ZIP file (typically a project exported from another instance or shared by a colleague).
- Export — on each project card, via the
…icon at the top right.
The ZIP format is detailed on the Export page — it contains entity.json (the project’s identity record), all mappings, the source concepts, the README and the licence. The SSSOM, C/CR and Usagi files are not in it: they are derived from the mappings and obtained from the Export tab. The ZIP re-imports as-is.
Import conflicts
If the imported project has the same identifier as an existing one, Linkr offers two options: overwrite or duplicate (generate a new internal ID and keep both).