id: TEDY.01.1 template: resource-list module: tedy state: Proposed traces-from: [] source-refs:
- reference-editor/app/src/app/resources/code-system/containers/list/code-system-list.component.html
- reference-editor/app/src/app/resources/_lib/code-system/services/code-system-lib.service.ts
- helex-tx/modules/tedy/frontend/src/pages/CodeSystemList.tsx
- helex-tx/libs/tedy/src/lib/client/codeSystemClient.ts author: TEDY bootstrap created: 2026-08-08 updated: 2026-08-08
TEDY.01.1 – Code System List
Feature grouping
Child of TEDY.01 – Code System (Common Spec). Siblings: TEDY.01.2 Add, TEDY.01.3 View. Shared vocabulary, data model, value sets, privileges, and API surface are defined in the root — not repeated here.
Description
List screen for terminology Code Systems (shared ResourceList pattern): header title + search + primary action (Add), filter side panel, column configuration, master-detail preview. Step-1 scan: _scans/tedy.01-code-system-list.md.
Glossary Terms
Per TEDY.01 § Glossary.
Business Feature Sitemap
flowchart LR
ROOT[TEDY.01] --> L[TEDY.01.1 List]
L -->|row / ID| V[TEDY.01.3 View]
L -->|Add code system| C[TEDY.01.2 Add]
Data Model
Reuses TEDY.01 § Data Model. No new entities (read-only over GET /ts/code-systems).
Sitemap / Navigation
/tedy/code-systems — row/ID → /tedy/code-systems/{id} (TEDY.01.3). Federation host mounts under /tedy.
Attributes (columns)
Order mirrors reference-editor (ID · LAST VERSION · TITLE · PUBLISHER · STATUS · COUNT):
| Column | Source | locked | Notes |
|---|---|---|---|
| ID | cs.id → link | yes | to TEDY.01.3 |
| Version | cs.lastVersion.version | no | the reference platform “LAST VERSION” |
| Title | localize(cs.title) | cs.name | no | |
| Publisher | cs.publisher via publisher VS | no | useValueSetExpand/resolveLocalizedDisplay, fallback raw |
| Status | cs.lastVersion.status chip | no | draft/active/retired |
| Concepts | cs.lastVersion.conceptsTotal | no | the reference platform “COUNT” |
Filters
Mirror reference-editor (publisher · status · space) + content:
| Filter | Control | → the reference platform param |
|---|---|---|
| Publisher | TxConceptSelect(url=publisher VS) | publisher |
| Status | TxConceptSelect(url=publication-status VS) | versionStatus |
| Space | AppSelect (from GET /spaces) | spaceId |
| Content | AppSelect (content-mode codes) | content |
Search box → textContains.
Actions
- Add code system (Manual / Import FHIR) — gated on
CodeSystem.write. Pending in TEDY (write flow not built; see TEDY.01.2).
StoryBook Component Contract
ResourceList<CodeSystem> — title tedy.codeSystem.titlePlural; columns per Attributes; dataSource useCodeSystems; rowKey cs.id; search → textContains; filter (AppFilterBar) per Filters; pagination server-side (limit/offset, meta.total); detailView custom Code System preview + Open link, showMetadata:false; columnConfigurable.
API Endpoints
GET /ts/code-systems?limit&offset&textContains&publisher&versionStatus&spaceId&content&lastVersionDecorated&lang · GET /spaces · GET /fhir/ValueSet/$expand (filters). See TEDY.01 § Common API Surface.
Security / Permissions
View: authenticated (dev guest). Add + row actions: CodeSystem.write. See TEDY.01 § Shared Privileges.
Non-functional Requirements
Per TEDY.01 § NFRs.
Business Tests
- Columns render in the reference platform order (ID·Version·Title·Publisher·Status·Concepts).
- Search filters by
textContainsand resets to page 1. - Publisher/Status/Space/Content narrow via the mapped params; Clear resets.
- Row click opens the preview; Open/ID → TEDY.01.3.
- A backend failure surfaces an error (no silent redirect).
Source Code References
CodeSystemList.tsx, codeSystemClient.ts, useCodeSystems.ts, useSpaces.ts. reference-editor: code-system-list.component.*, code-system-lib.service.ts.
Differences (live vs source vs TEDY)
| Aspect | dev-tx.example | reference-editor | TEDY |
|---|---|---|---|
| Column order | ID·LAST VERSION·TITLE·PUBLISHER·STATUS·COUNT | same | matches |
| Publisher cell | publisher VS designation | localizedConceptName | VS-resolved (@helex/tx), fallback raw |
| Publisher/Status filter | value-set concept select | tw-value-set-concept-select | TxConceptSelect(url=…) |
| Version / Count | links | routerLinks | plain text — pending version/concepts sub-routes |
| Row expand | inline row | expanded-row component | not ported (concepts shown on TEDY.01.3) |
| Add actions | Manual / Import FHIR | gated CodeSystem.write | pending (TEDY.01.2) |
Traces
- parent: TEDY.01 · traces-to: TEDY.01.2, TEDY.01.3