id: TEDY.17.3 template: tool-feature module: tedy state: Built traces-from: [] source-refs:
- reference-editor/app/src/app/integration/import/file-import/concept-map/concept-map-file-import.component.ts
- reference-editor/app/src/app/resources/_lib/map-set/services/map-set-file-import.service.ts
- reference-editor/app/src/app/resources/_lib/map-set/model/map-set-version.ts (MapSetScope)
- reference-editor/app/src/app/resources/_lib/map-set/containers/map-set-scope-form.component
- terminology-server/fileimporter/mapset/MapSetFileImportController.java author: TEDY bootstrap created: 2026-08-09 updated: 2026-08-09
TEDY.17.3 – Map Set File Import
Feature grouping
Child of TEDY.17 – File & Source Import (Common Spec). Siblings: TEDY.17.1 CS, TEDY.17.2 VS, TEDY.17.4 External.
Description
Import Map Set associations from a CSV that follows a fixed downloadable template — so there is no analyze step and no column-mapping UI. Instead the importer exposes a scope editor (source/target definitions) and two clean-run options. Source and target Value Sets “should be created beforehand.”
Screen flow
Card + breadcrumb (Import → Concept Map); file-only (no link/file toggle).
- Destination Map Set — existing (search) or new (id, title multi-language, URI, description).
- Version —
- existing draft version select, plus two MS-only clean radios:
cleanRun(delete existing associations / hold) andcleanAssociationRun(overlapping associations: ignore / keep-both); - or new version: semantic version, status, release date, scope editor.
- existing draft version select, plus two MS-only clean radios:
- File — a Download template link (
GET /file-importer/map-set/csv-template→mapset-template.csv) and a file input. - Footer — Process (no dryRun).
Scope editor (MapSetScope)
Per side (source / target): a 3-way sourceType/targetType radio —
code-system | value-set | external-canonical-uri:
code-system→ an editable table of{ codeSystem, codeSystemVersion }rows (sourceCodeSystems/targetCodeSystems, each a{ id, version, uri }reference).value-set→ value-set search + version select (sourceValueSet/targetValueSet).external-canonical-uri→ a URI input.
Equivalence (and source/target codes) are columns in the CSV template, not UI fields.
Request DTO (/file-importer/map-set/process)
multipart request JSON:
type,url(note:url, notlink)mapSet { id, title?, uri?, description? }mapSetVersion { status, version, releaseDate, scope: MapSetScope }cleanRun,cleanAssociationRun
Defaults
fileType = csv, cleanRun = false, cleanAssociationRun = false; new version
status = draft, scope = {}.
Notes / difference from CS·VS
No /analyze round-trip, no dryRun, no column mapping — the CSV template dictates
the columns (source/target code, equivalence, …). The scope editor is the added
complexity (an editable-table + resource searches). (An association importer —
interactive source/target/order mapping with separators, /file-importer/association/*
— exists in the reference editor and is out of scope for v1; note for later.)
Testing
Per TEDY.17 → Testing. MS-specific units: the
process request builder uses url (not link) and carries cleanRun /
cleanAssociationRun; MapSetScope serialization per side
(code-system/value-set/external-canonical-uri → the right
sourceCodeSystems/sourceValueSet/URI shape); reuse the shared useImportJob
tests. No analyze/mapping to test. Component smoke: the scope editor’s 3-way radio
switches the sub-form and the template-download link fires.
Acceptance
- Download the template; upload a filled CSV against an existing MS draft version with a defined scope → associations imported (JobLog).
- New MS-import unit tests green (
nx test). - Create-new MS + version + scope inline, then import.
tscclean; en/et/ru i18n in sync; verified againsthtx.helex.dev/lmb.