BDCHM Interactive Documentation
BioData Catalyst Harmonized Model — Schema Explorer
Target release: July 30, 2026
This page documents the current state of the interactive schema explorer,
what's been built, what remains, and open design questions.
The app itself is at sigfried.github.io/dynamic-model-var-docs.
What's Shipped
Entity Explorer (default view)
Progressive-disclosure interface replacing the original multi-panel layout.
Entities organized by category (Admin/Study, Clinical, Observations/Measurements,
Lab/Biospecimen, Survey, Files/Other) with a Pinned section at top. Click an entity
to drill down into its slots and variables. Click a range badge to see enum details
(permissible values, usages) or to recursively drill into another entity. Subclass
indentation for inheritance relationships. Pin/unpin entities to customize the top
section. The old "Kitchen Sink" multi-panel view is still available via a toggle
in the header.
live
progressive disclosure
recursive drilldown
pinning
Kitchen Sink view (legacy)
The original multi-panel layout with link overlays connecting classes to their
ranges, detail popups, relationship info boxes, and variable tables. All entity
types (classes, enums, slots, types, variables) visible simultaneously. Still
accessible via the Explorer/Kitchen Sink toggle in the header.
legacy view
links + panels
Explorations & Mockups
Standalone proof-of-concept visualizations exploring model structure.
Not yet integrated into the main app.
Containment Tree
Interactive indented list showing the full containment hierarchy rooted at
ResearchStudyCollection. BDCHM uses FK-style back-references (child points to parent),
so single-valued entity references are inverted to show "what contains what."
Inheritance subclasses nested inline with diamond markers, showing only their own
additional slots. Expand/collapse, hide-subclasses toggle, dark mode.
exploration
containment
FK inversion
Containment Graph
Cytoscape + dagre node-link diagram of the containment hierarchy (49 nodes, 95 edges).
Three edge types: solid (has-a), purple (flipped FK), dashed green (is-a subclass).
Click nodes to highlight neighborhoods. Multiple layouts (top-down, left-right,
force-directed). Legibility is borderline at full scale — motivates the
"pin a subset" approach below.
exploration
graph
Cytoscape + dagre
What's Next
-
in progress
Pinned-entity diagram.
Let users select a set of entities and generate a focused containment
diagram with just those entities and their relationships. Uses the
FK-inversion heuristic from the containment tree. Graph renderer TBD
(Cytoscape/dagre, ELK, or adapted from the icd11-playground's D3+ELK
renderer).
-
todo
Non-LinkML terminology.
Default to general-audience terms (property for slot,
value set for enum, property type for range) with
LinkML equivalents shown in tooltips. Possibly a toggle between
"general" and "LinkML" vocabulary modes.
-
todo
Search / filter.
Search across entity names, descriptions, slot names, and variable labels.
Auto-expand categories with matches.
-
todo
URL state encoding.
Persist expanded entity, drilldown tab, and open inline cards to the URL
for deep-linking and browser back button support.
-
todo
Enum detail: CURIE labels and definitions.
Show CURIE labels and definitions in enum detail cards, not just the
CURIE identifiers.
-
todo
Render markdown in schema fields.
Some descriptions (e.g., UnitOfMeasurementEnum) contain markdown but are
currently rendered as plain text.
Open Design Questions
Model structure: is-a vs has-a
- BDCHM follows relational FK conventions — references point from child to parent.
For a containment view, we invert single-valued entity references. A small override
list handles exceptions. The heuristic needs validation with the model designer.
- ResearchStudyCollection is the top-level container, but the has-a hierarchy doesn't
form a clean tree (some entities are referenced by multiple parents, some are
associational references rather than containment).
- The full-model graph (49 nodes, 95 edges) is borderline legible. A "pin a subset
and generate a focused diagram" approach may be more useful than trying to show
everything.
User audience
- Balancing: NHLBI (customer), data quality presentation, end-user experience,
and internal dogfooding (team's own use of the tool).
- Non-technical users want simpler terms; technical users want LinkML precision.
Progressive disclosure can serve both: general terms by default, LinkML terms
in tooltips or via a toggle.
Where do links fit?
- The old Kitchen Sink view's curving-line connections were visually appealing and
gave an immediate sense of structure. Some stakeholders want to keep them available.
- The Entity Explorer's inline drilldown and "referenced by" lists provide the same
relationship information in a more compact, contextual way.
- Possible compromise: links as an optional overlay or a separate "Relationships"
tab/view, rather than the default.
Variable Library dependency
- Once the Variable Library is live, variable drilldowns in the Entity Explorer
can be simplified or removed — variables will have their own dedicated tool.