From 313d0857482d591e21c5af662b66c9750a280a02 Mon Sep 17 00:00:00 2001 From: "Alkasab Agent (agent-dev)" Date: Mon, 21 Sep 2026 14:00:32 +0000 Subject: [PATCH 01/19] Add task runner and one-step bucket publishing - Taskfile with check, build, serve, publish, and viz tasks - task publish validates, builds, rewrites links for object storage, and uploads to Tigris - Client-side link fix covers sidebar, search, and graph navigation on the bucket copy - Pre-review banner on the bundle's root index Co-Authored-By: Claude Fable 5.1 --- .gitignore | 2 + DEV_LOG.md | 2 + README.md | 8 +- Taskfile.yml | 46 ++++++++++++ knowledge/index.md | 2 + site/README.md | 4 + site/build.sh | 5 +- site/publish-tigris.sh | 41 ++++++++++ tools/flatten_site_links.py | 145 ++++++++++++++++++++++++++++++++++++ 9 files changed, 250 insertions(+), 5 deletions(-) create mode 100644 Taskfile.yml create mode 100644 site/publish-tigris.sh create mode 100644 tools/flatten_site_links.py diff --git a/.gitignore b/.gitignore index 053dee5..a84421b 100644 --- a/.gitignore +++ b/.gitignore @@ -16,3 +16,5 @@ public/ # tracked, despite the blanket `dist/` rule above. !site/okf-meta-plugin/dist/ !site/okf-meta-plugin/dist/** +viz.html +.playwright-cli/ diff --git a/DEV_LOG.md b/DEV_LOG.md index 8125d28..4e8ff53 100644 --- a/DEV_LOG.md +++ b/DEV_LOG.md @@ -21,3 +21,5 @@ Engineering narrative for the oidm-knowledge repository: decisions, blockers, an - Phases 2 to 5 complete: six Opus agents wrote the semantic foundation, data structures, applications, and roadmap; each appended source conflicts to a collected file that became `roadmap/open-questions.md` (90 entries plus 21 upstream defects to file as issues). Project lead decisions applied: the taxonomies are the "MGB exam-oriented sub-taxonomies"; the next-generation vocabulary document is published as draft; the use case catalog is published with its committee credit. - Integration: ledger (118 rows) and log merged from agent scratch files; naming made consistent; a dead URL and an exam count corrected; both validators report 115 concepts, 0 errors, 0 warnings; the site rebuilds. Remaining Phase 6 work is the project lead's verification pass, then the first release entry and the follow-up issues (source-repo link-back PRs, upstream defect reports, manuscripts). - Added the project lead's stated goals verbatim to the plan so that documents citing the planning interview have a written source (open question 82). +- Initial local commit made, marked pre-review. Added `Taskfile.yml` (`task check|build|serve|publish|viz`). `task publish` validates, builds Quartz with a bucket-specific config, rewrites internal links to explicit `.html` paths with `tools/flatten_site_links.py` (Quartz has no file-style link option; plain object storage has no clean-URL rewriting), and uploads to the Tigris bucket. Published at https://oidm-public.t3.storage.dev/oidm-knowledge/index.html and verified. Root index now carries a pre-review banner. +- Bucket links, second pass: the first flattening only rewrote hrefs in the HTML, so links built in the browser (explorer sidebar, search results, graph node clicks) still pointed at extensionless URLs and returned 404 on the bucket. `tools/flatten_site_links.py` now also injects a small script into every page that applies the same rule at link creation and click time, and patches the emitted JavaScript so direct `window.location` navigations pass through it. Verified in a real browser against the bucket: sidebar click, search result click, and body links all resolve. diff --git a/README.md b/README.md index 9a010fa..0243949 100644 --- a/README.md +++ b/README.md @@ -7,12 +7,12 @@ The content is an [Open Knowledge Format](https://okf.md) 0.2 bundle in [`knowle ## Reading it - Browse on GitHub from [`knowledge/index.md`](knowledge/index.md). -- Rendered site: coming in the first release. +- Rendered site: `task build` renders it with Quartz into `public/`; `task publish` builds and uploads a browsable copy to the Tigris bucket in one step; GitHub Pages deploys from `main` via `.github/workflows/site.yml`. - Agents: read `knowledge/index.md` first, follow links only into what the task needs, and weigh `status`, `verified`, and `stale_after` in each document's frontmatter. ## Contributing -See [CONTRIBUTING.md](CONTRIBUTING.md) and the [authoring guide](knowledge/guides/authoring-guide.md). Two checkers must pass: +See [CONTRIBUTING.md](CONTRIBUTING.md) and the [authoring guide](knowledge/guides/authoring-guide.md). Two checkers must pass; `task check` runs both (or run them directly): ```bash uv run .agents/skills/validate/scripts/okf_validate.py knowledge --strict @@ -24,7 +24,9 @@ uv run tools/check_bundle.py | Path | Purpose | |---|---| | `knowledge/` | The OKF bundle | -| `tools/` | House-rules checker | +| `Taskfile.yml` | `task check`, `task build`, `task serve`, `task publish`, `task viz` | +| `site/` | Quartz configuration, badge plugin, build and publish scripts | +| `tools/` | House-rules checker and site post-processing scripts | | `.agents/skills/` | Installed OKF skills (author, validate, visualize, backfill) | | `CHANGELOG.md` | Reader-facing changes | | `DEV_LOG.md` | Engineering narrative | diff --git a/Taskfile.yml b/Taskfile.yml new file mode 100644 index 0000000..0ed5a6b --- /dev/null +++ b/Taskfile.yml @@ -0,0 +1,46 @@ +# Task runner for the OIDM knowledgebase. Install: https://taskfile.dev +# +# task list tasks +# task check run both validators (OKF conformance + house rules) +# task build build the Quartz site into public/ +# task serve local dev server with live reload +# task publish build, flatten links for object storage, upload to Tigris +# task viz render the bundle as a single-file interactive graph (viz.html) +version: "3" + +vars: + BUCKET: '{{.BUCKET | default "oidm-public"}}' + PREFIX: '{{.PREFIX | default "oidm-knowledge"}}' + +tasks: + default: + silent: true + cmds: + - task --list + + check: + desc: Validate the bundle (OKF 0.2 conformance, then house rules) + cmds: + - uv run .agents/skills/validate/scripts/okf_validate.py knowledge --strict + - uv run tools/check_bundle.py + + build: + desc: Build the Quartz site into public/ (clean-URL links, for GitHub Pages) + cmds: + - bash site/build.sh + + serve: + desc: Serve the site locally with live reload + cmds: + - bash site/build.sh serve + + publish: + desc: Build, flatten links for object storage, and upload to Tigris (BUCKET, PREFIX overridable) + deps: [check] + cmds: + - bash site/publish-tigris.sh {{.BUCKET}} {{.PREFIX}} + + viz: + desc: Render the bundle as one self-contained HTML graph at viz.html + cmds: + - uv run .agents/skills/visualize/scripts/okf_visualize.py knowledge -o viz.html --title "OIDM knowledge" diff --git a/knowledge/index.md b/knowledge/index.md index 6f38561..0d11a81 100644 --- a/knowledge/index.md +++ b/knowledge/index.md @@ -6,6 +6,8 @@ okf_version: "0.2" Canonical high-level documentation for the Open Imaging Data Model (OIDM). +**Status: pre-review draft.** Every document was generated by agents from the source repositories and has `status: draft` until the project lead verifies it. Do not treat any page as authoritative until it carries a `verified` entry and `status: stable`. + **Start here:** [What is OIDM](./overview/what-is-oidm.md), then [Architecture](./overview/architecture.md). Look terms up in the [glossary](./glossary/), find where code and content live in the [repository map](./repositories/repository-map.md), and see what is settled versus open in the [roadmap](./roadmap/) and [open questions](./roadmap/open-questions.md). Every document's frontmatter states its type, status, sources, and who generated and verified it; agents should read that before relying on a page. diff --git a/site/README.md b/site/README.md index 4cbcf02..0bc6b16 100644 --- a/site/README.md +++ b/site/README.md @@ -76,3 +76,7 @@ visible properties panel is suppressed so it doesn't duplicate okf-meta-plugin's ## Link resolution The bundle uses two link styles the OKF spec allows: bundle-absolute links (`/dir/file.md`) in concept documents and `./file.md` links in directory indexes. Quartz's `markdownLinkResolution` handles one style at a time, so `build.sh` first runs `tools/prepare_site_content.py`, which copies `knowledge/` to a temporary directory outside the repository (Quartz skips gitignored paths) and rewrites every internal link to the bundle-absolute form. Quartz then builds from that copy with `markdownLinkResolution: absolute`. The bundle in git is never modified. + +## Publishing to the Tigris bucket + +`task publish` (or `bash site/publish-tigris.sh [bucket] [prefix]`) does everything in one step: validates the bundle, builds with a bucket-specific config (`baseUrl` under the bucket host, client-side navigation and popovers off), rewrites every internal link in the built HTML to an explicit `.html` or `index.html` path with `tools/flatten_site_links.py` (plain object storage serves keys literally, with no clean-URL rewriting), and uploads with the Tigris CLI. Result: `https://.t3.storage.dev//index.html`. The GitHub Pages build does not use the flattening step. diff --git a/site/build.sh b/site/build.sh index 1a0d190..1110421 100755 --- a/site/build.sh +++ b/site/build.sh @@ -33,8 +33,9 @@ fi git -C "$QUARTZ_SRC" fetch --quiet origin "$QUARTZ_SHA" || true git -C "$QUARTZ_SRC" checkout --quiet "$QUARTZ_SHA" -echo "==> Copying site/quartz.config.yaml into the checkout" -cp "$SITE_DIR/quartz.config.yaml" "$QUARTZ_SRC/quartz.config.yaml" +CONFIG_FILE="${QUARTZ_CONFIG:-$SITE_DIR/quartz.config.yaml}" # override with QUARTZ_CONFIG= (used by publish-tigris.sh) +echo "==> Copying ${CONFIG_FILE#"$REPO_ROOT"/} into the checkout" +cp "$CONFIG_FILE" "$QUARTZ_SRC/quartz.config.yaml" echo "==> npm ci" ( cd "$QUARTZ_SRC" && npm ci ) diff --git a/site/publish-tigris.sh b/site/publish-tigris.sh new file mode 100644 index 0000000..de9debf --- /dev/null +++ b/site/publish-tigris.sh @@ -0,0 +1,41 @@ +#!/usr/bin/env bash +# Publish a browsable copy of the site to a Tigris bucket (plain object +# storage, no directory-index mapping). +# +# bash site/publish-tigris.sh [bucket] [prefix] +# defaults: bucket=oidm-public prefix=oidm-knowledge +# +# Builds with a bucket-specific Quartz config (baseUrl under the bucket host, +# single-page navigation and popovers off, since those fetch extensionless +# URLs), flattens every internal link to an explicit .html path, then uploads +# with the Tigris CLI. Result: https://.t3.storage.dev//index.html +set -euo pipefail + +BUCKET="${1:-oidm-public}" +PREFIX="${2:-oidm-knowledge}" + +SITE_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" +REPO_ROOT="$(cd "$SITE_DIR/.." && pwd)" +TMP_CONFIG="$(mktemp --suffix=.yaml)" +trap 'rm -f "$TMP_CONFIG"' EXIT + +python3 - "$SITE_DIR/quartz.config.yaml" "$TMP_CONFIG" "$BUCKET" "$PREFIX" <<'EOF' +import re, sys +src, dst, bucket, prefix = sys.argv[1:] +s = open(src).read() +s = re.sub(r'^(\s*)baseUrl:.*$', rf'\1baseUrl: {bucket}.t3.storage.dev/{prefix}', s, flags=re.M) +s = re.sub(r'^(\s*)enableSPA:.*$', r'\1enableSPA: false', s, flags=re.M) +s = re.sub(r'^(\s*)enablePopovers:.*$', r'\1enablePopovers: false', s, flags=re.M) +open(dst, 'w').write(s) +EOF + +echo "==> Building with bucket config" +QUARTZ_CONFIG="$TMP_CONFIG" bash "$SITE_DIR/build.sh" + +echo "==> Flattening links for object storage" +python3 "$REPO_ROOT/tools/flatten_site_links.py" "$REPO_ROOT/public" + +echo "==> Uploading to t3://$BUCKET/$PREFIX/" +t3 cp -r "$REPO_ROOT/public/" "t3://$BUCKET/$PREFIX/" + +echo "==> Published: https://$BUCKET.t3.storage.dev/$PREFIX/index.html" diff --git a/tools/flatten_site_links.py b/tools/flatten_site_links.py new file mode 100644 index 0000000..92ce124 --- /dev/null +++ b/tools/flatten_site_links.py @@ -0,0 +1,145 @@ +#!/usr/bin/env python3 +"""Make a Quartz build browsable from plain object storage. + +Quartz links pages in the "clean URL" style (`../glossary/oifm`, `./glossary/`) +and relies on the web server to map those to `oifm.html` and `index.html`. +Object storage such as a Tigris bucket serves keys literally, so this script +post-processes the finished build in three ways: + +1. Rewrites every internal `href` in the emitted HTML to the explicit file + (`../glossary/oifm.html`, `./glossary/index.html`). +2. Injects a small script into every page that applies the same rule in the + browser to links the explorer sidebar and search build at runtime, both at + creation (mutation observer) and at click time (capture-phase handler). +3. Patches the emitted JavaScript so direct navigations (`window.location.href + = url`, used by the graph view on node click, `window.location.assign`) and + the search panel's page-preview fetch pass through the same rule. + +Run it on the output directory after `site/build.sh`; it is idempotent. + +Usage: python3 tools/flatten_site_links.py public +""" +from __future__ import annotations + +import glob +import os +import re +import sys + +HREF = re.compile(r'(href=")([^"#?]+)([#?][^"]*)?(")') +SKIP = re.compile(r"^(?:[a-z][a-z0-9+.-]*:|//|#)", re.I) +HAS_EXT = re.compile(r"\.[A-Za-z0-9]{1,8}$") +MARKER = "okf-bucket-links" + +CLIENT_SCRIPT = f"""""" + +JS_PATCHES = [ + # new URL(resolve(slug), window.location.origin).toString() (search preview fetch) + (re.compile(r"(? (graph node click) + (re.compile(r"window\.location\.href\s*=\s*(?!\(window\.__okfHref)([A-Za-z_$][\w$]*)"), + r"window.location.href=(window.__okfHref||function(x){return x})(\1)"), + # window.location.assign() (spaNavigate fallback when SPA is off) + (re.compile(r"window\.location\.assign\((?!\(window\.__okfHref)([A-Za-z_$][\w$]*)\)"), + r"window.location.assign((window.__okfHref||function(x){return x})(\1))"), +] + + +def fix(target: str) -> str: + if SKIP.match(target): + return target + if target.endswith("/"): + return target + "index.html" + last = target.rsplit("/", 1)[-1] + if last and not HAS_EXT.search(last): + return target + ".html" + return target + + +def process_html(path: str) -> tuple[int, bool]: + with open(path, encoding="utf-8") as fh: + html = fh.read() + n = 0 + + def sub(m: re.Match) -> str: + nonlocal n + new = fix(m.group(2)) + if new != m.group(2): + n += 1 + return f"{m.group(1)}{new}{m.group(3) or ''}{m.group(4)}" + + new_html = HREF.sub(sub, html) + injected = False + if MARKER not in new_html and "" in new_html: + new_html = new_html.replace("", CLIENT_SCRIPT + "\n", 1) + injected = True + if new_html != html: + with open(path, "w", encoding="utf-8") as fh: + fh.write(new_html) + return n, injected + + +def process_js(path: str) -> int: + with open(path, encoding="utf-8", errors="surrogateescape") as fh: + js = fh.read() + total = 0 + for pat, repl in JS_PATCHES: + js, k = pat.subn(repl, js) + total += k + if total: + with open(path, "w", encoding="utf-8", errors="surrogateescape") as fh: + fh.write(js) + return total + + +def main(out_dir: str) -> int: + n_links = n_files = n_inject = 0 + for path in glob.glob(os.path.join(out_dir, "**", "*.html"), recursive=True): + n, injected = process_html(path) + n_links += n + n_files += 1 if (n or injected) else 0 + n_inject += 1 if injected else 0 + n_js = sum(process_js(p) for p in glob.glob(os.path.join(out_dir, "**", "*.js"), recursive=True)) + print(f"flattened {n_links} links in {n_files} files, injected client fix into {n_inject} pages, patched {n_js} direct navigations under {out_dir}") + return 0 + + +if __name__ == "__main__": + sys.exit(main(sys.argv[1] if len(sys.argv) > 1 else "public")) From b574fc89d2f5b91a3a4dbe1aa9a50e3a99a370d0 Mon Sep 17 00:00:00 2001 From: "Alkasab Agent (agent-dev)" Date: Mon, 21 Sep 2026 20:28:46 +0000 Subject: [PATCH 02/19] Replace Mermaid with Excalidraw diagrams - Architecture, data-structure hierarchy, and repository map rendered to SVG from .excalidraw sources beside each page - Diagram builders and headless renderer under tools/diagrams - Raw source material kept in a gitignored sources/ folder Co-Authored-By: Claude Fable 5.1 --- .gitignore | 3 + DEV_LOG.md | 4 + .../data-structures/hierarchy.excalidraw | 1014 ++++++++ knowledge/data-structures/hierarchy.md | 21 +- knowledge/data-structures/hierarchy.svg | 2 + knowledge/overview/architecture.excalidraw | 2027 +++++++++++++++ knowledge/overview/architecture.md | 36 +- knowledge/overview/architecture.svg | 2 + .../repositories/repository-map.excalidraw | 2250 +++++++++++++++++ knowledge/repositories/repository-map.md | 51 +- knowledge/repositories/repository-map.svg | 2 + tools/diagrams/build_architecture.py | 66 + tools/diagrams/build_hierarchy.py | 39 + tools/diagrams/build_repository_map.py | 80 + tools/diagrams/excalib.py | 111 + tools/diagrams/render_excalidraw.py | 194 ++ tools/diagrams/render_template.html | 57 + 17 files changed, 5860 insertions(+), 99 deletions(-) create mode 100644 knowledge/data-structures/hierarchy.excalidraw create mode 100644 knowledge/data-structures/hierarchy.svg create mode 100644 knowledge/overview/architecture.excalidraw create mode 100644 knowledge/overview/architecture.svg create mode 100644 knowledge/repositories/repository-map.excalidraw create mode 100644 knowledge/repositories/repository-map.svg create mode 100644 tools/diagrams/build_architecture.py create mode 100644 tools/diagrams/build_hierarchy.py create mode 100644 tools/diagrams/build_repository_map.py create mode 100644 tools/diagrams/excalib.py create mode 100644 tools/diagrams/render_excalidraw.py create mode 100644 tools/diagrams/render_template.html diff --git a/.gitignore b/.gitignore index a84421b..85f74ce 100644 --- a/.gitignore +++ b/.gitignore @@ -18,3 +18,6 @@ public/ !site/okf-meta-plugin/dist/** viz.html .playwright-cli/ + +# Raw source material reviewed for the bundle (may contain unpublished planning); never committed +sources/ diff --git a/DEV_LOG.md b/DEV_LOG.md index 4e8ff53..ccecfbe 100644 --- a/DEV_LOG.md +++ b/DEV_LOG.md @@ -23,3 +23,7 @@ Engineering narrative for the oidm-knowledge repository: decisions, blockers, an - Added the project lead's stated goals verbatim to the plan so that documents citing the planning interview have a written source (open question 82). - Initial local commit made, marked pre-review. Added `Taskfile.yml` (`task check|build|serve|publish|viz`). `task publish` validates, builds Quartz with a bucket-specific config, rewrites internal links to explicit `.html` paths with `tools/flatten_site_links.py` (Quartz has no file-style link option; plain object storage has no clean-URL rewriting), and uploads to the Tigris bucket. Published at https://oidm-public.t3.storage.dev/oidm-knowledge/index.html and verified. Root index now carries a pre-review banner. - Bucket links, second pass: the first flattening only rewrote hrefs in the HTML, so links built in the browser (explorer sidebar, search results, graph node clicks) still pointed at extensionless URLs and returned 404 on the bucket. `tools/flatten_site_links.py` now also injects a small script into every page that applies the same rule at link creation and click time, and patches the emitted JavaScript so direct `window.location` navigations pass through it. Verified in a real browser against the bucket: sidebar click, search result click, and body links all resolve. +- Diagrams: the project lead rejected Mermaid. Replaced all three Mermaid blocks (architecture, data-structure hierarchy, repository map) with Excalidraw diagrams built by small Python builders in `tools/diagrams/` (shared helpers in `excalib.py`), rendered to SVG through the Excalidraw library in a headless browser (`render_excalidraw.py`, module pinned to 0.18.0 after the unpinned esm.sh build broke), and iterated by viewing each render: architecture took three versions, the repository map four, the hierarchy two. The `.excalidraw` source sits beside each document with its SVG. Diagram iteration was delegated to a Sonnet agent after the first diagram. +- Site: Quartz assumes a host that rewrites clean URLs; the bucket does not. A Starlight spike (file-style output, site-graph plugin for graph and backlinks) is running in the scratchpad; the choice of generator goes to the project lead for review before anything changes. New rule recorded: every tool selection is reviewed with the project lead first. +- Sources: the project lead added seven manuscript and deck files to the bucket folder oidm-knowledge-sources; an agent is extracting and summarizing them into the gitignored `sources/bucket/`. +- Repository review: both validators pass (115 concepts, zero errors or warnings), and the Quartz build succeeds for all 133 Markdown files. All concepts remain unverified drafts. Source inventories now exist for the imported manuscripts/decks and 15 Excalidraw canvases; integration remains outstanding. Recorded publishing workflow gaps, source-watching behavior, documentation discrepancies, and the absence of a configured Git remote in `docs/plans/repository-review.md`. Review only; no publishing or commits. diff --git a/knowledge/data-structures/hierarchy.excalidraw b/knowledge/data-structures/hierarchy.excalidraw new file mode 100644 index 0000000..8a5f8dc --- /dev/null +++ b/knowledge/data-structures/hierarchy.excalidraw @@ -0,0 +1,1014 @@ +{ + "type": "excalidraw", + "version": 2, + "source": "oidm-knowledge/tools/diagrams", + "elements": [ + { + "type": "text", + "id": "title", + "x": 60, + "y": 40, + "width": 769.0799999999999, + "height": 32.5, + "strokeColor": "#1e40af", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1001, + "version": 1, + "versionNonce": 1002, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "From one observation to a patient's imaging history", + "originalText": "From one observation to a patient's imaging history", + "fontSize": 26, + "fontFamily": 2, + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 + }, + { + "type": "text", + "id": "subtitle", + "x": 60, + "y": 82, + "width": 755.16, + "height": 17.5, + "strokeColor": "#64748b", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1003, + "version": 1, + "versionNonce": 1004, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "Each structure to the right contains the ones to its left and adds one more level of context.", + "originalText": "Each structure to the right contains the ones to its left and adds one more level of context.", + "fontSize": 14, + "fontFamily": 2, + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 + }, + { + "type": "rectangle", + "id": "obs", + "x": 60, + "y": 130, + "width": 280, + "height": 74, + "strokeColor": "#1e3a5f", + "backgroundColor": "#3b82f6", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1005, + "version": 1, + "versionNonce": 1006, + "isDeleted": false, + "groupIds": [], + "boundElements": [ + { + "id": "obs_t", + "type": "text" + }, + { + "id": "a1", + "type": "arrow" + } + ], + "link": null, + "locked": false, + "roundness": { + "type": 3 + } + }, + { + "type": "text", + "id": "obs_t", + "x": 70, + "y": 140, + "width": 260, + "height": 54, + "strokeColor": "#ffffff", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1007, + "version": 1, + "versionNonce": 1008, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "Observation\none finding, one exam", + "originalText": "Observation\none finding, one exam", + "fontSize": 16, + "fontFamily": 2, + "textAlign": "center", + "verticalAlign": "middle", + "containerId": "obs", + "lineHeight": 1.25 + }, + { + "type": "rectangle", + "id": "efl", + "x": 490, + "y": 130, + "width": 280, + "height": 74, + "strokeColor": "#1e3a5f", + "backgroundColor": "#3b82f6", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1009, + "version": 1, + "versionNonce": 1010, + "isDeleted": false, + "groupIds": [], + "boundElements": [ + { + "id": "efl_t", + "type": "text" + }, + { + "id": "a1", + "type": "arrow" + }, + { + "id": "a2", + "type": "arrow" + } + ], + "link": null, + "locked": false, + "roundness": { + "type": 3 + } + }, + { + "type": "text", + "id": "efl_t", + "x": 500, + "y": 140, + "width": 260, + "height": 54, + "strokeColor": "#ffffff", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1011, + "version": 1, + "versionNonce": 1012, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "Exam Finding List\nevery observation of one exam", + "originalText": "Exam Finding List\nevery observation of one exam", + "fontSize": 16, + "fontFamily": 2, + "textAlign": "center", + "verticalAlign": "middle", + "containerId": "efl", + "lineHeight": 1.25 + }, + { + "type": "rectangle", + "id": "ipl", + "x": 920, + "y": 130, + "width": 280, + "height": 74, + "strokeColor": "#1e3a5f", + "backgroundColor": "#3b82f6", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1013, + "version": 1, + "versionNonce": 1014, + "isDeleted": false, + "groupIds": [], + "boundElements": [ + { + "id": "ipl_t", + "type": "text" + }, + { + "id": "a2", + "type": "arrow" + }, + { + "id": "a3", + "type": "arrow" + } + ], + "link": null, + "locked": false, + "roundness": { + "type": 3 + } + }, + { + "type": "text", + "id": "ipl_t", + "x": 930, + "y": 140, + "width": 260, + "height": 54, + "strokeColor": "#ffffff", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1015, + "version": 1, + "versionNonce": 1016, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "Imaging Problem List\none patient, keyed by finding", + "originalText": "Imaging Problem List\none patient, keyed by finding", + "fontSize": 16, + "fontFamily": 2, + "textAlign": "center", + "verticalAlign": "middle", + "containerId": "ipl", + "lineHeight": 1.25 + }, + { + "type": "rectangle", + "id": "persona", + "x": 1350, + "y": 130, + "width": 280, + "height": 74, + "strokeColor": "#64748b", + "backgroundColor": "#ffffff", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "dashed", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1017, + "version": 1, + "versionNonce": 1018, + "isDeleted": false, + "groupIds": [], + "boundElements": [ + { + "id": "persona_t", + "type": "text" + }, + { + "id": "a3", + "type": "arrow" + } + ], + "link": null, + "locked": false, + "roundness": { + "type": 3 + } + }, + { + "type": "text", + "id": "persona_t", + "x": 1360, + "y": 140, + "width": 260, + "height": 54, + "strokeColor": "#475569", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1019, + "version": 1, + "versionNonce": 1020, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "Imaging Persona\nplus clinical context", + "originalText": "Imaging Persona\nplus clinical context", + "fontSize": 16, + "fontFamily": 2, + "textAlign": "center", + "verticalAlign": "middle", + "containerId": "persona", + "lineHeight": 1.25 + }, + { + "type": "arrow", + "id": "a1", + "x": 340, + "y": 167.0, + "width": 150, + "height": 0.0, + "strokeColor": "#64748b", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1021, + "version": 1, + "versionNonce": 1022, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "points": [ + [ + 0, + 0 + ], + [ + 150, + 0.0 + ] + ], + "startBinding": { + "elementId": "obs", + "focus": 0, + "gap": 2 + }, + "endBinding": { + "elementId": "efl", + "focus": 0, + "gap": 2 + }, + "startArrowhead": null, + "endArrowhead": "arrow" + }, + { + "type": "text", + "id": "a1_l", + "x": 387.16, + "y": 141.0, + "width": 55.67999999999999, + "height": 15.0, + "strokeColor": "#64748b", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1023, + "version": 1, + "versionNonce": 1024, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "per exam", + "originalText": "per exam", + "fontSize": 12, + "fontFamily": 2, + "textAlign": "center", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 + }, + { + "type": "arrow", + "id": "a2", + "x": 770, + "y": 167.0, + "width": 150, + "height": 0.0, + "strokeColor": "#64748b", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1025, + "version": 1, + "versionNonce": 1026, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "points": [ + [ + 0, + 0 + ], + [ + 150, + 0.0 + ] + ], + "startBinding": { + "elementId": "efl", + "focus": 0, + "gap": 2 + }, + "endBinding": { + "elementId": "ipl", + "focus": 0, + "gap": 2 + }, + "startArrowhead": null, + "endArrowhead": "arrow" + }, + { + "type": "text", + "id": "a2_l", + "x": 813.68, + "y": 141.0, + "width": 62.63999999999999, + "height": 15.0, + "strokeColor": "#64748b", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1027, + "version": 1, + "versionNonce": 1028, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "all exams", + "originalText": "all exams", + "fontSize": 12, + "fontFamily": 2, + "textAlign": "center", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 + }, + { + "type": "arrow", + "id": "a3", + "x": 1200, + "y": 167.0, + "width": 150, + "height": 0.0, + "strokeColor": "#64748b", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "dashed", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1029, + "version": 1, + "versionNonce": 1030, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "points": [ + [ + 0, + 0 + ], + [ + 150, + 0.0 + ] + ], + "startBinding": { + "elementId": "ipl", + "focus": 0, + "gap": 2 + }, + "endBinding": { + "elementId": "persona", + "focus": 0, + "gap": 2 + }, + "startArrowhead": null, + "endArrowhead": "arrow" + }, + { + "type": "text", + "id": "a3_l", + "x": 1233.24, + "y": 141.0, + "width": 83.52, + "height": 15.0, + "strokeColor": "#64748b", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1031, + "version": 1, + "versionNonce": 1032, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "with context", + "originalText": "with context", + "fontSize": 12, + "fontFamily": 2, + "textAlign": "center", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 + }, + { + "type": "line", + "id": "tick0", + "x": 78, + "y": 204, + "width": 0, + "height": 22, + "strokeColor": "#64748b", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1033, + "version": 1, + "versionNonce": 1034, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "points": [ + [ + 0, + 0 + ], + [ + 0, + 22 + ] + ] + }, + { + "type": "text", + "id": "fields0", + "x": 70, + "y": 234, + "width": 218.66, + "height": 81.25, + "strokeColor": "#374151", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1035, + "version": 1, + "versionNonce": 1036, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "findingCode (OIFM)\nfindingDescription\nanatomicLocation (RID)\nattributes[] with value codes\nreportText", + "originalText": "findingCode (OIFM)\nfindingDescription\nanatomicLocation (RID)\nattributes[] with value codes\nreportText", + "fontSize": 13, + "fontFamily": 2, + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 + }, + { + "type": "text", + "id": "status0", + "x": 70, + "y": 323.25, + "width": 222.71999999999997, + "height": 15.0, + "strokeColor": "#3b82f6", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1037, + "version": 1, + "versionNonce": 1038, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "JSON in use; no published schema", + "originalText": "JSON in use; no published schema", + "fontSize": 12, + "fontFamily": 2, + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 + }, + { + "type": "line", + "id": "tick1", + "x": 508, + "y": 204, + "width": 0, + "height": 22, + "strokeColor": "#64748b", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1039, + "version": 1, + "versionNonce": 1040, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "points": [ + [ + 0, + 0 + ], + [ + 0, + 22 + ] + ] + }, + { + "type": "text", + "id": "fields1", + "x": 500, + "y": 234, + "width": 218.66, + "height": 65.0, + "strokeColor": "#374151", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1041, + "version": 1, + "versionNonce": 1042, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "diagnosticReportId\npatientInfo\nexamInfo with LOINC exam code\nfindings[]: the observations", + "originalText": "diagnosticReportId\npatientInfo\nexamInfo with LOINC exam code\nfindings[]: the observations", + "fontSize": 13, + "fontFamily": 2, + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 + }, + { + "type": "text", + "id": "status1", + "x": 500, + "y": 323.25, + "width": 222.71999999999997, + "height": 15.0, + "strokeColor": "#3b82f6", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1043, + "version": 1, + "versionNonce": 1044, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "JSON in use; no published schema", + "originalText": "JSON in use; no published schema", + "fontSize": 12, + "fontFamily": 2, + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 + }, + { + "type": "line", + "id": "tick2", + "x": 938, + "y": 204, + "width": 0, + "height": 22, + "strokeColor": "#64748b", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1045, + "version": 1, + "versionNonce": 1046, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "points": [ + [ + 0, + 0 + ], + [ + 0, + 22 + ] + ] + }, + { + "type": "text", + "id": "fields2", + "x": 930, + "y": 234, + "width": 226.2, + "height": 81.25, + "strokeColor": "#374151", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1047, + "version": 1, + "versionNonce": 1048, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "patient\nfindings[] keyed by\n(findingCode, locationId)\neach with dated observations[]\nstatus derived, not stored", + "originalText": "patient\nfindings[] keyed by\n(findingCode, locationId)\neach with dated observations[]\nstatus derived, not stored", + "fontSize": 13, + "fontFamily": 2, + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 + }, + { + "type": "text", + "id": "status2", + "x": 930, + "y": 323.25, + "width": 250.55999999999997, + "height": 15.0, + "strokeColor": "#3b82f6", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1049, + "version": 1, + "versionNonce": 1050, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "JSON in use; grouping changed on dev", + "originalText": "JSON in use; grouping changed on dev", + "fontSize": 12, + "fontFamily": 2, + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 + }, + { + "type": "line", + "id": "tick3", + "x": 1368, + "y": 204, + "width": 0, + "height": 22, + "strokeColor": "#64748b", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1051, + "version": 1, + "versionNonce": 1052, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "points": [ + [ + 0, + 0 + ], + [ + 0, + 22 + ] + ] + }, + { + "type": "text", + "id": "fields3", + "x": 1360, + "y": 234, + "width": 286.52, + "height": 65.0, + "strokeColor": "#374151", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1053, + "version": 1, + "versionNonce": 1054, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "clinical context (orders, indications)\nmedical baseline (problems, labs)\nspecialized history (oncology)\nsurgical history (operative, implants)", + "originalText": "clinical context (orders, indications)\nmedical baseline (problems, labs)\nspecialized history (oncology)\nsurgical history (operative, implants)", + "fontSize": 13, + "fontFamily": 2, + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 + }, + { + "type": "text", + "id": "status3", + "x": 1360, + "y": 323.25, + "width": 174.0, + "height": 15.0, + "strokeColor": "#475569", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1055, + "version": 1, + "versionNonce": 1056, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "concept only, no artifact", + "originalText": "concept only, no artifact", + "fontSize": 12, + "fontFamily": 2, + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 + }, + { + "type": "text", + "id": "note", + "x": 60, + "y": 404, + "width": 1032.98, + "height": 16.25, + "strokeColor": "#64748b", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1057, + "version": 1, + "versionNonce": 1058, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "Codes come from the semantic foundation: OIFM and OIFMA identifiers from finding models, RID from anatomic locations, LOINC for the exam.", + "originalText": "Codes come from the semantic foundation: OIFM and OIFMA identifiers from finding models, RID from anatomic locations, LOINC for the exam.", + "fontSize": 13, + "fontFamily": 2, + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 + } + ], + "appState": { + "viewBackgroundColor": "#ffffff", + "gridSize": null + }, + "files": {} +} \ No newline at end of file diff --git a/knowledge/data-structures/hierarchy.md b/knowledge/data-structures/hierarchy.md index f57874b..dfa00cd 100644 --- a/knowledge/data-structures/hierarchy.md +++ b/knowledge/data-structures/hierarchy.md @@ -36,24 +36,9 @@ The second of OIDM's three strategic pillars is a hierarchy of data structures, The turn happens at level three. An [Exam Finding List](/glossary/exam-finding-list.md) is organized by exam, the way radiology reports have always been organized. An [Imaging Problem List](/glossary/imaging-problem-list.md) is "organized by finding, meaning pathology, rather than by chronology,"[^deck] which is what makes the deck's core query, "was finding X present on the most recent study?", a lookup rather than a search through a stack of reports. -```mermaid -flowchart LR - subgraph L1["Observation"] - O1["finding code
anatomic location
attribute values"] - end - subgraph L2["Exam Finding List"] - E1["diagnosticReportId
patientInfo
examInfo (LOINC)
findings[]"] - end - subgraph L3["Imaging Problem List"] - P1["patient
findings[] grouped by
(findingCode, locationId)
each with observations[]"] - end - subgraph L4["Imaging Persona"] - A1["clinical context
medical baseline
specialized history
surgical history"] - end - O1 -->|"one exam's worth"| E1 - E1 -->|"one patient's exams, re-keyed by finding"| P1 - P1 -->|"surrounded by clinical context"| A1 -``` +![From one observation to a patient's imaging history: an Observation carries a finding code, anatomic location, and attribute values; one exam's worth of observations roll up into an Exam Finding List; one patient's Exam Finding Lists re-key by finding into an Imaging Problem List; that list, surrounded by clinical context, becomes an Imaging Persona.](./hierarchy.svg) + +*Diagram source: `hierarchy.excalidraw` beside this document, generated by `tools/diagrams/build_hierarchy.py`.* # What each level adds diff --git a/knowledge/data-structures/hierarchy.svg b/knowledge/data-structures/hierarchy.svg new file mode 100644 index 0000000..754b156 --- /dev/null +++ b/knowledge/data-structures/hierarchy.svg @@ -0,0 +1,2 @@ +From one observation to a patient's imaging historyEach structure to the right contains the ones to its left and adds one more level of context.Observationone finding, one examExam Finding Listevery observation of one examImaging Problem Listone patient, keyed by findingImaging Personaplus clinical contextper examall examswith contextfindingCode (OIFM)findingDescriptionanatomicLocation (RID)attributes[] with value codesreportTextJSON in use; no published schemadiagnosticReportIdpatientInfoexamInfo with LOINC exam codefindings[]: the observationsJSON in use; no published schemapatientfindings[] keyed by(findingCode, locationId)each with dated observations[]status derived, not storedJSON in use; grouping changed on devclinical context (orders, indications)medical baseline (problems, labs)specialized history (oncology)surgical history (operative, implants)concept only, no artifactCodes come from the semantic foundation: OIFM and OIFMA identifiers from finding models, RID from anatomic locations, LOINC for the exam. \ No newline at end of file diff --git a/knowledge/overview/architecture.excalidraw b/knowledge/overview/architecture.excalidraw new file mode 100644 index 0000000..24376c6 --- /dev/null +++ b/knowledge/overview/architecture.excalidraw @@ -0,0 +1,2027 @@ +{ + "type": "excalidraw", + "version": 2, + "source": "oidm-knowledge/tools/diagrams", + "elements": [ + { + "type": "text", + "id": "title", + "x": 60, + "y": 40, + "width": 889.7199999999999, + "height": 32.5, + "strokeColor": "#1e40af", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1001, + "version": 1, + "versionNonce": 1002, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "Open Imaging Data Model: three layers joined by identifiers", + "originalText": "Open Imaging Data Model: three layers joined by identifiers", + "fontSize": 26, + "fontFamily": 2, + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 + }, + { + "type": "text", + "id": "subtitle", + "x": 60, + "y": 82, + "width": 1177.3999999999999, + "height": 17.5, + "strokeColor": "#64748b", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1003, + "version": 1, + "versionNonce": 1004, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "Each layer depends on the one below it. Codes minted in the semantic foundation are what the data structures carry and the applications exchange.", + "originalText": "Each layer depends on the one below it. Codes minted in the semantic foundation are what the data structures carry and the applications exchange.", + "fontSize": 14, + "fontFamily": 2, + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 + }, + { + "type": "text", + "id": "band_applications", + "x": 150, + "y": 126, + "width": 90.47999999999999, + "height": 16.25, + "strokeColor": "#3b82f6", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1005, + "version": 1, + "versionNonce": 1006, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "APPLICATIONS", + "originalText": "APPLICATIONS", + "fontSize": 13, + "fontFamily": 2, + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 + }, + { + "type": "text", + "id": "band_data", + "x": 150, + "y": 406, + "width": 113.1, + "height": 16.25, + "strokeColor": "#3b82f6", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1007, + "version": 1, + "versionNonce": 1008, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "DATA STRUCTURES", + "originalText": "DATA STRUCTURES", + "fontSize": 13, + "fontFamily": 2, + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 + }, + { + "type": "text", + "id": "band_semantic", + "x": 150, + "y": 686, + "width": 143.26, + "height": 16.25, + "strokeColor": "#3b82f6", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1009, + "version": 1, + "versionNonce": 1010, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "SEMANTIC FOUNDATION", + "originalText": "SEMANTIC FOUNDATION", + "fontSize": 13, + "fontFamily": 2, + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 + }, + { + "type": "line", + "id": "div1", + "x": 40, + "y": 390, + "width": 1440, + "height": 0, + "strokeColor": "#64748b", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "dashed", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1011, + "version": 1, + "versionNonce": 1012, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "points": [ + [ + 0, + 0 + ], + [ + 1440, + 0 + ] + ] + }, + { + "type": "line", + "id": "div2", + "x": 40, + "y": 670, + "width": 1440, + "height": 0, + "strokeColor": "#64748b", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "dashed", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1013, + "version": 1, + "versionNonce": 1014, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "points": [ + [ + 0, + 0 + ], + [ + 1440, + 0 + ] + ] + }, + { + "type": "rectangle", + "id": "forge", + "x": 40, + "y": 160, + "width": 260, + "height": 74, + "strokeColor": "#1e3a5f", + "backgroundColor": "#60a5fa", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1015, + "version": 1, + "versionNonce": 1016, + "isDeleted": false, + "groupIds": [], + "boundElements": [ + { + "id": "forge_t", + "type": "text" + }, + { + "id": "a_forge_fm", + "type": "arrow" + } + ], + "link": null, + "locked": false, + "roundness": { + "type": 3 + } + }, + { + "type": "text", + "id": "forge_t", + "x": 50, + "y": 170, + "width": 240, + "height": 54, + "strokeColor": "#1e3a5f", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1017, + "version": 1, + "versionNonce": 1018, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "Finding Model Forge\nauthoring wizard, fmf.oidm.org", + "originalText": "Finding Model Forge\nauthoring wizard, fmf.oidm.org", + "fontSize": 16, + "fontFamily": 2, + "textAlign": "center", + "verticalAlign": "middle", + "containerId": "forge", + "lineHeight": 1.25 + }, + { + "type": "rectangle", + "id": "extract", + "x": 500, + "y": 160, + "width": 260, + "height": 74, + "strokeColor": "#1e3a5f", + "backgroundColor": "#60a5fa", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1019, + "version": 1, + "versionNonce": 1020, + "isDeleted": false, + "groupIds": [], + "boundElements": [ + { + "id": "extract_t", + "type": "text" + }, + { + "id": "a_extract_efl", + "type": "arrow" + } + ], + "link": null, + "locked": false, + "roundness": { + "type": 3 + } + }, + { + "type": "text", + "id": "extract_t", + "x": 510, + "y": 170, + "width": 240, + "height": 54, + "strokeColor": "#1e3a5f", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1021, + "version": 1, + "versionNonce": 1022, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "Report extraction platform\nLLM extraction and coding (dev)", + "originalText": "Report extraction platform\nLLM extraction and coding (dev)", + "fontSize": 16, + "fontFamily": 2, + "textAlign": "center", + "verticalAlign": "middle", + "containerId": "extract", + "lineHeight": 1.25 + }, + { + "type": "rectangle", + "id": "viewer", + "x": 850, + "y": 160, + "width": 260, + "height": 74, + "strokeColor": "#1e3a5f", + "backgroundColor": "#60a5fa", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1023, + "version": 1, + "versionNonce": 1024, + "isDeleted": false, + "groupIds": [], + "boundElements": [ + { + "id": "viewer_t", + "type": "text" + }, + { + "id": "a_ipl_viewer", + "type": "arrow" + } + ], + "link": null, + "locked": false, + "roundness": { + "type": 3 + } + }, + { + "type": "text", + "id": "viewer_t", + "x": 860, + "y": 170, + "width": 240, + "height": 54, + "strokeColor": "#1e3a5f", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1025, + "version": 1, + "versionNonce": 1026, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "Imaging Problem List viewer\nimaging-problem-list.pages.dev", + "originalText": "Imaging Problem List viewer\nimaging-problem-list.pages.dev", + "fontSize": 16, + "fontFamily": 2, + "textAlign": "center", + "verticalAlign": "middle", + "containerId": "viewer", + "lineHeight": 1.25 + }, + { + "type": "text", + "id": "apps_note", + "x": 1200, + "y": 168, + "width": 285.35999999999996, + "height": 45.0, + "strokeColor": "#64748b", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1027, + "version": 1, + "versionNonce": 1028, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "Also: finding-models-site (catalog),\nmed-ontology-lookup (terminology lookup),\nOpen Imaging Reporting SDK (concept only)", + "originalText": "Also: finding-models-site (catalog),\nmed-ontology-lookup (terminology lookup),\nOpen Imaging Reporting SDK (concept only)", + "fontSize": 12, + "fontFamily": 2, + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 + }, + { + "type": "rectangle", + "id": "obs", + "x": 150, + "y": 440, + "width": 260, + "height": 74, + "strokeColor": "#1e3a5f", + "backgroundColor": "#3b82f6", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1029, + "version": 1, + "versionNonce": 1030, + "isDeleted": false, + "groupIds": [], + "boundElements": [ + { + "id": "obs_t", + "type": "text" + }, + { + "id": "a_obs_efl", + "type": "arrow" + }, + { + "id": "a_fm_obs", + "type": "arrow" + }, + { + "id": "a_al_obs", + "type": "arrow" + } + ], + "link": null, + "locked": false, + "roundness": { + "type": 3 + } + }, + { + "type": "text", + "id": "obs_t", + "x": 160, + "y": 450, + "width": 240, + "height": 54, + "strokeColor": "#ffffff", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1031, + "version": 1, + "versionNonce": 1032, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "Observation\nfinding + location + attributes", + "originalText": "Observation\nfinding + location + attributes", + "fontSize": 16, + "fontFamily": 2, + "textAlign": "center", + "verticalAlign": "middle", + "containerId": "obs", + "lineHeight": 1.25 + }, + { + "type": "rectangle", + "id": "efl", + "x": 500, + "y": 440, + "width": 260, + "height": 74, + "strokeColor": "#1e3a5f", + "backgroundColor": "#3b82f6", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1033, + "version": 1, + "versionNonce": 1034, + "isDeleted": false, + "groupIds": [], + "boundElements": [ + { + "id": "efl_t", + "type": "text" + }, + { + "id": "a_obs_efl", + "type": "arrow" + }, + { + "id": "a_efl_ipl", + "type": "arrow" + }, + { + "id": "a_et_efl", + "type": "arrow" + }, + { + "id": "a_extract_efl", + "type": "arrow" + } + ], + "link": null, + "locked": false, + "roundness": { + "type": 3 + } + }, + { + "type": "text", + "id": "efl_t", + "x": 510, + "y": 450, + "width": 240, + "height": 54, + "strokeColor": "#ffffff", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1035, + "version": 1, + "versionNonce": 1036, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "Exam Finding List\nall observations of one exam", + "originalText": "Exam Finding List\nall observations of one exam", + "fontSize": 16, + "fontFamily": 2, + "textAlign": "center", + "verticalAlign": "middle", + "containerId": "efl", + "lineHeight": 1.25 + }, + { + "type": "rectangle", + "id": "ipl", + "x": 850, + "y": 440, + "width": 260, + "height": 74, + "strokeColor": "#1e3a5f", + "backgroundColor": "#3b82f6", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1037, + "version": 1, + "versionNonce": 1038, + "isDeleted": false, + "groupIds": [], + "boundElements": [ + { + "id": "ipl_t", + "type": "text" + }, + { + "id": "a_efl_ipl", + "type": "arrow" + }, + { + "id": "a_ipl_persona", + "type": "arrow" + }, + { + "id": "a_ipl_viewer", + "type": "arrow" + } + ], + "link": null, + "locked": false, + "roundness": { + "type": 3 + } + }, + { + "type": "text", + "id": "ipl_t", + "x": 860, + "y": 450, + "width": 240, + "height": 54, + "strokeColor": "#ffffff", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1039, + "version": 1, + "versionNonce": 1040, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "Imaging Problem List\none patient, grouped by finding", + "originalText": "Imaging Problem List\none patient, grouped by finding", + "fontSize": 16, + "fontFamily": 2, + "textAlign": "center", + "verticalAlign": "middle", + "containerId": "ipl", + "lineHeight": 1.25 + }, + { + "type": "rectangle", + "id": "persona", + "x": 1200, + "y": 440, + "width": 260, + "height": 74, + "strokeColor": "#64748b", + "backgroundColor": "#ffffff", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "dashed", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1041, + "version": 1, + "versionNonce": 1042, + "isDeleted": false, + "groupIds": [], + "boundElements": [ + { + "id": "persona_t", + "type": "text" + }, + { + "id": "a_ipl_persona", + "type": "arrow" + } + ], + "link": null, + "locked": false, + "roundness": { + "type": 3 + } + }, + { + "type": "text", + "id": "persona_t", + "x": 1210, + "y": 450, + "width": 240, + "height": 54, + "strokeColor": "#475569", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1043, + "version": 1, + "versionNonce": 1044, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "Imaging Persona\nplus clinical context (concept)", + "originalText": "Imaging Persona\nplus clinical context (concept)", + "fontSize": 16, + "fontFamily": 2, + "textAlign": "center", + "verticalAlign": "middle", + "containerId": "persona", + "lineHeight": 1.25 + }, + { + "type": "arrow", + "id": "a_obs_efl", + "x": 410, + "y": 477.0, + "width": 90, + "height": 0.0, + "strokeColor": "#64748b", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1045, + "version": 1, + "versionNonce": 1046, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "points": [ + [ + 0, + 0 + ], + [ + 90, + 0.0 + ] + ], + "startBinding": { + "elementId": "obs", + "focus": 0, + "gap": 2 + }, + "endBinding": { + "elementId": "efl", + "focus": 0, + "gap": 2 + }, + "startArrowhead": null, + "endArrowhead": "arrow" + }, + { + "type": "text", + "id": "a_obs_efl_l", + "x": 427.16, + "y": 455.0, + "width": 55.67999999999999, + "height": 15.0, + "strokeColor": "#64748b", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1047, + "version": 1, + "versionNonce": 1048, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "per exam", + "originalText": "per exam", + "fontSize": 12, + "fontFamily": 2, + "textAlign": "center", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 + }, + { + "type": "arrow", + "id": "a_efl_ipl", + "x": 760, + "y": 477.0, + "width": 90, + "height": 0.0, + "strokeColor": "#64748b", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1049, + "version": 1, + "versionNonce": 1050, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "points": [ + [ + 0, + 0 + ], + [ + 90, + 0.0 + ] + ], + "startBinding": { + "elementId": "efl", + "focus": 0, + "gap": 2 + }, + "endBinding": { + "elementId": "ipl", + "focus": 0, + "gap": 2 + }, + "startArrowhead": null, + "endArrowhead": "arrow" + }, + { + "type": "text", + "id": "a_efl_ipl_l", + "x": 766.72, + "y": 455.0, + "width": 76.55999999999999, + "height": 15.0, + "strokeColor": "#64748b", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1051, + "version": 1, + "versionNonce": 1052, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "per patient", + "originalText": "per patient", + "fontSize": 12, + "fontFamily": 2, + "textAlign": "center", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 + }, + { + "type": "arrow", + "id": "a_ipl_persona", + "x": 1110, + "y": 477.0, + "width": 90, + "height": 0.0, + "strokeColor": "#64748b", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "dashed", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1053, + "version": 1, + "versionNonce": 1054, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "points": [ + [ + 0, + 0 + ], + [ + 90, + 0.0 + ] + ], + "startBinding": { + "elementId": "ipl", + "focus": 0, + "gap": 2 + }, + "endBinding": { + "elementId": "persona", + "focus": 0, + "gap": 2 + }, + "startArrowhead": null, + "endArrowhead": "arrow" + }, + { + "type": "text", + "id": "a_ipl_persona_l", + "x": 1141.08, + "y": 455.0, + "width": 27.839999999999996, + "height": 15.0, + "strokeColor": "#64748b", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1055, + "version": 1, + "versionNonce": 1056, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "goal", + "originalText": "goal", + "fontSize": 12, + "fontFamily": 2, + "textAlign": "center", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 + }, + { + "type": "rectangle", + "id": "fm", + "x": 150, + "y": 720, + "width": 260, + "height": 74, + "strokeColor": "#1e3a5f", + "backgroundColor": "#93c5fd", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1057, + "version": 1, + "versionNonce": 1058, + "isDeleted": false, + "groupIds": [], + "boundElements": [ + { + "id": "fm_t", + "type": "text" + }, + { + "id": "a_fm_obs", + "type": "arrow" + }, + { + "id": "a_forge_fm", + "type": "arrow" + } + ], + "link": null, + "locked": false, + "roundness": { + "type": 3 + } + }, + { + "type": "text", + "id": "fm_t", + "x": 160, + "y": 730, + "width": 240, + "height": 54, + "strokeColor": "#1e3a5f", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1059, + "version": 1, + "versionNonce": 1060, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "Finding models\nOIFM_ / OIFMA_ codes", + "originalText": "Finding models\nOIFM_ / OIFMA_ codes", + "fontSize": 16, + "fontFamily": 2, + "textAlign": "center", + "verticalAlign": "middle", + "containerId": "fm", + "lineHeight": 1.25 + }, + { + "type": "rectangle", + "id": "al", + "x": 500, + "y": 720, + "width": 260, + "height": 74, + "strokeColor": "#1e3a5f", + "backgroundColor": "#93c5fd", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1061, + "version": 1, + "versionNonce": 1062, + "isDeleted": false, + "groupIds": [], + "boundElements": [ + { + "id": "al_t", + "type": "text" + }, + { + "id": "a_al_obs", + "type": "arrow" + } + ], + "link": null, + "locked": false, + "roundness": { + "type": 3 + } + }, + { + "type": "text", + "id": "al_t", + "x": 510, + "y": 730, + "width": 240, + "height": 54, + "strokeColor": "#1e3a5f", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1063, + "version": 1, + "versionNonce": 1064, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "Anatomic locations\nRadLex RID codes", + "originalText": "Anatomic locations\nRadLex RID codes", + "fontSize": 16, + "fontFamily": 2, + "textAlign": "center", + "verticalAlign": "middle", + "containerId": "al", + "lineHeight": 1.25 + }, + { + "type": "rectangle", + "id": "et", + "x": 850, + "y": 720, + "width": 260, + "height": 74, + "strokeColor": "#64748b", + "backgroundColor": "#ffffff", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "dashed", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1065, + "version": 1, + "versionNonce": 1066, + "isDeleted": false, + "groupIds": [], + "boundElements": [ + { + "id": "et_t", + "type": "text" + }, + { + "id": "a_et_efl", + "type": "arrow" + } + ], + "link": null, + "locked": false, + "roundness": { + "type": 3 + } + }, + { + "type": "text", + "id": "et_t", + "x": 860, + "y": 730, + "width": 240, + "height": 54, + "strokeColor": "#475569", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1067, + "version": 1, + "versionNonce": 1068, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "Exam types\nLOINC / Playbook (planned)", + "originalText": "Exam types\nLOINC / Playbook (planned)", + "fontSize": 16, + "fontFamily": 2, + "textAlign": "center", + "verticalAlign": "middle", + "containerId": "et", + "lineHeight": 1.25 + }, + { + "type": "rectangle", + "id": "cde", + "x": 1200, + "y": 720, + "width": 260, + "height": 74, + "strokeColor": "#c2410c", + "backgroundColor": "#fed7aa", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1069, + "version": 1, + "versionNonce": 1070, + "isDeleted": false, + "groupIds": [], + "boundElements": [ + { + "id": "cde_t", + "type": "text" + } + ], + "link": null, + "locked": false, + "roundness": { + "type": 3 + } + }, + { + "type": "text", + "id": "cde_t", + "x": 1210, + "y": 730, + "width": 240, + "height": 54, + "strokeColor": "#7c2d12", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1071, + "version": 1, + "versionNonce": 1072, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "ACR/RSNA CDEs at RadElement\nRDES / RDE codes (allied project)", + "originalText": "ACR/RSNA CDEs at RadElement\nRDES / RDE codes (allied project)", + "fontSize": 16, + "fontFamily": 2, + "textAlign": "center", + "verticalAlign": "middle", + "containerId": "cde", + "lineHeight": 1.25 + }, + { + "type": "text", + "id": "terms", + "x": 150, + "y": 834, + "width": 1048.06, + "height": 16.25, + "strokeColor": "#64748b", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1073, + "version": 1, + "versionNonce": 1074, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "Terminologies underneath: RadLex, SNOMED CT, FMA, UMLS, MeSH, LOINC and the RSNA Radiology Playbook. Looked up through med-ontology-lookup.", + "originalText": "Terminologies underneath: RadLex, SNOMED CT, FMA, UMLS, MeSH, LOINC and the RSNA Radiology Playbook. Looked up through med-ontology-lookup.", + "fontSize": 13, + "fontFamily": 2, + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 + }, + { + "type": "arrow", + "id": "a_fm_obs", + "x": 280.0, + "y": 720, + "width": 0.0, + "height": -206, + "strokeColor": "#64748b", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1075, + "version": 1, + "versionNonce": 1076, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "points": [ + [ + 0, + 0 + ], + [ + 0.0, + -206 + ] + ], + "startBinding": { + "elementId": "fm", + "focus": 0, + "gap": 2 + }, + "endBinding": { + "elementId": "obs", + "focus": 0, + "gap": 2 + }, + "startArrowhead": null, + "endArrowhead": "arrow" + }, + { + "type": "text", + "id": "a_fm_obs_l", + "x": 300.4, + "y": 595.0, + "width": 139.2, + "height": 15.0, + "strokeColor": "#64748b", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1077, + "version": 1, + "versionNonce": 1078, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "OIFM and OIFMA codes", + "originalText": "OIFM and OIFMA codes", + "fontSize": 12, + "fontFamily": 2, + "textAlign": "center", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 + }, + { + "type": "arrow", + "id": "a_al_obs", + "x": 630.0, + "y": 720, + "width": -259.0, + "height": -206, + "strokeColor": "#64748b", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1079, + "version": 1, + "versionNonce": 1080, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "points": [ + [ + 0, + 0 + ], + [ + -259.0, + -206 + ] + ], + "startBinding": { + "elementId": "al", + "focus": 0, + "gap": 2 + }, + "endBinding": { + "elementId": "obs", + "focus": 0, + "gap": 2 + }, + "startArrowhead": null, + "endArrowhead": "arrow" + }, + { + "type": "text", + "id": "a_al_obs_l", + "x": 520.06, + "y": 595.0, + "width": 20.88, + "height": 15.0, + "strokeColor": "#64748b", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1081, + "version": 1, + "versionNonce": 1082, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "RID", + "originalText": "RID", + "fontSize": 12, + "fontFamily": 2, + "textAlign": "center", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 + }, + { + "type": "arrow", + "id": "a_et_efl", + "x": 980.0, + "y": 720, + "width": -259.0, + "height": -206, + "strokeColor": "#64748b", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "dashed", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1083, + "version": 1, + "versionNonce": 1084, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "points": [ + [ + 0, + 0 + ], + [ + -259.0, + -206 + ] + ], + "startBinding": { + "elementId": "et", + "focus": 0, + "gap": 2 + }, + "endBinding": { + "elementId": "efl", + "focus": 0, + "gap": 2 + }, + "startArrowhead": null, + "endArrowhead": "arrow" + }, + { + "type": "text", + "id": "a_et_efl_l", + "x": 838.3, + "y": 595.0, + "width": 104.39999999999999, + "height": 15.0, + "strokeColor": "#64748b", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1085, + "version": 1, + "versionNonce": 1086, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "LOINC exam code", + "originalText": "LOINC exam code", + "fontSize": 12, + "fontFamily": 2, + "textAlign": "center", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 + }, + { + "type": "text", + "id": "cde_note", + "x": 1200, + "y": 806, + "width": 473.28, + "height": 15.0, + "strokeColor": "#7c2d12", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1089, + "version": 1, + "versionNonce": 1090, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "finding models graduate to CDEs; CDE definitions seed finding models", + "originalText": "finding models graduate to CDEs; CDE definitions seed finding models", + "fontSize": 12, + "fontFamily": 2, + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 + }, + { + "type": "arrow", + "id": "a_forge_fm", + "x": 71.2, + "y": 234, + "width": 78.8, + "height": 523.0, + "strokeColor": "#64748b", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1091, + "version": 1, + "versionNonce": 1092, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "points": [ + [ + 0, + 0 + ], + [ + 0, + 523.0 + ], + [ + 78.8, + 523.0 + ] + ], + "startBinding": { + "elementId": "forge", + "focus": 0, + "gap": 2 + }, + "endBinding": { + "elementId": "fm", + "focus": 0, + "gap": 2 + }, + "startArrowhead": null, + "endArrowhead": "arrow" + }, + { + "type": "text", + "id": "a_forge_fm_l", + "x": 82.24, + "y": 481.5, + "width": 48.72, + "height": 15.0, + "strokeColor": "#64748b", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1093, + "version": 1, + "versionNonce": 1094, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "authors", + "originalText": "authors", + "fontSize": 12, + "fontFamily": 2, + "textAlign": "center", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 + }, + { + "type": "arrow", + "id": "a_extract_efl", + "x": 630.0, + "y": 234, + "width": 0.0, + "height": 206, + "strokeColor": "#64748b", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1095, + "version": 1, + "versionNonce": 1096, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "points": [ + [ + 0, + 0 + ], + [ + 0.0, + 206 + ] + ], + "startBinding": { + "elementId": "extract", + "focus": 0, + "gap": 2 + }, + "endBinding": { + "elementId": "efl", + "focus": 0, + "gap": 2 + }, + "startArrowhead": null, + "endArrowhead": "arrow" + }, + { + "type": "text", + "id": "a_extract_efl_l", + "x": 556.92, + "y": 315.0, + "width": 146.16, + "height": 15.0, + "strokeColor": "#64748b", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1097, + "version": 1, + "versionNonce": 1098, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "extracts from reports", + "originalText": "extracts from reports", + "fontSize": 12, + "fontFamily": 2, + "textAlign": "center", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 + }, + { + "type": "arrow", + "id": "a_ipl_viewer", + "x": 980.0, + "y": 440, + "width": 0.0, + "height": -206, + "strokeColor": "#64748b", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1099, + "version": 1, + "versionNonce": 1100, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "points": [ + [ + 0, + 0 + ], + [ + 0.0, + -206 + ] + ], + "startBinding": { + "elementId": "ipl", + "focus": 0, + "gap": 2 + }, + "endBinding": { + "elementId": "viewer", + "focus": 0, + "gap": 2 + }, + "startArrowhead": null, + "endArrowhead": "arrow" + }, + { + "type": "text", + "id": "a_ipl_viewer_l", + "x": 955.64, + "y": 315.0, + "width": 48.72, + "height": 15.0, + "strokeColor": "#64748b", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1101, + "version": 1, + "versionNonce": 1102, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "renders", + "originalText": "renders", + "fontSize": 12, + "fontFamily": 2, + "textAlign": "center", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 + }, + { + "type": "text", + "id": "legend_t", + "x": 1200, + "y": 874, + "width": 45.239999999999995, + "height": 16.25, + "strokeColor": "#3b82f6", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1103, + "version": 1, + "versionNonce": 1104, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "Legend", + "originalText": "Legend", + "fontSize": 13, + "fontFamily": 2, + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 + }, + { + "type": "rectangle", + "id": "lg0", + "x": 1200, + "y": 898, + "width": 18, + "height": 14, + "strokeColor": "#1e3a5f", + "backgroundColor": "#ffffff", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1105, + "version": 1, + "versionNonce": 1106, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "roundness": { + "type": 3 + } + }, + { + "type": "text", + "id": "lg0_t", + "x": 1226, + "y": 896, + "width": 187.92, + "height": 15.0, + "strokeColor": "#64748b", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1107, + "version": 1, + "versionNonce": 1108, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "solid outline: exists today", + "originalText": "solid outline: exists today", + "fontSize": 12, + "fontFamily": 2, + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 + }, + { + "type": "rectangle", + "id": "lg1", + "x": 1200, + "y": 922, + "width": 18, + "height": 14, + "strokeColor": "#64748b", + "backgroundColor": "#ffffff", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "dashed", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1109, + "version": 1, + "versionNonce": 1110, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "roundness": { + "type": 3 + } + }, + { + "type": "text", + "id": "lg1_t", + "x": 1226, + "y": 920, + "width": 292.32, + "height": 15.0, + "strokeColor": "#64748b", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1111, + "version": 1, + "versionNonce": 1112, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "dashed outline: documented or planned only", + "originalText": "dashed outline: documented or planned only", + "fontSize": 12, + "fontFamily": 2, + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 + }, + { + "type": "rectangle", + "id": "lg2", + "x": 1200, + "y": 946, + "width": 18, + "height": 14, + "strokeColor": "#c2410c", + "backgroundColor": "#fed7aa", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1113, + "version": 1, + "versionNonce": 1114, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "roundness": { + "type": 3 + } + }, + { + "type": "text", + "id": "lg2_t", + "x": 1226, + "y": 944, + "width": 215.76, + "height": 15.0, + "strokeColor": "#64748b", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1115, + "version": 1, + "versionNonce": 1116, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "orange: allied external project", + "originalText": "orange: allied external project", + "fontSize": 12, + "fontFamily": 2, + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 + } + ], + "appState": { + "viewBackgroundColor": "#ffffff", + "gridSize": null + }, + "files": {} +} \ No newline at end of file diff --git a/knowledge/overview/architecture.md b/knowledge/overview/architecture.md index 5c34683..f3a69f8 100644 --- a/knowledge/overview/architecture.md +++ b/knowledge/overview/architecture.md @@ -53,39 +53,9 @@ OIDM is three layers stacked on each other, and the joints between them are iden This is what makes the system work across organizations. Two systems can agree that a finding is `OIFM_GMTS_016552` located at `RID42239` without sharing any code, any database, or any vendor. -```mermaid -flowchart TB - subgraph SF["Semantic foundation: what things are"] - FM["Finding models
OIFM_XXXX_###### / OIFMA_XXXX_######"] - AL["Anatomic locations
RadLex RIDs"] - CDE["Common data elements
RDES### sets / RDE#### elements"] - ET["Exam types
LOINC codes"] - end - subgraph DS["Data structures: what was seen"] - OBS["Observation
finding + location + attribute values"] - EFL["Exam Finding List
one exam"] - IPL["Imaging Problem List
one patient, grouped by finding"] - IP["Imaging Persona
clinical context around the IPL"] - end - subgraph APP["Applications: what makes and reads them"] - FORGE["Finding Model Forge"] - CAT["Finding model catalog site"] - EXTR["Report extraction and coding platform"] - VIEW["IPL viewer"] - MOLU["molu terminology lookup"] - end - FM -->|findingCode, attributeCode| OBS - AL -->|anatomicLocation.locationId| OBS - ET -->|examInfo.studyLoincCode| EFL - CDE -.->|graduation target| FM - OBS --> EFL --> IPL --> IP - FORGE -->|authors| FM - CAT -->|browses| FM - EXTR -->|produces| EFL - VIEW -->|renders| IPL - MOLU -->|resolves codes for| FM - MOLU -->|resolves codes for| AL -``` +![Open Imaging Data Model: three layers joined by identifiers. Applications on top, data structures in the middle, semantic foundation below, with arrows showing which codes join them.](./architecture.svg) + +*Diagram source: `architecture.excalidraw` beside this document, generated by `tools/diagrams/build_architecture.py`.* # The semantic foundation diff --git a/knowledge/overview/architecture.svg b/knowledge/overview/architecture.svg new file mode 100644 index 0000000..cb46061 --- /dev/null +++ b/knowledge/overview/architecture.svg @@ -0,0 +1,2 @@ +Open Imaging Data Model: three layers joined by identifiersEach layer depends on the one below it. Codes minted in the semantic foundation are what the data structures carry and the applications exchange.APPLICATIONSDATA STRUCTURESSEMANTIC FOUNDATIONFinding Model Forgeauthoring wizard, fmf.oidm.orgReport extraction platformLLM extraction and coding (dev)Imaging Problem List viewerimaging-problem-list.pages.devAlso: finding-models-site (catalog),med-ontology-lookup (terminology lookup),Open Imaging Reporting SDK (concept only)Observationfinding + location + attributesExam Finding Listall observations of one examImaging Problem Listone patient, grouped by findingImaging Personaplus clinical context (concept)per examper patientgoalFinding modelsOIFM_ / OIFMA_ codesAnatomic locationsRadLex RID codesExam typesLOINC / Playbook (planned)ACR/RSNA CDEs at RadElementRDES / RDE codes (allied project)Terminologies underneath: RadLex, SNOMED CT, FMA, UMLS, MeSH, LOINC and the RSNA Radiology Playbook. Looked up through med-ontology-lookup.OIFM and OIFMA codesRIDLOINC exam codefinding models graduate to CDEs; CDE definitions seed finding modelsauthorsextracts from reportsrendersLegendsolid outline: exists todaydashed outline: documented or planned onlyorange: allied external project \ No newline at end of file diff --git a/knowledge/repositories/repository-map.excalidraw b/knowledge/repositories/repository-map.excalidraw new file mode 100644 index 0000000..263d119 --- /dev/null +++ b/knowledge/repositories/repository-map.excalidraw @@ -0,0 +1,2250 @@ +{ + "type": "excalidraw", + "version": 2, + "source": "oidm-knowledge/tools/diagrams", + "elements": [ + { + "type": "text", + "id": "title", + "x": 60, + "y": 40, + "width": 407.15999999999997, + "height": 32.5, + "strokeColor": "#1e40af", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1001, + "version": 1, + "versionNonce": 1002, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "How the repositories relate", + "originalText": "How the repositories relate", + "fontSize": 26, + "fontFamily": 2, + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 + }, + { + "type": "text", + "id": "subtitle", + "x": 60, + "y": 78, + "width": 844.4799999999999, + "height": 17.5, + "strokeColor": "#64748b", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1003, + "version": 1, + "versionNonce": 1004, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "Read each row left to right: a terminology feeds content, a library packages it, an application uses it.", + "originalText": "Read each row left to right: a terminology feeds content, a library packages it, an application uses it.", + "fontSize": 14, + "fontFamily": 2, + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 + }, + { + "type": "text", + "id": "hdr_terminologies", + "x": 60, + "y": 100, + "width": 98.02, + "height": 16.25, + "strokeColor": "#3b82f6", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1005, + "version": 1, + "versionNonce": 1006, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "TERMINOLOGIES", + "originalText": "TERMINOLOGIES", + "fontSize": 13, + "fontFamily": 2, + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 + }, + { + "type": "text", + "id": "hdr_content", + "x": 420, + "y": 100, + "width": 52.779999999999994, + "height": 16.25, + "strokeColor": "#3b82f6", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1007, + "version": 1, + "versionNonce": 1008, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "CONTENT", + "originalText": "CONTENT", + "fontSize": 13, + "fontFamily": 2, + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 + }, + { + "type": "text", + "id": "hdr_libraries", + "x": 780, + "y": 100, + "width": 67.86, + "height": 16.25, + "strokeColor": "#3b82f6", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1009, + "version": 1, + "versionNonce": 1010, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "LIBRARIES", + "originalText": "LIBRARIES", + "fontSize": 13, + "fontFamily": 2, + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 + }, + { + "type": "text", + "id": "hdr_applications", + "x": 1140, + "y": 100, + "width": 90.47999999999999, + "height": 16.25, + "strokeColor": "#3b82f6", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1011, + "version": 1, + "versionNonce": 1012, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "APPLICATIONS", + "originalText": "APPLICATIONS", + "fontSize": 13, + "fontFamily": 2, + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 + }, + { + "type": "rectangle", + "id": "radelement", + "x": 60, + "y": 150, + "width": 250, + "height": 60, + "strokeColor": "#c2410c", + "backgroundColor": "#fed7aa", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1013, + "version": 1, + "versionNonce": 1014, + "isDeleted": false, + "groupIds": [], + "boundElements": [ + { + "id": "radelement_t", + "type": "text" + }, + { + "id": "f1", + "type": "arrow" + }, + { + "id": "f8", + "type": "arrow" + }, + { + "id": "f10", + "type": "arrow" + } + ], + "link": null, + "locked": false, + "roundness": { + "type": 3 + } + }, + { + "type": "text", + "id": "radelement_t", + "x": 70, + "y": 160, + "width": 230, + "height": 40, + "strokeColor": "#7c2d12", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1015, + "version": 1, + "versionNonce": 1016, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "RadElement (ACR/RSNA)\nRDES and RDE codes", + "originalText": "RadElement (ACR/RSNA)\nRDES and RDE codes", + "fontSize": 14, + "fontFamily": 2, + "textAlign": "center", + "verticalAlign": "middle", + "containerId": "radelement", + "lineHeight": 1.25 + }, + { + "type": "rectangle", + "id": "fms", + "x": 420, + "y": 150, + "width": 250, + "height": 60, + "strokeColor": "#1e3a5f", + "backgroundColor": "#93c5fd", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1017, + "version": 1, + "versionNonce": 1018, + "isDeleted": false, + "groupIds": [], + "boundElements": [ + { + "id": "fms_t", + "type": "text" + }, + { + "id": "f1", + "type": "arrow" + }, + { + "id": "f2", + "type": "arrow" + }, + { + "id": "f9", + "type": "arrow" + }, + { + "id": "e1", + "type": "arrow" + } + ], + "link": null, + "locked": false, + "roundness": { + "type": 3 + } + }, + { + "type": "text", + "id": "fms_t", + "x": 430, + "y": 160, + "width": 230, + "height": 40, + "strokeColor": "#1e3a5f", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1019, + "version": 1, + "versionNonce": 1020, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "findingmodels\n2,382 finding models", + "originalText": "findingmodels\n2,382 finding models", + "fontSize": 14, + "fontFamily": 2, + "textAlign": "center", + "verticalAlign": "middle", + "containerId": "fms", + "lineHeight": 1.25 + }, + { + "type": "rectangle", + "id": "fm", + "x": 780, + "y": 150, + "width": 250, + "height": 60, + "strokeColor": "#1e3a5f", + "backgroundColor": "#60a5fa", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1021, + "version": 1, + "versionNonce": 1022, + "isDeleted": false, + "groupIds": [], + "boundElements": [ + { + "id": "fm_t", + "type": "text" + }, + { + "id": "f2", + "type": "arrow" + }, + { + "id": "f3", + "type": "arrow" + }, + { + "id": "e2", + "type": "arrow" + }, + { + "id": "e3", + "type": "arrow" + } + ], + "link": null, + "locked": false, + "roundness": { + "type": 3 + } + }, + { + "type": "text", + "id": "fm_t", + "x": 790, + "y": 160, + "width": 230, + "height": 40, + "strokeColor": "#1e3a5f", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1023, + "version": 1, + "versionNonce": 1024, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "findingmodel\nOIFM format, index, CLIs, MCP", + "originalText": "findingmodel\nOIFM format, index, CLIs, MCP", + "fontSize": 14, + "fontFamily": 2, + "textAlign": "center", + "verticalAlign": "middle", + "containerId": "fm", + "lineHeight": 1.25 + }, + { + "type": "rectangle", + "id": "forge", + "x": 1140, + "y": 150, + "width": 250, + "height": 60, + "strokeColor": "#1e3a5f", + "backgroundColor": "#3b82f6", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1025, + "version": 1, + "versionNonce": 1026, + "isDeleted": false, + "groupIds": [], + "boundElements": [ + { + "id": "forge_t", + "type": "text" + }, + { + "id": "f3", + "type": "arrow" + } + ], + "link": null, + "locked": false, + "roundness": { + "type": 3 + } + }, + { + "type": "text", + "id": "forge_t", + "x": 1150, + "y": 160, + "width": 230, + "height": 40, + "strokeColor": "#ffffff", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1027, + "version": 1, + "versionNonce": 1028, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "Finding Model Forge\nfmf.oidm.org", + "originalText": "Finding Model Forge\nfmf.oidm.org", + "fontSize": 14, + "fontFamily": 2, + "textAlign": "center", + "verticalAlign": "middle", + "containerId": "forge", + "lineHeight": 1.25 + }, + { + "type": "rectangle", + "id": "cdesnap", + "x": 60, + "y": 240, + "width": 250, + "height": 60, + "strokeColor": "#1e3a5f", + "backgroundColor": "#93c5fd", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1029, + "version": 1, + "versionNonce": 1030, + "isDeleted": false, + "groupIds": [], + "boundElements": [ + { + "id": "cdesnap_t", + "type": "text" + }, + { + "id": "f8", + "type": "arrow" + } + ], + "link": null, + "locked": false, + "roundness": { + "type": 3 + } + }, + { + "type": "text", + "id": "cdesnap_t", + "x": 70, + "y": 250, + "width": 230, + "height": 40, + "strokeColor": "#1e3a5f", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1031, + "version": 1, + "versionNonce": 1032, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "common_data_elements\nRadElement snapshot", + "originalText": "common_data_elements\nRadElement snapshot", + "fontSize": 14, + "fontFamily": 2, + "textAlign": "center", + "verticalAlign": "middle", + "containerId": "cdesnap", + "lineHeight": 1.25 + }, + { + "type": "rectangle", + "id": "cdes", + "x": 420, + "y": 240, + "width": 250, + "height": 60, + "strokeColor": "#1e3a5f", + "backgroundColor": "#93c5fd", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1033, + "version": 1, + "versionNonce": 1034, + "isDeleted": false, + "groupIds": [], + "boundElements": [ + { + "id": "cdes_t", + "type": "text" + }, + { + "id": "f9", + "type": "arrow" + }, + { + "id": "f10", + "type": "arrow" + } + ], + "link": null, + "locked": false, + "roundness": { + "type": 3 + } + }, + { + "type": "text", + "id": "cdes_t", + "x": 430, + "y": 250, + "width": 230, + "height": 40, + "strokeColor": "#1e3a5f", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1035, + "version": 1, + "versionNonce": 1036, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "CDEStaging\n259 draft CDE definitions", + "originalText": "CDEStaging\n259 draft CDE definitions", + "fontSize": 14, + "fontFamily": 2, + "textAlign": "center", + "verticalAlign": "middle", + "containerId": "cdes", + "lineHeight": 1.25 + }, + { + "type": "rectangle", + "id": "site", + "x": 1140, + "y": 240, + "width": 250, + "height": 60, + "strokeColor": "#1e3a5f", + "backgroundColor": "#3b82f6", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1037, + "version": 1, + "versionNonce": 1038, + "isDeleted": false, + "groupIds": [], + "boundElements": [ + { + "id": "site_t", + "type": "text" + }, + { + "id": "e1", + "type": "arrow" + } + ], + "link": null, + "locked": false, + "roundness": { + "type": 3 + } + }, + { + "type": "text", + "id": "site_t", + "x": 1150, + "y": 250, + "width": 230, + "height": 40, + "strokeColor": "#ffffff", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1039, + "version": 1, + "versionNonce": 1040, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "finding-models-site\ncatalog of findingmodels", + "originalText": "finding-models-site\ncatalog of findingmodels", + "fontSize": 14, + "fontFamily": 2, + "textAlign": "center", + "verticalAlign": "middle", + "containerId": "site", + "lineHeight": 1.25 + }, + { + "type": "rectangle", + "id": "radlex", + "x": 60, + "y": 330, + "width": 250, + "height": 60, + "strokeColor": "#c2410c", + "backgroundColor": "#fed7aa", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1041, + "version": 1, + "versionNonce": 1042, + "isDeleted": false, + "groupIds": [], + "boundElements": [ + { + "id": "radlex_t", + "type": "text" + }, + { + "id": "f4", + "type": "arrow" + } + ], + "link": null, + "locked": false, + "roundness": { + "type": 3 + } + }, + { + "type": "text", + "id": "radlex_t", + "x": 70, + "y": 340, + "width": 230, + "height": 40, + "strokeColor": "#7c2d12", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1043, + "version": 1, + "versionNonce": 1044, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "RadLex (RSNA)\nRID codes", + "originalText": "RadLex (RSNA)\nRID codes", + "fontSize": 14, + "fontFamily": 2, + "textAlign": "center", + "verticalAlign": "middle", + "containerId": "radlex", + "lineHeight": 1.25 + }, + { + "type": "rectangle", + "id": "alorg", + "x": 420, + "y": 330, + "width": 250, + "height": 60, + "strokeColor": "#1e3a5f", + "backgroundColor": "#93c5fd", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1045, + "version": 1, + "versionNonce": 1046, + "isDeleted": false, + "groupIds": [], + "boundElements": [ + { + "id": "alorg_t", + "type": "text" + }, + { + "id": "f4", + "type": "arrow" + }, + { + "id": "f5", + "type": "arrow" + } + ], + "link": null, + "locked": false, + "roundness": { + "type": 3 + } + }, + { + "type": "text", + "id": "alorg_t", + "x": 430, + "y": 340, + "width": 230, + "height": 40, + "strokeColor": "#1e3a5f", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1047, + "version": 1, + "versionNonce": 1048, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "anatomiclocations.org\n+ BodyPartIndex.py and .ts", + "originalText": "anatomiclocations.org\n+ BodyPartIndex.py and .ts", + "fontSize": 14, + "fontFamily": 2, + "textAlign": "center", + "verticalAlign": "middle", + "containerId": "alorg", + "lineHeight": 1.25 + }, + { + "type": "rectangle", + "id": "alpkg", + "x": 780, + "y": 330, + "width": 250, + "height": 60, + "strokeColor": "#1e3a5f", + "backgroundColor": "#60a5fa", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1049, + "version": 1, + "versionNonce": 1050, + "isDeleted": false, + "groupIds": [], + "boundElements": [ + { + "id": "alpkg_t", + "type": "text" + }, + { + "id": "f5", + "type": "arrow" + }, + { + "id": "f6", + "type": "arrow" + } + ], + "link": null, + "locked": false, + "roundness": { + "type": 3 + } + }, + { + "type": "text", + "id": "alpkg_t", + "x": 790, + "y": 340, + "width": 230, + "height": 40, + "strokeColor": "#1e3a5f", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1051, + "version": 1, + "versionNonce": 1052, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "anatomic-locations package\ninside findingmodel", + "originalText": "anatomic-locations package\ninside findingmodel", + "fontSize": 14, + "fontFamily": 2, + "textAlign": "center", + "verticalAlign": "middle", + "containerId": "alpkg", + "lineHeight": 1.25 + }, + { + "type": "rectangle", + "id": "ipl", + "x": 1140, + "y": 330, + "width": 250, + "height": 60, + "strokeColor": "#1e3a5f", + "backgroundColor": "#3b82f6", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1053, + "version": 1, + "versionNonce": 1054, + "isDeleted": false, + "groupIds": [], + "boundElements": [ + { + "id": "ipl_t", + "type": "text" + }, + { + "id": "f6", + "type": "arrow" + }, + { + "id": "e2", + "type": "arrow" + } + ], + "link": null, + "locked": false, + "roundness": { + "type": 3 + } + }, + { + "type": "text", + "id": "ipl_t", + "x": 1150, + "y": 340, + "width": 230, + "height": 40, + "strokeColor": "#ffffff", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1055, + "version": 1, + "versionNonce": 1056, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "imaging-problem-list\nuses finding models and locations", + "originalText": "imaging-problem-list\nuses finding models and locations", + "fontSize": 14, + "fontFamily": 2, + "textAlign": "center", + "verticalAlign": "middle", + "containerId": "ipl", + "lineHeight": 1.25 + }, + { + "type": "rectangle", + "id": "others", + "x": 60, + "y": 420, + "width": 250, + "height": 60, + "strokeColor": "#c2410c", + "backgroundColor": "#fed7aa", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1057, + "version": 1, + "versionNonce": 1058, + "isDeleted": false, + "groupIds": [], + "boundElements": [ + { + "id": "others_t", + "type": "text" + }, + { + "id": "f7", + "type": "arrow" + } + ], + "link": null, + "locked": false, + "roundness": { + "type": 3 + } + }, + { + "type": "text", + "id": "others_t", + "x": 70, + "y": 430, + "width": 230, + "height": 40, + "strokeColor": "#7c2d12", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1059, + "version": 1, + "versionNonce": 1060, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "SNOMED CT, FMA, LOINC, UMLS\n(and RadLex)", + "originalText": "SNOMED CT, FMA, LOINC, UMLS\n(and RadLex)", + "fontSize": 14, + "fontFamily": 2, + "textAlign": "center", + "verticalAlign": "middle", + "containerId": "others", + "lineHeight": 1.25 + }, + { + "type": "rectangle", + "id": "molu", + "x": 780, + "y": 420, + "width": 250, + "height": 60, + "strokeColor": "#1e3a5f", + "backgroundColor": "#60a5fa", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1061, + "version": 1, + "versionNonce": 1062, + "isDeleted": false, + "groupIds": [], + "boundElements": [ + { + "id": "molu_t", + "type": "text" + }, + { + "id": "f7", + "type": "arrow" + }, + { + "id": "e3", + "type": "arrow" + } + ], + "link": null, + "locked": false, + "roundness": { + "type": 3 + } + }, + { + "type": "text", + "id": "molu_t", + "x": 790, + "y": 430, + "width": 230, + "height": 40, + "strokeColor": "#1e3a5f", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1063, + "version": 1, + "versionNonce": 1064, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "med-ontology-lookup\nmolu", + "originalText": "med-ontology-lookup\nmolu", + "fontSize": 14, + "fontFamily": 2, + "textAlign": "center", + "verticalAlign": "middle", + "containerId": "molu", + "lineHeight": 1.25 + }, + { + "type": "rectangle", + "id": "mvp", + "x": 1140, + "y": 420, + "width": 250, + "height": 60, + "strokeColor": "#64748b", + "backgroundColor": "#ffffff", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "dashed", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1065, + "version": 1, + "versionNonce": 1066, + "isDeleted": false, + "groupIds": [], + "boundElements": [ + { + "id": "mvp_t", + "type": "text" + } + ], + "link": null, + "locked": false, + "roundness": { + "type": 3 + } + }, + { + "type": "text", + "id": "mvp_t", + "x": 1150, + "y": 430, + "width": 230, + "height": 40, + "strokeColor": "#475569", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1067, + "version": 1, + "versionNonce": 1068, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "IPL-MVP-ExtractionAndLabeling\nsuperseded", + "originalText": "IPL-MVP-ExtractionAndLabeling\nsuperseded", + "fontSize": 14, + "fontFamily": 2, + "textAlign": "center", + "verticalAlign": "middle", + "containerId": "mvp", + "lineHeight": 1.25 + }, + { + "type": "arrow", + "id": "f1", + "x": 310, + "y": 180.0, + "width": 110, + "height": 0.0, + "strokeColor": "#64748b", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1069, + "version": 1, + "versionNonce": 1070, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "points": [ + [ + 0, + 0 + ], + [ + 110, + 0.0 + ] + ], + "startBinding": { + "elementId": "radelement", + "focus": 0, + "gap": 2 + }, + "endBinding": { + "elementId": "fms", + "focus": 0, + "gap": 2 + }, + "startArrowhead": null, + "endArrowhead": "arrow" + }, + { + "type": "text", + "id": "f1_l", + "x": 326.72, + "y": 158.0, + "width": 76.55999999999999, + "height": 15.0, + "strokeColor": "#64748b", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1071, + "version": 1, + "versionNonce": 1072, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "CDE-derived", + "originalText": "CDE-derived", + "fontSize": 12, + "fontFamily": 2, + "textAlign": "center", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 + }, + { + "type": "arrow", + "id": "f2", + "x": 670, + "y": 180.0, + "width": 110, + "height": 0.0, + "strokeColor": "#64748b", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1073, + "version": 1, + "versionNonce": 1074, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "points": [ + [ + 0, + 0 + ], + [ + 110, + 0.0 + ] + ], + "startBinding": { + "elementId": "fms", + "focus": 0, + "gap": 2 + }, + "endBinding": { + "elementId": "fm", + "focus": 0, + "gap": 2 + }, + "startArrowhead": null, + "endArrowhead": "arrow" + }, + { + "type": "text", + "id": "f2_l", + "x": 686.72, + "y": 158.0, + "width": 76.55999999999999, + "height": 15.0, + "strokeColor": "#64748b", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1075, + "version": 1, + "versionNonce": 1076, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "definitions", + "originalText": "definitions", + "fontSize": 12, + "fontFamily": 2, + "textAlign": "center", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 + }, + { + "type": "arrow", + "id": "f3", + "x": 1030, + "y": 171.0, + "width": 110, + "height": 0.0, + "strokeColor": "#64748b", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1077, + "version": 1, + "versionNonce": 1078, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "points": [ + [ + 0, + 0 + ], + [ + 110, + 0.0 + ] + ], + "startBinding": { + "elementId": "fm", + "focus": 0, + "gap": 2 + }, + "endBinding": { + "elementId": "forge", + "focus": 0, + "gap": 2 + }, + "startArrowhead": null, + "endArrowhead": "arrow" + }, + { + "type": "text", + "id": "f3_l", + "x": 1064.12, + "y": 149.0, + "width": 41.76, + "height": 15.0, + "strokeColor": "#64748b", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1079, + "version": 1, + "versionNonce": 1080, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "engine", + "originalText": "engine", + "fontSize": 12, + "fontFamily": 2, + "textAlign": "center", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 + }, + { + "type": "arrow", + "id": "f4", + "x": 310, + "y": 360.0, + "width": 110, + "height": 0.0, + "strokeColor": "#64748b", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1081, + "version": 1, + "versionNonce": 1082, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "points": [ + [ + 0, + 0 + ], + [ + 110, + 0.0 + ] + ], + "startBinding": { + "elementId": "radlex", + "focus": 0, + "gap": 2 + }, + "endBinding": { + "elementId": "alorg", + "focus": 0, + "gap": 2 + }, + "startArrowhead": null, + "endArrowhead": "arrow" + }, + { + "type": "text", + "id": "f4_l", + "x": 316.28, + "y": 338.0, + "width": 97.44, + "height": 15.0, + "strokeColor": "#64748b", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1083, + "version": 1, + "versionNonce": 1084, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "curated subset", + "originalText": "curated subset", + "fontSize": 12, + "fontFamily": 2, + "textAlign": "center", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 + }, + { + "type": "arrow", + "id": "f5", + "x": 670, + "y": 360.0, + "width": 110, + "height": 0.0, + "strokeColor": "#64748b", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "dashed", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1085, + "version": 1, + "versionNonce": 1086, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "points": [ + [ + 0, + 0 + ], + [ + 110, + 0.0 + ] + ], + "startBinding": { + "elementId": "alorg", + "focus": 0, + "gap": 2 + }, + "endBinding": { + "elementId": "alpkg", + "focus": 0, + "gap": 2 + }, + "startArrowhead": null, + "endArrowhead": "arrow" + }, + { + "type": "text", + "id": "f5_l", + "x": 700.64, + "y": 338.0, + "width": 48.72, + "height": 15.0, + "strokeColor": "#64748b", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1087, + "version": 1, + "versionNonce": 1088, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "lineage", + "originalText": "lineage", + "fontSize": 12, + "fontFamily": 2, + "textAlign": "center", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 + }, + { + "type": "arrow", + "id": "f6", + "x": 1030, + "y": 372.0, + "width": 110, + "height": 0.0, + "strokeColor": "#64748b", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1089, + "version": 1, + "versionNonce": 1090, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "points": [ + [ + 0, + 0 + ], + [ + 110, + 0.0 + ] + ], + "startBinding": { + "elementId": "alpkg", + "focus": 0, + "gap": 2 + }, + "endBinding": { + "elementId": "ipl", + "focus": 0, + "gap": 2 + }, + "startArrowhead": null, + "endArrowhead": "arrow" + }, + { + "type": "arrow", + "id": "f7", + "x": 310, + "y": 450.0, + "width": 470, + "height": 0.0, + "strokeColor": "#64748b", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1091, + "version": 1, + "versionNonce": 1092, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "points": [ + [ + 0, + 0 + ], + [ + 470, + 0.0 + ] + ], + "startBinding": { + "elementId": "others", + "focus": 0, + "gap": 2 + }, + "endBinding": { + "elementId": "molu", + "focus": 0, + "gap": 2 + }, + "startArrowhead": null, + "endArrowhead": "arrow" + }, + { + "type": "text", + "id": "f7_l", + "x": 520.64, + "y": 428.0, + "width": 48.72, + "height": 15.0, + "strokeColor": "#64748b", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1093, + "version": 1, + "versionNonce": 1094, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "lookups", + "originalText": "lookups", + "fontSize": 12, + "fontFamily": 2, + "textAlign": "center", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 + }, + { + "type": "arrow", + "id": "f8", + "x": 185.0, + "y": 210, + "width": 0.0, + "height": 30, + "strokeColor": "#64748b", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1095, + "version": 1, + "versionNonce": 1096, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "points": [ + [ + 0, + 0 + ], + [ + 0.0, + 30 + ] + ], + "startBinding": { + "elementId": "radelement", + "focus": 0, + "gap": 2 + }, + "endBinding": { + "elementId": "cdesnap", + "focus": 0, + "gap": 2 + }, + "startArrowhead": null, + "endArrowhead": "arrow" + }, + { + "type": "text", + "id": "f8_l", + "x": 199.16, + "y": 217.0, + "width": 55.67999999999999, + "height": 15.0, + "strokeColor": "#64748b", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1097, + "version": 1, + "versionNonce": 1098, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "snapshot", + "originalText": "snapshot", + "fontSize": 12, + "fontFamily": 2, + "textAlign": "center", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 + }, + { + "type": "arrow", + "id": "f9", + "x": 545.0, + "y": 240, + "width": 0.0, + "height": -30, + "strokeColor": "#64748b", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1099, + "version": 1, + "versionNonce": 1100, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "points": [ + [ + 0, + 0 + ], + [ + 0.0, + -30 + ] + ], + "startBinding": { + "elementId": "cdes", + "focus": 0, + "gap": 2 + }, + "endBinding": { + "elementId": "fms", + "focus": 0, + "gap": 2 + }, + "startArrowhead": null, + "endArrowhead": "arrow" + }, + { + "type": "text", + "id": "f9_l", + "x": 562.8, + "y": 217.0, + "width": 104.39999999999999, + "height": 15.0, + "strokeColor": "#64748b", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1101, + "version": 1, + "versionNonce": 1102, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "content batches", + "originalText": "content batches", + "fontSize": 12, + "fontFamily": 2, + "textAlign": "center", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 + }, + { + "type": "arrow", + "id": "f10", + "x": 420, + "y": 270.0, + "width": -172.5, + "height": -60.0, + "strokeColor": "#64748b", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "dashed", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1103, + "version": 1, + "versionNonce": 1104, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "points": [ + [ + 0, + 0 + ], + [ + -172.5, + -60.0 + ] + ], + "startBinding": { + "elementId": "cdes", + "focus": 0, + "gap": 2 + }, + "endBinding": { + "elementId": "radelement", + "focus": 0, + "gap": 2 + }, + "startArrowhead": null, + "endArrowhead": "arrow" + }, + { + "type": "text", + "id": "f10_l", + "x": 324, + "y": 304, + "width": 172.26, + "height": 13.75, + "strokeColor": "#64748b", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1105, + "version": 1, + "versionNonce": 1106, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "informal path to submission", + "originalText": "informal path to submission", + "fontSize": 11, + "fontFamily": 2, + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 + }, + { + "type": "text", + "id": "f5_note", + "x": 450, + "y": 394, + "width": 216.92, + "height": 13.75, + "strokeColor": "#64748b", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1107, + "version": 1, + "versionNonce": 1108, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "current data lives in findingmodel", + "originalText": "current data lives in findingmodel", + "fontSize": 11, + "fontFamily": 2, + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 + }, + { + "type": "arrow", + "id": "e1", + "x": 607.5, + "y": 150, + "width": 657.5, + "height": 90, + "strokeColor": "#64748b", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1109, + "version": 1, + "versionNonce": 1110, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "points": [ + [ + 0, + 0 + ], + [ + 0, + -12 + ], + [ + 812.5, + -12 + ], + [ + 812.5, + 120.0 + ], + [ + 782.5, + 120.0 + ] + ], + "startBinding": { + "elementId": "fms", + "focus": 0, + "gap": 2 + }, + "endBinding": { + "elementId": "site", + "focus": 0, + "gap": 2 + }, + "startArrowhead": null, + "endArrowhead": "arrow" + }, + { + "type": "text", + "id": "e1_l", + "x": 684, + "y": 122, + "width": 82.94, + "height": 13.75, + "strokeColor": "#64748b", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1111, + "version": 1, + "versionNonce": 1112, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "git submodule", + "originalText": "git submodule", + "fontSize": 11, + "fontFamily": 2, + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 + }, + { + "type": "arrow", + "id": "e2", + "x": 1030, + "y": 201.0, + "width": 110, + "height": 147.0, + "strokeColor": "#64748b", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1113, + "version": 1, + "versionNonce": 1114, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "points": [ + [ + 0, + 0.0 + ], + [ + 70, + 0.0 + ], + [ + 70, + 147.0 + ], + [ + 110, + 147.0 + ] + ], + "startBinding": { + "elementId": "fm", + "focus": 0, + "gap": 2 + }, + "endBinding": { + "elementId": "ipl", + "focus": 0, + "gap": 2 + }, + "startArrowhead": null, + "endArrowhead": "arrow" + }, + { + "type": "arrow", + "id": "e3", + "x": 1030, + "y": 450.0, + "width": -30, + "height": -240.0, + "strokeColor": "#64748b", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "dashed", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1115, + "version": 1, + "versionNonce": 1116, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "points": [ + [ + 0, + 0.0 + ], + [ + 40, + 0.0 + ], + [ + 40, + -225.0 + ], + [ + -30, + -225.0 + ], + [ + -30, + -240.0 + ] + ], + "startBinding": { + "elementId": "molu", + "focus": 0, + "gap": 2 + }, + "endBinding": { + "elementId": "fm", + "focus": 0, + "gap": 2 + }, + "startArrowhead": null, + "endArrowhead": "arrow" + }, + { + "type": "text", + "id": "e3_l", + "x": 962.3, + "y": 330.5, + "width": 191.39999999999998, + "height": 13.75, + "strokeColor": "#64748b", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": -1.5708, + "seed": 1117, + "version": 1, + "versionNonce": 1118, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "ontology search for enrichment", + "originalText": "ontology search for enrichment", + "fontSize": 11, + "fontFamily": 2, + "textAlign": "center", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 + }, + { + "type": "text", + "id": "legend", + "x": 60, + "y": 520, + "width": 967.4399999999999, + "height": 15.0, + "strokeColor": "#64748b", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1119, + "version": 1, + "versionNonce": 1120, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "Orange: external terminology. Light blue: content repository. Mid blue: library. Dark blue: application. Dashed: lineage or superseded.", + "originalText": "Orange: external terminology. Light blue: content repository. Mid blue: library. Dark blue: application. Dashed: lineage or superseded.", + "fontSize": 12, + "fontFamily": 2, + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 + } + ], + "appState": { + "viewBackgroundColor": "#ffffff", + "gridSize": null + }, + "files": {} +} \ No newline at end of file diff --git a/knowledge/repositories/repository-map.md b/knowledge/repositories/repository-map.md index 0d1068f..a42bba0 100644 --- a/knowledge/repositories/repository-map.md +++ b/knowledge/repositories/repository-map.md @@ -74,54 +74,9 @@ Four status values are used. Content repositories hold definitions and data. Library repositories turn those definitions into typed objects and searchable indexes. Application repositories consume both. Two external terminologies, RadElement and RadLex, sit outside the project and are referenced by code, not vendored into it. -```mermaid -flowchart TD - subgraph external[External terminologies] - RE[RadElement
RDES and RDE codes] - RL[RadLex
RID codes] - SN[SNOMED CT, FMA,
LOINC, UMLS] - end - - subgraph content[Content repositories] - CDS[CDEStaging
259 draft CDE definitions] - CDE[common_data_elements
RadElement snapshot] - FMS[findingmodels
2,382 finding models] - AL[anatomiclocations.org
2,890 anatomic locations] - end - - subgraph libs[Libraries] - FM[findingmodel
OIFM format, index, CLIs, MCP] - ALP[anatomic-locations package
inside findingmodel] - MOLU[med-ontology-lookup
molu] - BPI[BodyPartIndex.py and .ts] - end - - subgraph apps[Applications] - FMF[FindingModelForge
fmf.oidm.org] - FSITE[finding-models-site] - IPL[imaging-problem-list
extraction, coding, viewers] - MVP[IPL-MVP-ExtractionAndLabeling] - end - - CDS --> RE - CDE --> RE - FMS --> FM - AL --> BPI - AL --> ALP - RL --> ALP - RL --> MOLU - SN --> MOLU - RE --> FMS - MOLU --> FM - ALP --> FM - FM --> FMF - FMS --> FSITE - FM --> IPL - ALP --> IPL - FMS --> IPL - FMS --> MVP - CDS --> FMS -``` +![How the repositories relate: read each row left to right, from an external terminology or content repository, through the library that packages it, to the application that uses it. RadElement feeds findingmodels and CDEStaging; findingmodels feeds findingmodel; findingmodel feeds Finding Model Forge and imaging-problem-list. RadLex feeds anatomiclocations.org, which feeds the anatomic-locations package inside findingmodel. SNOMED CT, FMA, LOINC, and UMLS feed med-ontology-lookup, which enriches findingmodel. findingmodels also feeds finding-models-site via a git submodule and the superseded IPL-MVP-ExtractionAndLabeling.](./repository-map.svg) + +*Diagram source: `repository-map.excalidraw` beside this document, generated by `tools/diagrams/build_repository_map.py`.* Three edges deserve a note. The `findingmodels` corpus is pulled into `finding-models-site` as a git submodule and resolved by `imaging-problem-list` through the published `ids.json` file, so the content repository is the single source of finding model identity. The newer anatomic data lives inside `findingmodel` as the `anatomic-locations` package rather than in the original `anatomiclocations.org` repository, and the two lineages are not synchronized. RSNA/RadLex issue 3, "Add Anatomic Locations", opened 2026-08-10, tracks folding the curated anatomic location set into RadLex itself with an exit criterion of full coverage; that is a GitHub tracking issue, not a code dependency. diff --git a/knowledge/repositories/repository-map.svg b/knowledge/repositories/repository-map.svg new file mode 100644 index 0000000..234881e --- /dev/null +++ b/knowledge/repositories/repository-map.svg @@ -0,0 +1,2 @@ +How the repositories relateRead each row left to right: a terminology feeds content, a library packages it, an application uses it.TERMINOLOGIESCONTENTLIBRARIESAPPLICATIONSRadElement (ACR/RSNA)RDES and RDE codesfindingmodels2,382 finding modelsfindingmodelOIFM format, index, CLIs, MCPFinding Model Forgefmf.oidm.orgcommon_data_elementsRadElement snapshotCDEStaging259 draft CDE definitionsfinding-models-sitecatalog of findingmodelsRadLex (RSNA)RID codesanatomiclocations.org+ BodyPartIndex.py and .tsanatomic-locations packageinside findingmodelimaging-problem-listuses finding models and locationsSNOMED CT, FMA, LOINC, UMLS(and RadLex)med-ontology-lookupmoluIPL-MVP-ExtractionAndLabelingsupersededCDE-deriveddefinitionsenginecurated subsetlineagelookupssnapshotcontent batchesinformal path to submissioncurrent data lives in findingmodelgit submoduleontology search for enrichmentOrange: external terminology. Light blue: content repository. Mid blue: library. Dark blue: application. Dashed: lineage or superseded. \ No newline at end of file diff --git a/tools/diagrams/build_architecture.py b/tools/diagrams/build_architecture.py new file mode 100644 index 0000000..7bb3cfc --- /dev/null +++ b/tools/diagrams/build_architecture.py @@ -0,0 +1,66 @@ +#!/usr/bin/env python3 +"""Build the OIDM architecture diagram (three layers joined by identifiers). +Output: knowledge/overview/architecture.excalidraw; render with render_excalidraw.py.""" +from excalib import PRIMARY, SECONDARY, TERTIARY, EXTERNAL, PLANNED, TITLE, SUBTITLE, BODY, LINE, els, base, text, box, find, arrow, hline, save + +# ---------------------------------------------------------------- layout +W, H = 260, 74 # box size +C1, C2, C3, C4 = 150, 500, 850, 1200 # columns, 90px gaps for arrow labels; left margin reserved for the Forge arrow +Y_APP, Y_DATA, Y_FOUND = 160, 440, 720 + +els.append(text("title", 60, 40, "Open Imaging Data Model: three layers joined by identifiers", size=26, color=TITLE)) +els.append(text("subtitle", 60, 82, "Each layer depends on the one below it. Codes minted in the semantic foundation are what the data structures carry and the applications exchange.", size=14, color=BODY)) + +# band labels and dividers +for lbl, y in (("APPLICATIONS", Y_APP - 34), ("DATA STRUCTURES", Y_DATA - 34), ("SEMANTIC FOUNDATION", Y_FOUND - 34)): + els.append(text("band_" + lbl.split()[0].lower(), C1, y, lbl, size=13, color=SUBTITLE)) +hline("div1", 40, Y_DATA - 50, 1440) +hline("div2", 40, Y_FOUND - 50, 1440) + +# applications +box("forge", 40, Y_APP, W, H, "Finding Model Forge\nauthoring wizard, fmf.oidm.org", SECONDARY) +box("extract", C2, Y_DATA - 280, W, H, "Report extraction platform\nLLM extraction and coding (dev)", SECONDARY) +box("viewer", C3, Y_APP, W, H, "Imaging Problem List viewer\nimaging-problem-list.pages.dev", SECONDARY) +els.append(text("apps_note", C4, Y_APP + 8, "Also: finding-models-site (catalog),\nmed-ontology-lookup (terminology lookup),\nOpen Imaging Reporting SDK (concept only)", size=12, color=BODY)) + +# data structures +box("obs", C1, Y_DATA, W, H, "Observation\nfinding + location + attributes", PRIMARY) +box("efl", C2, Y_DATA, W, H, "Exam Finding List\nall observations of one exam", PRIMARY) +box("ipl", C3, Y_DATA, W, H, "Imaging Problem List\none patient, grouped by finding", PRIMARY) +box("persona", C4, Y_DATA, W, H, "Imaging Persona\nplus clinical context (concept)", PLANNED, dashed=True) +arrow("a_obs_efl", "obs", "right", "efl", "left", "per exam") +arrow("a_efl_ipl", "efl", "right", "ipl", "left", "per patient") +arrow("a_ipl_persona", "ipl", "right", "persona", "left", "goal", dashed=True) + +# semantic foundation +box("fm", C1, Y_FOUND, W, H, "Finding models\nOIFM_ / OIFMA_ codes", TERTIARY) +box("al", C2, Y_FOUND, W, H, "Anatomic locations\nRadLex RID codes", TERTIARY) +box("et", C3, Y_FOUND, W, H, "Exam types\nLOINC / Playbook (planned)", PLANNED, dashed=True) +box("cde", C4, Y_FOUND, W, H, "ACR/RSNA CDEs at RadElement\nRDES / RDE codes (allied project)", EXTERNAL) +els.append(text("terms", C1, Y_FOUND + H + 40, "Terminologies underneath: RadLex, SNOMED CT, FMA, UMLS, MeSH, LOINC and the RSNA Radiology Playbook. Looked up through med-ontology-lookup.", size=13, color=BODY)) + +# joins: foundation -> data +arrow("a_fm_obs", "fm", "top", "obs", "bottom", "OIFM and OIFMA codes", label_dx=90) +arrow("a_al_obs", "al", "top", "obs", "bottom", "RID", s_frac=0.5, d_frac=0.85, label_dx=30) +arrow("a_et_efl", "et", "top", "efl", "bottom", "LOINC exam code", s_frac=0.5, d_frac=0.85, dashed=True, label_dx=40) +arrow("a_cde_fm", "cde", "top", "fm", "top", None) # placeholder, replaced below +els.pop() # remove placeholder arrow element +find("cde")["boundElements"].pop(); find("fm")["boundElements"].pop() +# CDE <-> finding models: a curved dashed arrow along the bottom would cross; use a short labeled note instead +els.append(text("cde_note", C4, Y_FOUND + H + 12, "finding models graduate to CDEs; CDE definitions seed finding models", size=12, color=EXTERNAL[2])) + +# applications -> data / foundation +arrow("a_forge_fm", "forge", "bottom", "fm", "left", "authors", s_frac=0.12, d_frac=0.5, elbow="vertical-first", label_dx=-4, label_dy=-14) +arrow("a_extract_efl", "extract", "bottom", "efl", "top", "extracts from reports") +arrow("a_ipl_viewer", "ipl", "top", "viewer", "bottom", "renders") + +# legend +LX, LY = C4, Y_FOUND + H + 80 +els.append(text("legend_t", LX, LY, "Legend", size=13, color=SUBTITLE)) +for i, (lab, colors, dashed) in enumerate((("solid outline: exists today", ("#ffffff", "#1e3a5f", ""), False), ("dashed outline: documented or planned only", PLANNED, True), ("orange: allied external project", EXTERNAL, False))): + r = base("rectangle", f"lg{i}", LX, LY + 24 + i * 24, 18, 14, colors[1], colors[0], dashed=dashed, sw=1) + r["roundness"] = {"type": 3}; r["boundElements"] = None + els.append(r) + els.append(text(f"lg{i}_t", LX + 26, LY + 22 + i * 24, lab, size=12, color=BODY)) + +save("knowledge/overview/architecture.excalidraw") diff --git a/tools/diagrams/build_hierarchy.py b/tools/diagrams/build_hierarchy.py new file mode 100644 index 0000000..e2f01fd --- /dev/null +++ b/tools/diagrams/build_hierarchy.py @@ -0,0 +1,39 @@ +#!/usr/bin/env python3 +"""Build the data-structure ladder: Observation, Exam Finding List, Imaging +Problem List, Imaging Persona, with the fields each carries and its status. +Output: knowledge/data-structures/hierarchy.excalidraw""" +from excalib import PRIMARY, SECONDARY, TERTIARY, EXTERNAL, PLANNED, TITLE, SUBTITLE, BODY, LINE, els, base, text, box, find, arrow, hline, save + +W, H, GAP = 280, 74, 150 +Y = 130 +cols = [60 + i * (W + GAP) for i in range(4)] + +els.append(text("title", 60, 40, "From one observation to a patient's imaging history", size=26, color=TITLE)) +els.append(text("subtitle", 60, 82, "Each structure to the right contains the ones to its left and adds one more level of context.", size=14, color=BODY)) + +box("obs", cols[0], Y, W, H, "Observation\none finding, one exam", PRIMARY) +box("efl", cols[1], Y, W, H, "Exam Finding List\nevery observation of one exam", PRIMARY) +box("ipl", cols[2], Y, W, H, "Imaging Problem List\none patient, keyed by finding", PRIMARY) +box("persona", cols[3], Y, W, H, "Imaging Persona\nplus clinical context", PLANNED, dashed=True) + +arrow("a1", "obs", "right", "efl", "left", "per exam", label_dy=-26) +arrow("a2", "efl", "right", "ipl", "left", "all exams", label_dy=-26) +arrow("a3", "ipl", "right", "persona", "left", "with context", dashed=True, label_dy=-26) + +fields = [ + "findingCode (OIFM)\nfindingDescription\nanatomicLocation (RID)\nattributes[] with value codes\nreportText", + "diagnosticReportId\npatientInfo\nexamInfo with LOINC exam code\nfindings[]: the observations", + "patient\nfindings[] keyed by\n(findingCode, locationId)\neach with dated observations[]\nstatus derived, not stored", + "clinical context (orders, indications)\nmedical baseline (problems, labs)\nspecialized history (oncology)\nsurgical history (operative, implants)", +] +status = ["JSON in use; no published schema", "JSON in use; no published schema", "JSON in use; grouping changed on dev", "concept only, no artifact"] +for i, (f, st) in enumerate(zip(fields, status)): + x = cols[i] + ln = base("line", f"tick{i}", x + 18, Y + H, 0, 22, LINE, "transparent", sw=1) + ln.update({"points": [[0, 0], [0, 22]], "boundElements": None}) + els.append(ln) + els.append(text(f"fields{i}", x + 10, Y + H + 30, f, size=13, color="#374151")) + els.append(text(f"status{i}", x + 10, Y + H + 30 + 5 * 13 * 1.25 + 8, st, size=12, color=SUBTITLE if i < 3 else PLANNED[2])) + +els.append(text("note", 60, Y + H + 200, "Codes come from the semantic foundation: OIFM and OIFMA identifiers from finding models, RID from anatomic locations, LOINC for the exam.", size=13, color=BODY)) +save("knowledge/data-structures/hierarchy.excalidraw") diff --git a/tools/diagrams/build_repository_map.py b/tools/diagrams/build_repository_map.py new file mode 100644 index 0000000..059522e --- /dev/null +++ b/tools/diagrams/build_repository_map.py @@ -0,0 +1,80 @@ +#!/usr/bin/env python3 +"""Build the repository data-flow map: one row per theme so the main flows run +left to right (terminology, content, library, application). +Output: knowledge/repositories/repository-map.excalidraw""" +from excalib import PRIMARY, SECONDARY, TERTIARY, EXTERNAL, PLANNED, TITLE, SUBTITLE, BODY, LINE, els, base, text, box, find, arrow, save + +W, H = 250, 60 +C = [60, 420, 780, 1140] # columns, 110px gutters +R = [150, 240, 330, 420] # rows + +els.append(text("title", 60, 40, "How the repositories relate", size=26, color=TITLE)) +els.append(text("subtitle", 60, 78, "Read each row left to right: a terminology feeds content, a library packages it, an application uses it.", size=14, color=BODY)) +for lbl, x in (("TERMINOLOGIES", C[0]), ("CONTENT", C[1]), ("LIBRARIES", C[2]), ("APPLICATIONS", C[3])): + els.append(text("hdr_" + lbl.lower(), x, 100, lbl, size=13, color=SUBTITLE)) + +# row 1: finding models +box("radelement", C[0], R[0], W, H, "RadElement (ACR/RSNA)\nRDES and RDE codes", EXTERNAL, size=14) +box("fms", C[1], R[0], W, H, "findingmodels\n2,382 finding models", TERTIARY, size=14) +box("fm", C[2], R[0], W, H, "findingmodel\nOIFM format, index, CLIs, MCP", SECONDARY, size=14) +box("forge", C[3], R[0], W, H, "Finding Model Forge\nfmf.oidm.org", PRIMARY, size=14) +# row 2: CDE staging and the catalog site +box("cdesnap", C[0], R[1], W, H, "common_data_elements\nRadElement snapshot", TERTIARY, size=14) +box("cdes", C[1], R[1], W, H, "CDEStaging\n259 draft CDE definitions", TERTIARY, size=14) +box("site", C[3], R[1], W, H, "finding-models-site\ncatalog of findingmodels", PRIMARY, size=14) +# row 3: anatomy +box("radlex", C[0], R[2], W, H, "RadLex (RSNA)\nRID codes", EXTERNAL, size=14) +box("alorg", C[1], R[2], W, H, "anatomiclocations.org\n+ BodyPartIndex.py and .ts", TERTIARY, size=14) +box("alpkg", C[2], R[2], W, H, "anatomic-locations package\ninside findingmodel", SECONDARY, size=14) +box("ipl", C[3], R[2], W, H, "imaging-problem-list\nuses finding models and locations", PRIMARY, size=14) +# row 4: terminology lookup +box("others", C[0], R[3], W, H, "SNOMED CT, FMA, LOINC, UMLS\n(and RadLex)", EXTERNAL, size=14) +box("molu", C[2], R[3], W, H, "med-ontology-lookup\nmolu", SECONDARY, size=14) +box("mvp", C[3], R[3], W, H, "IPL-MVP-ExtractionAndLabeling\nsuperseded", PLANNED, dashed=True, size=14) + +# horizontal flows +arrow("f1", "radelement", "right", "fms", "left", "CDE-derived") +arrow("f2", "fms", "right", "fm", "left", "definitions") +arrow("f3", "fm", "right", "forge", "left", "engine", s_frac=0.35, d_frac=0.35) +arrow("f4", "radlex", "right", "alorg", "left", "curated subset") +arrow("f5", "alorg", "right", "alpkg", "left", "lineage", dashed=True) +arrow("f6", "alpkg", "right", "ipl", "left", None, s_frac=0.7, d_frac=0.7) +arrow("f7", "others", "right", "molu", "left", "lookups") +# vertical flows +arrow("f8", "radelement", "bottom", "cdesnap", "top", "snapshot", s_frac=0.5, d_frac=0.5, label_dx=42, label_dy=-8) +arrow("f9", "cdes", "top", "fms", "bottom", "content batches", s_frac=0.5, d_frac=0.5, label_dx=70, label_dy=-8) +arrow("f10", "cdes", "left", "radelement", "bottom", None, s_frac=0.5, d_frac=0.75, dashed=True) +els.append(text("f10_l", C[0] + W + 14, R[1] + H + 4, "informal path to submission", size=11, color=BODY)) +els.append(text("f5_note", C[1] + 30, R[2] + H + 4, "current data lives in findingmodel", size=11, color=BODY)) + +# elbowed flows through empty gutters +def elbow(id_, src, dst, pts_abs, label, lx, ly, dashed=False): + a, b = find(src), find(dst) + x0, y0 = pts_abs[0] + ar = base("arrow", id_, x0, y0, pts_abs[-1][0] - x0, pts_abs[-1][1] - y0, LINE, "transparent", dashed=dashed) + ar.update({"points": [[x - x0, y - y0] for x, y in pts_abs], + "startBinding": {"elementId": src, "focus": 0, "gap": 2}, "endBinding": {"elementId": dst, "focus": 0, "gap": 2}, + "startArrowhead": None, "endArrowhead": "arrow", "boundElements": None}) + a["boundElements"].append({"id": id_, "type": "arrow"}); b["boundElements"].append({"id": id_, "type": "arrow"}) + els.append(ar) + if label: + els.append(text(id_ + "_l", lx, ly, label, size=11, color=BODY)) + +# findingmodels -> finding-models-site: over the top of the libraries column +elbow("e1", "fms", "site", [(C[1] + W * 0.75, R[0]), (C[1] + W * 0.75, 138), (C[3] + W / 2, 138), (C[3] + W / 2, R[1])], + "git submodule", C[1] + W + 14, 122) +# fix: the last leg must come down past row 1 into the site box top; run it in the gutter right of column 4 instead +find("e1")["points"] = [[0, 0], [0, 138 - R[0]], [C[3] + W + 30 - (C[1] + W * 0.75), 138 - R[0]], + [C[3] + W + 30 - (C[1] + W * 0.75), R[1] + H / 2 - R[0]], [C[3] + W - (C[1] + W * 0.75), R[1] + H / 2 - R[0]]] +# findingmodel -> imaging-problem-list: down the gutter between libraries and applications +elbow("e2", "fm", "ipl", [(C[2] + W, R[0] + H * 0.85), (C[2] + W + 70, R[0] + H * 0.85), (C[2] + W + 70, R[2] + H * 0.3), (C[3], R[2] + H * 0.3)], + "", 0, 0) +# med-ontology-lookup -> findingmodel: up the same gutter, left of e2 +elbow("e3", "molu", "fm", [(C[2] + W, R[3] + H * 0.5), (C[2] + W + 40, R[3] + H * 0.5), (C[2] + W + 40, R[0] + H + 15), (C[2] + W - 30, R[0] + H + 15), (C[2] + W - 30, R[0] + H)], + "ontology search for enrichment", 0, 0, dashed=True) +lab = find("e3_l"); lw = len("ontology search for enrichment") * 11 * 0.58 +cx, cy = C[2] + W + 40 - 12, (R[3] + H * 0.5 + R[0] + H + 15) / 2 +lab.update({"x": cx - lw / 2, "y": cy - 7, "width": lw, "angle": -1.5708, "textAlign": "center"}) + +els.append(text("legend", 60, 520, "Orange: external terminology. Light blue: content repository. Mid blue: library. Dark blue: application. Dashed: lineage or superseded.", size=12, color=BODY)) +save("knowledge/repositories/repository-map.excalidraw") diff --git a/tools/diagrams/excalib.py b/tools/diagrams/excalib.py new file mode 100644 index 0000000..073beab --- /dev/null +++ b/tools/diagrams/excalib.py @@ -0,0 +1,111 @@ +"""Shared helpers for building Excalidraw diagrams as JSON (used by build_*.py).""" +from __future__ import annotations + +import json +import os + +# Palette (tools/diagrams follows the excalidraw-diagram skill palette) +PRIMARY = ("#3b82f6", "#1e3a5f", "#ffffff") # data structures: fill, stroke, text +SECONDARY = ("#60a5fa", "#1e3a5f", "#1e3a5f") # applications +TERTIARY = ("#93c5fd", "#1e3a5f", "#1e3a5f") # semantic foundation +EXTERNAL = ("#fed7aa", "#c2410c", "#7c2d12") # allied external project +PLANNED = ("#ffffff", "#64748b", "#475569") # dashed, documented or planned only +TITLE, SUBTITLE, BODY, LINE = "#1e40af", "#3b82f6", "#64748b", "#64748b" + +els: list[dict] = [] +_seed = 1000 + + +def reset() -> None: + global _seed + els.clear() + _seed = 1000 + + +def seed() -> int: + global _seed + _seed += 1 + return _seed + + +def base(kind: str, id_: str, x: float, y: float, w: float, h: float, stroke: str, fill: str, dashed=False, sw=2) -> dict: + return { + "type": kind, "id": id_, "x": x, "y": y, "width": w, "height": h, + "strokeColor": stroke, "backgroundColor": fill, "fillStyle": "solid", + "strokeWidth": sw, "strokeStyle": "dashed" if dashed else "solid", "roughness": 0, + "opacity": 100, "angle": 0, "seed": seed(), "version": 1, "versionNonce": seed(), + "isDeleted": False, "groupIds": [], "boundElements": [], "link": None, "locked": False, + } + + +def text(id_: str, x: float, y: float, s: str, size=16, color=BODY, align="left", w: float | None = None, container: str | None = None, font=2) -> dict: + lines = s.split("\n") + est_w = w if w is not None else max(len(l) for l in lines) * size * 0.58 + h = len(lines) * size * 1.25 + t = base("text", id_, x, y, est_w, h, color, "transparent", sw=1) + t.update({"text": s, "originalText": s, "fontSize": size, "fontFamily": font, "textAlign": align, + "verticalAlign": "middle" if container else "top", "containerId": container, "lineHeight": 1.25, + "boundElements": None}) + return t + + +def box(id_: str, x: float, y: float, w: float, h: float, label: str, colors, dashed=False, size=16) -> dict: + fill, stroke, tcolor = colors + r = base("rectangle", id_, x, y, w, h, stroke, fill, dashed=dashed) + r["roundness"] = {"type": 3} + t = text(id_ + "_t", x + 10, y + 10, label, size=size, color=tcolor, align="center", w=w - 20, container=id_) + t["height"] = h - 20 + r["boundElements"] = [{"id": t["id"], "type": "text"}] + els.extend([r, t]) + return r + + +def find(id_: str) -> dict: + return next(e for e in els if e["id"] == id_) + + +def edge_point(b: dict, side: str, frac: float = 0.5) -> tuple[float, float]: + x, y, w, h = b["x"], b["y"], b["width"], b["height"] + return {"top": (x + w * frac, y), "bottom": (x + w * frac, y + h), + "left": (x, y + h * frac), "right": (x + w, y + h * frac)}[side] + + +def arrow(id_: str, src: str, s_side: str, dst: str, d_side: str, label: str | None = None, s_frac=0.5, d_frac=0.5, + color=LINE, dashed=False, label_dx=0.0, label_dy=-22.0, sw=2, both=False, elbow: str | None = None) -> None: + a, b = find(src), find(dst) + (x1, y1), (x2, y2) = edge_point(a, s_side, s_frac), edge_point(b, d_side, d_frac) + ar = base("arrow", id_, x1, y1, x2 - x1, y2 - y1, color, "transparent", dashed=dashed, sw=sw) + pts = [[0, 0], [x2 - x1, y2 - y1]] + if elbow == "vertical-first": + pts = [[0, 0], [0, y2 - y1], [x2 - x1, y2 - y1]] + elif elbow == "horizontal-first": + pts = [[0, 0], [x2 - x1, 0], [x2 - x1, y2 - y1]] + ar.update({"points": pts, + "startBinding": {"elementId": src, "focus": 0, "gap": 2}, + "endBinding": {"elementId": dst, "focus": 0, "gap": 2}, + "startArrowhead": "arrow" if both else None, "endArrowhead": "arrow", "boundElements": None}) + a["boundElements"].append({"id": id_, "type": "arrow"}) + b["boundElements"].append({"id": id_, "type": "arrow"}) + els.append(ar) + if label: + mx, my = (x1 + x2) / 2 + label_dx, (y1 + y2) / 2 + label_dy + lw = len(label) * 12 * 0.58 + els.append(text(id_ + "_l", mx - lw / 2, my, label, size=12, color=BODY, align="center", w=lw)) + + +def hline(id_: str, x: float, y: float, w: float, dashed=True) -> None: + ln = base("line", id_, x, y, w, 0, LINE, "transparent", dashed=dashed, sw=1) + ln.update({"points": [[0, 0], [w, 0]], "boundElements": None}) + els.append(ln) + + + + +def save(rel_path: str) -> str: + out = os.path.normpath(os.path.join(os.path.dirname(__file__), "..", "..", rel_path)) + doc = {"type": "excalidraw", "version": 2, "source": "oidm-knowledge/tools/diagrams", + "elements": els, "appState": {"viewBackgroundColor": "#ffffff", "gridSize": None}, "files": {}} + with open(out, "w") as fh: + json.dump(doc, fh, indent=1) + print("wrote", out, len(els), "elements") + return out diff --git a/tools/diagrams/render_excalidraw.py b/tools/diagrams/render_excalidraw.py new file mode 100644 index 0000000..ad40bc8 --- /dev/null +++ b/tools/diagrams/render_excalidraw.py @@ -0,0 +1,194 @@ +"""Render Excalidraw JSON to PNG using Playwright + headless Chromium. + +Usage: + cd .claude/skills/excalidraw-diagram/references + uv run python render_excalidraw.py [--output path.png] [--scale 2] [--width 1920] + +First-time setup: + cd .claude/skills/excalidraw-diagram/references + uv sync + uv run playwright install chromium +""" + +from __future__ import annotations + +import argparse +import json +import sys +from pathlib import Path + + +def validate_excalidraw(data: dict) -> list[str]: + """Validate Excalidraw JSON structure. Returns list of errors (empty = valid).""" + errors: list[str] = [] + + if data.get("type") != "excalidraw": + errors.append(f"Expected type 'excalidraw', got '{data.get('type')}'") + + if "elements" not in data: + errors.append("Missing 'elements' array") + elif not isinstance(data["elements"], list): + errors.append("'elements' must be an array") + elif len(data["elements"]) == 0: + errors.append("'elements' array is empty — nothing to render") + + return errors + + +def compute_bounding_box(elements: list[dict]) -> tuple[float, float, float, float]: + """Compute bounding box (min_x, min_y, max_x, max_y) across all elements.""" + min_x = float("inf") + min_y = float("inf") + max_x = float("-inf") + max_y = float("-inf") + + for el in elements: + if el.get("isDeleted"): + continue + x = el.get("x", 0) + y = el.get("y", 0) + w = el.get("width", 0) + h = el.get("height", 0) + + # For arrows/lines, points array defines the shape relative to x,y + if el.get("type") in ("arrow", "line") and "points" in el: + for px, py in el["points"]: + min_x = min(min_x, x + px) + min_y = min(min_y, y + py) + max_x = max(max_x, x + px) + max_y = max(max_y, y + py) + else: + min_x = min(min_x, x) + min_y = min(min_y, y) + max_x = max(max_x, x + abs(w)) + max_y = max(max_y, y + abs(h)) + + if min_x == float("inf"): + return (0, 0, 800, 600) + + return (min_x, min_y, max_x, max_y) + + +def render( + excalidraw_path: Path, + output_path: Path | None = None, + scale: int = 2, + max_width: int = 1920, + svg_out: Path | None = None, +) -> Path: + """Render an .excalidraw file to PNG. Returns the output PNG path.""" + # Import playwright here so validation errors show before import errors + try: + from playwright.sync_api import sync_playwright + except ImportError: + print("ERROR: playwright not installed.", file=sys.stderr) + print("Run: cd .claude/skills/excalidraw-diagram/references && uv sync && uv run playwright install chromium", file=sys.stderr) + sys.exit(1) + + # Read and validate + raw = excalidraw_path.read_text(encoding="utf-8") + try: + data = json.loads(raw) + except json.JSONDecodeError as e: + print(f"ERROR: Invalid JSON in {excalidraw_path}: {e}", file=sys.stderr) + sys.exit(1) + + errors = validate_excalidraw(data) + if errors: + print(f"ERROR: Invalid Excalidraw file:", file=sys.stderr) + for err in errors: + print(f" - {err}", file=sys.stderr) + sys.exit(1) + + # Compute viewport size from element bounding box + elements = [e for e in data["elements"] if not e.get("isDeleted")] + min_x, min_y, max_x, max_y = compute_bounding_box(elements) + padding = 80 + diagram_w = max_x - min_x + padding * 2 + diagram_h = max_y - min_y + padding * 2 + + # Cap viewport width, let height be natural + vp_width = min(int(diagram_w), max_width) + vp_height = max(int(diagram_h), 600) + + # Output path + if output_path is None: + output_path = excalidraw_path.with_suffix(".png") + + # Template path (same directory as this script) + template_path = Path(__file__).parent / "render_template.html" + if not template_path.exists(): + print(f"ERROR: Template not found at {template_path}", file=sys.stderr) + sys.exit(1) + + template_url = template_path.as_uri() + + with sync_playwright() as p: + try: + browser = p.chromium.launch(headless=True) + except Exception as e: + if "Executable doesn't exist" in str(e) or "browserType.launch" in str(e): + print("ERROR: Chromium not installed for Playwright.", file=sys.stderr) + print("Run: cd .claude/skills/excalidraw-diagram/references && uv run playwright install chromium", file=sys.stderr) + sys.exit(1) + raise + + page = browser.new_page( + viewport={"width": vp_width, "height": vp_height}, + device_scale_factor=scale, + ) + + # Load the template + page.goto(template_url) + + # Wait for the ES module to load (imports from esm.sh) + page.wait_for_function("window.__moduleReady === true", timeout=30000) + + # Inject the diagram data and render + json_str = json.dumps(data) + result = page.evaluate(f"window.renderDiagram({json_str})") + + if not result or not result.get("success"): + error_msg = result.get("error", "Unknown render error") if result else "renderDiagram returned null" + print(f"ERROR: Render failed: {error_msg}", file=sys.stderr) + browser.close() + sys.exit(1) + + # Wait for render completion signal + page.wait_for_function("window.__renderComplete === true", timeout=15000) + + # Screenshot the SVG element + svg_el = page.query_selector("#root svg") + if svg_el is None: + print("ERROR: No SVG element found after render.", file=sys.stderr) + browser.close() + sys.exit(1) + + svg_el.screenshot(path=str(output_path)) + if svg_out is not None: + svg_markup = svg_el.evaluate("el => el.outerHTML") + Path(svg_out).write_text(svg_markup, encoding="utf-8") + browser.close() + + return output_path + + +def main() -> None: + parser = argparse.ArgumentParser(description="Render Excalidraw JSON to PNG") + parser.add_argument("input", type=Path, help="Path to .excalidraw JSON file") + parser.add_argument("--output", "-o", type=Path, default=None, help="Output PNG path (default: same name with .png)") + parser.add_argument("--scale", "-s", type=int, default=2, help="Device scale factor (default: 2)") + parser.add_argument("--width", "-w", type=int, default=1920, help="Max viewport width (default: 1920)") + parser.add_argument("--svg", type=Path, default=None, help="Also write the rendered SVG markup to this path") + args = parser.parse_args() + + if not args.input.exists(): + print(f"ERROR: File not found: {args.input}", file=sys.stderr) + sys.exit(1) + + png_path = render(args.input, args.output, args.scale, args.width, svg_out=args.svg) + print(str(png_path)) + + +if __name__ == "__main__": + main() diff --git a/tools/diagrams/render_template.html b/tools/diagrams/render_template.html new file mode 100644 index 0000000..877e33d --- /dev/null +++ b/tools/diagrams/render_template.html @@ -0,0 +1,57 @@ + + + + + + + +
+ + + + From c672af6b48e3e6b141abfe8e416b7e6587097fc7 Mon Sep 17 00:00:00 2001 From: "Alkasab Agent (agent-dev)" Date: Mon, 21 Sep 2026 20:32:08 +0000 Subject: [PATCH 03/19] Disable the site deploy workflow until the generator is settled Co-Authored-By: Claude Fable 5.1 --- .github/workflows/site.yml | 10 +--------- 1 file changed, 1 insertion(+), 9 deletions(-) diff --git a/.github/workflows/site.yml b/.github/workflows/site.yml index 5956021..68d6f26 100644 --- a/.github/workflows/site.yml +++ b/.github/workflows/site.yml @@ -1,17 +1,9 @@ name: Deploy site +# Deploy is disabled until the site generator is settled; run manually if needed. on: - push: - branches: [main] - paths: - - "knowledge/**" - - "site/**" workflow_dispatch: -env: - # Kept in sync with QUARTZ_SHA in site/build.sh; only used here as a cache key. - QUARTZ_SHA: 97a2d05f80c4c50534959b1d0d41cc4b3895625e - permissions: contents: read pages: write From e32d5847a4bc7f434ca382909b8818aa4757ccee Mon Sep 17 00:00:00 2001 From: "Alkasab Agent (agent-dev)" Date: Tue, 22 Sep 2026 11:33:22 +0000 Subject: [PATCH 04/19] Tighten prose across the bundle and apply review fixes - Codex tightening pass over 112 documents, then a five-area review by Opus agents: 12 documents reverted, about 100 repaired where qualifiers, disclaimers, quoted source material, or rules were lost - Live links added to the application profiles; call-to-action vendor generalized; sub-taxonomies named per the project lead - Plans and idea inventories under docs/plans for the restructure around the project's ideas; review reports kept under sources/ Co-Authored-By: Claude Fable 5.1 --- .github/workflows/site.yml | 57 - CHANGELOG.md | 7 +- DEV_LOG.md | 7 + docs/plans/idea-inventory-semantic.md | 1970 +++++++++++++++++ .../idea-inventory-structures-and-uses.md | 926 ++++++++ docs/plans/lean-content-coverage.tsv | 134 ++ docs/plans/lean-content-full-review.md | 57 + docs/plans/lean-content-pass.md | 58 + docs/plans/repository-review.md | 64 + .../plans/restructure-around-project-ideas.md | 111 + docs/plans/restructure-joint-notes.md | 36 + .../finding-and-location-coding.md | 46 +- knowledge/applications/finding-model-forge.md | 38 +- knowledge/applications/finding-models-site.md | 28 +- .../imaging-problem-list-viewer.md | 46 +- knowledge/applications/index.md | 16 +- knowledge/applications/ipl-mvp-extraction.md | 32 +- .../report-extraction-platform.md | 58 +- knowledge/applications/reporting-sdk.md | 36 +- .../anatomic-location-assignment-rules.md | 6 +- .../data-structures/exam-finding-list.md | 32 +- knowledge/data-structures/fhir-mapping.md | 20 +- knowledge/data-structures/hierarchy.md | 24 +- .../data-structures/ihe-idr-alignment.md | 20 +- knowledge/data-structures/imaging-persona.md | 20 +- .../data-structures/imaging-problem-list.md | 50 +- knowledge/data-structures/index.md | 14 +- knowledge/data-structures/observation.md | 32 +- knowledge/data-structures/sample-data.md | 18 +- .../technical-imaging-findings.md | 6 +- knowledge/glossary/anatomic-location.md | 6 +- knowledge/glossary/anatomic-scope.md | 4 +- knowledge/glossary/assessment-scheme.md | 6 +- knowledge/glossary/attribute-value.md | 2 +- knowledge/glossary/attribute.md | 6 +- knowledge/glossary/body-region.md | 4 +- knowledge/glossary/cde-element.md | 6 +- .../glossary/cde-labeled-fhir-observation.md | 6 +- knowledge/glossary/cde-set.md | 6 +- knowledge/glossary/cde.md | 4 +- knowledge/glossary/change-from-prior.md | 6 +- knowledge/glossary/coding.md | 4 +- .../glossary/contained-by-and-part-of.md | 6 +- knowledge/glossary/contributor.md | 4 +- knowledge/glossary/data-element.md | 8 +- knowledge/glossary/element-binding.md | 8 +- knowledge/glossary/exam-finding-list.md | 4 +- knowledge/glossary/exam-type.md | 10 +- knowledge/glossary/extraction.md | 10 +- knowledge/glossary/fhir-condition.md | 8 +- knowledge/glossary/fhir-diagnostic-report.md | 8 +- knowledge/glossary/finding-class.md | 6 +- knowledge/glossary/finding-taxonomy.md | 6 +- knowledge/glossary/fma.md | 4 +- knowledge/glossary/gamuts.md | 8 +- .../glossary/imaging-diagnostic-report.md | 6 +- knowledge/glossary/index-code.md | 10 +- knowledge/glossary/index.md | 2 +- knowledge/glossary/laterality.md | 6 +- .../glossary/loinc-rsna-radiology-playbook.md | 4 +- knowledge/glossary/loinc.md | 4 +- knowledge/glossary/observation.md | 4 +- knowledge/glossary/oifm.md | 4 +- knowledge/glossary/presence.md | 8 +- knowledge/glossary/provenance.md | 10 +- knowledge/glossary/radelement.md | 4 +- knowledge/glossary/radlex.md | 2 +- knowledge/glossary/snomed-ct.md | 6 +- knowledge/glossary/tag.md | 6 +- knowledge/glossary/technical-finding.md | 4 +- knowledge/glossary/umls.md | 10 +- knowledge/guides/authoring-guide.md | 25 +- knowledge/guides/migration-ledger.md | 4 +- knowledge/history/cde-template-rendering.md | 22 +- knowledge/history/extraction-approaches.md | 32 +- knowledge/history/index.md | 12 +- knowledge/history/lineage-repositories.md | 26 +- knowledge/history/site-articles.md | 18 +- knowledge/history/timeline.md | 6 +- knowledge/history/use-cases.md | 12 +- knowledge/index.md | 2 +- knowledge/log.md | 1 + knowledge/overview/architecture.md | 34 +- knowledge/overview/getting-involved.md | 38 +- knowledge/overview/vision.md | 42 +- knowledge/overview/what-is-oidm.md | 36 +- .../2026-09-20-knowledgebase-build-plan.md | 32 +- .../anatomic-location-json-schema.md | 16 +- .../references/cde-schema-differences.md | 16 +- knowledge/references/finding-model-schema.md | 12 +- knowledge/references/index.md | 8 +- .../oifm-metadata-fields-extract.md | 6 +- knowledge/references/oifm-overview-extract.md | 6 +- knowledge/references/status-update-2026-01.md | 6 +- knowledge/repositories/index.md | 4 +- knowledge/repositories/repository-map.md | 22 +- .../roadmap/anatomic-locations-and-radlex.md | 24 +- knowledge/roadmap/exam-types.md | 14 +- .../finding-model-content-direction.md | 12 +- .../roadmap/finding-model-format-evolution.md | 20 +- knowledge/roadmap/index.md | 14 +- knowledge/roadmap/ipl-data-model-system.md | 14 +- knowledge/roadmap/open-questions.md | 4 +- knowledge/roadmap/roadmap-2026.md | 14 +- .../anatomic-locations/data-model.md | 12 +- .../anatomic-locations/index.md | 12 +- .../laterality-conventions.md | 14 +- .../lineage-and-current-implementation.md | 10 +- .../anatomic-locations/radlex-integration.md | 22 +- .../anatomic-locations/tooling.md | 16 +- .../why-anatomic-locations.md | 20 +- .../common-data-elements/cde-staging.md | 26 +- .../cdes-and-radelement.md | 16 +- .../common-data-elements/index.md | 4 +- .../exam-types/overview.md | 2 +- .../finding-models/authoring-workflow.md | 16 +- .../finding-models/content-catalog.md | 18 +- .../finding-models/enrichment-pipeline.md | 16 +- .../finding-models/finding-model-format.md | 14 +- .../finding-models/finding-taxonomies.md | 18 +- .../finding-models/identifiers.md | 16 +- .../finding-models/index.md | 12 +- .../finding-models/why-finding-models.md | 34 +- knowledge/semantic-foundation/index.md | 11 +- .../terminologies/index.md | 6 +- .../terminologies/med-ontology-lookup.md | 18 +- .../terminologies/ontologies-used.md | 10 +- site/publish-tigris.sh | 41 - tools/flatten_site_links.py | 145 -- 129 files changed, 4223 insertions(+), 1069 deletions(-) delete mode 100644 .github/workflows/site.yml create mode 100644 docs/plans/idea-inventory-semantic.md create mode 100644 docs/plans/idea-inventory-structures-and-uses.md create mode 100644 docs/plans/lean-content-coverage.tsv create mode 100644 docs/plans/lean-content-full-review.md create mode 100644 docs/plans/lean-content-pass.md create mode 100644 docs/plans/repository-review.md create mode 100644 docs/plans/restructure-around-project-ideas.md create mode 100644 docs/plans/restructure-joint-notes.md delete mode 100644 site/publish-tigris.sh delete mode 100644 tools/flatten_site_links.py diff --git a/.github/workflows/site.yml b/.github/workflows/site.yml deleted file mode 100644 index 68d6f26..0000000 --- a/.github/workflows/site.yml +++ /dev/null @@ -1,57 +0,0 @@ -name: Deploy site - -# Deploy is disabled until the site generator is settled; run manually if needed. -on: - workflow_dispatch: - -permissions: - contents: read - pages: write - id-token: write - -# Only one deploy at a time; let an in-flight run finish rather than cancelling it. -concurrency: - group: pages - cancel-in-progress: false - -jobs: - build: - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v4 - - - uses: actions/setup-node@v4 - with: - node-version: 24 - - - name: Cache npm - uses: actions/cache@v4 - with: - path: ~/.npm - key: ${{ runner.os }}-npm-${{ env.QUARTZ_SHA }} - restore-keys: | - ${{ runner.os }}-npm- - - # Drives the exact same script a contributor runs locally, so CI and - # local builds can't drift apart. See site/build.sh and site/README.md. - - name: Build site - run: bash site/build.sh - - - uses: actions/configure-pages@v5 - - - uses: actions/upload-pages-artifact@v3 - with: - path: public - - deploy: - needs: build - runs-on: ubuntu-latest - permissions: - pages: write - id-token: write - environment: - name: github-pages - url: ${{ steps.deployment.outputs.page_url }} - steps: - - id: deployment - uses: actions/deploy-pages@v4 diff --git a/CHANGELOG.md b/CHANGELOG.md index eae2643..582f0bd 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,10 +4,15 @@ All notable reader-facing changes to this knowledgebase. Format follows [Keep a ## [Unreleased] +### Changed + +- Tightened 112 knowledge pages and their navigation descriptions, reducing repetition while preserving examples and source extracts; a five-part review then restored qualifiers, disclaimers, and quoted source material the tightening had dropped, and reverted twelve pages. +- Diagrams are Excalidraw-rendered SVGs composed for the text column, with click-to-zoom on the site; Mermaid is no longer used. + ### Added - First full draft of the knowledgebase: 115 documents in OKF 0.2 covering the overview and vision, a 48-term glossary, the semantic foundation (finding models, common data elements, anatomic locations, exam types, terminologies), the data structures (Observation, Exam Finding List, Imaging Problem List, Imaging Persona, FHIR and IHE alignment), the applications, the roadmap and open questions, project history, a repository map, and verbatim reference extracts. - Authoring guide, contributing guide, and migration ledger recording every document migrated from a working repository. - Two validation gates (OKF 0.2 conformance and house rules) run in continuous integration. -- Rendered site built with Quartz and deployed to GitHub Pages, with frontmatter badges showing each document's type, status, provenance, and verification. +- Rendered site built with Quartz and hosted on Cloudflare (dev, staging, and production targets), with frontmatter badges showing each document's type, status, provenance, and verification. - All documents are status draft pending the project lead's verification. diff --git a/DEV_LOG.md b/DEV_LOG.md index ccecfbe..90d5117 100644 --- a/DEV_LOG.md +++ b/DEV_LOG.md @@ -27,3 +27,10 @@ Engineering narrative for the oidm-knowledge repository: decisions, blockers, an - Site: Quartz assumes a host that rewrites clean URLs; the bucket does not. A Starlight spike (file-style output, site-graph plugin for graph and backlinks) is running in the scratchpad; the choice of generator goes to the project lead for review before anything changes. New rule recorded: every tool selection is reviewed with the project lead first. - Sources: the project lead added seven manuscript and deck files to the bucket folder oidm-knowledge-sources; an agent is extracting and summarizing them into the gitignored `sources/bucket/`. - Repository review: both validators pass (115 concepts, zero errors or warnings), and the Quartz build succeeds for all 133 Markdown files. All concepts remain unverified drafts. Source inventories now exist for the imported manuscripts/decks and 15 Excalidraw canvases; integration remains outstanding. Recorded publishing workflow gaps, source-watching behavior, documentation discrepancies, and the absence of a configured Git remote in `docs/plans/repository-review.md`. Review only; no publishing or commits. +- Concurrent editing: a Codex session is rewriting bundle documents in this working tree (112 documents, generated.by set to codex/gpt-6, prose tightened, descriptions changed, no warnings remaining after reconciliation). Per the project lead, that run proceeds first; structure and index reconciliation follow once it finishes. Rule for this session: never overwrite a document whose generated.by is another agent's. +- Verification tooling added: `task verify -- ` stamps a human verified entry and status stable; `task review-status` and `task review-list -- ` report progress. The project lead starts verification on the stable areas (glossary, history, references, semantic foundation). +- Remote created at github.com/openimagingdata/oidm-knowledge (public); the deploy workflow is disabled; a local pre-push guard blocks agent pushes of main, so the project lead pushes. +- Editorial pass completed with three sub-agents using pstack `unslop` and `technical-writing`: 18 concepts shortened from 21,186 to 15,732 body words (25.7%). Synchronized index descriptions and retained examples, citations, and draft status. Cross-review restored qualifications lost during shortening. Scope and verification are recorded in `docs/plans/lean-content-pass.md`; no publishing or commits by this session. +- Hosting decided by the project lead: a Cloudflare static site, extensible with Workers. Set up as an assets-only Worker (`site/wrangler.jsonc`, html_handling auto-trailing-slash, which matches Quartz's clean-URL links natively). Quartz stays the generator on maturity grounds after a survey of wiki and knowledge-graph tools found nothing else both mature and maintained; typed-edge graph is a plugin to write later. Retired the object-storage pipeline (link flattener, bucket publish script, GitHub Pages workflow) in favor of `task deploy` and `.github/workflows/deploy.yml` (cloudflare/wrangler-action; needs CLOUDFLARE_API_TOKEN and CLOUDFLARE_ACCOUNT_ID secrets). First deploy waits on the project lead's `wrangler login`. +- First Cloudflare deploy: https://oidm-knowledge-dev.talkasab.workers.dev, verified in a browser (clean URLs, sidebar, search, SVG diagrams, no console errors). Targets: dev (default), staging, prod as separate Workers via wrangler environments; `SITE_BASE_URL` sets Quartz's baseUrl per target at build time. The push-to-main workflow deploys to staging; production is a deliberate `task deploy:prod`. +- Full editorial review completed after the project lead rejected the initial 18-page cutoff. Three agents and the main editor read the remaining 97 concepts, all 17 indexes, and the historical bundle log; 94 further concepts changed, with three concise glossary references retained. Across both passes, concept bodies total 108,656 → 94,944 words (12.6% reduction at the review snapshot). Cross-review restored technical constraints and checked the element-binding quotation against its pinned source. Coverage and unchanged-page reasons are in `docs/plans/lean-content-coverage.tsv`; results and count methodology are in `docs/plans/lean-content-full-review.md`. Both validators pass with zero errors or warnings, and whitespace checks pass. Concurrent hosting/tooling work was preserved; no commits or publication by this session. diff --git a/docs/plans/idea-inventory-semantic.md b/docs/plans/idea-inventory-semantic.md new file mode 100644 index 0000000..7bb9eb0 --- /dev/null +++ b/docs/plans/idea-inventory-semantic.md @@ -0,0 +1,1970 @@ +# Idea inventory: the semantic ideas + +Step 1 of [restructure-around-project-ideas.md](restructure-around-project-ideas.md), Claude side. +Area: finding models and their relationship to ACR/RSNA common data elements; anatomic locations +and their relationship to RadLex; exam types; the terminologies underneath. + +This is a working inventory, not a draft of any page. It records distinct ideas the team has +expressed or demonstrated, with pinned evidence. It does not reconcile disagreements and does not +supply motivation the sources do not state. + +## How to read an entry + +**Status** is one of *stated goal*, *working proposal*, or *implemented example*. One idea can carry +several. + +**Implemented** says what the code or content actually does about the idea, in the idea's own terms, +with a pointer. It does not reproduce install steps, usage documentation, or schemas. + +**Evidence** names the specific document, prompt, skill, or data file and what it says. Prompts are +primary sources: they are where the team's operational definitions are written down and enforced. +Pointers take the form `path @ branch commit`. Manuscripts under peer review are paraphrased, never +quoted, and are not treated as accepted fact; their reviewer correspondence was not read. People are +not named; organizations and roles are. + +## Commit pins + +| Repository | Branch | Commit | +|---|---|---| +| `findingmodel` | `main` | `75afd39` | +| `findingmodel` | `dev` | `504a42a` | +| `findingmodel` | `feature/metadata-cleanup` | `1942b06` | +| `findingmodels` | `main` | `4475ac1` | +| `findingmodels` | `taxonomy-export-2026-08-15` | `a30c3c9` | +| `findingmodels` | `content/chestcts` | `0472a46` | +| `findingmodels` | `findingmodels-metadata` | `dcc6c4c` | +| `ACR-RSNA-CDEs` | `next-gen-2026` | `44836c1` | +| `CDEStaging` | `main` | `b814a10` | +| `anatomiclocations.org` | `main` | `1f39fa4` | +| `anatomiclocations.org` | `content_work` | `35624d7` | +| `BodyPartIndex.py` | `main` | `388ae0a` | +| `BodyPartIndex.ts` | `main` | `dec578e` | +| `RadLex` | `main` | `13a5abe` | +| `RadLex` | `experiment/kg-radlex-parsing` | `5162a65` | +| `med-ontology-lookup` | `main` | `a1fd3ae` | +| `med-ontology-lookup` | `issue-3-typed-provider-failures` | `9cc3eec` | +| `med-ontology-lookup` | `docs/reviewed-proposal-backlog` | `f059792` | + +Non-repository sources: the Anatomic Locations Index manuscript under review at JDIM +(`sources/bucket/text/jdim-02183.md`, manuscript body pages 3 to 17 only); the SIIM Enterprise +Imaging webinar of 15 July 2026 (`sources/bucket/text/ipl-webinar-deck.md`); the Next Gen Object +Oriented Reporting Schema deck of 15 September 2026 (`sources/bucket/REPORT.md` §6); fifteen +Excalidraw boards (`sources/excalidraw-diagrams.md`); the project lead's goals recorded in +`knowledge/plans/2026-09-20-knowledgebase-build-plan.md`. + +--- + +# A. What a finding model is + +## A1. Finding model + +**Idea.** A finding model is "a structured, machine-readable definition of an observation a +radiologist would name in a report." The library of models is framed not as a label set but as the +knowledge base that lets downstream systems turn unstructured report text into structured +observation objects, each tagged with the finding type and its attribute values. Two guiding +principles are stated together: a finding is a noun phrase and everything else is an attribute; and +findings exist in time, because a report is a snapshot while the findings it describes persist +across exams. + +**Status.** Implemented example, with the rationale stated. + +**Implemented.** Two model classes with the same docstring express the authoring lifecycle: a base +model carrying name, description, synonyms, tags and attributes with no identifiers, and a full +model adding the finding identifier, per-attribute identifiers, per-value codes, index codes, +anatomic locations and contributors. An abstract protocol names the surface both share. +`packages/findingmodel/src/findingmodel/finding_model.py @ main 75afd39`; +`packages/findingmodel/src/findingmodel/abstract_finding_model.py @ main 75afd39`. + +**Evidence.** +- The `core_concept.md` prompt fragment, "What a finding model is" and "Two guiding principles" — + the definition, the noun-phrase principle, and the findings-exist-in-time argument that justifies + a change-from-prior attribute on every model. + `prompts/fragments/core_concept.md @ taxonomy-export-2026-08-15 a30c3c9` +- The "Finding Models: Overview" authoring document, "Why Finding Models Exist" — the report to + observation to downstream pipeline, and the claim that the definitions carry meaning rather than + names. `notes/oifm-overview.md @ next-gen-2026 44836c1` (a verbatim copy of the upstream + `prompts/overview.md`). +- The "Finding Model Schema" document, "Main Finding Model Object" — required identifier, name, + description and attributes; optional synonyms, tags, contributors and index codes. + `schema/finding_model_schema.md @ taxonomy-export-2026-08-15 a30c3c9` +- The "OIFM Repo" Excalidraw board, handwritten explainer panel — the team's own plain-language + framing: "Writing the dictionary to translate from radiologist language to computer-speak and + back." `sources/excalidraw-diagrams.md` + +**Related.** A2, A3, A5, A6, A9, B1. + +**Disagreements.** Naming differs across the allied work: *finding model / attribute / value* in the +finding model documents, *FindingClass / DataElement / Value* in the next-generation vocabulary, +*Finding / Attribute* in an earlier committee-facing deck. The rename decision and the table of who +said what are recorded in "Next-Generation CDE Schema: Current Understanding" §6 +(`docs/next-gen-schema/00-current-understanding.md @ next-gen-2026 44836c1`). + +**Undetermined.** Whether one vocabulary absorbs the other. Issue F of that same document states the +open alternatives and does not choose. + +--- + +## A2. What counts as a finding + +**Idea.** The boundary is drawn by a test: would a radiologist write "there is [X]" or "no [X]" as a +standalone statement? Findings include pathology, physiologic observations, devices and hardware, +postsurgical states, anatomic variants, image-quality observations, and diagnoses. What is excluded +is enumerated just as carefully: a state of a finding ("stable cardiac silhouette"), a qualified +version of another finding ("large pleural effusion"), normal anatomy, radiographic signs and +interpretation techniques ("silhouette sign", "double density sign", "air-fluid level"), and exam +metadata, history or recommendations. A generic descriptor can become a finding when anatomic +context makes it reportable on its own: "air-fluid level" is not a finding, "air-fluid levels in +bowel" is. + +**Status.** Stated as doctrine in prompts; enforced as a review checklist item, not by code. + +**Implemented.** The quality-review checklist opens with the noun-phrase and level-of-abstraction +checks, and the review skill runs that checklist against one file at a time. +`prompts/fragments/quality_checklist.md @ taxonomy-export-2026-08-15 a30c3c9`; +`.claude/skills/finding-review/SKILL.md @ taxonomy-export-2026-08-15 a30c3c9`. + +**Evidence.** +- The `core_concept.md` fragment, "What counts as a finding" and "What is NOT a finding" — the six + inclusion categories and the five exclusion categories, with the air-fluid-level boundary case. + `prompts/fragments/core_concept.md @ taxonomy-export-2026-08-15 a30c3c9` +- The "Finding Models: Overview" document, "The 'Would a radiologist report it?' Test" — the same + test with worked yes and no cases. `notes/oifm-overview.md @ next-gen-2026 44836c1` +- The "Open Imaging Finding Models" Excalidraw board, box "Finding Model Rules" — an earlier draft + of the same guidance, adding two rules the current fragments do not state in those words: avoid + "associated findings" where a related finding is clinically distinct, and consider splitting + clearly distinguishable sub-types into separate models. `sources/excalidraw-diagrams.md` + +**Related.** A1, A3, A4, A5, B7. + +**Disagreements.** The board's sub-type rule (split solid from part-solid pulmonary nodule) sits +against the next-generation vocabulary's stated presumption to lean toward the general class with +location carried separately, which "What the Vocabulary Must Express" §2.4 calls "the +highest-frequency modelling decision in the corpus" and records as unresolved. +`docs/next-gen-schema/01-what-the-vocabulary-must-express.md @ next-gen-2026 44836c1` + +**Undetermined.** Whether the board rules were superseded deliberately. The board is undated in the +transcription. + +--- + +## A3. Specificity, splitting, and the right level of abstraction + +**Idea.** Three related questions are answered by one document: is this one finding or several; is +this subtype a value on the parent or its own model; is this name at the right level. Compound names +joining two entities split when one part can be present while the other is absent. A subtype becomes +its own model when it is a fundamentally distinct observation rather than the same observation with +a qualifier, with a practical signal offered: you would need different attributes to describe it. +"Tension pneumothorax" is not "pneumothorax, type: tension" because it has its own signs and its own +management implications. A descriptor plus entity earns its own model when the combined phrase +carries meaning beyond the sum of its parts: "calcified nodule" implies a benign fully calcified +lesion while "nodule with calcifications" implies one that may still warrant follow-up. Findings at +several levels may coexist when radiologists report at both. + +**Status.** Stated as authoring doctrine; applied by judgment. + +**Implemented.** The review sub-agent returns extraction candidates naming the exact attributes that +should become their own model, and those candidates are recorded rather than auto-applied. +`.claude/skills/finding-review/SKILL.md @ taxonomy-export-2026-08-15 a30c3c9`, steps 4 and 5. + +**Evidence.** +- The `scope_and_specificity.md` fragment — the compound-splitting test, the subtype decision + question, the descriptor-plus-entity test, and the too-broad / too-narrow / right-level worked + lists. `prompts/fragments/scope_and_specificity.md @ taxonomy-export-2026-08-15 a30c3c9` +- The "Finding Models: Overview" document, "Specificity and Scope" — the same material in the + upstream authoring guidance. `notes/oifm-overview.md @ next-gen-2026 44836c1` + +**Related.** A2, A4, A7, B7. + +**Disagreements.** None within the finding model documents. + +--- + +## A4. Negative assertion as a first-class finding + +**Idea.** "No fracture" and "the upper abdomen is unremarkable" are active observations of absence, +so the library deliberately carries broad scoped findings such as "chest wall fracture" and "upper +abdominal abnormality" purely so that absence can be asserted against something. The scope of such a +finding is set by what is assessable on an exam: "fracture" is too broad because it spans the whole +body, "chest wall fracture" is right for a chest radiograph, "upper abdominal abnormality" is right +for a chest CT because the upper abdomen is in the field of view. + +**Status.** Stated as an authoring rule; implemented in every model's first attribute; reappears as +a structural requirement in the next-generation vocabulary. + +**Implemented.** Every model carries `presence` as its first attribute with the four values absent, +present, indeterminate and unknown, and the creation script emits it unconditionally. Any source +offering only yes/no or bare present/absent is upgraded to the full four-value set. +`prompts/fragments/presence_and_change.md @ taxonomy-export-2026-08-15 a30c3c9`; +`packages/findingmodel/src/findingmodel/create_stub.py @ main 75afd39`. + +**Evidence.** +- The `scope_and_specificity.md` fragment, "Findings must cover negative assertions" and "Scoped + broad findings (for 'no X' assertions)" — the rule and the two worked names. + `prompts/fragments/scope_and_specificity.md @ taxonomy-export-2026-08-15 a30c3c9` +- "What the Vocabulary Must Express" §1 — why a finding class must be a term rather than a set of + actual lesions, so that an observation carrying `presence: absent` is not pointing at a nodule + that does not exist; and §5, where `grouping` is dropped as a classification value and returns as + a narrow node type for negative-only nodes such as "renal abnormality". + `docs/next-gen-schema/01-what-the-vocabulary-must-express.md @ next-gen-2026 44836c1` +- The SIIM webinar worked Exam Finding List — a pertinent negative, "no filling defect to suggest + pulmonary embolism," coded as present/absent rather than omitted. + `sources/bucket/text/ipl-webinar-deck.md` + +**Related.** A2, A5, B5, C1. + +**Disagreements.** Whether negation propagates down the finding hierarchy is open. "Current +Understanding" Issue A records the motivating case and states the three conditions it depends on, +including a closed-world assumption that the radiologist actually assessed everything beneath the +class. `docs/next-gen-schema/00-current-understanding.md @ next-gen-2026 44836c1` + +--- + +## A5. Description and diagnosis both count + +**Idea.** Radiologists both describe what they see and name what they conclude, and the team models +what radiologists actually say rather than what a cleaner ontology would prefer. The authoring +guidance is explicit that diagnostic terms are first-class findings and instructs authors not to +question whether a diagnosis "should" be one. + +**Status.** Stated as an authoring rule; implemented as data in two different ways. + +**Implemented.** In the exam-oriented sub-taxonomies the distinction is a column, `finding_type`, +separating an observation from a diagnosis on every row; the CT head list types 261 rows observation +and 222 diagnosis, the CT chest/abdomen/pelvis list 1,371 and 448. +`lists/README.md @ taxonomy-export-2026-08-15 a30c3c9`. In the metadata work it becomes a model-level +enumeration, `entity_type`, whose assignment prompt draws the line: diagnosis for named diseases, +disorders, injuries, complications, syndromes and disease entities; finding for broad observations, +descriptive lesions, morphology, enhancement patterns, effusions and umbrella abnormality labels. +`packages/findingmodel-ai/src/findingmodel_ai/metadata/prompts/entity_type.md @ feature/metadata-cleanup 1942b06`. + +**Evidence.** +- The `core_concept.md` fragment, "What counts as a finding" — diagnoses listed with the + instruction "Do not question whether a diagnosis 'should' be a finding." + `prompts/fragments/core_concept.md @ taxonomy-export-2026-08-15 a30c3c9` +- The `entity_type.md` assignment prompt — the operational rule set, including that source tags are + weak context and must not alone determine the type, and that negative findings, artifacts, + assessments and recommendations must not be converted into diseases merely because they imply + clinical consequences. + `packages/findingmodel-ai/src/findingmodel_ai/metadata/prompts/entity_type.md @ feature/metadata-cleanup 1942b06` +- "What the Vocabulary Must Express" §1 and §5 — the finding and diagnosis definitions taken over + from the finding model guidance unchanged, with the observation that the classification is of the + term as used, not of the bodily state. + `docs/next-gen-schema/01-what-the-vocabulary-must-express.md @ next-gen-2026 44836c1` + +**Related.** A1, A9, B5. + +**Disagreements.** Three positions coexist. The finding model corpus keeps finding and diagnosis as +values of one field on one kind of object. The next-generation vocabulary makes Diagnosis a separate +node type while keeping one taxonomy that crosses the labels, with the "X without Y" test as the +subsumption criterion ("empyema without effusion" is not a sentence, so empyema is a subtype of +pleural effusion across the label boundary). An external reviewer's alpha implementation declares +the two disjoint in OWL, with probes that expect a finding which is also a diagnosis to be +unsatisfiable. The comparison document records this as decision area ST03, to be worked through +rather than settled. `docs/next-gen-schema/07-relationship-family.md` §2 and +`docs/next-gen-schema/12-alpha-structural-comparison.md` §3 @ `next-gen-2026 44836c1`. Separately, +the profile of the exam-oriented sub-taxonomies notes that no diagnosis is ever placed under an +observation in those files, which the unrestricted taxonomy would change, and marks it "worth +raising with the author". `notes/hood-taxonomies-profile-2026-09-01.md @ next-gen-2026 44836c1` + +--- + +## A6. Presence and change from prior + +**Idea.** Every finding model carries two standard attributes first and in order: presence, then +change from prior. Change from prior is not a single vocabulary but a minimum set (unchanged, +stable, new, resolved) plus at least one clinically appropriate direction-of-change pair, and the +instruction is to include every descriptor a radiologist might reach for rather than the single best +one, because "over-inclusion is cheap; under-inclusion causes missed matches." A pleural effusion can +be described as larger, increased, or worsened, so all three pairs go in. Categories that cannot +change that way get the minimum set only: devices and hardware, congenital variants, postsurgical +states, and technique observations. Individual pairs are dropped where they make no sense even when +others apply, so a fracture can be new, resolved or unchanged but does not get larger. + +**Status.** Implemented example, with the rationale stated. + +**Implemented.** The creation script emits the minimum set by default and takes direction pairs as an +explicit opt-in flag per model or per batch entry; it also strips the awkward leading article from +the generated attribute description. The quality-review step then confirms the pair choice, and a +separate script modifies pairs after the fact. +`prompts/fragments/presence_and_change.md @ taxonomy-export-2026-08-15 a30c3c9`, "What the create +script does, and what review must catch". + +**Evidence.** +- The `presence_and_change.md` fragment — the two required attributes and their order, the four + presence values, the three direction pairs with the finding categories each suits, the exclusion + categories, and a grammar section governing the attribute description (plural verbs for plural + nouns, article agreement, no article for mass nouns). + `prompts/fragments/presence_and_change.md @ taxonomy-export-2026-08-15 a30c3c9` +- The `core_concept.md` fragment, "Findings exist in time" — the temporal justification for + requiring change from prior on every model. + `prompts/fragments/core_concept.md @ taxonomy-export-2026-08-15 a30c3c9` +- The "Open Imaging Finding Models: Pipeline and Repo" flowchart on the "OIFM Repo" board — the + same two attributes, plus optional location and size, as the defining shape of a stub. + `sources/excalidraw-diagrams.md` + +**Related.** A1, A4, A8, A12. + +**Disagreements.** The upstream-proposals document records that the library's own stub creator +emitted all eight change-from-prior values unconditionally and generated an awkward description, that +12 of 14 models in a head-CT test batch had their pairs winnowed by review, and that every one had +the article flagged; it proposes inverting the default. This is a recorded defect in the library, not +a dispute about the rule. `docs/plans/findingmodel-upstream-proposals.md @ taxonomy-export-2026-08-15 a30c3c9`, item B1. + +--- + +## A7. Synonyms as the matching surface + +**Idea.** Synonyms are how unstructured report text reaches a model, so the instruction is to be +aggressive about collecting them: formal and informal forms, acronyms, eponyms, brand names, +spelling variants, plurals, and common report phrasings such as "air under the diaphragm" for +pneumoperitoneum. The strictness rule is the counterweight: every synonym must mean the exact same +thing at the same level of specificity, because "a bad synonym doesn't just fail to match — it +matches the *wrong thing*." Subtypes are never synonyms. A taxonomy of traps is given: sign versus +disease (Kerley B lines are not interstitial pulmonary edema), consequence versus cause, different +pathophysiology (ventricular hypertrophy is not enlargement), different procedure (kyphoplasty is +not vertebroplasty), device subtype, and wrong anatomic scope. + +**Status.** Implemented example (the rule is enforced procedurally at authoring time). + +**Implemented.** Two checks run before a synonym is added. A collision check searches the corpus and +branches three ways: the term already sits on a model meaning the same thing, which signals a +possible duplicate model and is flagged rather than merged; the term sits on a model meaning +something different, in which case it is added to neither and the ambiguity is flagged; or it is not +found, and is safe. A pre-emptive cross-body-region check then asks whether the term is canonical for +a different finding elsewhere even if the corpus does not yet contain that model, with follicular +cyst, cavernous hemangioma, adenoma, carcinoid and nodule named as traps. +`prompts/fragments/synonym_rules.md @ taxonomy-export-2026-08-15 a30c3c9`. + +**Evidence.** +- The `synonym_rules.md` fragment — the aggressiveness instruction, the same-meaning-same-specificity + test, the nine-row trap taxonomy, the collision procedure, and the cross-body-region check. + `prompts/fragments/synonym_rules.md @ taxonomy-export-2026-08-15 a30c3c9` +- The `naming.md` fragment, "When to keep the unscoped short form as a synonym" — the rule that + generic imaging descriptors such as hypoattenuation, enhancement, calcification, lucency and + sclerosis fail the test because context does not reliably disambiguate them at the language-model + layer. `prompts/fragments/naming.md @ taxonomy-export-2026-08-15 a30c3c9` + +**Related.** A1, A8, E2. + +**Disagreements.** None recorded. + +--- + +## A8. Naming conventions + +**Idea.** Names are lowercase with spaces, acronyms expanded with the acronym kept as a synonym, +eponyms minimized, brand names replaced by the generic term. A name must be self-describing enough +that someone scanning thousands of models can tell what each is about, which means an anatomic +anchor: "pulmonary linear opacity" not "linear opacity". The anchor must be real anatomy rather than +a generic tissue-type modifier, because "parenchymal", "cortical", "stromal" and "medullary" are +ambiguous across organs. Names carry no parenthetical qualifiers, no population qualifiers, no "with" +clauses embedding an associated finding, and no comma lists; slashes are handled by type, splitting +genuinely different findings, converting locations or severities into an attribute, and demoting +truly interchangeable terms to synonyms. + +**Status.** Implemented for models the project authored; not yet true of imported content. + +**Implemented.** A deterministic linter checks underscores, lowercase, self-synonyms and the rest, +labelling each hit an error (definitely wrong, auto-fixable), a warning (needs human confirmation), +or a review item (needs language-model judgment). Filenames are derived mechanically from the name, +and the rule that a name producing consecutive underscores must be simplified is a naming rule +justified by that derivation. +`prompts/fragments/mechanical_lint.md` and `prompts/fragments/naming.md @ taxonomy-export-2026-08-15 a30c3c9`. + +**Evidence.** +- The `naming.md` fragment — casing, canonical forms with worked substitutions, the self-describing + rule with the tissue-modifier trap, the conciseness rules, and the slash typology. + `prompts/fragments/naming.md @ taxonomy-export-2026-08-15 a30c3c9` +- The "Definition Cleanup Plan" — nine mechanical defect classes traceable to imported content, + including title case on common-data-element and institutional models, "with" clauses, and + population qualifiers such as "cerebellar mass in a child", each with worked examples. + `docs/plans/definition_cleanup.md @ taxonomy-export-2026-08-15 a30c3c9` + +**Related.** A7, A11, B12. + +**Disagreements.** None on the rules. The cleanup plan's own corpus counts disagree with the +identifier registry shipped in the same tree, because the plan was written at an earlier commit. + +--- + +## A9. Assessment schemes modeled apart from what they assess + +**Idea.** A scoring system is a valid finding model but a different model from the observation it +scores. A pulmonary nodule model captures what the nodule looks like; a Lung-RADS model captures the +risk category assigned to it. The stated reason is that different radiologists can describe the same +nodule identically and assign different categories, so systems need to reason about the two +independently. Measurement groupings are also valid findings, where "the 'finding' is the act of +performing a structured quantitative assessment, and the attributes are the measurements within it." + +**Status.** Stated as an authoring rule; implemented as a metadata value; extended into a node type +in the next-generation vocabulary. + +**Implemented.** `assessment` is a value of the entity-type enumeration, and its assignment prompt +defines it as a score, grading scale, classification, reporting category, or grouped +measurement-and-interpretation package, distinct from `measurement`, which is one quantitative +metric. +`packages/findingmodel-ai/src/findingmodel_ai/metadata/prompts/entity_type.md @ feature/metadata-cleanup 1942b06`. + +**Evidence.** +- The `scope_and_specificity.md` fragment, "Scoring systems and structured assessments are valid + findings" — the rule with its stated reason, and the measurement-grouping paragraph. + `prompts/fragments/scope_and_specificity.md @ taxonomy-export-2026-08-15 a30c3c9` +- The "Definition Cleanup Plan", reclassification section — pushback from the data side, flagging + imported entries such as "Alpha Angle Measurement" as quantification tools rather than + observations, which is why they lack presence. + `docs/plans/definition_cleanup.md @ taxonomy-export-2026-08-15 a30c3c9` +- "The Finding and Diagnosis Relationship Family" §1 — `ASSESSED_BY` from a finding or diagnosis to + an assessment, with `INTERPRETED_FROM` as its finer twin naming the specific inputs a scheme is + computed from. `docs/next-gen-schema/07-relationship-family.md @ next-gen-2026 44836c1` + +**Related.** A5, B6, B8. + +**Disagreements.** None recorded. + +--- + +## A10. Associated findings versus components + +**Idea.** Two different kinds of related thing get two different treatments, distinguished by an +independence test. An associated finding is separate and independent with its own lifecycle — +pneumonia and pleural effusion each occur alone — and is modelled as one multichoice attribute on +the index model, presence-level only, whose values name real finding models. A component is an +intrinsic part of the finding itself — the solid component of a mixed pulmonary nodule — and is +extracted into its own model; the parent may record only its presence or its count, never its size, +density or morphology, because those belong to the component's own model. Three signals mean +something needs extraction: prefixed attributes such as "solid component size", groups of attributes +all describing the same sub-entity, and characterization beyond presence of something other than the +index finding. + +**Status.** Stated as an authoring rule and enforced as a lint check on one branch; contradicted by +another branch. + +**Implemented.** The deterministic linter checks the associated-findings shape, flagging attributes +scattered as separate "presence of X" entries rather than consolidated into one multichoice +attribute. Extraction candidates surface in the review sub-agent's output field rather than being +applied automatically. +`prompts/fragments/mechanical_lint.md` and `prompts/fragments/associated_vs_component.md @ taxonomy-export-2026-08-15 a30c3c9`. + +**Evidence.** +- The `associated_vs_component.md` fragment — both independence tests, the one-attribute rule with + its worked shape, the parent-may-record-count rule, and the three extraction signals. + `prompts/fragments/associated_vs_component.md @ taxonomy-export-2026-08-15 a30c3c9` +- The "Open Imaging Finding Models" board, "Finding Model Rules" — the earlier and stricter form of + the same instinct: avoid associated findings, give a clinically distinct related finding its own + model. `sources/excalidraw-diagrams.md` + +**Related.** A2, A3, B8. + +**Disagreements.** Direct and unresolved. The chest CT content branch's project specification +forbids an associated-findings attribute outright and requires separate findings instead, the +opposite of the main rule. Its own output does neither cleanly: a converted model carries exactly the +scattered per-finding presence attributes the main linter treats as a defect. +`PROJECT_SPECIFICATION.md` parts 4 and 9, and `defs/from_cdestaging_ct_chest/aberrant_subclavian_artery.fm.json`, +both `@ content/chestcts 0472a46`. + +--- + +# B. How the content is made + +## B1. Identifiers that carry provenance + +**Idea.** A finding model identifier has the form `OIFM_{ORG}_{six digits}`, an attribute +`OIFMA_{ORG}_{six digits}`, and a choice value a code derived from its attribute's identifier. The +three-or-four-letter middle segment is the contributing organization, so provenance is legible from +the identifier itself and different institutions can mint without a central allocator. + +**Status.** Implemented example. + +**Implemented.** Identifier allocation queries the published index for identifiers already used by +that organization code, then draws random six-digit candidates with collision retry; promoting a base +model to full mints the model identifier and any missing attribute identifiers. Choice-value codes +are generated mechanically from the parent attribute's identifier. A validator enforces global +uniqueness of both identifier kinds and additionally detects case-folded name conflicts, normalized +slug conflicts, and an attribute identifier owned by a different model — duplicate detection at the +identifier level, not the semantic level. +`packages/findingmodel/src/findingmodel/index.py` and +`packages/findingmodel/src/findingmodel/index_validation.py @ feature/metadata-cleanup 1942b06`; +`packages/findingmodel/src/findingmodel/finding_model.py @ main 75afd39`. + +**Evidence.** +- The "Finding Model Structured Metadata Fields" reference, identity fields — the pattern and the + statement that the prefix is the contributing organization code, with a worked identifier. + `notes/oifm-metadata-fields.md @ next-gen-2026 44836c1` +- The repository's own `CLAUDE.md` — the identifier patterns, the rule that generated artifacts are + never hand-edited, and the validator workflow that regenerates them. + `CLAUDE.md @ taxonomy-export-2026-08-15 a30c3c9` +- The "OIFM Repo" board, notes "Identifier format" and "Prelim OIFM ID" — the earlier form + `OIFM_CRTR_123456`, the source-organization list, and a serial scheme of days since 2025-01-01 + plus random digits. `sources/excalidraw-diagrams.md` + +**Related.** A1, B2, C3. + +**Disagreements.** The next-generation vocabulary mints from a single fresh namespace with no +organization segment, and "Current Understanding" Issue E records as open "whether the ID space is +partitioned for distributed minting", naming the finding model organization segment as the existing +mechanism for exactly that. +`docs/next-gen-schema/00-current-understanding.md @ next-gen-2026 44836c1` + +--- + +## B2. Corpus as a merge of uneven provenance streams + +**Idea.** The corpus is not one authoring effort but several merged. Counted from the identifier +registry, 2,382 finding models come from five sources: 1,933 derived from the Radiology Gamuts +Ontology, 256 authored by the project, 115 from ACR/RSNA common data elements, 47 from an +institutional contributor, and 31 from a vendor. Each stream carries its own defects, and the cleanup +plan traces nine mechanical defect classes to specific streams. + +**Status.** Implemented example (the corpus); stated cleanup plan, still marked draft. + +**Implemented.** Conflicting imports are quarantined rather than deleted: eighteen files sit in a +`conflicts/` tree under subdirectories named for the collision they represent, held out of the live +corpus. `conflicts/ @ taxonomy-export-2026-08-15 a30c3c9`. + +**Evidence.** +- The identifier registry — the per-organization counts above. + `ids.json @ taxonomy-export-2026-08-15 a30c3c9` +- The "Definition Cleanup Plan" — the nine defect classes with per-class counts and worked examples, + and the observation that some Gamuts-derived entries are differential-diagnosis patterns rather + than findings at all. `docs/plans/definition_cleanup.md @ taxonomy-export-2026-08-15 a30c3c9` + +**Related.** A8, B3, B12. + +**Disagreements.** The cleanup plan's counts (2,379 models) differ from the registry shipped beside +it (2,382), because the plan was written at an earlier commit. The webinar states 2,458 as of July +2026. These are freshness differences, not conflicting claims. + +--- + +## B3. Stub creation and iterative improvement + +**Idea.** Most of a finding model can be produced mechanically. A list of finding names is drawn +from three sources — an existing ontology, subject-matter experts, and a model reading real report +text — and every name becomes a stub carrying presence and change from prior, plus location and size +where the finding has them. Stubs get identifiers immediately so they can be used at once, and are +then improved through four named iteration modes: experts propose changes and a model edits the JSON +for them; a model proposes improvements from reference material it may find itself; sites download a +kit, combine their own report text with published models, and submit pull requests; and outside +groups review models and endorse them. + +**Status.** Implemented example for stub creation and two iteration modes; working proposal for the +site kit and the endorsement mode. + +**Implemented.** Stub creation emits a base model with exactly the two canned attributes. A separate +optional step drafts a richer description with citations and prints it for review without touching +the model file; a fix script writes an approved description and synonym list back in. The enrichment +fragment restricts this to single-finding work and tells batch flows to skip it as too slow. +`packages/findingmodel/src/findingmodel/create_stub.py @ main 75afd39`; +`prompts/fragments/enrichment.md @ taxonomy-export-2026-08-15 a30c3c9`. + +**Evidence.** +- The "Open Imaging Finding Models: Pipeline and Repo" flowchart on the "OIFM Repo" board — the + three sources, the stub fields, and the four iteration modes with their descriptions; the + "Community Connect 2024-11-07" note on the same board gives the same approach as a method for + creating data models at scale. `sources/excalidraw-diagrams.md` +- The `enrichment.md` fragment — when to use the description-drafting step and when not to. + `prompts/fragments/enrichment.md @ taxonomy-export-2026-08-15 a30c3c9` + +**Related.** A6, B4, B5, B12. + +**Undetermined.** Whether the downloadable site kit or the endorsement mode were ever built. No +artifact was found for either. + +--- + +## B4. Triage before create + +**Idea.** Nothing is authored before the corpus has been searched properly. Two or three +complementary search targets are generated per candidate, run, and the pooled results judged for +exact semantic match by the agent itself, which reports one of three outcomes: an exact match, no +match after reasonable search, or true ambiguity. The instruction "Do not forward raw result lists to +the user" makes the judgment the agent's job rather than the reader's. + +**Status.** Implemented example. + +**Implemented.** The search-and-triage fragment lists six specificity traps that the judgment must +avoid. On the chest CT content branch the triage becomes a persisted artifact: each source record +gets its search targets, a decision, the matched identifier, and the full candidate list with the +query that surfaced each, committed alongside the converted models. +`prompts/fragments/search_and_triage.md @ taxonomy-export-2026-08-15 a30c3c9`; +`reviews/triage_cdestaging_chunk_1.json @ content/chestcts 0472a46`. + +**Evidence.** +- The `search_and_triage.md` fragment — the procedure, the three outcomes, and the traps. + `prompts/fragments/search_and_triage.md @ taxonomy-export-2026-08-15 a30c3c9` +- The `finding-author` skill, step 1 — the same procedure as the first step of interactive + authoring, with the no-raw-lists instruction restated. + `.claude/skills/finding-author/SKILL.md @ taxonomy-export-2026-08-15 a30c3c9` + +**Related.** A7, B3, B5, B6. + +--- + +## B5. Review in three tiers, with context isolation + +**Idea.** Review is layered, and each layer does only what it is good at. A deterministic linter +runs pure pattern checks and labels each hit an error, a warning, or a review item. A language-model +quality review then applies a checklist that the linter deliberately does not attempt, and is given +one file path and nothing else. A human sign-off through a terminal interface is mandatory for batch +and review flows. The context rule is stated as a requirement rather than a preference: "Cross-finding +context isolation is mandatory: each finding is drafted and reviewed by a fresh sub-agent with no +exposure to its neighbors." + +**Status.** Implemented example. + +**Implemented.** The review skill refuses to run against a dirty working tree so that its edits can +be diffed cleanly, with a conversational override and no command-line flag for it. Fan-out runs in +parallel groups of five, each sub-agent receiving a single file path with the instruction "No +neighbors, no batch context, no prior conversation." Concrete suggested fixes are applied; +extraction candidates and warnings are recorded into a review file rather than applied. +`.claude/skills/finding-review/SKILL.md @ taxonomy-export-2026-08-15 a30c3c9`, steps 1 through 5; +`.claude/skills/finding-batch/SKILL.md @ taxonomy-export-2026-08-15 a30c3c9`. + +**Evidence.** +- The `mechanical_lint.md` fragment — the deterministic checks and the three severity levels with + their meanings. `prompts/fragments/mechanical_lint.md @ taxonomy-export-2026-08-15 a30c3c9` +- The `quality_checklist.md` fragment — the checklist, the required output shape, and an explicit + section naming what it intentionally does not flag. + `prompts/fragments/quality_checklist.md @ taxonomy-export-2026-08-15 a30c3c9` +- The `finding-batch` skill — the isolation requirement stated as mandatory, the accepted input + shapes, and the cross-row duplicate check surfaced to the user before drafting. + `.claude/skills/finding-batch/SKILL.md @ taxonomy-export-2026-08-15 a30c3c9` + +**Related.** B4, B6, C6. + +--- + +## B6. Prompts as loadable fragments, sized against measured degradation + +**Idea.** The authoring rules live in small fragment documents that a skill loads at the step where +they apply, and the skill files are "pure orchestration". The reason is written down and measured +rather than asserted: instruction-following degrades as the number of simultaneous instructions +rises, material in the middle of a long prompt gets less attention than material at either end, and +extraneous but semantically similar context measurably harms structured output. The team's own +diagnosis of its earlier prompts is that a review agent with about forty checklist items plus a +thirty-rule conventions document was "deep in degradation territory", and that appending conventions +after the task instructions pushed the agent's own task rules into the lost middle. + +**Status.** Implemented example, with the research written up as the justification. + +**Implemented.** Fifteen fragments sit under a prompts directory with a defaults file, and each +skill names the fragment to load at each step rather than inlining the rules. The `finding-author` +skill loads orientation once per session, then names a different fragment at search, at synonym +editing, at drafting, at creation, and at lint. +`prompts/fragments/ @ taxonomy-export-2026-08-15 a30c3c9`; +`.claude/skills/finding-author/SKILL.md @ taxonomy-export-2026-08-15 a30c3c9`. + +**Evidence.** +- "Prompt Length and Instruction Complexity: Research and Recommendations" — the question as the + team posed it (about 19 KB of shared documents inlined into every agent call, roughly 25,000 + characters of instructions per call), the five research findings, and the analysis of the team's + own three agent prompts against them. + `docs/plans/prompt_length_research.md @ taxonomy-export-2026-08-15 a30c3c9` +- The three skill files — each states "All rules, CLI cheatsheets, and procedures live in + `prompts/fragments/`. This file is pure orchestration." + `.claude/skills/{finding-author,finding-batch,finding-review}/SKILL.md @ taxonomy-export-2026-08-15 a30c3c9` + +**Related.** B5, C6. + +**Disagreements.** None recorded. The related rule on the metadata side is stricter still: when an +evaluation miss exposes a general rule, add it to the field-standards document and cover it with an +evaluation rather than pasting the missed case into the prompt, and never copy active evaluation +fixtures into prompt text. +`docs/metadata/enrichment/prompt-guidance.md @ feature/metadata-cleanup 1942b06` + +--- + +## B7. Exam-oriented finding sub-taxonomies + +**Idea.** Content direction is now six per-exam-context finding hierarchies — chest radiograph, +musculoskeletal radiograph, head CT, chest/abdomen/pelvis CT, mammography, spine MRI — 3,789 rows in +total. Each file is one hierarchy in which a row names its parent by name, "Parents are generic, +children add specificity". An anatomic category sits beside the hierarchy as an independent grouping +rather than part of it. The project lead stated on 2026-09-21 that this branch is "the immediate +direction for all of the content, probably replacing a lot of the Gamuts-based models", and asked +that the taxonomies be called the MGB exam-oriented sub-taxonomies. + +**Status.** Stated goal (the direction); implemented example (the six files). + +**Implemented.** The taxonomy doubles as a coverage ledger. An identifier is filled only where a row +matched a model that already exists, by exact name, and "Nothing was minted here"; 1,028 of 3,789 +rows matched, so the files measure as data how much of each exam type the corpus covers, very +unevenly — 305 of 403 for chest radiographs against 5 of 198 for mammography. "Blank rows are the +ones needing triage." A writeback loop fills that column, runs only after full review and human +sign-off, and is idempotent. +`lists/README.md @ taxonomy-export-2026-08-15 a30c3c9`; +`prompts/fragments/csv_writeback.md @ taxonomy-export-2026-08-15 a30c3c9`. + +**Evidence.** +- The taxonomy README — the six files with row and identifier counts, the column meanings, the + parent semantics, the nothing-was-minted rule, and the warning that an identifier can appear on + two rows where earlier writebacks mapped two findings onto one model. + `lists/README.md @ taxonomy-export-2026-08-15 a30c3c9` +- "Profile of the Hood Finding Taxonomies" — the measured shape: 411 of 414 untyped rows are parents + of other rows; 73 parents in the CT list have both observation and diagnosis children; a recurring + three-part naming pattern of abnormality, anatomic variant and postsurgical change per region; + eight rows sharing an identifier with another row. + `notes/hood-taxonomies-profile-2026-09-01.md @ next-gen-2026 44836c1` +- The project lead's recorded content direction. + `knowledge/plans/2026-09-20-knowledgebase-build-plan.md` + +**Related.** A5, B2, B12, D1. + +**Disagreements.** The profile records that a morphology axis derived from a name-suffix census was +proposed and rejected on 2026-09-02, on the grounds that the suffixes describe how names are formed +rather than categories radiologists reason about. It also records the duplicate identifiers as unmade +synonym-or-subtype decisions. + +**Undetermined.** Whether the hierarchy is meant to enter the schema. No branch read carries a +parent, hierarchy or taxonomy field on a finding model; the parent relation exists only in the CSV +files. What `finding_cluster` means is declared in the README but never explained, and is populated +in one file only. + +--- + +## B8. Convert and merge, with a fixed direction + +**Idea.** Converting an outside definition set into finding models is a merge with a fixed direction: +incoming definitions merge into the existing corpus, never the reverse. A specificity guard prevents +matching an incoming specific term to a general existing model, so "tunneled catheter" must not match +"detectable hardware". Merge decisions are typed rather than ad hoc: enhanced, identical, subset, +needs review, and no similarities, each with its own action. + +**Status.** Implemented example on a content branch, six of twenty-one planned chunks converted. + +**Implemented.** A special case discards an incoming two-value presence attribute when the existing +model already carries the standard four values. The per-chunk flow is fixed — triage, convert, lint, +quality review, apply fixes, review file, human handoff, apply feedback — and the branch's own +instruction file says "User triggers one chunk at a time — never auto-run all 21 chunks." +`PROJECT_SPECIFICATION.md` parts 6 and 7, and `CLAUDE.md`, both `@ content/chestcts 0472a46`. + +**Evidence.** +- The chest CT project specification — the direction rule, the specificity guard with its worked + case, and the five merge-decision types. `PROJECT_SPECIFICATION.md @ content/chestcts 0472a46` +- The batch progress document and the conversion skill — the chunked workflow in practice. + `docs/cdestaging_ct_chest_batch_progress.md` and + `.claude/skills/finding-cdestaging-batch/SKILL.md @ content/chestcts 0472a46` + +**Related.** A10, B4, B12. + +**Undetermined.** How extracted sub-findings link back to their parents is named as an open design +problem on that branch: they are "identified and logged but not written to disk". No mechanism exists +on any branch read. + +--- + +## B9. Content repository proposes changes upstream to the library + +**Idea.** The content effort is treated as a source of requirements for the tooling, not only a +consumer of it. A document analyses what should move upstream into the library based on patterns +built while authoring, sizes each entry to become one issue, and states its evidence base as a +fourteen-model test batch plus a review pass plus three sessions of fragment refinement. + +**Status.** Implemented example (the proposals document and one filed issue); working proposals (the +rest). + +**Implemented.** The content repository carries a reference implementation of each proposal as a +local script, and the document points at it — direction-pair selection and article stripping are done +client-side in the content repo's creation script pending the library change. +`docs/plans/findingmodel-upstream-proposals.md @ taxonomy-export-2026-08-15 a30c3c9`, item B1. + +**Evidence.** +- The upstream-proposals document — section A bugs (a release version-contract mismatch reproduced + against published package versions) and section B library enhancements, each with a problem + statement, an evidence count from the test batch, and a proposed interface. + `docs/plans/findingmodel-upstream-proposals.md @ taxonomy-export-2026-08-15 a30c3c9` + +**Related.** A6, B6. + +--- + +# C. Foundation context and metadata + +## C1. Lean published models versus the full metadata schema + +**Idea.** The published finding model is deliberately lean — identifier, name, description, synonyms, +tags, attributes, index codes. A forward schema adds eight structured fields the team calls +foundation context: body regions, subspecialties, etiologies, entity type, applicable modalities, +expected time course, age profile, sex specificity. Four of these are presented in the team's own +webinar as what lets an agent judge whether a finding *should still be there* on a new exam: where it +is anatomically, what type of finding it is, how long it lasts, and whether it is transient or +permanent. The worked justification is that an aneurysm should be expected on every future exam and +tracked for growth, a resolved pulmonary embolism treated as gone, and an ovarian cyst known to clear +and recur with the cycle so that every cyst is not linked into one thread. + +**Status.** Stated goal ("Definition formats, needs overhaul for increased metadata"); implemented +example on the work edge; explicitly labelled in the July 2026 webinar as "the forward, AI-populated +schema, not yet carried by the published definitions". + +**Implemented.** All eight fields are typed Pydantic fields on both model classes on the development +and metadata branches, and absent from the released branch. The schema absorbs legacy vocabularies +rather than migrating data: normalizing validators map old title-cased regions, a legacy "ALL" value, +a coarse `traumatic` etiology, two film-modality codes, and a free-text "pediatric" age label onto +current values, with unknown values falling through to an ordinary enumeration error. Only entity +type is required; the rest may be null. +`packages/findingmodel/src/findingmodel/types/models.py` and `types/metadata.py @ feature/metadata-cleanup 1942b06`; +contrast `packages/findingmodel/src/findingmodel/finding_model.py @ main 75afd39`. + +**Evidence.** +- "Canonical Structured Metadata and Enrichment Rewrite", "Canonical Model Shape" — the eight fields, + the full value lists, and the stated goal of making metadata "canonical `FindingModel` state rather + than disposable enrichment output", with the recorded reason that two earlier pathways both + produced sidecar output instead. + `docs/canonical-structured-metadata-and-enrichment-rewrite.md @ feature/metadata-cleanup 1942b06` +- "Finding Model Structured Metadata Fields" — the field-by-field reference with each enumeration and + its meanings. `notes/oifm-metadata-fields.md @ next-gen-2026 44836c1` +- The webinar's "Lean vs full" and "Foundation card" slides — the framing, the four dimensions with + their justification, and the etiology taxonomy on screen with a subdural hematoma carrying both a + traumatic and a vascular code. `sources/bucket/text/ipl-webinar-deck.md`, slides 28 to 30 +- The project lead's stated goals. `knowledge/plans/2026-09-20-knowledgebase-build-plan.md` + +**Related.** A5, C2, C3, C4, D2. + +**Disagreements.** The entity-type value sets differ. The finding model enumeration keeps `grouping` +and `recommendation`; "What the Vocabulary Must Express" §5 drops both, on the grounds that a +recommendation has no subject in the patient and that grouping is a structural role rather than a +kind of finding, then reinstates Grouping as a node type. That document also removes `measurement` as +a classification in favour of a separate definition type. +`docs/next-gen-schema/01-what-the-vocabulary-must-express.md @ next-gen-2026 44836c1`. The subspecialty +and etiology enumerations also differ between the development and metadata branches: one code was +removed as "not an official RSNA specialty content code", another renamed, two added, and two new +parent etiology codes introduced, so data valid on one branch will not validate on the other. +`docs/metadata/subspecialties.md` and `CHANGELOG.md @ feature/metadata-cleanup 1942b06`. + +**Undetermined.** Whether the eight fields will land on the released branch. The branch's readiness +assessment is recorded as not yet passing and nothing has been merged. + +--- + +## C2. Each metadata field is defined by what it excludes + +**Idea.** The metadata fields are specified less by what they mean than by the near-miss they must +not admit. Subspecialty is which radiology service would *read and report* the finding, not which +service *orders* the study, and the policy document lists what was deliberately kept out: modality +codes, education, policy, informatics, physics and research tracks, and radiation oncology, each with +a reason. Expected time course is how long a finding stays *visible on imaging*, "not the clinical +duration of the underlying disease". Sex specificity is about anatomy, not prevalence. Applicable +modalities covers only modalities routinely used to demonstrate, evaluate, quantify or follow the +finding, not theoretical detection or incidental visibility. Etiologies name the common process types +the finding implies, "not a differential diagnosis". Age profile separates what a finding *can occur +in* from what it is *more common in*. + +**Status.** Working proposal (the policy); implemented example (the enumerations and the prompts that +apply them). + +**Implemented.** The assignment prompts encode the exclusions as operational rules with defaults that +differ per field. The etiology and time-course prompt states that "The two fields have opposite +defaults. **Etiology defaults to null** — assign only with direct support from the finding name or +description. **Time course defaults to a committed value**", and orders the work: decide etiology +first, then use it when choosing time course. It forbids inferring cause from anatomy, modality, +appearance, age context or generic clinical association, and caps output at about three codes. +`packages/findingmodel-ai/src/findingmodel_ai/metadata/prompts/etiology_tempo.md @ feature/metadata-cleanup 1942b06`. + +**Evidence.** +- The `etiology_tempo.md` assignment prompt — the goal statement, the opposite-defaults rule, the + allowed code lists, and the specific negative rules (a nonspecific descriptive finding gets no + benign/malignant differential; metabolic activity does not by itself imply neoplasm; calcified + lymph nodes do not inherit lymphadenopathy's etiologies). + `packages/findingmodel-ai/src/findingmodel_ai/metadata/prompts/etiology_tempo.md @ feature/metadata-cleanup 1942b06` +- The subspecialty policy document — the kept and not-kept tables with a reason per exclusion, and a + tie-breaker between two overlapping codes. + `docs/metadata/subspecialties.md @ feature/metadata-cleanup 1942b06` +- The field-standards document — about fifteen decision standards for modality applicability + including three named negative rules, and the specific etiology adjudications. + `docs/metadata/fields.md @ feature/metadata-cleanup 1942b06` +- The project vocabulary document — an "avoid" line under each domain term, for example ordering + specialty under subspecialty and clinical disease duration under time course. + `CONTEXT.md @ feature/metadata-cleanup 1942b06` + +**Related.** C1, C3, C4. + +**Disagreements.** None recorded. + +--- + +## C3. Index codes must be exact + +**Idea.** A code stored on a finding model must be an exact match or a clinically substitutable +near-equivalent for the whole model concept. Broader, narrower, related, complication-specific, +severity-specific and temporally qualified codes do not belong there unless the model itself is +defined at that narrower level; they belong in a separate review artifact where they can be +categorized. The code object stays a plain system, code and display triple, and relationship +semantics do not live on it — if the project later needs them, it should add a typed wrapper rather +than overload the existing object. + +**Status.** Working proposal as policy; implemented as prompt rules and evaluation scoring, not as +schema enforcement. + +**Implemented.** The ontology assignment prompt operationalizes the rule in both directions: reject a +candidate that *adds* unsupported detail (material, device subtype, location, named vessel, pattern, +disease context, benign or malignant status, histology, grade, stage) and reject one that *drops* a +meaningful modelled qualifier (patient group, pregnancy, timing, acuity, chronicity, severity, +location, modality, laterality, focality, pattern, composition). It adds that an unqualified tumour +includes benign and malignant forms, that a measurement or score used to evaluate a disease is not +the disease, and that non-canonical concepts should be preserved as review evidence with a +relationship and a rejection reason. +`packages/findingmodel-ai/src/findingmodel_ai/metadata/prompts/ontology_decision.md @ feature/metadata-cleanup 1942b06`. + +**Evidence.** +- The `ontology_decision.md` assignment prompt — the rules above, and the instruction to return no + canonical candidate when none is good enough. + `packages/findingmodel-ai/src/findingmodel_ai/metadata/prompts/ontology_decision.md @ feature/metadata-cleanup 1942b06` +- "Canonical Structured Metadata and Enrichment Rewrite", index-code semantics — the policy with the + do-not-overload instruction. + `docs/canonical-structured-metadata-and-enrichment-rewrite.md @ feature/metadata-cleanup 1942b06` +- "Index code target fixture integration" — the measured consequence: adding missing source-code + targets alone would have lifted index-code scoring only from about 0.674 to about 0.736, so + coverage was necessary but not sufficient, and the four miss buckets are coverage, retrieval, + matching and abstention. + `docs/plans/index-code-target-fixture-integration-2026-06-23.md @ feature/metadata-cleanup 1942b06` + +**Related.** C2, C5, E1, E2. + +**Disagreements.** "Current Understanding" Issue J keeps open the option this rule closes: "index +codes as open system URIs, distinguishing exact-match from broader/narrower". +`docs/next-gen-schema/00-current-understanding.md @ next-gen-2026 44836c1` + +**Undetermined.** Nothing enforces the rule at runtime. It is policy carried by prompts, review and +evaluation. + +--- + +## C4. Focused assignment agents, advisory audit, and null as an answer + +**Idea.** Metadata is assigned by seven narrow agents rather than one broad classifier — entity type, +etiology and tempo, patient applicability, subspecialty domain, modality applicability, ontology +decision, anatomy decision — each with a lean prompt and a typed decision output, assembled by one +orchestrator that never decides a field value itself. The recorded reason is that focused agents +allow concise prompts, per-field evaluation, and targeted tuning of weak fields; the recorded cost is +more agents, more orchestration, and more model calls per finding. Candidate discovery is a separate +role: search agents propose, assignment agents dispose. A final pass audits rather than enforces, and +the repository insists on calling it an auditor because "validators enforce structure; the auditor is +advisory". Null is a legitimate answer with four enumerated meanings, and scoring penalizes +unsupported additions more heavily than omissions. + +**Status.** Working proposal recorded as an architecture decision; implemented on the work edge. + +**Implemented.** Agents run in three parallel batches with etiology and tempo gated on entity type. +Candidate lists are capped and candidate identifiers use a system-and-code form the output validator +checks, retrying on invented identifiers. The auditor emits severity-tagged flags only, combining +deterministic checks (missing evidence, display mismatch against a cached preferred term, +anatomy-versus-sex conflicts) with an optional second-opinion pass. An ontology evidence cache +accumulates across runs and is explicitly "evidence only, never authority" when stale. +`docs/adr/0002-split-agent-assignment-architecture.md`, +`docs/metadata/enrichment/enrichment-agent-architecture.md`, and +`packages/findingmodel-ai/src/findingmodel_ai/metadata/ontology_cache.py @ feature/metadata-cleanup 1942b06`. + +**Evidence.** +- The split-agent architecture decision record — the seven agents named, the decision, and its + stated consequences. `docs/adr/0002-split-agent-assignment-architecture.md @ feature/metadata-cleanup 1942b06` +- The enrichment agent architecture document — the agent, prompt, output and evaluation table, and + the search-proposes/assignment-disposes boundary. + `docs/metadata/enrichment/enrichment-agent-architecture.md @ feature/metadata-cleanup 1942b06` +- The metadata README and evaluation document — "Unsupported additions are usually more harmful than + omissions", the four meanings of null, conservative-abstention credit, and the separation of gates + from quality scores. `docs/metadata/README.md` and `docs/metadata/enrichment/evaluation.md @ feature/metadata-cleanup 1942b06` +- The `anatomy_decision.md` assignment prompt — "Select the smallest candidate set that covers the + modelled anatomic scope", the instruction that candidate support levels are evidence and not + commands, and the rule to select no anatomic candidate at all rather than use a narrower child or + landmark as a proxy. + `packages/findingmodel-ai/src/findingmodel_ai/metadata/prompts/anatomy_decision.md @ feature/metadata-cleanup 1942b06` + +**Related.** C1, C2, C3, C5, E1. + +**Disagreements.** The rewrite document records that two earlier enrichment pathways are to be removed +with no compatibility shims. That is a recorded reversal within the repository, not an open dispute. + +--- + +## C5. Human review is the only authority + +**Idea.** Generated metadata does not reach the corpus on its own. Review actions are approved, +skipped or feedback, and only approved records may be written back. Sub-agent triage may organize a +queue but is not authority, and generated source diffs are not gold. Feedback has four named routes — +human promotion, conversion into a general rule plus an evaluation, a source-model authoring fix, or +deferral — none of which write source directly. + +**Status.** Stated as policy; implemented as gates and fixtures. + +**Implemented.** Writeback runs through a command that verifies review-package and reviewed-payload +hashes, records before and after hashes, validates each model before writing, and refuses any record +not in the approved-output fixture; a refusal check against a feedback record returned a refusal, "the +intended authority boundary". A commit-time gate blocks source writeback unless about thirteen named +conditions hold, on the principle that "Source commits must be derived from the source-apply +manifest, not from `git diff`". A second gate blocks deleting the legacy code path until the new one +passes a real end-to-end run, with mocked unit tests explicitly not counting. Unapproved diffs are +quarantined rather than discarded. +`docs/metadata/enrichment/human-review-and-writeback.md @ feature/metadata-cleanup 1942b06`. + +**Evidence.** +- The human review and writeback document — the three review actions, the feedback routing, the two + gates, and the reconciliation of 180 review events over 150 unique records into a 78-definition + source baseline. `docs/metadata/enrichment/human-review-and-writeback.md @ feature/metadata-cleanup 1942b06` +- The metadata enrichment plan history — the decisions stated as such: human review is authoritative; + generated source diffs are not gold; feedback records must be dispositioned before another corpus + batch. `docs/plans/metadata-enrichment-plan-history-2026-05-24.md @ findingmodels-metadata dcc6c4c` + +**Related.** B5, C4, C7. + +--- + +## C6. Documents record judgment; the schema is the specification + +**Idea.** The metadata documents hold decisions and policy — field standards, subspecialty policy, +review gates, release strategy — while field types, patterns, the code object's shape and +normalization behaviour live in code and are read from code. The stated cause is that +hand-maintained structural documents drift, and that a prior consolidation lost and duplicated +exactly that kind of detail. + +**Status.** Stated as an architecture decision. + +**Implemented.** Enumeration value tables may appear in the field-standards document but are to be +generated or checked against the enumerations rather than hand-authored. The decision record's own +consequence section instructs a future reader who finds no field types in that document to look at +the models rather than re-add them. +`docs/adr/0001-lean-metadata-docs-schema-is-spec.md @ feature/metadata-cleanup 1942b06`. + +**Evidence.** +- The lean-metadata-docs architecture decision record — the decision, its cause, and its two + consequences. `docs/adr/0001-lean-metadata-docs-schema-is-spec.md @ feature/metadata-cleanup 1942b06` +- The project vocabulary document — system vocabulary separated from domain vocabulary, each term + with an "avoid" line, plus a flagged-ambiguities section resolving prior collisions such as + "tagging" against the tags field and "finding" meaning both the container and a classification + value. `CONTEXT.md @ feature/metadata-cleanup 1942b06` + +**Related.** B6, C2. + +--- + +## C7. Two databases from one source commit + +**Idea.** Publish two database artifacts built from the same enriched source: one in the legacy shape +readable by the currently published runtime, and one carrying the structured-metadata columns, the +enriched JSON, and a provenance table recording schema name and version, source commit, build +timestamp, package versions and embedding model. The stated reason is that existing consumers keep +working unchanged while metadata-aware consumers get the new data, rather than forcing a breaking +single-database migration. + +**Status.** Stated as an architecture decision; partly implemented. + +**Implemented.** A manifest key controls when the metadata-aware database becomes the default, and a +package-release gate moves the data-repository scripts off a local wheelhouse onto released package +pins before publication. +`docs/adr/0003-dual-db-pre-post-metadata-release.md` and +`docs/metadata/enrichment/database-artifacts-and-package-pinning.md @ feature/metadata-cleanup 1942b06`. + +**Evidence.** +- The dual-database architecture decision record — the decision, its reason, and its three + consequences. `docs/adr/0003-dual-db-pre-post-metadata-release.md @ feature/metadata-cleanup 1942b06` +- "Schema Versioning (Future Work)" — the related and deferred idea, that a package version requires + exactly one schema version and backward compatibility comes from the manifest keeping old-schema + databases available, with schema version (structure) separated from content version (freshness). + `tasks/schema-versioning-future.md @ main 75afd39` + +**Related.** C5, E1. + +--- + +## C8. Three retrieval modes over the corpus + +**Idea.** The registry answers three different questions with three different mechanisms rather than +overloading one. Query-driven search combines full-text and vector retrieval with metadata filters +pushed into the query before ranking. Browse is filter-only with pagination, and explicitly replaces +an earlier overload where an empty search string carried tag filters. Related-model lookup is +deterministic with no language model, scoring metadata overlap with configurable weights. + +**Status.** Implemented example on the development and metadata branches; absent from the released +branch. + +**Implemented.** Related-model scoring weights anatomic location highest, then index code, then +entity type, then body region, etiology and subspecialty, then modality, age, sex and time course, +with a minimum score below which nothing is returned; the weights are recorded as "provisional and +must be tuned against a gold case set before release". Filters are OR within a facet and AND across +facets, while tags keep all-of semantics. A pre-authoring overlap check runs five phases — an exact +name and synonym fast path, model-assisted planning that emits alternate search terms and metadata +hypotheses, multi-pass candidate gathering, model-assisted selection with a rejection taxonomy, and +assembly — where deterministic code gathers and merges and the model only makes the edit-versus-create +judgment, with an unfiltered text path always preserved so a wrong facet guess cannot collapse +recall. The registry is also exposed to agents as a tool server. +`packages/findingmodel/src/findingmodel/index.py`, +`packages/findingmodel-ai/src/findingmodel_ai/search/similar.py`, and +`packages/findingmodel/src/findingmodel/mcp_server.py @ feature/metadata-cleanup 1942b06`. + +**Evidence.** +- "Canonical Structured Metadata and Enrichment Rewrite", retrieval section — the three modes, the + filter semantics, the weight table, and the provisional-weights caveat. + `docs/canonical-structured-metadata-and-enrichment-rewrite.md @ feature/metadata-cleanup 1942b06` +- The similar-models planning prompt — "Prefer MORE GENERAL terms" and "NEVER more specific than the + finding itself", the rule that keeps recall wide during candidate gathering. + `packages/findingmodel-ai/src/findingmodel_ai/search/similar.py @ feature/metadata-cleanup 1942b06` + +**Related.** B4, C1, E2. + +--- + +# D. Anatomic locations + +## D1. Spatial containment as a single-parent tree to the whole body + +**Idea.** Every anatomic structure gets exactly one containing parent, defined as the smallest +anatomic entity that fully encloses it, so every entry has one unambiguous chain of enclosing regions +to a single root, the whole body. A structure spanning several subregions takes the smallest region +containing the whole of it, so the pancreatic duct is contained by the pancreas rather than by any +one of its parts. The purpose stated is deterministic, auditable traversal: software that extracts "3 +mm cyst in the pancreatic tail" has no representation of the pancreas, the retroperitoneum and the +abdomen to consult, and this supplies one. + +**Status.** Implemented example. + +**Implemented.** The shipped index data is a strict rooted tree with a single self-referencing root +and no multi-parent entries. The libraries walk it: ancestors terminate at the hard-coded whole-body +identifier, and a containment predicate answers whether one structure lies inside another. The +current package exposes the same traversal from a command line, printing the chain from whole body +down to a named structure with its children. +`body_part_index/body_part.py @ BodyPartIndex.py main 388ae0a`; +`docs/anatomic-locations.md @ findingmodel feature/metadata-cleanup 1942b06`. + +**Evidence.** +- The Anatomic Locations Index manuscript under review at JDIM, Methods "Hierarchy construction" and + Results "Hierarchy structure" — the single-parent rule, the smallest-fully-containing-region rule + with the pancreatic duct case, verification that every chain reaches the root, a longest chain of + seven hops, and a depth distribution consistent with whole body to major region to subregion to + structure. `sources/bucket/text/jdim-02183.md` +- The project site's homepage — "a directed, rooted tree hierarchy, starting from the whole body and + ramifying through body regions", with the curated set described as "Complete-ish" and + "Non-degenerate: no uncertainty as to which node represents a structure". + `docs/index.markdown @ anatomiclocations.org main 1f39fa4` +- "Current Understanding" §2.6 — independent verification against the data file on 2026-07-28: + strict rooted tree, single root, every node exactly one containing parent, no multi-parent entries + anywhere. `docs/next-gen-schema/00-current-understanding.md @ next-gen-2026 44836c1` +- The anatomic locations research task — the traversal chosen for the current database is an + adjacency list with recursive queries and an explicit depth limit "to prevent infinite loops in case + of data errors", judged optimal for a read-only hierarchy of this size. + `tasks/anatomic-locations-graph-research.md @ findingmodel main 75afd39` + +**Related.** D2, D3, D5, D6, F1. + +**Disagreements.** The manuscript records the cost of the single-parent rule as a limitation: a +structure spanning sibling subregions is assigned to their common parent, so the pancreatic duct's +course through the individual subdivisions is not represented. It also records that the hierarchy +uses deliberately coarse regional grouping. The next-generation gap log notes that the data places +the lung inside the pleural space, "an anatomic oddity that affects containment traversal". + +**Undetermined.** Three node counts coexist across sources — 2,890 in the published file, 2,891 in +the manuscript, 2,926 in the current package data — because they were read from different releases. +That is freshness, not disagreement. + +--- + +## D2. Containment and part-of are different relations + +**Idea.** Where a structure physically sits and what functional structure it belongs to are two +different questions, and conflating them breaks spatial reasoning. The abdominal aorta is contained +by the retroperitoneum but is part of the aorta; the aortic arch is contained by the mediastinum but +is part of the aorta; the appendix is contained by the pelvis but is part of the colon. The +single-parent constraint applies only to containment; a structure may have zero, one or more +functional part-of associations. Anything walking the hierarchy must declare which relation it means, +because for the upper lobe of the right lung containment yields right lung, thorax, whole body while +part-of yields right lung and stops. + +**Status.** Implemented example. + +**Implemented.** The two relations are separate fields, one required and one optional, and the +authoring guidance tells a curator which to use: containment for "X is inside Y" (the hilum is inside +the lung), part-of for "X is a component of Y" (the stomach is part of the gastrointestinal tract). +The older TypeScript library mirrors the containment traversal for the functional hierarchy with its +own ancestor, child and predicate functions; the Python library exposes only a single part-of hop. +`.claude/skills/manage-anatomic-locations/reference/json-schema.md @ findingmodel main 75afd39`; +`README.md @ BodyPartIndex.ts main dec578e`; `body_part_index/body_part.py @ BodyPartIndex.py main 388ae0a`. + +**Evidence.** +- The anatomic locations field reference, "containedByRef vs partOfRef" — the spatial-versus- + mereological distinction with worked cases and the note that many entries have both. + `.claude/skills/manage-anatomic-locations/reference/json-schema.md @ findingmodel main 75afd39` +- The project site's code page — the same two hierarchies named and illustrated, kidney in the + retroperitoneum against adnexa as part of a system. + `docs/code.markdown @ anatomiclocations.org main 1f39fa4` +- The Anatomic Locations Index manuscript, Methods "Hierarchy construction" and Results "Index + composition" — the distinction with the abdominal aorta case, and 991 functional links each tying a + structure to a system. `sources/bucket/text/jdim-02183.md` +- "Current Understanding" §2.6 — a three-row worked table and the statement that the two traversals + answer different questions. `docs/next-gen-schema/00-current-understanding.md @ next-gen-2026 44836c1` + +**Related.** D1, D6, F1. + +**Disagreements.** Which hierarchy a given check walks is an open item that "must be stated each +time". `docs/next-gen-schema/11-anatomy-axis.md @ next-gen-2026 44836c1` + +--- + +## D3. Laterality as explicit triads + +**Idea.** Left, right and unsided variants of a bilateral structure are three distinct entries joined +by explicit links, rather than one entry plus a modifier. The stated reason is an implementation +convenience: the links permit direct deterministic navigation among corresponding forms without +reconstructing or searching for a post-coordinated expression at runtime. The consequence drawn in +the next-generation vocabulary is that laterality is carried by the location, so there will be no +laterality data elements. + +**Status.** Implemented example; working proposal for the consequence. + +**Implemented.** The curation rule is a three-entry pattern: an unsided entry carrying links to both +sided variants, and each sided entry carrying a link to its counterpart and back to the unsided form, +with the sided entry's container pointing at the sided version of its container where one exists. The +libraries navigate this in both directions from either end. Where a lateralized code does not exist +in an external terminology, the guidance is to use the unsided code for all three entries and say so +in the change description. +`.claude/skills/manage-anatomic-locations/reference/laterality-conventions.md @ findingmodel main 75afd39`; +`README.md @ BodyPartIndex.py main 388ae0a`. + +**Evidence.** +- The laterality conventions reference — the compound identifier pattern using two modifier + identifiers, the three-entry pattern with a worked example, and the container rule. + `.claude/skills/manage-anatomic-locations/reference/laterality-conventions.md @ findingmodel main 75afd39` +- The Anatomic Locations Index manuscript, Methods "Cross-referencing and technical implementation" — + complete triads for all 795 bilateral structures with the implementation-convenience reason stated. + `sources/bucket/text/jdim-02183.md` +- "Current Understanding" §2.6 — "Laterality is carried by the location, not by a DataElement. + Accordingly there will be no laterality DataElements", superseding an earlier committee draft + element list. `docs/next-gen-schema/00-current-understanding.md @ next-gen-2026 44836c1` + +**Related.** D1, D4, F1. + +**Disagreements.** An external reviewer's alpha implementation offers a laterality data element +including a bilateral value, against the sided-location approach; recorded as decision area ST08. +`docs/next-gen-schema/12-alpha-structural-comparison.md @ next-gen-2026 44836c1` + +--- + +## D4. Synthetic post-coordinated terms + +**Idea.** Where a clinically routine localization concept has no pre-coordinated term — almost always +because laterality or enumeration is missing — an identifier is minted by joining existing RadLex +identifiers with an underscore, so the composition is transparent and machine-readable. Three +patterns account for all of them: laterality only, enumeration only, and enumeration plus laterality. + +**Status.** Implemented example. + +**Implemented.** The identifier pattern in the published schema admits arbitrarily many joined +identifiers, and 1,010 of 2,890 shipped entries carry a composite identifier. +`data/body_parts_schema.json` and `data/body_parts.json @ anatomiclocations.org main 1f39fa4`. + +**Evidence.** +- The Anatomic Locations Index manuscript, Methods "Synthetic term generation" — the three patterns + with worked identifiers and counts, and the Discussion caveat that the count should not be read as + evidence that established ontologies lack mechanisms for adding concepts, because these gaps are + specific to one lexicon and do not generalise. `sources/bucket/text/jdim-02183.md` +- The laterality conventions reference — the modifier identifiers and the compound form as a curation + rule rather than a description. + `.claude/skills/manage-anatomic-locations/reference/laterality-conventions.md @ findingmodel main 75afd39` +- "The Anatomy Axis, Current State" §1 — the compound identifiers named as "the exception the RadLex + track will remove by minting real ids". + `docs/next-gen-schema/11-anatomy-axis.md @ next-gen-2026 44836c1` + +**Related.** D1, D3, D6. + +**Disagreements.** The manuscript records the cost as a limitation: systems built on the underlying +lexicon will not recognize compound identifiers without an added mapping layer. + +--- + +## D5. Measuring what existing ontologies actually populate + +**Idea.** Rather than asserting qualitatively that existing ontologies are unsuitable, measure how +completely each one populates the containment or part-whole relation it declares, each against its +own anatomy term set so that no resource is penalized for covering more or less anatomy. The reported +result is that in none of the three can software start at a structure and follow the declared +relations up to a whole-body class. The stated interpretation is not that the resources are defective +but that none was built to answer what encloses the structures radiologists name. + +**Status.** Implemented example (a reproducible measurement); under review, not published. + +**Implemented.** The measurement is specified to be recomputable: each count derives from a named +relation and a stated term set, with per-resource derivations given in supplementary methods, and a +best-case re-measurement pools every declared relation plus subproperty and inverse forms and repeats +the analysis. `sources/bucket/text/jdim-02183.md`, Methods. + +**Evidence.** +- The Anatomic Locations Index manuscript, Methods "Measuring containment in existing resources" and + Results — the method, the pooled best case, and the finding that nearly half of one resource's + anatomy concepts have more than one taxonomic parent so that following it branches rather than + yielding a single chain. `sources/bucket/text/jdim-02183.md` +- The project site's homepage, Introduction — the earlier qualitative version of the same argument: + lack of desired terms, too many unnecessary or degenerate terms, limited anatomic organization. + `docs/index.markdown @ anatomiclocations.org main 1f39fa4` + +**Related.** D1, D6, F2. + +**Disagreements.** The webinar compresses the result into a ratio, "11.5× the containment coverage of +RadLex", which appears in no other source in that form. +`sources/bucket/text/ipl-webinar-deck.md`, slide 31 + +**Undetermined.** The manuscript states plainly that the study does not measure downstream utility: +no benchmark, user study or deployment demonstrates that the hierarchy improves retrieval, tagging, +labeling or correlation. It asks to be read as a descriptive resource paper. + +--- + +## D6. An overlay on RadLex, not a competitor + +**Idea.** The curated set began outside RadLex because RadLex lacked the coverage and structure +imaging needed, but was keyed to RadLex identifiers throughout, and its relationship is now stated as +an overlay: RadLex concepts and predicates sit underneath, and the file adds identifiers RadLex lacks, +its own containment and part-of hierarchies, and laterality. It is described as the basis of the +RadLex anatomy axis going forward because the RadLex anatomy track is editing it, with aiming at the +published release compared to editing a three-year-old version of a document others have been +editing. A location's identifier is its RadLex identifier, and a RadLex code is never shown beside a +location because the location code *is* the RadLex code. + +**Status.** Stated goal ("this will be blended in with RadLex"); working proposal recorded as agreed +on 2026-09-13; incorporation in progress. + +**Implemented.** The current package data is pointed to at a pinned commit rather than copied. The +gap between what the file has and what it lacks is tracked as a running list of specific node +requests fed upstream — lung parenchyma, perirenal space and its sided forms, pericardial space, +subarachnoid space, and real identifiers for the compound sided variants. +`docs/next-gen-schema/11-anatomy-axis.md` and `docs/next-gen-schema/04-anatomy-gaps.md @ next-gen-2026 44836c1`. + +**Evidence.** +- "The Anatomy Axis, Current State" §1 and §4 — the overlay statement dated 13 September 2026, the + three-year-old-document argument, and a dated record of what was agreed on three occasions. + `docs/next-gen-schema/11-anatomy-axis.md @ next-gen-2026 44836c1` +- "Current Understanding" §2.6 — "It is now a subproject of RadLex and is imminently becoming an + identified collection within RadLex itself", with the synthetic nodes expected to receive real + identifiers. `docs/next-gen-schema/00-current-understanding.md @ next-gen-2026 44836c1` +- The Anatomic Locations Index manuscript, Discussion, future work — incorporation by the RSNA RadLex + Committee described as underway, covering the terms themselves, with the note that a prospective + process for revising and periodically reviewing the hierarchy still needs to be defined. + `sources/bucket/text/jdim-02183.md` + +**Related.** D4, D5, D7, F2. + +**Disagreements.** An external reviewer's alpha extracts a RadLex subset with local wrappers where the +agreed substrate is the pinned overlay; recorded as decision area ST06. +`docs/next-gen-schema/12-alpha-structural-comparison.md @ next-gen-2026 44836c1` + +--- + +## D7. The missing is-a and structure-type layer + +**Idea.** The curated set has containment and part-of but no taxonomic relation and no structure-type +nodes, so a statement like "this finding applies to tendons" cannot be made. This is recorded as the +major shortcoming and the first thing to resolve. RadLex can supply a first layer without inventing +anything, because every plain-identifier location has a taxonomic chain in the published ontology, +yielding several hundred locations under each of muscle, artery, vein, tendon and bone. Two cautions +accompany it: the ontology's own release note warns that some taxonomic categorizations were +converted from part-of and may be wrong, and the deep formal chain is not the clinically useful +layer. + +**Status.** Working proposal (a derived, pinned overlay handed to the anatomy track); stated goal +(two scope families to develop). + +**Implemented.** The second-generation record model on an unmerged content branch already carries +taxonomic identifiers alongside new relations for vascular structure — branch-of and flows-to — on +several hundred records, so the shape has been tried as data even though it was never merged. +`updates/ @ anatomiclocations.org content_work 35624d7`. + +**Evidence.** +- "The Anatomy Axis, Current State" §2, §3 and §5 — the has-and-lacks table, the derived + structure-type counts with both cautions, and the two scope families (tissue types and structure + types) with their connections to the location hierarchy explicitly still open. + `docs/next-gen-schema/11-anatomy-axis.md @ next-gen-2026 44836c1` +- The anatomy gap log — the running node-request list and the coverage figures behind it. + `docs/next-gen-schema/04-anatomy-gaps.md @ next-gen-2026 44836c1` + +**Related.** D6, F1, F2. + +**Disagreements.** The anatomy axis document separates the project lead's two scope families from +"exploratory ideas from the assistant, not adopted". + +**Undetermined.** Whether the second-generation per-file record model was adopted, rejected, or +superseded. Its field vocabulary differs from the published schema on nearly every field and its +naming is internally inconsistent; there is no design note. Several of its fields do reappear in the +current package's field reference, including a region field and an ACR Common identifier, which the +reference documents but does not explain the provenance of. + +--- + +## D8. Curation rules that make the codes usable + +**Idea.** The value of the index is less the terms than the discipline of the mappings, and the +curation rules are written down. External anatomy coding uses one member of a three-concept family: +the "Structure of ..." concept always, never the "Entire ..." or "... part" forms, because the +structure concept is what the terminology intends for finding sites and procedure sites. Definitions +prefer authoritative sources in a stated order. Synonyms are the clinical shorthand radiologists +actually use. + +**Status.** Implemented example (a curation rule applied by a skill with validation scripts). + +**Implemented.** The management skill ships a lookup script, a sampling script and a validation +script beside the field reference, so a curator adding entries checks candidate codes and validates +the result rather than hand-editing. +`.claude/skills/manage-anatomic-locations/scripts/ @ findingmodel main 75afd39`. + +**Evidence.** +- The anatomic locations field reference, "SNOMED Coding Guidance — The SEP Triad" — the three + concept types with an always/never/never instruction and the reason; and the fallback rule when a + lateralized code does not exist. + `.claude/skills/manage-anatomic-locations/reference/json-schema.md @ findingmodel main 75afd39` +- The same reference, text fields — the region value list and the ranked preference for definition + sources. + +**Related.** D3, D6, F2. + +--- + +## D9. A reference layer, not a labeling algorithm + +**Idea.** The index is a reference and normalization layer, not an automatic labeling system. +Identifiers may be applied at exam or series level to describe anatomy covered, or at report or +finding level to represent where an observation is. Labels may be generated by rules, language +processing or AI and then normalized, but whatever route generates a label, a person or a downstream +check confirms the assigned structure before anything relies on it. Containment then supplies the +broader context without further annotation. The team is explicit that localization is only one +dimension: knowing where a finding is does not establish what kind of process it is, how long it has +been present, whether it is transient, or whether it is the same lesion recorded elsewhere. + +**Status.** Stated goal; implemented example of the roll-up. + +**Implemented.** Every finding is anchored to a specific location code and the containment hierarchy +rolls it up to a top-level body region, so a patient is presented as an anatomy dashboard organized +by where findings are rather than by which report they came from. The demonstrated viewer shows the +gap honestly, with a banner admitting two findings have no specific anatomic location. +`sources/bucket/text/ipl-webinar-deck.md`, slides 31 and 33. + +**Evidence.** +- The Anatomic Locations Index manuscript, Discussion — the reference-layer statement, the + confirm-before-relying rule, the roll-up example, and the explicit one-dimension limit. + `sources/bucket/text/jdim-02183.md` +- The anatomic location assignment rules — the three-step precedence ladder used by the extraction + platform: explicit anatomy in the text, then the finding's own target organ, then the exam-scoped + coarse region, with laterality following the same shape. + `knowledge/data-structures/anatomic-location-assignment-rules.md` + +**Related.** C1, D1, E2. + +**Disagreements.** None recorded. The webinar's four foundation-context dimensions are the team's own +answer to the one-dimension limit the manuscript states. + +--- + +# E. Exam types + +## E1. Preferred high-level exam entries over the Playbook + +**Idea.** Exam types should be a thin wrapper over an existing governed knowledge graph — the +LOINC/RSNA Radiology Playbook together with RadLex — rather than a new vocabulary. What the wrapper +adds is a set of *preferred* high-level entries at the granularity clinicians and systems use, such +as CT Chest, MRI Brain and X-ray Knee, marked as preferred among the many codes describing variants +of the same study. The idea is four years old in nearly the same words. + +**Status.** Stated goal only, restated across four years and three documents. No artifact exists. + +**Implemented.** Nothing models exams, studies, procedures or protocols in the finding model +repositories; there is no exam-type entity and no exam-to-finding relationship. Exam identity does +real work in the extraction platform only as a bare code in an exam header and as the bottom rung of +the anatomy precedence ladder. +`knowledge/semantic-foundation/exam-types/existing-building-blocks.md`. + +**Evidence.** +- The project lead's stated goals — "Needs wrapper tooling around the knowledge graph represented by + RadLex LOINC playbook" and "Need to define the PREFERRED high-level entries". + `knowledge/plans/2026-09-20-knowledgebase-build-plan.md` +- The project site's roadmap — a companion for exam types based on Playbook exam definitions, listed + under content tasks and unchanged since January 2023. + `docs/index.markdown @ anatomiclocations.org main 1f39fa4` +- The "Common Anatomic Locations" board, "Active Issues" box — exam type definitions of the most + common exams based on LOINC with common identifiers, listed as an active issue beside the anatomy + work. `sources/excalidraw-diagrams.md` +- "Product direction: an agent-ready medical terminology graph gateway" — the only written design: a + radiology domain profile in which "orderables live in the LOINC/RSNA Radiology Playbook, while + findings, anatomy, and report language live in RadLex", with Playbook-weighted ranking, legacy + identifier detection, and taught crosswalk correspondences. Recommended direction, not built. + `docs/product-roadmap.md @ med-ontology-lookup main a1fd3ae` +- The chest CT coverage roadmap — an earlier, cruder form of the same coupling: a per-exam finding + table with frequency, priority, a RadElement set link where one exists, and a RadLex identifier + column. `definitions/upmedic/roadmap.md @ CDEStaging main b814a10` + +**Related.** B7, D9, E2, F1. + +**Undetermined.** Nothing found states why the exam-type library was never built while the anatomic +location library was. + +--- + +## E2. Exam-to-anatomy inclusion edges and the imaging region + +**Idea.** What makes an exam type more than a code list is typed edges to the anatomy it covers, +distinguishing anatomy that is *always* included, which may be expressed as a hierarchy rather than a +flat list, anatomy that is *usually* included for edge cases, and anatomy that is *possibly* included +and would have to be checked. The 2024 board states the same requirement as defining an imaging +region: a CT chest region contains the chest but also what a radiology exam of the chest would +include, such as the lower neck, the upper abdomen and the shoulders. The 2023 roadmap puts it as +exam definitions specifying all *included* body parts. + +**Status.** Stated goal only. No artifact. + +**Implemented.** Nothing. The nearest running behaviour is the finding-scope rule applied by +judgment: a finding model's scope should match what is assessable on a given exam type, which is why +"chest wall fracture" and "upper abdominal abnormality" exist as models. Nothing checks a model's +scope against a coded exam type, because there is nothing to check against. +`prompts/fragments/scope_and_specificity.md @ findingmodels taxonomy-export-2026-08-15 a30c3c9`. + +**Evidence.** +- The project lead's stated goals — the three edge kinds named, with the hierarchy note on "always + included". `knowledge/plans/2026-09-20-knowledgebase-build-plan.md` +- The "Common Anatomic Locations" board, "Exam Types" box — the imaging-region definition with the + lower-neck, upper-abdomen and shoulders example. `sources/excalidraw-diagrams.md` +- The Anatomic Locations Index manuscript, Discussion — the same capability named from the other + side, as something the index does not supply: relating a finding's location to what an exam covers + would additionally require a model of scan-protocol coverage. The use case it would serve, + identifying relevant prior studies covering overlapping anatomy even when acquired for different + purposes, is stated in the same section. `sources/bucket/text/jdim-02183.md` + +**Related.** A4, D1, D9, E1. + +**Undetermined.** Whether "always / usually / possibly" means three edge types, one edge with a +strength property, or something else. The goal statement does not say. The strength-bearing guidance +model in F1 is a different mechanism for a different purpose. + +--- + +# F. The next-generation vocabulary and the terminologies + +## F1. Anatomic scope, not location + +**Idea.** The vocabulary owes each finding class a statement of which anatomic locations are +congruent with it, and calling that field "location" is wrong because the statement ranges over three +different kinds of thing and only two are spatial: a named structure checked by identity or descent, +a region checked by containment, and a *structure type* such as arteries or tendons checked +taxonomically, "not spatial at all" — tendons are scattered across the body and share no common +container. Guidance is not a location: a clavicle fracture class records the clavicle while an actual +fracture is at the left clavicle. Guidance also varies in strength, from definitional through very +weak to not anatomic at all, so it records its strength. A companion idea removes the need for a +finding class in a whole category of reporting: a location can bind directly to data elements and +measurements, so describing normal anatomy — bile duct calibre, ovarian volume, endometrial thickness +— needs no finding class at all, and a binding on the unsided organ is satisfied by an observation on +a sided one without copying the edge. + +**Status.** Working proposal, with several parts recorded as owner decisions and explicitly not +jointly settled. + +**Implemented.** Scope resolution works today by plain traversal against the anatomy data for two of +the three kinds; the third waits on the missing taxonomic relation (D7). Worked location and element +examples are committed as data. +`docs/next-gen-schema/examples/common-bile-duct.location.json @ next-gen-2026 44836c1`. + +**Evidence.** +- "What the Vocabulary Must Express" §2 — the three kinds with how each is checked, the + guidance-is-not-a-location distinction, and §2.1's list of places that are not structures + (potential spaces, cavities, zones, interfaces, positions relative to a landmark) with the warning + that a vocabulary unable to express them will see authors invent ungrounded value sets again. + `docs/next-gen-schema/01-what-the-vocabulary-must-express.md @ next-gen-2026 44836c1` +- The same document §2.3 — the strength table from definitional (pulmonary nodule in lung) through + very weak (metastasis) to not anatomic (free air, "air where air should not be"). +- The same document §3 and §3.1 — the breadth argument that finding classes must cover more than + abnormalities, and the direct-binding decision for normal structures with what it buys and what it + requires. + +**Related.** D1, D2, D7, F3. + +**Disagreements.** Recorded as decision areas ST07 and ST08 against an external reviewer's alpha, +where scope kinds and the laterality treatment differ across code paths. Whether guidance records +which kind it is, and how binding it is, remain open as Issue H. +`docs/next-gen-schema/12-alpha-structural-comparison.md` and +`docs/next-gen-schema/00-current-understanding.md @ next-gen-2026 44836c1` + +--- + +## F2. Terminology roles, and search recall as the gate + +**Idea.** Each terminology has a stated role. RadLex is the foundation for findings, anatomy and +report language, chosen for coverage at the granularity radiologists report, governance with a +defined pathway for contributing terms back, and stable identifiers. SNOMED CT is the cross-reference +for enterprise coding, and is what DICOM's anatomic region sequence and FHIR's body-site value sets +already bind to, so the index sits above the coding scheme rather than competing with it and adoption +proceeds through existing bindings. LOINC and the Playbook own orderables. A connected idea concerns +search quality: a lookup that fails silently is worse than one that fails loudly, because an agent +then concludes the concept is missing and proposes a duplicate. The stated target is "recall good +enough that a MISS is real evidence of an ontology gap rather than evidence of unlucky phrasing." + +**Status.** Implemented example (the cross-references, the search rework, the lookup gateway); stated +goal (the interoperability-through-existing-bindings argument). + +**Implemented.** Search keeps exact label and synonym tiers as the *confidence* signal and adds +full-text relevance ranking as the *recall* layer, emitting a categorical match type rather than a +score because scores are not comparable across queries, with a per-query relative cutoff. A tokenizer +override was required because the default deletes every digit at index and query time, which matters +for vertebral levels, assessment categories, sequence weightings and isotopes. A measured evaluation +compared three arms and concluded that the exact tier earns its place on confidence rather than +ranking, so "the original metric was the flawed part, not the design". The terminology gateway +queries each ontology separately and interleaves results so the largest source cannot hide the +others, resolves a term, code or concept identifier by auto-detecting its shape, and uses medical +shorthand rather than raw type codes in its filters. +`docs/plans/hybrid-fts-search.md @ RadLex experiment/kg-radlex-parsing 5162a65`; +`README.md` and `src/med_ontology_lookup/ @ med-ontology-lookup issue-3-typed-provider-failures 9cc3eec`. + +**Evidence.** +- "Hybrid FTS search" — the false-gap failure mode named as the worst one the project has, the + alphabetical-ranking example, the design, the tokenizer finding with its measured share of affected + labels, and the evaluation with its own correction. + `docs/plans/hybrid-fts-search.md @ RadLex experiment/kg-radlex-parsing 5162a65` +- The Anatomic Locations Index manuscript, Methods "Term selection" and Discussion — why RadLex was + chosen as the foundation, the recommendation of SNOMED CT for enterprise coding and the distinction + between filling a coding role and populating containment, and the DICOM and FHIR binding argument. + `sources/bucket/text/jdim-02183.md` +- "RadLex baseline" — direct verification against the published ontology, including that its external + references run through one untyped string property dominated by one source and that SNOMED mapping + is effectively absent, contradicting a committee assumption. + `docs/next-gen-schema/05-radlex-baseline.md @ next-gen-2026 44836c1` +- "Product direction: an agent-ready medical terminology graph gateway" — the stated boundary that + this is a gateway and not a terminology source, the explicit non-goals, and the insistence that a + shared concept identifier "is evidence of connection, not proof of exact equivalence". + `docs/product-roadmap.md @ med-ontology-lookup main a1fd3ae` +- The project review and proposal — typed provider failures with a reproduced authentication failure + silently converted into an empty result, and the requirement that a collection result distinguish + complete, partial, failed and capped outcomes because "A plain list cannot communicate whether it + is complete". `docs/project-review-and-proposal.md @ med-ontology-lookup docs/reviewed-proposal-backlog f059792` + +**Related.** C3, D5, D6, E1. + +**Disagreements.** The manuscript treats SNOMED CT as the enterprise coding target to cross-reference; +the next-generation vocabulary treats RadLex as the thing to stay close to and treats the SNOMED +mapping gap inside RadLex as a problem to work around. + +--- + +## F3. Contributing terms back, and the two-phase proposal loop + +**Idea.** Gaps found while using a terminology are fed back to it rather than patched locally. An +agent reads a report, searches the graph, confirms each hit, redirects obsolete concepts to their +replacements, and decides whether each term is genuinely present — "a loose keyword overlap is not +enough, and a broader or related concept does not count as a match". For each unmatched term it then +proposes a new concept with the closest existing parent, a precise term, a rationale for why this is +a genuine gap and why that parent is the closest fit, and optional typed relationships, under the +rule "Only include a relationship if you found a real existing RID for the other end of it; do not +guess a RID." + +**Status.** Implemented example (the mechanism); the corresponding curation gate exists separately. + +**Implemented.** Proposals are validated against the graph before being appended: unknown +identifiers, unused relation types and blank names or rationales are rejected, and the whole batch +fails together because the output file is append-only and a candidate pointing at an invented +identifier cannot be reviewed. On the ontology side, every push runs a reasoner consistency check and +report checks, catching inconsistent logic and accidental duplicate or merged terms before they land. +`.claude/skills/radlex-concepts/SKILL.md @ RadLex experiment/kg-radlex-parsing 5162a65`; +`docs/TESTING.md @ RadLex main 13a5abe`. + +**Evidence.** +- The extract-concepts and suggest-concepts skill documents — the two phases with their acceptance + rules and the no-guessed-identifier constraint. + `.pi/skills/extract-radlex-concepts.md` and `.pi/skills/suggest-new-concepts.md @ RadLex experiment/kg-radlex-parsing 5162a65` +- The ontology testing document — the continuous-integration checks and what they are meant to catch. + `docs/TESTING.md @ RadLex main 13a5abe` +- The Anatomic Locations Index manuscript, Methods "Term selection" — a defined pathway for + contributing terms back named as one of three reasons the lexicon was chosen as the foundation. + `sources/bucket/text/jdim-02183.md` + +**Related.** D6, D7, F2. + +**Undetermined.** Whether any proposed concepts were actually submitted. The candidate output file is +excluded from version control and absent; the repositories describe the proposal mechanism and the +curation gate but nothing connects the two. + +--- + +## F4. The finding model relationship registry + +**Idea.** The finding model source schema draft proposes that a model store only the relationship +assertions authored on it, with authors never maintaining both sides of an inverse pair, and tooling +deriving inverse and symmetric views from a checked-in registry in which each relationship type +declares whether it is inverse-backed, symmetric, or one-way. The same draft separates a *source* +model, which may refer to a canonical shared attribute file instead of redefining presence and change +from prior inline, from a *hydrated* model in which those references are expanded, with runtime +operating on the hydrated form. Governance moves to per-model history sidecars recording who or what +acted. + +**Status.** Working proposal only. + +**Implemented.** Nothing. The relationship registry exists only in the draft; the live corpus +implements no relationship mechanism at all. The one relationship-shaped construct that does exist in +the corpus is the associated-findings attribute (A10), which references other models by name rather +than by identifier. + +**Evidence.** +- "FindingModel Source Schema v2 Draft" — the source-versus-hydrated distinction, canonical attribute + reuse with the two permitted overrides, the relationship-authorship rule, the registry semantics + with three worked pairs, and the corpus layout placing models, attributes and registries side by + side. `notes/oifm-schema-v2-draft.md @ next-gen-2026 44836c1` +- "The Finding and Diagnosis Relationship Family" §6 — the correction recording that this registry + exists only in the draft and that the live repository implements nothing, verified against the + repository on 2026-09-01, which makes the finding model work "a potential consumer of this family + rather than prior art to reconcile with". + `docs/next-gen-schema/07-relationship-family.md @ next-gen-2026 44836c1` + +**Related.** A10, B1, F5. + +**Disagreements.** The two designs differ on shared attributes. The draft allows a model to reference +a canonical attribute; the graph design makes a shared element one node with one identity, and +"Current Understanding" §5.1 names the file-based copy-on-reference choice as the reason bringing +models over is "a review step, not a bulk import". + +**Undetermined.** Whether this draft is live. It is dated April 2026 and nothing in the finding model +repositories implements it. + +--- + +## F5. The relationship family and the derived differential + +**Idea.** Seven relationship pairs plus a catch-all connect finding classes and diagnoses, with +manifestation and causation kept strictly apart: a striated nephrogram *is* pyelonephritis appearing +on imaging, while a renal abscess is a distinct second entity pyelonephritis produced. The test +offered is whether a clinician would say the source "got better" or that "a complication resolved". +Manifestation edges carry two optional independent properties, a typicality scale adopted verbatim +from an existing phenotype-frequency standard with its percentage anchors, and a three-value +specificity scale omitted entirely when uninformative because an absent property means no judgment +was recorded. The differential is not an edge type at all but a derived view: the diagnoses reachable +over the manifestation inverse, filtered by context and ranked. A missing edge between habitually +confused diagnoses means a finding class is missing, not that a workaround edge is needed. A report +edge and a class edge are different assertions, which forces a vocabulary relationship to have +identity of its own so a report edge can cite the potential it expresses. + +**Status.** Working proposal, explicitly tentative and non-comprehensive; implemented at prototype +scale. + +**Implemented.** The worked pyelonephritis and pleural effusion families exist as committed graph +data and as generated diagrams, and the September 2026 deck renders one report's six observations +against their class definitions, showing report-plane edges as a separate family from class edges. +`docs/next-gen-schema/graph/pyelonephritis.jsonl` and `docs/next-gen-schema/examples/ @ next-gen-2026 44836c1`; +`sources/bucket/REPORT.md` §6. + +**Evidence.** +- "The Finding and Diagnosis Relationship Family" §1 to §6 — the family table with domains and + ranges, the manifestation-versus-causation test, the two property scales with their sources and the + reason one takes a numeric escape hatch and the other does not, the derived-differential argument + with its precedent, and the prior-art anchor table. + `docs/next-gen-schema/07-relationship-family.md @ next-gen-2026 44836c1` +- "Current Understanding" §1.3 — the two-level argument and the identity consequence. + `docs/next-gen-schema/00-current-understanding.md @ next-gen-2026 44836c1` +- "The Mat and the Tree" §2.3 — the display specification's card frame, whose bottom row carries + exactly the foundation-context axes of C1: modality, region, subspecialty, sex, age, course, + etiology. `docs/next-gen-schema/09-mat-and-tree.md @ next-gen-2026 44836c1` + +**Related.** A9, C1, F1, F4. + +**Disagreements.** Recorded within the document: the negative typicality value "sits oddly" on an edge +named for manifestation and the alternative of a separate negative edge type is flagged; whether the +causal pair also takes typicality is left open. A separate two-sided fork is recorded as undecided: +an external reviewer's engineering memo recommends a condition on the edge where an existing element +value controls a relationship's applicability, reserving subtyping for independently meaningful class +identity, while the project lead's counter-proposal is subtype classes. The memo carries its own +warning that reading only it gives a one-sided picture. +`notes/conditional-relationships-memo.md @ next-gen-2026 44836c1` + +--- + +## F6. Measurement, method, and interpretation are three things + +**Idea.** "Peak systolic velocity is 350 cm/s" and "this represents hemodynamically significant +stenosis" are two assertions with different truth conditions, different provenance, and different +failure modes. The stated reason for keeping them apart is durability: thresholds move while +measurands and methods do not, so storing the interpretation makes the data wrong and unrecoverable +when criteria are revised, while storing the value plus a separate interpretive assertion citing the +criteria it applied lets the interpretation be re-derived and the change audited. Three corollaries +follow: confidence belongs to the interpretation, because one does not *possibly* measure 350 cm/s; +measurements must stand alone, because radiologists frequently report them with no interpretation at +all; and measurement becomes a definition type distinct from a data element, with method optional +and by default unspecified, so an absent method must not be filled with an assumed default. + +**Status.** Working proposal, recorded as an owner decision within the branch. + +**Implemented.** Measurement definitions exist as committed example data with their quantity, units +and range, separate from the categorical element definitions. +`docs/next-gen-schema/examples/size-mean-diameter.element.json @ next-gen-2026 44836c1`. + +**Evidence.** +- "What the Vocabulary Must Express" §4 — the two-assertion argument, the + thresholds-move-measurands-do-not principle with a twenty-five-year illustration from a standard + measurement atlas, the three corollaries, and the decision separating measurement from data + element with method optional. + `docs/next-gen-schema/01-what-the-vocabulary-must-express.md @ next-gen-2026 44836c1` +- The same document §4.2 — the note that this principle is already written down in narrower form in + the finding model guidance, which separates a nodule model from its risk-category model because + different radiologists assign different categories. + +**Related.** A9, F1, F5. + +**Disagreements.** Recorded as decision area ST09 against an external reviewer's alpha: the two +implementations have separate node families but "common binding behavior and interpretation links +need agreement". `docs/next-gen-schema/12-alpha-structural-comparison.md @ next-gen-2026 44836c1` + +--- + +## F7. Finding models as the CDE workbench + +**Idea.** Finding models are not a lightweight copy of common data elements; they are the fast, +ungoverned proving ground ahead of them. The January 2026 status deck names this "OIFM: the CDE +workbench" — rapid innovation ahead of adoption, programmatic knowledge for tools and model context, +and exploratory metadata "that can graduate to standards". The allied side states the other half: the +finding model effort "has independently built much of this and is roughly one iteration ahead", and +its models can be treated as drafts for finding classes, brought over for review rather than authored +from scratch. The project lead's own statement is shorter: the common-data-element work "should +dovetail with the OIFM work". + +**Status.** Stated goal in both directions; implemented example running in the opposite direction. + +**Implemented.** 115 of 2,382 models carry the common-data-element organization code, contributed with +an organization record naming the ACR/RSNA project and an index code in the RadElement system pointing +back at the set they came from. That index code is the join that lets a finding-model pipeline emit +common-data-element-labeled output. The chest CT content branch vendors 145 raw set definitions and a +converter beside them. +`ids.json @ findingmodels taxonomy-export-2026-08-15 a30c3c9`; +`cdes/definitions/` and `scripts/cde_to_finding_model.py @ content/chestcts 0472a46`. + +**Evidence.** +- The January 2026 status deck extract — the workbench framing and the "workbench effect" in the + executive summary. `knowledge/references/status-update-2026-01.md` +- "Current Understanding" §5.1 — a seven-row table of what the finding model work already answers + (decoupling, source versus hydrated form, quantity kinds, a relationship registry, governance + sidecars, metadata vocabularies, modelling guidance) and the caveat about bringing models over. + `docs/next-gen-schema/00-current-understanding.md @ next-gen-2026 44836c1` +- The staging repository's self-description and extraction-process note — "a staging area for + definitions of radiology common data elements in JSON format ... prior to their entering the review + pipeline", and a worked conversion of report language into what it calls mini-observations. + `README.md` and `docs/report_extraction_process.md @ CDEStaging main b814a10` + +**Related.** B2, B8, C3, F8. + +**Disagreements.** How the crossover works is explicitly open: a shared identity space and canonical +element registry, or a crosswalk maintained as a first-class deliverable. "Current Understanding" +Issue F states both and chooses neither. The practical asymmetry is recorded elsewhere: the IHE draft +prefers a common-data-element set code in the slot a finding model would occupy, and a model that has +not graduated has no set identifier to put there. + +--- + +## F8. Measuring coverage by running real reports against the vocabulary + +**Idea.** The gaps in a finding vocabulary are found by taking real report text and recording what it +says that the definitions cannot carry. Three gap classes are catalogued separately, each as a plain +list. *Composite negative statements* are sentences asserting absence across several structures at +once, often bundled with a technique limitation, which no single finding-plus-presence pair +represents. *Uncovered findings* are things reports say for which no definition exists at all. +*Missing attributes* are findings whose definition exists but which the report characterized along an +axis the definition does not carry, each entry linking to the specific definition file that fell +short. + +**Status.** Implemented example (the catalogues exist as data); the method is described but not +automated. + +**Implemented.** The extraction process document works one real pulmonary angiogram report into a +list of mini-observations, each a finding with a presence value and its attributes, and states the +two follow-up tasks that produced the catalogues: align finding, attribute and value names with the +definitions, and collect blanket negative statements into a separate file to catalogue and examine. +`docs/report_extraction_process.md @ CDEStaging main b814a10`. + +**Evidence.** +- The composite negative statements catalogue — real sentences grouped by body region, including + cases that bundle an absence with a technique caveat about contrast limiting sensitivity. + `report_representation/negative_statements.md @ CDEStaging main b814a10` +- The uncovered findings catalogue — findings with their reported attributes and no definition behind + them. `report_representation/uncovered_findings.md @ CDEStaging main b814a10` +- The missing attributes catalogue — each entry naming the finding, the attribute the report used, + and a link to the definition file lacking it. + `report_representation/missing_attributes.md @ CDEStaging main b814a10` +- The chest CT coverage roadmap — the same coverage question asked prospectively instead, as a + frequency-and-priority table per exam with a RadElement set link where one exists. + `definitions/upmedic/roadmap.md @ CDEStaging main b814a10` + +**Related.** A4, B7, F7. + +**Disagreements.** None recorded. + +**Undetermined.** Whether the three catalogues were ever acted on. They are dated 2024 to 2025 and no +document records a disposition. + +--- + +# What could not be determined + +1. **Whether the finding model format and the next-generation vocabulary converge on one artifact.** + Both sides state the relationship as a direction. Issue F of "Current Understanding" records the + mechanism as open and nothing decides it. +2. **What the project lead means by "interesting relationship/graph work coming from CDEs" for the + finding model format.** The relationship family (F5) and the draft registry (F4) are the candidate + artifacts; no document connects them to that goal statement. +3. **Whether the finding model relationship registry draft is live.** Dated April 2026, implemented + nowhere, and corrected in the relationship-family document as draft-only. +4. **Whether the exam-oriented sub-taxonomy hierarchy is meant to enter the schema**, and what + `finding_cluster` means. Declared in the taxonomy README, never explained, populated in one file. +5. **How the sub-taxonomy anatomic category relates to the metadata body-region enumeration.** The + categories are finer and not obviously mappable; no crosswalk exists on any branch read. +6. **Whether the eight structured metadata fields will land on the released branch.** Implemented on + a branch, readiness recorded as not passing, nothing merged, and the branch carries breaking + enumeration and validation changes not stated as agreed. +7. **How extracted sub-findings link to their parents.** Named as an open design problem on the chest + CT branch; no mechanism anywhere. +8. **Whether the second-generation per-file anatomy record model was adopted, rejected, or + superseded.** Hundreds of data files on an unmerged branch, inconsistent field names, no design + note, though several of its fields reappear in the current package's field reference. +9. **What the ACR Common identifier on anatomic location records is** — code system, issuing + authority, relation to RadLex identifiers. It appears as a bare numeric string in the field + reference and on the unmerged branch, and the name change from Body Part Index to Anatomic + Locations Index is nowhere explained. +10. **Why the exam type library was never built.** Four statements of the goal across four years; no + document explains the gap. How "always / usually / possibly" would be represented is equally + unstated. +11. **Whether proposed RadLex concepts were ever submitted**, and whether the three report-derived gap + catalogues were ever acted on. +12. **Whether the RSNA/ACR committee has seen or assented to any decision after June 2026.** The + decision record's provenance is the project lead and an assistant throughout; the last recorded + committee event is a meeting on 12 June 2026. + +--- + +# Proposed idea pages for this area + +Each page is one explanatory home; the ideas it houses are listed by inventory identifier. + +| Page | One line | Houses | +|---|---|---| +| `finding-model` | What a finding model is, what it contains, and the identifiers that carry its provenance. | A1, B1 | +| `what-counts-as-a-finding` | The boundary rules, the specificity rules, negative assertions, and the deliberate blending of description and diagnosis. | A2, A3, A4, A5 | +| `finding-model-conventions` | The operational rules the team enforces: presence and change from prior, synonyms as a matching surface, naming, associated findings versus components. | A6, A7, A8, A10 | +| `assessment-and-measurement` | Why a score is modelled apart from what it scores, and why a measured value is a separate assertion from its interpretation. | A9, F6 | +| `authoring-finding-models` | How content is actually produced: stubs and iteration modes, triage before create, three-tier review with context isolation, and why the prompts are fragments. | B3, B4, B5, B6 | +| `finding-model-content` | The corpus as merged provenance streams, the exam-oriented sub-taxonomies as direction and coverage ledger, convert-and-merge, and the upstream proposal loop. | B2, B7, B8, B9 | +| `foundation-context` | The eight metadata fields, each defined by what it excludes, and the exactness rule for index codes. | C1, C2, C3 | +| `assigning-metadata` | Focused agents, advisory audit, null as an answer, human review as the only authority, and how the artifacts are published. | C4, C5, C6, C7 | +| `finding-model-retrieval` | The three retrieval modes and the overlap check that runs before anything is authored. | C8 | +| `anatomic-location-index` | Containment as a single-parent tree, part-of kept separate, laterality triads, synthetic terms, and the curation rules that make the codes usable. | D1, D2, D3, D4, D8 | +| `why-anatomic-locations` | What was measured about existing ontologies, and what the index is and is not for. | D5, D9 | +| `anatomic-locations-and-radlex` | The overlay relationship, the missing taxonomic layer, and contributing terms back. | D6, D7, F3 | +| `anatomic-scope` | How a finding class says where it belongs, and how normal structures are described without one. | F1 | +| `exam-type` | Preferred entries over the Playbook and the inclusion edges to anatomy. | E1, E2 | +| `next-generation-vocabulary` | The redesign of the common-data-element vocabulary and the relationship family, including the draft finding model registry it corrects. | F4, F5 | +| `finding-models-and-cdes` | The workbench relationship in both directions, and how coverage is measured against real reports. | F7, F8 | +| `terminologies` | The role each vocabulary plays and why search recall is the gate. | F2 | + +Seventeen pages. `assessment-and-measurement` is small and may fold into `what-counts-as-a-finding` +if the measurement-versus-interpretation material from the next-generation work is thin once drafted. +Whether `next-generation-vocabulary` stays one page or splits by node types and relationships is a +drafting decision, not an inventory one. + +# Existing bundle pages holding unique team-authored material + +Each is the only durable copy in this repository of something the team wrote. They must be rehomed +before their current pages are removed. + +| Page | Unique material | Proposed home | +|---|---|---| +| `references/oifm-overview-extract.md` | The full upstream finding model guidance, quoted by four other pages. The prompt fragments now supersede it as the live source, but this is the only copy of the consolidated form. | Keep as a supporting reference linked from `what-counts-as-a-finding`. | +| `references/oifm-metadata-fields-extract.md` | The field-by-field metadata reference from a gist that is in no repository. | Keep as a supporting reference linked from `foundation-context`. | +| `references/cde-schema-differences.md` | The analysis of where the CDE set schema and the RadElement API diverge. | Keep as a supporting reference linked from `finding-models-and-cdes`. | +| `references/finding-model-schema.md` | The schema in prose. | Fold the load-bearing parts into `finding-model`; the code is the specification, per the team's own decision record. | +| `references/anatomic-location-json-schema.md` | The record shape in prose. | Fold into `anatomic-location-index`, keeping only what prose says better than the field reference. | +| `semantic-foundation/anatomic-locations/laterality-conventions.md` | Migrated laterality conventions. | Fold into `anatomic-location-index`. | +| `data-structures/anatomic-location-assignment-rules.md` | The three-step precedence ladder and the exam-to-region fallback table. | Belongs to the structures and applications area; flagged because `why-anatomic-locations` and `exam-type` both cite it. | +| `semantic-foundation/exam-types/existing-building-blocks.md` | The LOINC code census in the sample data, the Playbook provenance count in the ontology file, the viewer display table, the template corpus. | Reduce heavily; keep the few facts `exam-type` needs and drop the inventory. | +| `roadmap/open-questions.md` | Team questions mixed with agent-found documentation defects. | Split: team questions move beside the idea they belong to; defects go to `sources/upstream-issues-draft.md`. | +| `roadmap/anatomic-locations-and-radlex.md`, `roadmap/exam-types.md`, `roadmap/finding-model-format-evolution.md`, `roadmap/finding-model-content-direction.md` | Stated directions, already sourced. | Fold each into its idea page's direction section. No separate roadmap area for this material. | diff --git a/docs/plans/idea-inventory-structures-and-uses.md b/docs/plans/idea-inventory-structures-and-uses.md new file mode 100644 index 0000000..6fdd091 --- /dev/null +++ b/docs/plans/idea-inventory-structures-and-uses.md @@ -0,0 +1,926 @@ +# Idea inventory: observations, imaging history, applications, and OIDM's purpose + +Status: Working inventory for step 1 of `restructure-around-project-ideas.md`. Not a published page. No idea pages written. + +Scope: 41 distinct ideas (A1-A26 structures, B1-B11 applications, C1-C4 purpose). Area covered: observations and imaging history (Observation, Exam Finding List, Imaging Problem List, Imaging Persona, status and trajectory, succession and linking, provenance and review, application-layer structures versus transport expressions, extraction and coding of findings from reports); the applications and uses the team wants to demonstrate; OIDM's stated purpose and the relationship among its parts. + +## How to read this + +Each idea carries a **statement** in the team's own terms, a **status** (stated goal / working proposal / implemented example; several entries where an idea exists at more than one status), **evidence** as precise pointers, **related ideas**, **unresolved** alternatives with attribution, and **undetermined** where the sources do not settle a question. + +Evidence conventions and short names used throughout: + +| Short name | What it is | Pin | +|---|---|---| +| IPL repo `main` | `openimagingdata/imaging-problem-list`, branch `main` | `06f64a7` (2025-11-18) | +| IPL repo `dev` | same repo, `origin/dev` | `36fa30c` (2026-07-22) | +| JDIM IPL manuscript | "The Imaging Problem List: A Standards-Based Framework for Longitudinal Tracking of Imaging Findings", JDIM-D-26-02980 **R1, under review** | `sources/bucket/JDIM-D-26-02980_R1.pdf`; clean manuscript pp.3-32; printed page numbers cited below | +| JACR IPL manuscript | "Follow-Up Chest CT Reporting Is Mostly Re-Documentation…", **prepared for submission**, blinded | `sources/bucket/text/jacr-ipl-manuscript.md`; supplement `…/jacr-ipl-supplement.md` | +| SIIM webinar | "The Imaging Problem List as an Accelerator for Radiology AI Applications", SIIM Enterprise Imaging Webinar, delivered 2026-07-15, **public** | `sources/bucket/text/ipl-webinar-deck.md`, cited by slide number | +| January 2026 deck | "OIDM 2026 Status Update: Realizing Object-Oriented Imaging Results" | `sources/gamma-2026-status-update.md` | +| Email notes | Project lead's notes on the revised IPL manuscript, 2026-09-19 | `sources/email/2026-09-19-ipl-manuscript-notes.md` | +| Board *n* | Excalidraw board *n* as transcribed | `sources/excalidraw-diagrams.md` | +| example2 study | File-by-file code read of the dev-branch sample data and viewers, 2026-09-21 | `sources/ipl-example2-study.md` | +| Site post | openimagingdata.org Ghost post, dated | live site | + +Other pins: `IPL-MVP-ExtractionAndLabeling` `main` `b06948f` (2025-10-20), branch `origin/Persistent_FHIR_Resources` `5ea6720`; `OpenImagingDataModel.py` `main` `455e5b6` (2024-11-13); `FHIRSamples` `main` `9ae2fa9` (2024-03-13); `UseCases` `main` `71a90d2` (2024-02-26); `CDETemplateDemo` `master` `e09f255` (2023-06-15); `FindingModelForge` `main` `f55dc85` (2025-08-20), `origin/dev` `15d9ebc` (2026-01-02). + +Board sensitivity. Boards 1, 2, 6, 7, 10, 11 and 15 carry named individuals, meeting attendee lists, or vendor-collaboration histories per the sensitivity section of `sources/excalidraw-diagrams.md`. Only schema and data-model ideas are drawn from them here, with organizations named and people, dates tied to people, and meeting histories omitted. Boards 4, 8, 12, 13 and 14 are flagged low or moderate sensitivity with no named individuals. Board 8 is the one flagged as exhibit-ready and public-facing. Response-to-reviewer correspondence in both JDIM PDFs was identified and not read for content, and is cited nowhere. + +## Prompts as primary sources + +The prompts the team wrote carry its operational definitions: what counts as a finding, how presence, negation, hedging, laterality and location are decided, and what a valid extraction is. They are cited here as documents in their own right, by file and constant name, not as "the repository". All are on IPL repo `dev` `36fa30c` unless stated. + +| Document or prompt | What it governs | +|---|---| +| `src/finding_extractor/extractor/prompt.py` | The extraction system prompt, assembled from named blocks: `ROLE_BLOCK`, `CORE_INSTRUCTIONS_BLOCK`, `DEDUPLICATION_BLOCK`, `PRESENCE_BLOCK`, `ATTRIBUTES_BLOCK`, `LOCATION_BLOCK`, `NON_FINDING_BLOCK`, `OUTPUT_FORMAT_BLOCK`; plus `CHUNK_ROLE_BLOCK` and `CHUNK_RULES_BLOCK` for the chunk sub-agent | +| `src/finding_extractor/coding/prompt.py` | Four coding prompts: `FINDING_TERM_SYSTEM`, `LOCATION_TERM_SYSTEM`, `FINDING_CODE_SELECTOR_SYSTEM`, `LOCATION_CODE_SELECTOR_SYSTEM`, each with numbered rules | +| `prompts/validator_prompt_example.md` | The chunk reviewer's system prompt, user-prompt template, and structured response shape | +| `docs/coding-agent-prompts.md` ("Coding Agent Prompts — Draft v2") | The same four coding prompts with a "Design Notes" section explaining why there are four and what each unresolved reason signals | +| `docs/coding-agent-design.md` | The coding pipeline's phases, rationale and tuned parameters | +| `docs/report-sections.md` | The canonical report-section vocabulary, alias table, and detection rules | +| `docs/extraction-internals.md` | Sectioning and chunking behavior, the chunk contract, the reviewer contract | +| `docs/anatomic-location-assignment-rules.md` | The location precedence ladder, laterality, bilateral and specificity rules | +| `docs/technical-imaging-findings.md` | The catalog of modality-specific technical terms and the rule against reinterpreting them | +| `initial-extraction-plan.md` | The original model design and the post-extraction validation design | +| `docs/plans/extractor-evals-redesign.md`, `extraction-reviewer-ux.md`, `extraction-reviewer-workflows.md` | Evaluation honesty, the reviewer instrument, gold adjudication | +| `config.py` in `IPL-MVP-ExtractionAndLabeling` `main` `b06948f` | `EXTRACTION_SYSTEM_PROMPT`, the two-field ancestor of the current model | + +Code behavior is reported as what the software does, in the idea's terms, with a pointer. Installation and usage documentation is not reproduced. + +--- + +# Part A. Observations and imaging history + +## A1. Observation as the atomic unit of an imaging result + +**Statement.** One Observation records one finding asserted on one exam: *what* (a coded finding type), *where* (an anatomic location), and *attributes* (presence indicators, change from prior, measurements, lesion characteristics). The January 2026 deck calls it "the atomic unit" with a "universal structure across systems." + +**Status.** Stated goal (deck); implemented example (every EFL entry in the sample data); working proposal (the typed class model on Board 4). + +**Evidence.** +- January 2026 deck, "Observation object (atomic unit)": "What + Where + Attributes: finding tag + anatomic location + lesion characteristics. Presence indicators, change from prior, measurements. Universal structure across systems." — the deck's own definition of the unit. +- IPL repo `dev` `36fa30c`, `CLAUDE.md` "Domain Model": each EFL finding "has an OIFM code, description, and attributes (presence/absence, change from prior)" plus an optional `anatomicLocation` of `{locationId, locationDisplay}`. — the shape as the repo states it. +- example2 study §1.2: across all 276 EFL entries in `sample_data/example2`, the keys actually used are exactly `observationId`, `findingCode`, `findingDescription`, `attributes[]`, optional `anatomicLocation`, optional `reportText`; every `attributes[]` array has exactly one member and it is always `presence`. — what the implemented example actually carries, as against what the model allows. +- Board 4 ("OIDM Object Model"), class-diagram cluster: `Observation` with `id`, `code` (CDE Set ID), `body_site`, `tracking_id`, `components[]`; `Observation Value` with `code` (CDE Element ID) and `value`. — a typed class proposal including a tracking identifier. +- `OpenImagingDataModel.py` `main` `455e5b6`, `openimagingdatamodel/observation/observation.py`: `Observation` with `id`, `identifier`, `code`, `status`, `subject`, `bodySite`, `derivedFrom`, `component` as a discriminated union of codeable-concept / string / integer / boolean variants; the class docstring states "The Observation class is the model for FHIR Observation objects", and a code comment records a deliberate divergence, that "the FHIR spec has all fields optional, but we require system and code". — the 2024 reference implementation's shape. +- Site post "Findings, CDEs, and Observations", 2023-06-24: "Each `Observation` is labeled with a ACR/RSNA Common Data Element (CDE) Set ID to indicate what kind of finding it is, and the value for each attribute of the finding is labeled with a CDE Element ID." — the definition of "CDE-labeled". +- `IPL-MVP-ExtractionAndLabeling` `main` `b06948f`, `src/schemas.py`: the ancestor `Finding` model is two fields, `name` ("Lowercase finding name") and `present` (bool). `config.py` `EXTRACTION_SYSTEM_PROMPT` asks for "all radiologic findings mentioned" as `{"name", "present"}` pairs, listing pathological findings, anatomical variations, incidental findings and "Negative findings (explicitly stated as absent)". — the minimal starting point the current model grew from. + +**What the code implements.** `src/finding_extractor/models.py` on IPL repo `dev` `36fa30c` defines the current extraction-side Observation as `Finding` with `finding_name`, `presence`, `location` (a separate `FindingLocation` of `body_region`, `specific_anatomy`, `laterality`), `attributes` (a list of open key/value `FindingAttribute`), `report_text` and `source_section`. `initial-extraction-plan.md` records why location is its own structure rather than an attribute: it is "**separate from other attributes** because location is often implied by the exam type rather than stated explicitly." The same plan records the decision to leave the attribute key open: constraining it "would reject valid but uncommon attributes." + +**Related.** A2, A4, A12, A21, A25, C2. + +**Unresolved.** The deck names measurements and lesion characteristics as attributes; example2 populates only presence. Whether the gap is a data-collection artifact or a model position is not stated in any source read. + +**Undetermined.** No committed JSON Schema or Pydantic model for Observation exists in any repository read; `$schema` URLs in the sample files resolve to nothing (example2 study §1.2, IPL repo `main` `CLAUDE.md` "Schema Reference"). + +## A2. Two-level architecture: Exam Finding List, then Imaging Problem List + +**Statement.** Findings are represented at two levels. The Exam Finding List (EFL) is the list of findings declared present or absent on one examination. The Imaging Problem List (IPL) is the patient-level aggregation of EFL observations across examinations into longitudinal entries. The JDIM manuscript states the reason: "A radiologist observes one examination at a time, but their judgments (is this new, is this the same finding) span examinations, so we designed the IPL as a two-level data model." + +**Status.** Working proposal (manuscript, webinar, deck); implemented example (repo, sample data, viewers). + +**Evidence.** +- JDIM IPL manuscript, Methods, "Structure of the Imaging Problem List", printed p.6: the two-level rationale quoted above, and "The first level is the Exam Finding List (EFL): the observations recorded on a single imaging examination." +- JDIM IPL manuscript, printed p.7: "The second level is the IPL itself: a patient-level aggregation of EFL observations across examinations into longitudinal finding entries." +- IPL repo `main` `06f64a7`, `README.md`: EFL is "In the context of an imaging exam, a list of the findings declared as present/absent on that exam"; IPL is "In the context of a patient, the list of findings that have been described as present/absent in exams of the patient." — the repository's own two-level statement, unchanged on `dev`. +- January 2026 deck, strategic pillar 2: "atomic Observation -> Exam Finding List -> IPL -> 'Imaging Persona'." — a four-level hierarchy, of which two levels are built. +- SIIM webinar slide 17 ("Two-level model") and slide 16 (pipeline: "reports → structured extraction → per-exam EFLs → temporal aggregation → the IPL → five downstream application families"). +- IPL repo `dev` `36fa30c`, `scripts/generate_ipl_from_efls.py`: deterministic aggregation of all `*_efl.json` in a directory into one IPL, no model calls (example2 study §3.3). + +**Related.** A1, A3, A5, C2. + +**Unresolved.** The deck's hierarchy has four levels; the manuscript and repository define two. Imaging Persona (A16) is named only in the deck and the boards. + +## A3. The faithful-translation constraint on the Exam Finding List + +**Statement.** The EFL is a near one-to-one translation of what the radiologist asserted on one examination, with no comparison across examinations and no extrapolation beyond the report text. The webinar states the consequence: "nothing invented enters the foundation," which is what lets every derived layer be trusted without re-verification against the source text. The JACR manuscript states the same requirement for its extraction tool: "Our tool was built to transcribe, not interpret." + +**Status.** Working proposal (manuscript, webinar); implemented example with a measured failure mode (JACR extraction tool); implemented example (verbatim-quote validation in the extraction platform). + +**Evidence.** +- JDIM IPL manuscript, printed p.6: "The EFL is intended to be a near one-to-one translation of what the radiologist asserted on one examination, with no comparison across examinations and no extrapolation beyond the report text." +- SIIM webinar slide 17 speaker notes: "That is the source of trust: nothing invented enters the foundation… Put inference in the foundation and you contaminate everything above it." +- SIIM webinar slide 18 speaker notes: "nothing on the right exceeds the sentence it came from: no comparison across exams, no inference." +- JACR IPL manuscript, Discussion: "The record's fundamental building block, the extracted finding, has to stay true to what the board-certified radiologist said… inferring what the radiologist probably meant would introduce unpredictability into the extractions." +- JACR IPL manuscript, Results, "Extraction and matching validity": for at least 3.6% of findings (111 of 3,056) the tool supplied an assertion the radiologist did not write, recording lymph node enlargement for a neutrally stated measurement. The Discussion calls this out: "The label was technically correct, but the tool should still not have supplied the inference." — a measured violation of the constraint by the team's own tool, reported against itself. +- The extraction system prompt states the rule three times. `CORE_INSTRUCTIONS_BLOCK` item 5: "**When quoting report text, BE EXACT** — verbatim excerpts only, never paraphrase". `OUTPUT_FORMAT_BLOCK` closes with "Remember: QUOTE MUST BE VERBATIM. Do not paraphrase or summarize the report text." `CHUNK_RULES_BLOCK` item 6 requires the quote be "a substring copied from the TARGET CHUNK that supports the finding." +- `CHUNK_ROLE_BLOCK` sets an evidence boundary for the chunk sub-agent: "Work only on the TARGET CHUNK text. Adjacent context is advisory only and must not be used as extraction evidence." `prompts/validator_prompt_example.md` repeats it for the reviewer: "Evidence boundary: only REPORT_CHUNK is evidence; surrounding context is advisory." +- `initial-extraction-plan.md`, "Post-Extraction Validation", names the verbatim check as "the most common extraction failure mode", and its addendum promotes it from a post-hoc report to an enforcement point: an `@agent.output_validator` that raises `ModelRetry` so a paraphrase triggers a retry rather than a warning. The rationale is recorded as "the single biggest extraction-quality win." +- `docs/report-sections.md` records a design point that protects the rule: the auto-detected section hint "is placed **before** the report delimiters, so verbatim validation against the original text is unaffected." +- example2 study §1.2: every EFL observation carries `reportText`, a verbatim quote from the report Markdown. + +**What the code implements.** Verbatim quoting is enforced at run time, not merely requested: IPL repo `dev` `36fa30c` `CLAUDE.md` records "Validated both as a PydanticAI output validator and post-hoc," and the reviewer's failure taxonomy has a `hallucination` category for "clinically meaningful content unsupported by the chunk text" (A26). `initial-extraction-plan.md` also specifies a coverage check that compares the union of every `report_text` and `non_finding_text.text` against the full report "to surface any text the agent skipped entirely," so the extraction accounts for the whole report rather than only the parts it recognized. + +**Related.** A5, A8, A10, A23, A26, B2, B4. + +## A4. Entry identity is the finding code plus the anatomic site + +**Statement.** One IPL entry is one finding in one patient, identified principally by finding code plus anatomic site. A diagnosis or category the radiologist assigns, such as a LI-RADS category, is an attribute recorded on the observation rather than a separate identity, so a lesion whose category is revised stays one entry and the revision becomes part of its trajectory. + +**Status.** Working proposal (manuscript); implemented example (the dev-branch grouping key). + +**Evidence.** +- JDIM IPL manuscript, printed p.8: "Each IPL entry is one finding in one patient. Its identity rests principally on two fields, the finding code and the anatomic site… A diagnosis or category, such as LI-RADS LR-3, is the radiologist's interpretation, recorded on the observation, so a hepatic lesion whose LI-RADS category the radiologist revises on subsequent imaging stays one entry and the revision becomes part of its trajectory." +- IPL repo `dev` `36fa30c`, `CLAUDE.md`: the IPL "Groups observations by finding type **and** anatomic location (`locationId`) across exams… consumers key on the IPL finding `id`, not `finding_type_code`." +- IPL repo `dev` `36fa30c`, `scripts/generate_ipl_from_efls.py`, in-code comment: "A finding code at two distinct anatomic locations… becomes two separate IPL entries" (example2 study §3.3). +- example2 study §1.3: 123 IPL entries over 276 observations; every observation folded into an entry shares that entry's `{locationId, locationDisplay}` exactly, which follows mechanically from the grouping key. +- JDIM IPL manuscript, printed p.6: "A finer gradation the radiologist states, such as a BI-RADS assessment category, is recorded as an attribute of the observation." + +**Related.** A2, A10, A12, A13. + +**Unresolved.** Entry identity in the worked exemplar was still moving between sources. See A5's entity-count difference. + +## A5. Status is derived from the observation history, never stored — and three vocabularies disagree + +**Statement.** An entry's status is computed from its observation history by fixed rules and recomputed whenever the history changes, so no model judgment is stored as clinical fact and an application can tell what a radiologist stated from what the system computed. Trajectory is likewise a read of the history rather than a stored field. Three sources name three different status vocabularies. + +**Status.** Working proposal (manuscript, webinar); implemented example (both viewers compute status; the second stores a precomputed copy). + +**Evidence.** +- JDIM IPL manuscript, printed p.8: "The IPL entry status has one of four values programmatically derived from the observation history, recomputed whenever that history changes." Active = most recent observation present and new or changed; Stable = present and unchanged; Resolved = an earlier observation present and the most recent absent; Excluded = explicitly reported absent at some point and never observed present, "a tracked pertinent negative, such as 'no pneumothorax'" (printed p.9). +- JDIM IPL manuscript, printed p.9: "A reader or an application reads an entry's trajectory from its observation history… **The entry has no trajectory element of its own.**" +- JDIM IPL manuscript, printed p.11: "What the IPL then displays, from an entry's status to its trajectory, is computed by fixed rules from the linked observations, so no model judgment is stored as clinical fact." +- SIIM webinar slide 21 speaker notes: status is derived at read time with two top-level values mirroring "the clinical problem list's active/resolved model", and **within Active** a trajectory of "appearing, progressing, regressing, fluctuating", "the finer read from the measurements." +- IPL repo `main` `06f64a7`, `CLAUDE.md` "Temporal Status Tracking": three states — Present, Resolved, Not Present/Ruled Out — with filters All / Currently Present / Resolved / Ever Present / Ruled Out. +- IPL repo `dev` `36fa30c`, `CLAUDE.md`: "Tracks temporal status: currently present, resolved, never-present/ruled-out" — three states named. +- IPL repo `dev` `36fa30c`, `docs/plans/viewer-v2-anatomy-dashboard.md`, "Status Semantics": four values — `current`, `always`, `resolved`, `never_present`. +- example2 study §2.1 and §3.4: viewer v1's `computeFindingStatus` and `build_viewer_v2_data.py`'s `compute_status` implement the identical four-branch algorithm; v1 labels the fourth branch `never`, viewer_v2 labels it `never_present`; viewer_v2 also adds `unknown` for an entry with no observations. Viewer_v2 **stores** the result in `viewerMetadata.statusByFindingId` in its generated bundle rather than computing it in the browser. +- example2 study §1.3: the canonical `sample_data/example2/MRN0000001_ipl.json` has **no `status` field at all**. + +**Related.** A2, A4, A7, B1. + +**Unresolved — four attributed positions on status.** + +| Source | Vocabulary | +|---|---| +| JDIM IPL manuscript (under review) | Active, Stable, Resolved, Excluded; no trajectory element | +| SIIM webinar, 2026-07-15 (public) | Active, Resolved; trajectory within Active: appearing, progressing, regressing, fluctuating | +| IPL repo `main` and `dev` `CLAUDE.md` prose | Present/current, Resolved, Never-present/ruled out (three) | +| IPL repo `dev` viewer_v2 plan and both viewers' code | current, always, resolved, never_present (plus `unknown` in code) | + +**Unresolved — the exemplar entity count.** The same synthetic patient (64-year-old, cirrhosis, 15 exams, 4 modalities, 2017-2024) yields 223 observations in 41 entries in the JDIM manuscript abstract and 225 observations in 43 entries in the SIIM webinar (slide 24). `sources/bucket/REPORT.md` §7 attributes the difference to the webinar version splitting acute from healed rib fractures and acute L4 compression fracture from chronic L4 compression deformity into separate rows, where the manuscript keeps each as one entry with an internal acute-to-healed trajectory. This is an unresolved entity-identity rule, not a counting error. + +**Undetermined.** Whether the deliberate storage of status in viewer_v2's generated bundle is a considered exception to "never stored" or a build-pipeline convenience is not stated in the viewer plan. + +## A6. The succession link + +**Statement.** One entry tracks one physical entity across its whole course. When a resolved finding leaves a different entity behind, the new entity gets its own entry and is connected to the resolved one by a succession link rather than mutating the original. The manuscript's example is a pneumonia and the residual scarring it leaves. + +**Status.** Working proposal only. + +**Evidence.** +- JDIM IPL manuscript, printed p.8: "The entry's succession link connects a resolved entry, such as a pneumonia, to the entry for the distinct finding it left behind, such as the residual scarring." +- JDIM IPL manuscript, printed p.9: "One entry tracks one physical entity in the patient across its whole course, including observations that report it absent. The scarring a pneumonia leaves behind is a different entity from the pneumonia, so it gets its own entry but is associated with the resolved pneumonia by a succession link." +- SIIM webinar slide 22 speaker notes: "the pneumonia Resolves, and its scarring enters as its own distinct entry rather than mutating the original." +- `sources/bucket/REPORT.md` §4: Figure 2 of the manuscript shows a dashed succession-link arrow from resolved pneumonia to its scarring sequela on the patient timeline. +- example2 study §1.4: "There is no succession/supersede/merge field anywhere connecting these two entries" — the implemented sample data has no succession link. + +**Related.** A5, A7, A13. + +**Undetermined.** Whether the acute-to-healed fracture case belongs to succession or to within-entry time course. The manuscript treats evolution as "the stated time course within one entry" (printed p.11); the webinar exemplar splits it into two entries (A5, entity-count difference). + +## A7. Per-observation provenance and review status, and corrections as provenance operations + +**Statement.** Each observation records where it came from, whether a radiologist has reviewed it, any change a radiologist made to what a model produced, and the original report text. For a model source, provenance records the model's identity and version, its inputs, its output, and any confidence it provides. Review status is "unreviewed" or "affirmed"; a later affirmation or rejection supersedes an earlier one with both retained. Merging entries, splitting an entry, and marking an observation in error are logged as provenance operations, not statuses. + +**Status.** Working proposal (manuscript, webinar); a lineage precedent that overloads a different field; not implemented in the sample data. + +**Evidence.** +- JDIM IPL manuscript, printed p.10: "Provenance records, for each observation, where it came from, whether a radiologist has reviewed it, any change a radiologist made to what a model produced, and the original report text… The review status is 'unreviewed' or 'affirmed'… A later affirmation or rejection supersedes an earlier one, with both retained in provenance. Observations within one entry may differ in source and review status, so each has its own provenance." +- JDIM IPL manuscript, printed p.9: "When two entries are discovered to be one finding, when one entry is determined to be two separate entities, or when an observation was entered in error, the record is corrected by merging, splitting, or marking the observation, and each correction is logged in provenance. Merging, splitting, and marking are provenance operations, not statuses." +- SIIM webinar slide 46 speaker notes: "every machine-generated observation is marked unreviewed until a radiologist affirms it; LLM is an enumerated provenance source, so this is not a bolt-on." +- IPL repo `main` `06f64a7`, `README.md`: the EFL specification asks that "each Observation should include some kind of provenance marker." No field is named. +- `FHIRSamples` `main` `9ae2fa9`: the same lung-screening finding appears twice, once as an AI observation with FHIR `status` `preliminary` and once as the radiologist's with `status` `final`, the resources otherwise identical — the only implemented precedent, and it overloads the FHIR `status` field rather than carrying a provenance structure. +- example2 study §2.2: "No clinical confidence, hedge, review-status, or provenance field exists anywhere in either viewer's data model or rendering code." +- IPL repo `dev` `36fa30c`, `README.md` "Extraction Persistence": the platform stores each extraction run with its report link, timestamp, model, reasoning setting and full JSON payload, and represents reviewer edits as correction objects (`add_finding`, `update_finding`, `comment`) — provenance implemented for the *extraction pipeline*, not for the IPL data structure. + +**Related.** A3, A8, B2, B4. + +## A8. Entity resolution is the open problem; graduated-confidence linking is the proposal + +**Statement.** Matching observations across examinations is the unsolved step. Simple matching on finding code plus site suffices when a finding is the only one of its type at its location. For harder cases the team proposes graduated-confidence linking: a radiologist's explicit comparison to a specific prior makes a high-confidence link; code plus location plus temporal plausibility makes a medium-confidence link; spatial proximity alone makes a low-confidence link; below any threshold the observations stay separate entries. Both manuscripts state that a false split costs redundancy while a false merge corrupts a trajectory. + +**Status.** Working proposal (linking model); implemented example (code-plus-site matching only); measured limitation (JACR). + +**Evidence.** +- JDIM IPL manuscript, printed p.11: "The simplest linking logic is matching on code and site… This suffices when a finding is the only one of its type at its location: one aortic aneurysm, one instance of hepatic steatosis, one set of coronary artery calcifications. **The exemplar in Results uses this matching alone.**" +- JDIM IPL manuscript, printed p.12: the three confidence levels, verbatim as summarized above, and "When confidence is insufficient at any level, the observations would be kept as separate IPL entries." +- SIIM webinar slide 13: "report → extraction · solved → findings → same entity? · open → one tracked entity", with slide 23 speaker notes: "never a merge on weak evidence. A false split costs a little redundancy; a false merge corrupts a trajectory. Be honest that the current prototype links on finding code alone; matching is the open frontier." +- JACR IPL manuscript, Results: 181 of 2,232 findings (8.1%) "could not be matched to a single earlier finding", mostly where a patient had several findings of one type in one location; these receive no grade but stay in the denominator, making the reported burden a lower bound. "Deciding whether two descriptions name one finding or two is entity resolution." +- JACR IPL manuscript, Take Home Points: "The remaining implementation work is entity resolution, deciding when two descriptions on different CTs name the same finding." +- JACR IPL manuscript, Table 2: four ordered matching rules (Name, Site, Match, Ambiguity) plus a fifth for grading, each with its stated error direction; "Every matching rule fails toward keeping findings separate, because wrongly merging two findings manufactures a re-documentation." +- JDIM IPL manuscript, printed p.19: "The IPL is an application-layer data model over the CDE-labeled FHIR Observations… DICOM Structured Reports are a natural source of EFL observations, and the DICOM tracking identifier marks observations as referring to one finding without defining how they are matched, collected, or used." + +**Related.** A4, A9, A13, A19. + +**Unresolved.** The JACR rules and the JDIM graduated-confidence model are two different formulations of the same step, developed for different purposes (a locked measurement instrument versus a proposed linking model), and no source reconciles them. + +## A9. One finding may be described by several observations in one report, and by different codes across reports + +**Statement.** The same finding is often described more than once in a single report, in the findings section and again in the impression, and the EFL records one observation per finding per examination while preserving each sentence that contributed to it. Across reports, observations of one finding may use different but related codes: more or less specific terms, a diagnosis substituted for a finding or the reverse, or the entity's own evolution such as acute rib fractures becoming healed rib fractures. + +**Status.** Working proposal (manuscript); measured difficulty (JACR); explicit direction from the project lead. + +**Evidence.** +- Email notes, point 1: "The same finding is often described by more than one observation in a single report (findings section and impression). Found in the JACR chest CT work; aggregating observations into one or several findings was hard for the LLM. To be included in the manuscript." +- Email notes, point 2: "Observations of one finding across reports may use different but related codes: more or less specific terms; a diagnosis substituted for a finding or vice versa; the entity's evolution over time (acute rib fractures becoming healed rib fractures). **The manuscript should make clear how the IPL structure accounts for finding versus diagnosis.**" +- JDIM IPL manuscript, printed p.6: "A report may describe one finding twice, in the findings section and again in the impression. The EFL records one observation per finding per examination and preserves each sentence that contributed to it, so reconciling repeated descriptions within a report is part of producing the EFL." +- JDIM IPL manuscript, printed p.11: "The terms may be broader or narrower (a hepatic lesion on one report, a hepatic cyst on the next), substitute a diagnosis for the finding it rests on (pneumonia for consolidation), or follow the finding's evolution (an acute fracture, then a healed one). Evolution is the stated time course within one entry. Matching the other two would draw on the relationships among codes that a finding vocabulary defines, so that codes related at the vocabulary level can be matched at the patient level." +- JACR IPL manuscript, Methods, "Rules for aggregating findings across CTs": the worked emphysema case — "one patient's emphysema was called 'centrilobular paraseptal emphysema', then 'emphysematous change', then 'emphysema', then 'centrilobular emphysema'." +- example2 study §1.4: `ipl-finding-102` "pancreatic lesion" folds two separate EFL observations from the same 2021-08-26 exam (`pancreatic_lesion_0` and `pancreatic_mass_0`) into one entry — the implemented case of two observations of one finding in one report. +- SIIM webinar slide 42: the breast case, where at biopsy "the entity transitions from mass-as-observation to fibroadenoma-as-diagnosis" while remaining one entity across five exams. +- JACR supplement, S2, gives the study's operational definition: "An observation is what the radiologist sees on the image… A diagnosis is what the radiologist concludes those observations represent, and it is not itself visible"; the diagnosis attaches to the observation it interprets and carries the radiologist's stated confidence, so one abnormality is not counted twice. + +**What the code implements.** The extraction prompt's `DEDUPLICATION_BLOCK` is the working resolution of the one-finding-many-observations problem inside a single report. It makes the body text primary ("The Findings (or Comment/Body) section contains the detailed descriptions. Extract all findings from there first"), extracts from the impression only what the body does not already carry ("**Impression: extract UNIQUE items only** — If the Impression/Conclusion contains a diagnosis or finding that has NO corresponding description in the body text, extract it as a finding… Do NOT re-extract findings already covered by a body-text finding"), records where each finding came from in a `source_section` field valued `findings`, `impression`, `both` or null, and settles conflicts in favor of the body: "**Body text is authoritative** — When a finding appears in both sections, use the body text for details… The body section has the specifics; the impression is a summary." A separate rule handles repetition within one section: "**One entry per distinct finding instance** — If the same finding is described in multiple paragraphs within the body text, extract it once using the most detailed description." `CHUNK_RULES_BLOCK` item 7 handles the opposite case, where one sentence names a general finding and then instances of it: extract "both the general finding and each specific instance, and apply this for both present and absent statements." + +**Related.** A4, A8, A11, A23, A24, A26, and the finding-model vocabulary relationships covered by the semantic inventory. + +**Unresolved — finding versus diagnosis.** Four positions are on record, none reconciled: +- JDIM IPL manuscript (printed p.8): a diagnosis is an attribute of the observation, not a separate identity. +- The project lead, 2026-09-19 (email notes, point 2): the structure's account of finding versus diagnosis is not yet clear enough and should be made explicit in the manuscript. +- IHE Imaging Diagnostic Report Phase II public-comment draft, as extracted on `RSNA/ACR-RSNA-CDEs` `next-gen-2026` (`knowledge/data-structures/ihe-idr-alignment.md` and its cited extract): positive clinical findings are FHIR `Condition`, negatives are `Observation`. +- The working default recorded in that same extract: "every assertion in a radiology report, diagnoses included, is encoded as an `Observation`", because "'consistent with pneumonia' is a radiologist's assertion, not an established clinical condition." +- The next-generation CDE vocabulary's worked example deck tags each observation FINDING / DIAGNOSIS / GROUPING and links them with report-plane edges `SUPPORTS` and `ASSOCIATED_WITH` (`sources/bucket/text/next-gen-reporting-schema.md`; `sources/bucket/REPORT.md` §6) — a fifth treatment, from the allied CDE workstream. + +## A10. Presence is binary; confidence and hedging are a separate axis + +**Statement.** Presence is present or absent. Confidence is definite or hedged, recording whether the radiologist committed plainly or professed uncertainty. The hedge is recorded on whichever assertion the radiologist softened, the finding's presence or one of its attributes, and the exact wording is preserved. The webinar states the design reason: a top-level "indeterminate" fuses which way the radiologist leaned with how firmly they said it. + +**Status.** Working proposal (manuscript, webinar); a contrary implemented example. + +**Evidence.** +- JDIM IPL manuscript, printed p.6: "Presence is present or absent, and confidence is definite or hedged, recording whether the radiologist committed plainly or professed uncertainty." +- JDIM IPL manuscript, printed p.7: "A hedge is recorded on whichever assertion the radiologist softened, whether the finding's presence ('possible pneumonia') or attribute ('likely acute'), and the preserved report text retains the exact words." +- SIIM webinar slide 19 speaker notes: "Rule 4 in particular: binary presence plus per-axis confidence is more faithful and more elegant than a top-level 'indeterminate', which fused which way the radiologist leaned with how firmly." +- SIIM webinar slide 20 speaker notes: "'Possible' hedges the presence axis: presence stays binary, the hedge is recorded per-axis; the stated chronicity (acute) is recorded as stated, never inferred." +- example2 study §1.2 and §1.4: the implemented sample data uses a **three-value** presence vocabulary — `present` (113), `absent` (160), `indeterminate` (3) — with no separate confidence field; "Indeterminate is a real third presence state… distinct from present/absent, and it participates in status computation exactly like `absent` does." +- JACR IPL manuscript, Outcomes: hedged findings are reported separately from the primary outcome (42 of 57 hedged chronic findings re-documented with no change, versus 951 of 1,229 unhedged). + +**What the code implements.** The extraction prompt's `PRESENCE_BLOCK` defines a **four-value** presence vocabulary and, unusually, states the test for applying it. The values: "**present**: The finding is explicitly stated as present"; "**absent**: The finding is explicitly stated as absent (e.g., 'no ascites', 'normal hilar contours', 'unremarkable')"; "**indeterminate**: Cannot be determined from the report"; "**possible**: Hedged/uncertain language ('raising the possibility of', 'suggestive of', 'cannot exclude')". The test separates a hedged *observation* from a hedged *interpretation*: "When the imaging observation itself is definitively seen but the interpretive label uses hedging, the finding is **present** — e.g., 'decreased attenuation suggestive of fatty infiltration' → hepatic steatosis is **present** (the decreased attenuation IS observed)… When the finding/diagnosis itself is uncertain, use **possible**… Key test: Is the imaging observation definitively seen, or is the diagnosis itself uncertain?" This is the finding-versus-diagnosis distinction of A9 operating as a presence rule. `initial-extraction-plan.md` fixes the same four values as a `Literal` on the model so an out-of-vocabulary value fails validation. + +**Related.** A3, A5, A9, A23. + +**Unresolved — three positions on presence, not two.** + +| Source | Presence vocabulary | +|---|---| +| JDIM IPL manuscript, printed p.6, and SIIM webinar slide 19 | Binary present/absent, with confidence definite/hedged as a separate per-axis value; an explicit argument against a fused top-level "indeterminate" | +| Extraction prompt `PRESENCE_BLOCK`, and `initial-extraction-plan.md` | Four values: present, absent, indeterminate, possible — where "possible" is hedging and "indeterminate" is "cannot be determined from the report" | +| example2 sample data (example2 study §1.2) | Three values in use: present, absent, indeterminate; no `possible` and no separate confidence field | + +The extractor's split of "possible" from "indeterminate" keeps hedging distinct from unassessability, which is closer to the manuscript's intent than the sample data is, but it still puts both on the presence axis rather than a second one. No source states which vocabulary is meant to win. + +## A11. Pertinent negatives are first-class entries + +**Statement.** A finding the radiologist explicitly reports absent is recorded as an observation with presence absent, not omitted, and an entry that has only ever been reported absent is a tracked pertinent negative. A finding the report does not mention has no observation on that EFL at all, and adds nothing to its entry's status. + +**Status.** Working proposal (manuscript, webinar); implemented example (the sample data is majority-absent). + +**Evidence.** +- SIIM webinar slide 18 speaker notes: "Walk the pertinent negative first: 'no filling defect' is captured as pulmonary embolism, absent; negatives are first-class entries, not omissions." +- JDIM IPL manuscript, printed p.9: "'Excluded' means at some point the radiologist explicitly reported the finding absent and no other observation recorded it present (a tracked pertinent negative, such as 'no pneumothorax')." +- JDIM IPL manuscript, printed p.7: "A finding the report does not mention has no observation on that EFL." And printed p.9: "A report that does not mention a finding adds no observation to its entry, so the entry's status is unchanged." +- example2 study §1.2: of 276 observations in the sample data, 160 are `absent` — the majority. +- JDIM IPL manuscript, printed p.16: cross-subspecialty value depends on it — "that history, including what radiologists excluded on earlier examinations, is available without manual retrieval and could spare repeat examinations." +- SIIM webinar slide 20 speaker notes: on an absent row, "the stated temporal word marks the negation scope: 'no NEW consolidation' is not the same assertion as 'no consolidation.'" +- Board 1 (internal; schema content only), "Exam Finding List" table: rows for negative findings carry a count of 0 and are starred, with the report text highlighted in two colors for positives and explicit negatives. +- JACR IPL manuscript, Methods: by contrast the JACR study **excluded** statements of normality and analyzed positively reported findings only. + +**What the code implements.** Negation is a first-class extraction target, not a filter. The extraction prompt's `CORE_INSTRUCTIONS_BLOCK` item 2 requires extracting "ALL findings — including present, absent, possible, and indeterminate findings". The coding prompts keep negation out of the concept: `FINDING_TERM_SYSTEM` rule 5 says "If a finding is a normal-variant or absent finding (e.g., 'no ascites'), generate terms for the finding itself (e.g., 'ascites', 'peritoneal fluid'), not for the negation", and `FINDING_CODE_SELECTOR_SYSTEM` rule 6 states flatly "The finding's `presence` does NOT affect code selection." The anatomic-location work applies the same separation: `docs/plans/anatomic-location-efl-ipl.md` records that "**Absent findings still get anatomy** — presence doesn't gate location ('No hydronephrosis' → kidney, 'adrenal glands are unremarkable' → adrenal)." + +**Related.** A5, A3, A10, A23, A25. + +**Unresolved.** The JDIM/webinar model makes explicit negatives first-class; the JACR measurement excludes normal statements. The two have different purposes and no source reconciles the scope difference. + +## A12. Every finding carries a standardized anatomic location, assigned by explicit rules + +**Statement.** Each observation is anchored to a single anatomic location identifier from the RadLex-derived Anatomic Locations index, and a written precedence ladder decides which location: explicit anatomy in the report text or section context wins; otherwise the finding's own target organ at its own anatomic-noun granularity; otherwise the exam-scoped coarse region. Laterality follows explicit text, then a sided exam, then generic, and is resolved against the whole report section rather than the finding's isolated quote. + +**Status.** Working proposal (the written rules); implemented example (the enrichment pass and the coding pipeline). + +**Evidence.** +- IPL repo `dev` `36fa30c`, `docs/anatomic-location-assignment-rules.md`: the three-step precedence ladder, the laterality source priority, the bilateral-finding rules (separable positives split into left and right; an inseparable diffuse process stays generic and unsided; a contiguous midline finding stays one unsided finding; a generic absent finding on a paired organ never takes a side), and the specificity rule that "the target's granularity matches the finding's anatomic noun, capped by the report — never finer." Includes the worked left-shoulder section-laterality example and the explicit warning that "reviewing or coding from the isolated `reportText` silently drops section laterality." +- IPL repo `dev` `36fa30c`, `docs/plans/anatomic-location-efl-ipl.md`, status header: COMPLETE 2026-06-10; "EFLs in `sample_data/example2` enriched with `anatomicLocation`… (260/275 localized)"; the locked decision that the indicator is "RID id + display name only… a single location per observation." +- example2 study §3.2: `enrich_efl_anatomy.py` runs each finding through the *production* coding pipeline `finding_extractor.coding.runtime.run_coding` rather than a sample-data heuristic, and writes a per-decision review CSV including unresolved cases. +- January 2026 deck, "Anatomic Locations": "Anatomy baked into OIFM definitions and Observation objects." +- SIIM webinar slide 31 speaker notes: "Every finding is anchored to a specific RadLex Anatomic Locations code, and the containment hierarchy rolls it up to a top-level body region." + +**What the code implements.** The two location prompts encode the rules the assignment document states in prose. `LOCATION_TERM_SYSTEM` rule 2 keeps the anatomy separate from the finding: "Name the ANATOMIC STRUCTURE, not the finding. For a finding in the 'right lower lobe', the terms should be 'right lower lobe', 'lower lobe of right lung' — NOT 'right lower lobe opacity'." Rule 3 supplies the fallback when the report says nothing: "If location is null, infer from the exam info (body_part, modality) and report context." Rule 7 encodes a structural fact about the index that the anatomy work established: "When laterality is 'bilateral' OR the anatomy is inherently bilateral (e.g., 'lung bases', 'kidneys', 'adrenal glands'), generate SEPARATE terms for each side. The index stores lateralized entries individually — there is no entry for 'kidneys', only 'left kidney' and 'right kidney'." Rule 8 asks for a parent term one level up alongside the specific one, which is what makes a near-miss recoverable. `LOCATION_CODE_SELECTOR_SYSTEM` presents each candidate with its region, laterality, containment parent and part-of parent, so both hierarchies are visible at the moment of choice, and rule 4 states "LATERALITY MATTERS. Never select the wrong side." + +The extraction prompt fixes a nine-value `body_region` vocabulary — chest, abdomen, pelvis, head, neck, spine, upper extremity, lower extremity, breast (`LOCATION_BLOCK`) — as a coarse axis beneath the free-text `specific_anatomy` that the coding step later resolves to an identifier. `ATTRIBUTES_BLOCK` keeps the axes from collapsing: "Do NOT use 'location' as an attribute key — location belongs in FindingLocation fields." + +**Related.** A4, A13, A25, B1, and the anatomic-locations ideas in the semantic inventory. + +**Unresolved — one location per observation, or several.** `docs/plans/anatomic-location-efl-ipl.md` records the locked decision as "a single location per observation", and instructs the enrichment pass that "If `run_coding` returns multiple `location_codes` for an observation, take the first/primary coded one to honor the single-location decision." But `LOCATION_CODE_SELECTOR_SYSTEM` rule 2 says "MULTIPLE LOCATIONS are allowed when a finding genuinely spans more than one distinct structure. Do NOT select redundant ancestor/descendant pairs," and `docs/coding-agent-prompts.md` Design Notes confirm the coding bundle carries `location_codes` as a list. The coding tool models a finding that spans structures; the Exam Finding List does not carry one. + +**Undetermined.** The rules document says these "were agreed for the `sample_data/example2` correction pass and are the intended spec for tuning the automated location-coding step later"; whether they have been applied beyond example2 is not stated. + +## A13. Anatomic-compatibility reconciliation is unresolved, and the sample data shows the cost + +**Statement.** Because grouping keys on the exact location identifier, the same finding coded generically on one exam and specifically on another produces two unconnected entries. Deciding whether a generic-versus-specific pair for one finding code names the same problem is the anatomic-compatibility reconciliation step, and it has not been started. + +**Status.** Stated open problem (the rules document names it and defers it); demonstrated failure in the implemented example. + +**Evidence.** +- IPL repo `dev` `36fa30c`, `docs/anatomic-location-assignment-rules.md`, known-limitation section, quoted in `knowledge/roadmap/ipl-data-model-system.md`: "Parent/child or generic-vs-specific pairs for the *same finding code across exams* (e.g. 'lung' vs 'lower lobe of right lung'; 'kidney' vs 'left kidney') still produce separate IPL groups. Deciding whether such observations are the same problem or distinct is the **anatomic-compatibility reconciliation** step." +- IPL repo `dev` `36fa30c`, `docs/plans/anatomic-location-efl-ipl.md`: "**Follow-on:** Step 3b anatomic-compatibility reconciliation and the fresh anatomy-aware viewer remain future phases." +- example2 study §1.4, two live instances: renal cystic disease `OIFM_GMTS_016635` splits into `ipl-finding-046` at generic kidney `RID205` (one ultrasound observation whose text never states a side) and `ipl-finding-047` at left kidney `RID29663` (three CT observations), where the report text is visibly tracking one lesion's size across all four; and hepatic lesion `OIFM_OIDM_160831` splits into `ipl-finding-089` (segment 6, one observation) and `ipl-finding-090` (generic liver, four observations) including a 2023-01-18 sentence that explicitly refers back to the segment-6 lesion and still lands in the other group. "There is no succession/supersede/merge field anywhere connecting these two entries." + +**Related.** A4, A6, A8, A12. + +## A14. Permanent findings, and the need to rank entries before display + +**Statement.** Some findings a patient is expected to have on every subsequent examination indefinitely — degenerative change, calcification, healed injury, congenital variant, biologically inert lesion, postsurgical change, implanted device, irreversible process, structural remodeling. Whether a finding is permanent is a declared attribute of the finding type, not something inferred from observing a series. Because most of an accumulated record goes unmentioned at any one examination, an IPL has to rank its entries before displaying them, and permanence is one measured signal for that ranking. + +**Status.** Implemented example (a locked study taxonomy attribute with measured results); stated design implication. + +**Evidence.** +- JACR IPL manuscript, Methods: "Permanent findings are those a patient is expected to have on every subsequent CT indefinitely, such as a healed rib fracture or postsurgical change, which distinguishes them from chronic findings followed for change such as an enlarging aortic aneurysm. **The label comes from the finding itself, not from observing the series.**" +- `sources/bucket/REPORT.md` §2 lists the nine declared permanent categories from the manuscript's taxonomy. +- JACR IPL manuscript, Table 3: 607 of 993 findings re-documented with no change were permanent (61.1%); 69 of 103 findings that dropped out of documentation and returned were permanent (67.0%); 371 of 765 new-to-series findings were permanent findings documented for the first time (48.5%). +- JACR IPL manuscript, Discussion: "Compiled from a patient's entire imaging history, most of the record goes unmentioned at any one examination. An IPL would therefore have to rank its entries before displaying them, and whether a finding is permanent is one measured signal for that ranking." +- JACR IPL manuscript, Table 3, IPL coverage at the fourth CT: the fourth report re-documented 19.1% (308 of 1,615) of the entries in an IPL built from the first three CTs; permanent entries were re-documented at 34.1%, nearly twice that rate. + +**Related.** A15, B5, A22. + +## A15. Foundation context: four per-finding dimensions that tell an agent what to expect + +**Statement.** Four additional dimensions carried on a finding's definition — where it is anatomically, what type of finding it is (a hierarchical, multi-valued etiology taxonomy), how long it lasts, and whether it is transient or permanent — are what let an agent judge whether a finding should still be present on a new examination. The webinar states these belong to a forward schema and are not carried by the published definitions. + +**Status.** Stated direction (webinar), attributed to a forward schema rather than the committed corpus. + +**Evidence.** +- SIIM webinar slide 28 speaker notes: "the committed, published finding model is lean: 2,458 definitions with id, name, description, synonyms, tags, attributes, and index codes. None of the four foundation-context dimensions are first-class fields there. FindingModelFull is the forward schema that adds them… these fields are the forward, AI-populated schema, not yet carried by the published definitions." Slide text names `body_regions · anatomic_locations`, `entity_type · etiologies`, `expected_time_course`, `subspecialties · applicable_modalities`, `sex_specificity · age_profile`. +- SIIM webinar slide 29 speaker notes: "this tells an agent whether a finding should still be there. Expect the AAA on every future exam and track its growth; treat a resolved PE as gone; know the ovarian cyst clears and recurs with the cycle so you don't link every cyst into one thread." +- SIIM webinar slide 30: the etiology taxonomy, hierarchical and multi-valued, listed verbatim — `inflammatory`, `inflammatory:infectious`, `neoplastic:{benign,malignant,metastatic,potential}`, `traumatic:{acute,sequela}`, `vascular:{ischemic,hemorrhagic,thrombotic,aneurysmal}`, `iatrogenic:{post-operative,post-radiation,device,medication-related}`, `degenerative`, `metabolic`, `congenital`, `developmental`, `autoimmune`, `toxic`, `mechanical`, `idiopathic`, `normal-variant`; "a subdural hematoma is both traumatic:acute and vascular:hemorrhagic." +- example2 study §3.5 and §2.2: `viewer/data/enriched_findings.json` (97 entries) already carries `body_regions[]`, `modalities[]`, `subspecialties[]`, `etiologies[]` as `"category:subtype"` strings and `anatomic_location{id,text}`, and viewer_v2's "Definition data" panel renders them — a partial implemented instance of the forward schema, for 97 of the finding codes used. + +**Related.** A8, A14, B1, and the finding-model metadata ideas in the semantic inventory. + +**Undetermined.** This inventory did not read the `findingmodel` repository; the relationship between `FindingModelFull` and the metadata-cleanup work belongs to the semantic inventory. + +## A16. Imaging Persona and the reporting data context object model + +**Statement.** Beyond the patient's imaging findings sits the surrounding clinical context. The January 2026 deck names it Imaging Persona with four categories: clinical context (orders, indications), medical baseline (problem list, allergies, laboratory results), specialized history (oncology, treatments), and surgical history (operative records, pathology, implants). Two boards give the same idea a fuller, differently named shape as an object model spanning Patient, Order, ImagingStudy, CurrentReportText, PriorReports, TrackedObservations, EHR Data, and Observations. + +**Status.** Stated goal (deck); working proposal (boards); no schema, sample, or code. + +**Evidence.** +- January 2026 deck, "Imaging Persona (big picture)": the four categories verbatim. +- January 2026 deck, strategic pillar 2: Persona is the fourth level of the hierarchy after the IPL. +- Board 4 ("OIDM Object Model", low sensitivity), central mind map: branches Patient (identifiers, DOB, sex/gender, referrer), Order (indications, order questions and responses, timestamps, imaging studies), PriorReports (report text, observations), TrackedObservations (observation types, observations), EHR Data (lab values, pathology reports, problems/diagnoses, allergies, operative notes, clinical notes), ImagingStudy(s) (identifier, resource information, DICOM metadata, timestamps), CurrentReportText (status, authors, "Text (DOM)", timestamps), Observations (identifier, observation type as a CDE Set ID, tracking ID, body part, components). Hand annotations map Patient/Order and EHR Data to FHIR, ImagingStudyType to the LOINC/RadLex Playbook, and BodyPart to Anatomic Locations. +- Board 9 ("OIDM Big Picture"), "Reporting Data Context Object Model" frame: nine fields — patient demographics, order information, EHR information (problem lists, labs, vitals, operative notes, pathology), current report, prior radiology reports, longitudinal findings, AI-generated data, DICOM-SR data, NLP-extracted data. The board states this frame is a duplicate of Board 4's mind map. +- Board 14 ("ACR OIDM", low sensitivity), Reference Implementations component list names "Tracked Observations" as a first-class component alongside Anatomic Locations, Exam Types, CDE Sets/Elements, Observations, Imaging Exams, Imaging Reports and EMR Items. +- Site post "Data Model: Structure and Function", 2024-01-25: the model organizes observations, current report text, imaging studies, patient, order, prior studies, tracked observations, and EHR data. +- Board 1 (internal; schema content only): proposes representing non-imaging clinical data in the same structure — "Implants; Operations — e.g., appendectomy, if there's a record of it can add it to the IPL under the same semantic identifier that would be used when a radiologist describes post-appendectomy findings in an abdomen CT report." + +**Related.** A1, A17, B8, C2. + +**Unresolved.** Three names for overlapping things: "Imaging Persona" (deck), "OIDM Data Context Model" / "OIDM Object Model" (Boards 4 and 9), "Reporting Data Context Object Model" (Board 9). No source states whether these are the same structure. + +**Undetermined.** Storage versus query-time assembly, ownership of each context category, encoding, and maintenance are unspecified in every source read. + +## A17. Report sections beyond Findings are unmodeled + +**Statement.** The finding/Observation pattern covers the Findings section. Impression, diagnoses and differential diagnoses, recommendations, communication, comparison, technique, clinical history and indication, and limitations are enumerated as sections that also need representation, with the open question of whether impression-level statements are Observations too or a distinct structure that links back to finding Observations. + +**Status.** Stated open questions, recorded on a board; nothing built. + +**Evidence.** +- Board 6 ("Structured Report Representation", internal; schema content only), note "2025-03-06 Report Structures to Represent": the eight sections listed verbatim, with "Findings (already covered)". +- Board 6, "Impression" box: the impression is "usually a numbered/bulleted list, often ordered by priority/severity", "can reference findings by number or implicitly", "may state a diagnosis or differential rather than restating a finding directly", and "can group multiple findings under one summary statement." +- Board 6, note "2025-04-09": "Should Impression items be OIDM Observations too, or a different structure entirely (linking back to Finding Observations)? Need a way to represent 'grouped' findings with a common cause/diagnosis. Causative relationships between findings?" +- Board 9, "Report Representation" work thread: "Have good FHIR structure for simple findings — working on more complex situations: Complex/associated findings, Diagnoses based on findings, Differential diagnoses, Recommendations." + +**What the code implements.** A canonical section vocabulary exists and is used, even though only two sections yield findings. `docs/report-sections.md` gives seven canonical names with their aliases: `findings` (aliases comment, body), `impression` (conclusion), `technique`, `indication` (clinical information), `clinical_history` (history), `comparison`, and `recommendation` (clinical correlation). Detection is "best-effort, deterministic" regex over header patterns in priority order, using "a **whitelist approach** to avoid matching subsection headers like `**Liver:**` or `**Lungs:**`" — so body-system subheads inside the findings section are deliberately not mistaken for report sections. The detected structure is persisted with the report and backfilled lazily for reports stored before the feature existed. + +`docs/extraction-internals.md` records the consequence: "extraction proceeds only on `findings` and `impression` sections", with an inference step for reports that have no findings header ("infers an implicit findings block immediately before first impression when plausible"). Everything else in the report is not discarded but classified: the extraction prompt's `NON_FINDING_BLOCK` assigns each remaining span one of seven categories — metadata, technique, indication, comparison, clinical_history, impression, other — and `initial-extraction-plan.md` states the purpose: "This lets us account for every piece of text in the report — findings go into `ExtractedFinding.report_text`, everything else goes here." So the sections Board 6 lists as unrepresented are, in the implementation, recognized and labeled but not yet turned into structure. + +**Related.** A9, A18, A26, C2. + +## A18. Recommendation structure, and a live-versus-closed axis on IPL entries + +**Statement.** A follow-up recommendation is a structure of its own: the exam (possibly with protocol, with anatomy important), a timeframe, the finding or target with optional conditionality, and a citation such as Fleischner, the ACR incidental-findings papers, or a *-RADS system. When a recommended finding is an IPL entry the recommendation attaches to that entry and the radiologist closes it when a later examination shows resolution. One board proposes the IPL itself as the display surface, with entries that are "live" versus "inactive/not being acted on/closed." + +**Status.** Working proposal (board, manuscript); stated goal (deck's ACR priorities); nothing built. + +**Evidence.** +- Board 12 ("Outcome Tracking Schema", no named individuals), "Recommendation Structure" box: "Exam (possibly w/protocol) — Anatomy important here; Facilitate 'one-click to close' (1C2C); Timeframe; Finding/target (± Conditionality, options); Citation (e.g., Fleischner, ACR IFs, *-RADS, etc.)." +- Board 12, "Recognizing Follow-up Exams": "Facilitated orders could have a flag on them indicating they're a response to a recommendation. A given recommendation definition could have the idea of which kinds of exams would be appropriate for closing it." +- Board 12, "Imaging Problem List" box (starred): "Captures findings. Can have the idea of things that are 'live' versus those that are inactive/not being acted on/closed." +- JDIM IPL manuscript, printed p.15: "When a finding recommended for follow-up is an IPL entry, the recommendation is attached to that entry, and the radiologist can close it when a later examination shows resolution. While the finding persists, its observation history is the dated list of examinations a radiologist checks against an external surveillance protocol, such as the Fleischner Society intervals." +- JDIM IPL manuscript, printed p.16: "Because both the recommendation and its closure are in the IPL record, a department could measure follow-up completion from the record instead of by chart abstraction or keyword search." +- January 2026 deck, ACR priorities: recommendation tracking named first. + +**Related.** A5, A14, B5, B7. + +**Unresolved.** Whether "live versus closed" is a second status axis on an entry or a property of an attached recommendation. Board 12 puts it on the entry; the JDIM manuscript attaches the recommendation to the entry and keeps status derived from observations alone. + +## A19. A finding as a persistent tracked entity with a durable identifier + +**Statement.** Rather than recomputing groups, each finding becomes a tracked entity with an identifier that persists, so a later report of the same lesion adds a dated value to the existing resource instead of creating a new one. The lineage design note states it plainly: "Each finding becomes a **tracked entity** with a FHIR ID that persists." + +**Status.** Working proposal on an unmerged branch of a superseded prototype; the same idea appears as a `tracking_id` field on the object-model board and as a multi-vendor exchange requirement on a demo board; the current implementation approximates it by grouping instead. + +**Evidence.** +- `IPL-MVP-ExtractionAndLabeling`, branch `origin/Persistent_FHIR_Resources` `5ea6720`, file `FHIR_Example_Structure` (no extension): a three-step process — extract and map to OIDM codes; for each finding ask "Does this finding already exist in our FHIR database?" and either link and add a new observation value or create a new Observation with a unique ID; then query and visualize. Worked timeline: one liver lesion at 1.6 cm (2022-05-10), 2.1 cm (2022-11-15), 2.8 cm (2024-10-15), each with a `status` of `new` or `growing`. Example queries: "Show me the timeline for liver lesion." +- Board 4, class diagram: `Observation` carries `tracking_id` as a field. +- Board 15 ("Pulm Nodule Demo Project", internal; schema content only), Complete Workflow step 4: "Ideally, prior known nodules is actually a series of Observation objects, all with a common tracking ID." Step 5 asks: "Who adds the tracking ID to the Observation, and how does this get communicated." +- JDIM IPL manuscript, printed p.8: "The entry's tracking identifier links its observations across reports"; printed p.19: the DICOM tracking identifier "marks observations as referring to one finding without defining how they are matched, collected, or used." +- Site post "Data Model: Structure and Function", 2024-01-25: "**Tracked Observations**: An index of the association of the same radiology finding (e.g., a tumor or a fracture)" — the idea in prose, two years before the design note. +- `FHIRSamples` `main` `9ae2fa9`, `example1OIDMradiologist.json`: the finding Observation's `focus[]` carries a body structure and an imaging selection that share the **same** DICOM structured-report `tracking-uid` identifier, with the selection giving study, series and instance identifiers plus an image region. The same-lesion identity mechanism here is a DICOM tracking UID tied to a place on an image. + +**What the code implements.** The `FHIR_Example_Structure` note's store is not FHIR and does not claim to be. It is a patient-keyed local JSON document whose keys are invented strings such as `fhir-obs-liver-lesion-001`, each holding the finding name, a SNOMED code, a first-detected date, and an observation list of `{report_date, size_mm, status}` with `status` values `new`, `persistent` and `growing`. Identity across reports is decided by matching the finding name together with the location text, framed in the note as the question "Have we seen a hepatic lesion in segment 8 before?" The note proposes two supporting services, an "OIDM MCP" for mapping a phrase to a standard code and a "FHIR Resource Manager" that it labels "not a real server, just local database." + +**Related.** A4, A8, A21, B9. + +**Unresolved — two unconnected designs for the same problem.** `FHIRSamples` identifies one lesion across observations with a DICOM tracking UID anchored to an image region; the `FHIR_Example_Structure` note identifies it with an invented string key in a local store, matched on name plus location text. Neither references the other, and the JDIM manuscript's "tracking identifier" (printed p.8) names the function without picking a mechanism. Who owns and assigns the identifier is an open question on Board 15 and is answered nowhere read. + +**Unresolved — three coding targets in one family.** The IPL repository codes findings with OIFM identifiers; the `FHIR_Example_Structure` note codes them with SNOMED; `FHIRSamples` and `OpenImagingDataModel.py` code them with RadElement `RDES`/`RDE` identifiers. The RadElement system URI is itself inconsistent across the lineage samples, appearing as `https://radelement.org` and `https://www.radelement.org`, with two misspelled variants in `CDETemplateDemo` `e09f255`. These are lineage artifacts rather than positions, but any statement that the structures carry "a finding code" has to say which. + +## A20. A formal system of data models with generated schemas + +**Statement.** The structures should exist as annotated Pydantic models from which JSON Schemas are generated, with camelCase aliases on export and snake_case attributes internally, covering Observation (with an Extracted Observation subtype raised as a question), Exam Finding List, and Imaging Problem List. + +**Status.** Stated goal, unclaimed by any plan. + +**Evidence.** +- `openimagingdata/imaging-problem-list` issue #1, "Create System of Data Models", opened by the project lead, still open with no comments and no assignee as of this reading: "Needs models for: Observation — Extracted Observation sub-type?; Exam Finding List; Imaging Problem List. Pydantic. Extensive annotation to generate JSON schemas. camelCase aliases in export, snake_case object attributes." +- Project lead's stated goals, `knowledge/plans/2026-09-20-knowledgebase-build-plan.md`, Imaging Problem List: "Define appropriate data structures for representing both observations in radiology reports and their relationships"; "Create standard data structure formats, etc. for working with these." +- IPL repo `dev` `36fa30c`, `docs/plans/anatomic-location-efl-ipl.md`, grounding facts: "There is **no Pydantic model or committed JSON schema** for the EFL format, so adding a field is purely additive." +- example2 study §1.2: the `$schema` value in the EFL files points at `https://github.com/openimagingdata/imaging-problem-list/schema/exam-problem-list-schema.json`, which IPL repo `main` `CLAUDE.md` states "doesn't exist yet." + +**Related.** A1, A2, A21. + +## A21. Application-layer data structures, distinct from transport expressions + +**Statement.** OIDM defines a system of data structures for representing imaging exam result information, intended to be used inside applications to both read and create result data. These are not a transport definition: not FHIR, not DICOM. They may eventually need FHIR expressions to travel, and should be designed to allow that, but that is separate from the definition of the structures applications manipulate. Agreeing the structures is what makes it easier to agree what must be conveyed between systems, and the structures guide the design of the FHIR profiles that inter-process communication will require. + +**Status.** Explicit direction from the project lead (2026-09-19) and a decision of record (2026-09-21); already partly expressed in the manuscript under review; contradicted by the current repository documentation. + +**Evidence.** +- Email notes, point 3: "'Application layer data model' is imprecise. Better: 'a system of defined data structures for representing imaging exam result information', 'intended to be used within applications to both read and create result data'." +- Email notes, point 4: "The structures are NOT a transport definition (not FHIR, not DICOM). They may eventually need FHIR expressions to travel over FHIRcast, and should be designed to allow that, but that is completely separate from the definition of the structures applications manipulate." +- Email notes, point 5: "Agreed structures make it easier to agree on what must be conveyed between systems… The structures GUIDE the design of the FHIR profiles and related artifacts that will need agreement for inter-process communication. This is the motivation for the IPL." +- `knowledge/plans/2026-09-20-knowledgebase-build-plan.md`, "Decisions added 2026-09-21", row "Data structures versus transport": records this as the project's position and directs that the data-structure documents be reframed. +- JDIM IPL manuscript, printed p.7: "The IPL is an application-layer data model: the data structures that applications read and write to represent a patient's imaging findings, **defined independently of any transport protocol**. When systems exchange the record, those structures can be expressed in FHIR, and each element of the model can be carried by a FHIR Release 5 resource (Table 1)… Storage representation, location, versioning, and exchange with reporting, archive, and electronic health record systems are implementation choices. An implementation may store the record in relational, document, or graph form." +- JDIM IPL manuscript, printed p.18: "Shared data structures come first. When systems hold the same structures, what must pass between them to convey a patient's findings is easier to agree on, and the structures guide the FHIR profiles that exchange will require. We offer this model as a starting point for an open, community-developed standard." +- January 2026 deck, call to action: "structure-first (then FHIR etc.)." +- Site post "Data Model: Structure and Function", 2024-01-25: OIDM is "a superstructure on top of these FHIR definitions to both organize them and enable more straightforward programmatic access to the data"; "the relationship between OIDM and FHIR might be that between the browser's DOM and HTML." + +**Related.** C1, C2, C3, A22. + +**Unresolved — the term itself.** The manuscript under review uses "application-layer data model" in its abstract, its Methods (printed p.7), its Discussion (printed p.19) and its Limitations (printed p.19). The project lead on 2026-09-19 calls that phrase imprecise and proposes replacing it. The manuscript's own gloss already says "defined independently of any transport protocol", so the disagreement is over the label, not obviously over the content. + +**Unresolved — the FHIR mapping itself.** Two mappings are on record for the IPL: + +| Source | IPL FHIR expression | +|---|---| +| IPL repo `main` `06f64a7` and `dev` `36fa30c`, README and `CLAUDE.md` | "**Report** containing a list of **Condition** objects (labeled with the finding identifier), where each Condition object also contains a list of **Observation** objects" | +| JDIM IPL manuscript, Table 1 (image page 88 of the PDF), as summarized in `sources/bucket/REPORT.md` §4 | EFL observation → `Observation` (CDE-labeled); examination report → `DiagnosticReport`; anatomic site → `BodyStructure`; IPL entry → `List` (or a custom profile); succession link → a `Reference` between Lists or an extension; status → none, derived only; review status → `Provenance` | + +"Report" is not a FHIR resource name. Neither mapping is implemented: IPL repo `dev` `36fa30c` has no FHIR resource classes and no code that emits FHIR (`knowledge/data-structures/fhir-mapping.md`, "What is actually implemented"). + +**Unresolved — components versus hasMember.** OIDM's attribute encoding uses `Observation.component` throughout (IPL repo `main` README; `FHIRSamples` `9ae2fa9`; `OpenImagingDataModel.py` `455e5b6`). The IHE Imaging Diagnostic Report Phase II public-comment draft states `Observation.component` "is not used" and routes elements through `hasMember` instead, while the January 2026 deck names IDR as the EFL's target ("Connects to IHE Imaging Diagnostic Report (IDR) FHIR representation"). Recorded in `knowledge/data-structures/ihe-idr-alignment.md` from the extract on `RSNA/ACR-RSNA-CDEs` `next-gen-2026`; unresolved. + +## A22. The re-documentation burden: measured evidence for the Imaging Problem List + +**Statement.** A two-site study of 200 serial chest CTs measured how much of a follow-up report re-documents findings an earlier report in the same series already described, and what depth of memory an IPL would need to supply it. + +**Status.** Implemented study with results (prepared for submission). + +**Evidence.** All from the JACR IPL manuscript, Results and Table 3; 50 patients, four consecutive chest CTs each, two academic sites, report text only, extraction validated against radiologist review. + +| Measure | Result | +|---|---| +| Findings on follow-up CTs that were chronic | 57.6% (1,286/2,232), 95% CI 54.5-60.8 | +| Chronic findings asserted without hedging, re-documented with no change (primary outcome) | 77.4% (951/1,229), 95% CI 73.3-81.4 | +| Of content re-documented with no change, share permanent | 61.1% (607/993) | +| Follow-up findings an IPL built from the whole series would account for | 44.5% (993/2,232) | +| Follow-up findings the most recent report alone would account for | 26.7%, at most 31.1% | +| Findings tracked on two or more CTs that dropped out and returned | 18.9% (103/545), two-thirds permanent | +| Fourth-CT findings an IPL built from the first three already lists | 49.6% (308/621) | +| IPL entries the fourth report re-documented | 19.1% (308/1,615) | +| Extraction confirmed against the source report | 98.3% (1,153/1,173) | + +Additional evidence: the taxonomy "is built on the Open Imaging Data Model finding vocabulary" and sites were "mapped against the Anatomic Locations index, a RadLex-derived anatomic reference" (Methods), so the study is also a use of the semantic foundation. The supplement (`sources/bucket/text/jacr-ipl-supplement.md`) states the taxonomy is "built on the Open Imaging Data Model chest CT finding taxonomy, with the codes this study added" and that the rule set, taxonomy and analysis code "will be made available in a public repository at publication." + +**Related.** A8, A14, B5. + +**Undetermined.** Both manuscripts are unpublished. The JACR one carries no manuscript number or cover letter, so its submission status is not confirmed by the file itself. + +## A23. Normality is recorded as an absent abnormality + +**Statement.** A report sentence saying a structure is normal is not empty of findings. It is translated into the corresponding abnormality, marked absent. "Clear lungs" becomes a pulmonary parenchymal or airspace abnormality, absent; "normal cardiac silhouette" becomes cardiomegaly, absent. A statement covering a whole region at once is a blanket negative, and it must be scoped to an abnormality the sentence actually excludes rather than to an unrelated or over-specific one. + +**Status.** Implemented example, encoded in three prompts and given a named failure mode. + +**Evidence.** +- Extraction prompt `CORE_INSTRUCTIONS_BLOCK` item 4, "**Normal findings are absent abnormalities**", with three worked mappings: "'clear lungs' → 'pulmonary airspace abnormality', absent"; "'normal cardiac silhouette' → 'cardiomegaly', absent"; "'normal lung volumes' → 'pulmonary volume abnormality', absent". +- `CHUNK_RULES_BLOCK` item 3: "If a structure is described as normal, encode the corresponding abnormal finding as absent. For example, 'clear lungs' implies an absent pulmonary parenchymal abnormality finding." +- `PRESENCE_BLOCK` treats normality wording as a plain absent assertion: absent means "explicitly stated as absent (e.g., 'no ascites', 'normal hilar contours', 'unremarkable')". +- `prompts/validator_prompt_example.md`, user-prompt template: "Explicit negatives should be represented as clinically meaningful absent findings; blanket negatives should map to appropriately scoped absent findings (e.g., 'clear lungs' -> {'finding_name': 'pulmonary parenchymal abnormality', 'presence': 'absent'}), not unrelated or over-specific absent findings." The reviewer's problem taxonomy includes `incorrect_blanket_negative` as one of seven named failure types. +- `FHIRSamples` `main` `9ae2fa9`, `chest_ct_report/findings.md`: the hand extraction records "Consolidation / Absent", "Pleural effusion / Absent", "Pneumothorax / Absent" and star-marks "Pericardium / Normal: No effusion, no thickening, no calcs" as a model apparently missing — the same idea reached by hand in 2024, and the same vocabulary gap. +- `IPL-MVP-ExtractionAndLabeling` `main` `b06948f`, `config.py` `EXTRACTION_SYSTEM_PROMPT`, already asks for "Negative findings (explicitly stated as absent)". + +**Related.** A11, A9, A24, A26. + +**Unresolved.** The idea has a vocabulary cost that no source resolves: it requires a coded abnormality to exist for every structure a radiologist can call normal, at the right scope. The `FHIRSamples` hand extraction star-marks exactly such gaps, and the `definition_mismatch` and `no_candidate_match` rejection reasons in the coding prompts (A24) are designed to surface them, but nothing states who fills them. + +## A24. Coding aims at convergence, so generalizing is allowed and specializing is not + +**Statement.** The point of assigning a code is that descriptions referring to the same clinical concept end up with the same label, whether they appear in one report, across one patient's reports, or across patients. That goal makes the two directions of error asymmetric. A slightly more general code is acceptable and often preferred, because it groups equivalents. A more specific code is never acceptable, because the report did not assert that specificity and using it fragments what should be one group. When nothing fits, the finding is left uncoded with a reason, rather than forced. + +**Status.** Implemented example, stated as the explicit purpose inside the coding prompts. + +**Evidence.** +- `FINDING_TERM_SYSTEM`, opening: "The goal of this process is to assign a common standardized label to all descriptions that refer to the same clinical concept — whether they appear in the same report, across reports for one patient, or across different patients. This means terms should target the general concept, not report-specific details. Being too specific defeats the purpose of grouping equivalent findings together." +- `FINDING_TERM_SYSTEM` rules 2 and 3: "Prefer slightly MORE GENERAL terms over more specific ones… for '3 mm nonobstructing left renal calculus', good search terms would be 'renal calculus', 'urinary tract calculus', 'kidney stone' — NOT 'nonobstructing renal calculus' or '3 mm kidney stone'"; "NEVER propose terms that are MORE SPECIFIC than the extracted finding name. Specificity beyond what the report states risks matching the wrong concept." +- `FINDING_CODE_SELECTOR_SYSTEM` rules 2 and 3 apply the same asymmetry at selection: "A SLIGHTLY MORE GENERAL candidate is acceptable and often preferred… 'urinary tract calculus' is a good match for 'renal calculus' — it groups all urinary stones under one label, and the specific location is captured separately"; "A MORE SPECIFIC candidate is NOT acceptable. 'Staghorn calculus' is NOT a valid match for 'renal calculus' — the report does not assert that level of specificity, and using it would fragment what should be a single group." +- `FINDING_CODE_SELECTOR_SYSTEM` rule 5, refusing to force a match: "If NO candidate is a reasonable match, return null for oifm_id. Do not force a match. An unresolved finding is better than a wrong code." The rejection must be classified as `too_specific`, `too_broad`, `wrong_concept`, or `definition_mismatch`, the last defined as "the candidate's NAME looks like a match, but its description, synonyms, or tags reveal a more specific or different concept than the name suggests." +- `LOCATION_CODE_SELECTOR_SYSTEM`, "Unresolved Reasons", makes the same distinction for anatomy: `no_candidate_match` ("you know where the finding is located, but none of the candidates adequately represent that structure") versus `location_unknown` ("you cannot determine where the finding is located even after considering the report context and exam type"). +- `docs/coding-agent-prompts.md`, Design Notes, states what the reasons are for: `no_candidate_match` "flags index gap"; `definition_mismatch` "flags ontology entries needing cleanup". The refusal is a feedback channel into the vocabulary, not only a null. +- `FINDING_TERM_SYSTEM` rules 6 and 7 bound the generalizing: do not generalize to "pure meta-categories like 'finding', 'disease', or 'pathology'… The broadest acceptable term should still name a recognizable clinical concept. Prefer 'abnormality' when generalizing an observation"; and "For FOCAL findings, 'lesion' is the standard generalizing term — a lesion is a focal abnormality. Do not use 'lesion' for diffuse processes." +- `prompts/validator_prompt_example.md` guards the same boundary from the extraction side, with `over_specific_finding_name` among its problem types and the instruction that names "should not be more specific than the chunk supports." +- `docs/coding-agent-design.md` records that a deterministic fast path runs first: an exact or synonym hit in the finding index or the anatomic location index resolves without any model call, so the model is consulted only for what the index did not already settle. + +**Related.** A3, A8, A9, A23, A25, and the finding-model index in the semantic inventory. + +**Unresolved — technical language.** The two coding prompts pull opposite ways on modality-specific wording. `FINDING_TERM_SYSTEM` rule 8: findings in technical language "should be searched using the technical observation term itself — do not reinterpret as a specific diagnosis or pathological process." `FINDING_CODE_SELECTOR_SYSTEM` rule 8: "When the finding is described in modality-specific technical language (e.g., 'hypodense lesion', 'T2 hyperintense focus'), match based on the underlying clinical concept, not the imaging technique." `docs/technical-imaging-findings.md` sides with the first, warning that "Marrow signal abnormality' should be searched as exactly that — it is the observation. Do NOT reinterpret as 'bone marrow edema' or 'marrow infiltration', which are specific diagnoses that may or may not be the cause." Whether the selector is meant to strip only the modality wrapper or to resolve to a diagnosis is not stated. + +## A25. Finding type, anatomic site, and presence are independent axes + +**Statement.** What a finding is, where it is, and whether it is present are coded separately and do not condition each other. The type code answers what, the location code answers where, and presence rides on neither. + +**Status.** Implemented example, stated as rules in the coding prompts and realized in the pipeline's shape. + +**Evidence.** +- `FINDING_CODE_SELECTOR_SYSTEM` rule 7: "Match based on WHAT the finding is, not WHERE it is. Anatomic location is coded separately." Rule 6: "The finding's `presence` does NOT affect code selection." +- `LOCATION_CODE_SELECTOR_SYSTEM` rule 1 mirrors it from the other side: select the candidates "that best represent WHERE the finding is located". +- `docs/coding-agent-design.md`: the pipeline runs finding-code selection and location-code selection as "**parallel LLM calls** within the same concurrency semaphore", each with its own term generator, and `docs/coding-agent-prompts.md` Design Notes record that "A finding can resolve via fast-path on one axis but not the other," so the two axes are tracked independently per finding. +- The extraction prompt keeps the axes apart in the data too: `ATTRIBUTES_BLOCK` forbids "location" as an attribute key, and `initial-extraction-plan.md` makes `FindingLocation` a separate structure rather than one more attribute. +- `docs/plans/anatomic-location-efl-ipl.md`: "presence doesn't gate location" — an absent finding still receives anatomy. +- JDIM IPL manuscript, printed p.8: entry identity rests on the finding code and the anatomic site together, which is only well defined if the two are coded independently (A4). + +**Related.** A1, A4, A12, A24. + +## A26. A named taxonomy of extraction failures, checked by an independent reviewer + +**Statement.** Translating prose into structure has specific, nameable ways of going wrong, and the system checks for them with a second model that reviews each chunk against its source text and can send that chunk back for re-extraction. The failures are enumerated: content asserted that the text does not support, a finding in the text with no structure representing it, the wrong presence, a name more specific than the text supports, a mishandled blanket negative, and wrong or wrongly scoped location. + +**Status.** Implemented example. + +**Evidence.** +- `prompts/validator_prompt_example.md`, system prompt, lists the "issue patterns that justify re-extraction" verbatim: "extraction structure contains clinically meaningful content unsupported by the chunk text (hallucination)"; "some report text describing a finding is not represented by any extraction data structure (missed finding)"; "a structure describes a finding as being present when it is not, or absent when it is possible (wrong presence)"; "finding name is more specific than described in the chunk text (too specific finding name)"; "incorrect representation of a blanket negative (incorrect blanket negative)"; "wrong or too-specific or general location information (incorrect location)". The structured response uses the type vocabulary `hallucination`, `missed_finding`, `wrong_presence`, `over_specific_finding_name`, `incorrect_blanket_negative`, `incorrect_location`, `other`. +- The same file bounds the reviewer's remit: "Do not request re-extraction for formatting/style differences alone", and the user template tells it "do not perform a fresh extraction" — it judges, it does not replace. +- The reviewer's decision object is one per chunk: `report_chunk_id`, `should_reextract`, `problems[]` each with a finding index, a problem type and a detail, and a `rationale`. +- `docs/extraction-internals.md`, "Reviewer Contract", records an independence requirement in configuration: the reviewer model is "optional override; **must differ from extraction model**". Reviewer feedback "is threaded to retry chunks and appended to the chunk extraction prompt", and "Review timeout is non-fatal — pipeline continues without re-extraction." +- `docs/extraction-internals.md`, chunking: sentence spans are computed first; short sections pass through whole; an impression with list structure is chunked deterministically by grouped list items; otherwise semantic grouping with a sentence-group fallback; a default cap of three sentences per chunk. Each chunk is handed to the sub-agent with preceding and following half-chunk context marked advisory. + +**What the code implements.** IPL repo `dev` `36fa30c` runs extraction and review as a per-chunk pipeline with bounded concurrency, so a chunk can be reviewed while other chunks are still being extracted, then merges and deduplicates across chunks before optional whole-output validation (`docs/extraction-internals.md`, "End-to-End Pipeline" and "Stage Status Sequence"). The named stages are preflight, sectionize, extract_exam_info, extract_sections, review, merge_dedupe, validate_output, persist, then completed, completed_with_warnings or failed — and `completed_with_warnings` is a distinct terminal state, so an extraction that raised concerns is neither silently accepted nor thrown away. + +**Related.** A3, A23, B2, B4. + +--- + +# Part B. Applications and uses + +## B1. The Imaging Problem List viewer, and anatomy as presentation only + +**Statement.** Two viewers exist. The first navigates IPL → EFL → report with status and body-region filters. The second is an anatomy-first dashboard: an abstract body-map schematic with burden shown as fill intensity, laterality shown spatially in radiological orientation, and drill-down from region to organ cluster to exact location to finding to observation. Its governing rule is that the viewer trusts the IPL: "Each IPL `finding.id` is the canonical clinical problem row. Anatomy grouping is presentation-only and must never merge or split IPL findings." + +**Status.** Implemented example (both deployed); working proposal (the redesign plan's later slices). + +**Evidence.** +- IPL repo `main` `06f64a7`, `CLAUDE.md` "IPL Viewer Application": three-level navigation, temporal status tracking, status and body-region filtering, multi-patient support, dark-mode-first "designed for radiologists". +- IPL repo `dev` `36fa30c`, `docs/plans/viewer-v2-anatomy-dashboard.md`: the trust rule quoted above; the status semantics; the anatomy precedence ladder (IPL location first, then index metadata, then cluster config, containment ancestors only as a fallback, `unlocalized` otherwise); the four laterality buckets `left`, `right`, `midline_nonlateral`, `generic_unspecified` with "Generic/unspecified findings must not be folded into left/right counts"; the body-schematic redesign with its explicit record of why the first stacked-card layout failed; and "Anatomy clustering is deterministic presentation metadata. It is not clinical reconciliation." +- Same plan, finding-detail requirement: the detail must separate **instance data** (actual location, status, observations, dates, report evidence) from **definition data** (description, synonyms, typical anatomy, modalities, subspecialties, etiologies, ontology codes) from **anatomy data** (RID, region, cluster, laterality, containment path). +- example2 study §2.2: the implemented `MetadataSections` panels match that three-way separation; drill-down state is mirrored into the URL query string so any view is a shareable link; evidence highlighting is strict Unicode-normalized exact substring matching with an index map back to the unmodified report text, and a miss surfaces as a warning "rather than silently failing or approximating." +- example2 study §2.2: the generated bundle's `manifest.json` carries exactly 7 build-time warnings — 2 `missing_anatomy`, 4 `evidence_not_exact`, 1 `missing_definition` — surfaced in the UI. These are QA signals about the bundle, not clinical confidence. +- SIIM webinar slides 26 and 33: both prototypes driven live by attendees; slide 33 speaker notes name "the honest edge, the banner admitting two findings have no specific anatomy location." +- January 2026 deck: demo at `https://imaging-problem-list.pages.dev`. + +**Related.** A5, A12, A13, B5. + +**Unresolved.** The two viewers diverge on same-exam duplicate observations: viewer v1 merges them into one row per `report_id`, viewer_v2 lists each separately (example2 study §2.2). Neither behavior is stated as the intended one. + +**Undetermined.** `viewer/data/` is not example2: it holds a pre-anatomy 98-entry bundle for the same patient, no script on `dev` writes to it, and 0 of 288 finding entries there carry `anatomicLocation` (example2 study §2.1). Whether the deployed v1 is meant to be retired is not stated. + +## B2. The report extraction, coding, persistence and review platform + +**Statement.** The dev branch is a working platform that takes report text to coded findings and keeps the human in the loop: chunked multi-provider LLM extraction with verbatim-quote validation, a separate coding step, SQLite persistence with reports deduplicated by content hash and every extraction run stored with its model and settings, reviewer corrections as first-class objects, asynchronous job processing, an API, a batch CLI, and a reviewer UI. + +**Status.** Implemented example. + +**Evidence.** +- IPL repo `dev` `36fa30c`, `README.md`: providers OpenAI, Anthropic, Google, OpenRouter, Ollama, vLLM; the persistence section (SHA-256 report dedupe; each extraction run stored with report link, timestamp, model, reasoning setting, full JSON payload; corrections as `add_finding`, `update_finding`, `comment`); the Taskfile command surface; the batch extraction CLI. +- IPL repo `dev` `36fa30c`, `CLAUDE.md` "Architecture Notes": chunked extraction with bounded concurrency and a reviewer sub-agent that "can flag issues and trigger targeted re-extraction of specific chunks"; verbatim quote validation; "Post-extraction coding pipeline: After extraction, a separate coding agent maps findings to standardized OIFM codes. This is a distinct step from extraction"; TaskIQ workers over a Redis broker; API returns 202 plus a job ID. +- IPL repo `dev` `36fa30c`, `docs/human-review-workflow.md`: the gold-extraction workflow — batch-generate one candidate extraction per report, human reviewers overread and correct, corrected files become the gold set. +- SIIM webinar slide 16 speaker notes: "the extractor shown is one implementation of many. Many groups will build their own harness; what they share is the data model it targets." — an explicit statement that the platform is not the contribution. + +**Related.** A3, A7, B3, B4, C1. + +## B3. Coding is an independent job, decoupled from extraction + +**Statement.** Assigning OIFM finding codes and anatomic location codes is a separate job from extraction. Extraction output persists without codes; coding is triggered separately and can be re-run with different models or settings. It runs as a five-phase pipeline over the flat merged finding list: fast-path index lookup, parallel LLM term generation for findings and locations, batched index search, parallel per-finding LLM selection, and assembly, with each phase degrading non-fatally. + +**Status.** Implemented example with a written design rationale. + +**Evidence.** +- IPL repo `dev` `36fa30c`, `docs/coding-agent-design.md`: "Coding assigns OIFM finding codes and anatomic location codes to extracted findings. It is an **independent job** — fully decoupled from extraction." The five phases; the non-fatal per-phase design ("One finding's failure does not block other findings"); four separate prompts; tuned parameters `SEARCH_LIMIT = 6`, `MAX_CANDIDATES = 12`, `MAX_CONCURRENCY = 8`, each with a stated prototype-testing justification; and "Dropping full report text from term generation prompts produced identical results with 22% fewer input tokens." +- IPL repo `dev` `36fa30c`, `docs/plans/anatomic-location-efl-ipl.md`: the location-coding prompt rule that "If location is null, infer from the exam info and report context", and that "presence does not affect coding" — absent findings still get anatomy. +- example2 study §3.2: the sample-data enrichment pass reuses the production coding runtime rather than a one-off heuristic, and works around its name-based grouping by spreading repeated finding names across slots so each observation is coded from its own report text. + +**Related.** A12, B2, and the finding-model index ideas in the semantic inventory. + +## B4. Honesty-first evaluation of extraction + +**Statement.** An extractor evaluation that scores throughput and raw yield cannot distinguish a real recall gain from fabrication. The redesign makes the primary matcher quote-first, scores attribute *values* rather than only keys, freezes run configurations, keeps per-case artifacts, and uses adjudicated gold files rather than reviewed extractor output as the source of truth. + +**Status.** Stated direction with a recorded descope decision; version one scoped, not yet reported as implemented. + +**Evidence.** +- IPL repo `dev` `36fa30c`, `docs/plans/extractor-evals-redesign.md`, descope note dated 2026-07-07: "recent model-selection rounds (e.g. 2026-05-14, which made gemma4 the local default on '67s avg + 30% more findings') score throughput and raw yield, and cannot distinguish recall gains from fabrication." The plan was "deliberately **descoped rather than discarded**" after 3.5 months with zero implementation, because "The full plan's ceremony… is what made it unstartable." +- Same document, "Current Problems To Fix": the smoke dataset is in-sample because it is built from few-shot prompt examples; "Current gold is too close to reviewed extractor output in the extractor's own schema"; "Attribute scoring only checks keys, not values"; matching applies presence/location/attribute bonuses before those same fields are scored, "which can hide semantic errors." +- Same document, Core Decisions: "Source of truth is adjudicated gold in `*.gold.v1.json` files, not raw `*.extracted.json` output"; gate and benchmark sets "must both be held out from prompt examples." + +**What the code implements.** The instrument for producing that gold is a deliberately primitive one. `docs/plans/extraction-reviewer-ux.md` describes `extraction_reviewer/` as "the standalone, single-file HTML review tool — no server, no install, no network at run time," and `docs/plans/extraction-reviewer-workflows.md` records that its vanilla-JavaScript, no-CDN build is "a **sanctioned exception**" to the project's own frontend convention because "the offline `file://` zero-install requirement justifies it" — the tool has to run on a reviewer's machine wherever the reports are. A reviewer walks findings one at a time with keyboard verdicts of approve, flag or unsure, logs findings the extractor missed by highlighting the supporting text in the full report, and exports one review file per extraction. A later round added structured flag targets so a reviewer names which field is wrong rather than only writing a comment: finding name, presence, anatomic site, laterality, size, severity, extent, temporal status, hedged language, and lumps-multiple. + +The workflows plan states the intended path from review to gold: a converter applies a review file to its source extraction, passing approved findings through, surfacing flagged ones for correction, and turning missed findings into stubs to fill in, with the result finalized by an adjudicator and ingested by the evaluation harness. That chain, "the reviewer→converter→import-gold pipeline," is named "the documented source-of-truth path for gold." + +**Related.** A3, A26, B2. + +**Undetermined.** The gold file schema is open: the workflows plan records that the evaluation plan "names `*.gold.v1.json` but doesn't fix the schema; proposal is 'extraction schema + adjudication provenance fields.'" + +## B5. Six downstream application families for the Imaging Problem List + +**Statement.** The same record supports report pre-population, incidental-finding surveillance, chronic-disease monitoring, cross-subspecialty awareness, quality surveillance and research cohorts, and a breast-imaging case. + +**Status.** Stated design implications awaiting evaluation (manuscript's own words); the webinar presents them as a roadmap. + +**Evidence.** +- JDIM IPL manuscript abstract: "Pre-populated chronic findings, follow-up tracking, cross-subspecialty awareness, and a substrate for artificial intelligence (AI) reasoning are **design implications awaiting evaluation**." +- JDIM IPL manuscript, printed p.15, "Report Efficiency": "A reporting system built on the IPL could pre-populate confirmed chronic findings for the radiologist's review, so that dictation, or an artificial intelligence (AI) draft, focuses on what is new or changed." +- JDIM IPL manuscript, printed p.15, "Follow-Up Tracking and Safety": "Of lung nodules recommended for follow-up imaging, 40-60% do not receive it on time, and some of those lost to follow-up progress to advanced-stage cancer." +- JDIM IPL manuscript, printed p.16: cross-subspecialty awareness (the adrenal nodule seen on a chest CT five years earlier), and "The IPL and the clinical problem list are complementary: one tracks what imaging observes over time, the other what clinicians diagnose and manage." +- JDIM IPL manuscript, printed p.14-15: "identification for research, quality assurance, and education. The applications that follow are examples of what the model could enable." +- SIIM webinar slides 36-41: the six families named and given one slide each — report pre-population (slide 37: draft opens with each finding flagged pre-filled or new, "Interpretation, not inventory"), incidental-finding surveillance (slide 38: "report content, not exam code, decides completion… same exam code, opposite outcomes"), chronic-disease monitoring (slide 39: "True growth rate: frequent f/u masks it"), cross-subspecialty awareness (slide 40, with per-organ rules and "4.1% of recs avoidable with all priors"), quality surveillance and research cohorts (slide 41). +- SIIM webinar slide 35 speaker notes: ">1.5 M new incidental lung nodules/yr (Gould 2015)… 40-60% of recommended follow-up never happens." +- January 2026 deck, "IPL across imaging life cycle": planning (MRI safety, mobility, pre-authorization); intra-exam (rules-based protocoling); interpretation (findings-oriented PACS views, real-time quality control); post-interpretation (passive screening, research, outcomes). +- Board 1 (internal; content only), "Imaging Problem List" overview box: "MRI safety checks; Protocoling; Interpretation process — Draft report generation, PACS integration, Point-of-care report quality checks; Coding/billing; Drive EMR-side care pathways (CDS hooks); Data mining; Differential displays of reports: specialists, patients; Population health monitoring." + +**Related.** A14, A18, B6, B7, B8, B11. + +## B6. Breast imaging: one entity across assessments, and an automated MQSA audit + +**Statement.** A breast mass tracked as one IPL entity across five examinations and eighteen months, its BI-RADS assessment moving 0 → 3 → 4A → biopsy → 2, with the marker clip becoming a durable re-identification anchor. Two applications are proposed on that record: presenting the IPL to the radiologist while reading, and an automated outcomes audit built from the BI-RADS assessment and any pathologic cancer diagnosis within one year — the data the federally required Mammography Quality Standards Act audit is built from. + +**Status.** Stated as planned work, not results, by the source itself. + +**Evidence.** +- SIIM webinar slide 42, "Breast IPL": the five-exam sequence with dates and assessments verbatim; "At biopsy the entity transitions from mass-as-observation to fibroadenoma-as-diagnosis, and the marker clip becomes a durable re-identification anchor on every future exam. **Present as planned work, not results;** the monitoring agent is later scope." +- SIIM webinar slide 43 speaker notes: the display-at-interpretation application with its design path ("focus groups with breast radiologists, then iterative usability testing toward a pilot"); and the audit — "for every screening exam the IPL already holds the BI-RADS assessment and any pathologic cancer diagnosis within one year: exactly the data the federally required MQSA audit is built from. Today that audit mixes semi-automated and manual steps, and many facilities audit only mammography; an IPL-derived audit runs continuously across mammography, ultrasound, and MRI. **Present as planned work: design, not results.**" + +**Related.** A4, A9, B5, B7. + +## B7. Outcome tracking, follow-up completion, and radiology-pathology correlation + +**Statement.** A design for closing the loop between what a radiologist reported and what later happened to the patient: what a "future clinical event" record needs, patient factors kept deliberately separate from EHR data, an escalating cascade from per-case feedback up to population statistics, notification and worklist actions, and concrete use cases including diagnostic-yield auditing of the *-RADS systems, feedback to ordering providers, and interventional-radiology outcomes. A companion board works the imaging-to-biopsy-to-pathology link and proposes a shared tracking identifier across imaging Observation, procedure note and pathology report. + +**Status.** Working proposal on internal boards, grounded in a published quality-measure article; one named demo project in a governance board; nothing built. + +**Evidence.** +- Board 12 ("Outcome Tracking Schema", no named individuals, moderate sensitivity as unpublished design): the "Future Clinical Event" event types (imaging, pathology, operations and procedures, endoscopy/arthroscopy, diagnoses and problem-list items, lab tests, death, registry data, disposition, therapeutic) and result information; the patient-factor box annotated "Keep patient factors separate (from EHR and other sources)" covering demographics, risk factors, medical conditions, socio-economic factors, connectedness with the healthcare system and technology, and allostatic load; the six-step "use cases cascading" from identifying outcome data up to "Track pathways: incidental detection → follow-up study → biopsy/surveillance → treatment → morbidity → survival"; the Actions box (notify leadership/supervisor, notify radiologist immediately or by periodic digest, notify provider or patient of follow-up that has not occurred, create a registry, put on a work queue or dashboard). +- Board 12, "Specific Use Case examples": recommendation completion tracking; "auditing of diagnostic yield of malignancy-related RADS (BI-RADS, PI-RADS, TI-RADS, LI-RADS, Lung-RADS)"; trainee draft-to-final significant-change notification; continuous AI monitoring at aggregate and provider level; ordering-provider feedback on diagnostic yield; IR outcomes. +- Board 12 cites Kadom et al., "Novel Quality Measure Set: Closing the Completion Loop on Radiology Follow-up Recommendations for Noncritical Actionable Incidental Findings", *J Am Coll Radiol* 2022;19:881-890 — a real external source not referenced anywhere in the current bundle. +- Board 7 ("Radiologist Outcome Feedback", internal; schema content only): use cases for outcome tracking (personal performance review, training and education, quality improvement and peer review, research); interface options (passive, active query, aggregate dashboards); the "Path Result ↔ Biopsy Procedure" note — "Could use a shared tracking ID across imaging Observation → procedure note → pathology report." +- Board 14 ("ACR OIDM", low sensitivity), Demo Projects: "Outcome tracking demo" named alongside the templating and pulmonary-nodule demos. +- Board 1 (internal; content only): the cross-source integration idea — assembling an ED visit, a CT finding, an operative note, a pathology finding and a subsequent CT sequela under one concept such as "appendicitis", described as "Multiple channels that feed into a master, integrated knowledge base." + +**Related.** A18, A19, B5, B11. + +## B8. The reporting assistance framework: a context object model plus a plugin container + +**Statement.** A reporting tool hosts plugins in a container. The container supplies an OIDM-defined data context object and accepts a fixed set of commands from the plugins, re-running every plugin whenever the context changes. Two sources give the command list at different depths. + +**Status.** Stated goal (deck's applications pillar, named "Open Imaging Reporting SDK"); working proposal (the 2023 site post and the board slide); one working rendering precedent; no container implementation. + +**Evidence.** +- January 2026 deck, strategic pillar 3: "Applications: Open Imaging Reporting SDK (vendor-driven innovation); demo apps: IPL Browser, early draft-generation tools." +- Site post "OIDM-Based Next-gen Reporting Assistance Framework", 2023-07-16: plugins written in a language such as JavaScript; the container supplies current findings, prior reports and the exams being reported; plugins issue four kinds of command (insert generated text, request information from the radiologist, alert the radiologist to a problem, send data to an external system); the container re-runs every plugin whenever context changes. +- Board 9 ("OIDM Big Picture"), "Reporting Assistance Framework" frame (described in the transcription as a polished, presentation-quality slide, not hand-drawn): **nine** commands — insert text into report; add/change data in data context; prompt radiologist for data; get EMR data elements; alert radiologist to quality issues; show radiologist images/findings; activate communication tools; package/send data to EMR/registries; request inference on images — against the **nine-field** Reporting Data Context Object Model listed in A16. +- Board 9, "SDK Development" work thread: "Multi-vendor shared work to define the structure of 'apps'; Need defined data structures, program interfaces; Incorporate other defined information; Model is web browser DOM." +- Board 9, "Next-Generation Assisted Reporting Use Cases" mind map (also present on Board 13): branches AI Tool Integration, Quality Checks (coding/MIPS checks; language and structure checks including left/right errors, sex-phenotype errors, anatomy-based errors, report length versus norms, findings-versus-diagnosis placement, undesirable phrases such as "cannot exclude"; "Is asked question answered?"), Specialized Reporting Applications, External Applications, Smart References, Facilitate/Automate Workflows, Report Generation, Longitudinal Reporting, Radiologist Situational Awareness. +- `CDETemplateDemo` `master` `e09f255`: a working web service that flattens a CDE-labeled FHIR Observation into template data keyed by component display name, derives boolean flags including presence and absence, and renders a Mustache text template; sample observations and templates are added as files under `mapper_ui/public/`. The one working precedent for a plugin that inserts generated text, and it uses no language model. +- openimagingdata.org About page, last modified 2023-06-21: programming interfaces promised in TypeScript/JavaScript, Python and C#. `knowledge/applications/reporting-sdk.md` records that the first two became lineage repositories and no C# library was written. + +**What the code implements.** `CDETemplateDemo` `master` `e09f255` is the working slice of the "insert generated text" command, and its presence handling is the interesting part. `mapper-logic/src/mappers/jsonToObservation.ts` validates an incoming Observation and flattens its components into a lookup keyed three ways — by element code, by lowercased display name, and by capitalized display name — and `obsToMustache.ts` additionally sets each value string as a boolean flag so a template can branch on it. The commit named "Better presence handling (w/samples)" added a special case: when the component is presence, it sets `presence_present` and `presence_absent` booleans, and the sample template wraps the descriptive sentence in one and adds "There is no pneumothorax." under the other. So one coded Observation and one template render either an affirmative sentence or its negation, which is the rendering counterpart of A11 and A23. + +**Related.** A11, A16, A17, A23, B5, C2. + +**Unresolved.** The 2023 post names four commands; Board 9's slide names nine. No source states which supersedes the other. The post's own wording is that assistance "would take the form of standard commands generated by the scripts back to the reporting environment, which could then insert generated text into the existing report, ask the radiologist for additional information, alert the radiologist to a particular problem, or send data to an external system", with plugins authored "in a standard programming language, like JavaScript", and the container re-running them because "As the report context changes (more AI data comes in, the radiologist updates the report manually), the reporting tool would re-run each script with the updated data context so it could take appropriate actions." + +**Unresolved — no global presence element.** The presence element identifier is per CDE set: `RDE1717` for pulmonary nodule in `FHIRSamples` `9ae2fa9`, `RDE421` for pneumothorax in `CDETemplateDemo` `e09f255`. Any tool that wants to find "the presence element" of an arbitrary set must therefore do what Board 15's "CDE Role Standard Tagging" proposes (B9), and nothing yet does. + +**Undetermined.** The project lead confirmed the SDK is concept only; no repository, package, issue or branch for it was found (`knowledge/applications/reporting-sdk.md`, "Status first"). + +## B9. A multi-vendor interoperability demonstration exchanging CDE-labeled FHIR Observations + +**Statement.** A named demonstration project — pulmonary nodules — in which an EHR vendor, reporting vendors, AI vendors and PACS vendors exchange pulmonary-nodule findings encoded as CDE-labeled FHIR Observations over FHIRcast, with a seven-step workflow from AI-generated nodule description through radiologist acceptance, report incorporation, retrieval of prior known nodules, association, and return of both text and Observation objects to the EHR. + +**Status.** Working proposal on an internal board; named as a demo project in the governance board; no implementation found. + +**Evidence.** +- Board 15 ("Pulm Nodule Demo Project", internal; schema and workflow content only, vendor-partnership framing omitted). Title: "RSNA/ACR AI In Practice Demo Project: Pulmonary Nodules!" Subtitle: "Exchange of radiology findings encoded as CDE-labeled FHIR Observations." Four vendor-role categories are given (EHR, reporting, AI, PACS), each with named example companies; the organizations are recorded in the source and are not reproduced as partnership claims here. +- Board 15, "Basic Principles": "Everywhere, we send data structured as FHIR Observations (including ontology codes). Exchanging everything as FHIRcast." +- Board 15, Complete Workflow, steps 1-7 as transcribed, including step 4's shared tracking ID (see A19) and step 5's open questions about who associates new nodules with prior ones and who adds the tracking ID. +- Board 15, "Smart Annotations": a PACS viewer infers which CDE Set a radiologist is characterizing from the annotation tool used and the anatomy under it, elicits the remaining elements the Set defines, and sends a FHIR Observation with the Set ID and components tagged with element IDs over FHIRcast. +- Board 15, "CDE 'Role' Standard Tagging": use standard SNOMED/RadLex tags on element definitions to mark an element's role or purpose (presence, location, size with its several measures, volumes, segmentation data, modality-specific measures such as radiodensity, echogenicity and MR signal, contrast behavior), so that a viewer needing "the volume element" can find the element carrying SNOMED 118565006 rather than hardcoding element IDs per Set. +- Board 14 ("ACR OIDM"), Demo Projects: "Pulmonary nodule demo (RSNA IAIP project)" and "Templating project (SIIM Hackathon)". +- Board 1 (internal; schema content only): the parallel exchange sketch in which a reporting vendor sends a structured finding list with the report result, an EHR vendor maintains the patient's imaging findings repository and exposes an imaging-problem-list view at interpretation time over FHIRcast, and the reporting vendor reads it back to display history, generate report text and check reports; with the open question of which FHIR resource the EHR should send back ("borrow/adapt FHIR structures for real problem lists? Condition resource?"). + +**Related.** A19, A21, B8, C3. + +**Unresolved.** Board 1 records the IPL maintenance question as genuinely open: EMR-maintained versus dynamically generated by an Assembler service versus cached; "how do we make sure the IPL is dynamically generated, updated/not stored, and cached." + +## B10. Local-only operation for protected health information + +**Statement.** The extraction platform supports local and on-premises model providers so that protected health information need not leave the institution, with a local-only mode that has been hardened and whose remaining work is shelved behind explicit reopen triggers. + +**Status.** Implemented example plus a stated-direction backlog. + +**Evidence.** +- IPL repo `dev` `36fa30c`, `README.md`: Ollama ("local models, no API key needed") and vLLM ("OpenAI-compatible deployments") as first-class providers, with `.env.ollama.example` and `.env.vllm.example` at the repository root. +- IPL repo `dev` `36fa30c`, `docs/archive/local-only-mode.md`, `docs/archive/local-only-mode-hardening.md` (archived, i.e. completed) and `docs/plans/local-only-future-tightening.md` (active). +- `knowledge/roadmap/ipl-data-model-system.md`, "Local-only operation": "Protected health information stays on local models, with remaining hardening items shelved behind explicit reopen triggers." +- JACR IPL manuscript, Methods: "The same code and the same language model ran at both sites on each institution's approved deployment" — the practical constraint the local-model work serves. + +**Related.** B2, B4. + +## B11. The use case catalog and the six value categories + +**Statement.** A catalog of application ideas, each tagged with one or more of six value categories taken from the RSNA Reporting Informatics Committee's use-case work: reporting efficiency, care team communication, operations/quality/safety, research, public health, education. The catalog was to grow into per-case files with defined metadata; it never did. + +**Status.** Implemented example (the catalog exists and is complete as far as it goes); stated but abandoned process. + +**Evidence.** +- `UseCases` `main` `71a90d2`, `Index.md` and `README.md`: the entries and the six value categories, reorganized without additions in `knowledge/history/use-cases.md`. Last commit 2024-02-26; four of the seven headings (Protocoling System, AI Pipeline, PACS Viewing, Data Exploration) are placeholders with no entries. Entries contributed by the RSNA Reporting Informatics Committee are marked as such in the source. +- Board 13 ("OIDM Use Case Brainstorming", no named individuals): the same Value Categories table, confirmed matching; the process questions ("What information should be captured as part of a use case? Do we want a text or data-based format (JSON)?"; "Create a GitHub repository for these?"); the planned artifacts (a README base document with metadata and submission guidelines, an Index.md, per-category directories); the six category axes (workflow/list oriented, AI pipeline oriented, reporting oriented, image-viewer oriented, data exploration/outcome oriented, multi-category); and a circled "Medico-legal Issues" note attached to the "Multiview Reporting" cluster (radiologist view, PCP view, specialty-oriented views, patient view). +- January 2026 deck, next steps: "use-case pipeline -> CDE group" — the catalog's intended downstream consumer. + +**Related.** B5, B7, C3. + +--- + +# Part C. OIDM's purpose and the relationship among its parts + +## C1. OIDM's stated purpose + +**Statement.** The project's own statements of purpose, in order of date: the site describes it as "defining unified data structures to integrate new functionality into imaging informatics platforms"; the January 2026 deck calls the goal "standardizing the DNA of imaging IT" and titles itself "Realizing Object-Oriented Imaging Results"; the project lead's 2026-09-19 formulation is "a system of defined data structures for representing imaging exam result information", "intended to be used within applications to both read and create result data". + +**Status.** Stated goal, expressed at three dates with shifting emphasis. + +**Evidence.** +- openimagingdata.org project site tagline (cited in `knowledge/overview/what-is-oidm.md`): "defining unified data structures to integrate new functionality into imaging informatics platforms." +- January 2026 deck, title and subtitle. +- Email notes, points 3 and 4 (see A21). +- Board 9 ("OIDM Big Picture"), "Where (i.e., Vision)" statement: "Tools throughout imaging informatics should form an *integrated, open platform*, allowing all to add and inter-connect new functionality leading to more efficient, higher quality patient care." +- Board 14 header: "Project that defines methods and tools that create IT platforms within the imaging ecosystem." +- JDIM IPL manuscript abstract: "Radiologists need a longitudinal record of findings to interpret efficiently and to integrate intelligent tools, and we found no radiology data standard that defines one." +- `sources/bucket/text/ai-evolution-radiology.md` (in-progress working draft, no venue; **paraphrase only, several sentences are objectively incomplete mid-edit**): argues that the limiting factor in radiology AI is not model capability but the absence of a shared, relational "foundation context" specifying findings, diagnoses, anatomy and their relations, comparable to what DICOM and PACS did for images, and that radiologists must author and steward that representation. Per `sources/bucket/REPORT.md` §1, the draft was last saved 2026-08-14 with 219 tracked insertions and 190 deletions. + +**Related.** A21, C2, C3. + +## C2. The relationship among the parts: three layers, and the DOM analogy + +**Statement.** The work organizes into a semantic foundation (finding models and CDEs, anatomic locations, exam types, terminologies), a set of data structures built on it (Observation, Exam Finding List, Imaging Problem List, Imaging Persona), and applications that read and write those structures. Each layer depends on the one below through shared identifiers. The relationship to FHIR is described by analogy: "the relationship between OIDM and FHIR might be that between the browser's DOM and HTML." + +**Status.** Stated organization (deck, site); working proposal at the class level (Board 4); the organizing principle of the current bundle. + +**Evidence.** +- January 2026 deck, strategic pillars: "1. Semantic foundation: OIFM -> CDEs; Anatomic Location definitions. 2. Data structures: atomic Observation -> Exam Finding List -> IPL -> 'Imaging Persona'. 3. Applications: Open Imaging Reporting SDK; demo apps." +- Site post "Data Model: Structure and Function", 2024-01-25, read live: the model's parts are named one by one — "**Observations:** These are the individual radiology findings that the radiologists is describing in their current report"; "**Current Report Text:** The actual text of the current report, ideal represented as hypertext with tags"; "**Imaging Stud(y|ies)**"; "**Patient**"; "**Order**"; "**Prior Imaging Studies**: Representations of the patient's imaging history, including both report text"; "**Tracked Observations**: An index of the association of the same radiology finding (e.g., a tumor or a fracture)"; "**EHR Data**". On FHIR: "The data model is intended to make extensive use of FHIR definitions in its structuring, but will likely reflect a superstructure", and "An analogy for the relationship between OIDM and FHIR might be that between the browser's DOM and HTML." This is the earliest first-hand statement of the parts list that Board 4 later draws, and it names Tracked Observations as an index of the association of one finding across exams, which is the A19 idea in prose. +- Board 9, "SDK Development" work thread: "Model is web browser DOM" — the same analogy, independently. +- Board 4, hand annotations: FHIR maps to the Patient/Order and EHR Data branches; the LOINC/RadLex Playbook to ImagingStudyType; Anatomic Locations to BodyPart — an explicit statement of which external vocabulary supplies which part. +- Board 9, "OIDM Work Threads" frame, six workstreams: Data Model Toolchain; Anatomic Locations/Exam Types; Data Model Content; SDK Development; Report Representation; Utility Library. The Data Model Content box (highlighted) states the content strategy: "Significant challenge is too few data element definitions; New concept—'stub' data elements: presence, change attributes only; Will allow rapid expansion of database; Iterate to improve models in open crowd-sourced model; ACR/RSNA review as needed; Transform to ACR/RSNA CDEs." +- Board 1 (internal; content only), "Ingredients": "Standard codes for findings (CDEs!) — Don't need complete data models — 'CDE stubs' suffice." +- January 2026 deck, "OIFM: the CDE workbench": finding models as a "Rapid innovation / proving ground before ACR/RSNA CDE adoption", supplying "ground-level info for tool access + LLM context engineering" and "exploratory metadata… that can graduate to standards." +- JDIM IPL manuscript, printed p.19: "The CDEs, the OIDM finding models, and the terminologies they map to (RadLex and SNOMED CT) provide a vocabulary of findings and anatomic sites, not a patient's history." — the clearest statement of the boundary between the semantic foundation and the data structures. +- JDIM IPL manuscript, printed p.6: the EFL finding code "comes from the Open Imaging Data Model (OIDM) finding vocabulary, an open lexicon in the lineage of the RSNA/ACR CDEs." + +**Related.** A2, A21, C1, C3; the CDE-workbench relationship belongs primarily to the semantic inventory. + +**Unresolved.** The deck's layer-2 hierarchy has four levels; only two are built (A2, A16). + +## C3. Structure first, standards after; and how agreement is supposed to happen + +**Statement.** Define the data structures first, then express them in FHIR and other standards. Convening is proposed as the mechanism: an ACR-OIDM Structured Imaging Results Working Group co-hosted with the ACR, bringing expert and vendor participants into an "academic-vendor big tent", feeding a use-case pipeline to the CDE group and standardizing the result. The ACR Data Science Institute's role is sketched separately as sponsoring, logistics, volunteer opportunities and demo projects. + +**Status.** Proposal recorded in the deck and on a board; nothing in any repository records the working group as convened. + +**Evidence.** +- January 2026 deck, call to action: "ACR-OIDM Structured Imaging Results Working Group; structure-first (then FHIR etc.); vendor-driven." ACR priorities named: recommendation tracking, AI validation (correlating AI against radiologist Observations), quality metrics, *-RADS support. Next steps: "host/moderate academic-vendor big tent; use-case pipeline -> CDE group; standardize the result." +- Board 14 ("ACR OIDM", low sensitivity): the ACR Data Science Institute's four branches — Sponsoring (identity, project participation, spread message, show usage with ACR); Logistics (meeting coordination, project management, space at events); Volunteer Opportunities (governance, use cases and future demos, CDE definition and review, CDE indexing, anatomic locations, exam-types-to-anatomy, reference implementations, demo projects, website and documentation, white papers, standard-making via IHE); Demo Projects; Reference Implementations (work with or within existing open-source efforts; grant or paid support; the component list in A16). +- JDIM IPL manuscript, printed p.18: "Vendors are beginning to build longitudinal tracking features with, to our knowledge, no published data model to guide them. Shared data structures come first… We offer this model as a starting point for an open, community-developed standard." +- JDIM IPL manuscript, printed p.17: "The drafters of the Integrating the Healthcare Enterprise (IHE) Imaging Diagnostic Report (IDR) profile included a prior finding catalog use case, conceptualized as an imaging problem list for the reading radiologist, based on earlier presentations of the model described here… The IHE supplement leaves the catalog's information model out of scope, deferred to subsequent work on the model presented here." +- SIIM webinar slide 32 speaker notes: "the adoption path is already forming: the IHE Imaging Diagnostic Report profile names a prior finding catalog as an imaging problem list. This rides existing standards rather than inventing new ones." +- JDIM IPL manuscript, printed p.18, "Adoption": "Pre-populated chronic findings are a natural entry point for IPL adoption… **Affirming must save the radiologist time immediately, because downstream benefits alone are unlikely to sustain adoption.**" + +**Related.** A21, B9, C1, C4. + +**Undetermined.** Whether the working group has been convened since January 2026. No source read records it. + +## C4. Nothing is formally defined yet + +**Statement.** The project is in a coalescing phase. No source is the specification; each source's current version of a structure stands beside the others, dated and attributed. + +**Status.** Decision of record, 2026-09-21. + +**Evidence.** +- `knowledge/plans/2026-09-20-knowledgebase-build-plan.md`, "Decisions added 2026-09-21", row "No specification exists": "The project is in a coalescing phase; nothing is formally defined. The knowledgebase presents each source's current version of a structure side by side (repo branch and commit, manuscript under review, deck or webinar, board), dated and attributed, and states disagreements (for example the three Imaging Problem List status vocabularies) without resolving them. Words like 'specification' or 'canonical model' are not used for any of them." +- Email notes, incorporation targets, last bullet: 16 bundle documents call a repository README or a manuscript "the specification" or similar; the project lead directs replacing these with attributed, dated phrasing. +- SIIM webinar slide 25 speaker notes: "the IPL is an actively-developing framework. Details shown today are being iterated and may change. This honesty invites an informatics audience into an open problem rather than pitching a finished product, and it protects every specific design rule just shown from reading as a fixed claim." +- IPL repo `main` `06f64a7`, `CLAUDE.md`: "This is primarily a data specification and documentation project, not a traditional code repository" — the repository's own self-description, which the 2026-09-21 decision supersedes as a bundle-wide framing. + +**Related.** A5, A9, A21. + +--- + +# What could not be determined + +1. **The JDIM manuscript's Table 1 FHIR mapping** was read only through `sources/bucket/REPORT.md` §4's summary of the rendered table image (PDF page 88), not from the table itself. The element-by-element mapping in A21 should be re-verified against that page before it is published. +2. **The JACR manuscript's submission status.** The file is a blinded manuscript with a supplement and figures and no manuscript number or cover letter, so "prepared for submission" is the most the file supports. +3. **Whether the webinar's two-value status model supersedes the manuscript's four-value model.** The webinar is later (2026-07-15) than the R1 submission, and its speaker notes say the framework is being iterated, but no source states a supersession. +4. **Who owns and assigns a finding's tracking identifier** (A19). Open on Board 15, unanswered elsewhere. +5. **Whether "Imaging Persona", "OIDM Data Context Model" and "Reporting Data Context Object Model" name one structure or three** (A16). +6. **Whether the `indeterminate` presence value in the sample data is superseded** by the binary-presence-plus-confidence rule (A10). +7. **The relationship between the JACR study's four matching rules and the JDIM graduated-confidence model** (A8). +8. **Board dates.** The transcription carries dated notes on several boards, but the boards themselves are undated working canvases; a dated note inside a board is evidence of when that note was made, not of the board's currency. +9. **Whether the deployed viewer v1 is to be retired** now that its data bundle is orphaned from the generation pipeline (B1). +10. **Finding-model corpus counts and the `FindingModelFull` schema** were not verified at source here; the `findingmodel` and `findingmodels` repositories were out of scope for this inventory and belong to the semantic inventory. A15's 2,458-definition figure comes from the webinar only. +11. **Which presence vocabulary is intended** (A10). Three are in active use across the manuscript, the extraction prompt and the sample data. +12. **Whether the selector is meant to resolve technical language to a diagnosis** (A24). Two rules in the same pair of prompts point opposite ways, and the technical-findings reference sides with one of them. +13. **Whether an observation may carry more than one anatomic location** (A12). The coding tool returns a list; the Exam Finding List decision is a single location. +14. **Who fills the vocabulary gaps** that the blanket-negative rule and the `no_candidate_match` / `definition_mismatch` rejection reasons are designed to surface (A23, A24). The mechanism reports the gap; no source names the process that closes it. +15. **The gold file schema** for adjudicated extractions (B4), recorded as open in the reviewer workflows plan. +16. **FindingModelForge's authoring prompts.** The Forge draft lifecycle is recorded here only as it bears on review and provenance; the prompt text inside the application was not read at source for this inventory, and the Forge idea belongs to the semantic inventory in any case. +17. **`ReportFindingRefiner` and the `openimagingdata.org` repository** (`schemas/`, `docs/`) were named for reading but not reached; they are lineage sources for the schema-differences material already held in `knowledge/references/cde-schema-differences.md`. + +--- + +# Proposed idea pages for this area + +Names are nouns. Each page is one explanatory home; other pages link to it. + +| Page | One line | Homes ideas | +|---|---|---| +| `observation` | The atomic record of one finding asserted on one exam: what, where, attributes, and the sentence it came from. | A1, A10 (presence and confidence), A11 (negatives) | +| `exam-finding-list` | The per-exam list of findings, and the faithful-translation constraint that makes everything above it trustworthy. | A2 (first level), A3, A9 (observations within one report) | +| `imaging-problem-list` | The patient-level record: entries keyed by finding and site, their observation histories, and what the record is for. | A2 (second level), A4, A22 | +| `entry-status-and-trajectory` | How an entry's state is read from its observation history, and the four vocabularies that disagree about what to call it. | A5, A6 (succession sits beside status) | +| `succession-and-linking` | Connecting observations to entries and entries to each other: entity resolution, graduated-confidence linking, succession, and anatomic-compatibility reconciliation. | A6, A8, A13, A19 | +| `provenance-and-review` | Where each observation came from, who affirmed it, and how corrections are recorded. | A7 | +| `finding-and-diagnosis` | What counts as one finding when reports use different codes, substitute a diagnosis, or describe an entity that evolved; and where technical observation-level language fits. | A9, A17, and the technical-findings reference | +| `negation-and-normality` | Why an explicit negative and a statement of normality both become coded findings, and what that asks of the vocabulary. | A11, A23 | +| `coding-a-finding` | Assigning a finding code and a location code so that equivalent descriptions converge, including when to refuse. | A24, A25 | +| `extraction-quality` | What can go wrong translating prose into structure, how the system checks for it, and how that is measured. | A26, B4 | +| `anatomic-location-of-a-finding` | Why every observation carries a location, how it is assigned, and what the generic-versus-specific gap costs. | A12, A13 (shares with succession-and-linking; this page owns assignment, that page owns reconciliation) | +| `finding-context` | The per-finding dimensions that tell a reader or an agent what to expect next: permanence, expected course, etiology, anatomy. | A14, A15 | +| `imaging-persona` | The clinical context around the imaging record, and the object model that names its parts. | A16 | +| `recommendation-and-follow-up` | Representing a follow-up recommendation, attaching it to an entry, and closing it. | A18 | +| `structures-and-transport` | Why the structures are defined independently of FHIR and DICOM, and how they would be expressed for exchange. | A20, A21 | +| `imaging-problem-list-viewer` | What the viewers show, and the rule that presentation never changes the record. | B1 | +| `extraction-and-coding` | Turning report prose into coded observations, and keeping coding a separate job from extraction. | B2, B3, B10 | +| `applications-of-the-record` | What a longitudinal structured record makes routine: the application families, the breast case, the life-cycle uses. | B5, B6, B11 | +| `outcome-tracking` | Closing the loop from what was reported to what happened. | B7 | +| `reporting-assistance` | The context object a reporting tool supplies and the commands a plugin can issue. | B8 | +| `interoperability-demonstrations` | Exchanging coded findings between systems, and the questions that exposes. | B9 | +| `what-oidm-is` | The purpose, the parts, and how they depend on each other. | C1, C2 | +| `how-agreement-happens` | Structure first, standards after, and the convening that is supposed to produce agreement. | C3, C4 | + +Twenty-four pages for this area. The semantic inventory's pages (finding models, CDEs, anatomic locations index, exam types) sit beside them. Three are seams where the two inventories meet and need an ownership decision when the combined list is agreed: `anatomic-location-of-a-finding`, `finding-context`, and `coding-a-finding`, the last because the convergence rules are as much a statement about what the vocabulary is for as about how the coder behaves. + +Four of these pages exist because the prompts do. `negation-and-normality`, `coding-a-finding` and `extraction-quality` home ideas that appear in no manuscript, deck or board, only in the instructions the team wrote for its own models; `finding-and-diagnosis` draws its sharpest operational rule from the same place. They are not tooling pages. A rule that says a more specific code is never an acceptable match, or that a normal statement becomes an absent abnormality, is a position about what the data structures mean, written where it had to be executable. + +--- + +# Existing bundle pages holding unique team-authored material that needs a home first + +Checked page by page against the sources above. These carry team-authored substance that exists nowhere else in a durable form, so they must be rehomed before removal. + +| Page | Unique material | Where it should go | +|---|---|---| +| `data-structures/ihe-idr-alignment.md` | The IDR observation grammar (five slots with the supplement's own rules), the three IDR term definitions, the four unresolved OIDM/IDR differences, and IDR's three questions back to RadElement. Sourced to `notes/ihe-idr-extract.md` on `RSNA/ACR-RSNA-CDEs` `next-gen-2026`, which has not been migrated into this bundle. | `structures-and-transport`, with the finding-versus-diagnosis difference cross-linked to `finding-and-diagnosis` | +| `data-structures/fhir-mapping.md` | The worked `FHIRSamples` analysis: the set-code / element-code / value-code chain, status-as-provenance, and assessments as second-order Observations whose `derivedFrom` points at both the study and the finding Observation. This reading of the samples exists only here. | `structures-and-transport` | +| `data-structures/technical-imaging-findings.md` | Migrated verbatim from IPL repo `dev` `docs/technical-imaging-findings.md`: the catalog of modality-specific technical terms and the rule that a technical observation must not be reinterpreted as the diagnosis that might explain it. Team-authored, draft status stated in the source. | `finding-and-diagnosis`; keep the full catalog as a `references/` extract if it does not fit | +| `data-structures/anatomic-location-assignment-rules.md` | Migrated from IPL repo `dev`: the precedence ladder, laterality rules, bilateral rules and worked misses. Team-authored. | `anatomic-location-of-a-finding`; the long worked examples may belong in `references/` | +| `history/use-cases.md` | The whole `UseCases` catalog reorganized, with the six value categories and the RSNA Reporting Informatics Committee attributions preserved. The upstream repository has been dormant since 2024-02-26. | `applications-of-the-record`, or a `references/` extract linked from it | +| `applications/reporting-sdk.md` | The 2023 site post's plugin-container design and the About page's language commitments, read from sources that are live web pages rather than repository files. | `reporting-assistance` | +| `overview/vision.md` | The DOM/HTML analogy and the deck's three benefits, quoted from site posts that exist only on the live Ghost site. | `what-oidm-is` | +| `references/exam-finding-list-example.md`, `references/imaging-problem-list-example.md` | Real sample JSON with commentary. Keep only what an idea page cannot explain in prose; the example2 study supersedes most of the commentary. | trim into `observation` / `imaging-problem-list`, or keep one minimal extract | +| `references/status-update-2026-01.md` | The January 2026 deck extract. The deck is a live Gamma URL that may change. | keep as a dated `references/` extract | +| `roadmap/open-questions.md` | 5,963 words; contains the team's own unresolved alternatives mixed with agent-found documentation defects. | split: team questions go beside their ideas; defects to `sources/upstream-issues-draft.md` per the joint notes | + +Pages in this area found to carry **no** unique team-authored material beyond what the sources above supply, and which can be retired once their ideas have homes: `data-structures/index.md`, `data-structures/hierarchy.md`, `data-structures/sample-data.md`, `data-structures/observation.md`, `data-structures/exam-finding-list.md`, `data-structures/imaging-problem-list.md`, `data-structures/imaging-persona.md`, `applications/index.md`, `applications/imaging-problem-list-viewer.md`, `applications/report-extraction-platform.md`, `applications/finding-and-location-coding.md`, `applications/ipl-mvp-extraction.md`, `overview/architecture.md`, `overview/what-is-oidm.md`, `roadmap/ipl-data-model-system.md`, `history/timeline.md`, `history/lineage-repositories.md`, `history/extraction-approaches.md`, `history/cde-template-rendering.md`, `repositories/repository-map.md`. Each was checked against its cited sources; each restates material that the sources carry directly, which the idea pages will cite instead. diff --git a/docs/plans/lean-content-coverage.tsv b/docs/plans/lean-content-coverage.tsv new file mode 100644 index 0000000..a99448e --- /dev/null +++ b/docs/plans/lean-content-coverage.tsv @@ -0,0 +1,134 @@ +path pass disposition before_body_words after_body_words reason +knowledge/applications/finding-and-location-coding.md 1 edited 1495 1150 Shortened and cross-reviewed in the first pass; examples, citations, and qualifications preserved. +knowledge/applications/finding-model-forge.md 1 edited 1450 1044 Shortened and cross-reviewed in the first pass; examples, citations, and qualifications preserved. +knowledge/applications/finding-models-site.md 1 edited 618 379 Shortened and cross-reviewed in the first pass; examples, citations, and qualifications preserved. +knowledge/applications/imaging-problem-list-viewer.md 1 edited 1240 899 Shortened and cross-reviewed in the first pass; examples, citations, and qualifications preserved. +knowledge/applications/index.md 1,2 edited Descriptions shortened in the first pass; reviewed again and still match their concepts. +knowledge/applications/ipl-mvp-extraction.md 1 edited 1048 840 Shortened and cross-reviewed in the first pass; examples, citations, and qualifications preserved. +knowledge/applications/report-extraction-platform.md 1 edited 1948 1426 Shortened and cross-reviewed in the first pass; examples, citations, and qualifications preserved. +knowledge/applications/reporting-sdk.md 1 edited 886 582 Shortened and cross-reviewed in the first pass; examples, citations, and qualifications preserved. +knowledge/data-structures/anatomic-location-assignment-rules.md 2 edited 1128 1105 Tightened description and migration introduction only; source guidance and structure unchanged. +knowledge/data-structures/exam-finding-list.md 1 edited 1275 991 Shortened and cross-reviewed in the first pass; examples, citations, and qualifications preserved. +knowledge/data-structures/fhir-mapping.md 2 edited 1217 1033 Tightened authored prose and description; preserved facts, qualifications, citations, tables, examples, links, and headings. +knowledge/data-structures/hierarchy.md 1 edited 999 880 Shortened and cross-reviewed in the first pass; examples, citations, and qualifications preserved. +knowledge/data-structures/ihe-idr-alignment.md 2 edited 1105 988 Tightened authored prose and description; preserved facts, qualifications, citations, tables, examples, links, and headings. +knowledge/data-structures/imaging-persona.md 1 edited 693 456 Shortened and cross-reviewed in the first pass; examples, citations, and qualifications preserved. +knowledge/data-structures/imaging-problem-list.md 1 edited 1391 1122 Shortened and cross-reviewed in the first pass; examples, citations, and qualifications preserved. +knowledge/data-structures/index.md 2 edited Reviewed navigation, synchronized descriptions, and simplified introductory prose or directory labels. +knowledge/data-structures/observation.md 1 edited 1308 1062 Shortened and cross-reviewed in the first pass; examples, citations, and qualifications preserved. +knowledge/data-structures/sample-data.md 2 edited 992 885 Tightened authored prose and description; preserved facts, qualifications, citations, tables, examples, links, and headings. +knowledge/data-structures/technical-imaging-findings.md 2 edited 1203 1185 Tightened description and migration introduction only; source guidance and structure unchanged. +knowledge/glossary/anatomic-location.md 2 edited 340 337 Removed rhetorical setup around source quotations and shortened lineage comparison. +knowledge/glossary/anatomic-scope.md 2 edited 324 307 Shortened scope-family relationship and missing-field limitation without changing open status. +knowledge/glossary/assessment-scheme.md 2 edited 297 278 Removed repeated separation framing; retained assessment distinctions and source quotations. +knowledge/glossary/attribute-value.md 2 edited 258 243 Shortened positional-code explanation and repetitive presence cross-reference. +knowledge/glossary/attribute.md 2 edited 310 292 Tightened attribute-kind introduction and unresolved naming discussion. Tightened its description and matching index entry. +knowledge/glossary/body-region.md 2 edited 371 355 Shortened three-use explanation and removed rhetorical fallback introduction. Tightened its description and matching index entry. +knowledge/glossary/cde-element.md 2 edited 290 270 Condensed property definition and clarified component/set/value relationship. +knowledge/glossary/cde-labeled-fhir-observation.md 2 edited 310 296 Removed emphatic sample framing and shortened source attribution and open conflict wording. +knowledge/glossary/cde-set.md 2 edited 308 301 Replaced false range with named examples and shortened parent-code explanation. +knowledge/glossary/cde.md 2 edited 298 269 Removed confusion framing and shortened staging and site-post introductions. +knowledge/glossary/change-from-prior.md 2 edited 340 282 Removed repeated snapshot and attribute framing; shortened missing-attribute caveat while retaining all 124-model and value-set details. +knowledge/glossary/coding.md 2 edited 367 337 Split dense pipeline prose into sequential operations and removed judgment framing around location rules. +knowledge/glossary/contained-by-and-part-of.md 2 edited 314 304 Removed rhetorical introduction and shortened organ-system and precomputation explanations. +knowledge/glossary/contributor.md 2 edited 295 283 Simplified registry validation and JSONL support explanation. +knowledge/glossary/data-element.md 2 edited 349 318 Shortened sharing, draft-status, and terminology-conflict explanations. +knowledge/glossary/element-binding.md 2 edited 284 260 Removed unsupported safe-reuse rhetoric and hanging-property metaphor; preserved technical statements for separate factual review. Corrected the modality quotation’s subject against pinned CONTEXT.md: it describes the descriptor’s intrinsic limit. +knowledge/glossary/exam-finding-list.md 2 edited 335 323 Removed rhetorical requirements framing while preserving repeated-observation rule and provenance requirement. +knowledge/glossary/exam-type.md 2 edited 346 317 Shortened definition, scope explanation, proposal status, and missing-artifact inventory. Tightened its description and matching index entry. +knowledge/glossary/extraction.md 2 edited 383 308 Split schema and pipeline descriptions and shortened validator failure list while retaining each failure category. +knowledge/glossary/fhir-condition.md 2 edited 306 279 Shortened mapping and unimplemented-status explanations; retained IDR disagreement and all quotations. +knowledge/glossary/fhir-diagnostic-report.md 2 edited 303 280 Removed sample framing and shortened implementation-gap description. +knowledge/glossary/finding-class.md 2 edited 357 336 Removed blurred-node metaphor and shortened working-group decision and unsettled IDR difference. +knowledge/glossary/finding-model.md 2 edited 311 281 Removed extrapolation from the 2024 definition to the entire project lifetime and shortened definition-versus-instance explanation. +knowledge/glossary/finding-taxonomy.md 2 edited 366 354 Clarified name-key and parent fields and shortened taxonomy/model distinction. Tightened its description and matching index entry. +knowledge/glossary/fma.md 2 edited 231 213 Shortened cross-reference and classification introduction while retaining coverage counts and mappings. +knowledge/glossary/gamuts.md 2 edited 287 273 Removed role framing and content-spine metaphor; shortened unresolved cleanup status. +knowledge/glossary/imaging-diagnostic-report.md 2 edited 390 367 Shortened source framing and alignment-status explanation without changing IDR definitions or conflicts. +knowledge/glossary/imaging-persona.md 2 edited 241 203 Removed repeated unimplemented-status and knowledgebase self-description. +knowledge/glossary/imaging-problem-list.md 2 edited 390 332 Removed signature-structure rhetoric and shortened query, grouping, and reconciliation explanations. +knowledge/glossary/index-code.md 2 edited 322 316 Simplified field and crosswalk explanations and removed in-flight framing around the identified rewrite. +knowledge/glossary/index.md 2 edited Read all 48 entries; shortened the introduction and synchronized seven tightened descriptions while preserving alphabetical links. +knowledge/glossary/laterality.md 2 edited 395 373 Removed repeated test introduction and shortened reversible-mapping requirement. Tightened its description and matching index entry. +knowledge/glossary/loinc-rsna-radiology-playbook.md 2 edited 307 292 Split roadmap proposal into concise sentences and removed historical throat-clearing. +knowledge/glossary/loinc.md 2 unchanged 287 287 Already compact: quoted specification requirements, code examples, identifier detection, and missing-curated-list caveat each provide distinct information. +knowledge/glossary/measurement.md 2 edited 290 234 Shortened node-type explanation, grouped-measurement example, and repeated model distinction. +knowledge/glossary/observation.md 2 edited 343 330 Replaced atomic-unit metaphor and removed lineage and terminology-collision framing. +knowledge/glossary/oidm-organization-code.md 2 unchanged 245 245 Already concise: generator behavior, registry mappings, all seven codes, five corpus counts, and namespace/provenance distinction are needed. +knowledge/glossary/oidm.md 2 edited 269 236 Shortened project definition and organization-code explanation; replaced inaccurate self-description about old-name placement with history link. +knowledge/glossary/oifm.md 2 edited 247 226 Shortened canonical-format and overloaded-acronym explanation without changing fields or identifier rules. +knowledge/glossary/open-imaging-reporting-sdk.md 2 edited 261 220 Removed centerpiece rhetoric, historical introduction, and repeated knowledgebase status assurances. +knowledge/glossary/presence.md 2 edited 405 375 Removed negative-data rhetoric and repeated conflict introduction while retaining quoted absence meaning and all positional-code exceptions. Tightened its description and matching index entry. +knowledge/glossary/provenance.md 2 edited 323 291 Removed repeated provenance rationale and shortened quote-evidence mechanism while preserving source and evaluation distinctions. Tightened its description and matching index entry. +knowledge/glossary/radelement.md 2 edited 273 264 Removed authoring-order framing and distinguished documented URI forms from the proposed successor. +knowledge/glossary/radlex-id.md 2 unchanged 258 258 Already concise: RID field mappings, composite-ID exception, examples, and unrecorded ontology-version risk all add distinct information. +knowledge/glossary/radlex.md 2 edited 277 265 Removed repetitive two-direction framing around curation and upstream integration. +knowledge/glossary/snomed-ct.md 2 edited 271 232 Split long usage sentence into source-specific statements and shortened licence/credential requirement. +knowledge/glossary/tag.md 2 edited 278 263 Shortened mixed-tag example framing and retained incomplete migration status. +knowledge/glossary/technical-finding.md 2 edited 342 317 Removed emphasis around coding distinction and shortened draft/open-question language. +knowledge/glossary/umls.md 2 edited 290 240 Removed two-job framing and shortened typed-failure explanation while retaining all error categories and mapping qualifications. +knowledge/guides/authoring-guide.md 2 edited 1212 1084 Tightened instructions and metadata guidance; retained rules, examples, and type vocabulary. +knowledge/guides/index.md 2 unchanged Two concise directory entries; both descriptions match their pages. +knowledge/guides/migration-ledger.md 2 edited 3048 3027 Shortened the introduction; preserved all migration rows as provenance records. +knowledge/history/cde-template-rendering.md 2 edited 774 555 Removed filler and simplified authored explanation while preserving technical detail. +knowledge/history/extraction-approaches.md 2 edited 1557 1312 Removed filler and simplified authored explanation while preserving technical detail. +knowledge/history/index.md 2 edited Simplified navigation introduction and synchronized concept descriptions. +knowledge/history/lineage-repositories.md 2 edited 1601 1359 Removed filler and simplified authored explanation while preserving technical detail. +knowledge/history/site-articles.md 2 edited 1399 1304 Tightened article summaries and authored framing; preserved all fifteen linked titles, dates, direct quotes, reported outcomes, and About-page scope. +knowledge/history/timeline.md 2 edited 1619 1607 Tightened the prologue and description; preserved every dated event table and source. +knowledge/history/use-cases.md 2 edited 1153 1062 Tightened authored framing; preserved every sourced use-case entry, attribution, category number, and table verbatim. +knowledge/index.md 2 edited Shortened draft-status and navigation instructions without losing entry points. +knowledge/log.md 2 edited Retained historical entries; added the full-review completion entry. +knowledge/overview/architecture.md 1 edited 1480 1247 Shortened and cross-reviewed in the first pass; examples, citations, and qualifications preserved. +knowledge/overview/getting-involved.md 1 edited 1027 776 Shortened and cross-reviewed in the first pass; examples, citations, and qualifications preserved. +knowledge/overview/index.md 2 unchanged Four descriptive navigation entries; no repeated framing or editorial commentary. +knowledge/overview/vision.md 1 edited 1173 860 Shortened and cross-reviewed in the first pass; examples, citations, and qualifications preserved. +knowledge/overview/what-is-oidm.md 1 edited 851 575 Shortened and cross-reviewed in the first pass; examples, citations, and qualifications preserved. +knowledge/plans/2026-09-20-knowledgebase-build-plan.md 2 edited 3890 3851 Tightened plan framing; preserved decisions, quoted goals, source map, phases, and concurrent decisions. +knowledge/plans/index.md 2 unchanged A single navigation entry matching the build plan description. +knowledge/references/anatomic-location-json-schema.md 2 edited 1695 1519 Shortened lineage and runtime explanations; preserved field tables, codes, counts, and example JSON. +knowledge/references/cde-schema-differences.md 2 edited 848 742 Tightened provenance and later-schema commentary; retained the attributed 2023 extract byte-for-byte. +knowledge/references/exam-finding-list-example.md 2 edited 1117 898 Shortened the walkthrough and synthetic-data introduction; preserved the JSON, fields, and absence distinction. +knowledge/references/finding-model-schema.md 2 edited 2027 1896 Shortened authored provenance and reconciliation framing; retained the migrated schema and constraint tables. +knowledge/references/imaging-problem-list-example.md 2 edited 1201 1024 Tightened grouping and status explanations; retained JSON, temporal rules, and synthetic-data qualifications. +knowledge/references/index.md 2 edited Shortened navigation descriptions and synchronized all eight entries. +knowledge/references/oifm-metadata-fields-extract.md 2 edited 2429 2375 Shortened provenance and release-status framing; preserved the complete attributed field reference. +knowledge/references/oifm-overview-extract.md 2 edited 2040 1967 Shortened provenance and glossary introduction; preserved the complete attributed authoring prompt. +knowledge/references/status-update-2026-01.md 2 edited 835 778 Shortened introductory framing; preserved the complete slide extract. +knowledge/repositories/index.md 2 edited Simplified navigation introduction and synchronized concept descriptions. +knowledge/repositories/repository-map.md 2 edited 1855 1768 Tightened map guidance and branch summaries; preserved the full repository table, diagram, caption, identifiers, dates, and status distinctions. +knowledge/roadmap/anatomic-locations-and-radlex.md 2 edited 1240 982 Removed filler and simplified authored explanation while preserving technical detail. +knowledge/roadmap/exam-types.md 2 edited 947 784 Removed filler and simplified authored explanation while preserving technical detail. +knowledge/roadmap/finding-model-content-direction.md 2 edited 1439 1245 Removed filler and simplified authored explanation while preserving technical detail. +knowledge/roadmap/finding-model-format-evolution.md 2 edited 1572 1390 Removed filler and simplified authored explanation while preserving technical detail. +knowledge/roadmap/index.md 2 edited Simplified navigation introduction and synchronized concept descriptions. +knowledge/roadmap/ipl-data-model-system.md 2 edited 1183 952 Removed filler and simplified authored explanation while preserving technical detail. +knowledge/roadmap/open-questions.md 2 edited 5585 5499 Tightened only introductions; retained all 90 numbered questions and all 21 defect rows verbatim, including their uncertainty, attribution, and ownership. +knowledge/roadmap/roadmap-2026.md 2 edited 992 833 Removed filler and simplified authored explanation while preserving technical detail. +knowledge/semantic-foundation/anatomic-locations/data-model.md 2 edited 1261 1159 Tightened authored prose and description; preserved facts, qualifications, citations, tables, examples, links, and headings. +knowledge/semantic-foundation/anatomic-locations/index.md 2 edited Reviewed navigation, synchronized descriptions, and simplified introductory prose or directory labels. +knowledge/semantic-foundation/anatomic-locations/laterality-conventions.md 2 edited 968 878 Tightened authored prose and description; preserved facts, qualifications, citations, tables, examples, links, and headings. +knowledge/semantic-foundation/anatomic-locations/lineage-and-current-implementation.md 2 edited 1024 874 Tightened authored prose and description; preserved facts, qualifications, citations, tables, examples, links, and headings. +knowledge/semantic-foundation/anatomic-locations/radlex-integration.md 2 edited 1187 948 Tightened authored prose and description; preserved facts, qualifications, citations, tables, examples, links, and headings. +knowledge/semantic-foundation/anatomic-locations/tooling.md 2 edited 953 868 Tightened authored prose and description; preserved facts, qualifications, citations, tables, examples, links, and headings. +knowledge/semantic-foundation/anatomic-locations/why-anatomic-locations.md 2 edited 768 580 Tightened authored prose and description; preserved facts, qualifications, citations, tables, examples, links, and headings. +knowledge/semantic-foundation/common-data-elements/cde-staging.md 2 edited 1536 1319 Tightened authored prose and description; preserved facts, qualifications, citations, tables, examples, links, and headings. +knowledge/semantic-foundation/common-data-elements/cdes-and-radelement.md 2 edited 1368 1255 Tightened authored prose and description; preserved facts, qualifications, citations, tables, examples, links, and headings. +knowledge/semantic-foundation/common-data-elements/index.md 2 edited Reviewed navigation, synchronized descriptions, and simplified introductory prose or directory labels. +knowledge/semantic-foundation/common-data-elements/next-generation-vocabulary.md 2 edited 2073 1706 Tightened authored prose and description; preserved facts, qualifications, citations, tables, examples, links, and headings. +knowledge/semantic-foundation/exam-types/existing-building-blocks.md 2 edited 1619 1399 Tightened authored prose and description; preserved facts, qualifications, citations, tables, examples, links, and headings. +knowledge/semantic-foundation/exam-types/index.md 2 edited Reviewed navigation, synchronized descriptions, and simplified introductory prose or directory labels. +knowledge/semantic-foundation/exam-types/overview.md 2 edited 1164 995 Tightened authored prose and description; preserved facts, qualifications, citations, tables, examples, links, and headings. +knowledge/semantic-foundation/finding-models/authoring-workflow.md 2 edited 1130 993 Tightened authored prose and description; preserved facts, qualifications, citations, tables, examples, links, and headings. +knowledge/semantic-foundation/finding-models/content-catalog.md 2 edited 1126 1022 Tightened authored prose and description; preserved facts, qualifications, citations, tables, examples, links, and headings. +knowledge/semantic-foundation/finding-models/enrichment-pipeline.md 2 edited 1318 1137 Tightened authored prose and description; preserved facts, qualifications, citations, tables, examples, links, and headings. +knowledge/semantic-foundation/finding-models/finding-model-format.md 2 edited 1439 1285 Tightened authored prose and description; preserved facts, qualifications, citations, tables, examples, links, and headings. +knowledge/semantic-foundation/finding-models/finding-models-and-cdes.md 1 edited 1280 773 Shortened and cross-reviewed in the first pass; examples, citations, and qualifications preserved. +knowledge/semantic-foundation/finding-models/finding-taxonomies.md 2 edited 875 726 Tightened authored prose and description; preserved facts, qualifications, citations, tables, examples, links, and headings. +knowledge/semantic-foundation/finding-models/identifiers.md 2 edited 1024 817 Tightened authored prose and description; preserved facts, qualifications, citations, tables, examples, links, and headings. +knowledge/semantic-foundation/finding-models/index.md 2 edited Reviewed navigation, synchronized descriptions, and simplified introductory prose or directory labels. +knowledge/semantic-foundation/finding-models/why-finding-models.md 1 edited 1024 670 Shortened and cross-reviewed in the first pass; examples, citations, and qualifications preserved. +knowledge/semantic-foundation/index.md 2 edited Reviewed navigation, synchronized descriptions, and simplified introductory prose or directory labels. +knowledge/semantic-foundation/terminologies/index.md 2 edited Reviewed navigation, synchronized descriptions, and simplified introductory prose or directory labels. +knowledge/semantic-foundation/terminologies/med-ontology-lookup.md 2 edited 1160 978 Tightened authored prose and description; preserved facts, qualifications, citations, tables, examples, links, and headings. +knowledge/semantic-foundation/terminologies/ontologies-used.md 2 edited 1590 1402 Tightened authored prose and description; preserved facts, qualifications, citations, tables, examples, links, and headings. diff --git a/docs/plans/lean-content-full-review.md b/docs/plans/lean-content-full-review.md new file mode 100644 index 0000000..c46d0ae --- /dev/null +++ b/docs/plans/lean-content-full-review.md @@ -0,0 +1,57 @@ +# Full content review + +Status: Complete (2026-09-21) + +## Aim + +Review every knowledge page omitted from the first 18-page editorial pass. Apply pstack `unslop` and `technical-writing`; preserve factual meaning, source attribution, examples, and verification history. A page left unchanged must have a recorded reason. + +## Steps + +- [x] Write the plan before editing. +- [x] Inventory the current bundle and save a baseline, including concurrent work. +- [x] Assign all remaining concepts and directory indexes to editors with distinct ownership. +- [x] Tighten authored prose; review only framing around verbatim or migrated source material. +- [x] Cross-review edits for lost meaning and record dispositions for unchanged pages. +- [x] Update affected indexes, generation metadata, bundle log, changelog, and development log. +- [x] Validate the complete bundle, review coverage, and mark this plan complete. + +The first pass covered 18 concepts. This pass covers the rest plus directory indexes. Logs remain historical records; review their current navigation or framing without rewriting old entries. Preserve concurrent edits and do not commit or publish. + +## Coverage + +The baseline is `/tmp/oidm-lean-full-baseline-20260921/`. Its `assignments.json` lists every file assigned for this pass. + +| Owner | Scope | Concepts | Other files | +|---|---|---:|---:| +| Glossary agent | Glossary | 48 | 1 index | +| Semantic foundation agent | Remaining semantic foundation and data structures | 24 | 7 indexes | +| Roadmap and history agent | Roadmaps, history, repository map | 14 | 3 indexes | +| Main agent | Guides, references, build plan, remaining indexes, bundle log | 11 | 6 indexes and 1 log | + +Each editor reads every assigned page and writes a per-page disposition. Extracts keep their attributed source text; edits target authored framing and commentary. Source records, examples, headings, and citations are checked against the baseline. + +## Results + +All 115 concepts and 17 indexes have been reviewed across both passes. This pass edited 94 of the remaining 97 concepts. The three unchanged concepts—LOINC, RadLex identifiers, and OIDM organization codes—already contain concise technical definitions and identifier references. The historical bundle log was reviewed and received a completion entry. + +[Per-page coverage](lean-content-coverage.tsv) records all 133 Markdown files, their dispositions, reasons, and concept word counts. The [first-pass report](lean-content-pass.md) records the skill source and its revision. + +| Scope | Concepts | Body words before | Body words after | +|---|---:|---:|---:| +| First pass | 18 | 21,186 | 15,732 | +| Glossary | 48 | 14,984 | 13,862 | +| Remaining semantic foundation and data structures | 24 | 29,228 | 25,537 | +| Roadmaps, history, and repository map | 14 | 22,916 | 20,652 | +| Guides, references, and build plan | 11 | 20,342 | 19,161 | +| Total | 115 | 108,656 | 94,944 | + +Across both passes, concept bodies are 13,712 words shorter (12.6%). Counts split text after frontmatter on whitespace, including headings, tables, code, and footnotes. Each concept uses the baseline from its assigned pass. The build plan's comparison also includes concurrent additions; this is a snapshot of the reviewed content, not an attribution of every changed word. + +## Review and checks + +Three agents edited separate groups and cross-reviewed the main editor's concepts, glossary, and semantic/data-structure concepts. The main editor reviewed roadmap/history changes and integrated corrections. Cross-review restored ranking order, scalar-only constraints, optionality, defaults, plan attribution, and several code and terminology distinctions lost during shortening. The element-binding modality quotation was checked against `ACR-RSNA-CDEs` commit `44836c1` and reattached to the descriptor's intrinsic limit. + +Original headings, fenced examples, citation labels, source records, and trust fields were retained. Attributed source extracts and migrated rule bodies remain intact; the 90 open-question rows and 21 defect rows are unchanged. Directory descriptions match their concepts. Historical log entries were retained. + +Both checks pass: strict OKF 0.2 conformance and `tools/check_bundle.py` (133 documents, 115 concepts, zero errors or warnings). `git diff --check` passes. This was an editorial review; human verification and unresolved source differences remain visible in the bundle. Concurrent tooling, hosting, and planning changes were preserved. No commits or publication were performed by this session. diff --git a/docs/plans/lean-content-pass.md b/docs/plans/lean-content-pass.md new file mode 100644 index 0000000..684d46e --- /dev/null +++ b/docs/plans/lean-content-pass.md @@ -0,0 +1,58 @@ +# Lean content pass + +Status: Complete (2026-09-21) + +## Aim + +Apply poteto's no-slop skill from pstack to a first batch of reader-facing OIDM content. Cut repetition, filler, and editorial commentary while preserving technical claims, qualifications, examples, citations, and draft status. + +## Steps + +- [x] Record the plan before editing content. +- [x] Locate and read the requested skill; record its source and revision. +- [x] Select a bounded batch and capture the current files for comparison. +- [x] Assign separate groups of pages to sub-agents; edit another group locally. +- [x] Review all changes for concision, meaning, citation coverage, and preserved diagrams. +- [x] Update metadata, indexes where needed, bundle log, changelog, and development log. +- [x] Run both validators, inspect the diff, and record results and completed scope here. + +Keep verbatim reference extracts and quoted source text intact. Do not expand into source integration, factual model changes, site tooling changes, publishing, or commits. + +## Skill and scope + +The upstream skill is now named `unslop`. Loaded it and `technical-writing` from [poteto's pstack](https://github.com/cursor/plugins/tree/640ea3abfbdef74aad432b58d8586e4bf645f42d/pstack/skills), revision `640ea3abfbdef74aad432b58d8586e4bf645f42d`. Installed both under `~/.codex/skills/` for reuse. The prompt-engineering skill informed the agents' bounded assignments. + +Baseline copies of the current working files are at `/tmp/oidm-lean-content-baseline-20260921/`. They include the uncommitted diagram edits. + +| Owner | Pages | +|---|---| +| Overview agent | Four concepts under `knowledge/overview/` | +| Data structures agent | `hierarchy`, `observation`, `exam-finding-list`, `imaging-problem-list`, `imaging-persona` | +| Applications agent | Seven concepts under `knowledge/applications/` | +| Main agent | `why-finding-models` and `finding-models-and-cdes` under `knowledge/semantic-foundation/finding-models/`; integration and final review | + +This first pass covers 18 concept pages. Preserve quoted material and technical terms even where a general style rule would change them. Each agent reviews meaning and citations against the baseline before handing back its edits. + +## Results + +| Area | Pages | Body words before | Body words after | +|---|---:|---:|---:| +| Overview | 4 | 4,531 | 3,458 | +| Core data structures | 5 | 5,666 | 4,511 | +| Applications | 7 | 8,685 | 6,320 | +| Finding-model explanations | 2 | 2,304 | 1,443 | +| Total | 18 | 21,186 | 15,732 | + +Removed 5,454 words, a 25.7% reduction. Counts split the text after YAML frontmatter on whitespace, including headings, tables, code, and footnotes; indexes and logs are excluded. Per-page counts and baseline files remain in `/tmp/oidm-lean-content-baseline-20260921/`. + +Cut repeated explanations, rhetorical openings, unsupported flourishes, and commentary about the writing. Retained technical terms, branch distinctions, examples, source records, citation labels, and draft status. All original heading text, link targets, and fenced examples remain. Shortened descriptions in three directory indexes to match their concepts. Updated concept generation metadata, `knowledge/log.md`, `CHANGELOG.md`, and `DEV_LOG.md`. + +Each editor reviewed its changes. A second agent reviewed the applications and finding-model explanations; another reviewed the data structures. The main agent reviewed the overview and substantive diffs and applied review corrections. Restored details about absent findings, actor attribution, plugin triggers, evaluation inputs, and the scope of repository searches where shortening had lost precision. + +The architecture example still pairs urinary tract calculus with a left acromioclavicular joint location. Flagged for factual source review; this editorial pass did not change the example. Also removed unsupported assertions about committee authoring speed and presence being redefined exactly once per model; the latter conflicted with the same page's count of models lacking presence. + +## Closeout scope + +Final checks pass: OKF strict validation, the house checker (133 documents, 115 concepts, zero errors or warnings), and `git diff --check`. A comparison of the 18 pages confirms preservation of original heading text, link targets, citation labels, fenced examples, source metadata, and draft status. No site tooling or rendering structure changed, so this prose pass did not rebuild or publish the site. + +Only the 18 assigned concepts, their three affected indexes, and this pass's plan and log entries belong to this work. Concurrent work changed repository configuration, the original build plan, diagram instructions, and verification tooling. Those changes were preserved. The first-pass plan can close independently of the original knowledgebase build plan and its human review. diff --git a/docs/plans/repository-review.md b/docs/plans/repository-review.md new file mode 100644 index 0000000..6940ff7 --- /dev/null +++ b/docs/plans/repository-review.md @@ -0,0 +1,64 @@ +# Repository review + +Status: Complete (2026-09-21) + +## Purpose + +Explain the repository's purpose, structure, current work, and verification state. + +## Steps + +- [x] Record this review plan in the repository. +- [x] Read project guidance, the OKF skill, and core documentation. +- [x] Examine the knowledge bundle, publishing tools, and uncommitted work. +- [x] Run relevant local verification and investigate any failures. +- [x] Review documentation for accuracy, record findings here, and mark the review complete. + +This review preserves existing work and does not publish or commit changes. Update reference documentation and active logs if the review results in changes that need documenting; a review alone does not warrant a user-facing changelog entry. + +## Repository purpose and state + +The repository is the intended canonical public knowledgebase for the Open Imaging Data Model. Its product is an OKF 0.2 Markdown bundle, rendered as a static site. Application implementations and vocabulary catalogs live in the source repositories documented by the bundle. + +- `knowledge/`: 115 concepts, 17 indexes, and one change log. All 115 concepts have `status: draft`; none has a `verified` entry. +- Coverage: 48 glossary terms, 21 semantic foundation concepts, 10 data structure documents, seven applications, seven roadmap documents, eight references, six history documents, four overview documents, two guides, one repository map, and one build plan. +- The original build plan records phases 0–5 as done and phase 6 (integration and human review) as in progress. Its open-question register contains 90 numbered questions and 21 defect rows, including four local bundle rows. +- Git: branch `main`, two commits, HEAD `313d085`. No remote URL is configured in this checkout; `remote.pushdefault=parent` does not define a remote. GitHub publication cannot be inferred from the workflows or README alone. +- Existing uncommitted work replaces three Mermaid diagrams with Excalidraw sources and SVG renders, adds Python diagram builders/rendering helpers and `links.txt`, ignores `sources/`, and extends the development log. + +## Publishing and verification + +`Taskfile.yml` provides check, build, serve, publish, and graph-generation tasks. `site/build.sh` stages normalized Markdown links, builds with pinned Quartz, and emits `public/`. The custom plugin displays OKF trust and provenance metadata. `task publish` validates, builds with a bucket configuration, rewrites links for literal object keys, and uploads to Tigris. A separate workflow is configured for GitHub Pages. + +The pinned upstream [Quartz package manifest](https://github.com/jackyzha0/quartz/blob/97a2d05f80c4c50534959b1d0d41cc4b3895625e/package.json) confirms version 5.0.0 and Node >=22, consistent with the local documentation. The development log records a Starlight experiment and a pending generator decision; the repository still implements Quartz. + +Checks performed: + +- OKF strict validator: passes, 115 concepts, no issues. +- House-rules checker: passes, 133 documents, zero errors and zero warnings. +- `bash site/build.sh`: succeeds, processes all 133 Markdown files, emits 546 files (245 HTML files). +- Three Excalidraw JSON files load and their corresponding SVG files parse as XML. This is structural validation, not a visual review. +- The build reports that the staging directory is outside a Git repository. This matches the staging design and means Git-derived content dates are unavailable there. npm also reports two install scripts not covered by `allowScripts`; neither prevented this build. + +The build regenerated ignored `public/` using the default GitHub Pages configuration. It did not upload anything. No live-site or browser interaction checks were performed, and the review did not independently re-audit the external OIDM repositories or manuscript claims. + +## Work awaiting integration + +The ignored `sources/bucket/REPORT.md` inventories manuscripts, supporting files, a reporting-schema deck, and a webinar deck; extracted text and figures are present. `sources/excalidraw-diagrams.md` contains transcriptions and gap assessments for 15 canvases. No concept currently references `sources/bucket`, the source bucket prefix, or the imported manuscript identifiers. These imports provide material for a further synthesis pass; their substantive claims still need source review. + +The source report documents extraction limits, including incomplete transcription of one PDF. Its existence should not be read as a complete verification of every imported document. Raw sources remain outside the public bundle. + +## Concrete follow-up findings + +1. **Human review remains the release gate.** Clean structural validation does not establish factual accuracy. The original build plan should remain in progress until its verification and release tasks actually finish. +2. **Deployment does not depend on validation.** `.github/workflows/site.yml` builds and deploys independently of `.github/workflows/validate.yml`; a failed validation workflow does not itself block this deployment. Its path filter also omits the `tools/` scripts used by the build, so changes only to those scripts do not trigger deployment. +3. **The advertised live reload misses source edits.** `site/build.sh` copies content once, then serves that temporary directory. The pinned Quartz watcher watches `argv.directory`; no process mirrors subsequent edits from `knowledge/` into the staging copy. This finding follows from the scripts and watcher implementation; it was not exercised in a browser. +4. **Direct publishing bypasses the documented validation step.** `task publish` has the validation dependency, but `bash site/publish-tigris.sh` does not run either checker. `site/README.md` currently presents both entry points as equivalent, including validation. +5. **Some status documentation needs reconciliation.** The open-question register still lists the SDK URL and eight-versus-ten exam count as bundle defects, although the referenced files contain the corrected URL and ten exams. The source-transcription introduction still says three diagrams although the body covers 15. The development log's source-extraction entry describes work as underway even though an inventory now exists. +6. **Diagram reproduction instructions need consolidation.** The new renderer's usage text refers to a `.claude/skills/excalidraw-diagram/references` location absent from this checkout, and there is no diagram task or local dependency declaration accompanying those instructions. + +Suggested next sequence: reconcile the imported sources with the draft bundle, review and resolve the resulting factual questions, then complete the generator decision and publishing workflow fixes before the first reviewed release. No implementation changes were made as part of this examination. + +## Documentation closeout + +Recorded the review and verification in `DEV_LOG.md`. Left the original build plan in progress because its human review remains outstanding. No reader-facing behavior changed, so no changelog entry was added. diff --git a/docs/plans/restructure-around-project-ideas.md b/docs/plans/restructure-around-project-ideas.md new file mode 100644 index 0000000..5d595ac --- /dev/null +++ b/docs/plans/restructure-around-project-ideas.md @@ -0,0 +1,111 @@ +# Restructure around the team's ideas + +Status: Proposed. Planning only; restructuring has not started. + +## Purpose + +Recover the team's idea work scattered across the repositories and give each distinct idea a clear, stable home that the team can build out. Readers should understand the ideas, their relationships, their sources, and what remains unsettled. + +Explore code, data models, examples, design notes, discussions, and unfinished branches for the ideas they embody. Consolidate related work across repositories into an account of the idea, with links back to the evidence. The repositories remain the place to inspect files and implementation details. Repository coverage is not a measure of completeness. + +This plan replaces the sentence-shortening approach for the next revision. The previous editorial passes remain recorded as completed work. + +## Content rules + +- Capture both explicitly discussed ideas and ideas demonstrated by the team's implementations and examples. Use concise explanations with direct source references. +- Describe what code or an example actually represents or does. Attribute it to that implementation. Do not invent the team's motivation, intended generality, or agreement with another approach. +- Treat the existing generated pages as leads to sources. They are not evidence that the team endorsed a claim. +- Distinguish a stated goal, a working proposal, and an implemented example. Human verification of an account does not establish consensus on its subject. +- Preserve attributed disagreements when they affect an idea. Do not reconcile them through agent reasoning. +- Give each idea one explanatory home. Other pages link to it. +- Keep an example only when it explains something the prose cannot explain as clearly. +- Remove inferred benefits, causal histories, design conclusions, and questions invented by agents unless a team source supports them. +- Omit file catalogs, branch censuses, commit distances, issue inventories, package tours, dataset statistics, and development chronology from the core text. Cite a specific artifact when it provides evidence. +- Avoid copied schemas and full source extracts. Retain unique team-authored material that has no other durable home before removing its current page. + +The recorded [owner statements](../../knowledge/plans/2026-09-20-knowledgebase-build-plan.md#the-project-leads-stated-goals) orient the investigation. The [decisions added on 2026-09-21](../../knowledge/plans/2026-09-20-knowledgebase-build-plan.md#decisions-added-2026-09-21) require dated, attributed versions of unsettled structures and distinguish data structures from transport formats. The repository work itself, along with manuscripts, decks, and working notes, supplies the substance. A lack of polished explanatory prose is a reason to investigate the implementation, not to discard the idea. + +## Proposed reading structure + +Use these six areas as an initial reading structure. Determine the actual idea pages after investigating the source work. An idea developed across several repositories gets one home. A distinct idea may need its own page even when several ideas share one repository. + +| Area | Material to recover and explain | +|---|---| +| OIDM | The team's stated purpose and the relationship among semantic foundation, imaging data structures, and applications. A short reading path. | +| Finding models and CDEs | What the team means by findings and definitions; the relationship to CDEs; stated directions for metadata, relationships, and finding content. Attribute allied working proposals. | +| Anatomic locations | Why the team uses an anatomic vocabulary; hierarchy and laterality; the stated RadLex relationship; meaningful unresolved differences. | +| Exam types | Preferred exam names, the relationship to LOINC and the Playbook, and the proposed always/usually/possibly included anatomy relationships. | +| Observations and imaging history | The team's proposed representations and relationships across exams and a patient's history. Include Imaging Persona only to the extent its source defines it. Distinguish transport expressions from the underlying structures. | +| Applications | The uses the team wants to demonstrate and the role of relevant tools. Link to implementations. Keep proposed uses visibly attributed. | + +Each idea page should explain what the idea is, the problem or use it addresses where the sources establish that, the approach embodied in the work, its relationship to other ideas, and meaningful unresolved alternatives. Include a small example only when it helps explain the idea. Use stable descriptive names so later idea work can extend the same pages. + +Put each idea's stated direction and substantive open questions beside its explanation. Add a compact shared glossary only for terms readers need across topics. Consolidate aliases. Source references belong beside the claims they support. + +Set a small page and word budget after the idea investigation, before drafting. Include the introduction, glossary, and supporting notes in that budget. A page needs a distinct idea worth developing, not a corresponding source file. Start with the shortest explanation that makes the idea understandable and connects it to its evidence. Do not expand a page to fill a template or move excess text into appendices. The intended change is a substantially smaller authored account, not another sentence-trimming pass. + +## Treatment of existing material + +| Current material | Planned treatment | +|---|---| +| Overview, glossary, conceptual pages | Rebuild around the ideas recovered in step 1. Merge repeated definitions and delete superseded explanations. | +| Roadmaps and open questions | Retain explicit team directions and meaningful source disagreements within their topics. Remove agent research tasks and documentation defects from the public narrative. | +| Application profiles and repository map | Investigate the ideas embodied in the applications and connect them to their conceptual homes. Retain a short use and implementation link where helpful. Remove inventories and operational documentation. | +| History | Keep a historical fact only when it explains a team idea or an explicitly recorded decision. Link to the original account. | +| References and examples | Link to durable originals. Keep only indispensable examples and unique team-authored material, counted within the content budget. | +| Build plans, migration ledger, authoring instructions, editorial reports | Keep maintenance records outside the published reading path. Consolidate active instructions and mark superseded plans. Preserve provenance without presenting it as project exposition. | + +Delete superseded generated pages after checking their unique content and links. Do not reproduce them as a new public archive or appendices. Use repository history for recovery once the owner authorizes a commit. Preserve unrelated concurrent edits throughout. + +## Execution sequence + +### 1. Recover the idea work + +- [x] Write this plan before changing content. +- [ ] Use the existing source map to find relevant code, models, worked examples, design notes, discussions, and branch work. Read the artifacts that contain the idea work rather than repeating a file census. +- [ ] Read across repositories to recover how an idea has been expressed, attempted, or developed. Include manuscripts and decks. Inspect implementation behavior when prose leaves the idea implicit. +- [ ] Make a temporary, compact list of distinct ideas with source locations, related ideas, and status. Separate explicit intent from demonstrated behavior. Record disagreements and uncertain interpretation. +- [ ] Check every current page for a unique, sourced team idea before marking it for consolidation or removal. Do not carry agent-generated claims forward by default or mistake an implementation detail for the underlying idea. +- [ ] Identify unique team-authored material and give it a durable home before removing any wrapper page. +- [ ] Derive the proposed idea pages from this investigation. Check the six-area reading structure and content budget against them. + +Completion condition: the distinct ideas found in the work have proposed homes and supporting evidence. Uncertain interpretation is explicit. No inferred intention has become a team position, and ideas have not been excluded merely because they lack a written statement. + +### 2. Draft the smaller account + +- [ ] Write the idea pages from the source investigation. Use the old pages to locate evidence, not as outlines to shorten. +- [ ] Add only necessary definitions, examples, and source references. Keep unsettled alternatives side by side where needed. +- [ ] Check each section for duplication and for agent-added interpretation. +- [ ] Record progress and unresolved attribution questions in this plan. + +Completion condition: the pages form a coherent reading path within the budget established after discovery, with no repository inventory chapters or hidden overflow. Check any conflict between brevity and retaining a distinct idea against its source rather than silently discarding it. + +### 3. Replace and reconnect + +- [ ] Replace the old reading structure and remove superseded pages after the unique-content check. +- [ ] Update indexes, diagrams, internal links, and provenance references to match the new organization. Inspect existing incoming links before deciding which moved URLs need redirects. +- [ ] Keep maintenance records accessible to maintainers while excluding them from the published reading path. Check the current site configuration before implementing that separation. +- [ ] Preserve source attribution and human verification history accurately. Rewritten content remains draft pending review; do not carry a verification stamp onto materially changed claims as if they were reviewed. +- [ ] Update authoring guidance to enforce these content rules and prevent future repository inventories. + +Completion condition: obsolete pages no longer compete with the new account; retained links and provenance resolve. + +### 4. Review and close + +- [ ] Have one reviewer trace retained claims to team sources and another check duplication, scope, and reading order. Their task is fidelity and clarity, not adding ideas. +- [ ] Check that the new account retains the distinct sourced ideas identified in step 1. Report unresolved attribution rather than guessing. +- [ ] Run strict OKF validation, the house checker, the site build, and link/navigation checks. Resolve failures caused by the new structure. +- [ ] Update this plan, relevant reference instructions, `DEV_LOG.md`, `CHANGELOG.md`, and the bundle log. Keep the changelog focused on the changed reading experience. +- [ ] Report final page and word counts alongside the source-fidelity review. Mark restructuring complete only after the content and documentation checks pass. + +No commits, publishing, or restructuring are authorized by the request to create this plan. + +## Acceptance criteria + +- A reader can follow the team's ideas through concise pages organized around concepts and their relationships. +- The pages recover substantive idea work from the repositories, including ideas embodied in code and examples. They provide stable homes for further development. +- Every substantive claim is attributable to source evidence. Implementation behavior and explicit team intent remain distinguishable. +- Each idea has one explanatory home. Unsettled alternatives remain attributed and unresolved. +- No agent-created proposal, inference, or research question is presented as the team's position. +- Supporting material stays within the same scope and size constraints. Relocating bulk text does not count as reducing it. +- The site and bundle checks pass, and maintenance records describe the final state. diff --git a/docs/plans/restructure-joint-notes.md b/docs/plans/restructure-joint-notes.md new file mode 100644 index 0000000..03bd3d3 --- /dev/null +++ b/docs/plans/restructure-joint-notes.md @@ -0,0 +1,36 @@ +# Restructure: joint working notes (Claude side) + +Status: Open. Companion to `restructure-around-project-ideas.md` (Codex). The project lead asked the two sessions to think through the restructure together. This file is Claude's side; Codex should append or reply in its own section below, or edit its plan and note the change here. Neither session edits the other's section. + +## Agreement + +Claude adopts the content rules in `restructure-around-project-ideas.md` as written. In particular: ideas are the subject and repositories are evidence; one explanatory home per idea; distinguish stated goal, working proposal, implemented example; keep disagreements attributed and unresolved; no agent-invented motivation, benefits, conclusions, or questions; no inventories in the core text. The project lead confirmed the direction on 2026-09-21 ("Let's get this working around the IDEAS"). + +## Where Claude proposes a variation + +1. **Supporting layers, not deletion.** The project lead's original brief asked for a public knowledgebase that collates the project's documentation, with a glossary of record and an open-questions register. Proposal: the idea pages become the entire reading path, and three things survive as supporting layers linked from idea pages but absent from navigation and search-first surfaces: (a) the glossary, cut to terms readers need across topics, as the plan says; (b) `references/` extracts that are the only durable copy of team-authored material (the Finding Models overview note, the metadata field reference, the schema-differences analysis); (c) an open-questions register reduced to the team's own unresolved alternatives, with agent-found documentation defects moved to `sources/upstream-issues-draft.md` and filed upstream. Everything else in `history/`, `repositories/`, application inventories, and the work-edge sections goes, with unique team-authored material rehomed first. +2. **Verification history.** Documents are all draft; nothing has a human verification stamp yet, so nothing is lost by rebuilding. New idea pages start as draft. +3. **Sources the current pages did not use.** Since the bundle was drafted, these arrived and are indexed under `sources/` (gitignored, raw): the JACR Imaging Problem List manuscript and figures; two JDIM manuscripts under review (Imaging Problem List; Anatomic Locations Index) with response-to-reviewer letters that must not be used; the SIIM webinar deck (July 2026, public); the reporting-schema deck; fifteen Excalidraw boards transcribed with a sensitivity section; the project lead's 2026-09-19 email notes (application-layer data structures versus transport); the dev-branch example2 study. Rules already decided with the project lead: paraphrase manuscripts and cite as under review, never quote, never touch reviewer letters; boards: public-facing content freely, internal boards only for schema and data-model ideas with organizations named and people and meeting histories omitted. +4. **No specification.** Decided 2026-09-21: nothing is formally defined; never call any source "the specification" or "canonical"; present each source's version side by side, dated. + +## Documents and prompts are primary sources + +Project lead, 2026-09-21: "there are IMPORTANT DOCUMENTS and PROMPTS in the repos whose ideas need to be captured and included! We can't just handwave at the repos." The idea inventory therefore reads, in full, the design documents, plans, skills, and LLM prompt files in the repositories (authoring prompts and fragments in findingmodels; extraction, validation, and coding prompts and design docs on imaging-problem-list dev; enrichment PRD, plans, ADRs, and agent prompts in findingmodel; the next-gen-2026 vocabulary documents; CDEStaging's report-representation notes; Forge's workflow docs), and cites the document and what it says, never the repository alone. Prompts count as the team's operational definitions. Also from the project lead: "the code documents don't need to be REPRODUCED, but the functionality and so on that's captured needs to be somehow reflected." Idea pages therefore state what the code implements of an idea, in the idea's terms, with a pointer to the code, and never copy install or usage documentation. + +## Proposed division of labor + +- Claude: step 1, the idea inventory (two Opus agents, one for the semantic ideas, one for imaging history, applications, and purpose), written to `docs/plans/idea-inventory-semantic.md` and `docs/plans/idea-inventory-structures-and-uses.md`. Codex reads them and challenges them. +- Both: agree the page list and names from the inventories before drafting (in this file). +- Drafting: split by area once the page list exists; each page names its author session in `generated.by`. Neither session edits a page the other is drafting. +- Review: the other session reviews for source fidelity. +- Site and diagrams: Claude (in progress: diagrams reoriented for the column; click-to-zoom plugin; Cloudflare targets). + +## Open points for Codex + +- Do you agree the glossary, a few references, and a reduced open-questions register survive as supporting layers? +- Your plan removes "documentation defects from the public narrative"; Claude has 22 verified upstream issue drafts waiting for the project lead. Agree those are the home for defects? +- Page naming: prefer nouns for ideas (`finding-model`, `observation`, `imaging-problem-list`, `anatomic-location-index`, `exam-type`) or the plan's six areas as directories with idea pages inside? + +## Codex section + +(Codex: write here.) diff --git a/knowledge/applications/finding-and-location-coding.md b/knowledge/applications/finding-and-location-coding.md index 58064bc..18a6db1 100644 --- a/knowledge/applications/finding-and-location-coding.md +++ b/knowledge/applications/finding-and-location-coding.md @@ -1,10 +1,10 @@ --- type: Concept title: Finding and location coding -description: How extracted findings are assigned OIFM finding codes and RadLex anatomic location codes, as a deterministic index lookup followed by language model term generation and selection. +description: How deterministic lookup and language models assign OIFM finding codes and RadLex location codes. tags: [applications, coding, anatomic-locations, llm, extraction] status: draft -generated: { by: claude-opus-5/claude-code, at: 2026-09-21T17:00:00Z } +generated: { by: codex/gpt-6, at: 2026-09-21T20:34:50Z } stale_after: 2027-09-21 sources: - id: coding-design @@ -29,15 +29,15 @@ sources: # Why coding is its own step -[Extraction](/glossary/extraction.md) asks what the report says. Coding asks which existing definition that corresponds to. Keeping them apart is the central design decision of the current pipeline: extraction output persists without codes, and coding is triggered separately, can be re-run with different models, and never re-reads the report.[^coding-design] Two earlier designs did it inside extraction and were retired. +[Extraction](/glossary/extraction.md) records what the report says. Coding matches findings to existing definitions. The current pipeline persists uncoded extractions and runs coding separately, without rereading the report. Coding can be rerun with different models.[^coding-design] Two earlier designs did it inside extraction and were retired. -The two axes are coded independently. A finding gets an [OIFM identifier](/glossary/oifm.md) naming a [finding model](/glossary/finding-model.md) definition. Its location, when the report gives one, gets a [RadLex identifier](/glossary/radlex-id.md) from the [anatomic locations](/glossary/anatomic-location.md) data set. Either can succeed while the other fails. +Finding and location codes are independent. A finding receives an [OIFM identifier](/glossary/oifm.md) for its [finding model](/glossary/finding-model.md). A stated location receives a [RadLex identifier](/glossary/radlex-id.md) from the [anatomic locations](/glossary/anatomic-location.md) dataset. Either can succeed while the other fails. # The pipeline -Coding operates on the flat merged finding list of a completed extraction rather than on report chunks. Each finding already carries its name, [presence](/glossary/presence.md), location fields, verbatim quote, and source section, and the design states that this is sufficient context; chunk-level ambiguity was already resolved during extraction.[^coding-design] +Coding uses the completed extraction's flat merged finding list. Each finding carries its name, [presence](/glossary/presence.md), location fields, verbatim quote, and source section. The design treats these as sufficient context because extraction has resolved chunk-level ambiguity.[^coding-design] -Five phases, of which two involve language model calls. +The pipeline has five phases. Two call language models. | Phase | What happens | |---|---| @@ -47,19 +47,19 @@ Five phases, of which two involve language model calls. | 4. Code selection | Two agents, one for findings and one for locations, choose from the candidate set, running concurrently under a semaphore | | 5. Assembly | Fast-path and selected results merge into one coding bundle per finding | -Four agents in total. Term generation and selection use different models on the stated ground that proposing search synonyms needs no reasoning while judging candidate fit does; traces showed reasoning tokens spent on term generation with no quality benefit. +Four agents perform term generation and selection. Term generation uses a different model because traces showed reasoning tokens added no quality benefit when proposing synonyms. Candidate selection requires reasoning. -Every phase catches its own failures and degrades rather than aborting. A term generation failure falls back to using the finding name as the search term. A search failure or a selection failure marks that finding unresolved. One finding's failure does not block the others. +Each phase handles its failures. Failed term generation falls back to the finding name. Failed search or selection marks the finding unresolved without blocking other findings. The prompts carry the exam information, modality, body part, and study description, because it disambiguates both terms and candidates, and deliberately omit the full report text; testing found identical results with 22 percent fewer input tokens without it.[^coding-prompts] ## What the fast path is worth -In prototype testing on chest radiograph extractions, exact and synonym lookup resolved 13 of 16 unique finding names and 12 of 15 unique locations with no model call at all.[^coding-design] The same testing found that a purely deterministic top-candidate choice was not adequate for locations: location assignment needs contextual reasoning even when the finding code resolves deterministically. +In chest radiograph prototype tests, exact and synonym lookup resolved 13 of 16 unique finding names and 12 of 15 unique locations without model calls.[^coding-design] Deterministic top-candidate selection was insufficient for locations, which needed contextual reasoning even when finding codes resolved deterministically. # The coding record -Each finding carries a coding bundle holding one finding code and a list of location codes. The list is plural because a finding can span sides or structures, so "lungs" resolves to both the left and the right lung.[^coding-design] +A coding bundle holds one finding code and a list of location codes. Findings can span sides or structures, so "lungs" resolves to both lungs.[^coding-design] ```python class FindingCodingBundle(StrictBaseModel): @@ -67,7 +67,7 @@ class FindingCodingBundle(StrictBaseModel): location_codes: list[LocationCode] = Field(default_factory=list) ``` -Both code objects record not only the answer but how it was reached and, when it failed, why. +Both code objects record the result, method, and failure reason. | Field | Finding code | Location code | |---|---|---| @@ -79,7 +79,7 @@ Both code objects record not only the answer but how it was reached and, when it | `candidates` | the alternates that were considered | the alternates that were considered | | `closest_candidate_id` | the nearest miss when unresolved | not carried | -The unresolved reasons are the part worth reading closely, because they are designed to report gaps rather than to hide them. +Unresolved reasons distinguish content gaps from processing failures. | Finding reason | Meaning | |---|---| @@ -97,25 +97,25 @@ The unresolved reasons are the part worth reading closely, because they are desi | `no_candidates` | The search returned nothing | | `coding_error` | A model or infrastructure failure | -Two of these, `definition_mismatch` and `no_candidate_match`, exist specifically so that an unresolved finding becomes evidence about content coverage rather than noise. They are the pipeline's channel back to [the content catalog](/semantic-foundation/finding-models/content-catalog.md) and [the anatomic location data model](/semantic-foundation/anatomic-locations/data-model.md). +`definition_mismatch` and `no_candidate_match` identify gaps in [the content catalog](/semantic-foundation/finding-models/content-catalog.md) and [the anatomic location data model](/semantic-foundation/anatomic-locations/data-model.md). -The model's own explanation is persisted with the extraction but never written to logs or trace attributes, because it can quote report content. +Model explanations persist with the extraction but never enter logs or trace attributes because they can quote report content. # Where the location comes from -Choosing a code is the second half of the problem. The first is deciding which anatomic structure the report actually asserts, and that is governed by a written precedence ladder, applied per observation and agreed during a correction pass over the sample data.[^anat-rules] In summary: +The assignment rules determine the anatomic structure before code selection, governed by a written precedence ladder, applied per observation and agreed during a correction pass over the sample data.[^anat-rules] -1. **Explicit anatomy in the report text or section context wins.** Use the most specific structure stated, sided only if a side is stated. A section heading counts as context. -2. **Otherwise use the finding's own target organ**, at the finding's anatomic granularity and never finer. -3. **Otherwise fall back to the exam-scoped coarse region**, sided only if the exam is sided. +1. Use the most specific anatomy stated in the report text or section context. Add a side only when stated. +2. Otherwise use the finding's own target organ, at the finding's anatomic granularity and never finer. +3. Otherwise, use the coarse exam region, sided only if the exam is sided. -An organ always beats the exam region when the finding has a real target organ, so "lung bases clear" on an abdominal study codes to lung rather than abdomen. Laterality is resolved against the whole report section rather than the isolated quote, because the side is often stated only in a heading; but a side is never inferred from a different exam or from clinical priors. Bilateral findings split into left and right when the lesions are separable and stay generic and unsided when the process is one diffuse entity. A structure absent from the ontology is left unassigned rather than forced to a wrong code. The full rules, including the worked examples and the exam-to-region map, are in [the assignment rules reference](/data-structures/anatomic-location-assignment-rules.md). +An organ always beats the exam region when the finding has a real target organ. For example, "lung bases clear" on an abdominal study codes to lung. Resolve laterality from the whole report section, including its heading. Never infer a side from another exam or clinical priors. Split separable bilateral lesions into left and right, but keep a diffuse bilateral process generic and unsided. Leave structures absent from the ontology unassigned. See [the assignment rules reference](/data-structures/anatomic-location-assignment-rules.md) for examples and the exam-to-region map. -The rules name one limitation they do not solve. A generic location and a specific one for the same finding code across exams, "kidney" and "left kidney", still produce separate [Imaging Problem List](/glossary/imaging-problem-list.md) groups. Deciding whether those are one problem or two is called anatomic-compatibility reconciliation and is an open follow-on.[^anat-plan] +Generic and specific locations for the same finding code across exams, such as "kidney" and "left kidney", still produce separate [Imaging Problem List](/glossary/imaging-problem-list.md) groups. Deciding whether those are one problem or two is called anatomic-compatibility reconciliation and is an open follow-on.[^anat-plan] # The review artifact -Coding decisions are reviewable as a spreadsheet, not only as JSON. The enrichment script that ran the sample Exam Finding Lists through the production pipeline writes a review CSV of every location decision alongside the enriched files. In the completed pass of 2026-06-10, 260 of 275 findings received a location, and the regenerated [Imaging Problem List](/data-structures/imaging-problem-list.md) was regrouped by finding code together with location identifier.[^anat-plan] +The sample Exam Finding List enrichment script writes a review CSV of every location decision alongside the enriched files. In the 2026-06-10 pass, 260 of 275 findings received a location. The regenerated [Imaging Problem List](/data-structures/imaging-problem-list.md) groups by finding code and location identifier.[^anat-plan] # Earlier designs, now archived @@ -127,11 +127,11 @@ Three generations exist in the repository, and only the third is current. | Version 3, batch per chunk | Fast path, then three model calls per report chunk: generate search terms for findings and locations together, select finding codes, select location codes | Marked completed 2026-02-19, then superseded | | Current, flat merged finding list | Fast path, then four agents across two phases, operating on the merged finding list rather than per chunk | Current, implementation complete on `dev` | -The move from version 3 to the current design changed both the unit of work, from chunk to merged finding list, and the agent count, from three to four, by splitting term generation into separate finding and location agents so each could use a cheaper model.[^coding-archive][^coding-design] +The current design split term generation into finding and location agents so each could use a cheaper model.[^coding-archive][^coding-design] # Where this sits -Coding is a stage of [the report extraction platform](/applications/report-extraction-platform.md) and runs as its own asynchronous job. Its inputs are the finding model corpus and the anatomic location data set, and its output is what makes an [Observation](/glossary/observation.md) interoperable at all: without codes, an extracted finding is text. See [the architecture overview](/overview/architecture.md) for why the identifiers are the joints of the whole system. +Coding runs as an asynchronous job in [the report extraction platform](/applications/report-extraction-platform.md). It uses the finding model corpus and anatomic location dataset to assign standard identifiers to an [Observation](/glossary/observation.md). See [the architecture overview](/overview/architecture.md). [^coding-design]: Coding agent design, imaging-problem-list dev branch [^coding-prompts]: Coding agent prompt catalog, imaging-problem-list dev branch diff --git a/knowledge/applications/finding-model-forge.md b/knowledge/applications/finding-model-forge.md index 206e875..7088753 100644 --- a/knowledge/applications/finding-model-forge.md +++ b/knowledge/applications/finding-model-forge.md @@ -1,10 +1,10 @@ --- type: Project Profile title: Finding Model Forge -description: The web application at fmf.oidm.org where contributors author finding model definitions through an AI-assisted wizard and move them through a draft review lifecycle. +description: The application at fmf.oidm.org for authoring finding models with AI assistance and reviewing drafts. tags: [applications, finding-models, authoring, llm, mongodb] status: draft -generated: { by: claude-opus-5/claude-code, at: 2026-09-21T17:00:00Z } +generated: { by: codex/gpt-6, at: 2026-09-21T20:34:50Z } stale_after: 2027-09-21 sources: - id: forge-readme @@ -43,13 +43,15 @@ sources: # Purpose -Finding Model Forge is the authoring front end of the Open Imaging Data Model (OIDM). It exists so that a radiologist who is not a programmer can create a [finding model](/glossary/finding-model.md) definition, have identifiers and standard codes assigned automatically, and put the result in front of reviewers. The January 2026 status deck names it as the tool behind the claim that finding models are a rapid-innovation workbench ahead of formal [common data element](/glossary/cde.md) adoption.[^deck] +**Live:** [fmf.oidm.org](https://fmf.oidm.org) (sign-in with GitHub). -The application is a FastAPI web wrapper around the `findingmodel` Python library, which supplies the actual generation, similarity search, and identifier assignment.[^forge-readme] The library is documented under [the finding models area](/semantic-foundation/finding-models/authoring-workflow.md); this profile covers the application. +Finding Model Forge lets radiologists create [finding model](/glossary/finding-model.md) definitions without programming. It assigns identifiers and standard codes automatically and accepts drafts for review. The January 2026 Open Imaging Data Model (OIDM) deck presents it as a tool for developing finding models before formal [common data element](/glossary/cde.md) adoption.[^deck] + +The FastAPI application wraps the `findingmodel` Python library for generation, similarity search, and identifier assignment.[^forge-readme] See [the authoring workflow](/semantic-foundation/finding-models/authoring-workflow.md) for the library. # What a user does with it -Sign-in is GitHub OAuth. After that the creation flow is two steps followed by draft editing, streamlined from an earlier five-step wizard.[^forge-workflow] The whole flow happens inside one page: the server returns HTTP 303 responses, HTMX intercepts them and swaps content into a single container, and the browser never navigates. The creation-workflow document is emphatic about this because it changes how the flow is tested. +Users sign in with GitHub OAuth. Creation has two steps followed by draft editing, replacing an earlier five-step wizard.[^forge-workflow] HTMX intercepts HTTP 303 responses and swaps content within one page without browser navigation. | Stage | User action | What the server does | |---|---|---| @@ -58,28 +60,28 @@ Sign-in is GitHub OAuth. After that the creation flow is two steps followed by d | 3. Draft editing | Edit description, manage synonyms, write the attributes in markdown; press "Update & Preview" | Autosaves as you type, then generates the full finding model JSON including identifiers and standard codes | | 4. Preview and submission | Review the generated model, press "Submit Draft" | Moves the draft to `submitted` and locks editing | -The finding name is read-only once the draft exists. A creation session tracks progress through the first two steps and expires after an hour of inactivity. Drafts appear on the user's profile page, where editing can be resumed; resuming a name that was already submitted lands on the final display view instead of the editor.[^forge-draft] +The finding name becomes read-only when a draft is created. Creation sessions track the first two steps and expire after an hour of inactivity. Users resume drafts from their profile page. Submitted drafts open in the final display view.[^forge-draft] # The draft object and its lifecycle -A draft is the unit of work. It carries the owning user, the finding name, the human inputs (description, synonyms, attributes markdown), the server-generated finding model JSON, a status, and an action log of timestamped entries recording who did what.[^forge-draft] +A draft stores its owner, finding name, description, synonyms, attributes markdown, generated model JSON, status, and a timestamped action log recording who performed each action.[^forge-draft] ```text draft ──submit──▶ submitted ──▶ under-review ──▶ added └──▶ declined ``` -Five statuses exist: `draft`, `submitted`, `under-review`, `added`, and `declined`. Submission locks further editing; everything after it is administrative review. A peer-review layer sits alongside this lifecycle on the development branch: a public draft state lets other contributors read and comment on a draft before it is submitted, and a comment feature is scoped to drafts in the submitted, under-review, added, and declined states. Both are stated as serving collaborative refinement rather than approval gating.[^forge-public-review][^forge-comments] +Five statuses exist: `draft`, `submitted`, `under-review`, `added`, and `declined`. Submission locks further editing; everything after it is administrative review. On `dev`, public drafts allow contributors to read and comment before submission. A separate comment feature covers `submitted`, `under-review`, `added`, and `declined` drafts. Both are stated as serving collaborative refinement rather than approval gating.[^forge-public-review][^forge-comments] # Data it reads and writes -MongoDB holds drafts, users, and organizations, accessed asynchronously through Motor.[^forge-db] Redis provides a caching layer for user and finding model data; the implementation always calls the cache, and the calls become safe no-ops when Redis is unavailable.[^forge-draft] Two DuckDB files supplied by the `findingmodel` library must be present in the platform data directory, one for finding models and one for [anatomic locations](/glossary/anatomic-location.md), which is how similarity search and code lookup work offline of any web service.[^forge-readme] +MongoDB stores drafts, users, and organizations through asynchronous Motor access.[^forge-db] Redis caches user and finding model data. Cache calls become no-ops when Redis is unavailable.[^forge-draft] The `findingmodel` library requires two DuckDB files in the platform data directory, one for finding models and one for [anatomic locations](/glossary/anatomic-location.md), to support similarity search and code lookup without web services.[^forge-readme] -The output format is the finding model JSON defined by [the finding model format](/semantic-foundation/finding-models/finding-model-format.md), carrying an [OIFM identifier](/glossary/oifm.md) and per-[attribute](/glossary/attribute.md) identifiers. Drafts store the generated JSON inline; the definitive corpus lives in the separate content repository described in [the content catalog](/semantic-foundation/finding-models/content-catalog.md). +Drafts store generated JSON inline in [the finding model format](/semantic-foundation/finding-models/finding-model-format.md), with [OIFM identifiers](/glossary/oifm.md) and per-[attribute](/glossary/attribute.md) identifiers. The definitive corpus lives in [the content repository](/semantic-foundation/finding-models/content-catalog.md). # Language model use -Three generation steps are documented, with the timeouts the application budgets for them.[^forge-workflow] +The workflow documents three library calls and their time budgets.[^forge-workflow] | Step | Task | Budgeted time | |---|---|---| @@ -87,15 +89,13 @@ Three generation steps are documented, with the timeouts the application budgets | Stage 2 | Semantic similarity search against existing models | 15 to 30 seconds | | Stage 3 | Generate the complete finding model JSON, including identifier assignment and standard codes | 30 to 90 seconds | -All three are calls into the `findingmodel` library rather than code in this repository. - # Architecture -One FastAPI process serves both the pages and the API. Templates are Jinja2, with Flowbite components for layout, Alpine.js for client state, and HTMX driving every transition as a server-rendered fragment swap; the house rule is to keep interactivity in Alpine and HTMX rather than custom JavaScript. MongoDB through Motor is the store, Redis the cache, and the `findingmodel` library the engine. Static assets are built with Vite and resolved through its manifest.[^forge-readme][^forge-draft] +One FastAPI process serves pages and the API. Jinja2 renders templates, Flowbite supplies components, Alpine.js manages client state, and HTMX swaps server-rendered fragments. Project conventions place interactivity in Alpine and HTMX instead of custom JavaScript. Vite builds static assets, which the application resolves through its manifest.[^forge-readme][^forge-draft] # Deployment -Live at [fmf.oidm.org](https://fmf.oidm.org). The container needs MongoDB and Redis running alongside it, a GitHub OAuth application for sign-in, and the two DuckDB data files.[^forge-readme] Bringing the deployment compose file into the repository is open issue 9, and a development compose file is open issue 7. Install and run instructions stay with the code; this profile does not repeat them. +Live at [fmf.oidm.org](https://fmf.oidm.org). The container requires MongoDB, Redis, a GitHub OAuth application, and two DuckDB data files.[^forge-readme] # Repository and branch of record @@ -111,9 +111,9 @@ Neither long-lived branch has an open pull request as of 2026-09-21. # What is in flight -**The `dev` refactor.** Ninety-six commits consolidate a service-layer extraction, a router cleanup, standardization of the HTMX and Alpine patterns, and a rebuilt test infrastructure. The branch's own complexity assessment names what remains in the service and router layers after that work. The peer-review workflow described above, public drafts plus comments, is finished on `dev` and absent from `main`.[^forge-public-review][^forge-comments] +**The `dev` refactor.** Ninety-six commits consolidate a service-layer extraction, a router cleanup, standardized HTMX and Alpine patterns, and rebuilt test infrastructure. Its complexity assessment records remaining service and router work. Public drafts and comments are complete on `dev` and absent from `main`.[^forge-public-review][^forge-comments] -**Model editing, issue 13.** Opened 2025-10-16 and still open. The implementation on `feature/model-editing` answers it with AI-assisted *iterations* rather than manual editing: a user submits a natural-language description of the change they want, and the library applies it.[^forge-iteration] The constraints are explicit. The model name cannot change, one iteration draft exists per user per published model, the existing action log carries the audit trail, and manual edits to an iteration draft are not permitted. It builds on the `model_editor` module added in `findingmodel` 0.6.0, whose guardrails preserve the [OIFM identifiers](/glossary/oifm.md) and reject unsafe changes. Sprint 1, natural-language iteration, is complete as of 2025-11-27. Sprint 2, markdown-edit iteration, and Sprint 3, enhanced history, are not started. +**Model editing, issue 13.** The `feature/model-editing` branch lets users request changes in natural language.[^forge-iteration] Model names cannot change, and each user can have one iteration draft per published model. The action log records changes, and manual edits are prohibited. The `model_editor` module in `findingmodel` 0.6.0 preserves [OIFM identifiers](/glossary/oifm.md) and rejects unsafe changes. Sprint 1, natural-language iteration, was complete on 2025-11-27. Sprint 2, markdown-edit iteration, and Sprint 3, enhanced history, have not started. # Open issues @@ -125,11 +125,11 @@ Neither long-lived branch has an open pull request as of 2026-09-21. # History -A superseded version of the application survives in the repository under `zOld/`, together with its planning notes.[^forge-zold] Those notes record decisions the current application still reflects: a deliberate commitment to MongoDB with the Beanie object-document mapper after considering embedded vector stores, a front end on the same FastAPI instance as the API, and GitHub OAuth holding authorization in the session. The three mini-sprint task lists from November 2024 through April 2025 show the feature set arriving in order, beginning with generating a finding model from nothing but a finding name, then adding identifiers, a user table, and searchable [common data element](/glossary/cde.md) content. Most of their boxes are still unchecked, including batch creation from a CSV file and links from a finding model to its eventual CDE codes. +The superseded application and its plans remain in `zOld/`.[^forge-zold] The plans chose MongoDB with Beanie after considering embedded vector stores, shared the FastAPI process between pages and API, and kept GitHub OAuth authorization in the session. Three mini-sprint lists from November 2024 through April 2025 start with generation from a finding name, then add identifiers, a user table, and searchable [common data element](/glossary/cde.md) content. Most checkboxes remain unchecked, including CSV batch creation and links to eventual CDE codes. # What it realizes -Finding Model Forge is where the [contributor](/glossary/contributor.md) meets the [finding model](/glossary/finding-model.md) format. It assigns [OIFM identifiers](/glossary/oifm.md) with their [organization code](/glossary/oidm-organization-code.md), writes [attributes](/glossary/attribute.md) and their values, and attaches [index codes](/glossary/index-code.md) into external terminologies. Its place in the stack is drawn in [the architecture overview](/overview/architecture.md), and the authoring path it implements is described end to end in [the authoring workflow](/semantic-foundation/finding-models/authoring-workflow.md). +Forge lets [contributors](/glossary/contributor.md) assign [organization code](/glossary/oidm-organization-code.md) identifiers, write attributes and values, and attach [index codes](/glossary/index-code.md) for external terminologies. See [the architecture overview](/overview/architecture.md) and [the authoring workflow](/semantic-foundation/finding-models/authoring-workflow.md). [^deck]: Open Imaging Data Model 2026 Status Update, January 2026 [^forge-readme]: FindingModelForge README, dev branch diff --git a/knowledge/applications/finding-models-site.md b/knowledge/applications/finding-models-site.md index c0e728c..bf4f1be 100644 --- a/knowledge/applications/finding-models-site.md +++ b/knowledge/applications/finding-models-site.md @@ -1,10 +1,10 @@ --- type: Project Profile title: Finding model catalog site -description: The static Astro site that renders the finding model corpus as browsable pages, building it from the content repository pulled in as a git submodule. +description: The static Astro catalog built from finding model definitions in a git submodule. tags: [applications, finding-models, catalog, astro] status: draft -generated: { by: claude-opus-5/claude-code, at: 2026-09-21T17:00:00Z } +generated: { by: codex/gpt-6, at: 2026-09-21T20:34:50Z } stale_after: 2027-09-21 sources: - id: site-config @@ -26,27 +26,29 @@ sources: # Purpose -The catalog site is the public reading surface for the [finding model](/glossary/finding-model.md) corpus. It answers one question, "what definitions exist and what is in them," without requiring a reader to install anything, clone a repository, or read JSON. [Finding Model Forge](/applications/finding-model-forge.md) writes definitions; this site displays them. +**Live:** [openimagingdata.github.io/finding-models-site](https://openimagingdata.github.io/finding-models-site/). + +The catalog site displays [finding model](/glossary/finding-model.md) definitions without requiring installation or reading JSON. [Finding Model Forge](/applications/finding-model-forge.md) authors the definitions. # What a user does with it -Three things, from the home page.[^site-index] +The home page links to three actions.[^site-index] -- **Browse the catalog.** A "Browse Finding Models" link leads to a list page, and each entry leads to a detail page for one definition. -- **Start authoring.** A "Launch Finding Model Forge" link goes to the sign-in page at `fmf.oidm.org`. -- **Report a problem.** A "Submit Issue" link opens a new issue against the `findingmodels` content repository, so corrections go to the content rather than to the site. +- "Browse Finding Models" opens the catalog, with a detail page for each definition. +- "Launch Finding Model Forge" opens sign-in at `fmf.oidm.org`. +- "Submit Issue" opens an issue against the `findingmodels` content repository. -A search box is present on the home page but is not wired to anything; it is markup only. +The home page search box has no implemented behavior. # Data it reads -The site holds no content of its own. The `findingmodels` content repository is attached as a git submodule at `external/findingmodels`.[^site-submodule] At build time, a loader module reads every `.json` file in that submodule's `defs/` directory, parses each one, and derives the page slug from the file name.[^site-loader] There is no database, no API call, and no runtime fetch. A definition appears on the site only after the submodule pointer is advanced and the site is rebuilt. +The `findingmodels` content repository is a git submodule at `external/findingmodels`.[^site-submodule] At build time, the loader parses every `.json` file in `defs/` and derives page slugs from file names.[^site-loader] The site has no database, API calls, or runtime fetches. ```typescript const modelDir = path.resolve('./external/findingmodels/defs'); ``` -That single line is the whole coupling between the site and the corpus, and it is why the content repository stays the source of truth for finding model identity. The corpus itself is described in [the content catalog](/semantic-foundation/finding-models/content-catalog.md) and the format in [the finding model format](/semantic-foundation/finding-models/finding-model-format.md). +That single line is the whole coupling between the site and the corpus, and it is why the content repository stays the source of truth for finding model identity. See [the content catalog](/semantic-foundation/finding-models/content-catalog.md) and [the finding model format](/semantic-foundation/finding-models/finding-model-format.md). # Language model use @@ -54,11 +56,11 @@ None. The site is a deterministic renderer. # Architecture -Astro 5 in static output mode, with Tailwind CSS 4 applied through the Astro Vite plugin and pnpm as the package manager.[^site-config] Four source files carry the whole application: a layout, a home page, a model list page, and a model detail page parameterized by slug. The configuration sets a base path of `/finding-models-site/`, which is what makes the published URLs resolve under the project's GitHub Pages subpath. +The site uses Astro 5 static output, Tailwind CSS 4 through the Astro Vite plugin, and pnpm.[^site-config] Four source files define the layout, home page, model list, and model detail page. The `/finding-models-site/` base path resolves URLs under the GitHub Pages subpath. # Deployment -Live at [openimagingdata.github.io/finding-models-site](https://openimagingdata.github.io/finding-models-site/), verified responding on 2026-09-21. A GitHub Actions workflow triggers on every push to `main`, checks the repository out with submodules, installs with pnpm, runs the Astro build, and publishes `dist/` to GitHub Pages.[^site-deploy] Because the workflow fires on pushes to this repository rather than on changes in the content repository, new definitions reach the site only when someone updates the submodule pointer here. +Live at [openimagingdata.github.io/finding-models-site](https://openimagingdata.github.io/finding-models-site/), verified responding on 2026-09-21. On pushes to `main`, GitHub Actions checks out the repository with submodules, installs with pnpm, builds, and publishes `dist/`.[^site-deploy] New definitions appear only after the submodule pointer is updated and the site rebuilds. # Repository and branch of record @@ -76,7 +78,7 @@ The repository's README is the unmodified Astro starter boilerplate and describe # What it realizes -The catalog site is the simplest realization of the claim that a [finding model](/glossary/finding-model.md) definition is a portable file rather than a database row. It needs no service, no credentials, and no synchronization, and it proves that a consumer can read the corpus by reading files. The same property is what lets the extraction platform resolve [OIFM identifiers](/glossary/oifm.md) against a published registry file; see [the architecture overview](/overview/architecture.md). +The site reads portable definition files without a service or credentials. The extraction platform similarly resolves [OIFM identifiers](/glossary/oifm.md) against a published registry file. See [the architecture overview](/overview/architecture.md). [^site-config]: finding-models-site Astro configuration, main branch [^site-loader]: finding-models-site build-time model loader, main branch diff --git a/knowledge/applications/imaging-problem-list-viewer.md b/knowledge/applications/imaging-problem-list-viewer.md index 16ca2b6..c929ecf 100644 --- a/knowledge/applications/imaging-problem-list-viewer.md +++ b/knowledge/applications/imaging-problem-list-viewer.md @@ -1,10 +1,10 @@ --- type: Project Profile title: Imaging Problem List viewer -description: The deployed browser application that renders Imaging Problem Lists, its three-level drill-down and status sections, and the anatomy-first second-generation viewer being built on the development branch. +description: The deployed Imaging Problem List browser and the undeployed anatomy-first viewer on dev. tags: [applications, ipl, viewer, anatomy, frontend] status: draft -generated: { by: claude-opus-5/claude-code, at: 2026-09-21T17:00:00Z } +generated: { by: codex/gpt-6, at: 2026-09-21T20:34:50Z } stale_after: 2027-09-21 sources: - id: ipl-main-readme @@ -32,7 +32,9 @@ sources: # Purpose -The viewer is the demonstration that an [Imaging Problem List](/glossary/imaging-problem-list.md) is worth assembling. It takes the reorganization of a patient's findings by finding rather than by date and puts it on screen, so that "has this finding ever been described, and is it present now" is a glance instead of a chart review. The January 2026 status deck names an Imaging Problem List browser among the demonstration applications of the applications pillar. +**Live:** the deployed viewer is at [imaging-problem-list.pages.dev](https://imaging-problem-list.pages.dev) (main-branch data, without anatomic locations). The anatomy-first `viewer_v2` on `dev` has no public deployment as of 2026-09-21; the plan's intended address, `ipl-anatomy.pages.dev`, does not respond. + +The viewer displays a patient's [Imaging Problem List](/glossary/imaging-problem-list.md) by finding, showing its history and current presence. The January 2026 status deck lists the browser as a demonstration application. Two viewers exist. The deployed one is on `main`. A second-generation, anatomy-first viewer called `viewer_v2` sits on `dev` and is not deployed. @@ -40,13 +42,13 @@ Two viewers exist. The deployed one is on `main`. A second-generation, anatomy-f ## What a user does with it -Navigation is three levels deep, held entirely in client-side state.[^ipl-main-readme] +Navigation has three levels, managed in client-side state.[^ipl-main-readme] -1. **Patient level.** The [Imaging Problem List](/data-structures/imaging-problem-list.md): every finding described across the patient's exams. A dropdown switches patients, and a `?patient=` query parameter selects one directly. -2. **Exam level.** Clicking through a finding's exam entry opens that exam's [Exam Finding List](/data-structures/exam-finding-list.md). -3. **Report level.** From there, the raw report text the findings came from. +1. The patient's [Imaging Problem List](/data-structures/imaging-problem-list.md) shows findings across exams. A dropdown or `?patient=` query parameter selects the patient. +2. A finding's exam entry opens the [Exam Finding List](/data-structures/exam-finding-list.md). +3. The exam view opens the source report text. -Findings are grouped into sections by temporal status rather than filtered by it. Status filtering existed and was removed in favor of status-labeled sections on 2025-11-18.[^ipl-status-commit] Four statuses are computed in the browser from each finding's observation list sorted by date, never stored in the data. +Status sections replaced status filtering on 2025-11-18.[^ipl-status-commit] The browser computes four statuses from date-sorted observations without storing them in the data. | Status | Meaning | |---|---| @@ -55,11 +57,11 @@ Findings are grouped into sections by temporal status rather than filtered by it | Resolved | Present in the past, absent now | | Never | Never described as present | -A [body region](/glossary/body-region.md) filter offers chest, abdomen, pelvis and genitourinary, musculoskeletal, and head and neck. It is driven by a static lookup table of 98 finding-to-region entries, which replaced an earlier keyword-matching approach. Clicking a finding's exam group opens a popover listing every observation of that finding in that report, not just the first, grouped by report identifier. Exam type names are shortened for display through a second lookup table, so "MR Brain WO and W contrast IV" reads as "MR Brain w/wo". The design is dark-mode-first, with the preference kept in browser local storage. +The [body region](/glossary/body-region.md) filter covers chest, abdomen, pelvis and genitourinary, musculoskeletal, and head and neck. A static table of 98 finding-to-region mappings replaced keyword matching. A finding's exam-group popover lists all its observations, grouped by report identifier. A second lookup table shortens exam names, such as "MR Brain WO and W contrast IV" to "MR Brain w/wo". The design prioritizes dark mode and stores the preference in browser local storage. ## Data it reads -Static files only, laid out by patient and exam. +The viewer reads static files organized by patient and exam. ```text data/patients.json @@ -71,7 +73,7 @@ data/finding_region_mappings.json data/exam_type_mappings.json ``` -The deployed bundle carries two patients: one with 10 exams and 98 aggregated Imaging Problem List findings, and one with 2 exams.[^ipl-main-readme] Those files are generated from the sample data described in [sample data](/data-structures/sample-data.md) by scripts in the repository. No server, no API, no database. +The deployed bundle contains two patients. One has 10 exams and 98 aggregated findings. The other has 2 exams.[^ipl-main-readme] Repository scripts generate the files from [sample data](/data-structures/sample-data.md). The viewer needs no application server, API, or database. ## Language model use @@ -79,31 +81,31 @@ None in the viewer. Everything it renders was produced upstream. ## Architecture -One page of Alpine.js state, with Tailwind and Flowbite loaded from a content delivery network and no build step at all. Status computation, region filtering, and popover assembly are plain JavaScript over the loaded JSON. +One page manages Alpine.js state, with Tailwind and Flowbite loaded from a content delivery network and no build step. JavaScript computes statuses, filters regions, and assembles popovers from JSON. ## Deployment -Live at [imaging-problem-list.pages.dev](https://imaging-problem-list.pages.dev), verified responding on 2026-09-21. Deployment is a Wrangler command that pushes the `viewer/` directory to a Cloudflare Pages project named `imaging-problem-list`; there is no continuous deployment.[^ipl-deploy] +Live at [imaging-problem-list.pages.dev](https://imaging-problem-list.pages.dev), verified responding on 2026-09-21. A Wrangler command deploys `viewer/` to the `imaging-problem-list` Cloudflare Pages project. There is no continuous deployment.[^ipl-deploy] ## A documentation discrepancy -The prose in the repository's domain notes and the viewer README still describes an older three-state scheme, present, resolved, and not present or ruled out, while the shipped code computes the four states listed above.[^ipl-main-claude] The code is current. This is recorded in [open questions](/roadmap/open-questions.md). +The domain notes and viewer README describe an older three-state scheme: present, resolved, and not present or ruled out.[^ipl-main-claude] The shipped code computes the four states above. See [open questions](/roadmap/open-questions.md). # viewer_v2, the anatomy-first viewer -A separate React, Vite, TypeScript, and Tailwind static application under `viewer_v2/` on the `dev` branch. Its plan is marked "Body-map redesign implemented; ready for review" and is not archived, so it is in flight.[^viewer-v2-plan] +`viewer_v2/` is a React, Vite, TypeScript, and Tailwind static application on `dev`. Its plan is marked "Body-map redesign implemented; ready for review" and is not archived, so it is in flight.[^viewer-v2-plan] -**The governing rule.** The viewer trusts the Imaging Problem List. Each finding identifier in the list is the canonical clinical problem row, and anatomy grouping is presentation only: it must never merge or split findings. Clinical reconciliation of compatible anatomic locations is explicitly out of scope and belongs to the follow-on step in the anatomic location plan.[^anat-plan] +Each finding identifier in the Imaging Problem List defines one clinical problem row. Anatomy grouping must not merge or split findings. Clinical reconciliation of compatible locations belongs to the follow-on anatomic location work.[^anat-plan] -**What it shows.** A single patient, the ten-exam example, presented anatomy first: an abstract body-map schematic rather than an anatomical illustration, with extremities lateralized so the right side renders on the viewer's left and the left on the viewer's right, and findings with no stated side kept separate from both. Diagram zones show the actual active finding names as clickable chips rather than a count badge. From there the detail pane opens progressively through region, cluster, finding, and observation, with finding timelines, finding-definition metadata, and drill-down to the exam, its Exam Finding List, and the report. The theme is a dark radiology-workstation palette, and the plan states that a light presentation is not acceptable for this version. +The viewer presents the ten-exam patient on an abstract body schematic. Right extremities appear on the viewer's left, left extremities on the right, and unsided findings stay separate. Zones show active finding names as clickable chips. The detail pane opens through region, cluster, finding, and observation, with timelines, definition metadata, and links to exams, Exam Finding Lists, and reports. This version requires a dark radiology-workstation palette. -**Evidence highlighting.** Quotes are highlighted in the source report by whitespace-normalized exact match only, after folding Unicode compatibility forms, dashes, and smart quotes. No fuzzy matching. A quote that cannot be located is recorded as a warning in the generated data rather than silently dropped. +Quotes are highlighted by exact match after whitespace normalization and folding of Unicode compatibility forms, dashes, and smart quotes. There is no fuzzy matching. Unmatched quotes produce warnings in generated data. -**Data contract.** The browser reads only generated files under `viewer_v2/public/data/`, never the sample data, the viewer's own data directory, or the anatomic location database. A build script assembles that bundle from the example Imaging Problem List, its Exam Finding Lists, the matching report files, finding display metadata, and the `anatomic-locations` package. Every generated top-level file carries a schema version, and the generator fails on duplicate or missing finding identifiers, observations whose report cannot be resolved, or anatomy that resolves to nothing without an explicit unlocalized fallback. A check task regenerates the bundle and fails if the committed output has drifted. +The browser reads only generated files under `viewer_v2/public/data/`. A build script combines the example Imaging Problem List, Exam Finding Lists, report files, finding display metadata, and `anatomic-locations` package. Every top-level file has a schema version. Generation fails on duplicate or missing finding identifiers, unresolved report references, or unresolved anatomy without an explicit unlocalized fallback. A check task regenerates the bundle and fails if it differs from committed output. -**Stated caveats in the current pass.** The bundle covers 123 Imaging Problem List findings across 10 exams for one patient. Two findings have no specific location and use the explicit unlocalized fallback. Seven warnings are embedded in the manifest for the interface to surface: four exact-evidence misses, two missing-anatomy fallbacks, and one missing finding definition. +The bundle contains 123 findings across 10 exams for one patient. Two findings use the unlocalized fallback. The manifest contains seven warnings for display: four exact-evidence misses, two missing-anatomy fallbacks, and one missing finding definition. -**Deployment.** The plan names a separate Cloudflare Pages project, `ipl-anatomy`, publishing the built output. No site responds at `ipl-anatomy.pages.dev` as of 2026-09-21, and deployment automation beyond the documented build and deploy commands is listed as out of scope for this slice. +The plan names a separate Cloudflare Pages project, `ipl-anatomy`, for the built output. No site responds at `ipl-anatomy.pages.dev` as of 2026-09-21. Further deployment automation is outside the plan's scope. # Repository and branch of record @@ -118,7 +120,7 @@ The same repository holds [the report extraction platform](/applications/report- # What it realizes -The viewer is the reading end of the [Observation](/glossary/observation.md) to [Exam Finding List](/glossary/exam-finding-list.md) to [Imaging Problem List](/glossary/imaging-problem-list.md) hierarchy described in [the data structures area](/data-structures/hierarchy.md). `viewer_v2` additionally realizes [anatomic location](/glossary/anatomic-location.md) coding as a navigational axis, which is only possible because location codes were added to the findings themselves under [the assignment rules](/data-structures/anatomic-location-assignment-rules.md), and because the Imaging Problem List grouping key on `dev` became the finding code together with the location identifier.[^ipl-dev-claude] +The viewer displays the [Observation](/glossary/observation.md), [Exam Finding List](/glossary/exam-finding-list.md), and [Imaging Problem List](/glossary/imaging-problem-list.md) [hierarchy](/data-structures/hierarchy.md). `viewer_v2` groups navigation by [anatomic location](/glossary/anatomic-location.md), using codes assigned under [the assignment rules](/data-structures/anatomic-location-assignment-rules.md). On `dev`, Imaging Problem List groups use both the finding code and location identifier.[^ipl-dev-claude] [^ipl-main-readme]: imaging-problem-list viewer README, main branch [^ipl-main-claude]: imaging-problem-list domain model notes, main branch diff --git a/knowledge/applications/index.md b/knowledge/applications/index.md index b851af9..3f2949b 100644 --- a/knowledge/applications/index.md +++ b/knowledge/applications/index.md @@ -1,11 +1,11 @@ # Applications -Tools built on the OIDM semantic foundation and data structures: what each one is for, who uses it, what it reads and writes, where it runs, and what is in flight on its branches. Every profile names its repository and branch of record; the full repository listing is in [the repository map](/repositories/repository-map.md). +Applications built on OIDM, with their data, deployment, and development status. See [the repository map](/repositories/repository-map.md) for source repositories and branches. -* [Finding Model Forge](./finding-model-forge.md) - The web application at fmf.oidm.org where contributors author finding model definitions through an AI-assisted wizard and move them through a draft review lifecycle. -* [Finding model catalog site](./finding-models-site.md) - The static Astro site that renders the finding model corpus as browsable pages, building it from the content repository pulled in as a git submodule. -* [Imaging Problem List viewer](./imaging-problem-list-viewer.md) - The deployed browser application that renders Imaging Problem Lists, its three-level drill-down and status sections, and the anatomy-first second-generation viewer being built on the development branch. -* [Report extraction platform](./report-extraction-platform.md) - The extraction, coding, persistence, evaluation, and human-review platform on the imaging-problem-list development branch that turns narrative radiology reports into coded findings. -* [Finding and location coding](./finding-and-location-coding.md) - How extracted findings are assigned OIFM finding codes and RadLex anatomic location codes, as a deterministic index lookup followed by language model term generation and selection. -* [IPL MVP extraction and labeling](./ipl-mvp-extraction.md) - The 2025 four-stage prototype that extracted findings from reports and matched them to finding models by embedding similarity, its measured results, and why it was superseded. -* [Open Imaging Reporting SDK](./reporting-sdk.md) - The vendor-facing reporting toolkit named as a strategic pillar in the 2026 status deck, its 2023 plugin-container precursor, and the fact that no artifact exists. +* [Finding Model Forge](./finding-model-forge.md) - The application at fmf.oidm.org for authoring finding models with AI assistance and reviewing drafts. +* [Finding model catalog site](./finding-models-site.md) - The static Astro catalog built from finding model definitions in a git submodule. +* [Imaging Problem List viewer](./imaging-problem-list-viewer.md) - The deployed Imaging Problem List browser and the undeployed anatomy-first viewer on dev. +* [Report extraction platform](./report-extraction-platform.md) - The platform on imaging-problem-list dev for report extraction, coding, storage, review, and evaluation. +* [Finding and location coding](./finding-and-location-coding.md) - How deterministic lookup and language models assign OIFM finding codes and RadLex location codes. +* [IPL MVP extraction and labeling](./ipl-mvp-extraction.md) - The superseded 2025 report-extraction prototype, its embedding-based finding matches, and measured limits. +* [Open Imaging Reporting SDK](./reporting-sdk.md) - The proposed vendor-facing reporting SDK, its 2023 plugin framework precursor, and the fact that no artifact exists. diff --git a/knowledge/applications/ipl-mvp-extraction.md b/knowledge/applications/ipl-mvp-extraction.md index eaf9443..2adb3e5 100644 --- a/knowledge/applications/ipl-mvp-extraction.md +++ b/knowledge/applications/ipl-mvp-extraction.md @@ -1,10 +1,10 @@ --- type: Project Profile title: IPL MVP extraction and labeling -description: The 2025 four-stage prototype that extracted findings from reports and matched them to finding models by embedding similarity, its measured results, and why it was superseded. +description: The superseded 2025 report-extraction prototype, its embedding-based finding matches, and measured limits. tags: [applications, extraction, llm, embeddings, lineage] status: draft -generated: { by: claude-opus-5/claude-code, at: 2026-09-21T17:00:00Z } +generated: { by: codex/gpt-6, at: 2026-09-21T20:34:50Z } stale_after: 2027-09-21 sources: - id: mvp-readme @@ -27,9 +27,9 @@ sources: # Purpose -This repository was the first end-to-end attempt at the [Imaging Problem List](/glossary/imaging-problem-list.md) goal: read radiology reports, pull findings out of them, and attach each finding to a standard [finding model](/glossary/finding-model.md) definition, so that a finding could be tracked across a patient's studies. Its own framing is longitudinal monitoring of radiologic findings using common data elements.[^mvp-readme] +This was the first end-to-end prototype to extract radiology findings and match them to [finding model](/glossary/finding-model.md) definitions for longitudinal tracking. Its stated goal was an [Imaging Problem List](/glossary/imaging-problem-list.md) using common data elements.[^mvp-readme] -It is superseded. [The report extraction platform](/applications/report-extraction-platform.md) on the `imaging-problem-list` development branch does everything this does and the things this could not. This profile records what it established and what it measured, because both shaped the design that replaced it. The wider sequence is in [extraction approaches](/history/extraction-approaches.md). +[The report extraction platform](/applications/report-extraction-platform.md) on `imaging-problem-list`'s development branch supersedes it. See [extraction approaches](/history/extraction-approaches.md) for the wider history. # What a user does with it @@ -46,7 +46,7 @@ A single configuration file holds the models, the file paths, the extraction pro # The data and the schema -The schema is deliberately thin. A finding is a name and a boolean [presence](/glossary/presence.md); a mapping adds the matched finding model identifier and name, a confidence score, and a status.[^mvp-schemas] +A finding has a name and boolean [presence](/glossary/presence.md). A mapping adds the matched model identifier and name, a confidence score, and a status.[^mvp-schemas] ```python class Finding(BaseModel): @@ -62,22 +62,22 @@ class MappedFinding(BaseModel): status: str ``` -It produces neither an [Exam Finding List](/glossary/exam-finding-list.md) nor an Imaging Problem List, and no FHIR output at all; the README lists generating FHIR Observation resources as a future enhancement.[^mvp-readme] There is no location, no size, no severity, and no [change from prior](/glossary/change-from-prior.md). +The output lacks location, size, severity, and [change from prior](/glossary/change-from-prior.md). It does not produce an [Exam Finding List](/glossary/exam-finding-list.md), Imaging Problem List, or FHIR resources. The README lists FHIR Observation generation as a future enhancement.[^mvp-readme] -The reference set of finding models is a static local JSON file of 15 curated neurological finding models, not a live read from the content repository. That is the file the repository calls its reference, and swapping it for a real service is named as a future enhancement. +The reference set is a local JSON file of 15 curated neurological finding models. Replacing it with a service is listed as a future enhancement. # Language model use -Two calls, both to hosted services.[^mvp-readme] +Extraction and matching call hosted services.[^mvp-readme] -- **Extraction.** A general-purpose model reads each report under a system prompt and returns findings as name and presence pairs. -- **Matching.** Each extracted finding name is embedded, and the embedding is compared by cosine similarity against the embedded names of the 15 reference models. The highest scoring match above a configurable threshold of 0.70 is accepted; everything below it is flagged for manual review. +- A general-purpose model reads each report under a system prompt and returns finding names and presence values. +- Matching compares embeddings of extracted names with embeddings of the 15 reference model names by cosine similarity. It accepts the highest match above the configurable 0.70 threshold and flags lower scores for manual review. -Matching is therefore name-to-name similarity. No index lookup, no candidate generation, and no model judgment about whether the candidate actually fits. +Matching uses name similarity without index lookup, candidate generation, or model judgment of candidate fit. # Architecture -Four standalone Python scripts over JSON Lines files, with Pydantic for validation and cosine similarity over embedding vectors. No service, no database, no web interface. A mockups directory holds interface images for a review and labeling tool that was never built. +Four standalone Python scripts read and write JSON Lines, using Pydantic validation and cosine similarity over embeddings. There is no service, database, or web interface. A mockups directory holds images for a review and labeling interface that was never built. # Results and limits, as measured @@ -93,7 +93,7 @@ The README reports one informal run.[^mvp-readme] That is a match rate of roughly 6 percent. The three matches quoted as successes score 0.778, 0.806, and 0.761. There is no labeled evaluation set and no metrics harness. -The README states its own limitations plainly: binary presence and absence only with no severity or size, manually curated reference models limited to neurological findings, no handling of negated findings, and a static threshold. The negation limitation matters most, because explicit negatives are exactly what an Exam Finding List is supposed to carry. +The README lists binary presence, missing severity and size, a neurological reference set, unsupported negation, and a static threshold as limitations. Unsupported negation prevents the prototype from extracting the explicit negatives expected in an Exam Finding List. # Repository and branch of record @@ -112,11 +112,11 @@ No open issues and no pull requests, open or closed. Status: lineage. All three were pushed within one week and none was merged. -**A persistent FHIR design note.** One file, without a markdown extension, proposing that each finding be tracked as a persistent FHIR Observation with a stable identifier, so that repeat mentions of the same lesion across reports attach to one entity with its own timeline. It sketches a three-step pipeline, extract and map to codes, create or link a resource, then query the finding's timeline, and a patient to resource to dated-observation shape. It adds no code and names two modules that were never written.[^mvp-fhir] The idea is a genuine precursor to the grouping question the current Imaging Problem List answers structurally; see [FHIR mapping](/data-structures/fhir-mapping.md). +**A persistent FHIR design note.** A file without a markdown extension proposes persistent FHIR Observations with stable identifiers, linking repeated mentions of a lesion into one timeline. It sketches extraction and code mapping, resource creation or linking, and timeline queries, organized by patient, resource, and dated observation. It names two unwritten modules and adds no code.[^mvp-fhir] See [FHIR mapping](/data-structures/fhir-mapping.md) for the related grouping question. -**A typed-agent port.** The extraction step rewritten to use a typed agent with a declared result type and automatic retries, replacing a raw client call with manual JSON fence stripping. The schemas are unchanged. The commit was captured mid-draft, with explanatory prose left inside the Python file.[^mvp-pydantic] +**A typed-agent port.** The extraction step uses a typed agent with a declared result type and automatic retries. It replaces a raw client call and manual JSON fence stripping without changing schemas. The commit is a draft, with explanatory prose left in the Python file.[^mvp-pydantic] -**A longitudinal sample series.** The eight generic sample reports replaced with nine reports for one synthetic multiple sclerosis patient spanning 2019 to 2024, from an initial workup through follow-up studies.[^mvp-ms] It pairs with the FHIR design note's track-a-finding-over-time use case. +**A longitudinal sample series.** Nine reports for one synthetic multiple sclerosis patient replace the eight generic reports. They span initial workup and follow-up from 2019 to 2024, matching the FHIR note's longitudinal use case.[^mvp-ms] # What it established diff --git a/knowledge/applications/report-extraction-platform.md b/knowledge/applications/report-extraction-platform.md index d4ff408..d9a5b46 100644 --- a/knowledge/applications/report-extraction-platform.md +++ b/knowledge/applications/report-extraction-platform.md @@ -1,10 +1,10 @@ --- type: Project Profile title: Report extraction platform -description: The extraction, coding, persistence, evaluation, and human-review platform on the imaging-problem-list development branch that turns narrative radiology reports into coded findings. +description: The platform on imaging-problem-list dev for report extraction, coding, storage, review, and evaluation. tags: [applications, extraction, llm, ipl, evaluation, phi] status: draft -generated: { by: claude-opus-5/claude-code, at: 2026-09-21T17:00:00Z } +generated: { by: codex/gpt-6, at: 2026-09-21T20:34:50Z } stale_after: 2027-09-21 sources: - id: dev-readme @@ -62,13 +62,13 @@ sources: # Purpose -The extraction platform turns narrative radiology report text into structured, coded findings that can be assembled into an [Exam Finding List](/glossary/exam-finding-list.md) and then an [Imaging Problem List](/glossary/imaging-problem-list.md). It is the seventh and current attempt at that problem in this project; the six before it, and what each established, are in [extraction approaches](/history/extraction-approaches.md). +The platform extracts structured, coded findings from radiology reports for [Exam Finding Lists](/glossary/exam-finding-list.md) and [Imaging Problem Lists](/glossary/imaging-problem-list.md). It is the project's seventh extraction approach. See [extraction approaches](/history/extraction-approaches.md) for its predecessors. It lives on the `dev` branch of `imaging-problem-list`, 258 commits ahead of `main` as of tip commit `36fa30c`, 2026-07-22. `main` remains the stable data-structure specification and the deployed [viewer](/applications/imaging-problem-list-viewer.md). Nothing described here has merged. # What a user does with it -Four command-line entry points and one web interface.[^dev-readme] +The platform has four command-line entry points and a web interface.[^dev-readme] | Entry point | What it does | |---|---| @@ -78,11 +78,11 @@ Four command-line entry points and one web interface.[^dev-readme] | `finding-extractor-eval` | Score extraction quality against a dataset | | Extractor web interface | Submit a report, browse reports, open an extraction result, and review it | -The documented human path for producing trustworthy output is a four-step loop: batch-generate one candidate extraction file per report, have a reviewer overread and correct each one, copy the corrected file to a gold file name, and validate every gold file against the extraction model.[^review-workflow] Installation and configuration stay with the code. +The review workflow batch-generates a candidate extraction file for each report. A reviewer checks and corrects each file, copies it to a gold filename, and validates it against the extraction model.[^review-workflow] # The data -**Input.** Plain report text. A helper script splits a spreadsheet of reports into one text file each, stripping attestation and boilerplate lines. +Input is plain report text. A helper splits a spreadsheet into one file per report and strips attestations and boilerplate. **Extraction output.** The schema, set out in the original extraction plan, is a finding name, a [presence](/glossary/presence.md) value, an optional location, a list of attributes, and the verbatim report text the finding came from.[^initial-plan] @@ -94,27 +94,25 @@ The documented human path for producing trustworthy output is a four-step loop: | `attributes` | key and value pairs | Standard keys: size, acuity, change from prior, severity, count, morphology | | `report_text` | string | The verbatim quote supporting the finding | -Text that is not a finding is captured separately rather than discarded. +Non-finding text is captured separately. -**Persistence.** SQLite through SQLModel, with Alembic migrations. Reports are deduplicated by the SHA-256 hash of their text. Each extraction run is its own row carrying the report link, the timestamp, the model, the reasoning setting, and the full JSON payload; findings and non-finding text live nested inside that payload. Reviewer edits are stored as separate correction rows rather than by mutating the extraction, in three shapes: propose a new finding, suggest an update to an existing one by index or JSON path, and leave a comment for follow-up.[^dev-readme] +SQLite stores data through SQLModel, with Alembic migrations. SHA-256 hashes deduplicate report text. Each extraction row records its report, timestamp, model, reasoning setting, and JSON payload, including findings and non-finding text. Separate correction rows hold reviewer proposals for new findings, updates by index or JSON path, and follow-up comments.[^dev-readme] -**Coded output.** Coding writes back into the same extraction row, populating each finding's coding bundle and updating the coded and unresolved counts. See [finding and location coding](/applications/finding-and-location-coding.md). +[Finding and location coding](/applications/finding-and-location-coding.md) populates coding bundles in the same extraction row and updates coded and unresolved counts. # Language model use -Extraction is agentic and multi-provider: OpenAI, Anthropic, Google, OpenRouter, Ollama for local models, and vLLM for on-premises deployments.[^dev-readme] A single reasoning knob with five levels is normalized per provider, because each exposes thinking differently, and some local model families need JSON-schema output mode rather than tool calling.[^dev-claude] +Extraction agents support OpenAI, Anthropic, Google, OpenRouter, Ollama for local models, and vLLM for on-premises deployments.[^dev-readme] A five-level reasoning setting maps to each provider's controls. Some local model families require JSON-schema output instead of tool calling.[^dev-claude] Three architectural decisions shape the pipeline.[^dev-claude] -**Chunking.** Long reports are semantically chunked and the chunks extracted concurrently under a bound, then merged and deduplicated. A reviewer sub-agent can flag problems and trigger targeted re-extraction of specific chunks rather than the whole report. - -**Verbatim-quote validation.** Extraction output must carry exact quotes from the report, checked both as an output validator during generation and again afterward. - -**Coding as a separate job.** Mapping findings to standard codes happens after extraction, in its own pipeline, and can be re-run with different models without re-extracting. +- **Chunking.** Long reports are semantically chunked, extracted with bounded concurrency, merged, and deduplicated. A reviewer sub-agent can trigger re-extraction of specific chunks. +- **Verbatim-quote validation.** Exact report quotes are required and validated during generation and afterward. +- **Coding as a separate job.** Coding runs separately after extraction and can be rerun with different models. ## The validator contract -The chunk-level validator reviews one chunk's extraction against that chunk's text and returns a single decision object: the chunk identifier, whether to re-extract, a list of problems, and a rationale. The prompt names six issue patterns that justify re-extraction, and one rule that does not.[^validator] +The validator compares each chunk's extraction with its text. It returns the chunk identifier, a re-extraction decision, problems, and rationale. Six problem types justify re-extraction.[^validator] | Problem type | What it catches | |---|---| @@ -125,37 +123,37 @@ The chunk-level validator reviews one chunk's extraction against that chunk's te | `incorrect_blanket_negative` | A blanket negative mapped to the wrong or over-specific absent findings | | `incorrect_location` | Wrong, too specific, or too general location | -Formatting and style differences alone are not grounds for re-extraction. The evidence boundary is explicit: only the chunk is evidence, and the surrounding chunks are advisory. The prompt gives one worked mapping, "clear lungs" becoming an absent finding named "pulmonary parenchymal abnormality", which is the treatment of blanket negatives that `CDEStaging` first catalogued as a problem; see [extraction approaches](/history/extraction-approaches.md). +Formatting and style alone do not justify re-extraction. Only the chunk is evidence. Surrounding chunks are advisory. The prompt maps "clear lungs" to an absent "pulmonary parenchymal abnormality", addressing the blanket-negative problem first recorded in `CDEStaging`. See [extraction approaches](/history/extraction-approaches.md). # Architecture -FastAPI serves the API. Long work is asynchronous: an extraction or coding request returns 202 with a job identifier, TaskIQ workers pull the job through a Redis broker, and the client polls job status. Configuration is centralized in typed settings under an `IPL_` environment namespace. Observability is Logfire spans plus structured logging, with a stated rule that raw report text and verbatim quotes never appear in span attributes or log fields.[^dev-claude] +FastAPI serves the API. Long work is asynchronous: an extraction or coding request returns 202 with a job identifier, TaskIQ workers pull the job through a Redis broker, and the client polls job status. Typed settings use the `IPL_` environment namespace. Logfire spans and structured logs must exclude raw report text and verbatim quotes.[^dev-claude] Two browser interfaces serve different people. -**The extractor interface** is the connected one, built like the viewer with Alpine.js, Flowbite, and Tailwind from a content delivery network and no build step. It submits reports, lists them, and shows extraction results. +The connected extractor interface, built like the viewer, uses Alpine.js, Flowbite, and Tailwind from a content delivery network, without a build step. It submits reports, lists them, and shows extraction results. -**The standalone extraction reviewer** is a single self-contained HTML file that a non-developer can open locally with no install and no network, walk through an extraction's findings, and mark each one approved, flagged, unsure, or missing with free-text notes; the reviewer returns a zip of per-file review JSON.[^reviewer-plan] Its vanilla JavaScript and absence of any content delivery network are a deliberate exception to the project's frontend conventions, justified by the requirement that it work from a local file with nothing installed.[^reviewer-workflows] Its plan is marked complete, and it has become the primary instrument for extraction quality assurance and for adjudicating gold cases. +The standalone reviewer is one HTML file that a non-developer can open locally without installation or network access. Reviewers mark findings approved, flagged, unsure, or missing, add notes, and export a zip of per-file review JSON.[^reviewer-plan] Its vanilla JavaScript and absence of any content delivery network are a deliberate exception to the project's frontend conventions, justified by the requirement that it work from a local file with nothing installed.[^reviewer-workflows] Its plan is complete. It is the primary tool for extraction quality assurance and gold-case adjudication. # Evaluation -A harness runs a named dataset of reports through extraction, compares the output against ground truth, and reports scores, with optional thresholds on finding F1, presence accuracy, and verbatim checks that make the command exit non-zero when they are not met.[^eval-usage] +The evaluation harness runs extraction over a named report dataset and scores the output against ground truth. Optional thresholds on finding F1, presence accuracy, and verbatim checks cause a nonzero exit when unmet.[^eval-usage] -The design of what it scores was rewritten for honesty. On 2026-07-07, after three and a half months with no implementation, the evaluation redesign was deliberately descoped rather than discarded; the full plan's thresholds, continuous-integration gating, and thirty-case benchmark were named as what made it unstartable.[^evals-redesign] The motivation is a specific failure: a model-selection round on 2026-05-14 made a local model the default on average latency and a thirty percent increase in findings produced, and neither number can tell a real recall gain from a fabricated finding. +On 2026-07-07, the evaluation redesign was deliberately descoped rather than discarded, after three and a half months without implementation. The plan cited thresholds, continuous-integration gates, and a thirty-case benchmark as barriers.[^evals-redesign] A 2026-05-14 selection round had made a local model the default based on average latency and thirty percent more findings. Those measures could not distinguish improved recall from fabricated findings. -Version one keeps four things: a quote-first primary matcher, scoring of attribute *values* rather than attribute presence, frozen run configurations with per-case artifacts for reproducibility, a ten-case gold set adjudicated through the standalone reviewer, and a non-blocking scorecard task. The reviewer plan and the evaluation plan are sequenced rather than parallel; the reviewer exists to produce the gold set the evaluation needs.[^reviewer-workflows] +Version one retains quote-first matching, attribute-value scoring, frozen run configurations with per-case artifacts, a ten-case gold set, and a non-blocking scorecard task. The redesigned evaluation depends on the gold set adjudicated with the standalone reviewer.[^reviewer-workflows] # Local models and protected health information -Protected health information is named as the next use case, and the platform's answer is a local-only mode. A hardening pass completed 2026-04-12 moved enforcement out of the command-line boundary into a shared preflight helper that every entry point calls, closing gaps where the batch command, the API, and the worker could still reach a cloud provider with local-only set; it also detects cloud-suffixed model names in the local runtime.[^local-hardening] The evaluation command is explicitly outside the guarantee, on the stated ground that evaluation datasets are curated fixtures rather than patient data. +Local-only mode supports the planned protected health information use case. A hardening pass completed 2026-04-12 moved enforcement out of the command-line boundary into a shared preflight helper that every entry point calls, closing gaps where the batch command, the API, and the worker could still reach a cloud provider with local-only set. It also detects cloud-suffixed model names in the local runtime.[^local-hardening] The evaluation command is excluded from this guarantee, on the stated ground that evaluation datasets are curated fixtures rather than patient data. -Remaining hardening items were shelved with explicit reopen triggers rather than left as an open-ended list. The example given is detecting a local model alias whose underlying definition points at a cloud source, deferred because the runtime's inspection surface is unstable and parsing model definition files is not authoritative.[^local-tightening] +Deferred hardening items have explicit reopen triggers. Detecting aliases whose definitions point to cloud sources is deferred because runtime inspection is unstable and model-definition parsing is not authoritative.[^local-tightening] -Local model choice itself is under reassessment rather than settled. The plan opened 2026-07-01 proposes reassessing wholesale rather than patching documentation, on the grounds that both the runtime and the model generations have moved since the May 2026 round, and it flags one new candidate family as unverified for radiology extraction because it is tuned for agentic coding.[^mlx] +The reassessment plan opened 2026-07-01 calls for new local model comparisons since the May 2026 round. It identifies one candidate family as unverified for radiology extraction because it is tuned for agentic coding.[^mlx] # Plans in flight -Eight plans are active on `dev`. Facts and dates as stated in each document. +Eight plans are active on `dev`, with statuses and dates recorded below. | Plan | Date | Status | |---|---|---| @@ -168,15 +166,15 @@ Eight plans are active on `dev`. Facts and dates as stated in each document. | Reasoning plumbing simplification | not dated | Fully specified, not started; blocked on a library version bump that would retire roughly 728 lines of per-provider translation code[^thinking] | | Anatomy-first viewer | not dated | Implemented, ready for review; see [the viewer profile](/applications/imaging-problem-list-viewer.md) | -The anatomic location plan that added location codes to the sample Exam Finding Lists is marked complete as of 2026-06-10, with one follow-on open: reconciling generic against specific locations for the same finding across exams, which today produces separate Imaging Problem List groups. Two plans completed in July 2026 are excluded from the table above. +The sample Exam Finding List location-coding plan was completed on 2026-06-10. Reconciling generic and specific locations across exams remains open because they produce separate Imaging Problem List groups. The table excludes two plans completed in July 2026. # Open issues -One, number 1, "Create System of Data Models", asking for a formal model layer for [Observation](/glossary/observation.md), Exam Finding List, and Imaging Problem List with schema export. It is broader than any plan above and unclaimed; see [the data model roadmap](/roadmap/ipl-data-model-system.md). The single open pull request is empty, its design document having been moved to a separate repository. +Issue 1, "Create System of Data Models", requests formal [Observation](/glossary/observation.md), Exam Finding List, and Imaging Problem List models with schema export. It is unclaimed. See [the data model roadmap](/roadmap/ipl-data-model-system.md). The single open pull request is empty after its design document moved to a separate repository. # What it realizes -This platform is where [extraction](/glossary/extraction.md) and [coding](/glossary/coding.md) become operations rather than ideas. It produces the [Observations](/glossary/observation.md) that fill an [Exam Finding List](/data-structures/exam-finding-list.md), attaches [anatomic locations](/glossary/anatomic-location.md) under [the assignment rules](/data-structures/anatomic-location-assignment-rules.md), and resolves [OIFM identifiers](/glossary/oifm.md) against the published registry described in [the content catalog](/semantic-foundation/finding-models/content-catalog.md). The [provenance](/glossary/provenance.md) requirement that each Observation carry a marker of how it was produced is met here by storing the model, the reasoning setting, and the verbatim quote with every extraction. Its place in the layered system is drawn in [the architecture overview](/overview/architecture.md). +[Extraction](/glossary/extraction.md) and [coding](/glossary/coding.md) produce [Observations](/glossary/observation.md) for an [Exam Finding List](/data-structures/exam-finding-list.md). [Anatomic locations](/glossary/anatomic-location.md) follow [the assignment rules](/data-structures/anatomic-location-assignment-rules.md), and [OIFM identifiers](/glossary/oifm.md) resolve against [the published registry](/semantic-foundation/finding-models/content-catalog.md). The [provenance](/glossary/provenance.md) requirement that each Observation carry a marker of how it was produced is met here by storing the model, the reasoning setting, and the verbatim quote with every extraction. See [the architecture overview](/overview/architecture.md). [^dev-readme]: imaging-problem-list README, dev branch [^dev-claude]: imaging-problem-list architecture notes, dev branch diff --git a/knowledge/applications/reporting-sdk.md b/knowledge/applications/reporting-sdk.md index 0cbe934..f6e7f59 100644 --- a/knowledge/applications/reporting-sdk.md +++ b/knowledge/applications/reporting-sdk.md @@ -1,10 +1,10 @@ --- type: Concept title: Open Imaging Reporting SDK -description: The vendor-facing reporting toolkit named as a strategic pillar in the 2026 status deck, its 2023 plugin-container precursor, and the fact that no artifact exists. +description: The proposed vendor-facing reporting SDK, its 2023 plugin framework precursor, and the fact that no artifact exists. tags: [applications, reporting, roadmap, vendors] status: draft -generated: { by: claude-opus-5/claude-code, at: 2026-09-21T17:00:00Z } +generated: { by: codex/gpt-6, at: 2026-09-21T20:34:50Z } stale_after: 2027-09-21 sources: - id: deck @@ -23,44 +23,42 @@ sources: # Status first -No artifact exists. There is no repository, package, specification, issue, or branch for an Open Imaging Reporting SDK in any repository read for this knowledgebase, and the project lead confirms it as concept only. It appears in this bundle as stated direction, and every document that mentions it says so. The glossary entry is [Open Imaging Reporting SDK](/glossary/open-imaging-reporting-sdk.md); the goal itself is recorded in [the 2026 roadmap](/roadmap/roadmap-2026.md). - -What follows is what has actually been said about it, and the two pieces of working code that show what parts of it would look like. +The [Open Imaging Reporting SDK](/glossary/open-imaging-reporting-sdk.md) is concept only, as confirmed by the project lead. No repository, package, specification, issue, or branch for it was found in the repositories read for this knowledgebase. Its goal is recorded in [the 2026 roadmap](/roadmap/roadmap-2026.md). # What the deck says -The January 2026 status update organizes the project into three pillars. The third is applications, and the deck states it as "an Open Imaging Reporting SDK enabling vendor-driven innovation", alongside demonstration applications including an Imaging Problem List browser and early draft-generation tools.[^deck] +The January 2026 status update names "an Open Imaging Reporting SDK enabling vendor-driven innovation" under its applications pillar. It also lists demonstration applications, including an Imaging Problem List browser and early draft-generation tools.[^deck] -The call to action returns to it in the same terms. The deck asks for an ACR-OIDM structured imaging results working group, for structure first with FHIR and other standards following, and for the work to be vendor-driven, giving reporting software development kits from a reporting vendor as the example of what that means. The SDK is therefore named as something vendors would build on or build, not as something the project commits to shipping. +The deck calls for an ACR-OIDM structured imaging results working group, structure before FHIR and other standards, and vendor-driven work. Reporting SDKs from a reporting vendor are its example. It does not commit the project to shipping an SDK. # The 2023 precursor -The idea is not new, and the earliest statement of it is more specific than the deck's. A site post of 2023-07-16 proposes a reporting assistance framework built as a plugin container inside the reporting tool.[^site-framework] +A 2023-07-16 site post proposes a reporting assistance framework as a plugin container inside the reporting tool.[^site-framework] -Its shape, as stated: +The proposal describes this behavior: -- Developers author plugins in an ordinary programming language, the post naming JavaScript. -- The container gives every plugin a standard data structure, defined by OIDM, holding the relevant context: the findings in the current report, prior reports, and the exams being reported on. -- Each plugin inspects that context and issues standard commands back to the reporting system. The four named are inserting generated text into the report, requesting more information from the radiologist, alerting the radiologist to a problem, and sending data to an external system. -- The container re-runs every plugin whenever the context changes, whether because new machine-generated data arrived or because the radiologist edited the report. +- Developers write plugins in a programming language such as JavaScript. +- The container supplies an OIDM-defined structure containing current findings, prior reports, and the exams being reported. +- Plugins inspect that context and issue four kinds of command: insert generated text, request information from the radiologist, alert the radiologist to a problem, or send data to an external system. +- The container reruns every plugin whenever context changes, including after new machine-generated data or a radiologist's edit. -The post describes the result as a suite of assistant scripts continually reviewing the data around a radiologist and issuing commands to assist. That is a plugin architecture rather than a library, which is the main way it differs from what the deck's shorthand suggests. The post is summarized among [the site articles](/history/site-articles.md). +The post describes the result as a suite of assistant scripts continually reviewing the data around a radiologist and issuing commands to assist. That is a plugin architecture rather than a library, which is the main way it differs from what the deck's shorthand suggests. See [the site articles](/history/site-articles.md). # The About page promise -The About page, last modified 2023-06-21, commits the project to maintaining programming interfaces in at least three languages, TypeScript and JavaScript, Python, and C#.[^site-about] Two of the three were begun and both are now lineage; no C# library was ever written. See [lineage repositories](/history/lineage-repositories.md). +The About page, last modified 2023-06-21, commits to programming interfaces in TypeScript and JavaScript, Python, and C#.[^site-about] The first two were begun and are now [lineage repositories](/history/lineage-repositories.md). No C# library was written. -The libraries that do exist, `findingmodel` with its anatomic locations package and `med-ontology-lookup`, are semantic-foundation tools. They resolve definitions and codes. They are not a reporting toolkit and are not presented as one; see [the terminology lookup profile](/semantic-foundation/terminologies/med-ontology-lookup.md). +`findingmodel`, its anatomic locations package, and `med-ontology-lookup` resolve definitions and codes. They provide no reporting toolkit. See [the terminology lookup profile](/semantic-foundation/terminologies/med-ontology-lookup.md). # The one working precedent -`CDETemplateDemo`, written in 2023 and untouched since, is the only code in the project that does anything a reporting SDK would have to do. It takes a [CDE-labeled FHIR Observation](/glossary/cde-labeled-fhir-observation.md), flattens its components into a dictionary keyed by display name, derives boolean flags including explicit present and absent flags, and renders the result through a text template so that one template produces a full sentence for a present finding and a short clause for an absent one.[^cde-demo] It was demonstrated at SIIM in June 2023 as a web service. +`CDETemplateDemo`, written in 2023 and unchanged since, is the project's only working precedent for reporting SDK functionality. It flattens a [CDE-labeled FHIR Observation](/glossary/cde-labeled-fhir-observation.md) into a dictionary keyed by component display name, derives boolean flags including presence and absence, and renders a text template. One template produces a full sentence for a present finding and a short clause for an absent one.[^cde-demo] It was demonstrated as a web service at SIIM in June 2023. -That is structured data to report prose, without a language model. It is the half of the 2023 framework that the plugins would call when they insert generated text. The full account is in [CDE template rendering](/history/cde-template-rendering.md). +The demo generates prose without a language model, demonstrating the rendering needed by plugins that insert text. See [CDE template rendering](/history/cde-template-rendering.md). # What would have to exist -Stated only as what the sources describe, not as a design. The 2023 post names a standard report-context data structure defined by OIDM; today the closest thing to it is the [Exam Finding List](/data-structures/exam-finding-list.md), which covers the findings of one exam, and the [Imaging Problem List](/data-structures/imaging-problem-list.md), which covers a patient's history. Neither carries the current report text, the order, or the prior reports that the post's context structure and the About page's wider scope both call for, and the [Imaging Persona](/glossary/imaging-persona.md), which is the deck's name for that surrounding clinical context, is itself concept only. The rendering half has a working precedent and no maintained implementation. The plugin container half has no implementation at all. +Stated only as what the sources describe, not as a design. The proposed context structure includes current report text, the order, and prior reports. The [Exam Finding List](/data-structures/exam-finding-list.md) covers one exam's findings, and the [Imaging Problem List](/data-structures/imaging-problem-list.md) covers patient history, but neither carries that full context. The [Imaging Persona](/glossary/imaging-persona.md), the deck's name for surrounding clinical context, is also concept only. Rendering has a working precedent but no maintained implementation. The plugin container has no implementation. # Where this is recorded diff --git a/knowledge/data-structures/anatomic-location-assignment-rules.md b/knowledge/data-structures/anatomic-location-assignment-rules.md index ac700e8..ad71073 100644 --- a/knowledge/data-structures/anatomic-location-assignment-rules.md +++ b/knowledge/data-structures/anatomic-location-assignment-rules.md @@ -1,10 +1,10 @@ --- type: Reference title: Anatomic location assignment rules -description: The precedence, laterality, bilateral, and specificity rules that decide which anatomic location is attached to a finding in an Exam Finding List, migrated from the imaging-problem-list development branch. +description: Migrated rules for assigning anatomy, laterality, and specificity to Exam Finding List observations. tags: [data-structures, anatomic-location, laterality, coding, migrated] status: draft -generated: { by: claude-opus-5/claude-code, at: 2026-09-21T17:00:00Z } +generated: { by: codex/gpt-6, at: 2026-09-21T20:53:02Z } sources: - id: anat-rules resource: https://github.com/openimagingdata/imaging-problem-list/blob/36fa30c7383bf687d7bc17815282a93e123a56cb/docs/anatomic-location-assignment-rules.md @@ -19,7 +19,7 @@ sources: # About this document -This is a near-verbatim migration of `docs/anatomic-location-assignment-rules.md` from the `imaging-problem-list` repository's development branch.[^anat-rules] The rules were agreed for a correction pass over the `sample_data/example2` findings and are stated there as "the intended spec for tuning the automated location-coding step later." Wording and structure follow the original; only terminology and links have been adjusted for this knowledgebase. +Migrated near-verbatim from `docs/anatomic-location-assignment-rules.md` on `imaging-problem-list`'s development branch.[^anat-rules] Wording and structure follow the original; only terminology and links have been adjusted for this knowledgebase. The rules were agreed for a correction pass over the `sample_data/example2` findings and are "the intended spec for tuning the automated location-coding step later." The subject is how an `anatomicLocation` of `{locationId, locationDisplay}`, a [RadLex identifier](/glossary/radlex-id.md) from the [`anatomic-locations`](https://pypi.org/project/anatomic-locations/) index, is assigned to each [observation](/data-structures/observation.md) in an [Exam Finding List](/data-structures/exam-finding-list.md).[^anat-pkg] diff --git a/knowledge/data-structures/exam-finding-list.md b/knowledge/data-structures/exam-finding-list.md index ac7ef05..347a4c7 100644 --- a/knowledge/data-structures/exam-finding-list.md +++ b/knowledge/data-structures/exam-finding-list.md @@ -1,10 +1,10 @@ --- type: Data Structure title: Exam Finding List -description: The per-exam structure that holds every finding declared present or absent on one imaging exam, its full field list on both branches, where its contents come from, and the FHIR and IHE encodings it is meant to reach. +description: Findings from one exam, their fields and sources, and planned FHIR and IHE encodings. tags: [data-structures, exam-finding-list, loinc, fhir, provenance] status: draft -generated: { by: claude-opus-5/claude-code, at: 2026-09-21T17:00:00Z } +generated: { by: codex/gpt-6, at: 2026-09-21T20:34:50Z } sources: - id: ipl-main resource: https://github.com/openimagingdata/imaging-problem-list/blob/06f64a7893b444b761dc069ed86140a081195eac/README.md @@ -31,13 +31,13 @@ sources: # Definition -"In the context of an imaging exam, a list of the findings declared as present/absent on that exam."[^ipl-main] An [Exam Finding List](/glossary/exam-finding-list.md) is the second level of [the hierarchy](/data-structures/hierarchy.md): every [observation](/data-structures/observation.md) from one exam, wrapped in that exam's identity. +"In the context of an imaging exam, a list of the findings declared as present/absent on that exam."[^ipl-main] An [Exam Finding List](/glossary/exam-finding-list.md) combines an exam's identity with its [observations](/data-structures/observation.md). It is the second level of [the hierarchy](/data-structures/hierarchy.md). -The specification states two requirements. The list "must also have basic information (keyed by a curated list of [LOINC](/glossary/loinc.md) codes) about what exam this is." And "the same finding type may be declared as present multiple times; each time is a separate entry in the EFL."[^ipl-main] +The imaging-problem-list README states two requirements. The list "must also have basic information (keyed by a curated list of [LOINC](/glossary/loinc.md) codes) about what exam this is." And "the same finding type may be declared as present multiple times; each time is a separate entry in the EFL."[^ipl-main] # Fields -The structure is JSON. The table below is the stable specification on `main`, with the one development-branch addition marked.[^ipl-main-claude][^efl-sample] +The JSON fields follow the stable specification on `main`, with the development branch's addition marked.[^ipl-main-claude][^efl-sample] | Field | Type | Required | Notes | |---|---|---|---| @@ -59,41 +59,41 @@ The structure is JSON. The table below is the stable specification on `main`, wi `anatomicLocation` is the only field the development branch adds. Data produced against the stable specification does not carry it, and the stable branch's own sample files do not have it. -A trimmed real record, with a field-by-field walkthrough, is in [the Exam Finding List example](/references/exam-finding-list-example.md). +See [the Exam Finding List example](/references/exam-finding-list-example.md) for a sample record and field walkthrough. ## The exam header -The LOINC code is not decoration. It is the key that lets the problem list say which kind of exam an observation came from, and it is what makes "was this looked for on a chest study?" answerable. The ten sample exams use seven distinct LOINC codes covering radiography, computed tomography, ultrasound, and magnetic resonance. The requirement is stated as a *curated* list of LOINC codes, which is the same need the [exam types](/semantic-foundation/exam-types/) area exists to serve; no such curated list has been published. +The LOINC code identifies the exam type, allowing queries such as "was this looked for on a chest study?" The ten sample exams use seven LOINC codes covering radiography, computed tomography, ultrasound, and magnetic resonance. The imaging-problem-list README requires a curated list of codes, the purpose of the [exam types](/semantic-foundation/exam-types/) work. No such list has been published. ## Repeatable findings -One entry per instance is a deliberate rule, not an artifact. "The same finding type may appear multiple times in one exam (e.g., multiple kidney stones). Each instance gets a separate entry with its own `observationId`."[^ipl-main-claude] The count of a finding on an exam is therefore the number of entries. The [Imaging Problem List](/data-structures/imaging-problem-list.md) re-collapses them by source report, so a patient timeline shows one row per exam rather than three rows for three stones. +One entry per instance is a deliberate rule, not an artifact. "The same finding type may appear multiple times in one exam (e.g., multiple kidney stones). Each instance gets a separate entry with its own `observationId`."[^ipl-main-claude] The number of entries gives the count. The [Imaging Problem List](/data-structures/imaging-problem-list.md) groups them by source report for display as one timeline row per exam. # Where the contents come from -The specification is explicit that an Exam Finding List has two possible provenances: it "can be generated by LLM from an existing report or generated live during exam time; each Observation should include some kind of [provenance](/glossary/provenance.md) marker."[^ipl-main] No provenance field exists in the current format. The marker is a stated requirement without an implementation. +An Exam Finding List "can be generated by LLM from an existing report or generated live during exam time; each Observation should include some kind of [provenance](/glossary/provenance.md) marker."[^ipl-main] No provenance field exists in the current format. The marker is a stated requirement without an implementation. -The deck widens the sources further, listing dictation, artificial intelligence tools, and interpretation-time interfaces as the three origins of the findings in one list.[^deck] That is the case the provenance marker is for: an observation produced by an AI tool and an observation dictated by a radiologist would sit side by side in the same list and need to be told apart. The [FHIR lineage](/data-structures/fhir-mapping.md) solved the same problem with `status`, `preliminary` for the machine and `final` for the radiologist. +The deck lists dictation, artificial intelligence tools, and interpretation-time interfaces as sources of findings.[^deck] Provenance would distinguish AI-produced and radiologist-dictated observations in the same list. The [FHIR lineage](/data-structures/fhir-mapping.md) used `status`, with `preliminary` for the machine and `final` for the radiologist. -In practice today the sample lists were generated from a working spreadsheet. `generate_efl_from_excel.py` reads a worksheet with columns Exam Date, Exam Type, Exam Code, Finding, OIDM Finding Model Name, OIDM FMID, Presence OIFMA_ID, Present/Absent, and Text, groups rows by exam, and writes one file per exam with a fresh UUID as the `diagnosticReportId`.[^excel-script] The live path, from report text through extraction and coding, is the [report extraction platform](/applications/report-extraction-platform.md). +The sample lists come from a spreadsheet. `generate_efl_from_excel.py` reads these columns: Exam Date, Exam Type, Exam Code, Finding, OIDM Finding Model Name, OIDM FMID, Presence OIFMA_ID, Present/Absent, and Text. It groups rows by exam and writes one file per exam with a fresh UUID as the `diagnosticReportId`.[^excel-script] The [report extraction platform](/applications/report-extraction-platform.md) extracts and codes findings from report text. # The diagram -The README carries a hand-drawn figure, `exam-finding-list.png`, that makes the case in one picture.[^efl-diagram] On the left is the FINDINGS section of a chest computed tomography report with two kinds of highlight: green over the positive statements the list should capture, including biapical scarring, subsegmental atelectasis, nine separately numbered pulmonary nodules, a calcified granuloma, ectatic pulmonary arteries, coronary artery calcifications, a pacing device, colonic diverticular disease, thoracic dextroscoliosis, a T10 compression fracture, and degenerative changes; and pink over the explicit negatives, "No pleural effusion", "No enlarged supraclavicular, axillary, mediastinal or hilar lymph nodes", and "No pericardial effusion". +The README's hand-drawn `exam-finding-list.png` shows a chest computed tomography report beside a findings table.[^efl-diagram] The report's FINDINGS section highlights positive statements in green. These include biapical scarring, subsegmental atelectasis, nine numbered pulmonary nodules, a calcified granuloma, ectatic pulmonary arteries, coronary artery calcifications, a pacing device, colonic diverticular disease, thoracic dextroscoliosis, a T10 compression fracture, and degenerative changes. Pink marks the explicit negatives: "No pleural effusion", "No enlarged supraclavicular, axillary, mediastinal or hilar lymph nodes", and "No pericardial effusion". -On the right is a table headed "Exam Finding List" with three columns, Finding, CDE Set ID, and Count. Pulmonary nodule carries a count of 8, subsegmental atelectasis 2, and the four negatives carry a count of 0, which is the point: a zero count is a recorded observation of absence, not a missing row. Starred rows mark findings that had no entry in the finding ontology at the time the figure was drawn. The identifiers in the figure are RadElement `RDES####` [CDE set](/glossary/cde-set.md) codes rather than OIFM identifiers, which dates it to before the finding model corpus took that role. +The table is headed "Exam Finding List" with Finding, CDE Set ID, and Count columns. Pulmonary nodule has a count of 8, subsegmental atelectasis 2, and the four negatives 0. Zero records an observation of absence. Starred rows mark findings missing from the ontology at the time. The figure uses RadElement `RDES####` [CDE set](/glossary/cde-set.md) codes, predating the use of OIFM identifiers. # FHIR and IHE The documented FHIR encoding is "**DiagnosticReport** containing a list of **Observation** objects, with a finding code on each Observation and a list of components with attribute codes and values (especially present/absent and change from prior)."[^ipl-main] One [FHIR DiagnosticReport](/glossary/fhir-diagnostic-report.md), one Observation per finding, attributes as components. -That mapping is documented and implemented nowhere. No FHIR resource classes exist in the extraction platform's source, and a search across it for `DiagnosticReport` or `fhir` returns nothing. The only real FHIR documents in the repository are two *input* samples, and those do not use the component pattern the specification prescribes, because the pattern describes the output. Full detail is in [FHIR mapping](/data-structures/fhir-mapping.md). +That mapping is documented and implemented nowhere. The extraction platform's source code contains no FHIR resource classes or references to `DiagnosticReport` or `fhir`. Its only FHIR documents are two input samples, and those do not use the documented component pattern, because that pattern describes the output. See [FHIR mapping](/data-structures/fhir-mapping.md). -The deck adds a second target: an Exam Finding List "connects to IHE Imaging Diagnostic Report (IDR) FHIR representation."[^deck] The [IDR profile](/glossary/imaging-diagnostic-report.md) is not mentioned anywhere in the `imaging-problem-list` repository, on any branch. The alignment is a stated goal, and the places where the two models would have to be reconciled are set out in [IHE IDR alignment](/data-structures/ihe-idr-alignment.md). +The deck states that an Exam Finding List "connects to IHE Imaging Diagnostic Report (IDR) FHIR representation."[^deck] No branch of `imaging-problem-list` mentions the [IDR profile](/glossary/imaging-diagnostic-report.md). See [IHE IDR alignment](/data-structures/ihe-idr-alignment.md) for the differences to resolve in pursuing this goal. # Schema status -There is no published JSON Schema. Every sample file opens with a `$schema` URL pointing into the repository at `schema/exam-problem-list-schema.json`, and the repository's own notes say plainly that it "doesn't exist yet."[^ipl-main-claude] The structure is defined by the prose above, by the sample data, and by the two scripts that write and read it. A formal model layer with JSON Schema export is [issue 1](https://github.com/openimagingdata/imaging-problem-list/issues/1); see [the IPL data model system roadmap](/roadmap/ipl-data-model-system.md). +There is no published JSON Schema. Every sample's `$schema` URL points to `schema/exam-problem-list-schema.json`, which the repository notes say "doesn't exist yet."[^ipl-main-claude] Prose, samples, and the two scripts that write and read the structure define it. [Issue 1](https://github.com/openimagingdata/imaging-problem-list/issues/1) requests formal models with JSON Schema export. See [the IPL data model system roadmap](/roadmap/ipl-data-model-system.md). [^ipl-main]: imaging-problem-list README, main branch [^ipl-main-claude]: imaging-problem-list domain model notes, main branch diff --git a/knowledge/data-structures/fhir-mapping.md b/knowledge/data-structures/fhir-mapping.md index 686d0f6..ce2ed37 100644 --- a/knowledge/data-structures/fhir-mapping.md +++ b/knowledge/data-structures/fhir-mapping.md @@ -4,7 +4,7 @@ title: FHIR mapping description: Everything OIDM has documented about representing its data structures in FHIR, from the CDE-labeled Observation pattern of the lineage repositories to the current Exam Finding List and Imaging Problem List mappings, and the plain fact that no current code emits FHIR. tags: [data-structures, fhir, observation, cde, mapping] status: draft -generated: { by: claude-opus-5/claude-code, at: 2026-09-21T17:00:00Z } +generated: { by: codex/gpt-6, at: 2026-09-21T20:53:02Z } sources: - id: ipl-main resource: https://github.com/openimagingdata/imaging-problem-list/blob/06f64a7893b444b761dc069ed86140a081195eac/README.md @@ -40,15 +40,15 @@ sources: # The stance -OIDM's position on FHIR is stated in the deck's call to action as two words: **structure first**, with FHIR and other standards following.[^deck] The project builds "functional data structures that can then be expressed in FHIR and other standards" rather than starting from the standard and working back. That ordering explains the state of everything below: the mappings are written down carefully, they have precedent in working examples, and no current code produces them. +The deck calls for **structure first**, followed by FHIR and other standards.[^deck] OIDM builds "functional data structures that can then be expressed in FHIR and other standards". The mappings are written down carefully, they have precedent in working examples, and no current code produces them. # The founding pattern: the CDE-labeled FHIR Observation -The project began from FHIR rather than beside it. Its About page defines the unit of radiology data as a "[CDE-labeled FHIR Observation](/glossary/cde-labeled-fhir-observation.md) object", and the 2023 post that set the direction works the idea through with a pulmonary nodule.[^site-about][^site-findings] +OIDM began with FHIR. Its About page defines the unit of radiology data as a "[CDE-labeled FHIR Observation](/glossary/cde-labeled-fhir-observation.md) object". A 2023 post illustrates it with a pulmonary nodule.[^site-about][^site-findings] ## The worked example -`FHIRSamples` holds four hand-built resources for a lung cancer screening scenario. They remain the clearest statement of the pattern. +`FHIRSamples` holds four hand-built resources for a lung cancer screening scenario. **The report.** A [FHIR DiagnosticReport](/glossary/fhir-diagnostic-report.md) with `category` coded in SNOMED CT and HL7 v2 table 0074, `code` coded as [LOINC](/glossary/loinc.md) `87279-6` for a screening chest computed tomography, an inline `ImagingStudy`, `result` referencing three Observations, and a `conclusion` with a SNOMED `conclusionCode`.[^fhir-report] @@ -67,15 +67,15 @@ The project began from FHIR rather than beside it. Its About page defines the un } ``` -Three patterns come out of it. +The example demonstrates three patterns. **Set code, element code, value code.** The chain from `RDES195` to `RDE1717` to `RDE1717.1`, all through one coding system, is what "CDE-labeled" means concretely. The current [Exam Finding List](/data-structures/exam-finding-list.md) uses the identical chain with a different vocabulary: `OIFM` identifier, `OIFMA` identifier, dot-suffixed value code. -**Status carries provenance.** The example has the same finding twice, once as an AI observation with `status` `preliminary` and once as the radiologist's with `status` `final`. The two resources are otherwise identical. Distinguishing a machine-produced finding from a confirmed one is a field value, not a separate resource type.[^fhir-ai] That is the closest precedent for the "provenance marker" the Exam Finding List specification asks for, and it is also exactly the ACR priority the deck names, correlating artificial intelligence observations against radiologist observations.[^deck] +**Status carries provenance.** The same finding appears twice, as an AI observation with `status` `preliminary` and a radiologist's observation with `status` `final`. The resources are otherwise identical.[^fhir-ai] Distinguishing a machine-produced finding from a confirmed one is a field value, not a separate resource type. That is the closest precedent for the "provenance marker" the Exam Finding List specification asks for. It also supports the ACR priority named in the deck, correlating AI and radiologist observations.[^deck] **Assessments are second-order observations.** A fourth resource carries the Lung-RADS category as a component of `RDES267`, and its `derivedFrom` points at both the imaging study **and** the radiologist's finding Observation.[^fhir-lungrads] An assessment built on top of a finding is an Observation referring to an Observation. That is the precedent for any future modelling of the reporting-system categories the roadmap names. -Two absences in the example are worth recording. No `bodySite` appears on the finding Observations, because anatomy was implicit in the CDE definition rather than explicit on the resource. No Patient resource is included; `subject.reference` is a bare reference. +The finding Observations omit `bodySite` because anatomy was implicit in the CDE definition. No Patient resource is included. `subject.reference` is a bare reference. ## The Python model @@ -96,9 +96,9 @@ Field by field, the Exam Finding List mapping is close to mechanical. `diagnosti # What is actually implemented -Nothing. A search for `DiagnosticReport` or `fhir` across the extraction platform's entire source tree on the development branch returns no matches. No FHIR resource classes exist anywhere in the current Python code, and no OIDM tool emits a FHIR resource. +Nothing. A search for `DiagnosticReport` or `fhir` across the extraction platform's entire source tree on the development branch returns no matches. The development branch's extraction source has no FHIR resource classes and no tool that emits FHIR resources. -The only real FHIR documents in the current repositories are two **input** samples, `powerscribe-fhir.json` and `chest-ct-fhir.json`, which are pre-transformation DiagnosticReports carrying contained `Patient`, `ImagingStudy`, and `Observation` resources.[^powerscribe] They are worth reading because they differ from the prescribed output in two instructive ways. Their finding Observations code `bodySite` with [RadLex](/glossary/radlex.md), which the prescribed mapping does not mention. And their components carry DICOM codes for series, instance, and SOP identifiers rather than presence and change-from-prior attribute codes. That is not a contradiction: the component pattern the specification describes applies to the Exam Finding List output, not to the reporting system's input. +The current repositories contain two FHIR input samples, `powerscribe-fhir.json` and `chest-ct-fhir.json`. These pre-transformation DiagnosticReports contain `Patient`, `ImagingStudy`, and `Observation` resources.[^powerscribe] Their finding Observations code `bodySite` with [RadLex](/glossary/radlex.md), which the prescribed mapping does not mention. Their components carry DICOM codes for series, instance, and SOP identifiers. That is not a contradiction: the documented component pattern applies to the Exam Finding List output, not to the reporting system's input. | Piece | Status | |---|---| @@ -110,7 +110,7 @@ The only real FHIR documents in the current repositories are two **input** sampl # The open question underneath -The component pattern that every OIDM encoding uses is the one IHE's Imaging Diagnostic Report profile declines to use. IDR states that `Observation.component` "is not used", because FHIR limits components to values "not useful on their own" and using it "has the potential to significantly complicate queries", preferring a root Observation whose `hasMember` references the associated observations. Since the deck names IDR as the Exam Finding List's target representation, that disagreement sits directly under the mapping. It is set out in [IHE IDR alignment](/data-structures/ihe-idr-alignment.md), along with the other points where the two models differ. +The component pattern that every OIDM encoding uses is the one IHE's Imaging Diagnostic Report profile declines to use. IHE's Imaging Diagnostic Report profile states that `Observation.component` "is not used". FHIR limits components to values "not useful on their own", and using them "has the potential to significantly complicate queries". IDR instead uses a root Observation whose `hasMember` references associated observations. The deck names IDR as the Exam Finding List's target, so OIDM's component mappings need reconciliation. See [IHE IDR alignment](/data-structures/ihe-idr-alignment.md). [^ipl-main]: imaging-problem-list README, main branch [^ipl-claude-dev]: imaging-problem-list domain model notes, dev branch diff --git a/knowledge/data-structures/hierarchy.md b/knowledge/data-structures/hierarchy.md index dfa00cd..90fc26e 100644 --- a/knowledge/data-structures/hierarchy.md +++ b/knowledge/data-structures/hierarchy.md @@ -1,10 +1,10 @@ --- type: Concept title: The data structure hierarchy -description: The four-level ladder from Observation to Exam Finding List to Imaging Problem List to Imaging Persona, what each level adds, how identifiers thread through it, and how far each level is built. +description: The four data structure levels, their identifiers, and implementation status. tags: [data-structures, hierarchy, observation, exam-finding-list, imaging-problem-list, imaging-persona] status: draft -generated: { by: claude-opus-5/claude-code, at: 2026-09-21T17:00:00Z } +generated: { by: codex/gpt-6, at: 2026-09-21T20:34:50Z } sources: - id: deck resource: https://gamma.app/docs/Open-Imaging-Data-Model-2026-Status-Update:-Realizing-Object-Oriented-Imaging-Results-yfxzx4q9zssafal @@ -25,7 +25,7 @@ sources: # The ladder -The second of OIDM's three strategic pillars is a hierarchy of data structures, described in the January 2026 status deck as "the atomic Observation, then the Exam Finding List, then the Imaging Problem List, then the 'Imaging Persona'."[^deck] Each level is the one below it, collected and re-keyed. +The second of OIDM's three strategic pillars is a data structure hierarchy. The January 2026 status deck describes it as "the atomic Observation, then the Exam Finding List, then the Imaging Problem List, then the 'Imaging Persona'."[^deck] Each level is the one below it, collected and re-keyed. | Level | Scope | What it adds | Key it is organized by | |---|---|---|---| @@ -34,25 +34,25 @@ The second of OIDM's three strategic pillars is a hierarchy of data structures, | [Imaging Problem List](/data-structures/imaging-problem-list.md) | one patient | time: every observation of a finding across every exam | the finding | | [Imaging Persona](/data-structures/imaging-persona.md) | one patient | clinical context around the imaging: orders, baseline, specialized and surgical history | the patient | -The turn happens at level three. An [Exam Finding List](/glossary/exam-finding-list.md) is organized by exam, the way radiology reports have always been organized. An [Imaging Problem List](/glossary/imaging-problem-list.md) is "organized by finding, meaning pathology, rather than by chronology,"[^deck] which is what makes the deck's core query, "was finding X present on the most recent study?", a lookup rather than a search through a stack of reports. +The turn happens at level three. An [Exam Finding List](/glossary/exam-finding-list.md) is organized by exam, the way radiology reports have always been organized. An [Imaging Problem List](/glossary/imaging-problem-list.md) is "organized by finding, meaning pathology, rather than by chronology,"[^deck] allowing a lookup for the deck's query, "was finding X present on the most recent study?" -![From one observation to a patient's imaging history: an Observation carries a finding code, anatomic location, and attribute values; one exam's worth of observations roll up into an Exam Finding List; one patient's Exam Finding Lists re-key by finding into an Imaging Problem List; that list, surrounded by clinical context, becomes an Imaging Persona.](./hierarchy.svg) +[![From one observation to a patient's imaging history: an Observation carries a finding code, anatomic location, and attribute values; one exam's worth of observations roll up into an Exam Finding List; one patient's Exam Finding Lists re-key by finding into an Imaging Problem List; that list, surrounded by clinical context, becomes an Imaging Persona.](./hierarchy.svg)](./hierarchy.svg) -*Diagram source: `hierarchy.excalidraw` beside this document, generated by `tools/diagrams/build_hierarchy.py`.* +*Diagram source: `hierarchy.excalidraw` beside this document (click the image for full size), generated by `tools/diagrams/build_hierarchy.py`.* # What each level adds -**Observation.** The deck states it as "what + where + attributes": a finding tag, an [anatomic location](/glossary/anatomic-location.md), and lesion characteristics, carrying presence indicators, change from prior, and measurements, in "a universal structure across systems."[^deck] It has no identity outside the list that contains it. +**Observation.** The deck describes "what + where + attributes" in "a universal structure across systems."[^deck] A finding tag, an [anatomic location](/glossary/anatomic-location.md), and lesion characteristics record presence, change from prior, and measurements. Its identity is local to the list that contains it. -**Exam Finding List.** "In the context of an imaging exam, a list of the findings declared as present/absent on that exam."[^ipl-main] Two of its properties are stated as requirements rather than conveniences. It "must also have basic information (keyed by a curated list of LOINC codes) about what exam this is," and "the same finding type may be declared as present multiple times; each time is a separate entry."[^ipl-main] The second rule is why three kidney stones are three observations rather than one observation with a count of three. +**Exam Finding List.** "In the context of an imaging exam, a list of the findings declared as present/absent on that exam."[^ipl-main] It "must also have basic information (keyed by a curated list of LOINC codes) about what exam this is," and "the same finding type may be declared as present multiple times; each time is a separate entry."[^ipl-main] Three kidney stones therefore produce three observations. **Imaging Problem List.** "In the context of a patient, the list of findings that have been described as present/absent in exams of the patient."[^ipl-main] Each entry holds every observation of that finding, each carrying its source report, exam date, exam type, and presence. On the development branch the grouping key is finding code **and** anatomic location, so "one finding code at distinct sites (e.g. ascending vs. abdominal aortic aneurysm) yields separate entries."[^ipl-claude-dev] -**Imaging Persona.** Named in the deck and nowhere else. It is the goal of surrounding the problem list with clinical context, medical baseline, specialized history, and surgical history.[^deck] No specification or sample exists. +**Imaging Persona.** The deck proposes adding clinical context, medical baseline, specialized history, and surgical history to the problem list.[^deck] No other project document names it, and no specification or sample exists. # How identifiers thread through -Nothing in the hierarchy embeds a definition. Every level refers to the [semantic foundation](/semantic-foundation/) by code, which is what lets two systems agree on a finding without sharing a database. +The structures refer to definitions in the [semantic foundation](/semantic-foundation/) by code. They do not embed definitions. Shared codes let systems agree on a finding without sharing a database. | Identifier | Form | Where it enters | Example | |---|---|---|---| @@ -62,7 +62,7 @@ Nothing in the hierarchy embeds a definition. Every level refers to the [semanti | [RadLex identifier](/glossary/radlex-id.md) | `RID####`, with sided structures composite | `anatomicLocation.locationId` | `RID42239`, and `RID39518_RID5824` for a left shoulder | | [LOINC](/glossary/loinc.md) code | LOINC part number | `examInfo.studyLoincCode`, and `exam_type_code` on a problem list observation | `26158-6` | -The letter block inside an OIFM identifier is the [organization code](/glossary/oidm-organization-code.md) of the contributing organization, so a single exam's findings routinely mix codes from several contributors. The five-finding worked example does exactly that, drawing on `GMTS`, `OIDM`, and `CDE` identifiers in one list.[^efl-sample] +The letter block in an OIFM identifier is the contributor's [organization code](/glossary/oidm-organization-code.md). One exam can use several contributors' codes. The five-finding worked example combines `GMTS`, `OIDM`, and `CDE` identifiers.[^efl-sample] # Implementation status @@ -74,7 +74,7 @@ The letter block inside an OIFM identifier is the [organization code](/glossary/ | Imaging Persona | Concept only | Four named context categories in the deck. No artifact. | | FHIR encoding of any level | Documented only | The mappings are written down and implemented nowhere. See [FHIR mapping](/data-structures/fhir-mapping.md). | -The absence at the bottom of the ladder is the one the project has flagged itself. Issue 1 asks for Pydantic models for Observation, Exam Finding List, and Imaging Problem List, with "extensive annotation to generate JSON schemas" and camelCase aliases on export against snake_case attributes internally.[^issue1] Until that lands, the structures are defined by prose, by sample data, and by the scripts that read and write them. The stated direction is collected in [the IPL data model system roadmap](/roadmap/ipl-data-model-system.md). +Issue 1 requests Pydantic models for Observation, Exam Finding List, and Imaging Problem List, with "extensive annotation to generate JSON schemas" and camelCase export aliases for snake_case attributes.[^issue1] Prose, samples, and scripts currently define the structures. See [the IPL data model system roadmap](/roadmap/ipl-data-model-system.md). [^deck]: "Open Imaging Data Model 2026 Status Update: Realizing Object-Oriented Imaging Results", January 2026 [^ipl-main]: imaging-problem-list README, main branch diff --git a/knowledge/data-structures/ihe-idr-alignment.md b/knowledge/data-structures/ihe-idr-alignment.md index 487edf1..95a7833 100644 --- a/knowledge/data-structures/ihe-idr-alignment.md +++ b/knowledge/data-structures/ihe-idr-alignment.md @@ -4,7 +4,7 @@ title: IHE IDR alignment description: What the IHE Imaging Diagnostic Report profile specifies for encoding findings as FHIR Observations, the deck's claim that the Exam Finding List connects to it, and the fact that no OIDM repository mentions it. tags: [data-structures, ihe, idr, fhir, alignment, goal] status: draft -generated: { by: claude-opus-5/claude-code, at: 2026-09-21T17:00:00Z } +generated: { by: codex/gpt-6, at: 2026-09-21T20:53:02Z } sources: - id: idr-extract resource: https://github.com/RSNA/ACR-RSNA-CDEs/blob/44836c19f4e025cf1684a015ed5cc63c29eaf7f3/notes/ihe-idr-extract.md @@ -22,9 +22,9 @@ sources: # Status first -This is a stated goal, not existing work. The January 2026 deck's slide on the [Exam Finding List](/data-structures/exam-finding-list.md) ends with one line: it "connects to IHE Imaging Diagnostic Report (IDR) FHIR representation."[^deck] That is the entire claim from the OIDM side. Searching the `imaging-problem-list` repository for "IHE" or "IDR" returns nothing on any branch, and no OIDM repository references the profile. +IDR alignment is a goal. The January 2026 deck says the [Exam Finding List](/data-structures/exam-finding-list.md) "connects to IHE Imaging Diagnostic Report (IDR) FHIR representation."[^deck] That is the entire claim from the OIDM side. No branch of `imaging-problem-list` mentions "IHE" or "IDR", and no OIDM repository references the profile. -What does exist is a careful reading of the profile from the allied vocabulary work: a 72-page public-comment supplement, read directly and extracted on the `next-gen-2026` branch of `ACR-RSNA-CDEs`.[^idr-extract][^idr-supplement] That extract is the source for everything below, and it was written to test a different model, the next-generation CDE vocabulary, against the profile. It is the best available statement of what alignment would involve. +The `next-gen-2026` branch of `ACR-RSNA-CDEs` contains an extract of the 72-page public-comment supplement.[^idr-extract][^idr-supplement] The extract tests the next-generation CDE vocabulary against the profile and is the source for the account below. It is the best available statement of what alignment would involve. # What the profile is @@ -42,7 +42,7 @@ The profile's own illustration: "the presence of a tumor is a finding, a recorde # The observation grammar -Every IDR observation has a target entity and content, split across five slots. This is the grammar an [Exam Finding List](/data-structures/exam-finding-list.md) would have to fit. +Every IDR observation has a target entity and content in five slots. An [Exam Finding List](/data-structures/exam-finding-list.md) would need to map to them. | Slot | FHIR location | Rule stated in the supplement | |---|---|---| @@ -58,9 +58,9 @@ For grouped findings, IDR says that "Observation.code of the root finding shall # Where OIDM and IDR differ -Four differences are recorded in the extract. None of them has been worked through on the OIDM side; all are listed there as items to raise during public comment. +The extract records four unresolved differences as items to raise during public comment. OIDM has not worked through them. -**Components against hasMember.** IDR states that `Observation.component` "is not used", because FHIR limits components to values "not useful on their own" and using it "has the potential to significantly complicate queries". Every OIDM encoding that carries attributes uses components: the documented Exam Finding List mapping says so explicitly, "a list of components with attribute codes and values", and both lineage FHIR samples implement it that way.[^ipl-main] This is the sharpest of the four, because it is the mechanism rather than a vocabulary choice. See [FHIR mapping](/data-structures/fhir-mapping.md). +**Components against hasMember.** IDR states that `Observation.component` "is not used", because FHIR limits components to values "not useful on their own" and using it "has the potential to significantly complicate queries". All OIDM attribute encodings use components. The Exam Finding List mapping specifies "a list of components with attribute codes and values", as implemented by both lineage FHIR samples.[^ipl-main] This is the sharpest of the four, because it is the mechanism rather than a vocabulary choice. See [FHIR mapping](/data-structures/fhir-mapping.md). **The word "observation" means different things.** IDR's observation is "a feature or characteristic that is visible in an image", closer to a single attribute value than to an OIDM [Observation](/glossary/observation.md), which is a whole finding with its location and attributes. IDR's "finding" is narrower too: it is the presence or absence determination, not the named entity. The extract flags this as a vocabulary collision, and notes that the next-generation vocabulary work moved away from the word "observation" for exactly this reason. @@ -70,7 +70,11 @@ Four differences are recorded in the extract. None of them has been worked throu # What IDR is asking -The extract also records three questions IDR puts to the RadElement side, which are requirements on any alignment: what extensibility is permitted when encoding [CDE sets](/glossary/cde-set.md), and in particular whether additional sub-observations may be included; what the coding system identifier for RadElement codes is; and whether a presence value belongs in the parent of a grouped observation or as its first child.[^idr-extract] +The extract also records three questions IDR puts to the RadElement side, which are requirements on any alignment:[^idr-extract] + +- What extensions are permitted when encoding [CDE sets](/glossary/cde-set.md), particularly additional sub-observations? +- What is the coding system identifier for RadElement codes? +- Does presence belong in the parent of a grouped observation or its first child? # Where this stands @@ -81,7 +85,7 @@ The extract also records three questions IDR puts to the RadElement side, which | The differences are identified | Four, listed above, all recorded as items to raise, none resolved | | Anything is built | No | -The profile extract itself is not migrated into this bundle; it lives on the `next-gen-2026` branch of `ACR-RSNA-CDEs` and is linked above. The unresolved items are carried in [open questions](/roadmap/open-questions.md). +The extract remains on `ACR-RSNA-CDEs`'s `next-gen-2026` branch. It has not been migrated into this bundle. See [open questions](/roadmap/open-questions.md) for the unresolved items. [^idr-extract]: IHE IDR Phase II extract, ACR-RSNA-CDEs next-gen-2026 branch [^idr-supplement]: IHE Imaging Diagnostic Report Phase II public comment draft, 4 March 2026 diff --git a/knowledge/data-structures/imaging-persona.md b/knowledge/data-structures/imaging-persona.md index ac893c2..8453e83 100644 --- a/knowledge/data-structures/imaging-persona.md +++ b/knowledge/data-structures/imaging-persona.md @@ -4,7 +4,7 @@ title: Imaging Persona description: "The fourth level of the hierarchy, a stated goal with no artifact: the clinical context around a patient's Imaging Problem List, and the life-cycle uses the 2026 deck gives for it." tags: [data-structures, imaging-persona, roadmap, concept-only] status: draft -generated: { by: claude-opus-5/claude-code, at: 2026-09-21T17:00:00Z } +generated: { by: codex/gpt-6, at: 2026-09-21T20:34:50Z } sources: - id: deck resource: https://gamma.app/docs/Open-Imaging-Data-Model-2026-Status-Update:-Realizing-Object-Oriented-Imaging-Results-yfxzx4q9zssafal @@ -19,11 +19,11 @@ sources: # Status first -The [Imaging Persona](/glossary/imaging-persona.md) is a goal. It is named in the January 2026 status deck as the fourth level of [the data structure hierarchy](/data-structures/hierarchy.md) and appears nowhere else in the project. No schema, no sample, no code. Everything below is what the deck states.[^deck] +The [Imaging Persona](/glossary/imaging-persona.md) is a goal named only in the January 2026 status deck as the fourth level of [the data structure hierarchy](/data-structures/hierarchy.md).[^deck] No schema, no sample, no code. Everything below is what the deck states.[^deck] # What the deck describes -The deck's slide is headed "Imaging Persona (big picture)" and gives four categories of context that would surround a patient's [Imaging Problem List](/data-structures/imaging-problem-list.md).[^deck] +The slide "Imaging Persona (big picture)" names four context categories for a patient's [Imaging Problem List](/data-structures/imaging-problem-list.md).[^deck] | Category | Contents named | |---|---| @@ -32,11 +32,11 @@ The deck's slide is headed "Imaging Persona (big picture)" and gives four catego | Specialized history | oncology, treatments | | Surgical history | operative records, pathology, implants | -None of that is imaging results. The Imaging Problem List is the structure the project builds; the persona is the argument that a problem list on its own does not answer the questions radiology actually gets asked. Three of the four categories come from the electronic medical record rather than from radiology, which makes the persona as much an integration claim as a data structure. +These categories add context beyond imaging results. Three of the four categories come from the electronic medical record rather than from radiology, which makes the persona as much an integration claim as a data structure. # Why: the imaging life cycle -The deck argues for it through a separate slide on what the Imaging Problem List enables at each stage of the imaging life cycle. The uses named there are the ones that need context the problem list does not carry.[^deck] +A separate slide names uses of the Imaging Problem List across the imaging life cycle that need additional context.[^deck] | Stage | Uses the deck names | |---|---| @@ -45,19 +45,19 @@ The deck argues for it through a separate slide on what the Imaging Problem List | Interpretation | findings-oriented views in the picture archiving system, real-time quality control | | Post-interpretation | passive screening, research, outcomes | -Read against the four categories, the dependency is concrete. Magnetic resonance safety screening is a question about implants, which is surgical history. Prior authorization is a question about the order and the indication. Rules-based protocoling needs both the prior imaging findings and the clinical question. Passive screening needs the medical baseline to know whether a finding matters for this patient. A problem list alone answers none of these; a problem list plus that context answers all four. +Read against the four categories, the dependency is concrete. Magnetic resonance safety screening is a question about implants, which is surgical history. Prior authorization needs the order and indication, which is clinical context. Rules-based protocoling needs prior findings and the clinical question. Passive screening needs the medical baseline to assess a finding's relevance to the patient. A problem list alone answers none of these; a problem list plus that context answers all four. -The 2024 site post on the data model made a related claim earlier and in wider terms, listing observations, current report text, imaging studies, patient, order, prior studies, tracked observations, and electronic health record data as the elements the model organizes.[^site-structure] The persona is that list narrowed to the patient-context half and given a name. +The 2024 site post describes the model as organizing observations, current report text, imaging studies, patient, order, prior studies, tracked observations, and electronic health record data.[^site-structure] The persona corresponds to the patient context in that list. # A related unimplemented idea -One adjacent design note exists in the repositories, on an unmerged branch of the early extraction prototype. `FHIR_Example_Structure` sketches longitudinal persistence of findings: each finding becomes "a **tracked entity** with a FHIR ID that persists," so a second report describing the same liver lesion links to the existing resource and adds a new dated value rather than creating a second finding.[^ipl-mvp-fhir] The note's worked timeline shows one lesion at 1.6 cm, 2.1 cm, and 2.8 cm across three reports, and its query examples are "show me the timeline for liver lesion" and "how has the renal calculus changed?". +An unmerged branch of the early extraction prototype contains `FHIR_Example_Structure`, a design note on persistent findings. Each finding becomes "a **tracked entity** with a FHIR ID that persists," so later reports of the same lesion add dated values to the existing resource.[^ipl-mvp-fhir] Its timeline shows one liver lesion at 1.6 cm, 2.1 cm, and 2.8 cm across three reports. Example queries are "show me the timeline for liver lesion" and "how has the renal calculus changed?". -It is a different idea from the persona. It addresses identity of a finding over time, which the current [Imaging Problem List](/data-structures/imaging-problem-list.md) approximates by grouping on finding code and location rather than by tracking a lesion. It is recorded here because it is the only written treatment anywhere in the repositories of persisting a patient's imaging story as durable resources, which is the substrate a persona would need. It sits on a single-commit branch of a superseded prototype and was never merged; see [IPL-MVP extraction](/applications/ipl-mvp-extraction.md). +It is a different idea from the persona. It addresses identity of a finding over time, which the current [Imaging Problem List](/data-structures/imaging-problem-list.md) approximates by grouping on finding code and location rather than by tracking a lesion. This is the repositories' only written design for durable patient imaging resources, a possible basis for a persona. It remains on an unmerged, single-commit branch of a superseded prototype. See [IPL-MVP extraction](/applications/ipl-mvp-extraction.md). # What would have to be decided -Nothing about the persona has been specified, so this section states only what the deck leaves open rather than proposing answers. The deck does not say whether the persona is a stored structure or a query-time assembly, which systems own each of the four context categories, how it would be encoded, or who would maintain it. Those questions are carried in [open questions](/roadmap/open-questions.md) and the direction in [the 2026 roadmap](/roadmap/roadmap-2026.md). +Nothing about the persona has been specified, so this section states only what the deck leaves open rather than proposing answers. The deck leaves storage versus query-time assembly, ownership of each context category, encoding, and maintenance unspecified. See [open questions](/roadmap/open-questions.md) and [the 2026 roadmap](/roadmap/roadmap-2026.md). [^deck]: "Open Imaging Data Model 2026 Status Update", January 2026 [^ipl-mvp-fhir]: FHIR_Example_Structure, IPL-MVP-ExtractionAndLabeling, Persistent_FHIR_Resources branch diff --git a/knowledge/data-structures/imaging-problem-list.md b/knowledge/data-structures/imaging-problem-list.md index a6653c7..a976edb 100644 --- a/knowledge/data-structures/imaging-problem-list.md +++ b/knowledge/data-structures/imaging-problem-list.md @@ -1,10 +1,10 @@ --- type: Data Structure title: Imaging Problem List -description: The per-patient structure that reorganizes a patient's imaging findings by finding rather than by date, its fields, its grouping key, the temporal status computed over it, and what it is meant to become in FHIR. +description: A patient's observations grouped by finding, with fields, grouping rules, computed status, and planned FHIR encoding. tags: [data-structures, imaging-problem-list, anatomic-location, fhir] status: draft -generated: { by: claude-opus-5/claude-code, at: 2026-09-21T17:00:00Z } +generated: { by: codex/gpt-6, at: 2026-09-21T20:34:50Z } sources: - id: ipl-main resource: https://github.com/openimagingdata/imaging-problem-list/blob/06f64a7893b444b761dc069ed86140a081195eac/README.md @@ -37,9 +37,9 @@ sources: # Definition -"In the context of a patient, the list of findings that have been described as present/absent in exams of the patient."[^ipl-main] An [Imaging Problem List](/glossary/imaging-problem-list.md) is the third level of [the hierarchy](/data-structures/hierarchy.md) and the project's signature structure. It takes every [Exam Finding List](/data-structures/exam-finding-list.md) for one patient and re-keys the [observations](/data-structures/observation.md) inside them by finding. +"In the context of a patient, the list of findings that have been described as present/absent in exams of the patient."[^ipl-main] An [Imaging Problem List](/glossary/imaging-problem-list.md) groups [observations](/data-structures/observation.md) from a patient's [Exam Finding Lists](/data-structures/exam-finding-list.md) by finding. It is the third level of [the hierarchy](/data-structures/hierarchy.md). -That single change of key is the whole point. The deck states the core query the structure exists to answer: "was finding X present on the most recent study?"[^deck] Against a stack of reports organized by date that question is a search. Against a problem list it is a lookup. +Grouping by finding allows a lookup for the deck's core query: "was finding X present on the most recent study?"[^deck] # Fields @@ -64,23 +64,23 @@ That single change of key is the whole point. The deck states the core query the | `observations[].anatomicLocation` | `{locationId, locationDisplay}` | **development branch only**; repeats the finding's location | | `observations[].reportText` | string | the verbatim span, carried through so the timeline reads without fetching the source exams | -Note the field naming: the problem list uses snake_case for its own fields while carrying camelCase forward on the fields copied from the Exam Finding List, so `finding_type_code` and `anatomicLocation` sit in the same object. Two worked entries are in [the Imaging Problem List example](/references/imaging-problem-list-example.md). +The problem list uses snake_case for its own fields and retains camelCase for fields copied from the Exam Finding List. Thus `finding_type_code` and `anatomicLocation` share an object. See two worked entries in [the Imaging Problem List example](/references/imaging-problem-list-example.md). # The grouping key -On the stable branch, observations group by finding code alone. On the development branch the key is the pair of finding code and [anatomic location](/glossary/anatomic-location.md) identifier, with the rationale stated in the repository's own domain notes: +The stable branch groups by finding code. The development branch pairs that code with the [anatomic location](/glossary/anatomic-location.md) identifier. Its domain notes explain: > Groups observations by finding type **and** anatomic location (`locationId`) across exams, preserving references to each source report, so one finding code at distinct sites (e.g. ascending vs. abdominal aortic aneurysm) yields separate entries; consumers key on the IPL finding `id`, not `finding_type_code`.[^ipl-claude-dev] -The generator implements it directly, keying on the tuple of finding code and location identifier, with observations that have no location grouping under a null location.[^ipl-script] +The generator uses this tuple, grouping observations without a location under a null location.[^ipl-script] -The effect on real data is large. The same ten exams for one synthetic patient produce 98 problem list entries when grouped by finding code alone and 123 when grouped by finding code and location.[^ipl-sample] The observation count is unchanged; the grouping is finer. +The same ten exams for one synthetic patient produce 98 entries grouped by code alone and 123 grouped by code and location.[^ipl-sample] The observation count is unchanged. -This is why the documented rule is that consumers key on `id`. A finding code is no longer unique within a list. +Consumers key on `id` because a finding code is no longer unique within a list. # Temporal status -Status is **computed at display time, not stored**. No status field exists in the file. The viewer derives it per finding from the observation list.[^viewer-app] +The viewer computes each finding's status from its observations at display time. The file has no status field.[^viewer-app] 1. No observations gives **Unknown**. 2. Sort the observations by exam date, most recent first. @@ -89,46 +89,48 @@ Status is **computed at display time, not stored**. No status field exists in th 5. If the most recent is not `present` but some earlier observation was, the status is **Resolved**. 6. If no observation was ever `present`, the status is **Never**. -The viewer sections a patient's list under those four headings and offers them as a filter. +The viewer groups and filters findings by those four statuses. -Two things follow. **Never is not the same as absent from the list.** A finding with only absent observations is a finding that was looked for on named exams and not found, and the list records that it was looked for. **The scheme has four states, not three.** The stable branch's prose still describes an older three-state model of Present, Resolved, and Not Present or Ruled Out.[^ipl-main-claude] That wording is stale relative to the code on both branches, which computes four. The discrepancy is recorded in [the Imaging Problem List glossary entry](/glossary/imaging-problem-list.md). +A finding with only absent observations records that it was checked for on specific exams and not found. A finding missing from the list carries no such record. + +The stable branch's prose describes an older model with three states: Present, Resolved, and Not Present or Ruled Out.[^ipl-main-claude] That wording is stale relative to the code on both branches, which computes four. See [the Imaging Problem List glossary entry](/glossary/imaging-problem-list.md) for the discrepancy. # What the structure is for -The deck lists four properties beyond the core query.[^deck] +The deck lists these properties and a demonstration.[^deck] -- **Organized by finding, meaning pathology, rather than by chronology.** The reorganization is the feature. -- **Precision filtering by way of anatomy-embedded definitions.** This is what the grouping-key change on the development branch buys, and what the anatomy-aware viewer renders. -- **Dynamic tracking of appearance, disappearance, and change.** The computed status is the first cut at this; measurement trends over time are not modelled. +- Organized by finding, meaning pathology, rather than by chronology. The grouping key implements this. +- Filtering through anatomy-embedded definitions. The development branch's grouping key and viewer support this. +- Tracking appearance, disappearance, and change. Computed status provides an initial implementation. Measurement trends over time are not modelled. - A public demonstration at `imaging-problem-list.pages.dev`. -The uses the deck names across the imaging life cycle, from protocoling to passive screening, are covered under [Imaging Persona](/data-structures/imaging-persona.md), because they draw on context beyond imaging results. +See [Imaging Persona](/data-structures/imaging-persona.md) for uses such as protocoling and passive screening that need context beyond imaging results. # The pipeline diagram -The README carries `imaging-problem-list-process.png`, a hand-drawn pipeline in three stages.[^ipl-diagram] On the left, Report 1 through Report n feed an **Extractor**, drawn as a neural network and fed from below by a database labelled "Findings (CDE 'stub' defs)". The Extractor emits one Findings List per report. Those feed an **Assembler**, also drawn as a neural network, which emits the Imaging Problem List on the right. +The README's hand-drawn `imaging-problem-list-process.png` shows Report 1 through Report n feeding an Extractor, drawn as a neural network.[^ipl-diagram] A database labelled "Findings (CDE 'stub' defs)" also feeds the Extractor. Its Findings Lists feed an Assembler, also drawn as a neural network, which produces the Imaging Problem List. -The output panel is the argument. Four finding cards, Pulmonary Nodule, Pulmonary Apical Scarring, Subsegmental Atelectasis, and Pleural Effusion, each list their observations by dated exam. Pulmonary Nodule shows "Chest CT 2020-11-23 (x8)", the multiplicity collapsed into one dated row. Pleural Effusion shows five rows of which four are marked "(absent)", which is the negative-as-data claim drawn out: a finding whose entire history is absence still earns a card. +Four output cards list observations by dated exam: Pulmonary Nodule, Pulmonary Apical Scarring, Subsegmental Atelectasis, and Pleural Effusion. Pulmonary Nodule shows "Chest CT 2020-11-23 (x8)", combining repeated findings into one row. Pleural Effusion has five rows, four marked "(absent)". The list also retains findings whose entire history records absence. -The Assembler as drawn is a learned component. The implementation is not: `generate_ipl_from_efls.py` is deterministic aggregation.[^ipl-script] +The diagram depicts a learned Assembler, but `generate_ipl_from_efls.py` uses deterministic aggregation.[^ipl-script] # FHIR The documented encoding is "**Report** containing a list of **Condition** objects (labeled with the finding identifier), where each Condition object also contains a list of **Observation** objects which document which exams (**DiagnosticReports**) the finding type has been documented on, including the exam date and exam type (LOINC type)."[^ipl-main] One [FHIR Condition](/glossary/fhir-condition.md) per problem list entry, with the observation trail underneath it. -The mapping is documented and implemented nowhere. No Condition resource is produced by any code in the repository. Its container is also called a "Report," which is not a FHIR resource name. See [FHIR mapping](/data-structures/fhir-mapping.md). +The mapping is unimplemented. No code in the repository produces a Condition resource. Its container is called a "Report," which is not a FHIR resource name. See [FHIR mapping](/data-structures/fhir-mapping.md). # Known limitation -Grouping by exact location identifier is too strict when the same problem is described at different granularity on different exams. The assignment rules state the gap: +Exact location matching splits a problem described at different levels of detail across exams. The assignment rules state: > Parent/child or generic-vs-specific pairs for the *same finding code across exams* (e.g. "lung" vs "lower lobe of right lung"; "kidney" vs "left kidney") still produce separate IPL groups. Deciding whether such observations are the same problem or distinct is the **anatomic-compatibility reconciliation** step.[^anat-rules] -That step is named in the anatomic location plan and has not been started. It is the most concrete open problem in the structure. The full precedence, laterality, and specificity rules that produce the locations are in [anatomic location assignment rules](/data-structures/anatomic-location-assignment-rules.md). +The anatomic location plan names this step, but work has not started. See [anatomic location assignment rules](/data-structures/anatomic-location-assignment-rules.md) for precedence, laterality, and specificity rules. # How it is produced -`generate_ipl_from_efls.py` reads a directory of `*_efl.json` files, sorted by filename so the chronology follows, takes the patient block from the first one, groups every finding by the key above, and writes one `ipl.json`.[^ipl-script] It is ordinary Python with no model calls. The rendering side is the [Imaging Problem List viewer](/applications/imaging-problem-list-viewer.md); the sample data it runs on is described in [sample data](/data-structures/sample-data.md). +`generate_ipl_from_efls.py` reads `*_efl.json` files sorted by filename to follow chronology. It takes the first file's patient block, groups findings by the key above, and writes one `ipl.json` without model calls.[^ipl-script] See the [Imaging Problem List viewer](/applications/imaging-problem-list-viewer.md) and its [sample data](/data-structures/sample-data.md). [^ipl-main]: imaging-problem-list README, main branch [^ipl-main-claude]: imaging-problem-list domain model notes, main branch diff --git a/knowledge/data-structures/index.md b/knowledge/data-structures/index.md index 0071c8a..f355d3a 100644 --- a/knowledge/data-structures/index.md +++ b/knowledge/data-structures/index.md @@ -1,14 +1,14 @@ # Data structures -The second OIDM layer: the objects that carry what was seen on an exam, keyed to the semantic foundation by code. The ladder runs Observation, Exam Finding List, Imaging Problem List, Imaging Persona. Start with the hierarchy. +OIDM records findings as Observations, groups them into Exam Finding Lists and Imaging Problem Lists, and proposes adding clinical context through the Imaging Persona. Codes link these structures to the semantic foundation. Start with the hierarchy. -* [The data structure hierarchy](./hierarchy.md) - The four-level ladder from Observation to Exam Finding List to Imaging Problem List to Imaging Persona, what each level adds, how identifiers thread through it, and how far each level is built. +* [The data structure hierarchy](./hierarchy.md) - The four data structure levels, their identifiers, and implementation status. * [Observation](./observation.md) - The atomic unit of OIDM: one finding, seen or explicitly excluded, on one exam, with its location and attribute values, as it exists today inside an Exam Finding List and in the extraction pipeline. -* [Exam Finding List](./exam-finding-list.md) - The per-exam structure that holds every finding declared present or absent on one imaging exam, its full field list on both branches, where its contents come from, and the FHIR and IHE encodings it is meant to reach. -* [Imaging Problem List](./imaging-problem-list.md) - The per-patient structure that reorganizes a patient's imaging findings by finding rather than by date, its fields, its grouping key, the temporal status computed over it, and what it is meant to become in FHIR. +* [Exam Finding List](./exam-finding-list.md) - Findings from one exam, their fields and sources, and planned FHIR and IHE encodings. +* [Imaging Problem List](./imaging-problem-list.md) - A patient's observations grouped by finding, with fields, grouping rules, computed status, and planned FHIR encoding. * [Imaging Persona](./imaging-persona.md) - The fourth level of the hierarchy, a stated goal with no artifact: the clinical context around a patient's Imaging Problem List, and the life-cycle uses the 2026 deck gives for it. -* [Anatomic location assignment rules](./anatomic-location-assignment-rules.md) - The precedence, laterality, bilateral, and specificity rules that decide which anatomic location is attached to a finding in an Exam Finding List, migrated from the imaging-problem-list development branch. -* [Technical imaging findings](./technical-imaging-findings.md) - A draft catalog of modality-specific technical finding language, CT attenuation, MR signal, enhancement, ultrasound echogenicity, and nuclear medicine, with the search-term guidance for coding each, migrated from the imaging-problem-list development branch. +* [Anatomic location assignment rules](./anatomic-location-assignment-rules.md) - Migrated rules for assigning anatomy, laterality, and specificity to Exam Finding List observations. +* [Technical imaging findings](./technical-imaging-findings.md) - A migrated draft catalog of modality-specific findings and search terms for coding them. * [FHIR mapping](./fhir-mapping.md) - Everything OIDM has documented about representing its data structures in FHIR, from the CDE-labeled Observation pattern of the lineage repositories to the current Exam Finding List and Imaging Problem List mappings, and the plain fact that no current code emits FHIR. * [IHE IDR alignment](./ihe-idr-alignment.md) - What the IHE Imaging Diagnostic Report profile specifies for encoding findings as FHIR Observations, the deck's claim that the Exam Finding List connects to it, and the fact that no OIDM repository mentions it. -* [Sample data](./sample-data.md) - The synthetic patients, exams, and findings that make up the Exam Finding List and Imaging Problem List sample data, what changes between branches, where the viewer bundles live, and how to regenerate everything. +* [Sample data](./sample-data.md) - Synthetic exam and problem list samples, branch differences, viewer bundles, and generation scripts. diff --git a/knowledge/data-structures/observation.md b/knowledge/data-structures/observation.md index 21eb7e1..29a46fa 100644 --- a/knowledge/data-structures/observation.md +++ b/knowledge/data-structures/observation.md @@ -4,7 +4,7 @@ title: Observation description: "The atomic unit of OIDM: one finding, seen or explicitly excluded, on one exam, with its location and attribute values, as it exists today inside an Exam Finding List and in the extraction pipeline." tags: [data-structures, observation, presence, extraction] status: draft -generated: { by: claude-opus-5/claude-code, at: 2026-09-21T17:00:00Z } +generated: { by: codex/gpt-6, at: 2026-09-21T20:34:50Z } sources: - id: deck resource: https://gamma.app/docs/Open-Imaging-Data-Model-2026-Status-Update:-Realizing-Object-Oriented-Imaging-Results-yfxzx4q9zssafal @@ -37,9 +37,9 @@ sources: # What an observation is -An [observation](/glossary/observation.md) is one finding, seen or explicitly excluded, on one exam. The deck frames it as "what + where + attributes": a finding tag, an [anatomic location](/glossary/anatomic-location.md), and lesion characteristics, carrying presence indicators, change from prior, and measurements, in "a universal structure across systems."[^deck] +An [observation](/glossary/observation.md) is one finding, seen or explicitly excluded, on one exam. The deck describes "what + where + attributes" in "a universal structure across systems."[^deck] A finding tag, an [anatomic location](/glossary/anatomic-location.md), and lesion characteristics record presence, change from prior, and measurements. -Two of those three parts point at the [semantic foundation](/semantic-foundation/). The "what" is a [finding model](/glossary/finding-model.md) identifier. The "where" is a RadLex identifier. Only the "how" is local to the observation, and even there each [attribute](/glossary/attribute.md) and each chosen value carry codes from the finding model's own definition. +The [semantic foundation](/semantic-foundation/) supplies the "what" as a [finding model](/glossary/finding-model.md) identifier and the "where" as a RadLex identifier. The "how" records local characteristics, with each [attribute](/glossary/attribute.md) and chosen value coded from the finding model's definition. A negative observation is an observation. Absence is recorded the same way presence is, with a presence attribute whose value is `absent`, because a radiologist stating "no fracture" has actively looked and not found. That commitment is what makes the [Imaging Problem List](/data-structures/imaging-problem-list.md) able to distinguish a finding nobody checked for from one that was checked for and ruled out. @@ -79,21 +79,21 @@ Each entry in `attributes[]` carries four fields: `attributeCode`, an `OIFMA_[A- } ``` -That record is the first finding of a left shoulder radiograph in the sample data.[^efl-sample] A full list in context is in [the Exam Finding List example](/references/exam-finding-list-example.md). +This is the first finding from a sample left shoulder radiograph.[^efl-sample] See [the Exam Finding List example](/references/exam-finding-list-example.md) for a full list. ## Presence and the dot codes [Presence](/glossary/presence.md) is the attribute every observation carries. Its values in the sample data are `present`, `absent`, and `indeterminate`. -Value codes are positional, not semantic: a value code is the attribute identifier plus a dot and the value's zero-based position in the finding model's value list. Consuming code in the extraction repository documents the standard ordering as "`.1` = present, `.0` = absent."[^ipl-claude-dev] That ordering holds for the large majority of published finding models but not all of them, so a consumer that hard-codes `.1` as present is wrong for the minority that order their values differently. The [presence glossary entry](/glossary/presence.md) records the counts and the conflict. +Value codes are positional, not semantic: a value code is the attribute identifier plus a dot and the value's zero-based position in the finding model's value list. The extraction repository documents the standard ordering as "`.1` = present, `.0` = absent."[^ipl-claude-dev] Most published finding models follow that order, but hard-coding `.1` as present misreads those that do not. The [presence glossary entry](/glossary/presence.md) records the counts and the conflict. ## Repeat instances -"The same finding type may appear multiple times in one exam (e.g., multiple kidney stones). Each instance gets a separate entry with its own `observationId`."[^ipl-main-claude] Count is therefore expressed by the number of observations, not by a count attribute, at the Exam Finding List level. The problem list re-collapses them: several observations of one finding from one exam display as a single dated row. +"The same finding type may appear multiple times in one exam (e.g., multiple kidney stones). Each instance gets a separate entry with its own `observationId`."[^ipl-main-claude] The number of observations gives the count at the Exam Finding List level. The problem list displays repeated observations of one finding from one exam as a single dated row. # The extraction-time observation -The extraction platform on the development branch has its own Pydantic model for a finding as language models produce it, before any code assignment. It is a different object from the Exam Finding List entry and is worth reading as the pre-coding form of the same thing.[^extract-models] +The extraction platform on the development branch has its own Pydantic model for language model output before code assignment.[^extract-models] It is a different object from the Exam Finding List entry and is worth reading as the pre-coding form of the same thing. | Model | Fields | |---|---| @@ -102,17 +102,17 @@ The extraction platform on the development branch has its own Pydantic model for | `FindingAttribute` | `key`, `value` | | `ExtractedReportFindings` | `exam_info`, `findings[]`, `non_finding_text[]` | -Three differences from the coded form matter. +It differs from the coded form in three ways. -**The presence vocabulary is wider.** `presence` is a `Literal["present", "absent", "indeterminate", "possible"]`, and the design note explains the fourth value: "'possible' covers hedged language like 'raising the possibility of', 'suggestive of', 'cannot exclude'."[^extract-models][^extract-plan] There is no `possible` in the finding model presence value set, so the extra value has no coded counterpart and must be resolved before an Exam Finding List entry can be written. +**Presence has a fourth value.** `presence` is a `Literal["present", "absent", "indeterminate", "possible"]`. The design note explains that "'possible' covers hedged language like 'raising the possibility of', 'suggestive of', 'cannot exclude'."[^extract-models][^extract-plan] Finding models have no presence code for `possible`, so it must be resolved before writing an Exam Finding List entry. -**Location is free text, not a code.** `FindingLocation` carries a constrained `body_region`, a free-text `specific_anatomy`, and a laterality. Turning that into a `locationId` is the job of the separate post-extraction coding pass, governed by [the anatomic location assignment rules](/data-structures/anatomic-location-assignment-rules.md). +**Location is free text, not a code.** `FindingLocation` carries a constrained `body_region`, a free-text `specific_anatomy`, and a laterality. A separate coding pass assigns a `locationId` using [the anatomic location assignment rules](/data-structures/anatomic-location-assignment-rules.md). -**Attributes are loose key-value pairs.** `FindingAttribute` is a `key` and a `value` as strings, with standard keys named in the model docstring: size, acuity, change from prior, severity, count, and morphology.[^extract-models] Those are not OIFMA codes and carry no value codes. +**Attributes have no codes.** `FindingAttribute` holds `key` and `value` strings. The model docstring names size, acuity, change from prior, severity, count, and morphology as standard keys.[^extract-models] -The model is also where coding results land. A `FindingCodingBundle` on each finding records the chosen OIFM identifier, the method used (`fast-path`, `llm`, or `unresolved`), a reason when unresolved, and the candidate codes that were considered. The pipeline that produces it is described in [finding and location coding](/applications/finding-and-location-coding.md). +A `FindingCodingBundle` on each finding records the chosen OIFM identifier, the method used (`fast-path`, `llm`, or `unresolved`), a reason when unresolved, and candidate codes considered. See [finding and location coding](/applications/finding-and-location-coding.md) for the pipeline. -The mapping from the extraction model to the Exam Finding List entry is therefore not a rename. It is a coding step: +Converting extraction output to an Exam Finding List entry requires these coding steps: | Extraction field | Exam Finding List field | How | |---|---|---| @@ -124,13 +124,13 @@ The mapping from the extraction model to the Exam Finding List entry is therefor # The FHIR precedent -The 2024 reference implementation modelled an observation as a FHIR `Observation` directly. Its docstring states "the Observation class is the model for FHIR Observation objects," and the class carries `resourceType`, `code`, `status`, `subject`, `bodySite` as a `CodeableConcept`, `derivedFrom` as references, and `component` as a discriminated union of codeable-concept, string, integer, and boolean variants keyed on the FHIR `value[x]` naming convention.[^lineage-obs] +The 2024 reference implementation used FHIR `Observation` directly. Its docstring states "the Observation class is the model for FHIR Observation objects," with `resourceType`, `code`, `status`, and `subject` fields. It also carries `bodySite` as a `CodeableConcept` and `derivedFrom` as references. Its `component` is a discriminated union of codeable-concept, string, integer, and boolean variants keyed on FHIR `value[x]` names.[^lineage-obs] -The lung cancer screening samples show the same shape with real codes. A finding observation's `code` is a [CDE set](/glossary/cde-set.md) identifier under `https://radelement.org`, each `component` code is a [CDE element](/glossary/cde-element.md) identifier, and each component's `valueCodeableConcept` gives the chosen value code.[^fhir-sample] In those samples `status` is what separates a machine-produced finding from a radiologist-confirmed one: `preliminary` for the AI observation, `final` for the radiologist's, with no change to the resource type. That distinction is the closest thing in the project's history to a [provenance](/glossary/provenance.md) marker on an observation, and it is what the Exam Finding List specification asks for when it says "each Observation should include some kind of provenance marker." See [FHIR mapping](/data-structures/fhir-mapping.md). +The lung cancer screening samples use [CDE set](/glossary/cde-set.md) identifiers under `https://radelement.org` for each finding's `code`. Each `component` uses a [CDE element](/glossary/cde-element.md) code, with the chosen value in `valueCodeableConcept`.[^fhir-sample] Both machine-produced and radiologist-confirmed findings use the same resource type. Their `status` differs, with `preliminary` for the AI observation and `final` for the radiologist's. This provides a precedent for the [provenance](/glossary/provenance.md) marker requested by the Exam Finding List specification: "each Observation should include some kind of provenance marker." See [FHIR mapping](/data-structures/fhir-mapping.md). # What is missing -There is no Observation model, no JSON Schema, and no standalone record. Issue 1 in the extraction repository states the gap and the intended shape: Pydantic models for Observation, with a possible "Extracted Observation" subtype, alongside the Exam Finding List and Imaging Problem List, with "extensive annotation to generate JSON schemas" and camelCase aliases on export against snake_case attributes internally.[^issue1] The issue is open and unclaimed by any current plan. The Extracted Observation subtype it floats is exactly the distinction described above, between what a language model produced and what has been coded. +There is no standalone Observation model or JSON Schema. Issue 1 in the extraction repository states the gap and the intended shape: Pydantic models for Observation, Exam Finding List, and Imaging Problem List, with "extensive annotation to generate JSON schemas" and camelCase export aliases for snake_case attributes. It also proposes a possible "Extracted Observation" subtype to distinguish language model output from coded findings.[^issue1] The issue is open and unclaimed by any current plan. [^deck]: "Open Imaging Data Model 2026 Status Update", January 2026 [^ipl-main-claude]: imaging-problem-list domain model notes, main branch diff --git a/knowledge/data-structures/sample-data.md b/knowledge/data-structures/sample-data.md index c11da97..9f39b04 100644 --- a/knowledge/data-structures/sample-data.md +++ b/knowledge/data-structures/sample-data.md @@ -1,10 +1,10 @@ --- type: Reference title: Sample data -description: The synthetic patients, exams, and findings that make up the Exam Finding List and Imaging Problem List sample data, what changes between branches, where the viewer bundles live, and how to regenerate everything. +description: Synthetic exam and problem list samples, branch differences, viewer bundles, and generation scripts. tags: [data-structures, sample-data, reference, synthetic] status: draft -generated: { by: claude-opus-5/claude-code, at: 2026-09-21T17:00:00Z } +generated: { by: codex/gpt-6, at: 2026-09-21T20:53:02Z } sources: - id: ipl-main-claude resource: https://github.com/openimagingdata/imaging-problem-list/blob/06f64a7893b444b761dc069ed86140a081195eac/CLAUDE.md @@ -34,7 +34,7 @@ sources: # All of it is synthetic -Every patient, identifier, date, and line of report text in this data set is written test data. The names, medical record numbers, and birth dates do not belong to real people, and the reports were authored for the project. Counts below were read at commit `06f64a7` on `main` and `36fa30c` on `dev`. +Every patient, identifier, date, and line of report text in this data set is written test data. The names, medical record numbers, and birth dates do not belong to real people, and the reports were authored for the project. Counts were read at `06f64a7` on `main` and `36fa30c` on `dev`. # The three sample sets @@ -65,7 +65,7 @@ Findings per exam range from 9 on the shoulder radiograph to 48 on the January 2 # What the branches differ on -The two branches hold the same exams and very nearly the same findings. What changed on `dev` is the anatomic enrichment and the regrouping that followed it. +The branches contain the same exams and nearly the same findings. The development branch adds anatomic enrichment and regroups findings. | Measure | `main` | `dev` | |---|---|---| @@ -75,7 +75,7 @@ The two branches hold the same exams and very nearly the same findings. What cha | Entries in the `example2` Imaging Problem List | 98 | 123 | | Observations in that problem list | 275 | 276 | -The two observations without a location are in the brain magnetic resonance study, where the assignment rules require leaving a structure unassigned rather than forcing a wrong code when the ontology has no entry for it. The jump from 98 entries to 123 is the grouping key change, from finding code alone to finding code and location identifier; the observations did not multiply, the groups got finer. Both are explained in [Imaging Problem List](/data-structures/imaging-problem-list.md). +Two observations in the brain magnetic resonance study lack locations because the ontology has no matching structures. Assignment rules leave them unassigned. Grouping by finding code and location instead of code alone increases the problem list from 98 to 123 entries. See [Imaging Problem List](/data-structures/imaging-problem-list.md). # File layout @@ -98,7 +98,7 @@ sample_data/ example3/ 31 .txt reports, dev branch only ``` -The viewer reads a different, nested layout, documented in the repository's own notes.[^ipl-main-claude] +The repository notes document the viewer's nested layout.[^ipl-main-claude] ``` viewer/data/ @@ -113,13 +113,13 @@ viewer/data/ finding_region_mappings.json 98 finding-to-body-region entries ``` -Its bundle covers both synthetic patients: `patient-mrn0000001` with 10 exams and 98 problem list entries, and `patient-mrn0000002` with 2 exams and 10 entries. **This bundle was not re-enriched.** On both `main` and `dev` it holds the 98-entry, location-free problem list, so the deployed first-generation [viewer](/applications/imaging-problem-list-viewer.md) shows the pre-anatomy data. +The bundle covers `patient-mrn0000001` with 10 exams and 98 problem list entries, and `patient-mrn0000002` with 2 exams and 10 entries. It was not re-enriched on either branch. The deployed first-generation [viewer](/applications/imaging-problem-list-viewer.md) therefore shows the 98-entry, location-free list. The second-generation viewer has its own bundle under `viewer_v2/public/data/`, built from `sample_data/example2`, carrying the 123-entry anatomy-grouped list for the one patient, with reports as markdown rather than text and extra files for the anatomy index, anatomy clusters, and finding display information. Its manifest is stamped `viewer-v2-data.1` and records its own source paths and warnings. ## The spreadsheet -`findings_with_oifm_ids.xlsx` is the human working sheet the whole `example2` set was built from. It is one row per finding per exam, with columns Exam Date, Exam Type, Exam Code, Finding, OIDM Finding Model Name, OIDM FMID, Presence OIFMA_ID, Present/Absent, and Text.[^excel-script] It records where the [finding model](/glossary/finding-model.md) and [attribute](/glossary/attribute.md) identifiers were assigned by hand, which is why it is worth keeping alongside the generated JSON. +`findings_with_oifm_ids.xlsx` is the working sheet for `example2`, with one row per finding per exam. Its columns are Exam Date, Exam Type, Exam Code, Finding, OIDM Finding Model Name, OIDM FMID, Presence OIFMA_ID, Present/Absent, and Text.[^excel-script] It records where the [finding model](/glossary/finding-model.md) and [attribute](/glossary/attribute.md) identifiers were assigned by hand, which is why it is worth keeping alongside the generated JSON. # Regenerating @@ -132,7 +132,7 @@ Four scripts produce the data, in this order. | `generate_ipl_from_efls.py` | reads a directory of `*_efl.json` files sorted by filename, groups by finding code and location identifier, writes one `ipl.json`[^ipl-script] | | `build_viewer_v2_data.py` | builds the static JSON bundle the second-generation viewer serves[^viewer2-script] | -Only the enrichment step calls a language model. The other three are deterministic. Exact invocation belongs with the code and is not repeated here; see the repository. +Only enrichment calls a language model. The other three scripts are deterministic. See the repository for commands. [^ipl-main-claude]: imaging-problem-list domain model notes, main branch [^excel-script]: generate_efl_from_excel.py diff --git a/knowledge/data-structures/technical-imaging-findings.md b/knowledge/data-structures/technical-imaging-findings.md index 97ab55a..a2930c8 100644 --- a/knowledge/data-structures/technical-imaging-findings.md +++ b/knowledge/data-structures/technical-imaging-findings.md @@ -1,10 +1,10 @@ --- type: Reference title: Technical imaging findings -description: A draft catalog of modality-specific technical finding language, CT attenuation, MR signal, enhancement, ultrasound echogenicity, and nuclear medicine, with the search-term guidance for coding each, migrated from the imaging-problem-list development branch. +description: A migrated draft catalog of modality-specific findings and search terms for coding them. tags: [data-structures, technical-finding, coding, terminology, migrated, draft] status: draft -generated: { by: claude-opus-5/claude-code, at: 2026-09-21T17:00:00Z } +generated: { by: codex/gpt-6, at: 2026-09-21T20:53:02Z } sources: - id: tech resource: https://github.com/openimagingdata/imaging-problem-list/blob/36fa30c7383bf687d7bc17815282a93e123a56cb/docs/technical-imaging-findings.md @@ -13,7 +13,7 @@ sources: # About this document -This is a near-verbatim migration of `docs/technical-imaging-findings.md` from the `imaging-problem-list` repository's development branch.[^tech] The source marks itself **Draft, needs review against the finding ontology for coverage assessment**, and that status carries over: the catalog has not been audited against the finding model corpus, and its closing questions are open. Wording and structure follow the original. +Migrated near-verbatim from `docs/technical-imaging-findings.md` on `imaging-problem-list`'s development branch.[^tech] Wording and structure follow the original. The source is marked **Draft, needs review against the finding ontology for coverage assessment**. The catalog remains unaudited against the finding model corpus, and its closing questions remain open. Radiology reports frequently describe findings using modality-specific technical language rather than clinical diagnoses. These [technical findings](/glossary/technical-finding.md) describe what the radiologist observes on the images, including signal characteristics, density, enhancement patterns, and echogenicity, without necessarily committing to an underlying pathological process. diff --git a/knowledge/glossary/anatomic-location.md b/knowledge/glossary/anatomic-location.md index a83765a..a936d9f 100644 --- a/knowledge/glossary/anatomic-location.md +++ b/knowledge/glossary/anatomic-location.md @@ -4,7 +4,7 @@ title: Anatomic location description: A curated anatomic concept identified by a RadLex identifier, placed in containment and part-of hierarchies with laterality variants and cross-ontology codes. tags: [glossary, semantic-foundation, anatomy] status: draft -generated: { by: claude-opus-5/claude-code, at: 2026-09-21T16:00:00Z } +generated: { by: codex/gpt-6, at: 2026-09-21T20:53:02Z } sources: - id: al-site resource: https://github.com/talkasab/anatomiclocations.org/blob/1f39fa45f621cef947a3f3ef1f869334cfa5c841/docs/index.markdown @@ -22,7 +22,7 @@ sources: # Anatomic location -A discrete anatomic concept, curated for imaging use and identified by a [RadLex identifier](/glossary/radlex-id.md). The rationale is stated plainly on the project site: "standard identifiers for discrete anatomic locations would enable numerous levels of interoperability if applied broadly," but existing ontologies are unsuited to that job because they lack needed terms, carry too many degenerate ones, and have limited anatomic organization. The response is curation: "we are curating a subset of anatomic concepts from existing ontologies and shaping them into a usable collection of anatomic identifiers for informatics interoperability."[^al-site] +A discrete anatomic concept, curated for imaging use and identified by a [RadLex identifier](/glossary/radlex-id.md). The project site states that "standard identifiers for discrete anatomic locations would enable numerous levels of interoperability if applied broadly," but existing ontologies are unsuited to that job because they lack needed terms, carry too many degenerate ones, and have limited anatomic organization. The project describes its approach: "we are curating a subset of anatomic concepts from existing ontologies and shaping them into a usable collection of anatomic identifiers for informatics interoperability."[^al-site] Two implementations exist. The original curated set holds 2,890 nodes with `radlexId`, `description`, `containedById`, `partOfId`, a `leftId`/`rightId`/`unsidedId` triad, `sexSpecific`, `synonyms`, and `codes` into [SNOMED CT](/glossary/snomed-ct.md), [FMA](/glossary/fma.md), [UMLS](/glossary/umls.md), and MeSH.[^al-code] The newer `anatomic-locations` package normalizes the same material into a richer model with `region`, `location_type`, `body_system`, `structure_type`, a `laterality` enum, precomputed containment and part-of paths, and `left_variant`/`right_variant`/`generic_variant` references.[^al-package] @@ -44,7 +44,7 @@ A [RadLex RID](/glossary/radlex-id.md). Sided variants in the original set use c ## Conflicts -The two lineages are not synchronized and differ in count, field names, and laterality representation; see [Lineage and current implementation](/semantic-foundation/anatomic-locations/lineage-and-current-implementation.md). The next-generation CDE vocabulary defines AnatomicLocation as "an anatomical reference identified by its RadLex identity, with temporary sided-variant exceptions governed by the anatomy track," treating sided variants as provisional, whereas the OIDM sets make them first-class nodes.[^cde-context] +The two lineages differ in count, field names, and laterality representation and are not synchronized. See [Lineage and current implementation](/semantic-foundation/anatomic-locations/lineage-and-current-implementation.md). The next-generation CDE vocabulary defines AnatomicLocation as "an anatomical reference identified by its RadLex identity, with temporary sided-variant exceptions governed by the anatomy track," treating sided variants as provisional, whereas the OIDM sets make them first-class nodes.[^cde-context] [^al-site]: anatomiclocations.org site homepage [^al-code]: anatomiclocations.org data file description diff --git a/knowledge/glossary/anatomic-scope.md b/knowledge/glossary/anatomic-scope.md index bc54aef..8c7adf6 100644 --- a/knowledge/glossary/anatomic-scope.md +++ b/knowledge/glossary/anatomic-scope.md @@ -4,7 +4,7 @@ title: Anatomic scope description: The eligible anatomical places, tissue types, or structure types for a definition, stated as a constraint rather than as a location. tags: [glossary, semantic-foundation, anatomy, next-generation] status: draft -generated: { by: claude-opus-5/claude-code, at: 2026-09-21T16:00:00Z } +generated: { by: codex/gpt-6, at: 2026-09-21T20:53:02Z } sources: - id: cde-context resource: https://github.com/RSNA/ACR-RSNA-CDEs/blob/44836c19f4e025cf1684a015ed5cc63c29eaf7f3/CONTEXT.md @@ -42,7 +42,7 @@ None. Scope is expressed as a list of concepts or scope specifiers. ## Conflicts -There is no scope field in the OIFM format. Scope exists only as authoring guidance and as reviewer judgment, so it cannot be checked mechanically the way a typed scope specifier could. +There is no scope field in the OIFM format. Scope exists only as authoring guidance and as reviewer judgment, without the automated checks a typed scope specifier could support. [^cde-context]: CDE vocabulary, next-generation working glossary [^overview]: "Finding Models: Overview" diff --git a/knowledge/glossary/assessment-scheme.md b/knowledge/glossary/assessment-scheme.md index fbef425..901bcb5 100644 --- a/knowledge/glossary/assessment-scheme.md +++ b/knowledge/glossary/assessment-scheme.md @@ -4,7 +4,7 @@ title: AssessmentScheme description: A definition of a standardized assessment system whose dimensions are ordinary data elements, distinct from the findings it assesses. tags: [glossary, semantic-foundation, cde, next-generation] status: draft -generated: { by: claude-opus-5/claude-code, at: 2026-09-21T16:00:00Z } +generated: { by: codex/gpt-6, at: 2026-09-21T20:53:02Z } sources: - id: cde-context resource: https://github.com/RSNA/ACR-RSNA-CDEs/blob/44836c19f4e025cf1684a015ed5cc63c29eaf7f3/CONTEXT.md @@ -24,9 +24,9 @@ sources: "A distinct definition of an assessment system whose descriptive dimensions are ordinary DataElements linked to the scheme, analogous to a FindingClass with its descriptors. The scheme is distinct from any one dimension or that dimension's permissible values."[^cde-context] Lung-RADS, TI-RADS, BI-RADS, and LI-RADS are the systems this node type covers. -The key structural claim is separation. The scheme is not the category value it produces, and it is not the finding it assesses. OIDM's authoring guidance reaches the same conclusion from the finding model side: "scoring systems and structured assessments are valid findings, but should be modeled separately from the observations they assess," because "different radiologists might describe the same nodule but assign different risk categories, and systems need to reason about both independently."[^overview] +The scheme is distinct from its category values and the findings it assesses. OIDM's authoring guidance states: "scoring systems and structured assessments are valid findings, but should be modeled separately from the observations they assess," because "different radiologists might describe the same nodule but assign different risk categories, and systems need to reason about both independently."[^overview] -The lineage FHIR samples already implement that shape. A Lung-RADS Observation carries the category as a component and is `derivedFrom` both the imaging study and the radiologist's pulmonary nodule Observation.[^fhir-sample] IHE IDR calls the pattern a Summary or Derived Observation, with the value in the parent and the children referenced by `derivedFrom`.[^idr] +The lineage FHIR samples implement this separation. A Lung-RADS Observation carries the category as a component and is `derivedFrom` both the imaging study and the radiologist's pulmonary nodule Observation.[^fhir-sample] IHE IDR calls the pattern a Summary or Derived Observation, with the value in the parent and the children referenced by `derivedFrom`.[^idr] ## Synonyms and near-synonyms diff --git a/knowledge/glossary/attribute-value.md b/knowledge/glossary/attribute-value.md index c8f6354..e5f4687 100644 --- a/knowledge/glossary/attribute-value.md +++ b/knowledge/glossary/attribute-value.md @@ -4,7 +4,7 @@ title: Attribute value description: One permissible option of a choice attribute, carrying its own dot-suffixed value code and optional ontology codes. tags: [glossary, semantic-foundation, finding-models] status: draft -generated: { by: claude-opus-5/claude-code, at: 2026-09-21T16:00:00Z } +generated: { by: codex/gpt-6, at: 2026-09-21T20:53:02Z } sources: - id: fm-py resource: https://github.com/openimagingdata/findingmodel/blob/75afd39a400419dcfaf7c8d4a34f065b4d804e0d/packages/findingmodel/src/findingmodel/finding_model.py diff --git a/knowledge/glossary/attribute.md b/knowledge/glossary/attribute.md index 9363681..0269f1e 100644 --- a/knowledge/glossary/attribute.md +++ b/knowledge/glossary/attribute.md @@ -4,7 +4,7 @@ title: Attribute description: A property a radiologist uses to characterize a finding, either a choice attribute with an enumerated value set or a numeric attribute with a range and unit. tags: [glossary, semantic-foundation, finding-models] status: draft -generated: { by: claude-opus-5/claude-code, at: 2026-09-21T16:00:00Z } +generated: { by: codex/gpt-6, at: 2026-09-21T20:53:02Z } sources: - id: fm-py resource: https://github.com/openimagingdata/findingmodel/blob/75afd39a400419dcfaf7c8d4a34f065b4d804e0d/packages/findingmodel/src/findingmodel/finding_model.py @@ -22,7 +22,7 @@ sources: # Attribute -"An attribute that a radiologist would use to characterize a particular finding in a radiology report."[^fm-py] Every [finding model](/glossary/finding-model.md) carries at least one. There are exactly two kinds. +"An attribute that a radiologist would use to characterize a particular finding in a radiology report."[^fm-py] Every [finding model](/glossary/finding-model.md) has at least one attribute. There are exactly two kinds. | Kind | Discriminator | Distinctive fields | |---|---|---| @@ -48,7 +48,7 @@ Both kinds carry `oifma_id`, `name`, an optional `description`, a `required` fla ## Conflicts -The committee record shows an unresolved naming debate between "element," "attribute," and "data element" for this concept, and the next-generation working glossary settles on DataElement while OIFM keeps "attribute."[^siim][^cde-context] The two words denote nearly the same thing with different scoping rules, so a document must say which vocabulary it is using. +Committee discussions left the choice between "element," "attribute," and "data element" unresolved. The next-generation glossary uses DataElement, while OIFM uses "attribute."[^siim][^cde-context] The two words denote nearly the same thing with different scoping rules, so a document must say which vocabulary it is using. [^fm-py]: ChoiceAttribute and NumericAttribute in the findingmodel package [^fm-schema]: Finding model schema, prose mirror diff --git a/knowledge/glossary/body-region.md b/knowledge/glossary/body-region.md index c21795a..0839894 100644 --- a/knowledge/glossary/body-region.md +++ b/knowledge/glossary/body-region.md @@ -4,7 +4,7 @@ title: Body region description: A coarse anatomic grouping such as thorax or abdomen, used to scope findings, to fall back when no structure is named, and to filter views. tags: [glossary, semantic-foundation, anatomy] status: draft -generated: { by: claude-opus-5/claude-code, at: 2026-09-21T16:00:00Z } +generated: { by: codex/gpt-6, at: 2026-09-21T20:53:02Z } sources: - id: al-enums resource: https://github.com/openimagingdata/findingmodel/blob/75afd39a400419dcfaf7c8d4a34f065b4d804e0d/packages/anatomic-locations/src/anatomic_locations/models/enums.py @@ -22,7 +22,7 @@ sources: # Body region -A coarse anatomic grouping, one level above an organ and well above a named structure. Regions do three jobs in OIDM: they classify an [anatomic location](/glossary/anatomic-location.md), they carry broad anatomy on a [finding model](/glossary/finding-model.md) where precise anatomy belongs in `anatomic_locations`, and they provide the fallback when a finding names no anatomic structure at all. +A coarse anatomic grouping, one level above an organ and well above a named structure. Regions classify [anatomic locations](/glossary/anatomic-location.md), describe broad anatomy on [finding models](/glossary/finding-model.md), and provide a fallback when a finding names no structure. Precise anatomy belongs in a finding model's `anatomic_locations`. The fallback rule is explicit. Only findings with no anatomic noun, such as "soft tissue mass" or "generalized osteoporosis," fall back to the exam-scoped coarse region, and the grain is "the coarse region, not a soft-tissue substructure." The rule also states that "organ always wins over exam-region" whenever the finding has a real target organ, including edge-of-exam cases: "no consolidation" on an abdominal CT codes to lung, never to abdomen.[^rules] diff --git a/knowledge/glossary/cde-element.md b/knowledge/glossary/cde-element.md index bff71ae..25dbc48 100644 --- a/knowledge/glossary/cde-element.md +++ b/knowledge/glossary/cde-element.md @@ -4,7 +4,7 @@ title: CDE element description: One property inside a published CDE set, carrying an RDE identifier and a value set, integer, or float definition. tags: [glossary, semantic-foundation, cde] status: draft -generated: { by: claude-opus-5/claude-code, at: 2026-09-21T16:00:00Z } +generated: { by: codex/gpt-6, at: 2026-09-21T20:53:02Z } sources: - id: schema-diff resource: https://github.com/openimagingdata/openimagingdata.org/blob/fb431dfc81801a5a8e621c0e8bf2acd20f74be7d/schemas/schema_differences.md @@ -22,9 +22,9 @@ sources: # CDE element -One property inside a published [CDE set](/glossary/cde-set.md): the unit that carries a question and its permissible answers. An element definition names the property, declares its value type, and lists the values where the type is categorical. The schema distinguishes a `value_set` from `integer_values` and `float_values`, the latter carrying bounds and a step.[^schema-diff] +A property in a published [CDE set](/glossary/cde-set.md), with a question and permissible answers. Its definition names the property, declares its value type, and lists categorical values. The schema distinguishes a `value_set` from `integer_values` and `float_values`, the latter carrying bounds and a step.[^schema-diff] -In a [CDE-labeled FHIR Observation](/glossary/cde-labeled-fhir-observation.md), elements are what the components carry: the parent Observation's `code` is the set, each component's `code` is an element, and the component value is the chosen value code, for example element `RDE1717` with value `RDE1717.1`.[^fhir-sample] The dot-suffixed value code convention is the same one OIFM uses for [attribute values](/glossary/attribute-value.md). +In a [CDE-labeled FHIR Observation](/glossary/cde-labeled-fhir-observation.md), the parent's `code` identifies the set. Each component's `code` identifies an element, and its value identifies the chosen answer, such as `RDE1717.1` for element `RDE1717`.[^fhir-sample] The dot-suffixed value code convention is the same one OIFM uses for [attribute values](/glossary/attribute-value.md). ## Synonyms and near-synonyms diff --git a/knowledge/glossary/cde-labeled-fhir-observation.md b/knowledge/glossary/cde-labeled-fhir-observation.md index 45a6400..215319b 100644 --- a/knowledge/glossary/cde-labeled-fhir-observation.md +++ b/knowledge/glossary/cde-labeled-fhir-observation.md @@ -4,7 +4,7 @@ title: CDE-labeled FHIR Observation description: The project's founding representation of a finding, a FHIR Observation whose code and component codes are drawn from a published CDE set. tags: [glossary, data-structures, fhir, cde] status: draft -generated: { by: claude-opus-5/claude-code, at: 2026-09-21T16:00:00Z } +generated: { by: codex/gpt-6, at: 2026-09-21T20:53:02Z } sources: - id: site-findings resource: https://www.openimagingdata.org/findings-cdes-and-observations/ @@ -27,7 +27,7 @@ sources: The project's founding representation of a radiology finding: a FHIR `Observation` whose `code` identifies a [CDE set](/glossary/cde-set.md) and whose `component` codes identify the [CDE elements](/glossary/cde-element.md) inside it, each component's value giving the chosen value code. The phrase comes from the project's own About page and from the 2023 post that set the direction.[^site-about][^site-findings] -The lung screening sample implements it exactly. A radiologist's finding Observation carries `code` as `RDES195 Pulmonary Nodule` with `system` `https://radelement.org`, references the imaging study through `derivedFrom`, and carries element codes such as `RDE1717` in components with `valueCodeableConcept` giving codes such as `RDE1717.1`.[^fhir-sample] The reference implementation models the same shape in Python, with a discriminated union of codeable-concept, string, integer, and boolean components.[^lineage-obs] +In the lung screening sample, a radiologist's finding Observation carries `code` as `RDES195 Pulmonary Nodule` with `system` `https://radelement.org`, references the imaging study through `derivedFrom`, and carries element codes such as `RDE1717` in components with `valueCodeableConcept` giving codes such as `RDE1717.1`.[^fhir-sample] The reference implementation models the same shape in Python, with a discriminated union of codeable-concept, string, integer, and boolean components.[^lineage-obs] ## Synonyms and near-synonyms @@ -45,7 +45,7 @@ None of its own. The identifiers are those of the coding systems used, most ofte ## Conflicts -IHE IDR rejects the component pattern for this purpose. It states that `Observation.component` "is not used," because FHIR limits components to values "not useful on their own" and using it "has the potential to significantly complicate queries," preferring a root Observation with `hasMember` references to associated observations.[^idr] Every OIDM artifact that encodes attributes today, including the documented Exam Finding List mapping and these lineage samples, uses components. Reconciling the two is an open item; see [IHE IDR alignment](/data-structures/ihe-idr-alignment.md). +IHE IDR rejects the component pattern for this purpose. It states that `Observation.component` "is not used," because FHIR limits components to values "not useful on their own" and using it "has the potential to significantly complicate queries," preferring a root Observation with `hasMember` references to associated observations.[^idr] Every OIDM artifact that encodes attributes today, including the documented Exam Finding List mapping and these lineage samples, uses components. Reconciliation remains open. See [IHE IDR alignment](/data-structures/ihe-idr-alignment.md). [^site-findings]: "Findings, CDEs, and Observations", 2023-06-24 [^site-about]: openimagingdata.org About page diff --git a/knowledge/glossary/cde-set.md b/knowledge/glossary/cde-set.md index 1d75aa8..f3f4d96 100644 --- a/knowledge/glossary/cde-set.md +++ b/knowledge/glossary/cde-set.md @@ -4,7 +4,7 @@ title: CDE set description: A published RadElement definition of one finding, grouping the elements that characterize it under an RDES identifier. tags: [glossary, semantic-foundation, cde] status: draft -generated: { by: claude-opus-5/claude-code, at: 2026-09-21T16:00:00Z } +generated: { by: codex/gpt-6, at: 2026-09-21T20:53:02Z } sources: - id: cde-repo resource: https://github.com/openimagingdata/common_data_elements/blob/35536d8c858bcd33e730a00c919edaef2e310a0b/README.md @@ -22,11 +22,11 @@ sources: # CDE set -A published definition of one radiology finding on [RadElement](/glossary/radelement.md), grouping the [CDE elements](/glossary/cde-element.md) that characterize it. Roughly 140 sets are listed in the OIDM mirror of the published definitions, from Acute Aortic Syndrome to TI-RADS, each named and carrying an `RDES` identifier.[^cde-repo] +A published definition of one radiology finding on [RadElement](/glossary/radelement.md), grouping the [CDE elements](/glossary/cde-element.md) that characterize it. The OIDM mirror lists roughly 140 published sets, from Acute Aortic Syndrome to TI-RADS, each with a name and `RDES` identifier.[^cde-repo] A set carries identity and governance fields as well as its elements: `id`, `name`, `description`, `set_version`, `schema_version`, `current_status`, and `status_history`. The mirror notes that its definitions conform to version 1.0 of the CDE schema rather than the newer version 1.1.[^cde-repo] -In FHIR encodings the set identifier is what labels the parent Observation. The lineage sample codes a radiologist's finding as `RDES195 Pulmonary Nodule` with `system` `https://radelement.org`, and IHE IDR states that "when encoding CDE Sets from radelement.org, it is preferred to use the CDE Set code here."[^fhir-sample][^idr] +In FHIR encodings, the set identifier labels the parent Observation. The lineage sample codes a radiologist's finding as `RDES195 Pulmonary Nodule` with `system` `https://radelement.org`, and IHE IDR states that "when encoding CDE Sets from radelement.org, it is preferred to use the CDE Set code here."[^fhir-sample][^idr] ## Synonyms and near-synonyms diff --git a/knowledge/glossary/cde.md b/knowledge/glossary/cde.md index 50382d2..d6ef2ab 100644 --- a/knowledge/glossary/cde.md +++ b/knowledge/glossary/cde.md @@ -4,7 +4,7 @@ title: CDE description: Common data element, the ACR and RSNA programme of governed, balloted definitions for radiology findings and their elements. tags: [glossary, semantic-foundation, cde] status: draft -generated: { by: claude-opus-5/claude-code, at: 2026-09-21T16:00:00Z } +generated: { by: codex/gpt-6, at: 2026-09-21T20:53:02Z } sources: - id: cde-repo resource: https://github.com/openimagingdata/common_data_elements/blob/35536d8c858bcd33e730a00c919edaef2e310a0b/README.md @@ -24,7 +24,7 @@ sources: **Common data element (CDE).** A governed definition of a radiology finding or of one property of a finding, authored and balloted through the ACR and RSNA Common Data Elements programme and published on [RadElement](/glossary/radelement.md).[^cde-repo] The word is used at two granularities, which is the main source of confusion: a [CDE set](/glossary/cde-set.md) is a whole finding, a [CDE element](/glossary/cde-element.md) is one property inside it. -CDEs are the standards-track counterpart of OIDM's own [finding models](/glossary/finding-model.md). The 2026 status deck describes finding models as a "CDE workbench": a proving ground where LLM-assisted authoring produces content quickly, and the best of it graduates into the formal CDE process.[^deck] The 2023 site post that set the project's direction describes findings as FHIR Observations "semantically labeled with ACR/RSNA Common Data Element identifiers."[^site-findings] +CDEs are the standards-track counterpart of OIDM's own [finding models](/glossary/finding-model.md). The 2026 status deck describes finding models as a "CDE workbench": a proving ground where LLM-assisted authoring produces content quickly, and the best of it graduates into the formal CDE process.[^deck] The 2023 site post describes findings as FHIR Observations "semantically labeled with ACR/RSNA Common Data Element identifiers."[^site-findings] Between informal authoring and publication sits a staging step: `CDEStaging` holds candidate definitions "prior to their entering the review pipeline."[^staging] diff --git a/knowledge/glossary/change-from-prior.md b/knowledge/glossary/change-from-prior.md index b1dae0c..e6eec1f 100644 --- a/knowledge/glossary/change-from-prior.md +++ b/knowledge/glossary/change-from-prior.md @@ -4,7 +4,7 @@ title: Change from prior description: The companion second attribute of a finding model, recording how the finding compares with the previous exam. tags: [glossary, semantic-foundation, data-structures] status: draft -generated: { by: claude-opus-5/claude-code, at: 2026-09-21T16:00:00Z } +generated: { by: codex/gpt-6, at: 2026-09-21T20:53:02Z } sources: - id: overview resource: https://github.com/RSNA/ACR-RSNA-CDEs/blob/44836c19f4e025cf1684a015ed5cc63c29eaf7f3/notes/oifm-overview.md @@ -24,7 +24,7 @@ sources: How a finding compares with the previous exam. Authoring guidance makes it the required second [attribute](/glossary/attribute.md) of a [finding model](/glossary/finding-model.md), after [presence](/glossary/presence.md), with values "unchanged, stable, new, resolved, plus clinically appropriate direction-of-change pairs (larger/smaller for masses, worsened/improved for diseases, increased/decreased for quantities)."[^overview] -The attribute exists because a finding is not a snapshot. "Findings exist in time. A radiology report is a snapshot, but the findings it describes persist across exams. A pleural effusion seen today may be the same one from last week, now larger."[^overview] Change from prior is what carries that comparison at the level of a single [observation](/glossary/observation.md), and the documented FHIR mapping singles it out along with presence as the components an Observation should carry.[^ipl-readme] +The attribute exists because a finding is not a snapshot. "Findings exist in time. A radiology report is a snapshot, but the findings it describes persist across exams. A pleural effusion seen today may be the same one from last week, now larger."[^overview] Change from prior records this comparison on a single [observation](/glossary/observation.md). The documented FHIR mapping calls for both change-from-prior and presence components.[^ipl-readme] Change from prior is also what distinguishes an attribute value from a finding. "Stable cardiac silhouette" is not a finding, because "stable" is a change-from-prior value on a cardiac finding.[^overview] @@ -45,7 +45,7 @@ An ordinary `OIFMA_[A-Z]{3,4}_[0-9]{6}` attribute identifier with dot-suffixed v ## Conflicts -The attribute is required by guidance but missing from part of the corpus. The open definition cleanup plan lists adding missing standard attributes, presence and change from prior, to 124 existing models as an ordered step, so consuming code cannot assume the attribute is present.[^cleanup] Value sets also vary by design, since direction-of-change pairs are chosen per finding, so no single enumeration covers the corpus. +Guidance requires this attribute, but some models lack it. The open cleanup plan schedules addition of missing presence and change-from-prior attributes to 124 models. Consumers cannot assume the attribute exists.[^cleanup] Direction-of-change pairs vary by finding, so no single enumeration covers the corpus. [^overview]: "Finding Models: Overview" [^ipl-readme]: imaging-problem-list README diff --git a/knowledge/glossary/coding.md b/knowledge/glossary/coding.md index 2120dd0..9b543fa 100644 --- a/knowledge/glossary/coding.md +++ b/knowledge/glossary/coding.md @@ -4,7 +4,7 @@ title: Coding description: Assigning finding identifiers and anatomic location identifiers to extracted findings, as a job distinct from extraction. tags: [glossary, applications, extraction] status: draft -generated: { by: claude-opus-5/claude-code, at: 2026-09-21T16:00:00Z } +generated: { by: codex/gpt-6, at: 2026-09-21T20:53:02Z } sources: - id: coding-design resource: https://github.com/openimagingdata/imaging-problem-list/blob/36fa30c7383bf687d7bc17815282a93e123a56cb/docs/coding-agent-design.md @@ -24,7 +24,7 @@ sources: Assigning an [OIFM](/glossary/oifm.md) finding identifier and an [anatomic location](/glossary/anatomic-location.md) identifier to a finding that [extraction](/glossary/extraction.md) produced as free text. "Coding assigns OIFM finding codes and anatomic location codes to extracted findings. It is an independent job, fully decoupled from extraction. Extraction output persists without codes; coding is triggered separately and can be re-run with different models or settings."[^coding-design] -The documented pipeline has five phases, two of which call a language model. A fast path resolves exact and synonym matches by index lookup for both axes, and findings that resolve skip the model entirely. For the rest, two parallel agents generate two or three diverse search terms each for finding and for location; batched index search returns candidates; per-finding selector agents choose a finding code and a location code in parallel; and assembly merges fast-path and model results. Each phase degrades independently, and one finding's failure does not block the others.[^coding-design] +The documented pipeline has five phases, two of which call a language model. Index lookup resolves exact and synonym matches for findings and locations without model calls. For unresolved findings, separate finding and location agents each generate two or three diverse search terms in parallel. Batched index search returns candidates. Selector agents choose finding and location codes in parallel, and assembly combines the results with index matches. Each phase degrades independently, and one finding's failure does not block the others.[^coding-design] Location coding follows its own precedence rules rather than free judgment; see [anatomic location assignment rules](/data-structures/anatomic-location-assignment-rules.md). Codes are resolved by direct lookup rather than semantic search for a named target organ, "to avoid retrieval misses," and "every assigned `locationId` must exist in the ontology," with unrepresented structures left unassigned rather than forced onto a wrong code.[^rules] diff --git a/knowledge/glossary/contained-by-and-part-of.md b/knowledge/glossary/contained-by-and-part-of.md index 9ea7b61..992eaa0 100644 --- a/knowledge/glossary/contained-by-and-part-of.md +++ b/knowledge/glossary/contained-by-and-part-of.md @@ -4,7 +4,7 @@ title: Contained by and part of description: The two orthogonal hierarchies over anatomic locations, one physical containment and one structural or functional membership. tags: [glossary, semantic-foundation, anatomy] status: draft -generated: { by: claude-opus-5/claude-code, at: 2026-09-21T16:00:00Z } +generated: { by: codex/gpt-6, at: 2026-09-21T20:53:02Z } sources: - id: al-code resource: https://github.com/talkasab/anatomiclocations.org/blob/1f39fa45f621cef947a3f3ef1f869334cfa5c841/docs/code.markdown @@ -27,9 +27,9 @@ The two hierarchies over [anatomic locations](/glossary/anatomic-location.md), k - **Contained by**: "physically contained in (e.g., kidney in the retroperitoneum)."[^al-code] - **Part of**: "a component of a larger structure/system (e.g., adnexa part of female genital system)."[^al-code] -Containment is the primary axis. The curated set is "organized into a directed, rooted tree hierarchy, starting from the whole body and ramifying through body regions," and containment is required on every node while part-of is optional.[^al-site] Part-of carries organ-system membership, which is why a structure can be contained in one region and part of a system that spans several. +Containment is the primary axis. The curated set is "organized into a directed, rooted tree hierarchy, starting from the whole body and ramifying through body regions," and containment is required on every node while part-of is optional.[^al-site] Part-of records organ-system membership. A structure can be contained in one region and belong to a system spanning several. -The newer package materializes both. A location carries `containment_path`, `containment_parent`, `containment_depth`, and `containment_children`, and the same four fields again with a `partof_` prefix, so ancestors and descendants on either axis resolve without walking the graph at query time.[^al-package] +The newer package precomputes both hierarchies. Each location has `containment_path`, `containment_parent`, `containment_depth`, and `containment_children`, and the same four fields again with a `partof_` prefix, so ancestors and descendants on either axis resolve without walking the graph at query time.[^al-package] ## Synonyms and near-synonyms diff --git a/knowledge/glossary/contributor.md b/knowledge/glossary/contributor.md index 306bbfd..ac0aea0 100644 --- a/knowledge/glossary/contributor.md +++ b/knowledge/glossary/contributor.md @@ -4,7 +4,7 @@ title: Contributor description: A person or organization credited on a finding model definition, recorded in a registry keyed by GitHub username or organization code. tags: [glossary, semantic-foundation, finding-models] status: draft -generated: { by: claude-opus-5/claude-code, at: 2026-09-21T16:00:00Z } +generated: { by: codex/gpt-6, at: 2026-09-21T20:53:02Z } sources: - id: contributor-py resource: https://github.com/openimagingdata/findingmodel/blob/75afd39a400419dcfaf7c8d4a34f065b4d804e0d/packages/findingmodel/src/findingmodel/contributor.py @@ -26,7 +26,7 @@ A person or organization credited on a [finding model](/glossary/finding-model.m | Organization | `name` (at least 5 characters), `code` matching `^[A-Z]{3,4}$` | `url` | | Person | `github_username`, `email`, `name`, `organization_code` | `url` | -Both types register themselves as they are validated, organizations by `code` and people by `github_username`, and both can be loaded from or saved to a JSONL file.[^contributor-py] Seven organizations ship in the base registry: Microsoft, MassGeneral Brigham, Radiology Gamuts Ontology, the Radiological Society of North America, the American College of Radiology, the ACR/RSNA Common Data Elements Project, and the Open Imaging Data Model itself.[^orgs] +Validation registers organizations by `code` and people by `github_username`. Both types support JSONL import and export.[^contributor-py] Seven organizations ship in the base registry: Microsoft, MassGeneral Brigham, Radiology Gamuts Ontology, the Radiological Society of North America, the American College of Radiology, the ACR/RSNA Common Data Elements Project, and the Open Imaging Data Model.[^orgs] In the published corpus of 2,382 definitions, organization contributors appear on Gamuts-derived, OIDM-authored, and CDE-derived models, while MassGeneral Brigham and Microsoft contributions are credited to individual people carrying those organization codes. diff --git a/knowledge/glossary/data-element.md b/knowledge/glossary/data-element.md index e17bd9f..c98fc66 100644 --- a/knowledge/glossary/data-element.md +++ b/knowledge/glossary/data-element.md @@ -4,7 +4,7 @@ title: DataElement description: In the next-generation CDE vocabulary, a shared categorical descriptor whose permissible values may be ordered, reused across definitions through element bindings. tags: [glossary, semantic-foundation, cde, next-generation] status: draft -generated: { by: claude-opus-5/claude-code, at: 2026-09-21T16:00:00Z } +generated: { by: codex/gpt-6, at: 2026-09-21T20:53:02Z } sources: - id: cde-context resource: https://github.com/RSNA/ACR-RSNA-CDEs/blob/44836c19f4e025cf1684a015ed5cc63c29eaf7f3/CONTEXT.md @@ -19,11 +19,11 @@ sources: # DataElement -In the next-generation CDE vocabulary, "a categorical descriptor whose permissible values may be ordered or unordered. Semantic ordering is explicit and is distinct from display order."[^cde-context] A DataElement is a node in the definition graph, not a field inside a finding definition, and it is shared: a [FindingClass](/glossary/finding-class.md) reaches it through an [element binding](/glossary/element-binding.md), which may restrict the use to a subset of the element's permissible values without changing the element or its other bindings.[^cde-context] +In the next-generation CDE vocabulary, "a categorical descriptor whose permissible values may be ordered or unordered. Semantic ordering is explicit and is distinct from display order."[^cde-context] A DataElement is a shared node in the definition graph. A [FindingClass](/glossary/finding-class.md) references it through an [element binding](/glossary/element-binding.md), which may restrict permissible values for that use without changing the element or its other bindings.[^cde-context] -Three companion rules shape how a DataElement is used. Selection cardinality states "the permitted number of values selected for a DataElement in a use, such as single or multiple selection," explicitly distinct from value ordering and from whether a report mentions the element. Modality applicability separates a descriptor's intrinsic modality limit from its binding-specific applicability. Categorization requires that a distinction be expressed either by a categorizing DataElement or by a taxonomy of named classes, not both for the same distinction in the same model.[^cde-context] +Selection cardinality states "the permitted number of values selected for a DataElement in a use, such as single or multiple selection," explicitly distinct from value ordering and from whether a report mentions the element. Modality applicability separates a descriptor's intrinsic modality limit from its binding-specific applicability. Categorization requires that a distinction be expressed either by a categorizing DataElement or by a taxonomy of named classes, not both for the same distinction in the same model.[^cde-context] -This vocabulary is a working draft on the `next-gen-2026` branch. It is not a settled integration model, and its own preamble says so.[^cde-context] +The `next-gen-2026` vocabulary is a working draft. Its preamble states that the integration model is unsettled.[^cde-context] ## Synonyms and near-synonyms diff --git a/knowledge/glossary/element-binding.md b/knowledge/glossary/element-binding.md index 88a88d9..cae3e50 100644 --- a/knowledge/glossary/element-binding.md +++ b/knowledge/glossary/element-binding.md @@ -4,7 +4,7 @@ title: Element binding description: The relationship in the next-generation CDE vocabulary that connects a definition to a DataElement it uses, optionally restricting the values in that use. tags: [glossary, semantic-foundation, cde, next-generation] status: draft -generated: { by: claude-opus-5/claude-code, at: 2026-09-21T16:00:00Z } +generated: { by: codex/gpt-6, at: 2026-09-21T20:53:02Z } sources: - id: cde-context resource: https://github.com/RSNA/ACR-RSNA-CDEs/blob/44836c19f4e025cf1684a015ed5cc63c29eaf7f3/CONTEXT.md @@ -21,15 +21,15 @@ sources: "A relationship connecting a definition to a DataElement it uses. A FindingClass's binding may restrict that use to a subset of the element's permissible values without changing the shared element or its other bindings."[^cde-context] -The binding is what makes element reuse safe. One severity element can serve many [FindingClasses](/glossary/finding-class.md); each binding narrows the permissible values, sets [selection cardinality](/glossary/data-element.md), and carries its own modality applicability, which the vocabulary states "is distinct from its binding-specific applicability and is not an overridable default."[^cde-context] +The binding is what makes element reuse safe. One severity element can serve many [FindingClasses](/glossary/finding-class.md). A binding can narrow permissible values, set [selection cardinality](/glossary/data-element.md), and record modality applicability. The descriptor's intrinsic modality limit "is distinct from its binding-specific applicability and is not an overridable default."[^cde-context] -An [AnatomicLocation](/glossary/anatomic-location.md) can also bind directly to DataElements and Measurements "describing that anatomy without requiring a FindingClass," so a property of a normal structure does not need a finding to hang from.[^cde-context] IHE IDR already supports that shape, encoding an observation whose target is an anatomic entity with a property as its code.[^idr] +An [AnatomicLocation](/glossary/anatomic-location.md) can also bind directly to DataElements and Measurements "describing that anatomy without requiring a FindingClass," so normal anatomy can have properties without a finding.[^cde-context] IHE IDR already supports that shape, encoding an observation whose target is an anatomic entity with a property as its code.[^idr] ## Synonyms and near-synonyms - **`HAS_ELEMENT`** is the edge name used in the working definition graph. - **Binding** alone usually means this, but "value binding" and "terminology binding" mean something different in FHIR. -- OIFM has no equivalent. An [attribute](/glossary/attribute.md) is a member of exactly one [finding model](/glossary/finding-model.md) and cannot be shared or restricted, which is the structural difference between the two vocabularies.[^fm-py] +- OIFM has no equivalent. An [attribute](/glossary/attribute.md) is a member of exactly one [finding model](/glossary/finding-model.md) and cannot be shared or restricted.[^fm-py] ## Identifier form diff --git a/knowledge/glossary/exam-finding-list.md b/knowledge/glossary/exam-finding-list.md index caa9816..c41bdda 100644 --- a/knowledge/glossary/exam-finding-list.md +++ b/knowledge/glossary/exam-finding-list.md @@ -4,7 +4,7 @@ title: Exam Finding List description: All findings declared present or absent on one imaging exam, in one queryable structure keyed to the exam and the report. tags: [glossary, data-structures, ipl] status: draft -generated: { by: claude-opus-5/claude-code, at: 2026-09-21T16:00:00Z } +generated: { by: codex/gpt-6, at: 2026-09-21T20:53:02Z } sources: - id: ipl-readme resource: https://github.com/openimagingdata/imaging-problem-list/blob/06f64a7893b444b761dc069ed86140a081195eac/README.md @@ -26,7 +26,7 @@ sources: The structure carries a `diagnosticReportId`, `patientInfo`, an `examInfo` block holding the study identifier, date and time, [LOINC](/glossary/loinc.md) code and description, and a `findings` array. Each finding carries an `observationId`, a `findingCode` in `OIFM_XXXX_######` form with its description, an `attributes` array of [attribute](/glossary/attribute.md) code, value code, and display text, an optional `anatomicLocation` of `locationId` and `locationDisplay`, and an optional verbatim `reportText`.[^ipl-claude][^efl-sample] -Two properties are stated as requirements rather than conveniences. The exam header must be keyed by a curated list of LOINC codes. And "the same finding type may be declared present multiple times; each time is a separate entry."[^ipl-readme] The deck adds that an Exam Finding List can be "sourced from dictation, AI tools, interpretation-time interfaces," which is why each observation should carry a [provenance](/glossary/provenance.md) marker.[^deck] +Two properties are stated as requirements rather than conveniences. The exam header must be keyed by a curated list of LOINC codes, and "the same finding type may be declared present multiple times; each time is a separate entry."[^ipl-readme] The deck adds that an Exam Finding List can be "sourced from dictation, AI tools, interpretation-time interfaces," so each observation should carry a [provenance](/glossary/provenance.md) marker.[^deck] ## Synonyms and near-synonyms diff --git a/knowledge/glossary/exam-type.md b/knowledge/glossary/exam-type.md index ac9a2f3..3da3eba 100644 --- a/knowledge/glossary/exam-type.md +++ b/knowledge/glossary/exam-type.md @@ -4,7 +4,7 @@ title: Exam type description: The kind of imaging study an exam is, coded with LOINC today and intended to become a first-class OIDM artifact linking modality, technique, and included body parts. tags: [glossary, semantic-foundation, exam-types] status: draft -generated: { by: claude-opus-5/claude-code, at: 2026-09-21T16:00:00Z } +generated: { by: codex/gpt-6, at: 2026-09-21T20:53:02Z } sources: - id: ipl-claude resource: https://github.com/openimagingdata/imaging-problem-list/blob/36fa30c7383bf687d7bc17815282a93e123a56cb/CLAUDE.md @@ -25,11 +25,11 @@ sources: # Exam type -The kind of imaging study an exam is: modality, body part, technique, and contrast, taken together. Today OIDM identifies an exam type by a [LOINC](/glossary/loinc.md) code carried on the exam header, for example `72133-2` for CT Abdomen and Pelvis Without Contrast.[^ipl-claude] +An imaging study type defined by modality, body part, technique, and contrast. Today OIDM identifies an exam type by a [LOINC](/glossary/loinc.md) code carried on the exam header, for example `72133-2` for CT Abdomen and Pelvis Without Contrast.[^ipl-claude] -Exam type does more work than labelling. It bounds what a finding model should cover: "the scope of a finding model should match what's assessable on a given exam type, not broader."[^overview] It supplies the fallback [body region](/glossary/body-region.md) when a finding names no anatomic structure, and it supplies laterality when the exam itself is sided.[^rules] +Exam type bounds a finding model's scope: "the scope of a finding model should match what's assessable on a given exam type, not broader."[^overview] It supplies the fallback [body region](/glossary/body-region.md) when a finding names no anatomic structure, and it supplies laterality when the exam itself is sided.[^rules] -The stated goal is a first-class exam-type artifact rather than a bare code. The earliest written form asks for "a companion for exam types based on LOINC/RadLex Playbook exam definitions that specify all included body parts for the exam."[^al-site] The most developed written design sits in the terminology tool's roadmap, which makes the [LOINC/RSNA Radiology Playbook](/glossary/loinc-rsna-radiology-playbook.md) first-class in a default radiology profile and plans Playbook-weighted ranking for orderable queries.[^roadmap] +The stated goal is a first-class exam-type artifact rather than a bare code. The earliest proposal asks for "a companion for exam types based on LOINC/RadLex Playbook exam definitions that specify all included body parts for the exam."[^al-site] The terminology tool's roadmap contains the most developed design. It proposes making the [LOINC/RSNA Radiology Playbook](/glossary/loinc-rsna-radiology-playbook.md) first-class in a default radiology profile and plans Playbook-weighted ranking for orderable queries.[^roadmap] ## Synonyms and near-synonyms @@ -48,7 +48,7 @@ A LOINC code today. Legacy `RPID` Playbook identifiers are recognized in the pla ## Conflicts -No exam-type artifact exists. There is no published curated LOINC list, no exam-to-body-parts mapping, and no code that parses modality or body-part axes, even though three separate documents across three repositories describe the same goal. The area is documented as goals plus existing building blocks; see [Exam types](/roadmap/exam-types.md). +Three documents in three repositories describe the goal, but no exam-type artifact exists: no published curated LOINC list, exam-to-body-parts mapping, or code to parse modality or body-part axes. See goals and existing building blocks under [Exam types](/roadmap/exam-types.md). [^ipl-claude]: imaging-problem-list domain model, dev branch [^al-site]: anatomiclocations.org roadmap diff --git a/knowledge/glossary/extraction.md b/knowledge/glossary/extraction.md index 057b87e..8ab4bc1 100644 --- a/knowledge/glossary/extraction.md +++ b/knowledge/glossary/extraction.md @@ -4,7 +4,7 @@ title: Extraction description: Deriving structured findings from narrative radiology report text with a language model, producing findings, presence, location, and attributes with verbatim quotes. tags: [glossary, applications, extraction] status: draft -generated: { by: claude-opus-5/claude-code, at: 2026-09-21T16:00:00Z } +generated: { by: codex/gpt-6, at: 2026-09-21T20:53:02Z } sources: - id: extraction-plan resource: https://github.com/openimagingdata/imaging-problem-list/blob/36fa30c7383bf687d7bc17815282a93e123a56cb/initial-extraction-plan.md @@ -25,11 +25,11 @@ sources: # Extraction -Deriving structured findings from narrative radiology report text using a language model. It is the first half of the pipeline that turns a report into OIDM data: "an agent reads a radiology report and identifies findings mentioned in the text," and each finding is then matched to a definition.[^overview] The deck states the goal that an [Imaging Problem List](/glossary/imaging-problem-list.md) be "automatically extractable from narrative report text via LLMs."[^deck] +Deriving structured findings from narrative radiology report text using a language model. The authoring overview states: "an agent reads a radiology report and identifies findings mentioned in the text," and each finding is then matched to a definition.[^overview] The deck states the goal that an [Imaging Problem List](/glossary/imaging-problem-list.md) be "automatically extractable from narrative report text via LLMs."[^deck] -Extraction output is uncoded. Its schema names a finding, asserts presence as one of `present`, `absent`, `indeterminate`, or `possible`, gives an optional location of body region, specific anatomy, and laterality, a list of key-value attributes with standard keys such as size, acuity, change from prior, severity, count, and morphology, and a verbatim `report_text` quote.[^extraction-plan] Assigning identifiers is a separate job; see [coding](/glossary/coding.md). +The uncoded output contains a finding name, presence as `present`, `absent`, `indeterminate`, or `possible`, and a verbatim `report_text` quote. An optional location records body region, specific anatomy, and laterality. Key-value attributes use standard keys such as size, acuity, change from prior, severity, count, and morphology.[^extraction-plan] Assigning identifiers is a separate job; see [coding](/glossary/coding.md). -Three design decisions shape the current implementation: long reports are semantically chunked and extracted concurrently then merged and deduplicated, output quotes are validated as verbatim both during and after generation, and a reviewer sub-agent can flag issues and trigger targeted re-extraction of specific chunks.[^ipl-claude] +The implementation splits long reports into semantic chunks, extracts them concurrently, and merges and deduplicates the results. It validates verbatim quotes during and after generation. A reviewer sub-agent can flag issues and trigger re-extraction of specific chunks.[^ipl-claude] ## Synonyms and near-synonyms @@ -48,7 +48,7 @@ None. Extracted findings carry names and quotes, not identifiers, until coding r ## Conflicts -The failure modes extraction guards against are stated in the validator prompt and are worth naming as part of the definition: content unsupported by the chunk text, which is hallucination; report text describing a finding that no structure represents, which is a missed finding; a finding described as present when it is not, or absent when it is possible; a finding name more specific than the text supports; incorrect representation of a blanket negative; and wrong, too specific, or too general location information.[^validator] Separately, the extraction presence value set does not match the finding model one; see [presence](/glossary/presence.md). +The failure modes extraction guards against are stated in the validator prompt: hallucinated content unsupported by the chunk, report text describing a finding that no structure represents, which is a missed finding, a finding described as present when it is not, or absent when it is possible, overly specific finding names, misrepresented blanket negatives, and incorrect or overly specific or general locations.[^validator] Separately, the extraction presence value set does not match the finding model one; see [presence](/glossary/presence.md). [^extraction-plan]: Initial extraction plan [^ipl-claude]: imaging-problem-list architecture notes diff --git a/knowledge/glossary/fhir-condition.md b/knowledge/glossary/fhir-condition.md index 1a9d7ee..e41b3de 100644 --- a/knowledge/glossary/fhir-condition.md +++ b/knowledge/glossary/fhir-condition.md @@ -4,7 +4,7 @@ title: FHIR Condition description: The HL7 FHIR resource for a clinical condition, used in the documented Imaging Problem List mapping as the container for one finding type. tags: [glossary, data-structures, fhir] status: draft -generated: { by: claude-opus-5/claude-code, at: 2026-09-21T16:00:00Z } +generated: { by: codex/gpt-6, at: 2026-09-21T20:53:02Z } sources: - id: fhir resource: https://www.hl7.org/fhir/condition.html @@ -19,9 +19,9 @@ sources: # FHIR Condition -The HL7 FHIR resource for a clinical condition, problem, or diagnosis.[^fhir] In OIDM it appears in one place: the documented FHIR mapping of an [Imaging Problem List](/glossary/imaging-problem-list.md), which is "a Report containing a list of Condition objects (labeled with the finding identifier), where each Condition object also contains a list of Observation objects which document which exams (DiagnosticReports) the finding type has been documented on, including the exam date and exam type."[^ipl-readme] +The HL7 FHIR resource for a clinical condition, problem, or diagnosis.[^fhir] Its only OIDM use is the documented FHIR mapping of an [Imaging Problem List](/glossary/imaging-problem-list.md), which is "a Report containing a list of Condition objects (labeled with the finding identifier), where each Condition object also contains a list of Observation objects which document which exams (DiagnosticReports) the finding type has been documented on, including the exam date and exam type."[^ipl-readme] -One Condition therefore stands for one finding type in one patient, and the [observations](/glossary/observation.md) under it are the evidence trail across exams. +One Condition represents a finding type in one patient. Its [observations](/glossary/observation.md) record evidence across exams. ## Synonyms and near-synonyms @@ -40,7 +40,7 @@ A FHIR resource identifier. The mapping labels each Condition with the finding i ## Conflicts -Three points are unsettled. The mapping is documented and implemented nowhere; no Condition resource is produced by any OIDM code. Its container is called a "Report," which is not a FHIR resource name. And IHE IDR takes a different position on when Condition is appropriate, routing positive clinical findings to Condition and negative ones to Observation, against an OIDM working default that "every assertion in a radiology report, diagnoses included, is encoded as an Observation," partly because "'consistent with pneumonia' is a radiologist's assertion, not an established clinical condition."[^idr-extract] If that default holds, `Condition.evidence` as the finding-to-diagnosis link has nowhere to attach and an Observation-to-Observation equivalent is needed. +Three points are unsettled. The mapping is documented but unimplemented. No OIDM code produces Condition resources. Its container is called a "Report," which is not a FHIR resource name. IHE IDR routes positive clinical findings to Condition and negative ones to Observation, against an OIDM working default that "every assertion in a radiology report, diagnoses included, is encoded as an Observation," partly because "'consistent with pneumonia' is a radiologist's assertion, not an established clinical condition."[^idr-extract] If that default holds, `Condition.evidence` as the finding-to-diagnosis link has nowhere to attach and an Observation-to-Observation equivalent is needed. [^fhir]: Condition resource, HL7 FHIR [^ipl-readme]: imaging-problem-list README diff --git a/knowledge/glossary/fhir-diagnostic-report.md b/knowledge/glossary/fhir-diagnostic-report.md index 9338687..6eee898 100644 --- a/knowledge/glossary/fhir-diagnostic-report.md +++ b/knowledge/glossary/fhir-diagnostic-report.md @@ -4,7 +4,7 @@ title: FHIR DiagnosticReport description: The HL7 FHIR resource for a diagnostic report, used in OIDM as the interchange encoding of an Exam Finding List. tags: [glossary, data-structures, fhir] status: draft -generated: { by: claude-opus-5/claude-code, at: 2026-09-21T16:00:00Z } +generated: { by: codex/gpt-6, at: 2026-09-21T20:53:02Z } sources: - id: fhir resource: https://www.hl7.org/fhir/diagnosticreport.html @@ -22,9 +22,9 @@ sources: # FHIR DiagnosticReport -The HL7 FHIR resource for a diagnostic report.[^fhir] In OIDM it is the documented interchange encoding of an [Exam Finding List](/glossary/exam-finding-list.md): "DiagnosticReport containing a list of Observation objects, with a finding code on each Observation and a list of components with attribute codes and values (especially present/absent and change from prior)."[^ipl-readme] In an [Imaging Problem List](/glossary/imaging-problem-list.md), DiagnosticReports are what each observation points back to, giving the exam date and [LOINC](/glossary/loinc.md) exam type.[^ipl-readme] +The HL7 FHIR resource for a diagnostic report.[^fhir] In OIDM it is the documented interchange encoding of an [Exam Finding List](/glossary/exam-finding-list.md): "DiagnosticReport containing a list of Observation objects, with a finding code on each Observation and a list of components with attribute codes and values (especially present/absent and change from prior)."[^ipl-readme] In an [Imaging Problem List](/glossary/imaging-problem-list.md), each observation references a DiagnosticReport for its exam date and [LOINC](/glossary/loinc.md) exam type.[^ipl-readme] -The lineage sample shows the shape with real data: a report with a SNOMED and HL7 category, a LOINC `code`, an inline `ImagingStudy`, `result` references to three [Observations](/glossary/observation.md), and `conclusion` with SNOMED `conclusionCode`.[^fhir-sample] +The lineage sample contains a SNOMED and HL7 category, a LOINC `code`, an inline `ImagingStudy`, `result` references to three [Observations](/glossary/observation.md), and `conclusion` with SNOMED `conclusionCode`.[^fhir-sample] ## Synonyms and near-synonyms @@ -43,7 +43,7 @@ A FHIR resource identifier. The Exam Finding List samples use UUID strings. ## Conflicts -The mapping is documented and unimplemented. No FHIR resource classes exist in the extraction platform's source, and a search for DiagnosticReport across it returns nothing; the only real FHIR documents in the repository are two input samples. Those input samples also do not use the presence and change-from-prior component pattern the specification prescribes, because that pattern describes the output.[^ipl-readme] Separately, IHE IDR would encode the attribute layer with `hasMember` rather than components.[^idr-extract] +The mapping is documented but unimplemented. No FHIR resource classes exist in the extraction platform's source, and a search for DiagnosticReport across it returns nothing; the only real FHIR documents in the repository are two input samples. Those input samples also do not use the presence and change-from-prior component pattern the imaging-problem-list README prescribes, because that pattern describes the output.[^ipl-readme] Separately, IHE IDR would encode the attribute layer with `hasMember` rather than components.[^idr-extract] [^fhir]: DiagnosticReport resource, HL7 FHIR [^ipl-readme]: imaging-problem-list README diff --git a/knowledge/glossary/finding-class.md b/knowledge/glossary/finding-class.md index cd3216c..131d3f6 100644 --- a/knowledge/glossary/finding-class.md +++ b/knowledge/glossary/finding-class.md @@ -4,7 +4,7 @@ title: FindingClass description: The next-generation CDE vocabulary's node type for a finding definition, separated from diagnosis and carrying bindings to shared elements. tags: [glossary, semantic-foundation, cde, next-generation] status: draft -generated: { by: claude-opus-5/claude-code, at: 2026-09-21T16:00:00Z } +generated: { by: codex/gpt-6, at: 2026-09-21T20:53:02Z } sources: - id: cde-context resource: https://github.com/RSNA/ACR-RSNA-CDEs/blob/44836c19f4e025cf1684a015ed5cc63c29eaf7f3/CONTEXT.md @@ -19,7 +19,7 @@ sources: # FindingClass -The next-generation CDE vocabulary's node type for a finding definition: the counterpart of a [CDE set](/glossary/cde-set.md) or an OIDM [finding model](/glossary/finding-model.md) in a graph-shaped model. A FindingClass is described by ordinary [DataElements](/glossary/data-element.md) reached through [element bindings](/glossary/element-binding.md), sits in an is-a taxonomy of subtypes, and carries [standard clinical metadata](/glossary/tag.md): "the seven facts on a class: modality, body region, subspecialty, sex, age, time course, and etiology."[^cde-context] +The next-generation CDE vocabulary's node type for a finding definition: the counterpart of a [CDE set](/glossary/cde-set.md) or an OIDM [finding model](/glossary/finding-model.md) in a graph model. A FindingClass is described by ordinary [DataElements](/glossary/data-element.md) reached through [element bindings](/glossary/element-binding.md), sits in an is-a taxonomy of subtypes, and carries [standard clinical metadata](/glossary/tag.md): "the seven facts on a class: modality, body region, subspecialty, sex, age, time course, and etiology."[^cde-context] Two scoping mechanisms are defined on classes. [Anatomic scope](/glossary/anatomic-scope.md) states the eligible anatomical places, tissue types, or structure types for the definition. Component-of scope states "the finding classes a component class belongs inside, stated on the component class"; a class with a component-of scope "is never reported on its own," and component classes are specific to a lesion family.[^cde-context] @@ -43,7 +43,7 @@ Working identifiers in the alpha implementation take the form `FC-######`, for e ## Conflicts -IHE IDR uses "finding" for the presence-or-absence determination rather than for the named entity, and routes positive clinical findings to [FHIR Condition](/glossary/fhir-condition.md) while negative ones become Observations. The next-generation notes record a different working default, that every assertion in a radiology report including diagnoses is encoded as an Observation, and list the divergence as an item to raise with IHE.[^idr] +IHE IDR uses "finding" for the presence-or-absence determination rather than for the named entity, and routes positive clinical findings to [FHIR Condition](/glossary/fhir-condition.md) while negative ones become Observations. The next-generation working default encodes every radiology report assertion, including diagnoses, as an Observation. The notes list this difference for discussion with IHE.[^idr] [^cde-context]: CDE vocabulary, next-generation working glossary [^idr]: IHE IDR Phase II extract diff --git a/knowledge/glossary/finding-taxonomy.md b/knowledge/glossary/finding-taxonomy.md index c94e505..a0f1f58 100644 --- a/knowledge/glossary/finding-taxonomy.md +++ b/knowledge/glossary/finding-taxonomy.md @@ -4,7 +4,7 @@ title: Finding taxonomy description: One of the six MGB exam-oriented sub-taxonomies, per-modality hierarchies of finding names exported as CSV, that now set the content direction for the finding model corpus. tags: [glossary, semantic-foundation, finding-models, content] status: draft -generated: { by: claude-opus-5/claude-code, at: 2026-09-21T16:00:00Z } +generated: { by: codex/gpt-6, at: 2026-09-21T20:53:02Z } sources: - id: lists-readme resource: https://github.com/openimagingdata/findingmodels/blob/a30c3c95fa3943e7340ce87575f4b1b926987eb8/lists/README.md @@ -15,7 +15,7 @@ sources: One of the six MGB exam-oriented sub-taxonomies: per-modality hierarchies of radiology finding names, contributed by Mass General Brigham and exported to the `findingmodels` repository on 2026-08-15 as comma-separated files.[^lists-readme] They replaced the repository's earlier `lists/` content wholesale. -Each file is one hierarchy with the columns `name`, `category`, `parent`, `synonyms`, `finding_type`, `finding_cluster`, and `oifm_id`. Rows are keyed by `name`, unique within a file, so there is no separate identifier column. The `parent` column holds the parent row's `name`; blank means top level. "Parents are generic, children add specificity," the worked example being `lung_abnormality` then `airspace_opacity` then `air_bronchogram`. Two columns are deliberately outside the hierarchy: `category` is "an independent anatomic grouping, not part of the hierarchy," and `finding_type` "separates an observation from a diagnosis."[^lists-readme] +Each file is one hierarchy with the columns `name`, `category`, `parent`, `synonyms`, `finding_type`, `finding_cluster`, and `oifm_id`. The unique `name` keys each row within a file. There is no separate row identifier. `parent` holds the parent row's `name`, or is blank for a top-level row. "Parents are generic, children add specificity," as in `lung_abnormality`, then `airspace_opacity`, then `air_bronchogram`. Two columns are outside the hierarchy: `category` is "an independent anatomic grouping, not part of the hierarchy," and `finding_type` "separates an observation from a diagnosis."[^lists-readme] | File | Rows | OIFM IDs filled | |---|---:|---:| @@ -32,7 +32,7 @@ No identifiers were minted during the export. Filled rows were matched by exact ## Synonyms and near-synonyms - **Finding list** is the older name for the files these replaced. -- **[Finding taxonomy](/glossary/finding-taxonomy.md) is not a [finding model](/glossary/finding-model.md).** A taxonomy row is a name and a place in a hierarchy; a finding model is a full definition with attributes. +- A [finding taxonomy](/glossary/finding-taxonomy.md) row gives a name and hierarchy position. A [finding model](/glossary/finding-model.md) defines the finding and its attributes. - The taxonomies are named after their author in the source repository. This knowledgebase calls them the MGB exam-oriented sub-taxonomies. ## Identifier form diff --git a/knowledge/glossary/fma.md b/knowledge/glossary/fma.md index 67af5fb..d79e1c4 100644 --- a/knowledge/glossary/fma.md +++ b/knowledge/glossary/fma.md @@ -4,7 +4,7 @@ title: FMA description: The Foundational Model of Anatomy, used in OIDM as a cross-reference on anatomic locations and as the basis of the location type classification. tags: [glossary, semantic-foundation, terminologies, anatomy] status: draft -generated: { by: claude-opus-5/claude-code, at: 2026-09-21T16:00:00Z } +generated: { by: codex/gpt-6, at: 2026-09-21T20:53:02Z } sources: - id: fma resource: https://bioportal.bioontology.org/ontologies/FMA @@ -22,7 +22,7 @@ sources: # FMA -The Foundational Model of Anatomy, a reference ontology of human anatomy.[^fma] OIDM uses it in two ways. It is a cross-reference code on [anatomic locations](/glossary/anatomic-location.md), present on 1,643 of the 2,890 records in the curated set, the second most common system after [SNOMED CT](/glossary/snomed-ct.md).[^al-code] And its top-level organization supplies the shape of the `location_type` classification in the newer package, which maps material anatomical entity to structure, immaterial anatomical entity to space and region, body part to body_part, organ system to system, and set or collection to group.[^al-enums] +The Foundational Model of Anatomy, a reference ontology of human anatomy.[^fma] FMA cross-references appear on [anatomic locations](/glossary/anatomic-location.md), covering 1,643 of the 2,890 curated records. It is the second most common system after [SNOMED CT](/glossary/snomed-ct.md).[^al-code] Its top-level organization supplies the shape of the `location_type` classification in the newer package, which maps material anatomical entity to structure, immaterial anatomical entity to space and region, body part to body_part, organ system to system, and set or collection to group.[^al-enums] FMA is also one of the five terminologies the `molu` lookup tool spans, and the planned `anatomy` profile names FMA first, with the note that "RadLex imaging anatomy sits next to FMA."[^molu] diff --git a/knowledge/glossary/gamuts.md b/knowledge/glossary/gamuts.md index 09272f9..4580311 100644 --- a/knowledge/glossary/gamuts.md +++ b/knowledge/glossary/gamuts.md @@ -4,7 +4,7 @@ title: Gamuts description: The Radiology Gamuts Ontology, source of the largest single block of finding model definitions and of the GMTS organization code. tags: [glossary, semantic-foundation, terminologies, content] status: draft -generated: { by: claude-opus-5/claude-code, at: 2026-09-21T16:00:00Z } +generated: { by: codex/gpt-6, at: 2026-09-21T20:53:02Z } sources: - id: gamuts resource: https://gamuts.net/ @@ -22,7 +22,7 @@ sources: # Gamuts -The Radiology Gamuts Ontology, a published ontology of radiologic differential diagnosis lists, at `gamuts.net`.[^gamuts] In OIDM it plays two roles at once: it is an [index code](/glossary/index-code.md) system listed alongside SNOMED and RadLex as one of the common ontologies,[^claude-md] and it is a registered contributing organization whose [organization code](/glossary/oidm-organization-code.md) is `GMTS`.[^orgs] +The Radiology Gamuts Ontology, a published ontology of radiologic differential diagnosis lists, at `gamuts.net`.[^gamuts] OIDM uses it as an [index code](/glossary/index-code.md) system listed alongside SNOMED and RadLex as one of the common ontologies,[^claude-md] and it is a registered contributing organization whose [organization code](/glossary/oidm-organization-code.md) is `GMTS`.[^orgs] Gamuts is the single largest source of finding model content. Of the 2,382 definitions published in the corpus, 1,933 carry an `OIFM_GMTS_` identifier, credited to the Radiology Gamuts Ontology as the contributing organization. They were produced by a script that scrapes gamut pages, structures the terms with a language model, and emits them for conversion into definitions. @@ -31,7 +31,7 @@ Gamuts is the single largest source of finding model content. Of the 2,382 defin - **Radiology Gamuts Ontology** is the full name; **gamut** alone means one differential list. - **`GMTS`** is the organization code and the middle segment of the identifiers. - **`GAMUTS`** is the `system` string when a gamut concept is cited as an index code. -- **[Finding taxonomy](/glossary/finding-taxonomy.md)** is the newer content spine that is expected to supersede much of this material. +- **[Finding taxonomy](/glossary/finding-taxonomy.md)** is the newer content source expected to supersede much of this material. ## Identifier form @@ -43,7 +43,7 @@ Finding models derived from this source carry `OIFM_GMTS_######`, for example `O ## Conflicts -A gamut is a differential diagnosis list, so Gamuts-derived definitions carry diagnoses where OIDM's authoring guidance would sometimes want an observation. The open definition cleanup plan lists "gamuts reclassification" as a step that "needs design discussion," and it is the one step in that plan with no agreed approach.[^cleanup] The content roadmap expects the MGB exam-oriented sub-taxonomies to replace many of these definitions. +A gamut is a differential diagnosis list, so Gamuts-derived definitions carry diagnoses where OIDM's authoring guidance would sometimes want an observation. The open definition cleanup plan lists "gamuts reclassification" as a step that "needs design discussion," the only step without an agreed approach.[^cleanup] The content roadmap expects the MGB exam-oriented sub-taxonomies to replace many of these definitions. [^gamuts]: Radiology Gamuts Ontology [^orgs]: Base organization registry diff --git a/knowledge/glossary/imaging-diagnostic-report.md b/knowledge/glossary/imaging-diagnostic-report.md index 64899cc..0112915 100644 --- a/knowledge/glossary/imaging-diagnostic-report.md +++ b/knowledge/glossary/imaging-diagnostic-report.md @@ -4,7 +4,7 @@ title: Imaging Diagnostic Report (IHE IDR) description: The IHE Radiology profile that specifies how a diagnostic imaging report and its findings are encoded as FHIR resources. tags: [glossary, data-structures, fhir, ihe] status: draft -generated: { by: claude-opus-5/claude-code, at: 2026-09-21T16:00:00Z } +generated: { by: codex/gpt-6, at: 2026-09-21T20:53:02Z } sources: - id: idr-supplement resource: https://www.ihe.net/uploadedFiles/Documents/Radiology/IHE_RAD_Suppl_IDR_PhII_Rev1-2_PC_2026-03-04.pdf @@ -19,7 +19,7 @@ sources: # Imaging Diagnostic Report (IHE IDR) -The Integrating the Healthcare Enterprise Radiology profile that specifies how a diagnostic imaging report and the findings inside it are encoded as FHIR resources. Phase II went out for public comment in March 2026.[^idr-supplement] The deck names the connection from the OIDM side: an [Exam Finding List](/glossary/exam-finding-list.md) "connects to IHE Imaging Diagnostic Report (IDR) FHIR representation."[^deck] +The Integrating the Healthcare Enterprise Radiology profile that specifies how a diagnostic imaging report and the findings inside it are encoded as FHIR resources. Phase II went out for public comment in March 2026.[^idr-supplement] The deck states that an [Exam Finding List](/glossary/exam-finding-list.md) "connects to IHE Imaging Diagnostic Report (IDR) FHIR representation."[^deck] IDR's information model, "heavily influenced by modelling in SNOMED and DICOM," defines three terms OIDM must map onto. Body Structure "encompasses both anatomical structures and morphologic abnormalities (like a lesion, cyst, inflammation, aneurysm, fracture or abscess)." An imaging observation is "a feature or characteristic that is visible in an image," encoded as a FHIR `Observation`. A clinical finding is "the determination that a clinical entity is present or absent," with positive findings encoded as [FHIR Condition](/glossary/fhir-condition.md) and negative ones as Observations.[^idr-extract] @@ -41,7 +41,7 @@ None. IDR constrains FHIR resources and reuses their identifiers. ## Conflicts -IDR and OIDM disagree in three recorded places, all listed as items to raise during public comment. IDR's "finding" is the presence determination, not the named entity, and its "observation" is closer to what the next-generation vocabulary calls a data element value. IDR routes positive diagnoses to Condition while the OIDM working default is that every assertion in a report is an Observation. And IDR states that `Observation.component` "is not used," which is the mechanism every current OIDM encoding relies on.[^idr-extract] The IDR profile is not mentioned anywhere in the `imaging-problem-list` repository, so the alignment exists in the vocabulary work and the deck, not in code. +Three differences are recorded for public comment. IDR's "finding" is the presence determination, not the named entity, and its "observation" is closer to what the next-generation vocabulary calls a data element value. IDR routes positive diagnoses to Condition while the OIDM working default is that every assertion in a report is an Observation. IDR states that `Observation.component` "is not used," which is the mechanism every current OIDM encoding relies on.[^idr-extract] The `imaging-problem-list` repository does not mention IDR. Alignment is documented only in the vocabulary work and the deck. [^idr-supplement]: IHE Imaging Diagnostic Report Phase II public comment draft [^idr-extract]: IHE IDR Phase II extract diff --git a/knowledge/glossary/index-code.md b/knowledge/glossary/index-code.md index 94eebfb..63271d1 100644 --- a/knowledge/glossary/index-code.md +++ b/knowledge/glossary/index-code.md @@ -4,7 +4,7 @@ title: Index code description: A reference from a finding model, attribute, or value to a concept in a standard ontology, carried as system, code, and optional display. tags: [glossary, semantic-foundation, terminologies] status: draft -generated: { by: claude-opus-5/claude-code, at: 2026-09-21T16:00:00Z } +generated: { by: codex/gpt-6, at: 2026-09-21T20:53:02Z } sources: - id: index-code resource: https://github.com/openimagingdata/findingmodel/blob/75afd39a400419dcfaf7c8d4a34f065b4d804e0d/packages/oidm-common/src/oidm_common/models/index_code.py @@ -22,9 +22,9 @@ sources: # Index code -A "code representing an entry in a standard ontology, e.g., SNOMED or RadLex, which can be applied to a finding or attribute. This is used to standardize the representation of findings and attributes across different systems and to facilitate interoperability between different systems."[^index-code] The shape is three fields: `system`, `code`, and an optional `display`. +A "code representing an entry in a standard ontology, e.g., SNOMED or RadLex, which can be applied to a finding or attribute. This is used to standardize the representation of findings and attributes across different systems and to facilitate interoperability between different systems."[^index-code] The fields are `system`, `code`, and an optional `display`. -Index codes may sit on a [finding model](/glossary/finding-model.md), on an [attribute](/glossary/attribute.md), or on an individual [attribute value](/glossary/attribute-value.md). The same type also carries a finding model's `anatomic_locations`, so an [anatomic location](/glossary/anatomic-location.md) reference on a finding model is structurally an index code, usually with `system: "RADLEX"`.[^index-code] +Index codes may appear on a [finding model](/glossary/finding-model.md), on an [attribute](/glossary/attribute.md), or on an individual [attribute value](/glossary/attribute-value.md). The same type also carries a finding model's `anatomic_locations`, so an [anatomic location](/glossary/anatomic-location.md) reference on a finding model is structurally an index code, usually with `system: "RADLEX"`.[^index-code] The systems most used in the corpus are [SNOMED CT](/glossary/snomed-ct.md), [RadLex](/glossary/radlex.md), and [Gamuts](/glossary/gamuts.md), with [RadElement](/glossary/radelement.md) appearing on CDE-derived definitions.[^claude-md] @@ -32,7 +32,7 @@ The systems most used in the corpus are [SNOMED CT](/glossary/snomed-ct.md), [Ra - **Coding** in FHIR is the analogous triple of `system`, `code`, and `display`. The [CDE-labeled FHIR Observation](/glossary/cde-labeled-fhir-observation.md) pattern uses it the same way. - **Standard code** and **ontology code** are informal names for the same thing. -- **[Index code](/glossary/index-code.md) is not a crosswalk.** It asserts a reference, not an equivalence class across systems. +- An [index code](/glossary/index-code.md) references a concept without defining a crosswalk or asserting equivalence across systems. ## Identifier form @@ -44,7 +44,7 @@ None of its own. The code inside follows the referenced system, for example `RID ## Conflicts -The in-flight metadata rewrite tightens the rule to say that a canonical `index_codes` entry "must be an exact match or a clinically substitutable near-equivalent for the full model concept," sending broader, narrower, and complication-specific codes to a separate review artifact instead.[^metadata-rewrite] The corpus on `main` predates that rule. Separately, the CDE Set schema constrains an index code `system` to `RADLEX`, `SNOMEDCT`, or `LOINC` while the RadElement API does not appear to constrain it, and OIFM does not constrain it either.[^cde-set-schema] +The metadata rewrite in progress requires that an `index_codes` entry "must be an exact match or a clinically substitutable near-equivalent for the full model concept," sending broader, narrower, and complication-specific codes to a separate review artifact instead.[^metadata-rewrite] The corpus on `main` predates that rule. Separately, the CDE Set schema constrains an index code `system` to `RADLEX`, `SNOMEDCT`, or `LOINC` while the RadElement API does not appear to constrain it, and OIFM does not constrain it either.[^cde-set-schema] [^index-code]: IndexCode model in the oidm-common package [^claude-md]: findingmodels repository conventions diff --git a/knowledge/glossary/index.md b/knowledge/glossary/index.md index 702284d..d0d34d6 100644 --- a/knowledge/glossary/index.md +++ b/knowledge/glossary/index.md @@ -1,6 +1,6 @@ # Glossary -One term per file: a precise definition drawn from the sources, its synonyms and near-synonyms, its identifier form where it has one, where it is used, and any conflict between sources. Terms are listed alphabetically. +Each term has a sourced definition, synonyms and near-synonyms, any identifier format, usage links, and source disagreements. Entries are alphabetical, one term per file. * [Anatomic location](./anatomic-location.md) - A curated anatomic concept identified by a RadLex identifier, placed in containment and part-of hierarchies with laterality variants and cross-ontology codes. * [Anatomic scope](./anatomic-scope.md) - The eligible anatomical places, tissue types, or structure types for a definition, stated as a constraint rather than as a location. diff --git a/knowledge/glossary/laterality.md b/knowledge/glossary/laterality.md index cbe160b..c557f0a 100644 --- a/knowledge/glossary/laterality.md +++ b/knowledge/glossary/laterality.md @@ -4,7 +4,7 @@ title: Laterality description: The left, right, or unsided character of an anatomic structure or a finding, represented as a triad of linked variants and resolved by a stated precedence. tags: [glossary, semantic-foundation, anatomy] status: draft -generated: { by: claude-opus-5/claude-code, at: 2026-09-21T16:00:00Z } +generated: { by: codex/gpt-6, at: 2026-09-21T20:53:02Z } sources: - id: bpi resource: https://github.com/talkasab/BodyPartIndex.py/blob/388ae0a6da92f5ee4cf36620bbeeabe223938471/README.md @@ -24,7 +24,7 @@ sources: Whether a structure or a finding is left, right, or neither. The curated anatomic sets represent it structurally: "for cases where the body part is sided, the index contains three versions: an unsided version, a left-sided version, and a right-sided version. All of these are aware of each other."[^bpi] The newer package makes this an enumeration with four values, `generic` for a structure that has left and right variants, `left`, `right`, and `nonlateral` for a structure with no sides at all such as the heart or the spine.[^al-package] -Assigning laterality to a finding follows a stated precedence: explicit side in the text beats a sided exam, which beats the generic unsided structure. A non-sided exam never introduces a side. Laterality must be resolved "against the full report section, not the finding's isolated quote," because the side is often stated only in a section header or an earlier sentence, and a side is never inferred across exams or from clinical priors.[^rules] +Laterality assignment follows this precedence: explicit side in the text beats a sided exam, which beats the generic unsided structure. A non-sided exam never introduces a side. Laterality must be resolved "against the full report section, not the finding's isolated quote," because the side is often stated only in a section header or an earlier sentence, and a side is never inferred across exams or from clinical priors.[^rules] Bilateral findings split or do not split by a stated test. Discrete independent lesions per side become two findings; a single diffuse entity named as one, an "-osis" or a "disease," stays generic and unsided. The operational test is whether "you could meaningfully say the left one is larger or newer."[^rules] @@ -44,7 +44,7 @@ In the original set, sided variants take composite identifiers such as `RID294_R ## Conflicts -IHE IDR keeps laterality in a separate FHIR field on an unsided structure code, while OIDM's anatomy nodes are themselves sided. The IDR extract lists a stated mapping between the two, sided identifier and unsided identifier plus laterality, as something still needed so both directions round-trip.[^idr] A known defect in the `findingmodel` issue list also reports that laterality is assigned backwards during one database build step. +IHE IDR keeps laterality in a separate FHIR field on an unsided structure code, while OIDM's anatomy nodes are themselves sided. The IDR extract records a reversible mapping between sided identifiers and unsided identifiers with a laterality field as something still needed so both directions round-trip.[^idr] A known defect in the `findingmodel` issue list also reports that laterality is assigned backwards during one database build step. [^bpi]: BodyPartIndex.py README [^al-package]: Laterality enumeration in the anatomic-locations package diff --git a/knowledge/glossary/loinc-rsna-radiology-playbook.md b/knowledge/glossary/loinc-rsna-radiology-playbook.md index edf7ddf..0256ef4 100644 --- a/knowledge/glossary/loinc-rsna-radiology-playbook.md +++ b/knowledge/glossary/loinc-rsna-radiology-playbook.md @@ -4,7 +4,7 @@ title: LOINC/RSNA Radiology Playbook description: The jointly governed radiology part of LOINC that names imaging orderables along modality, anatomy, and technique axes. tags: [glossary, semantic-foundation, terminologies, exam-types] status: draft -generated: { by: claude-opus-5/claude-code, at: 2026-09-21T16:00:00Z } +generated: { by: codex/gpt-6, at: 2026-09-21T20:53:02Z } sources: - id: playbook resource: https://loinc.org/committee/radiology/ @@ -24,7 +24,7 @@ sources: The radiology portion of [LOINC](/glossary/loinc.md), developed jointly by the Regenstrief Institute and the RSNA, which names imaging orderables along axes such as modality, anatomy, and technique.[^playbook] It is "actively governed, and freely licensed for commercial and non-commercial use. The Playbook ships twice yearly under joint Regenstrief/RSNA governance, but it is a separate artifact" from [RadLex](/glossary/radlex.md).[^current-understanding] -In OIDM the Playbook is the stated basis for [exam types](/glossary/exam-type.md), and it appears only in design documents. The terminology tool's roadmap makes it "first-class in `radiology`," planning to detect both LOINC codes and legacy `RPID` Playbook identifiers, to rank orderable queries toward Playbook terms while ranking finding and anatomy queries toward RadLex, and to carry Playbook, RPID, and RadLex anatomy correspondences in crosswalk provenance.[^roadmap] The earliest statement of the idea is older still: the curated anatomic location set's roadmap calls for "a companion for exam types based on LOINC/RadLex Playbook exam definitions that specify all included body parts for the exam."[^al-site] +In OIDM the Playbook is the stated basis for [exam types](/glossary/exam-type.md), and it appears only in design documents. The terminology roadmap makes it "first-class in `radiology`," with planned detection of LOINC codes and legacy `RPID` Playbook identifiers. Orderable queries would favor Playbook terms, and finding and anatomy queries would favor RadLex. Crosswalk provenance would record Playbook, RPID, and RadLex anatomy correspondences.[^roadmap] The earliest statement of the idea is older still: the curated anatomic location set's roadmap calls for "a companion for exam types based on LOINC/RadLex Playbook exam definitions that specify all included body parts for the exam."[^al-site] ## Synonyms and near-synonyms diff --git a/knowledge/glossary/loinc.md b/knowledge/glossary/loinc.md index 16e5988..e1baf15 100644 --- a/knowledge/glossary/loinc.md +++ b/knowledge/glossary/loinc.md @@ -27,7 +27,7 @@ sources: Logical Observation Identifiers Names and Codes, the Regenstrief Institute's system for identifying laboratory and clinical observations, including imaging procedures.[^loinc] In OIDM, LOINC's job is [exam type](/glossary/exam-type.md) identification, not finding identification. -An [Exam Finding List](/glossary/exam-finding-list.md) carries the exam's LOINC code as `examInfo.studyLoincCode`, described as "LOINC codes: Used for exam type identification (e.g., '72133-2' = CT Abdomen and Pelvis Without Contrast)."[^ipl-claude] The specification says the structure "must also have basic information (keyed by a curated list of LOINC codes) about what exam this is."[^ipl-readme] The lineage FHIR sample codes its DiagnosticReport the same way, with `87279-6 CT Chest for Screening`.[^fhir-sample] +An [Exam Finding List](/glossary/exam-finding-list.md) carries the exam's LOINC code as `examInfo.studyLoincCode`, described as "LOINC codes: Used for exam type identification (e.g., '72133-2' = CT Abdomen and Pelvis Without Contrast)."[^ipl-claude] The imaging-problem-list README says the structure "must also have basic information (keyed by a curated list of LOINC codes) about what exam this is."[^ipl-readme] The lineage FHIR sample codes its DiagnosticReport the same way, with `87279-6 CT Chest for Screening`.[^fhir-sample] The division of labour is stated in the terminology roadmap: radiology "orderables live in the LOINC/RSNA Radiology Playbook, while findings, anatomy, and report language live in RadLex."[^roadmap] @@ -48,7 +48,7 @@ Digits, a hyphen, and a check digit, for example `72133-2`. The lookup tooling a ## Conflicts -The "curated list of LOINC codes" the specification refers to does not exist as an artifact. Exam types are documented as goals and as building blocks, not as a published catalog; see [Exam types](/roadmap/exam-types.md). +The "curated list of LOINC codes" that exam-type documents refer to does not exist as an artifact. Exam types are documented as goals and as building blocks, not as a published catalog; see [Exam types](/roadmap/exam-types.md). [^loinc]: LOINC, Regenstrief Institute [^ipl-claude]: imaging-problem-list domain model, dev branch diff --git a/knowledge/glossary/observation.md b/knowledge/glossary/observation.md index ea59576..21ed990 100644 --- a/knowledge/glossary/observation.md +++ b/knowledge/glossary/observation.md @@ -4,7 +4,7 @@ title: Observation description: The atomic unit of OIDM data, one finding seen or excluded on one exam, with its anatomic location and attribute values. tags: [glossary, data-structures] status: draft -generated: { by: claude-opus-5/claude-code, at: 2026-09-21T16:00:00Z } +generated: { by: codex/gpt-6, at: 2026-09-21T20:53:02Z } sources: - id: deck resource: https://gamma.app/docs/Open-Imaging-Data-Model-2026-Status-Update:-Realizing-Object-Oriented-Imaging-Results-yfxzx4q9zssafal @@ -29,7 +29,7 @@ The atomic unit of OIDM data: one finding, seen or explicitly excluded, on one e In the current [Exam Finding List](/glossary/exam-finding-list.md) format an observation is one entry in the `findings` array, with an `observationId`, a `findingCode` and description, an `attributes` array, an optional `anatomicLocation`, and an optional verbatim `reportText`. Repeat instances are separate observations: "the same finding type may appear multiple times, for example multiple kidney stones, and each gets its own entry with a unique `observationId`."[^ipl-claude] -The FHIR lineage is direct. The 2024 reference implementation's `Observation` class states "the Observation class is the model for FHIR Observation objects," with `code`, `status`, `subject`, `bodySite`, `derivedFrom`, and a discriminated union of components.[^lineage-obs] +The 2024 reference implementation's `Observation` class states "the Observation class is the model for FHIR Observation objects," with `code`, `status`, `subject`, `bodySite`, `derivedFrom`, and a discriminated union of components.[^lineage-obs] ## Synonyms and near-synonyms diff --git a/knowledge/glossary/oifm.md b/knowledge/glossary/oifm.md index 093dac8..6ba2bb8 100644 --- a/knowledge/glossary/oifm.md +++ b/knowledge/glossary/oifm.md @@ -4,7 +4,7 @@ title: OIFM description: Open Imaging Finding Model, the OIDM specification for a finding definition, and the prefix of the identifiers that specification mints. tags: [glossary, semantic-foundation, finding-models] status: draft -generated: { by: claude-opus-5/claude-code, at: 2026-09-21T16:00:00Z } +generated: { by: codex/gpt-6, at: 2026-09-21T20:53:02Z } sources: - id: fm-py resource: https://github.com/openimagingdata/findingmodel/blob/75afd39a400419dcfaf7c8d4a34f065b4d804e0d/packages/findingmodel/src/findingmodel/finding_model.py @@ -19,7 +19,7 @@ sources: # OIFM -**Open Imaging Finding Model (OIFM).** The OIDM specification that defines what a [finding model](/glossary/finding-model.md) is: a named radiology finding with a description, optional synonyms and tags, a list of characterizing [attributes](/glossary/attribute.md), optional [anatomic locations](/glossary/anatomic-location.md) and [index codes](/glossary/index-code.md), and optional [contributors](/glossary/contributor.md).[^fm-schema] The canonical statement of the format is the `FindingModelFull` Pydantic model in the `findingmodel` package.[^fm-py] +**Open Imaging Finding Model (OIFM).** The OIDM specification that defines what a [finding model](/glossary/finding-model.md) is: a named radiology finding with a description, optional synonyms and tags, a list of characterizing [attributes](/glossary/attribute.md), optional [anatomic locations](/glossary/anatomic-location.md) and [index codes](/glossary/index-code.md), and optional [contributors](/glossary/contributor.md).[^fm-schema] The format is defined by the `FindingModelFull` Pydantic model in the `findingmodel` package.[^fm-py] "OIFM" is also the literal prefix of the identifier minted for each finding model, which is why the two senses are easy to confuse. The deck expands the acronym as "Open Imaging Finding Models" when counting content, reporting nearly 3,000 definitions.[^deck] diff --git a/knowledge/glossary/presence.md b/knowledge/glossary/presence.md index 7f72679..57a1535 100644 --- a/knowledge/glossary/presence.md +++ b/knowledge/glossary/presence.md @@ -4,7 +4,7 @@ title: Presence description: The near-universal first attribute of a finding model, asserting that a finding was present, absent, indeterminate, or unknown, and the dot-code convention that encodes those values. tags: [glossary, semantic-foundation, data-structures] status: draft -generated: { by: claude-opus-5/claude-code, at: 2026-09-21T16:00:00Z } +generated: { by: codex/gpt-6, at: 2026-09-21T20:53:02Z } sources: - id: overview resource: https://github.com/RSNA/ACR-RSNA-CDEs/blob/44836c19f4e025cf1684a015ed5cc63c29eaf7f3/notes/oifm-overview.md @@ -27,15 +27,15 @@ sources: The assertion that a finding was present, absent, indeterminate, or unknown on an exam. Authoring guidance makes it the required first [attribute](/glossary/attribute.md) of every [finding model](/glossary/finding-model.md), with the value set "absent, present, indeterminate, unknown."[^overview] -Presence carries the project's central claim that a negative is data. "Findings must cover negative assertions. When a radiologist states 'no fracture' or 'upper abdomen is unremarkable,' that's an active observation of absence that needs to be captured... The `presence: absent` observation is clinically meaningful, it means the finding was looked for and not found."[^overview] +"Findings must cover negative assertions. When a radiologist states 'no fracture' or 'upper abdomen is unremarkable,' that's an active observation of absence that needs to be captured... The `presence: absent` observation is clinically meaningful, it means the finding was looked for and not found."[^overview] -**The dot-code convention.** Value codes are generated by appending a dot and the value's zero-based position in the attribute's value list.[^fm-py] Where the standard ordering is used, that gives `.0` absent, `.1` present, `.2` indeterminate, `.3` unknown, which is the convention consuming code documents: "`.1` = present, `.0` = absent."[^ipl-claude] Across the 2,382 published definitions, 2,261 carry a presence attribute and 2,223 of those use that ordering. +Value codes append a dot and the value's zero-based position in the attribute's value list.[^fm-py] The standard ordering gives `.0` absent, `.1` present, `.2` indeterminate, `.3` unknown, which is the convention consuming code documents: "`.1` = present, `.0` = absent."[^ipl-claude] Across the 2,382 published definitions, 2,261 carry a presence attribute and 2,223 of those use that ordering. ## Synonyms and near-synonyms - **Presence or absence** and **present/absent** describe the same attribute. - **Detected** is IHE IDR's value for the same assertion.[^idr] -- **Indeterminate** means the exam could not determine it; **unknown** means it was not assessed. The two are distinct values, not spellings of one. +- **Indeterminate** means the exam could not determine it; **unknown** means it was not assessed. These are distinct values. - **[Change from prior](/glossary/change-from-prior.md)** is the companion second attribute, not part of presence. ## Identifier form diff --git a/knowledge/glossary/provenance.md b/knowledge/glossary/provenance.md index ff4e10f..5fe5ecf 100644 --- a/knowledge/glossary/provenance.md +++ b/knowledge/glossary/provenance.md @@ -4,7 +4,7 @@ title: Provenance description: The record of where an observation came from, a radiologist, an AI tool, or a language model reading a report, and of the text that supports it. tags: [glossary, data-structures, extraction] status: draft -generated: { by: claude-opus-5/claude-code, at: 2026-09-21T16:00:00Z } +generated: { by: codex/gpt-6, at: 2026-09-21T20:53:02Z } sources: - id: ipl-readme resource: https://github.com/openimagingdata/imaging-problem-list/blob/06f64a7893b444b761dc069ed86140a081195eac/README.md @@ -25,15 +25,15 @@ sources: # Provenance -The record of where an [observation](/glossary/observation.md) came from. The [Exam Finding List](/glossary/exam-finding-list.md) specification states the requirement directly: findings "can be generated by LLM from an existing report or generated live during exam time; each Observation should include some kind of provenance marker."[^ipl-readme] +The record of where an [observation](/glossary/observation.md) came from. The [Exam Finding List](/glossary/exam-finding-list.md) specification requires a marker: findings "can be generated by LLM from an existing report or generated live during exam time; each Observation should include some kind of provenance marker."[^ipl-readme] -Provenance matters because sources are not interchangeable. The deck lists AI validation as a stated ACR priority, specifically the ability to "correlate AI vs radiologist Observations," which is only possible if the two are distinguishable.[^deck] The lineage FHIR samples make the distinction with FHIR `status`: an AI-generated finding carries `preliminary` and the radiologist's carries `final`, with otherwise identical structure.[^fhir-ai] +The deck lists AI validation as a stated ACR priority, requiring the ability to "correlate AI vs radiologist Observations," which is only possible if the two are distinguishable.[^deck] The lineage FHIR samples make the distinction with FHIR `status`: an AI-generated finding carries `preliminary` and the radiologist's carries `final`, with otherwise identical structure.[^fhir-ai] -A second kind of provenance operates within a report. Every extracted finding carries a verbatim `report_text` quote, validated as verbatim rather than paraphrased, so a consumer can see the sentence the structure came from.[^extraction-plan] That quote is what the reviewing tools display and what the evaluation design keys on. +A second kind of provenance operates within a report. Each extracted finding carries a `report_text` quote, validated as verbatim rather than paraphrased, identifying its source sentence.[^extraction-plan] That quote is what the reviewing tools display and what the evaluation design keys on. ## Synonyms and near-synonyms -- **Provenance marker** is the specification's phrase for the field. +- **Provenance marker** is the imaging-problem-list README's phrase for the field. - **Source** and **attribution** are informal equivalents. - **`status`** in FHIR is the field the lineage samples use to carry it. - **Verbatim quote** is evidence for one observation, not a statement of who produced it. diff --git a/knowledge/glossary/radelement.md b/knowledge/glossary/radelement.md index 99af3ed..35f1b23 100644 --- a/knowledge/glossary/radelement.md +++ b/knowledge/glossary/radelement.md @@ -4,7 +4,7 @@ title: RadElement description: The ACR and RSNA registry that publishes common data element sets and elements, and the coding system their identifiers belong to. tags: [glossary, semantic-foundation, terminologies, cde] status: draft -generated: { by: claude-opus-5/claude-code, at: 2026-09-21T16:00:00Z } +generated: { by: codex/gpt-6, at: 2026-09-21T20:53:02Z } sources: - id: cde-repo resource: https://github.com/openimagingdata/common_data_elements/blob/35536d8c858bcd33e730a00c919edaef2e310a0b/README.md @@ -42,7 +42,7 @@ RadElement is downstream of authoring. Informal definitions are drafted in `CDES ## Conflicts -There is no settled coding-system URI for RadElement codes. IHE IDR asks the question directly, "What is the Coding System identifier for Radelement codes?", and the next-generation work records it as open.[^idr] In practice three forms are in use: `https://radelement.org` in FHIR samples, `RADELEMENT` as an index code system string, and a proposed `RDE2` base in the next-generation notes. Separately, RadElement coverage was found missing from ontology search during metadata enrichment, which made `index_codes` the weakest-scoring field in that pipeline.[^index-fixture] +There is no settled coding-system URI for RadElement codes. IHE IDR asks, "What is the Coding System identifier for Radelement codes?", and the next-generation work records it as open.[^idr] Three forms appear in the sources: `https://radelement.org` in FHIR samples, `RADELEMENT` as an index code system string, and a proposed `RDE2` base in the next-generation notes. Separately, RadElement coverage was found missing from ontology search during metadata enrichment, which made `index_codes` the weakest-scoring field in that pipeline.[^index-fixture] [^cde-repo]: common_data_elements repository README [^radelement]: RadElement registry diff --git a/knowledge/glossary/radlex.md b/knowledge/glossary/radlex.md index 5aa5bfb..f03ab33 100644 --- a/knowledge/glossary/radlex.md +++ b/knowledge/glossary/radlex.md @@ -4,7 +4,7 @@ title: RadLex description: The RSNA radiology lexicon, the ontology that supplies identifiers for anatomic locations and many finding and attribute codes. tags: [glossary, semantic-foundation, terminologies] status: draft -generated: { by: claude-opus-5/claude-code, at: 2026-09-21T16:00:00Z } +generated: { by: codex/gpt-6, at: 2026-09-21T20:53:02Z } sources: - id: radlex resource: https://radlex.org/ diff --git a/knowledge/glossary/snomed-ct.md b/knowledge/glossary/snomed-ct.md index 21aded2..198fa42 100644 --- a/knowledge/glossary/snomed-ct.md +++ b/knowledge/glossary/snomed-ct.md @@ -4,7 +4,7 @@ title: SNOMED CT description: The clinical terminology used in OIDM as a secondary coding system on findings, attribute values, and anatomic locations. tags: [glossary, semantic-foundation, terminologies] status: draft -generated: { by: claude-opus-5/claude-code, at: 2026-09-21T16:00:00Z } +generated: { by: codex/gpt-6, at: 2026-09-21T20:53:02Z } sources: - id: snomed resource: https://www.snomed.org/ @@ -25,7 +25,7 @@ sources: # SNOMED CT -The Systematized Nomenclature of Medicine Clinical Terms, the general clinical terminology.[^snomed] In OIDM it is a secondary coding system rather than a primary key. It appears in three places: as an [index code](/glossary/index-code.md) system on [finding models](/glossary/finding-model.md), [attributes](/glossary/attribute.md), and [attribute values](/glossary/attribute-value.md), listed alongside [RadLex](/glossary/radlex.md) and [Gamuts](/glossary/gamuts.md) as one of the common ontologies;[^claude-md] as a cross-reference on [anatomic locations](/glossary/anatomic-location.md), present on 1,732 of the 2,890 records in the curated set;[^al-code] and in the FHIR lineage samples as the code system for a report's category and its conclusion codes.[^fhir-sample] +The Systematized Nomenclature of Medicine Clinical Terms, the general clinical terminology.[^snomed] OIDM uses it for secondary codes, not primary keys. Alongside [RadLex](/glossary/radlex.md) and [Gamuts](/glossary/gamuts.md), it supplies [index codes](/glossary/index-code.md) on [finding models](/glossary/finding-model.md), [attributes](/glossary/attribute.md), and [attribute values](/glossary/attribute-value.md).[^claude-md] SNOMED CT cross-references appear on 1,732 of 2,890 curated [anatomic locations](/glossary/anatomic-location.md).[^al-code] FHIR lineage samples use it for report category and conclusion codes.[^fhir-sample] Typical use on a value is the qualifier hierarchy, for example `52101004` for Present and `2667000` for Absent, paired with the equivalent RadLex codes on the same value. @@ -45,7 +45,7 @@ A numeric concept identifier, for example `23043003` for uterine adnexa. ## Conflicts -SNOMED CT is licensed, which is why the lookup tooling treats it as a credentialed backend and keeps licensed behavior opt-in and visible rather than implicit.[^molu] The curated anatomic set also records "complete SNOMED identification" as unfinished roadmap work, so SNOMED coverage of anatomic locations is partial by design. +SNOMED CT requires a licence. The lookup tooling keeps licensed behavior opt-in and visible rather than implicit.[^molu] The curated anatomic set also records "complete SNOMED identification" as unfinished roadmap work, so SNOMED coverage of anatomic locations is partial by design. [^snomed]: SNOMED International [^molu]: med-ontology-lookup README diff --git a/knowledge/glossary/tag.md b/knowledge/glossary/tag.md index c79c5dc..0a09e80 100644 --- a/knowledge/glossary/tag.md +++ b/knowledge/glossary/tag.md @@ -4,7 +4,7 @@ title: Tag description: A free-text clinical category attached to a finding model for organization and retrieval, distinct from the typed structured metadata that is replacing it. tags: [glossary, semantic-foundation, finding-models] status: draft -generated: { by: claude-opus-5/claude-code, at: 2026-09-21T16:00:00Z } +generated: { by: codex/gpt-6, at: 2026-09-21T20:53:02Z } sources: - id: fm-py resource: https://github.com/openimagingdata/findingmodel/blob/75afd39a400419dcfaf7c8d4a34f065b4d804e0d/packages/findingmodel/src/findingmodel/finding_model.py @@ -21,7 +21,7 @@ sources: "Tags that might be used to categorize the finding among other findings."[^fm-py] Tags are an optional list of free-text strings on a [finding model](/glossary/finding-model.md). The authoring guidance describes them as "clinical categories (anatomy, modality, etiology) for organization and retrieval."[^overview] -Tags are untyped and unvalidated. A real definition in the corpus carries `["ultrasound", "CT", "US", "XR", "urological", "obstructive", "diagnosis"]` on one finding, mixing modality abbreviations, two spellings of the same modality, a subspecialty, an etiology, and an entity type in one list. That looseness is the reason the metadata rewrite exists. +Tags are untyped and unvalidated. A real definition in the corpus carries `["ultrasound", "CT", "US", "XR", "urological", "obstructive", "diagnosis"]`, mixing modality abbreviations, two spellings of the same modality, a subspecialty, an etiology, and an entity type in one list. The metadata rewrite addresses this inconsistency. ## Synonyms and near-synonyms @@ -40,7 +40,7 @@ None. Tags are bare strings with no registry. ## Conflicts -Tags and the new typed fields overlap: a tag reading `CT` and an `applicable_modalities` entry of `CT` say the same thing in two places. The rewrite states that structured metadata should be canonical model state rather than sidecar output, but it does not say what becomes of the existing tag lists, and nothing has landed on `main`.[^metadata-rewrite] +Tags and the new typed fields overlap: a tag reading `CT` and an `applicable_modalities` entry of `CT` say the same thing in two places. The rewrite specifies that structured metadata should be the model's own state rather than sidecar output, but it does not say what becomes of the existing tag lists, and nothing has landed on `main`.[^metadata-rewrite] [^fm-py]: TagSequence field description in the findingmodel package [^overview]: "Finding Models: Overview" diff --git a/knowledge/glossary/technical-finding.md b/knowledge/glossary/technical-finding.md index c383e5a..e319c2e 100644 --- a/knowledge/glossary/technical-finding.md +++ b/knowledge/glossary/technical-finding.md @@ -4,7 +4,7 @@ title: Technical finding description: A finding stated in modality-specific imaging language, such as a density or signal characteristic, without committing to an underlying diagnosis. tags: [glossary, semantic-foundation, data-structures] status: draft -generated: { by: claude-opus-5/claude-code, at: 2026-09-21T16:00:00Z } +generated: { by: codex/gpt-6, at: 2026-09-21T20:53:02Z } sources: - id: tech resource: https://github.com/openimagingdata/imaging-problem-list/blob/36fa30c7383bf687d7bc17815282a93e123a56cb/docs/technical-imaging-findings.md @@ -23,7 +23,7 @@ A finding stated in modality-specific imaging language. "'Technical findings' de The reference catalogs them by modality: CT attenuation terms such as hypodense lesion and ground-glass opacity; MR signal terms such as diffusion restriction and marrow signal abnormality; enhancement and opacification patterns such as washout and filling defect; ultrasound echogenicity terms such as anechoic structure and posterior acoustic shadowing; and nuclear medicine terms such as FDG-avid lesion and photopenic area.[^tech] -The distinction that matters for coding is observation versus interpretation. "The same imaging appearance can be described at observation level ('T2 hyperintense marrow signal') or interpretation level ('marrow edema'). Reports often mix both. The ontology needs entries at the observation level to capture what's actually seen." The guidance is specific: "marrow signal abnormality should be searched as exactly that, it is the observation. Do NOT reinterpret as 'bone marrow edema' or 'marrow infiltration', which are specific diagnoses that may or may not be the cause."[^tech] +The distinction that matters for coding is observation versus interpretation. "The same imaging appearance can be described at observation level ('T2 hyperintense marrow signal') or interpretation level ('marrow edema'). Reports often mix both. The ontology needs entries at the observation level to capture what's actually seen." The guidance states: "marrow signal abnormality should be searched as exactly that, it is the observation. Do NOT reinterpret as 'bone marrow edema' or 'marrow infiltration', which are specific diagnoses that may or may not be the cause."[^tech] ## Synonyms and near-synonyms diff --git a/knowledge/glossary/umls.md b/knowledge/glossary/umls.md index eca1749..beb6621 100644 --- a/knowledge/glossary/umls.md +++ b/knowledge/glossary/umls.md @@ -4,7 +4,7 @@ title: UMLS description: The Unified Medical Language System, used in OIDM as the hub for translating identifiers between terminologies and as a cross-reference on anatomic locations. tags: [glossary, semantic-foundation, terminologies] status: draft -generated: { by: claude-opus-5/claude-code, at: 2026-09-21T16:00:00Z } +generated: { by: codex/gpt-6, at: 2026-09-21T20:53:02Z } sources: - id: umls resource: https://www.nlm.nih.gov/research/umls/index.html @@ -22,11 +22,11 @@ sources: # UMLS -The Unified Medical Language System, the US National Library of Medicine's integration of many source vocabularies under shared concept identifiers.[^umls] OIDM uses it for two jobs. +The Unified Medical Language System, the US National Library of Medicine's integration of many source vocabularies under shared concept identifiers.[^umls] -The first is crosswalking. The `molu` lookup tool resolves a concept to its UMLS concept unique identifiers and then translates to codes in other vocabularies; the stated design makes "UMLS as the CUI hub" part of the default radiology profile, alongside [RadLex](/glossary/radlex.md), [LOINC](/glossary/loinc.md), [SNOMED CT](/glossary/snomed-ct.md), and [FMA](/glossary/fma.md).[^roadmap][^molu] The roadmap is explicit that a crosswalk is not an equivalence: translation should preserve "mapping direction, scope, provenance, and strength instead of treating every cross-reference as equivalence."[^roadmap] +The `molu` lookup tool resolves a concept to its UMLS concept unique identifiers and then translates to codes in other vocabularies. The design makes "UMLS as the CUI hub" part of the default radiology profile, alongside [RadLex](/glossary/radlex.md), [LOINC](/glossary/loinc.md), [SNOMED CT](/glossary/snomed-ct.md), and [FMA](/glossary/fma.md).[^roadmap][^molu] The roadmap is explicit that a crosswalk is not an equivalence: translation should preserve "mapping direction, scope, provenance, and strength instead of treating every cross-reference as equivalence."[^roadmap] -The second is as a cross-reference code on [anatomic locations](/glossary/anatomic-location.md), present on 578 of the 2,890 records in the curated set.[^al-code] +UMLS also supplies cross-reference codes on [anatomic locations](/glossary/anatomic-location.md), present on 578 of the 2,890 records in the curated set.[^al-code] ## Synonyms and near-synonyms @@ -45,7 +45,7 @@ The second is as a cross-reference code on [anatomic locations](/glossary/anatom ## Conflicts -UMLS requires a licence and an API key, so any OIDM tooling that depends on it fails differently for an unlicensed caller. The lookup tool's typed failure model exists partly for this reason, separating absence of a result from authentication, authorization, and licensing failures so the latter stay visible rather than silently falling back.[^molu] A tracked issue also records that co-occurring CUI ambiguity is currently lost rather than preserved. +UMLS requires a licence and API key. The lookup tool's typed failure model exists partly for this reason, separating absence of a result from authentication, authorization, and licensing failures, so the latter stay visible rather than silently falling back.[^molu] A tracked issue also records that co-occurring CUI ambiguity is currently lost rather than preserved. [^umls]: Unified Medical Language System [^molu]: med-ontology-lookup README diff --git a/knowledge/guides/authoring-guide.md b/knowledge/guides/authoring-guide.md index ce8e093..53f6a1b 100644 --- a/knowledge/guides/authoring-guide.md +++ b/knowledge/guides/authoring-guide.md @@ -4,7 +4,7 @@ title: Authoring guide description: How humans and agents write, migrate, link, and verify documents in this knowledgebase. tags: [meta, conventions, okf] status: draft -generated: { by: claude-fable-5-1/claude-code, at: 2026-09-21T01:00:00Z } +generated: { by: codex/gpt-6, at: 2026-09-21T20:53:02Z } sources: - id: okf-spec resource: https://github.com/GoogleCloudPlatform/open-knowledge-format/blob/main/SPEC.md @@ -16,9 +16,9 @@ sources: # Overview -This repository is the canonical, public, high-level documentation for the Open Imaging Data Model (OIDM). It is an Open Knowledge Format (OKF) 0.2 bundle: a directory of markdown files with YAML frontmatter that both people and agents read.[^okf-spec] The bundle lives in `knowledge/`. Everything in this guide is enforced by two checkers described at the end. +This repository holds the canonical public, high-level documentation for the Open Imaging Data Model (OIDM). The `knowledge/` directory is an Open Knowledge Format (OKF) 0.2 bundle of Markdown files with YAML frontmatter for people and agents.[^okf-spec] Everything in this guide is enforced by two checkers described at the end. -Three rules summarize the house style: +Follow these rules: 1. One concept per file, typed, described, and sourced. 2. Facts and stated goals only. Proposals belong to a separate workstream and are marked as such when they arrive. @@ -40,13 +40,14 @@ Three rules summarize the house style: | `guides/` | This guide and the migration ledger | | `plans/` | Plans for building and maintaining the knowledgebase | -Every directory has an `index.md` that lists each concept and subdirectory in it, one entry per line. Index entries use the `./` prefix so the site's absolute link resolution keeps them inside the directory: +Each directory needs an `index.md` listing its concepts and subdirectories, one per line. Index entries use the `./` prefix so the site's absolute link resolution keeps them inside the directory: ```markdown * [Title](./file.md) - description * [Subdirectory](./subdir/) - description ``` - Index files carry no frontmatter, except the bundle root, which declares `okf_version`. `log.md` at the root records changes newest first under `## YYYY-MM-DD` headings. + +Only the bundle-root index has frontmatter, declaring `okf_version`. Record changes newest first in root `log.md`, under `## YYYY-MM-DD` headings. # Frontmatter @@ -69,7 +70,7 @@ sources: --- ``` -**Types.** `type` must be one of the controlled vocabulary below. Inherited from the ACR-RSNA-CDEs next-gen bundle:[^cde-checker] Reference, Analysis, Decision Record, Proposal, Playbook, Worked Example, Presentation Extract, Meeting Notes, Draft Specification, Gap Log, Exploration. Added here: Overview, Concept, Glossary Term, Format Specification, Data Structure, Project Profile, Guide, Roadmap, History, Source Extract, Plan. Proposal and Decision Record are reserved for the proposals workstream. +**Types.** `type` must be one of the controlled vocabulary below. It inherits Reference, Analysis, Decision Record, Proposal, Playbook, Worked Example, Presentation Extract, Meeting Notes, Draft Specification, Gap Log, and Exploration from the ACR-RSNA-CDEs next-gen bundle.[^cde-checker] This repository adds Overview, Concept, Glossary Term, Format Specification, Data Structure, Project Profile, Guide, Roadmap, History, Source Extract, and Plan. Reserve Proposal and Decision Record for the proposals workstream. | Type | Use it for | |---|---| @@ -88,11 +89,11 @@ sources: | Worked Example | A concrete example with real data | | Plan | A plan for work on this knowledgebase | -**Status and trust.** Every agent-written document starts as `status: draft`. When the project lead reviews it, they add `verified: [{ by: human:talkasab, at: }]` and set `status: stable`. Deprecated documents keep their content, get `status: deprecated`, and are noted in `log.md`. Project profiles and roadmap documents set `stale_after` one year out. +**Status and trust.** Start agent-written documents as `status: draft`. After review, the project lead adds `verified: [{ by: human:talkasab, at: }]` and sets `status: stable`. Keep deprecated content, set `status: deprecated`, and note it in `log.md`. Set `stale_after` one year out for project profiles and roadmaps. -**Actors.** `generated.by` and `verified[].by` follow the OKF actor convention: `/` for an agent or tool, `human:` for a person, `process:` for automation. Use the `human:` prefix whenever a person authored or signed off; trust tiers key off it. +**Actors.** Use `/` for agents or tools, `human:` for people, and `process:` for automation in `generated.by` and `verified[].by`, following the OKF actor convention. Use the `human:` prefix whenever a person authored or signed off; trust tiers key off it. `generated` names the actor that last wrote the document's text; a copy-editing pass by another actor updates it, and the pass is recorded once in log.md. -**Sources.** List what you actually read. Pin GitHub links to a commit, not a branch, so a reader can tell what version was read. Attribute a specific claim in the body with a footnote whose label matches a source `id`, as this guide does. A migrated document lists its origin as its first source. +**Sources.** List what you actually read. Pin GitHub links to a commit, not a branch, so a reader can tell what version was read. Attribute claims with footnote labels matching source `id` values. Put a migrated document's origin first. # Writing @@ -108,11 +109,11 @@ sources: ``` - Link to code and content by commit-pinned GitHub URL, and to deployed tools by their live URL. -- Prefer short sections, tables for field lists, and fenced code for examples. No empty headings. Balanced code fences. +- Use short sections, tables for field lists, and fenced code for examples. Keep headings nonempty and code fences balanced. # Migrating a document from a working repository -1. Confirm it is documentation, not code documentation. Install steps, API usage, and developer workflow stay with the code. +1. Confirm it is documentation, not code documentation. Keep installation, API usage, and developer workflow with the code. 2. Copy the substance. Rewrite only for consistency of terms and to remove individual names. Keep the author's structure. 3. Add frontmatter: an appropriate type, `status: draft`, `generated` naming you, and `sources` whose first entry is the origin file at its commit. 4. Add glossary links on first use of terms, and links to related concepts. @@ -129,7 +130,7 @@ uv run .agents/skills/validate/scripts/okf_validate.py knowledge --strict uv run tools/check_bundle.py ``` -The first checks OKF 0.2 conformance and warns on legacy fields. The second enforces this guide: type vocabulary, required frontmatter, trust-signal shape, index coverage for every directory, link resolution, balanced fences, and a sweep for email addresses and denylisted names. The denylist lives at `tools/denylist.txt`, is ignored by git, and is maintained by the project lead. Continuous integration runs both on every push and pull request. +The first checks OKF 0.2 conformance and warns on legacy fields. The second enforces this guide: type vocabulary, required frontmatter, trust-signal shape, index coverage for every directory, link resolution, balanced fences, and a sweep for email addresses and denylisted names. The project lead maintains the gitignored `tools/denylist.txt`. Continuous integration runs both on pushes to `main` and pull requests. [^okf-spec]: Open Knowledge Format specification, version 0.2 [^cde-checker]: Bundle checker from the ACR-RSNA-CDEs next-gen-2026 branch diff --git a/knowledge/guides/migration-ledger.md b/knowledge/guides/migration-ledger.md index c927d5e..b83a7af 100644 --- a/knowledge/guides/migration-ledger.md +++ b/knowledge/guides/migration-ledger.md @@ -4,12 +4,12 @@ title: Migration ledger description: Every document migrated into this knowledgebase from a working repository, with its origin, commit, and destination. tags: [meta, migration] status: draft -generated: { by: claude-fable-5-1/claude-code, at: 2026-09-21T01:00:00Z } +generated: { by: codex/gpt-6, at: 2026-09-21T20:53:02Z } --- # Overview -This ledger records each document whose substance moved from a working repository into this bundle. It is the work list for the follow-up round in which working repositories replace migrated documents with links here. Add a row whenever you migrate, per the [authoring guide](/guides/authoring-guide.md). +This ledger records each document whose substance moved from a working repository into this bundle. It is the work list for the follow-up round in which working repositories replace migrated documents with links here. Add a row whenever you migrate, following the [authoring guide](/guides/authoring-guide.md). # Ledger diff --git a/knowledge/history/cde-template-rendering.md b/knowledge/history/cde-template-rendering.md index 34ddd47..5774619 100644 --- a/knowledge/history/cde-template-rendering.md +++ b/knowledge/history/cde-template-rendering.md @@ -1,10 +1,10 @@ --- type: History title: CDE template rendering -description: The 2023 CDETemplateDemo pattern that turned a CDE-labeled Observation into report prose through a Mustache template, and how it relates to the reporting SDK direction. +description: How CDETemplateDemo rendered structured Observations through Mustache templates in 2023, a precedent for the proposed reporting SDK. tags: [history, reporting, observation, cde] status: draft -generated: { by: claude-opus-5/claude-code, at: 2026-09-21T02:00:00Z } +generated: { by: codex/gpt-6, at: 2026-09-21T20:53:02Z } sources: - id: mapper resource: https://github.com/openimagingdata/CDETemplateDemo/blob/e09f2553de58b2c88ea26e9673750a62803d4dbc/mapper-logic/src/mappers/obsToMustache.ts @@ -28,15 +28,15 @@ sources: # What it was -`CDETemplateDemo` is a small full-stack demonstration written in 2023 and untouched since 2023-06-15. Its whole purpose was to show that structured data can be turned back into readable report prose without a language model, by rendering a [CDE](/glossary/cde.md)-labeled [Observation](/glossary/observation.md) through a text template. The demonstration was shown at SIIM in June 2023 as a web service that takes a radiology finding encoded as a FHIR Observation with CDE tags and generates customizable prose.[^siim-post] +`CDETemplateDemo` renders a [CDE](/glossary/cde.md)-labeled [Observation](/glossary/observation.md) as report prose through a text template, without a language model. Written in 2023 and unchanged since 2023-06-15, it was shown at SIIM in June 2023 as a web service that generated customizable prose from FHIR Observations.[^siim-post] -It is the earliest working structured-data-to-text generator in the project, and the direction it points is still live. See [lineage repositories](/history/lineage-repositories.md) for the repository's status. +It is the project's earliest working generator of prose from structured data. See [lineage repositories](/history/lineage-repositories.md) for the repository's status. # The pattern in three parts **The Observation.** A sample pneumothorax Observation carries `code` as the RadElement set code RDES44, a `bodySite` coded against the anatomic locations system, and a `component` array whose entries each carry an element code and a value.[^observation] Six components appear: lung tissue collapse, presence, pleural separation in millimeters, side, size, and associated chest tube, plus signs of tension. -**The mapper.** `obsToMustache.ts` flattens the Observation's components into a plain key-value dictionary keyed by the component display name.[^mapper] It then does two things that matter. It sets a boolean flag named after each value, so that any value can drive a template section. And it special-cases the presence component, deriving two explicit flags, one true when presence is present and one true when it is absent. +**The mapper.** `obsToMustache.ts` flattens the Observation's components into a plain key-value dictionary keyed by the component display name.[^mapper] It sets a boolean flag for each value to control template sections. Presence has two flags, one for present and one for absent. ```typescript if (key.toLowerCase() === "presence") { @@ -64,21 +64,21 @@ There is no pneumothorax. {{/presence_absent}} ``` -Rendered against the sample Observation, that produces: "There is a Medium Left pneumothorax (pleural separation: 28 mm). There is Partial lung tissue collapse." The absent branch would instead produce a single sentence, which is exactly the shape the negative-statement problem in [extraction approaches](/history/extraction-approaches.md) works in the opposite direction. +Rendered against the sample Observation, that produces: "There is a Medium Left pneumothorax (pleural separation: 28 mm). There is Partial lung tissue collapse." The absent branch produces a single sentence. [Extraction approaches](/history/extraction-approaches.md) describes the reverse task of extracting explicit negatives. # What the demo also shows by accident -The Observation class inside this repository is not the FHIR one. It models components as a flat record of string keys to string values, with the code and body site reduced to an identifier and a display string.[^obs-model] The sample JSON files on disk are full FHIR Observations, so the demo reads FHIR and works internally with something simpler. That divergence is why the repository is recorded as superseded: the FHIR-faithful Observation in `OpenImagingDataModel.py` became the reference shape, and the flat variant did not carry forward. The flattening itself did, as a rendering step rather than a data model. +The internal Observation class stores components as string key-value pairs and reduces the code and body site to an identifier and display string.[^obs-model] The sample files contain full FHIR Observations. The FHIR-based Observation in `OpenImagingDataModel.py` superseded this simplified internal model. Flattening remained a rendering step. -The mapper also has a hardcoded assumption worth naming: presence is the only attribute given special treatment, and every other value becomes a bare boolean flag. That works because presence is the one attribute the current [finding model format](/semantic-foundation/finding-models/finding-model-format.md) also treats as near-universal. +Only presence receives special treatment. Other values become boolean flags. Presence is also near-universal in the current [finding model format](/semantic-foundation/finding-models/finding-model-format.md). # Relation to the reporting SDK idea -The January 2026 status deck names an Open Imaging Reporting SDK under its applications pillar, positioned as the vendor-facing surface through which reporting tools consume OIDM structures.[^deck] No such artifact exists; see [the reporting SDK](/applications/reporting-sdk.md), which records it as stated direction only. +The January 2026 status deck names an Open Imaging Reporting SDK under its applications pillar, for vendors to use OIDM structures in reporting tools.[^deck] No such artifact exists; see [the reporting SDK](/applications/reporting-sdk.md), which records it as stated direction only. -This demonstration is the concrete precedent for one half of what such an SDK would have to do. The 2023 next-generation reporting assistance framework post described the other half, a plugin container in which assistance scripts run against standardized report context and can insert generated text into a report. Rendering a structured observation into a sentence is the operation those scripts would call; see [site articles](/history/site-articles.md) for that post. +The 2023 next-generation reporting assistance framework post described a plugin container whose scripts inspect standard report context and insert generated text. This demo provides a precedent for that rendering operation. See [site articles](/history/site-articles.md). -Three facts about the demonstration are worth carrying into any later work on this. The template is per-CDE-set, stored under a directory named for the set identifier, so the unit of authoring is the finding rather than the report. The template is data, not code, so a site can maintain its own phrasing without touching the renderer. And the renderer itself is about thirty lines, because all the semantics live in the codes. +Each CDE set has a template in a directory named for its identifier, so templates describe findings rather than reports. A site can change template wording without modifying the renderer. The renderer is about thirty lines because the codes carry the semantics. [^mapper]: CDETemplateDemo obsToMustache.ts, the Observation to template-data mapper [^template]: CDETemplateDemo pneumothorax Mustache template diff --git a/knowledge/history/extraction-approaches.md b/knowledge/history/extraction-approaches.md index 22c81c0..b661180 100644 --- a/knowledge/history/extraction-approaches.md +++ b/knowledge/history/extraction-approaches.md @@ -1,10 +1,10 @@ --- type: History title: Extraction approaches -description: Seven successive attempts at turning radiology report text into structured findings, from a template corpus in 2024 to the current extraction platform, and what each one established. +description: Seven report-extraction approaches, their results, and their contributions to the current platform. tags: [history, extraction, llm, findings] status: draft -generated: { by: claude-opus-5/claude-code, at: 2026-09-21T02:00:00Z } +generated: { by: codex/gpt-6, at: 2026-09-21T20:53:02Z } sources: - id: template-extraction resource: https://github.com/openimagingdata/template_extraction/tree/4d947d7e7557ce6187a35d592f8199d3abb673cf/templates @@ -43,31 +43,31 @@ sources: # The problem, restated each time -Every one of these efforts answers the same question: given free-text radiology report language, produce structured findings that carry standard codes. They differ in what they start from, what they produce, and how they judge whether the result is right. Read in order, they converge on three conclusions that the current platform treats as settled: extraction must work on real report prose rather than templates, it must produce explicit negatives as well as positives, and it must be judged on faithfulness to the source text rather than on how many findings it emits. +These efforts seek structured, coded findings from radiology reports. Their inputs, outputs, and evaluation methods differ. The current platform extracts from real report prose, includes explicit negatives, and evaluates faithfulness to the source text. # 1. Templates as the source, 2024 to 2025 **SARTemplatesToCDEs** (2023-12 to 2024-03) proposed using a language model to convert Society of Abdominal Radiology reporting templates into CDE sets, starting with rectal cancer staging.[^sar] No conversion code was committed. Its lasting artifact is a hand-written itemized redesign of one CDE set; see [lineage repositories](/history/lineage-repositories.md). -**template_extraction** (2025-06) took the same starting point at scale, accumulating 281 RadReport templates spanning CT, MR, ultrasound, nuclear medicine, and fluoroscopy across neuro, musculoskeletal, chest, abdomen, genitourinary, and cardiac imaging, plus oncology staging templates and two CDE-labeled test templates.[^template-extraction] The script that reads them is short. The corpus is the asset, and it remains unused: it is a candidate vocabulary for [exam types](/semantic-foundation/exam-types/overview.md) as much as for findings, since the templates are named by exam. +**template_extraction** (2025-06) took the same starting point at scale, accumulating 281 RadReport templates spanning CT, MR, ultrasound, nuclear medicine, and fluoroscopy across neuro, musculoskeletal, chest, abdomen, genitourinary, and cardiac imaging, plus oncology staging templates and two CDE-labeled test templates.[^template-extraction] A short script reads the corpus. It remains unused but could supply vocabulary for findings and [exam types](/semantic-foundation/exam-types/overview.md), since templates are named by exam. -What this line established: templates give you the vocabulary a specialty society has agreed on, but not the language radiologists actually dictate, and not the negatives. +Templates supply agreed specialty vocabulary but omit dictated language and negatives. # 2. Ontologies as the source, 2025 **get_ontology_findings** (2025-03) inverted the direction: look through an existing ontology for entries that correspond to imaging findings, so they can be turned into finding models or common data elements.[^get-ontology] It carries a RadLex export and a minimal script. Its narrow single-ontology scope was widened by `med-ontology-lookup`; see [that project profile](/semantic-foundation/terminologies/med-ontology-lookup.md). -What this line established: an ontology tells you what a finding could be called, not which findings are worth modeling or how they are characterized. +Ontologies supply finding names without deciding which findings to model or how to characterize them. # 3. Real report text, retrieval-augmented, 2024 to 2025 -**ReportFindingRefiner** (2024-12 to 2025-05) is the first pipeline built on real report prose.[^refiner] Its architecture is a privacy-first, locally hosted chain: ingest plain-text reports, split each into header, findings, and impression sections, embed the sections with sentence transformers, store them in a local vector database, expose basic, vector, and hybrid search over them, then use a locally run language model to generate a finding model outline from retrieved context and persist it. It separates a search service, a report service, a language model service, and a finding model service, and exposes each step as its own command-line script, including one that generates a finding outline with retrieved context and one without, so the two can be compared. +**ReportFindingRefiner** (2024-12 to 2025-05) is the first pipeline built on real report prose.[^refiner] It processes reports locally for privacy. The pipeline splits plain text into header, findings, and impression sections, embeds them with sentence transformers, and stores them in a local vector database. Basic, vector, and hybrid searches retrieve context for a local language model to generate and store finding model outlines. Separate search, report, language model, and finding model services have command-line scripts for each step. Two scripts compare outline generation with and without retrieved context. -What this line established: retrieval over a real corpus produces better finding definitions than a template does, local models make report text usable without sending it anywhere, and generating a definition is a different task from extracting an instance. +Retrieval over real reports produced better definitions than templates, while local models kept report text private. Definition generation remained distinct from instance extraction. # 4. Manual extraction as a specification, 2024 to 2025 -`CDEStaging` approached extraction by doing it by hand and writing down what broke. Its process document works a chest CT pulmonary angiogram report into a list of what it calls mini-observations, each a finding name with attribute and value lines.[^cde-process] The worked example is short enough to quote: +`CDEStaging` documented manual extraction and its failures. Its process document works a chest CT pulmonary angiogram report into a list of what it calls mini-observations, each a finding name with attribute and value lines.[^cde-process] Its worked example is: ```markdown - pulmonary embolism @@ -87,11 +87,11 @@ What this line established: retrieval over a real corpus produces better finding - side: left ``` -Two observations in that document set the agenda for everything after it. Finding, attribute, and value names have to match the project's own finding definitions, or the extraction is not interoperable. And blanket negative statements such as "Lungs are clear" need their own catalog, because they assert many findings absent in one phrase. +Interoperability requires finding, attribute, and value names to match the project's definitions. Blanket negatives such as "Lungs are clear" need a catalog because one phrase asserts several findings absent. -Three companion files hold the results of that cataloging work. `negative_statements.md` collects composite and negative report statements by organ system. `uncovered_findings.md` lists findings pulled out of reports with no matching definition, a standing gap log.[^cde-uncovered] `missing_attributes.md` collects report phrases whose attributes existing definitions cannot capture.[^cde-negatives] Fifty-seven worked structured extractions sit alongside them. The two branches that carried most of this work, a report-representation branch of 37 commits and a content branch of 33, were never merged; see the work edge section of [the repository map](/repositories/repository-map.md). +Three companion files catalog these gaps. `negative_statements.md` collects composite and negative report statements by organ system. `uncovered_findings.md` lists findings pulled out of reports with no matching definition, a standing gap log.[^cde-uncovered] `missing_attributes.md` collects report phrases whose attributes existing definitions cannot capture.[^cde-negatives] Fifty-seven worked structured extractions sit alongside them. The two branches that carried most of this work, a report-representation branch of 37 commits and a content branch of 33, were never merged; see the work edge section of [the repository map](/repositories/repository-map.md). -What this line established: the hard part is not parsing, it is the vocabulary gap and the treatment of negation. Both are still open; the extraction platform's own validator prompt names "incorrect representation of a blanket negative" as a re-extraction trigger. +Vocabulary gaps and negation remain unresolved. The extraction validator names "incorrect representation of a blanket negative" as a re-extraction trigger. # 5. Embedding similarity, 2025 @@ -104,23 +104,23 @@ What this line established: the hard part is not parsing, it is the vocabulary g | `step2_map.py` | Each extracted finding is embedded and matched by cosine similarity against 15 curated neuro finding models, with a configurable threshold of 0.70 | | `step3_review_mappings.py` | Produces a human-readable mapping summary | -Its output schema is deliberately thin: a finding is a name and a boolean presence; a mapping adds the matched finding model identifier, a confidence score, and a status. It produces neither an [Exam Finding List](/data-structures/exam-finding-list.md) nor an [Imaging Problem List](/data-structures/imaging-problem-list.md), and no FHIR output; the README lists FHIR Observation generation as a future enhancement. Evaluation was informal: 8 sample reports, 87 extracted findings, 5 matched above threshold, 82 flagged for manual review. +A finding contains a name and boolean presence. A mapping adds the matched model identifier, confidence score, and status. It produces neither an [Exam Finding List](/data-structures/exam-finding-list.md) nor an [Imaging Problem List](/data-structures/imaging-problem-list.md), and no FHIR output; the README lists FHIR Observation generation as a future enhancement. Evaluation was informal: 8 sample reports, 87 extracted findings, 5 matched above threshold, 82 flagged for manual review. Three single-commit branches pushed in one week extend it without merging: a longitudinal multiple sclerosis report series, a port of the extraction step to a typed agent framework, and a design note proposing persistent FHIR Observations with stable identifiers, so that repeat mentions of the same lesion across reports attach to one tracked entity with its own timeline. That note adds no code and names two modules that were never written. See [the project profile](/applications/ipl-mvp-extraction.md). -What this line established: a 6 percent match rate at a 0.70 similarity threshold against 15 models is not a mapping strategy. Code assignment needs the index, not the embedding alone. +The 6 percent match rate at a 0.70 threshold against 15 models shows the limits of embedding-only matching and the need for index-based code assignment. # 6. The current extraction platform, 2026 The `dev` branch of `imaging-problem-list` is a full extraction, coding, persistence, and review platform; see [the project profile](/applications/report-extraction-platform.md). Four things distinguish it from everything above. -**A richer extraction schema.** The original plan defines an extracted finding as a finding name, a presence drawn from present, absent, indeterminate, and possible, an optional location with body region, specific anatomy, and laterality, a list of attribute key and value pairs with standard keys for size, acuity, change from prior, severity, count, and morphology, and the verbatim report text it came from.[^ipl-initial-plan] The `possible` value exists specifically to hold hedged language such as "raising the possibility of" or "cannot exclude". +**A richer extraction schema.** The original plan records a finding name, presence, optional location, attributes, and verbatim report text.[^ipl-initial-plan] Presence can be present, absent, indeterminate, or possible. Location includes body region, specific anatomy, and laterality. Attribute key-value pairs use standard keys for size, acuity, change from prior, severity, count, and morphology. `possible` covers hedged language such as "raising the possibility of" or "cannot exclude". **Coding as a separate stage.** Assigning a finding code and a location code happens after extraction, not during it: a deterministic index lookup first, and only where that fails, three language model calls per report chunk to generate search terms, select a finding code from candidates, and select a location code from candidates. See [finding and location coding](/applications/finding-and-location-coding.md). **Verbatim-quote validation.** A validator reviews each extraction against the chunk it came from and names the failure modes that justify re-extraction: content unsupported by the chunk text, report text describing a finding that no structure represents, a finding marked present when it is not or absent when it is possible, a finding name more specific than the text supports, incorrect representation of a blanket negative, and wrong or misscoped location information.[^ipl-validator] -**Evaluation redesigned for honesty.** After three and a half months without implementation, the evaluation plan was cut down rather than abandoned. Version one scores quote-first matching and attribute values rather than raw finding yield, uses frozen run configurations with per-case artifacts, and adjudicates a ten-case gold set through the human review tool. The stated motivation is a specific failure: a model-selection round chose a local default on throughput and yield alone, which cannot distinguish a real recall gain from a fabricated finding.[^ipl-evals] +**Evaluation redesign.** After three and a half months without implementation, the evaluation plan was reduced. Version one scores quote-first matching and attribute values rather than raw finding yield, uses frozen run configurations with per-case artifacts, and adjudicates a ten-case gold set through the human review tool. The stated motivation is a specific failure: a model-selection round chose a local default on throughput and yield alone, which cannot distinguish a real recall gain from a fabricated finding.[^ipl-evals] # What carried forward diff --git a/knowledge/history/index.md b/knowledge/history/index.md index 439ce6a..80610c0 100644 --- a/knowledge/history/index.md +++ b/knowledge/history/index.md @@ -1,10 +1,10 @@ # History -What was tried before OIDM reached its current shape, what survives, and what superseded the rest. +Earlier OIDM work, its surviving contributions, and its successors. -* [Timeline](./timeline.md) - A dated record of the Open Imaging Data Model from its anatomic-location prologue through the January 2026 status update and the 2026 work edge. -* [Lineage repositories](./lineage-repositories.md) - The twelve early OIDM repositories, what each one was for, what survives into current work, and what superseded the rest. -* [Extraction approaches](./extraction-approaches.md) - Seven successive attempts at turning radiology report text into structured findings, from a template corpus in 2024 to the current extraction platform, and what each one established. -* [CDE template rendering](./cde-template-rendering.md) - The 2023 CDETemplateDemo pattern that turned a CDE-labeled Observation into report prose through a Mustache template, and how it relates to the reporting SDK direction. -* [Use case catalog](./use-cases.md) - The roughly 25 use case ideas collected in the UseCases repository, organized by category, with the six value categories used to tag them. +* [Timeline](./timeline.md) - Dated OIDM milestones from anatomic-location work in 2022 through current work in September 2026. +* [Lineage repositories](./lineage-repositories.md) - Twelve early OIDM repositories, their surviving contributions, and their successors. +* [Extraction approaches](./extraction-approaches.md) - Seven report-extraction approaches, their results, and their contributions to the current platform. +* [CDE template rendering](./cde-template-rendering.md) - How CDETemplateDemo rendered structured Observations through Mustache templates in 2023, a precedent for the proposed reporting SDK. +* [Use case catalog](./use-cases.md) - The roughly 25 ideas from UseCases, with source attribution and six value-category tags. * [Site articles](./site-articles.md) - The fifteen posts published on openimagingdata.org between June 2023 and March 2025, plus the About page, each dated, linked, and summarized. diff --git a/knowledge/history/lineage-repositories.md b/knowledge/history/lineage-repositories.md index 935ec80..515fa08 100644 --- a/knowledge/history/lineage-repositories.md +++ b/knowledge/history/lineage-repositories.md @@ -1,10 +1,10 @@ --- type: History title: Lineage repositories -description: The twelve early OIDM repositories, what each one was for, what survives into current work, and what superseded the rest. +description: Twelve early OIDM repositories, their surviving contributions, and their successors. tags: [history, lineage, repositories, fhir] status: draft -generated: { by: claude-opus-5/claude-code, at: 2026-09-21T02:00:00Z } +generated: { by: codex/gpt-6, at: 2026-09-21T20:53:02Z } sources: - id: oidm-py-observation resource: https://github.com/openimagingdata/OpenImagingDataModel.py/blob/455e5b68d730ea8829083d73064de0ec316d3c4a/openimagingdatamodel/observation/observation.py @@ -49,7 +49,7 @@ sources: # Why this document exists -Twelve repositories came before the current three-layer structure. Some are dead ends; several hold the precedent that later work still follows, and one of them is still the project's CDE data source. Each section below gives the repository's purpose, its dates, its status in [the repository map](/repositories/repository-map.md), what survives, and what replaced it. +Twelve repositories preceded the current three-layer structure. Several informed later work, and one remains the CDE data source. Their dates, status, and successors are described below and in [the repository map](/repositories/repository-map.md). # The FHIR precedent @@ -66,21 +66,21 @@ Two lineage repositories together define how OIDM maps onto FHIR, and nothing si | `example1OIDMradiologist.json` | Observation | The same finding as confirmed by a radiologist, distinguished only by `status` `final` | | `example1OIDMradiologistLungRADS.json` | Observation | A second-order assessment Observation that is `derivedFrom` both the ImagingStudy and the radiologist's finding Observation, carrying the Lung-RADS category (RDES267) as a component | -Three patterns come out of this example and recur throughout later work. The chain from CDE set code to element code to value code, all through the `radelement.org` coding system, is what "CDE-labeled FHIR Observation" means concretely. The `status` field is what separates a machine-produced finding from a radiologist-confirmed one, rather than a separate resource type. And the second-order observation, an assessment built on top of a finding observation, is the precedent for any later assessment or category modeling, including the reporting-system categories the [2026 roadmap](/roadmap/roadmap-2026.md) names. +A "CDE-labeled FHIR Observation" uses set, element, and value codes from `radelement.org`. Its `status` distinguishes machine-produced from radiologist-confirmed findings within the same resource type. The second-order observation, an assessment built on top of a finding observation, is the precedent for any later assessment or category modeling, including the reporting-system categories [the 2026 roadmap](/roadmap/roadmap-2026.md) names. -Two absences in the example are worth recording. No `bodySite` coding appears on the finding Observations, because the anatomy was implicit in the CDE definition rather than explicit on the resource. No Patient resource is included; `subject.reference` is a bare reference. Both gaps are addressed in the current model, where [anatomic location](/glossary/anatomic-location.md) is an explicit field. See [FHIR mapping](/data-structures/fhir-mapping.md) for where the current structures stand. +The finding Observations omit `bodySite` because anatomy is implicit in the CDE definition. There is no Patient resource, only `subject.reference`. Both gaps are addressed in the current model, where [anatomic location](/glossary/anatomic-location.md) is an explicit field. See [FHIR mapping](/data-structures/fhir-mapping.md) for where the current structures stand. # Reference implementations -**OpenImagingDataModel.ts.** Created 2023-04-27, last commit on the default branch 2023-10-22. A pnpm monorepo with `cde_set`, `observation`, and `findingModel` packages, all typed with Zod schemas.[^oidm-ts] Status: lineage. Its Zod schemas are the cleanest early type definitions for a CDE set, a CDE element, an index code, and a body part, and they are the only place the project expressed these shapes in TypeScript. No FHIR imports appear anywhere in it. Superseded by the Python implementation and then by the `findingmodel` package. +**OpenImagingDataModel.ts.** Created 2023-04-27, last commit on the default branch 2023-10-22. A pnpm monorepo with `cde_set`, `observation`, and `findingModel` packages, all typed with Zod schemas.[^oidm-ts] Status: lineage. Its Zod schemas define CDE sets, CDE elements, index codes, and body parts, the project's only TypeScript definitions of these shapes. No FHIR imports appear anywhere in it. Superseded by the Python implementation and then by the `findingmodel` package. -**OpenImagingDataModel.py.** Created 2024-03-08, last commit on the default branch 2024-11-13. Subpackages `cde_set` and `observation`.[^oidm-py-observation] Status: lineage, but the most consequential of the group. Besides the Observation class above, `finding_model.py` defines a `FindingModel` with a name, a description, and a list of attributes discriminated into choice and numeric types with a `required` flag.[^oidm-py-fm] Its docstring, "The definition of a radiology finding ... along with definitions of the relevant attributes that a radiologist might use to characterize the finding in a radiology report", survives verbatim into the current [finding model](/glossary/finding-model.md) class in `findingmodel`. What the early class lacked is exactly what the current format adds: identifiers, synonyms, tags, index codes, anatomic locations, and contributors. Its `set.py`, `element.py`, and `set_factory.py` mirror the RadElement schema. Superseded by the `findingmodel` package. +**OpenImagingDataModel.py.** Created 2024-03-08, last commit on the default branch 2024-11-13. Subpackages `cde_set` and `observation`.[^oidm-py-observation] Status: lineage. Besides the Observation class above, `finding_model.py` defines a `FindingModel` with a name, a description, and a list of attributes discriminated into choice and numeric types with a `required` flag.[^oidm-py-fm] Its docstring, "The definition of a radiology finding ... along with definitions of the relevant attributes that a radiologist might use to characterize the finding in a radiology report", survives verbatim into the current [finding model](/glossary/finding-model.md) class in `findingmodel`. The current format adds identifiers, synonyms, tags, index codes, anatomic locations, and contributors. Its `set.py`, `element.py`, and `set_factory.py` mirror the RadElement schema. Superseded by the `findingmodel` package. # Content and schema -**openimagingdata.org (the repository).** Created 2023-02-20, last commit 2023-06-27. Status: lineage. This is where the project's first name lives: the README titles it "Open Radiology Data Model" and points at a domain that no longer serves the project. Two things survive. The `schemas/` directory holds the CDE Set JSON schema and minimal sample CDE set and Observation fixtures. More useful is `schema_differences.md`, a precise gap analysis between the CDE Set RelaxNG schema and the RadElement JSON API: array wrapper naming, `index_code.url` against the API's `href`, a `system` enum constrained in the schema but not the API, authors interleaved in the schema but split into arrays in the API, and presence mismatches on modality, biological sex, age range, parent set, question, references, and body parts.[^old-site-schema] That analysis is still live; the same gap is the subject of an open issue in `CDEStaging`. See [CDEs and RadElement](/semantic-foundation/common-data-elements/cdes-and-radelement.md). Superseded as a site by the hosted blog at the same domain. +**openimagingdata.org (the repository).** Created 2023-02-20, last commit 2023-06-27. Status: lineage. The README titles it "Open Radiology Data Model" and points to a former project domain. `schemas/` holds the CDE Set JSON schema and sample CDE set and Observation fixtures. `schema_differences.md` compares the CDE Set RelaxNG schema with the RadElement JSON API: array wrapper naming, `index_code.url` against the API's `href`, a `system` enum constrained in the schema but not the API, authors interleaved in the schema but split into arrays in the API, and presence mismatches on modality, biological sex, age range, parent set, question, references, and body parts.[^old-site-schema] An open `CDEStaging` issue tracks the same gap. See [CDEs and RadElement](/semantic-foundation/common-data-elements/cdes-and-radelement.md). Superseded as a site by the hosted blog at the same domain. -**common_data_elements.** Created 2025-02-21, content uploaded 2025-06-04. Status: maintenance, not lineage: this is still the project's local snapshot of RadElement. It holds roughly 140 CDE set definitions as JSON, indexed in the README by clinical topic with their set identifiers, and the canonical `cde.schema-1.0.json` and `cde.schema-1.1.json` files that the gap analysis above refers to.[^cde-data] The README notes that the definitions conform to schema version 1.0, not the newer 1.1. +**common_data_elements.** Created 2025-02-21, content uploaded 2025-06-04. Status: maintenance. This remains the project's local RadElement snapshot. It holds roughly 140 CDE set definitions as JSON, indexed in the README by clinical topic with their set identifiers, and the canonical `cde.schema-1.0.json` and `cde.schema-1.1.json` files that the gap analysis above refers to.[^cde-data] The README notes that the definitions conform to schema version 1.0, not the newer 1.1. **UseCases.** Created 2023-09-07, last commit 2024-02-26. Status: lineage as an activity, but its content is the fullest enumeration of application ideas anywhere in the project.[^usecases] It holds roughly 25 one-line use case ideas and the six value categories used to tag them. Migrated in full to [the use case catalog](/history/use-cases.md). Nothing superseded it; the deck's application pillar and the [2026 roadmap](/roadmap/roadmap-2026.md) cover related ground without reusing the catalog. @@ -88,15 +88,15 @@ Two absences in the example are worth recording. No `bodySite` coding appears on **CDETemplateDemo.** Created 2023-05-31, last commit 2023-06-15, default branch `master`. Status: lineage. A working proof of concept that renders a structured Observation into report prose through a Mustache template.[^template-demo] The pattern survives as the clearest precedent for the reporting SDK direction; see [CDE template rendering](/history/cde-template-rendering.md). Its own Observation shape, a flat string-keyed record of components, is looser than the FHIR-based one and is superseded by it. -**SARTemplatesToCDEs.** Created 2023-12-30, last commit 2024-03-11. Status: lineage, stalled at proof of concept. The stated goal was to use a language model to convert Society of Abdominal Radiology reporting templates into CDE sets, starting with rectal cancer staging. No conversion code was committed. What survives is `Changes_vs_RDES11.md`, an itemized redesign of the MR rectal tumor imaging CDE set against a 2016 baseline: an element renamed, mucinous composition given finer granularity, T-category and sphincter-invasion elements restructured, and new elements for tumor morphology, extramural vascular invasion, tumor deposits, and lymph nodes, each with explicit value sets.[^sar] It remains the most detailed single-CDE-set redesign in the lineage. The conversion approach itself is superseded by the batch content pipelines in `findingmodels`; see [extraction approaches](/history/extraction-approaches.md). +**SARTemplatesToCDEs.** Created 2023-12-30, last commit 2024-03-11. Status: lineage, stalled at proof of concept. The stated goal was to use a language model to convert Society of Abdominal Radiology reporting templates into CDE sets, starting with rectal cancer staging. No conversion code was committed. `Changes_vs_RDES11.md` records an itemized redesign of the MR rectal tumor imaging CDE set against a 2016 baseline: an element renamed, mucinous composition given finer granularity, T-category and sphincter-invasion elements restructured, and new elements for tumor morphology, extramural vascular invasion, tumor deposits, and lymph nodes, each with explicit value sets.[^sar] It remains the most detailed single-CDE-set redesign in the lineage. The conversion approach itself is superseded by the batch content pipelines in `findingmodels`; see [extraction approaches](/history/extraction-approaches.md). # Extraction and ontology tooling These four are covered in depth in [extraction approaches](/history/extraction-approaches.md); their status is summarized here. -**template_extraction.** Created 2025-06-05, last commit 2025-06-16. Status: lineage. A short script and a corpus of 281 RadReport templates spanning CT, MR, ultrasound, nuclear medicine, and fluoroscopy across most body regions, plus two CDE-labeled test templates.[^template-extraction] The corpus is the asset; it is an unused candidate vocabulary for exam types as well as findings. Not superseded by anything; the work simply moved to converting CDE staging content instead. +**template_extraction.** Created 2025-06-05, last commit 2025-06-16. Status: lineage. A short script and a corpus of 281 RadReport templates spanning CT, MR, ultrasound, nuclear medicine, and fluoroscopy across most body regions, plus two CDE-labeled test templates.[^template-extraction] The corpus remains unused but could supply exam-type and finding vocabulary. No successor replaced it. Work moved to converting CDE staging content. -**ReportFindingRefiner.** Created 2024-12-31, last commit 2025-05-23. Status: lineage, and the most mature of the extraction family. A privacy-first pipeline running local models: ingest report text, split into header, findings, and impression sections, embed with sentence transformers, store in a vector database, search, then generate finding model outlines with a local language model and persist them.[^refiner] Superseded by the extraction platform on the `imaging-problem-list` `dev` branch, which pursues the same goal with a chunked, multi-provider, verbatim-quote-validated design. +**ReportFindingRefiner.** Created 2024-12-31, last commit 2025-05-23. Status: lineage. Its local-model pipeline protects report privacy: ingest report text, split into header, findings, and impression sections, embed with sentence transformers, store in a vector database, search, then generate finding model outlines with a local language model and persist them.[^refiner] Superseded by the extraction platform on the `imaging-problem-list` `dev` branch, which pursues the same goal with a chunked, multi-provider, verbatim-quote-validated design. **get_ontology_findings.** Created 2025-03-27, last commit 2025-03-27. Status: lineage. A minimal script plus a RadLex export, aimed at finding ontology entries that correspond to imaging findings so they can become finding models or CDEs.[^get-ontology] Superseded in scope by `med-ontology-lookup`. @@ -104,7 +104,7 @@ These four are covered in depth in [extraction approaches](/history/extraction-a # What connects them -No lineage repository depends on another as a package, and none names another by URL. The connective tissue is shared external vocabulary: RadElement set and element codes thread through the CDE snapshot, the FHIR samples, the TypeScript sample data, the template demo's sample observations, and the SAR redesign. The CDE set and element shape is independently re-implemented three times. The finding model concept is defined independently in the TypeScript and Python implementations with near-identical shape and reimplemented a third time inside `ReportFindingRefiner`. That independent convergence is why the current format could consolidate them without contradiction. +No lineage repository imports another as a package or names another by URL. They share RadElement set and element codes across the CDE snapshot, FHIR samples, TypeScript samples, template demo, and SAR redesign. Three implementations independently define the CDE set and element shape. That independent convergence is why the current format could consolidate them without contradiction. TypeScript and Python define near-identical finding model shapes; `ReportFindingRefiner` implements the concept separately. [^oidm-py-observation]: OpenImagingDataModel.py observation.py, the FHIR Observation model [^oidm-py-fm]: OpenImagingDataModel.py finding_model.py, the earliest FindingModel class diff --git a/knowledge/history/site-articles.md b/knowledge/history/site-articles.md index abd9373..4c047eb 100644 --- a/knowledge/history/site-articles.md +++ b/knowledge/history/site-articles.md @@ -4,7 +4,7 @@ title: Site articles description: The fifteen posts published on openimagingdata.org between June 2023 and March 2025, plus the About page, each dated, linked, and summarized. tags: [history, site, articles, reference] status: draft -generated: { by: claude-opus-5/claude-code, at: 2026-09-21T02:00:00Z } +generated: { by: codex/gpt-6, at: 2026-09-21T20:53:02Z } sources: - id: rss resource: https://openimagingdata.org/rss/ @@ -16,7 +16,7 @@ sources: # What the site is -`openimagingdata.org` is the project's public site, a hosted blog whose title is "Open Imaging Data Model" and whose tagline is "Defining unified data structures to integrate new functionality into imaging informatics platforms." It carries two static pages, Home and About, and fifteen posts running from 2023-06-24 to 2025-03-10.[^rss] Every date and summary below was verified against the live page on 2026-09-21. Individual authors are not named here, per the conventions in [the authoring guide](/guides/authoring-guide.md). +`openimagingdata.org` is the project's public site, a hosted blog whose title is "Open Imaging Data Model" and whose tagline is "Defining unified data structures to integrate new functionality into imaging informatics platforms." It has Home and About pages and fifteen posts dated 2023-06-24 to 2025-03-10.[^rss] Every date and summary below was verified against the live page on 2026-09-21. Individual authors are not named here, per the conventions in [the authoring guide](/guides/authoring-guide.md). The site replaced the earlier repository-hosted site in June 2023; see [lineage repositories](/history/lineage-repositories.md). @@ -24,7 +24,7 @@ The site replaced the earlier repository-hosted site in June 2023; see [lineage ## 2025-03-10, [Leveraging Common Data Elements (CDEs) to Enhance Radiology Reporting](https://www.openimagingdata.org/leveraging-common-data-elements-cdes-to-enhance-radiology-reporting/) -A guest post from a reporting software vendor arguing that standardized data points improve clinical decision-making and data quality in radiology reporting. It describes integrating CDEs with radiology information systems and PACS while adhering to HL7, FHIR, and FHIRcast. The stated payoff is efficiency, advanced analytics, and better outcomes from structured data. This is the most recent post on the site. +A guest post from a reporting software vendor arguing that standardized data points improve clinical decision-making and data quality in radiology reporting. It describes integrating CDEs with radiology information systems and PACS while adhering to HL7, FHIR, and FHIRcast. The stated payoff is efficiency, advanced analytics, and better outcomes from structured data. This is the latest site post. ## 2024-07-02, [SIIM 2024 Update: Hackathon Edition](https://www.openimagingdata.org/siim-2024-update-hackathon-edition/) @@ -32,7 +32,7 @@ Reports the completed hackathon tool, which automatically associates concepts fr ## 2024-07-01, [Benchmarking a Vision](https://www.openimagingdata.org/benchmarking-a-vision/) -Announces a manuscript in the Journal of the American Medical Informatics Association titled "Standardizing imaging findings representation: harnessing Common Data Elements semantics and Fast Healthcare Interoperability Resources structures." The paper presents the framework for representing findings as CDE-labeled FHIR Observations, with a pulmonary nodule case study. Its claim, quoted in the post, is that CDE-labeled Observations should be the universal representation for exchanging and consuming radiology report content. +Announces a manuscript in the Journal of the American Medical Informatics Association titled "Standardizing imaging findings representation: harnessing Common Data Elements semantics and Fast Healthcare Interoperability Resources structures." The paper presents the framework for representing findings as CDE-labeled FHIR Observations, with a pulmonary nodule case study. The post quotes its claim that CDE-labeled Observations should be the universal representation for exchanging and consuming radiology report content. ## 2024-06-20, [Attaching Ontology Links to Common Data Elements](https://www.openimagingdata.org/attaching-ontology-links-to-common-data-elements/) @@ -40,7 +40,7 @@ Describes the problem the hackathon set out to solve: matching CDEs to ontology ## 2024-06-18, [AI-Powered Chest CT Reporting: Transforming Radiologist Observations into Standardized Data](https://www.openimagingdata.org/creating-common-data-elements-for-chest-cts-how-ai-is-revolutionizing-radiology-reporting/) -Reports using a large language model to generate common data element definitions from anonymized chest CT reports, by converting report text into semantic vectors, ranking relevant sections, and having radiologists review the generated definitions. More than 200 CDE definitions came out of the pilot. They were published to GitHub for community review, which is the origin of the chest CT content later carried in `CDEStaging`. +Reports using a large language model to generate common data element definitions from anonymized chest CT reports, by converting report text into semantic vectors, ranking relevant sections, and having radiologists review the generated definitions. The pilot published more than 200 definitions to GitHub for community review, originating the chest CT content later held in `CDEStaging`. ## 2024-06-17, [Counting Down to SIIM](https://www.openimagingdata.org/counting-down-to-siim/) @@ -60,7 +60,7 @@ A summary of the 2024-01-26 meeting, covering how imaging data standards connect ## 2024-01-25, [Data Model: Structure and Function](https://www.openimagingdata.org/data-model-structure-and-function/) -The clearest statement of what OIDM is structurally. It describes the model as covering the whole reporting context, observations, patient data, imaging studies, and clinical history, and says the model makes extensive use of FHIR definitions while providing a superstructure on top for easier programmatic access, comparing that relationship to how a browser's document object model relates to HTML. It names two utility libraries: anatomic locations for standardized body part terminology, and an exam type library based on the LOINC and RSNA Playbook linked to anatomic locations. That exam type library has never been built; see [exam types](/semantic-foundation/exam-types/overview.md). +Describes OIDM as covering report context, observations, patient data, imaging studies, and clinical history. It proposes structures over FHIR definitions for programmatic access, comparing the relationship to a browser's document object model and HTML. It names two utility libraries: anatomic locations for standardized body part terminology, and an exam type library based on the LOINC and RSNA Playbook linked to anatomic locations. That exam type library has never been built; see [exam types](/semantic-foundation/exam-types/overview.md). ## 2024-01-12, [2024 New Year Update](https://www.openimagingdata.org/2024-new-year-update/) @@ -72,7 +72,7 @@ Lists six engagement channels: registering on the site for newsletters and comme ## 2023-07-16, [OIDM-Based Next-gen Reporting Assistance Framework](https://www.openimagingdata.org/oidm-based-next-gen-reporting-assistance/) -Proposes a plugin architecture in which developers write assistance scripts that run inside a reporting tool's container. A script reads standardized data structures holding the report context, and can insert generated text into the report, ask the radiologist for more information, alert the radiologist to a problem, or send data to an external system. The container re-runs the scripts whenever the report context changes, which makes the assistance continuous rather than one-shot. This is the earliest statement of the direction later named the reporting SDK; see [the reporting SDK](/applications/reporting-sdk.md). +Proposes a plugin architecture in which developers write assistance scripts that run inside a reporting tool's container. A script reads standardized data structures holding the report context, and can insert generated text into the report, ask the radiologist for more information, alert the radiologist to a problem, or send data to an external system. The container reruns scripts whenever report context changes. This is the earliest statement of the direction later named the reporting SDK; see [the reporting SDK](/applications/reporting-sdk.md). ## 2023-06-26, [SIIM Update](https://www.openimagingdata.org/siim-update/) @@ -80,7 +80,7 @@ Announces the site itself and summarizes an in-person SIIM meeting on cooperatio ## 2023-06-24, [Findings, CDEs, and Observations](https://www.openimagingdata.org/findings-cdes-and-observations/) -The founding post. It argues that a radiology finding can be standardized as a FHIR Observation labeled with ACR and RSNA common data element identifiers: the Observation's code carries the CDE set identifier naming the finding type, and each attribute becomes a component carrying a CDE element identifier and a value. Its worked example is a solid 6 mm nodule in the right lower lobe, labeled with the pulmonary nodule CDE set code and element codes for composition and size. Everything in [the data structures layer](/data-structures/hierarchy.md) descends from this claim. +The founding post. It argues that a radiology finding can be standardized as a FHIR Observation labeled with ACR and RSNA common data element identifiers: the Observation's code carries the CDE set identifier naming the finding type, and each attribute becomes a component carrying a CDE element identifier and a value. Its worked example is a solid 6 mm nodule in the right lower lobe, labeled with the pulmonary nodule CDE set code and element codes for composition and size. This claim underlies [the data structures layer](/data-structures/hierarchy.md). # The About page @@ -88,7 +88,7 @@ The About page states the mission: establish common data structures representing It also commits to programming interfaces in three languages, TypeScript and JavaScript, Python, and C#. Two of the three exist as lineage repositories and neither is current; no C# library was ever created. See [lineage repositories](/history/lineage-repositories.md). -The page was last modified 2023-06-21 and has not been revised since, so it predates finding models, the Exam Finding List, and the Imaging Problem List. Where it differs from current documents, the current documents govern. +The page was last modified 2023-06-21, before finding models, the Exam Finding List, and the Imaging Problem List. Where it differs from current documents, the current documents govern. [^rss]: openimagingdata.org RSS feed, 15 posts, fetched 2026-09-21 [^about]: openimagingdata.org About page, fetched 2026-09-21 diff --git a/knowledge/history/timeline.md b/knowledge/history/timeline.md index 8b8b92c..f9e3e34 100644 --- a/knowledge/history/timeline.md +++ b/knowledge/history/timeline.md @@ -1,10 +1,10 @@ --- type: History title: Timeline -description: A dated record of the Open Imaging Data Model from its anatomic-location prologue through the January 2026 status update and the 2026 work edge. +description: Dated OIDM milestones from anatomic-location work in 2022 through current work in September 2026. tags: [history, timeline] status: draft -generated: { by: claude-opus-5/claude-code, at: 2026-09-21T02:00:00Z } +generated: { by: codex/gpt-6, at: 2026-09-21T20:53:02Z } sources: - id: gh-org resource: https://github.com/openimagingdata @@ -37,7 +37,7 @@ sources: # Prologue: 2022 -The anatomic-location work predates the project's own name. The TypeScript wrapper repository was created on 2022-02-02, the Python wrapper on 2022-07-19, and the curated dataset and its site on 2022-12-14.[^gh-org] The dataset's own changelog records version `1.0.0-rc.1` in December 2022, adding a version field and SNOMED links. The curated set reached 2,890 records and its last substantive site commit, a hierarchy tree view, landed on 2023-01-10. See [the anatomic location lineage](/semantic-foundation/anatomic-locations/lineage-and-current-implementation.md). +Anatomic-location work began before OIDM. The TypeScript wrapper was created on 2022-02-02, the Python wrapper on 2022-07-19, and the curated dataset and site on 2022-12-14.[^gh-org] Version `1.0.0-rc.1` added a version field and SNOMED links in December 2022. The set reached 2,890 records. The last substantive site commit added a hierarchy tree view on 2023-01-10. See [the anatomic location lineage](/semantic-foundation/anatomic-locations/lineage-and-current-implementation.md). # 2023: naming, schema, and the first demonstrations diff --git a/knowledge/history/use-cases.md b/knowledge/history/use-cases.md index be7998c..02b8003 100644 --- a/knowledge/history/use-cases.md +++ b/knowledge/history/use-cases.md @@ -1,10 +1,10 @@ --- type: Reference title: Use case catalog -description: The roughly 25 use case ideas collected in the UseCases repository, organized by category, with the six value categories used to tag them. +description: The roughly 25 ideas from UseCases, with source attribution and six value-category tags. tags: [history, use-cases, reference] status: draft -generated: { by: claude-opus-5/claude-code, at: 2026-09-21T02:00:00Z } +generated: { by: codex/gpt-6, at: 2026-09-21T20:53:02Z } sources: - id: usecases-index resource: https://github.com/openimagingdata/UseCases/blob/71a90d2ab2efeee4c4303dc0aef27ed3d70a6c99/Index.md @@ -16,7 +16,7 @@ sources: # What this is -The `UseCases` repository was created in September 2023 to collect ideas for what an Open Imaging Data Model (OIDM) would make possible. Its index was meant to be a holding pen: a name and a one-sentence description each, with mature entries promoted to their own files.[^usecases-index] None were promoted, and the last commit is 2024-02-26. The catalog below is the whole of it, reorganized but not extended. +The `UseCases` repository began in September 2023 to collect Open Imaging Data Model (OIDM) application ideas. Each index entry had a name and one-sentence description, with mature ideas intended to become separate files.[^usecases-index] None did. The last commit was 2024-02-26. This catalog reorganizes all entries without additions. Entries marked as contributed by the RSNA Reporting Informatics Committee are so marked in the source. The numbers after each entry are the value categories defined in the next section, exactly as the source assigns them. Four of the repository's seven headings, Protocoling System, AI Pipeline, PACS Viewing, and Data Exploration, are placeholders with no entries. @@ -39,7 +39,7 @@ Six categories, taken from the RSNA Reporting Informatics Committee's use case w # Assisted reporting -Most entries in this section were contributed by the RSNA Reporting Informatics Committee, which is noted per entry below. +Most entries came from the RSNA Reporting Informatics Committee, as marked below. - **Stroke notification** (RSNA Reporting Informatics Committee). Automated communication to the stroke team when findings of stroke are reported. (2, 3) - **Problem list update** (RSNA Reporting Informatics Committee). Findings in a radiology report automatically update the electronic medical record problem list. (3) @@ -74,11 +74,11 @@ These entries carry no value category tags in the source. # How the catalog was meant to work -The repository's README sets out an intended process that was never completed: collect ideas in the index, then define metadata for each mature case and move it to its own file organized hierarchically as Markdown or JSON.[^usecases-readme] It asks three questions that remain unanswered in the repository: what information a use case should capture, whether the format should be prose or data, and whether specialized coded inputs such as LOINC for laboratory data are needed. +The unfinished process was to collect ideas, define metadata for mature cases, and store them in hierarchical Markdown or JSON files.[^usecases-readme] The README leaves three questions open: what information to capture, whether to use prose or data, and whether coded inputs such as laboratory LOINC codes are needed. The categories the README proposes for organizing cases are workflow and list oriented, AI pipeline oriented, reporting oriented, image-viewer oriented, data exploration and outcome oriented, multi-category, and miscellaneous. The index uses a slightly different set of headings, listed above. -For where this line of thinking went next, see [the 2026 roadmap](/roadmap/roadmap-2026.md), whose applications pillar and use-case pipeline to the CDE group cover related ground without reusing this catalog. +[The 2026 roadmap](/roadmap/roadmap-2026.md) describes related applications and use-case submissions to the CDE group without reusing this catalog. [^usecases-index]: UseCases Index.md, the living list of use case ideas [^usecases-readme]: UseCases README.md, the intended process and the six value categories diff --git a/knowledge/index.md b/knowledge/index.md index 0d11a81..b180e86 100644 --- a/knowledge/index.md +++ b/knowledge/index.md @@ -8,7 +8,7 @@ Canonical high-level documentation for the Open Imaging Data Model (OIDM). **Status: pre-review draft.** Every document was generated by agents from the source repositories and has `status: draft` until the project lead verifies it. Do not treat any page as authoritative until it carries a `verified` entry and `status: stable`. -**Start here:** [What is OIDM](./overview/what-is-oidm.md), then [Architecture](./overview/architecture.md). Look terms up in the [glossary](./glossary/), find where code and content live in the [repository map](./repositories/repository-map.md), and see what is settled versus open in the [roadmap](./roadmap/) and [open questions](./roadmap/open-questions.md). Every document's frontmatter states its type, status, sources, and who generated and verified it; agents should read that before relying on a page. +Start with [What is OIDM](./overview/what-is-oidm.md) and [Architecture](./overview/architecture.md). Use the [glossary](./glossary/) for terms, the [repository map](./repositories/repository-map.md) for code and content, and the [roadmap](./roadmap/) and [open questions](./roadmap/open-questions.md) for plans and unresolved issues. Check each page's frontmatter for its type, sources, authorship, and review status. * [overview](./overview/) - What OIDM is, the vision, and how the pieces fit diff --git a/knowledge/log.md b/knowledge/log.md index ee6957b..6507ffb 100644 --- a/knowledge/log.md +++ b/knowledge/log.md @@ -1,6 +1,7 @@ # Update Log ## 2026-09-21 +* 2026-09-21 - Prose tightened across 112 concept documents by codex/gpt-6 (two passes); reviewed by five claude-opus-5 reviewers; reverts and substantive fixes applied. Sources, links, and footnotes unchanged. * 2026-09-21 - Added `roadmap/open-questions.md`, 90 numbered entries deduplicated from all ten collecting agents and grouped into finding models, common data elements, anatomic locations, exam types and terminologies, data structures, applications, and the project narrative, each with the sources on each side and an owner where a source names one, plus a separate table of 21 source-document defects with repository and path so they can become issues. Rewritten after the five Phase 2 and 3 agents appended their sections. * 2026-09-21 - Corrected three roadmap documents against those late sections: the med-ontology-lookup backlog is eleven of twelve issues open rather than nine open and unstarted; findingmodels issue 15 is answered by unmerged work rather than merely overlapping it; the two framings of the RadLex relationship and the 1,016 composite sided identifiers were added to the anatomy roadmap; an identifier lifecycle section covering the absence of any deprecation mechanism and findingmodel issue 42 was added to format evolution. * 2026-09-21 - Added `roadmap/roadmap-2026.md`, the project-level direction from the January 2026 deck: the three strategic pillars, the ACR-OIDM Structured Imaging Results Working Group proposal with its structure-first and vendor-driven conditions, the four ACR priorities it says the work supports, the three next steps including the use-case pipeline to the CDE group, a per-repository work edge table linking each area roadmap, and the three deck items with no artifact behind them. diff --git a/knowledge/overview/architecture.md b/knowledge/overview/architecture.md index f3a69f8..72381c4 100644 --- a/knowledge/overview/architecture.md +++ b/knowledge/overview/architecture.md @@ -4,7 +4,7 @@ title: Architecture description: How the semantic foundation, data structures, and applications fit together, which identifier system joins each pair, and what is actually built. tags: [overview, architecture, identifiers] status: draft -generated: { by: claude-opus-5/claude-code, at: 2026-09-21T15:00:00Z } +generated: { by: codex/gpt-6, at: 2026-09-21T20:34:50Z } sources: - id: deck resource: https://gamma.app/docs/Open-Imaging-Data-Model-2026-Status-Update:-Realizing-Object-Oriented-Imaging-Results-yfxzx4q9zssafal @@ -49,27 +49,27 @@ sources: # The shape of the system -OIDM is three layers stacked on each other, and the joints between them are identifiers. The semantic foundation defines what things are and gives each one a code. The data structures carry instances of those things, referring to them only by code. The applications create and read those structures. Nothing in the upper layers embeds a definition; everything points. +OIDM has three layers joined by identifiers. The semantic foundation defines concepts and assigns codes. Data structures hold instances that reference those definitions by code. Applications create and read the structures without embedding definitions. -This is what makes the system work across organizations. Two systems can agree that a finding is `OIFM_GMTS_016552` located at `RID42239` without sharing any code, any database, or any vendor. +Shared identifiers let systems agree that a finding is `OIFM_GMTS_016552` at `RID42239` without sharing code, databases, or vendors. -![Open Imaging Data Model: three layers joined by identifiers. Applications on top, data structures in the middle, semantic foundation below, with arrows showing which codes join them.](./architecture.svg) +[![Open Imaging Data Model: three layers joined by identifiers. Applications on top, data structures in the middle, semantic foundation below, with arrows showing which codes join them.](./architecture.svg)](./architecture.svg) -*Diagram source: `architecture.excalidraw` beside this document, generated by `tools/diagrams/build_architecture.py`.* +*Diagram source: `architecture.excalidraw` beside this document (click the image for full size), generated by `tools/diagrams/build_architecture.py`.* # The semantic foundation -A [finding model](/glossary/finding-model.md) is the definition of one radiology finding: a name, a description, synonyms, tags, optional anatomic locations, optional [index codes](/glossary/index-code.md) into external ontologies, and a list of [attributes](/glossary/attribute.md) that a radiologist would use to characterize it. Each carries an [OIFM identifier](/glossary/oifm.md) matching `OIFM_[A-Z]{3,4}_[0-9]{6}`, where the letter block identifies the contributing organization. Each attribute carries an `OIFMA_[A-Z]{3,4}_[0-9]{6}` identifier, and each choice value extends its attribute identifier with a dot suffix, so `OIFMA_GMTS_707209.1` is a specific value of a specific attribute of a specific finding.[^fm-model] A flat registry file maps every issued identifier to its definition file, which is how duplicates are caught.[^fm-ids] +A [finding model](/glossary/finding-model.md) defines one radiology finding with a name, description, synonyms, tags, and [attributes](/glossary/attribute.md) that characterize it. It can include anatomic locations and [index codes](/glossary/index-code.md) into external ontologies. Its [OIFM identifier](/glossary/oifm.md) matches `OIFM_[A-Z]{3,4}_[0-9]{6}`, with the letter block identifying the contributing organization. Attribute identifiers match `OIFMA_[A-Z]{3,4}_[0-9]{6}`. Choice values add a dot suffix to the attribute identifier, as in `OIFMA_GMTS_707209.1`.[^fm-model] A flat registry maps issued identifiers to definition files to detect duplicates.[^fm-ids] -[Anatomic locations](/glossary/anatomic-location.md) are keyed by RadLex identifiers of the form `RID####`. Sided structures are composite, as in `RID294_RID5824` for the left variant of the uterine adnexa. Two hierarchies are carried, ["contained by" and "part of"](/glossary/contained-by-and-part-of.md), together with a [laterality](/glossary/laterality.md) triad linking unsided, left, and right variants, and cross-references to SNOMED CT, FMA, UMLS, and MESH.[^anat-docs] +[Anatomic locations](/glossary/anatomic-location.md) use RadLex identifiers of the form `RID####`. Sided structures use composite identifiers, such as `RID294_RID5824` for the left uterine adnexa. Locations have ["contained by" and "part of"](/glossary/contained-by-and-part-of.md) hierarchies, [laterality](/glossary/laterality.md) links between unsided, left, and right variants, and cross-references to SNOMED CT, FMA, UMLS, and MESH.[^anat-docs] -[Common data elements](/glossary/cde.md) are the formally governed counterpart, published by the ACR and RSNA through RadElement with `RDES###` set identifiers and `RDE####` element identifiers. They are external to OIDM. The relationship runs the other way from the one people expect: finding models are the fast-moving workbench, and proven definitions are candidates to graduate into common data elements.[^deck] +[Common data elements](/glossary/cde.md) are external to OIDM, governed by the ACR and RSNA, and published through RadElement. Sets use `RDES###` identifiers, and elements use `RDE####`. Finding models support experimentation, with proven definitions becoming candidates for common data elements.[^deck] -[Exam types](/glossary/exam-type.md) are coded with LOINC. The Exam Finding List requires a LOINC code on its exam header, and the only written design for a richer exam-type capability, one that would weight the LOINC and RSNA Radiology Playbook vocabulary for orderables and carry Playbook correspondences in crosswalk provenance, lives in the terminology lookup roadmap.[^molu-roadmap] +[Exam types](/glossary/exam-type.md) use LOINC codes, which the Exam Finding List requires in its exam header. The terminology lookup roadmap contains the only written design for richer exam-type support. It proposes weighting LOINC and RSNA Radiology Playbook vocabulary for orderables and recording Playbook correspondences in crosswalk provenance.[^molu-roadmap] # The data structures -An [Observation](/glossary/observation.md) is the atomic unit: what, where, and how. The deck states it as a finding tag plus an anatomic location plus lesion characteristics, carrying presence indicators, change from prior, and measurements.[^deck] In the Exam Finding List JSON this appears as a `findingCode` with its `findingDescription`, an optional `anatomicLocation` object holding a RadLex identifier and display text, and an `attributes` array of attribute code, value code, and descriptions. +An [Observation](/glossary/observation.md) records a finding tag, anatomic location, and lesion characteristics, including presence, change from prior, and measurements.[^deck] The Exam Finding List JSON represents these as `findingCode` and `findingDescription`, an optional `anatomicLocation` with a RadLex identifier and display text, and an `attributes` array with attribute codes, value codes, and descriptions. ```json { @@ -88,17 +88,19 @@ An [Observation](/glossary/observation.md) is the atomic unit: what, where, and } ``` -An [Exam Finding List](/glossary/exam-finding-list.md) wraps all observations from one exam with a report identifier, patient information, and exam information including the LOINC-coded exam type. Repeated instances of the same finding get separate entries, each with its own observation identifier, so three kidney stones are three observations rather than one with a count.[^ipl-main] +An [Exam Finding List](/glossary/exam-finding-list.md) collects an exam's observations with a report identifier, patient information, and exam information, including the LOINC-coded exam type. Repeated instances of the same finding get separate entries, each with its own observation identifier, so three kidney stones are three observations rather than one with a count.[^ipl-main] -An [Imaging Problem List](/glossary/imaging-problem-list.md) reorganizes observations across a patient's exams by finding rather than by date, which is what makes the question "was finding X present on the most recent study" a lookup instead of a search.[^deck] An [Imaging Persona](/glossary/imaging-persona.md) is the stated goal of surrounding that with clinical context, medical baseline, specialized history, and surgical history. It exists in the deck and nowhere else. +An [Imaging Problem List](/glossary/imaging-problem-list.md) groups observations across a patient's exams by finding to answer "was finding X present on the most recent study" with a lookup.[^deck] An [Imaging Persona](/glossary/imaging-persona.md) would add clinical context, medical baseline, specialized history, and surgical history. It is a goal recorded only in the deck. -The 2024 site post describes the surrounding model in wider terms, listing observations, current report text, imaging studies, patient, order, prior studies, tracked observations, and electronic health record data as the elements OIDM organizes over FHIR.[^site-structure] +The 2024 site post describes a broader model organized over FHIR. It includes observations, current report text, imaging studies, patient, order, prior studies, tracked observations, and electronic health record data.[^site-structure] # The applications -Finding Model Forge is the authoring front end: sign in, name a finding, generate a description, review it, generate attributes, and save a draft that moves through a submission and review lifecycle.[^forge] The catalog site reads finding model definitions directly out of the content repository at build time and renders browsable pages. The report extraction and coding platform takes narrative report text, extracts findings in chunks, validates against verbatim quotes, and assigns finding and location codes in a separate post-extraction coding pass.[^ipl-dev] The viewer renders Imaging Problem Lists, with a second-generation anatomy-aware dashboard. The `molu` terminology lookup library resolves terms and codes across RadLex, SNOMED CT, FMA, LOINC, and UMLS, which is the infrastructure the enrichment and coding work depends on. +Finding Model Forge supports authoring and review. Authors sign in, name a finding, generate and review a description, generate attributes, and save a draft for submission and review.[^forge] The catalog site reads definitions from the content repository at build time and creates browsable pages. -The rule that keeps the coding honest is stated in the assignment rules document on the extraction platform's development branch: an anatomic location is attached only when the report localizes the finding, and is omitted rather than guessed when it does not.[^ipl-anat-rules] +The report extraction and coding platform extracts findings from chunks of narrative report text and validates them against verbatim quotes. A separate pass assigns finding and location codes.[^ipl-dev] The rule that keeps the coding honest is stated in the assignment rules document on the extraction platform's development branch: an anatomic location is attached only when the report localizes the finding, and is omitted rather than guessed when it does not.[^ipl-anat-rules] + +The viewer displays Imaging Problem Lists and has a second-generation anatomy-aware dashboard. The `molu` library supports enrichment and coding through term and code lookup across RadLex, SNOMED CT, FMA, LOINC, and UMLS. # Implementation status @@ -128,7 +130,7 @@ The layers are at very different stages. This table states where each piece actu | Open Imaging Reporting SDK | Concept only | Named as a strategic pillar in the deck; no repository or artifact exists[^deck] | | ACR-OIDM working group | Proposed | Stated as a call to action in the deck; not recorded as convened[^deck] | -Per-area goals and the sources that state them are collected under [roadmap](/roadmap/). Every repository, its role, and its branch of record are listed in [the repository map](/repositories/repository-map.md). +See [roadmap](/roadmap/) for goals and their sources, and [the repository map](/repositories/repository-map.md) for repository roles and branches of record. [^deck]: Open Imaging Data Model 2026 Status Update, January 2026 [^fm-model]: FindingModelFull definition, findingmodel repository, main diff --git a/knowledge/overview/getting-involved.md b/knowledge/overview/getting-involved.md index ca3f7c0..5e6de68 100644 --- a/knowledge/overview/getting-involved.md +++ b/knowledge/overview/getting-involved.md @@ -4,7 +4,7 @@ title: Getting involved description: Where the OIDM community gathers, which repositories to start with, how to file issues, how content is contributed, and how this knowledgebase is edited. tags: [overview, community, contributing] status: draft -generated: { by: claude-opus-5/claude-code, at: 2026-09-21T15:00:00Z } +generated: { by: codex/gpt-6, at: 2026-09-21T20:34:50Z } sources: - id: site-involved resource: https://www.openimagingdata.org/how-to-get-involved/ @@ -25,7 +25,7 @@ sources: # Where the project gathers -Everything OIDM produces is public. The four durable entry points are the GitHub organization, the project site, the Slack channel, and the deployed tools. +OIDM's work is public. These channels provide access to its code, content, tools, and discussions. | Channel | Where | What it is for | |---|---|---| @@ -35,13 +35,13 @@ Everything OIDM produces is public. The four durable entry points are the GitHub | Finding Model Forge | | Authoring finding models through a browser | | IPL viewer demo | | Seeing an Imaging Problem List rendered from real sample data | -The site's participation post also invites registration for newsletter updates and article comments, describes working groups on use cases and standards work, and asks for help identifying related projects and venues where the work would have impact.[^site-involved] That post dates from August 2023 and parts of it have aged: it advertises a working group on the TypeScript reference implementation, which is now a lineage repository rather than active work, and its meeting section is a placeholder. Treat the GitHub organization and the Slack channel as the current live channels. The site also carries a contact link for general inquiries. +Use GitHub and Slack for current discussions. The site's August 2023 participation post invites newsletter registration and article comments, describes use-case and standards working groups, and seeks related projects and venues.[^site-involved] Some details have aged. The advertised working group on the TypeScript reference implementation concerns a repository now kept for lineage. The meeting section remains a placeholder. The site also has a contact link for general inquiries. -The largest stated organizational goal is not yet a channel you can join. The January 2026 deck proposes an "ACR-OIDM Structured Imaging Results Working Group" co-hosted with the ACR, bringing expert and vendor participants into one venue, with a use-case pipeline feeding the ACR and RSNA common data element group.[^deck] It is a proposal, not a convened body. +The January 2026 deck proposes an "ACR-OIDM Structured Imaging Results Working Group" co-hosted with the ACR. It would bring together experts and vendors, with a use-case pipeline feeding the ACR and RSNA common data element group.[^deck] The group is not recorded as convened. # Repositories to start with -Pick by what you want to do. Every repository, including the lineage ones, is listed with its status and branch of record in [the repository map](/repositories/repository-map.md). +Choose a repository by task. [The repository map](/repositories/repository-map.md) lists all repositories, including lineage projects, with their status and branches of record. | If you want to | Start at | |---|---| @@ -52,36 +52,36 @@ Pick by what you want to do. Every repository, including the lineage ones, is li | Look up codes across terminologies | `openimagingdata/med-ontology-lookup`, the `molu` library and CLI | | Work on the authoring application | `openimagingdata/FindingModelForge` | -Several of these repositories have their current state on a branch other than `main`. Check the repository map before assuming the default branch is the live one. +Check the repository map before starting. Several repositories keep current work on branches other than `main`. # Filing issues -Each repository carries its own issue tracker, and issues are where the work edge is visible. File against the repository that owns the thing you are reporting. +File issues in the repository that owns the affected content or code. -- **A wrong, missing, or badly scoped finding model** goes to `openimagingdata/findingmodels`. The public catalog site routes its "Submit Issue" link there.[^catalog-site] -- **A bug or gap in the library, CLI, or anatomic location data** goes to `openimagingdata/findingmodel`. -- **A question about the data structures** goes to `openimagingdata/imaging-problem-list`. Its issue #1, asking for a formal model layer with JSON Schema export for Observation, Exam Finding List, and Imaging Problem List, is open and unclaimed. -- **Terminology lookup behavior** goes to `openimagingdata/med-ontology-lookup`. +- Report wrong, missing, or badly scoped finding models to `openimagingdata/findingmodels`. The public catalog's "Submit Issue" link goes there.[^catalog-site] +- Report library, CLI, or anatomic location data problems to `openimagingdata/findingmodel`. +- Ask data structure questions in `openimagingdata/imaging-problem-list`. Its open, unclaimed issue #1 requests a formal model layer with JSON Schema export for Observation, Exam Finding List, and Imaging Problem List. +- Report terminology lookup problems to `openimagingdata/med-ontology-lookup`. -Existing open issues are the best statement of what the project knows is missing. They are summarized by area under [roadmap](/roadmap/). +See [roadmap](/roadmap/) for open issues by area. # Contributing content -Content means [finding models](/glossary/finding-model.md) and the [anatomic locations](/glossary/anatomic-location.md) they reference. There are three routes, and they differ in how much of the work you do by hand. +Content includes [finding models](/glossary/finding-model.md) and their [anatomic locations](/glossary/anatomic-location.md). Choose one of three contribution routes. -**Through Finding Model Forge.** The browser application is the supported route for authoring a single finding model without cloning anything. You sign in with GitHub, name the finding, generate and edit a description and synonyms, generate the attributes, and the draft autosaves. Submitting locks the draft for review, and a reviewer moves it through under review to added or declined.[^forge] Editing a model after creation is an open issue on that repository, not yet available. +**Finding Model Forge.** To author a single model in the browser, sign in with GitHub and name the finding. Generate and edit its description and synonyms, then generate attributes. The draft autosaves. Submission locks it for review, and a reviewer moves it through under review to added or declined.[^forge] Editing a model after creation is an open issue on that repository, not yet available. -**Through the content repository.** Definitions live as one JSON file per finding, validated on commit, with identifiers issued from a registry that detects duplicates. Batch authoring and review run through agent skills held in that repository. Contributing this way means working with the schema directly; the prose mirror of the schema is the reference.[^fm-content] +**The content repository.** Definitions are JSON files, one per finding, validated on commit. A registry issues identifiers and detects duplicates. Repository agent skills support batch authoring and review. Use the prose schema mirror when editing definitions directly.[^fm-content] -**Through staged common data elements.** Candidate definitions authored informally, ahead of formal review, are staged in `openimagingdata/CDEStaging` before entering the ACR and RSNA review pipeline that publishes through RadElement. That path is a manual curation workflow rather than an automated one. +**Staged common data elements.** Informal candidate definitions go into `openimagingdata/CDEStaging` before formal ACR and RSNA review and publication through RadElement. This is a manual curation workflow. -Identifier discipline matters in all three routes. An [OIFM identifier](/glossary/oifm.md) encodes its contributing organization in its letter block, and identifiers are never reissued or regenerated on a round trip. The authoring conventions are covered in [the authoring workflow](/semantic-foundation/finding-models/authoring-workflow.md). +Identifier discipline matters in all three routes. An [OIFM identifier](/glossary/oifm.md) encodes its contributing organization in its letter block, and identifiers are never reissued or regenerated on a round trip. See [the authoring workflow](/semantic-foundation/finding-models/authoring-workflow.md) for conventions. # Contributing to this knowledgebase -This repository is the canonical high-level documentation, written as an Open Knowledge Format bundle so that both people and agents can read it. It describes and links to catalogs; it does not copy them. Code documentation, install steps, and developer workflow stay with the code. +This repository provides canonical high-level documentation as an Open Knowledge Format bundle for people and agents. It describes and links to catalogs; it does not copy them. Keep installation instructions, API usage, and developer workflows with the code. -Before editing anything here, read [the authoring guide](/guides/authoring-guide.md). It sets the document types, the required frontmatter, the trust workflow by which a draft becomes verified, the linking conventions, and the procedure for migrating a document out of a working repository. Two checkers run on every push and must pass: an Open Knowledge Format conformance validator and a house-rules checker that enforces the type vocabulary, index coverage, link resolution, and a sweep for names and email addresses. +Read [the authoring guide](/guides/authoring-guide.md) before editing. It covers document types, frontmatter, draft verification, links, and document migration. Two checkers must pass on every push: the Open Knowledge Format validator and a house checker for types, index coverage, links, names, and email addresses. Two house rules catch newcomers. Facts and stated goals only, with every goal citing the deck, issue, or plan that states it, because design proposals belong to a separate workstream. And organizations, not individuals: the project lead is named as such and nobody else is named. diff --git a/knowledge/overview/vision.md b/knowledge/overview/vision.md index 7f1f41c..4e6adb2 100644 --- a/knowledge/overview/vision.md +++ b/knowledge/overview/vision.md @@ -4,7 +4,7 @@ title: Vision description: Why OIDM pursues object-oriented imaging results, what that unlocks across the imaging life cycle, and what the project has proposed next. tags: [overview, vision, strategy] status: draft -generated: { by: claude-opus-5/claude-code, at: 2026-09-21T15:00:00Z } +generated: { by: codex/gpt-6, at: 2026-09-21T20:34:50Z } sources: - id: deck resource: https://gamma.app/docs/Open-Imaging-Data-Model-2026-Status-Update:-Realizing-Object-Oriented-Imaging-Results-yfxzx4q9zssafal @@ -28,31 +28,31 @@ sources: # Object-oriented imaging results -The January 2026 status deck frames the project's goal as "standardizing the DNA of imaging IT" and titles itself "Realizing Object-Oriented Imaging Results."[^deck] The metaphor is deliberate. An imaging result today is a document. The proposition is that it should instead be a set of objects: each finding an addressable thing with a type, a location, attributes, and an identity that persists across exams. +The January 2026 status deck calls OIDM's goal "standardizing the DNA of imaging IT" and titles itself "Realizing Object-Oriented Imaging Results."[^deck] It proposes representing each finding as an object with a type, location, attributes, and an identity that persists across exams. -The earlier site posts set the technical form of that proposition. A finding is "a standard format based on FHIR Observations semantically labeled with ACR/RSNA Common Data Element identifiers."[^site-findings] The wider model is described as "a superstructure on top of these FHIR definitions to both organize them and enable more straightforward programmatic access to the data," with an explicit analogy: "the relationship between OIDM and FHIR might be that between the browser's DOM and HTML."[^site-structure] FHIR supplies the resources; OIDM supplies the object model over them that software can actually program against. +The site posts describe a finding as "a standard format based on FHIR Observations semantically labeled with ACR/RSNA Common Data Element identifiers."[^site-findings] The wider model is "a superstructure on top of these FHIR definitions to both organize them and enable more straightforward programmatic access to the data." The post compares the layers: "the relationship between OIDM and FHIR might be that between the browser's DOM and HTML."[^site-structure] FHIR supplies resources, and OIDM supplies an object model for programmatic access. # What object-oriented results unlock -The deck names three consequences.[^deck] +The deck names three benefits.[^deck] -**A unified reading toolset.** Picture archiving and communication systems, reporting software, and artificial intelligence tools currently each hold their own partial, private representation of what an exam showed. A shared object model lets one representation serve all three, so a finding created in one tool is legible in the next. +**A unified reading toolset.** Picture archiving and communication systems, reporting software, and artificial intelligence tools each hold partial, private representations of exam results. A shared object model would make findings created in one tool readable by the others. -**Integrated data sources.** Radiologists, the electronic medical record, and artificial intelligence tools all produce statements about a patient's imaging. When each produces the same kind of object, they can be merged, compared, and attributed rather than kept in separate lanes. The deck lists correlating artificial intelligence observations against radiologist observations as an explicit validation use case. +**Integrated data sources.** A common representation would let systems merge, compare, and attribute statements from radiologists, electronic medical records, and artificial intelligence tools. The deck proposes validating artificial intelligence tools by correlating their observations with radiologist observations. -**Downstream longitudinal utility.** Once findings are objects with identity, a patient's imaging history becomes queryable. The core query the deck names for the [Imaging Problem List](/glossary/imaging-problem-list.md) is whether a given finding was present on the most recent study, with dynamic tracking of appearance, disappearance, and change. +**Downstream longitudinal utility.** Findings with persistent identities would make imaging histories queryable. The deck's core query for the [Imaging Problem List](/glossary/imaging-problem-list.md) is whether a finding was present on the most recent study, with tracking of appearance, disappearance, and change. # The workbench relationship between finding models and CDEs -The deck's most specific strategic claim concerns the relationship between [finding models](/glossary/finding-model.md) and formal [common data elements](/glossary/cde.md). It calls the Open Imaging Finding Model corpus "the CDE workbench."[^deck] +The deck calls the [finding models](/glossary/finding-model.md) corpus "the CDE workbench."[^deck] [Common data elements](/glossary/cde.md) published through RadElement undergo formal ACR and RSNA review, versioning, and governance. That process supports adoption but slows creation. -The reasoning is about velocity and governance. Common data elements published through RadElement are formally reviewed, versioned, and governed by the ACR and RSNA, which is what makes them worth adopting and also what makes them slow to create. Finding models are authored quickly, with language model assistance, through [Finding Model Forge](https://fmf.oidm.org) and agent-driven batch workflows. The deck positions that speed as a feature: finding models are a "rapid innovation / proving ground before ACR/RSNA CDE adoption," carrying "exploratory metadata" in the form of "rich definitions w/ embedded relationships and semantic tags that can graduate to standards."[^deck] +[Finding Model Forge](https://fmf.oidm.org) and agent-driven batch workflows support faster authoring with language model assistance. The deck describes finding models as a "rapid innovation / proving ground before ACR/RSNA CDE adoption." Their "exploratory metadata" includes "rich definitions w/ embedded relationships and semantic tags that can graduate to standards."[^deck] -The finding model corpus therefore serves two purposes at once. It is programmatic knowledge, described in the deck as "ground-level info for tool access + LLM context engineering," usable today by extraction and reporting tools. And it is a staging ground whose proven definitions become candidates for formal common data elements. The relationship is treated in depth in [Finding models and CDEs](/semantic-foundation/finding-models/finding-models-and-cdes.md). +The corpus supplies knowledge for extraction and reporting tools, described in the deck as "ground-level info for tool access + LLM context engineering." Proven definitions become candidates for formal common data elements. See [Finding models and CDEs](/semantic-foundation/finding-models/finding-models-and-cdes.md). # The Imaging Problem List across the imaging life cycle -The deck argues that structured results pay off at every stage of an imaging encounter, not only at reporting.[^deck] +The deck proposes uses for structured results throughout an imaging encounter.[^deck] | Stage | Stated application | |---|---| @@ -61,31 +61,31 @@ The deck argues that structured results pay off at every stage of an imaging enc | Interpretation | Findings-oriented views in the picture archiving system, real-time quality control | | Post-interpretation | Passive screening, research cohorts, outcomes tracking | -The same point appears in the 2023 framework post, which proposes a plugin-container architecture in which a reporting tool hosts small programs, supplies them with "all the relevant contextual information, about the findings in the current report, about prior reports, about the exams that were being reported on," re-runs them whenever the report context changes, and lets them issue commands back to insert text, request input, raise alerts, or send data onward.[^site-plugin] That architecture only works if the context handed to the plugins is structured, which is what the data structures layer provides. +The 2023 framework post proposes a reporting tool that hosts plugins and supplies "all the relevant contextual information, about the findings in the current report, about prior reports, about the exams that were being reported on." The tool reruns plugins when context changes. Plugins can insert text, request input, raise alerts, or send data onward.[^site-plugin] The data structures layer provides the structured context those plugins need. # Why not just let the language model read the report -Large language models can read narrative reports well, which raises the obvious objection that structure is unnecessary. The deck answers it with three arguments.[^deck] +Large language models can read narrative reports, but the deck gives three reasons to retain structured results.[^deck] -**Context engineering.** A model answers better when given the relevant findings directly than when given a stack of prior reports to re-read. Structured results are how the right context gets selected and delivered. +**Context engineering.** Models answer better when given relevant findings directly. Structured results let systems select that context from prior reports. -**Deterministic logic.** Some decisions must not be probabilistic. MRI safety checks and protocol selection are rule evaluations over facts. They need facts with known types and known codes, not an inference drawn fresh from prose on each run. +**Deterministic logic.** MRI safety checks and protocol selection require rules over facts with known types and codes. Reinterpreting prose on each run does not provide that consistency. -**Citable common context.** When several systems act on the same patient, they need to be acting on the same stated facts, with a shared reference that can be pointed at and audited. A model's private reading of a report is neither shared nor citable. +**Citable common context.** Systems acting on the same patient need shared, auditable facts. A model's private interpretation of a report provides no shared reference. -The argument is not that language models are unsuited to the work. They do the extraction: the deck's own premise is that the Imaging Problem List is "automatically extractable from narrative report text via LLMs."[^deck] The argument is about where the model sits. It converts prose into objects once, and everything downstream operates on the objects. +The deck describes the Imaging Problem List as "automatically extractable from narrative report text via LLMs."[^deck] Language models convert prose into objects once for downstream systems to use. # The proposed working group -The deck's call to action is a proposal, not an existing body. It proposes that the ACR co-host an "ACR-OIDM Structured Imaging Results Working Group," bringing together expert and vendor participants.[^deck] Three principles are stated for it: structure first, with mapping to FHIR and other standards following rather than leading; vendor-driven innovation, with reporting software vendors building on the result; and an academic-vendor "big tent" that the project would host and moderate. +The deck's call to action is a proposal, not an existing body. The deck proposes an "ACR-OIDM Structured Imaging Results Working Group," co-hosted with the ACR and bringing together expert and vendor participants.[^deck] Its principles are to define structures before mapping them to FHIR and other standards, support innovation by reporting software vendors, and host an academic-vendor "big tent" moderated by the project. -The deck lists four ACR priorities the working group would serve: recommendation tracking, validation of artificial intelligence tools by correlating their observations against radiologist observations, quality metrics, and support for the *-RADS reporting systems. The stated next steps are to convene that group, run a use-case pipeline feeding the CDE group, and standardize the result. +The proposed group would address four ACR priorities: recommendation tracking, artificial intelligence validation against radiologist observations, quality metrics, and support for the *-RADS reporting systems. The next steps are to convene the group, run a use-case pipeline feeding the CDE group, and standardize the result. -As of this writing the working group is a proposal recorded in the deck. Nothing in the source repositories records it as convened. Stated goals for each area are collected under [roadmap](/roadmap/). +As of this writing the working group is a proposal recorded in the deck. Nothing in the source repositories records it as convened. Area-specific goals appear under [roadmap](/roadmap/). # Evidence offered so far -The vision has been argued in a peer-reviewed venue. A 2024 site post announces a manuscript in the Journal of the American Medical Informatics Association titled "Standardizing imaging findings representation: harnessing Common Data Elements semantics and Fast Healthcare Interoperability Resources structures," whose position the post summarizes as "CDE-labeled Observations should be the universal representation for exchanging and consuming content in radiology reports," worked through a pulmonary nodule case study together with guidance on adoption challenges.[^site-benchmark] +A 2024 site post announces a manuscript in the peer-reviewed Journal of the American Medical Informatics Association titled "Standardizing imaging findings representation: harnessing Common Data Elements semantics and Fast Healthcare Interoperability Resources structures." The post summarizes its position as "CDE-labeled Observations should be the universal representation for exchanging and consuming content in radiology reports." The manuscript presents a pulmonary nodule case study and guidance on adoption challenges.[^site-benchmark] [^deck]: Open Imaging Data Model 2026 Status Update, January 2026 [^site-structure]: "Data Model: Structure and Function", 2024-01-25 diff --git a/knowledge/overview/what-is-oidm.md b/knowledge/overview/what-is-oidm.md index 2623b21..9042524 100644 --- a/knowledge/overview/what-is-oidm.md +++ b/knowledge/overview/what-is-oidm.md @@ -4,7 +4,7 @@ title: What is OIDM description: The mission of the Open Imaging Data Model, the problem it addresses, its three layers, who it serves, and where its work lives. tags: [overview, orientation] status: draft -generated: { by: claude-opus-5/claude-code, at: 2026-09-21T15:00:00Z } +generated: { by: codex/gpt-6, at: 2026-09-21T20:34:50Z } sources: - id: deck resource: https://gamma.app/docs/Open-Imaging-Data-Model-2026-Status-Update:-Realizing-Object-Oriented-Imaging-Results-yfxzx4q9zssafal @@ -25,46 +25,46 @@ sources: # What OIDM is -The [Open Imaging Data Model (OIDM)](/glossary/oidm.md) is an open project that defines how the results of an imaging exam are represented as data rather than as prose. Its stated purpose, in the words of the project site, is "defining unified data structures to integrate new functionality into imaging informatics platforms."[^site-about] The January 2026 status deck puts the same ambition more bluntly: standardizing "the DNA of imaging IT."[^deck] +The [Open Imaging Data Model (OIDM)](/glossary/oidm.md) is an open project that represents imaging exam results as structured data. The project site describes its purpose as "defining unified data structures to integrate new functionality into imaging informatics platforms."[^site-about] The January 2026 status deck calls this standardizing "the DNA of imaging IT."[^deck] -Concretely, OIDM supplies three things. It supplies a controlled vocabulary of imaging findings and the attributes that characterize them, each carrying a stable identifier. It supplies a small hierarchy of data structures that carry those findings from a single [observation](/glossary/observation.md) up to a longitudinal view of one patient. And it supplies working tools that produce and consume those structures, so that the vocabulary and the structures are exercised against real reports rather than only specified. +OIDM provides a controlled vocabulary, data structures, and tools that produce and consume them. Stable identifiers connect findings and their attributes across individual [observations](/glossary/observation.md) and longitudinal patient records. The tools apply the vocabulary and structures to real reports. # The problem: results locked in narrative -An imaging report is the product of the exam, and it is almost always a block of narrative text. That text is readable by a clinician and opaque to everything else. A downstream system that wants to know whether a pulmonary nodule was present on the most recent chest CT, how large it was, and whether it grew, has to re-read the prose every time, and each system re-reads it differently. +Imaging reports are usually narrative text. To determine whether a pulmonary nodule was present on the latest chest CT, how large it was, or whether it grew, downstream systems must interpret that text. Each system interprets it differently. -The consequences compound across the imaging life cycle. Prior findings cannot be retrieved reliably at interpretation time, so radiologists reconstruct history by reading old reports. Recommendations made in a report cannot be tracked to completion. Quality metrics and registry submissions require manual abstraction. Findings produced by artificial intelligence tools and findings produced by radiologists cannot be compared, because they are not expressed in the same terms. Each vendor that solves part of this solves it privately, in its own schema, which means the solution does not travel. +Radiologists reconstruct finding histories from old reports because prior findings cannot be retrieved reliably. Recommendations cannot be tracked to completion. Quality metrics and registry submissions require manual abstraction. Artificial intelligence tools and radiologists express findings differently, preventing comparison. Vendors address these problems with private schemas that other systems cannot reuse. -OIDM's response is to make the finding, not the report, the unit of data. A finding gets a coded identity, a coded location, coded attributes, and a place in a structure that other systems can query. The 2023 site post that set the direction states it as: "Radiology findings can be represented in a standard format based on FHIR Observations semantically labeled with ACR/RSNA Common Data Element identifiers."[^site-findings] +OIDM gives each finding a coded identity, location, and attributes in a queryable structure. The 2023 site post states the approach: "Radiology findings can be represented in a standard format based on FHIR Observations semantically labeled with ACR/RSNA Common Data Element identifiers."[^site-findings] # Three layers -The project organizes its work into three layers, and this knowledgebase follows that organization. +The project and this knowledgebase organize the work into three layers. -**Semantic foundation.** The vocabulary layer. It holds [finding models](/glossary/finding-model.md), each a named finding with a description, synonyms, and a list of attributes, identified by an [Open Imaging Finding Model (OIFM)](/glossary/oifm.md) identifier.[^fm-schema] It holds [anatomic locations](/glossary/anatomic-location.md) keyed by RadLex identifiers, [common data elements](/glossary/cde.md) published through RadElement, [exam types](/glossary/exam-type.md), and the external terminologies all of these draw on. See [semantic-foundation](/semantic-foundation/). +**Semantic foundation.** [Finding models](/glossary/finding-model.md) define findings with descriptions, synonyms, and attributes. Each has an [Open Imaging Finding Model (OIFM)](/glossary/oifm.md) identifier.[^fm-schema] The layer also includes [anatomic locations](/glossary/anatomic-location.md) keyed by RadLex identifiers, [common data elements](/glossary/cde.md) published through RadElement, [exam types](/glossary/exam-type.md), and external terminologies. See [semantic-foundation](/semantic-foundation/). -**Data structures.** The container layer. An [Observation](/glossary/observation.md) is one finding in one exam, with its location and attribute values. An [Exam Finding List](/glossary/exam-finding-list.md) is every observation from one exam in one queryable structure.[^ipl-readme] An [Imaging Problem List](/glossary/imaging-problem-list.md) reorganizes observations across a patient's exams by finding rather than by date. An [Imaging Persona](/glossary/imaging-persona.md) is the stated goal of surrounding that with clinical context. See [data-structures](/data-structures/). +**Data structures.** An [Observation](/glossary/observation.md) records one finding in one exam, with its location and attribute values. An [Exam Finding List](/glossary/exam-finding-list.md) collects an exam's observations in one queryable structure.[^ipl-readme] An [Imaging Problem List](/glossary/imaging-problem-list.md) groups observations across a patient's exams by finding. An [Imaging Persona](/glossary/imaging-persona.md) is the stated goal of adding clinical context. See [data-structures](/data-structures/). -**Applications.** The tools that make the first two layers real: an authoring application for finding models, a catalog site, a viewer for Imaging Problem Lists, a report extraction and coding platform, and a terminology lookup library. See [applications](/applications/). +**Applications.** Tools include a finding model authoring application, a catalog site, an Imaging Problem List viewer, a report extraction and coding platform, and a terminology lookup library. See [applications](/applications/). -Each layer depends on the one below it, and the identifiers are what join them. How the layers and identifier systems connect is laid out in [Architecture](/overview/architecture.md), and the reasoning behind the whole design in [Vision](/overview/vision.md). +Each layer depends on the one below it through shared identifiers. [Architecture](/overview/architecture.md) explains those connections. [Vision](/overview/vision.md) explains the design rationale. # Who this is for -- **Developers** building imaging informatics software who need formats to read and write, and libraries that already speak them. -- **Informaticists** who need to know what a finding model is, how it relates to a common data element, and what identifier to use for an anatomic structure. -- **Standards bodies and committees** evaluating the vocabulary and data structures, and deciding what should graduate into formal standards. -- **Agents** doing extraction, coding, or authoring work, which is why this knowledgebase is an Open Knowledge Format bundle with machine-readable frontmatter on every document. +- Developers building imaging informatics software need formats and libraries to read and write them. +- Informaticists need to understand finding models, their relationship to common data elements, and identifiers for anatomic structures. +- Standards bodies and committees evaluate vocabulary and data structures for formal standardization. +- Agents extract, code, or author content. This knowledgebase is an Open Knowledge Format bundle with machine-readable frontmatter to support that work. # Where things live -The work is spread across repositories in the `openimagingdata` GitHub organization plus several allied external projects. Content, code, specifications, and in-flight work do not all live in the same place, and several repositories have their current state on a branch other than `main`. [The repository map](/repositories/repository-map.md) lists every source repository, its role, its status, and its branch of record. +OIDM spans repositories in the `openimagingdata` GitHub organization and allied projects. Several repositories keep current work on branches other than `main`. [The repository map](/repositories/repository-map.md) lists their roles, status, and branches of record. -This knowledgebase is the high-level documentation. It describes and links to catalogs; it does not copy them. Installation instructions, API usage, and developer workflow stay with the code. +It describes and links to catalogs; it does not copy them. Installation instructions, API usage, and developer workflows stay with the code. # Getting involved -Participation channels, the repositories to start with, how to file issues, and how content is contributed are covered in [Getting involved](/overview/getting-involved.md). Conventions for editing this knowledgebase itself are in [the authoring guide](/guides/authoring-guide.md). +See [Getting involved](/overview/getting-involved.md) for participation channels, repositories, issues, and content contributions. See [the authoring guide](/guides/authoring-guide.md) for knowledgebase conventions. [^deck]: Open Imaging Data Model 2026 Status Update, January 2026 [^site-about]: openimagingdata.org, project site and tagline diff --git a/knowledge/plans/2026-09-20-knowledgebase-build-plan.md b/knowledge/plans/2026-09-20-knowledgebase-build-plan.md index a45c065..b8c8c8c 100644 --- a/knowledge/plans/2026-09-20-knowledgebase-build-plan.md +++ b/knowledge/plans/2026-09-20-knowledgebase-build-plan.md @@ -4,7 +4,7 @@ title: Knowledgebase build plan description: How the oidm-knowledge repository is scaffolded, populated from the source repositories, cross-linked, validated, and published. tags: [plan, meta] status: draft -generated: { by: claude-fable-5-1/claude-code, at: 2026-09-20T22:30:00Z } +generated: { by: codex/gpt-6, at: 2026-09-21T20:53:02Z } sources: - id: charter resource: scope:grilling-session-2026-09-20 @@ -16,9 +16,9 @@ sources: # Purpose -Build `oidm-knowledge` as the canonical, public, high-level documentation for the Open Imaging Data Model (OIDM). Non-code documentation migrates here from the working repositories; those repositories will later reference this one. The bundle follows the Open Knowledge Format (OKF) 0.2 so that people and agents can both read it. +Build `oidm-knowledge` as canonical public, high-level documentation for the Open Imaging Data Model (OIDM) in Open Knowledge Format (OKF) 0.2. Migrate non-code documentation here and replace it with links in the source repositories. -This plan is itself part of the bundle. It is updated as phases complete and marked complete at the end. +This plan is itself part of the bundle. Update this plan as phases finish and mark it complete when all work is done. # Decisions already made @@ -40,7 +40,7 @@ These were settled with the project lead on 2026-09-20 and are not re-opened her # The project lead's stated goals -Recorded verbatim from the 2026-09-20 request that started this work, so that documents citing `scope:grilling-session-2026-09-20` have a written source. Wording lightly normalized for spelling only. +Recorded verbatim from the 2026-09-20 request that started this work, so that documents citing `scope:grilling-session-2026-09-20` have a written source. Only spelling was normalized. - **Open Imaging Finding Models.** "Definition formats, needs overhaul for increased metadata and interesting relationship/graph work coming from CDEs." "Tooling for working with these, using them, probably needs corresponding overhaul." "Actual content efforts." - **ACR/RSNA Common Data Elements.** "Should dovetail with the OIFM work." @@ -52,7 +52,7 @@ Recorded verbatim from the 2026-09-20 request that started this work, so that do # Source map -Inventory reports for every source live in the session scratchpad and are summarized here. "Read from" names the branch that represents current state. +Inventory reports for every source live in the session scratchpad and are summarized here. "Read from" names the branch used for current state. | Source | Role | Read from | Key migration candidates | |---|---|---|---| @@ -77,7 +77,7 @@ Inventory reports for every source live in the session scratchpad and are summar # The work edge -The project lead asked that the knowledgebase reflect the entire work edge, not only default branches. Branch-level inventories on 2026-09-21 established the following. Documents that describe current state cite the branch and pin the commit they read. +The project lead asked that the knowledgebase reflect the entire work edge, not only default branches. Cite the branch and pin the commit they read for each account of current state. - **findingmodels.** The MGB exam-oriented sub-taxonomies on `taxonomy-export-2026-08-15` are the immediate direction for all content and are expected to replace many of the Gamuts-derived models, which make up 1,933 of the 2,382 current definitions. Rows without a matched OIFM ID are the next triage task. Three content pipelines (`content/chestcts` as the live CT-chest front, `content/headcts`, `km`) and a metadata-enrichment branch touching 78 models are in flight, none merged. The finding model schema is being extended on three uncoordinated branches with nothing landed on `main`. - **findingmodel.** The live thread is the canonical structured-metadata rewrite on `feature/metadata-cleanup` and `dev`: eight new optional fields (body regions, subspecialties, etiologies, entity type, applicable modalities, expected time course, age profile, sex specificity), a multi-agent enrichment architecture, and a dual-database release plan. The older eight-facet specification is superseded. The branch's own readiness assessment is not yet passing. Twenty-four open issues map one-to-one onto task plans. @@ -237,7 +237,7 @@ Remaining: ## Phase 1: Spine -Overview, glossary, repository map, history, references. These are written first because every later document links into them. +Write the overview, glossary, repository map, history, and references first so later documents can link to them. - Opus synthesis agents, one per directory, each given the relevant inventory reports, the source file paths, the authoring guide, and the deck extract. - The glossary harvests every definition-like statement the inventories quoted and flags conflicts for the project lead in `roadmap/open-questions.md`. @@ -265,7 +265,7 @@ Goals and open questions per area, drawn from the deck, GitHub issues, and plan 2. Both validators pass under strict mode. Site builds and deploys. Link checker passes. 3. The project lead reviews document by document. Each accepted document gains `verified` and `status: stable`. Rejections go back to the phase's agent with notes. 4. Documentation review: this plan marked complete, `CHANGELOG.md` reflecting the first release, `DEV_LOG.md` current, migration ledger complete. -5. Follow-ups filed as issues: source-repo pull requests replacing migrated docs with links; manuscripts to integrate; the proposals workstream (finding model format evolution, exam types, IPL data model system). +5. Follow-ups filed as issues: source-repo pull requests replacing migrated docs with links; manuscripts to integrate; the proposals workstream (finding model format evolution, exam types, IPL data model system); production custom domain knowledge.openimagingdata.org for the oidm-knowledge Worker (not urgent); off-the-shelf page feedback and comments (Hypothesis or Giscus); a Quartz plugin rendering OKF `sources` and `verified` as typed graph edges. # Phase status @@ -289,6 +289,22 @@ Answers can come at approval time or during Phase 1. 4. Answered 2026-09-21: publish the next-generation vocabulary document as draft, sourced to the branch, no committee material. 5. Answered 2026-09-21: publish the use case catalog with the committee credit. + +# Decisions added 2026-09-21 + +| Topic | Decision | +|---|---| +| Manuscripts in the bucket | Paraphrase facts, structures, and numbers; cite as "manuscript under review at JDIM, 2026" or "prepared for submission"; never quote; reviewer correspondence never reproduced or paraphrased. | +| Excalidraw boards | Publish the public-facing boards (object model, structured report sections, outcome tracking, exhibit figures, lineage, use-case notes). From internal boards, publish only schema and data-model ideas with organizations named; people, meeting histories, and vendor demo logistics omitted; the rest recorded as reviewed and held. | +| Diagrams | No Mermaid. Excalidraw files rendered to SVG beside each document. Per diagram, a builder is the source until the file is hand-edited, after which the builder is retired (tools/diagrams/README.md). | +| Vendor name in the deck extract | Generalized to "a reporting vendor". | +| Remote | openimagingdata/oidm-knowledge created public; site deploy workflow disabled until the site generator is settled; the project lead pushes main (agent pushes are blocked by a local guard). | +| Upstream defects | Drafted for the project lead's review before any issue is filed. | +| No specification exists | The project is in a coalescing phase; nothing is formally defined. The knowledgebase presents each source's current version of a structure side by side (repo branch and commit, manuscript under review, deck or webinar, board), dated and attributed, and states disagreements (for example the three Imaging Problem List status vocabularies) without resolving them. Words like "specification" or "canonical model" are not used for any of them. | +| Data structures versus transport | Per the project lead's 2026-09-19 manuscript notes: OIDM defines a system of data structures for imaging exam result information used inside applications; FHIR and DICOM are transport expressions designed separately and guided by the structures. The data-structure documents are to be reframed accordingly. | +| Page feedback (later) | Wanted: off-the-shelf page comments and suggested changes, possibly dictation; candidates Hypothesis or Giscus. Not this iteration. | +| Site generator and host | Decided 2026-09-21 after a survey of wiki and knowledge-graph tools (sources/site-tools-comparison.md): Quartz stays, on Cloudflare Workers static assets, which serve its clean URLs natively. Three targets: oidm-knowledge-dev (default, `task deploy`), oidm-knowledge-staging (`task deploy:staging`, also the push-to-main workflow), oidm-knowledge (`task deploy:prod`). Typed-edge graph from OKF frontmatter is a Quartz plugin to write later. The object-storage pipeline was removed. | + # Risks - **Drift while writing.** Source repos are active. Every `sources` entry pins a commit so a reader can tell what version was read. diff --git a/knowledge/references/anatomic-location-json-schema.md b/knowledge/references/anatomic-location-json-schema.md index f373ea4..46b7f25 100644 --- a/knowledge/references/anatomic-location-json-schema.md +++ b/knowledge/references/anatomic-location-json-schema.md @@ -1,10 +1,10 @@ --- type: Reference title: Anatomic location record format -description: The two JSON record formats for anatomic locations, the original anatomiclocations.org body part schema and the current anatomic-locations package format, with a real record from each. +description: The original and current anatomic location formats, with field tables and sample records. tags: [references, anatomic-locations, schema, radlex] status: draft -generated: { by: claude-opus-5/claude-code, at: 2026-09-21T16:00:00Z } +generated: { by: codex/gpt-6, at: 2026-09-21T20:53:02Z } sources: - id: al-schema resource: https://github.com/talkasab/anatomiclocations.org/blob/1f39fa45f621cef947a3f3ef1f869334cfa5c841/data/body_parts_schema.json @@ -31,7 +31,7 @@ sources: # Provenance and status -Two record formats for [anatomic locations](/glossary/anatomic-location.md) coexist in OIDM, and this document holds both. The first is the original schema from the `anatomiclocations.org` repository, read at commit `1f39fa4`, which validates a curated set of 2,890 body parts keyed by [RadLex](/glossary/radlex.md) identifier. The second is the format used by the `anatomic-locations` package inside the `findingmodel` repository, read at commit `75afd39` on `main`, which covers 2,926 records and adds classification, dual hierarchies, and explicit [laterality](/glossary/laterality.md). The build plan names the newer package and its dataset as the current anatomic data, and the older set as lineage.[^build-plan] Field tables here are compiled from the schema file and the model source; the records shown are copied unchanged from the published data. +OIDM has two [anatomic location](/glossary/anatomic-location.md) formats. The original `anatomiclocations.org` schema at `1f39fa4` validates 2,890 body parts keyed by [RadLex](/glossary/radlex.md) identifiers. The `anatomic-locations` package in `findingmodel/main` at `75afd39` covers 2,926 records with classification, dual hierarchies, and explicit [laterality](/glossary/laterality.md). The build plan identifies the newer package as current and the older set as lineage.[^build-plan] Tables derive from the schemas and model source. Example records are unchanged. # Lineage A: the anatomiclocations.org body part schema @@ -90,7 +90,7 @@ The entry for uterine adnexa shows containment, part-of, a laterality pair, sex # Lineage B: the anatomic-locations package format, current -This lineage has two representations of the same information. The curation format is the JSON file that editors change, documented in the repository's own field reference.[^fm-json-schema] The runtime format is the `AnatomicLocation` Pydantic model that the package returns from its index.[^fm-location-model] +Editors use the JSON curation format documented in the field reference.[^fm-json-schema] The package index returns the runtime `AnatomicLocation` Pydantic model.[^fm-location-model] ## Curation format fields @@ -117,7 +117,7 @@ The source file `notebooks/data/anatomic_locations_noembed.json` is a flat JSON Two fields appear in the data but not in the field reference: `sexSpecific`, on 110 records, and `anatomicLocationsId`, on a single record. The field reference also lists `"Spine"` among the common `region` values, but no record in the data uses it and the runtime enumeration has no spine member. The nine region values actually present are Head (869), Upper Extremity (582), Lower Extremity (579), Neck (235), Thorax (226), Abdomen (212), Pelvis (152), Breast (46), and Body (25). -The two hierarchy relations are kept deliberately distinct, as documented in the field reference: `containedByRef` is spatial, meaning X is inside Y, while `partOfRef` is mereological, meaning X is a component of Y. See [contained-by and part-of](/glossary/contained-by-and-part-of.md). SNOMED coding follows one rule without exception: of the Structure, Entire, and Part concepts in a SNOMED anatomy triad, always use the "Structure of" concept, because that is what SNOMED intends for finding sites and procedure sites. +The two hierarchy relations are kept deliberately distinct, as documented in the field reference: `containedByRef` is spatial, meaning X is inside Y, while `partOfRef` is mereological, meaning X is a component of Y. See [contained-by and part-of](/glossary/contained-by-and-part-of.md). SNOMED coding follows one rule without exception: from the Structure, Entire, and Part triad, always use the "Structure of" concept, because that is what SNOMED intends for finding sites and procedure sites. Laterality is expressed as a triad. The generic entry carries `leftRef` and `rightRef`; each sided entry carries `unsidedRef` back to the generic. 827 distinct left-sided and 827 distinct right-sided entries are referenced, and every reference resolves to a record in the file. 1,597 records carry an `unsidedRef`. @@ -147,7 +147,7 @@ The hypopharynx entry, unchanged from the data file and used as the worked examp ## Runtime model fields -`AnatomicLocation` is the object the package hands back. It renames the curation fields, resolves the reference objects into a lightweight `AnatomicRef` of `id` and `display`, and adds classification and materialized paths. +`AnatomicLocation` renames curation fields, represents references as `AnatomicRef` objects with `id` and `display`, and adds classification and materialized paths. | Field | Type | Default | Notes | |---|---|---|---| @@ -177,13 +177,13 @@ The hypopharynx entry, unchanged from the data file and used as the worked examp Two computed fields are serialized with the record: `is_bilateral`, true when `laterality` is generic, and `is_lateralized`, true when it is left or right. `LocationType` is a coarse split modeled on the top level of the Foundational Model of Anatomy, separating discrete structures from spaces, regions, macro body parts, organ systems, and named groups. `StructureType` is the finer classification, with members grouped as musculoskeletal, vascular, peripheral neural, brain-specific, organs, lymphatic, anatomical organization, and spatial.[^fm-enums] -The materialized paths are what make hierarchy queries cheap. Containment ancestry, descendants, and the "is X inside Y" test all read `containment_path` rather than walking parent links, and the part-of hierarchy works the same way through `partof_path`. +The materialized paths are what make hierarchy queries cheap. Containment ancestry, descendants, and the "is X inside Y" test all read `containment_path` rather than walking parent links. Part-of queries use `partof_path` the same way. A location converts to an `IndexCode` with `system` set to `anatomic_locations`, its RadLex identifier as the code, and its description as the display. That is the form an anatomic location takes when it is attached to a [finding model](/glossary/finding-model.md). # Which is current -The `anatomic-locations` package format is current. It is the format the OIDM tooling reads, it carries the larger and more recently curated dataset, and it adds the classification axes and explicit laterality that the original schema left implicit. The `anatomiclocations.org` schema remains the published format of the original curated set and of the wrapper libraries built on it, and is documented here because that data and those libraries are still reachable. +OIDM tooling uses the current `anatomic-locations` format, with its larger, more recently curated dataset, classification, and explicit laterality. The original `anatomiclocations.org` set and wrapper libraries remain available, and are documented here because that data and those libraries are still reachable. [^al-schema]: body_parts_schema.json, anatomiclocations.org repository [^al-data]: body_parts.json, anatomiclocations.org curated body part set diff --git a/knowledge/references/cde-schema-differences.md b/knowledge/references/cde-schema-differences.md index b5d4a56..6962f5b 100644 --- a/knowledge/references/cde-schema-differences.md +++ b/knowledge/references/cde-schema-differences.md @@ -1,10 +1,10 @@ --- type: Source Extract title: CDE set schema versus the RadElement API -description: Near-verbatim extract of the note cataloguing where the CDE set RelaxNG schema and the RadElement API disagree, with the later JSON Schema versions that partly close the gap. +description: A 2023 CDE schema and API comparison, with notes on later JSON Schema changes. tags: [references, cde, radelement, schema, source-extract] status: draft -generated: { by: claude-opus-5/claude-code, at: 2026-09-21T16:00:00Z } +generated: { by: codex/gpt-6, at: 2026-09-21T20:53:02Z } sources: - id: differences resource: https://github.com/openimagingdata/openimagingdata.org/blob/fb431dfc81801a5a8e621c0e8bf2acd20f74be7d/schemas/schema_differences.md @@ -26,9 +26,9 @@ sources: # Provenance and status -The catalogue below is migrated from `schemas/schema_differences.md` in the `openimagingdata.org` repository, last changed on 2023-03-28 and read at commit `fb431df`. Its structure and wording are the author's; only dash punctuation was normalized. It compares two descriptions of the same object, a [CDE set](/glossary/cde-set.md): the RelaxNG schema kept alongside it as `original_cde_set_schema.rnc`, and the de facto JSON shape returned by the [RadElement](/glossary/radelement.md) API. +This extract preserves `schemas/schema_differences.md` from `openimagingdata.org` at `fb431df`, last changed 2023-03-28. It compares the [CDE set](/glossary/cde-set.md) format in `original_cde_set_schema.rnc` with the JSON returned by the [RadElement](/glossary/radelement.md) API. Its structure and wording are the author's; only dash punctuation was normalized. -It is a 2023 snapshot and should be read as one. Since it was written, the schema has been reissued as JSON Schema in two versions, and the closing section records what those versions changed. No individual names appeared in the source. +The extract is a 2023 snapshot. The closing section compares two later JSON Schema versions. The source contains no individual names. # Differences between Defined CDE Set Schema and RadElement API @@ -69,9 +69,9 @@ The CDE Set Schema is a RelaxNG schema that defines the structure of a CDE Set. # What the JSON Schema versions changed -The `common_data_elements` repository, which mirrors the [common data element](/glossary/cde.md) definitions published on RadElement, carries two JSON Schema drafts in `schema/`, read at commit `35536d8`. Both are JSON Schema draft-07. The repository's README states that the definitions currently conform to version 1.0, not the newer version 1.1.[^cde-readme] Version 1.1 is therefore published but not in force. +The `common_data_elements` repository mirrors RadElement's [common data element](/glossary/cde.md) definitions. At `35536d8`, its `schema/` directory contains versions 1.0 and 1.1, both using JSON Schema draft-07. The README states that definitions conform to 1.0, so 1.1 is published but not in force.[^cde-readme] -Both files declare the same `$id`, `https://github.com/ACR-RSNA-CDEs/blob/v1.0.0/cde.schema.json`. Version 1.1 did not update it, so the two schemas are not distinguishable by identifier. +Both files declare `$id` as `https://github.com/ACR-RSNA-CDEs/blob/v1.0.0/cde.schema.json`, so the identifier does not distinguish them. ## Changes from 1.0 to 1.1 in the set definition @@ -94,13 +94,13 @@ At the definitions level, 1.1 drops `event`, `biological_sex`, and `boolean_valu ## How this bears on the 2023 catalogue -Three of the gaps the note recorded look different once the JSON Schema versions are taken into account. +The JSON Schema versions change three comparisons: - **`images` and `modality`.** The note lists both as present in the RelaxNG schema and missing from the API. Version 1.1 adds `images` and `modalities` to both the set and the element, moving the JSON side toward the RelaxNG side rather than away from it. - **`url` and `body_parts`.** The note lists both as API-only. Both are properties of the set in JSON Schema 1.0 and 1.1, and `body_parts` is added to the element in 1.1. - **`biological_sex` and `age_range`.** These remain unreconciled. `biological_sex` has a definition in 1.0 and is dropped in 1.1; `age_range` appears in neither JSON Schema version. Both were RelaxNG-only in 2023 and are now absent from the schema in force. -One constraint moved the other way. The note records the RelaxNG schema as allowing `RADLEX`, `SNOMEDCT`, and `LOINC` for an [index code](/glossary/index-code.md) system. Both JSON Schema versions constrain the same field to `RADLEX`, `SNOMEDCT`, `LOINC`, and `ACRCOMMON`, and both keep `url` on the index code rather than the API's `href`. +One constraint moved the other way. The note records the RelaxNG schema as allowing `RADLEX`, `SNOMEDCT`, and `LOINC` for an [index code](/glossary/index-code.md) system. Both JSON Schema versions add `ACRCOMMON` to that enumeration. Both use `url` on index codes where the API uses `href`. [^differences]: Differences between Defined CDE Set Schema and RadElement API, openimagingdata.org repository [^rnc]: original_cde_set_schema.rnc, the RelaxNG CDE set schema the note compares diff --git a/knowledge/references/finding-model-schema.md b/knowledge/references/finding-model-schema.md index ba110fd..3e40522 100644 --- a/knowledge/references/finding-model-schema.md +++ b/knowledge/references/finding-model-schema.md @@ -1,10 +1,10 @@ --- type: Reference title: Finding model schema -description: The Open Imaging Finding Model record format as specified in the findingmodels repository, reconciled field by field against the Pydantic definitions that validate it. +description: The finding model prose schema, compared with released and unreleased Pydantic models. tags: [references, oifm, finding-models, schema] status: draft -generated: { by: claude-opus-5/claude-code, at: 2026-09-21T16:00:00Z } +generated: { by: codex/gpt-6, at: 2026-09-21T20:53:02Z } sources: - id: fm-schema resource: https://github.com/openimagingdata/findingmodels/blob/4475ac1bcb591f1a0951b2082b59208def173a5d/schema/finding_model_schema.md @@ -32,7 +32,7 @@ sources: # Provenance and status -The specification below is migrated near-verbatim from `schema/finding_model_schema.md` in the `findingmodels` repository, last changed on 2025-06-17 and read here at commit `4475ac1` on `main`.[^fm-schema] Its structure and wording are the author's; only dash punctuation was normalized to house style and the term "user" was left as written. That file is a prose mirror, not an executable schema. The record format that software actually enforces is the set of Pydantic models in the `findingmodel` repository, and the two have drifted. The reconciliation section states every difference. A third section records fields that exist only on the `feature/metadata-cleanup` work-edge branch and are not in any released version. +The extract preserves `findingmodels/schema/finding_model_schema.md` from `main` at `4475ac1`, last changed 2025-06-17.[^fm-schema] Its structure and wording are the author's; only dash punctuation was normalized to house style and the term "user" was left as written. That file is a prose mirror, not an executable schema; `findingmodel`'s Pydantic classes enforce it, and the two have drifted. The reconciliation section records differences, followed by unreleased fields on `feature/metadata-cleanup`. # Finding Model Schema @@ -149,7 +149,7 @@ Contributor details. # Reconciliation with the Pydantic source of truth -The released definitions live in `packages/findingmodel/src/findingmodel/finding_model.py`, read at commit `75afd39` on `main`.[^fm-pydantic] Two classes matter. `FindingModelBase` is a definition without registry identifiers, used while authoring. `FindingModelFull` is the registered form, and it is what the prose specification above describes. The tables record what the code enforces and mark each difference from the prose. +`packages/findingmodel/src/findingmodel/finding_model.py` on `main` at `75afd39` defines both classes.[^fm-pydantic] Authors use `FindingModelBase` before identifier assignment. `FindingModelFull` is the registered form described above. The tables compare the code's constraints with the prose. ## FindingModelFull @@ -240,7 +240,7 @@ The six digits are generated at random by `generate_oifm_id` and `generate_oifma # On the work edge, not released -Everything in this section is on the `feature/metadata-cleanup` branch of `findingmodel`, read at commit `1942b06`. None of it is on `main`, and none of it appears in the prose specification. It is recorded here because it is the stated direction for the format, not because it is in effect. +This section describes unreleased work on `findingmodel/feature/metadata-cleanup` at `1942b06`. These changes are absent from `main` and the prose above. It is recorded here because it is the stated direction for the format, not because it is in effect. The branch splits `finding_model.py` into `types/models.py`, `types/attributes.py`, and `types/metadata.py`. Attribute and `IndexCode` definitions are unchanged by the split. The design document that governs the work states the goal as making structured metadata "canonical `FindingModel` state rather than disposable enrichment output".[^edge-rewrite] @@ -263,7 +263,7 @@ Three further changes ride along.[^edge-metadata] - **Model-level codes must carry a display value.** A validator on `FindingModelFull` rejects any entry in `index_codes` or `anatomic_locations` whose `display` is empty. - **Canonical `index_codes` are narrowed.** The branch restricts them to exact matches or clinically substitutable near-equivalents, and sends broader, narrower, and merely related candidates to a separate enrichment review artifact rather than to the model. -The branch's own readiness assessment is not yet passing, so the field list above should be read as the current shape of unmerged work. +The branch's own readiness assessment is not yet passing. These fields remain unmerged. [^fm-schema]: Finding Model Schema, prose specification, findingmodels repository [^fm-pydantic]: finding_model.py, released Pydantic definitions, findingmodel main branch diff --git a/knowledge/references/index.md b/knowledge/references/index.md index ea29d55..1b9b26d 100644 --- a/knowledge/references/index.md +++ b/knowledge/references/index.md @@ -1,12 +1,12 @@ # References -Verbatim and near-verbatim source material: migrated specifications, extracted notes, and worked examples built from real data. Each document says where it came from, when, and whether it is current. +Source extracts, format references, and worked examples. Each page states its origin, date, and status. * [Status update, January 2026](./status-update-2026-01.md) - A faithful extract of the January 2026 OIDM status deck, "Realizing Object-Oriented Imaging Results", slide by slide. -* [Finding model schema](./finding-model-schema.md) - The Open Imaging Finding Model record format as specified in the findingmodels repository, reconciled field by field against the Pydantic definitions that validate it. -* [Anatomic location record format](./anatomic-location-json-schema.md) - The two JSON record formats for anatomic locations, the original anatomiclocations.org body part schema and the current anatomic-locations package format, with a real record from each. +* [Finding model schema](./finding-model-schema.md) - The finding model prose schema, compared with released and unreleased Pydantic models. +* [Anatomic location record format](./anatomic-location-json-schema.md) - The original and current anatomic location formats, with field tables and sample records. * [Exam Finding List example](./exam-finding-list-example.md) - A real Exam Finding List from the imaging-problem-list sample data, trimmed to five findings, with a field-by-field walkthrough. * [Imaging Problem List example](./imaging-problem-list-example.md) - Two findings from a real Imaging Problem List in the imaging-problem-list sample data, with the grouping key and the temporal status derivation as the dev branch implements them. * [Finding models: overview](./oifm-overview-extract.md) - Near-verbatim extract of the OIFM overview note explaining why finding models exist, what counts as an imaging finding, and how a finding model is structured. * [Finding model structured metadata fields](./oifm-metadata-fields-extract.md) - Near-verbatim extract of the reference for the structured metadata fields on FindingModelBase and FindingModelFull, with the points where it differs from the branch code it describes. -* [CDE set schema versus the RadElement API](./cde-schema-differences.md) - Near-verbatim extract of the note cataloguing where the CDE set RelaxNG schema and the RadElement API disagree, with the later JSON Schema versions that partly close the gap. +* [CDE set schema versus the RadElement API](./cde-schema-differences.md) - A 2023 CDE schema and API comparison, with notes on later JSON Schema changes. diff --git a/knowledge/references/oifm-metadata-fields-extract.md b/knowledge/references/oifm-metadata-fields-extract.md index ae42612..aec48ef 100644 --- a/knowledge/references/oifm-metadata-fields-extract.md +++ b/knowledge/references/oifm-metadata-fields-extract.md @@ -4,7 +4,7 @@ title: Finding model structured metadata fields description: Near-verbatim extract of the reference for the structured metadata fields on FindingModelBase and FindingModelFull, with the points where it differs from the branch code it describes. tags: [references, oifm, finding-models, metadata, source-extract] status: draft -generated: { by: claude-opus-5/claude-code, at: 2026-09-21T16:00:00Z } +generated: { by: codex/gpt-6, at: 2026-09-21T20:53:02Z } sources: - id: note resource: https://github.com/RSNA/ACR-RSNA-CDEs/blob/44836c19f4e025cf1684a015ed5cc63c29eaf7f3/notes/oifm-metadata-fields.md @@ -25,9 +25,9 @@ sources: # Provenance and status -This is a near-verbatim extract of `notes/oifm-metadata-fields.md` from the `next-gen-2026` branch of the `ACR-RSNA-CDEs` repository, read at commit `44836c1`. That file is a copy: its own frontmatter records it as fetched on 2026-07-29 from a gist published by the project lead, and describes itself as intended for review with colleagues who are not reading the code. The only change made here is that dash punctuation was normalized to house style. No individual names appeared in the source. +This near-verbatim extract comes from `ACR-RSNA-CDEs/notes/oifm-metadata-fields.md` on `next-gen-2026` at `44836c1`. The note records a 2026-07-29 copy of the project lead's gist for review by colleagues who are not reading the code. Only dash punctuation was normalized. The source contains no individual names. -The fields it documents are **not released**. They exist on the `feature/metadata-cleanup` branch of the `findingmodel` repository and on `dev`, and none of them are on `main`. The released record format, and a field-by-field reconciliation against it, is in [the finding model schema](/references/finding-model-schema.md). Terms used below have glossary entries: [finding model](/glossary/finding-model.md), [attribute](/glossary/attribute.md), [index code](/glossary/index-code.md), [anatomic location](/glossary/anatomic-location.md), and [measurement](/glossary/measurement.md). +The metadata fields are unreleased, present on `findingmodel`'s `feature/metadata-cleanup` and `dev` branches but absent from `main`. See the [finding model schema](/references/finding-model-schema.md) for the released format and comparison. Related terms are [finding model](/glossary/finding-model.md), [attribute](/glossary/attribute.md), [index code](/glossary/index-code.md), [anatomic location](/glossary/anatomic-location.md), and [measurement](/glossary/measurement.md). ## Where this differs from the branch code diff --git a/knowledge/references/oifm-overview-extract.md b/knowledge/references/oifm-overview-extract.md index d21882e..7292500 100644 --- a/knowledge/references/oifm-overview-extract.md +++ b/knowledge/references/oifm-overview-extract.md @@ -4,7 +4,7 @@ title: "Finding models: overview" description: Near-verbatim extract of the OIFM overview note explaining why finding models exist, what counts as an imaging finding, and how a finding model is structured. tags: [references, oifm, finding-models, source-extract] status: draft -generated: { by: claude-opus-5/claude-code, at: 2026-09-21T16:00:00Z } +generated: { by: codex/gpt-6, at: 2026-09-21T20:53:02Z } sources: - id: note resource: https://github.com/RSNA/ACR-RSNA-CDEs/blob/44836c19f4e025cf1684a015ed5cc63c29eaf7f3/notes/oifm-overview.md @@ -17,7 +17,9 @@ sources: # Provenance and status -This is a near-verbatim extract of `notes/oifm-overview.md` from the `next-gen-2026` branch of the `ACR-RSNA-CDEs` repository, read at commit `44836c1`. That file is itself a copy: its own frontmatter records it as fetched from `prompts/overview.md` in the `findingmodels` repository on 2026-07-29, and the two are byte-identical to the version of that file at commit `2267d5d`, last changed on 2026-04-18. The upstream file is an authoring prompt, which is why it reads as guidance to whoever or whatever is writing a [finding model](/glossary/finding-model.md). It is current: the upstream file is live on the `main` branch of `findingmodels` and the note carries `status: stable`. The only change made here is that dash punctuation was normalized to house style. No names appeared in the source. Glossary links are not inserted into the extract body; the terms it uses are [finding model](/glossary/finding-model.md), [attribute](/glossary/attribute.md), [presence](/glossary/presence.md), [index code](/glossary/index-code.md), and [Observation](/glossary/observation.md). +This near-verbatim extract comes from `notes/oifm-overview.md` on `ACR-RSNA-CDEs`'s `next-gen-2026` branch at `44836c1`. The note records a 2026-07-29 copy of `findingmodels/prompts/overview.md`, byte-identical to commit `2267d5d`, last changed 2026-04-18. At review, the authoring prompt was current on `findingmodels/main`, and the note had `status: stable`. The upstream file is an authoring prompt, which is why it reads as guidance to whoever or whatever is writing a [finding model](/glossary/finding-model.md). + +Only dash punctuation was normalized in the extract. It contains no individual names or added glossary links. Related terms are [finding model](/glossary/finding-model.md), [attribute](/glossary/attribute.md), [presence](/glossary/presence.md), [index code](/glossary/index-code.md), and [Observation](/glossary/observation.md). # Finding Models: Overview diff --git a/knowledge/references/status-update-2026-01.md b/knowledge/references/status-update-2026-01.md index c6a5351..8fcdc62 100644 --- a/knowledge/references/status-update-2026-01.md +++ b/knowledge/references/status-update-2026-01.md @@ -4,7 +4,7 @@ title: Status update, January 2026 description: A faithful extract of the January 2026 OIDM status deck, "Realizing Object-Oriented Imaging Results", slide by slide. tags: [references, deck, vision, roadmap] status: draft -generated: { by: claude-opus-5/claude-code, at: 2026-09-21T15:00:00Z } +generated: { by: codex/gpt-6, at: 2026-09-21T20:53:02Z } sources: - id: deck resource: https://gamma.app/docs/Open-Imaging-Data-Model-2026-Status-Update:-Realizing-Object-Oriented-Imaging-Results-yfxzx4q9zssafal @@ -13,9 +13,9 @@ sources: # About this extract -This is an extract of the January 2026 Open Imaging Data Model (OIDM) status deck, presented by the project lead under the running subtitle "Standardizing the DNA of Imaging IT."[^deck] Sections below follow the deck's slides in order and keep its wording and emphasis. Two departures from the source are noted where they occur: the collaborators slide is reduced to organizations, per this knowledgebase's convention of naming organizations and not individuals, and screenshots are described rather than reproduced. +This extract follows the January 2026 Open Imaging Data Model (OIDM) status deck, presented by the project lead under the subtitle "Standardizing the DNA of Imaging IT."[^deck] Sections below follow the deck's slides in order and keep its wording and emphasis. Two departures from the source are noted where they occur: the collaborators slide is reduced to organizations, per this knowledgebase's convention of naming organizations and not individuals, and screenshots are described rather than reproduced. -The deck is the primary statement of OIDM's direction as of early 2026. Where it names something that does not yet exist, this extract keeps the claim as the deck makes it; [Architecture](/overview/architecture.md) states the implementation status of each piece, and [Vision](/overview/vision.md) works through the reasoning. +The deck is the primary statement of OIDM's direction as of early 2026. Where it names something that does not yet exist, this extract keeps the claim as the deck makes it. See [Architecture](/overview/architecture.md) for implementation status and [Vision](/overview/vision.md) for the rationale. # Title diff --git a/knowledge/repositories/index.md b/knowledge/repositories/index.md index c7d810c..b686278 100644 --- a/knowledge/repositories/index.md +++ b/knowledge/repositories/index.md @@ -1,5 +1,5 @@ # Repositories -Where the code and content live. One document, covering every source repository behind OIDM. +Source repositories for OIDM code and content. -* [Repository map](./repository-map.md) - Every source repository behind OIDM, with its organization, role, status, branch of record, last activity, deployed URL, and the documents in this bundle that cover it. +* [Repository map](./repository-map.md) - OIDM source repositories, their roles, branches, activity, deployments, and related documentation. diff --git a/knowledge/repositories/repository-map.md b/knowledge/repositories/repository-map.md index a42bba0..18e4763 100644 --- a/knowledge/repositories/repository-map.md +++ b/knowledge/repositories/repository-map.md @@ -1,10 +1,10 @@ --- type: Reference title: Repository map -description: Every source repository behind OIDM, with its organization, role, status, branch of record, last activity, deployed URL, and the documents in this bundle that cover it. +description: OIDM source repositories, their roles, branches, activity, deployments, and related documentation. tags: [repositories, index, meta] status: draft -generated: { by: claude-opus-5/claude-code, at: 2026-09-21T02:00:00Z } +generated: { by: codex/gpt-6, at: 2026-09-21T20:53:02Z } stale_after: 2027-09-21 sources: - id: oidm-org @@ -26,7 +26,7 @@ sources: # How to read this map -Twenty-six repositories carry the Open Imaging Data Model (OIDM). Twenty-one belong to the `openimagingdata` GitHub organization, three anatomic-location repositories belong to the project lead's personal account, and two belong to RSNA as allied external projects. +Open Imaging Data Model (OIDM) sources span twenty-six repositories. Twenty-one belong to `openimagingdata`, three anatomic-location repositories belong to the project lead's personal account, and two allied projects to RSNA. Four status values are used. @@ -37,7 +37,7 @@ Four status values are used. | lineage | Superseded by later work; kept for history | | dead | Never completed and superseded by nothing | -"Branch of record" names the branch that represents current state for readers of this bundle. Where a repository's released state and its work edge differ, both are named. "Last activity" is the repository-wide push date reported by GitHub on 2026-09-21, which can be later than the tip commit on the branch of record when the most recent push landed on another branch. +"Branch of record" names the branch that represents current state for readers of this bundle. Where a repository's released state and its work edge differ, both are named. "Last activity" is the repository-wide push date reported by GitHub on 2026-09-21. A push to another branch can make it later than the branch-of-record tip. # The repositories @@ -74,26 +74,26 @@ Four status values are used. Content repositories hold definitions and data. Library repositories turn those definitions into typed objects and searchable indexes. Application repositories consume both. Two external terminologies, RadElement and RadLex, sit outside the project and are referenced by code, not vendored into it. -![How the repositories relate: read each row left to right, from an external terminology or content repository, through the library that packages it, to the application that uses it. RadElement feeds findingmodels and CDEStaging; findingmodels feeds findingmodel; findingmodel feeds Finding Model Forge and imaging-problem-list. RadLex feeds anatomiclocations.org, which feeds the anatomic-locations package inside findingmodel. SNOMED CT, FMA, LOINC, and UMLS feed med-ontology-lookup, which enriches findingmodel. findingmodels also feeds finding-models-site via a git submodule and the superseded IPL-MVP-ExtractionAndLabeling.](./repository-map.svg) +[![How the repositories relate: read each row left to right, from an external terminology or content repository, through the library that packages it, to the application that uses it. RadElement feeds findingmodels and CDEStaging; findingmodels feeds findingmodel; findingmodel feeds Finding Model Forge and imaging-problem-list. RadLex feeds anatomiclocations.org, which feeds the anatomic-locations package inside findingmodel. SNOMED CT, FMA, LOINC, and UMLS feed med-ontology-lookup, which enriches findingmodel. findingmodels also feeds finding-models-site via a git submodule and the superseded IPL-MVP-ExtractionAndLabeling.](./repository-map.svg)](./repository-map.svg) -*Diagram source: `repository-map.excalidraw` beside this document, generated by `tools/diagrams/build_repository_map.py`.* +*Diagram source: `repository-map.excalidraw` beside this document (click the image for full size), generated by `tools/diagrams/build_repository_map.py`.* -Three edges deserve a note. The `findingmodels` corpus is pulled into `finding-models-site` as a git submodule and resolved by `imaging-problem-list` through the published `ids.json` file, so the content repository is the single source of finding model identity. The newer anatomic data lives inside `findingmodel` as the `anatomic-locations` package rather than in the original `anatomiclocations.org` repository, and the two lineages are not synchronized. RSNA/RadLex issue 3, "Add Anatomic Locations", opened 2026-08-10, tracks folding the curated anatomic location set into RadLex itself with an exit criterion of full coverage; that is a GitHub tracking issue, not a code dependency. +Three edges deserve a note. The `findingmodels` corpus is pulled into `finding-models-site` as a git submodule and resolved by `imaging-problem-list` through the published `ids.json` file, so the content repository is the single source of finding model identity. Current anatomic data lives in `findingmodel`'s `anatomic-locations` package, unsynchronized with `anatomiclocations.org`. RSNA/RadLex issue 3, "Add Anatomic Locations", opened 2026-08-10, tracks folding the curated anatomic location set into RadLex itself with an exit criterion of full coverage. It creates no code dependency. # Work edge -Branch inventories taken on 2026-09-21 established what follows. None of the unmerged branches named here has an open pull request. +These branch inventories date to 2026-09-21. None of the unmerged branches below has an open pull request. -**findingmodel.** The live thread is the canonical structured-metadata rewrite, on `feature/metadata-cleanup` (tip `1942b06`, 2026-06-29) and its base `dev` (tip `504a42a`, 2026-04-11). It adds eight optional fields to the finding model base class, splits metadata assignment across seven typed agents, and plans a dual-database release so existing consumers do not break. The branch's own readiness assessment still reports a failure: two fields remain below the quality floor. The earlier eight-facet specification on `main` is superseded by this field set. Twenty-four open issues map one to one onto task plans in the repository. +**findingmodel.** The canonical metadata rewrite uses `feature/metadata-cleanup` (tip `1942b06`, 2026-06-29) and its base `dev` (tip `504a42a`, 2026-04-11). It adds eight optional fields to the finding model base class, splits metadata assignment across seven typed agents, and plans a dual-database release so existing consumers do not break. The branch's own readiness assessment still reports a failure: two fields remain below the quality floor. The earlier eight-facet specification on `main` is superseded by this field set. Twenty-four open issues map one to one onto task plans in the repository. **findingmodels.** Six branches carry unmerged work. `taxonomy-export-2026-08-15` (tip `a30c3c9`) replaces the legacy `lists/` directory with the six MGB exam-oriented sub-taxonomies as CSVs totaling 3,789 rows, of which 1,028 already match an existing finding model identifier by exact name; the remaining rows are named as the next triage task. Two content pipelines add large batches that have never merged: a CT chest conversion branch with 1,822 new definitions and a three-agent merge, create, and review pipeline of which one of twenty-one chunks is complete, and a head CT branch with 419 new definitions plus an overlapping review branch with 76 more. A metadata branch applies an approved enrichment baseline to 78 existing definitions and adds no new ones. A clinician-request branch adds 59 definitions for an intracranial problem list application. The finding model JSON schema is being extended on three of these branches independently, and none of those changes has landed on `main`. -**imaging-problem-list.** `dev` (tip `36fa30c`, 2026-07-22) is 258 commits ahead of `main` (tip `06f64a7`, 2025-11-18) and is current state. Anatomic-location coding of findings has landed, and the Imaging Problem List grouping key changed from finding code alone to finding code plus location. Eight active plans center on human-review tooling, an evaluation redesign that scores quote-first matching rather than raw finding yield, an anatomy-aware viewer, and a reassessment of local model choice. The only open issue, number 1, asks for a formal Pydantic model layer for Observation, Exam Finding List, and Imaging Problem List with JSON Schema export; it is broader than any current plan and unclaimed. The one open pull request is empty after its design document was moved to a separate repository. +**imaging-problem-list.** `dev` (tip `36fa30c`, 2026-07-22) is 258 commits ahead of `main` (tip `06f64a7`, 2025-11-18) and represents current state. Anatomic-location coding of findings has landed, and the Imaging Problem List grouping key changed from finding code alone to finding code plus location. Eight active plans center on human-review tooling, an evaluation redesign that scores quote-first matching rather than raw finding yield, an anatomy-aware viewer, and a reassessment of local model choice. The only open issue, number 1, asks for a formal Pydantic model layer for Observation, Exam Finding List, and Imaging Problem List with JSON Schema export; it is broader than any current plan and unclaimed. The one open pull request is empty after its design document was moved to a separate repository. **med-ontology-lookup.** No branch is ahead of `main`. A twelve-issue backlog follows the six-phase design in the repository's review and proposal document; nine of those issues are open and unstarted. Offline continuous integration is implemented but sits uncommitted in a working tree, pending authorization to publish. **CDEStaging.** All current work lands directly on `main`; the most recent commit is 2025-11-25. Fourteen topic branches exist and eleven are unmerged, the largest being a 2024 report-representation branch of 37 commits and a content branch of 33 commits. No branch has a commit after 2025-03-22, and no pull request proposes merging any of them. -**IPL-MVP-ExtractionAndLabeling.** Three single-commit experiment branches pushed within one week of each other in October 2025, none merged: a longitudinal multiple sclerosis sample dataset, a port of the extraction step to a typed agent, and a design note proposing persistent FHIR Observations with stable identifiers so repeat mentions of a finding across reports link to one entity. That design note carries no file extension and adds no code. +**IPL-MVP-ExtractionAndLabeling.** Three single-commit experiment branches pushed within one week of each other in October 2025, none merged: a longitudinal multiple sclerosis sample dataset, a port of the extraction step to a typed agent, and a design note proposing persistent FHIR Observations with stable identifiers so repeat mentions of a finding across reports link to one entity. The extensionless design note adds no code. **FindingModelForge.** Both `dev` (96 commits ahead of `main`, 2026-01-02) and `feature/model-editing` (60 commits ahead, 2025-11-28) are unmerged. The editing branch implements AI-assisted iteration of published models rather than manual editing; its first sprint is complete and two later sprints are not started. A peer-review workflow with public drafts and comments is finished on `dev` and absent from `main`. diff --git a/knowledge/roadmap/anatomic-locations-and-radlex.md b/knowledge/roadmap/anatomic-locations-and-radlex.md index 7cbd5b9..a8c8f2a 100644 --- a/knowledge/roadmap/anatomic-locations-and-radlex.md +++ b/knowledge/roadmap/anatomic-locations-and-radlex.md @@ -1,10 +1,10 @@ --- type: Roadmap title: Anatomic locations and RadLex -description: "The stated goals for the anatomic location set: incorporation into RadLex as an overlay, the node requests owed to the RadLex anatomy track, the two unreconciled datasets, the tooling items carried forward from the original libraries, and the body region enumerations that disagree." +description: RadLex incorporation, anatomy node requests, dataset differences, tooling goals, and conflicting body regions. tags: [roadmap, anatomic-locations, radlex, laterality, tooling] status: draft -generated: { by: claude-opus-5/claude-code, at: 2026-09-21T19:00:00Z } +generated: { by: codex/gpt-6, at: 2026-09-21T20:53:02Z } stale_after: 2027-09-21 sources: - id: radlex-issue-3 @@ -50,35 +50,35 @@ No code, commit message, or document inside the `RSNA/RadLex` repository mention # The overlay agreement -A more specific agreement, dated 13 September 2026, is recorded in the next-generation vocabulary work on the `next-gen-2026` branch of `ACR-RSNA-CDEs`. The anatomic locations file is **an overlay on [RadLex](/glossary/radlex.md)**, not a replacement and not the sole source: RadLex concepts and predicates sit underneath, and the file adds identifiers RadLex lacks, its own containment and part-of hierarchies, and [laterality](/glossary/laterality.md).[^cde-axis] +A 13 September 2026 agreement on `ACR-RSNA-CDEs`'s `next-gen-2026` branch defines the anatomic locations file as an overlay on [RadLex](/glossary/radlex.md). It adds missing identifiers, containment and part-of hierarchies, and [laterality](/glossary/laterality.md) to RadLex concepts and predicates. It does not replace RadLex or supply all anatomy content.[^cde-axis] -Two consequences are already written into that vocabulary. An anatomic location carries one identifier, its [RadLex identifier](/glossary/radlex-id.md), and a RadLex code is never shown beside it, because the location code is the RadLex code. And the compound identifiers for sided variants that RadLex lacks, such as `RID1363_RID5825`, are an acknowledged exception the RadLex track is expected to remove by minting real identifiers.[^cde-axis] +An anatomic location carries one identifier, its [RadLex identifier](/glossary/radlex-id.md), and a RadLex code is never shown beside it, because the location code is the RadLex code. And the compound identifiers for sided variants that RadLex lacks, such as `RID1363_RID5825`, are an acknowledged exception the RadLex track is expected to remove by minting real identifiers.[^cde-axis] The same record states that the overlay file is "the basis of the RadLex anatomy axis going forward," because the RadLex anatomy track is editing it rather than the published release.[^cde-axis] Two framings of the relationship are therefore in force, and nobody has reconciled them. The issue's exit criterion, full coverage of the terminology in RadLex, reads as absorption. The September agreement describes an overlay that RadLex edits in place. The two are compatible but not identical, and no source says which governs. It is carried in [open questions](/roadmap/open-questions.md). -The scale of the sided-variant exception is worth stating with it: 1,016 of the 2,926 records carry a composite identifier, so more than a third of the set is not resolvable as a RadLex identifier until real ones are minted. +Composite identifiers occur on 1,016 of 2,926 records. More than a third of the set therefore awaits resolvable RadLex identifiers. # What is owed in each direction -The gap log on that branch is the tracking artifact, kept deliberately separate from the wider design discussion so it can move independently.[^cde-gaps] The full list of node requests, with the reason and date for each, is reproduced in [RadLex integration](/semantic-foundation/anatomic-locations/radlex-integration.md). Two items are worth naming here because they are structural rather than individual concepts. +The branch's gap log tracks requests independently of design discussions.[^cde-gaps] [RadLex integration](/semantic-foundation/anatomic-locations/radlex-integration.md) lists each request, reason, and date. Two requests affect the structure of the dataset. **From OIDM to RadLex: real identifiers for sided variants.** Raised 2026-09-13, needed by every sided [Observation](/glossary/observation.md). -**From RadLex to OIDM: an is-a relation and structure-type nodes.** Raised 2026-08-19 and restated 2026-09-13 as the top priority. The curated set has no is-a relation and no structure-type nodes, which is recorded as its major shortcoming, because it blocks any scope statement of the form "applies to tendons." RadLex 4.3 has an is-a chain for every one of the 1,910 plain-identifier locations, and the stated work item is a derived, pinned overlay file handed to the anatomic locations track. Two cautions accompany it: RadLex's own release note warns that some is-a categorizations were converted from part-of and may be wrong, and the FMA-style chain is not the clinically useful layer.[^cde-axis] +**From RadLex to OIDM: an is-a relation and structure-type nodes.** Raised 2026-08-19 and restated 2026-09-13 as the top priority. The curated set has no is-a relation and no structure-type nodes, which is recorded as its major shortcoming, because it blocks any scope statement of the form "applies to tendons." RadLex 4.3 has an is-a chain for every one of the 1,910 plain-identifier locations, and the stated work item is a derived, pinned overlay file handed to the anatomic locations track. The record gives two cautions: RadLex's own release note warns that some is-a categorizations were converted from part-of and may be wrong, and the FMA-style chain is not the clinically useful layer.[^cde-axis] -Coverage of external codes is uneven and is recorded as a gap rather than assigned as work: [SNOMED CT](/glossary/snomed-ct.md) on 1,782 of 2,926 records, with 608 records carrying no codes at all.[^cde-gaps] +External-code coverage remains an unassigned gap: [SNOMED CT](/glossary/snomed-ct.md) on 1,782 of 2,926 records, with 608 records carrying no codes at all.[^cde-gaps] # The two datasets -Two lineages coexist and are not synchronized: the original 2,890-node set published at anatomiclocations.org with its two wrapper libraries, and the 2,926-record dataset inside the `anatomic-locations` package in `findingmodel`, which the build plan names as current.[^plan] The differences and the open questions between them are set out in [lineage and current implementation](/semantic-foundation/anatomic-locations/lineage-and-current-implementation.md). +Two datasets are unsynchronized: the original 2,890-node set published at anatomiclocations.org with its two wrapper libraries, and the 2,926-record dataset inside the `anatomic-locations` package in `findingmodel`, which the build plan names as current.[^plan] The differences and the open questions between them are set out in [lineage and current implementation](/semantic-foundation/anatomic-locations/lineage-and-current-implementation.md). Reconciling the record counts is stated nowhere as work. No document says what the extra 36 records are, and no process syncs edits in either direction. # Items carried forward from the original libraries -The clearest statement of intent for the original lineage is the TODO list added to `BodyPartIndex.py` on 2024-02-03. None of its items is done in that repository, and several were done independently in the current package.[^bpi-todo] +The `BodyPartIndex.py` TODO list dates to 2024-02-03. None of its items was completed there, though the current package independently completed several.[^bpi-todo] | Item | Status | |---|---| @@ -96,7 +96,7 @@ The site roadmap additionally lists finishing `BodyPartIndex.py` and publishing The project lead stated in the 2026-09-20 planning interview that the area needs tooling for the people who work with anatomic locations, meaning curators and coders rather than library consumers.[^plan] What exists today, the package, its command-line interface, the curation skill, and the older wrappers, is described in [tooling](/semantic-foundation/anatomic-locations/tooling.md). -Four concrete items sit in the `findingmodel` repository against that surface. +Four `findingmodel` items address this tooling. - **Hierarchy-aware related models.** A task on `dev` records that `related_models()` requires an exact identifier match today and therefore misses hierarchy-aware relations.[^hierarchy-related] - **Graph representation research.** A note on `main` works through representing the containment and laterality graph in DuckDB and records why the adjacency-list plus recursive-query alternative was not chosen for a read-only database.[^graph-research] @@ -107,7 +107,7 @@ Search quality is not a side issue for the RadLex relationship. The search and c # Four body region enumerations -[Body region](/glossary/body-region.md) is enumerated four incompatible ways across OIDM: in the anatomic locations package, in the finding model metadata rewrite, in the extraction schema, and in the viewer's filter. Thorax against chest, and whether spine is a region at all, are the recurring mismatches. No document reconciles them and no source assigns the reconciliation. It is carried, with the rest of the area's unresolved items, in [open questions](/roadmap/open-questions.md). +[Body region](/glossary/body-region.md) is enumerated four incompatible ways across OIDM: in the anatomic locations package, in the finding model metadata rewrite, in the extraction schema, and in the viewer's filter. Thorax against chest, and whether spine is a region at all, are the recurring mismatches. Reconciliation is undocumented and unassigned. See [open questions](/roadmap/open-questions.md). [^radlex-issue-3]: RSNA/RadLex issue 3, "Add Anatomic Locations" [^cde-axis]: The anatomy axis, current state, next-gen-2026 branch diff --git a/knowledge/roadmap/exam-types.md b/knowledge/roadmap/exam-types.md index 1a6d290..526fdf8 100644 --- a/knowledge/roadmap/exam-types.md +++ b/knowledge/roadmap/exam-types.md @@ -1,10 +1,10 @@ --- type: Roadmap title: Exam types roadmap -description: The goals stated for an OIDM exam type layer, by whom and when, the one written design that exists, the building blocks a future effort would start from, and the questions no source answers. +description: Exam type goals, the unimplemented Playbook profile design, and unresolved ownership and data questions. tags: [roadmap, exam-types, loinc, playbook, anatomy] status: draft -generated: { by: claude-opus-5/claude-code, at: 2026-09-21T19:00:00Z } +generated: { by: codex/gpt-6, at: 2026-09-21T20:53:02Z } stale_after: 2027-09-21 sources: - id: plan @@ -35,9 +35,9 @@ sources: # The state of the area -There is no [exam type](/glossary/exam-type.md) artifact. No registry, no curated code list, no exam-to-body-part mapping, and no code anywhere in the Open Imaging Data Model (OIDM) repositories that parses an exam name into modality and anatomy axes. What exists is a goal stated three times across four years, one written design that has not been implemented, and three places where a bare [LOINC](/glossary/loinc.md) code does real work today. +Open Imaging Data Model (OIDM) has no [exam type](/glossary/exam-type.md) registry, curated code list, exam-to-body-part map, or code that parses exam names into modality and anatomy. The goal appears three times across four years. One design is unimplemented, and three existing uses rely on bare [LOINC](/glossary/loinc.md) codes. -The area as it stands is described in [exam types](/semantic-foundation/exam-types/overview.md), and the inventory of what a future effort would start from is in [existing building blocks](/semantic-foundation/exam-types/existing-building-blocks.md). This document collects the goals and the open questions. +See [exam types](/semantic-foundation/exam-types/overview.md) and [existing building blocks](/semantic-foundation/exam-types/existing-building-blocks.md) for current capabilities. # The goal as the project lead states it @@ -47,7 +47,7 @@ In the 2026-09-20 planning interview recorded in [the knowledgebase build plan]( 2. **A set of preferred high-level entries**, at the granularity clinicians and systems actually use, the examples given being CT Chest, MRI Brain, and X-ray Knee, each marked as the preferred entry among the many Playbook codes describing variants of the same study. 3. **Tight coupling to [anatomic locations](/glossary/anatomic-location.md)**, with typed edges from an exam type to the structures it covers, distinguishing anatomy that is **always included**, which may be expressed as a hierarchy rather than a flat list, anatomy that is **usually included**, and anatomy that is **possibly included and must be checked**. -The third part is what would make the artifact more than a code list. It answers the question both a report reader and an extraction pipeline need answered: given this study, what could have been assessed? +The anatomy links would tell readers and extraction tools what a study could have assessed. # The same goal, stated earlier @@ -59,13 +59,13 @@ The site post "Data Model: Structure and Function" of 2024-01-25 names two utili # The one written design -The most developed written design is in the terminology tool's product roadmap, which proposes replacing an ever-growing default search with named, inspectable domain profiles. Its `radiology` profile makes the Playbook first-class: RadLex, LOINC weighted toward the Playbook, [SNOMED CT](/glossary/snomed-ct.md), and [FMA](/glossary/fma.md), with [UMLS](/glossary/umls.md) as the crosswalk hub.[^molu-roadmap] +The terminology tool's product roadmap proposes named, inspectable domain profiles in place of a growing default search. Its `radiology` profile makes the Playbook first-class: RadLex, LOINC weighted toward the Playbook, [SNOMED CT](/glossary/snomed-ct.md), and [FMA](/glossary/fma.md), with [UMLS](/glossary/umls.md) as the crosswalk hub.[^molu-roadmap] Four Playbook-specific implications are stated in it: rank procedure and orderable queries toward Playbook terms and finding queries toward the other vocabularies; teach the crosswalk the Playbook correspondences, linking a LOINC code to its historic `RPID` and to RadLex anatomy and modality attributes, recording that in the mapping provenance; detect `RPID` codes as well as LOINC-shaped codes; and do not treat every LOINC hit as radiology.[^molu-roadmap] None of it is built. The repository's issue backlog follows a six-phase design as one tracking issue plus eleven focused ones, of which only typed provider failures is closed; the profile mechanism is part of that backlog, not a released capability.[^molu-backlog] See [med-ontology-lookup](/semantic-foundation/terminologies/med-ontology-lookup.md). -Two facts from the next-generation vocabulary analysis constrain any such effort and are worth stating with the goals. The Playbook is "actively governed, and freely licensed for commercial and non-commercial use," shipping twice yearly under joint Regenstrief Institute and RSNA governance, and it "is a separate artifact" from RadLex.[^current-understanding] Current Playbook content carries ordinary LOINC codes; `RPID` identifiers are legacy and appear only as historical codes a crosswalk would need to recognize.[^molu-roadmap] +The next-generation vocabulary analysis records two constraints. The Playbook is "actively governed, and freely licensed for commercial and non-commercial use," shipping twice yearly under joint Regenstrief Institute and RSNA governance, and it "is a separate artifact" from RadLex.[^current-understanding] Current Playbook content carries ordinary LOINC codes; `RPID` identifiers are legacy and appear only as historical codes a crosswalk would need to recognize.[^molu-roadmap] # What is unanswered diff --git a/knowledge/roadmap/finding-model-content-direction.md b/knowledge/roadmap/finding-model-content-direction.md index 81dd343..cf53a03 100644 --- a/knowledge/roadmap/finding-model-content-direction.md +++ b/knowledge/roadmap/finding-model-content-direction.md @@ -1,10 +1,10 @@ --- type: Roadmap title: Finding model content direction -description: "Where the finding model corpus is going: the MGB exam-oriented sub-taxonomies as the content spine, the expected supersession of Gamuts-derived models, the triage of unmatched rows, the content batches in flight, the definition cleanup plan, and the open content issues." +description: Exam-oriented content priorities, unmatched taxonomy rows, unmerged batches, and corpus cleanup plans. tags: [roadmap, finding-models, content, taxonomy, gamuts, cleanup] status: draft -generated: { by: claude-opus-5/claude-code, at: 2026-09-21T19:00:00Z } +generated: { by: codex/gpt-6, at: 2026-09-21T20:53:02Z } stale_after: 2027-09-21 sources: - id: plan @@ -69,7 +69,7 @@ The sub-taxonomy export minted no identifiers. Rows were matched by exact name a | Carrying an existing OIFM identifier | 1,028 | | Blank, awaiting triage | 2,761 | -The README names the next task in one sentence: "Blank rows are the ones needing triage."[^lists-readme] Match rates are uneven, from 86 percent on head CT and 76 percent on chest radiography down to 10 percent on the combined chest, abdomen, and pelvis CT file and 3 percent on mammography. No plan document assigns the triage work, and no issue tracks it. +The README states: "Blank rows are the ones needing triage."[^lists-readme] Match rates are uneven, from 86 percent on head CT and 76 percent on chest radiography down to 10 percent on the combined chest, abdomen, and pelvis CT file and 3 percent on mammography. No plan document assigns the triage work, and no issue tracks it. # Content batches in flight @@ -83,7 +83,7 @@ Five `findingmodels` branches carry unmerged content work. None has an open pull | a clinician-request branch | 2025-12-12 | 59 | A requested batch for an intracranial problem list application | | `findingmodels-metadata` | 2026-06-01 | 0, modifies 78 | Applies an approved metadata enrichment baseline to existing definitions | -The CT chest branch is the live front of that pipeline. Its plan records the refactor from one monolithic agent into three focused ones with Python-level orchestration, with phases 1 through 3 complete and two follow-ups open: the create agent extracts fewer attributes than the single-agent version did, and the sub-findings schema is unresolved.[^chest-plan] Its progress document is explicit about how far the batch has run: 205 total sources, chunked into 21 groups of 10, with chunk 1 complete and chunks 2 through 21 pending.[^chest-progress] +Its plan records the refactor from one monolithic agent into three focused ones with Python-level orchestration, with phases 1 through 3 complete and two follow-ups open: the create agent extracts fewer attributes than the single-agent version did, and the sub-findings schema is unresolved.[^chest-plan] Its progress document is explicit about how far the batch has run: 205 total sources, chunked into 21 groups of 10, with chunk 1 complete and chunks 2 through 21 pending.[^chest-progress] The head CT branch's one plan document is marked complete for the soft tissue category: four new models created, nine mappings made to existing models, review done, identifiers written back, validator clean.[^headct-plan] @@ -93,7 +93,7 @@ An earlier CT chest branch, `cde_to_finding`, holds 1,915 definitions from the s A draft plan on `main`, still marked "DRAFT - for review," covers cleaning the existing corpus against the authoring conventions. It scopes 2,379 models: 1,934 Gamuts, 264 OIDM already reviewed, 115 from the common data element work, 47 from MassGeneral Brigham, and 19 from Microsoft.[^cleanup] -It gives an ordered execution sequence with counts. +The plan orders the work as follows. | Order | Category | Models | Nature of the work | |---:|---|---:|---| @@ -131,7 +131,7 @@ Five of the ten open `findingmodels` issues are content batches. None is closed Two further open issues, 17 and 32, ask for a static marketing site and a static catalog site for the content; the catalog site exists and is profiled in [the finding models site](/applications/finding-models-site.md). -How the corpus is organized and browsed today is in [the content catalog](/semantic-foundation/finding-models/content-catalog.md), and the identifier scheme that governs writebacks is in [identifiers](/semantic-foundation/finding-models/identifiers.md).[^ids-json] Where sources disagree about corpus counts and content classification, see [open questions](/roadmap/open-questions.md). +See [the content catalog](/semantic-foundation/finding-models/content-catalog.md) for organization and browsing, and [identifiers](/semantic-foundation/finding-models/identifiers.md) for writeback rules.[^ids-json] Where sources disagree about corpus counts and content classification, see [open questions](/roadmap/open-questions.md). [^plan]: Knowledgebase build plan, recording the project lead's statement of 2026-09-21 [^lists-readme]: MGB exam-oriented sub-taxonomies README, taxonomy-export-2026-08-15 branch diff --git a/knowledge/roadmap/finding-model-format-evolution.md b/knowledge/roadmap/finding-model-format-evolution.md index 389d93f..663adae 100644 --- a/knowledge/roadmap/finding-model-format-evolution.md +++ b/knowledge/roadmap/finding-model-format-evolution.md @@ -1,10 +1,10 @@ --- type: Roadmap title: Finding model format evolution -description: "The stated goals for where the Open Imaging Finding Model record format is going: the canonical structured-metadata rewrite, the source schema version 2 draft, relationship and graph ideas from the next-generation CDE work, versioning, and the discrepancies a revision would have to settle." +description: Proposed metadata, schema, relationship, and versioning changes to the finding model format. tags: [roadmap, finding-models, schema, metadata, relationships, versioning] status: draft -generated: { by: claude-opus-5/claude-code, at: 2026-09-21T19:00:00Z } +generated: { by: codex/gpt-6, at: 2026-09-21T20:53:02Z } stale_after: 2027-09-21 sources: - id: rewrite @@ -59,9 +59,9 @@ sources: # What this document collects -The released Open Imaging Finding Model (OIFM) record format is described in [the finding model format](/semantic-foundation/finding-models/finding-model-format.md). This document collects the goals that have been stated for changing it, with the source that states each one. Nothing here is implemented on `main` of any repository, and nothing here is a proposal by this knowledgebase. +The released Open Imaging Finding Model (OIFM) format is described in [the finding model format](/semantic-foundation/finding-models/finding-model-format.md). This document collects the goals that have been stated for changing it, with the source that states each one. Nothing here is implemented on `main` of any repository, and nothing here is a proposal by this knowledgebase. -Four separate threads are in play, and they are not coordinated with each other: a metadata rewrite on a `findingmodel` branch, a source schema version 2 draft circulating in the common data element work, relationship and graph ideas coming out of the next-generation CDE vocabulary, and a versioning plan for packages and database artifacts. +Four efforts remain uncoordinated: a metadata rewrite on a `findingmodel` branch, a source schema version 2 draft circulating in the common data element work, relationship and graph ideas coming out of the next-generation CDE vocabulary, and a versioning plan for packages and database artifacts. # The canonical structured-metadata rewrite @@ -69,13 +69,13 @@ The most advanced thread. The design document on `feature/metadata-cleanup` stat It adds eight optional fields to both finding model classes: `body_regions`, `subspecialties`, `etiologies`, `entity_type`, `applicable_modalities`, `expected_time_course`, `age_profile`, and `sex_specificity`. Their permitted values are listed in [the format document](/semantic-foundation/finding-models/finding-model-format.md); the pipeline that populates them is described in [the enrichment pipeline](/semantic-foundation/finding-models/enrichment-pipeline.md). -Two constraints ride with it. Canonical `index_codes` are narrowed to exact or clinically substitutable matches, with broader, narrower, and merely related candidates diverted to a separate review artifact. And model-level entries in `index_codes` and `anatomic_locations` are rejected when `display` is empty.[^rewrite] +Canonical `index_codes` allow only exact or clinically substitutable matches. Broader, narrower, and related candidates go to a review artifact. Model-level `index_codes` and `anatomic_locations` entries require a nonempty `display`.[^rewrite] **Status as the branch reports it.** The execution plan on `dev` records slices 1 through 8 and 9-A complete, with slice 9-B, migrating the MCP and command-line callers plus a bulk backfill, and slice 10, backfill, fixtures, and final documentation, remaining.[^impl-plan] The branch's own readiness assessment fails: the 2026-06-03 prompt-improvement document raises expected time course to between 0.76 and 0.78 and etiologies to between 0.91 and 0.93, then states that overall readiness remains a failure because age profile and index codes are below the quality floor.[^tempo] # The source schema version 2 draft -A separate and broader draft, dated 2026-04-20 and marked "a proposed authoring schema, not an implementation-complete contract yet," is kept in the `next-gen-2026` branch of `ACR-RSNA-CDEs` as a copy of an upstream gist.[^v2-draft] It proposes a different decomposition of the format than the metadata rewrite does, and the two have not been reconciled. +A broader draft, dated 2026-04-20 and marked "a proposed authoring schema, not an implementation-complete contract yet," is kept in the `next-gen-2026` branch of `ACR-RSNA-CDEs` as a copy of an upstream gist.[^v2-draft] Its format differs from the metadata rewrite and remains unreconciled with it. | Proposal | What the draft says | |---|---| @@ -87,7 +87,7 @@ A separate and broader draft, dated 2026-04-20 and marked "a proposed authoring | Registries | `relationship_types.json` and `quantity_kinds.json` alongside the corpus | | `schema_version` on the record | Required, `"2.0"` for version 2 source files | -The draft also lists explicit removals and changes against the current shape: drop `required`; replace the numeric `unit` with `quantity_kind` plus optional `common_units`; add `synonyms` to attributes and choice values; add model-level `references`; add `lifecycle` and `related_models`; allow canonical attribute references; and keep hydrated output close to the current structure.[^v2-draft] +The draft also proposes these changes: drop `required`; replace the numeric `unit` with `quantity_kind` plus optional `common_units`; add `synonyms` to attributes and choice values; add model-level `references`; add `lifecycle` and `related_models`; allow canonical attribute references; and keep hydrated output close to the current structure.[^v2-draft] Five decisions are left open in the draft itself, including whether runtime APIs expose both the authored and the effective relationship views, where registry files live, and whether canonical attributes may be numeric or carry index codes.[^v2-draft] @@ -95,7 +95,7 @@ Five decisions are left open in the draft itself, including whether runtime APIs The project lead's stated goal for the format, recorded in [the knowledgebase build plan](/plans/2026-09-20-knowledgebase-build-plan.md), is increased metadata plus the relationship and graph work coming out of the common data element effort.[^plan] -That effort is described in [the next-generation vocabulary](/semantic-foundation/common-data-elements/next-generation-vocabulary.md). Three of its ideas bear directly on the finding model format. +[The next-generation vocabulary](/semantic-foundation/common-data-elements/next-generation-vocabulary.md) contributes three relevant ideas. - **Typed, identified relationships.** Eight relationship pairs plus a catch-all, each carrying its own identifier so a report-level assertion can cite the standing potential it expresses.[^doc07] - **The differential as a derived view.** Computed by traversing manifestation edges and filtering by context, with no `DIFFERENTIAL_OF` edge type.[^doc07] @@ -115,7 +115,7 @@ Record-format versioning appears only in the version 2 draft's `schema_version` # Superseded, and still open as an issue -The original eight-facet classification specification is superseded. Two task documents on `main` carry it, the task status summary marks it "Blocked - needs 4 design decisions" covering scope, required against optional, markdown representation, and search indexing,[^status] and the canonical metadata implementation plan states that it supersedes the facets plan for this workstream.[^impl-plan] Issue 25 remains open against the old design.[^issue-25] +Two `main` task documents describe the superseded eight-facet specification. The status summary marks it "Blocked - needs 4 design decisions" on scope, required versus optional fields, markdown representation, and search indexing.[^status] The canonical metadata implementation plan supersedes it for this workstream.[^impl-plan] Issue 25 remains open against the old design.[^issue-25] Four other open `findingmodel` issues shape the format rather than the tooling. Issue 5 asks for three model variants: a content-only form for language model extraction, a draft form carrying everything but identifiers and contributors, and the full saveable form.[^issue-5] Issue 3 asks for a human-editable markdown form without identifiers or codes, issue 4 for a tool that folds edits to that markdown back into the JSON while preserving identifiers, and issue 8 for a `FindingObservation` concept holding worked examples of a finding model in use. @@ -136,7 +136,7 @@ Two are recorded in the format documentation and are carried in [open questions] - **Choice value code indexing.** The prose mirror on `main` numbers the first choice value `.1`; the validator in the released code writes `.0`, and the stored corpus follows the code.[^prose-schema] - **Omissions in the prose mirror.** It omits `anatomic_locations` from the full model entirely, and states none of the length and cardinality constraints the code enforces.[^prose-schema] -The content-side direction, which is separate from the format, is in [the content direction roadmap](/roadmap/finding-model-content-direction.md). +See [the content direction roadmap](/roadmap/finding-model-content-direction.md) for corpus work. [^rewrite]: Canonical Structured Metadata and Enrichment Rewrite, feature/metadata-cleanup branch [^impl-plan]: Canonical structured metadata implementation plan, findingmodel dev branch diff --git a/knowledge/roadmap/index.md b/knowledge/roadmap/index.md index a6c6465..9680eac 100644 --- a/knowledge/roadmap/index.md +++ b/knowledge/roadmap/index.md @@ -2,10 +2,10 @@ Stated goals and direction, area by area, with the source that states each one. Everything here is a fact about what a deck, an issue, a plan document, or the project lead has said. Nothing here is a design proposal by this knowledgebase; proposals are a separate workstream. Where sources disagree, the disagreement is recorded rather than resolved, and collected in open questions. -* [Roadmap 2026](./roadmap-2026.md) - The project-level direction stated in the January 2026 status deck, the working group and use-case pipeline it proposes, and a per-repository summary of what is currently in flight. -* [Finding model format evolution](./finding-model-format-evolution.md) - The stated goals for where the Open Imaging Finding Model record format is going: the canonical structured-metadata rewrite, the source schema version 2 draft, relationship and graph ideas from the next-generation CDE work, versioning, and the discrepancies a revision would have to settle. -* [Finding model content direction](./finding-model-content-direction.md) - Where the finding model corpus is going: the MGB exam-oriented sub-taxonomies as the content spine, the expected supersession of Gamuts-derived models, the triage of unmatched rows, the content batches in flight, the definition cleanup plan, and the open content issues. -* [Imaging Problem List data model system](./ipl-data-model-system.md) - The stated goals for the Observation, Exam Finding List, and Imaging Problem List layer: the formal model system asked for in issue 1, the eight active plans on the development branch, the anatomic-compatibility follow-on, and the FHIR and IHE alignments that are documented but unimplemented. -* [Exam types roadmap](./exam-types.md) - The goals stated for an OIDM exam type layer, by whom and when, the one written design that exists, the building blocks a future effort would start from, and the questions no source answers. -* [Anatomic locations and RadLex](./anatomic-locations-and-radlex.md) - The stated goals for the anatomic location set: incorporation into RadLex as an overlay, the node requests owed to the RadLex anatomy track, the two unreconciled datasets, the tooling items carried forward from the original libraries, and the body region enumerations that disagree. -* [Open questions](./open-questions.md) - Every conflict between sources and every unverified fact found while building this knowledgebase, grouped by area, with the sources on each side and the owner where one is indicated. +* [Roadmap 2026](./roadmap-2026.md) - The January 2026 project goals, proposed working group, use-case pipeline, and current repository work. +* [Finding model format evolution](./finding-model-format-evolution.md) - Proposed metadata, schema, relationship, and versioning changes to the finding model format. +* [Finding model content direction](./finding-model-content-direction.md) - Exam-oriented content priorities, unmatched taxonomy rows, unmerged batches, and corpus cleanup plans. +* [Imaging Problem List data model system](./ipl-data-model-system.md) - Formal data model goals, eight active plans, anatomy reconciliation, and unimplemented FHIR and IHE mappings. +* [Exam types roadmap](./exam-types.md) - Exam type goals, the unimplemented Playbook profile design, and unresolved ownership and data questions. +* [Anatomic locations and RadLex](./anatomic-locations-and-radlex.md) - RadLex incorporation, anatomy node requests, dataset differences, tooling goals, and conflicting body regions. +* [Open questions](./open-questions.md) - Every conflict between sources and every unverified fact found while building this knowledgebase, grouped by area, with the sources on each side and the owner where one is indicated, plus the defects found in source documents. diff --git a/knowledge/roadmap/ipl-data-model-system.md b/knowledge/roadmap/ipl-data-model-system.md index 8fcc0cf..96ac5b0 100644 --- a/knowledge/roadmap/ipl-data-model-system.md +++ b/knowledge/roadmap/ipl-data-model-system.md @@ -1,10 +1,10 @@ --- type: Roadmap title: Imaging Problem List data model system -description: "The stated goals for the Observation, Exam Finding List, and Imaging Problem List layer: the formal model system asked for in issue 1, the eight active plans on the development branch, the anatomic-compatibility follow-on, and the FHIR and IHE alignments that are documented but unimplemented." +description: Formal data model goals, eight active plans, anatomy reconciliation, and unimplemented FHIR and IHE mappings. tags: [roadmap, data-structures, ipl, observation, fhir, ihe] status: draft -generated: { by: claude-opus-5/claude-code, at: 2026-09-21T19:00:00Z } +generated: { by: codex/gpt-6, at: 2026-09-21T20:53:02Z } stale_after: 2027-09-21 sources: - id: issue-1 @@ -46,7 +46,7 @@ sources: In the 2026-09-20 planning interview that produced [the knowledgebase build plan](/plans/2026-09-20-knowledgebase-build-plan.md), the project lead described the Imaging Problem List work in four parts: define data structures for [Observations](/glossary/observation.md) and their relationships; manage and collate those observations across a patient's history; design the applications that use them; and publish the result as standard formats.[^plan] -The January 2026 deck states the same layer as the second strategic pillar, an ordered hierarchy from the atomic Observation through the [Exam Finding List](/glossary/exam-finding-list.md) and the [Imaging Problem List](/glossary/imaging-problem-list.md) to the [Imaging Persona](/glossary/imaging-persona.md), and names the Imaging Problem List as "a standard format for structured imaging results, automatically extractable from narrative report text."[^deck] The structures as they exist today are documented under [data structures](/data-structures/); what follows is what has been stated about where they go. +The January 2026 deck makes this hierarchy its second strategic pillar: Observation, [Exam Finding List](/glossary/exam-finding-list.md), [Imaging Problem List](/glossary/imaging-problem-list.md), and [Imaging Persona](/glossary/imaging-persona.md). It calls the Imaging Problem List "a standard format for structured imaging results, automatically extractable from narrative report text."[^deck] The structures as they exist today are documented under [data structures](/data-structures/); what follows is what has been stated about where they go. # Issue 1: a formal system of data models @@ -57,9 +57,9 @@ The one open issue in the `imaging-problem-list` repository, opened 2026-01-28, - With **extensive annotation to generate JSON schemas**. - Using **camelCase aliases in export** against **snake_case object attributes** internally. -Each element of that corresponds to a gap that exists today. There is no Observation model, no JSON Schema, and no standalone Observation record; the structure exists only inside the Exam Finding List JSON and, separately, inside the extraction pipeline's own models. Both the Exam Finding List and Imaging Problem List sample files carry a `$schema` URL that resolves to nothing. And the camelCase against snake_case split is the convention the existing sample data already follows without a model to enforce it. +There is no formal Observation model, JSON Schema, or standalone record. Observations exist within Exam Finding List JSON and separate extraction models. Both list formats have sample `$schema` URLs that resolve to nothing. Sample data follows the camelCase and snake_case convention without a model enforcing it. -The Extracted Observation subtype the issue floats maps onto a distinction the pipeline already makes in practice, between what a language model produced and what has been coded. See [Observation](/data-structures/observation.md). +The proposed subtype reflects the pipeline's distinction between language model output and coded findings. See [Observation](/data-structures/observation.md). # The eight active plans as direction @@ -87,11 +87,11 @@ This is a data model question, not a display question, because the grouping key The mapping is stated in the specification on `main`: a report containing a list of [FHIR Condition](/glossary/fhir-condition.md) objects labeled with the finding identifier, each containing FHIR Observations documenting which exams the finding was recorded on, with exam date and LOINC-coded exam type.[^ipl-main] -No code in any repository produces a Condition resource, and no current plan claims to. The full picture, including the lineage precedents that do implement a FHIR encoding, is in [FHIR mapping](/data-structures/fhir-mapping.md). One lineage experiment states an adjacent goal: a design note on an unmerged `IPL-MVP-ExtractionAndLabeling` branch proposes persistent FHIR Observations with stable identifiers, so repeated mentions of a finding across reports link to one entity rather than creating new ones.[^fhir-design-note] It carries no file extension and adds no code. +No code in any repository produces a Condition resource, and no current plan claims to. See implemented lineage precedents in [FHIR mapping](/data-structures/fhir-mapping.md). One lineage experiment states an adjacent goal: a design note on an unmerged `IPL-MVP-ExtractionAndLabeling` branch proposes persistent FHIR Observations with stable identifiers, so repeated mentions of a finding across reports link to one entity rather than creating new ones.[^fhir-design-note] The extensionless note adds no code. # IHE Imaging Diagnostic Report alignment -The deck states that the Exam Finding List "connects to the IHE Imaging Diagnostic Report (IDR) FHIR representation."[^deck] That connection is a goal. No OIDM repository implements or references the profile; what exists is a full extract of the Phase II public comment draft on the `next-gen-2026` branch of `ACR-RSNA-CDEs`.[^idr-extract] +The deck states that the Exam Finding List "connects to the IHE Imaging Diagnostic Report (IDR) FHIR representation."[^deck] The connection remains a goal. No OIDM repository implements or references the profile. `ACR-RSNA-CDEs`'s `next-gen-2026` branch holds a full Phase II public comment draft extract.[^idr-extract] Four differences between the profile and current OIDM encodings are recorded in that extract, all listed as items to raise during public comment and none resolved: whether attributes ride in `Observation.component` or in `hasMember`; a vocabulary collision on the words "finding" and "observation"; whether a diagnosis is a FHIR Observation or a FHIR Condition; and whether [laterality](/glossary/laterality.md) lives in the location identifier or in a separate field. The profile also puts three questions back to the RadElement side, including what the coding system identifier for RadElement codes is. All are carried in [IHE IDR alignment](/data-structures/ihe-idr-alignment.md) and in [open questions](/roadmap/open-questions.md). diff --git a/knowledge/roadmap/open-questions.md b/knowledge/roadmap/open-questions.md index f66d959..3a19b2c 100644 --- a/knowledge/roadmap/open-questions.md +++ b/knowledge/roadmap/open-questions.md @@ -1,10 +1,10 @@ --- type: Reference title: Open questions -description: Every conflict between sources and every unverified fact found while building this knowledgebase, grouped by area, with the sources on each side and the owner where one is indicated. +description: Every conflict between sources and every unverified fact found while building this knowledgebase, grouped by area, with the sources on each side and the owner where one is indicated, plus the defects found in source documents. tags: [roadmap, open-questions, conflicts, gaps] status: draft -generated: { by: claude-opus-5/claude-code, at: 2026-09-21T19:00:00Z } +generated: { by: codex/gpt-6, at: 2026-09-21T20:53:02Z } sources: - id: deck resource: https://gamma.app/docs/Open-Imaging-Data-Model-2026-Status-Update:-Realizing-Object-Oriented-Imaging-Results-yfxzx4q9zssafal diff --git a/knowledge/roadmap/roadmap-2026.md b/knowledge/roadmap/roadmap-2026.md index 4b38e82..ae6d4dc 100644 --- a/knowledge/roadmap/roadmap-2026.md +++ b/knowledge/roadmap/roadmap-2026.md @@ -1,10 +1,10 @@ --- type: Roadmap title: Roadmap 2026 -description: The project-level direction stated in the January 2026 status deck, the working group and use-case pipeline it proposes, and a per-repository summary of what is currently in flight. +description: The January 2026 project goals, proposed working group, use-case pipeline, and current repository work. tags: [roadmap, deck, working-group, acr, work-edge] status: draft -generated: { by: claude-opus-5/claude-code, at: 2026-09-21T19:00:00Z } +generated: { by: codex/gpt-6, at: 2026-09-21T20:53:02Z } stale_after: 2027-09-21 sources: - id: deck @@ -32,9 +32,9 @@ sources: # What this document is -This is the project-level direction for the Open Imaging Data Model (OIDM), as stated by its sources. The single most complete statement is the January 2026 status deck, extracted in full at [status update, January 2026](/references/status-update-2026-01.md).[^deck] Below the deck sit the working repositories, whose direction is visible in their unmerged branches, plan documents, and open issues. +The January 2026 status deck states the Open Imaging Data Model (OIDM) direction. See [the full extract](/references/status-update-2026-01.md).[^deck] Repository branches, plans, and issues record work toward it. -Nothing here is a proposal. Each goal is attributed to the deck, an issue, or a plan document that states it. Where a goal has no artifact behind it, that is said. Per-area goals live in the five area roadmaps linked from [the roadmap index](/roadmap/); unresolved conflicts between sources are collected in [open questions](/roadmap/open-questions.md). +Nothing here is a proposal. Each goal is attributed to the deck, an issue, or a plan document that states it. Where a goal has no artifact behind it, that is said. Per-area goals live in the five [area roadmaps](/roadmap/); unresolved conflicts between sources are collected in [open questions](/roadmap/open-questions.md). # The three strategic pillars @@ -65,11 +65,11 @@ No record of the working group being convened exists in any repository read for Three, in the deck's own words: host and moderate an academic and vendor "big tent"; run a **use-case pipeline feeding the CDE group**; standardize the result.[^deck] -The use-case pipeline is the one of the three with existing material behind it. The lineage `UseCases` repository holds roughly 25 use case ideas organized against the RSNA value categories, described in [use cases](/history/use-cases.md). The direction the deck states is that such use cases feed the ACR and RSNA common data element group, which is the same direction as the workbench relationship described in [finding models and CDEs](/semantic-foundation/finding-models/finding-models-and-cdes.md). +The use-case pipeline is the one of the three with existing material behind it. The lineage `UseCases` repository provides roughly 25 ideas tagged with RSNA value categories. See [use cases](/history/use-cases.md). The deck would send such cases to the ACR and RSNA CDE group, consistent with the process described in [finding models and CDEs](/semantic-foundation/finding-models/finding-models-and-cdes.md). # The work edge, repository by repository -Branch inventories taken on 2026-09-21 established what follows; the full detail is in [the repository map](/repositories/repository-map.md).[^repo-map] None of the unmerged branches named here has an open pull request. +These inventories date to 2026-09-21. See [the repository map](/repositories/repository-map.md).[^repo-map] None of the unmerged branches named here has an open pull request. | Repository | Live thread | In flight | Area roadmap | |---|---|---|---| @@ -92,7 +92,7 @@ Three items in the deck have no artifact in any repository. They are direction, A fourth item, [exam types](/glossary/exam-type.md), is not in the deck at all but has been stated as a goal in three places since 2022 with no artifact produced; see [the exam types roadmap](/roadmap/exam-types.md). -The implementation status of every piece of the system, built and unbuilt, is tabulated in [architecture](/overview/architecture.md). +See implementation status in [architecture](/overview/architecture.md). [^deck]: "Open Imaging Data Model 2026 Status Update: Realizing Object-Oriented Imaging Results", January 2026 [^plan]: Knowledgebase build plan diff --git a/knowledge/semantic-foundation/anatomic-locations/data-model.md b/knowledge/semantic-foundation/anatomic-locations/data-model.md index 3518e0d..a4b504a 100644 --- a/knowledge/semantic-foundation/anatomic-locations/data-model.md +++ b/knowledge/semantic-foundation/anatomic-locations/data-model.md @@ -1,10 +1,10 @@ --- type: Format Specification title: Anatomic location data model -description: The record model for an anatomic location in both lineages, its identifier scheme, its two hierarchies, its laterality triads, its classification fields, and its external codes, with verified counts. +description: Anatomic location identifiers, fields, hierarchies, classification, and code coverage in both datasets. tags: [semantic-foundation, anatomic-locations, schema, radlex, laterality] status: draft -generated: { by: claude-opus-5/claude-code, at: 2026-09-21T17:00:00Z } +generated: { by: codex/gpt-6, at: 2026-09-21T20:53:02Z } sources: - id: al-schema resource: https://github.com/talkasab/anatomiclocations.org/blob/1f39fa45f621cef947a3f3ef1f869334cfa5c841/data/body_parts_schema.json @@ -37,7 +37,7 @@ sources: # Scope -This document describes the record: what an [anatomic location](/glossary/anatomic-location.md) carries and what each field means. The verbatim JSON Schema and the full runtime field list live in [the anatomic location record format reference](/references/anatomic-location-json-schema.md). Two datasets exist and are not reconciled with each other, so both are described here; [lineage and current implementation](/semantic-foundation/anatomic-locations/lineage-and-current-implementation.md) says which is current and why. +An [anatomic location](/glossary/anatomic-location.md) record has two unreconciled formats. This page describes both. See [the record format reference](/references/anatomic-location-json-schema.md) for the verbatim JSON Schema and runtime fields, and [lineage and current implementation](/semantic-foundation/anatomic-locations/lineage-and-current-implementation.md) for their status. | Dataset | Records | Version | Field naming | |---|---|---|---| @@ -76,11 +76,11 @@ Every record carries a containment parent. The distinction between the two hiera The original set stores parent pointers only and lets a library derive children. The current set stores both directions as `{id, display}` reference objects, so a consumer can read a node's children without indexing the whole file. Containment is a rooted tree from `RID39569`, whole body. The part-of relation covers fewer than half the records and is not a tree. -Two data defects are visible in the current file and are worth knowing before traversing it. 111 records carry a `partOfRef` pointing at themselves, and one carries a self-referential `leftRef`. The build process already expects self-referential containment at the root, which is legitimate, but self-referential part-of on 111 nodes is not.[^fm-normalized] +The current file has 111 self-referential `partOfRef` values and one self-referential `leftRef`. The build already expects self-referential containment at the root, which is legitimate, but self-referential part-of is a defect.[^fm-normalized] # Laterality triads -A sided structure is represented by three records, not by a flag on one. The generic record carries `leftRef` and `rightRef`; each sided record carries `unsidedRef` back to the generic one and a reference to its counterpart. The full convention, including the containment and synonym rules for sided entries, is in [laterality conventions](/semantic-foundation/anatomic-locations/laterality-conventions.md). See also [laterality](/glossary/laterality.md). +A sided structure uses generic, left, and right records. The generic record has `leftRef` and `rightRef`. Each sided record has `unsidedRef` and a counterpart reference. See [laterality conventions](/semantic-foundation/anatomic-locations/laterality-conventions.md) for containment and synonym rules, and [laterality](/glossary/laterality.md) for the term. | Field | Original set | Current set | |---|---|---| @@ -145,7 +145,7 @@ The current format, unchanged from the data file. It shows containment, part-of, # From record to usable object -The curation format is what an editor changes. The package that consumes it normalizes each record into an `AnatomicLocation` object, resolves the reference objects, adds a laterality enum, and precomputes a materialized containment path and part-of path so that ancestry, descendants, and the "is X inside Y" test are string comparisons rather than recursive walks.[^fm-normalized] A location converts to an [index code](/glossary/index-code.md) with system `anatomic_locations`, its RadLex identifier as the code, and its description as the display, which is the form it takes when attached to a [finding model](/glossary/finding-model.md).[^fm-location-model] +The curation format is what an editor changes. The package that consumes it normalizes each record into an `AnatomicLocation` object, resolves references, and adds a laterality enum. Precomputed containment and part-of paths make ancestry, descendants, and "is X inside Y" tests string comparisons.[^fm-normalized] A location becomes an [index code](/glossary/index-code.md) with system `anatomic_locations`, its RadLex identifier as code, and its description as display. [Finding models](/glossary/finding-model.md) use this form.[^fm-location-model] [^al-schema]: body_parts_schema.json, anatomiclocations.org [^al-data]: body_parts.json, release 1.0.0-rc.1 diff --git a/knowledge/semantic-foundation/anatomic-locations/index.md b/knowledge/semantic-foundation/anatomic-locations/index.md index 8a1ea35..8ce05cf 100644 --- a/knowledge/semantic-foundation/anatomic-locations/index.md +++ b/knowledge/semantic-foundation/anatomic-locations/index.md @@ -1,8 +1,8 @@ # Anatomic locations -* [Why anatomic locations](./why-anatomic-locations.md) - Why OIDM curates its own anatomic location set instead of pointing at an existing ontology, and every place those identifiers are used across the model. -* [Anatomic location data model](./data-model.md) - The record model for an anatomic location in both lineages, its identifier scheme, its two hierarchies, its laterality triads, its classification fields, and its external codes, with verified counts. -* [Laterality conventions](./laterality-conventions.md) - How sided anatomic locations are identified, linked, contained, and named in the curated set, and how a side is assigned to a finding at coding time. -* [Lineage and current implementation](./lineage-and-current-implementation.md) - The two anatomic location lineages, the original curated set with its wrapper libraries and the anatomic-locations package inside findingmodel, which one is current, and what remains unreconciled between them. -* [RadLex integration](./radlex-integration.md) - What RadLex is, how the curated anatomic location set relates to it as an overlay, the open RSNA tracking issue for folding the set into RadLex, and the running list of node requests. -* [Anatomic location tooling](./tooling.md) - How to look up, search, and traverse anatomic locations with the anatomic-locations package and CLI, the older wrapper libraries, and the raw JSON download. +* [Why anatomic locations](./why-anatomic-locations.md) - Why OIDM curates anatomic identifiers and where the model uses them. +* [Anatomic location data model](./data-model.md) - Anatomic location identifiers, fields, hierarchies, classification, and code coverage in both datasets. +* [Laterality conventions](./laterality-conventions.md) - Sided location identifiers and references, with rules for assigning laterality to findings. +* [Lineage and current implementation](./lineage-and-current-implementation.md) - The original and current anatomic location datasets, their consumers, and unresolved differences. +* [RadLex integration](./radlex-integration.md) - RadLex integration, the anatomy overlay agreement, search limitations, and pending node requests. +* [Anatomic location tooling](./tooling.md) - Lookup, search, and hierarchy traversal through current and older anatomic location tools. diff --git a/knowledge/semantic-foundation/anatomic-locations/laterality-conventions.md b/knowledge/semantic-foundation/anatomic-locations/laterality-conventions.md index c9e2b27..db5ba05 100644 --- a/knowledge/semantic-foundation/anatomic-locations/laterality-conventions.md +++ b/knowledge/semantic-foundation/anatomic-locations/laterality-conventions.md @@ -1,10 +1,10 @@ --- type: Reference title: Laterality conventions -description: How sided anatomic locations are identified, linked, contained, and named in the curated set, and how a side is assigned to a finding at coding time. +description: Sided location identifiers and references, with rules for assigning laterality to findings. tags: [semantic-foundation, anatomic-locations, laterality, reference, migrated] status: draft -generated: { by: claude-opus-5/claude-code, at: 2026-09-21T17:00:00Z } +generated: { by: codex/gpt-6, at: 2026-09-21T20:53:02Z } sources: - id: fm-laterality resource: https://github.com/openimagingdata/findingmodel/blob/75afd39a400419dcfaf7c8d4a34f065b4d804e0d/.claude/skills/manage-anatomic-locations/reference/laterality-conventions.md @@ -25,7 +25,7 @@ sources: # Two questions -[Laterality](/glossary/laterality.md) is decided twice in OIDM, and the rules are different. Curation decides how a sided structure is represented in the [anatomic location](/glossary/anatomic-location.md) set. Coding decides which of those records a given finding in a given report gets. The first half of this document is the curation convention, migrated from the finding model repository's curation skill.[^fm-laterality] The second half is the assignment rule from the extraction platform.[^ipl-rules] +[Laterality](/glossary/laterality.md) has two sets of rules. Curation defines sided records in the [anatomic location](/glossary/anatomic-location.md) set, as described in the migrated curation convention below.[^fm-laterality] Coding assigns those records to findings using the extraction platform's rules.[^ipl-rules] # Compound identifier pattern @@ -90,9 +90,9 @@ Identifier `{base}_RID5825`. Has `leftRef`, its counterpart, and `unsidedRef`. ` | `unsidedRef` only | `generic` | Maps to generic | | None | `nonlateral` | Not a lateralized structure | -The key insight is that a reference points at the counterpart, not at itself. A left entry has `rightRef` and `unsidedRef`. It does not have `leftRef`, because it is the left variant. +A reference points to the counterpart. A left entry has `rightRef` and `unsidedRef`, but no `leftRef`. -This inversion is easy to get wrong, and it has been got wrong: open issue 39 in the finding model repository reports that the build's `determine_laterality()` assigns left and right backwards.[^fm-issues] +Open issue 39 in the finding model repository reports that the build's `determine_laterality()` assigns left and right backwards.[^fm-issues] # Containment and synonyms for sided entries @@ -102,7 +102,7 @@ Synonyms follow a consistent pattern. Generic `["hilum", "lung hilum", "hilum of # Assigning a side to a finding -Curation says which records exist. Assignment says which one a given observation gets. The precedence is stated as explicit text side, then sided-exam side, then generic unsided.[^ipl-rules] +The precedence is stated as explicit text side, then sided-exam side, then generic unsided.[^ipl-rules] - **A non-sided exam never introduces a side.** On a CT abdomen, "adrenal glands unremarkable" resolves to the generic adrenal gland, not to a left one. "No hydronephrosis" with no side stated resolves to the generic kidney. - **A sided exam sides the finding.** A left shoulder radiograph plus "humerus fracture" resolves to the left humerus. @@ -120,7 +120,7 @@ Curation says which records exist. Assignment says which one a given observation The operational test for separable against inseparable: if you could meaningfully say "the left one is larger or newer," it is separable; if it is a named diffuse entity, it is inseparable.[^ipl-rules] -The full ladder, including the specificity and exam-region rules that surround these laterality rules, is in [anatomic location assignment rules](/data-structures/anatomic-location-assignment-rules.md). +See [anatomic location assignment rules](/data-structures/anatomic-location-assignment-rules.md) for the full precedence, specificity, and exam-region rules. # Known limitation diff --git a/knowledge/semantic-foundation/anatomic-locations/lineage-and-current-implementation.md b/knowledge/semantic-foundation/anatomic-locations/lineage-and-current-implementation.md index e668c93..0f09360 100644 --- a/knowledge/semantic-foundation/anatomic-locations/lineage-and-current-implementation.md +++ b/knowledge/semantic-foundation/anatomic-locations/lineage-and-current-implementation.md @@ -1,10 +1,10 @@ --- type: Concept title: Lineage and current implementation -description: The two anatomic location lineages, the original curated set with its wrapper libraries and the anatomic-locations package inside findingmodel, which one is current, and what remains unreconciled between them. +description: The original and current anatomic location datasets, their consumers, and unresolved differences. tags: [semantic-foundation, anatomic-locations, lineage, status] status: draft -generated: { by: claude-opus-5/claude-code, at: 2026-09-21T17:00:00Z } +generated: { by: codex/gpt-6, at: 2026-09-21T20:53:02Z } sources: - id: al-site resource: https://github.com/talkasab/anatomiclocations.org/blob/1f39fa45f621cef947a3f3ef1f869334cfa5c841/docs/index.markdown @@ -40,7 +40,7 @@ sources: # Two lineages -[Anatomic locations](/glossary/anatomic-location.md) exist twice in OIDM. The first lineage is the original curated set published at anatomiclocations.org with two wrapper libraries. The second is the `anatomic-locations` package inside the `findingmodel` repository, with its own data file. They descend from the same curation effort and hold nearly the same concepts, but they are separate artifacts with different field names, different record counts, and no synchronization between them. +OIDM has two [anatomic location](/glossary/anatomic-location.md) datasets from the same curation effort. The original, published at anatomiclocations.org, has two wrapper libraries. The current `anatomic-locations` package in `findingmodel` uses a separate file. They contain nearly the same concepts, with different field names and counts, and no synchronization. | | Original lineage | Current lineage | |---|---|---| @@ -59,7 +59,7 @@ Three repositories under the project lead's personal account, all under the ISC `BodyPartIndex.ts` is the TypeScript wrapper, published to npm as `@talkasab/body_part_index` with the data bundled in the package. It is the richer of the two wrappers, documenting local-code mapping and every hierarchy accessor.[^bpi-ts] Its last commit on `main` is 2022-12-18. -`BodyPartIndex.py` is the Python wrapper. Its README says installation from PyPI is pending, and the site roadmap still lists "finish BodyPartIndex.py and publish to PyPI" as an open item.[^al-site] Its last commit on `main`, 2024-02-03, added a TODO list that remains the clearest statement of what that lineage intended next: move the repository to the `openimagingdata` organization, adopt ACR Common codes, acknowledge DICOM codes, track URLs, rewrite `BodyPart` as a Pydantic model, and on the website build a better tree browser and a way for people to submit suggestions about a specific node.[^bpi-todo] None of those items is done in that repository. Several were done independently in the other lineage. +`BodyPartIndex.py` is the Python wrapper. Its README says installation from PyPI is pending, and the site lists "finish BodyPartIndex.py and publish to PyPI" as open.[^al-site] Its last `main` commit, 2024-02-03, added these TODOs: move to `openimagingdata`, adopt ACR Common codes, acknowledge DICOM codes, track URLs, and rewrite `BodyPart` in Pydantic. It also requested a better website tree browser and suggestions for specific nodes.[^bpi-todo] None is complete in that repository. The current lineage independently completed several. # The current lineage @@ -74,7 +74,7 @@ The JSON source data is hosted outside the repository, with the migration tool r # Which is current -The build plan states it plainly: the `anatomic-locations` package inside `findingmodel` and its 2,926-record dataset are the current anatomic data, and the original set with its wrapper libraries is lineage.[^build-plan] Everything built since uses the package. The extraction and coding platform resolves locations through it, the finding model tooling attaches its identifiers to definitions, and the next-generation vocabulary work points at its data file pinned to a commit rather than at the older one.[^cde-axis] +The build plan identifies `anatomic-locations` and its 2,926-record dataset as current.[^build-plan] The extraction platform resolves locations through it, finding model tools attach its identifiers, and the next-generation vocabulary work cites its data at a pinned commit.[^cde-axis] The original lineage is not dead content. Its data file is still the download the public site offers, its npm package still installs, and both are still reachable at the addresses published in 2022. It is superseded as the working set, not withdrawn. diff --git a/knowledge/semantic-foundation/anatomic-locations/radlex-integration.md b/knowledge/semantic-foundation/anatomic-locations/radlex-integration.md index a130a49..bc6b6ed 100644 --- a/knowledge/semantic-foundation/anatomic-locations/radlex-integration.md +++ b/knowledge/semantic-foundation/anatomic-locations/radlex-integration.md @@ -1,10 +1,10 @@ --- type: Concept title: RadLex integration -description: What RadLex is, how the curated anatomic location set relates to it as an overlay, the open RSNA tracking issue for folding the set into RadLex, and the running list of node requests. +description: RadLex integration, the anatomy overlay agreement, search limitations, and pending node requests. tags: [semantic-foundation, anatomic-locations, radlex, rsna, integration] status: draft -generated: { by: claude-opus-5/claude-code, at: 2026-09-21T17:00:00Z } +generated: { by: codex/gpt-6, at: 2026-09-21T20:53:02Z } sources: - id: radlex-issue-3 resource: https://github.com/RSNA/RadLex/issues/3 @@ -39,23 +39,23 @@ Three features of its structure matter to OIDM: - **Provenance is carried on the concept.** A `RID:Source` annotation records free text such as "Playbook", "LOINC", or "LI-RADS 2020", saying where a concept came from. - **Obsolescence is explicit.** `RID:Replaced_by` points a retired concept at its successor. -The `RSNA/RadLex` repository is not a copy of the ontology alone. Its working branches hold a concept search and curation pipeline that parses the OWL with `rdflib`, writes Parquet triples, builds a DuckDB graph of nodes, edges, and search documents, and drives an agent harness that matches report findings to RadLex concepts and proposes candidate new concepts for review.[^radlex-repo] +The `RSNA/RadLex` working branches contain a search and curation pipeline. It parses OWL with `rdflib`, writes Parquet triples, and builds a DuckDB graph of nodes, edges, and search documents. An agent harness matches report findings to concepts and proposes new concepts for review.[^radlex-repo] # Why search quality is the gating problem -The pipeline's search plan is worth reading because it names the failure mode that any integration has to avoid. Concept lookup failed "silently": a term that should match returned nothing or returned noise, and the consuming agent concluded the concept was missing from RadLex. That false-gap outcome is called the worst failure mode of the project, because it flows straight into proposing a concept and pollutes the candidate file with duplicates of concepts RadLex already has.[^radlex-search] +The search plan describes lookup failing "silently": known terms returned no matches or noise. Agents then proposed duplicates as new concepts, the plan's worst failure mode.[^radlex-search] -Two defects produced it. The graph query ranked alphabetically rather than by relevance, so searching `LUL` returned 69 rows with the correct concept, `RID1327` upper lobe of left lung, sorting 67th behind concepts that merely contain the letters. A replacement scorer fixed ranking but matched literal words only, so `part-solid nodule`, `hilar adenopathy`, and `enlarged lymph nodes` all missed.[^radlex-search] +Alphabetical ranking put `RID1327`, upper lobe of left lung, 67th among 69 results for `LUL`. A replacement scorer fixed ranking but matched only literal words, missing `part-solid nodule`, `hilar adenopathy`, and `enlarged lymph nodes`.[^radlex-search] -The design keeps exact matching as the confidence signal and adds BM25 underneath as a recall layer, with a per-query relative cutoff because BM25 scores are not comparable across queries. The stated goal is "recall good enough that a MISS is real evidence of an ontology gap rather than evidence of unlucky phrasing." The plan is marked complete, shipped 2026-08-20.[^radlex-search] For OIDM this matters because a gap list handed to RadLex is only as trustworthy as the search that produced it. +The design combines exact matching for confidence with BM25 for recall. A per-query relative cutoff accounts for scores being incomparable across queries. Its goal is "recall good enough that a MISS is real evidence of an ontology gap rather than evidence of unlucky phrasing." The plan is marked complete and shipped 2026-08-20.[^radlex-search] # The tracking point `RSNA/RadLex` issue 3, "Add Anatomic Locations", was opened on 2026-08-10 by RSNA and is open. Its exit criterion is one line: "100% coverage of the Anatomic Locations terminology in RadLex."[^radlex-issue-3] -That issue is the whole of the integration as recorded in the RadLex repository. No code, commit message, or document inside the repository mentions anatomic locations, body parts, or OIDM. The relationship exists at the issue level, not yet in the ontology file. +The issue is the only integration record in the `RSNA/RadLex` repository. No code, commit message, or repository document mentions anatomic locations, body parts, or OIDM. The integration is not in the ontology file. -The January 2026 status update states the direction more simply, saying the anatomic locations are "being formally incorporated into RadLex by RSNA committee."[^deck] The issue is the evidence for that statement; the ontology content is not there yet. +The January 2026 update says the locations are "being formally incorporated into RadLex by RSNA committee."[^deck] The issue supports this direction, but the ontology content is pending. # The overlay agreement @@ -70,13 +70,13 @@ Two consequences are already written into that vocabulary: # What RadLex can supply in return -The traffic is not one way. The curated set has no is-a relation and no structure-type nodes, which is recorded as its major shortcoming. RadLex 4.3 has an is-a chain for every one of the 1,910 plain-identifier locations, up to "anatomical entity," and walking it yields a first structure-type layer without inventing anything: 352 locations under muscle organ, 221 under artery, 137 under vein, 115 under tendon, 101 under bone organ, 28 each under joint and nerve, and 26 under lymph node.[^cde-axis] +The curated set has no is-a relation and no structure-type nodes, which is recorded as its major shortcoming. All 1,910 plain-identifier locations have a RadLex 4.3 is-a chain to "anatomical entity," yielding 352 locations under muscle organ, 221 under artery, 137 under vein, 115 under tendon, 101 under bone organ, 28 each under joint and nerve, and 26 under lymph node, without inventing anything.[^cde-axis] Two cautions are recorded with that finding. RadLex's own release note warns that some of its is-a categorizations were converted from part-of and may be wrong, so a derived layer needs a clinical skim. And the FMA-style chain, in which a lung is a "lobular organ," is not the clinically useful layer. The work item is a derived, pinned overlay file handed to the anatomic locations track.[^cde-axis] # The node request list -The gap log on the same branch keeps a running list of specific "we need this node" changes to carry to the RadLex anatomy track, kept deliberately separate from the wider design discussion so it can move independently.[^cde-gaps] +The branch's gap log tracks "we need this node" requests separately from broader design work.[^cde-gaps] | Request | Needed by | Raised | |---|---|---| @@ -87,7 +87,7 @@ The gap log on the same branch keeps a running list of specific "we need this no | Real RadLex identifiers for the compound sided variants | every sided [Observation](/glossary/observation.md) | 2026-09-13 | | An is-a relation and structure-type nodes | scope of the form "applies to tendons" | 2026-08-19, restated 2026-09-13 as the top priority | -The log also records closures and oddities, which is what makes it useful as a status document rather than a wish list. `pleural space` was found present as `RID1363` with both sided forms and is marked closed. External-code coverage is uneven, with SNOMED CT on 1,782 of 2,926 records and 608 records carrying no codes at all. And `lung` is contained by `pleural space` in the data, which is anatomically odd and which any check that walks containment from a lung location will pass through.[^cde-gaps] +The `pleural space` request is closed because `RID1363` and both sided forms exist. SNOMED CT covers 1,782 of 2,926 records, while 608 have no external codes. The data also places `lung` inside `pleural space`, an anatomic oddity that affects containment traversal.[^cde-gaps] Goals for this area, and who has stated them, are collected in [the anatomic locations and RadLex roadmap](/roadmap/anatomic-locations-and-radlex.md). RadLex's place among the terminologies OIDM uses is described in [ontologies used](/semantic-foundation/terminologies/ontologies-used.md). diff --git a/knowledge/semantic-foundation/anatomic-locations/tooling.md b/knowledge/semantic-foundation/anatomic-locations/tooling.md index e3f7f13..4563911 100644 --- a/knowledge/semantic-foundation/anatomic-locations/tooling.md +++ b/knowledge/semantic-foundation/anatomic-locations/tooling.md @@ -1,10 +1,10 @@ --- type: Guide title: Anatomic location tooling -description: How to look up, search, and traverse anatomic locations with the anatomic-locations package and CLI, the older wrapper libraries, and the raw JSON download. +description: Lookup, search, and hierarchy traversal through current and older anatomic location tools. tags: [semantic-foundation, anatomic-locations, tooling, cli, guide] status: draft -generated: { by: claude-opus-5/claude-code, at: 2026-09-21T17:00:00Z } +generated: { by: codex/gpt-6, at: 2026-09-21T20:53:02Z } stale_after: 2027-09-21 sources: - id: fm-docs @@ -45,7 +45,7 @@ sources: | The raw data, no dependency | The JSON download from the project site | | To curate the set itself | The `manage-anatomic-locations` skill in `findingmodel`, and [laterality conventions](/semantic-foundation/anatomic-locations/laterality-conventions.md) | -Installation and configuration detail belongs with the code and is not repeated here. The package README and the anatomic locations guide in `findingmodel` are the reference.[^fm-pkg-readme][^fm-docs] +See the package README and guide for installation and configuration.[^fm-pkg-readme][^fm-docs] # The anatomic-locations package @@ -62,9 +62,9 @@ print(location.description) # "kidney" print(location.region.value) # "Abdomen" ``` -Four capabilities matter in practice. +The package provides four capabilities. -**Direct lookup and code lookup.** `get()` for the three forms above, and `find_by_code(system, code)` to come in from [SNOMED CT](/glossary/snomed-ct.md), [FMA](/glossary/fma.md), or RadLex. The assignment rules for the extraction platform tell coders to prefer direct lookup over search for a named target organ, because search is less reliable and produces retrieval misses such as "prostate" returning salivary glands.[^ipl-rules] +**Direct lookup and code lookup.** `get()` accepts identifiers, descriptions, or synonyms. `find_by_code(system, code)` accepts [SNOMED CT](/glossary/snomed-ct.md), [FMA](/glossary/fma.md), or RadLex codes. Assignment rules prefer direct lookup for a named organ to avoid search misses such as "prostate" returning salivary glands.[^ipl-rules] **Hierarchy traversal.** `get_containment_ancestors()` and `get_containment_descendants()` on a location, plus `get_children_of()` on the index. Both the containment and the part-of hierarchies are backed by materialized paths, so these are not recursive queries. @@ -107,7 +107,7 @@ whole body - RID39569 # Where the database comes from -The DuckDB file is built separately from the JSON source, published to remote storage, and referenced from a central `manifest.json` that also carries the finding model index. On first use the package fetches it, checks the manifest for a newer version on later runs, and caches it locally.[^fm-normalized] The path can be overridden with the `ANATOMIC_DB_PATH` environment variable or a `db_path` constructor argument, which is how a pinned build or a locally rebuilt database is used.[^fm-pkg-readme] +The JSON source is built into a DuckDB file published to remote storage. A central `manifest.json` references it alongside the finding model index. The package downloads and caches the database on first use, then checks the manifest for updates.[^fm-normalized] Use `ANATOMIC_DB_PATH` or the `db_path` constructor argument for a pinned or locally rebuilt database.[^fm-pkg-readme] # What is not exposed @@ -129,13 +129,13 @@ bodyPart?.getPartOf(); // RID270, female genital system const left = bodyPart?.getLeft(); // RID294_RID5824 ``` -It carries the fullest hierarchy surface of any of the libraries: `isContained` and `isPartOf` tests, immediate and full children in both hierarchies, and full ancestors in both.[^bpi-ts] +The TypeScript library provides `isContained`, `isPartOf`, immediate and full children, and full ancestors for both hierarchies.[^bpi-ts] `BodyPartIndex.py` is the Python counterpart. Its README states that installation from PyPI is pending, so it is used from source or with a local data file. It offers `get()` by identifier or code, `get_by_code()`, `search()` over names and synonyms, `is_contained()`, the laterality triad through `left`, `right`, and `unsided`, and a `snomed_code` property that falls back to the unsided version and then the immediate parent when the sided record carries no code of its own.[^bpi-py] # The raw data -The project site publishes the curated set as a single JSON file with its JSON Schema and a changelog beside it, under the ISC license.[^al-code] That is the zero-dependency path, and the field meanings are in [the data model](/semantic-foundation/anatomic-locations/data-model.md) and, verbatim, in [the record format reference](/references/anatomic-location-json-schema.md). +The project site publishes a JSON file, JSON Schema, and changelog under the ISC license.[^al-code] This requires no library dependency. See [the data model](/semantic-foundation/anatomic-locations/data-model.md) and [the verbatim record format reference](/references/anatomic-location-json-schema.md). [^fm-docs]: Anatomic locations guide, findingmodel main [^fm-pkg-readme]: anatomic-locations package README diff --git a/knowledge/semantic-foundation/anatomic-locations/why-anatomic-locations.md b/knowledge/semantic-foundation/anatomic-locations/why-anatomic-locations.md index 8369c4e..41f0e2e 100644 --- a/knowledge/semantic-foundation/anatomic-locations/why-anatomic-locations.md +++ b/knowledge/semantic-foundation/anatomic-locations/why-anatomic-locations.md @@ -1,10 +1,10 @@ --- type: Concept title: Why anatomic locations -description: Why OIDM curates its own anatomic location set instead of pointing at an existing ontology, and every place those identifiers are used across the model. +description: Why OIDM curates anatomic identifiers and where the model uses them. tags: [semantic-foundation, anatomic-locations, radlex, rationale] status: draft -generated: { by: claude-opus-5/claude-code, at: 2026-09-21T17:00:00Z } +generated: { by: codex/gpt-6, at: 2026-09-21T20:53:02Z } sources: - id: al-site resource: https://github.com/talkasab/anatomiclocations.org/blob/1f39fa45f621cef947a3f3ef1f869334cfa5c841/docs/index.markdown @@ -28,9 +28,9 @@ sources: # The problem the set solves -The premise is stated in one sentence on the project site: "Standard identifiers for discrete anatomic locations would enable numerous levels of interoperability if applied broadly."[^al-site] Two systems that agree a lesion sits at `RID2772` agree on the kidney without sharing a database, a vendor, or a schema. +The project site states: "Standard identifiers for discrete anatomic locations would enable numerous levels of interoperability if applied broadly."[^al-site] Systems using `RID2772` agree on the kidney without sharing a database, vendor, or schema. -The obvious way to get such identifiers is to adopt an existing anatomy ontology whole. The site says why that was rejected. Attempts to use [RadLex](/glossary/radlex.md) or [SNOMED CT](/glossary/snomed-ct.md) directly run into three problems:[^al-site] +The site identifies three problems with adopting [RadLex](/glossary/radlex.md) or [SNOMED CT](/glossary/snomed-ct.md) directly:[^al-site] - **Lack of numerous desired terms.** Structures radiologists name every day are missing. - **Too many unnecessary or degenerate terms.** Several concepts denote the same structure, so a coder has no principled way to choose one and a consumer cannot tell two records mean the same place. @@ -38,15 +38,15 @@ The obvious way to get such identifiers is to adopt an existing anatomy ontology # Curation as the answer -The response is a curated subset rather than a new ontology: "We are curating a subset of anatomic concepts from existing ontologies and shaping them into a usable collection of anatomic identifiers for informatics interoperability."[^al-site] The method was to start from RadLex terms already recognized in radiology reports, keep the used and useful ones, place each in an anatomic hierarchy, attach cross-references to other ontologies, and record [laterality](/glossary/laterality.md) and sex phenotype.[^al-site] +"We are curating a subset of anatomic concepts from existing ontologies and shaping them into a usable collection of anatomic identifiers for informatics interoperability."[^al-site] The project selected useful RadLex terms from radiology reports, organized them in an anatomic hierarchy, and added ontology cross-references, [laterality](/glossary/laterality.md), and sex phenotype.[^al-site] -Two properties are claimed for the result and are the point of the exercise. It is complete enough, containing "almost all clinically used anatomic terms." It is non-degenerate, with "no uncertainty as to which node represents a structure."[^al-site] Non-degeneracy is what makes the identifier usable as a join key. See [anatomic location](/glossary/anatomic-location.md) for the term itself and [the data model](/semantic-foundation/anatomic-locations/data-model.md) for the record shape. +The site claims coverage of "almost all clinically used anatomic terms." It also claims "no uncertainty as to which node represents a structure."[^al-site] Unambiguous identifiers can serve as join keys. See [anatomic location](/glossary/anatomic-location.md) and [the data model](/semantic-foundation/anatomic-locations/data-model.md). # Separable identity -Anatomy is one of the two axes of an [Observation](/glossary/observation.md), and the model keeps it separate from the other. The January 2026 status update states the atomic unit as "what plus where plus attributes: finding tag plus anatomic location plus lesion characteristics," and says anatomy is "baked into OIFM definitions and Observation objects."[^deck] The set is "curated to identify where findings are visualized on imaging exams," which is a narrower target than anatomy in general and explains why structures with no imaging appearance are absent.[^deck] +An [Observation](/glossary/observation.md) separates the finding from its location. The January 2026 update describes "what plus where plus attributes: finding tag plus anatomic location plus lesion characteristics," with anatomy "baked into OIFM definitions and Observation objects."[^deck] The set is "curated to identify where findings are visualized on imaging exams," excluding structures with no imaging appearance.[^deck] -Separating what from where is what lets a single [finding model](/glossary/finding-model.md) for a cyst serve the kidney, the liver, and the breast, and what lets the [Imaging Problem List](/glossary/imaging-problem-list.md) offer "precision filtering via anatomy-embedded definitions."[^deck] +A single [finding model](/glossary/finding-model.md) for a cyst can therefore apply to the kidney, liver, or breast. The [Imaging Problem List](/glossary/imaging-problem-list.md) uses this separation for "precision filtering via anatomy-embedded definitions."[^deck] # Where the identifiers are used @@ -58,11 +58,11 @@ Separating what from where is what lets a single [finding model](/glossary/findi | Finding and location [coding](/glossary/coding.md) | The coding pass generates search terms, searches the location index, and has a selector choose from the returned candidates, with assignment governed by a stated precedence ladder[^ipl-rules] | | Imaging Problem List viewer | Region and organ-cluster filters, and a body schematic whose zones are driven by the location's region and laterality[^viewer-plan] | -The rule that keeps this honest is stated with the assignment rules: every assigned identifier must exist in the set, and a structure absent from it is left unassigned rather than forced to a wrong code.[^ipl-rules] That discipline turns missing terms into a visible list of requests rather than silent mis-coding. See [RadLex integration](/semantic-foundation/anatomic-locations/radlex-integration.md) for where those requests go. +Every assigned identifier must exist in the set. Missing structures stay unassigned to avoid incorrect codes.[^ipl-rules] See [RadLex integration](/semantic-foundation/anatomic-locations/radlex-integration.md) for term requests. # What curation costs -A curated set is a maintained artifact, not a free one. The site's own roadmap names the standing content work: review the hierarchy, add, prune, and modify; edit and improve synonyms; complete SNOMED identification.[^al-site] It also names the companion effort that has not been built, "a companion for exam types based on LOINC/RadLex Playbook exam definitions that specify all included body parts for the exam," which remains the earliest written statement of the [exam type](/glossary/exam-type.md) goal.[^al-site] See [exam types](/semantic-foundation/exam-types/overview.md). +The site's roadmap calls for reviewing, adding, pruning, and modifying hierarchy nodes, improving synonyms, and completing SNOMED identification.[^al-site] It also proposes "a companion for exam types based on LOINC/RadLex Playbook exam definitions that specify all included body parts for the exam," the earliest written [exam type](/glossary/exam-type.md) goal.[^al-site] It remains unbuilt. See [exam types](/semantic-foundation/exam-types/overview.md). [^al-site]: anatomiclocations.org site homepage, rationale, approach, and roadmap [^deck]: Open Imaging Data Model 2026 Status Update, January 2026 diff --git a/knowledge/semantic-foundation/common-data-elements/cde-staging.md b/knowledge/semantic-foundation/common-data-elements/cde-staging.md index 6c6e2d8..f59abeb 100644 --- a/knowledge/semantic-foundation/common-data-elements/cde-staging.md +++ b/knowledge/semantic-foundation/common-data-elements/cde-staging.md @@ -1,10 +1,10 @@ --- type: Project Profile title: CDE staging -description: The CDEStaging repository, where informally authored candidate common data element definitions collect before the formal review pipeline, and how its content feeds finding models. +description: Candidate CDE definitions, report coverage gaps, and their conversion into finding models. tags: [semantic-foundation, cde, radelement, repositories, content] status: draft -generated: { by: claude-opus-5/claude-code, at: 2026-09-21T18:00:00Z } +generated: { by: codex/gpt-6, at: 2026-09-21T20:53:02Z } stale_after: 2027-09-21 sources: - id: readme @@ -50,7 +50,7 @@ sources: # What it is -`CDEStaging` is where candidate [common data element](/glossary/cde.md) definitions collect before anyone tries to make them official. Its README states the purpose in one line: "a staging area for definitions of radiology common data elements (CDEs) in JSON format ... prior to their entering the review pipeline."[^readme] The banner above that line gives the concrete goal: "A multi-vendor project to generate a near-complete set of CDE Sets to represent the findings in chest CT reports."[^readme] +`CDEStaging` collects candidate [common data element](/glossary/cde.md) definitions before formal review. Its README calls it "a staging area for definitions of radiology common data elements (CDEs) in JSON format ... prior to their entering the review pipeline."[^readme] The stated goal is "A multi-vendor project to generate a near-complete set of CDE Sets to represent the findings in chest CT reports."[^readme] Contributions are organized by contributor. The README says provisional definitions go in the `definitions` directory "with separate folders for participating vendors."[^readme] Three folders are named after participating vendors, five carry a contributor prefix combined with a modality and body region (CT chest, CT abdomen and pelvis, chest radiograph, knee MRI, and O-RADS), and one holds location value lists. @@ -69,11 +69,11 @@ The `definitions/` tree holds 463 files at that commit. The largest single collection is the CT chest folder, with 206 markdown files and 103 JSON files. -The JSON files are worth a note, because the README's framing suggests otherwise. They do not follow the ACR and RSNA `cde.schema.json`. They carry a finding name, a description, and a list of attributes typed as `choice` or `numeric` with named values, which is the shape a [finding model](/glossary/finding-model.md) uses rather than the shape a [CDE set](/glossary/cde-set.md) uses. Everything in this repository is a pre-submission draft in whatever form its author found convenient. +The JSON files use a name, description, and `choice` or `numeric` attributes with named values. This resembles a [finding model](/glossary/finding-model.md), rather than a [CDE set](/glossary/cde-set.md) conforming to `cde.schema.json`. All content is a pre-submission draft in its author's chosen format. # Two authoring conventions -The markdown definitions were written under two conventions that coexist and were never reconciled. +The markdown definitions use two unreconciled conventions. **Coded `.cde.md` files.** Fourteen files in one vendor folder follow a structured convention: a `# Finding:` heading, a `source` and a `coding` bullet carrying a [RadLex identifier](/glossary/radlex-id.md), then one `##` section per [attribute](/glossary/attribute.md), with coded values, numeric attributes declared as `float` with a unit, and multi-select attributes marked in the heading.[^cardiomegaly] @@ -114,15 +114,15 @@ The markdown definitions were written under two conventions that coexist and wer - **Course**: Retroesophageal / Pretracheal / Other ``` -Some of these folders hold only bare finding lists with no attributes at all, one line per finding name, which is how the chest radiograph and knee MRI folders are organized. +The chest radiograph and knee MRI folders contain bare finding lists, one name per line, without attributes. -`docs/Authoring.md` was meant to reconcile them. It is two sentences long, points at the upstream schema, and says "the authoring guide will be hosted here as well."[^authoring] It was never written. +`docs/Authoring.md` is a two-sentence stub pointing to the upstream schema. It says "the authoring guide will be hosted here as well."[^authoring] The guide was never written. # The report representation work -A second body of work in the repository asks a different question: given real report text, what does the existing definition set fail to capture? Four documents record the answers. +Four documents record what the definitions fail to capture from report text. -**The extraction process.** `docs/report_extraction_process.md` works one chest CT report end to end, turning its prose into "a list of mini-observations" of the form finding, attribute, value.[^extraction-process] It closes with two notes to self: finding, attribute, and value names need to match the project's own finding definitions, and blanket negative statements such as "Lungs are clear" need separate cataloguing. Both notes became the next two documents. +**The extraction process.** `docs/report_extraction_process.md` converts a chest CT report into "a list of mini-observations" containing a finding, attribute, and value.[^extraction-process] Its closing notes call for matching names to the definitions and cataloguing blanket negatives such as "Lungs are clear". The next two documents address those tasks. **Composite negative statements.** A corpus of roughly 830 words of real negative and composite report sentences, grouped by organ system, collected to work out how absent findings should be modeled.[^negatives] Many are not simple negations. "Absence of intravenous contrast limits sensitivity for detecting solid organ findings" is a statement about the exam, not about a finding, and it recurs throughout the abdomen section. @@ -136,19 +136,19 @@ Alongside them, `report_representation/structured_extractions/` holds 52 worked One vendor folder holds a roadmap table covering chest CT findings across nine organ-system sections: pulmonary, pleura, cardiovascular, lymphatic and endocrine, musculoskeletal, abdominal, lines and tubes, devices, and post-operative or treatment changes.[^roadmap] It has 100 finding rows. Each row carries the finding name, a frequency judgment of common, uncommon, or rare, a priority column, a status column holding links to any RadElement sets that already cover the finding, an "in V1" flag, and a RadLex identifier. -At the read commit, 22 rows are flagged for version 1, 18 distinct `RDES` sets are referenced, and 19 distinct RadLex identifiers appear. The table is the clearest single artifact tying informal staged content to the published [RadElement](/glossary/radelement.md) catalog and to [RadLex](/glossary/radlex.md), and it is where the project recorded which findings already had a governed definition and which did not. +At the read commit, 22 rows are flagged for version 1, 18 distinct `RDES` sets are referenced, and 19 distinct RadLex identifiers appear. It records which staged findings have governed definitions in [RadElement](/glossary/radelement.md) and mappings to [RadLex](/glossary/radlex.md). # The path to RadElement -There is no automated pipeline. The README and the authoring stub both point at `RSNA/ACR-RSNA-CDEs` for the canonical `cde.schema.json` and a sample set,[^readme][^authoring] and the roadmap links findings to the RadElement sets that cover them, but nothing in the repository describes a mechanical route from a staged definition to a submitted one. The process is manual curation: draft informally here, harmonize, then submit through the ACR and RSNA review pipeline. See [CDEs and RadElement](/semantic-foundation/common-data-elements/cdes-and-radelement.md). +The README and authoring stub point to `RSNA/ACR-RSNA-CDEs` for `cde.schema.json` and a sample set.[^readme][^authoring] The roadmap links existing RadElement sets, but no automated submission pipeline exists. Authors draft, harmonize, and submit through ACR and RSNA review. See [CDEs and RadElement](/semantic-foundation/common-data-elements/cdes-and-radelement.md). # How it feeds finding models -The staged content is an input to the finding model corpus, and this connection is more developed than the one to RadElement. +Finding model conversion is more developed than RadElement submission. `findingmodels` issue 15, "Bring in CDE Staging MD content," opened 2025-05-28 and still open, asks for a script that takes a markdown file, checks whether a definition already exists for that finding, and either converts it or merges it into the existing definition, reusing element identifiers and synonyms where possible, and adding the appropriate contributor.[^fm-issue-15] -That work exists on the `content/chestcts` branch of `findingmodels`, unmerged at commit `0472a46`. A triage script reads the CT chest folder of `CDEStaging` and compares each source against the finding model search index;[^chestcts-triage] a conversion script then runs the survivors through a multi-agent pipeline of merge, create, and review steps and writes validated finding model JSON.[^chestcts-convert] Both scripts default to the same `CDEStaging` CT chest directory as input. The content direction is covered in [finding model content direction](/roadmap/finding-model-content-direction.md). +That work exists on the `content/chestcts` branch of `findingmodels`, unmerged at commit `0472a46`. A triage script compares CT chest sources with the finding model search index.[^chestcts-triage] A conversion script uses merge, create, and review agents to write validated JSON.[^chestcts-convert] Both default to the `CDEStaging` CT chest directory. See [finding model content direction](/roadmap/finding-model-content-direction.md). # Branch state and open issues diff --git a/knowledge/semantic-foundation/common-data-elements/cdes-and-radelement.md b/knowledge/semantic-foundation/common-data-elements/cdes-and-radelement.md index e980fb2..8339273 100644 --- a/knowledge/semantic-foundation/common-data-elements/cdes-and-radelement.md +++ b/knowledge/semantic-foundation/common-data-elements/cdes-and-radelement.md @@ -1,10 +1,10 @@ --- type: Concept title: CDEs and RadElement -description: What ACR and RSNA common data elements are, where they are published and schematized, where the two published schema descriptions disagree, and how the Open Imaging Data Model uses them today. +description: Governed CDE definitions, RadElement publication, schema differences, and OIDM usage. tags: [semantic-foundation, cde, radelement, schema, fhir] status: draft -generated: { by: claude-opus-5/claude-code, at: 2026-09-21T18:00:00Z } +generated: { by: codex/gpt-6, at: 2026-09-21T20:53:02Z } sources: - id: radelement-site resource: https://radelement.org/ @@ -61,16 +61,16 @@ The public API at `api3.rsna.org/radelement/v1/sets` listed 281 sets on 2026-09- The `common_data_elements` repository is the Open Imaging Data Model (OIDM) local snapshot of that registry. Its README describes it as "a periodically updated version of the Common Data Element definitions as stored and maintained in the ACR/RSNA RadElement web site," formatted as JSON for easy consumption.[^cde-readme] At commit `35536d8` it holds 145 set definitions under `definitions/`, one file per set named `RDES###.cde.json`, and the README indexes all 145 alphabetically by clinical topic with their set identifiers. -The snapshot is data, not code. It is used as a reference corpus rather than as a dependency, and it is not regenerated automatically. See [the repository map](/repositories/repository-map.md) for its status. +The snapshot is a reference corpus, not a code dependency. It is not regenerated automatically. See [the repository map](/repositories/repository-map.md). # The schema, and the two places that claim it -Stated plainly: the canonical CDE JSON Schema exists in two repositories, under three filenames, and all three declare the same identifier. +Three CDE JSON Schema files in two repositories declare the same identifier. - `RSNA/ACR-RSNA-CDEs` carries `cde.schema.json` at its repository root. `CDEStaging` names this file as the canonical schema and points authors at it.[^staging-readme] The file is byte-identical on the `master` branch and on the `next-gen-2026` branch, so the next-generation work has not changed it.[^acr-schema][^acr-schema-ng] - `common_data_elements` carries `schema/cde.schema-1.0.json` and `schema/cde.schema-1.1.json`, and its README says the schemas are the ones "maintained at the development repo."[^cde-readme] -The upstream `cde.schema.json` is byte-identical to `cde.schema-1.1.json`, the newer of the two local copies. The definitions in the snapshot conform to version 1.0, which the README states explicitly.[^cde-readme] So the schema published as canonical upstream is a version ahead of the data published beside it. +The upstream `cde.schema.json` is byte-identical to local version 1.1. The snapshot definitions conform to 1.0, one version behind the upstream schema.[^cde-readme] All three files are JSON Schema draft-07 and all three declare the same `$id`: @@ -96,11 +96,11 @@ The JSON Schema versions close part of the gap and leave part of it open. `image # CDE-labeled FHIR Observations -The idea that ties CDEs to the rest of OIDM is the [CDE-labeled FHIR Observation](/glossary/cde-labeled-fhir-observation.md): one radiology finding expressed as a FHIR [Observation](/glossary/observation.md) whose codes come from a CDE set, its elements, and their values. +A [CDE-labeled FHIR Observation](/glossary/cde-labeled-fhir-observation.md) expresses one finding as a FHIR [Observation](/glossary/observation.md), coded using a CDE set, its elements, and their values. `FHIRSamples` implements the pattern concretely in a lung cancer screening scenario.[^fhirsamples] An AI-produced finding Observation carries `code.coding` pointing at the `radelement.org` system with the set code `RDES195` for pulmonary nodule; each `component` entry carries an element code such as `RDE1717` with the chosen value code, for example `RDE1717.1`, as `valueCodeableConcept`. A second Observation repeats the same finding with `status` changed from `preliminary` to `final` to mark radiologist confirmation, and a third is `derivedFrom` both the imaging study and the radiologist's finding, carrying a Lung-RADS category (`RDES267`) as a component. -That chain, set code to element code to value code, all through one coding system, is what "CDE-labeled" means in practice. See [FHIR mapping](/data-structures/fhir-mapping.md) for where the current data structures stand against it, and [lineage repositories](/history/lineage-repositories.md) for the full example. +"CDE-labeled" refers to this chain of set, element, and value codes within one coding system. See [FHIR mapping](/data-structures/fhir-mapping.md) for current mappings and [lineage repositories](/history/lineage-repositories.md) for the full example. # How OIDM uses CDEs today @@ -126,7 +126,7 @@ Across the corpus, `RADELEMENT` is the smallest of the index code systems in use **As the standards-track counterpart of finding models.** Finding models are authored quickly and are not balloted; CDEs are governed and are. [Finding models and CDEs](/semantic-foundation/finding-models/finding-models-and-cdes.md) covers the relationship. -One thing worth recording because it is easy to assume otherwise: the current extraction prototypes do not label with RadElement codes. `IPL-MVP-ExtractionAndLabeling` maps extracted findings to a curated list of 15 finding models keyed by OIFM identifier, with no `RDES` or `RDE` code anywhere in the repository,[^ipl-mvp] and the `imaging-problem-list` repository contains no RadElement codes either. The CDE-labeled Observation pattern is implemented in the lineage samples and documented, not in the working extraction pipelines. +Current extraction prototypes use OIFM identifiers. `IPL-MVP-ExtractionAndLabeling` maps findings to 15 curated models and contains no `RDES` or `RDE` codes.[^ipl-mvp] Neither does `imaging-problem-list`. The CDE-labeled pattern remains in documentation and lineage samples. # The next generation diff --git a/knowledge/semantic-foundation/common-data-elements/index.md b/knowledge/semantic-foundation/common-data-elements/index.md index 9dd3c6f..1c50d39 100644 --- a/knowledge/semantic-foundation/common-data-elements/index.md +++ b/knowledge/semantic-foundation/common-data-elements/index.md @@ -1,5 +1,5 @@ # Common data elements -* [CDEs and RadElement](./cdes-and-radelement.md) - What ACR and RSNA common data elements are, where they are published and schematized, where the two published schema descriptions disagree, and how the Open Imaging Data Model uses them today. -* [CDE staging](./cde-staging.md) - The CDEStaging repository, where informally authored candidate common data element definitions collect before the formal review pipeline, and how its content feeds finding models. +* [CDEs and RadElement](./cdes-and-radelement.md) - Governed CDE definitions, RadElement publication, schema differences, and OIDM usage. +* [CDE staging](./cde-staging.md) - Candidate CDE definitions, report coverage gaps, and their conversion into finding models. * [Next-generation CDE vocabulary](./next-generation-vocabulary.md) - What the next-gen-2026 branch of the ACR-RSNA-CDEs repository defines, covering the working vocabulary, the graph shape, the anatomy axis, the display grammar, and the alpha implementation, recorded as in-progress design work in an allied project. diff --git a/knowledge/semantic-foundation/exam-types/overview.md b/knowledge/semantic-foundation/exam-types/overview.md index 9e57c87..1f08e4d 100644 --- a/knowledge/semantic-foundation/exam-types/overview.md +++ b/knowledge/semantic-foundation/exam-types/overview.md @@ -74,7 +74,7 @@ Two consequences matter for anyone reading exam type material in these repositor Three uses exist now. All three run on a bare LOINC code with no exam type object behind it. -**As the exam header of an [Exam Finding List](/glossary/exam-finding-list.md).** The specification requires that the structure "must also have basic information (keyed by a curated list of LOINC codes) about what exam this is."[^ipl-readme] In the data this is `examInfo.studyLoincCode` beside `studyIdentifier`, `studyDateTime`, and a free-text `studyDescription`; the domain notes give `72133-2` for CT Abdomen and Pelvis Without Contrast as the worked example.[^ipl-claude] The [Imaging Problem List](/glossary/imaging-problem-list.md) carries the same pair forward on every observation as `exam_type_code` and `exam_type_display`, which is how a finding's time course is labelled by study. The curated list of LOINC codes that the specification refers to has never been published. +**As the exam header of an [Exam Finding List](/glossary/exam-finding-list.md).** The imaging-problem-list README requires that the structure "must also have basic information (keyed by a curated list of LOINC codes) about what exam this is."[^ipl-readme] In the data this is `examInfo.studyLoincCode` beside `studyIdentifier`, `studyDateTime`, and a free-text `studyDescription`; the domain notes give `72133-2` for CT Abdomen and Pelvis Without Contrast as the worked example.[^ipl-claude] The [Imaging Problem List](/glossary/imaging-problem-list.md) carries the same pair forward on every observation as `exam_type_code` and `exam_type_display`, which is how a finding's time course is labelled by study. The curated list of LOINC codes that the README refers to has never been published. **As the fallback [body region](/glossary/body-region.md) for a finding with no anatomy.** The anatomic location assignment rules used by the extraction and coding platform put the exam at the bottom of a three-step precedence ladder. Explicit anatomy in the report text or section context wins; otherwise the finding's own target organ; otherwise, for findings with no anatomic noun at all such as "soft tissue mass" or "generalized osteoporosis," the rules "fall back to the exam-scoped coarse region (thorax, abdomen, head, ...), sided only if the exam is sided."[^ipl-rules] The exam also supplies [laterality](/glossary/laterality.md) under a stated source priority of explicit text side, then sided-exam side, then generic, so that a left shoulder radiograph sides its findings while an abdominal CT never introduces a side. The rules carry a small exam-to-region table of RadLex identifiers, reproduced in [existing building blocks](/semantic-foundation/exam-types/existing-building-blocks.md). diff --git a/knowledge/semantic-foundation/finding-models/authoring-workflow.md b/knowledge/semantic-foundation/finding-models/authoring-workflow.md index b2f1386..6aeaf40 100644 --- a/knowledge/semantic-foundation/finding-models/authoring-workflow.md +++ b/knowledge/semantic-foundation/finding-models/authoring-workflow.md @@ -1,10 +1,10 @@ --- type: Guide title: Authoring workflow -description: How finding models are created and reviewed today, through the Forge web application, the findingmodel-ai command line, the three agent skills, and the validator that gates every commit. +description: Finding model authoring, review, and validation through Forge, the CLI, and repository skills. tags: [semantic-foundation, finding-models, authoring, workflow, guide] status: draft -generated: { by: claude-opus-5/claude-code, at: 2026-09-21T17:00:00Z } +generated: { by: codex/gpt-6, at: 2026-09-21T20:53:02Z } sources: - id: forge-workflow resource: https://github.com/openimagingdata/FindingModelForge/blob/15d9ebcf64734b889081feed4d645a0afca67e61/docs/finding-model-creation-workflow.md @@ -40,7 +40,7 @@ sources: # Two front doors -A [finding model](/glossary/finding-model.md) reaches the corpus through one of two routes. A web application handles one finding at a time with a person driving. A set of agent skills in the content repository handles conversational and bulk authoring with a person reviewing. Both produce the same JSON, and both end at the same validator. +Authors create [finding models](/glossary/finding-model.md) through Forge or repository agent skills. Forge handles one finding with a person driving. Skills support conversational and bulk authoring with human review. Both produce JSON checked by the same validator. # Finding Model Forge @@ -55,7 +55,7 @@ A draft carries the user, the name, the raw inputs, the server-generated JSON, a # The findingmodel-ai command line -The `findingmodel-ai` package is the scriptable half of the same capability, installable from PyPI and configured with an API key for at least one model provider.[^ai-readme] Three commands cover the common path. +Install `findingmodel-ai` from PyPI and configure an API key for at least one provider.[^ai-readme] Its main authoring commands are: ```bash findingmodel-ai make-info "pneumothorax" # name to description and synonyms @@ -67,7 +67,7 @@ The same functions are available as a Python API, and an optional web-search key # Agent skills in the content repository -Three skills live under `.claude/skills/` in `findingmodels` and divide the work by shape of the job. +Three skills in `findingmodels/.claude/skills/` handle authoring and review. | Skill | Use it when | Shape | |---|---|---| @@ -75,7 +75,7 @@ Three skills live under `.claude/skills/` in `findingmodels` and divide the work | `finding-batch` | a list, CSV, or directory of source content | triage the whole batch, then draft each finding in an isolated sub-agent | | `finding-review` | existing definition files named by path, glob, or directory | lint, then review each file in an isolated sub-agent, then human sign-off | -Each skill file is deliberately thin. All rules, command cheatsheets, and procedures live in `prompts/fragments/`, and the skill loads the fragment named at each step rather than carrying the rules itself.[^skill-author] Sixteen fragments cover naming, synonym rules, scope and specificity, presence and change, the associated-versus-component distinction, search and triage, mechanical lint, the quality checklist, review file generation, CSV writeback, and handoff to the review interface. `core_concept.md` is the orientation fragment every skill reads first; it states the two guiding principles as "a finding is a noun phrase; everything else is an attribute" and "findings exist in time."[^core-concept] A companion `defaults.yml` holds the contributor and organization defaults, the permitted source codes for identifier minting, and suggested tag sets per campaign, which the skill confirms with the user at session start. +Skills load rules, command cheatsheets, and procedures from `prompts/fragments/` as needed.[^skill-author] Sixteen fragments cover naming, synonyms, scope, presence, change, associated versus component findings, search, triage, lint, quality review, review files, CSV writeback, and review-interface handoff. Every skill starts with `core_concept.md`, whose principles are "a finding is a noun phrase; everything else is an attribute" and "findings exist in time."[^core-concept] At session start, the skill confirms defaults from `defaults.yml` for contributor, organization, identifier source codes, and campaign tags. Three constraints run through all three skills. @@ -87,9 +87,9 @@ Review runs mechanical lint first, with auto-fix for trivially fixable errors su # The gate every route passes -Whatever produced the JSON, it lands in `defs/` and is committed. A pre-commit hook runs `uv run scripts/validator.py --with-git-adds` on every commit, serially, whether or not a definition was staged.[^precommit] The validator validates every definition against the format, fails on a duplicate finding or attribute identifier, reformats the JSON in place, regenerates the markdown render in `text/`, rewrites the corpus index, rewrites `ids.json`, and stages all of it. See [identifiers](/semantic-foundation/finding-models/identifiers.md) for what the duplicate check protects. +A pre-commit hook runs `uv run scripts/validator.py --with-git-adds` serially on every commit, even without staged definitions.[^precommit] It validates all `defs/` files, rejects duplicate finding or attribute identifiers, reformats JSON, rebuilds `text/`, the corpus index, and `ids.json`, then stages the results. See [identifiers](/semantic-foundation/finding-models/identifiers.md). -The practical consequence is that the generated artifacts cannot drift from the source. It is also why the repository's guidance forbids editing them by hand. +Regeneration keeps derived files consistent with definitions. Repository guidance prohibits editing them by hand. # Requests and cleanup diff --git a/knowledge/semantic-foundation/finding-models/content-catalog.md b/knowledge/semantic-foundation/finding-models/content-catalog.md index afce140..26bc061 100644 --- a/knowledge/semantic-foundation/finding-models/content-catalog.md +++ b/knowledge/semantic-foundation/finding-models/content-catalog.md @@ -1,10 +1,10 @@ --- type: Project Profile title: Finding model content catalog -description: "The findingmodels repository: what is in the corpus, where its identifiers and generated renders live, the conventions that govern it, how to browse it, and the content batches in flight on unmerged branches." +description: Published finding model content, repository conventions, browsing tools, and unmerged batches. tags: [semantic-foundation, finding-models, content, repository, project-profile] status: draft -generated: { by: claude-opus-5/claude-code, at: 2026-09-21T17:00:00Z } +generated: { by: codex/gpt-6, at: 2026-09-21T20:53:02Z } stale_after: 2027-09-21 sources: - id: fm-claude @@ -38,7 +38,7 @@ sources: # What the repository is -`findingmodels` is the content repository of the Open Imaging Data Model (OIDM). It holds finding model definitions and nothing that executes them. The format those definitions obey lives in a different repository, `findingmodel`, and is described in [the format document](/semantic-foundation/finding-models/finding-model-format.md). +`findingmodels` holds Open Imaging Data Model (OIDM) definitions. The separate `findingmodel` repository defines their format, described in [the format document](/semantic-foundation/finding-models/finding-model-format.md). Read at commit `4475ac1` on `main`, dated 2026-04-28, the repository contains 2,382 definitions. @@ -65,13 +65,13 @@ Every identifier carries a three-or-four-letter organization segment recording w | `MGB` | MassGeneral Brigham | 47 | | `MSFT` | Microsoft | 31 | -Four in five definitions are Gamuts-derived. That fact shapes everything about the corpus's current state: the [Radiology Gamuts Ontology](/glossary/gamuts.md) is a differential-diagnosis resource rather than a finding vocabulary, so its imported entries carry patterns that do not sit comfortably as findings. The [content direction roadmap](/roadmap/finding-model-content-direction.md) records the stated intent that the [MGB exam-oriented sub-taxonomies](/semantic-foundation/finding-models/finding-taxonomies.md) replace many of them. +Four in five definitions derive from the [Radiology Gamuts Ontology](/glossary/gamuts.md); the Radiology Gamuts Ontology is a differential-diagnosis resource rather than a finding vocabulary, so its imported entries carry patterns that do not sit comfortably as findings. The [content direction roadmap](/roadmap/finding-model-content-direction.md) records the stated intent that the [MGB exam-oriented sub-taxonomies](/semantic-foundation/finding-models/finding-taxonomies.md) replace many of them. Two further organizations, `RSNA` and `ACR`, are registered in the package's seeded organization list but have contributed no definitions under their own codes.[^base-orgs] Individual contributors appear on definitions as `Person` records with a GitHub username, an email address, and an organization code; organizations appear as `Organization` records with a name, a code, and a URL. # Conventions -The repository's own guidance file states the rules that govern changes.[^fm-claude] +The repository guidance sets these rules.[^fm-claude] - Three artifacts are auto-generated and must never be hand-edited: `text/*.md`, `index.md`, and `ids.json`. They are rebuilt from `defs/` by `uv run scripts/validator.py`. - Every finding identifier must be unique, and every attribute identifier must be unique across all files, not merely within one. The validator fails the commit if either check fails. @@ -85,7 +85,7 @@ A separate open plan, the definition cleanup plan, catalogs the conventions the # How to browse -Three routes exist, at different levels of convenience. +Browse through the repository, catalog site, or search tools. - **The repository.** Read `index.md` for the whole corpus as one table, then follow its links into `text/` for a rendered definition or `defs/` for the JSON. - **The catalog site.** `finding-models-site` is a static Astro site that pulls the content repository in as a git submodule and renders `/models/` and `/models/[slug]` pages at build time. It is published at [openimagingdata.github.io/finding-models-site](https://openimagingdata.github.io/finding-models-site/) and profiled in [applications](/applications/finding-models-site.md). @@ -93,7 +93,7 @@ Three routes exist, at different levels of convenience. # Content in flight -Six branches carry unmerged content work. None has an open pull request, and none is on `main`. The figures below are branch-to-`main` differences as of the dates given. +Six content branches remain unmerged with no open pull requests. Counts compare each branch with `main` at the stated dates. | Branch | Tip | New definitions | What it is | |---|---|---:|---| @@ -104,9 +104,9 @@ Six branches carry unmerged content work. None has an open pull request, and non | `findingmodels-metadata` | 2026-06-01 | 0 | Applies an approved enrichment baseline to 78 existing definitions and adds no new ones. | | `taxonomy-export-2026-08-15` | 2026-08-15 | 0 | Replaces `lists/` with the six MGB exam-oriented sub-taxonomy files. | -The chest CT branch is the largest by far and the least complete: its own progress document records 205 source items split into 21 chunks of ten, with chunk 1 done and chunks 2 through 21 pending.[^chestcts] The head CT branch's plan document is marked complete for the soft tissue category, which produced four new models and nine mappings onto existing ones, with identifiers written back to the source list and the validator run clean.[^headcts] +The chest CT progress document lists 205 sources in 21 chunks of ten. Chunk 1 is done, with 2 through 21 pending.[^chestcts] The head CT soft-tissue plan is complete, with four new models and nine mappings to existing models. Identifiers were written back to the source list and validation passed.[^headcts] -Two consequences follow. First, the published corpus of 2,382 understates by roughly 2,400 the number of definitions that have been drafted somewhere. Second, the JSON schema file in `schema/` is being extended independently on three of these branches, with nothing landed on `main`. +Roughly 2,400 definitions have been drafted beyond the 2,382 published models. Three branches also extend `schema/` independently, with no changes merged into `main`. Ten issues are open on the repository. Five request further content batches, including RadElement-derived definitions, chest CT and chest radiograph device lists, abdomen CT findings, knee MRI findings, and CDEStaging markdown content. Four cover tooling, including running the validator as a GitHub action and locking `main`. One asks for a static site with a landing page. diff --git a/knowledge/semantic-foundation/finding-models/enrichment-pipeline.md b/knowledge/semantic-foundation/finding-models/enrichment-pipeline.md index aa731a4..c23dc92 100644 --- a/knowledge/semantic-foundation/finding-models/enrichment-pipeline.md +++ b/knowledge/semantic-foundation/finding-models/enrichment-pipeline.md @@ -4,7 +4,7 @@ title: Metadata enrichment pipeline description: How finding model definitions get structured metadata assigned by language models, what shipped, what the canonical rewrite on the work edge changes, and why it has not been released. tags: [semantic-foundation, finding-models, enrichment, metadata, concept] status: draft -generated: { by: claude-opus-5/claude-code, at: 2026-09-21T17:00:00Z } +generated: { by: codex/gpt-6, at: 2026-09-21T20:53:02Z } sources: - id: prd resource: https://github.com/openimagingdata/findingmodel/blob/75afd39a400419dcfaf7c8d4a34f065b4d804e0d/docs/finding-enrichment-prd.md @@ -46,7 +46,7 @@ sources: # The problem -A [finding model](/glossary/finding-model.md) definition written by a person carries a name, a description, synonyms, and [attributes](/glossary/attribute.md). It usually does not carry ontology codes, anatomic locations, or the classification facts that make a corpus of 2,382 definitions browsable: which body region, which subspecialty reads it, which modalities show it, whether it is a finding or a diagnosis. Assigning those by hand across the corpus is not practical, so the project built a language-model pipeline to propose them. +Authors supply [finding model](/glossary/finding-model.md) names, descriptions, synonyms, and [attributes](/glossary/attribute.md). Ontology codes, locations, body regions, subspecialties, modalities, and finding-versus-diagnosis classification are often missing. A language-model pipeline proposes these metadata across the 2,382-definition corpus. Two generations of that pipeline exist. The first shipped and is on `main`. The second is a rewrite on the work edge that has not been released. @@ -68,11 +68,11 @@ The goal is stated as making structured metadata "canonical `FindingModel` state ## Seven agents, not one -Where the optimization proposal recommended one unified classifier, the rewrite went the other way. A decision record on the branch states that assignment is performed by seven focused agents, each with a lean external prompt and each emitting a typed decision: entity type, etiology and tempo, patient applicability, subspecialty domain, modality applicability, ontology decision, and anatomy decision. The reason given is that "focused agents allow concise/clean prompts, per-field evaluation, and targeted tuning of weak fields," accepting more model calls per finding as the cost.[^adr2] +Where the optimization proposal recommended one unified classifier, the rewrite went the other way. The rewrite uses seven agents with external prompts and typed outputs: entity type, etiology and tempo, patient applicability, subspecialty domain, modality applicability, ontology decision, and anatomy decision. ADR 0002 states that "focused agents allow concise/clean prompts, per-field evaluation, and targeted tuning of weak fields," at the cost of more calls.[^adr2] -An orchestrator, `assign_metadata()`, gathers candidates and assembles the decisions but "never decides a field value itself."[^agent-arch] It runs in stages: candidate gathering from ontology search and the anatomic index, bounded by a configurable limit defaulting to 15; then the ontology and anatomy agents, which select among those candidates rather than generating values; then entity type, patient applicability, subspecialty, and modality in parallel; then etiology and tempo, which runs last because it depends on entity type and is validated against it. Two search-agent pairs feed candidates and never set final metadata. An auditor is advisory only. +`assign_metadata()` assembles decisions but "never decides a field value itself."[^agent-arch] It gathers ontology and anatomy candidates with a configurable limit defaulting to 15, then asks ontology and anatomy agents to select from them. Entity type, patient applicability, subspecialty, and modality run in parallel. Etiology and tempo run last, depending on and validated against entity type. Two search-agent pairs supply candidates without setting metadata. An auditor provides advice only. -Each agent has its own component evaluation, which is what makes per-field tuning possible. +Each agent has a component evaluation for tuning its fields. ## Releasing without breaking anyone @@ -80,13 +80,13 @@ A third decision record covers distribution. Two DuckDB artifacts are published # Why it has not shipped -The branch measures itself and reports failure. A prompt-improvement document dated 2026-06-03 records raising the expected time course score from 0.69 to between 0.76 and 0.78, and the etiologies score from 0.74 to between 0.91 and 0.93 by scoring errors asymmetrically according to clinical consequence. It then states that overall readiness remains a failure because age profile and index codes are still below the quality floor.[^tempo] +The 2026-06-03 prompt-improvement document reports expected time course scores rising from 0.69 to between 0.76 and 0.78 and etiology from 0.74 to between 0.91 and 0.93. Scoring weighted errors asymmetrically by clinical consequence. Age profile and index codes still failed the quality floor, so overall readiness failed.[^tempo] -The index codes weakness was traced separately. At roughly 0.674 against a floor of 0.85 it was the weakest field, and the cause was missing RadElement coverage in the ontology search. Adding that coverage alone reached about 0.736, which the document calls insufficient; the approach that followed splits searchable source codes from codes carried forward.[^index-codes] +Index codes scored about 0.674 against a 0.85 floor, the weakest field, and the cause was missing RadElement coverage in the ontology search. Adding it raised the score to about 0.736, still insufficient. Subsequent work separates searchable source codes from carried-forward codes.[^index-codes] The active plan on the branch is therefore not a corpus run. Its stated goal is to get the branch and the sibling data repository "to a coherent, reviewable, git-clean state so we can move toward supervised corpus enrichment," and it says so explicitly: "The immediate milestone is not a broad corpus run."[^current-plan] Five ordered commits cover documentation consolidation, review-evidence fixtures and gate validation tests, tool and prompt refactoring, data-repository apply tooling, and the approved baseline. The plan also records "No commits are made without explicit permission." -The human review evidence it protects is specific: 150 unique reviewed records and 180 review events, with a latest effective status of 67 approved and 83 requiring feedback, up from an original 46 approved after a targeted follow-up pass updated 21 records. +Review evidence covers 150 unique records and 180 events. Current effective statuses are 67 approved and 83 requiring feedback. A follow-up pass updated 21 records, increasing approvals from 46 to 67. # The data side diff --git a/knowledge/semantic-foundation/finding-models/finding-model-format.md b/knowledge/semantic-foundation/finding-models/finding-model-format.md index d113a6e..a928a4a 100644 --- a/knowledge/semantic-foundation/finding-models/finding-model-format.md +++ b/knowledge/semantic-foundation/finding-models/finding-model-format.md @@ -1,10 +1,10 @@ --- type: Format Specification title: Finding model format -description: The released Open Imaging Finding Model record format, class by class and field by field, with a real example and the unreleased metadata fields on the work edge. +description: Released finding model fields, validation rules, examples, and unreleased metadata extensions. tags: [semantic-foundation, finding-models, oifm, schema, format] status: draft -generated: { by: claude-opus-5/claude-code, at: 2026-09-21T17:00:00Z } +generated: { by: codex/gpt-6, at: 2026-09-21T20:53:02Z } sources: - id: fm-model resource: https://github.com/openimagingdata/findingmodel/blob/75afd39a400419dcfaf7c8d4a34f065b4d804e0d/packages/findingmodel/src/findingmodel/finding_model.py @@ -84,7 +84,7 @@ An [attribute](/glossary/attribute.md) is one characterization axis. Two variant | `unit` | no | yes | no | string or null | | `index_codes` | yes | yes | no, `Ided` variants only | non-empty if present | -Three behaviors are enforced by validators rather than by field declarations. A choice attribute must carry at least two values. `max_selected` is repaired on input: it becomes 1 when missing or falsy, and is clamped to the number of values when larger or when the literal string `"all"` is supplied. And value codes are generated rather than supplied. +Validators require at least two choice values and generate value codes. They also repair `max_selected`: missing or falsy values become 1. Values above the number of choices, or the literal string `"all"`, become the number of choices. A `ChoiceValueIded` has `value_code` matching `^OIFMA_[A-Z]{3,4}_[0-9]{6}\.\d+$`, a `name`, an optional `description`, and optional `index_codes`. A validator overwrites each `value_code` with `.` counting from zero, so the first value of an attribute ends in `.0`, the second in `.1`, and so on. The prose mirror's example numbers values from `.1`, which does not match what the code writes or what the stored corpus contains. Real presence attributes carry `.0` for absent and `.1` for present. @@ -128,7 +128,7 @@ Contributors are `Person` or `Organization`.[^fm-contributor] An `Organization` } ``` -The `Laterality` attribute is elided here for length. Serialization conventions follow from the repository's validator: files are rewritten with consistent formatting on every commit, null and absent optional fields are omitted rather than written as `null`, and the generated markdown render, the repository index, and the identifier registry are regenerated from `defs/` and must never be hand-edited.[^fm-claude] +The example omits the `Laterality` attribute. On every commit, the validator reformats JSON, omits null and absent optional fields, and regenerates markdown, the corpus index, and the identifier registry from `defs/`. Generated files must not be edited manually.[^fm-claude] # On the work edge, not released @@ -147,9 +147,11 @@ The branch splits `finding_model.py` into `types/models.py`, `types/attributes.p | `age_profile` | `AgeProfile` | `applicability` is `all_ages` or a list of nine MeSH-derived age stages; `more_common_in` is an optional list of the same | | `sex_specificity` | `SexSpecificity` | male-specific, female-specific, sex-neutral | -Three changes ride along. Legacy values normalize on input, so title-cased body regions lowercase themselves, `Arm` and `Leg` become `upper_extremity` and `lower_extremity`, `ALL` becomes `whole_body`, modalities `CR` and `DX` become `XR`, and free-text age labels expand into an `AgeProfile`. Model-level entries in `index_codes` and `anatomic_locations` are rejected if `display` is empty. And canonical `index_codes` are narrowed to exact matches or clinically substitutable near-equivalents, with broader, narrower, and merely related candidates diverted to a separate review artifact. +The branch also normalizes legacy input. Body regions become lowercase, `Arm` and `Leg` become `upper_extremity` and `lower_extremity`, and `ALL` becomes `whole_body`. Modalities `CR` and `DX` become `XR`, and free-text ages expand into `AgeProfile`. -The branch's own readiness assessment does not pass. The prose reference for these fields, and the three places where it disagrees with the branch code, is in [the metadata fields extract](/references/oifm-metadata-fields-extract.md). The pipeline that populates them is described in [the enrichment pipeline](/semantic-foundation/finding-models/enrichment-pipeline.md), and the direction as a stated goal is in [format evolution](/roadmap/finding-model-format-evolution.md). +Model-level `index_codes` and `anatomic_locations` require nonempty `display`. Canonical `index_codes` accept exact or clinically substitutable matches. Broader, narrower, and related candidates go to a separate review artifact. + +The branch fails its readiness assessment. [The metadata fields extract](/references/oifm-metadata-fields-extract.md) records three disagreements between its code and prose. See [the enrichment pipeline](/semantic-foundation/finding-models/enrichment-pipeline.md) for assignment and [format evolution](/roadmap/finding-model-format-evolution.md) for planned work. [^fm-model]: finding_model.py, findingmodel main branch [^fm-contributor]: contributor.py, findingmodel main branch diff --git a/knowledge/semantic-foundation/finding-models/finding-taxonomies.md b/knowledge/semantic-foundation/finding-models/finding-taxonomies.md index 610f9c7..74cc18d 100644 --- a/knowledge/semantic-foundation/finding-models/finding-taxonomies.md +++ b/knowledge/semantic-foundation/finding-models/finding-taxonomies.md @@ -1,10 +1,10 @@ --- type: Reference title: MGB exam-oriented sub-taxonomies -description: The six exam-oriented finding hierarchies contributed by MassGeneral Brigham, their columns and hierarchy semantics, their row and match counts, and the triage they call for. +description: Six MGB exam-oriented finding hierarchies, their fields, counts, model matches, and pending triage. tags: [semantic-foundation, finding-models, taxonomy, content, reference] status: draft -generated: { by: claude-opus-5/claude-code, at: 2026-09-21T17:00:00Z } +generated: { by: codex/gpt-6, at: 2026-09-21T20:53:02Z } sources: - id: lists-readme resource: https://github.com/openimagingdata/findingmodels/blob/a30c3c95fa3943e7340ce87575f4b1b926987eb8/lists/README.md @@ -25,7 +25,7 @@ sources: # What they are -The MGB exam-oriented sub-taxonomies are six hierarchies of radiology finding names, contributed by MassGeneral Brigham and exported into the `findingmodels` repository on 2026-08-15. They live on the branch `taxonomy-export-2026-08-15`, read here at commit `a30c3c9`, which replaces the repository's earlier `lists/` directory wholesale and adds no finding model definitions of its own.[^lists-readme] +MassGeneral Brigham contributed six finding hierarchies, exported to `findingmodels` on 2026-08-15. The `taxonomy-export-2026-08-15` branch, read at `a30c3c9`, replaces `lists/` and adds no model definitions.[^lists-readme] Each file is a comma-separated table. Together they hold 3,789 rows, of which 1,028 already carry the identifier of an existing [finding model](/glossary/finding-model.md). @@ -69,7 +69,7 @@ Two columns sit deliberately outside that tree. `category` groups rows anatomica | `diagnosis` | 932 | | blank | 414 | -That split mirrors the distinction the finding model work elsewhere calls entity type, where a finding is what you see and a diagnosis is what you conclude. Blank rows are mostly the generic parents, which exist to hold a subtree rather than to be reported. +The values correspond to entity type elsewhere in the finding model work. The `finding_type` column's values are `observation` and `diagnosis`, where a finding is what you see and a diagnosis is what you conclude. Blank rows are mostly generic parents that group children without being reported. Two real rows show the shape: @@ -79,23 +79,23 @@ airway_abnormality,airway,,,,,OIFM_OIDM_449436 airspace_opacity,lung,lung_abnormality,"Air space opacity,Infiltrate,Airspace disease",observation,,OIFM_CDE_000225 ``` -The first is a top-level parent with no `finding_type`. The second is a child of `lung_abnormality`, typed as an observation, carrying three synonyms and matched to a definition that entered the corpus from the common data element work. +The first row is an untyped root. The second is an observation under `lung_abnormality`, with three synonyms and a CDE-derived model identifier. # Matching status and the triage task No identifiers were minted during the export. Filled rows were matched by exact name against `ids.json` across all branches, plus identifiers previously written back into the old lists.[^lists-readme] The README records a consequence of those earlier writebacks: "An ID can appear on two rows where those earlier writebacks mapped two findings onto one model." -The match rate varies enormously by file. Head CT is 86 percent matched and chest radiography 76 percent, because both areas have had content batches run against them. Mammography is 3 percent matched and the combined chest, abdomen, and pelvis CT file 10 percent, against 2,064 rows. +Head CT is 86 percent matched and chest radiography 76 percent after content batches in both areas. Mammography is 3 percent matched, and the 2,064-row combined CT file is 10 percent matched. -The README names the next task in one sentence: "Blank rows are the ones needing triage." That is 2,761 rows. Triage means deciding, for each, whether an existing model covers it under a different name, whether it needs a new model, or whether it is not a finding at all. No plan document in the repository yet assigns that work. +The README states: "Blank rows are the ones needing triage." Each of the 2,761 unmatched rows needs classification as an existing model under another name, a new model, or something other than a finding. No plan document in the repository yet assigns that work. # Why this matters The project lead stated on 2026-09-21 that the sub-taxonomies are the immediate direction for all finding model content, and that they are expected to replace many of the Gamuts-derived models that currently make up 1,933 of the corpus's 2,382 definitions. That statement is recorded in [the knowledgebase build plan](/plans/2026-09-20-knowledgebase-build-plan.md).[^build-plan] -This is a change in how content gets chosen. The Gamuts import brought in whatever the source ontology contained. The sub-taxonomies instead enumerate what a radiologist reading a particular exam type actually reports, organized by the exam type. A finding model corpus built against them would be scoped to assessable anatomy per modality, which is the scoping rule the authoring guidance already states. The stated direction, and what depends on it, is in [the content direction roadmap](/roadmap/finding-model-content-direction.md). +This is a change in how content gets chosen. The Gamuts import brought in whatever the source ontology contained. The sub-taxonomies instead enumerate what a radiologist reading a particular exam type actually reports, organized by the exam type. They would scope the corpus to anatomy assessable by modality, as authoring guidance requires. See [the content direction roadmap](/roadmap/finding-model-content-direction.md). -The glossary entry for the artifact type is [finding taxonomy](/glossary/finding-taxonomy.md). The files themselves are on the branch and are not copied into this knowledgebase. +See [finding taxonomy](/glossary/finding-taxonomy.md) for the artifact type. Source CSVs remain on the branch. [^lists-readme]: MGB exam-oriented sub-taxonomies README, taxonomy-export-2026-08-15 branch [^xr-chest]: xr_chest_findings.csv, taxonomy-export-2026-08-15 branch diff --git a/knowledge/semantic-foundation/finding-models/identifiers.md b/knowledge/semantic-foundation/finding-models/identifiers.md index 20a8d3d..ecb5d89 100644 --- a/knowledge/semantic-foundation/finding-models/identifiers.md +++ b/knowledge/semantic-foundation/finding-models/identifiers.md @@ -1,10 +1,10 @@ --- type: Reference title: Finding model identifiers -description: The OIFM and OIFMA identifier grammar, the organization-code segment and its registered values, value codes, how identifiers are minted and checked, and what stability is guaranteed. +description: Finding, attribute, and value identifier formats, generation, validation, and stability limits. tags: [semantic-foundation, finding-models, oifm, identifiers, reference] status: draft -generated: { by: claude-opus-5/claude-code, at: 2026-09-21T17:00:00Z } +generated: { by: codex/gpt-6, at: 2026-09-21T20:53:02Z } sources: - id: fm-model resource: https://github.com/openimagingdata/findingmodel/blob/75afd39a400419dcfaf7c8d4a34f065b4d804e0d/packages/findingmodel/src/findingmodel/finding_model.py @@ -28,7 +28,7 @@ sources: # The grammar -Three identifier forms carry the whole referencing scheme. Each is enforced by a regular expression on the Pydantic field that holds it.[^fm-model] +Pydantic fields enforce three identifier formats.[^fm-model] | Identifier | Regular expression | Example | Enforced on | |---|---|---|---| @@ -38,7 +38,7 @@ Three identifier forms carry the whole referencing scheme. Each is enforced by a The digit count is a module constant, `ID_LENGTH`, set to 6 and interpolated into all three patterns, so the three move together if it ever changes. -Reading one of these left to right gives you the whole address. `OIFMA_CDE_000632.1` is value 1 of attribute `000632`, contributed under organization code `CDE`. Because the attribute identifier is globally unique rather than scoped to its finding, an attribute code alone identifies the finding it belongs to, which is what makes the registry lookup in the next section possible. +`OIFMA_CDE_000632.1` identifies value 1 of attribute `000632` under organization `CDE`. A globally unique attribute identifier also identifies its parent finding through the registry. # The organization segment @@ -88,24 +88,24 @@ Identifiers are never written by hand. The authoring tools call the generators; `oifm_ids` maps each finding identifier to the file that defines it. `attribute_ids` maps each attribute identifier to a pair of file name and attribute name. Value codes are not registered separately, because they are derived from the attribute identifier. -The registry is rebuilt from `defs/` by `scripts/validator.py`, which walks every definition file, validates it, and fails if a finding identifier or an attribute identifier is seen twice.[^validator] That check is the only thing standing between random minting and a collision. A pre-commit hook runs the validator on every commit and stages the regenerated `ids.json`, the markdown renders, and the repository index, so a definition cannot land without the registry landing with it. +`scripts/validator.py` rebuilds the registry from `defs/`, validates each file, and rejects repeated finding or attribute identifiers.[^validator] This is the sole collision check. Every commit's pre-commit hook runs it and stages the registry, markdown renders, and corpus index. # Round-trip regeneration, issue 42 -The one documented way to lose an identifier is to round-trip a registered model through `FindingModelBase`. That class has no `oifm_id` field, so validating a stored definition against it silently discards the finding identifier and every attribute identifier. The helper that adds identifiers then sees none present and mints new ones.[^issue42] +Validating a registered model through `FindingModelBase`, which has no `oifm_id`, silently drops its finding and attribute identifiers. The helper then generates new ones.[^issue42] The issue, open since 2026-04-18, describes this as "a silent data-integrity hazard for any workflow that loads an existing `.fm.json` as a dict, needs to mutate it, and wants ID allocation for just the new part." It was hit in a review flow that added a change-from-prior attribute to a legacy model carrying only presence; the published finding identifier and the existing attribute identifier were both regenerated, and external references to them would have become dangling. The workaround shipped in the content work operates on the dictionary directly and allocates only the identifiers genuinely missing, building value codes from the attribute identifier by hand. Four candidate fixes are enumerated in the issue and none has been chosen. # Stability -What is documented amounts to this. +The documented stability rules are: - An identifier, once minted and committed, names one definition file, and the validator enforces that no second file claims it. - The registry admits that an identifier can legitimately appear on more than one row of an external list. The [MGB exam-oriented sub-taxonomies](/semantic-foundation/finding-models/finding-taxonomies.md) note that "an ID can appear on two rows where those earlier writebacks mapped two findings onto one model." That is a property of those files, not of the registry. - Nothing in the repository documents a deprecation, retirement, or supersession mechanism for an identifier. There is no version field on a finding model in the released format, and schema versioning is an open task rather than a shipped feature. - The round-trip defect above is the known exception to stability in practice, and it is unresolved. -Downstream systems rely on this. Exam Finding Lists store nothing but the identifier and a display string, so a changed identifier breaks the link between a stored [Observation](/glossary/observation.md) and its definition. The content repository is the single source of finding model identity for the catalog site, which consumes `defs/` as a git submodule, and for the extraction platform, which resolves identifiers through the published registry. See [the repository map](/repositories/repository-map.md). +Exam Finding Lists reference definitions by identifier and display string, so identifier changes break stored [Observation](/glossary/observation.md) links. The content repository supplies identity to the catalog site, which reads `defs/` through a git submodule, and to the extraction platform's registry lookups. See [the repository map](/repositories/repository-map.md). [^fm-model]: finding_model.py, findingmodel main branch [^base-orgs]: base_organizations.jsonl, findingmodel main branch diff --git a/knowledge/semantic-foundation/finding-models/index.md b/knowledge/semantic-foundation/finding-models/index.md index 697d949..b1e3a27 100644 --- a/knowledge/semantic-foundation/finding-models/index.md +++ b/knowledge/semantic-foundation/finding-models/index.md @@ -1,10 +1,10 @@ # Finding models -* [Why finding models](./why-finding-models.md) - Why the finding is OIDM's unit of data, what a finding model definition carries, what it deliberately is not, and how downstream structures consume it. -* [Finding model format](./finding-model-format.md) - The released Open Imaging Finding Model record format, class by class and field by field, with a real example and the unreleased metadata fields on the work edge. -* [Finding model identifiers](./identifiers.md) - The OIFM and OIFMA identifier grammar, the organization-code segment and its registered values, value codes, how identifiers are minted and checked, and what stability is guaranteed. -* [Finding model content catalog](./content-catalog.md) - The findingmodels repository: what is in the corpus, where its identifiers and generated renders live, the conventions that govern it, how to browse it, and the content batches in flight on unmerged branches. -* [MGB exam-oriented sub-taxonomies](./finding-taxonomies.md) - The six exam-oriented finding hierarchies contributed by MassGeneral Brigham, their columns and hierarchy semantics, their row and match counts, and the triage they call for. -* [Authoring workflow](./authoring-workflow.md) - How finding models are created and reviewed today, through the Forge web application, the findingmodel-ai command line, the three agent skills, and the validator that gates every commit. +* [Why finding models](./why-finding-models.md) - Why OIDM defines findings, what a finding model contains, and how observations use it. +* [Finding model format](./finding-model-format.md) - Released finding model fields, validation rules, examples, and unreleased metadata extensions. +* [Finding model identifiers](./identifiers.md) - Finding, attribute, and value identifier formats, generation, validation, and stability limits. +* [Finding model content catalog](./content-catalog.md) - Published finding model content, repository conventions, browsing tools, and unmerged batches. +* [MGB exam-oriented sub-taxonomies](./finding-taxonomies.md) - Six MGB exam-oriented finding hierarchies, their fields, counts, model matches, and pending triage. +* [Authoring workflow](./authoring-workflow.md) - Finding model authoring, review, and validation through Forge, the CLI, and repository skills. * [Metadata enrichment pipeline](./enrichment-pipeline.md) - How finding model definitions get structured metadata assigned by language models, what shipped, what the canonical rewrite on the work edge changes, and why it has not been released. * [Finding models and common data elements](./finding-models-and-cdes.md) - The workbench relationship: finding models as fast exploratory definitions that can graduate into governed ACR and RSNA common data elements, and the vocabularies both have to fit. diff --git a/knowledge/semantic-foundation/finding-models/why-finding-models.md b/knowledge/semantic-foundation/finding-models/why-finding-models.md index efff0f3..f3fe0c6 100644 --- a/knowledge/semantic-foundation/finding-models/why-finding-models.md +++ b/knowledge/semantic-foundation/finding-models/why-finding-models.md @@ -1,10 +1,10 @@ --- type: Concept title: Why finding models -description: Why the finding is OIDM's unit of data, what a finding model definition carries, what it deliberately is not, and how downstream structures consume it. +description: Why OIDM defines findings, what a finding model contains, and how observations use it. tags: [semantic-foundation, finding-models, oifm, concept] status: draft -generated: { by: claude-opus-5/claude-code, at: 2026-09-21T17:00:00Z } +generated: { by: codex/gpt-6, at: 2026-09-21T20:34:50Z } sources: - id: oifm-overview resource: https://github.com/openimagingdata/findingmodels/blob/2267d5d0b430ec7117a6da91efe6069da38c0056/prompts/overview.md @@ -26,39 +26,39 @@ sources: # The finding is the unit -A radiology report is prose. Somewhere inside it a radiologist has asserted that a thing is there, or is not there, or is bigger than it was. The Open Imaging Data Model (OIDM) takes that assertion as its atom, and a [finding model](/glossary/finding-model.md) is the reusable definition of one such assertion type. +A radiology report records assertions about findings, including their presence, absence, and change. The Open Imaging Data Model (OIDM) represents each finding type with a reusable [finding model](/glossary/finding-model.md). -The reason to define findings rather than reports is stated plainly in the overview note that governs authoring: finding models "turn that unstructured language into structured, machine-accessible observation objects, each linked to a rich knowledge base of clinical context."[^oifm-overview] An agent reads a report, matches each finding it recognizes to a definition, and emits an [Observation](/glossary/observation.md) tagged with the finding type and the values of its [attributes](/glossary/attribute.md). +Finding models "turn that unstructured language into structured, machine-accessible observation objects, each linked to a rich knowledge base of clinical context."[^oifm-overview] An agent matches report findings to definitions and emits an [Observation](/glossary/observation.md) with a finding type and [attribute](/glossary/attribute.md) values. -The second reason is time. "A radiology report is a snapshot, but the findings it describes persist across exams. A pleural effusion seen today may be the same one from last week, now larger."[^oifm-overview] Two reports written a year apart by two radiologists at two institutions can only be compared if both name the same thing the same way. That shared naming is what a finding model supplies, and it is why the [Imaging Problem List](/glossary/imaging-problem-list.md) can organize a patient's history by finding rather than by date. +"A radiology report is a snapshot, but the findings it describes persist across exams. A pleural effusion seen today may be the same one from last week, now larger."[^oifm-overview] Shared definitions let the [Imaging Problem List](/glossary/imaging-problem-list.md) group observations by finding across exams and institutions. # What a finding is, and is not -The scope is broader than pathology. The overview note counts as findings: pathologic entities, physiologic observations, devices and hardware, postsurgical states, anatomic variants, and image quality problems. It also refuses to separate description from diagnosis. "Diagnostic terms are first-class findings, do not question whether a diagnosis 'should' be a finding."[^oifm-overview] Both "bilateral perihilar opacities" and "pulmonary edema" are modeled, because radiologists write both. +Findings include pathologic entities, physiologic observations, devices and hardware, postsurgical states, anatomic variants, and image quality problems. The authoring overview includes diagnoses: "Diagnostic terms are first-class findings, do not question whether a diagnosis 'should' be a finding."[^oifm-overview] Both "bilateral perihilar opacities" and "pulmonary edema" qualify. -The test is whether a radiologist would write "there is X" or "no X" as a standalone statement. That test excludes a state of a finding ("stable cardiac silhouette"), a qualified version of one ("large pleural effusion"), normal anatomy, radiographic signs and interpretation techniques, exam metadata, clinical history, and recommendations. The guiding principle is that "a finding is a noun phrase; everything else is an attribute."[^oifm-overview] The full treatment, with its worked examples of too broad, too narrow, and right level, is in [the overview extract](/references/oifm-overview-extract.md). +The test is whether a radiologist would write "there is X" or "no X" as a standalone statement. It excludes finding states such as "stable cardiac silhouette", qualified findings such as "large pleural effusion", normal anatomy, radiographic signs, interpretation techniques, exam metadata, clinical history, and recommendations. The principle is that "a finding is a noun phrase; everything else is an attribute."[^oifm-overview] The [overview extract](/references/oifm-overview-extract.md) has examples of appropriate scope. -Negative assertions are inside the scope, not outside it. When a report says "no fracture," that is an active observation recorded as [presence](/glossary/presence.md) absent, which means the finding was looked for and not found. Models therefore have to exist at the breadth where radiologists make those sweeping statements, which is why "chest wall fracture" and "upper abdominal abnormality" are legitimate models. +"No fracture" records an observation with [presence](/glossary/presence.md) absent. The finding was looked for and not found. Broad models such as "chest wall fracture" and "upper abdominal abnormality" support these negative assertions. # What the definition carries -A finding model is a knowledge base entry, not a label. Each definition carries a canonical name, a description written for a radiologist audience, synonyms covering the ways the same observation gets expressed, [tags](/glossary/tag.md) for browsing, [index codes](/glossary/index-code.md) linking to SNOMED CT, RadLex, and the Radiology Gamuts Ontology, optional [anatomic locations](/glossary/anatomic-location.md), [contributors](/glossary/contributor.md), and the attribute list.[^oifm-overview][^fm-model] +A definition contains a canonical name, a description for radiologists, synonyms, [tags](/glossary/tag.md), [index codes](/glossary/index-code.md), optional [anatomic locations](/glossary/anatomic-location.md), [contributors](/glossary/contributor.md), and attributes. Tags support browsing; index codes link to SNOMED CT, RadLex, and the Radiology Gamuts Ontology.[^oifm-overview][^fm-model] -Attributes are the characterization axes. Two are near-universal and come first by convention: presence, with the values absent, present, indeterminate, and unknown, then [change from prior](/glossary/change-from-prior.md). After those come the domain-specific axes, size, severity, density, morphology, enhancement pattern, and whatever else the finding needs. Each choice value gets its own code, so a stored Observation can cite not just the finding and the attribute but the specific value chosen. Every identifier in that chain is machine-generated and never written by hand. The field-level specification is in [the format document](/semantic-foundation/finding-models/finding-model-format.md). +Attributes characterize a finding. By convention, most models start with presence, whose values are absent, present, indeterminate, and unknown, then [change from prior](/glossary/change-from-prior.md). Finding-specific attributes follow, such as size, severity, density, morphology, and enhancement pattern. Each choice value has a code so an Observation can identify the finding, attribute, and selected value. Tools generate all identifiers. Authors do not assign them by hand. See the [format document](/semantic-foundation/finding-models/finding-model-format.md). -Quality in these definitions is load-bearing rather than cosmetic. "A sloppy synonym maps the wrong concept to an observation; a nonsensical attribute propagates meaningless data; a poorly scoped model conflates distinct clinical entities. Errors here don't just look bad, they cause incorrect downstream reasoning about patient care."[^oifm-overview] +Definition errors affect downstream interpretation: "A sloppy synonym maps the wrong concept to an observation; a nonsensical attribute propagates meaningless data; a poorly scoped model conflates distinct clinical entities. Errors here don't just look bad, they cause incorrect downstream reasoning about patient care."[^oifm-overview] # What a finding model is not -It is not a report template. Templates were the earlier approach to structured reporting, and a finding model does not prescribe what a report contains or in what order. It defines one finding and leaves composition to whatever produces the report. +A finding model defines one finding. Earlier structured-reporting approaches used templates to prescribe report content and order; finding models leave report composition to the application. -It is not a common data element, at least not yet. The January 2026 status deck frames finding models as "the CDE workbench": rapid, language-model-assisted content creation acting as "a proving ground for formal common data elements," carrying "rich definitions with embedded relationships and semantic tags that can graduate to standards."[^deck] The relationship runs from finding model toward [common data element](/glossary/cde.md), not the other way, and it is worked through in [finding models and CDEs](/semantic-foundation/finding-models/finding-models-and-cdes.md). +It is not a common data element, at least not yet. The January 2026 deck calls them "the CDE workbench" and "a proving ground for formal common data elements".[^deck] The relationship runs from finding model toward [common data element](/glossary/cde.md), not the other way, and it is worked through in [finding models and CDEs](/semantic-foundation/finding-models/finding-models-and-cdes.md). -It is also not an instance. The definition says what a pleural effusion is and how one is characterized. It says nothing about any particular patient. That separation is the whole point of the layering described in [architecture](/overview/architecture.md). +A definition describes a finding type, such as pleural effusion. Patient-specific observations reference that definition, as described in the [architecture](/overview/architecture.md). # How the definitions get used -Downstream structures reference finding models only by identifier. An [Exam Finding List](/glossary/exam-finding-list.md) entry carries a `findingCode` holding the model's OIFM identifier, an optional anatomic location, and an `attributes` array in which each element pairs an OIFMA attribute identifier with a value code drawn from that attribute's permitted values.[^efl-example] Nothing in the Exam Finding List repeats the definition; a reader that wants to know what `OIFM_GMTS_016552` means resolves it against the content repository. +An [Exam Finding List](/glossary/exam-finding-list.md) entry references the model by its OIFM identifier in `findingCode`. Downstream structures reference finding models only by identifier. It adds an optional anatomic location and an `attributes` array pairing OIFMA attribute identifiers with permitted value codes.[^efl-example] Nothing in the Exam Finding List repeats the definition; a reader that wants to know what `OIFM_GMTS_016552` means resolves it against the content repository. ```json { @@ -74,9 +74,9 @@ Downstream structures reference finding models only by identifier. An [Exam Find } ``` -The same identifiers flow upward into the Imaging Problem List, which groups a patient's observations by finding code across exams. The details of both structures are in [the Exam Finding List document](/data-structures/exam-finding-list.md). +The Imaging Problem List groups a patient's observations across exams using the same identifiers. See the [Exam Finding List document](/data-structures/exam-finding-list.md). -An older statement of the same idea, from the 2023 site post that predates the finding model format, describes a radiology finding as a FHIR Observation "semantically labeled with ACR/RSNA Common Data Element identifiers," with the set identifier naming the finding type and element identifiers naming the attributes.[^site-post] The shape survived; what changed is that OIDM now mints its own identifiers for the definitions that no common data element covers. +The 2023 site post described a FHIR Observation "semantically labeled with ACR/RSNA Common Data Element identifiers", with a set identifier for the finding type and element identifiers for its attributes.[^site-post] OIDM now also mints its own identifiers for definitions that no common data element covers. [^oifm-overview]: "Finding Models: Overview", findingmodels repository [^deck]: Open Imaging Data Model 2026 Status Update, January 2026 diff --git a/knowledge/semantic-foundation/index.md b/knowledge/semantic-foundation/index.md index c44b3d3..5586ac5 100644 --- a/knowledge/semantic-foundation/index.md +++ b/knowledge/semantic-foundation/index.md @@ -1,8 +1,7 @@ # Semantic foundation - -* [finding-models](./finding-models/) - Open Imaging Finding Models: format, identifiers, content, authoring -* [common-data-elements](./common-data-elements/) - ACR/RSNA common data elements and how finding models relate to them -* [anatomic-locations](./anatomic-locations/) - The curated anatomic location set, its data model, and RadLex integration -* [exam-types](./exam-types/) - Exam types: goals and existing building blocks -* [terminologies](./terminologies/) - External terminologies and the lookup tooling +* [Finding models](./finding-models/) - Open Imaging Finding Models: format, identifiers, content, authoring +* [Common data elements](./common-data-elements/) - ACR/RSNA common data elements and how finding models relate to them +* [Anatomic locations](./anatomic-locations/) - The curated anatomic location set, its data model, and RadLex integration +* [Exam types](./exam-types/) - Exam types: goals and existing building blocks +* [Terminologies](./terminologies/) - External terminologies and the lookup tooling diff --git a/knowledge/semantic-foundation/terminologies/index.md b/knowledge/semantic-foundation/terminologies/index.md index 76f1206..4e2052d 100644 --- a/knowledge/semantic-foundation/terminologies/index.md +++ b/knowledge/semantic-foundation/terminologies/index.md @@ -1,6 +1,6 @@ # Terminologies -The external vocabularies OIDM points at rather than reinvents, and the tooling that resolves them. +External vocabularies referenced by OIDM and tools for resolving their codes. -* [Ontologies used](./ontologies-used.md) - Every external terminology OIDM touches, who governs it, the shape of its identifiers, the field and structure that carries it, and which lookup tool resolves it. -* [med-ontology-lookup](./med-ontology-lookup.md) - The molu library and command line tool that resolves medical terms and codes across RadLex, SNOMED CT, FMA, LOINC, and UMLS, its current capabilities, its stated direction, and its status. +* [Ontologies used](./ontologies-used.md) - External terminology identifiers, OIDM fields, code counts, and lookup support. +* [med-ontology-lookup](./med-ontology-lookup.md) - Medical terminology lookup, crosswalks, provider failures, planned features, and integration status. diff --git a/knowledge/semantic-foundation/terminologies/med-ontology-lookup.md b/knowledge/semantic-foundation/terminologies/med-ontology-lookup.md index 1e671c9..cbb85f0 100644 --- a/knowledge/semantic-foundation/terminologies/med-ontology-lookup.md +++ b/knowledge/semantic-foundation/terminologies/med-ontology-lookup.md @@ -1,10 +1,10 @@ --- type: Project Profile title: med-ontology-lookup -description: The molu library and command line tool that resolves medical terms and codes across RadLex, SNOMED CT, FMA, LOINC, and UMLS, its current capabilities, its stated direction, and its status. +description: Medical terminology lookup, crosswalks, provider failures, planned features, and integration status. tags: [semantic-foundation, terminologies, tooling, project-profile] status: draft -generated: { by: claude-opus-5/claude-code, at: 2026-09-21T17:30:00Z } +generated: { by: codex/gpt-6, at: 2026-09-21T20:53:02Z } stale_after: 2027-09-21 sources: - id: readme @@ -44,11 +44,11 @@ sources: # What it is -`med-ontology-lookup` is a Python library and command line tool, `molu`, that looks up medical terms and codes in [RadLex](/glossary/radlex.md), [SNOMED CT](/glossary/snomed-ct.md), [FMA](/glossary/fma.md), [LOINC](/glossary/loinc.md), and [UMLS](/glossary/umls.md) through the BioPortal and UMLS Terminology Services REST APIs.[^readme] It is the infrastructure layer under every other piece of OIDM work that needs to turn a phrase into a code: [index code](/glossary/index-code.md) assignment on [finding models](/glossary/finding-model.md), anatomic coding, and the enrichment pipeline. +`med-ontology-lookup` is a Python library and CLI, `molu`, for medical terms and codes in [RadLex](/glossary/radlex.md), [SNOMED CT](/glossary/snomed-ct.md), [FMA](/glossary/fma.md), [LOINC](/glossary/loinc.md), and [UMLS](/glossary/umls.md). It calls BioPortal and UMLS Terminology Services REST APIs.[^readme] Its role is phrase-to-code lookup for tasks such as [index code](/glossary/index-code.md) assignment to [finding models](/glossary/finding-model.md), anatomic coding, and enrichment. Package integration remains pending, as described below. -Its stated purpose is broader than a search box. The roadmap describes it as "the small, dependable layer that lets people and agents resolve medical language to versioned concepts, inspect the clinically relevant part of an ontology graph, and translate identifiers without learning each terminology provider's API."[^roadmap] +The roadmap calls it "the small, dependable layer that lets people and agents resolve medical language to versioned concepts, inspect the clinically relevant part of an ontology graph, and translate identifiers without learning each terminology provider's API."[^roadmap] -The repository is `openimagingdata/med-ontology-lookup`. Install and API key instructions are in its README and are not repeated here.[^readme] +See `openimagingdata/med-ontology-lookup`'s README for installation and API keys.[^readme] # Providers and credentials @@ -80,11 +80,11 @@ Results are typed. A `Concept` carries `concept_id`, `code`, `ontology`, `pref_l The distinguishing design decision is that a failure is a result, not a silent fallback. A `ProviderFailure` carries a `FailureCategory`, including `not_found`, `authentication`, `authorization`, `licensing`, `rate_limited`, `timeout`, `unavailable`, and `invalid_response`, and a `ProviderOperation` naming which call failed.[^models] The policy is that only absence of a result or an unsupported operation may trigger a fallback to another provider; authentication, licensing, rate limit, timeout, and upstream unavailability stay visible instead of being disguised as an empty answer.[^failures] -This matters to callers because SNOMED CT and UMLS are licensed. An unlicensed caller gets a licensing failure rather than a result that looks like the concept does not exist. +An unlicensed SNOMED CT or UMLS caller gets a licensing failure rather than an apparent missing concept. # Agent skill -The repository ships an agent skill under `skills/med-ontology-lookup/`, portable across agent runtimes, that tells an agent to classify the input, search first for free text, and use the CLI rather than scraping the BioPortal or UMLS web interfaces.[^skill] It is the reason this tool appears in coding workflows across the other repositories. +The portable skill at `skills/med-ontology-lookup/` instructs agents to classify input, search free text first, and use the CLI instead of scraping BioPortal or UMLS.[^skill] Coding workflows in other repositories use it. # Stated direction @@ -108,9 +108,9 @@ Read at `main`, commit `a1fd3ae`, dated 2026-09-20. # Relation to the rest of OIDM -The relationship is real in practice and thin in the documentation. The enrichment pipeline in `findingmodel` runs ontology search concurrently with anatomic location lookup to propose index codes for a finding model, and that phase is recorded as complete.[^enrichment-plan] But that pipeline calls a BioOntology client of its own, and `findingmodel` issue 34 asks for that client and its ontology search protocol to move into the shared `oidm-common` package as infrastructure, described as a hard break requiring an environment-only API key.[^fm-issue-34] +The `findingmodel` enrichment pipeline performs ontology and anatomic searches concurrently, a completed phase.[^enrichment-plan] It uses its own BioOntology client. Issue 34 requests moving that client and search protocol to `oidm-common`, with a hard break requiring an environment-only API key.[^fm-issue-34] -No document in `findingmodel` or `findingmodels` links to this repository, and no OIDM package depends on it today. It is best read as the layer that the coding and enrichment work is converging toward rather than one it already runs on. See [the repository map](/repositories/repository-map.md) for where it sits among the other repositories. +Neither `findingmodel` nor `findingmodels` links to this repository, and no OIDM package depends on it. Integration is a direction, not an implemented dependency. See [the repository map](/repositories/repository-map.md). [^readme]: med-ontology-lookup README [^models]: Concept and provider failure models, med-ontology-lookup diff --git a/knowledge/semantic-foundation/terminologies/ontologies-used.md b/knowledge/semantic-foundation/terminologies/ontologies-used.md index d44032d..9a9cbc6 100644 --- a/knowledge/semantic-foundation/terminologies/ontologies-used.md +++ b/knowledge/semantic-foundation/terminologies/ontologies-used.md @@ -1,10 +1,10 @@ --- type: Reference title: Ontologies used -description: Every external terminology OIDM touches, who governs it, the shape of its identifiers, the field and structure that carries it, and which lookup tool resolves it. +description: External terminology identifiers, OIDM fields, code counts, and lookup support. tags: [semantic-foundation, terminologies, reference, coding] status: draft -generated: { by: claude-opus-5/claude-code, at: 2026-09-21T17:30:00Z } +generated: { by: codex/gpt-6, at: 2026-09-21T20:53:02Z } sources: - id: radlex resource: https://radlex.org/ @@ -67,7 +67,7 @@ sources: # How to read this -OIDM mints its own identifiers for two things only: [finding models](/glossary/finding-model.md) and their [attributes](/glossary/attribute.md), under the `OIFM` and `OIFMA` schemes. Everything else it points at. This page lists every external terminology that appears somewhere in the OIDM repositories, says who governs it, what its identifiers look like, which field carries it, and whether the [`molu`](/semantic-foundation/terminologies/med-ontology-lookup.md) lookup tool can resolve it. +OIDM assigns `OIFM` identifiers to [finding models](/glossary/finding-model.md) and `OIFMA` identifiers to their [attributes](/glossary/attribute.md). Other codes come from external terminologies. This inventory records their governance, formats, uses, and [`molu`](/semantic-foundation/terminologies/med-ontology-lookup.md) support. Counts are from the corpus and datasets at the commits pinned in the sources. Finding model counts are occurrences of an [index code](/glossary/index-code.md) across all 2,382 definitions, not distinct concepts. @@ -87,7 +87,7 @@ Counts are from the corpus and datasets at the commits pinned in the sources. Fi # RadLex -The radiology lexicon published by the RSNA, and the terminology OIDM leans on hardest. It supplies the primary key for [anatomic locations](/glossary/anatomic-location.md) in the form of a [RadLex ID](/glossary/radlex-id.md), and it is the second most common index code system in the finding model corpus, with 25,765 occurrences.[^fm-corpus] Presence values across the corpus are coded with it, for example `RID28472` for present and `RID28473` for absent. +RSNA's radiology lexicon supplies primary [anatomic location](/glossary/anatomic-location.md) keys as [RadLex IDs](/glossary/radlex-id.md). With 25,765 occurrences, it is the corpus's second most common index code system.[^fm-corpus] Presence values include `RID28472` for present and `RID28473` for absent. The ontology ships as an OWL file in the RSNA repository, which the next-generation vocabulary analysis identifies as the authoritative artifact going forward.[^radlex-owl][^current-understanding] That analysis also records the licence position: RadLex is "actively governed, and freely licensed for commercial and non-commercial use."[^current-understanding] In OIDM data the `system` string is `RADLEX`; in FHIR encodings the system URI is `http://www.radlex.org`.[^fhir-sample] Details of the relationship in both directions, including the open RSNA issue to fold the OIDM anatomic set into RadLex, are in [RadLex integration](/semantic-foundation/anatomic-locations/radlex-integration.md). @@ -129,7 +129,7 @@ RadElement is the one terminology in this table that OIDM both consumes and feed # Radiology Gamuts Ontology -An ontology of radiologic differential diagnosis lists, published at gamuts.net.[^gamuts] It plays two roles at once. As a coding system, `GAMUTS` appears 1,935 times in the corpus, essentially once per Gamuts-derived definition.[^fm-corpus] As a contributing organization it holds the [organization code](/glossary/oidm-organization-code.md) `GMTS`, which is the middle segment of 1,933 of the 2,382 finding model identifiers. See [content catalog](/semantic-foundation/finding-models/content-catalog.md) for what that content is and [finding model content direction](/roadmap/finding-model-content-direction.md) for where it is headed. +Published at gamuts.net, the Radiology Gamuts Ontology contains differential diagnosis lists.[^gamuts] `GAMUTS` occurs 1,935 times as an index code system, about once per derived definition.[^fm-corpus] Its [organization code](/glossary/oidm-organization-code.md), `GMTS`, appears in 1,933 of 2,382 finding identifiers. See [content catalog](/semantic-foundation/finding-models/content-catalog.md) and [finding model content direction](/roadmap/finding-model-content-direction.md). # DICOM Controlled Terminology diff --git a/site/publish-tigris.sh b/site/publish-tigris.sh deleted file mode 100644 index de9debf..0000000 --- a/site/publish-tigris.sh +++ /dev/null @@ -1,41 +0,0 @@ -#!/usr/bin/env bash -# Publish a browsable copy of the site to a Tigris bucket (plain object -# storage, no directory-index mapping). -# -# bash site/publish-tigris.sh [bucket] [prefix] -# defaults: bucket=oidm-public prefix=oidm-knowledge -# -# Builds with a bucket-specific Quartz config (baseUrl under the bucket host, -# single-page navigation and popovers off, since those fetch extensionless -# URLs), flattens every internal link to an explicit .html path, then uploads -# with the Tigris CLI. Result: https://.t3.storage.dev//index.html -set -euo pipefail - -BUCKET="${1:-oidm-public}" -PREFIX="${2:-oidm-knowledge}" - -SITE_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" -REPO_ROOT="$(cd "$SITE_DIR/.." && pwd)" -TMP_CONFIG="$(mktemp --suffix=.yaml)" -trap 'rm -f "$TMP_CONFIG"' EXIT - -python3 - "$SITE_DIR/quartz.config.yaml" "$TMP_CONFIG" "$BUCKET" "$PREFIX" <<'EOF' -import re, sys -src, dst, bucket, prefix = sys.argv[1:] -s = open(src).read() -s = re.sub(r'^(\s*)baseUrl:.*$', rf'\1baseUrl: {bucket}.t3.storage.dev/{prefix}', s, flags=re.M) -s = re.sub(r'^(\s*)enableSPA:.*$', r'\1enableSPA: false', s, flags=re.M) -s = re.sub(r'^(\s*)enablePopovers:.*$', r'\1enablePopovers: false', s, flags=re.M) -open(dst, 'w').write(s) -EOF - -echo "==> Building with bucket config" -QUARTZ_CONFIG="$TMP_CONFIG" bash "$SITE_DIR/build.sh" - -echo "==> Flattening links for object storage" -python3 "$REPO_ROOT/tools/flatten_site_links.py" "$REPO_ROOT/public" - -echo "==> Uploading to t3://$BUCKET/$PREFIX/" -t3 cp -r "$REPO_ROOT/public/" "t3://$BUCKET/$PREFIX/" - -echo "==> Published: https://$BUCKET.t3.storage.dev/$PREFIX/index.html" diff --git a/tools/flatten_site_links.py b/tools/flatten_site_links.py deleted file mode 100644 index 92ce124..0000000 --- a/tools/flatten_site_links.py +++ /dev/null @@ -1,145 +0,0 @@ -#!/usr/bin/env python3 -"""Make a Quartz build browsable from plain object storage. - -Quartz links pages in the "clean URL" style (`../glossary/oifm`, `./glossary/`) -and relies on the web server to map those to `oifm.html` and `index.html`. -Object storage such as a Tigris bucket serves keys literally, so this script -post-processes the finished build in three ways: - -1. Rewrites every internal `href` in the emitted HTML to the explicit file - (`../glossary/oifm.html`, `./glossary/index.html`). -2. Injects a small script into every page that applies the same rule in the - browser to links the explorer sidebar and search build at runtime, both at - creation (mutation observer) and at click time (capture-phase handler). -3. Patches the emitted JavaScript so direct navigations (`window.location.href - = url`, used by the graph view on node click, `window.location.assign`) and - the search panel's page-preview fetch pass through the same rule. - -Run it on the output directory after `site/build.sh`; it is idempotent. - -Usage: python3 tools/flatten_site_links.py public -""" -from __future__ import annotations - -import glob -import os -import re -import sys - -HREF = re.compile(r'(href=")([^"#?]+)([#?][^"]*)?(")') -SKIP = re.compile(r"^(?:[a-z][a-z0-9+.-]*:|//|#)", re.I) -HAS_EXT = re.compile(r"\.[A-Za-z0-9]{1,8}$") -MARKER = "okf-bucket-links" - -CLIENT_SCRIPT = f"""""" - -JS_PATCHES = [ - # new URL(resolve(slug), window.location.origin).toString() (search preview fetch) - (re.compile(r"(? (graph node click) - (re.compile(r"window\.location\.href\s*=\s*(?!\(window\.__okfHref)([A-Za-z_$][\w$]*)"), - r"window.location.href=(window.__okfHref||function(x){return x})(\1)"), - # window.location.assign() (spaNavigate fallback when SPA is off) - (re.compile(r"window\.location\.assign\((?!\(window\.__okfHref)([A-Za-z_$][\w$]*)\)"), - r"window.location.assign((window.__okfHref||function(x){return x})(\1))"), -] - - -def fix(target: str) -> str: - if SKIP.match(target): - return target - if target.endswith("/"): - return target + "index.html" - last = target.rsplit("/", 1)[-1] - if last and not HAS_EXT.search(last): - return target + ".html" - return target - - -def process_html(path: str) -> tuple[int, bool]: - with open(path, encoding="utf-8") as fh: - html = fh.read() - n = 0 - - def sub(m: re.Match) -> str: - nonlocal n - new = fix(m.group(2)) - if new != m.group(2): - n += 1 - return f"{m.group(1)}{new}{m.group(3) or ''}{m.group(4)}" - - new_html = HREF.sub(sub, html) - injected = False - if MARKER not in new_html and "" in new_html: - new_html = new_html.replace("", CLIENT_SCRIPT + "\n", 1) - injected = True - if new_html != html: - with open(path, "w", encoding="utf-8") as fh: - fh.write(new_html) - return n, injected - - -def process_js(path: str) -> int: - with open(path, encoding="utf-8", errors="surrogateescape") as fh: - js = fh.read() - total = 0 - for pat, repl in JS_PATCHES: - js, k = pat.subn(repl, js) - total += k - if total: - with open(path, "w", encoding="utf-8", errors="surrogateescape") as fh: - fh.write(js) - return total - - -def main(out_dir: str) -> int: - n_links = n_files = n_inject = 0 - for path in glob.glob(os.path.join(out_dir, "**", "*.html"), recursive=True): - n, injected = process_html(path) - n_links += n - n_files += 1 if (n or injected) else 0 - n_inject += 1 if injected else 0 - n_js = sum(process_js(p) for p in glob.glob(os.path.join(out_dir, "**", "*.js"), recursive=True)) - print(f"flattened {n_links} links in {n_files} files, injected client fix into {n_inject} pages, patched {n_js} direct navigations under {out_dir}") - return 0 - - -if __name__ == "__main__": - sys.exit(main(sys.argv[1] if len(sys.argv) > 1 else "public")) From 6d9d3393b41cd502f2f40bca7b978bdc2acbbb50 Mon Sep 17 00:00:00 2001 From: "Alkasab Agent (agent-dev)" Date: Tue, 22 Sep 2026 11:47:03 +0000 Subject: [PATCH 05/19] Host on Cloudflare, recompose diagrams for the column, add click-to-zoom - Assets-only Worker per target (dev, staging, prod); task deploy, deploy:staging, deploy:prod; push to main deploys staging - Diagrams recomposed as vertical compositions readable at column width; shared Excalidraw helpers and renderer under tools/diagrams - Click-to-zoom overlay plugin for the site, width-fitted with pan and zoom - Verification tool and review tasks for marking documents stable - Object-storage publishing path and GitHub Pages workflow removed Co-Authored-By: Claude Fable 5.1 --- .github/workflows/deploy.yml | 35 + .gitignore | 1 + README.md | 8 +- Taskfile.yml | 53 +- docs/plans/restructure-joint-notes.md | 34 + .../data-structures/hierarchy.excalidraw | 856 ++++---- knowledge/data-structures/hierarchy.svg | 4 +- knowledge/overview/architecture.excalidraw | 1400 ++++++------- knowledge/overview/architecture.md | 2 + knowledge/overview/architecture.svg | 4 +- .../repositories/repository-map.excalidraw | 1862 ++++++++--------- knowledge/repositories/repository-map.svg | 4 +- site/README.md | 69 +- site/build.sh | 5 + site/okf-lightbox-plugin/package.json | 33 + site/quartz.config.yaml | 11 + site/wrangler.jsonc | 29 + tools/diagrams/README.md | 30 + tools/diagrams/build_architecture.py | 141 +- tools/diagrams/build_hierarchy.py | 71 +- tools/diagrams/build_repository_map.py | 133 +- tools/diagrams/excalib.py | 7 +- tools/verify.py | 119 ++ 23 files changed, 2440 insertions(+), 2471 deletions(-) create mode 100644 .github/workflows/deploy.yml create mode 100644 site/okf-lightbox-plugin/package.json create mode 100644 site/wrangler.jsonc create mode 100644 tools/diagrams/README.md create mode 100644 tools/verify.py diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml new file mode 100644 index 0000000..37ec95a --- /dev/null +++ b/.github/workflows/deploy.yml @@ -0,0 +1,35 @@ +name: Deploy site (staging) + +on: + push: + branches: [main] + paths: ["knowledge/**", "site/**", "tools/prepare_site_content.py", ".github/workflows/deploy.yml"] + workflow_dispatch: + +permissions: + contents: read + +concurrency: + group: deploy + cancel-in-progress: false + +jobs: + deploy: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + - uses: actions/setup-node@v4 + with: + node-version: 22 + - uses: actions/cache@v4 + with: + path: ~/.npm + key: ${{ runner.os }}-npm-${{ hashFiles('site/quartz.config.yaml') }} + - name: Build + run: bash site/build.sh + - name: Deploy to Cloudflare + uses: cloudflare/wrangler-action@v3 + with: + apiToken: ${{ secrets.CLOUDFLARE_API_TOKEN }} + accountId: ${{ secrets.CLOUDFLARE_ACCOUNT_ID }} + command: deploy --config site/wrangler.jsonc --env staging diff --git a/.gitignore b/.gitignore index 85f74ce..73bca76 100644 --- a/.gitignore +++ b/.gitignore @@ -21,3 +21,4 @@ viz.html # Raw source material reviewed for the bundle (may contain unpublished planning); never committed sources/ +.wrangler/ diff --git a/README.md b/README.md index 0243949..a220ccc 100644 --- a/README.md +++ b/README.md @@ -7,7 +7,7 @@ The content is an [Open Knowledge Format](https://okf.md) 0.2 bundle in [`knowle ## Reading it - Browse on GitHub from [`knowledge/index.md`](knowledge/index.md). -- Rendered site: `task build` renders it with Quartz into `public/`; `task publish` builds and uploads a browsable copy to the Tigris bucket in one step; GitHub Pages deploys from `main` via `.github/workflows/site.yml`. +- Rendered site: `task build` renders it with Quartz into `public/`; `task deploy` publishes it to Cloudflare (Workers static assets, `site/wrangler.jsonc`); pushes to `main` deploy through `.github/workflows/deploy.yml`. - Agents: read `knowledge/index.md` first, follow links only into what the task needs, and weigh `status`, `verified`, and `stale_after` in each document's frontmatter. ## Contributing @@ -24,9 +24,9 @@ uv run tools/check_bundle.py | Path | Purpose | |---|---| | `knowledge/` | The OKF bundle | -| `Taskfile.yml` | `task check`, `task build`, `task serve`, `task publish`, `task viz` | -| `site/` | Quartz configuration, badge plugin, build and publish scripts | -| `tools/` | House-rules checker and site post-processing scripts | +| `Taskfile.yml` | `task check`, `task build`, `task serve`, `task deploy`, `task preview`, `task verify`, `task review-status`, `task viz` | +| `site/` | Quartz configuration, badge plugin, build script, Cloudflare Worker config | +| `tools/` | House-rules checker, verification tool, diagram builders, site staging script | | `.agents/skills/` | Installed OKF skills (author, validate, visualize, backfill) | | `CHANGELOG.md` | Reader-facing changes | | `DEV_LOG.md` | Engineering narrative | diff --git a/Taskfile.yml b/Taskfile.yml index 0ed5a6b..8989e18 100644 --- a/Taskfile.yml +++ b/Taskfile.yml @@ -4,13 +4,16 @@ # task check run both validators (OKF conformance + house rules) # task build build the Quartz site into public/ # task serve local dev server with live reload -# task publish build, flatten links for object storage, upload to Tigris +# task deploy build and deploy to oidm-knowledge-dev; deploy:staging and deploy:prod for the others +# task preview build and serve locally through wrangler # task viz render the bundle as a single-file interactive graph (viz.html) version: "3" vars: - BUCKET: '{{.BUCKET | default "oidm-public"}}' - PREFIX: '{{.PREFIX | default "oidm-knowledge"}}' + # Hostnames per target; workers.dev names until custom domains are attached + DEV_URL: '{{.DEV_URL | default "oidm-knowledge-dev.talkasab.workers.dev"}}' + STAGING_URL: '{{.STAGING_URL | default "oidm-knowledge-staging.talkasab.workers.dev"}}' + PROD_URL: '{{.PROD_URL | default "oidm-knowledge.talkasab.workers.dev"}}' tasks: default: @@ -25,7 +28,7 @@ tasks: - uv run tools/check_bundle.py build: - desc: Build the Quartz site into public/ (clean-URL links, for GitHub Pages) + desc: Build the Quartz site into public/ (clean URLs, served by Cloudflare) cmds: - bash site/build.sh @@ -34,11 +37,47 @@ tasks: cmds: - bash site/build.sh serve - publish: - desc: Build, flatten links for object storage, and upload to Tigris (BUCKET, PREFIX overridable) + deploy: + desc: Build and deploy to oidm-knowledge-dev (default target) deps: [check] cmds: - - bash site/publish-tigris.sh {{.BUCKET}} {{.PREFIX}} + - SITE_BASE_URL={{.DEV_URL}} bash site/build.sh + - wrangler deploy --config site/wrangler.jsonc --env dev + + deploy:staging: + desc: Build and deploy to oidm-knowledge-staging + deps: [check] + cmds: + - SITE_BASE_URL={{.STAGING_URL}} bash site/build.sh + - wrangler deploy --config site/wrangler.jsonc --env staging + + deploy:prod: + desc: Build and deploy to oidm-knowledge, the public site + deps: [check] + cmds: + - SITE_BASE_URL={{.PROD_URL}} bash site/build.sh + - wrangler deploy --config site/wrangler.jsonc + + preview: + desc: Build and serve the site locally through Wrangler, exactly as Cloudflare will serve it + cmds: + - bash site/build.sh + - wrangler dev --config site/wrangler.jsonc --env dev + + verify: + desc: "Mark documents verified by the project lead: task verify -- knowledge/glossary/oifm.md [...]" + cmds: + - uv run tools/verify.py {{.CLI_ARGS}} + + review-status: + desc: Show verified / total documents per directory + cmds: + - uv run tools/verify.py --status + + review-list: + desc: "List unverified documents under a directory: task review-list -- knowledge/glossary" + cmds: + - uv run tools/verify.py --list {{.CLI_ARGS}} viz: desc: Render the bundle as one self-contained HTML graph at viz.html diff --git a/docs/plans/restructure-joint-notes.md b/docs/plans/restructure-joint-notes.md index 03bd3d3..462cc2a 100644 --- a/docs/plans/restructure-joint-notes.md +++ b/docs/plans/restructure-joint-notes.md @@ -25,6 +25,40 @@ Project lead, 2026-09-21: "there are IMPORTANT DOCUMENTS and PROMPTS in the repo - Review: the other session reviews for source fidelity. - Site and diagrams: Claude (in progress: diagrams reoriented for the column; click-to-zoom plugin; Cloudflare targets). + +## Proposed page list, corrected (Claude, 2026-09-22) + +The project lead's corrections, 2026-09-22: (a) the STRUCTURE is the human one: the project lead's original list and the January 2026 deck's pillars; the earlier 41-page list derived from the inventories is withdrawn; (b) the ideas mined from the repositories' documentation, plans, prompts, skills, and design notes are the TEAM'S OWN ideas and enter the graph as first-class content under that structure; that is the purpose of mining them; (c) only agent inference (an inventory agent's synthesis, invented rationale, or question no team source raised) is limited to connective tissue or left out. The placement table in idea-placement.md applies these rules. + +Spine: four pillars, per the project lead on 2026-09-22 (the deck's three, with applications split into the uses and the code, the last two closely related): + +**Open Imaging Data Model** (the project): purpose and vision as the deck and the site state them; the four pillars; "why not just let the LLM read it"; structure first, then FHIR and other transports (the 2026-09-19 framing); how agreement is meant to happen (the working group proposal). One or two pages. + +**1. Semantic foundation** +- *Open Imaging Finding Models*: what a finding model is and why (the workbench for CDEs; rapid, LLM-assisted, exploratory definitions that graduate); the definition format and what the project lead wants it to become (increased metadata; relationship and graph work coming from the CDE vocabulary); the content effort (the MGB exam-oriented sub-taxonomies as the immediate direction; the Gamuts-derived corpus being superseded). Connective tissue inside: the authoring rules and prompts, the metadata fields, review gates, the identifier scheme. +- *ACR/RSNA Common Data Elements*: the dovetail with finding models in both directions; RadElement; the next-generation vocabulary work as the allied project's in-progress design. Connective tissue: node types, relationships, staging path. +- *Anatomic Locations*: why a curated index; the containment hierarchy, part-of, laterality; the blending into RadLex. Connective tissue: the two implementations, the JDIM paper's measurements, the coding rules. +- *Exam Types*: the wrapper around the RadLex/LOINC Playbook graph; PREFERRED high-level entries; tight coupling to anatomic locations with always, usually, and possibly-included edges. Stated as goals with what exists today. + +**2. Data structures** (the deck's ladder) +- *Observation*: what plus where plus attributes; presence, change from prior, measurements. Connective tissue: the extraction and coding rules, normality as absence, finding versus diagnosis. +- *Exam Finding List*: all findings of one exam; sources of findings; the IHE IDR connection as stated. Connective tissue: the JSON in use, the verbatim rule, deduplication. +- *Imaging Problem List*: organized by finding, not chronology; the core query; dynamic tracking; the format for a patient's imaging history and its relationships; managing and collating across the history. Connective tissue: the JDIM manuscript's elements, the four status vocabularies, succession and linking, the example2 data. +- *Imaging Persona*: the big picture as the deck states it; concept only. +- *Data structures versus transport*: the project lead's framing; FHIR and DICOM as expressions guided by the structures; what has been mapped and what has not. + +**3. Applications and uses** (what the project wants done with the data) +- *Reporting assistance*: the plugin-container idea and the reporting-assistance framework; vendor-driven innovation; the IPL across the imaging life cycle (planning, intra-exam, interpretation, post-interpretation); ACR priorities (recommendation tracking, AI validation, quality metrics, RADS support). +- *Demonstrations and uses*: the use cases the team has written down (the use-case catalog, the webinar's application families, outcome tracking, the interoperability demonstrations), attributed; the applications the project lead wants designed on the Imaging Problem List. + +**4. SDKs and sample applications** (the code the project provides; closely related to pillar 3) +- *SDKs*: the finding model SDK (the `findingmodel` packages: format, index, search, enrichment, MCP server); the anatomic locations SDK (the `anatomic-locations` package and the earlier BodyPartIndex libraries); the Imaging Problem List SDK (proposed; issue #1's system of data models and the dev-branch platform as its precursor); other proposed SDKs (the Open Imaging Reporting SDK; terminology lookup via `med-ontology-lookup`). Each: what it gives a developer, what it implements of the ideas above, status. +- *Sample applications*: the findingmodel CLI; the anatomic locations CLI; Finding Model Forge; IPL viewer 1; IPL viewer 2 with anatomy; the report extraction platform; the finding model catalog site; and future ones. Each: what it demonstrates, which SDK it sits on, where it runs, status. + +Supporting layers off the reading path: glossary (cross-topic terms), the three reference extracts, the open-questions register of the team's own unresolved alternatives. + +About 18 pages. The inventories' 70-odd ideas are placed under these pages in idea-placement.md before drafting: team-artifact ideas as content, agent inferences as connective tissue at most; anything with no team source stays out of the reading path. + ## Open points for Codex - Do you agree the glossary, a few references, and a reduced open-questions register survive as supporting layers? diff --git a/knowledge/data-structures/hierarchy.excalidraw b/knowledge/data-structures/hierarchy.excalidraw index 8a5f8dc..b3a5080 100644 --- a/knowledge/data-structures/hierarchy.excalidraw +++ b/knowledge/data-structures/hierarchy.excalidraw @@ -4,16 +4,16 @@ "source": "oidm-knowledge/tools/diagrams", "elements": [ { - "type": "text", - "id": "title", - "x": 60, + "type": "rectangle", + "id": "obs", + "x": 0, "y": 40, - "width": 769.0799999999999, - "height": 32.5, - "strokeColor": "#1e40af", - "backgroundColor": "transparent", + "width": 250, + "height": 70, + "strokeColor": "#1e3a5f", + "backgroundColor": "#3b82f6", "fillStyle": "solid", - "strokeWidth": 1, + "strokeWidth": 2, "strokeStyle": "solid", "roughness": 0, "opacity": 100, @@ -23,26 +23,30 @@ "versionNonce": 1002, "isDeleted": false, "groupIds": [], - "boundElements": null, + "boundElements": [ + { + "id": "obs_t", + "type": "text" + }, + { + "id": "a_obs_efl", + "type": "arrow" + } + ], "link": null, "locked": false, - "text": "From one observation to a patient's imaging history", - "originalText": "From one observation to a patient's imaging history", - "fontSize": 26, - "fontFamily": 2, - "textAlign": "left", - "verticalAlign": "top", - "containerId": null, - "lineHeight": 1.25 + "roundness": { + "type": 3 + } }, { "type": "text", - "id": "subtitle", - "x": 60, - "y": 82, - "width": 755.16, - "height": 17.5, - "strokeColor": "#64748b", + "id": "obs_t", + "x": 10, + "y": 50, + "width": 230, + "height": 50, + "strokeColor": "#ffffff", "backgroundColor": "transparent", "fillStyle": "solid", "strokeWidth": 1, @@ -58,26 +62,26 @@ "boundElements": null, "link": null, "locked": false, - "text": "Each structure to the right contains the ones to its left and adds one more level of context.", - "originalText": "Each structure to the right contains the ones to its left and adds one more level of context.", - "fontSize": 14, + "text": "Observation\none finding, one exam", + "originalText": "Observation\none finding, one exam", + "fontSize": 16, "fontFamily": 2, - "textAlign": "left", - "verticalAlign": "top", - "containerId": null, + "textAlign": "center", + "verticalAlign": "middle", + "containerId": "obs", "lineHeight": 1.25 }, { - "type": "rectangle", - "id": "obs", - "x": 60, - "y": 130, - "width": 280, - "height": 74, - "strokeColor": "#1e3a5f", - "backgroundColor": "#3b82f6", + "type": "text", + "id": "obs_fields", + "x": 280, + "y": 40, + "width": 235.48, + "height": 87.5, + "strokeColor": "#374151", + "backgroundColor": "transparent", "fillStyle": "solid", - "strokeWidth": 2, + "strokeWidth": 1, "strokeStyle": "solid", "roughness": 0, "opacity": 100, @@ -87,30 +91,26 @@ "versionNonce": 1006, "isDeleted": false, "groupIds": [], - "boundElements": [ - { - "id": "obs_t", - "type": "text" - }, - { - "id": "a1", - "type": "arrow" - } - ], + "boundElements": null, "link": null, "locked": false, - "roundness": { - "type": 3 - } + "text": "findingCode (OIFM)\nfindingDescription\nanatomicLocation (RID)\nattributes[] with value codes\nreportText", + "originalText": "findingCode (OIFM)\nfindingDescription\nanatomicLocation (RID)\nattributes[] with value codes\nreportText", + "fontSize": 14, + "fontFamily": 2, + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 }, { "type": "text", - "id": "obs_t", - "x": 70, - "y": 140, - "width": 260, - "height": 54, - "strokeColor": "#ffffff", + "id": "obs_status", + "x": 280, + "y": 135.5, + "width": 241.27999999999997, + "height": 16.25, + "strokeColor": "#3b82f6", "backgroundColor": "transparent", "fillStyle": "solid", "strokeWidth": 1, @@ -126,22 +126,56 @@ "boundElements": null, "link": null, "locked": false, - "text": "Observation\none finding, one exam", - "originalText": "Observation\none finding, one exam", - "fontSize": 16, + "text": "JSON in use; no published schema", + "originalText": "JSON in use; no published schema", + "fontSize": 13, "fontFamily": 2, - "textAlign": "center", - "verticalAlign": "middle", - "containerId": "obs", + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, "lineHeight": 1.25 }, + { + "type": "line", + "id": "obs_tick", + "x": 250, + "y": 75.0, + "width": 30, + "height": 0, + "strokeColor": "#64748b", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1009, + "version": 1, + "versionNonce": 1010, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "points": [ + [ + 0, + 0 + ], + [ + 30, + 0 + ] + ] + }, { "type": "rectangle", "id": "efl", - "x": 490, - "y": 130, - "width": 280, - "height": 74, + "x": 0, + "y": 225.75, + "width": 250, + "height": 70, "strokeColor": "#1e3a5f", "backgroundColor": "#3b82f6", "fillStyle": "solid", @@ -150,9 +184,9 @@ "roughness": 0, "opacity": 100, "angle": 0, - "seed": 1009, + "seed": 1011, "version": 1, - "versionNonce": 1010, + "versionNonce": 1012, "isDeleted": false, "groupIds": [], "boundElements": [ @@ -161,11 +195,11 @@ "type": "text" }, { - "id": "a1", + "id": "a_obs_efl", "type": "arrow" }, { - "id": "a2", + "id": "a_efl_ipl", "type": "arrow" } ], @@ -178,10 +212,10 @@ { "type": "text", "id": "efl_t", - "x": 500, - "y": 140, - "width": 260, - "height": 54, + "x": 10, + "y": 235.75, + "width": 230, + "height": 50, "strokeColor": "#ffffff", "backgroundColor": "transparent", "fillStyle": "solid", @@ -190,9 +224,9 @@ "roughness": 0, "opacity": 100, "angle": 0, - "seed": 1011, + "seed": 1013, "version": 1, - "versionNonce": 1012, + "versionNonce": 1014, "isDeleted": false, "groupIds": [], "boundElements": null, @@ -207,54 +241,14 @@ "containerId": "efl", "lineHeight": 1.25 }, - { - "type": "rectangle", - "id": "ipl", - "x": 920, - "y": 130, - "width": 280, - "height": 74, - "strokeColor": "#1e3a5f", - "backgroundColor": "#3b82f6", - "fillStyle": "solid", - "strokeWidth": 2, - "strokeStyle": "solid", - "roughness": 0, - "opacity": 100, - "angle": 0, - "seed": 1013, - "version": 1, - "versionNonce": 1014, - "isDeleted": false, - "groupIds": [], - "boundElements": [ - { - "id": "ipl_t", - "type": "text" - }, - { - "id": "a2", - "type": "arrow" - }, - { - "id": "a3", - "type": "arrow" - } - ], - "link": null, - "locked": false, - "roundness": { - "type": 3 - } - }, { "type": "text", - "id": "ipl_t", - "x": 930, - "y": 140, - "width": 260, - "height": 54, - "strokeColor": "#ffffff", + "id": "efl_fields", + "x": 280, + "y": 225.75, + "width": 235.48, + "height": 70.0, + "strokeColor": "#374151", "backgroundColor": "transparent", "fillStyle": "solid", "strokeWidth": 1, @@ -270,27 +264,27 @@ "boundElements": null, "link": null, "locked": false, - "text": "Imaging Problem List\none patient, keyed by finding", - "originalText": "Imaging Problem List\none patient, keyed by finding", - "fontSize": 16, + "text": "diagnosticReportId\npatientInfo\nexamInfo with LOINC exam code\nfindings[]: the observations", + "originalText": "diagnosticReportId\npatientInfo\nexamInfo with LOINC exam code\nfindings[]: the observations", + "fontSize": 14, "fontFamily": 2, - "textAlign": "center", - "verticalAlign": "middle", - "containerId": "ipl", + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, "lineHeight": 1.25 }, { - "type": "rectangle", - "id": "persona", - "x": 1350, - "y": 130, - "width": 280, - "height": 74, - "strokeColor": "#64748b", - "backgroundColor": "#ffffff", + "type": "text", + "id": "efl_status", + "x": 280, + "y": 303.75, + "width": 241.27999999999997, + "height": 16.25, + "strokeColor": "#3b82f6", + "backgroundColor": "transparent", "fillStyle": "solid", - "strokeWidth": 2, - "strokeStyle": "dashed", + "strokeWidth": 1, + "strokeStyle": "solid", "roughness": 0, "opacity": 100, "angle": 0, @@ -299,30 +293,26 @@ "versionNonce": 1018, "isDeleted": false, "groupIds": [], - "boundElements": [ - { - "id": "persona_t", - "type": "text" - }, - { - "id": "a3", - "type": "arrow" - } - ], + "boundElements": null, "link": null, "locked": false, - "roundness": { - "type": 3 - } + "text": "JSON in use; no published schema", + "originalText": "JSON in use; no published schema", + "fontSize": 13, + "fontFamily": 2, + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 }, { - "type": "text", - "id": "persona_t", - "x": 1360, - "y": 140, - "width": 260, - "height": 54, - "strokeColor": "#475569", + "type": "line", + "id": "efl_tick", + "x": 250, + "y": 260.75, + "width": 30, + "height": 0, + "strokeColor": "#64748b", "backgroundColor": "transparent", "fillStyle": "solid", "strokeWidth": 1, @@ -338,22 +328,24 @@ "boundElements": null, "link": null, "locked": false, - "text": "Imaging Persona\nplus clinical context", - "originalText": "Imaging Persona\nplus clinical context", - "fontSize": 16, - "fontFamily": 2, - "textAlign": "center", - "verticalAlign": "middle", - "containerId": "persona", - "lineHeight": 1.25 + "points": [ + [ + 0, + 0 + ], + [ + 30, + 0 + ] + ] }, { "type": "arrow", - "id": "a1", - "x": 340, - "y": 167.0, - "width": 150, - "height": 0.0, + "id": "a_obs_efl", + "x": 125.0, + "y": 110, + "width": 0.0, + "height": 115.75, "strokeColor": "#64748b", "backgroundColor": "transparent", "fillStyle": "solid", @@ -376,8 +368,8 @@ 0 ], [ - 150, - 0.0 + 0.0, + 115.75 ] ], "startBinding": { @@ -395,11 +387,11 @@ }, { "type": "text", - "id": "a1_l", - "x": 387.16, - "y": 141.0, - "width": 55.67999999999999, - "height": 15.0, + "id": "a_obs_efl_l", + "x": 231.52, + "y": 155.875, + "width": 64.96, + "height": 17.5, "strokeColor": "#64748b", "backgroundColor": "transparent", "fillStyle": "solid", @@ -418,7 +410,7 @@ "locked": false, "text": "per exam", "originalText": "per exam", - "fontSize": 12, + "fontSize": 14, "fontFamily": 2, "textAlign": "center", "verticalAlign": "top", @@ -426,14 +418,14 @@ "lineHeight": 1.25 }, { - "type": "arrow", - "id": "a2", - "x": 770, - "y": 167.0, - "width": 150, - "height": 0.0, - "strokeColor": "#64748b", - "backgroundColor": "transparent", + "type": "rectangle", + "id": "ipl", + "x": 0, + "y": 394.0, + "width": 250, + "height": 70, + "strokeColor": "#1e3a5f", + "backgroundColor": "#3b82f6", "fillStyle": "solid", "strokeWidth": 2, "strokeStyle": "solid", @@ -445,40 +437,34 @@ "versionNonce": 1026, "isDeleted": false, "groupIds": [], - "boundElements": null, + "boundElements": [ + { + "id": "ipl_t", + "type": "text" + }, + { + "id": "a_efl_ipl", + "type": "arrow" + }, + { + "id": "a_ipl_persona", + "type": "arrow" + } + ], "link": null, "locked": false, - "points": [ - [ - 0, - 0 - ], - [ - 150, - 0.0 - ] - ], - "startBinding": { - "elementId": "efl", - "focus": 0, - "gap": 2 - }, - "endBinding": { - "elementId": "ipl", - "focus": 0, - "gap": 2 - }, - "startArrowhead": null, - "endArrowhead": "arrow" + "roundness": { + "type": 3 + } }, { "type": "text", - "id": "a2_l", - "x": 813.68, - "y": 141.0, - "width": 62.63999999999999, - "height": 15.0, - "strokeColor": "#64748b", + "id": "ipl_t", + "x": 10, + "y": 404.0, + "width": 230, + "height": 50, + "strokeColor": "#ffffff", "backgroundColor": "transparent", "fillStyle": "solid", "strokeWidth": 1, @@ -494,27 +480,27 @@ "boundElements": null, "link": null, "locked": false, - "text": "all exams", - "originalText": "all exams", - "fontSize": 12, + "text": "Imaging Problem List\none patient, keyed by finding", + "originalText": "Imaging Problem List\none patient, keyed by finding", + "fontSize": 16, "fontFamily": 2, "textAlign": "center", - "verticalAlign": "top", - "containerId": null, + "verticalAlign": "middle", + "containerId": "ipl", "lineHeight": 1.25 }, { - "type": "arrow", - "id": "a3", - "x": 1200, - "y": 167.0, - "width": 150, - "height": 0.0, - "strokeColor": "#64748b", + "type": "text", + "id": "ipl_fields", + "x": 280, + "y": 394.0, + "width": 243.6, + "height": 87.5, + "strokeColor": "#374151", "backgroundColor": "transparent", "fillStyle": "solid", - "strokeWidth": 2, - "strokeStyle": "dashed", + "strokeWidth": 1, + "strokeStyle": "solid", "roughness": 0, "opacity": 100, "angle": 0, @@ -526,37 +512,23 @@ "boundElements": null, "link": null, "locked": false, - "points": [ - [ - 0, - 0 - ], - [ - 150, - 0.0 - ] - ], - "startBinding": { - "elementId": "ipl", - "focus": 0, - "gap": 2 - }, - "endBinding": { - "elementId": "persona", - "focus": 0, - "gap": 2 - }, - "startArrowhead": null, - "endArrowhead": "arrow" + "text": "patient\nfindings[] keyed by\n(findingCode, locationId)\neach with dated observations[]\nstatus derived, not stored", + "originalText": "patient\nfindings[] keyed by\n(findingCode, locationId)\neach with dated observations[]\nstatus derived, not stored", + "fontSize": 14, + "fontFamily": 2, + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 }, { "type": "text", - "id": "a3_l", - "x": 1233.24, - "y": 141.0, - "width": 83.52, - "height": 15.0, - "strokeColor": "#64748b", + "id": "ipl_status", + "x": 280, + "y": 489.5, + "width": 271.44, + "height": 16.25, + "strokeColor": "#3b82f6", "backgroundColor": "transparent", "fillStyle": "solid", "strokeWidth": 1, @@ -572,22 +544,22 @@ "boundElements": null, "link": null, "locked": false, - "text": "with context", - "originalText": "with context", - "fontSize": 12, + "text": "JSON in use; grouping changed on dev", + "originalText": "JSON in use; grouping changed on dev", + "fontSize": 13, "fontFamily": 2, - "textAlign": "center", + "textAlign": "left", "verticalAlign": "top", "containerId": null, "lineHeight": 1.25 }, { "type": "line", - "id": "tick0", - "x": 78, - "y": 204, - "width": 0, - "height": 22, + "id": "ipl_tick", + "x": 250, + "y": 429.0, + "width": 30, + "height": 0, "strokeColor": "#64748b", "backgroundColor": "transparent", "fillStyle": "solid", @@ -610,22 +582,22 @@ 0 ], [ - 0, - 22 + 30, + 0 ] ] }, { - "type": "text", - "id": "fields0", - "x": 70, - "y": 234, - "width": 218.66, - "height": 81.25, - "strokeColor": "#374151", + "type": "arrow", + "id": "a_efl_ipl", + "x": 125.0, + "y": 295.75, + "width": 0.0, + "height": 98.25, + "strokeColor": "#64748b", "backgroundColor": "transparent", "fillStyle": "solid", - "strokeWidth": 1, + "strokeWidth": 2, "strokeStyle": "solid", "roughness": 0, "opacity": 100, @@ -638,23 +610,37 @@ "boundElements": null, "link": null, "locked": false, - "text": "findingCode (OIFM)\nfindingDescription\nanatomicLocation (RID)\nattributes[] with value codes\nreportText", - "originalText": "findingCode (OIFM)\nfindingDescription\nanatomicLocation (RID)\nattributes[] with value codes\nreportText", - "fontSize": 13, - "fontFamily": 2, - "textAlign": "left", - "verticalAlign": "top", - "containerId": null, - "lineHeight": 1.25 + "points": [ + [ + 0, + 0 + ], + [ + 0.0, + 98.25 + ] + ], + "startBinding": { + "elementId": "efl", + "focus": 0, + "gap": 2 + }, + "endBinding": { + "elementId": "ipl", + "focus": 0, + "gap": 2 + }, + "startArrowhead": null, + "endArrowhead": "arrow" }, { "type": "text", - "id": "status0", - "x": 70, - "y": 323.25, - "width": 222.71999999999997, - "height": 15.0, - "strokeColor": "#3b82f6", + "id": "a_efl_ipl_l", + "x": 227.46, + "y": 332.875, + "width": 73.08, + "height": 17.5, + "strokeColor": "#64748b", "backgroundColor": "transparent", "fillStyle": "solid", "strokeWidth": 1, @@ -670,27 +656,27 @@ "boundElements": null, "link": null, "locked": false, - "text": "JSON in use; no published schema", - "originalText": "JSON in use; no published schema", - "fontSize": 12, + "text": "all exams", + "originalText": "all exams", + "fontSize": 14, "fontFamily": 2, - "textAlign": "left", + "textAlign": "center", "verticalAlign": "top", "containerId": null, "lineHeight": 1.25 }, { - "type": "line", - "id": "tick1", - "x": 508, - "y": 204, - "width": 0, - "height": 22, + "type": "rectangle", + "id": "persona", + "x": 0, + "y": 579.75, + "width": 250, + "height": 70, "strokeColor": "#64748b", - "backgroundColor": "transparent", + "backgroundColor": "#ffffff", "fillStyle": "solid", - "strokeWidth": 1, - "strokeStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "dashed", "roughness": 0, "opacity": 100, "angle": 0, @@ -699,28 +685,30 @@ "versionNonce": 1040, "isDeleted": false, "groupIds": [], - "boundElements": null, + "boundElements": [ + { + "id": "persona_t", + "type": "text" + }, + { + "id": "a_ipl_persona", + "type": "arrow" + } + ], "link": null, "locked": false, - "points": [ - [ - 0, - 0 - ], - [ - 0, - 22 - ] - ] + "roundness": { + "type": 3 + } }, { "type": "text", - "id": "fields1", - "x": 500, - "y": 234, - "width": 218.66, - "height": 65.0, - "strokeColor": "#374151", + "id": "persona_t", + "x": 10, + "y": 589.75, + "width": 230, + "height": 50, + "strokeColor": "#475569", "backgroundColor": "transparent", "fillStyle": "solid", "strokeWidth": 1, @@ -736,23 +724,23 @@ "boundElements": null, "link": null, "locked": false, - "text": "diagnosticReportId\npatientInfo\nexamInfo with LOINC exam code\nfindings[]: the observations", - "originalText": "diagnosticReportId\npatientInfo\nexamInfo with LOINC exam code\nfindings[]: the observations", - "fontSize": 13, + "text": "Imaging Persona\nplus clinical context", + "originalText": "Imaging Persona\nplus clinical context", + "fontSize": 16, "fontFamily": 2, - "textAlign": "left", - "verticalAlign": "top", - "containerId": null, + "textAlign": "center", + "verticalAlign": "middle", + "containerId": "persona", "lineHeight": 1.25 }, { "type": "text", - "id": "status1", - "x": 500, - "y": 323.25, - "width": 222.71999999999997, - "height": 15.0, - "strokeColor": "#3b82f6", + "id": "persona_fields", + "x": 280, + "y": 579.75, + "width": 308.56, + "height": 70.0, + "strokeColor": "#374151", "backgroundColor": "transparent", "fillStyle": "solid", "strokeWidth": 1, @@ -768,9 +756,9 @@ "boundElements": null, "link": null, "locked": false, - "text": "JSON in use; no published schema", - "originalText": "JSON in use; no published schema", - "fontSize": 12, + "text": "clinical context (orders, indications)\nmedical baseline (problems, labs)\nspecialized history (oncology)\nsurgical history (operative, implants)", + "originalText": "clinical context (orders, indications)\nmedical baseline (problems, labs)\nspecialized history (oncology)\nsurgical history (operative, implants)", + "fontSize": 14, "fontFamily": 2, "textAlign": "left", "verticalAlign": "top", @@ -778,13 +766,13 @@ "lineHeight": 1.25 }, { - "type": "line", - "id": "tick2", - "x": 938, - "y": 204, - "width": 0, - "height": 22, - "strokeColor": "#64748b", + "type": "text", + "id": "persona_status", + "x": 280, + "y": 657.75, + "width": 188.5, + "height": 16.25, + "strokeColor": "#475569", "backgroundColor": "transparent", "fillStyle": "solid", "strokeWidth": 1, @@ -800,42 +788,8 @@ "boundElements": null, "link": null, "locked": false, - "points": [ - [ - 0, - 0 - ], - [ - 0, - 22 - ] - ] - }, - { - "type": "text", - "id": "fields2", - "x": 930, - "y": 234, - "width": 226.2, - "height": 81.25, - "strokeColor": "#374151", - "backgroundColor": "transparent", - "fillStyle": "solid", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 0, - "opacity": 100, - "angle": 0, - "seed": 1047, - "version": 1, - "versionNonce": 1048, - "isDeleted": false, - "groupIds": [], - "boundElements": null, - "link": null, - "locked": false, - "text": "patient\nfindings[] keyed by\n(findingCode, locationId)\neach with dated observations[]\nstatus derived, not stored", - "originalText": "patient\nfindings[] keyed by\n(findingCode, locationId)\neach with dated observations[]\nstatus derived, not stored", + "text": "concept only, no artifact", + "originalText": "concept only, no artifact", "fontSize": 13, "fontFamily": 2, "textAlign": "left", @@ -843,45 +797,13 @@ "containerId": null, "lineHeight": 1.25 }, - { - "type": "text", - "id": "status2", - "x": 930, - "y": 323.25, - "width": 250.55999999999997, - "height": 15.0, - "strokeColor": "#3b82f6", - "backgroundColor": "transparent", - "fillStyle": "solid", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 0, - "opacity": 100, - "angle": 0, - "seed": 1049, - "version": 1, - "versionNonce": 1050, - "isDeleted": false, - "groupIds": [], - "boundElements": null, - "link": null, - "locked": false, - "text": "JSON in use; grouping changed on dev", - "originalText": "JSON in use; grouping changed on dev", - "fontSize": 12, - "fontFamily": 2, - "textAlign": "left", - "verticalAlign": "top", - "containerId": null, - "lineHeight": 1.25 - }, { "type": "line", - "id": "tick3", - "x": 1368, - "y": 204, - "width": 0, - "height": 22, + "id": "persona_tick", + "x": 250, + "y": 614.75, + "width": 30, + "height": 0, "strokeColor": "#64748b", "backgroundColor": "transparent", "fillStyle": "solid", @@ -890,9 +812,9 @@ "roughness": 0, "opacity": 100, "angle": 0, - "seed": 1051, + "seed": 1047, "version": 1, - "versionNonce": 1052, + "versionNonce": 1048, "isDeleted": false, "groupIds": [], "boundElements": null, @@ -904,51 +826,65 @@ 0 ], [ - 0, - 22 + 30, + 0 ] ] }, { - "type": "text", - "id": "fields3", - "x": 1360, - "y": 234, - "width": 286.52, - "height": 65.0, - "strokeColor": "#374151", + "type": "arrow", + "id": "a_ipl_persona", + "x": 125.0, + "y": 464.0, + "width": 0.0, + "height": 115.75, + "strokeColor": "#64748b", "backgroundColor": "transparent", "fillStyle": "solid", - "strokeWidth": 1, - "strokeStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "dashed", "roughness": 0, "opacity": 100, "angle": 0, - "seed": 1053, + "seed": 1049, "version": 1, - "versionNonce": 1054, + "versionNonce": 1050, "isDeleted": false, "groupIds": [], "boundElements": null, "link": null, "locked": false, - "text": "clinical context (orders, indications)\nmedical baseline (problems, labs)\nspecialized history (oncology)\nsurgical history (operative, implants)", - "originalText": "clinical context (orders, indications)\nmedical baseline (problems, labs)\nspecialized history (oncology)\nsurgical history (operative, implants)", - "fontSize": 13, - "fontFamily": 2, - "textAlign": "left", - "verticalAlign": "top", - "containerId": null, - "lineHeight": 1.25 + "points": [ + [ + 0, + 0 + ], + [ + 0.0, + 115.75 + ] + ], + "startBinding": { + "elementId": "ipl", + "focus": 0, + "gap": 2 + }, + "endBinding": { + "elementId": "persona", + "focus": 0, + "gap": 2 + }, + "startArrowhead": null, + "endArrowhead": "arrow" }, { "type": "text", - "id": "status3", - "x": 1360, - "y": 323.25, - "width": 174.0, - "height": 15.0, - "strokeColor": "#475569", + "id": "a_ipl_persona_l", + "x": 215.28, + "y": 509.875, + "width": 97.44, + "height": 17.5, + "strokeColor": "#64748b", "backgroundColor": "transparent", "fillStyle": "solid", "strokeWidth": 1, @@ -956,19 +892,19 @@ "roughness": 0, "opacity": 100, "angle": 0, - "seed": 1055, + "seed": 1051, "version": 1, - "versionNonce": 1056, + "versionNonce": 1052, "isDeleted": false, "groupIds": [], "boundElements": null, "link": null, "locked": false, - "text": "concept only, no artifact", - "originalText": "concept only, no artifact", - "fontSize": 12, + "text": "with context", + "originalText": "with context", + "fontSize": 14, "fontFamily": 2, - "textAlign": "left", + "textAlign": "center", "verticalAlign": "top", "containerId": null, "lineHeight": 1.25 @@ -976,10 +912,10 @@ { "type": "text", "id": "note", - "x": 60, - "y": 404, - "width": 1032.98, - "height": 16.25, + "x": 0, + "y": 714.0, + "width": 603.1999999999999, + "height": 32.5, "strokeColor": "#64748b", "backgroundColor": "transparent", "fillStyle": "solid", @@ -988,16 +924,16 @@ "roughness": 0, "opacity": 100, "angle": 0, - "seed": 1057, + "seed": 1053, "version": 1, - "versionNonce": 1058, + "versionNonce": 1054, "isDeleted": false, "groupIds": [], "boundElements": null, "link": null, "locked": false, - "text": "Codes come from the semantic foundation: OIFM and OIFMA identifiers from finding models, RID from anatomic locations, LOINC for the exam.", - "originalText": "Codes come from the semantic foundation: OIFM and OIFMA identifiers from finding models, RID from anatomic locations, LOINC for the exam.", + "text": "Codes come from the semantic foundation: OIFM and OIFMA identifiers from finding\nmodels, RID from anatomic locations, LOINC for the exam.", + "originalText": "Codes come from the semantic foundation: OIFM and OIFMA identifiers from finding\nmodels, RID from anatomic locations, LOINC for the exam.", "fontSize": 13, "fontFamily": 2, "textAlign": "left", diff --git a/knowledge/data-structures/hierarchy.svg b/knowledge/data-structures/hierarchy.svg index 754b156..296fb8b 100644 --- a/knowledge/data-structures/hierarchy.svg +++ b/knowledge/data-structures/hierarchy.svg @@ -1,2 +1,2 @@ -From one observation to a patient's imaging historyEach structure to the right contains the ones to its left and adds one more level of context.Observationone finding, one examExam Finding Listevery observation of one examImaging Problem Listone patient, keyed by findingImaging Personaplus clinical contextper examall examswith contextfindingCode (OIFM)findingDescriptionanatomicLocation (RID)attributes[] with value codesreportTextJSON in use; no published schemadiagnosticReportIdpatientInfoexamInfo with LOINC exam codefindings[]: the observationsJSON in use; no published schemapatientfindings[] keyed by(findingCode, locationId)each with dated observations[]status derived, not storedJSON in use; grouping changed on devclinical context (orders, indications)medical baseline (problems, labs)specialized history (oncology)surgical history (operative, implants)concept only, no artifactCodes come from the semantic foundation: OIFM and OIFMA identifiers from finding models, RID from anatomic locations, LOINC for the exam. \ No newline at end of file +Observationone finding, one examfindingCode (OIFM)findingDescriptionanatomicLocation (RID)attributes[] with value codesreportTextJSON in use; no published schemaExam Finding Listevery observation of one examdiagnosticReportIdpatientInfoexamInfo with LOINC exam codefindings[]: the observationsJSON in use; no published schemaper examImaging Problem Listone patient, keyed by findingpatientfindings[] keyed by(findingCode, locationId)each with dated observations[]status derived, not storedJSON in use; grouping changed on devall examsImaging Personaplus clinical contextclinical context (orders, indications)medical baseline (problems, labs)specialized history (oncology)surgical history (operative, implants)concept only, no artifactwith contextCodes come from the semantic foundation: OIFM and OIFMA identifiers from findingmodels, RID from anatomic locations, LOINC for the exam. \ No newline at end of file diff --git a/knowledge/overview/architecture.excalidraw b/knowledge/overview/architecture.excalidraw index 24376c6..f097d57 100644 --- a/knowledge/overview/architecture.excalidraw +++ b/knowledge/overview/architecture.excalidraw @@ -5,75 +5,11 @@ "elements": [ { "type": "text", - "id": "title", - "x": 60, - "y": 40, - "width": 889.7199999999999, - "height": 32.5, - "strokeColor": "#1e40af", - "backgroundColor": "transparent", - "fillStyle": "solid", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 0, - "opacity": 100, - "angle": 0, - "seed": 1001, - "version": 1, - "versionNonce": 1002, - "isDeleted": false, - "groupIds": [], - "boundElements": null, - "link": null, - "locked": false, - "text": "Open Imaging Data Model: three layers joined by identifiers", - "originalText": "Open Imaging Data Model: three layers joined by identifiers", - "fontSize": 26, - "fontFamily": 2, - "textAlign": "left", - "verticalAlign": "top", - "containerId": null, - "lineHeight": 1.25 - }, - { - "type": "text", - "id": "subtitle", - "x": 60, - "y": 82, - "width": 1177.3999999999999, + "id": "band_app", + "x": 80, + "y": 16, + "width": 97.44, "height": 17.5, - "strokeColor": "#64748b", - "backgroundColor": "transparent", - "fillStyle": "solid", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 0, - "opacity": 100, - "angle": 0, - "seed": 1003, - "version": 1, - "versionNonce": 1004, - "isDeleted": false, - "groupIds": [], - "boundElements": null, - "link": null, - "locked": false, - "text": "Each layer depends on the one below it. Codes minted in the semantic foundation are what the data structures carry and the applications exchange.", - "originalText": "Each layer depends on the one below it. Codes minted in the semantic foundation are what the data structures carry and the applications exchange.", - "fontSize": 14, - "fontFamily": 2, - "textAlign": "left", - "verticalAlign": "top", - "containerId": null, - "lineHeight": 1.25 - }, - { - "type": "text", - "id": "band_applications", - "x": 150, - "y": 126, - "width": 90.47999999999999, - "height": 16.25, "strokeColor": "#3b82f6", "backgroundColor": "transparent", "fillStyle": "solid", @@ -82,9 +18,9 @@ "roughness": 0, "opacity": 100, "angle": 0, - "seed": 1005, + "seed": 1001, "version": 1, - "versionNonce": 1006, + "versionNonce": 1002, "isDeleted": false, "groupIds": [], "boundElements": null, @@ -92,152 +28,20 @@ "locked": false, "text": "APPLICATIONS", "originalText": "APPLICATIONS", - "fontSize": 13, - "fontFamily": 2, - "textAlign": "left", - "verticalAlign": "top", - "containerId": null, - "lineHeight": 1.25 - }, - { - "type": "text", - "id": "band_data", - "x": 150, - "y": 406, - "width": 113.1, - "height": 16.25, - "strokeColor": "#3b82f6", - "backgroundColor": "transparent", - "fillStyle": "solid", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 0, - "opacity": 100, - "angle": 0, - "seed": 1007, - "version": 1, - "versionNonce": 1008, - "isDeleted": false, - "groupIds": [], - "boundElements": null, - "link": null, - "locked": false, - "text": "DATA STRUCTURES", - "originalText": "DATA STRUCTURES", - "fontSize": 13, - "fontFamily": 2, - "textAlign": "left", - "verticalAlign": "top", - "containerId": null, - "lineHeight": 1.25 - }, - { - "type": "text", - "id": "band_semantic", - "x": 150, - "y": 686, - "width": 143.26, - "height": 16.25, - "strokeColor": "#3b82f6", - "backgroundColor": "transparent", - "fillStyle": "solid", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 0, - "opacity": 100, - "angle": 0, - "seed": 1009, - "version": 1, - "versionNonce": 1010, - "isDeleted": false, - "groupIds": [], - "boundElements": null, - "link": null, - "locked": false, - "text": "SEMANTIC FOUNDATION", - "originalText": "SEMANTIC FOUNDATION", - "fontSize": 13, + "fontSize": 14, "fontFamily": 2, "textAlign": "left", "verticalAlign": "top", "containerId": null, "lineHeight": 1.25 }, - { - "type": "line", - "id": "div1", - "x": 40, - "y": 390, - "width": 1440, - "height": 0, - "strokeColor": "#64748b", - "backgroundColor": "transparent", - "fillStyle": "solid", - "strokeWidth": 1, - "strokeStyle": "dashed", - "roughness": 0, - "opacity": 100, - "angle": 0, - "seed": 1011, - "version": 1, - "versionNonce": 1012, - "isDeleted": false, - "groupIds": [], - "boundElements": null, - "link": null, - "locked": false, - "points": [ - [ - 0, - 0 - ], - [ - 1440, - 0 - ] - ] - }, - { - "type": "line", - "id": "div2", - "x": 40, - "y": 670, - "width": 1440, - "height": 0, - "strokeColor": "#64748b", - "backgroundColor": "transparent", - "fillStyle": "solid", - "strokeWidth": 1, - "strokeStyle": "dashed", - "roughness": 0, - "opacity": 100, - "angle": 0, - "seed": 1013, - "version": 1, - "versionNonce": 1014, - "isDeleted": false, - "groupIds": [], - "boundElements": null, - "link": null, - "locked": false, - "points": [ - [ - 0, - 0 - ], - [ - 1440, - 0 - ] - ] - }, { "type": "rectangle", "id": "forge", - "x": 40, - "y": 160, - "width": 260, - "height": 74, + "x": 0, + "y": 40, + "width": 190, + "height": 100, "strokeColor": "#1e3a5f", "backgroundColor": "#60a5fa", "fillStyle": "solid", @@ -246,9 +50,9 @@ "roughness": 0, "opacity": 100, "angle": 0, - "seed": 1015, + "seed": 1003, "version": 1, - "versionNonce": 1016, + "versionNonce": 1004, "isDeleted": false, "groupIds": [], "boundElements": [ @@ -270,10 +74,10 @@ { "type": "text", "id": "forge_t", - "x": 50, - "y": 170, - "width": 240, - "height": 54, + "x": 10, + "y": 50, + "width": 170, + "height": 80, "strokeColor": "#1e3a5f", "backgroundColor": "transparent", "fillStyle": "solid", @@ -282,16 +86,16 @@ "roughness": 0, "opacity": 100, "angle": 0, - "seed": 1017, + "seed": 1005, "version": 1, - "versionNonce": 1018, + "versionNonce": 1006, "isDeleted": false, "groupIds": [], "boundElements": null, "link": null, "locked": false, - "text": "Finding Model Forge\nauthoring wizard, fmf.oidm.org", - "originalText": "Finding Model Forge\nauthoring wizard, fmf.oidm.org", + "text": "Finding Model Forge\nauthoring wizard\nfmf.oidm.org", + "originalText": "Finding Model Forge\nauthoring wizard\nfmf.oidm.org", "fontSize": 16, "fontFamily": 2, "textAlign": "center", @@ -302,10 +106,10 @@ { "type": "rectangle", "id": "extract", - "x": 500, - "y": 160, - "width": 260, - "height": 74, + "x": 296, + "y": 40, + "width": 190, + "height": 100, "strokeColor": "#1e3a5f", "backgroundColor": "#60a5fa", "fillStyle": "solid", @@ -314,9 +118,9 @@ "roughness": 0, "opacity": 100, "angle": 0, - "seed": 1019, + "seed": 1007, "version": 1, - "versionNonce": 1020, + "versionNonce": 1008, "isDeleted": false, "groupIds": [], "boundElements": [ @@ -338,10 +142,10 @@ { "type": "text", "id": "extract_t", - "x": 510, - "y": 170, - "width": 240, - "height": 54, + "x": 306, + "y": 50, + "width": 170, + "height": 80, "strokeColor": "#1e3a5f", "backgroundColor": "transparent", "fillStyle": "solid", @@ -350,16 +154,16 @@ "roughness": 0, "opacity": 100, "angle": 0, - "seed": 1021, + "seed": 1009, "version": 1, - "versionNonce": 1022, + "versionNonce": 1010, "isDeleted": false, "groupIds": [], "boundElements": null, "link": null, "locked": false, - "text": "Report extraction platform\nLLM extraction and coding (dev)", - "originalText": "Report extraction platform\nLLM extraction and coding (dev)", + "text": "Report extraction\nplatform\nLLM extraction\nand coding (dev)", + "originalText": "Report extraction\nplatform\nLLM extraction\nand coding (dev)", "fontSize": 16, "fontFamily": 2, "textAlign": "center", @@ -370,10 +174,10 @@ { "type": "rectangle", "id": "viewer", - "x": 850, - "y": 160, - "width": 260, - "height": 74, + "x": 512, + "y": 40, + "width": 190, + "height": 100, "strokeColor": "#1e3a5f", "backgroundColor": "#60a5fa", "fillStyle": "solid", @@ -382,9 +186,9 @@ "roughness": 0, "opacity": 100, "angle": 0, - "seed": 1023, + "seed": 1011, "version": 1, - "versionNonce": 1024, + "versionNonce": 1012, "isDeleted": false, "groupIds": [], "boundElements": [ @@ -406,10 +210,10 @@ { "type": "text", "id": "viewer_t", - "x": 860, - "y": 170, - "width": 240, - "height": 54, + "x": 522, + "y": 50, + "width": 170, + "height": 80, "strokeColor": "#1e3a5f", "backgroundColor": "transparent", "fillStyle": "solid", @@ -418,16 +222,16 @@ "roughness": 0, "opacity": 100, "angle": 0, - "seed": 1025, + "seed": 1013, "version": 1, - "versionNonce": 1026, + "versionNonce": 1014, "isDeleted": false, "groupIds": [], "boundElements": null, "link": null, "locked": false, - "text": "Imaging Problem List viewer\nimaging-problem-list.pages.dev", - "originalText": "Imaging Problem List viewer\nimaging-problem-list.pages.dev", + "text": "Imaging Problem\nList viewer\nimaging-problem-\nlist.pages.dev", + "originalText": "Imaging Problem\nList viewer\nimaging-problem-\nlist.pages.dev", "fontSize": 16, "fontFamily": 2, "textAlign": "center", @@ -436,31 +240,65 @@ "lineHeight": 1.25 }, { - "type": "text", - "id": "apps_note", - "x": 1200, - "y": 168, - "width": 285.35999999999996, - "height": 45.0, + "type": "line", + "id": "div1", + "x": 0, + "y": 224, + "width": 702, + "height": 0, "strokeColor": "#64748b", "backgroundColor": "transparent", "fillStyle": "solid", "strokeWidth": 1, + "strokeStyle": "dashed", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1015, + "version": 1, + "versionNonce": 1016, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "points": [ + [ + 0, + 0 + ], + [ + 702, + 0 + ] + ] + }, + { + "type": "text", + "id": "band_data", + "x": 80, + "y": 230, + "width": 121.8, + "height": 17.5, + "strokeColor": "#3b82f6", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, "strokeStyle": "solid", "roughness": 0, "opacity": 100, "angle": 0, - "seed": 1027, + "seed": 1017, "version": 1, - "versionNonce": 1028, + "versionNonce": 1018, "isDeleted": false, "groupIds": [], "boundElements": null, "link": null, "locked": false, - "text": "Also: finding-models-site (catalog),\nmed-ontology-lookup (terminology lookup),\nOpen Imaging Reporting SDK (concept only)", - "originalText": "Also: finding-models-site (catalog),\nmed-ontology-lookup (terminology lookup),\nOpen Imaging Reporting SDK (concept only)", - "fontSize": 12, + "text": "DATA STRUCTURES", + "originalText": "DATA STRUCTURES", + "fontSize": 14, "fontFamily": 2, "textAlign": "left", "verticalAlign": "top", @@ -470,10 +308,10 @@ { "type": "rectangle", "id": "obs", - "x": 150, - "y": 440, - "width": 260, - "height": 74, + "x": 80, + "y": 315, + "width": 190, + "height": 80, "strokeColor": "#1e3a5f", "backgroundColor": "#3b82f6", "fillStyle": "solid", @@ -482,9 +320,9 @@ "roughness": 0, "opacity": 100, "angle": 0, - "seed": 1029, + "seed": 1019, "version": 1, - "versionNonce": 1030, + "versionNonce": 1020, "isDeleted": false, "groupIds": [], "boundElements": [ @@ -514,10 +352,10 @@ { "type": "text", "id": "obs_t", - "x": 160, - "y": 450, - "width": 240, - "height": 54, + "x": 90, + "y": 325, + "width": 170, + "height": 60, "strokeColor": "#ffffff", "backgroundColor": "transparent", "fillStyle": "solid", @@ -526,16 +364,16 @@ "roughness": 0, "opacity": 100, "angle": 0, - "seed": 1031, + "seed": 1021, "version": 1, - "versionNonce": 1032, + "versionNonce": 1022, "isDeleted": false, "groupIds": [], "boundElements": null, "link": null, "locked": false, - "text": "Observation\nfinding + location + attributes", - "originalText": "Observation\nfinding + location + attributes", + "text": "Observation\nfinding + location\n+ attributes", + "originalText": "Observation\nfinding + location\n+ attributes", "fontSize": 16, "fontFamily": 2, "textAlign": "center", @@ -546,10 +384,10 @@ { "type": "rectangle", "id": "efl", - "x": 500, - "y": 440, - "width": 260, - "height": 74, + "x": 296, + "y": 315, + "width": 190, + "height": 80, "strokeColor": "#1e3a5f", "backgroundColor": "#3b82f6", "fillStyle": "solid", @@ -558,9 +396,9 @@ "roughness": 0, "opacity": 100, "angle": 0, - "seed": 1033, + "seed": 1023, "version": 1, - "versionNonce": 1034, + "versionNonce": 1024, "isDeleted": false, "groupIds": [], "boundElements": [ @@ -576,10 +414,6 @@ "id": "a_efl_ipl", "type": "arrow" }, - { - "id": "a_et_efl", - "type": "arrow" - }, { "id": "a_extract_efl", "type": "arrow" @@ -594,10 +428,10 @@ { "type": "text", "id": "efl_t", - "x": 510, - "y": 450, - "width": 240, - "height": 54, + "x": 306, + "y": 325, + "width": 170, + "height": 60, "strokeColor": "#ffffff", "backgroundColor": "transparent", "fillStyle": "solid", @@ -606,16 +440,16 @@ "roughness": 0, "opacity": 100, "angle": 0, - "seed": 1035, + "seed": 1025, "version": 1, - "versionNonce": 1036, + "versionNonce": 1026, "isDeleted": false, "groupIds": [], "boundElements": null, "link": null, "locked": false, - "text": "Exam Finding List\nall observations of one exam", - "originalText": "Exam Finding List\nall observations of one exam", + "text": "Exam Finding List\nall observations\nof one exam", + "originalText": "Exam Finding List\nall observations\nof one exam", "fontSize": 16, "fontFamily": 2, "textAlign": "center", @@ -626,10 +460,10 @@ { "type": "rectangle", "id": "ipl", - "x": 850, - "y": 440, - "width": 260, - "height": 74, + "x": 512, + "y": 315, + "width": 190, + "height": 80, "strokeColor": "#1e3a5f", "backgroundColor": "#3b82f6", "fillStyle": "solid", @@ -638,9 +472,9 @@ "roughness": 0, "opacity": 100, "angle": 0, - "seed": 1037, + "seed": 1027, "version": 1, - "versionNonce": 1038, + "versionNonce": 1028, "isDeleted": false, "groupIds": [], "boundElements": [ @@ -652,10 +486,6 @@ "id": "a_efl_ipl", "type": "arrow" }, - { - "id": "a_ipl_persona", - "type": "arrow" - }, { "id": "a_ipl_viewer", "type": "arrow" @@ -670,10 +500,10 @@ { "type": "text", "id": "ipl_t", - "x": 860, - "y": 450, - "width": 240, - "height": 54, + "x": 522, + "y": 325, + "width": 170, + "height": 60, "strokeColor": "#ffffff", "backgroundColor": "transparent", "fillStyle": "solid", @@ -682,16 +512,16 @@ "roughness": 0, "opacity": 100, "angle": 0, - "seed": 1039, + "seed": 1029, "version": 1, - "versionNonce": 1040, + "versionNonce": 1030, "isDeleted": false, "groupIds": [], "boundElements": null, "link": null, "locked": false, - "text": "Imaging Problem List\none patient, grouped by finding", - "originalText": "Imaging Problem List\none patient, grouped by finding", + "text": "Imaging Problem List\none patient, grouped\nby finding", + "originalText": "Imaging Problem List\none patient, grouped\nby finding", "fontSize": 16, "fontFamily": 2, "textAlign": "center", @@ -700,49 +530,137 @@ "lineHeight": 1.25 }, { - "type": "rectangle", - "id": "persona", - "x": 1200, - "y": 440, - "width": 260, - "height": 74, + "type": "arrow", + "id": "a_obs_efl", + "x": 270, + "y": 355.0, + "width": 26, + "height": 0.0, "strokeColor": "#64748b", - "backgroundColor": "#ffffff", + "backgroundColor": "transparent", "fillStyle": "solid", "strokeWidth": 2, - "strokeStyle": "dashed", + "strokeStyle": "solid", "roughness": 0, "opacity": 100, "angle": 0, - "seed": 1041, + "seed": 1031, "version": 1, - "versionNonce": 1042, + "versionNonce": 1032, "isDeleted": false, "groupIds": [], - "boundElements": [ - { - "id": "persona_t", - "type": "text" - }, - { - "id": "a_ipl_persona", - "type": "arrow" - } + "boundElements": null, + "link": null, + "locked": false, + "points": [ + [ + 0, + 0 + ], + [ + 26, + 0.0 + ] ], + "startBinding": { + "elementId": "obs", + "focus": 0, + "gap": 2 + }, + "endBinding": { + "elementId": "efl", + "focus": 0, + "gap": 2 + }, + "startArrowhead": null, + "endArrowhead": "arrow" + }, + { + "type": "text", + "id": "a_obs_efl_l", + "x": 250.52, + "y": 267.0, + "width": 64.96, + "height": 17.5, + "strokeColor": "#64748b", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1033, + "version": 1, + "versionNonce": 1034, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "per exam", + "originalText": "per exam", + "fontSize": 14, + "fontFamily": 2, + "textAlign": "center", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 + }, + { + "type": "arrow", + "id": "a_efl_ipl", + "x": 486, + "y": 355.0, + "width": 26, + "height": 0.0, + "strokeColor": "#64748b", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1035, + "version": 1, + "versionNonce": 1036, + "isDeleted": false, + "groupIds": [], + "boundElements": null, "link": null, "locked": false, - "roundness": { - "type": 3 - } + "points": [ + [ + 0, + 0 + ], + [ + 26, + 0.0 + ] + ], + "startBinding": { + "elementId": "efl", + "focus": 0, + "gap": 2 + }, + "endBinding": { + "elementId": "ipl", + "focus": 0, + "gap": 2 + }, + "startArrowhead": null, + "endArrowhead": "arrow" }, { "type": "text", - "id": "persona_t", - "x": 1210, - "y": 450, - "width": 240, - "height": 54, - "strokeColor": "#475569", + "id": "a_efl_ipl_l", + "x": 454.34000000000003, + "y": 267.0, + "width": 89.32, + "height": 17.5, + "strokeColor": "#64748b", "backgroundColor": "transparent", "fillStyle": "solid", "strokeWidth": 1, @@ -750,30 +668,30 @@ "roughness": 0, "opacity": 100, "angle": 0, - "seed": 1043, + "seed": 1037, "version": 1, - "versionNonce": 1044, + "versionNonce": 1038, "isDeleted": false, "groupIds": [], "boundElements": null, "link": null, "locked": false, - "text": "Imaging Persona\nplus clinical context (concept)", - "originalText": "Imaging Persona\nplus clinical context (concept)", - "fontSize": 16, + "text": "per patient", + "originalText": "per patient", + "fontSize": 14, "fontFamily": 2, "textAlign": "center", - "verticalAlign": "middle", - "containerId": "persona", + "verticalAlign": "top", + "containerId": null, "lineHeight": 1.25 }, { "type": "arrow", - "id": "a_obs_efl", - "x": 410, - "y": 477.0, - "width": 90, - "height": 0.0, + "id": "a_extract_efl", + "x": 391.0, + "y": 140, + "width": 0.0, + "height": 175, "strokeColor": "#64748b", "backgroundColor": "transparent", "fillStyle": "solid", @@ -782,9 +700,9 @@ "roughness": 0, "opacity": 100, "angle": 0, - "seed": 1045, + "seed": 1039, "version": 1, - "versionNonce": 1046, + "versionNonce": 1040, "isDeleted": false, "groupIds": [], "boundElements": null, @@ -796,12 +714,12 @@ 0 ], [ - 90, - 0.0 + 0.0, + 175 ] ], "startBinding": { - "elementId": "obs", + "elementId": "extract", "focus": 0, "gap": 2 }, @@ -815,11 +733,11 @@ }, { "type": "text", - "id": "a_obs_efl_l", - "x": 427.16, - "y": 455.0, - "width": 55.67999999999999, - "height": 15.0, + "id": "a_extract_efl_l", + "x": 338.22, + "y": 177.5, + "width": 105.55999999999999, + "height": 35.0, "strokeColor": "#64748b", "backgroundColor": "transparent", "fillStyle": "solid", @@ -828,17 +746,17 @@ "roughness": 0, "opacity": 100, "angle": 0, - "seed": 1047, + "seed": 1041, "version": 1, - "versionNonce": 1048, + "versionNonce": 1042, "isDeleted": false, "groupIds": [], "boundElements": null, "link": null, "locked": false, - "text": "per exam", - "originalText": "per exam", - "fontSize": 12, + "text": "extracts from\nreports", + "originalText": "extracts from\nreports", + "fontSize": 14, "fontFamily": 2, "textAlign": "center", "verticalAlign": "top", @@ -847,11 +765,11 @@ }, { "type": "arrow", - "id": "a_efl_ipl", - "x": 760, - "y": 477.0, - "width": 90, - "height": 0.0, + "id": "a_ipl_viewer", + "x": 607.0, + "y": 315, + "width": 0.0, + "height": -175, "strokeColor": "#64748b", "backgroundColor": "transparent", "fillStyle": "solid", @@ -860,9 +778,9 @@ "roughness": 0, "opacity": 100, "angle": 0, - "seed": 1049, + "seed": 1043, "version": 1, - "versionNonce": 1050, + "versionNonce": 1044, "isDeleted": false, "groupIds": [], "boundElements": null, @@ -874,17 +792,17 @@ 0 ], [ - 90, - 0.0 + 0.0, + -175 ] ], "startBinding": { - "elementId": "efl", + "elementId": "ipl", "focus": 0, "gap": 2 }, "endBinding": { - "elementId": "ipl", + "elementId": "viewer", "focus": 0, "gap": 2 }, @@ -893,12 +811,108 @@ }, { "type": "text", - "id": "a_efl_ipl_l", - "x": 766.72, - "y": 455.0, - "width": 76.55999999999999, - "height": 15.0, + "id": "a_ipl_viewer_l", + "x": 578.58, + "y": 195.5, + "width": 56.839999999999996, + "height": 17.5, + "strokeColor": "#64748b", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1045, + "version": 1, + "versionNonce": 1046, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "renders", + "originalText": "renders", + "fontSize": 14, + "fontFamily": 2, + "textAlign": "center", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 + }, + { + "type": "rectangle", + "id": "persona", + "x": 512, + "y": 455, + "width": 190, + "height": 80, "strokeColor": "#64748b", + "backgroundColor": "#ffffff", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "dashed", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1047, + "version": 1, + "versionNonce": 1048, + "isDeleted": false, + "groupIds": [], + "boundElements": [ + { + "id": "persona_t", + "type": "text" + } + ], + "link": null, + "locked": false, + "roundness": { + "type": 3 + } + }, + { + "type": "text", + "id": "persona_t", + "x": 522, + "y": 465, + "width": 170, + "height": 60, + "strokeColor": "#475569", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1049, + "version": 1, + "versionNonce": 1050, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "Imaging Persona\nplus clinical\ncontext (concept)", + "originalText": "Imaging Persona\nplus clinical\ncontext (concept)", + "fontSize": 16, + "fontFamily": 2, + "textAlign": "center", + "verticalAlign": "middle", + "containerId": "persona", + "lineHeight": 1.25 + }, + { + "type": "text", + "id": "persona_note", + "x": 512, + "y": 549, + "width": 188.5, + "height": 32.5, + "strokeColor": "#475569", "backgroundColor": "transparent", "fillStyle": "solid", "strokeWidth": 1, @@ -914,26 +928,26 @@ "boundElements": null, "link": null, "locked": false, - "text": "per patient", - "originalText": "per patient", - "fontSize": 12, + "text": "goal: extends the Imaging\nProblem List with context", + "originalText": "goal: extends the Imaging\nProblem List with context", + "fontSize": 13, "fontFamily": 2, - "textAlign": "center", + "textAlign": "left", "verticalAlign": "top", "containerId": null, "lineHeight": 1.25 }, { - "type": "arrow", - "id": "a_ipl_persona", - "x": 1110, - "y": 477.0, - "width": 90, - "height": 0.0, + "type": "line", + "id": "div2", + "x": 0, + "y": 619, + "width": 702, + "height": 0, "strokeColor": "#64748b", "backgroundColor": "transparent", "fillStyle": "solid", - "strokeWidth": 2, + "strokeWidth": 1, "strokeStyle": "dashed", "roughness": 0, "opacity": 100, @@ -952,31 +966,19 @@ 0 ], [ - 90, - 0.0 + 702, + 0 ] - ], - "startBinding": { - "elementId": "ipl", - "focus": 0, - "gap": 2 - }, - "endBinding": { - "elementId": "persona", - "focus": 0, - "gap": 2 - }, - "startArrowhead": null, - "endArrowhead": "arrow" + ] }, { "type": "text", - "id": "a_ipl_persona_l", - "x": 1141.08, - "y": 455.0, - "width": 27.839999999999996, - "height": 15.0, - "strokeColor": "#64748b", + "id": "band_found", + "x": 80, + "y": 625, + "width": 154.28, + "height": 17.5, + "strokeColor": "#3b82f6", "backgroundColor": "transparent", "fillStyle": "solid", "strokeWidth": 1, @@ -992,11 +994,11 @@ "boundElements": null, "link": null, "locked": false, - "text": "goal", - "originalText": "goal", - "fontSize": 12, + "text": "SEMANTIC FOUNDATION", + "originalText": "SEMANTIC FOUNDATION", + "fontSize": 14, "fontFamily": 2, - "textAlign": "center", + "textAlign": "left", "verticalAlign": "top", "containerId": null, "lineHeight": 1.25 @@ -1004,10 +1006,10 @@ { "type": "rectangle", "id": "fm", - "x": 150, - "y": 720, - "width": 260, - "height": 74, + "x": 80, + "y": 649, + "width": 190, + "height": 80, "strokeColor": "#1e3a5f", "backgroundColor": "#93c5fd", "fillStyle": "solid", @@ -1044,10 +1046,10 @@ { "type": "text", "id": "fm_t", - "x": 160, - "y": 730, - "width": 240, - "height": 54, + "x": 90, + "y": 659, + "width": 170, + "height": 60, "strokeColor": "#1e3a5f", "backgroundColor": "transparent", "fillStyle": "solid", @@ -1064,8 +1066,8 @@ "boundElements": null, "link": null, "locked": false, - "text": "Finding models\nOIFM_ / OIFMA_ codes", - "originalText": "Finding models\nOIFM_ / OIFMA_ codes", + "text": "Finding models\nOIFM_ / OIFMA_\ncodes", + "originalText": "Finding models\nOIFM_ / OIFMA_\ncodes", "fontSize": 16, "fontFamily": 2, "textAlign": "center", @@ -1076,10 +1078,10 @@ { "type": "rectangle", "id": "al", - "x": 500, - "y": 720, - "width": 260, - "height": 74, + "x": 296, + "y": 649, + "width": 190, + "height": 80, "strokeColor": "#1e3a5f", "backgroundColor": "#93c5fd", "fillStyle": "solid", @@ -1112,10 +1114,10 @@ { "type": "text", "id": "al_t", - "x": 510, - "y": 730, - "width": 240, - "height": 54, + "x": 306, + "y": 659, + "width": 170, + "height": 60, "strokeColor": "#1e3a5f", "backgroundColor": "transparent", "fillStyle": "solid", @@ -1144,10 +1146,10 @@ { "type": "rectangle", "id": "et", - "x": 850, - "y": 720, - "width": 260, - "height": 74, + "x": 512, + "y": 649, + "width": 190, + "height": 80, "strokeColor": "#64748b", "backgroundColor": "#ffffff", "fillStyle": "solid", @@ -1165,10 +1167,6 @@ { "id": "et_t", "type": "text" - }, - { - "id": "a_et_efl", - "type": "arrow" } ], "link": null, @@ -1180,10 +1178,10 @@ { "type": "text", "id": "et_t", - "x": 860, - "y": 730, - "width": 240, - "height": 54, + "x": 522, + "y": 659, + "width": 170, + "height": 60, "strokeColor": "#475569", "backgroundColor": "transparent", "fillStyle": "solid", @@ -1200,87 +1198,23 @@ "boundElements": null, "link": null, "locked": false, - "text": "Exam types\nLOINC / Playbook (planned)", - "originalText": "Exam types\nLOINC / Playbook (planned)", - "fontSize": 16, - "fontFamily": 2, - "textAlign": "center", - "verticalAlign": "middle", - "containerId": "et", - "lineHeight": 1.25 - }, - { - "type": "rectangle", - "id": "cde", - "x": 1200, - "y": 720, - "width": 260, - "height": 74, - "strokeColor": "#c2410c", - "backgroundColor": "#fed7aa", - "fillStyle": "solid", - "strokeWidth": 2, - "strokeStyle": "solid", - "roughness": 0, - "opacity": 100, - "angle": 0, - "seed": 1069, - "version": 1, - "versionNonce": 1070, - "isDeleted": false, - "groupIds": [], - "boundElements": [ - { - "id": "cde_t", - "type": "text" - } - ], - "link": null, - "locked": false, - "roundness": { - "type": 3 - } - }, - { - "type": "text", - "id": "cde_t", - "x": 1210, - "y": 730, - "width": 240, - "height": 54, - "strokeColor": "#7c2d12", - "backgroundColor": "transparent", - "fillStyle": "solid", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 0, - "opacity": 100, - "angle": 0, - "seed": 1071, - "version": 1, - "versionNonce": 1072, - "isDeleted": false, - "groupIds": [], - "boundElements": null, - "link": null, - "locked": false, - "text": "ACR/RSNA CDEs at RadElement\nRDES / RDE codes (allied project)", - "originalText": "ACR/RSNA CDEs at RadElement\nRDES / RDE codes (allied project)", + "text": "Exam types\nLOINC / Playbook\n(planned)", + "originalText": "Exam types\nLOINC / Playbook\n(planned)", "fontSize": 16, "fontFamily": 2, "textAlign": "center", "verticalAlign": "middle", - "containerId": "cde", + "containerId": "et", "lineHeight": 1.25 }, { "type": "text", - "id": "terms", - "x": 150, - "y": 834, - "width": 1048.06, - "height": 16.25, - "strokeColor": "#64748b", + "id": "et_note", + "x": 512, + "y": 743, + "width": 135.72, + "height": 48.75, + "strokeColor": "#475569", "backgroundColor": "transparent", "fillStyle": "solid", "strokeWidth": 1, @@ -1288,16 +1222,16 @@ "roughness": 0, "opacity": 100, "angle": 0, - "seed": 1073, + "seed": 1069, "version": 1, - "versionNonce": 1074, + "versionNonce": 1070, "isDeleted": false, "groupIds": [], "boundElements": null, "link": null, "locked": false, - "text": "Terminologies underneath: RadLex, SNOMED CT, FMA, UMLS, MeSH, LOINC and the RSNA Radiology Playbook. Looked up through med-ontology-lookup.", - "originalText": "Terminologies underneath: RadLex, SNOMED CT, FMA, UMLS, MeSH, LOINC and the RSNA Radiology Playbook. Looked up through med-ontology-lookup.", + "text": "supplies the LOINC\nexam code on the\nExam Finding List", + "originalText": "supplies the LOINC\nexam code on the\nExam Finding List", "fontSize": 13, "fontFamily": 2, "textAlign": "left", @@ -1308,10 +1242,10 @@ { "type": "arrow", "id": "a_fm_obs", - "x": 280.0, - "y": 720, + "x": 254.8, + "y": 649, "width": 0.0, - "height": -206, + "height": -254, "strokeColor": "#64748b", "backgroundColor": "transparent", "fillStyle": "solid", @@ -1320,9 +1254,9 @@ "roughness": 0, "opacity": 100, "angle": 0, - "seed": 1075, + "seed": 1071, "version": 1, - "versionNonce": 1076, + "versionNonce": 1072, "isDeleted": false, "groupIds": [], "boundElements": null, @@ -1335,7 +1269,7 @@ ], [ 0.0, - -206 + -254 ] ], "startBinding": { @@ -1354,10 +1288,10 @@ { "type": "text", "id": "a_fm_obs_l", - "x": 300.4, - "y": 595.0, - "width": 139.2, - "height": 15.0, + "x": 140.14000000000001, + "y": 482.0, + "width": 89.32, + "height": 35.0, "strokeColor": "#64748b", "backgroundColor": "transparent", "fillStyle": "solid", @@ -1366,17 +1300,17 @@ "roughness": 0, "opacity": 100, "angle": 0, - "seed": 1077, + "seed": 1073, "version": 1, - "versionNonce": 1078, + "versionNonce": 1074, "isDeleted": false, "groupIds": [], "boundElements": null, "link": null, "locked": false, - "text": "OIFM and OIFMA codes", - "originalText": "OIFM and OIFMA codes", - "fontSize": 12, + "text": "OIFM and\nOIFMA codes", + "originalText": "OIFM and\nOIFMA codes", + "fontSize": 14, "fontFamily": 2, "textAlign": "center", "verticalAlign": "top", @@ -1386,10 +1320,10 @@ { "type": "arrow", "id": "a_al_obs", - "x": 630.0, - "y": 720, - "width": -259.0, - "height": -206, + "x": 391.0, + "y": 649, + "width": -159.0, + "height": -254, "strokeColor": "#64748b", "backgroundColor": "transparent", "fillStyle": "solid", @@ -1398,9 +1332,9 @@ "roughness": 0, "opacity": 100, "angle": 0, - "seed": 1079, + "seed": 1075, "version": 1, - "versionNonce": 1080, + "versionNonce": 1076, "isDeleted": false, "groupIds": [], "boundElements": null, @@ -1412,8 +1346,8 @@ 0 ], [ - -259.0, - -206 + -159.0, + -254 ] ], "startBinding": { @@ -1432,10 +1366,10 @@ { "type": "text", "id": "a_al_obs_l", - "x": 520.06, - "y": 595.0, - "width": 20.88, - "height": 15.0, + "x": 343.32, + "y": 482.0, + "width": 24.36, + "height": 17.5, "strokeColor": "#64748b", "backgroundColor": "transparent", "fillStyle": "solid", @@ -1444,9 +1378,9 @@ "roughness": 0, "opacity": 100, "angle": 0, - "seed": 1081, + "seed": 1077, "version": 1, - "versionNonce": 1082, + "versionNonce": 1078, "isDeleted": false, "groupIds": [], "boundElements": null, @@ -1454,130 +1388,20 @@ "locked": false, "text": "RID", "originalText": "RID", - "fontSize": 12, - "fontFamily": 2, - "textAlign": "center", - "verticalAlign": "top", - "containerId": null, - "lineHeight": 1.25 - }, - { - "type": "arrow", - "id": "a_et_efl", - "x": 980.0, - "y": 720, - "width": -259.0, - "height": -206, - "strokeColor": "#64748b", - "backgroundColor": "transparent", - "fillStyle": "solid", - "strokeWidth": 2, - "strokeStyle": "dashed", - "roughness": 0, - "opacity": 100, - "angle": 0, - "seed": 1083, - "version": 1, - "versionNonce": 1084, - "isDeleted": false, - "groupIds": [], - "boundElements": null, - "link": null, - "locked": false, - "points": [ - [ - 0, - 0 - ], - [ - -259.0, - -206 - ] - ], - "startBinding": { - "elementId": "et", - "focus": 0, - "gap": 2 - }, - "endBinding": { - "elementId": "efl", - "focus": 0, - "gap": 2 - }, - "startArrowhead": null, - "endArrowhead": "arrow" - }, - { - "type": "text", - "id": "a_et_efl_l", - "x": 838.3, - "y": 595.0, - "width": 104.39999999999999, - "height": 15.0, - "strokeColor": "#64748b", - "backgroundColor": "transparent", - "fillStyle": "solid", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 0, - "opacity": 100, - "angle": 0, - "seed": 1085, - "version": 1, - "versionNonce": 1086, - "isDeleted": false, - "groupIds": [], - "boundElements": null, - "link": null, - "locked": false, - "text": "LOINC exam code", - "originalText": "LOINC exam code", - "fontSize": 12, + "fontSize": 14, "fontFamily": 2, "textAlign": "center", "verticalAlign": "top", "containerId": null, "lineHeight": 1.25 }, - { - "type": "text", - "id": "cde_note", - "x": 1200, - "y": 806, - "width": 473.28, - "height": 15.0, - "strokeColor": "#7c2d12", - "backgroundColor": "transparent", - "fillStyle": "solid", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 0, - "opacity": 100, - "angle": 0, - "seed": 1089, - "version": 1, - "versionNonce": 1090, - "isDeleted": false, - "groupIds": [], - "boundElements": null, - "link": null, - "locked": false, - "text": "finding models graduate to CDEs; CDE definitions seed finding models", - "originalText": "finding models graduate to CDEs; CDE definitions seed finding models", - "fontSize": 12, - "fontFamily": 2, - "textAlign": "left", - "verticalAlign": "top", - "containerId": null, - "lineHeight": 1.25 - }, { "type": "arrow", "id": "a_forge_fm", - "x": 71.2, - "y": 234, - "width": 78.8, - "height": 523.0, + "x": 19.0, + "y": 140, + "width": 61.0, + "height": 549.0, "strokeColor": "#64748b", "backgroundColor": "transparent", "fillStyle": "solid", @@ -1586,9 +1410,9 @@ "roughness": 0, "opacity": 100, "angle": 0, - "seed": 1091, + "seed": 1079, "version": 1, - "versionNonce": 1092, + "versionNonce": 1080, "isDeleted": false, "groupIds": [], "boundElements": null, @@ -1601,11 +1425,11 @@ ], [ 0, - 523.0 + 549.0 ], [ - 78.8, - 523.0 + 61.0, + 549.0 ] ], "startBinding": { @@ -1624,10 +1448,10 @@ { "type": "text", "id": "a_forge_fm_l", - "x": 82.24, - "y": 481.5, - "width": 48.72, - "height": 15.0, + "x": 11.080000000000002, + "y": 434.5, + "width": 56.839999999999996, + "height": 17.5, "strokeColor": "#64748b", "backgroundColor": "transparent", "fillStyle": "solid", @@ -1636,9 +1460,9 @@ "roughness": 0, "opacity": 100, "angle": 0, - "seed": 1093, + "seed": 1081, "version": 1, - "versionNonce": 1094, + "versionNonce": 1082, "isDeleted": false, "groupIds": [], "boundElements": null, @@ -1646,7 +1470,7 @@ "locked": false, "text": "authors", "originalText": "authors", - "fontSize": 12, + "fontSize": 14, "fontFamily": 2, "textAlign": "center", "verticalAlign": "top", @@ -1654,59 +1478,45 @@ "lineHeight": 1.25 }, { - "type": "arrow", - "id": "a_extract_efl", - "x": 630.0, - "y": 234, - "width": 0.0, - "height": 206, - "strokeColor": "#64748b", - "backgroundColor": "transparent", + "type": "rectangle", + "id": "cde", + "x": 80, + "y": 789, + "width": 190, + "height": 100, + "strokeColor": "#c2410c", + "backgroundColor": "#fed7aa", "fillStyle": "solid", "strokeWidth": 2, "strokeStyle": "solid", "roughness": 0, "opacity": 100, "angle": 0, - "seed": 1095, + "seed": 1083, "version": 1, - "versionNonce": 1096, + "versionNonce": 1084, "isDeleted": false, "groupIds": [], - "boundElements": null, + "boundElements": [ + { + "id": "cde_t", + "type": "text" + } + ], "link": null, "locked": false, - "points": [ - [ - 0, - 0 - ], - [ - 0.0, - 206 - ] - ], - "startBinding": { - "elementId": "extract", - "focus": 0, - "gap": 2 - }, - "endBinding": { - "elementId": "efl", - "focus": 0, - "gap": 2 - }, - "startArrowhead": null, - "endArrowhead": "arrow" + "roundness": { + "type": 3 + } }, { "type": "text", - "id": "a_extract_efl_l", - "x": 556.92, - "y": 315.0, - "width": 146.16, - "height": 15.0, - "strokeColor": "#64748b", + "id": "cde_t", + "x": 90, + "y": 799, + "width": 170, + "height": 80, + "strokeColor": "#7c2d12", "backgroundColor": "transparent", "fillStyle": "solid", "strokeWidth": 1, @@ -1714,76 +1524,62 @@ "roughness": 0, "opacity": 100, "angle": 0, - "seed": 1097, + "seed": 1085, "version": 1, - "versionNonce": 1098, + "versionNonce": 1086, "isDeleted": false, "groupIds": [], "boundElements": null, "link": null, "locked": false, - "text": "extracts from reports", - "originalText": "extracts from reports", - "fontSize": 12, + "text": "ACR/RSNA CDEs at\nRadElement\nRDES / RDE codes\n(allied project)", + "originalText": "ACR/RSNA CDEs at\nRadElement\nRDES / RDE codes\n(allied project)", + "fontSize": 16, "fontFamily": 2, "textAlign": "center", - "verticalAlign": "top", - "containerId": null, + "verticalAlign": "middle", + "containerId": "cde", "lineHeight": 1.25 }, { - "type": "arrow", - "id": "a_ipl_viewer", - "x": 980.0, - "y": 440, - "width": 0.0, - "height": -206, - "strokeColor": "#64748b", + "type": "text", + "id": "cde_note", + "x": 296, + "y": 807, + "width": 263.9, + "height": 32.5, + "strokeColor": "#7c2d12", "backgroundColor": "transparent", "fillStyle": "solid", - "strokeWidth": 2, + "strokeWidth": 1, "strokeStyle": "solid", "roughness": 0, "opacity": 100, "angle": 0, - "seed": 1099, + "seed": 1087, "version": 1, - "versionNonce": 1100, + "versionNonce": 1088, "isDeleted": false, "groupIds": [], "boundElements": null, "link": null, "locked": false, - "points": [ - [ - 0, - 0 - ], - [ - 0.0, - -206 - ] - ], - "startBinding": { - "elementId": "ipl", - "focus": 0, - "gap": 2 - }, - "endBinding": { - "elementId": "viewer", - "focus": 0, - "gap": 2 - }, - "startArrowhead": null, - "endArrowhead": "arrow" + "text": "finding models graduate to CDEs;\nCDE definitions seed finding models", + "originalText": "finding models graduate to CDEs;\nCDE definitions seed finding models", + "fontSize": 13, + "fontFamily": 2, + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 }, { "type": "text", - "id": "a_ipl_viewer_l", - "x": 955.64, - "y": 315.0, - "width": 48.72, - "height": 15.0, + "id": "terms", + "x": 0, + "y": 929, + "width": 603.1999999999999, + "height": 32.5, "strokeColor": "#64748b", "backgroundColor": "transparent", "fillStyle": "solid", @@ -1792,19 +1588,19 @@ "roughness": 0, "opacity": 100, "angle": 0, - "seed": 1101, + "seed": 1089, "version": 1, - "versionNonce": 1102, + "versionNonce": 1090, "isDeleted": false, "groupIds": [], "boundElements": null, "link": null, "locked": false, - "text": "renders", - "originalText": "renders", - "fontSize": 12, + "text": "Terminologies underneath: RadLex, SNOMED CT, FMA, UMLS, MeSH, LOINC and the RSNA\nRadiology Playbook. Looked up through med-ontology-lookup.", + "originalText": "Terminologies underneath: RadLex, SNOMED CT, FMA, UMLS, MeSH, LOINC and the RSNA\nRadiology Playbook. Looked up through med-ontology-lookup.", + "fontSize": 13, "fontFamily": 2, - "textAlign": "center", + "textAlign": "left", "verticalAlign": "top", "containerId": null, "lineHeight": 1.25 @@ -1812,8 +1608,8 @@ { "type": "text", "id": "legend_t", - "x": 1200, - "y": 874, + "x": 0, + "y": 983.5, "width": 45.239999999999995, "height": 16.25, "strokeColor": "#3b82f6", @@ -1824,9 +1620,9 @@ "roughness": 0, "opacity": 100, "angle": 0, - "seed": 1103, + "seed": 1091, "version": 1, - "versionNonce": 1104, + "versionNonce": 1092, "isDeleted": false, "groupIds": [], "boundElements": null, @@ -1844,8 +1640,8 @@ { "type": "rectangle", "id": "lg0", - "x": 1200, - "y": 898, + "x": 0, + "y": 1007.5, "width": 18, "height": 14, "strokeColor": "#1e3a5f", @@ -1856,9 +1652,9 @@ "roughness": 0, "opacity": 100, "angle": 0, - "seed": 1105, + "seed": 1093, "version": 1, - "versionNonce": 1106, + "versionNonce": 1094, "isDeleted": false, "groupIds": [], "boundElements": null, @@ -1871,10 +1667,10 @@ { "type": "text", "id": "lg0_t", - "x": 1226, - "y": 896, - "width": 187.92, - "height": 15.0, + "x": 26, + "y": 1005.5, + "width": 203.57999999999998, + "height": 16.25, "strokeColor": "#64748b", "backgroundColor": "transparent", "fillStyle": "solid", @@ -1883,9 +1679,9 @@ "roughness": 0, "opacity": 100, "angle": 0, - "seed": 1107, + "seed": 1095, "version": 1, - "versionNonce": 1108, + "versionNonce": 1096, "isDeleted": false, "groupIds": [], "boundElements": null, @@ -1893,7 +1689,7 @@ "locked": false, "text": "solid outline: exists today", "originalText": "solid outline: exists today", - "fontSize": 12, + "fontSize": 13, "fontFamily": 2, "textAlign": "left", "verticalAlign": "top", @@ -1903,8 +1699,8 @@ { "type": "rectangle", "id": "lg1", - "x": 1200, - "y": 922, + "x": 0, + "y": 1029.5, "width": 18, "height": 14, "strokeColor": "#64748b", @@ -1915,9 +1711,9 @@ "roughness": 0, "opacity": 100, "angle": 0, - "seed": 1109, + "seed": 1097, "version": 1, - "versionNonce": 1110, + "versionNonce": 1098, "isDeleted": false, "groupIds": [], "boundElements": null, @@ -1930,10 +1726,10 @@ { "type": "text", "id": "lg1_t", - "x": 1226, - "y": 920, - "width": 292.32, - "height": 15.0, + "x": 26, + "y": 1027.5, + "width": 316.67999999999995, + "height": 16.25, "strokeColor": "#64748b", "backgroundColor": "transparent", "fillStyle": "solid", @@ -1942,9 +1738,9 @@ "roughness": 0, "opacity": 100, "angle": 0, - "seed": 1111, + "seed": 1099, "version": 1, - "versionNonce": 1112, + "versionNonce": 1100, "isDeleted": false, "groupIds": [], "boundElements": null, @@ -1952,7 +1748,7 @@ "locked": false, "text": "dashed outline: documented or planned only", "originalText": "dashed outline: documented or planned only", - "fontSize": 12, + "fontSize": 13, "fontFamily": 2, "textAlign": "left", "verticalAlign": "top", @@ -1962,8 +1758,8 @@ { "type": "rectangle", "id": "lg2", - "x": 1200, - "y": 946, + "x": 0, + "y": 1051.5, "width": 18, "height": 14, "strokeColor": "#c2410c", @@ -1974,9 +1770,9 @@ "roughness": 0, "opacity": 100, "angle": 0, - "seed": 1113, + "seed": 1101, "version": 1, - "versionNonce": 1114, + "versionNonce": 1102, "isDeleted": false, "groupIds": [], "boundElements": null, @@ -1989,10 +1785,10 @@ { "type": "text", "id": "lg2_t", - "x": 1226, - "y": 944, - "width": 215.76, - "height": 15.0, + "x": 26, + "y": 1049.5, + "width": 233.73999999999998, + "height": 16.25, "strokeColor": "#64748b", "backgroundColor": "transparent", "fillStyle": "solid", @@ -2001,9 +1797,9 @@ "roughness": 0, "opacity": 100, "angle": 0, - "seed": 1115, + "seed": 1103, "version": 1, - "versionNonce": 1116, + "versionNonce": 1104, "isDeleted": false, "groupIds": [], "boundElements": null, @@ -2011,7 +1807,7 @@ "locked": false, "text": "orange: allied external project", "originalText": "orange: allied external project", - "fontSize": 12, + "fontSize": 13, "fontFamily": 2, "textAlign": "left", "verticalAlign": "top", diff --git a/knowledge/overview/architecture.md b/knowledge/overview/architecture.md index 72381c4..93c8a9a 100644 --- a/knowledge/overview/architecture.md +++ b/knowledge/overview/architecture.md @@ -55,6 +55,8 @@ Shared identifiers let systems agree that a finding is `OIFM_GMTS_016552` at `RI [![Open Imaging Data Model: three layers joined by identifiers. Applications on top, data structures in the middle, semantic foundation below, with arrows showing which codes join them.](./architecture.svg)](./architecture.svg) +Also in the applications layer, not drawn: the finding model catalog site, the terminology lookup library, and the Open Imaging Reporting SDK, which remains a concept with no artifact. + *Diagram source: `architecture.excalidraw` beside this document (click the image for full size), generated by `tools/diagrams/build_architecture.py`.* # The semantic foundation diff --git a/knowledge/overview/architecture.svg b/knowledge/overview/architecture.svg index cb46061..2676e81 100644 --- a/knowledge/overview/architecture.svg +++ b/knowledge/overview/architecture.svg @@ -1,2 +1,2 @@ -Open Imaging Data Model: three layers joined by identifiersEach layer depends on the one below it. Codes minted in the semantic foundation are what the data structures carry and the applications exchange.APPLICATIONSDATA STRUCTURESSEMANTIC FOUNDATIONFinding Model Forgeauthoring wizard, fmf.oidm.orgReport extraction platformLLM extraction and coding (dev)Imaging Problem List viewerimaging-problem-list.pages.devAlso: finding-models-site (catalog),med-ontology-lookup (terminology lookup),Open Imaging Reporting SDK (concept only)Observationfinding + location + attributesExam Finding Listall observations of one examImaging Problem Listone patient, grouped by findingImaging Personaplus clinical context (concept)per examper patientgoalFinding modelsOIFM_ / OIFMA_ codesAnatomic locationsRadLex RID codesExam typesLOINC / Playbook (planned)ACR/RSNA CDEs at RadElementRDES / RDE codes (allied project)Terminologies underneath: RadLex, SNOMED CT, FMA, UMLS, MeSH, LOINC and the RSNA Radiology Playbook. Looked up through med-ontology-lookup.OIFM and OIFMA codesRIDLOINC exam codefinding models graduate to CDEs; CDE definitions seed finding modelsauthorsextracts from reportsrendersLegendsolid outline: exists todaydashed outline: documented or planned onlyorange: allied external project \ No newline at end of file +APPLICATIONSFinding Model Forgeauthoring wizardfmf.oidm.orgReport extractionplatformLLM extractionand coding (dev)Imaging ProblemList viewerimaging-problem-list.pages.devDATA STRUCTURESObservationfinding + location+ attributesExam Finding Listall observationsof one examImaging Problem Listone patient, groupedby findingper examper patientextracts fromreportsrendersImaging Personaplus clinicalcontext (concept)goal: extends the ImagingProblem List with contextSEMANTIC FOUNDATIONFinding modelsOIFM_ / OIFMA_codesAnatomic locationsRadLex RID codesExam typesLOINC / Playbook(planned)supplies the LOINCexam code on theExam Finding ListOIFM andOIFMA codesRIDauthorsACR/RSNA CDEs atRadElementRDES / RDE codes(allied project)finding models graduate to CDEs;CDE definitions seed finding modelsTerminologies underneath: RadLex, SNOMED CT, FMA, UMLS, MeSH, LOINC and the RSNARadiology Playbook. Looked up through med-ontology-lookup.Legendsolid outline: exists todaydashed outline: documented or planned onlyorange: allied external project \ No newline at end of file diff --git a/knowledge/repositories/repository-map.excalidraw b/knowledge/repositories/repository-map.excalidraw index 263d119..0fe47b2 100644 --- a/knowledge/repositories/repository-map.excalidraw +++ b/knowledge/repositories/repository-map.excalidraw @@ -5,12 +5,12 @@ "elements": [ { "type": "text", - "id": "title", - "x": 60, - "y": 40, - "width": 407.15999999999997, - "height": 32.5, - "strokeColor": "#1e40af", + "id": "hdr_cde_stage", + "x": 0, + "y": 16, + "width": 89.32, + "height": 17.5, + "strokeColor": "#3b82f6", "backgroundColor": "transparent", "fillStyle": "solid", "strokeWidth": 1, @@ -26,9 +26,9 @@ "boundElements": null, "link": null, "locked": false, - "text": "How the repositories relate", - "originalText": "How the repositories relate", - "fontSize": 26, + "text": "CDE STAGING", + "originalText": "CDE STAGING", + "fontSize": 14, "fontFamily": 2, "textAlign": "left", "verticalAlign": "top", @@ -37,12 +37,12 @@ }, { "type": "text", - "id": "subtitle", - "x": 60, - "y": 78, - "width": 844.4799999999999, + "id": "hdr_fm_pipeline", + "x": 0, + "y": 186, + "width": 113.67999999999999, "height": 17.5, - "strokeColor": "#64748b", + "strokeColor": "#3b82f6", "backgroundColor": "transparent", "fillStyle": "solid", "strokeWidth": 1, @@ -58,8 +58,8 @@ "boundElements": null, "link": null, "locked": false, - "text": "Read each row left to right: a terminology feeds content, a library packages it, an application uses it.", - "originalText": "Read each row left to right: a terminology feeds content, a library packages it, an application uses it.", + "text": "FINDING MODELS", + "originalText": "FINDING MODELS", "fontSize": 14, "fontFamily": 2, "textAlign": "left", @@ -69,11 +69,11 @@ }, { "type": "text", - "id": "hdr_terminologies", - "x": 60, - "y": 100, - "width": 98.02, - "height": 16.25, + "id": "hdr_apps", + "x": 0, + "y": 356, + "width": 97.44, + "height": 17.5, "strokeColor": "#3b82f6", "backgroundColor": "transparent", "fillStyle": "solid", @@ -90,9 +90,9 @@ "boundElements": null, "link": null, "locked": false, - "text": "TERMINOLOGIES", - "originalText": "TERMINOLOGIES", - "fontSize": 13, + "text": "APPLICATIONS", + "originalText": "APPLICATIONS", + "fontSize": 14, "fontFamily": 2, "textAlign": "left", "verticalAlign": "top", @@ -101,11 +101,11 @@ }, { "type": "text", - "id": "hdr_content", - "x": 420, - "y": 100, - "width": 52.779999999999994, - "height": 16.25, + "id": "hdr_anatomy", + "x": 0, + "y": 526, + "width": 56.839999999999996, + "height": 17.5, "strokeColor": "#3b82f6", "backgroundColor": "transparent", "fillStyle": "solid", @@ -122,9 +122,9 @@ "boundElements": null, "link": null, "locked": false, - "text": "CONTENT", - "originalText": "CONTENT", - "fontSize": 13, + "text": "ANATOMY", + "originalText": "ANATOMY", + "fontSize": 14, "fontFamily": 2, "textAlign": "left", "verticalAlign": "top", @@ -133,11 +133,11 @@ }, { "type": "text", - "id": "hdr_libraries", - "x": 780, - "y": 100, - "width": 67.86, - "height": 16.25, + "id": "hdr_terms", + "x": 0, + "y": 696, + "width": 146.16, + "height": 17.5, "strokeColor": "#3b82f6", "backgroundColor": "transparent", "fillStyle": "solid", @@ -154,41 +154,9 @@ "boundElements": null, "link": null, "locked": false, - "text": "LIBRARIES", - "originalText": "LIBRARIES", - "fontSize": 13, - "fontFamily": 2, - "textAlign": "left", - "verticalAlign": "top", - "containerId": null, - "lineHeight": 1.25 - }, - { - "type": "text", - "id": "hdr_applications", - "x": 1140, - "y": 100, - "width": 90.47999999999999, - "height": 16.25, - "strokeColor": "#3b82f6", - "backgroundColor": "transparent", - "fillStyle": "solid", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 0, - "opacity": 100, - "angle": 0, - "seed": 1011, - "version": 1, - "versionNonce": 1012, - "isDeleted": false, - "groupIds": [], - "boundElements": null, - "link": null, - "locked": false, - "text": "APPLICATIONS", - "originalText": "APPLICATIONS", - "fontSize": 13, + "text": "TERMINOLOGY LOOKUP", + "originalText": "TERMINOLOGY LOOKUP", + "fontSize": 14, "fontFamily": 2, "textAlign": "left", "verticalAlign": "top", @@ -197,39 +165,31 @@ }, { "type": "rectangle", - "id": "radelement", - "x": 60, - "y": 150, - "width": 250, - "height": 60, - "strokeColor": "#c2410c", - "backgroundColor": "#fed7aa", + "id": "cdesnap", + "x": 0, + "y": 40, + "width": 190, + "height": 80, + "strokeColor": "#1e3a5f", + "backgroundColor": "#93c5fd", "fillStyle": "solid", "strokeWidth": 2, "strokeStyle": "solid", "roughness": 0, "opacity": 100, "angle": 0, - "seed": 1013, + "seed": 1011, "version": 1, - "versionNonce": 1014, + "versionNonce": 1012, "isDeleted": false, "groupIds": [], "boundElements": [ { - "id": "radelement_t", + "id": "cdesnap_t", "type": "text" }, { - "id": "f1", - "type": "arrow" - }, - { - "id": "f8", - "type": "arrow" - }, - { - "id": "f10", + "id": "f3", "type": "arrow" } ], @@ -241,12 +201,12 @@ }, { "type": "text", - "id": "radelement_t", - "x": 70, - "y": 160, - "width": 230, - "height": 40, - "strokeColor": "#7c2d12", + "id": "cdesnap_t", + "x": 10, + "y": 50, + "width": 170, + "height": 60, + "strokeColor": "#1e3a5f", "backgroundColor": "transparent", "fillStyle": "solid", "strokeWidth": 1, @@ -254,30 +214,30 @@ "roughness": 0, "opacity": 100, "angle": 0, - "seed": 1015, + "seed": 1013, "version": 1, - "versionNonce": 1016, + "versionNonce": 1014, "isDeleted": false, "groupIds": [], "boundElements": null, "link": null, "locked": false, - "text": "RadElement (ACR/RSNA)\nRDES and RDE codes", - "originalText": "RadElement (ACR/RSNA)\nRDES and RDE codes", - "fontSize": 14, + "text": "common_data_elements\nRadElement snapshot", + "originalText": "common_data_elements\nRadElement snapshot", + "fontSize": 16, "fontFamily": 2, "textAlign": "center", "verticalAlign": "middle", - "containerId": "radelement", + "containerId": "cdesnap", "lineHeight": 1.25 }, { "type": "rectangle", - "id": "fms", - "x": 420, - "y": 150, - "width": 250, - "height": 60, + "id": "cdes", + "x": 305, + "y": 40, + "width": 190, + "height": 80, "strokeColor": "#1e3a5f", "backgroundColor": "#93c5fd", "fillStyle": "solid", @@ -286,30 +246,18 @@ "roughness": 0, "opacity": 100, "angle": 0, - "seed": 1017, + "seed": 1015, "version": 1, - "versionNonce": 1018, + "versionNonce": 1016, "isDeleted": false, "groupIds": [], "boundElements": [ { - "id": "fms_t", + "id": "cdes_t", "type": "text" }, { - "id": "f1", - "type": "arrow" - }, - { - "id": "f2", - "type": "arrow" - }, - { - "id": "f9", - "type": "arrow" - }, - { - "id": "e1", + "id": "f4", "type": "arrow" } ], @@ -321,11 +269,11 @@ }, { "type": "text", - "id": "fms_t", - "x": 430, - "y": 160, - "width": 230, - "height": 40, + "id": "cdes_t", + "x": 315, + "y": 50, + "width": 170, + "height": 60, "strokeColor": "#1e3a5f", "backgroundColor": "transparent", "fillStyle": "solid", @@ -334,63 +282,55 @@ "roughness": 0, "opacity": 100, "angle": 0, - "seed": 1019, + "seed": 1017, "version": 1, - "versionNonce": 1020, + "versionNonce": 1018, "isDeleted": false, "groupIds": [], "boundElements": null, "link": null, "locked": false, - "text": "findingmodels\n2,382 finding models", - "originalText": "findingmodels\n2,382 finding models", - "fontSize": 14, + "text": "CDEStaging\n259 draft CDE\ndefinitions", + "originalText": "CDEStaging\n259 draft CDE\ndefinitions", + "fontSize": 16, "fontFamily": 2, "textAlign": "center", "verticalAlign": "middle", - "containerId": "fms", + "containerId": "cdes", "lineHeight": 1.25 }, { "type": "rectangle", - "id": "fm", - "x": 780, - "y": 150, - "width": 250, - "height": 60, - "strokeColor": "#1e3a5f", - "backgroundColor": "#60a5fa", + "id": "radelement", + "x": 0, + "y": 210, + "width": 190, + "height": 80, + "strokeColor": "#c2410c", + "backgroundColor": "#fed7aa", "fillStyle": "solid", "strokeWidth": 2, "strokeStyle": "solid", "roughness": 0, "opacity": 100, "angle": 0, - "seed": 1021, + "seed": 1019, "version": 1, - "versionNonce": 1022, + "versionNonce": 1020, "isDeleted": false, "groupIds": [], "boundElements": [ { - "id": "fm_t", + "id": "radelement_t", "type": "text" }, { - "id": "f2", + "id": "f1", "type": "arrow" }, { "id": "f3", "type": "arrow" - }, - { - "id": "e2", - "type": "arrow" - }, - { - "id": "e3", - "type": "arrow" } ], "link": null, @@ -401,12 +341,12 @@ }, { "type": "text", - "id": "fm_t", - "x": 790, - "y": 160, - "width": 230, - "height": 40, - "strokeColor": "#1e3a5f", + "id": "radelement_t", + "x": 10, + "y": 220, + "width": 170, + "height": 60, + "strokeColor": "#7c2d12", "backgroundColor": "transparent", "fillStyle": "solid", "strokeWidth": 1, @@ -414,50 +354,62 @@ "roughness": 0, "opacity": 100, "angle": 0, - "seed": 1023, + "seed": 1021, "version": 1, - "versionNonce": 1024, + "versionNonce": 1022, "isDeleted": false, "groupIds": [], "boundElements": null, "link": null, "locked": false, - "text": "findingmodel\nOIFM format, index, CLIs, MCP", - "originalText": "findingmodel\nOIFM format, index, CLIs, MCP", - "fontSize": 14, + "text": "RadElement (ACR/RSNA)\nRDES and RDE codes", + "originalText": "RadElement (ACR/RSNA)\nRDES and RDE codes", + "fontSize": 16, "fontFamily": 2, "textAlign": "center", "verticalAlign": "middle", - "containerId": "fm", + "containerId": "radelement", "lineHeight": 1.25 }, { "type": "rectangle", - "id": "forge", - "x": 1140, - "y": 150, - "width": 250, - "height": 60, + "id": "fms", + "x": 305, + "y": 210, + "width": 190, + "height": 80, "strokeColor": "#1e3a5f", - "backgroundColor": "#3b82f6", + "backgroundColor": "#93c5fd", "fillStyle": "solid", "strokeWidth": 2, "strokeStyle": "solid", "roughness": 0, "opacity": 100, "angle": 0, - "seed": 1025, + "seed": 1023, "version": 1, - "versionNonce": 1026, + "versionNonce": 1024, "isDeleted": false, "groupIds": [], "boundElements": [ { - "id": "forge_t", + "id": "fms_t", "type": "text" }, { - "id": "f3", + "id": "f1", + "type": "arrow" + }, + { + "id": "f2", + "type": "arrow" + }, + { + "id": "f4", + "type": "arrow" + }, + { + "id": "f5", "type": "arrow" } ], @@ -469,12 +421,12 @@ }, { "type": "text", - "id": "forge_t", - "x": 1150, - "y": 160, - "width": 230, - "height": 40, - "strokeColor": "#ffffff", + "id": "fms_t", + "x": 315, + "y": 220, + "width": 170, + "height": 60, + "strokeColor": "#1e3a5f", "backgroundColor": "transparent", "fillStyle": "solid", "strokeWidth": 1, @@ -482,50 +434,54 @@ "roughness": 0, "opacity": 100, "angle": 0, - "seed": 1027, + "seed": 1025, "version": 1, - "versionNonce": 1028, + "versionNonce": 1026, "isDeleted": false, "groupIds": [], "boundElements": null, "link": null, "locked": false, - "text": "Finding Model Forge\nfmf.oidm.org", - "originalText": "Finding Model Forge\nfmf.oidm.org", - "fontSize": 14, + "text": "findingmodels\n2,382 finding models", + "originalText": "findingmodels\n2,382 finding models", + "fontSize": 16, "fontFamily": 2, "textAlign": "center", "verticalAlign": "middle", - "containerId": "forge", + "containerId": "fms", "lineHeight": 1.25 }, { "type": "rectangle", - "id": "cdesnap", - "x": 60, - "y": 240, - "width": 250, - "height": 60, + "id": "fm", + "x": 610, + "y": 210, + "width": 190, + "height": 80, "strokeColor": "#1e3a5f", - "backgroundColor": "#93c5fd", + "backgroundColor": "#60a5fa", "fillStyle": "solid", "strokeWidth": 2, "strokeStyle": "solid", "roughness": 0, "opacity": 100, "angle": 0, - "seed": 1029, + "seed": 1027, "version": 1, - "versionNonce": 1030, + "versionNonce": 1028, "isDeleted": false, "groupIds": [], "boundElements": [ { - "id": "cdesnap_t", + "id": "fm_t", "type": "text" }, { - "id": "f8", + "id": "f2", + "type": "arrow" + }, + { + "id": "f6", "type": "arrow" } ], @@ -537,11 +493,11 @@ }, { "type": "text", - "id": "cdesnap_t", - "x": 70, - "y": 250, - "width": 230, - "height": 40, + "id": "fm_t", + "x": 620, + "y": 220, + "width": 170, + "height": 60, "strokeColor": "#1e3a5f", "backgroundColor": "transparent", "fillStyle": "solid", @@ -550,139 +506,77 @@ "roughness": 0, "opacity": 100, "angle": 0, - "seed": 1031, + "seed": 1029, "version": 1, - "versionNonce": 1032, + "versionNonce": 1030, "isDeleted": false, "groupIds": [], "boundElements": null, "link": null, "locked": false, - "text": "common_data_elements\nRadElement snapshot", - "originalText": "common_data_elements\nRadElement snapshot", - "fontSize": 14, + "text": "findingmodel\nOIFM format, index,\nCLIs, MCP", + "originalText": "findingmodel\nOIFM format, index,\nCLIs, MCP", + "fontSize": 16, "fontFamily": 2, "textAlign": "center", "verticalAlign": "middle", - "containerId": "cdesnap", + "containerId": "fm", "lineHeight": 1.25 }, { - "type": "rectangle", - "id": "cdes", - "x": 420, - "y": 240, - "width": 250, - "height": 60, - "strokeColor": "#1e3a5f", - "backgroundColor": "#93c5fd", + "type": "arrow", + "id": "f1", + "x": 190, + "y": 250.0, + "width": 115, + "height": 0.0, + "strokeColor": "#64748b", + "backgroundColor": "transparent", "fillStyle": "solid", "strokeWidth": 2, "strokeStyle": "solid", "roughness": 0, "opacity": 100, "angle": 0, - "seed": 1033, + "seed": 1031, "version": 1, - "versionNonce": 1034, - "isDeleted": false, - "groupIds": [], - "boundElements": [ - { - "id": "cdes_t", - "type": "text" - }, - { - "id": "f9", - "type": "arrow" - }, - { - "id": "f10", - "type": "arrow" - } - ], - "link": null, - "locked": false, - "roundness": { - "type": 3 - } - }, - { - "type": "text", - "id": "cdes_t", - "x": 430, - "y": 250, - "width": 230, - "height": 40, - "strokeColor": "#1e3a5f", - "backgroundColor": "transparent", - "fillStyle": "solid", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 0, - "opacity": 100, - "angle": 0, - "seed": 1035, - "version": 1, - "versionNonce": 1036, + "versionNonce": 1032, "isDeleted": false, "groupIds": [], "boundElements": null, "link": null, "locked": false, - "text": "CDEStaging\n259 draft CDE definitions", - "originalText": "CDEStaging\n259 draft CDE definitions", - "fontSize": 14, - "fontFamily": 2, - "textAlign": "center", - "verticalAlign": "middle", - "containerId": "cdes", - "lineHeight": 1.25 - }, - { - "type": "rectangle", - "id": "site", - "x": 1140, - "y": 240, - "width": 250, - "height": 60, - "strokeColor": "#1e3a5f", - "backgroundColor": "#3b82f6", - "fillStyle": "solid", - "strokeWidth": 2, - "strokeStyle": "solid", - "roughness": 0, - "opacity": 100, - "angle": 0, - "seed": 1037, - "version": 1, - "versionNonce": 1038, - "isDeleted": false, - "groupIds": [], - "boundElements": [ - { - "id": "site_t", - "type": "text" - }, - { - "id": "e1", - "type": "arrow" - } + "points": [ + [ + 0, + 0 + ], + [ + 115, + 0.0 + ] ], - "link": null, - "locked": false, - "roundness": { - "type": 3 - } + "startBinding": { + "elementId": "radelement", + "focus": 0, + "gap": 2 + }, + "endBinding": { + "elementId": "fms", + "focus": 0, + "gap": 2 + }, + "startArrowhead": null, + "endArrowhead": "arrow" }, { "type": "text", - "id": "site_t", - "x": 1150, - "y": 250, - "width": 230, - "height": 40, - "strokeColor": "#ffffff", + "id": "f1_l", + "x": 202.84, + "y": 228.0, + "width": 89.32, + "height": 17.5, + "strokeColor": "#64748b", "backgroundColor": "transparent", "fillStyle": "solid", "strokeWidth": 1, @@ -690,67 +584,77 @@ "roughness": 0, "opacity": 100, "angle": 0, - "seed": 1039, + "seed": 1033, "version": 1, - "versionNonce": 1040, + "versionNonce": 1034, "isDeleted": false, "groupIds": [], "boundElements": null, "link": null, "locked": false, - "text": "finding-models-site\ncatalog of findingmodels", - "originalText": "finding-models-site\ncatalog of findingmodels", + "text": "CDE-derived", + "originalText": "CDE-derived", "fontSize": 14, "fontFamily": 2, "textAlign": "center", - "verticalAlign": "middle", - "containerId": "site", + "verticalAlign": "top", + "containerId": null, "lineHeight": 1.25 }, { - "type": "rectangle", - "id": "radlex", - "x": 60, - "y": 330, - "width": 250, - "height": 60, - "strokeColor": "#c2410c", - "backgroundColor": "#fed7aa", + "type": "arrow", + "id": "f2", + "x": 495, + "y": 250.0, + "width": 115, + "height": 0.0, + "strokeColor": "#64748b", + "backgroundColor": "transparent", "fillStyle": "solid", "strokeWidth": 2, "strokeStyle": "solid", "roughness": 0, "opacity": 100, "angle": 0, - "seed": 1041, + "seed": 1035, "version": 1, - "versionNonce": 1042, + "versionNonce": 1036, "isDeleted": false, "groupIds": [], - "boundElements": [ - { - "id": "radlex_t", - "type": "text" - }, - { - "id": "f4", - "type": "arrow" - } - ], + "boundElements": null, "link": null, "locked": false, - "roundness": { - "type": 3 - } + "points": [ + [ + 0, + 0 + ], + [ + 115, + 0.0 + ] + ], + "startBinding": { + "elementId": "fms", + "focus": 0, + "gap": 2 + }, + "endBinding": { + "elementId": "fm", + "focus": 0, + "gap": 2 + }, + "startArrowhead": null, + "endArrowhead": "arrow" }, { "type": "text", - "id": "radlex_t", - "x": 70, - "y": 340, - "width": 230, - "height": 40, - "strokeColor": "#7c2d12", + "id": "f2_l", + "x": 507.84000000000003, + "y": 228.0, + "width": 89.32, + "height": 17.5, + "strokeColor": "#64748b", "backgroundColor": "transparent", "fillStyle": "solid", "strokeWidth": 1, @@ -758,71 +662,77 @@ "roughness": 0, "opacity": 100, "angle": 0, - "seed": 1043, + "seed": 1037, "version": 1, - "versionNonce": 1044, + "versionNonce": 1038, "isDeleted": false, "groupIds": [], "boundElements": null, "link": null, "locked": false, - "text": "RadLex (RSNA)\nRID codes", - "originalText": "RadLex (RSNA)\nRID codes", + "text": "definitions", + "originalText": "definitions", "fontSize": 14, "fontFamily": 2, "textAlign": "center", - "verticalAlign": "middle", - "containerId": "radlex", + "verticalAlign": "top", + "containerId": null, "lineHeight": 1.25 }, { - "type": "rectangle", - "id": "alorg", - "x": 420, - "y": 330, - "width": 250, - "height": 60, - "strokeColor": "#1e3a5f", - "backgroundColor": "#93c5fd", + "type": "arrow", + "id": "f3", + "x": 95.0, + "y": 210, + "width": 0.0, + "height": -90, + "strokeColor": "#64748b", + "backgroundColor": "transparent", "fillStyle": "solid", "strokeWidth": 2, "strokeStyle": "solid", "roughness": 0, "opacity": 100, "angle": 0, - "seed": 1045, + "seed": 1039, "version": 1, - "versionNonce": 1046, + "versionNonce": 1040, "isDeleted": false, "groupIds": [], - "boundElements": [ - { - "id": "alorg_t", - "type": "text" - }, - { - "id": "f4", - "type": "arrow" - }, - { - "id": "f5", - "type": "arrow" - } - ], + "boundElements": null, "link": null, "locked": false, - "roundness": { - "type": 3 - } + "points": [ + [ + 0, + 0 + ], + [ + 0.0, + -90 + ] + ], + "startBinding": { + "elementId": "radelement", + "focus": 0, + "gap": 2 + }, + "endBinding": { + "elementId": "cdesnap", + "focus": 0, + "gap": 2 + }, + "startArrowhead": null, + "endArrowhead": "arrow" }, { "type": "text", - "id": "alorg_t", - "x": 430, - "y": 340, - "width": 230, - "height": 40, - "strokeColor": "#1e3a5f", + "id": "f3_l", + "x": 62.52, + "y": 143.0, + "width": 64.96, + "height": 17.5, + "strokeColor": "#64748b", "backgroundColor": "transparent", "fillStyle": "solid", "strokeWidth": 1, @@ -830,71 +740,77 @@ "roughness": 0, "opacity": 100, "angle": 0, - "seed": 1047, + "seed": 1041, "version": 1, - "versionNonce": 1048, + "versionNonce": 1042, "isDeleted": false, "groupIds": [], "boundElements": null, "link": null, "locked": false, - "text": "anatomiclocations.org\n+ BodyPartIndex.py and .ts", - "originalText": "anatomiclocations.org\n+ BodyPartIndex.py and .ts", + "text": "snapshot", + "originalText": "snapshot", "fontSize": 14, "fontFamily": 2, "textAlign": "center", - "verticalAlign": "middle", - "containerId": "alorg", + "verticalAlign": "top", + "containerId": null, "lineHeight": 1.25 }, { - "type": "rectangle", - "id": "alpkg", - "x": 780, - "y": 330, - "width": 250, - "height": 60, - "strokeColor": "#1e3a5f", - "backgroundColor": "#60a5fa", + "type": "arrow", + "id": "f4", + "x": 400.0, + "y": 120, + "width": 0.0, + "height": 90, + "strokeColor": "#64748b", + "backgroundColor": "transparent", "fillStyle": "solid", "strokeWidth": 2, "strokeStyle": "solid", "roughness": 0, "opacity": 100, "angle": 0, - "seed": 1049, + "seed": 1043, "version": 1, - "versionNonce": 1050, + "versionNonce": 1044, "isDeleted": false, "groupIds": [], - "boundElements": [ - { - "id": "alpkg_t", - "type": "text" - }, - { - "id": "f5", - "type": "arrow" - }, - { - "id": "f6", - "type": "arrow" - } - ], + "boundElements": null, "link": null, "locked": false, - "roundness": { - "type": 3 - } + "points": [ + [ + 0, + 0 + ], + [ + 0.0, + 90 + ] + ], + "startBinding": { + "elementId": "cdes", + "focus": 0, + "gap": 2 + }, + "endBinding": { + "elementId": "fms", + "focus": 0, + "gap": 2 + }, + "startArrowhead": null, + "endArrowhead": "arrow" }, { "type": "text", - "id": "alpkg_t", - "x": 790, - "y": 340, - "width": 230, - "height": 40, - "strokeColor": "#1e3a5f", + "id": "f4_l", + "x": 339.1, + "y": 143.0, + "width": 121.8, + "height": 17.5, + "strokeColor": "#64748b", "backgroundColor": "transparent", "fillStyle": "solid", "strokeWidth": 1, @@ -902,30 +818,30 @@ "roughness": 0, "opacity": 100, "angle": 0, - "seed": 1051, + "seed": 1045, "version": 1, - "versionNonce": 1052, + "versionNonce": 1046, "isDeleted": false, "groupIds": [], "boundElements": null, "link": null, "locked": false, - "text": "anatomic-locations package\ninside findingmodel", - "originalText": "anatomic-locations package\ninside findingmodel", + "text": "content batches", + "originalText": "content batches", "fontSize": 14, "fontFamily": 2, "textAlign": "center", - "verticalAlign": "middle", - "containerId": "alpkg", + "verticalAlign": "top", + "containerId": null, "lineHeight": 1.25 }, { "type": "rectangle", "id": "ipl", - "x": 1140, - "y": 330, - "width": 250, - "height": 60, + "x": 0, + "y": 380, + "width": 190, + "height": 80, "strokeColor": "#1e3a5f", "backgroundColor": "#3b82f6", "fillStyle": "solid", @@ -934,9 +850,9 @@ "roughness": 0, "opacity": 100, "angle": 0, - "seed": 1053, + "seed": 1047, "version": 1, - "versionNonce": 1054, + "versionNonce": 1048, "isDeleted": false, "groupIds": [], "boundElements": [ @@ -945,11 +861,7 @@ "type": "text" }, { - "id": "f6", - "type": "arrow" - }, - { - "id": "e2", + "id": "f9", "type": "arrow" } ], @@ -962,10 +874,10 @@ { "type": "text", "id": "ipl_t", - "x": 1150, - "y": 340, - "width": 230, - "height": 40, + "x": 10, + "y": 390, + "width": 170, + "height": 60, "strokeColor": "#ffffff", "backgroundColor": "transparent", "fillStyle": "solid", @@ -974,17 +886,17 @@ "roughness": 0, "opacity": 100, "angle": 0, - "seed": 1055, + "seed": 1049, "version": 1, - "versionNonce": 1056, + "versionNonce": 1050, "isDeleted": false, "groupIds": [], "boundElements": null, "link": null, "locked": false, - "text": "imaging-problem-list\nuses finding models and locations", - "originalText": "imaging-problem-list\nuses finding models and locations", - "fontSize": 14, + "text": "imaging-problem-list\nuses models +\nlocations", + "originalText": "imaging-problem-list\nuses models +\nlocations", + "fontSize": 16, "fontFamily": 2, "textAlign": "center", "verticalAlign": "middle", @@ -993,31 +905,31 @@ }, { "type": "rectangle", - "id": "others", - "x": 60, - "y": 420, - "width": 250, - "height": 60, - "strokeColor": "#c2410c", - "backgroundColor": "#fed7aa", + "id": "site", + "x": 305, + "y": 380, + "width": 190, + "height": 80, + "strokeColor": "#1e3a5f", + "backgroundColor": "#3b82f6", "fillStyle": "solid", "strokeWidth": 2, "strokeStyle": "solid", "roughness": 0, "opacity": 100, "angle": 0, - "seed": 1057, + "seed": 1051, "version": 1, - "versionNonce": 1058, + "versionNonce": 1052, "isDeleted": false, "groupIds": [], "boundElements": [ { - "id": "others_t", + "id": "site_t", "type": "text" }, { - "id": "f7", + "id": "f5", "type": "arrow" } ], @@ -1029,12 +941,12 @@ }, { "type": "text", - "id": "others_t", - "x": 70, - "y": 430, - "width": 230, - "height": 40, - "strokeColor": "#7c2d12", + "id": "site_t", + "x": 315, + "y": 390, + "width": 170, + "height": 60, + "strokeColor": "#ffffff", "backgroundColor": "transparent", "fillStyle": "solid", "strokeWidth": 1, @@ -1042,54 +954,50 @@ "roughness": 0, "opacity": 100, "angle": 0, - "seed": 1059, + "seed": 1053, "version": 1, - "versionNonce": 1060, + "versionNonce": 1054, "isDeleted": false, "groupIds": [], "boundElements": null, "link": null, "locked": false, - "text": "SNOMED CT, FMA, LOINC, UMLS\n(and RadLex)", - "originalText": "SNOMED CT, FMA, LOINC, UMLS\n(and RadLex)", - "fontSize": 14, + "text": "finding-models-site\ncorpus catalog", + "originalText": "finding-models-site\ncorpus catalog", + "fontSize": 16, "fontFamily": 2, "textAlign": "center", "verticalAlign": "middle", - "containerId": "others", + "containerId": "site", "lineHeight": 1.25 }, { "type": "rectangle", - "id": "molu", - "x": 780, - "y": 420, - "width": 250, - "height": 60, + "id": "forge", + "x": 610, + "y": 380, + "width": 190, + "height": 80, "strokeColor": "#1e3a5f", - "backgroundColor": "#60a5fa", + "backgroundColor": "#3b82f6", "fillStyle": "solid", "strokeWidth": 2, "strokeStyle": "solid", "roughness": 0, "opacity": 100, "angle": 0, - "seed": 1061, + "seed": 1055, "version": 1, - "versionNonce": 1062, + "versionNonce": 1056, "isDeleted": false, "groupIds": [], "boundElements": [ { - "id": "molu_t", + "id": "forge_t", "type": "text" }, { - "id": "f7", - "type": "arrow" - }, - { - "id": "e3", + "id": "f6", "type": "arrow" } ], @@ -1101,76 +1009,12 @@ }, { "type": "text", - "id": "molu_t", - "x": 790, - "y": 430, - "width": 230, - "height": 40, - "strokeColor": "#1e3a5f", - "backgroundColor": "transparent", - "fillStyle": "solid", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 0, - "opacity": 100, - "angle": 0, - "seed": 1063, - "version": 1, - "versionNonce": 1064, - "isDeleted": false, - "groupIds": [], - "boundElements": null, - "link": null, - "locked": false, - "text": "med-ontology-lookup\nmolu", - "originalText": "med-ontology-lookup\nmolu", - "fontSize": 14, - "fontFamily": 2, - "textAlign": "center", - "verticalAlign": "middle", - "containerId": "molu", - "lineHeight": 1.25 - }, - { - "type": "rectangle", - "id": "mvp", - "x": 1140, - "y": 420, - "width": 250, + "id": "forge_t", + "x": 620, + "y": 390, + "width": 170, "height": 60, - "strokeColor": "#64748b", - "backgroundColor": "#ffffff", - "fillStyle": "solid", - "strokeWidth": 2, - "strokeStyle": "dashed", - "roughness": 0, - "opacity": 100, - "angle": 0, - "seed": 1065, - "version": 1, - "versionNonce": 1066, - "isDeleted": false, - "groupIds": [], - "boundElements": [ - { - "id": "mvp_t", - "type": "text" - } - ], - "link": null, - "locked": false, - "roundness": { - "type": 3 - } - }, - { - "type": "text", - "id": "mvp_t", - "x": 1150, - "y": 430, - "width": 230, - "height": 40, - "strokeColor": "#475569", + "strokeColor": "#ffffff", "backgroundColor": "transparent", "fillStyle": "solid", "strokeWidth": 1, @@ -1178,30 +1022,30 @@ "roughness": 0, "opacity": 100, "angle": 0, - "seed": 1067, + "seed": 1057, "version": 1, - "versionNonce": 1068, + "versionNonce": 1058, "isDeleted": false, "groupIds": [], "boundElements": null, "link": null, "locked": false, - "text": "IPL-MVP-ExtractionAndLabeling\nsuperseded", - "originalText": "IPL-MVP-ExtractionAndLabeling\nsuperseded", - "fontSize": 14, + "text": "Finding Model Forge\nfmf.oidm.org", + "originalText": "Finding Model Forge\nfmf.oidm.org", + "fontSize": 16, "fontFamily": 2, "textAlign": "center", "verticalAlign": "middle", - "containerId": "mvp", + "containerId": "forge", "lineHeight": 1.25 }, { "type": "arrow", - "id": "f1", - "x": 310, - "y": 180.0, - "width": 110, - "height": 0.0, + "id": "f5", + "x": 400.0, + "y": 290, + "width": 0.0, + "height": 90, "strokeColor": "#64748b", "backgroundColor": "transparent", "fillStyle": "solid", @@ -1210,9 +1054,9 @@ "roughness": 0, "opacity": 100, "angle": 0, - "seed": 1069, + "seed": 1059, "version": 1, - "versionNonce": 1070, + "versionNonce": 1060, "isDeleted": false, "groupIds": [], "boundElements": null, @@ -1224,17 +1068,17 @@ 0 ], [ - 110, - 0.0 + 0.0, + 90 ] ], "startBinding": { - "elementId": "radelement", + "elementId": "fms", "focus": 0, "gap": 2 }, "endBinding": { - "elementId": "fms", + "elementId": "site", "focus": 0, "gap": 2 }, @@ -1243,11 +1087,11 @@ }, { "type": "text", - "id": "f1_l", - "x": 326.72, - "y": 158.0, - "width": 76.55999999999999, - "height": 15.0, + "id": "f5_l", + "x": 347.22, + "y": 313.0, + "width": 105.55999999999999, + "height": 17.5, "strokeColor": "#64748b", "backgroundColor": "transparent", "fillStyle": "solid", @@ -1256,17 +1100,17 @@ "roughness": 0, "opacity": 100, "angle": 0, - "seed": 1071, + "seed": 1061, "version": 1, - "versionNonce": 1072, + "versionNonce": 1062, "isDeleted": false, "groupIds": [], "boundElements": null, "link": null, "locked": false, - "text": "CDE-derived", - "originalText": "CDE-derived", - "fontSize": 12, + "text": "git submodule", + "originalText": "git submodule", + "fontSize": 14, "fontFamily": 2, "textAlign": "center", "verticalAlign": "top", @@ -1275,11 +1119,11 @@ }, { "type": "arrow", - "id": "f2", - "x": 670, - "y": 180.0, - "width": 110, - "height": 0.0, + "id": "f6", + "x": 705.0, + "y": 290, + "width": 0.0, + "height": 90, "strokeColor": "#64748b", "backgroundColor": "transparent", "fillStyle": "solid", @@ -1288,9 +1132,9 @@ "roughness": 0, "opacity": 100, "angle": 0, - "seed": 1073, + "seed": 1063, "version": 1, - "versionNonce": 1074, + "versionNonce": 1064, "isDeleted": false, "groupIds": [], "boundElements": null, @@ -1302,17 +1146,17 @@ 0 ], [ - 110, - 0.0 + 0.0, + 90 ] ], "startBinding": { - "elementId": "fms", + "elementId": "fm", "focus": 0, "gap": 2 }, "endBinding": { - "elementId": "fm", + "elementId": "forge", "focus": 0, "gap": 2 }, @@ -1321,11 +1165,11 @@ }, { "type": "text", - "id": "f2_l", - "x": 686.72, - "y": 158.0, - "width": 76.55999999999999, - "height": 15.0, + "id": "f6_l", + "x": 680.64, + "y": 313.0, + "width": 48.72, + "height": 17.5, "strokeColor": "#64748b", "backgroundColor": "transparent", "fillStyle": "solid", @@ -1334,17 +1178,17 @@ "roughness": 0, "opacity": 100, "angle": 0, - "seed": 1075, + "seed": 1065, "version": 1, - "versionNonce": 1076, + "versionNonce": 1066, "isDeleted": false, "groupIds": [], "boundElements": null, "link": null, "locked": false, - "text": "definitions", - "originalText": "definitions", - "fontSize": 12, + "text": "engine", + "originalText": "engine", + "fontSize": 14, "fontFamily": 2, "textAlign": "center", "verticalAlign": "top", @@ -1352,59 +1196,81 @@ "lineHeight": 1.25 }, { - "type": "arrow", - "id": "f3", - "x": 1030, - "y": 171.0, - "width": 110, - "height": 0.0, + "type": "text", + "id": "cdes_note", + "x": 0, + "y": 302, + "width": 190, + "height": 32.5, "strokeColor": "#64748b", "backgroundColor": "transparent", "fillStyle": "solid", - "strokeWidth": 2, + "strokeWidth": 1, "strokeStyle": "solid", "roughness": 0, "opacity": 100, "angle": 0, - "seed": 1077, + "seed": 1067, "version": 1, - "versionNonce": 1078, + "versionNonce": 1068, "isDeleted": false, "groupIds": [], "boundElements": null, "link": null, "locked": false, - "points": [ - [ - 0, - 0 - ], - [ - 110, - 0.0 - ] - ], - "startBinding": { - "elementId": "fm", - "focus": 0, - "gap": 2 - }, - "endBinding": { - "elementId": "forge", - "focus": 0, - "gap": 2 - }, - "startArrowhead": null, - "endArrowhead": "arrow" + "text": "(CDEStaging also has an\ninformal path to RadElement)", + "originalText": "(CDEStaging also has an\ninformal path to RadElement)", + "fontSize": 13, + "fontFamily": 2, + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 + }, + { + "type": "rectangle", + "id": "radlex", + "x": 0, + "y": 550, + "width": 190, + "height": 80, + "strokeColor": "#c2410c", + "backgroundColor": "#fed7aa", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1069, + "version": 1, + "versionNonce": 1070, + "isDeleted": false, + "groupIds": [], + "boundElements": [ + { + "id": "radlex_t", + "type": "text" + }, + { + "id": "f7", + "type": "arrow" + } + ], + "link": null, + "locked": false, + "roundness": { + "type": 3 + } }, { "type": "text", - "id": "f3_l", - "x": 1064.12, - "y": 149.0, - "width": 41.76, - "height": 15.0, - "strokeColor": "#64748b", + "id": "radlex_t", + "x": 10, + "y": 560, + "width": 170, + "height": 60, + "strokeColor": "#7c2d12", "backgroundColor": "transparent", "fillStyle": "solid", "strokeWidth": 1, @@ -1412,77 +1278,71 @@ "roughness": 0, "opacity": 100, "angle": 0, - "seed": 1079, + "seed": 1071, "version": 1, - "versionNonce": 1080, + "versionNonce": 1072, "isDeleted": false, "groupIds": [], "boundElements": null, "link": null, "locked": false, - "text": "engine", - "originalText": "engine", - "fontSize": 12, + "text": "RadLex (RSNA)\nRID codes", + "originalText": "RadLex (RSNA)\nRID codes", + "fontSize": 16, "fontFamily": 2, "textAlign": "center", - "verticalAlign": "top", - "containerId": null, + "verticalAlign": "middle", + "containerId": "radlex", "lineHeight": 1.25 }, { - "type": "arrow", - "id": "f4", - "x": 310, - "y": 360.0, - "width": 110, - "height": 0.0, - "strokeColor": "#64748b", - "backgroundColor": "transparent", + "type": "rectangle", + "id": "alorg", + "x": 305, + "y": 550, + "width": 190, + "height": 80, + "strokeColor": "#1e3a5f", + "backgroundColor": "#93c5fd", "fillStyle": "solid", "strokeWidth": 2, "strokeStyle": "solid", "roughness": 0, "opacity": 100, "angle": 0, - "seed": 1081, + "seed": 1073, "version": 1, - "versionNonce": 1082, + "versionNonce": 1074, "isDeleted": false, "groupIds": [], - "boundElements": null, + "boundElements": [ + { + "id": "alorg_t", + "type": "text" + }, + { + "id": "f7", + "type": "arrow" + }, + { + "id": "f8", + "type": "arrow" + } + ], "link": null, "locked": false, - "points": [ - [ - 0, - 0 - ], - [ - 110, - 0.0 - ] - ], - "startBinding": { - "elementId": "radlex", - "focus": 0, - "gap": 2 - }, - "endBinding": { - "elementId": "alorg", - "focus": 0, - "gap": 2 - }, - "startArrowhead": null, - "endArrowhead": "arrow" + "roundness": { + "type": 3 + } }, { "type": "text", - "id": "f4_l", - "x": 316.28, - "y": 338.0, - "width": 97.44, - "height": 15.0, - "strokeColor": "#64748b", + "id": "alorg_t", + "x": 315, + "y": 560, + "width": 170, + "height": 60, + "strokeColor": "#1e3a5f", "backgroundColor": "transparent", "fillStyle": "solid", "strokeWidth": 1, @@ -1490,77 +1350,71 @@ "roughness": 0, "opacity": 100, "angle": 0, - "seed": 1083, + "seed": 1075, "version": 1, - "versionNonce": 1084, + "versionNonce": 1076, "isDeleted": false, "groupIds": [], "boundElements": null, "link": null, "locked": false, - "text": "curated subset", - "originalText": "curated subset", - "fontSize": 12, + "text": "anatomiclocations.org\n+ BodyPartIndex", + "originalText": "anatomiclocations.org\n+ BodyPartIndex", + "fontSize": 16, "fontFamily": 2, "textAlign": "center", - "verticalAlign": "top", - "containerId": null, + "verticalAlign": "middle", + "containerId": "alorg", "lineHeight": 1.25 }, { - "type": "arrow", - "id": "f5", - "x": 670, - "y": 360.0, - "width": 110, - "height": 0.0, - "strokeColor": "#64748b", - "backgroundColor": "transparent", + "type": "rectangle", + "id": "alpkg", + "x": 610, + "y": 550, + "width": 190, + "height": 80, + "strokeColor": "#1e3a5f", + "backgroundColor": "#60a5fa", "fillStyle": "solid", "strokeWidth": 2, - "strokeStyle": "dashed", + "strokeStyle": "solid", "roughness": 0, "opacity": 100, "angle": 0, - "seed": 1085, + "seed": 1077, "version": 1, - "versionNonce": 1086, + "versionNonce": 1078, "isDeleted": false, "groupIds": [], - "boundElements": null, + "boundElements": [ + { + "id": "alpkg_t", + "type": "text" + }, + { + "id": "f8", + "type": "arrow" + }, + { + "id": "f9", + "type": "arrow" + } + ], "link": null, "locked": false, - "points": [ - [ - 0, - 0 - ], - [ - 110, - 0.0 - ] - ], - "startBinding": { - "elementId": "alorg", - "focus": 0, - "gap": 2 - }, - "endBinding": { - "elementId": "alpkg", - "focus": 0, - "gap": 2 - }, - "startArrowhead": null, - "endArrowhead": "arrow" + "roundness": { + "type": 3 + } }, { "type": "text", - "id": "f5_l", - "x": 700.64, - "y": 338.0, - "width": 48.72, - "height": 15.0, - "strokeColor": "#64748b", + "id": "alpkg_t", + "x": 620, + "y": 560, + "width": 170, + "height": 60, + "strokeColor": "#1e3a5f", "backgroundColor": "transparent", "fillStyle": "solid", "strokeWidth": 1, @@ -1568,75 +1422,29 @@ "roughness": 0, "opacity": 100, "angle": 0, - "seed": 1087, + "seed": 1079, "version": 1, - "versionNonce": 1088, + "versionNonce": 1080, "isDeleted": false, "groupIds": [], "boundElements": null, "link": null, "locked": false, - "text": "lineage", - "originalText": "lineage", - "fontSize": 12, + "text": "anatomic-locations pkg\ninside findingmodel", + "originalText": "anatomic-locations pkg\ninside findingmodel", + "fontSize": 16, "fontFamily": 2, "textAlign": "center", - "verticalAlign": "top", - "containerId": null, + "verticalAlign": "middle", + "containerId": "alpkg", "lineHeight": 1.25 }, - { - "type": "arrow", - "id": "f6", - "x": 1030, - "y": 372.0, - "width": 110, - "height": 0.0, - "strokeColor": "#64748b", - "backgroundColor": "transparent", - "fillStyle": "solid", - "strokeWidth": 2, - "strokeStyle": "solid", - "roughness": 0, - "opacity": 100, - "angle": 0, - "seed": 1089, - "version": 1, - "versionNonce": 1090, - "isDeleted": false, - "groupIds": [], - "boundElements": null, - "link": null, - "locked": false, - "points": [ - [ - 0, - 0 - ], - [ - 110, - 0.0 - ] - ], - "startBinding": { - "elementId": "alpkg", - "focus": 0, - "gap": 2 - }, - "endBinding": { - "elementId": "ipl", - "focus": 0, - "gap": 2 - }, - "startArrowhead": null, - "endArrowhead": "arrow" - }, { "type": "arrow", "id": "f7", - "x": 310, - "y": 450.0, - "width": 470, + "x": 190, + "y": 590.0, + "width": 115, "height": 0.0, "strokeColor": "#64748b", "backgroundColor": "transparent", @@ -1646,9 +1454,9 @@ "roughness": 0, "opacity": 100, "angle": 0, - "seed": 1091, + "seed": 1081, "version": 1, - "versionNonce": 1092, + "versionNonce": 1082, "isDeleted": false, "groupIds": [], "boundElements": null, @@ -1660,17 +1468,17 @@ 0 ], [ - 470, + 115, 0.0 ] ], "startBinding": { - "elementId": "others", + "elementId": "radlex", "focus": 0, "gap": 2 }, "endBinding": { - "elementId": "molu", + "elementId": "alorg", "focus": 0, "gap": 2 }, @@ -1680,10 +1488,10 @@ { "type": "text", "id": "f7_l", - "x": 520.64, - "y": 428.0, + "x": 223.14, + "y": 568.0, "width": 48.72, - "height": 15.0, + "height": 17.5, "strokeColor": "#64748b", "backgroundColor": "transparent", "fillStyle": "solid", @@ -1692,17 +1500,17 @@ "roughness": 0, "opacity": 100, "angle": 0, - "seed": 1093, + "seed": 1083, "version": 1, - "versionNonce": 1094, + "versionNonce": 1084, "isDeleted": false, "groupIds": [], "boundElements": null, "link": null, "locked": false, - "text": "lookups", - "originalText": "lookups", - "fontSize": 12, + "text": "subset", + "originalText": "subset", + "fontSize": 14, "fontFamily": 2, "textAlign": "center", "verticalAlign": "top", @@ -1712,21 +1520,21 @@ { "type": "arrow", "id": "f8", - "x": 185.0, - "y": 210, - "width": 0.0, - "height": 30, + "x": 495, + "y": 590.0, + "width": 115, + "height": 0.0, "strokeColor": "#64748b", "backgroundColor": "transparent", "fillStyle": "solid", "strokeWidth": 2, - "strokeStyle": "solid", + "strokeStyle": "dashed", "roughness": 0, "opacity": 100, "angle": 0, - "seed": 1095, + "seed": 1085, "version": 1, - "versionNonce": 1096, + "versionNonce": 1086, "isDeleted": false, "groupIds": [], "boundElements": null, @@ -1738,17 +1546,17 @@ 0 ], [ - 0.0, - 30 + 115, + 0.0 ] ], "startBinding": { - "elementId": "radelement", + "elementId": "alorg", "focus": 0, "gap": 2 }, "endBinding": { - "elementId": "cdesnap", + "elementId": "alpkg", "focus": 0, "gap": 2 }, @@ -1758,10 +1566,10 @@ { "type": "text", "id": "f8_l", - "x": 199.16, - "y": 217.0, - "width": 55.67999999999999, - "height": 15.0, + "x": 524.08, + "y": 568.0, + "width": 56.839999999999996, + "height": 17.5, "strokeColor": "#64748b", "backgroundColor": "transparent", "fillStyle": "solid", @@ -1770,17 +1578,17 @@ "roughness": 0, "opacity": 100, "angle": 0, - "seed": 1097, + "seed": 1087, "version": 1, - "versionNonce": 1098, + "versionNonce": 1088, "isDeleted": false, "groupIds": [], "boundElements": null, "link": null, "locked": false, - "text": "snapshot", - "originalText": "snapshot", - "fontSize": 12, + "text": "lineage", + "originalText": "lineage", + "fontSize": 14, "fontFamily": 2, "textAlign": "center", "verticalAlign": "top", @@ -1790,10 +1598,10 @@ { "type": "arrow", "id": "f9", - "x": 545.0, - "y": 240, - "width": 0.0, - "height": -30, + "x": 705.0, + "y": 550, + "width": -610.0, + "height": -90, "strokeColor": "#64748b", "backgroundColor": "transparent", "fillStyle": "solid", @@ -1802,9 +1610,9 @@ "roughness": 0, "opacity": 100, "angle": 0, - "seed": 1099, + "seed": 1089, "version": 1, - "versionNonce": 1100, + "versionNonce": 1090, "isDeleted": false, "groupIds": [], "boundElements": null, @@ -1816,17 +1624,17 @@ 0 ], [ - 0.0, - -30 + -610.0, + -90 ] ], "startBinding": { - "elementId": "cdes", + "elementId": "alpkg", "focus": 0, "gap": 2 }, "endBinding": { - "elementId": "fms", + "elementId": "ipl", "focus": 0, "gap": 2 }, @@ -1836,10 +1644,10 @@ { "type": "text", "id": "f9_l", - "x": 562.8, - "y": 217.0, - "width": 104.39999999999999, - "height": 15.0, + "x": 371.58, + "y": 483.0, + "width": 56.839999999999996, + "height": 17.5, "strokeColor": "#64748b", "backgroundColor": "transparent", "fillStyle": "solid", @@ -1848,17 +1656,17 @@ "roughness": 0, "opacity": 100, "angle": 0, - "seed": 1101, + "seed": 1091, "version": 1, - "versionNonce": 1102, + "versionNonce": 1092, "isDeleted": false, "groupIds": [], "boundElements": null, "link": null, "locked": false, - "text": "content batches", - "originalText": "content batches", - "fontSize": 12, + "text": "used by", + "originalText": "used by", + "fontSize": 14, "fontFamily": 2, "textAlign": "center", "verticalAlign": "top", @@ -1866,59 +1674,49 @@ "lineHeight": 1.25 }, { - "type": "arrow", - "id": "f10", - "x": 420, - "y": 270.0, - "width": -172.5, - "height": -60.0, - "strokeColor": "#64748b", - "backgroundColor": "transparent", + "type": "rectangle", + "id": "others", + "x": 0, + "y": 720, + "width": 190, + "height": 80, + "strokeColor": "#c2410c", + "backgroundColor": "#fed7aa", "fillStyle": "solid", "strokeWidth": 2, - "strokeStyle": "dashed", + "strokeStyle": "solid", "roughness": 0, "opacity": 100, "angle": 0, - "seed": 1103, + "seed": 1093, "version": 1, - "versionNonce": 1104, + "versionNonce": 1094, "isDeleted": false, "groupIds": [], - "boundElements": null, + "boundElements": [ + { + "id": "others_t", + "type": "text" + }, + { + "id": "f10", + "type": "arrow" + } + ], "link": null, "locked": false, - "points": [ - [ - 0, - 0 - ], - [ - -172.5, - -60.0 - ] - ], - "startBinding": { - "elementId": "cdes", - "focus": 0, - "gap": 2 - }, - "endBinding": { - "elementId": "radelement", - "focus": 0, - "gap": 2 - }, - "startArrowhead": null, - "endArrowhead": "arrow" + "roundness": { + "type": 3 + } }, { "type": "text", - "id": "f10_l", - "x": 324, - "y": 304, - "width": 172.26, - "height": 13.75, - "strokeColor": "#64748b", + "id": "others_t", + "x": 10, + "y": 730, + "width": 170, + "height": 60, + "strokeColor": "#7c2d12", "backgroundColor": "transparent", "fillStyle": "solid", "strokeWidth": 1, @@ -1926,31 +1724,67 @@ "roughness": 0, "opacity": 100, "angle": 0, - "seed": 1105, + "seed": 1095, "version": 1, - "versionNonce": 1106, + "versionNonce": 1096, "isDeleted": false, "groupIds": [], "boundElements": null, "link": null, "locked": false, - "text": "informal path to submission", - "originalText": "informal path to submission", - "fontSize": 11, + "text": "SNOMED CT, FMA,\nLOINC, UMLS", + "originalText": "SNOMED CT, FMA,\nLOINC, UMLS", + "fontSize": 16, "fontFamily": 2, - "textAlign": "left", - "verticalAlign": "top", - "containerId": null, + "textAlign": "center", + "verticalAlign": "middle", + "containerId": "others", "lineHeight": 1.25 }, + { + "type": "rectangle", + "id": "molu", + "x": 305, + "y": 720, + "width": 190, + "height": 80, + "strokeColor": "#1e3a5f", + "backgroundColor": "#60a5fa", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1097, + "version": 1, + "versionNonce": 1098, + "isDeleted": false, + "groupIds": [], + "boundElements": [ + { + "id": "molu_t", + "type": "text" + }, + { + "id": "f10", + "type": "arrow" + } + ], + "link": null, + "locked": false, + "roundness": { + "type": 3 + } + }, { "type": "text", - "id": "f5_note", - "x": 450, - "y": 394, - "width": 216.92, - "height": 13.75, - "strokeColor": "#64748b", + "id": "molu_t", + "x": 315, + "y": 730, + "width": 170, + "height": 60, + "strokeColor": "#1e3a5f", "backgroundColor": "transparent", "fillStyle": "solid", "strokeWidth": 1, @@ -1958,89 +1792,63 @@ "roughness": 0, "opacity": 100, "angle": 0, - "seed": 1107, + "seed": 1099, "version": 1, - "versionNonce": 1108, + "versionNonce": 1100, "isDeleted": false, "groupIds": [], "boundElements": null, "link": null, "locked": false, - "text": "current data lives in findingmodel", - "originalText": "current data lives in findingmodel", - "fontSize": 11, + "text": "med-ontology-lookup\nmolu", + "originalText": "med-ontology-lookup\nmolu", + "fontSize": 16, "fontFamily": 2, - "textAlign": "left", - "verticalAlign": "top", - "containerId": null, + "textAlign": "center", + "verticalAlign": "middle", + "containerId": "molu", "lineHeight": 1.25 }, { - "type": "arrow", - "id": "e1", - "x": 607.5, - "y": 150, - "width": 657.5, - "height": 90, + "type": "rectangle", + "id": "mvp", + "x": 610, + "y": 720, + "width": 190, + "height": 80, "strokeColor": "#64748b", - "backgroundColor": "transparent", + "backgroundColor": "#ffffff", "fillStyle": "solid", "strokeWidth": 2, - "strokeStyle": "solid", + "strokeStyle": "dashed", "roughness": 0, "opacity": 100, "angle": 0, - "seed": 1109, + "seed": 1101, "version": 1, - "versionNonce": 1110, + "versionNonce": 1102, "isDeleted": false, "groupIds": [], - "boundElements": null, + "boundElements": [ + { + "id": "mvp_t", + "type": "text" + } + ], "link": null, "locked": false, - "points": [ - [ - 0, - 0 - ], - [ - 0, - -12 - ], - [ - 812.5, - -12 - ], - [ - 812.5, - 120.0 - ], - [ - 782.5, - 120.0 - ] - ], - "startBinding": { - "elementId": "fms", - "focus": 0, - "gap": 2 - }, - "endBinding": { - "elementId": "site", - "focus": 0, - "gap": 2 - }, - "startArrowhead": null, - "endArrowhead": "arrow" + "roundness": { + "type": 3 + } }, { "type": "text", - "id": "e1_l", - "x": 684, - "y": 122, - "width": 82.94, - "height": 13.75, - "strokeColor": "#64748b", + "id": "mvp_t", + "x": 620, + "y": 730, + "width": 170, + "height": 60, + "strokeColor": "#475569", "backgroundColor": "transparent", "fillStyle": "solid", "strokeWidth": 1, @@ -2048,30 +1856,30 @@ "roughness": 0, "opacity": 100, "angle": 0, - "seed": 1111, + "seed": 1103, "version": 1, - "versionNonce": 1112, + "versionNonce": 1104, "isDeleted": false, "groupIds": [], "boundElements": null, "link": null, "locked": false, - "text": "git submodule", - "originalText": "git submodule", - "fontSize": 11, + "text": "IPL-MVP-\nExtractionAndLabeling\n(superseded)", + "originalText": "IPL-MVP-\nExtractionAndLabeling\n(superseded)", + "fontSize": 16, "fontFamily": 2, - "textAlign": "left", - "verticalAlign": "top", - "containerId": null, + "textAlign": "center", + "verticalAlign": "middle", + "containerId": "mvp", "lineHeight": 1.25 }, { "type": "arrow", - "id": "e2", - "x": 1030, - "y": 201.0, - "width": 110, - "height": 147.0, + "id": "f10", + "x": 190, + "y": 760.0, + "width": 115, + "height": 0.0, "strokeColor": "#64748b", "backgroundColor": "transparent", "fillStyle": "solid", @@ -2080,9 +1888,9 @@ "roughness": 0, "opacity": 100, "angle": 0, - "seed": 1113, + "seed": 1105, "version": 1, - "versionNonce": 1114, + "versionNonce": 1106, "isDeleted": false, "groupIds": [], "boundElements": null, @@ -2091,28 +1899,20 @@ "points": [ [ 0, - 0.0 + 0 ], [ - 70, + 115, 0.0 - ], - [ - 70, - 147.0 - ], - [ - 110, - 147.0 ] ], "startBinding": { - "elementId": "fm", + "elementId": "others", "focus": 0, "gap": 2 }, "endBinding": { - "elementId": "ipl", + "elementId": "molu", "focus": 0, "gap": 2 }, @@ -2120,70 +1920,44 @@ "endArrowhead": "arrow" }, { - "type": "arrow", - "id": "e3", - "x": 1030, - "y": 450.0, - "width": -30, - "height": -240.0, + "type": "text", + "id": "f10_l", + "x": 219.08, + "y": 738.0, + "width": 56.839999999999996, + "height": 17.5, "strokeColor": "#64748b", "backgroundColor": "transparent", "fillStyle": "solid", - "strokeWidth": 2, - "strokeStyle": "dashed", + "strokeWidth": 1, + "strokeStyle": "solid", "roughness": 0, "opacity": 100, "angle": 0, - "seed": 1115, + "seed": 1107, "version": 1, - "versionNonce": 1116, + "versionNonce": 1108, "isDeleted": false, "groupIds": [], "boundElements": null, "link": null, "locked": false, - "points": [ - [ - 0, - 0.0 - ], - [ - 40, - 0.0 - ], - [ - 40, - -225.0 - ], - [ - -30, - -225.0 - ], - [ - -30, - -240.0 - ] - ], - "startBinding": { - "elementId": "molu", - "focus": 0, - "gap": 2 - }, - "endBinding": { - "elementId": "fm", - "focus": 0, - "gap": 2 - }, - "startArrowhead": null, - "endArrowhead": "arrow" + "text": "lookups", + "originalText": "lookups", + "fontSize": 14, + "fontFamily": 2, + "textAlign": "center", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 }, { "type": "text", - "id": "e3_l", - "x": 962.3, - "y": 330.5, - "width": 191.39999999999998, - "height": 13.75, + "id": "molu_note", + "x": 305, + "y": 814, + "width": 286.52, + "height": 32.5, "strokeColor": "#64748b", "backgroundColor": "transparent", "fillStyle": "solid", @@ -2191,20 +1965,20 @@ "strokeStyle": "solid", "roughness": 0, "opacity": 100, - "angle": -1.5708, - "seed": 1117, + "angle": 0, + "seed": 1109, "version": 1, - "versionNonce": 1118, + "versionNonce": 1110, "isDeleted": false, "groupIds": [], "boundElements": null, "link": null, "locked": false, - "text": "ontology search for enrichment", - "originalText": "ontology search for enrichment", - "fontSize": 11, + "text": "molu also enriches findingmodel\nmetadata by ontology search (see text)", + "originalText": "molu also enriches findingmodel\nmetadata by ontology search (see text)", + "fontSize": 13, "fontFamily": 2, - "textAlign": "center", + "textAlign": "left", "verticalAlign": "top", "containerId": null, "lineHeight": 1.25 @@ -2212,10 +1986,10 @@ { "type": "text", "id": "legend", - "x": 60, - "y": 520, - "width": 967.4399999999999, - "height": 15.0, + "x": 0, + "y": 860, + "width": 565.5, + "height": 32.5, "strokeColor": "#64748b", "backgroundColor": "transparent", "fillStyle": "solid", @@ -2224,17 +1998,17 @@ "roughness": 0, "opacity": 100, "angle": 0, - "seed": 1119, + "seed": 1111, "version": 1, - "versionNonce": 1120, + "versionNonce": 1112, "isDeleted": false, "groupIds": [], "boundElements": null, "link": null, "locked": false, - "text": "Orange: external terminology. Light blue: content repository. Mid blue: library. Dark blue: application. Dashed: lineage or superseded.", - "originalText": "Orange: external terminology. Light blue: content repository. Mid blue: library. Dark blue: application. Dashed: lineage or superseded.", - "fontSize": 12, + "text": "Orange: external terminology. Light blue: content repository.\nMid blue: library. Dark blue: application. Dashed: lineage or superseded.", + "originalText": "Orange: external terminology. Light blue: content repository.\nMid blue: library. Dark blue: application. Dashed: lineage or superseded.", + "fontSize": 13, "fontFamily": 2, "textAlign": "left", "verticalAlign": "top", diff --git a/knowledge/repositories/repository-map.svg b/knowledge/repositories/repository-map.svg index 234881e..bc5b2fe 100644 --- a/knowledge/repositories/repository-map.svg +++ b/knowledge/repositories/repository-map.svg @@ -1,2 +1,2 @@ -How the repositories relateRead each row left to right: a terminology feeds content, a library packages it, an application uses it.TERMINOLOGIESCONTENTLIBRARIESAPPLICATIONSRadElement (ACR/RSNA)RDES and RDE codesfindingmodels2,382 finding modelsfindingmodelOIFM format, index, CLIs, MCPFinding Model Forgefmf.oidm.orgcommon_data_elementsRadElement snapshotCDEStaging259 draft CDE definitionsfinding-models-sitecatalog of findingmodelsRadLex (RSNA)RID codesanatomiclocations.org+ BodyPartIndex.py and .tsanatomic-locations packageinside findingmodelimaging-problem-listuses finding models and locationsSNOMED CT, FMA, LOINC, UMLS(and RadLex)med-ontology-lookupmoluIPL-MVP-ExtractionAndLabelingsupersededCDE-deriveddefinitionsenginecurated subsetlineagelookupssnapshotcontent batchesinformal path to submissioncurrent data lives in findingmodelgit submoduleontology search for enrichmentOrange: external terminology. Light blue: content repository. Mid blue: library. Dark blue: application. Dashed: lineage or superseded. \ No newline at end of file +CDE STAGINGFINDING MODELSAPPLICATIONSANATOMYTERMINOLOGY LOOKUPcommon_data_elementsRadElement snapshotCDEStaging259 draft CDEdefinitionsRadElement (ACR/RSNA)RDES and RDE codesfindingmodels2,382 finding modelsfindingmodelOIFM format, index,CLIs, MCPCDE-deriveddefinitionssnapshotcontent batchesimaging-problem-listuses models +locationsfinding-models-sitecorpus catalogFinding Model Forgefmf.oidm.orggit submoduleengine(CDEStaging also has aninformal path to RadElement)RadLex (RSNA)RID codesanatomiclocations.org+ BodyPartIndexanatomic-locations pkginside findingmodelsubsetlineageused bySNOMED CT, FMA,LOINC, UMLSmed-ontology-lookupmoluIPL-MVP-ExtractionAndLabeling(superseded)lookupsmolu also enriches findingmodelmetadata by ontology search (see text)Orange: external terminology. Light blue: content repository.Mid blue: library. Dark blue: application. Dashed: lineage or superseded. \ No newline at end of file diff --git a/site/README.md b/site/README.md index 0bc6b16..d28b041 100644 --- a/site/README.md +++ b/site/README.md @@ -2,8 +2,8 @@ Renders `knowledge/` (the OKF bundle) as a static [Quartz](https://quartz.jzhao.xyz) site. -Quartz itself is not vendored in this repository — only our config and one small plugin -live here. `build.sh` clones Quartz at a pinned commit into `site/.quartz-src/` +Quartz itself is not vendored in this repository — only our config and two small +plugins live here. `build.sh` clones Quartz at a pinned commit into `site/.quartz-src/` (gitignored) at build time and points it at `knowledge/`. ## What's here @@ -12,7 +12,8 @@ live here. `build.sh` clones Quartz at a pinned commit into `site/.quartz-src/` |---|---| | `quartz.config.yaml` | Site config: theme, plugins, layout | | `okf-meta-plugin/` | Component that renders OKF frontmatter as a badge row | -| `build.sh` | Clones Quartz, wires up the plugin, builds | +| `okf-lightbox-plugin/` | Component that adds a click-to-zoom image viewer | +| `build.sh` | Clones Quartz, wires up the plugins, builds | `site/.quartz-src/` (the Quartz checkout), `public/` (the build output), and any `node_modules/` under `site/` are gitignored. @@ -73,10 +74,68 @@ Note this Quartz fork moved frontmatter parsing out of core and into the (with `hidePropertiesView: true`) purely so frontmatter gets parsed at all — its own visible properties panel is suppressed so it doesn't duplicate okf-meta-plugin's badges. +## okf-lightbox-plugin + +A Quartz component plugin (hand-written ESM in `dist/`, no build step, no external +dependency) that turns every diagram image in an article into a click-to-zoom overlay, +so wide SVGs squeezed into the text column can be inspected without leaving the page. + +- Clicking an `article img` (or its wrapping link) opens the image in a full-viewport + overlay: mouse wheel or pinch to zoom around the cursor/touch point, drag to pan, + double-click to reset, Esc/click-outside/close-button to dismiss. +- The plain link is still the fallback — middle-click or Ctrl/Cmd-click bypasses the + overlay and opens the image in a new tab as normal, and the overlay's own "Open full + size" button does the same (that one's the true 1:1 resolution, in a new tab). +- The overlay itself opens at `scale = 0.92 * viewportWidth / imageWidth` — width-driven + only, no height term, floored at whatever scale the image was already rendering at + inline so opening it can never look like a regression. It opens scrolled to the top of + the diagram rather than vertically centered, since the point is reading top-to-bottom; + height overflow is normal and the stage pans. This is deliberately *not* a min(width, + height) "fit the whole image" calculation: these diagrams are all portrait (taller + than wide) while browser viewports are landscape, so a height term is almost always + the binding constraint and produces an overlay image *narrower* than the already + size-squeezed inline column — exactly backwards from the point of clicking in. + Double-click and the Reset button return to this same fitted scale, not literal 1:1. +- The `naturalW`/`naturalH` this is computed from is the image's real intrinsic + resolution, not the CSS-squeezed inline size and not `.naturalWidth` either. + Every diagram SVG in this bundle has a `viewBox` but no `width`/`height` attribute, so + `.naturalWidth` reports the CSS default-object-size fallback (~300px) rather than + the SVG's actual dimensions — the plugin fetches the SVG and reads its `width`/`height` + or `viewBox` directly instead of trusting `naturalWidth`. +- The component itself renders no markup — it only registers a component so Quartz + collects its CSS and client script (see `componentResources.ts` in Quartz core) and + is declared with `layout.position: afterBody`, which is part of Quartz's *shared* + layout and so applies to every page type, not just `content` pages. +- The click handler is registered on `document` in the capture phase specifically so it + runs before Quartz's SPA router's click listener on `window` — otherwise a click on + the image's wrapping `` would be treated as page + navigation to the raw `.svg` file. The overlay element is re-appended to `document.body` + on Quartz's `nav` event, since Quartz's SPA router (`micromorph`) diffs and can strip + dynamically-added body elements not present in the freshly-fetched page. +- The script ships as `beforeDOMLoaded`, not `afterDOMLoaded`, on purpose. In a + production build Quartz code-splits every component's `afterDOMLoaded` script into + its own hashed file and loads them all in parallel via dynamic `import()`, awaited as + a group before the SPA router itself initializes. That leaves a real window — narrow, + but observed in practice on the deployed site — where a user can click a diagram + before that chunk has loaded and registered its click interceptor, so the click falls + through to the SPA router uncontested and silently navigates to the raw SVG. + `beforeDOMLoaded` scripts are always bundled into one single, blocking `prescript.js` + loaded synchronously in `` before the body is even parsed, so registering the + interceptor there guarantees it exists before anything on the page is clickable at + all. The overlay DOM itself is still built lazily, on the first real open, which is + safe since a real click implies the body has already rendered. +- The backdrop scrim is a fixed dark color rather than derived from `--light`/`--dark`: + those are foreground/background *role* tokens that swap literal colors between light + and dark mode (in dark mode `--dark` is a near-white text color), so using either for + a dimming backdrop would invert in dark mode. Toolbar buttons and hint text do use + the theme variables and correctly adapt. + ## Link resolution The bundle uses two link styles the OKF spec allows: bundle-absolute links (`/dir/file.md`) in concept documents and `./file.md` links in directory indexes. Quartz's `markdownLinkResolution` handles one style at a time, so `build.sh` first runs `tools/prepare_site_content.py`, which copies `knowledge/` to a temporary directory outside the repository (Quartz skips gitignored paths) and rewrites every internal link to the bundle-absolute form. Quartz then builds from that copy with `markdownLinkResolution: absolute`. The bundle in git is never modified. -## Publishing to the Tigris bucket +## Hosting: Cloudflare Workers static assets + +`site/wrangler.jsonc` defines an assets-only Worker named `oidm-knowledge` that serves `public/`. Its `html_handling: auto-trailing-slash` gives exactly the clean URLs Quartz links to (`/glossary/oifm` serves `glossary/oifm.html`, `/glossary/` serves the folder index), so no link rewriting is needed anywhere. `task deploy` builds and deploys; `task preview` serves the build locally through Wrangler. Continuous deployment on push to `main` is in `.github/workflows/deploy.yml` and needs the repository secrets `CLOUDFLARE_API_TOKEN` and `CLOUDFLARE_ACCOUNT_ID`. Worker logic (comments, endpoints) can be added to the same Worker later without changing the site build. -`task publish` (or `bash site/publish-tigris.sh [bucket] [prefix]`) does everything in one step: validates the bundle, builds with a bucket-specific config (`baseUrl` under the bucket host, client-side navigation and popovers off), rewrites every internal link in the built HTML to an explicit `.html` or `index.html` path with `tools/flatten_site_links.py` (plain object storage serves keys literally, with no clean-URL rewriting), and uploads with the Tigris CLI. Result: `https://.t3.storage.dev//index.html`. The GitHub Pages build does not use the flattening step. +The earlier object-storage publishing path (link flattening plus a bucket upload) was removed once Cloudflare became the host. diff --git a/site/build.sh b/site/build.sh index 1110421..c27bf70 100755 --- a/site/build.sh +++ b/site/build.sh @@ -36,6 +36,11 @@ git -C "$QUARTZ_SRC" checkout --quiet "$QUARTZ_SHA" CONFIG_FILE="${QUARTZ_CONFIG:-$SITE_DIR/quartz.config.yaml}" # override with QUARTZ_CONFIG= (used by publish-tigris.sh) echo "==> Copying ${CONFIG_FILE#"$REPO_ROOT"/} into the checkout" cp "$CONFIG_FILE" "$QUARTZ_SRC/quartz.config.yaml" +if [ -n "${SITE_BASE_URL:-}" ]; then + # Per-target base URL (dev / staging / production) without editing the tracked config. + sed -i "s|^\(\s*\)baseUrl:.*$|\1baseUrl: ${SITE_BASE_URL}|" "$QUARTZ_SRC/quartz.config.yaml" + echo "==> baseUrl set to ${SITE_BASE_URL}" +fi echo "==> npm ci" ( cd "$QUARTZ_SRC" && npm ci ) diff --git a/site/okf-lightbox-plugin/package.json b/site/okf-lightbox-plugin/package.json new file mode 100644 index 0000000..1b5fc76 --- /dev/null +++ b/site/okf-lightbox-plugin/package.json @@ -0,0 +1,33 @@ +{ + "name": "okf-lightbox-plugin", + "version": "0.1.0", + "description": "Click-to-zoom image lightbox for Quartz - opens article diagrams in a pan/zoom overlay", + "type": "module", + "license": "MIT", + "main": "./dist/index.js", + "exports": { + ".": { + "import": "./dist/index.js" + }, + "./components": { + "import": "./dist/components/index.js" + } + }, + "quartz": { + "name": "okf-lightbox-plugin", + "displayName": "OKF Lightbox", + "category": "component", + "version": "0.1.0", + "quartzVersion": ">=5.0.0", + "defaultOrder": 50, + "defaultEnabled": true, + "defaultOptions": {}, + "components": { + "OkfLightbox": { + "displayName": "OKF Lightbox", + "defaultPosition": "afterBody", + "defaultPriority": 50 + } + } + } +} diff --git a/site/quartz.config.yaml b/site/quartz.config.yaml index 20e3866..aa476f9 100644 --- a/site/quartz.config.yaml +++ b/site/quartz.config.yaml @@ -272,6 +272,17 @@ plugins: layout: position: beforeBody priority: 15 + # Click-to-zoom pan/zoom overlay for article diagram images. Renders no + # markup itself - only injects CSS and a client script (afterBody is part + # of the shared layout, so it's present on every page type). Source path + # resolves to site/okf-lightbox-plugin — see site/build.sh. + - source: ../okf-lightbox-plugin + enabled: true + options: {} + order: 51 + layout: + position: afterBody + priority: 50 layout: groups: toolbar: diff --git a/site/wrangler.jsonc b/site/wrangler.jsonc new file mode 100644 index 0000000..4cf48aa --- /dev/null +++ b/site/wrangler.jsonc @@ -0,0 +1,29 @@ +// Cloudflare Worker serving the built Quartz site as static assets. +// +// Three targets, all assets-only Workers on the same account: +// task deploy -> oidm-knowledge-dev (default; day-to-day) +// task deploy:staging -> oidm-knowledge-staging +// task deploy:prod -> oidm-knowledge (the public site) +// +// html_handling "auto-trailing-slash" is what Quartz expects: /glossary/oifm serves +// glossary/oifm.html and /glossary/ serves glossary/index.html. Worker logic +// (comments, endpoints) can be added later without changing the site build. +{ + "name": "oidm-knowledge", + "compatibility_date": "2026-09-21", + "assets": { + "directory": "../public", + "html_handling": "auto-trailing-slash", + "not_found_handling": "404-page" + }, + "env": { + "dev": { + "name": "oidm-knowledge-dev", + "assets": { "directory": "../public", "html_handling": "auto-trailing-slash", "not_found_handling": "404-page" } + }, + "staging": { + "name": "oidm-knowledge-staging", + "assets": { "directory": "../public", "html_handling": "auto-trailing-slash", "not_found_handling": "404-page" } + } + } +} diff --git a/tools/diagrams/README.md b/tools/diagrams/README.md new file mode 100644 index 0000000..50ef2bd --- /dev/null +++ b/tools/diagrams/README.md @@ -0,0 +1,30 @@ +# Diagrams + +Diagrams in the bundle are Excalidraw files rendered to SVG and placed beside the document that embeds them (`knowledge//.excalidraw` and `.svg`). Mermaid is not used. + +## Source-of-truth rule + +Per diagram, one of two things is the source: + +- **Builder-generated.** `build_.py` in this directory writes the `.excalidraw` file. Edit the builder, not the file. Iterate by rendering and looking at the PNG. +- **Hand-edited.** Once anyone edits a `.excalidraw` file directly (in Excalidraw or as JSON), that file becomes the source. Retire its builder in the same change: delete `build_.py` and add the diagram to the list below. + +Hand-edited diagrams (builders retired): none yet. + +## Rendering + +From the excalidraw-diagram skill's references directory (it holds the Playwright environment): + +```bash +cd ~/.claude/skills/excalidraw-diagram/references +uv run python /home/talkasab/oidm-knowledge/tools/diagrams/render_excalidraw.py \ + /home/talkasab/oidm-knowledge/knowledge//.excalidraw \ + -o /home/talkasab/oidm-knowledge/sources/-vN.png \ + --svg /home/talkasab/oidm-knowledge/sources/-vN.svg +``` + +Then view the PNG, fix, re-render, until nothing crosses a box or a label and every label is readable. Copy the accepted SVG beside the document, drop the fixed `width`/`height` attributes on the root `` and add `style="max-width:100%;height:auto"`, and embed it with an image line plus an italic source line (see `knowledge/overview/architecture.md`). + +`render_template.html` loads the Excalidraw library from esm.sh pinned to 0.18.0; the unpinned build had a broken dependency. + +`excalib.py` holds the shared palette and element helpers (boxes, bound text, straight and elbowed arrows, lines). diff --git a/tools/diagrams/build_architecture.py b/tools/diagrams/build_architecture.py index 7bb3cfc..cff3936 100644 --- a/tools/diagrams/build_architecture.py +++ b/tools/diagrams/build_architecture.py @@ -1,66 +1,115 @@ #!/usr/bin/env python3 """Build the OIDM architecture diagram (three layers joined by identifiers). +Three adjacent stacked bands (applications, data structures, semantic +foundation); Imaging Persona and CDEs-at-RadElement are compact second rows +within their own band (persona under Imaging Problem List at column 3, CDEs +under Finding models at column 1) rather than a separate trailing section, +with captions beside them instead of incoming arrows -- since neither sits at +column 1/2, they never block the foundation->data join arrows, which stay in +columns 1-2. Exam types -> Exam Finding List is also a caption, not an arrow, +to remove the one join that had no clean column-aligned path. Title/subtitle +and the "Also:" applications note are left for the page text. Output: knowledge/overview/architecture.excalidraw; render with render_excalidraw.py.""" from excalib import PRIMARY, SECONDARY, TERTIARY, EXTERNAL, PLANNED, TITLE, SUBTITLE, BODY, LINE, els, base, text, box, find, arrow, hline, save # ---------------------------------------------------------------- layout -W, H = 260, 74 # box size -C1, C2, C3, C4 = 150, 500, 850, 1200 # columns, 90px gaps for arrow labels; left margin reserved for the Forge arrow -Y_APP, Y_DATA, Y_FOUND = 160, 440, 720 +# Box labels are hand-wrapped (Excalidraw does not auto-wrap bound text) so +# no line exceeds ~21 chars; that lets boxes stay narrow at 900px width. +W, GAP = 190, 26 # box width, horizontal gap between boxes in a row +C1 = 80 # left gutter (80px) -- wide clearance for the Forge -> Finding models line and the band labels, which both start at C1 +C2 = C1 + W + GAP # 296 +C3 = C2 + W + GAP # 512 +FORGE_X = 0 # off the C1 grid so its arrow can drop straight down the gutter, clear of Observation +CONTENT_W = C3 + W # 702 -els.append(text("title", 60, 40, "Open Imaging Data Model: three layers joined by identifiers", size=26, color=TITLE)) -els.append(text("subtitle", 60, 82, "Each layer depends on the one below it. Codes minted in the semantic foundation are what the data structures carry and the applications exchange.", size=14, color=BODY)) +H_APP, H, H_EXT = 100, 80, 100 # row heights: 4-line boxes (app row, CDE row) need more height than 3-line boxes +ROW_GAP = 90 # band-to-band vertical gap +ROW_GAP2 = 60 # row1->row2 gap within a band (no arrow crosses it, so it can be tighter) +LABEL_BUF = 85 # extra clearance above the data-structures row so "per exam"/"per patient" have room above the boxes, not on them -# band labels and dividers -for lbl, y in (("APPLICATIONS", Y_APP - 34), ("DATA STRUCTURES", Y_DATA - 34), ("SEMANTIC FOUNDATION", Y_FOUND - 34)): - els.append(text("band_" + lbl.split()[0].lower(), C1, y, lbl, size=13, color=SUBTITLE)) -hline("div1", 40, Y_DATA - 50, 1440) -hline("div2", 40, Y_FOUND - 50, 1440) +Y_APP = 40 +Y_DATA_HDR = Y_APP + H_APP + ROW_GAP # where the divider + "DATA STRUCTURES" label sit +Y_DATA = Y_DATA_HDR + LABEL_BUF # boxes start lower than usual, leaving that extra strip clear +Y_DATA2 = Y_DATA + H + ROW_GAP2 # Imaging Persona row (column 3 only) +Y_FOUND_HDR = Y_DATA2 + H + ROW_GAP +Y_FOUND = Y_FOUND_HDR + 24 +Y_FOUND2 = Y_FOUND + H + ROW_GAP2 # CDEs row (column 1 only) -# applications -box("forge", 40, Y_APP, W, H, "Finding Model Forge\nauthoring wizard, fmf.oidm.org", SECONDARY) -box("extract", C2, Y_DATA - 280, W, H, "Report extraction platform\nLLM extraction and coding (dev)", SECONDARY) -box("viewer", C3, Y_APP, W, H, "Imaging Problem List viewer\nimaging-problem-list.pages.dev", SECONDARY) -els.append(text("apps_note", C4, Y_APP + 8, "Also: finding-models-site (catalog),\nmed-ontology-lookup (terminology lookup),\nOpen Imaging Reporting SDK (concept only)", size=12, color=BODY)) +# ---------------------------------------------------------------- applications +els.append(text("band_app", C1, Y_APP - 24, "APPLICATIONS", size=14, color=SUBTITLE)) +box("forge", FORGE_X, Y_APP, W, H_APP, "Finding Model Forge\nauthoring wizard\nfmf.oidm.org", SECONDARY) +box("extract", C2, Y_APP, W, H_APP, "Report extraction\nplatform\nLLM extraction\nand coding (dev)", SECONDARY) +box("viewer", C3, Y_APP, W, H_APP, "Imaging Problem\nList viewer\nimaging-problem-\nlist.pages.dev", SECONDARY) -# data structures -box("obs", C1, Y_DATA, W, H, "Observation\nfinding + location + attributes", PRIMARY) -box("efl", C2, Y_DATA, W, H, "Exam Finding List\nall observations of one exam", PRIMARY) -box("ipl", C3, Y_DATA, W, H, "Imaging Problem List\none patient, grouped by finding", PRIMARY) -box("persona", C4, Y_DATA, W, H, "Imaging Persona\nplus clinical context (concept)", PLANNED, dashed=True) -arrow("a_obs_efl", "obs", "right", "efl", "left", "per exam") -arrow("a_efl_ipl", "efl", "right", "ipl", "left", "per patient") -arrow("a_ipl_persona", "ipl", "right", "persona", "left", "goal", dashed=True) +# ---------------------------------------------------------------- data structures (adjacent to applications) +hline("div1", 0, Y_DATA_HDR - 6, CONTENT_W) +els.append(text("band_data", C1, Y_DATA_HDR, "DATA STRUCTURES", size=14, color=SUBTITLE)) +box("obs", C1, Y_DATA, W, H, "Observation\nfinding + location\n+ attributes", PRIMARY) +box("efl", C2, Y_DATA, W, H, "Exam Finding List\nall observations\nof one exam", PRIMARY) +box("ipl", C3, Y_DATA, W, H, "Imaging Problem List\none patient, grouped\nby finding", PRIMARY) +# labels sit in the LABEL_BUF strip above the boxes, clear of both the band +# label above and the box tops below (checked: label bottom edge stays ~25px +# above the box top, well clear of the rounded corners) +arrow("a_obs_efl", "obs", "right", "efl", "left", "per exam", label_dy=-88) +arrow("a_efl_ipl", "efl", "right", "ipl", "left", "per patient", label_dy=-88) -# semantic foundation -box("fm", C1, Y_FOUND, W, H, "Finding models\nOIFM_ / OIFMA_ codes", TERTIARY) +# applications -> data structures: both adjacent rows, short vertical arrows. +# These lines got taller once LABEL_BUF pushed the data-structures row down, +# so the labels need more upward offset to clear the div1 divider below them. +arrow("a_extract_efl", "extract", "bottom", "efl", "top", "extracts from\nreports", label_dy=-50) +arrow("a_ipl_viewer", "ipl", "top", "viewer", "bottom", "renders", label_dy=-32) + +# Imaging Persona: second data-structures row, under Imaging Problem List +# (column 3) so it never sits over columns 1-2, where the foundation->data +# joins run -- caption to its left instead of an incoming arrow. +box("persona", C3, Y_DATA2, W, H, "Imaging Persona\nplus clinical\ncontext (concept)", PLANNED, dashed=True) +# caption BELOW persona, not beside: column 3 is clear all the way down, but +# columns 1-2 at this row height are the foundation->data join corridor +els.append(text("persona_note", C3, Y_DATA2 + H + 14, "goal: extends the Imaging\nProblem List with context", size=13, color=PLANNED[2])) + +# ---------------------------------------------------------------- semantic foundation (adjacent to data structures) +hline("div2", 0, Y_FOUND_HDR - 6, CONTENT_W) +els.append(text("band_found", C1, Y_FOUND_HDR, "SEMANTIC FOUNDATION", size=14, color=SUBTITLE)) +box("fm", C1, Y_FOUND, W, H, "Finding models\nOIFM_ / OIFMA_\ncodes", TERTIARY) box("al", C2, Y_FOUND, W, H, "Anatomic locations\nRadLex RID codes", TERTIARY) -box("et", C3, Y_FOUND, W, H, "Exam types\nLOINC / Playbook (planned)", PLANNED, dashed=True) -box("cde", C4, Y_FOUND, W, H, "ACR/RSNA CDEs at RadElement\nRDES / RDE codes (allied project)", EXTERNAL) -els.append(text("terms", C1, Y_FOUND + H + 40, "Terminologies underneath: RadLex, SNOMED CT, FMA, UMLS, MeSH, LOINC and the RSNA Radiology Playbook. Looked up through med-ontology-lookup.", size=13, color=BODY)) +box("et", C3, Y_FOUND, W, H, "Exam types\nLOINC / Playbook\n(planned)", PLANNED, dashed=True) +els.append(text("et_note", C3, Y_FOUND + H + 14, "supplies the LOINC\nexam code on the\nExam Finding List", size=13, color=PLANNED[2])) + +# foundation -> data: both adjacent rows, so every join is a short, direct +# line -- straight vertical where columns line up, a short one-column +# diagonal where two foundation boxes both feed Observation. Labels sit to +# the RIGHT of their line (away from the left-gutter "authors" arrow). +# fm->obs binds at 0.92 across the box (not centered): centered, this line +# would run at column 1's midpoint, straight through the "SEMANTIC +# FOUNDATION" label text above it (the label is ~162px wide, wider than half +# the 190px box) -- shifted right, it clears the label with room to spare. +arrow("a_fm_obs", "fm", "top", "obs", "bottom", "OIFM and\nOIFMA codes", s_frac=0.92, d_frac=0.92, label_dx=-70, label_dy=-40) +arrow("a_al_obs", "al", "top", "obs", "bottom", "RID", d_frac=0.8, label_dx=44, label_dy=-40) + +# Forge (applications) authors finding models (semantic foundation), two +# rows down -- routed through the left gutter (x data -arrow("a_fm_obs", "fm", "top", "obs", "bottom", "OIFM and OIFMA codes", label_dx=90) -arrow("a_al_obs", "al", "top", "obs", "bottom", "RID", s_frac=0.5, d_frac=0.85, label_dx=30) -arrow("a_et_efl", "et", "top", "efl", "bottom", "LOINC exam code", s_frac=0.5, d_frac=0.85, dashed=True, label_dx=40) -arrow("a_cde_fm", "cde", "top", "fm", "top", None) # placeholder, replaced below -els.pop() # remove placeholder arrow element -find("cde")["boundElements"].pop(); find("fm")["boundElements"].pop() -# CDE <-> finding models: a curved dashed arrow along the bottom would cross; use a short labeled note instead -els.append(text("cde_note", C4, Y_FOUND + H + 12, "finding models graduate to CDEs; CDE definitions seed finding models", size=12, color=EXTERNAL[2])) +# CDEs at RadElement: second foundation row, under Finding models (column 1) +# -- caption to its right instead of an incoming arrow (a curved arrow here +# would cross the row above it; the relationship is a two-way "graduates +# to / seeds" one anyway, better said in words). +box("cde", C1, Y_FOUND2, W, H_EXT, "ACR/RSNA CDEs at\nRadElement\nRDES / RDE codes\n(allied project)", EXTERNAL) +els.append(text("cde_note", C2, Y_FOUND2 + 18, "finding models graduate to CDEs;\nCDE definitions seed finding models", size=13, color=EXTERNAL[2])) -# applications -> data / foundation -arrow("a_forge_fm", "forge", "bottom", "fm", "left", "authors", s_frac=0.12, d_frac=0.5, elbow="vertical-first", label_dx=-4, label_dy=-14) -arrow("a_extract_efl", "extract", "bottom", "efl", "top", "extracts from reports") -arrow("a_ipl_viewer", "ipl", "top", "viewer", "bottom", "renders") +# ---------------------------------------------------------------- footnotes +Y_NOTE = Y_FOUND2 + H_EXT + 40 +els.append(text("terms", 0, Y_NOTE, "Terminologies underneath: RadLex, SNOMED CT, FMA, UMLS, MeSH, LOINC and the RSNA\nRadiology Playbook. Looked up through med-ontology-lookup.", size=13, color=BODY)) -# legend -LX, LY = C4, Y_FOUND + H + 80 -els.append(text("legend_t", LX, LY, "Legend", size=13, color=SUBTITLE)) +Y_LEGEND = Y_NOTE + 2 * 13 * 1.25 + 22 +els.append(text("legend_t", 0, Y_LEGEND, "Legend", size=13, color=SUBTITLE)) for i, (lab, colors, dashed) in enumerate((("solid outline: exists today", ("#ffffff", "#1e3a5f", ""), False), ("dashed outline: documented or planned only", PLANNED, True), ("orange: allied external project", EXTERNAL, False))): - r = base("rectangle", f"lg{i}", LX, LY + 24 + i * 24, 18, 14, colors[1], colors[0], dashed=dashed, sw=1) + ly = Y_LEGEND + 24 + i * 22 + r = base("rectangle", f"lg{i}", 0, ly, 18, 14, colors[1], colors[0], dashed=dashed, sw=1) r["roundness"] = {"type": 3}; r["boundElements"] = None els.append(r) - els.append(text(f"lg{i}_t", LX + 26, LY + 22 + i * 24, lab, size=12, color=BODY)) + els.append(text(f"lg{i}_t", 26, ly - 2, lab, size=13, color=BODY)) save("knowledge/overview/architecture.excalidraw") diff --git a/tools/diagrams/build_hierarchy.py b/tools/diagrams/build_hierarchy.py index e2f01fd..006a317 100644 --- a/tools/diagrams/build_hierarchy.py +++ b/tools/diagrams/build_hierarchy.py @@ -1,39 +1,56 @@ #!/usr/bin/env python3 """Build the data-structure ladder: Observation, Exam Finding List, Imaging Problem List, Imaging Persona, with the fields each carries and its status. +Recomposed as a vertical ladder (Observation on top, Imaging Persona at the +bottom) with each box's field list set to its right, to fit a ~900px column. +Title/subtitle are left for the page text. Output: knowledge/data-structures/hierarchy.excalidraw""" from excalib import PRIMARY, SECONDARY, TERTIARY, EXTERNAL, PLANNED, TITLE, SUBTITLE, BODY, LINE, els, base, text, box, find, arrow, hline, save -W, H, GAP = 280, 74, 150 -Y = 130 -cols = [60 + i * (W + GAP) for i in range(4)] +BOX_X = 0 +BOX_W, BOX_H = 250, 70 +TICK_W = 30 # short connector from box's right edge to its field list +FIELD_X = BOX_X + BOX_W + TICK_W +ARROW_GAP = 74 # vertical space between one box's bottom and the next box's top +FIELD_SIZE, STATUS_SIZE = 14, 13 +CONTENT_W = FIELD_X + 460 # keeps field-list lines within this width -els.append(text("title", 60, 40, "From one observation to a patient's imaging history", size=26, color=TITLE)) -els.append(text("subtitle", 60, 82, "Each structure to the right contains the ones to its left and adds one more level of context.", size=14, color=BODY)) +rows = [ + ("obs", "Observation\none finding, one exam", PRIMARY, False, + ["findingCode (OIFM)", "findingDescription", "anatomicLocation (RID)", "attributes[] with value codes", "reportText"], + "JSON in use; no published schema", SUBTITLE), + ("efl", "Exam Finding List\nevery observation of one exam", PRIMARY, False, + ["diagnosticReportId", "patientInfo", "examInfo with LOINC exam code", "findings[]: the observations"], + "JSON in use; no published schema", SUBTITLE), + ("ipl", "Imaging Problem List\none patient, keyed by finding", PRIMARY, False, + ["patient", "findings[] keyed by", "(findingCode, locationId)", "each with dated observations[]", "status derived, not stored"], + "JSON in use; grouping changed on dev", SUBTITLE), + ("persona", "Imaging Persona\nplus clinical context", PLANNED, True, + ["clinical context (orders, indications)", "medical baseline (problems, labs)", "specialized history (oncology)", "surgical history (operative, implants)"], + "concept only, no artifact", PLANNED[2]), +] +arrow_labels = ["per exam", "all exams", "with context"] -box("obs", cols[0], Y, W, H, "Observation\none finding, one exam", PRIMARY) -box("efl", cols[1], Y, W, H, "Exam Finding List\nevery observation of one exam", PRIMARY) -box("ipl", cols[2], Y, W, H, "Imaging Problem List\none patient, keyed by finding", PRIMARY) -box("persona", cols[3], Y, W, H, "Imaging Persona\nplus clinical context", PLANNED, dashed=True) +y = 40 +prev_id = None +for i, (bid, label, colors, dashed, fields, status, status_color) in enumerate(rows): + box(bid, BOX_X, y, BOX_W, BOX_H, label, colors, dashed=dashed) -arrow("a1", "obs", "right", "efl", "left", "per exam", label_dy=-26) -arrow("a2", "efl", "right", "ipl", "left", "all exams", label_dy=-26) -arrow("a3", "ipl", "right", "persona", "left", "with context", dashed=True, label_dy=-26) + field_h = len(fields) * FIELD_SIZE * 1.25 + fld_text = "\n".join(fields) + els.append(text(f"{bid}_fields", FIELD_X, y, fld_text, size=FIELD_SIZE, color="#374151")) + els.append(text(f"{bid}_status", FIELD_X, y + field_h + 8, status, size=STATUS_SIZE, color=status_color)) + tick = base("line", f"{bid}_tick", BOX_X + BOX_W, y + BOX_H / 2, TICK_W, 0, LINE, "transparent", sw=1) + tick.update({"points": [[0, 0], [TICK_W, 0]], "boundElements": None}) + els.append(tick) -fields = [ - "findingCode (OIFM)\nfindingDescription\nanatomicLocation (RID)\nattributes[] with value codes\nreportText", - "diagnosticReportId\npatientInfo\nexamInfo with LOINC exam code\nfindings[]: the observations", - "patient\nfindings[] keyed by\n(findingCode, locationId)\neach with dated observations[]\nstatus derived, not stored", - "clinical context (orders, indications)\nmedical baseline (problems, labs)\nspecialized history (oncology)\nsurgical history (operative, implants)", -] -status = ["JSON in use; no published schema", "JSON in use; no published schema", "JSON in use; grouping changed on dev", "concept only, no artifact"] -for i, (f, st) in enumerate(zip(fields, status)): - x = cols[i] - ln = base("line", f"tick{i}", x + 18, Y + H, 0, 22, LINE, "transparent", sw=1) - ln.update({"points": [[0, 0], [0, 22]], "boundElements": None}) - els.append(ln) - els.append(text(f"fields{i}", x + 10, Y + H + 30, f, size=13, color="#374151")) - els.append(text(f"status{i}", x + 10, Y + H + 30 + 5 * 13 * 1.25 + 8, st, size=12, color=SUBTITLE if i < 3 else PLANNED[2])) + content_h = max(BOX_H, field_h + 8 + STATUS_SIZE * 1.25) + if prev_id is not None: + arrow(f"a_{prev_id}_{bid}", prev_id, "bottom", bid, "top", arrow_labels[i - 1], + label_dx=BOX_W / 2 + 14, label_dy=-12, dashed=dashed) + prev_id, y = bid, y + content_h + ARROW_GAP + +Y_NOTE = y - ARROW_GAP + 40 +els.append(text("note", 0, Y_NOTE, "Codes come from the semantic foundation: OIFM and OIFMA identifiers from finding\nmodels, RID from anatomic locations, LOINC for the exam.", size=13, color=BODY)) -els.append(text("note", 60, Y + H + 200, "Codes come from the semantic foundation: OIFM and OIFMA identifiers from finding models, RID from anatomic locations, LOINC for the exam.", size=13, color=BODY)) save("knowledge/data-structures/hierarchy.excalidraw") diff --git a/tools/diagrams/build_repository_map.py b/tools/diagrams/build_repository_map.py index 059522e..2b0647c 100644 --- a/tools/diagrams/build_repository_map.py +++ b/tools/diagrams/build_repository_map.py @@ -1,80 +1,79 @@ #!/usr/bin/env python3 -"""Build the repository data-flow map: one row per theme so the main flows run -left to right (terminology, content, library, application). +"""Build the repository data-flow map: one row per theme, each a short +left-to-right chain of at most three boxes, stacked top to bottom so every +cross-row flow is a short arrow to an ADJACENT row only -- rows are ordered +(CDE staging, finding models, applications, anatomy, terminology lookup) so +that CDE staging and applications both sit directly next to finding models, +and applications sits directly next to anatomy. Two edges that would have to +skip a row (CDEStaging -> RadElement, med-ontology-lookup -> findingmodel) +are dropped as captions instead -- both are already stated in the page prose. Output: knowledge/repositories/repository-map.excalidraw""" from excalib import PRIMARY, SECONDARY, TERTIARY, EXTERNAL, PLANNED, TITLE, SUBTITLE, BODY, LINE, els, base, text, box, find, arrow, save -W, H = 250, 60 -C = [60, 420, 780, 1140] # columns, 110px gutters -R = [150, 240, 330, 420] # rows +W, H = 190, 80 +GAP = 115 # wide enough that the longest horizontal-arrow label ("CDE-derived") fits centered above its arrow with room on each side +C1, C2, C3 = 0, W + GAP, 2 * (W + GAP) # 0, 305, 610 +ROW_GAP = 90 +CONTENT_W = C3 + W # 800 -els.append(text("title", 60, 40, "How the repositories relate", size=26, color=TITLE)) -els.append(text("subtitle", 60, 78, "Read each row left to right: a terminology feeds content, a library packages it, an application uses it.", size=14, color=BODY)) -for lbl, x in (("TERMINOLOGIES", C[0]), ("CONTENT", C[1]), ("LIBRARIES", C[2]), ("APPLICATIONS", C[3])): - els.append(text("hdr_" + lbl.lower(), x, 100, lbl, size=13, color=SUBTITLE)) +row_names = ["cde_stage", "fm_pipeline", "apps", "anatomy", "terms"] +row_labels = ["CDE STAGING", "FINDING MODELS", "APPLICATIONS", "ANATOMY", "TERMINOLOGY LOOKUP"] +Y = {} +y = 40 +for name, lbl in zip(row_names, row_labels): + Y[name] = y + els.append(text(f"hdr_{name}", C1, y - 24, lbl, size=14, color=SUBTITLE)) + y += H + ROW_GAP -# row 1: finding models -box("radelement", C[0], R[0], W, H, "RadElement (ACR/RSNA)\nRDES and RDE codes", EXTERNAL, size=14) -box("fms", C[1], R[0], W, H, "findingmodels\n2,382 finding models", TERTIARY, size=14) -box("fm", C[2], R[0], W, H, "findingmodel\nOIFM format, index, CLIs, MCP", SECONDARY, size=14) -box("forge", C[3], R[0], W, H, "Finding Model Forge\nfmf.oidm.org", PRIMARY, size=14) -# row 2: CDE staging and the catalog site -box("cdesnap", C[0], R[1], W, H, "common_data_elements\nRadElement snapshot", TERTIARY, size=14) -box("cdes", C[1], R[1], W, H, "CDEStaging\n259 draft CDE definitions", TERTIARY, size=14) -box("site", C[3], R[1], W, H, "finding-models-site\ncatalog of findingmodels", PRIMARY, size=14) -# row 3: anatomy -box("radlex", C[0], R[2], W, H, "RadLex (RSNA)\nRID codes", EXTERNAL, size=14) -box("alorg", C[1], R[2], W, H, "anatomiclocations.org\n+ BodyPartIndex.py and .ts", TERTIARY, size=14) -box("alpkg", C[2], R[2], W, H, "anatomic-locations package\ninside findingmodel", SECONDARY, size=14) -box("ipl", C[3], R[2], W, H, "imaging-problem-list\nuses finding models and locations", PRIMARY, size=14) -# row 4: terminology lookup -box("others", C[0], R[3], W, H, "SNOMED CT, FMA, LOINC, UMLS\n(and RadLex)", EXTERNAL, size=14) -box("molu", C[2], R[3], W, H, "med-ontology-lookup\nmolu", SECONDARY, size=14) -box("mvp", C[3], R[3], W, H, "IPL-MVP-ExtractionAndLabeling\nsuperseded", PLANNED, dashed=True, size=14) +# row 1: CDE staging (2 boxes; columns line up with row 2's RadElement/findingmodels) +box("cdesnap", C1, Y["cde_stage"], W, H, "common_data_elements\nRadElement snapshot", TERTIARY) +box("cdes", C2, Y["cde_stage"], W, H, "CDEStaging\n259 draft CDE\ndefinitions", TERTIARY) -# horizontal flows +# row 2: finding model pipeline +box("radelement", C1, Y["fm_pipeline"], W, H, "RadElement (ACR/RSNA)\nRDES and RDE codes", EXTERNAL) +box("fms", C2, Y["fm_pipeline"], W, H, "findingmodels\n2,382 finding models", TERTIARY) +box("fm", C3, Y["fm_pipeline"], W, H, "findingmodel\nOIFM format, index,\nCLIs, MCP", SECONDARY) arrow("f1", "radelement", "right", "fms", "left", "CDE-derived") arrow("f2", "fms", "right", "fm", "left", "definitions") -arrow("f3", "fm", "right", "forge", "left", "engine", s_frac=0.35, d_frac=0.35) -arrow("f4", "radlex", "right", "alorg", "left", "curated subset") -arrow("f5", "alorg", "right", "alpkg", "left", "lineage", dashed=True) -arrow("f6", "alpkg", "right", "ipl", "left", None, s_frac=0.7, d_frac=0.7) -arrow("f7", "others", "right", "molu", "left", "lookups") -# vertical flows -arrow("f8", "radelement", "bottom", "cdesnap", "top", "snapshot", s_frac=0.5, d_frac=0.5, label_dx=42, label_dy=-8) -arrow("f9", "cdes", "top", "fms", "bottom", "content batches", s_frac=0.5, d_frac=0.5, label_dx=70, label_dy=-8) -arrow("f10", "cdes", "left", "radelement", "bottom", None, s_frac=0.5, d_frac=0.75, dashed=True) -els.append(text("f10_l", C[0] + W + 14, R[1] + H + 4, "informal path to submission", size=11, color=BODY)) -els.append(text("f5_note", C[1] + 30, R[2] + H + 4, "current data lives in findingmodel", size=11, color=BODY)) -# elbowed flows through empty gutters -def elbow(id_, src, dst, pts_abs, label, lx, ly, dashed=False): - a, b = find(src), find(dst) - x0, y0 = pts_abs[0] - ar = base("arrow", id_, x0, y0, pts_abs[-1][0] - x0, pts_abs[-1][1] - y0, LINE, "transparent", dashed=dashed) - ar.update({"points": [[x - x0, y - y0] for x, y in pts_abs], - "startBinding": {"elementId": src, "focus": 0, "gap": 2}, "endBinding": {"elementId": dst, "focus": 0, "gap": 2}, - "startArrowhead": None, "endArrowhead": "arrow", "boundElements": None}) - a["boundElements"].append({"id": id_, "type": "arrow"}); b["boundElements"].append({"id": id_, "type": "arrow"}) - els.append(ar) - if label: - els.append(text(id_ + "_l", lx, ly, label, size=11, color=BODY)) +# row1 <-> row2: both adjacent, straight verticals (same columns). +# cdesnap/cdes sit ABOVE radelement/fms on the page, so the "ascending" arrow +# (radelement -> cdesnap) binds radelement's top to cdesnap's bottom, and the +# "descending" one (cdes -> fms) binds cdes's bottom to fms's top. +arrow("f3", "radelement", "top", "cdesnap", "bottom", "snapshot") +arrow("f4", "cdes", "bottom", "fms", "top", "content batches") -# findingmodels -> finding-models-site: over the top of the libraries column -elbow("e1", "fms", "site", [(C[1] + W * 0.75, R[0]), (C[1] + W * 0.75, 138), (C[3] + W / 2, 138), (C[3] + W / 2, R[1])], - "git submodule", C[1] + W + 14, 122) -# fix: the last leg must come down past row 1 into the site box top; run it in the gutter right of column 4 instead -find("e1")["points"] = [[0, 0], [0, 138 - R[0]], [C[3] + W + 30 - (C[1] + W * 0.75), 138 - R[0]], - [C[3] + W + 30 - (C[1] + W * 0.75), R[1] + H / 2 - R[0]], [C[3] + W - (C[1] + W * 0.75), R[1] + H / 2 - R[0]]] -# findingmodel -> imaging-problem-list: down the gutter between libraries and applications -elbow("e2", "fm", "ipl", [(C[2] + W, R[0] + H * 0.85), (C[2] + W + 70, R[0] + H * 0.85), (C[2] + W + 70, R[2] + H * 0.3), (C[3], R[2] + H * 0.3)], - "", 0, 0) -# med-ontology-lookup -> findingmodel: up the same gutter, left of e2 -elbow("e3", "molu", "fm", [(C[2] + W, R[3] + H * 0.5), (C[2] + W + 40, R[3] + H * 0.5), (C[2] + W + 40, R[0] + H + 15), (C[2] + W - 30, R[0] + H + 15), (C[2] + W - 30, R[0] + H)], - "ontology search for enrichment", 0, 0, dashed=True) -lab = find("e3_l"); lw = len("ontology search for enrichment") * 11 * 0.58 -cx, cy = C[2] + W + 40 - 12, (R[3] + H * 0.5 + R[0] + H + 15) / 2 -lab.update({"x": cx - lw / 2, "y": cy - 7, "width": lw, "angle": -1.5708, "textAlign": "center"}) +# row 3: applications (fed from row 2 above and row 4 below -- both adjacent) +box("ipl", C1, Y["apps"], W, H, "imaging-problem-list\nuses models +\nlocations", PRIMARY) +box("site", C2, Y["apps"], W, H, "finding-models-site\ncorpus catalog", PRIMARY) +box("forge", C3, Y["apps"], W, H, "Finding Model Forge\nfmf.oidm.org", PRIMARY) +arrow("f5", "fms", "bottom", "site", "top", "git submodule") # row2->row3, same column, straight vertical +arrow("f6", "fm", "bottom", "forge", "top", "engine") # row2->row3, same column, straight vertical +# C1 has no arrow through this gap (imaging-problem-list is fed from row 4 +# below, not row 2 above), so it is clear for this caption +els.append(text("cdes_note", C1, Y["fm_pipeline"] + H + 12, "(CDEStaging also has an\ninformal path to RadElement)", size=13, color=BODY, w=W)) + +# row 4: anatomy +box("radlex", C1, Y["anatomy"], W, H, "RadLex (RSNA)\nRID codes", EXTERNAL) +box("alorg", C2, Y["anatomy"], W, H, "anatomiclocations.org\n+ BodyPartIndex", TERTIARY) +box("alpkg", C3, Y["anatomy"], W, H, "anatomic-locations pkg\ninside findingmodel", SECONDARY) +arrow("f7", "radlex", "right", "alorg", "left", "subset") +arrow("f8", "alorg", "right", "alpkg", "left", "lineage", dashed=True) + +# row3 <-> row4: adjacent rows -- one clean line, no bends, even though it +# spans the row's full width (alpkg is the rightmost box in row 4, ipl the +# leftmost in row 3, to keep each row's own left-to-right reading intact) +arrow("f9", "alpkg", "top", "ipl", "bottom", "used by", s_frac=0.5, d_frac=0.5) + +# row 5: terminology lookup +box("others", C1, Y["terms"], W, H, "SNOMED CT, FMA,\nLOINC, UMLS", EXTERNAL) +box("molu", C2, Y["terms"], W, H, "med-ontology-lookup\nmolu", SECONDARY) +box("mvp", C3, Y["terms"], W, H, "IPL-MVP-\nExtractionAndLabeling\n(superseded)", PLANNED, dashed=True) +arrow("f10", "others", "right", "molu", "left", "lookups") +els.append(text("molu_note", C2, Y["terms"] + H + 14, "molu also enriches findingmodel\nmetadata by ontology search (see text)", size=13, color=BODY)) + +# ---------------------------------------------------------------- legend / footnote +Y_END = Y["terms"] + H + 60 +els.append(text("legend", 0, Y_END, "Orange: external terminology. Light blue: content repository.\nMid blue: library. Dark blue: application. Dashed: lineage or superseded.", size=13, color=BODY)) -els.append(text("legend", 60, 520, "Orange: external terminology. Light blue: content repository. Mid blue: library. Dark blue: application. Dashed: lineage or superseded.", size=12, color=BODY)) save("knowledge/repositories/repository-map.excalidraw") diff --git a/tools/diagrams/excalib.py b/tools/diagrams/excalib.py index 073beab..68a29d9 100644 --- a/tools/diagrams/excalib.py +++ b/tools/diagrams/excalib.py @@ -71,7 +71,8 @@ def edge_point(b: dict, side: str, frac: float = 0.5) -> tuple[float, float]: def arrow(id_: str, src: str, s_side: str, dst: str, d_side: str, label: str | None = None, s_frac=0.5, d_frac=0.5, - color=LINE, dashed=False, label_dx=0.0, label_dy=-22.0, sw=2, both=False, elbow: str | None = None) -> None: + color=LINE, dashed=False, label_dx=0.0, label_dy=-22.0, sw=2, both=False, elbow: str | None = None, + label_size=14) -> None: a, b = find(src), find(dst) (x1, y1), (x2, y2) = edge_point(a, s_side, s_frac), edge_point(b, d_side, d_frac) ar = base("arrow", id_, x1, y1, x2 - x1, y2 - y1, color, "transparent", dashed=dashed, sw=sw) @@ -89,8 +90,8 @@ def arrow(id_: str, src: str, s_side: str, dst: str, d_side: str, label: str | N els.append(ar) if label: mx, my = (x1 + x2) / 2 + label_dx, (y1 + y2) / 2 + label_dy - lw = len(label) * 12 * 0.58 - els.append(text(id_ + "_l", mx - lw / 2, my, label, size=12, color=BODY, align="center", w=lw)) + lw = max(len(ln) for ln in label.split("\n")) * label_size * 0.58 + els.append(text(id_ + "_l", mx - lw / 2, my, label, size=label_size, color=BODY, align="center", w=lw)) def hline(id_: str, x: float, y: float, w: float, dashed=True) -> None: diff --git a/tools/verify.py b/tools/verify.py new file mode 100644 index 0000000..54406cf --- /dev/null +++ b/tools/verify.py @@ -0,0 +1,119 @@ +#!/usr/bin/env python3 +# /// script +# requires-python = ">=3.11" +# dependencies = ["pyyaml"] +# /// +"""Mark bundle documents as verified by a human, or report review status. + + uv run tools/verify.py knowledge/glossary/oifm.md [more paths...] mark verified + uv run tools/verify.py --by human:someone knowledge/... different reviewer + uv run tools/verify.py --status counts per directory + uv run tools/verify.py --list knowledge/glossary draft documents under a directory + +Marking adds a `verified` entry with the current UTC time, sets `status: stable`, +and leaves everything else in the frontmatter untouched (text edit, not a YAML +round-trip, so key order and quoting survive). +""" +from __future__ import annotations + +import argparse +import datetime as dt +import glob +import os +import re +import sys + +import yaml + +REPO = os.path.abspath(os.path.join(os.path.dirname(__file__), "..")) +FM = re.compile(r"^---\n(.*?)\n---\n", re.S) + + +def load(path: str) -> tuple[str, dict, str]: + text = open(path, encoding="utf-8").read() + m = FM.match(text) + if not m: + raise SystemExit(f"{path}: no frontmatter") + return text, yaml.safe_load(m.group(1)) or {}, m.group(1) + + +def mark(path: str, by: str) -> None: + text, data, fm = load(path) + now = dt.datetime.now(dt.timezone.utc).strftime("%Y-%m-%dT%H:%M:%SZ") + entry = f" - {{ by: {by}, at: {now} }}" + if "verified" in data: + # append to an existing list (normalize a single mapping to a list) + if isinstance(data["verified"], dict): + fm = re.sub(r"^verified:.*$", f"verified:\n - {{ by: {data['verified']['by']}, at: {data['verified']['at']} }}\n{entry}", fm, count=1, flags=re.M) + else: + fm = re.sub(r"^(verified:\n(?: - .*\n?)*)", lambda m: m.group(1).rstrip("\n") + "\n" + entry + "\n", fm, count=1, flags=re.M) + else: + # insert after generated, else at the end + if re.search(r"^generated:.*$", fm, flags=re.M): + fm = re.sub(r"^(generated:.*)$", r"\1\nverified:\n" + entry, fm, count=1, flags=re.M) + else: + fm = fm.rstrip("\n") + "\nverified:\n" + entry + if re.search(r"^status:.*$", fm, flags=re.M): + fm = re.sub(r"^status:.*$", "status: stable", fm, count=1, flags=re.M) + else: + fm += "\nstatus: stable" + head = FM.match(text) + assert head is not None + new = "---\n" + fm + "\n---\n" + text[head.end():] + open(path, "w", encoding="utf-8").write(new) + print(f"verified {os.path.relpath(path, REPO)} by {by} at {now}") + + +def concepts(root: str) -> list[str]: + out = [] + for p in sorted(glob.glob(os.path.join(root, "**", "*.md"), recursive=True)): + if os.path.basename(p) in ("index.md", "log.md"): + continue + out.append(p) + return out + + +def status_report(bundle: str) -> None: + rows: dict[str, list[int]] = {} + for p in concepts(bundle): + _, data, _ = load(p) + d = os.path.relpath(os.path.dirname(p), bundle) + d = d.split(os.sep)[0] if d != "." else "." + row = rows.setdefault(d, [0, 0]) + row[1] += 1 + if data.get("status", "stable") == "stable" and data.get("verified"): + row[0] += 1 + total_v = sum(r[0] for r in rows.values()); total = sum(r[1] for r in rows.values()) + print(f"{'directory':28} verified / total") + for d, (v, n) in sorted(rows.items()): + print(f"{d:28} {v:3} / {n}") + print(f"{'all':28} {total_v:3} / {total}") + + +def list_drafts(root: str) -> None: + for p in concepts(root): + _, data, _ = load(p) + if not data.get("verified"): + print(os.path.relpath(p, REPO)) + + +def main() -> int: + ap = argparse.ArgumentParser() + ap.add_argument("paths", nargs="*") + ap.add_argument("--by", default="human:talkasab") + ap.add_argument("--status", action="store_true") + ap.add_argument("--list", metavar="DIR") + a = ap.parse_args() + if a.status: + status_report(os.path.join(REPO, "knowledge")); return 0 + if a.list: + list_drafts(os.path.join(REPO, a.list)); return 0 + if not a.paths: + ap.print_help(); return 2 + for p in a.paths: + mark(os.path.join(REPO, p) if not os.path.isabs(p) else p, a.by) + return 0 + + +if __name__ == "__main__": + sys.exit(main()) From 975523e91a9025d7bf509e980605700926812068 Mon Sep 17 00:00:00 2001 From: "Alkasab Agent (agent-dev)" Date: Tue, 22 Sep 2026 12:50:04 +0000 Subject: [PATCH 06/19] Record the restructure decisions of 2026-09-22 - Five named pillars: Foundation Context, Data Structures, SDKs, Use Cases, Sample Applications - CDEs and finding models are one content in two collections, both moving to the CDE schema rewrite - Agreed outline with the current pages that collapse into each part, and a drafts staging area - Source eligibility rule and terminology recorded in the build plan Co-Authored-By: Claude Fable 5.1 --- DEV_LOG.md | 7 ++ docs/plans/restructure-joint-notes.md | 72 ++++++++++++------- knowledge/drafts/index.md | 12 ++++ knowledge/index.md | 1 + .../2026-09-20-knowledgebase-build-plan.md | 14 ++++ 5 files changed, 79 insertions(+), 27 deletions(-) create mode 100644 knowledge/drafts/index.md diff --git a/DEV_LOG.md b/DEV_LOG.md index 90d5117..837cf16 100644 --- a/DEV_LOG.md +++ b/DEV_LOG.md @@ -34,3 +34,10 @@ Engineering narrative for the oidm-knowledge repository: decisions, blockers, an - Hosting decided by the project lead: a Cloudflare static site, extensible with Workers. Set up as an assets-only Worker (`site/wrangler.jsonc`, html_handling auto-trailing-slash, which matches Quartz's clean-URL links natively). Quartz stays the generator on maturity grounds after a survey of wiki and knowledge-graph tools found nothing else both mature and maintained; typed-edge graph is a plugin to write later. Retired the object-storage pipeline (link flattener, bucket publish script, GitHub Pages workflow) in favor of `task deploy` and `.github/workflows/deploy.yml` (cloudflare/wrangler-action; needs CLOUDFLARE_API_TOKEN and CLOUDFLARE_ACCOUNT_ID secrets). First deploy waits on the project lead's `wrangler login`. - First Cloudflare deploy: https://oidm-knowledge-dev.talkasab.workers.dev, verified in a browser (clean URLs, sidebar, search, SVG diagrams, no console errors). Targets: dev (default), staging, prod as separate Workers via wrangler environments; `SITE_BASE_URL` sets Quartz's baseUrl per target at build time. The push-to-main workflow deploys to staging; production is a deliberate `task deploy:prod`. - Full editorial review completed after the project lead rejected the initial 18-page cutoff. Three agents and the main editor read the remaining 97 concepts, all 17 indexes, and the historical bundle log; 94 further concepts changed, with three concise glossary references retained. Across both passes, concept bodies total 108,656 → 94,944 words (12.6% reduction at the review snapshot). Cross-review restored technical constraints and checked the element-binding quotation against its pinned source. Coverage and unchanged-page reasons are in `docs/plans/lean-content-coverage.tsv`; results and count methodology are in `docs/plans/lean-content-full-review.md`. Both validators pass with zero errors or warnings, and whitespace checks pass. Concurrent hosting/tooling work was preserved; no commits or publication by this session. + +## 2026-09-22 + +- Restructure planning with the Codex session via `docs/plans/`: Codex wrote `restructure-around-project-ideas.md`; this session wrote `restructure-joint-notes.md` and two idea inventories (`idea-inventory-semantic.md`, 46 ideas; `idea-inventory-structures-and-uses.md`, 41 ideas) from the repositories' design documents, plans, prompts, skills, and ADRs. The project lead withdrew an inventory-derived 41-page list: the structure is the human one (the original brief and the January deck), now four pillars (semantic foundation; data structures; applications and uses; SDKs and sample applications). Ideas mined from repository documents and prompts are the team's own ideas and enter as first-class content; only agent inference is limited to linking prose. `idea-placement.md` places all 87 inventoried ideas under the pillar pages by source kind. +- Read the SIIM 2026 "Reports of the Future" deck (June 2026, public) directly, including its six figures, at the project lead's request. Its Patient Context / Foundation Context framing, three axes, "connective tissue" of relationships and external citations, "resolve, don't reinvent" SDK mechanism, and the ask now sit above the four pillars in the joint notes; a relationships-and-citations page was added to pillar 1. Reading recorded in `sources/bucket/REPORT.md` section 8; source-map rows added to the build plan. No drafting has started; page list awaits Codex's reply and the project lead's review. +- Planning conversation with the Codex session, framed by Codex at the project lead's request, produced a shared understanding recorded in the joint notes: the source eligibility rule, "related representations" wording, the organizing method, and real deletion of redundant generated material. The project lead ruled during it: a CDE and a finding model are the same content in two collections with different review expectations, both moving to the CDE schema rewrite's classes; the OIFM reorganization around that graph is urgent; and the structure is five named pillars (Foundation Context, Data Structures, SDKs, Use Cases, Sample Applications), used by name. The "Observation Type" umbrella the sessions had floated is withdrawn. The joint notes now carry the decisions, the agreed outline with the current pages that collapse into each part, and next steps; the placement table is being re-sectioned under the five names; the build plan gained a 2026-09-22 decisions table. The ACR-RSNA-CDEs session was told the rulings. Still no drafting. + diff --git a/docs/plans/restructure-joint-notes.md b/docs/plans/restructure-joint-notes.md index 462cc2a..fd510cd 100644 --- a/docs/plans/restructure-joint-notes.md +++ b/docs/plans/restructure-joint-notes.md @@ -26,44 +26,62 @@ Project lead, 2026-09-21: "there are IMPORTANT DOCUMENTS and PROMPTS in the repo - Site and diagrams: Claude (in progress: diagrams reoriented for the column; click-to-zoom plugin; Cloudflare targets). -## Proposed page list, corrected (Claude, 2026-09-22) +## Decisions of 2026-09-22 (owner, relayed in the Claude and Codex sessions) -The project lead's corrections, 2026-09-22: (a) the STRUCTURE is the human one: the project lead's original list and the January 2026 deck's pillars; the earlier 41-page list derived from the inventories is withdrawn; (b) the ideas mined from the repositories' documentation, plans, prompts, skills, and design notes are the TEAM'S OWN ideas and enter the graph as first-class content under that structure; that is the purpose of mining them; (c) only agent inference (an inventory agent's synthesis, invented rationale, or question no team source raised) is limited to connective tissue or left out. The placement table in idea-placement.md applies these rules. +These supersede the four-pillar page list that stood here earlier today. The owner's words are quoted; everything else is the two sessions' shared understanding, confirmed in conversation. -Spine: four pillars, per the project lead on 2026-09-22 (the deck's three, with applications split into the uses and the code, the last two closely related): +1. **Five named pillars. Use the names, never numbers.** "1. Foundation Context / Semantic layer: includes both the schema/meta-definitions as well as the efforts to build out content. 2. Data Structures, most ESPECIALLY in the Observation layer, and how there are two graphs and they work together. 3. SDKs, the tools that wrap the data structures and enable developers working in the application layer to manipulate instances in real-world applications (and some around helping with definition of the foundation context, obviously). 4. Theoretical Use Cases: Imaging all the different kinds of applications/tools/plugins/output products we could create using an ecosystem built around this foundation. 5. ACTUAL sample applications we've created to try to illustrate some of these ideas." The fourth was then shortened to **Use Cases**. So: **Foundation Context**, **Data Structures**, **SDKs**, **Use Cases**, **Sample Applications**. +2. **A CDE and a finding model are the same content.** "A 'CDE' and a 'Finding Model' are the same thing, but they're in different repos. Open Imaging Finding Models are in the OIDM-maintained repo, and are intended to be very INCLUSIVE, can almost be drafts. Common Data Elements live in the ACR/RSNA repository, and are intended to be WELL-REVIEWED. They're more like something published. They BOTH should soon be using the schema and classes being defined in the CDE schema re-write, with FindingClass, DataElement, Measurement, etc." Consequence: explain the common model once, then the inclusive OIDM collection and the well-reviewed ACR/RSNA collection and their relationship. Collection expectations are not per-item facts. Migration is intended, not complete. The "Observation Type" umbrella name the sessions had floated is withdrawn as unnecessary and was never approved. +3. **The OIFM reorganization around the graph is urgent.** "OIFMs VERY soon need to get re-organized around the graph-based approach we're developing in the next-gen-schema effort in CDEs. They're currently document-oriented and we need to fix that SOON." A change of organization, not added fields. Stated prominently under Foundation Context; current implementation kept distinct from direction; no storage, schema, or migration design invented beyond the source work. +4. **Source eligibility rule.** Repository documents, prompts, plans, skills, ADRs, and code are team artifacts eligible for substantive content. They are not demoted for being agent-assisted, and no statement needs separate human approval to be cited. Committing a document does not make a draft proposal or one implementation project-wide consensus. Each claim carries its source's actual status, date, and any explicit provenance label the source supplies (the CDE decision record's OWNER and CLAUDE DEFAULT, for example). Differences between sources and the owner's later corrections are preserved, not reconciled. No speculative authorship audit. +5. **Terminology.** Foundation Context (shared definitions, relationships, references) and Patient Context (this patient's imaging results plus relevant clinical context), from the SIIM 2026 deck. The CDE report graph, the Imaging Problem List representations, and the broader Patient Context are *related representations* of the Observation idea, never "the same thing serialized differently". Foundation Context and Data Structures correspond to the two graphs at the explanatory level; the report graph is the imaging-assertion part of Patient Context, not a clinical-context schema. The deck's "connective tissue" means relationships and citations between foundation concepts and is used only in that sense. Retained artifact names are used where a source's current files are cited: OIFM finding model, CDE set and element, the next-generation FindingClass, Diagnosis, Grouping, DataElement, Measurement. +6. **Organizing method** (agreed with Codex). The introduction explains the two-graph connection once within the five pillars. Idea anchors carry the recovered substance. Patient-side ideas say which shared definitions they reference; foundation-side ideas say how observations use them; related anchors link both ways. Existing worked examples are used for what each actually shows (the CDE pyelonephritis report and the deck's calculus figure show both graphs; the IPL example2 study is patient-side only; the deck's aneurysm and kidney tables are foundation-side only). Sources attach to ideas; repositories do not become chapters. Redundant generated exposition is deleted after its unique ideas are recovered; unique team-authored material is kept and counted in the budget. A glossary or question register is not a mandate to duplicate content. -**Open Imaging Data Model** (the project): purpose and vision as the deck and the site state them; the four pillars; "why not just let the LLM read it"; structure first, then FHIR and other transports (the 2026-09-19 framing); how agreement is meant to happen (the working group proposal). One or two pages. +## Agreed outline (Claude and Codex, 2026-09-22; awaiting the owner's go) -**1. Semantic foundation** -- *Open Imaging Finding Models*: what a finding model is and why (the workbench for CDEs; rapid, LLM-assisted, exploratory definitions that graduate); the definition format and what the project lead wants it to become (increased metadata; relationship and graph work coming from the CDE vocabulary); the content effort (the MGB exam-oriented sub-taxonomies as the immediate direction; the Gamuts-derived corpus being superseded). Connective tissue inside: the authoring rules and prompts, the metadata fields, review gates, the identifier scheme. -- *ACR/RSNA Common Data Elements*: the dovetail with finding models in both directions; RadElement; the next-generation vocabulary work as the allied project's in-progress design. Connective tissue: node types, relationships, staging path. -- *Anatomic Locations*: why a curated index; the containment hierarchy, part-of, laterality; the blending into RadLex. Connective tissue: the two implementations, the JDIM paper's measurements, the coding rules. -- *Exam Types*: the wrapper around the RadLex/LOINC Playbook graph; PREFERRED high-level entries; tight coupling to anatomic locations with always, usually, and possibly-included edges. Stated as goals with what exists today. +Each part lists the ideas it houses (IDs from `idea-placement.md`) and the current pages that collapse into it. Child sections are allowed where the ideas need them; no page exists because a source file exists. -**2. Data structures** (the deck's ladder) -- *Observation*: what plus where plus attributes; presence, change from prior, measurements. Connective tissue: the extraction and coding rules, normality as absence, finding versus diagnosis. -- *Exam Finding List*: all findings of one exam; sources of findings; the IHE IDR connection as stated. Connective tissue: the JSON in use, the verbatim rule, deduplication. -- *Imaging Problem List*: organized by finding, not chronology; the core query; dynamic tracking; the format for a patient's imaging history and its relationships; managing and collating across the history. Connective tissue: the JDIM manuscript's elements, the four status vocabularies, succession and linking, the example2 data. -- *Imaging Persona*: the big picture as the deck states it; concept only. -- *Data structures versus transport*: the project lead's framing; FHIR and DICOM as expressions guided by the structures; what has been mapped and what has not. +**Introduction.** Purpose in both directions (forward to clinicians; forward to the next radiologist); Patient Context and Foundation Context; the two connected graphs, previewed; the five pillars; structure first, transport after (2026-09-19); nothing formally defined yet; how agreement is meant to happen and the deck's ask (contribute definitions, review AI-generated content and connections, build against SDKs). Ideas: Use-C1 to C4. Collapses: the four overview pages, the January status-update extract, timeline, site-articles and lineage histories (cited as sources), the 2026 roadmap, the hierarchy diagram. -**3. Applications and uses** (what the project wants done with the data) -- *Reporting assistance*: the plugin-container idea and the reporting-assistance framework; vendor-driven innovation; the IPL across the imaging life cycle (planning, intra-exam, interpretation, post-interpretation); ACR priorities (recommendation tracking, AI validation, quality metrics, RADS support). -- *Demonstrations and uses*: the use cases the team has written down (the use-case catalog, the webinar's application families, outcome tracking, the interoperability demonstrations), attributed; the applications the project lead wants designed on the Imaging Problem List. +**Foundation Context.** +- *Finding models and CDEs.* The common graph once, as the next-gen-2026 branch design at its dated commit: FindingClass, Diagnosis, Grouping, DataElement, Measurement, bindings, anatomic scope, the relationship family, what the graph should carry for a finding (Sem-F1, F4, F5, F6, A9, A10; Use-A15). The inclusive OIDM collection and the well-reviewed ACR/RSNA collection and their relationship (Sem-F7, F8; the current OIFM document format and the published RadElement format as the implementations both use today). The urgent document-to-graph reorganization. Child sections: what the inclusive collection contains and where it is going (Sem-B2, B7, B8, B9: the MGB exam-oriented sub-taxonomies, the Gamuts-derived corpus being superseded); authoring, triage, review tiers, prompts as fragments (Sem-B3 to B6, C4, C5); identifiers and metadata rules (Sem-A1 to A8, B1, C1 to C3). Collapses: nine finding-model pages, four CDE pages, the content-direction and format-evolution roadmap pages, four reference extracts, the CDE template-rendering history. +- *Anatomic locations.* Identity, containment versus part-of, laterality triads, synthetic terms, curation rules, the overlay on RadLex and the contribution loop, the FMA enrichment direction from the deck, the two dated implementations, the JDIM measurements as under review (Sem-D1 to D9, F3). Collapses: seven anatomic-location pages, the RadLex roadmap page, the JSON-schema reference. Tooling moves to SDKs. +- *Exam types.* Preferred families over the Playbook, exposed Playbook properties, anatomy coverage edges in both of the owner's dated phrasings, goals with building blocks (Sem-E1, E2). Collapses: three exam-type pages, the exam-types roadmap page. +- *Standards the foundation layers over and cites.* Short: RadLex, SNOMED, FMA, LOINC and the Playbook; external citations named by the deck; terminology roles gated by search recall (Sem-F2). Collapses: three terminology pages, minus the lookup tool. -**4. SDKs and sample applications** (the code the project provides; closely related to pillar 3) -- *SDKs*: the finding model SDK (the `findingmodel` packages: format, index, search, enrichment, MCP server); the anatomic locations SDK (the `anatomic-locations` package and the earlier BodyPartIndex libraries); the Imaging Problem List SDK (proposed; issue #1's system of data models and the dev-branch platform as its precursor); other proposed SDKs (the Open Imaging Reporting SDK; terminology lookup via `med-ontology-lookup`). Each: what it gives a developer, what it implements of the ideas above, status. -- *Sample applications*: the findingmodel CLI; the anatomic locations CLI; Finding Model Forge; IPL viewer 1; IPL viewer 2 with anatomy; the report extraction platform; the finding model catalog site; and future ones. Each: what it demonstrates, which SDK it sits on, where it runs, status. +**Data Structures.** The two graphs and how they work together are the center of this pillar. +- *Observation.* Atomic unit, codes not knowledge; presence, change, confidence as a separate axis; pertinent negatives and normality as absence; source text; anatomic-location assignment rules; within-report relations (the owner's S21, S22, S24; SUPPORTS as a Claude default); pointers into the shared graph; the CDE report graph and the IPL representation as dated related representations (Use-A1, A10, A11, A12, A23, A24, A25). Collapses: observation, technical imaging findings, assignment rules. +- *Exam Finding List.* Faithful translation, several observations per finding, unmodeled sections, IHE IDR alignment (Use-A2, A3, A9, A17, A26 as the structure rule). Collapses: exam-finding-list, IHE alignment, the EFL example. +- *Imaging Problem List.* Entry identity, derived status and the three disagreeing vocabularies, succession, provenance and corrections, entity resolution as the open problem, permanent findings and ranking, recommendations and live-versus-closed, the re-documentation evidence (Use-A4 to A8, A13, A14, A18, A19, A22). Collapses: imaging-problem-list, sample data, the IPL example. +- *Imaging Persona.* Short, attributed: the deck's figure and the site's object model (Use-A16, the structure half). Collapses: imaging-persona. +- *Structures versus transport.* The 2026-09-19 framing; FHIR mapping documented and unimplemented; IHE IDR; the interoperability demonstration linked (Use-A21). Collapses: fhir-mapping. -Supporting layers off the reading path: glossary (cross-topic terms), the three reference extracts, the open-questions register of the team's own unresolved alternatives. +**SDKs.** Resolution as the shared job ("resolve, don't reinvent"); retrieval modes over the corpus; the proposed formal data-model system for Observation, Exam Finding List, and Imaging Problem List; the proposed reporting SDK; the anatomic-locations package and the earlier BodyPartIndex libraries; the lookup tool; enrichment and stub-creation capabilities as foundation-authoring support; the dual-database release and the docs-versus-schema practice (Sem-C6, C7, C8; Use-A20). Collapses: the reporting-SDK page, the IPL data-model roadmap page, anatomic-location tooling, the lookup page. -About 18 pages. The inventories' 70-odd ideas are placed under these pages in idea-placement.md before drafting: team-artifact ideas as content, agent inferences as connective tissue at most; anything with no team source stays out of the reading path. +**Use Cases.** The team's documented possible applications, tools, plugins, and outputs, grouped by purpose: reporting assistance (the context object model and plugin container, Use-B8 and the use half of A16); the six Imaging Problem List application families (Use-B5); outcome tracking, follow-up completion, and radiology-pathology correlation (Use-B7); breast imaging and the MQSA audit (Use-B6); the use-case catalog and the six value categories (Use-B11); ACR priorities; the deck's determinative-tools and generative-agents families and its payoff examples; the purpose of the interoperability demonstration (Use-B9's aim). Nothing invented. Collapses: the use-cases history page, the application half of the reporting-SDK page. -## Open points for Codex +**Sample Applications.** What was built, each anchored to the idea it demonstrates: Finding Model Forge; the finding models catalog site; the findingmodel and anatomic-locations CLIs; the two Imaging Problem List viewers (the second with anatomy); the report extraction, coding, persistence and review platform with its coding-decoupled design, honesty-first evaluation, failure taxonomy, and PHI-local operation (Use-B1 to B4, B10); the early extraction pipeline; the multi-vendor interoperability demonstration (Use-B9, built and shown). Collapses: seven application pages. -- Do you agree the glossary, a few references, and a reduced open-questions register survive as supporting layers? -- Your plan removes "documentation defects from the public narrative"; Claude has 22 verified upstream issue drafts waiting for the project lead. Agree those are the home for defects? -- Page naming: prefer nouns for ideas (`finding-model`, `observation`, `imaging-problem-list`, `anatomic-location-index`, `exam-type`) or the plan's six areas as directories with idea pages inside? +**Off the reading path.** Repository map, guides, plans, migration ledger kept as maintenance records. Glossary cut from 49 terms to cross-topic ones. Open questions reduced to the team's own unresolved alternatives; agent-found defects go upstream as issues. Remaining history folded into sources. + +Seams settled: an authoring application is a Sample Application; reusable authoring capability is an SDK; content and review principles are Foundation Context. Placement flags resolved: Sem-F1, F2, F6, Use-A12, A15 as above; Use-A17, A18, B7 stay. + +## Next steps + +1. Owner says go on the outline above (one answer; page granularity, figure selection, and the size budget follow the idea review and need no separate approval). +2. Placement table re-sectioned under the five names (Claude, in progress). +3. Drafting split: Claude drafts Foundation Context and SDKs; Codex drafts Data Structures, Use Cases, and Sample Applications; whoever finishes first drafts the Introduction. Each page: draft status, `generated.by` naming the session, sources on every claim, dated related representations side by side. Neither session edits a page the other is drafting. +4. Cross-review for source fidelity, then replace the old pages, rebuild, deploy to dev, and hand the owner the verification list. + +## Claude drafting (2026-09-22) + +Staging: `knowledge/drafts/` (index there; final layout after cross-review is one directory per pillar with the anchor as `index.md`). Provenance `generated.by: claude-opus-5/2026-09-22-restructure/`, reviewed by the main session before handoff. Codex's drafts use `codex/2026-09-22-restructure`. + +- [ ] `foundation-context.md` anchor and `finding-models-and-cdes.md` (agent draft-foundation) +- [ ] `anatomic-locations.md`, `exam-types.md`, `standards.md` (agent draft-axes) +- [ ] `sdks.md` (agent draft-sdks) +- [ ] main-session source review of each, then handoff to Codex for cross-review +- [ ] `introduction.md`, whichever session gets there first ## Codex section diff --git a/knowledge/drafts/index.md b/knowledge/drafts/index.md new file mode 100644 index 0000000..a3df590 --- /dev/null +++ b/knowledge/drafts/index.md @@ -0,0 +1,12 @@ +# Drafts: the restructured pages + +Staging area for the restructure agreed on 2026-09-22 (see `docs/plans/restructure-joint-notes.md`). Each pillar's anchor page is drafted here beside the current pages, which stay in place until cross-review. After review, each anchor becomes the `index.md` of its own pillar directory with child sections beside it, and this directory is removed. + +Planned files, each session adding its link line when the file exists: + +- `introduction.md` (whichever session gets there first) +- `foundation-context.md` (Claude), with child sections `finding-models-and-cdes.md`, `anatomic-locations.md`, `exam-types.md`, `standards.md` +- `sdks.md` (Claude) +- `data-structures.md` (Codex) +- `use-cases.md` (Codex) +- `sample-applications.md` (Codex) diff --git a/knowledge/index.md b/knowledge/index.md index b180e86..4f84c4b 100644 --- a/knowledge/index.md +++ b/knowledge/index.md @@ -22,3 +22,4 @@ Start with [What is OIDM](./overview/what-is-oidm.md) and [Architecture](./overv * [references](./references/) - Verbatim and near-verbatim source material * [guides](./guides/) - Authoring conventions and the migration ledger * [plans](./plans/) - Plans for building and maintaining this knowledgebase +* [drafts](./drafts/) - Staging area for the restructured pillar pages (in progress, 2026-09-22) diff --git a/knowledge/plans/2026-09-20-knowledgebase-build-plan.md b/knowledge/plans/2026-09-20-knowledgebase-build-plan.md index b8c8c8c..5e666f7 100644 --- a/knowledge/plans/2026-09-20-knowledgebase-build-plan.md +++ b/knowledge/plans/2026-09-20-knowledgebase-build-plan.md @@ -74,6 +74,8 @@ Inventory reports for every source live in the session scratchpad and are summar | openimagingdata.org (Ghost site) | 15 posts (2023-06 to 2025-03) and an About page | live | "Findings, CDEs, and Observations", "Data Model: Structure and Function", "Benchmarking a Vision", "OIDM-Based Next-gen Reporting Assistance Framework", the SIIM 2024 posts | | CDETemplateDemo, SARTemplatesToCDEs, template_extraction, ReportFindingRefiner, get_ontology_findings, ontology_tools, common_data_elements | Lineage | `main` | `SARTemplatesToCDEs/RectalCAStaging/Changes_vs_RDES11.md`, `ReportFindingRefiner/README.md`, `common_data_elements/README.md` and schema versions; the rest as one-paragraph history entries | | Gamma deck, January 2026 | Vision and roadmap | live | Whole deck as a Presentation Extract | +| SIIM 2026 deck, June 2026 ("Reports of the Future") | The framing: Patient Context and Foundation Context; the three axes (Observation Type, Anatomic Location, Exam Type) as OIDM layers over CDE/OIFM, RadLex, and the Playbook; relationships and external citations; SDKs that resolve codes; the ask | `sources/bucket/siim2026/` (public talk) | Whole deck; the slide 7 table and the foundation-context graph as figures, at the project lead's discretion | +| oidm-knowledge-sources bucket folder | Manuscripts (JACR IPL; two JDIM under review), the AI-evolution essay, the reporting-schema deck, the July 2026 SIIM webinar deck | `sources/bucket/REPORT.md` | Paraphrase and cite per the manuscripts rule; reviewer correspondence never used | # The work edge @@ -305,6 +307,18 @@ Answers can come at approval time or during Phase 1. | Page feedback (later) | Wanted: off-the-shelf page comments and suggested changes, possibly dictation; candidates Hypothesis or Giscus. Not this iteration. | | Site generator and host | Decided 2026-09-21 after a survey of wiki and knowledge-graph tools (sources/site-tools-comparison.md): Quartz stays, on Cloudflare Workers static assets, which serve its clean URLs natively. Three targets: oidm-knowledge-dev (default, `task deploy`), oidm-knowledge-staging (`task deploy:staging`, also the push-to-main workflow), oidm-knowledge (`task deploy:prod`). Typed-edge graph from OKF frontmatter is a Quartz plugin to write later. The object-storage pipeline was removed. | + +# Decisions added 2026-09-22 + +| Topic | Decision | +|---|---| +| Structure | Five named pillars, always by name: Foundation Context (schema and meta-definitions plus the content build-out), Data Structures (especially the Observation layer and how the patient graph and the foundation graph work together), SDKs, Use Cases (the team's documented possible applications, tools, plugins, and outputs), Sample Applications (what was actually built). The earlier three-layer and four-pillar organizations are superseded. Ideas mined from repository documents, plans, prompts, skills, and ADRs are the team's own ideas and enter as content. | +| CDEs and finding models | The same content in two collections: the inclusive OIDM-maintained finding models and the well-reviewed ACR/RSNA CDEs. Both are intended to use the schema and classes of the CDE schema rewrite (FindingClass, DataElement, Measurement, and the rest). Explained once as a common model, then the two collections and their relationship. Collection expectations are not per-item facts; migration is intended, not complete. | +| OIFM reorganization | Reorganizing the finding models around the graph-based approach of the CDE next-generation schema effort is an immediate priority, stated as direction under Foundation Context with current implementation kept distinct. No storage, schema, or migration design beyond the source work. | +| Source eligibility | Repository documents, prompts, plans, skills, ADRs, and code are team artifacts eligible for substantive content, not demoted for being agent-assisted. Each claim carries its source's status, date, and any provenance label the source supplies. Differences and later corrections are preserved, not reconciled. | +| Terminology | Foundation Context and Patient Context from the SIIM 2026 deck. The CDE report graph and the Imaging Problem List representations are related representations of the Observation idea. Retained artifact names are used where a source's files are cited. | +| Restructure record | The operating record is `docs/plans/restructure-joint-notes.md` (decisions, agreed outline, next steps) with `docs/plans/idea-placement.md` mapping every inventoried idea to its section. | + # Risks - **Drift while writing.** Source repos are active. Every `sources` entry pins a commit so a reader can tell what version was read. From 917de478fa90f999c74829d0188e705b082afc7d Mon Sep 17 00:00:00 2001 From: "Alkasab Agent (agent-dev)" Date: Tue, 22 Sep 2026 12:50:41 +0000 Subject: [PATCH 07/19] Place the 87 inventoried ideas under the five named pillars - One table per pillar section, Finding models and CDEs merged with a cluster column - Every idea has exactly one home; all sources are team artifacts - Remaining boundary flags resolved or marked as staying Co-Authored-By: Claude Fable 5.1 --- docs/plans/idea-placement.md | 309 +++++++++++++++++++++++++++++++++++ 1 file changed, 309 insertions(+) create mode 100644 docs/plans/idea-placement.md diff --git a/docs/plans/idea-placement.md b/docs/plans/idea-placement.md new file mode 100644 index 0000000..3fcc02e --- /dev/null +++ b/docs/plans/idea-placement.md @@ -0,0 +1,309 @@ +# Idea placement table + +Step before drafting, per `restructure-joint-notes.md`. Maps every idea in the two inventories — +`idea-inventory-semantic.md` (prefixed `Sem-`) and `idea-inventory-structures-and-uses.md` +(prefixed `Use-`) — to the section that will house it. The two inventories both use letters A-F +for their own sections, so IDs collide between them (`Sem-A1` and `Use-A1` are different ideas); +the `Sem-`/`Use-` prefix disambiguates. + +**Count note.** The joint notes and the semantic inventory's own scope line both call this "the +inventories' 70-odd ideas". The semantic inventory (`idea-inventory-semantic.md`) in fact carries +46 numbered ideas (A1-A10, B1-B9, C1-C8, D1-D9, E1-E2, F1-F8) and the structures-and-uses +inventory states its own scope as 41 (A1-A26, B1-B11, C1-C4). That is 87 ideas total, not 72. +This table places all 87. + +**Revision history.** +1. First version used a human-stated / linking-prose role split that demoted anything sourced + from a prompt, skill, design note, ADR, or repo doc to secondary status. +2. The project lead overrode that: ideas mined from the repositories' documentation, plans, + prompts, skills, ADRs, and design notes are the team's own ideas and belong in the graph as + first-class content, not as linking prose. The role column became **source kind**: *team + artifact* (deck, brief, manuscript, webinar, site post, board, repo doc, plan, prompt, skill, + ADR, README, commit message — anything the team wrote or committed) versus *agent inference* + (an inventory agent's own synthesis, invented rationale, or a question with no team source). + Checked against that standard, all 87 ideas carry a cited team-artifact source; none is bare + agent inference, so the agent-inference column is 0 throughout and nothing was left off a + section for lacking a team source. +3. A SIIM 2026 deck ("Structured Results and Context for Next-Generation Imaging Resulting + Tools") arrived and briefly got its own "Relationships and external citations" page under a + four-pillar structure. +4. **This version (2026-09-22): re-sectioned under the five named pillars from the "Agreed + outline" in `restructure-joint-notes.md`** — Introduction, Foundation Context, Data + Structures, SDKs, Use Cases, Sample Applications, Off the reading path — per the owner's + 2026-09-22 decision that pillars are named, never numbered, and that a CDE and a finding + model are the same content in two collections. The former "Relationships and external + citations" page is folded into Foundation Context's "Finding models and CDEs" table as the + common-graph cluster, since the relationship ideas are part of that same graph. Placement + flags resolved this pass: Sem-F1, F2, F6, Use-A12, Use-A15 (moved or confirmed, no longer + flagged). Use-A17, Use-A18, Use-B7 stay at their prior placement — one-line reasons in the + Summary. + +--- + +## Introduction + +| ID | Name | Source kind | Notes | +|---|---|---|---| +| Use-C1 | OIDM's stated purpose | team artifact | Site tagline, January 2026 deck title, project lead's 2026-09-19 formulation. | +| Use-C2 | The relationship among the parts: three layers, and the DOM analogy | team artifact | Deck's three strategic pillars; 2024 site post; the DOM/HTML analogy is stated independently on two boards. | +| Use-C3 | Structure first, standards after; and how agreement is supposed to happen | team artifact | Deck's call to action (working group, structure-first); Board 14's ACR Data Science Institute role. | +| Use-C4 | Nothing is formally defined yet | team artifact | Source is the project lead's 2026-09-21 decision of record in `knowledge/plans/2026-09-20-knowledgebase-build-plan.md` — a plan document, a team artifact. States the project's own coalescing-phase status. | + +4 ideas. + +--- + +## Foundation Context + +### Finding models and CDEs + +One table per the 2026-09-22 correction: a CDE and a finding model are the same content, in two +collections (the inclusive OIDM collection and the well-reviewed ACR/RSNA collection), sharing one +common graph. The **Cluster** column mirrors the outline's own grouping: the common graph +(including the relationship ideas formerly tabled separately as "Relationships and external +citations"); the two collections and their relationship; what the inclusive collection contains +and where it is going; authoring, triage, and review; identifiers and metadata rules. + +| ID | Name | Cluster | Source kind | Notes | +|---|---|---|---|---| +| Sem-F1 | Anatomic scope, not location | Common graph | team artifact | The next-generation vocabulary's statement of which anatomic locations are congruent with a finding class, and how strongly. Matches the SIIM deck slide 12's "Observation Type anatomy limits" cross-axis category almost verbatim. Prior "?" flag (versus Anatomic Locations) resolved: the common-graph cluster is the single home. | +| Sem-F4 | The finding model relationship registry | Common graph | team artifact | Draft schema in which a model stores only the relationship assertions authored on it, with a registry declaring each type inverse-backed, symmetric, or one-way; corrected by a later document that found it unimplemented. The general mechanism the deck's "within-axis relationships" list (parent/child, causes/caused_by, confused_with, occurs_with) would be instances of. | +| Sem-F5 | The relationship family and the derived differential | Common graph | team artifact | Seven relationship pairs plus a catch-all connecting finding classes and diagnoses, keeping manifestation and causation apart. The deck's worked figure (radiodense urinary calculus `OIFM_GMTS_020556` "may cause" hydronephrosis `OIFM_OIDM_874812`) is a causes/caused_by instance of this family. | +| Sem-F6 | Measurement, method, and interpretation are three things | Common graph | team artifact | Next-gen vocabulary design document. Prior "?" flag (versus staying at Open Imaging Finding Models, since the document itself notes the principle is already written in narrower form in the finding-model guidance) resolved: placed with the common graph alongside Sem-F4/F5, which it shares a document with. | +| Sem-A9 | Assessment schemes modeled apart from what they assess | Common graph | team artifact | `ASSESSED_BY`/`INTERPRETED_FROM` are cross-finding relationship types from the next-gen relationship-family document; matches the deck's "within-axis relationships" category (an edge between two Observation Type nodes). | +| Sem-A10 | Associated findings versus components | Common graph | team artifact | An associated-finding attribute references another finding model by name; a component is extracted into its own model. Matches `occurs_with` (independent co-occurring findings) and the part-of shape the deck's figure applies to anatomy (renal pelvis "part of" kidney), here applied to finding components. | +| Use-A15 | Foundation context: four per-finding dimensions that tell an agent what to expect | Common graph | team artifact | Webinar states this directly (body regions, entity type, expected time course, permanence). Prior "?" flag (versus staying at Imaging Problem List) resolved: this is graph content about what the finding-class definition carries, and overlaps substantially with Sem-C1's "eight fields" below, from the same webinar slides. | +| Sem-F7 | Finding models as the CDE workbench | Collections and their relationship | team artifact | January 2026 deck ("OIFM: the CDE workbench"); project lead's statement that CDE work "should dovetail with the OIFM work"; the "Current Understanding" document. | +| Sem-F8 | Measuring coverage by running real reports against the vocabulary | Collections and their relationship | team artifact | CDEStaging catalogues (`negative_statements.md`, `uncovered_findings.md`, `missing_attributes.md`) and the extraction-process note. | +| Sem-B2 | Corpus as a merge of uneven provenance streams | Content direction | team artifact | The identifier registry and the "Definition Cleanup Plan"; supplies the counts behind Sem-B7's stated direction. | +| Sem-B7 | Exam-oriented finding sub-taxonomies | Content direction | team artifact | The project lead's 2026-09-21 statement that this is "the immediate direction for all of the content," plus the taxonomy README. | +| Sem-B8 | Convert and merge, with a fixed direction | Content direction | team artifact | The chest CT content branch's project specification. | +| Sem-B9 | Content repository proposes changes upstream to the library | Content direction | team artifact | The upstream-proposals plan document. | +| Sem-B3 | Stub creation and iterative improvement | Authoring, triage, review | team artifact | The "OIFM Repo" board's pipeline flowchart and "Community Connect 2024-11-07" note; the `enrichment.md` prompt fragment. | +| Sem-B4 | Triage before create | Authoring, triage, review | team artifact | Prompt fragment (`search_and_triage.md`) and the `finding-author` skill. | +| Sem-B5 | Review in three tiers, with context isolation | Authoring, triage, review | team artifact | Prompt fragments and the `finding-review`/`finding-batch` skills. | +| Sem-B6 | Prompts as loadable fragments, sized against measured degradation | Authoring, triage, review | team artifact | The team's own prompt-length research write-up and the skill files' stated design rule. | +| Sem-C4 | Focused assignment agents, advisory audit, and null as an answer | Authoring, triage, review | team artifact | Architecture decision record (`0002-split-agent-assignment-architecture.md`) and agent prompts. | +| Sem-C5 | Human review is the only authority | Authoring, triage, review | team artifact | Policy document (`human-review-and-writeback.md`) and the plan-history document. | +| Sem-A1 | Finding model | Identifiers and metadata | team artifact | Prompt fragment (`core_concept.md`), the upstream overview document, the schema document, and the "OIFM Repo" Excalidraw board's plain-language explainer panel. | +| Sem-A2 | What counts as a finding | Identifiers and metadata | team artifact | Prompt fragments (`core_concept.md`), the overview document, and an Excalidraw board's earlier draft of the same rule. | +| Sem-A3 | Specificity, splitting, and the right level of abstraction | Identifiers and metadata | team artifact | Prompt fragment (`scope_and_specificity.md`) and the overview document. | +| Sem-A4 | Negative assertion as a first-class finding | Identifiers and metadata | team artifact | Prompt fragments, the creation script, and the next-gen-schema design document; distinct from Use-A11/Use-A23, which are about EFL/Observation-level negation. | +| Sem-A5 | Description and diagnosis both count | Identifiers and metadata | team artifact | Prompt fragment, the `entity_type.md` assignment prompt, and the next-gen-schema design document; distinct from Use-A9's cross-report matching angle on the same finding-vs-diagnosis question. | +| Sem-A6 | Presence and change from prior | Identifiers and metadata | team artifact | Prompt fragment (`presence_and_change.md`) and the creation script. | +| Sem-A7 | Synonyms as the matching surface | Identifiers and metadata | team artifact | Prompt fragments (`synonym_rules.md`, `naming.md`). | +| Sem-A8 | Naming conventions | Identifiers and metadata | team artifact | Prompt fragments and the "Definition Cleanup Plan". | +| Sem-B1 | Identifiers that carry provenance | Identifiers and metadata | team artifact | Metadata-fields reference document, the repository's `CLAUDE.md`, and an Excalidraw board's identifier-format notes. | +| Sem-C1 | Lean published models versus the full metadata schema | Identifiers and metadata | team artifact | Project lead's stated goal ("needs overhaul for increased metadata"); webinar's "Lean vs full" slides; the metadata rewrite document. Two of its eight fields (`applicable_modalities`, and `anatomic_locations` on the base model per Sem-A1) carry cross-axis edges per the deck, but the idea's own subject is the schema as a whole, not those two fields specifically — kept here rather than moved to the common-graph cluster. | +| Sem-C2 | Each metadata field is defined by what it excludes | Identifiers and metadata | team artifact | Policy document (`docs/metadata/subspecialties.md`) and assignment prompts. | +| Sem-C3 | Index codes must be exact | Identifiers and metadata | team artifact | Assignment prompt (`ontology_decision.md`) and the metadata rewrite document. | + +31 ideas. + +### Anatomic locations + +| ID | Name | Source kind | Notes | +|---|---|---|---| +| Sem-D1 | Spatial containment as a single-parent tree to the whole body | team artifact | JDIM manuscript Methods/Results; the project site's homepage states the same rule publicly; the "Current Understanding" document verifies it against the data. | +| Sem-D2 | Containment and part-of are different relations | team artifact | Manuscript and site "code" page; the field-reference skill document. | +| Sem-D3 | Laterality as explicit triads | team artifact | Manuscript Methods, with counts for all 795 bilateral structures; the laterality-conventions reference document. | +| Sem-D4 | Synthetic post-coordinated terms | team artifact | Manuscript Methods gives the counts; the laterality-conventions reference document gives the curation rule. | +| Sem-D5 | Measuring what existing ontologies actually populate | team artifact | Manuscript Methods and Results (the measurement itself, specified to be recomputable). | +| Sem-D6 | An overlay on RadLex, not a competitor | team artifact | The "Anatomy Axis, Current State" document records the 2026-09-13 agreement; the deck's "FMA enrichment" direction (defined but not yet populated: definitions, references, new edges `branch_of`/`bounded_by`/`adjacent_to`) extends this as stated direction — deck-sourced, no separate inventory idea states it. | +| Sem-D7 | The missing is-a and structure-type layer | team artifact | Next-gen-schema design document (`11-anatomy-axis.md`), which itself separates the project lead's scope families from "exploratory ideas from the assistant, not adopted" — a distinction the source document draws, not one this inventory added. | +| Sem-D8 | Curation rules that make the codes usable | team artifact | The field-reference skill document's "SNOMED Coding Guidance". | +| Sem-D9 | A reference layer, not a labeling algorithm | team artifact | Manuscript Discussion states the reference-layer framing directly. | +| Sem-F3 | Contributing terms back, and the two-phase proposal loop | team artifact | Ties directly to Sem-D6/Sem-D7 (the RadLex overlay and its gaps); the `radlex-concepts` skill and the RadLex testing document. | + +10 ideas. Tooling (the anatomic-locations package, BodyPartIndex libraries) moves to SDKs per the +outline; no inventory idea's primary subject is that tooling, so nothing moves out of this table. + +### Exam types + +| ID | Name | Source kind | Notes | +|---|---|---|---| +| Sem-E1 | Preferred high-level exam entries over the Playbook | team artifact | Project lead's stated goals, restated across four years in three documents (site roadmap, board, `med-ontology-lookup` product-roadmap document). | +| Sem-E2 | Exam-to-anatomy inclusion edges and the imaging region | team artifact | Project lead's stated goals; a 2024 board states the same requirement as "defining an imaging region"; the deck (slide 11) restates it as focused/included/edge (usually vs possible) anatomy — same author, two dated phrasings, both belong on this page per the outline. | + +2 ideas. + +### Standards the foundation layers over and cites + +| ID | Name | Source kind | Notes | +|---|---|---|---| +| Sem-F2 | Terminology roles, and search recall as the gate | team artifact | RadLex, SNOMED CT, and LOINC/the Playbook each play a stated role as the terminology OIDM's axes point out to (manuscript "Term selection"; "Hybrid FTS search" design document). Matches the deck's "external citations" category — the deck names SNOMED, RadLex, and LOINC among its own eight (Radiopaedia, Wikipedia, SNOMED, RadLex, LOINC, FMA, ICD, CPT); this idea covers three of those eight and the role each plays. No inventory idea covers Radiopaedia, Wikipedia, FMA, ICD, or CPT — the deck is the only source for those five. Prior "?" flag (cross-cutting Anatomic Locations/Exam Types/ACR-RSNA CDEs) resolved: this page is the single home. | + +1 idea. The lookup tool (`med-ontology-lookup`) moves to SDKs per the outline. + +Foundation Context total: 31 + 10 + 2 + 1 = **44 ideas.** + +--- + +## Data Structures + +The two graphs (Foundation Context and Patient Context) and how they work together are the center +of this pillar. + +### Observation + +| ID | Name | Source kind | Notes | +|---|---|---|---| +| Use-A1 | Observation as the atomic unit of an imaging result | team artifact | January 2026 deck's own definition of the unit; the repository's `CLAUDE.md`; a 2024 reference implementation. | +| Use-A10 | Presence is binary; confidence and hedging are a separate axis | team artifact | JDIM manuscript and SIIM webinar state the design directly; the extraction prompt's `PRESENCE_BLOCK` gives a contrary implemented example. | +| Use-A11 | Pertinent negatives are first-class entries | team artifact | Manuscript and webinar state the rule directly; the extraction prompt and coding prompts enforce it. | +| Use-A12 | Every finding carries a standardized anatomic location, assigned by explicit rules | team artifact | Repo assignment-rules document (`anatomic-location-assignment-rules.md`) and the coding pipeline prompts. Prior "?" flag resolved: stays here (what an Observation carries — "what plus where") with a cross-link to the Anatomic locations page under Foundation Context, which owns the index those rules resolve against. | +| Use-A23 | Normality is recorded as an absent abnormality | team artifact | Extraction prompt blocks (`CORE_INSTRUCTIONS_BLOCK`, `CHUNK_RULES_BLOCK`), the reviewer prompt, and a 2024 hand-extraction sample. | +| Use-A24 | Coding aims at convergence, so generalizing is allowed and specializing is not | team artifact | Coding prompts (`FINDING_TERM_SYSTEM`, `FINDING_CODE_SELECTOR_SYSTEM`) and the coding-agent design document. | +| Use-A25 | Finding type, anatomic site, and presence are independent axes | team artifact | Coding-prompt rules and the coding-agent design document. | + +7 ideas. + +### Exam Finding List + +| ID | Name | Source kind | Notes | +|---|---|---|---| +| Use-A2 | Two-level architecture: Exam Finding List, then Imaging Problem List | team artifact | JDIM manuscript states the two-level rationale directly; the repository README states the same division. | +| Use-A3 | The faithful-translation constraint on the Exam Finding List | team artifact | Manuscript, webinar, and JACR manuscript (which reports the team's own tool violating the rule); the extraction prompt enforces it three times. | +| Use-A9 | One finding may be described by several observations in one report, and by different codes across reports | team artifact | Project lead's 2026-09-19 email notes (points 1 and 2) state this directly; the extraction prompt's `DEDUPLICATION_BLOCK` is the working resolution. | +| Use-A17 | Report sections beyond Findings are unmodeled | team artifact | Board 6 poses the open question directly; the canonical section vocabulary (`report-sections.md`) is the implemented partial answer. **Stays** (see Summary): reads as an open question more than a settled idea, but it is team-sourced, so it stays on a section page rather than moving to the open-questions register. | +| Use-A26 | A named taxonomy of extraction failures, checked by an independent reviewer | team artifact | Reviewer prompt (`validator_prompt_example.md`) and the extraction-internals design document — the structure rule for how a chunk is checked against its source text. Sample Applications' description of the report extraction platform's failure taxonomy and evaluation practice cites this idea; it is not duplicated as a row there. | + +5 ideas. + +### Imaging Problem List + +| ID | Name | Source kind | Notes | +|---|---|---|---| +| Use-A4 | Entry identity is the finding code plus the anatomic site | team artifact | JDIM manuscript states this directly; the repository's `CLAUDE.md` and generation script confirm it. | +| Use-A5 | Status is derived from the observation history, never stored — and three vocabularies disagree | team artifact | Manuscript, webinar, and the repository's `CLAUDE.md`/viewer-v2 plan each state their own vocabulary. | +| Use-A6 | The succession link | team artifact | Manuscript's worked example (pneumonia and its scarring); webinar restates it. | +| Use-A7 | Per-observation provenance and review status, and corrections as provenance operations | team artifact | Manuscript and webinar state the design directly; the extraction platform's `README.md` implements provenance for the extraction pipeline. | +| Use-A8 | Entity resolution is the open problem; graduated-confidence linking is the proposal | team artifact | Manuscript states the three confidence levels directly; webinar names entity resolution as "the open frontier"; JACR manuscript reports the measured limitation. | +| Use-A13 | Anatomic-compatibility reconciliation is unresolved, and the sample data shows the cost | team artifact | Repo design document (`anatomic-location-assignment-rules.md` known-limitation section) naming the gap. | +| Use-A14 | Permanent findings, and the need to rank entries before display | team artifact | JACR manuscript Methods and measured results. | +| Use-A18 | Recommendation structure, and a live-versus-closed axis on IPL entries | team artifact | Manuscript and Board 12. **Stays** (see Summary): the manuscript attaches the recommendation to the IPL entry structurally, even though the "ACR priorities" bucket under Use Cases also touches recommendation tracking. | +| Use-A19 | A finding as a persistent tracked entity with a durable identifier | team artifact | Boards 4 and 15, a 2024 site post, and the manuscript; an unmerged branch's design note. | +| Use-A22 | The re-documentation burden: measured evidence for the Imaging Problem List | team artifact | JACR manuscript results, the core quantitative case for the IPL. | + +10 ideas. (Use-A15, "foundation context: four per-finding dimensions," moved to Foundation +Context's Finding models and CDEs table — see that table's notes.) + +### Imaging Persona + +| ID | Name | Source kind | Notes | +|---|---|---|---| +| Use-A16 | Imaging Persona and the reporting data context object model | team artifact | January 2026 deck names it directly; two boards give a fuller object model; a 2024 site post; the deck's Global Imaging Persona figure (patient history, vitals, meds, current profile, genetic profile, previous scans around the IPL). The structure half stays here; the use half (the reporting context object model, alongside Use-B8's plugin container) is cited under Use Cases, not duplicated as a row there. | + +1 idea. + +### Structures versus transport + +| ID | Name | Source kind | Notes | +|---|---|---|---| +| Use-A21 | Application-layer data structures, distinct from transport expressions | team artifact | Project lead's 2026-09-19 email notes state this directly; the JDIM manuscript's Methods and Discussion state the same independence; FHIR mapping is documented and unimplemented; the interoperability demonstration (Use-B9, at Sample Applications) is linked here as an example of what would need to travel. | + +1 idea. + +Data Structures total: 7 + 5 + 10 + 1 + 1 = **24 ideas.** + +--- + +## SDKs + +| ID | Name | Source kind | Notes | +|---|---|---|---| +| Sem-C6 | Documents record judgment; the schema is the specification | team artifact | Architecture decision record (`0001-lean-metadata-docs-schema-is-spec.md`). The finding model SDK's documentation practice: what is authoritative (the code/schema) versus what is policy (the docs). | +| Sem-C7 | Two databases from one source commit | team artifact | Architecture decision record (`0003-dual-db-pre-post-metadata-release.md`). The finding model SDK's release strategy: what a developer gets, pre- and post-metadata release. | +| Sem-C8 | Three retrieval modes over the corpus | team artifact | Matches "resolve, don't reinvent": the finding model SDK's format, index, search, enrichment, MCP server. Source: the metadata rewrite document and the package code (`index.py`, `similar.py`, `mcp_server.py`). | +| Use-A20 | A formal system of data models with generated schemas | team artifact | The outline names this directly as the proposed Imaging Problem List SDK: issue #1 (opened by the project lead) and the dev-branch platform as its precursor. | + +4 ideas. Use-B3 (coding decoupled from extraction) moved out to Sample Applications this pass — see +that table's notes; the outline treats it as part of what the report extraction platform +demonstrates, not as SDK content on its own. + +--- + +## Use Cases + +| ID | Name | Source kind | Notes | +|---|---|---|---| +| Use-B5 | Six downstream application families for the Imaging Problem List | team artifact | Manuscript, webinar, and deck all state the families: report pre-population, incidental-finding surveillance, chronic-disease monitoring, cross-subspecialty awareness, quality surveillance and research cohorts, and the breast case. | +| Use-B6 | Breast imaging: one entity across assessments, and an automated MQSA audit | team artifact | Webinar states this as "planned work, not results" by its own account. | +| Use-B7 | Outcome tracking, follow-up completion, and radiology-pathology correlation | team artifact | Boards 12 and 7, and a published external quality-measure citation. **Stays** (see Summary): grouped here as a use case rather than at Foundation Context or Data Structures, since it is a proposed application built on the record, not part of either graph's own definition. | +| Use-B8 | The reporting assistance framework: a context object model plus a plugin container | team artifact | Deck names it "Open Imaging Reporting SDK"; 2023 site post and Board 9 give the design; `CDETemplateDemo` is a working precedent. Grouped with the use half of Use-A16 (Imaging Persona's reporting data context object model), which is not duplicated as a row here. | +| Use-B11 | The use case catalog and the six value categories | team artifact | `UseCases` repo and Board 13; the six RSNA Reporting Informatics Committee value categories (reporting efficiency, care team communication, operations/quality/safety, research, public health, education). | + +5 ideas. Use-B9 (the multi-vendor interoperability demonstration) is a use case in purpose but was +built and shown, so its ID row sits at Sample Applications per the outline; its aim (what the +demonstration was for) is cited here without a duplicate row. ACR priorities (recommendation +tracking, AI validation, quality metrics, RADS support) and the deck's determinative-tools / +generative-agents consumer families are context for this whole table, not separate IDs. + +--- + +## Sample Applications + +| ID | Name | Source kind | Notes | +|---|---|---|---| +| Use-B1 | The Imaging Problem List viewer, and anatomy as presentation only | team artifact | The two viewers (IPL viewer 1; IPL viewer 2 with anatomy) named directly by the outline; the deck names the live demo; the design substance comes from the viewer-v2 plan document. | +| Use-B2 | The report extraction, coding, persistence and review platform | team artifact | The repository's `README.md`/`CLAUDE.md`, and the webinar's own framing of the platform as "one implementation of many." | +| Use-B3 | Coding is an independent job, decoupled from extraction | team artifact | Moved here from SDKs this pass. Design rationale document (`docs/coding-agent-design.md`); part of what the report extraction platform demonstrates about its own architecture, per the outline. | +| Use-B4 | Honesty-first evaluation of extraction | team artifact | Evaluation-redesign plan document (`extractor-evals-redesign.md`) and the reviewer-workflow documents — the platform's evaluation practice. Use-A26 (Exam Finding List) is the extraction failure taxonomy this evaluation practice checks against; cited here, not duplicated as a row. | +| Use-B9 | A multi-vendor interoperability demonstration exchanging CDE-labeled FHIR Observations | team artifact | Moved here from Use Cases this pass, as built and shown: Boards 15, 14, and 1. Its purpose is cited under Use Cases without a duplicate row. | +| Use-B10 | Local-only operation for protected health information | team artifact | Implementation and archived hardening documents; a status/deployment detail of the report extraction platform; the JACR manuscript's Methods state the same operating constraint. | + +6 ideas. + +--- + +## Off the reading path + +Empty. Every one of the 87 catalogued ideas carries a team-artifact source and has been placed +under a section above. No agent-inference-only idea was found among the 87 — that material lives +in the inventories' own "Undetermined" and "What could not be determined" sections, which this +table does not place as separate ideas. + +--- + +## Summary + +| Section | Ideas | +|---|---| +| Introduction | 4 | +| Foundation Context — Finding models and CDEs | 31 | +| Foundation Context — Anatomic locations | 10 | +| Foundation Context — Exam types | 2 | +| Foundation Context — Standards the foundation layers over and cites | 1 | +| **Foundation Context total** | **44** | +| Data Structures — Observation | 7 | +| Data Structures — Exam Finding List | 5 | +| Data Structures — Imaging Problem List | 10 | +| Data Structures — Imaging Persona | 1 | +| Data Structures — Structures versus transport | 1 | +| **Data Structures total** | **24** | +| SDKs | 4 | +| Use Cases | 5 | +| Sample Applications | 6 | +| Off the reading path | 0 | +| **Total** | **87** | + +Every idea carries a team-artifact source (agent-inference count is 0 throughout, unchanged from +the prior pass). + +**Remaining "?" flags, marked stays:** +- **Use-A17** (report sections beyond Findings are unmodeled) — stays at Exam Finding List. It + reads as an open question (Board 6) more than a settled idea, but it is team-sourced, so it + belongs on a section page rather than the open-questions register. +- **Use-A18** (recommendation structure, live-versus-closed axis) — stays at Imaging Problem + List. The manuscript attaches the recommendation to the IPL entry structurally; Use Cases' + "ACR priorities" bucket touches recommendation tracking too, but the structural claim's one + home is the data structure it modifies. +- **Use-B7** (outcome tracking, follow-up completion, radiology-pathology correlation) — stays + at Use Cases. It is a proposed application built on the record (Boards 12 and 7), not part of + either graph's own definition, so it belongs with the other use cases rather than at + Foundation Context or Data Structures. + +Flags resolved this pass (no longer marked "?"): Sem-F1, Sem-F2, Sem-F6 (all placed in Foundation +Context's Finding models and CDEs table, common-graph cluster, or the standards table for F2); +Use-A12 (stays at Observation with a cross-link note to Anatomic locations); Use-A15 (moved to +Foundation Context's Finding models and CDEs table, common-graph cluster). From a50ef5f32688130172cda6e77e4b674af2e8430b Mon Sep 17 00:00:00 2001 From: "Alkasab Agent (agent-dev)" Date: Tue, 22 Sep 2026 13:43:52 +0000 Subject: [PATCH 08/19] Draft the Introduction, Foundation Context, and SDKs pages - Foundation Context anchor with finding models and CDEs, anatomic locations, exam types, and standards sections - The common graph explained once, then the two collections and the urgent document-to-graph direction - Every claim dated and attributed; differing sources shown side by side; all pages draft status - Staged under knowledge/drafts beside the current pages until cross-review Co-Authored-By: Claude Fable 5.1 --- docs/plans/restructure-joint-notes.md | 12 +- knowledge/drafts/anatomic-locations.md | 145 ++++++++++ knowledge/drafts/exam-types.md | 85 ++++++ knowledge/drafts/finding-models-and-cdes.md | 278 ++++++++++++++++++++ knowledge/drafts/foundation-context.md | 60 +++++ knowledge/drafts/index.md | 16 +- knowledge/drafts/introduction.md | 106 ++++++++ knowledge/drafts/sdks.md | 141 ++++++++++ knowledge/drafts/standards.md | 56 ++++ 9 files changed, 888 insertions(+), 11 deletions(-) create mode 100644 knowledge/drafts/anatomic-locations.md create mode 100644 knowledge/drafts/exam-types.md create mode 100644 knowledge/drafts/finding-models-and-cdes.md create mode 100644 knowledge/drafts/foundation-context.md create mode 100644 knowledge/drafts/introduction.md create mode 100644 knowledge/drafts/sdks.md create mode 100644 knowledge/drafts/standards.md diff --git a/docs/plans/restructure-joint-notes.md b/docs/plans/restructure-joint-notes.md index fd510cd..7b0553f 100644 --- a/docs/plans/restructure-joint-notes.md +++ b/docs/plans/restructure-joint-notes.md @@ -77,11 +77,13 @@ Seams settled: an authoring application is a Sample Application; reusable author Staging: `knowledge/drafts/` (index there; final layout after cross-review is one directory per pillar with the anchor as `index.md`). Provenance `generated.by: claude-opus-5/2026-09-22-restructure/`, reviewed by the main session before handoff. Codex's drafts use `codex/2026-09-22-restructure`. -- [ ] `foundation-context.md` anchor and `finding-models-and-cdes.md` (agent draft-foundation) -- [ ] `anatomic-locations.md`, `exam-types.md`, `standards.md` (agent draft-axes) -- [ ] `sdks.md` (agent draft-sdks) -- [ ] main-session source review of each, then handoff to Codex for cross-review -- [ ] `introduction.md`, whichever session gets there first +- [x] `foundation-context.md` anchor and `finding-models-and-cdes.md` (agent draft-foundation) +- [x] `anatomic-locations.md`, `exam-types.md`, `standards.md` (agent draft-axes) +- [x] `sdks.md` (agent draft-sdks) +- [x] main-session source review of each (done 2026-09-22; fixes applied by the drafting agents) +- [ ] handoff to Codex for cross-review +- [x] `introduction.md` (agent draft-intro) +- [x] source-fidelity reviews of Codex's three drafts written to `sources/review/drafts-{data-structures,use-cases,sample-applications}.md` (16, 12, and 9 findings) ## Codex section diff --git a/knowledge/drafts/anatomic-locations.md b/knowledge/drafts/anatomic-locations.md new file mode 100644 index 0000000..135d951 --- /dev/null +++ b/knowledge/drafts/anatomic-locations.md @@ -0,0 +1,145 @@ +--- +type: Concept +title: Anatomic locations +description: The curated anatomic location index as a reference layer - identity, containment, part-of, laterality, synthetic terms, curation rules, the RadLex overlay, and the two dated implementations. +tags: [foundation-context, anatomic-locations, radlex, laterality, containment] +status: draft +generated: { by: claude-opus-5/2026-09-22-restructure/draft-axes, at: 2026-09-22T12:53:11Z } +sources: + - id: jdim-al + resource: "Anatomic Locations Index: A Spatial Containment Hierarchy for Localizing Imaging Findings, manuscript under review at the Journal of Digital Imaging and Informatics in Medicine, 2026" + title: Manuscript under review, read as the blinded manuscript body only; reviewer correspondence not used + - id: siim2026 + resource: t3://oidm-public/oidm-knowledge-sources/SIIM%202026%20Reports-of-the-Future.pptx + title: Structured Results and Context for Next-Generation Imaging Resulting Tools, SIIM 2026 annual meeting talk, June 2026, Mass General Brigham, slides 8, 10 and 12 + - id: al-site + resource: https://github.com/talkasab/anatomiclocations.org/blob/1f39fa45f621cef947a3f3ef1f869334cfa5c841/docs/index.markdown + title: Anatomic Locations project site homepage, rationale, features and roadmap, unchanged since January 2023 + - id: fm-data + resource: https://github.com/openimagingdata/findingmodel/blob/75afd39a400419dcfaf7c8d4a34f065b4d804e0d/notebooks/data/anatomic_locations_noembed.json + title: anatomic_locations_noembed.json, the current curated set, 2,926 records + - id: fm-fields + resource: https://github.com/openimagingdata/findingmodel/blob/75afd39a400419dcfaf7c8d4a34f065b4d804e0d/.claude/skills/manage-anatomic-locations/reference/json-schema.md + title: Anatomic locations source JSON field reference, including the SNOMED CT SEP triad rule + - id: fm-laterality + resource: https://github.com/openimagingdata/findingmodel/blob/75afd39a400419dcfaf7c8d4a34f065b4d804e0d/.claude/skills/manage-anatomic-locations/reference/laterality-conventions.md + title: Laterality conventions, the compound identifier pattern and the three-entry rule + - id: fm-skill + resource: https://github.com/openimagingdata/findingmodel/blob/75afd39a400419dcfaf7c8d4a34f065b4d804e0d/.claude/skills/manage-anatomic-locations/SKILL.md + title: The manage-anatomic-locations skill and its lookup, sampling and validation scripts + - id: fm-package + resource: https://github.com/openimagingdata/findingmodel/tree/75afd39a400419dcfaf7c8d4a34f065b4d804e0d/packages/anatomic-locations + title: The anatomic-locations package, version 0.2.5, its runtime model, index and command line + - id: fm-doc + resource: https://github.com/openimagingdata/findingmodel/blob/75afd39a400419dcfaf7c8d4a34f065b4d804e0d/docs/anatomic-locations.md + title: Anatomic locations usage document, findingmodel + - id: fm-normalized + resource: https://github.com/openimagingdata/findingmodel/blob/75afd39a400419dcfaf7c8d4a34f065b4d804e0d/tasks/done/anatomic-locations-normalized-schema.md + title: Rich anatomic location DuckDB with relationships, the plan that designed the normalized model, completed 2025-12-31 + - id: al-libs + resource: https://github.com/talkasab/BodyPartIndex.py/blob/388ae0a6da92f5ee4cf36620bbeeabe223938471/README.md + title: BodyPartIndex.py README, the Python wrapper library, last commit 2024-02-03; companion TypeScript library at BodyPartIndex.ts dec578e1, 2022-12-18 + - id: cde-anatomy-axis + resource: https://github.com/RSNA/ACR-RSNA-CDEs/blob/44836c19f4e025cf1684a015ed5cc63c29eaf7f3/docs/next-gen-schema/11-anatomy-axis.md + title: The Anatomy Axis, Current State, ACR-RSNA-CDEs next-gen-2026 branch, dated 15 September 2026 + - id: cde-understanding + resource: https://github.com/RSNA/ACR-RSNA-CDEs/blob/44836c19f4e025cf1684a015ed5cc63c29eaf7f3/docs/next-gen-schema/00-current-understanding.md + title: Current Understanding, ACR-RSNA-CDEs next-gen-2026 branch, the laterality and substrate statements + - id: cde-alpha + resource: https://github.com/RSNA/ACR-RSNA-CDEs/blob/44836c19f4e025cf1684a015ed5cc63c29eaf7f3/docs/next-gen-schema/12-alpha-structural-comparison.md + title: Alpha structural comparison, ACR-RSNA-CDEs next-gen-2026 branch, open decision areas ST06 and ST08 + - id: radlex-issue + resource: https://github.com/RSNA/RadLex/issues/3 + title: "RSNA RadLex issue 3, Add Anatomic Locations, opened 2026-08-10, open" + - id: radlex-skill + resource: https://github.com/RSNA/RadLex/blob/5162a65db531c8170139656f8a8ed27d96b6dd20/.claude/skills/radlex-concepts/SKILL.md + title: The radlex-concepts skill, the two-phase extract and propose loop with its validation rules + - id: radlex-suggest + resource: https://github.com/RSNA/RadLex/blob/5162a65db531c8170139656f8a8ed27d96b6dd20/.pi/skills/suggest-new-concepts.md + title: The suggest-new-concepts skill, acceptance rules for a proposed concept +--- + + +# What the index is + +The [anatomic location](/glossary/anatomic-location.md) index is a curated set of anatomic entities, each keyed by a [RadLex identifier](/glossary/radlex-id.md) and placed in a spatial containment hierarchy. The manuscript under review describes it as a reference and normalization layer, not an automatic labeling algorithm. An identifier may be applied at the examination or series level for the anatomy covered, or at the finding level for where an observation is. Labels may be assigned by hand or generated by rules, language processing, or AI and then normalized, and whatever the route, a person or a downstream check confirms the structure before anything relies on it. The same source states the limit: knowing where a finding is does not establish what kind of process it is, how long it has been present, or whether it is the same lesion recorded elsewhere.[^jdim-al] + +How a finding acquires its location is a Data Structures question, covered in [anatomic location assignment rules](../data-structures/anatomic-location-assignment-rules.md). + +# Why a curated set + +The project site, unchanged since January 2023, argues qualitatively that ontologies holding anatomic terms are poorly suited to underpinning interoperability: too few desired terms, too many unnecessary or degenerate ones, limited anatomic organization. Its approach was to curate a subset of them, starting from [RadLex](/glossary/radlex.md) terms previously recognized in radiology reports.[^al-site] + +The manuscript under review replaces that assertion with a measurement. It counts, for [SNOMED CT](/glossary/snomed-ct.md), [FMA](/glossary/fma.md), and RadLex, how completely each populates the containment or part-whole relation it declares, measuring each against its own anatomy term set so no resource is penalized for its coverage. In none of the three can software follow the declared relations from a structure up to a whole-body class, even when every declared relation, its subproperties, and the reversed forms of its inverses are pooled. The stated interpretation is not that the resources are defective but that none was built to answer what encloses the structures radiologists name. The manuscript measures no downstream utility and asks to be read as a descriptive resource paper.[^jdim-al] + +# Identity and codes + +A location's identifier is its RadLex identifier. The next-generation vocabulary work states the consequence directly: a RadLex code is never listed beside a location, because the location code is the RadLex code.[^cde-anatomy-axis] + +In the current curated data, all 2,926 records carry an identifier, a description, a [body region](/glossary/body-region.md), and a containment parent. SNOMED CT concept identifiers appear on 1,782, ACR Common identifiers on 2,025, a further code list of FMA, MeSH, and [UMLS](/glossary/umls.md) entries on 1,750.[^fm-data] + +Which SNOMED CT concept to use is a written rule, not a matter of judgment. SNOMED CT carries a Structure-Entire-Part triple for anatomy, and the field reference instructs a curator to always take the "Structure of ..." concept and never the "Entire ..." or "... part" forms, because that is what SNOMED CT intends for finding sites and procedure sites. Where a lateralized code does not exist, the unsided code serves all three entries and the substitution is noted in the change description. Definitions prefer authoritative sources in order: Fleischner Society for thoracic anatomy, then RadLex, MeSH, FMA.[^fm-fields] Lookup, sampling, and validation scripts ship beside the reference.[^fm-skill] + +# Containment: one parent, up to the whole body + +Every structure has exactly one containing parent, the smallest anatomic entity that encloses it. A structure spanning several subregions takes the smallest region containing the whole of it, so the pancreatic duct is contained by the pancreas rather than by the head, body, neck, tail, or uncinate process individually. The manuscript reports that every chain was verified to reach one root, the whole body, that the longest chain is seven hops, and that the largest share of entries sits at depth three. It records the cost as a limitation: a structure spanning sibling subregions is assigned to their common parent, so the pancreatic duct's course through the subdivisions is not represented, and the grouping is deliberately coarse.[^jdim-al] The project site states the same tree rule publicly.[^al-site] + +# Containment is not part-of + +Where a structure physically sits and what functional structure it belongs to are different questions, kept in separate fields. The curation guidance tells an editor which to use: the containment reference for "X is inside Y", as the hilum is inside the lung, and the part-of reference for "X is a component of Y", as the stomach is a part of the gastrointestinal tract.[^fm-fields] The manuscript gives the abdominal aorta as the worked case, contained by the retroperitoneum and part of the aorta, and states that the single-parent constraint applies only to containment: a structure may hold zero, one, or more [part-of](/glossary/contained-by-and-part-of.md) associations. The release it describes carries 991;[^jdim-al] the current data carries 1,123.[^fm-data] The next-generation vocabulary work leaves open which hierarchy a given check walks; it must be stated each time.[^cde-anatomy-axis] + +# Laterality as explicit triads + +Left, right, and unsided variants of a bilateral structure are three distinct entries joined by explicit links, rather than one entry plus a modifier. The unsided entry links to both sided variants; each sided entry links to its counterpart and back to the unsided form; and a sided entry's container points at the sided version of its container where one exists.[^fm-laterality] The manuscript states the reason as an implementation convenience, since the links permit deterministic navigation among corresponding forms without reconstructing a post-coordinated expression at runtime, and reports complete triads for all 795 bilateral structures.[^jdim-al] + +The next-generation vocabulary work draws a consequence: laterality is carried by the location rather than by a data element, so there will be no laterality data elements.[^cde-understanding] An external reviewer's alpha implementation instead defines a laterality data element including a bilateral value. The difference is recorded as an open decision area, and the alpha acknowledges that a bilateral value does not resolve whether a report describes one entity or two.[^cde-alpha] + +# Synthetic post-coordinated terms + +Where a clinically routine localization concept has no pre-coordinated RadLex term, almost always because laterality or enumeration is missing, an identifier is minted by joining existing RadLex identifiers with an underscore, keeping the composition transparent and machine-readable.[^fm-laterality] The manuscript reports three patterns covering all of them: laterality only, 730 terms; enumeration only, 86; enumeration plus laterality, 194, most often for numbered or bilateral structures. Two qualifications accompany the count: it is not evidence that established ontologies lack mechanisms for adding concepts, since the gaps are specific to one lexicon; and systems built on RadLex will not recognize the compound identifiers without an added mapping layer.[^jdim-al] The next-generation vocabulary work names them as the exception the RadLex track will remove by minting real identifiers.[^cde-anatomy-axis] + +# An overlay on RadLex, and terms contributed back + +The relationship to RadLex is stated as an overlay, not a competitor: RadLex concepts and predicates sit underneath, and the file adds identifiers RadLex lacks, its own two hierarchies, and laterality. The next-generation vocabulary work records this as agreed on 13 September 2026, and states why work proceeds against the file rather than the published RadLex release: the RadLex anatomy track is editing the file, so aiming at the published release is described as editing a three-year-old version of a document others have been editing. The data is pointed to at a pinned commit, not copied.[^cde-anatomy-axis] The manuscript describes incorporation by the RSNA RadLex Committee as underway, covering the terms, and notes that a process for revising and reviewing the hierarchy still needs definition.[^jdim-al] The RadLex repository carries an open issue whose exit criterion is complete coverage of the anatomic locations terminology in RadLex.[^radlex-issue] + +Gaps found while using a terminology are fed back rather than patched locally. The RadLex repository's concept skill implements this in two phases. An agent first matches findings in report text to existing concepts, under the rule that a loose keyword overlap is not enough and a broader or related concept does not count as a match. For each unmatched term it proposes a new concept with the closest existing parent, a precise term, a rationale for why the gap is genuine, and typed relationships only where a real existing identifier was found for the other end.[^radlex-suggest] Proposals are validated before anything is written, and a batch fails as a whole.[^radlex-skill] Separately, the next-generation vocabulary work feeds node requests upstream: lung parenchyma, perirenal space and its sided forms, pericardial space, subarachnoid space, and real identifiers for the compound sided variants.[^cde-anatomy-axis] + +# What the index does not carry + +The curated set has containment and part-of but no taxonomic relation and no structure-type nodes, so a statement such as "this finding applies to tendons" cannot be made. The next-generation vocabulary work records this as the major shortcoming for that effort and the first thing to resolve. RadLex could supply a first layer without inventing anything, since every plain-identifier location has a taxonomic chain in the published ontology, yielding several hundred locations under each of muscle, artery, vein, tendon, and bone. Two cautions accompany it: RadLex warns that some taxonomic categorizations were converted from part-of and may be wrong, and the deep formal chain is not the clinically useful layer. The same document names two scope families, tissue types and structure types, with their connections to the location hierarchy still open, and separates them from exploratory ideas marked not adopted.[^cde-anatomy-axis] + +# Stated direction: enrichment from FMA + +The SIIM 2026 talk shows the anatomic location axis as a kidney field table: identity, classification, the two hierarchies, laterality variants, codes. A group of rows is marked defined but not yet populated, under FMA enrichment going forward: definitions imported from FMA under a Creative Commons license, references, new edges for branch-of, bounded-by, and adjacent-to, enumeration updates splitting organ from organ part and adding "Back" to the region list, and a location type recorded as "organ (next-gen; was 'structure')".[^siim2026] + +# Two dated implementations + +Two implementations coexist; the later one is current. + +| | The 2022 to 2024 set | The current package | +|---|---|---| +| Data | `body_parts.json`, 2,890 nodes, release 1.0.0-rc.1, site unchanged since January 2023[^al-site] | `anatomic_locations_noembed.json`, 2,926 records, inside `findingmodel`[^fm-data] | +| Libraries | Python and TypeScript wrappers over the JSON file, last commits 2024-02-03 and 2022-12-18[^al-libs] | One Python package, version 0.2.5, with a command line[^fm-package] | +| Status | Superseded as the working substrate on 2026-09-13[^cde-understanding] | The substrate the next-generation vocabulary points at, pinned to a commit[^cde-anatomy-axis] | + +Entity counts differ by release and are not reconciled: 2,890 in the published file, 2,891 in the manuscript, 2,926 in the current data.[^al-site][^jdim-al][^fm-data] + +The current package resolves a location by identifier, description, synonym, or external code, walks both hierarchies, filters by region and by the classification fields, and searches by combining full-text and vector retrieval.[^fm-package][^fm-doc] It precomputes containment and part-of paths, so ancestry and containment tests become string comparisons rather than recursive queries, a design written as a plan completed on 2025-12-31.[^fm-normalized] Tooling belongs to the SDKs pillar; see [SDKs](./sdks.md). + +[^jdim-al]: Anatomic Locations Index manuscript, under review at the Journal of Digital Imaging and Informatics in Medicine, 2026 +[^siim2026]: SIIM 2026 annual meeting talk, June 2026, Mass General Brigham +[^al-site]: Anatomic Locations project site homepage, January 2023 +[^fm-data]: anatomic_locations_noembed.json, the current curated set +[^fm-fields]: Anatomic locations source JSON field reference, findingmodel +[^fm-laterality]: Laterality conventions, findingmodel +[^fm-skill]: The manage-anatomic-locations skill, findingmodel +[^fm-package]: The anatomic-locations package, findingmodel +[^fm-doc]: Anatomic locations usage document, findingmodel +[^fm-normalized]: Rich anatomic location DuckDB with relationships, findingmodel +[^al-libs]: BodyPartIndex.py and BodyPartIndex.ts READMEs +[^cde-anatomy-axis]: The Anatomy Axis, Current State, ACR-RSNA-CDEs next-gen-2026 +[^cde-understanding]: Current Understanding, ACR-RSNA-CDEs next-gen-2026 +[^cde-alpha]: Alpha structural comparison, ACR-RSNA-CDEs next-gen-2026 +[^radlex-issue]: RSNA RadLex issue 3, Add Anatomic Locations +[^radlex-skill]: The radlex-concepts skill, RSNA RadLex +[^radlex-suggest]: The suggest-new-concepts skill, RSNA RadLex diff --git a/knowledge/drafts/exam-types.md b/knowledge/drafts/exam-types.md new file mode 100644 index 0000000..d055283 --- /dev/null +++ b/knowledge/drafts/exam-types.md @@ -0,0 +1,85 @@ +--- +type: Concept +title: Exam types +description: A stated goal with no artifact - preferred high-level exam entries over the LOINC/RSNA Radiology Playbook, the Playbook properties they would expose, and the anatomy coverage edges in the project lead's two dated phrasings. +tags: [foundation-context, exam-types, loinc, playbook, radlex] +status: draft +generated: { by: claude-opus-5/2026-09-22-restructure/draft-axes, at: 2026-09-22T12:53:11Z } +sources: + - id: brief + resource: /plans/2026-09-20-knowledgebase-build-plan.md + title: The project lead's stated goals, recorded verbatim from the request of 2026-09-20 + - id: siim2026 + resource: t3://oidm-public/oidm-knowledge-sources/SIIM%202026%20Reports-of-the-Future.pptx + title: Structured Results and Context for Next-Generation Imaging Resulting Tools, SIIM 2026 annual meeting talk, June 2026, Mass General Brigham, slides 8 and 11 + - id: al-site + resource: https://github.com/talkasab/anatomiclocations.org/blob/1f39fa45f621cef947a3f3ef1f869334cfa5c841/docs/index.markdown + title: Anatomic Locations project site roadmap, content tasks, unchanged since January 2023 + - id: board-anatomy + resource: https://link.excalidraw.com/l/AxEw4sqe6bu/4jmRPObEdLq + title: Common Anatomic Locations working board, Exam Types box, with a discussion checklist dated 2024-05-28 + - id: molu-roadmap + resource: https://github.com/openimagingdata/med-ontology-lookup/blob/9cc3eec2c7af32e366e3f05e027b223b4a870077/docs/product-roadmap.md + title: "Product direction: an agent-ready medical terminology graph gateway, med-ontology-lookup, research date 2026-08-16, status recommended direction" + - id: jdim-al + resource: "Anatomic Locations Index: A Spatial Containment Hierarchy for Localizing Imaging Findings, manuscript under review at the Journal of Digital Imaging and Informatics in Medicine, 2026" + title: Manuscript under review, Discussion section on scan-protocol coverage; reviewer correspondence not used + - id: ipl-rules + resource: https://github.com/openimagingdata/imaging-problem-list/blob/36fa30c7383bf687d7bc17815282a93e123a56cb/docs/anatomic-location-assignment-rules.md + title: Anatomic location assignment rules, imaging-problem-list dev branch, the precedence ladder and the exam-scoped region fallback + - id: ipl-efl + resource: https://github.com/openimagingdata/imaging-problem-list/blob/36fa30c7383bf687d7bc17815282a93e123a56cb/sample_data/example2/ct_abdomen_20210826_efl.json + title: Exam Finding List sample with a LOINC-coded exam header, imaging-problem-list dev branch +--- + +# Nothing is built + +No exam type artifact exists in any OIDM repository. Everything on this page is either a stated goal or a written proposal, each dated. The nearest running behavior is that an [exam type](/glossary/exam-type.md) appears as a bare LOINC code in an Exam Finding List header,[^ipl-efl] and as the last rung of the anatomy precedence ladder: when a report gives no explicit anatomy and the finding has no target organ, the location falls back to the exam-scoped coarse region, sided only if the exam is sided.[^ipl-rules] Both belong to [Data Structures](./data-structures.md). + +# Preferred high-level entries over the Playbook + +The goal has been stated in nearly the same words across four years, and it is always a wrapper rather than a new vocabulary. + +| Date | Statement | +|---|---| +| January 2023 | The project site roadmap lists, under content tasks, a companion for exam types based on LOINC and RadLex Playbook exam definitions that specify all included body parts.[^al-site] | +| 2024 | A working board's Exam Types box lists exam type definitions of the most common exams based on LOINC, with common identifiers.[^board-anatomy] | +| 2026-09-20 | The project lead's brief: exam types need "wrapper tooling around the knowledge graph represented by RadLex LOINC playbook", and the project needs "to define the PREFERRED high-level entries like 'CT Chest', 'MRI Brain', 'X-ray Knee'."[^brief] | +| June 2026 | The SIIM talk shows Exam Type as one of three axes, each an OIDM layer over an existing standard; the exam type axis layers over [LOINC Playbook](/glossary/loinc-rsna-radiology-playbook.md) study types.[^siim2026] | + +The brief's word is "PREFERRED": the goal is to mark, among the Playbook's many entries, the high-level ones such as "CT Chest" that the project wants systems to use.[^brief] + +# What the layer would expose + +The June 2026 talk describes Exam Type as a thin layer on top of the RadLex/LOINC Playbook whose value is access to information the Playbook already holds: timing, contrast, and sidedness among them. It also states that broad families of exams are being grouped together, giving "CT Chest" and "MR Knee" as the examples.[^siim2026] That is the same grouping idea the brief states as preferred high-level entries.[^brief] + +# Anatomy coverage edges, in two dated phrasings + +The project lead has stated the connection to anatomy twice, in different words, three months apart. Both are recorded here as given; neither supersedes the other on the evidence available. + +**2026-09-20, the brief.** Exam types need "to TIGHTLY wrap up with Anatomic Locations, including edges for both 'always included' (which can include hierarchies) as well as 'usually included' (for edge things) and something like 'POSSIBLY included, would have to check'."[^brief] + +**June 2026, the SIIM talk.** Under "Connect to Anatomic Locations", the slide lists focused anatomy, included anatomy, and "edge" anatomy, the last qualified as usually versus possible.[^siim2026] + +The two overlap but do not map one to one. The talk's *focused* anatomy has no counterpart in the brief, and the brief's *always included* has none in the talk. + +The manuscript under review names the same capability from the other side, as something the [anatomic location](/glossary/anatomic-location.md) index does not supply: relating a finding's location to what an examination covers would additionally require a model of scan-protocol coverage. It states the use case that would be served, identifying relevant prior studies that cover overlapping anatomy even when acquired for different clinical purposes.[^jdim-al] + +# The imaging region + +The 2024 board states the same requirement as defining an imaging region: a "CT chest region" contains the chest, but also what a radiology exam of the chest would include, such as the lower neck, the upper abdomen, and the shoulders.[^board-anatomy] The January 2023 site roadmap puts it as exam definitions specifying all included body parts.[^al-site] + +# The one written design + +The only written design touching exam types is the terminology gateway's product roadmap, dated 2026-08-16 and labeled a recommended direction rather than a built capability. It proposes named domain profiles in place of an ever-growing default search, with `radiology` as the default profile, and places the Playbook in that default on the stated ground that radiology orderables live in the LOINC/RSNA Radiology Playbook while findings, anatomy, and report language live in RadLex.[^molu-roadmap] + +Four Playbook implications are stated: rank procedure and orderable queries toward Playbook terms while ranking finding and anatomy queries toward RadLex, SNOMED CT, and FMA; teach the crosswalk the Playbook correspondences linking a LOINC code to its historic RadLex Playbook identifier and to RadLex anatomy and modality attributes, recording that in the mapping provenance; detect Playbook identifiers as well as LOINC-shaped codes; and prefer Playbook or radiology-class hits rather than treating every LOINC hit as radiology.[^molu-roadmap] The tool itself belongs to the SDKs pillar; see [SDKs](./sdks.md). The standards each axis layers over are covered in [standards](./standards.md). + +[^brief]: The project lead's stated goals, 2026-09-20 +[^siim2026]: SIIM 2026 annual meeting talk, June 2026, Mass General Brigham +[^al-site]: Anatomic Locations project site roadmap, January 2023 +[^board-anatomy]: Common Anatomic Locations working board, Exam Types box +[^molu-roadmap]: Product direction, med-ontology-lookup, 2026-08-16 +[^jdim-al]: Anatomic Locations Index manuscript, under review at the Journal of Digital Imaging and Informatics in Medicine, 2026 +[^ipl-rules]: Anatomic location assignment rules, imaging-problem-list +[^ipl-efl]: Exam Finding List sample with a LOINC-coded exam header, imaging-problem-list diff --git a/knowledge/drafts/finding-models-and-cdes.md b/knowledge/drafts/finding-models-and-cdes.md new file mode 100644 index 0000000..82e5d8d --- /dev/null +++ b/knowledge/drafts/finding-models-and-cdes.md @@ -0,0 +1,278 @@ +--- +type: Concept +title: Finding models and CDEs +description: One content in two collections - the common graph being drafted for both, the OIFM and RadElement formats that hold it today, what the inclusive collection contains, and the authoring and review principles behind it. +tags: [foundation-context, finding-models, cde, radelement, next-gen-schema] +status: draft +generated: { by: claude-opus-5/2026-09-22-restructure/draft-foundation, at: 2026-09-22T00:00:00Z } +sources: + - id: joint-notes + resource: docs/plans/restructure-joint-notes.md + title: "Restructure joint working notes, carrying the project lead's decisions of 2026-09-22" + last_modified: 2026-09-22 + - id: build-plan + resource: knowledge/plans/2026-09-20-knowledgebase-build-plan.md + title: "Knowledgebase build plan, carrying the project lead's content direction of 2026-09-21" + last_modified: 2026-09-21 + - id: cde-00 + resource: https://github.com/RSNA/ACR-RSNA-CDEs/blob/44836c19f4e025cf1684a015ed5cc63c29eaf7f3/docs/next-gen-schema/00-current-understanding.md + title: "Next-Generation CDE Schema: Current Understanding, ACR-RSNA-CDEs next-gen-2026 at 44836c1, 2026-09-15" + last_modified: 2026-09-15 + - id: cde-01 + resource: https://github.com/RSNA/ACR-RSNA-CDEs/blob/44836c19f4e025cf1684a015ed5cc63c29eaf7f3/docs/next-gen-schema/01-what-the-vocabulary-must-express.md + title: "What the Vocabulary Must Express, ACR-RSNA-CDEs next-gen-2026 at 44836c1, 2026-09-15" + last_modified: 2026-09-15 + - id: cde-03 + resource: https://github.com/RSNA/ACR-RSNA-CDEs/blob/44836c19f4e025cf1684a015ed5cc63c29eaf7f3/docs/next-gen-schema/03-draft-structures.md + title: "Draft Structures for Worked Examples, ACR-RSNA-CDEs next-gen-2026 at 44836c1, 2026-09-15" + last_modified: 2026-09-15 + - id: cde-07 + resource: https://github.com/RSNA/ACR-RSNA-CDEs/blob/44836c19f4e025cf1684a015ed5cc63c29eaf7f3/docs/next-gen-schema/07-relationship-family.md + title: "The Finding and Diagnosis Relationship Family, ACR-RSNA-CDEs next-gen-2026 at 44836c1, 2026-09-15" + last_modified: 2026-09-15 + - id: cde-08 + resource: https://github.com/RSNA/ACR-RSNA-CDEs/blob/44836c19f4e025cf1684a015ed5cc63c29eaf7f3/docs/next-gen-schema/08-worked-examples.md + title: "Worked Examples: Acute Pyelonephritis, Pleural Effusion, and One Report, ACR-RSNA-CDEs next-gen-2026 at 44836c1, 2026-09-15" + last_modified: 2026-09-15 + - id: cde-10 + resource: https://github.com/RSNA/ACR-RSNA-CDEs/blob/44836c19f4e025cf1684a015ed5cc63c29eaf7f3/docs/next-gen-schema/10-decision-record-2026-09-02.md + title: "Decision Record, 2 to 15 September 2026, ACR-RSNA-CDEs next-gen-2026 at 44836c1" + last_modified: 2026-09-15 + - id: cde-11 + resource: https://github.com/RSNA/ACR-RSNA-CDEs/blob/44836c19f4e025cf1684a015ed5cc63c29eaf7f3/docs/next-gen-schema/11-anatomy-axis.md + title: "The Anatomy Axis, Current State, ACR-RSNA-CDEs next-gen-2026 at 44836c1, 2026-09-15" + last_modified: 2026-09-15 + - id: cde-context + resource: https://github.com/RSNA/ACR-RSNA-CDEs/blob/44836c19f4e025cf1684a015ed5cc63c29eaf7f3/CONTEXT.md + title: "CDE vocabulary, CONTEXT.md, ACR-RSNA-CDEs next-gen-2026 at 44836c1, 2026-09-15" + last_modified: 2026-09-15 + - id: cde-schema + resource: https://github.com/RSNA/ACR-RSNA-CDEs/blob/44836c19f4e025cf1684a015ed5cc63c29eaf7f3/cde.schema.json + title: "cde.schema.json, the published CDE set and element schema, ACR-RSNA-CDEs at 44836c1" + last_modified: 2026-09-15 + - id: oifm-metadata-fields + resource: https://github.com/RSNA/ACR-RSNA-CDEs/blob/44836c19f4e025cf1684a015ed5cc63c29eaf7f3/notes/oifm-metadata-fields.md + title: "Finding Model Structured Metadata Fields, ACR-RSNA-CDEs next-gen-2026 at 44836c1" + last_modified: 2026-09-15 + - id: oifm-v2-draft + resource: https://github.com/RSNA/ACR-RSNA-CDEs/blob/44836c19f4e025cf1684a015ed5cc63c29eaf7f3/notes/oifm-schema-v2-draft.md + title: "FindingModel Source Schema v2 Draft, April 2026, copied on ACR-RSNA-CDEs next-gen-2026 at 44836c1" + last_modified: 2026-09-15 + - id: oifm-schema + resource: https://github.com/openimagingdata/findingmodels/blob/a30c3c95fa3943e7340ce87575f4b1b926987eb8/schema/finding_model_schema.md + title: "Finding Model Schema, findingmodels taxonomy-export-2026-08-15 at a30c3c9" + last_modified: 2026-08-15 + - id: ids-json + resource: https://github.com/openimagingdata/findingmodels/blob/a30c3c95fa3943e7340ce87575f4b1b926987eb8/ids.json + title: "ids.json, the identifier registry, findingmodels taxonomy-export-2026-08-15 at a30c3c9" + last_modified: 2026-08-15 + - id: lists-readme + resource: https://github.com/openimagingdata/findingmodels/blob/a30c3c95fa3943e7340ce87575f4b1b926987eb8/lists/README.md + title: "Exam-oriented finding taxonomies README, findingmodels taxonomy-export-2026-08-15 at a30c3c9" + last_modified: 2026-08-15 + - id: cleanup-plan + resource: https://github.com/openimagingdata/findingmodels/blob/a30c3c95fa3943e7340ce87575f4b1b926987eb8/docs/plans/definition_cleanup.md + title: "Definition Cleanup Plan, findingmodels taxonomy-export-2026-08-15 at a30c3c9" + last_modified: 2026-08-15 + - id: upstream-proposals + resource: https://github.com/openimagingdata/findingmodels/blob/a30c3c95fa3943e7340ce87575f4b1b926987eb8/docs/plans/findingmodel-upstream-proposals.md + title: "Candidate upstream issues for the findingmodel library, findingmodels taxonomy-export-2026-08-15 at a30c3c9" + last_modified: 2026-08-15 + - id: oifm-prompts + resource: https://github.com/openimagingdata/findingmodels/tree/a30c3c95fa3943e7340ce87575f4b1b926987eb8/prompts/fragments + title: "Authoring prompt fragments, findingmodels taxonomy-export-2026-08-15 at a30c3c9" + last_modified: 2026-08-15 + - id: oifm-skills + resource: https://github.com/openimagingdata/findingmodels/tree/a30c3c95fa3943e7340ce87575f4b1b926987eb8/.claude/skills + title: "finding-author, finding-batch, and finding-review skill files, findingmodels taxonomy-export-2026-08-15 at a30c3c9" + last_modified: 2026-08-15 + - id: prompt-research + resource: https://github.com/openimagingdata/findingmodels/blob/a30c3c95fa3943e7340ce87575f4b1b926987eb8/docs/plans/prompt_length_research.md + title: "Prompt Length and Instruction Complexity: Research and Recommendations, 2026-03-22, findingmodels at a30c3c9" + last_modified: 2026-03-22 + - id: chestct-spec + resource: https://github.com/openimagingdata/findingmodels/blob/0472a467/PROJECT_SPECIFICATION.md + title: "Chest CT conversion project specification, findingmodels content/chestcts at 0472a46" + last_modified: 2026-08-15 + - id: metadata-rewrite + resource: https://github.com/openimagingdata/findingmodel/blob/1942b06a/docs/canonical-structured-metadata-and-enrichment-rewrite.md + title: "Canonical Structured Metadata and Enrichment Rewrite, findingmodel feature/metadata-cleanup at 1942b06" + last_modified: 2026-06-23 + - id: metadata-fields-doc + resource: https://github.com/openimagingdata/findingmodel/blob/1942b06a/docs/metadata/subspecialties.md + title: "Subspecialty policy and field standards, findingmodel feature/metadata-cleanup at 1942b06" + last_modified: 2026-06-23 + - id: metadata-prompts + resource: https://github.com/openimagingdata/findingmodel/tree/1942b06a/packages/findingmodel-ai/src/findingmodel_ai/metadata/prompts + title: "Metadata assignment prompts, findingmodel feature/metadata-cleanup at 1942b06" + last_modified: 2026-06-23 + - id: adr-0002 + resource: https://github.com/openimagingdata/findingmodel/blob/1942b06a/docs/adr/0002-split-agent-assignment-architecture.md + title: "ADR 0002, split agent assignment architecture, findingmodel feature/metadata-cleanup at 1942b06" + last_modified: 2026-06-23 + - id: human-review + resource: https://github.com/openimagingdata/findingmodel/blob/1942b06a/docs/metadata/enrichment/human-review-and-writeback.md + title: "Human review and writeback, findingmodel feature/metadata-cleanup at 1942b06" + last_modified: 2026-06-23 + - id: staging-readme + resource: https://github.com/openimagingdata/CDEStaging/blob/b814a102655054ac08b3c118cb1977a387655a8b/README.md + title: "CDEStaging README at b814a10" + last_modified: 2025-12-01 + - id: staging-extraction + resource: https://github.com/openimagingdata/CDEStaging/blob/b814a102655054ac08b3c118cb1977a387655a8b/docs/report_extraction_process.md + title: "Report extraction process, CDEStaging at b814a10" + last_modified: 2025-12-01 + - id: staging-catalogs + resource: https://github.com/openimagingdata/CDEStaging/tree/b814a102655054ac08b3c118cb1977a387655a8b/report_representation + title: "Negative statements, uncovered findings, and missing attributes catalogs, CDEStaging at b814a10" + last_modified: 2025-12-01 + - id: board-role-tagging + resource: internal project board, not published + title: "Open Imaging Data Model project board (internal), undated; schema idea only" + - id: status-deck-2026-01 + resource: sources/gamma-2026-status-update.md + title: "Open Imaging Data Model 2026 Status Update, January 2026, extract" + last_modified: 2026-01-01 + - id: ipl-webinar + resource: sources/bucket/text/ipl-webinar-deck.md + title: "The Imaging Problem List as an Accelerator for Radiology AI Applications, SIIM Enterprise Imaging webinar, 15 July 2026" + last_modified: 2026-07-15 +--- + +# The project's position + +The project lead ruled on 2026-09-22, in the working notes both drafting sessions share: + +> "A 'CDE' and a 'Finding Model' are the same thing, but they're in different repos. Open Imaging Finding Models are in the OIDM-maintained repo, and are intended to be very INCLUSIVE, can almost be drafts. Common Data Elements live in the ACR/RSNA repository, and are intended to be WELL-REVIEWED. They're more like something published. They BOTH should soon be using the schema and classes being defined in the CDE schema re-write, with FindingClass, DataElement, Measurement, etc."[^joint-notes] + +And, in the same set of decisions: + +> "OIFMs VERY soon need to get re-organized around the graph-based approach we're developing in the next-gen-schema effort in CDEs. They're currently document-oriented and we need to fix that SOON."[^joint-notes] + +The common model is explained once here. Inclusive and well-reviewed describe *collections*, not items: nothing here says a given [finding model](../glossary/finding-model.md) is a draft, or a given [CDE set](../glossary/cde-set.md) well reviewed. Both the shared schema and the reorganization are stated intent, the latter a change of organization rather than added fields, and no migration is done. + +# The common graph + +Both collections are meant to converge on the next-generation CDE vocabulary on the `next-gen-2026` branch of `ACR-RSNA-CDEs`, at commit `44836c1` of 2026-09-15. These structures "capture our working ideas and prototype choices, not a settled model."[^cde-03] The branch's decision record marks provenance; two labels are carried here. **OWNER**: the project lead stated it, quoted verbatim. **CLAUDE DEFAULT**: an assistant chose it, unreviewed.[^cde-10] + +## Node types + +| Node type | What it is, and its status in the source | +|---|---| +| [FindingClass](../glossary/finding-class.md) | the named thing a report describes, carrying an `entity_type`; working proposal, exercised as graph data | +| Diagnosis | a separate node type (external reviewer, 2026-08-25); only which relationships it can source distinguishes it | +| Grouping | negative-only nodes such as `renal abnormality`, parenting findings and diagnoses; OWNER inclination | +| [DataElement](../glossary/data-element.md) | a categorical descriptor with an explicitly ordered or unordered value set | +| [Measurement](../glossary/measurement.md) | a quantitative descriptor with quantity type, units, optional method; a distinct type (OWNER) | +| [AssessmentScheme](../glossary/assessment-scheme.md) | a scheme whose dimensions are linked DataElements (OWNER) | + +Values are first-class, their ids derived from their element; [anatomic locations](../glossary/anatomic-location.md) are keyed by RadLex identity; standard clinical metadata values are shared concept nodes, not free text (OWNER).[^cde-03][^cde-10] + +## Edges are the content + +The draft heads its edge section "Edges — the actual content of the model."[^cde-03] An [element binding](../glossary/element-binding.md) runs from a FindingClass, or directly from an AnatomicLocation, to a DataElement, and may restrict that use to a subset of the element's values without changing the shared element (OWNER), a restriction on meaning rather than presentation. There are no required elements: OWNER, "THERE IS NO SUCH THING AS A REQUIRED ELEMENT."[^cde-10] Reuse is in-degree; and a location binding elements directly (OWNER) lets normal anatomy be described with no FindingClass.[^cde-03][^cde-01] + +An Open Imaging Data Model project board approaches reuse from the consuming side, proposing **role tagging**: tag each element definition with a standard SNOMED or RadLex code naming its role or purpose — presence, location, size and its several measures such as diameters, volumes and segmentation data, modality-specific measures such as radiodensity, echogenicity and MR signal, and contrast behavior — so a consuming system can find the right element across CDE sets by role, looking up the element carrying the SNOMED code for volume measurement instead of hard-coding set-specific element identifiers. A working proposal, undated, no implementation cited.[^board-role-tagging] The next-generation graph reaches reuse by another route, one shared DataElement node bound by many classes;[^cde-03] no source says the two were coordinated. + +## Anatomic scope, not location + +**Anatomic scope** is the project lead's agreed term of 2026-09-10 for "the statement of where a kind of finding belongs, which may be a place (kidney) or a kind of structure (muscle, not otherwise specified)."[^cde-10][^cde-context] "Location" is the wrong word, the requirements document argues, because the statement ranges over three kinds of thing and only two are spatial: a named structure checked by identity or descent, a region checked by containment, and a structure type such as tendons checked taxonomically, "not spatial at all." Its strength varies too.[^cde-01] A class is scoped to the unsided organ while a specific [Observation](../glossary/observation.md) sits in a sided one, the is-a relation satisfying the scope (OWNER).[^cde-10] Two scope families, tissue types and structure types, are to be developed (OWNER); the taxonomic kind waits on an is-a relation the data lacks.[^cde-11] + +## The relationship family and the derived differential + +A catalog called "tentative, explicitly non-comprehensive" proposes seven relationship pairs plus a catch-all: subtype, component, causation, manifestation, co-occurrence, progression, assessment. Manifestation and causation stay strictly apart — a striated nephrogram *is* pyelonephritis appearing on imaging, while a renal abscess is a second entity it produced — tested by whether a clinician would say the source "got better" or "a complication resolved." Manifestation edges take two optional properties: a typicality scale adopted verbatim from the HPO and Orphanet frequency scale, and a three-value specificity scale omitted when uninformative, an absent property meaning no judgment was recorded. The differential is a derived view, not an edge type: the diagnoses reachable over the manifestation inverse, on the Radiology Gamuts Ontology's precedent.[^cde-07] Whether the causal pair takes typicality is a CLAUDE DEFAULT; an `expected` property on causal edges, a CLAUDE INVENTION.[^cde-10][^cde-08] + +The finding-model side proposes the same mechanism differently: an April 2026 source-schema draft has a model store only the assertions authored on it, tooling deriving the inverse and symmetric views from a registry of relationship types.[^oifm-v2-draft] Verified on 2026-09-01, that registry exists only in the draft and the live corpus "implements no relationship mechanism at all."[^cde-07] + +## Assessments, components, and measurements + +A scoring system is a valid definition but a different one from what it scores: a nodule model captures what the nodule looks like and a Lung-RADS model the risk category, because different radiologists can describe the same nodule identically and assign different categories.[^oifm-prompts] That is an `assessment` value in the metadata entity-type enumeration today;[^metadata-prompts] in the next-generation design it is its own definition type with edges to ordinary DataElements (OWNER).[^cde-10][^cde-07] + +An independence test separates components from associated findings. An **associated finding** has its own lifecycle — pneumonia and pleural effusion each occur alone — and is one multichoice attribute, presence-level only, its values naming real finding models. A **component** is an intrinsic part, such as the solid component of a mixed pulmonary nodule, extracted into its own model.[^oifm-prompts] The chest CT content branch forbids an associated-findings attribute outright, contradicting that rule.[^chestct-spec] The next-generation design moved twice: one component relationship carrying counts, with the terms **component-of scope** and **lesion family** (OWNER, September 2026), then on 2026-09-16 withdrawn for the external reviewer's two edges.[^cde-10][^cde-context] + +Measurement, method, and interpretation are three things. "Peak systolic velocity is 350 cm/s" and "this represents hemodynamically significant stenosis" have different truth conditions, and the reason given for separating them is durability: thresholds move while measurands do not, so a stored interpretation becomes wrong when criteria are revised. Confidence belongs to the interpretation, and measurements must stand alone.[^cde-01][^cde-10] + +## What the graph should carry for a finding + +Three sources say what a definition carries beyond its elements: + +| Source, dated | What it says | +|---|---| +| Next-generation vocabulary, OWNER term of 2026-09-10 | **Standard clinical metadata**, seven facts on a class: modality, body region, subspecialty, sex, age, time course, etiology — edges to shared concept nodes, three of them RadLex nodes and the rest on provisional codes (OWNER)[^cde-10][^cde-03] | +| SIIM Enterprise Imaging webinar, 15 July 2026 | Four dimensions that let an agent judge whether a finding *should still be there* on a new exam: where it is anatomically, what type it is, how long it lasts, whether it is transient or permanent — "the forward, AI-populated schema, not yet carried by the published definitions"[^ipl-webinar] | +| Metadata rewrite in `findingmodel`, metadata branch | Eight optional fields — body regions, subspecialties, etiologies, entity type, applicable modalities, expected time course, age profile, sex specificity — typed on the model classes, making metadata "canonical `FindingModel` state rather than disposable enrichment output"[^metadata-rewrite] | + +# The two collections today + +## The two formats + +A finding model is one JSON document: identifier, name, description, and attributes, plus optional synonyms, tags, contributors, and index codes. An attribute is either a choice attribute, whose values each carry their own code, or a numeric attribute with bounds and a unit.[^oifm-schema] Identifiers carry provenance — `OIFM_{ORG}_{six digits}` for a model, `OIFMA_{ORG}_{six digits}` for an attribute — the middle segment naming the contributing organization, so institutions mint independently.[^oifm-metadata-fields][^ids-json] The published [CDE set](../glossary/cde-set.md) is the corresponding container: an `RDES` identifier, descriptive and governance fields, and its elements; a [CDE element](../glossary/cde-element.md) carries an `RDE` identifier, its parent set, a definition and question, and either an enumerated value set or a numeric range.[^cde-schema] + +The published finding model is lean: the eight metadata fields above are typed on the development and metadata branches and absent from the released one, whose readiness assessment is recorded as not yet passing.[^metadata-rewrite] They are specified by the near-miss they exclude: subspecialty is which service would *read and report* the finding, not which orders the study; expected time course is how long a finding stays visible on imaging, "not the clinical duration of the underlying disease."[^metadata-fields-doc] An [index code](../glossary/index-code.md) must be an exact match or clinically substitutable near-equivalent for the whole model concept — policy carried by prompts and review, enforced nowhere at runtime.[^metadata-rewrite] + +## How they correspond + +By design: a finding model to a CDE set, an attribute to an element, choice values to a value set, index codes the join. In practice it runs one way. 115 of 2,382 finding models carry the `CDE` organization code, with a contributor record naming the ACR/RSNA project and a RadElement index code pointing at their set.[^ids-json] + +The January 2026 status deck calls this "OIFM: the CDE workbench," a proving ground whose exploratory metadata "can graduate to standards."[^status-deck-2026-01] The CDE branch states the other half: the finding model effort "is roughly one iteration ahead," its models "can be treated as drafts for this project's FindingClasses," and bringing them over "is a review step, not a bulk import." How the crossover works is open between a shared identity space and a maintained crosswalk, and the document chooses neither.[^cde-00] + +Coverage is measured by running real reports against the definitions. The staging repository calls itself "a staging area for definitions ... prior to their entering the review pipeline," and its extraction note works one report into mini-observations.[^staging-readme][^staging-extraction] Three catalogs record what the definitions could not carry — composite negative statements, uncovered findings, missing attributes — dated 2024 to 2025, with no recorded disposition.[^staging-catalogs] + +# What the inclusive collection holds, and where it is going + +The corpus merges uneven provenance streams. From the identifier registry, 2,382 models come from five sources: 1,933 derived from the Radiology Gamuts Ontology, 256 authored by the project, 115 from ACR and RSNA common data elements, 47 from an institutional contributor, 31 from a vendor.[^ids-json] The cleanup plan traces nine mechanical defect classes to specific streams and notes that some Gamuts-derived entries are differential patterns, not findings.[^cleanup-plan] + +The **MGB exam-oriented sub-taxonomies** are the immediate content direction: six per-exam-context finding hierarchies — chest radiograph, musculoskeletal radiograph, head CT, chest/abdomen/pelvis CT, mammography, spine MRI — 3,789 rows, each naming its parent, with "Parents are generic, children add specificity," and an anatomic category as an independent grouping. They double as a coverage ledger: an identifier is filled only where a row matched an existing model by exact name, and "Nothing was minted here." 1,028 rows matched, unevenly — 305 of 403 for chest radiographs against 5 of 198 for mammography — and "Blank rows are the ones needing triage."[^lists-readme] The project lead stated on 2026-09-21: "the immediate direction for all of the content, probably replacing a lot of the Gamuts-based models."[^build-plan] Converting an outside set is a merge with a fixed direction, incoming definitions merging into the corpus and never the reverse, guarded against matching a specific incoming term to a general model; six of twenty-one chunks are converted.[^chestct-spec] The content effort also feeds requirements upstream, a proposals document sizing each entry to one issue on an evidence base of a fourteen-model test batch and a review pass.[^upstream-proposals] + +# Authoring and review + +Operational definitions live in prompt fragments and skill files.[^oifm-prompts][^oifm-skills] + +| Principle | What the sources say | +|---|---| +| What counts as a finding | Would a radiologist write "there is [X]" or "no [X]" as a standalone statement? Devices, postsurgical states, variants and diagnoses count; a state of a finding, a qualified version of another, normal anatomy and radiographic signs do not. | +| Description and diagnosis both count | "Do not question whether a diagnosis 'should' be a finding." Three representations coexist: a `finding_type` column,[^lists-readme] an `entity_type` enumeration,[^metadata-prompts] and a separate Diagnosis node type whose taxonomy rule moved twice (OWNER, September 2026).[^cde-10] | +| Specificity and splitting | Compound names split when one part can be present without the other; a subtype earns its own model when it needs different attributes, so "tension pneumothorax" is not a value on pneumothorax. | +| Negative assertion, presence, change | Broad scoped findings exist so absence can be asserted against something, scoped by what the exam assesses; presence and change from prior are every model's first two attributes. | +| Synonyms | Collection is aggressive, but each must mean the same thing at the same level of specificity: "a bad synonym doesn't just fail to match — it matches the *wrong thing*." | +| Naming | Lowercase with spaces, acronyms expanded and kept as synonyms, eponyms minimized, brand names replaced, and a real anatomic anchor. | +| Stubs, then iteration | Names come from an ontology, from experts, and from a model reading report text; each becomes a stub, gets an identifier at once, and is improved later. | +| Triage before create | Two or three complementary searches run per candidate; the agent judges the pooled results and reports an exact match, no match, or true ambiguity. "Do not forward raw result lists to the user." | +| Review in three tiers, with context isolation | A deterministic linter, then a language-model review applying a checklist the linter deliberately does not attempt, then mandatory human sign-off, with "each finding drafted and reviewed by a fresh sub-agent with no exposure to its neighbors."[^oifm-skills] | +| Prompts as loadable fragments | Skill files are "pure orchestration," and the sizing is measured: instruction-following degrades as instructions accumulate, and prompt middles get less attention than either end. The team read its own review agent as "deep in degradation territory."[^prompt-research] | +| Focused assignment | Seven narrow agents assign metadata under an orchestrator that never decides a field value; search agents propose, assignment agents dispose. A final pass audits rather than enforces, and null is legitimate.[^adr-0002] | +| Human review is the only authority | Only approved records are written back; sub-agent triage is not authority, and generated diffs are not gold.[^human-review] | + +[^joint-notes]: Restructure joint working notes, the project lead's decisions of 2026-09-22 +[^build-plan]: Knowledgebase build plan, the project lead's content direction of 2026-09-21 +[^cde-00]: Next-Generation CDE Schema: Current Understanding, ACR-RSNA-CDEs next-gen-2026 at 44836c1 +[^cde-01]: What the Vocabulary Must Express, ACR-RSNA-CDEs next-gen-2026 at 44836c1 +[^cde-03]: Draft Structures for Worked Examples, ACR-RSNA-CDEs next-gen-2026 at 44836c1 +[^cde-07]: The Finding and Diagnosis Relationship Family, ACR-RSNA-CDEs next-gen-2026 at 44836c1 +[^cde-08]: Worked Examples, ACR-RSNA-CDEs next-gen-2026 at 44836c1 +[^cde-10]: Decision Record, 2 to 15 September 2026, ACR-RSNA-CDEs next-gen-2026 at 44836c1 +[^cde-11]: The Anatomy Axis, Current State, ACR-RSNA-CDEs next-gen-2026 at 44836c1 +[^cde-context]: CDE vocabulary, CONTEXT.md, ACR-RSNA-CDEs next-gen-2026 at 44836c1 +[^cde-schema]: cde.schema.json, ACR-RSNA-CDEs at 44836c1 +[^oifm-metadata-fields]: Finding Model Structured Metadata Fields, ACR-RSNA-CDEs next-gen-2026 at 44836c1 +[^oifm-v2-draft]: FindingModel Source Schema v2 Draft, April 2026, copied on ACR-RSNA-CDEs next-gen-2026 at 44836c1 +[^oifm-schema]: Finding Model Schema, findingmodels taxonomy-export-2026-08-15 at a30c3c9 +[^ids-json]: ids.json, findingmodels taxonomy-export-2026-08-15 at a30c3c9 +[^lists-readme]: Exam-oriented finding taxonomies README, findingmodels taxonomy-export-2026-08-15 at a30c3c9 +[^cleanup-plan]: Definition Cleanup Plan, findingmodels taxonomy-export-2026-08-15 at a30c3c9 +[^upstream-proposals]: Candidate upstream issues for the findingmodel library, findingmodels at a30c3c9 +[^oifm-prompts]: Authoring prompt fragments, findingmodels taxonomy-export-2026-08-15 at a30c3c9 +[^oifm-skills]: finding-author, finding-batch, and finding-review skill files, findingmodels at a30c3c9 +[^prompt-research]: Prompt Length and Instruction Complexity, 2026-03-22, findingmodels at a30c3c9 +[^chestct-spec]: Chest CT conversion project specification, findingmodels content/chestcts at 0472a46 +[^metadata-rewrite]: Canonical Structured Metadata and Enrichment Rewrite, findingmodel feature/metadata-cleanup at 1942b06 +[^metadata-fields-doc]: Subspecialty policy and field standards, findingmodel feature/metadata-cleanup at 1942b06 +[^metadata-prompts]: Metadata assignment prompts, findingmodel feature/metadata-cleanup at 1942b06 +[^adr-0002]: ADR 0002, split agent assignment architecture, findingmodel feature/metadata-cleanup at 1942b06 +[^human-review]: Human review and writeback, findingmodel feature/metadata-cleanup at 1942b06 +[^staging-readme]: CDEStaging README at b814a10 +[^staging-extraction]: Report extraction process, CDEStaging at b814a10 +[^staging-catalogs]: Negative statements, uncovered findings, and missing attributes catalogs, CDEStaging at b814a10 +[^board-role-tagging]: Open Imaging Data Model project board (internal), undated; schema idea only +[^status-deck-2026-01]: Open Imaging Data Model 2026 Status Update, January 2026 +[^ipl-webinar]: SIIM Enterprise Imaging webinar, 15 July 2026 diff --git a/knowledge/drafts/foundation-context.md b/knowledge/drafts/foundation-context.md new file mode 100644 index 0000000..f1bc6f3 --- /dev/null +++ b/knowledge/drafts/foundation-context.md @@ -0,0 +1,60 @@ +--- +type: Overview +title: Foundation Context +description: The shared, non-patient-specific layer of definitions, relationships, and citations that imaging results point into, and the work of building its content. +tags: [foundation-context, semantic-foundation, siim-2026, overview] +status: draft +generated: { by: claude-opus-5/2026-09-22-restructure/draft-foundation, at: 2026-09-22T00:00:00Z } +sources: + - id: siim2026 + resource: sources/bucket/text/siim2026-reports-of-the-future.md + title: "Structured Results and Context for Next-Generation Imaging Resulting Tools: Creating the Reports of the Future. SIIM 2026 annual meeting talk, June 2026, Mass General Brigham" + last_modified: 2026-06-01 + - id: joint-notes + resource: docs/plans/restructure-joint-notes.md + title: "Restructure joint working notes, carrying the project lead's decisions of 2026-09-22" + last_modified: 2026-09-22 + - id: cde-context + resource: https://github.com/RSNA/ACR-RSNA-CDEs/blob/44836c19f4e025cf1684a015ed5cc63c29eaf7f3/CONTEXT.md + title: "CDE vocabulary, CONTEXT.md, ACR-RSNA-CDEs next-gen-2026 branch at 44836c1, 2026-09-15" + last_modified: 2026-09-15 +--- + +# The two halves + +The SIIM 2026 annual meeting talk opens on "the two halves that make next-gen tools work: the structured result, and the knowledge to interpret it," and names them **Patient Context**, one patient's imaging results and the clinical context around them, and **Foundation Context**, the one layer of definitions, relationships and citations that every patient's results point into, openly authored, versioned, and not patient-specific.[^siim2026] The [introduction](./introduction.md) sets the two side by side in full. + +# What this pillar covers + +The project lead's decision of 2026-09-22 sets the boundary, and it is wider than a schema: Foundation Context "includes both the schema/meta-definitions as well as the efforts to build out content."[^joint-notes] Both halves are on this reading path — the shape a definition takes, and the work of writing definitions. + +# The stated motivation + +The deck's pivot slide states the gap in the structured record. A structured [Observation](../glossary/observation.md) — pulmonary nodule, present — "says it exists, where, and on what exam." It does not say how it associates with other findings, how it is potentially precancerous, which prior exams could show it, what the implications are, or what else it could be. Answering those five questions "needs background knowledge of anatomy, pathology, and imaging technique — knowledge that isn't in the patient's record."[^siim2026] + +# Three axes, each layered over a standard + +The deck gives Foundation Context three axes, each "an OIDM layer over" something that already exists, "adding imaging-specific knowledge on top of existing standards rather than reinventing them."[^siim2026] + +| Axis | The deck's question | Layered over | +|---|---|---| +| Finding definitions — the deck's own label for this axis is "Observation Type" | WHAT was found | CDE and OIFM definitions | +| Anatomic Location | WHERE it is | a RadLex-anchored body map | +| Exam Type | HOW it was seen | LOINC and RadLex Playbook study types | + +The deck calls what runs between and out of the axes "the connective tissue": within-axis relationships (parent and child types; causes and caused_by; confused_with, occurs_with), cross-axis statements (anatomy limits on a finding definition, exam-type anatomy associations, modalities), and external citations to Radiopaedia and Wikipedia plus references to SNOMED, RadLex, LOINC, FMA, ICD, and CPT.[^siim2026] The next-generation CDE vocabulary states the same posture for its own terms, and adds that they "express our current ideas for the reviewer's foundation, not a jointly settled integration model."[^cde-context] + +# How data structures reach it + +The deck keeps the Observation "deliberately small — codes, not knowledge." It carries a semantic tag, "a CDE-style definition (today an OIFM Finding Model)," plus presence, change from prior, and characterization attributes. "A code on an Observation is a pointer into one of these axes — the axes also point to each other, and out to external references." The resolution step is where the knowledge arrives: "Resolve, don't reinvent," code to pointer to resolve, with "OIDM SDKs make resolution easy and standardized — every app pulls the same context the same way." The deck's worked figure resolves one Observation to the finding definition for radiodense urinary calculus (`OIFM_GMTS_020556`), which "may cause" hydronephrosis (`OIFM_OIDM_874812`), each occurring at kidney (`RID205`) and renal pelvis (`RID228`), the renal pelvis part of the kidney.[^siim2026] + +# Child sections + +* [Finding models and CDEs](./finding-models-and-cdes.md) - the common graph, the two collections that hold it today, what the inclusive collection contains, and the authoring and review principles behind it. +* [Anatomic locations](./anatomic-locations.md) - the WHERE axis: containment, part-of, laterality, and the overlay on RadLex. +* [Exam types](./exam-types.md) - the HOW SEEN axis: exam families over the LOINC and RadLex Playbook, and their anatomy edges. +* [Standards the foundation layers over and cites](./standards.md) - RadLex, SNOMED CT, FMA, LOINC and the Playbook, and the role each plays. + +[^siim2026]: SIIM 2026 annual meeting talk, June 2026, Mass General Brigham +[^joint-notes]: Restructure joint working notes, the project lead's decisions of 2026-09-22 +[^cde-context]: CDE vocabulary, CONTEXT.md, ACR-RSNA-CDEs next-gen-2026 branch at 44836c1 diff --git a/knowledge/drafts/index.md b/knowledge/drafts/index.md index a3df590..2383658 100644 --- a/knowledge/drafts/index.md +++ b/knowledge/drafts/index.md @@ -4,9 +4,13 @@ Staging area for the restructure agreed on 2026-09-22 (see `docs/plans/restructu Planned files, each session adding its link line when the file exists: -- `introduction.md` (whichever session gets there first) -- `foundation-context.md` (Claude), with child sections `finding-models-and-cdes.md`, `anatomic-locations.md`, `exam-types.md`, `standards.md` -- `sdks.md` (Claude) -- `data-structures.md` (Codex) -- `use-cases.md` (Codex) -- `sample-applications.md` (Codex) +* [Introduction](./introduction.md) - What the Open Imaging Data Model is, the two contexts it distinguishes, the five pillars of the work, and how the project expects agreement to happen. +* [Foundation Context](./foundation-context.md) - The shared, non-patient-specific layer of definitions, relationships, and citations that imaging results point into, and the work of building its content. +* [Finding models and CDEs](./finding-models-and-cdes.md) - One content in two collections - the common graph being drafted for both, the OIFM and RadElement formats that hold it today, what the inclusive collection contains, and the authoring and review principles behind it. +* [Anatomic locations](./anatomic-locations.md) - The curated anatomic location index as a reference layer - identity, containment, part-of, laterality, synthetic terms, curation rules, the RadLex overlay, and the two dated implementations. +* [Exam types](./exam-types.md) - A stated goal with no artifact - preferred high-level exam entries over the LOINC/RSNA Radiology Playbook, the Playbook properties they would expose, and the anatomy coverage edges in the project lead's two dated phrasings. +* [Standards the foundation layers over](./standards.md) - Which existing standard each Foundation Context axis layers over, the role each terminology plays, the external citations the deck names, and search recall as the gate. +* [SDKs](./sdks.md) - The tools that wrap the data structures and resolve their codes into Foundation Context, plus the libraries that help author that context. +* [Data Structures](./data-structures.md) - Observations connect a patient's imaging results to shared definitions and to one another across reports and examinations. +* [Use Cases](./use-cases.md) - Proposed reporting assistance, longitudinal care, outcome tracking, and information products built on OIDM context and structures. +* [Sample Applications](./sample-applications.md) - Applications that author shared definitions, display imaging histories, extract and review findings, and demonstrate structured exchange. diff --git a/knowledge/drafts/introduction.md b/knowledge/drafts/introduction.md new file mode 100644 index 0000000..2402596 --- /dev/null +++ b/knowledge/drafts/introduction.md @@ -0,0 +1,106 @@ +--- +type: Overview +title: Introduction +description: What the Open Imaging Data Model is, the two contexts it distinguishes, the five pillars of the work, and how the project expects agreement to happen. +tags: [overview, orientation, foundation-context, patient-context] +status: draft +generated: { by: claude-opus-5/2026-09-22-restructure/draft-intro, at: 2026-09-22T12:53:46Z } +sources: + - id: owner-notes + resource: Project lead's notes on the revised Imaging Problem List manuscript, 2026-09-19, sources/email/2026-09-19-ipl-manuscript-notes.md + title: Structures versus transport, and what OIDM defines, 2026-09-19 + - id: siim-deck + resource: https://oidm-public.t3.tigrisfiles.io/oidm-knowledge-sources/SIIM%202026%20Reports-of-the-Future.pptx + title: "Structured Results and Context for Next-Generation Imaging Resulting Tools, SIIM 2026 annual meeting talk, June 2026, Mass General Brigham" + - id: jan-deck + resource: https://gamma.app/docs/Open-Imaging-Data-Model-2026-Status-Update:-Realizing-Object-Oriented-Imaging-Results-yfxzx4q9zssafal + title: Open Imaging Data Model 2026 Status Update, January 2026 + - id: site-about + resource: https://www.openimagingdata.org/ + title: openimagingdata.org, project site and tagline + - id: site-findings + resource: https://www.openimagingdata.org/findings-cdes-and-observations/ + title: "Findings, CDEs, and Observations, 2023-06-24" + - id: site-data-model + resource: https://www.openimagingdata.org/data-model-structure-and-function/ + title: "Data Model: Structure and Function, 2024-01-25" + - id: site-benchmarking + resource: https://www.openimagingdata.org/benchmarking-a-vision/ + title: "Benchmarking a Vision, 2024-07-01" + - id: joint-notes + resource: docs/plans/restructure-joint-notes.md + title: Restructure joint working notes, the project lead's decisions of 2026-09-22 + - id: build-plan + resource: knowledge/plans/2026-09-20-knowledgebase-build-plan.md + title: Knowledgebase build plan, decisions added 2026-09-21 +--- + +# What OIDM is + +The Open Imaging Data Model (OIDM) defines, in the project lead's words of 2026-09-19, "a system of defined data structures for representing imaging exam result information", "intended to be used within applications to both read and create result data".[^owner-notes] The project site states the purpose as "defining unified data structures to integrate new functionality into imaging informatics platforms". The January 2026 status update titles the goal "Realizing Object-Oriented Imaging Results" and calls it "standardizing the DNA of imaging IT".[^site-about][^jan-deck] + +The June 2026 talk states why the result should be data. A finished report "is where the value should begin": a report's findings are written for a human reader, then locked in narrative text. Structuring them makes them reusable in two directions — forward to clinicians, "driving treatment decisions, follow-up, and care coordination", and forward to the next radiologist reading the subsequent exam, "what was there before, where, and whether it changed".[^siim-deck] + +That talk was given from Mass General Brigham. The finding definitions the model points at exist in two collections: the inclusive collection the Open Imaging Data Model organization maintains on GitHub, and the well-reviewed Common Data Element collection of the American College of Radiology and the Radiological Society of North America. The January 2026 update describes the first as a "workbench", a "proving ground before ACR/RSNA CDE adoption".[^jan-deck][^joint-notes] + +# The two contexts + +The June 2026 talk names the two halves that next-generation tools need: "the structured result, and the knowledge to interpret it."[^siim-deck] + +| | Patient Context | Foundation Context | +|---|---|---| +| Scope | One per patient | One layer shared by every patient | +| Contents | Observations, Exam Finding List, Imaging Problem List | Definitions, relationships, citations | +| How it changes | With the patient's clinical evolution | By open authoring and versioning | +| Privacy | Protected health information | Open, not patient-specific | +| Example | "8 mm nodule, RUL, new" | "what a pulmonary nodule is" | + +The two are joined by their codes. The talk presents Foundation Context as three curated axes — what was found, where it is, how it was seen — and states the join: "A code on an Observation is a pointer into one of these axes — the axes also point to each other, and out to external references."[^siim-deck] (The deck's tentative name for the first axis is "Observation Type"; its notes say the ACR/RSNA elements "may carry" that name later.) The relationships on each side are different in kind. Between definitions, a relationship is a standing possibility, as in the talk's worked figure where a radiodense urinary calculus "may cause" hydronephrosis. Between observations, a relationship is what this radiologist asserted about these particular observations on this exam. [Data Structures](./data-structures.md) explains the two graphs and how they work together; this page only previews them. + +# What a structured Observation cannot answer + +The talk's pivot is that "the structures identify — but they don't explain." A structured Observation, "pulmonary nodule, present", says it exists, where, and on what exam. It does not say:[^siim-deck] + +- How does it associate with other findings? +- How is it potentially precancerous? +- Which prior exams could show it? +- What are the implications? +- What else could it be? + +"Answering these needs background knowledge of anatomy, pathology, and imaging technique — knowledge that isn't in the patient's record."[^siim-deck] That is the stated motivation for Foundation Context. + +# The five pillars + +The project lead named five parts of the work on 2026-09-22, to be used by name.[^joint-notes] + +- **[Foundation Context](./foundation-context.md)**, the semantic layer, "includes both the schema/meta-definitions as well as the efforts to build out content." +- **[Data Structures](./data-structures.md)**, "most ESPECIALLY in the Observation layer, and how there are two graphs and they work together." +- **[SDKs](./sdks.md)**, "the tools that wrap the data structures and enable developers working in the application layer to manipulate instances in real-world applications (and some around helping with definition of the foundation context, obviously)." +- **[Use Cases](./use-cases.md)**, "Imaging all the different kinds of applications/tools/plugins/output products we could create using an ecosystem built around this foundation." +- **[Sample Applications](./sample-applications.md)**, "ACTUAL sample applications we've created to try to illustrate some of these ideas." + +# Structure first, transport after + +The structures are defined for use inside applications, and are not a transport definition. The project lead's 2026-09-19 notes state that they are "NOT a transport definition (not FHIR, not DICOM)", that they may eventually need FHIR expressions to travel, and that designing for that possibility is "completely separate from the definition of the structures applications manipulate". The stated reason to agree on the structures is that agreed structures make it easier to agree on what must be conveyed between systems, and that they guide the design of the FHIR profiles and related artifacts that inter-process communication will need.[^owner-notes] The January 2026 call to action puts the same ordering as "structure-first (then FHIR etc.)".[^jan-deck] + +Earlier project statements put the structures and their FHIR expression together rather than apart. The founding site post of 2023-06-24 represents a finding as a FHIR Observation labeled with Common Data Element identifiers.[^site-findings] The 2024-01-25 post proposes structures over FHIR definitions for programmatic access and offers an analogy: "the relationship between OIDM and FHIR might be that between the browser's DOM and HTML."[^site-data-model] The 2024-07-01 post announces a manuscript presenting CDE-labeled FHIR Observations as the universal representation for exchanging and consuming report content.[^site-benchmarking] [Data Structures](./data-structures.md) carries the current mapping status. + +# Nothing is formally defined yet + +The project is in a coalescing phase, and nothing is formally defined. This knowledgebase presents each source's current version of a structure beside the others, dated and attributed, and states disagreements without resolving them. No source here is called the specification or the canonical model.[^build-plan] + +How agreement is meant to happen is itself a proposal. The January 2026 call to action names an ACR-OIDM Structured Imaging Results Working Group, co-hosted with the American College of Radiology, "vendor-driven", with next steps to "host/moderate academic-vendor big tent; use-case pipeline -> CDE group; standardize the result". It names ACR priorities as recommendation tracking, AI validation, quality metrics, and *-RADS support.[^jan-deck] No source read records the working group as convened. + +# The ask + +The June 2026 talk closes with three requests: contribute or propose finding definitions (the talk's wording is "Observation Type definitions"); review AI-generated content and connections; build against the SDKs.[^siim-deck] + +[^owner-notes]: The project lead, 2026-09-19, points 3, 4, and 5 of the notes on the revised Imaging Problem List manuscript. Held in the local source collection. +[^siim-deck]: SIIM 2026 annual meeting talk, June 2026, Mass General Brigham; slides 1, 3, 6, 7, 8, 12, 14, and 15 with their speaker notes. +[^jan-deck]: Open Imaging Data Model 2026 Status Update, January 2026: executive summary, strategic pillars, the CDE workbench section, and the call to action. +[^site-about]: openimagingdata.org, project site tagline, read 2026-09-21. +[^site-findings]: "Findings, CDEs, and Observations", openimagingdata.org, 2023-06-24. +[^site-data-model]: "Data Model: Structure and Function", openimagingdata.org, 2024-01-25. +[^site-benchmarking]: "Benchmarking a Vision", openimagingdata.org, 2024-07-01. +[^joint-notes]: Restructure joint working notes, "Decisions of 2026-09-22", items 1 and 2, quoting the project lead. +[^build-plan]: Knowledgebase build plan, "Decisions added 2026-09-21", the "No specification exists" row. diff --git a/knowledge/drafts/sdks.md b/knowledge/drafts/sdks.md new file mode 100644 index 0000000..0de3ab7 --- /dev/null +++ b/knowledge/drafts/sdks.md @@ -0,0 +1,141 @@ +--- +type: Concept +title: SDKs +description: The tools that wrap the data structures and resolve their codes into Foundation Context, plus the libraries that help author that context. +tags: [sdks, foundation-context, findingmodel, anatomic-locations, terminologies] +status: draft +generated: { by: claude-opus-5/2026-09-22-restructure/draft-sdks, at: 2026-09-22T13:20:00Z } +stale_after: 2027-09-22 +sources: + - id: notes + resource: Joint working notes for the restructure, docs/plans/restructure-joint-notes.md + title: "Decisions of 2026-09-22: the five pillars, in the project lead's words" + - id: siim + resource: https://oidm-public.t3.tigrisfiles.io/oidm-knowledge-sources/SIIM%202026%20Reports-of-the-Future.pptx + title: SIIM 2026 annual meeting talk, June 2026, Mass General Brigham, slides 13-15 + - id: gamma + resource: https://gamma.app/docs/Open-Imaging-Data-Model-2026-Status-Update-Realizing-Object-Oriented-Imaging-Results-yfxzx4q9zssafal + title: Open Imaging Data Model 2026 Status Update, January 2026, applications pillar and call to action + - id: fm-readme + resource: https://github.com/openimagingdata/findingmodel/blob/75afd39a400419dcfaf7c8d4a34f065b4d804e0d/packages/findingmodel/README.md + title: findingmodel package README, released snapshot 2026-03-04 + - id: fm-mcp + resource: https://github.com/openimagingdata/findingmodel/blob/75afd39a400419dcfaf7c8d4a34f065b4d804e0d/docs/mcp_server.md + title: Finding Model MCP server guide, released snapshot 2026-03-04 + - id: fm-ai + resource: https://github.com/openimagingdata/findingmodel/blob/75afd39a400419dcfaf7c8d4a34f065b4d804e0d/packages/findingmodel-ai/README.md + title: findingmodel-ai package README, released snapshot 2026-03-04 + - id: fm-rewrite + resource: https://github.com/openimagingdata/findingmodel/blob/1942b06a91d6a5c5eefe10f99a7273e41e24be01/docs/canonical-structured-metadata-and-enrichment-rewrite.md + title: Canonical Structured Metadata and Enrichment Rewrite, metadata-cleanup snapshot 2026-06-29 + - id: adr-schema + resource: https://github.com/openimagingdata/findingmodel/blob/1942b06a91d6a5c5eefe10f99a7273e41e24be01/docs/adr/0001-lean-metadata-docs-schema-is-spec.md + title: Architecture decision record 0001, metadata-cleanup snapshot 2026-06-29 + - id: adr-dualdb + resource: https://github.com/openimagingdata/findingmodel/blob/1942b06a91d6a5c5eefe10f99a7273e41e24be01/docs/adr/0003-dual-db-pre-post-metadata-release.md + title: Architecture decision record 0003, metadata-cleanup snapshot 2026-06-29 + - id: al-readme + resource: https://github.com/openimagingdata/findingmodel/blob/75afd39a400419dcfaf7c8d4a34f065b4d804e0d/packages/anatomic-locations/README.md + title: anatomic-locations package README, released snapshot 2026-03-04 + - id: bpi-ts + resource: https://github.com/talkasab/BodyPartIndex.ts/blob/dec578e10293d722e6136802cc5dfda2599f0f45/README.md + title: BodyPartIndex.ts README, last changed 2022-12-18 + - id: bpi-py + resource: https://github.com/talkasab/BodyPartIndex.py/blob/388ae0a6da92f5ee4cf36620bbeeabe223938471/README.md + title: BodyPartIndex.py README, last changed 2024-02-03 + - id: bpi-todo + resource: https://github.com/talkasab/BodyPartIndex.py/blob/388ae0a6da92f5ee4cf36620bbeeabe223938471/TODO.md + title: BodyPartIndex.py open work list, updated 2024-02-03 + - id: molu-readme + resource: https://github.com/openimagingdata/med-ontology-lookup/blob/9cc3eec2c7af32e366e3f05e027b223b4a870077/README.md + title: med-ontology-lookup README, snapshot 2026-09-18 + - id: molu-roadmap + resource: https://github.com/openimagingdata/med-ontology-lookup/blob/9cc3eec2c7af32e366e3f05e027b223b4a870077/docs/product-roadmap.md + title: "Product direction: an agent-ready medical terminology graph gateway, 2026-08-16" + - id: molu-review + resource: https://github.com/openimagingdata/med-ontology-lookup/blob/9cc3eec2c7af32e366e3f05e027b223b4a870077/docs/project-review-and-proposal.md + title: med-ontology-lookup project review and proposal, 2026-09-03 + - id: ipl-issue + resource: https://github.com/openimagingdata/imaging-problem-list/issues/1 + title: "imaging-problem-list issue #1, Create System of Data Models, open and unassigned as of 2026-09-22" + - id: ipl-coding + resource: https://github.com/openimagingdata/imaging-problem-list/blob/36fa30c7383bf687d7bc17815282a93e123a56cb/docs/coding-agent-design.md + title: Coding Agent Design, development snapshot, document last updated 2026-03-16 +--- + +# What an SDK is in this project + +The project lead defined this pillar on 2026-09-22 as "the tools that wrap the data structures and enable developers working in the application layer to manipulate instances in real-world applications (and some around helping with definition of the foundation context, obviously)".[^notes] Some of what sits here serves developers building applications, and some serves the people and agents who author the shared definitions those applications resolve against. + +The June 2026 SIIM talk gives the pillar a single shared job, under the heading "Resolve, don't reinvent": an Observation carries a code, the code is a pointer, and the pointer resolves into Foundation Context. The slide states the goal directly, "OIDM SDKs make resolution easy and standardized — every app pulls the same context the same way", and names two families of consumer. Determinative tools want "reliable, machine-readable rules" for "safety checks, protocoling, quality metrics". Generative agents want "grounding that reduces hallucination" and "a citable, shared context across apps".[^siim] The preceding slide makes the case by example: for a pulmonary nodule, an abdominal aortic aneurysm and a renal calculus, "none of it was in the patient's record — all of it came from resolving the codes, the same way for every finding".[^siim] The talk's closing ask lists three items, the third being "Build against SDKs".[^siim] That is a stated goal as of June 2026, not a description of a finished toolkit. + +The definitions being resolved into are described in [Foundation Context](./foundation-context.md); the structures being wrapped are in [Data Structures](./data-structures.md). + +# Capabilities that exist today + +## Resolving and searching finding models + +The `findingmodel` package gives a developer the finding model format as objects, with identifiers, attributes and index codes on the loaded object, and an index that resolves a name, a synonym or an identifier to a definition. It also ships a Model Context Protocol server that exposes the same index to agents as three tools: search, retrieve by identifier or name, and index statistics. Implemented example, released snapshot 2026-03-04.[^fm-readme][^fm-mcp] + +Over that corpus the team separated three retrieval modes rather than overloading one. Query-driven search combines full-text and vector retrieval, with metadata filters pushed into candidate generation before ranking. Browse is filter-only with pagination, and explicitly replaces an earlier arrangement where an empty search string carried tag filters. Related-model lookup is deterministic with no language model, scoring metadata overlap with configurable weights, anatomic location weighted highest, then index codes, then entity type, then body region and the remaining facets. Filters are OR within a facet and AND across facets, while tags keep all-of semantics. The rewrite document records the weights as provisional and says they "must be tuned against a gold case set before release".[^fm-rewrite] Implemented example on the development and metadata branches, metadata-cleanup snapshot 2026-06-29; absent from the released snapshot. + +## Helping author the Foundation Context + +The same workspace carries the authoring half of the project lead's definition. A developer can generate a finding's basic information from its name, add detail with citations, turn a Markdown outline into a model, and create a stub model to start from. Implemented example, released snapshot 2026-03-04.[^fm-ai] The metadata rewrite adds one entrypoint for metadata assignment that returns the updated model together with a separate review artifact holding raw candidates, normalization notes and review-oriented reasoning; its design rules keep query generation, candidate gathering, normalization and fallback behaviour in code, leaving the model-facing step to classify typed input into typed output. The document records that entrypoint as implemented in the working tree it describes; working proposal, metadata-cleanup snapshot 2026-06-29.[^fm-rewrite] + +Reusable authoring capability belongs here. The content itself, and the rules for reviewing it, are in [Finding models and CDEs](./finding-models-and-cdes.md); the authoring applications built on top are in [Sample Applications](./sample-applications.md).[^notes] + +## The SDK's own recorded decisions + +Two architecture decision records state how this SDK treats its own documentation and its own releases. They are decisions about that package, recorded by the team on its metadata-cleanup branch, and nothing about them is a project-wide rule.[^adr-schema][^adr-dualdb] + +The first is titled "Metadata docs are a lean decision/policy record; the Pydantic schema is the spec". Its decision is that the metadata documents hold judgments and rules, while field types, patterns, the code object's shape and value-normalization behaviour live in the models and are read from code. The stated cause is that hand-maintained structural documents drift and produce stale content, with a prior consolidation named as the example that "lost and duplicated exactly this kind of detail". Architecture decision, metadata-cleanup snapshot 2026-06-29.[^adr-schema] + +The second publishes two database artifacts built from the same enriched source commit: one in the legacy shape readable by the currently published runtime, and one metadata-aware, carrying structured-metadata columns, enriched JSON and a provenance table. The stated reason is that existing consumers keep working unchanged while metadata-aware consumers get the new data, "rather than forcing a breaking single-DB migration". Architecture decision, partly implemented, metadata-cleanup snapshot 2026-06-29.[^adr-dualdb] + +## Resolving anatomic locations + +The `anatomic-locations` package gives a developer lookup by identifier, description or synonym, all case-insensitive; traversal of the parent and child hierarchy; laterality variants; and hybrid full-text and semantic search, including a batch path that takes several queries in one embedding call. Implemented example, released snapshot 2026-03-04.[^al-readme] The location set itself is in [Anatomic locations](./anatomic-locations.md). + +Its dated predecessors are two wrapper libraries over the 2022 anatomic location set. Both give a developer retrieval by a RadLex, SNOMED or FMA code, the containing and part-of parents of a location, a test of whether one location is contained by another, and the three-way sided arrangement in which the index holds an unsided, a left and a right version of a sided part, each aware of the others. The TypeScript library documents walks in both directions, immediate and full, for both relations; the corresponding section of the Python library's README is an empty stub. Implemented examples, last changed 2022-12-18 for the TypeScript library and 2024-02-03 for the Python one.[^bpi-ts][^bpi-py] The Python library's open work list, updated 2024-02-03, records intent never carried out there: move the repository to the openimagingdata organization, adopt the ACR Common codes, acknowledge the DICOM codes, and rework the body part as a Pydantic model.[^bpi-todo] + +## Resolving terminology + +`med-ontology-lookup` gives a developer one normalized interface over RadLex, SNOMED CT, FMA, LOINC and UMLS, reached through the BioPortal and UMLS Terminology Services interfaces. Its stated version 0.1 capability is free-text search across those vocabularies with results balanced per ontology "so SNOMED does not crowd out RadLex", retrieval of a concept by CUI, RadLex identifier, SNOMED code or FMA identifier, crosswalk through UMLS CUIs into other vocabularies, one-hop parents and children for hierarchy checks, semantic-type filters, auto-detection of whether an input is a term, a code or a CUI, and a portable agent skill carried in the repository. Implemented example, snapshot 2026-09-18.[^molu-readme] + +Two team documents state where it should go, and they agree on the destination while differing on what comes first. The product direction of 2026-08-16 calls for "the small, dependable layer that lets people and agents resolve medical language to versioned concepts", with an explicit radiology default profile over RadLex, LOINC including the Playbook, SNOMED CT, FMA and UMLS as the CUI hub, with mapping direction, scope and provenance preserved instead of treating every cross-reference as equivalence, and with equal support for Python, structured command-line output and an agent protocol.[^molu-roadmap] The project review of 2026-09-03 calls the package "a credible alpha nucleus" that "is not ready to expand broadly", and puts hardening first: stop hiding provider failures, stop silently truncating graph-shaped responses, stop presenting ambiguous or weak mappings as unqualified crosswalks, with bounded graph operations added only after those contracts are trustworthy.[^molu-review] Working proposals, both dated. The vocabularies themselves are in [Standards](./standards.md). + +# Proposed SDKs + +## An Imaging Problem List SDK + +Working proposal. Issue #1 on `imaging-problem-list`, "Create System of Data Models", asks for models for Observation with an Extracted Observation sub-type raised as an open question, for the Exam Finding List, and for the Imaging Problem List; written in Pydantic; with "extensive annotation to generate JSON schemas"; and with camelCase aliases in export over snake_case object attributes. The issue was open, uncommented and unassigned as of 2026-09-22, and no plan in the repositories read for this knowledgebase claims it.[^ipl-issue] The structures it would formalize are described in [Data Structures](./data-structures.md). + +Its precursor is a Sample Application rather than an SDK. The report extraction, coding, persistence and review platform on the `imaging-problem-list` development branch already separates the job an SDK would expose: its coding design document, last updated 2026-03-16, states that coding "is an **independent job** — fully decoupled from extraction", that extraction output persists without codes, and that coding is triggered separately and can be re-run with different models or settings.[^ipl-coding] The platform itself is covered in [Sample Applications](./sample-applications.md). + +## An Open Imaging Reporting SDK + +Working proposal, named and no more. The January 2026 status update lists under its applications pillar an "Open Imaging Reporting SDK (vendor-driven innovation)", and its call to action asks for vendor-driven work, naming a reporting vendor's SDKs as the example.[^gamma] No repository, package, issue or branch for it was found in the repositories read for this knowledgebase. What such an SDK would serve is described in [Use Cases](./use-cases.md). + +# Where the neighbouring pillars begin + +The command-line front ends over these libraries, Finding Model Forge, the finding models catalog site, the Imaging Problem List viewers and the extraction platform are applications built on this layer, not part of it, and they are covered in [Sample Applications](./sample-applications.md). Reusable authoring capability stays here; the content those tools author, and the principles for reviewing it, are in [Finding models and CDEs](./finding-models-and-cdes.md).[^notes] + +[^notes]: Joint working notes for the restructure, decisions of 2026-09-22 +[^siim]: SIIM 2026 annual meeting talk, June 2026, Mass General Brigham +[^gamma]: Open Imaging Data Model 2026 Status Update, January 2026 +[^fm-readme]: findingmodel package README, released snapshot 2026-03-04 +[^fm-mcp]: Finding Model MCP server guide, released snapshot 2026-03-04 +[^fm-ai]: findingmodel-ai package README, released snapshot 2026-03-04 +[^fm-rewrite]: Canonical Structured Metadata and Enrichment Rewrite, metadata-cleanup snapshot 2026-06-29 +[^adr-schema]: Architecture decision record 0001, metadata-cleanup snapshot 2026-06-29 +[^adr-dualdb]: Architecture decision record 0003, metadata-cleanup snapshot 2026-06-29 +[^al-readme]: anatomic-locations package README, released snapshot 2026-03-04 +[^bpi-ts]: BodyPartIndex.ts README, last changed 2022-12-18 +[^bpi-py]: BodyPartIndex.py README, last changed 2024-02-03 +[^bpi-todo]: BodyPartIndex.py open work list, updated 2024-02-03 +[^molu-readme]: med-ontology-lookup README, snapshot 2026-09-18 +[^molu-roadmap]: Product direction for med-ontology-lookup, 2026-08-16 +[^molu-review]: med-ontology-lookup project review and proposal, 2026-09-03 +[^ipl-issue]: imaging-problem-list issue #1, Create System of Data Models +[^ipl-coding]: Coding Agent Design, imaging-problem-list development branch, updated 2026-03-16 diff --git a/knowledge/drafts/standards.md b/knowledge/drafts/standards.md new file mode 100644 index 0000000..699d04a --- /dev/null +++ b/knowledge/drafts/standards.md @@ -0,0 +1,56 @@ +--- +type: Concept +title: Standards the foundation layers over +description: Which existing standard each Foundation Context axis layers over, the role each terminology plays, the external citations the deck names, and search recall as the gate. +tags: [foundation-context, terminologies, radlex, snomed, loinc, fma] +status: draft +generated: { by: claude-opus-5/2026-09-22-restructure/draft-axes, at: 2026-09-22T12:53:11Z } +sources: + - id: siim2026 + resource: t3://oidm-public/oidm-knowledge-sources/SIIM%202026%20Reports-of-the-Future.pptx + title: Structured Results and Context for Next-Generation Imaging Resulting Tools, SIIM 2026 annual meeting talk, June 2026, Mass General Brigham, slides 8 and 12 + - id: jdim-al + resource: "Anatomic Locations Index: A Spatial Containment Hierarchy for Localizing Imaging Findings, manuscript under review at the Journal of Digital Imaging and Informatics in Medicine, 2026" + title: Manuscript under review, Methods "Term selection" and Discussion; reviewer correspondence not used + - id: cde-radlex-baseline + resource: https://github.com/RSNA/ACR-RSNA-CDEs/blob/44836c19f4e025cf1684a015ed5cc63c29eaf7f3/docs/next-gen-schema/05-radlex-baseline.md + title: "RadLex Baseline: Synonyms and External References, ACR-RSNA-CDEs next-gen-2026 branch" + - id: radlex-search + resource: https://github.com/RSNA/RadLex/blob/5162a65db531c8170139656f8a8ed27d96b6dd20/docs/plans/hybrid-fts-search.md + title: Hybrid exact and BM25 full-text search over the RadLex graph, shipped and verified 2026-08-20 + - id: molu-roadmap + resource: https://github.com/openimagingdata/med-ontology-lookup/blob/9cc3eec2c7af32e366e3f05e027b223b4a870077/docs/product-roadmap.md + title: "Product direction: an agent-ready medical terminology graph gateway, med-ontology-lookup, research date 2026-08-16" +--- + +# One axis, one standard + +The June 2026 SIIM talk presents Foundation Context as three axes, each described as an OIDM layer over something that already exists, adding imaging-specific knowledge rather than reinventing it. A code on an Observation is a pointer into one of these axes; the axes also point to each other and out to external references.[^siim2026] + +| Axis | Question | Layers over | +|---|---|---| +| Observation Type | what was found | CDE and OIFM definitions | +| Anatomic Location | where it is | a [RadLex](/glossary/radlex.md)-anchored body map | +| Exam Type | how it was seen | [LOINC Playbook](/glossary/loinc-rsna-radiology-playbook.md) study types | + +The talk's own label for the first axis is Observation Type; this bundle explains that axis under [finding models and CDEs](./finding-models-and-cdes.md). See [anatomic locations](./anatomic-locations.md) and [exam types](./exam-types.md) for what the other two layers add. + +# What each terminology is for + +The manuscript under review states why RadLex was chosen as the foundation: coverage of anatomy at the level of detail radiologists report, governance by the RSNA providing a defined pathway for contributing terms back, and stable identifiers. It recommends [SNOMED CT](/glossary/snomed-ct.md) as the cross-reference for enterprise coding, citing a 2024 HIMSS-SIIM assessment, and argues that adoption can proceed through existing bindings, since DICOM's anatomic region sequence and FHIR's body site value sets already bind to SNOMED CT. On that argument the index sits above the coding scheme rather than competing with it. [FMA](/glossary/fma.md), MeSH, and [UMLS](/glossary/umls.md) are additional cross-reference targets.[^jdim-al] The terminology gateway's roadmap assigns LOINC and the Playbook the orderables, while findings, anatomy, and report language stay with RadLex.[^molu-roadmap] + +Two sources differ on SNOMED CT's place. The manuscript treats it as the enterprise coding target to cross-reference.[^jdim-al] The next-generation vocabulary work, checking the published RadLex release directly, found effectively no SNOMED CT mapping in it: six codes from the retired pre-CT SNOMED against 33,404 FMA references. It records that this contradicts a committee assumption, and treats the gap as something the vocabulary must carry itself or resolve upstream.[^cde-radlex-baseline] + +# External citations + +The talk's "connective tissue" slide names two kinds of outward link: citations to Radiopaedia and Wikipedia, and references to SNOMED, RadLex, LOINC, FMA, ICD, and CPT.[^siim2026] The gateway roadmap keeps ICD and CPT out of the radiology default: ICD's billing-oriented labels would crowd out findings, and CPT is licensed, available only through UMLS when the caller's license covers it, so a failed CPT call must report a license problem rather than an absence of hits.[^molu-roadmap] + +# Search recall is the gate + +A lookup that fails silently is worse than one that fails loudly, because an agent then concludes the concept is missing and proposes a duplicate. The RadLex search plan names that false-gap outcome as the worst failure mode the project has, and sets the target as recall good enough that a miss is real evidence of an ontology gap rather than evidence of unlucky phrasing. Its design keeps exact label and synonym tiers as the confidence signal and adds full-text relevance as the recall layer, emitting a categorical match type rather than a score, because scores are not comparable across queries.[^radlex-search] The gateway roadmap states a related boundary: a shared concept identifier is evidence of connection, not proof of exact equivalence.[^molu-roadmap] The tool itself belongs to the SDKs pillar; see [SDKs](./sdks.md). + +[^siim2026]: SIIM 2026 annual meeting talk, June 2026, Mass General Brigham +[^jdim-al]: Anatomic Locations Index manuscript, under review at the Journal of Digital Imaging and Informatics in Medicine, 2026 +[^cde-radlex-baseline]: RadLex Baseline, ACR-RSNA-CDEs next-gen-2026 +[^radlex-search]: Hybrid full-text search over the RadLex graph, RSNA RadLex +[^molu-roadmap]: Product direction, med-ontology-lookup, 2026-08-16 From 540dff732e99ca0b0a61d6546ff69ea4f9664e4b Mon Sep 17 00:00:00 2001 From: "Alkasab Agent (agent-dev)" Date: Mon, 28 Sep 2026 17:10:25 +0000 Subject: [PATCH 09/19] Apply both cross-reviews to the pillar drafts - Data Structures, Use Cases, and Sample Applications drafted and corrected: application links added, manuscript links removed, demonstrations attributed to their public sources - Introduction, Foundation Context, and SDKs drafts corrected: provenance labels restored, uncommitted CDE decisions no longer cited, absence claims scoped to reviewed sources - Review dispositions recorded for every finding; all pages remain draft Co-Authored-By: Claude Fable 5.1 --- DEV_LOG.md | 5 + .../plans/restructure-around-project-ideas.md | 43 +++- docs/plans/restructure-codex-drafts.md | 47 +++++ knowledge/drafts/anatomic-locations.md | 30 ++- knowledge/drafts/data-structures.md | 191 ++++++++++++++++++ knowledge/drafts/exam-types.md | 22 +- knowledge/drafts/finding-models-and-cdes.md | 73 ++++--- knowledge/drafts/index.md | 3 +- knowledge/drafts/introduction.md | 8 +- knowledge/drafts/sample-applications.md | 160 +++++++++++++++ knowledge/drafts/sdks.md | 12 +- knowledge/drafts/standards.md | 8 +- knowledge/drafts/use-cases.md | 104 ++++++++++ knowledge/log.md | 5 + 14 files changed, 635 insertions(+), 76 deletions(-) create mode 100644 docs/plans/restructure-codex-drafts.md create mode 100644 knowledge/drafts/data-structures.md create mode 100644 knowledge/drafts/sample-applications.md create mode 100644 knowledge/drafts/use-cases.md diff --git a/DEV_LOG.md b/DEV_LOG.md index 837cf16..66a5e4f 100644 --- a/DEV_LOG.md +++ b/DEV_LOG.md @@ -41,3 +41,8 @@ Engineering narrative for the oidm-knowledge repository: decisions, blockers, an - Read the SIIM 2026 "Reports of the Future" deck (June 2026, public) directly, including its six figures, at the project lead's request. Its Patient Context / Foundation Context framing, three axes, "connective tissue" of relationships and external citations, "resolve, don't reinvent" SDK mechanism, and the ask now sit above the four pillars in the joint notes; a relationships-and-citations page was added to pillar 1. Reading recorded in `sources/bucket/REPORT.md` section 8; source-map rows added to the build plan. No drafting has started; page list awaits Codex's reply and the project lead's review. - Planning conversation with the Codex session, framed by Codex at the project lead's request, produced a shared understanding recorded in the joint notes: the source eligibility rule, "related representations" wording, the organizing method, and real deletion of redundant generated material. The project lead ruled during it: a CDE and a finding model are the same content in two collections with different review expectations, both moving to the CDE schema rewrite's classes; the OIFM reorganization around that graph is urgent; and the structure is five named pillars (Foundation Context, Data Structures, SDKs, Use Cases, Sample Applications), used by name. The "Observation Type" umbrella the sessions had floated is withdrawn. The joint notes now carry the decisions, the agreed outline with the current pages that collapse into each part, and next steps; the placement table is being re-sectioned under the five names; the build plan gained a 2026-09-22 decisions table. The ACR-RSNA-CDEs session was told the rulings. Still no drafting. + +- Codex completed three staged pillar drafts in `knowledge/drafts/`: Data Structures, Use Cases, and Sample Applications, totaling 2,704 body words excluding metadata and footnotes. Independent source review corrected coding guarantees, durable-identity claims, provenance review boundaries, and differing status vocabularies. Citations and pinned Git source paths check out; full bundle validation awaits the remaining Claude drafts and index reconciliation. Handoff is recorded in `docs/plans/restructure-codex-drafts.md`; source cross-review and page replacement remain pending. No commit or publication by this session. +- Drafting, Claude side: seven pages staged under `knowledge/drafts/` (introduction, foundation-context, finding-models-and-cdes, anatomic-locations, exam-types, standards, sdks) by four Opus agents, each reviewed by the main session and corrected (inventory IDs removed from prose, agent inferences cut, the deck's own labels used, an internal board cited without its link, American spelling). Three independent source-fidelity reviews of the Codex drafts written to `sources/review/`. Bundle validates at 144 documents, 0 errors, 0 warnings. Committed on `bootstrap`; pull request #1 opened from `bootstrap` into a newly created `main`. + +- Codex completed the source-fidelity cross-review of all seven Claude drafts, with three agents assisting; findings are in `sources/review/drafts-.md`. Claude pages were not edited by this session. Corrected the three Codex drafts and recorded dispositions, including unsupported review claims, in the corresponding response files. Key fixes cover the worked graph example, source-specific status and transport claims, live application links, and team evidence for built demonstrations. Revised bodies total 3,074 words. Strict OKF and bundle checks pass (144 documents, zero errors/warnings), with citation-ID and whitespace checks passing. Updated the drafting plan, joint handoff, and bundle log. Replacement remains separate; no commit or publication by Codex. diff --git a/docs/plans/restructure-around-project-ideas.md b/docs/plans/restructure-around-project-ideas.md index 5d595ac..94008e8 100644 --- a/docs/plans/restructure-around-project-ideas.md +++ b/docs/plans/restructure-around-project-ideas.md @@ -1,6 +1,6 @@ # Restructure around the team's ideas -Status: Proposed. Planning only; restructuring has not started. +Status: Proposed. Updated 2026-09-22 after reading the SIIM 2026 presentation. Restructuring has not started. ## Purpose @@ -25,18 +25,35 @@ This plan replaces the sentence-shortening approach for the next revision. The p The recorded [owner statements](../../knowledge/plans/2026-09-20-knowledgebase-build-plan.md#the-project-leads-stated-goals) orient the investigation. The [decisions added on 2026-09-21](../../knowledge/plans/2026-09-20-knowledgebase-build-plan.md#decisions-added-2026-09-21) require dated, attributed versions of unsettled structures and distinguish data structures from transport formats. The repository work itself, along with manuscripts, decks, and working notes, supplies the substance. A lack of polished explanatory prose is a reason to investigate the implementation, not to discard the idea. +## Direction from the SIIM 2026 presentation + +The owner supplied [Structured Results and Context for Next-Generation Imaging Resulting Tools](https://oidm-public.t3.tigrisfiles.io/oidm-knowledge-sources/SIIM%202026%20Reports-of-the-Future.pptx) to guide this restructuring. Read all 15 slides, speaker notes, and embedded diagrams. Slide references below use file order because printed slide numbers repeat. + +The deck's central distinction is Patient Context and Foundation Context. Patient Context records observations and imaging history for a particular patient. Foundation Context supplies shared definitions, relationships, and references. Clinical history changes with the patient; shared knowledge develops through authoring and versioning. Codes connect the patient's observations to that knowledge. The opening purpose is reuse by clinicians and by the next radiologist, with support for subsequent reporting. These points appear in slides 3–8 and 12–15. + +The editorial implication is to lead with that purpose and connection, then explain the ideas that make it possible. The three axes of Foundation Context are Observation Type, Anatomic Location, and Exam Type. Their relationships deserve an explicit explanation alongside the axes. Repository work supplies the evidence and further development of these ideas. This deck guides the reading path without excluding ideas documented elsewhere. + +Preserve the deck's qualifications. Slide 9's notes treat "Observation Type" as a possible name and some attributes as illustrative. Slide 10 distinguishes existing anatomy content from unpopulated enrichment. Slide 14 describes SDK-mediated access and intended uses; it does not establish which capabilities have shipped or prove the stated benefits. The conceptual figures are not formal schemas. Preserve source-specific formulations, including the deck's focused/included/edge anatomy and other sources' always/usually/possibly wording, until the team reconciles them. + +## Connection to the CDE two-plane model + +The CDE work gives this distinction a concrete graph expression. Its [two-plane account](https://github.com/RSNA/ACR-RSNA-CDEs/blob/44836c19f4e025cf1684a015ed5cc63c29eaf7f3/docs/next-gen-schema/03-draft-structures.md#5-two-planes-reports-point-into-the-vocabulary) describes shared definitions and their relationships, plus report-specific observations and their relationships. The definition plane supplies part of Foundation Context; the observation plane represents the imaging assertions within Patient Context. These correspondences guide the explanation without declaring the two projects' models identical. + +Observations point to definitions for their subjects, locations, and data elements. Their relationships express assertions about the particular case. A definition-space potential and a radiologist's case-specific interpretation have different meanings. The [owner's report-plane decisions](https://github.com/RSNA/ACR-RSNA-CDEs/blob/44836c19f4e025cf1684a015ed5cc63c29eaf7f3/docs/plans/2026-09-03-report-plane-example.md#owner-decisions-taken-in-this-session-copy-these-into-10-verbatim) explicitly say that report edges do not point to the vocabulary relationships they parallel. Keep provisional edge names separate from those owner decisions. + +Use this connection to organize recovered ideas and their relationships. For example, anatomic scope and a particular observation's location belong in one connected explanation. Shared presence definitions and explicit negative observations belong in another. A few existing report examples can show these connections without repeating their definitions or creating an exhaustive example catalog. + ## Proposed reading structure -Use these six areas as an initial reading structure. Determine the actual idea pages after investigating the source work. An idea developed across several repositories gets one home. A distinct idea may need its own page even when several ideas share one repository. +Use the following sequence as a provisional reading path. Determine the actual idea pages after investigating the source work. An idea developed across several repositories gets one home. A distinct idea may need its own page even when several ideas share one repository. | Area | Material to recover and explain | |---|---| -| OIDM | The team's stated purpose and the relationship among semantic foundation, imaging data structures, and applications. A short reading path. | -| Finding models and CDEs | What the team means by findings and definitions; the relationship to CDEs; stated directions for metadata, relationships, and finding content. Attribute allied working proposals. | -| Anatomic locations | Why the team uses an anatomic vocabulary; hierarchy and laterality; the stated RadLex relationship; meaningful unresolved differences. | -| Exam types | Preferred exam names, the relationship to LOINC and the Playbook, and the proposed always/usually/possibly included anatomy relationships. | -| Observations and imaging history | The team's proposed representations and relationships across exams and a patient's history. Include Imaging Persona only to the extent its source defines it. Distinguish transport expressions from the underlying structures. | -| Applications | The uses the team wants to demonstrate and the role of relevant tools. Link to implementations. Keep proposed uses visibly attributed. | +| Purpose and reuse | Why the team wants imaging findings to remain useful after the report, for subsequent care and the next interpretation. Introduce Patient Context and Foundation Context together. | +| Patient Context | Observations carrying codes and patient-specific attributes, connected by case-specific relationships; their organization by exam and across imaging history; their place alongside other clinical context. Recover the actual source alternatives for EFL, IPL, and Imaging Persona. Distinguish transport expressions from the structures. | +| Foundation Context | The three connected axes: observation types, anatomy, and exam types. Recover finding-model and CDE work, metadata, anatomic hierarchies and laterality, preferred exam families, and anatomy coverage. Explain each axis once, with a separate page only where its distinct idea work warrants one. | +| Relationships and code resolution | How observation codes refer to shared definitions; relationships within and between axes; external references; the proposed shared access through SDKs. Preserve the distinction between a general relationship and what is asserted about a patient. | +| Tools using the combined context | The team's intended uses in reporting, follow-up, longitudinal review, rule-based tools, and generative assistance. Link implementation examples to the ideas they demonstrate. Attribute proposed benefits and distinguish available capabilities from goals. | Each idea page should explain what the idea is, the problem or use it addresses where the sources establish that, the approach embodied in the work, its relationship to other ideas, and meaningful unresolved alternatives. Include a small example only when it helps explain the idea. Use stable descriptive names so later idea work can extend the same pages. @@ -62,19 +79,22 @@ Delete superseded generated pages after checking their unique content and links. ### 1. Recover the idea work - [x] Write this plan before changing content. +- [x] Read the owner-supplied SIIM 2026 deck, notes, and diagrams; revise the proposed reading path around Patient Context and Foundation Context. +- [x] Read the CDE two-plane explanation and recorded owner decisions; incorporate their connection to the deck without merging distinct relationship meanings. - [ ] Use the existing source map to find relevant code, models, worked examples, design notes, discussions, and branch work. Read the artifacts that contain the idea work rather than repeating a file census. - [ ] Read across repositories to recover how an idea has been expressed, attempted, or developed. Include manuscripts and decks. Inspect implementation behavior when prose leaves the idea implicit. -- [ ] Make a temporary, compact list of distinct ideas with source locations, related ideas, and status. Separate explicit intent from demonstrated behavior. Record disagreements and uncertain interpretation. +- [ ] Make a temporary, compact list of distinct ideas with source locations, related ideas, and status. Where relevant, identify their role in the definition plane, observation plane, connections between them, or tools using them. Separate explicit intent from demonstrated behavior. Record disagreements and uncertain interpretation. - [ ] Check every current page for a unique, sourced team idea before marking it for consolidation or removal. Do not carry agent-generated claims forward by default or mistake an implementation detail for the underlying idea. - [ ] Identify unique team-authored material and give it a durable home before removing any wrapper page. -- [ ] Derive the proposed idea pages from this investigation. Check the six-area reading structure and content budget against them. +- [ ] Trace the deck's ideas and connections into the repository work. Preserve what that work adds, including disagreements with the presentation, without treating every depicted capability as implemented. +- [ ] Derive the proposed idea pages from this investigation. Check the reading structure and content budget against them. Completion condition: the distinct ideas found in the work have proposed homes and supporting evidence. Uncertain interpretation is explicit. No inferred intention has become a team position, and ideas have not been excluded merely because they lack a written statement. ### 2. Draft the smaller account - [ ] Write the idea pages from the source investigation. Use the old pages to locate evidence, not as outlines to shorten. -- [ ] Add only necessary definitions, examples, and source references. Keep unsettled alternatives side by side where needed. +- [ ] Add only necessary definitions, examples, and source references. Use a few existing report examples to explain relationships within and between the planes. Keep unsettled alternatives side by side where needed. - [ ] Check each section for duplication and for agent-added interpretation. - [ ] Record progress and unresolved attribution questions in this plan. @@ -103,6 +123,7 @@ No commits, publishing, or restructuring are authorized by the request to create ## Acceptance criteria - A reader can follow the team's ideas through concise pages organized around concepts and their relationships. +- The introduction explains the deck's Patient Context/Foundation Context distinction, how they connect, and the team's intended uses. The three Foundation Context axes and their relationships have clear homes. - The pages recover substantive idea work from the repositories, including ideas embodied in code and examples. They provide stable homes for further development. - Every substantive claim is attributable to source evidence. Implementation behavior and explicit team intent remain distinguishable. - Each idea has one explanatory home. Unsettled alternatives remain attributed and unresolved. diff --git a/docs/plans/restructure-codex-drafts.md b/docs/plans/restructure-codex-drafts.md new file mode 100644 index 0000000..22cb0a9 --- /dev/null +++ b/docs/plans/restructure-codex-drafts.md @@ -0,0 +1,47 @@ +# Data Structures, Use Cases, and Sample Applications drafts + +Status: Drafting and Codex's cross-review pass complete. Authorized by the project lead on 2026-09-22 through the drafting assignment and review handoff from Fable. + +## Scope + +Follow the agreed outline in `restructure-joint-notes.md` and the sources behind `idea-placement.md`. Create three concise pillar anchors in `knowledge/drafts/`: `data-structures.md`, `use-cases.md`, and `sample-applications.md`. Claude owns Foundation Context and SDKs. Existing pages and navigation remain until cross-review and replacement. + +## Steps + +1. Record this plan and the file ownership before drafting. Done. +2. Read the underlying sources, preserve dated related representations and their actual status, and draft the three anchors. Every substantive claim needs a source. Use draft status and session-specific `generated.by`. +3. Check coverage against the placement table, review source fidelity and prose, and run OKF validation and link checks. Update this plan with results and any remaining issues. +4. Hand the drafts to Claude for cross-review. Update the development log and bundle log to distinguish completed drafting from pending replacement and publication. Review the documentation for an accurate final state. + +No commits or publication are included in this drafting assignment. + +## Drafting results, 2026-09-22 + +- Created Data Structures, Use Cases, and Sample Applications in `knowledge/drafts/`, with draft status and session-specific authorship. Added their links to the shared draft index. Body counts, excluding frontmatter and footnote definitions, are 1,311, 680, and 713 words respectively, 2,704 total. Counts use whitespace-separated body tokens, including Markdown link syntax. +- Data Structures covers the 24 assigned ideas with the two graphs at its center. An independent review checked pinned CDE/IPL sources and the clean JDIM manuscript pages. Fixed unresolved coding, durable-identity limitations, the manuscript's human-review boundary, the deck's internally differing status labels, and the extraction review contract. Manuscript text was paraphrased. +- Use Cases covers the application half of Patient Context and the documented proposals. Corrected the inventory's webinar grouping: quality surveillance and research are separate application families; breast imaging is a separate planned example. +- Sample Applications distinguishes implemented work from evaluation plans and proposed exchange workflows. Public RSNA material supports the built interoperability demonstrations. The board's unique proposed element-role tagging was handed to Claude for Foundation Context or SDKs. +- Verified all citation IDs against frontmatter sources and all cited pinned Git paths against the local source repositories. Whitespace checks pass. Both bundle validators report no issues in these three pages. The latest full-bundle check still reports links and index entries for Claude's drafts as those files arrive; the combined gate must be rerun after drafting finishes. +- Sent all three pages to Claude for source cross-review. Updated the bundle and development logs. No changelog entry is warranted for staged, unpublished drafts. Existing pages have not been replaced by this session. + +## Remaining shared work + +Both sessions' cross-reviews have been delivered. Claude is applying findings to his pages; replacement of old pages and publication remain steps in the joint plan. These drafts carry no human verification stamp. + +## Cross-review handoff, 2026-09-22 + +Status: Complete for Codex's assigned pass, following the owner's relayed handoff. + +1. Record this review phase before further work. Done. +2. Review Claude's seven drafts against their cited sources. Write one findings file per page in `sources/review/drafts-.md`; do not edit Claude's pages. Distinguish factual errors from optional detail and substantiate every requested correction. +3. Resolve the incoming reviews of the three Codex drafts against primary evidence. Apply supported corrections to those three pages only; record any review findings that the sources do not support. Preserve a lean reading path. +4. Check citations, links, and bundle conformance. Append the handoff and update this plan and the development log with the completed scope and remaining work. Replacement, commits, and publication remain outside this pass. + +### Results + +- Reviewed all seven Claude drafts against primary sources, assisted by three agents. Findings are in `sources/review/drafts-.md`. No Claude page was edited by this session. Material corrections include commit/date mismatches, overstated implementation claims, dropped proposal provenance, and compatible source statements presented as conflicts. +- Addressed incoming findings in the three Codex pages. Dispositions are in `sources/review/drafts-{data-structures,use-cases,sample-applications}-response.md`, including supported corrections and reasons for rejecting unsupported portions. Claude withdrew the signed-report-scope finding after checking the manuscript evidence. +- Data Structures now uses the deck's calculus example to explain the graph connection and preserves dated differences in aggregation, status, entity resolution, and transport. Use Cases distinguishes the sources' application groupings and proposal status. Sample Applications links the working examples and uses team evidence for the demonstrated work. Manuscripts remain paraphrased and descriptively cited; reviewer correspondence was not used. +- Revised body counts are 1,551, 767, and 756 words respectively (3,074 total), using the same counting method as the initial results. Source corrections account for the additions; the initial counts above describe the first drafts. +- Strict OKF validation passes; the bundle checker reports 144 documents, 125 concepts, zero errors and zero warnings. All three pages retain draft status and session authorship; every footnote matches a declared source. Pinned source paths and application links were checked during review. Whitespace checks pass. +- Updated the shared handoff, development log, and bundle log. No reader-facing changelog entry is needed for staged, unpublished drafts. No commit, replacement, or publication by this session. diff --git a/knowledge/drafts/anatomic-locations.md b/knowledge/drafts/anatomic-locations.md index 135d951..25928fb 100644 --- a/knowledge/drafts/anatomic-locations.md +++ b/knowledge/drafts/anatomic-locations.md @@ -10,7 +10,7 @@ sources: resource: "Anatomic Locations Index: A Spatial Containment Hierarchy for Localizing Imaging Findings, manuscript under review at the Journal of Digital Imaging and Informatics in Medicine, 2026" title: Manuscript under review, read as the blinded manuscript body only; reviewer correspondence not used - id: siim2026 - resource: t3://oidm-public/oidm-knowledge-sources/SIIM%202026%20Reports-of-the-Future.pptx + resource: https://oidm-public.t3.tigrisfiles.io/oidm-knowledge-sources/SIIM%202026%20Reports-of-the-Future.pptx title: Structured Results and Context for Next-Generation Imaging Resulting Tools, SIIM 2026 annual meeting talk, June 2026, Mass General Brigham, slides 8, 10 and 12 - id: al-site resource: https://github.com/talkasab/anatomiclocations.org/blob/1f39fa45f621cef947a3f3ef1f869334cfa5c841/docs/index.markdown @@ -62,47 +62,47 @@ sources: # What the index is -The [anatomic location](/glossary/anatomic-location.md) index is a curated set of anatomic entities, each keyed by a [RadLex identifier](/glossary/radlex-id.md) and placed in a spatial containment hierarchy. The manuscript under review describes it as a reference and normalization layer, not an automatic labeling algorithm. An identifier may be applied at the examination or series level for the anatomy covered, or at the finding level for where an observation is. Labels may be assigned by hand or generated by rules, language processing, or AI and then normalized, and whatever the route, a person or a downstream check confirms the structure before anything relies on it. The same source states the limit: knowing where a finding is does not establish what kind of process it is, how long it has been present, or whether it is the same lesion recorded elsewhere.[^jdim-al] +The [anatomic location](/glossary/anatomic-location.md) index is a curated set of anatomic entities, each keyed by a [RadLex identifier](/glossary/radlex-id.md) and placed in a spatial containment hierarchy. The manuscript under review describes it as a reference and normalization layer, not an automatic labeling algorithm. An identifier may be applied at the examination or series level for the anatomy covered, or at the finding level for where an observation is. Labels may be assigned by hand or generated by rules, language processing, or AI and then normalized; whatever the route, a person or downstream check confirms the structure before anything relies on it. The same source states the limit: knowing where a finding is does not establish what kind of process it is, how long it has been present, or whether it is the same lesion recorded elsewhere.[^jdim-al] -How a finding acquires its location is a Data Structures question, covered in [anatomic location assignment rules](../data-structures/anatomic-location-assignment-rules.md). +How a finding acquires its location belongs to Data Structures; see [anatomic location assignment rules](../data-structures/anatomic-location-assignment-rules.md). # Why a curated set The project site, unchanged since January 2023, argues qualitatively that ontologies holding anatomic terms are poorly suited to underpinning interoperability: too few desired terms, too many unnecessary or degenerate ones, limited anatomic organization. Its approach was to curate a subset of them, starting from [RadLex](/glossary/radlex.md) terms previously recognized in radiology reports.[^al-site] -The manuscript under review replaces that assertion with a measurement. It counts, for [SNOMED CT](/glossary/snomed-ct.md), [FMA](/glossary/fma.md), and RadLex, how completely each populates the containment or part-whole relation it declares, measuring each against its own anatomy term set so no resource is penalized for its coverage. In none of the three can software follow the declared relations from a structure up to a whole-body class, even when every declared relation, its subproperties, and the reversed forms of its inverses are pooled. The stated interpretation is not that the resources are defective but that none was built to answer what encloses the structures radiologists name. The manuscript measures no downstream utility and asks to be read as a descriptive resource paper.[^jdim-al] +The manuscript under review measures one of those three things, containment. It counts, for [SNOMED CT](/glossary/snomed-ct.md), [FMA](/glossary/fma.md), and RadLex, how completely each populates the containment or part-whole relation it declares, measuring each against its own anatomy term set so no resource is penalized for its coverage. Through those declared relations, no structure in any of the three reaches the whole body. Pooling every declared relation, its subproperties, and the reversed inverses lifts only the resources' own anatomy classes: 31.0% of FMA's and 25.1% of RadLex's then reach a whole-body class, by mixed paths that give no ordered chain of enclosing regions, while no index term present in any of them reaches one. The stated interpretation is not that the resources are defective but that none was built to answer what encloses the structures radiologists name. The manuscript measures no downstream utility and asks to be read as a descriptive resource paper.[^jdim-al] # Identity and codes A location's identifier is its RadLex identifier. The next-generation vocabulary work states the consequence directly: a RadLex code is never listed beside a location, because the location code is the RadLex code.[^cde-anatomy-axis] -In the current curated data, all 2,926 records carry an identifier, a description, a [body region](/glossary/body-region.md), and a containment parent. SNOMED CT concept identifiers appear on 1,782, ACR Common identifiers on 2,025, a further code list of FMA, MeSH, and [UMLS](/glossary/umls.md) entries on 1,750.[^fm-data] +In the current curated data, all 2,926 records carry an identifier, a description, a [body region](/glossary/body-region.md), and a containment parent; 1,782 carry SNOMED CT concept identifiers, 2,025 ACR Common identifiers, and 1,750 a further list of FMA, MeSH, and [UMLS](/glossary/umls.md) codes.[^fm-data] -Which SNOMED CT concept to use is a written rule, not a matter of judgment. SNOMED CT carries a Structure-Entire-Part triple for anatomy, and the field reference instructs a curator to always take the "Structure of ..." concept and never the "Entire ..." or "... part" forms, because that is what SNOMED CT intends for finding sites and procedure sites. Where a lateralized code does not exist, the unsided code serves all three entries and the substitution is noted in the change description. Definitions prefer authoritative sources in order: Fleischner Society for thoracic anatomy, then RadLex, MeSH, FMA.[^fm-fields] Lookup, sampling, and validation scripts ship beside the reference.[^fm-skill] +Which SNOMED CT concept to use is a written rule, not a matter of judgment. SNOMED CT carries a Structure-Entire-Part triple for anatomy, and the field reference instructs a curator to always take the "Structure of ..." concept and never the "Entire ..." or "... part" forms, because that is what SNOMED CT intends for finding sites and procedure sites. Where a lateralized code does not exist, the unsided code serves all three entries, noted in the change description. Definitions prefer authoritative sources in order: Fleischner Society for thoracic anatomy, then RadLex, MeSH, FMA.[^fm-fields] Lookup, sampling, and validation scripts ship beside the reference.[^fm-skill] # Containment: one parent, up to the whole body -Every structure has exactly one containing parent, the smallest anatomic entity that encloses it. A structure spanning several subregions takes the smallest region containing the whole of it, so the pancreatic duct is contained by the pancreas rather than by the head, body, neck, tail, or uncinate process individually. The manuscript reports that every chain was verified to reach one root, the whole body, that the longest chain is seven hops, and that the largest share of entries sits at depth three. It records the cost as a limitation: a structure spanning sibling subregions is assigned to their common parent, so the pancreatic duct's course through the subdivisions is not represented, and the grouping is deliberately coarse.[^jdim-al] The project site states the same tree rule publicly.[^al-site] +Every structure has exactly one containing parent, the smallest anatomic entity that encloses it. A structure spanning several subregions takes the smallest region containing the whole of it, so the pancreatic duct is contained by the pancreas rather than by the head, body, neck, tail, or uncinate process individually. The manuscript reports that every chain was verified to reach one root, the whole body, that the longest chain is seven hops, and that the largest share of entries sits at depth three. It records the cost as a limitation: a structure spanning sibling subregions is assigned to their common parent, so the pancreatic duct's course through the subdivisions is not represented, and the grouping is deliberately coarse.[^jdim-al] # Containment is not part-of -Where a structure physically sits and what functional structure it belongs to are different questions, kept in separate fields. The curation guidance tells an editor which to use: the containment reference for "X is inside Y", as the hilum is inside the lung, and the part-of reference for "X is a component of Y", as the stomach is a part of the gastrointestinal tract.[^fm-fields] The manuscript gives the abdominal aorta as the worked case, contained by the retroperitoneum and part of the aorta, and states that the single-parent constraint applies only to containment: a structure may hold zero, one, or more [part-of](/glossary/contained-by-and-part-of.md) associations. The release it describes carries 991;[^jdim-al] the current data carries 1,123.[^fm-data] The next-generation vocabulary work leaves open which hierarchy a given check walks; it must be stated each time.[^cde-anatomy-axis] +Where a structure physically sits and what functional structure it belongs to are different questions, kept in separate fields. The curation guidance tells an editor which to use: containment for "X is inside Y", the hilum inside the lung; part-of for "X is a component of Y", the stomach part of the gastrointestinal tract.[^fm-fields] The manuscript gives the abdominal aorta as the worked case, contained by the retroperitoneum and part of the aorta, and states that the single-parent constraint applies only to containment: a structure may hold zero, one, or more [part-of](/glossary/contained-by-and-part-of.md) associations. The release it describes carries 991;[^jdim-al] the current data carries 1,123.[^fm-data] The next-generation vocabulary work leaves open which hierarchy a given check walks; it must be stated each time.[^cde-anatomy-axis] # Laterality as explicit triads Left, right, and unsided variants of a bilateral structure are three distinct entries joined by explicit links, rather than one entry plus a modifier. The unsided entry links to both sided variants; each sided entry links to its counterpart and back to the unsided form; and a sided entry's container points at the sided version of its container where one exists.[^fm-laterality] The manuscript states the reason as an implementation convenience, since the links permit deterministic navigation among corresponding forms without reconstructing a post-coordinated expression at runtime, and reports complete triads for all 795 bilateral structures.[^jdim-al] -The next-generation vocabulary work draws a consequence: laterality is carried by the location rather than by a data element, so there will be no laterality data elements.[^cde-understanding] An external reviewer's alpha implementation instead defines a laterality data element including a bilateral value. The difference is recorded as an open decision area, and the alpha acknowledges that a bilateral value does not resolve whether a report describes one entity or two.[^cde-alpha] +The next-generation vocabulary work draws a consequence: laterality is carried by the location rather than by a data element, so there will be no laterality data elements.[^cde-understanding] For the Observation the project lead has settled it: an Observation specifies a sided anatomic location, which the decision record marks as not an open choice to present again. An external reviewer's alpha implementation differs from that direction, defining a laterality data element including a bilateral value, and acknowledges that a bilateral value does not resolve whether a report describes one entity or two. What stays outstanding is implementation alignment, such as export and query behavior.[^cde-alpha] # Synthetic post-coordinated terms -Where a clinically routine localization concept has no pre-coordinated RadLex term, almost always because laterality or enumeration is missing, an identifier is minted by joining existing RadLex identifiers with an underscore, keeping the composition transparent and machine-readable.[^fm-laterality] The manuscript reports three patterns covering all of them: laterality only, 730 terms; enumeration only, 86; enumeration plus laterality, 194, most often for numbered or bilateral structures. Two qualifications accompany the count: it is not evidence that established ontologies lack mechanisms for adding concepts, since the gaps are specific to one lexicon; and systems built on RadLex will not recognize the compound identifiers without an added mapping layer.[^jdim-al] The next-generation vocabulary work names them as the exception the RadLex track will remove by minting real identifiers.[^cde-anatomy-axis] +Where a clinically routine localization concept has no pre-coordinated RadLex term, almost always because laterality or enumeration is missing, an identifier is minted by joining existing RadLex identifiers with an underscore, keeping the composition transparent and machine-readable.[^fm-laterality] The manuscript reports three patterns covering all of them: laterality only, 730 terms; enumeration only, 86; enumeration plus laterality, 194, most often for numbered or bilateral structures. Two qualifications accompany it: the count is not evidence that established ontologies lack mechanisms for adding concepts, since the gaps are specific to one lexicon; and systems built on RadLex will not recognize the compound identifiers without a mapping layer.[^jdim-al] The next-generation vocabulary work names them as the exception the RadLex track will remove by minting real identifiers.[^cde-anatomy-axis] # An overlay on RadLex, and terms contributed back The relationship to RadLex is stated as an overlay, not a competitor: RadLex concepts and predicates sit underneath, and the file adds identifiers RadLex lacks, its own two hierarchies, and laterality. The next-generation vocabulary work records this as agreed on 13 September 2026, and states why work proceeds against the file rather than the published RadLex release: the RadLex anatomy track is editing the file, so aiming at the published release is described as editing a three-year-old version of a document others have been editing. The data is pointed to at a pinned commit, not copied.[^cde-anatomy-axis] The manuscript describes incorporation by the RSNA RadLex Committee as underway, covering the terms, and notes that a process for revising and reviewing the hierarchy still needs definition.[^jdim-al] The RadLex repository carries an open issue whose exit criterion is complete coverage of the anatomic locations terminology in RadLex.[^radlex-issue] -Gaps found while using a terminology are fed back rather than patched locally. The RadLex repository's concept skill implements this in two phases. An agent first matches findings in report text to existing concepts, under the rule that a loose keyword overlap is not enough and a broader or related concept does not count as a match. For each unmatched term it proposes a new concept with the closest existing parent, a precise term, a rationale for why the gap is genuine, and typed relationships only where a real existing identifier was found for the other end.[^radlex-suggest] Proposals are validated before anything is written, and a batch fails as a whole.[^radlex-skill] Separately, the next-generation vocabulary work feeds node requests upstream: lung parenchyma, perirenal space and its sided forms, pericardial space, subarachnoid space, and real identifiers for the compound sided variants.[^cde-anatomy-axis] +Gaps found while using a terminology are fed back rather than patched locally. The RadLex repository's concept skill implements this in two phases. An agent first matches findings in report text to existing concepts, under the rule that a loose keyword overlap is not enough and a broader concept does not count as a match. For each unmatched term it proposes a new concept with the closest existing parent, a precise term, a rationale for why the gap is genuine, and typed relationships only where a real existing identifier was found for the other end.[^radlex-suggest] Proposals are validated before anything is written, and a batch fails as a whole.[^radlex-skill] Separately, the next-generation vocabulary work feeds node requests upstream: lung parenchyma, perirenal space and its sided forms, pericardial space, subarachnoid space, and real identifiers for the compound sided variants.[^cde-anatomy-axis] # What the index does not carry @@ -110,21 +110,19 @@ The curated set has containment and part-of but no taxonomic relation and no str # Stated direction: enrichment from FMA -The SIIM 2026 talk shows the anatomic location axis as a kidney field table: identity, classification, the two hierarchies, laterality variants, codes. A group of rows is marked defined but not yet populated, under FMA enrichment going forward: definitions imported from FMA under a Creative Commons license, references, new edges for branch-of, bounded-by, and adjacent-to, enumeration updates splitting organ from organ part and adding "Back" to the region list, and a location type recorded as "organ (next-gen; was 'structure')".[^siim2026] +The SIIM 2026 talk shows the anatomic location axis as a kidney field table: identity, classification, the two hierarchies, laterality variants, codes. Rows marked defined but not yet populated fall under FMA enrichment going forward: definitions imported from FMA under a Creative Commons license, references, new edges for branch-of, bounded-by, and adjacent-to, enumeration updates splitting organ from organ part and adding "Back" to the region list, and a location type recorded as "organ (next-gen; was 'structure')".[^siim2026] # Two dated implementations -Two implementations coexist; the later one is current. - | | The 2022 to 2024 set | The current package | |---|---|---| | Data | `body_parts.json`, 2,890 nodes, release 1.0.0-rc.1, site unchanged since January 2023[^al-site] | `anatomic_locations_noembed.json`, 2,926 records, inside `findingmodel`[^fm-data] | | Libraries | Python and TypeScript wrappers over the JSON file, last commits 2024-02-03 and 2022-12-18[^al-libs] | One Python package, version 0.2.5, with a command line[^fm-package] | | Status | Superseded as the working substrate on 2026-09-13[^cde-understanding] | The substrate the next-generation vocabulary points at, pinned to a commit[^cde-anatomy-axis] | -Entity counts differ by release and are not reconciled: 2,890 in the published file, 2,891 in the manuscript, 2,926 in the current data.[^al-site][^jdim-al][^fm-data] +Entity counts differ by release: 2,890 published, 2,891 in the manuscript, 2,926 current.[^al-site][^jdim-al][^fm-data] -The current package resolves a location by identifier, description, synonym, or external code, walks both hierarchies, filters by region and by the classification fields, and searches by combining full-text and vector retrieval.[^fm-package][^fm-doc] It precomputes containment and part-of paths, so ancestry and containment tests become string comparisons rather than recursive queries, a design written as a plan completed on 2025-12-31.[^fm-normalized] Tooling belongs to the SDKs pillar; see [SDKs](./sdks.md). +The current package resolves a location by identifier, description, synonym, or external code, walks both hierarchies, filters by region and by the classification fields, and searches by combining full-text and vector retrieval.[^fm-package][^fm-doc] Precomputed containment and part-of paths make ancestry and containment tests string comparisons rather than recursive queries.[^fm-normalized] Tooling belongs to the SDKs pillar; see [SDKs](./sdks.md). [^jdim-al]: Anatomic Locations Index manuscript, under review at the Journal of Digital Imaging and Informatics in Medicine, 2026 [^siim2026]: SIIM 2026 annual meeting talk, June 2026, Mass General Brigham diff --git a/knowledge/drafts/data-structures.md b/knowledge/drafts/data-structures.md new file mode 100644 index 0000000..8c7eff8 --- /dev/null +++ b/knowledge/drafts/data-structures.md @@ -0,0 +1,191 @@ +--- +type: Concept +title: Data Structures +description: Observations connect a patient's imaging results to shared definitions and to one another across reports and examinations. +tags: [data-structures, observation, foundation-context, imaging-problem-list] +status: draft +generated: { by: codex/2026-09-22-restructure, at: 2026-09-22T13:54:25Z } +sources: + - id: siim-context + resource: https://oidm-public.t3.tigrisfiles.io/oidm-knowledge-sources/SIIM%202026%20Reports-of-the-Future.pptx + title: Reports of the Future, June 2026, slides 4–8 and 12 + - id: report-graph + resource: https://github.com/RSNA/ACR-RSNA-CDEs/blob/44836c19f4e025cf1684a015ed5cc63c29eaf7f3/docs/next-gen-schema/03-draft-structures.md + title: Next-generation CDE draft structures, section 5, snapshot 2026-09-15 + - id: report-decisions + resource: https://github.com/RSNA/ACR-RSNA-CDEs/blob/44836c19f4e025cf1684a015ed5cc63c29eaf7f3/docs/plans/2026-09-03-report-plane-example.md + title: Report-plane example, owner decisions and Claude defaults, 2026-09-03 + - id: two-graph-example + resource: https://github.com/RSNA/ACR-RSNA-CDEs/blob/44836c19f4e025cf1684a015ed5cc63c29eaf7f3/docs/next-gen-schema/08-worked-examples.md#4-one-report-two-planes + title: Pyelonephritis worked example, snapshot 2026-09-15 + - id: ipl-manuscript + resource: Imaging Problem List manuscript, JDIM-D-26-02980 R1, under review at JDIM in 2026; clean manuscript and figures held in the source collection + title: Imaging Problem List manuscript, JDIM-D-26-02980 R1, under review, read 2026-09-22 + - id: webinar + resource: https://oidm-public.t3.tigrisfiles.io/oidm-knowledge-sources/IPL%20Webinar%20Deck.html + title: Imaging Problem List SIIM webinar, 2026-07-15 + - id: cde-decisions + resource: https://github.com/RSNA/ACR-RSNA-CDEs/blob/44836c19f4e025cf1684a015ed5cc63c29eaf7f3/docs/next-gen-schema/10-decision-record-2026-09-02.md + title: CDE decision record, S19–S26, snapshot 2026-09-15 + - id: sample-efls + resource: https://github.com/openimagingdata/imaging-problem-list/tree/36fa30c7383bf687d7bc17815282a93e123a56cb/sample_data/example2 + title: Example2 Exam Finding Lists, development snapshot 2026-07-22 + - id: technical-findings + resource: https://github.com/openimagingdata/imaging-problem-list/blob/36fa30c7383bf687d7bc17815282a93e123a56cb/docs/technical-imaging-findings.md + title: Technical imaging findings, draft reference at 2026-07-22 + - id: domain-notes + resource: https://github.com/openimagingdata/imaging-problem-list/blob/36fa30c7383bf687d7bc17815282a93e123a56cb/CLAUDE.md + title: IPL domain notes, development snapshot 2026-07-22 + - id: extraction-prompt + resource: https://github.com/openimagingdata/imaging-problem-list/blob/36fa30c7383bf687d7bc17815282a93e123a56cb/src/finding_extractor/extractor/prompt.py + title: Extraction prompt, development snapshot 2026-07-22 + - id: coding-prompt + resource: https://github.com/openimagingdata/imaging-problem-list/blob/36fa30c7383bf687d7bc17815282a93e123a56cb/src/finding_extractor/coding/prompt.py + title: Finding and location coding prompts, development snapshot 2026-07-22 + - id: extraction-review + resource: https://github.com/openimagingdata/imaging-problem-list/blob/36fa30c7383bf687d7bc17815282a93e123a56cb/prompts/validator_prompt_example.md + title: Chunk reviewer contract, development snapshot 2026-07-22 + - id: anatomy-rules + resource: https://github.com/openimagingdata/imaging-problem-list/blob/36fa30c7383bf687d7bc17815282a93e123a56cb/docs/anatomic-location-assignment-rules.md + title: Anatomic location assignment rules, development snapshot 2026-07-22 + - id: ipl-generator + resource: https://github.com/openimagingdata/imaging-problem-list/blob/36fa30c7383bf687d7bc17815282a93e123a56cb/scripts/generate_ipl_from_efls.py + title: EFL aggregation into an IPL, development snapshot 2026-07-22 + - id: sample-ipl + resource: https://github.com/openimagingdata/imaging-problem-list/blob/36fa30c7383bf687d7bc17815282a93e123a56cb/sample_data/example2/MRN0000001_ipl.json + title: Synthetic patient IPL, development snapshot 2026-07-22 + - id: viewer-status + resource: https://github.com/openimagingdata/imaging-problem-list/blob/36fa30c7383bf687d7bc17815282a93e123a56cb/scripts/build_viewer_v2_data.py + title: Anatomy viewer data builder, development snapshot 2026-07-22 + - id: ipl-readme + resource: https://github.com/openimagingdata/imaging-problem-list/blob/36fa30c7383bf687d7bc17815282a93e123a56cb/README.md + title: IPL README, development snapshot 2026-07-22 + - id: jacr-study + resource: Follow-Up Chest CT Reporting Is Mostly Re-Documentation, manuscript prepared for submission in 2026, held in the source collection + title: Follow-Up Chest CT Reporting Is Mostly Re-Documentation, prepared for submission, read 2026-09-22 + - id: owner-notes + resource: Project lead's manuscript notes, 2026-09-19, sources/email/2026-09-19-ipl-manuscript-notes.md + title: Observations, finding identity, and structures versus transport, 2026-09-19 + - id: context-board + resource: https://link.excalidraw.com/l/AxEw4sqe6bu/1sEx11UZ3gq + title: OIDM Object Model board, January 2024 proposal, transcribed 2026-09-21 + - id: report-board + resource: Structured Report Representation, internal working board, schema content transcribed in the local source collection + title: Structured Report Representation board, schema proposals from 2025 + - id: outcome-board + resource: https://link.excalidraw.com/l/AxEw4sqe6bu/68X9qfSP5qA + title: Outcome Tracking Schema board, transcribed 2026-09-21 + - id: idr-extract + resource: https://github.com/RSNA/ACR-RSNA-CDEs/blob/44836c19f4e025cf1684a015ed5cc63c29eaf7f3/notes/ihe-idr-extract.md + title: Team extract of the IHE IDR Phase II public-comment draft, read 2026-08-21 +--- + +# Data Structures + +The June 2026 presentation describes a compact Observation with codes pointing to [Foundation Context](./foundation-context.md), plus presence, change from prior, and characterization attributes. Observations belong to Patient Context alongside wider clinical information. Shared knowledge is resolved through their codes.[^siim-context] The July example2 Exam Finding Lists populate only presence in their attribute arrays, a narrower implementation than the deck describes.[^sample-efls] + +## Two connected graphs + +The next-generation CDE design calls these two graphs “planes”: shared definitions and observations in a report. An observation points to its subject definition, anatomic location, and the data elements whose values it records. It retains source wording and can link to other observations.[^report-graph] + +The June deck's calculus figure shows the connection. One patient observation resolves through an SDK to a calculus definition, which may cause hydronephrosis. The definitions connect to kidney and renal pelvis; the figure does not assert hydronephrosis in this patient. Its relationship is general knowledge.[^siim-context] + +Relationships between definitions describe general possibilities. Relationships between observations record what this report asserts about this patient. In the [pyelonephritis example](https://github.com/RSNA/ACR-RSNA-CDEs/blob/44836c19f4e025cf1684a015ed5cc63c29eaf7f3/docs/next-gen-schema/08-worked-examples.md#4-one-report-two-planes), shared definitions connect a diagnosis to its possible manifestations; report observations connect the particular findings to the diagnosis the radiologist states. The absent abscess remains an observation with an absent presence value. The report relationship itself is not negated and does not point to a vocabulary relationship. This is a hypothetical worked example.[^two-graph-example] + +The decision record marks that separation as owner decisions S21–S24. The edge name `SUPPORTS` and the convention of retaining the radiologist's wording in `confidence` are Claude defaults S25–S26.[^report-decisions][^cde-decisions] Components use the same distinction: a definition's `MAY_HAVE_COMPONENT` describes a possibility; a report's `HAS_COMPONENT` connects the actual nodule and solid-component observations, each with its own measurements.[^report-graph] + +These sources develop related representations with different scope: + +| Source and status | What it represents | +|---|---| +| CDE graph draft, snapshot 2026-09-15 | Assertions within one report, linked to definitions and to other assertions, with exact text and spans.[^report-graph] | +| IPL implementation, snapshot 2026-07-22 | Coded observations collected by examination and grouped across examinations using finding code and location.[^ipl-generator] | +| JDIM IPL manuscript, R1 under review, read 2026-09-22 | Longitudinal finding identity, observation histories, provenance, derived status, and proposed linking rules.[^ipl-manuscript] | + +## Observations and their evidence + +The extraction and coding prompts separate finding type, location, and presence. Absence does not change which finding or anatomy code is appropriate. Normality becomes an appropriately scoped absent abnormality; a blanket negative must not introduce more specific claims than its wording supports. Coding may use a slightly broader concept but must not add specificity, and can leave a finding uncoded or unlocalized with a reason.[^extraction-prompt][^coding-prompt][^extraction-review] + +The rules agreed for the example2 correction pass, intended to guide later automated coding, choose explicit report or section anatomy first, then the finding's target structure, then a coarse exam region. They retain section-level laterality, split separable bilateral findings, and keep diffuse or midline findings unsided. The July coding prompt separately allows multiple locations and generates sided terms for bilateral anatomy.[^anatomy-rules][^coding-prompt] + +Presence and confidence also differ: + +| Source | Representation | +|---|---| +| July 2026 webinar and JDIM R1 manuscript | Present or absent, with a separate hedge on the assertion or attribute it qualifies.[^webinar][^ipl-manuscript] | +| July 2026 extraction prompt | `present`, `absent`, `possible`, `indeterminate`; uncertainty about the finding differs from inability to determine it.[^extraction-prompt] | +| July 2026 example2 data | `present`, `absent`, `indeterminate`, without a separate confidence field.[^sample-ipl] | + +For technical descriptions, the term-generation prompt forbids inferring a diagnosis, while the selector asks for the underlying clinical concept. The draft technical-findings reference also distinguishes observed signal abnormalities from diagnoses. These sources do not settle how the selector's broader instruction applies.[^coding-prompt][^technical-findings] + +## Exam Finding Lists + +The manuscript organizes findings at two levels: an Exam Finding List for one examination and an Imaging Problem List across examinations, because interpretation spans both. The June deck connects the EFL to IHE Imaging Diagnostic Report and places both lists within broader Patient Context.[^ipl-manuscript][^siim-context] The EFL must retain stated comparisons, time course, explicit negatives, and supporting sentences. Silence adds no observation. The JACR study illustrates the fidelity problem: its extractor sometimes turned a neutral measurement into an abnormality the radiologist had not asserted.[^ipl-manuscript][^jacr-study] + +The chunk reviewer contract checks both directions: every extracted assertion needs evidence, and every finding in the source needs representation. It names unsupported content, omissions, wrong presence, excess specificity, incorrect blanket negatives, and location errors as reasons to re-extract. The [extraction platform](./sample-applications.md) implements this review workflow.[^extraction-review] + +The manuscript combines repeated descriptions into one observation per finding per examination. The project lead's September notes emphasize that one finding may have several observations within a report. The implemented extractor prioritizes detailed body text and adds impression findings only when they are distinct; the IPL aggregator can retain multiple observations from the same exam. These choices remain visible rather than being collapsed into one cardinality rule.[^ipl-manuscript][^owner-notes][^extraction-prompt][^ipl-generator] + +The 2025 report-structure board asks how to represent impression, recommendations, communication, comparison, technique, clinical context, and limitations. Its open questions concern impression observations, grouped findings, and causal relationships, also explored in the [two-graph design](#two-connected-graphs). The extractor labels non-finding text without implementing these richer structures.[^report-board][^extraction-prompt][^report-graph] + +## Imaging Problem Lists + +An Imaging Problem List collects a finding's observations across examinations. The manuscript proposes a persistent entry with a tracking identifier, identified principally by finding code and anatomic site. The project lead's notes require accounting for broader or narrower codes, finding-to-diagnosis changes, and evolution such as an acute fracture becoming healed.[^ipl-manuscript][^owner-notes] + +Finding and diagnosis remain distinct modeling choices. JDIM R1 records the diagnosis or assessment on the finding's observation. The September CDE draft also represents a diagnosis as the subject of its own observation, connected to supporting findings. The September 19 notes call for making the IPL's account of that distinction explicit.[^ipl-manuscript][^report-graph][^owner-notes] + +Entity resolution remains open: which observations refer to the same finding? The July implementation groups exact code-and-location pairs and regenerates numbered entry IDs from sorted groups; it does not establish durable identity across rebuilds. Generic and specific locations can form separate entries.[^ipl-generator][^anatomy-rules] The JDIM manuscript proposes graduated linking evidence, led by an explicit comparison to a prior finding. The JACR measurement uses ordered matching rules and retains ambiguous cases separately. These serve different purposes and remain distinct formulations.[^ipl-manuscript][^jacr-study] + +Status is derived from observations, but the vocabulary varies: + +| Source | Status and trajectory | +|---|---| +| JDIM R1 manuscript, under review | Active, Stable, Resolved, Excluded. Trajectory is read from the observation history.[^ipl-manuscript] | +| SIIM webinar, 2026-07-15 | Slide 21 proposes Active or Resolved, with trajectories within Active. Slide 22 also uses Stable in its example.[^webinar] | +| IPL domain notes, 2026-07-22 | Currently present, resolved, never-present or ruled out.[^domain-notes] | +| Anatomy viewer builder, 2026-07-22 | `current`, `always`, `resolved`, `never_present`, stored in the generated bundle. An empty history returns `unknown` and aborts the build.[^viewer-status] | + +The manuscript proposes a succession link when one entity leaves another behind, such as resolved pneumonia followed by scarring. For observations in signed reports, it puts provenance and review on each observation, retaining model identity, inputs, output, source text, and subsequent human decisions. Model-produced observations remain unreviewed until a radiologist affirms or rejects them; status follows rules over the observations and links. Merging, splitting, and marking errors are provenance operations, separate from status. The July IPL sample does not carry this proposed provenance or succession structure.[^ipl-manuscript][^sample-ipl] + +The JACR study supplies the motivation for retaining the whole history: 77.4% of unhedged chronic findings on follow-up chest CT were repeated without change. Most accumulated IPL entries went unmentioned on an individual exam. The manuscript therefore calls for ranking entries for display, using permanence as one signal. Permanence comes from the finding type, not inference from repeated observations. These are results and implications of a manuscript prepared for submission.[^jacr-study] + +Recommendations remain a separate design question. The outcome board proposes an exam or protocol, timeframe, target, conditions, and citation, plus live or closed entries. The JDIM manuscript attaches recommendations and their closure to an entry while deriving finding status from observations. The location of the live/closed distinction remains unresolved.[^outcome-board][^ipl-manuscript] + +## Broader context and transport + +The June deck places Imaging Persona around imaging results and clinical context. The object-model board's January 2024 proposal includes orders, prior reports, tracked observations, EHR information, studies, and current report text. Their application role appears in [Use Cases](./use-cases.md).[^siim-context][^context-board] + +The project lead's September 19 direction is to define structures applications can read and create, then use those structures to guide transport mappings.[^owner-notes] + +| Dated source | Documented FHIR mapping | +|---|---| +| IPL README, July 2026 | EFL as `DiagnosticReport` with `Observation` components; IPL as a “Report” containing `Condition` objects and their observations.[^ipl-readme] | +| JDIM R1, under review, read September 2026 | EFL observation as `Observation`, report as `DiagnosticReport`, site as `BodyStructure`, entry as `List` or a custom profile, succession as a reference or extension, review as `Provenance`; status remains derived.[^ipl-manuscript] | +| Team's August 2026 extract of the March IHE IDR draft | IDR routes positive clinical findings to `Condition`, negatives to `Observation`, and Finding Sets through member observations. The team explicitly records its different working default: all report assertions, diagnoses included, as `Observation`.[^idr-extract] | + +The July IPL prototype stores its own JSON structure rather than implementing either proposed IPL transport mapping.[^ipl-generator] [Sample Applications](./sample-applications.md) shows implemented examples; [SDKs](./sdks.md) covers developer capabilities around the structures. + +[^siim-context]: June 2026 [presentation](https://oidm-public.t3.tigrisfiles.io/oidm-knowledge-sources/SIIM%202026%20Reports-of-the-Future.pptx), slides 4–8 and 12. +[^report-graph]: [Draft structures, section 5](https://github.com/RSNA/ACR-RSNA-CDEs/blob/44836c19f4e025cf1684a015ed5cc63c29eaf7f3/docs/next-gen-schema/03-draft-structures.md#5-two-planes-reports-point-into-the-vocabulary). +[^report-decisions]: [Report-plane decisions](https://github.com/RSNA/ACR-RSNA-CDEs/blob/44836c19f4e025cf1684a015ed5cc63c29eaf7f3/docs/plans/2026-09-03-report-plane-example.md), owner directions and Claude defaults. +[^two-graph-example]: [Worked example, section 4](https://github.com/RSNA/ACR-RSNA-CDEs/blob/44836c19f4e025cf1684a015ed5cc63c29eaf7f3/docs/next-gen-schema/08-worked-examples.md#4-one-report-two-planes). +[^ipl-manuscript]: JDIM-D-26-02980 R1, under review, printed pp. 6–12 and 15–16, and Table 1. Paraphrased from the clean manuscript and table, read 2026-09-22; reviewer correspondence excluded. +[^webinar]: SIIM webinar, 2026-07-15, slides 17–23 and their notes, numbered in file order rather than by printed slide labels. +[^cde-decisions]: CDE decision record at `44836c19`, rows S19–S26, including explicit OWNER and CLAUDE DEFAULT labels. +[^sample-efls]: Example2 `*_efl.json` files at `36fa30c`, all 276 observations' attribute arrays inspected. +[^technical-findings]: Technical Imaging Findings draft reference at `36fa30c`, CT, MR, and enhancement search considerations. +[^domain-notes]: IPL `CLAUDE.md` at `36fa30c`, Domain Model and temporal-status descriptions. +[^extraction-prompt]: [Extraction prompt](https://github.com/openimagingdata/imaging-problem-list/blob/36fa30c7383bf687d7bc17815282a93e123a56cb/src/finding_extractor/extractor/prompt.py), core, deduplication, presence, non-finding, and chunk rules. +[^coding-prompt]: [Coding prompts](https://github.com/openimagingdata/imaging-problem-list/blob/36fa30c7383bf687d7bc17815282a93e123a56cb/src/finding_extractor/coding/prompt.py), term generation and code selection. +[^extraction-review]: [Reviewer contract](https://github.com/openimagingdata/imaging-problem-list/blob/36fa30c7383bf687d7bc17815282a93e123a56cb/prompts/validator_prompt_example.md), evidence boundary and named failure types. +[^anatomy-rules]: [Assignment rules](https://github.com/openimagingdata/imaging-problem-list/blob/36fa30c7383bf687d7bc17815282a93e123a56cb/docs/anatomic-location-assignment-rules.md), including the known reconciliation limitation. +[^ipl-generator]: [IPL generator](https://github.com/openimagingdata/imaging-problem-list/blob/36fa30c7383bf687d7bc17815282a93e123a56cb/scripts/generate_ipl_from_efls.py), grouping and observation history. +[^sample-ipl]: [example2 IPL](https://github.com/openimagingdata/imaging-problem-list/blob/36fa30c7383bf687d7bc17815282a93e123a56cb/sample_data/example2/MRN0000001_ipl.json). +[^viewer-status]: [Viewer data builder](https://github.com/openimagingdata/imaging-problem-list/blob/36fa30c7383bf687d7bc17815282a93e123a56cb/scripts/build_viewer_v2_data.py), `compute_status` and `statusByFindingId`. +[^ipl-readme]: [IPL README](https://github.com/openimagingdata/imaging-problem-list/blob/36fa30c7383bf687d7bc17815282a93e123a56cb/README.md), EFL and IPL sections. +[^jacr-study]: JACR manuscript prepared for submission, Methods, Results, and Discussion. Paraphrased from the version read 2026-09-22. +[^owner-notes]: Project lead's manuscript notes, 2026-09-19, points 1–5. Retained in the local source collection. +[^context-board]: OIDM Object Model board, mind map and class diagram, transcription read 2026-09-22. +[^report-board]: Structured Report Representation board, schema questions recorded in 2025, transcription read 2026-09-22. +[^outcome-board]: Outcome Tracking Schema board, Recommendation Structure and Imaging Problem List boxes, transcription read 2026-09-22. +[^idr-extract]: [Team's IHE IDR extract](https://github.com/RSNA/ACR-RSNA-CDEs/blob/44836c19f4e025cf1684a015ed5cc63c29eaf7f3/notes/ihe-idr-extract.md), sections 1–4 and 6, read from the March 2026 public-comment draft in August 2026. diff --git a/knowledge/drafts/exam-types.md b/knowledge/drafts/exam-types.md index d055283..b6ff0c8 100644 --- a/knowledge/drafts/exam-types.md +++ b/knowledge/drafts/exam-types.md @@ -9,15 +9,18 @@ sources: - id: brief resource: /plans/2026-09-20-knowledgebase-build-plan.md title: The project lead's stated goals, recorded verbatim from the request of 2026-09-20 + - id: build-plan + resource: /plans/2026-09-20-knowledgebase-build-plan.md + title: Knowledgebase build plan, 2026-09-20, the source map and the facts-worth-stating section - id: siim2026 - resource: t3://oidm-public/oidm-knowledge-sources/SIIM%202026%20Reports-of-the-Future.pptx + resource: https://oidm-public.t3.tigrisfiles.io/oidm-knowledge-sources/SIIM%202026%20Reports-of-the-Future.pptx title: Structured Results and Context for Next-Generation Imaging Resulting Tools, SIIM 2026 annual meeting talk, June 2026, Mass General Brigham, slides 8 and 11 - id: al-site resource: https://github.com/talkasab/anatomiclocations.org/blob/1f39fa45f621cef947a3f3ef1f869334cfa5c841/docs/index.markdown title: Anatomic Locations project site roadmap, content tasks, unchanged since January 2023 - id: board-anatomy - resource: https://link.excalidraw.com/l/AxEw4sqe6bu/4jmRPObEdLq - title: Common Anatomic Locations working board, Exam Types box, with a discussion checklist dated 2024-05-28 + resource: Common Anatomic Locations working board, Exam Types box under Active Issues, undated + title: Undated working-board proposal; the board carries a separate discussion checklist dated 2024-05-28, which is not used here - id: molu-roadmap resource: https://github.com/openimagingdata/med-ontology-lookup/blob/9cc3eec2c7af32e366e3f05e027b223b4a870077/docs/product-roadmap.md title: "Product direction: an agent-ready medical terminology graph gateway, med-ontology-lookup, research date 2026-08-16, status recommended direction" @@ -34,7 +37,7 @@ sources: # Nothing is built -No exam type artifact exists in any OIDM repository. Everything on this page is either a stated goal or a written proposal, each dated. The nearest running behavior is that an [exam type](/glossary/exam-type.md) appears as a bare LOINC code in an Exam Finding List header,[^ipl-efl] and as the last rung of the anatomy precedence ladder: when a report gives no explicit anatomy and the finding has no target organ, the location falls back to the exam-scoped coarse region, sided only if the exam is sided.[^ipl-rules] Both belong to [Data Structures](./data-structures.md). +The knowledgebase build plan of 2026-09-20 states it plainly: no exam-type artifact exists, and the area is documented as goals plus existing building blocks.[^build-plan] Everything on this page is either a stated goal or a written proposal, each dated. Two smaller things do exist. An [exam type](/glossary/exam-type.md) appears as a bare LOINC code in an Exam Finding List header in the sample data.[^ipl-efl] And a written rule places a finding with no explicit anatomy and no target organ in the exam-scoped coarse region, sided only if the exam is sided; that rule was agreed for one sample-data correction pass and is stated as the intended spec for tuning automated location coding later.[^ipl-rules] Both belong to [Data Structures](./data-structures.md). # Preferred high-level entries over the Playbook @@ -43,15 +46,15 @@ The goal has been stated in nearly the same words across four years, and it is a | Date | Statement | |---|---| | January 2023 | The project site roadmap lists, under content tasks, a companion for exam types based on LOINC and RadLex Playbook exam definitions that specify all included body parts.[^al-site] | -| 2024 | A working board's Exam Types box lists exam type definitions of the most common exams based on LOINC, with common identifiers.[^board-anatomy] | +| undated | A working board's Exam Types box lists exam type definitions of the most common exams based on LOINC, with common identifiers.[^board-anatomy] | | 2026-09-20 | The project lead's brief: exam types need "wrapper tooling around the knowledge graph represented by RadLex LOINC playbook", and the project needs "to define the PREFERRED high-level entries like 'CT Chest', 'MRI Brain', 'X-ray Knee'."[^brief] | | June 2026 | The SIIM talk shows Exam Type as one of three axes, each an OIDM layer over an existing standard; the exam type axis layers over [LOINC Playbook](/glossary/loinc-rsna-radiology-playbook.md) study types.[^siim2026] | -The brief's word is "PREFERRED": the goal is to mark, among the Playbook's many entries, the high-level ones such as "CT Chest" that the project wants systems to use.[^brief] +The brief's own word is "PREFERRED", and the entries it names as examples are "CT Chest", "MRI Brain", and "X-ray Knee".[^brief] # What the layer would expose -The June 2026 talk describes Exam Type as a thin layer on top of the RadLex/LOINC Playbook whose value is access to information the Playbook already holds: timing, contrast, and sidedness among them. It also states that broad families of exams are being grouped together, giving "CT Chest" and "MR Knee" as the examples.[^siim2026] That is the same grouping idea the brief states as preferred high-level entries.[^brief] +The June 2026 talk describes Exam Type as a thin layer on top of the RadLex/LOINC Playbook whose value is access to information the Playbook already holds: timing, contrast, and sidedness among them. It also states that broad families of exams are being grouped together, giving "CT Chest" and "MR Knee" as the examples.[^siim2026] # Anatomy coverage edges, in two dated phrasings @@ -67,15 +70,16 @@ The manuscript under review names the same capability from the other side, as so # The imaging region -The 2024 board states the same requirement as defining an imaging region: a "CT chest region" contains the chest, but also what a radiology exam of the chest would include, such as the lower neck, the upper abdomen, and the shoulders.[^board-anatomy] The January 2023 site roadmap puts it as exam definitions specifying all included body parts.[^al-site] +The working board states the same requirement as defining an imaging region: a "CT chest region" contains the chest, but also what a radiology exam of the chest would include, such as the lower neck, the upper abdomen, and the shoulders.[^board-anatomy] The January 2023 site roadmap puts it as exam definitions specifying all included body parts.[^al-site] # The one written design -The only written design touching exam types is the terminology gateway's product roadmap, dated 2026-08-16 and labeled a recommended direction rather than a built capability. It proposes named domain profiles in place of an ever-growing default search, with `radiology` as the default profile, and places the Playbook in that default on the stated ground that radiology orderables live in the LOINC/RSNA Radiology Playbook while findings, anatomy, and report language live in RadLex.[^molu-roadmap] +The build plan names the terminology gateway's product roadmap as the only written exam-type design.[^build-plan] That document is dated 2026-08-16 and labeled a recommended direction rather than a built capability. It proposes named domain profiles in place of an ever-growing default search, with `radiology` as the default profile, and places the Playbook in that default on the stated ground that radiology orderables live in the LOINC/RSNA Radiology Playbook while findings, anatomy, and report language live in RadLex.[^molu-roadmap] Four Playbook implications are stated: rank procedure and orderable queries toward Playbook terms while ranking finding and anatomy queries toward RadLex, SNOMED CT, and FMA; teach the crosswalk the Playbook correspondences linking a LOINC code to its historic RadLex Playbook identifier and to RadLex anatomy and modality attributes, recording that in the mapping provenance; detect Playbook identifiers as well as LOINC-shaped codes; and prefer Playbook or radiology-class hits rather than treating every LOINC hit as radiology.[^molu-roadmap] The tool itself belongs to the SDKs pillar; see [SDKs](./sdks.md). The standards each axis layers over are covered in [standards](./standards.md). [^brief]: The project lead's stated goals, 2026-09-20 +[^build-plan]: Knowledgebase build plan, 2026-09-20 [^siim2026]: SIIM 2026 annual meeting talk, June 2026, Mass General Brigham [^al-site]: Anatomic Locations project site roadmap, January 2023 [^board-anatomy]: Common Anatomic Locations working board, Exam Types box diff --git a/knowledge/drafts/finding-models-and-cdes.md b/knowledge/drafts/finding-models-and-cdes.md index 82e5d8d..2ef9e95 100644 --- a/knowledge/drafts/finding-models-and-cdes.md +++ b/knowledge/drafts/finding-models-and-cdes.md @@ -94,6 +94,18 @@ sources: resource: https://github.com/openimagingdata/findingmodels/blob/0472a467/PROJECT_SPECIFICATION.md title: "Chest CT conversion project specification, findingmodels content/chestcts at 0472a46" last_modified: 2026-08-15 + - id: chestct-progress + resource: https://github.com/openimagingdata/findingmodels/blob/0472a467/docs/cdestaging_ct_chest_batch_progress.md + title: "Chest CT conversion batch progress, findingmodels content/chestcts at 0472a46" + last_modified: 2026-08-15 + - id: fm-context + resource: https://github.com/openimagingdata/findingmodel/blob/1942b06a/CONTEXT.md + title: "Project vocabulary, CONTEXT.md, findingmodel feature/metadata-cleanup at 1942b06" + last_modified: 2026-06-23 + - id: fm-models + resource: https://github.com/openimagingdata/findingmodel/blob/1942b06a/packages/findingmodel/src/findingmodel/types/models.py + title: "Finding model classes carrying the metadata fields, findingmodel feature/metadata-cleanup at 1942b06; contrast finding_model.py on main at 75afd39" + last_modified: 2026-06-23 - id: metadata-rewrite resource: https://github.com/openimagingdata/findingmodel/blob/1942b06a/docs/canonical-structured-metadata-and-enrichment-rewrite.md title: "Canonical Structured Metadata and Enrichment Rewrite, findingmodel feature/metadata-cleanup at 1942b06" @@ -130,11 +142,11 @@ sources: resource: internal project board, not published title: "Open Imaging Data Model project board (internal), undated; schema idea only" - id: status-deck-2026-01 - resource: sources/gamma-2026-status-update.md + resource: https://gamma.app/docs/Open-Imaging-Data-Model-2026-Status-Update:-Realizing-Object-Oriented-Imaging-Results-yfxzx4q9zssafal title: "Open Imaging Data Model 2026 Status Update, January 2026, extract" last_modified: 2026-01-01 - id: ipl-webinar - resource: sources/bucket/text/ipl-webinar-deck.md + resource: https://oidm-public.t3.tigrisfiles.io/oidm-knowledge-sources/IPL%20Webinar%20Deck.html title: "The Imaging Problem List as an Accelerator for Radiology AI Applications, SIIM Enterprise Imaging webinar, 15 July 2026" last_modified: 2026-07-15 --- @@ -149,48 +161,48 @@ And, in the same set of decisions: > "OIFMs VERY soon need to get re-organized around the graph-based approach we're developing in the next-gen-schema effort in CDEs. They're currently document-oriented and we need to fix that SOON."[^joint-notes] -The common model is explained once here. Inclusive and well-reviewed describe *collections*, not items: nothing here says a given [finding model](../glossary/finding-model.md) is a draft, or a given [CDE set](../glossary/cde-set.md) well reviewed. Both the shared schema and the reorganization are stated intent, the latter a change of organization rather than added fields, and no migration is done. +The common model is explained once here. Inclusive and well-reviewed describe *collections*, not items: nothing here says a given [finding model](../glossary/finding-model.md) is a draft, or a given [CDE set](../glossary/cde-set.md) well reviewed. Both the shared schema and the reorganization are stated intent, the latter a change of organization rather than added fields, with no migration done. # The common graph -Both collections are meant to converge on the next-generation CDE vocabulary on the `next-gen-2026` branch of `ACR-RSNA-CDEs`, at commit `44836c1` of 2026-09-15. These structures "capture our working ideas and prototype choices, not a settled model."[^cde-03] The branch's decision record marks provenance; two labels are carried here. **OWNER**: the project lead stated it, quoted verbatim. **CLAUDE DEFAULT**: an assistant chose it, unreviewed.[^cde-10] +Both collections are meant to converge on the next-generation CDE vocabulary on the `next-gen-2026` branch of `ACR-RSNA-CDEs`, at commit `44836c1` of 2026-09-15. These structures "capture our working ideas and prototype choices, not a settled model," integration with the external reviewer's foundation still open.[^cde-03] The decision record marks provenance; two labels are carried here. **OWNER**: the project lead stated it, quoted verbatim. **CLAUDE DEFAULT**: an assistant chose it, unreviewed.[^cde-10] ## Node types | Node type | What it is, and its status in the source | |---|---| | [FindingClass](../glossary/finding-class.md) | the named thing a report describes, carrying an `entity_type`; working proposal, exercised as graph data | -| Diagnosis | a separate node type (external reviewer, 2026-08-25); only which relationships it can source distinguishes it | -| Grouping | negative-only nodes such as `renal abnormality`, parenting findings and diagnoses; OWNER inclination | +| Diagnosis | a separate node type (external reviewer, 2026-08-25); that only which relationships it can source distinguishes it is an assistant observation, not a decision | +| Grouping | nodes such as `renal abnormality` parenting findings and diagnoses; a separate type is an OWNER inclination, the narrowing to negative-only an unobjected assistant proposal | | [DataElement](../glossary/data-element.md) | a categorical descriptor with an explicitly ordered or unordered value set | | [Measurement](../glossary/measurement.md) | a quantitative descriptor with quantity type, units, optional method; a distinct type (OWNER) | | [AssessmentScheme](../glossary/assessment-scheme.md) | a scheme whose dimensions are linked DataElements (OWNER) | -Values are first-class, their ids derived from their element; [anatomic locations](../glossary/anatomic-location.md) are keyed by RadLex identity; standard clinical metadata values are shared concept nodes, not free text (OWNER).[^cde-03][^cde-10] +Values are first-class, their ids derived from their element; [anatomic locations](../glossary/anatomic-location.md) are keyed by RadLex identity; standard clinical metadata values are shared concept nodes (OWNER).[^cde-03][^cde-10] ## Edges are the content -The draft heads its edge section "Edges — the actual content of the model."[^cde-03] An [element binding](../glossary/element-binding.md) runs from a FindingClass, or directly from an AnatomicLocation, to a DataElement, and may restrict that use to a subset of the element's values without changing the shared element (OWNER), a restriction on meaning rather than presentation. There are no required elements: OWNER, "THERE IS NO SUCH THING AS A REQUIRED ELEMENT."[^cde-10] Reuse is in-degree; and a location binding elements directly (OWNER) lets normal anatomy be described with no FindingClass.[^cde-03][^cde-01] +The draft heads its edge section "Edges — the actual content of the model."[^cde-03] An [element binding](../glossary/element-binding.md) runs from a FindingClass, or directly from an AnatomicLocation, to a DataElement, and may restrict that use to a subset of the element's values without changing the shared element (OWNER), a restriction on meaning, not presentation. There are no required elements: OWNER, "THERE IS NO SUCH THING AS A REQUIRED ELEMENT."[^cde-10] Reuse is in-degree, and a location binding elements directly (OWNER) lets normal anatomy be described with no FindingClass.[^cde-03][^cde-01] Modality is three statements, not one: where a finding can be seen, where a descriptor applies in a given binding, and a descriptor's intrinsic limits, the last a hard limit rather than an adjustable default. An omitted constraint means no information, neither applicability everywhere nor exclusion (OWNER, encoding open).[^cde-10][^cde-context] -An Open Imaging Data Model project board approaches reuse from the consuming side, proposing **role tagging**: tag each element definition with a standard SNOMED or RadLex code naming its role or purpose — presence, location, size and its several measures such as diameters, volumes and segmentation data, modality-specific measures such as radiodensity, echogenicity and MR signal, and contrast behavior — so a consuming system can find the right element across CDE sets by role, looking up the element carrying the SNOMED code for volume measurement instead of hard-coding set-specific element identifiers. A working proposal, undated, no implementation cited.[^board-role-tagging] The next-generation graph reaches reuse by another route, one shared DataElement node bound by many classes;[^cde-03] no source says the two were coordinated. +An Open Imaging Data Model project board approaches reuse from the consuming side, proposing **role tagging**: tag each element definition with a SNOMED or RadLex code naming its role — presence, location, size in its several measures such as diameters, volumes and segmentation data, modality-specific measures such as radiodensity, echogenicity and MR signal, and contrast behavior — so a consuming system finds the right element across CDE sets by role, looking up the element carrying the SNOMED code for volume measurement rather than hard-coding set-specific identifiers. A working proposal, undated, no implementation cited.[^board-role-tagging] The next-generation graph reaches reuse another way, one shared DataElement node bound by many classes;[^cde-03] no source says the two were coordinated. ## Anatomic scope, not location -**Anatomic scope** is the project lead's agreed term of 2026-09-10 for "the statement of where a kind of finding belongs, which may be a place (kidney) or a kind of structure (muscle, not otherwise specified)."[^cde-10][^cde-context] "Location" is the wrong word, the requirements document argues, because the statement ranges over three kinds of thing and only two are spatial: a named structure checked by identity or descent, a region checked by containment, and a structure type such as tendons checked taxonomically, "not spatial at all." Its strength varies too.[^cde-01] A class is scoped to the unsided organ while a specific [Observation](../glossary/observation.md) sits in a sided one, the is-a relation satisfying the scope (OWNER).[^cde-10] Two scope families, tissue types and structure types, are to be developed (OWNER); the taxonomic kind waits on an is-a relation the data lacks.[^cde-11] +**Anatomic scope** is the project lead's agreed term of 2026-09-10 for "the statement of where a kind of finding belongs, which may be a place (kidney) or a kind of structure (muscle, not otherwise specified)."[^cde-10][^cde-context] "Location" is the wrong word, the requirements document argues, because the statement ranges over three kinds of thing and only two are spatial: a named structure checked by identity or descent, a region checked by containment, and a structure type such as tendons checked taxonomically, "not spatial at all." Its strength varies too.[^cde-01] A class is scoped to the unsided organ while a specific [Observation](../glossary/observation.md) sits in a sided one, the is-a relation satisfying the scope; a plain list of targets matches any one, explicit combinations several together (both OWNER, encoding open).[^cde-10] Two scope families, tissue types and structure types, are to be developed (OWNER); the taxonomic kind waits on an is-a relation the data lacks.[^cde-11] ## The relationship family and the derived differential -A catalog called "tentative, explicitly non-comprehensive" proposes seven relationship pairs plus a catch-all: subtype, component, causation, manifestation, co-occurrence, progression, assessment. Manifestation and causation stay strictly apart — a striated nephrogram *is* pyelonephritis appearing on imaging, while a renal abscess is a second entity it produced — tested by whether a clinician would say the source "got better" or "a complication resolved." Manifestation edges take two optional properties: a typicality scale adopted verbatim from the HPO and Orphanet frequency scale, and a three-value specificity scale omitted when uninformative, an absent property meaning no judgment was recorded. The differential is a derived view, not an edge type: the diagnoses reachable over the manifestation inverse, on the Radiology Gamuts Ontology's precedent.[^cde-07] Whether the causal pair takes typicality is a CLAUDE DEFAULT; an `expected` property on causal edges, a CLAUDE INVENTION.[^cde-10][^cde-08] +A catalog called "tentative, explicitly non-comprehensive" proposes seven relationship pairs plus a catch-all: subtype, component, causation, manifestation, co-occurrence, progression, assessment. Manifestation and causation stay apart — a striated nephrogram *is* pyelonephritis appearing on imaging, a renal abscess is a second entity it produced — tested by whether a clinician would say the source "got better" or "a complication resolved." Manifestation edges take two optional properties: a typicality scale adopted verbatim from the HPO and Orphanet frequency scale, and a three-value specificity scale omitted when uninformative, absence meaning no judgment recorded. The differential is a derived view, not an edge type: the diagnoses reachable over the manifestation inverse, on the Gamuts ontology's precedent.[^cde-07] Whether the causal pair takes typicality is a CLAUDE DEFAULT; an `expected` property on causal edges, a CLAUDE INVENTION.[^cde-10][^cde-08] -The finding-model side proposes the same mechanism differently: an April 2026 source-schema draft has a model store only the assertions authored on it, tooling deriving the inverse and symmetric views from a registry of relationship types.[^oifm-v2-draft] Verified on 2026-09-01, that registry exists only in the draft and the live corpus "implements no relationship mechanism at all."[^cde-07] +The finding-model side proposes the same mechanism differently: an April 2026 source-schema draft has a model store only the assertions authored on it, tooling deriving inverse and symmetric views from a registry of relationship types.[^oifm-v2-draft] Verified on 2026-09-01, that registry exists only in the draft, the live corpus "implements no relationship mechanism at all."[^cde-07] ## Assessments, components, and measurements -A scoring system is a valid definition but a different one from what it scores: a nodule model captures what the nodule looks like and a Lung-RADS model the risk category, because different radiologists can describe the same nodule identically and assign different categories.[^oifm-prompts] That is an `assessment` value in the metadata entity-type enumeration today;[^metadata-prompts] in the next-generation design it is its own definition type with edges to ordinary DataElements (OWNER).[^cde-10][^cde-07] +A scoring system is a valid definition but a different one from what it scores: a nodule model captures what the nodule looks like and a Lung-RADS model the risk category, because different radiologists can describe one nodule identically and assign different categories.[^oifm-prompts] That is an `assessment` value in the metadata entity-type enumeration today;[^metadata-prompts] in the next-generation design it is its own definition type with edges to ordinary DataElements (OWNER).[^cde-10][^cde-07] -An independence test separates components from associated findings. An **associated finding** has its own lifecycle — pneumonia and pleural effusion each occur alone — and is one multichoice attribute, presence-level only, its values naming real finding models. A **component** is an intrinsic part, such as the solid component of a mixed pulmonary nodule, extracted into its own model.[^oifm-prompts] The chest CT content branch forbids an associated-findings attribute outright, contradicting that rule.[^chestct-spec] The next-generation design moved twice: one component relationship carrying counts, with the terms **component-of scope** and **lesion family** (OWNER, September 2026), then on 2026-09-16 withdrawn for the external reviewer's two edges.[^cde-10][^cde-context] +An independence test separates components from associated findings. An **associated finding** has its own lifecycle — pneumonia and pleural effusion each occur alone — and is one multichoice attribute, presence-level only, its values naming finding models. A **component** is an intrinsic part, such as the solid component of a mixed nodule, extracted into its own model.[^oifm-prompts] The chest CT content branch forbids an associated-findings attribute outright, contradicting that rule.[^chestct-spec] The next-generation design carries one component relationship with counts, plus the terms **component-of scope** and **lesion family** (OWNER, September 2026).[^cde-10][^cde-context] -Measurement, method, and interpretation are three things. "Peak systolic velocity is 350 cm/s" and "this represents hemodynamically significant stenosis" have different truth conditions, and the reason given for separating them is durability: thresholds move while measurands do not, so a stored interpretation becomes wrong when criteria are revised. Confidence belongs to the interpretation, and measurements must stand alone.[^cde-01][^cde-10] +Measurement, method, and interpretation are three things. "Peak systolic velocity is 350 cm/s" and "this represents hemodynamically significant stenosis" have different truth conditions, and the reason given for separating them is durability: thresholds move while measurands do not, so a stored interpretation becomes wrong when criteria are revised. Confidence belongs to the interpretation, not the measurement; a separate ruling puts it on the report-plane assertion, for findings as much as diagnoses (OWNER).[^cde-01][^cde-10] ## What the graph should carry for a finding @@ -208,21 +220,21 @@ Three sources say what a definition carries beyond its elements: A finding model is one JSON document: identifier, name, description, and attributes, plus optional synonyms, tags, contributors, and index codes. An attribute is either a choice attribute, whose values each carry their own code, or a numeric attribute with bounds and a unit.[^oifm-schema] Identifiers carry provenance — `OIFM_{ORG}_{six digits}` for a model, `OIFMA_{ORG}_{six digits}` for an attribute — the middle segment naming the contributing organization, so institutions mint independently.[^oifm-metadata-fields][^ids-json] The published [CDE set](../glossary/cde-set.md) is the corresponding container: an `RDES` identifier, descriptive and governance fields, and its elements; a [CDE element](../glossary/cde-element.md) carries an `RDE` identifier, its parent set, a definition and question, and either an enumerated value set or a numeric range.[^cde-schema] -The published finding model is lean: the eight metadata fields above are typed on the development and metadata branches and absent from the released one, whose readiness assessment is recorded as not yet passing.[^metadata-rewrite] They are specified by the near-miss they exclude: subspecialty is which service would *read and report* the finding, not which orders the study; expected time course is how long a finding stays visible on imaging, "not the clinical duration of the underlying disease."[^metadata-fields-doc] An [index code](../glossary/index-code.md) must be an exact match or clinically substitutable near-equivalent for the whole model concept — policy carried by prompts and review, enforced nowhere at runtime.[^metadata-rewrite] +The published finding model is lean: the eight metadata fields above are typed on the development and metadata branches, absent from the released one.[^fm-models] They are specified by the near-miss they exclude: subspecialty is which service would *read and report* the finding, not which orders the study,[^metadata-fields-doc] and expected time course is the imaging-observable window, with "the clinical duration of the underlying disease" named as the thing to avoid.[^fm-context] An [index code](../glossary/index-code.md) must be an exact match or clinically substitutable near-equivalent for the whole model concept — policy carried by prompts and review, enforced nowhere at runtime.[^metadata-rewrite] ## How they correspond -By design: a finding model to a CDE set, an attribute to an element, choice values to a value set, index codes the join. In practice it runs one way. 115 of 2,382 finding models carry the `CDE` organization code, with a contributor record naming the ACR/RSNA project and a RadElement index code pointing at their set.[^ids-json] +By design: a finding model to a CDE set, an attribute to an element, choice values to a value set, index codes the join. In practice it runs one way: 115 of 2,382 finding models carry the `CDE` organization code, with a contributor record naming the ACR/RSNA project and a RadElement index code pointing at their set.[^ids-json] -The January 2026 status deck calls this "OIFM: the CDE workbench," a proving ground whose exploratory metadata "can graduate to standards."[^status-deck-2026-01] The CDE branch states the other half: the finding model effort "is roughly one iteration ahead," its models "can be treated as drafts for this project's FindingClasses," and bringing them over "is a review step, not a bulk import." How the crossover works is open between a shared identity space and a maintained crosswalk, and the document chooses neither.[^cde-00] +The January 2026 status deck calls this "OIFM: the CDE workbench," whose exploratory metadata "can graduate to standards."[^status-deck-2026-01] The CDE branch states the other half: the finding model effort "is roughly one iteration ahead," its models "can be treated as drafts for this project's FindingClasses," and bringing them over "is a review step, not a bulk import." How the crossover works is open between a shared identity space and a maintained crosswalk, and the document chooses neither.[^cde-00] -Coverage is measured by running real reports against the definitions. The staging repository calls itself "a staging area for definitions ... prior to their entering the review pipeline," and its extraction note works one report into mini-observations.[^staging-readme][^staging-extraction] Three catalogs record what the definitions could not carry — composite negative statements, uncovered findings, missing attributes — dated 2024 to 2025, with no recorded disposition.[^staging-catalogs] +Coverage is measured by running real reports against the definitions. The staging repository calls itself "a staging area for definitions ... prior to their entering the review pipeline," its extraction note working one report into mini-observations.[^staging-readme][^staging-extraction] Three catalogs record what the definitions could not carry — composite negative statements, uncovered findings, missing attributes — dated 2024 to 2025, undisposed.[^staging-catalogs] # What the inclusive collection holds, and where it is going -The corpus merges uneven provenance streams. From the identifier registry, 2,382 models come from five sources: 1,933 derived from the Radiology Gamuts Ontology, 256 authored by the project, 115 from ACR and RSNA common data elements, 47 from an institutional contributor, 31 from a vendor.[^ids-json] The cleanup plan traces nine mechanical defect classes to specific streams and notes that some Gamuts-derived entries are differential patterns, not findings.[^cleanup-plan] +The corpus merges uneven provenance streams. From the identifier registry, 2,382 models come from five sources: 1,933 derived from the Radiology Gamuts Ontology, 256 authored by the project, 115 from ACR and RSNA common data elements, 47 from an institutional contributor, 31 from a vendor.[^ids-json] The cleanup plan traces nine defect classes to specific streams and notes that some Gamuts-derived entries are differential patterns, not findings.[^cleanup-plan] -The **MGB exam-oriented sub-taxonomies** are the immediate content direction: six per-exam-context finding hierarchies — chest radiograph, musculoskeletal radiograph, head CT, chest/abdomen/pelvis CT, mammography, spine MRI — 3,789 rows, each naming its parent, with "Parents are generic, children add specificity," and an anatomic category as an independent grouping. They double as a coverage ledger: an identifier is filled only where a row matched an existing model by exact name, and "Nothing was minted here." 1,028 rows matched, unevenly — 305 of 403 for chest radiographs against 5 of 198 for mammography — and "Blank rows are the ones needing triage."[^lists-readme] The project lead stated on 2026-09-21: "the immediate direction for all of the content, probably replacing a lot of the Gamuts-based models."[^build-plan] Converting an outside set is a merge with a fixed direction, incoming definitions merging into the corpus and never the reverse, guarded against matching a specific incoming term to a general model; six of twenty-one chunks are converted.[^chestct-spec] The content effort also feeds requirements upstream, a proposals document sizing each entry to one issue on an evidence base of a fourteen-model test batch and a review pass.[^upstream-proposals] +The **MGB exam-oriented sub-taxonomies** are the immediate content direction: six per-exam finding hierarchies — chest radiograph, musculoskeletal radiograph, head CT, chest/abdomen/pelvis CT, mammography, spine MRI — 3,789 rows, each naming its parent, with "Parents are generic, children add specificity." They double as a coverage ledger: an identifier is filled only where a row matched an existing model by exact name, and "Nothing was minted here." 1,028 rows matched, unevenly — 305 of 403 for chest radiographs against 5 of 198 for mammography — and "Blank rows are the ones needing triage."[^lists-readme] The project lead stated on 2026-09-21: "the immediate direction for all of the content, probably replacing a lot of the Gamuts-based models."[^build-plan] Converting an outside set is a merge with a fixed direction, incoming definitions merging into the corpus and never the reverse, guarded against matching a specific incoming term to a general model.[^chestct-spec] One of twenty-one chunks is converted, six new models beside four matched, review still pending.[^chestct-progress] The content effort also feeds requirements upstream, a proposals document sizing each entry to one issue on an evidence base of a fourteen-model test batch.[^upstream-proposals] # Authoring and review @@ -230,18 +242,18 @@ Operational definitions live in prompt fragments and skill files.[^oifm-prompts] | Principle | What the sources say | |---|---| -| What counts as a finding | Would a radiologist write "there is [X]" or "no [X]" as a standalone statement? Devices, postsurgical states, variants and diagnoses count; a state of a finding, a qualified version of another, normal anatomy and radiographic signs do not. | -| Description and diagnosis both count | "Do not question whether a diagnosis 'should' be a finding." Three representations coexist: a `finding_type` column,[^lists-readme] an `entity_type` enumeration,[^metadata-prompts] and a separate Diagnosis node type whose taxonomy rule moved twice (OWNER, September 2026).[^cde-10] | -| Specificity and splitting | Compound names split when one part can be present without the other; a subtype earns its own model when it needs different attributes, so "tension pneumothorax" is not a value on pneumothorax. | +| What counts as a finding | Would a radiologist write "there is [X]" or "no [X]" as a standalone statement? Devices, postsurgical states, variants and diagnoses count; a state of a finding, normal anatomy and radiographic signs do not, though a generic descriptor becomes a finding when anatomic context makes it reportable alone. | +| Description and diagnosis both count | "Do not question whether a diagnosis 'should' be a finding." Three representations coexist: a `finding_type` column,[^lists-readme] an `entity_type` enumeration,[^metadata-prompts] and a separate Diagnosis node type, its taxonomy rule unsettled.[^cde-10] | +| Specificity and splitting | Compound names split when one part can be present without the other; needing different attributes signals that a subtype earns its own model, and a combined phrase with its own clinical meaning also qualifies. | | Negative assertion, presence, change | Broad scoped findings exist so absence can be asserted against something, scoped by what the exam assesses; presence and change from prior are every model's first two attributes. | -| Synonyms | Collection is aggressive, but each must mean the same thing at the same level of specificity: "a bad synonym doesn't just fail to match — it matches the *wrong thing*." | -| Naming | Lowercase with spaces, acronyms expanded and kept as synonyms, eponyms minimized, brand names replaced, and a real anatomic anchor. | -| Stubs, then iteration | Names come from an ontology, from experts, and from a model reading report text; each becomes a stub, gets an identifier at once, and is improved later. | +| Synonyms | Collection is aggressive, but each must mean the same thing at the same specificity: "a bad synonym doesn't just fail to match — it matches the *wrong thing*." | +| Naming | Lowercase with spaces, acronyms expanded and kept as synonyms, eponyms minimized, brand names replaced, and a real anatomic anchor, though some findings are appropriately broad without one. | +| Stubs, then iteration | Names come from an ontology, from experts, and from a model reading report text; each becomes a stub, gets an identifier at once, improved later. | | Triage before create | Two or three complementary searches run per candidate; the agent judges the pooled results and reports an exact match, no match, or true ambiguity. "Do not forward raw result lists to the user." | | Review in three tiers, with context isolation | A deterministic linter, then a language-model review applying a checklist the linter deliberately does not attempt, then mandatory human sign-off, with "each finding drafted and reviewed by a fresh sub-agent with no exposure to its neighbors."[^oifm-skills] | -| Prompts as loadable fragments | Skill files are "pure orchestration," and the sizing is measured: instruction-following degrades as instructions accumulate, and prompt middles get less attention than either end. The team read its own review agent as "deep in degradation territory."[^prompt-research] | +| Prompts as loadable fragments | Skill files are "pure orchestration." The case for sizing them surveys outside research rather than reporting a local experiment: instruction-following degrades as instructions accumulate, and prompt middles get less attention than either end. The note counts the team's own review agent at about forty checklist items, infers it is "deep in degradation territory," and recommends measuring the local effect.[^prompt-research] | | Focused assignment | Seven narrow agents assign metadata under an orchestrator that never decides a field value; search agents propose, assignment agents dispose. A final pass audits rather than enforces, and null is legitimate.[^adr-0002] | -| Human review is the only authority | Only approved records are written back; sub-agent triage is not authority, and generated diffs are not gold.[^human-review] | +| Human review is the only authority | Metadata enrichment decisions reach the corpus only through approved records, with a separate field-limited rule permitting display-only repairs to existing index codes. Sub-agent triage is not authority, and generated diffs are not gold.[^human-review] | [^joint-notes]: Restructure joint working notes, the project lead's decisions of 2026-09-22 [^build-plan]: Knowledgebase build plan, the project lead's content direction of 2026-09-21 @@ -265,6 +277,9 @@ Operational definitions live in prompt fragments and skill files.[^oifm-prompts] [^oifm-skills]: finding-author, finding-batch, and finding-review skill files, findingmodels at a30c3c9 [^prompt-research]: Prompt Length and Instruction Complexity, 2026-03-22, findingmodels at a30c3c9 [^chestct-spec]: Chest CT conversion project specification, findingmodels content/chestcts at 0472a46 +[^chestct-progress]: Chest CT conversion batch progress, findingmodels content/chestcts at 0472a46 +[^fm-context]: Project vocabulary, CONTEXT.md, findingmodel feature/metadata-cleanup at 1942b06 +[^fm-models]: Finding model classes carrying the metadata fields, findingmodel feature/metadata-cleanup at 1942b06 [^metadata-rewrite]: Canonical Structured Metadata and Enrichment Rewrite, findingmodel feature/metadata-cleanup at 1942b06 [^metadata-fields-doc]: Subspecialty policy and field standards, findingmodel feature/metadata-cleanup at 1942b06 [^metadata-prompts]: Metadata assignment prompts, findingmodel feature/metadata-cleanup at 1942b06 diff --git a/knowledge/drafts/index.md b/knowledge/drafts/index.md index 2383658..e079cf1 100644 --- a/knowledge/drafts/index.md +++ b/knowledge/drafts/index.md @@ -5,7 +5,7 @@ Staging area for the restructure agreed on 2026-09-22 (see `docs/plans/restructu Planned files, each session adding its link line when the file exists: * [Introduction](./introduction.md) - What the Open Imaging Data Model is, the two contexts it distinguishes, the five pillars of the work, and how the project expects agreement to happen. -* [Foundation Context](./foundation-context.md) - The shared, non-patient-specific layer of definitions, relationships, and citations that imaging results point into, and the work of building its content. +* [Foundation Context](./foundation-context.md) - The shared, curated clinical knowledge that every patient's imaging data is woven into: three axes over existing standards, the relationships among them, and the citations they rest on. * [Finding models and CDEs](./finding-models-and-cdes.md) - One content in two collections - the common graph being drafted for both, the OIFM and RadElement formats that hold it today, what the inclusive collection contains, and the authoring and review principles behind it. * [Anatomic locations](./anatomic-locations.md) - The curated anatomic location index as a reference layer - identity, containment, part-of, laterality, synthetic terms, curation rules, the RadLex overlay, and the two dated implementations. * [Exam types](./exam-types.md) - A stated goal with no artifact - preferred high-level exam entries over the LOINC/RSNA Radiology Playbook, the Playbook properties they would expose, and the anatomy coverage edges in the project lead's two dated phrasings. @@ -14,3 +14,4 @@ Planned files, each session adding its link line when the file exists: * [Data Structures](./data-structures.md) - Observations connect a patient's imaging results to shared definitions and to one another across reports and examinations. * [Use Cases](./use-cases.md) - Proposed reporting assistance, longitudinal care, outcome tracking, and information products built on OIDM context and structures. * [Sample Applications](./sample-applications.md) - Applications that author shared definitions, display imaging histories, extract and review findings, and demonstrate structured exchange. +* [Overview](./overview.md) - What the Open Imaging Data Model is for, the two contexts it separates, its core pieces, what it is used for, what has been built, and where it stands. diff --git a/knowledge/drafts/introduction.md b/knowledge/drafts/introduction.md index 2402596..8f2d4db 100644 --- a/knowledge/drafts/introduction.md +++ b/knowledge/drafts/introduction.md @@ -12,6 +12,9 @@ sources: - id: siim-deck resource: https://oidm-public.t3.tigrisfiles.io/oidm-knowledge-sources/SIIM%202026%20Reports-of-the-Future.pptx title: "Structured Results and Context for Next-Generation Imaging Resulting Tools, SIIM 2026 annual meeting talk, June 2026, Mass General Brigham" + - id: cde-two-planes + resource: https://github.com/RSNA/ACR-RSNA-CDEs/blob/44836c19f4e025cf1684a015ed5cc63c29eaf7f3/docs/next-gen-schema/03-draft-structures.md + title: "Next-generation Common Data Element draft structures, section 5, two planes, snapshot 2026-09-15" - id: jan-deck resource: https://gamma.app/docs/Open-Imaging-Data-Model-2026-Status-Update:-Realizing-Object-Oriented-Imaging-Results-yfxzx4q9zssafal title: Open Imaging Data Model 2026 Status Update, January 2026 @@ -55,7 +58,7 @@ The June 2026 talk names the two halves that next-generation tools need: "the st | Privacy | Protected health information | Open, not patient-specific | | Example | "8 mm nodule, RUL, new" | "what a pulmonary nodule is" | -The two are joined by their codes. The talk presents Foundation Context as three curated axes — what was found, where it is, how it was seen — and states the join: "A code on an Observation is a pointer into one of these axes — the axes also point to each other, and out to external references."[^siim-deck] (The deck's tentative name for the first axis is "Observation Type"; its notes say the ACR/RSNA elements "may carry" that name later.) The relationships on each side are different in kind. Between definitions, a relationship is a standing possibility, as in the talk's worked figure where a radiodense urinary calculus "may cause" hydronephrosis. Between observations, a relationship is what this radiologist asserted about these particular observations on this exam. [Data Structures](./data-structures.md) explains the two graphs and how they work together; this page only previews them. +The two are joined by their codes. The talk presents Foundation Context as three curated axes — what was found, where it is, how it was seen — and states the join: "A code on an Observation is a pointer into one of these axes — the axes also point to each other, and out to external references."[^siim-deck] (The deck's tentative name for the first axis is "Observation Type"; its notes say the ACR/RSNA elements "may carry" that name later.) The relationships on each side are different in kind. Between definitions, a relationship is a standing possibility, as in the talk's worked figure where a radiodense urinary calculus "may cause" hydronephrosis.[^siim-deck] Between observations, a relationship is what this radiologist asserted about these particular observations on this exam. The next-generation Common Data Element draft states that separation, and the project lead recorded it as a decision on 2026-09-02: "consistent with" is "radiologist-talk for 'I'm putting THESE findings together as THIS diagnosis'", and "it's NOT the same relationship" the abstract ideas hold in definition space.[^cde-two-planes] [Data Structures](./data-structures.md) explains the two graphs and how they work together; this page only previews them. # What a structured Observation cannot answer @@ -83,7 +86,7 @@ The project lead named five parts of the work on 2026-09-22, to be used by name. The structures are defined for use inside applications, and are not a transport definition. The project lead's 2026-09-19 notes state that they are "NOT a transport definition (not FHIR, not DICOM)", that they may eventually need FHIR expressions to travel, and that designing for that possibility is "completely separate from the definition of the structures applications manipulate". The stated reason to agree on the structures is that agreed structures make it easier to agree on what must be conveyed between systems, and that they guide the design of the FHIR profiles and related artifacts that inter-process communication will need.[^owner-notes] The January 2026 call to action puts the same ordering as "structure-first (then FHIR etc.)".[^jan-deck] -Earlier project statements put the structures and their FHIR expression together rather than apart. The founding site post of 2023-06-24 represents a finding as a FHIR Observation labeled with Common Data Element identifiers.[^site-findings] The 2024-01-25 post proposes structures over FHIR definitions for programmatic access and offers an analogy: "the relationship between OIDM and FHIR might be that between the browser's DOM and HTML."[^site-data-model] The 2024-07-01 post announces a manuscript presenting CDE-labeled FHIR Observations as the universal representation for exchanging and consuming report content.[^site-benchmarking] [Data Structures](./data-structures.md) carries the current mapping status. +Earlier project statements describe the relationship to FHIR in their own terms, set out here by date rather than reconciled. The founding site post of 2023-06-24 represents a finding as a FHIR Observation labeled with Common Data Element identifiers.[^site-findings] The 2024-01-25 post proposes structures over FHIR definitions for programmatic access and distinguishes the two by analogy: "the relationship between OIDM and FHIR might be that between the browser's DOM and HTML."[^site-data-model] The 2024-07-01 post announces a manuscript describing a CDE-encoded FHIR Observation framework, and states its claim that "CDE-labeled Observations should be the universal representation for exchanging and consuming content in radiology reports".[^site-benchmarking] [Data Structures](./data-structures.md) carries the current mapping status. # Nothing is formally defined yet @@ -97,6 +100,7 @@ The June 2026 talk closes with three requests: contribute or propose finding def [^owner-notes]: The project lead, 2026-09-19, points 3, 4, and 5 of the notes on the revised Imaging Problem List manuscript. Held in the local source collection. [^siim-deck]: SIIM 2026 annual meeting talk, June 2026, Mass General Brigham; slides 1, 3, 6, 7, 8, 12, 14, and 15 with their speaker notes. +[^cde-two-planes]: [Draft structures, section 5](https://github.com/RSNA/ACR-RSNA-CDEs/blob/44836c19f4e025cf1684a015ed5cc63c29eaf7f3/docs/next-gen-schema/03-draft-structures.md#5-two-planes-reports-point-into-the-vocabulary), snapshot 2026-09-15, with row S21 of the [decision record of 2026-09-02](https://github.com/RSNA/ACR-RSNA-CDEs/blob/44836c19f4e025cf1684a015ed5cc63c29eaf7f3/docs/next-gen-schema/10-decision-record-2026-09-02.md), which records the quoted wording as the project lead's. [^jan-deck]: Open Imaging Data Model 2026 Status Update, January 2026: executive summary, strategic pillars, the CDE workbench section, and the call to action. [^site-about]: openimagingdata.org, project site tagline, read 2026-09-21. [^site-findings]: "Findings, CDEs, and Observations", openimagingdata.org, 2023-06-24. diff --git a/knowledge/drafts/sample-applications.md b/knowledge/drafts/sample-applications.md new file mode 100644 index 0000000..c9902cd --- /dev/null +++ b/knowledge/drafts/sample-applications.md @@ -0,0 +1,160 @@ +--- +type: Concept +title: Sample Applications +description: Applications that author shared definitions, display imaging histories, extract and review findings, and demonstrate structured exchange. +tags: [applications, authoring, imaging-history, extraction, interoperability] +status: draft +generated: { by: codex/2026-09-22-restructure-sample-applications, at: 2026-09-22T13:52:23Z } +sources: + - id: forge-workflow + resource: https://github.com/openimagingdata/FindingModelForge/blob/15d9ebcf64734b889081feed4d645a0afca67e61/docs/finding-model-creation-workflow.md + title: Finding Model Forge creation workflow, dev snapshot of 2026-01-02 + - id: forge-drafts + resource: https://github.com/openimagingdata/FindingModelForge/blob/15d9ebcf64734b889081feed4d645a0afca67e61/docs/DRAFT_WORKFLOW.md + title: Finding Model Forge draft lifecycle, dev snapshot of 2026-01-02 + - id: catalog-loader + resource: https://github.com/openimagingdata/finding-models-site/blob/6298fa3b900bb46b488f82d0a5b9aab06f70ca69/src/data/loadFindingModels.ts + title: Finding model catalog loader, main snapshot of 2025-06-19 + - id: catalog-page + resource: https://github.com/openimagingdata/finding-models-site/blob/6298fa3b900bb46b488f82d0a5b9aab06f70ca69/src/pages/models/%5Bslug%5D.astro + title: Finding model catalog detail page, main snapshot of 2025-06-19 + - id: findingmodel-cli + resource: https://github.com/openimagingdata/findingmodel/blob/75afd39a400419dcfaf7c8d4a34f065b4d804e0d/packages/findingmodel/README.md + title: Findingmodel command-line tools, main snapshot of 2026-03-04 + - id: anatomy-cli + resource: https://github.com/openimagingdata/findingmodel/blob/75afd39a400419dcfaf7c8d4a34f065b4d804e0d/docs/anatomic-locations.md + title: Anatomic locations command-line tools, main snapshot of 2026-03-04 + - id: viewer-one + resource: https://github.com/openimagingdata/imaging-problem-list/blob/06f64a7893b444b761dc069ed86140a081195eac/viewer/app.js + title: IPL viewer implementation, main snapshot of 2025-11-18 + - id: viewer-one-notes + resource: https://github.com/openimagingdata/imaging-problem-list/blob/06f64a7893b444b761dc069ed86140a081195eac/CLAUDE.md + title: IPL viewer notes, main snapshot of 2025-11-18 + - id: viewer-demos + resource: https://oidm-public.t3.tigrisfiles.io/oidm-knowledge-sources/IPL%20Webinar%20Deck.html + title: SIIM IPL webinar, 2026-07-15, live prototype slides 26 and 33 + - id: viewer-two + resource: https://github.com/openimagingdata/imaging-problem-list/blob/36fa30c7383bf687d7bc17815282a93e123a56cb/docs/plans/viewer-v2-anatomy-dashboard.md + title: Anatomy viewer implementation and design, dev snapshot of 2026-07-22 + - id: viewer-metadata + resource: https://github.com/openimagingdata/imaging-problem-list/blob/36fa30c7383bf687d7bc17815282a93e123a56cb/viewer_v2/src/App.tsx + title: Anatomy viewer instance, definition, and anatomy panels, dev snapshot of 2026-07-22 + - id: extraction-platform + resource: https://github.com/openimagingdata/imaging-problem-list/blob/36fa30c7383bf687d7bc17815282a93e123a56cb/README.md + title: Extraction and persistence platform, dev snapshot of 2026-07-22 + - id: extraction-internals + resource: https://github.com/openimagingdata/imaging-problem-list/blob/36fa30c7383bf687d7bc17815282a93e123a56cb/docs/extraction-internals.md + title: Extraction and reviewer contracts, dev snapshot of 2026-07-22 + - id: coding-design + resource: https://github.com/openimagingdata/imaging-problem-list/blob/36fa30c7383bf687d7bc17815282a93e123a56cb/docs/coding-agent-design.md + title: Independent coding pipeline design, updated 2026-03-16 + - id: validator-prompt + resource: https://github.com/openimagingdata/imaging-problem-list/blob/36fa30c7383bf687d7bc17815282a93e123a56cb/prompts/validator_prompt_example.md + title: Chunk reviewer prompt and failure taxonomy, dev snapshot of 2026-07-22 + - id: human-review + resource: https://github.com/openimagingdata/imaging-problem-list/blob/36fa30c7383bf687d7bc17815282a93e123a56cb/docs/plans/extraction-reviewer-ux.md + title: Standalone extraction reviewer, implementation review of 2026-07-20 + - id: evaluation-plan + resource: https://github.com/openimagingdata/imaging-problem-list/blob/36fa30c7383bf687d7bc17815282a93e123a56cb/docs/plans/extractor-evals-redesign.md + title: Extractor evaluation redesign, scope decision of 2026-07-07 + - id: local-policy + resource: https://github.com/openimagingdata/imaging-problem-list/blob/36fa30c7383bf687d7bc17815282a93e123a56cb/src/finding_extractor/llm/policy.py + title: Local inference policy implementation, dev snapshot of 2026-07-22 + - id: local-limits + resource: https://github.com/openimagingdata/imaging-problem-list/blob/36fa30c7383bf687d7bc17815282a93e123a56cb/docs/plans/local-only-future-tightening.md + title: Local-only operation, documented limits and deferred checks, dev snapshot of 2026-07-22 + - id: early-pipeline + resource: https://github.com/openimagingdata/IPL-MVP-ExtractionAndLabeling/blob/b06948fa417aeff0a6a4b97729c915b3ce5d5ed4/README.md + title: Earlier extraction and labeling pipeline, main snapshot of 2025-10-20 + - id: early-prompt + resource: https://github.com/openimagingdata/IPL-MVP-ExtractionAndLabeling/blob/b06948fa417aeff0a6a4b97729c915b3ce5d5ed4/config.py + title: Earlier extraction prompt and matching threshold, main snapshot of 2025-10-20 + - id: siim-rendering + resource: https://www.openimagingdata.org/siim-update/ + title: OIDM SIIM Update, completed template-rendering demonstration, 2023-06-26 + - id: template-demo + resource: https://github.com/openimagingdata/CDETemplateDemo/blob/e09f2553de58b2c88ea26e9673750a62803d4dbc/mapper-logic/src/mappers/obsToMustache.ts + title: CDE Template Demo observation-to-template renderer, master snapshot of 2023-06-15 + - id: siim-search + resource: https://www.openimagingdata.org/siim-2024-update-hackathon-edition/ + title: OIDM SIIM 2024 Update, completed ontology-search demonstration, 2024-07-02 + - id: rsna-team-demo + resource: https://www.openimagingdata.org/2024-new-year-update/ + title: OIDM 2024 New Year Update, reporting framework and AI in Practice demonstrations, 2024-01-12 + - id: nodule-workflow + resource: Internal source archive, Pulm Nodule Demo Project working board, schema and workflow portions only + title: Pulm Nodule Demo Project, undated working board, schema and workflow content +--- + +# Sample Applications + +These examples accompany [Foundation Context](./foundation-context.md), [Data Structures](./data-structures.md), and [SDKs](./sdks.md). [Use Cases](./use-cases.md) describes the team's proposed applications. The implementation dates below identify the source versions. + +## Authoring and inspecting shared definitions + +[Finding Model Forge](https://fmf.oidm.org) provides a browser workflow for authoring [finding models](./finding-models-and-cdes.md). In its January 2026 development version, users review an AI-generated description, check for similar models, and edit attributes before generating a model with identifiers and standard codes. Submission locks the draft for review. The lifecycle distinguishes drafting, submission, review, acceptance into the collection, and rejection.[^forge-workflow][^forge-drafts] + +The [catalog site](https://openimagingdata.github.io/finding-models-site/) provides a reading interface to those definitions. Its June 2025 implementation builds pages from the definition files, showing each model's name, description, and raw JSON.[^catalog-loader][^catalog-page] + +The March 2026 command-line tools expose other ways to inspect that content. `findingmodel` searches definitions, validates their JSON, and renders Markdown. `anatomic-locations` looks up locations by identifier, name, or synonym and displays containment ancestors and descendants. These are applications of the reusable packages described under [SDKs](./sdks.md).[^findingmodel-cli][^anatomy-cli] + +The team's SIIM 2024 hackathon front end demonstrated full-text and semantic search across Anatomic Locations, RadLex, and SNOMED CT, returning ranked candidates from six searches.[^siim-search] + +## Viewing a patient's imaging history + +The [first Imaging Problem List viewer](https://imaging-problem-list.pages.dev) connects the [longitudinal finding list](./data-structures.md) to individual Exam Finding Lists and report text.[^viewer-demos] In the November 2025 `main` code, status filters distinguish present, resolved, and never-present findings. Its body-region filter uses a curated finding-to-region table, although the repository notes describe keyword inference.[^viewer-one][^viewer-one-notes] + +The [second viewer](https://main.ipl-anatomy.pages.dev), also demonstrated in the July 2026 webinar, uses coded anatomy for a body-map display.[^viewer-demos] Its July 2026 development version provides progressive drill-down to findings, observations, and source reports. Its design explicitly prohibits anatomy grouping from merging or splitting IPL entries. Generic or unspecified laterality stays separate from left and right, and unresolved anatomy remains visible as unlocalized.[^viewer-two] + +The detail view separates patient instance data, finding-definition metadata, and anatomy metadata. A reader can distinguish the finding's actual site and history from the definition's typical anatomy. The interface also displays warnings for missing definitions, missing anatomy, and evidence text that cannot be matched exactly.[^viewer-metadata][^viewer-two] + +## Extracting, coding, and reviewing reports + +The July 2026 `imaging-problem-list` development version implements report extraction and persistence for [structured imaging findings](./data-structures.md). It stores each extraction with its report, model, reasoning setting, and output. Reviewer corrections are separate objects for additions, changes, or comments.[^extraction-platform] + +Coding is an independent job that can run again over a saved extraction. Exact-name or synonym lookup comes first. Unresolved findings go through search-term generation, index search, and code selection, with finding type and anatomic location handled separately. One finding's coding failure does not block the others.[^coding-design] + +Extraction works in report chunks and requires verbatim supporting text. A different model can review each chunk and request targeted re-extraction. Its failure taxonomy covers unsupported content, missed findings, wrong presence, excessive specificity, mishandled blanket negatives, and incorrect location. Review timeouts do not stop the pipeline, and output can complete with explicit warnings.[^extraction-internals][^validator-prompt] + +The standalone human-review application opens as a local HTML file without a runtime network connection. Reviewers approve, flag, or mark findings unsure, inspect their evidence in the full report, record missed findings, and export review decisions.[^human-review] + +The July 2026 evaluation redesign remains a plan. It rejects raw finding yield as evidence of better recall because fabricated findings can increase yield. The proposed replacement matches evidence quotes first, scores attribute values, freezes run settings, and compares outputs with human-adjudicated gold held out from prompt examples.[^evaluation-plan] + +For protected reports, the platform supports local Ollama and approved on-premises vLLM inference. Its local-only policy has documented limits, including undetected cloud aliases and first-use model downloads.[^local-policy][^local-limits] + +### Earlier extraction pipeline + +The October 2025 MVP separates extraction from vocabulary matching in a smaller experiment. Its prompt requests finding names and binary presence, including explicit negatives, while its README lists negation as unsupported. A second step matches names to a small definition set through embedding similarity and flags results below a threshold for review. Its README reports 5 matches among 87 extracted findings using 15 neuro finding models.[^early-prompt][^early-pipeline] + +## Demonstrations of rendering and exchange + +At SIIM 2023, the team demonstrated a service that renders CDE-labeled FHIR Observations as prose. Its front end let users edit sample observations and templates to change the output. The [CDE Template Demo implementation](https://github.com/openimagingdata/CDETemplateDemo/tree/e09f2553de58b2c88ea26e9673750a62803d4dbc) renders observation components through Mustache templates.[^siim-rendering][^template-demo] + +The team's January 2024 update reports an OIDM-based assisted-reporting demonstration at RSNA and AI in Practice demonstrations presented by OIDM members.[^rsna-team-demo] The more detailed [pulmonary nodule exchange workflow](./use-cases.md) remains a board proposal, with tracking-ID assignment and cross-exam association open.[^nodule-workflow] + +[^forge-workflow]: Finding Model Forge creation workflow, dev snapshot of 2026-01-02. +[^forge-drafts]: Finding Model Forge draft lifecycle, dev snapshot of 2026-01-02. +[^catalog-loader]: Catalog loader, main snapshot of 2025-06-19. +[^catalog-page]: Catalog detail page, main snapshot of 2025-06-19. +[^findingmodel-cli]: Findingmodel README, CLI section, main snapshot of 2026-03-04. +[^anatomy-cli]: Anatomic locations guide, CLI commands, main snapshot of 2026-03-04. +[^viewer-one]: IPL viewer code, loadFindingRegionMappings, getBodyRegions, and computeFindingStatus, main snapshot of 2025-11-18. +[^viewer-one-notes]: IPL architecture notes, IPL Viewer Application, main snapshot of 2025-11-18. These notes describe keyword inference, unlike the table lookup in the code at the same commit. +[^viewer-demos]: SIIM IPL webinar, 2026-07-15, slides 26 and 33. The slides identify the two live prototype addresses. +[^viewer-two]: Anatomy viewer plan, implementation notes and anatomy mapping rules, dev snapshot of 2026-07-22. +[^viewer-metadata]: Anatomy viewer application, MetadataSections, ObservationDrilldown, and warning display, dev snapshot of 2026-07-22. +[^extraction-platform]: IPL README, extraction and persistence sections, dev snapshot of 2026-07-22. +[^extraction-internals]: Extraction internals, chunk and reviewer contracts and terminal outcomes, dev snapshot of 2026-07-22. +[^coding-design]: Coding Agent Design, independent-job architecture and failure handling, updated 2026-03-16. +[^validator-prompt]: Validator prompt, issue taxonomy and evidence boundary, dev snapshot of 2026-07-22. +[^human-review]: Extraction Reviewer UX plan, verified implementation update of 2026-07-20. +[^evaluation-plan]: Extractor Evals Redesign Plan, scope decision and core decisions of 2026-07-07. +[^local-policy]: Inference policy, enforce_local_only, dev snapshot of 2026-07-22. +[^local-limits]: Future Local-Only Tightening, deferred alias detection and model-download behavior, dev snapshot of 2026-07-22. The remaining tightening is marked not started. +[^early-pipeline]: IPL-MVP-ExtractionAndLabeling README, mapping workflow and reported experiment, main snapshot of 2025-10-20. +[^early-prompt]: Earlier pipeline configuration, extraction prompt and similarity threshold, main snapshot of 2025-10-20. +[^siim-rendering]: [OIDM SIIM Update](https://www.openimagingdata.org/siim-update/), Hackathon Project, 2023-06-26. +[^template-demo]: CDE Template Demo, obsToMustache renderer, master snapshot of 2023-06-15. +[^siim-search]: [OIDM SIIM 2024 Update](https://www.openimagingdata.org/siim-2024-update-hackathon-edition/), demonstrated search front end and ranked results, 2024-07-02. +[^rsna-team-demo]: [OIDM 2024 New Year Update](https://www.openimagingdata.org/2024-new-year-update/), OIDM Assisted Reporting Framework Enhancements and AI in Practice Demos, 2024-01-12. +[^nodule-workflow]: Pulm Nodule Demo Project board, schema and workflow portions only. Named individuals and collaboration history are omitted. diff --git a/knowledge/drafts/sdks.md b/knowledge/drafts/sdks.md index 0de3ab7..def201e 100644 --- a/knowledge/drafts/sdks.md +++ b/knowledge/drafts/sdks.md @@ -55,6 +55,9 @@ sources: - id: molu-review resource: https://github.com/openimagingdata/med-ontology-lookup/blob/9cc3eec2c7af32e366e3f05e027b223b4a870077/docs/project-review-and-proposal.md title: med-ontology-lookup project review and proposal, 2026-09-03 + - id: site-2024 + resource: https://www.openimagingdata.org/2024-new-year-update/ + title: 2024 New Year Update, openimagingdata.org, 2024-01-12 - id: ipl-issue resource: https://github.com/openimagingdata/imaging-problem-list/issues/1 title: "imaging-problem-list issue #1, Create System of Data Models, open and unassigned as of 2026-09-22" @@ -81,7 +84,7 @@ Over that corpus the team separated three retrieval modes rather than overloadin ## Helping author the Foundation Context -The same workspace carries the authoring half of the project lead's definition. A developer can generate a finding's basic information from its name, add detail with citations, turn a Markdown outline into a model, and create a stub model to start from. Implemented example, released snapshot 2026-03-04.[^fm-ai] The metadata rewrite adds one entrypoint for metadata assignment that returns the updated model together with a separate review artifact holding raw candidates, normalization notes and review-oriented reasoning; its design rules keep query generation, candidate gathering, normalization and fallback behaviour in code, leaving the model-facing step to classify typed input into typed output. The document records that entrypoint as implemented in the working tree it describes; working proposal, metadata-cleanup snapshot 2026-06-29.[^fm-rewrite] +The same workspace carries the authoring half of the project lead's definition. A developer can generate a finding's basic information from its name, add detail with citations, turn a Markdown outline into a model, and create a stub model to start from. Implemented example, released snapshot 2026-03-04.[^fm-ai] The metadata rewrite adds one entrypoint for metadata assignment that returns the updated model together with a separate review artifact holding raw candidates, normalization notes and review-oriented reasoning; its design rules keep query generation, candidate gathering, normalization and fallback behaviour in code, leaving the model-facing step to classify typed input into typed output. Implemented example on the metadata branch, metadata-cleanup snapshot 2026-06-29; absent from the released snapshot.[^fm-rewrite] Reusable authoring capability belongs here. The content itself, and the rules for reviewing it, are in [Finding models and CDEs](./finding-models-and-cdes.md); the authoring applications built on top are in [Sample Applications](./sample-applications.md).[^notes] @@ -95,7 +98,7 @@ The second publishes two database artifacts built from the same enriched source ## Resolving anatomic locations -The `anatomic-locations` package gives a developer lookup by identifier, description or synonym, all case-insensitive; traversal of the parent and child hierarchy; laterality variants; and hybrid full-text and semantic search, including a batch path that takes several queries in one embedding call. Implemented example, released snapshot 2026-03-04.[^al-readme] The location set itself is in [Anatomic locations](./anatomic-locations.md). +The `anatomic-locations` package gives a developer lookup by an identifier, or by a description or synonym matched without regard to case; traversal of the parent and child hierarchy; laterality variants; and hybrid full-text and semantic search, including a batch path that takes several queries in one embedding call. Implemented example, released snapshot 2026-03-04.[^al-readme] The location set itself is in [Anatomic locations](./anatomic-locations.md). Its dated predecessors are two wrapper libraries over the 2022 anatomic location set. Both give a developer retrieval by a RadLex, SNOMED or FMA code, the containing and part-of parents of a location, a test of whether one location is contained by another, and the three-way sided arrangement in which the index holds an unsided, a left and a right version of a sided part, each aware of the others. The TypeScript library documents walks in both directions, immediate and full, for both relations; the corresponding section of the Python library's README is an empty stub. Implemented examples, last changed 2022-12-18 for the TypeScript library and 2024-02-03 for the Python one.[^bpi-ts][^bpi-py] The Python library's open work list, updated 2024-02-03, records intent never carried out there: move the repository to the openimagingdata organization, adopt the ACR Common codes, acknowledge the DICOM codes, and rework the body part as a Pydantic model.[^bpi-todo] @@ -111,11 +114,11 @@ Two team documents state where it should go, and they agree on the destination w Working proposal. Issue #1 on `imaging-problem-list`, "Create System of Data Models", asks for models for Observation with an Extracted Observation sub-type raised as an open question, for the Exam Finding List, and for the Imaging Problem List; written in Pydantic; with "extensive annotation to generate JSON schemas"; and with camelCase aliases in export over snake_case object attributes. The issue was open, uncommented and unassigned as of 2026-09-22, and no plan in the repositories read for this knowledgebase claims it.[^ipl-issue] The structures it would formalize are described in [Data Structures](./data-structures.md). -Its precursor is a Sample Application rather than an SDK. The report extraction, coding, persistence and review platform on the `imaging-problem-list` development branch already separates the job an SDK would expose: its coding design document, last updated 2026-03-16, states that coding "is an **independent job** — fully decoupled from extraction", that extraction output persists without codes, and that coding is triggered separately and can be re-run with different models or settings.[^ipl-coding] The platform itself is covered in [Sample Applications](./sample-applications.md). +The issue names no existing work as a starting point.[^ipl-issue] Separately, on the same repository's development branch, the report extraction, coding, persistence and review platform already treats coding as a job of its own: its coding design document, last updated 2026-03-16, states that coding "is an **independent job** — fully decoupled from extraction", that extraction output persists without codes, and that coding is triggered separately and can be re-run with different models or settings.[^ipl-coding] That platform is covered in [Sample Applications](./sample-applications.md). ## An Open Imaging Reporting SDK -Working proposal, named and no more. The January 2026 status update lists under its applications pillar an "Open Imaging Reporting SDK (vendor-driven innovation)", and its call to action asks for vendor-driven work, naming a reporting vendor's SDKs as the example.[^gamma] No repository, package, issue or branch for it was found in the repositories read for this knowledgebase. What such an SDK would serve is described in [Use Cases](./use-cases.md). +Working proposal, and the longest-standing one. A project update of 2024-01-12 reports that a reporting vendor "showcased advanced capabilities of the OIDM-based assisted reporting framework, incorporating large language models", and states the intent to "collaborate with vendors and the OIDM community to develop an open-standard toolkit for assisted reporting systems".[^site-2024] The January 2026 status update carries that intent forward under a name, listing an "Open Imaging Reporting SDK (vendor-driven innovation)" in its applications pillar, with a call to action for vendor-driven work that names a reporting vendor's SDKs as its example.[^gamma] Demonstrations of the framework were built and shown; what none of the repositories read for this knowledgebase contains is an implementation of the toolkit itself. What such an SDK would serve is described in [Use Cases](./use-cases.md). # Where the neighbouring pillars begin @@ -137,5 +140,6 @@ The command-line front ends over these libraries, Finding Model Forge, the findi [^molu-readme]: med-ontology-lookup README, snapshot 2026-09-18 [^molu-roadmap]: Product direction for med-ontology-lookup, 2026-08-16 [^molu-review]: med-ontology-lookup project review and proposal, 2026-09-03 +[^site-2024]: 2024 New Year Update, openimagingdata.org, 2024-01-12 [^ipl-issue]: imaging-problem-list issue #1, Create System of Data Models [^ipl-coding]: Coding Agent Design, imaging-problem-list development branch, updated 2026-03-16 diff --git a/knowledge/drafts/standards.md b/knowledge/drafts/standards.md index 699d04a..7b1b2a8 100644 --- a/knowledge/drafts/standards.md +++ b/knowledge/drafts/standards.md @@ -7,7 +7,7 @@ status: draft generated: { by: claude-opus-5/2026-09-22-restructure/draft-axes, at: 2026-09-22T12:53:11Z } sources: - id: siim2026 - resource: t3://oidm-public/oidm-knowledge-sources/SIIM%202026%20Reports-of-the-Future.pptx + resource: https://oidm-public.t3.tigrisfiles.io/oidm-knowledge-sources/SIIM%202026%20Reports-of-the-Future.pptx title: Structured Results and Context for Next-Generation Imaging Resulting Tools, SIIM 2026 annual meeting talk, June 2026, Mass General Brigham, slides 8 and 12 - id: jdim-al resource: "Anatomic Locations Index: A Spatial Containment Hierarchy for Localizing Imaging Findings, manuscript under review at the Journal of Digital Imaging and Informatics in Medicine, 2026" @@ -37,9 +37,9 @@ The talk's own label for the first axis is Observation Type; this bundle explain # What each terminology is for -The manuscript under review states why RadLex was chosen as the foundation: coverage of anatomy at the level of detail radiologists report, governance by the RSNA providing a defined pathway for contributing terms back, and stable identifiers. It recommends [SNOMED CT](/glossary/snomed-ct.md) as the cross-reference for enterprise coding, citing a 2024 HIMSS-SIIM assessment, and argues that adoption can proceed through existing bindings, since DICOM's anatomic region sequence and FHIR's body site value sets already bind to SNOMED CT. On that argument the index sits above the coding scheme rather than competing with it. [FMA](/glossary/fma.md), MeSH, and [UMLS](/glossary/umls.md) are additional cross-reference targets.[^jdim-al] The terminology gateway's roadmap assigns LOINC and the Playbook the orderables, while findings, anatomy, and report language stay with RadLex.[^molu-roadmap] +The manuscript under review states why RadLex was chosen as the foundation: coverage of anatomy at the level of detail radiologists report, governance by the RSNA providing a defined pathway for contributing terms back, and stable identifiers. It recommends [SNOMED CT](/glossary/snomed-ct.md) as the cross-reference for enterprise coding, citing a 2024 HIMSS-SIIM assessment, and argues that adoption can proceed through existing bindings, since DICOM's anatomic region sequence and FHIR's body site value sets already bind to SNOMED CT. On that argument the index sits above the coding scheme rather than competing. [FMA](/glossary/fma.md), MeSH, and [UMLS](/glossary/umls.md) are further cross-reference targets.[^jdim-al] The terminology gateway's roadmap gives LOINC and the Playbook the orderables; findings, anatomy, and report language stay with RadLex.[^molu-roadmap] -Two sources differ on SNOMED CT's place. The manuscript treats it as the enterprise coding target to cross-reference.[^jdim-al] The next-generation vocabulary work, checking the published RadLex release directly, found effectively no SNOMED CT mapping in it: six codes from the retired pre-CT SNOMED against 33,404 FMA references. It records that this contradicts a committee assumption, and treats the gap as something the vocabulary must carry itself or resolve upstream.[^cde-radlex-baseline] +Where those cross-references live is a separate question from which system is the target. The next-generation vocabulary work checked the published RadLex release directly and found effectively no SNOMED CT mapping in it: six codes from the retired pre-CT SNOMED against 33,404 FMA references, against an assumption on record that SNOMED mappings would be maintained at the RadLex level. For anatomy it records the gap as already closed upstream, because the anatomic locations data carries modern SNOMED CT codes on about 60% of its nodes and those mappings travel with it as it becomes a RadLex collection. For findings no such source exists, so the vocabulary carries its own mappings.[^cde-radlex-baseline] # External citations @@ -47,7 +47,7 @@ The talk's "connective tissue" slide names two kinds of outward link: citations # Search recall is the gate -A lookup that fails silently is worse than one that fails loudly, because an agent then concludes the concept is missing and proposes a duplicate. The RadLex search plan names that false-gap outcome as the worst failure mode the project has, and sets the target as recall good enough that a miss is real evidence of an ontology gap rather than evidence of unlucky phrasing. Its design keeps exact label and synonym tiers as the confidence signal and adds full-text relevance as the recall layer, emitting a categorical match type rather than a score, because scores are not comparable across queries.[^radlex-search] The gateway roadmap states a related boundary: a shared concept identifier is evidence of connection, not proof of exact equivalence.[^molu-roadmap] The tool itself belongs to the SDKs pillar; see [SDKs](./sdks.md). +A lookup that fails silently is worse than one that fails loudly: an agent then concludes the concept is missing and proposes a duplicate. The RadLex search plan names that false-gap outcome as the worst failure mode the project has, and sets the target as recall good enough that a miss is real evidence of an ontology gap rather than evidence of unlucky phrasing. Its design keeps exact label and synonym tiers as the confidence signal and adds full-text relevance as the recall layer. A categorical match type carries the confidence contract, because full-text scores are not comparable across queries; the numeric scores stay alongside it as tiebreakers.[^radlex-search] The gateway roadmap states a related boundary: a shared concept identifier is evidence of connection, not proof of exact equivalence.[^molu-roadmap] The tool itself belongs to the SDKs pillar; see [SDKs](./sdks.md). [^siim2026]: SIIM 2026 annual meeting talk, June 2026, Mass General Brigham [^jdim-al]: Anatomic Locations Index manuscript, under review at the Journal of Digital Imaging and Informatics in Medicine, 2026 diff --git a/knowledge/drafts/use-cases.md b/knowledge/drafts/use-cases.md new file mode 100644 index 0000000..c084573 --- /dev/null +++ b/knowledge/drafts/use-cases.md @@ -0,0 +1,104 @@ +--- +type: Concept +title: Use Cases +description: Proposed reporting assistance, longitudinal care, outcome tracking, and information products built on OIDM context and structures. +tags: [use-cases, reporting, imaging-history, outcomes] +status: draft +generated: { by: codex/2026-09-22-restructure-use-cases, at: 2026-09-22T13:53:10Z } +sources: + - id: reporting-framework + resource: https://www.openimagingdata.org/oidm-based-next-gen-reporting-assistance/ + title: OIDM-Based Next-gen Reporting Assistance Framework, 2023-07-16 + - id: reporting-board + resource: "OIDM Big Picture working board, Reporting Assistance Framework and Next-Generation Assisted Reporting Use Cases frames, undated" + title: OIDM Big Picture, reporting assistance framework and use-case mind map, undated working board + - id: ipl-webinar + resource: https://oidm-public.t3.tigrisfiles.io/oidm-knowledge-sources/IPL%20Webinar%20Deck.html + title: The Imaging Problem List as an Accelerator for Radiology AI Applications, SIIM webinar, 2026-07-15, slides 36–43 and speaker notes + - id: outcome-schema + resource: "Outcome Tracking Schema, undated working board, clinical-event, action, and use-case sections" + title: Outcome Tracking Schema, undated working board, data-model and workflow content + - id: pathology-link + resource: "Radiologist Outcome Feedback working board, Path Result and Biopsy Procedure linking proposal, 2025-06-02" + title: Radiologist Outcome Feedback, shared tracking identifier proposal dated 2025-06-02 + - id: reports-future + resource: https://oidm-public.t3.tigrisfiles.io/oidm-knowledge-sources/SIIM%202026%20Reports-of-the-Future.pptx + title: Structured Results and Context for Next-Generation Imaging Resulting Tools, June 2026, slides 13–14 + - id: usecases-index + resource: https://github.com/openimagingdata/UseCases/blob/71a90d2ab2efeee4c4303dc0aef27ed3d70a6c99/Index.md + title: Index of Potential Use Cases, snapshot of 2024-02-26 + - id: value-categories + resource: https://github.com/openimagingdata/UseCases/blob/71a90d2ab2efeee4c4303dc0aef27ed3d70a6c99/README.md + title: OIDM Use Cases, value categories from the RSNA Reporting Informatics Committee, last changed 2023-09-25 + last_modified: 2023-09-25 + - id: status-deck + resource: https://gamma.app/docs/Open-Imaging-Data-Model-2026-Status-Update:-Realizing-Object-Oriented-Imaging-Results-yfxzx4q9zssafal + title: Open Imaging Data Model 2026 Status Update, January 2026, imaging life cycle and ACR priorities + - id: nodule-exchange + resource: "Pulm Nodule Demo Project, undated working board, exchange aim and structured workflow" + title: Pulm Nodule Demo Project, undated working board, structured exchange workflow + - id: ipl-manuscript + resource: "The Imaging Problem List: A Standards-Based Framework for Longitudinal Tracking of Imaging Findings, manuscript under review at JDIM, 2026" + title: Imaging Problem List manuscript under review, clean abstract and Figure 1; reviewer correspondence not used +--- + +# Use Cases + +This page groups documented application ideas by purpose. The July 2026 IPL webinar presents its applications as a roadmap, including breast work explicitly described as planned.[^ipl-webinar] Implemented examples have a separate home in [Sample Applications](/drafts/sample-applications.md). + +## Reporting assistance + +The July 2023 framework proposes plugins that inspect current findings, prior reports, and exam context. A reporting container would rerun them when context changes. Its four commands would insert text, request information, alert the radiologist, or send data externally.[^reporting-framework] The January 2026 deck names vendor-driven innovation through an Open Imaging Reporting SDK.[^status-deck] The reusable interfaces belong under [SDKs](/drafts/sdks.md). + +The undated reporting board proposes a context object including clinical records, longitudinal findings, and AI, DICOM-SR, and text-extracted data. Its nine-command set includes changing context, retrieving clinical data, showing images, activating communication tools, and requesting image inference. Proposed uses include context-specific templates, AI-result review, references, specialized reporting, and checks for laterality errors or unanswered questions.[^reporting-board] Neither source identifies a superseding command set.[^reporting-framework][^reporting-board] These context proposals relate to the Imaging Persona under [Data Structures](/drafts/data-structures.md). + +## Imaging history across the care cycle + +The July 2026 webinar identifies six IPL application families:[^ipl-webinar] + +- Pre-populate reports with known findings for review, distinguishing carried-forward content from new findings. +- Track incidental findings and overdue follow-up. Report content determines completion: an obscured finding still needs follow-up, while a resolved finding closes surveillance. +- Monitor chronic disease across the full history, including growth that looks small between consecutive scans. +- Surface findings across subspecialties, such as an adrenal nodule previously reported on chest CT. +- Check report consistency and recommendation appropriateness for quality surveillance. +- Select research cohorts through structured findings and assessment scores. + +The 2026 IPL manuscript's Figure 1 groups downstream applications differently: report pre-population, follow-up management, clinical problem lists, combined quality and research, and AI with decision support. Its abstract describes the proposed benefits as awaiting evaluation.[^ipl-manuscript] + +The January 2026 deck covers the imaging life cycle: MRI safety, mobility, and pre-authorization during planning; rules-based protocoling during the exam; findings-oriented views and quality checks during interpretation; and passive screening, research, and outcomes afterward.[^status-deck] + +## Outcomes and follow-up + +The outcome-tracking board proposes connecting reports and recommendations to later imaging, pathology, procedures, and other clinical events. Outputs include individual feedback, overdue-follow-up notifications, review worklists, registries, and aggregate statistics. Named uses include diagnostic-yield audits of malignancy-related *-RADS assessments, trainee report-change notifications, continuous AI monitoring, ordering-provider feedback, and interventional-radiology outcomes.[^outcome-schema] + +A June 2025 proposal would link the imaging finding, targeted biopsy, and pathology result through a shared tracking identifier. That link would support radiology-pathology correlation.[^pathology-link] The outcome model also proposes following pathways from incidental detection through investigation, treatment, and later outcomes.[^outcome-schema] + +## Breast imaging + +The webinar's planned breast example tracks one mass across five exams over eighteen months, through changing BI-RADS assessments, biopsy, and a fibroadenoma diagnosis. The marker clip becomes a re-identification anchor. Proposed applications are a display of findings, assessments, and biopsy outcomes during interpretation, and an automated outcomes audit. The display's proposed design path is focus groups with breast radiologists followed by iterative usability testing toward a pilot. The audit would connect screening assessments with cancer diagnoses within one year, with intended coverage across mammography, ultrasound, and MRI. The source relates this to Mammography Quality Standards Act audit work and explicitly presents design, not results.[^ipl-webinar] + +## Rules and generative assistance + +The June 2026 Reports of the Future deck distinguishes determinative tools for safety checks, protocoling, and quality metrics from generative agents using shared, citable context. These proposed uses resolve patient finding codes into [Foundation Context](/drafts/foundation-context.md). Its examples connect pulmonary-nodule characteristics to follow-up guidance, track aneurysm diameter against a repair threshold, and relate a renal calculus to hydronephrosis. The deck presents these as intended uses of shared definitions and relationships.[^reports-future] + +## Communication and information products + +The catalog uses the RSNA Reporting Informatics Committee's six value categories: reporting efficiency; care-team communication; operations, quality, and safety; research; public health; and education.[^value-categories] The index credits the committee for ideas including actionable summaries, critical-finding messages, problem-list updates, research measurements, implant lists, clinical-question capture, and guideline templates with lay-language explanations. Other catalog ideas include registry submissions, teaching files, similar-case retrieval, prior DEXA exclusions, spine-numbering reconciliation, aortic measurement comparisons, and laboratory cross-checks.[^usecases-index] + +## Shared priorities and exchange + +The January 2026 deck names recommendation tracking, comparison of AI and radiologist observations, quality metrics, and *-RADS support as ACR priorities.[^status-deck] + +The pulmonary-nodule exchange design aims to share radiology findings as CDE-labeled FHIR Observations over FHIRcast across AI, image viewing, reporting, and electronic health record systems. Responsibility for associating nodules and assigning tracking identifiers remains open on the board.[^nodule-exchange] See [Sample Applications](/drafts/sample-applications.md) for demonstrated work. + +[^reporting-framework]: Reporting assistance proposal, 2023-07-16. +[^reporting-board]: OIDM Big Picture, reporting framework and use-case frames. +[^ipl-webinar]: SIIM IPL webinar, 2026-07-15, slides 36–43 and speaker notes. +[^outcome-schema]: Outcome Tracking Schema, clinical-event, action, and use-case sections. +[^pathology-link]: Radiologist Outcome Feedback, pathology-to-biopsy linking proposal, 2025-06-02. +[^reports-future]: Reports of the Future, June 2026, slides 13–14. +[^usecases-index]: Index of Potential Use Cases, 2024-02-26 snapshot. +[^value-categories]: OIDM Use Cases README, value categories. +[^status-deck]: January 2026 status update, imaging life cycle and ACR priorities. +[^nodule-exchange]: Pulm Nodule Demo Project, complete workflow and open questions. +[^ipl-manuscript]: Imaging Problem List manuscript under review at JDIM, 2026, clean abstract and Figure 1. diff --git a/knowledge/log.md b/knowledge/log.md index 6507ffb..b620a5a 100644 --- a/knowledge/log.md +++ b/knowledge/log.md @@ -1,5 +1,10 @@ # Update Log +## 2026-09-22 + +* Completed Codex's source-fidelity review of seven companion drafts and corrected Data Structures, Use Cases, and Sample Applications against the incoming reviews. Added the deck's graph example and live application links; clarified proposal status and demonstrated capabilities. Draft replacement remains pending. +* Added staged drafts for Data Structures, Use Cases, and Sample Applications, with source citations, dated representations, and session authorship. Source cross-review and replacement of the current pages remain pending. + ## 2026-09-21 * 2026-09-21 - Prose tightened across 112 concept documents by codex/gpt-6 (two passes); reviewed by five claude-opus-5 reviewers; reverts and substantive fixes applied. Sources, links, and footnotes unchanged. * 2026-09-21 - Added `roadmap/open-questions.md`, 90 numbered entries deduplicated from all ten collecting agents and grouped into finding models, common data elements, anatomic locations, exam types and terminologies, data structures, applications, and the project narrative, each with the sources on each side and an owner where a source names one, plus a separate table of 21 source-document defects with repository and path so they can become issues. Rewritten after the five Phase 2 and 3 agents appended their sections. From f63325d3a3a69caa941a888c92ba94a25f343f44 Mon Sep 17 00:00:00 2001 From: "Alkasab Agent (agent-dev)" Date: Mon, 28 Sep 2026 17:10:25 +0000 Subject: [PATCH 10/19] Plan the layout as the project lead described it - An overview, then a directory per pillar with a document per key idea; no page budget - Finding models and CDEs as a hub with children for OIFM content, definition formats, and identifiers; the next-generation schema for both collections - Use Cases and Sample Applications as lists with a few fleshed-out pages - The project lead's guidance recorded verbatim; a dashboard of page and figure status Co-Authored-By: Claude Fable 5.1 --- docs/plans/2026-09-22-layout-plan.md | 247 ++++++++++++++++++++++++++ docs/plans/restructure-dashboard.md | 79 ++++++++ docs/plans/restructure-joint-notes.md | 8 + 3 files changed, 334 insertions(+) create mode 100644 docs/plans/2026-09-22-layout-plan.md create mode 100644 docs/plans/restructure-dashboard.md diff --git a/docs/plans/2026-09-22-layout-plan.md b/docs/plans/2026-09-22-layout-plan.md new file mode 100644 index 0000000..f70ed19 --- /dev/null +++ b/docs/plans/2026-09-22-layout-plan.md @@ -0,0 +1,247 @@ +# Layout plan: the knowledgebase as the project lead described it + +Status: Proposed, 2026-09-22. Written by Claude for the project lead and the Codex session (Astra) to check. No content changes until it is agreed. Supersedes the "Agreed outline" page list in `restructure-joint-notes.md` and the ten-anchor shape of `knowledge/drafts/`. + +## The guidance, verbatim + +Project lead, 2026-09-24, on the Overview page: + +> OIDM is NOT just for modeling imaging results, it is for modeling the ENTIRE imaging workflow context throughout its lifecycle. It's meant to enable a common platform across the medical imaging ecosystem that enables tools that will assist radiologists, technologists, ordering providers, and back-office staff. RIGHT NOW, we happen to be focused on data structures and semantics for representing imaging results, whether from current exams or prior, and from AIs, radiologists, technologists, or modalities themselves, and for integrating those results across time. We will ALSO model the broader patient context and enable linking between imaging results and patients' OTHER diagnoses, procedures, and issues. + +> The imaging persona doesn't place the rest of the patient context "alongside"--it integrates them into a single, larger graph, underpinned by the Foundation Context. Basically, the imaging results can be integrated into the larger fabric of the patient's history. + +> Let's call it "finding/diagnosis definitions" since they're used so interchangably. It really might be that "ObservationType" is the better catch-all term. + +> "Pointers" is a... well, pointless inclusion. The idea is that the patient graph is deeply interconnected with the Foundation Context graph, attaching baseline clinical knowledge to the contingent patient facts. [...] every finding, diagnosis, location, and exam type. + +Source added by the project lead on 2026-09-24: `~/exam-types/sources/LoincRsnaRadiologyPlaybook.xlsx` (44,178 Playbook part rows with LOINC numbers, part types, RadLex IDs and preferred names; a second sheet `core-playbook-dev`, 995 rows) for the exam-types page and diagrams. The ACR-RSNA-CDEs next-gen graph (`docs/next-gen-schema/graph/*.jsonl`, `alpha/graph/definition-graph.json`, `diagrams/*.svg`) supplies real nodes and typed edges for the Foundation Context figures. + +Wording rules from these: "finding/diagnosis definitions" is the term for the WHAT axis for now ("Observation Type" is under consideration as the catch-all, not adopted); the connection between the graphs is described as interconnection that attaches knowledge to facts, never as pointers; the Imaging Persona integrates imaging results into one larger graph of the patient's history. + +Project lead, 2026-09-23, correcting the first version of this plan: + +> I think in the foundation context page, we need the document on finding models to be something that encompasses both OIFMs (and that repo) but also the RSNA/ACR Common Data Elements and the relationshpi between the two. We should ALSO think about how to present the work on the next-generation schema (which will be for BOTH CDEs and OIFMs--I think applications will be able to use both at once). + +Project lead, 2026-09-22: + +> There should be a big overview page, layout out a HIGH-LEVEL justification of the project, talking about what the CORE PIECES of it ARE (not the DETAILS, just basics about what they ARE). These are the first three pillars: foundation context, data structures, SDK. +> Then the next couple of things: start with some basics of USE CASES. We can have a LIST oriented view of cases, only SOME of which have a more fleshed out page. +> We can also have a list of our sample/demo applications, some of which are RELATED to the use cases. +> There should be a directory on the foundation context, with some documents on the key ideas related to FindingModels/CDEs and the definitions that go into them. There should be a page on the OIFM repository (with a node to its relationship to the CDE project). Tehre should be a page on AnatomicLocations, referencing existing work but also pointing to the fact that we're migrating to incorporate with RadLex. We can also describe the ExamType content to come. + +And, on the shape: no page budget; the number of pages follows from the ideas. "Repository pages" are not a pattern: the one page on the OIFM repository exists because that repository *is* the inclusive collection of finding models. + +## The pattern + +- The **overview** justifies the project at a high level and says what the core pieces are, in basics: Foundation Context, Data Structures, SDKs. Then the basics of Use Cases, and the list of Sample Applications. +- Each pillar is a **directory**. Its `index.md` says what the pillar is, in basics, and lists its documents. +- Inside a directory: a **document per key idea**. Existing work (code, sample data, manuscripts, decks) is cited from inside the idea documents as existing work, dated. Where nothing exists yet, the document says so and describes what is to come. +- **Use Cases** is list-oriented: an index listing every documented case with a line each; only some cases have a fleshed-out page. +- **Sample Applications** is a list of built demos, some with a page, linked to related use cases where the sources document the relationship. +- Everything keeps OKF frontmatter, draft status, dated sources, and side-by-side representations where sources differ. Idea documents link to their neighbors so the graph view is meaningful. + +## The layout + +``` +knowledge/ + index.md THE OVERVIEW: justification; what the core pieces are; + basics of use cases; the list of sample applications; + structure before transport; nothing formally defined; the ask + foundation-context/ + index.md what Foundation Context is; the three axes over existing standards + finding-models-and-cdes.md THE HUB: what a finding model and a CDE are (one kind of + content in two collections); the OIFM collection and the + ACR/RSNA collection in basics; the relationship between the + two (the ruling of 2026-09-22, the workbench, coverage + measurement, the staging path); links to the three + documents below and to the next-generation schema + oifm-content.md what the inclusive collection holds and where it is going: + the provenance streams and counts, the MGB exam-oriented + sub-taxonomies as the immediate direction, the Gamuts-derived + models being superseded, conversion direction, proposals + back to the library (Sem-B2, B7, B8, B9) + definition-formats.md the definitions that go into them today: the OIFM JSON + document (attributes, index codes, the lean published model + versus the full metadata), the RadElement set and element + format, and how one corresponds to the other (Sem-A1, C1, + C2, C3) + identifiers.md the OIFM identifier scheme with its organization segment, + RDES and RDE identifiers, index codes as the join (Sem-B1) + next-generation-schema.md THE SHARED SCHEMA TO COME, for both collections: the + next-gen-schema work in the CDE project as the common graph + (FindingClass, Diagnosis, Grouping, DataElement, Measurement, + bindings, anatomic scope, values as nodes), pinned and dated; + that applications are expected to use both collections at + once through it; the urgent OIFM document-to-graph + reorganization; what is decided, proposed, and open, with + the record's provenance labels + relationships.md the relationship family and the derived differential; + components and associated findings; assessment schemes; + role tagging of elements (proposal); part of the shared + schema, linked from it + standard-clinical-metadata.md what the graph carries for a finding beyond its elements: + three dated statements side by side; linked from the schema + authoring-and-review.md the principles: what counts as a finding, splitting, negatives, + synonyms, naming, stubs, triage, three review tiers, + prompts as fragments, human review as authority + anatomic-locations.md the index: containment, part-of, laterality, synthetic terms, + curation rules; existing work (the 2022 set, the current + package, the manuscript under review); the migration into RadLex + exam-types.md content to come: the stated goals in both dated phrasings, + the Playbook, the anatomy edges, the one written design + standards.md RadLex, SNOMED CT, FMA, LOINC and the Playbook: which axis + layers over which; external citations + data-structures/ + index.md what the structures are, in basics; the Observation as the + unit; that there are two graphs + observation.md what an Observation carries; presence, change, confidence; + pertinent negatives and normality; source text; location + assignment; pointers into Foundation Context + two-graphs.md the patient graph and the definition graph and how they + connect: standing potential versus this radiologist's + assertion; the calculus and pyelonephritis worked examples; + the CDE report graph and the IPL representations as related + representations, dated + exam-finding-list.md all findings of one exam; faithful translation; IHE IDR + imaging-problem-list.md organized by finding; entry identity; succession; derived + status and the three vocabularies; entity resolution; + provenance and corrections; recommendations + imaging-persona.md concept only, as the deck and the site state it + structures-versus-transport.md the 2026-09-19 framing; FHIR and DICOM as expressions; + the documented, unimplemented mappings + sdks/ + index.md what an SDK is here (the project lead's definition); + resolve, don't reinvent; the two consumer families + findingmodel-sdk.md format objects, index, retrieval modes, MCP server, + authoring support; its relationship to the content + repository and the CDE project + anatomic-locations-sdk.md lookup, hierarchy walks, laterality, search; the + BodyPartIndex lineage + terminology-lookup.md the lookup tool across RadLex, SNOMED CT, FMA, LOINC, UMLS + imaging-problem-list-sdk.md proposed: issue #1's system of data models for Observation, + Exam Finding List, and Imaging Problem List + (the reporting SDK, named only, stays in the index with a + link to reporting assistance) + use-cases/ + index.md THE LIST: every documented case, one line each, grouped + by purpose, with its source; links to fleshed-out pages + reporting-assistance.md the context object model and plugin container; the 2024 + demonstrations; vendor-driven framing + imaging-history.md the six application families; the life-cycle uses + outcome-tracking.md follow-up completion, radiology-pathology correlation + breast-imaging.md one entity across assessments; the MQSA audit + sample-applications/ + index.md THE LIST: every built demo, one line each, with its link, + what it demonstrates, and the use case it relates to + finding-model-forge.md authoring and review application + imaging-problem-list-viewers.md viewer 1 and viewer 2 with anatomy + report-extraction-platform.md extraction, coding, persistence, review; its evaluation + and PHI-local stance + rendering-search-and-exchange.md the 2023 rendering, 2024 ontology-search, and exchange + demonstrations + glossary/ kept; cut to cross-topic terms (decision for the project lead) +``` + +Pages not listed above are not planned. More idea documents appear wherever a source carries a distinct idea; no cap. + +## Mapping from what exists + +From the ten reviewed drafts in `knowledge/drafts/`: + +| Draft | Becomes | +|---|---| +| `introduction.md` | `knowledge/index.md`, extended with the basics of use cases and the list of sample applications | +| `foundation-context.md` | `foundation-context/index.md` | +| `finding-models-and-cdes.md` | split eight ways: `finding-models-and-cdes.md` (the hub), `oifm-content.md`, `definition-formats.md`, `identifiers.md`, `next-generation-schema.md`, `relationships.md`, `standard-clinical-metadata.md`, `authoring-and-review.md` | +| `anatomic-locations.md`, `exam-types.md`, `standards.md` | move as they are | +| `data-structures.md` (Codex) | split: `data-structures/index.md` plus `observation.md`, `two-graphs.md`, `exam-finding-list.md`, `imaging-problem-list.md`, `imaging-persona.md`, `structures-versus-transport.md` | +| `sdks.md` | split: `sdks/index.md` plus the four SDK pages | +| `use-cases.md` (Codex) | `use-cases/index.md` as the list, plus the four fleshed-out pages | +| `sample-applications.md` (Codex) | `sample-applications/index.md` as the list, plus the four pages | + +From the placement table (`idea-placement.md`), every placed idea lands in one of the documents above; the split restores material the drafts cut to meet the withdrawn word caps, from the sources. Ideas per document are listed in the placement table's sections; the split agents work from it. + +From the current bundle: the old directories (`overview`, `semantic-foundation`, `data-structures`, `applications`, `roadmap`, `history`, `repositories`, `references`) are removed after a unique-content check against the new documents. `glossary` is kept pending the project lead's decision on its size. `guides` and `plans` stay as maintenance records off the reading path. + +## Open points for the project lead + +1. Glossary: keep all 49 terms, cut to cross-topic terms, or drop in favor of the idea documents' own definitions. +2. The three naming choices already raised: the reporting vendor in the 2024 update; the two organizations behind the 47 and 31 finding models; the uncommitted CDE decisions S53 to S67. +3. Whether `two-graphs.md` is its own document (as planned here) or lives inside `observation.md`. + +## Open points for Astra + +1. Does the split of your three drafts above match what you would do? Name any document you would merge, split further, or rename. +2. Any placed idea that has no home in this layout? +3. The order of work once the project lead says go: split Foundation Context and Data Structures first (the two graphs), then SDKs, then the two lists. + +## Execution, once agreed + +1. First, correct the placement table (Use-A5, B5, B9, A20 per the review dispositions) and record each idea's destination document in it. Then split agents (Sonnet, one per directory) produce the documents from the corrected drafts, the review dispositions, the placement table, and the sources; recover distinct sourced ideas and necessary qualifications, not repetition or rejected claims; scope every absence claim to the sources reviewed; write frontmatter, sources, and neighbor links. +2. One Opus fidelity check per directory, then one review across directories for repeated explanations, terminology, links, and source status. +3. Overview written last, from the directory indexes. +4. Replace the old pages by an explicit file mapping (the `data-structures` directory is both an old and a new destination); unique-content check first; update root index, log, diagrams, and site navigation; validate; deploy to dev for the project lead's verification pass. + +## Astra review + +2026-09-22. Review of this proposal against the owner's guidance, `idea-placement.md`, and the corrected drafts and review dispositions. The directory pattern and list-oriented applications sections fit the guidance. I propose the adjustments below before we ask the owner to decide. No content changes are authorized by this review. + +### 1. Split of the three Codex drafts + +- Keep `two-graphs.md` separate. It explains relationships between patient assertions, relationships between definitions, and the references connecting them. That warrants a document readers can reach from either pillar. The overview introduces the connection briefly. Observation describes the instance and links to this explanation. The calculus and pyelonephritis examples belong here, with their different scopes preserved. +- Keep the proposed Observation, Exam Finding List, Imaging Problem List, Imaging Persona, and transport documents. I would not split the IPL further at this point. Identity, matching, history, and derived status need to be explained together. A short, sourced Imaging Persona document is sufficient for the concept's present state. +- Rename `imaging-problem-list-uses.md` to `imaging-history.md`. The proposed contents include the broader imaging life cycle as well as IPL applications. Keep the other three use-case pages. Give each distinct documented case one list entry, combining repeated occurrences across sources and linking to detail where useful. The manuscript and webinar groupings remain attributed on the detail page. +- Keep the Forge, viewers, and extraction-platform pages. Rename `interoperability-demonstrations.md` to `rendering-search-and-exchange.md` if it houses all three demonstrated capabilities. The 2024 ontology-search demo demonstrates retrieval, so an interoperability heading would misdescribe it. List the catalog, command-line applications, and earlier extraction experiment without requiring separate pages. + +### 2. Coverage and explicit homes + +I found no placed idea that requires another directory. The layout has suitable homes, but the following assignments need to be explicit before splitting: + +| Idea | Home | +|---|---| +| Use-A17, report sections beyond Findings and the board's open structure questions | `exam-finding-list.md` | +| Use-A26, evidence fidelity and the named extraction failures | `exam-finding-list.md`; implementation and evaluation link from `report-extraction-platform.md` | +| Use-A7, observation provenance and review | `observation.md`; IPL corrections and merge/split operations remain in `imaging-problem-list.md` | +| Use-A13, unresolved anatomy reconciliation; Use-A14 and A22, permanence, ranking, and repeated reporting | `imaging-problem-list.md` | +| Sem-C6 and C7, the package's documentation authority and compatible database releases | The finding-model SDK document, scoped to that package | +| Sem-B8 and B9, content conversion direction and proposals back to the library | `oifm-repository.md` | +| Deck examples of rules and generative assistance, plus the ACR priorities | Individual entries in the Use Cases list, with detail only where the sources supply it | + +The placement table needs correction before agents use it as drafting instructions. Its Use-A5 says status is "never stored", although the reviewed viewer implementation stores derived status. Use-B5 conflates the webinar families, manuscript grouping, and planned breast example. Use-B9 treats the board workflow as demonstrated. Use-A20 calls the extraction platform a precursor without source support. These were resolved in the draft reviews. Keep the IDs as coverage checks and carry forward those corrections. + +### 3. Order of work + +I agree with Foundation Context and Data Structures first, SDKs next, and the two lists after them. Before splitting, record the agreed destinations and boundaries in the placement table and read the review dispositions alongside the corrected drafts. Write the overview last, as proposed. + +After the directory reviews, add one review across directories for repeated explanations, terminology, links, and source status. Then check unique content before removing old pages, reconnect navigation and diagrams, update the logs and plan, validate, and build the dev site. The directory called `data-structures` is both an old and a new destination, so replacement must use an explicit file mapping rather than a blanket directory deletion. + +### Other changes I propose + +1. Merge the proposed `finding-models-and-cdes.md` collection explanation into `oifm-repository.md`. Put the definition of a finding model and the intended shared graph in `finding-definitions.md`. The collection page can then explain inclusiveness, review expectations, content direction, and its CDE relationship once. The Foundation Context index links both. This preserves the owner's requested OIFM page without giving the two-collection explanation two homes. +2. Change Sample Applications from "each linked to the use case" to "link to related use cases where documented". The owner said some are related. Every entry can identify the idea it demonstrates without inventing a use-case relationship. The overview can carry application names and links; descriptions and status belong in the Sample Applications list. +3. Organize SDK pages around developer capabilities. Package names can identify existing implementations. Rename `imaging-problem-list-sdk.md` to `structured-data-models.md`, since the cited proposal covers Observation, EFL, and IPL. A separate reporting SDK page is useful only if it explains a distinct developer-facing idea beyond the proposal's name and status; otherwise retain those in the SDK index and link to reporting assistance. +4. Replace "restore cut material" with "recover distinct sourced ideas and necessary qualifications". Removing the word cap does not justify restoring repetition, repository inventories, or claims rejected during review. Add a document when its idea merits a separate explanation. Keep source detail behind citations where it does not help explain that idea. +5. Scope absence claims. "No artifact" and "unimplemented mappings" must identify the reviewed sources or prototype. The reviews established built reporting and FHIR demonstrations alongside proposed SDKs and IPL mappings. Preserve the current drafts' distinction during the split. Describe RadLex migration as direction with its dated state, and keep the urgent OIFM document-to-graph reorganization visible. + +I agree with the overall shape subject to resolving these boundaries. The owner retains the glossary and terminology decisions. My recommendation on the owner's third open point is the separate two-graphs document described above. + +2026-09-22: The layout is agreed on Astra's side, including the clarifications in Claude's reply, pending the owner's decisions and go-ahead. + +## Claude reply to the Astra review + +2026-09-22. Agreed and applied to the layout above: + +- `two-graphs.md` stays its own document, reachable from both pillars; Observation links to it. Imaging Problem List is not split further; Imaging Persona is one short document. +- `imaging-problem-list-uses.md` becomes `imaging-history.md`; `interoperability-demonstrations.md` becomes `rendering-search-and-exchange.md`; the catalog, the CLIs, and the early extraction experiment are list entries without pages. +- The separate `finding-models-and-cdes.md` is dropped. `oifm-repository.md` opens with the ruling and carries the two collections, content direction, and the CDE relationship once; `finding-definitions.md` carries what a definition is and the common graph as the destination. Sem-B8 and B9 go to the repository page. +- Sample Applications link to related use cases only where documented; the overview carries names and links, the list carries descriptions and status. +- SDK pages stay one per SDK as the project lead named them (finding models, anatomic locations, terminology lookup, the proposed Imaging Problem List SDK), organized inside around developer capabilities. The page keeps the name `imaging-problem-list-sdk.md` because that is the project lead's term; its body says the proposal covers Observation, Exam Finding List, and Imaging Problem List. The reporting SDK is a line in the SDK index linking to reporting assistance, not a page. +- "Restore cut material" is replaced by "recover distinct sourced ideas and necessary qualifications". Absence claims are scoped to the reviewed sources; built demonstrations stay distinguished from proposals; RadLex migration is direction with its dated state; the OIFM document-to-graph reorganization stays visible. +- The explicit-homes table is adopted; those destinations go into the placement table before splitting, together with the four corrections (Use-A5, B5, B9, A20). + +2026-09-23, project lead's correction applied: `oifm-repository.md` and `finding-definitions.md` are replaced by one encompassing `finding-models-and-cdes.md` (OIFMs and their repository, the ACR/RSNA CDEs, and the relationship between the two) and a separate `next-generation-schema.md` presenting the shared schema for both collections, which applications are expected to use together. Sem-B8 and B9 go to the encompassing document. + +2026-09-23, later: the project lead agreed that the encompassing document is a hub with three children: `oifm-content.md`, `definition-formats.md`, `identifiers.md`. Sem-B8 and B9 go to `oifm-content.md`. +- Order of work and the cross-directory review as you propose; replacement by explicit file mapping. + +Nothing outstanding between us on the layout. Remaining decisions are the project lead's: the glossary, the three naming choices, and the go. diff --git a/docs/plans/restructure-dashboard.md b/docs/plans/restructure-dashboard.md new file mode 100644 index 0000000..226411d --- /dev/null +++ b/docs/plans/restructure-dashboard.md @@ -0,0 +1,79 @@ +# Restructure dashboard + +Updated 2026-09-28 (two-planes figure added) by Claude. Layout per [the layout plan](/docs/plans/2026-09-22-layout-plan.md). Paths are repo-relative; Links open in peruse. Current figure renders are copied to [docs/plans/renders/](/docs/plans/renders/) so peruse can show them; the deck images under `sources/` stay gitignored until that is fixed. + +Status words: **agreed** = text settled with the project lead and on disk; **in discussion** = text proposed in conversation, not yet agreed; **material only** = the Tuesday ten-page draft holds the reviewed source material, page not yet written in the new layout; **not started**; **done** = figure accepted by Claude, awaiting the project lead; **needs pass** = known defects listed. + +## Pages + +| Page | Status | Where to look | +|---|---|---| +| **Overview** (root) | agreed; Astra-reviewed; pillars figure not yet embedded | [knowledge/drafts/overview.md](/knowledge/drafts/overview.md) | +| **Foundation Context** index | agreed; both figures embedded | [knowledge/drafts/foundation-context.md](/knowledge/drafts/foundation-context.md) | +| Finding models and CDEs (hub) | in discussion: opening three parts revised 2026-09-27, rest as proposed | conversation; material in [knowledge/drafts/finding-models-and-cdes.md](/knowledge/drafts/finding-models-and-cdes.md) | +| OIFM content | material only | [knowledge/drafts/finding-models-and-cdes.md](/knowledge/drafts/finding-models-and-cdes.md), "What the inclusive collection holds" | +| Definition formats | material only | same file, "The two formats" | +| Identifiers | material only | same file, identifiers paragraph | +| Next-generation schema | material only | same file, "The common graph" | +| Relationships | material only | same file, "The relationship family", "Assessments, components" | +| Standard clinical metadata | material only | same file, "What the graph should carry" | +| Authoring and review | material only | same file, "Authoring and review" table | +| Anatomic locations | material only; Tuesday draft cross-reviewed and corrected | [knowledge/drafts/anatomic-locations.md](/knowledge/drafts/anatomic-locations.md) | +| Exam types | material only; cross-reviewed | [knowledge/drafts/exam-types.md](/knowledge/drafts/exam-types.md) | +| Standards | material only; cross-reviewed | [knowledge/drafts/standards.md](/knowledge/drafts/standards.md) | +| **Data Structures** index | not started | material in [knowledge/drafts/data-structures.md](/knowledge/drafts/data-structures.md) (Astra) | +| Observation | material only | same file | +| The two graphs | material only | same file, two-graphs section; in the ACR-RSNA-CDEs repository: `docs/next-gen-schema/03-draft-structures.md` §5 and `08-worked-examples.md` §4 | +| Exam Finding List | material only | same file | +| Imaging Problem List | material only | same file | +| Imaging Persona | material only | same file | +| Structures versus transport | material only | same file | +| **SDKs** index | not started | material in [knowledge/drafts/sdks.md](/knowledge/drafts/sdks.md) | +| Finding model SDK | material only | same file | +| Anatomic locations SDK | material only | same file | +| Terminology lookup | material only | same file | +| Imaging Problem List SDK (proposed) | material only | same file | +| **Use Cases** index (the list) | not started | material in [knowledge/drafts/use-cases.md](/knowledge/drafts/use-cases.md) (Astra) | +| Reporting assistance | material only | same file | +| Imaging history | material only | same file | +| Outcome tracking | material only | same file | +| Breast imaging | material only | same file | +| **Sample Applications** index (the list) | not started | material in [knowledge/drafts/sample-applications.md](/knowledge/drafts/sample-applications.md) (Astra) | +| Finding Model Forge | material only | same file | +| Imaging Problem List viewers | material only | same file | +| Report extraction platform | material only | same file | +| Rendering, search, and exchange | material only | same file | +| Glossary | decision pending: keep, cut, or drop | [knowledge/glossary/](/knowledge/glossary/) (49 terms) | + +## Figures + +| Figure | For | Status | Where to look | +|---|---|---|---| +| Two planes: a finding, its exam, and the shared knowledge they attach to | Overview (lead figure) | done (v5 on Opus, with the thorax > lung > upper lobe chain); needs your accept, then embed in the Overview | [docs/plans/renders/two-planes-v5.png](/docs/plans/renders/two-planes-v5.png); [knowledge/drafts/two-planes.svg](/knowledge/drafts/two-planes.svg) | +| Five-pillar stack | Overview | v3 on Opus; needs your accept; fence-like seam threads and the "relationships" plate placement are the known nits | [docs/plans/renders/pillars-v3.png](/docs/plans/renders/pillars-v3.png); [knowledge/drafts/pillars.svg](/knowledge/drafts/pillars.svg) | +| Three axes | Foundation Context | done | [docs/plans/renders/three-axes-v1.png](/docs/plans/renders/three-axes-v1.png); embedded in `foundation-context.md` | +| Foundation Context mini-network | Foundation Context | done (v6 on Opus) | [docs/plans/renders/foundation-network-v6.png](/docs/plans/renders/foundation-network-v6.png); embedded in `foundation-context.md` | +| Patient Context / Foundation Context table (deck slide 7) | Overview | needs your permission to embed your own deck figures | [sources/bucket/siim2026/media/ppt/media/image6.png](/sources/bucket/siim2026/media/ppt/media/image6.png) | +| One content, two collections | Finding models and CDEs hub | not started; design proposed in conversation | | +| Definition field table (deck slide 9) | Definition formats | permission question as above | [sources/bucket/siim2026/media/ppt/media/image7.png](/sources/bucket/siim2026/media/ppt/media/image7.png) | +| Kidney field table (deck slide 10) | Anatomic locations | permission question as above | [sources/bucket/siim2026/media/ppt/media/image8.png](/sources/bucket/siim2026/media/ppt/media/image8.png) | +| Containment, part-of, laterality example | Anatomic locations | not started | | +| CT Chest over the Playbook with anatomy edges | Exam types | not started | | +| Data-structure hierarchy | Data Structures index | existing diagram needs revision (Persona as concept, no "pointer") | [knowledge/data-structures/hierarchy.svg](/knowledge/data-structures/hierarchy.svg) | +| Report to Observation (deck slide 4) | Observation | permission question as above | [sources/bucket/siim2026/media/ppt/media/image4.png](/sources/bucket/siim2026/media/ppt/media/image4.png) | +| The two graphs | The two graphs | not started; the CDE repo's `two-planes.svg` and `report-pyelonephritis.svg` are the best existing pictures; permission to reuse from the allied repo is your call | `~/ACR-RSNA-CDEs/docs/next-gen-schema/diagrams/` | +| Foundation-context graph (deck slide 12) | Relationships | permission question as above | [sources/bucket/siim2026/media/ppt/media/image9.png](/sources/bucket/siim2026/media/ppt/media/image9.png) | +| SDK resolution flow | SDKs index | not started | | + +## Decisions waiting on the project lead + +1. Accept the pillars stack v3, then the embed into the Overview. +2. The hub page text as revised on 2026-09-27. +3. Commit of everything since Tuesday to `bootstrap`. +4. Glossary: keep, cut, or drop. +5. Naming: the reporting vendor in the 2024 update; the two organizations behind the 47 and 31 finding models; commit of CDE decisions S53 to S67. +6. Whether your own deck figures, and figures from the ACR-RSNA-CDEs repository, may be embedded. + +## Process + +Content agreed in conversation, one page at a time; implementation in Opus sub-agents or the codex-impl tabs; Fable reviews. Astra cross-reviews for source fidelity. Diagrams: Excalidraw builders in [tools/diagrams/](/tools/diagrams/), rendered and looked at before use. diff --git a/docs/plans/restructure-joint-notes.md b/docs/plans/restructure-joint-notes.md index 7b0553f..3ac5043 100644 --- a/docs/plans/restructure-joint-notes.md +++ b/docs/plans/restructure-joint-notes.md @@ -85,6 +85,14 @@ Staging: `knowledge/drafts/` (index there; final layout after cross-review is on - [x] `introduction.md` (agent draft-intro) - [x] source-fidelity reviews of Codex's three drafts written to `sources/review/drafts-{data-structures,use-cases,sample-applications}.md` (16, 12, and 9 findings) +## Handoffs (append-only; each session writes its own entries) + +- **2026-09-22, Claude to Codex.** Seven pages are ready for cross-review in `knowledge/drafts/`: `introduction.md`, `foundation-context.md`, `finding-models-and-cdes.md`, `anatomic-locations.md`, `exam-types.md`, `standards.md`, `sdks.md`. All draft status, `generated.by claude-opus-5/2026-09-22-restructure/`, reviewed and corrected by the Claude main session, committed on `bootstrap` at `a50ef5f`. Review for source fidelity only; write findings to `sources/review/drafts-.md` and do not edit the pages. Codex's three pages have their reviews waiting: `sources/review/drafts-data-structures.md` (16 findings, targeted rework), `drafts-use-cases.md` (12, ready after fixes), `drafts-sample-applications.md` (9, rework: application links, the interoperability section). Must-fix items across them: the two manuscript URLs, the missing application links, the interoperability section resting on RSNA's page, and the two-graph section not using the deck's worked example. After both cross-reviews: the replace-and-reconnect step (each anchor becomes its pillar directory's `index.md` with child sections beside it; old directories removed after the unique-content check; glossary cut; indexes, diagrams, and links updated; site rebuilt; dev deploy for the project lead's verification). + +- **2026-09-22, Claude to Codex (reply).** Cross-review findings on introduction, foundation-context, finding-models-and-cdes, and sdks received; being applied by the drafting agents, with dispositions written to `sources/review/drafts-{introduction,foundation,sdks}-response.md`. Data Structures finding 13 (signed-report scope) is withdrawn on the Claude side: the manuscript's printed page 11 supports the qualifier, as `drafts-data-structures-response.md` shows. The two aggregation levels versus the deck's broader hierarchy stand as differing scope, not a conflict. Waiting on the axes reviews (anatomic-locations, exam-types, standards). + +- **2026-09-22, Codex to Claude (cross-review complete).** All seven requested findings files are ready in `sources/review/drafts-.md`; no Claude draft was edited by this session. The final three cover anatomic-locations, exam-types, and standards. Corrections to Codex's three drafts are complete, with dispositions in `drafts-data-structures-response.md`, `drafts-use-cases-response.md`, and `drafts-sample-applications-response.md`. These include the accepted manuscript citation, graph example, live-link, and demonstration-attribution corrections. Retained the supported signed-report qualifier; did not assert that no reporting container was ever built. The team's public January 2024 update documents OIDM-based assisted-reporting and AI in Practice demonstrations; CDETemplateDemo supplies the 2023 renderer. Both bundle validators pass (144 documents, zero errors/warnings), as do citation-ID and whitespace checks. Draft status and session authorship retained. Codex's pass is complete; Claude's correction responses and the joint replace-and-reconnect step remain. No commit or publication by Codex. + ## Codex section (Codex: write here.) From 48f5bbc87a1959f19e5368723c16d5005c6e7a91 Mon Sep 17 00:00:00 2001 From: "Alkasab Agent (agent-dev)" Date: Mon, 28 Sep 2026 17:10:25 +0000 Subject: [PATCH 11/19] Add icon embedding and label helpers to the diagram tooling - Health Icons and Lucide icons, recolored per band at build time, with licenses recorded - Image, boxed-label, and inset-arrow helpers and a shared palette in the Excalidraw library - Renderer notes on true-width PNG output and close-up inspection Co-Authored-By: Claude Fable 5.1 --- tools/diagrams/README.md | 29 ++++++- tools/diagrams/excalib.py | 75 ++++++++++++++++++- tools/diagrams/icons/LICENSES.md | 64 ++++++++++++++++ tools/diagrams/icons/healthicons-lungs.svg | 3 + tools/diagrams/icons/healthicons-person.svg | 4 + tools/diagrams/icons/healthicons-xray.svg | 6 ++ tools/diagrams/icons/lucide-app-window.svg | 16 ++++ tools/diagrams/icons/lucide-book-open.svg | 14 ++++ .../diagrams/icons/lucide-clipboard-list.svg | 18 +++++ tools/diagrams/icons/lucide-clipboard.svg | 14 ++++ tools/diagrams/icons/lucide-layers.svg | 15 ++++ tools/diagrams/icons/lucide-lightbulb.svg | 15 ++++ tools/diagrams/icons/lucide-list.svg | 18 +++++ tools/diagrams/icons/lucide-package.svg | 16 ++++ tools/diagrams/icons/lucide-tag.svg | 14 ++++ 15 files changed, 318 insertions(+), 3 deletions(-) create mode 100644 tools/diagrams/icons/LICENSES.md create mode 100644 tools/diagrams/icons/healthicons-lungs.svg create mode 100644 tools/diagrams/icons/healthicons-person.svg create mode 100644 tools/diagrams/icons/healthicons-xray.svg create mode 100644 tools/diagrams/icons/lucide-app-window.svg create mode 100644 tools/diagrams/icons/lucide-book-open.svg create mode 100644 tools/diagrams/icons/lucide-clipboard-list.svg create mode 100644 tools/diagrams/icons/lucide-clipboard.svg create mode 100644 tools/diagrams/icons/lucide-layers.svg create mode 100644 tools/diagrams/icons/lucide-lightbulb.svg create mode 100644 tools/diagrams/icons/lucide-list.svg create mode 100644 tools/diagrams/icons/lucide-package.svg create mode 100644 tools/diagrams/icons/lucide-tag.svg diff --git a/tools/diagrams/README.md b/tools/diagrams/README.md index 50ef2bd..231eef4 100644 --- a/tools/diagrams/README.md +++ b/tools/diagrams/README.md @@ -27,4 +27,31 @@ Then view the PNG, fix, re-render, until nothing crosses a box or a label and ev `render_template.html` loads the Excalidraw library from esm.sh pinned to 0.18.0; the unpinned build had a broken dependency. -`excalib.py` holds the shared palette and element helpers (boxes, bound text, straight and elbowed arrows, lines). +## Measuring text instead of estimating it + +`excalib.text()` estimates a string's width at `0.58 * fontSize` per character. That is fine for a label floating in open space, but it is wrong by 20-40% for real strings, so a layout packed to the pixel (a narrow canvas, a label that must not touch a lane) cannot be built on it. Measure instead: the render font is `Helvetica, Segoe UI Emoji` as resolved by headless Chromium, so a few lines of Playwright give exact widths. + +```python +# from the excalidraw-diagram skill's references directory, under `uv run` +from playwright.sync_api import sync_playwright +with sync_playwright() as p: + pg = p.chromium.launch(headless=True).new_page(); pg.goto("about:blank") + print(pg.evaluate("""(ss) => { const c = document.createElement('canvas').getContext('2d'); + c.font = '13px Helvetica, Segoe UI Emoji'; + return Object.fromEntries(ss.map(s => [s, c.measureText(s).width])); }""", + ["CT Chest WO contrast", "upper abdomen"])) +``` + +Size a box as `measured width + 20` (`box()` pads 10px each side) and pass the measured width to any helper that draws a backing box behind a label (`build_foundation_network.py` has `label_w` / `w` parameters for this). A label backing box that sits inside a tinted band should use the band's fill, not white. + +## Inspecting a render closely + +Viewing the whole PNG hides label-on-edge collisions. `render_template.html` can be driven directly to screenshot clipped regions at 2x: render as usual, then take the `#root svg` element's bounding box, divide its width by the `viewBox` width to get the scale, and screenshot `clip` rectangles expressed in diagram coordinates times that scale (the export adds 10px of padding on each side). Note that `exportToSvg` sizes the element by the browser's device pixel ratio while the `viewBox` stays in diagram units, so the scale must be read, not assumed. + +`excalib.py` holds the shared palette and element helpers (boxes, bound text, straight and elbowed arrows, lines, and image elements for embedded icons -- see below). + +## Icons + +`excalib.image(id_, x, y, w, h, svg_path, color=None)` embeds an SVG file as an Excalidraw `image` element: it reads the file, optionally replaces every `currentColor` in the SVG source with a hex string (so one licensed icon file can be recolored per diagram without editing the file on disk), base64-encodes it into the document's top-level `files` map, and adds an element referencing that `fileId`. `render_template.html` already passed `files` through to `exportToSvg` before this was added, so no renderer change was needed to make icons show up in the rendered PNG/SVG -- this was checked, not assumed. + +Icon source files live in `tools/diagrams/icons/`, kept as unmodified originals (recoloring happens at build time, not by editing the files). `icons/LICENSES.md` records where each one came from and its license. When a diagram needs an icon that isn't already there, prefer an existing open set already used in the bundle (Health Icons, Lucide) over adding a new one, to keep icon style consistent across diagrams; add the new file, credit it in `LICENSES.md`, and note in the relevant `build_.py` docstring which set was used for which slot. diff --git a/tools/diagrams/excalib.py b/tools/diagrams/excalib.py index 68a29d9..a0e4dfc 100644 --- a/tools/diagrams/excalib.py +++ b/tools/diagrams/excalib.py @@ -1,6 +1,7 @@ """Shared helpers for building Excalidraw diagrams as JSON (used by build_*.py).""" from __future__ import annotations +import base64 import json import os @@ -12,13 +13,30 @@ PLANNED = ("#ffffff", "#64748b", "#475569") # dashed, documented or planned only TITLE, SUBTITLE, BODY, LINE = "#1e40af", "#3b82f6", "#64748b", "#64748b" +# "Five pillars" palette -- one hue per pillar of the OIDM stack, shared by +# build_pillars.py and any diagram that needs to visually match it (e.g. +# build_three_axes.py, a detail view of the Foundation Context / AMBER +# pillar). Each dict: band fill (lightest), block fill (a pastel step +# deeper, for content sitting on the band), stroke (dark border/icon +# color), text (darkest, for bold titles), mid (a mid-tone for subtitles +# and descriptors, same as stroke here since these are already fairly dark). +# Matched lightness steps across hues; no hue repeats, no blue reused. +AMBER = {"band": "#fef3c7", "block": "#fde68a", "stroke": "#b45309", "text": "#78350f", "mid": "#b45309"} +TEAL = {"band": "#ccfbf1", "block": "#99f6e4", "stroke": "#0f766e", "text": "#134e4a", "mid": "#0f766e"} +VIOLET = {"band": "#ede9fe", "block": "#ddd6fe", "stroke": "#6d28d9", "text": "#4c1d95", "mid": "#6d28d9"} +ROSE = {"band": "#ffe4e6", "block": "#fecdd3", "stroke": "#be123c", "text": "#881337", "mid": "#be123c"} +GREEN = {"band": "#dcfce7", "block": "#bbf7d0", "stroke": "#15803d", "text": "#14532d", "mid": "#15803d"} +CAPTION = "#64748b" # neutral gray for connective captions that sit between/across pillars + els: list[dict] = [] +files: dict = {} _seed = 1000 def reset() -> None: global _seed els.clear() + files.clear() _seed = 1000 @@ -60,6 +78,34 @@ def box(id_: str, x: float, y: float, w: float, h: float, label: str, colors, da return r +def image(id_: str, x: float, y: float, w: float, h: float, svg_path: str, color: str | None = None) -> dict: + """Embed an SVG icon as an Excalidraw image element. + + svg_path: path to an SVG file, absolute or relative to this module's directory + (icons/ holds the ones this repo uses). + color: if given, replace every `currentColor` in the SVG source with this hex + string before embedding -- used to recolor a stroke- or fill-based icon set to a + band's dark palette color without touching the licensed original file on disk. + """ + path = svg_path if os.path.isabs(svg_path) else os.path.join(os.path.dirname(__file__), svg_path) + with open(path, "r") as fh: + svg = fh.read() + if color: + svg = svg.replace("currentColor", color) + b64 = base64.b64encode(svg.encode("utf-8")).decode("ascii") + file_id = f"img_{id_}" + files[file_id] = { + "mimeType": "image/svg+xml", + "id": file_id, + "dataURL": f"data:image/svg+xml;base64,{b64}", + "created": 1700000000000, + } + el = base("image", id_, x, y, w, h, "transparent", "transparent", sw=1) + el.update({"fileId": file_id, "status": "saved", "scale": [1, 1], "roundness": None, "crop": None}) + els.append(el) + return el + + def find(id_: str) -> dict: return next(e for e in els if e["id"] == id_) @@ -72,9 +118,16 @@ def edge_point(b: dict, side: str, frac: float = 0.5) -> tuple[float, float]: def arrow(id_: str, src: str, s_side: str, dst: str, d_side: str, label: str | None = None, s_frac=0.5, d_frac=0.5, color=LINE, dashed=False, label_dx=0.0, label_dy=-22.0, sw=2, both=False, elbow: str | None = None, - label_size=14) -> None: + label_size=14, inset=0.0) -> None: a, b = find(src), find(dst) (x1, y1), (x2, y2) = edge_point(a, s_side, s_frac), edge_point(b, d_side, d_frac) + if inset: + dx, dy = x2 - x1, y2 - y1 + length = (dx ** 2 + dy ** 2) ** 0.5 + if length > 2 * inset: + ux, uy = dx / length, dy / length + x1, y1 = x1 + ux * inset, y1 + uy * inset + x2, y2 = x2 - ux * inset, y2 - uy * inset ar = base("arrow", id_, x1, y1, x2 - x1, y2 - y1, color, "transparent", dashed=dashed, sw=sw) pts = [[0, 0], [x2 - x1, y2 - y1]] if elbow == "vertical-first": @@ -94,6 +147,24 @@ def arrow(id_: str, src: str, s_side: str, dst: str, d_side: str, label: str | N els.append(text(id_ + "_l", mx - lw / 2, my, label, size=label_size, color=BODY, align="center", w=lw)) +def boxed_label(id_: str, cx: float, y_bottom: float, s: str, size=13, color=BODY, pad_x=5, pad_y=2) -> dict: + """A small text label on an opaque white box -- for a caption that would + otherwise sit on top of a line or arrow it crosses. cx: horizontal + center. y_bottom: the y the label's bottom edge should align to, so a + caller can anchor it a fixed clearance above (or below, with a negative + clearance folded into y_bottom) some other element.""" + lines = s.split("\n") + w = max(len(ln) for ln in lines) * size * 0.58 + 2 * pad_x + h = len(lines) * size * 1.25 + 2 * pad_y + y = y_bottom - h + x = cx - w / 2 + r = base("rectangle", id_, x, y, w, h, "transparent", "#ffffff", sw=0) + r["roundness"] = {"type": 3} + els.append(r) + els.append(text(id_ + "_t", x + pad_x, y + pad_y, s, size=size, color=color, align="center", w=w - 2 * pad_x)) + return r + + def hline(id_: str, x: float, y: float, w: float, dashed=True) -> None: ln = base("line", id_, x, y, w, 0, LINE, "transparent", dashed=dashed, sw=1) ln.update({"points": [[0, 0], [w, 0]], "boundElements": None}) @@ -105,7 +176,7 @@ def hline(id_: str, x: float, y: float, w: float, dashed=True) -> None: def save(rel_path: str) -> str: out = os.path.normpath(os.path.join(os.path.dirname(__file__), "..", "..", rel_path)) doc = {"type": "excalidraw", "version": 2, "source": "oidm-knowledge/tools/diagrams", - "elements": els, "appState": {"viewBackgroundColor": "#ffffff", "gridSize": None}, "files": {}} + "elements": els, "appState": {"viewBackgroundColor": "#ffffff", "gridSize": None}, "files": files} with open(out, "w") as fh: json.dump(doc, fh, indent=1) print("wrote", out, len(els), "elements") diff --git a/tools/diagrams/icons/LICENSES.md b/tools/diagrams/icons/LICENSES.md new file mode 100644 index 0000000..fa0dde4 --- /dev/null +++ b/tools/diagrams/icons/LICENSES.md @@ -0,0 +1,64 @@ +# Icon sources + +Icons used in `build_pillars.py` (the five-pillar stack diagram). Each SVG here is the +**unmodified original** as fetched from its source repository. Recoloring (stroke/fill set +to a band's dark color) and resizing happen at build time in `build_pillars.py`, not by +editing these files, so the licensed originals stay intact and auditable. + +## Health Icons + + — outline style. Source repository: +[`resolvetosavelives/healthicons`](https://github.com/resolvetosavelives/healthicons) +(branch `main`). The project site states the icon designs are released under **CC0** +(public domain); the repository's own `LICENSE` file (covering the repo/tooling) is MIT, +copyright Resolve to Save Lives. Either way, reuse with attribution here is unrestricted. + +| File | Source path | Used for | +|---|---|---| +| `healthicons-lungs.svg` | `public/icons/svg/outline/body/lungs.svg` | Anatomic locations (Foundation Context) | +| `healthicons-xray.svg` | `public/icons/svg/outline/devices/xray.svg` | Exam types (Foundation Context) | +| `healthicons-person.svg` | `public/icons/svg/outline/people/person.svg` | Imaging Persona (Data Structures) | + +Note: Health Icons' outline set has no clipboard/report-style icon (searched the full tree +for "clipboard", "report", "record", "chart", "form", "doc" — nothing fits). Per the brief, +Lucide's `clipboard` and `clipboard-list` are used instead for Observation and Exam Finding +List. No CT-scanner icon exists either; `xray.svg` (x-ray machine) stands in for the exam +types glyph. + +## Lucide + +, MIT-family license. Source repository: +[`lucide-icons/lucide`](https://github.com/lucide-icons/lucide) (branch `main`), path +`icons/.svg`. Lucide icons are ISC-licensed by Lucide Icons and Contributors, **except** +a subset carried over from the Feather icon project, which stays under Feather's original MIT +license (Copyright Cole Bemis). Of the icons used here, only `clipboard` is in that +Feather-derived subset. + +| File | Source path | Used for | License | +|---|---|---|---| +| `lucide-book-open.svg` | `icons/book-open.svg` | Foundation Context band | ISC | +| `lucide-tag.svg` | `icons/tag.svg` | Finding/diagnosis definitions | ISC | +| `lucide-layers.svg` | `icons/layers.svg` | Data Structures band | ISC | +| `lucide-list.svg` | `icons/list.svg` | Imaging Problem List | ISC | +| `lucide-package.svg` | `icons/package.svg` | SDKs band (code-2 has no matching filename in the current icon set; package is the listed alternative) | ISC | +| `lucide-lightbulb.svg` | `icons/lightbulb.svg` | Use Cases | ISC | +| `lucide-app-window.svg` | `icons/app-window.svg` | Sample Applications | ISC | +| `lucide-clipboard.svg` | `icons/clipboard.svg` | Observation (Health Icons has no equivalent) | MIT (Feather) | +| `lucide-clipboard-list.svg` | `icons/clipboard-list.svg` | Exam Finding List (Health Icons has no equivalent) | ISC | + +## Harmonizing style + +- All icons are rendered at the same on-page size (~28px at 900px diagram width). +- Lucide icons are stroke-based (`stroke="currentColor"`, `stroke-width="2"`, 24x24 viewBox) + — the build script replaces `currentColor` with the target band's dark hex. +- Health Icons' outline set is filled-path-based (`fill="currentColor"`, 48x48 viewBox), not + stroke-based; there is no stroke-width to match, but at matched render size the two sets' + line weights read the same. The build script replaces `currentColor` with the target hex + the same way. + +The "relationships" glyph (three dots joined by lines, repeated between the Foundation +Context blocks) is hand-drawn with primitive ellipses/lines in `excalib.py`, not sourced +from an icon set — neither Health Icons nor Lucide's `network` icon (which is box-based, +not three dots) matched the brief's description closely enough. + +Reused without additions by build_three_axes.py (tag, lungs, xray) and build_two_planes.py (layers, book-open, clipboard-list, clipboard, xray, lungs, tag), 2026-09-28. diff --git a/tools/diagrams/icons/healthicons-lungs.svg b/tools/diagrams/icons/healthicons-lungs.svg new file mode 100644 index 0000000..6651458 --- /dev/null +++ b/tools/diagrams/icons/healthicons-lungs.svg @@ -0,0 +1,3 @@ + + + diff --git a/tools/diagrams/icons/healthicons-person.svg b/tools/diagrams/icons/healthicons-person.svg new file mode 100644 index 0000000..41e9d62 --- /dev/null +++ b/tools/diagrams/icons/healthicons-person.svg @@ -0,0 +1,4 @@ + + + + diff --git a/tools/diagrams/icons/healthicons-xray.svg b/tools/diagrams/icons/healthicons-xray.svg new file mode 100644 index 0000000..2f35233 --- /dev/null +++ b/tools/diagrams/icons/healthicons-xray.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/tools/diagrams/icons/lucide-app-window.svg b/tools/diagrams/icons/lucide-app-window.svg new file mode 100644 index 0000000..815548b --- /dev/null +++ b/tools/diagrams/icons/lucide-app-window.svg @@ -0,0 +1,16 @@ + + + + + + diff --git a/tools/diagrams/icons/lucide-book-open.svg b/tools/diagrams/icons/lucide-book-open.svg new file mode 100644 index 0000000..9e0ace5 --- /dev/null +++ b/tools/diagrams/icons/lucide-book-open.svg @@ -0,0 +1,14 @@ + + + + diff --git a/tools/diagrams/icons/lucide-clipboard-list.svg b/tools/diagrams/icons/lucide-clipboard-list.svg new file mode 100644 index 0000000..bbdd45f --- /dev/null +++ b/tools/diagrams/icons/lucide-clipboard-list.svg @@ -0,0 +1,18 @@ + + + + + + + + diff --git a/tools/diagrams/icons/lucide-clipboard.svg b/tools/diagrams/icons/lucide-clipboard.svg new file mode 100644 index 0000000..de4cc01 --- /dev/null +++ b/tools/diagrams/icons/lucide-clipboard.svg @@ -0,0 +1,14 @@ + + + + diff --git a/tools/diagrams/icons/lucide-layers.svg b/tools/diagrams/icons/lucide-layers.svg new file mode 100644 index 0000000..a3b69ae --- /dev/null +++ b/tools/diagrams/icons/lucide-layers.svg @@ -0,0 +1,15 @@ + + + + + diff --git a/tools/diagrams/icons/lucide-lightbulb.svg b/tools/diagrams/icons/lucide-lightbulb.svg new file mode 100644 index 0000000..3f4e409 --- /dev/null +++ b/tools/diagrams/icons/lucide-lightbulb.svg @@ -0,0 +1,15 @@ + + + + + diff --git a/tools/diagrams/icons/lucide-list.svg b/tools/diagrams/icons/lucide-list.svg new file mode 100644 index 0000000..0d88fb1 --- /dev/null +++ b/tools/diagrams/icons/lucide-list.svg @@ -0,0 +1,18 @@ + + + + + + + + diff --git a/tools/diagrams/icons/lucide-package.svg b/tools/diagrams/icons/lucide-package.svg new file mode 100644 index 0000000..308b1f4 --- /dev/null +++ b/tools/diagrams/icons/lucide-package.svg @@ -0,0 +1,16 @@ + + + + + + diff --git a/tools/diagrams/icons/lucide-tag.svg b/tools/diagrams/icons/lucide-tag.svg new file mode 100644 index 0000000..7a073e9 --- /dev/null +++ b/tools/diagrams/icons/lucide-tag.svg @@ -0,0 +1,14 @@ + + + + From ed0b716428d10b5149b17386b7ded31180d6f0b5 Mon Sep 17 00:00:00 2001 From: "Alkasab Agent (agent-dev)" Date: Mon, 28 Sep 2026 17:10:25 +0000 Subject: [PATCH 12/19] Write the Overview and Foundation Context pages with their figures - Overview: what OIDM is for across the imaging lifecycle, the two contexts, the core pieces, use cases, sample applications, where things stand - Foundation Context index: three axes over existing standards and the relationships among them - Figures as Excalidraw builders with SVG renders: the two planes, the five-pillar stack, the three axes, and the Foundation Context mini-network Co-Authored-By: Claude Fable 5.1 --- docs/plans/renders/foundation-network-v6.png | Bin 0 -> 187750 bytes docs/plans/renders/pillars-v3.png | Bin 0 -> 84422 bytes docs/plans/renders/three-axes-v1.png | Bin 0 -> 45518 bytes docs/plans/renders/two-planes-v4.png | Bin 0 -> 72042 bytes docs/plans/renders/two-planes-v5.png | Bin 0 -> 80741 bytes knowledge/drafts/foundation-context.md | 73 +- .../drafts/foundation-network.excalidraw | 5181 +++++++++++++++++ knowledge/drafts/foundation-network.svg | 2 + knowledge/drafts/overview.md | 113 + knowledge/drafts/pillars.excalidraw | 2161 +++++++ knowledge/drafts/pillars.svg | 2 + knowledge/drafts/three-axes.excalidraw | 934 +++ knowledge/drafts/three-axes.svg | 2 + knowledge/drafts/two-planes.excalidraw | 2230 +++++++ knowledge/drafts/two-planes.svg | 2 + tools/diagrams/build_foundation_network.py | 399 ++ tools/diagrams/build_pillars.py | 261 + tools/diagrams/build_three_axes.py | 106 + tools/diagrams/build_two_planes.py | 298 + 19 files changed, 11723 insertions(+), 41 deletions(-) create mode 100644 docs/plans/renders/foundation-network-v6.png create mode 100644 docs/plans/renders/pillars-v3.png create mode 100644 docs/plans/renders/three-axes-v1.png create mode 100644 docs/plans/renders/two-planes-v4.png create mode 100644 docs/plans/renders/two-planes-v5.png create mode 100644 knowledge/drafts/foundation-network.excalidraw create mode 100644 knowledge/drafts/foundation-network.svg create mode 100644 knowledge/drafts/overview.md create mode 100644 knowledge/drafts/pillars.excalidraw create mode 100644 knowledge/drafts/pillars.svg create mode 100644 knowledge/drafts/three-axes.excalidraw create mode 100644 knowledge/drafts/three-axes.svg create mode 100644 knowledge/drafts/two-planes.excalidraw create mode 100644 knowledge/drafts/two-planes.svg create mode 100644 tools/diagrams/build_foundation_network.py create mode 100644 tools/diagrams/build_pillars.py create mode 100644 tools/diagrams/build_three_axes.py create mode 100644 tools/diagrams/build_two_planes.py diff --git a/docs/plans/renders/foundation-network-v6.png b/docs/plans/renders/foundation-network-v6.png new file mode 100644 index 0000000000000000000000000000000000000000..f69e5716b0d36f473960c0605df4313d7c68f729 GIT binary patch literal 187750 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

k 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 z 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

B{us+Bh^AvCg0(z9u#W%<k_RDnUkL=Qo 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

yd)xYF#O%;R3zBx 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%0D}4^IuL06W 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 mS$ybAk literal 0 HcmV?d00001 diff --git a/knowledge/drafts/foundation-context.md b/knowledge/drafts/foundation-context.md index f1bc6f3..d6fc076 100644 --- a/knowledge/drafts/foundation-context.md +++ b/knowledge/drafts/foundation-context.md @@ -1,60 +1,51 @@ --- type: Overview title: Foundation Context -description: The shared, non-patient-specific layer of definitions, relationships, and citations that imaging results point into, and the work of building its content. -tags: [foundation-context, semantic-foundation, siim-2026, overview] +description: "The shared, curated clinical knowledge that every patient's imaging data is woven into: three axes over existing standards, the relationships among them, and the citations they rest on." +tags: [foundation-context, finding-models, cdes, anatomic-locations, exam-types] status: draft -generated: { by: claude-opus-5/2026-09-22-restructure/draft-foundation, at: 2026-09-22T00:00:00Z } +generated: { by: claude-fable-5-1/2026-09-24-restructure, at: 2026-09-24T21:50:00Z } sources: - - id: siim2026 - resource: sources/bucket/text/siim2026-reports-of-the-future.md - title: "Structured Results and Context for Next-Generation Imaging Resulting Tools: Creating the Reports of the Future. SIIM 2026 annual meeting talk, June 2026, Mass General Brigham" - last_modified: 2026-06-01 - - id: joint-notes - resource: docs/plans/restructure-joint-notes.md - title: "Restructure joint working notes, carrying the project lead's decisions of 2026-09-22" - last_modified: 2026-09-22 - - id: cde-context - resource: https://github.com/RSNA/ACR-RSNA-CDEs/blob/44836c19f4e025cf1684a015ed5cc63c29eaf7f3/CONTEXT.md - title: "CDE vocabulary, CONTEXT.md, ACR-RSNA-CDEs next-gen-2026 branch at 44836c1, 2026-09-15" - last_modified: 2026-09-15 + - id: lead-2026-09-24 + resource: docs/plans/2026-09-22-layout-plan.md + title: The project lead's statements of 2026-09-22 to 2026-09-24 on the pillars, the two collections, the next-generation schema, and the wording of this page (recorded verbatim in the layout plan) + - id: siim-2026 + resource: https://oidm-public.t3.tigrisfiles.io/oidm-knowledge-sources/SIIM%202026%20Reports-of-the-Future.pptx + title: "Structured Results and Context for Next-Generation Imaging Resulting Tools, SIIM 2026 annual meeting talk, June 2026, Mass General Brigham" + - id: build-plan + resource: knowledge/plans/2026-09-20-knowledgebase-build-plan.md + title: Knowledgebase build plan, the project lead's stated goals (2026-09-20) and the decisions of 2026-09-21 and 2026-09-22 --- -# The two halves +# Foundation Context -The SIIM 2026 annual meeting talk opens on "the two halves that make next-gen tools work: the structured result, and the knowledge to interpret it," and names them **Patient Context**, one patient's imaging results and the clinical context around them, and **Foundation Context**, the one layer of definitions, relationships and citations that every patient's results point into, openly authored, versioned, and not patient-specific.[^siim2026] The [introduction](./introduction.md) sets the two side by side in full. +Foundation Context is the shared, curated knowledge that every patient's imaging data is woven into. It is one layer for everyone: definitions of what can be found, where things are in the body, how exams see them, the relationships among all of these, and citations out to the standards and references the definitions rest on. It is open-source, general clinical knowledge, authored by the imaging informatics community in the open. It covers both the schema that definitions take and the work of building the content.[^siim-2026][^lead-2026-09-24] -# What this pillar covers +It has three axes. Each is a curated layer over a standard that already exists, adding imaging-specific knowledge rather than reinventing it.[^siim-2026] -The project lead's decision of 2026-09-22 sets the boundary, and it is wider than a schema: Foundation Context "includes both the schema/meta-definitions as well as the efforts to build out content."[^joint-notes] Both halves are on this reading path — the shape a definition takes, and the work of writing definitions. +[![The three axes of Foundation Context: finding/diagnosis definitions, anatomic locations, exam types, each layered over an existing standard](./three-axes.svg)](./three-axes.svg) -# The stated motivation +**Finding/diagnosis definitions: what was found.** One kind of content, held today in two collections: the Open Imaging Finding Models, inclusive and fast-moving, and the ACR/RSNA Common Data Elements, well-reviewed and closer to published. Both are moving onto a single graph-based schema being developed in the CDE project, which applications will use across both collections at once.[^lead-2026-09-24] -The deck's pivot slide states the gap in the structured record. A structured [Observation](../glossary/observation.md) — pulmonary nodule, present — "says it exists, where, and on what exam." It does not say how it associates with other findings, how it is potentially precancerous, which prior exams could show it, what the implications are, or what else it could be. Answering those five questions "needs background knowledge of anatomy, pathology, and imaging technique — knowledge that isn't in the patient's record."[^siim2026] +**Anatomic locations: where it is.** A curated index of anatomic entities anchored in RadLex, with containment, part-of, and laterality made explicit, now being incorporated into RadLex itself.[^build-plan][^siim-2026] -# Three axes, each layered over a standard +**Exam types: how it was seen.** Content to come: preferred exam families over the LOINC/RSNA Radiology Playbook, each connected to the anatomy it covers.[^build-plan][^siim-2026] -The deck gives Foundation Context three axes, each "an OIDM layer over" something that already exists, "adding imaging-specific knowledge on top of existing standards rather than reinventing them."[^siim2026] +The axes are not independent. A definition says which anatomy it applies to and which modalities can show it. An exam type says which anatomy it covers. Definitions relate to one another as subtype and supertype, cause and effect, diagnosis and the findings it manifests as, things confused with each other, things that occur together. These relationships, with the citations out to Radiopaedia, Wikipedia, SNOMED CT, RadLex, LOINC, FMA, ICD, and CPT, are what turn a flat dictionary into something an application can reason over.[^siim-2026] -| Axis | The deck's question | Layered over | -|---|---|---| -| Finding definitions — the deck's own label for this axis is "Observation Type" | WHAT was found | CDE and OIFM definitions | -| Anatomic Location | WHERE it is | a RadLex-anchored body map | -| Exam Type | HOW it was seen | LOINC and RadLex Playbook study types | +[![A mini-network of Foundation Context: finding/diagnosis definitions, anatomic locations, and exam types, with relationships within and between them](./foundation-network.svg)](./foundation-network.svg) -The deck calls what runs between and out of the axes "the connective tissue": within-axis relationships (parent and child types; causes and caused_by; confused_with, occurs_with), cross-axis statements (anatomy limits on a finding definition, exam-type anatomy associations, modalities), and external citations to Radiopaedia and Wikipedia plus references to SNOMED, RadLex, LOINC, FMA, ICD, and CPT.[^siim2026] The next-generation CDE vocabulary states the same posture for its own terms, and adds that they "express our current ideas for the reviewer's foundation, not a jointly settled integration model."[^cde-context] +(click the image for full size) -# How data structures reach it +# In this section -The deck keeps the Observation "deliberately small — codes, not knowledge." It carries a semantic tag, "a CDE-style definition (today an OIFM Finding Model)," plus presence, change from prior, and characterization attributes. "A code on an Observation is a pointer into one of these axes — the axes also point to each other, and out to external references." The resolution step is where the knowledge arrives: "Resolve, don't reinvent," code to pointer to resolve, with "OIDM SDKs make resolution easy and standardized — every app pulls the same context the same way." The deck's worked figure resolves one Observation to the finding definition for radiodense urinary calculus (`OIFM_GMTS_020556`), which "may cause" hydronephrosis (`OIFM_OIDM_874812`), each occurring at kidney (`RID205`) and renal pelvis (`RID228`), the renal pelvis part of the kidney.[^siim2026] +- Finding/diagnosis definitions: finding models and CDEs, with the OIFM content, the definition formats, and the identifiers +- The next-generation schema, with the relationship family and standard clinical metadata +- Authoring and review +- [Anatomic locations](./anatomic-locations.md) +- [Exam types](./exam-types.md) +- [Standards the foundation layers over and cites](./standards.md) -# Child sections - -* [Finding models and CDEs](./finding-models-and-cdes.md) - the common graph, the two collections that hold it today, what the inclusive collection contains, and the authoring and review principles behind it. -* [Anatomic locations](./anatomic-locations.md) - the WHERE axis: containment, part-of, laterality, and the overlay on RadLex. -* [Exam types](./exam-types.md) - the HOW SEEN axis: exam families over the LOINC and RadLex Playbook, and their anatomy edges. -* [Standards the foundation layers over and cites](./standards.md) - RadLex, SNOMED CT, FMA, LOINC and the Playbook, and the role each plays. - -[^siim2026]: SIIM 2026 annual meeting talk, June 2026, Mass General Brigham -[^joint-notes]: Restructure joint working notes, the project lead's decisions of 2026-09-22 -[^cde-context]: CDE vocabulary, CONTEXT.md, ACR-RSNA-CDEs next-gen-2026 branch at 44836c1 +[^lead-2026-09-24]: The project lead, 2026-09-22 to 2026-09-24: the two collections ruling, the shared next-generation schema for both, the RadLex migration, and the wording of the opening paragraph; recorded verbatim in the layout plan. +[^siim-2026]: SIIM 2026 annual meeting talk, June 2026, Mass General Brigham; slides 6, 7, 8, 10, 11, and 12. +[^build-plan]: Knowledgebase build plan: the project lead's stated goals on anatomic locations and exam types (2026-09-20). diff --git a/knowledge/drafts/foundation-network.excalidraw b/knowledge/drafts/foundation-network.excalidraw new file mode 100644 index 0000000..c22683a --- /dev/null +++ b/knowledge/drafts/foundation-network.excalidraw @@ -0,0 +1,5181 @@ +{ + "type": "excalidraw", + "version": 2, + "source": "oidm-knowledge/tools/diagrams", + "elements": [ + { + "type": "text", + "id": "maintitle", + "x": 0, + "y": 8, + "width": 394.4, + "height": 25.0, + "strokeColor": "#1e40af", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1001, + "version": 1, + "versionNonce": 1002, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "Foundation Context: a mini-network", + "originalText": "Foundation Context: a mini-network", + "fontSize": 20, + "fontFamily": 2, + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 + }, + { + "type": "text", + "id": "subtitle", + "x": 0, + "y": 34, + "width": 550.42, + "height": 16.25, + "strokeColor": "#3b82f6", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1003, + "version": 1, + "versionNonce": 1004, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "three sectors of shared, curated knowledge \u2014 illustrative, not exhaustive", + "originalText": "three sectors of shared, curated knowledge \u2014 illustrative, not exhaustive", + "fontSize": 13, + "fontFamily": 2, + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 + }, + { + "type": "rectangle", + "id": "rA", + "x": 0, + "y": 70, + "width": 935, + "height": 300, + "strokeColor": "#e2e8f0", + "backgroundColor": "#f8fafc", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1005, + "version": 1, + "versionNonce": 1006, + "isDeleted": false, + "groupIds": [], + "boundElements": [], + "link": null, + "locked": false, + "roundness": { + "type": 3 + } + }, + { + "type": "text", + "id": "rA_title", + "x": 14, + "y": 80, + "width": 365.4, + "height": 18.75, + "strokeColor": "#1e40af", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1007, + "version": 1, + "versionNonce": 1008, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "Sector 1 \u2014 Finding / diagnosis definitions", + "originalText": "Sector 1 \u2014 Finding / diagnosis definitions", + "fontSize": 15, + "fontFamily": 2, + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 + }, + { + "type": "rectangle", + "id": "rB", + "x": 0, + "y": 440, + "width": 935, + "height": 370, + "strokeColor": "#e2e8f0", + "backgroundColor": "#f8fafc", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1009, + "version": 1, + "versionNonce": 1010, + "isDeleted": false, + "groupIds": [], + "boundElements": [], + "link": null, + "locked": false, + "roundness": { + "type": 3 + } + }, + { + "type": "text", + "id": "rB_title", + "x": 54, + "y": 450, + "width": 252.29999999999998, + "height": 18.75, + "strokeColor": "#1e40af", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1011, + "version": 1, + "versionNonce": 1012, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "Sector 2 \u2014 Anatomic locations", + "originalText": "Sector 2 \u2014 Anatomic locations", + "fontSize": 15, + "fontFamily": 2, + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 + }, + { + "type": "rectangle", + "id": "rC", + "x": 0, + "y": 880, + "width": 935, + "height": 300, + "strokeColor": "#e2e8f0", + "backgroundColor": "#f8fafc", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1013, + "version": 1, + "versionNonce": 1014, + "isDeleted": false, + "groupIds": [], + "boundElements": [], + "link": null, + "locked": false, + "roundness": { + "type": 3 + } + }, + { + "type": "text", + "id": "rC_title", + "x": 14, + "y": 890, + "width": 182.7, + "height": 18.75, + "strokeColor": "#1e40af", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1015, + "version": 1, + "versionNonce": 1016, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "Sector 3 \u2014 Exam types", + "originalText": "Sector 3 \u2014 Exam types", + "fontSize": 15, + "fontFamily": 2, + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 + }, + { + "type": "text", + "id": "rC_tag", + "x": 14, + "y": 910, + "width": 128.17999999999998, + "height": 16.25, + "strokeColor": "#64748b", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1017, + "version": 1, + "versionNonce": 1018, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "(content to come)", + "originalText": "(content to come)", + "fontSize": 13, + "fontFamily": 2, + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 + }, + { + "type": "rectangle", + "id": "rL", + "x": 0, + "y": 1210, + "width": 935, + "height": 190, + "strokeColor": "#e2e8f0", + "backgroundColor": "#f8fafc", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1019, + "version": 1, + "versionNonce": 1020, + "isDeleted": false, + "groupIds": [], + "boundElements": [], + "link": null, + "locked": false, + "roundness": { + "type": 3 + } + }, + { + "type": "text", + "id": "rL_title", + "x": 14, + "y": 1220, + "width": 52.199999999999996, + "height": 18.75, + "strokeColor": "#1e40af", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1021, + "version": 1, + "versionNonce": 1022, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "Legend", + "originalText": "Legend", + "fontSize": 15, + "fontFamily": 2, + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 + }, + { + "type": "rectangle", + "id": "lung_cancer", + "x": 20, + "y": 110, + "width": 140, + "height": 42, + "strokeColor": "#059669", + "backgroundColor": "#6ee7b7", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1023, + "version": 1, + "versionNonce": 1024, + "isDeleted": false, + "groupIds": [], + "boundElements": [ + { + "id": "lung_cancer_t", + "type": "text" + }, + { + "id": "e_manifest", + "type": "arrow" + } + ], + "link": null, + "locked": false, + "roundness": { + "type": 3 + } + }, + { + "type": "text", + "id": "lung_cancer_t", + "x": 30, + "y": 120, + "width": 120, + "height": 22, + "strokeColor": "#064e3b", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1025, + "version": 1, + "versionNonce": 1026, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "lung cancer", + "originalText": "lung cancer", + "fontSize": 14, + "fontFamily": 2, + "textAlign": "center", + "verticalAlign": "middle", + "containerId": "lung_cancer", + "lineHeight": 1.25 + }, + { + "type": "rectangle", + "id": "pulm_nodule", + "x": 272, + "y": 100, + "width": 146, + "height": 54, + "strokeColor": "#059669", + "backgroundColor": "#d1fae5", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1027, + "version": 1, + "versionNonce": 1028, + "isDeleted": false, + "groupIds": [], + "boundElements": [ + { + "id": "pulm_nodule_t", + "type": "text" + }, + { + "id": "e_solid_sub", + "type": "arrow" + }, + { + "id": "e_partsolid_sub", + "type": "arrow" + }, + { + "id": "e_nonsolid_sub", + "type": "arrow" + }, + { + "id": "e_manifest", + "type": "arrow" + }, + { + "id": "e_assessed", + "type": "arrow" + } + ], + "link": null, + "locked": false, + "roundness": { + "type": 3 + } + }, + { + "type": "text", + "id": "pulm_nodule_t", + "x": 282, + "y": 110, + "width": 126, + "height": 34, + "strokeColor": "#064e3b", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1029, + "version": 1, + "versionNonce": 1030, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "pulmonary\nnodule", + "originalText": "pulmonary\nnodule", + "fontSize": 14, + "fontFamily": 2, + "textAlign": "center", + "verticalAlign": "middle", + "containerId": "pulm_nodule", + "lineHeight": 1.25 + }, + { + "type": "diamond", + "id": "lungrads", + "x": 492, + "y": 95, + "width": 125, + "height": 75, + "strokeColor": "#7e22ce", + "backgroundColor": "#e9d5ff", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1031, + "version": 1, + "versionNonce": 1032, + "isDeleted": false, + "groupIds": [], + "boundElements": [ + { + "id": "lungrads_t", + "type": "text" + }, + { + "id": "e_assessed", + "type": "arrow" + } + ], + "link": null, + "locked": false + }, + { + "type": "text", + "id": "lungrads_t", + "x": 517.0, + "y": 119.0, + "width": 75.0, + "height": 27.0, + "strokeColor": "#4c1d95", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1033, + "version": 1, + "versionNonce": 1034, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "Lung-RADS", + "originalText": "Lung-RADS", + "fontSize": 13, + "fontFamily": 2, + "textAlign": "center", + "verticalAlign": "middle", + "containerId": "lungrads", + "lineHeight": 1.25 + }, + { + "type": "rectangle", + "id": "pleural_effusion", + "x": 637, + "y": 110, + "width": 142, + "height": 42, + "strokeColor": "#059669", + "backgroundColor": "#d1fae5", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1035, + "version": 1, + "versionNonce": 1036, + "isDeleted": false, + "groupIds": [], + "boundElements": [ + { + "id": "pleural_effusion_t", + "type": "text" + } + ], + "link": null, + "locked": false, + "roundness": { + "type": 3 + } + }, + { + "type": "text", + "id": "pleural_effusion_t", + "x": 647, + "y": 120, + "width": 122, + "height": 22, + "strokeColor": "#064e3b", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1037, + "version": 1, + "versionNonce": 1038, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "pleural effusion", + "originalText": "pleural effusion", + "fontSize": 13, + "fontFamily": 2, + "textAlign": "center", + "verticalAlign": "middle", + "containerId": "pleural_effusion", + "lineHeight": 1.25 + }, + { + "type": "rectangle", + "id": "solid_nodule", + "x": 120, + "y": 210, + "width": 105, + "height": 70, + "strokeColor": "#059669", + "backgroundColor": "#d1fae5", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1039, + "version": 1, + "versionNonce": 1040, + "isDeleted": false, + "groupIds": [], + "boundElements": [ + { + "id": "solid_nodule_t", + "type": "text" + }, + { + "id": "e_solid_sub", + "type": "arrow" + } + ], + "link": null, + "locked": false, + "roundness": { + "type": 3 + } + }, + { + "type": "text", + "id": "solid_nodule_t", + "x": 130, + "y": 220, + "width": 85, + "height": 50, + "strokeColor": "#064e3b", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1041, + "version": 1, + "versionNonce": 1042, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "solid\npulmonary\nnodule", + "originalText": "solid\npulmonary\nnodule", + "fontSize": 13, + "fontFamily": 2, + "textAlign": "center", + "verticalAlign": "middle", + "containerId": "solid_nodule", + "lineHeight": 1.25 + }, + { + "type": "rectangle", + "id": "partsolid_nodule", + "x": 235, + "y": 210, + "width": 100, + "height": 70, + "strokeColor": "#059669", + "backgroundColor": "#d1fae5", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1043, + "version": 1, + "versionNonce": 1044, + "isDeleted": false, + "groupIds": [], + "boundElements": [ + { + "id": "partsolid_nodule_t", + "type": "text" + }, + { + "id": "e_partsolid_sub", + "type": "arrow" + }, + { + "id": "e_partsolid_comp", + "type": "arrow" + }, + { + "id": "e_progress", + "type": "arrow" + } + ], + "link": null, + "locked": false, + "roundness": { + "type": 3 + } + }, + { + "type": "text", + "id": "partsolid_nodule_t", + "x": 245, + "y": 220, + "width": 80, + "height": 50, + "strokeColor": "#064e3b", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1045, + "version": 1, + "versionNonce": 1046, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "part-solid\npulmonary\nnodule", + "originalText": "part-solid\npulmonary\nnodule", + "fontSize": 13, + "fontFamily": 2, + "textAlign": "center", + "verticalAlign": "middle", + "containerId": "partsolid_nodule", + "lineHeight": 1.25 + }, + { + "type": "rectangle", + "id": "nonsolid_nodule", + "x": 530, + "y": 210, + "width": 100, + "height": 70, + "strokeColor": "#059669", + "backgroundColor": "#d1fae5", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1047, + "version": 1, + "versionNonce": 1048, + "isDeleted": false, + "groupIds": [], + "boundElements": [ + { + "id": "nonsolid_nodule_t", + "type": "text" + }, + { + "id": "e_nonsolid_sub", + "type": "arrow" + }, + { + "id": "e_progress", + "type": "arrow" + } + ], + "link": null, + "locked": false, + "roundness": { + "type": 3 + } + }, + { + "type": "text", + "id": "nonsolid_nodule_t", + "x": 540, + "y": 220, + "width": 80, + "height": 50, + "strokeColor": "#064e3b", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1049, + "version": 1, + "versionNonce": 1050, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "non-solid\npulmonary\nnodule", + "originalText": "non-solid\npulmonary\nnodule", + "fontSize": 13, + "fontFamily": 2, + "textAlign": "center", + "verticalAlign": "middle", + "containerId": "nonsolid_nodule", + "lineHeight": 1.25 + }, + { + "type": "rectangle", + "id": "solid_component", + "x": 365, + "y": 295, + "width": 118, + "height": 38, + "strokeColor": "#059669", + "backgroundColor": "#d1fae5", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1051, + "version": 1, + "versionNonce": 1052, + "isDeleted": false, + "groupIds": [], + "boundElements": [ + { + "id": "solid_component_t", + "type": "text" + }, + { + "id": "e_partsolid_comp", + "type": "arrow" + } + ], + "link": null, + "locked": false, + "roundness": { + "type": 3 + } + }, + { + "type": "text", + "id": "solid_component_t", + "x": 375, + "y": 305, + "width": 98, + "height": 18, + "strokeColor": "#064e3b", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1053, + "version": 1, + "versionNonce": 1054, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "solid component", + "originalText": "solid component", + "fontSize": 13, + "fontFamily": 2, + "textAlign": "center", + "verticalAlign": "middle", + "containerId": "solid_component", + "lineHeight": 1.25 + }, + { + "type": "ellipse", + "id": "gA1", + "x": 35, + "y": 220, + "width": 30, + "height": 30, + "strokeColor": "#9ca3af", + "backgroundColor": "#e5e7eb", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1055, + "version": 1, + "versionNonce": 1056, + "isDeleted": false, + "groupIds": [], + "boundElements": [], + "link": null, + "locked": false + }, + { + "type": "ellipse", + "id": "gA2", + "x": 62, + "y": 257, + "width": 26, + "height": 26, + "strokeColor": "#9ca3af", + "backgroundColor": "#e5e7eb", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1057, + "version": 1, + "versionNonce": 1058, + "isDeleted": false, + "groupIds": [], + "boundElements": [], + "link": null, + "locked": false + }, + { + "type": "ellipse", + "id": "gA3", + "x": 43, + "y": 283, + "width": 24, + "height": 24, + "strokeColor": "#9ca3af", + "backgroundColor": "#e5e7eb", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1059, + "version": 1, + "versionNonce": 1060, + "isDeleted": false, + "groupIds": [], + "boundElements": [], + "link": null, + "locked": false + }, + { + "type": "arrow", + "id": "fA_12", + "x": 50, + "y": 235, + "width": 25, + "height": 35, + "strokeColor": "#9ca3af", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 40, + "angle": 0, + "seed": 1061, + "version": 1, + "versionNonce": 1062, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "points": [ + [ + 0, + 0 + ], + [ + 25, + 35 + ] + ], + "startBinding": null, + "endBinding": null, + "startArrowhead": null, + "endArrowhead": null + }, + { + "type": "arrow", + "id": "fA_13", + "x": 50, + "y": 235, + "width": 5, + "height": 60, + "strokeColor": "#9ca3af", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 40, + "angle": 0, + "seed": 1063, + "version": 1, + "versionNonce": 1064, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "points": [ + [ + 0, + 0 + ], + [ + 5, + 60 + ] + ], + "startBinding": null, + "endBinding": null, + "startArrowhead": null, + "endArrowhead": null + }, + { + "type": "arrow", + "id": "fA_into", + "x": 75, + "y": 270, + "width": 45, + "height": -25, + "strokeColor": "#9ca3af", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 40, + "angle": 0, + "seed": 1065, + "version": 1, + "versionNonce": 1066, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "points": [ + [ + 0, + 0 + ], + [ + 45, + -25 + ] + ], + "startBinding": null, + "endBinding": null, + "startArrowhead": null, + "endArrowhead": null + }, + { + "type": "arrow", + "id": "e_solid_sub", + "x": 172.5, + "y": 210, + "width": 121.39999999999998, + "height": -56, + "strokeColor": "#64748b", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1067, + "version": 1, + "versionNonce": 1068, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "points": [ + [ + 0, + 0 + ], + [ + 121.39999999999998, + -56 + ] + ], + "startBinding": { + "elementId": "solid_nodule", + "focus": 0, + "gap": 2 + }, + "endBinding": { + "elementId": "pulm_nodule", + "focus": 0, + "gap": 2 + }, + "startArrowhead": null, + "endArrowhead": "arrow" + }, + { + "type": "arrow", + "id": "e_partsolid_sub", + "x": 275.0, + "y": 210, + "width": 70.0, + "height": -56, + "strokeColor": "#64748b", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1069, + "version": 1, + "versionNonce": 1070, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "points": [ + [ + 0, + 0 + ], + [ + 70.0, + -56 + ] + ], + "startBinding": { + "elementId": "partsolid_nodule", + "focus": 0, + "gap": 2 + }, + "endBinding": { + "elementId": "pulm_nodule", + "focus": 0, + "gap": 2 + }, + "startArrowhead": null, + "endArrowhead": "arrow" + }, + { + "type": "arrow", + "id": "e_nonsolid_sub", + "x": 550.0, + "y": 210, + "width": -146.60000000000002, + "height": -56, + "strokeColor": "#64748b", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1071, + "version": 1, + "versionNonce": 1072, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "points": [ + [ + 0, + 0 + ], + [ + -146.60000000000002, + -56 + ] + ], + "startBinding": { + "elementId": "nonsolid_nodule", + "focus": 0, + "gap": 2 + }, + "endBinding": { + "elementId": "pulm_nodule", + "focus": 0, + "gap": 2 + }, + "startArrowhead": null, + "endArrowhead": "arrow" + }, + { + "type": "rectangle", + "id": "l_solid_sub_bg", + "x": 170.0, + "y": 177.875, + "width": 70.0, + "height": 22.25, + "strokeColor": "transparent", + "backgroundColor": "#f8fafc", + "fillStyle": "solid", + "strokeWidth": 0, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1073, + "version": 1, + "versionNonce": 1074, + "isDeleted": false, + "groupIds": [], + "boundElements": [], + "link": null, + "locked": false + }, + { + "type": "text", + "id": "l_solid_sub_t", + "x": 175.0, + "y": 180.875, + "width": 60.0, + "height": 16.25, + "strokeColor": "#64748b", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1075, + "version": 1, + "versionNonce": 1076, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "subtype of", + "originalText": "subtype of", + "fontSize": 13, + "fontFamily": 2, + "textAlign": "center", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 + }, + { + "type": "rectangle", + "id": "l_partsolid_sub_bg", + "x": 255.0, + "y": 177.875, + "width": 70.0, + "height": 22.25, + "strokeColor": "transparent", + "backgroundColor": "#f8fafc", + "fillStyle": "solid", + "strokeWidth": 0, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1077, + "version": 1, + "versionNonce": 1078, + "isDeleted": false, + "groupIds": [], + "boundElements": [], + "link": null, + "locked": false + }, + { + "type": "text", + "id": "l_partsolid_sub_t", + "x": 260.0, + "y": 180.875, + "width": 60.0, + "height": 16.25, + "strokeColor": "#64748b", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1079, + "version": 1, + "versionNonce": 1080, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "subtype of", + "originalText": "subtype of", + "fontSize": 13, + "fontFamily": 2, + "textAlign": "center", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 + }, + { + "type": "rectangle", + "id": "l_nonsolid_sub_bg", + "x": 452.0, + "y": 157.875, + "width": 70.0, + "height": 22.25, + "strokeColor": "transparent", + "backgroundColor": "#f8fafc", + "fillStyle": "solid", + "strokeWidth": 0, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1081, + "version": 1, + "versionNonce": 1082, + "isDeleted": false, + "groupIds": [], + "boundElements": [], + "link": null, + "locked": false + }, + { + "type": "text", + "id": "l_nonsolid_sub_t", + "x": 457.0, + "y": 160.875, + "width": 60.0, + "height": 16.25, + "strokeColor": "#64748b", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1083, + "version": 1, + "versionNonce": 1084, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "subtype of", + "originalText": "subtype of", + "fontSize": 13, + "fontFamily": 2, + "textAlign": "center", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 + }, + { + "type": "arrow", + "id": "e_partsolid_comp", + "x": 295.0, + "y": 280, + "width": 105.39999999999998, + "height": 15, + "strokeColor": "#64748b", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1085, + "version": 1, + "versionNonce": 1086, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "points": [ + [ + 0, + 0 + ], + [ + 105.39999999999998, + 15 + ] + ], + "startBinding": { + "elementId": "partsolid_nodule", + "focus": 0, + "gap": 2 + }, + "endBinding": { + "elementId": "solid_component", + "focus": 0, + "gap": 2 + }, + "startArrowhead": null, + "endArrowhead": "arrow" + }, + { + "type": "text", + "id": "e_partsolid_comp_l", + "x": 358.69, + "y": 265.5, + "width": 98.02, + "height": 16.25, + "strokeColor": "#64748b", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1087, + "version": 1, + "versionNonce": 1088, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "has component", + "originalText": "has component", + "fontSize": 13, + "fontFamily": 2, + "textAlign": "center", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 + }, + { + "type": "arrow", + "id": "e_manifest", + "x": 160, + "y": 126.8, + "width": 112, + "height": -7.8999999999999915, + "strokeColor": "#64748b", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1089, + "version": 1, + "versionNonce": 1090, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "points": [ + [ + 0, + 0 + ], + [ + 112, + -7.8999999999999915 + ] + ], + "startBinding": { + "elementId": "lung_cancer", + "focus": 0, + "gap": 2 + }, + "endBinding": { + "elementId": "pulm_nodule", + "focus": 0, + "gap": 2 + }, + "startArrowhead": null, + "endArrowhead": "arrow" + }, + { + "type": "text", + "id": "e_manifest_l", + "x": 159.45, + "y": 96.85, + "width": 113.1, + "height": 16.25, + "strokeColor": "#64748b", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1091, + "version": 1, + "versionNonce": 1092, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "may manifest as", + "originalText": "may manifest as", + "fontSize": 13, + "fontFamily": 2, + "textAlign": "center", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 + }, + { + "type": "arrow", + "id": "e_progress", + "x": 530, + "y": 245.0, + "width": -195, + "height": 0.0, + "strokeColor": "#64748b", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "dashed", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1093, + "version": 1, + "versionNonce": 1094, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "points": [ + [ + 0, + 0 + ], + [ + -195, + 0.0 + ] + ], + "startBinding": { + "elementId": "nonsolid_nodule", + "focus": 0, + "gap": 2 + }, + "endBinding": { + "elementId": "partsolid_nodule", + "focus": 0, + "gap": 2 + }, + "startArrowhead": null, + "endArrowhead": "arrow" + }, + { + "type": "text", + "id": "e_progress_l", + "x": 375.95, + "y": 221.0, + "width": 113.1, + "height": 16.25, + "strokeColor": "#64748b", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1095, + "version": 1, + "versionNonce": 1096, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "may progress to", + "originalText": "may progress to", + "fontSize": 13, + "fontFamily": 2, + "textAlign": "center", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 + }, + { + "type": "arrow", + "id": "e_assessed", + "x": 418, + "y": 113.5, + "width": 74, + "height": 11.5, + "strokeColor": "#64748b", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1097, + "version": 1, + "versionNonce": 1098, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "points": [ + [ + 0, + 0 + ], + [ + 74, + 11.5 + ] + ], + "startBinding": { + "elementId": "pulm_nodule", + "focus": 0, + "gap": 2 + }, + "endBinding": { + "elementId": "lungrads", + "focus": 0, + "gap": 2 + }, + "startArrowhead": null, + "endArrowhead": "arrow" + }, + { + "type": "text", + "id": "e_assessed_l", + "x": 419.53, + "y": 95.25, + "width": 82.94, + "height": 16.25, + "strokeColor": "#64748b", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1099, + "version": 1, + "versionNonce": 1100, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "assessed by", + "originalText": "assessed by", + "fontSize": 13, + "fontFamily": 2, + "textAlign": "center", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 + }, + { + "type": "rectangle", + "id": "thorax", + "x": 160, + "y": 480, + "width": 110, + "height": 42, + "strokeColor": "#1d4ed8", + "backgroundColor": "#bfdbfe", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1101, + "version": 1, + "versionNonce": 1102, + "isDeleted": false, + "groupIds": [], + "boundElements": [ + { + "id": "thorax_t", + "type": "text" + }, + { + "id": "e_pspace_thorax", + "type": "arrow" + } + ], + "link": null, + "locked": false, + "roundness": { + "type": 3 + } + }, + { + "type": "text", + "id": "thorax_t", + "x": 170, + "y": 490, + "width": 90, + "height": 22, + "strokeColor": "#1e3a8a", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1103, + "version": 1, + "versionNonce": 1104, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "thorax", + "originalText": "thorax", + "fontSize": 14, + "fontFamily": 2, + "textAlign": "center", + "verticalAlign": "middle", + "containerId": "thorax", + "lineHeight": 1.25 + }, + { + "type": "rectangle", + "id": "pleural_space", + "x": 654, + "y": 480, + "width": 108, + "height": 44, + "strokeColor": "#1d4ed8", + "backgroundColor": "#bfdbfe", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1105, + "version": 1, + "versionNonce": 1106, + "isDeleted": false, + "groupIds": [], + "boundElements": [ + { + "id": "pleural_space_t", + "type": "text" + }, + { + "id": "e_pspace_thorax", + "type": "arrow" + } + ], + "link": null, + "locked": false, + "roundness": { + "type": 3 + } + }, + { + "type": "text", + "id": "pleural_space_t", + "x": 664, + "y": 490, + "width": 88, + "height": 24, + "strokeColor": "#1e3a8a", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1107, + "version": 1, + "versionNonce": 1108, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "pleural\nspace", + "originalText": "pleural\nspace", + "fontSize": 13, + "fontFamily": 2, + "textAlign": "center", + "verticalAlign": "middle", + "containerId": "pleural_space", + "lineHeight": 1.25 + }, + { + "type": "rectangle", + "id": "upper_abdomen", + "x": 777, + "y": 480, + "width": 115, + "height": 42, + "strokeColor": "#9ca3af", + "backgroundColor": "#e5e7eb", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "dashed", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1109, + "version": 1, + "versionNonce": 1110, + "isDeleted": false, + "groupIds": [], + "boundElements": [ + { + "id": "upper_abdomen_t", + "type": "text" + } + ], + "link": null, + "locked": false, + "roundness": { + "type": 3 + } + }, + { + "type": "text", + "id": "upper_abdomen_t", + "x": 787, + "y": 490, + "width": 95, + "height": 22, + "strokeColor": "#4b5563", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1111, + "version": 1, + "versionNonce": 1112, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "upper abdomen", + "originalText": "upper abdomen", + "fontSize": 13, + "fontFamily": 2, + "textAlign": "center", + "verticalAlign": "middle", + "containerId": "upper_abdomen", + "lineHeight": 1.25 + }, + { + "type": "rectangle", + "id": "right_lung", + "x": 150, + "y": 550, + "width": 105, + "height": 40, + "strokeColor": "#1d4ed8", + "backgroundColor": "#bfdbfe", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1113, + "version": 1, + "versionNonce": 1114, + "isDeleted": false, + "groupIds": [], + "boundElements": [ + { + "id": "right_lung_t", + "type": "text" + }, + { + "id": "e_rlung_lung", + "type": "arrow" + }, + { + "id": "e_ulobe_rlung", + "type": "arrow" + } + ], + "link": null, + "locked": false, + "roundness": { + "type": 3 + } + }, + { + "type": "text", + "id": "right_lung_t", + "x": 160, + "y": 560, + "width": 85, + "height": 20, + "strokeColor": "#1e3a8a", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1115, + "version": 1, + "versionNonce": 1116, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "right lung", + "originalText": "right lung", + "fontSize": 13, + "fontFamily": 2, + "textAlign": "center", + "verticalAlign": "middle", + "containerId": "right_lung", + "lineHeight": 1.25 + }, + { + "type": "rectangle", + "id": "lung", + "x": 280, + "y": 550, + "width": 130, + "height": 42, + "strokeColor": "#1d4ed8", + "backgroundColor": "#bfdbfe", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1117, + "version": 1, + "versionNonce": 1118, + "isDeleted": false, + "groupIds": [], + "boundElements": [ + { + "id": "lung_t", + "type": "text" + }, + { + "id": "e_rlung_lung", + "type": "arrow" + }, + { + "id": "e_llung_lung", + "type": "arrow" + }, + { + "id": "e_parenchyma_lung", + "type": "arrow" + } + ], + "link": null, + "locked": false, + "roundness": { + "type": 3 + } + }, + { + "type": "text", + "id": "lung_t", + "x": 290, + "y": 560, + "width": 110, + "height": 22, + "strokeColor": "#1e3a8a", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1119, + "version": 1, + "versionNonce": 1120, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "lung", + "originalText": "lung", + "fontSize": 14, + "fontFamily": 2, + "textAlign": "center", + "verticalAlign": "middle", + "containerId": "lung", + "lineHeight": 1.25 + }, + { + "type": "rectangle", + "id": "left_lung", + "x": 435, + "y": 550, + "width": 105, + "height": 40, + "strokeColor": "#1d4ed8", + "backgroundColor": "#bfdbfe", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1121, + "version": 1, + "versionNonce": 1122, + "isDeleted": false, + "groupIds": [], + "boundElements": [ + { + "id": "left_lung_t", + "type": "text" + }, + { + "id": "e_llung_lung", + "type": "arrow" + } + ], + "link": null, + "locked": false, + "roundness": { + "type": 3 + } + }, + { + "type": "text", + "id": "left_lung_t", + "x": 445, + "y": 560, + "width": 85, + "height": 20, + "strokeColor": "#1e3a8a", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1123, + "version": 1, + "versionNonce": 1124, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "left lung", + "originalText": "left lung", + "fontSize": 13, + "fontFamily": 2, + "textAlign": "center", + "verticalAlign": "middle", + "containerId": "left_lung", + "lineHeight": 1.25 + }, + { + "type": "rectangle", + "id": "upper_lobe", + "x": 140, + "y": 660, + "width": 138, + "height": 42, + "strokeColor": "#1d4ed8", + "backgroundColor": "#bfdbfe", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1125, + "version": 1, + "versionNonce": 1126, + "isDeleted": false, + "groupIds": [], + "boundElements": [ + { + "id": "upper_lobe_t", + "type": "text" + }, + { + "id": "e_ulobe_rlung", + "type": "arrow" + } + ], + "link": null, + "locked": false, + "roundness": { + "type": 3 + } + }, + { + "type": "text", + "id": "upper_lobe_t", + "x": 150, + "y": 670, + "width": 118, + "height": 22, + "strokeColor": "#1e3a8a", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1127, + "version": 1, + "versionNonce": 1128, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "upper lobe of\nright lung", + "originalText": "upper lobe of\nright lung", + "fontSize": 13, + "fontFamily": 2, + "textAlign": "center", + "verticalAlign": "middle", + "containerId": "upper_lobe", + "lineHeight": 1.25 + }, + { + "type": "rectangle", + "id": "lung_parenchyma", + "x": 310, + "y": 660, + "width": 120, + "height": 44, + "strokeColor": "#1d4ed8", + "backgroundColor": "#bfdbfe", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1129, + "version": 1, + "versionNonce": 1130, + "isDeleted": false, + "groupIds": [], + "boundElements": [ + { + "id": "lung_parenchyma_t", + "type": "text" + }, + { + "id": "e_parenchyma_lung", + "type": "arrow" + } + ], + "link": null, + "locked": false, + "roundness": { + "type": 3 + } + }, + { + "type": "text", + "id": "lung_parenchyma_t", + "x": 320, + "y": 670, + "width": 100, + "height": 24, + "strokeColor": "#1e3a8a", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1131, + "version": 1, + "versionNonce": 1132, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "lung\nparenchyma", + "originalText": "lung\nparenchyma", + "fontSize": 13, + "fontFamily": 2, + "textAlign": "center", + "verticalAlign": "middle", + "containerId": "lung_parenchyma", + "lineHeight": 1.25 + }, + { + "type": "ellipse", + "id": "gB1", + "x": 35, + "y": 675, + "width": 30, + "height": 30, + "strokeColor": "#9ca3af", + "backgroundColor": "#e5e7eb", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1133, + "version": 1, + "versionNonce": 1134, + "isDeleted": false, + "groupIds": [], + "boundElements": [], + "link": null, + "locked": false + }, + { + "type": "ellipse", + "id": "gB2", + "x": 62, + "y": 712, + "width": 26, + "height": 26, + "strokeColor": "#9ca3af", + "backgroundColor": "#e5e7eb", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1135, + "version": 1, + "versionNonce": 1136, + "isDeleted": false, + "groupIds": [], + "boundElements": [], + "link": null, + "locked": false + }, + { + "type": "ellipse", + "id": "gB3", + "x": 43, + "y": 738, + "width": 24, + "height": 24, + "strokeColor": "#9ca3af", + "backgroundColor": "#e5e7eb", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1137, + "version": 1, + "versionNonce": 1138, + "isDeleted": false, + "groupIds": [], + "boundElements": [], + "link": null, + "locked": false + }, + { + "type": "arrow", + "id": "fB_12", + "x": 50, + "y": 690, + "width": 25, + "height": 35, + "strokeColor": "#9ca3af", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 40, + "angle": 0, + "seed": 1139, + "version": 1, + "versionNonce": 1140, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "points": [ + [ + 0, + 0 + ], + [ + 25, + 35 + ] + ], + "startBinding": null, + "endBinding": null, + "startArrowhead": null, + "endArrowhead": null + }, + { + "type": "arrow", + "id": "fB_13", + "x": 50, + "y": 690, + "width": 5, + "height": 60, + "strokeColor": "#9ca3af", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 40, + "angle": 0, + "seed": 1141, + "version": 1, + "versionNonce": 1142, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "points": [ + [ + 0, + 0 + ], + [ + 5, + 60 + ] + ], + "startBinding": null, + "endBinding": null, + "startArrowhead": null, + "endArrowhead": null + }, + { + "type": "arrow", + "id": "fB_into", + "x": 75, + "y": 725, + "width": 65, + "height": -40, + "strokeColor": "#9ca3af", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 40, + "angle": 0, + "seed": 1143, + "version": 1, + "versionNonce": 1144, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "points": [ + [ + 0, + 0 + ], + [ + 65, + -40 + ] + ], + "startBinding": null, + "endBinding": null, + "startArrowhead": null, + "endArrowhead": null + }, + { + "type": "arrow", + "id": "e_rlung_lung", + "x": 255, + "y": 570.0, + "width": 25, + "height": -7.399999999999977, + "strokeColor": "#64748b", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1145, + "version": 1, + "versionNonce": 1146, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "points": [ + [ + 0, + 0 + ], + [ + 25, + -7.399999999999977 + ] + ], + "startBinding": { + "elementId": "right_lung", + "focus": 0, + "gap": 2 + }, + "endBinding": { + "elementId": "lung", + "focus": 0, + "gap": 2 + }, + "startArrowhead": null, + "endArrowhead": "arrow" + }, + { + "type": "arrow", + "id": "e_llung_lung", + "x": 435, + "y": 570.0, + "width": -25, + "height": 9.399999999999977, + "strokeColor": "#64748b", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1147, + "version": 1, + "versionNonce": 1148, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "points": [ + [ + 0, + 0 + ], + [ + -25, + 9.399999999999977 + ] + ], + "startBinding": { + "elementId": "left_lung", + "focus": 0, + "gap": 2 + }, + "endBinding": { + "elementId": "lung", + "focus": 0, + "gap": 2 + }, + "startArrowhead": null, + "endArrowhead": "arrow" + }, + { + "type": "arrow", + "id": "e_ulobe_rlung", + "x": 195.2, + "y": 660, + "width": -3.1999999999999886, + "height": -70, + "strokeColor": "#64748b", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1149, + "version": 1, + "versionNonce": 1150, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "points": [ + [ + 0, + 0 + ], + [ + -3.1999999999999886, + -70 + ] + ], + "startBinding": { + "elementId": "upper_lobe", + "focus": 0, + "gap": 2 + }, + "endBinding": { + "elementId": "right_lung", + "focus": 0, + "gap": 2 + }, + "startArrowhead": null, + "endArrowhead": "arrow" + }, + { + "type": "arrow", + "id": "e_parenchyma_lung", + "x": 394.0, + "y": 660, + "width": 0.39999999999997726, + "height": -68, + "strokeColor": "#64748b", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1151, + "version": 1, + "versionNonce": 1152, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "points": [ + [ + 0, + 0 + ], + [ + 0.39999999999997726, + -68 + ] + ], + "startBinding": { + "elementId": "lung_parenchyma", + "focus": 0, + "gap": 2 + }, + "endBinding": { + "elementId": "lung", + "focus": 0, + "gap": 2 + }, + "startArrowhead": null, + "endArrowhead": "arrow" + }, + { + "type": "arrow", + "id": "e_pspace_thorax", + "x": 654, + "y": 502.0, + "width": -384, + "height": -1.0, + "strokeColor": "#64748b", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1153, + "version": 1, + "versionNonce": 1154, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "points": [ + [ + 0, + 0 + ], + [ + -384, + -1.0 + ] + ], + "startBinding": { + "elementId": "pleural_space", + "focus": 0, + "gap": 2 + }, + "endBinding": { + "elementId": "thorax", + "focus": 0, + "gap": 2 + }, + "startArrowhead": null, + "endArrowhead": "arrow" + }, + { + "type": "rectangle", + "id": "l_ulobe_rlung_bg", + "x": 155.15, + "y": 600.875, + "width": 83.7, + "height": 22.25, + "strokeColor": "transparent", + "backgroundColor": "#f8fafc", + "fillStyle": "solid", + "strokeWidth": 0, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1155, + "version": 1, + "versionNonce": 1156, + "isDeleted": false, + "groupIds": [], + "boundElements": [], + "link": null, + "locked": false + }, + { + "type": "text", + "id": "l_ulobe_rlung_t", + "x": 160.15, + "y": 603.875, + "width": 73.7, + "height": 16.25, + "strokeColor": "#64748b", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1157, + "version": 1, + "versionNonce": 1158, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "contained by", + "originalText": "contained by", + "fontSize": 13, + "fontFamily": 2, + "textAlign": "center", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 + }, + { + "type": "rectangle", + "id": "l_laterality_bg", + "x": 315.8, + "y": 600.875, + "width": 58.4, + "height": 22.25, + "strokeColor": "transparent", + "backgroundColor": "#f8fafc", + "fillStyle": "solid", + "strokeWidth": 0, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1159, + "version": 1, + "versionNonce": 1160, + "isDeleted": false, + "groupIds": [], + "boundElements": [], + "link": null, + "locked": false + }, + { + "type": "text", + "id": "l_laterality_t", + "x": 320.8, + "y": 603.875, + "width": 48.4, + "height": 16.25, + "strokeColor": "#64748b", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1161, + "version": 1, + "versionNonce": 1162, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "laterality", + "originalText": "laterality", + "fontSize": 13, + "fontFamily": 2, + "textAlign": "center", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 + }, + { + "type": "rectangle", + "id": "l_parenchyma_lung_bg", + "x": 463.55, + "y": 600.875, + "width": 46.9, + "height": 22.25, + "strokeColor": "transparent", + "backgroundColor": "#f8fafc", + "fillStyle": "solid", + "strokeWidth": 0, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1163, + "version": 1, + "versionNonce": 1164, + "isDeleted": false, + "groupIds": [], + "boundElements": [], + "link": null, + "locked": false + }, + { + "type": "text", + "id": "l_parenchyma_lung_t", + "x": 468.55, + "y": 603.875, + "width": 36.9, + "height": 16.25, + "strokeColor": "#64748b", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1165, + "version": 1, + "versionNonce": 1166, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "part of", + "originalText": "part of", + "fontSize": 13, + "fontFamily": 2, + "textAlign": "center", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 + }, + { + "type": "rectangle", + "id": "l_pspace_thorax_bg", + "x": 438.15, + "y": 483.875, + "width": 83.7, + "height": 22.25, + "strokeColor": "transparent", + "backgroundColor": "#f8fafc", + "fillStyle": "solid", + "strokeWidth": 0, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1167, + "version": 1, + "versionNonce": 1168, + "isDeleted": false, + "groupIds": [], + "boundElements": [], + "link": null, + "locked": false + }, + { + "type": "text", + "id": "l_pspace_thorax_t", + "x": 443.15, + "y": 486.875, + "width": 73.7, + "height": 16.25, + "strokeColor": "#64748b", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1169, + "version": 1, + "versionNonce": 1170, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "contained by", + "originalText": "contained by", + "fontSize": 13, + "fontFamily": 2, + "textAlign": "center", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 + }, + { + "type": "rectangle", + "id": "ct_chest", + "x": 285, + "y": 920, + "width": 230, + "height": 60, + "strokeColor": "#b45309", + "backgroundColor": "#fde68a", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1171, + "version": 1, + "versionNonce": 1172, + "isDeleted": false, + "groupIds": [], + "boundElements": [ + { + "id": "ct_chest_t", + "type": "text" + }, + { + "id": "e_wo_family", + "type": "arrow" + }, + { + "id": "e_w_family", + "type": "arrow" + }, + { + "id": "e_wo_w_family", + "type": "arrow" + }, + { + "id": "e_cta_family", + "type": "arrow" + } + ], + "link": null, + "locked": false, + "roundness": { + "type": 3 + } + }, + { + "type": "text", + "id": "ct_chest_t", + "x": 295, + "y": 930, + "width": 210, + "height": 40, + "strokeColor": "#78350f", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1173, + "version": 1, + "versionNonce": 1174, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "CT Chest\npreferred (to come)", + "originalText": "CT Chest\npreferred (to come)", + "fontSize": 14, + "fontFamily": 2, + "textAlign": "center", + "verticalAlign": "middle", + "containerId": "ct_chest", + "lineHeight": 1.25 + }, + { + "type": "rectangle", + "id": "ct_wo", + "x": 90, + "y": 1010, + "width": 152, + "height": 70, + "strokeColor": "#b45309", + "backgroundColor": "#fde68a", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1175, + "version": 1, + "versionNonce": 1176, + "isDeleted": false, + "groupIds": [], + "boundElements": [ + { + "id": "ct_wo_t", + "type": "text" + }, + { + "id": "e_wo_family", + "type": "arrow" + } + ], + "link": null, + "locked": false, + "roundness": { + "type": 3 + } + }, + { + "type": "text", + "id": "ct_wo_t", + "x": 100, + "y": 1020, + "width": 132, + "height": 50, + "strokeColor": "#78350f", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1177, + "version": 1, + "versionNonce": 1178, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "CT Chest WO contrast\n29252-4", + "originalText": "CT Chest WO contrast\n29252-4", + "fontSize": 13, + "fontFamily": 2, + "textAlign": "center", + "verticalAlign": "middle", + "containerId": "ct_wo", + "lineHeight": 1.25 + }, + { + "type": "rectangle", + "id": "ct_w", + "x": 250, + "y": 1010, + "width": 158, + "height": 70, + "strokeColor": "#b45309", + "backgroundColor": "#fde68a", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1179, + "version": 1, + "versionNonce": 1180, + "isDeleted": false, + "groupIds": [], + "boundElements": [ + { + "id": "ct_w_t", + "type": "text" + }, + { + "id": "e_w_family", + "type": "arrow" + }, + { + "id": "e_w_regionimaged", + "type": "arrow" + } + ], + "link": null, + "locked": false, + "roundness": { + "type": 3 + } + }, + { + "type": "text", + "id": "ct_w_t", + "x": 260, + "y": 1020, + "width": 138, + "height": 50, + "strokeColor": "#78350f", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1181, + "version": 1, + "versionNonce": 1182, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "CT Chest W contrast IV\n24628-0", + "originalText": "CT Chest W contrast IV\n24628-0", + "fontSize": 13, + "fontFamily": 2, + "textAlign": "center", + "verticalAlign": "middle", + "containerId": "ct_w", + "lineHeight": 1.25 + }, + { + "type": "rectangle", + "id": "ct_wo_w", + "x": 416, + "y": 1010, + "width": 209, + "height": 70, + "strokeColor": "#b45309", + "backgroundColor": "#fde68a", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1183, + "version": 1, + "versionNonce": 1184, + "isDeleted": false, + "groupIds": [], + "boundElements": [ + { + "id": "ct_wo_w_t", + "type": "text" + }, + { + "id": "e_wo_w_family", + "type": "arrow" + } + ], + "link": null, + "locked": false, + "roundness": { + "type": 3 + } + }, + { + "type": "text", + "id": "ct_wo_w_t", + "x": 426, + "y": 1020, + "width": 189, + "height": 50, + "strokeColor": "#78350f", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1185, + "version": 1, + "versionNonce": 1186, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "CT Chest WO and W contrast IV\n30598-7", + "originalText": "CT Chest WO and W contrast IV\n30598-7", + "fontSize": 13, + "fontFamily": 2, + "textAlign": "center", + "verticalAlign": "middle", + "containerId": "ct_wo_w", + "lineHeight": 1.25 + }, + { + "type": "rectangle", + "id": "ct_cta", + "x": 633, + "y": 1010, + "width": 151, + "height": 70, + "strokeColor": "#b45309", + "backgroundColor": "#fde68a", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1187, + "version": 1, + "versionNonce": 1188, + "isDeleted": false, + "groupIds": [], + "boundElements": [ + { + "id": "ct_cta_t", + "type": "text" + }, + { + "id": "e_cta_family", + "type": "arrow" + } + ], + "link": null, + "locked": false, + "roundness": { + "type": 3 + } + }, + { + "type": "text", + "id": "ct_cta_t", + "x": 643, + "y": 1020, + "width": 131, + "height": 50, + "strokeColor": "#78350f", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1189, + "version": 1, + "versionNonce": 1190, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "CTA Chest vessels\nWO and W contrast IV\n30804-9", + "originalText": "CTA Chest vessels\nWO and W contrast IV\n30804-9", + "fontSize": 13, + "fontFamily": 2, + "textAlign": "center", + "verticalAlign": "middle", + "containerId": "ct_cta", + "lineHeight": 1.25 + }, + { + "type": "rectangle", + "id": "ct_thoracic_spine", + "x": 792, + "y": 1010, + "width": 126, + "height": 70, + "strokeColor": "#9ca3af", + "backgroundColor": "#e5e7eb", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "dashed", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1191, + "version": 1, + "versionNonce": 1192, + "isDeleted": false, + "groupIds": [], + "boundElements": [ + { + "id": "ct_thoracic_spine_t", + "type": "text" + } + ], + "link": null, + "locked": false, + "roundness": { + "type": 3 + } + }, + { + "type": "text", + "id": "ct_thoracic_spine_t", + "x": 802, + "y": 1020, + "width": 106, + "height": 50, + "strokeColor": "#4b5563", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1193, + "version": 1, + "versionNonce": 1194, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "CT Thoracic spine\nW contrast IV\n24979-7", + "originalText": "CT Thoracic spine\nW contrast IV\n24979-7", + "fontSize": 13, + "fontFamily": 2, + "textAlign": "center", + "verticalAlign": "middle", + "containerId": "ct_thoracic_spine", + "lineHeight": 1.25 + }, + { + "type": "rectangle", + "id": "region_imaged", + "x": 266, + "y": 1100, + "width": 126, + "height": 40, + "strokeColor": "#9ca3af", + "backgroundColor": "#e5e7eb", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1195, + "version": 1, + "versionNonce": 1196, + "isDeleted": false, + "groupIds": [], + "boundElements": [ + { + "id": "region_imaged_t", + "type": "text" + }, + { + "id": "e_w_regionimaged", + "type": "arrow" + } + ], + "link": null, + "locked": false, + "roundness": { + "type": 3 + } + }, + { + "type": "text", + "id": "region_imaged_t", + "x": 276, + "y": 1110, + "width": 106, + "height": 20, + "strokeColor": "#4b5563", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1197, + "version": 1, + "versionNonce": 1198, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "Region imaged:\nThorax (RID1243)", + "originalText": "Region imaged:\nThorax (RID1243)", + "fontSize": 13, + "fontFamily": 2, + "textAlign": "center", + "verticalAlign": "middle", + "containerId": "region_imaged", + "lineHeight": 1.25 + }, + { + "type": "ellipse", + "id": "gC1", + "x": 28, + "y": 1031, + "width": 28, + "height": 28, + "strokeColor": "#9ca3af", + "backgroundColor": "#e5e7eb", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1199, + "version": 1, + "versionNonce": 1200, + "isDeleted": false, + "groupIds": [], + "boundElements": [], + "link": null, + "locked": false + }, + { + "type": "ellipse", + "id": "gC2", + "x": 52, + "y": 1066, + "width": 24, + "height": 24, + "strokeColor": "#9ca3af", + "backgroundColor": "#e5e7eb", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1201, + "version": 1, + "versionNonce": 1202, + "isDeleted": false, + "groupIds": [], + "boundElements": [], + "link": null, + "locked": false + }, + { + "type": "arrow", + "id": "fC_12", + "x": 42, + "y": 1045, + "width": 22, + "height": 33, + "strokeColor": "#9ca3af", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 40, + "angle": 0, + "seed": 1203, + "version": 1, + "versionNonce": 1204, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "points": [ + [ + 0, + 0 + ], + [ + 22, + 33 + ] + ], + "startBinding": null, + "endBinding": null, + "startArrowhead": null, + "endArrowhead": null + }, + { + "type": "arrow", + "id": "fC_into", + "x": 42, + "y": 1045, + "width": 48, + "height": 0, + "strokeColor": "#9ca3af", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 40, + "angle": 0, + "seed": 1205, + "version": 1, + "versionNonce": 1206, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "points": [ + [ + 0, + 0 + ], + [ + 48, + 0 + ] + ], + "startBinding": null, + "endBinding": null, + "startArrowhead": null, + "endArrowhead": null + }, + { + "type": "arrow", + "id": "e_wo_family", + "x": 166.0, + "y": 1010, + "width": 142.0, + "height": -30, + "strokeColor": "#64748b", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1207, + "version": 1, + "versionNonce": 1208, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "points": [ + [ + 0, + 0 + ], + [ + 142.0, + -30 + ] + ], + "startBinding": { + "elementId": "ct_wo", + "focus": 0, + "gap": 2 + }, + "endBinding": { + "elementId": "ct_chest", + "focus": 0, + "gap": 2 + }, + "startArrowhead": null, + "endArrowhead": "arrow" + }, + { + "type": "text", + "id": "e_wo_family_l", + "x": 161.68, + "y": 975.0, + "width": 120.63999999999999, + "height": 16.25, + "strokeColor": "#64748b", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1209, + "version": 1, + "versionNonce": 1210, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "member of family", + "originalText": "member of family", + "fontSize": 13, + "fontFamily": 2, + "textAlign": "center", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 + }, + { + "type": "arrow", + "id": "e_w_family", + "x": 329.0, + "y": 1010, + "width": 36.5, + "height": -30, + "strokeColor": "#64748b", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1211, + "version": 1, + "versionNonce": 1212, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "points": [ + [ + 0, + 0 + ], + [ + 36.5, + -30 + ] + ], + "startBinding": { + "elementId": "ct_w", + "focus": 0, + "gap": 2 + }, + "endBinding": { + "elementId": "ct_chest", + "focus": 0, + "gap": 2 + }, + "startArrowhead": null, + "endArrowhead": "arrow" + }, + { + "type": "arrow", + "id": "e_wo_w_family", + "x": 520.5, + "y": 1010, + "width": -86.0, + "height": -30, + "strokeColor": "#64748b", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1213, + "version": 1, + "versionNonce": 1214, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "points": [ + [ + 0, + 0 + ], + [ + -86.0, + -30 + ] + ], + "startBinding": { + "elementId": "ct_wo_w", + "focus": 0, + "gap": 2 + }, + "endBinding": { + "elementId": "ct_chest", + "focus": 0, + "gap": 2 + }, + "startArrowhead": null, + "endArrowhead": "arrow" + }, + { + "type": "arrow", + "id": "e_cta_family", + "x": 678.3, + "y": 1010, + "width": -186.29999999999995, + "height": -30, + "strokeColor": "#64748b", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1215, + "version": 1, + "versionNonce": 1216, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "points": [ + [ + 0, + 0 + ], + [ + -186.29999999999995, + -30 + ] + ], + "startBinding": { + "elementId": "ct_cta", + "focus": 0, + "gap": 2 + }, + "endBinding": { + "elementId": "ct_chest", + "focus": 0, + "gap": 2 + }, + "startArrowhead": null, + "endArrowhead": "arrow" + }, + { + "type": "arrow", + "id": "e_w_regionimaged", + "x": 329.0, + "y": 1080, + "width": 0.0, + "height": 20, + "strokeColor": "#64748b", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1217, + "version": 1, + "versionNonce": 1218, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "points": [ + [ + 0, + 0 + ], + [ + 0.0, + 20 + ] + ], + "startBinding": { + "elementId": "ct_w", + "focus": 0, + "gap": 2 + }, + "endBinding": { + "elementId": "region_imaged", + "focus": 0, + "gap": 2 + }, + "startArrowhead": null, + "endArrowhead": "arrow" + }, + { + "type": "text", + "id": "e_w_regionimaged_l", + "x": 386.99, + "y": 1090.0, + "width": 98.02, + "height": 16.25, + "strokeColor": "#64748b", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1219, + "version": 1, + "versionNonce": 1220, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "Playbook part", + "originalText": "Playbook part", + "fontSize": 13, + "fontFamily": 2, + "textAlign": "center", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 + }, + { + "type": "arrow", + "id": "cx_pn_lung", + "x": 345.0, + "y": 154, + "width": 0.0, + "height": 396, + "strokeColor": "#be123c", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 3, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1221, + "version": 1, + "versionNonce": 1222, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "points": [ + [ + 0.0, + 0 + ], + [ + 0.0, + 396 + ] + ], + "startBinding": null, + "endBinding": null, + "startArrowhead": null, + "endArrowhead": "arrow" + }, + { + "type": "rectangle", + "id": "cx_pn_lung_bg", + "x": 358.8, + "y": 393, + "width": 66.4, + "height": 22.25, + "strokeColor": "transparent", + "backgroundColor": "#ffffff", + "fillStyle": "solid", + "strokeWidth": 0, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1223, + "version": 1, + "versionNonce": 1224, + "isDeleted": false, + "groupIds": [], + "boundElements": [], + "link": null, + "locked": false + }, + { + "type": "text", + "id": "cx_pn_lung_l", + "x": 363.8, + "y": 396, + "width": 56.4, + "height": 16.25, + "strokeColor": "#64748b", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1225, + "version": 1, + "versionNonce": 1226, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "scoped to", + "originalText": "scoped to", + "fontSize": 13, + "fontFamily": 2, + "textAlign": "center", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 + }, + { + "type": "arrow", + "id": "cx_lc_lung", + "x": 90.0, + "y": 152, + "width": 209.5, + "height": 398, + "strokeColor": "#be123c", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 3, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1227, + "version": 1, + "versionNonce": 1228, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "points": [ + [ + 0.0, + 0 + ], + [ + 0.0, + 253 + ], + [ + 210.0, + 253 + ], + [ + 209.5, + 398 + ] + ], + "startBinding": null, + "endBinding": null, + "startArrowhead": null, + "endArrowhead": "arrow" + }, + { + "type": "rectangle", + "id": "cx_lc_lung_bg", + "x": 161.8, + "y": 390, + "width": 66.4, + "height": 22.25, + "strokeColor": "transparent", + "backgroundColor": "#ffffff", + "fillStyle": "solid", + "strokeWidth": 0, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1229, + "version": 1, + "versionNonce": 1230, + "isDeleted": false, + "groupIds": [], + "boundElements": [], + "link": null, + "locked": false + }, + { + "type": "text", + "id": "cx_lc_lung_l", + "x": 166.8, + "y": 393, + "width": 56.4, + "height": 16.25, + "strokeColor": "#64748b", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1231, + "version": 1, + "versionNonce": 1232, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "scoped to", + "originalText": "scoped to", + "fontSize": 13, + "fontFamily": 2, + "textAlign": "center", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 + }, + { + "type": "arrow", + "id": "cx_pe_pspace", + "x": 708.0, + "y": 152, + "width": 0.0, + "height": 328, + "strokeColor": "#be123c", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 3, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1233, + "version": 1, + "versionNonce": 1234, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "points": [ + [ + 0.0, + 0 + ], + [ + 0.0, + 328 + ] + ], + "startBinding": null, + "endBinding": null, + "startArrowhead": null, + "endArrowhead": "arrow" + }, + { + "type": "rectangle", + "id": "cx_pe_pspace_bg", + "x": 714.8, + "y": 283, + "width": 66.4, + "height": 22.25, + "strokeColor": "transparent", + "backgroundColor": "#f8fafc", + "fillStyle": "solid", + "strokeWidth": 0, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1235, + "version": 1, + "versionNonce": 1236, + "isDeleted": false, + "groupIds": [], + "boundElements": [], + "link": null, + "locked": false + }, + { + "type": "text", + "id": "cx_pe_pspace_l", + "x": 719.8, + "y": 286, + "width": 56.4, + "height": 16.25, + "strokeColor": "#64748b", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1237, + "version": 1, + "versionNonce": 1238, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "scoped to", + "originalText": "scoped to", + "fontSize": 13, + "fontFamily": 2, + "textAlign": "center", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 + }, + { + "type": "arrow", + "id": "cx_ctchest_thorax", + "x": 319.5, + "y": 920, + "width": -159.5, + "height": -419.0, + "strokeColor": "#be123c", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 3, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1239, + "version": 1, + "versionNonce": 1240, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "points": [ + [ + 0.0, + 0 + ], + [ + 0.0, + -74 + ], + [ + -219.5, + -74 + ], + [ + -219.5, + -419 + ], + [ + -159.5, + -419.0 + ] + ], + "startBinding": null, + "endBinding": null, + "startArrowhead": null, + "endArrowhead": "arrow" + }, + { + "type": "rectangle", + "id": "cx_ctchest_thorax_bg", + "x": 41.85, + "y": 811, + "width": 48.3, + "height": 22.25, + "strokeColor": "transparent", + "backgroundColor": "#ffffff", + "fillStyle": "solid", + "strokeWidth": 0, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1241, + "version": 1, + "versionNonce": 1242, + "isDeleted": false, + "groupIds": [], + "boundElements": [], + "link": null, + "locked": false + }, + { + "type": "text", + "id": "cx_ctchest_thorax_l", + "x": 46.85, + "y": 814, + "width": 38.3, + "height": 16.25, + "strokeColor": "#64748b", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1243, + "version": 1, + "versionNonce": 1244, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "covers", + "originalText": "covers", + "fontSize": 13, + "fontFamily": 2, + "textAlign": "center", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 + }, + { + "type": "arrow", + "id": "cx_ctchest_lung", + "x": 354.0, + "y": 920, + "width": -59.69999999999999, + "height": -328, + "strokeColor": "#be123c", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 3, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1245, + "version": 1, + "versionNonce": 1246, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "points": [ + [ + 0.0, + 0 + ], + [ + 0.0, + -52 + ], + [ + -236.0, + -52 + ], + [ + -236.0, + -190 + ], + [ + -60.0, + -190 + ], + [ + -59.69999999999999, + -328 + ] + ], + "startBinding": null, + "endBinding": null, + "startArrowhead": null, + "endArrowhead": "arrow" + }, + { + "type": "rectangle", + "id": "cx_ctchest_lung_bg", + "x": 130.8, + "y": 811, + "width": 58.4, + "height": 22.25, + "strokeColor": "transparent", + "backgroundColor": "#ffffff", + "fillStyle": "solid", + "strokeWidth": 0, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1247, + "version": 1, + "versionNonce": 1248, + "isDeleted": false, + "groupIds": [], + "boundElements": [], + "link": null, + "locked": false + }, + { + "type": "text", + "id": "cx_ctchest_lung_l", + "x": 135.8, + "y": 814, + "width": 48.4, + "height": 16.25, + "strokeColor": "#64748b", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1249, + "version": 1, + "versionNonce": 1250, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "included", + "originalText": "included", + "fontSize": 13, + "fontFamily": 2, + "textAlign": "center", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 + }, + { + "type": "arrow", + "id": "cx_ctchest_abdomen", + "x": 480.5, + "y": 920, + "width": 354.0, + "height": -398, + "strokeColor": "#be123c", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "dashed", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1251, + "version": 1, + "versionNonce": 1252, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "points": [ + [ + 0.0, + 0 + ], + [ + 0.0, + -74 + ], + [ + 354.0, + -74 + ], + [ + 354.0, + -398 + ] + ], + "startBinding": null, + "endBinding": null, + "startArrowhead": null, + "endArrowhead": "arrow" + }, + { + "type": "rectangle", + "id": "cx_ctchest_abdomen_bg", + "x": 788.65, + "y": 680, + "width": 91.7, + "height": 22.25, + "strokeColor": "transparent", + "backgroundColor": "#f8fafc", + "fillStyle": "solid", + "strokeWidth": 0, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1253, + "version": 1, + "versionNonce": 1254, + "isDeleted": false, + "groupIds": [], + "boundElements": [], + "link": null, + "locked": false + }, + { + "type": "text", + "id": "cx_ctchest_abdomen_l", + "x": 793.65, + "y": 683, + "width": 81.7, + "height": 16.25, + "strokeColor": "#64748b", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1255, + "version": 1, + "versionNonce": 1256, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "edge (usually)", + "originalText": "edge (usually)", + "fontSize": 13, + "fontFamily": 2, + "textAlign": "center", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 + }, + { + "type": "arrow", + "id": "cx_pn_ctchest", + "x": 272, + "y": 154.0, + "width": 13, + "height": 796.0, + "strokeColor": "#be123c", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 3, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1257, + "version": 1, + "versionNonce": 1258, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "points": [ + [ + 0, + 0.0 + ], + [ + 0, + 12.0 + ], + [ + -264, + 12.0 + ], + [ + -264, + 796.0 + ], + [ + 13, + 796.0 + ] + ], + "startBinding": null, + "endBinding": null, + "startArrowhead": null, + "endArrowhead": "arrow" + }, + { + "type": "rectangle", + "id": "cx_pn_ctchest_bg", + "x": 19.85, + "y": 589, + "width": 56.3, + "height": 22.25, + "strokeColor": "transparent", + "backgroundColor": "#f8fafc", + "fillStyle": "solid", + "strokeWidth": 0, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1259, + "version": 1, + "versionNonce": 1260, + "isDeleted": false, + "groupIds": [], + "boundElements": [], + "link": null, + "locked": false + }, + { + "type": "text", + "id": "cx_pn_ctchest_l", + "x": 24.85, + "y": 592, + "width": 46.3, + "height": 16.25, + "strokeColor": "#64748b", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1261, + "version": 1, + "versionNonce": 1262, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "seen on", + "originalText": "seen on", + "fontSize": 13, + "fontFamily": 2, + "textAlign": "center", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 + }, + { + "type": "arrow", + "id": "cx_pn_ctspine", + "x": 418, + "y": 154.0, + "width": 437.0, + "height": 856.0, + "strokeColor": "#be123c", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "dashed", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1263, + "version": 1, + "versionNonce": 1264, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "points": [ + [ + 0, + 0.0 + ], + [ + 0, + 36.0 + ], + [ + 494, + 36.0 + ], + [ + 494, + 796.0 + ], + [ + 437, + 796.0 + ], + [ + 437.0, + 856.0 + ] + ], + "startBinding": null, + "endBinding": null, + "startArrowhead": null, + "endArrowhead": "arrow" + }, + { + "type": "rectangle", + "id": "cx_pn_ctspine_bg", + "x": 818.6, + "y": 389, + "width": 106.8, + "height": 22.25, + "strokeColor": "transparent", + "backgroundColor": "#ffffff", + "fillStyle": "solid", + "strokeWidth": 0, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1265, + "version": 1, + "versionNonce": 1266, + "isDeleted": false, + "groupIds": [], + "boundElements": [], + "link": null, + "locked": false + }, + { + "type": "text", + "id": "cx_pn_ctspine_l", + "x": 823.6, + "y": 392, + "width": 96.8, + "height": 16.25, + "strokeColor": "#64748b", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1267, + "version": 1, + "versionNonce": 1268, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "possibly seen on", + "originalText": "possibly seen on", + "fontSize": 13, + "fontFamily": 2, + "textAlign": "center", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 + }, + { + "type": "rectangle", + "id": "legA0", + "x": 24, + "y": 1244, + "width": 22, + "height": 16, + "strokeColor": "#059669", + "backgroundColor": "#d1fae5", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1269, + "version": 1, + "versionNonce": 1270, + "isDeleted": false, + "groupIds": [], + "boundElements": [], + "link": null, + "locked": false, + "roundness": { + "type": 3 + } + }, + { + "type": "text", + "id": "legA0_l", + "x": 56, + "y": 1243, + "width": 340, + "height": 16.25, + "strokeColor": "#64748b", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1271, + "version": 1, + "versionNonce": 1272, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "finding", + "originalText": "finding", + "fontSize": 13, + "fontFamily": 2, + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 + }, + { + "type": "rectangle", + "id": "legA1", + "x": 24, + "y": 1272, + "width": 22, + "height": 16, + "strokeColor": "#059669", + "backgroundColor": "#6ee7b7", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1273, + "version": 1, + "versionNonce": 1274, + "isDeleted": false, + "groupIds": [], + "boundElements": [], + "link": null, + "locked": false, + "roundness": { + "type": 3 + } + }, + { + "type": "text", + "id": "legA1_l", + "x": 56, + "y": 1271, + "width": 340, + "height": 16.25, + "strokeColor": "#64748b", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1275, + "version": 1, + "versionNonce": 1276, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "diagnosis", + "originalText": "diagnosis", + "fontSize": 13, + "fontFamily": 2, + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 + }, + { + "type": "diamond", + "id": "legA2", + "x": 24, + "y": 1297, + "width": 24, + "height": 22, + "strokeColor": "#7e22ce", + "backgroundColor": "#e9d5ff", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1277, + "version": 1, + "versionNonce": 1278, + "isDeleted": false, + "groupIds": [], + "boundElements": [], + "link": null, + "locked": false + }, + { + "type": "text", + "id": "legA2_l", + "x": 56, + "y": 1299, + "width": 340, + "height": 16.25, + "strokeColor": "#64748b", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1279, + "version": 1, + "versionNonce": 1280, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "assessment scheme", + "originalText": "assessment scheme", + "fontSize": 13, + "fontFamily": 2, + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 + }, + { + "type": "rectangle", + "id": "legA3", + "x": 24, + "y": 1328, + "width": 22, + "height": 16, + "strokeColor": "#1d4ed8", + "backgroundColor": "#bfdbfe", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1281, + "version": 1, + "versionNonce": 1282, + "isDeleted": false, + "groupIds": [], + "boundElements": [], + "link": null, + "locked": false, + "roundness": { + "type": 3 + } + }, + { + "type": "text", + "id": "legA3_l", + "x": 56, + "y": 1327, + "width": 340, + "height": 16.25, + "strokeColor": "#64748b", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1283, + "version": 1, + "versionNonce": 1284, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "anatomic location", + "originalText": "anatomic location", + "fontSize": 13, + "fontFamily": 2, + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 + }, + { + "type": "rectangle", + "id": "legA4", + "x": 24, + "y": 1356, + "width": 22, + "height": 16, + "strokeColor": "#b45309", + "backgroundColor": "#fde68a", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1285, + "version": 1, + "versionNonce": 1286, + "isDeleted": false, + "groupIds": [], + "boundElements": [], + "link": null, + "locked": false, + "roundness": { + "type": 3 + } + }, + { + "type": "text", + "id": "legA4_l", + "x": 56, + "y": 1355, + "width": 340, + "height": 16.25, + "strokeColor": "#64748b", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1287, + "version": 1, + "versionNonce": 1288, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "exam type", + "originalText": "exam type", + "fontSize": 13, + "fontFamily": 2, + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 + }, + { + "type": "ellipse", + "id": "legB0", + "x": 479, + "y": 1243, + "width": 18, + "height": 18, + "strokeColor": "#9ca3af", + "backgroundColor": "#e5e7eb", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1289, + "version": 1, + "versionNonce": 1290, + "isDeleted": false, + "groupIds": [], + "boundElements": [], + "link": null, + "locked": false + }, + { + "type": "text", + "id": "legB0_l", + "x": 517, + "y": 1243, + "width": 340, + "height": 16.25, + "strokeColor": "#64748b", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1291, + "version": 1, + "versionNonce": 1292, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "unlabeled grey = further nodes not shown", + "originalText": "unlabeled grey = further nodes not shown", + "fontSize": 13, + "fontFamily": 2, + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 + }, + { + "type": "line", + "id": "legB1", + "x": 477, + "y": 1280, + "width": 30, + "height": 0, + "strokeColor": "#64748b", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1293, + "version": 1, + "versionNonce": 1294, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "points": [ + [ + 0, + 0 + ], + [ + 30, + 0 + ] + ] + }, + { + "type": "text", + "id": "legB1_l", + "x": 517, + "y": 1271, + "width": 340, + "height": 16.25, + "strokeColor": "#64748b", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1295, + "version": 1, + "versionNonce": 1296, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "solid edge = within-sector relationship", + "originalText": "solid edge = within-sector relationship", + "fontSize": 13, + "fontFamily": 2, + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 + }, + { + "type": "line", + "id": "legB2", + "x": 477, + "y": 1308, + "width": 30, + "height": 0, + "strokeColor": "#be123c", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 3, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1297, + "version": 1, + "versionNonce": 1298, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "points": [ + [ + 0, + 0 + ], + [ + 30, + 0 + ] + ] + }, + { + "type": "text", + "id": "legB2_l", + "x": 517, + "y": 1299, + "width": 340, + "height": 16.25, + "strokeColor": "#64748b", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1299, + "version": 1, + "versionNonce": 1300, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "colored thick edge = cross-sector relationship", + "originalText": "colored thick edge = cross-sector relationship", + "fontSize": 13, + "fontFamily": 2, + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 + }, + { + "type": "line", + "id": "legB3", + "x": 477, + "y": 1336, + "width": 30, + "height": 0, + "strokeColor": "#64748b", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "dashed", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1301, + "version": 1, + "versionNonce": 1302, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "points": [ + [ + 0, + 0 + ], + [ + 30, + 0 + ] + ] + }, + { + "type": "text", + "id": "legB3_l", + "x": 517, + "y": 1327, + "width": 340, + "height": 16.25, + "strokeColor": "#64748b", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1303, + "version": 1, + "versionNonce": 1304, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "dashed = possible or planned", + "originalText": "dashed = possible or planned", + "fontSize": 13, + "fontFamily": 2, + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 + } + ], + "appState": { + "viewBackgroundColor": "#ffffff", + "gridSize": null + }, + "files": {} +} \ No newline at end of file diff --git a/knowledge/drafts/foundation-network.svg b/knowledge/drafts/foundation-network.svg new file mode 100644 index 0000000..1387c45 --- /dev/null +++ b/knowledge/drafts/foundation-network.svg @@ -0,0 +1,2 @@ +Foundation Context: a mini-networkthree sectors of shared, curated knowledge — illustrative, not exhaustiveSector 1 — Finding / diagnosis definitionsSector 2 — Anatomic locationsSector 3 — Exam types(content to come)Legendlung cancerpulmonarynoduleLung-RADSpleural effusionsolidpulmonarynodulepart-solidpulmonarynodulenon-solidpulmonarynodulesolid componentsubtype ofsubtype ofsubtype ofhas componentmay manifest asmay progress toassessed bythoraxpleuralspaceupper abdomenright lunglungleft lungupper lobe ofright lunglungparenchymacontained bylateralitypart ofcontained byCT Chestpreferred (to come)CT Chest WO contrast29252-4CT Chest W contrast IV24628-0CT Chest WO and W contrast IV30598-7CTA Chest vesselsWO and W contrast IV30804-9CT Thoracic spineW contrast IV24979-7Region imaged:Thorax (RID1243)member of familyPlaybook partscoped toscoped toscoped tocoversincludededge (usually)seen onpossibly seen onfindingdiagnosisassessment schemeanatomic locationexam typeunlabeled grey = further nodes not shownsolid edge = within-sector relationshipcolored thick edge = cross-sector relationshipdashed = possible or planned \ No newline at end of file diff --git a/knowledge/drafts/overview.md b/knowledge/drafts/overview.md new file mode 100644 index 0000000..77549e5 --- /dev/null +++ b/knowledge/drafts/overview.md @@ -0,0 +1,113 @@ +--- +type: Overview +title: Open Imaging Data Model +description: What the Open Imaging Data Model is for, the two contexts it separates, its core pieces, what it is used for, what has been built, and where it stands. +tags: [overview, foundation-context, patient-context, data-structures, sdks] +status: draft +generated: { by: claude-fable-5-1/2026-09-24-restructure, at: 2026-09-24T00:00:00Z } +sources: + - id: lead-2026-09-24 + resource: docs/plans/2026-09-22-layout-plan.md + title: The project lead's statements of 2026-09-24 on the scope of OIDM, the Imaging Persona, and the two graphs (recorded verbatim in the layout plan) + - id: lead-2026-09-19 + resource: knowledge/plans/2026-09-20-knowledgebase-build-plan.md + title: "The project lead's notes of 2026-09-19 on data structures versus transport, recorded in the build plan's decisions of 2026-09-21 (\"Data structures versus transport\")" + - id: siim-2026 + resource: https://oidm-public.t3.tigrisfiles.io/oidm-knowledge-sources/SIIM%202026%20Reports-of-the-Future.pptx + title: "Structured Results and Context for Next-Generation Imaging Resulting Tools, SIIM 2026 annual meeting talk, June 2026, Mass General Brigham" + - id: status-2026-01 + resource: https://gamma.app/docs/Open-Imaging-Data-Model-2026-Status-Update:-Realizing-Object-Oriented-Imaging-Results-yfxzx4q9zssafal + title: Open Imaging Data Model 2026 Status Update, January 2026 + - id: webinar-2026-07 + resource: https://oidm-public.t3.tigrisfiles.io/oidm-knowledge-sources/IPL%20Webinar%20Deck.html + title: "The Imaging Problem List as an Accelerator for Radiology AI Applications, SIIM Enterprise Imaging webinar, 15 July 2026" + - id: build-plan + resource: knowledge/plans/2026-09-20-knowledgebase-build-plan.md + title: Knowledgebase build plan, the project lead's stated goals and the decisions of 2026-09-21 + - id: use-cases-index + resource: https://github.com/openimagingdata/UseCases/blob/71a90d2/Index.md + title: Use case catalog index, UseCases repository, including the ACR GRID registry submission case + - id: forge-docs + resource: https://github.com/openimagingdata/FindingModelForge/blob/dev/docs/finding-model-creation-workflow.md + title: Finding Model Forge, finding model creation workflow, dev branch + - id: catalog-site + resource: https://github.com/openimagingdata/finding-models-site + title: finding-models-site repository, the static catalog reader + - id: fm-cli + resource: https://github.com/openimagingdata/findingmodel/blob/main/README.md + title: findingmodel README, the finding model and anatomic locations command-line tools + - id: ipl-readme + resource: https://github.com/openimagingdata/imaging-problem-list/blob/dev/README.md + title: imaging-problem-list README, dev branch, the extraction and coding platform and the viewers + - id: site-2023-06 + resource: https://www.openimagingdata.org/siim-update/ + title: "SIIM update, openimagingdata.org, June 2023 (the rendering hackathon)" + - id: site-2024-01 + resource: https://www.openimagingdata.org/2024-new-year-update/ + title: "2024 New Year Update, openimagingdata.org, January 2024 (assisted-reporting and AI in Practice demonstrations)" + - id: site-2024-07 + resource: https://www.openimagingdata.org/siim-2024-update-hackathon-edition/ + title: "SIIM 2024 update, hackathon edition, openimagingdata.org, July 2024 (the ontology-search hackathon)" +--- + +# Open Imaging Data Model + +The Open Imaging Data Model (OIDM) is an effort to model the context of imaging work across its whole lifecycle, from ordering through acquisition, interpretation, reporting, and follow-up, so that the medical imaging ecosystem has a common platform on which to build tools that assist radiologists, technologists, ordering providers, and back-office staff.[^lead-2026-09-24] + +The current focus is one part of that: data structures and semantics for representing imaging results. That means results from the current exam and from prior exams, produced by radiologists, technologists, AI, or the modalities themselves, and integrated across time so that a finding has a history rather than a series of disconnected mentions. Later work will model the broader patient context, integrating imaging results into the larger fabric of the patient's history and linking them to the patient's other diagnoses, procedures, and issues.[^lead-2026-09-24] + +OIDM defines data structures for use inside applications, to both read and create data. It is not a transport format. FHIR and DICOM expressions of the structures are designed separately and are guided by them.[^lead-2026-09-19] + +# Why results as data + +Today the findings in a radiology report are written for a human reader and then locked in narrative text. Represented as data, once, each finding becomes reusable in two directions: forward to clinicians, to drive treatment decisions, follow-up, and care coordination; and forward to the next radiologist reading the subsequent exam, who needs to know what was there before, where, and whether it changed.[^siim-2026] + +# The two contexts + +A structured finding, say "pulmonary nodule, present, right upper lobe, 8 mm, new", says what exists, where, and on what exam. It does not say how a nodule associates with other findings, how it might be precancerous, which prior exams could show it, what the implications are, or what else it could be. That knowledge is not in the patient's record. It is background knowledge of anatomy, pathology, and imaging technique.[^siim-2026] + +OIDM therefore separates two things. **Patient Context** is this patient's results and clinical context: one per patient, protected health information, changing as the patient's condition evolves. **Foundation Context** is a single shared layer of definitions, relationships, and citations: what a pulmonary nodule is, where it can occur, what it can cause, what it can be confused with. It is open, not patient-specific, authored and versioned in the open.[^siim-2026] The two are deeply interconnected: every contingent fact about this patient, this nodule on this exam, is attached to the baseline clinical knowledge about what such a thing is, so that an application reading the patient's record has the knowledge to interpret it.[^lead-2026-09-24] + +# The core pieces + +**[Foundation Context](./foundation-context.md).** The shared semantic layer. It has three axes, each a curated layer over an existing standard: what was found (finding/diagnosis definitions, held as Open Imaging Finding Models and as ACR/RSNA Common Data Elements), where it is (anatomic locations anchored in RadLex), and how it was seen (exam types over the LOINC/RSNA Radiology Playbook). The axes relate to each other and cite external references. This pillar covers both the shape a definition takes and the work of building the content.[^siim-2026][^build-plan] + +**[Data Structures](./data-structures.md).** The patient-side structures. The Observation is the atomic unit: one finding or diagnosis, its presence, its change from prior, its location, its characterizing attributes, and its ties into Foundation Context. Observations can come from a radiologist, a technologist, an AI, or the modality itself. An Exam Finding List holds all the Observations from one exam. An Imaging Problem List reorganizes a patient's Observations by finding, across exams, so that each finding has a history. The Imaging Persona is the proposal that goes furthest: the imaging results integrated into a single larger graph of the patient's history, with the patient's other diagnoses, procedures, and issues, the whole of it underpinned by Foundation Context. Patient-side data forms one graph and Foundation Context forms another, and the patient graph is woven into the foundation graph at every finding, diagnosis, location, and exam type.[^siim-2026][^lead-2026-09-24] + +**[SDKs](./sdks.md).** The tools that wrap these structures so that developers can create, read, and manipulate instances in real applications, and that attach the shared knowledge to a patient's data the same way every time. Some SDK capabilities also support the authoring of Foundation Context itself.[^build-plan][^siim-2026] + +# Use cases + +With structured results and shared context, the same machinery serves many purposes: reporting assistance that knows what a finding is; longitudinal tracking of findings across exams; decision support, follow-up management, and care coordination; quality surveillance; registry submission and research extraction; and grounding for generative tools, which get a citable shared context instead of inventing one.[^webinar-2026-07][^siim-2026][^use-cases-index] The [Use Cases](./use-cases.md) section lists every purpose the project has written down, with a page for each one worked out in detail. + +# Sample applications + +The project has built demonstrations to make the ideas concrete. Each is listed in [Sample Applications](./sample-applications.md) with the idea it illustrates. + +- [Finding Model Forge](https://fmf.oidm.org), for authoring and reviewing finding/diagnosis definitions.[^forge-docs] +- The [finding models catalog](https://openimagingdata.github.io/finding-models-site/), for browsing the definitions.[^catalog-site] +- Command-line tools for finding models and for anatomic locations.[^fm-cli] +- Two Imaging Problem List viewers: [the first](https://imaging-problem-list.pages.dev), and [the second](https://main.ipl-anatomy.pages.dev), organized by anatomy.[^webinar-2026-07][^ipl-readme] +- A report extraction and coding platform that turns report text into Observations.[^ipl-readme] +- Public demonstrations of rendering a coded finding as prose (2023), ontology search (2024), and assisted reporting (2024).[^site-2023-06][^site-2024-07][^site-2024-01] + +# Where things stand + +Nothing here is formally specified. The project is coalescing, and its structures exist in several dated versions: in code, in manuscripts under review, in talks, and in working documents. This knowledgebase presents each version beside the others, attributed and dated, and states disagreements without resolving them.[^build-plan] + +The project asks three things: contribute or propose finding/diagnosis definitions; review AI-generated content and connections; build against the SDKs.[^siim-2026] + +[^lead-2026-09-24]: The project lead, 2026-09-24, on the scope of OIDM, the Imaging Persona, and the interconnection of the two graphs; recorded verbatim in the layout plan. +[^lead-2026-09-19]: The project lead, 2026-09-19, notes on the revised Imaging Problem List manuscript: data structures for use within applications, not a transport definition. +[^siim-2026]: SIIM 2026 annual meeting talk, June 2026, Mass General Brigham; slides 3, 4, 5, 6, 7, 8, 14, and 15. +[^status-2026-01]: Open Imaging Data Model 2026 Status Update, January 2026. +[^webinar-2026-07]: SIIM Enterprise Imaging webinar, 15 July 2026, the six application families and the two live-prototype slides. +[^use-cases-index]: Use case catalog index, UseCases repository, commit 71a90d2: "Add information to ACR GRID registry". +[^forge-docs]: Finding Model Forge, finding model creation workflow document, dev branch. +[^catalog-site]: finding-models-site repository. +[^fm-cli]: findingmodel README, main branch, command-line tools. +[^ipl-readme]: imaging-problem-list README, dev branch. +[^site-2023-06]: "SIIM update", openimagingdata.org, June 2023. +[^site-2024-01]: "2024 New Year Update", openimagingdata.org, January 2024. +[^site-2024-07]: "SIIM 2024 update, hackathon edition", openimagingdata.org, July 2024. +[^build-plan]: Knowledgebase build plan, the project lead's stated goals (2026-09-20) and "No specification exists" (2026-09-21). diff --git a/knowledge/drafts/pillars.excalidraw b/knowledge/drafts/pillars.excalidraw new file mode 100644 index 0000000..b467354 --- /dev/null +++ b/knowledge/drafts/pillars.excalidraw @@ -0,0 +1,2161 @@ +{ + "type": "excalidraw", + "version": 2, + "source": "oidm-knowledge/tools/diagrams", + "elements": [ + { + "type": "rectangle", + "id": "band53", + "x": 0, + "y": 375.05, + "width": 880, + "height": 319.74999999999994, + "strokeColor": "#b45309", + "backgroundColor": "#fef3c7", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1105, + "version": 1, + "versionNonce": 1106, + "isDeleted": false, + "groupIds": [], + "boundElements": [], + "link": null, + "locked": false, + "roundness": { + "type": 3 + } + }, + { + "type": "rectangle", + "id": "band33", + "x": 0, + "y": 187.3, + "width": 880, + "height": 223.75, + "strokeColor": "#0f766e", + "backgroundColor": "#ccfbf1", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1065, + "version": 1, + "versionNonce": 1066, + "isDeleted": false, + "groupIds": [], + "boundElements": [], + "link": null, + "locked": false, + "roundness": { + "type": 3 + } + }, + { + "type": "rectangle", + "id": "band15", + "x": 0, + "y": 91.65, + "width": 880, + "height": 71.65, + "strokeColor": "#6d28d9", + "backgroundColor": "#ede9fe", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1029, + "version": 1, + "versionNonce": 1030, + "isDeleted": false, + "groupIds": [], + "boundElements": [], + "link": null, + "locked": false, + "roundness": { + "type": 3 + } + }, + { + "type": "rectangle", + "id": "panel1", + "x": 0, + "y": 0, + "width": 388.0, + "height": 67.65, + "strokeColor": "#be123c", + "backgroundColor": "#ffe4e6", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1001, + "version": 1, + "versionNonce": 1002, + "isDeleted": false, + "groupIds": [], + "boundElements": [], + "link": null, + "locked": false, + "roundness": { + "type": 3 + } + }, + { + "type": "rectangle", + "id": "panel2", + "x": 492.0, + "y": 0, + "width": 388.0, + "height": 67.65, + "strokeColor": "#15803d", + "backgroundColor": "#dcfce7", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1003, + "version": 1, + "versionNonce": 1004, + "isDeleted": false, + "groupIds": [], + "boundElements": [], + "link": null, + "locked": false, + "roundness": { + "type": 3 + } + }, + { + "type": "image", + "id": "bicon3", + "x": 18, + "y": 12.0, + "width": 28, + "height": 28, + "strokeColor": "transparent", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1005, + "version": 1, + "versionNonce": 1006, + "isDeleted": false, + "groupIds": [], + "boundElements": [], + "link": null, + "locked": false, + "fileId": "img_bicon3", + "status": "saved", + "scale": [ + 1, + 1 + ], + "roundness": null, + "crop": null + }, + { + "type": "text", + "id": "btitle4", + "x": 58, + "y": 14, + "width": 93.96, + "height": 22.5, + "strokeColor": "#881337", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1007, + "version": 1, + "versionNonce": 1008, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "Use Cases", + "originalText": "Use Cases", + "fontSize": 18, + "fontFamily": 2, + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 + }, + { + "type": "text", + "id": "bsub5", + "x": 58, + "y": 37.400000000000006, + "width": 211.11999999999998, + "height": 16.25, + "strokeColor": "#be123c", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1009, + "version": 1, + "versionNonce": 1010, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "what the project wants built", + "originalText": "what the project wants built", + "fontSize": 13, + "fontFamily": 2, + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 + }, + { + "type": "image", + "id": "bicon6", + "x": 510.0, + "y": 12.0, + "width": 28, + "height": 28, + "strokeColor": "transparent", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1011, + "version": 1, + "versionNonce": 1012, + "isDeleted": false, + "groupIds": [], + "boundElements": [], + "link": null, + "locked": false, + "fileId": "img_bicon6", + "status": "saved", + "scale": [ + 1, + 1 + ], + "roundness": null, + "crop": null + }, + { + "type": "text", + "id": "btitle7", + "x": 550.0, + "y": 14, + "width": 198.35999999999999, + "height": 22.5, + "strokeColor": "#14532d", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1013, + "version": 1, + "versionNonce": 1014, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "Sample Applications", + "originalText": "Sample Applications", + "fontSize": 18, + "fontFamily": 2, + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 + }, + { + "type": "text", + "id": "bsub8", + "x": 550.0, + "y": 37.400000000000006, + "width": 143.26, + "height": 16.25, + "strokeColor": "#15803d", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1015, + "version": 1, + "versionNonce": 1016, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "what has been built", + "originalText": "what has been built", + "fontSize": 13, + "fontFamily": 2, + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 + }, + { + "type": "line", + "id": "conn9", + "x": 390.0, + "y": 33.825, + "width": 100.0, + "height": 0, + "strokeColor": "#64748b", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1017, + "version": 1, + "versionNonce": 1018, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "points": [ + [ + 0, + 0 + ], + [ + 100.0, + 0 + ] + ] + }, + { + "type": "rectangle", + "id": "chip10", + "x": 389.53, + "y": 4.575000000000003, + "width": 100.94, + "height": 22.25, + "strokeColor": "transparent", + "backgroundColor": "#ffffff", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1019, + "version": 1, + "versionNonce": 1020, + "isDeleted": false, + "groupIds": [], + "boundElements": [], + "link": null, + "locked": false, + "roundness": { + "type": 3 + } + }, + { + "type": "text", + "id": "chipt11", + "x": 398.53, + "y": 7.575000000000003, + "width": 82.94, + "height": 16.25, + "strokeColor": "#64748b", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1021, + "version": 1, + "versionNonce": 1022, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "illustrates", + "originalText": "illustrates", + "fontSize": 13, + "fontFamily": 2, + "textAlign": "center", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 + }, + { + "type": "image", + "id": "bicon12", + "x": 18, + "y": 105.65, + "width": 28, + "height": 28, + "strokeColor": "transparent", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1023, + "version": 1, + "versionNonce": 1024, + "isDeleted": false, + "groupIds": [], + "boundElements": [], + "link": null, + "locked": false, + "fileId": "img_bicon12", + "status": "saved", + "scale": [ + 1, + 1 + ], + "roundness": null, + "crop": null + }, + { + "type": "text", + "id": "btitle13", + "x": 58, + "y": 107.65, + "width": 41.76, + "height": 22.5, + "strokeColor": "#4c1d95", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1025, + "version": 1, + "versionNonce": 1026, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "SDKs", + "originalText": "SDKs", + "fontSize": 18, + "fontFamily": 2, + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 + }, + { + "type": "text", + "id": "bsub14", + "x": 58, + "y": 131.05, + "width": 520.26, + "height": 16.25, + "strokeColor": "#6d28d9", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1027, + "version": 1, + "versionNonce": 1028, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "wrap the structures \u00b7 attach the shared knowledge \u00b7 support authoring", + "originalText": "wrap the structures \u00b7 attach the shared knowledge \u00b7 support authoring", + "fontSize": 13, + "fontFamily": 2, + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 + }, + { + "type": "image", + "id": "bicon16", + "x": 18, + "y": 203.3, + "width": 28, + "height": 28, + "strokeColor": "transparent", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1031, + "version": 1, + "versionNonce": 1032, + "isDeleted": false, + "groupIds": [], + "boundElements": [], + "link": null, + "locked": false, + "fileId": "img_bicon16", + "status": "saved", + "scale": [ + 1, + 1 + ], + "roundness": null, + "crop": null + }, + { + "type": "text", + "id": "btitle17", + "x": 58, + "y": 205.3, + "width": 174.0, + "height": 25.0, + "strokeColor": "#134e4a", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1033, + "version": 1, + "versionNonce": 1034, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "Data Structures", + "originalText": "Data Structures", + "fontSize": 20, + "fontFamily": 2, + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 + }, + { + "type": "text", + "id": "bsub18", + "x": 58, + "y": 231.3, + "width": 226.2, + "height": 16.25, + "strokeColor": "#0f766e", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1035, + "version": 1, + "versionNonce": 1036, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "this patient \u00b7 Patient Context", + "originalText": "this patient \u00b7 Patient Context", + "fontSize": 13, + "fontFamily": 2, + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 + }, + { + "type": "rectangle", + "id": "blk19", + "x": 20.0, + "y": 261.55, + "width": 195.0, + "height": 95.5, + "strokeColor": "#0f766e", + "backgroundColor": "#99f6e4", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1037, + "version": 1, + "versionNonce": 1038, + "isDeleted": false, + "groupIds": [], + "boundElements": [], + "link": null, + "locked": false, + "roundness": { + "type": 3 + } + }, + { + "type": "image", + "id": "blki20", + "x": 103.5, + "y": 281.925, + "width": 28, + "height": 28, + "strokeColor": "transparent", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1039, + "version": 1, + "versionNonce": 1040, + "isDeleted": false, + "groupIds": [], + "boundElements": [], + "link": null, + "locked": false, + "fileId": "img_blki20", + "status": "saved", + "scale": [ + 1, + 1 + ], + "roundness": null, + "crop": null + }, + { + "type": "text", + "id": "blkt21", + "x": 26.0, + "y": 315.925, + "width": 183.0, + "height": 18.75, + "strokeColor": "#134e4a", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1041, + "version": 1, + "versionNonce": 1042, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "Observation", + "originalText": "Observation", + "fontSize": 15, + "fontFamily": 2, + "textAlign": "center", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 + }, + { + "type": "rectangle", + "id": "blk22", + "x": 235.0, + "y": 261.55, + "width": 195.0, + "height": 95.5, + "strokeColor": "#0f766e", + "backgroundColor": "#99f6e4", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1043, + "version": 1, + "versionNonce": 1044, + "isDeleted": false, + "groupIds": [], + "boundElements": [], + "link": null, + "locked": false, + "roundness": { + "type": 3 + } + }, + { + "type": "image", + "id": "blki23", + "x": 318.5, + "y": 272.55, + "width": 28, + "height": 28, + "strokeColor": "transparent", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1045, + "version": 1, + "versionNonce": 1046, + "isDeleted": false, + "groupIds": [], + "boundElements": [], + "link": null, + "locked": false, + "fileId": "img_blki23", + "status": "saved", + "scale": [ + 1, + 1 + ], + "roundness": null, + "crop": null + }, + { + "type": "text", + "id": "blkt24", + "x": 241.0, + "y": 306.55, + "width": 183.0, + "height": 18.75, + "strokeColor": "#134e4a", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1047, + "version": 1, + "versionNonce": 1048, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "Exam Finding", + "originalText": "Exam Finding", + "fontSize": 15, + "fontFamily": 2, + "textAlign": "center", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 + }, + { + "type": "text", + "id": "blkt25", + "x": 241.0, + "y": 325.3, + "width": 183.0, + "height": 18.75, + "strokeColor": "#134e4a", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1049, + "version": 1, + "versionNonce": 1050, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "List", + "originalText": "List", + "fontSize": 15, + "fontFamily": 2, + "textAlign": "center", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 + }, + { + "type": "rectangle", + "id": "blk26", + "x": 450.0, + "y": 261.55, + "width": 195.0, + "height": 95.5, + "strokeColor": "#0f766e", + "backgroundColor": "#99f6e4", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1051, + "version": 1, + "versionNonce": 1052, + "isDeleted": false, + "groupIds": [], + "boundElements": [], + "link": null, + "locked": false, + "roundness": { + "type": 3 + } + }, + { + "type": "image", + "id": "blki27", + "x": 533.5, + "y": 272.55, + "width": 28, + "height": 28, + "strokeColor": "transparent", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1053, + "version": 1, + "versionNonce": 1054, + "isDeleted": false, + "groupIds": [], + "boundElements": [], + "link": null, + "locked": false, + "fileId": "img_blki27", + "status": "saved", + "scale": [ + 1, + 1 + ], + "roundness": null, + "crop": null + }, + { + "type": "text", + "id": "blkt28", + "x": 456.0, + "y": 306.55, + "width": 183.0, + "height": 18.75, + "strokeColor": "#134e4a", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1055, + "version": 1, + "versionNonce": 1056, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "Imaging Problem", + "originalText": "Imaging Problem", + "fontSize": 15, + "fontFamily": 2, + "textAlign": "center", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 + }, + { + "type": "text", + "id": "blkt29", + "x": 456.0, + "y": 325.3, + "width": 183.0, + "height": 18.75, + "strokeColor": "#134e4a", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1057, + "version": 1, + "versionNonce": 1058, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "List", + "originalText": "List", + "fontSize": 15, + "fontFamily": 2, + "textAlign": "center", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 + }, + { + "type": "rectangle", + "id": "blk30", + "x": 665.0, + "y": 261.55, + "width": 195.0, + "height": 95.5, + "strokeColor": "#0f766e", + "backgroundColor": "#99f6e4", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1059, + "version": 1, + "versionNonce": 1060, + "isDeleted": false, + "groupIds": [], + "boundElements": [], + "link": null, + "locked": false, + "roundness": { + "type": 3 + } + }, + { + "type": "image", + "id": "blki31", + "x": 746.5, + "y": 279.925, + "width": 32, + "height": 32, + "strokeColor": "transparent", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1061, + "version": 1, + "versionNonce": 1062, + "isDeleted": false, + "groupIds": [], + "boundElements": [], + "link": null, + "locked": false, + "fileId": "img_blki31", + "status": "saved", + "scale": [ + 1, + 1 + ], + "roundness": null, + "crop": null + }, + { + "type": "text", + "id": "blkt32", + "x": 671.0, + "y": 315.925, + "width": 183.0, + "height": 18.75, + "strokeColor": "#134e4a", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1063, + "version": 1, + "versionNonce": 1064, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "Imaging Persona", + "originalText": "Imaging Persona", + "fontSize": 15, + "fontFamily": 2, + "textAlign": "center", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 + }, + { + "type": "image", + "id": "bicon34", + "x": 18, + "y": 491.3, + "width": 28, + "height": 28, + "strokeColor": "transparent", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1067, + "version": 1, + "versionNonce": 1068, + "isDeleted": false, + "groupIds": [], + "boundElements": [], + "link": null, + "locked": false, + "fileId": "img_bicon34", + "status": "saved", + "scale": [ + 1, + 1 + ], + "roundness": null, + "crop": null + }, + { + "type": "text", + "id": "btitle35", + "x": 58, + "y": 493.3, + "width": 208.79999999999998, + "height": 25.0, + "strokeColor": "#78350f", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1069, + "version": 1, + "versionNonce": 1070, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "Foundation Context", + "originalText": "Foundation Context", + "fontSize": 20, + "fontFamily": 2, + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 + }, + { + "type": "text", + "id": "bsub36", + "x": 58, + "y": 519.3, + "width": 188.5, + "height": 16.25, + "strokeColor": "#b45309", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1071, + "version": 1, + "versionNonce": 1072, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "shared, curated knowledge", + "originalText": "shared, curated knowledge", + "fontSize": 13, + "fontFamily": 2, + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 + }, + { + "type": "rectangle", + "id": "chip37", + "x": 381.99, + "y": 547.55, + "width": 116.02, + "height": 22.25, + "strokeColor": "#b45309", + "backgroundColor": "#fef3c7", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1073, + "version": 1, + "versionNonce": 1074, + "isDeleted": false, + "groupIds": [], + "boundElements": [], + "link": null, + "locked": false, + "roundness": { + "type": 3 + } + }, + { + "type": "text", + "id": "chipt38", + "x": 390.99, + "y": 550.55, + "width": 98.02, + "height": 16.25, + "strokeColor": "#78350f", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1075, + "version": 1, + "versionNonce": 1076, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "relationships", + "originalText": "relationships", + "fontSize": 13, + "fontFamily": 2, + "textAlign": "center", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 + }, + { + "type": "rectangle", + "id": "blk39", + "x": 20.0, + "y": 579.8, + "width": 237.33333333333334, + "height": 95.0, + "strokeColor": "#b45309", + "backgroundColor": "#fde68a", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1077, + "version": 1, + "versionNonce": 1078, + "isDeleted": false, + "groupIds": [], + "boundElements": [], + "link": null, + "locked": false, + "roundness": { + "type": 3 + } + }, + { + "type": "image", + "id": "blki40", + "x": 124.66666666666669, + "y": 590.8, + "width": 28, + "height": 28, + "strokeColor": "transparent", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1079, + "version": 1, + "versionNonce": 1080, + "isDeleted": false, + "groupIds": [], + "boundElements": [], + "link": null, + "locked": false, + "fileId": "img_blki40", + "status": "saved", + "scale": [ + 1, + 1 + ], + "roundness": null, + "crop": null + }, + { + "type": "text", + "id": "blkt41", + "x": 26.0, + "y": 624.8, + "width": 225.33333333333334, + "height": 18.75, + "strokeColor": "#78350f", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1081, + "version": 1, + "versionNonce": 1082, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "Finding/diagnosis definitions", + "originalText": "Finding/diagnosis definitions", + "fontSize": 15, + "fontFamily": 2, + "textAlign": "center", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 + }, + { + "type": "text", + "id": "blkd42", + "x": 26.0, + "y": 645.55, + "width": 225.33333333333334, + "height": 16.25, + "strokeColor": "#b45309", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1083, + "version": 1, + "versionNonce": 1084, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "finding models \u00b7 CDEs", + "originalText": "finding models \u00b7 CDEs", + "fontSize": 13, + "fontFamily": 2, + "textAlign": "center", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 + }, + { + "type": "rectangle", + "id": "blk43", + "x": 321.33333333333337, + "y": 579.8, + "width": 237.33333333333334, + "height": 95.0, + "strokeColor": "#b45309", + "backgroundColor": "#fde68a", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1085, + "version": 1, + "versionNonce": 1086, + "isDeleted": false, + "groupIds": [], + "boundElements": [], + "link": null, + "locked": false, + "roundness": { + "type": 3 + } + }, + { + "type": "image", + "id": "blki44", + "x": 424.00000000000006, + "y": 588.8, + "width": 32, + "height": 32, + "strokeColor": "transparent", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1087, + "version": 1, + "versionNonce": 1088, + "isDeleted": false, + "groupIds": [], + "boundElements": [], + "link": null, + "locked": false, + "fileId": "img_blki44", + "status": "saved", + "scale": [ + 1, + 1 + ], + "roundness": null, + "crop": null + }, + { + "type": "text", + "id": "blkt45", + "x": 327.33333333333337, + "y": 624.8, + "width": 225.33333333333334, + "height": 18.75, + "strokeColor": "#78350f", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1089, + "version": 1, + "versionNonce": 1090, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "Anatomic locations", + "originalText": "Anatomic locations", + "fontSize": 15, + "fontFamily": 2, + "textAlign": "center", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 + }, + { + "type": "text", + "id": "blkd46", + "x": 327.33333333333337, + "y": 645.55, + "width": 225.33333333333334, + "height": 16.25, + "strokeColor": "#b45309", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1091, + "version": 1, + "versionNonce": 1092, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "anchored in RadLex", + "originalText": "anchored in RadLex", + "fontSize": 13, + "fontFamily": 2, + "textAlign": "center", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 + }, + { + "type": "rectangle", + "id": "blk47", + "x": 622.6666666666667, + "y": 579.8, + "width": 237.33333333333334, + "height": 95.0, + "strokeColor": "#b45309", + "backgroundColor": "#fde68a", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1093, + "version": 1, + "versionNonce": 1094, + "isDeleted": false, + "groupIds": [], + "boundElements": [], + "link": null, + "locked": false, + "roundness": { + "type": 3 + } + }, + { + "type": "image", + "id": "blki48", + "x": 725.3333333333334, + "y": 588.8, + "width": 32, + "height": 32, + "strokeColor": "transparent", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1095, + "version": 1, + "versionNonce": 1096, + "isDeleted": false, + "groupIds": [], + "boundElements": [], + "link": null, + "locked": false, + "fileId": "img_blki48", + "status": "saved", + "scale": [ + 1, + 1 + ], + "roundness": null, + "crop": null + }, + { + "type": "text", + "id": "blkt49", + "x": 628.6666666666667, + "y": 624.8, + "width": 225.33333333333334, + "height": 18.75, + "strokeColor": "#78350f", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1097, + "version": 1, + "versionNonce": 1098, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "Exam types", + "originalText": "Exam types", + "fontSize": 15, + "fontFamily": 2, + "textAlign": "center", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 + }, + { + "type": "text", + "id": "blkd50", + "x": 628.6666666666667, + "y": 645.55, + "width": 225.33333333333334, + "height": 16.25, + "strokeColor": "#b45309", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1099, + "version": 1, + "versionNonce": 1100, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "LOINC/RSNA Playbook", + "originalText": "LOINC/RSNA Playbook", + "fontSize": 13, + "fontFamily": 2, + "textAlign": "center", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 + }, + { + "type": "arrow", + "id": "conn51", + "x": 263.33333333333337, + "y": 627.3, + "width": 52.0, + "height": 0, + "strokeColor": "#b45309", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1101, + "version": 1, + "versionNonce": 1102, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "points": [ + [ + 0, + 0 + ], + [ + 52.0, + 0 + ] + ], + "startArrowhead": "arrow", + "endArrowhead": "arrow" + }, + { + "type": "arrow", + "id": "conn52", + "x": 564.6666666666667, + "y": 627.3, + "width": 52.0, + "height": 0, + "strokeColor": "#b45309", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1103, + "version": 1, + "versionNonce": 1104, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "points": [ + [ + 0, + 0 + ], + [ + 52.0, + 0 + ] + ], + "startArrowhead": "arrow", + "endArrowhead": "arrow" + }, + { + "type": "line", + "id": "thread54", + "x": 62.0, + "y": 367.05, + "width": 0, + "height": 48.0, + "strokeColor": "#b45309", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1107, + "version": 1, + "versionNonce": 1108, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "points": [ + [ + 0, + 0 + ], + [ + 0, + 48.0 + ] + ] + }, + { + "type": "line", + "id": "thread55", + "x": 130.72727272727275, + "y": 407.05, + "width": 0, + "height": 44.0, + "strokeColor": "#0f766e", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1109, + "version": 1, + "versionNonce": 1110, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "points": [ + [ + 0, + 0 + ], + [ + 0, + 44.0 + ] + ] + }, + { + "type": "line", + "id": "thread56", + "x": 199.45454545454547, + "y": 367.05, + "width": 0, + "height": 48.0, + "strokeColor": "#b45309", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1111, + "version": 1, + "versionNonce": 1112, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "points": [ + [ + 0, + 0 + ], + [ + 0, + 48.0 + ] + ] + }, + { + "type": "line", + "id": "thread57", + "x": 268.1818181818182, + "y": 407.05, + "width": 0, + "height": 44.0, + "strokeColor": "#0f766e", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1113, + "version": 1, + "versionNonce": 1114, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "points": [ + [ + 0, + 0 + ], + [ + 0, + 44.0 + ] + ] + }, + { + "type": "line", + "id": "thread58", + "x": 336.90909090909093, + "y": 367.05, + "width": 0, + "height": 48.0, + "strokeColor": "#b45309", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1115, + "version": 1, + "versionNonce": 1116, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "points": [ + [ + 0, + 0 + ], + [ + 0, + 48.0 + ] + ] + }, + { + "type": "line", + "id": "thread59", + "x": 405.6363636363636, + "y": 407.05, + "width": 0, + "height": 44.0, + "strokeColor": "#0f766e", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1117, + "version": 1, + "versionNonce": 1118, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "points": [ + [ + 0, + 0 + ], + [ + 0, + 44.0 + ] + ] + }, + { + "type": "line", + "id": "thread60", + "x": 474.3636363636364, + "y": 367.05, + "width": 0, + "height": 48.0, + "strokeColor": "#b45309", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1119, + "version": 1, + "versionNonce": 1120, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "points": [ + [ + 0, + 0 + ], + [ + 0, + 48.0 + ] + ] + }, + { + "type": "line", + "id": "thread61", + "x": 543.090909090909, + "y": 407.05, + "width": 0, + "height": 44.0, + "strokeColor": "#0f766e", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1121, + "version": 1, + "versionNonce": 1122, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "points": [ + [ + 0, + 0 + ], + [ + 0, + 44.0 + ] + ] + }, + { + "type": "line", + "id": "thread62", + "x": 611.8181818181819, + "y": 367.05, + "width": 0, + "height": 48.0, + "strokeColor": "#b45309", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1123, + "version": 1, + "versionNonce": 1124, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "points": [ + [ + 0, + 0 + ], + [ + 0, + 48.0 + ] + ] + }, + { + "type": "line", + "id": "thread63", + "x": 680.5454545454545, + "y": 407.05, + "width": 0, + "height": 44.0, + "strokeColor": "#0f766e", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1125, + "version": 1, + "versionNonce": 1126, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "points": [ + [ + 0, + 0 + ], + [ + 0, + 44.0 + ] + ] + }, + { + "type": "line", + "id": "thread64", + "x": 749.2727272727273, + "y": 367.05, + "width": 0, + "height": 48.0, + "strokeColor": "#b45309", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1127, + "version": 1, + "versionNonce": 1128, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "points": [ + [ + 0, + 0 + ], + [ + 0, + 48.0 + ] + ] + }, + { + "type": "line", + "id": "thread65", + "x": 818.0, + "y": 407.05, + "width": 0, + "height": 44.0, + "strokeColor": "#0f766e", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1129, + "version": 1, + "versionNonce": 1130, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "points": [ + [ + 0, + 0 + ], + [ + 0, + 44.0 + ] + ] + }, + { + "type": "text", + "id": "seaml66", + "x": 0, + "y": 461.05, + "width": 880, + "height": 16.25, + "strokeColor": "#64748b", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1131, + "version": 1, + "versionNonce": 1132, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "interconnected at every finding, diagnosis, location, and exam type", + "originalText": "interconnected at every finding, diagnosis, location, and exam type", + "fontSize": 13, + "fontFamily": 2, + "textAlign": "center", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 + } + ], + "appState": { + "viewBackgroundColor": "#ffffff", + "gridSize": null + }, + "files": { + "img_bicon3": { + "mimeType": "image/svg+xml", + "id": "img_bicon3", + "dataURL": "data:image/svg+xml;base64,PHN2ZwogIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIKICB3aWR0aD0iMjQiCiAgaGVpZ2h0PSIyNCIKICB2aWV3Qm94PSIwIDAgMjQgMjQiCiAgZmlsbD0ibm9uZSIKICBzdHJva2U9IiNiZTEyM2MiCiAgc3Ryb2tlLXdpZHRoPSIyIgogIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIKICBzdHJva2UtbGluZWpvaW49InJvdW5kIgo+CiAgPHBhdGggZD0iTTE1IDE0Yy4yLTEgLjctMS43IDEuNS0yLjUgMS0uOSAxLjUtMi4yIDEuNS0zLjVBNiA2IDAgMCAwIDYgOGMwIDEgLjIgMi4yIDEuNSAzLjUuNy43IDEuMyAxLjUgMS41IDIuNSIgLz4KICA8cGF0aCBkPSJNOSAxOGg2IiAvPgogIDxwYXRoIGQ9Ik0xMCAyMmg0IiAvPgo8L3N2Zz4K", + "created": 1700000000000 + }, + "img_bicon6": { + "mimeType": "image/svg+xml", + "id": "img_bicon6", + "dataURL": "data:image/svg+xml;base64,PHN2ZwogIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIKICB3aWR0aD0iMjQiCiAgaGVpZ2h0PSIyNCIKICB2aWV3Qm94PSIwIDAgMjQgMjQiCiAgZmlsbD0ibm9uZSIKICBzdHJva2U9IiMxNTgwM2QiCiAgc3Ryb2tlLXdpZHRoPSIyIgogIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIKICBzdHJva2UtbGluZWpvaW49InJvdW5kIgo+CiAgPHJlY3QgeD0iMiIgeT0iNCIgd2lkdGg9IjIwIiBoZWlnaHQ9IjE2IiByeD0iMiIgLz4KICA8cGF0aCBkPSJNMTAgNHY0IiAvPgogIDxwYXRoIGQ9Ik0yIDhoMjAiIC8+CiAgPHBhdGggZD0iTTYgNHY0IiAvPgo8L3N2Zz4K", + "created": 1700000000000 + }, + "img_bicon12": { + "mimeType": "image/svg+xml", + "id": "img_bicon12", + "dataURL": "data:image/svg+xml;base64,PHN2ZwogIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIKICB3aWR0aD0iMjQiCiAgaGVpZ2h0PSIyNCIKICB2aWV3Qm94PSIwIDAgMjQgMjQiCiAgZmlsbD0ibm9uZSIKICBzdHJva2U9IiM2ZDI4ZDkiCiAgc3Ryb2tlLXdpZHRoPSIyIgogIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIKICBzdHJva2UtbGluZWpvaW49InJvdW5kIgo+CiAgPHBhdGggZD0iTTExIDIxLjczYTIgMiAwIDAgMCAyIDBsNy00QTIgMiAwIDAgMCAyMSAxNlY4YTIgMiAwIDAgMC0xLTEuNzNsLTctNGEyIDIgMCAwIDAtMiAwbC03IDRBMiAyIDAgMCAwIDMgOHY4YTIgMiAwIDAgMCAxIDEuNzN6IiAvPgogIDxwYXRoIGQ9Ik0xMiAyMlYxMiIgLz4KICA8cG9seWxpbmUgcG9pbnRzPSIzLjI5IDcgMTIgMTIgMjAuNzEgNyIgLz4KICA8cGF0aCBkPSJtNy41IDQuMjcgOSA1LjE1IiAvPgo8L3N2Zz4K", + "created": 1700000000000 + }, + "img_bicon16": { + "mimeType": "image/svg+xml", + "id": "img_bicon16", + "dataURL": "data:image/svg+xml;base64,PHN2ZwogIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIKICB3aWR0aD0iMjQiCiAgaGVpZ2h0PSIyNCIKICB2aWV3Qm94PSIwIDAgMjQgMjQiCiAgZmlsbD0ibm9uZSIKICBzdHJva2U9IiMwZjc2NmUiCiAgc3Ryb2tlLXdpZHRoPSIyIgogIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIKICBzdHJva2UtbGluZWpvaW49InJvdW5kIgo+CiAgPHBhdGggZD0iTTEyLjgzIDIuMThhMiAyIDAgMCAwLTEuNjYgMEwyLjYgNi4wOGExIDEgMCAwIDAgMCAxLjgzbDguNTggMy45MWEyIDIgMCAwIDAgMS42NiAwbDguNTgtMy45YTEgMSAwIDAgMCAwLTEuODN6IiAvPgogIDxwYXRoIGQ9Ik0yIDEyYTEgMSAwIDAgMCAuNTguOTFsOC42IDMuOTFhMiAyIDAgMCAwIDEuNjUgMGw4LjU4LTMuOUExIDEgMCAwIDAgMjIgMTIiIC8+CiAgPHBhdGggZD0iTTIgMTdhMSAxIDAgMCAwIC41OC45MWw4LjYgMy45MWEyIDIgMCAwIDAgMS42NSAwbDguNTgtMy45QTEgMSAwIDAgMCAyMiAxNyIgLz4KPC9zdmc+Cg==", + "created": 1700000000000 + }, + "img_blki20": { + "mimeType": "image/svg+xml", + "id": "img_blki20", + "dataURL": "data:image/svg+xml;base64,PHN2ZwogIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIKICB3aWR0aD0iMjQiCiAgaGVpZ2h0PSIyNCIKICB2aWV3Qm94PSIwIDAgMjQgMjQiCiAgZmlsbD0ibm9uZSIKICBzdHJva2U9IiMwZjc2NmUiCiAgc3Ryb2tlLXdpZHRoPSIyIgogIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIKICBzdHJva2UtbGluZWpvaW49InJvdW5kIgo+CiAgPHJlY3Qgd2lkdGg9IjgiIGhlaWdodD0iNCIgeD0iOCIgeT0iMiIgcng9IjEiIHJ5PSIxIiAvPgogIDxwYXRoIGQ9Ik0xNiA0aDJhMiAyIDAgMCAxIDIgMnYxNGEyIDIgMCAwIDEtMiAySDZhMiAyIDAgMCAxLTItMlY2YTIgMiAwIDAgMSAyLTJoMiIgLz4KPC9zdmc+Cg==", + "created": 1700000000000 + }, + "img_blki23": { + "mimeType": "image/svg+xml", + "id": "img_blki23", + "dataURL": "data:image/svg+xml;base64,PHN2ZwogIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIKICB3aWR0aD0iMjQiCiAgaGVpZ2h0PSIyNCIKICB2aWV3Qm94PSIwIDAgMjQgMjQiCiAgZmlsbD0ibm9uZSIKICBzdHJva2U9IiMwZjc2NmUiCiAgc3Ryb2tlLXdpZHRoPSIyIgogIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIKICBzdHJva2UtbGluZWpvaW49InJvdW5kIgo+CiAgPHJlY3Qgd2lkdGg9IjgiIGhlaWdodD0iNCIgeD0iOCIgeT0iMiIgcng9IjEiIHJ5PSIxIiAvPgogIDxwYXRoIGQ9Ik0xNiA0aDJhMiAyIDAgMCAxIDIgMnYxNGEyIDIgMCAwIDEtMiAySDZhMiAyIDAgMCAxLTItMlY2YTIgMiAwIDAgMSAyLTJoMiIgLz4KICA8cGF0aCBkPSJNMTIgMTFoNCIgLz4KICA8cGF0aCBkPSJNMTIgMTZoNCIgLz4KICA8cGF0aCBkPSJNOCAxMWguMDEiIC8+CiAgPHBhdGggZD0iTTggMTZoLjAxIiAvPgo8L3N2Zz4K", + "created": 1700000000000 + }, + "img_blki27": { + "mimeType": "image/svg+xml", + "id": "img_blki27", + "dataURL": "data:image/svg+xml;base64,PHN2ZwogIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIKICB3aWR0aD0iMjQiCiAgaGVpZ2h0PSIyNCIKICB2aWV3Qm94PSIwIDAgMjQgMjQiCiAgZmlsbD0ibm9uZSIKICBzdHJva2U9IiMwZjc2NmUiCiAgc3Ryb2tlLXdpZHRoPSIyIgogIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIKICBzdHJva2UtbGluZWpvaW49InJvdW5kIgo+CiAgPHBhdGggZD0iTTMgNWguMDEiIC8+CiAgPHBhdGggZD0iTTMgMTJoLjAxIiAvPgogIDxwYXRoIGQ9Ik0zIDE5aC4wMSIgLz4KICA8cGF0aCBkPSJNOCA1aDEzIiAvPgogIDxwYXRoIGQ9Ik04IDEyaDEzIiAvPgogIDxwYXRoIGQ9Ik04IDE5aDEzIiAvPgo8L3N2Zz4K", + "created": 1700000000000 + }, + "img_blki31": { + "mimeType": "image/svg+xml", + "id": "img_blki31", + "dataURL": "data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNDgiIGhlaWdodD0iNDgiIHZpZXdCb3g9IjAgMCA0OCA0OCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0yNCAyNEMyOC40MjA0IDI0IDMyIDIwLjQyMDQgMzIgMTZDMzIgMTEuNTc5NiAyOC40MjA0IDggMjQgOEMxOS41Nzk2IDggMTYgMTEuNTc5NiAxNiAxNkMxNiAyMC40MjA0IDE5LjU3OTYgMjQgMjQgMjRaTTM0IDE2QzM0IDIxLjUyNSAyOS41MjUgMjYgMjQgMjZDMTguNDc1IDI2IDE0IDIxLjUyNSAxNCAxNkMxNCAxMC40NzUgMTguNDc1IDYgMjQgNkMyOS41MjUgNiAzNCAxMC40NzUgMzQgMTZaIiBmaWxsPSIjMGY3NjZlIi8+CjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgY2xpcC1ydWxlPSJldmVub2RkIiBkPSJNOS4yMjM0OCAzNC4yMTE5QzguMjIwMzggMzUuMDIxMSA4IDM1LjYyOTEgOCAzNlY0MEg0MFYzNkM0MCAzNS42MjkxIDM5Ljc3OTYgMzUuMDIxMSAzOC43NzY1IDM0LjIxMTlDMzcuNzk1OCAzMy40MjA3IDM2LjMzNDEgMzIuNjY2OSAzNC41NjIyIDMyLjAxNUMzMS4wMTk5IDMwLjcxMTcgMjYuNzUzMiAzMCAyNCAzMEMyMS4yNDY4IDMwIDE2Ljk4MDEgMzAuNzExNyAxMy40Mzc4IDMyLjAxNUMxMS42NjU5IDMyLjY2NjkgMTAuMjA0MiAzMy40MjA3IDkuMjIzNDggMzQuMjExOVpNMjQgMjhDMTcuOTkyNSAyOCA2IDMxLjAzNDcgNiAzNlY0Mkg0MlYzNkM0MiAzMS4wMzQ3IDMwLjAwNzUgMjggMjQgMjhaIiBmaWxsPSIjMGY3NjZlIi8+Cjwvc3ZnPgo=", + "created": 1700000000000 + }, + "img_bicon34": { + "mimeType": "image/svg+xml", + "id": "img_bicon34", + "dataURL": "data:image/svg+xml;base64,PHN2ZwogIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIKICB3aWR0aD0iMjQiCiAgaGVpZ2h0PSIyNCIKICB2aWV3Qm94PSIwIDAgMjQgMjQiCiAgZmlsbD0ibm9uZSIKICBzdHJva2U9IiNiNDUzMDkiCiAgc3Ryb2tlLXdpZHRoPSIyIgogIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIKICBzdHJva2UtbGluZWpvaW49InJvdW5kIgo+CiAgPHBhdGggZD0iTTEyIDV2MTYiIC8+CiAgPHBhdGggZD0iTTIwLjAwMSAxOUEyIDIgMCAwMDIyIDE3VjVhMiAyIDAgMDAtMS45OTktMkwxNiAzLjAwMkE1IDUgMCAwMDEyIDVhNSA1IDAgMDAtNC0ySDRhMiAyIDAgMDAtMiAydjEyYTIgMiAwIDAwMS45OTkgMkg4YTUgNSAwIDAxNCAyIDUgNSAwIDAxNC0yeiIgLz4KPC9zdmc+Cg==", + "created": 1700000000000 + }, + "img_blki40": { + "mimeType": "image/svg+xml", + "id": "img_blki40", + "dataURL": "data:image/svg+xml;base64,PHN2ZwogIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIKICB3aWR0aD0iMjQiCiAgaGVpZ2h0PSIyNCIKICB2aWV3Qm94PSIwIDAgMjQgMjQiCiAgZmlsbD0ibm9uZSIKICBzdHJva2U9IiNiNDUzMDkiCiAgc3Ryb2tlLXdpZHRoPSIyIgogIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIKICBzdHJva2UtbGluZWpvaW49InJvdW5kIgo+CiAgPHBhdGggZD0iTTEyLjU4NiAyLjU4NkEyIDIgMCAwIDAgMTEuMTcyIDJINGEyIDIgMCAwIDAtMiAydjcuMTcyYTIgMiAwIDAgMCAuNTg2IDEuNDE0bDguNzA0IDguNzA0YTIuNDI2IDIuNDI2IDAgMCAwIDMuNDIgMGw2LjU4LTYuNThhMi40MjYgMi40MjYgMCAwIDAgMC0zLjQyeiIgLz4KICA8Y2lyY2xlIGN4PSI3LjUiIGN5PSI3LjUiIHI9Ii41IiBmaWxsPSIjYjQ1MzA5IiAvPgo8L3N2Zz4K", + "created": 1700000000000 + }, + "img_blki44": { + "mimeType": "image/svg+xml", + "id": "img_blki44", + "dataURL": "data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNDgiIGhlaWdodD0iNDgiIHZpZXdCb3g9IjAgMCA0OCA0OCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0yMyA2LjAwMDEzQzIzIDYuMDAwMDQgMjMgNiAyNCA2SDI0LjE3NjFDMjQuMjUzMyA2IDI0LjMyMzMgNiAyNC4zODY4IDZDMjUgNi4wMDAwMSAyNSA2LjAwMDA1IDI1IDYuMDAwMTNWMjAuNUMyNSAyMS44OTc3IDI1LjU2NDEgMjIuNDQyMSAyNi4wMDM5IDIyLjY5ODdDMjYuMDUzIDIyLjcyNzMgMjYuMTAyNCAyMi43NTMzIDI2LjE1MTYgMjIuNzc3QzI2LjE1MDYgMjIuNjU2OCAyNi4xNDkzIDIyLjUzMTYgMjYuMTQ3OSAyMi40MDE5TDI2LjE0NzkgMjIuNDAwM0MyNi4xMTAxIDE4Ljg3MTYgMjYuMDM2NSAxMS45OTk3IDMxLjQ3NTMgMTEuOTk5N0MzOC45MjU5IDExLjk5OTcgNDQuMjQ3OCAzOC4wMDYyIDQxLjA1NDcgNDAuNjU5OUMzNy44NjE1IDQzLjMxMzYgMzEuNDc1MyA0MS43MjE0IDI4LjI4MjIgMzguNTM2OUMyNS43MDQyIDM1Ljk2NTkgMjUuOTI3MiAyOS45NTgzIDI2LjA4NzMgMjUuNjQ1N0wyNi4wODc0IDI1LjY0NDNDMjYuMDk3MSAyNS4zODE5IDI2LjEwNjcgMjUuMTI1OCAyNi4xMTUzIDI0Ljg3NzFDMjUuNzkgMjQuNzk2MiAyNS4zOTU5IDI0LjY1OTUgMjQuOTk2MiAyNC40MjYzQzI0LjYzOTggMjQuMjE4NCAyNC4yOTc1IDIzLjk0NDIgMjQgMjMuNTkxOUMyMy43MDI2IDIzLjk0NDIgMjMuMzYwMyAyNC4yMTg0IDIzLjAwMzkgMjQuNDI2M0MyMi42MDQxIDI0LjY1OTUgMjIuMjEwMSAyNC43OTYyIDIxLjg4NDggMjQuODc3MUMyMS44OTM0IDI1LjEyNjEgMjEuOTAyOSAyNS4zODI2IDIxLjkxMjcgMjUuNjQ1M0MyMi4wNzI4IDI5Ljk1NzkgMjIuMjk1OSAzNS45NjYyIDE5LjcxNzkgMzguNTM3MkMxNi41MjQ3IDQxLjcyMTcgMTAuMTM4NSA0My4zMTM5IDYuOTQ1MzYgNDAuNjYwMkMzLjc1MjIyIDM4LjAwNjUgOS4wNzQxMyAxMiAxNi41MjQ3IDEyQzIxLjk2MzYgMTIgMjEuODkgMTguODcxNyAyMS44NTIyIDIyLjQwMDNDMjEuODUyIDIyLjQxNjYgMjEuODUxOCAyMi40MzI4IDIxLjg1MTYgMjIuNDQ4OUMyMS44NTA0IDIyLjU2MTkgMjEuODQ5MyAyMi42NzE0IDIxLjg0ODQgMjIuNzc3QzIxLjg5NzcgMjIuNzUzNCAyMS45NDcxIDIyLjcyNzQgMjEuOTk2MiAyMi42OTg3QzIyLjQzNiAyMi40NDIxIDIzIDIxLjg5NzcgMjMgMjAuNVY2LjAwMDEzWk0zMS40NzUzIDEzLjk5OTdDMzAuNTIxMiAxMy45OTk3IDI5Ljk4NDMgMTQuMzAwMiAyOS42MDg2IDE0LjY4NjlDMjkuMTc1MiAxNS4xMzMxIDI4LjgxMzIgMTUuODUwNyAyOC41NTkgMTYuODY0NkMyOC4xMTQxIDE4LjYzOTUgMjguMTMzIDIwLjY4MTkgMjguMTQ4MyAyMi4zMjkzQzI4LjE1MDkgMjIuNjE0MiAyOC4xNTM0IDIyLjg4NzQgMjguMTUzNCAyMy4xNDUzQzI4LjE1MzQgMjMuOTA1MyAyOC4xMTk2IDI0LjgxNTMgMjguMDg0NSAyNS43NjIxQzI4LjA3MDcgMjYuMTM0OSAyOC4wNTY2IDI2LjUxMzMgMjguMDQ0MyAyNi44OTA1QzI3Ljk5OTYgMjguMjY1NyAyNy45NzQxIDI5LjcwNTUgMjguMDQwNSAzMS4wOTgyQzI4LjEwNzIgMzIuNDk4NSAyOC4yNjQyIDMzLjc4MzUgMjguNTU3MyAzNC44NTk2QzI4Ljg1MzggMzUuOTQ4MyAyOS4yNTA5IDM2LjY3ODQgMjkuNjk0NCAzNy4xMjA4QzMwLjk3MjYgMzguMzk1NCAzMi45OTA4IDM5LjQyNTEgMzUuMDQ5MiAzOS44MjQzQzM3LjA4NDIgNDAuMjE4OSAzOC43MjI0IDM5LjkyNjkgMzkuNjgxOCAzOS4xOTY5QzM5LjY4NjggMzkuMTg1NyAzOS42OTIzIDM5LjE3MjYgMzkuNjk4NCAzOS4xNTc0QzM5Ljc1NzYgMzkuMDA5NSAzOS44Mjk0IDM4Ljc1NTQgMzkuODg3OCAzOC4zNjgzQzQwLjAwNDcgMzcuNTkzMyA0MC4wMzUgMzYuNTEyMiAzOS45NTYyIDM1LjE4MDNDMzkuNzk5NSAzMi41MzA1IDM5LjIyODYgMjkuMTY4OSAzOC4zMjY4IDI1Ljg2MDZDMzcuNDIxNiAyMi41Mzk2IDM2LjIxNzMgMTkuMzk5OCAzNC44NTIxIDE3LjEzODNDMzQuMTY4OCAxNi4wMDYyIDMzLjQ5NTEgMTUuMTc4NiAzMi44NzAzIDE0LjY1MzVDMzIuMjUxOCAxNC4xMzM3IDMxLjc5MzUgMTMuOTk5NyAzMS40NzUzIDEzLjk5OTdaTTE2LjUyNDcgMTRDMTcuNDc4OCAxNCAxOC4wMTU4IDE0LjMwMDUgMTguMzkxNCAxNC42ODcyQzE4LjgyNDggMTUuMTMzNCAxOS4xODY4IDE1Ljg1MSAxOS40NDEgMTYuODY0OUMxOS44ODU5IDE4LjYzOTkgMTkuODY3IDIwLjY4MjIgMTkuODUxOCAyMi4zMjk2QzE5Ljg0OTEgMjIuNjE0NiAxOS44NDY2IDIyLjg4NzcgMTkuODQ2NiAyMy4xNDU2QzE5Ljg0NjYgMjMuOTA1NiAxOS44ODA0IDI0LjgxNTYgMTkuOTE1NSAyNS43NjI0QzE5LjkyOTQgMjYuMTM1IDE5Ljk0MzQgMjYuNTEzOCAxOS45NTU3IDI2Ljg5MDhDMjAuMDAwNSAyOC4yNjYgMjAuMDI1OSAyOS43MDU4IDE5Ljk1OTYgMzEuMDk4NUMxOS44OTI5IDMyLjQ5ODggMTkuNzM1OSAzMy43ODM4IDE5LjQ0MjcgMzQuODU5OUMxOS4xNDYyIDM1Ljk0ODYgMTguNzQ5MiAzNi42Nzg3IDE4LjMwNTYgMzcuMTIxMUMxNy4wMjc1IDM4LjM5NTcgMTUuMDA5MyAzOS40MjU0IDEyLjk1MDkgMzkuODI0NkMxMC45MTU5IDQwLjIxOTIgOS4yNzc2OCAzOS45MjcyIDguMzE4MjMgMzkuMTk3MkM4LjMxMzI2IDM5LjE4NiA4LjMwNzcgMzkuMTcyOSA4LjMwMTYyIDM5LjE1NzdDOC4yNDI0MSAzOS4wMDk4IDguMTcwNjEgMzguNzU1NyA4LjExMjI0IDM4LjM2ODZDNy45OTUzOSAzNy41OTM2IDcuOTY1IDM2LjUxMjUgOC4wNDM4IDM1LjE4MDZDOC4yMDA1NiAzMi41MzA4IDguNzcxNDcgMjkuMTY5MiA5LjY3MzI0IDI1Ljg2MDlDMTAuNTc4NSAyMi41Mzk5IDExLjc4MjcgMTkuNDAwMSAxMy4xNDc5IDE3LjEzODZDMTMuODMxMyAxNi4wMDY1IDE0LjUwNDkgMTUuMTc4OSAxNS4xMjk4IDE0LjY1MzhDMTUuNzQ4MiAxNC4xMzQgMTYuMjA2NSAxNCAxNi41MjQ3IDE0WiIgZmlsbD0iI2I0NTMwOSIvPgo8L3N2Zz4K", + "created": 1700000000000 + }, + "img_blki48": { + "mimeType": "image/svg+xml", + "id": "img_blki48", + "dataURL": "data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNDgiIGhlaWdodD0iNDgiIHZpZXdCb3g9IjAgMCA0OCA0OCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0yOSA5QzI5IDExLjc2MTQgMjYuNzYxNCAxNCAyNCAxNEMyMS4yMzg2IDE0IDE5IDExLjc2MTQgMTkgOUMxOSA2LjIzODU4IDIxLjIzODYgNCAyNCA0QzI2Ljc2MTQgNCAyOSA2LjIzODU4IDI5IDlaTTI3IDlDMjcgMTAuNjU2OSAyNS42NTY5IDEyIDI0IDEyQzIyLjM0MzEgMTIgMjEgMTAuNjU2OSAyMSA5QzIxIDcuMzQzMTUgMjIuMzQzMSA2IDI0IDZDMjUuNjU2OSA2IDI3IDcuMzQzMTUgMjcgOVoiIGZpbGw9IiNiNDUzMDkiLz4KPHBhdGggZD0iTTE2Ljk5OTggNDFWMzRIMTguOTk5OFY0MUMxOC45OTk4IDQxLjU1MjMgMTkuNDQ3NSA0MiAxOS45OTk4IDQySDIwLjA4NjVDMjAuNjAzNyA0MiAyMS4wMzU2IDQxLjYwNTYgMjEuMDgyNCA0MS4wOTA1TDIxLjcyNyAzNEgyMy43MzUzTDIzLjA3NDIgNDEuMjcxNkMyMy4wNjkgNDEuMzI4OCAyMy4wNjIyIDQxLjM4NTYgMjMuMDUzOSA0MS40NDE3QzIzLjAzNTcgNDEuNTY0NyAyMy4wMTAxIDQxLjY4NTEgMjIuOTc3NiA0MS44MDI1QzIyLjYyNDIgNDMuMDc5OCAyMS40NTQ5IDQ0IDIwLjA4NjUgNDRIMTkuOTk5OEMxOC4zNDI5IDQ0IDE2Ljk5OTggNDIuNjU2OSAxNi45OTk4IDQxWiIgZmlsbD0iI2I0NTMwOSIvPgo8cGF0aCBkPSJNMjYuOTE3MSA0MS4wOTA1TDI2LjI3MjUgMzRIMjQuMjY0MkwyNC45MjUzIDQxLjI3MTZDMjQuOTMwNSA0MS4zMjg4IDI0LjkzNzMgNDEuMzg1NiAyNC45NDU2IDQxLjQ0MTdDMjQuOTYzOCA0MS41NjQ3IDI0Ljk4OTQgNDEuNjg1MSAyNS4wMjE5IDQxLjgwMjVDMjUuMzc1MyA0My4wNzk4IDI2LjU0NDYgNDQgMjcuOTEzIDQ0SDI3Ljk5OThDMjkuNjU2NiA0NCAzMC45OTk4IDQyLjY1NjkgMzAuOTk5OCA0MVYzNEgyOC45OTk4VjQxQzI4Ljk5OTggNDEuNTUyMyAyOC41NTIgNDIgMjcuOTk5OCA0MkgyNy45MTNDMjcuMzk1OCA0MiAyNi45NjM5IDQxLjYwNTYgMjYuOTE3MSA0MS4wOTA1WiIgZmlsbD0iI2I0NTMwOSIvPgo8cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGNsaXAtcnVsZT0iZXZlbm9kZCIgZD0iTTExIDE1QzEwLjQ0NzcgMTUgMTAgMTUuNDQ3NyAxMCAxNlYzMUMxMCAzMS41NTIzIDEwLjQ0NzcgMzIgMTEgMzJIMzdDMzcuNTUyMyAzMiAzOCAzMS41NTIzIDM4IDMxVjE2QzM4IDE1LjQ0NzcgMzcuNTUyMyAxNSAzNyAxNUgxMVpNMTIgMTdWMzBIMTkuNUMxOS41IDI5LjQ0MjQgMTkuNzU5MSAyOC45NTcyIDIwLjAyNzYgMjguNjAwNkMyMC4zMDg2IDI4LjIyNzYgMjAuNjc5NiAyNy44ODgzIDIxLjA3OTQgMjcuNjAxNkMyMS42MjUyIDI3LjIxMDMgMjIuMjk4NiAyNi44NjUgMjMgMjYuNjY3OFYyNC41SDIyLjJDMjEuNTk3MyAyNC41IDIwLjc1MzUgMjQuODY0MiAxOS45NDMzIDI1LjM1NTJDMTkuNTYzOCAyNS41ODUyIDE5LjIzMzcgMjUuODE2NyAxOC45OTg0IDI1Ljk5MTFDMTguODgxMiAyNi4wNzc4IDE4Ljc4ODggMjYuMTQ5NSAxOC43MjcgMjYuMTk4NEMxOC42OTYxIDI2LjIyMjggMTguNjczIDI2LjI0MTUgMTguNjU4MiAyNi4yNTM1TDE4LjY0MjYgMjYuMjY2M0wxOC42Mzk5IDI2LjI2ODRDMTguNjM5OSAyNi4yNjg0IDE4LjY0MDIgMjYuMjY4MiAxOCAyNS41QzE3LjM1OTggMjQuNzMxOCAxNy4zNjAxIDI0LjczMTUgMTcuMzYwMSAyNC43MzE1TDE3LjM2MTQgMjQuNzMwNUwxNy4zNjM4IDI0LjcyODVMMTcuMzcxMyAyNC43MjIzTDE3LjM5NjYgMjQuNzAxNkMxNy40MTc5IDI0LjY4NDMgMTcuNDQ4IDI0LjY2IDE3LjQ4NjMgMjQuNjI5N0MxNy41NjI3IDI0LjU2OTMgMTcuNjcxOSAyNC40ODQ3IDE3LjgwNzkgMjQuMzgzOUMxOC4wNzg4IDI0LjE4MzMgMTguNDYxMiAyMy45MTQ4IDE4LjkwNjcgMjMuNjQ0OEMxOS43NDY1IDIzLjEzNTggMjEuMDAyNyAyMi41IDIyLjIgMjIuNUgyM1YyMC41SDIyLjVDMjEuOTMwOSAyMC41IDIxLjE5MDkgMjAuNjk5MiAyMC41MjkyIDIwLjkzOThDMjAuMjEyIDIxLjA1NTIgMTkuOTM3IDIxLjE3MDkgMTkuNzQyMSAyMS4yNTc2QzE5LjY0NDkgMjEuMzAwNyAxOS41Njg1IDIxLjMzNjMgMTkuNTE3NiAyMS4zNjA1QzE5LjQ5MjIgMjEuMzcyNSAxOS40NzMyIDIxLjM4MTcgMTkuNDYxMyAyMS4zODc1TDE5LjQ0ODcgMjEuMzkzN0wxOS40NDcgMjEuMzk0NUMxOS40NDcgMjEuMzk0NSAxOS40NDcyIDIxLjM5NDQgMTkgMjAuNUMxOC41NTI4IDE5LjYwNTYgMTguNTUzMSAxOS42MDU0IDE4LjU1MzEgMTkuNjA1NEwxOC41NTY0IDE5LjYwMzhMMTguNTYyOSAxOS42MDA2TDE4LjU4NDQgMTkuNTlDMTguNjAyNSAxOS41ODEyIDE4LjYyNzkgMTkuNTY4OSAxOC42NjAxIDE5LjU1MzZDMTguNzI0NSAxOS41MjMxIDE4LjgxNiAxOS40ODA1IDE4LjkyOTggMTkuNDI5OUMxOS4xNTY3IDE5LjMyOTEgMTkuNDc1NSAxOS4xOTQ4IDE5Ljg0NTggMTkuMDYwMkMyMC41NTkxIDE4LjgwMDggMjEuNTY5MSAxOC41IDIyLjUgMTguNUgyM1YxN0gxMlpNMjUgMjQuNUgyNi4xQzI2Ljg0ODkgMjQuNSAyNy42MTg2IDI0Ljg2NjMgMjguMjYzMSAyNS4zMTg2QzI4LjU3MzUgMjUuNTM2NCAyOC44Mjg1IDI1Ljc1NTYgMjkuMDA0OCAyNS45MTk3QzI5LjA5MjUgMjYuMDAxMiAyOS4xNTk0IDI2LjA2NzkgMjkuMjAyNiAyNi4xMTIyQzI5LjIyNDEgMjYuMTM0MyAyOS4yMzk3IDI2LjE1MDcgMjkuMjQ4OCAyNi4xNjA1TDI5LjI1NzQgMjYuMTY5N0MyOS4yNTc0IDI2LjE2OTcgMjkuMjU2NyAyNi4xNjkgMzAgMjUuNUMzMC43NDMzIDI0LjgzMSAzMC43NDI5IDI0LjgzMDYgMzAuNzQyOSAyNC44MzA2TDMwLjc0MTQgMjQuODI5TDMwLjczODkgMjQuODI2MkwzMC43MzE4IDI0LjgxODRMMzAuNzA5NyAyNC43OTQ2QzMwLjY5MTUgMjQuNzc1MSAzMC42NjYzIDI0Ljc0ODUgMzAuNjM0NiAyNC43MTZDMzAuNTcxMSAyNC42NTA5IDMwLjQ4MDkgMjQuNTYxMyAzMC4zNjcgMjQuNDU1M0MzMC4xNDAzIDI0LjI0NDQgMjkuODE0IDIzLjk2MzYgMjkuNDExOSAyMy42ODE0QzI4LjYzMTQgMjMuMTMzNyAyNy40NTExIDIyLjUgMjYuMSAyMi41SDI1VjIwLjVIMjUuNzVDMjYuNDQ0MyAyMC41IDI3LjExOTMgMjAuNzAxMSAyNy42NDMyIDIwLjkyMTZDMjcuOTAwMyAyMS4wMjk5IDI4LjEwOTIgMjEuMTM3OCAyOC4yNTA5IDIxLjIxNjlDMjguMzIxNSAyMS4yNTY0IDI4LjM3NDcgMjEuMjg4MiAyOC40MDggMjEuMzA4N0MyOC40MjQ3IDIxLjMxODkgMjguNDM2MyAyMS4zMjYzIDI4LjQ0MjcgMjEuMzMwNEwyOC40NDU3IDIxLjMzMjNDMjguNDQ1NyAyMS4zMzIzIDI4LjQ0NTMgMjEuMzMyMSAyOSAyMC41QzI5LjU1NDcgMTkuNjY3OSAyOS41NTQyIDE5LjY2NzYgMjkuNTU0MiAxOS42Njc2TDI5LjU1MjcgMTkuNjY2NkwyOS41NTAxIDE5LjY2NDlMMjkuNTQzMiAxOS42NjA0TDI5LjUyMjggMTkuNjQ3MkMyOS41MDYzIDE5LjYzNjYgMjkuNDg0IDE5LjYyMjUgMjkuNDU2MiAxOS42MDU0QzI5LjQwMDcgMTkuNTcxMiAyOS4zMjMgMTkuNTI0OSAyOS4yMjU2IDE5LjQ3MDZDMjkuMDMxNSAxOS4zNjIyIDI4Ljc1NTkgMTkuMjIwMSAyOC40MTkzIDE5LjA3ODRDMjcuNzU1NyAxOC43OTg5IDI2LjgwNTcgMTguNSAyNS43NSAxOC41SDI1VjE3SDM2VjMwSDI4LjVDMjguNSAyOS40Mzc5IDI4LjIzMjQgMjguOTQ1MiAyNy45NjQxIDI4LjU4NzVDMjcuNjgwMyAyOC4yMDkyIDI3LjMwNTQgMjcuODYwNiAyNi45MDA3IDI3LjU2NjNDMjYuMzY3NSAyNy4xNzg1IDI1LjY5ODkgMjYuODI1NyAyNSAyNi42MzkxVjI0LjVaTTI2LjQ5MjkgMzBDMjYuNDc5NyAyOS45NjcgMjYuNDQ1NyAyOS44OTY0IDI2LjM2NDEgMjkuNzg3NUMyNi4yMjU5IDI5LjYwMzMgMjYuMDA3MSAyOS4zODk0IDI1LjcyNDMgMjkuMTgzN0MyNS4xNDc4IDI4Ljc2NDUgMjQuNDkzNyAyOC41MTE3IDI0LjAzMiAyOC41MDA0QzIzLjQ4NzcgMjguNTQ2NCAyMi44MDUyIDI4LjgyNTIgMjIuMjQ0OSAyOS4yMjdDMjEuOTY1NyAyOS40MjcyIDIxLjc1NTYgMjkuNjMwNyAyMS42MjUyIDI5LjgwMzhDMjEuNTQ5NiAyOS45MDQzIDIxLjUxODQgMjkuOTY5NCAyMS41MDYzIDMwSDI2LjQ5MjlaIiBmaWxsPSIjYjQ1MzA5Ii8+Cjwvc3ZnPgo=", + "created": 1700000000000 + } + } +} \ No newline at end of file diff --git a/knowledge/drafts/pillars.svg b/knowledge/drafts/pillars.svg new file mode 100644 index 0000000..046a563 --- /dev/null +++ b/knowledge/drafts/pillars.svg @@ -0,0 +1,2 @@ +Use Caseswhat the project wants builtSample Applicationswhat has been builtillustratesSDKswrap the structures · attach the shared knowledge · support authoringData Structuresthis patient · Patient ContextObservationExam FindingListImaging ProblemListImaging PersonaFoundation Contextshared, curated knowledgerelationshipsFinding/diagnosis definitionsfinding models · CDEsAnatomic locationsanchored in RadLexExam typesLOINC/RSNA Playbookinterconnected at every finding, diagnosis, location, and exam type \ No newline at end of file diff --git a/knowledge/drafts/three-axes.excalidraw b/knowledge/drafts/three-axes.excalidraw new file mode 100644 index 0000000..bf7eaa7 --- /dev/null +++ b/knowledge/drafts/three-axes.excalidraw @@ -0,0 +1,934 @@ +{ + "type": "excalidraw", + "version": 2, + "source": "oidm-knowledge/tools/diagrams", + "elements": [ + { + "type": "rectangle", + "id": "axis1", + "x": 0, + "y": 66, + "width": 249.33333333333334, + "height": 280.5, + "strokeColor": "#b45309", + "backgroundColor": "#fde68a", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1001, + "version": 1, + "versionNonce": 1002, + "isDeleted": false, + "groupIds": [], + "boundElements": [ + { + "id": "rel19", + "type": "arrow" + } + ], + "link": null, + "locked": false, + "roundness": { + "type": 3 + } + }, + { + "type": "image", + "id": "coli1", + "x": 106.66666666666667, + "y": 110, + "width": 36, + "height": 36, + "strokeColor": "transparent", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1003, + "version": 1, + "versionNonce": 1004, + "isDeleted": false, + "groupIds": [], + "boundElements": [], + "link": null, + "locked": false, + "fileId": "img_coli1", + "status": "saved", + "scale": [ + 1, + 1 + ], + "roundness": null, + "crop": null + }, + { + "type": "text", + "id": "colt2", + "x": 8, + "y": 156, + "width": 233.33333333333334, + "height": 21.25, + "strokeColor": "#78350f", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1005, + "version": 1, + "versionNonce": 1006, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "Finding/diagnosis", + "originalText": "Finding/diagnosis", + "fontSize": 17, + "fontFamily": 2, + "textAlign": "center", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 + }, + { + "type": "text", + "id": "colt3", + "x": 8, + "y": 177.25, + "width": 233.33333333333334, + "height": 21.25, + "strokeColor": "#78350f", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1007, + "version": 1, + "versionNonce": 1008, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "definitions", + "originalText": "definitions", + "fontSize": 17, + "fontFamily": 2, + "textAlign": "center", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 + }, + { + "type": "text", + "id": "coltag4", + "x": 8, + "y": 208.5, + "width": 233.33333333333334, + "height": 17.5, + "strokeColor": "#b45309", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1009, + "version": 1, + "versionNonce": 1010, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "WHAT was found", + "originalText": "WHAT was found", + "fontSize": 14, + "fontFamily": 2, + "textAlign": "center", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 + }, + { + "type": "rectangle", + "id": "colblk5", + "x": 12, + "y": 260.0, + "width": 225.33333333333334, + "height": 48.5, + "strokeColor": "#78350f", + "backgroundColor": "#b45309", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1011, + "version": 1, + "versionNonce": 1012, + "isDeleted": false, + "groupIds": [], + "boundElements": [], + "link": null, + "locked": false, + "roundness": { + "type": 3 + } + }, + { + "type": "text", + "id": "colblkt6", + "x": 18, + "y": 270.0, + "width": 213.33333333333334, + "height": 16.25, + "strokeColor": "#fef3c7", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1013, + "version": 1, + "versionNonce": 1014, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "layered over: finding models", + "originalText": "layered over: finding models", + "fontSize": 13, + "fontFamily": 2, + "textAlign": "center", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 + }, + { + "type": "text", + "id": "colblkt7", + "x": 18, + "y": 286.25, + "width": 213.33333333333334, + "height": 16.25, + "strokeColor": "#fef3c7", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1015, + "version": 1, + "versionNonce": 1016, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "\u00b7 ACR/RSNA CDEs", + "originalText": "\u00b7 ACR/RSNA CDEs", + "fontSize": 13, + "fontFamily": 2, + "textAlign": "center", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 + }, + { + "type": "rectangle", + "id": "axis2", + "x": 305.33333333333337, + "y": 66, + "width": 249.33333333333334, + "height": 280.5, + "strokeColor": "#b45309", + "backgroundColor": "#fde68a", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1017, + "version": 1, + "versionNonce": 1018, + "isDeleted": false, + "groupIds": [], + "boundElements": [ + { + "id": "rel19", + "type": "arrow" + }, + { + "id": "rel21", + "type": "arrow" + } + ], + "link": null, + "locked": false, + "roundness": { + "type": 3 + } + }, + { + "type": "image", + "id": "coli8", + "x": 412.00000000000006, + "y": 110, + "width": 36, + "height": 36, + "strokeColor": "transparent", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1019, + "version": 1, + "versionNonce": 1020, + "isDeleted": false, + "groupIds": [], + "boundElements": [], + "link": null, + "locked": false, + "fileId": "img_coli8", + "status": "saved", + "scale": [ + 1, + 1 + ], + "roundness": null, + "crop": null + }, + { + "type": "text", + "id": "colt9", + "x": 313.33333333333337, + "y": 156, + "width": 233.33333333333334, + "height": 21.25, + "strokeColor": "#78350f", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1021, + "version": 1, + "versionNonce": 1022, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "Anatomic locations", + "originalText": "Anatomic locations", + "fontSize": 17, + "fontFamily": 2, + "textAlign": "center", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 + }, + { + "type": "text", + "id": "coltag10", + "x": 313.33333333333337, + "y": 208.5, + "width": 233.33333333333334, + "height": 17.5, + "strokeColor": "#b45309", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1023, + "version": 1, + "versionNonce": 1024, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "WHERE it is", + "originalText": "WHERE it is", + "fontSize": 14, + "fontFamily": 2, + "textAlign": "center", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 + }, + { + "type": "rectangle", + "id": "colblk11", + "x": 317.33333333333337, + "y": 260.0, + "width": 225.33333333333334, + "height": 48.5, + "strokeColor": "#78350f", + "backgroundColor": "#b45309", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1025, + "version": 1, + "versionNonce": 1026, + "isDeleted": false, + "groupIds": [], + "boundElements": [], + "link": null, + "locked": false, + "roundness": { + "type": 3 + } + }, + { + "type": "text", + "id": "colblkt12", + "x": 323.33333333333337, + "y": 278.125, + "width": 213.33333333333334, + "height": 16.25, + "strokeColor": "#fef3c7", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1027, + "version": 1, + "versionNonce": 1028, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "layered over: RadLex", + "originalText": "layered over: RadLex", + "fontSize": 13, + "fontFamily": 2, + "textAlign": "center", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 + }, + { + "type": "rectangle", + "id": "axis3", + "x": 610.6666666666667, + "y": 66, + "width": 249.33333333333334, + "height": 280.5, + "strokeColor": "#b45309", + "backgroundColor": "#fde68a", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1029, + "version": 1, + "versionNonce": 1030, + "isDeleted": false, + "groupIds": [], + "boundElements": [ + { + "id": "rel21", + "type": "arrow" + } + ], + "link": null, + "locked": false, + "roundness": { + "type": 3 + } + }, + { + "type": "image", + "id": "coli13", + "x": 717.3333333333334, + "y": 110, + "width": 36, + "height": 36, + "strokeColor": "transparent", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1031, + "version": 1, + "versionNonce": 1032, + "isDeleted": false, + "groupIds": [], + "boundElements": [], + "link": null, + "locked": false, + "fileId": "img_coli13", + "status": "saved", + "scale": [ + 1, + 1 + ], + "roundness": null, + "crop": null + }, + { + "type": "text", + "id": "colt14", + "x": 618.6666666666667, + "y": 156, + "width": 233.33333333333334, + "height": 21.25, + "strokeColor": "#78350f", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1033, + "version": 1, + "versionNonce": 1034, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "Exam types", + "originalText": "Exam types", + "fontSize": 17, + "fontFamily": 2, + "textAlign": "center", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 + }, + { + "type": "text", + "id": "coltag15", + "x": 618.6666666666667, + "y": 208.5, + "width": 233.33333333333334, + "height": 17.5, + "strokeColor": "#b45309", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1035, + "version": 1, + "versionNonce": 1036, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "HOW it was seen", + "originalText": "HOW it was seen", + "fontSize": 14, + "fontFamily": 2, + "textAlign": "center", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 + }, + { + "type": "rectangle", + "id": "colblk16", + "x": 622.6666666666667, + "y": 260.0, + "width": 225.33333333333334, + "height": 48.5, + "strokeColor": "#78350f", + "backgroundColor": "#b45309", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1037, + "version": 1, + "versionNonce": 1038, + "isDeleted": false, + "groupIds": [], + "boundElements": [], + "link": null, + "locked": false, + "roundness": { + "type": 3 + } + }, + { + "type": "text", + "id": "colblkt17", + "x": 628.6666666666667, + "y": 270.0, + "width": 213.33333333333334, + "height": 16.25, + "strokeColor": "#fef3c7", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1039, + "version": 1, + "versionNonce": 1040, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "layered over: LOINC/RSNA", + "originalText": "layered over: LOINC/RSNA", + "fontSize": 13, + "fontFamily": 2, + "textAlign": "center", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 + }, + { + "type": "text", + "id": "colblkt18", + "x": 628.6666666666667, + "y": 286.25, + "width": 213.33333333333334, + "height": 16.25, + "strokeColor": "#fef3c7", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1041, + "version": 1, + "versionNonce": 1042, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "Playbook", + "originalText": "Playbook", + "fontSize": 13, + "fontFamily": 2, + "textAlign": "center", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 + }, + { + "type": "arrow", + "id": "rel19", + "x": 257.33333333333337, + "y": 206.25, + "width": 40.0, + "height": 0.0, + "strokeColor": "#b45309", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1.5, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1043, + "version": 1, + "versionNonce": 1044, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "points": [ + [ + 0, + 0 + ], + [ + 40.0, + 0.0 + ] + ], + "startBinding": { + "elementId": "axis1", + "focus": 0, + "gap": 2 + }, + "endBinding": { + "elementId": "axis2", + "focus": 0, + "gap": 2 + }, + "startArrowhead": "arrow", + "endArrowhead": "arrow" + }, + { + "type": "rectangle", + "id": "rellbl20", + "x": 223.32333333333338, + "y": 180.0, + "width": 108.02, + "height": 20.25, + "strokeColor": "transparent", + "backgroundColor": "#ffffff", + "fillStyle": "solid", + "strokeWidth": 0, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1045, + "version": 1, + "versionNonce": 1046, + "isDeleted": false, + "groupIds": [], + "boundElements": [], + "link": null, + "locked": false, + "roundness": { + "type": 3 + } + }, + { + "type": "text", + "id": "rellbl20_t", + "x": 228.32333333333338, + "y": 182.0, + "width": 98.02, + "height": 16.25, + "strokeColor": "#64748b", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1047, + "version": 1, + "versionNonce": 1048, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "relationships", + "originalText": "relationships", + "fontSize": 13, + "fontFamily": 2, + "textAlign": "center", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 + }, + { + "type": "arrow", + "id": "rel21", + "x": 562.6666666666667, + "y": 206.25, + "width": 40.0, + "height": 0.0, + "strokeColor": "#b45309", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1.5, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1049, + "version": 1, + "versionNonce": 1050, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "points": [ + [ + 0, + 0 + ], + [ + 40.0, + 0.0 + ] + ], + "startBinding": { + "elementId": "axis2", + "focus": 0, + "gap": 2 + }, + "endBinding": { + "elementId": "axis3", + "focus": 0, + "gap": 2 + }, + "startArrowhead": "arrow", + "endArrowhead": "arrow" + }, + { + "type": "rectangle", + "id": "rellbl22", + "x": 528.6566666666668, + "y": 180.0, + "width": 108.02, + "height": 20.25, + "strokeColor": "transparent", + "backgroundColor": "#ffffff", + "fillStyle": "solid", + "strokeWidth": 0, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1051, + "version": 1, + "versionNonce": 1052, + "isDeleted": false, + "groupIds": [], + "boundElements": [], + "link": null, + "locked": false, + "roundness": { + "type": 3 + } + }, + { + "type": "text", + "id": "rellbl22_t", + "x": 533.6566666666668, + "y": 182.0, + "width": 98.02, + "height": 16.25, + "strokeColor": "#64748b", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1053, + "version": 1, + "versionNonce": 1054, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "relationships", + "originalText": "relationships", + "fontSize": 13, + "fontFamily": 2, + "textAlign": "center", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 + }, + { + "type": "text", + "id": "cap23", + "x": 0, + "y": 402.5, + "width": 860, + "height": 16.25, + "strokeColor": "#64748b", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1055, + "version": 1, + "versionNonce": 1056, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "each a curated layer over an existing standard; the axes relate to each other and cite external references", + "originalText": "each a curated layer over an existing standard; the axes relate to each other and cite external references", + "fontSize": 13, + "fontFamily": 2, + "textAlign": "center", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 + } + ], + "appState": { + "viewBackgroundColor": "#ffffff", + "gridSize": null + }, + "files": { + "img_coli1": { + "mimeType": "image/svg+xml", + "id": "img_coli1", + "dataURL": "data:image/svg+xml;base64,PHN2ZwogIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIKICB3aWR0aD0iMjQiCiAgaGVpZ2h0PSIyNCIKICB2aWV3Qm94PSIwIDAgMjQgMjQiCiAgZmlsbD0ibm9uZSIKICBzdHJva2U9IiNiNDUzMDkiCiAgc3Ryb2tlLXdpZHRoPSIyIgogIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIKICBzdHJva2UtbGluZWpvaW49InJvdW5kIgo+CiAgPHBhdGggZD0iTTEyLjU4NiAyLjU4NkEyIDIgMCAwIDAgMTEuMTcyIDJINGEyIDIgMCAwIDAtMiAydjcuMTcyYTIgMiAwIDAgMCAuNTg2IDEuNDE0bDguNzA0IDguNzA0YTIuNDI2IDIuNDI2IDAgMCAwIDMuNDIgMGw2LjU4LTYuNThhMi40MjYgMi40MjYgMCAwIDAgMC0zLjQyeiIgLz4KICA8Y2lyY2xlIGN4PSI3LjUiIGN5PSI3LjUiIHI9Ii41IiBmaWxsPSIjYjQ1MzA5IiAvPgo8L3N2Zz4K", + "created": 1700000000000 + }, + "img_coli8": { + "mimeType": "image/svg+xml", + "id": "img_coli8", + "dataURL": "data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNDgiIGhlaWdodD0iNDgiIHZpZXdCb3g9IjAgMCA0OCA0OCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0yMyA2LjAwMDEzQzIzIDYuMDAwMDQgMjMgNiAyNCA2SDI0LjE3NjFDMjQuMjUzMyA2IDI0LjMyMzMgNiAyNC4zODY4IDZDMjUgNi4wMDAwMSAyNSA2LjAwMDA1IDI1IDYuMDAwMTNWMjAuNUMyNSAyMS44OTc3IDI1LjU2NDEgMjIuNDQyMSAyNi4wMDM5IDIyLjY5ODdDMjYuMDUzIDIyLjcyNzMgMjYuMTAyNCAyMi43NTMzIDI2LjE1MTYgMjIuNzc3QzI2LjE1MDYgMjIuNjU2OCAyNi4xNDkzIDIyLjUzMTYgMjYuMTQ3OSAyMi40MDE5TDI2LjE0NzkgMjIuNDAwM0MyNi4xMTAxIDE4Ljg3MTYgMjYuMDM2NSAxMS45OTk3IDMxLjQ3NTMgMTEuOTk5N0MzOC45MjU5IDExLjk5OTcgNDQuMjQ3OCAzOC4wMDYyIDQxLjA1NDcgNDAuNjU5OUMzNy44NjE1IDQzLjMxMzYgMzEuNDc1MyA0MS43MjE0IDI4LjI4MjIgMzguNTM2OUMyNS43MDQyIDM1Ljk2NTkgMjUuOTI3MiAyOS45NTgzIDI2LjA4NzMgMjUuNjQ1N0wyNi4wODc0IDI1LjY0NDNDMjYuMDk3MSAyNS4zODE5IDI2LjEwNjcgMjUuMTI1OCAyNi4xMTUzIDI0Ljg3NzFDMjUuNzkgMjQuNzk2MiAyNS4zOTU5IDI0LjY1OTUgMjQuOTk2MiAyNC40MjYzQzI0LjYzOTggMjQuMjE4NCAyNC4yOTc1IDIzLjk0NDIgMjQgMjMuNTkxOUMyMy43MDI2IDIzLjk0NDIgMjMuMzYwMyAyNC4yMTg0IDIzLjAwMzkgMjQuNDI2M0MyMi42MDQxIDI0LjY1OTUgMjIuMjEwMSAyNC43OTYyIDIxLjg4NDggMjQuODc3MUMyMS44OTM0IDI1LjEyNjEgMjEuOTAyOSAyNS4zODI2IDIxLjkxMjcgMjUuNjQ1M0MyMi4wNzI4IDI5Ljk1NzkgMjIuMjk1OSAzNS45NjYyIDE5LjcxNzkgMzguNTM3MkMxNi41MjQ3IDQxLjcyMTcgMTAuMTM4NSA0My4zMTM5IDYuOTQ1MzYgNDAuNjYwMkMzLjc1MjIyIDM4LjAwNjUgOS4wNzQxMyAxMiAxNi41MjQ3IDEyQzIxLjk2MzYgMTIgMjEuODkgMTguODcxNyAyMS44NTIyIDIyLjQwMDNDMjEuODUyIDIyLjQxNjYgMjEuODUxOCAyMi40MzI4IDIxLjg1MTYgMjIuNDQ4OUMyMS44NTA0IDIyLjU2MTkgMjEuODQ5MyAyMi42NzE0IDIxLjg0ODQgMjIuNzc3QzIxLjg5NzcgMjIuNzUzNCAyMS45NDcxIDIyLjcyNzQgMjEuOTk2MiAyMi42OTg3QzIyLjQzNiAyMi40NDIxIDIzIDIxLjg5NzcgMjMgMjAuNVY2LjAwMDEzWk0zMS40NzUzIDEzLjk5OTdDMzAuNTIxMiAxMy45OTk3IDI5Ljk4NDMgMTQuMzAwMiAyOS42MDg2IDE0LjY4NjlDMjkuMTc1MiAxNS4xMzMxIDI4LjgxMzIgMTUuODUwNyAyOC41NTkgMTYuODY0NkMyOC4xMTQxIDE4LjYzOTUgMjguMTMzIDIwLjY4MTkgMjguMTQ4MyAyMi4zMjkzQzI4LjE1MDkgMjIuNjE0MiAyOC4xNTM0IDIyLjg4NzQgMjguMTUzNCAyMy4xNDUzQzI4LjE1MzQgMjMuOTA1MyAyOC4xMTk2IDI0LjgxNTMgMjguMDg0NSAyNS43NjIxQzI4LjA3MDcgMjYuMTM0OSAyOC4wNTY2IDI2LjUxMzMgMjguMDQ0MyAyNi44OTA1QzI3Ljk5OTYgMjguMjY1NyAyNy45NzQxIDI5LjcwNTUgMjguMDQwNSAzMS4wOTgyQzI4LjEwNzIgMzIuNDk4NSAyOC4yNjQyIDMzLjc4MzUgMjguNTU3MyAzNC44NTk2QzI4Ljg1MzggMzUuOTQ4MyAyOS4yNTA5IDM2LjY3ODQgMjkuNjk0NCAzNy4xMjA4QzMwLjk3MjYgMzguMzk1NCAzMi45OTA4IDM5LjQyNTEgMzUuMDQ5MiAzOS44MjQzQzM3LjA4NDIgNDAuMjE4OSAzOC43MjI0IDM5LjkyNjkgMzkuNjgxOCAzOS4xOTY5QzM5LjY4NjggMzkuMTg1NyAzOS42OTIzIDM5LjE3MjYgMzkuNjk4NCAzOS4xNTc0QzM5Ljc1NzYgMzkuMDA5NSAzOS44Mjk0IDM4Ljc1NTQgMzkuODg3OCAzOC4zNjgzQzQwLjAwNDcgMzcuNTkzMyA0MC4wMzUgMzYuNTEyMiAzOS45NTYyIDM1LjE4MDNDMzkuNzk5NSAzMi41MzA1IDM5LjIyODYgMjkuMTY4OSAzOC4zMjY4IDI1Ljg2MDZDMzcuNDIxNiAyMi41Mzk2IDM2LjIxNzMgMTkuMzk5OCAzNC44NTIxIDE3LjEzODNDMzQuMTY4OCAxNi4wMDYyIDMzLjQ5NTEgMTUuMTc4NiAzMi44NzAzIDE0LjY1MzVDMzIuMjUxOCAxNC4xMzM3IDMxLjc5MzUgMTMuOTk5NyAzMS40NzUzIDEzLjk5OTdaTTE2LjUyNDcgMTRDMTcuNDc4OCAxNCAxOC4wMTU4IDE0LjMwMDUgMTguMzkxNCAxNC42ODcyQzE4LjgyNDggMTUuMTMzNCAxOS4xODY4IDE1Ljg1MSAxOS40NDEgMTYuODY0OUMxOS44ODU5IDE4LjYzOTkgMTkuODY3IDIwLjY4MjIgMTkuODUxOCAyMi4zMjk2QzE5Ljg0OTEgMjIuNjE0NiAxOS44NDY2IDIyLjg4NzcgMTkuODQ2NiAyMy4xNDU2QzE5Ljg0NjYgMjMuOTA1NiAxOS44ODA0IDI0LjgxNTYgMTkuOTE1NSAyNS43NjI0QzE5LjkyOTQgMjYuMTM1IDE5Ljk0MzQgMjYuNTEzOCAxOS45NTU3IDI2Ljg5MDhDMjAuMDAwNSAyOC4yNjYgMjAuMDI1OSAyOS43MDU4IDE5Ljk1OTYgMzEuMDk4NUMxOS44OTI5IDMyLjQ5ODggMTkuNzM1OSAzMy43ODM4IDE5LjQ0MjcgMzQuODU5OUMxOS4xNDYyIDM1Ljk0ODYgMTguNzQ5MiAzNi42Nzg3IDE4LjMwNTYgMzcuMTIxMUMxNy4wMjc1IDM4LjM5NTcgMTUuMDA5MyAzOS40MjU0IDEyLjk1MDkgMzkuODI0NkMxMC45MTU5IDQwLjIxOTIgOS4yNzc2OCAzOS45MjcyIDguMzE4MjMgMzkuMTk3MkM4LjMxMzI2IDM5LjE4NiA4LjMwNzcgMzkuMTcyOSA4LjMwMTYyIDM5LjE1NzdDOC4yNDI0MSAzOS4wMDk4IDguMTcwNjEgMzguNzU1NyA4LjExMjI0IDM4LjM2ODZDNy45OTUzOSAzNy41OTM2IDcuOTY1IDM2LjUxMjUgOC4wNDM4IDM1LjE4MDZDOC4yMDA1NiAzMi41MzA4IDguNzcxNDcgMjkuMTY5MiA5LjY3MzI0IDI1Ljg2MDlDMTAuNTc4NSAyMi41Mzk5IDExLjc4MjcgMTkuNDAwMSAxMy4xNDc5IDE3LjEzODZDMTMuODMxMyAxNi4wMDY1IDE0LjUwNDkgMTUuMTc4OSAxNS4xMjk4IDE0LjY1MzhDMTUuNzQ4MiAxNC4xMzQgMTYuMjA2NSAxNCAxNi41MjQ3IDE0WiIgZmlsbD0iI2I0NTMwOSIvPgo8L3N2Zz4K", + "created": 1700000000000 + }, + "img_coli13": { + "mimeType": "image/svg+xml", + "id": "img_coli13", + "dataURL": "data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNDgiIGhlaWdodD0iNDgiIHZpZXdCb3g9IjAgMCA0OCA0OCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0yOSA5QzI5IDExLjc2MTQgMjYuNzYxNCAxNCAyNCAxNEMyMS4yMzg2IDE0IDE5IDExLjc2MTQgMTkgOUMxOSA2LjIzODU4IDIxLjIzODYgNCAyNCA0QzI2Ljc2MTQgNCAyOSA2LjIzODU4IDI5IDlaTTI3IDlDMjcgMTAuNjU2OSAyNS42NTY5IDEyIDI0IDEyQzIyLjM0MzEgMTIgMjEgMTAuNjU2OSAyMSA5QzIxIDcuMzQzMTUgMjIuMzQzMSA2IDI0IDZDMjUuNjU2OSA2IDI3IDcuMzQzMTUgMjcgOVoiIGZpbGw9IiNiNDUzMDkiLz4KPHBhdGggZD0iTTE2Ljk5OTggNDFWMzRIMTguOTk5OFY0MUMxOC45OTk4IDQxLjU1MjMgMTkuNDQ3NSA0MiAxOS45OTk4IDQySDIwLjA4NjVDMjAuNjAzNyA0MiAyMS4wMzU2IDQxLjYwNTYgMjEuMDgyNCA0MS4wOTA1TDIxLjcyNyAzNEgyMy43MzUzTDIzLjA3NDIgNDEuMjcxNkMyMy4wNjkgNDEuMzI4OCAyMy4wNjIyIDQxLjM4NTYgMjMuMDUzOSA0MS40NDE3QzIzLjAzNTcgNDEuNTY0NyAyMy4wMTAxIDQxLjY4NTEgMjIuOTc3NiA0MS44MDI1QzIyLjYyNDIgNDMuMDc5OCAyMS40NTQ5IDQ0IDIwLjA4NjUgNDRIMTkuOTk5OEMxOC4zNDI5IDQ0IDE2Ljk5OTggNDIuNjU2OSAxNi45OTk4IDQxWiIgZmlsbD0iI2I0NTMwOSIvPgo8cGF0aCBkPSJNMjYuOTE3MSA0MS4wOTA1TDI2LjI3MjUgMzRIMjQuMjY0MkwyNC45MjUzIDQxLjI3MTZDMjQuOTMwNSA0MS4zMjg4IDI0LjkzNzMgNDEuMzg1NiAyNC45NDU2IDQxLjQ0MTdDMjQuOTYzOCA0MS41NjQ3IDI0Ljk4OTQgNDEuNjg1MSAyNS4wMjE5IDQxLjgwMjVDMjUuMzc1MyA0My4wNzk4IDI2LjU0NDYgNDQgMjcuOTEzIDQ0SDI3Ljk5OThDMjkuNjU2NiA0NCAzMC45OTk4IDQyLjY1NjkgMzAuOTk5OCA0MVYzNEgyOC45OTk4VjQxQzI4Ljk5OTggNDEuNTUyMyAyOC41NTIgNDIgMjcuOTk5OCA0MkgyNy45MTNDMjcuMzk1OCA0MiAyNi45NjM5IDQxLjYwNTYgMjYuOTE3MSA0MS4wOTA1WiIgZmlsbD0iI2I0NTMwOSIvPgo8cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGNsaXAtcnVsZT0iZXZlbm9kZCIgZD0iTTExIDE1QzEwLjQ0NzcgMTUgMTAgMTUuNDQ3NyAxMCAxNlYzMUMxMCAzMS41NTIzIDEwLjQ0NzcgMzIgMTEgMzJIMzdDMzcuNTUyMyAzMiAzOCAzMS41NTIzIDM4IDMxVjE2QzM4IDE1LjQ0NzcgMzcuNTUyMyAxNSAzNyAxNUgxMVpNMTIgMTdWMzBIMTkuNUMxOS41IDI5LjQ0MjQgMTkuNzU5MSAyOC45NTcyIDIwLjAyNzYgMjguNjAwNkMyMC4zMDg2IDI4LjIyNzYgMjAuNjc5NiAyNy44ODgzIDIxLjA3OTQgMjcuNjAxNkMyMS42MjUyIDI3LjIxMDMgMjIuMjk4NiAyNi44NjUgMjMgMjYuNjY3OFYyNC41SDIyLjJDMjEuNTk3MyAyNC41IDIwLjc1MzUgMjQuODY0MiAxOS45NDMzIDI1LjM1NTJDMTkuNTYzOCAyNS41ODUyIDE5LjIzMzcgMjUuODE2NyAxOC45OTg0IDI1Ljk5MTFDMTguODgxMiAyNi4wNzc4IDE4Ljc4ODggMjYuMTQ5NSAxOC43MjcgMjYuMTk4NEMxOC42OTYxIDI2LjIyMjggMTguNjczIDI2LjI0MTUgMTguNjU4MiAyNi4yNTM1TDE4LjY0MjYgMjYuMjY2M0wxOC42Mzk5IDI2LjI2ODRDMTguNjM5OSAyNi4yNjg0IDE4LjY0MDIgMjYuMjY4MiAxOCAyNS41QzE3LjM1OTggMjQuNzMxOCAxNy4zNjAxIDI0LjczMTUgMTcuMzYwMSAyNC43MzE1TDE3LjM2MTQgMjQuNzMwNUwxNy4zNjM4IDI0LjcyODVMMTcuMzcxMyAyNC43MjIzTDE3LjM5NjYgMjQuNzAxNkMxNy40MTc5IDI0LjY4NDMgMTcuNDQ4IDI0LjY2IDE3LjQ4NjMgMjQuNjI5N0MxNy41NjI3IDI0LjU2OTMgMTcuNjcxOSAyNC40ODQ3IDE3LjgwNzkgMjQuMzgzOUMxOC4wNzg4IDI0LjE4MzMgMTguNDYxMiAyMy45MTQ4IDE4LjkwNjcgMjMuNjQ0OEMxOS43NDY1IDIzLjEzNTggMjEuMDAyNyAyMi41IDIyLjIgMjIuNUgyM1YyMC41SDIyLjVDMjEuOTMwOSAyMC41IDIxLjE5MDkgMjAuNjk5MiAyMC41MjkyIDIwLjkzOThDMjAuMjEyIDIxLjA1NTIgMTkuOTM3IDIxLjE3MDkgMTkuNzQyMSAyMS4yNTc2QzE5LjY0NDkgMjEuMzAwNyAxOS41Njg1IDIxLjMzNjMgMTkuNTE3NiAyMS4zNjA1QzE5LjQ5MjIgMjEuMzcyNSAxOS40NzMyIDIxLjM4MTcgMTkuNDYxMyAyMS4zODc1TDE5LjQ0ODcgMjEuMzkzN0wxOS40NDcgMjEuMzk0NUMxOS40NDcgMjEuMzk0NSAxOS40NDcyIDIxLjM5NDQgMTkgMjAuNUMxOC41NTI4IDE5LjYwNTYgMTguNTUzMSAxOS42MDU0IDE4LjU1MzEgMTkuNjA1NEwxOC41NTY0IDE5LjYwMzhMMTguNTYyOSAxOS42MDA2TDE4LjU4NDQgMTkuNTlDMTguNjAyNSAxOS41ODEyIDE4LjYyNzkgMTkuNTY4OSAxOC42NjAxIDE5LjU1MzZDMTguNzI0NSAxOS41MjMxIDE4LjgxNiAxOS40ODA1IDE4LjkyOTggMTkuNDI5OUMxOS4xNTY3IDE5LjMyOTEgMTkuNDc1NSAxOS4xOTQ4IDE5Ljg0NTggMTkuMDYwMkMyMC41NTkxIDE4LjgwMDggMjEuNTY5MSAxOC41IDIyLjUgMTguNUgyM1YxN0gxMlpNMjUgMjQuNUgyNi4xQzI2Ljg0ODkgMjQuNSAyNy42MTg2IDI0Ljg2NjMgMjguMjYzMSAyNS4zMTg2QzI4LjU3MzUgMjUuNTM2NCAyOC44Mjg1IDI1Ljc1NTYgMjkuMDA0OCAyNS45MTk3QzI5LjA5MjUgMjYuMDAxMiAyOS4xNTk0IDI2LjA2NzkgMjkuMjAyNiAyNi4xMTIyQzI5LjIyNDEgMjYuMTM0MyAyOS4yMzk3IDI2LjE1MDcgMjkuMjQ4OCAyNi4xNjA1TDI5LjI1NzQgMjYuMTY5N0MyOS4yNTc0IDI2LjE2OTcgMjkuMjU2NyAyNi4xNjkgMzAgMjUuNUMzMC43NDMzIDI0LjgzMSAzMC43NDI5IDI0LjgzMDYgMzAuNzQyOSAyNC44MzA2TDMwLjc0MTQgMjQuODI5TDMwLjczODkgMjQuODI2MkwzMC43MzE4IDI0LjgxODRMMzAuNzA5NyAyNC43OTQ2QzMwLjY5MTUgMjQuNzc1MSAzMC42NjYzIDI0Ljc0ODUgMzAuNjM0NiAyNC43MTZDMzAuNTcxMSAyNC42NTA5IDMwLjQ4MDkgMjQuNTYxMyAzMC4zNjcgMjQuNDU1M0MzMC4xNDAzIDI0LjI0NDQgMjkuODE0IDIzLjk2MzYgMjkuNDExOSAyMy42ODE0QzI4LjYzMTQgMjMuMTMzNyAyNy40NTExIDIyLjUgMjYuMSAyMi41SDI1VjIwLjVIMjUuNzVDMjYuNDQ0MyAyMC41IDI3LjExOTMgMjAuNzAxMSAyNy42NDMyIDIwLjkyMTZDMjcuOTAwMyAyMS4wMjk5IDI4LjEwOTIgMjEuMTM3OCAyOC4yNTA5IDIxLjIxNjlDMjguMzIxNSAyMS4yNTY0IDI4LjM3NDcgMjEuMjg4MiAyOC40MDggMjEuMzA4N0MyOC40MjQ3IDIxLjMxODkgMjguNDM2MyAyMS4zMjYzIDI4LjQ0MjcgMjEuMzMwNEwyOC40NDU3IDIxLjMzMjNDMjguNDQ1NyAyMS4zMzIzIDI4LjQ0NTMgMjEuMzMyMSAyOSAyMC41QzI5LjU1NDcgMTkuNjY3OSAyOS41NTQyIDE5LjY2NzYgMjkuNTU0MiAxOS42Njc2TDI5LjU1MjcgMTkuNjY2NkwyOS41NTAxIDE5LjY2NDlMMjkuNTQzMiAxOS42NjA0TDI5LjUyMjggMTkuNjQ3MkMyOS41MDYzIDE5LjYzNjYgMjkuNDg0IDE5LjYyMjUgMjkuNDU2MiAxOS42MDU0QzI5LjQwMDcgMTkuNTcxMiAyOS4zMjMgMTkuNTI0OSAyOS4yMjU2IDE5LjQ3MDZDMjkuMDMxNSAxOS4zNjIyIDI4Ljc1NTkgMTkuMjIwMSAyOC40MTkzIDE5LjA3ODRDMjcuNzU1NyAxOC43OTg5IDI2LjgwNTcgMTguNSAyNS43NSAxOC41SDI1VjE3SDM2VjMwSDI4LjVDMjguNSAyOS40Mzc5IDI4LjIzMjQgMjguOTQ1MiAyNy45NjQxIDI4LjU4NzVDMjcuNjgwMyAyOC4yMDkyIDI3LjMwNTQgMjcuODYwNiAyNi45MDA3IDI3LjU2NjNDMjYuMzY3NSAyNy4xNzg1IDI1LjY5ODkgMjYuODI1NyAyNSAyNi42MzkxVjI0LjVaTTI2LjQ5MjkgMzBDMjYuNDc5NyAyOS45NjcgMjYuNDQ1NyAyOS44OTY0IDI2LjM2NDEgMjkuNzg3NUMyNi4yMjU5IDI5LjYwMzMgMjYuMDA3MSAyOS4zODk0IDI1LjcyNDMgMjkuMTgzN0MyNS4xNDc4IDI4Ljc2NDUgMjQuNDkzNyAyOC41MTE3IDI0LjAzMiAyOC41MDA0QzIzLjQ4NzcgMjguNTQ2NCAyMi44MDUyIDI4LjgyNTIgMjIuMjQ0OSAyOS4yMjdDMjEuOTY1NyAyOS40MjcyIDIxLjc1NTYgMjkuNjMwNyAyMS42MjUyIDI5LjgwMzhDMjEuNTQ5NiAyOS45MDQzIDIxLjUxODQgMjkuOTY5NCAyMS41MDYzIDMwSDI2LjQ5MjlaIiBmaWxsPSIjYjQ1MzA5Ii8+Cjwvc3ZnPgo=", + "created": 1700000000000 + } + } +} \ No newline at end of file diff --git a/knowledge/drafts/three-axes.svg b/knowledge/drafts/three-axes.svg new file mode 100644 index 0000000..edf09f0 --- /dev/null +++ b/knowledge/drafts/three-axes.svg @@ -0,0 +1,2 @@ +Finding/diagnosisdefinitionsWHAT was foundlayered over: finding models· ACR/RSNA CDEsAnatomic locationsWHERE it islayered over: RadLexExam typesHOW it was seenlayered over: LOINC/RSNAPlaybookrelationshipsrelationshipseach a curated layer over an existing standard; the axes relate to each other and cite external references \ No newline at end of file diff --git a/knowledge/drafts/two-planes.excalidraw b/knowledge/drafts/two-planes.excalidraw new file mode 100644 index 0000000..ba60621 --- /dev/null +++ b/knowledge/drafts/two-planes.excalidraw @@ -0,0 +1,2230 @@ +{ + "type": "excalidraw", + "version": 2, + "source": "oidm-knowledge/tools/diagrams", + "elements": [ + { + "type": "line", + "id": "plane_patient", + "x": 55, + "y": 0, + "width": 885, + "height": 185, + "strokeColor": "#0f766e", + "backgroundColor": "#ccfbf1", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1001, + "version": 1, + "versionNonce": 1002, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "points": [ + [ + 0, + 0 + ], + [ + 830, + 0 + ], + [ + 775, + 185 + ], + [ + -55, + 185 + ], + [ + 0, + 0 + ] + ], + "roundness": null + }, + { + "type": "line", + "id": "plane_foundation", + "x": 55, + "y": 300, + "width": 885, + "height": 305, + "strokeColor": "#b45309", + "backgroundColor": "#fef3c7", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1003, + "version": 1, + "versionNonce": 1004, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "points": [ + [ + 0, + 0 + ], + [ + 830, + 0 + ], + [ + 775, + 305 + ], + [ + -55, + 305 + ], + [ + 0, + 0 + ] + ], + "roundness": null + }, + { + "type": "image", + "id": "hicon1", + "x": 67, + "y": 14.0, + "width": 28, + "height": 28, + "strokeColor": "transparent", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1005, + "version": 1, + "versionNonce": 1006, + "isDeleted": false, + "groupIds": [], + "boundElements": [], + "link": null, + "locked": false, + "fileId": "img_hicon1", + "status": "saved", + "scale": [ + 1, + 1 + ], + "roundness": null, + "crop": null + }, + { + "type": "text", + "id": "htitle2", + "x": 107, + "y": 12, + "width": 174.0, + "height": 25.0, + "strokeColor": "#134e4a", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1007, + "version": 1, + "versionNonce": 1008, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "Patient Context", + "originalText": "Patient Context", + "fontSize": 20, + "fontFamily": 2, + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 + }, + { + "type": "text", + "id": "hsub3", + "x": 107, + "y": 38, + "width": 180.95999999999998, + "height": 16.25, + "strokeColor": "#0f766e", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1009, + "version": 1, + "versionNonce": 1010, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "this patient \u00b7 this exam", + "originalText": "this patient \u00b7 this exam", + "fontSize": 13, + "fontFamily": 2, + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 + }, + { + "type": "image", + "id": "hicon4", + "x": 68, + "y": 316.0, + "width": 28, + "height": 28, + "strokeColor": "transparent", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1011, + "version": 1, + "versionNonce": 1012, + "isDeleted": false, + "groupIds": [], + "boundElements": [], + "link": null, + "locked": false, + "fileId": "img_hicon4", + "status": "saved", + "scale": [ + 1, + 1 + ], + "roundness": null, + "crop": null + }, + { + "type": "text", + "id": "htitle5", + "x": 108, + "y": 314, + "width": 208.79999999999998, + "height": 25.0, + "strokeColor": "#78350f", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1013, + "version": 1, + "versionNonce": 1014, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "Foundation Context", + "originalText": "Foundation Context", + "fontSize": 20, + "fontFamily": 2, + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 + }, + { + "type": "text", + "id": "hsub6", + "x": 108, + "y": 340, + "width": 188.5, + "height": 16.25, + "strokeColor": "#b45309", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1015, + "version": 1, + "versionNonce": 1016, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "shared, curated knowledge", + "originalText": "shared, curated knowledge", + "fontSize": 13, + "fontFamily": 2, + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 + }, + { + "type": "rectangle", + "id": "exam", + "x": 170, + "y": 76, + "width": 210, + "height": 66, + "strokeColor": "#0f766e", + "backgroundColor": "#99f6e4", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1017, + "version": 1, + "versionNonce": 1018, + "isDeleted": false, + "groupIds": [], + "boundElements": [], + "link": null, + "locked": false, + "roundness": { + "type": 3 + } + }, + { + "type": "image", + "id": "ni7", + "x": 182.0, + "y": 95.0, + "width": 28, + "height": 28, + "strokeColor": "transparent", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1019, + "version": 1, + "versionNonce": 1020, + "isDeleted": false, + "groupIds": [], + "boundElements": [], + "link": null, + "locked": false, + "fileId": "img_ni7", + "status": "saved", + "scale": [ + 1, + 1 + ], + "roundness": null, + "crop": null + }, + { + "type": "text", + "id": "nt8", + "x": 220, + "y": 89.875, + "width": 150, + "height": 20.0, + "strokeColor": "#134e4a", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1021, + "version": 1, + "versionNonce": 1022, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "CT chest", + "originalText": "CT chest", + "fontSize": 16, + "fontFamily": 2, + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 + }, + { + "type": "text", + "id": "ns9", + "x": 220, + "y": 111.875, + "width": 150, + "height": 16.25, + "strokeColor": "#0f766e", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1023, + "version": 1, + "versionNonce": 1024, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "this patient \u00b7 2026-03-04", + "originalText": "this patient \u00b7 2026-03-04", + "fontSize": 13, + "fontFamily": 2, + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 + }, + { + "type": "rectangle", + "id": "finding", + "x": 500, + "y": 100, + "width": 196, + "height": 66, + "strokeColor": "#0f766e", + "backgroundColor": "#99f6e4", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1025, + "version": 1, + "versionNonce": 1026, + "isDeleted": false, + "groupIds": [], + "boundElements": [], + "link": null, + "locked": false, + "roundness": { + "type": 3 + } + }, + { + "type": "image", + "id": "ni10", + "x": 512.0, + "y": 119.0, + "width": 28, + "height": 28, + "strokeColor": "transparent", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1027, + "version": 1, + "versionNonce": 1028, + "isDeleted": false, + "groupIds": [], + "boundElements": [], + "link": null, + "locked": false, + "fileId": "img_ni10", + "status": "saved", + "scale": [ + 1, + 1 + ], + "roundness": null, + "crop": null + }, + { + "type": "text", + "id": "nt11", + "x": 550, + "y": 113.875, + "width": 136, + "height": 20.0, + "strokeColor": "#134e4a", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1029, + "version": 1, + "versionNonce": 1030, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "pulmonary nodule", + "originalText": "pulmonary nodule", + "fontSize": 16, + "fontFamily": 2, + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 + }, + { + "type": "text", + "id": "ns12", + "x": 550, + "y": 135.875, + "width": 136, + "height": 16.25, + "strokeColor": "#0f766e", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1031, + "version": 1, + "versionNonce": 1032, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "present \u00b7 8 mm \u00b7 new", + "originalText": "present \u00b7 8 mm \u00b7 new", + "fontSize": 13, + "fontFamily": 2, + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 + }, + { + "type": "arrow", + "id": "e_found_on", + "x": 500, + "y": 133, + "width": -114, + "height": -22, + "strokeColor": "#0f766e", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1033, + "version": 1, + "versionNonce": 1034, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "points": [ + [ + 0, + 0 + ], + [ + -114, + -22 + ] + ], + "startBinding": null, + "endBinding": null, + "startArrowhead": null, + "endArrowhead": "arrow" + }, + { + "type": "rectangle", + "id": "l_found_on", + "x": 428.7, + "y": 88.875, + "width": 62.6, + "height": 22.25, + "strokeColor": "transparent", + "backgroundColor": "#ccfbf1", + "fillStyle": "solid", + "strokeWidth": 0, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1035, + "version": 1, + "versionNonce": 1036, + "isDeleted": false, + "groupIds": [], + "boundElements": [], + "link": null, + "locked": false, + "roundness": { + "type": 3 + } + }, + { + "type": "text", + "id": "l_found_on_t", + "x": 434.7, + "y": 91.875, + "width": 50.6, + "height": 16.25, + "strokeColor": "#0f766e", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1037, + "version": 1, + "versionNonce": 1038, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "found on", + "originalText": "found on", + "fontSize": 13, + "fontFamily": 2, + "textAlign": "center", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 + }, + { + "type": "rectangle", + "id": "exam_type", + "x": 215, + "y": 372, + "width": 190, + "height": 97, + "strokeColor": "#b45309", + "backgroundColor": "#fde68a", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1039, + "version": 1, + "versionNonce": 1040, + "isDeleted": false, + "groupIds": [], + "boundElements": [], + "link": null, + "locked": false, + "roundness": { + "type": 3 + } + }, + { + "type": "image", + "id": "ni13", + "x": 294.0, + "y": 383.0, + "width": 32, + "height": 32, + "strokeColor": "transparent", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1041, + "version": 1, + "versionNonce": 1042, + "isDeleted": false, + "groupIds": [], + "boundElements": [], + "link": null, + "locked": false, + "fileId": "img_ni13", + "status": "saved", + "scale": [ + 1, + 1 + ], + "roundness": null, + "crop": null + }, + { + "type": "text", + "id": "nt14", + "x": 223, + "y": 419.0, + "width": 174, + "height": 18.75, + "strokeColor": "#78350f", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1043, + "version": 1, + "versionNonce": 1044, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "CT Chest W contrast IV", + "originalText": "CT Chest W contrast IV", + "fontSize": 15, + "fontFamily": 2, + "textAlign": "center", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 + }, + { + "type": "text", + "id": "nd15", + "x": 223, + "y": 439.75, + "width": 174, + "height": 16.25, + "strokeColor": "#b45309", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1045, + "version": 1, + "versionNonce": 1046, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "exam type", + "originalText": "exam type", + "fontSize": 13, + "fontFamily": 2, + "textAlign": "center", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 + }, + { + "type": "rectangle", + "id": "definition", + "x": 450, + "y": 372, + "width": 190, + "height": 97, + "strokeColor": "#b45309", + "backgroundColor": "#fde68a", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1047, + "version": 1, + "versionNonce": 1048, + "isDeleted": false, + "groupIds": [], + "boundElements": [], + "link": null, + "locked": false, + "roundness": { + "type": 3 + } + }, + { + "type": "image", + "id": "ni16", + "x": 531.0, + "y": 385.0, + "width": 28, + "height": 28, + "strokeColor": "transparent", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1049, + "version": 1, + "versionNonce": 1050, + "isDeleted": false, + "groupIds": [], + "boundElements": [], + "link": null, + "locked": false, + "fileId": "img_ni16", + "status": "saved", + "scale": [ + 1, + 1 + ], + "roundness": null, + "crop": null + }, + { + "type": "text", + "id": "nt17", + "x": 458, + "y": 419.0, + "width": 174, + "height": 18.75, + "strokeColor": "#78350f", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1051, + "version": 1, + "versionNonce": 1052, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "pulmonary nodule", + "originalText": "pulmonary nodule", + "fontSize": 15, + "fontFamily": 2, + "textAlign": "center", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 + }, + { + "type": "text", + "id": "nd18", + "x": 458, + "y": 439.75, + "width": 174, + "height": 16.25, + "strokeColor": "#b45309", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1053, + "version": 1, + "versionNonce": 1054, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "finding/diagnosis definition", + "originalText": "finding/diagnosis definition", + "fontSize": 13, + "fontFamily": 2, + "textAlign": "center", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 + }, + { + "type": "rectangle", + "id": "thorax", + "x": 215, + "y": 515, + "width": 130, + "height": 62, + "strokeColor": "#b45309", + "backgroundColor": "#fde68a", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1055, + "version": 1, + "versionNonce": 1056, + "isDeleted": false, + "groupIds": [], + "boundElements": [], + "link": null, + "locked": false, + "roundness": { + "type": 3 + } + }, + { + "type": "text", + "id": "nt19", + "x": 223, + "y": 527.5, + "width": 114, + "height": 18.75, + "strokeColor": "#78350f", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1057, + "version": 1, + "versionNonce": 1058, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "thorax", + "originalText": "thorax", + "fontSize": 15, + "fontFamily": 2, + "textAlign": "center", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 + }, + { + "type": "text", + "id": "nd20", + "x": 223, + "y": 548.25, + "width": 114, + "height": 16.25, + "strokeColor": "#b45309", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1059, + "version": 1, + "versionNonce": 1060, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "anatomic location", + "originalText": "anatomic location", + "fontSize": 13, + "fontFamily": 2, + "textAlign": "center", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 + }, + { + "type": "rectangle", + "id": "lung", + "x": 427, + "y": 515, + "width": 110, + "height": 62, + "strokeColor": "#b45309", + "backgroundColor": "#fde68a", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1061, + "version": 1, + "versionNonce": 1062, + "isDeleted": false, + "groupIds": [], + "boundElements": [], + "link": null, + "locked": false, + "roundness": { + "type": 3 + } + }, + { + "type": "image", + "id": "ni21", + "x": 446.8, + "y": 530.0, + "width": 32, + "height": 32, + "strokeColor": "transparent", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1063, + "version": 1, + "versionNonce": 1064, + "isDeleted": false, + "groupIds": [], + "boundElements": [], + "link": null, + "locked": false, + "fileId": "img_ni21", + "status": "saved", + "scale": [ + 1, + 1 + ], + "roundness": null, + "crop": null + }, + { + "type": "text", + "id": "nt22", + "x": 488.8, + "y": 536.625, + "width": 28.4, + "height": 18.75, + "strokeColor": "#78350f", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1065, + "version": 1, + "versionNonce": 1066, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "lung", + "originalText": "lung", + "fontSize": 15, + "fontFamily": 2, + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 + }, + { + "type": "rectangle", + "id": "upper_lobe", + "x": 619, + "y": 515, + "width": 185, + "height": 62, + "strokeColor": "#b45309", + "backgroundColor": "#fde68a", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1067, + "version": 1, + "versionNonce": 1068, + "isDeleted": false, + "groupIds": [], + "boundElements": [], + "link": null, + "locked": false, + "roundness": { + "type": 3 + } + }, + { + "type": "text", + "id": "nt23", + "x": 627, + "y": 536.625, + "width": 169, + "height": 18.75, + "strokeColor": "#78350f", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1069, + "version": 1, + "versionNonce": 1070, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "upper lobe of right lung", + "originalText": "upper lobe of right lung", + "fontSize": 15, + "fontFamily": 2, + "textAlign": "center", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 + }, + { + "type": "arrow", + "id": "r_contains1", + "x": 345, + "y": 546.0, + "width": 82, + "height": 0.0, + "strokeColor": "#78716c", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1071, + "version": 1, + "versionNonce": 1072, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "points": [ + [ + 0, + 0.0 + ], + [ + 82, + 0.0 + ] + ], + "startBinding": null, + "endBinding": null, + "startArrowhead": null, + "endArrowhead": "arrow" + }, + { + "type": "rectangle", + "id": "l_contains1", + "x": 355.8, + "y": 534.875, + "width": 60.4, + "height": 22.25, + "strokeColor": "transparent", + "backgroundColor": "#fef3c7", + "fillStyle": "solid", + "strokeWidth": 0, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1073, + "version": 1, + "versionNonce": 1074, + "isDeleted": false, + "groupIds": [], + "boundElements": [], + "link": null, + "locked": false, + "roundness": { + "type": 3 + } + }, + { + "type": "text", + "id": "l_contains1_t", + "x": 361.8, + "y": 537.875, + "width": 48.4, + "height": 16.25, + "strokeColor": "#78716c", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1075, + "version": 1, + "versionNonce": 1076, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "contains", + "originalText": "contains", + "fontSize": 13, + "fontFamily": 2, + "textAlign": "center", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 + }, + { + "type": "arrow", + "id": "r_contains2", + "x": 537, + "y": 546.0, + "width": 82, + "height": 0.0, + "strokeColor": "#78716c", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1077, + "version": 1, + "versionNonce": 1078, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "points": [ + [ + 0, + 0.0 + ], + [ + 82, + 0.0 + ] + ], + "startBinding": null, + "endBinding": null, + "startArrowhead": null, + "endArrowhead": "arrow" + }, + { + "type": "rectangle", + "id": "l_contains2", + "x": 547.8, + "y": 534.875, + "width": 60.4, + "height": 22.25, + "strokeColor": "transparent", + "backgroundColor": "#fef3c7", + "fillStyle": "solid", + "strokeWidth": 0, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1079, + "version": 1, + "versionNonce": 1080, + "isDeleted": false, + "groupIds": [], + "boundElements": [], + "link": null, + "locked": false, + "roundness": { + "type": 3 + } + }, + { + "type": "text", + "id": "l_contains2_t", + "x": 553.8, + "y": 537.875, + "width": 48.4, + "height": 16.25, + "strokeColor": "#78716c", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1081, + "version": 1, + "versionNonce": 1082, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "contains", + "originalText": "contains", + "fontSize": 13, + "fontFamily": 2, + "textAlign": "center", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 + }, + { + "type": "arrow", + "id": "r_covers", + "x": 280, + "y": 469, + "width": 0, + "height": 43, + "strokeColor": "#78716c", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1083, + "version": 1, + "versionNonce": 1084, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "points": [ + [ + 0, + 0 + ], + [ + 0, + 43 + ] + ], + "startBinding": null, + "endBinding": null, + "startArrowhead": null, + "endArrowhead": "arrow" + }, + { + "type": "rectangle", + "id": "l_covers", + "x": 294.85, + "y": 480.875, + "width": 50.3, + "height": 22.25, + "strokeColor": "transparent", + "backgroundColor": "#fef3c7", + "fillStyle": "solid", + "strokeWidth": 0, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1085, + "version": 1, + "versionNonce": 1086, + "isDeleted": false, + "groupIds": [], + "boundElements": [], + "link": null, + "locked": false, + "roundness": { + "type": 3 + } + }, + { + "type": "text", + "id": "l_covers_t", + "x": 300.85, + "y": 483.875, + "width": 38.3, + "height": 16.25, + "strokeColor": "#78716c", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1087, + "version": 1, + "versionNonce": 1088, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "covers", + "originalText": "covers", + "fontSize": 13, + "fontFamily": 2, + "textAlign": "center", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 + }, + { + "type": "arrow", + "id": "r_occurs", + "x": 500, + "y": 469, + "width": -18, + "height": 43, + "strokeColor": "#78716c", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1089, + "version": 1, + "versionNonce": 1090, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "points": [ + [ + 0, + 0 + ], + [ + -18, + 43 + ] + ], + "startBinding": null, + "endBinding": null, + "startArrowhead": null, + "endArrowhead": "arrow" + }, + { + "type": "rectangle", + "id": "l_occurs", + "x": 507.65, + "y": 480.875, + "width": 64.7, + "height": 22.25, + "strokeColor": "transparent", + "backgroundColor": "#fef3c7", + "fillStyle": "solid", + "strokeWidth": 0, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1091, + "version": 1, + "versionNonce": 1092, + "isDeleted": false, + "groupIds": [], + "boundElements": [], + "link": null, + "locked": false, + "roundness": { + "type": 3 + } + }, + { + "type": "text", + "id": "l_occurs_t", + "x": 513.65, + "y": 483.875, + "width": 52.7, + "height": 16.25, + "strokeColor": "#78716c", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1093, + "version": 1, + "versionNonce": 1094, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "occurs at", + "originalText": "occurs at", + "fontSize": 13, + "fontFamily": 2, + "textAlign": "center", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 + }, + { + "type": "ellipse", + "id": "g1", + "x": 92, + "y": 382, + "width": 26, + "height": 26, + "strokeColor": "#a8a29e", + "backgroundColor": "#e7e5e4", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 70, + "angle": 0, + "seed": 1095, + "version": 1, + "versionNonce": 1096, + "isDeleted": false, + "groupIds": [], + "boundElements": [], + "link": null, + "locked": false + }, + { + "type": "ellipse", + "id": "g2", + "x": 56, + "y": 427, + "width": 20, + "height": 20, + "strokeColor": "#a8a29e", + "backgroundColor": "#e7e5e4", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 70, + "angle": 0, + "seed": 1097, + "version": 1, + "versionNonce": 1098, + "isDeleted": false, + "groupIds": [], + "boundElements": [], + "link": null, + "locked": false + }, + { + "type": "ellipse", + "id": "g3", + "x": 117, + "y": 436, + "width": 22, + "height": 22, + "strokeColor": "#a8a29e", + "backgroundColor": "#e7e5e4", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 70, + "angle": 0, + "seed": 1099, + "version": 1, + "versionNonce": 1100, + "isDeleted": false, + "groupIds": [], + "boundElements": [], + "link": null, + "locked": false + }, + { + "type": "ellipse", + "id": "g4", + "x": 161, + "y": 503, + "width": 18, + "height": 18, + "strokeColor": "#a8a29e", + "backgroundColor": "#e7e5e4", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 70, + "angle": 0, + "seed": 1101, + "version": 1, + "versionNonce": 1102, + "isDeleted": false, + "groupIds": [], + "boundElements": [], + "link": null, + "locked": false + }, + { + "type": "ellipse", + "id": "g5", + "x": 794, + "y": 443, + "width": 24, + "height": 24, + "strokeColor": "#a8a29e", + "backgroundColor": "#e7e5e4", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 70, + "angle": 0, + "seed": 1103, + "version": 1, + "versionNonce": 1104, + "isDeleted": false, + "groupIds": [], + "boundElements": [], + "link": null, + "locked": false + }, + { + "type": "ellipse", + "id": "g6", + "x": 830, + "y": 409, + "width": 16, + "height": 16, + "strokeColor": "#a8a29e", + "backgroundColor": "#e7e5e4", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 70, + "angle": 0, + "seed": 1105, + "version": 1, + "versionNonce": 1106, + "isDeleted": false, + "groupIds": [], + "boundElements": [], + "link": null, + "locked": false + }, + { + "type": "line", + "id": "f24", + "x": 105, + "y": 395, + "width": -39, + "height": 42, + "strokeColor": "#a8a29e", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 60, + "angle": 0, + "seed": 1107, + "version": 1, + "versionNonce": 1108, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "points": [ + [ + 0, + 0 + ], + [ + -39, + 42 + ] + ] + }, + { + "type": "line", + "id": "f25", + "x": 105, + "y": 395, + "width": 23, + "height": 52, + "strokeColor": "#a8a29e", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 60, + "angle": 0, + "seed": 1109, + "version": 1, + "versionNonce": 1110, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "points": [ + [ + 0, + 0 + ], + [ + 23, + 52 + ] + ] + }, + { + "type": "line", + "id": "f26", + "x": 128, + "y": 447, + "width": 42, + "height": 65, + "strokeColor": "#a8a29e", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 60, + "angle": 0, + "seed": 1111, + "version": 1, + "versionNonce": 1112, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "points": [ + [ + 0, + 0 + ], + [ + 42, + 65 + ] + ] + }, + { + "type": "line", + "id": "f27", + "x": 118, + "y": 398, + "width": 97, + "height": 12, + "strokeColor": "#a8a29e", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 60, + "angle": 0, + "seed": 1113, + "version": 1, + "versionNonce": 1114, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "points": [ + [ + 0, + 0 + ], + [ + 97, + 12 + ] + ] + }, + { + "type": "line", + "id": "f28", + "x": 838, + "y": 417, + "width": -32, + "height": 38, + "strokeColor": "#a8a29e", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 60, + "angle": 0, + "seed": 1115, + "version": 1, + "versionNonce": 1116, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "points": [ + [ + 0, + 0 + ], + [ + -32, + 38 + ] + ] + }, + { + "type": "line", + "id": "f29", + "x": 798, + "y": 466, + "width": -20, + "height": 49, + "strokeColor": "#a8a29e", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 60, + "angle": 0, + "seed": 1117, + "version": 1, + "versionNonce": 1118, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "points": [ + [ + 0, + 0 + ], + [ + -20, + 49 + ] + ] + }, + { + "type": "arrow", + "id": "x_exam", + "x": 308, + "y": 142, + "width": 0, + "height": 227, + "strokeColor": "#be123c", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 3, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1119, + "version": 1, + "versionNonce": 1120, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "points": [ + [ + 0, + 0 + ], + [ + 0, + 227 + ] + ], + "startBinding": null, + "endBinding": null, + "startArrowhead": null, + "endArrowhead": "arrow" + }, + { + "type": "rectangle", + "id": "x_exam_l", + "x": 291.9, + "y": 228.875, + "width": 32.2, + "height": 22.25, + "strokeColor": "transparent", + "backgroundColor": "#ffffff", + "fillStyle": "solid", + "strokeWidth": 0, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1121, + "version": 1, + "versionNonce": 1122, + "isDeleted": false, + "groupIds": [], + "boundElements": [], + "link": null, + "locked": false, + "roundness": { + "type": 3 + } + }, + { + "type": "text", + "id": "x_exam_l_t", + "x": 297.9, + "y": 231.875, + "width": 20.2, + "height": 16.25, + "strokeColor": "#881337", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1123, + "version": 1, + "versionNonce": 1124, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "is a", + "originalText": "is a", + "fontSize": 13, + "fontFamily": 2, + "textAlign": "center", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 + }, + { + "type": "arrow", + "id": "x_isa", + "x": 545, + "y": 166, + "width": 0, + "height": 203, + "strokeColor": "#be123c", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 3, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1125, + "version": 1, + "versionNonce": 1126, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "points": [ + [ + 0, + 0 + ], + [ + 0, + 203 + ] + ], + "startBinding": null, + "endBinding": null, + "startArrowhead": null, + "endArrowhead": "arrow" + }, + { + "type": "rectangle", + "id": "x_isa_l", + "x": 528.9, + "y": 228.875, + "width": 32.2, + "height": 22.25, + "strokeColor": "transparent", + "backgroundColor": "#ffffff", + "fillStyle": "solid", + "strokeWidth": 0, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1127, + "version": 1, + "versionNonce": 1128, + "isDeleted": false, + "groupIds": [], + "boundElements": [], + "link": null, + "locked": false, + "roundness": { + "type": 3 + } + }, + { + "type": "text", + "id": "x_isa_l_t", + "x": 534.9, + "y": 231.875, + "width": 20.2, + "height": 16.25, + "strokeColor": "#881337", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1129, + "version": 1, + "versionNonce": 1130, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "is a", + "originalText": "is a", + "fontSize": 13, + "fontFamily": 2, + "textAlign": "center", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 + }, + { + "type": "arrow", + "id": "x_located", + "x": 660, + "y": 166, + "width": 51, + "height": 345, + "strokeColor": "#be123c", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 3, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1131, + "version": 1, + "versionNonce": 1132, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "points": [ + [ + 0, + 0 + ], + [ + 51, + 345 + ] + ], + "startBinding": null, + "endBinding": null, + "startArrowhead": null, + "endArrowhead": "arrow" + }, + { + "type": "rectangle", + "id": "x_located_l", + "x": 636.8, + "y": 228.875, + "width": 68.4, + "height": 22.25, + "strokeColor": "transparent", + "backgroundColor": "#ffffff", + "fillStyle": "solid", + "strokeWidth": 0, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1133, + "version": 1, + "versionNonce": 1134, + "isDeleted": false, + "groupIds": [], + "boundElements": [], + "link": null, + "locked": false, + "roundness": { + "type": 3 + } + }, + { + "type": "text", + "id": "x_located_l_t", + "x": 642.8, + "y": 231.875, + "width": 56.4, + "height": 16.25, + "strokeColor": "#881337", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1135, + "version": 1, + "versionNonce": 1136, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "located at", + "originalText": "located at", + "fontSize": 13, + "fontFamily": 2, + "textAlign": "center", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 + }, + { + "type": "text", + "id": "caption", + "x": 0, + "y": 631, + "width": 885, + "height": 17.5, + "strokeColor": "#64748b", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1137, + "version": 1, + "versionNonce": 1138, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "every fact about this patient is attached to the shared knowledge of what such a thing is", + "originalText": "every fact about this patient is attached to the shared knowledge of what such a thing is", + "fontSize": 14, + "fontFamily": 2, + "textAlign": "center", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 + } + ], + "appState": { + "viewBackgroundColor": "#ffffff", + "gridSize": null + }, + "files": { + "img_hicon1": { + "mimeType": "image/svg+xml", + "id": "img_hicon1", + "dataURL": "data:image/svg+xml;base64,PHN2ZwogIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIKICB3aWR0aD0iMjQiCiAgaGVpZ2h0PSIyNCIKICB2aWV3Qm94PSIwIDAgMjQgMjQiCiAgZmlsbD0ibm9uZSIKICBzdHJva2U9IiMwZjc2NmUiCiAgc3Ryb2tlLXdpZHRoPSIyIgogIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIKICBzdHJva2UtbGluZWpvaW49InJvdW5kIgo+CiAgPHBhdGggZD0iTTEyLjgzIDIuMThhMiAyIDAgMCAwLTEuNjYgMEwyLjYgNi4wOGExIDEgMCAwIDAgMCAxLjgzbDguNTggMy45MWEyIDIgMCAwIDAgMS42NiAwbDguNTgtMy45YTEgMSAwIDAgMCAwLTEuODN6IiAvPgogIDxwYXRoIGQ9Ik0yIDEyYTEgMSAwIDAgMCAuNTguOTFsOC42IDMuOTFhMiAyIDAgMCAwIDEuNjUgMGw4LjU4LTMuOUExIDEgMCAwIDAgMjIgMTIiIC8+CiAgPHBhdGggZD0iTTIgMTdhMSAxIDAgMCAwIC41OC45MWw4LjYgMy45MWEyIDIgMCAwIDAgMS42NSAwbDguNTgtMy45QTEgMSAwIDAgMCAyMiAxNyIgLz4KPC9zdmc+Cg==", + "created": 1700000000000 + }, + "img_hicon4": { + "mimeType": "image/svg+xml", + "id": "img_hicon4", + "dataURL": "data:image/svg+xml;base64,PHN2ZwogIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIKICB3aWR0aD0iMjQiCiAgaGVpZ2h0PSIyNCIKICB2aWV3Qm94PSIwIDAgMjQgMjQiCiAgZmlsbD0ibm9uZSIKICBzdHJva2U9IiNiNDUzMDkiCiAgc3Ryb2tlLXdpZHRoPSIyIgogIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIKICBzdHJva2UtbGluZWpvaW49InJvdW5kIgo+CiAgPHBhdGggZD0iTTEyIDV2MTYiIC8+CiAgPHBhdGggZD0iTTIwLjAwMSAxOUEyIDIgMCAwMDIyIDE3VjVhMiAyIDAgMDAtMS45OTktMkwxNiAzLjAwMkE1IDUgMCAwMDEyIDVhNSA1IDAgMDAtNC0ySDRhMiAyIDAgMDAtMiAydjEyYTIgMiAwIDAwMS45OTkgMkg4YTUgNSAwIDAxNCAyIDUgNSAwIDAxNC0yeiIgLz4KPC9zdmc+Cg==", + "created": 1700000000000 + }, + "img_ni7": { + "mimeType": "image/svg+xml", + "id": "img_ni7", + "dataURL": "data:image/svg+xml;base64,PHN2ZwogIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIKICB3aWR0aD0iMjQiCiAgaGVpZ2h0PSIyNCIKICB2aWV3Qm94PSIwIDAgMjQgMjQiCiAgZmlsbD0ibm9uZSIKICBzdHJva2U9IiMwZjc2NmUiCiAgc3Ryb2tlLXdpZHRoPSIyIgogIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIKICBzdHJva2UtbGluZWpvaW49InJvdW5kIgo+CiAgPHJlY3Qgd2lkdGg9IjgiIGhlaWdodD0iNCIgeD0iOCIgeT0iMiIgcng9IjEiIHJ5PSIxIiAvPgogIDxwYXRoIGQ9Ik0xNiA0aDJhMiAyIDAgMCAxIDIgMnYxNGEyIDIgMCAwIDEtMiAySDZhMiAyIDAgMCAxLTItMlY2YTIgMiAwIDAgMSAyLTJoMiIgLz4KICA8cGF0aCBkPSJNMTIgMTFoNCIgLz4KICA8cGF0aCBkPSJNMTIgMTZoNCIgLz4KICA8cGF0aCBkPSJNOCAxMWguMDEiIC8+CiAgPHBhdGggZD0iTTggMTZoLjAxIiAvPgo8L3N2Zz4K", + "created": 1700000000000 + }, + "img_ni10": { + "mimeType": "image/svg+xml", + "id": "img_ni10", + "dataURL": "data:image/svg+xml;base64,PHN2ZwogIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIKICB3aWR0aD0iMjQiCiAgaGVpZ2h0PSIyNCIKICB2aWV3Qm94PSIwIDAgMjQgMjQiCiAgZmlsbD0ibm9uZSIKICBzdHJva2U9IiMwZjc2NmUiCiAgc3Ryb2tlLXdpZHRoPSIyIgogIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIKICBzdHJva2UtbGluZWpvaW49InJvdW5kIgo+CiAgPHJlY3Qgd2lkdGg9IjgiIGhlaWdodD0iNCIgeD0iOCIgeT0iMiIgcng9IjEiIHJ5PSIxIiAvPgogIDxwYXRoIGQ9Ik0xNiA0aDJhMiAyIDAgMCAxIDIgMnYxNGEyIDIgMCAwIDEtMiAySDZhMiAyIDAgMCAxLTItMlY2YTIgMiAwIDAgMSAyLTJoMiIgLz4KPC9zdmc+Cg==", + "created": 1700000000000 + }, + "img_ni13": { + "mimeType": "image/svg+xml", + "id": "img_ni13", + "dataURL": "data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNDgiIGhlaWdodD0iNDgiIHZpZXdCb3g9IjAgMCA0OCA0OCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0yOSA5QzI5IDExLjc2MTQgMjYuNzYxNCAxNCAyNCAxNEMyMS4yMzg2IDE0IDE5IDExLjc2MTQgMTkgOUMxOSA2LjIzODU4IDIxLjIzODYgNCAyNCA0QzI2Ljc2MTQgNCAyOSA2LjIzODU4IDI5IDlaTTI3IDlDMjcgMTAuNjU2OSAyNS42NTY5IDEyIDI0IDEyQzIyLjM0MzEgMTIgMjEgMTAuNjU2OSAyMSA5QzIxIDcuMzQzMTUgMjIuMzQzMSA2IDI0IDZDMjUuNjU2OSA2IDI3IDcuMzQzMTUgMjcgOVoiIGZpbGw9IiNiNDUzMDkiLz4KPHBhdGggZD0iTTE2Ljk5OTggNDFWMzRIMTguOTk5OFY0MUMxOC45OTk4IDQxLjU1MjMgMTkuNDQ3NSA0MiAxOS45OTk4IDQySDIwLjA4NjVDMjAuNjAzNyA0MiAyMS4wMzU2IDQxLjYwNTYgMjEuMDgyNCA0MS4wOTA1TDIxLjcyNyAzNEgyMy43MzUzTDIzLjA3NDIgNDEuMjcxNkMyMy4wNjkgNDEuMzI4OCAyMy4wNjIyIDQxLjM4NTYgMjMuMDUzOSA0MS40NDE3QzIzLjAzNTcgNDEuNTY0NyAyMy4wMTAxIDQxLjY4NTEgMjIuOTc3NiA0MS44MDI1QzIyLjYyNDIgNDMuMDc5OCAyMS40NTQ5IDQ0IDIwLjA4NjUgNDRIMTkuOTk5OEMxOC4zNDI5IDQ0IDE2Ljk5OTggNDIuNjU2OSAxNi45OTk4IDQxWiIgZmlsbD0iI2I0NTMwOSIvPgo8cGF0aCBkPSJNMjYuOTE3MSA0MS4wOTA1TDI2LjI3MjUgMzRIMjQuMjY0MkwyNC45MjUzIDQxLjI3MTZDMjQuOTMwNSA0MS4zMjg4IDI0LjkzNzMgNDEuMzg1NiAyNC45NDU2IDQxLjQ0MTdDMjQuOTYzOCA0MS41NjQ3IDI0Ljk4OTQgNDEuNjg1MSAyNS4wMjE5IDQxLjgwMjVDMjUuMzc1MyA0My4wNzk4IDI2LjU0NDYgNDQgMjcuOTEzIDQ0SDI3Ljk5OThDMjkuNjU2NiA0NCAzMC45OTk4IDQyLjY1NjkgMzAuOTk5OCA0MVYzNEgyOC45OTk4VjQxQzI4Ljk5OTggNDEuNTUyMyAyOC41NTIgNDIgMjcuOTk5OCA0MkgyNy45MTNDMjcuMzk1OCA0MiAyNi45NjM5IDQxLjYwNTYgMjYuOTE3MSA0MS4wOTA1WiIgZmlsbD0iI2I0NTMwOSIvPgo8cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGNsaXAtcnVsZT0iZXZlbm9kZCIgZD0iTTExIDE1QzEwLjQ0NzcgMTUgMTAgMTUuNDQ3NyAxMCAxNlYzMUMxMCAzMS41NTIzIDEwLjQ0NzcgMzIgMTEgMzJIMzdDMzcuNTUyMyAzMiAzOCAzMS41NTIzIDM4IDMxVjE2QzM4IDE1LjQ0NzcgMzcuNTUyMyAxNSAzNyAxNUgxMVpNMTIgMTdWMzBIMTkuNUMxOS41IDI5LjQ0MjQgMTkuNzU5MSAyOC45NTcyIDIwLjAyNzYgMjguNjAwNkMyMC4zMDg2IDI4LjIyNzYgMjAuNjc5NiAyNy44ODgzIDIxLjA3OTQgMjcuNjAxNkMyMS42MjUyIDI3LjIxMDMgMjIuMjk4NiAyNi44NjUgMjMgMjYuNjY3OFYyNC41SDIyLjJDMjEuNTk3MyAyNC41IDIwLjc1MzUgMjQuODY0MiAxOS45NDMzIDI1LjM1NTJDMTkuNTYzOCAyNS41ODUyIDE5LjIzMzcgMjUuODE2NyAxOC45OTg0IDI1Ljk5MTFDMTguODgxMiAyNi4wNzc4IDE4Ljc4ODggMjYuMTQ5NSAxOC43MjcgMjYuMTk4NEMxOC42OTYxIDI2LjIyMjggMTguNjczIDI2LjI0MTUgMTguNjU4MiAyNi4yNTM1TDE4LjY0MjYgMjYuMjY2M0wxOC42Mzk5IDI2LjI2ODRDMTguNjM5OSAyNi4yNjg0IDE4LjY0MDIgMjYuMjY4MiAxOCAyNS41QzE3LjM1OTggMjQuNzMxOCAxNy4zNjAxIDI0LjczMTUgMTcuMzYwMSAyNC43MzE1TDE3LjM2MTQgMjQuNzMwNUwxNy4zNjM4IDI0LjcyODVMMTcuMzcxMyAyNC43MjIzTDE3LjM5NjYgMjQuNzAxNkMxNy40MTc5IDI0LjY4NDMgMTcuNDQ4IDI0LjY2IDE3LjQ4NjMgMjQuNjI5N0MxNy41NjI3IDI0LjU2OTMgMTcuNjcxOSAyNC40ODQ3IDE3LjgwNzkgMjQuMzgzOUMxOC4wNzg4IDI0LjE4MzMgMTguNDYxMiAyMy45MTQ4IDE4LjkwNjcgMjMuNjQ0OEMxOS43NDY1IDIzLjEzNTggMjEuMDAyNyAyMi41IDIyLjIgMjIuNUgyM1YyMC41SDIyLjVDMjEuOTMwOSAyMC41IDIxLjE5MDkgMjAuNjk5MiAyMC41MjkyIDIwLjkzOThDMjAuMjEyIDIxLjA1NTIgMTkuOTM3IDIxLjE3MDkgMTkuNzQyMSAyMS4yNTc2QzE5LjY0NDkgMjEuMzAwNyAxOS41Njg1IDIxLjMzNjMgMTkuNTE3NiAyMS4zNjA1QzE5LjQ5MjIgMjEuMzcyNSAxOS40NzMyIDIxLjM4MTcgMTkuNDYxMyAyMS4zODc1TDE5LjQ0ODcgMjEuMzkzN0wxOS40NDcgMjEuMzk0NUMxOS40NDcgMjEuMzk0NSAxOS40NDcyIDIxLjM5NDQgMTkgMjAuNUMxOC41NTI4IDE5LjYwNTYgMTguNTUzMSAxOS42MDU0IDE4LjU1MzEgMTkuNjA1NEwxOC41NTY0IDE5LjYwMzhMMTguNTYyOSAxOS42MDA2TDE4LjU4NDQgMTkuNTlDMTguNjAyNSAxOS41ODEyIDE4LjYyNzkgMTkuNTY4OSAxOC42NjAxIDE5LjU1MzZDMTguNzI0NSAxOS41MjMxIDE4LjgxNiAxOS40ODA1IDE4LjkyOTggMTkuNDI5OUMxOS4xNTY3IDE5LjMyOTEgMTkuNDc1NSAxOS4xOTQ4IDE5Ljg0NTggMTkuMDYwMkMyMC41NTkxIDE4LjgwMDggMjEuNTY5MSAxOC41IDIyLjUgMTguNUgyM1YxN0gxMlpNMjUgMjQuNUgyNi4xQzI2Ljg0ODkgMjQuNSAyNy42MTg2IDI0Ljg2NjMgMjguMjYzMSAyNS4zMTg2QzI4LjU3MzUgMjUuNTM2NCAyOC44Mjg1IDI1Ljc1NTYgMjkuMDA0OCAyNS45MTk3QzI5LjA5MjUgMjYuMDAxMiAyOS4xNTk0IDI2LjA2NzkgMjkuMjAyNiAyNi4xMTIyQzI5LjIyNDEgMjYuMTM0MyAyOS4yMzk3IDI2LjE1MDcgMjkuMjQ4OCAyNi4xNjA1TDI5LjI1NzQgMjYuMTY5N0MyOS4yNTc0IDI2LjE2OTcgMjkuMjU2NyAyNi4xNjkgMzAgMjUuNUMzMC43NDMzIDI0LjgzMSAzMC43NDI5IDI0LjgzMDYgMzAuNzQyOSAyNC44MzA2TDMwLjc0MTQgMjQuODI5TDMwLjczODkgMjQuODI2MkwzMC43MzE4IDI0LjgxODRMMzAuNzA5NyAyNC43OTQ2QzMwLjY5MTUgMjQuNzc1MSAzMC42NjYzIDI0Ljc0ODUgMzAuNjM0NiAyNC43MTZDMzAuNTcxMSAyNC42NTA5IDMwLjQ4MDkgMjQuNTYxMyAzMC4zNjcgMjQuNDU1M0MzMC4xNDAzIDI0LjI0NDQgMjkuODE0IDIzLjk2MzYgMjkuNDExOSAyMy42ODE0QzI4LjYzMTQgMjMuMTMzNyAyNy40NTExIDIyLjUgMjYuMSAyMi41SDI1VjIwLjVIMjUuNzVDMjYuNDQ0MyAyMC41IDI3LjExOTMgMjAuNzAxMSAyNy42NDMyIDIwLjkyMTZDMjcuOTAwMyAyMS4wMjk5IDI4LjEwOTIgMjEuMTM3OCAyOC4yNTA5IDIxLjIxNjlDMjguMzIxNSAyMS4yNTY0IDI4LjM3NDcgMjEuMjg4MiAyOC40MDggMjEuMzA4N0MyOC40MjQ3IDIxLjMxODkgMjguNDM2MyAyMS4zMjYzIDI4LjQ0MjcgMjEuMzMwNEwyOC40NDU3IDIxLjMzMjNDMjguNDQ1NyAyMS4zMzIzIDI4LjQ0NTMgMjEuMzMyMSAyOSAyMC41QzI5LjU1NDcgMTkuNjY3OSAyOS41NTQyIDE5LjY2NzYgMjkuNTU0MiAxOS42Njc2TDI5LjU1MjcgMTkuNjY2NkwyOS41NTAxIDE5LjY2NDlMMjkuNTQzMiAxOS42NjA0TDI5LjUyMjggMTkuNjQ3MkMyOS41MDYzIDE5LjYzNjYgMjkuNDg0IDE5LjYyMjUgMjkuNDU2MiAxOS42MDU0QzI5LjQwMDcgMTkuNTcxMiAyOS4zMjMgMTkuNTI0OSAyOS4yMjU2IDE5LjQ3MDZDMjkuMDMxNSAxOS4zNjIyIDI4Ljc1NTkgMTkuMjIwMSAyOC40MTkzIDE5LjA3ODRDMjcuNzU1NyAxOC43OTg5IDI2LjgwNTcgMTguNSAyNS43NSAxOC41SDI1VjE3SDM2VjMwSDI4LjVDMjguNSAyOS40Mzc5IDI4LjIzMjQgMjguOTQ1MiAyNy45NjQxIDI4LjU4NzVDMjcuNjgwMyAyOC4yMDkyIDI3LjMwNTQgMjcuODYwNiAyNi45MDA3IDI3LjU2NjNDMjYuMzY3NSAyNy4xNzg1IDI1LjY5ODkgMjYuODI1NyAyNSAyNi42MzkxVjI0LjVaTTI2LjQ5MjkgMzBDMjYuNDc5NyAyOS45NjcgMjYuNDQ1NyAyOS44OTY0IDI2LjM2NDEgMjkuNzg3NUMyNi4yMjU5IDI5LjYwMzMgMjYuMDA3MSAyOS4zODk0IDI1LjcyNDMgMjkuMTgzN0MyNS4xNDc4IDI4Ljc2NDUgMjQuNDkzNyAyOC41MTE3IDI0LjAzMiAyOC41MDA0QzIzLjQ4NzcgMjguNTQ2NCAyMi44MDUyIDI4LjgyNTIgMjIuMjQ0OSAyOS4yMjdDMjEuOTY1NyAyOS40MjcyIDIxLjc1NTYgMjkuNjMwNyAyMS42MjUyIDI5LjgwMzhDMjEuNTQ5NiAyOS45MDQzIDIxLjUxODQgMjkuOTY5NCAyMS41MDYzIDMwSDI2LjQ5MjlaIiBmaWxsPSIjYjQ1MzA5Ii8+Cjwvc3ZnPgo=", + "created": 1700000000000 + }, + "img_ni16": { + "mimeType": "image/svg+xml", + "id": "img_ni16", + "dataURL": "data:image/svg+xml;base64,PHN2ZwogIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIKICB3aWR0aD0iMjQiCiAgaGVpZ2h0PSIyNCIKICB2aWV3Qm94PSIwIDAgMjQgMjQiCiAgZmlsbD0ibm9uZSIKICBzdHJva2U9IiNiNDUzMDkiCiAgc3Ryb2tlLXdpZHRoPSIyIgogIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIKICBzdHJva2UtbGluZWpvaW49InJvdW5kIgo+CiAgPHBhdGggZD0iTTEyLjU4NiAyLjU4NkEyIDIgMCAwIDAgMTEuMTcyIDJINGEyIDIgMCAwIDAtMiAydjcuMTcyYTIgMiAwIDAgMCAuNTg2IDEuNDE0bDguNzA0IDguNzA0YTIuNDI2IDIuNDI2IDAgMCAwIDMuNDIgMGw2LjU4LTYuNThhMi40MjYgMi40MjYgMCAwIDAgMC0zLjQyeiIgLz4KICA8Y2lyY2xlIGN4PSI3LjUiIGN5PSI3LjUiIHI9Ii41IiBmaWxsPSIjYjQ1MzA5IiAvPgo8L3N2Zz4K", + "created": 1700000000000 + }, + "img_ni21": { + "mimeType": "image/svg+xml", + "id": "img_ni21", + "dataURL": "data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNDgiIGhlaWdodD0iNDgiIHZpZXdCb3g9IjAgMCA0OCA0OCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0yMyA2LjAwMDEzQzIzIDYuMDAwMDQgMjMgNiAyNCA2SDI0LjE3NjFDMjQuMjUzMyA2IDI0LjMyMzMgNiAyNC4zODY4IDZDMjUgNi4wMDAwMSAyNSA2LjAwMDA1IDI1IDYuMDAwMTNWMjAuNUMyNSAyMS44OTc3IDI1LjU2NDEgMjIuNDQyMSAyNi4wMDM5IDIyLjY5ODdDMjYuMDUzIDIyLjcyNzMgMjYuMTAyNCAyMi43NTMzIDI2LjE1MTYgMjIuNzc3QzI2LjE1MDYgMjIuNjU2OCAyNi4xNDkzIDIyLjUzMTYgMjYuMTQ3OSAyMi40MDE5TDI2LjE0NzkgMjIuNDAwM0MyNi4xMTAxIDE4Ljg3MTYgMjYuMDM2NSAxMS45OTk3IDMxLjQ3NTMgMTEuOTk5N0MzOC45MjU5IDExLjk5OTcgNDQuMjQ3OCAzOC4wMDYyIDQxLjA1NDcgNDAuNjU5OUMzNy44NjE1IDQzLjMxMzYgMzEuNDc1MyA0MS43MjE0IDI4LjI4MjIgMzguNTM2OUMyNS43MDQyIDM1Ljk2NTkgMjUuOTI3MiAyOS45NTgzIDI2LjA4NzMgMjUuNjQ1N0wyNi4wODc0IDI1LjY0NDNDMjYuMDk3MSAyNS4zODE5IDI2LjEwNjcgMjUuMTI1OCAyNi4xMTUzIDI0Ljg3NzFDMjUuNzkgMjQuNzk2MiAyNS4zOTU5IDI0LjY1OTUgMjQuOTk2MiAyNC40MjYzQzI0LjYzOTggMjQuMjE4NCAyNC4yOTc1IDIzLjk0NDIgMjQgMjMuNTkxOUMyMy43MDI2IDIzLjk0NDIgMjMuMzYwMyAyNC4yMTg0IDIzLjAwMzkgMjQuNDI2M0MyMi42MDQxIDI0LjY1OTUgMjIuMjEwMSAyNC43OTYyIDIxLjg4NDggMjQuODc3MUMyMS44OTM0IDI1LjEyNjEgMjEuOTAyOSAyNS4zODI2IDIxLjkxMjcgMjUuNjQ1M0MyMi4wNzI4IDI5Ljk1NzkgMjIuMjk1OSAzNS45NjYyIDE5LjcxNzkgMzguNTM3MkMxNi41MjQ3IDQxLjcyMTcgMTAuMTM4NSA0My4zMTM5IDYuOTQ1MzYgNDAuNjYwMkMzLjc1MjIyIDM4LjAwNjUgOS4wNzQxMyAxMiAxNi41MjQ3IDEyQzIxLjk2MzYgMTIgMjEuODkgMTguODcxNyAyMS44NTIyIDIyLjQwMDNDMjEuODUyIDIyLjQxNjYgMjEuODUxOCAyMi40MzI4IDIxLjg1MTYgMjIuNDQ4OUMyMS44NTA0IDIyLjU2MTkgMjEuODQ5MyAyMi42NzE0IDIxLjg0ODQgMjIuNzc3QzIxLjg5NzcgMjIuNzUzNCAyMS45NDcxIDIyLjcyNzQgMjEuOTk2MiAyMi42OTg3QzIyLjQzNiAyMi40NDIxIDIzIDIxLjg5NzcgMjMgMjAuNVY2LjAwMDEzWk0zMS40NzUzIDEzLjk5OTdDMzAuNTIxMiAxMy45OTk3IDI5Ljk4NDMgMTQuMzAwMiAyOS42MDg2IDE0LjY4NjlDMjkuMTc1MiAxNS4xMzMxIDI4LjgxMzIgMTUuODUwNyAyOC41NTkgMTYuODY0NkMyOC4xMTQxIDE4LjYzOTUgMjguMTMzIDIwLjY4MTkgMjguMTQ4MyAyMi4zMjkzQzI4LjE1MDkgMjIuNjE0MiAyOC4xNTM0IDIyLjg4NzQgMjguMTUzNCAyMy4xNDUzQzI4LjE1MzQgMjMuOTA1MyAyOC4xMTk2IDI0LjgxNTMgMjguMDg0NSAyNS43NjIxQzI4LjA3MDcgMjYuMTM0OSAyOC4wNTY2IDI2LjUxMzMgMjguMDQ0MyAyNi44OTA1QzI3Ljk5OTYgMjguMjY1NyAyNy45NzQxIDI5LjcwNTUgMjguMDQwNSAzMS4wOTgyQzI4LjEwNzIgMzIuNDk4NSAyOC4yNjQyIDMzLjc4MzUgMjguNTU3MyAzNC44NTk2QzI4Ljg1MzggMzUuOTQ4MyAyOS4yNTA5IDM2LjY3ODQgMjkuNjk0NCAzNy4xMjA4QzMwLjk3MjYgMzguMzk1NCAzMi45OTA4IDM5LjQyNTEgMzUuMDQ5MiAzOS44MjQzQzM3LjA4NDIgNDAuMjE4OSAzOC43MjI0IDM5LjkyNjkgMzkuNjgxOCAzOS4xOTY5QzM5LjY4NjggMzkuMTg1NyAzOS42OTIzIDM5LjE3MjYgMzkuNjk4NCAzOS4xNTc0QzM5Ljc1NzYgMzkuMDA5NSAzOS44Mjk0IDM4Ljc1NTQgMzkuODg3OCAzOC4zNjgzQzQwLjAwNDcgMzcuNTkzMyA0MC4wMzUgMzYuNTEyMiAzOS45NTYyIDM1LjE4MDNDMzkuNzk5NSAzMi41MzA1IDM5LjIyODYgMjkuMTY4OSAzOC4zMjY4IDI1Ljg2MDZDMzcuNDIxNiAyMi41Mzk2IDM2LjIxNzMgMTkuMzk5OCAzNC44NTIxIDE3LjEzODNDMzQuMTY4OCAxNi4wMDYyIDMzLjQ5NTEgMTUuMTc4NiAzMi44NzAzIDE0LjY1MzVDMzIuMjUxOCAxNC4xMzM3IDMxLjc5MzUgMTMuOTk5NyAzMS40NzUzIDEzLjk5OTdaTTE2LjUyNDcgMTRDMTcuNDc4OCAxNCAxOC4wMTU4IDE0LjMwMDUgMTguMzkxNCAxNC42ODcyQzE4LjgyNDggMTUuMTMzNCAxOS4xODY4IDE1Ljg1MSAxOS40NDEgMTYuODY0OUMxOS44ODU5IDE4LjYzOTkgMTkuODY3IDIwLjY4MjIgMTkuODUxOCAyMi4zMjk2QzE5Ljg0OTEgMjIuNjE0NiAxOS44NDY2IDIyLjg4NzcgMTkuODQ2NiAyMy4xNDU2QzE5Ljg0NjYgMjMuOTA1NiAxOS44ODA0IDI0LjgxNTYgMTkuOTE1NSAyNS43NjI0QzE5LjkyOTQgMjYuMTM1IDE5Ljk0MzQgMjYuNTEzOCAxOS45NTU3IDI2Ljg5MDhDMjAuMDAwNSAyOC4yNjYgMjAuMDI1OSAyOS43MDU4IDE5Ljk1OTYgMzEuMDk4NUMxOS44OTI5IDMyLjQ5ODggMTkuNzM1OSAzMy43ODM4IDE5LjQ0MjcgMzQuODU5OUMxOS4xNDYyIDM1Ljk0ODYgMTguNzQ5MiAzNi42Nzg3IDE4LjMwNTYgMzcuMTIxMUMxNy4wMjc1IDM4LjM5NTcgMTUuMDA5MyAzOS40MjU0IDEyLjk1MDkgMzkuODI0NkMxMC45MTU5IDQwLjIxOTIgOS4yNzc2OCAzOS45MjcyIDguMzE4MjMgMzkuMTk3MkM4LjMxMzI2IDM5LjE4NiA4LjMwNzcgMzkuMTcyOSA4LjMwMTYyIDM5LjE1NzdDOC4yNDI0MSAzOS4wMDk4IDguMTcwNjEgMzguNzU1NyA4LjExMjI0IDM4LjM2ODZDNy45OTUzOSAzNy41OTM2IDcuOTY1IDM2LjUxMjUgOC4wNDM4IDM1LjE4MDZDOC4yMDA1NiAzMi41MzA4IDguNzcxNDcgMjkuMTY5MiA5LjY3MzI0IDI1Ljg2MDlDMTAuNTc4NSAyMi41Mzk5IDExLjc4MjcgMTkuNDAwMSAxMy4xNDc5IDE3LjEzODZDMTMuODMxMyAxNi4wMDY1IDE0LjUwNDkgMTUuMTc4OSAxNS4xMjk4IDE0LjY1MzhDMTUuNzQ4MiAxNC4xMzQgMTYuMjA2NSAxNCAxNi41MjQ3IDE0WiIgZmlsbD0iI2I0NTMwOSIvPgo8L3N2Zz4K", + "created": 1700000000000 + } + } +} \ No newline at end of file diff --git a/knowledge/drafts/two-planes.svg b/knowledge/drafts/two-planes.svg new file mode 100644 index 0000000..4a9ea56 --- /dev/null +++ b/knowledge/drafts/two-planes.svg @@ -0,0 +1,2 @@ +Patient Contextthis patient · this examFoundation Contextshared, curated knowledgeCT chestthis patient · 2026-03-04pulmonary nodulepresent · 8 mm · newfound onCT Chest W contrast IVexam typepulmonary nodulefinding/diagnosis definitionthoraxanatomic locationlungupper lobe of right lungcontainscontainscoversoccurs atis ais alocated atevery fact about this patient is attached to the shared knowledge of what such a thing is \ No newline at end of file diff --git a/tools/diagrams/build_foundation_network.py b/tools/diagrams/build_foundation_network.py new file mode 100644 index 0000000..d8e2911 --- /dev/null +++ b/tools/diagrams/build_foundation_network.py @@ -0,0 +1,399 @@ +#!/usr/bin/env python3 +"""Build the Foundation Context "mini-network" diagram (v6 layout). + +A small illustrative graph -- not exhaustive -- showing the three sectors of +Foundation Context (finding/diagnosis definitions, anatomic locations, exam +types) and a sample of the relationships within and across them, drawn from +the ACR-RSNA-CDEs next-gen graph, the RSNA Playbook, and the June 2026 SIIM +talk. + +Layout: three full-width horizontal BANDS stacked top to bottom, each laid +out left-to-right (not as a deep tree), so nearly every cross-sector edge is +a short vertical between adjacent bands. Two edges (pulmonary nodule -> lung, +pleural effusion -> pleural space) are plumb-straight drops: their sources and +targets share an x-coordinate on purpose. Because of that, "thorax" is offset +left of "lung" (it doesn't need to share lung's column, just sit near it) so +it doesn't block the straight drop coming down through its own row. + + +--------------------------------------------------------+ + | Band 1 -- Sector 1: Finding / diagnosis definitions | + +--------------------------------------------------------+ + (gap, short "scoped to" verticals cross here) + +--------------------------------------------------------+ + | Band 2 -- Sector 2: Anatomic locations | + +--------------------------------------------------------+ + (gap, short "covers"/"included"/"edge (usually)" verticals) + +--------------------------------------------------------+ + | Band 3 -- Sector 3: Exam types | + +--------------------------------------------------------+ + +--------------------------------------------------------+ + | Legend | + +--------------------------------------------------------+ + +The only long edges are pulmonary nodule -> CT Chest ("seen on") and +pulmonary nodule -> CT Thoracic spine ("possibly seen on", dashed), which +run down the left and right margins respectively, outside all three bands, +each in its own lane, jogging in only at the very end. + +v6 changes: canvas narrowed from 1200px to 955px. Every x-coordinate below +was recomputed from measured text widths rather than estimated -- the +rendering font is `Helvetica, Segoe UI Emoji` as resolved by headless +Chromium, and the widths used here came from canvas `measureText` in that +same browser (see the note on Sector 3 below). Box widths are therefore +`measured text width + 20` (box() pads 10px each side), and the layout is +packed to a few pixels of slack in places, so changing a label's TEXT means +re-measuring, not just nudging a coordinate. + +Sector 3 and the "two lines per Playbook member" request: the five Playbook +members cannot all carry their name on one line inside a <=960px canvas. +Their names measure 131 / 137 / 188 / 243 / 187 px at 13px, so five one-line +names plus box padding and gaps need ~1030px of row; the row has ~830px +between the grey "further nodes" dots and the right margin lane. The three +"CT Chest ..." members do fit on one line and are set that way (name, then +code); "CTA Chest vessels WO and W contrast IV" and "CT Thoracic spine W +contrast IV" wrap their name over two lines and keep the code on the last +line. Shrinking text below 13px or abbreviating the Playbook names were the +only other ways to make all five one-line, and both were rejected. + +Output: knowledge/drafts/foundation-network.excalidraw; render with +render_excalidraw.py (see tools/diagrams/README.md). +""" +from __future__ import annotations + +from excalib import TITLE, SUBTITLE, BODY, LINE, els, base, text, box, find, edge_point, arrow, save + +# ---------------------------------------------------------------- palette +FINDING = ("#d1fae5", "#059669", "#064e3b") # light green: finding +DIAGNOSIS = ("#6ee7b7", "#059669", "#064e3b") # darker green: diagnosis (subtly different fill) +ASSESS = ("#e9d5ff", "#7e22ce", "#4c1d95") # purple diamond: assessment scheme +ANATOMY = ("#bfdbfe", "#1d4ed8", "#1e3a8a") # light blue: anatomic location +EXAM = ("#fde68a", "#b45309", "#78350f") # light amber: exam type +GREY = ("#e5e7eb", "#9ca3af", "#4b5563") # unlabeled / de-emphasized nodes +CROSS = "#be123c" # thick colored line: cross-sector relationship +BAND_BG = "#f8fafc" # sector band fill; label backings inside a band use it + +# ---------------------------------------------------------------- helpers (local to this builder) +def region(id_: str, x: float, y: float, w: float, h: float, title: str) -> None: + """Faint background rectangle with a title, drawn first so nodes sit on top.""" + r = base("rectangle", id_, x, y, w, h, "#e2e8f0", BAND_BG, sw=1) + r["roundness"] = {"type": 3} + els.append(r) + els.append(text(id_ + "_title", x + 14, y + 10, title, size=15, color=TITLE)) + + +def dot(id_: str, cx: float, cy: float, r: float, fill=GREY[0], stroke=GREY[1]) -> dict: + e = base("ellipse", id_, cx - r, cy - r, 2 * r, 2 * r, stroke, fill, sw=1) + els.append(e) + return e + + +def diamond(id_: str, x: float, y: float, w: float, h: float, label: str, colors, size=13) -> dict: + fill, stroke, tcolor = colors + d = base("diamond", id_, x, y, w, h, stroke, fill) + t = text(id_ + "_t", x + w * 0.2, y + h * 0.32, label, size=size, color=tcolor, align="center", w=w * 0.6, container=id_) + t["height"] = h * 0.36 + d["boundElements"] = [{"id": t["id"], "type": "text"}] + els.extend([d, t]) + return d + + +def faint(id_: str, x1: float, y1: float, x2: float, y2: float) -> None: + ln = base("arrow", id_, x1, y1, x2 - x1, y2 - y1, "#9ca3af", "transparent", sw=1) + ln.update({"points": [[0, 0], [x2 - x1, y2 - y1]], "startBinding": None, "endBinding": None, + "startArrowhead": None, "endArrowhead": None, "boundElements": None, "opacity": 40}) + els.append(ln) + + +def mpath(id_: str, pts: list[tuple[float, float]], color: str, dashed=False, sw=3, + label: str | None = None, label_pos: tuple[float, float] | None = None, label_color=BODY, + label_w: float | None = None, label_bg_color: str = "#ffffff") -> None: + """Multi-point routed arrow (elbow arrow() only supports 3 points). + + label_w: MEASURED text width in px. The backing box is sized from it, so + passing a measured value (rather than a char-count estimate) is what keeps + a margin-lane label from pushing the canvas wider than the bands. + label_bg_color: BAND_BG for a label that lands inside a sector band, white + for one in a band gap -- a white patch on the tinted band is visible. + """ + x0, y0 = pts[0] + rel = [[px - x0, py - y0] for px, py in pts] + ar = base("arrow", id_, x0, y0, pts[-1][0] - x0, pts[-1][1] - y0, color, "transparent", dashed=dashed, sw=sw) + ar.update({"points": rel, "startBinding": None, "endBinding": None, + "startArrowhead": None, "endArrowhead": "arrow", "boundElements": None}) + els.append(ar) + if label: + lw = label_w if label_w is not None else max(len(ln_) for ln_ in label.split("\n")) * 13 * 0.62 + lx, ly = label_pos + lh = len(label.split("\n")) * 13 * 1.25 + bg = base("rectangle", id_ + "_bg", lx - lw / 2 - 5, ly - 3, lw + 10, lh + 6, "transparent", label_bg_color, sw=0) + els.append(bg) + els.append(text(id_ + "_l", lx - lw / 2, ly, label, size=13, color=label_color, align="center", w=lw)) + + +def label_bg(id_: str, cx: float, cy: float, label: str, w: float, size=13, color=BODY, + bg_color: str = "#f8fafc") -> None: + """A standalone edge label with an opaque backing box so it never sits on + top of node text or an edge. w: MEASURED text width in px (see mpath). + bg_color defaults to the band fill, since every one of these sits inside a + band; pass white for a label placed in a band gap.""" + lines = label.split("\n") + bw = w + 10 + bh = len(lines) * size * 1.25 + 6 + bg = base("rectangle", id_ + "_bg", cx - bw / 2, cy - bh / 2, bw, bh, "transparent", bg_color, sw=0) + els.append(bg) + els.append(text(id_ + "_t", cx - bw / 2 + 5, cy - bh / 2 + 3, label, size=size, color=color, align="center", w=w)) + + +# ---------------------------------------------------------------- canvas / bands +CONTENT_W = 935 # + 2 x 10px export padding = 955px canvas +LANE_L = 8 # "seen on" lane, left margin +LANE_R = 912 # "possibly seen on" lane, just inside the right edge + +BAND1 = dict(x=0, y=70, w=CONTENT_W, h=300) # bottom 370 +GAP1 = 70 +BAND2 = dict(x=0, y=BAND1["y"] + BAND1["h"] + GAP1, w=CONTENT_W, h=370) # 440, bottom 810 +GAP2 = 70 +BAND3 = dict(x=0, y=BAND2["y"] + BAND2["h"] + GAP2, w=CONTENT_W, h=300) # 880, bottom 1180 +LEGEND = dict(x=0, y=BAND3["y"] + BAND3["h"] + 30, w=CONTENT_W, h=190) # 1210 + +els.append(text("maintitle", 0, 8, "Foundation Context: a mini-network", size=20, color=TITLE)) +els.append(text("subtitle", 0, 34, "three sectors of shared, curated knowledge — illustrative, not exhaustive", size=13, color=SUBTITLE)) + +region("rA", **BAND1, title="Sector 1 — Finding / diagnosis definitions") +region("rB", **BAND2, title="Sector 2 — Anatomic locations") +find("rB_title")["x"] += 40 # keep clear of the "seen on" lane running down x=8 +region("rC", **BAND3, title="Sector 3 — Exam types") +els.append(text("rC_tag", BAND3["x"] + 14, BAND3["y"] + 30, "(content to come)", size=13, color=BODY)) +region("rL", **LEGEND, title="Legend") + +# ================================================================== BAND 1: Finding / diagnosis definitions +# Row 1, left to right: lung cancer, pulmonary nodule, Lung-RADS, pleural +# effusion. Row 2, under pulmonary nodule: the three subtypes, spread wide for +# label room; solid component hangs below-right of part-solid, offset so it +# doesn't block pulmonary nodule's straight column down to lung. Grey "more" +# nodes sit at the far left of row 2. +COL_PN = 345 # pulmonary nodule / lung share this column (straight drop) +COL_PE = 708 # pleural effusion / pleural space share this one + +lung_cancer = box("lung_cancer", 20, 110, 140, 42, "lung cancer", DIAGNOSIS, size=14) +pulm_nodule = box("pulm_nodule", 272, 100, 146, 54, "pulmonary\nnodule", FINDING, size=14) # center 345 +lungrads = diamond("lungrads", 492, 95, 125, 75, "Lung-RADS", ASSESS, size=13) +pleural_effusion = box("pleural_effusion", 637, 110, 142, 42, "pleural effusion", FINDING, size=13) # center 708 + +solid_nodule = box("solid_nodule", 120, 210, 105, 70, "solid\npulmonary\nnodule", FINDING, size=13) +partsolid_nodule = box("partsolid_nodule", 235, 210, 100, 70, "part-solid\npulmonary\nnodule", FINDING, size=13) +nonsolid_nodule = box("nonsolid_nodule", 530, 210, 100, 70, "non-solid\npulmonary\nnodule", FINDING, size=13) +solid_component = box("solid_component", 365, 295, 118, 38, "solid component", FINDING, size=13) + +dot("gA1", 50, 235, 15) +dot("gA2", 75, 270, 13) +dot("gA3", 55, 295, 12) +faint("fA_12", 50, 235, 75, 270) +faint("fA_13", 50, 235, 55, 295) +faint("fA_into", 75, 270, 120, 245) # gA2 -> solid pulmonary nodule (nearest labeled node) + +# The two left-hand "subtype of" labels sit BELOW the "seen on" lane's top +# horizontal (y=166) and to the LEFT of the red column at x=345; the right-hand +# one sits ABOVE the "possibly seen on" lane's top horizontal (y=190). That is +# what keeps the red pulmonary-nodule -> lung vertical off all three of them. +arrow("e_solid_sub", "solid_nodule", "top", "pulm_nodule", "bottom", None, s_frac=0.5, d_frac=0.15) +arrow("e_partsolid_sub", "partsolid_nodule", "top", "pulm_nodule", "bottom", None, s_frac=0.4, d_frac=0.5) +arrow("e_nonsolid_sub", "nonsolid_nodule", "top", "pulm_nodule", "bottom", None, s_frac=0.2, d_frac=0.9) +# All three "subtype of" labels are white-backed and placed by hand: their own +# edges are diagonals that would otherwise run through the text, and the left +# two have to stay clear of the "seen on" lane above (y=166) and the red +# pulmonary-nodule column at x=345. +label_bg("l_solid_sub", 205, 189, "subtype of", 60.0) +label_bg("l_partsolid_sub", 290, 189, "subtype of", 60.0) +label_bg("l_nonsolid_sub", 487, 169, "subtype of", 60.0) +arrow("e_partsolid_comp", "partsolid_nodule", "bottom", "solid_component", "top", "has component", s_frac=0.6, d_frac=0.3, + label_size=13, label_dx=60) +arrow("e_manifest", "lung_cancer", "right", "pulm_nodule", "left", "may manifest as", s_frac=0.4, d_frac=0.35, + label_size=13, label_dy=-26) +arrow("e_progress", "nonsolid_nodule", "left", "partsolid_nodule", "right", "may progress to", s_frac=0.5, d_frac=0.5, + dashed=True, label_size=13, label_dy=-24) +arrow("e_assessed", "pulm_nodule", "right", "lungrads", "left", "assessed by", s_frac=0.25, d_frac=0.4, + label_size=13, label_dx=6, label_dy=-24) +# pleural_effusion intentionally has no edge to pulm_nodule -- just a neighbor +# solid_component intentionally has no cross-sector "scoped to" edge -- only +# pulmonary nodule, lung cancer, and pleural effusion are scoped to anatomy + +# ================================================================== BAND 2: Anatomic locations +# thorax sits center-left, offset from lung's own column, on purpose: it leaves +# x=345 clear so pulmonary nodule's edge can drop straight into lung without +# detouring around thorax, AND leaves x=300 clear for lung cancer's arrival at +# lung's top-left. pleural space is pulled right, under pleural effusion, so +# ITS edge can also be a straight drop. +BY = BAND2["y"] +thorax = box("thorax", 160, BY + 40, 110, 42, "thorax", ANATOMY, size=14) # 160-270 +pleural_space = box("pleural_space", 654, BY + 40, 108, 44, "pleural\nspace", ANATOMY, size=13) # center 708 +upper_abdomen = box("upper_abdomen", 777, BY + 40, 115, 42, "upper abdomen", GREY, dashed=True, size=13) # ends 892, lane at 912 + +right_lung = box("right_lung", 150, BY + 110, 105, 40, "right lung", ANATOMY, size=13) +lung = box("lung", 280, BY + 110, 130, 42, "lung", ANATOMY, size=14) # center 345 +left_lung = box("left_lung", 435, BY + 110, 105, 40, "left lung", ANATOMY, size=13) + +# Row 3 is pushed down to BY+220 to open a clear horizontal corridor at BY+200 +# for the labels, and the gap between the two row-3 boxes (278..310) is the +# corridor the red "included" edge climbs to reach lung's bottom-left. +upper_lobe = box("upper_lobe", 140, BY + 220, 138, 42, "upper lobe of\nright lung", ANATOMY, size=13) +lung_parenchyma = box("lung_parenchyma", 310, BY + 220, 120, 44, "lung\nparenchyma", ANATOMY, size=13) + +dot("gB1", 50, BY + 250, 15) +dot("gB2", 75, BY + 285, 13) +dot("gB3", 55, BY + 310, 12) +faint("fB_12", 50, BY + 250, 75, BY + 285) +faint("fB_13", 50, BY + 250, 55, BY + 310) +faint("fB_into", 75, BY + 285, 140, BY + 245) # gB2 -> upper lobe of right lung (nearest labeled node) + +arrow("e_rlung_lung", "right_lung", "right", "lung", "left", None, s_frac=0.5, d_frac=0.3) +arrow("e_llung_lung", "left_lung", "left", "lung", "right", None, s_frac=0.5, d_frac=0.7) +arrow("e_ulobe_rlung", "upper_lobe", "top", "right_lung", "bottom", None, s_frac=0.4, d_frac=0.4) +# lung parenchyma's edge runs into lung's BOTTOM-RIGHT (x=394), leaving the +# space under lung's center free for "laterality", which now sits between the +# red "included" arrowhead (x=294) and that edge -- on neither of them. +arrow("e_parenchyma_lung", "lung_parenchyma", "top", "lung", "bottom", None, s_frac=0.7, d_frac=0.88) +arrow("e_pspace_thorax", "pleural_space", "left", "thorax", "right", None, s_frac=0.5, d_frac=0.5) + +label_bg("l_ulobe_rlung", 197, BY + 172, "contained by", 73.7) +label_bg("l_laterality", 345, BY + 172, "laterality", 48.4) +label_bg("l_parenchyma_lung", 487, BY + 172, "part of", 36.9) +label_bg("l_pspace_thorax", 480, BY + 55, "contained by", 73.7) + +# ================================================================== BAND 3: Exam types +# Row 1: CT Chest (preferred, to come). Row 2, left to right: the four real +# Playbook entries with codes, then CT Thoracic spine (dashed) at the far +# right; grey "more" nodes at the far left. "Region imaged" hangs below +# "CT Chest W contrast IV". Box widths are measured-text + 20 and gaps are 8px +# -- see the module docstring on why only three of the five get a one-line name. +CY = BAND3["y"] +ct_chest = box("ct_chest", 285, CY + 40, 230, 60, "CT Chest\npreferred (to come)", EXAM, size=14) + +ct_wo = box("ct_wo", 90, CY + 130, 152, 70, "CT Chest WO contrast\n29252-4", EXAM, size=13) +ct_w = box("ct_w", 250, CY + 130, 158, 70, "CT Chest W contrast IV\n24628-0", EXAM, size=13) +ct_wo_w = box("ct_wo_w", 416, CY + 130, 209, 70, "CT Chest WO and W contrast IV\n30598-7", EXAM, size=13) +ct_cta = box("ct_cta", 633, CY + 130, 151, 70, "CTA Chest vessels\nWO and W contrast IV\n30804-9", EXAM, size=13) +ct_thoracic_spine = box("ct_thoracic_spine", 792, CY + 130, 126, 70, "CT Thoracic spine\nW contrast IV\n24979-7", GREY, dashed=True, size=13) + +region_imaged = box("region_imaged", 266, CY + 220, 126, 40, "Region imaged:\nThorax (RID1243)", GREY, size=13) + +dot("gC1", 42, CY + 165, 14) +dot("gC2", 64, CY + 198, 12) +faint("fC_12", 42, CY + 165, 64, CY + 198) +faint("fC_into", 42, CY + 165, 90, CY + 165) # gC1 -> CT Chest WO contrast (nearest labeled node) + +arrow("e_wo_family", "ct_wo", "top", "ct_chest", "bottom", "member of family", s_frac=0.5, d_frac=0.1, + label_size=13, label_dx=-15, label_dy=-20) +arrow("e_w_family", "ct_w", "top", "ct_chest", "bottom", None, s_frac=0.5, d_frac=0.35) +arrow("e_wo_w_family", "ct_wo_w", "top", "ct_chest", "bottom", None, s_frac=0.5, d_frac=0.65) +arrow("e_cta_family", "ct_cta", "top", "ct_chest", "bottom", None, s_frac=0.3, d_frac=0.9) +arrow("e_w_regionimaged", "ct_w", "bottom", "region_imaged", "top", "Playbook part", s_frac=0.5, d_frac=0.5, + label_size=13, label_dx=107, label_dy=0) + +# ================================================================== cross-sector edges (thick, colored) +# Band 1 -> Band 2. +# "pulmonary nodule" and "lung" share x=345 -- a genuinely straight drop, clear +# of row 2's subtypes/solid component (both kept off that column), of all three +# "subtype of" labels, and of thorax (offset left of lung for exactly this +# reason). +mpath("cx_pn_lung", + [edge_point(find("pulm_nodule"), "bottom", 0.5), edge_point(find("lung"), "top", 0.5)], + color=CROSS, sw=3, label="scoped to", label_pos=(392, 396), label_w=56.4) + +# "lung cancer" drops from its own bottom, one right-angle jog at the midpoint +# of the band gap, then straight down into lung's top-left corner -- 45px left +# of pulmonary nodule's top-center arrival, so the two arrowheads land at +# separate points on "lung", not on top of each other. +mpath("cx_lc_lung", + [edge_point(find("lung_cancer"), "bottom", 0.5), (90, 405), (300, 405), + edge_point(find("lung"), "top", 0.15)], + color=CROSS, sw=3, label="scoped to", label_pos=(195, 393), label_w=56.4) + +# "pleural effusion" and "pleural space" also share an x (708) -- straight drop, +# since pleural space was pulled right specifically to sit under it. +mpath("cx_pe_pspace", + [edge_point(find("pleural_effusion"), "bottom", 0.5), edge_point(find("pleural_space"), "top", 0.5)], + color=CROSS, sw=3, label="scoped to", label_pos=(748, 286), label_w=56.4, label_bg_color=BAND_BG) + +# Band 3 -> Band 2 (pointing up): each uses its own left/right-margin column +# through band 2 so it clears the nodes directly in its way. "included" climbs +# the 32px corridor between the two row-3 boxes rather than cutting across the +# label row, so it crosses neither "contained by" nor the upper-lobe edge. +mpath("cx_ctchest_thorax", + [edge_point(find("ct_chest"), "top", 0.15), (319.5, 846), (100, 846), (100, BY + 61), + edge_point(find("thorax"), "left", 0.5)], + color=CROSS, sw=3, label="covers", label_pos=(66, 814), label_w=38.3) + +mpath("cx_ctchest_lung", + [edge_point(find("ct_chest"), "top", 0.3), (354, 868), (118, 868), (118, BY + 290), (294, BY + 290), + edge_point(find("lung"), "bottom", 0.11)], + color=CROSS, sw=3, label="included", label_pos=(160, 814), label_w=48.4) + +mpath("cx_ctchest_abdomen", + [edge_point(find("ct_chest"), "top", 0.85), (480.5, 846), (834.5, 846), + edge_point(find("upper_abdomen"), "bottom", 0.5)], + color=CROSS, dashed=True, sw=2, label="edge (usually)", label_pos=(834.5, 683), label_w=81.7, label_bg_color=BAND_BG) + +# The two long edges run down dedicated margin lanes outside all three bands, +# jogging in only once, right at the end. The right lane turns in above band 3's +# exam row, so CT Thoracic spine can use the full width up to the margin. +mpath("cx_pn_ctchest", + [edge_point(find("pulm_nodule"), "left", 1.0), (272, 166), (LANE_L, 166), (LANE_L, CY + 70), + edge_point(find("ct_chest"), "left", 0.5)], + color=CROSS, sw=3, label="seen on", label_pos=(48, 592), label_w=46.3, label_bg_color=BAND_BG) + +mpath("cx_pn_ctspine", + [edge_point(find("pulm_nodule"), "right", 1.0), (418, 190), (LANE_R, 190), (LANE_R, CY + 70), (855, CY + 70), + edge_point(find("ct_thoracic_spine"), "top", 0.5)], + color=CROSS, dashed=True, sw=2, label="possibly seen on", label_pos=(872, 392), label_w=96.8) + +# ================================================================== legend (full-width strip, 2 columns) +node_rows = [ + ("rect", FINDING, "finding"), + ("rect", DIAGNOSIS, "diagnosis"), + ("diamond", ASSESS, "assessment scheme"), + ("rect", ANATOMY, "anatomic location"), + ("rect", EXAM, "exam type"), +] +edge_rows = [ + ("dot", GREY, "unlabeled grey = further nodes not shown"), + ("line", LINE, "solid edge = within-sector relationship"), + ("thick", CROSS, "colored thick edge = cross-sector relationship"), + ("dash", LINE, "dashed = possible or planned"), +] + +LX1, LX2 = LEGEND["x"] + 24, LEGEND["x"] + CONTENT_W // 2 + 10 +LY = LEGEND["y"] + 34 + +y = LY +for i, (kind, colors, label) in enumerate(node_rows): + fill, stroke, _tc = colors + if kind == "rect": + sw_el = base("rectangle", f"legA{i}", LX1, y, 22, 16, stroke, fill, sw=1) + sw_el["roundness"] = {"type": 3} + els.append(sw_el) + elif kind == "diamond": + els.append(base("diamond", f"legA{i}", LX1, y - 3, 24, 22, stroke, fill)) + els.append(text(f"legA{i}_l", LX1 + 32, y - 1, label, size=13, color=BODY, w=340)) + y += 28 + +y = LY +for i, (kind, color, label) in enumerate(edge_rows): + if kind == "dot": + dot(f"legB{i}", LX2 + 11, y + 8, 9, fill=color[0], stroke=color[1]) + elif kind == "line": + els.append(base("line", f"legB{i}", LX2, y + 8, 30, 0, color, "transparent", sw=2)) + find(f"legB{i}")["points"] = [[0, 0], [30, 0]] + find(f"legB{i}")["boundElements"] = None + elif kind == "thick": + els.append(base("line", f"legB{i}", LX2, y + 8, 30, 0, color, "transparent", sw=3)) + find(f"legB{i}")["points"] = [[0, 0], [30, 0]] + find(f"legB{i}")["boundElements"] = None + elif kind == "dash": + els.append(base("line", f"legB{i}", LX2, y + 8, 30, 0, color, "transparent", sw=2, dashed=True)) + find(f"legB{i}")["points"] = [[0, 0], [30, 0]] + find(f"legB{i}")["boundElements"] = None + els.append(text(f"legB{i}_l", LX2 + 40, y - 1, label, size=13, color=BODY, w=340)) + y += 28 + +save("knowledge/drafts/foundation-network.excalidraw") diff --git a/tools/diagrams/build_pillars.py b/tools/diagrams/build_pillars.py new file mode 100644 index 0000000..6715fd0 --- /dev/null +++ b/tools/diagrams/build_pillars.py @@ -0,0 +1,261 @@ +#!/usr/bin/env python3 +"""Build the OIDM "five pillars" technology-stack diagram (v3). + +A layered stack, read bottom to top, each layer its own hue (no blue reused +from other diagrams in the bundle) so the picture reads without words: + + 1. Foundation Context (bottom) -- shared, curated knowledge: finding and + diagnosis definitions, anatomic locations, exam types. Short + double-headed arrows between the three blocks, with one "relationships" + label over the row, say the three are tied to each other. + 2. Data Structures -- this patient's data, sitting on the foundation. The + two bands overlap by OVERLAP px and a row of thin alternating teal and + amber threads runs through the overlap, so the layers look stitched + together rather than merely stacked. No arrows, and never the word + "pointer": the structures are interconnected with the foundation at + every finding, diagnosis, location and exam type, not pointing at one. + 3. SDKs -- a thin band between the data layer and the top. + 4/5. Use Cases and Sample Applications -- two panels sharing the top band, + joined by a short horizontal connector labelled "illustrates". + +Geometry rules: every band is CONTENT_W wide and starts at x=0; vertical +gaps between bands are all BAND_GAP, except the Data/Foundation seam, which +is a deliberate overlap; band heights are computed from their contents, so +no band is taller than its own text needs. + +Icons: Health Icons (CC0/MIT, outline style) for anatomy/exam/person glyphs, +Lucide (ISC, with one Feather-derived MIT icon) for everything else -- see +icons/LICENSES.md for the full source list and the two slots where Health +Icons had no matching glyph and Lucide was used instead. Health Icons' +outline set is filled-path art on a 48x48 viewBox with built-in padding, so +it renders optically smaller than Lucide's 24x24 stroke art at the same box +size; ICON_FILLED compensates. + +Output: knowledge/drafts/pillars.excalidraw; render with render_excalidraw.py. +""" +from excalib import els, base, text, image, save, AMBER, TEAL, VIOLET, ROSE, GREEN, CAPTION + +# ---------------------------------------------------------------- palette +# The five-hue palette (matched lightness steps, no hue repeats, no blue +# reused from any prior diagram) lives in excalib.py as AMBER/TEAL/VIOLET/ +# ROSE/GREEN so other diagrams -- e.g. build_three_axes.py, a detail view +# of the Foundation Context/AMBER pillar -- can match it exactly. + +# ---------------------------------------------------------------- layout constants +CONTENT_W = 880 +BAND_GAP = 24 # the one vertical gap between bands (the seam overlaps instead) +PAD_BAND = 20 # a band's own inner padding on all sides +GAP = 20 # gap between sibling blocks inside a band +GAP_REL = 64 # wider gap, so a double-headed arrow reads as an arrow and not a diamond +ICON = 28 # harmonized icon render size +ICON_FILLED = 32 # filled-path icon sets need a bigger box to match optically +OVERLAP = 36 # how far the Data Structures band sits over the Foundation band + +_uid = [0] + + +def uid(prefix: str) -> str: + _uid[0] += 1 + return f"{prefix}{_uid[0]}" + + +def band_rect(id_: str, x: float, y: float, w: float, h: float, pal: dict, at_front=False) -> dict: + """Draw a band's background rectangle. Pass at_front=True when the band's + true height is only known after laying out its header/blocks (they were + already appended to els) -- this inserts the rect at index 0 so it still + paints behind its own contents instead of covering them. Note the order + that matters at the seam: whichever band rect is inserted at index 0 last + ends up furthest back, so Foundation Context must be built last for the + Data Structures band to sit on top of it in the overlap.""" + r = base("rectangle", id_, x, y, w, h, pal["stroke"], pal["band"]) + r["roundness"] = {"type": 3} + if at_front: + els.insert(0, r) + else: + els.append(r) + return r + + +def band_header(x: float, y: float, icon_path: str, pal: dict, title: str, subtitle: str, + size=20, filled_icon=False) -> float: + """Bold band title with its icon to the left, subtitle below. Returns bottom y.""" + s = ICON_FILLED if filled_icon else ICON + image(uid("bicon"), x, y - (s - ICON) / 2 - 2, s, s, icon_path, color=pal["stroke"]) + els.append(text(uid("btitle"), x + ICON + 12, y, title, size=size, color=pal["text"])) + y2 = y + size * 1.3 + els.append(text(uid("bsub"), x + ICON + 12, y2, subtitle, size=13, color=pal["mid"])) + return y2 + 13 * 1.25 + + +def icon_block_h(lines: list[str], desc: str | None = None) -> float: + """Height an icon_block needs for this many label lines/descriptor.""" + n_title = len(lines) + return 12 + ICON + 8 + n_title * 15 * 1.25 + (13 * 1.25 + 2 if desc else 0) + 10 + + +def icon_block(x: float, y: float, w: float, h: float, icon_path: str, pal: dict, + lines: list[str], desc: str | None = None, filled_icon=False) -> dict: + """Icon centered on top, label line(s) centered below, optional lighter + descriptor line last. Background is the band's own deeper pastel so the + block reads as 'inside' the band, not a separate object. h is passed in + (not computed per-block) so every block in a row shares the same height + even when label line counts differ. Returns the block rectangle.""" + r = base("rectangle", uid("blk"), x, y, w, h, pal["stroke"], pal["block"], sw=1) + r["roundness"] = {"type": 3} + els.append(r) + cx = x + w / 2 + # center this block's own (possibly shorter) content within the shared h + content_h = icon_block_h(lines, desc) - 22 # minus this fn's fixed 12+10 top/bottom pad + top = y + (h - content_h) / 2 + s = ICON_FILLED if filled_icon else ICON + image(uid("blki"), cx - s / 2, top - (s - ICON) / 2, s, s, icon_path, color=pal["stroke"]) + ty = top + ICON + 6 + for ln in lines: + els.append(text(uid("blkt"), x + 6, ty, ln, size=15, color=pal["text"], align="center", w=w - 12)) + ty += 15 * 1.25 + if desc: + els.append(text(uid("blkd"), x + 6, ty + 2, desc, size=13, color=pal["mid"], align="center", w=w - 12)) + return r + + +def chip(cx: float, y_top: float, s: str, fill: str, stroke: str, color: str, + size=13, pad_x=9, pad_y=3) -> float: + """A short caption on its own opaque rounded plate, centered on cx, so it + reads as a label for what it sits over and never mixes with a line or a + band fill behind it. Returns bottom y.""" + w = len(s) * size * 0.58 + 2 * pad_x + h = size * 1.25 + 2 * pad_y + r = base("rectangle", uid("chip"), cx - w / 2, y_top, w, h, stroke, fill, sw=1) + r["roundness"] = {"type": 3} + els.append(r) + els.append(text(uid("chipt"), cx - w / 2 + pad_x, y_top + pad_y, s, size=size, color=color, + align="center", w=w - 2 * pad_x)) + return y_top + h + + +def hconn(x1: float, x2: float, y: float, color: str, sw=1, both=False) -> None: + """A plain horizontal connector; both=True gives it two arrowheads.""" + a = base("arrow" if both else "line", uid("conn"), x1, y, x2 - x1, 0, color, "transparent", sw=sw) + a.update({"points": [[0, 0], [x2 - x1, 0]], "boundElements": None}) + if both: + a.update({"startArrowhead": "arrow", "endArrowhead": "arrow"}) + els.append(a) + + +# ============================================================ 5/4. Use Cases | Sample Applications +# Top band: two panels, title + one-line subtitle each, so the band is only +# as tall as that text needs. +Y_TOP = 0 +GAP_MID = 104 # wide enough for the "illustrates" label to sit clear of both panels +PANEL_PAD = 14 +PANEL_INSET = PAD_BAND - 2 # same left inset as the full-width band headers +PANEL_TITLE = 18 +PANEL_H = PANEL_PAD + PANEL_TITLE * 1.3 + 13 * 1.25 + PANEL_PAD +panel_w = (CONTENT_W - GAP_MID) / 2 + +band_rect(uid("panel"), 0, Y_TOP, panel_w, PANEL_H, ROSE) +band_rect(uid("panel"), panel_w + GAP_MID, Y_TOP, panel_w, PANEL_H, GREEN) +band_header(PANEL_INSET, Y_TOP + PANEL_PAD, "icons/lucide-lightbulb.svg", ROSE, + "Use Cases", "what the project wants built", size=PANEL_TITLE) +band_header(panel_w + GAP_MID + PANEL_INSET, Y_TOP + PANEL_PAD, "icons/lucide-app-window.svg", GREEN, + "Sample Applications", "what has been built", size=PANEL_TITLE) + +# "illustrates": a short horizontal connector at the panels' mid-height, +# spanning only the gap between them, with its label on a plate above it. +conn_y = Y_TOP + PANEL_H / 2 +hconn(panel_w + 2, panel_w + GAP_MID - 2, conn_y, CAPTION) +chip(panel_w + GAP_MID / 2, conn_y - 7 - (13 * 1.25 + 6), "illustrates", + "#ffffff", "transparent", CAPTION) + +Y_SDK = Y_TOP + PANEL_H + BAND_GAP + +# ============================================================ 3. SDKs (thin full-width band) +sdk_hdr_bottom = band_header(PAD_BAND - 2, Y_SDK + 16, "icons/lucide-package.svg", VIOLET, + "SDKs", "wrap the structures · attach the shared knowledge · support authoring", + size=18) +SDK_BOTTOM = sdk_hdr_bottom + 16 +band_rect(uid("band"), 0, Y_SDK, CONTENT_W, SDK_BOTTOM - Y_SDK, VIOLET, at_front=True) + +Y_DATA = SDK_BOTTOM + BAND_GAP + +# ============================================================ 2. Data Structures +hdr_bottom = band_header(PAD_BAND - 2, Y_DATA + 18, "icons/lucide-layers.svg", TEAL, + "Data Structures", "this patient · Patient Context", size=20) +BLOCK_ROW_Y = hdr_bottom + 14 +W4 = (CONTENT_W - 2 * PAD_BAND - 3 * GAP) / 4 +d_positions = [PAD_BAND + i * (W4 + GAP) for i in range(4)] +d_specs = [ + ("icons/lucide-clipboard.svg", ["Observation"], False), + ("icons/lucide-clipboard-list.svg", ["Exam Finding", "List"], False), + ("icons/lucide-list.svg", ["Imaging Problem", "List"], False), + ("icons/healthicons-person.svg", ["Imaging Persona"], True), +] +ROW_H_DATA = max(icon_block_h(lines) for _, lines, _ in d_specs) +for xpos, (ipath, lines, filled) in zip(d_positions, d_specs): + icon_block(xpos, BLOCK_ROW_Y, W4, ROW_H_DATA, ipath, TEAL, lines, filled_icon=filled) +DATA_BLOCKS_BOTTOM = BLOCK_ROW_Y + ROW_H_DATA + +# The seam: the Foundation band's top edge runs OVERLAP px above the Data +# band's bottom edge, behind it, so the two bands interlock instead of +# stacking. Everything in the Data band clears that line. +FOUND_TOP = DATA_BLOCKS_BOTTOM + 18 +DATA_BAND_BOTTOM = FOUND_TOP + OVERLAP +band_rect(uid("band"), 0, Y_DATA, CONTENT_W, DATA_BAND_BOTTOM - Y_DATA, TEAL, at_front=True) + +# ============================================================ 1. Foundation Context (bottom) +# Built last so its rect lands behind the Data Structures band at the seam. +SEAM_CAP_Y = DATA_BAND_BOTTOM + 50 +seam_cap_bottom = SEAM_CAP_Y + 13 * 1.25 +hdr_bottom_f = band_header(PAD_BAND - 2, seam_cap_bottom + 16, "icons/lucide-book-open.svg", AMBER, + "Foundation Context", "shared, curated knowledge", size=20) +REL_Y = hdr_bottom_f + 12 +rel_bottom = chip(CONTENT_W / 2, REL_Y, "relationships", AMBER["band"], AMBER["stroke"], AMBER["text"]) +F_ROW_Y = rel_bottom + 10 +W3 = (CONTENT_W - 2 * PAD_BAND - 2 * GAP_REL) / 3 +f_positions = [PAD_BAND + i * (W3 + GAP_REL) for i in range(3)] +f_specs = [ + ("icons/lucide-tag.svg", ["Finding/diagnosis definitions"], "finding models · CDEs", False), + ("icons/healthicons-lungs.svg", ["Anatomic locations"], "anchored in RadLex", True), + ("icons/healthicons-xray.svg", ["Exam types"], "LOINC/RSNA Playbook", True), +] +ROW_H_FOUND = max(icon_block_h(lines, desc) for _, lines, desc, _ in f_specs) +for xpos, (ipath, lines, desc, filled) in zip(f_positions, f_specs): + icon_block(xpos, F_ROW_Y, W3, ROW_H_FOUND, ipath, AMBER, lines, desc=desc, filled_icon=filled) +FOUND_BLOCKS_BOTTOM = F_ROW_Y + ROW_H_FOUND + +# double-headed arrows in the two gaps between the three blocks +arrow_y = F_ROW_Y + ROW_H_FOUND / 2 +for i in range(2): + x1 = f_positions[i] + W3 + 6 + hconn(x1, x1 + GAP_REL - 12, arrow_y, AMBER["stroke"], sw=2, both=True) + +FOUND_BAND_BOTTOM = FOUND_BLOCKS_BOTTOM + PAD_BAND +band_rect(uid("band"), 0, FOUND_TOP, CONTENT_W, FOUND_BAND_BOTTOM - FOUND_TOP, AMBER, at_front=True) + +# ============================================================ the stitch, drawn over both bands +# Thin threads alternating the two bands' colors, running through the +# overlap and out either side of it, so the seam reads as stitched. +N_THREADS = 12 +margin = 62 +span = CONTENT_W - 2 * margin +SEAM = DATA_BAND_BOTTOM # the visible boundary: the Data band's lower edge +# A row of identical verticals reads as a fence, so the two colors +# interdigitate instead: every amber thread runs up out of the Foundation +# band and well into the Data Structures band, every teal thread runs down +# out of the Data band and well into the Foundation band, and they overlap +# across the seam. Each layer is threaded through the other. +for i in range(N_THREADS): + x = margin + span * i / (N_THREADS - 1) + if i % 2 == 0: + y1, y2, color = SEAM - 44, SEAM + 4, AMBER["stroke"] + else: + y1, y2, color = SEAM - 4, SEAM + 40, TEAL["stroke"] + ln = base("line", uid("thread"), x, y1, 0, y2 - y1, color, "transparent", sw=2) + ln.update({"points": [[0, 0], [0, y2 - y1]], "boundElements": None}) + els.append(ln) + +els.append(text(uid("seaml"), 0, SEAM_CAP_Y, + "interconnected at every finding, diagnosis, location, and exam type", + size=13, color=CAPTION, align="center", w=CONTENT_W)) + +save("knowledge/drafts/pillars.excalidraw") diff --git a/tools/diagrams/build_three_axes.py b/tools/diagrams/build_three_axes.py new file mode 100644 index 0000000..e24e107 --- /dev/null +++ b/tools/diagrams/build_three_axes.py @@ -0,0 +1,106 @@ +#!/usr/bin/env python3 +"""Build the OIDM "three axes of Foundation Context" detail diagram. + +A smaller companion to build_pillars.py, zoomed into the Foundation +Context (AMBER) pillar of that stack: the three axes shared knowledge is +organized along -- finding/diagnosis, anatomic location, exam type -- each +a curated layer over an existing external standard. Same AMBER palette and +same icon files as the main stack diagram (from excalib.py / icons/), so +the two figures read as one family. + +Landscape, three columns: + - icon, title, a short "WHAT/WHERE/HOW" tagline + - a small darker block at the bottom of each column: "layered over: " + - two double-headed "relationships" connectors between the columns + - one caption underneath summarizing the pattern + +Output: knowledge/drafts/three-axes.excalidraw; render with render_excalidraw.py. +""" +from excalib import els, base, text, image, arrow, boxed_label, save, AMBER, CAPTION + +CONTENT_W = 860 +ICON = 36 +_uid = [0] + + +def uid(prefix: str) -> str: + _uid[0] += 1 + return f"{prefix}{_uid[0]}" + + +def axis_column(id_: str, x: float, y: float, w: float, h: float, icon_path: str, + title_lines: list[str], max_title_lines: int, tagline: str, + desc_lines: list[str], block_h: float) -> None: + r = base("rectangle", id_, x, y, w, h, AMBER["stroke"], AMBER["block"], sw=2) + r["roundness"] = {"type": 3} + els.append(r) + + cx = x + w / 2 + top = y + 44 + image(uid("coli"), cx - ICON / 2, top, ICON, ICON, icon_path, color=AMBER["stroke"]) + + ty = top + ICON + 10 + for ln in title_lines: + els.append(text(uid("colt"), x + 8, ty, ln, size=17, color=AMBER["text"], align="center", w=w - 16)) + ty += 17 * 1.25 + # tagline sits at a height fixed by the row's max title-line count, not + # this column's own count, so every column's tagline lines up even when + # one title wraps to more lines than another. + tag_y = top + ICON + 10 + max_title_lines * 17 * 1.25 + 10 + els.append(text(uid("coltag"), x + 8, tag_y, tagline, size=14, color=AMBER["mid"], align="center", w=w - 16)) + + # small darker block, bottom-anchored, uniform height across the row + block_w = w - 24 + block_x = x + 12 + block_y = y + h - 38 - block_h + rb = base("rectangle", uid("colblk"), block_x, block_y, block_w, block_h, AMBER["text"], AMBER["stroke"], sw=1) + rb["roundness"] = {"type": 3} + els.append(rb) + by = block_y + (block_h - len(desc_lines) * 13 * 1.25) / 2 + 2 + for ln in desc_lines: + els.append(text(uid("colblkt"), block_x + 6, by, ln, size=13, color="#fef3c7", align="center", w=block_w - 12)) + by += 13 * 1.25 + + +# ---------------------------------------------------------------- layout +GAP_COL = 56 +COL_W = (CONTENT_W - 2 * GAP_COL) / 3 +MAX_TITLE_LINES = 2 +BLOCK_H = 8 + 2 * 13 * 1.25 + 8 # tallest "layered over" block is 2 lines + +COL_H = (44 + ICON + 10 + MAX_TITLE_LINES * 17 * 1.25 + 10 + 14 * 1.25 + 34 + BLOCK_H + 38) + +Y0 = 66 +specs = [ + ("axis1", 0, "icons/lucide-tag.svg", ["Finding/diagnosis", "definitions"], "WHAT was found", + ["layered over: finding models", "· ACR/RSNA CDEs"]), + ("axis2", COL_W + GAP_COL, "icons/healthicons-lungs.svg", ["Anatomic locations"], "WHERE it is", + ["layered over: RadLex"]), + ("axis3", 2 * (COL_W + GAP_COL), "icons/healthicons-xray.svg", ["Exam types"], "HOW it was seen", + ["layered over: LOINC/RSNA", "Playbook"]), +] +for cid, xpos, ipath, title_lines, tagline, desc_lines in specs: + axis_column(cid, xpos, Y0, COL_W, COL_H, ipath, title_lines, MAX_TITLE_LINES, tagline, desc_lines, BLOCK_H) + +# two double-headed "relationships" connectors between the columns -- short +# (8px clearance from each panel edge, not touching them), with the label +# on its own white box centered above the arrow (6px clearance) so it never +# sits on top of the arrowheads. +arrow_y = Y0 + COL_H / 2 +gap1_l, gap1_r = COL_W, COL_W + GAP_COL +gap2_l, gap2_r = 2 * COL_W + GAP_COL, 2 * (COL_W + GAP_COL) + +arrow(uid("rel"), "axis1", "right", "axis2", "left", color=AMBER["stroke"], both=True, sw=1.5, inset=8) +boxed_label(uid("rellbl"), (gap1_l + gap1_r) / 2, arrow_y - 6, "relationships", size=13, color=CAPTION) + +arrow(uid("rel"), "axis2", "right", "axis3", "left", color=AMBER["stroke"], both=True, sw=1.5, inset=8) +boxed_label(uid("rellbl"), (gap2_l + gap2_r) / 2, arrow_y - 6, "relationships", size=13, color=CAPTION) + +# caption underneath all three columns +CAP_Y = Y0 + COL_H + 56 +els.append(text(uid("cap"), 0, CAP_Y, + "each a curated layer over an existing standard; the axes relate to each other and cite external references", + size=13, color=CAPTION, align="center", w=CONTENT_W)) + +save("knowledge/drafts/three-axes.excalidraw") diff --git a/tools/diagrams/build_two_planes.py b/tools/diagrams/build_two_planes.py new file mode 100644 index 0000000..ff86af6 --- /dev/null +++ b/tools/diagrams/build_two_planes.py @@ -0,0 +1,298 @@ +#!/usr/bin/env python3 +"""Build the "two planes" overview figure for the knowledgebase root page. + +The one-picture version of the whole model: Patient Context and Foundation +Context as two tilted planes, one above the other, with every fact recorded +about this patient attached downward to the shared knowledge of what such a +thing is. + + +-----------------------------------------------------+ TEAL + | Patient Context -- this patient . this exam | (upper plane) + | [CT chest] <--found on-- [pulmonary nodule] | + +-----------------------------------------------------+ + | is a | is a | located at <- thick rose + +-----------------------------------------------------+ AMBER + | Foundation Context -- shared, curated knowledge | (lower plane) + | [exam type] [definition] | tier 1 + | | covers | occurs at | + | [thorax] --contains--> [lung] --contains--> [upper| tier 2 + | lobe of ...] (the anatomy chain) + +-----------------------------------------------------+ + +Geometry: both planes are the same parallelogram -- top edge offset SKEW px +to the right of the bottom edge -- so the pair reads as two isometric sheets +seen from slightly above. Because the top edge is inset, anything placed near +a plane's top must clear `left_edge(y)`, which is what `lx()` computes; every +x-coordinate below was checked against it rather than eyeballed. + +Two constraints drove the layout and are easy to break by nudging a number: + +1. The lower plane's header ("Foundation Context" + subtitle) occupies + x = 68..283 at y = 314..358. The exam -> exam type cross-plane edge is the + leftmost near-vertical line in the figure, so it has to come down at + x >= ~305 to miss that header. That is why the lower plane's node row + starts at x=215 rather than being centred, and why the left flank of the + plane is filled with the grey "knowledge continues" nodes instead. +2. The three cross-plane edges must not cross each other, so their x-order + has to be the same where they leave the upper plane and where they land: + 308 / 545 / 660 at the top, 308 / 545 / 712 at the bottom. Two of the + three are therefore plumb (exam -> exam type, finding -> definition); the + third leans 52px right over 349px of drop to reach the end of the anatomy + chain, and that lean is what sets the definition node's right edge -- it + has to pass to the RIGHT of that node, not through it. +3. The anatomy is a containment chain on its own tier, below the exam type + and the finding definition: thorax contains lung contains upper lobe of + right lung. The exam type covers the whole region (thorax); the finding + definition occurs at lung; the patient's actual finding is located at the + one lobe. Reading the picture downward and then along tier 2 is the point + of the figure, so tier 2 is a single straight row, not a fan. + +Text widths are measured, not estimated (see tools/diagrams/README.md): every +box width below is `measured width + padding` from canvas `measureText` at +`px Helvetica, Segoe UI Emoji` in headless Chromium. + +Icons: Health Icons (CC0/MIT, outline, filled-path art -- rendered at 32px) +for the x-ray and lungs glyphs; Lucide (ISC/MIT, stroke art -- 28px) for +layers, book-open, clipboard-list, clipboard and tag. See icons/LICENSES.md. + +Output: knowledge/drafts/two-planes.excalidraw; render with render_excalidraw.py. +""" +from __future__ import annotations + +from excalib import els, base, text, image, save, AMBER, TEAL, ROSE, CAPTION + +# ---------------------------------------------------------------- constants +SKEW = 55 # how far each plane's top edge sits right of its bottom edge +PW = 830 # plane width, measured along an edge +ICON = 28 # Lucide (stroke art) +ICON_FILLED = 32 # Health Icons (filled-path art, optically smaller at equal size) + +CROSS = ROSE["stroke"] # deep rose: the cross-plane attachments +FAINT = "#a8a29e" # warm grey: "the knowledge continues" edges +GREY_FILL, GREY_STROKE = "#e7e5e4", "#a8a29e" +REL = "#78716c" # grey relationship edges inside the lower plane + +P1_Y, P1_H = 0, 185 # upper plane (Patient Context) +P2_Y, P2_H = 300, 305 # lower plane (Foundation Context); gap of 115 between + +_uid = [0] + + +def uid(prefix: str) -> str: + _uid[0] += 1 + return f"{prefix}{_uid[0]}" + + +def lx(y: float, py: float, ph: float) -> float: + """Left edge of a plane at height y -- the top edge is SKEW px further right.""" + return SKEW * (1 - (y - py) / ph) + + +# ---------------------------------------------------------------- helpers +def plane(id_: str, py: float, ph: float, pal: dict) -> None: + """A tilted parallelogram: a closed Excalidraw line, filled with the band tint.""" + ln = base("line", id_, SKEW, py, PW + SKEW, ph, pal["stroke"], pal["band"], sw=2) + ln.update({"points": [[0, 0], [PW, 0], [PW - SKEW, ph], [-SKEW, ph], [0, 0]], + "roundness": None, "boundElements": None}) + els.append(ln) + + +def header(x: float, y: float, icon_path: str, pal: dict, title: str, subtitle: str, + filled_icon=False) -> None: + """Plane title with its icon to the left and a subtitle under it.""" + s = ICON_FILLED if filled_icon else ICON + image(uid("hicon"), x, y + 2 - (s - ICON) / 2, s, s, icon_path, color=pal["stroke"]) + els.append(text(uid("htitle"), x + ICON + 12, y, title, size=20, color=pal["text"])) + els.append(text(uid("hsub"), x + ICON + 12, y + 26, subtitle, size=13, color=pal["mid"])) + + +def node_rect(id_: str, x: float, y: float, w: float, h: float, pal: dict) -> dict: + r = base("rectangle", id_, x, y, w, h, pal["stroke"], pal["block"], sw=2) + r["roundness"] = {"type": 3} + els.append(r) + return r + + +def hnode(id_: str, x: float, y: float, w: float, h: float, icon_path: str, pal: dict, + title: str, sub: str, filled_icon=False) -> dict: + """Icon on the left, bold-ish title line, lighter second line -- the compact + style used for the two Patient Context nodes.""" + r = node_rect(id_, x, y, w, h, pal) + s = ICON_FILLED if filled_icon else ICON + image(uid("ni"), x + 12 - (s - ICON) / 2, y + (h - s) / 2, s, s, icon_path, color=pal["stroke"]) + tx = x + 12 + ICON + 10 + top = y + (h - (16 * 1.25 + 2 + 13 * 1.25)) / 2 + els.append(text(uid("nt"), tx, top, title, size=16, color=pal["text"], w=w - (tx - x) - 10)) + els.append(text(uid("ns"), tx, top + 16 * 1.25 + 2, sub, size=13, color=pal["mid"], + w=w - (tx - x) - 10)) + return r + + +def vnode(id_: str, x: float, y: float, w: float, h: float, icon_path: str, pal: dict, + title: str, desc: str, filled_icon=False) -> dict: + """Icon centred on top, title, then a lighter descriptor -- the Foundation + Context style, matching build_pillars.py's icon blocks.""" + r = node_rect(id_, x, y, w, h, pal) + s = ICON_FILLED if filled_icon else ICON + top = y + (h - (ICON + 6 + 15 * 1.25 + 2 + 13 * 1.25)) / 2 + image(uid("ni"), x + w / 2 - s / 2, top - (s - ICON) / 2, s, s, icon_path, color=pal["stroke"]) + ty = top + ICON + 6 + els.append(text(uid("nt"), x + 8, ty, title, size=15, color=pal["text"], align="center", w=w - 16)) + els.append(text(uid("nd"), x + 8, ty + 15 * 1.25 + 2, desc, size=13, color=pal["mid"], + align="center", w=w - 16)) + return r + + +def chip(id_: str, x: float, y: float, w: float, h: float, pal: dict, title: str, + title_w: float, desc: str | None = None, icon_path: str | None = None, + filled_icon=False) -> dict: + """A compact node for the anatomy chain: content vertically centred, and + horizontally either centred text (no icon) or an icon+title group centred + as a unit. title_w is the MEASURED title width, needed to centre that + group. Shorter than vnode() so the chain reads as one row of locations + rather than three more blocks.""" + r = node_rect(id_, x, y, w, h, pal) + lines_h = 15 * 1.25 + (2 + 13 * 1.25 if desc else 0) + ty = y + (h - lines_h) / 2 + if icon_path: + s_ = ICON_FILLED if filled_icon else ICON + gx = x + (w - (s_ + 10 + title_w)) / 2 + image(uid("ni"), gx, y + (h - s_) / 2, s_, s_, icon_path, color=pal["stroke"]) + els.append(text(uid("nt"), gx + s_ + 10, ty, title, size=15, color=pal["text"], w=title_w)) + else: + els.append(text(uid("nt"), x + 8, ty, title, size=15, color=pal["text"], + align="center", w=w - 16)) + if desc: + els.append(text(uid("nd"), x + 8, ty + 15 * 1.25 + 2, desc, size=13, color=pal["mid"], + align="center", w=w - 16)) + return r + + +def dot(id_: str, cx: float, cy: float, r: float) -> None: + e = base("ellipse", id_, cx - r, cy - r, 2 * r, 2 * r, GREY_STROKE, GREY_FILL, sw=1) + e["opacity"] = 70 + els.append(e) + + +def faint(x1: float, y1: float, x2: float, y2: float) -> None: + ln = base("line", uid("f"), x1, y1, x2 - x1, y2 - y1, FAINT, "transparent", sw=1) + ln.update({"points": [[0, 0], [x2 - x1, y2 - y1]], "boundElements": None, "opacity": 60}) + els.append(ln) + + +def path(id_: str, pts: list[tuple[float, float]], color: str, sw=3, head="arrow") -> None: + """Multi-point routed arrow; excalib.arrow()'s elbow modes only do 3 points.""" + x0, y0 = pts[0] + ar = base("arrow", id_, x0, y0, pts[-1][0] - x0, pts[-1][1] - y0, color, "transparent", sw=sw) + ar.update({"points": [[px - x0, py - y0] for px, py in pts], "startBinding": None, + "endBinding": None, "startArrowhead": None, "endArrowhead": head, + "boundElements": None}) + els.append(ar) + + +def plate(id_: str, cx: float, cy: float, s: str, w: float, size=13, color=CAPTION, + fill="#ffffff", pad_x=6, pad_y=3) -> None: + """An edge label on an opaque plate, centred on (cx, cy), so it masks the + line it sits on. w is the MEASURED text width. fill is the tint the label + lands on -- a white patch inside a tinted plane is visible, so pass the + plane's band colour for labels drawn inside a plane.""" + bw, bh = w + 2 * pad_x, size * 1.25 + 2 * pad_y + r = base("rectangle", id_, cx - bw / 2, cy - bh / 2, bw, bh, "transparent", fill, sw=0) + r["roundness"] = {"type": 3} + els.append(r) + els.append(text(id_ + "_t", cx - bw / 2 + pad_x, cy - bh / 2 + pad_y, s, size=size, + color=color, align="center", w=w)) + + +# ================================================================ planes +plane("plane_patient", P1_Y, P1_H, TEAL) +plane("plane_foundation", P2_Y, P2_H, AMBER) + +header(67, P1_Y + 12, "icons/lucide-layers.svg", TEAL, + "Patient Context", "this patient \u00b7 this exam") +header(68, P2_Y + 14, "icons/lucide-book-open.svg", AMBER, + "Foundation Context", "shared, curated knowledge") + +# ================================================================ upper plane: two nodes +# "CT chest" 64.0 / "this patient . 2026-03-04" 140.9 at 16/13px -> 141 + icon +# 28 + pads = 203; 210 used. Placed so that x=308 -- the leftmost column that +# clears the lower plane's header -- falls inside it, making that drop plumb +# (see module docstring, constraint 1). +exam = hnode("exam", 170, 76, 210, 66, "icons/lucide-clipboard-list.svg", TEAL, + "CT chest", "this patient \u00b7 2026-03-04") +# "pulmonary nodule" 127.2 / "present . 8 mm . new" 122.8 -> 127 + 28 + pads = 189; 196 used. +# x=500 is chosen so that x=545 (the definition node's centre) falls inside it, +# making that cross-plane edge exactly plumb, while leaving the node's right end +# far enough right that the "located at" edge reaches the chain's far node +# without leaning far. +finding = hnode("finding", 500, 100, 196, 66, "icons/lucide-clipboard.svg", TEAL, + "pulmonary nodule", "present \u00b7 8 mm \u00b7 new") + +path("e_found_on", [(500, 133), (386, 111)], TEAL["stroke"], sw=2) +plate("l_found_on", 460, 100, "found on", 50.6, color=TEAL["mid"], fill=TEAL["band"]) + +# ================================================================ lower plane, tier 1: exam type + definition +# Both boxes are 190 wide: the widest line in each measures 157.5 and 152.5px, +# so 190 (= ~157 + 2 x 16) fits either with room to spare. +ROW_Y, ROW_H, NW = 372, 97, 190 +X_EXAM_T, X_DEF = 215, 450 +exam_type = vnode("exam_type", X_EXAM_T, ROW_Y, NW, ROW_H, "icons/healthicons-xray.svg", AMBER, + "CT Chest W contrast IV", "exam type", filled_icon=True) +definition = vnode("definition", X_DEF, ROW_Y, NW, ROW_H, "icons/lucide-tag.svg", AMBER, + "pulmonary nodule", "finding/diagnosis definition") + +# ================================================================ lower plane, tier 2: the anatomy chain +# thorax -> lung -> upper lobe of right lung, one straight row, 82px gaps -- +# just wide enough for a "contains" plate (48.4 + 12 = 60.4) with ~11px of +# line showing either side of it. Only "lung" carries the lungs glyph: three +# copies of it would read as three different organs rather than one chain. +CH_Y, CH_H = 515, 62 +thorax = chip("thorax", 215, CH_Y, 130, CH_H, AMBER, "thorax", 41.7, desc="anatomic location") +lung = chip("lung", 427, CH_Y, 110, CH_H, AMBER, "lung", 28.4, + icon_path="icons/healthicons-lungs.svg", filled_icon=True) +upper_lobe = chip("upper_lobe", 619, CH_Y, 185, CH_H, AMBER, "upper lobe of right lung", 153.4) + +CH_MID = CH_Y + CH_H / 2 +path("r_contains1", [(345, CH_MID), (427, CH_MID)], REL, sw=2) +plate("l_contains1", 386, CH_MID, "contains", 48.4, color=REL, fill=AMBER["band"]) +path("r_contains2", [(537, CH_MID), (619, CH_MID)], REL, sw=2) +plate("l_contains2", 578, CH_MID, "contains", 48.4, color=REL, fill=AMBER["band"]) + +# Tier 1 -> tier 2, in the 46px band between the rows. Both labels sit beside +# their edge rather than on it: the drops are too short to mask. +path("r_covers", [(280, ROW_Y + ROW_H), (280, CH_Y - 3)], REL, sw=2) +plate("l_covers", 320, 492, "covers", 38.3, color=REL, fill=AMBER["band"]) +path("r_occurs", [(500, ROW_Y + ROW_H), (482, CH_Y - 3)], REL, sw=2) +plate("l_occurs", 540, 492, "occurs at", 52.7, color=REL, fill=AMBER["band"]) + +# The knowledge continues: unlabelled nodes on the plane's left flank (kept +# free by pushing tier 1 right, see constraint 1) and in the right flank that +# the definition node leaves open. The right pair's faint edge joins the chain +# to the RIGHT of x=712 so it never crosses the "located at" drop. +for gid, gx, gy, gr in [("g1", 105, 395, 13), ("g2", 66, 437, 10), ("g3", 128, 447, 11), + ("g4", 170, 512, 9), ("g5", 806, 455, 12), ("g6", 838, 417, 8)]: + dot(gid, gx, gy, gr) +faint(105, 395, 66, 437) +faint(105, 395, 128, 447) +faint(128, 447, 170, 512) +faint(118, 398, X_EXAM_T, 410) +faint(838, 417, 806, 455) +faint(798, 466, 778, CH_Y) + +# ================================================================ cross-plane attachments +# Three thick rose near-verticals; see constraint 2 for why two are plumb and +# the third leans. None passes through a node or the lower plane's header. +path("x_exam", [(308, 142), (308, ROW_Y - 3)], CROSS, sw=3) +plate("x_exam_l", 308, 240, "is a", 20.2, color=ROSE["text"]) +path("x_isa", [(545, 166), (545, ROW_Y - 3)], CROSS, sw=3) +plate("x_isa_l", 545, 240, "is a", 20.2, color=ROSE["text"]) +path("x_located", [(660, 166), (711, CH_Y - 4)], CROSS, sw=3) +plate("x_located_l", 671, 240, "located at", 56.4, color=ROSE["text"]) + +# ================================================================ caption +els.append(text("caption", 0, P2_Y + P2_H + 26, + "every fact about this patient is attached to the shared knowledge " + "of what such a thing is", + size=14, color=CAPTION, align="center", w=PW + SKEW)) + +save("knowledge/drafts/two-planes.excalidraw") From 8664b5eac5be5adfbf54a80fd4b73ada63497a95 Mon Sep 17 00:00:00 2001 From: "Alkasab Agent (agent-dev)" Date: Wed, 30 Sep 2026 21:07:23 +0000 Subject: [PATCH 13/19] Write the hub, next-generation schema, and relationships pages - Finding Models and Common Data Elements: one kind of content in two collections, beta and release channels, cross-linked - The next-generation schema: node types, edges, and the relationship table verified against the pinned CDE branch - Relationships among definitions: manifestation and causation, associated findings, edge properties, the derived differential, assessment schemes - Two-planes figure embedded in the Overview; every page cross-reviewed with provenance dispositions Co-Authored-By: Claude Fable 5.1 --- .../drafts/finding-models-and-cdes-hub.md | 91 ++++++++++ knowledge/drafts/index.md | 3 + .../next-gen-findingclass-neighborhood.svg | 1 + knowledge/drafts/next-generation-schema.md | 160 ++++++++++++++++++ knowledge/drafts/overview.md | 4 + knowledge/drafts/relationships.md | 111 ++++++++++++ 6 files changed, 370 insertions(+) create mode 100644 knowledge/drafts/finding-models-and-cdes-hub.md create mode 100644 knowledge/drafts/next-gen-findingclass-neighborhood.svg create mode 100644 knowledge/drafts/next-generation-schema.md create mode 100644 knowledge/drafts/relationships.md diff --git a/knowledge/drafts/finding-models-and-cdes-hub.md b/knowledge/drafts/finding-models-and-cdes-hub.md new file mode 100644 index 0000000..aad7efd --- /dev/null +++ b/knowledge/drafts/finding-models-and-cdes-hub.md @@ -0,0 +1,91 @@ +--- +type: Overview +title: Finding Models and Common Data Elements +description: "Definitions of findings and diagnoses as the anchor for everything the project knows about them, held in two cross-linked collections: the beta channel and the release channel." +tags: [foundation-context, finding-models, cdes, radelement, next-gen-schema] +status: draft +generated: { by: claude-opus-5/2026-09-29-restructure/hub-page, at: 2026-09-29T21:32:33Z } +sources: + - id: lead-hub + resource: docs/plans/2026-09-22-layout-plan.md + title: The project lead's statements of 2026-09-23 to 2026-09-29 on this page - the anchor idea, the two collections, the beta and release channels, the cross-links, document-oriented today, and one next-generation schema for both (recorded verbatim in the layout plan) + last_modified: 2026-09-29 + - id: lead-2026-09-22 + resource: docs/plans/restructure-joint-notes.md + title: The project lead's decisions of 2026-09-22 - a common data element and a finding model are the same content, the inclusive collection and the well-reviewed collection, and the urgent move off document orientation (quoted in the restructure joint notes) + last_modified: 2026-09-22 + - id: build-plan + resource: knowledge/plans/2026-09-20-knowledgebase-build-plan.md + title: Knowledgebase build plan, carrying the project lead's content direction of 2026-09-21 on the exam-oriented sub-taxonomies + last_modified: 2026-09-21 + - id: oifm-repo + resource: https://github.com/openimagingdata/findingmodels/tree/4475ac1bcb591f1a0951b2082b59208def173a5d + title: "Open Imaging Finding Models repository, main at 4475ac1 (snapshot of 2026-04-28): the README, the schema (schema/finding_model.schema.json and the explanatory schema/finding_model_schema.md), the 2,382 per-definition files under defs/, and ids.json (2,382 definitions across five organization segments, 115 of them under the CDE code)" + last_modified: 2026-04-28 + - id: oifm-authoring + resource: https://github.com/openimagingdata/findingmodels/tree/4475ac1bcb591f1a0951b2082b59208def173a5d/scripts/finding_authoring + title: "The finding model authoring scripts and prompt fragments, findingmodels main at 4475ac1: create_model.py, which builds a stub with standard attributes, identifiers and codes, and prompts/fragments/enrichment.md, the optional later enrichment step applied through fix_stub.py" + last_modified: 2026-04-20 + - id: oifm-cde-def + resource: https://github.com/openimagingdata/findingmodels/blob/4475ac1bcb591f1a0951b2082b59208def173a5d/defs/acute_aortic_syndrome.fm.json + title: "Acute Aortic Syndrome, OIFM_CDE_000126: a finding model derived from a Common Data Element, credited to the ACR/RSNA Common Data Elements Project and carrying its RadElement identity as an index code (findingmodels main at 4475ac1)" + last_modified: 2025-11-17 + - id: oifm-taxonomies + resource: https://github.com/openimagingdata/findingmodels/blob/a30c3c95fa3943e7340ce87575f4b1b926987eb8/lists/README.md + title: The six per-exam finding taxonomies and their coverage ledger, findingmodels taxonomy-export-2026-08-15 at a30c3c9, exported 2026-08-15 + last_modified: 2026-08-15 + - id: radelement + resource: https://radelement.org + title: The published ACR/RSNA Common Data Element collection and its public API, whose sets are attributed to the American College of Radiology and the Radiological Society of North America + - id: cde-nextgen + resource: https://github.com/RSNA/ACR-RSNA-CDEs/blob/b541b74c22a33b64834309244569a60d06de79e4/docs/next-gen-schema/00-current-understanding.md + title: "Next-Generation CDE Schema: Current Understanding, ACR-RSNA-CDEs next-gen-2026 at b541b74 - the graph as the internal representation, the finding models as drafts for FindingClasses, and bringing them over as a review step" + - id: cde-schema + resource: https://github.com/RSNA/ACR-RSNA-CDEs/blob/b541b74c22a33b64834309244569a60d06de79e4/cde.schema.json + title: The current Common Data Element schema, ACR-RSNA-CDEs next-gen-2026 at b541b74 - a JSON Schema whose root is a nested element_set document + last_modified: 2024-11-19 + - id: cde-staging + resource: https://github.com/openimagingdata/CDEStaging/tree/b814a102655054ac08b3c118cb1977a387655a8b + title: "CDE staging repository, main at b814a10: the staging area ahead of the review pipeline, the manual report extraction process, and the three gap catalogs recording what real report language could not be represented" + - id: status-2026-01 + resource: https://gamma.app/docs/Open-Imaging-Data-Model-2026-Status-Update:-Realizing-Object-Oriented-Imaging-Results-yfxzx4q9zssafal + title: "Open Imaging Data Model 2026 Status Update: Realizing Object-Oriented Imaging Results, January 2026 - \"OIFM: the CDE workbench\" and the workbench effect" + - id: siim-2026 + resource: https://oidm-public.t3.tigrisfiles.io/oidm-knowledge-sources/SIIM%202026%20Reports-of-the-Future.pptx + title: Structured Results and Context for Next-Generation Imaging Resulting Tools, SIIM 2026 annual meeting talk, June 2026, Mass General Brigham - slide 9 notes on the high-velocity workbench + last_modified: 2026-06-11 +--- + +# Finding Models and Common Data Elements + +Definitions of findings and diagnoses anchor these concepts in a form that associated content can be attached to: a name and synonyms, a definition, the attributes that characterize it, the anatomy it applies to, the modalities that show it, its codes in outside terminologies, and its relationships to other definitions.[^lead-hub][^oifm-repo][^cde-nextgen] Everything the project knows about a kind of finding hangs off this one anchor.[^lead-hub] The project holds these definitions in two collections, and they are the same kind of content.[^lead-2026-09-22] + +**Open Imaging Finding Models** are an inclusive collection, maintained by the OIDM project.[^lead-hub][^oifm-repo] The OIFM repository is intended for rapid, community-based prototyping and iteration based on an open-source model, with changes proposed by anyone.[^lead-hub] A definition can start as little more than a name and a stub and be improved over time.[^lead-2026-09-22][^oifm-authoring] The collection holds a few thousand definitions today, drawn from several sources, and is being reorganized around exam-oriented taxonomies of the findings that actually appear in reports.[^oifm-repo][^build-plan][^oifm-taxonomies] + +**ACR/RSNA Common Data Elements** are the well-reviewed collection, maintained by the American College of Radiology and the Radiological Society of North America and published through radelement.org.[^lead-hub][^radelement] Entry is a review step, and the project treats the finding models as the workbench where definitions are proved out before that review.[^cde-nextgen][^cde-staging][^status-2026-01][^siim-2026] + +**The relationship.** The two collections describe the same ideas and will share the same schema.[^lead-hub][^lead-2026-09-22] The difference is how they are released: finding models are the beta channel, with rapid additions and updates; Common Data Elements are the release channel, reviewed and stable.[^lead-hub] The two are cross-linked and stay that way: when a definition migrates into the CDEs, it continues to be maintained in the OIFM repository and carries a reference to its CDE identity, so an application can resolve either one to the same concept.[^lead-hub][^oifm-cde-def] About a hundred finding models were derived directly from CDEs.[^oifm-repo][^oifm-cde-def] Coverage is measured the same way on both sides, by running real reports against the definitions and recording what they could not represent.[^lead-hub][^cde-staging] + +**Where both are going.** The ACR/RSNA CDE project is developing a next-generation, graph-based schema, and both collections are intended to move onto it, so that applications use them together.[^cde-nextgen][^lead-hub] Both CDEs and OIFMs are document-oriented today, and moving them onto that graph is an immediate priority.[^lead-hub][^lead-2026-09-22][^oifm-repo][^cde-schema][^cde-nextgen] + +# In this section + +- OIFM content: what the inclusive collection holds and where it is going +- Definition formats: what a finding model and a CDE look like today +- Identifiers: the OIFM scheme, RadElement identifiers, and index codes +- The next-generation schema, with relationships and standard clinical metadata +- Authoring and review + +[^lead-hub]: The project lead, 2026-09-23 to 2026-09-29, recorded verbatim in the layout plan: the finding/diagnosis definition as "an unified anchor for the CONCEPT of a finding/diagnosis in a form that can be used to attach associated context: name, synonyms, definition, attributes, etc."; the inclusive collection "maintained by the OIDM project" and "intended for rapid, community-based prototyping and iteration based on an open-source model ... with changes proposed by anyone"; the well-reviewed collection "published through radelement.org"; "they will have the same schema and describe the same ideas", with OIFMs as "beta"/rapid additions and updates and CDEs as "release"/reviewed and stable; the maintained cross-links, where a definition that migrates "will continue to be maintained in the OIFM repo but have a reference to its CDE identity"; "Both CDEs and OIFMs are document-oriented today"; and, on 2026-09-23, one next-generation schema "which will be for BOTH CDEs and OIFMs--I think applications will be able to use both at once". +[^lead-2026-09-22]: The project lead, 2026-09-22, quoted in the restructure joint notes: "A 'CDE' and a 'Finding Model' are the same thing, but they're in different repos", the OIDM-maintained collection "intended to be very INCLUSIVE, can almost be drafts" against the ACR/RSNA collection "intended to be WELL-REVIEWED ... more like something published", both to use the classes being defined in the CDE schema rewrite, and "OIFMs VERY soon need to get re-organized around the graph-based approach ... They're currently document-oriented and we need to fix that SOON." +[^build-plan]: Knowledgebase build plan: the project lead's content direction of 2026-09-21, that the taxonomy branch in the finding models repository is "the immediate direction for all of the content, probably replacing a lot of the Gamuts-based models". +[^oifm-repo]: Open Imaging Finding Models repository, main at 4475ac1, a snapshot of 2026-04-28. The README describes finding models as updatable data models defining open, standard semantic tags for imaging findings and their properties, with relationships to other ontologies; the schema document gives the definition fields (identifier, name, description, synonyms, tags, contributors, attributes, index codes into standard ontologies); `ids.json` holds 2,382 definitions across five organization segments (1,933 GMTS, 256 OIDM, 115 CDE, 47 MGB, 31 MSFT) and 5,709 attribute identifiers. The 115 under the CDE segment are the models derived from Common Data Elements. The January 2026 status update gives the collection as "nearly 3,000". For the document orientation of the collection today: the schema is a JSON Schema for a single self-contained finding model, and the corpus is 2,382 individual files under `defs/`, one per definition. +[^oifm-authoring]: The finding model authoring scripts and prompt fragments, findingmodels main at 4475ac1. `scripts/finding_authoring/create_model.py` creates "a complete finding model stub with IDs and codes", building it from a name and a description with the two standard attributes, then minting identifiers against the index; the single-model path requires a description, so a stub is not name-only. `prompts/fragments/enrichment.md` is the optional later step: it applies where "The existing description is a one-line placeholder and you want a clinically-grounded starting point", drafts a richer description with citations, and writes the reviewed result back through `fix_stub.py`, after which the normal review flow runs again. +[^oifm-cde-def]: Acute Aortic Syndrome, `defs/acute_aortic_syndrome.fm.json` at findingmodels main 4475ac1: `oifm_id` `OIFM_CDE_000126`, contributor "ACR/RSNA Common Data Elements Project", and an index code `system: RADELEMENT`, `code: RDES126` beside its RadLex code. All 115 definitions under the CDE organization segment carry a RadElement index code in the same way. This supports the retained CDE identity and the derivation of those models from Common Data Elements. It is evidence of the reference as it exists today in the direction CDE to finding model; the commitment to maintain the cross-links after a future migration, and to resolution of either identity to the same concept by an application, rests on the project lead's direction. +[^oifm-taxonomies]: The six per-exam finding taxonomies, findingmodels taxonomy-export-2026-08-15 at a30c3c9: chest radiograph, musculoskeletal radiograph, head CT, chest/abdomen/pelvis CT, mammography, and spine MRI, 3,789 rows in all. Each file is one hierarchy in which "Parents are generic, children add specificity", and `finding_type` separates an observation from a diagnosis. The files double as a coverage ledger: an identifier is filled only where a row matched a model that already exists, 1,028 of 3,789 rows, and "Blank rows are the ones needing triage." +[^radelement]: The published ACR/RSNA Common Data Element collection at radelement.org. Its public API returns sets attributed to the American College of Radiology and the Radiological Society of North America. The staging repository and the next-generation schema baseline both name it as the joint ACR/RSNA project's published corpus, public API, and vendor-facing interface. +[^cde-nextgen]: "Next-Generation CDE Schema: Current Understanding", ACR-RSNA-CDEs next-gen-2026 at b541b74, a draft for discussion dated 2026-08-19. §2.2: "The authoritative internal representation is a knowledge graph, not a document tree", following the committee's own move to "a graph model, where findings point to canonical attribute objects". §5.1: the finding model work "has independently built much of this and is roughly one iteration ahead", so "OIFMs can be treated as drafts for this project's FindingClasses", with the caveat that "Bringing models over is a review step, not a bulk import"; its table of what the finding models already answer includes worked metadata vocabularies for body regions, modalities, etiologies, sex specificity, age profile, and expected time course. Modality applicability is a field of the current CDE schema as well. §5.1 also discusses the finding models' file-based design directly, noting that it "makes choices that a graph makes differently". +[^cde-schema]: The current Common Data Element schema, `cde.schema.json` at ACR-RSNA-CDEs next-gen-2026 b541b74, last changed 2024-11-19: a draft-07 JSON Schema whose root is `element_set`, a nested document whose required properties include an `elements` array. This is the document form the collection takes today. +[^cde-staging]: CDE staging repository, main at b814a10: "a staging area for definitions of radiology common data elements in JSON format ... prior to their entering the review pipeline". The manual extraction process works one real pulmonary angiogram report into a list of mini-observations, each a finding with a presence value and its attributes. Three catalogs beside it record what the definitions could not carry. `negative_statements.md` groups real report sentences by body region that assert absence across several structures at once, some bundled with a technique caveat, with no definition links. `uncovered_findings.md` lists findings with their reported attributes and no definition behind them, also with no links. `missing_attributes.md` is the one that links: ten entries, each naming the finding and the attribute the report used and pointing at the definition file that lacked it. The catalogs exist as data; the method is described but not automated, and the same coverage question is asked prospectively as a frequency-and-priority table in the chest CT roadmap. This is evidence of the CDE-side measurement only; that coverage is measured the same way on the finding models side rests on the project lead's direction. +[^status-2026-01]: Open Imaging Data Model 2026 Status Update, January 2026: "OIFM: the CDE workbench" - rapid innovation and a proving ground before ACR/RSNA CDE adoption, with exploratory metadata "that can graduate to standards", named in the executive summary as the "workbench effect". Read from the project's transcription of the deck, `sources/gamma-2026-status-update.md`, which records the original presentation URL and the month but no modification date. +[^siim-2026]: SIIM 2026 annual meeting talk, June 2026, Mass General Brigham, slide 9 notes: "OIFM Finding Models today, ACR/RSNA CDEs next ... OIFM is the high-velocity 'workbench' that proves out content before formal CDE adoption." Read from the project's text extraction of the deck, `sources/bucket/text/siim2026-reports-of-the-future.md`; the presentation file records a modification date of 2026-06-11. diff --git a/knowledge/drafts/index.md b/knowledge/drafts/index.md index e079cf1..f93f7df 100644 --- a/knowledge/drafts/index.md +++ b/knowledge/drafts/index.md @@ -6,9 +6,12 @@ Planned files, each session adding its link line when the file exists: * [Introduction](./introduction.md) - What the Open Imaging Data Model is, the two contexts it distinguishes, the five pillars of the work, and how the project expects agreement to happen. * [Foundation Context](./foundation-context.md) - The shared, curated clinical knowledge that every patient's imaging data is woven into: three axes over existing standards, the relationships among them, and the citations they rest on. +* [Finding Models and Common Data Elements](./finding-models-and-cdes-hub.md) - Definitions of findings and diagnoses as the anchor for everything the project knows about them, held in two cross-linked collections: the beta channel and the release channel. * [Finding models and CDEs](./finding-models-and-cdes.md) - One content in two collections - the common graph being drafted for both, the OIFM and RadElement formats that hold it today, what the inclusive collection contains, and the authoring and review principles behind it. * [Anatomic locations](./anatomic-locations.md) - The curated anatomic location index as a reference layer - identity, containment, part-of, laterality, synthetic terms, curation rules, the RadLex overlay, and the two dated implementations. * [Exam types](./exam-types.md) - A stated goal with no artifact - preferred high-level exam entries over the LOINC/RSNA Radiology Playbook, the Playbook properties they would expose, and the anatomy coverage edges in the project lead's two dated phrasings. +* [The next-generation schema](./next-generation-schema.md) - The graph-based schema being developed in the ACR/RSNA CDE project that both collections of finding/diagnosis definitions will move onto: its node types, its edges, and the relationships among definitions. +* [Relationships among definitions](./relationships.md) - The typed relationships among finding/diagnosis definitions: manifestation and causation, associated findings and components, how strongly a relationship holds, deriving the differential, assessment schemes, and a proposal for role tagging. * [Standards the foundation layers over](./standards.md) - Which existing standard each Foundation Context axis layers over, the role each terminology plays, the external citations the deck names, and search recall as the gate. * [SDKs](./sdks.md) - The tools that wrap the data structures and resolve their codes into Foundation Context, plus the libraries that help author that context. * [Data Structures](./data-structures.md) - Observations connect a patient's imaging results to shared definitions and to one another across reports and examinations. diff --git a/knowledge/drafts/next-gen-findingclass-neighborhood.svg b/knowledge/drafts/next-gen-findingclass-neighborhood.svg new file mode 100644 index 0000000..1038928 --- /dev/null +++ b/knowledge/drafts/next-gen-findingclass-neighborhood.svg @@ -0,0 +1 @@ +FINDING CLASSpulmonary noduleA rounded or oval opacity within the lung parenchyma measuring less than 30 mm.synonyms: lung nodule · SPN (abbreviation) · pulmonary node (deprecated)RDE2_000123 · v1 · proposed · 2026-08-19entity_type: findingSUBTYPE_OF — is anoduleFindingClassSCOPED_TO — anatomic scopelungAnatomicLocation · RID1301structure · requiredHAS_ELEMENT — characterized by · ×4presence→ existing element RDE2_000001 · shared · categoricalpresentpossibleabsentindeterminateunknownattenuationdefined here as RDE2_000015 · DataElement · categoricalAttenuation class of the nodule on CT, per Fleischner usage.drives managementsolidpart-solidground-glasssize (mean diameter)→ existing element RDE2_000014 · shared · lengthmargindefined here as RDE2_000031 · DataElement · categoricalCharacter of the nodule's interface with surrounding lung.smoothlobulatedspiculatedill-definedMAY_REPRESENT — may representlung cancerFindingClass · diagnosisASSESSED_BY — assessed byFleischner recommendationFindingClass · assessment - incidentalLung-RADS categoryFindingClass · assessment - screeningMAY_HAVE_COMPONENT — may have componentsolid componentFindingClass · finding - sub-finding of a part-solid nodule, with its own sizeCONTEXT — discoverability edgesneoplastic : benignHAS_ETIOLOGY · Etiologyneoplastic : malignantHAS_ETIOLOGY · Etiologyinflammatory : infectiousHAS_ETIOLOGY · EtiologycongenitalHAS_ETIOLOGY · EtiologyCTSEEN_ON · ModalityXRSEEN_ON · ModalitychestIN_REGION · BodyRegionchest radiologyIN_SUBSPECIALTY · Subspecialtysex-neutralSEX · SexSpecificityall agesAGE_APPLICABILITY · AgeProfileyears - progressive or stableTIME_COURSE · ExpectedTimeCourseMAPPINGS — skos:exactMatch / closeMatchpulmonary noduleRADLEX RID50149 · skos:exactMatchSolitary nodule of lung (finding)SNOMEDCT 427359005 · skos:exactMatch diff --git a/knowledge/drafts/next-generation-schema.md b/knowledge/drafts/next-generation-schema.md new file mode 100644 index 0000000..2225dc2 --- /dev/null +++ b/knowledge/drafts/next-generation-schema.md @@ -0,0 +1,160 @@ +--- +type: Concept +title: The next-generation schema +description: "The graph-based schema being developed in the ACR/RSNA CDE project that both collections of finding/diagnosis definitions will move onto: its node types, its edges, and the relationships among definitions." +tags: [foundation-context, next-gen-schema, finding-models, cdes, relationships, graph] +status: draft +generated: { by: claude-opus-5/2026-09-30-restructure/schema-page, at: 2026-09-30T13:51:40Z } +sources: + - id: lead-schema + resource: docs/plans/2026-09-22-layout-plan.md + title: The project lead's statements of 2026-09-29 and 2026-09-30 on this page - the two collections moving onto one schema, the common SDK, the "defines" wording for each node type, the Concept note, the anatomic scope sentence, the Edges paragraph, the kinds of quantity a Measurement indicates, and the whole Evolution section (recorded verbatim in the layout plan) + last_modified: 2026-09-30 + - id: lead-2026-09-22 + resource: docs/plans/restructure-joint-notes.md + title: The project lead's decisions of 2026-09-22 - a Common Data Element and a finding model are the same content, both collections soon using the classes being defined in the CDE schema rewrite, and the urgent move off document orientation (quoted in the restructure joint notes) + last_modified: 2026-09-22 + - id: cde-branch + resource: https://github.com/RSNA/ACR-RSNA-CDEs/tree/b541b74c22a33b64834309244569a60d06de79e4 + title: The ACR/RSNA CDE schema repository, next-gen-2026 branch at b541b74 - the branch of record for the next-generation schema work, read at this commit on 2026-09-30 + last_modified: 2026-09-23 + - id: table-check + resource: https://github.com/RSNA/ACR-RSNA-CDEs/tree/b541b74c22a33b64834309244569a60d06de79e4/docs/next-gen-schema + title: The next-generation schema working directory, ACR-RSNA-CDEs next-gen-2026 at b541b74 - the relationship type declarations and the example edges checked one by one for the table on this page + last_modified: 2026-09-23 + - id: cde-understanding + resource: https://github.com/RSNA/ACR-RSNA-CDEs/blob/b541b74c22a33b64834309244569a60d06de79e4/docs/next-gen-schema/00-current-understanding.md + title: "Next-Generation CDE Schema: Current Understanding, ACR-RSNA-CDEs next-gen-2026 at b541b74 - the knowledge graph rather than a document tree as the internal representation" + last_modified: 2026-09-15 + - id: cde-requirements + resource: https://github.com/RSNA/ACR-RSNA-CDEs/blob/b541b74c22a33b64834309244569a60d06de79e4/docs/next-gen-schema/01-what-the-vocabulary-must-express.md + title: What the Vocabulary Must Express, ACR-RSNA-CDEs next-gen-2026 at b541b74 - what a FindingClass is, anatomic scope, and measurement versus interpretation + last_modified: 2026-09-15 + - id: cde-structures + resource: https://github.com/RSNA/ACR-RSNA-CDEs/blob/b541b74c22a33b64834309244569a60d06de79e4/docs/next-gen-schema/03-draft-structures.md + title: Draft Structures for Worked Examples, ACR-RSNA-CDEs next-gen-2026 at b541b74 - the node type table, the edge catalog, and the object view of a FindingClass as its gathered edges + last_modified: 2026-09-15 + - id: cde-relationships + resource: https://github.com/RSNA/ACR-RSNA-CDEs/blob/b541b74c22a33b64834309244569a60d06de79e4/docs/next-gen-schema/07-relationship-family.md + title: The Finding and Diagnosis Relationship Family, ACR-RSNA-CDEs next-gen-2026 at b541b74 - the catalog of relationships with their domains, ranges, inverses, symmetry, and the typicality and specificity properties + last_modified: 2026-09-09 + - id: cde-worked-examples + resource: https://github.com/RSNA/ACR-RSNA-CDEs/blob/b541b74c22a33b64834309244569a60d06de79e4/docs/next-gen-schema/08-worked-examples.md + title: Worked Examples, Acute Pyelonephritis, Pleural Effusion, and One Report, ACR-RSNA-CDEs next-gen-2026 at b541b74 + last_modified: 2026-09-09 + - id: cde-decisions + resource: https://github.com/RSNA/ACR-RSNA-CDEs/blob/b541b74c22a33b64834309244569a60d06de79e4/docs/next-gen-schema/10-decision-record-2026-09-02.md + title: The decision record, ACR-RSNA-CDEs next-gen-2026 at b541b74 - every structural decision with a provenance mark, OWNER for what the project lead stated and CLAUDE DEFAULT for what an assistant chose to keep moving and the project lead has not reviewed + last_modified: 2026-09-23 + - id: cde-anatomy + resource: https://github.com/RSNA/ACR-RSNA-CDEs/blob/b541b74c22a33b64834309244569a60d06de79e4/docs/next-gen-schema/11-anatomy-axis.md + title: The Anatomy Axis, Current State, ACR-RSNA-CDEs next-gen-2026 at b541b74 - the anatomic locations data as the substrate, keyed by RadLex id, and what it lacks + last_modified: 2026-09-15 + - id: cde-graph + resource: https://github.com/RSNA/ACR-RSNA-CDEs/tree/b541b74c22a33b64834309244569a60d06de79e4/docs/next-gen-schema/graph + title: "The vocabulary written as JSON Lines, ACR-RSNA-CDEs next-gen-2026 at b541b74: core.jsonl declares each relationship type with its inverse, symmetry, domain, and range; pyelonephritis.jsonl and pleural-effusion.jsonl hold the two worked families" + last_modified: 2026-09-09 + - id: cde-alpha-graph + resource: https://github.com/RSNA/ACR-RSNA-CDEs/blob/b541b74c22a33b64834309244569a60d06de79e4/docs/next-gen-schema/alpha/graph/definition-graph.json + title: "The reviewer's alpha definition graph, ACR-RSNA-CDEs next-gen-2026 at b541b74: 45 FindingClass, 25 Diagnosis, 36 DataElement, 16 Measurement, 5 AssessmentScheme and 28 AnatomicLocation nodes with their typed edges, the implementation approach the project lead adopted as the basis going forward" + last_modified: 2026-09-14 + - id: cde-alpha-shape + resource: https://github.com/RSNA/ACR-RSNA-CDEs/blob/b541b74c22a33b64834309244569a60d06de79e4/docs/next-gen-schema/alpha/SHAPE.md + title: "The alpha's generated node and edge documentation, ACR-RSNA-CDEs next-gen-2026 at b541b74: §4 tabulates each edge's signature and states that signatures are the endpoint types observed in the build, not everything the edge is permitted to take" + last_modified: 2026-09-14 + - id: cde-alpha-readme + resource: https://github.com/RSNA/ACR-RSNA-CDEs/blob/b541b74c22a33b64834309244569a60d06de79e4/docs/next-gen-schema/alpha/README.md + title: "The alpha's own README, ACR-RSNA-CDEs next-gen-2026 at b541b74: the anatomy architecture that treats RadLex as the single source of truth, the list of generated artifacts, and the reasoner regression suite" + last_modified: 2026-09-14 + - id: cde-libraries-plan + resource: https://github.com/RSNA/ACR-RSNA-CDEs/blob/b541b74c22a33b64834309244569a60d06de79e4/docs/plans/2026-09-13-definition-libraries.md + title: "Plan: typed definition libraries (Python, then TypeScript) over a PostgreSQL copy of the graph, ACR-RSNA-CDEs next-gen-2026 at b541b74 - proposed 2026-09-13, with a note of 2026-09-15 reconciling it toward the alpha" + last_modified: 2026-09-15 + - id: cde-fc-diagram + resource: https://github.com/RSNA/ACR-RSNA-CDEs/blob/b541b74c22a33b64834309244569a60d06de79e4/docs/next-gen-schema/diagrams/fc-neighborhood.svg + title: The pulmonary nodule FindingClass and its typed edges, ACR-RSNA-CDEs next-gen-2026 at b541b74 - reused here with the project lead's agreement + last_modified: 2026-09-03 + - id: cde-fc-diagram-input + resource: https://github.com/RSNA/ACR-RSNA-CDEs/blob/b541b74c22a33b64834309244569a60d06de79e4/docs/next-gen-schema/examples/pulmonary-nodule.neighborhood.json + title: The pulmonary nodule neighborhood example, ACR-RSNA-CDEs next-gen-2026 at b541b74 - the input the figure above is rendered from by the repository's tools/render_neighborhood.py at the same commit + last_modified: 2026-09-03 + - id: cde-schema + resource: https://github.com/RSNA/ACR-RSNA-CDEs/blob/b541b74c22a33b64834309244569a60d06de79e4/cde.schema.json + title: The current Common Data Element schema, ACR-RSNA-CDEs next-gen-2026 at b541b74 - a JSON Schema whose root is a nested element_set document + last_modified: 2024-11-19 + - id: oifm-repo + resource: https://github.com/openimagingdata/findingmodels/tree/4475ac1bcb591f1a0951b2082b59208def173a5d + title: "Open Imaging Finding Models repository, main at 4475ac1 (snapshot of 2026-04-28): the JSON Schema for a single self-contained finding model and the 2,382 per-definition files under defs/" + last_modified: 2026-04-28 + - id: siim-2026 + resource: https://oidm-public.t3.tigrisfiles.io/oidm-knowledge-sources/SIIM%202026%20Reports-of-the-Future.pptx + title: Structured Results and Context for Next-Generation Imaging Resulting Tools, SIIM 2026 annual meeting talk, June 2026, Mass General Brigham - slide 12 on relationships and external citations + last_modified: 2026-06-11 +--- + +# The next-generation schema + +Both Open Imaging Finding Models and ACR/RSNA Common Data Elements are moving onto one schema, being developed in the [ACR/RSNA CDE schema repository](https://github.com/RSNA/ACR-RSNA-CDEs/tree/next-gen-2026) on its next-gen-2026 branch, as a graph of interconnected concepts rather than a set of documents.[^lead-schema][^lead-2026-09-22][^cde-understanding] Applications will be able to use either or both collections at once via a common SDK based on the new schema.[^lead-schema][^cde-libraries-plan] What follows is the design as it stands on that branch, dated to the commit read.[^cde-branch] It is working material, and it carries the project's own provenance labels: decisions the project lead made, and defaults an assistant chose to keep moving that remain unreviewed.[^cde-decisions] + +# Node types + +- **FindingClass** defines the properties of the items described in imaging reports.[^lead-schema][^cde-structures][^cde-requirements] +- **Diagnosis** is a separate, closely related node type, distinguished by a different set of possible relationships.[^lead-schema][^cde-structures][^cde-relationships] +- **Grouping** defines broad classes of findings/diagnoses such as "renal abnormality", usually intended to be used in the negative.[^lead-schema][^cde-decisions][^cde-structures] +- **DataElement** defines a categorical descriptor: a value set, ordered or unordered, whose values are themselves shared nodes.[^cde-decisions][^cde-structures] +- **Measurement** defines a quantitative descriptor by the kind of quantity, such as length or CT density, with the unit family following from the kind.[^lead-schema][^cde-decisions][^cde-alpha-graph] +- **AssessmentScheme** definitions lay out the systems, such as Lung-RADS, via which a constellation of other findings is evaluated.[^lead-schema][^cde-decisions][^cde-structures] +- **AnatomicLocation** nodes are the entries of the anatomic locations index, keyed by their RadLex identity.[^cde-anatomy][^cde-decisions] + +Beyond these, shared **Concept** nodes hold the standard clinical metadata a definition can carry: modality, body region, subspecialty, sex, age, time course, etiology.[^lead-schema][^cde-decisions][^cde-structures] And the anatomic scope property of each FindingClass, Diagnosis, Grouping, DataElement, and Measurement indicates the locations and/or structures in which they may be localized (e.g., "lung parenchyma" for a pulmonary nodule).[^lead-schema][^cde-decisions][^cde-alpha-graph][^cde-anatomy] + +# Edges + +Edges integrate the nodes into a rich fabric of interrelated concepts, enabling reliable, reproducible inference.[^lead-schema][^cde-understanding][^cde-alpha-readme] Edges bind FindingClass and Diagnosis definitions to their anatomic scope and to the DataElements and Measurements used to specify their attributes.[^lead-schema][^cde-alpha-graph][^cde-structures] The edges themselves may contain properties that provide additional detail about the relationships between nodes: a binding may, for example, restrict a shared DataElement to a subset of its values for one FindingClass without changing the element itself.[^lead-schema][^cde-decisions][^cde-structures] No element is required by any definition.[^cde-decisions][^cde-structures][^table-check] + +| Relationship | From → to | Example | +|---|---|---| +| SUBTYPE_OF | each of FindingClass, Diagnosis, Grouping and AnatomicLocation → a node of its own kind | part-solid pulmonary nodule → pulmonary nodule | +| HAS_COMPONENT | FindingClass → FindingClass | part-solid pulmonary nodule → solid component | +| MAY_MANIFEST_AS | Diagnosis → FindingClass or Diagnosis | acute pyelonephritis → striated nephrogram | +| MAY_CAUSE | FindingClass or Diagnosis → FindingClass or Diagnosis | urinary calculus → hydronephrosis | +| MAY_PROGRESS_TO | FindingClass or Diagnosis → FindingClass or Diagnosis | parapneumonic effusion → empyema | +| OCCURS_WITH | FindingClass or Diagnosis ↔ FindingClass or Diagnosis | pleural effusion ↔ atelectasis | +| ASSESSED_BY | FindingClass or Diagnosis → AssessmentScheme | pulmonary nodule → Lung-RADS | +| SCOPED_TO | FindingClass, Diagnosis or Grouping → AnatomicLocation | pulmonary nodule → lung | +| SEEN_ON | FindingClass, Diagnosis or Grouping → Modality concept | pulmonary nodule → CT | +| HAS_DATA_ELEMENT, HAS_MEASUREMENT | FindingClass or Diagnosis → DataElement or Measurement | pulmonary nodule → presence; pulmonary nodule → mean diameter | + +[![The pulmonary nodule FindingClass and the typed edges it gathers: its parent class, its anatomic scope, the data elements that characterize it, the diagnosis it may represent, the assessment schemes that apply, its component, and its standard clinical metadata. Rendered from the pulmonary nodule neighborhood example in the ACR/RSNA CDE schema repository, next-gen-2026 at b541b74.](./next-gen-findingclass-neighborhood.svg)](./next-gen-findingclass-neighborhood.svg) + +(click the image for full size) + +*The diagram dates from 2026-09-03 and predates the separation of Measurement and AssessmentScheme into their own node types, so it still renders Lung-RADS and mean diameter as a FindingClass and a DataElement, and still writes the older edge names `HAS_ELEMENT` and `MAY_HAVE_COMPONENT`.*[^cde-fc-diagram][^cde-fc-diagram-input] + +The full family, with each relationship's inverse, symmetry, and provenance, is on the relationships page.[^cde-relationships][^cde-graph] + +# Evolution of CDEs and Finding Models + +Both CDEs and existing Open Imaging Finding Models will have to migrate from their current JSON document-based organization to a new graph-oriented format, likely using RDF/OWL as an underlying storage format.[^lead-schema][^lead-2026-09-22][^cde-schema][^oifm-repo][^cde-decisions] More ergonomic data structures will also be developed for use in SDKs and via an API.[^lead-schema][^cde-decisions][^cde-libraries-plan] + +[^lead-schema]: The project lead, 2026-09-29 and 2026-09-30, recorded verbatim in the layout plan. On this page: "Both Open Imaging FInding Models and RSNA/ACR Common Data Elements are moving..."; "Show a link to the ACR/RSNA CDE schema repository, on the next-gen-2026 branch"; "...as a graph of interconnected concepts rather than a set of documents."; "Applications will be able to use either or both collections at once via a common SDK based on the new schema."; the node-type wording, with the instruction that "For most of these node class definitions, we want to use 'defines' rather than 'is a' (this is a very tricky but important semantic distinction)"; "'AssessmentScheme' definitions layout the systems such as Lung-RADS via which a constellation of other findings is evaluated."; "The anatomic scope property of each other node indicates the locations and/or structures in which they may be localized (e.g., 'lung parenchyma' for a pulmonary nodule)."; "Edges integrate the notes into a rich fabric of interrelated concepts, enabling reliable, reproducible inference."; "Edges bind FindingClass and Diagnosis definitions to their anatomic scope and to the DataElements and Measurements used to specify their attributes. The edges themselves may contain properties that provide additional detail about the relationships between nodes."; "Concept nodes as a note below the list, introducing the paragraph that also talks about anatomic scope."; "Use the actual table of relationship types as examples."; and the whole Evolution section. On Measurements, 2026-09-29: "Measurements don't have EXPLICIT units, they indicate what KIND of thing they are: length (with appropriate length units, which could be mm, cm, whatever), CT density (HU), or count (unitless), ratio (unitless), velocity (m/s, cm/s), volume (cc, mL, mm^3..., L)". Two sentences on this page rest on this statement for what they actually promise. The repository has a proposed design for typed libraries and a query API, but nothing in it states that one SDK will consume both collections together, which is the project lead's own commitment.[^cde-libraries-plan] The repository puts inference in scope and has a reasoner regression suite, but neither establishes that inference over the vocabulary is reliable and reproducible today, which is the project lead's claim for the design.[^cde-understanding][^cde-alpha-readme] +[^lead-2026-09-22]: The project lead, 2026-09-22, quoted in the restructure joint notes: both collections "BOTH should soon be using the schema and classes being defined in the CDE schema re-write, with FindingClass, DataElement, Measurement, etc.", and "OIFMs VERY soon need to get re-organized around the graph-based approach we're developing in the next-gen-schema effort in CDEs. They're currently document-oriented and we need to fix that SOON." +[^cde-branch]: The ACR/RSNA CDE schema repository, next-gen-2026 branch, read on 2026-09-30 at commit b541b74 of 2026-09-23. Every statement below that is attributed to the repository is taken from files committed at that commit; the branch had uncommitted working-tree changes on that date, which were not read. Two sentences on this page rest on the project lead's statement alone and are identified as such in the note on that statement. +[^cde-understanding]: "Next-Generation CDE Schema: Current Understanding" §2.2: "The authoritative internal representation is a knowledge graph, not a document tree", following the committee's own move to "a graph model, where findings point to canonical attribute objects". §2.3 puts inference in scope as a first-class concern: "Subsumption, typed relations, ontology binding, and inference are in scope as first-class concerns rather than as things layered on afterwards." That is the intent, not a demonstration. The document's own open issues qualify it: Issue A asks what inference `is-a` licenses and notes that the negation sweep over a grouping is sound only under genuine transitive subsumption and a closed-world assumption that the radiologist assessed everything beneath the class; Issue B leaves undecided whether finding classes are OWL classes or SKOS-style individuals, where the second choice "has no inference semantics - surrendering exactly what Issue A wants"; Issue C asks "What reasoning do we actually need, and who owns the formal layer?" and is unanswered. +[^cde-requirements]: "What the Vocabulary Must Express" sets out what a FindingClass has to be able to carry, what is reported on (an imaging observation, a physiologic quantity, a device, the image itself), and the separation of a measured quantity from its interpretation and from any method that produced it. +[^cde-structures]: "Draft Structures for Worked Examples" §1 is the node-type table: FindingClass with its identity, definition, typed synonyms and `entity_type`; Diagnosis "as FindingClass, without `entity_type`", where "what still distinguishes Diagnosis from FindingClass is only which relationship types it can source, `MAY_MANIFEST_AS` above all"; Grouping as "the negative-only nodes (`renal abnormality`) that sit above findings and diagnoses alike"; DataElement with its "explicit ordered/unordered value-set distinction"; Measurement with "quantity type, permitted units, optional method (unspecified by default)"; AssessmentScheme, whose "descriptive dimensions are linked ordinary DataElements"; Value as a first-class node whose id derives from its element; AnatomicLocation; and the Concept nodes for the metadata vocabularies. §2 is the edge catalog and the properties edges carry, including the value-subset restriction and the removal of the `required` flag. §3, "The object view: a FindingClass is its gathered edges", is the source of the figure above. +[^cde-relationships]: "The Finding and Diagnosis Relationship Family" is the catalog: seven pairs and one catch-all, each with its domain, range, inverse or symmetry, character and meaning, plus the typicality and specificity properties that manifestation edges carry, the rules that keep manifestation, causation, subsumption and progression apart, and the differential as a derived view rather than a stored edge. Its §7 lists the questions still open for review. The relationships page of this knowledgebase is where that family belongs in full. +[^cde-worked-examples]: "Worked Examples, Acute Pyelonephritis, Pleural Effusion, and One Report" describes the two families written into the graph and warns, before any of their content is used: "Read the provenance before trusting a number. The owner chose the two examples and the effusion's cause list. Every typicality and specificity value, every `expected` hint, the subtype trees, the element choices, and the close-versus-exact code matches are Claude's clinical and terminological estimates, unreviewed." +[^cde-decisions]: The decision record carries a provenance column on every row. **OWNER** means "The owner stated it. The quotation is verbatim from the session. This is the decision."; **CLAUDE DEFAULT** means "Claude chose it to keep moving and recorded the choice. The owner has not reviewed it. Reversible."; **CLAUDE INVENTION** means content "that no one has checked. Treat as unverified." A second caution applies to every row from S49 onward: S49 records the project lead's own ruling that "nothing is 'settled'" by the project's internal discussion, so a decision the project lead and an assistant reached together is a proposal to put to the external reviewer, not a jointly adopted design. The rows used here, with the later ones that qualify them. S8, Grouping as a narrow node type, the negative-only nodes, OWNER inclination with the narrowing NOT OBJECTED. S9, "THERE IS NO SUCH THING AS A REQUIRED ELEMENT", OWNER. S10 and S11, standard clinical metadata as its own node class, with modality, body region and subspecialty as RadLex nodes and provisional codes for etiology, sex, age and time course, OWNER. S12, S37 and S53, an anatomic location's only id is its RID and the substrate is the anatomic locations overlay pointed to at a pinned commit, whose compound sided ids are used as they stand until RadLex mints real ones, OWNER. S31, the agreed terms **anatomic scope** ("it might not be a PLACE, it may be something like 'muscle' (NOS)") and **standard clinical metadata**, OWNER. S33 gave one `HAS_COMPONENT` relationship with inverse `COMPONENT_OF` carrying a count, PROPOSED and ACCEPTED, **and S58 withdraws that form**: the disposition is the reviewer's two distinct edges, the whole must have the part and the part occurs only in that whole, with a minimum count proposed on the first; the alpha's own documentation describes them as two separate assertions rather than one relationship read in two directions, and S34's lesion-family rule is unchanged.[^cde-alpha-shape] S3 and S13 held that `SUBTYPE_OF` propagates nothing, **and S55 moves the project lead's position**: the disposition is the reviewer's approach, under which a subtype carries every element and edge its parent declares, may add elements and narrow inherited values, and cannot drop an inherited element, with a standing requirement that authoring show the blast radius of a change to a parent. S36, "I think we're going to do JSON and OWL", with official TypeScript and Python access libraries wanted, OWNER. S38, the reviewer's implementation approach as the basis going forward, OWNER, who noted that selecting it "does not automatically accept every structural choice in the alpha". S39, Measurement distinct from DataElement and value sets explicitly ordered or unordered, PROPOSED and ACCEPTED with OWNER clarifications. S40 and S41, AssessmentScheme a separate definition type whose linked descriptors are ordinary DataElements, OWNER. S42, a binding "Takes this element, but only this subset of values", OWNER, **qualified by S64 and S65**: S64 makes the narrowing an annotation on the binding with enforcement left to tooling and proposes a strength so it can shade between a hint and an absolute restriction, the "restriction on meaning" reading of S42 becoming that absolute end; S65 proposes two further capabilities to put alongside it, that a binding may add permitted values for one use and may give context-specific language for values, neither changing the shared element. S43, anatomic locations bound directly to data elements and measurements, OWNER, **restated by S62 in the reviewer's form**: the descriptor is created in the CDE repository and points at the RadLex anatomy node, carrying the anatomic scope itself, and no edge is written on the anatomy node. S57, a diagnosis is never a subtype of a finding, with paired FindingClass and Diagnosis nodes for parent and grouping terms joined by a manifestation edge, superseding the cross-label taxonomy of S1. Examples of the weaker mark: S14, non-imaging causes as Diagnosis nodes with no elements, and S18, that the causal pair takes typicality, are both CLAUDE DEFAULT, recorded because the project lead never answered the question. +[^cde-anatomy]: "The Anatomy Axis, Current State" §1: the substrate is "the anatomic locations data behind the owner's published `anatomic-locations` Python package: 2,926 locations, each keyed by its RadLex id, with containment, part-of, left, right, and unsided variants, a body region, SNOMED and other codes, synonyms, and some definitions", pointed to at a pinned commit rather than copied, and settled by the project lead as "an overlay on RadLex, not a replacement and not the sole source"; S53 keeps that overlay as the reviewer's configured anatomy source, using its compound sided ids as they stand until RadLex mints real ones.[^cde-decisions] §2 records that the file lacks a lung parenchyma entry; it is on the running node request list to be fed upstream. §5 records the two anatomic scope families still to be developed, tissue types and structure types, which is why scope may name a kind of structure and not only a place. That is one representation. The alpha states a different one and the two are cited separately here: in its own README, "RadLex is the single source of truth for anatomy", `AnatomicLocation` is a role type whose occupants are native RadLex classes under RID3 keeping their native RID and IRI, the generated ontology imports the configured RadLex directly and leaves its native predicates (`Contained_In`, `Part_Of`, `Regional_Part_Of` and the rest) distinct and unchanged, and `scripts/anatomy.json` is a generated read-only index of the full native anatomy branch that consumers join against rather than copying into the definition graph.[^cde-alpha-readme] +[^cde-graph]: The vocabulary written as JSON Lines. `core.jsonl` declares each relationship type as its own node recording "its inverse, symmetry, formal name, domain and range, and the properties it may carry". `pyelonephritis.jsonl` and `pleural-effusion.jsonl` hold the two worked families. The directory README states the rule these files were authored under: "Every edge is explicit. In particular, `SUBTYPE_OF` does not copy or imply `HAS_ELEMENT`, `SCOPED_TO`, context, or any other outgoing edge on the subtype." That rule is the historical representation, not the current direction. S55 moves the project lead's position to the reviewer's approach, and the alpha's own documentation describes `SUBTYPE_OF` as carrying strict monotonic inheritance.[^cde-decisions][^cde-alpha-shape] +[^cde-alpha-graph]: The reviewer's alpha definition graph, a single JSON file of nodes and edges: 45 FindingClass, 25 Diagnosis, 36 DataElement, 155 Value, 16 Measurement, 5 AssessmentScheme, 28 AnatomicLocation and the metadata concept nodes, joined by 170 `HAS_DATA_ELEMENT`, 71 `SCOPED_TO`, 41 `HAS_MEASUREMENT`, 38 `MAY_MANIFEST_AS`, 10 `MAY_CAUSE`, 10 `SUBTYPE_OF`, 5 `ASSESSED_BY`, 4 `OCCURS_WITH` and single `HAS_COMPONENT` and `MAY_PROGRESS_TO` edges, among others. The project lead selected this implementation approach as the basis going forward on 2026-09-14, while noting that "Selecting the implementation approach does not automatically accept every structural choice in the alpha". This JSON file is the export inspected here; the same alpha model is also committed as `alpha/radcde-alpha.ttl` and `alpha/rdfxml/radcde-alpha.rdf`, which carry the same Measurement and AssessmentScheme individuals, MS-000001 and AS-000001 among them. Across these representations the alpha is where Measurement and AssessmentScheme exist as actual nodes rather than as decisions on paper, and where the anatomic scope edge runs from a DataElement or a Measurement as well as from a definition.[^cde-alpha-readme] +[^cde-alpha-readme]: The alpha's own README. On anatomy, it states that "RadLex is the single source of truth", that the generated ontology imports the configured RadLex release directly, and that `scripts/anatomy.json` is a generated read-only index of the native anatomy branch. Under "Reasoner regression" it records the testing done toward repeatable inference: the shipped alpha imports the complete configured RadLex ontology, full HermiT classification of that world "can be slow", so the suite uses "reduced fixtures containing the unchanged generated CDE ontology plus only the exact native RadLex axioms exercised by the tests", verified against the RadLex index before serialization, with `test_reason.py` and `test_probes.py` run against them and a companion file of "deliberate reasoning probes". The README is explicit that "The reduced fixtures are testing infrastructure only." This is evidence of work toward reasoning that can be repeated and checked; it does not establish that inference over the whole vocabulary is reliable, and the formal layer remains an open question in the baseline document.[^cde-understanding] +[^cde-alpha-shape]: The alpha's generated node and edge documentation. §4 tabulates every edge with its signature, count and properties, and opens with the caveat this page relies on: "Signatures are the tail and head types observed in the build, not everything the edge is permitted to take." It is also where the two component edges are described as separate assertions, `HAS_COMPONENT` as "The whole must have this sub-part" and `COMPONENT_OF` as "This sub-part belongs only to that whole; says nothing about whether the whole has one", and where `SUBTYPE_OF` is glossed as "Taxonomy, more to less specific. Strict monotonic inheritance." +[^cde-libraries-plan]: "Plan: typed definition libraries (Python, then TypeScript) over a PostgreSQL copy of the graph", written 2026-09-13 at the project lead's request and marked "proposed; nothing below is done". It sets out the library direction cited here: Pydantic models mirroring the graph node types, a loader and store, a query API with the operations the documents already perform, and generated TypeScript types so that "a TypeScript consumer of the export is typed from day one", under the rule that "Nothing is resolved only in a library or a loader." Its note of 2026-09-15 reconciles it toward the reviewer's implementation under S38: the plan's models, loader and query API "must be reconciled with that specification rather than built beside it", and its five open decisions stay open. It is a proposed design for libraries over the CDE graph; it does not itself establish that one SDK will serve both collections at once. +[^cde-fc-diagram-input]: The pulmonary nodule neighborhood example, the JSON view the figure is rendered from. Its own description is the figure's alt text at source: "The pulmonary nodule FindingClass node and its typed edges to shared nodes: data elements, values, anatomic location, related classes, and metadata concepts." It records the anatomic scope as lung, RID1301, "structure - required", the elements bound or defined in place, and the related classes over `SUBTYPE_OF`, `MAY_REPRESENT`, `ASSESSED_BY` and `MAY_HAVE_COMPONENT`. The structures document describes this view as generated rather than drawn, and the example files as interim, to be replaced once the renderer reads the graph directly.[^cde-structures] +[^cde-fc-diagram]: The pulmonary nodule FindingClass diagram, committed 2026-09-03. Its own description: "The pulmonary nodule FindingClass node and its typed edges to shared nodes: data elements, values, anatomic location, related classes, and metadata concepts." The project lead cleared its reuse here; the file embedded on this page is byte-for-byte the committed one. Its input is a specific artifact, not either of the graph exports this page uses to check the table: at this commit `tools/render_neighborhood.py` reads `examples/pulmonary-nodule.neighborhood.json` and emits the card, and rendering that example with that pinned script reproduces the figure exactly.[^cde-fc-diagram-input] It is not generated from the alpha definition graph or from the JSON Lines graph. It predates the decisions of 2026-09-14 that made Measurement and AssessmentScheme separate node types, so it labels Lung-RADS and Fleischner as FindingClasses and size (mean diameter) as a DataElement, and it predates the later edge names; the repository notes that the older rendered artifacts were not regenerated. It is kept here as a historical illustration of the object view, which is what its caption dates. +[^cde-schema]: The current Common Data Element schema, `cde.schema.json`, last changed 2024-11-19: a draft-07 JSON Schema whose root is `element_set`, a nested document whose required properties include an `elements` array. This is the document form the ACR/RSNA collection takes today. +[^oifm-repo]: Open Imaging Finding Models repository, main at 4475ac1, a snapshot of 2026-04-28. Its schema is a JSON Schema for a single self-contained finding model, and the corpus is 2,382 individual files under `defs/`, one per definition. This is the document form the OIFM collection takes today. +[^siim-2026]: SIIM 2026 annual meeting talk, June 2026, Mass General Brigham, slide 12, "Relationships and external citations". Its notes: "The relationships turn a flat dictionary into something an app can reason over - differentials, associations, and 'what else could it be.' Example shown: a radiodense urinary calculus may cause hydronephrosis." Read from the project's text extraction of the deck, `sources/bucket/text/siim2026-reports-of-the-future.md`; the presentation file records a modification date of 2026-06-11. +[^table-check]: How each row was checked, at ACR-RSNA-CDEs next-gen-2026 b541b74. Two different kinds of evidence are in play and the table does not merge them. **Declared** domains and ranges come from `graph/core.jsonl`, where each relationship type is a node recording its own domain, range, inverse and symmetry.[^cde-graph] **Observed** endpoints come from the alpha definition graph, whose own generated documentation states the limit plainly: its signatures are "the tail and head types observed in the build, not everything the edge is permitted to take".[^cde-alpha-shape][^cde-alpha-graph] Example edges cannot establish an exhaustive domain, and the alpha contains no Grouping nodes at all, so nothing in it can settle whether a Grouping may source the newer binding names. Rows whose relationship `core.jsonl` declares follow that declaration; `HAS_COMPONENT`, `HAS_DATA_ELEMENT`, `HAS_MEASUREMENT` and the AssessmentScheme range of `ASSESSED_BY` are not declared there, since that file still carries the earlier `MAY_HAVE_COMPONENT` and a single `HAS_ELEMENT`, so those follow the alpha together with the decisions that renamed them.[^cde-decisions] Four rows where the sources disagree, left as differences rather than combined: **SCOPED_TO** is declared from FindingClass, Diagnosis and Grouping, and the row says so; the alpha additionally runs it from a DataElement and from a Measurement, which is the direction S62 takes, and it is the descriptor that carries the scope edge in that form.[^cde-decisions][^cde-alpha-shape] **The binding row** excludes AnatomicLocation as a source: S62 records that a descriptor for a normal structure points at the RadLex anatomy node and no edge is written on the anatomy node itself, so what can be said about a structure is a query over what is scoped to it. The earlier representation is the one to read `core.jsonl` and S43 for, where an AnatomicLocation sources a `HAS_ELEMENT` edge directly; neither anatomy binding occurs in the alpha.[^cde-decisions][^cde-structures][^cde-graph] **MAY_PROGRESS_TO** is declared between either node type at either end, and the row follows that declaration; the relationship catalog states the narrower rule, FindingClass to FindingClass or Diagnosis to Diagnosis, and the alpha's one progression edge runs Diagnosis to Diagnosis.[^cde-graph][^cde-relationships][^cde-alpha-shape] **SUBTYPE_OF** is version-sensitive: `core.jsonl` and the relationship catalog both permit a taxonomy that crosses the finding and diagnosis labels, on S1, while S57 moves the project lead's position to a rule under which a diagnosis is never a subtype of a finding and a parent term such as "renal lesion" exists as a paired FindingClass and Diagnosis joined by a manifestation edge. The row follows S57 and stays within a label; the worked families were written under S1 and are to be re-authored.[^cde-graph][^cde-relationships][^cde-decisions] Each **Example** is an edge that exists in the graph at that commit: the part-solid nodule's parent and component, the pulmonary nodule's Lung-RADS assessment, its CT modality, its presence element, its mean diameter measurement, the pleural effusion and atelectasis association, and the parapneumonic effusion progressing to empyema are all in the alpha definition graph; acute pyelonephritis manifesting as a striated nephrogram is in both that graph and `graph/pyelonephritis.jsonl`.[^cde-alpha-graph][^cde-graph][^cde-worked-examples] None of these checks establishes that the example content is clinically validated, which the worked examples document is explicit about. Three examples the project lead gave were adjusted against the branch and are flagged for review. The anatomic scope of a pulmonary nodule is recorded as **lung** (RadLex RID1301), not lung parenchyma; the anatomy file has no lung parenchyma entry, and adding one is on the project's own node request list.[^cde-anatomy] The measurement bound to a pulmonary nodule is **mean diameter**, one of three quantitative descriptors it binds; length is the kind of quantity, not the name of the measurement.[^cde-alpha-graph] No progression edge runs from a non-solid to a part-solid pulmonary nodule; the example shown is the only progression edge that appears in both graph forms.[^cde-alpha-graph][^cde-graph] The causal example is the one the project lead gave and is the only row not drawn from the graph: no urinary calculus node exists in either authored graph at this commit, though the imported RadLex artifacts carry renal calculus as RID38586, and the edge itself comes from the SIIM 2026 deck.[^siim-2026][^cde-alpha-readme] One row carries a relationship type whose name is still unsettled in the repository: the anatomy is-a edge is written `SUBTYPE_OF` in the graph while the reviewer's viewer writes `IS_A`, and the names are on the project's own list to settle.[^cde-anatomy][^cde-decisions] diff --git a/knowledge/drafts/overview.md b/knowledge/drafts/overview.md index 77549e5..0caa189 100644 --- a/knowledge/drafts/overview.md +++ b/knowledge/drafts/overview.md @@ -68,6 +68,10 @@ A structured finding, say "pulmonary nodule, present, right upper lobe, 8 mm, ne OIDM therefore separates two things. **Patient Context** is this patient's results and clinical context: one per patient, protected health information, changing as the patient's condition evolves. **Foundation Context** is a single shared layer of definitions, relationships, and citations: what a pulmonary nodule is, where it can occur, what it can cause, what it can be confused with. It is open, not patient-specific, authored and versioned in the open.[^siim-2026] The two are deeply interconnected: every contingent fact about this patient, this nodule on this exam, is attached to the baseline clinical knowledge about what such a thing is, so that an application reading the patient's record has the knowledge to interpret it.[^lead-2026-09-24] +[![Two planes: a patient's exam and findings in Patient Context, attached to the exam type, the finding definitions, and the anatomic locations in Foundation Context](./two-planes.svg)](./two-planes.svg) + +(click the image for full size) + # The core pieces **[Foundation Context](./foundation-context.md).** The shared semantic layer. It has three axes, each a curated layer over an existing standard: what was found (finding/diagnosis definitions, held as Open Imaging Finding Models and as ACR/RSNA Common Data Elements), where it is (anatomic locations anchored in RadLex), and how it was seen (exam types over the LOINC/RSNA Radiology Playbook). The axes relate to each other and cite external references. This pillar covers both the shape a definition takes and the work of building the content.[^siim-2026][^build-plan] diff --git a/knowledge/drafts/relationships.md b/knowledge/drafts/relationships.md new file mode 100644 index 0000000..e3b752d --- /dev/null +++ b/knowledge/drafts/relationships.md @@ -0,0 +1,111 @@ +--- +type: Concept +title: Relationships among definitions +description: "The typed relationships among finding/diagnosis definitions: manifestation and causation, associated findings and components, how strongly a relationship holds, deriving the differential, assessment schemes, and a proposal for role tagging." +tags: [foundation-context, next-gen-schema, relationships, finding-models, cdes, differential, graph] +status: draft +generated: { by: claude-opus-5/2026-09-30-restructure/relationships-page, at: 2026-09-30T16:12:00Z } +sources: + - id: lead-relationships + resource: docs/plans/2026-09-22-layout-plan.md + title: The project lead's statement of 2026-09-30 on this page - the subsection titles, the pyelonephritis appears-as wording, the instruction to include associated findings and the edge properties, the instruction to leave the HPO and Orphanet reference out of the prose, and the two sentences on assessment schemes (recorded verbatim in the layout plan) + last_modified: 2026-09-30 + - id: cde-branch + resource: https://github.com/RSNA/ACR-RSNA-CDEs/tree/b541b74c22a33b64834309244569a60d06de79e4 + title: The ACR/RSNA CDE schema repository, next-gen-2026 branch at b541b74 - the branch of record for the next-generation schema work, read at this commit on 2026-09-30 + last_modified: 2026-09-23 + - id: cde-relationships + resource: https://github.com/RSNA/ACR-RSNA-CDEs/blob/b541b74c22a33b64834309244569a60d06de79e4/docs/next-gen-schema/07-relationship-family.md + title: The Finding and Diagnosis Relationship Family, ACR-RSNA-CDEs next-gen-2026 at b541b74 - the catalog with domains, ranges, inverses and symmetry, the manifestation and causation test, the typicality and specificity scales, and the differential as a derived view + last_modified: 2026-09-09 + - id: cde-graph + resource: https://github.com/RSNA/ACR-RSNA-CDEs/tree/b541b74c22a33b64834309244569a60d06de79e4/docs/next-gen-schema/graph + title: "The vocabulary written as JSON Lines, ACR-RSNA-CDEs next-gen-2026 at b541b74: core.jsonl declares each relationship type with its inverse, symmetry, domain, range and permitted properties; pyelonephritis.jsonl and pleural-effusion.jsonl hold the two worked families" + last_modified: 2026-09-09 + - id: cde-worked-examples + resource: https://github.com/RSNA/ACR-RSNA-CDEs/blob/b541b74c22a33b64834309244569a60d06de79e4/docs/next-gen-schema/08-worked-examples.md + title: Worked Examples, Acute Pyelonephritis, Pleural Effusion, and One Report, ACR-RSNA-CDEs next-gen-2026 at b541b74 - the striated nephrogram and renal abscess edges as written, with their provenance warning + last_modified: 2026-09-09 + - id: cde-decisions + resource: https://github.com/RSNA/ACR-RSNA-CDEs/blob/b541b74c22a33b64834309244569a60d06de79e4/docs/next-gen-schema/10-decision-record-2026-09-02.md + title: The decision record, ACR-RSNA-CDEs next-gen-2026 at b541b74 - S33 and S58 on components, S39 to S41 on assessment schemes, each row carrying a provenance mark, OWNER for what the project lead stated and CLAUDE DEFAULT for what an assistant chose to keep moving + last_modified: 2026-09-23 + - id: cde-structures + resource: https://github.com/RSNA/ACR-RSNA-CDEs/blob/b541b74c22a33b64834309244569a60d06de79e4/docs/next-gen-schema/03-draft-structures.md + title: Draft Structures for Worked Examples, ACR-RSNA-CDEs next-gen-2026 at b541b74 - the edge catalog, the AssessmentScheme update under S40 and S41, and the definition-plane and report-plane component edges under their older names + last_modified: 2026-09-15 + - id: cde-alpha-shape + resource: https://github.com/RSNA/ACR-RSNA-CDEs/blob/b541b74c22a33b64834309244569a60d06de79e4/docs/next-gen-schema/alpha/SHAPE.md + title: "The alpha's generated node and edge documentation, ACR-RSNA-CDEs next-gen-2026 at b541b74: the committed edge names with their signatures, counts and properties, and the rule that co-occurrence relates two findings or two diagnoses" + last_modified: 2026-09-14 + - id: cde-alpha-graph + resource: https://github.com/RSNA/ACR-RSNA-CDEs/blob/b541b74c22a33b64834309244569a60d06de79e4/docs/next-gen-schema/alpha/graph/definition-graph.json + title: "The reviewer's alpha definition graph, ACR-RSNA-CDEs next-gen-2026 at b541b74: the typed edges as actually authored, including the component, co-occurrence, manifestation, causation and assessment edges counted here, the implementation approach the project lead adopted as the basis going forward" + last_modified: 2026-09-14 + - id: oifm-associated + resource: https://github.com/openimagingdata/findingmodels/blob/4475ac1bcb591f1a0951b2082b59208def173a5d/prompts/fragments/associated_vs_component.md + title: "Associated findings vs components, the Open Imaging Finding Models authoring fragment, main at 4475ac1: the independence test, the pneumonia and pleural effusion example, associated findings as one multichoice attribute, and components as their own models" + last_modified: 2026-04-18 + - id: oifm-scoring + resource: https://github.com/openimagingdata/findingmodels/blob/4475ac1bcb591f1a0951b2082b59208def173a5d/prompts/overview.md + title: "The Open Imaging Finding Models authoring prompt, main at 4475ac1: a scoring system is modeled separately from the observations it assesses, because different radiologists may describe the same nodule and assign different categories" + last_modified: 2026-04-18 + - id: rgo + resource: https://www.gamuts.net/about.php + title: Radiology Gamuts Ontology, the ontology-backed successor to Reeder and Felson - 55,000+ links over two relation types, with every differential produced by traversal (Budovec, Lam and Kahn, RadioGraphics 2014) + - id: hpo-format + resource: https://hpo-annotation-qc.readthedocs.io/en/latest/annotationFormat.html + title: Human Phenotype Ontology annotation format - the frequency scale and its percentage anchors, named in the CDE relationship catalog as the source of typicality + - id: orphadata + resource: https://www.orphadata.com/docs/OrphadataScienceDataDescription.pdf + title: Orphadata science data description - the frequency bins and the pathognomonic definition, named in the CDE relationship catalog as the source of the top specificity value + - id: board-role-tagging + resource: internal project board, not published + title: "Open Imaging Data Model project board (internal), undated; schema idea only" +--- + +# Relationships among definitions + +Definitions relate to one another through a small, typed family of relationships, each declared once in the shared graph with its domain, range, inverse, and symmetry: subtype, component, manifestation, causation, co-occurrence, progression, and assessment.[^cde-relationships][^cde-graph][^cde-branch] The CDE project calls the family tentative and non-comprehensive.[^cde-relationships] + +# Findings ↔ Diagnoses: manifestation and causation + +A diagnosis connects to findings in two ways.[^cde-relationships] A finding can be the diagnosis as it appears on imaging: pyelonephritis *appears as* a striated nephrogram, and when the pyelonephritis resolves, the striation goes with it.[^lead-relationships][^cde-relationships][^cde-graph] Or a diagnosis can bring about a separate entity with its own course: pyelonephritis *may cause* a renal abscess, a complication rather than an appearance, which may have sequela beyond the course of the acute pyelonephritis episode.[^lead-relationships][^cde-relationships][^cde-graph][^cde-worked-examples] The schema records these as two edges, MAY_MANIFEST_AS and MAY_CAUSE.[^cde-graph][^cde-alpha-shape] + +# Associated findings + +Findings and diagnoses also occur together whether or not one causes the other: pleural effusion and atelectasis each occur alone and often occur together.[^lead-relationships][^cde-relationships][^cde-graph][^cde-alpha-graph][^oifm-associated] The schema records this as an OCCURS_WITH edge.[^cde-graph][^cde-alpha-shape] An associated finding is distinct from a component, which is an intrinsic part of another finding, such as the solid component of a part-solid nodule, and is joined by a HAS_COMPONENT edge.[^oifm-associated][^cde-decisions][^cde-alpha-shape][^cde-alpha-graph] + +# How strongly + +The edges themselves carry properties that say how commonly the relationship holds.[^lead-relationships][^cde-graph] A manifestation edge can carry a typicality, from obligate through very frequent, frequent, and occasional to very rare, and a specificity, whether the finding is pathognomonic for the diagnosis, highly suggestive of it, or merely suggestive.[^cde-relationships][^cde-graph] A property left off means no judgment has been recorded, not that the relationship is rare.[^cde-relationships] + +# Deriving the differential + +The schema distinguishes manifestation and causation to enable inference: a manifestation edge can be read backward, from a finding to the diagnoses that appear that way, while a causation edge is read forward, from a diagnosis to the complications to watch for.[^lead-relationships][^cde-relationships][^cde-graph] The differential for a finding is therefore derived, not stored: the diagnoses reachable over manifestation edges in reverse, ranked by the typicality and specificity on those edges, on the precedent of the Radiology Gamuts Ontology.[^cde-relationships][^rgo] No edge type called "differential" exists.[^cde-relationships][^cde-graph] + +# Assessment schemes + +A pulmonary nodule definition specifies how a pulmonary nodule will be described.[^lead-relationships][^oifm-scoring] The assessment is a separate assertion, defined by the AssessmentScheme definition, which allows for evaluation of the nodule according to the defined criteria.[^lead-relationships][^cde-decisions][^oifm-scoring] The scheme is its own node, joined to the definitions it evaluates by an ASSESSED_BY edge.[^lead-relationships][^cde-decisions][^cde-alpha-shape][^cde-graph] + +# A proposal: role tagging of elements + +From a project board: tag element definitions with standard codes for their role, presence, location, size, modality-specific measures, so a consuming system can find the right element across definitions by role rather than by hard-coded identifier.[^board-role-tagging] Proposed, not implemented.[^board-role-tagging] + +The relationship types, with their domains, ranges, inverses, and provenance labels, are listed on the [next-generation schema page](./next-generation-schema.md) and in the schema's own relationship file.[^cde-graph][^cde-relationships] + +[^lead-relationships]: The project lead, 2026-09-30, recorded verbatim in the layout plan under "The guidance, verbatim". On this page: the ruling that emphasizing the relationships are held "strictly apart" "makes it seem like THAT'S the issue", and the subsection titles "Findings <-> Diagnoses: Manifestation and Causation" and "Deriving the Differential"; "Pyelonephritis APPEARS AS striated nephrogram..."; "when the pyelonephritis resolves, the striation goes with it..."; "The schema distinguishes manifestation and causation to enable inference:..."; "We should ALSO include the idea of associated findings here, and the properties of the edges themselves that get at how commonly findings/diagnoses are associated in the specified way"; "Don't include the 'HPO and Orphanet' reference", which is why the origin of the typicality scale appears only in the note below and not in the text; "a pulmonary nodule definition specifies how a pulmonary nodule WILL BE DESCRIBED. The assessment is a separate assertion, defined by the AssessmentScheme definition, which allows for evaluation of the nodule according to the defined criteria."; and "...by an ASSESSED_BY edge". A second statement of 2026-09-30, recorded in the same plan after this page was reviewed, settles four wordings: (1) the associated-findings example changes to a pair the graph records as a co-occurrence edge; (2) the renal abscess clause becomes "...may have sequela beyond the course of the acute pyelonephritis episode."; (3) "whether or not one causes the other"; and (4) the schema's own specificity words, pathognomonic, highly suggestive, suggestive ("they're cooler"). Decisions 1, 3 and 4 move the prose onto what the repository states, and the sentences carrying them now rest on the repository as well as on this statement. Decision 2 is the project lead's own clinical wording. Two things on this page therefore rest on this statement alone for what they actually claim. The clause "which may have sequela beyond the course of the acute pyelonephritis episode" is the project lead's wording and clinical judgment: the repository establishes that the abscess is a separate entity the infection produced and says nothing about its subsequent course.[^cde-worked-examples] And the second sentence of the assessment-schemes section is the project lead's own framing: the repository separates an assessment scheme from what it assesses and joins the two by `ASSESSED_BY`, but nothing in it describes the assessment as "a separate assertion", and the reading that the scheme "allows for evaluation of the nodule according to the defined criteria" goes past S40, which is explicit that it "does not decide automated scoring or report-result structure".[^cde-decisions][^cde-structures] +[^cde-branch]: The ACR/RSNA CDE schema repository, next-gen-2026 branch, read on 2026-09-30 at commit b541b74 of 2026-09-23. Every statement attributed to the repository here is taken from files committed at that commit; the branch had uncommitted working-tree changes on that date, which were not read. The family is working material and carries the project's own provenance labels.[^cde-decisions] +[^cde-relationships]: "The Finding and Diagnosis Relationship Family", the catalog this page summarizes. Its own status line describes it as "a tentative, explicitly non-comprehensive catalog of the relationships needed between findings and diagnoses, to validate against the proposed edge object", written for review. §1 is the family: "Seven pairs and one escape hatch", `SUBTYPE_OF`, the component pair, `MAY_CAUSE`, `MAY_MANIFEST_AS`, `OCCURS_WITH`, `MAY_PROGRESS_TO` and `ASSESSED_BY`, which are the seven this page names, plus `MAY_BE_RELATED_TO`, a symmetric catch-all for "an association the author cannot yet type; a triage queue, not a home", which this page does not list. §2 keeps manifestation and causation apart: manifestation "is constitutive", where "A striated nephrogram is pyelonephritis appearing on imaging, not a second disease", and causation "is consequential", where "A renal abscess is a new thing pyelonephritis made"; the test is "if the target resolved, would a clinician say the source 'got better,' or that 'a complication resolved'? The first is manifestation, the second is causation." §3 is the two edge properties, both optional. Typicality is the HPO and Orphanet frequency scale adopted with its percentage anchors, `obligate` 100%, `very_frequent` 80 to 99%, `frequent` 30 to 79%, `occasional` 5 to 29%, `very_rare` 1 to 4%, and a sixth value this page does not name, `excluded` 0%, the negative assertion that the finding is essentially never seen with the diagnosis, whose fit on an edge named `MAY_MANIFEST_AS` the document itself flags for review; an exact cohort ratio or percentage may be given in place of a bin.[^hpo-format][^orphadata] Specificity is three ordered values, whose committed names and source definitions are `pathognomonic`, "seeing the finding is by itself sufficient to make the diagnosis"; `highly_suggestive`, which "strongly narrows the differential toward this diagnosis but is not independently conclusive; roughly Orphanet's 'major diagnostic criterion' territory"; and `suggestive`, which "meaningfully raises suspicion relative to a coincidental finding, without strongly narrowing the differential on its own".[^orphadata] The text above names these three values directly, on the project lead's decision of 2026-09-30, so its wording is the enumeration rather than a gloss on it; the only word that is not part of a committed name is "merely", which is the page's rendering of the third value and carries no meaning the catalog's own definition of `suggestive` does not.[^lead-relationships] The document is also explicit that there is no `nonspecific` value and that "an absent property means no judgment is recorded". §4 is the derived differential: "The differential of a finding is the set of diagnoses reachable over `MAY_REPRESENT`", the inverse of the manifestation edge, "filtered by the context edges (age stage, modality, anatomic scope), ranked by specificity then typicality", and "No `DIFFERENTIAL_OF` edge type exists". Two differences from the text above, left as differences. The catalog ranks by specificity and then typicality, in that order; this page names the two properties without fixing their order. And the catalog's derivation also gathers the diagnosis subtypes of what it reaches, on a taxonomy rule S57 has since moved.[^cde-decisions] §7 lists what is still open, including whether `OCCURS_WITH` needs an association-strength property and whether the causal pair takes typicality at all; the latter is assumed yes in the worked examples so they could be written, which is a recorded assistant default, not a decision.[^cde-worked-examples][^cde-decisions] +[^cde-graph]: The vocabulary written as JSON Lines. `core.jsonl` declares each relationship type as its own node carrying its definition, domain, range, inverse, symmetry, formal name where one exists, and the properties it may carry, which is the "declared once" this page's first sentence rests on. Checked one by one at this commit: `MAY_MANIFEST_AS`, domain Diagnosis, range FindingClass or Diagnosis, inverse `MAY_REPRESENT`, properties `typicality` and `specificity`; `MAY_CAUSE`, domain and range FindingClass or Diagnosis, inverse `MAY_BE_CAUSED_BY`, formal name RadLex `May_Cause`, properties including `typicality`; `OCCURS_WITH`, symmetric, domain and range FindingClass or Diagnosis, formal name SNOMED `Associated with`, and no strength property, whose declared definition on line 13 of that file is "Seen together; asserts and excludes nothing about causality or sequence", so the relation as the schema declares it is agnostic about causation rather than excluding it, which is what "whether or not one causes the other" says; `SUBTYPE_OF`, `MAY_PROGRESS_TO`, `SCOPED_TO`, `HAS_ELEMENT`, `INTERPRETED_FROM` and `ASSESSED_BY`. No relationship type named for a differential is declared. Four of the five edge names in the text above are committed names in this file: `MAY_MANIFEST_AS`, `MAY_CAUSE`, `OCCURS_WITH` and `ASSESSED_BY`. Only `HAS_COMPONENT` is absent under that name, and it is footnoted where it appears; the `ASSESSED_BY` declaration here differs from the alpha in its range rather than in its name.[^cde-alpha-shape][^cde-structures] `pyelonephritis.jsonl` holds the two pyelonephritis edges this page names: acute pyelonephritis `MAY_MANIFEST_AS` striated nephrogram, typicality `frequent` and specificity `highly_suggestive`, and acute pyelonephritis `MAY_CAUSE` renal abscess, typicality `occasional`, whose own note records that it "assumes 07 Q2 answered yes: the causal pair takes typicality". `pleural-effusion.jsonl` is where the pneumonia and pleural effusion pair is actually written, and it is written as `MAY_CAUSE` with typicality `frequent`, not as co-occurrence; the one `OCCURS_WITH` edge in that file joins pleural effusion to pleural thickening.[^cde-alpha-shape] +[^cde-worked-examples]: "Worked Examples, Acute Pyelonephritis, Pleural Effusion, and One Report", §2 on the pyelonephritis family: "`acute pyelonephritis MAY_CAUSE renal abscess`, typicality occasional, on the assumption that the causal pair takes typicality", with renal abscess a Diagnosis in its own right and a subtype of renal lesion. That node classification is the whole of what the repository supports about the abscess being an entity separate from the infection; it says nothing about the abscess's subsequent course. The clause "which may have sequela beyond the course of the acute pyelonephritis episode" is the project lead's wording and clinical judgment, decided on 2026-09-30, and it is consistent with the repository's own test for the distinction, "if the target resolved, would a clinician say the source 'got better,' or that 'a complication resolved'?"[^lead-relationships][^cde-relationships] The same document warns, before any of its content is used: "Read the provenance before trusting a number. The owner chose the two examples and the effusion's cause list. Every typicality and specificity value, every `expected` hint, the subtype trees, the element choices, and the close-versus-exact code matches are Claude's clinical and terminological estimates, unreviewed." The two examples' relationship content is recorded in the decision record as a Claude invention.[^cde-decisions] +[^cde-decisions]: The decision record carries a provenance column on every row. **OWNER** means "The owner stated it. The quotation is verbatim from the session. This is the decision."; **CLAUDE DEFAULT** means "Claude chose it to keep moving and recorded the choice. The owner has not reviewed it. Reversible."; **CLAUDE INVENTION** means content "that no one has checked. Treat as unverified." A further caution applies from S49 onward: S49 records the project lead's own ruling that nothing is settled by the project's internal discussion, so a decision the project lead and an assistant reached together is a proposal to put to the external reviewer. The rows used here. S33 (2026-09-13) is where `HAS_COMPONENT`, with inverse `COMPONENT_OF`, is named, PROPOSED and ACCEPTED, replacing an earlier two-relationship form, with a count on the container's side and a component-of scope on the component's side, and the rule that "A class with a component-of scope is never reported on its own". **S58 withdraws that form**: the disposition is the reviewer's two distinct edges, the whole must have the part and the part occurs only in that whole, with a minimum count proposed on the first, OWNER, pending joint confirmation. The edge name this page uses survives both rows. S39, Measurement and DataElement as distinct definition types, PROPOSED and ACCEPTED with OWNER clarifications. S40, AssessmentScheme "a separate definition type, organized more like FindingClass with edges to multiple DataElement-like descriptors", OWNER, from "I actually like the idea of AssessmentScheme being a separate definition type"; the same row states that it "does not decide automated scoring or report-result structure", and records that Lung-RADS and cancer staging are the project lead's motivating examples, not clinical definitions adopted there. S41 settles the descriptors as ordinary DataElements, OWNER. S40 and S41 are marked documentation only. No row in the record decides `OCCURS_WITH` itself; the two uses of it in the worked families, hydronephrosis with pyelonephritis and pleural thickening with pleural effusion, are recorded under C2 and C4 as CLAUDE INVENTION.[^cde-worked-examples][^cde-graph] S57 has since moved the taxonomy rule the differential derivation in the catalog relies on, so that a diagnosis is never a subtype of a finding.[^cde-relationships] +[^cde-structures]: "Draft Structures for Worked Examples". Its §1 node table carries the AssessmentScheme row, and the §1 update under S40 and S41 states the separation this page's assessment section describes: "a scheme has edges to multiple ordinary DataElements, analogous to FindingClass's organization"; "The scheme, its dimensions, and their permissible values are different objects"; and "Older examples that represent assessment schemes as finding definitions are not the current direction". The same row leaves binding names and any use of Measurements for quantitative components open. This document is also where the component name collision is visible: at this commit it writes the definition-plane edge `MAY_HAVE_COMPONENT` and reserves `HAS_COMPONENT` for the report-plane edge between two Observations, so the two planes used the same word for different things before S33 renamed the definition-plane edge.[^cde-decisions] +[^cde-alpha-shape]: The alpha's generated node and edge documentation, generated from the build on 2026-09-14 and not hand-edited. §4 tabulates every edge with its signature, count and properties, and opens with the caveat any use of it has to carry: "Signatures are the tail and head types observed in the build, not everything the edge is permitted to take." All five edge names in the text above are committed names here: `MAY_MANIFEST_AS` (Diagnosis to FindingClass, 38 edges, properties `specificity` and `typicality`), `MAY_CAUSE` (10 edges, property `typicality`), `OCCURS_WITH` (FindingClass to FindingClass, 4 edges, symmetric and "Stored once; consumers traverse the predicate in both directions"), `HAS_COMPONENT` ("The whole must have this sub-part", 1 edge) alongside `COMPONENT_OF` ("This sub-part belongs only to that whole; says nothing about whether the whole has one", 2 edges), and `ASSESSED_BY` (FindingClass or Diagnosis to AssessmentScheme, 5 edges). Two differences from the earlier representation are left standing rather than merged, and they are different kinds of difference: one changed name and one changed range. The name: `core.jsonl` at the same commit still declares the component edge as `MAY_HAVE_COMPONENT` with inverse `MAY_BE_COMPONENT_OF`, so `HAS_COMPONENT` is the one body edge name absent from that file. The range: that file does declare `ASSESSED_BY` under this same name, but ranges it on a FindingClass acting as an assessment rather than on an AssessmentScheme node. That file predates S33, S40 and S41.[^cde-graph][^cde-decisions][^cde-structures] This document is also where the rule is written that the associated-findings example above satisfies: `occurs-with-same-type` states that "OCCURS_WITH relates two findings or two diagnoses. Between a diagnosis and a finding a more specific edge already exists (MAY_MANIFEST_AS or MAY_CAUSE), so reaching for co-occurrence there is declining to say which". Pleural effusion and atelectasis are both FindingClass nodes, so the pair sits inside that rule. The page's earlier example did not: pneumonia is a Diagnosis and pleural effusion a FindingClass, and the alpha records that pair as "a **`MAY_CAUSE`**, not a `MAY_MANIFEST_AS`. Pneumonia does not show itself as an effusion, it produces one", which is why the project lead replaced the example on 2026-09-30.[^cde-alpha-graph][^cde-graph][^lead-relationships] +[^cde-alpha-graph]: The reviewer's alpha definition graph, the export inspected here, which the project lead selected as the implementation approach going forward on 2026-09-14 while noting that "Selecting the implementation approach does not automatically accept every structural choice in the alpha". The component edges in it, read one by one: `HAS_COMPONENT` from part-solid pulmonary nodule to solid component of part-solid pulmonary nodule, the single edge of that type and the example this page names, and `COMPONENT_OF` from that solid component back to the part-solid nodule and from mural nodule to complex renal cyst. Its four `OCCURS_WITH` edges all run from pleural effusion, to atelectasis, consolidation, ground-glass opacity and mediastinal lymphadenopathy, each between two FindingClass nodes. Pleural effusion with atelectasis is the first of those and is the example the sentence above uses. One limit of it: that edge carries no properties, and no co-occurrence edge in either authored graph carries any, because `core.jsonl` declares the relation with no strength property and whether it needs one is still an open question in the catalog. "Often occur together" is therefore an ordinary clinical statement rather than something the graph records; the frequency properties described further down this page sit on manifestation and causal edges only.[^cde-graph][^cde-relationships] Pneumonia reaches pleural effusion here by `MAY_CAUSE` with typicality `frequent`, as it does in the JSON Lines family, which is why it is no longer the page's co-occurrence example.[^cde-alpha-shape][^lead-relationships] +[^oifm-associated]: "Associated findings vs components", the Open Imaging Finding Models authoring fragment, which is where the distinction this page draws is stated on the finding-model side and where the pneumonia and pleural effusion example comes from. An associated finding is "a separate, independent finding that happens to co-occur with the index finding. It has its own lifecycle", and its independence test is "could you see this related thing *without* the index finding, or vice versa?" The example, verbatim: "pneumonia and pleural effusion. A patient can have pneumonia without effusion, or effusion without pneumonia. They co-occur frequently but are separate entities with their own attributes". A component is "a structural part of the index finding itself - not a separate entity, but a piece of it complex enough to justify its own model", and its test is "would you ever document this thing as a standalone observation without its parent? If not, it's a component"; its example is the solid and ground-glass components of a mixed pulmonary nodule, "parts of what the nodule IS". Note that the authoring rule is document-shaped rather than graph-shaped: an associated finding is recorded as "One multichoice `associated findings` attribute on the index model", presence-level only, whose values name other finding models, while a component is extracted into a model of its own. The graph edges above are the CDE schema's way of holding the same distinction; no source read for this page states that the two mechanisms were reconciled.[^cde-graph][^cde-alpha-shape] Note that this fragment's own example of an associated pair is pneumonia and pleural effusion, which is not the pair the sentence above uses. Both authored CDE graphs join pneumonia to pleural effusion by a causal edge instead, and the alpha's same-type rule would not permit a co-occurrence edge between a diagnosis and a finding, so the project lead's decision of 2026-09-30 moved the page's example onto a pair the graph does record as a co-occurrence.[^cde-graph][^cde-alpha-shape][^cde-alpha-graph][^lead-relationships] This fragment is cited above for the distinction itself, which both collections draw the same way, not for the choice of example. On the sentence's other half, the independence test establishes that either finding can occur without the other, and it takes no position on whether one causes the other when they do occur together, which is the same agnosticism the CDE catalog states in SNOMED's words, an association "without either asserting or excluding a causal or sequential relationship".[^cde-relationships] +[^oifm-scoring]: The Open Imaging Finding Models authoring prompt, which states on the finding-model side that the thing assessed and the assessment are different definitions: "**Scoring systems and structured assessments are valid findings**, but should be modeled separately from the observations they assess. A 'pulmonary nodule' finding model captures what the nodule looks like (size, morphology, location). A 'Lung-RADS category' finding model captures the risk assessment assigned to it. These are separate because different radiologists might describe the same nodule but assign different risk categories - and systems need to reason about both independently." The companion authoring fragment on scope repeats it: scoring systems "are valid findings in their own right, modeled **separately** from the observations they assess". This supports the separation and the pulmonary nodule and Lung-RADS pairing, not the AssessmentScheme node type, which is the CDE schema's construct; in this collection both sides are finding models.[^cde-decisions] +[^rgo]: Radiology Gamuts Ontology, the precedent the CDE relationship catalog cites by name for deriving rather than storing a differential: "The Radiology Gamuts Ontology, the ontology-backed successor to Reeder and Felson, carries 55,000+ links using exactly two relation types, is-a and may-cause, and produces every differential by traversing incoming causal links to a finding (Budovec, Lam, and Kahn, RadioGraphics 2014; gamuts.net)." The catalog also records that no source it surveyed, across that ontology, HPO and Orphanet, SNOMED CT, UMLS, Radiopaedia and STATdx, stores differentials as diagnosis-to-diagnosis edges. Cited here as the CDE catalog cites it; the ontology's own site and the 2014 paper were not re-read for this page.[^cde-relationships] +[^hpo-format]: Human Phenotype Ontology annotation format, named in the CDE relationship catalog as the source of the typicality scale, whose bins and percentage anchors the catalog adopts verbatim and whose permission to give an exact cohort ratio in place of a bin it also adopts. Recorded here only, at the project lead's instruction that the reference stay out of the prose.[^lead-relationships][^cde-relationships] +[^orphadata]: Orphadata science data description, named in the CDE relationship catalog alongside the HPO annotation format for the frequency bins, and as the source of the `pathognomonic` definition the catalog quotes, "a sign whose presence indicates that a particular disease is present beyond any doubt". Recorded here only, at the project lead's instruction that the reference stay out of the prose.[^lead-relationships][^cde-relationships] +[^board-role-tagging]: Open Imaging Data Model project board (internal), undated; schema idea only. The proposal is to tag each element definition with a standard code, SNOMED or RadLex, naming the role it plays: presence, location, size in its several measures, and modality-specific measures such as radiodensity, echogenicity and MR signal, so that a consuming system finds the right element by looking up the code for the role rather than hard-coding a set-specific identifier. It is a working proposal with no date and no implementation cited, and nothing read for this page connects it to the graph's own route to the same reuse, one shared DataElement node bound by many definitions.[^cde-structures] From ec06b17aa56be4de4f2f4ca28367ce40f5fb177c Mon Sep 17 00:00:00 2001 From: "Alkasab Agent (agent-dev)" Date: Wed, 30 Sep 2026 21:07:23 +0000 Subject: [PATCH 14/19] Revise the figures and add the two-collections and nodule-neighborhood figures - Two planes: specific exam, Playbook entry, exam family, modality, anatomy chain, a negative finding, node kinds colored - Three axes: section bands per column with example hierarchies; measurements by kind - Mini-network: solid arrowheads; assessment schemes as ovals everywhere - Pillar stack: castellated seams joining applications, SDKs, structures, and foundation (variants kept for the choice) - Nodule neighborhood drawn from the pinned CDE graph, illustrative of pending updates; shape and color conventions recorded Co-Authored-By: Claude Fable 5.1 --- docs/plans/renders/foundation-network-v7.png | Bin 0 -> 181391 bytes docs/plans/renders/foundation-network-v8.png | Bin 0 -> 180523 bytes docs/plans/renders/nodule-neighborhood-v1.png | Bin 0 -> 116287 bytes docs/plans/renders/nodule-neighborhood-v2.png | Bin 0 -> 175158 bytes docs/plans/renders/nodule-neighborhood-v3.png | Bin 0 -> 173016 bytes docs/plans/renders/pillars-v4a.png | Bin 0 -> 102030 bytes docs/plans/renders/pillars-v4b.png | Bin 0 -> 83656 bytes docs/plans/renders/pillars-v4c.png | Bin 0 -> 95407 bytes docs/plans/renders/pillars-v5-b1.png | Bin 0 -> 77596 bytes docs/plans/renders/pillars-v5-b2.png | Bin 0 -> 77800 bytes docs/plans/renders/pillars-v5-b3.png | Bin 0 -> 77989 bytes docs/plans/renders/pillars-v6-b3.png | Bin 0 -> 77688 bytes docs/plans/renders/pillars-v7-b3.png | Bin 0 -> 84391 bytes docs/plans/renders/pillars-v8-b3.png | Bin 0 -> 82112 bytes docs/plans/renders/three-axes-v2.png | Bin 0 -> 68398 bytes docs/plans/renders/three-axes-v3.png | Bin 0 -> 93653 bytes docs/plans/renders/three-axes-v4.png | Bin 0 -> 116286 bytes docs/plans/renders/three-axes-v5.png | Bin 0 -> 125581 bytes docs/plans/renders/three-axes-v6.png | Bin 0 -> 147455 bytes docs/plans/renders/two-collections-v1.png | Bin 0 -> 63814 bytes docs/plans/renders/two-planes-v10.png | Bin 0 -> 103521 bytes docs/plans/renders/two-planes-v7.png | Bin 0 -> 97331 bytes docs/plans/renders/two-planes-v8.png | Bin 0 -> 97331 bytes docs/plans/renders/two-planes-v9.png | Bin 0 -> 94543 bytes .../drafts/foundation-network.excalidraw | 1679 ++++- knowledge/drafts/foundation-network.svg | 2 +- .../drafts/nodule-neighborhood.excalidraw | 6015 +++++++++++++++++ knowledge/drafts/nodule-neighborhood.svg | 2 + knowledge/drafts/pillars-a.excalidraw | 2317 +++++++ knowledge/drafts/pillars-b.excalidraw | 2564 +++++++ knowledge/drafts/pillars-b1.excalidraw | 2044 ++++++ knowledge/drafts/pillars-b2.excalidraw | 2960 ++++++++ knowledge/drafts/pillars-b3.excalidraw | 3350 +++++++++ knowledge/drafts/pillars-b3.svg | 2 + knowledge/drafts/pillars-c.excalidraw | 4731 +++++++++++++ knowledge/drafts/three-axes.excalidraw | 5538 ++++++++++++++- knowledge/drafts/three-axes.svg | 4 +- knowledge/drafts/two-collections.excalidraw | 1662 +++++ knowledge/drafts/two-collections.svg | 2 + knowledge/drafts/two-planes.excalidraw | 3807 ++++++++--- knowledge/drafts/two-planes.svg | 4 +- tools/diagrams/README.md | 16 + tools/diagrams/build_foundation_network.py | 94 +- tools/diagrams/build_nodule_neighborhood.py | 411 ++ tools/diagrams/build_pillars.py | 483 +- tools/diagrams/build_three_axes.py | 422 +- tools/diagrams/build_two_collections.py | 240 + tools/diagrams/build_two_planes.py | 374 +- tools/diagrams/excalib.py | 30 +- tools/diagrams/variants/build_pillars_b1.py | 303 + tools/diagrams/variants/build_pillars_b2.py | 404 ++ tools/diagrams/variants/build_pillars_b3.py | 462 ++ 52 files changed, 38104 insertions(+), 1818 deletions(-) create mode 100644 docs/plans/renders/foundation-network-v7.png create mode 100644 docs/plans/renders/foundation-network-v8.png create mode 100644 docs/plans/renders/nodule-neighborhood-v1.png create mode 100644 docs/plans/renders/nodule-neighborhood-v2.png create mode 100644 docs/plans/renders/nodule-neighborhood-v3.png create mode 100644 docs/plans/renders/pillars-v4a.png create mode 100644 docs/plans/renders/pillars-v4b.png create mode 100644 docs/plans/renders/pillars-v4c.png create mode 100644 docs/plans/renders/pillars-v5-b1.png create mode 100644 docs/plans/renders/pillars-v5-b2.png create mode 100644 docs/plans/renders/pillars-v5-b3.png create mode 100644 docs/plans/renders/pillars-v6-b3.png create mode 100644 docs/plans/renders/pillars-v7-b3.png create mode 100644 docs/plans/renders/pillars-v8-b3.png create mode 100644 docs/plans/renders/three-axes-v2.png create mode 100644 docs/plans/renders/three-axes-v3.png create mode 100644 docs/plans/renders/three-axes-v4.png create mode 100644 docs/plans/renders/three-axes-v5.png create mode 100644 docs/plans/renders/three-axes-v6.png create mode 100644 docs/plans/renders/two-collections-v1.png create mode 100644 docs/plans/renders/two-planes-v10.png create mode 100644 docs/plans/renders/two-planes-v7.png create mode 100644 docs/plans/renders/two-planes-v8.png create mode 100644 docs/plans/renders/two-planes-v9.png create mode 100644 knowledge/drafts/nodule-neighborhood.excalidraw create mode 100644 knowledge/drafts/nodule-neighborhood.svg create mode 100644 knowledge/drafts/pillars-a.excalidraw create mode 100644 knowledge/drafts/pillars-b.excalidraw create mode 100644 knowledge/drafts/pillars-b1.excalidraw create mode 100644 knowledge/drafts/pillars-b2.excalidraw create mode 100644 knowledge/drafts/pillars-b3.excalidraw create mode 100644 knowledge/drafts/pillars-b3.svg create mode 100644 knowledge/drafts/pillars-c.excalidraw create mode 100644 knowledge/drafts/two-collections.excalidraw create mode 100644 knowledge/drafts/two-collections.svg create mode 100644 tools/diagrams/build_nodule_neighborhood.py create mode 100644 tools/diagrams/build_two_collections.py create mode 100644 tools/diagrams/variants/build_pillars_b1.py create mode 100644 tools/diagrams/variants/build_pillars_b2.py create mode 100644 tools/diagrams/variants/build_pillars_b3.py diff --git a/docs/plans/renders/foundation-network-v7.png b/docs/plans/renders/foundation-network-v7.png new file mode 100644 index 0000000000000000000000000000000000000000..dd10da7fcb29c1ddd69c59a28692b7ab423e66be GIT binary patch literal 181391 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�~dT%jzjfpB?H5kl4^)`|=`oVTSxU+6p_zk6GR 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 gyo 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 R0=jLf(&7qYr6Pv!{|A#gJU0LU literal 0 HcmV?d00001 diff --git a/docs/plans/renders/foundation-network-v8.png b/docs/plans/renders/foundation-network-v8.png new file mode 100644 index 0000000000000000000000000000000000000000..2482948aa847d0f392ac3ba3fe6154ac2b21b0dd GIT binary patch literal 180523 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�P{OQ`4zPI-1JmIQ$nGiqXwSQs7#_AYIrSk#Db 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
hriLo57hj0L`FG;J(F)(Cr`wW&FQr? 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

J7K zg|}(&hUM6eC`TxxV_{>kE8=flsb{Dh?)u_|{(p>pWmr{RxAs<0L0S}~rKP32TT+Ql zgLF!F3W#)fcZYO`NOyNPo7i;6w}9t)-*diSXI}pB+N`zansbdg=9u@m#~2waKs}*T zpnierA7XagD!!H^E<&_Nkwtu+NO&}J3_fJU9%D;8(uYwWm$t@)q1JASjZUMcML

68-2g_28!fgzMZ962`wM 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 D--Ij7 literal 0 HcmV?d00001 diff --git a/docs/plans/renders/nodule-neighborhood-v1.png b/docs/plans/renders/nodule-neighborhood-v1.png new file mode 100644 index 0000000000000000000000000000000000000000..7edf9b81540c4d467919b01dc9e70543185e6d50 GIT binary patch literal 116287 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

fIR8l}8H*-fidA^hU2EUSL+c)zw;7 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

)KZ!t33bgugfR|QKNp#q}z4NbUP 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 literal 0 HcmV?d00001 diff --git a/docs/plans/renders/nodule-neighborhood-v2.png b/docs/plans/renders/nodule-neighborhood-v2.png new file mode 100644 index 0000000000000000000000000000000000000000..7791dba4368282fd81e496b3bc59d313d9301abe GIT binary patch literal 175158 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 HA&9B3!CvPt?4*M($Tnqa+ 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

y1&Dkut-T1>=(Qr(~B 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

|D#Mrn39H6# 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

    3toJ(P&XO$wC*}h7f=_>JnI6oD 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 aKEV*YWiAT-3#j{VXh~5ykxC(b|Njrz%u)yd literal 0 HcmV?d00001 diff --git a/docs/plans/renders/pillars-v4b.png b/docs/plans/renders/pillars-v4b.png new file mode 100644 index 0000000000000000000000000000000000000000..b6688edd321514ff81270f1e00e0e1b4de5be839 GIT binary patch literal 83656 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 Pm{~7*Yx?ZCzJlt5k8ll%pMK^pqSV` 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 literal 0 HcmV?d00001 diff --git a/docs/plans/renders/pillars-v4c.png b/docs/plans/renders/pillars-v4c.png new file mode 100644 index 0000000000000000000000000000000000000000..c699406d6b45916f44d96c72e129ae8b80fde7b0 GIT binary patch literal 95407 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
  1. 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≪fWOMu;*EP6WCD7 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 literal 0 HcmV?d00001 diff --git a/docs/plans/renders/pillars-v5-b2.png b/docs/plans/renders/pillars-v5-b2.png new file mode 100644 index 0000000000000000000000000000000000000000..36dcfaa6d6fb576d98bf4a4e5d50eaed306511b3 GIT binary patch literal 77800 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ⅈ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

    A>O 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 G4*EYsV%Nt2 literal 0 HcmV?d00001 diff --git a/docs/plans/renders/pillars-v6-b3.png b/docs/plans/renders/pillars-v6-b3.png new file mode 100644 index 0000000000000000000000000000000000000000..18ed1ef815b46e7e003e3967b5fac86a919e8058 GIT binary patch literal 77688 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%0D$)2% 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ðVvN>RCDK0EzDy^R34bPq*-vDly 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 F{trBkg3JH_ literal 0 HcmV?d00001 diff --git a/docs/plans/renders/three-axes-v2.png b/docs/plans/renders/three-axes-v2.png new file mode 100644 index 0000000000000000000000000000000000000000..dc45432122032e78c95c6e50a2f57aa6e9bea385 GIT binary patch literal 68398 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�}lsrsl9jv{36o(_m6 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%0A0|yAgU5Mmty;~-F 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 H_+v;K5XS1Ek@3eO|{wd_L$7s0zu^|Q<2NNFOS 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�n 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

    W+g>*0Z>o_@zrvSA>1^9s6XzC(bz$`3re$x;=iP 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 literal 0 HcmV?d00001 diff --git a/docs/plans/renders/two-collections-v1.png b/docs/plans/renders/two-collections-v1.png new file mode 100644 index 0000000000000000000000000000000000000000..17c0180bcc0faeff748f71f52abf42c02a8bdbc8 GIT binary patch literal 63814 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≤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 H=-dAR1y5bC literal 0 HcmV?d00001 diff --git a/docs/plans/renders/two-planes-v7.png b/docs/plans/renders/two-planes-v7.png new file mode 100644 index 0000000000000000000000000000000000000000..9183fb739b9280c953342ec5d33cf8aee57e06eb GIT binary patch literal 97331 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

    #X>|J4~;-R#t1KGyei4ADKh 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 E2QkXJaR2}S literal 0 HcmV?d00001 diff --git a/docs/plans/renders/two-planes-v8.png b/docs/plans/renders/two-planes-v8.png new file mode 100644 index 0000000000000000000000000000000000000000..9183fb739b9280c953342ec5d33cf8aee57e06eb GIT binary patch literal 97331 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

    #X>|J4~;-R#t1KGyei4ADKh z_kUWz3qeBHV|ClQxS#MF5j_YQV6&o1W+BlKsWT9DH3KfGOAOFzV3KaQ5Q_zRmT-jl z>e^EmZ5b!@4Scn8;^k`vyi8a25`}Q&bJ9FkB2xwE(pVmeH`R65?4(owlmHR03Ypsq z>bxIPkH$w4Q=KJ{IC@{&6HB6&8ATH6d$wv8y_va7%9HBpyjm}Xx96|6S|BQQ~?ekV#ZaYcvyIBmDJLiek6nG4{;Wc#9Z^LoF#sOw2;1Bj*B<#(MF9 z76x+MvPXVEQapPopyde$`e)qc`EDL;02r_*_wIQODYGy>&(jTY+Ti6?ZOmRN0vB|~ zxG%XuVl;IY;^Qp6kj>pVa09XI561H-Upz?Dsg?S-y< zi{a)=YrAkKhYJ>a9JBI>{krIajYIpi6~}x;GE}Pxg-aFrbt2W%m;c*xMCF^ea(-qn zB*pIdX)`vYr)XWEi6~S8$n*7!HnIu zzV6y_Yny@haYyYTB0=BV`-E%LWls;0)UgT>HiI#AjlVZ=hn=7-AZnKIqEJVB!17`Q z!P7tBL$0&7x@3;eZ*5`L(f{bCvvXudZ)?@d$8T2qY6aoS`@NS$pzl}s#b(g&6?)B` zRz1d)A8i6HNJtAORAgi!1=z+w6|OvKjz%crNRW6FUM$t9qtHVn2`1WS3!;j!?2hKV zZ~UMfy-I)!stg8(Foq58#5kC<<7}W8xj!td>uBTV`d_NtLM?)eaBE>Up>1v-e5p|+? zA35{)`{Z~0UgO5|AFt~Vz=)R^HK8WMYQc^Q_1C|UIdqNA8@%L>d{li^&DUxqRk`|Q zWwj#z*>QFy@@6XSSJb~xx(zR8cn&~%VWk*^)Rr&*pdQCnqK zE=KhERP~z@VuM3!x7rf0;QqXb2Re5TN>nC#gmxtAUw@}7;(qe=iKGN}q$;Y?+N%eN z6yad(1Gu6_&xta_cH9Y}PS3f8dIAp=xyL)6l6FMfpK&E$no%-@`M2d6#s^7)9QIa) zgM?mbqFx`5ot`}navSg0;>)@HQ=K1kk9YLLg5gQy8J&7vsIH4WzGoajs};PW7zttOSs#I#3qW zx%7w`xXj%SFAlAF0ZZGN{oVOqPWded^1ufbj^Y2m^GoXe3l#jn0sK$A1YB2^*j$Nf&>+H1Vq=2=8Wt%pleZ98xQE&I9b&cxiSWY zffk2pNF#|=rfc5c%_T|clv!hjtxGW9J&NXy-ez``wDD1;nfeVzz}ExLh-{V!oPIOu zckjH(4+{lZ(Q7kl%j@Jfda*J26^(x%Pe*WB5Am&@BW!WBW&P&FPzE;2Z4QWxMcmM! z?XT7P-o?mZ6(@rm$UcOowHJVynjLrnCxeWef5w3Z5j-~hL%{2P$?gB&>azR{Tule6 zy1X9n@l)^005{S4vQ}2r-drTD<7N_N(eJQlyS;9*q4t9zJ*HDPCoAY%Juix|5+iIQ z(}>1VHe0FElny*Rwfi2GheD;74YbDwO;})%GH1UTlo99T9?sAIO4YUFB47)uh*Dkp zsEW-)aGPwa?fo|={6y%%tH|Uy4#1*Pqh>1Tp4RF-PYAkbdP$}^@-7$P5_&6<;UKN(;HRBc+*4ZQd-2lI#A2+;N5d}6 z%y|afA5v5ik#i-8S^Qt;*H(k;XVdYqaWg^|pf1RLlJn)8!OLq!ueXO{!@TV>`%X4z zQ!E{0erv5WcJ4_HPW{Vv_G@MNT^KxnQV_F!A%RKPZe?g`-=ZcDn#w4pB^q0&jS;D2CZ$cyK*h0R5gbNwQl)s1|2_m#{E&a}8?8F|TBZSAU~heMsyFI*I7S2l zd4G8^+2+07hudZP{tjKF@!Vv^U#Pf@gPL%(iXXX0`}e{EjR11FB1oVcWH6ZIb+z1> z539sZI#bh*DVert&@hB4f zpRN~zj9G7Lr~c|eypKfmfvIuI#Mk!hfEhF%{pwaoruFeNHXQ@PPQ95jqDl|OOD?Cm zN~OOZ$t}{@b7Eo)mN}_+?XSx2o2jse2X^J}*ZNW2t&#m~hKQUr&1F19cEte1(mAKR zZM{u*T!SQ$v7hQnwo7N;bW13~|6}%9`hVDZ$H2IvwhKFU<21HyvvC`GQtN=iiykoH?`iK6|fwt?Nz|&?d?kPwzL;7ajEyA_2mCL+07M zwDG;+N!Qc)Xs*BLGn~8248P?PzBZLrZ_q&e#tuguWE`^Cgr%n5N9}x8J*UMCYSSwF zhqU5F>&N!bvS{<`?${YKjhL;$F@3-AnxLz;PFGWe7E`we)3mdQ|iwxHeO9G!F2P`_sodxcm91FQ zC``-Sp2J@&6#A;tHD|iD4i{0;eJ3ET>3Zsm^>4jDuHmspbR*sLHi{YfLEvh9rN(>8(e`7u+ zJ|{Xjb5^MuXEqe{F=d%rQhi?WJ9A$F2r20)cWt8nc7`qX>oyV3SLtD$++nC#5}+?S zjZIFC8K+h?&uc>-KjChzm~{wq+UY9(%zA3t5>k}KGA!xP;k6RA>&7gc*t?-Rv%HQZ z*ZXy1Hu9VZm8erT=-F| zMoh`IrN$!98L`NZew?`4U{5Zip6wCuM#0=6!yk#*7cdFHU8Eu92- z4SAiXY>BJBA9jHlLShAMtgn%pnH8}yny}8ZMH%CaiM{0%4YvBQD-S8kXN`V zQvK#_{;LI?-ooRT+_zfqi&T+pQUu9Ld&ff!AnH8|vkLj5Awf4`Ip&J?#*fIWle%KM z><+4)xcm${a!ix1f6Y0OXA#EPJB!t|RZt(}Fe8`%pqOvTPiv&SdTi{HP!5rS2v72e zLq9G14|w@s)^5*Ohgtkr*YZs}TEXrzIj)9Pe=ms#S{q6hH_!xUa@SHwVsx{`$dl9w z{I+q>SDa>o`-VxfsrRTAj|t)X)mw6~k|$9YjJji~vY*pB+>`~JAgTDd##?|XO>_%$grpk`3pxybR4z_*9+PYtC`+L+*( z<%=_~UpqOw?~je4nY*A!XdQvd2=YD)R~w7&i}7+t7Sl!|>*JC1*9l8aA+@6lVQ^tL z!M)i&3+r0k?>Qz0KjXwN7RO7CQ-Kqi&xz+u0TvjAo3d)meo^C+EF~nx!f!j}=ZLj1*ueCr%|FU;o(bX+XoZa0}(HrChcZ;u6<#_hW*j4{&@RLZ%Wbj1h`}R=1 zn*27A+0N|wdWqEaUch@gj#9PBheIJY;)ijG=IOYIPKTAqb5UWzh1vS{!R{Byt}hFI zMZbS$h2;7#=FN>iHSd3YHIvEzve0lnoCnQsgT^(Bbk+5E6Y02~JISq;{RSdqb1Su$$Gp=39O zx_kT7AUw}MFhVDQ2y^o|>I8Q)Jq~!JDPFBuzt0?>LWv*`70P3+3eHYf;Lt7LC_4yQ z6iC<0JGB4Vq(W~u)9|m(zn!~3s^H6*D0bsgRp+~>H8gBtNgTq8baDOOGDgxOzD=Z( zAL%W~qK06GX>7!=LjJdHbrP|XSuf-5WZ|o@1`UR@7lT3qO6x64_hCdGr>i8zQTt8; zHll7KB?dW2mPM`~q2xGBsrNx@07}kQ=?6G>rbG(hY27V|w=ho790r%X)XTXLT4wKB1vftUvQFnJx;nPHL&pP=FoIA+pBeIL#zVA)P76Bkjt0 zRISCWdm_2sj6Z_GMw@H~A#OlQ3*`we(aN~)yP_b*=*N$)*#e1kR#kH7Zu$|Bkzz zkeR6gEB5fO8tEGI;a;Pvq_D$p;tlRTK+Cc;5A4}}+gF}DAmrn)$yE8B+Tg_m%J(#U zJ6W6lpzc9SUg!})+jCj5fyt&iBs#2!c-VjOH~%;OYI@AEq(1YQ{3#n2>56orC(P_S z6@?y2Kq1U_INuyy(aPpvHkCv_;+;H+<<9B9yV+NWqIcu06va+o>^_`7I{HC3&D;#| z`yN7Lz{@am=AP$$)azuo&CFnCVfdpXLK}JALiD>dLkn!!>3hiFzkVZBu=h50sf8`W$c zBTTnG-PzB_6ffj;eA`+TgXll_0KYU{H6&X?`PZ7#R}t4;CNS_K*i}n!<_tj*O)R|} zW^(g#(T+u$TlufZ=)M!|m4f4bGJzd#u>{|t}=R>(@j)(zgBltl675Ai=HTi zl~Cv^9fi%r`&1^0weuWOH*|;2pugo*L2>t?8RW=^63r1)Ccm(tBEE>}zpW9wFOy`( zc1$R3TSrotHkx}85c(X^+{2h@a zU7W!poeE6Rit&&_pZ^~OsjrFc`oTBuAKE`8z&96%w^$wO-0pf3+?9`hW&R@YyxE#N zSJz79Z)~kuU46S2D@c<51B6=5Fg#ji`%ok5Il^bB;ryhk0Un7x=FW5&I+YhJfbp~B zA8oy&@9&pF!YFUOsPKCec-0sHw2WUr{j&8Nn%u5~+IS6)#nKi&BYj*?RA_Cf&M46v zDQ6Ci@w#4fU90rlOVMRYlIgp3!>SL@EcwxcQeKO@M2lv8$`Y^UurpZ^8C zR$Gdl?uQ!Ry>gr~gtQdb6N@Prz8n5xI_($44Om?yOOzXRrJ`WYKGWkk!&mWmm5JQp zh%bBWHmuud_FK21u4Yh-&$g!Ivd*Y2hR|k0?QWs>oY?|FpbNBE1DGOqn@pZ2)X8+5 zDr)7zMR&KnxSDY(W9p!`Icd&7+tU5NYOPH9W~b*HGAd&uoXeFc5vur;X(wGJ^Up## zAG+TWBUur~Ha*L2koSZI4cYj&XDfvLpET^BkkN{V`e6)wa^EpR26Wz2{pjApCq*1* z-^?v#MpHuX%S$qhh4k&$rkCDR7Z_*2yGo+YxKM!zzn6HNJZ@{sV4GBbJ&bo3E^d8k zAF*TUriM$4>dt-^~6Vo^xOe<*_70c74nNWDJS+ISn-zpMtYSQ zB>O#)MRfzAC9YH_7;uJ$o2hZRHd%{_MdD5X?pu)xEh5F!B?!LU zt{HSx+(_K4r|cS{r*prvzQ#~$XPYe848cD)&az3jUNZN)xo<~1id9y>mmA8CPnAq{ z2^E4U{A77xDdJ(GN4_AU9-bLsMUo$}pwZ#@@(3Q$Vk02Ph6*oXPv~`7qx{qKh(1Sb zevR$(x{(^=F+!&+e9N(OaZ+mv@cZq-rIA*?J7z+C8D!(YHS<3onbURvFWP##^a`r0 zQWy+up?^>aLI_Qyxjv|x4OX+=>6gC4F}L*Tc=CTHuHd43LLAp5@BpNP5P!97Q4r~b zzgpr*ateV6dm09eHNnx+EXm#u8d*|WwOf8XC{|*tdjQ0G|=7j==rrWz}+#)oH2QBb-`v_d_K@M|D+>=#LH=t+4j>W~7(=>lYWv6CvF!S;OWqmE(0vgm7q`JJR9|!B#u=$yl%|Ta(t_`Sox1jeXsF z6?bFjr3ykW!ef0|iss~q zTzWnbFFnYvnsvC3D^kiCmWcl}xhGR#WSm0(Q}#fhB|Y$=X~&{uF@YM9t$7m-k;IR^SO`Du*`Sz`7Da2(1vVs zNv)5K%c}uvF zVI@6I&;%bNF4DN$8u0PM0k-PIdXRr9Xwr(!m(F&C{;FPd*oeMPA0$l}~QY>l)$r-_#>4Iu{e~MHz$x!YFN1?=*u?FIKv0 zVf1tJ$lbTLgIta7dFV($0u{xY3Nw(aqgTEZiWG*l${Nzmtf3cyx95qH-` zi3g5#gDm^MpjsNN*4_SW>?$dh%C`sbRUW$DIz`d9O!;mAyQlo^dg?}lRxmazpX4go zE?$RTwb%t~zz#Au6OWSPW8Ke%)62yZhs-s8t0uR5t+pqW3HzW_>}$;w(R)gmX!KJ* zktBQK@IyJ^!^7?P$}r`)iQ)386>+5`AHJ3IWt+VR`kfxhW9#xgQPOR=N!zJqHpP2? zq?=KJ0WX@|Q3L^whTNCGc`6h*m#{)d(}i=qOZlOUuKr6%yIPSrn)N@2i352@j<h2%(e)77|=$O54l7 ztNI0KTA+9b+jVBsnOrH9Z1A{ex&b&hV=83X#-_}r4oQH7wJrCto>>BGTv}GG80AAo zbpx7(rSzXlvklp zXeQ_raFPbA2H$ofW<*GTHIa~z@DNycTbr0<9mPOSL+KK)T|I|=g8%&ViwhH5w`C$k zB%#Q2#pl0TKu?Q!3LV9c4seBy_fk)G#nSa-yT)bM+XNs@nnZSMdSD>48+RiY*T4s0xXU2*dqHE1WC+XyuQYM0Kh4dR6*i&^w{E% z7-*IaAIoWwuz;;Z4*8md=S5U_{2UVXjkWj4gn#y zW6Ti@*si&qq(}1$D%88H*3?zAqD_)8oWcK?0Duzs3BXA$>UmhC*sP|?&K%!e2c9%_@;d2RGyJD$CZ`Gm1E5b9AQO95p zU2v^{JhDaeYLp9QrKn6Y<<%ygr;p)I(82H!WLJ2=z~a!s5T?fl#yMSJ6+t}Tob->4 ze?Kyx?C1u~43#V({ADUu2qN_(pAF3iA1q=H@2+WTa0Z z>AvkP1PBN+sM;lckqx%osX=ENsK9VbfNzDvq1xu(J|<;RYQmrAh=w3bPicj;WZkS_ z4Oxbu^pB$Ca}$!-tngDJgg+g#F3sNa+p?g1$vJ5|*o?<#!mD+2t1+4Nix^lx zJNpb%(h5xJAI#maU_i*zA|gQ0d~#By12#$pFf{N({ccN_wF@!_%yhx6GZq=d?QJTB zi_d_mES|z45+n-RSP8b8a@yI;j7i93KAT-`7i=$%hzKU!diKaPwfaN$k*26bAuK=2FA~uoX$65Le?T z%!J25B1z?(uuz3DS#U4Jo8-OKLV<*&Phk^aSmsdotzQBX!fQ*LiJv8ZhsTROm;3&g zzC@N3AjgG|d1TDhD$q6#kLpe};&o`FGA;udh;Pbw1)z&skY##7NhdRg*R}#*lVAcj%($S_*O|Xb7*A5)Fc^15q8+1 zKnxV6h7|z>=jam?M*W&Y&C=1`x7A_8;oNK%^E!~;B}1|kKqYf3Ui;QMEv7%Nh7-JM zhYuB4h7qJmh6ggX`1b8#`0{C24vGEbDW6^o8TJt*cGIH*Yl+%jM^yei1@yFd9aXw7 z^7x-=as8ZI7O}hhqCymepFeY@LiLX>oF|)`N(2k}dTdmmK5}C1>S|&6rEKVL zTzw~4-MK}dW!q+kT9qCivZo3XjhYQrCT8v{Q3oB)wcNg$!M!T*YnOuIDbRfCtG9QN zmdc@aara~Or#>Tl+pjL$MkWwfy?%c;h@v+Noo3_C)c+Xe<4}e<0O`^BQA!Ia(pao; zvFTcWxtY)uz@i#$nGLz}XwbuN)7qFaqbgMmO(#Hv3e057f&kGwQTjsqxvtEE+9!D$ zm$Iogcdz+)BQsS)l)m1JwF%IZL$+a~ldy;a?Ewb6f|P6?Tj>ja-AvzRso zr@rWPLvaemiaM84NZ)rwOH(Q`jSPeV_`6{&UMVm!`2Jae(m;%Xsfg;j4F1ytaAdKy zd1jB!*F*%HdY2;_Jzd=7wAUUx$>c^AkB_w3N_@^q0)%oOl zp2BISLYmWy4rH>?qgD%X+xSS^AT~)~Na65dISD`;Q{QS-Nm+scrQ47I(k5i)`KOJ&zEMA>je#A{b z+E`hMQpZ0`%hx=9-~8TM+?&ItOI_#gdo!hDxfEFwU^>Q`xwGb@M0#?kT4P#NHPzF- zJ;EG2WqBC0pf`xrB-(!YSTetw&!x$Yih&T$$8~sf`>Wp8=wvkhbAC1JcY$x=JP4zE zW}{|KxscyKd{QZYnbZ#2W$b?V<|a(D$G+HL8=b;OTnne^UBxnl)8<3VhF_q{jRc=` zE!*>ZyIh0{K(?y&Tgm6veu!6Og#Nu`QYzogjRYIeyEdzB$)NzvbBSTdmgW=D-EfS@Tjw`sG zzU-C!@qquTqe?^j!J9Hgwc5l(pF>$Vg6&4XDdLL@jDx);AxKA?={E-Ef9V=f>=-80 z6O*F~1&P?~sNnf&mtV%iUutJ?S-S#6I@!^!i%P)8ug7+3^+5EWscVpjm@SQU&Qry7 zjJU#*5(0ry`@M<0)~MQ!H^+)Ze`*3H>{*}E*blta)DvvvK@ftK^XcGAdszz~;=qUR z6PW06Tf-D%6@2#WuK>}Fj2Rj-F>I_i5;?I{#xquG#n#@AM4bU9Jsp!p@NU50GKs3S zv|{Yf>de=;fO?d~!99}trFe|Z0gCSnHrFPYnt4ip^&oLjTnX$H`!Qk8Pt(%^Lt7DW zM^vX22k+cG2-RRx+p4Zsg%DkM1pXJe@hYSkG!Y7eVCurh^nNk*rQ7uu)qJ~bd&uCa zhf%qxdX>$yIw3R=fs!)2%go@MmzWjQeO^xhWT3S_@+kz>{vP}Mxvkx-hjhvDd7`Uz z>5qv$>vJw*(Iw`Ob)2&%Qb-6N*J;dMf6=WpJejOa*n@2X#MiU<39v{0%I61u zZWAhcXYI2-<76*}g2ctQ>&+0T8QUZ0R~=Q~E$8ye0ykE9fBGTU$|n`c8ULM81>4@I zgDG2Zk28BAdDaPRnW}=;XH)v}_kh-CS37p+ORpz^v03TPtb)2{Y!DIxn>0;sJ3H_c z=AHdhYR-Xgs~H5w4oBeVcHZwPN&RzC+X(VGkWIA1VJ;p~ftRSP&dG~TvZh*6=lU8V z9y26ycVy>Tji{Srt5thU>CiL-0saW~3=EvzmnJis$VryZCZzw|afiB{ZyJl9ufhoxck{w~qE<%dgA}{Vj%KOT8yr*PfO^N}_i8 zYTuZn2;)q^s!kZ1p}w3^wDrtiSq)BQY2R_>ZeUf&8oYwrD>WjBOtoO?o%?oc{4(Pi+s;K|ElO?du#C&6!QQOOgR~hJ0z@R) z|2)L*(nN4yK;TbCnCkTdbL++;-x?%nc9k7wcc@xsik<5}vTo&2H ztaK?TtvxDEecx|xduZ3Vq1RiS;nOYV+i-s&H*;%`*I{e>(@abBiD%IQ9L4dFSvr@l#e%Im$e0_`hib^Wj0esW|`P`CdCP0n? zwi8Bus<4Y7aF|v z<5*6&g#pg!fxP~^)zK3n&%m7d)Vs{mBDbFVSyM^19BsnJ^+`$vA(i#nV*wl_hLX4U z%whe6J|%sLH29WN+|MH~!`q;N>?_@03W#vL7W|0F=l!EMuNr2^!+!MflNQ$1~6|c#arjToCyB$$k*ZJ z&P^|oK5%LwP@^K9 zH+vq`G#s)=*LlO5Wk6xb?D3w7zX@57x(i%bpO(J(lYtyt|KLBUVY`@va|{?m;`7u8 zw=26n^r<2<3l4w%2WI#IC?{-PPEv9y$G=|9B;DH9ON!4Ik3kP9dgxp8QW!y%*6w93 z-Mj(?gC;`5s&a>t965_(waol*D2r4W8fl76lGoLXbbF* z8rs)q=qJ}Nl=W1cPy?Ej+V9+5f6QQ#imVpO02J$oS)s;;JL|>}K4jgxN&rbKnQ%GR zi1@Z@HIy9mwl=4pCtADi+ZDn!4aouu9GFteL!WUmm!;SWm%98WXbE=D4+kXdp+aKJ}(mcp$-48DhGl6a!zmE z@oSKOiERJGjHJb$56qKdFR)-0J^y|RN>VF)cVW3jKL1KoFm|2F3|B&r-ukB+{Np1` z%8Gw|09U1>5V2dvm%SftMtUoz%<06jifWR$hcZ^cmX>9OOSx$3$I=%GRGfs#DLK7* z3Q9q>g5%}@kJ8Sj>J5vK&&nZ5sneAD69ad3jL-oo6C;sUBYqHgu_)Yr#HSZ4Ajs}A z^-)K=qx>w89cq`aH94TN(`-NH9na2jcIyF1=FKnAbw9Tx6&L77++2TR5($Doi}v zpNeWZIVVK$p&}N4#E`KmNBNBh4Hva?iq8c+w}5aQ>Wm^7IAQP;rTsw;x6&FZXpq5$ zPpL}vfxea!Tn$>A^Rzg(~dfzkW(aOHWji6JriAJ7t|1q7*sM$nVP z6#0tJTmlq5^yK(gUi+TwaveuQ()|15QW*3a$m~b@8jQJoucGh9TXRIRaR#W(--1hy zmW{MTYtiWvp#rU_(B~aH#Wx&254=n<*p!B9j9J!gS(7-CdH0(8&c&GbiiTkUBlw*~ zi%sxnFXD8PTZn|>kErqSxIDf=j54g00_!?p3J;jFv$17S{xsb9W(H^l1EHU7zgmJA zV6)d!LXrp@oqM(~3%;4$RsMY`Ru9Y|fX>YDE)$iL+p?W8BTGR@k$7Z$!9#TO%^fml z)=!FsAp4>$+8Nnw2kuQh@y3FS$xP!}v8Y=LB ziZd~%*3Bs{<~ttTVZ)UMqopYyu=gnqa>*`#-?-|zvf7KYs)h^w&Qb+y%AuOD?M>j+ z9?+y3#DObC1vbtM4pdJfL$BS#rmfLUOlR8Hx8@`fSzlTdlJz#-_^ES*c1#KcqXE{(n@k#sU)HmEBXLanmH#vdfrxF|#{KfACwP;kpBcGwQ-%UUCxu~RHbGaJ zz~jJzWA;ich;!g5d0_k-PA_Buu6)13d#c7w!Uop>7HkqH&V-NxbBGCs3|X`%{$Bun z!U0?Kr(qF<8W1n?6>{O3PJ(GKX+ovaAf7zYg%18G9!tN67&u&qx*u z8gV?rjSB_<9tqj>`gL5{k_J%SJmKg%`$h;=&mlO653xUD&r5d%V`wVv*} z@)pfP@tMiw7!gJZ0L>MGOo!jKnwC19bUyHFPsBk>p`#Q9#-j*jB7!yk~dA*cU| zT!RE7E+V&NpAF?QFU5bN4&fhhsYtgyq&NZtdpp@1oD2s}9&@OVchW-q@lz)va3tvR zfln#$`nz3(e1Znu2z`PDt}!qX1k5)w0M$Xh@MUC!C?fwa%fxgMb z3rpI^T=GQ8esx7gsZH9QUkRe%%ZnB1wkJS1xCTlQ09{8VEmcXU})t(#G^vXOz8fnB_j3%f-m z!-n%#c4fyx4;YPPW32Sw{?Z?DL<4_*14IW-w)xOzbd*~E6F`A6S?AgPZC6|uqe`Af z;=t=wyr%Bel{z-?#j@n$Tkqp8LT2$1nkc?qDeB7z=7qTzene|}pE`BaR53{l#41l> zXzh})2kmXGjSqZ{8w$6lx1GmP`Dfvsf$PznHxU+eawC`npM_11bbX78F}usON}lZe zdvWGXrw`n7IZsQjWyoJ~g&w$M;IJO_VV{&bAfcHeAI#Kl9i3a-irc;N=&wVnAI0FijGel~|6X=sx=y2)WWp#-5))VC;WqjZRz-Nj(k60ZOS$O5>((i9`CHxU? zNR61BxqEWn9+3xA+F&={>B`)QBV|Quy2^fw8q@D&4$>C=_Bbm(R}N`st1!&U;=T+xT$T>G+O()2S;yP?qX@OmC1dYs#(B_24+4 z;We z;^SN%xdI+&B25pvN{$ilgyYd669aQ8a^Fu1QKCOhv*@Sh*Ds_aSa=f|$nKu5~u zov-l-wKCbRarDd9x;3G28%R1M0(XdF%Q&#{)`LP|H9Ng0e3gDzB-P$#p*LFjQttRi z03ppt^zJn|(MJ=>BlX)Eui4)2tIHKSmY}YCuVI5`@lG?A#y?Hx`q-&r?~o4S<7l;a zZ{ayrTs`~06hcNoNEexdq$0U@Zm_ojPcx4Q2>keCxXM#&w09~Wg0?;!_~fFE8m84n zi@3ewP9;n}jOm2EL9a$Gk{D3}*eySUZfirv0^#2bF#Y(TJDQrY5vBO+1S|}6mjlXN zs^W~E)urGq6yRM*M-AylWF>z89!&AZw)}S~pY70UQL|IL_hf2Y=$}@bfPMdV(x(7W z29r!kARGDEd|rH5IAh+q0`gUXo}?0yJK_NTpMby-^xx2SV&6nTub{UykwuX6u(H~R zf}#82s;ek3D0tC7=+3Y=oz|c7WTo9SByl4-^WGs6$;05a+JWNyNTPWD6ej>5ATvKH zG)G7v%N9DTy?3X4YJv$iF%F3oAn*3)1O5g0P(6I+tev_HT3fq`9LsG)^4{TjOe)jaV!=UC3 z*+@IX0Y5%R{}BWs&Ist>dM6VuQ6XPel;yJR@RE32dgkGbJ^S@?toubF5oZ9FPt-~G zT+CUT>aLTH>QBHH02TY+3tzrf0czO5pdmny3kFC#wc-agS;Ey(g8SsalL0~=4SqSi#ZGPv<;&Zn$teFV;_acZE#F(BUim0xjf~)Yq9xSWxt2faTEf>7;6O%w3p9P)1eHZ7B6?lBIK&Ldn}x zBEw{Av#9S67@3`(F0{9o6x)F*5}kDS=MuDk7xz6)OkULD`aguQSqXssLl3CH@Jz=M zr)aELu93XHr@2b2*+bGm1isuRj%D%k=xgq?CWf=gd9?&w@UO2cHXDAIT87KPKi;qA z&O18FV7Sly>$ZMPzhexq`uAl$k7F4=8^re)3f`;;1Mckk)STx@Ql8|$6Qr+K%Jmq| z*SL183}^loTL~#t4Y#=+YlW*#4v2Ul=bmZO?paM|sDGt1QDAA{K+OZHA0MbPugI6M z!`aw09tZ8~lT?F#brcC<)i-78tFLxHnULoA4HfQc(?jJm_zV;x?+h|(xbwUVrX_^R zeN2-3u8PW{T=}?;rPQsAxoT$%u;5qLl~i*x{1@7AMueXY1@8`XV>~NTRyz%X3QJ8F z-@~;iyfz?UUg04Mh}%V%k}`=7fkD`0`sDG?M}rZam_mmGlUg>Z;7vC+1F(@Pt;4cN zSHm;2()wwCzVZaWMNz8P$tXh4%&&I@eASQx=S3k@ekRAT&!h-4>E)Co=+aji8C`y; z2O8u`kt5O-L|m*v1M^PI&GbAL6_VcV835$1VgrN|*{!>*^lukTWXt92ewT5LCzJ4o zlVj?L!yt)(x6dnc69|~oH1zlln!pW%AoH$0E}&e(Ub~~7-)vU+B!(0Y$2Y?yQclRV zsM5Akd~|Y-U+bDM1H;!Q{cUv~%o)gW=37doB-O6>K|z@2d2RuaTTXsjF>(UXmYyCVkTJ`PoHc`kR=>DECV+AI%=w;&Atd#%;ILK=7 z0mqj3T)RjI(T!PB@ILK7a11NnV4rOJh>fQ>u2uzbH&E_3q+eluNzz)0;bNFnVPqu-Lz)7^5A@r!E*xgmwda}V= zLA!`B#o%?JTODg4c=M#@gTa!L%KGgg6xK`CX0g+P)8R3rDpu3?rhVh>AvHX)`Jva5 z6Z1CfzgmDjgZKXLSpUbpjV_?O!uQeccB-f*3(k2Vo!Pss_1A%wb3>ReFkb%lMOp9O z9qg27N?K~@7wg1^>w~4r#xbaxBNhV>f(f~l<;m>RCavR**R*BKJu`R{64SXd zQ}@M4!vK485zDPAwq1}R#MT@Too3)p}s`}og4Ax!V#s5GoXUUk!1{74u z0R6mg$u=jzQQ;yM))26FK*{~O*e?t)nYp4Cd~4Zx;+4B@e&-Gt-^i+*$n5I!0?*+X z`W3uXyoLT4@-=Ed~NGLEK4#bc&LBKpBVCgYM=L$K|a@w4J^ZSeWeAF>wDmC z(K3MfcsEd$REi2$`j-sa--)k@ca1V9nHmCT(Shq%nvlYnIt5Ng#QJ1?a;lPDD8Qrv zBOCuA5w_PYOCN6f`ybZ*f$QbHXG}3@badY=a=@4Cx`9~Wv+#bkA%B~6T$ZdbfCRJp z_6_fY;M0c}?8k$Oq;@W!wa75EJM)d!Eb5ju;hTe)x97>xarhh`o)Dfsp|HaDH_-c3 zLs0kIY0VtICrk6!Tz0MJQ!R^W{i#a2FZr%{@G+#zx0?3N@r4FmMpCWT@3v1@q*6;n z=;Q~Y@3;q|#o81YXbSN2oIVDR+4d7Pq*}6;1+kA%?7yq#HdUP8KFDQpQuL(_LLK_N2hadNi2JZ&%xA z^WKB0)O-K7t&;WKPNB^x*nog8tIOB{TX8KXH9-4V{9uh(p``1jKb3cE=n(hP`h!(|z3Z>DW#t4~bIkem5FZ;GcaraE z;y8`J$m9-MUt*!3hj-K${svB1OU)#>BcG|_i9Y2u>Hmm!#A58OZ6R_$-|%T|`hCzR zd9+o~zF=PBBJ*lca7VadKqoeM7J~Eh6fU?Q531E-SKuhBdP6jE#2}!xeXD0cUctrM zT62VnJ5xA>B>5~+qde670gn-Dd*-Xy%x(cU=MRicH^iCh2#m6isoZ|PVm@t0HY2k) zLCA3xo#kyOK|cZ#$#3u!-^})_7u1qAGO4X9y!V?McQQUq2`2?vv!1`JRrTfshxX24 zAHEJ*{aVmJdt-um{UOyJr0ZeWdhN4vKDDn^A>wm75GyLT;(u<3vgt;tx#wp*H1?=! z#`hSN-Ts!8cGJn9@K)X(@E+&7+4kc-j=AwZ%e!K$5SP7o>U?}#4cBx=-7nqu2H8+I zjV>k$44+) z(REjpQ5U9o%GY$PIagcHtUSQcv8LOs*K`IW)Uf6F5tqlF)oG68oCv-2T&F5!m|K@b zr%BnQV%cYtBc=WI813bl5;ki-wE{Gy7yJnz9yvF*@#qo!WnE@)~seQ7oU)) zbR5K>%=)%gZJ6`vZVa)u9Z&OXGX!yozE85UDraO=EQg2^$uVlT(kL+O%IAf7URz7X z<=Ks7kKw462{|4oVA?269%K*Zl-p#w93OE9t0KBUx3Ww5%jY=6C$FnNHUjrHL!=FK5!&7>B^K7) z01HZbG0``h_pt$`=|=bL|1+em!1#1DmJrPq#PK+o%F^A9wtwwCInTDlq^&sUUISug z0Oyo>pr*I{I_y3%_U$t27wUx_4=k^iJC>eFD$4UoO;pdK;Jax(`eoYqP9*4`ekA(l zRS;J8ChCVa0@iPn$8A#m+-rQGdL?Qd;` z-s3WC@$*vHrZ=8vD5MI65pzLSZR!5 zCw&3eI$AbdCRQCx?-)83RxKOu=9M8gotn`&-X>*DYtpx>Q|4TCE`#}H=!)I)<5yMQ zj_hRj{UhShLA9aS&YPgGd9wPg#%HU#6Ti4m-eoe&n(4hfIpJ8E&8moLS*FZ3KZo+y zlXMIf%+0->Lc@9Zg{3eFhA@9bo#icIH4H3BTs#v+eDfjX`u+MNEG;7_)STsR-`t>m z-n5_uHNC4Wu5LO?Fe>+Xj#w~d>iaf&W(FiiD3a0|OUByJw>X)zv|kNxj2<;T$%)v-J`bHopSEY8Tv1`gN`s;pKUGo!Mf(|BMbv z8X9wqjvu56nYeC663ly-|ESqRh#OcWRQNSBvQ|w|2J;cjE9?;xzf&}=*_OOK$+c)n zQ4ixr*!ncV^3iZ|Usl7!&7*co5rhn7zt3?LPZr9_Uw=vi4o8V;r-c%c32uMN7@yot z2$acS%g}3)q)XcwQcONPFAj?R@H~PE&36Oo491(_CBE~@4s+-?x=2U{+QQL=RQ!Kn zBG`0tJJriJ!r7DuTn42)NVH6acNwlZBj*=xr@}s%1igw@ z4(5}tL&z&#nCa8q`p2VmS|z}_2W(lshq^W|F?e=f#_IEsCYagzQOS*(vpn=c9p_|- zzIqmqnaPwF*x%gF@t>{mW11%%k58sD$&u*PN`fCpDtr{bXo-7CdzHBbOdQ6}Mmc_D z?}L%5h{~&B z(D~VURo*`2rM!a@O@_3j(*F6L!=&fg^5a(28M{yL6-j3RWBKBH$pT}*&`y#0PW8sk z-wy%`SpFxotv?MIh8Y=ly6+Dc49hys<4Z{82$dFibd*wtd#ekfpNO;xpe+ln$c*{Y z5;?VR_C@*ME8r6%_b1-xYcSAjeA_}&+BYtqbIHhjPyF6wtjgJ!4lD_t*Yg7cR2o~j z&T|^KJ8oWauX(C9nbYN%b06kNlg$T~JgZuq>mwcCe?9anjJ6KY?ckxkT{k6rLW#XU zcHkXvyy(DsZw=Zh{yMI4d}|aqt|PquvK>9OA@{q5u+A;`ph8Li;q)HMlG*Sk@s*As z%_aKx^gizT4>L8gB0lEE4Y^0t6onOPKo`>^y8cLQa>LA)ic%P8&sE{S;1j zXyf6;zb~A6=vH?0U$Sa`|J`c_8)cWqcjmk}v?d=%;faEpA17v2Vc>I;3}Du*eiYSR z&vq#$r5B?NoWMY^X;T!X_Kmm@qjm>kvwlfXm_F^ld6jwsdO3c_{_#oIIn2vYvEbnD zi?DO=FPSr~F!8YVU0)fAph_ylee;x;|D(M3e243MzkrDdq9s8@)DR_liRdLkMDM-# zUI&B0L_`mQL@&{XiQdaFLW1bgyU{zN52MU8$>;lf{(|S-b6%ZmpIy$i&z^Jk-0NOz zEd|__XNZ5@q94gZUmP-HCwN7O+%na?{vyBm<04#&4mxeuasz_Ac&(7qC~Y%+37Z0+ zi`Q#lz7(v5`AJR~;;G3`_se`8hIGenLZnb#lpXe;pn$3j- zn1s(K5nxNBd%7NTRql*|!N}{>`+)UhUzd|jHi5e0VfZZP?=IJU@lvW}Zd1tfr!Zq5 z^8m6P(PxDgVoCvlv*`^$TRMDa1QX5 zNH|65TP&QkMk{XdhBuXvTEux9W|Y^&|wN4mfxojv|9GpC;ZIBp$2i zQ@IaNJ=phcznX@Qd}GKSvp(s)@7++YSM+{dd0P2~`~PAA9Ea161{{jatw*djAdxd} zZ336VUz~Qkw>GOGget$ugVf*sD2zP_3K_{JjCxR5>v!!t>Cb1mogj4-)}v|q=vf=3 zdWuUGL6=$qHd%h*t*VS;W@n)$R)kWO9VJ}<&fENAHUsIQ^lT@COMG5;^JmHLSTdgZ znmvhOK9HuBRM1c^MCCxX$cUmI*dO3`0hgTC2U z@|+zN8{DjIpvoINz#>}dGrQ`F)^{ZKye~T z;LjL~y9hQet>t<)lyD34U)H%stvNJ5JGQk`TMYH{S-D!l8+^f_tH8Staq#{a4O{n}b2o1XXhN{OQ&(|3;;UyjfV%}Y5k(c-c z*y6PB+wE0JimMnmYn{Kil}=a?Ls?X)GyQr@1Q03v4n`&CO;&v1*%f_sw58%+O1}!w z;>P$KXoi*^1 z$u2dzUknKd5#=9<)92GaE_%UHaME{MkRhys{kv6U;NaL~y+3mDh&8tT@|Pjr7iJfF zDWLAy0bVdQ?+fMFkI)xMs=`(PlJUj?^vVK9O6V;f&Pbe`qJ-Lvwp|_JyFBPDoy$1TkuPc+9SEKHQ)Ax%erA!_4YUHB;-5@ZsH+w32)N7h~z`+au zXUWG{PfOQ_4x^3Aw~Z2E9w_m9WpYm}d<#@Bnh?yE6nEsOqu$#jR~gs6;>O?29oP8D zKaz%GPV!7@ddFXWt7YlTZ+KCIlvGR4te24Sq}dK+Q-U~8h5?KDXu&z`eUf@9)Q$9# z(9(*ji9dtf+Apx8RNe=!e?zfQd9#`qcjhPw@jnh)KZ72MXPyiC`D6=xZjEjYL&ex{hdH(IQQzOJwU%^1xkYC8C~?^Hl&<){27)JKAZ{Ws}Uo z<^J;_iUrb>=YS$yPbe?s@pUJZI{x8`NX`+%-qG z##2kVClr$1gD>H2%dB$(ZntjtxN4m!RTiNux$4iI%X(F;^DW3TQ}ChUZ0`Xv%+@V> zU3S3(tmna+SmrZX+qJr$$?P{Gis+QDRcV;pS-d=PsGNNOQ3eIINrwMqKozflPg9hZ zyw!2r*6GN)YrnF$LSNB>LWsfVHW-*MRT>9)DYbL-v9phZBNQRWSfy5gbyHUJH81JQ zb!TYuw>&Tar)W3a#q}Z?Af_Vv(JK986BkX6GygG7?DbIF#eQhZ$vR>lY8u2C^T?g+ zpLgNkzHsCvSuPeCg-QIwtrv5BNCQl{GjB%<|#k^+<2acqBNt30L|S(oKK1gNQOva zT&oXNSCQ&qxnERREDpbOy-_XP3+RFU<)@Jd2>lR8Uvc!u@hC+zV^bxC|K{o7;|4SN zcPEh@N_`|v2+P^$WVkWMw!|Ct$f~}u{s&pI$qkTHVM%4?x)rUzL8}l z+=-ew3nL_?hz~(8o#<$5W#I;U7*~=1A^6N11q0D;$^5X5O2?h7DAse$=bE8Z8++Nl*X zn_gsSXWza{44J=ldQY2ZJGKftQf9x?DZjL&QWJxPE3qU0v2gvCvtGMd@c+&i{lmos zt9Gaig!~eM6E2?|`RGxZR3L2e{rk^0STSQCJR()db0Nkq8XrVKylg^_I3ZyZPeg@} zc$__3CQE-TjL5)h?~c0?H)&O9TFAgg=BVJ^8+t-EZv1P0L)WhP_3<~mw*^@A*x-C5 zGTZsXU03HvT>>}@sEzV(k7qg6nU-EXVK@-eQM;)$4m6;PslcM~^GRtmmN%oh;*>ux zAw#$7SPubPC6cUg9Gtv)KFPOIsGLgr4_k(gG_LNurQeGmdn1D>yIB9Aq{(N6CZsm` zw5b=eK#c`WchTgY6xL4feYGQ?!#$5!ty(!s1GCE9o^p>86u;pAz|SKTFvR@wlk+W# zks*^F_gQGwOsNHip#HOVgD%#C0}HaZ&2{@1?P7VXWXbT;ufW=_Xe@w^#ckz3kyic7 z=IgtIcD&!r-tEABx}gBhYtaY%H7uVoU(!~H=x?yGM8(!e6P&!*llx1#2J+enf@gID2)kAS4Bqq7UTB!4;V#ymBW zCxz!?vXV6vJvJ!ujJ@y2knxnzbME8reqPPVs@@0^B4^P4$sUF@|j)$~|BRWK`k6+PTPLq5;;v?{7{q+8xD%NMV^u|83A&Mo*XC@gO zz1*MID3xks`FTY>+({Qu72`U75zz7ux2G|~aK-TN&C$Jd=~<~I59~Jj9R~3gx1Wbr zb1_8a;!chrKx=bzUREpF9zF$*Hrg#UEDC5%Lj3usI|CY=IT}(Aa6Ue6K@OVBV$W3R zpTOQ5GK-oxQ9j--P@09rOV7Sq$J+Y*dsWN+T8%Qsre+)crHJFV|6d_Rotn+G2Uc0+ zU#0hs&p28c!&e}Lt~&n}JYf;Ff-KxRgdz_!V~ZF{@L`#^ubphqIs;+A<nL545 zcCf5T?nF8T_QtBej!Uw+sU&x_|JN#>$Z+g)*AN~ z!hYlmE8oAD{&!inkb+~Bx+GTfB|ztIk~BH)|DI$NyQm3NFa{63wSmR#{TZ=e)PDyv zLox4X*QZ?y=q-JLV2+PiA|CdLBDfRU zp!8+3!^3~|aUPJ$*B?sbud-DV6|@c!|0`swSn8W_Rk|Nz|0p6d@_!X^#9R$gQD<016OsTsP-zd$H;HG$ z$v9t93Oek#Oj*1HynV_m1?eoEpx@8^JjCA?&(R0ryx)-`#Bs-Ua&N5y0PPmu(-PTr z_3L|BhWCVSutf!Z$JMnaBoak56uAFZQ0aQO> zM+4iA&2^l4k;-O`LFVbDkQZ+Kz{c-4c)6wf1sG5>&!)+6`8yQCg5pM)uifWcdP@=b z=IhS&nM@FKkJrJ)6}xdpApN`Vrd5GwVX->fB9G1?t5g!?jk~64fkPh%M27Wzg0I8c z8^j-?w^2`#{^$|6nXC~;S;JZKJ!#)MsK;kpuH#L~rU0dC?&%XAwI1+^yIJiBmvXi* zf_jQa?dP?6xQ+zSqKwhghR#TTJ83_Y_)Ak;;3fi?#1+z1AgkJ5zRp*v`+$~lF`k|Q zsRI2oXTq10w_*i@8|Pxi$%O0sW_)(mfxEkLg&b`c9Rvn^@48D$X82_6+`;ZTG^uEw zNWbiD$6|9ey;NS~rhsZ=NeC{<=HitdeuM2}BLG}()4Ft%8&O^VGF#<_AK=@yEG4|Z z@b@qQM2x-M>;Rj|HAn4Hyi%L&EDP=4cvefpI)rEnae-g` z;PPlg#Qs5Gbb%o^(zEwOT{x{w!X|p>#MilHJF7a=yLN$bx)vd$ZL9wz~^%k z2dR(b;;^P?f1tbs!6YgHA|f5pw=M0hegoBx{W@JY;DG&n>i|d*1S?lY(K&F%V7e(Y zB$C4eJ^78&qabb?>$G`oBRI)ne8T z+OX1Vp5C^#8|$AKxU5Uov)c`_cD!RxHeE9!=@%Bv&(|YG3au#W&gvB}A}G=gFw5k( z>Zl(E*p$`KL2``CA7AH+pc5n#AaZ@!p~^6kkqbZTU)>|f1$puaKmFr?wyL|l{d&4d zN*9c(EZ!mDPAl^{YuR_%O7_XBRuHWNei)0q4?uWM9u96wU)$khjy7LW#%eBk?mtAM z)*_zqZgtUlh*UUrL`TAUflDJoQl)V_HUsr1nrB_1uS;W7>pia~n@{u38>g;>@jkwE zSkK0fA0{K^1s`(7QdIhRb3!niX15)R_VDUbz(bt*yBi7MYn!_`6sud3N23;eD=Nsq zolvS+sv%-3hn;34m6L#l&E3EveBx0@7wqP8C7Em{0(M_>LXnTbC&eAU2?h1lNG{~= zxyW8BGzU32*!il-z}DbA34HociWV|mquPx%w%Tpn15Jf&&`=D_`$82nC2$#2w4UD( zd()gCdD$kRb2Ow=*}A}K)_BQ<8sxI}VO%uv(4-nlWRaWbX9v?#{XBKd0tB5*t*+5k$5^8N zg!jF&aPK`%S}~fAvxw;h0DjGO=gbeb2ijX@7yvhH<$f}Owu3XX8cTGJzkSPKKW(a~GfIAeDHsgf_fao-_qD)ws!uBcm0OEim0b z!7CR;sevK9Q<}}2!|Z=DA`iepW(`fKQJI9ZqOVkr<6;Itr9DSc1b+#Kc}DMnjFi<_ z*1<8)#Y#$#$N-#&M|D3ExB?< zT`rD)cy#-xsVCXN1Jgbw-S*t#V!U8?lA8EzqDN+za+ojis)FwJ29_PYi@fTl?xza# z1$`$-%(t{tVs>clR(6;xMPN29Dt|Xh2OFq@)`5*hEkve=#EH=Td{n`)-A zUtyvn4Y=Rg({T1&X;+;6l3=9sT$edoziOalHx)OXaJ8f6<)DEHNrMp3lR&55J!^MF zB)HU3uQDJo81i{MTg-gQQf=;hx{bVSfWl1d++7NMuxA^TMe!V<#;c{L6#OPM0=Ziu z3GUbfuon*TqEm3g_t=@=fYI;dCVlKWKDxBI)3*R`!V>&&rN0t6ibZ=4Mn%wUtX_6!yIM{6K>~L z=Z-H}%xG;yCDdPDC~w$B1$WO${>T1xCsPfadD(@GPY8|Z&F zYWs8fCe@WDysPF2?H1rSv*)G3ShG72=b)D3Uv(r;Tk0ALmOO2S@tHf@Z&q+W&hU7$ zqO6jC$y|=CcKmI)n+USLmF-oo%fc%G#7Ao}x zQ)G^RQ1mBrvnMb(0#vZv^VBc_nW?9AL61n0*c1SvOI7Tf=Z-+|(ngbyaCyX9Gm2+e zEj9WD;%9?c*1-w=y^6pP@kxDzB7rRtKqpux$NY1b@Ki36df2$S`K2DO3a?3{wOq~R z{G}zYWRA3h+v|M8=btx+`FHy!&YI_vqrR=QM_ zi_Q;liC?F=45600R9;cC_m6ouN(T*x#d;)(ck|7m4}py4+F1js#Z<0_kY8~NVd@yJ zCpuCdy-BXsqGG_G&ccgx)2=?g7G+~Z#0`t-nY=5-)O<6h10pZ$&x04U-uX@LOq>pD zKLmz&Q5<)f!fPzM+Cz{SsieW?TfC~mucfiIwm|`Jk7l(4Q%UYZ zvVgX#z0rSkf!{T8!AM7NRte3;PJ~`LPC77IPXg@M)RIcj{8wWz~oPqb%je$Ei7 zyjbU@9#UhNZWf3TCv`4$dFs8r(=yoGmAMIpO1&^?vxT2RrsP#nP&VLg3zftV z?tD~Md!;%dTV}hL0!{tqjF`%3dWw1NDnwBN=k@I1xYfq-FVlF@a?81s;SdkCD)QKx zRLQ2a*}1ivfb@=yC42W^^hl*U?;)zU+2!PNV=>P%kh`1D1~`R719t8(a_{HYgPkJM|D(E-)?W++1K ztnR>Eu=HiJ#G1!zn?^F$VPytiNe%uS(SftG#{#}@$J{cS{T8scw&C-^L+vNTqZi{^ z#uiU~9;*MDv;mWdeWjpDF6N@hzF8R0^CNpHW_RKcJ!lX?_hqxbG2yel{UwN=ZD66L zI&E=(WhE$2MPv;=Gc8EgDDBc+*Y#0u-XA8A@?u|miNa&+#}qsskd%5iXpY$^#Jeg| zWQzRg&OWQoutg3_j_6%bas?R<1@7Oq?@#&`R=azl(GI-c5qH8ciHVfzMkC#wYAL@Y z1`D?t-frj$D3KnxFQfz812=XWO!K-zZFMy$#!@w&nr1XVzZr*Z!UiwJ!p`1xvXu3y7OBb|*ki}m&TOzV>3slmC zyu(-elP^NGlGwjQk7(wO@jk6t6|}SVOsM*$E8SuZ?^+5`@oZogyHF6l>0PW&edl#P zPddYhM4w=C`iIT5Gm^hn3?-R?Wj!klpOI9oDPR6}Y7~7K8sW?tPhYZ2OJZEed?v5Y z>eQ?>rfKhWs2y6p9R}KcM5aF3ir=LcX>qFt3^^*htktfqndsY9&GDjjx9)af8GRj| z)SNF*_V{{q)H<*~&ntm_o8Nd~@<0T9d7Nn=qxbg4d48ueyvA~tmQ7isd&i@OR=+lV z$)R_;gM9P%nyClkbGGa?Q6SR(ljxRu{kcq(YCmtUSr?S7C+U&`x$Nt5 zFD2gH0lXs~H%R7Sd!k|5dyoB5QG6X#^Q{<~&d0rE;e%-HTR(Hv1qrKQ$Ib>eYEvn% z`3)j<+apn#90s}Z`N<7)punWtk8ziieYHp!sk#x0N`g;L$!O>CcdsI)g4~D^Hfp7L zSJ&o5r7YosPcpxn@3BwERc8Y@VQZV+WI;D0%dw(UXP%0T3+DMtOE0h~w!ZO1(jhB< zSLB_B7oI9<^JVoiLHW8N3!ZPplt-2UX7<7}({a$oVggeZ*Ru$McF=;Gzz7oKQCPdY zavk7&ebdqs0zZf`5zt`C_58+sH57E6`g84i5G7+$_NCw!c-vY^s`gOj3I?t$Q87Qh z0N{5y1=Y$V?6750-jt*9W1%%jNN1#r_Xay^P+2-KTXMRRRzS{m zHivJmfC`hr7U;g#qefpJhO1TB*}TH;?U_KFaYV*q@Gj}@R_v3IF+SG7q5NK1acqR4 z_T!BrdE+pc-$3#xf+CB_)wf|lYpimYUeNQ)jxEiLI*~InD}z1eb~h2oid*Z^uNkvA zHfvRlCxEu6mF4WUxfDOXQnBYrncawwCukEt(lPU%>N>x@Z3y88Xz_m+QrA(hM#KXr z%k;lNy@*Q>8q`^@8(yWA1&g^GFlMIT#}UE#`!?ZU*Cw-~dqPLEMHD+j*ThI&G^C-p zAiOUueB~Foofq`%wy=4+jUv5cHY+oAQr-qXgu(=En|Gd6 z(caq&rS}otC;MgKEq01*dkSDD0PTOVc$V1z3))s_N_ktp&GB_C7DC+VUiG<&quKv9 zrZ@+Vf$R1+(>iw(ZDLI{sx%5~b7xuMgtc{Npov&&-n>rd@%r}En0d7z;T)eaRln42 zcUiIJapFnWi`lW#TGRcBHk&abHpixDX}9ZF#}Yo-1!DIqDl&)(*mMIs{k0z^@Hf&Z zf;fY9p=8{Ty$M^q@Y?4_h2{t*`+2%ByNlJPrKLL~qye4rDVwO9;uFs% zvqQVYVJ+eAXWpux<3lVcOV7R-}h{7uaskYe>Z2&h=Zi^){-)OYvkM zVAWSMe`mesOQstnWsk~31{600`U)-oG=JYhlR z(+%a#7f`-gvoVh?51GS|u7jr%>pC4!twkrs(_#;Ed`UY|O2SM4wUG#G_TfRt!@8ap!V- z0P?dZ-Y;WNZUNhDZcvY}cSU1;Np;6jLYxb8*at(7UsjF`<+YegB-F$l5zT(+hmbV7 z7Z5+(Xc_zJb~nQGanBl@lA5zWsnwUN_&aDXVyH#R0nJ|J>4@RtvpG1oyKd1SHy~5< z;p#|Vx|_E$1U2%Zm)FO|oUwaV1Yh~D67gmVtJs!^)i-+mnMZ`w zbs0!7!He zn6m<+bWc~B#>h|L$v=J#fN$|blgW)o7dLG!@Zk$|kam8b7Jl50A%MOQN4UePKq(Lrr!IiE40S6PEh7422 zdUm>%W(}PC_ZmOeVpQ!!944~_#T2>i{cSs{~i@p{qwL44EwK)UzDzUXs zq#|Xc&PS^C3-bN1@Q4BUPa=0+qyo;zSO&?|I_Si>4y{z-nyzg%KuoU`mBWxBpg~Hr zZ)~y^TqYr=Gdtq?!kF0ueK-cDb9wsZanN=sD?al*Uaev6hi5$++A_;M`P4%j)fzAm9GsY zR!7R-(gdKkKe>nZwJN-sX2({sCsc#Hz5eO~E|i^>B%BaWw~Rw(cJiX!5#D#vD?=7y zT)sJI++bq^&l*(UFjm*gng<+?!`bSB`so2$Jy>&M-|zVf&e*W`=-AQuV{kTHQ!*NI zWCT*zrA<;%iP0AI2cN*h9LSt5PgHaif%b*!?Y8D2f+u}l*z*_;9kf)(QLe|PQr{<~=E7X|ZtJuej+g<#Q0~O-@oXsF zrhgy)X#Sh#@@D(tg965EccDH9uv34l4}&j_UI|TbFAgB@BwaFEY%wSG1~MrCelFxd=5K5QSykfr@~{S5`D5#=8aCZE>=k+zpj zidVB^oQkf}z{3j|k}(8xSj2FYwQr&D%?|!ILDYfnuO~NMK*nDv?~-JF0V$g9Xs> zm`=9*ZI)~C5QNwGOJZ6|A7hz}#?5)~W;spl=zOrdZ-AG(_DYjm@cs|s+mM#4%!F4Y z)O?)pY%FS}C>&08^@Od(fPBL#DHIW<@70U`XwT7?t69R5O5RTwfqSbu1n~yB!t9Ux%JKFFSi6*J)<_1= zTE{cfx7@soX=n%@1HH}Mz! zFg}>=_H;*3p*mR4$ow|WESoq)V9EY3Dv#9>6fRtzkK|+6@BjzO9jU5*qBJqpqYAgd z|0Pi8y(6=inFB*uJh>}RA{PhtUw?v(C6_VhPZoNLb98qehLach@}>E7b0eSE(R>hp z16HGxu+#K%!vcOei!VNr^h6Q}SxEc>eay@>|2eoAaf5}VvI^Oyed{MQ;RZ(Lg0#3l zUgG+qWuv?%_5*ht9k^oxP(i*AOXhKL_ywApTu*ke8h}^Z*c<&+JjClCw43GgM7Wb2 zlGS()uSoE_-B=fSC>1;#!B=6VH`9`**ni!>MtY zv~lJr|GOSVi3Pa-zp8qH!S;l~C?F^6u_yQb?r-sM2tqwyuR}OL{~bh0L0!J$jpc{` E2QkXJaR2}S literal 0 HcmV?d00001 diff --git a/docs/plans/renders/two-planes-v9.png b/docs/plans/renders/two-planes-v9.png new file mode 100644 index 0000000000000000000000000000000000000000..6a8cf3dba18d829392833181d4d3cee5f954f7db GIT binary patch literal 94543 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 TeLt<^zilYL)levtGY|bA2{V>* literal 0 HcmV?d00001 diff --git a/knowledge/drafts/foundation-network.excalidraw b/knowledge/drafts/foundation-network.excalidraw index c22683a..58a769b 100644 --- a/knowledge/drafts/foundation-network.excalidraw +++ b/knowledge/drafts/foundation-network.excalidraw @@ -488,7 +488,7 @@ "lineHeight": 1.25 }, { - "type": "diamond", + "type": "ellipse", "id": "lungrads", "x": 492, "y": 95, @@ -1130,7 +1130,50 @@ "gap": 2 }, "startArrowhead": null, - "endArrowhead": "arrow" + "endArrowhead": null + }, + { + "type": "line", + "id": "e_solid_sub_h", + "x": 293.9, + "y": 154, + "width": 0, + "height": 0, + "strokeColor": "#64748b", + "backgroundColor": "#64748b", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1069, + "version": 1, + "versionNonce": 1070, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "points": [ + [ + 0.0, + 0 + ], + [ + -6.48348502073145, + 9.818575354192205 + ], + [ + -11.677453639093187, + -1.4412066148991016 + ], + [ + 0, + 0 + ] + ], + "roundness": null }, { "type": "arrow", @@ -1147,9 +1190,9 @@ "roughness": 0, "opacity": 100, "angle": 0, - "seed": 1069, + "seed": 1071, "version": 1, - "versionNonce": 1070, + "versionNonce": 1072, "isDeleted": false, "groupIds": [], "boundElements": null, @@ -1176,7 +1219,50 @@ "gap": 2 }, "startArrowhead": null, - "endArrowhead": "arrow" + "endArrowhead": null + }, + { + "type": "line", + "id": "e_partsolid_sub_h", + "x": 345.0, + "y": 154, + "width": 0, + "height": 0, + "strokeColor": "#64748b", + "backgroundColor": "#64748b", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1073, + "version": 1, + "versionNonce": 1074, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "points": [ + [ + 0.0, + 0 + ], + [ + -3.935578799592861, + 11.088337094091031 + ], + [ + -11.681797389267729, + 1.4055638569974747 + ], + [ + 0, + 0 + ] + ], + "roundness": null }, { "type": "arrow", @@ -1193,9 +1279,9 @@ "roughness": 0, "opacity": 100, "angle": 0, - "seed": 1071, + "seed": 1075, "version": 1, - "versionNonce": 1072, + "versionNonce": 1076, "isDeleted": false, "groupIds": [], "boundElements": null, @@ -1222,7 +1308,50 @@ "gap": 2 }, "startArrowhead": null, - "endArrowhead": "arrow" + "endArrowhead": null + }, + { + "type": "line", + "id": "e_nonsolid_sub_h", + "x": 403.4, + "y": 154, + "width": 0, + "height": 0, + "strokeColor": "#64748b", + "backgroundColor": "#64748b", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1077, + "version": 1, + "versionNonce": 1078, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "points": [ + [ + 0.0, + 0 + ], + [ + 11.554070614725333, + -2.223387557296462 + ], + [ + 7.129215863531158, + 9.360250059222551 + ], + [ + 0, + 0 + ] + ], + "roundness": null }, { "type": "rectangle", @@ -1239,9 +1368,9 @@ "roughness": 0, "opacity": 100, "angle": 0, - "seed": 1073, + "seed": 1079, "version": 1, - "versionNonce": 1074, + "versionNonce": 1080, "isDeleted": false, "groupIds": [], "boundElements": [], @@ -1263,9 +1392,9 @@ "roughness": 0, "opacity": 100, "angle": 0, - "seed": 1075, + "seed": 1081, "version": 1, - "versionNonce": 1076, + "versionNonce": 1082, "isDeleted": false, "groupIds": [], "boundElements": null, @@ -1295,9 +1424,9 @@ "roughness": 0, "opacity": 100, "angle": 0, - "seed": 1077, + "seed": 1083, "version": 1, - "versionNonce": 1078, + "versionNonce": 1084, "isDeleted": false, "groupIds": [], "boundElements": [], @@ -1319,9 +1448,9 @@ "roughness": 0, "opacity": 100, "angle": 0, - "seed": 1079, + "seed": 1085, "version": 1, - "versionNonce": 1080, + "versionNonce": 1086, "isDeleted": false, "groupIds": [], "boundElements": null, @@ -1339,7 +1468,7 @@ { "type": "rectangle", "id": "l_nonsolid_sub_bg", - "x": 452.0, + "x": 429.0, "y": 157.875, "width": 70.0, "height": 22.25, @@ -1351,9 +1480,9 @@ "roughness": 0, "opacity": 100, "angle": 0, - "seed": 1081, + "seed": 1087, "version": 1, - "versionNonce": 1082, + "versionNonce": 1088, "isDeleted": false, "groupIds": [], "boundElements": [], @@ -1363,7 +1492,7 @@ { "type": "text", "id": "l_nonsolid_sub_t", - "x": 457.0, + "x": 434.0, "y": 160.875, "width": 60.0, "height": 16.25, @@ -1375,9 +1504,9 @@ "roughness": 0, "opacity": 100, "angle": 0, - "seed": 1083, + "seed": 1089, "version": 1, - "versionNonce": 1084, + "versionNonce": 1090, "isDeleted": false, "groupIds": [], "boundElements": null, @@ -1407,9 +1536,9 @@ "roughness": 0, "opacity": 100, "angle": 0, - "seed": 1085, + "seed": 1091, "version": 1, - "versionNonce": 1086, + "versionNonce": 1092, "isDeleted": false, "groupIds": [], "boundElements": null, @@ -1436,7 +1565,7 @@ "gap": 2 }, "startArrowhead": null, - "endArrowhead": "arrow" + "endArrowhead": null }, { "type": "text", @@ -1453,9 +1582,9 @@ "roughness": 0, "opacity": 100, "angle": 0, - "seed": 1087, + "seed": 1093, "version": 1, - "versionNonce": 1088, + "versionNonce": 1094, "isDeleted": false, "groupIds": [], "boundElements": null, @@ -1470,6 +1599,49 @@ "containerId": null, "lineHeight": 1.25 }, + { + "type": "line", + "id": "e_partsolid_comp_h", + "x": 400.4, + "y": 295, + "width": 0, + "height": 0, + "strokeColor": "#64748b", + "backgroundColor": "#64748b", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1095, + "version": 1, + "versionNonce": 1096, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "points": [ + [ + 0.0, + 0 + ], + [ + -10.773796008606894, + 4.729198617622842 + ], + [ + -9.026693953157121, + -7.547105158670888 + ], + [ + 0, + 0 + ] + ], + "roundness": null + }, { "type": "arrow", "id": "e_manifest", @@ -1485,9 +1657,9 @@ "roughness": 0, "opacity": 100, "angle": 0, - "seed": 1089, + "seed": 1097, "version": 1, - "versionNonce": 1090, + "versionNonce": 1098, "isDeleted": false, "groupIds": [], "boundElements": null, @@ -1514,7 +1686,7 @@ "gap": 2 }, "startArrowhead": null, - "endArrowhead": "arrow" + "endArrowhead": null }, { "type": "text", @@ -1531,9 +1703,9 @@ "roughness": 0, "opacity": 100, "angle": 0, - "seed": 1091, + "seed": 1099, "version": 1, - "versionNonce": 1092, + "versionNonce": 1100, "isDeleted": false, "groupIds": [], "boundElements": null, @@ -1548,6 +1720,49 @@ "containerId": null, "lineHeight": 1.25 }, + { + "type": "line", + "id": "e_manifest_h", + "x": 272, + "y": 118.9, + "width": 0, + "height": 0, + "strokeColor": "#64748b", + "backgroundColor": "#64748b", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1101, + "version": 1, + "versionNonce": 1102, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "points": [ + [ + 0, + 0.0 + ], + [ + -9.538978435942965, + 6.888242910831082 + ], + [ + -10.411453578876774, + -5.481024938357194 + ], + [ + 0, + 0 + ] + ], + "roundness": null + }, { "type": "arrow", "id": "e_progress", @@ -1563,9 +1778,9 @@ "roughness": 0, "opacity": 100, "angle": 0, - "seed": 1093, + "seed": 1103, "version": 1, - "versionNonce": 1094, + "versionNonce": 1104, "isDeleted": false, "groupIds": [], "boundElements": null, @@ -1592,7 +1807,7 @@ "gap": 2 }, "startArrowhead": null, - "endArrowhead": "arrow" + "endArrowhead": null }, { "type": "text", @@ -1609,9 +1824,9 @@ "roughness": 0, "opacity": 100, "angle": 0, - "seed": 1095, + "seed": 1105, "version": 1, - "versionNonce": 1096, + "versionNonce": 1106, "isDeleted": false, "groupIds": [], "boundElements": null, @@ -1627,23 +1842,23 @@ "lineHeight": 1.25 }, { - "type": "arrow", - "id": "e_assessed", - "x": 418, - "y": 113.5, - "width": 74, - "height": 11.5, + "type": "line", + "id": "e_progress_h", + "x": 335, + "y": 245.0, + "width": 0, + "height": 0, "strokeColor": "#64748b", - "backgroundColor": "transparent", + "backgroundColor": "#64748b", "fillStyle": "solid", - "strokeWidth": 2, + "strokeWidth": 1, "strokeStyle": "solid", "roughness": 0, "opacity": 100, "angle": 0, - "seed": 1097, + "seed": 1107, "version": 1, - "versionNonce": 1098, + "versionNonce": 1108, "isDeleted": false, "groupIds": [], "boundElements": null, @@ -1652,15 +1867,58 @@ "points": [ [ 0, - 0 + 0.0 ], [ - 74, - 11.5 - ] - ], - "startBinding": { - "elementId": "pulm_nodule", + 10.0, + -6.199999999999989 + ], + [ + 10.0, + 6.199999999999989 + ], + [ + 0, + 0 + ] + ], + "roundness": null + }, + { + "type": "arrow", + "id": "e_assessed", + "x": 418, + "y": 113.5, + "width": 74, + "height": 19.0, + "strokeColor": "#64748b", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1109, + "version": 1, + "versionNonce": 1110, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "points": [ + [ + 0, + 0 + ], + [ + 74, + 19.0 + ] + ], + "startBinding": { + "elementId": "pulm_nodule", "focus": 0, "gap": 2 }, @@ -1670,13 +1928,13 @@ "gap": 2 }, "startArrowhead": null, - "endArrowhead": "arrow" + "endArrowhead": null }, { "type": "text", "id": "e_assessed_l", "x": 419.53, - "y": 95.25, + "y": 93.0, "width": 82.94, "height": 16.25, "strokeColor": "#64748b", @@ -1687,9 +1945,9 @@ "roughness": 0, "opacity": 100, "angle": 0, - "seed": 1099, + "seed": 1111, "version": 1, - "versionNonce": 1100, + "versionNonce": 1112, "isDeleted": false, "groupIds": [], "boundElements": null, @@ -1704,6 +1962,49 @@ "containerId": null, "lineHeight": 1.25 }, + { + "type": "line", + "id": "e_assessed_h", + "x": 492, + "y": 132.5, + "width": 0, + "height": 0, + "strokeColor": "#64748b", + "backgroundColor": "#64748b", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1113, + "version": 1, + "versionNonce": 1114, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "points": [ + [ + 0, + 0.0 + ], + [ + -11.227710220076972, + 3.518312552059541 + ], + [ + -8.143951152869988, + -8.492117499167563 + ], + [ + 0, + 0 + ] + ], + "roundness": null + }, { "type": "rectangle", "id": "thorax", @@ -1719,9 +2020,9 @@ "roughness": 0, "opacity": 100, "angle": 0, - "seed": 1101, + "seed": 1115, "version": 1, - "versionNonce": 1102, + "versionNonce": 1116, "isDeleted": false, "groupIds": [], "boundElements": [ @@ -1755,9 +2056,9 @@ "roughness": 0, "opacity": 100, "angle": 0, - "seed": 1103, + "seed": 1117, "version": 1, - "versionNonce": 1104, + "versionNonce": 1118, "isDeleted": false, "groupIds": [], "boundElements": null, @@ -1787,9 +2088,9 @@ "roughness": 0, "opacity": 100, "angle": 0, - "seed": 1105, + "seed": 1119, "version": 1, - "versionNonce": 1106, + "versionNonce": 1120, "isDeleted": false, "groupIds": [], "boundElements": [ @@ -1823,9 +2124,9 @@ "roughness": 0, "opacity": 100, "angle": 0, - "seed": 1107, + "seed": 1121, "version": 1, - "versionNonce": 1108, + "versionNonce": 1122, "isDeleted": false, "groupIds": [], "boundElements": null, @@ -1855,9 +2156,9 @@ "roughness": 0, "opacity": 100, "angle": 0, - "seed": 1109, + "seed": 1123, "version": 1, - "versionNonce": 1110, + "versionNonce": 1124, "isDeleted": false, "groupIds": [], "boundElements": [ @@ -1887,9 +2188,9 @@ "roughness": 0, "opacity": 100, "angle": 0, - "seed": 1111, + "seed": 1125, "version": 1, - "versionNonce": 1112, + "versionNonce": 1126, "isDeleted": false, "groupIds": [], "boundElements": null, @@ -1919,9 +2220,9 @@ "roughness": 0, "opacity": 100, "angle": 0, - "seed": 1113, + "seed": 1127, "version": 1, - "versionNonce": 1114, + "versionNonce": 1128, "isDeleted": false, "groupIds": [], "boundElements": [ @@ -1959,9 +2260,9 @@ "roughness": 0, "opacity": 100, "angle": 0, - "seed": 1115, + "seed": 1129, "version": 1, - "versionNonce": 1116, + "versionNonce": 1130, "isDeleted": false, "groupIds": [], "boundElements": null, @@ -1991,9 +2292,9 @@ "roughness": 0, "opacity": 100, "angle": 0, - "seed": 1117, + "seed": 1131, "version": 1, - "versionNonce": 1118, + "versionNonce": 1132, "isDeleted": false, "groupIds": [], "boundElements": [ @@ -2035,9 +2336,9 @@ "roughness": 0, "opacity": 100, "angle": 0, - "seed": 1119, + "seed": 1133, "version": 1, - "versionNonce": 1120, + "versionNonce": 1134, "isDeleted": false, "groupIds": [], "boundElements": null, @@ -2067,9 +2368,9 @@ "roughness": 0, "opacity": 100, "angle": 0, - "seed": 1121, + "seed": 1135, "version": 1, - "versionNonce": 1122, + "versionNonce": 1136, "isDeleted": false, "groupIds": [], "boundElements": [ @@ -2103,9 +2404,9 @@ "roughness": 0, "opacity": 100, "angle": 0, - "seed": 1123, + "seed": 1137, "version": 1, - "versionNonce": 1124, + "versionNonce": 1138, "isDeleted": false, "groupIds": [], "boundElements": null, @@ -2135,9 +2436,9 @@ "roughness": 0, "opacity": 100, "angle": 0, - "seed": 1125, + "seed": 1139, "version": 1, - "versionNonce": 1126, + "versionNonce": 1140, "isDeleted": false, "groupIds": [], "boundElements": [ @@ -2171,9 +2472,9 @@ "roughness": 0, "opacity": 100, "angle": 0, - "seed": 1127, + "seed": 1141, "version": 1, - "versionNonce": 1128, + "versionNonce": 1142, "isDeleted": false, "groupIds": [], "boundElements": null, @@ -2203,9 +2504,9 @@ "roughness": 0, "opacity": 100, "angle": 0, - "seed": 1129, + "seed": 1143, "version": 1, - "versionNonce": 1130, + "versionNonce": 1144, "isDeleted": false, "groupIds": [], "boundElements": [ @@ -2239,9 +2540,9 @@ "roughness": 0, "opacity": 100, "angle": 0, - "seed": 1131, + "seed": 1145, "version": 1, - "versionNonce": 1132, + "versionNonce": 1146, "isDeleted": false, "groupIds": [], "boundElements": null, @@ -2271,9 +2572,9 @@ "roughness": 0, "opacity": 100, "angle": 0, - "seed": 1133, + "seed": 1147, "version": 1, - "versionNonce": 1134, + "versionNonce": 1148, "isDeleted": false, "groupIds": [], "boundElements": [], @@ -2295,9 +2596,9 @@ "roughness": 0, "opacity": 100, "angle": 0, - "seed": 1135, + "seed": 1149, "version": 1, - "versionNonce": 1136, + "versionNonce": 1150, "isDeleted": false, "groupIds": [], "boundElements": [], @@ -2319,9 +2620,9 @@ "roughness": 0, "opacity": 100, "angle": 0, - "seed": 1137, + "seed": 1151, "version": 1, - "versionNonce": 1138, + "versionNonce": 1152, "isDeleted": false, "groupIds": [], "boundElements": [], @@ -2343,9 +2644,9 @@ "roughness": 0, "opacity": 40, "angle": 0, - "seed": 1139, + "seed": 1153, "version": 1, - "versionNonce": 1140, + "versionNonce": 1154, "isDeleted": false, "groupIds": [], "boundElements": null, @@ -2381,9 +2682,9 @@ "roughness": 0, "opacity": 40, "angle": 0, - "seed": 1141, + "seed": 1155, "version": 1, - "versionNonce": 1142, + "versionNonce": 1156, "isDeleted": false, "groupIds": [], "boundElements": null, @@ -2419,9 +2720,9 @@ "roughness": 0, "opacity": 40, "angle": 0, - "seed": 1143, + "seed": 1157, "version": 1, - "versionNonce": 1144, + "versionNonce": 1158, "isDeleted": false, "groupIds": [], "boundElements": null, @@ -2457,9 +2758,9 @@ "roughness": 0, "opacity": 100, "angle": 0, - "seed": 1145, + "seed": 1159, "version": 1, - "versionNonce": 1146, + "versionNonce": 1160, "isDeleted": false, "groupIds": [], "boundElements": null, @@ -2486,7 +2787,50 @@ "gap": 2 }, "startArrowhead": null, - "endArrowhead": "arrow" + "endArrowhead": null + }, + { + "type": "line", + "id": "e_rlung_lung_h", + "x": 280, + "y": 562.6, + "width": 0, + "height": 0, + "strokeColor": "#64748b", + "backgroundColor": "#64748b", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1161, + "version": 1, + "versionNonce": 1162, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "points": [ + [ + 0, + 0.0 + ], + [ + -7.82902639099558, + 8.783299253076507 + ], + [ + -11.34848289519772, + -3.1067565043632612 + ], + [ + 0, + 0 + ] + ], + "roundness": null }, { "type": "arrow", @@ -2503,9 +2847,9 @@ "roughness": 0, "opacity": 100, "angle": 0, - "seed": 1147, + "seed": 1163, "version": 1, - "versionNonce": 1148, + "versionNonce": 1164, "isDeleted": false, "groupIds": [], "boundElements": null, @@ -2532,7 +2876,50 @@ "gap": 2 }, "startArrowhead": null, - "endArrowhead": "arrow" + "endArrowhead": null + }, + { + "type": "line", + "id": "e_llung_lung_h", + "x": 410, + "y": 579.4, + "width": 0, + "height": 0, + "strokeColor": "#64748b", + "backgroundColor": "#64748b", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1165, + "version": 1, + "versionNonce": 1166, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "points": [ + [ + 0, + 0.0 + ], + [ + 7.178158496674996, + -9.322770006634983 + ], + [ + 11.54226320339535, + 2.2838914474086778 + ], + [ + 0, + 0 + ] + ], + "roundness": null }, { "type": "arrow", @@ -2549,9 +2936,9 @@ "roughness": 0, "opacity": 100, "angle": 0, - "seed": 1149, + "seed": 1167, "version": 1, - "versionNonce": 1150, + "versionNonce": 1168, "isDeleted": false, "groupIds": [], "boundElements": null, @@ -2578,14 +2965,57 @@ "gap": 2 }, "startArrowhead": null, - "endArrowhead": "arrow" + "endArrowhead": null }, { - "type": "arrow", - "id": "e_parenchyma_lung", - "x": 394.0, - "y": 660, - "width": 0.39999999999997726, + "type": "line", + "id": "e_ulobe_rlung_h", + "x": 192.0, + "y": 590, + "width": 0, + "height": 0, + "strokeColor": "#64748b", + "backgroundColor": "#64748b", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1169, + "version": 1, + "versionNonce": 1170, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "points": [ + [ + 0.0, + 0 + ], + [ + 6.650197705725532, + 9.706434488253763 + ], + [ + -5.736865831977809, + 10.272700249977333 + ], + [ + 0, + 0 + ] + ], + "roundness": null + }, + { + "type": "arrow", + "id": "e_parenchyma_lung", + "x": 394.0, + "y": 660, + "width": 0.39999999999997726, "height": -68, "strokeColor": "#64748b", "backgroundColor": "transparent", @@ -2595,9 +3025,9 @@ "roughness": 0, "opacity": 100, "angle": 0, - "seed": 1151, + "seed": 1171, "version": 1, - "versionNonce": 1152, + "versionNonce": 1172, "isDeleted": false, "groupIds": [], "boundElements": null, @@ -2624,7 +3054,50 @@ "gap": 2 }, "startArrowhead": null, - "endArrowhead": "arrow" + "endArrowhead": null + }, + { + "type": "line", + "id": "e_parenchyma_lung_h", + "x": 394.4, + "y": 592, + "width": 0, + "height": 0, + "strokeColor": "#64748b", + "backgroundColor": "#64748b", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1173, + "version": 1, + "versionNonce": 1174, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "points": [ + [ + 0.0, + 0 + ], + [ + 6.141070224617636, + 10.036296951381814 + ], + [ + -6.258715248077749, + 9.963357036836555 + ], + [ + 0, + 0 + ] + ], + "roundness": null }, { "type": "arrow", @@ -2641,9 +3114,9 @@ "roughness": 0, "opacity": 100, "angle": 0, - "seed": 1153, + "seed": 1175, "version": 1, - "versionNonce": 1154, + "versionNonce": 1176, "isDeleted": false, "groupIds": [], "boundElements": null, @@ -2670,7 +3143,50 @@ "gap": 2 }, "startArrowhead": null, - "endArrowhead": "arrow" + "endArrowhead": null + }, + { + "type": "line", + "id": "e_pspace_thorax_h", + "x": 270, + "y": 501.0, + "width": 0, + "height": 0, + "strokeColor": "#64748b", + "backgroundColor": "#64748b", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1177, + "version": 1, + "versionNonce": 1178, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "points": [ + [ + 0, + 0.0 + ], + [ + 10.016111870337966, + -6.173937398522469 + ], + [ + 9.983820313166632, + 6.226020555250386 + ], + [ + 0, + 0 + ] + ], + "roundness": null }, { "type": "rectangle", @@ -2687,9 +3203,9 @@ "roughness": 0, "opacity": 100, "angle": 0, - "seed": 1155, + "seed": 1179, "version": 1, - "versionNonce": 1156, + "versionNonce": 1180, "isDeleted": false, "groupIds": [], "boundElements": [], @@ -2711,9 +3227,9 @@ "roughness": 0, "opacity": 100, "angle": 0, - "seed": 1157, + "seed": 1181, "version": 1, - "versionNonce": 1158, + "versionNonce": 1182, "isDeleted": false, "groupIds": [], "boundElements": null, @@ -2743,9 +3259,9 @@ "roughness": 0, "opacity": 100, "angle": 0, - "seed": 1159, + "seed": 1183, "version": 1, - "versionNonce": 1160, + "versionNonce": 1184, "isDeleted": false, "groupIds": [], "boundElements": [], @@ -2767,9 +3283,9 @@ "roughness": 0, "opacity": 100, "angle": 0, - "seed": 1161, + "seed": 1185, "version": 1, - "versionNonce": 1162, + "versionNonce": 1186, "isDeleted": false, "groupIds": [], "boundElements": null, @@ -2799,9 +3315,9 @@ "roughness": 0, "opacity": 100, "angle": 0, - "seed": 1163, + "seed": 1187, "version": 1, - "versionNonce": 1164, + "versionNonce": 1188, "isDeleted": false, "groupIds": [], "boundElements": [], @@ -2823,9 +3339,9 @@ "roughness": 0, "opacity": 100, "angle": 0, - "seed": 1165, + "seed": 1189, "version": 1, - "versionNonce": 1166, + "versionNonce": 1190, "isDeleted": false, "groupIds": [], "boundElements": null, @@ -2855,9 +3371,9 @@ "roughness": 0, "opacity": 100, "angle": 0, - "seed": 1167, + "seed": 1191, "version": 1, - "versionNonce": 1168, + "versionNonce": 1192, "isDeleted": false, "groupIds": [], "boundElements": [], @@ -2879,9 +3395,9 @@ "roughness": 0, "opacity": 100, "angle": 0, - "seed": 1169, + "seed": 1193, "version": 1, - "versionNonce": 1170, + "versionNonce": 1194, "isDeleted": false, "groupIds": [], "boundElements": null, @@ -2911,9 +3427,9 @@ "roughness": 0, "opacity": 100, "angle": 0, - "seed": 1171, + "seed": 1195, "version": 1, - "versionNonce": 1172, + "versionNonce": 1196, "isDeleted": false, "groupIds": [], "boundElements": [ @@ -2959,9 +3475,9 @@ "roughness": 0, "opacity": 100, "angle": 0, - "seed": 1173, + "seed": 1197, "version": 1, - "versionNonce": 1174, + "versionNonce": 1198, "isDeleted": false, "groupIds": [], "boundElements": null, @@ -2991,9 +3507,9 @@ "roughness": 0, "opacity": 100, "angle": 0, - "seed": 1175, + "seed": 1199, "version": 1, - "versionNonce": 1176, + "versionNonce": 1200, "isDeleted": false, "groupIds": [], "boundElements": [ @@ -3027,9 +3543,9 @@ "roughness": 0, "opacity": 100, "angle": 0, - "seed": 1177, + "seed": 1201, "version": 1, - "versionNonce": 1178, + "versionNonce": 1202, "isDeleted": false, "groupIds": [], "boundElements": null, @@ -3059,9 +3575,9 @@ "roughness": 0, "opacity": 100, "angle": 0, - "seed": 1179, + "seed": 1203, "version": 1, - "versionNonce": 1180, + "versionNonce": 1204, "isDeleted": false, "groupIds": [], "boundElements": [ @@ -3099,9 +3615,9 @@ "roughness": 0, "opacity": 100, "angle": 0, - "seed": 1181, + "seed": 1205, "version": 1, - "versionNonce": 1182, + "versionNonce": 1206, "isDeleted": false, "groupIds": [], "boundElements": null, @@ -3131,9 +3647,9 @@ "roughness": 0, "opacity": 100, "angle": 0, - "seed": 1183, + "seed": 1207, "version": 1, - "versionNonce": 1184, + "versionNonce": 1208, "isDeleted": false, "groupIds": [], "boundElements": [ @@ -3167,9 +3683,9 @@ "roughness": 0, "opacity": 100, "angle": 0, - "seed": 1185, + "seed": 1209, "version": 1, - "versionNonce": 1186, + "versionNonce": 1210, "isDeleted": false, "groupIds": [], "boundElements": null, @@ -3199,9 +3715,9 @@ "roughness": 0, "opacity": 100, "angle": 0, - "seed": 1187, + "seed": 1211, "version": 1, - "versionNonce": 1188, + "versionNonce": 1212, "isDeleted": false, "groupIds": [], "boundElements": [ @@ -3235,9 +3751,9 @@ "roughness": 0, "opacity": 100, "angle": 0, - "seed": 1189, + "seed": 1213, "version": 1, - "versionNonce": 1190, + "versionNonce": 1214, "isDeleted": false, "groupIds": [], "boundElements": null, @@ -3267,9 +3783,9 @@ "roughness": 0, "opacity": 100, "angle": 0, - "seed": 1191, + "seed": 1215, "version": 1, - "versionNonce": 1192, + "versionNonce": 1216, "isDeleted": false, "groupIds": [], "boundElements": [ @@ -3299,9 +3815,9 @@ "roughness": 0, "opacity": 100, "angle": 0, - "seed": 1193, + "seed": 1217, "version": 1, - "versionNonce": 1194, + "versionNonce": 1218, "isDeleted": false, "groupIds": [], "boundElements": null, @@ -3331,9 +3847,9 @@ "roughness": 0, "opacity": 100, "angle": 0, - "seed": 1195, + "seed": 1219, "version": 1, - "versionNonce": 1196, + "versionNonce": 1220, "isDeleted": false, "groupIds": [], "boundElements": [ @@ -3367,9 +3883,9 @@ "roughness": 0, "opacity": 100, "angle": 0, - "seed": 1197, + "seed": 1221, "version": 1, - "versionNonce": 1198, + "versionNonce": 1222, "isDeleted": false, "groupIds": [], "boundElements": null, @@ -3399,9 +3915,9 @@ "roughness": 0, "opacity": 100, "angle": 0, - "seed": 1199, + "seed": 1223, "version": 1, - "versionNonce": 1200, + "versionNonce": 1224, "isDeleted": false, "groupIds": [], "boundElements": [], @@ -3423,9 +3939,9 @@ "roughness": 0, "opacity": 100, "angle": 0, - "seed": 1201, + "seed": 1225, "version": 1, - "versionNonce": 1202, + "versionNonce": 1226, "isDeleted": false, "groupIds": [], "boundElements": [], @@ -3447,9 +3963,9 @@ "roughness": 0, "opacity": 40, "angle": 0, - "seed": 1203, + "seed": 1227, "version": 1, - "versionNonce": 1204, + "versionNonce": 1228, "isDeleted": false, "groupIds": [], "boundElements": null, @@ -3485,9 +4001,9 @@ "roughness": 0, "opacity": 40, "angle": 0, - "seed": 1205, + "seed": 1229, "version": 1, - "versionNonce": 1206, + "versionNonce": 1230, "isDeleted": false, "groupIds": [], "boundElements": null, @@ -3523,9 +4039,9 @@ "roughness": 0, "opacity": 100, "angle": 0, - "seed": 1207, + "seed": 1231, "version": 1, - "versionNonce": 1208, + "versionNonce": 1232, "isDeleted": false, "groupIds": [], "boundElements": null, @@ -3552,7 +4068,7 @@ "gap": 2 }, "startArrowhead": null, - "endArrowhead": "arrow" + "endArrowhead": null }, { "type": "text", @@ -3569,9 +4085,9 @@ "roughness": 0, "opacity": 100, "angle": 0, - "seed": 1209, + "seed": 1233, "version": 1, - "versionNonce": 1210, + "versionNonce": 1234, "isDeleted": false, "groupIds": [], "boundElements": null, @@ -3587,23 +4103,23 @@ "lineHeight": 1.25 }, { - "type": "arrow", - "id": "e_w_family", - "x": 329.0, - "y": 1010, - "width": 36.5, - "height": -30, + "type": "line", + "id": "e_wo_family_h", + "x": 308.0, + "y": 980, + "width": 0, + "height": 0, "strokeColor": "#64748b", - "backgroundColor": "transparent", + "backgroundColor": "#64748b", "fillStyle": "solid", - "strokeWidth": 2, + "strokeWidth": 1, "strokeStyle": "solid", "roughness": 0, "opacity": 100, "angle": 0, - "seed": 1211, + "seed": 1235, "version": 1, - "versionNonce": 1212, + "versionNonce": 1236, "isDeleted": false, "groupIds": [], "boundElements": null, @@ -3611,17 +4127,60 @@ "locked": false, "points": [ [ - 0, + 0.0, 0 ], [ - 36.5, - -30 + -8.502462724935015, + 8.133149919378639 + ], + [ + -11.06560383812456, + -3.999051349718229 + ], + [ + 0, + 0 ] ], - "startBinding": { - "elementId": "ct_w", - "focus": 0, + "roundness": null + }, + { + "type": "arrow", + "id": "e_w_family", + "x": 329.0, + "y": 1010, + "width": 36.5, + "height": -30, + "strokeColor": "#64748b", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1237, + "version": 1, + "versionNonce": 1238, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "points": [ + [ + 0, + 0 + ], + [ + 36.5, + -30 + ] + ], + "startBinding": { + "elementId": "ct_w", + "focus": 0, "gap": 2 }, "endBinding": { @@ -3630,7 +4189,50 @@ "gap": 2 }, "startArrowhead": null, - "endArrowhead": "arrow" + "endArrowhead": null + }, + { + "type": "line", + "id": "e_w_family_h", + "x": 365.5, + "y": 980, + "width": 0, + "height": 0, + "strokeColor": "#64748b", + "backgroundColor": "#64748b", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1239, + "version": 1, + "versionNonce": 1240, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "points": [ + [ + 0.0, + 0 + ], + [ + -3.7886249515367467, + 11.13940397761894 + ], + [ + -11.662191889925964, + 1.559897535912114 + ], + [ + 0, + 0 + ] + ], + "roundness": null }, { "type": "arrow", @@ -3647,9 +4249,9 @@ "roughness": 0, "opacity": 100, "angle": 0, - "seed": 1213, + "seed": 1241, "version": 1, - "versionNonce": 1214, + "versionNonce": 1242, "isDeleted": false, "groupIds": [], "boundElements": null, @@ -3676,7 +4278,50 @@ "gap": 2 }, "startArrowhead": null, - "endArrowhead": "arrow" + "endArrowhead": null + }, + { + "type": "line", + "id": "e_wo_w_family_h", + "x": 434.5, + "y": 980, + "width": 0, + "height": 0, + "strokeColor": "#64748b", + "backgroundColor": "#64748b", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1243, + "version": 1, + "versionNonce": 1244, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "points": [ + [ + 0.0, + 0 + ], + [ + 11.484109183631176, + -2.5603195617809433 + ], + [ + 7.399894445284303, + 9.147762688146713 + ], + [ + 0, + 0 + ] + ], + "roundness": null }, { "type": "arrow", @@ -3693,9 +4338,9 @@ "roughness": 0, "opacity": 100, "angle": 0, - "seed": 1215, + "seed": 1245, "version": 1, - "versionNonce": 1216, + "versionNonce": 1246, "isDeleted": false, "groupIds": [], "boundElements": null, @@ -3722,7 +4367,50 @@ "gap": 2 }, "startArrowhead": null, - "endArrowhead": "arrow" + "endArrowhead": null + }, + { + "type": "line", + "id": "e_cta_family_h", + "x": 492.0, + "y": 980, + "width": 0, + "height": 0, + "strokeColor": "#64748b", + "backgroundColor": "#64748b", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1247, + "version": 1, + "versionNonce": 1248, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "points": [ + [ + 0.0, + 0 + ], + [ + 10.85850556438794, + -4.531319554848892 + ], + [ + 8.887122416534169, + 7.710969793322761 + ], + [ + 0, + 0 + ] + ], + "roundness": null }, { "type": "arrow", @@ -3739,9 +4427,9 @@ "roughness": 0, "opacity": 100, "angle": 0, - "seed": 1217, + "seed": 1249, "version": 1, - "versionNonce": 1218, + "versionNonce": 1250, "isDeleted": false, "groupIds": [], "boundElements": null, @@ -3768,7 +4456,7 @@ "gap": 2 }, "startArrowhead": null, - "endArrowhead": "arrow" + "endArrowhead": null }, { "type": "text", @@ -3785,9 +4473,9 @@ "roughness": 0, "opacity": 100, "angle": 0, - "seed": 1219, + "seed": 1251, "version": 1, - "versionNonce": 1220, + "versionNonce": 1252, "isDeleted": false, "groupIds": [], "boundElements": null, @@ -3802,6 +4490,49 @@ "containerId": null, "lineHeight": 1.25 }, + { + "type": "line", + "id": "e_w_regionimaged_h", + "x": 329.0, + "y": 1100, + "width": 0, + "height": 0, + "strokeColor": "#64748b", + "backgroundColor": "#64748b", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1253, + "version": 1, + "versionNonce": 1254, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "points": [ + [ + 0.0, + 0 + ], + [ + -6.199999999999989, + -10.0 + ], + [ + 6.199999999999989, + -10.0 + ], + [ + 0, + 0 + ] + ], + "roundness": null + }, { "type": "arrow", "id": "cx_pn_lung", @@ -3817,9 +4548,9 @@ "roughness": 0, "opacity": 100, "angle": 0, - "seed": 1221, + "seed": 1255, "version": 1, - "versionNonce": 1222, + "versionNonce": 1256, "isDeleted": false, "groupIds": [], "boundElements": null, @@ -3838,7 +4569,50 @@ "startBinding": null, "endBinding": null, "startArrowhead": null, - "endArrowhead": "arrow" + "endArrowhead": null + }, + { + "type": "line", + "id": "cx_pn_lung_h", + "x": 345.0, + "y": 550, + "width": 0, + "height": 0, + "strokeColor": "#be123c", + "backgroundColor": "#be123c", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1257, + "version": 1, + "versionNonce": 1258, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "points": [ + [ + 0.0, + 0 + ], + [ + -8.060000000000002, + -13.0 + ], + [ + 8.060000000000002, + -13.0 + ], + [ + 0, + 0 + ] + ], + "roundness": null }, { "type": "rectangle", @@ -3855,9 +4629,9 @@ "roughness": 0, "opacity": 100, "angle": 0, - "seed": 1223, + "seed": 1259, "version": 1, - "versionNonce": 1224, + "versionNonce": 1260, "isDeleted": false, "groupIds": [], "boundElements": [], @@ -3879,9 +4653,9 @@ "roughness": 0, "opacity": 100, "angle": 0, - "seed": 1225, + "seed": 1261, "version": 1, - "versionNonce": 1226, + "versionNonce": 1262, "isDeleted": false, "groupIds": [], "boundElements": null, @@ -3911,9 +4685,9 @@ "roughness": 0, "opacity": 100, "angle": 0, - "seed": 1227, + "seed": 1263, "version": 1, - "versionNonce": 1228, + "versionNonce": 1264, "isDeleted": false, "groupIds": [], "boundElements": null, @@ -3940,7 +4714,50 @@ "startBinding": null, "endBinding": null, "startArrowhead": null, - "endArrowhead": "arrow" + "endArrowhead": null + }, + { + "type": "line", + "id": "cx_lc_lung_h", + "x": 299.5, + "y": 550, + "width": 0, + "height": 0, + "strokeColor": "#be123c", + "backgroundColor": "#be123c", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1265, + "version": 1, + "versionNonce": 1266, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "points": [ + [ + 0.0, + 0 + ], + [ + -8.0151247615878, + -13.02771564995885 + ], + [ + 8.104779400979169, + -12.972129773536267 + ], + [ + 0, + 0 + ] + ], + "roundness": null }, { "type": "rectangle", @@ -3957,9 +4774,9 @@ "roughness": 0, "opacity": 100, "angle": 0, - "seed": 1229, + "seed": 1267, "version": 1, - "versionNonce": 1230, + "versionNonce": 1268, "isDeleted": false, "groupIds": [], "boundElements": [], @@ -3981,9 +4798,9 @@ "roughness": 0, "opacity": 100, "angle": 0, - "seed": 1231, + "seed": 1269, "version": 1, - "versionNonce": 1232, + "versionNonce": 1270, "isDeleted": false, "groupIds": [], "boundElements": null, @@ -4013,9 +4830,9 @@ "roughness": 0, "opacity": 100, "angle": 0, - "seed": 1233, + "seed": 1271, "version": 1, - "versionNonce": 1234, + "versionNonce": 1272, "isDeleted": false, "groupIds": [], "boundElements": null, @@ -4034,7 +4851,50 @@ "startBinding": null, "endBinding": null, "startArrowhead": null, - "endArrowhead": "arrow" + "endArrowhead": null + }, + { + "type": "line", + "id": "cx_pe_pspace_h", + "x": 708.0, + "y": 480, + "width": 0, + "height": 0, + "strokeColor": "#be123c", + "backgroundColor": "#be123c", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1273, + "version": 1, + "versionNonce": 1274, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "points": [ + [ + 0.0, + 0 + ], + [ + -8.059999999999945, + -13.0 + ], + [ + 8.059999999999945, + -13.0 + ], + [ + 0, + 0 + ] + ], + "roundness": null }, { "type": "rectangle", @@ -4051,9 +4911,9 @@ "roughness": 0, "opacity": 100, "angle": 0, - "seed": 1235, + "seed": 1275, "version": 1, - "versionNonce": 1236, + "versionNonce": 1276, "isDeleted": false, "groupIds": [], "boundElements": [], @@ -4075,9 +4935,9 @@ "roughness": 0, "opacity": 100, "angle": 0, - "seed": 1237, + "seed": 1277, "version": 1, - "versionNonce": 1238, + "versionNonce": 1278, "isDeleted": false, "groupIds": [], "boundElements": null, @@ -4107,9 +4967,9 @@ "roughness": 0, "opacity": 100, "angle": 0, - "seed": 1239, + "seed": 1279, "version": 1, - "versionNonce": 1240, + "versionNonce": 1280, "isDeleted": false, "groupIds": [], "boundElements": null, @@ -4140,7 +5000,50 @@ "startBinding": null, "endBinding": null, "startArrowhead": null, - "endArrowhead": "arrow" + "endArrowhead": null + }, + { + "type": "line", + "id": "cx_ctchest_thorax_h", + "x": 160, + "y": 501.0, + "width": 0, + "height": 0, + "strokeColor": "#be123c", + "backgroundColor": "#be123c", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1281, + "version": 1, + "versionNonce": 1282, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "points": [ + [ + 0, + 0.0 + ], + [ + -13.0, + 8.060000000000002 + ], + [ + -13.0, + -8.060000000000002 + ], + [ + 0, + 0 + ] + ], + "roundness": null }, { "type": "rectangle", @@ -4157,9 +5060,9 @@ "roughness": 0, "opacity": 100, "angle": 0, - "seed": 1241, + "seed": 1283, "version": 1, - "versionNonce": 1242, + "versionNonce": 1284, "isDeleted": false, "groupIds": [], "boundElements": [], @@ -4181,9 +5084,9 @@ "roughness": 0, "opacity": 100, "angle": 0, - "seed": 1243, + "seed": 1285, "version": 1, - "versionNonce": 1244, + "versionNonce": 1286, "isDeleted": false, "groupIds": [], "boundElements": null, @@ -4213,9 +5116,9 @@ "roughness": 0, "opacity": 100, "angle": 0, - "seed": 1245, + "seed": 1287, "version": 1, - "versionNonce": 1246, + "versionNonce": 1288, "isDeleted": false, "groupIds": [], "boundElements": null, @@ -4250,7 +5153,50 @@ "startBinding": null, "endBinding": null, "startArrowhead": null, - "endArrowhead": "arrow" + "endArrowhead": null + }, + { + "type": "line", + "id": "cx_ctchest_lung_h", + "x": 294.3, + "y": 592, + "width": 0, + "height": 0, + "strokeColor": "#be123c", + "backgroundColor": "#be123c", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1289, + "version": 1, + "versionNonce": 1290, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "points": [ + [ + 0.0, + 0 + ], + [ + 8.031720151912396, + 13.017490979500053 + ], + [ + -8.08824175748532, + 12.982447584044849 + ], + [ + 0, + 0 + ] + ], + "roundness": null }, { "type": "rectangle", @@ -4267,9 +5213,9 @@ "roughness": 0, "opacity": 100, "angle": 0, - "seed": 1247, + "seed": 1291, "version": 1, - "versionNonce": 1248, + "versionNonce": 1292, "isDeleted": false, "groupIds": [], "boundElements": [], @@ -4291,9 +5237,9 @@ "roughness": 0, "opacity": 100, "angle": 0, - "seed": 1249, + "seed": 1293, "version": 1, - "versionNonce": 1250, + "versionNonce": 1294, "isDeleted": false, "groupIds": [], "boundElements": null, @@ -4323,9 +5269,9 @@ "roughness": 0, "opacity": 100, "angle": 0, - "seed": 1251, + "seed": 1295, "version": 1, - "versionNonce": 1252, + "versionNonce": 1296, "isDeleted": false, "groupIds": [], "boundElements": null, @@ -4352,7 +5298,50 @@ "startBinding": null, "endBinding": null, "startArrowhead": null, - "endArrowhead": "arrow" + "endArrowhead": null + }, + { + "type": "line", + "id": "cx_ctchest_abdomen_h", + "x": 834.5, + "y": 522, + "width": 0, + "height": 0, + "strokeColor": "#be123c", + "backgroundColor": "#be123c", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1297, + "version": 1, + "versionNonce": 1298, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "points": [ + [ + 0.0, + 0 + ], + [ + 8.059999999999945, + 13.0 + ], + [ + -8.059999999999945, + 13.0 + ], + [ + 0, + 0 + ] + ], + "roundness": null }, { "type": "rectangle", @@ -4369,9 +5358,9 @@ "roughness": 0, "opacity": 100, "angle": 0, - "seed": 1253, + "seed": 1299, "version": 1, - "versionNonce": 1254, + "versionNonce": 1300, "isDeleted": false, "groupIds": [], "boundElements": [], @@ -4393,9 +5382,9 @@ "roughness": 0, "opacity": 100, "angle": 0, - "seed": 1255, + "seed": 1301, "version": 1, - "versionNonce": 1256, + "versionNonce": 1302, "isDeleted": false, "groupIds": [], "boundElements": null, @@ -4425,9 +5414,9 @@ "roughness": 0, "opacity": 100, "angle": 0, - "seed": 1257, + "seed": 1303, "version": 1, - "versionNonce": 1258, + "versionNonce": 1304, "isDeleted": false, "groupIds": [], "boundElements": null, @@ -4458,7 +5447,50 @@ "startBinding": null, "endBinding": null, "startArrowhead": null, - "endArrowhead": "arrow" + "endArrowhead": null + }, + { + "type": "line", + "id": "cx_pn_ctchest_h", + "x": 285, + "y": 950.0, + "width": 0, + "height": 0, + "strokeColor": "#be123c", + "backgroundColor": "#be123c", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1305, + "version": 1, + "versionNonce": 1306, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "points": [ + [ + 0, + 0.0 + ], + [ + -13.0, + 8.059999999999945 + ], + [ + -13.0, + -8.059999999999945 + ], + [ + 0, + 0 + ] + ], + "roundness": null }, { "type": "rectangle", @@ -4475,9 +5507,9 @@ "roughness": 0, "opacity": 100, "angle": 0, - "seed": 1259, + "seed": 1307, "version": 1, - "versionNonce": 1260, + "versionNonce": 1308, "isDeleted": false, "groupIds": [], "boundElements": [], @@ -4499,9 +5531,9 @@ "roughness": 0, "opacity": 100, "angle": 0, - "seed": 1261, + "seed": 1309, "version": 1, - "versionNonce": 1262, + "versionNonce": 1310, "isDeleted": false, "groupIds": [], "boundElements": null, @@ -4531,9 +5563,9 @@ "roughness": 0, "opacity": 100, "angle": 0, - "seed": 1263, + "seed": 1311, "version": 1, - "versionNonce": 1264, + "versionNonce": 1312, "isDeleted": false, "groupIds": [], "boundElements": null, @@ -4568,7 +5600,50 @@ "startBinding": null, "endBinding": null, "startArrowhead": null, - "endArrowhead": "arrow" + "endArrowhead": null + }, + { + "type": "line", + "id": "cx_pn_ctspine_h", + "x": 855.0, + "y": 1010, + "width": 0, + "height": 0, + "strokeColor": "#be123c", + "backgroundColor": "#be123c", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1313, + "version": 1, + "versionNonce": 1314, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "points": [ + [ + 0.0, + 0 + ], + [ + -8.059999999999945, + -13.0 + ], + [ + 8.059999999999945, + -13.0 + ], + [ + 0, + 0 + ] + ], + "roundness": null }, { "type": "rectangle", @@ -4585,9 +5660,9 @@ "roughness": 0, "opacity": 100, "angle": 0, - "seed": 1265, + "seed": 1315, "version": 1, - "versionNonce": 1266, + "versionNonce": 1316, "isDeleted": false, "groupIds": [], "boundElements": [], @@ -4609,9 +5684,9 @@ "roughness": 0, "opacity": 100, "angle": 0, - "seed": 1267, + "seed": 1317, "version": 1, - "versionNonce": 1268, + "versionNonce": 1318, "isDeleted": false, "groupIds": [], "boundElements": null, @@ -4641,9 +5716,9 @@ "roughness": 0, "opacity": 100, "angle": 0, - "seed": 1269, + "seed": 1319, "version": 1, - "versionNonce": 1270, + "versionNonce": 1320, "isDeleted": false, "groupIds": [], "boundElements": [], @@ -4668,9 +5743,9 @@ "roughness": 0, "opacity": 100, "angle": 0, - "seed": 1271, + "seed": 1321, "version": 1, - "versionNonce": 1272, + "versionNonce": 1322, "isDeleted": false, "groupIds": [], "boundElements": null, @@ -4700,9 +5775,9 @@ "roughness": 0, "opacity": 100, "angle": 0, - "seed": 1273, + "seed": 1323, "version": 1, - "versionNonce": 1274, + "versionNonce": 1324, "isDeleted": false, "groupIds": [], "boundElements": [], @@ -4727,9 +5802,9 @@ "roughness": 0, "opacity": 100, "angle": 0, - "seed": 1275, + "seed": 1325, "version": 1, - "versionNonce": 1276, + "versionNonce": 1326, "isDeleted": false, "groupIds": [], "boundElements": null, @@ -4745,12 +5820,12 @@ "lineHeight": 1.25 }, { - "type": "diamond", + "type": "ellipse", "id": "legA2", "x": 24, - "y": 1297, + "y": 1299, "width": 24, - "height": 22, + "height": 18, "strokeColor": "#7e22ce", "backgroundColor": "#e9d5ff", "fillStyle": "solid", @@ -4759,9 +5834,9 @@ "roughness": 0, "opacity": 100, "angle": 0, - "seed": 1277, + "seed": 1327, "version": 1, - "versionNonce": 1278, + "versionNonce": 1328, "isDeleted": false, "groupIds": [], "boundElements": [], @@ -4783,9 +5858,9 @@ "roughness": 0, "opacity": 100, "angle": 0, - "seed": 1279, + "seed": 1329, "version": 1, - "versionNonce": 1280, + "versionNonce": 1330, "isDeleted": false, "groupIds": [], "boundElements": null, @@ -4815,9 +5890,9 @@ "roughness": 0, "opacity": 100, "angle": 0, - "seed": 1281, + "seed": 1331, "version": 1, - "versionNonce": 1282, + "versionNonce": 1332, "isDeleted": false, "groupIds": [], "boundElements": [], @@ -4842,9 +5917,9 @@ "roughness": 0, "opacity": 100, "angle": 0, - "seed": 1283, + "seed": 1333, "version": 1, - "versionNonce": 1284, + "versionNonce": 1334, "isDeleted": false, "groupIds": [], "boundElements": null, @@ -4874,9 +5949,9 @@ "roughness": 0, "opacity": 100, "angle": 0, - "seed": 1285, + "seed": 1335, "version": 1, - "versionNonce": 1286, + "versionNonce": 1336, "isDeleted": false, "groupIds": [], "boundElements": [], @@ -4901,9 +5976,9 @@ "roughness": 0, "opacity": 100, "angle": 0, - "seed": 1287, + "seed": 1337, "version": 1, - "versionNonce": 1288, + "versionNonce": 1338, "isDeleted": false, "groupIds": [], "boundElements": null, @@ -4933,9 +6008,9 @@ "roughness": 0, "opacity": 100, "angle": 0, - "seed": 1289, + "seed": 1339, "version": 1, - "versionNonce": 1290, + "versionNonce": 1340, "isDeleted": false, "groupIds": [], "boundElements": [], @@ -4957,9 +6032,9 @@ "roughness": 0, "opacity": 100, "angle": 0, - "seed": 1291, + "seed": 1341, "version": 1, - "versionNonce": 1292, + "versionNonce": 1342, "isDeleted": false, "groupIds": [], "boundElements": null, @@ -4989,9 +6064,9 @@ "roughness": 0, "opacity": 100, "angle": 0, - "seed": 1293, + "seed": 1343, "version": 1, - "versionNonce": 1294, + "versionNonce": 1344, "isDeleted": false, "groupIds": [], "boundElements": null, @@ -5023,9 +6098,9 @@ "roughness": 0, "opacity": 100, "angle": 0, - "seed": 1295, + "seed": 1345, "version": 1, - "versionNonce": 1296, + "versionNonce": 1346, "isDeleted": false, "groupIds": [], "boundElements": null, @@ -5055,9 +6130,9 @@ "roughness": 0, "opacity": 100, "angle": 0, - "seed": 1297, + "seed": 1347, "version": 1, - "versionNonce": 1298, + "versionNonce": 1348, "isDeleted": false, "groupIds": [], "boundElements": null, @@ -5089,9 +6164,9 @@ "roughness": 0, "opacity": 100, "angle": 0, - "seed": 1299, + "seed": 1349, "version": 1, - "versionNonce": 1300, + "versionNonce": 1350, "isDeleted": false, "groupIds": [], "boundElements": null, @@ -5121,9 +6196,9 @@ "roughness": 0, "opacity": 100, "angle": 0, - "seed": 1301, + "seed": 1351, "version": 1, - "versionNonce": 1302, + "versionNonce": 1352, "isDeleted": false, "groupIds": [], "boundElements": null, @@ -5155,9 +6230,9 @@ "roughness": 0, "opacity": 100, "angle": 0, - "seed": 1303, + "seed": 1353, "version": 1, - "versionNonce": 1304, + "versionNonce": 1354, "isDeleted": false, "groupIds": [], "boundElements": null, diff --git a/knowledge/drafts/foundation-network.svg b/knowledge/drafts/foundation-network.svg index 1387c45..3fed815 100644 --- a/knowledge/drafts/foundation-network.svg +++ b/knowledge/drafts/foundation-network.svg @@ -1,2 +1,2 @@ Foundation Context: a mini-networkthree sectors of shared, curated knowledge — illustrative, not exhaustiveSector 1 — Finding / diagnosis definitionsSector 2 — Anatomic locationsSector 3 — Exam types(content to come)Legendlung cancerpulmonarynoduleLung-RADSpleural effusionsolidpulmonarynodulepart-solidpulmonarynodulenon-solidpulmonarynodulesolid componentsubtype ofsubtype ofsubtype ofhas componentmay manifest asmay progress toassessed bythoraxpleuralspaceupper abdomenright lunglungleft lungupper lobe ofright lunglungparenchymacontained bylateralitypart ofcontained byCT Chestpreferred (to come)CT Chest WO contrast29252-4CT Chest W contrast IV24628-0CT Chest WO and W contrast IV30598-7CTA Chest vesselsWO and W contrast IV30804-9CT Thoracic spineW contrast IV24979-7Region imaged:Thorax (RID1243)member of familyPlaybook partscoped toscoped toscoped tocoversincludededge (usually)seen onpossibly seen onfindingdiagnosisassessment schemeanatomic locationexam typeunlabeled grey = further nodes not shownsolid edge = within-sector relationshipcolored thick edge = cross-sector relationshipdashed = possible or planned \ No newline at end of file + Foundation Context: a mini-networkthree sectors of shared, curated knowledge — illustrative, not exhaustiveSector 1 — Finding / diagnosis definitionsSector 2 — Anatomic locationsSector 3 — Exam types(content to come)Legendlung cancerpulmonarynoduleLung-RADSpleural effusionsolidpulmonarynodulepart-solidpulmonarynodulenon-solidpulmonarynodulesolid componentsubtype ofsubtype ofsubtype ofhas componentmay manifest asmay progress toassessed bythoraxpleuralspaceupper abdomenright lunglungleft lungupper lobe ofright lunglungparenchymacontained bylateralitypart ofcontained byCT Chestpreferred (to come)CT Chest WO contrast29252-4CT Chest W contrast IV24628-0CT Chest WO and W contrast IV30598-7CTA Chest vesselsWO and W contrast IV30804-9CT Thoracic spineW contrast IV24979-7Region imaged:Thorax (RID1243)member of familyPlaybook partscoped toscoped toscoped tocoversincludededge (usually)seen onpossibly seen onfindingdiagnosisassessment schemeanatomic locationexam typeunlabeled grey = further nodes not shownsolid edge = within-sector relationshipcolored thick edge = cross-sector relationshipdashed = possible or planned \ No newline at end of file diff --git a/knowledge/drafts/nodule-neighborhood.excalidraw b/knowledge/drafts/nodule-neighborhood.excalidraw new file mode 100644 index 0000000..e1cbdf0 --- /dev/null +++ b/knowledge/drafts/nodule-neighborhood.excalidraw @@ -0,0 +1,6015 @@ +{ + "type": "excalidraw", + "version": 2, + "source": "oidm-knowledge/tools/diagrams", + "elements": [ + { + "type": "rectangle", + "id": "fc", + "x": 400, + "y": 270, + "width": 240, + "height": 80, + "strokeColor": "#059669", + "backgroundColor": "#d1fae5", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1001, + "version": 1, + "versionNonce": 1002, + "isDeleted": false, + "groupIds": [], + "boundElements": [ + { + "id": "e_gr_fc", + "type": "arrow" + }, + { + "id": "e_mma_gn", + "type": "arrow" + }, + { + "id": "e_mma_neo", + "type": "arrow" + }, + { + "id": "e_st1", + "type": "arrow" + }, + { + "id": "e_st2", + "type": "arrow" + }, + { + "id": "e_st3", + "type": "arrow" + }, + { + "id": "e_de0", + "type": "arrow" + }, + { + "id": "e_de1", + "type": "arrow" + }, + { + "id": "e_de2", + "type": "arrow" + }, + { + "id": "e_de3", + "type": "arrow" + }, + { + "id": "e_de4", + "type": "arrow" + }, + { + "id": "e_ms0", + "type": "arrow" + }, + { + "id": "e_ms1", + "type": "arrow" + }, + { + "id": "e_sc", + "type": "arrow" + }, + { + "id": "e_sp", + "type": "arrow" + }, + { + "id": "e_sn0", + "type": "arrow" + }, + { + "id": "e_sn1", + "type": "arrow" + }, + { + "id": "e_sn2", + "type": "arrow" + } + ], + "link": null, + "locked": false, + "roundness": { + "type": 3 + } + }, + { + "type": "text", + "id": "fc_n", + "x": 408, + "y": 291.0, + "width": 224, + "height": 21.25, + "strokeColor": "#064e3b", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1003, + "version": 1, + "versionNonce": 1004, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "pulmonary nodule", + "originalText": "pulmonary nodule", + "fontSize": 17, + "fontFamily": 2, + "textAlign": "center", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 + }, + { + "type": "text", + "id": "fc_k", + "x": 408, + "y": 315.25, + "width": 224, + "height": 13.75, + "strokeColor": "#047857", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1005, + "version": 1, + "versionNonce": 1006, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "FindingClass", + "originalText": "FindingClass", + "fontSize": 11, + "fontFamily": 2, + "textAlign": "center", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 + }, + { + "type": "rectangle", + "id": "gr", + "x": 320, + "y": 25, + "width": 250, + "height": 70, + "strokeColor": "#10b981", + "backgroundColor": "#ecfdf5", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "dashed", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1007, + "version": 1, + "versionNonce": 1008, + "isDeleted": false, + "groupIds": [], + "boundElements": [ + { + "id": "e_gr_fc", + "type": "arrow" + }, + { + "id": "e_gr_gn", + "type": "arrow" + } + ], + "link": null, + "locked": false, + "roundness": { + "type": 3 + } + }, + { + "type": "text", + "id": "gr_n", + "x": 328, + "y": 42.875, + "width": 234, + "height": 17.5, + "strokeColor": "#065f46", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1009, + "version": 1, + "versionNonce": 1010, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "pulmonary parenchymal abnormality", + "originalText": "pulmonary parenchymal abnormality", + "fontSize": 14, + "fontFamily": 2, + "textAlign": "center", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 + }, + { + "type": "text", + "id": "gr_k", + "x": 328, + "y": 63.375, + "width": 234, + "height": 13.75, + "strokeColor": "#059669", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1011, + "version": 1, + "versionNonce": 1012, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "Grouping", + "originalText": "Grouping", + "fontSize": 11, + "fontFamily": 2, + "textAlign": "center", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 + }, + { + "type": "rectangle", + "id": "dx_gran", + "x": 20, + "y": 30, + "width": 165, + "height": 62, + "strokeColor": "#059669", + "backgroundColor": "#6ee7b7", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1013, + "version": 1, + "versionNonce": 1014, + "isDeleted": false, + "groupIds": [], + "boundElements": [ + { + "id": "e_gr_gn", + "type": "arrow" + }, + { + "id": "e_mma_gn", + "type": "arrow" + } + ], + "link": null, + "locked": false, + "roundness": { + "type": 3 + } + }, + { + "type": "text", + "id": "dx_gran_n", + "x": 28, + "y": 43.875, + "width": 149, + "height": 17.5, + "strokeColor": "#064e3b", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1015, + "version": 1, + "versionNonce": 1016, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "pulmonary granuloma", + "originalText": "pulmonary granuloma", + "fontSize": 14, + "fontFamily": 2, + "textAlign": "center", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 + }, + { + "type": "text", + "id": "dx_gran_k", + "x": 28, + "y": 64.375, + "width": 149, + "height": 13.75, + "strokeColor": "#047857", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1017, + "version": 1, + "versionNonce": 1018, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "Diagnosis", + "originalText": "Diagnosis", + "fontSize": 11, + "fontFamily": 2, + "textAlign": "center", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 + }, + { + "type": "rectangle", + "id": "dx_neo", + "x": 20, + "y": 140, + "width": 165, + "height": 62, + "strokeColor": "#059669", + "backgroundColor": "#6ee7b7", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1019, + "version": 1, + "versionNonce": 1020, + "isDeleted": false, + "groupIds": [], + "boundElements": [ + { + "id": "e_mma_neo", + "type": "arrow" + } + ], + "link": null, + "locked": false, + "roundness": { + "type": 3 + } + }, + { + "type": "text", + "id": "dx_neo_n", + "x": 28, + "y": 153.875, + "width": 149, + "height": 17.5, + "strokeColor": "#064e3b", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1021, + "version": 1, + "versionNonce": 1022, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "pulmonary neoplasm", + "originalText": "pulmonary neoplasm", + "fontSize": 14, + "fontFamily": 2, + "textAlign": "center", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 + }, + { + "type": "text", + "id": "dx_neo_k", + "x": 28, + "y": 174.375, + "width": 149, + "height": 13.75, + "strokeColor": "#047857", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1023, + "version": 1, + "versionNonce": 1024, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "Diagnosis", + "originalText": "Diagnosis", + "fontSize": 11, + "fontFamily": 2, + "textAlign": "center", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 + }, + { + "type": "ellipse", + "id": "as_lr", + "x": 600, + "y": 14, + "width": 190, + "height": 92, + "strokeColor": "#7e22ce", + "backgroundColor": "#e9d5ff", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1025, + "version": 1, + "versionNonce": 1026, + "isDeleted": false, + "groupIds": [], + "boundElements": [], + "link": null, + "locked": false + }, + { + "type": "text", + "id": "as_lr_n", + "x": 626.6, + "y": 42.875, + "width": 136.79999999999998, + "height": 17.5, + "strokeColor": "#4c1d95", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1027, + "version": 1, + "versionNonce": 1028, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "Lung-RADS", + "originalText": "Lung-RADS", + "fontSize": 14, + "fontFamily": 2, + "textAlign": "center", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 + }, + { + "type": "text", + "id": "as_lr_k", + "x": 626.6, + "y": 63.375, + "width": 136.79999999999998, + "height": 13.75, + "strokeColor": "#7e22ce", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1029, + "version": 1, + "versionNonce": 1030, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "AssessmentScheme", + "originalText": "AssessmentScheme", + "fontSize": 11, + "fontFamily": 2, + "textAlign": "center", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 + }, + { + "type": "ellipse", + "id": "as_fl", + "x": 845, + "y": 14, + "width": 190, + "height": 92, + "strokeColor": "#7e22ce", + "backgroundColor": "#e9d5ff", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1031, + "version": 1, + "versionNonce": 1032, + "isDeleted": false, + "groupIds": [], + "boundElements": [], + "link": null, + "locked": false + }, + { + "type": "text", + "id": "as_fl_n", + "x": 871.6, + "y": 42.875, + "width": 136.79999999999998, + "height": 17.5, + "strokeColor": "#4c1d95", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1033, + "version": 1, + "versionNonce": 1034, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "Fleischner criteria", + "originalText": "Fleischner criteria", + "fontSize": 14, + "fontFamily": 2, + "textAlign": "center", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 + }, + { + "type": "text", + "id": "as_fl_k", + "x": 871.6, + "y": 63.375, + "width": 136.79999999999998, + "height": 13.75, + "strokeColor": "#7e22ce", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1035, + "version": 1, + "versionNonce": 1036, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "AssessmentScheme", + "originalText": "AssessmentScheme", + "fontSize": 11, + "fontFamily": 2, + "textAlign": "center", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 + }, + { + "type": "rectangle", + "id": "s1", + "x": 300, + "y": 500, + "width": 140, + "height": 80, + "strokeColor": "#059669", + "backgroundColor": "#d1fae5", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1037, + "version": 1, + "versionNonce": 1038, + "isDeleted": false, + "groupIds": [], + "boundElements": [ + { + "id": "e_st1", + "type": "arrow" + } + ], + "link": null, + "locked": false, + "roundness": { + "type": 3 + } + }, + { + "type": "text", + "id": "s1_n", + "x": 308, + "y": 515.375, + "width": 124, + "height": 32.5, + "strokeColor": "#064e3b", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1039, + "version": 1, + "versionNonce": 1040, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "solid\npulmonary nodule", + "originalText": "solid\npulmonary nodule", + "fontSize": 13, + "fontFamily": 2, + "textAlign": "center", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 + }, + { + "type": "text", + "id": "s1_k", + "x": 308, + "y": 550.875, + "width": 124, + "height": 13.75, + "strokeColor": "#047857", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1041, + "version": 1, + "versionNonce": 1042, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "FindingClass", + "originalText": "FindingClass", + "fontSize": 11, + "fontFamily": 2, + "textAlign": "center", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 + }, + { + "type": "rectangle", + "id": "s2", + "x": 450, + "y": 500, + "width": 140, + "height": 80, + "strokeColor": "#059669", + "backgroundColor": "#d1fae5", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1043, + "version": 1, + "versionNonce": 1044, + "isDeleted": false, + "groupIds": [], + "boundElements": [ + { + "id": "e_st2", + "type": "arrow" + }, + { + "id": "e_hc", + "type": "arrow" + } + ], + "link": null, + "locked": false, + "roundness": { + "type": 3 + } + }, + { + "type": "text", + "id": "s2_n", + "x": 458, + "y": 515.375, + "width": 124, + "height": 32.5, + "strokeColor": "#064e3b", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1045, + "version": 1, + "versionNonce": 1046, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "part-solid\npulmonary nodule", + "originalText": "part-solid\npulmonary nodule", + "fontSize": 13, + "fontFamily": 2, + "textAlign": "center", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 + }, + { + "type": "text", + "id": "s2_k", + "x": 458, + "y": 550.875, + "width": 124, + "height": 13.75, + "strokeColor": "#047857", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1047, + "version": 1, + "versionNonce": 1048, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "FindingClass", + "originalText": "FindingClass", + "fontSize": 11, + "fontFamily": 2, + "textAlign": "center", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 + }, + { + "type": "rectangle", + "id": "s3", + "x": 600, + "y": 500, + "width": 140, + "height": 80, + "strokeColor": "#059669", + "backgroundColor": "#d1fae5", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1049, + "version": 1, + "versionNonce": 1050, + "isDeleted": false, + "groupIds": [], + "boundElements": [ + { + "id": "e_st3", + "type": "arrow" + } + ], + "link": null, + "locked": false, + "roundness": { + "type": 3 + } + }, + { + "type": "text", + "id": "s3_n", + "x": 608, + "y": 515.375, + "width": 124, + "height": 32.5, + "strokeColor": "#064e3b", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1051, + "version": 1, + "versionNonce": 1052, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "ground glass\nnodule", + "originalText": "ground glass\nnodule", + "fontSize": 13, + "fontFamily": 2, + "textAlign": "center", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 + }, + { + "type": "text", + "id": "s3_k", + "x": 608, + "y": 550.875, + "width": 124, + "height": 13.75, + "strokeColor": "#047857", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1053, + "version": 1, + "versionNonce": 1054, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "FindingClass", + "originalText": "FindingClass", + "fontSize": 11, + "fontFamily": 2, + "textAlign": "center", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 + }, + { + "type": "rectangle", + "id": "sc", + "x": 400, + "y": 630, + "width": 240, + "height": 70, + "strokeColor": "#059669", + "backgroundColor": "#d1fae5", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1055, + "version": 1, + "versionNonce": 1056, + "isDeleted": false, + "groupIds": [], + "boundElements": [ + { + "id": "e_hc", + "type": "arrow" + } + ], + "link": null, + "locked": false, + "roundness": { + "type": 3 + } + }, + { + "type": "text", + "id": "sc_n", + "x": 408, + "y": 640.375, + "width": 224, + "height": 32.5, + "strokeColor": "#064e3b", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1057, + "version": 1, + "versionNonce": 1058, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "solid component of\npart-solid pulmonary nodule", + "originalText": "solid component of\npart-solid pulmonary nodule", + "fontSize": 13, + "fontFamily": 2, + "textAlign": "center", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 + }, + { + "type": "text", + "id": "sc_k", + "x": 408, + "y": 675.875, + "width": 224, + "height": 13.75, + "strokeColor": "#047857", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1059, + "version": 1, + "versionNonce": 1060, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "FindingClass", + "originalText": "FindingClass", + "fontSize": 11, + "fontFamily": 2, + "textAlign": "center", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 + }, + { + "type": "rectangle", + "id": "an", + "x": 60, + "y": 290, + "width": 140, + "height": 60, + "strokeColor": "#1d4ed8", + "backgroundColor": "#bfdbfe", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1061, + "version": 1, + "versionNonce": 1062, + "isDeleted": false, + "groupIds": [], + "boundElements": [ + { + "id": "e_sc", + "type": "arrow" + } + ], + "link": null, + "locked": false, + "roundness": { + "type": 3 + } + }, + { + "type": "text", + "id": "an_n", + "x": 68, + "y": 302.875, + "width": 124, + "height": 17.5, + "strokeColor": "#1e3a8a", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1063, + "version": 1, + "versionNonce": 1064, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "lung", + "originalText": "lung", + "fontSize": 14, + "fontFamily": 2, + "textAlign": "center", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 + }, + { + "type": "text", + "id": "an_k", + "x": 68, + "y": 323.375, + "width": 124, + "height": 13.75, + "strokeColor": "#1d4ed8", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1065, + "version": 1, + "versionNonce": 1066, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "AnatomicLocation", + "originalText": "AnatomicLocation", + "fontSize": 11, + "fontFamily": 2, + "textAlign": "center", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 + }, + { + "type": "rectangle", + "id": "sp", + "x": 40, + "y": 370, + "width": 170, + "height": 60, + "strokeColor": "#78748f", + "backgroundColor": "#e5e3ee", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1067, + "version": 1, + "versionNonce": 1068, + "isDeleted": false, + "groupIds": [], + "boundElements": [ + { + "id": "e_sp", + "type": "arrow" + } + ], + "link": null, + "locked": false, + "roundness": { + "type": 3 + } + }, + { + "type": "text", + "id": "sp_n", + "x": 48, + "y": 382.875, + "width": 154, + "height": 17.5, + "strokeColor": "#3c3a52", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1069, + "version": 1, + "versionNonce": 1070, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "chest radiology", + "originalText": "chest radiology", + "fontSize": 14, + "fontFamily": 2, + "textAlign": "center", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 + }, + { + "type": "text", + "id": "sp_k", + "x": 48, + "y": 403.375, + "width": 154, + "height": 13.75, + "strokeColor": "#5d5a78", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1071, + "version": 1, + "versionNonce": 1072, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "Subspecialty", + "originalText": "Subspecialty", + "fontSize": 11, + "fontFamily": 2, + "textAlign": "center", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 + }, + { + "type": "rectangle", + "id": "md_ct", + "x": 55, + "y": 480, + "width": 90, + "height": 38, + "strokeColor": "#6b7280", + "backgroundColor": "#e5e7eb", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1073, + "version": 1, + "versionNonce": 1074, + "isDeleted": false, + "groupIds": [], + "boundElements": [ + { + "id": "e_sn0", + "type": "arrow" + } + ], + "link": null, + "locked": false, + "roundness": { + "type": 3 + } + }, + { + "type": "text", + "id": "md_ct_n", + "x": 63, + "y": 483.75, + "width": 74, + "height": 16.25, + "strokeColor": "#374151", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1075, + "version": 1, + "versionNonce": 1076, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "CT", + "originalText": "CT", + "fontSize": 13, + "fontFamily": 2, + "textAlign": "center", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 + }, + { + "type": "text", + "id": "md_ct_k", + "x": 63, + "y": 503.0, + "width": 74, + "height": 11.25, + "strokeColor": "#4b5563", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1077, + "version": 1, + "versionNonce": 1078, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "Modality", + "originalText": "Modality", + "fontSize": 9, + "fontFamily": 2, + "textAlign": "center", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 + }, + { + "type": "rectangle", + "id": "md_xr", + "x": 55, + "y": 528, + "width": 90, + "height": 38, + "strokeColor": "#6b7280", + "backgroundColor": "#e5e7eb", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1079, + "version": 1, + "versionNonce": 1080, + "isDeleted": false, + "groupIds": [], + "boundElements": [ + { + "id": "e_sn1", + "type": "arrow" + } + ], + "link": null, + "locked": false, + "roundness": { + "type": 3 + } + }, + { + "type": "text", + "id": "md_xr_n", + "x": 63, + "y": 531.75, + "width": 74, + "height": 16.25, + "strokeColor": "#374151", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1081, + "version": 1, + "versionNonce": 1082, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "XR", + "originalText": "XR", + "fontSize": 13, + "fontFamily": 2, + "textAlign": "center", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 + }, + { + "type": "text", + "id": "md_xr_k", + "x": 63, + "y": 551.0, + "width": 74, + "height": 11.25, + "strokeColor": "#4b5563", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1083, + "version": 1, + "versionNonce": 1084, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "Modality", + "originalText": "Modality", + "fontSize": 9, + "fontFamily": 2, + "textAlign": "center", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 + }, + { + "type": "rectangle", + "id": "md_mr", + "x": 55, + "y": 576, + "width": 90, + "height": 38, + "strokeColor": "#6b7280", + "backgroundColor": "#e5e7eb", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1085, + "version": 1, + "versionNonce": 1086, + "isDeleted": false, + "groupIds": [], + "boundElements": [ + { + "id": "e_sn2", + "type": "arrow" + } + ], + "link": null, + "locked": false, + "roundness": { + "type": 3 + } + }, + { + "type": "text", + "id": "md_mr_n", + "x": 63, + "y": 579.75, + "width": 74, + "height": 16.25, + "strokeColor": "#374151", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1087, + "version": 1, + "versionNonce": 1088, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "MR", + "originalText": "MR", + "fontSize": 13, + "fontFamily": 2, + "textAlign": "center", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 + }, + { + "type": "text", + "id": "md_mr_k", + "x": 63, + "y": 599.0, + "width": 74, + "height": 11.25, + "strokeColor": "#4b5563", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1089, + "version": 1, + "versionNonce": 1090, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "Modality", + "originalText": "Modality", + "fontSize": 9, + "fontFamily": 2, + "textAlign": "center", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 + }, + { + "type": "rectangle", + "id": "de0", + "x": 845, + "y": 150, + "width": 190, + "height": 48, + "strokeColor": "#be123c", + "backgroundColor": "#ffe4e6", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1091, + "version": 1, + "versionNonce": 1092, + "isDeleted": false, + "groupIds": [], + "boundElements": [ + { + "id": "e_de0", + "type": "arrow" + } + ], + "link": null, + "locked": false, + "roundness": { + "type": 3 + } + }, + { + "type": "text", + "id": "de0_n", + "x": 853, + "y": 156.875, + "width": 174, + "height": 17.5, + "strokeColor": "#881337", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1093, + "version": 1, + "versionNonce": 1094, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "presence", + "originalText": "presence", + "fontSize": 14, + "fontFamily": 2, + "textAlign": "center", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 + }, + { + "type": "text", + "id": "de0_k", + "x": 853, + "y": 177.375, + "width": 174, + "height": 13.75, + "strokeColor": "#be123c", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1095, + "version": 1, + "versionNonce": 1096, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "DataElement", + "originalText": "DataElement", + "fontSize": 11, + "fontFamily": 2, + "textAlign": "center", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 + }, + { + "type": "rectangle", + "id": "de1", + "x": 845, + "y": 216, + "width": 190, + "height": 48, + "strokeColor": "#be123c", + "backgroundColor": "#ffe4e6", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1097, + "version": 1, + "versionNonce": 1098, + "isDeleted": false, + "groupIds": [], + "boundElements": [ + { + "id": "e_de1", + "type": "arrow" + } + ], + "link": null, + "locked": false, + "roundness": { + "type": 3 + } + }, + { + "type": "text", + "id": "de1_n", + "x": 853, + "y": 222.875, + "width": 174, + "height": 17.5, + "strokeColor": "#881337", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1099, + "version": 1, + "versionNonce": 1100, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "composition", + "originalText": "composition", + "fontSize": 14, + "fontFamily": 2, + "textAlign": "center", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 + }, + { + "type": "text", + "id": "de1_k", + "x": 853, + "y": 243.375, + "width": 174, + "height": 13.75, + "strokeColor": "#be123c", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1101, + "version": 1, + "versionNonce": 1102, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "DataElement", + "originalText": "DataElement", + "fontSize": 11, + "fontFamily": 2, + "textAlign": "center", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 + }, + { + "type": "rectangle", + "id": "de2", + "x": 845, + "y": 282, + "width": 190, + "height": 48, + "strokeColor": "#be123c", + "backgroundColor": "#ffe4e6", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1103, + "version": 1, + "versionNonce": 1104, + "isDeleted": false, + "groupIds": [], + "boundElements": [ + { + "id": "e_de2", + "type": "arrow" + } + ], + "link": null, + "locked": false, + "roundness": { + "type": 3 + } + }, + { + "type": "text", + "id": "de2_n", + "x": 853, + "y": 288.875, + "width": 174, + "height": 17.5, + "strokeColor": "#881337", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1105, + "version": 1, + "versionNonce": 1106, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "margin", + "originalText": "margin", + "fontSize": 14, + "fontFamily": 2, + "textAlign": "center", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 + }, + { + "type": "text", + "id": "de2_k", + "x": 853, + "y": 309.375, + "width": 174, + "height": 13.75, + "strokeColor": "#be123c", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1107, + "version": 1, + "versionNonce": 1108, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "DataElement", + "originalText": "DataElement", + "fontSize": 11, + "fontFamily": 2, + "textAlign": "center", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 + }, + { + "type": "rectangle", + "id": "de3", + "x": 845, + "y": 348, + "width": 190, + "height": 48, + "strokeColor": "#be123c", + "backgroundColor": "#ffe4e6", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1109, + "version": 1, + "versionNonce": 1110, + "isDeleted": false, + "groupIds": [], + "boundElements": [ + { + "id": "e_de3", + "type": "arrow" + } + ], + "link": null, + "locked": false, + "roundness": { + "type": 3 + } + }, + { + "type": "text", + "id": "de3_n", + "x": 853, + "y": 354.875, + "width": 174, + "height": 17.5, + "strokeColor": "#881337", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1111, + "version": 1, + "versionNonce": 1112, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "calcification", + "originalText": "calcification", + "fontSize": 14, + "fontFamily": 2, + "textAlign": "center", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 + }, + { + "type": "text", + "id": "de3_k", + "x": 853, + "y": 375.375, + "width": 174, + "height": 13.75, + "strokeColor": "#be123c", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1113, + "version": 1, + "versionNonce": 1114, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "DataElement", + "originalText": "DataElement", + "fontSize": 11, + "fontFamily": 2, + "textAlign": "center", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 + }, + { + "type": "rectangle", + "id": "de4", + "x": 845, + "y": 414, + "width": 190, + "height": 48, + "strokeColor": "#be123c", + "backgroundColor": "#ffe4e6", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1115, + "version": 1, + "versionNonce": 1116, + "isDeleted": false, + "groupIds": [], + "boundElements": [ + { + "id": "e_de4", + "type": "arrow" + } + ], + "link": null, + "locked": false, + "roundness": { + "type": 3 + } + }, + { + "type": "text", + "id": "de4_n", + "x": 853, + "y": 420.875, + "width": 174, + "height": 17.5, + "strokeColor": "#881337", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1117, + "version": 1, + "versionNonce": 1118, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "interval change", + "originalText": "interval change", + "fontSize": 14, + "fontFamily": 2, + "textAlign": "center", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 + }, + { + "type": "text", + "id": "de4_k", + "x": 853, + "y": 441.375, + "width": 174, + "height": 13.75, + "strokeColor": "#be123c", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1119, + "version": 1, + "versionNonce": 1120, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "DataElement", + "originalText": "DataElement", + "fontSize": 11, + "fontFamily": 2, + "textAlign": "center", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 + }, + { + "type": "rectangle", + "id": "ms0", + "x": 845, + "y": 510, + "width": 190, + "height": 48, + "strokeColor": "#6d28d9", + "backgroundColor": "#ede9fe", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1121, + "version": 1, + "versionNonce": 1122, + "isDeleted": false, + "groupIds": [], + "boundElements": [ + { + "id": "e_ms0", + "type": "arrow" + } + ], + "link": null, + "locked": false, + "roundness": { + "type": 3 + } + }, + { + "type": "text", + "id": "ms0_n", + "x": 853, + "y": 516.875, + "width": 174, + "height": 17.5, + "strokeColor": "#4c1d95", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1123, + "version": 1, + "versionNonce": 1124, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "mean diameter", + "originalText": "mean diameter", + "fontSize": 14, + "fontFamily": 2, + "textAlign": "center", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 + }, + { + "type": "text", + "id": "ms0_k", + "x": 853, + "y": 537.375, + "width": 174, + "height": 13.75, + "strokeColor": "#6d28d9", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1125, + "version": 1, + "versionNonce": 1126, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "Measurement", + "originalText": "Measurement", + "fontSize": 11, + "fontFamily": 2, + "textAlign": "center", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 + }, + { + "type": "rectangle", + "id": "ms1", + "x": 845, + "y": 576, + "width": 190, + "height": 48, + "strokeColor": "#6d28d9", + "backgroundColor": "#ede9fe", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1127, + "version": 1, + "versionNonce": 1128, + "isDeleted": false, + "groupIds": [], + "boundElements": [ + { + "id": "e_ms1", + "type": "arrow" + } + ], + "link": null, + "locked": false, + "roundness": { + "type": 3 + } + }, + { + "type": "text", + "id": "ms1_n", + "x": 853, + "y": 582.875, + "width": 174, + "height": 17.5, + "strokeColor": "#4c1d95", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1129, + "version": 1, + "versionNonce": 1130, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "long-axis diameter", + "originalText": "long-axis diameter", + "fontSize": 14, + "fontFamily": 2, + "textAlign": "center", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 + }, + { + "type": "text", + "id": "ms1_k", + "x": 853, + "y": 603.375, + "width": 174, + "height": 13.75, + "strokeColor": "#6d28d9", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1131, + "version": 1, + "versionNonce": 1132, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "Measurement", + "originalText": "Measurement", + "fontSize": 11, + "fontFamily": 2, + "textAlign": "center", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 + }, + { + "type": "arrow", + "id": "e_gr_fc", + "x": 520.0, + "y": 270, + "width": 0.0, + "height": -175, + "strokeColor": "#64748b", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1133, + "version": 1, + "versionNonce": 1134, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "points": [ + [ + 0, + 0 + ], + [ + 0.0, + -175 + ] + ], + "startBinding": { + "elementId": "fc", + "focus": 0, + "gap": 2 + }, + "endBinding": { + "elementId": "gr", + "focus": 0, + "gap": 2 + }, + "startArrowhead": null, + "endArrowhead": null + }, + { + "type": "line", + "id": "e_gr_fc_h", + "x": 520.0, + "y": 95, + "width": 0, + "height": 0, + "strokeColor": "#64748b", + "backgroundColor": "#64748b", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1135, + "version": 1, + "versionNonce": 1136, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "points": [ + [ + 0.0, + 0 + ], + [ + 6.2000000000000455, + 10.0 + ], + [ + -6.2000000000000455, + 10.0 + ], + [ + 0, + 0 + ] + ], + "roundness": null + }, + { + "type": "arrow", + "id": "e_gr_gn", + "x": 185, + "y": 61.0, + "width": 135, + "height": -1.0, + "strokeColor": "#64748b", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1137, + "version": 1, + "versionNonce": 1138, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "points": [ + [ + 0, + 0 + ], + [ + 135, + -1.0 + ] + ], + "startBinding": { + "elementId": "dx_gran", + "focus": 0, + "gap": 2 + }, + "endBinding": { + "elementId": "gr", + "focus": 0, + "gap": 2 + }, + "startArrowhead": null, + "endArrowhead": null + }, + { + "type": "line", + "id": "e_gr_gn_h", + "x": 320, + "y": 60.0, + "width": 0, + "height": 0, + "strokeColor": "#64748b", + "backgroundColor": "#64748b", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1139, + "version": 1, + "versionNonce": 1140, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "points": [ + [ + 0, + 0.0 + ], + [ + -9.953800996859798, + 6.2739019529247315 + ], + [ + -10.045650328874274, + -6.125757869030409 + ], + [ + 0, + 0 + ] + ], + "roundness": null + }, + { + "type": "arrow", + "id": "e_mma_gn", + "x": 185, + "y": 83.94, + "width": 215, + "height": 198.06, + "strokeColor": "#64748b", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1141, + "version": 1, + "versionNonce": 1142, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "points": [ + [ + 0, + 0 + ], + [ + 215, + 198.06 + ] + ], + "startBinding": { + "elementId": "dx_gran", + "focus": 0, + "gap": 2 + }, + "endBinding": { + "elementId": "fc", + "focus": 0, + "gap": 2 + }, + "startArrowhead": null, + "endArrowhead": null + }, + { + "type": "line", + "id": "e_mma_gn_h", + "x": 400, + "y": 282.0, + "width": 0, + "height": 0, + "strokeColor": "#64748b", + "backgroundColor": "#64748b", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1143, + "version": 1, + "versionNonce": 1144, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "points": [ + [ + 0, + 0.0 + ], + [ + -11.555613006793124, + -2.215357315927804 + ], + [ + -3.1541406350992247, + -11.335404573900973 + ], + [ + 0, + 0 + ] + ], + "roundness": null + }, + { + "type": "arrow", + "id": "e_mma_neo", + "x": 185, + "y": 171.0, + "width": 215, + "height": 143.0, + "strokeColor": "#64748b", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1145, + "version": 1, + "versionNonce": 1146, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "points": [ + [ + 0, + 0 + ], + [ + 215, + 143.0 + ] + ], + "startBinding": { + "elementId": "dx_neo", + "focus": 0, + "gap": 2 + }, + "endBinding": { + "elementId": "fc", + "focus": 0, + "gap": 2 + }, + "startArrowhead": null, + "endArrowhead": null + }, + { + "type": "line", + "id": "e_mma_neo_h", + "x": 400, + "y": 314.0, + "width": 0, + "height": 0, + "strokeColor": "#64748b", + "backgroundColor": "#64748b", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1147, + "version": 1, + "versionNonce": 1148, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "points": [ + [ + 0, + 0.0 + ], + [ + -11.76005444388511, + -0.37565872392042365 + ], + [ + -4.892858059805235, + -10.70046447620848 + ], + [ + 0, + 0 + ] + ], + "roundness": null + }, + { + "type": "arrow", + "id": "e_asb_lr", + "x": 548.8, + "y": 270, + "width": 112.71064285388809, + "height": -161.896272225147, + "strokeColor": "#64748b", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1149, + "version": 1, + "versionNonce": 1150, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "points": [ + [ + 0, + 0 + ], + [ + 112.71064285388809, + -161.896272225147 + ] + ], + "startBinding": null, + "endBinding": null, + "startArrowhead": null, + "endArrowhead": null + }, + { + "type": "line", + "id": "e_asb_lr_h", + "x": 664.6531347457569, + "y": 103.58988853208655, + "width": 0, + "height": 0, + "strokeColor": "#64748b", + "backgroundColor": "#64748b", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1151, + "version": 1, + "versionNonce": 1152, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "points": [ + [ + 0.0, + 0.0 + ], + [ + -0.6252937479156344, + 11.749425846772994 + ], + [ + -10.801949495243775, + 4.6645350360141435 + ], + [ + 0, + 0 + ] + ], + "roundness": null + }, + { + "type": "arrow", + "id": "e_asb_fl", + "x": 592.0, + "y": 270, + "width": 283.8362978722794, + "height": -171.28052457809966, + "strokeColor": "#64748b", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1153, + "version": 1, + "versionNonce": 1154, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "points": [ + [ + 0, + 0 + ], + [ + 283.8362978722794, + -171.28052457809966 + ] + ], + "startBinding": null, + "endBinding": null, + "startArrowhead": null, + "endArrowhead": null + }, + { + "type": "line", + "id": "e_asb_fl_h", + "x": 880.5453300081402, + "y": 95.87781809853604, + "width": 0, + "height": 0, + "strokeColor": "#64748b", + "backgroundColor": "#64748b", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1155, + "version": 1, + "versionNonce": 1156, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "points": [ + [ + 0.0, + 0.0 + ], + [ + -5.358553809772729, + 10.475013177450933 + ], + [ + -11.76519941153947, + -0.1417138197625718 + ], + [ + 0, + 0 + ] + ], + "roundness": null + }, + { + "type": "arrow", + "id": "e_st1", + "x": 370.0, + "y": 500, + "width": 114.0, + "height": -150, + "strokeColor": "#64748b", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1157, + "version": 1, + "versionNonce": 1158, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "points": [ + [ + 0, + 0 + ], + [ + 114.0, + -150 + ] + ], + "startBinding": { + "elementId": "s1", + "focus": 0, + "gap": 2 + }, + "endBinding": { + "elementId": "fc", + "focus": 0, + "gap": 2 + }, + "startArrowhead": null, + "endArrowhead": null + }, + { + "type": "line", + "id": "e_st1_h", + "x": 484.0, + "y": 350, + "width": 0, + "height": 0, + "strokeColor": "#64748b", + "backgroundColor": "#64748b", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1159, + "version": 1, + "versionNonce": 1160, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "points": [ + [ + 0.0, + 0 + ], + [ + -1.114627071772361, + 11.713138199939124 + ], + [ + -10.987038278898808, + 4.210105682522965 + ], + [ + 0, + 0 + ] + ], + "roundness": null + }, + { + "type": "arrow", + "id": "e_st2", + "x": 520.0, + "y": 500, + "width": 0.0, + "height": -150, + "strokeColor": "#64748b", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1161, + "version": 1, + "versionNonce": 1162, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "points": [ + [ + 0, + 0 + ], + [ + 0.0, + -150 + ] + ], + "startBinding": { + "elementId": "s2", + "focus": 0, + "gap": 2 + }, + "endBinding": { + "elementId": "fc", + "focus": 0, + "gap": 2 + }, + "startArrowhead": null, + "endArrowhead": null + }, + { + "type": "line", + "id": "e_st2_h", + "x": 520.0, + "y": 350, + "width": 0, + "height": 0, + "strokeColor": "#64748b", + "backgroundColor": "#64748b", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1163, + "version": 1, + "versionNonce": 1164, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "points": [ + [ + 0.0, + 0 + ], + [ + 6.2000000000000455, + 10.0 + ], + [ + -6.2000000000000455, + 10.0 + ], + [ + 0, + 0 + ] + ], + "roundness": null + }, + { + "type": "arrow", + "id": "e_st3", + "x": 670.0, + "y": 500, + "width": -97.20000000000005, + "height": -150, + "strokeColor": "#64748b", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1165, + "version": 1, + "versionNonce": 1166, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "points": [ + [ + 0, + 0 + ], + [ + -97.20000000000005, + -150 + ] + ], + "startBinding": { + "elementId": "s3", + "focus": 0, + "gap": 2 + }, + "endBinding": { + "elementId": "fc", + "focus": 0, + "gap": 2 + }, + "startArrowhead": null, + "endArrowhead": null + }, + { + "type": "line", + "id": "e_st3_h", + "x": 572.8, + "y": 350, + "width": 0, + "height": 0, + "strokeColor": "#64748b", + "backgroundColor": "#64748b", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1167, + "version": 1, + "versionNonce": 1168, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "points": [ + [ + 0.0, + 0 + ], + [ + 10.641179331118224, + 5.020488267388146 + ], + [ + 0.23497872340010417, + 11.763706261189554 + ], + [ + 0, + 0 + ] + ], + "roundness": null + }, + { + "type": "arrow", + "id": "e_hc", + "x": 520.0, + "y": 580, + "width": 0.0, + "height": 50, + "strokeColor": "#64748b", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1169, + "version": 1, + "versionNonce": 1170, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "points": [ + [ + 0, + 0 + ], + [ + 0.0, + 50 + ] + ], + "startBinding": { + "elementId": "s2", + "focus": 0, + "gap": 2 + }, + "endBinding": { + "elementId": "sc", + "focus": 0, + "gap": 2 + }, + "startArrowhead": null, + "endArrowhead": null + }, + { + "type": "line", + "id": "e_hc_h", + "x": 520.0, + "y": 630, + "width": 0, + "height": 0, + "strokeColor": "#64748b", + "backgroundColor": "#64748b", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1171, + "version": 1, + "versionNonce": 1172, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "points": [ + [ + 0.0, + 0 + ], + [ + -6.2000000000000455, + -10.0 + ], + [ + 6.2000000000000455, + -10.0 + ], + [ + 0, + 0 + ] + ], + "roundness": null + }, + { + "type": "arrow", + "id": "e_de0", + "x": 640, + "y": 278.0, + "width": 205, + "height": -104.0, + "strokeColor": "#64748b", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1173, + "version": 1, + "versionNonce": 1174, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "points": [ + [ + 0, + 0 + ], + [ + 205, + -104.0 + ] + ], + "startBinding": { + "elementId": "fc", + "focus": 0, + "gap": 2 + }, + "endBinding": { + "elementId": "de0", + "focus": 0, + "gap": 2 + }, + "startArrowhead": null, + "endArrowhead": null + }, + { + "type": "line", + "id": "e_de0_h", + "x": 845, + "y": 174.0, + "width": 0, + "height": 0, + "strokeColor": "#64748b", + "backgroundColor": "#64748b", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1175, + "version": 1, + "versionNonce": 1176, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "points": [ + [ + 0, + 0.0 + ], + [ + -6.112975105396686, + 10.053434008377423 + ], + [ + -11.723060997739253, + -1.0049083755669415 + ], + [ + 0, + 0 + ] + ], + "roundness": null + }, + { + "type": "arrow", + "id": "e_de1", + "x": 640, + "y": 290.0, + "width": 205, + "height": -50.0, + "strokeColor": "#64748b", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1177, + "version": 1, + "versionNonce": 1178, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "points": [ + [ + 0, + 0 + ], + [ + 205, + -50.0 + ] + ], + "startBinding": { + "elementId": "fc", + "focus": 0, + "gap": 2 + }, + "endBinding": { + "elementId": "de1", + "focus": 0, + "gap": 2 + }, + "startArrowhead": null, + "endArrowhead": null + }, + { + "type": "line", + "id": "e_de1_h", + "x": 845, + "y": 240.0, + "width": 0, + "height": 0, + "strokeColor": "#64748b", + "backgroundColor": "#64748b", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1179, + "version": 1, + "versionNonce": 1180, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "points": [ + [ + 0, + 0.0 + ], + [ + -8.246075070646953, + 8.392987902365462 + ], + [ + -11.184331705015552, + -3.6538642985453293 + ], + [ + 0, + 0 + ] + ], + "roundness": null + }, + { + "type": "arrow", + "id": "e_de2", + "x": 640, + "y": 302.0, + "width": 205, + "height": 4.0, + "strokeColor": "#64748b", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1181, + "version": 1, + "versionNonce": 1182, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "points": [ + [ + 0, + 0 + ], + [ + 205, + 4.0 + ] + ], + "startBinding": { + "elementId": "fc", + "focus": 0, + "gap": 2 + }, + "endBinding": { + "elementId": "de2", + "focus": 0, + "gap": 2 + }, + "startArrowhead": null, + "endArrowhead": null + }, + { + "type": "line", + "id": "e_de2_h", + "x": 845, + "y": 306.0, + "width": 0, + "height": 0, + "strokeColor": "#64748b", + "backgroundColor": "#64748b", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1183, + "version": 1, + "versionNonce": 1184, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "points": [ + [ + 0, + 0.0 + ], + [ + -10.119049501670133, + 6.003735269209528 + ], + [ + -9.877144327541146, + -6.393904904901433 + ], + [ + 0, + 0 + ] + ], + "roundness": null + }, + { + "type": "arrow", + "id": "e_de3", + "x": 640, + "y": 314.0, + "width": 205, + "height": 58.0, + "strokeColor": "#64748b", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1185, + "version": 1, + "versionNonce": 1186, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "points": [ + [ + 0, + 0 + ], + [ + 205, + 58.0 + ] + ], + "startBinding": { + "elementId": "fc", + "focus": 0, + "gap": 2 + }, + "endBinding": { + "elementId": "de3", + "focus": 0, + "gap": 2 + }, + "startArrowhead": null, + "endArrowhead": null + }, + { + "type": "line", + "id": "e_de3_h", + "x": 845, + "y": 372.0, + "width": 0, + "height": 0, + "strokeColor": "#64748b", + "backgroundColor": "#64748b", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1187, + "version": 1, + "versionNonce": 1188, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "points": [ + [ + 0, + 0.0 + ], + [ + -11.310183398971162, + 3.243416637072187 + ], + [ + -7.934401567737837, + -8.688226042287397 + ], + [ + 0, + 0 + ] + ], + "roundness": null + }, + { + "type": "arrow", + "id": "e_de4", + "x": 640, + "y": 326.0, + "width": 205, + "height": 112.0, + "strokeColor": "#64748b", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1189, + "version": 1, + "versionNonce": 1190, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "points": [ + [ + 0, + 0 + ], + [ + 205, + 112.0 + ] + ], + "startBinding": { + "elementId": "fc", + "focus": 0, + "gap": 2 + }, + "endBinding": { + "elementId": "de4", + "focus": 0, + "gap": 2 + }, + "startArrowhead": null, + "endArrowhead": null + }, + { + "type": "line", + "id": "e_de4_h", + "x": 845, + "y": 438.0, + "width": 0, + "height": 0, + "strokeColor": "#64748b", + "backgroundColor": "#64748b", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1191, + "version": 1, + "versionNonce": 1192, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "points": [ + [ + 0, + 0.0 + ], + [ + -11.748283365385305, + 0.6464038726763874 + ], + [ + -5.803080064901678, + -10.235441454101533 + ], + [ + 0, + 0 + ] + ], + "roundness": null + }, + { + "type": "arrow", + "id": "e_ms0", + "x": 640, + "y": 338.0, + "width": 205, + "height": 196.0, + "strokeColor": "#64748b", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1193, + "version": 1, + "versionNonce": 1194, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "points": [ + [ + 0, + 0 + ], + [ + 205, + 196.0 + ] + ], + "startBinding": { + "elementId": "fc", + "focus": 0, + "gap": 2 + }, + "endBinding": { + "elementId": "ms0", + "focus": 0, + "gap": 2 + }, + "startArrowhead": null, + "endArrowhead": null + }, + { + "type": "line", + "id": "e_ms0_h", + "x": 845, + "y": 534.0, + "width": 0, + "height": 0, + "strokeColor": "#64748b", + "backgroundColor": "#64748b", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1195, + "version": 1, + "versionNonce": 1196, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "points": [ + [ + 0, + 0.0 + ], + [ + -11.512537487962504, + -2.429296315449619 + ], + [ + -2.9433622121006238, + -11.391954129488795 + ], + [ + 0, + 0 + ] + ], + "roundness": null + }, + { + "type": "arrow", + "id": "e_ms1", + "x": 640, + "y": 346.0, + "width": 205, + "height": 254.0, + "strokeColor": "#64748b", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1197, + "version": 1, + "versionNonce": 1198, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "points": [ + [ + 0, + 0 + ], + [ + 205, + 254.0 + ] + ], + "startBinding": { + "elementId": "fc", + "focus": 0, + "gap": 2 + }, + "endBinding": { + "elementId": "ms1", + "focus": 0, + "gap": 2 + }, + "startArrowhead": null, + "endArrowhead": null + }, + { + "type": "line", + "id": "e_ms1_h", + "x": 845, + "y": 600.0, + "width": 0, + "height": 0, + "strokeColor": "#64748b", + "backgroundColor": "#64748b", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1199, + "version": 1, + "versionNonce": 1200, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "points": [ + [ + 0, + 0.0 + ], + [ + -11.105181598440822, + -3.8877939330229765 + ], + [ + -1.4558547493872993, + -11.67563646867643 + ], + [ + 0, + 0 + ] + ], + "roundness": null + }, + { + "type": "arrow", + "id": "e_sc", + "x": 400, + "y": 340.0, + "width": -200, + "height": -20.0, + "strokeColor": "#64748b", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1201, + "version": 1, + "versionNonce": 1202, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "points": [ + [ + 0, + 0 + ], + [ + -200, + -20.0 + ] + ], + "startBinding": { + "elementId": "fc", + "focus": 0, + "gap": 2 + }, + "endBinding": { + "elementId": "an", + "focus": 0, + "gap": 2 + }, + "startArrowhead": null, + "endArrowhead": null + }, + { + "type": "line", + "id": "e_sc_h", + "x": 200, + "y": 320.0, + "width": 0, + "height": 0, + "strokeColor": "#64748b", + "backgroundColor": "#64748b", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1203, + "version": 1, + "versionNonce": 1204, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "points": [ + [ + 0, + 0.0 + ], + [ + 10.567294960030097, + -5.174193389091954 + ], + [ + 9.333448844169709, + 7.164267769511923 + ], + [ + 0, + 0 + ] + ], + "roundness": null + }, + { + "type": "arrow", + "id": "e_sp", + "x": 412.0, + "y": 350, + "width": -202.0, + "height": 50.0, + "strokeColor": "#64748b", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1205, + "version": 1, + "versionNonce": 1206, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "points": [ + [ + 0, + 0 + ], + [ + -202.0, + 50.0 + ] + ], + "startBinding": { + "elementId": "fc", + "focus": 0, + "gap": 2 + }, + "endBinding": { + "elementId": "sp", + "focus": 0, + "gap": 2 + }, + "startArrowhead": null, + "endArrowhead": null + }, + { + "type": "line", + "id": "e_sp_h", + "x": 210.0, + "y": 400.0, + "width": 0, + "height": 0, + "strokeColor": "#64748b", + "backgroundColor": "#64748b", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1207, + "version": 1, + "versionNonce": 1208, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "points": [ + [ + 0.0, + 0.0 + ], + [ + 8.217356019995549, + -8.421108005520637 + ], + [ + 11.196748261163549, + 3.615636648798045 + ], + [ + 0, + 0 + ] + ], + "roundness": null + }, + { + "type": "arrow", + "id": "e_sn0", + "x": 424.0, + "y": 350, + "width": -279.0, + "height": 149.0, + "strokeColor": "#64748b", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1209, + "version": 1, + "versionNonce": 1210, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "points": [ + [ + 0, + 0 + ], + [ + -279.0, + 149.0 + ] + ], + "startBinding": { + "elementId": "fc", + "focus": 0, + "gap": 2 + }, + "endBinding": { + "elementId": "md_ct", + "focus": 0, + "gap": 2 + }, + "startArrowhead": null, + "endArrowhead": null + }, + { + "type": "line", + "id": "e_sn0_h", + "x": 145.0, + "y": 499.0, + "width": 0, + "height": 0, + "strokeColor": "#64748b", + "backgroundColor": "#64748b", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1211, + "version": 1, + "versionNonce": 1212, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "points": [ + [ + 0.0, + 0.0 + ], + [ + 5.9002036567105165, + -10.179764084169165 + ], + [ + 11.741601296908925, + 0.7581549870749313 + ], + [ + 0, + 0 + ] + ], + "roundness": null + }, + { + "type": "arrow", + "id": "e_sn1", + "x": 443.2, + "y": 350, + "width": -298.2, + "height": 197.0, + "strokeColor": "#64748b", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1213, + "version": 1, + "versionNonce": 1214, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "points": [ + [ + 0, + 0 + ], + [ + -298.2, + 197.0 + ] + ], + "startBinding": { + "elementId": "fc", + "focus": 0, + "gap": 2 + }, + "endBinding": { + "elementId": "md_xr", + "focus": 0, + "gap": 2 + }, + "startArrowhead": null, + "endArrowhead": null + }, + { + "type": "line", + "id": "e_sn1_h", + "x": 145.0, + "y": 547.0, + "width": 0, + "height": 0, + "strokeColor": "#64748b", + "backgroundColor": "#64748b", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1215, + "version": 1, + "versionNonce": 1216, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "points": [ + [ + 0.0, + 0.0 + ], + [ + 4.926181777142375, + -10.68516415870863 + ], + [ + 11.761168057503227, + -0.3390072612282893 + ], + [ + 0, + 0 + ] + ], + "roundness": null + }, + { + "type": "arrow", + "id": "e_sn2", + "x": 462.4, + "y": 350, + "width": -317.4, + "height": 245.0, + "strokeColor": "#64748b", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1217, + "version": 1, + "versionNonce": 1218, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "points": [ + [ + 0, + 0 + ], + [ + -317.4, + 245.0 + ] + ], + "startBinding": { + "elementId": "fc", + "focus": 0, + "gap": 2 + }, + "endBinding": { + "elementId": "md_mr", + "focus": 0, + "gap": 2 + }, + "startArrowhead": null, + "endArrowhead": null + }, + { + "type": "line", + "id": "e_sn2_h", + "x": 145.0, + "y": 595.0, + "width": 0, + "height": 0, + "strokeColor": "#64748b", + "backgroundColor": "#64748b", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1219, + "version": 1, + "versionNonce": 1220, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "points": [ + [ + 0.0, + 0.0 + ], + [ + 4.127608686525235, + -11.018295990348065 + ], + [ + 11.704451701427757, + -1.2024185498172528 + ], + [ + 0, + 0 + ] + ], + "roundness": null + }, + { + "type": "rectangle", + "id": "l_gr_fc", + "x": 471.0, + "y": 167.875, + "width": 98.0, + "height": 24.25, + "strokeColor": "transparent", + "backgroundColor": "#ffffff", + "fillStyle": "solid", + "strokeWidth": 0, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1221, + "version": 1, + "versionNonce": 1222, + "isDeleted": false, + "groupIds": [], + "boundElements": [], + "link": null, + "locked": false, + "roundness": { + "type": 3 + } + }, + { + "type": "text", + "id": "l_gr_fc_t", + "x": 477.0, + "y": 171.875, + "width": 86.0, + "height": 16.25, + "strokeColor": "#64748b", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1223, + "version": 1, + "versionNonce": 1224, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "SUBTYPE_OF", + "originalText": "SUBTYPE_OF", + "fontSize": 13, + "fontFamily": 2, + "textAlign": "center", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 + }, + { + "type": "rectangle", + "id": "l_gr_gn", + "x": 203.0, + "y": 47.875, + "width": 98.0, + "height": 24.25, + "strokeColor": "transparent", + "backgroundColor": "#ffffff", + "fillStyle": "solid", + "strokeWidth": 0, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1225, + "version": 1, + "versionNonce": 1226, + "isDeleted": false, + "groupIds": [], + "boundElements": [], + "link": null, + "locked": false, + "roundness": { + "type": 3 + } + }, + { + "type": "text", + "id": "l_gr_gn_t", + "x": 209.0, + "y": 51.875, + "width": 86.0, + "height": 16.25, + "strokeColor": "#64748b", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1227, + "version": 1, + "versionNonce": 1228, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "SUBTYPE_OF", + "originalText": "SUBTYPE_OF", + "fontSize": 13, + "fontFamily": 2, + "textAlign": "center", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 + }, + { + "type": "rectangle", + "id": "l_mma_gn", + "x": 223.65, + "y": 170.875, + "width": 136.7, + "height": 24.25, + "strokeColor": "transparent", + "backgroundColor": "#ffffff", + "fillStyle": "solid", + "strokeWidth": 0, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1229, + "version": 1, + "versionNonce": 1230, + "isDeleted": false, + "groupIds": [], + "boundElements": [], + "link": null, + "locked": false, + "roundness": { + "type": 3 + } + }, + { + "type": "text", + "id": "l_mma_gn_t", + "x": 229.65, + "y": 174.875, + "width": 124.7, + "height": 16.25, + "strokeColor": "#64748b", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1231, + "version": 1, + "versionNonce": 1232, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "MAY_MANIFEST_AS", + "originalText": "MAY_MANIFEST_AS", + "fontSize": 13, + "fontFamily": 2, + "textAlign": "center", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 + }, + { + "type": "rectangle", + "id": "l_mma_neo", + "x": 223.65, + "y": 229.875, + "width": 136.7, + "height": 24.25, + "strokeColor": "transparent", + "backgroundColor": "#ffffff", + "fillStyle": "solid", + "strokeWidth": 0, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1233, + "version": 1, + "versionNonce": 1234, + "isDeleted": false, + "groupIds": [], + "boundElements": [], + "link": null, + "locked": false, + "roundness": { + "type": 3 + } + }, + { + "type": "text", + "id": "l_mma_neo_t", + "x": 229.65, + "y": 233.875, + "width": 124.7, + "height": 16.25, + "strokeColor": "#64748b", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1235, + "version": 1, + "versionNonce": 1236, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "MAY_MANIFEST_AS", + "originalText": "MAY_MANIFEST_AS", + "fontSize": 13, + "fontFamily": 2, + "textAlign": "center", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 + }, + { + "type": "rectangle", + "id": "l_e_asb_lr", + "x": 534.8400658135573, + "y": 201.29556210090942, + "width": 106.7, + "height": 24.25, + "strokeColor": "transparent", + "backgroundColor": "#ffffff", + "fillStyle": "solid", + "strokeWidth": 0, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1237, + "version": 1, + "versionNonce": 1238, + "isDeleted": false, + "groupIds": [], + "boundElements": [], + "link": null, + "locked": false, + "roundness": { + "type": 3 + } + }, + { + "type": "text", + "id": "l_e_asb_lr_t", + "x": 540.8400658135573, + "y": 205.29556210090942, + "width": 94.7, + "height": 16.25, + "strokeColor": "#64748b", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1239, + "version": 1, + "versionNonce": 1240, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "ASSESSED_BY", + "originalText": "ASSESSED_BY", + "fontSize": 13, + "fontFamily": 2, + "textAlign": "center", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 + }, + { + "type": "rectangle", + "id": "l_e_asb_fl", + "x": 729.0899178053726, + "y": 142.9543599450338, + "width": 106.7, + "height": 24.25, + "strokeColor": "transparent", + "backgroundColor": "#ffffff", + "fillStyle": "solid", + "strokeWidth": 0, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1241, + "version": 1, + "versionNonce": 1242, + "isDeleted": false, + "groupIds": [], + "boundElements": [], + "link": null, + "locked": false, + "roundness": { + "type": 3 + } + }, + { + "type": "text", + "id": "l_e_asb_fl_t", + "x": 735.0899178053726, + "y": 146.9543599450338, + "width": 94.7, + "height": 16.25, + "strokeColor": "#64748b", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1243, + "version": 1, + "versionNonce": 1244, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "ASSESSED_BY", + "originalText": "ASSESSED_BY", + "fontSize": 13, + "fontFamily": 2, + "textAlign": "center", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 + }, + { + "type": "rectangle", + "id": "l_st1", + "x": 361.0, + "y": 435.875, + "width": 98.0, + "height": 24.25, + "strokeColor": "transparent", + "backgroundColor": "#ffffff", + "fillStyle": "solid", + "strokeWidth": 0, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1245, + "version": 1, + "versionNonce": 1246, + "isDeleted": false, + "groupIds": [], + "boundElements": [], + "link": null, + "locked": false, + "roundness": { + "type": 3 + } + }, + { + "type": "text", + "id": "l_st1_t", + "x": 367.0, + "y": 439.875, + "width": 86.0, + "height": 16.25, + "strokeColor": "#64748b", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1247, + "version": 1, + "versionNonce": 1248, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "SUBTYPE_OF", + "originalText": "SUBTYPE_OF", + "fontSize": 13, + "fontFamily": 2, + "textAlign": "center", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 + }, + { + "type": "rectangle", + "id": "l_st2", + "x": 471.0, + "y": 412.875, + "width": 98.0, + "height": 24.25, + "strokeColor": "transparent", + "backgroundColor": "#ffffff", + "fillStyle": "solid", + "strokeWidth": 0, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1249, + "version": 1, + "versionNonce": 1250, + "isDeleted": false, + "groupIds": [], + "boundElements": [], + "link": null, + "locked": false, + "roundness": { + "type": 3 + } + }, + { + "type": "text", + "id": "l_st2_t", + "x": 477.0, + "y": 416.875, + "width": 86.0, + "height": 16.25, + "strokeColor": "#64748b", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1251, + "version": 1, + "versionNonce": 1252, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "SUBTYPE_OF", + "originalText": "SUBTYPE_OF", + "fontSize": 13, + "fontFamily": 2, + "textAlign": "center", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 + }, + { + "type": "rectangle", + "id": "l_st3", + "x": 543.0, + "y": 367.875, + "width": 98.0, + "height": 24.25, + "strokeColor": "transparent", + "backgroundColor": "#ffffff", + "fillStyle": "solid", + "strokeWidth": 0, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1253, + "version": 1, + "versionNonce": 1254, + "isDeleted": false, + "groupIds": [], + "boundElements": [], + "link": null, + "locked": false, + "roundness": { + "type": 3 + } + }, + { + "type": "text", + "id": "l_st3_t", + "x": 549.0, + "y": 371.875, + "width": 86.0, + "height": 16.25, + "strokeColor": "#64748b", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1255, + "version": 1, + "versionNonce": 1256, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "SUBTYPE_OF", + "originalText": "SUBTYPE_OF", + "fontSize": 13, + "fontFamily": 2, + "textAlign": "center", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 + }, + { + "type": "rectangle", + "id": "l_hc", + "x": 559.75, + "y": 592.875, + "width": 130.5, + "height": 24.25, + "strokeColor": "transparent", + "backgroundColor": "#ffffff", + "fillStyle": "solid", + "strokeWidth": 0, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1257, + "version": 1, + "versionNonce": 1258, + "isDeleted": false, + "groupIds": [], + "boundElements": [], + "link": null, + "locked": false, + "roundness": { + "type": 3 + } + }, + { + "type": "text", + "id": "l_hc_t", + "x": 565.75, + "y": 596.875, + "width": 118.5, + "height": 16.25, + "strokeColor": "#64748b", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1259, + "version": 1, + "versionNonce": 1260, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "HAS_COMPONENT", + "originalText": "HAS_COMPONENT", + "fontSize": 13, + "fontFamily": 2, + "textAlign": "center", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 + }, + { + "type": "rectangle", + "id": "l_de0", + "x": 668.35, + "y": 213.875, + "width": 147.3, + "height": 24.25, + "strokeColor": "transparent", + "backgroundColor": "#ffffff", + "fillStyle": "solid", + "strokeWidth": 0, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1261, + "version": 1, + "versionNonce": 1262, + "isDeleted": false, + "groupIds": [], + "boundElements": [], + "link": null, + "locked": false, + "roundness": { + "type": 3 + } + }, + { + "type": "text", + "id": "l_de0_t", + "x": 674.35, + "y": 217.875, + "width": 135.3, + "height": 16.25, + "strokeColor": "#64748b", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1263, + "version": 1, + "versionNonce": 1264, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "HAS_DATA_ELEMENT", + "originalText": "HAS_DATA_ELEMENT", + "fontSize": 13, + "fontFamily": 2, + "textAlign": "center", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 + }, + { + "type": "rectangle", + "id": "l_de1", + "x": 668.35, + "y": 252.875, + "width": 147.3, + "height": 24.25, + "strokeColor": "transparent", + "backgroundColor": "#ffffff", + "fillStyle": "solid", + "strokeWidth": 0, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1265, + "version": 1, + "versionNonce": 1266, + "isDeleted": false, + "groupIds": [], + "boundElements": [], + "link": null, + "locked": false, + "roundness": { + "type": 3 + } + }, + { + "type": "text", + "id": "l_de1_t", + "x": 674.35, + "y": 256.875, + "width": 135.3, + "height": 16.25, + "strokeColor": "#64748b", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1267, + "version": 1, + "versionNonce": 1268, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "HAS_DATA_ELEMENT", + "originalText": "HAS_DATA_ELEMENT", + "fontSize": 13, + "fontFamily": 2, + "textAlign": "center", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 + }, + { + "type": "rectangle", + "id": "l_de2", + "x": 668.35, + "y": 291.875, + "width": 147.3, + "height": 24.25, + "strokeColor": "transparent", + "backgroundColor": "#ffffff", + "fillStyle": "solid", + "strokeWidth": 0, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1269, + "version": 1, + "versionNonce": 1270, + "isDeleted": false, + "groupIds": [], + "boundElements": [], + "link": null, + "locked": false, + "roundness": { + "type": 3 + } + }, + { + "type": "text", + "id": "l_de2_t", + "x": 674.35, + "y": 295.875, + "width": 135.3, + "height": 16.25, + "strokeColor": "#64748b", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1271, + "version": 1, + "versionNonce": 1272, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "HAS_DATA_ELEMENT", + "originalText": "HAS_DATA_ELEMENT", + "fontSize": 13, + "fontFamily": 2, + "textAlign": "center", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 + }, + { + "type": "rectangle", + "id": "l_de3", + "x": 668.35, + "y": 330.875, + "width": 147.3, + "height": 24.25, + "strokeColor": "transparent", + "backgroundColor": "#ffffff", + "fillStyle": "solid", + "strokeWidth": 0, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1273, + "version": 1, + "versionNonce": 1274, + "isDeleted": false, + "groupIds": [], + "boundElements": [], + "link": null, + "locked": false, + "roundness": { + "type": 3 + } + }, + { + "type": "text", + "id": "l_de3_t", + "x": 674.35, + "y": 334.875, + "width": 135.3, + "height": 16.25, + "strokeColor": "#64748b", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1275, + "version": 1, + "versionNonce": 1276, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "HAS_DATA_ELEMENT", + "originalText": "HAS_DATA_ELEMENT", + "fontSize": 13, + "fontFamily": 2, + "textAlign": "center", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 + }, + { + "type": "rectangle", + "id": "l_de4", + "x": 668.35, + "y": 369.875, + "width": 147.3, + "height": 24.25, + "strokeColor": "transparent", + "backgroundColor": "#ffffff", + "fillStyle": "solid", + "strokeWidth": 0, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1277, + "version": 1, + "versionNonce": 1278, + "isDeleted": false, + "groupIds": [], + "boundElements": [], + "link": null, + "locked": false, + "roundness": { + "type": 3 + } + }, + { + "type": "text", + "id": "l_de4_t", + "x": 674.35, + "y": 373.875, + "width": 135.3, + "height": 16.25, + "strokeColor": "#64748b", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1279, + "version": 1, + "versionNonce": 1280, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "HAS_DATA_ELEMENT", + "originalText": "HAS_DATA_ELEMENT", + "fontSize": 13, + "fontFamily": 2, + "textAlign": "center", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 + }, + { + "type": "rectangle", + "id": "l_ms0", + "x": 653.45, + "y": 408.875, + "width": 147.1, + "height": 24.25, + "strokeColor": "transparent", + "backgroundColor": "#ffffff", + "fillStyle": "solid", + "strokeWidth": 0, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1281, + "version": 1, + "versionNonce": 1282, + "isDeleted": false, + "groupIds": [], + "boundElements": [], + "link": null, + "locked": false, + "roundness": { + "type": 3 + } + }, + { + "type": "text", + "id": "l_ms0_t", + "x": 659.45, + "y": 412.875, + "width": 135.1, + "height": 16.25, + "strokeColor": "#64748b", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1283, + "version": 1, + "versionNonce": 1284, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "HAS_MEASUREMENT", + "originalText": "HAS_MEASUREMENT", + "fontSize": 13, + "fontFamily": 2, + "textAlign": "center", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 + }, + { + "type": "rectangle", + "id": "l_ms1", + "x": 658.45, + "y": 447.875, + "width": 147.1, + "height": 24.25, + "strokeColor": "transparent", + "backgroundColor": "#ffffff", + "fillStyle": "solid", + "strokeWidth": 0, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1285, + "version": 1, + "versionNonce": 1286, + "isDeleted": false, + "groupIds": [], + "boundElements": [], + "link": null, + "locked": false, + "roundness": { + "type": 3 + } + }, + { + "type": "text", + "id": "l_ms1_t", + "x": 664.45, + "y": 451.875, + "width": 135.1, + "height": 16.25, + "strokeColor": "#64748b", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1287, + "version": 1, + "versionNonce": 1288, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "HAS_MEASUREMENT", + "originalText": "HAS_MEASUREMENT", + "fontSize": 13, + "fontFamily": 2, + "textAlign": "center", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 + }, + { + "type": "rectangle", + "id": "l_sc", + "x": 254.05, + "y": 317.875, + "width": 91.9, + "height": 24.25, + "strokeColor": "transparent", + "backgroundColor": "#ffffff", + "fillStyle": "solid", + "strokeWidth": 0, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1289, + "version": 1, + "versionNonce": 1290, + "isDeleted": false, + "groupIds": [], + "boundElements": [], + "link": null, + "locked": false, + "roundness": { + "type": 3 + } + }, + { + "type": "text", + "id": "l_sc_t", + "x": 260.05, + "y": 321.875, + "width": 79.9, + "height": 16.25, + "strokeColor": "#64748b", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1291, + "version": 1, + "versionNonce": 1292, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "SCOPED_TO", + "originalText": "SCOPED_TO", + "fontSize": 13, + "fontFamily": 2, + "textAlign": "center", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 + }, + { + "type": "rectangle", + "id": "l_sp", + "x": 246.25, + "y": 362.875, + "width": 129.5, + "height": 24.25, + "strokeColor": "transparent", + "backgroundColor": "#ffffff", + "fillStyle": "solid", + "strokeWidth": 0, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1293, + "version": 1, + "versionNonce": 1294, + "isDeleted": false, + "groupIds": [], + "boundElements": [], + "link": null, + "locked": false, + "roundness": { + "type": 3 + } + }, + { + "type": "text", + "id": "l_sp_t", + "x": 252.25, + "y": 366.875, + "width": 117.5, + "height": 16.25, + "strokeColor": "#64748b", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1295, + "version": 1, + "versionNonce": 1296, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "IN_SUBSPECIALTY", + "originalText": "IN_SUBSPECIALTY", + "fontSize": 13, + "fontFamily": 2, + "textAlign": "center", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 + }, + { + "type": "rectangle", + "id": "l_sn0", + "x": 269.77, + "y": 400.455, + "width": 74.1, + "height": 24.25, + "strokeColor": "transparent", + "backgroundColor": "#ffffff", + "fillStyle": "solid", + "strokeWidth": 0, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1297, + "version": 1, + "versionNonce": 1298, + "isDeleted": false, + "groupIds": [], + "boundElements": [], + "link": null, + "locked": false, + "roundness": { + "type": 3 + } + }, + { + "type": "text", + "id": "l_sn0_t", + "x": 275.77, + "y": 404.455, + "width": 62.1, + "height": 16.25, + "strokeColor": "#64748b", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1299, + "version": 1, + "versionNonce": 1300, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "SEEN_ON", + "originalText": "SEEN_ON", + "fontSize": 13, + "fontFamily": 2, + "textAlign": "center", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 + }, + { + "type": "rectangle", + "id": "l_sn1", + "x": 257.05, + "y": 436.375, + "width": 74.1, + "height": 24.25, + "strokeColor": "transparent", + "backgroundColor": "#ffffff", + "fillStyle": "solid", + "strokeWidth": 0, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1301, + "version": 1, + "versionNonce": 1302, + "isDeleted": false, + "groupIds": [], + "boundElements": [], + "link": null, + "locked": false, + "roundness": { + "type": 3 + } + }, + { + "type": "text", + "id": "l_sn1_t", + "x": 263.05, + "y": 440.375, + "width": 62.1, + "height": 16.25, + "strokeColor": "#64748b", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1303, + "version": 1, + "versionNonce": 1304, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "SEEN_ON", + "originalText": "SEEN_ON", + "fontSize": 13, + "fontFamily": 2, + "textAlign": "center", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 + }, + { + "type": "rectangle", + "id": "l_sn2", + "x": 209.51799999999997, + "y": 504.475, + "width": 74.1, + "height": 24.25, + "strokeColor": "transparent", + "backgroundColor": "#ffffff", + "fillStyle": "solid", + "strokeWidth": 0, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1305, + "version": 1, + "versionNonce": 1306, + "isDeleted": false, + "groupIds": [], + "boundElements": [], + "link": null, + "locked": false, + "roundness": { + "type": 3 + } + }, + { + "type": "text", + "id": "l_sn2_t", + "x": 215.51799999999997, + "y": 508.475, + "width": 62.1, + "height": 16.25, + "strokeColor": "#64748b", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1307, + "version": 1, + "versionNonce": 1308, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "SEEN_ON", + "originalText": "SEEN_ON", + "fontSize": 13, + "fontFamily": 2, + "textAlign": "center", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 + }, + { + "type": "rectangle", + "id": "leg", + "x": 15, + "y": 735, + "width": 1020, + "height": 52, + "strokeColor": "#e2e8f0", + "backgroundColor": "#f8fafc", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1309, + "version": 1, + "versionNonce": 1310, + "isDeleted": false, + "groupIds": [], + "boundElements": [], + "link": null, + "locked": false, + "roundness": { + "type": 3 + } + }, + { + "type": "rectangle", + "id": "lg0", + "x": 32, + "y": 753, + "width": 22, + "height": 16, + "strokeColor": "#059669", + "backgroundColor": "#d1fae5", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1311, + "version": 1, + "versionNonce": 1312, + "isDeleted": false, + "groupIds": [], + "boundElements": [], + "link": null, + "locked": false, + "roundness": { + "type": 3 + } + }, + { + "type": "text", + "id": "lg0_t", + "x": 62, + "y": 754, + "width": 63.6, + "height": 13.75, + "strokeColor": "#64748b", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1313, + "version": 1, + "versionNonce": 1314, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "FindingClass", + "originalText": "FindingClass", + "fontSize": 11, + "fontFamily": 2, + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 + }, + { + "type": "rectangle", + "id": "lg1", + "x": 141.6, + "y": 753, + "width": 22, + "height": 16, + "strokeColor": "#10b981", + "backgroundColor": "#ecfdf5", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "dashed", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1315, + "version": 1, + "versionNonce": 1316, + "isDeleted": false, + "groupIds": [], + "boundElements": [], + "link": null, + "locked": false, + "roundness": { + "type": 3 + } + }, + { + "type": "text", + "id": "lg1_t", + "x": 171.6, + "y": 754, + "width": 45.3, + "height": 13.75, + "strokeColor": "#64748b", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1317, + "version": 1, + "versionNonce": 1318, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "Grouping", + "originalText": "Grouping", + "fontSize": 11, + "fontFamily": 2, + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 + }, + { + "type": "rectangle", + "id": "lg2", + "x": 232.89999999999998, + "y": 753, + "width": 22, + "height": 16, + "strokeColor": "#059669", + "backgroundColor": "#6ee7b7", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1319, + "version": 1, + "versionNonce": 1320, + "isDeleted": false, + "groupIds": [], + "boundElements": [], + "link": null, + "locked": false, + "roundness": { + "type": 3 + } + }, + { + "type": "text", + "id": "lg2_t", + "x": 262.9, + "y": 754, + "width": 48.3, + "height": 13.75, + "strokeColor": "#64748b", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1321, + "version": 1, + "versionNonce": 1322, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "Diagnosis", + "originalText": "Diagnosis", + "fontSize": 11, + "fontFamily": 2, + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 + }, + { + "type": "ellipse", + "id": "lg3", + "x": 326.2, + "y": 752, + "width": 26, + "height": 18, + "strokeColor": "#7e22ce", + "backgroundColor": "#e9d5ff", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1323, + "version": 1, + "versionNonce": 1324, + "isDeleted": false, + "groupIds": [], + "boundElements": [], + "link": null, + "locked": false + }, + { + "type": "text", + "id": "lg3_t", + "x": 361.2, + "y": 754, + "width": 100.3, + "height": 13.75, + "strokeColor": "#64748b", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1325, + "version": 1, + "versionNonce": 1326, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "AssessmentScheme", + "originalText": "AssessmentScheme", + "fontSize": 11, + "fontFamily": 2, + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 + }, + { + "type": "rectangle", + "id": "lg4", + "x": 477.5, + "y": 753, + "width": 22, + "height": 16, + "strokeColor": "#1d4ed8", + "backgroundColor": "#bfdbfe", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1327, + "version": 1, + "versionNonce": 1328, + "isDeleted": false, + "groupIds": [], + "boundElements": [], + "link": null, + "locked": false, + "roundness": { + "type": 3 + } + }, + { + "type": "text", + "id": "lg4_t", + "x": 507.5, + "y": 754, + "width": 87.4, + "height": 13.75, + "strokeColor": "#64748b", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1329, + "version": 1, + "versionNonce": 1330, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "AnatomicLocation", + "originalText": "AnatomicLocation", + "fontSize": 11, + "fontFamily": 2, + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 + }, + { + "type": "rectangle", + "id": "lg5", + "x": 610.9, + "y": 753, + "width": 22, + "height": 16, + "strokeColor": "#6b7280", + "backgroundColor": "#e5e7eb", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1331, + "version": 1, + "versionNonce": 1332, + "isDeleted": false, + "groupIds": [], + "boundElements": [], + "link": null, + "locked": false, + "roundness": { + "type": 3 + } + }, + { + "type": "text", + "id": "lg5_t", + "x": 640.9, + "y": 754, + "width": 41.0, + "height": 13.75, + "strokeColor": "#64748b", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1333, + "version": 1, + "versionNonce": 1334, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "Modality", + "originalText": "Modality", + "fontSize": 11, + "fontFamily": 2, + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 + }, + { + "type": "rectangle", + "id": "lg6", + "x": 697.9, + "y": 753, + "width": 22, + "height": 16, + "strokeColor": "#be123c", + "backgroundColor": "#ffe4e6", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1335, + "version": 1, + "versionNonce": 1336, + "isDeleted": false, + "groupIds": [], + "boundElements": [], + "link": null, + "locked": false, + "roundness": { + "type": 3 + } + }, + { + "type": "text", + "id": "lg6_t", + "x": 727.9, + "y": 754, + "width": 63.6, + "height": 13.75, + "strokeColor": "#64748b", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1337, + "version": 1, + "versionNonce": 1338, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "DataElement", + "originalText": "DataElement", + "fontSize": 11, + "fontFamily": 2, + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 + }, + { + "type": "rectangle", + "id": "lg7", + "x": 807.5, + "y": 753, + "width": 22, + "height": 16, + "strokeColor": "#6d28d9", + "backgroundColor": "#ede9fe", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1339, + "version": 1, + "versionNonce": 1340, + "isDeleted": false, + "groupIds": [], + "boundElements": [], + "link": null, + "locked": false, + "roundness": { + "type": 3 + } + }, + { + "type": "text", + "id": "lg7_t", + "x": 837.5, + "y": 754, + "width": 67.3, + "height": 13.75, + "strokeColor": "#64748b", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1341, + "version": 1, + "versionNonce": 1342, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "Measurement", + "originalText": "Measurement", + "fontSize": 11, + "fontFamily": 2, + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 + }, + { + "type": "rectangle", + "id": "lg8", + "x": 920.8, + "y": 753, + "width": 22, + "height": 16, + "strokeColor": "#78748f", + "backgroundColor": "#e5e3ee", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1343, + "version": 1, + "versionNonce": 1344, + "isDeleted": false, + "groupIds": [], + "boundElements": [], + "link": null, + "locked": false, + "roundness": { + "type": 3 + } + }, + { + "type": "text", + "id": "lg8_t", + "x": 950.8, + "y": 754, + "width": 62.4, + "height": 13.75, + "strokeColor": "#64748b", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1345, + "version": 1, + "versionNonce": 1346, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "Subspecialty", + "originalText": "Subspecialty", + "fontSize": 11, + "fontFamily": 2, + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 + }, + { + "type": "text", + "id": "cap", + "x": 225.0, + "y": 799, + "width": 600, + "height": 13.75, + "strokeColor": "#64748b", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1347, + "version": 1, + "versionNonce": 1348, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "illustrative: reflects pending updates to the CDE graph", + "originalText": "illustrative: reflects pending updates to the CDE graph", + "fontSize": 11, + "fontFamily": 2, + "textAlign": "center", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 + } + ], + "appState": { + "viewBackgroundColor": "#ffffff", + "gridSize": null + }, + "files": {} +} \ No newline at end of file diff --git a/knowledge/drafts/nodule-neighborhood.svg b/knowledge/drafts/nodule-neighborhood.svg new file mode 100644 index 0000000..a1e1e76 --- /dev/null +++ b/knowledge/drafts/nodule-neighborhood.svg @@ -0,0 +1,2 @@ +pulmonary noduleFindingClasspulmonary parenchymal abnormalityGroupingpulmonary granulomaDiagnosispulmonary neoplasmDiagnosisLung-RADSAssessmentSchemeFleischner criteriaAssessmentSchemesolidpulmonary noduleFindingClasspart-solidpulmonary noduleFindingClassground glassnoduleFindingClasssolid component ofpart-solid pulmonary noduleFindingClasslungAnatomicLocationchest radiologySubspecialtyCTModalityXRModalityMRModalitypresenceDataElementcompositionDataElementmarginDataElementcalcificationDataElementinterval changeDataElementmean diameterMeasurementlong-axis diameterMeasurementSUBTYPE_OFSUBTYPE_OFMAY_MANIFEST_ASMAY_MANIFEST_ASASSESSED_BYASSESSED_BYSUBTYPE_OFSUBTYPE_OFSUBTYPE_OFHAS_COMPONENTHAS_DATA_ELEMENTHAS_DATA_ELEMENTHAS_DATA_ELEMENTHAS_DATA_ELEMENTHAS_DATA_ELEMENTHAS_MEASUREMENTHAS_MEASUREMENTSCOPED_TOIN_SUBSPECIALTYSEEN_ONSEEN_ONSEEN_ONFindingClassGroupingDiagnosisAssessmentSchemeAnatomicLocationModalityDataElementMeasurementSubspecialtyillustrative: reflects pending updates to the CDE graph \ No newline at end of file diff --git a/knowledge/drafts/pillars-a.excalidraw b/knowledge/drafts/pillars-a.excalidraw new file mode 100644 index 0000000..3efda21 --- /dev/null +++ b/knowledge/drafts/pillars-a.excalidraw @@ -0,0 +1,2317 @@ +{ + "type": "excalidraw", + "version": 2, + "source": "oidm-knowledge/tools/diagrams", + "elements": [ + { + "type": "rectangle", + "id": "band53", + "x": 0, + "y": 437.05, + "width": 880, + "height": 247.49999999999994, + "strokeColor": "#b45309", + "backgroundColor": "#fef3c7", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1105, + "version": 1, + "versionNonce": 1106, + "isDeleted": false, + "groupIds": [], + "boundElements": [], + "link": null, + "locked": false, + "roundness": { + "type": 3 + } + }, + { + "type": "rectangle", + "id": "band33", + "x": 0, + "y": 187.3, + "width": 880, + "height": 189.75, + "strokeColor": "#0f766e", + "backgroundColor": "#ccfbf1", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1065, + "version": 1, + "versionNonce": 1066, + "isDeleted": false, + "groupIds": [], + "boundElements": [], + "link": null, + "locked": false, + "roundness": { + "type": 3 + } + }, + { + "type": "rectangle", + "id": "band15", + "x": 0, + "y": 91.65, + "width": 880, + "height": 71.65, + "strokeColor": "#6d28d9", + "backgroundColor": "#ede9fe", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1029, + "version": 1, + "versionNonce": 1030, + "isDeleted": false, + "groupIds": [], + "boundElements": [], + "link": null, + "locked": false, + "roundness": { + "type": 3 + } + }, + { + "type": "rectangle", + "id": "panel1", + "x": 0, + "y": 0, + "width": 388.0, + "height": 67.65, + "strokeColor": "#be123c", + "backgroundColor": "#ffe4e6", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1001, + "version": 1, + "versionNonce": 1002, + "isDeleted": false, + "groupIds": [], + "boundElements": [], + "link": null, + "locked": false, + "roundness": { + "type": 3 + } + }, + { + "type": "rectangle", + "id": "panel2", + "x": 492.0, + "y": 0, + "width": 388.0, + "height": 67.65, + "strokeColor": "#15803d", + "backgroundColor": "#dcfce7", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1003, + "version": 1, + "versionNonce": 1004, + "isDeleted": false, + "groupIds": [], + "boundElements": [], + "link": null, + "locked": false, + "roundness": { + "type": 3 + } + }, + { + "type": "image", + "id": "bicon3", + "x": 18, + "y": 12.0, + "width": 28, + "height": 28, + "strokeColor": "transparent", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1005, + "version": 1, + "versionNonce": 1006, + "isDeleted": false, + "groupIds": [], + "boundElements": [], + "link": null, + "locked": false, + "fileId": "img_bicon3", + "status": "saved", + "scale": [ + 1, + 1 + ], + "roundness": null, + "crop": null + }, + { + "type": "text", + "id": "btitle4", + "x": 58, + "y": 14, + "width": 93.96, + "height": 22.5, + "strokeColor": "#881337", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1007, + "version": 1, + "versionNonce": 1008, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "Use Cases", + "originalText": "Use Cases", + "fontSize": 18, + "fontFamily": 2, + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 + }, + { + "type": "text", + "id": "bsub5", + "x": 58, + "y": 37.400000000000006, + "width": 211.11999999999998, + "height": 16.25, + "strokeColor": "#be123c", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1009, + "version": 1, + "versionNonce": 1010, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "what the project wants built", + "originalText": "what the project wants built", + "fontSize": 13, + "fontFamily": 2, + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 + }, + { + "type": "image", + "id": "bicon6", + "x": 510.0, + "y": 12.0, + "width": 28, + "height": 28, + "strokeColor": "transparent", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1011, + "version": 1, + "versionNonce": 1012, + "isDeleted": false, + "groupIds": [], + "boundElements": [], + "link": null, + "locked": false, + "fileId": "img_bicon6", + "status": "saved", + "scale": [ + 1, + 1 + ], + "roundness": null, + "crop": null + }, + { + "type": "text", + "id": "btitle7", + "x": 550.0, + "y": 14, + "width": 198.35999999999999, + "height": 22.5, + "strokeColor": "#14532d", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1013, + "version": 1, + "versionNonce": 1014, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "Sample Applications", + "originalText": "Sample Applications", + "fontSize": 18, + "fontFamily": 2, + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 + }, + { + "type": "text", + "id": "bsub8", + "x": 550.0, + "y": 37.400000000000006, + "width": 143.26, + "height": 16.25, + "strokeColor": "#15803d", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1015, + "version": 1, + "versionNonce": 1016, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "what has been built", + "originalText": "what has been built", + "fontSize": 13, + "fontFamily": 2, + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 + }, + { + "type": "line", + "id": "conn9", + "x": 390.0, + "y": 33.825, + "width": 100.0, + "height": 0, + "strokeColor": "#64748b", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1017, + "version": 1, + "versionNonce": 1018, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "points": [ + [ + 0, + 0 + ], + [ + 100.0, + 0 + ] + ] + }, + { + "type": "rectangle", + "id": "chip10", + "x": 389.53, + "y": 4.575000000000003, + "width": 100.94, + "height": 22.25, + "strokeColor": "transparent", + "backgroundColor": "#ffffff", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1019, + "version": 1, + "versionNonce": 1020, + "isDeleted": false, + "groupIds": [], + "boundElements": [], + "link": null, + "locked": false, + "roundness": { + "type": 3 + } + }, + { + "type": "text", + "id": "chipt11", + "x": 398.53, + "y": 7.575000000000003, + "width": 82.94, + "height": 16.25, + "strokeColor": "#64748b", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1021, + "version": 1, + "versionNonce": 1022, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "illustrates", + "originalText": "illustrates", + "fontSize": 13, + "fontFamily": 2, + "textAlign": "center", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 + }, + { + "type": "image", + "id": "bicon12", + "x": 18, + "y": 105.65, + "width": 28, + "height": 28, + "strokeColor": "transparent", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1023, + "version": 1, + "versionNonce": 1024, + "isDeleted": false, + "groupIds": [], + "boundElements": [], + "link": null, + "locked": false, + "fileId": "img_bicon12", + "status": "saved", + "scale": [ + 1, + 1 + ], + "roundness": null, + "crop": null + }, + { + "type": "text", + "id": "btitle13", + "x": 58, + "y": 107.65, + "width": 41.76, + "height": 22.5, + "strokeColor": "#4c1d95", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1025, + "version": 1, + "versionNonce": 1026, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "SDKs", + "originalText": "SDKs", + "fontSize": 18, + "fontFamily": 2, + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 + }, + { + "type": "text", + "id": "bsub14", + "x": 58, + "y": 131.05, + "width": 520.26, + "height": 16.25, + "strokeColor": "#6d28d9", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1027, + "version": 1, + "versionNonce": 1028, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "wrap the structures \u00b7 attach the shared knowledge \u00b7 support authoring", + "originalText": "wrap the structures \u00b7 attach the shared knowledge \u00b7 support authoring", + "fontSize": 13, + "fontFamily": 2, + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 + }, + { + "type": "image", + "id": "bicon16", + "x": 18, + "y": 203.3, + "width": 28, + "height": 28, + "strokeColor": "transparent", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1031, + "version": 1, + "versionNonce": 1032, + "isDeleted": false, + "groupIds": [], + "boundElements": [], + "link": null, + "locked": false, + "fileId": "img_bicon16", + "status": "saved", + "scale": [ + 1, + 1 + ], + "roundness": null, + "crop": null + }, + { + "type": "text", + "id": "btitle17", + "x": 58, + "y": 205.3, + "width": 174.0, + "height": 25.0, + "strokeColor": "#134e4a", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1033, + "version": 1, + "versionNonce": 1034, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "Data Structures", + "originalText": "Data Structures", + "fontSize": 20, + "fontFamily": 2, + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 + }, + { + "type": "text", + "id": "bsub18", + "x": 58, + "y": 231.3, + "width": 226.2, + "height": 16.25, + "strokeColor": "#0f766e", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1035, + "version": 1, + "versionNonce": 1036, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "this patient \u00b7 Patient Context", + "originalText": "this patient \u00b7 Patient Context", + "fontSize": 13, + "fontFamily": 2, + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 + }, + { + "type": "rectangle", + "id": "blk19", + "x": 20.0, + "y": 261.55, + "width": 195.0, + "height": 95.5, + "strokeColor": "#0f766e", + "backgroundColor": "#99f6e4", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1037, + "version": 1, + "versionNonce": 1038, + "isDeleted": false, + "groupIds": [], + "boundElements": [], + "link": null, + "locked": false, + "roundness": { + "type": 3 + } + }, + { + "type": "image", + "id": "blki20", + "x": 103.5, + "y": 281.925, + "width": 28, + "height": 28, + "strokeColor": "transparent", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1039, + "version": 1, + "versionNonce": 1040, + "isDeleted": false, + "groupIds": [], + "boundElements": [], + "link": null, + "locked": false, + "fileId": "img_blki20", + "status": "saved", + "scale": [ + 1, + 1 + ], + "roundness": null, + "crop": null + }, + { + "type": "text", + "id": "blkt21", + "x": 26.0, + "y": 315.925, + "width": 183.0, + "height": 18.75, + "strokeColor": "#134e4a", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1041, + "version": 1, + "versionNonce": 1042, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "Observation", + "originalText": "Observation", + "fontSize": 15, + "fontFamily": 2, + "textAlign": "center", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 + }, + { + "type": "rectangle", + "id": "blk22", + "x": 235.0, + "y": 261.55, + "width": 195.0, + "height": 95.5, + "strokeColor": "#0f766e", + "backgroundColor": "#99f6e4", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1043, + "version": 1, + "versionNonce": 1044, + "isDeleted": false, + "groupIds": [], + "boundElements": [], + "link": null, + "locked": false, + "roundness": { + "type": 3 + } + }, + { + "type": "image", + "id": "blki23", + "x": 318.5, + "y": 272.55, + "width": 28, + "height": 28, + "strokeColor": "transparent", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1045, + "version": 1, + "versionNonce": 1046, + "isDeleted": false, + "groupIds": [], + "boundElements": [], + "link": null, + "locked": false, + "fileId": "img_blki23", + "status": "saved", + "scale": [ + 1, + 1 + ], + "roundness": null, + "crop": null + }, + { + "type": "text", + "id": "blkt24", + "x": 241.0, + "y": 306.55, + "width": 183.0, + "height": 18.75, + "strokeColor": "#134e4a", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1047, + "version": 1, + "versionNonce": 1048, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "Exam Finding", + "originalText": "Exam Finding", + "fontSize": 15, + "fontFamily": 2, + "textAlign": "center", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 + }, + { + "type": "text", + "id": "blkt25", + "x": 241.0, + "y": 325.3, + "width": 183.0, + "height": 18.75, + "strokeColor": "#134e4a", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1049, + "version": 1, + "versionNonce": 1050, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "List", + "originalText": "List", + "fontSize": 15, + "fontFamily": 2, + "textAlign": "center", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 + }, + { + "type": "rectangle", + "id": "blk26", + "x": 450.0, + "y": 261.55, + "width": 195.0, + "height": 95.5, + "strokeColor": "#0f766e", + "backgroundColor": "#99f6e4", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1051, + "version": 1, + "versionNonce": 1052, + "isDeleted": false, + "groupIds": [], + "boundElements": [], + "link": null, + "locked": false, + "roundness": { + "type": 3 + } + }, + { + "type": "image", + "id": "blki27", + "x": 533.5, + "y": 272.55, + "width": 28, + "height": 28, + "strokeColor": "transparent", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1053, + "version": 1, + "versionNonce": 1054, + "isDeleted": false, + "groupIds": [], + "boundElements": [], + "link": null, + "locked": false, + "fileId": "img_blki27", + "status": "saved", + "scale": [ + 1, + 1 + ], + "roundness": null, + "crop": null + }, + { + "type": "text", + "id": "blkt28", + "x": 456.0, + "y": 306.55, + "width": 183.0, + "height": 18.75, + "strokeColor": "#134e4a", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1055, + "version": 1, + "versionNonce": 1056, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "Imaging Problem", + "originalText": "Imaging Problem", + "fontSize": 15, + "fontFamily": 2, + "textAlign": "center", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 + }, + { + "type": "text", + "id": "blkt29", + "x": 456.0, + "y": 325.3, + "width": 183.0, + "height": 18.75, + "strokeColor": "#134e4a", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1057, + "version": 1, + "versionNonce": 1058, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "List", + "originalText": "List", + "fontSize": 15, + "fontFamily": 2, + "textAlign": "center", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 + }, + { + "type": "rectangle", + "id": "blk30", + "x": 665.0, + "y": 261.55, + "width": 195.0, + "height": 95.5, + "strokeColor": "#0f766e", + "backgroundColor": "#99f6e4", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1059, + "version": 1, + "versionNonce": 1060, + "isDeleted": false, + "groupIds": [], + "boundElements": [], + "link": null, + "locked": false, + "roundness": { + "type": 3 + } + }, + { + "type": "image", + "id": "blki31", + "x": 746.5, + "y": 279.925, + "width": 32, + "height": 32, + "strokeColor": "transparent", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1061, + "version": 1, + "versionNonce": 1062, + "isDeleted": false, + "groupIds": [], + "boundElements": [], + "link": null, + "locked": false, + "fileId": "img_blki31", + "status": "saved", + "scale": [ + 1, + 1 + ], + "roundness": null, + "crop": null + }, + { + "type": "text", + "id": "blkt32", + "x": 671.0, + "y": 315.925, + "width": 183.0, + "height": 18.75, + "strokeColor": "#134e4a", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1063, + "version": 1, + "versionNonce": 1064, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "Imaging Persona", + "originalText": "Imaging Persona", + "fontSize": 15, + "fontFamily": 2, + "textAlign": "center", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 + }, + { + "type": "image", + "id": "bicon34", + "x": 18, + "y": 481.05, + "width": 28, + "height": 28, + "strokeColor": "transparent", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1067, + "version": 1, + "versionNonce": 1068, + "isDeleted": false, + "groupIds": [], + "boundElements": [], + "link": null, + "locked": false, + "fileId": "img_bicon34", + "status": "saved", + "scale": [ + 1, + 1 + ], + "roundness": null, + "crop": null + }, + { + "type": "text", + "id": "btitle35", + "x": 58, + "y": 483.05, + "width": 208.79999999999998, + "height": 25.0, + "strokeColor": "#78350f", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1069, + "version": 1, + "versionNonce": 1070, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "Foundation Context", + "originalText": "Foundation Context", + "fontSize": 20, + "fontFamily": 2, + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 + }, + { + "type": "text", + "id": "bsub36", + "x": 58, + "y": 509.05, + "width": 188.5, + "height": 16.25, + "strokeColor": "#b45309", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1071, + "version": 1, + "versionNonce": 1072, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "shared, curated knowledge", + "originalText": "shared, curated knowledge", + "fontSize": 13, + "fontFamily": 2, + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 + }, + { + "type": "rectangle", + "id": "chip37", + "x": 381.99, + "y": 537.3, + "width": 116.02, + "height": 22.25, + "strokeColor": "#b45309", + "backgroundColor": "#fef3c7", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1073, + "version": 1, + "versionNonce": 1074, + "isDeleted": false, + "groupIds": [], + "boundElements": [], + "link": null, + "locked": false, + "roundness": { + "type": 3 + } + }, + { + "type": "text", + "id": "chipt38", + "x": 390.99, + "y": 540.3, + "width": 98.02, + "height": 16.25, + "strokeColor": "#78350f", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1075, + "version": 1, + "versionNonce": 1076, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "relationships", + "originalText": "relationships", + "fontSize": 13, + "fontFamily": 2, + "textAlign": "center", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 + }, + { + "type": "rectangle", + "id": "blk39", + "x": 20.0, + "y": 569.55, + "width": 237.33333333333334, + "height": 95.0, + "strokeColor": "#b45309", + "backgroundColor": "#fde68a", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1077, + "version": 1, + "versionNonce": 1078, + "isDeleted": false, + "groupIds": [], + "boundElements": [], + "link": null, + "locked": false, + "roundness": { + "type": 3 + } + }, + { + "type": "image", + "id": "blki40", + "x": 124.66666666666669, + "y": 580.55, + "width": 28, + "height": 28, + "strokeColor": "transparent", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1079, + "version": 1, + "versionNonce": 1080, + "isDeleted": false, + "groupIds": [], + "boundElements": [], + "link": null, + "locked": false, + "fileId": "img_blki40", + "status": "saved", + "scale": [ + 1, + 1 + ], + "roundness": null, + "crop": null + }, + { + "type": "text", + "id": "blkt41", + "x": 26.0, + "y": 614.55, + "width": 225.33333333333334, + "height": 18.75, + "strokeColor": "#78350f", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1081, + "version": 1, + "versionNonce": 1082, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "Finding/diagnosis definitions", + "originalText": "Finding/diagnosis definitions", + "fontSize": 15, + "fontFamily": 2, + "textAlign": "center", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 + }, + { + "type": "text", + "id": "blkd42", + "x": 26.0, + "y": 635.3, + "width": 225.33333333333334, + "height": 16.25, + "strokeColor": "#b45309", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1083, + "version": 1, + "versionNonce": 1084, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "finding models \u00b7 CDEs", + "originalText": "finding models \u00b7 CDEs", + "fontSize": 13, + "fontFamily": 2, + "textAlign": "center", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 + }, + { + "type": "rectangle", + "id": "blk43", + "x": 321.33333333333337, + "y": 569.55, + "width": 237.33333333333334, + "height": 95.0, + "strokeColor": "#b45309", + "backgroundColor": "#fde68a", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1085, + "version": 1, + "versionNonce": 1086, + "isDeleted": false, + "groupIds": [], + "boundElements": [], + "link": null, + "locked": false, + "roundness": { + "type": 3 + } + }, + { + "type": "image", + "id": "blki44", + "x": 424.00000000000006, + "y": 578.55, + "width": 32, + "height": 32, + "strokeColor": "transparent", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1087, + "version": 1, + "versionNonce": 1088, + "isDeleted": false, + "groupIds": [], + "boundElements": [], + "link": null, + "locked": false, + "fileId": "img_blki44", + "status": "saved", + "scale": [ + 1, + 1 + ], + "roundness": null, + "crop": null + }, + { + "type": "text", + "id": "blkt45", + "x": 327.33333333333337, + "y": 614.55, + "width": 225.33333333333334, + "height": 18.75, + "strokeColor": "#78350f", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1089, + "version": 1, + "versionNonce": 1090, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "Anatomic locations", + "originalText": "Anatomic locations", + "fontSize": 15, + "fontFamily": 2, + "textAlign": "center", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 + }, + { + "type": "text", + "id": "blkd46", + "x": 327.33333333333337, + "y": 635.3, + "width": 225.33333333333334, + "height": 16.25, + "strokeColor": "#b45309", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1091, + "version": 1, + "versionNonce": 1092, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "anchored in RadLex", + "originalText": "anchored in RadLex", + "fontSize": 13, + "fontFamily": 2, + "textAlign": "center", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 + }, + { + "type": "rectangle", + "id": "blk47", + "x": 622.6666666666667, + "y": 569.55, + "width": 237.33333333333334, + "height": 95.0, + "strokeColor": "#b45309", + "backgroundColor": "#fde68a", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1093, + "version": 1, + "versionNonce": 1094, + "isDeleted": false, + "groupIds": [], + "boundElements": [], + "link": null, + "locked": false, + "roundness": { + "type": 3 + } + }, + { + "type": "image", + "id": "blki48", + "x": 725.3333333333334, + "y": 578.55, + "width": 32, + "height": 32, + "strokeColor": "transparent", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1095, + "version": 1, + "versionNonce": 1096, + "isDeleted": false, + "groupIds": [], + "boundElements": [], + "link": null, + "locked": false, + "fileId": "img_blki48", + "status": "saved", + "scale": [ + 1, + 1 + ], + "roundness": null, + "crop": null + }, + { + "type": "text", + "id": "blkt49", + "x": 628.6666666666667, + "y": 614.55, + "width": 225.33333333333334, + "height": 18.75, + "strokeColor": "#78350f", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1097, + "version": 1, + "versionNonce": 1098, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "Exam types", + "originalText": "Exam types", + "fontSize": 15, + "fontFamily": 2, + "textAlign": "center", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 + }, + { + "type": "text", + "id": "blkd50", + "x": 628.6666666666667, + "y": 635.3, + "width": 225.33333333333334, + "height": 16.25, + "strokeColor": "#b45309", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1099, + "version": 1, + "versionNonce": 1100, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "LOINC/RSNA Playbook", + "originalText": "LOINC/RSNA Playbook", + "fontSize": 13, + "fontFamily": 2, + "textAlign": "center", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 + }, + { + "type": "arrow", + "id": "conn51", + "x": 263.33333333333337, + "y": 617.05, + "width": 52.0, + "height": 0, + "strokeColor": "#b45309", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1101, + "version": 1, + "versionNonce": 1102, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "points": [ + [ + 0, + 0 + ], + [ + 52.0, + 0 + ] + ], + "startArrowhead": "arrow", + "endArrowhead": "arrow" + }, + { + "type": "arrow", + "id": "conn52", + "x": 564.6666666666667, + "y": 617.05, + "width": 52.0, + "height": 0, + "strokeColor": "#b45309", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1103, + "version": 1, + "versionNonce": 1104, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "points": [ + [ + 0, + 0 + ], + [ + 52.0, + 0 + ] + ], + "startArrowhead": "arrow", + "endArrowhead": "arrow" + }, + { + "type": "line", + "id": "ln54", + "x": 62.9, + "y": 357.05, + "width": 9.9866666666667, + "height": 57.75, + "strokeColor": "#0f766e", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 75, + "angle": 0, + "seed": 1107, + "version": 1, + "versionNonce": 1108, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "points": [ + [ + 0.0, + 0.0 + ], + [ + 9.9866666666667, + 57.75 + ] + ], + "roundness": null + }, + { + "type": "line", + "id": "ln55", + "x": 117.5, + "y": 357.05, + "width": 264.26000000000005, + "height": 57.75, + "strokeColor": "#0f766e", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 75, + "angle": 0, + "seed": 1109, + "version": 1, + "versionNonce": 1110, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "points": [ + [ + 0.0, + 0.0 + ], + [ + 264.26000000000005, + 57.75 + ] + ], + "roundness": null + }, + { + "type": "line", + "id": "ln56", + "x": 172.1, + "y": 357.05, + "width": 499.6833333333334, + "height": 57.75, + "strokeColor": "#0f766e", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 75, + "angle": 0, + "seed": 1111, + "version": 1, + "versionNonce": 1112, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "points": [ + [ + 0.0, + 0.0 + ], + [ + 499.6833333333334, + 57.75 + ] + ], + "roundness": null + }, + { + "type": "line", + "id": "ln57", + "x": 332.5, + "y": 357.05, + "width": 448.22333333333336, + "height": 57.75, + "strokeColor": "#0f766e", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 75, + "angle": 0, + "seed": 1113, + "version": 1, + "versionNonce": 1114, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "points": [ + [ + 0.0, + 0.0 + ], + [ + 448.22333333333336, + 57.75 + ] + ], + "roundness": null + }, + { + "type": "line", + "id": "ln58", + "x": 518.25, + "y": 357.05, + "width": 351.50333333333333, + "height": 57.75, + "strokeColor": "#0f766e", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 75, + "angle": 0, + "seed": 1115, + "version": 1, + "versionNonce": 1116, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "points": [ + [ + 0.0, + 0.0 + ], + [ + -351.50333333333333, + 57.75 + ] + ], + "roundness": null + }, + { + "type": "line", + "id": "ln59", + "x": 576.75, + "y": 357.05, + "width": 86.04999999999995, + "height": 57.75, + "strokeColor": "#0f766e", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 75, + "angle": 0, + "seed": 1117, + "version": 1, + "versionNonce": 1118, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "points": [ + [ + 0.0, + 0.0 + ], + [ + -86.04999999999995, + 57.75 + ] + ], + "roundness": null + }, + { + "type": "rectangle", + "id": "plate60", + "x": 50.8066666666667, + "y": 414.8, + "width": 44.16, + "height": 22.25, + "strokeColor": "#b45309", + "backgroundColor": "#ffffff", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1119, + "version": 1, + "versionNonce": 1120, + "isDeleted": false, + "groupIds": [], + "boundElements": [], + "link": null, + "locked": false, + "roundness": { + "type": 3 + } + }, + { + "type": "text", + "id": "platet61", + "x": 57.8066666666667, + "y": 417.8, + "width": 30.159999999999997, + "height": 16.25, + "strokeColor": "#78350f", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1121, + "version": 1, + "versionNonce": 1122, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "is a", + "originalText": "is a", + "fontSize": 13, + "fontFamily": 2, + "textAlign": "center", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 + }, + { + "type": "rectangle", + "id": "plate62", + "x": 337.06000000000006, + "y": 414.8, + "width": 89.39999999999999, + "height": 22.25, + "strokeColor": "#b45309", + "backgroundColor": "#ffffff", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1123, + "version": 1, + "versionNonce": 1124, + "isDeleted": false, + "groupIds": [], + "boundElements": [], + "link": null, + "locked": false, + "roundness": { + "type": 3 + } + }, + { + "type": "text", + "id": "platet63", + "x": 344.06000000000006, + "y": 417.8, + "width": 75.39999999999999, + "height": 16.25, + "strokeColor": "#78350f", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1125, + "version": 1, + "versionNonce": 1126, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "located at", + "originalText": "located at", + "fontSize": 13, + "fontFamily": 2, + "textAlign": "center", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 + }, + { + "type": "rectangle", + "id": "plate64", + "x": 638.3933333333334, + "y": 414.8, + "width": 66.78, + "height": 22.25, + "strokeColor": "#b45309", + "backgroundColor": "#ffffff", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1127, + "version": 1, + "versionNonce": 1128, + "isDeleted": false, + "groupIds": [], + "boundElements": [], + "link": null, + "locked": false, + "roundness": { + "type": 3 + } + }, + { + "type": "text", + "id": "platet65", + "x": 645.3933333333334, + "y": 417.8, + "width": 52.78, + "height": 16.25, + "strokeColor": "#78350f", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1129, + "version": 1, + "versionNonce": 1130, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "seen on", + "originalText": "seen on", + "fontSize": 13, + "fontFamily": 2, + "textAlign": "center", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 + }, + { + "type": "rectangle", + "id": "plate66", + "x": 717.1733333333334, + "y": 414.8, + "width": 127.1, + "height": 22.25, + "strokeColor": "#b45309", + "backgroundColor": "#ffffff", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1131, + "version": 1, + "versionNonce": 1132, + "isDeleted": false, + "groupIds": [], + "boundElements": [], + "link": null, + "locked": false, + "roundness": { + "type": 3 + } + }, + { + "type": "text", + "id": "platet67", + "x": 724.1733333333334, + "y": 417.8, + "width": 113.1, + "height": 16.25, + "strokeColor": "#78350f", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1133, + "version": 1, + "versionNonce": 1134, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "of an exam type", + "originalText": "of an exam type", + "fontSize": 13, + "fontFamily": 2, + "textAlign": "center", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 + }, + { + "type": "rectangle", + "id": "plate68", + "x": 106.96666666666667, + "y": 414.8, + "width": 119.55999999999999, + "height": 22.25, + "strokeColor": "#b45309", + "backgroundColor": "#ffffff", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1135, + "version": 1, + "versionNonce": 1136, + "isDeleted": false, + "groupIds": [], + "boundElements": [], + "link": null, + "locked": false, + "roundness": { + "type": 3 + } + }, + { + "type": "text", + "id": "platet69", + "x": 113.96666666666667, + "y": 417.8, + "width": 105.55999999999999, + "height": 16.25, + "strokeColor": "#78350f", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1137, + "version": 1, + "versionNonce": 1138, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "per definition", + "originalText": "per definition", + "fontSize": 13, + "fontFamily": 2, + "textAlign": "center", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 + }, + { + "type": "rectangle", + "id": "plate70", + "x": 438.46000000000004, + "y": 414.8, + "width": 104.47999999999999, + "height": 22.25, + "strokeColor": "#b45309", + "backgroundColor": "#ffffff", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1139, + "version": 1, + "versionNonce": 1140, + "isDeleted": false, + "groupIds": [], + "boundElements": [], + "link": null, + "locked": false, + "roundness": { + "type": 3 + } + }, + { + "type": "text", + "id": "platet71", + "x": 445.46000000000004, + "y": 417.8, + "width": 90.47999999999999, + "height": 16.25, + "strokeColor": "#78350f", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1141, + "version": 1, + "versionNonce": 1142, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "per location", + "originalText": "per location", + "fontSize": 13, + "fontFamily": 2, + "textAlign": "center", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 + }, + { + "type": "text", + "id": "seaml72", + "x": 0, + "y": 450.05, + "width": 880, + "height": 16.25, + "strokeColor": "#64748b", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1143, + "version": 1, + "versionNonce": 1144, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "interconnected at every finding, diagnosis, location, and exam type", + "originalText": "interconnected at every finding, diagnosis, location, and exam type", + "fontSize": 13, + "fontFamily": 2, + "textAlign": "center", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 + } + ], + "appState": { + "viewBackgroundColor": "#ffffff", + "gridSize": null + }, + "files": { + "img_bicon3": { + "mimeType": "image/svg+xml", + "id": "img_bicon3", + "dataURL": "data:image/svg+xml;base64,PHN2ZwogIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIKICB3aWR0aD0iMjQiCiAgaGVpZ2h0PSIyNCIKICB2aWV3Qm94PSIwIDAgMjQgMjQiCiAgZmlsbD0ibm9uZSIKICBzdHJva2U9IiNiZTEyM2MiCiAgc3Ryb2tlLXdpZHRoPSIyIgogIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIKICBzdHJva2UtbGluZWpvaW49InJvdW5kIgo+CiAgPHBhdGggZD0iTTE1IDE0Yy4yLTEgLjctMS43IDEuNS0yLjUgMS0uOSAxLjUtMi4yIDEuNS0zLjVBNiA2IDAgMCAwIDYgOGMwIDEgLjIgMi4yIDEuNSAzLjUuNy43IDEuMyAxLjUgMS41IDIuNSIgLz4KICA8cGF0aCBkPSJNOSAxOGg2IiAvPgogIDxwYXRoIGQ9Ik0xMCAyMmg0IiAvPgo8L3N2Zz4K", + "created": 1700000000000 + }, + "img_bicon6": { + "mimeType": "image/svg+xml", + "id": "img_bicon6", + "dataURL": "data:image/svg+xml;base64,PHN2ZwogIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIKICB3aWR0aD0iMjQiCiAgaGVpZ2h0PSIyNCIKICB2aWV3Qm94PSIwIDAgMjQgMjQiCiAgZmlsbD0ibm9uZSIKICBzdHJva2U9IiMxNTgwM2QiCiAgc3Ryb2tlLXdpZHRoPSIyIgogIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIKICBzdHJva2UtbGluZWpvaW49InJvdW5kIgo+CiAgPHJlY3QgeD0iMiIgeT0iNCIgd2lkdGg9IjIwIiBoZWlnaHQ9IjE2IiByeD0iMiIgLz4KICA8cGF0aCBkPSJNMTAgNHY0IiAvPgogIDxwYXRoIGQ9Ik0yIDhoMjAiIC8+CiAgPHBhdGggZD0iTTYgNHY0IiAvPgo8L3N2Zz4K", + "created": 1700000000000 + }, + "img_bicon12": { + "mimeType": "image/svg+xml", + "id": "img_bicon12", + "dataURL": "data:image/svg+xml;base64,PHN2ZwogIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIKICB3aWR0aD0iMjQiCiAgaGVpZ2h0PSIyNCIKICB2aWV3Qm94PSIwIDAgMjQgMjQiCiAgZmlsbD0ibm9uZSIKICBzdHJva2U9IiM2ZDI4ZDkiCiAgc3Ryb2tlLXdpZHRoPSIyIgogIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIKICBzdHJva2UtbGluZWpvaW49InJvdW5kIgo+CiAgPHBhdGggZD0iTTExIDIxLjczYTIgMiAwIDAgMCAyIDBsNy00QTIgMiAwIDAgMCAyMSAxNlY4YTIgMiAwIDAgMC0xLTEuNzNsLTctNGEyIDIgMCAwIDAtMiAwbC03IDRBMiAyIDAgMCAwIDMgOHY4YTIgMiAwIDAgMCAxIDEuNzN6IiAvPgogIDxwYXRoIGQ9Ik0xMiAyMlYxMiIgLz4KICA8cG9seWxpbmUgcG9pbnRzPSIzLjI5IDcgMTIgMTIgMjAuNzEgNyIgLz4KICA8cGF0aCBkPSJtNy41IDQuMjcgOSA1LjE1IiAvPgo8L3N2Zz4K", + "created": 1700000000000 + }, + "img_bicon16": { + "mimeType": "image/svg+xml", + "id": "img_bicon16", + "dataURL": "data:image/svg+xml;base64,PHN2ZwogIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIKICB3aWR0aD0iMjQiCiAgaGVpZ2h0PSIyNCIKICB2aWV3Qm94PSIwIDAgMjQgMjQiCiAgZmlsbD0ibm9uZSIKICBzdHJva2U9IiMwZjc2NmUiCiAgc3Ryb2tlLXdpZHRoPSIyIgogIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIKICBzdHJva2UtbGluZWpvaW49InJvdW5kIgo+CiAgPHBhdGggZD0iTTEyLjgzIDIuMThhMiAyIDAgMCAwLTEuNjYgMEwyLjYgNi4wOGExIDEgMCAwIDAgMCAxLjgzbDguNTggMy45MWEyIDIgMCAwIDAgMS42NiAwbDguNTgtMy45YTEgMSAwIDAgMCAwLTEuODN6IiAvPgogIDxwYXRoIGQ9Ik0yIDEyYTEgMSAwIDAgMCAuNTguOTFsOC42IDMuOTFhMiAyIDAgMCAwIDEuNjUgMGw4LjU4LTMuOUExIDEgMCAwIDAgMjIgMTIiIC8+CiAgPHBhdGggZD0iTTIgMTdhMSAxIDAgMCAwIC41OC45MWw4LjYgMy45MWEyIDIgMCAwIDAgMS42NSAwbDguNTgtMy45QTEgMSAwIDAgMCAyMiAxNyIgLz4KPC9zdmc+Cg==", + "created": 1700000000000 + }, + "img_blki20": { + "mimeType": "image/svg+xml", + "id": "img_blki20", + "dataURL": "data:image/svg+xml;base64,PHN2ZwogIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIKICB3aWR0aD0iMjQiCiAgaGVpZ2h0PSIyNCIKICB2aWV3Qm94PSIwIDAgMjQgMjQiCiAgZmlsbD0ibm9uZSIKICBzdHJva2U9IiMwZjc2NmUiCiAgc3Ryb2tlLXdpZHRoPSIyIgogIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIKICBzdHJva2UtbGluZWpvaW49InJvdW5kIgo+CiAgPHJlY3Qgd2lkdGg9IjgiIGhlaWdodD0iNCIgeD0iOCIgeT0iMiIgcng9IjEiIHJ5PSIxIiAvPgogIDxwYXRoIGQ9Ik0xNiA0aDJhMiAyIDAgMCAxIDIgMnYxNGEyIDIgMCAwIDEtMiAySDZhMiAyIDAgMCAxLTItMlY2YTIgMiAwIDAgMSAyLTJoMiIgLz4KPC9zdmc+Cg==", + "created": 1700000000000 + }, + "img_blki23": { + "mimeType": "image/svg+xml", + "id": "img_blki23", + "dataURL": "data:image/svg+xml;base64,PHN2ZwogIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIKICB3aWR0aD0iMjQiCiAgaGVpZ2h0PSIyNCIKICB2aWV3Qm94PSIwIDAgMjQgMjQiCiAgZmlsbD0ibm9uZSIKICBzdHJva2U9IiMwZjc2NmUiCiAgc3Ryb2tlLXdpZHRoPSIyIgogIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIKICBzdHJva2UtbGluZWpvaW49InJvdW5kIgo+CiAgPHJlY3Qgd2lkdGg9IjgiIGhlaWdodD0iNCIgeD0iOCIgeT0iMiIgcng9IjEiIHJ5PSIxIiAvPgogIDxwYXRoIGQ9Ik0xNiA0aDJhMiAyIDAgMCAxIDIgMnYxNGEyIDIgMCAwIDEtMiAySDZhMiAyIDAgMCAxLTItMlY2YTIgMiAwIDAgMSAyLTJoMiIgLz4KICA8cGF0aCBkPSJNMTIgMTFoNCIgLz4KICA8cGF0aCBkPSJNMTIgMTZoNCIgLz4KICA8cGF0aCBkPSJNOCAxMWguMDEiIC8+CiAgPHBhdGggZD0iTTggMTZoLjAxIiAvPgo8L3N2Zz4K", + "created": 1700000000000 + }, + "img_blki27": { + "mimeType": "image/svg+xml", + "id": "img_blki27", + "dataURL": "data:image/svg+xml;base64,PHN2ZwogIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIKICB3aWR0aD0iMjQiCiAgaGVpZ2h0PSIyNCIKICB2aWV3Qm94PSIwIDAgMjQgMjQiCiAgZmlsbD0ibm9uZSIKICBzdHJva2U9IiMwZjc2NmUiCiAgc3Ryb2tlLXdpZHRoPSIyIgogIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIKICBzdHJva2UtbGluZWpvaW49InJvdW5kIgo+CiAgPHBhdGggZD0iTTMgNWguMDEiIC8+CiAgPHBhdGggZD0iTTMgMTJoLjAxIiAvPgogIDxwYXRoIGQ9Ik0zIDE5aC4wMSIgLz4KICA8cGF0aCBkPSJNOCA1aDEzIiAvPgogIDxwYXRoIGQ9Ik04IDEyaDEzIiAvPgogIDxwYXRoIGQ9Ik04IDE5aDEzIiAvPgo8L3N2Zz4K", + "created": 1700000000000 + }, + "img_blki31": { + "mimeType": "image/svg+xml", + "id": "img_blki31", + "dataURL": "data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNDgiIGhlaWdodD0iNDgiIHZpZXdCb3g9IjAgMCA0OCA0OCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0yNCAyNEMyOC40MjA0IDI0IDMyIDIwLjQyMDQgMzIgMTZDMzIgMTEuNTc5NiAyOC40MjA0IDggMjQgOEMxOS41Nzk2IDggMTYgMTEuNTc5NiAxNiAxNkMxNiAyMC40MjA0IDE5LjU3OTYgMjQgMjQgMjRaTTM0IDE2QzM0IDIxLjUyNSAyOS41MjUgMjYgMjQgMjZDMTguNDc1IDI2IDE0IDIxLjUyNSAxNCAxNkMxNCAxMC40NzUgMTguNDc1IDYgMjQgNkMyOS41MjUgNiAzNCAxMC40NzUgMzQgMTZaIiBmaWxsPSIjMGY3NjZlIi8+CjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgY2xpcC1ydWxlPSJldmVub2RkIiBkPSJNOS4yMjM0OCAzNC4yMTE5QzguMjIwMzggMzUuMDIxMSA4IDM1LjYyOTEgOCAzNlY0MEg0MFYzNkM0MCAzNS42MjkxIDM5Ljc3OTYgMzUuMDIxMSAzOC43NzY1IDM0LjIxMTlDMzcuNzk1OCAzMy40MjA3IDM2LjMzNDEgMzIuNjY2OSAzNC41NjIyIDMyLjAxNUMzMS4wMTk5IDMwLjcxMTcgMjYuNzUzMiAzMCAyNCAzMEMyMS4yNDY4IDMwIDE2Ljk4MDEgMzAuNzExNyAxMy40Mzc4IDMyLjAxNUMxMS42NjU5IDMyLjY2NjkgMTAuMjA0MiAzMy40MjA3IDkuMjIzNDggMzQuMjExOVpNMjQgMjhDMTcuOTkyNSAyOCA2IDMxLjAzNDcgNiAzNlY0Mkg0MlYzNkM0MiAzMS4wMzQ3IDMwLjAwNzUgMjggMjQgMjhaIiBmaWxsPSIjMGY3NjZlIi8+Cjwvc3ZnPgo=", + "created": 1700000000000 + }, + "img_bicon34": { + "mimeType": "image/svg+xml", + "id": "img_bicon34", + "dataURL": "data:image/svg+xml;base64,PHN2ZwogIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIKICB3aWR0aD0iMjQiCiAgaGVpZ2h0PSIyNCIKICB2aWV3Qm94PSIwIDAgMjQgMjQiCiAgZmlsbD0ibm9uZSIKICBzdHJva2U9IiNiNDUzMDkiCiAgc3Ryb2tlLXdpZHRoPSIyIgogIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIKICBzdHJva2UtbGluZWpvaW49InJvdW5kIgo+CiAgPHBhdGggZD0iTTEyIDV2MTYiIC8+CiAgPHBhdGggZD0iTTIwLjAwMSAxOUEyIDIgMCAwMDIyIDE3VjVhMiAyIDAgMDAtMS45OTktMkwxNiAzLjAwMkE1IDUgMCAwMDEyIDVhNSA1IDAgMDAtNC0ySDRhMiAyIDAgMDAtMiAydjEyYTIgMiAwIDAwMS45OTkgMkg4YTUgNSAwIDAxNCAyIDUgNSAwIDAxNC0yeiIgLz4KPC9zdmc+Cg==", + "created": 1700000000000 + }, + "img_blki40": { + "mimeType": "image/svg+xml", + "id": "img_blki40", + "dataURL": "data:image/svg+xml;base64,PHN2ZwogIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIKICB3aWR0aD0iMjQiCiAgaGVpZ2h0PSIyNCIKICB2aWV3Qm94PSIwIDAgMjQgMjQiCiAgZmlsbD0ibm9uZSIKICBzdHJva2U9IiNiNDUzMDkiCiAgc3Ryb2tlLXdpZHRoPSIyIgogIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIKICBzdHJva2UtbGluZWpvaW49InJvdW5kIgo+CiAgPHBhdGggZD0iTTEyLjU4NiAyLjU4NkEyIDIgMCAwIDAgMTEuMTcyIDJINGEyIDIgMCAwIDAtMiAydjcuMTcyYTIgMiAwIDAgMCAuNTg2IDEuNDE0bDguNzA0IDguNzA0YTIuNDI2IDIuNDI2IDAgMCAwIDMuNDIgMGw2LjU4LTYuNThhMi40MjYgMi40MjYgMCAwIDAgMC0zLjQyeiIgLz4KICA8Y2lyY2xlIGN4PSI3LjUiIGN5PSI3LjUiIHI9Ii41IiBmaWxsPSIjYjQ1MzA5IiAvPgo8L3N2Zz4K", + "created": 1700000000000 + }, + "img_blki44": { + "mimeType": "image/svg+xml", + "id": "img_blki44", + "dataURL": "data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNDgiIGhlaWdodD0iNDgiIHZpZXdCb3g9IjAgMCA0OCA0OCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0yMyA2LjAwMDEzQzIzIDYuMDAwMDQgMjMgNiAyNCA2SDI0LjE3NjFDMjQuMjUzMyA2IDI0LjMyMzMgNiAyNC4zODY4IDZDMjUgNi4wMDAwMSAyNSA2LjAwMDA1IDI1IDYuMDAwMTNWMjAuNUMyNSAyMS44OTc3IDI1LjU2NDEgMjIuNDQyMSAyNi4wMDM5IDIyLjY5ODdDMjYuMDUzIDIyLjcyNzMgMjYuMTAyNCAyMi43NTMzIDI2LjE1MTYgMjIuNzc3QzI2LjE1MDYgMjIuNjU2OCAyNi4xNDkzIDIyLjUzMTYgMjYuMTQ3OSAyMi40MDE5TDI2LjE0NzkgMjIuNDAwM0MyNi4xMTAxIDE4Ljg3MTYgMjYuMDM2NSAxMS45OTk3IDMxLjQ3NTMgMTEuOTk5N0MzOC45MjU5IDExLjk5OTcgNDQuMjQ3OCAzOC4wMDYyIDQxLjA1NDcgNDAuNjU5OUMzNy44NjE1IDQzLjMxMzYgMzEuNDc1MyA0MS43MjE0IDI4LjI4MjIgMzguNTM2OUMyNS43MDQyIDM1Ljk2NTkgMjUuOTI3MiAyOS45NTgzIDI2LjA4NzMgMjUuNjQ1N0wyNi4wODc0IDI1LjY0NDNDMjYuMDk3MSAyNS4zODE5IDI2LjEwNjcgMjUuMTI1OCAyNi4xMTUzIDI0Ljg3NzFDMjUuNzkgMjQuNzk2MiAyNS4zOTU5IDI0LjY1OTUgMjQuOTk2MiAyNC40MjYzQzI0LjYzOTggMjQuMjE4NCAyNC4yOTc1IDIzLjk0NDIgMjQgMjMuNTkxOUMyMy43MDI2IDIzLjk0NDIgMjMuMzYwMyAyNC4yMTg0IDIzLjAwMzkgMjQuNDI2M0MyMi42MDQxIDI0LjY1OTUgMjIuMjEwMSAyNC43OTYyIDIxLjg4NDggMjQuODc3MUMyMS44OTM0IDI1LjEyNjEgMjEuOTAyOSAyNS4zODI2IDIxLjkxMjcgMjUuNjQ1M0MyMi4wNzI4IDI5Ljk1NzkgMjIuMjk1OSAzNS45NjYyIDE5LjcxNzkgMzguNTM3MkMxNi41MjQ3IDQxLjcyMTcgMTAuMTM4NSA0My4zMTM5IDYuOTQ1MzYgNDAuNjYwMkMzLjc1MjIyIDM4LjAwNjUgOS4wNzQxMyAxMiAxNi41MjQ3IDEyQzIxLjk2MzYgMTIgMjEuODkgMTguODcxNyAyMS44NTIyIDIyLjQwMDNDMjEuODUyIDIyLjQxNjYgMjEuODUxOCAyMi40MzI4IDIxLjg1MTYgMjIuNDQ4OUMyMS44NTA0IDIyLjU2MTkgMjEuODQ5MyAyMi42NzE0IDIxLjg0ODQgMjIuNzc3QzIxLjg5NzcgMjIuNzUzNCAyMS45NDcxIDIyLjcyNzQgMjEuOTk2MiAyMi42OTg3QzIyLjQzNiAyMi40NDIxIDIzIDIxLjg5NzcgMjMgMjAuNVY2LjAwMDEzWk0zMS40NzUzIDEzLjk5OTdDMzAuNTIxMiAxMy45OTk3IDI5Ljk4NDMgMTQuMzAwMiAyOS42MDg2IDE0LjY4NjlDMjkuMTc1MiAxNS4xMzMxIDI4LjgxMzIgMTUuODUwNyAyOC41NTkgMTYuODY0NkMyOC4xMTQxIDE4LjYzOTUgMjguMTMzIDIwLjY4MTkgMjguMTQ4MyAyMi4zMjkzQzI4LjE1MDkgMjIuNjE0MiAyOC4xNTM0IDIyLjg4NzQgMjguMTUzNCAyMy4xNDUzQzI4LjE1MzQgMjMuOTA1MyAyOC4xMTk2IDI0LjgxNTMgMjguMDg0NSAyNS43NjIxQzI4LjA3MDcgMjYuMTM0OSAyOC4wNTY2IDI2LjUxMzMgMjguMDQ0MyAyNi44OTA1QzI3Ljk5OTYgMjguMjY1NyAyNy45NzQxIDI5LjcwNTUgMjguMDQwNSAzMS4wOTgyQzI4LjEwNzIgMzIuNDk4NSAyOC4yNjQyIDMzLjc4MzUgMjguNTU3MyAzNC44NTk2QzI4Ljg1MzggMzUuOTQ4MyAyOS4yNTA5IDM2LjY3ODQgMjkuNjk0NCAzNy4xMjA4QzMwLjk3MjYgMzguMzk1NCAzMi45OTA4IDM5LjQyNTEgMzUuMDQ5MiAzOS44MjQzQzM3LjA4NDIgNDAuMjE4OSAzOC43MjI0IDM5LjkyNjkgMzkuNjgxOCAzOS4xOTY5QzM5LjY4NjggMzkuMTg1NyAzOS42OTIzIDM5LjE3MjYgMzkuNjk4NCAzOS4xNTc0QzM5Ljc1NzYgMzkuMDA5NSAzOS44Mjk0IDM4Ljc1NTQgMzkuODg3OCAzOC4zNjgzQzQwLjAwNDcgMzcuNTkzMyA0MC4wMzUgMzYuNTEyMiAzOS45NTYyIDM1LjE4MDNDMzkuNzk5NSAzMi41MzA1IDM5LjIyODYgMjkuMTY4OSAzOC4zMjY4IDI1Ljg2MDZDMzcuNDIxNiAyMi41Mzk2IDM2LjIxNzMgMTkuMzk5OCAzNC44NTIxIDE3LjEzODNDMzQuMTY4OCAxNi4wMDYyIDMzLjQ5NTEgMTUuMTc4NiAzMi44NzAzIDE0LjY1MzVDMzIuMjUxOCAxNC4xMzM3IDMxLjc5MzUgMTMuOTk5NyAzMS40NzUzIDEzLjk5OTdaTTE2LjUyNDcgMTRDMTcuNDc4OCAxNCAxOC4wMTU4IDE0LjMwMDUgMTguMzkxNCAxNC42ODcyQzE4LjgyNDggMTUuMTMzNCAxOS4xODY4IDE1Ljg1MSAxOS40NDEgMTYuODY0OUMxOS44ODU5IDE4LjYzOTkgMTkuODY3IDIwLjY4MjIgMTkuODUxOCAyMi4zMjk2QzE5Ljg0OTEgMjIuNjE0NiAxOS44NDY2IDIyLjg4NzcgMTkuODQ2NiAyMy4xNDU2QzE5Ljg0NjYgMjMuOTA1NiAxOS44ODA0IDI0LjgxNTYgMTkuOTE1NSAyNS43NjI0QzE5LjkyOTQgMjYuMTM1IDE5Ljk0MzQgMjYuNTEzOCAxOS45NTU3IDI2Ljg5MDhDMjAuMDAwNSAyOC4yNjYgMjAuMDI1OSAyOS43MDU4IDE5Ljk1OTYgMzEuMDk4NUMxOS44OTI5IDMyLjQ5ODggMTkuNzM1OSAzMy43ODM4IDE5LjQ0MjcgMzQuODU5OUMxOS4xNDYyIDM1Ljk0ODYgMTguNzQ5MiAzNi42Nzg3IDE4LjMwNTYgMzcuMTIxMUMxNy4wMjc1IDM4LjM5NTcgMTUuMDA5MyAzOS40MjU0IDEyLjk1MDkgMzkuODI0NkMxMC45MTU5IDQwLjIxOTIgOS4yNzc2OCAzOS45MjcyIDguMzE4MjMgMzkuMTk3MkM4LjMxMzI2IDM5LjE4NiA4LjMwNzcgMzkuMTcyOSA4LjMwMTYyIDM5LjE1NzdDOC4yNDI0MSAzOS4wMDk4IDguMTcwNjEgMzguNzU1NyA4LjExMjI0IDM4LjM2ODZDNy45OTUzOSAzNy41OTM2IDcuOTY1IDM2LjUxMjUgOC4wNDM4IDM1LjE4MDZDOC4yMDA1NiAzMi41MzA4IDguNzcxNDcgMjkuMTY5MiA5LjY3MzI0IDI1Ljg2MDlDMTAuNTc4NSAyMi41Mzk5IDExLjc4MjcgMTkuNDAwMSAxMy4xNDc5IDE3LjEzODZDMTMuODMxMyAxNi4wMDY1IDE0LjUwNDkgMTUuMTc4OSAxNS4xMjk4IDE0LjY1MzhDMTUuNzQ4MiAxNC4xMzQgMTYuMjA2NSAxNCAxNi41MjQ3IDE0WiIgZmlsbD0iI2I0NTMwOSIvPgo8L3N2Zz4K", + "created": 1700000000000 + }, + "img_blki48": { + "mimeType": "image/svg+xml", + "id": "img_blki48", + "dataURL": "data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNDgiIGhlaWdodD0iNDgiIHZpZXdCb3g9IjAgMCA0OCA0OCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0yOSA5QzI5IDExLjc2MTQgMjYuNzYxNCAxNCAyNCAxNEMyMS4yMzg2IDE0IDE5IDExLjc2MTQgMTkgOUMxOSA2LjIzODU4IDIxLjIzODYgNCAyNCA0QzI2Ljc2MTQgNCAyOSA2LjIzODU4IDI5IDlaTTI3IDlDMjcgMTAuNjU2OSAyNS42NTY5IDEyIDI0IDEyQzIyLjM0MzEgMTIgMjEgMTAuNjU2OSAyMSA5QzIxIDcuMzQzMTUgMjIuMzQzMSA2IDI0IDZDMjUuNjU2OSA2IDI3IDcuMzQzMTUgMjcgOVoiIGZpbGw9IiNiNDUzMDkiLz4KPHBhdGggZD0iTTE2Ljk5OTggNDFWMzRIMTguOTk5OFY0MUMxOC45OTk4IDQxLjU1MjMgMTkuNDQ3NSA0MiAxOS45OTk4IDQySDIwLjA4NjVDMjAuNjAzNyA0MiAyMS4wMzU2IDQxLjYwNTYgMjEuMDgyNCA0MS4wOTA1TDIxLjcyNyAzNEgyMy43MzUzTDIzLjA3NDIgNDEuMjcxNkMyMy4wNjkgNDEuMzI4OCAyMy4wNjIyIDQxLjM4NTYgMjMuMDUzOSA0MS40NDE3QzIzLjAzNTcgNDEuNTY0NyAyMy4wMTAxIDQxLjY4NTEgMjIuOTc3NiA0MS44MDI1QzIyLjYyNDIgNDMuMDc5OCAyMS40NTQ5IDQ0IDIwLjA4NjUgNDRIMTkuOTk5OEMxOC4zNDI5IDQ0IDE2Ljk5OTggNDIuNjU2OSAxNi45OTk4IDQxWiIgZmlsbD0iI2I0NTMwOSIvPgo8cGF0aCBkPSJNMjYuOTE3MSA0MS4wOTA1TDI2LjI3MjUgMzRIMjQuMjY0MkwyNC45MjUzIDQxLjI3MTZDMjQuOTMwNSA0MS4zMjg4IDI0LjkzNzMgNDEuMzg1NiAyNC45NDU2IDQxLjQ0MTdDMjQuOTYzOCA0MS41NjQ3IDI0Ljk4OTQgNDEuNjg1MSAyNS4wMjE5IDQxLjgwMjVDMjUuMzc1MyA0My4wNzk4IDI2LjU0NDYgNDQgMjcuOTEzIDQ0SDI3Ljk5OThDMjkuNjU2NiA0NCAzMC45OTk4IDQyLjY1NjkgMzAuOTk5OCA0MVYzNEgyOC45OTk4VjQxQzI4Ljk5OTggNDEuNTUyMyAyOC41NTIgNDIgMjcuOTk5OCA0MkgyNy45MTNDMjcuMzk1OCA0MiAyNi45NjM5IDQxLjYwNTYgMjYuOTE3MSA0MS4wOTA1WiIgZmlsbD0iI2I0NTMwOSIvPgo8cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGNsaXAtcnVsZT0iZXZlbm9kZCIgZD0iTTExIDE1QzEwLjQ0NzcgMTUgMTAgMTUuNDQ3NyAxMCAxNlYzMUMxMCAzMS41NTIzIDEwLjQ0NzcgMzIgMTEgMzJIMzdDMzcuNTUyMyAzMiAzOCAzMS41NTIzIDM4IDMxVjE2QzM4IDE1LjQ0NzcgMzcuNTUyMyAxNSAzNyAxNUgxMVpNMTIgMTdWMzBIMTkuNUMxOS41IDI5LjQ0MjQgMTkuNzU5MSAyOC45NTcyIDIwLjAyNzYgMjguNjAwNkMyMC4zMDg2IDI4LjIyNzYgMjAuNjc5NiAyNy44ODgzIDIxLjA3OTQgMjcuNjAxNkMyMS42MjUyIDI3LjIxMDMgMjIuMjk4NiAyNi44NjUgMjMgMjYuNjY3OFYyNC41SDIyLjJDMjEuNTk3MyAyNC41IDIwLjc1MzUgMjQuODY0MiAxOS45NDMzIDI1LjM1NTJDMTkuNTYzOCAyNS41ODUyIDE5LjIzMzcgMjUuODE2NyAxOC45OTg0IDI1Ljk5MTFDMTguODgxMiAyNi4wNzc4IDE4Ljc4ODggMjYuMTQ5NSAxOC43MjcgMjYuMTk4NEMxOC42OTYxIDI2LjIyMjggMTguNjczIDI2LjI0MTUgMTguNjU4MiAyNi4yNTM1TDE4LjY0MjYgMjYuMjY2M0wxOC42Mzk5IDI2LjI2ODRDMTguNjM5OSAyNi4yNjg0IDE4LjY0MDIgMjYuMjY4MiAxOCAyNS41QzE3LjM1OTggMjQuNzMxOCAxNy4zNjAxIDI0LjczMTUgMTcuMzYwMSAyNC43MzE1TDE3LjM2MTQgMjQuNzMwNUwxNy4zNjM4IDI0LjcyODVMMTcuMzcxMyAyNC43MjIzTDE3LjM5NjYgMjQuNzAxNkMxNy40MTc5IDI0LjY4NDMgMTcuNDQ4IDI0LjY2IDE3LjQ4NjMgMjQuNjI5N0MxNy41NjI3IDI0LjU2OTMgMTcuNjcxOSAyNC40ODQ3IDE3LjgwNzkgMjQuMzgzOUMxOC4wNzg4IDI0LjE4MzMgMTguNDYxMiAyMy45MTQ4IDE4LjkwNjcgMjMuNjQ0OEMxOS43NDY1IDIzLjEzNTggMjEuMDAyNyAyMi41IDIyLjIgMjIuNUgyM1YyMC41SDIyLjVDMjEuOTMwOSAyMC41IDIxLjE5MDkgMjAuNjk5MiAyMC41MjkyIDIwLjkzOThDMjAuMjEyIDIxLjA1NTIgMTkuOTM3IDIxLjE3MDkgMTkuNzQyMSAyMS4yNTc2QzE5LjY0NDkgMjEuMzAwNyAxOS41Njg1IDIxLjMzNjMgMTkuNTE3NiAyMS4zNjA1QzE5LjQ5MjIgMjEuMzcyNSAxOS40NzMyIDIxLjM4MTcgMTkuNDYxMyAyMS4zODc1TDE5LjQ0ODcgMjEuMzkzN0wxOS40NDcgMjEuMzk0NUMxOS40NDcgMjEuMzk0NSAxOS40NDcyIDIxLjM5NDQgMTkgMjAuNUMxOC41NTI4IDE5LjYwNTYgMTguNTUzMSAxOS42MDU0IDE4LjU1MzEgMTkuNjA1NEwxOC41NTY0IDE5LjYwMzhMMTguNTYyOSAxOS42MDA2TDE4LjU4NDQgMTkuNTlDMTguNjAyNSAxOS41ODEyIDE4LjYyNzkgMTkuNTY4OSAxOC42NjAxIDE5LjU1MzZDMTguNzI0NSAxOS41MjMxIDE4LjgxNiAxOS40ODA1IDE4LjkyOTggMTkuNDI5OUMxOS4xNTY3IDE5LjMyOTEgMTkuNDc1NSAxOS4xOTQ4IDE5Ljg0NTggMTkuMDYwMkMyMC41NTkxIDE4LjgwMDggMjEuNTY5MSAxOC41IDIyLjUgMTguNUgyM1YxN0gxMlpNMjUgMjQuNUgyNi4xQzI2Ljg0ODkgMjQuNSAyNy42MTg2IDI0Ljg2NjMgMjguMjYzMSAyNS4zMTg2QzI4LjU3MzUgMjUuNTM2NCAyOC44Mjg1IDI1Ljc1NTYgMjkuMDA0OCAyNS45MTk3QzI5LjA5MjUgMjYuMDAxMiAyOS4xNTk0IDI2LjA2NzkgMjkuMjAyNiAyNi4xMTIyQzI5LjIyNDEgMjYuMTM0MyAyOS4yMzk3IDI2LjE1MDcgMjkuMjQ4OCAyNi4xNjA1TDI5LjI1NzQgMjYuMTY5N0MyOS4yNTc0IDI2LjE2OTcgMjkuMjU2NyAyNi4xNjkgMzAgMjUuNUMzMC43NDMzIDI0LjgzMSAzMC43NDI5IDI0LjgzMDYgMzAuNzQyOSAyNC44MzA2TDMwLjc0MTQgMjQuODI5TDMwLjczODkgMjQuODI2MkwzMC43MzE4IDI0LjgxODRMMzAuNzA5NyAyNC43OTQ2QzMwLjY5MTUgMjQuNzc1MSAzMC42NjYzIDI0Ljc0ODUgMzAuNjM0NiAyNC43MTZDMzAuNTcxMSAyNC42NTA5IDMwLjQ4MDkgMjQuNTYxMyAzMC4zNjcgMjQuNDU1M0MzMC4xNDAzIDI0LjI0NDQgMjkuODE0IDIzLjk2MzYgMjkuNDExOSAyMy42ODE0QzI4LjYzMTQgMjMuMTMzNyAyNy40NTExIDIyLjUgMjYuMSAyMi41SDI1VjIwLjVIMjUuNzVDMjYuNDQ0MyAyMC41IDI3LjExOTMgMjAuNzAxMSAyNy42NDMyIDIwLjkyMTZDMjcuOTAwMyAyMS4wMjk5IDI4LjEwOTIgMjEuMTM3OCAyOC4yNTA5IDIxLjIxNjlDMjguMzIxNSAyMS4yNTY0IDI4LjM3NDcgMjEuMjg4MiAyOC40MDggMjEuMzA4N0MyOC40MjQ3IDIxLjMxODkgMjguNDM2MyAyMS4zMjYzIDI4LjQ0MjcgMjEuMzMwNEwyOC40NDU3IDIxLjMzMjNDMjguNDQ1NyAyMS4zMzIzIDI4LjQ0NTMgMjEuMzMyMSAyOSAyMC41QzI5LjU1NDcgMTkuNjY3OSAyOS41NTQyIDE5LjY2NzYgMjkuNTU0MiAxOS42Njc2TDI5LjU1MjcgMTkuNjY2NkwyOS41NTAxIDE5LjY2NDlMMjkuNTQzMiAxOS42NjA0TDI5LjUyMjggMTkuNjQ3MkMyOS41MDYzIDE5LjYzNjYgMjkuNDg0IDE5LjYyMjUgMjkuNDU2MiAxOS42MDU0QzI5LjQwMDcgMTkuNTcxMiAyOS4zMjMgMTkuNTI0OSAyOS4yMjU2IDE5LjQ3MDZDMjkuMDMxNSAxOS4zNjIyIDI4Ljc1NTkgMTkuMjIwMSAyOC40MTkzIDE5LjA3ODRDMjcuNzU1NyAxOC43OTg5IDI2LjgwNTcgMTguNSAyNS43NSAxOC41SDI1VjE3SDM2VjMwSDI4LjVDMjguNSAyOS40Mzc5IDI4LjIzMjQgMjguOTQ1MiAyNy45NjQxIDI4LjU4NzVDMjcuNjgwMyAyOC4yMDkyIDI3LjMwNTQgMjcuODYwNiAyNi45MDA3IDI3LjU2NjNDMjYuMzY3NSAyNy4xNzg1IDI1LjY5ODkgMjYuODI1NyAyNSAyNi42MzkxVjI0LjVaTTI2LjQ5MjkgMzBDMjYuNDc5NyAyOS45NjcgMjYuNDQ1NyAyOS44OTY0IDI2LjM2NDEgMjkuNzg3NUMyNi4yMjU5IDI5LjYwMzMgMjYuMDA3MSAyOS4zODk0IDI1LjcyNDMgMjkuMTgzN0MyNS4xNDc4IDI4Ljc2NDUgMjQuNDkzNyAyOC41MTE3IDI0LjAzMiAyOC41MDA0QzIzLjQ4NzcgMjguNTQ2NCAyMi44MDUyIDI4LjgyNTIgMjIuMjQ0OSAyOS4yMjdDMjEuOTY1NyAyOS40MjcyIDIxLjc1NTYgMjkuNjMwNyAyMS42MjUyIDI5LjgwMzhDMjEuNTQ5NiAyOS45MDQzIDIxLjUxODQgMjkuOTY5NCAyMS41MDYzIDMwSDI2LjQ5MjlaIiBmaWxsPSIjYjQ1MzA5Ii8+Cjwvc3ZnPgo=", + "created": 1700000000000 + } + } +} \ No newline at end of file diff --git a/knowledge/drafts/pillars-b.excalidraw b/knowledge/drafts/pillars-b.excalidraw new file mode 100644 index 0000000..6a37f7f --- /dev/null +++ b/knowledge/drafts/pillars-b.excalidraw @@ -0,0 +1,2564 @@ +{ + "type": "excalidraw", + "version": 2, + "source": "oidm-knowledge/tools/diagrams", + "elements": [ + { + "type": "rectangle", + "id": "band53", + "x": 0, + "y": 377.05, + "width": 880, + "height": 253.49999999999994, + "strokeColor": "#b45309", + "backgroundColor": "#fef3c7", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1105, + "version": 1, + "versionNonce": 1106, + "isDeleted": false, + "groupIds": [], + "boundElements": [], + "link": null, + "locked": false, + "roundness": { + "type": 3 + } + }, + { + "type": "rectangle", + "id": "fill58", + "x": -1, + "y": 377.05, + "width": 33, + "height": 32.0, + "strokeColor": "transparent", + "backgroundColor": "#fef3c7", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1115, + "version": 1, + "versionNonce": 1116, + "isDeleted": false, + "groupIds": [], + "boundElements": [], + "link": null, + "locked": false, + "roundness": null + }, + { + "type": "rectangle", + "id": "fill59", + "x": 848, + "y": 377.05, + "width": 33, + "height": 32.0, + "strokeColor": "transparent", + "backgroundColor": "#fef3c7", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1117, + "version": 1, + "versionNonce": 1118, + "isDeleted": false, + "groupIds": [], + "boundElements": [], + "link": null, + "locked": false, + "roundness": null + }, + { + "type": "line", + "id": "ln60", + "x": 0, + "y": 377.05, + "width": 0, + "height": 32.0, + "strokeColor": "#b45309", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1119, + "version": 1, + "versionNonce": 1120, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "points": [ + [ + 0, + 0.0 + ], + [ + 0, + 32.0 + ] + ], + "roundness": null + }, + { + "type": "line", + "id": "ln61", + "x": 880, + "y": 377.05, + "width": 0, + "height": 32.0, + "strokeColor": "#b45309", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1121, + "version": 1, + "versionNonce": 1122, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "points": [ + [ + 0, + 0.0 + ], + [ + 0, + 32.0 + ] + ], + "roundness": null + }, + { + "type": "rectangle", + "id": "band33", + "x": 0, + "y": 187.3, + "width": 880, + "height": 189.75, + "strokeColor": "#0f766e", + "backgroundColor": "#ccfbf1", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1065, + "version": 1, + "versionNonce": 1066, + "isDeleted": false, + "groupIds": [], + "boundElements": [], + "link": null, + "locked": false, + "roundness": { + "type": 3 + } + }, + { + "type": "rectangle", + "id": "fill54", + "x": -1, + "y": 345.05, + "width": 33, + "height": 32.0, + "strokeColor": "transparent", + "backgroundColor": "#ccfbf1", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1107, + "version": 1, + "versionNonce": 1108, + "isDeleted": false, + "groupIds": [], + "boundElements": [], + "link": null, + "locked": false, + "roundness": null + }, + { + "type": "rectangle", + "id": "fill55", + "x": 848, + "y": 345.05, + "width": 33, + "height": 32.0, + "strokeColor": "transparent", + "backgroundColor": "#ccfbf1", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1109, + "version": 1, + "versionNonce": 1110, + "isDeleted": false, + "groupIds": [], + "boundElements": [], + "link": null, + "locked": false, + "roundness": null + }, + { + "type": "line", + "id": "ln56", + "x": 0, + "y": 345.05, + "width": 0, + "height": 32.0, + "strokeColor": "#0f766e", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1111, + "version": 1, + "versionNonce": 1112, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "points": [ + [ + 0, + 0.0 + ], + [ + 0, + 32.0 + ] + ], + "roundness": null + }, + { + "type": "line", + "id": "ln57", + "x": 880, + "y": 345.05, + "width": 0, + "height": 32.0, + "strokeColor": "#0f766e", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1113, + "version": 1, + "versionNonce": 1114, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "points": [ + [ + 0, + 0.0 + ], + [ + 0, + 32.0 + ] + ], + "roundness": null + }, + { + "type": "rectangle", + "id": "band15", + "x": 0, + "y": 91.65, + "width": 880, + "height": 71.65, + "strokeColor": "#6d28d9", + "backgroundColor": "#ede9fe", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1029, + "version": 1, + "versionNonce": 1030, + "isDeleted": false, + "groupIds": [], + "boundElements": [], + "link": null, + "locked": false, + "roundness": { + "type": 3 + } + }, + { + "type": "rectangle", + "id": "panel1", + "x": 0, + "y": 0, + "width": 388.0, + "height": 67.65, + "strokeColor": "#be123c", + "backgroundColor": "#ffe4e6", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1001, + "version": 1, + "versionNonce": 1002, + "isDeleted": false, + "groupIds": [], + "boundElements": [], + "link": null, + "locked": false, + "roundness": { + "type": 3 + } + }, + { + "type": "rectangle", + "id": "panel2", + "x": 492.0, + "y": 0, + "width": 388.0, + "height": 67.65, + "strokeColor": "#15803d", + "backgroundColor": "#dcfce7", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1003, + "version": 1, + "versionNonce": 1004, + "isDeleted": false, + "groupIds": [], + "boundElements": [], + "link": null, + "locked": false, + "roundness": { + "type": 3 + } + }, + { + "type": "image", + "id": "bicon3", + "x": 18, + "y": 12.0, + "width": 28, + "height": 28, + "strokeColor": "transparent", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1005, + "version": 1, + "versionNonce": 1006, + "isDeleted": false, + "groupIds": [], + "boundElements": [], + "link": null, + "locked": false, + "fileId": "img_bicon3", + "status": "saved", + "scale": [ + 1, + 1 + ], + "roundness": null, + "crop": null + }, + { + "type": "text", + "id": "btitle4", + "x": 58, + "y": 14, + "width": 93.96, + "height": 22.5, + "strokeColor": "#881337", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1007, + "version": 1, + "versionNonce": 1008, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "Use Cases", + "originalText": "Use Cases", + "fontSize": 18, + "fontFamily": 2, + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 + }, + { + "type": "text", + "id": "bsub5", + "x": 58, + "y": 37.400000000000006, + "width": 211.11999999999998, + "height": 16.25, + "strokeColor": "#be123c", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1009, + "version": 1, + "versionNonce": 1010, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "what the project wants built", + "originalText": "what the project wants built", + "fontSize": 13, + "fontFamily": 2, + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 + }, + { + "type": "image", + "id": "bicon6", + "x": 510.0, + "y": 12.0, + "width": 28, + "height": 28, + "strokeColor": "transparent", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1011, + "version": 1, + "versionNonce": 1012, + "isDeleted": false, + "groupIds": [], + "boundElements": [], + "link": null, + "locked": false, + "fileId": "img_bicon6", + "status": "saved", + "scale": [ + 1, + 1 + ], + "roundness": null, + "crop": null + }, + { + "type": "text", + "id": "btitle7", + "x": 550.0, + "y": 14, + "width": 198.35999999999999, + "height": 22.5, + "strokeColor": "#14532d", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1013, + "version": 1, + "versionNonce": 1014, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "Sample Applications", + "originalText": "Sample Applications", + "fontSize": 18, + "fontFamily": 2, + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 + }, + { + "type": "text", + "id": "bsub8", + "x": 550.0, + "y": 37.400000000000006, + "width": 143.26, + "height": 16.25, + "strokeColor": "#15803d", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1015, + "version": 1, + "versionNonce": 1016, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "what has been built", + "originalText": "what has been built", + "fontSize": 13, + "fontFamily": 2, + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 + }, + { + "type": "line", + "id": "conn9", + "x": 390.0, + "y": 33.825, + "width": 100.0, + "height": 0, + "strokeColor": "#64748b", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1017, + "version": 1, + "versionNonce": 1018, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "points": [ + [ + 0, + 0 + ], + [ + 100.0, + 0 + ] + ] + }, + { + "type": "rectangle", + "id": "chip10", + "x": 389.53, + "y": 4.575000000000003, + "width": 100.94, + "height": 22.25, + "strokeColor": "transparent", + "backgroundColor": "#ffffff", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1019, + "version": 1, + "versionNonce": 1020, + "isDeleted": false, + "groupIds": [], + "boundElements": [], + "link": null, + "locked": false, + "roundness": { + "type": 3 + } + }, + { + "type": "text", + "id": "chipt11", + "x": 398.53, + "y": 7.575000000000003, + "width": 82.94, + "height": 16.25, + "strokeColor": "#64748b", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1021, + "version": 1, + "versionNonce": 1022, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "illustrates", + "originalText": "illustrates", + "fontSize": 13, + "fontFamily": 2, + "textAlign": "center", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 + }, + { + "type": "image", + "id": "bicon12", + "x": 18, + "y": 105.65, + "width": 28, + "height": 28, + "strokeColor": "transparent", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1023, + "version": 1, + "versionNonce": 1024, + "isDeleted": false, + "groupIds": [], + "boundElements": [], + "link": null, + "locked": false, + "fileId": "img_bicon12", + "status": "saved", + "scale": [ + 1, + 1 + ], + "roundness": null, + "crop": null + }, + { + "type": "text", + "id": "btitle13", + "x": 58, + "y": 107.65, + "width": 41.76, + "height": 22.5, + "strokeColor": "#4c1d95", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1025, + "version": 1, + "versionNonce": 1026, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "SDKs", + "originalText": "SDKs", + "fontSize": 18, + "fontFamily": 2, + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 + }, + { + "type": "text", + "id": "bsub14", + "x": 58, + "y": 131.05, + "width": 520.26, + "height": 16.25, + "strokeColor": "#6d28d9", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1027, + "version": 1, + "versionNonce": 1028, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "wrap the structures \u00b7 attach the shared knowledge \u00b7 support authoring", + "originalText": "wrap the structures \u00b7 attach the shared knowledge \u00b7 support authoring", + "fontSize": 13, + "fontFamily": 2, + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 + }, + { + "type": "image", + "id": "bicon16", + "x": 18, + "y": 203.3, + "width": 28, + "height": 28, + "strokeColor": "transparent", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1031, + "version": 1, + "versionNonce": 1032, + "isDeleted": false, + "groupIds": [], + "boundElements": [], + "link": null, + "locked": false, + "fileId": "img_bicon16", + "status": "saved", + "scale": [ + 1, + 1 + ], + "roundness": null, + "crop": null + }, + { + "type": "text", + "id": "btitle17", + "x": 58, + "y": 205.3, + "width": 174.0, + "height": 25.0, + "strokeColor": "#134e4a", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1033, + "version": 1, + "versionNonce": 1034, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "Data Structures", + "originalText": "Data Structures", + "fontSize": 20, + "fontFamily": 2, + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 + }, + { + "type": "text", + "id": "bsub18", + "x": 58, + "y": 231.3, + "width": 226.2, + "height": 16.25, + "strokeColor": "#0f766e", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1035, + "version": 1, + "versionNonce": 1036, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "this patient \u00b7 Patient Context", + "originalText": "this patient \u00b7 Patient Context", + "fontSize": 13, + "fontFamily": 2, + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 + }, + { + "type": "rectangle", + "id": "blk19", + "x": 20.0, + "y": 261.55, + "width": 195.0, + "height": 95.5, + "strokeColor": "#0f766e", + "backgroundColor": "#99f6e4", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1037, + "version": 1, + "versionNonce": 1038, + "isDeleted": false, + "groupIds": [], + "boundElements": [], + "link": null, + "locked": false, + "roundness": { + "type": 3 + } + }, + { + "type": "image", + "id": "blki20", + "x": 103.5, + "y": 281.925, + "width": 28, + "height": 28, + "strokeColor": "transparent", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1039, + "version": 1, + "versionNonce": 1040, + "isDeleted": false, + "groupIds": [], + "boundElements": [], + "link": null, + "locked": false, + "fileId": "img_blki20", + "status": "saved", + "scale": [ + 1, + 1 + ], + "roundness": null, + "crop": null + }, + { + "type": "text", + "id": "blkt21", + "x": 26.0, + "y": 315.925, + "width": 183.0, + "height": 18.75, + "strokeColor": "#134e4a", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1041, + "version": 1, + "versionNonce": 1042, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "Observation", + "originalText": "Observation", + "fontSize": 15, + "fontFamily": 2, + "textAlign": "center", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 + }, + { + "type": "rectangle", + "id": "blk22", + "x": 235.0, + "y": 261.55, + "width": 195.0, + "height": 95.5, + "strokeColor": "#0f766e", + "backgroundColor": "#99f6e4", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1043, + "version": 1, + "versionNonce": 1044, + "isDeleted": false, + "groupIds": [], + "boundElements": [], + "link": null, + "locked": false, + "roundness": { + "type": 3 + } + }, + { + "type": "image", + "id": "blki23", + "x": 318.5, + "y": 272.55, + "width": 28, + "height": 28, + "strokeColor": "transparent", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1045, + "version": 1, + "versionNonce": 1046, + "isDeleted": false, + "groupIds": [], + "boundElements": [], + "link": null, + "locked": false, + "fileId": "img_blki23", + "status": "saved", + "scale": [ + 1, + 1 + ], + "roundness": null, + "crop": null + }, + { + "type": "text", + "id": "blkt24", + "x": 241.0, + "y": 306.55, + "width": 183.0, + "height": 18.75, + "strokeColor": "#134e4a", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1047, + "version": 1, + "versionNonce": 1048, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "Exam Finding", + "originalText": "Exam Finding", + "fontSize": 15, + "fontFamily": 2, + "textAlign": "center", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 + }, + { + "type": "text", + "id": "blkt25", + "x": 241.0, + "y": 325.3, + "width": 183.0, + "height": 18.75, + "strokeColor": "#134e4a", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1049, + "version": 1, + "versionNonce": 1050, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "List", + "originalText": "List", + "fontSize": 15, + "fontFamily": 2, + "textAlign": "center", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 + }, + { + "type": "rectangle", + "id": "blk26", + "x": 450.0, + "y": 261.55, + "width": 195.0, + "height": 95.5, + "strokeColor": "#0f766e", + "backgroundColor": "#99f6e4", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1051, + "version": 1, + "versionNonce": 1052, + "isDeleted": false, + "groupIds": [], + "boundElements": [], + "link": null, + "locked": false, + "roundness": { + "type": 3 + } + }, + { + "type": "image", + "id": "blki27", + "x": 533.5, + "y": 272.55, + "width": 28, + "height": 28, + "strokeColor": "transparent", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1053, + "version": 1, + "versionNonce": 1054, + "isDeleted": false, + "groupIds": [], + "boundElements": [], + "link": null, + "locked": false, + "fileId": "img_blki27", + "status": "saved", + "scale": [ + 1, + 1 + ], + "roundness": null, + "crop": null + }, + { + "type": "text", + "id": "blkt28", + "x": 456.0, + "y": 306.55, + "width": 183.0, + "height": 18.75, + "strokeColor": "#134e4a", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1055, + "version": 1, + "versionNonce": 1056, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "Imaging Problem", + "originalText": "Imaging Problem", + "fontSize": 15, + "fontFamily": 2, + "textAlign": "center", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 + }, + { + "type": "text", + "id": "blkt29", + "x": 456.0, + "y": 325.3, + "width": 183.0, + "height": 18.75, + "strokeColor": "#134e4a", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1057, + "version": 1, + "versionNonce": 1058, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "List", + "originalText": "List", + "fontSize": 15, + "fontFamily": 2, + "textAlign": "center", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 + }, + { + "type": "rectangle", + "id": "blk30", + "x": 665.0, + "y": 261.55, + "width": 195.0, + "height": 95.5, + "strokeColor": "#0f766e", + "backgroundColor": "#99f6e4", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1059, + "version": 1, + "versionNonce": 1060, + "isDeleted": false, + "groupIds": [], + "boundElements": [], + "link": null, + "locked": false, + "roundness": { + "type": 3 + } + }, + { + "type": "image", + "id": "blki31", + "x": 746.5, + "y": 279.925, + "width": 32, + "height": 32, + "strokeColor": "transparent", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1061, + "version": 1, + "versionNonce": 1062, + "isDeleted": false, + "groupIds": [], + "boundElements": [], + "link": null, + "locked": false, + "fileId": "img_blki31", + "status": "saved", + "scale": [ + 1, + 1 + ], + "roundness": null, + "crop": null + }, + { + "type": "text", + "id": "blkt32", + "x": 671.0, + "y": 315.925, + "width": 183.0, + "height": 18.75, + "strokeColor": "#134e4a", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1063, + "version": 1, + "versionNonce": 1064, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "Imaging Persona", + "originalText": "Imaging Persona", + "fontSize": 15, + "fontFamily": 2, + "textAlign": "center", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 + }, + { + "type": "image", + "id": "bicon34", + "x": 18, + "y": 427.05, + "width": 28, + "height": 28, + "strokeColor": "transparent", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1067, + "version": 1, + "versionNonce": 1068, + "isDeleted": false, + "groupIds": [], + "boundElements": [], + "link": null, + "locked": false, + "fileId": "img_bicon34", + "status": "saved", + "scale": [ + 1, + 1 + ], + "roundness": null, + "crop": null + }, + { + "type": "text", + "id": "btitle35", + "x": 58, + "y": 429.05, + "width": 208.79999999999998, + "height": 25.0, + "strokeColor": "#78350f", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1069, + "version": 1, + "versionNonce": 1070, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "Foundation Context", + "originalText": "Foundation Context", + "fontSize": 20, + "fontFamily": 2, + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 + }, + { + "type": "text", + "id": "bsub36", + "x": 58, + "y": 455.05, + "width": 188.5, + "height": 16.25, + "strokeColor": "#b45309", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1071, + "version": 1, + "versionNonce": 1072, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "shared, curated knowledge", + "originalText": "shared, curated knowledge", + "fontSize": 13, + "fontFamily": 2, + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 + }, + { + "type": "rectangle", + "id": "chip37", + "x": 381.99, + "y": 483.3, + "width": 116.02, + "height": 22.25, + "strokeColor": "#b45309", + "backgroundColor": "#fef3c7", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1073, + "version": 1, + "versionNonce": 1074, + "isDeleted": false, + "groupIds": [], + "boundElements": [], + "link": null, + "locked": false, + "roundness": { + "type": 3 + } + }, + { + "type": "text", + "id": "chipt38", + "x": 390.99, + "y": 486.3, + "width": 98.02, + "height": 16.25, + "strokeColor": "#78350f", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1075, + "version": 1, + "versionNonce": 1076, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "relationships", + "originalText": "relationships", + "fontSize": 13, + "fontFamily": 2, + "textAlign": "center", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 + }, + { + "type": "rectangle", + "id": "blk39", + "x": 20.0, + "y": 515.55, + "width": 237.33333333333334, + "height": 95.0, + "strokeColor": "#b45309", + "backgroundColor": "#fde68a", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1077, + "version": 1, + "versionNonce": 1078, + "isDeleted": false, + "groupIds": [], + "boundElements": [], + "link": null, + "locked": false, + "roundness": { + "type": 3 + } + }, + { + "type": "image", + "id": "blki40", + "x": 124.66666666666669, + "y": 526.55, + "width": 28, + "height": 28, + "strokeColor": "transparent", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1079, + "version": 1, + "versionNonce": 1080, + "isDeleted": false, + "groupIds": [], + "boundElements": [], + "link": null, + "locked": false, + "fileId": "img_blki40", + "status": "saved", + "scale": [ + 1, + 1 + ], + "roundness": null, + "crop": null + }, + { + "type": "text", + "id": "blkt41", + "x": 26.0, + "y": 560.55, + "width": 225.33333333333334, + "height": 18.75, + "strokeColor": "#78350f", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1081, + "version": 1, + "versionNonce": 1082, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "Finding/diagnosis definitions", + "originalText": "Finding/diagnosis definitions", + "fontSize": 15, + "fontFamily": 2, + "textAlign": "center", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 + }, + { + "type": "text", + "id": "blkd42", + "x": 26.0, + "y": 581.3, + "width": 225.33333333333334, + "height": 16.25, + "strokeColor": "#b45309", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1083, + "version": 1, + "versionNonce": 1084, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "finding models \u00b7 CDEs", + "originalText": "finding models \u00b7 CDEs", + "fontSize": 13, + "fontFamily": 2, + "textAlign": "center", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 + }, + { + "type": "rectangle", + "id": "blk43", + "x": 321.33333333333337, + "y": 515.55, + "width": 237.33333333333334, + "height": 95.0, + "strokeColor": "#b45309", + "backgroundColor": "#fde68a", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1085, + "version": 1, + "versionNonce": 1086, + "isDeleted": false, + "groupIds": [], + "boundElements": [], + "link": null, + "locked": false, + "roundness": { + "type": 3 + } + }, + { + "type": "image", + "id": "blki44", + "x": 424.00000000000006, + "y": 524.55, + "width": 32, + "height": 32, + "strokeColor": "transparent", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1087, + "version": 1, + "versionNonce": 1088, + "isDeleted": false, + "groupIds": [], + "boundElements": [], + "link": null, + "locked": false, + "fileId": "img_blki44", + "status": "saved", + "scale": [ + 1, + 1 + ], + "roundness": null, + "crop": null + }, + { + "type": "text", + "id": "blkt45", + "x": 327.33333333333337, + "y": 560.55, + "width": 225.33333333333334, + "height": 18.75, + "strokeColor": "#78350f", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1089, + "version": 1, + "versionNonce": 1090, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "Anatomic locations", + "originalText": "Anatomic locations", + "fontSize": 15, + "fontFamily": 2, + "textAlign": "center", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 + }, + { + "type": "text", + "id": "blkd46", + "x": 327.33333333333337, + "y": 581.3, + "width": 225.33333333333334, + "height": 16.25, + "strokeColor": "#b45309", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1091, + "version": 1, + "versionNonce": 1092, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "anchored in RadLex", + "originalText": "anchored in RadLex", + "fontSize": 13, + "fontFamily": 2, + "textAlign": "center", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 + }, + { + "type": "rectangle", + "id": "blk47", + "x": 622.6666666666667, + "y": 515.55, + "width": 237.33333333333334, + "height": 95.0, + "strokeColor": "#b45309", + "backgroundColor": "#fde68a", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1093, + "version": 1, + "versionNonce": 1094, + "isDeleted": false, + "groupIds": [], + "boundElements": [], + "link": null, + "locked": false, + "roundness": { + "type": 3 + } + }, + { + "type": "image", + "id": "blki48", + "x": 725.3333333333334, + "y": 524.55, + "width": 32, + "height": 32, + "strokeColor": "transparent", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1095, + "version": 1, + "versionNonce": 1096, + "isDeleted": false, + "groupIds": [], + "boundElements": [], + "link": null, + "locked": false, + "fileId": "img_blki48", + "status": "saved", + "scale": [ + 1, + 1 + ], + "roundness": null, + "crop": null + }, + { + "type": "text", + "id": "blkt49", + "x": 628.6666666666667, + "y": 560.55, + "width": 225.33333333333334, + "height": 18.75, + "strokeColor": "#78350f", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1097, + "version": 1, + "versionNonce": 1098, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "Exam types", + "originalText": "Exam types", + "fontSize": 15, + "fontFamily": 2, + "textAlign": "center", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 + }, + { + "type": "text", + "id": "blkd50", + "x": 628.6666666666667, + "y": 581.3, + "width": 225.33333333333334, + "height": 16.25, + "strokeColor": "#b45309", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1099, + "version": 1, + "versionNonce": 1100, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "LOINC/RSNA Playbook", + "originalText": "LOINC/RSNA Playbook", + "fontSize": 13, + "fontFamily": 2, + "textAlign": "center", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 + }, + { + "type": "arrow", + "id": "conn51", + "x": 263.33333333333337, + "y": 563.05, + "width": 52.0, + "height": 0, + "strokeColor": "#b45309", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1101, + "version": 1, + "versionNonce": 1102, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "points": [ + [ + 0, + 0 + ], + [ + 52.0, + 0 + ] + ], + "startArrowhead": "arrow", + "endArrowhead": "arrow" + }, + { + "type": "arrow", + "id": "conn52", + "x": 564.6666666666667, + "y": 563.05, + "width": 52.0, + "height": 0, + "strokeColor": "#b45309", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1103, + "version": 1, + "versionNonce": 1104, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "points": [ + [ + 0, + 0 + ], + [ + 52.0, + 0 + ] + ], + "startArrowhead": "arrow", + "endArrowhead": "arrow" + }, + { + "type": "line", + "id": "ln62", + "x": 0, + "y": 377.05, + "width": 880, + "height": 0.0, + "strokeColor": "#0f766e", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1123, + "version": 1, + "versionNonce": 1124, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "points": [ + [ + 0, + 0.0 + ], + [ + 880, + 0.0 + ] + ], + "roundness": null + }, + { + "type": "text", + "id": "bl63", + "x": 20, + "y": 385.925, + "width": 180.95999999999998, + "height": 16.25, + "strokeColor": "#b45309", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1125, + "version": 1, + "versionNonce": 1126, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "woven together at every:", + "originalText": "woven together at every:", + "fontSize": 13, + "fontFamily": 2, + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 + }, + { + "type": "rectangle", + "id": "fill64", + "x": 222.95999999999998, + "y": 365.05, + "width": 120.0, + "height": 46.0, + "strokeColor": "transparent", + "backgroundColor": "#ccfbf1", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1127, + "version": 1, + "versionNonce": 1128, + "isDeleted": false, + "groupIds": [], + "boundElements": [], + "link": null, + "locked": false, + "roundness": { + "type": 3 + } + }, + { + "type": "line", + "id": "ln65", + "x": 222.95999999999998, + "y": 370.05, + "width": 120.0, + "height": 41.0, + "strokeColor": "#0f766e", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1129, + "version": 1, + "versionNonce": 1130, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "points": [ + [ + 0.0, + 0.0 + ], + [ + 0.0, + 30.0 + ], + [ + 0.8373251423758461, + 34.209517756016 + ], + [ + 3.2218254069479713, + 37.77817459305203 + ], + [ + 6.790482243984002, + 40.162674857624154 + ], + [ + 11.0, + 41.0 + ], + [ + 109.0, + 41.0 + ], + [ + 113.209517756016, + 40.162674857624154 + ], + [ + 116.77817459305203, + 37.77817459305203 + ], + [ + 119.16267485762415, + 34.209517756016 + ], + [ + 120.0, + 30.0 + ], + [ + 120.0, + 0.0 + ] + ], + "roundness": null + }, + { + "type": "text", + "id": "bw66", + "x": 222.95999999999998, + "y": 385.925, + "width": 120.0, + "height": 16.25, + "strokeColor": "#134e4a", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1131, + "version": 1, + "versionNonce": 1132, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "finding", + "originalText": "finding", + "fontSize": 13, + "fontFamily": 2, + "textAlign": "center", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 + }, + { + "type": "rectangle", + "id": "fill67", + "x": 381.9733333333333, + "y": 365.05, + "width": 120.0, + "height": 46.0, + "strokeColor": "transparent", + "backgroundColor": "#ccfbf1", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1133, + "version": 1, + "versionNonce": 1134, + "isDeleted": false, + "groupIds": [], + "boundElements": [], + "link": null, + "locked": false, + "roundness": { + "type": 3 + } + }, + { + "type": "line", + "id": "ln68", + "x": 381.9733333333333, + "y": 370.05, + "width": 120.0, + "height": 41.0, + "strokeColor": "#0f766e", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1135, + "version": 1, + "versionNonce": 1136, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "points": [ + [ + 0.0, + 0.0 + ], + [ + 0.0, + 30.0 + ], + [ + 0.8373251423758461, + 34.209517756016 + ], + [ + 3.2218254069479713, + 37.77817459305203 + ], + [ + 6.790482243984002, + 40.162674857624154 + ], + [ + 11.0, + 41.0 + ], + [ + 109.0, + 41.0 + ], + [ + 113.209517756016, + 40.162674857624154 + ], + [ + 116.77817459305203, + 37.77817459305203 + ], + [ + 119.16267485762415, + 34.209517756016 + ], + [ + 120.0, + 30.0 + ], + [ + 120.0, + 0.0 + ] + ], + "roundness": null + }, + { + "type": "text", + "id": "bw69", + "x": 381.9733333333333, + "y": 385.925, + "width": 120.0, + "height": 16.25, + "strokeColor": "#134e4a", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1137, + "version": 1, + "versionNonce": 1138, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "diagnosis", + "originalText": "diagnosis", + "fontSize": 13, + "fontFamily": 2, + "textAlign": "center", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 + }, + { + "type": "rectangle", + "id": "fill70", + "x": 540.9866666666667, + "y": 365.05, + "width": 120.0, + "height": 46.0, + "strokeColor": "transparent", + "backgroundColor": "#ccfbf1", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1139, + "version": 1, + "versionNonce": 1140, + "isDeleted": false, + "groupIds": [], + "boundElements": [], + "link": null, + "locked": false, + "roundness": { + "type": 3 + } + }, + { + "type": "line", + "id": "ln71", + "x": 540.9866666666667, + "y": 370.05, + "width": 120.0, + "height": 41.0, + "strokeColor": "#0f766e", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1141, + "version": 1, + "versionNonce": 1142, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "points": [ + [ + 0.0, + 0.0 + ], + [ + 0.0, + 30.0 + ], + [ + 0.8373251423759029, + 34.209517756016 + ], + [ + 3.221825406948028, + 37.77817459305203 + ], + [ + 6.790482243984002, + 40.162674857624154 + ], + [ + 11.0, + 41.0 + ], + [ + 109.0, + 41.0 + ], + [ + 113.209517756016, + 40.162674857624154 + ], + [ + 116.77817459305197, + 37.77817459305203 + ], + [ + 119.1626748576241, + 34.209517756016 + ], + [ + 120.0, + 30.0 + ], + [ + 120.0, + 0.0 + ] + ], + "roundness": null + }, + { + "type": "text", + "id": "bw72", + "x": 540.9866666666667, + "y": 385.925, + "width": 120.0, + "height": 16.25, + "strokeColor": "#134e4a", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1143, + "version": 1, + "versionNonce": 1144, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "location", + "originalText": "location", + "fontSize": 13, + "fontFamily": 2, + "textAlign": "center", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 + }, + { + "type": "rectangle", + "id": "fill73", + "x": 700.0, + "y": 365.05, + "width": 120.0, + "height": 46.0, + "strokeColor": "transparent", + "backgroundColor": "#ccfbf1", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1145, + "version": 1, + "versionNonce": 1146, + "isDeleted": false, + "groupIds": [], + "boundElements": [], + "link": null, + "locked": false, + "roundness": { + "type": 3 + } + }, + { + "type": "line", + "id": "ln74", + "x": 700.0, + "y": 370.05, + "width": 120.0, + "height": 41.0, + "strokeColor": "#0f766e", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1147, + "version": 1, + "versionNonce": 1148, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "points": [ + [ + 0.0, + 0.0 + ], + [ + 0.0, + 30.0 + ], + [ + 0.8373251423759029, + 34.209517756016 + ], + [ + 3.221825406948028, + 37.77817459305203 + ], + [ + 6.790482243984002, + 40.162674857624154 + ], + [ + 11.0, + 41.0 + ], + [ + 109.0, + 41.0 + ], + [ + 113.209517756016, + 40.162674857624154 + ], + [ + 116.77817459305197, + 37.77817459305203 + ], + [ + 119.1626748576241, + 34.209517756016 + ], + [ + 120.0, + 30.0 + ], + [ + 120.0, + 0.0 + ] + ], + "roundness": null + }, + { + "type": "text", + "id": "bw75", + "x": 700.0, + "y": 385.925, + "width": 120.0, + "height": 16.25, + "strokeColor": "#134e4a", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1149, + "version": 1, + "versionNonce": 1150, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "exam type", + "originalText": "exam type", + "fontSize": 13, + "fontFamily": 2, + "textAlign": "center", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 + } + ], + "appState": { + "viewBackgroundColor": "#ffffff", + "gridSize": null + }, + "files": { + "img_bicon3": { + "mimeType": "image/svg+xml", + "id": "img_bicon3", + "dataURL": "data:image/svg+xml;base64,PHN2ZwogIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIKICB3aWR0aD0iMjQiCiAgaGVpZ2h0PSIyNCIKICB2aWV3Qm94PSIwIDAgMjQgMjQiCiAgZmlsbD0ibm9uZSIKICBzdHJva2U9IiNiZTEyM2MiCiAgc3Ryb2tlLXdpZHRoPSIyIgogIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIKICBzdHJva2UtbGluZWpvaW49InJvdW5kIgo+CiAgPHBhdGggZD0iTTE1IDE0Yy4yLTEgLjctMS43IDEuNS0yLjUgMS0uOSAxLjUtMi4yIDEuNS0zLjVBNiA2IDAgMCAwIDYgOGMwIDEgLjIgMi4yIDEuNSAzLjUuNy43IDEuMyAxLjUgMS41IDIuNSIgLz4KICA8cGF0aCBkPSJNOSAxOGg2IiAvPgogIDxwYXRoIGQ9Ik0xMCAyMmg0IiAvPgo8L3N2Zz4K", + "created": 1700000000000 + }, + "img_bicon6": { + "mimeType": "image/svg+xml", + "id": "img_bicon6", + "dataURL": "data:image/svg+xml;base64,PHN2ZwogIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIKICB3aWR0aD0iMjQiCiAgaGVpZ2h0PSIyNCIKICB2aWV3Qm94PSIwIDAgMjQgMjQiCiAgZmlsbD0ibm9uZSIKICBzdHJva2U9IiMxNTgwM2QiCiAgc3Ryb2tlLXdpZHRoPSIyIgogIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIKICBzdHJva2UtbGluZWpvaW49InJvdW5kIgo+CiAgPHJlY3QgeD0iMiIgeT0iNCIgd2lkdGg9IjIwIiBoZWlnaHQ9IjE2IiByeD0iMiIgLz4KICA8cGF0aCBkPSJNMTAgNHY0IiAvPgogIDxwYXRoIGQ9Ik0yIDhoMjAiIC8+CiAgPHBhdGggZD0iTTYgNHY0IiAvPgo8L3N2Zz4K", + "created": 1700000000000 + }, + "img_bicon12": { + "mimeType": "image/svg+xml", + "id": "img_bicon12", + "dataURL": "data:image/svg+xml;base64,PHN2ZwogIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIKICB3aWR0aD0iMjQiCiAgaGVpZ2h0PSIyNCIKICB2aWV3Qm94PSIwIDAgMjQgMjQiCiAgZmlsbD0ibm9uZSIKICBzdHJva2U9IiM2ZDI4ZDkiCiAgc3Ryb2tlLXdpZHRoPSIyIgogIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIKICBzdHJva2UtbGluZWpvaW49InJvdW5kIgo+CiAgPHBhdGggZD0iTTExIDIxLjczYTIgMiAwIDAgMCAyIDBsNy00QTIgMiAwIDAgMCAyMSAxNlY4YTIgMiAwIDAgMC0xLTEuNzNsLTctNGEyIDIgMCAwIDAtMiAwbC03IDRBMiAyIDAgMCAwIDMgOHY4YTIgMiAwIDAgMCAxIDEuNzN6IiAvPgogIDxwYXRoIGQ9Ik0xMiAyMlYxMiIgLz4KICA8cG9seWxpbmUgcG9pbnRzPSIzLjI5IDcgMTIgMTIgMjAuNzEgNyIgLz4KICA8cGF0aCBkPSJtNy41IDQuMjcgOSA1LjE1IiAvPgo8L3N2Zz4K", + "created": 1700000000000 + }, + "img_bicon16": { + "mimeType": "image/svg+xml", + "id": "img_bicon16", + "dataURL": "data:image/svg+xml;base64,PHN2ZwogIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIKICB3aWR0aD0iMjQiCiAgaGVpZ2h0PSIyNCIKICB2aWV3Qm94PSIwIDAgMjQgMjQiCiAgZmlsbD0ibm9uZSIKICBzdHJva2U9IiMwZjc2NmUiCiAgc3Ryb2tlLXdpZHRoPSIyIgogIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIKICBzdHJva2UtbGluZWpvaW49InJvdW5kIgo+CiAgPHBhdGggZD0iTTEyLjgzIDIuMThhMiAyIDAgMCAwLTEuNjYgMEwyLjYgNi4wOGExIDEgMCAwIDAgMCAxLjgzbDguNTggMy45MWEyIDIgMCAwIDAgMS42NiAwbDguNTgtMy45YTEgMSAwIDAgMCAwLTEuODN6IiAvPgogIDxwYXRoIGQ9Ik0yIDEyYTEgMSAwIDAgMCAuNTguOTFsOC42IDMuOTFhMiAyIDAgMCAwIDEuNjUgMGw4LjU4LTMuOUExIDEgMCAwIDAgMjIgMTIiIC8+CiAgPHBhdGggZD0iTTIgMTdhMSAxIDAgMCAwIC41OC45MWw4LjYgMy45MWEyIDIgMCAwIDAgMS42NSAwbDguNTgtMy45QTEgMSAwIDAgMCAyMiAxNyIgLz4KPC9zdmc+Cg==", + "created": 1700000000000 + }, + "img_blki20": { + "mimeType": "image/svg+xml", + "id": "img_blki20", + "dataURL": "data:image/svg+xml;base64,PHN2ZwogIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIKICB3aWR0aD0iMjQiCiAgaGVpZ2h0PSIyNCIKICB2aWV3Qm94PSIwIDAgMjQgMjQiCiAgZmlsbD0ibm9uZSIKICBzdHJva2U9IiMwZjc2NmUiCiAgc3Ryb2tlLXdpZHRoPSIyIgogIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIKICBzdHJva2UtbGluZWpvaW49InJvdW5kIgo+CiAgPHJlY3Qgd2lkdGg9IjgiIGhlaWdodD0iNCIgeD0iOCIgeT0iMiIgcng9IjEiIHJ5PSIxIiAvPgogIDxwYXRoIGQ9Ik0xNiA0aDJhMiAyIDAgMCAxIDIgMnYxNGEyIDIgMCAwIDEtMiAySDZhMiAyIDAgMCAxLTItMlY2YTIgMiAwIDAgMSAyLTJoMiIgLz4KPC9zdmc+Cg==", + "created": 1700000000000 + }, + "img_blki23": { + "mimeType": "image/svg+xml", + "id": "img_blki23", + "dataURL": "data:image/svg+xml;base64,PHN2ZwogIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIKICB3aWR0aD0iMjQiCiAgaGVpZ2h0PSIyNCIKICB2aWV3Qm94PSIwIDAgMjQgMjQiCiAgZmlsbD0ibm9uZSIKICBzdHJva2U9IiMwZjc2NmUiCiAgc3Ryb2tlLXdpZHRoPSIyIgogIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIKICBzdHJva2UtbGluZWpvaW49InJvdW5kIgo+CiAgPHJlY3Qgd2lkdGg9IjgiIGhlaWdodD0iNCIgeD0iOCIgeT0iMiIgcng9IjEiIHJ5PSIxIiAvPgogIDxwYXRoIGQ9Ik0xNiA0aDJhMiAyIDAgMCAxIDIgMnYxNGEyIDIgMCAwIDEtMiAySDZhMiAyIDAgMCAxLTItMlY2YTIgMiAwIDAgMSAyLTJoMiIgLz4KICA8cGF0aCBkPSJNMTIgMTFoNCIgLz4KICA8cGF0aCBkPSJNMTIgMTZoNCIgLz4KICA8cGF0aCBkPSJNOCAxMWguMDEiIC8+CiAgPHBhdGggZD0iTTggMTZoLjAxIiAvPgo8L3N2Zz4K", + "created": 1700000000000 + }, + "img_blki27": { + "mimeType": "image/svg+xml", + "id": "img_blki27", + "dataURL": "data:image/svg+xml;base64,PHN2ZwogIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIKICB3aWR0aD0iMjQiCiAgaGVpZ2h0PSIyNCIKICB2aWV3Qm94PSIwIDAgMjQgMjQiCiAgZmlsbD0ibm9uZSIKICBzdHJva2U9IiMwZjc2NmUiCiAgc3Ryb2tlLXdpZHRoPSIyIgogIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIKICBzdHJva2UtbGluZWpvaW49InJvdW5kIgo+CiAgPHBhdGggZD0iTTMgNWguMDEiIC8+CiAgPHBhdGggZD0iTTMgMTJoLjAxIiAvPgogIDxwYXRoIGQ9Ik0zIDE5aC4wMSIgLz4KICA8cGF0aCBkPSJNOCA1aDEzIiAvPgogIDxwYXRoIGQ9Ik04IDEyaDEzIiAvPgogIDxwYXRoIGQ9Ik04IDE5aDEzIiAvPgo8L3N2Zz4K", + "created": 1700000000000 + }, + "img_blki31": { + "mimeType": "image/svg+xml", + "id": "img_blki31", + "dataURL": "data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNDgiIGhlaWdodD0iNDgiIHZpZXdCb3g9IjAgMCA0OCA0OCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0yNCAyNEMyOC40MjA0IDI0IDMyIDIwLjQyMDQgMzIgMTZDMzIgMTEuNTc5NiAyOC40MjA0IDggMjQgOEMxOS41Nzk2IDggMTYgMTEuNTc5NiAxNiAxNkMxNiAyMC40MjA0IDE5LjU3OTYgMjQgMjQgMjRaTTM0IDE2QzM0IDIxLjUyNSAyOS41MjUgMjYgMjQgMjZDMTguNDc1IDI2IDE0IDIxLjUyNSAxNCAxNkMxNCAxMC40NzUgMTguNDc1IDYgMjQgNkMyOS41MjUgNiAzNCAxMC40NzUgMzQgMTZaIiBmaWxsPSIjMGY3NjZlIi8+CjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgY2xpcC1ydWxlPSJldmVub2RkIiBkPSJNOS4yMjM0OCAzNC4yMTE5QzguMjIwMzggMzUuMDIxMSA4IDM1LjYyOTEgOCAzNlY0MEg0MFYzNkM0MCAzNS42MjkxIDM5Ljc3OTYgMzUuMDIxMSAzOC43NzY1IDM0LjIxMTlDMzcuNzk1OCAzMy40MjA3IDM2LjMzNDEgMzIuNjY2OSAzNC41NjIyIDMyLjAxNUMzMS4wMTk5IDMwLjcxMTcgMjYuNzUzMiAzMCAyNCAzMEMyMS4yNDY4IDMwIDE2Ljk4MDEgMzAuNzExNyAxMy40Mzc4IDMyLjAxNUMxMS42NjU5IDMyLjY2NjkgMTAuMjA0MiAzMy40MjA3IDkuMjIzNDggMzQuMjExOVpNMjQgMjhDMTcuOTkyNSAyOCA2IDMxLjAzNDcgNiAzNlY0Mkg0MlYzNkM0MiAzMS4wMzQ3IDMwLjAwNzUgMjggMjQgMjhaIiBmaWxsPSIjMGY3NjZlIi8+Cjwvc3ZnPgo=", + "created": 1700000000000 + }, + "img_bicon34": { + "mimeType": "image/svg+xml", + "id": "img_bicon34", + "dataURL": "data:image/svg+xml;base64,PHN2ZwogIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIKICB3aWR0aD0iMjQiCiAgaGVpZ2h0PSIyNCIKICB2aWV3Qm94PSIwIDAgMjQgMjQiCiAgZmlsbD0ibm9uZSIKICBzdHJva2U9IiNiNDUzMDkiCiAgc3Ryb2tlLXdpZHRoPSIyIgogIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIKICBzdHJva2UtbGluZWpvaW49InJvdW5kIgo+CiAgPHBhdGggZD0iTTEyIDV2MTYiIC8+CiAgPHBhdGggZD0iTTIwLjAwMSAxOUEyIDIgMCAwMDIyIDE3VjVhMiAyIDAgMDAtMS45OTktMkwxNiAzLjAwMkE1IDUgMCAwMDEyIDVhNSA1IDAgMDAtNC0ySDRhMiAyIDAgMDAtMiAydjEyYTIgMiAwIDAwMS45OTkgMkg4YTUgNSAwIDAxNCAyIDUgNSAwIDAxNC0yeiIgLz4KPC9zdmc+Cg==", + "created": 1700000000000 + }, + "img_blki40": { + "mimeType": "image/svg+xml", + "id": "img_blki40", + "dataURL": "data:image/svg+xml;base64,PHN2ZwogIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIKICB3aWR0aD0iMjQiCiAgaGVpZ2h0PSIyNCIKICB2aWV3Qm94PSIwIDAgMjQgMjQiCiAgZmlsbD0ibm9uZSIKICBzdHJva2U9IiNiNDUzMDkiCiAgc3Ryb2tlLXdpZHRoPSIyIgogIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIKICBzdHJva2UtbGluZWpvaW49InJvdW5kIgo+CiAgPHBhdGggZD0iTTEyLjU4NiAyLjU4NkEyIDIgMCAwIDAgMTEuMTcyIDJINGEyIDIgMCAwIDAtMiAydjcuMTcyYTIgMiAwIDAgMCAuNTg2IDEuNDE0bDguNzA0IDguNzA0YTIuNDI2IDIuNDI2IDAgMCAwIDMuNDIgMGw2LjU4LTYuNThhMi40MjYgMi40MjYgMCAwIDAgMC0zLjQyeiIgLz4KICA8Y2lyY2xlIGN4PSI3LjUiIGN5PSI3LjUiIHI9Ii41IiBmaWxsPSIjYjQ1MzA5IiAvPgo8L3N2Zz4K", + "created": 1700000000000 + }, + "img_blki44": { + "mimeType": "image/svg+xml", + "id": "img_blki44", + "dataURL": "data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNDgiIGhlaWdodD0iNDgiIHZpZXdCb3g9IjAgMCA0OCA0OCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0yMyA2LjAwMDEzQzIzIDYuMDAwMDQgMjMgNiAyNCA2SDI0LjE3NjFDMjQuMjUzMyA2IDI0LjMyMzMgNiAyNC4zODY4IDZDMjUgNi4wMDAwMSAyNSA2LjAwMDA1IDI1IDYuMDAwMTNWMjAuNUMyNSAyMS44OTc3IDI1LjU2NDEgMjIuNDQyMSAyNi4wMDM5IDIyLjY5ODdDMjYuMDUzIDIyLjcyNzMgMjYuMTAyNCAyMi43NTMzIDI2LjE1MTYgMjIuNzc3QzI2LjE1MDYgMjIuNjU2OCAyNi4xNDkzIDIyLjUzMTYgMjYuMTQ3OSAyMi40MDE5TDI2LjE0NzkgMjIuNDAwM0MyNi4xMTAxIDE4Ljg3MTYgMjYuMDM2NSAxMS45OTk3IDMxLjQ3NTMgMTEuOTk5N0MzOC45MjU5IDExLjk5OTcgNDQuMjQ3OCAzOC4wMDYyIDQxLjA1NDcgNDAuNjU5OUMzNy44NjE1IDQzLjMxMzYgMzEuNDc1MyA0MS43MjE0IDI4LjI4MjIgMzguNTM2OUMyNS43MDQyIDM1Ljk2NTkgMjUuOTI3MiAyOS45NTgzIDI2LjA4NzMgMjUuNjQ1N0wyNi4wODc0IDI1LjY0NDNDMjYuMDk3MSAyNS4zODE5IDI2LjEwNjcgMjUuMTI1OCAyNi4xMTUzIDI0Ljg3NzFDMjUuNzkgMjQuNzk2MiAyNS4zOTU5IDI0LjY1OTUgMjQuOTk2MiAyNC40MjYzQzI0LjYzOTggMjQuMjE4NCAyNC4yOTc1IDIzLjk0NDIgMjQgMjMuNTkxOUMyMy43MDI2IDIzLjk0NDIgMjMuMzYwMyAyNC4yMTg0IDIzLjAwMzkgMjQuNDI2M0MyMi42MDQxIDI0LjY1OTUgMjIuMjEwMSAyNC43OTYyIDIxLjg4NDggMjQuODc3MUMyMS44OTM0IDI1LjEyNjEgMjEuOTAyOSAyNS4zODI2IDIxLjkxMjcgMjUuNjQ1M0MyMi4wNzI4IDI5Ljk1NzkgMjIuMjk1OSAzNS45NjYyIDE5LjcxNzkgMzguNTM3MkMxNi41MjQ3IDQxLjcyMTcgMTAuMTM4NSA0My4zMTM5IDYuOTQ1MzYgNDAuNjYwMkMzLjc1MjIyIDM4LjAwNjUgOS4wNzQxMyAxMiAxNi41MjQ3IDEyQzIxLjk2MzYgMTIgMjEuODkgMTguODcxNyAyMS44NTIyIDIyLjQwMDNDMjEuODUyIDIyLjQxNjYgMjEuODUxOCAyMi40MzI4IDIxLjg1MTYgMjIuNDQ4OUMyMS44NTA0IDIyLjU2MTkgMjEuODQ5MyAyMi42NzE0IDIxLjg0ODQgMjIuNzc3QzIxLjg5NzcgMjIuNzUzNCAyMS45NDcxIDIyLjcyNzQgMjEuOTk2MiAyMi42OTg3QzIyLjQzNiAyMi40NDIxIDIzIDIxLjg5NzcgMjMgMjAuNVY2LjAwMDEzWk0zMS40NzUzIDEzLjk5OTdDMzAuNTIxMiAxMy45OTk3IDI5Ljk4NDMgMTQuMzAwMiAyOS42MDg2IDE0LjY4NjlDMjkuMTc1MiAxNS4xMzMxIDI4LjgxMzIgMTUuODUwNyAyOC41NTkgMTYuODY0NkMyOC4xMTQxIDE4LjYzOTUgMjguMTMzIDIwLjY4MTkgMjguMTQ4MyAyMi4zMjkzQzI4LjE1MDkgMjIuNjE0MiAyOC4xNTM0IDIyLjg4NzQgMjguMTUzNCAyMy4xNDUzQzI4LjE1MzQgMjMuOTA1MyAyOC4xMTk2IDI0LjgxNTMgMjguMDg0NSAyNS43NjIxQzI4LjA3MDcgMjYuMTM0OSAyOC4wNTY2IDI2LjUxMzMgMjguMDQ0MyAyNi44OTA1QzI3Ljk5OTYgMjguMjY1NyAyNy45NzQxIDI5LjcwNTUgMjguMDQwNSAzMS4wOTgyQzI4LjEwNzIgMzIuNDk4NSAyOC4yNjQyIDMzLjc4MzUgMjguNTU3MyAzNC44NTk2QzI4Ljg1MzggMzUuOTQ4MyAyOS4yNTA5IDM2LjY3ODQgMjkuNjk0NCAzNy4xMjA4QzMwLjk3MjYgMzguMzk1NCAzMi45OTA4IDM5LjQyNTEgMzUuMDQ5MiAzOS44MjQzQzM3LjA4NDIgNDAuMjE4OSAzOC43MjI0IDM5LjkyNjkgMzkuNjgxOCAzOS4xOTY5QzM5LjY4NjggMzkuMTg1NyAzOS42OTIzIDM5LjE3MjYgMzkuNjk4NCAzOS4xNTc0QzM5Ljc1NzYgMzkuMDA5NSAzOS44Mjk0IDM4Ljc1NTQgMzkuODg3OCAzOC4zNjgzQzQwLjAwNDcgMzcuNTkzMyA0MC4wMzUgMzYuNTEyMiAzOS45NTYyIDM1LjE4MDNDMzkuNzk5NSAzMi41MzA1IDM5LjIyODYgMjkuMTY4OSAzOC4zMjY4IDI1Ljg2MDZDMzcuNDIxNiAyMi41Mzk2IDM2LjIxNzMgMTkuMzk5OCAzNC44NTIxIDE3LjEzODNDMzQuMTY4OCAxNi4wMDYyIDMzLjQ5NTEgMTUuMTc4NiAzMi44NzAzIDE0LjY1MzVDMzIuMjUxOCAxNC4xMzM3IDMxLjc5MzUgMTMuOTk5NyAzMS40NzUzIDEzLjk5OTdaTTE2LjUyNDcgMTRDMTcuNDc4OCAxNCAxOC4wMTU4IDE0LjMwMDUgMTguMzkxNCAxNC42ODcyQzE4LjgyNDggMTUuMTMzNCAxOS4xODY4IDE1Ljg1MSAxOS40NDEgMTYuODY0OUMxOS44ODU5IDE4LjYzOTkgMTkuODY3IDIwLjY4MjIgMTkuODUxOCAyMi4zMjk2QzE5Ljg0OTEgMjIuNjE0NiAxOS44NDY2IDIyLjg4NzcgMTkuODQ2NiAyMy4xNDU2QzE5Ljg0NjYgMjMuOTA1NiAxOS44ODA0IDI0LjgxNTYgMTkuOTE1NSAyNS43NjI0QzE5LjkyOTQgMjYuMTM1IDE5Ljk0MzQgMjYuNTEzOCAxOS45NTU3IDI2Ljg5MDhDMjAuMDAwNSAyOC4yNjYgMjAuMDI1OSAyOS43MDU4IDE5Ljk1OTYgMzEuMDk4NUMxOS44OTI5IDMyLjQ5ODggMTkuNzM1OSAzMy43ODM4IDE5LjQ0MjcgMzQuODU5OUMxOS4xNDYyIDM1Ljk0ODYgMTguNzQ5MiAzNi42Nzg3IDE4LjMwNTYgMzcuMTIxMUMxNy4wMjc1IDM4LjM5NTcgMTUuMDA5MyAzOS40MjU0IDEyLjk1MDkgMzkuODI0NkMxMC45MTU5IDQwLjIxOTIgOS4yNzc2OCAzOS45MjcyIDguMzE4MjMgMzkuMTk3MkM4LjMxMzI2IDM5LjE4NiA4LjMwNzcgMzkuMTcyOSA4LjMwMTYyIDM5LjE1NzdDOC4yNDI0MSAzOS4wMDk4IDguMTcwNjEgMzguNzU1NyA4LjExMjI0IDM4LjM2ODZDNy45OTUzOSAzNy41OTM2IDcuOTY1IDM2LjUxMjUgOC4wNDM4IDM1LjE4MDZDOC4yMDA1NiAzMi41MzA4IDguNzcxNDcgMjkuMTY5MiA5LjY3MzI0IDI1Ljg2MDlDMTAuNTc4NSAyMi41Mzk5IDExLjc4MjcgMTkuNDAwMSAxMy4xNDc5IDE3LjEzODZDMTMuODMxMyAxNi4wMDY1IDE0LjUwNDkgMTUuMTc4OSAxNS4xMjk4IDE0LjY1MzhDMTUuNzQ4MiAxNC4xMzQgMTYuMjA2NSAxNCAxNi41MjQ3IDE0WiIgZmlsbD0iI2I0NTMwOSIvPgo8L3N2Zz4K", + "created": 1700000000000 + }, + "img_blki48": { + "mimeType": "image/svg+xml", + "id": "img_blki48", + "dataURL": "data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNDgiIGhlaWdodD0iNDgiIHZpZXdCb3g9IjAgMCA0OCA0OCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0yOSA5QzI5IDExLjc2MTQgMjYuNzYxNCAxNCAyNCAxNEMyMS4yMzg2IDE0IDE5IDExLjc2MTQgMTkgOUMxOSA2LjIzODU4IDIxLjIzODYgNCAyNCA0QzI2Ljc2MTQgNCAyOSA2LjIzODU4IDI5IDlaTTI3IDlDMjcgMTAuNjU2OSAyNS42NTY5IDEyIDI0IDEyQzIyLjM0MzEgMTIgMjEgMTAuNjU2OSAyMSA5QzIxIDcuMzQzMTUgMjIuMzQzMSA2IDI0IDZDMjUuNjU2OSA2IDI3IDcuMzQzMTUgMjcgOVoiIGZpbGw9IiNiNDUzMDkiLz4KPHBhdGggZD0iTTE2Ljk5OTggNDFWMzRIMTguOTk5OFY0MUMxOC45OTk4IDQxLjU1MjMgMTkuNDQ3NSA0MiAxOS45OTk4IDQySDIwLjA4NjVDMjAuNjAzNyA0MiAyMS4wMzU2IDQxLjYwNTYgMjEuMDgyNCA0MS4wOTA1TDIxLjcyNyAzNEgyMy43MzUzTDIzLjA3NDIgNDEuMjcxNkMyMy4wNjkgNDEuMzI4OCAyMy4wNjIyIDQxLjM4NTYgMjMuMDUzOSA0MS40NDE3QzIzLjAzNTcgNDEuNTY0NyAyMy4wMTAxIDQxLjY4NTEgMjIuOTc3NiA0MS44MDI1QzIyLjYyNDIgNDMuMDc5OCAyMS40NTQ5IDQ0IDIwLjA4NjUgNDRIMTkuOTk5OEMxOC4zNDI5IDQ0IDE2Ljk5OTggNDIuNjU2OSAxNi45OTk4IDQxWiIgZmlsbD0iI2I0NTMwOSIvPgo8cGF0aCBkPSJNMjYuOTE3MSA0MS4wOTA1TDI2LjI3MjUgMzRIMjQuMjY0MkwyNC45MjUzIDQxLjI3MTZDMjQuOTMwNSA0MS4zMjg4IDI0LjkzNzMgNDEuMzg1NiAyNC45NDU2IDQxLjQ0MTdDMjQuOTYzOCA0MS41NjQ3IDI0Ljk4OTQgNDEuNjg1MSAyNS4wMjE5IDQxLjgwMjVDMjUuMzc1MyA0My4wNzk4IDI2LjU0NDYgNDQgMjcuOTEzIDQ0SDI3Ljk5OThDMjkuNjU2NiA0NCAzMC45OTk4IDQyLjY1NjkgMzAuOTk5OCA0MVYzNEgyOC45OTk4VjQxQzI4Ljk5OTggNDEuNTUyMyAyOC41NTIgNDIgMjcuOTk5OCA0MkgyNy45MTNDMjcuMzk1OCA0MiAyNi45NjM5IDQxLjYwNTYgMjYuOTE3MSA0MS4wOTA1WiIgZmlsbD0iI2I0NTMwOSIvPgo8cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGNsaXAtcnVsZT0iZXZlbm9kZCIgZD0iTTExIDE1QzEwLjQ0NzcgMTUgMTAgMTUuNDQ3NyAxMCAxNlYzMUMxMCAzMS41NTIzIDEwLjQ0NzcgMzIgMTEgMzJIMzdDMzcuNTUyMyAzMiAzOCAzMS41NTIzIDM4IDMxVjE2QzM4IDE1LjQ0NzcgMzcuNTUyMyAxNSAzNyAxNUgxMVpNMTIgMTdWMzBIMTkuNUMxOS41IDI5LjQ0MjQgMTkuNzU5MSAyOC45NTcyIDIwLjAyNzYgMjguNjAwNkMyMC4zMDg2IDI4LjIyNzYgMjAuNjc5NiAyNy44ODgzIDIxLjA3OTQgMjcuNjAxNkMyMS42MjUyIDI3LjIxMDMgMjIuMjk4NiAyNi44NjUgMjMgMjYuNjY3OFYyNC41SDIyLjJDMjEuNTk3MyAyNC41IDIwLjc1MzUgMjQuODY0MiAxOS45NDMzIDI1LjM1NTJDMTkuNTYzOCAyNS41ODUyIDE5LjIzMzcgMjUuODE2NyAxOC45OTg0IDI1Ljk5MTFDMTguODgxMiAyNi4wNzc4IDE4Ljc4ODggMjYuMTQ5NSAxOC43MjcgMjYuMTk4NEMxOC42OTYxIDI2LjIyMjggMTguNjczIDI2LjI0MTUgMTguNjU4MiAyNi4yNTM1TDE4LjY0MjYgMjYuMjY2M0wxOC42Mzk5IDI2LjI2ODRDMTguNjM5OSAyNi4yNjg0IDE4LjY0MDIgMjYuMjY4MiAxOCAyNS41QzE3LjM1OTggMjQuNzMxOCAxNy4zNjAxIDI0LjczMTUgMTcuMzYwMSAyNC43MzE1TDE3LjM2MTQgMjQuNzMwNUwxNy4zNjM4IDI0LjcyODVMMTcuMzcxMyAyNC43MjIzTDE3LjM5NjYgMjQuNzAxNkMxNy40MTc5IDI0LjY4NDMgMTcuNDQ4IDI0LjY2IDE3LjQ4NjMgMjQuNjI5N0MxNy41NjI3IDI0LjU2OTMgMTcuNjcxOSAyNC40ODQ3IDE3LjgwNzkgMjQuMzgzOUMxOC4wNzg4IDI0LjE4MzMgMTguNDYxMiAyMy45MTQ4IDE4LjkwNjcgMjMuNjQ0OEMxOS43NDY1IDIzLjEzNTggMjEuMDAyNyAyMi41IDIyLjIgMjIuNUgyM1YyMC41SDIyLjVDMjEuOTMwOSAyMC41IDIxLjE5MDkgMjAuNjk5MiAyMC41MjkyIDIwLjkzOThDMjAuMjEyIDIxLjA1NTIgMTkuOTM3IDIxLjE3MDkgMTkuNzQyMSAyMS4yNTc2QzE5LjY0NDkgMjEuMzAwNyAxOS41Njg1IDIxLjMzNjMgMTkuNTE3NiAyMS4zNjA1QzE5LjQ5MjIgMjEuMzcyNSAxOS40NzMyIDIxLjM4MTcgMTkuNDYxMyAyMS4zODc1TDE5LjQ0ODcgMjEuMzkzN0wxOS40NDcgMjEuMzk0NUMxOS40NDcgMjEuMzk0NSAxOS40NDcyIDIxLjM5NDQgMTkgMjAuNUMxOC41NTI4IDE5LjYwNTYgMTguNTUzMSAxOS42MDU0IDE4LjU1MzEgMTkuNjA1NEwxOC41NTY0IDE5LjYwMzhMMTguNTYyOSAxOS42MDA2TDE4LjU4NDQgMTkuNTlDMTguNjAyNSAxOS41ODEyIDE4LjYyNzkgMTkuNTY4OSAxOC42NjAxIDE5LjU1MzZDMTguNzI0NSAxOS41MjMxIDE4LjgxNiAxOS40ODA1IDE4LjkyOTggMTkuNDI5OUMxOS4xNTY3IDE5LjMyOTEgMTkuNDc1NSAxOS4xOTQ4IDE5Ljg0NTggMTkuMDYwMkMyMC41NTkxIDE4LjgwMDggMjEuNTY5MSAxOC41IDIyLjUgMTguNUgyM1YxN0gxMlpNMjUgMjQuNUgyNi4xQzI2Ljg0ODkgMjQuNSAyNy42MTg2IDI0Ljg2NjMgMjguMjYzMSAyNS4zMTg2QzI4LjU3MzUgMjUuNTM2NCAyOC44Mjg1IDI1Ljc1NTYgMjkuMDA0OCAyNS45MTk3QzI5LjA5MjUgMjYuMDAxMiAyOS4xNTk0IDI2LjA2NzkgMjkuMjAyNiAyNi4xMTIyQzI5LjIyNDEgMjYuMTM0MyAyOS4yMzk3IDI2LjE1MDcgMjkuMjQ4OCAyNi4xNjA1TDI5LjI1NzQgMjYuMTY5N0MyOS4yNTc0IDI2LjE2OTcgMjkuMjU2NyAyNi4xNjkgMzAgMjUuNUMzMC43NDMzIDI0LjgzMSAzMC43NDI5IDI0LjgzMDYgMzAuNzQyOSAyNC44MzA2TDMwLjc0MTQgMjQuODI5TDMwLjczODkgMjQuODI2MkwzMC43MzE4IDI0LjgxODRMMzAuNzA5NyAyNC43OTQ2QzMwLjY5MTUgMjQuNzc1MSAzMC42NjYzIDI0Ljc0ODUgMzAuNjM0NiAyNC43MTZDMzAuNTcxMSAyNC42NTA5IDMwLjQ4MDkgMjQuNTYxMyAzMC4zNjcgMjQuNDU1M0MzMC4xNDAzIDI0LjI0NDQgMjkuODE0IDIzLjk2MzYgMjkuNDExOSAyMy42ODE0QzI4LjYzMTQgMjMuMTMzNyAyNy40NTExIDIyLjUgMjYuMSAyMi41SDI1VjIwLjVIMjUuNzVDMjYuNDQ0MyAyMC41IDI3LjExOTMgMjAuNzAxMSAyNy42NDMyIDIwLjkyMTZDMjcuOTAwMyAyMS4wMjk5IDI4LjEwOTIgMjEuMTM3OCAyOC4yNTA5IDIxLjIxNjlDMjguMzIxNSAyMS4yNTY0IDI4LjM3NDcgMjEuMjg4MiAyOC40MDggMjEuMzA4N0MyOC40MjQ3IDIxLjMxODkgMjguNDM2MyAyMS4zMjYzIDI4LjQ0MjcgMjEuMzMwNEwyOC40NDU3IDIxLjMzMjNDMjguNDQ1NyAyMS4zMzIzIDI4LjQ0NTMgMjEuMzMyMSAyOSAyMC41QzI5LjU1NDcgMTkuNjY3OSAyOS41NTQyIDE5LjY2NzYgMjkuNTU0MiAxOS42Njc2TDI5LjU1MjcgMTkuNjY2NkwyOS41NTAxIDE5LjY2NDlMMjkuNTQzMiAxOS42NjA0TDI5LjUyMjggMTkuNjQ3MkMyOS41MDYzIDE5LjYzNjYgMjkuNDg0IDE5LjYyMjUgMjkuNDU2MiAxOS42MDU0QzI5LjQwMDcgMTkuNTcxMiAyOS4zMjMgMTkuNTI0OSAyOS4yMjU2IDE5LjQ3MDZDMjkuMDMxNSAxOS4zNjIyIDI4Ljc1NTkgMTkuMjIwMSAyOC40MTkzIDE5LjA3ODRDMjcuNzU1NyAxOC43OTg5IDI2LjgwNTcgMTguNSAyNS43NSAxOC41SDI1VjE3SDM2VjMwSDI4LjVDMjguNSAyOS40Mzc5IDI4LjIzMjQgMjguOTQ1MiAyNy45NjQxIDI4LjU4NzVDMjcuNjgwMyAyOC4yMDkyIDI3LjMwNTQgMjcuODYwNiAyNi45MDA3IDI3LjU2NjNDMjYuMzY3NSAyNy4xNzg1IDI1LjY5ODkgMjYuODI1NyAyNSAyNi42MzkxVjI0LjVaTTI2LjQ5MjkgMzBDMjYuNDc5NyAyOS45NjcgMjYuNDQ1NyAyOS44OTY0IDI2LjM2NDEgMjkuNzg3NUMyNi4yMjU5IDI5LjYwMzMgMjYuMDA3MSAyOS4zODk0IDI1LjcyNDMgMjkuMTgzN0MyNS4xNDc4IDI4Ljc2NDUgMjQuNDkzNyAyOC41MTE3IDI0LjAzMiAyOC41MDA0QzIzLjQ4NzcgMjguNTQ2NCAyMi44MDUyIDI4LjgyNTIgMjIuMjQ0OSAyOS4yMjdDMjEuOTY1NyAyOS40MjcyIDIxLjc1NTYgMjkuNjMwNyAyMS42MjUyIDI5LjgwMzhDMjEuNTQ5NiAyOS45MDQzIDIxLjUxODQgMjkuOTY5NCAyMS41MDYzIDMwSDI2LjQ5MjlaIiBmaWxsPSIjYjQ1MzA5Ii8+Cjwvc3ZnPgo=", + "created": 1700000000000 + } + } +} \ No newline at end of file diff --git a/knowledge/drafts/pillars-b1.excalidraw b/knowledge/drafts/pillars-b1.excalidraw new file mode 100644 index 0000000..4547574 --- /dev/null +++ b/knowledge/drafts/pillars-b1.excalidraw @@ -0,0 +1,2044 @@ +{ + "type": "excalidraw", + "version": 2, + "source": "oidm-knowledge/tools/diagrams", + "elements": [ + { + "type": "rectangle", + "id": "band49", + "x": 0, + "y": 395.05, + "width": 880, + "height": 221.24999999999994, + "strokeColor": "#b45309", + "backgroundColor": "#fef3c7", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1097, + "version": 1, + "versionNonce": 1098, + "isDeleted": false, + "groupIds": [], + "boundElements": [], + "link": null, + "locked": false, + "roundness": { + "type": 3 + } + }, + { + "type": "rectangle", + "id": "band33", + "x": 0, + "y": 187.3, + "width": 880, + "height": 247.75, + "strokeColor": "#0f766e", + "backgroundColor": "#ccfbf1", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1065, + "version": 1, + "versionNonce": 1066, + "isDeleted": false, + "groupIds": [], + "boundElements": [], + "link": null, + "locked": false, + "roundness": { + "type": 3 + } + }, + { + "type": "rectangle", + "id": "band15", + "x": 0, + "y": 91.65, + "width": 880, + "height": 71.65, + "strokeColor": "#6d28d9", + "backgroundColor": "#ede9fe", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1029, + "version": 1, + "versionNonce": 1030, + "isDeleted": false, + "groupIds": [], + "boundElements": [], + "link": null, + "locked": false, + "roundness": { + "type": 3 + } + }, + { + "type": "rectangle", + "id": "panel1", + "x": 0, + "y": 0, + "width": 388.0, + "height": 67.65, + "strokeColor": "#be123c", + "backgroundColor": "#ffe4e6", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1001, + "version": 1, + "versionNonce": 1002, + "isDeleted": false, + "groupIds": [], + "boundElements": [], + "link": null, + "locked": false, + "roundness": { + "type": 3 + } + }, + { + "type": "rectangle", + "id": "panel2", + "x": 492.0, + "y": 0, + "width": 388.0, + "height": 67.65, + "strokeColor": "#15803d", + "backgroundColor": "#dcfce7", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1003, + "version": 1, + "versionNonce": 1004, + "isDeleted": false, + "groupIds": [], + "boundElements": [], + "link": null, + "locked": false, + "roundness": { + "type": 3 + } + }, + { + "type": "image", + "id": "bicon3", + "x": 18, + "y": 12.0, + "width": 28, + "height": 28, + "strokeColor": "transparent", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1005, + "version": 1, + "versionNonce": 1006, + "isDeleted": false, + "groupIds": [], + "boundElements": [], + "link": null, + "locked": false, + "fileId": "img_bicon3", + "status": "saved", + "scale": [ + 1, + 1 + ], + "roundness": null, + "crop": null + }, + { + "type": "text", + "id": "btitle4", + "x": 58, + "y": 14, + "width": 93.96, + "height": 22.5, + "strokeColor": "#881337", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1007, + "version": 1, + "versionNonce": 1008, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "Use Cases", + "originalText": "Use Cases", + "fontSize": 18, + "fontFamily": 2, + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 + }, + { + "type": "text", + "id": "bsub5", + "x": 58, + "y": 37.400000000000006, + "width": 211.11999999999998, + "height": 16.25, + "strokeColor": "#be123c", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1009, + "version": 1, + "versionNonce": 1010, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "what the project wants built", + "originalText": "what the project wants built", + "fontSize": 13, + "fontFamily": 2, + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 + }, + { + "type": "image", + "id": "bicon6", + "x": 510.0, + "y": 12.0, + "width": 28, + "height": 28, + "strokeColor": "transparent", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1011, + "version": 1, + "versionNonce": 1012, + "isDeleted": false, + "groupIds": [], + "boundElements": [], + "link": null, + "locked": false, + "fileId": "img_bicon6", + "status": "saved", + "scale": [ + 1, + 1 + ], + "roundness": null, + "crop": null + }, + { + "type": "text", + "id": "btitle7", + "x": 550.0, + "y": 14, + "width": 198.35999999999999, + "height": 22.5, + "strokeColor": "#14532d", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1013, + "version": 1, + "versionNonce": 1014, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "Sample Applications", + "originalText": "Sample Applications", + "fontSize": 18, + "fontFamily": 2, + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 + }, + { + "type": "text", + "id": "bsub8", + "x": 550.0, + "y": 37.400000000000006, + "width": 143.26, + "height": 16.25, + "strokeColor": "#15803d", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1015, + "version": 1, + "versionNonce": 1016, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "what has been built", + "originalText": "what has been built", + "fontSize": 13, + "fontFamily": 2, + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 + }, + { + "type": "line", + "id": "conn9", + "x": 390.0, + "y": 33.825, + "width": 100.0, + "height": 0, + "strokeColor": "#64748b", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1017, + "version": 1, + "versionNonce": 1018, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "points": [ + [ + 0, + 0 + ], + [ + 100.0, + 0 + ] + ] + }, + { + "type": "rectangle", + "id": "chip10", + "x": 389.53, + "y": 4.575000000000003, + "width": 100.94, + "height": 22.25, + "strokeColor": "transparent", + "backgroundColor": "#ffffff", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1019, + "version": 1, + "versionNonce": 1020, + "isDeleted": false, + "groupIds": [], + "boundElements": [], + "link": null, + "locked": false, + "roundness": { + "type": 3 + } + }, + { + "type": "text", + "id": "chipt11", + "x": 398.53, + "y": 7.575000000000003, + "width": 82.94, + "height": 16.25, + "strokeColor": "#64748b", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1021, + "version": 1, + "versionNonce": 1022, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "illustrates", + "originalText": "illustrates", + "fontSize": 13, + "fontFamily": 2, + "textAlign": "center", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 + }, + { + "type": "image", + "id": "bicon12", + "x": 18, + "y": 105.65, + "width": 28, + "height": 28, + "strokeColor": "transparent", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1023, + "version": 1, + "versionNonce": 1024, + "isDeleted": false, + "groupIds": [], + "boundElements": [], + "link": null, + "locked": false, + "fileId": "img_bicon12", + "status": "saved", + "scale": [ + 1, + 1 + ], + "roundness": null, + "crop": null + }, + { + "type": "text", + "id": "btitle13", + "x": 58, + "y": 107.65, + "width": 41.76, + "height": 22.5, + "strokeColor": "#4c1d95", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1025, + "version": 1, + "versionNonce": 1026, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "SDKs", + "originalText": "SDKs", + "fontSize": 18, + "fontFamily": 2, + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 + }, + { + "type": "text", + "id": "bsub14", + "x": 58, + "y": 131.05, + "width": 520.26, + "height": 16.25, + "strokeColor": "#6d28d9", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1027, + "version": 1, + "versionNonce": 1028, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "wrap the structures \u00b7 attach the shared knowledge \u00b7 support authoring", + "originalText": "wrap the structures \u00b7 attach the shared knowledge \u00b7 support authoring", + "fontSize": 13, + "fontFamily": 2, + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 + }, + { + "type": "image", + "id": "bicon16", + "x": 18, + "y": 203.3, + "width": 28, + "height": 28, + "strokeColor": "transparent", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1031, + "version": 1, + "versionNonce": 1032, + "isDeleted": false, + "groupIds": [], + "boundElements": [], + "link": null, + "locked": false, + "fileId": "img_bicon16", + "status": "saved", + "scale": [ + 1, + 1 + ], + "roundness": null, + "crop": null + }, + { + "type": "text", + "id": "btitle17", + "x": 58, + "y": 205.3, + "width": 174.0, + "height": 25.0, + "strokeColor": "#134e4a", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1033, + "version": 1, + "versionNonce": 1034, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "Data Structures", + "originalText": "Data Structures", + "fontSize": 20, + "fontFamily": 2, + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 + }, + { + "type": "text", + "id": "bsub18", + "x": 58, + "y": 231.3, + "width": 226.2, + "height": 16.25, + "strokeColor": "#0f766e", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1035, + "version": 1, + "versionNonce": 1036, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "this patient \u00b7 Patient Context", + "originalText": "this patient \u00b7 Patient Context", + "fontSize": 13, + "fontFamily": 2, + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 + }, + { + "type": "rectangle", + "id": "blk19", + "x": 20.0, + "y": 261.55, + "width": 195.0, + "height": 95.5, + "strokeColor": "#0f766e", + "backgroundColor": "#99f6e4", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1037, + "version": 1, + "versionNonce": 1038, + "isDeleted": false, + "groupIds": [], + "boundElements": [], + "link": null, + "locked": false, + "roundness": { + "type": 3 + } + }, + { + "type": "image", + "id": "blki20", + "x": 103.5, + "y": 281.925, + "width": 28, + "height": 28, + "strokeColor": "transparent", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1039, + "version": 1, + "versionNonce": 1040, + "isDeleted": false, + "groupIds": [], + "boundElements": [], + "link": null, + "locked": false, + "fileId": "img_blki20", + "status": "saved", + "scale": [ + 1, + 1 + ], + "roundness": null, + "crop": null + }, + { + "type": "text", + "id": "blkt21", + "x": 26.0, + "y": 315.925, + "width": 183.0, + "height": 18.75, + "strokeColor": "#134e4a", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1041, + "version": 1, + "versionNonce": 1042, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "Observation", + "originalText": "Observation", + "fontSize": 15, + "fontFamily": 2, + "textAlign": "center", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 + }, + { + "type": "rectangle", + "id": "blk22", + "x": 235.0, + "y": 261.55, + "width": 195.0, + "height": 95.5, + "strokeColor": "#0f766e", + "backgroundColor": "#99f6e4", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1043, + "version": 1, + "versionNonce": 1044, + "isDeleted": false, + "groupIds": [], + "boundElements": [], + "link": null, + "locked": false, + "roundness": { + "type": 3 + } + }, + { + "type": "image", + "id": "blki23", + "x": 318.5, + "y": 272.55, + "width": 28, + "height": 28, + "strokeColor": "transparent", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1045, + "version": 1, + "versionNonce": 1046, + "isDeleted": false, + "groupIds": [], + "boundElements": [], + "link": null, + "locked": false, + "fileId": "img_blki23", + "status": "saved", + "scale": [ + 1, + 1 + ], + "roundness": null, + "crop": null + }, + { + "type": "text", + "id": "blkt24", + "x": 241.0, + "y": 306.55, + "width": 183.0, + "height": 18.75, + "strokeColor": "#134e4a", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1047, + "version": 1, + "versionNonce": 1048, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "Exam Finding", + "originalText": "Exam Finding", + "fontSize": 15, + "fontFamily": 2, + "textAlign": "center", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 + }, + { + "type": "text", + "id": "blkt25", + "x": 241.0, + "y": 325.3, + "width": 183.0, + "height": 18.75, + "strokeColor": "#134e4a", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1049, + "version": 1, + "versionNonce": 1050, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "List", + "originalText": "List", + "fontSize": 15, + "fontFamily": 2, + "textAlign": "center", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 + }, + { + "type": "rectangle", + "id": "blk26", + "x": 450.0, + "y": 261.55, + "width": 195.0, + "height": 95.5, + "strokeColor": "#0f766e", + "backgroundColor": "#99f6e4", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1051, + "version": 1, + "versionNonce": 1052, + "isDeleted": false, + "groupIds": [], + "boundElements": [], + "link": null, + "locked": false, + "roundness": { + "type": 3 + } + }, + { + "type": "image", + "id": "blki27", + "x": 533.5, + "y": 272.55, + "width": 28, + "height": 28, + "strokeColor": "transparent", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1053, + "version": 1, + "versionNonce": 1054, + "isDeleted": false, + "groupIds": [], + "boundElements": [], + "link": null, + "locked": false, + "fileId": "img_blki27", + "status": "saved", + "scale": [ + 1, + 1 + ], + "roundness": null, + "crop": null + }, + { + "type": "text", + "id": "blkt28", + "x": 456.0, + "y": 306.55, + "width": 183.0, + "height": 18.75, + "strokeColor": "#134e4a", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1055, + "version": 1, + "versionNonce": 1056, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "Imaging Problem", + "originalText": "Imaging Problem", + "fontSize": 15, + "fontFamily": 2, + "textAlign": "center", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 + }, + { + "type": "text", + "id": "blkt29", + "x": 456.0, + "y": 325.3, + "width": 183.0, + "height": 18.75, + "strokeColor": "#134e4a", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1057, + "version": 1, + "versionNonce": 1058, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "List", + "originalText": "List", + "fontSize": 15, + "fontFamily": 2, + "textAlign": "center", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 + }, + { + "type": "rectangle", + "id": "blk30", + "x": 665.0, + "y": 261.55, + "width": 195.0, + "height": 95.5, + "strokeColor": "#0f766e", + "backgroundColor": "#99f6e4", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1059, + "version": 1, + "versionNonce": 1060, + "isDeleted": false, + "groupIds": [], + "boundElements": [], + "link": null, + "locked": false, + "roundness": { + "type": 3 + } + }, + { + "type": "image", + "id": "blki31", + "x": 746.5, + "y": 279.925, + "width": 32, + "height": 32, + "strokeColor": "transparent", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1061, + "version": 1, + "versionNonce": 1062, + "isDeleted": false, + "groupIds": [], + "boundElements": [], + "link": null, + "locked": false, + "fileId": "img_blki31", + "status": "saved", + "scale": [ + 1, + 1 + ], + "roundness": null, + "crop": null + }, + { + "type": "text", + "id": "blkt32", + "x": 671.0, + "y": 315.925, + "width": 183.0, + "height": 18.75, + "strokeColor": "#134e4a", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1063, + "version": 1, + "versionNonce": 1064, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "Imaging Persona", + "originalText": "Imaging Persona", + "fontSize": 15, + "fontFamily": 2, + "textAlign": "center", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 + }, + { + "type": "image", + "id": "bicon34", + "x": 18, + "y": 447.05, + "width": 28, + "height": 28, + "strokeColor": "transparent", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1067, + "version": 1, + "versionNonce": 1068, + "isDeleted": false, + "groupIds": [], + "boundElements": [], + "link": null, + "locked": false, + "fileId": "img_bicon34", + "status": "saved", + "scale": [ + 1, + 1 + ], + "roundness": null, + "crop": null + }, + { + "type": "text", + "id": "btitle35", + "x": 58, + "y": 449.05, + "width": 208.79999999999998, + "height": 25.0, + "strokeColor": "#78350f", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1069, + "version": 1, + "versionNonce": 1070, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "Foundation Context", + "originalText": "Foundation Context", + "fontSize": 20, + "fontFamily": 2, + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 + }, + { + "type": "text", + "id": "bsub36", + "x": 58, + "y": 475.05, + "width": 188.5, + "height": 16.25, + "strokeColor": "#b45309", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1071, + "version": 1, + "versionNonce": 1072, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "shared, curated knowledge", + "originalText": "shared, curated knowledge", + "fontSize": 13, + "fontFamily": 2, + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 + }, + { + "type": "rectangle", + "id": "blk37", + "x": 20.0, + "y": 501.3, + "width": 264.0, + "height": 95.0, + "strokeColor": "#b45309", + "backgroundColor": "#fde68a", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1073, + "version": 1, + "versionNonce": 1074, + "isDeleted": false, + "groupIds": [], + "boundElements": [], + "link": null, + "locked": false, + "roundness": { + "type": 3 + } + }, + { + "type": "image", + "id": "blki38", + "x": 138.0, + "y": 512.3, + "width": 28, + "height": 28, + "strokeColor": "transparent", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1075, + "version": 1, + "versionNonce": 1076, + "isDeleted": false, + "groupIds": [], + "boundElements": [], + "link": null, + "locked": false, + "fileId": "img_blki38", + "status": "saved", + "scale": [ + 1, + 1 + ], + "roundness": null, + "crop": null + }, + { + "type": "text", + "id": "blkt39", + "x": 26.0, + "y": 546.3, + "width": 252.0, + "height": 18.75, + "strokeColor": "#78350f", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1077, + "version": 1, + "versionNonce": 1078, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "Finding/diagnosis definitions", + "originalText": "Finding/diagnosis definitions", + "fontSize": 15, + "fontFamily": 2, + "textAlign": "center", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 + }, + { + "type": "text", + "id": "blkd40", + "x": 26.0, + "y": 567.05, + "width": 252.0, + "height": 16.25, + "strokeColor": "#b45309", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1079, + "version": 1, + "versionNonce": 1080, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "finding models \u00b7 CDEs", + "originalText": "finding models \u00b7 CDEs", + "fontSize": 13, + "fontFamily": 2, + "textAlign": "center", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 + }, + { + "type": "rectangle", + "id": "blk41", + "x": 308.0, + "y": 501.3, + "width": 264.0, + "height": 95.0, + "strokeColor": "#b45309", + "backgroundColor": "#fde68a", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1081, + "version": 1, + "versionNonce": 1082, + "isDeleted": false, + "groupIds": [], + "boundElements": [], + "link": null, + "locked": false, + "roundness": { + "type": 3 + } + }, + { + "type": "image", + "id": "blki42", + "x": 424.0, + "y": 510.29999999999995, + "width": 32, + "height": 32, + "strokeColor": "transparent", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1083, + "version": 1, + "versionNonce": 1084, + "isDeleted": false, + "groupIds": [], + "boundElements": [], + "link": null, + "locked": false, + "fileId": "img_blki42", + "status": "saved", + "scale": [ + 1, + 1 + ], + "roundness": null, + "crop": null + }, + { + "type": "text", + "id": "blkt43", + "x": 314.0, + "y": 546.3, + "width": 252.0, + "height": 18.75, + "strokeColor": "#78350f", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1085, + "version": 1, + "versionNonce": 1086, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "Anatomic locations", + "originalText": "Anatomic locations", + "fontSize": 15, + "fontFamily": 2, + "textAlign": "center", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 + }, + { + "type": "text", + "id": "blkd44", + "x": 314.0, + "y": 567.05, + "width": 252.0, + "height": 16.25, + "strokeColor": "#b45309", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1087, + "version": 1, + "versionNonce": 1088, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "anchored in RadLex", + "originalText": "anchored in RadLex", + "fontSize": 13, + "fontFamily": 2, + "textAlign": "center", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 + }, + { + "type": "rectangle", + "id": "blk45", + "x": 596.0, + "y": 501.3, + "width": 264.0, + "height": 95.0, + "strokeColor": "#b45309", + "backgroundColor": "#fde68a", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1089, + "version": 1, + "versionNonce": 1090, + "isDeleted": false, + "groupIds": [], + "boundElements": [], + "link": null, + "locked": false, + "roundness": { + "type": 3 + } + }, + { + "type": "image", + "id": "blki46", + "x": 712.0, + "y": 510.29999999999995, + "width": 32, + "height": 32, + "strokeColor": "transparent", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1091, + "version": 1, + "versionNonce": 1092, + "isDeleted": false, + "groupIds": [], + "boundElements": [], + "link": null, + "locked": false, + "fileId": "img_blki46", + "status": "saved", + "scale": [ + 1, + 1 + ], + "roundness": null, + "crop": null + }, + { + "type": "text", + "id": "blkt47", + "x": 602.0, + "y": 546.3, + "width": 252.0, + "height": 18.75, + "strokeColor": "#78350f", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1093, + "version": 1, + "versionNonce": 1094, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "Exam types", + "originalText": "Exam types", + "fontSize": 15, + "fontFamily": 2, + "textAlign": "center", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 + }, + { + "type": "text", + "id": "blkd48", + "x": 602.0, + "y": 567.05, + "width": 252.0, + "height": 16.25, + "strokeColor": "#b45309", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1095, + "version": 1, + "versionNonce": 1096, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "LOINC/RSNA Playbook", + "originalText": "LOINC/RSNA Playbook", + "fontSize": 13, + "fontFamily": 2, + "textAlign": "center", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 + }, + { + "type": "rectangle", + "id": "fill50", + "x": 0.0, + "y": 395.05, + "width": 81.6, + "height": 43.0, + "strokeColor": "transparent", + "backgroundColor": "#fef3c7", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1099, + "version": 1, + "versionNonce": 1100, + "isDeleted": false, + "groupIds": [], + "boundElements": [], + "link": null, + "locked": false, + "roundness": null + }, + { + "type": "rectangle", + "id": "fill51", + "x": 199.6, + "y": 395.05, + "width": 81.6, + "height": 43.0, + "strokeColor": "transparent", + "backgroundColor": "#fef3c7", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1101, + "version": 1, + "versionNonce": 1102, + "isDeleted": false, + "groupIds": [], + "boundElements": [], + "link": null, + "locked": false, + "roundness": null + }, + { + "type": "rectangle", + "id": "fill52", + "x": 399.2, + "y": 395.05, + "width": 81.6, + "height": 43.0, + "strokeColor": "transparent", + "backgroundColor": "#fef3c7", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1103, + "version": 1, + "versionNonce": 1104, + "isDeleted": false, + "groupIds": [], + "boundElements": [], + "link": null, + "locked": false, + "roundness": null + }, + { + "type": "rectangle", + "id": "fill53", + "x": 598.8, + "y": 395.05, + "width": 81.6, + "height": 43.0, + "strokeColor": "transparent", + "backgroundColor": "#fef3c7", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1105, + "version": 1, + "versionNonce": 1106, + "isDeleted": false, + "groupIds": [], + "boundElements": [], + "link": null, + "locked": false, + "roundness": null + }, + { + "type": "rectangle", + "id": "fill54", + "x": 798.4, + "y": 395.05, + "width": 81.6, + "height": 43.0, + "strokeColor": "transparent", + "backgroundColor": "#fef3c7", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1107, + "version": 1, + "versionNonce": 1108, + "isDeleted": false, + "groupIds": [], + "boundElements": [], + "link": null, + "locked": false, + "roundness": null + }, + { + "type": "line", + "id": "ln55", + "x": 0.0, + "y": 395.05, + "width": 880.0, + "height": 40.0, + "strokeColor": "#0f766e", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1109, + "version": 1, + "versionNonce": 1110, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "points": [ + [ + 0.0, + 0.0 + ], + [ + 81.6, + 0.0 + ], + [ + 81.6, + 40.0 + ], + [ + 199.6, + 40.0 + ], + [ + 199.6, + 0.0 + ], + [ + 281.2, + 0.0 + ], + [ + 281.2, + 40.0 + ], + [ + 399.2, + 40.0 + ], + [ + 399.2, + 0.0 + ], + [ + 480.79999999999995, + 0.0 + ], + [ + 480.79999999999995, + 40.0 + ], + [ + 598.8, + 40.0 + ], + [ + 598.8, + 0.0 + ], + [ + 680.4, + 0.0 + ], + [ + 680.4, + 40.0 + ], + [ + 798.4, + 40.0 + ], + [ + 798.4, + 0.0 + ], + [ + 880.0, + 0.0 + ] + ], + "roundness": null + }, + { + "type": "line", + "id": "ln56", + "x": 0.0, + "y": 395.05, + "width": 0.0, + "height": 43.0, + "strokeColor": "#b45309", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1111, + "version": 1, + "versionNonce": 1112, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "points": [ + [ + 0.0, + 0.0 + ], + [ + 0.0, + 43.0 + ] + ], + "roundness": null + }, + { + "type": "line", + "id": "ln57", + "x": 880, + "y": 395.05, + "width": 0, + "height": 43.0, + "strokeColor": "#b45309", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1113, + "version": 1, + "versionNonce": 1114, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "points": [ + [ + 0, + 0.0 + ], + [ + 0, + 43.0 + ] + ], + "roundness": null + }, + { + "type": "text", + "id": "jw58", + "x": 81.6, + "y": 406.925, + "width": 118.0, + "height": 16.25, + "strokeColor": "#134e4a", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1115, + "version": 1, + "versionNonce": 1116, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "finding", + "originalText": "finding", + "fontSize": 13, + "fontFamily": 2, + "textAlign": "center", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 + }, + { + "type": "text", + "id": "jw59", + "x": 281.2, + "y": 406.925, + "width": 118.0, + "height": 16.25, + "strokeColor": "#134e4a", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1117, + "version": 1, + "versionNonce": 1118, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "diagnosis", + "originalText": "diagnosis", + "fontSize": 13, + "fontFamily": 2, + "textAlign": "center", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 + }, + { + "type": "text", + "id": "jw60", + "x": 480.79999999999995, + "y": 406.925, + "width": 118.0, + "height": 16.25, + "strokeColor": "#134e4a", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1119, + "version": 1, + "versionNonce": 1120, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "location", + "originalText": "location", + "fontSize": 13, + "fontFamily": 2, + "textAlign": "center", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 + }, + { + "type": "text", + "id": "jw61", + "x": 680.4, + "y": 406.925, + "width": 118.0, + "height": 16.25, + "strokeColor": "#134e4a", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1121, + "version": 1, + "versionNonce": 1122, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "exam type", + "originalText": "exam type", + "fontSize": 13, + "fontFamily": 2, + "textAlign": "center", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 + }, + { + "type": "text", + "id": "lead62", + "x": 0, + "y": 367.925, + "width": 880, + "height": 16.25, + "strokeColor": "#0f766e", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1123, + "version": 1, + "versionNonce": 1124, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "woven together at every:", + "originalText": "woven together at every:", + "fontSize": 13, + "fontFamily": 2, + "textAlign": "center", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 + } + ], + "appState": { + "viewBackgroundColor": "#ffffff", + "gridSize": null + }, + "files": { + "img_bicon3": { + "mimeType": "image/svg+xml", + "id": "img_bicon3", + "dataURL": "data:image/svg+xml;base64,PHN2ZwogIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIKICB3aWR0aD0iMjQiCiAgaGVpZ2h0PSIyNCIKICB2aWV3Qm94PSIwIDAgMjQgMjQiCiAgZmlsbD0ibm9uZSIKICBzdHJva2U9IiNiZTEyM2MiCiAgc3Ryb2tlLXdpZHRoPSIyIgogIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIKICBzdHJva2UtbGluZWpvaW49InJvdW5kIgo+CiAgPHBhdGggZD0iTTE1IDE0Yy4yLTEgLjctMS43IDEuNS0yLjUgMS0uOSAxLjUtMi4yIDEuNS0zLjVBNiA2IDAgMCAwIDYgOGMwIDEgLjIgMi4yIDEuNSAzLjUuNy43IDEuMyAxLjUgMS41IDIuNSIgLz4KICA8cGF0aCBkPSJNOSAxOGg2IiAvPgogIDxwYXRoIGQ9Ik0xMCAyMmg0IiAvPgo8L3N2Zz4K", + "created": 1700000000000 + }, + "img_bicon6": { + "mimeType": "image/svg+xml", + "id": "img_bicon6", + "dataURL": "data:image/svg+xml;base64,PHN2ZwogIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIKICB3aWR0aD0iMjQiCiAgaGVpZ2h0PSIyNCIKICB2aWV3Qm94PSIwIDAgMjQgMjQiCiAgZmlsbD0ibm9uZSIKICBzdHJva2U9IiMxNTgwM2QiCiAgc3Ryb2tlLXdpZHRoPSIyIgogIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIKICBzdHJva2UtbGluZWpvaW49InJvdW5kIgo+CiAgPHJlY3QgeD0iMiIgeT0iNCIgd2lkdGg9IjIwIiBoZWlnaHQ9IjE2IiByeD0iMiIgLz4KICA8cGF0aCBkPSJNMTAgNHY0IiAvPgogIDxwYXRoIGQ9Ik0yIDhoMjAiIC8+CiAgPHBhdGggZD0iTTYgNHY0IiAvPgo8L3N2Zz4K", + "created": 1700000000000 + }, + "img_bicon12": { + "mimeType": "image/svg+xml", + "id": "img_bicon12", + "dataURL": "data:image/svg+xml;base64,PHN2ZwogIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIKICB3aWR0aD0iMjQiCiAgaGVpZ2h0PSIyNCIKICB2aWV3Qm94PSIwIDAgMjQgMjQiCiAgZmlsbD0ibm9uZSIKICBzdHJva2U9IiM2ZDI4ZDkiCiAgc3Ryb2tlLXdpZHRoPSIyIgogIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIKICBzdHJva2UtbGluZWpvaW49InJvdW5kIgo+CiAgPHBhdGggZD0iTTExIDIxLjczYTIgMiAwIDAgMCAyIDBsNy00QTIgMiAwIDAgMCAyMSAxNlY4YTIgMiAwIDAgMC0xLTEuNzNsLTctNGEyIDIgMCAwIDAtMiAwbC03IDRBMiAyIDAgMCAwIDMgOHY4YTIgMiAwIDAgMCAxIDEuNzN6IiAvPgogIDxwYXRoIGQ9Ik0xMiAyMlYxMiIgLz4KICA8cG9seWxpbmUgcG9pbnRzPSIzLjI5IDcgMTIgMTIgMjAuNzEgNyIgLz4KICA8cGF0aCBkPSJtNy41IDQuMjcgOSA1LjE1IiAvPgo8L3N2Zz4K", + "created": 1700000000000 + }, + "img_bicon16": { + "mimeType": "image/svg+xml", + "id": "img_bicon16", + "dataURL": "data:image/svg+xml;base64,PHN2ZwogIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIKICB3aWR0aD0iMjQiCiAgaGVpZ2h0PSIyNCIKICB2aWV3Qm94PSIwIDAgMjQgMjQiCiAgZmlsbD0ibm9uZSIKICBzdHJva2U9IiMwZjc2NmUiCiAgc3Ryb2tlLXdpZHRoPSIyIgogIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIKICBzdHJva2UtbGluZWpvaW49InJvdW5kIgo+CiAgPHBhdGggZD0iTTEyLjgzIDIuMThhMiAyIDAgMCAwLTEuNjYgMEwyLjYgNi4wOGExIDEgMCAwIDAgMCAxLjgzbDguNTggMy45MWEyIDIgMCAwIDAgMS42NiAwbDguNTgtMy45YTEgMSAwIDAgMCAwLTEuODN6IiAvPgogIDxwYXRoIGQ9Ik0yIDEyYTEgMSAwIDAgMCAuNTguOTFsOC42IDMuOTFhMiAyIDAgMCAwIDEuNjUgMGw4LjU4LTMuOUExIDEgMCAwIDAgMjIgMTIiIC8+CiAgPHBhdGggZD0iTTIgMTdhMSAxIDAgMCAwIC41OC45MWw4LjYgMy45MWEyIDIgMCAwIDAgMS42NSAwbDguNTgtMy45QTEgMSAwIDAgMCAyMiAxNyIgLz4KPC9zdmc+Cg==", + "created": 1700000000000 + }, + "img_blki20": { + "mimeType": "image/svg+xml", + "id": "img_blki20", + "dataURL": "data:image/svg+xml;base64,PHN2ZwogIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIKICB3aWR0aD0iMjQiCiAgaGVpZ2h0PSIyNCIKICB2aWV3Qm94PSIwIDAgMjQgMjQiCiAgZmlsbD0ibm9uZSIKICBzdHJva2U9IiMwZjc2NmUiCiAgc3Ryb2tlLXdpZHRoPSIyIgogIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIKICBzdHJva2UtbGluZWpvaW49InJvdW5kIgo+CiAgPHJlY3Qgd2lkdGg9IjgiIGhlaWdodD0iNCIgeD0iOCIgeT0iMiIgcng9IjEiIHJ5PSIxIiAvPgogIDxwYXRoIGQ9Ik0xNiA0aDJhMiAyIDAgMCAxIDIgMnYxNGEyIDIgMCAwIDEtMiAySDZhMiAyIDAgMCAxLTItMlY2YTIgMiAwIDAgMSAyLTJoMiIgLz4KPC9zdmc+Cg==", + "created": 1700000000000 + }, + "img_blki23": { + "mimeType": "image/svg+xml", + "id": "img_blki23", + "dataURL": "data:image/svg+xml;base64,PHN2ZwogIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIKICB3aWR0aD0iMjQiCiAgaGVpZ2h0PSIyNCIKICB2aWV3Qm94PSIwIDAgMjQgMjQiCiAgZmlsbD0ibm9uZSIKICBzdHJva2U9IiMwZjc2NmUiCiAgc3Ryb2tlLXdpZHRoPSIyIgogIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIKICBzdHJva2UtbGluZWpvaW49InJvdW5kIgo+CiAgPHJlY3Qgd2lkdGg9IjgiIGhlaWdodD0iNCIgeD0iOCIgeT0iMiIgcng9IjEiIHJ5PSIxIiAvPgogIDxwYXRoIGQ9Ik0xNiA0aDJhMiAyIDAgMCAxIDIgMnYxNGEyIDIgMCAwIDEtMiAySDZhMiAyIDAgMCAxLTItMlY2YTIgMiAwIDAgMSAyLTJoMiIgLz4KICA8cGF0aCBkPSJNMTIgMTFoNCIgLz4KICA8cGF0aCBkPSJNMTIgMTZoNCIgLz4KICA8cGF0aCBkPSJNOCAxMWguMDEiIC8+CiAgPHBhdGggZD0iTTggMTZoLjAxIiAvPgo8L3N2Zz4K", + "created": 1700000000000 + }, + "img_blki27": { + "mimeType": "image/svg+xml", + "id": "img_blki27", + "dataURL": "data:image/svg+xml;base64,PHN2ZwogIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIKICB3aWR0aD0iMjQiCiAgaGVpZ2h0PSIyNCIKICB2aWV3Qm94PSIwIDAgMjQgMjQiCiAgZmlsbD0ibm9uZSIKICBzdHJva2U9IiMwZjc2NmUiCiAgc3Ryb2tlLXdpZHRoPSIyIgogIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIKICBzdHJva2UtbGluZWpvaW49InJvdW5kIgo+CiAgPHBhdGggZD0iTTMgNWguMDEiIC8+CiAgPHBhdGggZD0iTTMgMTJoLjAxIiAvPgogIDxwYXRoIGQ9Ik0zIDE5aC4wMSIgLz4KICA8cGF0aCBkPSJNOCA1aDEzIiAvPgogIDxwYXRoIGQ9Ik04IDEyaDEzIiAvPgogIDxwYXRoIGQ9Ik04IDE5aDEzIiAvPgo8L3N2Zz4K", + "created": 1700000000000 + }, + "img_blki31": { + "mimeType": "image/svg+xml", + "id": "img_blki31", + "dataURL": "data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNDgiIGhlaWdodD0iNDgiIHZpZXdCb3g9IjAgMCA0OCA0OCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0yNCAyNEMyOC40MjA0IDI0IDMyIDIwLjQyMDQgMzIgMTZDMzIgMTEuNTc5NiAyOC40MjA0IDggMjQgOEMxOS41Nzk2IDggMTYgMTEuNTc5NiAxNiAxNkMxNiAyMC40MjA0IDE5LjU3OTYgMjQgMjQgMjRaTTM0IDE2QzM0IDIxLjUyNSAyOS41MjUgMjYgMjQgMjZDMTguNDc1IDI2IDE0IDIxLjUyNSAxNCAxNkMxNCAxMC40NzUgMTguNDc1IDYgMjQgNkMyOS41MjUgNiAzNCAxMC40NzUgMzQgMTZaIiBmaWxsPSIjMGY3NjZlIi8+CjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgY2xpcC1ydWxlPSJldmVub2RkIiBkPSJNOS4yMjM0OCAzNC4yMTE5QzguMjIwMzggMzUuMDIxMSA4IDM1LjYyOTEgOCAzNlY0MEg0MFYzNkM0MCAzNS42MjkxIDM5Ljc3OTYgMzUuMDIxMSAzOC43NzY1IDM0LjIxMTlDMzcuNzk1OCAzMy40MjA3IDM2LjMzNDEgMzIuNjY2OSAzNC41NjIyIDMyLjAxNUMzMS4wMTk5IDMwLjcxMTcgMjYuNzUzMiAzMCAyNCAzMEMyMS4yNDY4IDMwIDE2Ljk4MDEgMzAuNzExNyAxMy40Mzc4IDMyLjAxNUMxMS42NjU5IDMyLjY2NjkgMTAuMjA0MiAzMy40MjA3IDkuMjIzNDggMzQuMjExOVpNMjQgMjhDMTcuOTkyNSAyOCA2IDMxLjAzNDcgNiAzNlY0Mkg0MlYzNkM0MiAzMS4wMzQ3IDMwLjAwNzUgMjggMjQgMjhaIiBmaWxsPSIjMGY3NjZlIi8+Cjwvc3ZnPgo=", + "created": 1700000000000 + }, + "img_bicon34": { + "mimeType": "image/svg+xml", + "id": "img_bicon34", + "dataURL": "data:image/svg+xml;base64,PHN2ZwogIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIKICB3aWR0aD0iMjQiCiAgaGVpZ2h0PSIyNCIKICB2aWV3Qm94PSIwIDAgMjQgMjQiCiAgZmlsbD0ibm9uZSIKICBzdHJva2U9IiNiNDUzMDkiCiAgc3Ryb2tlLXdpZHRoPSIyIgogIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIKICBzdHJva2UtbGluZWpvaW49InJvdW5kIgo+CiAgPHBhdGggZD0iTTEyIDV2MTYiIC8+CiAgPHBhdGggZD0iTTIwLjAwMSAxOUEyIDIgMCAwMDIyIDE3VjVhMiAyIDAgMDAtMS45OTktMkwxNiAzLjAwMkE1IDUgMCAwMDEyIDVhNSA1IDAgMDAtNC0ySDRhMiAyIDAgMDAtMiAydjEyYTIgMiAwIDAwMS45OTkgMkg4YTUgNSAwIDAxNCAyIDUgNSAwIDAxNC0yeiIgLz4KPC9zdmc+Cg==", + "created": 1700000000000 + }, + "img_blki38": { + "mimeType": "image/svg+xml", + "id": "img_blki38", + "dataURL": "data:image/svg+xml;base64,PHN2ZwogIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIKICB3aWR0aD0iMjQiCiAgaGVpZ2h0PSIyNCIKICB2aWV3Qm94PSIwIDAgMjQgMjQiCiAgZmlsbD0ibm9uZSIKICBzdHJva2U9IiNiNDUzMDkiCiAgc3Ryb2tlLXdpZHRoPSIyIgogIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIKICBzdHJva2UtbGluZWpvaW49InJvdW5kIgo+CiAgPHBhdGggZD0iTTEyLjU4NiAyLjU4NkEyIDIgMCAwIDAgMTEuMTcyIDJINGEyIDIgMCAwIDAtMiAydjcuMTcyYTIgMiAwIDAgMCAuNTg2IDEuNDE0bDguNzA0IDguNzA0YTIuNDI2IDIuNDI2IDAgMCAwIDMuNDIgMGw2LjU4LTYuNThhMi40MjYgMi40MjYgMCAwIDAgMC0zLjQyeiIgLz4KICA8Y2lyY2xlIGN4PSI3LjUiIGN5PSI3LjUiIHI9Ii41IiBmaWxsPSIjYjQ1MzA5IiAvPgo8L3N2Zz4K", + "created": 1700000000000 + }, + "img_blki42": { + "mimeType": "image/svg+xml", + "id": "img_blki42", + "dataURL": "data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNDgiIGhlaWdodD0iNDgiIHZpZXdCb3g9IjAgMCA0OCA0OCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0yMyA2LjAwMDEzQzIzIDYuMDAwMDQgMjMgNiAyNCA2SDI0LjE3NjFDMjQuMjUzMyA2IDI0LjMyMzMgNiAyNC4zODY4IDZDMjUgNi4wMDAwMSAyNSA2LjAwMDA1IDI1IDYuMDAwMTNWMjAuNUMyNSAyMS44OTc3IDI1LjU2NDEgMjIuNDQyMSAyNi4wMDM5IDIyLjY5ODdDMjYuMDUzIDIyLjcyNzMgMjYuMTAyNCAyMi43NTMzIDI2LjE1MTYgMjIuNzc3QzI2LjE1MDYgMjIuNjU2OCAyNi4xNDkzIDIyLjUzMTYgMjYuMTQ3OSAyMi40MDE5TDI2LjE0NzkgMjIuNDAwM0MyNi4xMTAxIDE4Ljg3MTYgMjYuMDM2NSAxMS45OTk3IDMxLjQ3NTMgMTEuOTk5N0MzOC45MjU5IDExLjk5OTcgNDQuMjQ3OCAzOC4wMDYyIDQxLjA1NDcgNDAuNjU5OUMzNy44NjE1IDQzLjMxMzYgMzEuNDc1MyA0MS43MjE0IDI4LjI4MjIgMzguNTM2OUMyNS43MDQyIDM1Ljk2NTkgMjUuOTI3MiAyOS45NTgzIDI2LjA4NzMgMjUuNjQ1N0wyNi4wODc0IDI1LjY0NDNDMjYuMDk3MSAyNS4zODE5IDI2LjEwNjcgMjUuMTI1OCAyNi4xMTUzIDI0Ljg3NzFDMjUuNzkgMjQuNzk2MiAyNS4zOTU5IDI0LjY1OTUgMjQuOTk2MiAyNC40MjYzQzI0LjYzOTggMjQuMjE4NCAyNC4yOTc1IDIzLjk0NDIgMjQgMjMuNTkxOUMyMy43MDI2IDIzLjk0NDIgMjMuMzYwMyAyNC4yMTg0IDIzLjAwMzkgMjQuNDI2M0MyMi42MDQxIDI0LjY1OTUgMjIuMjEwMSAyNC43OTYyIDIxLjg4NDggMjQuODc3MUMyMS44OTM0IDI1LjEyNjEgMjEuOTAyOSAyNS4zODI2IDIxLjkxMjcgMjUuNjQ1M0MyMi4wNzI4IDI5Ljk1NzkgMjIuMjk1OSAzNS45NjYyIDE5LjcxNzkgMzguNTM3MkMxNi41MjQ3IDQxLjcyMTcgMTAuMTM4NSA0My4zMTM5IDYuOTQ1MzYgNDAuNjYwMkMzLjc1MjIyIDM4LjAwNjUgOS4wNzQxMyAxMiAxNi41MjQ3IDEyQzIxLjk2MzYgMTIgMjEuODkgMTguODcxNyAyMS44NTIyIDIyLjQwMDNDMjEuODUyIDIyLjQxNjYgMjEuODUxOCAyMi40MzI4IDIxLjg1MTYgMjIuNDQ4OUMyMS44NTA0IDIyLjU2MTkgMjEuODQ5MyAyMi42NzE0IDIxLjg0ODQgMjIuNzc3QzIxLjg5NzcgMjIuNzUzNCAyMS45NDcxIDIyLjcyNzQgMjEuOTk2MiAyMi42OTg3QzIyLjQzNiAyMi40NDIxIDIzIDIxLjg5NzcgMjMgMjAuNVY2LjAwMDEzWk0zMS40NzUzIDEzLjk5OTdDMzAuNTIxMiAxMy45OTk3IDI5Ljk4NDMgMTQuMzAwMiAyOS42MDg2IDE0LjY4NjlDMjkuMTc1MiAxNS4xMzMxIDI4LjgxMzIgMTUuODUwNyAyOC41NTkgMTYuODY0NkMyOC4xMTQxIDE4LjYzOTUgMjguMTMzIDIwLjY4MTkgMjguMTQ4MyAyMi4zMjkzQzI4LjE1MDkgMjIuNjE0MiAyOC4xNTM0IDIyLjg4NzQgMjguMTUzNCAyMy4xNDUzQzI4LjE1MzQgMjMuOTA1MyAyOC4xMTk2IDI0LjgxNTMgMjguMDg0NSAyNS43NjIxQzI4LjA3MDcgMjYuMTM0OSAyOC4wNTY2IDI2LjUxMzMgMjguMDQ0MyAyNi44OTA1QzI3Ljk5OTYgMjguMjY1NyAyNy45NzQxIDI5LjcwNTUgMjguMDQwNSAzMS4wOTgyQzI4LjEwNzIgMzIuNDk4NSAyOC4yNjQyIDMzLjc4MzUgMjguNTU3MyAzNC44NTk2QzI4Ljg1MzggMzUuOTQ4MyAyOS4yNTA5IDM2LjY3ODQgMjkuNjk0NCAzNy4xMjA4QzMwLjk3MjYgMzguMzk1NCAzMi45OTA4IDM5LjQyNTEgMzUuMDQ5MiAzOS44MjQzQzM3LjA4NDIgNDAuMjE4OSAzOC43MjI0IDM5LjkyNjkgMzkuNjgxOCAzOS4xOTY5QzM5LjY4NjggMzkuMTg1NyAzOS42OTIzIDM5LjE3MjYgMzkuNjk4NCAzOS4xNTc0QzM5Ljc1NzYgMzkuMDA5NSAzOS44Mjk0IDM4Ljc1NTQgMzkuODg3OCAzOC4zNjgzQzQwLjAwNDcgMzcuNTkzMyA0MC4wMzUgMzYuNTEyMiAzOS45NTYyIDM1LjE4MDNDMzkuNzk5NSAzMi41MzA1IDM5LjIyODYgMjkuMTY4OSAzOC4zMjY4IDI1Ljg2MDZDMzcuNDIxNiAyMi41Mzk2IDM2LjIxNzMgMTkuMzk5OCAzNC44NTIxIDE3LjEzODNDMzQuMTY4OCAxNi4wMDYyIDMzLjQ5NTEgMTUuMTc4NiAzMi44NzAzIDE0LjY1MzVDMzIuMjUxOCAxNC4xMzM3IDMxLjc5MzUgMTMuOTk5NyAzMS40NzUzIDEzLjk5OTdaTTE2LjUyNDcgMTRDMTcuNDc4OCAxNCAxOC4wMTU4IDE0LjMwMDUgMTguMzkxNCAxNC42ODcyQzE4LjgyNDggMTUuMTMzNCAxOS4xODY4IDE1Ljg1MSAxOS40NDEgMTYuODY0OUMxOS44ODU5IDE4LjYzOTkgMTkuODY3IDIwLjY4MjIgMTkuODUxOCAyMi4zMjk2QzE5Ljg0OTEgMjIuNjE0NiAxOS44NDY2IDIyLjg4NzcgMTkuODQ2NiAyMy4xNDU2QzE5Ljg0NjYgMjMuOTA1NiAxOS44ODA0IDI0LjgxNTYgMTkuOTE1NSAyNS43NjI0QzE5LjkyOTQgMjYuMTM1IDE5Ljk0MzQgMjYuNTEzOCAxOS45NTU3IDI2Ljg5MDhDMjAuMDAwNSAyOC4yNjYgMjAuMDI1OSAyOS43MDU4IDE5Ljk1OTYgMzEuMDk4NUMxOS44OTI5IDMyLjQ5ODggMTkuNzM1OSAzMy43ODM4IDE5LjQ0MjcgMzQuODU5OUMxOS4xNDYyIDM1Ljk0ODYgMTguNzQ5MiAzNi42Nzg3IDE4LjMwNTYgMzcuMTIxMUMxNy4wMjc1IDM4LjM5NTcgMTUuMDA5MyAzOS40MjU0IDEyLjk1MDkgMzkuODI0NkMxMC45MTU5IDQwLjIxOTIgOS4yNzc2OCAzOS45MjcyIDguMzE4MjMgMzkuMTk3MkM4LjMxMzI2IDM5LjE4NiA4LjMwNzcgMzkuMTcyOSA4LjMwMTYyIDM5LjE1NzdDOC4yNDI0MSAzOS4wMDk4IDguMTcwNjEgMzguNzU1NyA4LjExMjI0IDM4LjM2ODZDNy45OTUzOSAzNy41OTM2IDcuOTY1IDM2LjUxMjUgOC4wNDM4IDM1LjE4MDZDOC4yMDA1NiAzMi41MzA4IDguNzcxNDcgMjkuMTY5MiA5LjY3MzI0IDI1Ljg2MDlDMTAuNTc4NSAyMi41Mzk5IDExLjc4MjcgMTkuNDAwMSAxMy4xNDc5IDE3LjEzODZDMTMuODMxMyAxNi4wMDY1IDE0LjUwNDkgMTUuMTc4OSAxNS4xMjk4IDE0LjY1MzhDMTUuNzQ4MiAxNC4xMzQgMTYuMjA2NSAxNCAxNi41MjQ3IDE0WiIgZmlsbD0iI2I0NTMwOSIvPgo8L3N2Zz4K", + "created": 1700000000000 + }, + "img_blki46": { + "mimeType": "image/svg+xml", + "id": "img_blki46", + "dataURL": "data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNDgiIGhlaWdodD0iNDgiIHZpZXdCb3g9IjAgMCA0OCA0OCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0yOSA5QzI5IDExLjc2MTQgMjYuNzYxNCAxNCAyNCAxNEMyMS4yMzg2IDE0IDE5IDExLjc2MTQgMTkgOUMxOSA2LjIzODU4IDIxLjIzODYgNCAyNCA0QzI2Ljc2MTQgNCAyOSA2LjIzODU4IDI5IDlaTTI3IDlDMjcgMTAuNjU2OSAyNS42NTY5IDEyIDI0IDEyQzIyLjM0MzEgMTIgMjEgMTAuNjU2OSAyMSA5QzIxIDcuMzQzMTUgMjIuMzQzMSA2IDI0IDZDMjUuNjU2OSA2IDI3IDcuMzQzMTUgMjcgOVoiIGZpbGw9IiNiNDUzMDkiLz4KPHBhdGggZD0iTTE2Ljk5OTggNDFWMzRIMTguOTk5OFY0MUMxOC45OTk4IDQxLjU1MjMgMTkuNDQ3NSA0MiAxOS45OTk4IDQySDIwLjA4NjVDMjAuNjAzNyA0MiAyMS4wMzU2IDQxLjYwNTYgMjEuMDgyNCA0MS4wOTA1TDIxLjcyNyAzNEgyMy43MzUzTDIzLjA3NDIgNDEuMjcxNkMyMy4wNjkgNDEuMzI4OCAyMy4wNjIyIDQxLjM4NTYgMjMuMDUzOSA0MS40NDE3QzIzLjAzNTcgNDEuNTY0NyAyMy4wMTAxIDQxLjY4NTEgMjIuOTc3NiA0MS44MDI1QzIyLjYyNDIgNDMuMDc5OCAyMS40NTQ5IDQ0IDIwLjA4NjUgNDRIMTkuOTk5OEMxOC4zNDI5IDQ0IDE2Ljk5OTggNDIuNjU2OSAxNi45OTk4IDQxWiIgZmlsbD0iI2I0NTMwOSIvPgo8cGF0aCBkPSJNMjYuOTE3MSA0MS4wOTA1TDI2LjI3MjUgMzRIMjQuMjY0MkwyNC45MjUzIDQxLjI3MTZDMjQuOTMwNSA0MS4zMjg4IDI0LjkzNzMgNDEuMzg1NiAyNC45NDU2IDQxLjQ0MTdDMjQuOTYzOCA0MS41NjQ3IDI0Ljk4OTQgNDEuNjg1MSAyNS4wMjE5IDQxLjgwMjVDMjUuMzc1MyA0My4wNzk4IDI2LjU0NDYgNDQgMjcuOTEzIDQ0SDI3Ljk5OThDMjkuNjU2NiA0NCAzMC45OTk4IDQyLjY1NjkgMzAuOTk5OCA0MVYzNEgyOC45OTk4VjQxQzI4Ljk5OTggNDEuNTUyMyAyOC41NTIgNDIgMjcuOTk5OCA0MkgyNy45MTNDMjcuMzk1OCA0MiAyNi45NjM5IDQxLjYwNTYgMjYuOTE3MSA0MS4wOTA1WiIgZmlsbD0iI2I0NTMwOSIvPgo8cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGNsaXAtcnVsZT0iZXZlbm9kZCIgZD0iTTExIDE1QzEwLjQ0NzcgMTUgMTAgMTUuNDQ3NyAxMCAxNlYzMUMxMCAzMS41NTIzIDEwLjQ0NzcgMzIgMTEgMzJIMzdDMzcuNTUyMyAzMiAzOCAzMS41NTIzIDM4IDMxVjE2QzM4IDE1LjQ0NzcgMzcuNTUyMyAxNSAzNyAxNUgxMVpNMTIgMTdWMzBIMTkuNUMxOS41IDI5LjQ0MjQgMTkuNzU5MSAyOC45NTcyIDIwLjAyNzYgMjguNjAwNkMyMC4zMDg2IDI4LjIyNzYgMjAuNjc5NiAyNy44ODgzIDIxLjA3OTQgMjcuNjAxNkMyMS42MjUyIDI3LjIxMDMgMjIuMjk4NiAyNi44NjUgMjMgMjYuNjY3OFYyNC41SDIyLjJDMjEuNTk3MyAyNC41IDIwLjc1MzUgMjQuODY0MiAxOS45NDMzIDI1LjM1NTJDMTkuNTYzOCAyNS41ODUyIDE5LjIzMzcgMjUuODE2NyAxOC45OTg0IDI1Ljk5MTFDMTguODgxMiAyNi4wNzc4IDE4Ljc4ODggMjYuMTQ5NSAxOC43MjcgMjYuMTk4NEMxOC42OTYxIDI2LjIyMjggMTguNjczIDI2LjI0MTUgMTguNjU4MiAyNi4yNTM1TDE4LjY0MjYgMjYuMjY2M0wxOC42Mzk5IDI2LjI2ODRDMTguNjM5OSAyNi4yNjg0IDE4LjY0MDIgMjYuMjY4MiAxOCAyNS41QzE3LjM1OTggMjQuNzMxOCAxNy4zNjAxIDI0LjczMTUgMTcuMzYwMSAyNC43MzE1TDE3LjM2MTQgMjQuNzMwNUwxNy4zNjM4IDI0LjcyODVMMTcuMzcxMyAyNC43MjIzTDE3LjM5NjYgMjQuNzAxNkMxNy40MTc5IDI0LjY4NDMgMTcuNDQ4IDI0LjY2IDE3LjQ4NjMgMjQuNjI5N0MxNy41NjI3IDI0LjU2OTMgMTcuNjcxOSAyNC40ODQ3IDE3LjgwNzkgMjQuMzgzOUMxOC4wNzg4IDI0LjE4MzMgMTguNDYxMiAyMy45MTQ4IDE4LjkwNjcgMjMuNjQ0OEMxOS43NDY1IDIzLjEzNTggMjEuMDAyNyAyMi41IDIyLjIgMjIuNUgyM1YyMC41SDIyLjVDMjEuOTMwOSAyMC41IDIxLjE5MDkgMjAuNjk5MiAyMC41MjkyIDIwLjkzOThDMjAuMjEyIDIxLjA1NTIgMTkuOTM3IDIxLjE3MDkgMTkuNzQyMSAyMS4yNTc2QzE5LjY0NDkgMjEuMzAwNyAxOS41Njg1IDIxLjMzNjMgMTkuNTE3NiAyMS4zNjA1QzE5LjQ5MjIgMjEuMzcyNSAxOS40NzMyIDIxLjM4MTcgMTkuNDYxMyAyMS4zODc1TDE5LjQ0ODcgMjEuMzkzN0wxOS40NDcgMjEuMzk0NUMxOS40NDcgMjEuMzk0NSAxOS40NDcyIDIxLjM5NDQgMTkgMjAuNUMxOC41NTI4IDE5LjYwNTYgMTguNTUzMSAxOS42MDU0IDE4LjU1MzEgMTkuNjA1NEwxOC41NTY0IDE5LjYwMzhMMTguNTYyOSAxOS42MDA2TDE4LjU4NDQgMTkuNTlDMTguNjAyNSAxOS41ODEyIDE4LjYyNzkgMTkuNTY4OSAxOC42NjAxIDE5LjU1MzZDMTguNzI0NSAxOS41MjMxIDE4LjgxNiAxOS40ODA1IDE4LjkyOTggMTkuNDI5OUMxOS4xNTY3IDE5LjMyOTEgMTkuNDc1NSAxOS4xOTQ4IDE5Ljg0NTggMTkuMDYwMkMyMC41NTkxIDE4LjgwMDggMjEuNTY5MSAxOC41IDIyLjUgMTguNUgyM1YxN0gxMlpNMjUgMjQuNUgyNi4xQzI2Ljg0ODkgMjQuNSAyNy42MTg2IDI0Ljg2NjMgMjguMjYzMSAyNS4zMTg2QzI4LjU3MzUgMjUuNTM2NCAyOC44Mjg1IDI1Ljc1NTYgMjkuMDA0OCAyNS45MTk3QzI5LjA5MjUgMjYuMDAxMiAyOS4xNTk0IDI2LjA2NzkgMjkuMjAyNiAyNi4xMTIyQzI5LjIyNDEgMjYuMTM0MyAyOS4yMzk3IDI2LjE1MDcgMjkuMjQ4OCAyNi4xNjA1TDI5LjI1NzQgMjYuMTY5N0MyOS4yNTc0IDI2LjE2OTcgMjkuMjU2NyAyNi4xNjkgMzAgMjUuNUMzMC43NDMzIDI0LjgzMSAzMC43NDI5IDI0LjgzMDYgMzAuNzQyOSAyNC44MzA2TDMwLjc0MTQgMjQuODI5TDMwLjczODkgMjQuODI2MkwzMC43MzE4IDI0LjgxODRMMzAuNzA5NyAyNC43OTQ2QzMwLjY5MTUgMjQuNzc1MSAzMC42NjYzIDI0Ljc0ODUgMzAuNjM0NiAyNC43MTZDMzAuNTcxMSAyNC42NTA5IDMwLjQ4MDkgMjQuNTYxMyAzMC4zNjcgMjQuNDU1M0MzMC4xNDAzIDI0LjI0NDQgMjkuODE0IDIzLjk2MzYgMjkuNDExOSAyMy42ODE0QzI4LjYzMTQgMjMuMTMzNyAyNy40NTExIDIyLjUgMjYuMSAyMi41SDI1VjIwLjVIMjUuNzVDMjYuNDQ0MyAyMC41IDI3LjExOTMgMjAuNzAxMSAyNy42NDMyIDIwLjkyMTZDMjcuOTAwMyAyMS4wMjk5IDI4LjEwOTIgMjEuMTM3OCAyOC4yNTA5IDIxLjIxNjlDMjguMzIxNSAyMS4yNTY0IDI4LjM3NDcgMjEuMjg4MiAyOC40MDggMjEuMzA4N0MyOC40MjQ3IDIxLjMxODkgMjguNDM2MyAyMS4zMjYzIDI4LjQ0MjcgMjEuMzMwNEwyOC40NDU3IDIxLjMzMjNDMjguNDQ1NyAyMS4zMzIzIDI4LjQ0NTMgMjEuMzMyMSAyOSAyMC41QzI5LjU1NDcgMTkuNjY3OSAyOS41NTQyIDE5LjY2NzYgMjkuNTU0MiAxOS42Njc2TDI5LjU1MjcgMTkuNjY2NkwyOS41NTAxIDE5LjY2NDlMMjkuNTQzMiAxOS42NjA0TDI5LjUyMjggMTkuNjQ3MkMyOS41MDYzIDE5LjYzNjYgMjkuNDg0IDE5LjYyMjUgMjkuNDU2MiAxOS42MDU0QzI5LjQwMDcgMTkuNTcxMiAyOS4zMjMgMTkuNTI0OSAyOS4yMjU2IDE5LjQ3MDZDMjkuMDMxNSAxOS4zNjIyIDI4Ljc1NTkgMTkuMjIwMSAyOC40MTkzIDE5LjA3ODRDMjcuNzU1NyAxOC43OTg5IDI2LjgwNTcgMTguNSAyNS43NSAxOC41SDI1VjE3SDM2VjMwSDI4LjVDMjguNSAyOS40Mzc5IDI4LjIzMjQgMjguOTQ1MiAyNy45NjQxIDI4LjU4NzVDMjcuNjgwMyAyOC4yMDkyIDI3LjMwNTQgMjcuODYwNiAyNi45MDA3IDI3LjU2NjNDMjYuMzY3NSAyNy4xNzg1IDI1LjY5ODkgMjYuODI1NyAyNSAyNi42MzkxVjI0LjVaTTI2LjQ5MjkgMzBDMjYuNDc5NyAyOS45NjcgMjYuNDQ1NyAyOS44OTY0IDI2LjM2NDEgMjkuNzg3NUMyNi4yMjU5IDI5LjYwMzMgMjYuMDA3MSAyOS4zODk0IDI1LjcyNDMgMjkuMTgzN0MyNS4xNDc4IDI4Ljc2NDUgMjQuNDkzNyAyOC41MTE3IDI0LjAzMiAyOC41MDA0QzIzLjQ4NzcgMjguNTQ2NCAyMi44MDUyIDI4LjgyNTIgMjIuMjQ0OSAyOS4yMjdDMjEuOTY1NyAyOS40MjcyIDIxLjc1NTYgMjkuNjMwNyAyMS42MjUyIDI5LjgwMzhDMjEuNTQ5NiAyOS45MDQzIDIxLjUxODQgMjkuOTY5NCAyMS41MDYzIDMwSDI2LjQ5MjlaIiBmaWxsPSIjYjQ1MzA5Ii8+Cjwvc3ZnPgo=", + "created": 1700000000000 + } + } +} \ No newline at end of file diff --git a/knowledge/drafts/pillars-b2.excalidraw b/knowledge/drafts/pillars-b2.excalidraw new file mode 100644 index 0000000..0c52966 --- /dev/null +++ b/knowledge/drafts/pillars-b2.excalidraw @@ -0,0 +1,2960 @@ +{ + "type": "excalidraw", + "version": 2, + "source": "oidm-knowledge/tools/diagrams", + "elements": [ + { + "type": "rectangle", + "id": "band50", + "x": 0, + "y": 377.05, + "width": 880, + "height": 150.99999999999994, + "strokeColor": "#b45309", + "backgroundColor": "#fef3c7", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1099, + "version": 1, + "versionNonce": 1100, + "isDeleted": false, + "groupIds": [], + "boundElements": [], + "link": null, + "locked": false, + "roundness": { + "type": 3 + } + }, + { + "type": "rectangle", + "id": "fill55", + "x": -1, + "y": 377.05, + "width": 33, + "height": 32.0, + "strokeColor": "transparent", + "backgroundColor": "#fef3c7", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1109, + "version": 1, + "versionNonce": 1110, + "isDeleted": false, + "groupIds": [], + "boundElements": [], + "link": null, + "locked": false, + "roundness": null + }, + { + "type": "rectangle", + "id": "fill56", + "x": 848, + "y": 377.05, + "width": 33, + "height": 32.0, + "strokeColor": "transparent", + "backgroundColor": "#fef3c7", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1111, + "version": 1, + "versionNonce": 1112, + "isDeleted": false, + "groupIds": [], + "boundElements": [], + "link": null, + "locked": false, + "roundness": null + }, + { + "type": "line", + "id": "ln57", + "x": 0, + "y": 377.05, + "width": 0, + "height": 32.0, + "strokeColor": "#b45309", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1113, + "version": 1, + "versionNonce": 1114, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "points": [ + [ + 0, + 0.0 + ], + [ + 0, + 32.0 + ] + ], + "roundness": null + }, + { + "type": "line", + "id": "ln58", + "x": 880, + "y": 377.05, + "width": 0, + "height": 32.0, + "strokeColor": "#b45309", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1115, + "version": 1, + "versionNonce": 1116, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "points": [ + [ + 0, + 0.0 + ], + [ + 0, + 32.0 + ] + ], + "roundness": null + }, + { + "type": "rectangle", + "id": "band33", + "x": 0, + "y": 187.3, + "width": 880, + "height": 189.75, + "strokeColor": "#0f766e", + "backgroundColor": "#ccfbf1", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1065, + "version": 1, + "versionNonce": 1066, + "isDeleted": false, + "groupIds": [], + "boundElements": [], + "link": null, + "locked": false, + "roundness": { + "type": 3 + } + }, + { + "type": "rectangle", + "id": "fill51", + "x": -1, + "y": 345.05, + "width": 33, + "height": 32.0, + "strokeColor": "transparent", + "backgroundColor": "#ccfbf1", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1101, + "version": 1, + "versionNonce": 1102, + "isDeleted": false, + "groupIds": [], + "boundElements": [], + "link": null, + "locked": false, + "roundness": null + }, + { + "type": "rectangle", + "id": "fill52", + "x": 848, + "y": 345.05, + "width": 33, + "height": 32.0, + "strokeColor": "transparent", + "backgroundColor": "#ccfbf1", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1103, + "version": 1, + "versionNonce": 1104, + "isDeleted": false, + "groupIds": [], + "boundElements": [], + "link": null, + "locked": false, + "roundness": null + }, + { + "type": "line", + "id": "ln53", + "x": 0, + "y": 345.05, + "width": 0, + "height": 32.0, + "strokeColor": "#0f766e", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1105, + "version": 1, + "versionNonce": 1106, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "points": [ + [ + 0, + 0.0 + ], + [ + 0, + 32.0 + ] + ], + "roundness": null + }, + { + "type": "line", + "id": "ln54", + "x": 880, + "y": 345.05, + "width": 0, + "height": 32.0, + "strokeColor": "#0f766e", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1107, + "version": 1, + "versionNonce": 1108, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "points": [ + [ + 0, + 0.0 + ], + [ + 0, + 32.0 + ] + ], + "roundness": null + }, + { + "type": "rectangle", + "id": "band15", + "x": 0, + "y": 91.65, + "width": 880, + "height": 71.65, + "strokeColor": "#6d28d9", + "backgroundColor": "#ede9fe", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1029, + "version": 1, + "versionNonce": 1030, + "isDeleted": false, + "groupIds": [], + "boundElements": [], + "link": null, + "locked": false, + "roundness": { + "type": 3 + } + }, + { + "type": "rectangle", + "id": "panel1", + "x": 0, + "y": 0, + "width": 388.0, + "height": 67.65, + "strokeColor": "#be123c", + "backgroundColor": "#ffe4e6", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1001, + "version": 1, + "versionNonce": 1002, + "isDeleted": false, + "groupIds": [], + "boundElements": [], + "link": null, + "locked": false, + "roundness": { + "type": 3 + } + }, + { + "type": "rectangle", + "id": "panel2", + "x": 492.0, + "y": 0, + "width": 388.0, + "height": 67.65, + "strokeColor": "#15803d", + "backgroundColor": "#dcfce7", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1003, + "version": 1, + "versionNonce": 1004, + "isDeleted": false, + "groupIds": [], + "boundElements": [], + "link": null, + "locked": false, + "roundness": { + "type": 3 + } + }, + { + "type": "image", + "id": "bicon3", + "x": 18, + "y": 12.0, + "width": 28, + "height": 28, + "strokeColor": "transparent", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1005, + "version": 1, + "versionNonce": 1006, + "isDeleted": false, + "groupIds": [], + "boundElements": [], + "link": null, + "locked": false, + "fileId": "img_bicon3", + "status": "saved", + "scale": [ + 1, + 1 + ], + "roundness": null, + "crop": null + }, + { + "type": "text", + "id": "btitle4", + "x": 58, + "y": 14, + "width": 93.96, + "height": 22.5, + "strokeColor": "#881337", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1007, + "version": 1, + "versionNonce": 1008, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "Use Cases", + "originalText": "Use Cases", + "fontSize": 18, + "fontFamily": 2, + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 + }, + { + "type": "text", + "id": "bsub5", + "x": 58, + "y": 37.400000000000006, + "width": 211.11999999999998, + "height": 16.25, + "strokeColor": "#be123c", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1009, + "version": 1, + "versionNonce": 1010, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "what the project wants built", + "originalText": "what the project wants built", + "fontSize": 13, + "fontFamily": 2, + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 + }, + { + "type": "image", + "id": "bicon6", + "x": 510.0, + "y": 12.0, + "width": 28, + "height": 28, + "strokeColor": "transparent", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1011, + "version": 1, + "versionNonce": 1012, + "isDeleted": false, + "groupIds": [], + "boundElements": [], + "link": null, + "locked": false, + "fileId": "img_bicon6", + "status": "saved", + "scale": [ + 1, + 1 + ], + "roundness": null, + "crop": null + }, + { + "type": "text", + "id": "btitle7", + "x": 550.0, + "y": 14, + "width": 198.35999999999999, + "height": 22.5, + "strokeColor": "#14532d", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1013, + "version": 1, + "versionNonce": 1014, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "Sample Applications", + "originalText": "Sample Applications", + "fontSize": 18, + "fontFamily": 2, + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 + }, + { + "type": "text", + "id": "bsub8", + "x": 550.0, + "y": 37.400000000000006, + "width": 143.26, + "height": 16.25, + "strokeColor": "#15803d", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1015, + "version": 1, + "versionNonce": 1016, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "what has been built", + "originalText": "what has been built", + "fontSize": 13, + "fontFamily": 2, + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 + }, + { + "type": "line", + "id": "conn9", + "x": 390.0, + "y": 33.825, + "width": 100.0, + "height": 0, + "strokeColor": "#64748b", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1017, + "version": 1, + "versionNonce": 1018, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "points": [ + [ + 0, + 0 + ], + [ + 100.0, + 0 + ] + ] + }, + { + "type": "rectangle", + "id": "chip10", + "x": 389.53, + "y": 4.575000000000003, + "width": 100.94, + "height": 22.25, + "strokeColor": "transparent", + "backgroundColor": "#ffffff", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1019, + "version": 1, + "versionNonce": 1020, + "isDeleted": false, + "groupIds": [], + "boundElements": [], + "link": null, + "locked": false, + "roundness": { + "type": 3 + } + }, + { + "type": "text", + "id": "chipt11", + "x": 398.53, + "y": 7.575000000000003, + "width": 82.94, + "height": 16.25, + "strokeColor": "#64748b", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1021, + "version": 1, + "versionNonce": 1022, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "illustrates", + "originalText": "illustrates", + "fontSize": 13, + "fontFamily": 2, + "textAlign": "center", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 + }, + { + "type": "image", + "id": "bicon12", + "x": 18, + "y": 105.65, + "width": 28, + "height": 28, + "strokeColor": "transparent", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1023, + "version": 1, + "versionNonce": 1024, + "isDeleted": false, + "groupIds": [], + "boundElements": [], + "link": null, + "locked": false, + "fileId": "img_bicon12", + "status": "saved", + "scale": [ + 1, + 1 + ], + "roundness": null, + "crop": null + }, + { + "type": "text", + "id": "btitle13", + "x": 58, + "y": 107.65, + "width": 41.76, + "height": 22.5, + "strokeColor": "#4c1d95", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1025, + "version": 1, + "versionNonce": 1026, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "SDKs", + "originalText": "SDKs", + "fontSize": 18, + "fontFamily": 2, + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 + }, + { + "type": "text", + "id": "bsub14", + "x": 58, + "y": 131.05, + "width": 520.26, + "height": 16.25, + "strokeColor": "#6d28d9", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1027, + "version": 1, + "versionNonce": 1028, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "wrap the structures \u00b7 attach the shared knowledge \u00b7 support authoring", + "originalText": "wrap the structures \u00b7 attach the shared knowledge \u00b7 support authoring", + "fontSize": 13, + "fontFamily": 2, + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 + }, + { + "type": "image", + "id": "bicon16", + "x": 18, + "y": 203.3, + "width": 28, + "height": 28, + "strokeColor": "transparent", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1031, + "version": 1, + "versionNonce": 1032, + "isDeleted": false, + "groupIds": [], + "boundElements": [], + "link": null, + "locked": false, + "fileId": "img_bicon16", + "status": "saved", + "scale": [ + 1, + 1 + ], + "roundness": null, + "crop": null + }, + { + "type": "text", + "id": "btitle17", + "x": 58, + "y": 205.3, + "width": 174.0, + "height": 25.0, + "strokeColor": "#134e4a", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1033, + "version": 1, + "versionNonce": 1034, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "Data Structures", + "originalText": "Data Structures", + "fontSize": 20, + "fontFamily": 2, + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 + }, + { + "type": "text", + "id": "bsub18", + "x": 58, + "y": 231.3, + "width": 226.2, + "height": 16.25, + "strokeColor": "#0f766e", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1035, + "version": 1, + "versionNonce": 1036, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "this patient \u00b7 Patient Context", + "originalText": "this patient \u00b7 Patient Context", + "fontSize": 13, + "fontFamily": 2, + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 + }, + { + "type": "rectangle", + "id": "blk19", + "x": 20.0, + "y": 261.55, + "width": 195.0, + "height": 95.5, + "strokeColor": "#0f766e", + "backgroundColor": "#99f6e4", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1037, + "version": 1, + "versionNonce": 1038, + "isDeleted": false, + "groupIds": [], + "boundElements": [], + "link": null, + "locked": false, + "roundness": { + "type": 3 + } + }, + { + "type": "image", + "id": "blki20", + "x": 103.5, + "y": 281.925, + "width": 28, + "height": 28, + "strokeColor": "transparent", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1039, + "version": 1, + "versionNonce": 1040, + "isDeleted": false, + "groupIds": [], + "boundElements": [], + "link": null, + "locked": false, + "fileId": "img_blki20", + "status": "saved", + "scale": [ + 1, + 1 + ], + "roundness": null, + "crop": null + }, + { + "type": "text", + "id": "blkt21", + "x": 26.0, + "y": 315.925, + "width": 183.0, + "height": 18.75, + "strokeColor": "#134e4a", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1041, + "version": 1, + "versionNonce": 1042, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "Observation", + "originalText": "Observation", + "fontSize": 15, + "fontFamily": 2, + "textAlign": "center", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 + }, + { + "type": "rectangle", + "id": "blk22", + "x": 235.0, + "y": 261.55, + "width": 195.0, + "height": 95.5, + "strokeColor": "#0f766e", + "backgroundColor": "#99f6e4", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1043, + "version": 1, + "versionNonce": 1044, + "isDeleted": false, + "groupIds": [], + "boundElements": [], + "link": null, + "locked": false, + "roundness": { + "type": 3 + } + }, + { + "type": "image", + "id": "blki23", + "x": 318.5, + "y": 272.55, + "width": 28, + "height": 28, + "strokeColor": "transparent", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1045, + "version": 1, + "versionNonce": 1046, + "isDeleted": false, + "groupIds": [], + "boundElements": [], + "link": null, + "locked": false, + "fileId": "img_blki23", + "status": "saved", + "scale": [ + 1, + 1 + ], + "roundness": null, + "crop": null + }, + { + "type": "text", + "id": "blkt24", + "x": 241.0, + "y": 306.55, + "width": 183.0, + "height": 18.75, + "strokeColor": "#134e4a", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1047, + "version": 1, + "versionNonce": 1048, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "Exam Finding", + "originalText": "Exam Finding", + "fontSize": 15, + "fontFamily": 2, + "textAlign": "center", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 + }, + { + "type": "text", + "id": "blkt25", + "x": 241.0, + "y": 325.3, + "width": 183.0, + "height": 18.75, + "strokeColor": "#134e4a", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1049, + "version": 1, + "versionNonce": 1050, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "List", + "originalText": "List", + "fontSize": 15, + "fontFamily": 2, + "textAlign": "center", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 + }, + { + "type": "rectangle", + "id": "blk26", + "x": 450.0, + "y": 261.55, + "width": 195.0, + "height": 95.5, + "strokeColor": "#0f766e", + "backgroundColor": "#99f6e4", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1051, + "version": 1, + "versionNonce": 1052, + "isDeleted": false, + "groupIds": [], + "boundElements": [], + "link": null, + "locked": false, + "roundness": { + "type": 3 + } + }, + { + "type": "image", + "id": "blki27", + "x": 533.5, + "y": 272.55, + "width": 28, + "height": 28, + "strokeColor": "transparent", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1053, + "version": 1, + "versionNonce": 1054, + "isDeleted": false, + "groupIds": [], + "boundElements": [], + "link": null, + "locked": false, + "fileId": "img_blki27", + "status": "saved", + "scale": [ + 1, + 1 + ], + "roundness": null, + "crop": null + }, + { + "type": "text", + "id": "blkt28", + "x": 456.0, + "y": 306.55, + "width": 183.0, + "height": 18.75, + "strokeColor": "#134e4a", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1055, + "version": 1, + "versionNonce": 1056, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "Imaging Problem", + "originalText": "Imaging Problem", + "fontSize": 15, + "fontFamily": 2, + "textAlign": "center", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 + }, + { + "type": "text", + "id": "blkt29", + "x": 456.0, + "y": 325.3, + "width": 183.0, + "height": 18.75, + "strokeColor": "#134e4a", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1057, + "version": 1, + "versionNonce": 1058, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "List", + "originalText": "List", + "fontSize": 15, + "fontFamily": 2, + "textAlign": "center", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 + }, + { + "type": "rectangle", + "id": "blk30", + "x": 665.0, + "y": 261.55, + "width": 195.0, + "height": 95.5, + "strokeColor": "#0f766e", + "backgroundColor": "#99f6e4", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1059, + "version": 1, + "versionNonce": 1060, + "isDeleted": false, + "groupIds": [], + "boundElements": [], + "link": null, + "locked": false, + "roundness": { + "type": 3 + } + }, + { + "type": "image", + "id": "blki31", + "x": 746.5, + "y": 279.925, + "width": 32, + "height": 32, + "strokeColor": "transparent", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1061, + "version": 1, + "versionNonce": 1062, + "isDeleted": false, + "groupIds": [], + "boundElements": [], + "link": null, + "locked": false, + "fileId": "img_blki31", + "status": "saved", + "scale": [ + 1, + 1 + ], + "roundness": null, + "crop": null + }, + { + "type": "text", + "id": "blkt32", + "x": 671.0, + "y": 315.925, + "width": 183.0, + "height": 18.75, + "strokeColor": "#134e4a", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1063, + "version": 1, + "versionNonce": 1064, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "Imaging Persona", + "originalText": "Imaging Persona", + "fontSize": 15, + "fontFamily": 2, + "textAlign": "center", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 + }, + { + "type": "rectangle", + "id": "blk34", + "x": 236.0, + "y": 377.05, + "width": 236.0, + "height": 125.0, + "strokeColor": "#b45309", + "backgroundColor": "#fde68a", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1067, + "version": 1, + "versionNonce": 1068, + "isDeleted": false, + "groupIds": [], + "boundElements": [], + "link": null, + "locked": false, + "roundness": { + "type": 3 + } + }, + { + "type": "image", + "id": "blki35", + "x": 340.0, + "y": 418.05, + "width": 28, + "height": 28, + "strokeColor": "transparent", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1069, + "version": 1, + "versionNonce": 1070, + "isDeleted": false, + "groupIds": [], + "boundElements": [], + "link": null, + "locked": false, + "fileId": "img_blki35", + "status": "saved", + "scale": [ + 1, + 1 + ], + "roundness": null, + "crop": null + }, + { + "type": "text", + "id": "blkt36", + "x": 242.0, + "y": 452.05, + "width": 224.0, + "height": 18.75, + "strokeColor": "#78350f", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1071, + "version": 1, + "versionNonce": 1072, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "Finding/diagnosis definitions", + "originalText": "Finding/diagnosis definitions", + "fontSize": 15, + "fontFamily": 2, + "textAlign": "center", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 + }, + { + "type": "text", + "id": "blkd37", + "x": 242.0, + "y": 472.8, + "width": 224.0, + "height": 16.25, + "strokeColor": "#b45309", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1073, + "version": 1, + "versionNonce": 1074, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "finding models \u00b7 CDEs", + "originalText": "finding models \u00b7 CDEs", + "fontSize": 13, + "fontFamily": 2, + "textAlign": "center", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 + }, + { + "type": "rectangle", + "id": "blk38", + "x": 492.0, + "y": 377.05, + "width": 174.0, + "height": 125.0, + "strokeColor": "#b45309", + "backgroundColor": "#fde68a", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1075, + "version": 1, + "versionNonce": 1076, + "isDeleted": false, + "groupIds": [], + "boundElements": [], + "link": null, + "locked": false, + "roundness": { + "type": 3 + } + }, + { + "type": "image", + "id": "blki39", + "x": 563.0, + "y": 416.05, + "width": 32, + "height": 32, + "strokeColor": "transparent", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1077, + "version": 1, + "versionNonce": 1078, + "isDeleted": false, + "groupIds": [], + "boundElements": [], + "link": null, + "locked": false, + "fileId": "img_blki39", + "status": "saved", + "scale": [ + 1, + 1 + ], + "roundness": null, + "crop": null + }, + { + "type": "text", + "id": "blkt40", + "x": 498.0, + "y": 452.05, + "width": 162.0, + "height": 18.75, + "strokeColor": "#78350f", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1079, + "version": 1, + "versionNonce": 1080, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "Anatomic locations", + "originalText": "Anatomic locations", + "fontSize": 15, + "fontFamily": 2, + "textAlign": "center", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 + }, + { + "type": "text", + "id": "blkd41", + "x": 498.0, + "y": 472.8, + "width": 162.0, + "height": 16.25, + "strokeColor": "#b45309", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1081, + "version": 1, + "versionNonce": 1082, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "anchored in RadLex", + "originalText": "anchored in RadLex", + "fontSize": 13, + "fontFamily": 2, + "textAlign": "center", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 + }, + { + "type": "rectangle", + "id": "blk42", + "x": 686.0, + "y": 377.05, + "width": 174.0, + "height": 125.0, + "strokeColor": "#b45309", + "backgroundColor": "#fde68a", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1083, + "version": 1, + "versionNonce": 1084, + "isDeleted": false, + "groupIds": [], + "boundElements": [], + "link": null, + "locked": false, + "roundness": { + "type": 3 + } + }, + { + "type": "image", + "id": "blki43", + "x": 757.0, + "y": 416.05, + "width": 32, + "height": 32, + "strokeColor": "transparent", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1085, + "version": 1, + "versionNonce": 1086, + "isDeleted": false, + "groupIds": [], + "boundElements": [], + "link": null, + "locked": false, + "fileId": "img_blki43", + "status": "saved", + "scale": [ + 1, + 1 + ], + "roundness": null, + "crop": null + }, + { + "type": "text", + "id": "blkt44", + "x": 692.0, + "y": 452.05, + "width": 162.0, + "height": 18.75, + "strokeColor": "#78350f", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1087, + "version": 1, + "versionNonce": 1088, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "Exam types", + "originalText": "Exam types", + "fontSize": 15, + "fontFamily": 2, + "textAlign": "center", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 + }, + { + "type": "text", + "id": "blkd45", + "x": 692.0, + "y": 472.8, + "width": 162.0, + "height": 16.25, + "strokeColor": "#b45309", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1089, + "version": 1, + "versionNonce": 1090, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "LOINC/RSNA Playbook", + "originalText": "LOINC/RSNA Playbook", + "fontSize": 13, + "fontFamily": 2, + "textAlign": "center", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 + }, + { + "type": "image", + "id": "bicon46", + "x": 20, + "y": 416.425, + "width": 28, + "height": 28, + "strokeColor": "transparent", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1091, + "version": 1, + "versionNonce": 1092, + "isDeleted": false, + "groupIds": [], + "boundElements": [], + "link": null, + "locked": false, + "fileId": "img_bicon46", + "status": "saved", + "scale": [ + 1, + 1 + ], + "roundness": null, + "crop": null + }, + { + "type": "text", + "id": "btitle47", + "x": 60, + "y": 418.425, + "width": 115.99999999999999, + "height": 25.0, + "strokeColor": "#78350f", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1093, + "version": 1, + "versionNonce": 1094, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "Foundation", + "originalText": "Foundation", + "fontSize": 20, + "fontFamily": 2, + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 + }, + { + "type": "text", + "id": "btitle48", + "x": 60, + "y": 444.425, + "width": 81.19999999999999, + "height": 25.0, + "strokeColor": "#78350f", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1095, + "version": 1, + "versionNonce": 1096, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "Context", + "originalText": "Context", + "fontSize": 20, + "fontFamily": 2, + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 + }, + { + "type": "text", + "id": "bsub49", + "x": 60, + "y": 474.425, + "width": 188.5, + "height": 16.25, + "strokeColor": "#b45309", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1097, + "version": 1, + "versionNonce": 1098, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "shared, curated knowledge", + "originalText": "shared, curated knowledge", + "fontSize": 13, + "fontFamily": 2, + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 + }, + { + "type": "rectangle", + "id": "fill59", + "x": 236.0, + "y": 377.05, + "width": 236.0, + "height": 32, + "strokeColor": "transparent", + "backgroundColor": "#fde68a", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1117, + "version": 1, + "versionNonce": 1118, + "isDeleted": false, + "groupIds": [], + "boundElements": [], + "link": null, + "locked": false, + "roundness": null + }, + { + "type": "line", + "id": "ln60", + "x": 236.0, + "y": 377.05, + "width": 0.0, + "height": 32.0, + "strokeColor": "#b45309", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1119, + "version": 1, + "versionNonce": 1120, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "points": [ + [ + 0.0, + 0.0 + ], + [ + 0.0, + 32.0 + ] + ], + "roundness": null + }, + { + "type": "line", + "id": "ln61", + "x": 472.0, + "y": 377.05, + "width": 0.0, + "height": 32.0, + "strokeColor": "#b45309", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1121, + "version": 1, + "versionNonce": 1122, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "points": [ + [ + 0.0, + 0.0 + ], + [ + 0.0, + 32.0 + ] + ], + "roundness": null + }, + { + "type": "rectangle", + "id": "fill62", + "x": 492.0, + "y": 377.05, + "width": 174.0, + "height": 32, + "strokeColor": "transparent", + "backgroundColor": "#fde68a", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1123, + "version": 1, + "versionNonce": 1124, + "isDeleted": false, + "groupIds": [], + "boundElements": [], + "link": null, + "locked": false, + "roundness": null + }, + { + "type": "line", + "id": "ln63", + "x": 492.0, + "y": 377.05, + "width": 0.0, + "height": 32.0, + "strokeColor": "#b45309", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1125, + "version": 1, + "versionNonce": 1126, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "points": [ + [ + 0.0, + 0.0 + ], + [ + 0.0, + 32.0 + ] + ], + "roundness": null + }, + { + "type": "line", + "id": "ln64", + "x": 666.0, + "y": 377.05, + "width": 0.0, + "height": 32.0, + "strokeColor": "#b45309", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1127, + "version": 1, + "versionNonce": 1128, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "points": [ + [ + 0.0, + 0.0 + ], + [ + 0.0, + 32.0 + ] + ], + "roundness": null + }, + { + "type": "rectangle", + "id": "fill65", + "x": 686.0, + "y": 377.05, + "width": 174.0, + "height": 32, + "strokeColor": "transparent", + "backgroundColor": "#fde68a", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1129, + "version": 1, + "versionNonce": 1130, + "isDeleted": false, + "groupIds": [], + "boundElements": [], + "link": null, + "locked": false, + "roundness": null + }, + { + "type": "line", + "id": "ln66", + "x": 686.0, + "y": 377.05, + "width": 0.0, + "height": 32.0, + "strokeColor": "#b45309", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1131, + "version": 1, + "versionNonce": 1132, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "points": [ + [ + 0.0, + 0.0 + ], + [ + 0.0, + 32.0 + ] + ], + "roundness": null + }, + { + "type": "line", + "id": "ln67", + "x": 860.0, + "y": 377.05, + "width": 0.0, + "height": 32.0, + "strokeColor": "#b45309", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1133, + "version": 1, + "versionNonce": 1134, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "points": [ + [ + 0.0, + 0.0 + ], + [ + 0.0, + 32.0 + ] + ], + "roundness": null + }, + { + "type": "line", + "id": "ln68", + "x": 236.0, + "y": 377.05, + "width": 236.0, + "height": 0.0, + "strokeColor": "#b45309", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1135, + "version": 1, + "versionNonce": 1136, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "points": [ + [ + 0.0, + 0.0 + ], + [ + 236.0, + 0.0 + ] + ], + "roundness": null + }, + { + "type": "line", + "id": "ln69", + "x": 492.0, + "y": 377.05, + "width": 174.0, + "height": 0.0, + "strokeColor": "#b45309", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1137, + "version": 1, + "versionNonce": 1138, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "points": [ + [ + 0.0, + 0.0 + ], + [ + 174.0, + 0.0 + ] + ], + "roundness": null + }, + { + "type": "line", + "id": "ln70", + "x": 686.0, + "y": 377.05, + "width": 174.0, + "height": 0.0, + "strokeColor": "#b45309", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1139, + "version": 1, + "versionNonce": 1140, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "points": [ + [ + 0.0, + 0.0 + ], + [ + 174.0, + 0.0 + ] + ], + "roundness": null + }, + { + "type": "line", + "id": "ln71", + "x": 0.0, + "y": 377.05, + "width": 236.0, + "height": 0.0, + "strokeColor": "#0f766e", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1141, + "version": 1, + "versionNonce": 1142, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "points": [ + [ + 0.0, + 0.0 + ], + [ + 236.0, + 0.0 + ] + ], + "roundness": null + }, + { + "type": "line", + "id": "ln72", + "x": 472.0, + "y": 377.05, + "width": 20.0, + "height": 0.0, + "strokeColor": "#0f766e", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1143, + "version": 1, + "versionNonce": 1144, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "points": [ + [ + 0.0, + 0.0 + ], + [ + 20.0, + 0.0 + ] + ], + "roundness": null + }, + { + "type": "line", + "id": "ln73", + "x": 666.0, + "y": 377.05, + "width": 20.0, + "height": 0.0, + "strokeColor": "#0f766e", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1145, + "version": 1, + "versionNonce": 1146, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "points": [ + [ + 0.0, + 0.0 + ], + [ + 20.0, + 0.0 + ] + ], + "roundness": null + }, + { + "type": "line", + "id": "ln74", + "x": 860.0, + "y": 377.05, + "width": 20.0, + "height": 0.0, + "strokeColor": "#0f766e", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1147, + "version": 1, + "versionNonce": 1148, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "points": [ + [ + 0.0, + 0.0 + ], + [ + 20.0, + 0.0 + ] + ], + "roundness": null + }, + { + "type": "text", + "id": "lead75", + "x": 20, + "y": 383.925, + "width": 180.95999999999998, + "height": 16.25, + "strokeColor": "#b45309", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1149, + "version": 1, + "versionNonce": 1150, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "woven together at every:", + "originalText": "woven together at every:", + "fontSize": 13, + "fontFamily": 2, + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 + }, + { + "type": "rectangle", + "id": "fill76", + "x": 250.0, + "y": 363.05, + "width": 92.0, + "height": 44.0, + "strokeColor": "transparent", + "backgroundColor": "#ccfbf1", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1151, + "version": 1, + "versionNonce": 1152, + "isDeleted": false, + "groupIds": [], + "boundElements": [], + "link": null, + "locked": false, + "roundness": { + "type": 3 + } + }, + { + "type": "line", + "id": "ln77", + "x": 250.0, + "y": 377.05, + "width": 92.0, + "height": 30.0, + "strokeColor": "#0f766e", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1153, + "version": 1, + "versionNonce": 1154, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "points": [ + [ + 0.0, + 0.0 + ], + [ + 0.0, + 20.0 + ], + [ + 0.7612046748871251, + 23.82683432365087 + ], + [ + 2.9289321881345245, + 27.071067811865476 + ], + [ + 6.173165676349129, + 29.238795325112847 + ], + [ + 10.0, + 30.0 + ], + [ + 82.0, + 30.0 + ], + [ + 85.82683432365087, + 29.238795325112847 + ], + [ + 89.07106781186548, + 27.071067811865476 + ], + [ + 91.23879532511285, + 23.82683432365087 + ], + [ + 92.0, + 20.0 + ], + [ + 92.0, + 0.0 + ] + ], + "roundness": null + }, + { + "type": "text", + "id": "tabw78", + "x": 250.0, + "y": 383.925, + "width": 92.0, + "height": 16.25, + "strokeColor": "#134e4a", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1155, + "version": 1, + "versionNonce": 1156, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "finding", + "originalText": "finding", + "fontSize": 13, + "fontFamily": 2, + "textAlign": "center", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 + }, + { + "type": "rectangle", + "id": "fill79", + "x": 366.0, + "y": 363.05, + "width": 92.0, + "height": 44.0, + "strokeColor": "transparent", + "backgroundColor": "#ccfbf1", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1157, + "version": 1, + "versionNonce": 1158, + "isDeleted": false, + "groupIds": [], + "boundElements": [], + "link": null, + "locked": false, + "roundness": { + "type": 3 + } + }, + { + "type": "line", + "id": "ln80", + "x": 366.0, + "y": 377.05, + "width": 92.0, + "height": 30.0, + "strokeColor": "#0f766e", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1159, + "version": 1, + "versionNonce": 1160, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "points": [ + [ + 0.0, + 0.0 + ], + [ + 0.0, + 20.0 + ], + [ + 0.7612046748871535, + 23.82683432365087 + ], + [ + 2.9289321881345245, + 27.071067811865476 + ], + [ + 6.173165676349129, + 29.238795325112847 + ], + [ + 10.0, + 30.0 + ], + [ + 82.0, + 30.0 + ], + [ + 85.82683432365087, + 29.238795325112847 + ], + [ + 89.07106781186548, + 27.071067811865476 + ], + [ + 91.23879532511285, + 23.82683432365087 + ], + [ + 92.0, + 20.0 + ], + [ + 92.0, + 0.0 + ] + ], + "roundness": null + }, + { + "type": "text", + "id": "tabw81", + "x": 366.0, + "y": 383.925, + "width": 92.0, + "height": 16.25, + "strokeColor": "#134e4a", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1161, + "version": 1, + "versionNonce": 1162, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "diagnosis", + "originalText": "diagnosis", + "fontSize": 13, + "fontFamily": 2, + "textAlign": "center", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 + }, + { + "type": "rectangle", + "id": "fill82", + "x": 533.0, + "y": 363.05, + "width": 92.0, + "height": 44.0, + "strokeColor": "transparent", + "backgroundColor": "#ccfbf1", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1163, + "version": 1, + "versionNonce": 1164, + "isDeleted": false, + "groupIds": [], + "boundElements": [], + "link": null, + "locked": false, + "roundness": { + "type": 3 + } + }, + { + "type": "line", + "id": "ln83", + "x": 533.0, + "y": 377.05, + "width": 92.0, + "height": 30.0, + "strokeColor": "#0f766e", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1165, + "version": 1, + "versionNonce": 1166, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "points": [ + [ + 0.0, + 0.0 + ], + [ + 0.0, + 20.0 + ], + [ + 0.7612046748871535, + 23.82683432365087 + ], + [ + 2.9289321881345813, + 27.071067811865476 + ], + [ + 6.173165676349072, + 29.238795325112847 + ], + [ + 10.0, + 30.0 + ], + [ + 82.0, + 30.0 + ], + [ + 85.82683432365093, + 29.238795325112847 + ], + [ + 89.07106781186553, + 27.071067811865476 + ], + [ + 91.23879532511285, + 23.82683432365087 + ], + [ + 92.0, + 20.0 + ], + [ + 92.0, + 0.0 + ] + ], + "roundness": null + }, + { + "type": "text", + "id": "tabw84", + "x": 533.0, + "y": 383.925, + "width": 92.0, + "height": 16.25, + "strokeColor": "#134e4a", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1167, + "version": 1, + "versionNonce": 1168, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "location", + "originalText": "location", + "fontSize": 13, + "fontFamily": 2, + "textAlign": "center", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 + }, + { + "type": "rectangle", + "id": "fill85", + "x": 727.0, + "y": 363.05, + "width": 92.0, + "height": 44.0, + "strokeColor": "transparent", + "backgroundColor": "#ccfbf1", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1169, + "version": 1, + "versionNonce": 1170, + "isDeleted": false, + "groupIds": [], + "boundElements": [], + "link": null, + "locked": false, + "roundness": { + "type": 3 + } + }, + { + "type": "line", + "id": "ln86", + "x": 727.0, + "y": 377.05, + "width": 92.0, + "height": 30.0, + "strokeColor": "#0f766e", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1171, + "version": 1, + "versionNonce": 1172, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "points": [ + [ + 0.0, + 0.0 + ], + [ + 0.0, + 20.0 + ], + [ + 0.7612046748871535, + 23.82683432365087 + ], + [ + 2.9289321881345813, + 27.071067811865476 + ], + [ + 6.173165676349072, + 29.238795325112847 + ], + [ + 10.0, + 30.0 + ], + [ + 82.0, + 30.0 + ], + [ + 85.82683432365093, + 29.238795325112847 + ], + [ + 89.07106781186553, + 27.071067811865476 + ], + [ + 91.23879532511285, + 23.82683432365087 + ], + [ + 92.0, + 20.0 + ], + [ + 92.0, + 0.0 + ] + ], + "roundness": null + }, + { + "type": "text", + "id": "tabw87", + "x": 727.0, + "y": 383.925, + "width": 92.0, + "height": 16.25, + "strokeColor": "#134e4a", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1173, + "version": 1, + "versionNonce": 1174, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "exam type", + "originalText": "exam type", + "fontSize": 13, + "fontFamily": 2, + "textAlign": "center", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 + } + ], + "appState": { + "viewBackgroundColor": "#ffffff", + "gridSize": null + }, + "files": { + "img_bicon3": { + "mimeType": "image/svg+xml", + "id": "img_bicon3", + "dataURL": "data:image/svg+xml;base64,PHN2ZwogIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIKICB3aWR0aD0iMjQiCiAgaGVpZ2h0PSIyNCIKICB2aWV3Qm94PSIwIDAgMjQgMjQiCiAgZmlsbD0ibm9uZSIKICBzdHJva2U9IiNiZTEyM2MiCiAgc3Ryb2tlLXdpZHRoPSIyIgogIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIKICBzdHJva2UtbGluZWpvaW49InJvdW5kIgo+CiAgPHBhdGggZD0iTTE1IDE0Yy4yLTEgLjctMS43IDEuNS0yLjUgMS0uOSAxLjUtMi4yIDEuNS0zLjVBNiA2IDAgMCAwIDYgOGMwIDEgLjIgMi4yIDEuNSAzLjUuNy43IDEuMyAxLjUgMS41IDIuNSIgLz4KICA8cGF0aCBkPSJNOSAxOGg2IiAvPgogIDxwYXRoIGQ9Ik0xMCAyMmg0IiAvPgo8L3N2Zz4K", + "created": 1700000000000 + }, + "img_bicon6": { + "mimeType": "image/svg+xml", + "id": "img_bicon6", + "dataURL": "data:image/svg+xml;base64,PHN2ZwogIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIKICB3aWR0aD0iMjQiCiAgaGVpZ2h0PSIyNCIKICB2aWV3Qm94PSIwIDAgMjQgMjQiCiAgZmlsbD0ibm9uZSIKICBzdHJva2U9IiMxNTgwM2QiCiAgc3Ryb2tlLXdpZHRoPSIyIgogIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIKICBzdHJva2UtbGluZWpvaW49InJvdW5kIgo+CiAgPHJlY3QgeD0iMiIgeT0iNCIgd2lkdGg9IjIwIiBoZWlnaHQ9IjE2IiByeD0iMiIgLz4KICA8cGF0aCBkPSJNMTAgNHY0IiAvPgogIDxwYXRoIGQ9Ik0yIDhoMjAiIC8+CiAgPHBhdGggZD0iTTYgNHY0IiAvPgo8L3N2Zz4K", + "created": 1700000000000 + }, + "img_bicon12": { + "mimeType": "image/svg+xml", + "id": "img_bicon12", + "dataURL": "data:image/svg+xml;base64,PHN2ZwogIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIKICB3aWR0aD0iMjQiCiAgaGVpZ2h0PSIyNCIKICB2aWV3Qm94PSIwIDAgMjQgMjQiCiAgZmlsbD0ibm9uZSIKICBzdHJva2U9IiM2ZDI4ZDkiCiAgc3Ryb2tlLXdpZHRoPSIyIgogIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIKICBzdHJva2UtbGluZWpvaW49InJvdW5kIgo+CiAgPHBhdGggZD0iTTExIDIxLjczYTIgMiAwIDAgMCAyIDBsNy00QTIgMiAwIDAgMCAyMSAxNlY4YTIgMiAwIDAgMC0xLTEuNzNsLTctNGEyIDIgMCAwIDAtMiAwbC03IDRBMiAyIDAgMCAwIDMgOHY4YTIgMiAwIDAgMCAxIDEuNzN6IiAvPgogIDxwYXRoIGQ9Ik0xMiAyMlYxMiIgLz4KICA8cG9seWxpbmUgcG9pbnRzPSIzLjI5IDcgMTIgMTIgMjAuNzEgNyIgLz4KICA8cGF0aCBkPSJtNy41IDQuMjcgOSA1LjE1IiAvPgo8L3N2Zz4K", + "created": 1700000000000 + }, + "img_bicon16": { + "mimeType": "image/svg+xml", + "id": "img_bicon16", + "dataURL": "data:image/svg+xml;base64,PHN2ZwogIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIKICB3aWR0aD0iMjQiCiAgaGVpZ2h0PSIyNCIKICB2aWV3Qm94PSIwIDAgMjQgMjQiCiAgZmlsbD0ibm9uZSIKICBzdHJva2U9IiMwZjc2NmUiCiAgc3Ryb2tlLXdpZHRoPSIyIgogIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIKICBzdHJva2UtbGluZWpvaW49InJvdW5kIgo+CiAgPHBhdGggZD0iTTEyLjgzIDIuMThhMiAyIDAgMCAwLTEuNjYgMEwyLjYgNi4wOGExIDEgMCAwIDAgMCAxLjgzbDguNTggMy45MWEyIDIgMCAwIDAgMS42NiAwbDguNTgtMy45YTEgMSAwIDAgMCAwLTEuODN6IiAvPgogIDxwYXRoIGQ9Ik0yIDEyYTEgMSAwIDAgMCAuNTguOTFsOC42IDMuOTFhMiAyIDAgMCAwIDEuNjUgMGw4LjU4LTMuOUExIDEgMCAwIDAgMjIgMTIiIC8+CiAgPHBhdGggZD0iTTIgMTdhMSAxIDAgMCAwIC41OC45MWw4LjYgMy45MWEyIDIgMCAwIDAgMS42NSAwbDguNTgtMy45QTEgMSAwIDAgMCAyMiAxNyIgLz4KPC9zdmc+Cg==", + "created": 1700000000000 + }, + "img_blki20": { + "mimeType": "image/svg+xml", + "id": "img_blki20", + "dataURL": "data:image/svg+xml;base64,PHN2ZwogIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIKICB3aWR0aD0iMjQiCiAgaGVpZ2h0PSIyNCIKICB2aWV3Qm94PSIwIDAgMjQgMjQiCiAgZmlsbD0ibm9uZSIKICBzdHJva2U9IiMwZjc2NmUiCiAgc3Ryb2tlLXdpZHRoPSIyIgogIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIKICBzdHJva2UtbGluZWpvaW49InJvdW5kIgo+CiAgPHJlY3Qgd2lkdGg9IjgiIGhlaWdodD0iNCIgeD0iOCIgeT0iMiIgcng9IjEiIHJ5PSIxIiAvPgogIDxwYXRoIGQ9Ik0xNiA0aDJhMiAyIDAgMCAxIDIgMnYxNGEyIDIgMCAwIDEtMiAySDZhMiAyIDAgMCAxLTItMlY2YTIgMiAwIDAgMSAyLTJoMiIgLz4KPC9zdmc+Cg==", + "created": 1700000000000 + }, + "img_blki23": { + "mimeType": "image/svg+xml", + "id": "img_blki23", + "dataURL": "data:image/svg+xml;base64,PHN2ZwogIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIKICB3aWR0aD0iMjQiCiAgaGVpZ2h0PSIyNCIKICB2aWV3Qm94PSIwIDAgMjQgMjQiCiAgZmlsbD0ibm9uZSIKICBzdHJva2U9IiMwZjc2NmUiCiAgc3Ryb2tlLXdpZHRoPSIyIgogIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIKICBzdHJva2UtbGluZWpvaW49InJvdW5kIgo+CiAgPHJlY3Qgd2lkdGg9IjgiIGhlaWdodD0iNCIgeD0iOCIgeT0iMiIgcng9IjEiIHJ5PSIxIiAvPgogIDxwYXRoIGQ9Ik0xNiA0aDJhMiAyIDAgMCAxIDIgMnYxNGEyIDIgMCAwIDEtMiAySDZhMiAyIDAgMCAxLTItMlY2YTIgMiAwIDAgMSAyLTJoMiIgLz4KICA8cGF0aCBkPSJNMTIgMTFoNCIgLz4KICA8cGF0aCBkPSJNMTIgMTZoNCIgLz4KICA8cGF0aCBkPSJNOCAxMWguMDEiIC8+CiAgPHBhdGggZD0iTTggMTZoLjAxIiAvPgo8L3N2Zz4K", + "created": 1700000000000 + }, + "img_blki27": { + "mimeType": "image/svg+xml", + "id": "img_blki27", + "dataURL": "data:image/svg+xml;base64,PHN2ZwogIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIKICB3aWR0aD0iMjQiCiAgaGVpZ2h0PSIyNCIKICB2aWV3Qm94PSIwIDAgMjQgMjQiCiAgZmlsbD0ibm9uZSIKICBzdHJva2U9IiMwZjc2NmUiCiAgc3Ryb2tlLXdpZHRoPSIyIgogIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIKICBzdHJva2UtbGluZWpvaW49InJvdW5kIgo+CiAgPHBhdGggZD0iTTMgNWguMDEiIC8+CiAgPHBhdGggZD0iTTMgMTJoLjAxIiAvPgogIDxwYXRoIGQ9Ik0zIDE5aC4wMSIgLz4KICA8cGF0aCBkPSJNOCA1aDEzIiAvPgogIDxwYXRoIGQ9Ik04IDEyaDEzIiAvPgogIDxwYXRoIGQ9Ik04IDE5aDEzIiAvPgo8L3N2Zz4K", + "created": 1700000000000 + }, + "img_blki31": { + "mimeType": "image/svg+xml", + "id": "img_blki31", + "dataURL": "data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNDgiIGhlaWdodD0iNDgiIHZpZXdCb3g9IjAgMCA0OCA0OCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0yNCAyNEMyOC40MjA0IDI0IDMyIDIwLjQyMDQgMzIgMTZDMzIgMTEuNTc5NiAyOC40MjA0IDggMjQgOEMxOS41Nzk2IDggMTYgMTEuNTc5NiAxNiAxNkMxNiAyMC40MjA0IDE5LjU3OTYgMjQgMjQgMjRaTTM0IDE2QzM0IDIxLjUyNSAyOS41MjUgMjYgMjQgMjZDMTguNDc1IDI2IDE0IDIxLjUyNSAxNCAxNkMxNCAxMC40NzUgMTguNDc1IDYgMjQgNkMyOS41MjUgNiAzNCAxMC40NzUgMzQgMTZaIiBmaWxsPSIjMGY3NjZlIi8+CjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgY2xpcC1ydWxlPSJldmVub2RkIiBkPSJNOS4yMjM0OCAzNC4yMTE5QzguMjIwMzggMzUuMDIxMSA4IDM1LjYyOTEgOCAzNlY0MEg0MFYzNkM0MCAzNS42MjkxIDM5Ljc3OTYgMzUuMDIxMSAzOC43NzY1IDM0LjIxMTlDMzcuNzk1OCAzMy40MjA3IDM2LjMzNDEgMzIuNjY2OSAzNC41NjIyIDMyLjAxNUMzMS4wMTk5IDMwLjcxMTcgMjYuNzUzMiAzMCAyNCAzMEMyMS4yNDY4IDMwIDE2Ljk4MDEgMzAuNzExNyAxMy40Mzc4IDMyLjAxNUMxMS42NjU5IDMyLjY2NjkgMTAuMjA0MiAzMy40MjA3IDkuMjIzNDggMzQuMjExOVpNMjQgMjhDMTcuOTkyNSAyOCA2IDMxLjAzNDcgNiAzNlY0Mkg0MlYzNkM0MiAzMS4wMzQ3IDMwLjAwNzUgMjggMjQgMjhaIiBmaWxsPSIjMGY3NjZlIi8+Cjwvc3ZnPgo=", + "created": 1700000000000 + }, + "img_blki35": { + "mimeType": "image/svg+xml", + "id": "img_blki35", + "dataURL": "data:image/svg+xml;base64,PHN2ZwogIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIKICB3aWR0aD0iMjQiCiAgaGVpZ2h0PSIyNCIKICB2aWV3Qm94PSIwIDAgMjQgMjQiCiAgZmlsbD0ibm9uZSIKICBzdHJva2U9IiNiNDUzMDkiCiAgc3Ryb2tlLXdpZHRoPSIyIgogIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIKICBzdHJva2UtbGluZWpvaW49InJvdW5kIgo+CiAgPHBhdGggZD0iTTEyLjU4NiAyLjU4NkEyIDIgMCAwIDAgMTEuMTcyIDJINGEyIDIgMCAwIDAtMiAydjcuMTcyYTIgMiAwIDAgMCAuNTg2IDEuNDE0bDguNzA0IDguNzA0YTIuNDI2IDIuNDI2IDAgMCAwIDMuNDIgMGw2LjU4LTYuNThhMi40MjYgMi40MjYgMCAwIDAgMC0zLjQyeiIgLz4KICA8Y2lyY2xlIGN4PSI3LjUiIGN5PSI3LjUiIHI9Ii41IiBmaWxsPSIjYjQ1MzA5IiAvPgo8L3N2Zz4K", + "created": 1700000000000 + }, + "img_blki39": { + "mimeType": "image/svg+xml", + "id": "img_blki39", + "dataURL": "data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNDgiIGhlaWdodD0iNDgiIHZpZXdCb3g9IjAgMCA0OCA0OCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0yMyA2LjAwMDEzQzIzIDYuMDAwMDQgMjMgNiAyNCA2SDI0LjE3NjFDMjQuMjUzMyA2IDI0LjMyMzMgNiAyNC4zODY4IDZDMjUgNi4wMDAwMSAyNSA2LjAwMDA1IDI1IDYuMDAwMTNWMjAuNUMyNSAyMS44OTc3IDI1LjU2NDEgMjIuNDQyMSAyNi4wMDM5IDIyLjY5ODdDMjYuMDUzIDIyLjcyNzMgMjYuMTAyNCAyMi43NTMzIDI2LjE1MTYgMjIuNzc3QzI2LjE1MDYgMjIuNjU2OCAyNi4xNDkzIDIyLjUzMTYgMjYuMTQ3OSAyMi40MDE5TDI2LjE0NzkgMjIuNDAwM0MyNi4xMTAxIDE4Ljg3MTYgMjYuMDM2NSAxMS45OTk3IDMxLjQ3NTMgMTEuOTk5N0MzOC45MjU5IDExLjk5OTcgNDQuMjQ3OCAzOC4wMDYyIDQxLjA1NDcgNDAuNjU5OUMzNy44NjE1IDQzLjMxMzYgMzEuNDc1MyA0MS43MjE0IDI4LjI4MjIgMzguNTM2OUMyNS43MDQyIDM1Ljk2NTkgMjUuOTI3MiAyOS45NTgzIDI2LjA4NzMgMjUuNjQ1N0wyNi4wODc0IDI1LjY0NDNDMjYuMDk3MSAyNS4zODE5IDI2LjEwNjcgMjUuMTI1OCAyNi4xMTUzIDI0Ljg3NzFDMjUuNzkgMjQuNzk2MiAyNS4zOTU5IDI0LjY1OTUgMjQuOTk2MiAyNC40MjYzQzI0LjYzOTggMjQuMjE4NCAyNC4yOTc1IDIzLjk0NDIgMjQgMjMuNTkxOUMyMy43MDI2IDIzLjk0NDIgMjMuMzYwMyAyNC4yMTg0IDIzLjAwMzkgMjQuNDI2M0MyMi42MDQxIDI0LjY1OTUgMjIuMjEwMSAyNC43OTYyIDIxLjg4NDggMjQuODc3MUMyMS44OTM0IDI1LjEyNjEgMjEuOTAyOSAyNS4zODI2IDIxLjkxMjcgMjUuNjQ1M0MyMi4wNzI4IDI5Ljk1NzkgMjIuMjk1OSAzNS45NjYyIDE5LjcxNzkgMzguNTM3MkMxNi41MjQ3IDQxLjcyMTcgMTAuMTM4NSA0My4zMTM5IDYuOTQ1MzYgNDAuNjYwMkMzLjc1MjIyIDM4LjAwNjUgOS4wNzQxMyAxMiAxNi41MjQ3IDEyQzIxLjk2MzYgMTIgMjEuODkgMTguODcxNyAyMS44NTIyIDIyLjQwMDNDMjEuODUyIDIyLjQxNjYgMjEuODUxOCAyMi40MzI4IDIxLjg1MTYgMjIuNDQ4OUMyMS44NTA0IDIyLjU2MTkgMjEuODQ5MyAyMi42NzE0IDIxLjg0ODQgMjIuNzc3QzIxLjg5NzcgMjIuNzUzNCAyMS45NDcxIDIyLjcyNzQgMjEuOTk2MiAyMi42OTg3QzIyLjQzNiAyMi40NDIxIDIzIDIxLjg5NzcgMjMgMjAuNVY2LjAwMDEzWk0zMS40NzUzIDEzLjk5OTdDMzAuNTIxMiAxMy45OTk3IDI5Ljk4NDMgMTQuMzAwMiAyOS42MDg2IDE0LjY4NjlDMjkuMTc1MiAxNS4xMzMxIDI4LjgxMzIgMTUuODUwNyAyOC41NTkgMTYuODY0NkMyOC4xMTQxIDE4LjYzOTUgMjguMTMzIDIwLjY4MTkgMjguMTQ4MyAyMi4zMjkzQzI4LjE1MDkgMjIuNjE0MiAyOC4xNTM0IDIyLjg4NzQgMjguMTUzNCAyMy4xNDUzQzI4LjE1MzQgMjMuOTA1MyAyOC4xMTk2IDI0LjgxNTMgMjguMDg0NSAyNS43NjIxQzI4LjA3MDcgMjYuMTM0OSAyOC4wNTY2IDI2LjUxMzMgMjguMDQ0MyAyNi44OTA1QzI3Ljk5OTYgMjguMjY1NyAyNy45NzQxIDI5LjcwNTUgMjguMDQwNSAzMS4wOTgyQzI4LjEwNzIgMzIuNDk4NSAyOC4yNjQyIDMzLjc4MzUgMjguNTU3MyAzNC44NTk2QzI4Ljg1MzggMzUuOTQ4MyAyOS4yNTA5IDM2LjY3ODQgMjkuNjk0NCAzNy4xMjA4QzMwLjk3MjYgMzguMzk1NCAzMi45OTA4IDM5LjQyNTEgMzUuMDQ5MiAzOS44MjQzQzM3LjA4NDIgNDAuMjE4OSAzOC43MjI0IDM5LjkyNjkgMzkuNjgxOCAzOS4xOTY5QzM5LjY4NjggMzkuMTg1NyAzOS42OTIzIDM5LjE3MjYgMzkuNjk4NCAzOS4xNTc0QzM5Ljc1NzYgMzkuMDA5NSAzOS44Mjk0IDM4Ljc1NTQgMzkuODg3OCAzOC4zNjgzQzQwLjAwNDcgMzcuNTkzMyA0MC4wMzUgMzYuNTEyMiAzOS45NTYyIDM1LjE4MDNDMzkuNzk5NSAzMi41MzA1IDM5LjIyODYgMjkuMTY4OSAzOC4zMjY4IDI1Ljg2MDZDMzcuNDIxNiAyMi41Mzk2IDM2LjIxNzMgMTkuMzk5OCAzNC44NTIxIDE3LjEzODNDMzQuMTY4OCAxNi4wMDYyIDMzLjQ5NTEgMTUuMTc4NiAzMi44NzAzIDE0LjY1MzVDMzIuMjUxOCAxNC4xMzM3IDMxLjc5MzUgMTMuOTk5NyAzMS40NzUzIDEzLjk5OTdaTTE2LjUyNDcgMTRDMTcuNDc4OCAxNCAxOC4wMTU4IDE0LjMwMDUgMTguMzkxNCAxNC42ODcyQzE4LjgyNDggMTUuMTMzNCAxOS4xODY4IDE1Ljg1MSAxOS40NDEgMTYuODY0OUMxOS44ODU5IDE4LjYzOTkgMTkuODY3IDIwLjY4MjIgMTkuODUxOCAyMi4zMjk2QzE5Ljg0OTEgMjIuNjE0NiAxOS44NDY2IDIyLjg4NzcgMTkuODQ2NiAyMy4xNDU2QzE5Ljg0NjYgMjMuOTA1NiAxOS44ODA0IDI0LjgxNTYgMTkuOTE1NSAyNS43NjI0QzE5LjkyOTQgMjYuMTM1IDE5Ljk0MzQgMjYuNTEzOCAxOS45NTU3IDI2Ljg5MDhDMjAuMDAwNSAyOC4yNjYgMjAuMDI1OSAyOS43MDU4IDE5Ljk1OTYgMzEuMDk4NUMxOS44OTI5IDMyLjQ5ODggMTkuNzM1OSAzMy43ODM4IDE5LjQ0MjcgMzQuODU5OUMxOS4xNDYyIDM1Ljk0ODYgMTguNzQ5MiAzNi42Nzg3IDE4LjMwNTYgMzcuMTIxMUMxNy4wMjc1IDM4LjM5NTcgMTUuMDA5MyAzOS40MjU0IDEyLjk1MDkgMzkuODI0NkMxMC45MTU5IDQwLjIxOTIgOS4yNzc2OCAzOS45MjcyIDguMzE4MjMgMzkuMTk3MkM4LjMxMzI2IDM5LjE4NiA4LjMwNzcgMzkuMTcyOSA4LjMwMTYyIDM5LjE1NzdDOC4yNDI0MSAzOS4wMDk4IDguMTcwNjEgMzguNzU1NyA4LjExMjI0IDM4LjM2ODZDNy45OTUzOSAzNy41OTM2IDcuOTY1IDM2LjUxMjUgOC4wNDM4IDM1LjE4MDZDOC4yMDA1NiAzMi41MzA4IDguNzcxNDcgMjkuMTY5MiA5LjY3MzI0IDI1Ljg2MDlDMTAuNTc4NSAyMi41Mzk5IDExLjc4MjcgMTkuNDAwMSAxMy4xNDc5IDE3LjEzODZDMTMuODMxMyAxNi4wMDY1IDE0LjUwNDkgMTUuMTc4OSAxNS4xMjk4IDE0LjY1MzhDMTUuNzQ4MiAxNC4xMzQgMTYuMjA2NSAxNCAxNi41MjQ3IDE0WiIgZmlsbD0iI2I0NTMwOSIvPgo8L3N2Zz4K", + "created": 1700000000000 + }, + "img_blki43": { + "mimeType": "image/svg+xml", + "id": "img_blki43", + "dataURL": "data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNDgiIGhlaWdodD0iNDgiIHZpZXdCb3g9IjAgMCA0OCA0OCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0yOSA5QzI5IDExLjc2MTQgMjYuNzYxNCAxNCAyNCAxNEMyMS4yMzg2IDE0IDE5IDExLjc2MTQgMTkgOUMxOSA2LjIzODU4IDIxLjIzODYgNCAyNCA0QzI2Ljc2MTQgNCAyOSA2LjIzODU4IDI5IDlaTTI3IDlDMjcgMTAuNjU2OSAyNS42NTY5IDEyIDI0IDEyQzIyLjM0MzEgMTIgMjEgMTAuNjU2OSAyMSA5QzIxIDcuMzQzMTUgMjIuMzQzMSA2IDI0IDZDMjUuNjU2OSA2IDI3IDcuMzQzMTUgMjcgOVoiIGZpbGw9IiNiNDUzMDkiLz4KPHBhdGggZD0iTTE2Ljk5OTggNDFWMzRIMTguOTk5OFY0MUMxOC45OTk4IDQxLjU1MjMgMTkuNDQ3NSA0MiAxOS45OTk4IDQySDIwLjA4NjVDMjAuNjAzNyA0MiAyMS4wMzU2IDQxLjYwNTYgMjEuMDgyNCA0MS4wOTA1TDIxLjcyNyAzNEgyMy43MzUzTDIzLjA3NDIgNDEuMjcxNkMyMy4wNjkgNDEuMzI4OCAyMy4wNjIyIDQxLjM4NTYgMjMuMDUzOSA0MS40NDE3QzIzLjAzNTcgNDEuNTY0NyAyMy4wMTAxIDQxLjY4NTEgMjIuOTc3NiA0MS44MDI1QzIyLjYyNDIgNDMuMDc5OCAyMS40NTQ5IDQ0IDIwLjA4NjUgNDRIMTkuOTk5OEMxOC4zNDI5IDQ0IDE2Ljk5OTggNDIuNjU2OSAxNi45OTk4IDQxWiIgZmlsbD0iI2I0NTMwOSIvPgo8cGF0aCBkPSJNMjYuOTE3MSA0MS4wOTA1TDI2LjI3MjUgMzRIMjQuMjY0MkwyNC45MjUzIDQxLjI3MTZDMjQuOTMwNSA0MS4zMjg4IDI0LjkzNzMgNDEuMzg1NiAyNC45NDU2IDQxLjQ0MTdDMjQuOTYzOCA0MS41NjQ3IDI0Ljk4OTQgNDEuNjg1MSAyNS4wMjE5IDQxLjgwMjVDMjUuMzc1MyA0My4wNzk4IDI2LjU0NDYgNDQgMjcuOTEzIDQ0SDI3Ljk5OThDMjkuNjU2NiA0NCAzMC45OTk4IDQyLjY1NjkgMzAuOTk5OCA0MVYzNEgyOC45OTk4VjQxQzI4Ljk5OTggNDEuNTUyMyAyOC41NTIgNDIgMjcuOTk5OCA0MkgyNy45MTNDMjcuMzk1OCA0MiAyNi45NjM5IDQxLjYwNTYgMjYuOTE3MSA0MS4wOTA1WiIgZmlsbD0iI2I0NTMwOSIvPgo8cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGNsaXAtcnVsZT0iZXZlbm9kZCIgZD0iTTExIDE1QzEwLjQ0NzcgMTUgMTAgMTUuNDQ3NyAxMCAxNlYzMUMxMCAzMS41NTIzIDEwLjQ0NzcgMzIgMTEgMzJIMzdDMzcuNTUyMyAzMiAzOCAzMS41NTIzIDM4IDMxVjE2QzM4IDE1LjQ0NzcgMzcuNTUyMyAxNSAzNyAxNUgxMVpNMTIgMTdWMzBIMTkuNUMxOS41IDI5LjQ0MjQgMTkuNzU5MSAyOC45NTcyIDIwLjAyNzYgMjguNjAwNkMyMC4zMDg2IDI4LjIyNzYgMjAuNjc5NiAyNy44ODgzIDIxLjA3OTQgMjcuNjAxNkMyMS42MjUyIDI3LjIxMDMgMjIuMjk4NiAyNi44NjUgMjMgMjYuNjY3OFYyNC41SDIyLjJDMjEuNTk3MyAyNC41IDIwLjc1MzUgMjQuODY0MiAxOS45NDMzIDI1LjM1NTJDMTkuNTYzOCAyNS41ODUyIDE5LjIzMzcgMjUuODE2NyAxOC45OTg0IDI1Ljk5MTFDMTguODgxMiAyNi4wNzc4IDE4Ljc4ODggMjYuMTQ5NSAxOC43MjcgMjYuMTk4NEMxOC42OTYxIDI2LjIyMjggMTguNjczIDI2LjI0MTUgMTguNjU4MiAyNi4yNTM1TDE4LjY0MjYgMjYuMjY2M0wxOC42Mzk5IDI2LjI2ODRDMTguNjM5OSAyNi4yNjg0IDE4LjY0MDIgMjYuMjY4MiAxOCAyNS41QzE3LjM1OTggMjQuNzMxOCAxNy4zNjAxIDI0LjczMTUgMTcuMzYwMSAyNC43MzE1TDE3LjM2MTQgMjQuNzMwNUwxNy4zNjM4IDI0LjcyODVMMTcuMzcxMyAyNC43MjIzTDE3LjM5NjYgMjQuNzAxNkMxNy40MTc5IDI0LjY4NDMgMTcuNDQ4IDI0LjY2IDE3LjQ4NjMgMjQuNjI5N0MxNy41NjI3IDI0LjU2OTMgMTcuNjcxOSAyNC40ODQ3IDE3LjgwNzkgMjQuMzgzOUMxOC4wNzg4IDI0LjE4MzMgMTguNDYxMiAyMy45MTQ4IDE4LjkwNjcgMjMuNjQ0OEMxOS43NDY1IDIzLjEzNTggMjEuMDAyNyAyMi41IDIyLjIgMjIuNUgyM1YyMC41SDIyLjVDMjEuOTMwOSAyMC41IDIxLjE5MDkgMjAuNjk5MiAyMC41MjkyIDIwLjkzOThDMjAuMjEyIDIxLjA1NTIgMTkuOTM3IDIxLjE3MDkgMTkuNzQyMSAyMS4yNTc2QzE5LjY0NDkgMjEuMzAwNyAxOS41Njg1IDIxLjMzNjMgMTkuNTE3NiAyMS4zNjA1QzE5LjQ5MjIgMjEuMzcyNSAxOS40NzMyIDIxLjM4MTcgMTkuNDYxMyAyMS4zODc1TDE5LjQ0ODcgMjEuMzkzN0wxOS40NDcgMjEuMzk0NUMxOS40NDcgMjEuMzk0NSAxOS40NDcyIDIxLjM5NDQgMTkgMjAuNUMxOC41NTI4IDE5LjYwNTYgMTguNTUzMSAxOS42MDU0IDE4LjU1MzEgMTkuNjA1NEwxOC41NTY0IDE5LjYwMzhMMTguNTYyOSAxOS42MDA2TDE4LjU4NDQgMTkuNTlDMTguNjAyNSAxOS41ODEyIDE4LjYyNzkgMTkuNTY4OSAxOC42NjAxIDE5LjU1MzZDMTguNzI0NSAxOS41MjMxIDE4LjgxNiAxOS40ODA1IDE4LjkyOTggMTkuNDI5OUMxOS4xNTY3IDE5LjMyOTEgMTkuNDc1NSAxOS4xOTQ4IDE5Ljg0NTggMTkuMDYwMkMyMC41NTkxIDE4LjgwMDggMjEuNTY5MSAxOC41IDIyLjUgMTguNUgyM1YxN0gxMlpNMjUgMjQuNUgyNi4xQzI2Ljg0ODkgMjQuNSAyNy42MTg2IDI0Ljg2NjMgMjguMjYzMSAyNS4zMTg2QzI4LjU3MzUgMjUuNTM2NCAyOC44Mjg1IDI1Ljc1NTYgMjkuMDA0OCAyNS45MTk3QzI5LjA5MjUgMjYuMDAxMiAyOS4xNTk0IDI2LjA2NzkgMjkuMjAyNiAyNi4xMTIyQzI5LjIyNDEgMjYuMTM0MyAyOS4yMzk3IDI2LjE1MDcgMjkuMjQ4OCAyNi4xNjA1TDI5LjI1NzQgMjYuMTY5N0MyOS4yNTc0IDI2LjE2OTcgMjkuMjU2NyAyNi4xNjkgMzAgMjUuNUMzMC43NDMzIDI0LjgzMSAzMC43NDI5IDI0LjgzMDYgMzAuNzQyOSAyNC44MzA2TDMwLjc0MTQgMjQuODI5TDMwLjczODkgMjQuODI2MkwzMC43MzE4IDI0LjgxODRMMzAuNzA5NyAyNC43OTQ2QzMwLjY5MTUgMjQuNzc1MSAzMC42NjYzIDI0Ljc0ODUgMzAuNjM0NiAyNC43MTZDMzAuNTcxMSAyNC42NTA5IDMwLjQ4MDkgMjQuNTYxMyAzMC4zNjcgMjQuNDU1M0MzMC4xNDAzIDI0LjI0NDQgMjkuODE0IDIzLjk2MzYgMjkuNDExOSAyMy42ODE0QzI4LjYzMTQgMjMuMTMzNyAyNy40NTExIDIyLjUgMjYuMSAyMi41SDI1VjIwLjVIMjUuNzVDMjYuNDQ0MyAyMC41IDI3LjExOTMgMjAuNzAxMSAyNy42NDMyIDIwLjkyMTZDMjcuOTAwMyAyMS4wMjk5IDI4LjEwOTIgMjEuMTM3OCAyOC4yNTA5IDIxLjIxNjlDMjguMzIxNSAyMS4yNTY0IDI4LjM3NDcgMjEuMjg4MiAyOC40MDggMjEuMzA4N0MyOC40MjQ3IDIxLjMxODkgMjguNDM2MyAyMS4zMjYzIDI4LjQ0MjcgMjEuMzMwNEwyOC40NDU3IDIxLjMzMjNDMjguNDQ1NyAyMS4zMzIzIDI4LjQ0NTMgMjEuMzMyMSAyOSAyMC41QzI5LjU1NDcgMTkuNjY3OSAyOS41NTQyIDE5LjY2NzYgMjkuNTU0MiAxOS42Njc2TDI5LjU1MjcgMTkuNjY2NkwyOS41NTAxIDE5LjY2NDlMMjkuNTQzMiAxOS42NjA0TDI5LjUyMjggMTkuNjQ3MkMyOS41MDYzIDE5LjYzNjYgMjkuNDg0IDE5LjYyMjUgMjkuNDU2MiAxOS42MDU0QzI5LjQwMDcgMTkuNTcxMiAyOS4zMjMgMTkuNTI0OSAyOS4yMjU2IDE5LjQ3MDZDMjkuMDMxNSAxOS4zNjIyIDI4Ljc1NTkgMTkuMjIwMSAyOC40MTkzIDE5LjA3ODRDMjcuNzU1NyAxOC43OTg5IDI2LjgwNTcgMTguNSAyNS43NSAxOC41SDI1VjE3SDM2VjMwSDI4LjVDMjguNSAyOS40Mzc5IDI4LjIzMjQgMjguOTQ1MiAyNy45NjQxIDI4LjU4NzVDMjcuNjgwMyAyOC4yMDkyIDI3LjMwNTQgMjcuODYwNiAyNi45MDA3IDI3LjU2NjNDMjYuMzY3NSAyNy4xNzg1IDI1LjY5ODkgMjYuODI1NyAyNSAyNi42MzkxVjI0LjVaTTI2LjQ5MjkgMzBDMjYuNDc5NyAyOS45NjcgMjYuNDQ1NyAyOS44OTY0IDI2LjM2NDEgMjkuNzg3NUMyNi4yMjU5IDI5LjYwMzMgMjYuMDA3MSAyOS4zODk0IDI1LjcyNDMgMjkuMTgzN0MyNS4xNDc4IDI4Ljc2NDUgMjQuNDkzNyAyOC41MTE3IDI0LjAzMiAyOC41MDA0QzIzLjQ4NzcgMjguNTQ2NCAyMi44MDUyIDI4LjgyNTIgMjIuMjQ0OSAyOS4yMjdDMjEuOTY1NyAyOS40MjcyIDIxLjc1NTYgMjkuNjMwNyAyMS42MjUyIDI5LjgwMzhDMjEuNTQ5NiAyOS45MDQzIDIxLjUxODQgMjkuOTY5NCAyMS41MDYzIDMwSDI2LjQ5MjlaIiBmaWxsPSIjYjQ1MzA5Ii8+Cjwvc3ZnPgo=", + "created": 1700000000000 + }, + "img_bicon46": { + "mimeType": "image/svg+xml", + "id": "img_bicon46", + "dataURL": "data:image/svg+xml;base64,PHN2ZwogIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIKICB3aWR0aD0iMjQiCiAgaGVpZ2h0PSIyNCIKICB2aWV3Qm94PSIwIDAgMjQgMjQiCiAgZmlsbD0ibm9uZSIKICBzdHJva2U9IiNiNDUzMDkiCiAgc3Ryb2tlLXdpZHRoPSIyIgogIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIKICBzdHJva2UtbGluZWpvaW49InJvdW5kIgo+CiAgPHBhdGggZD0iTTEyIDV2MTYiIC8+CiAgPHBhdGggZD0iTTIwLjAwMSAxOUEyIDIgMCAwMDIyIDE3VjVhMiAyIDAgMDAtMS45OTktMkwxNiAzLjAwMkE1IDUgMCAwMDEyIDVhNSA1IDAgMDAtNC0ySDRhMiAyIDAgMDAtMiAydjEyYTIgMiAwIDAwMS45OTkgMkg4YTUgNSAwIDAxNCAyIDUgNSAwIDAxNC0yeiIgLz4KPC9zdmc+Cg==", + "created": 1700000000000 + } + } +} \ No newline at end of file diff --git a/knowledge/drafts/pillars-b3.excalidraw b/knowledge/drafts/pillars-b3.excalidraw new file mode 100644 index 0000000..d50416d --- /dev/null +++ b/knowledge/drafts/pillars-b3.excalidraw @@ -0,0 +1,3350 @@ +{ + "type": "excalidraw", + "version": 2, + "source": "oidm-knowledge/tools/diagrams", + "elements": [ + { + "type": "rectangle", + "id": "band48", + "x": 0, + "y": 373.05, + "width": 880, + "height": 198.24999999999994, + "strokeColor": "#b45309", + "backgroundColor": "#fef3c7", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1095, + "version": 1, + "versionNonce": 1096, + "isDeleted": false, + "groupIds": [], + "boundElements": [], + "link": null, + "locked": false, + "roundness": { + "type": 3 + } + }, + { + "type": "rectangle", + "id": "fill83", + "x": -1.0, + "y": 373.05, + "width": 33, + "height": 32.0, + "strokeColor": "transparent", + "backgroundColor": "#fef3c7", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1165, + "version": 1, + "versionNonce": 1166, + "isDeleted": false, + "groupIds": [], + "boundElements": [], + "link": null, + "locked": false, + "roundness": null + }, + { + "type": "rectangle", + "id": "fill84", + "x": 848, + "y": 373.05, + "width": 33, + "height": 32.0, + "strokeColor": "transparent", + "backgroundColor": "#fef3c7", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1167, + "version": 1, + "versionNonce": 1168, + "isDeleted": false, + "groupIds": [], + "boundElements": [], + "link": null, + "locked": false, + "roundness": null + }, + { + "type": "rectangle", + "id": "band32", + "x": 0, + "y": 151.05, + "width": 880, + "height": 258.0, + "strokeColor": "#0f766e", + "backgroundColor": "#ccfbf1", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1063, + "version": 1, + "versionNonce": 1064, + "isDeleted": false, + "groupIds": [], + "boundElements": [], + "link": null, + "locked": false, + "roundness": { + "type": 3 + } + }, + { + "type": "rectangle", + "id": "fill81", + "x": -1.0, + "y": 377.05, + "width": 33, + "height": 32.0, + "strokeColor": "transparent", + "backgroundColor": "#ccfbf1", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1161, + "version": 1, + "versionNonce": 1162, + "isDeleted": false, + "groupIds": [], + "boundElements": [], + "link": null, + "locked": false, + "roundness": null + }, + { + "type": "rectangle", + "id": "fill82", + "x": 848, + "y": 377.05, + "width": 33, + "height": 32.0, + "strokeColor": "transparent", + "backgroundColor": "#ccfbf1", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1163, + "version": 1, + "versionNonce": 1164, + "isDeleted": false, + "groupIds": [], + "boundElements": [], + "link": null, + "locked": false, + "roundness": null + }, + { + "type": "rectangle", + "id": "fill69", + "x": -1.0, + "y": 151.05, + "width": 33, + "height": 32.0, + "strokeColor": "transparent", + "backgroundColor": "#ccfbf1", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1137, + "version": 1, + "versionNonce": 1138, + "isDeleted": false, + "groupIds": [], + "boundElements": [], + "link": null, + "locked": false, + "roundness": null + }, + { + "type": "rectangle", + "id": "fill70", + "x": 848, + "y": 151.05, + "width": 33, + "height": 32.0, + "strokeColor": "transparent", + "backgroundColor": "#ccfbf1", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1139, + "version": 1, + "versionNonce": 1140, + "isDeleted": false, + "groupIds": [], + "boundElements": [], + "link": null, + "locked": false, + "roundness": null + }, + { + "type": "rectangle", + "id": "band14", + "x": 0, + "y": 95.65, + "width": 880, + "height": 79.4, + "strokeColor": "#6d28d9", + "backgroundColor": "#ede9fe", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1027, + "version": 1, + "versionNonce": 1028, + "isDeleted": false, + "groupIds": [], + "boundElements": [], + "link": null, + "locked": false, + "roundness": { + "type": 3 + } + }, + { + "type": "rectangle", + "id": "fill67", + "x": -1.0, + "y": 143.05, + "width": 33, + "height": 32.0, + "strokeColor": "transparent", + "backgroundColor": "#ede9fe", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1133, + "version": 1, + "versionNonce": 1134, + "isDeleted": false, + "groupIds": [], + "boundElements": [], + "link": null, + "locked": false, + "roundness": null + }, + { + "type": "rectangle", + "id": "fill68", + "x": 848, + "y": 143.05, + "width": 33, + "height": 32.0, + "strokeColor": "transparent", + "backgroundColor": "#ede9fe", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1135, + "version": 1, + "versionNonce": 1136, + "isDeleted": false, + "groupIds": [], + "boundElements": [], + "link": null, + "locked": false, + "roundness": null + }, + { + "type": "rectangle", + "id": "fill51", + "x": 423.0, + "y": 95.65, + "width": 33, + "height": 32.0, + "strokeColor": "transparent", + "backgroundColor": "#ede9fe", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1101, + "version": 1, + "versionNonce": 1102, + "isDeleted": false, + "groupIds": [], + "boundElements": [], + "link": null, + "locked": false, + "roundness": null + }, + { + "type": "rectangle", + "id": "fill52", + "x": 848, + "y": 95.65, + "width": 33, + "height": 32.0, + "strokeColor": "transparent", + "backgroundColor": "#ede9fe", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1103, + "version": 1, + "versionNonce": 1104, + "isDeleted": false, + "groupIds": [], + "boundElements": [], + "link": null, + "locked": false, + "roundness": null + }, + { + "type": "rectangle", + "id": "panel1", + "x": 0, + "y": 0, + "width": 304.0, + "height": 71.65, + "strokeColor": "#be123c", + "backgroundColor": "#ffe4e6", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1001, + "version": 1, + "versionNonce": 1002, + "isDeleted": false, + "groupIds": [], + "boundElements": [], + "link": null, + "locked": false, + "roundness": { + "type": 3 + } + }, + { + "type": "rectangle", + "id": "panel2", + "x": 424.0, + "y": 0, + "width": 456.0, + "height": 119.65, + "strokeColor": "#15803d", + "backgroundColor": "#dcfce7", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1003, + "version": 1, + "versionNonce": 1004, + "isDeleted": false, + "groupIds": [], + "boundElements": [], + "link": null, + "locked": false, + "roundness": { + "type": 3 + } + }, + { + "type": "rectangle", + "id": "fill49", + "x": 423.0, + "y": 87.65, + "width": 33, + "height": 32.0, + "strokeColor": "transparent", + "backgroundColor": "#dcfce7", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1097, + "version": 1, + "versionNonce": 1098, + "isDeleted": false, + "groupIds": [], + "boundElements": [], + "link": null, + "locked": false, + "roundness": null + }, + { + "type": "rectangle", + "id": "fill50", + "x": 848, + "y": 87.65, + "width": 33, + "height": 32.0, + "strokeColor": "transparent", + "backgroundColor": "#dcfce7", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1099, + "version": 1, + "versionNonce": 1100, + "isDeleted": false, + "groupIds": [], + "boundElements": [], + "link": null, + "locked": false, + "roundness": null + }, + { + "type": "image", + "id": "bicon3", + "x": 18, + "y": 14.0, + "width": 28, + "height": 28, + "strokeColor": "transparent", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1005, + "version": 1, + "versionNonce": 1006, + "isDeleted": false, + "groupIds": [], + "boundElements": [], + "link": null, + "locked": false, + "fileId": "img_bicon3", + "status": "saved", + "scale": [ + 1, + 1 + ], + "roundness": null, + "crop": null + }, + { + "type": "text", + "id": "btitle4", + "x": 58, + "y": 16, + "width": 93.96, + "height": 22.5, + "strokeColor": "#881337", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1007, + "version": 1, + "versionNonce": 1008, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "Use Cases", + "originalText": "Use Cases", + "fontSize": 18, + "fontFamily": 2, + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 + }, + { + "type": "text", + "id": "bsub5", + "x": 58, + "y": 39.400000000000006, + "width": 211.11999999999998, + "height": 16.25, + "strokeColor": "#be123c", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1009, + "version": 1, + "versionNonce": 1010, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "what the project wants built", + "originalText": "what the project wants built", + "fontSize": 13, + "fontFamily": 2, + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 + }, + { + "type": "image", + "id": "bicon6", + "x": 442.0, + "y": 14.0, + "width": 28, + "height": 28, + "strokeColor": "transparent", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1011, + "version": 1, + "versionNonce": 1012, + "isDeleted": false, + "groupIds": [], + "boundElements": [], + "link": null, + "locked": false, + "fileId": "img_bicon6", + "status": "saved", + "scale": [ + 1, + 1 + ], + "roundness": null, + "crop": null + }, + { + "type": "text", + "id": "btitle7", + "x": 482.0, + "y": 16, + "width": 198.35999999999999, + "height": 22.5, + "strokeColor": "#14532d", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1013, + "version": 1, + "versionNonce": 1014, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "Sample Applications", + "originalText": "Sample Applications", + "fontSize": 18, + "fontFamily": 2, + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 + }, + { + "type": "text", + "id": "bsub8", + "x": 482.0, + "y": 39.400000000000006, + "width": 143.26, + "height": 16.25, + "strokeColor": "#15803d", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1015, + "version": 1, + "versionNonce": 1016, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "what has been built", + "originalText": "what has been built", + "fontSize": 13, + "fontFamily": 2, + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 + }, + { + "type": "line", + "id": "conn9", + "x": 306.0, + "y": 35.825, + "width": 116.0, + "height": 0, + "strokeColor": "#64748b", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1017, + "version": 1, + "versionNonce": 1018, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "points": [ + [ + 0, + 0 + ], + [ + 116.0, + 0 + ] + ] + }, + { + "type": "rectangle", + "id": "chip10", + "x": 327.55, + "y": 24.700000000000003, + "width": 72.9, + "height": 22.25, + "strokeColor": "transparent", + "backgroundColor": "#ffffff", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1019, + "version": 1, + "versionNonce": 1020, + "isDeleted": false, + "groupIds": [], + "boundElements": [], + "link": null, + "locked": false, + "roundness": { + "type": 3 + } + }, + { + "type": "text", + "id": "chipt11", + "x": 336.55, + "y": 27.700000000000003, + "width": 54.900000000000006, + "height": 16.25, + "strokeColor": "#64748b", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1021, + "version": 1, + "versionNonce": 1022, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "illustrates", + "originalText": "illustrates", + "fontSize": 13, + "fontFamily": 2, + "textAlign": "center", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 + }, + { + "type": "image", + "id": "bicon12", + "x": 18, + "y": 109.65, + "width": 28, + "height": 28, + "strokeColor": "transparent", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1023, + "version": 1, + "versionNonce": 1024, + "isDeleted": false, + "groupIds": [], + "boundElements": [], + "link": null, + "locked": false, + "fileId": "img_bicon12", + "status": "saved", + "scale": [ + 1, + 1 + ], + "roundness": null, + "crop": null + }, + { + "type": "text", + "id": "btitle13", + "x": 58, + "y": 111.65, + "width": 41.76, + "height": 22.5, + "strokeColor": "#4c1d95", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1025, + "version": 1, + "versionNonce": 1026, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "SDKs", + "originalText": "SDKs", + "fontSize": 18, + "fontFamily": 2, + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 + }, + { + "type": "image", + "id": "bicon15", + "x": 18, + "y": 183.05, + "width": 28, + "height": 28, + "strokeColor": "transparent", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1029, + "version": 1, + "versionNonce": 1030, + "isDeleted": false, + "groupIds": [], + "boundElements": [], + "link": null, + "locked": false, + "fileId": "img_bicon15", + "status": "saved", + "scale": [ + 1, + 1 + ], + "roundness": null, + "crop": null + }, + { + "type": "text", + "id": "btitle16", + "x": 58, + "y": 185.05, + "width": 174.0, + "height": 25.0, + "strokeColor": "#134e4a", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1031, + "version": 1, + "versionNonce": 1032, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "Data Structures", + "originalText": "Data Structures", + "fontSize": 20, + "fontFamily": 2, + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 + }, + { + "type": "text", + "id": "bsub17", + "x": 58, + "y": 211.05, + "width": 226.2, + "height": 16.25, + "strokeColor": "#0f766e", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1033, + "version": 1, + "versionNonce": 1034, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "this patient \u00b7 Patient Context", + "originalText": "this patient \u00b7 Patient Context", + "fontSize": 13, + "fontFamily": 2, + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 + }, + { + "type": "rectangle", + "id": "blk18", + "x": 20.0, + "y": 241.3, + "width": 188.5, + "height": 95.5, + "strokeColor": "#0f766e", + "backgroundColor": "#99f6e4", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1035, + "version": 1, + "versionNonce": 1036, + "isDeleted": false, + "groupIds": [], + "boundElements": [], + "link": null, + "locked": false, + "roundness": { + "type": 3 + } + }, + { + "type": "image", + "id": "blki19", + "x": 100.25, + "y": 261.675, + "width": 28, + "height": 28, + "strokeColor": "transparent", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1037, + "version": 1, + "versionNonce": 1038, + "isDeleted": false, + "groupIds": [], + "boundElements": [], + "link": null, + "locked": false, + "fileId": "img_blki19", + "status": "saved", + "scale": [ + 1, + 1 + ], + "roundness": null, + "crop": null + }, + { + "type": "text", + "id": "blkt20", + "x": 26.0, + "y": 295.675, + "width": 176.5, + "height": 18.75, + "strokeColor": "#134e4a", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1039, + "version": 1, + "versionNonce": 1040, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "Observation", + "originalText": "Observation", + "fontSize": 15, + "fontFamily": 2, + "textAlign": "center", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 + }, + { + "type": "rectangle", + "id": "blk21", + "x": 228.5, + "y": 241.3, + "width": 188.5, + "height": 95.5, + "strokeColor": "#0f766e", + "backgroundColor": "#99f6e4", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1041, + "version": 1, + "versionNonce": 1042, + "isDeleted": false, + "groupIds": [], + "boundElements": [], + "link": null, + "locked": false, + "roundness": { + "type": 3 + } + }, + { + "type": "image", + "id": "blki22", + "x": 308.75, + "y": 252.3, + "width": 28, + "height": 28, + "strokeColor": "transparent", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1043, + "version": 1, + "versionNonce": 1044, + "isDeleted": false, + "groupIds": [], + "boundElements": [], + "link": null, + "locked": false, + "fileId": "img_blki22", + "status": "saved", + "scale": [ + 1, + 1 + ], + "roundness": null, + "crop": null + }, + { + "type": "text", + "id": "blkt23", + "x": 234.5, + "y": 286.3, + "width": 176.5, + "height": 18.75, + "strokeColor": "#134e4a", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1045, + "version": 1, + "versionNonce": 1046, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "Exam Finding", + "originalText": "Exam Finding", + "fontSize": 15, + "fontFamily": 2, + "textAlign": "center", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 + }, + { + "type": "text", + "id": "blkt24", + "x": 234.5, + "y": 305.05, + "width": 176.5, + "height": 18.75, + "strokeColor": "#134e4a", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1047, + "version": 1, + "versionNonce": 1048, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "List", + "originalText": "List", + "fontSize": 15, + "fontFamily": 2, + "textAlign": "center", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 + }, + { + "type": "rectangle", + "id": "blk25", + "x": 437.0, + "y": 241.3, + "width": 188.5, + "height": 95.5, + "strokeColor": "#0f766e", + "backgroundColor": "#99f6e4", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1049, + "version": 1, + "versionNonce": 1050, + "isDeleted": false, + "groupIds": [], + "boundElements": [], + "link": null, + "locked": false, + "roundness": { + "type": 3 + } + }, + { + "type": "image", + "id": "blki26", + "x": 517.25, + "y": 252.3, + "width": 28, + "height": 28, + "strokeColor": "transparent", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1051, + "version": 1, + "versionNonce": 1052, + "isDeleted": false, + "groupIds": [], + "boundElements": [], + "link": null, + "locked": false, + "fileId": "img_blki26", + "status": "saved", + "scale": [ + 1, + 1 + ], + "roundness": null, + "crop": null + }, + { + "type": "text", + "id": "blkt27", + "x": 443.0, + "y": 286.3, + "width": 176.5, + "height": 18.75, + "strokeColor": "#134e4a", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1053, + "version": 1, + "versionNonce": 1054, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "Imaging Problem", + "originalText": "Imaging Problem", + "fontSize": 15, + "fontFamily": 2, + "textAlign": "center", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 + }, + { + "type": "text", + "id": "blkt28", + "x": 443.0, + "y": 305.05, + "width": 176.5, + "height": 18.75, + "strokeColor": "#134e4a", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1055, + "version": 1, + "versionNonce": 1056, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "List", + "originalText": "List", + "fontSize": 15, + "fontFamily": 2, + "textAlign": "center", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 + }, + { + "type": "rectangle", + "id": "blk29", + "x": 645.5, + "y": 241.3, + "width": 188.5, + "height": 95.5, + "strokeColor": "#0f766e", + "backgroundColor": "#99f6e4", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1057, + "version": 1, + "versionNonce": 1058, + "isDeleted": false, + "groupIds": [], + "boundElements": [], + "link": null, + "locked": false, + "roundness": { + "type": 3 + } + }, + { + "type": "image", + "id": "blki30", + "x": 723.75, + "y": 259.675, + "width": 32, + "height": 32, + "strokeColor": "transparent", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1059, + "version": 1, + "versionNonce": 1060, + "isDeleted": false, + "groupIds": [], + "boundElements": [], + "link": null, + "locked": false, + "fileId": "img_blki30", + "status": "saved", + "scale": [ + 1, + 1 + ], + "roundness": null, + "crop": null + }, + { + "type": "text", + "id": "blkt31", + "x": 651.5, + "y": 295.675, + "width": 176.5, + "height": 18.75, + "strokeColor": "#134e4a", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1061, + "version": 1, + "versionNonce": 1062, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "Imaging Persona", + "originalText": "Imaging Persona", + "fontSize": 15, + "fontFamily": 2, + "textAlign": "center", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 + }, + { + "type": "image", + "id": "bicon33", + "x": 18, + "y": 416.05, + "width": 28, + "height": 28, + "strokeColor": "transparent", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1065, + "version": 1, + "versionNonce": 1066, + "isDeleted": false, + "groupIds": [], + "boundElements": [], + "link": null, + "locked": false, + "fileId": "img_bicon33", + "status": "saved", + "scale": [ + 1, + 1 + ], + "roundness": null, + "crop": null + }, + { + "type": "text", + "id": "btitle34", + "x": 58, + "y": 418.05, + "width": 208.79999999999998, + "height": 25.0, + "strokeColor": "#78350f", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1067, + "version": 1, + "versionNonce": 1068, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "Foundation Context", + "originalText": "Foundation Context", + "fontSize": 20, + "fontFamily": 2, + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 + }, + { + "type": "text", + "id": "bsub35", + "x": 58, + "y": 444.05, + "width": 188.5, + "height": 16.25, + "strokeColor": "#b45309", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1069, + "version": 1, + "versionNonce": 1070, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "shared, curated knowledge", + "originalText": "shared, curated knowledge", + "fontSize": 13, + "fontFamily": 2, + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 + }, + { + "type": "rectangle", + "id": "blk36", + "x": 20.0, + "y": 472.3, + "width": 266.6666666666667, + "height": 84.0, + "strokeColor": "#b45309", + "backgroundColor": "#fde68a", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1071, + "version": 1, + "versionNonce": 1072, + "isDeleted": false, + "groupIds": [], + "boundElements": [], + "link": null, + "locked": false, + "roundness": { + "type": 3 + } + }, + { + "type": "image", + "id": "blki37", + "x": 139.33333333333334, + "y": 477.8, + "width": 28, + "height": 28, + "strokeColor": "transparent", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1073, + "version": 1, + "versionNonce": 1074, + "isDeleted": false, + "groupIds": [], + "boundElements": [], + "link": null, + "locked": false, + "fileId": "img_blki37", + "status": "saved", + "scale": [ + 1, + 1 + ], + "roundness": null, + "crop": null + }, + { + "type": "text", + "id": "blkt38", + "x": 26.0, + "y": 511.8, + "width": 254.66666666666669, + "height": 18.75, + "strokeColor": "#78350f", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1075, + "version": 1, + "versionNonce": 1076, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "Finding/diagnosis definitions", + "originalText": "Finding/diagnosis definitions", + "fontSize": 15, + "fontFamily": 2, + "textAlign": "center", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 + }, + { + "type": "text", + "id": "blkd39", + "x": 26.0, + "y": 532.55, + "width": 254.66666666666669, + "height": 16.25, + "strokeColor": "#b45309", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1077, + "version": 1, + "versionNonce": 1078, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "finding models \u00b7 CDEs", + "originalText": "finding models \u00b7 CDEs", + "fontSize": 13, + "fontFamily": 2, + "textAlign": "center", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 + }, + { + "type": "rectangle", + "id": "blk40", + "x": 306.6666666666667, + "y": 472.3, + "width": 266.6666666666667, + "height": 84.0, + "strokeColor": "#b45309", + "backgroundColor": "#fde68a", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1079, + "version": 1, + "versionNonce": 1080, + "isDeleted": false, + "groupIds": [], + "boundElements": [], + "link": null, + "locked": false, + "roundness": { + "type": 3 + } + }, + { + "type": "image", + "id": "blki41", + "x": 424.0, + "y": 475.8, + "width": 32, + "height": 32, + "strokeColor": "transparent", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1081, + "version": 1, + "versionNonce": 1082, + "isDeleted": false, + "groupIds": [], + "boundElements": [], + "link": null, + "locked": false, + "fileId": "img_blki41", + "status": "saved", + "scale": [ + 1, + 1 + ], + "roundness": null, + "crop": null + }, + { + "type": "text", + "id": "blkt42", + "x": 312.6666666666667, + "y": 511.8, + "width": 254.66666666666669, + "height": 18.75, + "strokeColor": "#78350f", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1083, + "version": 1, + "versionNonce": 1084, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "Anatomic locations", + "originalText": "Anatomic locations", + "fontSize": 15, + "fontFamily": 2, + "textAlign": "center", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 + }, + { + "type": "text", + "id": "blkd43", + "x": 312.6666666666667, + "y": 532.55, + "width": 254.66666666666669, + "height": 16.25, + "strokeColor": "#b45309", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1085, + "version": 1, + "versionNonce": 1086, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "anchored in RadLex", + "originalText": "anchored in RadLex", + "fontSize": 13, + "fontFamily": 2, + "textAlign": "center", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 + }, + { + "type": "rectangle", + "id": "blk44", + "x": 593.3333333333334, + "y": 472.3, + "width": 266.6666666666667, + "height": 84.0, + "strokeColor": "#b45309", + "backgroundColor": "#fde68a", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1087, + "version": 1, + "versionNonce": 1088, + "isDeleted": false, + "groupIds": [], + "boundElements": [], + "link": null, + "locked": false, + "roundness": { + "type": 3 + } + }, + { + "type": "image", + "id": "blki45", + "x": 710.6666666666667, + "y": 475.8, + "width": 32, + "height": 32, + "strokeColor": "transparent", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1089, + "version": 1, + "versionNonce": 1090, + "isDeleted": false, + "groupIds": [], + "boundElements": [], + "link": null, + "locked": false, + "fileId": "img_blki45", + "status": "saved", + "scale": [ + 1, + 1 + ], + "roundness": null, + "crop": null + }, + { + "type": "text", + "id": "blkt46", + "x": 599.3333333333334, + "y": 511.8, + "width": 254.66666666666669, + "height": 18.75, + "strokeColor": "#78350f", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1091, + "version": 1, + "versionNonce": 1092, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "Exam types", + "originalText": "Exam types", + "fontSize": 15, + "fontFamily": 2, + "textAlign": "center", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 + }, + { + "type": "text", + "id": "blkd47", + "x": 599.3333333333334, + "y": 532.55, + "width": 254.66666666666669, + "height": 16.25, + "strokeColor": "#b45309", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1093, + "version": 1, + "versionNonce": 1094, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "LOINC/RSNA Playbook", + "originalText": "LOINC/RSNA Playbook", + "fontSize": 13, + "fontFamily": 2, + "textAlign": "center", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 + }, + { + "type": "rectangle", + "id": "fill53", + "x": 423.0, + "y": 95.65, + "width": 36.076923076923094, + "height": 27.0, + "strokeColor": "transparent", + "backgroundColor": "#ede9fe", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1105, + "version": 1, + "versionNonce": 1106, + "isDeleted": false, + "groupIds": [], + "boundElements": [], + "link": null, + "locked": false, + "roundness": null + }, + { + "type": "rectangle", + "id": "fill54", + "x": 529.2307692307693, + "y": 95.65, + "width": 35.076923076923094, + "height": 27.0, + "strokeColor": "transparent", + "backgroundColor": "#ede9fe", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1107, + "version": 1, + "versionNonce": 1108, + "isDeleted": false, + "groupIds": [], + "boundElements": [], + "link": null, + "locked": false, + "roundness": null + }, + { + "type": "rectangle", + "id": "fill55", + "x": 634.4615384615385, + "y": 95.65, + "width": 35.076923076923094, + "height": 27.0, + "strokeColor": "transparent", + "backgroundColor": "#ede9fe", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1109, + "version": 1, + "versionNonce": 1110, + "isDeleted": false, + "groupIds": [], + "boundElements": [], + "link": null, + "locked": false, + "roundness": null + }, + { + "type": "rectangle", + "id": "fill56", + "x": 739.6923076923077, + "y": 95.65, + "width": 35.076923076923094, + "height": 27.0, + "strokeColor": "transparent", + "backgroundColor": "#ede9fe", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1111, + "version": 1, + "versionNonce": 1112, + "isDeleted": false, + "groupIds": [], + "boundElements": [], + "link": null, + "locked": false, + "roundness": null + }, + { + "type": "rectangle", + "id": "fill57", + "x": 844.9230769230769, + "y": 95.65, + "width": 36.076923076923094, + "height": 27.0, + "strokeColor": "transparent", + "backgroundColor": "#ede9fe", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1113, + "version": 1, + "versionNonce": 1114, + "isDeleted": false, + "groupIds": [], + "boundElements": [], + "link": null, + "locked": false, + "roundness": null + }, + { + "type": "line", + "id": "ln58", + "x": 424.0, + "y": 63.650000000000006, + "width": 0.0, + "height": 32.0, + "strokeColor": "#15803d", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1115, + "version": 1, + "versionNonce": 1116, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "points": [ + [ + 0.0, + 0.0 + ], + [ + 0.0, + 32.0 + ] + ], + "roundness": null + }, + { + "type": "line", + "id": "ln59", + "x": 880, + "y": 63.650000000000006, + "width": 0, + "height": 32.0, + "strokeColor": "#15803d", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1117, + "version": 1, + "versionNonce": 1118, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "points": [ + [ + 0, + 0.0 + ], + [ + 0, + 32.0 + ] + ], + "roundness": null + }, + { + "type": "line", + "id": "ln60", + "x": 880, + "y": 95.65, + "width": 0, + "height": 56.0, + "strokeColor": "#6d28d9", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1119, + "version": 1, + "versionNonce": 1120, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "points": [ + [ + 0, + 0.0 + ], + [ + 0, + 56.0 + ] + ], + "roundness": null + }, + { + "type": "line", + "id": "ln61", + "x": 424.0, + "y": 95.65, + "width": 456.0, + "height": 24.0, + "strokeColor": "#15803d", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1121, + "version": 1, + "versionNonce": 1122, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "points": [ + [ + 0.0, + 0.0 + ], + [ + 35.076923076923094, + 0.0 + ], + [ + 35.076923076923094, + 24.0 + ], + [ + 105.23076923076928, + 24.0 + ], + [ + 105.23076923076928, + 0.0 + ], + [ + 140.30769230769238, + 0.0 + ], + [ + 140.30769230769238, + 24.0 + ], + [ + 210.46153846153845, + 24.0 + ], + [ + 210.46153846153845, + 0.0 + ], + [ + 245.53846153846155, + 0.0 + ], + [ + 245.53846153846155, + 24.0 + ], + [ + 315.69230769230774, + 24.0 + ], + [ + 315.69230769230774, + 0.0 + ], + [ + 350.76923076923083, + 0.0 + ], + [ + 350.76923076923083, + 24.0 + ], + [ + 420.9230769230769, + 24.0 + ], + [ + 420.9230769230769, + 0.0 + ], + [ + 456.0, + 0.0 + ] + ], + "roundness": null + }, + { + "type": "text", + "id": "jw62", + "x": 459.0769230769231, + "y": 99.525, + "width": 70.15384615384619, + "height": 16.25, + "strokeColor": "#14532d", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1123, + "version": 1, + "versionNonce": 1124, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "create", + "originalText": "create", + "fontSize": 13, + "fontFamily": 2, + "textAlign": "center", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 + }, + { + "type": "text", + "id": "jw63", + "x": 564.3076923076924, + "y": 99.525, + "width": 70.15384615384608, + "height": 16.25, + "strokeColor": "#14532d", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1125, + "version": 1, + "versionNonce": 1126, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "read", + "originalText": "read", + "fontSize": 13, + "fontFamily": 2, + "textAlign": "center", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 + }, + { + "type": "text", + "id": "jw64", + "x": 669.5384615384615, + "y": 99.525, + "width": 70.15384615384619, + "height": 16.25, + "strokeColor": "#14532d", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1127, + "version": 1, + "versionNonce": 1128, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "resolve", + "originalText": "resolve", + "fontSize": 13, + "fontFamily": 2, + "textAlign": "center", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 + }, + { + "type": "text", + "id": "jw65", + "x": 774.7692307692308, + "y": 99.525, + "width": 70.15384615384608, + "height": 16.25, + "strokeColor": "#14532d", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1129, + "version": 1, + "versionNonce": 1130, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "author", + "originalText": "author", + "fontSize": 13, + "fontFamily": 2, + "textAlign": "center", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 + }, + { + "type": "text", + "id": "jl66", + "x": 459.0769230769231, + "y": 69.4, + "width": 143.26, + "height": 16.25, + "strokeColor": "#15803d", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1131, + "version": 1, + "versionNonce": 1132, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "an application can:", + "originalText": "an application can:", + "fontSize": 13, + "fontFamily": 2, + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 + }, + { + "type": "rectangle", + "id": "fill71", + "x": -1.0, + "y": 151.05, + "width": 121.85714285714286, + "height": 27.0, + "strokeColor": "transparent", + "backgroundColor": "#ccfbf1", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1141, + "version": 1, + "versionNonce": 1142, + "isDeleted": false, + "groupIds": [], + "boundElements": [], + "link": null, + "locked": false, + "roundness": null + }, + { + "type": "rectangle", + "id": "fill72", + "x": 362.57142857142856, + "y": 151.05, + "width": 120.85714285714289, + "height": 27.0, + "strokeColor": "transparent", + "backgroundColor": "#ccfbf1", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1143, + "version": 1, + "versionNonce": 1144, + "isDeleted": false, + "groupIds": [], + "boundElements": [], + "link": null, + "locked": false, + "roundness": null + }, + { + "type": "rectangle", + "id": "fill73", + "x": 725.1428571428571, + "y": 151.05, + "width": 120.85714285714289, + "height": 27.0, + "strokeColor": "transparent", + "backgroundColor": "#ccfbf1", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1145, + "version": 1, + "versionNonce": 1146, + "isDeleted": false, + "groupIds": [], + "boundElements": [], + "link": null, + "locked": false, + "roundness": null + }, + { + "type": "line", + "id": "ln74", + "x": 0.0, + "y": 119.05000000000001, + "width": 0.0, + "height": 32.0, + "strokeColor": "#6d28d9", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1147, + "version": 1, + "versionNonce": 1148, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "points": [ + [ + 0.0, + 0.0 + ], + [ + 0.0, + 32.0 + ] + ], + "roundness": null + }, + { + "type": "line", + "id": "ln75", + "x": 0.0, + "y": 151.05, + "width": 0.0, + "height": 56.0, + "strokeColor": "#0f766e", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1149, + "version": 1, + "versionNonce": 1150, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "points": [ + [ + 0.0, + 0.0 + ], + [ + 0.0, + 56.0 + ] + ], + "roundness": null + }, + { + "type": "line", + "id": "ln76", + "x": 880, + "y": 119.05000000000001, + "width": 0, + "height": 32.0, + "strokeColor": "#6d28d9", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1151, + "version": 1, + "versionNonce": 1152, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "points": [ + [ + 0, + 0.0 + ], + [ + 0, + 32.0 + ] + ], + "roundness": null + }, + { + "type": "line", + "id": "ln77", + "x": 880, + "y": 151.05, + "width": 0, + "height": 56.0, + "strokeColor": "#0f766e", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1153, + "version": 1, + "versionNonce": 1154, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "points": [ + [ + 0, + 0.0 + ], + [ + 0, + 56.0 + ] + ], + "roundness": null + }, + { + "type": "line", + "id": "ln78", + "x": 0.0, + "y": 151.05, + "width": 846.0, + "height": 24.0, + "strokeColor": "#6d28d9", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1155, + "version": 1, + "versionNonce": 1156, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "points": [ + [ + 0.0, + 0.0 + ], + [ + 120.85714285714286, + 0.0 + ], + [ + 120.85714285714286, + 24.0 + ], + [ + 362.57142857142856, + 24.0 + ], + [ + 362.57142857142856, + 0.0 + ], + [ + 483.42857142857144, + 0.0 + ], + [ + 483.42857142857144, + 24.0 + ], + [ + 725.1428571428571, + 24.0 + ], + [ + 725.1428571428571, + 0.0 + ], + [ + 846.0, + 0.0 + ] + ], + "roundness": null + }, + { + "type": "text", + "id": "jw79", + "x": 120.85714285714286, + "y": 154.925, + "width": 241.7142857142857, + "height": 16.25, + "strokeColor": "#4c1d95", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1157, + "version": 1, + "versionNonce": 1158, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "wraps", + "originalText": "wraps", + "fontSize": 13, + "fontFamily": 2, + "textAlign": "center", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 + }, + { + "type": "text", + "id": "jw80", + "x": 483.42857142857144, + "y": 154.925, + "width": 241.71428571428567, + "height": 16.25, + "strokeColor": "#4c1d95", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1159, + "version": 1, + "versionNonce": 1160, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "manipulates instances", + "originalText": "manipulates instances", + "fontSize": 13, + "fontFamily": 2, + "textAlign": "center", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 + }, + { + "type": "rectangle", + "id": "fill85", + "x": -1.0, + "y": 373.05, + "width": 51.0, + "height": 39.0, + "strokeColor": "transparent", + "backgroundColor": "#fef3c7", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1169, + "version": 1, + "versionNonce": 1170, + "isDeleted": false, + "groupIds": [], + "boundElements": [], + "link": null, + "locked": false, + "roundness": null + }, + { + "type": "rectangle", + "id": "fill86", + "x": 150.0, + "y": 373.05, + "width": 50.0, + "height": 39.0, + "strokeColor": "transparent", + "backgroundColor": "#fef3c7", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1171, + "version": 1, + "versionNonce": 1172, + "isDeleted": false, + "groupIds": [], + "boundElements": [], + "link": null, + "locked": false, + "roundness": null + }, + { + "type": "rectangle", + "id": "fill87", + "x": 300.0, + "y": 373.05, + "width": 50.0, + "height": 39.0, + "strokeColor": "transparent", + "backgroundColor": "#fef3c7", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1173, + "version": 1, + "versionNonce": 1174, + "isDeleted": false, + "groupIds": [], + "boundElements": [], + "link": null, + "locked": false, + "roundness": null + }, + { + "type": "rectangle", + "id": "fill88", + "x": 450.0, + "y": 373.05, + "width": 50.0, + "height": 39.0, + "strokeColor": "transparent", + "backgroundColor": "#fef3c7", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1175, + "version": 1, + "versionNonce": 1176, + "isDeleted": false, + "groupIds": [], + "boundElements": [], + "link": null, + "locked": false, + "roundness": null + }, + { + "type": "rectangle", + "id": "fill89", + "x": 600.0, + "y": 373.05, + "width": 281.0, + "height": 39.0, + "strokeColor": "transparent", + "backgroundColor": "#fef3c7", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1177, + "version": 1, + "versionNonce": 1178, + "isDeleted": false, + "groupIds": [], + "boundElements": [], + "link": null, + "locked": false, + "roundness": null + }, + { + "type": "line", + "id": "ln90", + "x": 0.0, + "y": 341.05, + "width": 0.0, + "height": 32.0, + "strokeColor": "#0f766e", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1179, + "version": 1, + "versionNonce": 1180, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "points": [ + [ + 0.0, + 0.0 + ], + [ + 0.0, + 32.0 + ] + ], + "roundness": null + }, + { + "type": "line", + "id": "ln91", + "x": 0.0, + "y": 373.05, + "width": 0.0, + "height": 68.0, + "strokeColor": "#b45309", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1181, + "version": 1, + "versionNonce": 1182, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "points": [ + [ + 0.0, + 0.0 + ], + [ + 0.0, + 68.0 + ] + ], + "roundness": null + }, + { + "type": "line", + "id": "ln92", + "x": 880, + "y": 341.05, + "width": 0, + "height": 32.0, + "strokeColor": "#0f766e", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1183, + "version": 1, + "versionNonce": 1184, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "points": [ + [ + 0, + 0.0 + ], + [ + 0, + 32.0 + ] + ], + "roundness": null + }, + { + "type": "line", + "id": "ln93", + "x": 880, + "y": 373.05, + "width": 0, + "height": 68.0, + "strokeColor": "#b45309", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1185, + "version": 1, + "versionNonce": 1186, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "points": [ + [ + 0, + 0.0 + ], + [ + 0, + 68.0 + ] + ], + "roundness": null + }, + { + "type": "line", + "id": "ln94", + "x": 0.0, + "y": 373.05, + "width": 880.0, + "height": 36.0, + "strokeColor": "#0f766e", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1187, + "version": 1, + "versionNonce": 1188, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "points": [ + [ + 0.0, + 0.0 + ], + [ + 50.0, + 0.0 + ], + [ + 50.0, + 36.0 + ], + [ + 150.0, + 36.0 + ], + [ + 150.0, + 0.0 + ], + [ + 200.0, + 0.0 + ], + [ + 200.0, + 36.0 + ], + [ + 300.0, + 36.0 + ], + [ + 300.0, + 0.0 + ], + [ + 350.0, + 0.0 + ], + [ + 350.0, + 36.0 + ], + [ + 450.0, + 36.0 + ], + [ + 450.0, + 0.0 + ], + [ + 500.0, + 0.0 + ], + [ + 500.0, + 36.0 + ], + [ + 600.0, + 36.0 + ], + [ + 600.0, + 0.0 + ], + [ + 880.0, + 0.0 + ] + ], + "roundness": null + }, + { + "type": "text", + "id": "jw95", + "x": 50.0, + "y": 382.925, + "width": 100.0, + "height": 16.25, + "strokeColor": "#134e4a", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1189, + "version": 1, + "versionNonce": 1190, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "finding", + "originalText": "finding", + "fontSize": 13, + "fontFamily": 2, + "textAlign": "center", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 + }, + { + "type": "text", + "id": "jw96", + "x": 200.0, + "y": 382.925, + "width": 100.0, + "height": 16.25, + "strokeColor": "#134e4a", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1191, + "version": 1, + "versionNonce": 1192, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "diagnosis", + "originalText": "diagnosis", + "fontSize": 13, + "fontFamily": 2, + "textAlign": "center", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 + }, + { + "type": "text", + "id": "jw97", + "x": 350.0, + "y": 382.925, + "width": 100.0, + "height": 16.25, + "strokeColor": "#134e4a", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1193, + "version": 1, + "versionNonce": 1194, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "location", + "originalText": "location", + "fontSize": 13, + "fontFamily": 2, + "textAlign": "center", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 + }, + { + "type": "text", + "id": "jw98", + "x": 500.0, + "y": 382.925, + "width": 100.0, + "height": 16.25, + "strokeColor": "#134e4a", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1195, + "version": 1, + "versionNonce": 1196, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "exam type", + "originalText": "exam type", + "fontSize": 13, + "fontFamily": 2, + "textAlign": "center", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 + }, + { + "type": "text", + "id": "jl99", + "x": 50.0, + "y": 346.8, + "width": 180.95999999999998, + "height": 16.25, + "strokeColor": "#0f766e", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1197, + "version": 1, + "versionNonce": 1198, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "woven together at every:", + "originalText": "woven together at every:", + "fontSize": 13, + "fontFamily": 2, + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 + }, + { + "type": "rectangle", + "id": "fill100", + "x": 846.0, + "y": 151.05, + "width": 34.0, + "height": 222.0, + "strokeColor": "transparent", + "backgroundColor": "#ede9fe", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1199, + "version": 1, + "versionNonce": 1200, + "isDeleted": false, + "groupIds": [], + "boundElements": [], + "link": null, + "locked": false, + "roundness": null + }, + { + "type": "rectangle", + "id": "fill101", + "x": 650.0, + "y": 373.05, + "width": 230.0, + "height": 36.0, + "strokeColor": "transparent", + "backgroundColor": "#ede9fe", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1201, + "version": 1, + "versionNonce": 1202, + "isDeleted": false, + "groupIds": [], + "boundElements": [], + "link": null, + "locked": false, + "roundness": null + }, + { + "type": "line", + "id": "ln102", + "x": 846.0, + "y": 151.05, + "width": 230.0, + "height": 258.0, + "strokeColor": "#6d28d9", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1203, + "version": 1, + "versionNonce": 1204, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "points": [ + [ + 0.0, + 0.0 + ], + [ + 0.0, + 222.0 + ], + [ + -196.0, + 222.0 + ], + [ + -196.0, + 258.0 + ], + [ + 34.0, + 258.0 + ], + [ + 34.0, + 0.0 + ] + ], + "roundness": null + }, + { + "type": "text", + "id": "lanet103", + "x": 650.0, + "y": 382.925, + "width": 230.0, + "height": 16.25, + "strokeColor": "#4c1d95", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1205, + "version": 1, + "versionNonce": 1206, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "attaches to \u00b7 authors & maintains", + "originalText": "attaches to \u00b7 authors & maintains", + "fontSize": 13, + "fontFamily": 2, + "textAlign": "center", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 + } + ], + "appState": { + "viewBackgroundColor": "#ffffff", + "gridSize": null + }, + "files": { + "img_bicon3": { + "mimeType": "image/svg+xml", + "id": "img_bicon3", + "dataURL": "data:image/svg+xml;base64,PHN2ZwogIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIKICB3aWR0aD0iMjQiCiAgaGVpZ2h0PSIyNCIKICB2aWV3Qm94PSIwIDAgMjQgMjQiCiAgZmlsbD0ibm9uZSIKICBzdHJva2U9IiNiZTEyM2MiCiAgc3Ryb2tlLXdpZHRoPSIyIgogIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIKICBzdHJva2UtbGluZWpvaW49InJvdW5kIgo+CiAgPHBhdGggZD0iTTE1IDE0Yy4yLTEgLjctMS43IDEuNS0yLjUgMS0uOSAxLjUtMi4yIDEuNS0zLjVBNiA2IDAgMCAwIDYgOGMwIDEgLjIgMi4yIDEuNSAzLjUuNy43IDEuMyAxLjUgMS41IDIuNSIgLz4KICA8cGF0aCBkPSJNOSAxOGg2IiAvPgogIDxwYXRoIGQ9Ik0xMCAyMmg0IiAvPgo8L3N2Zz4K", + "created": 1700000000000 + }, + "img_bicon6": { + "mimeType": "image/svg+xml", + "id": "img_bicon6", + "dataURL": "data:image/svg+xml;base64,PHN2ZwogIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIKICB3aWR0aD0iMjQiCiAgaGVpZ2h0PSIyNCIKICB2aWV3Qm94PSIwIDAgMjQgMjQiCiAgZmlsbD0ibm9uZSIKICBzdHJva2U9IiMxNTgwM2QiCiAgc3Ryb2tlLXdpZHRoPSIyIgogIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIKICBzdHJva2UtbGluZWpvaW49InJvdW5kIgo+CiAgPHJlY3QgeD0iMiIgeT0iNCIgd2lkdGg9IjIwIiBoZWlnaHQ9IjE2IiByeD0iMiIgLz4KICA8cGF0aCBkPSJNMTAgNHY0IiAvPgogIDxwYXRoIGQ9Ik0yIDhoMjAiIC8+CiAgPHBhdGggZD0iTTYgNHY0IiAvPgo8L3N2Zz4K", + "created": 1700000000000 + }, + "img_bicon12": { + "mimeType": "image/svg+xml", + "id": "img_bicon12", + "dataURL": "data:image/svg+xml;base64,PHN2ZwogIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIKICB3aWR0aD0iMjQiCiAgaGVpZ2h0PSIyNCIKICB2aWV3Qm94PSIwIDAgMjQgMjQiCiAgZmlsbD0ibm9uZSIKICBzdHJva2U9IiM2ZDI4ZDkiCiAgc3Ryb2tlLXdpZHRoPSIyIgogIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIKICBzdHJva2UtbGluZWpvaW49InJvdW5kIgo+CiAgPHBhdGggZD0iTTExIDIxLjczYTIgMiAwIDAgMCAyIDBsNy00QTIgMiAwIDAgMCAyMSAxNlY4YTIgMiAwIDAgMC0xLTEuNzNsLTctNGEyIDIgMCAwIDAtMiAwbC03IDRBMiAyIDAgMCAwIDMgOHY4YTIgMiAwIDAgMCAxIDEuNzN6IiAvPgogIDxwYXRoIGQ9Ik0xMiAyMlYxMiIgLz4KICA8cG9seWxpbmUgcG9pbnRzPSIzLjI5IDcgMTIgMTIgMjAuNzEgNyIgLz4KICA8cGF0aCBkPSJtNy41IDQuMjcgOSA1LjE1IiAvPgo8L3N2Zz4K", + "created": 1700000000000 + }, + "img_bicon15": { + "mimeType": "image/svg+xml", + "id": "img_bicon15", + "dataURL": "data:image/svg+xml;base64,PHN2ZwogIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIKICB3aWR0aD0iMjQiCiAgaGVpZ2h0PSIyNCIKICB2aWV3Qm94PSIwIDAgMjQgMjQiCiAgZmlsbD0ibm9uZSIKICBzdHJva2U9IiMwZjc2NmUiCiAgc3Ryb2tlLXdpZHRoPSIyIgogIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIKICBzdHJva2UtbGluZWpvaW49InJvdW5kIgo+CiAgPHBhdGggZD0iTTEyLjgzIDIuMThhMiAyIDAgMCAwLTEuNjYgMEwyLjYgNi4wOGExIDEgMCAwIDAgMCAxLjgzbDguNTggMy45MWEyIDIgMCAwIDAgMS42NiAwbDguNTgtMy45YTEgMSAwIDAgMCAwLTEuODN6IiAvPgogIDxwYXRoIGQ9Ik0yIDEyYTEgMSAwIDAgMCAuNTguOTFsOC42IDMuOTFhMiAyIDAgMCAwIDEuNjUgMGw4LjU4LTMuOUExIDEgMCAwIDAgMjIgMTIiIC8+CiAgPHBhdGggZD0iTTIgMTdhMSAxIDAgMCAwIC41OC45MWw4LjYgMy45MWEyIDIgMCAwIDAgMS42NSAwbDguNTgtMy45QTEgMSAwIDAgMCAyMiAxNyIgLz4KPC9zdmc+Cg==", + "created": 1700000000000 + }, + "img_blki19": { + "mimeType": "image/svg+xml", + "id": "img_blki19", + "dataURL": "data:image/svg+xml;base64,PHN2ZwogIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIKICB3aWR0aD0iMjQiCiAgaGVpZ2h0PSIyNCIKICB2aWV3Qm94PSIwIDAgMjQgMjQiCiAgZmlsbD0ibm9uZSIKICBzdHJva2U9IiMwZjc2NmUiCiAgc3Ryb2tlLXdpZHRoPSIyIgogIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIKICBzdHJva2UtbGluZWpvaW49InJvdW5kIgo+CiAgPHJlY3Qgd2lkdGg9IjgiIGhlaWdodD0iNCIgeD0iOCIgeT0iMiIgcng9IjEiIHJ5PSIxIiAvPgogIDxwYXRoIGQ9Ik0xNiA0aDJhMiAyIDAgMCAxIDIgMnYxNGEyIDIgMCAwIDEtMiAySDZhMiAyIDAgMCAxLTItMlY2YTIgMiAwIDAgMSAyLTJoMiIgLz4KPC9zdmc+Cg==", + "created": 1700000000000 + }, + "img_blki22": { + "mimeType": "image/svg+xml", + "id": "img_blki22", + "dataURL": "data:image/svg+xml;base64,PHN2ZwogIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIKICB3aWR0aD0iMjQiCiAgaGVpZ2h0PSIyNCIKICB2aWV3Qm94PSIwIDAgMjQgMjQiCiAgZmlsbD0ibm9uZSIKICBzdHJva2U9IiMwZjc2NmUiCiAgc3Ryb2tlLXdpZHRoPSIyIgogIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIKICBzdHJva2UtbGluZWpvaW49InJvdW5kIgo+CiAgPHJlY3Qgd2lkdGg9IjgiIGhlaWdodD0iNCIgeD0iOCIgeT0iMiIgcng9IjEiIHJ5PSIxIiAvPgogIDxwYXRoIGQ9Ik0xNiA0aDJhMiAyIDAgMCAxIDIgMnYxNGEyIDIgMCAwIDEtMiAySDZhMiAyIDAgMCAxLTItMlY2YTIgMiAwIDAgMSAyLTJoMiIgLz4KICA8cGF0aCBkPSJNMTIgMTFoNCIgLz4KICA8cGF0aCBkPSJNMTIgMTZoNCIgLz4KICA8cGF0aCBkPSJNOCAxMWguMDEiIC8+CiAgPHBhdGggZD0iTTggMTZoLjAxIiAvPgo8L3N2Zz4K", + "created": 1700000000000 + }, + "img_blki26": { + "mimeType": "image/svg+xml", + "id": "img_blki26", + "dataURL": "data:image/svg+xml;base64,PHN2ZwogIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIKICB3aWR0aD0iMjQiCiAgaGVpZ2h0PSIyNCIKICB2aWV3Qm94PSIwIDAgMjQgMjQiCiAgZmlsbD0ibm9uZSIKICBzdHJva2U9IiMwZjc2NmUiCiAgc3Ryb2tlLXdpZHRoPSIyIgogIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIKICBzdHJva2UtbGluZWpvaW49InJvdW5kIgo+CiAgPHBhdGggZD0iTTMgNWguMDEiIC8+CiAgPHBhdGggZD0iTTMgMTJoLjAxIiAvPgogIDxwYXRoIGQ9Ik0zIDE5aC4wMSIgLz4KICA8cGF0aCBkPSJNOCA1aDEzIiAvPgogIDxwYXRoIGQ9Ik04IDEyaDEzIiAvPgogIDxwYXRoIGQ9Ik04IDE5aDEzIiAvPgo8L3N2Zz4K", + "created": 1700000000000 + }, + "img_blki30": { + "mimeType": "image/svg+xml", + "id": "img_blki30", + "dataURL": "data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNDgiIGhlaWdodD0iNDgiIHZpZXdCb3g9IjAgMCA0OCA0OCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0yNCAyNEMyOC40MjA0IDI0IDMyIDIwLjQyMDQgMzIgMTZDMzIgMTEuNTc5NiAyOC40MjA0IDggMjQgOEMxOS41Nzk2IDggMTYgMTEuNTc5NiAxNiAxNkMxNiAyMC40MjA0IDE5LjU3OTYgMjQgMjQgMjRaTTM0IDE2QzM0IDIxLjUyNSAyOS41MjUgMjYgMjQgMjZDMTguNDc1IDI2IDE0IDIxLjUyNSAxNCAxNkMxNCAxMC40NzUgMTguNDc1IDYgMjQgNkMyOS41MjUgNiAzNCAxMC40NzUgMzQgMTZaIiBmaWxsPSIjMGY3NjZlIi8+CjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgY2xpcC1ydWxlPSJldmVub2RkIiBkPSJNOS4yMjM0OCAzNC4yMTE5QzguMjIwMzggMzUuMDIxMSA4IDM1LjYyOTEgOCAzNlY0MEg0MFYzNkM0MCAzNS42MjkxIDM5Ljc3OTYgMzUuMDIxMSAzOC43NzY1IDM0LjIxMTlDMzcuNzk1OCAzMy40MjA3IDM2LjMzNDEgMzIuNjY2OSAzNC41NjIyIDMyLjAxNUMzMS4wMTk5IDMwLjcxMTcgMjYuNzUzMiAzMCAyNCAzMEMyMS4yNDY4IDMwIDE2Ljk4MDEgMzAuNzExNyAxMy40Mzc4IDMyLjAxNUMxMS42NjU5IDMyLjY2NjkgMTAuMjA0MiAzMy40MjA3IDkuMjIzNDggMzQuMjExOVpNMjQgMjhDMTcuOTkyNSAyOCA2IDMxLjAzNDcgNiAzNlY0Mkg0MlYzNkM0MiAzMS4wMzQ3IDMwLjAwNzUgMjggMjQgMjhaIiBmaWxsPSIjMGY3NjZlIi8+Cjwvc3ZnPgo=", + "created": 1700000000000 + }, + "img_bicon33": { + "mimeType": "image/svg+xml", + "id": "img_bicon33", + "dataURL": "data:image/svg+xml;base64,PHN2ZwogIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIKICB3aWR0aD0iMjQiCiAgaGVpZ2h0PSIyNCIKICB2aWV3Qm94PSIwIDAgMjQgMjQiCiAgZmlsbD0ibm9uZSIKICBzdHJva2U9IiNiNDUzMDkiCiAgc3Ryb2tlLXdpZHRoPSIyIgogIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIKICBzdHJva2UtbGluZWpvaW49InJvdW5kIgo+CiAgPHBhdGggZD0iTTEyIDV2MTYiIC8+CiAgPHBhdGggZD0iTTIwLjAwMSAxOUEyIDIgMCAwMDIyIDE3VjVhMiAyIDAgMDAtMS45OTktMkwxNiAzLjAwMkE1IDUgMCAwMDEyIDVhNSA1IDAgMDAtNC0ySDRhMiAyIDAgMDAtMiAydjEyYTIgMiAwIDAwMS45OTkgMkg4YTUgNSAwIDAxNCAyIDUgNSAwIDAxNC0yeiIgLz4KPC9zdmc+Cg==", + "created": 1700000000000 + }, + "img_blki37": { + "mimeType": "image/svg+xml", + "id": "img_blki37", + "dataURL": "data:image/svg+xml;base64,PHN2ZwogIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIKICB3aWR0aD0iMjQiCiAgaGVpZ2h0PSIyNCIKICB2aWV3Qm94PSIwIDAgMjQgMjQiCiAgZmlsbD0ibm9uZSIKICBzdHJva2U9IiNiNDUzMDkiCiAgc3Ryb2tlLXdpZHRoPSIyIgogIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIKICBzdHJva2UtbGluZWpvaW49InJvdW5kIgo+CiAgPHBhdGggZD0iTTEyLjU4NiAyLjU4NkEyIDIgMCAwIDAgMTEuMTcyIDJINGEyIDIgMCAwIDAtMiAydjcuMTcyYTIgMiAwIDAgMCAuNTg2IDEuNDE0bDguNzA0IDguNzA0YTIuNDI2IDIuNDI2IDAgMCAwIDMuNDIgMGw2LjU4LTYuNThhMi40MjYgMi40MjYgMCAwIDAgMC0zLjQyeiIgLz4KICA8Y2lyY2xlIGN4PSI3LjUiIGN5PSI3LjUiIHI9Ii41IiBmaWxsPSIjYjQ1MzA5IiAvPgo8L3N2Zz4K", + "created": 1700000000000 + }, + "img_blki41": { + "mimeType": "image/svg+xml", + "id": "img_blki41", + "dataURL": "data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNDgiIGhlaWdodD0iNDgiIHZpZXdCb3g9IjAgMCA0OCA0OCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0yMyA2LjAwMDEzQzIzIDYuMDAwMDQgMjMgNiAyNCA2SDI0LjE3NjFDMjQuMjUzMyA2IDI0LjMyMzMgNiAyNC4zODY4IDZDMjUgNi4wMDAwMSAyNSA2LjAwMDA1IDI1IDYuMDAwMTNWMjAuNUMyNSAyMS44OTc3IDI1LjU2NDEgMjIuNDQyMSAyNi4wMDM5IDIyLjY5ODdDMjYuMDUzIDIyLjcyNzMgMjYuMTAyNCAyMi43NTMzIDI2LjE1MTYgMjIuNzc3QzI2LjE1MDYgMjIuNjU2OCAyNi4xNDkzIDIyLjUzMTYgMjYuMTQ3OSAyMi40MDE5TDI2LjE0NzkgMjIuNDAwM0MyNi4xMTAxIDE4Ljg3MTYgMjYuMDM2NSAxMS45OTk3IDMxLjQ3NTMgMTEuOTk5N0MzOC45MjU5IDExLjk5OTcgNDQuMjQ3OCAzOC4wMDYyIDQxLjA1NDcgNDAuNjU5OUMzNy44NjE1IDQzLjMxMzYgMzEuNDc1MyA0MS43MjE0IDI4LjI4MjIgMzguNTM2OUMyNS43MDQyIDM1Ljk2NTkgMjUuOTI3MiAyOS45NTgzIDI2LjA4NzMgMjUuNjQ1N0wyNi4wODc0IDI1LjY0NDNDMjYuMDk3MSAyNS4zODE5IDI2LjEwNjcgMjUuMTI1OCAyNi4xMTUzIDI0Ljg3NzFDMjUuNzkgMjQuNzk2MiAyNS4zOTU5IDI0LjY1OTUgMjQuOTk2MiAyNC40MjYzQzI0LjYzOTggMjQuMjE4NCAyNC4yOTc1IDIzLjk0NDIgMjQgMjMuNTkxOUMyMy43MDI2IDIzLjk0NDIgMjMuMzYwMyAyNC4yMTg0IDIzLjAwMzkgMjQuNDI2M0MyMi42MDQxIDI0LjY1OTUgMjIuMjEwMSAyNC43OTYyIDIxLjg4NDggMjQuODc3MUMyMS44OTM0IDI1LjEyNjEgMjEuOTAyOSAyNS4zODI2IDIxLjkxMjcgMjUuNjQ1M0MyMi4wNzI4IDI5Ljk1NzkgMjIuMjk1OSAzNS45NjYyIDE5LjcxNzkgMzguNTM3MkMxNi41MjQ3IDQxLjcyMTcgMTAuMTM4NSA0My4zMTM5IDYuOTQ1MzYgNDAuNjYwMkMzLjc1MjIyIDM4LjAwNjUgOS4wNzQxMyAxMiAxNi41MjQ3IDEyQzIxLjk2MzYgMTIgMjEuODkgMTguODcxNyAyMS44NTIyIDIyLjQwMDNDMjEuODUyIDIyLjQxNjYgMjEuODUxOCAyMi40MzI4IDIxLjg1MTYgMjIuNDQ4OUMyMS44NTA0IDIyLjU2MTkgMjEuODQ5MyAyMi42NzE0IDIxLjg0ODQgMjIuNzc3QzIxLjg5NzcgMjIuNzUzNCAyMS45NDcxIDIyLjcyNzQgMjEuOTk2MiAyMi42OTg3QzIyLjQzNiAyMi40NDIxIDIzIDIxLjg5NzcgMjMgMjAuNVY2LjAwMDEzWk0zMS40NzUzIDEzLjk5OTdDMzAuNTIxMiAxMy45OTk3IDI5Ljk4NDMgMTQuMzAwMiAyOS42MDg2IDE0LjY4NjlDMjkuMTc1MiAxNS4xMzMxIDI4LjgxMzIgMTUuODUwNyAyOC41NTkgMTYuODY0NkMyOC4xMTQxIDE4LjYzOTUgMjguMTMzIDIwLjY4MTkgMjguMTQ4MyAyMi4zMjkzQzI4LjE1MDkgMjIuNjE0MiAyOC4xNTM0IDIyLjg4NzQgMjguMTUzNCAyMy4xNDUzQzI4LjE1MzQgMjMuOTA1MyAyOC4xMTk2IDI0LjgxNTMgMjguMDg0NSAyNS43NjIxQzI4LjA3MDcgMjYuMTM0OSAyOC4wNTY2IDI2LjUxMzMgMjguMDQ0MyAyNi44OTA1QzI3Ljk5OTYgMjguMjY1NyAyNy45NzQxIDI5LjcwNTUgMjguMDQwNSAzMS4wOTgyQzI4LjEwNzIgMzIuNDk4NSAyOC4yNjQyIDMzLjc4MzUgMjguNTU3MyAzNC44NTk2QzI4Ljg1MzggMzUuOTQ4MyAyOS4yNTA5IDM2LjY3ODQgMjkuNjk0NCAzNy4xMjA4QzMwLjk3MjYgMzguMzk1NCAzMi45OTA4IDM5LjQyNTEgMzUuMDQ5MiAzOS44MjQzQzM3LjA4NDIgNDAuMjE4OSAzOC43MjI0IDM5LjkyNjkgMzkuNjgxOCAzOS4xOTY5QzM5LjY4NjggMzkuMTg1NyAzOS42OTIzIDM5LjE3MjYgMzkuNjk4NCAzOS4xNTc0QzM5Ljc1NzYgMzkuMDA5NSAzOS44Mjk0IDM4Ljc1NTQgMzkuODg3OCAzOC4zNjgzQzQwLjAwNDcgMzcuNTkzMyA0MC4wMzUgMzYuNTEyMiAzOS45NTYyIDM1LjE4MDNDMzkuNzk5NSAzMi41MzA1IDM5LjIyODYgMjkuMTY4OSAzOC4zMjY4IDI1Ljg2MDZDMzcuNDIxNiAyMi41Mzk2IDM2LjIxNzMgMTkuMzk5OCAzNC44NTIxIDE3LjEzODNDMzQuMTY4OCAxNi4wMDYyIDMzLjQ5NTEgMTUuMTc4NiAzMi44NzAzIDE0LjY1MzVDMzIuMjUxOCAxNC4xMzM3IDMxLjc5MzUgMTMuOTk5NyAzMS40NzUzIDEzLjk5OTdaTTE2LjUyNDcgMTRDMTcuNDc4OCAxNCAxOC4wMTU4IDE0LjMwMDUgMTguMzkxNCAxNC42ODcyQzE4LjgyNDggMTUuMTMzNCAxOS4xODY4IDE1Ljg1MSAxOS40NDEgMTYuODY0OUMxOS44ODU5IDE4LjYzOTkgMTkuODY3IDIwLjY4MjIgMTkuODUxOCAyMi4zMjk2QzE5Ljg0OTEgMjIuNjE0NiAxOS44NDY2IDIyLjg4NzcgMTkuODQ2NiAyMy4xNDU2QzE5Ljg0NjYgMjMuOTA1NiAxOS44ODA0IDI0LjgxNTYgMTkuOTE1NSAyNS43NjI0QzE5LjkyOTQgMjYuMTM1IDE5Ljk0MzQgMjYuNTEzOCAxOS45NTU3IDI2Ljg5MDhDMjAuMDAwNSAyOC4yNjYgMjAuMDI1OSAyOS43MDU4IDE5Ljk1OTYgMzEuMDk4NUMxOS44OTI5IDMyLjQ5ODggMTkuNzM1OSAzMy43ODM4IDE5LjQ0MjcgMzQuODU5OUMxOS4xNDYyIDM1Ljk0ODYgMTguNzQ5MiAzNi42Nzg3IDE4LjMwNTYgMzcuMTIxMUMxNy4wMjc1IDM4LjM5NTcgMTUuMDA5MyAzOS40MjU0IDEyLjk1MDkgMzkuODI0NkMxMC45MTU5IDQwLjIxOTIgOS4yNzc2OCAzOS45MjcyIDguMzE4MjMgMzkuMTk3MkM4LjMxMzI2IDM5LjE4NiA4LjMwNzcgMzkuMTcyOSA4LjMwMTYyIDM5LjE1NzdDOC4yNDI0MSAzOS4wMDk4IDguMTcwNjEgMzguNzU1NyA4LjExMjI0IDM4LjM2ODZDNy45OTUzOSAzNy41OTM2IDcuOTY1IDM2LjUxMjUgOC4wNDM4IDM1LjE4MDZDOC4yMDA1NiAzMi41MzA4IDguNzcxNDcgMjkuMTY5MiA5LjY3MzI0IDI1Ljg2MDlDMTAuNTc4NSAyMi41Mzk5IDExLjc4MjcgMTkuNDAwMSAxMy4xNDc5IDE3LjEzODZDMTMuODMxMyAxNi4wMDY1IDE0LjUwNDkgMTUuMTc4OSAxNS4xMjk4IDE0LjY1MzhDMTUuNzQ4MiAxNC4xMzQgMTYuMjA2NSAxNCAxNi41MjQ3IDE0WiIgZmlsbD0iI2I0NTMwOSIvPgo8L3N2Zz4K", + "created": 1700000000000 + }, + "img_blki45": { + "mimeType": "image/svg+xml", + "id": "img_blki45", + "dataURL": "data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNDgiIGhlaWdodD0iNDgiIHZpZXdCb3g9IjAgMCA0OCA0OCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0yOSA5QzI5IDExLjc2MTQgMjYuNzYxNCAxNCAyNCAxNEMyMS4yMzg2IDE0IDE5IDExLjc2MTQgMTkgOUMxOSA2LjIzODU4IDIxLjIzODYgNCAyNCA0QzI2Ljc2MTQgNCAyOSA2LjIzODU4IDI5IDlaTTI3IDlDMjcgMTAuNjU2OSAyNS42NTY5IDEyIDI0IDEyQzIyLjM0MzEgMTIgMjEgMTAuNjU2OSAyMSA5QzIxIDcuMzQzMTUgMjIuMzQzMSA2IDI0IDZDMjUuNjU2OSA2IDI3IDcuMzQzMTUgMjcgOVoiIGZpbGw9IiNiNDUzMDkiLz4KPHBhdGggZD0iTTE2Ljk5OTggNDFWMzRIMTguOTk5OFY0MUMxOC45OTk4IDQxLjU1MjMgMTkuNDQ3NSA0MiAxOS45OTk4IDQySDIwLjA4NjVDMjAuNjAzNyA0MiAyMS4wMzU2IDQxLjYwNTYgMjEuMDgyNCA0MS4wOTA1TDIxLjcyNyAzNEgyMy43MzUzTDIzLjA3NDIgNDEuMjcxNkMyMy4wNjkgNDEuMzI4OCAyMy4wNjIyIDQxLjM4NTYgMjMuMDUzOSA0MS40NDE3QzIzLjAzNTcgNDEuNTY0NyAyMy4wMTAxIDQxLjY4NTEgMjIuOTc3NiA0MS44MDI1QzIyLjYyNDIgNDMuMDc5OCAyMS40NTQ5IDQ0IDIwLjA4NjUgNDRIMTkuOTk5OEMxOC4zNDI5IDQ0IDE2Ljk5OTggNDIuNjU2OSAxNi45OTk4IDQxWiIgZmlsbD0iI2I0NTMwOSIvPgo8cGF0aCBkPSJNMjYuOTE3MSA0MS4wOTA1TDI2LjI3MjUgMzRIMjQuMjY0MkwyNC45MjUzIDQxLjI3MTZDMjQuOTMwNSA0MS4zMjg4IDI0LjkzNzMgNDEuMzg1NiAyNC45NDU2IDQxLjQ0MTdDMjQuOTYzOCA0MS41NjQ3IDI0Ljk4OTQgNDEuNjg1MSAyNS4wMjE5IDQxLjgwMjVDMjUuMzc1MyA0My4wNzk4IDI2LjU0NDYgNDQgMjcuOTEzIDQ0SDI3Ljk5OThDMjkuNjU2NiA0NCAzMC45OTk4IDQyLjY1NjkgMzAuOTk5OCA0MVYzNEgyOC45OTk4VjQxQzI4Ljk5OTggNDEuNTUyMyAyOC41NTIgNDIgMjcuOTk5OCA0MkgyNy45MTNDMjcuMzk1OCA0MiAyNi45NjM5IDQxLjYwNTYgMjYuOTE3MSA0MS4wOTA1WiIgZmlsbD0iI2I0NTMwOSIvPgo8cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGNsaXAtcnVsZT0iZXZlbm9kZCIgZD0iTTExIDE1QzEwLjQ0NzcgMTUgMTAgMTUuNDQ3NyAxMCAxNlYzMUMxMCAzMS41NTIzIDEwLjQ0NzcgMzIgMTEgMzJIMzdDMzcuNTUyMyAzMiAzOCAzMS41NTIzIDM4IDMxVjE2QzM4IDE1LjQ0NzcgMzcuNTUyMyAxNSAzNyAxNUgxMVpNMTIgMTdWMzBIMTkuNUMxOS41IDI5LjQ0MjQgMTkuNzU5MSAyOC45NTcyIDIwLjAyNzYgMjguNjAwNkMyMC4zMDg2IDI4LjIyNzYgMjAuNjc5NiAyNy44ODgzIDIxLjA3OTQgMjcuNjAxNkMyMS42MjUyIDI3LjIxMDMgMjIuMjk4NiAyNi44NjUgMjMgMjYuNjY3OFYyNC41SDIyLjJDMjEuNTk3MyAyNC41IDIwLjc1MzUgMjQuODY0MiAxOS45NDMzIDI1LjM1NTJDMTkuNTYzOCAyNS41ODUyIDE5LjIzMzcgMjUuODE2NyAxOC45OTg0IDI1Ljk5MTFDMTguODgxMiAyNi4wNzc4IDE4Ljc4ODggMjYuMTQ5NSAxOC43MjcgMjYuMTk4NEMxOC42OTYxIDI2LjIyMjggMTguNjczIDI2LjI0MTUgMTguNjU4MiAyNi4yNTM1TDE4LjY0MjYgMjYuMjY2M0wxOC42Mzk5IDI2LjI2ODRDMTguNjM5OSAyNi4yNjg0IDE4LjY0MDIgMjYuMjY4MiAxOCAyNS41QzE3LjM1OTggMjQuNzMxOCAxNy4zNjAxIDI0LjczMTUgMTcuMzYwMSAyNC43MzE1TDE3LjM2MTQgMjQuNzMwNUwxNy4zNjM4IDI0LjcyODVMMTcuMzcxMyAyNC43MjIzTDE3LjM5NjYgMjQuNzAxNkMxNy40MTc5IDI0LjY4NDMgMTcuNDQ4IDI0LjY2IDE3LjQ4NjMgMjQuNjI5N0MxNy41NjI3IDI0LjU2OTMgMTcuNjcxOSAyNC40ODQ3IDE3LjgwNzkgMjQuMzgzOUMxOC4wNzg4IDI0LjE4MzMgMTguNDYxMiAyMy45MTQ4IDE4LjkwNjcgMjMuNjQ0OEMxOS43NDY1IDIzLjEzNTggMjEuMDAyNyAyMi41IDIyLjIgMjIuNUgyM1YyMC41SDIyLjVDMjEuOTMwOSAyMC41IDIxLjE5MDkgMjAuNjk5MiAyMC41MjkyIDIwLjkzOThDMjAuMjEyIDIxLjA1NTIgMTkuOTM3IDIxLjE3MDkgMTkuNzQyMSAyMS4yNTc2QzE5LjY0NDkgMjEuMzAwNyAxOS41Njg1IDIxLjMzNjMgMTkuNTE3NiAyMS4zNjA1QzE5LjQ5MjIgMjEuMzcyNSAxOS40NzMyIDIxLjM4MTcgMTkuNDYxMyAyMS4zODc1TDE5LjQ0ODcgMjEuMzkzN0wxOS40NDcgMjEuMzk0NUMxOS40NDcgMjEuMzk0NSAxOS40NDcyIDIxLjM5NDQgMTkgMjAuNUMxOC41NTI4IDE5LjYwNTYgMTguNTUzMSAxOS42MDU0IDE4LjU1MzEgMTkuNjA1NEwxOC41NTY0IDE5LjYwMzhMMTguNTYyOSAxOS42MDA2TDE4LjU4NDQgMTkuNTlDMTguNjAyNSAxOS41ODEyIDE4LjYyNzkgMTkuNTY4OSAxOC42NjAxIDE5LjU1MzZDMTguNzI0NSAxOS41MjMxIDE4LjgxNiAxOS40ODA1IDE4LjkyOTggMTkuNDI5OUMxOS4xNTY3IDE5LjMyOTEgMTkuNDc1NSAxOS4xOTQ4IDE5Ljg0NTggMTkuMDYwMkMyMC41NTkxIDE4LjgwMDggMjEuNTY5MSAxOC41IDIyLjUgMTguNUgyM1YxN0gxMlpNMjUgMjQuNUgyNi4xQzI2Ljg0ODkgMjQuNSAyNy42MTg2IDI0Ljg2NjMgMjguMjYzMSAyNS4zMTg2QzI4LjU3MzUgMjUuNTM2NCAyOC44Mjg1IDI1Ljc1NTYgMjkuMDA0OCAyNS45MTk3QzI5LjA5MjUgMjYuMDAxMiAyOS4xNTk0IDI2LjA2NzkgMjkuMjAyNiAyNi4xMTIyQzI5LjIyNDEgMjYuMTM0MyAyOS4yMzk3IDI2LjE1MDcgMjkuMjQ4OCAyNi4xNjA1TDI5LjI1NzQgMjYuMTY5N0MyOS4yNTc0IDI2LjE2OTcgMjkuMjU2NyAyNi4xNjkgMzAgMjUuNUMzMC43NDMzIDI0LjgzMSAzMC43NDI5IDI0LjgzMDYgMzAuNzQyOSAyNC44MzA2TDMwLjc0MTQgMjQuODI5TDMwLjczODkgMjQuODI2MkwzMC43MzE4IDI0LjgxODRMMzAuNzA5NyAyNC43OTQ2QzMwLjY5MTUgMjQuNzc1MSAzMC42NjYzIDI0Ljc0ODUgMzAuNjM0NiAyNC43MTZDMzAuNTcxMSAyNC42NTA5IDMwLjQ4MDkgMjQuNTYxMyAzMC4zNjcgMjQuNDU1M0MzMC4xNDAzIDI0LjI0NDQgMjkuODE0IDIzLjk2MzYgMjkuNDExOSAyMy42ODE0QzI4LjYzMTQgMjMuMTMzNyAyNy40NTExIDIyLjUgMjYuMSAyMi41SDI1VjIwLjVIMjUuNzVDMjYuNDQ0MyAyMC41IDI3LjExOTMgMjAuNzAxMSAyNy42NDMyIDIwLjkyMTZDMjcuOTAwMyAyMS4wMjk5IDI4LjEwOTIgMjEuMTM3OCAyOC4yNTA5IDIxLjIxNjlDMjguMzIxNSAyMS4yNTY0IDI4LjM3NDcgMjEuMjg4MiAyOC40MDggMjEuMzA4N0MyOC40MjQ3IDIxLjMxODkgMjguNDM2MyAyMS4zMjYzIDI4LjQ0MjcgMjEuMzMwNEwyOC40NDU3IDIxLjMzMjNDMjguNDQ1NyAyMS4zMzIzIDI4LjQ0NTMgMjEuMzMyMSAyOSAyMC41QzI5LjU1NDcgMTkuNjY3OSAyOS41NTQyIDE5LjY2NzYgMjkuNTU0MiAxOS42Njc2TDI5LjU1MjcgMTkuNjY2NkwyOS41NTAxIDE5LjY2NDlMMjkuNTQzMiAxOS42NjA0TDI5LjUyMjggMTkuNjQ3MkMyOS41MDYzIDE5LjYzNjYgMjkuNDg0IDE5LjYyMjUgMjkuNDU2MiAxOS42MDU0QzI5LjQwMDcgMTkuNTcxMiAyOS4zMjMgMTkuNTI0OSAyOS4yMjU2IDE5LjQ3MDZDMjkuMDMxNSAxOS4zNjIyIDI4Ljc1NTkgMTkuMjIwMSAyOC40MTkzIDE5LjA3ODRDMjcuNzU1NyAxOC43OTg5IDI2LjgwNTcgMTguNSAyNS43NSAxOC41SDI1VjE3SDM2VjMwSDI4LjVDMjguNSAyOS40Mzc5IDI4LjIzMjQgMjguOTQ1MiAyNy45NjQxIDI4LjU4NzVDMjcuNjgwMyAyOC4yMDkyIDI3LjMwNTQgMjcuODYwNiAyNi45MDA3IDI3LjU2NjNDMjYuMzY3NSAyNy4xNzg1IDI1LjY5ODkgMjYuODI1NyAyNSAyNi42MzkxVjI0LjVaTTI2LjQ5MjkgMzBDMjYuNDc5NyAyOS45NjcgMjYuNDQ1NyAyOS44OTY0IDI2LjM2NDEgMjkuNzg3NUMyNi4yMjU5IDI5LjYwMzMgMjYuMDA3MSAyOS4zODk0IDI1LjcyNDMgMjkuMTgzN0MyNS4xNDc4IDI4Ljc2NDUgMjQuNDkzNyAyOC41MTE3IDI0LjAzMiAyOC41MDA0QzIzLjQ4NzcgMjguNTQ2NCAyMi44MDUyIDI4LjgyNTIgMjIuMjQ0OSAyOS4yMjdDMjEuOTY1NyAyOS40MjcyIDIxLjc1NTYgMjkuNjMwNyAyMS42MjUyIDI5LjgwMzhDMjEuNTQ5NiAyOS45MDQzIDIxLjUxODQgMjkuOTY5NCAyMS41MDYzIDMwSDI2LjQ5MjlaIiBmaWxsPSIjYjQ1MzA5Ii8+Cjwvc3ZnPgo=", + "created": 1700000000000 + } + } +} \ No newline at end of file diff --git a/knowledge/drafts/pillars-b3.svg b/knowledge/drafts/pillars-b3.svg new file mode 100644 index 0000000..80a9d11 --- /dev/null +++ b/knowledge/drafts/pillars-b3.svg @@ -0,0 +1,2 @@ +Use Caseswhat the project wants builtSample Applicationswhat has been builtillustratesSDKsData Structuresthis patient · Patient ContextObservationExam FindingListImaging ProblemListImaging PersonaFoundation Contextshared, curated knowledgeFinding/diagnosis definitionsfinding models · CDEsAnatomic locationsanchored in RadLexExam typesLOINC/RSNA Playbookcreatereadresolveauthoran application can:wrapsmanipulates instancesfindingdiagnosislocationexam typewoven together at every:attaches to · authors & maintains \ No newline at end of file diff --git a/knowledge/drafts/pillars-c.excalidraw b/knowledge/drafts/pillars-c.excalidraw new file mode 100644 index 0000000..87609e1 --- /dev/null +++ b/knowledge/drafts/pillars-c.excalidraw @@ -0,0 +1,4731 @@ +{ + "type": "excalidraw", + "version": 2, + "source": "oidm-knowledge/tools/diagrams", + "elements": [ + { + "type": "rectangle", + "id": "band53", + "x": 0, + "y": 441.05, + "width": 880, + "height": 221.49999999999994, + "strokeColor": "#b45309", + "backgroundColor": "#fef3c7", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1105, + "version": 1, + "versionNonce": 1106, + "isDeleted": false, + "groupIds": [], + "boundElements": [], + "link": null, + "locked": false, + "roundness": { + "type": 3 + } + }, + { + "type": "rectangle", + "id": "fill58", + "x": -1, + "y": 441.05, + "width": 33, + "height": 32.0, + "strokeColor": "transparent", + "backgroundColor": "#fef3c7", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1115, + "version": 1, + "versionNonce": 1116, + "isDeleted": false, + "groupIds": [], + "boundElements": [], + "link": null, + "locked": false, + "roundness": null + }, + { + "type": "rectangle", + "id": "fill59", + "x": 848, + "y": 441.05, + "width": 33, + "height": 32.0, + "strokeColor": "transparent", + "backgroundColor": "#fef3c7", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1117, + "version": 1, + "versionNonce": 1118, + "isDeleted": false, + "groupIds": [], + "boundElements": [], + "link": null, + "locked": false, + "roundness": null + }, + { + "type": "line", + "id": "ln60", + "x": 0, + "y": 441.05, + "width": 0, + "height": 32.0, + "strokeColor": "#b45309", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1119, + "version": 1, + "versionNonce": 1120, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "points": [ + [ + 0, + 0.0 + ], + [ + 0, + 32.0 + ] + ], + "roundness": null + }, + { + "type": "line", + "id": "ln61", + "x": 880, + "y": 441.05, + "width": 0, + "height": 32.0, + "strokeColor": "#b45309", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1121, + "version": 1, + "versionNonce": 1122, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "points": [ + [ + 0, + 0.0 + ], + [ + 0, + 32.0 + ] + ], + "roundness": null + }, + { + "type": "rectangle", + "id": "band33", + "x": 0, + "y": 187.3, + "width": 880, + "height": 189.75, + "strokeColor": "#0f766e", + "backgroundColor": "#ccfbf1", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1065, + "version": 1, + "versionNonce": 1066, + "isDeleted": false, + "groupIds": [], + "boundElements": [], + "link": null, + "locked": false, + "roundness": { + "type": 3 + } + }, + { + "type": "rectangle", + "id": "fill54", + "x": -1, + "y": 345.05, + "width": 33, + "height": 32.0, + "strokeColor": "transparent", + "backgroundColor": "#ccfbf1", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1107, + "version": 1, + "versionNonce": 1108, + "isDeleted": false, + "groupIds": [], + "boundElements": [], + "link": null, + "locked": false, + "roundness": null + }, + { + "type": "rectangle", + "id": "fill55", + "x": 848, + "y": 345.05, + "width": 33, + "height": 32.0, + "strokeColor": "transparent", + "backgroundColor": "#ccfbf1", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1109, + "version": 1, + "versionNonce": 1110, + "isDeleted": false, + "groupIds": [], + "boundElements": [], + "link": null, + "locked": false, + "roundness": null + }, + { + "type": "line", + "id": "ln56", + "x": 0, + "y": 345.05, + "width": 0, + "height": 32.0, + "strokeColor": "#0f766e", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1111, + "version": 1, + "versionNonce": 1112, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "points": [ + [ + 0, + 0.0 + ], + [ + 0, + 32.0 + ] + ], + "roundness": null + }, + { + "type": "line", + "id": "ln57", + "x": 880, + "y": 345.05, + "width": 0, + "height": 32.0, + "strokeColor": "#0f766e", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1113, + "version": 1, + "versionNonce": 1114, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "points": [ + [ + 0, + 0.0 + ], + [ + 0, + 32.0 + ] + ], + "roundness": null + }, + { + "type": "rectangle", + "id": "band15", + "x": 0, + "y": 91.65, + "width": 880, + "height": 71.65, + "strokeColor": "#6d28d9", + "backgroundColor": "#ede9fe", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1029, + "version": 1, + "versionNonce": 1030, + "isDeleted": false, + "groupIds": [], + "boundElements": [], + "link": null, + "locked": false, + "roundness": { + "type": 3 + } + }, + { + "type": "rectangle", + "id": "panel1", + "x": 0, + "y": 0, + "width": 388.0, + "height": 67.65, + "strokeColor": "#be123c", + "backgroundColor": "#ffe4e6", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1001, + "version": 1, + "versionNonce": 1002, + "isDeleted": false, + "groupIds": [], + "boundElements": [], + "link": null, + "locked": false, + "roundness": { + "type": 3 + } + }, + { + "type": "rectangle", + "id": "panel2", + "x": 492.0, + "y": 0, + "width": 388.0, + "height": 67.65, + "strokeColor": "#15803d", + "backgroundColor": "#dcfce7", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1003, + "version": 1, + "versionNonce": 1004, + "isDeleted": false, + "groupIds": [], + "boundElements": [], + "link": null, + "locked": false, + "roundness": { + "type": 3 + } + }, + { + "type": "image", + "id": "bicon3", + "x": 18, + "y": 12.0, + "width": 28, + "height": 28, + "strokeColor": "transparent", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1005, + "version": 1, + "versionNonce": 1006, + "isDeleted": false, + "groupIds": [], + "boundElements": [], + "link": null, + "locked": false, + "fileId": "img_bicon3", + "status": "saved", + "scale": [ + 1, + 1 + ], + "roundness": null, + "crop": null + }, + { + "type": "text", + "id": "btitle4", + "x": 58, + "y": 14, + "width": 93.96, + "height": 22.5, + "strokeColor": "#881337", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1007, + "version": 1, + "versionNonce": 1008, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "Use Cases", + "originalText": "Use Cases", + "fontSize": 18, + "fontFamily": 2, + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 + }, + { + "type": "text", + "id": "bsub5", + "x": 58, + "y": 37.400000000000006, + "width": 211.11999999999998, + "height": 16.25, + "strokeColor": "#be123c", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1009, + "version": 1, + "versionNonce": 1010, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "what the project wants built", + "originalText": "what the project wants built", + "fontSize": 13, + "fontFamily": 2, + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 + }, + { + "type": "image", + "id": "bicon6", + "x": 510.0, + "y": 12.0, + "width": 28, + "height": 28, + "strokeColor": "transparent", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1011, + "version": 1, + "versionNonce": 1012, + "isDeleted": false, + "groupIds": [], + "boundElements": [], + "link": null, + "locked": false, + "fileId": "img_bicon6", + "status": "saved", + "scale": [ + 1, + 1 + ], + "roundness": null, + "crop": null + }, + { + "type": "text", + "id": "btitle7", + "x": 550.0, + "y": 14, + "width": 198.35999999999999, + "height": 22.5, + "strokeColor": "#14532d", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1013, + "version": 1, + "versionNonce": 1014, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "Sample Applications", + "originalText": "Sample Applications", + "fontSize": 18, + "fontFamily": 2, + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 + }, + { + "type": "text", + "id": "bsub8", + "x": 550.0, + "y": 37.400000000000006, + "width": 143.26, + "height": 16.25, + "strokeColor": "#15803d", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1015, + "version": 1, + "versionNonce": 1016, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "what has been built", + "originalText": "what has been built", + "fontSize": 13, + "fontFamily": 2, + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 + }, + { + "type": "line", + "id": "conn9", + "x": 390.0, + "y": 33.825, + "width": 100.0, + "height": 0, + "strokeColor": "#64748b", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1017, + "version": 1, + "versionNonce": 1018, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "points": [ + [ + 0, + 0 + ], + [ + 100.0, + 0 + ] + ] + }, + { + "type": "rectangle", + "id": "chip10", + "x": 389.53, + "y": 4.575000000000003, + "width": 100.94, + "height": 22.25, + "strokeColor": "transparent", + "backgroundColor": "#ffffff", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1019, + "version": 1, + "versionNonce": 1020, + "isDeleted": false, + "groupIds": [], + "boundElements": [], + "link": null, + "locked": false, + "roundness": { + "type": 3 + } + }, + { + "type": "text", + "id": "chipt11", + "x": 398.53, + "y": 7.575000000000003, + "width": 82.94, + "height": 16.25, + "strokeColor": "#64748b", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1021, + "version": 1, + "versionNonce": 1022, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "illustrates", + "originalText": "illustrates", + "fontSize": 13, + "fontFamily": 2, + "textAlign": "center", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 + }, + { + "type": "image", + "id": "bicon12", + "x": 18, + "y": 105.65, + "width": 28, + "height": 28, + "strokeColor": "transparent", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1023, + "version": 1, + "versionNonce": 1024, + "isDeleted": false, + "groupIds": [], + "boundElements": [], + "link": null, + "locked": false, + "fileId": "img_bicon12", + "status": "saved", + "scale": [ + 1, + 1 + ], + "roundness": null, + "crop": null + }, + { + "type": "text", + "id": "btitle13", + "x": 58, + "y": 107.65, + "width": 41.76, + "height": 22.5, + "strokeColor": "#4c1d95", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1025, + "version": 1, + "versionNonce": 1026, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "SDKs", + "originalText": "SDKs", + "fontSize": 18, + "fontFamily": 2, + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 + }, + { + "type": "text", + "id": "bsub14", + "x": 58, + "y": 131.05, + "width": 520.26, + "height": 16.25, + "strokeColor": "#6d28d9", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1027, + "version": 1, + "versionNonce": 1028, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "wrap the structures \u00b7 attach the shared knowledge \u00b7 support authoring", + "originalText": "wrap the structures \u00b7 attach the shared knowledge \u00b7 support authoring", + "fontSize": 13, + "fontFamily": 2, + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 + }, + { + "type": "image", + "id": "bicon16", + "x": 18, + "y": 203.3, + "width": 28, + "height": 28, + "strokeColor": "transparent", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1031, + "version": 1, + "versionNonce": 1032, + "isDeleted": false, + "groupIds": [], + "boundElements": [], + "link": null, + "locked": false, + "fileId": "img_bicon16", + "status": "saved", + "scale": [ + 1, + 1 + ], + "roundness": null, + "crop": null + }, + { + "type": "text", + "id": "btitle17", + "x": 58, + "y": 205.3, + "width": 174.0, + "height": 25.0, + "strokeColor": "#134e4a", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1033, + "version": 1, + "versionNonce": 1034, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "Data Structures", + "originalText": "Data Structures", + "fontSize": 20, + "fontFamily": 2, + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 + }, + { + "type": "text", + "id": "bsub18", + "x": 58, + "y": 231.3, + "width": 226.2, + "height": 16.25, + "strokeColor": "#0f766e", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1035, + "version": 1, + "versionNonce": 1036, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "this patient \u00b7 Patient Context", + "originalText": "this patient \u00b7 Patient Context", + "fontSize": 13, + "fontFamily": 2, + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 + }, + { + "type": "rectangle", + "id": "blk19", + "x": 20.0, + "y": 261.55, + "width": 195.0, + "height": 95.5, + "strokeColor": "#0f766e", + "backgroundColor": "#99f6e4", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1037, + "version": 1, + "versionNonce": 1038, + "isDeleted": false, + "groupIds": [], + "boundElements": [], + "link": null, + "locked": false, + "roundness": { + "type": 3 + } + }, + { + "type": "image", + "id": "blki20", + "x": 103.5, + "y": 281.925, + "width": 28, + "height": 28, + "strokeColor": "transparent", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1039, + "version": 1, + "versionNonce": 1040, + "isDeleted": false, + "groupIds": [], + "boundElements": [], + "link": null, + "locked": false, + "fileId": "img_blki20", + "status": "saved", + "scale": [ + 1, + 1 + ], + "roundness": null, + "crop": null + }, + { + "type": "text", + "id": "blkt21", + "x": 26.0, + "y": 315.925, + "width": 183.0, + "height": 18.75, + "strokeColor": "#134e4a", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1041, + "version": 1, + "versionNonce": 1042, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "Observation", + "originalText": "Observation", + "fontSize": 15, + "fontFamily": 2, + "textAlign": "center", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 + }, + { + "type": "rectangle", + "id": "blk22", + "x": 235.0, + "y": 261.55, + "width": 195.0, + "height": 95.5, + "strokeColor": "#0f766e", + "backgroundColor": "#99f6e4", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1043, + "version": 1, + "versionNonce": 1044, + "isDeleted": false, + "groupIds": [], + "boundElements": [], + "link": null, + "locked": false, + "roundness": { + "type": 3 + } + }, + { + "type": "image", + "id": "blki23", + "x": 318.5, + "y": 272.55, + "width": 28, + "height": 28, + "strokeColor": "transparent", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1045, + "version": 1, + "versionNonce": 1046, + "isDeleted": false, + "groupIds": [], + "boundElements": [], + "link": null, + "locked": false, + "fileId": "img_blki23", + "status": "saved", + "scale": [ + 1, + 1 + ], + "roundness": null, + "crop": null + }, + { + "type": "text", + "id": "blkt24", + "x": 241.0, + "y": 306.55, + "width": 183.0, + "height": 18.75, + "strokeColor": "#134e4a", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1047, + "version": 1, + "versionNonce": 1048, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "Exam Finding", + "originalText": "Exam Finding", + "fontSize": 15, + "fontFamily": 2, + "textAlign": "center", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 + }, + { + "type": "text", + "id": "blkt25", + "x": 241.0, + "y": 325.3, + "width": 183.0, + "height": 18.75, + "strokeColor": "#134e4a", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1049, + "version": 1, + "versionNonce": 1050, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "List", + "originalText": "List", + "fontSize": 15, + "fontFamily": 2, + "textAlign": "center", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 + }, + { + "type": "rectangle", + "id": "blk26", + "x": 450.0, + "y": 261.55, + "width": 195.0, + "height": 95.5, + "strokeColor": "#0f766e", + "backgroundColor": "#99f6e4", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1051, + "version": 1, + "versionNonce": 1052, + "isDeleted": false, + "groupIds": [], + "boundElements": [], + "link": null, + "locked": false, + "roundness": { + "type": 3 + } + }, + { + "type": "image", + "id": "blki27", + "x": 533.5, + "y": 272.55, + "width": 28, + "height": 28, + "strokeColor": "transparent", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1053, + "version": 1, + "versionNonce": 1054, + "isDeleted": false, + "groupIds": [], + "boundElements": [], + "link": null, + "locked": false, + "fileId": "img_blki27", + "status": "saved", + "scale": [ + 1, + 1 + ], + "roundness": null, + "crop": null + }, + { + "type": "text", + "id": "blkt28", + "x": 456.0, + "y": 306.55, + "width": 183.0, + "height": 18.75, + "strokeColor": "#134e4a", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1055, + "version": 1, + "versionNonce": 1056, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "Imaging Problem", + "originalText": "Imaging Problem", + "fontSize": 15, + "fontFamily": 2, + "textAlign": "center", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 + }, + { + "type": "text", + "id": "blkt29", + "x": 456.0, + "y": 325.3, + "width": 183.0, + "height": 18.75, + "strokeColor": "#134e4a", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1057, + "version": 1, + "versionNonce": 1058, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "List", + "originalText": "List", + "fontSize": 15, + "fontFamily": 2, + "textAlign": "center", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 + }, + { + "type": "rectangle", + "id": "blk30", + "x": 665.0, + "y": 261.55, + "width": 195.0, + "height": 95.5, + "strokeColor": "#0f766e", + "backgroundColor": "#99f6e4", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1059, + "version": 1, + "versionNonce": 1060, + "isDeleted": false, + "groupIds": [], + "boundElements": [], + "link": null, + "locked": false, + "roundness": { + "type": 3 + } + }, + { + "type": "image", + "id": "blki31", + "x": 746.5, + "y": 279.925, + "width": 32, + "height": 32, + "strokeColor": "transparent", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1061, + "version": 1, + "versionNonce": 1062, + "isDeleted": false, + "groupIds": [], + "boundElements": [], + "link": null, + "locked": false, + "fileId": "img_blki31", + "status": "saved", + "scale": [ + 1, + 1 + ], + "roundness": null, + "crop": null + }, + { + "type": "text", + "id": "blkt32", + "x": 671.0, + "y": 315.925, + "width": 183.0, + "height": 18.75, + "strokeColor": "#134e4a", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1063, + "version": 1, + "versionNonce": 1064, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "Imaging Persona", + "originalText": "Imaging Persona", + "fontSize": 15, + "fontFamily": 2, + "textAlign": "center", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 + }, + { + "type": "image", + "id": "bicon34", + "x": 18, + "y": 459.05, + "width": 28, + "height": 28, + "strokeColor": "transparent", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1067, + "version": 1, + "versionNonce": 1068, + "isDeleted": false, + "groupIds": [], + "boundElements": [], + "link": null, + "locked": false, + "fileId": "img_bicon34", + "status": "saved", + "scale": [ + 1, + 1 + ], + "roundness": null, + "crop": null + }, + { + "type": "text", + "id": "btitle35", + "x": 58, + "y": 461.05, + "width": 208.79999999999998, + "height": 25.0, + "strokeColor": "#78350f", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1069, + "version": 1, + "versionNonce": 1070, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "Foundation Context", + "originalText": "Foundation Context", + "fontSize": 20, + "fontFamily": 2, + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 + }, + { + "type": "text", + "id": "bsub36", + "x": 58, + "y": 487.05, + "width": 188.5, + "height": 16.25, + "strokeColor": "#b45309", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1071, + "version": 1, + "versionNonce": 1072, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "shared, curated knowledge", + "originalText": "shared, curated knowledge", + "fontSize": 13, + "fontFamily": 2, + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 + }, + { + "type": "rectangle", + "id": "chip37", + "x": 381.99, + "y": 515.3, + "width": 116.02, + "height": 22.25, + "strokeColor": "#b45309", + "backgroundColor": "#fef3c7", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1073, + "version": 1, + "versionNonce": 1074, + "isDeleted": false, + "groupIds": [], + "boundElements": [], + "link": null, + "locked": false, + "roundness": { + "type": 3 + } + }, + { + "type": "text", + "id": "chipt38", + "x": 390.99, + "y": 518.3, + "width": 98.02, + "height": 16.25, + "strokeColor": "#78350f", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1075, + "version": 1, + "versionNonce": 1076, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "relationships", + "originalText": "relationships", + "fontSize": 13, + "fontFamily": 2, + "textAlign": "center", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 + }, + { + "type": "rectangle", + "id": "blk39", + "x": 20.0, + "y": 547.55, + "width": 237.33333333333334, + "height": 95.0, + "strokeColor": "#b45309", + "backgroundColor": "#fde68a", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1077, + "version": 1, + "versionNonce": 1078, + "isDeleted": false, + "groupIds": [], + "boundElements": [], + "link": null, + "locked": false, + "roundness": { + "type": 3 + } + }, + { + "type": "image", + "id": "blki40", + "x": 124.66666666666669, + "y": 558.55, + "width": 28, + "height": 28, + "strokeColor": "transparent", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1079, + "version": 1, + "versionNonce": 1080, + "isDeleted": false, + "groupIds": [], + "boundElements": [], + "link": null, + "locked": false, + "fileId": "img_blki40", + "status": "saved", + "scale": [ + 1, + 1 + ], + "roundness": null, + "crop": null + }, + { + "type": "text", + "id": "blkt41", + "x": 26.0, + "y": 592.55, + "width": 225.33333333333334, + "height": 18.75, + "strokeColor": "#78350f", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1081, + "version": 1, + "versionNonce": 1082, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "Finding/diagnosis definitions", + "originalText": "Finding/diagnosis definitions", + "fontSize": 15, + "fontFamily": 2, + "textAlign": "center", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 + }, + { + "type": "text", + "id": "blkd42", + "x": 26.0, + "y": 613.3, + "width": 225.33333333333334, + "height": 16.25, + "strokeColor": "#b45309", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1083, + "version": 1, + "versionNonce": 1084, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "finding models \u00b7 CDEs", + "originalText": "finding models \u00b7 CDEs", + "fontSize": 13, + "fontFamily": 2, + "textAlign": "center", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 + }, + { + "type": "rectangle", + "id": "blk43", + "x": 321.33333333333337, + "y": 547.55, + "width": 237.33333333333334, + "height": 95.0, + "strokeColor": "#b45309", + "backgroundColor": "#fde68a", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1085, + "version": 1, + "versionNonce": 1086, + "isDeleted": false, + "groupIds": [], + "boundElements": [], + "link": null, + "locked": false, + "roundness": { + "type": 3 + } + }, + { + "type": "image", + "id": "blki44", + "x": 424.00000000000006, + "y": 556.55, + "width": 32, + "height": 32, + "strokeColor": "transparent", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1087, + "version": 1, + "versionNonce": 1088, + "isDeleted": false, + "groupIds": [], + "boundElements": [], + "link": null, + "locked": false, + "fileId": "img_blki44", + "status": "saved", + "scale": [ + 1, + 1 + ], + "roundness": null, + "crop": null + }, + { + "type": "text", + "id": "blkt45", + "x": 327.33333333333337, + "y": 592.55, + "width": 225.33333333333334, + "height": 18.75, + "strokeColor": "#78350f", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1089, + "version": 1, + "versionNonce": 1090, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "Anatomic locations", + "originalText": "Anatomic locations", + "fontSize": 15, + "fontFamily": 2, + "textAlign": "center", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 + }, + { + "type": "text", + "id": "blkd46", + "x": 327.33333333333337, + "y": 613.3, + "width": 225.33333333333334, + "height": 16.25, + "strokeColor": "#b45309", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1091, + "version": 1, + "versionNonce": 1092, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "anchored in RadLex", + "originalText": "anchored in RadLex", + "fontSize": 13, + "fontFamily": 2, + "textAlign": "center", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 + }, + { + "type": "rectangle", + "id": "blk47", + "x": 622.6666666666667, + "y": 547.55, + "width": 237.33333333333334, + "height": 95.0, + "strokeColor": "#b45309", + "backgroundColor": "#fde68a", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1093, + "version": 1, + "versionNonce": 1094, + "isDeleted": false, + "groupIds": [], + "boundElements": [], + "link": null, + "locked": false, + "roundness": { + "type": 3 + } + }, + { + "type": "image", + "id": "blki48", + "x": 725.3333333333334, + "y": 556.55, + "width": 32, + "height": 32, + "strokeColor": "transparent", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1095, + "version": 1, + "versionNonce": 1096, + "isDeleted": false, + "groupIds": [], + "boundElements": [], + "link": null, + "locked": false, + "fileId": "img_blki48", + "status": "saved", + "scale": [ + 1, + 1 + ], + "roundness": null, + "crop": null + }, + { + "type": "text", + "id": "blkt49", + "x": 628.6666666666667, + "y": 592.55, + "width": 225.33333333333334, + "height": 18.75, + "strokeColor": "#78350f", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1097, + "version": 1, + "versionNonce": 1098, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "Exam types", + "originalText": "Exam types", + "fontSize": 15, + "fontFamily": 2, + "textAlign": "center", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 + }, + { + "type": "text", + "id": "blkd50", + "x": 628.6666666666667, + "y": 613.3, + "width": 225.33333333333334, + "height": 16.25, + "strokeColor": "#b45309", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1099, + "version": 1, + "versionNonce": 1100, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "LOINC/RSNA Playbook", + "originalText": "LOINC/RSNA Playbook", + "fontSize": 13, + "fontFamily": 2, + "textAlign": "center", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 + }, + { + "type": "arrow", + "id": "conn51", + "x": 263.33333333333337, + "y": 595.05, + "width": 52.0, + "height": 0, + "strokeColor": "#b45309", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1101, + "version": 1, + "versionNonce": 1102, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "points": [ + [ + 0, + 0 + ], + [ + 52.0, + 0 + ] + ], + "startArrowhead": "arrow", + "endArrowhead": "arrow" + }, + { + "type": "arrow", + "id": "conn52", + "x": 564.6666666666667, + "y": 595.05, + "width": 52.0, + "height": 0, + "strokeColor": "#b45309", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1103, + "version": 1, + "versionNonce": 1104, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "points": [ + [ + 0, + 0 + ], + [ + 52.0, + 0 + ] + ], + "startArrowhead": "arrow", + "endArrowhead": "arrow" + }, + { + "type": "rectangle", + "id": "fill62", + "x": 0, + "y": 377.05, + "width": 880, + "height": 64.0, + "strokeColor": "transparent", + "backgroundColor": "#ffffff", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1123, + "version": 1, + "versionNonce": 1124, + "isDeleted": false, + "groupIds": [], + "boundElements": [], + "link": null, + "locked": false, + "roundness": null + }, + { + "type": "line", + "id": "ln63", + "x": 864.0, + "y": 377.05, + "width": 16.0, + "height": 16.0, + "strokeColor": "#b45309", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 25, + "angle": 0, + "seed": 1125, + "version": 1, + "versionNonce": 1126, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "points": [ + [ + 0.0, + 0.0 + ], + [ + 16.0, + 16.0 + ] + ], + "roundness": null + }, + { + "type": "line", + "id": "ln64", + "x": 848.0, + "y": 377.05, + "width": 32.0, + "height": 32.0, + "strokeColor": "#0f766e", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 25, + "angle": 0, + "seed": 1127, + "version": 1, + "versionNonce": 1128, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "points": [ + [ + 0.0, + 0.0 + ], + [ + 32.0, + 32.0 + ] + ], + "roundness": null + }, + { + "type": "line", + "id": "ln65", + "x": 832.0, + "y": 377.05, + "width": 48.0, + "height": 48.0, + "strokeColor": "#b45309", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 25, + "angle": 0, + "seed": 1129, + "version": 1, + "versionNonce": 1130, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "points": [ + [ + 0.0, + 0.0 + ], + [ + 48.0, + 48.0 + ] + ], + "roundness": null + }, + { + "type": "line", + "id": "ln66", + "x": 816.0, + "y": 377.05, + "width": 64.0, + "height": 64.0, + "strokeColor": "#0f766e", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 25, + "angle": 0, + "seed": 1131, + "version": 1, + "versionNonce": 1132, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "points": [ + [ + 0.0, + 0.0 + ], + [ + 64.0, + 64.0 + ] + ], + "roundness": null + }, + { + "type": "line", + "id": "ln67", + "x": 800.0, + "y": 377.05, + "width": 64.0, + "height": 64.0, + "strokeColor": "#b45309", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 25, + "angle": 0, + "seed": 1133, + "version": 1, + "versionNonce": 1134, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "points": [ + [ + 0.0, + 0.0 + ], + [ + 64.0, + 64.0 + ] + ], + "roundness": null + }, + { + "type": "line", + "id": "ln68", + "x": 784.0, + "y": 377.05, + "width": 64.0, + "height": 64.0, + "strokeColor": "#0f766e", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 25, + "angle": 0, + "seed": 1135, + "version": 1, + "versionNonce": 1136, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "points": [ + [ + 0.0, + 0.0 + ], + [ + 64.0, + 64.0 + ] + ], + "roundness": null + }, + { + "type": "line", + "id": "ln69", + "x": 768.0, + "y": 377.05, + "width": 64.0, + "height": 64.0, + "strokeColor": "#b45309", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 25, + "angle": 0, + "seed": 1137, + "version": 1, + "versionNonce": 1138, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "points": [ + [ + 0.0, + 0.0 + ], + [ + 64.0, + 64.0 + ] + ], + "roundness": null + }, + { + "type": "line", + "id": "ln70", + "x": 752.0, + "y": 377.05, + "width": 64.0, + "height": 64.0, + "strokeColor": "#0f766e", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 25, + "angle": 0, + "seed": 1139, + "version": 1, + "versionNonce": 1140, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "points": [ + [ + 0.0, + 0.0 + ], + [ + 64.0, + 64.0 + ] + ], + "roundness": null + }, + { + "type": "line", + "id": "ln71", + "x": 736.0, + "y": 377.05, + "width": 64.0, + "height": 64.0, + "strokeColor": "#b45309", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 25, + "angle": 0, + "seed": 1141, + "version": 1, + "versionNonce": 1142, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "points": [ + [ + 0.0, + 0.0 + ], + [ + 64.0, + 64.0 + ] + ], + "roundness": null + }, + { + "type": "line", + "id": "ln72", + "x": 720.0, + "y": 377.05, + "width": 64.0, + "height": 64.0, + "strokeColor": "#0f766e", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 25, + "angle": 0, + "seed": 1143, + "version": 1, + "versionNonce": 1144, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "points": [ + [ + 0.0, + 0.0 + ], + [ + 64.0, + 64.0 + ] + ], + "roundness": null + }, + { + "type": "line", + "id": "ln73", + "x": 704.0, + "y": 377.05, + "width": 64.0, + "height": 64.0, + "strokeColor": "#b45309", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 25, + "angle": 0, + "seed": 1145, + "version": 1, + "versionNonce": 1146, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "points": [ + [ + 0.0, + 0.0 + ], + [ + 64.0, + 64.0 + ] + ], + "roundness": null + }, + { + "type": "line", + "id": "ln74", + "x": 688.0, + "y": 377.05, + "width": 64.0, + "height": 64.0, + "strokeColor": "#0f766e", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 25, + "angle": 0, + "seed": 1147, + "version": 1, + "versionNonce": 1148, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "points": [ + [ + 0.0, + 0.0 + ], + [ + 64.0, + 64.0 + ] + ], + "roundness": null + }, + { + "type": "line", + "id": "ln75", + "x": 672.0, + "y": 377.05, + "width": 64.0, + "height": 64.0, + "strokeColor": "#b45309", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 25, + "angle": 0, + "seed": 1149, + "version": 1, + "versionNonce": 1150, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "points": [ + [ + 0.0, + 0.0 + ], + [ + 64.0, + 64.0 + ] + ], + "roundness": null + }, + { + "type": "line", + "id": "ln76", + "x": 656.0, + "y": 377.05, + "width": 64.0, + "height": 64.0, + "strokeColor": "#0f766e", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 25, + "angle": 0, + "seed": 1151, + "version": 1, + "versionNonce": 1152, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "points": [ + [ + 0.0, + 0.0 + ], + [ + 64.0, + 64.0 + ] + ], + "roundness": null + }, + { + "type": "line", + "id": "ln77", + "x": 640.0, + "y": 377.05, + "width": 64.0, + "height": 64.0, + "strokeColor": "#b45309", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 25, + "angle": 0, + "seed": 1153, + "version": 1, + "versionNonce": 1154, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "points": [ + [ + 0.0, + 0.0 + ], + [ + 64.0, + 64.0 + ] + ], + "roundness": null + }, + { + "type": "line", + "id": "ln78", + "x": 624.0, + "y": 377.05, + "width": 64.0, + "height": 64.0, + "strokeColor": "#0f766e", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 25, + "angle": 0, + "seed": 1155, + "version": 1, + "versionNonce": 1156, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "points": [ + [ + 0.0, + 0.0 + ], + [ + 64.0, + 64.0 + ] + ], + "roundness": null + }, + { + "type": "line", + "id": "ln79", + "x": 608.0, + "y": 377.05, + "width": 64.0, + "height": 64.0, + "strokeColor": "#b45309", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 25, + "angle": 0, + "seed": 1157, + "version": 1, + "versionNonce": 1158, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "points": [ + [ + 0.0, + 0.0 + ], + [ + 64.0, + 64.0 + ] + ], + "roundness": null + }, + { + "type": "line", + "id": "ln80", + "x": 592.0, + "y": 377.05, + "width": 64.0, + "height": 64.0, + "strokeColor": "#0f766e", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 25, + "angle": 0, + "seed": 1159, + "version": 1, + "versionNonce": 1160, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "points": [ + [ + 0.0, + 0.0 + ], + [ + 64.0, + 64.0 + ] + ], + "roundness": null + }, + { + "type": "line", + "id": "ln81", + "x": 576.0, + "y": 377.05, + "width": 64.0, + "height": 64.0, + "strokeColor": "#b45309", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 25, + "angle": 0, + "seed": 1161, + "version": 1, + "versionNonce": 1162, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "points": [ + [ + 0.0, + 0.0 + ], + [ + 64.0, + 64.0 + ] + ], + "roundness": null + }, + { + "type": "line", + "id": "ln82", + "x": 560.0, + "y": 377.05, + "width": 64.0, + "height": 64.0, + "strokeColor": "#0f766e", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 25, + "angle": 0, + "seed": 1163, + "version": 1, + "versionNonce": 1164, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "points": [ + [ + 0.0, + 0.0 + ], + [ + 64.0, + 64.0 + ] + ], + "roundness": null + }, + { + "type": "line", + "id": "ln83", + "x": 544.0, + "y": 377.05, + "width": 64.0, + "height": 64.0, + "strokeColor": "#b45309", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 25, + "angle": 0, + "seed": 1165, + "version": 1, + "versionNonce": 1166, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "points": [ + [ + 0.0, + 0.0 + ], + [ + 64.0, + 64.0 + ] + ], + "roundness": null + }, + { + "type": "line", + "id": "ln84", + "x": 528.0, + "y": 377.05, + "width": 64.0, + "height": 64.0, + "strokeColor": "#0f766e", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 25, + "angle": 0, + "seed": 1167, + "version": 1, + "versionNonce": 1168, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "points": [ + [ + 0.0, + 0.0 + ], + [ + 64.0, + 64.0 + ] + ], + "roundness": null + }, + { + "type": "line", + "id": "ln85", + "x": 512.0, + "y": 377.05, + "width": 64.0, + "height": 64.0, + "strokeColor": "#b45309", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 25, + "angle": 0, + "seed": 1169, + "version": 1, + "versionNonce": 1170, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "points": [ + [ + 0.0, + 0.0 + ], + [ + 64.0, + 64.0 + ] + ], + "roundness": null + }, + { + "type": "line", + "id": "ln86", + "x": 496.0, + "y": 377.05, + "width": 64.0, + "height": 64.0, + "strokeColor": "#0f766e", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 25, + "angle": 0, + "seed": 1171, + "version": 1, + "versionNonce": 1172, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "points": [ + [ + 0.0, + 0.0 + ], + [ + 64.0, + 64.0 + ] + ], + "roundness": null + }, + { + "type": "line", + "id": "ln87", + "x": 480.0, + "y": 377.05, + "width": 64.0, + "height": 64.0, + "strokeColor": "#b45309", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 25, + "angle": 0, + "seed": 1173, + "version": 1, + "versionNonce": 1174, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "points": [ + [ + 0.0, + 0.0 + ], + [ + 64.0, + 64.0 + ] + ], + "roundness": null + }, + { + "type": "line", + "id": "ln88", + "x": 464.0, + "y": 377.05, + "width": 64.0, + "height": 64.0, + "strokeColor": "#0f766e", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 25, + "angle": 0, + "seed": 1175, + "version": 1, + "versionNonce": 1176, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "points": [ + [ + 0.0, + 0.0 + ], + [ + 64.0, + 64.0 + ] + ], + "roundness": null + }, + { + "type": "line", + "id": "ln89", + "x": 448.0, + "y": 377.05, + "width": 64.0, + "height": 64.0, + "strokeColor": "#b45309", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 25, + "angle": 0, + "seed": 1177, + "version": 1, + "versionNonce": 1178, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "points": [ + [ + 0.0, + 0.0 + ], + [ + 64.0, + 64.0 + ] + ], + "roundness": null + }, + { + "type": "line", + "id": "ln90", + "x": 432.0, + "y": 377.05, + "width": 64.0, + "height": 64.0, + "strokeColor": "#0f766e", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 25, + "angle": 0, + "seed": 1179, + "version": 1, + "versionNonce": 1180, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "points": [ + [ + 0.0, + 0.0 + ], + [ + 64.0, + 64.0 + ] + ], + "roundness": null + }, + { + "type": "line", + "id": "ln91", + "x": 416.0, + "y": 377.05, + "width": 64.0, + "height": 64.0, + "strokeColor": "#b45309", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 25, + "angle": 0, + "seed": 1181, + "version": 1, + "versionNonce": 1182, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "points": [ + [ + 0.0, + 0.0 + ], + [ + 64.0, + 64.0 + ] + ], + "roundness": null + }, + { + "type": "line", + "id": "ln92", + "x": 400.0, + "y": 377.05, + "width": 64.0, + "height": 64.0, + "strokeColor": "#0f766e", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 25, + "angle": 0, + "seed": 1183, + "version": 1, + "versionNonce": 1184, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "points": [ + [ + 0.0, + 0.0 + ], + [ + 64.0, + 64.0 + ] + ], + "roundness": null + }, + { + "type": "line", + "id": "ln93", + "x": 384.0, + "y": 377.05, + "width": 64.0, + "height": 64.0, + "strokeColor": "#b45309", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 25, + "angle": 0, + "seed": 1185, + "version": 1, + "versionNonce": 1186, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "points": [ + [ + 0.0, + 0.0 + ], + [ + 64.0, + 64.0 + ] + ], + "roundness": null + }, + { + "type": "line", + "id": "ln94", + "x": 368.0, + "y": 377.05, + "width": 64.0, + "height": 64.0, + "strokeColor": "#0f766e", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 25, + "angle": 0, + "seed": 1187, + "version": 1, + "versionNonce": 1188, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "points": [ + [ + 0.0, + 0.0 + ], + [ + 64.0, + 64.0 + ] + ], + "roundness": null + }, + { + "type": "line", + "id": "ln95", + "x": 352.0, + "y": 377.05, + "width": 64.0, + "height": 64.0, + "strokeColor": "#b45309", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 25, + "angle": 0, + "seed": 1189, + "version": 1, + "versionNonce": 1190, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "points": [ + [ + 0.0, + 0.0 + ], + [ + 64.0, + 64.0 + ] + ], + "roundness": null + }, + { + "type": "line", + "id": "ln96", + "x": 336.0, + "y": 377.05, + "width": 64.0, + "height": 64.0, + "strokeColor": "#0f766e", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 25, + "angle": 0, + "seed": 1191, + "version": 1, + "versionNonce": 1192, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "points": [ + [ + 0.0, + 0.0 + ], + [ + 64.0, + 64.0 + ] + ], + "roundness": null + }, + { + "type": "line", + "id": "ln97", + "x": 320.0, + "y": 377.05, + "width": 64.0, + "height": 64.0, + "strokeColor": "#b45309", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 25, + "angle": 0, + "seed": 1193, + "version": 1, + "versionNonce": 1194, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "points": [ + [ + 0.0, + 0.0 + ], + [ + 64.0, + 64.0 + ] + ], + "roundness": null + }, + { + "type": "line", + "id": "ln98", + "x": 304.0, + "y": 377.05, + "width": 64.0, + "height": 64.0, + "strokeColor": "#0f766e", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 25, + "angle": 0, + "seed": 1195, + "version": 1, + "versionNonce": 1196, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "points": [ + [ + 0.0, + 0.0 + ], + [ + 64.0, + 64.0 + ] + ], + "roundness": null + }, + { + "type": "line", + "id": "ln99", + "x": 288.0, + "y": 377.05, + "width": 64.0, + "height": 64.0, + "strokeColor": "#b45309", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 25, + "angle": 0, + "seed": 1197, + "version": 1, + "versionNonce": 1198, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "points": [ + [ + 0.0, + 0.0 + ], + [ + 64.0, + 64.0 + ] + ], + "roundness": null + }, + { + "type": "line", + "id": "ln100", + "x": 272.0, + "y": 377.05, + "width": 64.0, + "height": 64.0, + "strokeColor": "#0f766e", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 25, + "angle": 0, + "seed": 1199, + "version": 1, + "versionNonce": 1200, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "points": [ + [ + 0.0, + 0.0 + ], + [ + 64.0, + 64.0 + ] + ], + "roundness": null + }, + { + "type": "line", + "id": "ln101", + "x": 256.0, + "y": 377.05, + "width": 64.0, + "height": 64.0, + "strokeColor": "#b45309", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 25, + "angle": 0, + "seed": 1201, + "version": 1, + "versionNonce": 1202, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "points": [ + [ + 0.0, + 0.0 + ], + [ + 64.0, + 64.0 + ] + ], + "roundness": null + }, + { + "type": "line", + "id": "ln102", + "x": 240.0, + "y": 377.05, + "width": 64.0, + "height": 64.0, + "strokeColor": "#0f766e", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 25, + "angle": 0, + "seed": 1203, + "version": 1, + "versionNonce": 1204, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "points": [ + [ + 0.0, + 0.0 + ], + [ + 64.0, + 64.0 + ] + ], + "roundness": null + }, + { + "type": "line", + "id": "ln103", + "x": 224.0, + "y": 377.05, + "width": 64.0, + "height": 64.0, + "strokeColor": "#b45309", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 25, + "angle": 0, + "seed": 1205, + "version": 1, + "versionNonce": 1206, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "points": [ + [ + 0.0, + 0.0 + ], + [ + 64.0, + 64.0 + ] + ], + "roundness": null + }, + { + "type": "line", + "id": "ln104", + "x": 208.0, + "y": 377.05, + "width": 64.0, + "height": 64.0, + "strokeColor": "#0f766e", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 25, + "angle": 0, + "seed": 1207, + "version": 1, + "versionNonce": 1208, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "points": [ + [ + 0.0, + 0.0 + ], + [ + 64.0, + 64.0 + ] + ], + "roundness": null + }, + { + "type": "line", + "id": "ln105", + "x": 192.0, + "y": 377.05, + "width": 64.0, + "height": 64.0, + "strokeColor": "#b45309", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 25, + "angle": 0, + "seed": 1209, + "version": 1, + "versionNonce": 1210, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "points": [ + [ + 0.0, + 0.0 + ], + [ + 64.0, + 64.0 + ] + ], + "roundness": null + }, + { + "type": "line", + "id": "ln106", + "x": 176.0, + "y": 377.05, + "width": 64.0, + "height": 64.0, + "strokeColor": "#0f766e", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 25, + "angle": 0, + "seed": 1211, + "version": 1, + "versionNonce": 1212, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "points": [ + [ + 0.0, + 0.0 + ], + [ + 64.0, + 64.0 + ] + ], + "roundness": null + }, + { + "type": "line", + "id": "ln107", + "x": 160.0, + "y": 377.05, + "width": 64.0, + "height": 64.0, + "strokeColor": "#b45309", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 25, + "angle": 0, + "seed": 1213, + "version": 1, + "versionNonce": 1214, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "points": [ + [ + 0.0, + 0.0 + ], + [ + 64.0, + 64.0 + ] + ], + "roundness": null + }, + { + "type": "line", + "id": "ln108", + "x": 144.0, + "y": 377.05, + "width": 64.0, + "height": 64.0, + "strokeColor": "#0f766e", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 25, + "angle": 0, + "seed": 1215, + "version": 1, + "versionNonce": 1216, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "points": [ + [ + 0.0, + 0.0 + ], + [ + 64.0, + 64.0 + ] + ], + "roundness": null + }, + { + "type": "line", + "id": "ln109", + "x": 128.0, + "y": 377.05, + "width": 64.0, + "height": 64.0, + "strokeColor": "#b45309", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 25, + "angle": 0, + "seed": 1217, + "version": 1, + "versionNonce": 1218, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "points": [ + [ + 0.0, + 0.0 + ], + [ + 64.0, + 64.0 + ] + ], + "roundness": null + }, + { + "type": "line", + "id": "ln110", + "x": 112.0, + "y": 377.05, + "width": 64.0, + "height": 64.0, + "strokeColor": "#0f766e", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 25, + "angle": 0, + "seed": 1219, + "version": 1, + "versionNonce": 1220, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "points": [ + [ + 0.0, + 0.0 + ], + [ + 64.0, + 64.0 + ] + ], + "roundness": null + }, + { + "type": "line", + "id": "ln111", + "x": 96.0, + "y": 377.05, + "width": 64.0, + "height": 64.0, + "strokeColor": "#b45309", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 25, + "angle": 0, + "seed": 1221, + "version": 1, + "versionNonce": 1222, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "points": [ + [ + 0.0, + 0.0 + ], + [ + 64.0, + 64.0 + ] + ], + "roundness": null + }, + { + "type": "line", + "id": "ln112", + "x": 80.0, + "y": 377.05, + "width": 64.0, + "height": 64.0, + "strokeColor": "#0f766e", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 25, + "angle": 0, + "seed": 1223, + "version": 1, + "versionNonce": 1224, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "points": [ + [ + 0.0, + 0.0 + ], + [ + 64.0, + 64.0 + ] + ], + "roundness": null + }, + { + "type": "line", + "id": "ln113", + "x": 64.0, + "y": 377.05, + "width": 64.0, + "height": 64.0, + "strokeColor": "#b45309", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 25, + "angle": 0, + "seed": 1225, + "version": 1, + "versionNonce": 1226, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "points": [ + [ + 0.0, + 0.0 + ], + [ + 64.0, + 64.0 + ] + ], + "roundness": null + }, + { + "type": "line", + "id": "ln114", + "x": 48.0, + "y": 377.05, + "width": 64.0, + "height": 64.0, + "strokeColor": "#0f766e", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 25, + "angle": 0, + "seed": 1227, + "version": 1, + "versionNonce": 1228, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "points": [ + [ + 0.0, + 0.0 + ], + [ + 64.0, + 64.0 + ] + ], + "roundness": null + }, + { + "type": "line", + "id": "ln115", + "x": 32.0, + "y": 377.05, + "width": 64.0, + "height": 64.0, + "strokeColor": "#b45309", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 25, + "angle": 0, + "seed": 1229, + "version": 1, + "versionNonce": 1230, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "points": [ + [ + 0.0, + 0.0 + ], + [ + 64.0, + 64.0 + ] + ], + "roundness": null + }, + { + "type": "line", + "id": "ln116", + "x": 16.0, + "y": 377.05, + "width": 64.0, + "height": 64.0, + "strokeColor": "#0f766e", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 25, + "angle": 0, + "seed": 1231, + "version": 1, + "versionNonce": 1232, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "points": [ + [ + 0.0, + 0.0 + ], + [ + 64.0, + 64.0 + ] + ], + "roundness": null + }, + { + "type": "line", + "id": "ln117", + "x": 0.0, + "y": 377.05, + "width": 64.0, + "height": 64.0, + "strokeColor": "#b45309", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 25, + "angle": 0, + "seed": 1233, + "version": 1, + "versionNonce": 1234, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "points": [ + [ + 0.0, + 0.0 + ], + [ + 64.0, + 64.0 + ] + ], + "roundness": null + }, + { + "type": "line", + "id": "ln118", + "x": 0.0, + "y": 393.05, + "width": 48.0, + "height": 48.0, + "strokeColor": "#0f766e", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 25, + "angle": 0, + "seed": 1235, + "version": 1, + "versionNonce": 1236, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "points": [ + [ + 0.0, + 0.0 + ], + [ + 48.0, + 48.0 + ] + ], + "roundness": null + }, + { + "type": "line", + "id": "ln119", + "x": 0.0, + "y": 409.05, + "width": 32.0, + "height": 32.0, + "strokeColor": "#b45309", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 25, + "angle": 0, + "seed": 1237, + "version": 1, + "versionNonce": 1238, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "points": [ + [ + 0.0, + 0.0 + ], + [ + 32.0, + 32.0 + ] + ], + "roundness": null + }, + { + "type": "line", + "id": "ln120", + "x": 0.0, + "y": 425.05, + "width": 16.0, + "height": 16.0, + "strokeColor": "#0f766e", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 25, + "angle": 0, + "seed": 1239, + "version": 1, + "versionNonce": 1240, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "points": [ + [ + 0.0, + 0.0 + ], + [ + 16.0, + 16.0 + ] + ], + "roundness": null + }, + { + "type": "line", + "id": "ln121", + "x": 0, + "y": 377.05, + "width": 880, + "height": 0.0, + "strokeColor": "#0f766e", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1241, + "version": 1, + "versionNonce": 1242, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "points": [ + [ + 0, + 0.0 + ], + [ + 880, + 0.0 + ] + ], + "roundness": null + }, + { + "type": "line", + "id": "ln122", + "x": 0, + "y": 441.05, + "width": 880, + "height": 0.0, + "strokeColor": "#b45309", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1243, + "version": 1, + "versionNonce": 1244, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "points": [ + [ + 0, + 0.0 + ], + [ + 880, + 0.0 + ] + ], + "roundness": null + }, + { + "type": "line", + "id": "ln123", + "x": 0, + "y": 377.05, + "width": 0, + "height": 64.0, + "strokeColor": "#64748b", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 55, + "angle": 0, + "seed": 1245, + "version": 1, + "versionNonce": 1246, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "points": [ + [ + 0, + 0.0 + ], + [ + 0, + 64.0 + ] + ], + "roundness": null + }, + { + "type": "line", + "id": "ln124", + "x": 880, + "y": 377.05, + "width": 0, + "height": 64.0, + "strokeColor": "#64748b", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 55, + "angle": 0, + "seed": 1247, + "version": 1, + "versionNonce": 1248, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "points": [ + [ + 0, + 0.0 + ], + [ + 0, + 64.0 + ] + ], + "roundness": null + }, + { + "type": "rectangle", + "id": "plate125", + "x": 20.0, + "y": 397.925, + "width": 142.17999999999998, + "height": 22.25, + "strokeColor": "transparent", + "backgroundColor": "#ffffff", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1249, + "version": 1, + "versionNonce": 1250, + "isDeleted": false, + "groupIds": [], + "boundElements": [], + "link": null, + "locked": false, + "roundness": { + "type": 3 + } + }, + { + "type": "text", + "id": "platet126", + "x": 27.0, + "y": 400.925, + "width": 128.17999999999998, + "height": 16.25, + "strokeColor": "#64748b", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1251, + "version": 1, + "versionNonce": 1252, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "attachment points", + "originalText": "attachment points", + "fontSize": 13, + "fontFamily": 2, + "textAlign": "center", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 + }, + { + "type": "line", + "id": "ln127", + "x": 222.57, + "y": 368.05, + "width": 0.0, + "height": 27.0, + "strokeColor": "#0f766e", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1253, + "version": 1, + "versionNonce": 1254, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "points": [ + [ + 0.0, + 0.0 + ], + [ + 0.0, + 27.0 + ] + ], + "roundness": null + }, + { + "type": "line", + "id": "ln128", + "x": 222.57, + "y": 423.05, + "width": 0.0, + "height": 27.0, + "strokeColor": "#b45309", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1255, + "version": 1, + "versionNonce": 1256, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "points": [ + [ + 0.0, + 0.0 + ], + [ + 0.0, + 27.0 + ] + ], + "roundness": null + }, + { + "type": "rectangle", + "id": "pill129", + "x": 182.17999999999998, + "y": 395.05, + "width": 80.78, + "height": 28.0, + "strokeColor": "#64748b", + "backgroundColor": "#ffffff", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1257, + "version": 1, + "versionNonce": 1258, + "isDeleted": false, + "groupIds": [], + "boundElements": [], + "link": null, + "locked": false, + "roundness": { + "type": 3 + } + }, + { + "type": "text", + "id": "pillt130", + "x": 182.17999999999998, + "y": 400.925, + "width": 80.78, + "height": 16.25, + "strokeColor": "#334155", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1259, + "version": 1, + "versionNonce": 1260, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "finding", + "originalText": "finding", + "fontSize": 13, + "fontFamily": 2, + "textAlign": "center", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 + }, + { + "type": "line", + "id": "ln131", + "x": 416.5566666666667, + "y": 368.05, + "width": 0.0, + "height": 27.0, + "strokeColor": "#0f766e", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1261, + "version": 1, + "versionNonce": 1262, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "points": [ + [ + 0.0, + 0.0 + ], + [ + 0.0, + 27.0 + ] + ], + "roundness": null + }, + { + "type": "line", + "id": "ln132", + "x": 416.5566666666667, + "y": 423.05, + "width": 0.0, + "height": 27.0, + "strokeColor": "#b45309", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1263, + "version": 1, + "versionNonce": 1264, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "points": [ + [ + 0.0, + 0.0 + ], + [ + 0.0, + 27.0 + ] + ], + "roundness": null + }, + { + "type": "rectangle", + "id": "pill133", + "x": 368.62666666666667, + "y": 395.05, + "width": 95.86, + "height": 28.0, + "strokeColor": "#64748b", + "backgroundColor": "#ffffff", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1265, + "version": 1, + "versionNonce": 1266, + "isDeleted": false, + "groupIds": [], + "boundElements": [], + "link": null, + "locked": false, + "roundness": { + "type": 3 + } + }, + { + "type": "text", + "id": "pillt134", + "x": 368.62666666666667, + "y": 400.925, + "width": 95.86, + "height": 16.25, + "strokeColor": "#334155", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1267, + "version": 1, + "versionNonce": 1268, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "diagnosis", + "originalText": "diagnosis", + "fontSize": 13, + "fontFamily": 2, + "textAlign": "center", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 + }, + { + "type": "line", + "id": "ln135", + "x": 614.3133333333334, + "y": 368.05, + "width": 0.0, + "height": 27.0, + "strokeColor": "#0f766e", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1269, + "version": 1, + "versionNonce": 1270, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "points": [ + [ + 0.0, + 0.0 + ], + [ + 0.0, + 27.0 + ] + ], + "roundness": null + }, + { + "type": "line", + "id": "ln136", + "x": 614.3133333333334, + "y": 423.05, + "width": 0.0, + "height": 27.0, + "strokeColor": "#b45309", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1271, + "version": 1, + "versionNonce": 1272, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "points": [ + [ + 0.0, + 0.0 + ], + [ + 0.0, + 27.0 + ] + ], + "roundness": null + }, + { + "type": "rectangle", + "id": "pill137", + "x": 570.1533333333334, + "y": 395.05, + "width": 88.32, + "height": 28.0, + "strokeColor": "#64748b", + "backgroundColor": "#ffffff", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1273, + "version": 1, + "versionNonce": 1274, + "isDeleted": false, + "groupIds": [], + "boundElements": [], + "link": null, + "locked": false, + "roundness": { + "type": 3 + } + }, + { + "type": "text", + "id": "pillt138", + "x": 570.1533333333334, + "y": 400.925, + "width": 88.32, + "height": 16.25, + "strokeColor": "#334155", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1275, + "version": 1, + "versionNonce": 1276, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "location", + "originalText": "location", + "fontSize": 13, + "fontFamily": 2, + "textAlign": "center", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 + }, + { + "type": "line", + "id": "ln139", + "x": 812.07, + "y": 368.05, + "width": 0.0, + "height": 27.0, + "strokeColor": "#0f766e", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1277, + "version": 1, + "versionNonce": 1278, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "points": [ + [ + 0.0, + 0.0 + ], + [ + 0.0, + 27.0 + ] + ], + "roundness": null + }, + { + "type": "line", + "id": "ln140", + "x": 812.07, + "y": 423.05, + "width": 0.0, + "height": 27.0, + "strokeColor": "#b45309", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1279, + "version": 1, + "versionNonce": 1280, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "points": [ + [ + 0.0, + 0.0 + ], + [ + 0.0, + 27.0 + ] + ], + "roundness": null + }, + { + "type": "rectangle", + "id": "pill141", + "x": 764.1400000000001, + "y": 395.05, + "width": 95.86, + "height": 28.0, + "strokeColor": "#64748b", + "backgroundColor": "#ffffff", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1281, + "version": 1, + "versionNonce": 1282, + "isDeleted": false, + "groupIds": [], + "boundElements": [], + "link": null, + "locked": false, + "roundness": { + "type": 3 + } + }, + { + "type": "text", + "id": "pillt142", + "x": 764.1400000000001, + "y": 400.925, + "width": 95.86, + "height": 16.25, + "strokeColor": "#334155", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1283, + "version": 1, + "versionNonce": 1284, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "exam type", + "originalText": "exam type", + "fontSize": 13, + "fontFamily": 2, + "textAlign": "center", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 + } + ], + "appState": { + "viewBackgroundColor": "#ffffff", + "gridSize": null + }, + "files": { + "img_bicon3": { + "mimeType": "image/svg+xml", + "id": "img_bicon3", + "dataURL": "data:image/svg+xml;base64,PHN2ZwogIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIKICB3aWR0aD0iMjQiCiAgaGVpZ2h0PSIyNCIKICB2aWV3Qm94PSIwIDAgMjQgMjQiCiAgZmlsbD0ibm9uZSIKICBzdHJva2U9IiNiZTEyM2MiCiAgc3Ryb2tlLXdpZHRoPSIyIgogIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIKICBzdHJva2UtbGluZWpvaW49InJvdW5kIgo+CiAgPHBhdGggZD0iTTE1IDE0Yy4yLTEgLjctMS43IDEuNS0yLjUgMS0uOSAxLjUtMi4yIDEuNS0zLjVBNiA2IDAgMCAwIDYgOGMwIDEgLjIgMi4yIDEuNSAzLjUuNy43IDEuMyAxLjUgMS41IDIuNSIgLz4KICA8cGF0aCBkPSJNOSAxOGg2IiAvPgogIDxwYXRoIGQ9Ik0xMCAyMmg0IiAvPgo8L3N2Zz4K", + "created": 1700000000000 + }, + "img_bicon6": { + "mimeType": "image/svg+xml", + "id": "img_bicon6", + "dataURL": "data:image/svg+xml;base64,PHN2ZwogIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIKICB3aWR0aD0iMjQiCiAgaGVpZ2h0PSIyNCIKICB2aWV3Qm94PSIwIDAgMjQgMjQiCiAgZmlsbD0ibm9uZSIKICBzdHJva2U9IiMxNTgwM2QiCiAgc3Ryb2tlLXdpZHRoPSIyIgogIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIKICBzdHJva2UtbGluZWpvaW49InJvdW5kIgo+CiAgPHJlY3QgeD0iMiIgeT0iNCIgd2lkdGg9IjIwIiBoZWlnaHQ9IjE2IiByeD0iMiIgLz4KICA8cGF0aCBkPSJNMTAgNHY0IiAvPgogIDxwYXRoIGQ9Ik0yIDhoMjAiIC8+CiAgPHBhdGggZD0iTTYgNHY0IiAvPgo8L3N2Zz4K", + "created": 1700000000000 + }, + "img_bicon12": { + "mimeType": "image/svg+xml", + "id": "img_bicon12", + "dataURL": "data:image/svg+xml;base64,PHN2ZwogIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIKICB3aWR0aD0iMjQiCiAgaGVpZ2h0PSIyNCIKICB2aWV3Qm94PSIwIDAgMjQgMjQiCiAgZmlsbD0ibm9uZSIKICBzdHJva2U9IiM2ZDI4ZDkiCiAgc3Ryb2tlLXdpZHRoPSIyIgogIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIKICBzdHJva2UtbGluZWpvaW49InJvdW5kIgo+CiAgPHBhdGggZD0iTTExIDIxLjczYTIgMiAwIDAgMCAyIDBsNy00QTIgMiAwIDAgMCAyMSAxNlY4YTIgMiAwIDAgMC0xLTEuNzNsLTctNGEyIDIgMCAwIDAtMiAwbC03IDRBMiAyIDAgMCAwIDMgOHY4YTIgMiAwIDAgMCAxIDEuNzN6IiAvPgogIDxwYXRoIGQ9Ik0xMiAyMlYxMiIgLz4KICA8cG9seWxpbmUgcG9pbnRzPSIzLjI5IDcgMTIgMTIgMjAuNzEgNyIgLz4KICA8cGF0aCBkPSJtNy41IDQuMjcgOSA1LjE1IiAvPgo8L3N2Zz4K", + "created": 1700000000000 + }, + "img_bicon16": { + "mimeType": "image/svg+xml", + "id": "img_bicon16", + "dataURL": "data:image/svg+xml;base64,PHN2ZwogIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIKICB3aWR0aD0iMjQiCiAgaGVpZ2h0PSIyNCIKICB2aWV3Qm94PSIwIDAgMjQgMjQiCiAgZmlsbD0ibm9uZSIKICBzdHJva2U9IiMwZjc2NmUiCiAgc3Ryb2tlLXdpZHRoPSIyIgogIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIKICBzdHJva2UtbGluZWpvaW49InJvdW5kIgo+CiAgPHBhdGggZD0iTTEyLjgzIDIuMThhMiAyIDAgMCAwLTEuNjYgMEwyLjYgNi4wOGExIDEgMCAwIDAgMCAxLjgzbDguNTggMy45MWEyIDIgMCAwIDAgMS42NiAwbDguNTgtMy45YTEgMSAwIDAgMCAwLTEuODN6IiAvPgogIDxwYXRoIGQ9Ik0yIDEyYTEgMSAwIDAgMCAuNTguOTFsOC42IDMuOTFhMiAyIDAgMCAwIDEuNjUgMGw4LjU4LTMuOUExIDEgMCAwIDAgMjIgMTIiIC8+CiAgPHBhdGggZD0iTTIgMTdhMSAxIDAgMCAwIC41OC45MWw4LjYgMy45MWEyIDIgMCAwIDAgMS42NSAwbDguNTgtMy45QTEgMSAwIDAgMCAyMiAxNyIgLz4KPC9zdmc+Cg==", + "created": 1700000000000 + }, + "img_blki20": { + "mimeType": "image/svg+xml", + "id": "img_blki20", + "dataURL": "data:image/svg+xml;base64,PHN2ZwogIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIKICB3aWR0aD0iMjQiCiAgaGVpZ2h0PSIyNCIKICB2aWV3Qm94PSIwIDAgMjQgMjQiCiAgZmlsbD0ibm9uZSIKICBzdHJva2U9IiMwZjc2NmUiCiAgc3Ryb2tlLXdpZHRoPSIyIgogIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIKICBzdHJva2UtbGluZWpvaW49InJvdW5kIgo+CiAgPHJlY3Qgd2lkdGg9IjgiIGhlaWdodD0iNCIgeD0iOCIgeT0iMiIgcng9IjEiIHJ5PSIxIiAvPgogIDxwYXRoIGQ9Ik0xNiA0aDJhMiAyIDAgMCAxIDIgMnYxNGEyIDIgMCAwIDEtMiAySDZhMiAyIDAgMCAxLTItMlY2YTIgMiAwIDAgMSAyLTJoMiIgLz4KPC9zdmc+Cg==", + "created": 1700000000000 + }, + "img_blki23": { + "mimeType": "image/svg+xml", + "id": "img_blki23", + "dataURL": "data:image/svg+xml;base64,PHN2ZwogIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIKICB3aWR0aD0iMjQiCiAgaGVpZ2h0PSIyNCIKICB2aWV3Qm94PSIwIDAgMjQgMjQiCiAgZmlsbD0ibm9uZSIKICBzdHJva2U9IiMwZjc2NmUiCiAgc3Ryb2tlLXdpZHRoPSIyIgogIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIKICBzdHJva2UtbGluZWpvaW49InJvdW5kIgo+CiAgPHJlY3Qgd2lkdGg9IjgiIGhlaWdodD0iNCIgeD0iOCIgeT0iMiIgcng9IjEiIHJ5PSIxIiAvPgogIDxwYXRoIGQ9Ik0xNiA0aDJhMiAyIDAgMCAxIDIgMnYxNGEyIDIgMCAwIDEtMiAySDZhMiAyIDAgMCAxLTItMlY2YTIgMiAwIDAgMSAyLTJoMiIgLz4KICA8cGF0aCBkPSJNMTIgMTFoNCIgLz4KICA8cGF0aCBkPSJNMTIgMTZoNCIgLz4KICA8cGF0aCBkPSJNOCAxMWguMDEiIC8+CiAgPHBhdGggZD0iTTggMTZoLjAxIiAvPgo8L3N2Zz4K", + "created": 1700000000000 + }, + "img_blki27": { + "mimeType": "image/svg+xml", + "id": "img_blki27", + "dataURL": "data:image/svg+xml;base64,PHN2ZwogIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIKICB3aWR0aD0iMjQiCiAgaGVpZ2h0PSIyNCIKICB2aWV3Qm94PSIwIDAgMjQgMjQiCiAgZmlsbD0ibm9uZSIKICBzdHJva2U9IiMwZjc2NmUiCiAgc3Ryb2tlLXdpZHRoPSIyIgogIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIKICBzdHJva2UtbGluZWpvaW49InJvdW5kIgo+CiAgPHBhdGggZD0iTTMgNWguMDEiIC8+CiAgPHBhdGggZD0iTTMgMTJoLjAxIiAvPgogIDxwYXRoIGQ9Ik0zIDE5aC4wMSIgLz4KICA8cGF0aCBkPSJNOCA1aDEzIiAvPgogIDxwYXRoIGQ9Ik04IDEyaDEzIiAvPgogIDxwYXRoIGQ9Ik04IDE5aDEzIiAvPgo8L3N2Zz4K", + "created": 1700000000000 + }, + "img_blki31": { + "mimeType": "image/svg+xml", + "id": "img_blki31", + "dataURL": "data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNDgiIGhlaWdodD0iNDgiIHZpZXdCb3g9IjAgMCA0OCA0OCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0yNCAyNEMyOC40MjA0IDI0IDMyIDIwLjQyMDQgMzIgMTZDMzIgMTEuNTc5NiAyOC40MjA0IDggMjQgOEMxOS41Nzk2IDggMTYgMTEuNTc5NiAxNiAxNkMxNiAyMC40MjA0IDE5LjU3OTYgMjQgMjQgMjRaTTM0IDE2QzM0IDIxLjUyNSAyOS41MjUgMjYgMjQgMjZDMTguNDc1IDI2IDE0IDIxLjUyNSAxNCAxNkMxNCAxMC40NzUgMTguNDc1IDYgMjQgNkMyOS41MjUgNiAzNCAxMC40NzUgMzQgMTZaIiBmaWxsPSIjMGY3NjZlIi8+CjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgY2xpcC1ydWxlPSJldmVub2RkIiBkPSJNOS4yMjM0OCAzNC4yMTE5QzguMjIwMzggMzUuMDIxMSA4IDM1LjYyOTEgOCAzNlY0MEg0MFYzNkM0MCAzNS42MjkxIDM5Ljc3OTYgMzUuMDIxMSAzOC43NzY1IDM0LjIxMTlDMzcuNzk1OCAzMy40MjA3IDM2LjMzNDEgMzIuNjY2OSAzNC41NjIyIDMyLjAxNUMzMS4wMTk5IDMwLjcxMTcgMjYuNzUzMiAzMCAyNCAzMEMyMS4yNDY4IDMwIDE2Ljk4MDEgMzAuNzExNyAxMy40Mzc4IDMyLjAxNUMxMS42NjU5IDMyLjY2NjkgMTAuMjA0MiAzMy40MjA3IDkuMjIzNDggMzQuMjExOVpNMjQgMjhDMTcuOTkyNSAyOCA2IDMxLjAzNDcgNiAzNlY0Mkg0MlYzNkM0MiAzMS4wMzQ3IDMwLjAwNzUgMjggMjQgMjhaIiBmaWxsPSIjMGY3NjZlIi8+Cjwvc3ZnPgo=", + "created": 1700000000000 + }, + "img_bicon34": { + "mimeType": "image/svg+xml", + "id": "img_bicon34", + "dataURL": "data:image/svg+xml;base64,PHN2ZwogIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIKICB3aWR0aD0iMjQiCiAgaGVpZ2h0PSIyNCIKICB2aWV3Qm94PSIwIDAgMjQgMjQiCiAgZmlsbD0ibm9uZSIKICBzdHJva2U9IiNiNDUzMDkiCiAgc3Ryb2tlLXdpZHRoPSIyIgogIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIKICBzdHJva2UtbGluZWpvaW49InJvdW5kIgo+CiAgPHBhdGggZD0iTTEyIDV2MTYiIC8+CiAgPHBhdGggZD0iTTIwLjAwMSAxOUEyIDIgMCAwMDIyIDE3VjVhMiAyIDAgMDAtMS45OTktMkwxNiAzLjAwMkE1IDUgMCAwMDEyIDVhNSA1IDAgMDAtNC0ySDRhMiAyIDAgMDAtMiAydjEyYTIgMiAwIDAwMS45OTkgMkg4YTUgNSAwIDAxNCAyIDUgNSAwIDAxNC0yeiIgLz4KPC9zdmc+Cg==", + "created": 1700000000000 + }, + "img_blki40": { + "mimeType": "image/svg+xml", + "id": "img_blki40", + "dataURL": "data:image/svg+xml;base64,PHN2ZwogIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIKICB3aWR0aD0iMjQiCiAgaGVpZ2h0PSIyNCIKICB2aWV3Qm94PSIwIDAgMjQgMjQiCiAgZmlsbD0ibm9uZSIKICBzdHJva2U9IiNiNDUzMDkiCiAgc3Ryb2tlLXdpZHRoPSIyIgogIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIKICBzdHJva2UtbGluZWpvaW49InJvdW5kIgo+CiAgPHBhdGggZD0iTTEyLjU4NiAyLjU4NkEyIDIgMCAwIDAgMTEuMTcyIDJINGEyIDIgMCAwIDAtMiAydjcuMTcyYTIgMiAwIDAgMCAuNTg2IDEuNDE0bDguNzA0IDguNzA0YTIuNDI2IDIuNDI2IDAgMCAwIDMuNDIgMGw2LjU4LTYuNThhMi40MjYgMi40MjYgMCAwIDAgMC0zLjQyeiIgLz4KICA8Y2lyY2xlIGN4PSI3LjUiIGN5PSI3LjUiIHI9Ii41IiBmaWxsPSIjYjQ1MzA5IiAvPgo8L3N2Zz4K", + "created": 1700000000000 + }, + "img_blki44": { + "mimeType": "image/svg+xml", + "id": "img_blki44", + "dataURL": "data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNDgiIGhlaWdodD0iNDgiIHZpZXdCb3g9IjAgMCA0OCA0OCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0yMyA2LjAwMDEzQzIzIDYuMDAwMDQgMjMgNiAyNCA2SDI0LjE3NjFDMjQuMjUzMyA2IDI0LjMyMzMgNiAyNC4zODY4IDZDMjUgNi4wMDAwMSAyNSA2LjAwMDA1IDI1IDYuMDAwMTNWMjAuNUMyNSAyMS44OTc3IDI1LjU2NDEgMjIuNDQyMSAyNi4wMDM5IDIyLjY5ODdDMjYuMDUzIDIyLjcyNzMgMjYuMTAyNCAyMi43NTMzIDI2LjE1MTYgMjIuNzc3QzI2LjE1MDYgMjIuNjU2OCAyNi4xNDkzIDIyLjUzMTYgMjYuMTQ3OSAyMi40MDE5TDI2LjE0NzkgMjIuNDAwM0MyNi4xMTAxIDE4Ljg3MTYgMjYuMDM2NSAxMS45OTk3IDMxLjQ3NTMgMTEuOTk5N0MzOC45MjU5IDExLjk5OTcgNDQuMjQ3OCAzOC4wMDYyIDQxLjA1NDcgNDAuNjU5OUMzNy44NjE1IDQzLjMxMzYgMzEuNDc1MyA0MS43MjE0IDI4LjI4MjIgMzguNTM2OUMyNS43MDQyIDM1Ljk2NTkgMjUuOTI3MiAyOS45NTgzIDI2LjA4NzMgMjUuNjQ1N0wyNi4wODc0IDI1LjY0NDNDMjYuMDk3MSAyNS4zODE5IDI2LjEwNjcgMjUuMTI1OCAyNi4xMTUzIDI0Ljg3NzFDMjUuNzkgMjQuNzk2MiAyNS4zOTU5IDI0LjY1OTUgMjQuOTk2MiAyNC40MjYzQzI0LjYzOTggMjQuMjE4NCAyNC4yOTc1IDIzLjk0NDIgMjQgMjMuNTkxOUMyMy43MDI2IDIzLjk0NDIgMjMuMzYwMyAyNC4yMTg0IDIzLjAwMzkgMjQuNDI2M0MyMi42MDQxIDI0LjY1OTUgMjIuMjEwMSAyNC43OTYyIDIxLjg4NDggMjQuODc3MUMyMS44OTM0IDI1LjEyNjEgMjEuOTAyOSAyNS4zODI2IDIxLjkxMjcgMjUuNjQ1M0MyMi4wNzI4IDI5Ljk1NzkgMjIuMjk1OSAzNS45NjYyIDE5LjcxNzkgMzguNTM3MkMxNi41MjQ3IDQxLjcyMTcgMTAuMTM4NSA0My4zMTM5IDYuOTQ1MzYgNDAuNjYwMkMzLjc1MjIyIDM4LjAwNjUgOS4wNzQxMyAxMiAxNi41MjQ3IDEyQzIxLjk2MzYgMTIgMjEuODkgMTguODcxNyAyMS44NTIyIDIyLjQwMDNDMjEuODUyIDIyLjQxNjYgMjEuODUxOCAyMi40MzI4IDIxLjg1MTYgMjIuNDQ4OUMyMS44NTA0IDIyLjU2MTkgMjEuODQ5MyAyMi42NzE0IDIxLjg0ODQgMjIuNzc3QzIxLjg5NzcgMjIuNzUzNCAyMS45NDcxIDIyLjcyNzQgMjEuOTk2MiAyMi42OTg3QzIyLjQzNiAyMi40NDIxIDIzIDIxLjg5NzcgMjMgMjAuNVY2LjAwMDEzWk0zMS40NzUzIDEzLjk5OTdDMzAuNTIxMiAxMy45OTk3IDI5Ljk4NDMgMTQuMzAwMiAyOS42MDg2IDE0LjY4NjlDMjkuMTc1MiAxNS4xMzMxIDI4LjgxMzIgMTUuODUwNyAyOC41NTkgMTYuODY0NkMyOC4xMTQxIDE4LjYzOTUgMjguMTMzIDIwLjY4MTkgMjguMTQ4MyAyMi4zMjkzQzI4LjE1MDkgMjIuNjE0MiAyOC4xNTM0IDIyLjg4NzQgMjguMTUzNCAyMy4xNDUzQzI4LjE1MzQgMjMuOTA1MyAyOC4xMTk2IDI0LjgxNTMgMjguMDg0NSAyNS43NjIxQzI4LjA3MDcgMjYuMTM0OSAyOC4wNTY2IDI2LjUxMzMgMjguMDQ0MyAyNi44OTA1QzI3Ljk5OTYgMjguMjY1NyAyNy45NzQxIDI5LjcwNTUgMjguMDQwNSAzMS4wOTgyQzI4LjEwNzIgMzIuNDk4NSAyOC4yNjQyIDMzLjc4MzUgMjguNTU3MyAzNC44NTk2QzI4Ljg1MzggMzUuOTQ4MyAyOS4yNTA5IDM2LjY3ODQgMjkuNjk0NCAzNy4xMjA4QzMwLjk3MjYgMzguMzk1NCAzMi45OTA4IDM5LjQyNTEgMzUuMDQ5MiAzOS44MjQzQzM3LjA4NDIgNDAuMjE4OSAzOC43MjI0IDM5LjkyNjkgMzkuNjgxOCAzOS4xOTY5QzM5LjY4NjggMzkuMTg1NyAzOS42OTIzIDM5LjE3MjYgMzkuNjk4NCAzOS4xNTc0QzM5Ljc1NzYgMzkuMDA5NSAzOS44Mjk0IDM4Ljc1NTQgMzkuODg3OCAzOC4zNjgzQzQwLjAwNDcgMzcuNTkzMyA0MC4wMzUgMzYuNTEyMiAzOS45NTYyIDM1LjE4MDNDMzkuNzk5NSAzMi41MzA1IDM5LjIyODYgMjkuMTY4OSAzOC4zMjY4IDI1Ljg2MDZDMzcuNDIxNiAyMi41Mzk2IDM2LjIxNzMgMTkuMzk5OCAzNC44NTIxIDE3LjEzODNDMzQuMTY4OCAxNi4wMDYyIDMzLjQ5NTEgMTUuMTc4NiAzMi44NzAzIDE0LjY1MzVDMzIuMjUxOCAxNC4xMzM3IDMxLjc5MzUgMTMuOTk5NyAzMS40NzUzIDEzLjk5OTdaTTE2LjUyNDcgMTRDMTcuNDc4OCAxNCAxOC4wMTU4IDE0LjMwMDUgMTguMzkxNCAxNC42ODcyQzE4LjgyNDggMTUuMTMzNCAxOS4xODY4IDE1Ljg1MSAxOS40NDEgMTYuODY0OUMxOS44ODU5IDE4LjYzOTkgMTkuODY3IDIwLjY4MjIgMTkuODUxOCAyMi4zMjk2QzE5Ljg0OTEgMjIuNjE0NiAxOS44NDY2IDIyLjg4NzcgMTkuODQ2NiAyMy4xNDU2QzE5Ljg0NjYgMjMuOTA1NiAxOS44ODA0IDI0LjgxNTYgMTkuOTE1NSAyNS43NjI0QzE5LjkyOTQgMjYuMTM1IDE5Ljk0MzQgMjYuNTEzOCAxOS45NTU3IDI2Ljg5MDhDMjAuMDAwNSAyOC4yNjYgMjAuMDI1OSAyOS43MDU4IDE5Ljk1OTYgMzEuMDk4NUMxOS44OTI5IDMyLjQ5ODggMTkuNzM1OSAzMy43ODM4IDE5LjQ0MjcgMzQuODU5OUMxOS4xNDYyIDM1Ljk0ODYgMTguNzQ5MiAzNi42Nzg3IDE4LjMwNTYgMzcuMTIxMUMxNy4wMjc1IDM4LjM5NTcgMTUuMDA5MyAzOS40MjU0IDEyLjk1MDkgMzkuODI0NkMxMC45MTU5IDQwLjIxOTIgOS4yNzc2OCAzOS45MjcyIDguMzE4MjMgMzkuMTk3MkM4LjMxMzI2IDM5LjE4NiA4LjMwNzcgMzkuMTcyOSA4LjMwMTYyIDM5LjE1NzdDOC4yNDI0MSAzOS4wMDk4IDguMTcwNjEgMzguNzU1NyA4LjExMjI0IDM4LjM2ODZDNy45OTUzOSAzNy41OTM2IDcuOTY1IDM2LjUxMjUgOC4wNDM4IDM1LjE4MDZDOC4yMDA1NiAzMi41MzA4IDguNzcxNDcgMjkuMTY5MiA5LjY3MzI0IDI1Ljg2MDlDMTAuNTc4NSAyMi41Mzk5IDExLjc4MjcgMTkuNDAwMSAxMy4xNDc5IDE3LjEzODZDMTMuODMxMyAxNi4wMDY1IDE0LjUwNDkgMTUuMTc4OSAxNS4xMjk4IDE0LjY1MzhDMTUuNzQ4MiAxNC4xMzQgMTYuMjA2NSAxNCAxNi41MjQ3IDE0WiIgZmlsbD0iI2I0NTMwOSIvPgo8L3N2Zz4K", + "created": 1700000000000 + }, + "img_blki48": { + "mimeType": "image/svg+xml", + "id": "img_blki48", + "dataURL": "data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNDgiIGhlaWdodD0iNDgiIHZpZXdCb3g9IjAgMCA0OCA0OCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0yOSA5QzI5IDExLjc2MTQgMjYuNzYxNCAxNCAyNCAxNEMyMS4yMzg2IDE0IDE5IDExLjc2MTQgMTkgOUMxOSA2LjIzODU4IDIxLjIzODYgNCAyNCA0QzI2Ljc2MTQgNCAyOSA2LjIzODU4IDI5IDlaTTI3IDlDMjcgMTAuNjU2OSAyNS42NTY5IDEyIDI0IDEyQzIyLjM0MzEgMTIgMjEgMTAuNjU2OSAyMSA5QzIxIDcuMzQzMTUgMjIuMzQzMSA2IDI0IDZDMjUuNjU2OSA2IDI3IDcuMzQzMTUgMjcgOVoiIGZpbGw9IiNiNDUzMDkiLz4KPHBhdGggZD0iTTE2Ljk5OTggNDFWMzRIMTguOTk5OFY0MUMxOC45OTk4IDQxLjU1MjMgMTkuNDQ3NSA0MiAxOS45OTk4IDQySDIwLjA4NjVDMjAuNjAzNyA0MiAyMS4wMzU2IDQxLjYwNTYgMjEuMDgyNCA0MS4wOTA1TDIxLjcyNyAzNEgyMy43MzUzTDIzLjA3NDIgNDEuMjcxNkMyMy4wNjkgNDEuMzI4OCAyMy4wNjIyIDQxLjM4NTYgMjMuMDUzOSA0MS40NDE3QzIzLjAzNTcgNDEuNTY0NyAyMy4wMTAxIDQxLjY4NTEgMjIuOTc3NiA0MS44MDI1QzIyLjYyNDIgNDMuMDc5OCAyMS40NTQ5IDQ0IDIwLjA4NjUgNDRIMTkuOTk5OEMxOC4zNDI5IDQ0IDE2Ljk5OTggNDIuNjU2OSAxNi45OTk4IDQxWiIgZmlsbD0iI2I0NTMwOSIvPgo8cGF0aCBkPSJNMjYuOTE3MSA0MS4wOTA1TDI2LjI3MjUgMzRIMjQuMjY0MkwyNC45MjUzIDQxLjI3MTZDMjQuOTMwNSA0MS4zMjg4IDI0LjkzNzMgNDEuMzg1NiAyNC45NDU2IDQxLjQ0MTdDMjQuOTYzOCA0MS41NjQ3IDI0Ljk4OTQgNDEuNjg1MSAyNS4wMjE5IDQxLjgwMjVDMjUuMzc1MyA0My4wNzk4IDI2LjU0NDYgNDQgMjcuOTEzIDQ0SDI3Ljk5OThDMjkuNjU2NiA0NCAzMC45OTk4IDQyLjY1NjkgMzAuOTk5OCA0MVYzNEgyOC45OTk4VjQxQzI4Ljk5OTggNDEuNTUyMyAyOC41NTIgNDIgMjcuOTk5OCA0MkgyNy45MTNDMjcuMzk1OCA0MiAyNi45NjM5IDQxLjYwNTYgMjYuOTE3MSA0MS4wOTA1WiIgZmlsbD0iI2I0NTMwOSIvPgo8cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGNsaXAtcnVsZT0iZXZlbm9kZCIgZD0iTTExIDE1QzEwLjQ0NzcgMTUgMTAgMTUuNDQ3NyAxMCAxNlYzMUMxMCAzMS41NTIzIDEwLjQ0NzcgMzIgMTEgMzJIMzdDMzcuNTUyMyAzMiAzOCAzMS41NTIzIDM4IDMxVjE2QzM4IDE1LjQ0NzcgMzcuNTUyMyAxNSAzNyAxNUgxMVpNMTIgMTdWMzBIMTkuNUMxOS41IDI5LjQ0MjQgMTkuNzU5MSAyOC45NTcyIDIwLjAyNzYgMjguNjAwNkMyMC4zMDg2IDI4LjIyNzYgMjAuNjc5NiAyNy44ODgzIDIxLjA3OTQgMjcuNjAxNkMyMS42MjUyIDI3LjIxMDMgMjIuMjk4NiAyNi44NjUgMjMgMjYuNjY3OFYyNC41SDIyLjJDMjEuNTk3MyAyNC41IDIwLjc1MzUgMjQuODY0MiAxOS45NDMzIDI1LjM1NTJDMTkuNTYzOCAyNS41ODUyIDE5LjIzMzcgMjUuODE2NyAxOC45OTg0IDI1Ljk5MTFDMTguODgxMiAyNi4wNzc4IDE4Ljc4ODggMjYuMTQ5NSAxOC43MjcgMjYuMTk4NEMxOC42OTYxIDI2LjIyMjggMTguNjczIDI2LjI0MTUgMTguNjU4MiAyNi4yNTM1TDE4LjY0MjYgMjYuMjY2M0wxOC42Mzk5IDI2LjI2ODRDMTguNjM5OSAyNi4yNjg0IDE4LjY0MDIgMjYuMjY4MiAxOCAyNS41QzE3LjM1OTggMjQuNzMxOCAxNy4zNjAxIDI0LjczMTUgMTcuMzYwMSAyNC43MzE1TDE3LjM2MTQgMjQuNzMwNUwxNy4zNjM4IDI0LjcyODVMMTcuMzcxMyAyNC43MjIzTDE3LjM5NjYgMjQuNzAxNkMxNy40MTc5IDI0LjY4NDMgMTcuNDQ4IDI0LjY2IDE3LjQ4NjMgMjQuNjI5N0MxNy41NjI3IDI0LjU2OTMgMTcuNjcxOSAyNC40ODQ3IDE3LjgwNzkgMjQuMzgzOUMxOC4wNzg4IDI0LjE4MzMgMTguNDYxMiAyMy45MTQ4IDE4LjkwNjcgMjMuNjQ0OEMxOS43NDY1IDIzLjEzNTggMjEuMDAyNyAyMi41IDIyLjIgMjIuNUgyM1YyMC41SDIyLjVDMjEuOTMwOSAyMC41IDIxLjE5MDkgMjAuNjk5MiAyMC41MjkyIDIwLjkzOThDMjAuMjEyIDIxLjA1NTIgMTkuOTM3IDIxLjE3MDkgMTkuNzQyMSAyMS4yNTc2QzE5LjY0NDkgMjEuMzAwNyAxOS41Njg1IDIxLjMzNjMgMTkuNTE3NiAyMS4zNjA1QzE5LjQ5MjIgMjEuMzcyNSAxOS40NzMyIDIxLjM4MTcgMTkuNDYxMyAyMS4zODc1TDE5LjQ0ODcgMjEuMzkzN0wxOS40NDcgMjEuMzk0NUMxOS40NDcgMjEuMzk0NSAxOS40NDcyIDIxLjM5NDQgMTkgMjAuNUMxOC41NTI4IDE5LjYwNTYgMTguNTUzMSAxOS42MDU0IDE4LjU1MzEgMTkuNjA1NEwxOC41NTY0IDE5LjYwMzhMMTguNTYyOSAxOS42MDA2TDE4LjU4NDQgMTkuNTlDMTguNjAyNSAxOS41ODEyIDE4LjYyNzkgMTkuNTY4OSAxOC42NjAxIDE5LjU1MzZDMTguNzI0NSAxOS41MjMxIDE4LjgxNiAxOS40ODA1IDE4LjkyOTggMTkuNDI5OUMxOS4xNTY3IDE5LjMyOTEgMTkuNDc1NSAxOS4xOTQ4IDE5Ljg0NTggMTkuMDYwMkMyMC41NTkxIDE4LjgwMDggMjEuNTY5MSAxOC41IDIyLjUgMTguNUgyM1YxN0gxMlpNMjUgMjQuNUgyNi4xQzI2Ljg0ODkgMjQuNSAyNy42MTg2IDI0Ljg2NjMgMjguMjYzMSAyNS4zMTg2QzI4LjU3MzUgMjUuNTM2NCAyOC44Mjg1IDI1Ljc1NTYgMjkuMDA0OCAyNS45MTk3QzI5LjA5MjUgMjYuMDAxMiAyOS4xNTk0IDI2LjA2NzkgMjkuMjAyNiAyNi4xMTIyQzI5LjIyNDEgMjYuMTM0MyAyOS4yMzk3IDI2LjE1MDcgMjkuMjQ4OCAyNi4xNjA1TDI5LjI1NzQgMjYuMTY5N0MyOS4yNTc0IDI2LjE2OTcgMjkuMjU2NyAyNi4xNjkgMzAgMjUuNUMzMC43NDMzIDI0LjgzMSAzMC43NDI5IDI0LjgzMDYgMzAuNzQyOSAyNC44MzA2TDMwLjc0MTQgMjQuODI5TDMwLjczODkgMjQuODI2MkwzMC43MzE4IDI0LjgxODRMMzAuNzA5NyAyNC43OTQ2QzMwLjY5MTUgMjQuNzc1MSAzMC42NjYzIDI0Ljc0ODUgMzAuNjM0NiAyNC43MTZDMzAuNTcxMSAyNC42NTA5IDMwLjQ4MDkgMjQuNTYxMyAzMC4zNjcgMjQuNDU1M0MzMC4xNDAzIDI0LjI0NDQgMjkuODE0IDIzLjk2MzYgMjkuNDExOSAyMy42ODE0QzI4LjYzMTQgMjMuMTMzNyAyNy40NTExIDIyLjUgMjYuMSAyMi41SDI1VjIwLjVIMjUuNzVDMjYuNDQ0MyAyMC41IDI3LjExOTMgMjAuNzAxMSAyNy42NDMyIDIwLjkyMTZDMjcuOTAwMyAyMS4wMjk5IDI4LjEwOTIgMjEuMTM3OCAyOC4yNTA5IDIxLjIxNjlDMjguMzIxNSAyMS4yNTY0IDI4LjM3NDcgMjEuMjg4MiAyOC40MDggMjEuMzA4N0MyOC40MjQ3IDIxLjMxODkgMjguNDM2MyAyMS4zMjYzIDI4LjQ0MjcgMjEuMzMwNEwyOC40NDU3IDIxLjMzMjNDMjguNDQ1NyAyMS4zMzIzIDI4LjQ0NTMgMjEuMzMyMSAyOSAyMC41QzI5LjU1NDcgMTkuNjY3OSAyOS41NTQyIDE5LjY2NzYgMjkuNTU0MiAxOS42Njc2TDI5LjU1MjcgMTkuNjY2NkwyOS41NTAxIDE5LjY2NDlMMjkuNTQzMiAxOS42NjA0TDI5LjUyMjggMTkuNjQ3MkMyOS41MDYzIDE5LjYzNjYgMjkuNDg0IDE5LjYyMjUgMjkuNDU2MiAxOS42MDU0QzI5LjQwMDcgMTkuNTcxMiAyOS4zMjMgMTkuNTI0OSAyOS4yMjU2IDE5LjQ3MDZDMjkuMDMxNSAxOS4zNjIyIDI4Ljc1NTkgMTkuMjIwMSAyOC40MTkzIDE5LjA3ODRDMjcuNzU1NyAxOC43OTg5IDI2LjgwNTcgMTguNSAyNS43NSAxOC41SDI1VjE3SDM2VjMwSDI4LjVDMjguNSAyOS40Mzc5IDI4LjIzMjQgMjguOTQ1MiAyNy45NjQxIDI4LjU4NzVDMjcuNjgwMyAyOC4yMDkyIDI3LjMwNTQgMjcuODYwNiAyNi45MDA3IDI3LjU2NjNDMjYuMzY3NSAyNy4xNzg1IDI1LjY5ODkgMjYuODI1NyAyNSAyNi42MzkxVjI0LjVaTTI2LjQ5MjkgMzBDMjYuNDc5NyAyOS45NjcgMjYuNDQ1NyAyOS44OTY0IDI2LjM2NDEgMjkuNzg3NUMyNi4yMjU5IDI5LjYwMzMgMjYuMDA3MSAyOS4zODk0IDI1LjcyNDMgMjkuMTgzN0MyNS4xNDc4IDI4Ljc2NDUgMjQuNDkzNyAyOC41MTE3IDI0LjAzMiAyOC41MDA0QzIzLjQ4NzcgMjguNTQ2NCAyMi44MDUyIDI4LjgyNTIgMjIuMjQ0OSAyOS4yMjdDMjEuOTY1NyAyOS40MjcyIDIxLjc1NTYgMjkuNjMwNyAyMS42MjUyIDI5LjgwMzhDMjEuNTQ5NiAyOS45MDQzIDIxLjUxODQgMjkuOTY5NCAyMS41MDYzIDMwSDI2LjQ5MjlaIiBmaWxsPSIjYjQ1MzA5Ii8+Cjwvc3ZnPgo=", + "created": 1700000000000 + } + } +} \ No newline at end of file diff --git a/knowledge/drafts/three-axes.excalidraw b/knowledge/drafts/three-axes.excalidraw index bf7eaa7..b0aa919 100644 --- a/knowledge/drafts/three-axes.excalidraw +++ b/knowledge/drafts/three-axes.excalidraw @@ -5,11 +5,11 @@ "elements": [ { "type": "rectangle", - "id": "axis1", + "id": "col1", "x": 0, - "y": 66, - "width": 249.33333333333334, - "height": 280.5, + "y": 0, + "width": 316, + "height": 822.5, "strokeColor": "#b45309", "backgroundColor": "#fde68a", "fillStyle": "solid", @@ -23,12 +23,7 @@ "versionNonce": 1002, "isDeleted": false, "groupIds": [], - "boundElements": [ - { - "id": "rel19", - "type": "arrow" - } - ], + "boundElements": [], "link": null, "locked": false, "roundness": { @@ -37,9 +32,9 @@ }, { "type": "image", - "id": "coli1", - "x": 106.66666666666667, - "y": 110, + "id": "coli2", + "x": 140.0, + "y": 16, "width": 36, "height": 36, "strokeColor": "transparent", @@ -58,7 +53,7 @@ "boundElements": [], "link": null, "locked": false, - "fileId": "img_coli1", + "fileId": "img_coli2", "status": "saved", "scale": [ 1, @@ -69,10 +64,10 @@ }, { "type": "text", - "id": "colt2", + "id": "colt3", "x": 8, - "y": 156, - "width": 233.33333333333334, + "y": 61, + "width": 300, "height": 21.25, "strokeColor": "#78350f", "backgroundColor": "transparent", @@ -90,8 +85,8 @@ "boundElements": null, "link": null, "locked": false, - "text": "Finding/diagnosis", - "originalText": "Finding/diagnosis", + "text": "Findings/Diagnoses", + "originalText": "Findings/Diagnoses", "fontSize": 17, "fontFamily": 2, "textAlign": "center", @@ -101,12 +96,12 @@ }, { "type": "text", - "id": "colt3", + "id": "coltag4", "x": 8, - "y": 177.25, - "width": 233.33333333333334, - "height": 21.25, - "strokeColor": "#78350f", + "y": 87.25, + "width": 300, + "height": 17.5, + "strokeColor": "#b45309", "backgroundColor": "transparent", "fillStyle": "solid", "strokeWidth": 1, @@ -122,9 +117,9 @@ "boundElements": null, "link": null, "locked": false, - "text": "definitions", - "originalText": "definitions", - "fontSize": 17, + "text": "WHAT was found", + "originalText": "WHAT was found", + "fontSize": 14, "fontFamily": 2, "textAlign": "center", "verticalAlign": "top", @@ -132,19 +127,19 @@ "lineHeight": 1.25 }, { - "type": "text", - "id": "coltag4", - "x": 8, - "y": 208.5, - "width": 233.33333333333334, - "height": 17.5, + "type": "line", + "id": "rule5", + "x": 18, + "y": 115.75, + "width": 280, + "height": 0, "strokeColor": "#b45309", "backgroundColor": "transparent", "fillStyle": "solid", "strokeWidth": 1, "strokeStyle": "solid", "roughness": 0, - "opacity": 100, + "opacity": 35, "angle": 0, "seed": 1009, "version": 1, @@ -154,24 +149,26 @@ "boundElements": null, "link": null, "locked": false, - "text": "WHAT was found", - "originalText": "WHAT was found", - "fontSize": 14, - "fontFamily": 2, - "textAlign": "center", - "verticalAlign": "top", - "containerId": null, - "lineHeight": 1.25 + "points": [ + [ + 0, + 0 + ], + [ + 280, + 0 + ] + ] }, { "type": "rectangle", - "id": "colblk5", - "x": 12, - "y": 260.0, - "width": 225.33333333333334, - "height": 48.5, - "strokeColor": "#78350f", - "backgroundColor": "#b45309", + "id": "tb6", + "x": 18, + "y": 127.75, + "width": 280, + "height": 20, + "strokeColor": "transparent", + "backgroundColor": "#fcd34d", "fillStyle": "solid", "strokeWidth": 1, "strokeStyle": "solid", @@ -192,12 +189,12 @@ }, { "type": "text", - "id": "colblkt6", - "x": 18, - "y": 270.0, - "width": 213.33333333333334, + "id": "tbt7", + "x": 28, + "y": 129.625, + "width": 60.31999999999999, "height": 16.25, - "strokeColor": "#fef3c7", + "strokeColor": "#78350f", "backgroundColor": "transparent", "fillStyle": "solid", "strokeWidth": 1, @@ -213,23 +210,23 @@ "boundElements": null, "link": null, "locked": false, - "text": "layered over: finding models", - "originalText": "layered over: finding models", + "text": "Findings", + "originalText": "Findings", "fontSize": 13, "fontFamily": 2, - "textAlign": "center", + "textAlign": "left", "verticalAlign": "top", "containerId": null, "lineHeight": 1.25 }, { "type": "text", - "id": "colblkt7", - "x": 18, - "y": 286.25, - "width": 213.33333333333334, - "height": 16.25, - "strokeColor": "#fef3c7", + "id": "tn8", + "x": 34, + "y": 156.5, + "width": 129.92, + "height": 17.5, + "strokeColor": "#78350f", "backgroundColor": "transparent", "fillStyle": "solid", "strokeWidth": 1, @@ -245,91 +242,91 @@ "boundElements": null, "link": null, "locked": false, - "text": "\u00b7 ACR/RSNA CDEs", - "originalText": "\u00b7 ACR/RSNA CDEs", - "fontSize": 13, + "text": "pulmonary nodule", + "originalText": "pulmonary nodule", + "fontSize": 14, "fontFamily": 2, - "textAlign": "center", + "textAlign": "left", "verticalAlign": "top", "containerId": null, "lineHeight": 1.25 }, { - "type": "rectangle", - "id": "axis2", - "x": 305.33333333333337, - "y": 66, - "width": 249.33333333333334, - "height": 280.5, + "type": "line", + "id": "tc9", + "x": 41, + "y": 175.25, + "width": 0, + "height": 13.0, "strokeColor": "#b45309", - "backgroundColor": "#fde68a", + "backgroundColor": "transparent", "fillStyle": "solid", - "strokeWidth": 2, + "strokeWidth": 1, "strokeStyle": "solid", "roughness": 0, - "opacity": 100, + "opacity": 45, "angle": 0, "seed": 1017, "version": 1, "versionNonce": 1018, "isDeleted": false, "groupIds": [], - "boundElements": [ - { - "id": "rel19", - "type": "arrow" - }, - { - "id": "rel21", - "type": "arrow" - } - ], + "boundElements": null, "link": null, "locked": false, - "roundness": { - "type": 3 - } + "points": [ + [ + 0, + 0 + ], + [ + 0, + 13.0 + ] + ] }, { - "type": "image", - "id": "coli8", - "x": 412.00000000000006, - "y": 110, - "width": 36, - "height": 36, - "strokeColor": "transparent", + "type": "line", + "id": "tc10", + "x": 41, + "y": 188.25, + "width": 7, + "height": 0.0, + "strokeColor": "#b45309", "backgroundColor": "transparent", "fillStyle": "solid", "strokeWidth": 1, "strokeStyle": "solid", "roughness": 0, - "opacity": 100, + "opacity": 45, "angle": 0, "seed": 1019, "version": 1, "versionNonce": 1020, "isDeleted": false, "groupIds": [], - "boundElements": [], + "boundElements": null, "link": null, "locked": false, - "fileId": "img_coli8", - "status": "saved", - "scale": [ - 1, - 1 - ], - "roundness": null, - "crop": null + "points": [ + [ + 0, + 0 + ], + [ + 7, + 0.0 + ] + ] }, { "type": "text", - "id": "colt9", - "x": 313.33333333333337, - "y": 156, - "width": 233.33333333333334, - "height": 21.25, - "strokeColor": "#78350f", + "id": "tn11", + "x": 52, + "y": 180.125, + "width": 37.699999999999996, + "height": 16.25, + "strokeColor": "#b45309", "backgroundColor": "transparent", "fillStyle": "solid", "strokeWidth": 1, @@ -345,29 +342,29 @@ "boundElements": null, "link": null, "locked": false, - "text": "Anatomic locations", - "originalText": "Anatomic locations", - "fontSize": 17, + "text": "solid", + "originalText": "solid", + "fontSize": 13, "fontFamily": 2, - "textAlign": "center", + "textAlign": "left", "verticalAlign": "top", "containerId": null, "lineHeight": 1.25 }, { - "type": "text", - "id": "coltag10", - "x": 313.33333333333337, - "y": 208.5, - "width": 233.33333333333334, - "height": 17.5, + "type": "line", + "id": "tc12", + "x": 41, + "y": 175.25, + "width": 0, + "height": 36.0, "strokeColor": "#b45309", "backgroundColor": "transparent", "fillStyle": "solid", "strokeWidth": 1, "strokeStyle": "solid", "roughness": 0, - "opacity": 100, + "opacity": 45, "angle": 0, "seed": 1023, "version": 1, @@ -377,50 +374,59 @@ "boundElements": null, "link": null, "locked": false, - "text": "WHERE it is", - "originalText": "WHERE it is", - "fontSize": 14, - "fontFamily": 2, - "textAlign": "center", - "verticalAlign": "top", - "containerId": null, - "lineHeight": 1.25 + "points": [ + [ + 0, + 0 + ], + [ + 0, + 36.0 + ] + ] }, { - "type": "rectangle", - "id": "colblk11", - "x": 317.33333333333337, - "y": 260.0, - "width": 225.33333333333334, - "height": 48.5, - "strokeColor": "#78350f", - "backgroundColor": "#b45309", + "type": "line", + "id": "tc13", + "x": 41, + "y": 211.25, + "width": 7, + "height": 0.0, + "strokeColor": "#b45309", + "backgroundColor": "transparent", "fillStyle": "solid", "strokeWidth": 1, "strokeStyle": "solid", "roughness": 0, - "opacity": 100, + "opacity": 45, "angle": 0, "seed": 1025, "version": 1, "versionNonce": 1026, "isDeleted": false, "groupIds": [], - "boundElements": [], + "boundElements": null, "link": null, "locked": false, - "roundness": { - "type": 3 - } + "points": [ + [ + 0, + 0 + ], + [ + 7, + 0.0 + ] + ] }, { "type": "text", - "id": "colblkt12", - "x": 323.33333333333337, - "y": 278.125, - "width": 213.33333333333334, + "id": "tn14", + "x": 52, + "y": 203.125, + "width": 75.39999999999999, "height": 16.25, - "strokeColor": "#fef3c7", + "strokeColor": "#b45309", "backgroundColor": "transparent", "fillStyle": "solid", "strokeWidth": 1, @@ -436,87 +442,91 @@ "boundElements": null, "link": null, "locked": false, - "text": "layered over: RadLex", - "originalText": "layered over: RadLex", + "text": "part-solid", + "originalText": "part-solid", "fontSize": 13, "fontFamily": 2, - "textAlign": "center", + "textAlign": "left", "verticalAlign": "top", "containerId": null, "lineHeight": 1.25 }, { - "type": "rectangle", - "id": "axis3", - "x": 610.6666666666667, - "y": 66, - "width": 249.33333333333334, - "height": 280.5, + "type": "line", + "id": "tc15", + "x": 41, + "y": 175.25, + "width": 0, + "height": 59.0, "strokeColor": "#b45309", - "backgroundColor": "#fde68a", + "backgroundColor": "transparent", "fillStyle": "solid", - "strokeWidth": 2, + "strokeWidth": 1, "strokeStyle": "solid", "roughness": 0, - "opacity": 100, + "opacity": 45, "angle": 0, "seed": 1029, "version": 1, "versionNonce": 1030, "isDeleted": false, "groupIds": [], - "boundElements": [ - { - "id": "rel21", - "type": "arrow" - } - ], + "boundElements": null, "link": null, "locked": false, - "roundness": { - "type": 3 - } + "points": [ + [ + 0, + 0 + ], + [ + 0, + 59.0 + ] + ] }, { - "type": "image", - "id": "coli13", - "x": 717.3333333333334, - "y": 110, - "width": 36, - "height": 36, - "strokeColor": "transparent", + "type": "line", + "id": "tc16", + "x": 41, + "y": 234.25, + "width": 7, + "height": 0.0, + "strokeColor": "#b45309", "backgroundColor": "transparent", "fillStyle": "solid", "strokeWidth": 1, "strokeStyle": "solid", "roughness": 0, - "opacity": 100, + "opacity": 45, "angle": 0, "seed": 1031, "version": 1, "versionNonce": 1032, "isDeleted": false, "groupIds": [], - "boundElements": [], + "boundElements": null, "link": null, "locked": false, - "fileId": "img_coli13", - "status": "saved", - "scale": [ - 1, - 1 - ], - "roundness": null, - "crop": null + "points": [ + [ + 0, + 0 + ], + [ + 7, + 0.0 + ] + ] }, { "type": "text", - "id": "colt14", - "x": 618.6666666666667, - "y": 156, - "width": 233.33333333333334, - "height": 21.25, - "strokeColor": "#78350f", + "id": "tn17", + "x": 52, + "y": 226.125, + "width": 67.86, + "height": 16.25, + "strokeColor": "#b45309", "backgroundColor": "transparent", "fillStyle": "solid", "strokeWidth": 1, @@ -532,24 +542,24 @@ "boundElements": null, "link": null, "locked": false, - "text": "Exam types", - "originalText": "Exam types", - "fontSize": 17, + "text": "non-solid", + "originalText": "non-solid", + "fontSize": 13, "fontFamily": 2, - "textAlign": "center", + "textAlign": "left", "verticalAlign": "top", "containerId": null, "lineHeight": 1.25 }, { - "type": "text", - "id": "coltag15", - "x": 618.6666666666667, - "y": 208.5, - "width": 233.33333333333334, - "height": 17.5, - "strokeColor": "#b45309", - "backgroundColor": "transparent", + "type": "rectangle", + "id": "tb18", + "x": 18, + "y": 257.75, + "width": 280, + "height": 20, + "strokeColor": "transparent", + "backgroundColor": "#fcd34d", "fillStyle": "solid", "strokeWidth": 1, "strokeStyle": "solid", @@ -561,27 +571,22 @@ "versionNonce": 1036, "isDeleted": false, "groupIds": [], - "boundElements": null, + "boundElements": [], "link": null, "locked": false, - "text": "HOW it was seen", - "originalText": "HOW it was seen", - "fontSize": 14, - "fontFamily": 2, - "textAlign": "center", - "verticalAlign": "top", - "containerId": null, - "lineHeight": 1.25 + "roundness": { + "type": 3 + } }, { - "type": "rectangle", - "id": "colblk16", - "x": 622.6666666666667, - "y": 260.0, - "width": 225.33333333333334, - "height": 48.5, + "type": "text", + "id": "tbt19", + "x": 28, + "y": 259.625, + "width": 67.86, + "height": 16.25, "strokeColor": "#78350f", - "backgroundColor": "#b45309", + "backgroundColor": "transparent", "fillStyle": "solid", "strokeWidth": 1, "strokeStyle": "solid", @@ -593,21 +598,26 @@ "versionNonce": 1038, "isDeleted": false, "groupIds": [], - "boundElements": [], + "boundElements": null, "link": null, "locked": false, - "roundness": { - "type": 3 - } + "text": "Diagnoses", + "originalText": "Diagnoses", + "fontSize": 13, + "fontFamily": 2, + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 }, { "type": "text", - "id": "colblkt17", - "x": 628.6666666666667, - "y": 270.0, - "width": 213.33333333333334, - "height": 16.25, - "strokeColor": "#fef3c7", + "id": "tn20", + "x": 34, + "y": 286.5, + "width": 146.16, + "height": 17.5, + "strokeColor": "#78350f", "backgroundColor": "transparent", "fillStyle": "solid", "strokeWidth": 1, @@ -623,29 +633,29 @@ "boundElements": null, "link": null, "locked": false, - "text": "layered over: LOINC/RSNA", - "originalText": "layered over: LOINC/RSNA", - "fontSize": 13, + "text": "pulmonary neoplasm", + "originalText": "pulmonary neoplasm", + "fontSize": 14, "fontFamily": 2, - "textAlign": "center", + "textAlign": "left", "verticalAlign": "top", "containerId": null, "lineHeight": 1.25 }, { - "type": "text", - "id": "colblkt18", - "x": 628.6666666666667, - "y": 286.25, - "width": 213.33333333333334, - "height": 16.25, - "strokeColor": "#fef3c7", + "type": "line", + "id": "tc21", + "x": 41, + "y": 305.25, + "width": 0, + "height": 13.0, + "strokeColor": "#b45309", "backgroundColor": "transparent", "fillStyle": "solid", "strokeWidth": 1, "strokeStyle": "solid", "roughness": 0, - "opacity": 100, + "opacity": 45, "angle": 0, "seed": 1041, "version": 1, @@ -655,33 +665,4738 @@ "boundElements": null, "link": null, "locked": false, - "text": "Playbook", - "originalText": "Playbook", - "fontSize": 13, - "fontFamily": 2, - "textAlign": "center", + "points": [ + [ + 0, + 0 + ], + [ + 0, + 13.0 + ] + ] + }, + { + "type": "line", + "id": "tc22", + "x": 41, + "y": 318.25, + "width": 7, + "height": 0.0, + "strokeColor": "#b45309", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 45, + "angle": 0, + "seed": 1043, + "version": 1, + "versionNonce": 1044, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "points": [ + [ + 0, + 0 + ], + [ + 7, + 0.0 + ] + ] + }, + { + "type": "text", + "id": "tn23", + "x": 52, + "y": 310.125, + "width": 196.04, + "height": 16.25, + "strokeColor": "#b45309", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1045, + "version": 1, + "versionNonce": 1046, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "non-small cell lung cancer", + "originalText": "non-small cell lung cancer", + "fontSize": 13, + "fontFamily": 2, + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 + }, + { + "type": "line", + "id": "tc24", + "x": 59, + "y": 328.25, + "width": 0, + "height": 13.0, + "strokeColor": "#b45309", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 45, + "angle": 0, + "seed": 1047, + "version": 1, + "versionNonce": 1048, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "points": [ + [ + 0, + 0 + ], + [ + 0, + 13.0 + ] + ] + }, + { + "type": "line", + "id": "tc25", + "x": 59, + "y": 341.25, + "width": 7, + "height": 0.0, + "strokeColor": "#b45309", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 45, + "angle": 0, + "seed": 1049, + "version": 1, + "versionNonce": 1050, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "points": [ + [ + 0, + 0 + ], + [ + 7, + 0.0 + ] + ] + }, + { + "type": "text", + "id": "tn26", + "x": 70, + "y": 333.125, + "width": 196.04, + "height": 16.25, + "strokeColor": "#b45309", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1051, + "version": 1, + "versionNonce": 1052, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "adenocarcinoma of the lung", + "originalText": "adenocarcinoma of the lung", + "fontSize": 13, + "fontFamily": 2, + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 + }, + { + "type": "rectangle", + "id": "tb27", + "x": 18, + "y": 364.75, + "width": 280, + "height": 20, + "strokeColor": "transparent", + "backgroundColor": "#fcd34d", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1053, + "version": 1, + "versionNonce": 1054, + "isDeleted": false, + "groupIds": [], + "boundElements": [], + "link": null, + "locked": false, + "roundness": { + "type": 3 + } + }, + { + "type": "text", + "id": "tbt28", + "x": 28, + "y": 366.625, + "width": 82.94, + "height": 16.25, + "strokeColor": "#78350f", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1055, + "version": 1, + "versionNonce": 1056, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "Assessments", + "originalText": "Assessments", + "fontSize": 13, + "fontFamily": 2, + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 + }, + { + "type": "text", + "id": "tn29", + "x": 34, + "y": 393.5, + "width": 73.08, + "height": 17.5, + "strokeColor": "#78350f", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1057, + "version": 1, + "versionNonce": 1058, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "Lung-RADS", + "originalText": "Lung-RADS", + "fontSize": 14, + "fontFamily": 2, + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 + }, + { + "type": "text", + "id": "tn30", + "x": 34, + "y": 416.5, + "width": 178.64, + "height": 17.5, + "strokeColor": "#78350f", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1059, + "version": 1, + "versionNonce": 1060, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "Salter-Harris category", + "originalText": "Salter-Harris category", + "fontSize": 14, + "fontFamily": 2, + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 + }, + { + "type": "rectangle", + "id": "tb31", + "x": 18, + "y": 448.75, + "width": 280, + "height": 20, + "strokeColor": "transparent", + "backgroundColor": "#fcd34d", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1061, + "version": 1, + "versionNonce": 1062, + "isDeleted": false, + "groupIds": [], + "boundElements": [], + "link": null, + "locked": false, + "roundness": { + "type": 3 + } + }, + { + "type": "text", + "id": "tbt32", + "x": 28, + "y": 450.625, + "width": 98.02, + "height": 16.25, + "strokeColor": "#78350f", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1063, + "version": 1, + "versionNonce": 1064, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "Data Elements", + "originalText": "Data Elements", + "fontSize": 13, + "fontFamily": 2, + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 + }, + { + "type": "text", + "id": "tn33", + "x": 34, + "y": 477.5, + "width": 64.96, + "height": 17.5, + "strokeColor": "#78350f", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1065, + "version": 1, + "versionNonce": 1066, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "presence", + "originalText": "presence", + "fontSize": 14, + "fontFamily": 2, + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 + }, + { + "type": "text", + "id": "ta34", + "x": 42, + "y": 501.125, + "width": 316.67999999999995, + "height": 16.25, + "strokeColor": "#b45309", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1067, + "version": 1, + "versionNonce": 1068, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "present \u00b7 absent \u00b7 indeterminate \u00b7 unknown", + "originalText": "present \u00b7 absent \u00b7 indeterminate \u00b7 unknown", + "fontSize": 13, + "fontFamily": 2, + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 + }, + { + "type": "text", + "id": "tn35", + "x": 34, + "y": 523.5, + "width": 64.96, + "height": 17.5, + "strokeColor": "#78350f", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1069, + "version": 1, + "versionNonce": 1070, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "severity", + "originalText": "severity", + "fontSize": 14, + "fontFamily": 2, + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 + }, + { + "type": "text", + "id": "ta36", + "x": 42, + "y": 547.125, + "width": 256.35999999999996, + "height": 16.25, + "strokeColor": "#b45309", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1071, + "version": 1, + "versionNonce": 1072, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "minimal \u00b7 mild \u00b7 moderate \u00b7 severe", + "originalText": "minimal \u00b7 mild \u00b7 moderate \u00b7 severe", + "fontSize": 13, + "fontFamily": 2, + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 + }, + { + "type": "rectangle", + "id": "tb37", + "x": 18, + "y": 578.75, + "width": 280, + "height": 20, + "strokeColor": "transparent", + "backgroundColor": "#fcd34d", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1073, + "version": 1, + "versionNonce": 1074, + "isDeleted": false, + "groupIds": [], + "boundElements": [], + "link": null, + "locked": false, + "roundness": { + "type": 3 + } + }, + { + "type": "text", + "id": "tbt38", + "x": 28, + "y": 580.625, + "width": 90.47999999999999, + "height": 16.25, + "strokeColor": "#78350f", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1075, + "version": 1, + "versionNonce": 1076, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "Measurements", + "originalText": "Measurements", + "fontSize": 13, + "fontFamily": 2, + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 + }, + { + "type": "text", + "id": "tn39", + "x": 34, + "y": 607.5, + "width": 48.72, + "height": 17.5, + "strokeColor": "#78350f", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1077, + "version": 1, + "versionNonce": 1078, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "length", + "originalText": "length", + "fontSize": 14, + "fontFamily": 2, + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 + }, + { + "type": "text", + "id": "ta40", + "x": 42, + "y": 631.125, + "width": 82.94, + "height": 16.25, + "strokeColor": "#b45309", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1079, + "version": 1, + "versionNonce": 1080, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "mm, cm, ...", + "originalText": "mm, cm, ...", + "fontSize": 13, + "fontFamily": 2, + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 + }, + { + "type": "text", + "id": "tn41", + "x": 34, + "y": 653.5, + "width": 81.19999999999999, + "height": 17.5, + "strokeColor": "#78350f", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1081, + "version": 1, + "versionNonce": 1082, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "CT density", + "originalText": "CT density", + "fontSize": 14, + "fontFamily": 2, + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 + }, + { + "type": "text", + "id": "ta42", + "x": 42, + "y": 677.125, + "width": 15.079999999999998, + "height": 16.25, + "strokeColor": "#b45309", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1083, + "version": 1, + "versionNonce": 1084, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "HU", + "originalText": "HU", + "fontSize": 13, + "fontFamily": 2, + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 + }, + { + "type": "rectangle", + "id": "colblk43", + "x": 18, + "y": 758.0, + "width": 280, + "height": 48.5, + "strokeColor": "#78350f", + "backgroundColor": "#b45309", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1085, + "version": 1, + "versionNonce": 1086, + "isDeleted": false, + "groupIds": [], + "boundElements": [], + "link": null, + "locked": false, + "roundness": { + "type": 3 + } + }, + { + "type": "text", + "id": "colblkt44", + "x": 24, + "y": 768.0, + "width": 268, + "height": 16.25, + "strokeColor": "#fef3c7", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1087, + "version": 1, + "versionNonce": 1088, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "layered over: finding models", + "originalText": "layered over: finding models", + "fontSize": 13, + "fontFamily": 2, + "textAlign": "center", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 + }, + { + "type": "text", + "id": "colblkt45", + "x": 24, + "y": 784.25, + "width": 268, + "height": 16.25, + "strokeColor": "#fef3c7", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1089, + "version": 1, + "versionNonce": 1090, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "\u00b7 ACR/RSNA CDEs", + "originalText": "\u00b7 ACR/RSNA CDEs", + "fontSize": 13, + "fontFamily": 2, + "textAlign": "center", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 + }, + { + "type": "rectangle", + "id": "col46", + "x": 336, + "y": 0, + "width": 316, + "height": 822.5, + "strokeColor": "#b45309", + "backgroundColor": "#fde68a", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1091, + "version": 1, + "versionNonce": 1092, + "isDeleted": false, + "groupIds": [], + "boundElements": [], + "link": null, + "locked": false, + "roundness": { + "type": 3 + } + }, + { + "type": "image", + "id": "coli47", + "x": 476.0, + "y": 16, + "width": 36, + "height": 36, + "strokeColor": "transparent", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1093, + "version": 1, + "versionNonce": 1094, + "isDeleted": false, + "groupIds": [], + "boundElements": [], + "link": null, + "locked": false, + "fileId": "img_coli47", + "status": "saved", + "scale": [ + 1, + 1 + ], + "roundness": null, + "crop": null + }, + { + "type": "text", + "id": "colt48", + "x": 344, + "y": 61, + "width": 300, + "height": 21.25, + "strokeColor": "#78350f", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1095, + "version": 1, + "versionNonce": 1096, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "Anatomic Locations", + "originalText": "Anatomic Locations", + "fontSize": 17, + "fontFamily": 2, + "textAlign": "center", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 + }, + { + "type": "text", + "id": "coltag49", + "x": 344, + "y": 87.25, + "width": 300, + "height": 17.5, + "strokeColor": "#b45309", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1097, + "version": 1, + "versionNonce": 1098, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "WHERE it is", + "originalText": "WHERE it is", + "fontSize": 14, + "fontFamily": 2, + "textAlign": "center", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 + }, + { + "type": "line", + "id": "rule50", + "x": 354, + "y": 115.75, + "width": 280, + "height": 0, + "strokeColor": "#b45309", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 35, + "angle": 0, + "seed": 1099, + "version": 1, + "versionNonce": 1100, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "points": [ + [ + 0, + 0 + ], + [ + 280, + 0 + ] + ] + }, + { + "type": "rectangle", + "id": "tb51", + "x": 354, + "y": 127.75, + "width": 280, + "height": 20, + "strokeColor": "transparent", + "backgroundColor": "#fcd34d", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1101, + "version": 1, + "versionNonce": 1102, + "isDeleted": false, + "groupIds": [], + "boundElements": [], + "link": null, + "locked": false, + "roundness": { + "type": 3 + } + }, + { + "type": "text", + "id": "tbt52", + "x": 364, + "y": 129.625, + "width": 45.239999999999995, + "height": 16.25, + "strokeColor": "#78350f", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1103, + "version": 1, + "versionNonce": 1104, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "thorax", + "originalText": "thorax", + "fontSize": 13, + "fontFamily": 2, + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 + }, + { + "type": "text", + "id": "tn53", + "x": 370, + "y": 156.24404761904762, + "width": 32.48, + "height": 17.5, + "strokeColor": "#78350f", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1105, + "version": 1, + "versionNonce": 1106, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "lung", + "originalText": "lung", + "fontSize": 14, + "fontFamily": 2, + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 + }, + { + "type": "line", + "id": "tc54", + "x": 377, + "y": 174.99404761904762, + "width": 0, + "height": 12.48809523809524, + "strokeColor": "#b45309", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 45, + "angle": 0, + "seed": 1107, + "version": 1, + "versionNonce": 1108, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "points": [ + [ + 0, + 0 + ], + [ + 0, + 12.48809523809524 + ] + ] + }, + { + "type": "line", + "id": "tc55", + "x": 377, + "y": 187.48214285714286, + "width": 7, + "height": 0.0, + "strokeColor": "#b45309", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 45, + "angle": 0, + "seed": 1109, + "version": 1, + "versionNonce": 1110, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "points": [ + [ + 0, + 0 + ], + [ + 7, + 0.0 + ] + ] + }, + { + "type": "text", + "id": "tn56", + "x": 388, + "y": 179.35714285714286, + "width": 75.39999999999999, + "height": 16.25, + "strokeColor": "#b45309", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1111, + "version": 1, + "versionNonce": 1112, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "right lung", + "originalText": "right lung", + "fontSize": 13, + "fontFamily": 2, + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 + }, + { + "type": "line", + "id": "tc57", + "x": 395, + "y": 197.48214285714286, + "width": 0, + "height": 12.48809523809524, + "strokeColor": "#b45309", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 45, + "angle": 0, + "seed": 1113, + "version": 1, + "versionNonce": 1114, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "points": [ + [ + 0, + 0 + ], + [ + 0, + 12.48809523809524 + ] + ] + }, + { + "type": "line", + "id": "tc58", + "x": 395, + "y": 209.9702380952381, + "width": 7, + "height": 0.0, + "strokeColor": "#b45309", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 45, + "angle": 0, + "seed": 1115, + "version": 1, + "versionNonce": 1116, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "points": [ + [ + 0, + 0 + ], + [ + 7, + 0.0 + ] + ] + }, + { + "type": "text", + "id": "tn59", + "x": 406, + "y": 201.8452380952381, + "width": 180.95999999999998, + "height": 16.25, + "strokeColor": "#b45309", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1117, + "version": 1, + "versionNonce": 1118, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "upper lobe of right lung", + "originalText": "upper lobe of right lung", + "fontSize": 13, + "fontFamily": 2, + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 + }, + { + "type": "line", + "id": "tc60", + "x": 395, + "y": 197.48214285714286, + "width": 0, + "height": 34.97619047619048, + "strokeColor": "#b45309", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 45, + "angle": 0, + "seed": 1119, + "version": 1, + "versionNonce": 1120, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "points": [ + [ + 0, + 0 + ], + [ + 0, + 34.97619047619048 + ] + ] + }, + { + "type": "line", + "id": "tc61", + "x": 395, + "y": 232.45833333333334, + "width": 7, + "height": 0.0, + "strokeColor": "#b45309", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 45, + "angle": 0, + "seed": 1121, + "version": 1, + "versionNonce": 1122, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "points": [ + [ + 0, + 0 + ], + [ + 7, + 0.0 + ] + ] + }, + { + "type": "text", + "id": "tn62", + "x": 406, + "y": 224.33333333333334, + "width": 188.5, + "height": 16.25, + "strokeColor": "#b45309", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1123, + "version": 1, + "versionNonce": 1124, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "middle lobe of right lung", + "originalText": "middle lobe of right lung", + "fontSize": 13, + "fontFamily": 2, + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 + }, + { + "type": "line", + "id": "tc63", + "x": 395, + "y": 197.48214285714286, + "width": 0, + "height": 57.46428571428572, + "strokeColor": "#b45309", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 45, + "angle": 0, + "seed": 1125, + "version": 1, + "versionNonce": 1126, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "points": [ + [ + 0, + 0 + ], + [ + 0, + 57.46428571428572 + ] + ] + }, + { + "type": "line", + "id": "tc64", + "x": 395, + "y": 254.94642857142858, + "width": 7, + "height": 0.0, + "strokeColor": "#b45309", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 45, + "angle": 0, + "seed": 1127, + "version": 1, + "versionNonce": 1128, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "points": [ + [ + 0, + 0 + ], + [ + 7, + 0.0 + ] + ] + }, + { + "type": "text", + "id": "tn65", + "x": 406, + "y": 246.82142857142858, + "width": 180.95999999999998, + "height": 16.25, + "strokeColor": "#b45309", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1129, + "version": 1, + "versionNonce": 1130, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "lower lobe of right lung", + "originalText": "lower lobe of right lung", + "fontSize": 13, + "fontFamily": 2, + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 + }, + { + "type": "line", + "id": "tc66", + "x": 377, + "y": 174.99404761904762, + "width": 0, + "height": 102.44047619047618, + "strokeColor": "#b45309", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 45, + "angle": 0, + "seed": 1131, + "version": 1, + "versionNonce": 1132, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "points": [ + [ + 0, + 0 + ], + [ + 0, + 102.44047619047618 + ] + ] + }, + { + "type": "line", + "id": "tc67", + "x": 377, + "y": 277.4345238095238, + "width": 7, + "height": 0.0, + "strokeColor": "#b45309", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 45, + "angle": 0, + "seed": 1133, + "version": 1, + "versionNonce": 1134, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "points": [ + [ + 0, + 0 + ], + [ + 7, + 0.0 + ] + ] + }, + { + "type": "text", + "id": "tn68", + "x": 388, + "y": 269.3095238095238, + "width": 67.86, + "height": 16.25, + "strokeColor": "#b45309", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1135, + "version": 1, + "versionNonce": 1136, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "left lung", + "originalText": "left lung", + "fontSize": 13, + "fontFamily": 2, + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 + }, + { + "type": "text", + "id": "tn69", + "x": 370, + "y": 291.172619047619, + "width": 105.55999999999999, + "height": 17.5, + "strokeColor": "#78350f", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1137, + "version": 1, + "versionNonce": 1138, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "pleural space", + "originalText": "pleural space", + "fontSize": 14, + "fontFamily": 2, + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 + }, + { + "type": "text", + "id": "tn70", + "x": 370, + "y": 313.66071428571416, + "width": 89.32, + "height": 17.5, + "strokeColor": "#78350f", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1139, + "version": 1, + "versionNonce": 1140, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "mediastinum", + "originalText": "mediastinum", + "fontSize": 14, + "fontFamily": 2, + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 + }, + { + "type": "line", + "id": "tc71", + "x": 377, + "y": 332.41071428571416, + "width": 0, + "height": 12.488095238095184, + "strokeColor": "#b45309", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 45, + "angle": 0, + "seed": 1141, + "version": 1, + "versionNonce": 1142, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "points": [ + [ + 0, + 0 + ], + [ + 0, + 12.488095238095184 + ] + ] + }, + { + "type": "line", + "id": "tc72", + "x": 377, + "y": 344.89880952380935, + "width": 7, + "height": 0.0, + "strokeColor": "#b45309", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 45, + "angle": 0, + "seed": 1143, + "version": 1, + "versionNonce": 1144, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "points": [ + [ + 0, + 0 + ], + [ + 7, + 0.0 + ] + ] + }, + { + "type": "text", + "id": "tn73", + "x": 388, + "y": 336.77380952380935, + "width": 37.699999999999996, + "height": 16.25, + "strokeColor": "#b45309", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1145, + "version": 1, + "versionNonce": 1146, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "heart", + "originalText": "heart", + "fontSize": 13, + "fontFamily": 2, + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 + }, + { + "type": "rectangle", + "id": "tb74", + "x": 354, + "y": 368.14285714285694, + "width": 280, + "height": 20, + "strokeColor": "transparent", + "backgroundColor": "#fcd34d", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1147, + "version": 1, + "versionNonce": 1148, + "isDeleted": false, + "groupIds": [], + "boundElements": [], + "link": null, + "locked": false, + "roundness": { + "type": 3 + } + }, + { + "type": "text", + "id": "tbt75", + "x": 364, + "y": 370.01785714285694, + "width": 52.779999999999994, + "height": 16.25, + "strokeColor": "#78350f", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1149, + "version": 1, + "versionNonce": 1150, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "abdomen", + "originalText": "abdomen", + "fontSize": 13, + "fontFamily": 2, + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 + }, + { + "type": "text", + "id": "tn76", + "x": 370, + "y": 396.63690476190453, + "width": 48.72, + "height": 17.5, + "strokeColor": "#78350f", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1151, + "version": 1, + "versionNonce": 1152, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "kidney", + "originalText": "kidney", + "fontSize": 14, + "fontFamily": 2, + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 + }, + { + "type": "line", + "id": "tc77", + "x": 377, + "y": 415.38690476190453, + "width": 0, + "height": 12.488095238095184, + "strokeColor": "#b45309", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 45, + "angle": 0, + "seed": 1153, + "version": 1, + "versionNonce": 1154, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "points": [ + [ + 0, + 0 + ], + [ + 0, + 12.488095238095184 + ] + ] + }, + { + "type": "line", + "id": "tc78", + "x": 377, + "y": 427.8749999999997, + "width": 7, + "height": 0.0, + "strokeColor": "#b45309", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 45, + "angle": 0, + "seed": 1155, + "version": 1, + "versionNonce": 1156, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "points": [ + [ + 0, + 0 + ], + [ + 7, + 0.0 + ] + ] + }, + { + "type": "text", + "id": "tn79", + "x": 388, + "y": 419.7499999999997, + "width": 82.94, + "height": 16.25, + "strokeColor": "#b45309", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1157, + "version": 1, + "versionNonce": 1158, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "left kidney", + "originalText": "left kidney", + "fontSize": 13, + "fontFamily": 2, + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 + }, + { + "type": "line", + "id": "tc80", + "x": 377, + "y": 415.38690476190453, + "width": 0, + "height": 34.97619047619037, + "strokeColor": "#b45309", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 45, + "angle": 0, + "seed": 1159, + "version": 1, + "versionNonce": 1160, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "points": [ + [ + 0, + 0 + ], + [ + 0, + 34.97619047619037 + ] + ] + }, + { + "type": "line", + "id": "tc81", + "x": 377, + "y": 450.3630952380949, + "width": 7, + "height": 0.0, + "strokeColor": "#b45309", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 45, + "angle": 0, + "seed": 1161, + "version": 1, + "versionNonce": 1162, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "points": [ + [ + 0, + 0 + ], + [ + 7, + 0.0 + ] + ] + }, + { + "type": "text", + "id": "tn82", + "x": 388, + "y": 442.2380952380949, + "width": 90.47999999999999, + "height": 16.25, + "strokeColor": "#b45309", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1163, + "version": 1, + "versionNonce": 1164, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "right kidney", + "originalText": "right kidney", + "fontSize": 13, + "fontFamily": 2, + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 + }, + { + "type": "line", + "id": "tc83", + "x": 395, + "y": 460.3630952380949, + "width": 0, + "height": 12.488095238095184, + "strokeColor": "#b45309", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 45, + "angle": 0, + "seed": 1165, + "version": 1, + "versionNonce": 1166, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "points": [ + [ + 0, + 0 + ], + [ + 0, + 12.488095238095184 + ] + ] + }, + { + "type": "line", + "id": "tc84", + "x": 395, + "y": 472.8511904761901, + "width": 7, + "height": 0.0, + "strokeColor": "#b45309", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 45, + "angle": 0, + "seed": 1167, + "version": 1, + "versionNonce": 1168, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "points": [ + [ + 0, + 0 + ], + [ + 7, + 0.0 + ] + ] + }, + { + "type": "text", + "id": "tn85", + "x": 406, + "y": 464.7261904761901, + "width": 90.47999999999999, + "height": 16.25, + "strokeColor": "#b45309", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1169, + "version": 1, + "versionNonce": 1170, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "renal pelvis", + "originalText": "renal pelvis", + "fontSize": 13, + "fontFamily": 2, + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 + }, + { + "type": "text", + "id": "tn86", + "x": 370, + "y": 486.58928571428527, + "width": 40.599999999999994, + "height": 17.5, + "strokeColor": "#78350f", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1171, + "version": 1, + "versionNonce": 1172, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "liver", + "originalText": "liver", + "fontSize": 14, + "fontFamily": 2, + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 + }, + { + "type": "text", + "id": "tn87", + "x": 370, + "y": 509.0773809523805, + "width": 48.72, + "height": 17.5, + "strokeColor": "#78350f", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1173, + "version": 1, + "versionNonce": 1174, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "spleen", + "originalText": "spleen", + "fontSize": 14, + "fontFamily": 2, + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 + }, + { + "type": "rectangle", + "id": "tb88", + "x": 354, + "y": 541.0714285714281, + "width": 280, + "height": 20, + "strokeColor": "transparent", + "backgroundColor": "#fcd34d", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1175, + "version": 1, + "versionNonce": 1176, + "isDeleted": false, + "groupIds": [], + "boundElements": [], + "link": null, + "locked": false, + "roundness": { + "type": 3 + } + }, + { + "type": "text", + "id": "tbt89", + "x": 364, + "y": 542.9464285714281, + "width": 30.159999999999997, + "height": 16.25, + "strokeColor": "#78350f", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1177, + "version": 1, + "versionNonce": 1178, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "head", + "originalText": "head", + "fontSize": 13, + "fontFamily": 2, + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 + }, + { + "type": "text", + "id": "tn90", + "x": 370, + "y": 569.5654761904757, + "width": 40.599999999999994, + "height": 17.5, + "strokeColor": "#78350f", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1179, + "version": 1, + "versionNonce": 1180, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "brain", + "originalText": "brain", + "fontSize": 14, + "fontFamily": 2, + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 + }, + { + "type": "line", + "id": "tc91", + "x": 377, + "y": 588.3154761904757, + "width": 0, + "height": 12.488095238095184, + "strokeColor": "#b45309", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 45, + "angle": 0, + "seed": 1181, + "version": 1, + "versionNonce": 1182, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "points": [ + [ + 0, + 0 + ], + [ + 0, + 12.488095238095184 + ] + ] + }, + { + "type": "line", + "id": "tc92", + "x": 377, + "y": 600.8035714285709, + "width": 7, + "height": 0.0, + "strokeColor": "#b45309", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 45, + "angle": 0, + "seed": 1183, + "version": 1, + "versionNonce": 1184, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "points": [ + [ + 0, + 0 + ], + [ + 7, + 0.0 + ] + ] + }, + { + "type": "text", + "id": "tn93", + "x": 388, + "y": 592.6785714285709, + "width": 75.39999999999999, + "height": 16.25, + "strokeColor": "#b45309", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1185, + "version": 1, + "versionNonce": 1186, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "cerebellum", + "originalText": "cerebellum", + "fontSize": 13, + "fontFamily": 2, + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 + }, + { + "type": "line", + "id": "tc94", + "x": 377, + "y": 588.3154761904757, + "width": 0, + "height": 34.97619047619037, + "strokeColor": "#b45309", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 45, + "angle": 0, + "seed": 1187, + "version": 1, + "versionNonce": 1188, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "points": [ + [ + 0, + 0 + ], + [ + 0, + 34.97619047619037 + ] + ] + }, + { + "type": "line", + "id": "tc95", + "x": 377, + "y": 623.2916666666661, + "width": 7, + "height": 0.0, + "strokeColor": "#b45309", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 45, + "angle": 0, + "seed": 1189, + "version": 1, + "versionNonce": 1190, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "points": [ + [ + 0, + 0 + ], + [ + 7, + 0.0 + ] + ] + }, + { + "type": "text", + "id": "tn96", + "x": 388, + "y": 615.1666666666661, + "width": 90.47999999999999, + "height": 16.25, + "strokeColor": "#b45309", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1191, + "version": 1, + "versionNonce": 1192, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "frontal lobe", + "originalText": "frontal lobe", + "fontSize": 13, + "fontFamily": 2, + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 + }, + { + "type": "text", + "id": "tn97", + "x": 370, + "y": 637.0297619047612, + "width": 40.599999999999994, + "height": 17.5, + "strokeColor": "#78350f", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1193, + "version": 1, + "versionNonce": 1194, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "orbit", + "originalText": "orbit", + "fontSize": 14, + "fontFamily": 2, + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 + }, + { + "type": "rectangle", + "id": "tb98", + "x": 354, + "y": 669.0238095238088, + "width": 280, + "height": 20, + "strokeColor": "transparent", + "backgroundColor": "#fcd34d", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1195, + "version": 1, + "versionNonce": 1196, + "isDeleted": false, + "groupIds": [], + "boundElements": [], + "link": null, + "locked": false, + "roundness": { + "type": 3 + } + }, + { + "type": "text", + "id": "tbt99", + "x": 364, + "y": 670.8988095238088, + "width": 45.239999999999995, + "height": 16.25, + "strokeColor": "#78350f", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1197, + "version": 1, + "versionNonce": 1198, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "pelvis", + "originalText": "pelvis", + "fontSize": 13, + "fontFamily": 2, + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 + }, + { + "type": "text", + "id": "tn100", + "x": 370, + "y": 697.5178571428564, + "width": 121.8, + "height": 17.5, + "strokeColor": "#78350f", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1199, + "version": 1, + "versionNonce": 1200, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "urinary bladder", + "originalText": "urinary bladder", + "fontSize": 14, + "fontFamily": 2, + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 + }, + { + "type": "text", + "id": "tn101", + "x": 370, + "y": 720.0059523809516, + "width": 64.96, + "height": 17.5, + "strokeColor": "#78350f", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1201, + "version": 1, + "versionNonce": 1202, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "prostate", + "originalText": "prostate", + "fontSize": 14, + "fontFamily": 2, + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 + }, + { + "type": "rectangle", + "id": "colblk102", + "x": 354, + "y": 758.0, + "width": 280, + "height": 48.5, + "strokeColor": "#78350f", + "backgroundColor": "#b45309", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1203, + "version": 1, + "versionNonce": 1204, + "isDeleted": false, + "groupIds": [], + "boundElements": [], + "link": null, + "locked": false, + "roundness": { + "type": 3 + } + }, + { + "type": "text", + "id": "colblkt103", + "x": 360, + "y": 776.125, + "width": 268, + "height": 16.25, + "strokeColor": "#fef3c7", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1205, + "version": 1, + "versionNonce": 1206, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "layered over: RadLex", + "originalText": "layered over: RadLex", + "fontSize": 13, + "fontFamily": 2, + "textAlign": "center", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 + }, + { + "type": "rectangle", + "id": "col104", + "x": 672, + "y": 0, + "width": 316, + "height": 822.5, + "strokeColor": "#b45309", + "backgroundColor": "#fde68a", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1207, + "version": 1, + "versionNonce": 1208, + "isDeleted": false, + "groupIds": [], + "boundElements": [], + "link": null, + "locked": false, + "roundness": { + "type": 3 + } + }, + { + "type": "image", + "id": "coli105", + "x": 812.0, + "y": 16, + "width": 36, + "height": 36, + "strokeColor": "transparent", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1209, + "version": 1, + "versionNonce": 1210, + "isDeleted": false, + "groupIds": [], + "boundElements": [], + "link": null, + "locked": false, + "fileId": "img_coli105", + "status": "saved", + "scale": [ + 1, + 1 + ], + "roundness": null, + "crop": null + }, + { + "type": "text", + "id": "colt106", + "x": 680, + "y": 61, + "width": 300, + "height": 21.25, + "strokeColor": "#78350f", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1211, + "version": 1, + "versionNonce": 1212, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "Exam Types", + "originalText": "Exam Types", + "fontSize": 17, + "fontFamily": 2, + "textAlign": "center", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 + }, + { + "type": "text", + "id": "coltag107", + "x": 680, + "y": 87.25, + "width": 300, + "height": 17.5, + "strokeColor": "#b45309", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1213, + "version": 1, + "versionNonce": 1214, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "HOW it was seen", + "originalText": "HOW it was seen", + "fontSize": 14, + "fontFamily": 2, + "textAlign": "center", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 + }, + { + "type": "line", + "id": "rule108", + "x": 690, + "y": 115.75, + "width": 280, + "height": 0, + "strokeColor": "#b45309", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 35, + "angle": 0, + "seed": 1215, + "version": 1, + "versionNonce": 1216, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "points": [ + [ + 0, + 0 + ], + [ + 280, + 0 + ] + ] + }, + { + "type": "rectangle", + "id": "tb109", + "x": 690, + "y": 127.75, + "width": 280, + "height": 20, + "strokeColor": "transparent", + "backgroundColor": "#fcd34d", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1217, + "version": 1, + "versionNonce": 1218, + "isDeleted": false, + "groupIds": [], + "boundElements": [], + "link": null, + "locked": false, + "roundness": { + "type": 3 + } + }, + { + "type": "text", + "id": "tbt110", + "x": 700, + "y": 129.625, + "width": 15.079999999999998, + "height": 16.25, + "strokeColor": "#78350f", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1219, + "version": 1, + "versionNonce": 1220, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "CT", + "originalText": "CT", + "fontSize": 13, + "fontFamily": 2, + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 + }, + { + "type": "text", + "id": "tn111", + "x": 706, + "y": 154.5, + "width": 64.96, + "height": 17.5, + "strokeColor": "#78350f", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1221, + "version": 1, + "versionNonce": 1222, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "CT Chest", + "originalText": "CT Chest", + "fontSize": 14, + "fontFamily": 2, + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 + }, + { + "type": "text", + "id": "tns112", + "x": 772.1, + "y": 155.125, + "width": 135.72, + "height": 16.25, + "strokeColor": "#b45309", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1223, + "version": 1, + "versionNonce": 1224, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "(preferred family)", + "originalText": "(preferred family)", + "fontSize": 13, + "fontFamily": 2, + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 + }, + { + "type": "line", + "id": "tc113", + "x": 713, + "y": 173.25, + "width": 0, + "height": 9.0, + "strokeColor": "#b45309", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 45, + "angle": 0, + "seed": 1225, + "version": 1, + "versionNonce": 1226, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "points": [ + [ + 0, + 0 + ], + [ + 0, + 9.0 + ] + ] + }, + { + "type": "line", + "id": "tc114", + "x": 713, + "y": 182.25, + "width": 7, + "height": 0.0, + "strokeColor": "#b45309", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 45, + "angle": 0, + "seed": 1227, + "version": 1, + "versionNonce": 1228, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "points": [ + [ + 0, + 0 + ], + [ + 7, + 0.0 + ] + ] + }, + { + "type": "text", + "id": "tn115", + "x": 724, + "y": 174.125, + "width": 150.79999999999998, + "height": 16.25, + "strokeColor": "#b45309", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1229, + "version": 1, + "versionNonce": 1230, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "CT Chest WO contrast", + "originalText": "CT Chest WO contrast", + "fontSize": 13, + "fontFamily": 2, + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 + }, + { + "type": "line", + "id": "tc116", + "x": 713, + "y": 173.25, + "width": 0, + "height": 28.0, + "strokeColor": "#b45309", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 45, + "angle": 0, + "seed": 1231, + "version": 1, + "versionNonce": 1232, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "points": [ + [ + 0, + 0 + ], + [ + 0, + 28.0 + ] + ] + }, + { + "type": "line", + "id": "tc117", + "x": 713, + "y": 201.25, + "width": 7, + "height": 0.0, + "strokeColor": "#b45309", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 45, + "angle": 0, + "seed": 1233, + "version": 1, + "versionNonce": 1234, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "points": [ + [ + 0, + 0 + ], + [ + 7, + 0.0 + ] + ] + }, + { + "type": "text", + "id": "tn118", + "x": 724, + "y": 193.125, + "width": 165.88, + "height": 16.25, + "strokeColor": "#b45309", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1235, + "version": 1, + "versionNonce": 1236, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "CT Chest W contrast IV", + "originalText": "CT Chest W contrast IV", + "fontSize": 13, + "fontFamily": 2, + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 + }, + { + "type": "line", + "id": "tc119", + "x": 713, + "y": 173.25, + "width": 0, + "height": 47.0, + "strokeColor": "#b45309", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 45, + "angle": 0, + "seed": 1237, + "version": 1, + "versionNonce": 1238, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "points": [ + [ + 0, + 0 + ], + [ + 0, + 47.0 + ] + ] + }, + { + "type": "line", + "id": "tc120", + "x": 713, + "y": 220.25, + "width": 7, + "height": 0.0, + "strokeColor": "#b45309", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 45, + "angle": 0, + "seed": 1239, + "version": 1, + "versionNonce": 1240, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "points": [ + [ + 0, + 0 + ], + [ + 7, + 0.0 + ] + ] + }, + { + "type": "text", + "id": "tn121", + "x": 724, + "y": 212.125, + "width": 218.66, + "height": 16.25, + "strokeColor": "#b45309", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1241, + "version": 1, + "versionNonce": 1242, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "CT Chest WO and W contrast IV", + "originalText": "CT Chest WO and W contrast IV", + "fontSize": 13, + "fontFamily": 2, + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 + }, + { + "type": "line", + "id": "tc122", + "x": 713, + "y": 173.25, + "width": 0, + "height": 66.0, + "strokeColor": "#b45309", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 45, + "angle": 0, + "seed": 1243, + "version": 1, + "versionNonce": 1244, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "points": [ + [ + 0, + 0 + ], + [ + 0, + 66.0 + ] + ] + }, + { + "type": "line", + "id": "tc123", + "x": 713, + "y": 239.25, + "width": 7, + "height": 0.0, + "strokeColor": "#b45309", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 45, + "angle": 0, + "seed": 1245, + "version": 1, + "versionNonce": 1246, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "points": [ + [ + 0, + 0 + ], + [ + 7, + 0.0 + ] + ] + }, + { + "type": "text", + "id": "tn124", + "x": 724, + "y": 231.125, + "width": 226.2, + "height": 16.25, + "strokeColor": "#b45309", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1247, + "version": 1, + "versionNonce": 1248, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "CT Lung parenchyma WO contrast", + "originalText": "CT Lung parenchyma WO contrast", + "fontSize": 13, + "fontFamily": 2, + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 + }, + { + "type": "line", + "id": "tc125", + "x": 713, + "y": 173.25, + "width": 0, + "height": 85.0, + "strokeColor": "#b45309", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 45, + "angle": 0, + "seed": 1249, + "version": 1, + "versionNonce": 1250, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "points": [ + [ + 0, + 0 + ], + [ + 0, + 85.0 + ] + ] + }, + { + "type": "line", + "id": "tc126", + "x": 713, + "y": 258.25, + "width": 7, + "height": 0.0, + "strokeColor": "#b45309", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 45, + "angle": 0, + "seed": 1251, + "version": 1, + "versionNonce": 1252, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "points": [ + [ + 0, + 0 + ], + [ + 7, + 0.0 + ] + ] + }, + { + "type": "text", + "id": "tn127", + "x": 724, + "y": 250.125, + "width": 128.17999999999998, + "height": 16.25, + "strokeColor": "#b45309", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1253, + "version": 1, + "versionNonce": 1254, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "CTA Chest vessels", + "originalText": "CTA Chest vessels", + "fontSize": 13, + "fontFamily": 2, + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 + }, + { + "type": "rectangle", + "id": "tb128", + "x": 690, + "y": 279.75, + "width": 280, + "height": 20, + "strokeColor": "transparent", + "backgroundColor": "#fcd34d", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1255, + "version": 1, + "versionNonce": 1256, + "isDeleted": false, + "groupIds": [], + "boundElements": [], + "link": null, + "locked": false, + "roundness": { + "type": 3 + } + }, + { + "type": "text", + "id": "tbt129", + "x": 700, + "y": 281.625, + "width": 15.079999999999998, + "height": 16.25, + "strokeColor": "#78350f", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1257, + "version": 1, + "versionNonce": 1258, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "MR", + "originalText": "MR", + "fontSize": 13, + "fontFamily": 2, + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 + }, + { + "type": "text", + "id": "tn130", + "x": 706, + "y": 306.5, + "width": 56.839999999999996, + "height": 17.5, + "strokeColor": "#78350f", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1259, + "version": 1, + "versionNonce": 1260, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "MR Knee", + "originalText": "MR Knee", + "fontSize": 14, + "fontFamily": 2, + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 + }, + { + "type": "text", + "id": "tns131", + "x": 771.4, + "y": 307.125, + "width": 135.72, + "height": 16.25, + "strokeColor": "#b45309", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1261, + "version": 1, + "versionNonce": 1262, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "(preferred family)", + "originalText": "(preferred family)", + "fontSize": 13, + "fontFamily": 2, + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 + }, + { + "type": "line", + "id": "tc132", + "x": 713, + "y": 325.25, + "width": 0, + "height": 9.0, + "strokeColor": "#b45309", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 45, + "angle": 0, + "seed": 1263, + "version": 1, + "versionNonce": 1264, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "points": [ + [ + 0, + 0 + ], + [ + 0, + 9.0 + ] + ] + }, + { + "type": "line", + "id": "tc133", + "x": 713, + "y": 334.25, + "width": 7, + "height": 0.0, + "strokeColor": "#b45309", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 45, + "angle": 0, + "seed": 1265, + "version": 1, + "versionNonce": 1266, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "points": [ + [ + 0, + 0 + ], + [ + 7, + 0.0 + ] + ] + }, + { + "type": "text", + "id": "tn134", + "x": 724, + "y": 326.125, + "width": 143.26, + "height": 16.25, + "strokeColor": "#b45309", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1267, + "version": 1, + "versionNonce": 1268, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "MR Knee WO contrast", + "originalText": "MR Knee WO contrast", + "fontSize": 13, + "fontFamily": 2, + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 + }, + { + "type": "line", + "id": "tc135", + "x": 713, + "y": 325.25, + "width": 0, + "height": 28.0, + "strokeColor": "#b45309", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 45, + "angle": 0, + "seed": 1269, + "version": 1, + "versionNonce": 1270, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "points": [ + [ + 0, + 0 + ], + [ + 0, + 28.0 + ] + ] + }, + { + "type": "line", + "id": "tc136", + "x": 713, + "y": 353.25, + "width": 7, + "height": 0.0, + "strokeColor": "#b45309", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 45, + "angle": 0, + "seed": 1271, + "version": 1, + "versionNonce": 1272, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "points": [ + [ + 0, + 0 + ], + [ + 7, + 0.0 + ] + ] + }, + { + "type": "text", + "id": "tn137", + "x": 724, + "y": 345.125, + "width": 158.33999999999997, + "height": 16.25, + "strokeColor": "#b45309", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1273, + "version": 1, + "versionNonce": 1274, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "MR Knee W contrast IV", + "originalText": "MR Knee W contrast IV", + "fontSize": 13, + "fontFamily": 2, + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 + }, + { + "type": "text", + "id": "tn138", + "x": 706, + "y": 369.5, + "width": 64.96, + "height": 17.5, + "strokeColor": "#78350f", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1275, + "version": 1, + "versionNonce": 1276, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "MR Brain", + "originalText": "MR Brain", + "fontSize": 14, + "fontFamily": 2, + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 + }, + { + "type": "text", + "id": "tns139", + "x": 771.3, + "y": 370.125, + "width": 135.72, + "height": 16.25, + "strokeColor": "#b45309", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1277, + "version": 1, + "versionNonce": 1278, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "(preferred family)", + "originalText": "(preferred family)", + "fontSize": 13, + "fontFamily": 2, + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 + }, + { + "type": "line", + "id": "tc140", + "x": 713, + "y": 388.25, + "width": 0, + "height": 9.0, + "strokeColor": "#b45309", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 45, + "angle": 0, + "seed": 1279, + "version": 1, + "versionNonce": 1280, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "points": [ + [ + 0, + 0 + ], + [ + 0, + 9.0 + ] + ] + }, + { + "type": "line", + "id": "tc141", + "x": 713, + "y": 397.25, + "width": 7, + "height": 0.0, + "strokeColor": "#b45309", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 45, + "angle": 0, + "seed": 1281, + "version": 1, + "versionNonce": 1282, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "points": [ + [ + 0, + 0 + ], + [ + 7, + 0.0 + ] + ] + }, + { + "type": "text", + "id": "tn142", + "x": 724, + "y": 389.125, + "width": 150.79999999999998, + "height": 16.25, + "strokeColor": "#b45309", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1283, + "version": 1, + "versionNonce": 1284, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "MR Brain WO contrast", + "originalText": "MR Brain WO contrast", + "fontSize": 13, + "fontFamily": 2, + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 + }, + { + "type": "line", + "id": "tc143", + "x": 713, + "y": 388.25, + "width": 0, + "height": 28.0, + "strokeColor": "#b45309", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 45, + "angle": 0, + "seed": 1285, + "version": 1, + "versionNonce": 1286, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "points": [ + [ + 0, + 0 + ], + [ + 0, + 28.0 + ] + ] + }, + { + "type": "line", + "id": "tc144", + "x": 713, + "y": 416.25, + "width": 7, + "height": 0.0, + "strokeColor": "#b45309", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 45, + "angle": 0, + "seed": 1287, + "version": 1, + "versionNonce": 1288, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "points": [ + [ + 0, + 0 + ], + [ + 7, + 0.0 + ] + ] + }, + { + "type": "text", + "id": "tn145", + "x": 724, + "y": 408.125, + "width": 218.66, + "height": 16.25, + "strokeColor": "#b45309", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1289, + "version": 1, + "versionNonce": 1290, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "MR Brain WO and W contrast IV", + "originalText": "MR Brain WO and W contrast IV", + "fontSize": 13, + "fontFamily": 2, + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 + }, + { + "type": "rectangle", + "id": "tb146", + "x": 690, + "y": 437.75, + "width": 280, + "height": 20, + "strokeColor": "transparent", + "backgroundColor": "#fcd34d", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1291, + "version": 1, + "versionNonce": 1292, + "isDeleted": false, + "groupIds": [], + "boundElements": [], + "link": null, + "locked": false, + "roundness": { + "type": 3 + } + }, + { + "type": "text", + "id": "tbt147", + "x": 700, + "y": 439.625, + "width": 15.079999999999998, + "height": 16.25, + "strokeColor": "#78350f", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1293, + "version": 1, + "versionNonce": 1294, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "XR", + "originalText": "XR", + "fontSize": 13, + "fontFamily": 2, + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 + }, + { + "type": "text", + "id": "tn148", + "x": 706, + "y": 464.5, + "width": 56.839999999999996, + "height": 17.5, + "strokeColor": "#78350f", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1295, + "version": 1, + "versionNonce": 1296, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "XR Knee", + "originalText": "XR Knee", + "fontSize": 14, + "fontFamily": 2, + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 + }, + { + "type": "text", + "id": "tns149", + "x": 769.0, + "y": 465.125, + "width": 135.72, + "height": 16.25, + "strokeColor": "#b45309", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1297, + "version": 1, + "versionNonce": 1298, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "(preferred family)", + "originalText": "(preferred family)", + "fontSize": 13, + "fontFamily": 2, + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 + }, + { + "type": "line", + "id": "tc150", + "x": 713, + "y": 483.25, + "width": 0, + "height": 9.0, + "strokeColor": "#b45309", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 45, + "angle": 0, + "seed": 1299, + "version": 1, + "versionNonce": 1300, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "points": [ + [ + 0, + 0 + ], + [ + 0, + 9.0 + ] + ] + }, + { + "type": "line", + "id": "tc151", + "x": 713, + "y": 492.25, + "width": 7, + "height": 0.0, + "strokeColor": "#b45309", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 45, + "angle": 0, + "seed": 1301, + "version": 1, + "versionNonce": 1302, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "points": [ + [ + 0, + 0 + ], + [ + 7, + 0.0 + ] + ] + }, + { + "type": "text", + "id": "tn152", + "x": 724, + "y": 484.125, + "width": 113.1, + "height": 16.25, + "strokeColor": "#b45309", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1303, + "version": 1, + "versionNonce": 1304, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "XR Knee 2 Views", + "originalText": "XR Knee 2 Views", + "fontSize": 13, + "fontFamily": 2, + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 + }, + { + "type": "line", + "id": "tc153", + "x": 713, + "y": 483.25, + "width": 0, + "height": 28.0, + "strokeColor": "#b45309", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 45, + "angle": 0, + "seed": 1305, + "version": 1, + "versionNonce": 1306, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "points": [ + [ + 0, + 0 + ], + [ + 0, + 28.0 + ] + ] + }, + { + "type": "line", + "id": "tc154", + "x": 713, + "y": 511.25, + "width": 7, + "height": 0.0, + "strokeColor": "#b45309", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 45, + "angle": 0, + "seed": 1307, + "version": 1, + "versionNonce": 1308, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "points": [ + [ + 0, + 0 + ], + [ + 7, + 0.0 + ] + ] + }, + { + "type": "text", + "id": "tn155", + "x": 724, + "y": 503.125, + "width": 113.1, + "height": 16.25, + "strokeColor": "#b45309", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1309, + "version": 1, + "versionNonce": 1310, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "XR Knee 3 Views", + "originalText": "XR Knee 3 Views", + "fontSize": 13, + "fontFamily": 2, + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 + }, + { + "type": "text", + "id": "tn156", + "x": 706, + "y": 527.5, + "width": 64.96, + "height": 17.5, + "strokeColor": "#78350f", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1311, + "version": 1, + "versionNonce": 1312, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "XR Chest", + "originalText": "XR Chest", + "fontSize": 14, + "fontFamily": 2, + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 + }, + { + "type": "text", + "id": "tns157", + "x": 772.9, + "y": 528.125, + "width": 135.72, + "height": 16.25, + "strokeColor": "#b45309", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1313, + "version": 1, + "versionNonce": 1314, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "(preferred family)", + "originalText": "(preferred family)", + "fontSize": 13, + "fontFamily": 2, + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 + }, + { + "type": "line", + "id": "tc158", + "x": 713, + "y": 546.25, + "width": 0, + "height": 9.0, + "strokeColor": "#b45309", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 45, + "angle": 0, + "seed": 1315, + "version": 1, + "versionNonce": 1316, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "points": [ + [ + 0, + 0 + ], + [ + 0, + 9.0 + ] + ] + }, + { + "type": "line", + "id": "tc159", + "x": 713, + "y": 555.25, + "width": 7, + "height": 0.0, + "strokeColor": "#b45309", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 45, + "angle": 0, + "seed": 1317, + "version": 1, + "versionNonce": 1318, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "points": [ + [ + 0, + 0 + ], + [ + 7, + 0.0 + ] + ] + }, + { + "type": "text", + "id": "tn160", + "x": 724, + "y": 547.125, + "width": 120.63999999999999, + "height": 16.25, + "strokeColor": "#b45309", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1319, + "version": 1, + "versionNonce": 1320, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "XR Chest 2 Views", + "originalText": "XR Chest 2 Views", + "fontSize": 13, + "fontFamily": 2, + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 + }, + { + "type": "line", + "id": "tc161", + "x": 713, + "y": 546.25, + "width": 0, + "height": 28.0, + "strokeColor": "#b45309", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 45, + "angle": 0, + "seed": 1321, + "version": 1, + "versionNonce": 1322, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "points": [ + [ + 0, + 0 + ], + [ + 0, + 28.0 + ] + ] + }, + { + "type": "line", + "id": "tc162", + "x": 713, + "y": 574.25, + "width": 7, + "height": 0.0, + "strokeColor": "#b45309", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 45, + "angle": 0, + "seed": 1323, + "version": 1, + "versionNonce": 1324, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "points": [ + [ + 0, + 0 + ], + [ + 7, + 0.0 + ] + ] + }, + { + "type": "text", + "id": "tn163", + "x": 724, + "y": 566.125, + "width": 173.42, + "height": 16.25, + "strokeColor": "#b45309", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1325, + "version": 1, + "versionNonce": 1326, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "XR Chest PA and Lateral", + "originalText": "XR Chest PA and Lateral", + "fontSize": 13, + "fontFamily": 2, + "textAlign": "left", "verticalAlign": "top", "containerId": null, "lineHeight": 1.25 }, { - "type": "arrow", - "id": "rel19", - "x": 257.33333333333337, - "y": 206.25, - "width": 40.0, - "height": 0.0, + "type": "rectangle", + "id": "tb164", + "x": 690, + "y": 595.75, + "width": 280, + "height": 20, + "strokeColor": "transparent", + "backgroundColor": "#fcd34d", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1327, + "version": 1, + "versionNonce": 1328, + "isDeleted": false, + "groupIds": [], + "boundElements": [], + "link": null, + "locked": false, + "roundness": { + "type": 3 + } + }, + { + "type": "text", + "id": "tbt165", + "x": 700, + "y": 597.625, + "width": 15.079999999999998, + "height": 16.25, + "strokeColor": "#78350f", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1329, + "version": 1, + "versionNonce": 1330, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "US", + "originalText": "US", + "fontSize": 13, + "fontFamily": 2, + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 + }, + { + "type": "text", + "id": "tn166", + "x": 706, + "y": 622.5, + "width": 81.19999999999999, + "height": 17.5, + "strokeColor": "#78350f", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1331, + "version": 1, + "versionNonce": 1332, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "US Abdomen", + "originalText": "US Abdomen", + "fontSize": 14, + "fontFamily": 2, + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 + }, + { + "type": "text", + "id": "tns167", + "x": 796.3, + "y": 623.125, + "width": 135.72, + "height": 16.25, "strokeColor": "#b45309", "backgroundColor": "transparent", "fillStyle": "solid", - "strokeWidth": 1.5, + "strokeWidth": 1, "strokeStyle": "solid", "roughness": 0, "opacity": 100, "angle": 0, - "seed": 1043, + "seed": 1333, "version": 1, - "versionNonce": 1044, + "versionNonce": 1334, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "(preferred family)", + "originalText": "(preferred family)", + "fontSize": 13, + "fontFamily": 2, + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 + }, + { + "type": "line", + "id": "tc168", + "x": 713, + "y": 641.25, + "width": 0, + "height": 9.0, + "strokeColor": "#b45309", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 45, + "angle": 0, + "seed": 1335, + "version": 1, + "versionNonce": 1336, "isDeleted": false, "groupIds": [], "boundElements": null, @@ -693,58 +5408,53 @@ 0 ], [ - 40.0, - 0.0 + 0, + 9.0 ] - ], - "startBinding": { - "elementId": "axis1", - "focus": 0, - "gap": 2 - }, - "endBinding": { - "elementId": "axis2", - "focus": 0, - "gap": 2 - }, - "startArrowhead": "arrow", - "endArrowhead": "arrow" + ] }, { - "type": "rectangle", - "id": "rellbl20", - "x": 223.32333333333338, - "y": 180.0, - "width": 108.02, - "height": 20.25, - "strokeColor": "transparent", - "backgroundColor": "#ffffff", + "type": "line", + "id": "tc169", + "x": 713, + "y": 650.25, + "width": 7, + "height": 0.0, + "strokeColor": "#b45309", + "backgroundColor": "transparent", "fillStyle": "solid", - "strokeWidth": 0, + "strokeWidth": 1, "strokeStyle": "solid", "roughness": 0, - "opacity": 100, + "opacity": 45, "angle": 0, - "seed": 1045, + "seed": 1337, "version": 1, - "versionNonce": 1046, + "versionNonce": 1338, "isDeleted": false, "groupIds": [], - "boundElements": [], + "boundElements": null, "link": null, "locked": false, - "roundness": { - "type": 3 - } + "points": [ + [ + 0, + 0 + ], + [ + 7, + 0.0 + ] + ] }, { "type": "text", - "id": "rellbl20_t", - "x": 228.32333333333338, - "y": 182.0, - "width": 98.02, + "id": "tn170", + "x": 724, + "y": 642.125, + "width": 135.72, "height": 16.25, - "strokeColor": "#64748b", + "strokeColor": "#b45309", "backgroundColor": "transparent", "fillStyle": "solid", "strokeWidth": 1, @@ -752,41 +5462,75 @@ "roughness": 0, "opacity": 100, "angle": 0, - "seed": 1047, + "seed": 1339, "version": 1, - "versionNonce": 1048, + "versionNonce": 1340, "isDeleted": false, "groupIds": [], "boundElements": null, "link": null, "locked": false, - "text": "relationships", - "originalText": "relationships", + "text": "US Abdomen limited", + "originalText": "US Abdomen limited", "fontSize": 13, "fontFamily": 2, - "textAlign": "center", + "textAlign": "left", "verticalAlign": "top", "containerId": null, "lineHeight": 1.25 }, { - "type": "arrow", - "id": "rel21", - "x": 562.6666666666667, - "y": 206.25, - "width": 40.0, + "type": "line", + "id": "tc171", + "x": 713, + "y": 641.25, + "width": 0, + "height": 28.0, + "strokeColor": "#b45309", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 45, + "angle": 0, + "seed": 1341, + "version": 1, + "versionNonce": 1342, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "points": [ + [ + 0, + 0 + ], + [ + 0, + 28.0 + ] + ] + }, + { + "type": "line", + "id": "tc172", + "x": 713, + "y": 669.25, + "width": 7, "height": 0.0, "strokeColor": "#b45309", "backgroundColor": "transparent", "fillStyle": "solid", - "strokeWidth": 1.5, + "strokeWidth": 1, "strokeStyle": "solid", "roughness": 0, - "opacity": 100, + "opacity": 45, "angle": 0, - "seed": 1049, + "seed": 1343, "version": 1, - "versionNonce": 1050, + "versionNonce": 1344, "isDeleted": false, "groupIds": [], "boundElements": null, @@ -798,41 +5542,125 @@ 0 ], [ - 40.0, + 7, 0.0 ] - ], - "startBinding": { - "elementId": "axis2", - "focus": 0, - "gap": 2 - }, - "endBinding": { - "elementId": "axis3", - "focus": 0, - "gap": 2 - }, - "startArrowhead": "arrow", - "endArrowhead": "arrow" + ] + }, + { + "type": "text", + "id": "tn173", + "x": 724, + "y": 661.125, + "width": 105.55999999999999, + "height": 16.25, + "strokeColor": "#b45309", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1345, + "version": 1, + "versionNonce": 1346, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "US Abdomen RUQ", + "originalText": "US Abdomen RUQ", + "fontSize": 13, + "fontFamily": 2, + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 + }, + { + "type": "text", + "id": "tn174", + "x": 706, + "y": 685.5, + "width": 129.92, + "height": 17.5, + "strokeColor": "#78350f", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1347, + "version": 1, + "versionNonce": 1348, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "US Thyroid gland", + "originalText": "US Thyroid gland", + "fontSize": 14, + "fontFamily": 2, + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 + }, + { + "type": "text", + "id": "coln175", + "x": 690, + "y": 723.75, + "width": 241.27999999999997, + "height": 16.25, + "strokeColor": "#b45309", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1349, + "version": 1, + "versionNonce": 1350, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "each a LOINC/RSNA Playbook entry", + "originalText": "each a LOINC/RSNA Playbook entry", + "fontSize": 13, + "fontFamily": 2, + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 }, { "type": "rectangle", - "id": "rellbl22", - "x": 528.6566666666668, - "y": 180.0, - "width": 108.02, - "height": 20.25, - "strokeColor": "transparent", - "backgroundColor": "#ffffff", + "id": "colblk176", + "x": 690, + "y": 758.0, + "width": 280, + "height": 48.5, + "strokeColor": "#78350f", + "backgroundColor": "#b45309", "fillStyle": "solid", - "strokeWidth": 0, + "strokeWidth": 1, "strokeStyle": "solid", "roughness": 0, "opacity": 100, "angle": 0, - "seed": 1051, + "seed": 1351, "version": 1, - "versionNonce": 1052, + "versionNonce": 1352, "isDeleted": false, "groupIds": [], "boundElements": [], @@ -844,12 +5672,12 @@ }, { "type": "text", - "id": "rellbl22_t", - "x": 533.6566666666668, - "y": 182.0, - "width": 98.02, + "id": "colblkt177", + "x": 696, + "y": 768.0, + "width": 268, "height": 16.25, - "strokeColor": "#64748b", + "strokeColor": "#fef3c7", "backgroundColor": "transparent", "fillStyle": "solid", "strokeWidth": 1, @@ -857,16 +5685,16 @@ "roughness": 0, "opacity": 100, "angle": 0, - "seed": 1053, + "seed": 1353, "version": 1, - "versionNonce": 1054, + "versionNonce": 1354, "isDeleted": false, "groupIds": [], "boundElements": null, "link": null, "locked": false, - "text": "relationships", - "originalText": "relationships", + "text": "layered over: LOINC/RSNA", + "originalText": "layered over: LOINC/RSNA", "fontSize": 13, "fontFamily": 2, "textAlign": "center", @@ -876,12 +5704,12 @@ }, { "type": "text", - "id": "cap23", - "x": 0, - "y": 402.5, - "width": 860, + "id": "colblkt178", + "x": 696, + "y": 784.25, + "width": 268, "height": 16.25, - "strokeColor": "#64748b", + "strokeColor": "#fef3c7", "backgroundColor": "transparent", "fillStyle": "solid", "strokeWidth": 1, @@ -889,16 +5717,16 @@ "roughness": 0, "opacity": 100, "angle": 0, - "seed": 1055, + "seed": 1355, "version": 1, - "versionNonce": 1056, + "versionNonce": 1356, "isDeleted": false, "groupIds": [], "boundElements": null, "link": null, "locked": false, - "text": "each a curated layer over an existing standard; the axes relate to each other and cite external references", - "originalText": "each a curated layer over an existing standard; the axes relate to each other and cite external references", + "text": "Playbook", + "originalText": "Playbook", "fontSize": 13, "fontFamily": 2, "textAlign": "center", @@ -912,21 +5740,21 @@ "gridSize": null }, "files": { - "img_coli1": { + "img_coli2": { "mimeType": "image/svg+xml", - "id": "img_coli1", + "id": "img_coli2", "dataURL": "data:image/svg+xml;base64,PHN2ZwogIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIKICB3aWR0aD0iMjQiCiAgaGVpZ2h0PSIyNCIKICB2aWV3Qm94PSIwIDAgMjQgMjQiCiAgZmlsbD0ibm9uZSIKICBzdHJva2U9IiNiNDUzMDkiCiAgc3Ryb2tlLXdpZHRoPSIyIgogIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIKICBzdHJva2UtbGluZWpvaW49InJvdW5kIgo+CiAgPHBhdGggZD0iTTEyLjU4NiAyLjU4NkEyIDIgMCAwIDAgMTEuMTcyIDJINGEyIDIgMCAwIDAtMiAydjcuMTcyYTIgMiAwIDAgMCAuNTg2IDEuNDE0bDguNzA0IDguNzA0YTIuNDI2IDIuNDI2IDAgMCAwIDMuNDIgMGw2LjU4LTYuNThhMi40MjYgMi40MjYgMCAwIDAgMC0zLjQyeiIgLz4KICA8Y2lyY2xlIGN4PSI3LjUiIGN5PSI3LjUiIHI9Ii41IiBmaWxsPSIjYjQ1MzA5IiAvPgo8L3N2Zz4K", "created": 1700000000000 }, - "img_coli8": { + "img_coli47": { "mimeType": "image/svg+xml", - "id": "img_coli8", + "id": "img_coli47", "dataURL": "data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNDgiIGhlaWdodD0iNDgiIHZpZXdCb3g9IjAgMCA0OCA0OCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0yMyA2LjAwMDEzQzIzIDYuMDAwMDQgMjMgNiAyNCA2SDI0LjE3NjFDMjQuMjUzMyA2IDI0LjMyMzMgNiAyNC4zODY4IDZDMjUgNi4wMDAwMSAyNSA2LjAwMDA1IDI1IDYuMDAwMTNWMjAuNUMyNSAyMS44OTc3IDI1LjU2NDEgMjIuNDQyMSAyNi4wMDM5IDIyLjY5ODdDMjYuMDUzIDIyLjcyNzMgMjYuMTAyNCAyMi43NTMzIDI2LjE1MTYgMjIuNzc3QzI2LjE1MDYgMjIuNjU2OCAyNi4xNDkzIDIyLjUzMTYgMjYuMTQ3OSAyMi40MDE5TDI2LjE0NzkgMjIuNDAwM0MyNi4xMTAxIDE4Ljg3MTYgMjYuMDM2NSAxMS45OTk3IDMxLjQ3NTMgMTEuOTk5N0MzOC45MjU5IDExLjk5OTcgNDQuMjQ3OCAzOC4wMDYyIDQxLjA1NDcgNDAuNjU5OUMzNy44NjE1IDQzLjMxMzYgMzEuNDc1MyA0MS43MjE0IDI4LjI4MjIgMzguNTM2OUMyNS43MDQyIDM1Ljk2NTkgMjUuOTI3MiAyOS45NTgzIDI2LjA4NzMgMjUuNjQ1N0wyNi4wODc0IDI1LjY0NDNDMjYuMDk3MSAyNS4zODE5IDI2LjEwNjcgMjUuMTI1OCAyNi4xMTUzIDI0Ljg3NzFDMjUuNzkgMjQuNzk2MiAyNS4zOTU5IDI0LjY1OTUgMjQuOTk2MiAyNC40MjYzQzI0LjYzOTggMjQuMjE4NCAyNC4yOTc1IDIzLjk0NDIgMjQgMjMuNTkxOUMyMy43MDI2IDIzLjk0NDIgMjMuMzYwMyAyNC4yMTg0IDIzLjAwMzkgMjQuNDI2M0MyMi42MDQxIDI0LjY1OTUgMjIuMjEwMSAyNC43OTYyIDIxLjg4NDggMjQuODc3MUMyMS44OTM0IDI1LjEyNjEgMjEuOTAyOSAyNS4zODI2IDIxLjkxMjcgMjUuNjQ1M0MyMi4wNzI4IDI5Ljk1NzkgMjIuMjk1OSAzNS45NjYyIDE5LjcxNzkgMzguNTM3MkMxNi41MjQ3IDQxLjcyMTcgMTAuMTM4NSA0My4zMTM5IDYuOTQ1MzYgNDAuNjYwMkMzLjc1MjIyIDM4LjAwNjUgOS4wNzQxMyAxMiAxNi41MjQ3IDEyQzIxLjk2MzYgMTIgMjEuODkgMTguODcxNyAyMS44NTIyIDIyLjQwMDNDMjEuODUyIDIyLjQxNjYgMjEuODUxOCAyMi40MzI4IDIxLjg1MTYgMjIuNDQ4OUMyMS44NTA0IDIyLjU2MTkgMjEuODQ5MyAyMi42NzE0IDIxLjg0ODQgMjIuNzc3QzIxLjg5NzcgMjIuNzUzNCAyMS45NDcxIDIyLjcyNzQgMjEuOTk2MiAyMi42OTg3QzIyLjQzNiAyMi40NDIxIDIzIDIxLjg5NzcgMjMgMjAuNVY2LjAwMDEzWk0zMS40NzUzIDEzLjk5OTdDMzAuNTIxMiAxMy45OTk3IDI5Ljk4NDMgMTQuMzAwMiAyOS42MDg2IDE0LjY4NjlDMjkuMTc1MiAxNS4xMzMxIDI4LjgxMzIgMTUuODUwNyAyOC41NTkgMTYuODY0NkMyOC4xMTQxIDE4LjYzOTUgMjguMTMzIDIwLjY4MTkgMjguMTQ4MyAyMi4zMjkzQzI4LjE1MDkgMjIuNjE0MiAyOC4xNTM0IDIyLjg4NzQgMjguMTUzNCAyMy4xNDUzQzI4LjE1MzQgMjMuOTA1MyAyOC4xMTk2IDI0LjgxNTMgMjguMDg0NSAyNS43NjIxQzI4LjA3MDcgMjYuMTM0OSAyOC4wNTY2IDI2LjUxMzMgMjguMDQ0MyAyNi44OTA1QzI3Ljk5OTYgMjguMjY1NyAyNy45NzQxIDI5LjcwNTUgMjguMDQwNSAzMS4wOTgyQzI4LjEwNzIgMzIuNDk4NSAyOC4yNjQyIDMzLjc4MzUgMjguNTU3MyAzNC44NTk2QzI4Ljg1MzggMzUuOTQ4MyAyOS4yNTA5IDM2LjY3ODQgMjkuNjk0NCAzNy4xMjA4QzMwLjk3MjYgMzguMzk1NCAzMi45OTA4IDM5LjQyNTEgMzUuMDQ5MiAzOS44MjQzQzM3LjA4NDIgNDAuMjE4OSAzOC43MjI0IDM5LjkyNjkgMzkuNjgxOCAzOS4xOTY5QzM5LjY4NjggMzkuMTg1NyAzOS42OTIzIDM5LjE3MjYgMzkuNjk4NCAzOS4xNTc0QzM5Ljc1NzYgMzkuMDA5NSAzOS44Mjk0IDM4Ljc1NTQgMzkuODg3OCAzOC4zNjgzQzQwLjAwNDcgMzcuNTkzMyA0MC4wMzUgMzYuNTEyMiAzOS45NTYyIDM1LjE4MDNDMzkuNzk5NSAzMi41MzA1IDM5LjIyODYgMjkuMTY4OSAzOC4zMjY4IDI1Ljg2MDZDMzcuNDIxNiAyMi41Mzk2IDM2LjIxNzMgMTkuMzk5OCAzNC44NTIxIDE3LjEzODNDMzQuMTY4OCAxNi4wMDYyIDMzLjQ5NTEgMTUuMTc4NiAzMi44NzAzIDE0LjY1MzVDMzIuMjUxOCAxNC4xMzM3IDMxLjc5MzUgMTMuOTk5NyAzMS40NzUzIDEzLjk5OTdaTTE2LjUyNDcgMTRDMTcuNDc4OCAxNCAxOC4wMTU4IDE0LjMwMDUgMTguMzkxNCAxNC42ODcyQzE4LjgyNDggMTUuMTMzNCAxOS4xODY4IDE1Ljg1MSAxOS40NDEgMTYuODY0OUMxOS44ODU5IDE4LjYzOTkgMTkuODY3IDIwLjY4MjIgMTkuODUxOCAyMi4zMjk2QzE5Ljg0OTEgMjIuNjE0NiAxOS44NDY2IDIyLjg4NzcgMTkuODQ2NiAyMy4xNDU2QzE5Ljg0NjYgMjMuOTA1NiAxOS44ODA0IDI0LjgxNTYgMTkuOTE1NSAyNS43NjI0QzE5LjkyOTQgMjYuMTM1IDE5Ljk0MzQgMjYuNTEzOCAxOS45NTU3IDI2Ljg5MDhDMjAuMDAwNSAyOC4yNjYgMjAuMDI1OSAyOS43MDU4IDE5Ljk1OTYgMzEuMDk4NUMxOS44OTI5IDMyLjQ5ODggMTkuNzM1OSAzMy43ODM4IDE5LjQ0MjcgMzQuODU5OUMxOS4xNDYyIDM1Ljk0ODYgMTguNzQ5MiAzNi42Nzg3IDE4LjMwNTYgMzcuMTIxMUMxNy4wMjc1IDM4LjM5NTcgMTUuMDA5MyAzOS40MjU0IDEyLjk1MDkgMzkuODI0NkMxMC45MTU5IDQwLjIxOTIgOS4yNzc2OCAzOS45MjcyIDguMzE4MjMgMzkuMTk3MkM4LjMxMzI2IDM5LjE4NiA4LjMwNzcgMzkuMTcyOSA4LjMwMTYyIDM5LjE1NzdDOC4yNDI0MSAzOS4wMDk4IDguMTcwNjEgMzguNzU1NyA4LjExMjI0IDM4LjM2ODZDNy45OTUzOSAzNy41OTM2IDcuOTY1IDM2LjUxMjUgOC4wNDM4IDM1LjE4MDZDOC4yMDA1NiAzMi41MzA4IDguNzcxNDcgMjkuMTY5MiA5LjY3MzI0IDI1Ljg2MDlDMTAuNTc4NSAyMi41Mzk5IDExLjc4MjcgMTkuNDAwMSAxMy4xNDc5IDE3LjEzODZDMTMuODMxMyAxNi4wMDY1IDE0LjUwNDkgMTUuMTc4OSAxNS4xMjk4IDE0LjY1MzhDMTUuNzQ4MiAxNC4xMzQgMTYuMjA2NSAxNCAxNi41MjQ3IDE0WiIgZmlsbD0iI2I0NTMwOSIvPgo8L3N2Zz4K", "created": 1700000000000 }, - "img_coli13": { + "img_coli105": { "mimeType": "image/svg+xml", - "id": "img_coli13", + "id": "img_coli105", "dataURL": "data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNDgiIGhlaWdodD0iNDgiIHZpZXdCb3g9IjAgMCA0OCA0OCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0yOSA5QzI5IDExLjc2MTQgMjYuNzYxNCAxNCAyNCAxNEMyMS4yMzg2IDE0IDE5IDExLjc2MTQgMTkgOUMxOSA2LjIzODU4IDIxLjIzODYgNCAyNCA0QzI2Ljc2MTQgNCAyOSA2LjIzODU4IDI5IDlaTTI3IDlDMjcgMTAuNjU2OSAyNS42NTY5IDEyIDI0IDEyQzIyLjM0MzEgMTIgMjEgMTAuNjU2OSAyMSA5QzIxIDcuMzQzMTUgMjIuMzQzMSA2IDI0IDZDMjUuNjU2OSA2IDI3IDcuMzQzMTUgMjcgOVoiIGZpbGw9IiNiNDUzMDkiLz4KPHBhdGggZD0iTTE2Ljk5OTggNDFWMzRIMTguOTk5OFY0MUMxOC45OTk4IDQxLjU1MjMgMTkuNDQ3NSA0MiAxOS45OTk4IDQySDIwLjA4NjVDMjAuNjAzNyA0MiAyMS4wMzU2IDQxLjYwNTYgMjEuMDgyNCA0MS4wOTA1TDIxLjcyNyAzNEgyMy43MzUzTDIzLjA3NDIgNDEuMjcxNkMyMy4wNjkgNDEuMzI4OCAyMy4wNjIyIDQxLjM4NTYgMjMuMDUzOSA0MS40NDE3QzIzLjAzNTcgNDEuNTY0NyAyMy4wMTAxIDQxLjY4NTEgMjIuOTc3NiA0MS44MDI1QzIyLjYyNDIgNDMuMDc5OCAyMS40NTQ5IDQ0IDIwLjA4NjUgNDRIMTkuOTk5OEMxOC4zNDI5IDQ0IDE2Ljk5OTggNDIuNjU2OSAxNi45OTk4IDQxWiIgZmlsbD0iI2I0NTMwOSIvPgo8cGF0aCBkPSJNMjYuOTE3MSA0MS4wOTA1TDI2LjI3MjUgMzRIMjQuMjY0MkwyNC45MjUzIDQxLjI3MTZDMjQuOTMwNSA0MS4zMjg4IDI0LjkzNzMgNDEuMzg1NiAyNC45NDU2IDQxLjQ0MTdDMjQuOTYzOCA0MS41NjQ3IDI0Ljk4OTQgNDEuNjg1MSAyNS4wMjE5IDQxLjgwMjVDMjUuMzc1MyA0My4wNzk4IDI2LjU0NDYgNDQgMjcuOTEzIDQ0SDI3Ljk5OThDMjkuNjU2NiA0NCAzMC45OTk4IDQyLjY1NjkgMzAuOTk5OCA0MVYzNEgyOC45OTk4VjQxQzI4Ljk5OTggNDEuNTUyMyAyOC41NTIgNDIgMjcuOTk5OCA0MkgyNy45MTNDMjcuMzk1OCA0MiAyNi45NjM5IDQxLjYwNTYgMjYuOTE3MSA0MS4wOTA1WiIgZmlsbD0iI2I0NTMwOSIvPgo8cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGNsaXAtcnVsZT0iZXZlbm9kZCIgZD0iTTExIDE1QzEwLjQ0NzcgMTUgMTAgMTUuNDQ3NyAxMCAxNlYzMUMxMCAzMS41NTIzIDEwLjQ0NzcgMzIgMTEgMzJIMzdDMzcuNTUyMyAzMiAzOCAzMS41NTIzIDM4IDMxVjE2QzM4IDE1LjQ0NzcgMzcuNTUyMyAxNSAzNyAxNUgxMVpNMTIgMTdWMzBIMTkuNUMxOS41IDI5LjQ0MjQgMTkuNzU5MSAyOC45NTcyIDIwLjAyNzYgMjguNjAwNkMyMC4zMDg2IDI4LjIyNzYgMjAuNjc5NiAyNy44ODgzIDIxLjA3OTQgMjcuNjAxNkMyMS42MjUyIDI3LjIxMDMgMjIuMjk4NiAyNi44NjUgMjMgMjYuNjY3OFYyNC41SDIyLjJDMjEuNTk3MyAyNC41IDIwLjc1MzUgMjQuODY0MiAxOS45NDMzIDI1LjM1NTJDMTkuNTYzOCAyNS41ODUyIDE5LjIzMzcgMjUuODE2NyAxOC45OTg0IDI1Ljk5MTFDMTguODgxMiAyNi4wNzc4IDE4Ljc4ODggMjYuMTQ5NSAxOC43MjcgMjYuMTk4NEMxOC42OTYxIDI2LjIyMjggMTguNjczIDI2LjI0MTUgMTguNjU4MiAyNi4yNTM1TDE4LjY0MjYgMjYuMjY2M0wxOC42Mzk5IDI2LjI2ODRDMTguNjM5OSAyNi4yNjg0IDE4LjY0MDIgMjYuMjY4MiAxOCAyNS41QzE3LjM1OTggMjQuNzMxOCAxNy4zNjAxIDI0LjczMTUgMTcuMzYwMSAyNC43MzE1TDE3LjM2MTQgMjQuNzMwNUwxNy4zNjM4IDI0LjcyODVMMTcuMzcxMyAyNC43MjIzTDE3LjM5NjYgMjQuNzAxNkMxNy40MTc5IDI0LjY4NDMgMTcuNDQ4IDI0LjY2IDE3LjQ4NjMgMjQuNjI5N0MxNy41NjI3IDI0LjU2OTMgMTcuNjcxOSAyNC40ODQ3IDE3LjgwNzkgMjQuMzgzOUMxOC4wNzg4IDI0LjE4MzMgMTguNDYxMiAyMy45MTQ4IDE4LjkwNjcgMjMuNjQ0OEMxOS43NDY1IDIzLjEzNTggMjEuMDAyNyAyMi41IDIyLjIgMjIuNUgyM1YyMC41SDIyLjVDMjEuOTMwOSAyMC41IDIxLjE5MDkgMjAuNjk5MiAyMC41MjkyIDIwLjkzOThDMjAuMjEyIDIxLjA1NTIgMTkuOTM3IDIxLjE3MDkgMTkuNzQyMSAyMS4yNTc2QzE5LjY0NDkgMjEuMzAwNyAxOS41Njg1IDIxLjMzNjMgMTkuNTE3NiAyMS4zNjA1QzE5LjQ5MjIgMjEuMzcyNSAxOS40NzMyIDIxLjM4MTcgMTkuNDYxMyAyMS4zODc1TDE5LjQ0ODcgMjEuMzkzN0wxOS40NDcgMjEuMzk0NUMxOS40NDcgMjEuMzk0NSAxOS40NDcyIDIxLjM5NDQgMTkgMjAuNUMxOC41NTI4IDE5LjYwNTYgMTguNTUzMSAxOS42MDU0IDE4LjU1MzEgMTkuNjA1NEwxOC41NTY0IDE5LjYwMzhMMTguNTYyOSAxOS42MDA2TDE4LjU4NDQgMTkuNTlDMTguNjAyNSAxOS41ODEyIDE4LjYyNzkgMTkuNTY4OSAxOC42NjAxIDE5LjU1MzZDMTguNzI0NSAxOS41MjMxIDE4LjgxNiAxOS40ODA1IDE4LjkyOTggMTkuNDI5OUMxOS4xNTY3IDE5LjMyOTEgMTkuNDc1NSAxOS4xOTQ4IDE5Ljg0NTggMTkuMDYwMkMyMC41NTkxIDE4LjgwMDggMjEuNTY5MSAxOC41IDIyLjUgMTguNUgyM1YxN0gxMlpNMjUgMjQuNUgyNi4xQzI2Ljg0ODkgMjQuNSAyNy42MTg2IDI0Ljg2NjMgMjguMjYzMSAyNS4zMTg2QzI4LjU3MzUgMjUuNTM2NCAyOC44Mjg1IDI1Ljc1NTYgMjkuMDA0OCAyNS45MTk3QzI5LjA5MjUgMjYuMDAxMiAyOS4xNTk0IDI2LjA2NzkgMjkuMjAyNiAyNi4xMTIyQzI5LjIyNDEgMjYuMTM0MyAyOS4yMzk3IDI2LjE1MDcgMjkuMjQ4OCAyNi4xNjA1TDI5LjI1NzQgMjYuMTY5N0MyOS4yNTc0IDI2LjE2OTcgMjkuMjU2NyAyNi4xNjkgMzAgMjUuNUMzMC43NDMzIDI0LjgzMSAzMC43NDI5IDI0LjgzMDYgMzAuNzQyOSAyNC44MzA2TDMwLjc0MTQgMjQuODI5TDMwLjczODkgMjQuODI2MkwzMC43MzE4IDI0LjgxODRMMzAuNzA5NyAyNC43OTQ2QzMwLjY5MTUgMjQuNzc1MSAzMC42NjYzIDI0Ljc0ODUgMzAuNjM0NiAyNC43MTZDMzAuNTcxMSAyNC42NTA5IDMwLjQ4MDkgMjQuNTYxMyAzMC4zNjcgMjQuNDU1M0MzMC4xNDAzIDI0LjI0NDQgMjkuODE0IDIzLjk2MzYgMjkuNDExOSAyMy42ODE0QzI4LjYzMTQgMjMuMTMzNyAyNy40NTExIDIyLjUgMjYuMSAyMi41SDI1VjIwLjVIMjUuNzVDMjYuNDQ0MyAyMC41IDI3LjExOTMgMjAuNzAxMSAyNy42NDMyIDIwLjkyMTZDMjcuOTAwMyAyMS4wMjk5IDI4LjEwOTIgMjEuMTM3OCAyOC4yNTA5IDIxLjIxNjlDMjguMzIxNSAyMS4yNTY0IDI4LjM3NDcgMjEuMjg4MiAyOC40MDggMjEuMzA4N0MyOC40MjQ3IDIxLjMxODkgMjguNDM2MyAyMS4zMjYzIDI4LjQ0MjcgMjEuMzMwNEwyOC40NDU3IDIxLjMzMjNDMjguNDQ1NyAyMS4zMzIzIDI4LjQ0NTMgMjEuMzMyMSAyOSAyMC41QzI5LjU1NDcgMTkuNjY3OSAyOS41NTQyIDE5LjY2NzYgMjkuNTU0MiAxOS42Njc2TDI5LjU1MjcgMTkuNjY2NkwyOS41NTAxIDE5LjY2NDlMMjkuNTQzMiAxOS42NjA0TDI5LjUyMjggMTkuNjQ3MkMyOS41MDYzIDE5LjYzNjYgMjkuNDg0IDE5LjYyMjUgMjkuNDU2MiAxOS42MDU0QzI5LjQwMDcgMTkuNTcxMiAyOS4zMjMgMTkuNTI0OSAyOS4yMjU2IDE5LjQ3MDZDMjkuMDMxNSAxOS4zNjIyIDI4Ljc1NTkgMTkuMjIwMSAyOC40MTkzIDE5LjA3ODRDMjcuNzU1NyAxOC43OTg5IDI2LjgwNTcgMTguNSAyNS43NSAxOC41SDI1VjE3SDM2VjMwSDI4LjVDMjguNSAyOS40Mzc5IDI4LjIzMjQgMjguOTQ1MiAyNy45NjQxIDI4LjU4NzVDMjcuNjgwMyAyOC4yMDkyIDI3LjMwNTQgMjcuODYwNiAyNi45MDA3IDI3LjU2NjNDMjYuMzY3NSAyNy4xNzg1IDI1LjY5ODkgMjYuODI1NyAyNSAyNi42MzkxVjI0LjVaTTI2LjQ5MjkgMzBDMjYuNDc5NyAyOS45NjcgMjYuNDQ1NyAyOS44OTY0IDI2LjM2NDEgMjkuNzg3NUMyNi4yMjU5IDI5LjYwMzMgMjYuMDA3MSAyOS4zODk0IDI1LjcyNDMgMjkuMTgzN0MyNS4xNDc4IDI4Ljc2NDUgMjQuNDkzNyAyOC41MTE3IDI0LjAzMiAyOC41MDA0QzIzLjQ4NzcgMjguNTQ2NCAyMi44MDUyIDI4LjgyNTIgMjIuMjQ0OSAyOS4yMjdDMjEuOTY1NyAyOS40MjcyIDIxLjc1NTYgMjkuNjMwNyAyMS42MjUyIDI5LjgwMzhDMjEuNTQ5NiAyOS45MDQzIDIxLjUxODQgMjkuOTY5NCAyMS41MDYzIDMwSDI2LjQ5MjlaIiBmaWxsPSIjYjQ1MzA5Ii8+Cjwvc3ZnPgo=", "created": 1700000000000 } diff --git a/knowledge/drafts/three-axes.svg b/knowledge/drafts/three-axes.svg index edf09f0..b79bee0 100644 --- a/knowledge/drafts/three-axes.svg +++ b/knowledge/drafts/three-axes.svg @@ -1,2 +1,2 @@ -Finding/diagnosisdefinitionsWHAT was foundlayered over: finding models· ACR/RSNA CDEsAnatomic locationsWHERE it islayered over: RadLexExam typesHOW it was seenlayered over: LOINC/RSNAPlaybookrelationshipsrelationshipseach a curated layer over an existing standard; the axes relate to each other and cite external references \ No newline at end of file +Findings/DiagnosesWHAT was foundFindingspulmonary nodulesolidpart-solidnon-solidDiagnosespulmonary neoplasmnon-small cell lung canceradenocarcinoma of the lungAssessmentsLung-RADSSalter-Harris categoryData Elementspresencepresent · absent · indeterminate · unknownseverityminimal · mild · moderate · severeMeasurementslengthmm, cm, ...CT densityHUlayered over: finding models· ACR/RSNA CDEsAnatomic LocationsWHERE it isthoraxlungright lungupper lobe of right lungmiddle lobe of right lunglower lobe of right lungleft lungpleural spacemediastinumheartabdomenkidneyleft kidneyright kidneyrenal pelvisliverspleenheadbraincerebellumfrontal lobeorbitpelvisurinary bladderprostatelayered over: RadLexExam TypesHOW it was seenCTCT Chest(preferred family)CT Chest WO contrastCT Chest W contrast IVCT Chest WO and W contrast IVCT Lung parenchyma WO contrastCTA Chest vesselsMRMR Knee(preferred family)MR Knee WO contrastMR Knee W contrast IVMR Brain(preferred family)MR Brain WO contrastMR Brain WO and W contrast IVXRXR Knee(preferred family)XR Knee 2 ViewsXR Knee 3 ViewsXR Chest(preferred family)XR Chest 2 ViewsXR Chest PA and LateralUSUS Abdomen(preferred family)US Abdomen limitedUS Abdomen RUQUS Thyroid glandeach a LOINC/RSNA Playbook entrylayered over: LOINC/RSNAPlaybook \ No newline at end of file diff --git a/knowledge/drafts/two-collections.excalidraw b/knowledge/drafts/two-collections.excalidraw new file mode 100644 index 0000000..7f04134 --- /dev/null +++ b/knowledge/drafts/two-collections.excalidraw @@ -0,0 +1,1662 @@ +{ + "type": "excalidraw", + "version": 2, + "source": "oidm-knowledge/tools/diagrams", + "elements": [ + { + "type": "rectangle", + "id": "panel_oifm", + "x": 0, + "y": 0, + "width": 364, + "height": 272, + "strokeColor": "#059669", + "backgroundColor": "#d1fae5", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1001, + "version": 1, + "versionNonce": 1002, + "isDeleted": false, + "groupIds": [], + "boundElements": [], + "link": null, + "locked": false, + "roundness": { + "type": 3 + } + }, + { + "type": "rectangle", + "id": "panel_cde", + "x": 536, + "y": 0, + "width": 364, + "height": 272, + "strokeColor": "#059669", + "backgroundColor": "#d1fae5", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1003, + "version": 1, + "versionNonce": 1004, + "isDeleted": false, + "groupIds": [], + "boundElements": [], + "link": null, + "locked": false, + "roundness": { + "type": 3 + } + }, + { + "type": "image", + "id": "hicon1", + "x": 18, + "y": 16, + "width": 26, + "height": 26, + "strokeColor": "transparent", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1005, + "version": 1, + "versionNonce": 1006, + "isDeleted": false, + "groupIds": [], + "boundElements": [], + "link": null, + "locked": false, + "fileId": "img_hicon1", + "status": "saved", + "scale": [ + 1, + 1 + ], + "roundness": null, + "crop": null + }, + { + "type": "text", + "id": "ht2", + "x": 54, + "y": 18, + "width": 226.8, + "height": 21.25, + "strokeColor": "#064e3b", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1007, + "version": 1, + "versionNonce": 1008, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "Open Imaging Finding Models", + "originalText": "Open Imaging Finding Models", + "fontSize": 17, + "fontFamily": 2, + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 + }, + { + "type": "text", + "id": "hs3", + "x": 54, + "y": 50, + "width": 143.8, + "height": 16.25, + "strokeColor": "#047857", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1009, + "version": 1, + "versionNonce": 1010, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "inclusive \u00b7 beta channel \u00b7", + "originalText": "inclusive \u00b7 beta channel \u00b7", + "fontSize": 13, + "fontFamily": 2, + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 + }, + { + "type": "text", + "id": "hs4", + "x": 54, + "y": 66.25, + "width": 159.7, + "height": 16.25, + "strokeColor": "#047857", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1011, + "version": 1, + "versionNonce": 1012, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "rapid additions and updates", + "originalText": "rapid additions and updates", + "fontSize": 13, + "fontFamily": 2, + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 + }, + { + "type": "text", + "id": "hs5", + "x": 54, + "y": 89.5, + "width": 182.8, + "height": 16.25, + "strokeColor": "#047857", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1013, + "version": 1, + "versionNonce": 1014, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "maintained by the OIDM project", + "originalText": "maintained by the OIDM project", + "fontSize": 13, + "fontFamily": 2, + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 + }, + { + "type": "image", + "id": "hicon6", + "x": 554, + "y": 16, + "width": 26, + "height": 26, + "strokeColor": "transparent", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1015, + "version": 1, + "versionNonce": 1016, + "isDeleted": false, + "groupIds": [], + "boundElements": [], + "link": null, + "locked": false, + "fileId": "img_hicon6", + "status": "saved", + "scale": [ + 1, + 1 + ], + "roundness": null, + "crop": null + }, + { + "type": "text", + "id": "ht7", + "x": 590, + "y": 18, + "width": 277.8, + "height": 21.25, + "strokeColor": "#064e3b", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1017, + "version": 1, + "versionNonce": 1018, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "ACR/RSNA Common Data Elements", + "originalText": "ACR/RSNA Common Data Elements", + "fontSize": 17, + "fontFamily": 2, + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 + }, + { + "type": "text", + "id": "hs8", + "x": 590, + "y": 50, + "width": 228.3, + "height": 16.25, + "strokeColor": "#047857", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1019, + "version": 1, + "versionNonce": 1020, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "well-reviewed \u00b7 release channel \u00b7 stable", + "originalText": "well-reviewed \u00b7 release channel \u00b7 stable", + "fontSize": 13, + "fontFamily": 2, + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 + }, + { + "type": "text", + "id": "hs9", + "x": 590, + "y": 73.25, + "width": 186.4, + "height": 16.25, + "strokeColor": "#047857", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1021, + "version": 1, + "versionNonce": 1022, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "American College of Radiology \u00b7", + "originalText": "American College of Radiology \u00b7", + "fontSize": 13, + "fontFamily": 2, + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 + }, + { + "type": "text", + "id": "hs10", + "x": 590, + "y": 89.5, + "width": 228.2, + "height": 16.25, + "strokeColor": "#047857", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1023, + "version": 1, + "versionNonce": 1024, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "Radiological Society of North America \u00b7", + "originalText": "Radiological Society of North America \u00b7", + "fontSize": 13, + "fontFamily": 2, + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 + }, + { + "type": "text", + "id": "hs11", + "x": 590, + "y": 105.75, + "width": 87.4, + "height": 16.25, + "strokeColor": "#047857", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1025, + "version": 1, + "versionNonce": 1026, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "radelement.org", + "originalText": "radelement.org", + "fontSize": 13, + "fontFamily": 2, + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 + }, + { + "type": "rectangle", + "id": "n_hydro", + "x": 18, + "y": 144, + "width": 108.9, + "height": 40, + "strokeColor": "#059669", + "backgroundColor": "#a7f3d0", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1027, + "version": 1, + "versionNonce": 1028, + "isDeleted": false, + "groupIds": [], + "boundElements": [], + "link": null, + "locked": false, + "roundness": { + "type": 3 + } + }, + { + "type": "text", + "id": "n_hydro_t", + "x": 26, + "y": 155.875, + "width": 92.9, + "height": 16.25, + "strokeColor": "#064e3b", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1029, + "version": 1, + "versionNonce": 1030, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "hydronephrosis", + "originalText": "hydronephrosis", + "fontSize": 13, + "fontFamily": 2, + "textAlign": "center", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 + }, + { + "type": "rectangle", + "id": "n_calc", + "x": 140.9, + "y": 144, + "width": 99.5, + "height": 40, + "strokeColor": "#059669", + "backgroundColor": "#a7f3d0", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1031, + "version": 1, + "versionNonce": 1032, + "isDeleted": false, + "groupIds": [], + "boundElements": [], + "link": null, + "locked": false, + "roundness": { + "type": 3 + } + }, + { + "type": "text", + "id": "n_calc_t", + "x": 148.9, + "y": 155.875, + "width": 83.5, + "height": 16.25, + "strokeColor": "#064e3b", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1033, + "version": 1, + "versionNonce": 1034, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "renal calculus", + "originalText": "renal calculus", + "fontSize": 13, + "fontFamily": 2, + "textAlign": "center", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 + }, + { + "type": "rectangle", + "id": "n_nodule_l", + "x": 222.7, + "y": 200, + "width": 123.3, + "height": 40, + "strokeColor": "#059669", + "backgroundColor": "#a7f3d0", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1035, + "version": 1, + "versionNonce": 1036, + "isDeleted": false, + "groupIds": [], + "boundElements": [], + "link": null, + "locked": false, + "roundness": { + "type": 3 + } + }, + { + "type": "text", + "id": "n_nodule_l_t", + "x": 230.7, + "y": 211.875, + "width": 107.3, + "height": 16.25, + "strokeColor": "#064e3b", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1037, + "version": 1, + "versionNonce": 1038, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "pulmonary nodule", + "originalText": "pulmonary nodule", + "fontSize": 13, + "fontFamily": 2, + "textAlign": "center", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 + }, + { + "type": "rectangle", + "id": "n_aaa", + "x": 554, + "y": 144, + "width": 176.1, + "height": 40, + "strokeColor": "#059669", + "backgroundColor": "#a7f3d0", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1039, + "version": 1, + "versionNonce": 1040, + "isDeleted": false, + "groupIds": [], + "boundElements": [], + "link": null, + "locked": false, + "roundness": { + "type": 3 + } + }, + { + "type": "text", + "id": "n_aaa_t", + "x": 562, + "y": 155.875, + "width": 160.1, + "height": 16.25, + "strokeColor": "#064e3b", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1041, + "version": 1, + "versionNonce": 1042, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "abdominal aortic aneurysm", + "originalText": "abdominal aortic aneurysm", + "fontSize": 13, + "fontFamily": 2, + "textAlign": "center", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 + }, + { + "type": "rectangle", + "id": "n_nodule_r", + "x": 554, + "y": 200, + "width": 123.3, + "height": 40, + "strokeColor": "#059669", + "backgroundColor": "#a7f3d0", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1043, + "version": 1, + "versionNonce": 1044, + "isDeleted": false, + "groupIds": [], + "boundElements": [], + "link": null, + "locked": false, + "roundness": { + "type": 3 + } + }, + { + "type": "text", + "id": "n_nodule_r_t", + "x": 562, + "y": 211.875, + "width": 107.3, + "height": 16.25, + "strokeColor": "#064e3b", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1045, + "version": 1, + "versionNonce": 1046, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "pulmonary nodule", + "originalText": "pulmonary nodule", + "fontSize": 13, + "fontFamily": 2, + "textAlign": "center", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 + }, + { + "type": "text", + "id": "bl_grad12", + "x": 381.7, + "y": 28, + "width": 136.6, + "height": 16.25, + "strokeColor": "#64748b", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1047, + "version": 1, + "versionNonce": 1048, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "definitions proved out", + "originalText": "definitions proved out", + "fontSize": 13, + "fontFamily": 2, + "textAlign": "center", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 + }, + { + "type": "text", + "id": "bl_grad13", + "x": 381.7, + "y": 44.25, + "width": 136.6, + "height": 16.25, + "strokeColor": "#64748b", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1049, + "version": 1, + "versionNonce": 1050, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "here graduate to review", + "originalText": "here graduate to review", + "fontSize": 13, + "fontFamily": 2, + "textAlign": "center", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 + }, + { + "type": "arrow", + "id": "b_grad", + "x": 368, + "y": 72, + "width": 159.04999999999995, + "height": 0.0, + "strokeColor": "#059669", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1051, + "version": 1, + "versionNonce": 1052, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "points": [ + [ + 0, + 0 + ], + [ + 159.04999999999995, + 0.0 + ] + ], + "startBinding": null, + "endBinding": null, + "startArrowhead": null, + "endArrowhead": null + }, + { + "type": "line", + "id": "b_grad_h", + "x": 532, + "y": 72, + "width": 0, + "height": 0, + "strokeColor": "#059669", + "backgroundColor": "#059669", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1053, + "version": 1, + "versionNonce": 1054, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "points": [ + [ + 0, + 0 + ], + [ + -9.0, + 5.579999999999998 + ], + [ + -9.0, + -5.579999999999998 + ], + [ + 0, + 0 + ] + ], + "roundness": null + }, + { + "type": "rectangle", + "id": "ramp14", + "x": 368.0, + "y": 86, + "width": 23.928571428571427, + "height": 16, + "strokeColor": "transparent", + "backgroundColor": "#ecfdf5", + "fillStyle": "solid", + "strokeWidth": 0, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1055, + "version": 1, + "versionNonce": 1056, + "isDeleted": false, + "groupIds": [], + "boundElements": [], + "link": null, + "locked": false + }, + { + "type": "rectangle", + "id": "ramp15", + "x": 391.42857142857144, + "y": 86, + "width": 23.928571428571427, + "height": 16, + "strokeColor": "transparent", + "backgroundColor": "#d1fae5", + "fillStyle": "solid", + "strokeWidth": 0, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1057, + "version": 1, + "versionNonce": 1058, + "isDeleted": false, + "groupIds": [], + "boundElements": [], + "link": null, + "locked": false + }, + { + "type": "rectangle", + "id": "ramp16", + "x": 414.85714285714283, + "y": 86, + "width": 23.928571428571427, + "height": 16, + "strokeColor": "transparent", + "backgroundColor": "#a7f3d0", + "fillStyle": "solid", + "strokeWidth": 0, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1059, + "version": 1, + "versionNonce": 1060, + "isDeleted": false, + "groupIds": [], + "boundElements": [], + "link": null, + "locked": false + }, + { + "type": "rectangle", + "id": "ramp17", + "x": 438.2857142857143, + "y": 86, + "width": 23.928571428571427, + "height": 16, + "strokeColor": "transparent", + "backgroundColor": "#6ee7b7", + "fillStyle": "solid", + "strokeWidth": 0, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1061, + "version": 1, + "versionNonce": 1062, + "isDeleted": false, + "groupIds": [], + "boundElements": [], + "link": null, + "locked": false + }, + { + "type": "rectangle", + "id": "ramp18", + "x": 461.7142857142857, + "y": 86, + "width": 23.928571428571427, + "height": 16, + "strokeColor": "transparent", + "backgroundColor": "#34d399", + "fillStyle": "solid", + "strokeWidth": 0, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1063, + "version": 1, + "versionNonce": 1064, + "isDeleted": false, + "groupIds": [], + "boundElements": [], + "link": null, + "locked": false + }, + { + "type": "rectangle", + "id": "ramp19", + "x": 485.1428571428571, + "y": 86, + "width": 23.928571428571427, + "height": 16, + "strokeColor": "transparent", + "backgroundColor": "#10b981", + "fillStyle": "solid", + "strokeWidth": 0, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1065, + "version": 1, + "versionNonce": 1066, + "isDeleted": false, + "groupIds": [], + "boundElements": [], + "link": null, + "locked": false + }, + { + "type": "rectangle", + "id": "ramp20", + "x": 508.57142857142856, + "y": 86, + "width": 23.928571428571427, + "height": 16, + "strokeColor": "transparent", + "backgroundColor": "#059669", + "fillStyle": "solid", + "strokeWidth": 0, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1067, + "version": 1, + "versionNonce": 1068, + "isDeleted": false, + "groupIds": [], + "boundElements": [], + "link": null, + "locked": false + }, + { + "type": "arrow", + "id": "b_cross", + "x": 532, + "y": 114, + "width": -159.05, + "height": 0.0, + "strokeColor": "#059669", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1069, + "version": 1, + "versionNonce": 1070, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "points": [ + [ + 0, + 0 + ], + [ + -159.05, + 0.0 + ] + ], + "startBinding": null, + "endBinding": null, + "startArrowhead": null, + "endArrowhead": null + }, + { + "type": "line", + "id": "b_cross_h", + "x": 368, + "y": 114, + "width": 0, + "height": 0, + "strokeColor": "#059669", + "backgroundColor": "#059669", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1071, + "version": 1, + "versionNonce": 1072, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "points": [ + [ + 0, + 0 + ], + [ + 9.0, + -5.579999999999998 + ], + [ + 9.0, + 5.579999999999998 + ], + [ + 0, + 0 + ] + ], + "roundness": null + }, + { + "type": "text", + "id": "bl_cross21", + "x": 378.45, + "y": 124, + "width": 143.1, + "height": 16.25, + "strokeColor": "#64748b", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1073, + "version": 1, + "versionNonce": 1074, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "cross-links: a migrated", + "originalText": "cross-links: a migrated", + "fontSize": 13, + "fontFamily": 2, + "textAlign": "center", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 + }, + { + "type": "text", + "id": "bl_cross22", + "x": 378.45, + "y": 140.25, + "width": 143.1, + "height": 16.25, + "strokeColor": "#64748b", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1075, + "version": 1, + "versionNonce": 1076, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "definition keeps its OIFM", + "originalText": "definition keeps its OIFM", + "fontSize": 13, + "fontFamily": 2, + "textAlign": "center", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 + }, + { + "type": "text", + "id": "bl_cross23", + "x": 378.45, + "y": 156.5, + "width": 143.1, + "height": 16.25, + "strokeColor": "#64748b", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1077, + "version": 1, + "versionNonce": 1078, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "entry and carries its", + "originalText": "entry and carries its", + "fontSize": 13, + "fontFamily": 2, + "textAlign": "center", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 + }, + { + "type": "text", + "id": "bl_cross24", + "x": 378.45, + "y": 172.75, + "width": 143.1, + "height": 16.25, + "strokeColor": "#64748b", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1079, + "version": 1, + "versionNonce": 1080, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "CDE identity", + "originalText": "CDE identity", + "fontSize": 13, + "fontFamily": 2, + "textAlign": "center", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 + }, + { + "type": "arrow", + "id": "l_index", + "x": 346.0, + "y": 220.0, + "width": 208.0, + "height": 0.0, + "strokeColor": "#059669", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "dashed", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1081, + "version": 1, + "versionNonce": 1082, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "points": [ + [ + 0.0, + 0.0 + ], + [ + 208.0, + 0.0 + ] + ], + "startBinding": null, + "endBinding": null, + "startArrowhead": null, + "endArrowhead": null + }, + { + "type": "rectangle", + "id": "l_index_l", + "x": 409.3, + "y": 208.875, + "width": 81.4, + "height": 22.25, + "strokeColor": "transparent", + "backgroundColor": "#ffffff", + "fillStyle": "solid", + "strokeWidth": 0, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1083, + "version": 1, + "versionNonce": 1084, + "isDeleted": false, + "groupIds": [], + "boundElements": [], + "link": null, + "locked": false, + "roundness": { + "type": 3 + } + }, + { + "type": "text", + "id": "l_index_l_t", + "x": 415.3, + "y": 211.875, + "width": 69.4, + "height": 16.25, + "strokeColor": "#047857", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1085, + "version": 1, + "versionNonce": 1086, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "index codes", + "originalText": "index codes", + "fontSize": 13, + "fontFamily": 2, + "textAlign": "center", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 + }, + { + "type": "rectangle", + "id": "amber", + "x": 0, + "y": 320, + "width": 900, + "height": 92, + "strokeColor": "#b45309", + "backgroundColor": "#fef3c7", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1087, + "version": 1, + "versionNonce": 1088, + "isDeleted": false, + "groupIds": [], + "boundElements": [], + "link": null, + "locked": false, + "roundness": { + "type": 3 + } + }, + { + "type": "text", + "id": "a_title", + "x": 344.65, + "y": 344.25, + "width": 210.7, + "height": 21.25, + "strokeColor": "#78350f", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1089, + "version": 1, + "versionNonce": 1090, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "the next-generation schema", + "originalText": "the next-generation schema", + "fontSize": 17, + "fontFamily": 2, + "textAlign": "center", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 + }, + { + "type": "text", + "id": "a_sub", + "x": 285.25, + "y": 371.5, + "width": 329.5, + "height": 16.25, + "strokeColor": "#b45309", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1091, + "version": 1, + "versionNonce": 1092, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "one graph of interconnected concepts for both collections", + "originalText": "one graph of interconnected concepts for both collections", + "fontSize": 13, + "fontFamily": 2, + "textAlign": "center", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 + }, + { + "type": "arrow", + "id": "m_onto0", + "x": 182.0, + "y": 274, + "width": 0.0, + "height": 39.05000000000001, + "strokeColor": "#b45309", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1093, + "version": 1, + "versionNonce": 1094, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "points": [ + [ + 0.0, + 0 + ], + [ + 0.0, + 39.05000000000001 + ] + ], + "startBinding": null, + "endBinding": null, + "startArrowhead": null, + "endArrowhead": null + }, + { + "type": "line", + "id": "m_onto0_h", + "x": 182.0, + "y": 318, + "width": 0, + "height": 0, + "strokeColor": "#b45309", + "backgroundColor": "#b45309", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1095, + "version": 1, + "versionNonce": 1096, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "points": [ + [ + 0.0, + 0 + ], + [ + -5.5800000000000125, + -9.0 + ], + [ + 5.5800000000000125, + -9.0 + ], + [ + 0, + 0 + ] + ], + "roundness": null + }, + { + "type": "text", + "id": "m_l25", + "x": 194.0, + "y": 288.0, + "width": 70.8, + "height": 16.25, + "strokeColor": "#b45309", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1097, + "version": 1, + "versionNonce": 1098, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "moving onto", + "originalText": "moving onto", + "fontSize": 13, + "fontFamily": 2, + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 + }, + { + "type": "arrow", + "id": "m_onto1", + "x": 718.0, + "y": 274, + "width": 0.0, + "height": 39.05000000000001, + "strokeColor": "#b45309", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1099, + "version": 1, + "versionNonce": 1100, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "points": [ + [ + 0.0, + 0 + ], + [ + 0.0, + 39.05000000000001 + ] + ], + "startBinding": null, + "endBinding": null, + "startArrowhead": null, + "endArrowhead": null + }, + { + "type": "line", + "id": "m_onto1_h", + "x": 718.0, + "y": 318, + "width": 0, + "height": 0, + "strokeColor": "#b45309", + "backgroundColor": "#b45309", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1101, + "version": 1, + "versionNonce": 1102, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "points": [ + [ + 0.0, + 0 + ], + [ + -5.580000000000041, + -9.0 + ], + [ + 5.580000000000041, + -9.0 + ], + [ + 0, + 0 + ] + ], + "roundness": null + }, + { + "type": "text", + "id": "m_l26", + "x": 730.0, + "y": 288.0, + "width": 70.8, + "height": 16.25, + "strokeColor": "#b45309", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1103, + "version": 1, + "versionNonce": 1104, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "moving onto", + "originalText": "moving onto", + "fontSize": 13, + "fontFamily": 2, + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 + } + ], + "appState": { + "viewBackgroundColor": "#ffffff", + "gridSize": null + }, + "files": { + "img_hicon1": { + "mimeType": "image/svg+xml", + "id": "img_hicon1", + "dataURL": "data:image/svg+xml;base64,PHN2ZwogIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIKICB3aWR0aD0iMjQiCiAgaGVpZ2h0PSIyNCIKICB2aWV3Qm94PSIwIDAgMjQgMjQiCiAgZmlsbD0ibm9uZSIKICBzdHJva2U9IiMwNTk2NjkiCiAgc3Ryb2tlLXdpZHRoPSIyIgogIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIKICBzdHJva2UtbGluZWpvaW49InJvdW5kIgo+CiAgPHBhdGggZD0iTTEyLjU4NiAyLjU4NkEyIDIgMCAwIDAgMTEuMTcyIDJINGEyIDIgMCAwIDAtMiAydjcuMTcyYTIgMiAwIDAgMCAuNTg2IDEuNDE0bDguNzA0IDguNzA0YTIuNDI2IDIuNDI2IDAgMCAwIDMuNDIgMGw2LjU4LTYuNThhMi40MjYgMi40MjYgMCAwIDAgMC0zLjQyeiIgLz4KICA8Y2lyY2xlIGN4PSI3LjUiIGN5PSI3LjUiIHI9Ii41IiBmaWxsPSIjMDU5NjY5IiAvPgo8L3N2Zz4K", + "created": 1700000000000 + }, + "img_hicon6": { + "mimeType": "image/svg+xml", + "id": "img_hicon6", + "dataURL": "data:image/svg+xml;base64,PHN2ZwogIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIKICB3aWR0aD0iMjQiCiAgaGVpZ2h0PSIyNCIKICB2aWV3Qm94PSIwIDAgMjQgMjQiCiAgZmlsbD0ibm9uZSIKICBzdHJva2U9IiMwNTk2NjkiCiAgc3Ryb2tlLXdpZHRoPSIyIgogIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIKICBzdHJva2UtbGluZWpvaW49InJvdW5kIgo+CiAgPHBhdGggZD0iTTEyLjU4NiAyLjU4NkEyIDIgMCAwIDAgMTEuMTcyIDJINGEyIDIgMCAwIDAtMiAydjcuMTcyYTIgMiAwIDAgMCAuNTg2IDEuNDE0bDguNzA0IDguNzA0YTIuNDI2IDIuNDI2IDAgMCAwIDMuNDIgMGw2LjU4LTYuNThhMi40MjYgMi40MjYgMCAwIDAgMC0zLjQyeiIgLz4KICA8Y2lyY2xlIGN4PSI3LjUiIGN5PSI3LjUiIHI9Ii41IiBmaWxsPSIjMDU5NjY5IiAvPgo8L3N2Zz4K", + "created": 1700000000000 + } + } +} \ No newline at end of file diff --git a/knowledge/drafts/two-collections.svg b/knowledge/drafts/two-collections.svg new file mode 100644 index 0000000..c06dde8 --- /dev/null +++ b/knowledge/drafts/two-collections.svg @@ -0,0 +1,2 @@ +Open Imaging Finding Modelsinclusive · beta channel ·rapid additions and updatesmaintained by the OIDM projectACR/RSNA Common Data Elementswell-reviewed · release channel · stableAmerican College of Radiology ·Radiological Society of North America ·radelement.orghydronephrosisrenal calculuspulmonary noduleabdominal aortic aneurysmpulmonary noduledefinitions proved outhere graduate to reviewcross-links: a migrateddefinition keeps its OIFMentry and carries itsCDE identityindex codesthe next-generation schemaone graph of interconnected concepts for both collectionsmoving ontomoving onto \ No newline at end of file diff --git a/knowledge/drafts/two-planes.excalidraw b/knowledge/drafts/two-planes.excalidraw index ba60621..bc705fd 100644 --- a/knowledge/drafts/two-planes.excalidraw +++ b/knowledge/drafts/two-planes.excalidraw @@ -8,8 +8,8 @@ "id": "plane_patient", "x": 55, "y": 0, - "width": 885, - "height": 185, + "width": 935, + "height": 190, "strokeColor": "#0f766e", "backgroundColor": "#ccfbf1", "fillStyle": "solid", @@ -32,16 +32,16 @@ 0 ], [ - 830, + 880, 0 ], [ - 775, - 185 + 825, + 190 ], [ -55, - 185 + 190 ], [ 0, @@ -54,9 +54,9 @@ "type": "line", "id": "plane_foundation", "x": 55, - "y": 300, - "width": 885, - "height": 305, + "y": 250, + "width": 935, + "height": 440, "strokeColor": "#b45309", "backgroundColor": "#fef3c7", "fillStyle": "solid", @@ -79,16 +79,16 @@ 0 ], [ - 830, + 880, 0 ], [ - 775, - 305 + 825, + 440 ], [ -55, - 305 + 440 ], [ 0, @@ -197,7 +197,7 @@ "type": "image", "id": "hicon4", "x": 68, - "y": 316.0, + "y": 266.0, "width": 28, "height": 28, "strokeColor": "transparent", @@ -229,7 +229,7 @@ "type": "text", "id": "htitle5", "x": 108, - "y": 314, + "y": 264, "width": 208.79999999999998, "height": 25.0, "strokeColor": "#78350f", @@ -261,7 +261,7 @@ "type": "text", "id": "hsub6", "x": 108, - "y": 340, + "y": 290, "width": 188.5, "height": 16.25, "strokeColor": "#b45309", @@ -292,9 +292,9 @@ { "type": "rectangle", "id": "exam", - "x": 170, - "y": 76, - "width": 210, + "x": 140, + "y": 92, + "width": 246, "height": 66, "strokeColor": "#0f766e", "backgroundColor": "#99f6e4", @@ -319,8 +319,8 @@ { "type": "image", "id": "ni7", - "x": 182.0, - "y": 95.0, + "x": 152.0, + "y": 111.0, "width": 28, "height": 28, "strokeColor": "transparent", @@ -351,9 +351,9 @@ { "type": "text", "id": "nt8", - "x": 220, - "y": 89.875, - "width": 150, + "x": 190, + "y": 105.875, + "width": 186, "height": 20.0, "strokeColor": "#134e4a", "backgroundColor": "transparent", @@ -371,8 +371,8 @@ "boundElements": null, "link": null, "locked": false, - "text": "CT chest", - "originalText": "CT chest", + "text": "CT chest without contrast", + "originalText": "CT chest without contrast", "fontSize": 16, "fontFamily": 2, "textAlign": "left", @@ -383,9 +383,9 @@ { "type": "text", "id": "ns9", - "x": 220, - "y": 111.875, - "width": 150, + "x": 190, + "y": 127.875, + "width": 186, "height": 16.25, "strokeColor": "#0f766e", "backgroundColor": "transparent", @@ -414,9 +414,9 @@ }, { "type": "rectangle", - "id": "finding", - "x": 500, - "y": 100, + "id": "nodule", + "x": 470, + "y": 92, "width": 196, "height": 66, "strokeColor": "#0f766e", @@ -442,8 +442,8 @@ { "type": "image", "id": "ni10", - "x": 512.0, - "y": 119.0, + "x": 482.0, + "y": 111.0, "width": 28, "height": 28, "strokeColor": "transparent", @@ -474,8 +474,8 @@ { "type": "text", "id": "nt11", - "x": 550, - "y": 113.875, + "x": 520, + "y": 105.875, "width": 136, "height": 20.0, "strokeColor": "#134e4a", @@ -506,8 +506,8 @@ { "type": "text", "id": "ns12", - "x": 550, - "y": 135.875, + "x": 520, + "y": 127.875, "width": 136, "height": 16.25, "strokeColor": "#0f766e", @@ -536,14 +536,14 @@ "lineHeight": 1.25 }, { - "type": "arrow", - "id": "e_found_on", - "x": 500, - "y": 133, - "width": -114, - "height": -22, + "type": "rectangle", + "id": "effusion", + "x": 706, + "y": 92, + "width": 176, + "height": 66, "strokeColor": "#0f766e", - "backgroundColor": "transparent", + "backgroundColor": "#99f6e4", "fillStyle": "solid", "strokeWidth": 2, "strokeStyle": "solid", @@ -555,103 +555,6 @@ "versionNonce": 1034, "isDeleted": false, "groupIds": [], - "boundElements": null, - "link": null, - "locked": false, - "points": [ - [ - 0, - 0 - ], - [ - -114, - -22 - ] - ], - "startBinding": null, - "endBinding": null, - "startArrowhead": null, - "endArrowhead": "arrow" - }, - { - "type": "rectangle", - "id": "l_found_on", - "x": 428.7, - "y": 88.875, - "width": 62.6, - "height": 22.25, - "strokeColor": "transparent", - "backgroundColor": "#ccfbf1", - "fillStyle": "solid", - "strokeWidth": 0, - "strokeStyle": "solid", - "roughness": 0, - "opacity": 100, - "angle": 0, - "seed": 1035, - "version": 1, - "versionNonce": 1036, - "isDeleted": false, - "groupIds": [], - "boundElements": [], - "link": null, - "locked": false, - "roundness": { - "type": 3 - } - }, - { - "type": "text", - "id": "l_found_on_t", - "x": 434.7, - "y": 91.875, - "width": 50.6, - "height": 16.25, - "strokeColor": "#0f766e", - "backgroundColor": "transparent", - "fillStyle": "solid", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 0, - "opacity": 100, - "angle": 0, - "seed": 1037, - "version": 1, - "versionNonce": 1038, - "isDeleted": false, - "groupIds": [], - "boundElements": null, - "link": null, - "locked": false, - "text": "found on", - "originalText": "found on", - "fontSize": 13, - "fontFamily": 2, - "textAlign": "center", - "verticalAlign": "top", - "containerId": null, - "lineHeight": 1.25 - }, - { - "type": "rectangle", - "id": "exam_type", - "x": 215, - "y": 372, - "width": 190, - "height": 97, - "strokeColor": "#b45309", - "backgroundColor": "#fde68a", - "fillStyle": "solid", - "strokeWidth": 2, - "strokeStyle": "solid", - "roughness": 0, - "opacity": 100, - "angle": 0, - "seed": 1039, - "version": 1, - "versionNonce": 1040, - "isDeleted": false, - "groupIds": [], "boundElements": [], "link": null, "locked": false, @@ -662,10 +565,10 @@ { "type": "image", "id": "ni13", - "x": 294.0, - "y": 383.0, - "width": 32, - "height": 32, + "x": 718.0, + "y": 111.0, + "width": 28, + "height": 28, "strokeColor": "transparent", "backgroundColor": "transparent", "fillStyle": "solid", @@ -674,9 +577,9 @@ "roughness": 0, "opacity": 100, "angle": 0, - "seed": 1041, + "seed": 1035, "version": 1, - "versionNonce": 1042, + "versionNonce": 1036, "isDeleted": false, "groupIds": [], "boundElements": [], @@ -694,11 +597,11 @@ { "type": "text", "id": "nt14", - "x": 223, - "y": 419.0, - "width": 174, - "height": 18.75, - "strokeColor": "#78350f", + "x": 756, + "y": 105.875, + "width": 116, + "height": 20.0, + "strokeColor": "#134e4a", "backgroundColor": "transparent", "fillStyle": "solid", "strokeWidth": 1, @@ -706,31 +609,31 @@ "roughness": 0, "opacity": 100, "angle": 0, - "seed": 1043, + "seed": 1037, "version": 1, - "versionNonce": 1044, + "versionNonce": 1038, "isDeleted": false, "groupIds": [], "boundElements": null, "link": null, "locked": false, - "text": "CT Chest W contrast IV", - "originalText": "CT Chest W contrast IV", - "fontSize": 15, + "text": "pleural effusion", + "originalText": "pleural effusion", + "fontSize": 16, "fontFamily": 2, - "textAlign": "center", + "textAlign": "left", "verticalAlign": "top", "containerId": null, "lineHeight": 1.25 }, { "type": "text", - "id": "nd15", - "x": 223, - "y": 439.75, - "width": 174, + "id": "ns15", + "x": 756, + "y": 127.875, + "width": 116, "height": 16.25, - "strokeColor": "#b45309", + "strokeColor": "#0f766e", "backgroundColor": "transparent", "fillStyle": "solid", "strokeWidth": 1, @@ -738,122 +641,139 @@ "roughness": 0, "opacity": 100, "angle": 0, - "seed": 1045, + "seed": 1039, "version": 1, - "versionNonce": 1046, + "versionNonce": 1040, "isDeleted": false, "groupIds": [], "boundElements": null, "link": null, "locked": false, - "text": "exam type", - "originalText": "exam type", + "text": "absent", + "originalText": "absent", "fontSize": 13, "fontFamily": 2, - "textAlign": "center", + "textAlign": "left", "verticalAlign": "top", "containerId": null, "lineHeight": 1.25 }, { - "type": "rectangle", - "id": "definition", - "x": 450, - "y": 372, - "width": 190, - "height": 97, - "strokeColor": "#b45309", - "backgroundColor": "#fde68a", + "type": "arrow", + "id": "e_found1", + "x": 470, + "y": 125, + "width": -72.5, + "height": 0.0, + "strokeColor": "#0f766e", + "backgroundColor": "transparent", "fillStyle": "solid", "strokeWidth": 2, "strokeStyle": "solid", "roughness": 0, "opacity": 100, "angle": 0, - "seed": 1047, + "seed": 1041, "version": 1, - "versionNonce": 1048, + "versionNonce": 1042, "isDeleted": false, "groupIds": [], - "boundElements": [], + "boundElements": null, "link": null, "locked": false, - "roundness": { - "type": 3 - } + "points": [ + [ + 0, + 0 + ], + [ + -72.5, + 0.0 + ] + ], + "startBinding": null, + "endBinding": null, + "startArrowhead": null, + "endArrowhead": null }, { - "type": "image", - "id": "ni16", - "x": 531.0, - "y": 385.0, - "width": 28, - "height": 28, - "strokeColor": "transparent", - "backgroundColor": "transparent", + "type": "line", + "id": "e_found1_h", + "x": 392, + "y": 125, + "width": 0, + "height": 0, + "strokeColor": "#0f766e", + "backgroundColor": "#0f766e", "fillStyle": "solid", "strokeWidth": 1, "strokeStyle": "solid", "roughness": 0, "opacity": 100, "angle": 0, - "seed": 1049, + "seed": 1043, "version": 1, - "versionNonce": 1050, + "versionNonce": 1044, "isDeleted": false, "groupIds": [], - "boundElements": [], + "boundElements": null, "link": null, "locked": false, - "fileId": "img_ni16", - "status": "saved", - "scale": [ - 1, - 1 + "points": [ + [ + 0, + 0 + ], + [ + 10.0, + -6.200000000000003 + ], + [ + 10.0, + 6.199999999999989 + ], + [ + 0, + 0 + ] ], - "roundness": null, - "crop": null + "roundness": null }, { - "type": "text", - "id": "nt17", - "x": 458, - "y": 419.0, - "width": 174, - "height": 18.75, - "strokeColor": "#78350f", - "backgroundColor": "transparent", + "type": "rectangle", + "id": "l_found1", + "x": 399.7, + "y": 113.875, + "width": 62.6, + "height": 22.25, + "strokeColor": "transparent", + "backgroundColor": "#ccfbf1", "fillStyle": "solid", - "strokeWidth": 1, + "strokeWidth": 0, "strokeStyle": "solid", "roughness": 0, "opacity": 100, "angle": 0, - "seed": 1051, + "seed": 1045, "version": 1, - "versionNonce": 1052, + "versionNonce": 1046, "isDeleted": false, "groupIds": [], - "boundElements": null, + "boundElements": [], "link": null, "locked": false, - "text": "pulmonary nodule", - "originalText": "pulmonary nodule", - "fontSize": 15, - "fontFamily": 2, - "textAlign": "center", - "verticalAlign": "top", - "containerId": null, - "lineHeight": 1.25 + "roundness": { + "type": 3 + } }, { "type": "text", - "id": "nd18", - "x": 458, - "y": 439.75, - "width": 174, + "id": "l_found1_t", + "x": 405.7, + "y": 116.875, + "width": 50.6, "height": 16.25, - "strokeColor": "#b45309", + "strokeColor": "#0f766e", "backgroundColor": "transparent", "fillStyle": "solid", "strokeWidth": 1, @@ -861,16 +781,16 @@ "roughness": 0, "opacity": 100, "angle": 0, - "seed": 1053, + "seed": 1047, "version": 1, - "versionNonce": 1054, + "versionNonce": 1048, "isDeleted": false, "groupIds": [], "boundElements": null, "link": null, "locked": false, - "text": "finding/diagnosis definition", - "originalText": "finding/diagnosis definition", + "text": "found on", + "originalText": "found on", "fontSize": 13, "fontFamily": 2, "textAlign": "center", @@ -879,72 +799,129 @@ "lineHeight": 1.25 }, { - "type": "rectangle", - "id": "thorax", - "x": 215, - "y": 515, - "width": 130, - "height": 62, - "strokeColor": "#b45309", - "backgroundColor": "#fde68a", + "type": "arrow", + "id": "e_found2", + "x": 790, + "y": 92, + "width": -540.0, + "height": -8.5, + "strokeColor": "#0f766e", + "backgroundColor": "transparent", "fillStyle": "solid", "strokeWidth": 2, "strokeStyle": "solid", "roughness": 0, "opacity": 100, "angle": 0, - "seed": 1055, + "seed": 1049, "version": 1, - "versionNonce": 1056, + "versionNonce": 1050, "isDeleted": false, "groupIds": [], - "boundElements": [], + "boundElements": null, "link": null, "locked": false, - "roundness": { - "type": 3 - } - }, - { - "type": "text", - "id": "nt19", - "x": 223, - "y": 527.5, - "width": 114, - "height": 18.75, - "strokeColor": "#78350f", - "backgroundColor": "transparent", - "fillStyle": "solid", - "strokeWidth": 1, - "strokeStyle": "solid", + "points": [ + [ + 0, + 0 + ], + [ + 0, + -20 + ], + [ + -540, + -20 + ], + [ + -540.0, + -8.5 + ] + ], + "startBinding": null, + "endBinding": null, + "startArrowhead": null, + "endArrowhead": null + }, + { + "type": "line", + "id": "e_found2_h", + "x": 250, + "y": 89, + "width": 0, + "height": 0, + "strokeColor": "#0f766e", + "backgroundColor": "#0f766e", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", "roughness": 0, "opacity": 100, "angle": 0, - "seed": 1057, + "seed": 1051, "version": 1, - "versionNonce": 1058, + "versionNonce": 1052, "isDeleted": false, "groupIds": [], "boundElements": null, "link": null, "locked": false, - "text": "thorax", - "originalText": "thorax", - "fontSize": 15, - "fontFamily": 2, - "textAlign": "center", - "verticalAlign": "top", - "containerId": null, - "lineHeight": 1.25 + "points": [ + [ + 0, + 0 + ], + [ + -6.199999999999989, + -10.0 + ], + [ + 6.199999999999989, + -10.0 + ], + [ + 0, + 0 + ] + ], + "roundness": null + }, + { + "type": "rectangle", + "id": "l_found2", + "x": 528.7, + "y": 60.875, + "width": 62.6, + "height": 22.25, + "strokeColor": "transparent", + "backgroundColor": "#ccfbf1", + "fillStyle": "solid", + "strokeWidth": 0, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1053, + "version": 1, + "versionNonce": 1054, + "isDeleted": false, + "groupIds": [], + "boundElements": [], + "link": null, + "locked": false, + "roundness": { + "type": 3 + } }, { "type": "text", - "id": "nd20", - "x": 223, - "y": 548.25, - "width": 114, + "id": "l_found2_t", + "x": 534.7, + "y": 63.875, + "width": 50.6, "height": 16.25, - "strokeColor": "#b45309", + "strokeColor": "#0f766e", "backgroundColor": "transparent", "fillStyle": "solid", "strokeWidth": 1, @@ -952,16 +929,16 @@ "roughness": 0, "opacity": 100, "angle": 0, - "seed": 1059, + "seed": 1055, "version": 1, - "versionNonce": 1060, + "versionNonce": 1056, "isDeleted": false, "groupIds": [], "boundElements": null, "link": null, "locked": false, - "text": "anatomic location", - "originalText": "anatomic location", + "text": "found on", + "originalText": "found on", "fontSize": 13, "fontFamily": 2, "textAlign": "center", @@ -971,10 +948,10 @@ }, { "type": "rectangle", - "id": "lung", - "x": 427, - "y": 515, - "width": 110, + "id": "exam_type", + "x": 120, + "y": 322, + "width": 218, "height": 62, "strokeColor": "#b45309", "backgroundColor": "#fde68a", @@ -984,9 +961,9 @@ "roughness": 0, "opacity": 100, "angle": 0, - "seed": 1061, + "seed": 1057, "version": 1, - "versionNonce": 1062, + "versionNonce": 1058, "isDeleted": false, "groupIds": [], "boundElements": [], @@ -998,9 +975,9 @@ }, { "type": "image", - "id": "ni21", - "x": 446.8, - "y": 530.0, + "id": "ni16", + "x": 132.55, + "y": 337.0, "width": 32, "height": 32, "strokeColor": "transparent", @@ -1011,15 +988,15 @@ "roughness": 0, "opacity": 100, "angle": 0, - "seed": 1063, + "seed": 1059, "version": 1, - "versionNonce": 1064, + "versionNonce": 1060, "isDeleted": false, "groupIds": [], "boundElements": [], "link": null, "locked": false, - "fileId": "img_ni21", + "fileId": "img_ni16", "status": "saved", "scale": [ 1, @@ -1030,10 +1007,10 @@ }, { "type": "text", - "id": "nt22", - "x": 488.8, - "y": 536.625, - "width": 28.4, + "id": "nt17", + "x": 174.55, + "y": 334.5, + "width": 150.9, "height": 18.75, "strokeColor": "#78350f", "backgroundColor": "transparent", @@ -1043,16 +1020,16 @@ "roughness": 0, "opacity": 100, "angle": 0, - "seed": 1065, + "seed": 1061, "version": 1, - "versionNonce": 1066, + "versionNonce": 1062, "isDeleted": false, "groupIds": [], "boundElements": null, "link": null, "locked": false, - "text": "lung", - "originalText": "lung", + "text": "CT Chest WO contrast", + "originalText": "CT Chest WO contrast", "fontSize": 15, "fontFamily": 2, "textAlign": "left", @@ -1060,24 +1037,56 @@ "containerId": null, "lineHeight": 1.25 }, + { + "type": "text", + "id": "nd18", + "x": 174.55, + "y": 355.25, + "width": 150.9, + "height": 16.25, + "strokeColor": "#b45309", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1063, + "version": 1, + "versionNonce": 1064, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "exam type \u00b7 29252-4", + "originalText": "exam type \u00b7 29252-4", + "fontSize": 13, + "fontFamily": 2, + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 + }, { "type": "rectangle", - "id": "upper_lobe", - "x": 619, - "y": 515, - "width": 185, + "id": "nodule_def", + "x": 370, + "y": 322, + "width": 216, "height": 62, - "strokeColor": "#b45309", - "backgroundColor": "#fde68a", + "strokeColor": "#059669", + "backgroundColor": "#d1fae5", "fillStyle": "solid", "strokeWidth": 2, "strokeStyle": "solid", "roughness": 0, "opacity": 100, "angle": 0, - "seed": 1067, + "seed": 1065, "version": 1, - "versionNonce": 1068, + "versionNonce": 1066, "isDeleted": false, "groupIds": [], "boundElements": [], @@ -1087,14 +1096,46 @@ "type": 3 } }, + { + "type": "image", + "id": "ni19", + "x": 382.75, + "y": 339.0, + "width": 28, + "height": 28, + "strokeColor": "transparent", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1067, + "version": 1, + "versionNonce": 1068, + "isDeleted": false, + "groupIds": [], + "boundElements": [], + "link": null, + "locked": false, + "fileId": "img_ni19", + "status": "saved", + "scale": [ + 1, + 1 + ], + "roundness": null, + "crop": null + }, { "type": "text", - "id": "nt23", - "x": 627, - "y": 536.625, - "width": 169, + "id": "nt20", + "x": 420.75, + "y": 334.5, + "width": 152.5, "height": 18.75, - "strokeColor": "#78350f", + "strokeColor": "#064e3b", "backgroundColor": "transparent", "fillStyle": "solid", "strokeWidth": 1, @@ -1110,26 +1151,26 @@ "boundElements": null, "link": null, "locked": false, - "text": "upper lobe of right lung", - "originalText": "upper lobe of right lung", + "text": "pulmonary nodule", + "originalText": "pulmonary nodule", "fontSize": 15, "fontFamily": 2, - "textAlign": "center", + "textAlign": "left", "verticalAlign": "top", "containerId": null, "lineHeight": 1.25 }, { - "type": "arrow", - "id": "r_contains1", - "x": 345, - "y": 546.0, - "width": 82, - "height": 0.0, - "strokeColor": "#78716c", + "type": "text", + "id": "nd21", + "x": 420.75, + "y": 355.25, + "width": 152.5, + "height": 16.25, + "strokeColor": "#047857", "backgroundColor": "transparent", "fillStyle": "solid", - "strokeWidth": 2, + "strokeWidth": 1, "strokeStyle": "solid", "roughness": 0, "opacity": 100, @@ -1142,32 +1183,26 @@ "boundElements": null, "link": null, "locked": false, - "points": [ - [ - 0, - 0.0 - ], - [ - 82, - 0.0 - ] - ], - "startBinding": null, - "endBinding": null, - "startArrowhead": null, - "endArrowhead": "arrow" + "text": "finding/diagnosis definition", + "originalText": "finding/diagnosis definition", + "fontSize": 13, + "fontFamily": 2, + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 }, { "type": "rectangle", - "id": "l_contains1", - "x": 355.8, - "y": 534.875, - "width": 60.4, - "height": 22.25, - "strokeColor": "transparent", - "backgroundColor": "#fef3c7", + "id": "effusion_def", + "x": 618, + "y": 322, + "width": 216, + "height": 62, + "strokeColor": "#059669", + "backgroundColor": "#d1fae5", "fillStyle": "solid", - "strokeWidth": 0, + "strokeWidth": 2, "strokeStyle": "solid", "roughness": 0, "opacity": 100, @@ -1185,13 +1220,13 @@ } }, { - "type": "text", - "id": "l_contains1_t", - "x": 361.8, - "y": 537.875, - "width": 48.4, - "height": 16.25, - "strokeColor": "#78716c", + "type": "image", + "id": "ni22", + "x": 630.75, + "y": 339.0, + "width": 28, + "height": 28, + "strokeColor": "transparent", "backgroundColor": "transparent", "fillStyle": "solid", "strokeWidth": 1, @@ -1204,29 +1239,29 @@ "versionNonce": 1076, "isDeleted": false, "groupIds": [], - "boundElements": null, + "boundElements": [], "link": null, "locked": false, - "text": "contains", - "originalText": "contains", - "fontSize": 13, - "fontFamily": 2, - "textAlign": "center", - "verticalAlign": "top", - "containerId": null, - "lineHeight": 1.25 + "fileId": "img_ni22", + "status": "saved", + "scale": [ + 1, + 1 + ], + "roundness": null, + "crop": null }, { - "type": "arrow", - "id": "r_contains2", - "x": 537, - "y": 546.0, - "width": 82, - "height": 0.0, - "strokeColor": "#78716c", + "type": "text", + "id": "nt23", + "x": 668.75, + "y": 334.5, + "width": 152.5, + "height": 18.75, + "strokeColor": "#064e3b", "backgroundColor": "transparent", "fillStyle": "solid", - "strokeWidth": 2, + "strokeWidth": 1, "strokeStyle": "solid", "roughness": 0, "opacity": 100, @@ -1239,32 +1274,26 @@ "boundElements": null, "link": null, "locked": false, - "points": [ - [ - 0, - 0.0 - ], - [ - 82, - 0.0 - ] - ], - "startBinding": null, - "endBinding": null, - "startArrowhead": null, - "endArrowhead": "arrow" + "text": "pleural effusion", + "originalText": "pleural effusion", + "fontSize": 15, + "fontFamily": 2, + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 }, { - "type": "rectangle", - "id": "l_contains2", - "x": 547.8, - "y": 534.875, - "width": 60.4, - "height": 22.25, - "strokeColor": "transparent", - "backgroundColor": "#fef3c7", + "type": "text", + "id": "nd24", + "x": 668.75, + "y": 355.25, + "width": 152.5, + "height": 16.25, + "strokeColor": "#047857", + "backgroundColor": "transparent", "fillStyle": "solid", - "strokeWidth": 0, + "strokeWidth": 1, "strokeStyle": "solid", "roughness": 0, "opacity": 100, @@ -1274,6 +1303,38 @@ "versionNonce": 1080, "isDeleted": false, "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "finding/diagnosis definition", + "originalText": "finding/diagnosis definition", + "fontSize": 13, + "fontFamily": 2, + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 + }, + { + "type": "rectangle", + "id": "family", + "x": 130, + "y": 448, + "width": 168, + "height": 56, + "strokeColor": "#b45309", + "backgroundColor": "#fde68a", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1081, + "version": 1, + "versionNonce": 1082, + "isDeleted": false, + "groupIds": [], "boundElements": [], "link": null, "locked": false, @@ -1283,12 +1344,12 @@ }, { "type": "text", - "id": "l_contains2_t", - "x": 553.8, - "y": 537.875, - "width": 48.4, - "height": 16.25, - "strokeColor": "#78716c", + "id": "nt25", + "x": 138, + "y": 457.5, + "width": 152, + "height": 18.75, + "strokeColor": "#78350f", "backgroundColor": "transparent", "fillStyle": "solid", "strokeWidth": 1, @@ -1296,17 +1357,17 @@ "roughness": 0, "opacity": 100, "angle": 0, - "seed": 1081, + "seed": 1083, "version": 1, - "versionNonce": 1082, + "versionNonce": 1084, "isDeleted": false, "groupIds": [], "boundElements": null, "link": null, "locked": false, - "text": "contains", - "originalText": "contains", - "fontSize": 13, + "text": "CT Chest", + "originalText": "CT Chest", + "fontSize": 15, "fontFamily": 2, "textAlign": "center", "verticalAlign": "top", @@ -1314,61 +1375,55 @@ "lineHeight": 1.25 }, { - "type": "arrow", - "id": "r_covers", - "x": 280, - "y": 469, - "width": 0, - "height": 43, - "strokeColor": "#78716c", + "type": "text", + "id": "nd26", + "x": 138, + "y": 478.25, + "width": 152, + "height": 16.25, + "strokeColor": "#b45309", "backgroundColor": "transparent", "fillStyle": "solid", - "strokeWidth": 2, + "strokeWidth": 1, "strokeStyle": "solid", "roughness": 0, "opacity": 100, "angle": 0, - "seed": 1083, + "seed": 1085, "version": 1, - "versionNonce": 1084, + "versionNonce": 1086, "isDeleted": false, "groupIds": [], "boundElements": null, "link": null, "locked": false, - "points": [ - [ - 0, - 0 - ], - [ - 0, - 43 - ] - ], - "startBinding": null, - "endBinding": null, - "startArrowhead": null, - "endArrowhead": "arrow" + "text": "exam family \u00b7 preferred", + "originalText": "exam family \u00b7 preferred", + "fontSize": 13, + "fontFamily": 2, + "textAlign": "center", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 }, { "type": "rectangle", - "id": "l_covers", - "x": 294.85, - "y": 480.875, - "width": 50.3, - "height": 22.25, - "strokeColor": "transparent", - "backgroundColor": "#fef3c7", + "id": "modality", + "x": 382, + "y": 448, + "width": 80, + "height": 56, + "strokeColor": "#6b7280", + "backgroundColor": "#e5e7eb", "fillStyle": "solid", - "strokeWidth": 0, + "strokeWidth": 2, "strokeStyle": "solid", "roughness": 0, "opacity": 100, "angle": 0, - "seed": 1085, + "seed": 1087, "version": 1, - "versionNonce": 1086, + "versionNonce": 1088, "isDeleted": false, "groupIds": [], "boundElements": [], @@ -1380,12 +1435,44 @@ }, { "type": "text", - "id": "l_covers_t", - "x": 300.85, - "y": 483.875, - "width": 38.3, + "id": "nt27", + "x": 390, + "y": 457.5, + "width": 64, + "height": 18.75, + "strokeColor": "#374151", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1089, + "version": 1, + "versionNonce": 1090, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "CT", + "originalText": "CT", + "fontSize": 15, + "fontFamily": 2, + "textAlign": "center", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 + }, + { + "type": "text", + "id": "nd28", + "x": 390, + "y": 478.25, + "width": 64, "height": 16.25, - "strokeColor": "#78716c", + "strokeColor": "#4b5563", "backgroundColor": "transparent", "fillStyle": "solid", "strokeWidth": 1, @@ -1393,16 +1480,16 @@ "roughness": 0, "opacity": 100, "angle": 0, - "seed": 1087, + "seed": 1091, "version": 1, - "versionNonce": 1088, + "versionNonce": 1092, "isDeleted": false, "groupIds": [], "boundElements": null, "link": null, "locked": false, - "text": "covers", - "originalText": "covers", + "text": "modality", + "originalText": "modality", "fontSize": 13, "fontFamily": 2, "textAlign": "center", @@ -1412,11 +1499,11 @@ }, { "type": "arrow", - "id": "r_occurs", - "x": 500, - "y": 469, - "width": -18, - "height": 43, + "id": "r_member", + "x": 200, + "y": 384, + "width": 0.0, + "height": 55.5, "strokeColor": "#78716c", "backgroundColor": "transparent", "fillStyle": "solid", @@ -1425,9 +1512,9 @@ "roughness": 0, "opacity": 100, "angle": 0, - "seed": 1089, + "seed": 1093, "version": 1, - "versionNonce": 1090, + "versionNonce": 1094, "isDeleted": false, "groupIds": [], "boundElements": null, @@ -1439,21 +1526,64 @@ 0 ], [ - -18, - 43 + 0.0, + 55.5 ] ], "startBinding": null, "endBinding": null, "startArrowhead": null, - "endArrowhead": "arrow" + "endArrowhead": null + }, + { + "type": "line", + "id": "r_member_h", + "x": 200, + "y": 445, + "width": 0, + "height": 0, + "strokeColor": "#78716c", + "backgroundColor": "#78716c", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1095, + "version": 1, + "versionNonce": 1096, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "points": [ + [ + 0, + 0 + ], + [ + -6.199999999999989, + -10.0 + ], + [ + 6.199999999999989, + -10.0 + ], + [ + 0, + 0 + ] + ], + "roundness": null }, { "type": "rectangle", - "id": "l_occurs", - "x": 507.65, - "y": 480.875, - "width": 64.7, + "id": "l_member", + "x": 144.15, + "y": 404.875, + "width": 111.7, "height": 22.25, "strokeColor": "transparent", "backgroundColor": "#fef3c7", @@ -1463,9 +1593,9 @@ "roughness": 0, "opacity": 100, "angle": 0, - "seed": 1091, + "seed": 1097, "version": 1, - "versionNonce": 1092, + "versionNonce": 1098, "isDeleted": false, "groupIds": [], "boundElements": [], @@ -1477,10 +1607,10 @@ }, { "type": "text", - "id": "l_occurs_t", - "x": 513.65, - "y": 483.875, - "width": 52.7, + "id": "l_member_t", + "x": 150.15, + "y": 407.875, + "width": 99.7, "height": 16.25, "strokeColor": "#78716c", "backgroundColor": "transparent", @@ -1490,16 +1620,16 @@ "roughness": 0, "opacity": 100, "angle": 0, - "seed": 1093, + "seed": 1099, "version": 1, - "versionNonce": 1094, + "versionNonce": 1100, "isDeleted": false, "groupIds": [], "boundElements": null, "link": null, "locked": false, - "text": "occurs at", - "originalText": "occurs at", + "text": "member of family", + "originalText": "member of family", "fontSize": 13, "fontFamily": 2, "textAlign": "center", @@ -1508,167 +1638,2121 @@ "lineHeight": 1.25 }, { - "type": "ellipse", - "id": "g1", - "x": 92, - "y": 382, - "width": 26, - "height": 26, - "strokeColor": "#a8a29e", - "backgroundColor": "#e7e5e4", + "type": "arrow", + "id": "r_modality", + "x": 298, + "y": 476.0, + "width": 75.5, + "height": 0.0, + "strokeColor": "#78716c", + "backgroundColor": "transparent", "fillStyle": "solid", - "strokeWidth": 1, + "strokeWidth": 2, "strokeStyle": "solid", "roughness": 0, - "opacity": 70, + "opacity": 100, "angle": 0, - "seed": 1095, + "seed": 1101, "version": 1, - "versionNonce": 1096, + "versionNonce": 1102, "isDeleted": false, "groupIds": [], - "boundElements": [], + "boundElements": null, "link": null, - "locked": false + "locked": false, + "points": [ + [ + 0, + 0.0 + ], + [ + 75.5, + 0.0 + ] + ], + "startBinding": null, + "endBinding": null, + "startArrowhead": null, + "endArrowhead": null }, { - "type": "ellipse", - "id": "g2", - "x": 56, - "y": 427, - "width": 20, - "height": 20, - "strokeColor": "#a8a29e", - "backgroundColor": "#e7e5e4", + "type": "line", + "id": "r_modality_h", + "x": 379, + "y": 476.0, + "width": 0, + "height": 0, + "strokeColor": "#78716c", + "backgroundColor": "#78716c", "fillStyle": "solid", "strokeWidth": 1, "strokeStyle": "solid", "roughness": 0, - "opacity": 70, + "opacity": 100, "angle": 0, - "seed": 1097, + "seed": 1103, "version": 1, - "versionNonce": 1098, + "versionNonce": 1104, "isDeleted": false, "groupIds": [], - "boundElements": [], + "boundElements": null, "link": null, - "locked": false - }, - { - "type": "ellipse", - "id": "g3", - "x": 117, - "y": 436, - "width": 22, - "height": 22, - "strokeColor": "#a8a29e", - "backgroundColor": "#e7e5e4", - "fillStyle": "solid", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 0, - "opacity": 70, + "locked": false, + "points": [ + [ + 0, + 0.0 + ], + [ + -10.0, + 6.199999999999989 + ], + [ + -10.0, + -6.199999999999989 + ], + [ + 0, + 0 + ] + ], + "roundness": null + }, + { + "type": "rectangle", + "id": "l_modality", + "x": 309.8, + "y": 464.875, + "width": 60.4, + "height": 22.25, + "strokeColor": "transparent", + "backgroundColor": "#fef3c7", + "fillStyle": "solid", + "strokeWidth": 0, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1105, + "version": 1, + "versionNonce": 1106, + "isDeleted": false, + "groupIds": [], + "boundElements": [], + "link": null, + "locked": false, + "roundness": { + "type": 3 + } + }, + { + "type": "text", + "id": "l_modality_t", + "x": 315.8, + "y": 467.875, + "width": 48.4, + "height": 16.25, + "strokeColor": "#78716c", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1107, + "version": 1, + "versionNonce": 1108, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "modality", + "originalText": "modality", + "fontSize": 13, + "fontFamily": 2, + "textAlign": "center", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 + }, + { + "type": "arrow", + "id": "r_seen", + "x": 422, + "y": 384, + "width": 0.0, + "height": 55.5, + "strokeColor": "#78716c", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1109, + "version": 1, + "versionNonce": 1110, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "points": [ + [ + 0, + 0 + ], + [ + 0.0, + 55.5 + ] + ], + "startBinding": null, + "endBinding": null, + "startArrowhead": null, + "endArrowhead": null + }, + { + "type": "line", + "id": "r_seen_h", + "x": 422, + "y": 445, + "width": 0, + "height": 0, + "strokeColor": "#78716c", + "backgroundColor": "#78716c", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1111, + "version": 1, + "versionNonce": 1112, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "points": [ + [ + 0, + 0 + ], + [ + -6.199999999999989, + -10.0 + ], + [ + 6.199999999999989, + -10.0 + ], + [ + 0, + 0 + ] + ], + "roundness": null + }, + { + "type": "rectangle", + "id": "l_seen", + "x": 392.85, + "y": 404.875, + "width": 58.3, + "height": 22.25, + "strokeColor": "transparent", + "backgroundColor": "#fef3c7", + "fillStyle": "solid", + "strokeWidth": 0, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1113, + "version": 1, + "versionNonce": 1114, + "isDeleted": false, + "groupIds": [], + "boundElements": [], + "link": null, + "locked": false, + "roundness": { + "type": 3 + } + }, + { + "type": "text", + "id": "l_seen_t", + "x": 398.85, + "y": 407.875, + "width": 46.3, + "height": 16.25, + "strokeColor": "#78716c", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1115, + "version": 1, + "versionNonce": 1116, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "seen on", + "originalText": "seen on", + "fontSize": 13, + "fontFamily": 2, + "textAlign": "center", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 + }, + { + "type": "rectangle", + "id": "thorax", + "x": 130, + "y": 568, + "width": 130, + "height": 62, + "strokeColor": "#1d4ed8", + "backgroundColor": "#bfdbfe", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1117, + "version": 1, + "versionNonce": 1118, + "isDeleted": false, + "groupIds": [], + "boundElements": [], + "link": null, + "locked": false, + "roundness": { + "type": 3 + } + }, + { + "type": "text", + "id": "nt29", + "x": 138, + "y": 580.5, + "width": 114, + "height": 18.75, + "strokeColor": "#1e3a8a", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1119, + "version": 1, + "versionNonce": 1120, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "thorax", + "originalText": "thorax", + "fontSize": 15, + "fontFamily": 2, + "textAlign": "center", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 + }, + { + "type": "text", + "id": "nd30", + "x": 138, + "y": 601.25, + "width": 114, + "height": 16.25, + "strokeColor": "#1d4ed8", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1121, + "version": 1, + "versionNonce": 1122, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "anatomic location", + "originalText": "anatomic location", + "fontSize": 13, + "fontFamily": 2, + "textAlign": "center", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 + }, + { + "type": "rectangle", + "id": "lung", + "x": 342, + "y": 568, + "width": 110, + "height": 62, + "strokeColor": "#1d4ed8", + "backgroundColor": "#bfdbfe", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1123, + "version": 1, + "versionNonce": 1124, + "isDeleted": false, + "groupIds": [], + "boundElements": [], + "link": null, + "locked": false, + "roundness": { + "type": 3 + } + }, + { + "type": "image", + "id": "ni31", + "x": 361.8, + "y": 583.0, + "width": 32, + "height": 32, + "strokeColor": "transparent", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1125, + "version": 1, + "versionNonce": 1126, + "isDeleted": false, + "groupIds": [], + "boundElements": [], + "link": null, + "locked": false, + "fileId": "img_ni31", + "status": "saved", + "scale": [ + 1, + 1 + ], + "roundness": null, + "crop": null + }, + { + "type": "text", + "id": "nt32", + "x": 403.8, + "y": 589.625, + "width": 28.4, + "height": 18.75, + "strokeColor": "#1e3a8a", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1127, + "version": 1, + "versionNonce": 1128, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "lung", + "originalText": "lung", + "fontSize": 15, + "fontFamily": 2, + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 + }, + { + "type": "rectangle", + "id": "upper_lobe", + "x": 554, + "y": 568, + "width": 185, + "height": 62, + "strokeColor": "#1d4ed8", + "backgroundColor": "#bfdbfe", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1129, + "version": 1, + "versionNonce": 1130, + "isDeleted": false, + "groupIds": [], + "boundElements": [], + "link": null, + "locked": false, + "roundness": { + "type": 3 + } + }, + { + "type": "text", + "id": "nt33", + "x": 562, + "y": 589.625, + "width": 169, + "height": 18.75, + "strokeColor": "#1e3a8a", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1131, + "version": 1, + "versionNonce": 1132, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "upper lobe of right lung", + "originalText": "upper lobe of right lung", + "fontSize": 15, + "fontFamily": 2, + "textAlign": "center", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 + }, + { + "type": "rectangle", + "id": "pleural_space", + "x": 760, + "y": 568, + "width": 120, + "height": 62, + "strokeColor": "#1d4ed8", + "backgroundColor": "#bfdbfe", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1133, + "version": 1, + "versionNonce": 1134, + "isDeleted": false, + "groupIds": [], + "boundElements": [], + "link": null, + "locked": false, + "roundness": { + "type": 3 + } + }, + { + "type": "text", + "id": "nt34", + "x": 768, + "y": 589.625, + "width": 104, + "height": 18.75, + "strokeColor": "#1e3a8a", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1135, + "version": 1, + "versionNonce": 1136, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "pleural space", + "originalText": "pleural space", + "fontSize": 15, + "fontFamily": 2, + "textAlign": "center", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 + }, + { + "type": "arrow", + "id": "r_contains1", + "x": 260, + "y": 599.0, + "width": 73.5, + "height": 0.0, + "strokeColor": "#78716c", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1137, + "version": 1, + "versionNonce": 1138, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "points": [ + [ + 0, + 0.0 + ], + [ + 73.5, + 0.0 + ] + ], + "startBinding": null, + "endBinding": null, + "startArrowhead": null, + "endArrowhead": null + }, + { + "type": "line", + "id": "r_contains1_h", + "x": 339, + "y": 599.0, + "width": 0, + "height": 0, + "strokeColor": "#78716c", + "backgroundColor": "#78716c", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1139, + "version": 1, + "versionNonce": 1140, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "points": [ + [ + 0, + 0.0 + ], + [ + -10.0, + 6.2000000000000455 + ], + [ + -10.0, + -6.2000000000000455 + ], + [ + 0, + 0 + ] + ], + "roundness": null + }, + { + "type": "rectangle", + "id": "l_contains1", + "x": 270.8, + "y": 587.875, + "width": 60.4, + "height": 22.25, + "strokeColor": "transparent", + "backgroundColor": "#fef3c7", + "fillStyle": "solid", + "strokeWidth": 0, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1141, + "version": 1, + "versionNonce": 1142, + "isDeleted": false, + "groupIds": [], + "boundElements": [], + "link": null, + "locked": false, + "roundness": { + "type": 3 + } + }, + { + "type": "text", + "id": "l_contains1_t", + "x": 276.8, + "y": 590.875, + "width": 48.4, + "height": 16.25, + "strokeColor": "#78716c", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1143, + "version": 1, + "versionNonce": 1144, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "contains", + "originalText": "contains", + "fontSize": 13, + "fontFamily": 2, + "textAlign": "center", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 + }, + { + "type": "arrow", + "id": "r_contains2", + "x": 452, + "y": 599.0, + "width": 93.5, + "height": 0.0, + "strokeColor": "#78716c", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1145, + "version": 1, + "versionNonce": 1146, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "points": [ + [ + 0, + 0.0 + ], + [ + 93.5, + 0.0 + ] + ], + "startBinding": null, + "endBinding": null, + "startArrowhead": null, + "endArrowhead": null + }, + { + "type": "line", + "id": "r_contains2_h", + "x": 551, + "y": 599.0, + "width": 0, + "height": 0, + "strokeColor": "#78716c", + "backgroundColor": "#78716c", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1147, + "version": 1, + "versionNonce": 1148, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "points": [ + [ + 0, + 0.0 + ], + [ + -10.0, + 6.2000000000000455 + ], + [ + -10.0, + -6.2000000000000455 + ], + [ + 0, + 0 + ] + ], + "roundness": null + }, + { + "type": "rectangle", + "id": "l_contains2", + "x": 472.8, + "y": 587.875, + "width": 60.4, + "height": 22.25, + "strokeColor": "transparent", + "backgroundColor": "#fef3c7", + "fillStyle": "solid", + "strokeWidth": 0, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1149, + "version": 1, + "versionNonce": 1150, + "isDeleted": false, + "groupIds": [], + "boundElements": [], + "link": null, + "locked": false, + "roundness": { + "type": 3 + } + }, + { + "type": "text", + "id": "l_contains2_t", + "x": 478.8, + "y": 590.875, + "width": 48.4, + "height": 16.25, + "strokeColor": "#78716c", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1151, + "version": 1, + "versionNonce": 1152, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "contains", + "originalText": "contains", + "fontSize": 13, + "fontFamily": 2, + "textAlign": "center", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 + }, + { + "type": "arrow", + "id": "r_contains3", + "x": 215, + "y": 630, + "width": 605.0, + "height": 8.5, + "strokeColor": "#78716c", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1153, + "version": 1, + "versionNonce": 1154, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "points": [ + [ + 0, + 0 + ], + [ + 0, + 26 + ], + [ + 605, + 26 + ], + [ + 605.0, + 8.5 + ] + ], + "startBinding": null, + "endBinding": null, + "startArrowhead": null, + "endArrowhead": null + }, + { + "type": "line", + "id": "r_contains3_h", + "x": 820, + "y": 633, + "width": 0, + "height": 0, + "strokeColor": "#78716c", + "backgroundColor": "#78716c", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1155, + "version": 1, + "versionNonce": 1156, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "points": [ + [ + 0, + 0 + ], + [ + 6.2000000000000455, + 10.0 + ], + [ + -6.2000000000000455, + 10.0 + ], + [ + 0, + 0 + ] + ], + "roundness": null + }, + { + "type": "rectangle", + "id": "l_contains3", + "x": 469.8, + "y": 644.875, + "width": 60.4, + "height": 22.25, + "strokeColor": "transparent", + "backgroundColor": "#fef3c7", + "fillStyle": "solid", + "strokeWidth": 0, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1157, + "version": 1, + "versionNonce": 1158, + "isDeleted": false, + "groupIds": [], + "boundElements": [], + "link": null, + "locked": false, + "roundness": { + "type": 3 + } + }, + { + "type": "text", + "id": "l_contains3_t", + "x": 475.8, + "y": 647.875, + "width": 48.4, + "height": 16.25, + "strokeColor": "#78716c", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1159, + "version": 1, + "versionNonce": 1160, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "contains", + "originalText": "contains", + "fontSize": 13, + "fontFamily": 2, + "textAlign": "center", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 + }, + { + "type": "arrow", + "id": "r_covers", + "x": 200, + "y": 504, + "width": 0.0, + "height": 55.5, + "strokeColor": "#78716c", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1161, + "version": 1, + "versionNonce": 1162, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "points": [ + [ + 0, + 0 + ], + [ + 0.0, + 55.5 + ] + ], + "startBinding": null, + "endBinding": null, + "startArrowhead": null, + "endArrowhead": null + }, + { + "type": "line", + "id": "r_covers_h", + "x": 200, + "y": 565, + "width": 0, + "height": 0, + "strokeColor": "#78716c", + "backgroundColor": "#78716c", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1163, + "version": 1, + "versionNonce": 1164, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "points": [ + [ + 0, + 0 + ], + [ + -6.199999999999989, + -10.0 + ], + [ + 6.199999999999989, + -10.0 + ], + [ + 0, + 0 + ] + ], + "roundness": null + }, + { + "type": "rectangle", + "id": "l_covers", + "x": 174.85, + "y": 524.875, + "width": 50.3, + "height": 22.25, + "strokeColor": "transparent", + "backgroundColor": "#fef3c7", + "fillStyle": "solid", + "strokeWidth": 0, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1165, + "version": 1, + "versionNonce": 1166, + "isDeleted": false, + "groupIds": [], + "boundElements": [], + "link": null, + "locked": false, + "roundness": { + "type": 3 + } + }, + { + "type": "text", + "id": "l_covers_t", + "x": 180.85, + "y": 527.875, + "width": 38.3, + "height": 16.25, + "strokeColor": "#78716c", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1167, + "version": 1, + "versionNonce": 1168, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "covers", + "originalText": "covers", + "fontSize": 13, + "fontFamily": 2, + "textAlign": "center", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 + }, + { + "type": "arrow", + "id": "r_occurs1", + "x": 560, + "y": 384, + "width": -120.0, + "height": 175.5, + "strokeColor": "#78716c", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1169, + "version": 1, + "versionNonce": 1170, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "points": [ + [ + 0, + 0 + ], + [ + 0, + 166 + ], + [ + -120, + 166 + ], + [ + -120.0, + 175.5 + ] + ], + "startBinding": null, + "endBinding": null, + "startArrowhead": null, + "endArrowhead": null + }, + { + "type": "line", + "id": "r_occurs1_h", + "x": 440, + "y": 565, + "width": 0, + "height": 0, + "strokeColor": "#78716c", + "backgroundColor": "#78716c", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1171, + "version": 1, + "versionNonce": 1172, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "points": [ + [ + 0, + 0 + ], + [ + -6.199999999999989, + -10.0 + ], + [ + 6.199999999999989, + -10.0 + ], + [ + 0, + 0 + ] + ], + "roundness": null + }, + { + "type": "rectangle", + "id": "l_occurs1", + "x": 519.65, + "y": 404.875, + "width": 64.7, + "height": 22.25, + "strokeColor": "transparent", + "backgroundColor": "#fef3c7", + "fillStyle": "solid", + "strokeWidth": 0, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1173, + "version": 1, + "versionNonce": 1174, + "isDeleted": false, + "groupIds": [], + "boundElements": [], + "link": null, + "locked": false, + "roundness": { + "type": 3 + } + }, + { + "type": "text", + "id": "l_occurs1_t", + "x": 525.65, + "y": 407.875, + "width": 52.7, + "height": 16.25, + "strokeColor": "#78716c", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1175, + "version": 1, + "versionNonce": 1176, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "occurs at", + "originalText": "occurs at", + "fontSize": 13, + "fontFamily": 2, + "textAlign": "center", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 + }, + { + "type": "arrow", + "id": "r_occurs2", + "x": 790, + "y": 384, + "width": 0.0, + "height": 175.5, + "strokeColor": "#78716c", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1177, + "version": 1, + "versionNonce": 1178, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "points": [ + [ + 0, + 0 + ], + [ + 0.0, + 175.5 + ] + ], + "startBinding": null, + "endBinding": null, + "startArrowhead": null, + "endArrowhead": null + }, + { + "type": "line", + "id": "r_occurs2_h", + "x": 790, + "y": 565, + "width": 0, + "height": 0, + "strokeColor": "#78716c", + "backgroundColor": "#78716c", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1179, + "version": 1, + "versionNonce": 1180, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "points": [ + [ + 0, + 0 + ], + [ + -6.2000000000000455, + -10.0 + ], + [ + 6.2000000000000455, + -10.0 + ], + [ + 0, + 0 + ] + ], + "roundness": null + }, + { + "type": "rectangle", + "id": "l_occurs2", + "x": 757.65, + "y": 404.875, + "width": 64.7, + "height": 22.25, + "strokeColor": "transparent", + "backgroundColor": "#fef3c7", + "fillStyle": "solid", + "strokeWidth": 0, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1181, + "version": 1, + "versionNonce": 1182, + "isDeleted": false, + "groupIds": [], + "boundElements": [], + "link": null, + "locked": false, + "roundness": { + "type": 3 + } + }, + { + "type": "text", + "id": "l_occurs2_t", + "x": 763.65, + "y": 407.875, + "width": 52.7, + "height": 16.25, + "strokeColor": "#78716c", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1183, + "version": 1, + "versionNonce": 1184, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "occurs at", + "originalText": "occurs at", + "fontSize": 13, + "fontFamily": 2, + "textAlign": "center", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 + }, + { + "type": "ellipse", + "id": "g1", + "x": 85, + "y": 401, + "width": 22, + "height": 22, + "strokeColor": "#a8a29e", + "backgroundColor": "#e7e5e4", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 70, + "angle": 0, + "seed": 1185, + "version": 1, + "versionNonce": 1186, + "isDeleted": false, + "groupIds": [], + "boundElements": [], + "link": null, + "locked": false + }, + { + "type": "ellipse", + "id": "g2", + "x": 53, + "y": 439, + "width": 18, + "height": 18, + "strokeColor": "#a8a29e", + "backgroundColor": "#e7e5e4", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 70, + "angle": 0, + "seed": 1187, + "version": 1, + "versionNonce": 1188, + "isDeleted": false, + "groupIds": [], + "boundElements": [], + "link": null, + "locked": false + }, + { + "type": "ellipse", + "id": "g3", + "x": 82, + "y": 476, + "width": 20, + "height": 20, + "strokeColor": "#a8a29e", + "backgroundColor": "#e7e5e4", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 70, + "angle": 0, + "seed": 1189, + "version": 1, + "versionNonce": 1190, + "isDeleted": false, + "groupIds": [], + "boundElements": [], + "link": null, + "locked": false + }, + { + "type": "ellipse", + "id": "g4", + "x": 52, + "y": 520, + "width": 16, + "height": 16, + "strokeColor": "#a8a29e", + "backgroundColor": "#e7e5e4", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 70, + "angle": 0, + "seed": 1191, + "version": 1, + "versionNonce": 1192, + "isDeleted": false, + "groupIds": [], + "boundElements": [], + "link": null, + "locked": false + }, + { + "type": "ellipse", + "id": "g5", + "x": 664, + "y": 440, + "width": 24, + "height": 24, + "strokeColor": "#a8a29e", + "backgroundColor": "#e7e5e4", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 70, + "angle": 0, + "seed": 1193, + "version": 1, + "versionNonce": 1194, + "isDeleted": false, + "groupIds": [], + "boundElements": [], + "link": null, + "locked": false + }, + { + "type": "ellipse", + "id": "g6", + "x": 703, + "y": 483, + "width": 18, + "height": 18, + "strokeColor": "#a8a29e", + "backgroundColor": "#e7e5e4", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 70, + "angle": 0, + "seed": 1195, + "version": 1, + "versionNonce": 1196, + "isDeleted": false, + "groupIds": [], + "boundElements": [], + "link": null, + "locked": false + }, + { + "type": "line", + "id": "f35", + "x": 96, + "y": 412, + "width": -34, + "height": 36, + "strokeColor": "#a8a29e", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 60, + "angle": 0, + "seed": 1197, + "version": 1, + "versionNonce": 1198, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "points": [ + [ + 0, + 0 + ], + [ + -34, + 36 + ] + ] + }, + { + "type": "line", + "id": "f36", + "x": 96, + "y": 412, + "width": -4, + "height": 74, + "strokeColor": "#a8a29e", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 60, + "angle": 0, + "seed": 1199, + "version": 1, + "versionNonce": 1200, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "points": [ + [ + 0, + 0 + ], + [ + -4, + 74 + ] + ] + }, + { + "type": "line", + "id": "f37", + "x": 92, + "y": 486, + "width": -32, + "height": 42, + "strokeColor": "#a8a29e", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 60, + "angle": 0, + "seed": 1201, + "version": 1, + "versionNonce": 1202, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "points": [ + [ + 0, + 0 + ], + [ + -32, + 42 + ] + ] + }, + { + "type": "line", + "id": "f38", + "x": 104, + "y": 404, + "width": 20, + "height": -16, + "strokeColor": "#a8a29e", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 60, + "angle": 0, + "seed": 1203, + "version": 1, + "versionNonce": 1204, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "points": [ + [ + 0, + 0 + ], + [ + 20, + -16 + ] + ] + }, + { + "type": "line", + "id": "f39", + "x": 66, + "y": 535, + "width": 64, + "height": 55, + "strokeColor": "#a8a29e", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 60, + "angle": 0, + "seed": 1205, + "version": 1, + "versionNonce": 1206, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "points": [ + [ + 0, + 0 + ], + [ + 64, + 55 + ] + ] + }, + { + "type": "line", + "id": "f40", + "x": 676, + "y": 452, + "width": 36, + "height": 40, + "strokeColor": "#a8a29e", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 60, + "angle": 0, + "seed": 1207, + "version": 1, + "versionNonce": 1208, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "points": [ + [ + 0, + 0 + ], + [ + 36, + 40 + ] + ] + }, + { + "type": "line", + "id": "f41", + "x": 676, + "y": 440, + "width": 0, + "height": -56, + "strokeColor": "#a8a29e", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 60, + "angle": 0, + "seed": 1209, + "version": 1, + "versionNonce": 1210, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "points": [ + [ + 0, + 0 + ], + [ + 0, + -56 + ] + ] + }, + { + "type": "arrow", + "id": "x_exam", + "x": 300, + "y": 158, + "width": 0.0, + "height": 153.85000000000002, + "strokeColor": "#be123c", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 3, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1211, + "version": 1, + "versionNonce": 1212, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "points": [ + [ + 0, + 0 + ], + [ + 0.0, + 153.85000000000002 + ] + ], + "startBinding": null, + "endBinding": null, + "startArrowhead": null, + "endArrowhead": null + }, + { + "type": "line", + "id": "x_exam_h", + "x": 300, + "y": 319, + "width": 0, + "height": 0, + "strokeColor": "#be123c", + "backgroundColor": "#be123c", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1213, + "version": 1, + "versionNonce": 1214, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "points": [ + [ + 0, + 0 + ], + [ + -8.060000000000002, + -13.0 + ], + [ + 8.060000000000002, + -13.0 + ], + [ + 0, + 0 + ] + ], + "roundness": null + }, + { + "type": "rectangle", + "id": "x_exam_l", + "x": 283.9, + "y": 200.875, + "width": 32.2, + "height": 22.25, + "strokeColor": "transparent", + "backgroundColor": "#ffffff", + "fillStyle": "solid", + "strokeWidth": 0, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1215, + "version": 1, + "versionNonce": 1216, + "isDeleted": false, + "groupIds": [], + "boundElements": [], + "link": null, + "locked": false, + "roundness": { + "type": 3 + } + }, + { + "type": "text", + "id": "x_exam_l_t", + "x": 289.9, + "y": 203.875, + "width": 20.2, + "height": 16.25, + "strokeColor": "#881337", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, "angle": 0, - "seed": 1099, + "seed": 1217, "version": 1, - "versionNonce": 1100, + "versionNonce": 1218, "isDeleted": false, "groupIds": [], - "boundElements": [], + "boundElements": null, "link": null, - "locked": false + "locked": false, + "text": "is a", + "originalText": "is a", + "fontSize": 13, + "fontFamily": 2, + "textAlign": "center", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 }, { - "type": "ellipse", - "id": "g4", - "x": 161, - "y": 503, - "width": 18, - "height": 18, - "strokeColor": "#a8a29e", - "backgroundColor": "#e7e5e4", + "type": "arrow", + "id": "x_nodule_isa", + "x": 490, + "y": 158, + "width": 0.0, + "height": 153.85000000000002, + "strokeColor": "#be123c", + "backgroundColor": "transparent", "fillStyle": "solid", - "strokeWidth": 1, + "strokeWidth": 3, "strokeStyle": "solid", "roughness": 0, - "opacity": 70, + "opacity": 100, "angle": 0, - "seed": 1101, + "seed": 1219, "version": 1, - "versionNonce": 1102, + "versionNonce": 1220, "isDeleted": false, "groupIds": [], - "boundElements": [], + "boundElements": null, "link": null, - "locked": false + "locked": false, + "points": [ + [ + 0, + 0 + ], + [ + 0.0, + 153.85000000000002 + ] + ], + "startBinding": null, + "endBinding": null, + "startArrowhead": null, + "endArrowhead": null }, { - "type": "ellipse", - "id": "g5", - "x": 794, - "y": 443, - "width": 24, - "height": 24, - "strokeColor": "#a8a29e", - "backgroundColor": "#e7e5e4", + "type": "line", + "id": "x_nodule_isa_h", + "x": 490, + "y": 319, + "width": 0, + "height": 0, + "strokeColor": "#be123c", + "backgroundColor": "#be123c", "fillStyle": "solid", "strokeWidth": 1, "strokeStyle": "solid", "roughness": 0, - "opacity": 70, + "opacity": 100, "angle": 0, - "seed": 1103, + "seed": 1221, "version": 1, - "versionNonce": 1104, + "versionNonce": 1222, "isDeleted": false, "groupIds": [], - "boundElements": [], + "boundElements": null, "link": null, - "locked": false + "locked": false, + "points": [ + [ + 0, + 0 + ], + [ + -8.060000000000002, + -13.0 + ], + [ + 8.060000000000002, + -13.0 + ], + [ + 0, + 0 + ] + ], + "roundness": null }, { - "type": "ellipse", - "id": "g6", - "x": 830, - "y": 409, - "width": 16, - "height": 16, - "strokeColor": "#a8a29e", - "backgroundColor": "#e7e5e4", + "type": "rectangle", + "id": "x_nodule_isa_l", + "x": 473.9, + "y": 200.875, + "width": 32.2, + "height": 22.25, + "strokeColor": "transparent", + "backgroundColor": "#ffffff", "fillStyle": "solid", - "strokeWidth": 1, + "strokeWidth": 0, "strokeStyle": "solid", "roughness": 0, - "opacity": 70, + "opacity": 100, "angle": 0, - "seed": 1105, + "seed": 1223, "version": 1, - "versionNonce": 1106, + "versionNonce": 1224, "isDeleted": false, "groupIds": [], "boundElements": [], "link": null, - "locked": false + "locked": false, + "roundness": { + "type": 3 + } }, { - "type": "line", - "id": "f24", - "x": 105, - "y": 395, - "width": -39, - "height": 42, - "strokeColor": "#a8a29e", + "type": "text", + "id": "x_nodule_isa_l_t", + "x": 479.9, + "y": 203.875, + "width": 20.2, + "height": 16.25, + "strokeColor": "#881337", "backgroundColor": "transparent", "fillStyle": "solid", "strokeWidth": 1, "strokeStyle": "solid", "roughness": 0, - "opacity": 60, + "opacity": 100, "angle": 0, - "seed": 1107, + "seed": 1225, "version": 1, - "versionNonce": 1108, + "versionNonce": 1226, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "is a", + "originalText": "is a", + "fontSize": 13, + "fontFamily": 2, + "textAlign": "center", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 + }, + { + "type": "arrow", + "id": "x_nodule_loc", + "x": 602, + "y": 158, + "width": 0.0, + "height": 399.85, + "strokeColor": "#be123c", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 3, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1227, + "version": 1, + "versionNonce": 1228, "isDeleted": false, "groupIds": [], "boundElements": null, @@ -1680,29 +3764,135 @@ 0 ], [ - -39, - 42 + 0.0, + 399.85 ] - ] + ], + "startBinding": null, + "endBinding": null, + "startArrowhead": null, + "endArrowhead": null }, { "type": "line", - "id": "f25", - "x": 105, - "y": 395, - "width": 23, - "height": 52, - "strokeColor": "#a8a29e", + "id": "x_nodule_loc_h", + "x": 602, + "y": 565, + "width": 0, + "height": 0, + "strokeColor": "#be123c", + "backgroundColor": "#be123c", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1229, + "version": 1, + "versionNonce": 1230, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "points": [ + [ + 0, + 0 + ], + [ + -8.059999999999945, + -13.0 + ], + [ + 8.059999999999945, + -13.0 + ], + [ + 0, + 0 + ] + ], + "roundness": null + }, + { + "type": "rectangle", + "id": "x_nodule_loc_l", + "x": 567.8, + "y": 200.875, + "width": 68.4, + "height": 22.25, + "strokeColor": "transparent", + "backgroundColor": "#ffffff", + "fillStyle": "solid", + "strokeWidth": 0, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1231, + "version": 1, + "versionNonce": 1232, + "isDeleted": false, + "groupIds": [], + "boundElements": [], + "link": null, + "locked": false, + "roundness": { + "type": 3 + } + }, + { + "type": "text", + "id": "x_nodule_loc_l_t", + "x": 573.8, + "y": 203.875, + "width": 56.4, + "height": 16.25, + "strokeColor": "#881337", "backgroundColor": "transparent", "fillStyle": "solid", "strokeWidth": 1, "strokeStyle": "solid", "roughness": 0, - "opacity": 60, + "opacity": 100, "angle": 0, - "seed": 1109, + "seed": 1233, "version": 1, - "versionNonce": 1110, + "versionNonce": 1234, + "isDeleted": false, + "groupIds": [], + "boundElements": null, + "link": null, + "locked": false, + "text": "located at", + "originalText": "located at", + "fontSize": 13, + "fontFamily": 2, + "textAlign": "center", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 + }, + { + "type": "arrow", + "id": "x_effusion_isa", + "x": 720, + "y": 158, + "width": 0.0, + "height": 153.85000000000002, + "strokeColor": "#be123c", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 3, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1235, + "version": 1, + "versionNonce": 1236, "isDeleted": false, "groupIds": [], "boundElements": null, @@ -1714,29 +3904,33 @@ 0 ], [ - 23, - 52 + 0.0, + 153.85000000000002 ] - ] + ], + "startBinding": null, + "endBinding": null, + "startArrowhead": null, + "endArrowhead": null }, { "type": "line", - "id": "f26", - "x": 128, - "y": 447, - "width": 42, - "height": 65, - "strokeColor": "#a8a29e", - "backgroundColor": "transparent", + "id": "x_effusion_isa_h", + "x": 720, + "y": 319, + "width": 0, + "height": 0, + "strokeColor": "#be123c", + "backgroundColor": "#be123c", "fillStyle": "solid", "strokeWidth": 1, "strokeStyle": "solid", "roughness": 0, - "opacity": 60, + "opacity": 100, "angle": 0, - "seed": 1111, + "seed": 1237, "version": 1, - "versionNonce": 1112, + "versionNonce": 1238, "isDeleted": false, "groupIds": [], "boundElements": null, @@ -1744,101 +3938,101 @@ "locked": false, "points": [ [ - 0, - 0 + 0, + 0 + ], + [ + -8.059999999999945, + -13.0 + ], + [ + 8.059999999999945, + -13.0 ], [ - 42, - 65 + 0, + 0 ] - ] + ], + "roundness": null }, { - "type": "line", - "id": "f27", - "x": 118, - "y": 398, - "width": 97, - "height": 12, - "strokeColor": "#a8a29e", - "backgroundColor": "transparent", + "type": "rectangle", + "id": "x_effusion_isa_l", + "x": 703.9, + "y": 200.875, + "width": 32.2, + "height": 22.25, + "strokeColor": "transparent", + "backgroundColor": "#ffffff", "fillStyle": "solid", - "strokeWidth": 1, + "strokeWidth": 0, "strokeStyle": "solid", "roughness": 0, - "opacity": 60, + "opacity": 100, "angle": 0, - "seed": 1113, + "seed": 1239, "version": 1, - "versionNonce": 1114, + "versionNonce": 1240, "isDeleted": false, "groupIds": [], - "boundElements": null, + "boundElements": [], "link": null, "locked": false, - "points": [ - [ - 0, - 0 - ], - [ - 97, - 12 - ] - ] + "roundness": { + "type": 3 + } }, { - "type": "line", - "id": "f28", - "x": 838, - "y": 417, - "width": -32, - "height": 38, - "strokeColor": "#a8a29e", + "type": "text", + "id": "x_effusion_isa_l_t", + "x": 709.9, + "y": 203.875, + "width": 20.2, + "height": 16.25, + "strokeColor": "#881337", "backgroundColor": "transparent", "fillStyle": "solid", "strokeWidth": 1, "strokeStyle": "solid", "roughness": 0, - "opacity": 60, + "opacity": 100, "angle": 0, - "seed": 1115, + "seed": 1241, "version": 1, - "versionNonce": 1116, + "versionNonce": 1242, "isDeleted": false, "groupIds": [], "boundElements": null, "link": null, "locked": false, - "points": [ - [ - 0, - 0 - ], - [ - -32, - 38 - ] - ] + "text": "is a", + "originalText": "is a", + "fontSize": 13, + "fontFamily": 2, + "textAlign": "center", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 }, { - "type": "line", - "id": "f29", - "x": 798, - "y": 466, - "width": -20, - "height": 49, - "strokeColor": "#a8a29e", + "type": "arrow", + "id": "x_effusion_loc", + "x": 866, + "y": 158, + "width": -9.824377326810236, + "height": 399.85215720117867, + "strokeColor": "#be123c", "backgroundColor": "transparent", "fillStyle": "solid", - "strokeWidth": 1, + "strokeWidth": 3, "strokeStyle": "solid", "roughness": 0, - "opacity": 60, + "opacity": 100, "angle": 0, - "seed": 1117, + "seed": 1243, "version": 1, - "versionNonce": 1118, + "versionNonce": 1244, "isDeleted": false, "groupIds": [], "boundElements": null, @@ -1850,29 +4044,33 @@ 0 ], [ - -20, - 49 + -9.824377326810236, + 399.85215720117867 ] - ] + ], + "startBinding": null, + "endBinding": null, + "startArrowhead": null, + "endArrowhead": null }, { - "type": "arrow", - "id": "x_exam", - "x": 308, - "y": 142, + "type": "line", + "id": "x_effusion_loc_h", + "x": 856, + "y": 565, "width": 0, - "height": 227, + "height": 0, "strokeColor": "#be123c", - "backgroundColor": "transparent", + "backgroundColor": "#be123c", "fillStyle": "solid", - "strokeWidth": 3, + "strokeWidth": 1, "strokeStyle": "solid", "roughness": 0, "opacity": 100, "angle": 0, - "seed": 1119, + "seed": 1245, "version": 1, - "versionNonce": 1120, + "versionNonce": 1246, "isDeleted": false, "groupIds": [], "boundElements": null, @@ -1883,22 +4081,27 @@ 0, 0 ], + [ + -7.738254294690023, + -13.194052465816299 + ], + [ + 8.376882197198029, + -12.798103166261285 + ], [ 0, - 227 + 0 ] ], - "startBinding": null, - "endBinding": null, - "startArrowhead": null, - "endArrowhead": "arrow" + "roundness": null }, { "type": "rectangle", - "id": "x_exam_l", - "x": 291.9, - "y": 228.875, - "width": 32.2, + "id": "x_effusion_loc_l", + "x": 829.8, + "y": 200.875, + "width": 68.4, "height": 22.25, "strokeColor": "transparent", "backgroundColor": "#ffffff", @@ -1908,9 +4111,9 @@ "roughness": 0, "opacity": 100, "angle": 0, - "seed": 1121, + "seed": 1247, "version": 1, - "versionNonce": 1122, + "versionNonce": 1248, "isDeleted": false, "groupIds": [], "boundElements": [], @@ -1922,10 +4125,10 @@ }, { "type": "text", - "id": "x_exam_l_t", - "x": 297.9, - "y": 231.875, - "width": 20.2, + "id": "x_effusion_loc_l_t", + "x": 835.8, + "y": 203.875, + "width": 56.4, "height": 16.25, "strokeColor": "#881337", "backgroundColor": "transparent", @@ -1935,16 +4138,16 @@ "roughness": 0, "opacity": 100, "angle": 0, - "seed": 1123, + "seed": 1249, "version": 1, - "versionNonce": 1124, + "versionNonce": 1250, "isDeleted": false, "groupIds": [], "boundElements": null, "link": null, "locked": false, - "text": "is a", - "originalText": "is a", + "text": "located at", + "originalText": "located at", "fontSize": 13, "fontFamily": 2, "textAlign": "center", @@ -1953,61 +4156,82 @@ "lineHeight": 1.25 }, { - "type": "arrow", - "id": "x_isa", - "x": 545, - "y": 166, - "width": 0, - "height": 203, - "strokeColor": "#be123c", + "type": "rectangle", + "id": "leg42", + "x": 192.45, + "y": 713.6, + "width": 18, + "height": 13, + "strokeColor": "#059669", + "backgroundColor": "#d1fae5", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1251, + "version": 1, + "versionNonce": 1252, + "isDeleted": false, + "groupIds": [], + "boundElements": [], + "link": null, + "locked": false, + "roundness": { + "type": 3 + } + }, + { + "type": "text", + "id": "legt43", + "x": 218.45, + "y": 712, + "width": 152.5, + "height": 16.25, + "strokeColor": "#64748b", "backgroundColor": "transparent", "fillStyle": "solid", - "strokeWidth": 3, + "strokeWidth": 1, "strokeStyle": "solid", "roughness": 0, "opacity": 100, "angle": 0, - "seed": 1125, + "seed": 1253, "version": 1, - "versionNonce": 1126, + "versionNonce": 1254, "isDeleted": false, "groupIds": [], "boundElements": null, "link": null, "locked": false, - "points": [ - [ - 0, - 0 - ], - [ - 0, - 203 - ] - ], - "startBinding": null, - "endBinding": null, - "startArrowhead": null, - "endArrowhead": "arrow" + "text": "finding/diagnosis definition", + "originalText": "finding/diagnosis definition", + "fontSize": 13, + "fontFamily": 2, + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 }, { "type": "rectangle", - "id": "x_isa_l", - "x": 528.9, - "y": 228.875, - "width": 32.2, - "height": 22.25, - "strokeColor": "transparent", - "backgroundColor": "#ffffff", + "id": "leg44", + "x": 398.95, + "y": 713.6, + "width": 18, + "height": 13, + "strokeColor": "#1d4ed8", + "backgroundColor": "#bfdbfe", "fillStyle": "solid", - "strokeWidth": 0, + "strokeWidth": 1, "strokeStyle": "solid", "roughness": 0, "opacity": 100, "angle": 0, - "seed": 1127, + "seed": 1255, "version": 1, - "versionNonce": 1128, + "versionNonce": 1256, "isDeleted": false, "groupIds": [], "boundElements": [], @@ -2019,12 +4243,12 @@ }, { "type": "text", - "id": "x_isa_l_t", - "x": 534.9, - "y": 231.875, - "width": 20.2, + "id": "legt45", + "x": 424.95, + "y": 712, + "width": 101.2, "height": 16.25, - "strokeColor": "#881337", + "strokeColor": "#64748b", "backgroundColor": "transparent", "fillStyle": "solid", "strokeWidth": 1, @@ -2032,79 +4256,100 @@ "roughness": 0, "opacity": 100, "angle": 0, - "seed": 1129, + "seed": 1257, "version": 1, - "versionNonce": 1130, + "versionNonce": 1258, "isDeleted": false, "groupIds": [], "boundElements": null, "link": null, "locked": false, - "text": "is a", - "originalText": "is a", + "text": "anatomic location", + "originalText": "anatomic location", "fontSize": 13, "fontFamily": 2, - "textAlign": "center", + "textAlign": "left", "verticalAlign": "top", "containerId": null, "lineHeight": 1.25 }, { - "type": "arrow", - "id": "x_located", - "x": 660, - "y": 166, - "width": 51, - "height": 345, - "strokeColor": "#be123c", + "type": "rectangle", + "id": "leg46", + "x": 554.15, + "y": 713.6, + "width": 18, + "height": 13, + "strokeColor": "#b45309", + "backgroundColor": "#fde68a", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "seed": 1259, + "version": 1, + "versionNonce": 1260, + "isDeleted": false, + "groupIds": [], + "boundElements": [], + "link": null, + "locked": false, + "roundness": { + "type": 3 + } + }, + { + "type": "text", + "id": "legt47", + "x": 580.15, + "y": 712, + "width": 60.0, + "height": 16.25, + "strokeColor": "#64748b", "backgroundColor": "transparent", "fillStyle": "solid", - "strokeWidth": 3, + "strokeWidth": 1, "strokeStyle": "solid", "roughness": 0, "opacity": 100, "angle": 0, - "seed": 1131, + "seed": 1261, "version": 1, - "versionNonce": 1132, + "versionNonce": 1262, "isDeleted": false, "groupIds": [], "boundElements": null, "link": null, "locked": false, - "points": [ - [ - 0, - 0 - ], - [ - 51, - 345 - ] - ], - "startBinding": null, - "endBinding": null, - "startArrowhead": null, - "endArrowhead": "arrow" + "text": "exam type", + "originalText": "exam type", + "fontSize": 13, + "fontFamily": 2, + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "lineHeight": 1.25 }, { "type": "rectangle", - "id": "x_located_l", - "x": 636.8, - "y": 228.875, - "width": 68.4, - "height": 22.25, - "strokeColor": "transparent", - "backgroundColor": "#ffffff", + "id": "leg48", + "x": 668.15, + "y": 713.6, + "width": 18, + "height": 13, + "strokeColor": "#6b7280", + "backgroundColor": "#e5e7eb", "fillStyle": "solid", - "strokeWidth": 0, + "strokeWidth": 1, "strokeStyle": "solid", "roughness": 0, "opacity": 100, "angle": 0, - "seed": 1133, + "seed": 1263, "version": 1, - "versionNonce": 1134, + "versionNonce": 1264, "isDeleted": false, "groupIds": [], "boundElements": [], @@ -2116,12 +4361,12 @@ }, { "type": "text", - "id": "x_located_l_t", - "x": 642.8, - "y": 231.875, - "width": 56.4, + "id": "legt49", + "x": 694.15, + "y": 712, + "width": 48.4, "height": 16.25, - "strokeColor": "#881337", + "strokeColor": "#64748b", "backgroundColor": "transparent", "fillStyle": "solid", "strokeWidth": 1, @@ -2129,19 +4374,19 @@ "roughness": 0, "opacity": 100, "angle": 0, - "seed": 1135, + "seed": 1265, "version": 1, - "versionNonce": 1136, + "versionNonce": 1266, "isDeleted": false, "groupIds": [], "boundElements": null, "link": null, "locked": false, - "text": "located at", - "originalText": "located at", + "text": "modality", + "originalText": "modality", "fontSize": 13, "fontFamily": 2, - "textAlign": "center", + "textAlign": "left", "verticalAlign": "top", "containerId": null, "lineHeight": 1.25 @@ -2150,8 +4395,8 @@ "type": "text", "id": "caption", "x": 0, - "y": 631, - "width": 885, + "y": 744, + "width": 935, "height": 17.5, "strokeColor": "#64748b", "backgroundColor": "transparent", @@ -2161,9 +4406,9 @@ "roughness": 0, "opacity": 100, "angle": 0, - "seed": 1137, + "seed": 1267, "version": 1, - "versionNonce": 1138, + "versionNonce": 1268, "isDeleted": false, "groupIds": [], "boundElements": null, @@ -2211,19 +4456,31 @@ "img_ni13": { "mimeType": "image/svg+xml", "id": "img_ni13", - "dataURL": "data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNDgiIGhlaWdodD0iNDgiIHZpZXdCb3g9IjAgMCA0OCA0OCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0yOSA5QzI5IDExLjc2MTQgMjYuNzYxNCAxNCAyNCAxNEMyMS4yMzg2IDE0IDE5IDExLjc2MTQgMTkgOUMxOSA2LjIzODU4IDIxLjIzODYgNCAyNCA0QzI2Ljc2MTQgNCAyOSA2LjIzODU4IDI5IDlaTTI3IDlDMjcgMTAuNjU2OSAyNS42NTY5IDEyIDI0IDEyQzIyLjM0MzEgMTIgMjEgMTAuNjU2OSAyMSA5QzIxIDcuMzQzMTUgMjIuMzQzMSA2IDI0IDZDMjUuNjU2OSA2IDI3IDcuMzQzMTUgMjcgOVoiIGZpbGw9IiNiNDUzMDkiLz4KPHBhdGggZD0iTTE2Ljk5OTggNDFWMzRIMTguOTk5OFY0MUMxOC45OTk4IDQxLjU1MjMgMTkuNDQ3NSA0MiAxOS45OTk4IDQySDIwLjA4NjVDMjAuNjAzNyA0MiAyMS4wMzU2IDQxLjYwNTYgMjEuMDgyNCA0MS4wOTA1TDIxLjcyNyAzNEgyMy43MzUzTDIzLjA3NDIgNDEuMjcxNkMyMy4wNjkgNDEuMzI4OCAyMy4wNjIyIDQxLjM4NTYgMjMuMDUzOSA0MS40NDE3QzIzLjAzNTcgNDEuNTY0NyAyMy4wMTAxIDQxLjY4NTEgMjIuOTc3NiA0MS44MDI1QzIyLjYyNDIgNDMuMDc5OCAyMS40NTQ5IDQ0IDIwLjA4NjUgNDRIMTkuOTk5OEMxOC4zNDI5IDQ0IDE2Ljk5OTggNDIuNjU2OSAxNi45OTk4IDQxWiIgZmlsbD0iI2I0NTMwOSIvPgo8cGF0aCBkPSJNMjYuOTE3MSA0MS4wOTA1TDI2LjI3MjUgMzRIMjQuMjY0MkwyNC45MjUzIDQxLjI3MTZDMjQuOTMwNSA0MS4zMjg4IDI0LjkzNzMgNDEuMzg1NiAyNC45NDU2IDQxLjQ0MTdDMjQuOTYzOCA0MS41NjQ3IDI0Ljk4OTQgNDEuNjg1MSAyNS4wMjE5IDQxLjgwMjVDMjUuMzc1MyA0My4wNzk4IDI2LjU0NDYgNDQgMjcuOTEzIDQ0SDI3Ljk5OThDMjkuNjU2NiA0NCAzMC45OTk4IDQyLjY1NjkgMzAuOTk5OCA0MVYzNEgyOC45OTk4VjQxQzI4Ljk5OTggNDEuNTUyMyAyOC41NTIgNDIgMjcuOTk5OCA0MkgyNy45MTNDMjcuMzk1OCA0MiAyNi45NjM5IDQxLjYwNTYgMjYuOTE3MSA0MS4wOTA1WiIgZmlsbD0iI2I0NTMwOSIvPgo8cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGNsaXAtcnVsZT0iZXZlbm9kZCIgZD0iTTExIDE1QzEwLjQ0NzcgMTUgMTAgMTUuNDQ3NyAxMCAxNlYzMUMxMCAzMS41NTIzIDEwLjQ0NzcgMzIgMTEgMzJIMzdDMzcuNTUyMyAzMiAzOCAzMS41NTIzIDM4IDMxVjE2QzM4IDE1LjQ0NzcgMzcuNTUyMyAxNSAzNyAxNUgxMVpNMTIgMTdWMzBIMTkuNUMxOS41IDI5LjQ0MjQgMTkuNzU5MSAyOC45NTcyIDIwLjAyNzYgMjguNjAwNkMyMC4zMDg2IDI4LjIyNzYgMjAuNjc5NiAyNy44ODgzIDIxLjA3OTQgMjcuNjAxNkMyMS42MjUyIDI3LjIxMDMgMjIuMjk4NiAyNi44NjUgMjMgMjYuNjY3OFYyNC41SDIyLjJDMjEuNTk3MyAyNC41IDIwLjc1MzUgMjQuODY0MiAxOS45NDMzIDI1LjM1NTJDMTkuNTYzOCAyNS41ODUyIDE5LjIzMzcgMjUuODE2NyAxOC45OTg0IDI1Ljk5MTFDMTguODgxMiAyNi4wNzc4IDE4Ljc4ODggMjYuMTQ5NSAxOC43MjcgMjYuMTk4NEMxOC42OTYxIDI2LjIyMjggMTguNjczIDI2LjI0MTUgMTguNjU4MiAyNi4yNTM1TDE4LjY0MjYgMjYuMjY2M0wxOC42Mzk5IDI2LjI2ODRDMTguNjM5OSAyNi4yNjg0IDE4LjY0MDIgMjYuMjY4MiAxOCAyNS41QzE3LjM1OTggMjQuNzMxOCAxNy4zNjAxIDI0LjczMTUgMTcuMzYwMSAyNC43MzE1TDE3LjM2MTQgMjQuNzMwNUwxNy4zNjM4IDI0LjcyODVMMTcuMzcxMyAyNC43MjIzTDE3LjM5NjYgMjQuNzAxNkMxNy40MTc5IDI0LjY4NDMgMTcuNDQ4IDI0LjY2IDE3LjQ4NjMgMjQuNjI5N0MxNy41NjI3IDI0LjU2OTMgMTcuNjcxOSAyNC40ODQ3IDE3LjgwNzkgMjQuMzgzOUMxOC4wNzg4IDI0LjE4MzMgMTguNDYxMiAyMy45MTQ4IDE4LjkwNjcgMjMuNjQ0OEMxOS43NDY1IDIzLjEzNTggMjEuMDAyNyAyMi41IDIyLjIgMjIuNUgyM1YyMC41SDIyLjVDMjEuOTMwOSAyMC41IDIxLjE5MDkgMjAuNjk5MiAyMC41MjkyIDIwLjkzOThDMjAuMjEyIDIxLjA1NTIgMTkuOTM3IDIxLjE3MDkgMTkuNzQyMSAyMS4yNTc2QzE5LjY0NDkgMjEuMzAwNyAxOS41Njg1IDIxLjMzNjMgMTkuNTE3NiAyMS4zNjA1QzE5LjQ5MjIgMjEuMzcyNSAxOS40NzMyIDIxLjM4MTcgMTkuNDYxMyAyMS4zODc1TDE5LjQ0ODcgMjEuMzkzN0wxOS40NDcgMjEuMzk0NUMxOS40NDcgMjEuMzk0NSAxOS40NDcyIDIxLjM5NDQgMTkgMjAuNUMxOC41NTI4IDE5LjYwNTYgMTguNTUzMSAxOS42MDU0IDE4LjU1MzEgMTkuNjA1NEwxOC41NTY0IDE5LjYwMzhMMTguNTYyOSAxOS42MDA2TDE4LjU4NDQgMTkuNTlDMTguNjAyNSAxOS41ODEyIDE4LjYyNzkgMTkuNTY4OSAxOC42NjAxIDE5LjU1MzZDMTguNzI0NSAxOS41MjMxIDE4LjgxNiAxOS40ODA1IDE4LjkyOTggMTkuNDI5OUMxOS4xNTY3IDE5LjMyOTEgMTkuNDc1NSAxOS4xOTQ4IDE5Ljg0NTggMTkuMDYwMkMyMC41NTkxIDE4LjgwMDggMjEuNTY5MSAxOC41IDIyLjUgMTguNUgyM1YxN0gxMlpNMjUgMjQuNUgyNi4xQzI2Ljg0ODkgMjQuNSAyNy42MTg2IDI0Ljg2NjMgMjguMjYzMSAyNS4zMTg2QzI4LjU3MzUgMjUuNTM2NCAyOC44Mjg1IDI1Ljc1NTYgMjkuMDA0OCAyNS45MTk3QzI5LjA5MjUgMjYuMDAxMiAyOS4xNTk0IDI2LjA2NzkgMjkuMjAyNiAyNi4xMTIyQzI5LjIyNDEgMjYuMTM0MyAyOS4yMzk3IDI2LjE1MDcgMjkuMjQ4OCAyNi4xNjA1TDI5LjI1NzQgMjYuMTY5N0MyOS4yNTc0IDI2LjE2OTcgMjkuMjU2NyAyNi4xNjkgMzAgMjUuNUMzMC43NDMzIDI0LjgzMSAzMC43NDI5IDI0LjgzMDYgMzAuNzQyOSAyNC44MzA2TDMwLjc0MTQgMjQuODI5TDMwLjczODkgMjQuODI2MkwzMC43MzE4IDI0LjgxODRMMzAuNzA5NyAyNC43OTQ2QzMwLjY5MTUgMjQuNzc1MSAzMC42NjYzIDI0Ljc0ODUgMzAuNjM0NiAyNC43MTZDMzAuNTcxMSAyNC42NTA5IDMwLjQ4MDkgMjQuNTYxMyAzMC4zNjcgMjQuNDU1M0MzMC4xNDAzIDI0LjI0NDQgMjkuODE0IDIzLjk2MzYgMjkuNDExOSAyMy42ODE0QzI4LjYzMTQgMjMuMTMzNyAyNy40NTExIDIyLjUgMjYuMSAyMi41SDI1VjIwLjVIMjUuNzVDMjYuNDQ0MyAyMC41IDI3LjExOTMgMjAuNzAxMSAyNy42NDMyIDIwLjkyMTZDMjcuOTAwMyAyMS4wMjk5IDI4LjEwOTIgMjEuMTM3OCAyOC4yNTA5IDIxLjIxNjlDMjguMzIxNSAyMS4yNTY0IDI4LjM3NDcgMjEuMjg4MiAyOC40MDggMjEuMzA4N0MyOC40MjQ3IDIxLjMxODkgMjguNDM2MyAyMS4zMjYzIDI4LjQ0MjcgMjEuMzMwNEwyOC40NDU3IDIxLjMzMjNDMjguNDQ1NyAyMS4zMzIzIDI4LjQ0NTMgMjEuMzMyMSAyOSAyMC41QzI5LjU1NDcgMTkuNjY3OSAyOS41NTQyIDE5LjY2NzYgMjkuNTU0MiAxOS42Njc2TDI5LjU1MjcgMTkuNjY2NkwyOS41NTAxIDE5LjY2NDlMMjkuNTQzMiAxOS42NjA0TDI5LjUyMjggMTkuNjQ3MkMyOS41MDYzIDE5LjYzNjYgMjkuNDg0IDE5LjYyMjUgMjkuNDU2MiAxOS42MDU0QzI5LjQwMDcgMTkuNTcxMiAyOS4zMjMgMTkuNTI0OSAyOS4yMjU2IDE5LjQ3MDZDMjkuMDMxNSAxOS4zNjIyIDI4Ljc1NTkgMTkuMjIwMSAyOC40MTkzIDE5LjA3ODRDMjcuNzU1NyAxOC43OTg5IDI2LjgwNTcgMTguNSAyNS43NSAxOC41SDI1VjE3SDM2VjMwSDI4LjVDMjguNSAyOS40Mzc5IDI4LjIzMjQgMjguOTQ1MiAyNy45NjQxIDI4LjU4NzVDMjcuNjgwMyAyOC4yMDkyIDI3LjMwNTQgMjcuODYwNiAyNi45MDA3IDI3LjU2NjNDMjYuMzY3NSAyNy4xNzg1IDI1LjY5ODkgMjYuODI1NyAyNSAyNi42MzkxVjI0LjVaTTI2LjQ5MjkgMzBDMjYuNDc5NyAyOS45NjcgMjYuNDQ1NyAyOS44OTY0IDI2LjM2NDEgMjkuNzg3NUMyNi4yMjU5IDI5LjYwMzMgMjYuMDA3MSAyOS4zODk0IDI1LjcyNDMgMjkuMTgzN0MyNS4xNDc4IDI4Ljc2NDUgMjQuNDkzNyAyOC41MTE3IDI0LjAzMiAyOC41MDA0QzIzLjQ4NzcgMjguNTQ2NCAyMi44MDUyIDI4LjgyNTIgMjIuMjQ0OSAyOS4yMjdDMjEuOTY1NyAyOS40MjcyIDIxLjc1NTYgMjkuNjMwNyAyMS42MjUyIDI5LjgwMzhDMjEuNTQ5NiAyOS45MDQzIDIxLjUxODQgMjkuOTY5NCAyMS41MDYzIDMwSDI2LjQ5MjlaIiBmaWxsPSIjYjQ1MzA5Ii8+Cjwvc3ZnPgo=", + "dataURL": "data:image/svg+xml;base64,PHN2ZwogIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIKICB3aWR0aD0iMjQiCiAgaGVpZ2h0PSIyNCIKICB2aWV3Qm94PSIwIDAgMjQgMjQiCiAgZmlsbD0ibm9uZSIKICBzdHJva2U9IiMwZjc2NmUiCiAgc3Ryb2tlLXdpZHRoPSIyIgogIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIKICBzdHJva2UtbGluZWpvaW49InJvdW5kIgo+CiAgPHJlY3Qgd2lkdGg9IjgiIGhlaWdodD0iNCIgeD0iOCIgeT0iMiIgcng9IjEiIHJ5PSIxIiAvPgogIDxwYXRoIGQ9Ik0xNiA0aDJhMiAyIDAgMCAxIDIgMnYxNGEyIDIgMCAwIDEtMiAySDZhMiAyIDAgMCAxLTItMlY2YTIgMiAwIDAgMSAyLTJoMiIgLz4KPC9zdmc+Cg==", "created": 1700000000000 }, "img_ni16": { "mimeType": "image/svg+xml", "id": "img_ni16", - "dataURL": "data:image/svg+xml;base64,PHN2ZwogIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIKICB3aWR0aD0iMjQiCiAgaGVpZ2h0PSIyNCIKICB2aWV3Qm94PSIwIDAgMjQgMjQiCiAgZmlsbD0ibm9uZSIKICBzdHJva2U9IiNiNDUzMDkiCiAgc3Ryb2tlLXdpZHRoPSIyIgogIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIKICBzdHJva2UtbGluZWpvaW49InJvdW5kIgo+CiAgPHBhdGggZD0iTTEyLjU4NiAyLjU4NkEyIDIgMCAwIDAgMTEuMTcyIDJINGEyIDIgMCAwIDAtMiAydjcuMTcyYTIgMiAwIDAgMCAuNTg2IDEuNDE0bDguNzA0IDguNzA0YTIuNDI2IDIuNDI2IDAgMCAwIDMuNDIgMGw2LjU4LTYuNThhMi40MjYgMi40MjYgMCAwIDAgMC0zLjQyeiIgLz4KICA8Y2lyY2xlIGN4PSI3LjUiIGN5PSI3LjUiIHI9Ii41IiBmaWxsPSIjYjQ1MzA5IiAvPgo8L3N2Zz4K", + "dataURL": "data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNDgiIGhlaWdodD0iNDgiIHZpZXdCb3g9IjAgMCA0OCA0OCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0yOSA5QzI5IDExLjc2MTQgMjYuNzYxNCAxNCAyNCAxNEMyMS4yMzg2IDE0IDE5IDExLjc2MTQgMTkgOUMxOSA2LjIzODU4IDIxLjIzODYgNCAyNCA0QzI2Ljc2MTQgNCAyOSA2LjIzODU4IDI5IDlaTTI3IDlDMjcgMTAuNjU2OSAyNS42NTY5IDEyIDI0IDEyQzIyLjM0MzEgMTIgMjEgMTAuNjU2OSAyMSA5QzIxIDcuMzQzMTUgMjIuMzQzMSA2IDI0IDZDMjUuNjU2OSA2IDI3IDcuMzQzMTUgMjcgOVoiIGZpbGw9IiNiNDUzMDkiLz4KPHBhdGggZD0iTTE2Ljk5OTggNDFWMzRIMTguOTk5OFY0MUMxOC45OTk4IDQxLjU1MjMgMTkuNDQ3NSA0MiAxOS45OTk4IDQySDIwLjA4NjVDMjAuNjAzNyA0MiAyMS4wMzU2IDQxLjYwNTYgMjEuMDgyNCA0MS4wOTA1TDIxLjcyNyAzNEgyMy43MzUzTDIzLjA3NDIgNDEuMjcxNkMyMy4wNjkgNDEuMzI4OCAyMy4wNjIyIDQxLjM4NTYgMjMuMDUzOSA0MS40NDE3QzIzLjAzNTcgNDEuNTY0NyAyMy4wMTAxIDQxLjY4NTEgMjIuOTc3NiA0MS44MDI1QzIyLjYyNDIgNDMuMDc5OCAyMS40NTQ5IDQ0IDIwLjA4NjUgNDRIMTkuOTk5OEMxOC4zNDI5IDQ0IDE2Ljk5OTggNDIuNjU2OSAxNi45OTk4IDQxWiIgZmlsbD0iI2I0NTMwOSIvPgo8cGF0aCBkPSJNMjYuOTE3MSA0MS4wOTA1TDI2LjI3MjUgMzRIMjQuMjY0MkwyNC45MjUzIDQxLjI3MTZDMjQuOTMwNSA0MS4zMjg4IDI0LjkzNzMgNDEuMzg1NiAyNC45NDU2IDQxLjQ0MTdDMjQuOTYzOCA0MS41NjQ3IDI0Ljk4OTQgNDEuNjg1MSAyNS4wMjE5IDQxLjgwMjVDMjUuMzc1MyA0My4wNzk4IDI2LjU0NDYgNDQgMjcuOTEzIDQ0SDI3Ljk5OThDMjkuNjU2NiA0NCAzMC45OTk4IDQyLjY1NjkgMzAuOTk5OCA0MVYzNEgyOC45OTk4VjQxQzI4Ljk5OTggNDEuNTUyMyAyOC41NTIgNDIgMjcuOTk5OCA0MkgyNy45MTNDMjcuMzk1OCA0MiAyNi45NjM5IDQxLjYwNTYgMjYuOTE3MSA0MS4wOTA1WiIgZmlsbD0iI2I0NTMwOSIvPgo8cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGNsaXAtcnVsZT0iZXZlbm9kZCIgZD0iTTExIDE1QzEwLjQ0NzcgMTUgMTAgMTUuNDQ3NyAxMCAxNlYzMUMxMCAzMS41NTIzIDEwLjQ0NzcgMzIgMTEgMzJIMzdDMzcuNTUyMyAzMiAzOCAzMS41NTIzIDM4IDMxVjE2QzM4IDE1LjQ0NzcgMzcuNTUyMyAxNSAzNyAxNUgxMVpNMTIgMTdWMzBIMTkuNUMxOS41IDI5LjQ0MjQgMTkuNzU5MSAyOC45NTcyIDIwLjAyNzYgMjguNjAwNkMyMC4zMDg2IDI4LjIyNzYgMjAuNjc5NiAyNy44ODgzIDIxLjA3OTQgMjcuNjAxNkMyMS42MjUyIDI3LjIxMDMgMjIuMjk4NiAyNi44NjUgMjMgMjYuNjY3OFYyNC41SDIyLjJDMjEuNTk3MyAyNC41IDIwLjc1MzUgMjQuODY0MiAxOS45NDMzIDI1LjM1NTJDMTkuNTYzOCAyNS41ODUyIDE5LjIzMzcgMjUuODE2NyAxOC45OTg0IDI1Ljk5MTFDMTguODgxMiAyNi4wNzc4IDE4Ljc4ODggMjYuMTQ5NSAxOC43MjcgMjYuMTk4NEMxOC42OTYxIDI2LjIyMjggMTguNjczIDI2LjI0MTUgMTguNjU4MiAyNi4yNTM1TDE4LjY0MjYgMjYuMjY2M0wxOC42Mzk5IDI2LjI2ODRDMTguNjM5OSAyNi4yNjg0IDE4LjY0MDIgMjYuMjY4MiAxOCAyNS41QzE3LjM1OTggMjQuNzMxOCAxNy4zNjAxIDI0LjczMTUgMTcuMzYwMSAyNC43MzE1TDE3LjM2MTQgMjQuNzMwNUwxNy4zNjM4IDI0LjcyODVMMTcuMzcxMyAyNC43MjIzTDE3LjM5NjYgMjQuNzAxNkMxNy40MTc5IDI0LjY4NDMgMTcuNDQ4IDI0LjY2IDE3LjQ4NjMgMjQuNjI5N0MxNy41NjI3IDI0LjU2OTMgMTcuNjcxOSAyNC40ODQ3IDE3LjgwNzkgMjQuMzgzOUMxOC4wNzg4IDI0LjE4MzMgMTguNDYxMiAyMy45MTQ4IDE4LjkwNjcgMjMuNjQ0OEMxOS43NDY1IDIzLjEzNTggMjEuMDAyNyAyMi41IDIyLjIgMjIuNUgyM1YyMC41SDIyLjVDMjEuOTMwOSAyMC41IDIxLjE5MDkgMjAuNjk5MiAyMC41MjkyIDIwLjkzOThDMjAuMjEyIDIxLjA1NTIgMTkuOTM3IDIxLjE3MDkgMTkuNzQyMSAyMS4yNTc2QzE5LjY0NDkgMjEuMzAwNyAxOS41Njg1IDIxLjMzNjMgMTkuNTE3NiAyMS4zNjA1QzE5LjQ5MjIgMjEuMzcyNSAxOS40NzMyIDIxLjM4MTcgMTkuNDYxMyAyMS4zODc1TDE5LjQ0ODcgMjEuMzkzN0wxOS40NDcgMjEuMzk0NUMxOS40NDcgMjEuMzk0NSAxOS40NDcyIDIxLjM5NDQgMTkgMjAuNUMxOC41NTI4IDE5LjYwNTYgMTguNTUzMSAxOS42MDU0IDE4LjU1MzEgMTkuNjA1NEwxOC41NTY0IDE5LjYwMzhMMTguNTYyOSAxOS42MDA2TDE4LjU4NDQgMTkuNTlDMTguNjAyNSAxOS41ODEyIDE4LjYyNzkgMTkuNTY4OSAxOC42NjAxIDE5LjU1MzZDMTguNzI0NSAxOS41MjMxIDE4LjgxNiAxOS40ODA1IDE4LjkyOTggMTkuNDI5OUMxOS4xNTY3IDE5LjMyOTEgMTkuNDc1NSAxOS4xOTQ4IDE5Ljg0NTggMTkuMDYwMkMyMC41NTkxIDE4LjgwMDggMjEuNTY5MSAxOC41IDIyLjUgMTguNUgyM1YxN0gxMlpNMjUgMjQuNUgyNi4xQzI2Ljg0ODkgMjQuNSAyNy42MTg2IDI0Ljg2NjMgMjguMjYzMSAyNS4zMTg2QzI4LjU3MzUgMjUuNTM2NCAyOC44Mjg1IDI1Ljc1NTYgMjkuMDA0OCAyNS45MTk3QzI5LjA5MjUgMjYuMDAxMiAyOS4xNTk0IDI2LjA2NzkgMjkuMjAyNiAyNi4xMTIyQzI5LjIyNDEgMjYuMTM0MyAyOS4yMzk3IDI2LjE1MDcgMjkuMjQ4OCAyNi4xNjA1TDI5LjI1NzQgMjYuMTY5N0MyOS4yNTc0IDI2LjE2OTcgMjkuMjU2NyAyNi4xNjkgMzAgMjUuNUMzMC43NDMzIDI0LjgzMSAzMC43NDI5IDI0LjgzMDYgMzAuNzQyOSAyNC44MzA2TDMwLjc0MTQgMjQuODI5TDMwLjczODkgMjQuODI2MkwzMC43MzE4IDI0LjgxODRMMzAuNzA5NyAyNC43OTQ2QzMwLjY5MTUgMjQuNzc1MSAzMC42NjYzIDI0Ljc0ODUgMzAuNjM0NiAyNC43MTZDMzAuNTcxMSAyNC42NTA5IDMwLjQ4MDkgMjQuNTYxMyAzMC4zNjcgMjQuNDU1M0MzMC4xNDAzIDI0LjI0NDQgMjkuODE0IDIzLjk2MzYgMjkuNDExOSAyMy42ODE0QzI4LjYzMTQgMjMuMTMzNyAyNy40NTExIDIyLjUgMjYuMSAyMi41SDI1VjIwLjVIMjUuNzVDMjYuNDQ0MyAyMC41IDI3LjExOTMgMjAuNzAxMSAyNy42NDMyIDIwLjkyMTZDMjcuOTAwMyAyMS4wMjk5IDI4LjEwOTIgMjEuMTM3OCAyOC4yNTA5IDIxLjIxNjlDMjguMzIxNSAyMS4yNTY0IDI4LjM3NDcgMjEuMjg4MiAyOC40MDggMjEuMzA4N0MyOC40MjQ3IDIxLjMxODkgMjguNDM2MyAyMS4zMjYzIDI4LjQ0MjcgMjEuMzMwNEwyOC40NDU3IDIxLjMzMjNDMjguNDQ1NyAyMS4zMzIzIDI4LjQ0NTMgMjEuMzMyMSAyOSAyMC41QzI5LjU1NDcgMTkuNjY3OSAyOS41NTQyIDE5LjY2NzYgMjkuNTU0MiAxOS42Njc2TDI5LjU1MjcgMTkuNjY2NkwyOS41NTAxIDE5LjY2NDlMMjkuNTQzMiAxOS42NjA0TDI5LjUyMjggMTkuNjQ3MkMyOS41MDYzIDE5LjYzNjYgMjkuNDg0IDE5LjYyMjUgMjkuNDU2MiAxOS42MDU0QzI5LjQwMDcgMTkuNTcxMiAyOS4zMjMgMTkuNTI0OSAyOS4yMjU2IDE5LjQ3MDZDMjkuMDMxNSAxOS4zNjIyIDI4Ljc1NTkgMTkuMjIwMSAyOC40MTkzIDE5LjA3ODRDMjcuNzU1NyAxOC43OTg5IDI2LjgwNTcgMTguNSAyNS43NSAxOC41SDI1VjE3SDM2VjMwSDI4LjVDMjguNSAyOS40Mzc5IDI4LjIzMjQgMjguOTQ1MiAyNy45NjQxIDI4LjU4NzVDMjcuNjgwMyAyOC4yMDkyIDI3LjMwNTQgMjcuODYwNiAyNi45MDA3IDI3LjU2NjNDMjYuMzY3NSAyNy4xNzg1IDI1LjY5ODkgMjYuODI1NyAyNSAyNi42MzkxVjI0LjVaTTI2LjQ5MjkgMzBDMjYuNDc5NyAyOS45NjcgMjYuNDQ1NyAyOS44OTY0IDI2LjM2NDEgMjkuNzg3NUMyNi4yMjU5IDI5LjYwMzMgMjYuMDA3MSAyOS4zODk0IDI1LjcyNDMgMjkuMTgzN0MyNS4xNDc4IDI4Ljc2NDUgMjQuNDkzNyAyOC41MTE3IDI0LjAzMiAyOC41MDA0QzIzLjQ4NzcgMjguNTQ2NCAyMi44MDUyIDI4LjgyNTIgMjIuMjQ0OSAyOS4yMjdDMjEuOTY1NyAyOS40MjcyIDIxLjc1NTYgMjkuNjMwNyAyMS42MjUyIDI5LjgwMzhDMjEuNTQ5NiAyOS45MDQzIDIxLjUxODQgMjkuOTY5NCAyMS41MDYzIDMwSDI2LjQ5MjlaIiBmaWxsPSIjYjQ1MzA5Ii8+Cjwvc3ZnPgo=", + "created": 1700000000000 + }, + "img_ni19": { + "mimeType": "image/svg+xml", + "id": "img_ni19", + "dataURL": "data:image/svg+xml;base64,PHN2ZwogIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIKICB3aWR0aD0iMjQiCiAgaGVpZ2h0PSIyNCIKICB2aWV3Qm94PSIwIDAgMjQgMjQiCiAgZmlsbD0ibm9uZSIKICBzdHJva2U9IiMwNTk2NjkiCiAgc3Ryb2tlLXdpZHRoPSIyIgogIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIKICBzdHJva2UtbGluZWpvaW49InJvdW5kIgo+CiAgPHBhdGggZD0iTTEyLjU4NiAyLjU4NkEyIDIgMCAwIDAgMTEuMTcyIDJINGEyIDIgMCAwIDAtMiAydjcuMTcyYTIgMiAwIDAgMCAuNTg2IDEuNDE0bDguNzA0IDguNzA0YTIuNDI2IDIuNDI2IDAgMCAwIDMuNDIgMGw2LjU4LTYuNThhMi40MjYgMi40MjYgMCAwIDAgMC0zLjQyeiIgLz4KICA8Y2lyY2xlIGN4PSI3LjUiIGN5PSI3LjUiIHI9Ii41IiBmaWxsPSIjMDU5NjY5IiAvPgo8L3N2Zz4K", + "created": 1700000000000 + }, + "img_ni22": { + "mimeType": "image/svg+xml", + "id": "img_ni22", + "dataURL": "data:image/svg+xml;base64,PHN2ZwogIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIKICB3aWR0aD0iMjQiCiAgaGVpZ2h0PSIyNCIKICB2aWV3Qm94PSIwIDAgMjQgMjQiCiAgZmlsbD0ibm9uZSIKICBzdHJva2U9IiMwNTk2NjkiCiAgc3Ryb2tlLXdpZHRoPSIyIgogIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIKICBzdHJva2UtbGluZWpvaW49InJvdW5kIgo+CiAgPHBhdGggZD0iTTEyLjU4NiAyLjU4NkEyIDIgMCAwIDAgMTEuMTcyIDJINGEyIDIgMCAwIDAtMiAydjcuMTcyYTIgMiAwIDAgMCAuNTg2IDEuNDE0bDguNzA0IDguNzA0YTIuNDI2IDIuNDI2IDAgMCAwIDMuNDIgMGw2LjU4LTYuNThhMi40MjYgMi40MjYgMCAwIDAgMC0zLjQyeiIgLz4KICA8Y2lyY2xlIGN4PSI3LjUiIGN5PSI3LjUiIHI9Ii41IiBmaWxsPSIjMDU5NjY5IiAvPgo8L3N2Zz4K", "created": 1700000000000 }, - "img_ni21": { + "img_ni31": { "mimeType": "image/svg+xml", - "id": "img_ni21", - "dataURL": "data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNDgiIGhlaWdodD0iNDgiIHZpZXdCb3g9IjAgMCA0OCA0OCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0yMyA2LjAwMDEzQzIzIDYuMDAwMDQgMjMgNiAyNCA2SDI0LjE3NjFDMjQuMjUzMyA2IDI0LjMyMzMgNiAyNC4zODY4IDZDMjUgNi4wMDAwMSAyNSA2LjAwMDA1IDI1IDYuMDAwMTNWMjAuNUMyNSAyMS44OTc3IDI1LjU2NDEgMjIuNDQyMSAyNi4wMDM5IDIyLjY5ODdDMjYuMDUzIDIyLjcyNzMgMjYuMTAyNCAyMi43NTMzIDI2LjE1MTYgMjIuNzc3QzI2LjE1MDYgMjIuNjU2OCAyNi4xNDkzIDIyLjUzMTYgMjYuMTQ3OSAyMi40MDE5TDI2LjE0NzkgMjIuNDAwM0MyNi4xMTAxIDE4Ljg3MTYgMjYuMDM2NSAxMS45OTk3IDMxLjQ3NTMgMTEuOTk5N0MzOC45MjU5IDExLjk5OTcgNDQuMjQ3OCAzOC4wMDYyIDQxLjA1NDcgNDAuNjU5OUMzNy44NjE1IDQzLjMxMzYgMzEuNDc1MyA0MS43MjE0IDI4LjI4MjIgMzguNTM2OUMyNS43MDQyIDM1Ljk2NTkgMjUuOTI3MiAyOS45NTgzIDI2LjA4NzMgMjUuNjQ1N0wyNi4wODc0IDI1LjY0NDNDMjYuMDk3MSAyNS4zODE5IDI2LjEwNjcgMjUuMTI1OCAyNi4xMTUzIDI0Ljg3NzFDMjUuNzkgMjQuNzk2MiAyNS4zOTU5IDI0LjY1OTUgMjQuOTk2MiAyNC40MjYzQzI0LjYzOTggMjQuMjE4NCAyNC4yOTc1IDIzLjk0NDIgMjQgMjMuNTkxOUMyMy43MDI2IDIzLjk0NDIgMjMuMzYwMyAyNC4yMTg0IDIzLjAwMzkgMjQuNDI2M0MyMi42MDQxIDI0LjY1OTUgMjIuMjEwMSAyNC43OTYyIDIxLjg4NDggMjQuODc3MUMyMS44OTM0IDI1LjEyNjEgMjEuOTAyOSAyNS4zODI2IDIxLjkxMjcgMjUuNjQ1M0MyMi4wNzI4IDI5Ljk1NzkgMjIuMjk1OSAzNS45NjYyIDE5LjcxNzkgMzguNTM3MkMxNi41MjQ3IDQxLjcyMTcgMTAuMTM4NSA0My4zMTM5IDYuOTQ1MzYgNDAuNjYwMkMzLjc1MjIyIDM4LjAwNjUgOS4wNzQxMyAxMiAxNi41MjQ3IDEyQzIxLjk2MzYgMTIgMjEuODkgMTguODcxNyAyMS44NTIyIDIyLjQwMDNDMjEuODUyIDIyLjQxNjYgMjEuODUxOCAyMi40MzI4IDIxLjg1MTYgMjIuNDQ4OUMyMS44NTA0IDIyLjU2MTkgMjEuODQ5MyAyMi42NzE0IDIxLjg0ODQgMjIuNzc3QzIxLjg5NzcgMjIuNzUzNCAyMS45NDcxIDIyLjcyNzQgMjEuOTk2MiAyMi42OTg3QzIyLjQzNiAyMi40NDIxIDIzIDIxLjg5NzcgMjMgMjAuNVY2LjAwMDEzWk0zMS40NzUzIDEzLjk5OTdDMzAuNTIxMiAxMy45OTk3IDI5Ljk4NDMgMTQuMzAwMiAyOS42MDg2IDE0LjY4NjlDMjkuMTc1MiAxNS4xMzMxIDI4LjgxMzIgMTUuODUwNyAyOC41NTkgMTYuODY0NkMyOC4xMTQxIDE4LjYzOTUgMjguMTMzIDIwLjY4MTkgMjguMTQ4MyAyMi4zMjkzQzI4LjE1MDkgMjIuNjE0MiAyOC4xNTM0IDIyLjg4NzQgMjguMTUzNCAyMy4xNDUzQzI4LjE1MzQgMjMuOTA1MyAyOC4xMTk2IDI0LjgxNTMgMjguMDg0NSAyNS43NjIxQzI4LjA3MDcgMjYuMTM0OSAyOC4wNTY2IDI2LjUxMzMgMjguMDQ0MyAyNi44OTA1QzI3Ljk5OTYgMjguMjY1NyAyNy45NzQxIDI5LjcwNTUgMjguMDQwNSAzMS4wOTgyQzI4LjEwNzIgMzIuNDk4NSAyOC4yNjQyIDMzLjc4MzUgMjguNTU3MyAzNC44NTk2QzI4Ljg1MzggMzUuOTQ4MyAyOS4yNTA5IDM2LjY3ODQgMjkuNjk0NCAzNy4xMjA4QzMwLjk3MjYgMzguMzk1NCAzMi45OTA4IDM5LjQyNTEgMzUuMDQ5MiAzOS44MjQzQzM3LjA4NDIgNDAuMjE4OSAzOC43MjI0IDM5LjkyNjkgMzkuNjgxOCAzOS4xOTY5QzM5LjY4NjggMzkuMTg1NyAzOS42OTIzIDM5LjE3MjYgMzkuNjk4NCAzOS4xNTc0QzM5Ljc1NzYgMzkuMDA5NSAzOS44Mjk0IDM4Ljc1NTQgMzkuODg3OCAzOC4zNjgzQzQwLjAwNDcgMzcuNTkzMyA0MC4wMzUgMzYuNTEyMiAzOS45NTYyIDM1LjE4MDNDMzkuNzk5NSAzMi41MzA1IDM5LjIyODYgMjkuMTY4OSAzOC4zMjY4IDI1Ljg2MDZDMzcuNDIxNiAyMi41Mzk2IDM2LjIxNzMgMTkuMzk5OCAzNC44NTIxIDE3LjEzODNDMzQuMTY4OCAxNi4wMDYyIDMzLjQ5NTEgMTUuMTc4NiAzMi44NzAzIDE0LjY1MzVDMzIuMjUxOCAxNC4xMzM3IDMxLjc5MzUgMTMuOTk5NyAzMS40NzUzIDEzLjk5OTdaTTE2LjUyNDcgMTRDMTcuNDc4OCAxNCAxOC4wMTU4IDE0LjMwMDUgMTguMzkxNCAxNC42ODcyQzE4LjgyNDggMTUuMTMzNCAxOS4xODY4IDE1Ljg1MSAxOS40NDEgMTYuODY0OUMxOS44ODU5IDE4LjYzOTkgMTkuODY3IDIwLjY4MjIgMTkuODUxOCAyMi4zMjk2QzE5Ljg0OTEgMjIuNjE0NiAxOS44NDY2IDIyLjg4NzcgMTkuODQ2NiAyMy4xNDU2QzE5Ljg0NjYgMjMuOTA1NiAxOS44ODA0IDI0LjgxNTYgMTkuOTE1NSAyNS43NjI0QzE5LjkyOTQgMjYuMTM1IDE5Ljk0MzQgMjYuNTEzOCAxOS45NTU3IDI2Ljg5MDhDMjAuMDAwNSAyOC4yNjYgMjAuMDI1OSAyOS43MDU4IDE5Ljk1OTYgMzEuMDk4NUMxOS44OTI5IDMyLjQ5ODggMTkuNzM1OSAzMy43ODM4IDE5LjQ0MjcgMzQuODU5OUMxOS4xNDYyIDM1Ljk0ODYgMTguNzQ5MiAzNi42Nzg3IDE4LjMwNTYgMzcuMTIxMUMxNy4wMjc1IDM4LjM5NTcgMTUuMDA5MyAzOS40MjU0IDEyLjk1MDkgMzkuODI0NkMxMC45MTU5IDQwLjIxOTIgOS4yNzc2OCAzOS45MjcyIDguMzE4MjMgMzkuMTk3MkM4LjMxMzI2IDM5LjE4NiA4LjMwNzcgMzkuMTcyOSA4LjMwMTYyIDM5LjE1NzdDOC4yNDI0MSAzOS4wMDk4IDguMTcwNjEgMzguNzU1NyA4LjExMjI0IDM4LjM2ODZDNy45OTUzOSAzNy41OTM2IDcuOTY1IDM2LjUxMjUgOC4wNDM4IDM1LjE4MDZDOC4yMDA1NiAzMi41MzA4IDguNzcxNDcgMjkuMTY5MiA5LjY3MzI0IDI1Ljg2MDlDMTAuNTc4NSAyMi41Mzk5IDExLjc4MjcgMTkuNDAwMSAxMy4xNDc5IDE3LjEzODZDMTMuODMxMyAxNi4wMDY1IDE0LjUwNDkgMTUuMTc4OSAxNS4xMjk4IDE0LjY1MzhDMTUuNzQ4MiAxNC4xMzQgMTYuMjA2NSAxNCAxNi41MjQ3IDE0WiIgZmlsbD0iI2I0NTMwOSIvPgo8L3N2Zz4K", + "id": "img_ni31", + "dataURL": "data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNDgiIGhlaWdodD0iNDgiIHZpZXdCb3g9IjAgMCA0OCA0OCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0yMyA2LjAwMDEzQzIzIDYuMDAwMDQgMjMgNiAyNCA2SDI0LjE3NjFDMjQuMjUzMyA2IDI0LjMyMzMgNiAyNC4zODY4IDZDMjUgNi4wMDAwMSAyNSA2LjAwMDA1IDI1IDYuMDAwMTNWMjAuNUMyNSAyMS44OTc3IDI1LjU2NDEgMjIuNDQyMSAyNi4wMDM5IDIyLjY5ODdDMjYuMDUzIDIyLjcyNzMgMjYuMTAyNCAyMi43NTMzIDI2LjE1MTYgMjIuNzc3QzI2LjE1MDYgMjIuNjU2OCAyNi4xNDkzIDIyLjUzMTYgMjYuMTQ3OSAyMi40MDE5TDI2LjE0NzkgMjIuNDAwM0MyNi4xMTAxIDE4Ljg3MTYgMjYuMDM2NSAxMS45OTk3IDMxLjQ3NTMgMTEuOTk5N0MzOC45MjU5IDExLjk5OTcgNDQuMjQ3OCAzOC4wMDYyIDQxLjA1NDcgNDAuNjU5OUMzNy44NjE1IDQzLjMxMzYgMzEuNDc1MyA0MS43MjE0IDI4LjI4MjIgMzguNTM2OUMyNS43MDQyIDM1Ljk2NTkgMjUuOTI3MiAyOS45NTgzIDI2LjA4NzMgMjUuNjQ1N0wyNi4wODc0IDI1LjY0NDNDMjYuMDk3MSAyNS4zODE5IDI2LjEwNjcgMjUuMTI1OCAyNi4xMTUzIDI0Ljg3NzFDMjUuNzkgMjQuNzk2MiAyNS4zOTU5IDI0LjY1OTUgMjQuOTk2MiAyNC40MjYzQzI0LjYzOTggMjQuMjE4NCAyNC4yOTc1IDIzLjk0NDIgMjQgMjMuNTkxOUMyMy43MDI2IDIzLjk0NDIgMjMuMzYwMyAyNC4yMTg0IDIzLjAwMzkgMjQuNDI2M0MyMi42MDQxIDI0LjY1OTUgMjIuMjEwMSAyNC43OTYyIDIxLjg4NDggMjQuODc3MUMyMS44OTM0IDI1LjEyNjEgMjEuOTAyOSAyNS4zODI2IDIxLjkxMjcgMjUuNjQ1M0MyMi4wNzI4IDI5Ljk1NzkgMjIuMjk1OSAzNS45NjYyIDE5LjcxNzkgMzguNTM3MkMxNi41MjQ3IDQxLjcyMTcgMTAuMTM4NSA0My4zMTM5IDYuOTQ1MzYgNDAuNjYwMkMzLjc1MjIyIDM4LjAwNjUgOS4wNzQxMyAxMiAxNi41MjQ3IDEyQzIxLjk2MzYgMTIgMjEuODkgMTguODcxNyAyMS44NTIyIDIyLjQwMDNDMjEuODUyIDIyLjQxNjYgMjEuODUxOCAyMi40MzI4IDIxLjg1MTYgMjIuNDQ4OUMyMS44NTA0IDIyLjU2MTkgMjEuODQ5MyAyMi42NzE0IDIxLjg0ODQgMjIuNzc3QzIxLjg5NzcgMjIuNzUzNCAyMS45NDcxIDIyLjcyNzQgMjEuOTk2MiAyMi42OTg3QzIyLjQzNiAyMi40NDIxIDIzIDIxLjg5NzcgMjMgMjAuNVY2LjAwMDEzWk0zMS40NzUzIDEzLjk5OTdDMzAuNTIxMiAxMy45OTk3IDI5Ljk4NDMgMTQuMzAwMiAyOS42MDg2IDE0LjY4NjlDMjkuMTc1MiAxNS4xMzMxIDI4LjgxMzIgMTUuODUwNyAyOC41NTkgMTYuODY0NkMyOC4xMTQxIDE4LjYzOTUgMjguMTMzIDIwLjY4MTkgMjguMTQ4MyAyMi4zMjkzQzI4LjE1MDkgMjIuNjE0MiAyOC4xNTM0IDIyLjg4NzQgMjguMTUzNCAyMy4xNDUzQzI4LjE1MzQgMjMuOTA1MyAyOC4xMTk2IDI0LjgxNTMgMjguMDg0NSAyNS43NjIxQzI4LjA3MDcgMjYuMTM0OSAyOC4wNTY2IDI2LjUxMzMgMjguMDQ0MyAyNi44OTA1QzI3Ljk5OTYgMjguMjY1NyAyNy45NzQxIDI5LjcwNTUgMjguMDQwNSAzMS4wOTgyQzI4LjEwNzIgMzIuNDk4NSAyOC4yNjQyIDMzLjc4MzUgMjguNTU3MyAzNC44NTk2QzI4Ljg1MzggMzUuOTQ4MyAyOS4yNTA5IDM2LjY3ODQgMjkuNjk0NCAzNy4xMjA4QzMwLjk3MjYgMzguMzk1NCAzMi45OTA4IDM5LjQyNTEgMzUuMDQ5MiAzOS44MjQzQzM3LjA4NDIgNDAuMjE4OSAzOC43MjI0IDM5LjkyNjkgMzkuNjgxOCAzOS4xOTY5QzM5LjY4NjggMzkuMTg1NyAzOS42OTIzIDM5LjE3MjYgMzkuNjk4NCAzOS4xNTc0QzM5Ljc1NzYgMzkuMDA5NSAzOS44Mjk0IDM4Ljc1NTQgMzkuODg3OCAzOC4zNjgzQzQwLjAwNDcgMzcuNTkzMyA0MC4wMzUgMzYuNTEyMiAzOS45NTYyIDM1LjE4MDNDMzkuNzk5NSAzMi41MzA1IDM5LjIyODYgMjkuMTY4OSAzOC4zMjY4IDI1Ljg2MDZDMzcuNDIxNiAyMi41Mzk2IDM2LjIxNzMgMTkuMzk5OCAzNC44NTIxIDE3LjEzODNDMzQuMTY4OCAxNi4wMDYyIDMzLjQ5NTEgMTUuMTc4NiAzMi44NzAzIDE0LjY1MzVDMzIuMjUxOCAxNC4xMzM3IDMxLjc5MzUgMTMuOTk5NyAzMS40NzUzIDEzLjk5OTdaTTE2LjUyNDcgMTRDMTcuNDc4OCAxNCAxOC4wMTU4IDE0LjMwMDUgMTguMzkxNCAxNC42ODcyQzE4LjgyNDggMTUuMTMzNCAxOS4xODY4IDE1Ljg1MSAxOS40NDEgMTYuODY0OUMxOS44ODU5IDE4LjYzOTkgMTkuODY3IDIwLjY4MjIgMTkuODUxOCAyMi4zMjk2QzE5Ljg0OTEgMjIuNjE0NiAxOS44NDY2IDIyLjg4NzcgMTkuODQ2NiAyMy4xNDU2QzE5Ljg0NjYgMjMuOTA1NiAxOS44ODA0IDI0LjgxNTYgMTkuOTE1NSAyNS43NjI0QzE5LjkyOTQgMjYuMTM1IDE5Ljk0MzQgMjYuNTEzOCAxOS45NTU3IDI2Ljg5MDhDMjAuMDAwNSAyOC4yNjYgMjAuMDI1OSAyOS43MDU4IDE5Ljk1OTYgMzEuMDk4NUMxOS44OTI5IDMyLjQ5ODggMTkuNzM1OSAzMy43ODM4IDE5LjQ0MjcgMzQuODU5OUMxOS4xNDYyIDM1Ljk0ODYgMTguNzQ5MiAzNi42Nzg3IDE4LjMwNTYgMzcuMTIxMUMxNy4wMjc1IDM4LjM5NTcgMTUuMDA5MyAzOS40MjU0IDEyLjk1MDkgMzkuODI0NkMxMC45MTU5IDQwLjIxOTIgOS4yNzc2OCAzOS45MjcyIDguMzE4MjMgMzkuMTk3MkM4LjMxMzI2IDM5LjE4NiA4LjMwNzcgMzkuMTcyOSA4LjMwMTYyIDM5LjE1NzdDOC4yNDI0MSAzOS4wMDk4IDguMTcwNjEgMzguNzU1NyA4LjExMjI0IDM4LjM2ODZDNy45OTUzOSAzNy41OTM2IDcuOTY1IDM2LjUxMjUgOC4wNDM4IDM1LjE4MDZDOC4yMDA1NiAzMi41MzA4IDguNzcxNDcgMjkuMTY5MiA5LjY3MzI0IDI1Ljg2MDlDMTAuNTc4NSAyMi41Mzk5IDExLjc4MjcgMTkuNDAwMSAxMy4xNDc5IDE3LjEzODZDMTMuODMxMyAxNi4wMDY1IDE0LjUwNDkgMTUuMTc4OSAxNS4xMjk4IDE0LjY1MzhDMTUuNzQ4MiAxNC4xMzQgMTYuMjA2NSAxNCAxNi41MjQ3IDE0WiIgZmlsbD0iIzFkNGVkOCIvPgo8L3N2Zz4K", "created": 1700000000000 } } diff --git a/knowledge/drafts/two-planes.svg b/knowledge/drafts/two-planes.svg index 4a9ea56..1f0e60e 100644 --- a/knowledge/drafts/two-planes.svg +++ b/knowledge/drafts/two-planes.svg @@ -1,2 +1,2 @@ -Patient Contextthis patient · this examFoundation Contextshared, curated knowledgeCT chestthis patient · 2026-03-04pulmonary nodulepresent · 8 mm · newfound onCT Chest W contrast IVexam typepulmonary nodulefinding/diagnosis definitionthoraxanatomic locationlungupper lobe of right lungcontainscontainscoversoccurs atis ais alocated atevery fact about this patient is attached to the shared knowledge of what such a thing is \ No newline at end of file +Patient Contextthis patient · this examFoundation Contextshared, curated knowledgeCT chest without contrastthis patient · 2026-03-04pulmonary nodulepresent · 8 mm · newpleural effusionabsentfound onfound onCT Chest WO contrastexam type · 29252-4pulmonary nodulefinding/diagnosis definitionpleural effusionfinding/diagnosis definitionCT Chestexam family · preferredCTmodalitymember of familymodalityseen onthoraxanatomic locationlungupper lobe of right lungpleural spacecontainscontainscontainscoversoccurs atoccurs atis ais alocated atis alocated atfinding/diagnosis definitionanatomic locationexam typemodalityevery fact about this patient is attached to the shared knowledge of what such a thing is \ No newline at end of file diff --git a/tools/diagrams/README.md b/tools/diagrams/README.md index 231eef4..827c375 100644 --- a/tools/diagrams/README.md +++ b/tools/diagrams/README.md @@ -11,6 +11,13 @@ Per diagram, one of two things is the source: Hand-edited diagrams (builders retired): none yet. +`build_pillars.py` takes a required `--seam a|b|c` choosing how the Data +Structures and Foundation Context bands meet (named attachments, dovetail, +shared membrane) and writes `knowledge/drafts/pillars-.excalidraw`. The +v3 seam it replaced -- an overlap crossed by twelve alternating threads -- was +rejected, so `knowledge/drafts/pillars.excalidraw` is stale until one of the +three is chosen and made the default. + ## Rendering From the excalidraw-diagram skill's references directory (it holds the Playwright environment): @@ -52,6 +59,15 @@ Viewing the whole PNG hides label-on-edge collisions. `render_template.html` can ## Icons +Project logos and square marks are available in `knowledge/assets/brand/`. +Use the original SVGs with `excalib.image()` and omit its `color` argument. +The [brand notes](../../docs/brand/README.md) give paths, proportions, and +embedding examples. Use these marks to identify the projects in a diagram. + `excalib.image(id_, x, y, w, h, svg_path, color=None)` embeds an SVG file as an Excalidraw `image` element: it reads the file, optionally replaces every `currentColor` in the SVG source with a hex string (so one licensed icon file can be recolored per diagram without editing the file on disk), base64-encodes it into the document's top-level `files` map, and adds an element referencing that `fileId`. `render_template.html` already passed `files` through to `exportToSvg` before this was added, so no renderer change was needed to make icons show up in the rendered PNG/SVG -- this was checked, not assumed. Icon source files live in `tools/diagrams/icons/`, kept as unmodified originals (recoloring happens at build time, not by editing the files). `icons/LICENSES.md` records where each one came from and its license. When a diagram needs an icon that isn't already there, prefer an existing open set already used in the bundle (Health Icons, Lucide) over adding a new one, to keep icon style consistent across diagrams; add the new file, credit it in `LICENSES.md`, and note in the relevant `build_.py` docstring which set was used for which slot. + +## Node shape and color conventions (2026-09-30) + +Node kinds share one palette across figures (see excalib): FindingClass and Diagnosis green (Diagnosis darker), Grouping pale green with dashed stroke, AssessmentScheme purple OVAL (never a diamond, which reads as a flowchart decision), AnatomicLocation blue, exam types yellow, Modality grey, DataElement light rose, Measurement light violet, Subspecialty and other metadata Concept nodes grey-violet. Arrowheads are small solid triangles (excalib.tri_head). Edge labels use the schema's committed relationship names in 13px on boxed labels. diff --git a/tools/diagrams/build_foundation_network.py b/tools/diagrams/build_foundation_network.py index d8e2911..efdeb4e 100644 --- a/tools/diagrams/build_foundation_network.py +++ b/tools/diagrams/build_foundation_network.py @@ -1,5 +1,5 @@ #!/usr/bin/env python3 -"""Build the Foundation Context "mini-network" diagram (v6 layout). +"""Build the Foundation Context "mini-network" diagram (v8). A small illustrative graph -- not exhaustive -- showing the three sectors of Foundation Context (finding/diagnosis definitions, anatomic locations, exam @@ -35,6 +35,18 @@ run down the left and right margins respectively, outside all three bands, each in its own lane, jogging in only at the very end. +v8 change: the assessment-scheme node (Lung-RADS) is an oval, not a diamond -- +a diamond reads as a flowchart decision. Same fill, stroke and size envelope; +the legend swatch follows. Its incoming "assessed by" edge now aims at the +oval's leftmost point (d_frac 0.5), which is the one place on that side where +the bounding box and the ellipse's boundary coincide. + +v7 change: every arrowhead is a solid filled triangle drawn by +excalib.tri_head() at a fixed size, matching the two-planes figure -- grey +within-sector, red cross-sector, dashed edges included. Excalidraw's built-in +heads scale with strokeWidth, which made the thick cross-sector edges carry +heads half again too big. + v6 changes: canvas narrowed from 1200px to 955px. Every x-coordinate below was recomputed from measured text widths rather than estimated -- the rendering font is `Helvetica, Segoe UI Emoji` as resolved by headless @@ -60,18 +72,26 @@ """ from __future__ import annotations -from excalib import TITLE, SUBTITLE, BODY, LINE, els, base, text, box, find, edge_point, arrow, save +from excalib import (TITLE, SUBTITLE, BODY, LINE, els, base, text, box, find, edge_point, + arrow, tri_head, save) # ---------------------------------------------------------------- palette FINDING = ("#d1fae5", "#059669", "#064e3b") # light green: finding DIAGNOSIS = ("#6ee7b7", "#059669", "#064e3b") # darker green: diagnosis (subtly different fill) -ASSESS = ("#e9d5ff", "#7e22ce", "#4c1d95") # purple diamond: assessment scheme +ASSESS = ("#e9d5ff", "#7e22ce", "#4c1d95") # purple oval: assessment scheme ANATOMY = ("#bfdbfe", "#1d4ed8", "#1e3a8a") # light blue: anatomic location EXAM = ("#fde68a", "#b45309", "#78350f") # light amber: exam type GREY = ("#e5e7eb", "#9ca3af", "#4b5563") # unlabeled / de-emphasized nodes CROSS = "#be123c" # thick colored line: cross-sector relationship BAND_BG = "#f8fafc" # sector band fill; label backings inside a band use it +# Arrowheads are solid filled triangles drawn by excalib.tri_head(), matching +# the two-planes figure, not Excalidraw's built-in open heads: those are sized +# from the line's strokeWidth, so the thick cross-sector edges were forced to +# carry outsized heads. These are about 60% of that size and set independently +# of line weight. HEAD_X: cross-sector (red); HEAD_W: within-sector (grey). +HEAD_X, HEAD_W = 13.0, 10.0 + # ---------------------------------------------------------------- helpers (local to this builder) def region(id_: str, x: float, y: float, w: float, h: float, title: str) -> None: """Faint background rectangle with a title, drawn first so nodes sit on top.""" @@ -81,15 +101,28 @@ def region(id_: str, x: float, y: float, w: float, h: float, title: str) -> None els.append(text(id_ + "_title", x + 14, y + 10, title, size=15, color=TITLE)) +def edge(id_: str, *args, head: float = HEAD_W, **kwargs) -> None: + """excalib.arrow() with its open head replaced by a solid tri_head().""" + arrow(id_, *args, **kwargs) + a = find(id_) + a["endArrowhead"] = None + tip = (a["x"] + a["points"][-1][0], a["y"] + a["points"][-1][1]) + frm = (a["x"] + a["points"][-2][0], a["y"] + a["points"][-2][1]) + tri_head(id_ + "_h", tip, frm, a["strokeColor"], size=head) + + def dot(id_: str, cx: float, cy: float, r: float, fill=GREY[0], stroke=GREY[1]) -> dict: e = base("ellipse", id_, cx - r, cy - r, 2 * r, 2 * r, stroke, fill, sw=1) els.append(e) return e -def diamond(id_: str, x: float, y: float, w: float, h: float, label: str, colors, size=13) -> dict: +def oval(id_: str, x: float, y: float, w: float, h: float, label: str, colors, size=13) -> dict: + """An ellipse node, inscribed in the given box. The bound text keeps clear + of the curve by sitting in the middle 60% of the width and 36% of the + height, where the ellipse is at or near its full extent.""" fill, stroke, tcolor = colors - d = base("diamond", id_, x, y, w, h, stroke, fill) + d = base("ellipse", id_, x, y, w, h, stroke, fill) t = text(id_ + "_t", x + w * 0.2, y + h * 0.32, label, size=size, color=tcolor, align="center", w=w * 0.6, container=id_) t["height"] = h * 0.36 d["boundElements"] = [{"id": t["id"], "type": "text"}] @@ -106,7 +139,7 @@ def faint(id_: str, x1: float, y1: float, x2: float, y2: float) -> None: def mpath(id_: str, pts: list[tuple[float, float]], color: str, dashed=False, sw=3, label: str | None = None, label_pos: tuple[float, float] | None = None, label_color=BODY, - label_w: float | None = None, label_bg_color: str = "#ffffff") -> None: + label_w: float | None = None, label_bg_color: str = "#ffffff", head: float = HEAD_X) -> None: """Multi-point routed arrow (elbow arrow() only supports 3 points). label_w: MEASURED text width in px. The backing box is sized from it, so @@ -119,8 +152,9 @@ def mpath(id_: str, pts: list[tuple[float, float]], color: str, dashed=False, sw rel = [[px - x0, py - y0] for px, py in pts] ar = base("arrow", id_, x0, y0, pts[-1][0] - x0, pts[-1][1] - y0, color, "transparent", dashed=dashed, sw=sw) ar.update({"points": rel, "startBinding": None, "endBinding": None, - "startArrowhead": None, "endArrowhead": "arrow", "boundElements": None}) + "startArrowhead": None, "endArrowhead": None, "boundElements": None}) els.append(ar) + tri_head(id_ + "_h", pts[-1], pts[-2], color, size=head) if label: lw = label_w if label_w is not None else max(len(ln_) for ln_ in label.split("\n")) * 13 * 0.62 lx, ly = label_pos @@ -177,7 +211,7 @@ def label_bg(id_: str, cx: float, cy: float, label: str, w: float, size=13, colo lung_cancer = box("lung_cancer", 20, 110, 140, 42, "lung cancer", DIAGNOSIS, size=14) pulm_nodule = box("pulm_nodule", 272, 100, 146, 54, "pulmonary\nnodule", FINDING, size=14) # center 345 -lungrads = diamond("lungrads", 492, 95, 125, 75, "Lung-RADS", ASSESS, size=13) +lungrads = oval("lungrads", 492, 95, 125, 75, "Lung-RADS", ASSESS, size=13) pleural_effusion = box("pleural_effusion", 637, 110, 142, 42, "pleural effusion", FINDING, size=13) # center 708 solid_nodule = box("solid_nodule", 120, 210, 105, 70, "solid\npulmonary\nnodule", FINDING, size=13) @@ -196,24 +230,24 @@ def label_bg(id_: str, cx: float, cy: float, label: str, w: float, size=13, colo # horizontal (y=166) and to the LEFT of the red column at x=345; the right-hand # one sits ABOVE the "possibly seen on" lane's top horizontal (y=190). That is # what keeps the red pulmonary-nodule -> lung vertical off all three of them. -arrow("e_solid_sub", "solid_nodule", "top", "pulm_nodule", "bottom", None, s_frac=0.5, d_frac=0.15) -arrow("e_partsolid_sub", "partsolid_nodule", "top", "pulm_nodule", "bottom", None, s_frac=0.4, d_frac=0.5) -arrow("e_nonsolid_sub", "nonsolid_nodule", "top", "pulm_nodule", "bottom", None, s_frac=0.2, d_frac=0.9) +edge("e_solid_sub", "solid_nodule", "top", "pulm_nodule", "bottom", None, s_frac=0.5, d_frac=0.15) +edge("e_partsolid_sub", "partsolid_nodule", "top", "pulm_nodule", "bottom", None, s_frac=0.4, d_frac=0.5) +edge("e_nonsolid_sub", "nonsolid_nodule", "top", "pulm_nodule", "bottom", None, s_frac=0.2, d_frac=0.9) # All three "subtype of" labels are white-backed and placed by hand: their own # edges are diagonals that would otherwise run through the text, and the left # two have to stay clear of the "seen on" lane above (y=166) and the red # pulmonary-nodule column at x=345. label_bg("l_solid_sub", 205, 189, "subtype of", 60.0) label_bg("l_partsolid_sub", 290, 189, "subtype of", 60.0) -label_bg("l_nonsolid_sub", 487, 169, "subtype of", 60.0) -arrow("e_partsolid_comp", "partsolid_nodule", "bottom", "solid_component", "top", "has component", s_frac=0.6, d_frac=0.3, +label_bg("l_nonsolid_sub", 464, 169, "subtype of", 60.0) # clear of the oval's lower-left curve +edge("e_partsolid_comp", "partsolid_nodule", "bottom", "solid_component", "top", "has component", s_frac=0.6, d_frac=0.3, label_size=13, label_dx=60) -arrow("e_manifest", "lung_cancer", "right", "pulm_nodule", "left", "may manifest as", s_frac=0.4, d_frac=0.35, +edge("e_manifest", "lung_cancer", "right", "pulm_nodule", "left", "may manifest as", s_frac=0.4, d_frac=0.35, label_size=13, label_dy=-26) -arrow("e_progress", "nonsolid_nodule", "left", "partsolid_nodule", "right", "may progress to", s_frac=0.5, d_frac=0.5, +edge("e_progress", "nonsolid_nodule", "left", "partsolid_nodule", "right", "may progress to", s_frac=0.5, d_frac=0.5, dashed=True, label_size=13, label_dy=-24) -arrow("e_assessed", "pulm_nodule", "right", "lungrads", "left", "assessed by", s_frac=0.25, d_frac=0.4, - label_size=13, label_dx=6, label_dy=-24) +edge("e_assessed", "pulm_nodule", "right", "lungrads", "left", "assessed by", s_frac=0.25, d_frac=0.5, + label_size=13, label_dx=6, label_dy=-30) # -30: rides above the oval's upper-left curve # pleural_effusion intentionally has no edge to pulm_nodule -- just a neighbor # solid_component intentionally has no cross-sector "scoped to" edge -- only # pulmonary nodule, lung cancer, and pleural effusion are scoped to anatomy @@ -246,14 +280,14 @@ def label_bg(id_: str, cx: float, cy: float, label: str, w: float, size=13, colo faint("fB_13", 50, BY + 250, 55, BY + 310) faint("fB_into", 75, BY + 285, 140, BY + 245) # gB2 -> upper lobe of right lung (nearest labeled node) -arrow("e_rlung_lung", "right_lung", "right", "lung", "left", None, s_frac=0.5, d_frac=0.3) -arrow("e_llung_lung", "left_lung", "left", "lung", "right", None, s_frac=0.5, d_frac=0.7) -arrow("e_ulobe_rlung", "upper_lobe", "top", "right_lung", "bottom", None, s_frac=0.4, d_frac=0.4) +edge("e_rlung_lung", "right_lung", "right", "lung", "left", None, s_frac=0.5, d_frac=0.3) +edge("e_llung_lung", "left_lung", "left", "lung", "right", None, s_frac=0.5, d_frac=0.7) +edge("e_ulobe_rlung", "upper_lobe", "top", "right_lung", "bottom", None, s_frac=0.4, d_frac=0.4) # lung parenchyma's edge runs into lung's BOTTOM-RIGHT (x=394), leaving the # space under lung's center free for "laterality", which now sits between the # red "included" arrowhead (x=294) and that edge -- on neither of them. -arrow("e_parenchyma_lung", "lung_parenchyma", "top", "lung", "bottom", None, s_frac=0.7, d_frac=0.88) -arrow("e_pspace_thorax", "pleural_space", "left", "thorax", "right", None, s_frac=0.5, d_frac=0.5) +edge("e_parenchyma_lung", "lung_parenchyma", "top", "lung", "bottom", None, s_frac=0.7, d_frac=0.88) +edge("e_pspace_thorax", "pleural_space", "left", "thorax", "right", None, s_frac=0.5, d_frac=0.5) label_bg("l_ulobe_rlung", 197, BY + 172, "contained by", 73.7) label_bg("l_laterality", 345, BY + 172, "laterality", 48.4) @@ -282,12 +316,12 @@ def label_bg(id_: str, cx: float, cy: float, label: str, w: float, size=13, colo faint("fC_12", 42, CY + 165, 64, CY + 198) faint("fC_into", 42, CY + 165, 90, CY + 165) # gC1 -> CT Chest WO contrast (nearest labeled node) -arrow("e_wo_family", "ct_wo", "top", "ct_chest", "bottom", "member of family", s_frac=0.5, d_frac=0.1, +edge("e_wo_family", "ct_wo", "top", "ct_chest", "bottom", "member of family", s_frac=0.5, d_frac=0.1, label_size=13, label_dx=-15, label_dy=-20) -arrow("e_w_family", "ct_w", "top", "ct_chest", "bottom", None, s_frac=0.5, d_frac=0.35) -arrow("e_wo_w_family", "ct_wo_w", "top", "ct_chest", "bottom", None, s_frac=0.5, d_frac=0.65) -arrow("e_cta_family", "ct_cta", "top", "ct_chest", "bottom", None, s_frac=0.3, d_frac=0.9) -arrow("e_w_regionimaged", "ct_w", "bottom", "region_imaged", "top", "Playbook part", s_frac=0.5, d_frac=0.5, +edge("e_w_family", "ct_w", "top", "ct_chest", "bottom", None, s_frac=0.5, d_frac=0.35) +edge("e_wo_w_family", "ct_wo_w", "top", "ct_chest", "bottom", None, s_frac=0.5, d_frac=0.65) +edge("e_cta_family", "ct_cta", "top", "ct_chest", "bottom", None, s_frac=0.3, d_frac=0.9) +edge("e_w_regionimaged", "ct_w", "bottom", "region_imaged", "top", "Playbook part", s_frac=0.5, d_frac=0.5, label_size=13, label_dx=107, label_dy=0) # ================================================================== cross-sector edges (thick, colored) @@ -351,7 +385,7 @@ def label_bg(id_: str, cx: float, cy: float, label: str, w: float, size=13, colo node_rows = [ ("rect", FINDING, "finding"), ("rect", DIAGNOSIS, "diagnosis"), - ("diamond", ASSESS, "assessment scheme"), + ("oval", ASSESS, "assessment scheme"), ("rect", ANATOMY, "anatomic location"), ("rect", EXAM, "exam type"), ] @@ -372,8 +406,8 @@ def label_bg(id_: str, cx: float, cy: float, label: str, w: float, size=13, colo sw_el = base("rectangle", f"legA{i}", LX1, y, 22, 16, stroke, fill, sw=1) sw_el["roundness"] = {"type": 3} els.append(sw_el) - elif kind == "diamond": - els.append(base("diamond", f"legA{i}", LX1, y - 3, 24, 22, stroke, fill)) + elif kind == "oval": + els.append(base("ellipse", f"legA{i}", LX1, y - 1, 24, 18, stroke, fill)) els.append(text(f"legA{i}_l", LX1 + 32, y - 1, label, size=13, color=BODY, w=340)) y += 28 diff --git a/tools/diagrams/build_nodule_neighborhood.py b/tools/diagrams/build_nodule_neighborhood.py new file mode 100644 index 0000000..f3bfc64 --- /dev/null +++ b/tools/diagrams/build_nodule_neighborhood.py @@ -0,0 +1,411 @@ +#!/usr/bin/env python3 +"""Build the "pulmonary nodule neighborhood" diagram (v3). + +One FindingClass and everything that hangs off it, drawn as nodes and labeled +edges. The point of the figure is the SHAPE of the neighborhood -- which kinds +of thing attach to a finding definition, and by which named relationship -- +not the content of any one node, so every node carries only its name plus its +node kind on a small second line. + +v2 IS ILLUSTRATIVE, NOT A DUMP OF THE GRAPH +------------------------------------------- +v1 drew only edges committed to the CDE graph. v2 reflects updates the +project's clinical expert intends for that graph, so some nodes, names and +edges below do not exist at the pin. The figure says so on a caption line +under the legend, and the two lists in the next section say exactly which is +which. Nothing here was invented by the builder: every "intended" item came +from the project lead by way of the brief for this version. + +SOURCE OF THE COMMITTED DATA +---------------------------- +~/ACR-RSNA-CDEs, branch next-gen-2026, pinned commit +b541b74c22a33b64834309244569a60d06de79e4, file (read with `git show`, i.e. +the committed copy, not the working tree): + + docs/next-gen-schema/alpha/graph/definition-graph.json + +Centre node: FC-000005 "pulmonary nodule" (node: FindingClass). + +COMMITTED AT b541b74 -- 15 of the 22 edges drawn +------------------------------------------------ + SUBTYPE_OF 2 FC-000006 solid pulmonary nodule -> FC-000005 + FC-000007 part-solid pulmonary nodule -> FC-000005 + HAS_COMPONENT 1 FC-000007 -> FC-000009 solid component of part-solid + pulmonary nodule (the graph also carries the inverse + COMPONENT_OF, not drawn) + HAS_DATA_ELEMENT 3 FC-000005 -> DE-000001 presence, DE-000004 + calcification, DE-000015 interval change + HAS_MEASUREMENT 2 FC-000005 -> MS-000003 mean diameter, + MS-000001 long-axis diameter + ASSESSED_BY 1 FC-000005 -> AS-000001 Lung-RADS + SCOPED_TO 1 FC-000005 -> RID1301 lung + props: kind=region, strength=required + SEEN_ON 3 FC-000005 -> CT, XR, MR (the graph also has US and + PET on this finding; those two are not drawn) + IN_SUBSPECIALTY 1 FC-000005 -> CH + MAY_MANIFEST_AS 0 see below -- both drawn manifestation edges are + intended, neither is committed in the form drawn. + plus SUBTYPE_OF 2 drawn but NOT committed (see below), for 22 total. + +INTENDED, NOT AT THE PIN -- 7 edges and the nodes they need +------------------------------------------------------------ + Renamed data elements. "composition" replaces DE-000002 attenuation on this + finding, and "margin" replaces DE-000039 pulmonary margin. Both + HAS_DATA_ELEMENT edges are committed under the old names. A separate node + already named "composition" (DE-000006) exists in the graph for other + findings, so the rename points at a name the vocabulary already uses. + Dropped measurement. MS-000006 lesion count is a committed HAS_MEASUREMENT + target of FC-000005; removing it is the intended change. + Renamed subtype. "ground glass nodule" renames FC-000008 non-solid + pulmonary nodule. FC-000025 "ground-glass opacity" is a DIFFERENT node + that stays where it is. + Grouping node. "pulmonary parenchymal abnormality" and BOTH SUBTYPE_OF + edges into it (from pulmonary nodule and from pulmonary granuloma) are + intended. The alpha contains no Grouping nodes at all at this commit. + Diagnosis "pulmonary neoplasm" and its MAY_MANIFEST_AS -> pulmonary nodule. + No such node exists at the pin. The committed diagnoses that reach this + family are DX-000004 lung cancer, which manifests as all three SUBTYPES, + and DX-000009 metastatic disease, the only one with a direct edge into + FC-000005 (that was the diagnosis v1 drew). + Retargeted manifestation. DX-000002 pulmonary granuloma is committed, but + its MAY_MANIFEST_AS points at FC-000006 solid pulmonary nodule, not at + the parent. Pointing it at FC-000005 is the intended change. + AssessmentScheme "Fleischner criteria" and its ASSESSED_BY edge. Not at the + pin; the five committed schemes are Lung-RADS, ACR TI-RADS, LI-RADS, + Bosniak classification and BI-RADS assessment. + +Two labels are committed content shown in a reader-friendly form rather than +changed content. The Subspecialty node's `name` is the code "CH" and its +`definition` is "Chest Radiology"; the box shows the definition, since "CH" +alone says nothing. The Modality nodes carry RadLex definitions (Computed +Tomography, Projection Radiography, Magnetic Resonance Imaging) that do not +fit half-size boxes, so those three show the committed ids only. + +Not drawn at all, by instruction: values, time course, etiology. Also left +out: HAS_ANATOMIC_REFINEMENT_RULE -> ARR-000001, whose target is a node kind +outside the nine the legend names. + +RELATIONSHIP NAMES +------------------ +Every edge label is the committed `edge` string from definition-graph.json, +and all nine agree with the relationship table on +knowledge/drafts/next-generation-schema.md. The older names that circulate +elsewhere in the same repository are NOT used: HAS_ELEMENT (for +HAS_DATA_ELEMENT) and MAY_HAVE_COMPONENT (for HAS_COMPONENT), both of which +survive in graph/core.jsonl and in the retired 2026-09-03 fc-neighborhood +diagram. The schema page flags that older pair itself. + +LAYOUT +------ +About 1050 x 820. v1 packed eight arrows out of the centre node's right edge +into a 180px corridor; v2 has fewer targets there (five data elements, two +measurements) AND a corridor half again as wide, so the fan opens at roughly +39px of label pitch instead of 26px. The centre node sits mid-canvas with the +Grouping directly above it, the two assessment schemes up and to the right, +the two diagnoses up and to the left, the subtype row below, and the +context nodes -- lung, three modalities, the subspecialty -- down the left +margin. + +Two routing facts hold the left margin together. The diagnosis that also +points UP at the Grouping (granuloma) sits ABOVE the one that only points at +the nodule (neoplasm); reversing them makes the two arrows cross. And the +SCOPED_TO arrow leaves the centre node BELOW the point where the neoplasm's +manifestation arrow arrives, which is what keeps those two apart. + +Every arrow is emitted before every label plate: the plates are opaque and +mask the lines they lie across, so an arrow drawn after a plate would cut +through the label's text. + +Text widths are measured, not estimated (see tools/diagrams/README.md): the +render font is `Helvetica, Segoe UI Emoji` as resolved by headless Chromium, +and every box width and plate width below comes from canvas measureText() at +the same size in that browser. + +Colours follow build_foundation_network.py so the figures name the same kinds +the same way: FINDING green, DIAGNOSIS darker green, ASSESS purple, +ANATOMY blue, GREY modality. Four kinds are local to this figure: DataElement +takes the lightest step of excalib's ROSE ramp, Measurement the lightest step +of VIOLET, Grouping a paler green than FINDING with a dashed stroke (it is a +container, not a finding you would report), and Subspecialty a desaturated +grey-violet that reads as metadata next to both. + +v3 change: the two AssessmentScheme nodes are OVALS, not diamonds. A diamond +reads as a flowchart decision, which is not what an assessment scheme is. +Same purple fill and stroke, same 190x92 envelope, labels still centred, and +the legend swatch is an oval to match. Both ASSESSED_BY arrows are drawn by +ray() so their heads land on the ellipse outline rather than on a +bounding-box extreme; see that helper for why excalib.arrow() cannot. + +Excalidraw has no italic font variant -- fontFamily is an integer code with +no style axis -- so the caption under the legend is set small and grey rather +than italic. + +Output: knowledge/drafts/nodule-neighborhood.excalidraw; render with +render_excalidraw.py (see tools/diagrams/README.md). +""" +from __future__ import annotations + +from excalib import (BODY, LINE, CAPTION, els, base, text, find, edge_point, arrow, + tri_head, save) + +# ---------------------------------------------------------------- palette +# (fill, stroke, text, mid) -- "mid" is the tone for the small kind line. +FINDING = ("#d1fae5", "#059669", "#064e3b", "#047857") # FindingClass +GROUPING = ("#ecfdf5", "#10b981", "#065f46", "#059669") # Grouping (dashed) +DIAGNOSIS = ("#6ee7b7", "#059669", "#064e3b", "#047857") # Diagnosis +ASSESS = ("#e9d5ff", "#7e22ce", "#4c1d95", "#7e22ce") # AssessmentScheme (oval) +ANATOMY = ("#bfdbfe", "#1d4ed8", "#1e3a8a", "#1d4ed8") # AnatomicLocation +GREY = ("#e5e7eb", "#6b7280", "#374151", "#4b5563") # Modality +DATAEL = ("#ffe4e6", "#be123c", "#881337", "#be123c") # DataElement (ROSE, lightest) +MEAS = ("#ede9fe", "#6d28d9", "#4c1d95", "#6d28d9") # Measurement (VIOLET, lightest) +SUBSPEC = ("#e5e3ee", "#78748f", "#3c3a52", "#5d5a78") # Subspecialty (grey-violet) + +HEAD = 10.0 # solid tri_head length, independent of line weight +KIND_SIZE = 11 # the small second line inside every node + + +# ---------------------------------------------------------------- helpers +def kind_box(id_, x, y, w, h, name, kind, pal, size=14, lines=None, dashed=False, + kind_size=KIND_SIZE): + """A node: rounded rect, name centred, node kind on a small line under it. + `lines` overrides the name's line breaks (list of strings).""" + fill, stroke, tcol, mid = pal + r = base("rectangle", id_, x, y, w, h, stroke, fill, dashed=dashed) + r["roundness"] = {"type": 3} + els.append(r) + nl = lines or [name] + block = len(nl) * size * 1.25 + 3 + kind_size * 1.25 + ty = y + (h - block) / 2 + els.append(text(id_ + "_n", x + 8, ty, "\n".join(nl), size=size, color=tcol, + align="center", w=w - 16)) + els.append(text(id_ + "_k", x + 8, ty + len(nl) * size * 1.25 + 3, kind, + size=kind_size, color=mid, align="center", w=w - 16)) + return r + + +def oval_node(id_, x, y, w, h, name, kind, pal, size=14): + """Same two-line content as kind_box, in an ellipse. v3 change: these were + diamonds through v2, which read as flowchart decisions. Same fill, stroke + and size envelope; only the outline changed. + + The text column is the middle 72% of the width. An ellipse is widest at + its vertical centre and the two-line block reaches only +-17px from it, + where the half-width is still 93% of the semi-axis, so 72% clears the + curve with room to spare (a diamond only allowed 60%).""" + fill, stroke, tcol, mid = pal + d = base("ellipse", id_, x, y, w, h, stroke, fill) + els.append(d) + block = size * 1.25 + 3 + KIND_SIZE * 1.25 + ty = y + (h - block) / 2 + els.append(text(id_ + "_n", x + w * 0.14, ty, name, size=size, color=tcol, + align="center", w=w * 0.72)) + els.append(text(id_ + "_k", x + w * 0.14, ty + size * 1.25 + 3, kind, + size=KIND_SIZE, color=mid, align="center", w=w * 0.72)) + return d + + +def ray(id_, src, s_side, s_frac, dst, label, t): + """A straight arrow from a box edge to a point ON an ellipse's outline. + + excalib.arrow() lands on the destination's BOUNDING BOX, which for an + ellipse means the head stops at whichever of the four extreme points the + named side picks -- fine for a vertical or horizontal approach, wrong for + a diagonal one, which is what both ASSESSED_BY arrows are. This instead + solves for the boundary point along the line from the ellipse's centre to + the source, so each head meets the curve square on. `t` places the label + along the same line, so moving an endpoint moves its label with it.""" + a, b = find(src), find(dst) + x1, y1 = edge_point(a, s_side, s_frac) + cx, cy = b["x"] + b["width"] / 2, b["y"] + b["height"] / 2 + rx, ry = b["width"] / 2, b["height"] / 2 + dx, dy = x1 - cx, y1 - cy + k = 1.0 / ((dx / rx) ** 2 + (dy / ry) ** 2) ** 0.5 + x2, y2 = cx + dx * k, cy + dy * k + ln = ((x2 - x1) ** 2 + (y2 - y1) ** 2) ** 0.5 or 1.0 + ex = x2 - (x2 - x1) / ln * HEAD * 0.55 # stop short so the head's base sits on the line + ey = y2 - (y2 - y1) / ln * HEAD * 0.55 + ar = base("arrow", id_, x1, y1, ex - x1, ey - y1, LINE, "transparent", sw=2) + ar.update({"points": [[0, 0], [ex - x1, ey - y1]], "startBinding": None, + "endBinding": None, "startArrowhead": None, "endArrowhead": None, + "boundElements": None}) + els.append(ar) + tri_head(id_ + "_h", (x2, y2), (x1, y1), LINE, size=HEAD) + lab("l_" + id_, x1 + t * (x2 - x1), y1 + t * (y2 - y1), label) + + +def edge(id_, src, s_side, dst, d_side, s_frac=0.5, d_frac=0.5, elbow=None): + """excalib.arrow() with its open head replaced by a fixed-size solid one.""" + arrow(id_, src, s_side, dst, d_side, s_frac=s_frac, d_frac=d_frac, + color=LINE, sw=2, elbow=elbow) + a = find(id_) + a["endArrowhead"] = None + tip = (a["x"] + a["points"][-1][0], a["y"] + a["points"][-1][1]) + frm = (a["x"] + a["points"][-2][0], a["y"] + a["points"][-2][1]) + tri_head(id_ + "_h", tip, frm, LINE, size=HEAD) + + +def plate(id_, cx, cy, s, w, size=13, pad_x=6, pad_y=4): + """An edge label on an opaque white plate centred on (cx, cy), so it masks + the line it sits on. `w` is the MEASURED text width.""" + bw, bh = w + 2 * pad_x, size * 1.25 + 2 * pad_y + r = base("rectangle", id_, cx - bw / 2, cy - bh / 2, bw, bh, "transparent", "#ffffff", sw=0) + r["roundness"] = {"type": 3} + els.append(r) + els.append(text(id_ + "_t", cx - bw / 2 + pad_x, cy - bh / 2 + pad_y, s, + size=size, color=BODY, align="center", w=w)) + + +# Measured label widths at 13px Helvetica (headless Chromium). +LW = {"MAY_MANIFEST_AS": 124.7, "ASSESSED_BY": 94.7, "SUBTYPE_OF": 86.0, + "HAS_DATA_ELEMENT": 135.3, "HAS_MEASUREMENT": 135.1, "SCOPED_TO": 79.9, + "SEEN_ON": 62.1, "HAS_COMPONENT": 118.5, "IN_SUBSPECIALTY": 117.5} + +LABELS: list[tuple[str, float, float, str]] = [] + + +def lab(id_, cx, cy, name): + """Queue an edge label; all of them are flushed after every arrow is drawn.""" + LABELS.append((id_, cx, cy, name)) + + +# ================================================================== nodes +# centre node and the Grouping directly above it +kind_box("fc", 400, 270, 240, 80, "pulmonary nodule", "FindingClass", FINDING, size=17) +kind_box("gr", 320, 25, 250, 70, "pulmonary parenchymal abnormality", "Grouping", + GROUPING, dashed=True) + +# diagnoses, upper-left. granuloma is ABOVE neoplasm because granuloma also +# points UP at the Grouping; the other order makes those two arrows cross. +kind_box("dx_gran", 20, 30, 165, 62, "pulmonary granuloma", "Diagnosis", DIAGNOSIS) +kind_box("dx_neo", 20, 140, 165, 62, "pulmonary neoplasm", "Diagnosis", DIAGNOSIS) + +# assessment schemes, upper-right +oval_node("as_lr", 600, 14, 190, 92, "Lung-RADS", "AssessmentScheme", ASSESS) +oval_node("as_fl", 845, 14, 190, 92, "Fleischner criteria", "AssessmentScheme", ASSESS) + +# subtypes (row below the centre node; smaller boxes, 13px names) +kind_box("s1", 300, 500, 140, 80, "solid pulmonary nodule", "FindingClass", FINDING, + size=13, lines=["solid", "pulmonary nodule"]) +kind_box("s2", 450, 500, 140, 80, "part-solid pulmonary nodule", "FindingClass", FINDING, + size=13, lines=["part-solid", "pulmonary nodule"]) +kind_box("s3", 600, 500, 140, 80, "ground glass nodule", "FindingClass", FINDING, + size=13, lines=["ground glass", "nodule"]) + +# the component hanging off part-solid +kind_box("sc", 400, 630, 240, 70, "solid component", "FindingClass", FINDING, size=13, + lines=["solid component of", "part-solid pulmonary nodule"]) + +# context nodes down the left margin +kind_box("an", 60, 290, 140, 60, "lung", "AnatomicLocation", ANATOMY) +kind_box("sp", 40, 370, 170, 60, "chest radiology", "Subspecialty", SUBSPEC) +for i, (mid_, nm) in enumerate([("md_ct", "CT"), ("md_xr", "XR"), ("md_mr", "MR")]): + kind_box(mid_, 55, 480 + i * 48, 90, 38, nm, "Modality", GREY, size=13, kind_size=9) + +# data elements and measurements, right column +COL_X, COL_W, ROW_H = 845, 190, 48 +DE_NAMES = ["presence", "composition", "margin", "calcification", "interval change"] +for i, nm in enumerate(DE_NAMES): + kind_box(f"de{i}", COL_X, 150 + i * 66, COL_W, ROW_H, nm, "DataElement", DATAEL) +for i, nm in enumerate(["mean diameter", "long-axis diameter"]): + kind_box(f"ms{i}", COL_X, 510 + i * 66, COL_W, ROW_H, nm, "Measurement", MEAS) + +# ================================================================== edges +# SUBTYPE_OF into the Grouping: from the centre node (plumb vertical) and from +# the granuloma (near-horizontal, in the 135px gap that fits its plate). +edge("e_gr_fc", "fc", "top", "gr", "bottom", s_frac=0.50, d_frac=0.80) +edge("e_gr_gn", "dx_gran", "right", "gr", "left", s_frac=0.50, d_frac=0.50) +lab("l_gr_fc", 520, 180, "SUBTYPE_OF") +lab("l_gr_gn", 252, 60, "SUBTYPE_OF") + +# MAY_MANIFEST_AS x2, both into the centre node's left edge +edge("e_mma_gn", "dx_gran", "right", "fc", "left", s_frac=0.87, d_frac=0.15) +edge("e_mma_neo", "dx_neo", "right", "fc", "left", s_frac=0.50, d_frac=0.55) +lab("l_mma_gn", 292, 183, "MAY_MANIFEST_AS") +lab("l_mma_neo", 292, 242, "MAY_MANIFEST_AS") + +# ASSESSED_BY x2, drawn by ray() so each head meets the oval's curve square +# on rather than stopping at a bounding-box extreme. Both run up and to the +# right; the Fleischner one passes well below the Lung-RADS oval and above +# the first data element. +ray("e_asb_lr", "fc", "top", 0.62, "as_lr", "ASSESSED_BY", 0.34) +ray("e_asb_fl", "fc", "top", 0.80, "as_fl", "ASSESSED_BY", 0.66) + +# SUBTYPE_OF x3: each subtype -> the centre node (arrows point UP into it). +# The three plates are staggered along their arrows; level with each other +# they would collide, and the right one also has to stay clear of the +# measurement labels, so it rides high. +edge("e_st1", "s1", "top", "fc", "bottom", d_frac=0.35) +edge("e_st2", "s2", "top", "fc", "bottom", d_frac=0.50) +edge("e_st3", "s3", "top", "fc", "bottom", d_frac=0.72) +lab("l_st1", 410, 448, "SUBTYPE_OF") +lab("l_st2", 520, 425, "SUBTYPE_OF") +lab("l_st3", 592, 380, "SUBTYPE_OF") + +# HAS_COMPONENT: part-solid -> solid component. The drop is only 50px, so the +# plate sits BESIDE the arrow; centred on it, it would cover the whole shaft. +edge("e_hc", "s2", "bottom", "sc", "top") +lab("l_hc", 625, 605, "HAS_COMPONENT") + +# HAS_DATA_ELEMENT x5 and HAS_MEASUREMENT x2: one fan out of the centre node's +# right edge into the right column, across a 205px corridor. +for i in range(5): + edge(f"e_de{i}", "fc", "right", f"de{i}", "left", s_frac=0.10 + i * 0.15) + lab(f"l_de{i}", 742, 226 + i * 39, "HAS_DATA_ELEMENT") +edge("e_ms0", "fc", "right", "ms0", "left", s_frac=0.85) +edge("e_ms1", "fc", "right", "ms1", "left", s_frac=0.95) +lab("l_ms0", 727, 421, "HAS_MEASUREMENT") +lab("l_ms1", 732, 460, "HAS_MEASUREMENT") + +# SCOPED_TO -> lung. It leaves the centre node BELOW where the neoplasm's +# manifestation arrow arrives, so the two do not cross. +edge("e_sc", "fc", "left", "an", "right", s_frac=0.875, d_frac=0.50) +lab("l_sc", 300, 330, "SCOPED_TO") + +# IN_SUBSPECIALTY -> chest radiology +edge("e_sp", "fc", "bottom", "sp", "right", s_frac=0.05, d_frac=0.50) +lab("l_sp", 311, 375, "IN_SUBSPECIALTY") + +# SEEN_ON x3 -> the three modality boxes, a fan off the centre node's bottom +# edge that passes to the right of lung and of the subspecialty box. +for i, (mid_, t) in enumerate([("md_ct", 0.42), ("md_xr", 0.50), ("md_mr", 0.68)]): + edge(f"e_sn{i}", "fc", "bottom", mid_, "right", s_frac=0.10 + i * 0.08, d_frac=0.50) + a = find(f"e_sn{i}") + x1, y1 = a["x"], a["y"] + x2, y2 = x1 + a["points"][-1][0], y1 + a["points"][-1][1] + lab(f"l_sn{i}", x1 + t * (x2 - x1), y1 + t * (y2 - y1), "SEEN_ON") + +for _id, _cx, _cy, _nm in LABELS: + plate(_id, _cx, _cy, _nm, LW[_nm]) + +# ================================================================== legend +LEG_Y, LEG_X0, LEG_X1 = 735, 15, 1035 +lg = base("rectangle", "leg", LEG_X0, LEG_Y, LEG_X1 - LEG_X0, 52, "#e2e8f0", "#f8fafc", sw=1) +lg["roundness"] = {"type": 3} +els.append(lg) + +# widths measured at 11px; the nine entries need the smaller size to sit in one row +LEGEND = [("FindingClass", FINDING, 63.6, False), ("Grouping", GROUPING, 45.3, True), + ("Diagnosis", DIAGNOSIS, 48.3, False), ("AssessmentScheme", ASSESS, 100.3, False), + ("AnatomicLocation", ANATOMY, 87.4, False), ("Modality", GREY, 41.0, False), + ("DataElement", DATAEL, 63.6, False), ("Measurement", MEAS, 67.3, False), + ("Subspecialty", SUBSPEC, 62.4, False)] +lx = 32 +for i, (name, pal, wpx, dashed) in enumerate(LEGEND): + fill, stroke, _t, _m = pal + if name == "AssessmentScheme": + els.append(base("ellipse", f"lg{i}", lx - 1, LEG_Y + 17, 26, 18, stroke, fill, sw=1)) + sw_w = 26 + else: + s = base("rectangle", f"lg{i}", lx, LEG_Y + 18, 22, 16, stroke, fill, sw=1, dashed=dashed) + s["roundness"] = {"type": 3} + els.append(s) + sw_w = 22 + els.append(text(f"lg{i}_t", lx + sw_w + 8, LEG_Y + 19, name, size=11, color=BODY, w=wpx)) + lx += sw_w + 8 + wpx + 16 + +# caption under the legend (Excalidraw has no italic variant; small and grey instead) +els.append(text("cap", (LEG_X0 + LEG_X1) / 2 - 300, LEG_Y + 64, + "illustrative: reflects pending updates to the CDE graph", + size=11, color=CAPTION, align="center", w=600)) + +save("knowledge/drafts/nodule-neighborhood.excalidraw") diff --git a/tools/diagrams/build_pillars.py b/tools/diagrams/build_pillars.py index 6715fd0..c42ccaa 100644 --- a/tools/diagrams/build_pillars.py +++ b/tools/diagrams/build_pillars.py @@ -1,5 +1,5 @@ #!/usr/bin/env python3 -"""Build the OIDM "five pillars" technology-stack diagram (v3). +"""Build the OIDM "five pillars" technology-stack diagram. A layered stack, read bottom to top, each layer its own hue (no blue reused from other diagrams in the bundle) so the picture reads without words: @@ -8,20 +8,35 @@ diagnosis definitions, anatomic locations, exam types. Short double-headed arrows between the three blocks, with one "relationships" label over the row, say the three are tied to each other. - 2. Data Structures -- this patient's data, sitting on the foundation. The - two bands overlap by OVERLAP px and a row of thin alternating teal and - amber threads runs through the overlap, so the layers look stitched - together rather than merely stacked. No arrows, and never the word - "pointer": the structures are interconnected with the foundation at - every finding, diagnosis, location and exam type, not pointing at one. + 2. Data Structures -- this patient's data, sitting on the foundation. 3. SDKs -- a thin band between the data layer and the top. 4/5. Use Cases and Sample Applications -- two panels sharing the top band, joined by a short horizontal connector labelled "illustrates". -Geometry rules: every band is CONTENT_W wide and starts at x=0; vertical -gaps between bands are all BAND_GAP, except the Data/Foundation seam, which -is a deliberate overlap; band heights are computed from their contents, so -no band is taller than its own text needs. +The seam -- how the Data Structures band and the Foundation Context band show +that the patient graph is woven into the foundation graph -- is pluggable, and +selected with the required `--seam` flag. v3's seam (an overlap crossed by +twelve alternating vertical threads) was rejected; the three candidates are: + + a Named attachments. The bands separate, and thin connectors run from the + data cards to named tags sitting on the Foundation band's top edge, each + tag over the foundation block it attaches to ("is a", "located at", ...). + b Dovetail. The bands are flush and the Data Structures band's lower edge + is cut into four teal tabs that drop into matching slots in the + Foundation band's top edge, one per attachment kind. No lines. + c Shared membrane. A narrow hatched band between the two holds four + attachment-point nodes, each ticking up into the data band and down into + the foundation band. + +A seam is a dict of four things: how much room the Data band leaves below its +cards, the gap between the two bands, how far below the Foundation band's top +edge its header starts, and a draw() that paints the seam itself once both +band rectangles are placed. + +Geometry rules: every band is CONTENT_W wide and starts at x=0; vertical gaps +between bands are all BAND_GAP, except the Data/Foundation seam, which each +seam sets for itself; band heights are computed from their contents, so no +band is taller than its own text needs. Icons: Health Icons (CC0/MIT, outline style) for anatomy/exam/person glyphs, Lucide (ISC, with one Feather-derived MIT icon) for everything else -- see @@ -31,25 +46,25 @@ it renders optically smaller than Lucide's 24x24 stroke art at the same box size; ICON_FILLED compensates. -Output: knowledge/drafts/pillars.excalidraw; render with render_excalidraw.py. +Output: knowledge/drafts/pillars-.excalidraw (override with --out); +render with render_excalidraw.py. """ -from excalib import els, base, text, image, save, AMBER, TEAL, VIOLET, ROSE, GREEN, CAPTION +from __future__ import annotations + +import argparse +import math -# ---------------------------------------------------------------- palette -# The five-hue palette (matched lightness steps, no hue repeats, no blue -# reused from any prior diagram) lives in excalib.py as AMBER/TEAL/VIOLET/ -# ROSE/GREEN so other diagrams -- e.g. build_three_axes.py, a detail view -# of the Foundation Context/AMBER pillar -- can match it exactly. +from excalib import els, base, text, image, save, AMBER, TEAL, VIOLET, ROSE, GREEN, CAPTION # ---------------------------------------------------------------- layout constants CONTENT_W = 880 -BAND_GAP = 24 # the one vertical gap between bands (the seam overlaps instead) +BAND_GAP = 24 # the vertical gap between bands above the seam PAD_BAND = 20 # a band's own inner padding on all sides GAP = 20 # gap between sibling blocks inside a band GAP_REL = 64 # wider gap, so a double-headed arrow reads as an arrow and not a diamond ICON = 28 # harmonized icon render size ICON_FILLED = 32 # filled-path icon sets need a bigger box to match optically -OVERLAP = 36 # how far the Data Structures band sits over the Foundation band +CORNER_R = 32 # Excalidraw's adaptive corner radius for a band-sized rectangle _uid = [0] @@ -59,14 +74,14 @@ def uid(prefix: str) -> str: return f"{prefix}{_uid[0]}" +# ---------------------------------------------------------------- primitives def band_rect(id_: str, x: float, y: float, w: float, h: float, pal: dict, at_front=False) -> dict: """Draw a band's background rectangle. Pass at_front=True when the band's true height is only known after laying out its header/blocks (they were already appended to els) -- this inserts the rect at index 0 so it still paints behind its own contents instead of covering them. Note the order that matters at the seam: whichever band rect is inserted at index 0 last - ends up furthest back, so Foundation Context must be built last for the - Data Structures band to sit on top of it in the overlap.""" + ends up furthest back, so Foundation Context must be built last.""" r = base("rectangle", id_, x, y, w, h, pal["stroke"], pal["band"]) r["roundness"] = {"type": 3} if at_front: @@ -97,14 +112,11 @@ def icon_block(x: float, y: float, w: float, h: float, icon_path: str, pal: dict lines: list[str], desc: str | None = None, filled_icon=False) -> dict: """Icon centered on top, label line(s) centered below, optional lighter descriptor line last. Background is the band's own deeper pastel so the - block reads as 'inside' the band, not a separate object. h is passed in - (not computed per-block) so every block in a row shares the same height - even when label line counts differ. Returns the block rectangle.""" + block reads as 'inside' the band, not a separate object.""" r = base("rectangle", uid("blk"), x, y, w, h, pal["stroke"], pal["block"], sw=1) r["roundness"] = {"type": 3} els.append(r) cx = x + w / 2 - # center this block's own (possibly shorter) content within the shared h content_h = icon_block_h(lines, desc) - 22 # minus this fn's fixed 12+10 top/bottom pad top = y + (h - content_h) / 2 s = ICON_FILLED if filled_icon else ICON @@ -142,120 +154,311 @@ def hconn(x1: float, x2: float, y: float, color: str, sw=1, both=False) -> None: els.append(a) -# ============================================================ 5/4. Use Cases | Sample Applications -# Top band: two panels, title + one-line subtitle each, so the band is only -# as tall as that text needs. -Y_TOP = 0 -GAP_MID = 104 # wide enough for the "illustrates" label to sit clear of both panels -PANEL_PAD = 14 -PANEL_INSET = PAD_BAND - 2 # same left inset as the full-width band headers -PANEL_TITLE = 18 -PANEL_H = PANEL_PAD + PANEL_TITLE * 1.3 + 13 * 1.25 + PANEL_PAD -panel_w = (CONTENT_W - GAP_MID) / 2 - -band_rect(uid("panel"), 0, Y_TOP, panel_w, PANEL_H, ROSE) -band_rect(uid("panel"), panel_w + GAP_MID, Y_TOP, panel_w, PANEL_H, GREEN) -band_header(PANEL_INSET, Y_TOP + PANEL_PAD, "icons/lucide-lightbulb.svg", ROSE, - "Use Cases", "what the project wants built", size=PANEL_TITLE) -band_header(panel_w + GAP_MID + PANEL_INSET, Y_TOP + PANEL_PAD, "icons/lucide-app-window.svg", GREEN, - "Sample Applications", "what has been built", size=PANEL_TITLE) - -# "illustrates": a short horizontal connector at the panels' mid-height, -# spanning only the gap between them, with its label on a plate above it. -conn_y = Y_TOP + PANEL_H / 2 -hconn(panel_w + 2, panel_w + GAP_MID - 2, conn_y, CAPTION) -chip(panel_w + GAP_MID / 2, conn_y - 7 - (13 * 1.25 + 6), "illustrates", - "#ffffff", "transparent", CAPTION) - -Y_SDK = Y_TOP + PANEL_H + BAND_GAP - -# ============================================================ 3. SDKs (thin full-width band) -sdk_hdr_bottom = band_header(PAD_BAND - 2, Y_SDK + 16, "icons/lucide-package.svg", VIOLET, - "SDKs", "wrap the structures · attach the shared knowledge · support authoring", - size=18) -SDK_BOTTOM = sdk_hdr_bottom + 16 -band_rect(uid("band"), 0, Y_SDK, CONTENT_W, SDK_BOTTOM - Y_SDK, VIOLET, at_front=True) - -Y_DATA = SDK_BOTTOM + BAND_GAP - -# ============================================================ 2. Data Structures -hdr_bottom = band_header(PAD_BAND - 2, Y_DATA + 18, "icons/lucide-layers.svg", TEAL, - "Data Structures", "this patient · Patient Context", size=20) -BLOCK_ROW_Y = hdr_bottom + 14 -W4 = (CONTENT_W - 2 * PAD_BAND - 3 * GAP) / 4 -d_positions = [PAD_BAND + i * (W4 + GAP) for i in range(4)] -d_specs = [ - ("icons/lucide-clipboard.svg", ["Observation"], False), - ("icons/lucide-clipboard-list.svg", ["Exam Finding", "List"], False), - ("icons/lucide-list.svg", ["Imaging Problem", "List"], False), - ("icons/healthicons-person.svg", ["Imaging Persona"], True), -] -ROW_H_DATA = max(icon_block_h(lines) for _, lines, _ in d_specs) -for xpos, (ipath, lines, filled) in zip(d_positions, d_specs): - icon_block(xpos, BLOCK_ROW_Y, W4, ROW_H_DATA, ipath, TEAL, lines, filled_icon=filled) -DATA_BLOCKS_BOTTOM = BLOCK_ROW_Y + ROW_H_DATA - -# The seam: the Foundation band's top edge runs OVERLAP px above the Data -# band's bottom edge, behind it, so the two bands interlock instead of -# stacking. Everything in the Data band clears that line. -FOUND_TOP = DATA_BLOCKS_BOTTOM + 18 -DATA_BAND_BOTTOM = FOUND_TOP + OVERLAP -band_rect(uid("band"), 0, Y_DATA, CONTENT_W, DATA_BAND_BOTTOM - Y_DATA, TEAL, at_front=True) - -# ============================================================ 1. Foundation Context (bottom) -# Built last so its rect lands behind the Data Structures band at the seam. -SEAM_CAP_Y = DATA_BAND_BOTTOM + 50 -seam_cap_bottom = SEAM_CAP_Y + 13 * 1.25 -hdr_bottom_f = band_header(PAD_BAND - 2, seam_cap_bottom + 16, "icons/lucide-book-open.svg", AMBER, - "Foundation Context", "shared, curated knowledge", size=20) -REL_Y = hdr_bottom_f + 12 -rel_bottom = chip(CONTENT_W / 2, REL_Y, "relationships", AMBER["band"], AMBER["stroke"], AMBER["text"]) -F_ROW_Y = rel_bottom + 10 -W3 = (CONTENT_W - 2 * PAD_BAND - 2 * GAP_REL) / 3 -f_positions = [PAD_BAND + i * (W3 + GAP_REL) for i in range(3)] -f_specs = [ - ("icons/lucide-tag.svg", ["Finding/diagnosis definitions"], "finding models · CDEs", False), - ("icons/healthicons-lungs.svg", ["Anatomic locations"], "anchored in RadLex", True), - ("icons/healthicons-xray.svg", ["Exam types"], "LOINC/RSNA Playbook", True), -] -ROW_H_FOUND = max(icon_block_h(lines, desc) for _, lines, desc, _ in f_specs) -for xpos, (ipath, lines, desc, filled) in zip(f_positions, f_specs): - icon_block(xpos, F_ROW_Y, W3, ROW_H_FOUND, ipath, AMBER, lines, desc=desc, filled_icon=filled) -FOUND_BLOCKS_BOTTOM = F_ROW_Y + ROW_H_FOUND - -# double-headed arrows in the two gaps between the three blocks -arrow_y = F_ROW_Y + ROW_H_FOUND / 2 -for i in range(2): - x1 = f_positions[i] + W3 + 6 - hconn(x1, x1 + GAP_REL - 12, arrow_y, AMBER["stroke"], sw=2, both=True) - -FOUND_BAND_BOTTOM = FOUND_BLOCKS_BOTTOM + PAD_BAND -band_rect(uid("band"), 0, FOUND_TOP, CONTENT_W, FOUND_BAND_BOTTOM - FOUND_TOP, AMBER, at_front=True) - -# ============================================================ the stitch, drawn over both bands -# Thin threads alternating the two bands' colors, running through the -# overlap and out either side of it, so the seam reads as stitched. -N_THREADS = 12 -margin = 62 -span = CONTENT_W - 2 * margin -SEAM = DATA_BAND_BOTTOM # the visible boundary: the Data band's lower edge -# A row of identical verticals reads as a fence, so the two colors -# interdigitate instead: every amber thread runs up out of the Foundation -# band and well into the Data Structures band, every teal thread runs down -# out of the Data band and well into the Foundation band, and they overlap -# across the seam. Each layer is threaded through the other. -for i in range(N_THREADS): - x = margin + span * i / (N_THREADS - 1) - if i % 2 == 0: - y1, y2, color = SEAM - 44, SEAM + 4, AMBER["stroke"] - else: - y1, y2, color = SEAM - 4, SEAM + 40, TEAL["stroke"] - ln = base("line", uid("thread"), x, y1, 0, y2 - y1, color, "transparent", sw=2) - ln.update({"points": [[0, 0], [0, y2 - y1]], "boundElements": None}) +def fill_rect(x: float, y: float, w: float, h: float, fill: str, rounded=False) -> dict: + """An unstroked patch of colour -- used to close the notch two rounded + bands leave where they meet, and to let a tab sit across a band edge + without that edge's stroke running through it.""" + r = base("rectangle", uid("fill"), x, y, w, h, "transparent", fill, sw=1) + r["roundness"] = {"type": 3} if rounded else None + els.append(r) + return r + + +def stroke_line(pts: list[tuple[float, float]], color: str, sw=2, opacity=100) -> dict: + """A polyline through pts (absolute coordinates), sharp corners.""" + x0, y0 = pts[0] + xs = [p[0] for p in pts] + ys = [p[1] for p in pts] + ln = base("line", uid("ln"), x0, y0, max(xs) - min(xs), max(ys) - min(ys), color, "transparent", sw=sw) + ln.update({"points": [[p[0] - x0, p[1] - y0] for p in pts], "boundElements": None, "roundness": None}) + ln["opacity"] = opacity els.append(ln) + return ln + -els.append(text(uid("seaml"), 0, SEAM_CAP_Y, - "interconnected at every finding, diagnosis, location, and exam type", - size=13, color=CAPTION, align="center", w=CONTENT_W)) +def arc_pts(cx: float, cy: float, r: float, a0: float, a1: float, n=4) -> list[tuple[float, float]]: + """Points along a circular arc, for rounding a corner of a polyline.""" + return [(cx + r * math.cos(a0 + (a1 - a0) * i / n), cy + r * math.sin(a0 + (a1 - a0) * i / n)) + for i in range(n + 1)] -save("knowledge/drafts/pillars.excalidraw") + +def plate(cx: float, y_top: float, s: str, size=13, color=CAPTION, fill="#ffffff", + stroke="transparent", pad_x=7, pad_y=3, sw=1) -> tuple[float, float]: + """An opaque label plate centered on cx with its top at y_top. Returns + (width, height).""" + w = len(s) * size * 0.58 + 2 * pad_x + h = size * 1.25 + 2 * pad_y + r = base("rectangle", uid("plate"), cx - w / 2, y_top, w, h, stroke, fill, sw=sw) + r["roundness"] = {"type": 3} + els.append(r) + els.append(text(uid("platet"), cx - w / 2 + pad_x, y_top + pad_y, s, size=size, color=color, + align="center", w=w - 2 * pad_x)) + return w, h + + +def corner_patch(y_top: float, y_bot: float, pal: dict, anchor: dict) -> None: + """Two rounded bands that meet edge to edge leave a white notch at each + end, where both corner radii curve away from the seam. Fill those notches + with the band's own colour and redraw its outer border straight, so the + stack keeps one silhouette through the seam. + + A notch is CORNER_R deep, which reaches back into the band far enough to + cover a card corner or a header icon, so the patch is restacked to sit + directly above `anchor` (its own band rectangle) instead of on top of + everything the seam is drawn after.""" + made = [ + fill_rect(-1, y_top, CORNER_R + 1, y_bot - y_top, pal["band"]), + fill_rect(CONTENT_W - CORNER_R, y_top, CORNER_R + 1, y_bot - y_top, pal["band"]), + stroke_line([(0, y_top), (0, y_bot)], pal["stroke"], sw=2), + stroke_line([(CONTENT_W, y_top), (CONTENT_W, y_bot)], pal["stroke"], sw=2), + ] + for e in reversed(made): + els.remove(e) + els.insert(els.index(anchor) + 1, e) + + +# ============================================================ seam a: named attachments +# Each link: (data card index, exit fraction along its bottom edge, +# foundation block index, which of that block's two tags, label). +# Exit fractions and tag order run left to right by target, so the six +# connectors cross each other only at clean X points and never a label. +A_LINKS = [ + (0, 0.22, 0, 0, "is a"), + (0, 0.50, 1, 0, "located at"), + (0, 0.78, 2, 0, "seen on"), + (1, 0.50, 2, 1, "of an exam type"), + (2, 0.35, 0, 1, "per definition"), + (2, 0.65, 1, 1, "per location"), +] + + +def draw_seam_a(g: dict) -> None: + size, pad_x, pad_y = 13, 7, 3 + tag_h = size * 1.25 + 2 * pad_y + y_tag_top = g["found_top"] - tag_h + y_card = g["blocks_bottom"] + + labels = {(dj, slot): lab for (_si, _sf, dj, slot, lab) in A_LINKS} + tag_cx: dict[tuple[int, int], float] = {} + for j in range(3): + w0 = len(labels[(j, 0)]) * size * 0.58 + 2 * pad_x + w1 = len(labels[(j, 1)]) * size * 0.58 + 2 * pad_x + total = w0 + w1 + 12 + cx = g["f_positions"][j] + g["W3"] / 2 + tag_cx[(j, 0)] = cx - total / 2 + w0 / 2 + tag_cx[(j, 1)] = cx + total / 2 - w1 / 2 + + # connectors first, so each tag paints over the end of its own line + for (si, sf, dj, slot, _lab) in A_LINKS: + x1 = g["d_positions"][si] + g["W4"] * sf + stroke_line([(x1, y_card), (tag_cx[(dj, slot)], y_tag_top)], TEAL["stroke"], sw=1, opacity=75) + for key, lab in labels.items(): + plate(tag_cx[key], y_tag_top, lab, size=size, color=AMBER["text"], + stroke=AMBER["stroke"], pad_x=pad_x, pad_y=pad_y) + + els.append(text(uid("seaml"), 0, g["found_top"] + 13, + "interconnected at every finding, diagnosis, location, and exam type", + size=13, color=CAPTION, align="center", w=CONTENT_W)) + + +# ============================================================ seam b: dovetail +B_WORDS = ["finding", "diagnosis", "location", "exam type"] +B_TAB_W = 120.0 +B_TAB_D = 34.0 +B_TAB_R = 11.0 +B_LEAD = "woven together at every:" +B_RIGHT_MARGIN = 60.0 # amber left clear to the right of the last tab + + +def draw_seam_b(g: dict) -> None: + seam = g["found_top"] # the two bands are flush here + corner_patch(seam - CORNER_R, seam, TEAL, g["teal_band"]) + corner_patch(seam, seam + CORNER_R, AMBER, g["amber_band"]) + stroke_line([(0, seam), (CONTENT_W, seam)], TEAL["stroke"], sw=2) + + lead_w = len(B_LEAD) * 13 * 0.58 + x0 = PAD_BAND + lead_w + 22 + span = CONTENT_W - B_RIGHT_MARGIN - x0 + step = (span - B_TAB_W) / (len(B_WORDS) - 1) + els.append(text(uid("bl"), PAD_BAND, seam + (B_TAB_D - 13 * 1.25) / 2, B_LEAD, + size=13, color=AMBER["mid"])) + + for i, word in enumerate(B_WORDS): + x = x0 + i * step + # the tab's fill runs up past the seam, so the band edge's stroke stops + # at the tab: what is left reads as a slot cut into the Foundation band. + fill_rect(x, seam - 12, B_TAB_W, B_TAB_D + 12, TEAL["band"], rounded=True) + pts = [(x, seam - 7)] + pts += arc_pts(x + B_TAB_R, seam + B_TAB_D - B_TAB_R, B_TAB_R, math.pi, math.pi / 2) + pts += arc_pts(x + B_TAB_W - B_TAB_R, seam + B_TAB_D - B_TAB_R, B_TAB_R, math.pi / 2, 0.0) + pts += [(x + B_TAB_W, seam - 7)] + stroke_line(pts, TEAL["stroke"], sw=2) + els.append(text(uid("bw"), x, seam + (B_TAB_D - 13 * 1.25) / 2, word, + size=13, color=TEAL["text"], align="center", w=B_TAB_W)) + + +# ============================================================ seam c: shared membrane +C_WORDS = ["finding", "diagnosis", "location", "exam type"] +C_H = 64.0 +C_TITLE = "attachment points" +C_PILL_H = 28.0 +C_TICK = 9.0 + + +def draw_seam_c(g: dict) -> None: + top = g["data_band_bottom"] + bot = g["found_top"] + corner_patch(top - CORNER_R, top, TEAL, g["teal_band"]) + corner_patch(bot, bot + CORNER_R, AMBER, g["amber_band"]) + + # membrane ground, then a fine two-colour hatch clipped to it + fill_rect(0, top, CONTENT_W, bot - top, "#ffffff") + step, i, c = 16.0, 0, top - CONTENT_W + while c < bot: + x1, x2 = max(0.0, top - c), min(CONTENT_W, bot - c) + if x2 - x1 > 1: + stroke_line([(x1, x1 + c), (x2, x2 + c)], + TEAL["stroke"] if i % 2 == 0 else AMBER["stroke"], sw=1, opacity=25) + c += step + i += 1 + stroke_line([(0, top), (CONTENT_W, top)], TEAL["stroke"], sw=2) + stroke_line([(0, bot), (CONTENT_W, bot)], AMBER["stroke"], sw=2) + stroke_line([(0, top), (0, bot)], CAPTION, sw=1, opacity=55) + stroke_line([(CONTENT_W, top), (CONTENT_W, bot)], CAPTION, sw=1, opacity=55) + + pill_top = top + (C_H - C_PILL_H) / 2 + tw, _ = plate(PAD_BAND + len(C_TITLE) * 13 * 0.58 / 2 + 7, pill_top + (C_PILL_H - (13 * 1.25 + 6)) / 2, + C_TITLE, size=13, color=CAPTION) + x0 = PAD_BAND + tw + 20 + widths = [len(w) * 13 * 0.58 + 28 for w in C_WORDS] + span = CONTENT_W - PAD_BAND - x0 + gap = (span - sum(widths)) / (len(C_WORDS) - 1) + x = x0 + for word, w in zip(C_WORDS, widths): + cx = x + w / 2 + stroke_line([(cx, top - C_TICK), (cx, pill_top)], TEAL["stroke"], sw=2) + stroke_line([(cx, pill_top + C_PILL_H), (cx, bot + C_TICK)], AMBER["stroke"], sw=2) + r = base("rectangle", uid("pill"), x, pill_top, w, C_PILL_H, CAPTION, "#ffffff", sw=1) + r["roundness"] = {"type": 3} + els.append(r) + els.append(text(uid("pillt"), x, pill_top + (C_PILL_H - 13 * 1.25) / 2, word, + size=13, color="#334155", align="center", w=w)) + x += w + gap + + +SEAMS = { + "a": {"pad_below_blocks": PAD_BAND, "band_gap": 60.0, "found_top_pad": 46.0, "draw": draw_seam_a}, + "b": {"pad_below_blocks": PAD_BAND, "band_gap": 0.0, "found_top_pad": B_TAB_D + 18, "draw": draw_seam_b}, + "c": {"pad_below_blocks": PAD_BAND, "band_gap": C_H, "found_top_pad": 20.0, "draw": draw_seam_c}, +} + + +# ============================================================ the stack +def build(seam_key: str, out_path: str) -> str: + seam = SEAMS[seam_key] + + # ---------------------------------------- 5/4. Use Cases | Sample Applications + Y_TOP = 0 + GAP_MID = 104 # wide enough for "illustrates" to sit clear of both panels + PANEL_PAD = 14 + PANEL_INSET = PAD_BAND - 2 # same left inset as the full-width band headers + PANEL_TITLE = 18 + PANEL_H = PANEL_PAD + PANEL_TITLE * 1.3 + 13 * 1.25 + PANEL_PAD + panel_w = (CONTENT_W - GAP_MID) / 2 + + band_rect(uid("panel"), 0, Y_TOP, panel_w, PANEL_H, ROSE) + band_rect(uid("panel"), panel_w + GAP_MID, Y_TOP, panel_w, PANEL_H, GREEN) + band_header(PANEL_INSET, Y_TOP + PANEL_PAD, "icons/lucide-lightbulb.svg", ROSE, + "Use Cases", "what the project wants built", size=PANEL_TITLE) + band_header(panel_w + GAP_MID + PANEL_INSET, Y_TOP + PANEL_PAD, "icons/lucide-app-window.svg", GREEN, + "Sample Applications", "what has been built", size=PANEL_TITLE) + conn_y = Y_TOP + PANEL_H / 2 + hconn(panel_w + 2, panel_w + GAP_MID - 2, conn_y, CAPTION) + chip(panel_w + GAP_MID / 2, conn_y - 7 - (13 * 1.25 + 6), "illustrates", + "#ffffff", "transparent", CAPTION) + + # ---------------------------------------- 3. SDKs (thin full-width band) + Y_SDK = Y_TOP + PANEL_H + BAND_GAP + sdk_hdr_bottom = band_header(PAD_BAND - 2, Y_SDK + 16, "icons/lucide-package.svg", VIOLET, + "SDKs", "wrap the structures · attach the shared knowledge · support authoring", + size=18) + SDK_BOTTOM = sdk_hdr_bottom + 16 + band_rect(uid("band"), 0, Y_SDK, CONTENT_W, SDK_BOTTOM - Y_SDK, VIOLET, at_front=True) + + # ---------------------------------------- 2. Data Structures + Y_DATA = SDK_BOTTOM + BAND_GAP + hdr_bottom = band_header(PAD_BAND - 2, Y_DATA + 18, "icons/lucide-layers.svg", TEAL, + "Data Structures", "this patient · Patient Context", size=20) + BLOCK_ROW_Y = hdr_bottom + 14 + W4 = (CONTENT_W - 2 * PAD_BAND - 3 * GAP) / 4 + d_positions = [PAD_BAND + i * (W4 + GAP) for i in range(4)] + d_specs = [ + ("icons/lucide-clipboard.svg", ["Observation"], False), + ("icons/lucide-clipboard-list.svg", ["Exam Finding", "List"], False), + ("icons/lucide-list.svg", ["Imaging Problem", "List"], False), + ("icons/healthicons-person.svg", ["Imaging Persona"], True), + ] + ROW_H_DATA = max(icon_block_h(lines) for _, lines, _ in d_specs) + for xpos, (ipath, lines, filled) in zip(d_positions, d_specs): + icon_block(xpos, BLOCK_ROW_Y, W4, ROW_H_DATA, ipath, TEAL, lines, filled_icon=filled) + DATA_BLOCKS_BOTTOM = BLOCK_ROW_Y + ROW_H_DATA + + DATA_BAND_BOTTOM = DATA_BLOCKS_BOTTOM + seam["pad_below_blocks"] + teal_band = band_rect(uid("band"), 0, Y_DATA, CONTENT_W, DATA_BAND_BOTTOM - Y_DATA, TEAL, at_front=True) + + # ---------------------------------------- 1. Foundation Context (bottom) + # Built last so its rect lands behind the Data Structures band at the seam. + FOUND_TOP = DATA_BAND_BOTTOM + seam["band_gap"] + hdr_bottom_f = band_header(PAD_BAND - 2, FOUND_TOP + seam["found_top_pad"], + "icons/lucide-book-open.svg", AMBER, + "Foundation Context", "shared, curated knowledge", size=20) + REL_Y = hdr_bottom_f + 12 + rel_bottom = chip(CONTENT_W / 2, REL_Y, "relationships", AMBER["band"], AMBER["stroke"], AMBER["text"]) + F_ROW_Y = rel_bottom + 10 + W3 = (CONTENT_W - 2 * PAD_BAND - 2 * GAP_REL) / 3 + f_positions = [PAD_BAND + i * (W3 + GAP_REL) for i in range(3)] + f_specs = [ + ("icons/lucide-tag.svg", ["Finding/diagnosis definitions"], "finding models · CDEs", False), + ("icons/healthicons-lungs.svg", ["Anatomic locations"], "anchored in RadLex", True), + ("icons/healthicons-xray.svg", ["Exam types"], "LOINC/RSNA Playbook", True), + ] + ROW_H_FOUND = max(icon_block_h(lines, desc) for _, lines, desc, _ in f_specs) + for xpos, (ipath, lines, desc, filled) in zip(f_positions, f_specs): + icon_block(xpos, F_ROW_Y, W3, ROW_H_FOUND, ipath, AMBER, lines, desc=desc, filled_icon=filled) + FOUND_BLOCKS_BOTTOM = F_ROW_Y + ROW_H_FOUND + + arrow_y = F_ROW_Y + ROW_H_FOUND / 2 + for i in range(2): + x1 = f_positions[i] + W3 + 6 + hconn(x1, x1 + GAP_REL - 12, arrow_y, AMBER["stroke"], sw=2, both=True) + + FOUND_BAND_BOTTOM = FOUND_BLOCKS_BOTTOM + PAD_BAND + amber_band = band_rect(uid("band"), 0, FOUND_TOP, CONTENT_W, FOUND_BAND_BOTTOM - FOUND_TOP, AMBER, at_front=True) + + # ---------------------------------------- the seam, drawn over both bands + seam["draw"]({ + "blocks_bottom": DATA_BLOCKS_BOTTOM, + "data_band_bottom": DATA_BAND_BOTTOM, + "found_top": FOUND_TOP, + "d_positions": d_positions, "W4": W4, + "f_positions": f_positions, "W3": W3, + "teal_band": teal_band, "amber_band": amber_band, + }) + + return save(out_path) + + +def main() -> None: + ap = argparse.ArgumentParser(description=__doc__.split("\n")[0]) + ap.add_argument("--seam", choices=sorted(SEAMS), required=True, + help="which Data/Foundation seam to draw: a=named attachments, " + "b=dovetail, c=shared membrane") + ap.add_argument("--out", default=None, + help="output path relative to the repo root " + "(default knowledge/drafts/pillars-.excalidraw)") + args = ap.parse_args() + build(args.seam, args.out or f"knowledge/drafts/pillars-{args.seam}.excalidraw") + + +if __name__ == "__main__": + main() diff --git a/tools/diagrams/build_three_axes.py b/tools/diagrams/build_three_axes.py index e24e107..1553072 100644 --- a/tools/diagrams/build_three_axes.py +++ b/tools/diagrams/build_three_axes.py @@ -3,24 +3,99 @@ A smaller companion to build_pillars.py, zoomed into the Foundation Context (AMBER) pillar of that stack: the three axes shared knowledge is -organized along -- finding/diagnosis, anatomic location, exam type -- each -a curated layer over an existing external standard. Same AMBER palette and -same icon files as the main stack diagram (from excalib.py / icons/), so -the two figures read as one family. +organized along -- findings/diagnoses, anatomic locations, exam types -- +each a curated layer over an existing external standard, and each with a +hierarchy of its own. Same AMBER palette and same icon files as the main +stack diagram (from excalib.py / icons/), so the two figures read as one +family. Icons: Lucide (tag), Health Icons (lungs, x-ray). -Landscape, three columns: +Landscape, three independent columns -- nothing joins them in this +figure, by design. Each column carries: - icon, title, a short "WHAT/WHERE/HOW" tagline - - a small darker block at the bottom of each column: "layered over: " - - two double-headed "relationships" connectors between the columns - - one caption underneath summarizing the pattern + - stacked labelled sections: a full-width band naming the section, + then that section's example tree indented TREE_INDENT from the + column's inner edge + - a small darker block at the bottom: "layered over: " +The figure ends at the bottom of the columns; there is no caption. -Output: knowledge/drafts/three-axes.excalidraw; render with render_excalidraw.py. +All three columns share the band grammar, so they read as one figure: +the findings column bands the next-generation CDE schema's node kinds +(Findings, Diagnoses, Assessments, Data Elements, Measurements), the +anatomy column bands body regions, and the exam column bands modalities. +Each band restarts the connector bookkeeping, so a section's tree never +links back into the section above it. + +Tree rows come in three kinds. A "band" is the section header. A "node" +is a concept in the hierarchy, drawn with real line connectors rather +than box-drawing characters so the indentation is exact in a +proportional font. An "ann" is a muted annotation hanging off the node +above it -- a value set, or the unit family a measurement kind implies. +It is half-indented and takes no connector, because it is not a child +concept. A measurement names the KIND of quantity; the units follow from +the kind, so "length" is annotated "mm, cm, ..." rather than one unit. + +The columns are the same height and their "layered over" blocks line up. +A column with fewer rows spreads them toward ROW_H_MAX so the leading +stays close across columns; whatever space is still left over falls +above that column's bottom block, because every column's first band must +start on the same line. + +Text widths below were measured in headless Chromium at the render font +(`Helvetica, Segoe UI Emoji`), per tools/diagrams/README.md. They place +the muted suffix after a root label and let the build assert that no row +overflows its column, neither of which can be estimated. CONTENT_W is +set by the widest single row (the `presence` value set) plus the margins. + +Exam type names are real LOINC/RSNA Playbook LongCommonName values, +checked against ~/exam-types/sources/LoincRsnaRadiologyPlaybook.xlsx -- +note the capital V in "XR Knee 2 Views", that the thyroid entry is "US +Thyroid gland" rather than "US Thyroid", and that the Playbook has no +"XR Chest Portable" (its portable names all begin "Portable XR ..."), so +the second XR Chest child here is "XR Chest PA and Lateral". A family +root such as "XR Chest" is a preferred-name family, not itself an entry. + +Output: knowledge/drafts/three-axes.excalidraw; render with +render_excalidraw.py at `--width 1010 --scale 1`. """ -from excalib import els, base, text, image, arrow, boxed_label, save, AMBER, CAPTION +from excalib import els, base, text, image, save, AMBER -CONTENT_W = 860 ICON = 36 +ROOT_SIZE = 14 +CHILD_SIZE = 13 +BAND_SIZE = 13 +BAND_FILL = "#fcd34d" # one step darker than the column's block fill + +W14 = { + "pulmonary nodule": 111.3, "pulmonary neoplasm": 130.0, "Lung-RADS": 74.7, + "Salter-Harris category": 136.2, "presence": 57.6, "severity": 48.2, + "length": 38.1, "CT density": 66.9, + "lung": 26.5, "pleural space": 83.3, "mediastinum": 79.4, "kidney": 40.5, + "liver": 25.7, "spleen": 41.3, "brain": 31.1, "orbit": 27.2, + "urinary bladder": 93.4, "prostate": 50.6, + "CT Chest": 59.1, "MR Knee": 58.4, "MR Brain": 58.3, "XR Knee": 56.0, + "XR Chest": 59.9, "US Abdomen": 83.3, "US Thyroid gland": 108.2, +} +W13 = { + "solid": 26.7, "part-solid": 53.5, "non-solid": 52.8, + "non-small cell lung cancer": 150.3, "adenocarcinoma of the lung": 160.4, + "present · absent · indeterminate · unknown": 247.9, + "minimal · mild · moderate · severe": 197.2, "mm, cm, ...": 64.3, "HU": 18.8, + "right lung": 53.5, "left lung": 45.5, "heart": 29.6, + "upper lobe of right lung": 133.0, "middle lobe of right lung": 138.0, + "lower lobe of right lung": 130.8, "left kidney": 58.5, "right kidney": 66.5, + "renal pelvis": 65.8, "cerebellum": 63.6, "frontal lobe": 64.3, + "CT Chest WO contrast": 130.7, "CT Chest W contrast IV": 136.5, + "CT Chest WO and W contrast IV": 187.8, "CT Lung parenchyma WO contrast": 200.9, + "CTA Chest vessels": 109.6, "MR Knee WO contrast": 130.0, + "MR Knee W contrast IV": 135.8, "MR Brain WO contrast": 130.0, + "MR Brain WO and W contrast IV": 187.1, "XR Knee 2 Views": 100.9, + "XR Knee 3 Views": 100.9, "XR Chest 2 Views": 104.5, + "XR Chest PA and Lateral": 144.3, "US Abdomen limited": 118.5, + "US Abdomen RUQ": 109.8, "(preferred family)": 99.0, + "each a LOINC/RSNA Playbook entry": 211.7, +} + _uid = [0] @@ -29,78 +104,293 @@ def uid(prefix: str) -> str: return f"{prefix}{_uid[0]}" -def axis_column(id_: str, x: float, y: float, w: float, h: float, icon_path: str, - title_lines: list[str], max_title_lines: int, tagline: str, - desc_lines: list[str], block_h: float) -> None: - r = base("rectangle", id_, x, y, w, h, AMBER["stroke"], AMBER["block"], sw=2) +def rule(x: float, y: float, w: float) -> None: + ln = base("line", uid("rule"), x, y, w, 0, AMBER["stroke"], "transparent", sw=1) + ln.update({"points": [[0, 0], [w, 0]], "boundElements": None, "opacity": 35}) + els.append(ln) + + +def connector(x1: float, y1: float, x2: float, y2: float) -> None: + ln = base("line", uid("tc"), x1, y1, x2 - x1, y2 - y1, AMBER["stroke"], "transparent", sw=1) + ln.update({"points": [[0, 0], [x2 - x1, y2 - y1]], "boundElements": None, "opacity": 45}) + els.append(ln) + + +# ------------------------------------------------------------------ tree +INDENT = 18 +ANN_INDENT = 8 # half a step: an annotation is not a child concept +ROW_H = 19 +ROW_H_MAX = 23 # a shorter column spreads its rows to fill the region, + # but only this far: leading that differs much more than + # this between columns stops reading as one figure +BAND_H = 20 +BAND_PAD_X = 10 +BAND_GAP_ABOVE = 12 +BAND_GAP_BELOW = 6 + +Row = tuple[str, int, str, "str | None", float] + + +def row_width(kind: str, depth: int, label: str, suffix: str | None, _gap: float = 0) -> float: + """Rendered width of a row. A band spans the column, so it constrains nothing.""" + if kind == "band": + return 0.0 + if kind == "ann": + return depth * INDENT + ANN_INDENT + W13[label] + w = depth * INDENT + (W14[label] if depth == 0 else W13[label]) + return w + (7 + W13[suffix] if suffix else 0) + + +def tree_fixed_h(rows: list[Row]) -> float: + """Height of everything in a tree that does not stretch: bands and gaps.""" + return sum((BAND_GAP_ABOVE if i else 0) + BAND_H + BAND_GAP_BELOW if k == "band" else g + for i, (k, _d, _l, _s, g) in enumerate(rows)) + + +def n_rows(rows: list[Row]) -> int: + return sum(1 for r in rows if r[0] != "band") + + +def tree(x: float, y: float, rows: list[Row], row_h: float, band_x: float, band_w: float) -> float: + """Draw the banded sections of one column; returns the y it ends at. + + x is the tree's own left edge (indented from band_x); bands are drawn + full width from band_x. Connectors are lines, not characters: a + vertical dropping from just under the parent's label to the child + row's center at the parent's connector column, and a short horizontal + stub into the child label. + """ + centers: dict[int, float] = {} + cy = y + for i, (kind, depth, label, suffix, gap) in enumerate(rows): + if kind == "band": + if i: + cy += BAND_GAP_ABOVE + b = base("rectangle", uid("tb"), band_x, cy, band_w, BAND_H, + "transparent", BAND_FILL, sw=1) + b["roundness"] = {"type": 3} + els.append(b) + els.append(text(uid("tbt"), band_x + BAND_PAD_X, + cy + (BAND_H - BAND_SIZE * 1.25) / 2, label, + size=BAND_SIZE, color=AMBER["text"])) + cy += BAND_H + BAND_GAP_BELOW + centers.clear() # a new section starts its own hierarchy + continue + + cy += gap + row_h / 2 + if kind == "ann": + els.append(text(uid("ta"), x + depth * INDENT + ANN_INDENT, + cy - CHILD_SIZE * 1.25 / 2, label, + size=CHILD_SIZE, color=AMBER["mid"])) + cy += row_h / 2 + continue + + size = ROOT_SIZE if depth == 0 else CHILD_SIZE + color = AMBER["text"] if depth == 0 else AMBER["stroke"] + tx = x + depth * INDENT + if depth > 0: + col_x = x + (depth - 1) * INDENT + 7 + # start below the parent's text, not at its center, or the + # vertical strikes through the parent label's first glyph + connector(col_x, centers[depth - 1] + 10, col_x, cy) + connector(col_x, cy, tx - 4, cy) + els.append(text(uid("tn"), tx, cy - size * 1.25 / 2, label, size=size, color=color)) + if suffix: + els.append(text(uid("tns"), tx + W14[label] + 7, cy - CHILD_SIZE * 1.25 / 2, + suffix, size=CHILD_SIZE, color=AMBER["mid"])) + centers[depth] = cy + cy += row_h / 2 + return cy + + +# ---------------------------------------------------------------- column +MARGIN = 18 # column inner margin: nothing sits against the border +TREE_INDENT = 16 # trees hang this far inside the band's left edge +PAD_TOP = 16 +PAD_BOTTOM = 16 +TITLE_SIZE = 17 +TAG_SIZE = 14 +NOTE_SIZE = 13 +BLOCK_H = 8 + 2 * NOTE_SIZE * 1.25 + 8 +NOTE_GAP = 20 +TREE_BLOCK_GAP = 18 + +ICON_Y = PAD_TOP +TITLE_Y = ICON_Y + ICON + 9 +TAG_Y = TITLE_Y + TITLE_SIZE * 1.25 + 5 +RULE_Y = TAG_Y + TAG_SIZE * 1.25 + 11 +TREE_TOP = RULE_Y + 12 + + +def notes_h(notes: list[str]) -> float: + return NOTE_GAP + len(notes) * NOTE_SIZE * 1.25 if notes else 0.0 + + +def column_group_h(rows: list[Row], notes: list[str], row_h: float = ROW_H) -> float: + return tree_fixed_h(rows) + n_rows(rows) * row_h + notes_h(notes) + + +def fitted_row_h(rows: list[Row], notes: list[str], region_h: float) -> float: + """Spread a short column's rows to fill the shared region, up to a cap, + so a column with fewer rows does not sit in a hole.""" + spare = region_h - notes_h(notes) - tree_fixed_h(rows) + return max(ROW_H, min(ROW_H_MAX, spare / n_rows(rows))) + + +def axis_column(x: float, y: float, w: float, region_h: float, icon_path: str, title: str, + tagline: str, rows: list[Row], notes: list[str], desc_lines: list[str]) -> None: + r = base("rectangle", uid("col"), x, y, w, COL_H, AMBER["stroke"], AMBER["block"], sw=2) r["roundness"] = {"type": 3} els.append(r) cx = x + w / 2 - top = y + 44 - image(uid("coli"), cx - ICON / 2, top, ICON, ICON, icon_path, color=AMBER["stroke"]) - - ty = top + ICON + 10 - for ln in title_lines: - els.append(text(uid("colt"), x + 8, ty, ln, size=17, color=AMBER["text"], align="center", w=w - 16)) - ty += 17 * 1.25 - # tagline sits at a height fixed by the row's max title-line count, not - # this column's own count, so every column's tagline lines up even when - # one title wraps to more lines than another. - tag_y = top + ICON + 10 + max_title_lines * 17 * 1.25 + 10 - els.append(text(uid("coltag"), x + 8, tag_y, tagline, size=14, color=AMBER["mid"], align="center", w=w - 16)) - - # small darker block, bottom-anchored, uniform height across the row - block_w = w - 24 - block_x = x + 12 - block_y = y + h - 38 - block_h - rb = base("rectangle", uid("colblk"), block_x, block_y, block_w, block_h, AMBER["text"], AMBER["stroke"], sw=1) + image(uid("coli"), cx - ICON / 2, y + ICON_Y, ICON, ICON, icon_path, color=AMBER["stroke"]) + els.append(text(uid("colt"), x + 8, y + TITLE_Y, title, size=TITLE_SIZE, + color=AMBER["text"], align="center", w=w - 16)) + els.append(text(uid("coltag"), x + 8, y + TAG_Y, tagline, size=TAG_SIZE, + color=AMBER["mid"], align="center", w=w - 16)) + rule(x + MARGIN, y + RULE_Y, w - 2 * MARGIN) # same span as the bands + + band_x, band_w = x + MARGIN, w - 2 * MARGIN + row_h = fitted_row_h(rows, notes, region_h) + # top-aligned, not centered: the first band of every column then sits + # on the same line just under the rule, which is what makes the three + # read as one figure. Leftover space falls above the bottom block. + top = y + TREE_TOP + tree_bottom = tree(band_x + TREE_INDENT, top, rows, row_h, band_x, band_w) + + ny = tree_bottom + NOTE_GAP + for ln in notes: + els.append(text(uid("coln"), band_x, ny, ln, size=NOTE_SIZE, color=AMBER["mid"])) + ny += NOTE_SIZE * 1.25 + + rb = base("rectangle", uid("colblk"), band_x, y + BLOCK_Y, band_w, BLOCK_H, + AMBER["text"], AMBER["stroke"], sw=1) rb["roundness"] = {"type": 3} els.append(rb) - by = block_y + (block_h - len(desc_lines) * 13 * 1.25) / 2 + 2 + by = y + BLOCK_Y + (BLOCK_H - len(desc_lines) * NOTE_SIZE * 1.25) / 2 + 2 for ln in desc_lines: - els.append(text(uid("colblkt"), block_x + 6, by, ln, size=13, color="#fef3c7", align="center", w=block_w - 12)) - by += 13 * 1.25 + els.append(text(uid("colblkt"), band_x + 6, by, ln, size=NOTE_SIZE, + color="#fef3c7", align="center", w=band_w - 12)) + by += NOTE_SIZE * 1.25 -# ---------------------------------------------------------------- layout -GAP_COL = 56 -COL_W = (CONTENT_W - 2 * GAP_COL) / 3 -MAX_TITLE_LINES = 2 -BLOCK_H = 8 + 2 * 13 * 1.25 + 8 # tallest "layered over" block is 2 lines +# ---------------------------------------------------------------- content +FINDINGS: list[Row] = [ + ("band", 0, "Findings", None, 0), + ("node", 0, "pulmonary nodule", None, 0), + ("node", 1, "solid", None, 0), + ("node", 1, "part-solid", None, 0), + ("node", 1, "non-solid", None, 0), + ("band", 0, "Diagnoses", None, 0), + ("node", 0, "pulmonary neoplasm", None, 0), + ("node", 1, "non-small cell lung cancer", None, 0), + ("node", 2, "adenocarcinoma of the lung", None, 0), + ("band", 0, "Assessments", None, 0), + ("node", 0, "Lung-RADS", None, 0), + ("node", 0, "Salter-Harris category", None, 0), + ("band", 0, "Data Elements", None, 0), + ("node", 0, "presence", None, 0), + ("ann", 0, "present · absent · indeterminate · unknown", None, 0), + ("node", 0, "severity", None, 0), + ("ann", 0, "minimal · mild · moderate · severe", None, 0), + # a measurement names the KIND of quantity; the unit family follows + ("band", 0, "Measurements", None, 0), + ("node", 0, "length", None, 0), + ("ann", 0, "mm, cm, ...", None, 0), + ("node", 0, "CT density", None, 0), + ("ann", 0, "HU", None, 0), +] -COL_H = (44 + ICON + 10 + MAX_TITLE_LINES * 17 * 1.25 + 10 + 14 * 1.25 + 34 + BLOCK_H + 38) +ANATOMY: list[Row] = [ + ("band", 0, "thorax", None, 0), + ("node", 0, "lung", None, 0), + ("node", 1, "right lung", None, 0), + ("node", 2, "upper lobe of right lung", None, 0), + ("node", 2, "middle lobe of right lung", None, 0), + ("node", 2, "lower lobe of right lung", None, 0), + ("node", 1, "left lung", None, 0), + ("node", 0, "pleural space", None, 0), + ("node", 0, "mediastinum", None, 0), + ("node", 1, "heart", None, 0), + ("band", 0, "abdomen", None, 0), + ("node", 0, "kidney", None, 0), + ("node", 1, "left kidney", None, 0), + ("node", 1, "right kidney", None, 0), + ("node", 2, "renal pelvis", None, 0), + ("node", 0, "liver", None, 0), + ("node", 0, "spleen", None, 0), + ("band", 0, "head", None, 0), + ("node", 0, "brain", None, 0), + ("node", 1, "cerebellum", None, 0), + ("node", 1, "frontal lobe", None, 0), + ("node", 0, "orbit", None, 0), + ("band", 0, "pelvis", None, 0), + ("node", 0, "urinary bladder", None, 0), + ("node", 0, "prostate", None, 0), +] + +EXAMS: list[Row] = [ + ("band", 0, "CT", None, 0), + ("node", 0, "CT Chest", "(preferred family)", 0), + ("node", 1, "CT Chest WO contrast", None, 0), + ("node", 1, "CT Chest W contrast IV", None, 0), + ("node", 1, "CT Chest WO and W contrast IV", None, 0), + ("node", 1, "CT Lung parenchyma WO contrast", None, 0), + ("node", 1, "CTA Chest vessels", None, 0), + ("band", 0, "MR", None, 0), + ("node", 0, "MR Knee", "(preferred family)", 0), + ("node", 1, "MR Knee WO contrast", None, 0), + ("node", 1, "MR Knee W contrast IV", None, 0), + ("node", 0, "MR Brain", "(preferred family)", 6), + ("node", 1, "MR Brain WO contrast", None, 0), + ("node", 1, "MR Brain WO and W contrast IV", None, 0), + ("band", 0, "XR", None, 0), + ("node", 0, "XR Knee", "(preferred family)", 0), + ("node", 1, "XR Knee 2 Views", None, 0), + ("node", 1, "XR Knee 3 Views", None, 0), + ("node", 0, "XR Chest", "(preferred family)", 6), + ("node", 1, "XR Chest 2 Views", None, 0), + ("node", 1, "XR Chest PA and Lateral", None, 0), + ("band", 0, "US", None, 0), + ("node", 0, "US Abdomen", "(preferred family)", 0), + ("node", 1, "US Abdomen limited", None, 0), + ("node", 1, "US Abdomen RUQ", None, 0), + ("node", 0, "US Thyroid gland", None, 6), +] -Y0 = 66 specs = [ - ("axis1", 0, "icons/lucide-tag.svg", ["Finding/diagnosis", "definitions"], "WHAT was found", + ("icons/lucide-tag.svg", "Findings/Diagnoses", "WHAT was found", FINDINGS, [], ["layered over: finding models", "· ACR/RSNA CDEs"]), - ("axis2", COL_W + GAP_COL, "icons/healthicons-lungs.svg", ["Anatomic locations"], "WHERE it is", + ("icons/healthicons-lungs.svg", "Anatomic Locations", "WHERE it is", ANATOMY, [], ["layered over: RadLex"]), - ("axis3", 2 * (COL_W + GAP_COL), "icons/healthicons-xray.svg", ["Exam types"], "HOW it was seen", - ["layered over: LOINC/RSNA", "Playbook"]), + ("icons/healthicons-xray.svg", "Exam Types", "HOW it was seen", EXAMS, + ["each a LOINC/RSNA Playbook entry"], ["layered over: LOINC/RSNA", "Playbook"]), ] -for cid, xpos, ipath, title_lines, tagline, desc_lines in specs: - axis_column(cid, xpos, Y0, COL_W, COL_H, ipath, title_lines, MAX_TITLE_LINES, tagline, desc_lines, BLOCK_H) -# two double-headed "relationships" connectors between the columns -- short -# (8px clearance from each panel edge, not touching them), with the label -# on its own white box centered above the arrow (6px clearance) so it never -# sits on top of the arrowheads. -arrow_y = Y0 + COL_H / 2 -gap1_l, gap1_r = COL_W, COL_W + GAP_COL -gap2_l, gap2_r = 2 * COL_W + GAP_COL, 2 * (COL_W + GAP_COL) +# ---------------------------------------------------------------- layout +GAP_COL = 20 +CUSHION = 8 # clear space between the longest row and the band's right edge +COL_W = 316 # 2*MARGIN + TREE_INDENT + widest row (255.9) + CUSHION +CONTENT_W = 3 * COL_W + 2 * GAP_COL +Y0 = 0 -arrow(uid("rel"), "axis1", "right", "axis2", "left", color=AMBER["stroke"], both=True, sw=1.5, inset=8) -boxed_label(uid("rellbl"), (gap1_l + gap1_r) / 2, arrow_y - 6, "relationships", size=13, color=CAPTION) +# The widest row sets the column width. A row must end inside the band +# above it, not merely inside the column, or it reads as an overflow -- +# so assert that here rather than discovering it in the render. +_fits = COL_W - 2 * MARGIN - TREE_INDENT - CUSHION +_widest = max((row_width(*r), r[2]) for _i, _t, _g, rows, _n, _d in specs for r in rows) +assert _widest[0] <= _fits, f"row {_widest[1]!r} ({_widest[0]}) exceeds {_fits}" -arrow(uid("rel"), "axis2", "right", "axis3", "left", color=AMBER["stroke"], both=True, sw=1.5, inset=8) -boxed_label(uid("rellbl"), (gap2_l + gap2_r) / 2, arrow_y - 6, "relationships", size=13, color=CAPTION) +REGION_H = max(column_group_h(rows, notes) for _i, _t, _g, rows, notes, _d in specs) +COL_H = TREE_TOP + REGION_H + TREE_BLOCK_GAP + BLOCK_H + PAD_BOTTOM +BLOCK_Y = COL_H - PAD_BOTTOM - BLOCK_H -# caption underneath all three columns -CAP_Y = Y0 + COL_H + 56 -els.append(text(uid("cap"), 0, CAP_Y, - "each a curated layer over an existing standard; the axes relate to each other and cite external references", - size=13, color=CAPTION, align="center", w=CONTENT_W)) +for i, (ipath, title, tagline, rows, notes, desc_lines) in enumerate(specs): + axis_column(i * (COL_W + GAP_COL), Y0, COL_W, REGION_H, ipath, title, tagline, + rows, notes, desc_lines) save("knowledge/drafts/three-axes.excalidraw") +print(f"figure {CONTENT_W}x{COL_H} region {REGION_H} widest row {_widest[1]!r} {_widest[0]}") +for _i, t, _g, rows, notes, _d in specs: + print(f" {t}: {n_rows(rows)} rows, row_h {fitted_row_h(rows, notes, REGION_H):.1f}") diff --git a/tools/diagrams/build_two_collections.py b/tools/diagrams/build_two_collections.py new file mode 100644 index 0000000..1168ab4 --- /dev/null +++ b/tools/diagrams/build_two_collections.py @@ -0,0 +1,240 @@ +#!/usr/bin/env python3 +"""Build the "one kind of content, two collections" figure for the Finding +Models and Common Data Elements hub page. + +Finding/diagnosis definitions are one kind of content held in two collections +that differ only in how they are released. The figure says that three times +over: the two panels carry the same green as the finding/diagnosis definition +nodes in build_two_planes.py (excalib's FINDING palette, via FIND below), the +band between them reads as a beta-to-release gradient, and the amber band +underneath is the one schema both are moving onto. + + +--------------------------+ ~~~~~~~ +--------------------------+ GREEN + | (tag) Open Imaging | graduate | (tag) ACR/RSNA Common | + | Finding Models | ------> | Data Elements | + | inclusive . beta ... | [gradient]| well-reviewed . release | + | [hydronephrosis][renal] | <------ | [abdominal aortic an.] | + | [pulm nodule]---+-- index --+->[pulm nodule] | + +--------------------------+ codes +--------------------------+ + | moving onto | moving onto + +---------------------------------------------------------------+ AMBER + | the next-generation schema | + | one graph of interconnected concepts for both collections | + +---------------------------------------------------------------+ + +Constraints that drove the layout and are easy to break by nudging a number: + +1. The gap between the panels is 172px and it has to hold both band labels at + 13px, so every line of them is wrapped to <= 143px ("definition keeps its + OIFM" is the widest). Widening the panels to fit their own text on fewer + lines narrows this gap and breaks the labels instead. +2. The gap is a five-item vertical stack -- label, arrow, gradient bar, arrow, + label -- and the dotted index-codes link has to clear all of it. That is why + the two "pulmonary nodule" nodes are the BOTTOM row of each panel and the + other examples are the top row: the link then runs at y=220, below the band + stack, and crosses nothing. +3. Those two nodes face each other across the gap -- the left one is flush to + its panel's right padding, the right one flush to its panel's left padding -- + so the link is a short straight run rather than a line across two panels. +4. Arrowheads are drawn by excalib.tri_head(), not Excalidraw's built-ins, + which take their size from the line's strokeWidth; HEAD sets it directly so + the thin band arrows keep small solid heads. +5. The amber band's title is centred rather than carrying an icon in the left + corner like the panels do: the two "moving onto" arrows come down at the + panel centres (x=182 and x=718) and would crowd a left-aligned header. + +Text widths are measured, not estimated (see tools/diagrams/README.md): every +width below is `measureText` at `px Helvetica, Segoe UI Emoji` in +headless Chromium. + +Icons: Lucide (ISC) tag, the same glyph build_two_planes.py and +build_three_axes.py use for a finding/diagnosis definition. See icons/LICENSES.md. + +Output: knowledge/drafts/two-collections.excalidraw; render with render_excalidraw.py. +""" +from __future__ import annotations + +from excalib import els, base, text, image, save, tri_head, AMBER, CAPTION + +# ---------------------------------------------------------------- palette +# The finding/diagnosis definition green, straight from build_two_planes.py's +# KIND_DEF / build_foundation_network.py's FINDING: the panels ARE that node +# kind, drawn large. +FIND = {"band": "#d1fae5", "block": "#a7f3d0", "stroke": "#059669", + "text": "#064e3b", "mid": "#047857"} +# Beta -> release, seven steps of one hue so the band reads as a single ramp. +RAMP = ["#ecfdf5", "#d1fae5", "#a7f3d0", "#6ee7b7", "#34d399", "#10b981", "#059669"] + +W = 900 # canvas width +ICON = 26 # Lucide stroke art +PAD = 18 # panel inner padding +HEAD = 9.0 # filled arrowhead length (band + "moving onto" arrows) + +PANEL_Y, PANEL_H = 0, 272 +LW = RW = 364 # panel width +RX = W - RW # right panel x (536) +GAP_L, GAP_R = LW, RX # 364 .. 536 +GAP_C = (GAP_L + GAP_R) / 2 # 450 + +ROW_A_Y, ROW_B_Y, ROW_H = 144, 200, 40 +AMBER_Y, AMBER_H = 320, 92 + +_uid = [0] + + +def uid(prefix: str) -> str: + _uid[0] += 1 + return f"{prefix}{_uid[0]}" + + +# ---------------------------------------------------------------- helpers +def panel(id_: str, x: float, w: float, pal: dict) -> dict: + r = base("rectangle", id_, x, PANEL_Y, w, PANEL_H, pal["stroke"], pal["band"], sw=2) + r["roundness"] = {"type": 3} + els.append(r) + return r + + +def header(x: float, title: str, title_w: float, blocks: list[list[tuple[str, float]]], + pal: dict) -> None: + """Tag icon at the panel's left padding, title beside it, description lines + aligned to the title (not to the icon). `blocks` groups those lines: the + channel descriptors and the maintainer are separate blocks, set 7px apart, + so a descriptor that wraps to two lines still reads as one statement rather + than running into the maintainer line below it.""" + image(uid("hicon"), x + PAD, PANEL_Y + 16, ICON, ICON, "icons/lucide-tag.svg", + color=pal["stroke"]) + tx = x + PAD + ICON + 10 + els.append(text(uid("ht"), tx, PANEL_Y + 18, title, size=17, color=pal["text"], w=title_w)) + y = PANEL_Y + 50 + for block in blocks: + for s, lw in block: + els.append(text(uid("hs"), tx, y, s, size=13, color=pal["mid"], w=lw)) + y += 13 * 1.25 + y += 7 + + +def node(id_: str, x: float, y: float, label: str, label_w: float, pal: dict) -> dict: + """A tiny example definition: one 13px line in a small rounded box.""" + w = label_w + 20 + r = base("rectangle", id_, x, y, w, ROW_H, pal["stroke"], pal["block"], sw=2) + r["roundness"] = {"type": 3} + els.append(r) + els.append(text(id_ + "_t", x + 8, y + (ROW_H - 13 * 1.25) / 2, label, size=13, + color=pal["text"], align="center", w=w - 16)) + return r + + +def line(id_: str, pts: list[tuple[float, float]], color: str, sw=2, dashed=False, + head: float | None = HEAD) -> None: + """A straight or routed run, finished with a solid triangle whose size is set + here rather than derived from strokeWidth. head=None draws no head.""" + x0, y0 = pts[0] + end_pts = list(pts) + if head: + tip, frm = pts[-1], pts[-2] + dx, dy = tip[0] - frm[0], tip[1] - frm[1] + length = (dx ** 2 + dy ** 2) ** 0.5 or 1.0 + end_pts = list(pts[:-1]) + [(tip[0] - dx / length * head * 0.55, + tip[1] - dy / length * head * 0.55)] + ex, ey = end_pts[-1] + ar = base("arrow", id_, x0, y0, ex - x0, ey - y0, color, "transparent", + dashed=dashed, sw=sw) + ar.update({"points": [[px - x0, py - y0] for px, py in end_pts], + "startBinding": None, "endBinding": None, "startArrowhead": None, + "endArrowhead": None, "boundElements": None}) + els.append(ar) + if head: + tri_head(id_ + "_h", pts[-1], pts[-2], color, size=head) + + +def caption(id_: str, cx: float, y_top: float, lines: list[tuple[str, float]], + size=13, color=CAPTION) -> None: + """A centred multi-line label, each line given its MEASURED width so the + block centres exactly on cx.""" + w = max(lw for _, lw in lines) + y = y_top + for s, lw in lines: + els.append(text(uid(id_), cx - w / 2, y, s, size=size, color=color, + align="center", w=w)) + y += size * 1.25 + + +def plate(id_: str, cx: float, cy: float, s: str, w: float, size=13, color=CAPTION, + fill="#ffffff", pad_x=6, pad_y=3) -> None: + """An edge label on an opaque plate, centred on (cx, cy), so it masks the + line it sits on. w is the MEASURED text width.""" + bw, bh = w + 2 * pad_x, size * 1.25 + 2 * pad_y + r = base("rectangle", id_, cx - bw / 2, cy - bh / 2, bw, bh, "transparent", fill, sw=0) + r["roundness"] = {"type": 3} + els.append(r) + els.append(text(id_ + "_t", cx - bw / 2 + pad_x, cy - bh / 2 + pad_y, s, size=size, + color=color, align="center", w=w)) + + +# ================================================================ the two panels +panel("panel_oifm", 0, LW, FIND) +panel("panel_cde", RX, RW, FIND) + +header(0, "Open Imaging Finding Models", 226.8, + [[("inclusive · beta channel ·", 143.8), + ("rapid additions and updates", 159.7)], + [("maintained by the OIDM project", 182.8)]], FIND) +header(RX, "ACR/RSNA Common Data Elements", 277.8, + [[("well-reviewed · release channel · stable", 228.3)], + [("American College of Radiology ·", 186.4), + ("Radiological Society of North America ·", 228.2), + ("radelement.org", 87.4)]], FIND) + +# Top row: the examples that live in only one collection. Bottom row: the one +# definition that lives in both, flush to the facing edges so the dotted link +# between them is a short straight run clear of the band stack above. +node("n_hydro", PAD, ROW_A_Y, "hydronephrosis", 88.9, FIND) +node("n_calc", PAD + 88.9 + 20 + 14, ROW_A_Y, "renal calculus", 79.5, FIND) +nod_l = node("n_nodule_l", LW - PAD - (103.3 + 20), ROW_B_Y, "pulmonary nodule", 103.3, FIND) +node("n_aaa", RX + PAD, ROW_A_Y, "abdominal aortic aneurysm", 156.1, FIND) +nod_r = node("n_nodule_r", RX + PAD, ROW_B_Y, "pulmonary nodule", 103.3, FIND) + +# ================================================================ the band between +# Five items stacked in the 172px gap: label, arrow, gradient bar, arrow, label. +caption("bl_grad", GAP_C, 28, + [("definitions proved out", 123.6), ("here graduate to review", 136.6)]) +line("b_grad", [(GAP_L + 4, 72), (GAP_R - 4, 72)], FIND["stroke"], sw=2) + +BAR_Y, BAR_H = 86, 16 +BAR_X, BAR_W = GAP_L + 4, (GAP_R - 4) - (GAP_L + 4) # the same span as the two arrows +step = BAR_W / len(RAMP) +for i, col in enumerate(RAMP): + els.append(base("rectangle", uid("ramp"), BAR_X + i * step, BAR_Y, step + 0.5, BAR_H, + "transparent", col, sw=0)) + +line("b_cross", [(GAP_R - 4, 114), (GAP_L + 4, 114)], FIND["stroke"], sw=2) +caption("bl_cross", GAP_C, 124, + [("cross-links: a migrated", 130.0), ("definition keeps its OIFM", 143.1), + ("entry and carries its", 113.4), ("CDE identity", 72.2)]) + +# ================================================================ the shared definition +LINK_Y = ROW_B_Y + ROW_H / 2 +line("l_index", [(nod_l["x"] + nod_l["width"], LINK_Y), (nod_r["x"], LINK_Y)], + FIND["stroke"], sw=2, dashed=True, head=None) +plate("l_index_l", GAP_C, LINK_Y, "index codes", 69.4, color=FIND["mid"]) + +# ================================================================ the next-generation schema +amber = base("rectangle", "amber", 0, AMBER_Y, W, AMBER_H, AMBER["stroke"], AMBER["band"], sw=2) +amber["roundness"] = {"type": 3} +els.append(amber) + +A_TOP = AMBER_Y + (AMBER_H - (17 * 1.25 + 6 + 13 * 1.25)) / 2 +els.append(text("a_title", (W - 210.7) / 2, A_TOP, "the next-generation schema", + size=17, color=AMBER["text"], align="center", w=210.7)) +els.append(text("a_sub", (W - 329.5) / 2, A_TOP + 17 * 1.25 + 6, + "one graph of interconnected concepts for both collections", + size=13, color=AMBER["mid"], align="center", w=329.5)) + +for i, cx in enumerate((LW / 2, RX + RW / 2)): + line(f"m_onto{i}", [(cx, PANEL_Y + PANEL_H + 2), (cx, AMBER_Y - 2)], + AMBER["stroke"], sw=2) + els.append(text(uid("m_l"), cx + 12, (PANEL_Y + PANEL_H + AMBER_Y) / 2 - 8, + "moving onto", size=13, color=AMBER["mid"], w=70.8)) + +save("knowledge/drafts/two-collections.excalidraw") diff --git a/tools/diagrams/build_two_planes.py b/tools/diagrams/build_two_planes.py index ff86af6..aad9a2b 100644 --- a/tools/diagrams/build_two_planes.py +++ b/tools/diagrams/build_two_planes.py @@ -6,18 +6,20 @@ about this patient attached downward to the shared knowledge of what such a thing is. - +-----------------------------------------------------+ TEAL - | Patient Context -- this patient . this exam | (upper plane) - | [CT chest] <--found on-- [pulmonary nodule] | - +-----------------------------------------------------+ - | is a | is a | located at <- thick rose - +-----------------------------------------------------+ AMBER - | Foundation Context -- shared, curated knowledge | (lower plane) - | [exam type] [definition] | tier 1 - | | covers | occurs at | - | [thorax] --contains--> [lung] --contains--> [upper| tier 2 - | lobe of ...] (the anatomy chain) - +-----------------------------------------------------+ + +---------------------------------------------------------------+ TEAL + | Patient Context ,-------- found on --------------. | + | [CT chest WO] <-found on- [pulmonary nodule] [pleural eff] | + +---------------------------------------------------------------+ + | is a | is a | located at | is a | located at <- rose + +---------------------------------------------------------------+ AMBER + | Foundation Context | + | [CT Chest WO contrast] [pulm nodule def] [pleural eff def] | tier 1 + | |member of family |seen on |occurs at |occurs at | + | [CT Chest] -modality-> [CT] | | | tier 2 + | |covers | | | + | [thorax] -contains-> [lung] -> [upper lobe] [pleural space] | tier 3 + | `------------------ contains ------------------^ | + +---------------------------------------------------------------+ Geometry: both planes are the same parallelogram -- top edge offset SKEW px to the right of the bottom edge -- so the pair reads as two isometric sheets @@ -25,27 +27,36 @@ a plane's top must clear `left_edge(y)`, which is what `lx()` computes; every x-coordinate below was checked against it rather than eyeballed. -Two constraints drove the layout and are easy to break by nudging a number: +Constraints that drove the layout and are easy to break by nudging a number: 1. The lower plane's header ("Foundation Context" + subtitle) occupies - x = 68..283 at y = 314..358. The exam -> exam type cross-plane edge is the - leftmost near-vertical line in the figure, so it has to come down at - x >= ~305 to miss that header. That is why the lower plane's node row - starts at x=215 rather than being centred, and why the left flank of the - plane is filled with the grey "knowledge continues" nodes instead. -2. The three cross-plane edges must not cross each other, so their x-order - has to be the same where they leave the upper plane and where they land: - 308 / 545 / 660 at the top, 308 / 545 / 712 at the bottom. Two of the - three are therefore plumb (exam -> exam type, finding -> definition); the - third leans 52px right over 349px of drop to reach the end of the anatomy - chain, and that lean is what sets the definition node's right edge -- it - has to pass to the RIGHT of that node, not through it. -3. The anatomy is a containment chain on its own tier, below the exam type - and the finding definition: thorax contains lung contains upper lobe of - right lung. The exam type covers the whole region (thorax); the finding - definition occurs at lung; the patient's actual finding is located at the - one lobe. Reading the picture downward and then along tier 2 is the point - of the figure, so tier 2 is a single straight row, not a fan. + x = 68..283 at y = 264..308, so the leftmost cross-plane edge has to come + down at x >= ~300 to miss it. Tier 1 therefore starts at x=120 and the + plane's left flank carries the grey "knowledge continues" nodes instead. +2. Five cross-plane edges, and none may cross another, so their x-order is the + same where they leave the upper plane (300 / 490 / 602 / 720 / 866) and + where they land (300 / 490 / 602 / 720 / 856). Four are plumb; the fifth + leans 10px to clear the effusion definition's right edge. Two of them run + past tier 1 into tier 3 and thread the gaps between tier 1's boxes -- x=602 + uses the 32px gap between the two definitions -- so those boxes cannot be + moved together, and neither definition can be widened. +3. With two findings in the upper plane, the second is too far right for a + straight "found on" edge back to the exam. Its edge runs ABOVE the row, in + the lane at y=72: every cross-plane edge leaves a node's BOTTOM, so the + band between the header and the row is the one place nothing crosses. +4. The foundation plane is three tiers and the vertical axis is generality: + what the patient's data attaches to sits in tier 1, and each tier below is + the more general thing. The exam axis (Playbook entry -> family -> modality) + and the anatomy axis (upper lobe <- lung <- thorax) both read that way, + which is why the family, not the specific entry, covers the thorax. +5. The pleural space is the thorax's second anatomic branch, but it sits at the + far right, under the effusion's definition. Its "contains" edge is drawn as + a lane BELOW tier 3 rather than a long horizontal through it, which would + have to cross both lung and the upper lobe. +6. Arrowheads are drawn by excalib.tri_head(), not by Excalidraw's built-in + ones: the built-ins take their size from the line's strokeWidth, which + forces a thick rose edge to carry an outsized head. HEAD_R and HEAD_G set + the two sizes directly. Text widths are measured, not estimated (see tools/diagrams/README.md): every box width below is `measured width + padding` from canvas `measureText` at @@ -59,11 +70,12 @@ """ from __future__ import annotations -from excalib import els, base, text, image, save, AMBER, TEAL, ROSE, CAPTION +from excalib import (els, base, text, image, save, tri_head, + AMBER, TEAL, ROSE, CAPTION) # ---------------------------------------------------------------- constants SKEW = 55 # how far each plane's top edge sits right of its bottom edge -PW = 830 # plane width, measured along an edge +PW = 880 # plane width, measured along an edge ICON = 28 # Lucide (stroke art) ICON_FILLED = 32 # Health Icons (filled-path art, optically smaller at equal size) @@ -72,8 +84,24 @@ GREY_FILL, GREY_STROKE = "#e7e5e4", "#a8a29e" REL = "#78716c" # grey relationship edges inside the lower plane -P1_Y, P1_H = 0, 185 # upper plane (Patient Context) -P2_Y, P2_H = 300, 305 # lower plane (Foundation Context); gap of 115 between +# Node kinds inside the Foundation Context plane. Fills and strokes are taken +# straight from build_foundation_network.py's FINDING / ANATOMY / EXAM / GREY +# so the two figures name the same kinds with the same colours. Each dict keeps +# excalib's band/block/stroke/text/mid shape; only "band" (the plane tint) is +# shared, since every one of these sits on the amber plane. The modality grey +# uses a darker stroke than the mini-network's #9ca3af, which is too faint to +# hold an edge against the amber ground. +KIND_DEF = {"band": AMBER["band"], "block": "#d1fae5", "stroke": "#059669", + "text": "#064e3b", "mid": "#047857"} # finding/diagnosis definition +KIND_ANAT = {"band": AMBER["band"], "block": "#bfdbfe", "stroke": "#1d4ed8", + "text": "#1e3a8a", "mid": "#1d4ed8"} # anatomic location +KIND_EXAM = AMBER # exam type (already the amber block) +KIND_MOD = {"band": AMBER["band"], "block": "#e5e7eb", "stroke": "#6b7280", + "text": "#374151", "mid": "#4b5563"} # modality + +P1_Y, P1_H = 0, 190 # upper plane (Patient Context) +P2_Y, P2_H = 250, 440 # lower plane (Foundation Context); 60px gap between +HEAD_R, HEAD_G = 13.0, 10.0 # filled arrowhead length: rose edges, grey/teal edges _uid = [0] @@ -115,8 +143,8 @@ def node_rect(id_: str, x: float, y: float, w: float, h: float, pal: dict) -> di def hnode(id_: str, x: float, y: float, w: float, h: float, icon_path: str, pal: dict, title: str, sub: str, filled_icon=False) -> dict: - """Icon on the left, bold-ish title line, lighter second line -- the compact - style used for the two Patient Context nodes.""" + """Icon on the left at a fixed inset, title line, lighter second line -- + the style used for the two Patient Context nodes.""" r = node_rect(id_, x, y, w, h, pal) s = ICON_FILLED if filled_icon else ICON image(uid("ni"), x + 12 - (s - ICON) / 2, y + (h - s) / 2, s, s, icon_path, color=pal["stroke"]) @@ -128,43 +156,31 @@ def hnode(id_: str, x: float, y: float, w: float, h: float, icon_path: str, pal: return r -def vnode(id_: str, x: float, y: float, w: float, h: float, icon_path: str, pal: dict, - title: str, desc: str, filled_icon=False) -> dict: - """Icon centred on top, title, then a lighter descriptor -- the Foundation - Context style, matching build_pillars.py's icon blocks.""" - r = node_rect(id_, x, y, w, h, pal) - s = ICON_FILLED if filled_icon else ICON - top = y + (h - (ICON + 6 + 15 * 1.25 + 2 + 13 * 1.25)) / 2 - image(uid("ni"), x + w / 2 - s / 2, top - (s - ICON) / 2, s, s, icon_path, color=pal["stroke"]) - ty = top + ICON + 6 - els.append(text(uid("nt"), x + 8, ty, title, size=15, color=pal["text"], align="center", w=w - 16)) - els.append(text(uid("nd"), x + 8, ty + 15 * 1.25 + 2, desc, size=13, color=pal["mid"], - align="center", w=w - 16)) - return r - - def chip(id_: str, x: float, y: float, w: float, h: float, pal: dict, title: str, - title_w: float, desc: str | None = None, icon_path: str | None = None, - filled_icon=False) -> dict: - """A compact node for the anatomy chain: content vertically centred, and - horizontally either centred text (no icon) or an icon+title group centred - as a unit. title_w is the MEASURED title width, needed to centre that - group. Shorter than vnode() so the chain reads as one row of locations - rather than three more blocks.""" + desc: str | None = None, icon_path: str | None = None, filled_icon=False, + text_w: float | None = None) -> dict: + """The Foundation Context node: content vertically centred, and horizontally + either centred text (no icon) or an icon + text-column group centred as a + unit. text_w is the MEASURED width of the widest of title/desc, needed to + centre that group; with no icon it is not used. Every foundation node is + the same height, so the three tiers read as three rows of one grid.""" r = node_rect(id_, x, y, w, h, pal) lines_h = 15 * 1.25 + (2 + 13 * 1.25 if desc else 0) ty = y + (h - lines_h) / 2 if icon_path: s_ = ICON_FILLED if filled_icon else ICON - gx = x + (w - (s_ + 10 + title_w)) / 2 + gx = x + (w - (s_ + 10 + text_w)) / 2 image(uid("ni"), gx, y + (h - s_) / 2, s_, s_, icon_path, color=pal["stroke"]) - els.append(text(uid("nt"), gx + s_ + 10, ty, title, size=15, color=pal["text"], w=title_w)) + els.append(text(uid("nt"), gx + s_ + 10, ty, title, size=15, color=pal["text"], w=text_w)) + if desc: + els.append(text(uid("nd"), gx + s_ + 10, ty + 15 * 1.25 + 2, desc, size=13, + color=pal["mid"], w=text_w)) else: els.append(text(uid("nt"), x + 8, ty, title, size=15, color=pal["text"], align="center", w=w - 16)) - if desc: - els.append(text(uid("nd"), x + 8, ty + 15 * 1.25 + 2, desc, size=13, color=pal["mid"], - align="center", w=w - 16)) + if desc: + els.append(text(uid("nd"), x + 8, ty + 15 * 1.25 + 2, desc, size=13, + color=pal["mid"], align="center", w=w - 16)) return r @@ -180,14 +196,24 @@ def faint(x1: float, y1: float, x2: float, y2: float) -> None: els.append(ln) -def path(id_: str, pts: list[tuple[float, float]], color: str, sw=3, head="arrow") -> None: - """Multi-point routed arrow; excalib.arrow()'s elbow modes only do 3 points.""" +def path(id_: str, pts: list[tuple[float, float]], color: str, sw=3, head=HEAD_G) -> None: + """Multi-point routed arrow (excalib.arrow()'s elbow modes only do 3 points), + finished with excalib.tri_head(): a solid filled triangle whose size is set + here rather than derived from the line's strokeWidth, so a thick rose edge + and a thin grey one can carry heads of deliberately chosen sizes.""" x0, y0 = pts[0] - ar = base("arrow", id_, x0, y0, pts[-1][0] - x0, pts[-1][1] - y0, color, "transparent", sw=sw) - ar.update({"points": [[px - x0, py - y0] for px, py in pts], "startBinding": None, - "endBinding": None, "startArrowhead": None, "endArrowhead": head, + tip, frm = pts[-1], pts[-2] + dx, dy = tip[0] - frm[0], tip[1] - frm[1] + length = (dx ** 2 + dy ** 2) ** 0.5 or 1.0 + # stop the line a little short so the head's base sits on it, not past it + end = (tip[0] - dx / length * head * 0.55, tip[1] - dy / length * head * 0.55) + line_pts = list(pts[:-1]) + [end] + ar = base("arrow", id_, x0, y0, end[0] - x0, end[1] - y0, color, "transparent", sw=sw) + ar.update({"points": [[px - x0, py - y0] for px, py in line_pts], "startBinding": None, + "endBinding": None, "startArrowhead": None, "endArrowhead": None, "boundElements": None}) els.append(ar) + tri_head(id_ + "_h", tip, frm, color, size=head) def plate(id_: str, cx: float, cy: float, s: str, w: float, size=13, color=CAPTION, @@ -209,88 +235,150 @@ def plate(id_: str, cx: float, cy: float, s: str, w: float, size=13, color=CAPTI plane("plane_foundation", P2_Y, P2_H, AMBER) header(67, P1_Y + 12, "icons/lucide-layers.svg", TEAL, - "Patient Context", "this patient \u00b7 this exam") + "Patient Context", "this patient · this exam") header(68, P2_Y + 14, "icons/lucide-book-open.svg", AMBER, "Foundation Context", "shared, curated knowledge") -# ================================================================ upper plane: two nodes -# "CT chest" 64.0 / "this patient . 2026-03-04" 140.9 at 16/13px -> 141 + icon -# 28 + pads = 203; 210 used. Placed so that x=308 -- the leftmost column that -# clears the lower plane's header -- falls inside it, making that drop plumb -# (see module docstring, constraint 1). -exam = hnode("exam", 170, 76, 210, 66, "icons/lucide-clipboard-list.svg", TEAL, - "CT chest", "this patient \u00b7 2026-03-04") -# "pulmonary nodule" 127.2 / "present . 8 mm . new" 122.8 -> 127 + 28 + pads = 189; 196 used. -# x=500 is chosen so that x=545 (the definition node's centre) falls inside it, -# making that cross-plane edge exactly plumb, while leaving the node's right end -# far enough right that the "located at" edge reaches the chain's far node -# without leaning far. -finding = hnode("finding", 500, 100, 196, 66, "icons/lucide-clipboard.svg", TEAL, - "pulmonary nodule", "present \u00b7 8 mm \u00b7 new") - -path("e_found_on", [(500, 133), (386, 111)], TEAL["stroke"], sw=2) -plate("l_found_on", 460, 100, "found on", 50.6, color=TEAL["mid"], fill=TEAL["band"]) - -# ================================================================ lower plane, tier 1: exam type + definition -# Both boxes are 190 wide: the widest line in each measures 157.5 and 152.5px, -# so 190 (= ~157 + 2 x 16) fits either with room to spare. -ROW_Y, ROW_H, NW = 372, 97, 190 -X_EXAM_T, X_DEF = 215, 450 -exam_type = vnode("exam_type", X_EXAM_T, ROW_Y, NW, ROW_H, "icons/healthicons-xray.svg", AMBER, - "CT Chest W contrast IV", "exam type", filled_icon=True) -definition = vnode("definition", X_DEF, ROW_Y, NW, ROW_H, "icons/lucide-tag.svg", AMBER, - "pulmonary nodule", "finding/diagnosis definition") - -# ================================================================ lower plane, tier 2: the anatomy chain -# thorax -> lung -> upper lobe of right lung, one straight row, 82px gaps -- -# just wide enough for a "contains" plate (48.4 + 12 = 60.4) with ~11px of -# line showing either side of it. Only "lung" carries the lungs glyph: three -# copies of it would read as three different organs rather than one chain. -CH_Y, CH_H = 515, 62 -thorax = chip("thorax", 215, CH_Y, 130, CH_H, AMBER, "thorax", 41.7, desc="anatomic location") -lung = chip("lung", 427, CH_Y, 110, CH_H, AMBER, "lung", 28.4, - icon_path="icons/healthicons-lungs.svg", filled_icon=True) -upper_lobe = chip("upper_lobe", 619, CH_Y, 185, CH_H, AMBER, "upper lobe of right lung", 153.4) - -CH_MID = CH_Y + CH_H / 2 -path("r_contains1", [(345, CH_MID), (427, CH_MID)], REL, sw=2) -plate("l_contains1", 386, CH_MID, "contains", 48.4, color=REL, fill=AMBER["band"]) -path("r_contains2", [(537, CH_MID), (619, CH_MID)], REL, sw=2) -plate("l_contains2", 578, CH_MID, "contains", 48.4, color=REL, fill=AMBER["band"]) - -# Tier 1 -> tier 2, in the 46px band between the rows. Both labels sit beside -# their edge rather than on it: the drops are too short to mask. -path("r_covers", [(280, ROW_Y + ROW_H), (280, CH_Y - 3)], REL, sw=2) -plate("l_covers", 320, 492, "covers", 38.3, color=REL, fill=AMBER["band"]) -path("r_occurs", [(500, ROW_Y + ROW_H), (482, CH_Y - 3)], REL, sw=2) -plate("l_occurs", 540, 492, "occurs at", 52.7, color=REL, fill=AMBER["band"]) - -# The knowledge continues: unlabelled nodes on the plane's left flank (kept -# free by pushing tier 1 right, see constraint 1) and in the right flank that -# the definition node leaves open. The right pair's faint edge joins the chain -# to the RIGHT of x=712 so it never crosses the "located at" drop. -for gid, gx, gy, gr in [("g1", 105, 395, 13), ("g2", 66, 437, 10), ("g3", 128, 447, 11), - ("g4", 170, 512, 9), ("g5", 806, 455, 12), ("g6", 838, 417, 8)]: +# ================================================================ upper plane: one exam, two findings +# All three sit on one row, so each finding's "found on" edge is short and +# neither crosses the cross-plane drops that leave the row's underside. The +# second finding is too far right for a straight edge back to the exam, so its +# edge runs ABOVE the row, in the lane at y=72 between the header and the nodes +# -- every cross-plane drop leaves a node's BOTTOM, so nothing is up there to +# cross. +ROW1_Y, ROW1_H = 92, 66 +exam = hnode("exam", 140, ROW1_Y, 246, ROW1_H, "icons/lucide-clipboard-list.svg", TEAL, + "CT chest without contrast", "this patient \u00b7 2026-03-04") +nodule = hnode("nodule", 470, ROW1_Y, 196, ROW1_H, "icons/lucide-clipboard.svg", TEAL, + "pulmonary nodule", "present \u00b7 8 mm \u00b7 new") +effusion = hnode("effusion", 706, ROW1_Y, 176, ROW1_H, "icons/lucide-clipboard.svg", TEAL, + "pleural effusion", "absent") +ROW1_B = ROW1_Y + ROW1_H + +path("e_found1", [(470, 125), (392, 125)], TEAL["stroke"], sw=2) +plate("l_found1", 431, 125, "found on", 50.6, color=TEAL["mid"], fill=TEAL["band"]) +path("e_found2", [(790, ROW1_Y), (790, 72), (250, 72), (250, ROW1_Y - 3)], TEAL["stroke"], sw=2) +plate("l_found2", 560, 72, "found on", 50.6, color=TEAL["mid"], fill=TEAL["band"]) + +# ================================================================ lower plane, tier 1 +# What the patient's own data attaches to: the specific Playbook exam type and +# one definition per finding. Widest lines measure 150.9 / 152.5 / 152.5px; +# with the 32/28px icon, its 10px gutter and 24px of padding that gives 218/216. +T1_Y, T1_H = 322, 62 +exam_type = chip("exam_type", 120, T1_Y, 218, T1_H, KIND_EXAM, "CT Chest WO contrast", + desc="exam type \u00b7 29252-4", icon_path="icons/healthicons-xray.svg", + filled_icon=True, text_w=150.9) +nodule_def = chip("nodule_def", 370, T1_Y, 216, T1_H, KIND_DEF, "pulmonary nodule", + desc="finding/diagnosis definition", icon_path="icons/lucide-tag.svg", + text_w=152.5) +effusion_def = chip("effusion_def", 618, T1_Y, 216, T1_H, KIND_DEF, "pleural effusion", + desc="finding/diagnosis definition", icon_path="icons/lucide-tag.svg", + text_w=152.5) +T1_B = T1_Y + T1_H + +# ================================================================ lower plane, tier 2 +T2_Y, T2_H = 448, 56 +family = chip("family", 130, T2_Y, 168, T2_H, KIND_EXAM, "CT Chest", desc="exam family \u00b7 preferred") +modality = chip("modality", 382, T2_Y, 80, T2_H, KIND_MOD, "CT", desc="modality") +T2_B = T2_Y + T2_H +T2_MID = T2_Y + T2_H / 2 + +path("r_member", [(200, T1_B), (200, T2_Y - 3)], REL, sw=2) +plate("l_member", 200, T1_B + 32, "member of family", 99.7, color=REL, fill=AMBER["band"]) +path("r_modality", [(298, T2_MID), (379, T2_MID)], REL, sw=2) +plate("l_modality", 340, T2_MID, "modality", 48.4, color=REL, fill=AMBER["band"]) +# "CT" is a hub: the family reaches it along tier 2, the nodule definition +# straight down from tier 1. +path("r_seen", [(422, T1_B), (422, T2_Y - 3)], REL, sw=2) +plate("l_seen", 422, T1_B + 32, "seen on", 46.3, color=REL, fill=AMBER["band"]) + +# ================================================================ lower plane, tier 3: anatomy +# thorax contains lung contains upper lobe; thorax also contains the pleural +# space, which sits at the far right under the effusion's definition. That +# second branch is drawn as a lane BELOW the tier rather than a long horizontal +# through it, which would have to cross lung and upper lobe. +T3_Y, T3_H = 568, 62 +thorax = chip("thorax", 130, T3_Y, 130, T3_H, KIND_ANAT, "thorax", desc="anatomic location") +lung = chip("lung", 342, T3_Y, 110, T3_H, KIND_ANAT, "lung", + icon_path="icons/healthicons-lungs.svg", filled_icon=True, text_w=28.4) +upper_lobe = chip("upper_lobe", 554, T3_Y, 185, T3_H, KIND_ANAT, "upper lobe of right lung") +pleural_space = chip("pleural_space", 760, T3_Y, 120, T3_H, KIND_ANAT, "pleural space") +T3_B = T3_Y + T3_H +T3_MID = T3_Y + T3_H / 2 + +path("r_contains1", [(260, T3_MID), (339, T3_MID)], REL, sw=2) +plate("l_contains1", 301, T3_MID, "contains", 48.4, color=REL, fill=AMBER["band"]) +path("r_contains2", [(452, T3_MID), (551, T3_MID)], REL, sw=2) +plate("l_contains2", 503, T3_MID, "contains", 48.4, color=REL, fill=AMBER["band"]) +LANE_Y = T3_B + 26 +path("r_contains3", [(215, T3_B), (215, LANE_Y), (820, LANE_Y), (820, T3_B + 3)], REL, sw=2) +plate("l_contains3", 500, LANE_Y, "contains", 48.4, color=REL, fill=AMBER["band"]) + +# The family covers the whole region; each definition occurs at its own +# structure. "occurs at" for the nodule elbows around the modality node rather +# than cutting the corner off it. +path("r_covers", [(200, T2_B), (200, T3_Y - 3)], REL, sw=2) +plate("l_covers", 200, T2_B + 32, "covers", 38.3, color=REL, fill=AMBER["band"]) +path("r_occurs1", [(560, T1_B), (560, 550), (440, 550), (440, T3_Y - 3)], REL, sw=2) +plate("l_occurs1", 552, T1_B + 32, "occurs at", 52.7, color=REL, fill=AMBER["band"]) +path("r_occurs2", [(790, T1_B), (790, T3_Y - 3)], REL, sw=2) +plate("l_occurs2", 790, T1_B + 32, "occurs at", 52.7, color=REL, fill=AMBER["band"]) + +# ================================================================ the knowledge continues +# The left cluster sits BELOW tier 1, where the plane's slanted left edge has +# moved far enough left to give a dot clearance; higher up it would straddle +# the border. +for gid, gx, gy, gr in [("g1", 96, 412, 11), ("g2", 62, 448, 9), ("g3", 92, 486, 10), + ("g4", 60, 528, 8), ("g5", 676, 452, 12), ("g6", 712, 492, 9)]: dot(gid, gx, gy, gr) -faint(105, 395, 66, 437) -faint(105, 395, 128, 447) -faint(128, 447, 170, 512) -faint(118, 398, X_EXAM_T, 410) -faint(838, 417, 806, 455) -faint(798, 466, 778, CH_Y) +faint(96, 412, 62, 448) +faint(96, 412, 92, 486) +faint(92, 486, 60, 528) +faint(104, 404, 124, 388) +faint(66, 535, 130, 590) +faint(676, 452, 712, 492) +faint(676, 440, 676, T1_B) # ================================================================ cross-plane attachments -# Three thick rose near-verticals; see constraint 2 for why two are plumb and -# the third leans. None passes through a node or the lower plane's header. -path("x_exam", [(308, 142), (308, ROW_Y - 3)], CROSS, sw=3) -plate("x_exam_l", 308, 240, "is a", 20.2, color=ROSE["text"]) -path("x_isa", [(545, 166), (545, ROW_Y - 3)], CROSS, sw=3) -plate("x_isa_l", 545, 240, "is a", 20.2, color=ROSE["text"]) -path("x_located", [(660, 166), (711, CH_Y - 4)], CROSS, sw=3) -plate("x_located_l", 671, 240, "located at", 56.4, color=ROSE["text"]) +# Five thick rose edges. Their x-order is the same where they leave the upper +# plane (300 / 490 / 602 / 720 / 866) and where they land (300 / 490 / 602 / +# 720 / 856), so none crosses another. Four are plumb; the fifth leans 10px to +# clear the effusion definition's right edge. The two that reach tier 3 thread +# the gaps between tier 1's boxes: x=602 runs down the 32px gap between the two +# definitions, which is why those two boxes cannot be moved together. +CX_LABEL_Y = 212 +path("x_exam", [(300, ROW1_B), (300, T1_Y - 3)], CROSS, sw=3, head=HEAD_R) +plate("x_exam_l", 300, CX_LABEL_Y, "is a", 20.2, color=ROSE["text"]) +path("x_nodule_isa", [(490, ROW1_B), (490, T1_Y - 3)], CROSS, sw=3, head=HEAD_R) +plate("x_nodule_isa_l", 490, CX_LABEL_Y, "is a", 20.2, color=ROSE["text"]) +path("x_nodule_loc", [(602, ROW1_B), (602, T3_Y - 3)], CROSS, sw=3, head=HEAD_R) +plate("x_nodule_loc_l", 602, CX_LABEL_Y, "located at", 56.4, color=ROSE["text"]) +path("x_effusion_isa", [(720, ROW1_B), (720, T1_Y - 3)], CROSS, sw=3, head=HEAD_R) +plate("x_effusion_isa_l", 720, CX_LABEL_Y, "is a", 20.2, color=ROSE["text"]) +path("x_effusion_loc", [(866, ROW1_B), (856, T3_Y - 3)], CROSS, sw=3, head=HEAD_R) +plate("x_effusion_loc_l", 864, CX_LABEL_Y, "located at", 56.4, color=ROSE["text"]) + +# ================================================================ legend +# One line of swatches under the plane, naming the four node kinds the fills +# stand for. Measured label widths, so the row centres exactly on the canvas. +LEG_ITEMS = [(KIND_DEF, "finding/diagnosis definition", 152.5), + (KIND_ANAT, "anatomic location", 101.2), + (KIND_EXAM, "exam type", 60.0), + (KIND_MOD, "modality", 48.4)] +SW_W, SW_H, SW_GAP, ITEM_GAP = 18, 13, 8, 28 +leg_w = sum(SW_W + SW_GAP + w for _, _, w in LEG_ITEMS) + ITEM_GAP * (len(LEG_ITEMS) - 1) +leg_x = (PW + SKEW - leg_w) / 2 +LEG_Y = P2_Y + P2_H + 22 +for _pal, _label, _w in LEG_ITEMS: + _r = base("rectangle", uid("leg"), leg_x, LEG_Y + 1.6, SW_W, SW_H, + _pal["stroke"], _pal["block"], sw=1) + _r["roundness"] = {"type": 3} + els.append(_r) + els.append(text(uid("legt"), leg_x + SW_W + SW_GAP, LEG_Y, _label, size=13, color=CAPTION, w=_w)) + leg_x += SW_W + SW_GAP + _w + ITEM_GAP # ================================================================ caption -els.append(text("caption", 0, P2_Y + P2_H + 26, +els.append(text("caption", 0, P2_Y + P2_H + 54, "every fact about this patient is attached to the shared knowledge " "of what such a thing is", size=14, color=CAPTION, align="center", w=PW + SKEW)) diff --git a/tools/diagrams/excalib.py b/tools/diagrams/excalib.py index a0e4dfc..7baabe8 100644 --- a/tools/diagrams/excalib.py +++ b/tools/diagrams/excalib.py @@ -118,7 +118,7 @@ def edge_point(b: dict, side: str, frac: float = 0.5) -> tuple[float, float]: def arrow(id_: str, src: str, s_side: str, dst: str, d_side: str, label: str | None = None, s_frac=0.5, d_frac=0.5, color=LINE, dashed=False, label_dx=0.0, label_dy=-22.0, sw=2, both=False, elbow: str | None = None, - label_size=14, inset=0.0) -> None: + label_size=14, inset=0.0, head="arrow") -> None: a, b = find(src), find(dst) (x1, y1), (x2, y2) = edge_point(a, s_side, s_frac), edge_point(b, d_side, d_frac) if inset: @@ -137,7 +137,7 @@ def arrow(id_: str, src: str, s_side: str, dst: str, d_side: str, label: str | N ar.update({"points": pts, "startBinding": {"elementId": src, "focus": 0, "gap": 2}, "endBinding": {"elementId": dst, "focus": 0, "gap": 2}, - "startArrowhead": "arrow" if both else None, "endArrowhead": "arrow", "boundElements": None}) + "startArrowhead": head if both else None, "endArrowhead": head, "boundElements": None}) a["boundElements"].append({"id": id_, "type": "arrow"}) b["boundElements"].append({"id": id_, "type": "arrow"}) els.append(ar) @@ -147,6 +147,32 @@ def arrow(id_: str, src: str, s_side: str, dst: str, d_side: str, label: str | N els.append(text(id_ + "_l", mx - lw / 2, my, label, size=label_size, color=BODY, align="center", w=lw)) +def tri_head(id_: str, tip: tuple[float, float], frm: tuple[float, float], color: str, + size: float = 11.0, width_ratio: float = 0.62) -> dict: + """A solid filled arrowhead, drawn as its own closed triangle. + + Excalidraw's built-in arrowheads ("arrow", "triangle", ...) are sized from + the arrow's `strokeWidth`, so a thick line is forced to carry a big head. + This draws the head separately instead: give the arrow `endArrowhead: None` + and call this at its last point, passing the previous point as `frm` so the + triangle aims along the final segment. `size` is the head's length in px, + independent of the line weight. + """ + dx, dy = tip[0] - frm[0], tip[1] - frm[1] + length = (dx ** 2 + dy ** 2) ** 0.5 or 1.0 + ux, uy = dx / length, dy / length + px, py = -uy, ux # unit perpendicular + hw = size * width_ratio # half-width of the head's base + bx, by = tip[0] - ux * size, tip[1] - uy * size + pts = [tip, (bx + px * hw, by + py * hw), (bx - px * hw, by - py * hw)] + x0, y0 = pts[0] + el = base("line", id_, x0, y0, 0, 0, color, color, sw=1) + el.update({"points": [[x - x0, y - y0] for x, y in pts] + [[0, 0]], + "roundness": None, "boundElements": None, "fillStyle": "solid"}) + els.append(el) + return el + + def boxed_label(id_: str, cx: float, y_bottom: float, s: str, size=13, color=BODY, pad_x=5, pad_y=2) -> dict: """A small text label on an opaque white box -- for a caption that would otherwise sit on top of a line or arrow it crosses. cx: horizontal diff --git a/tools/diagrams/variants/build_pillars_b1.py b/tools/diagrams/variants/build_pillars_b1.py new file mode 100644 index 0000000..3aaacad --- /dev/null +++ b/tools/diagrams/variants/build_pillars_b1.py @@ -0,0 +1,303 @@ +#!/usr/bin/env python3 +"""Build the OIDM "five pillars" stack diagram -- variant B1, a true finger joint. + +This is a variant of ../build_pillars.py (seam b, the dovetail) and exists so +three seam explorations can run without stepping on each other. It differs +from the parent in three ways: + + 1. The seam is a finger joint, not a dovetail. In seam b the Data + Structures band grew four tabs that dropped into the Foundation band -- + one band sitting on the other. Here both bands grow fingers into a + single joint zone JOINT_D deep: four labelled teal tabs descend from + Data Structures, and five unlabelled amber fingers rise from Foundation + Context between and outside them, so the boundary is one square wave and + neither band is simply on top. The fingers are square, not rounded: a + finger joint reads as a finger joint because the fingers are square. + 2. The "relationships" plate and the two double-headed arrows between the + Foundation blocks are gone. + 3. The Foundation band is tightened so everything below the joint -- header, + subtitle, block row, bottom padding -- fits in under 200px. + +Everything else (icons, palette, block content, the bands above) is v4b. + +Joint geometry. JOINT_TOP is where the joint zone starts and JOINT_BOT = +JOINT_TOP + JOINT_D where it ends. The teal band rectangle runs down to +JOINT_BOT and the amber band rectangle starts at JOINT_TOP, so the two +overlap by exactly the joint depth; the teal rectangle is in front, so teal +is what shows in the zone by default, and the amber fingers are painted back +over it. That overlap also hides both rectangles' rounded corners inside the +zone, which is why the outermost fingers are amber and at least CORNER_R +wide -- they cover the curves, and two short vertical strokes redraw the +stack's outer edge straight through the joint. + +Output: knowledge/drafts/pillars-b1.excalidraw (override with --out). +""" +from __future__ import annotations + +import argparse +import os +import sys + +sys.path.insert(0, os.path.join(os.path.dirname(os.path.abspath(__file__)), "..")) + +from excalib import els, base, text, image, save, AMBER, TEAL, VIOLET, ROSE, GREEN, CAPTION # noqa: E402 + +# ---------------------------------------------------------------- layout constants +CONTENT_W = 880 +BAND_GAP = 24 # the vertical gap between bands above the seam +PAD_BAND = 20 # a band's own inner padding on all sides +GAP = 20 # gap between sibling blocks inside a band +GAP_F = 24 # gap between the three Foundation blocks (no arrows between them now) +ICON = 28 # harmonized icon render size +ICON_FILLED = 32 # filled-path icon sets need a bigger box to match optically +CORNER_R = 32 # Excalidraw's adaptive corner radius for a band-sized rectangle + +# ---------------------------------------------------------------- the finger joint +JOINT_D = 40.0 # how deep the joint zone is: how far each set of fingers reaches +TAB_W = 118.0 # width of a labelled teal tab +JOINT_WORDS = ["finding", "diagnosis", "location", "exam type"] +FINGER_W = (CONTENT_W - len(JOINT_WORDS) * TAB_W) / (len(JOINT_WORDS) + 1) # amber, unlabelled +CAPTION_SPACE = 38.0 # teal room above the joint for the lead caption +LEAD = "woven together at every:" + +_uid = [0] + + +def uid(prefix: str) -> str: + _uid[0] += 1 + return f"{prefix}{_uid[0]}" + + +# ---------------------------------------------------------------- primitives +def band_rect(id_: str, x: float, y: float, w: float, h: float, pal: dict, at_front=False) -> dict: + """Draw a band's background rectangle. Pass at_front=True when the band's + true height is only known after laying out its header/blocks (they were + already appended to els) -- this inserts the rect at index 0 so it still + paints behind its own contents instead of covering them. Note the order + that matters at the joint: whichever band rect is inserted at index 0 last + ends up furthest back, so Foundation Context must be built last.""" + r = base("rectangle", id_, x, y, w, h, pal["stroke"], pal["band"]) + r["roundness"] = {"type": 3} + if at_front: + els.insert(0, r) + else: + els.append(r) + return r + + +def band_header(x: float, y: float, icon_path: str, pal: dict, title: str, subtitle: str, + size=20, filled_icon=False) -> float: + """Bold band title with its icon to the left, subtitle below. Returns bottom y.""" + s = ICON_FILLED if filled_icon else ICON + image(uid("bicon"), x, y - (s - ICON) / 2 - 2, s, s, icon_path, color=pal["stroke"]) + els.append(text(uid("btitle"), x + ICON + 12, y, title, size=size, color=pal["text"])) + y2 = y + size * 1.3 + els.append(text(uid("bsub"), x + ICON + 12, y2, subtitle, size=13, color=pal["mid"])) + return y2 + 13 * 1.25 + + +def icon_block_h(lines: list[str], desc: str | None = None) -> float: + """Height an icon_block needs for this many label lines/descriptor.""" + n_title = len(lines) + return 12 + ICON + 8 + n_title * 15 * 1.25 + (13 * 1.25 + 2 if desc else 0) + 10 + + +def icon_block(x: float, y: float, w: float, h: float, icon_path: str, pal: dict, + lines: list[str], desc: str | None = None, filled_icon=False) -> dict: + """Icon centered on top, label line(s) centered below, optional lighter + descriptor line last. Background is the band's own deeper pastel so the + block reads as 'inside' the band, not a separate object.""" + r = base("rectangle", uid("blk"), x, y, w, h, pal["stroke"], pal["block"], sw=1) + r["roundness"] = {"type": 3} + els.append(r) + cx = x + w / 2 + content_h = icon_block_h(lines, desc) - 22 # minus this fn's fixed 12+10 top/bottom pad + top = y + (h - content_h) / 2 + s = ICON_FILLED if filled_icon else ICON + image(uid("blki"), cx - s / 2, top - (s - ICON) / 2, s, s, icon_path, color=pal["stroke"]) + ty = top + ICON + 6 + for ln in lines: + els.append(text(uid("blkt"), x + 6, ty, ln, size=15, color=pal["text"], align="center", w=w - 12)) + ty += 15 * 1.25 + if desc: + els.append(text(uid("blkd"), x + 6, ty + 2, desc, size=13, color=pal["mid"], align="center", w=w - 12)) + return r + + +def chip(cx: float, y_top: float, s: str, fill: str, stroke: str, color: str, + size=13, pad_x=9, pad_y=3) -> float: + """A short caption on its own opaque rounded plate, centered on cx, so it + reads as a label for what it sits over and never mixes with a line or a + band fill behind it. Returns bottom y.""" + w = len(s) * size * 0.58 + 2 * pad_x + h = size * 1.25 + 2 * pad_y + r = base("rectangle", uid("chip"), cx - w / 2, y_top, w, h, stroke, fill, sw=1) + r["roundness"] = {"type": 3} + els.append(r) + els.append(text(uid("chipt"), cx - w / 2 + pad_x, y_top + pad_y, s, size=size, color=color, + align="center", w=w - 2 * pad_x)) + return y_top + h + + +def hconn(x1: float, x2: float, y: float, color: str, sw=1, both=False) -> None: + """A plain horizontal connector; both=True gives it two arrowheads.""" + a = base("arrow" if both else "line", uid("conn"), x1, y, x2 - x1, 0, color, "transparent", sw=sw) + a.update({"points": [[0, 0], [x2 - x1, 0]], "boundElements": None}) + if both: + a.update({"startArrowhead": "arrow", "endArrowhead": "arrow"}) + els.append(a) + + +def fill_rect(x: float, y: float, w: float, h: float, fill: str, rounded=False) -> dict: + """An unstroked patch of colour -- used here to paint an amber finger back + over the teal band rectangle inside the joint zone.""" + r = base("rectangle", uid("fill"), x, y, w, h, "transparent", fill, sw=1) + r["roundness"] = {"type": 3} if rounded else None + els.append(r) + return r + + +def stroke_line(pts: list[tuple[float, float]], color: str, sw=2, opacity=100) -> dict: + """A polyline through pts (absolute coordinates), sharp corners.""" + x0, y0 = pts[0] + xs = [p[0] for p in pts] + ys = [p[1] for p in pts] + ln = base("line", uid("ln"), x0, y0, max(xs) - min(xs), max(ys) - min(ys), color, "transparent", sw=sw) + ln.update({"points": [[p[0] - x0, p[1] - y0] for p in pts], "boundElements": None, "roundness": None}) + ln["opacity"] = opacity + els.append(ln) + return ln + + +def tab_x(i: int) -> float: + """Left edge of labelled teal tab i. The run starts and ends with an amber + finger, so the pattern is A T A T A T A T A across the full width.""" + return FINGER_W + i * (TAB_W + FINGER_W) + + +def draw_finger_joint(g: dict) -> None: + top = g["joint_top"] + bot = top + JOINT_D + + # 1. the amber fingers, painted back over the teal band rectangle. Each runs + # a few px past the joint's bottom so it also covers the teal rectangle's + # own bottom stroke; below the zone it is amber on amber, so nothing shows. + finger_xs = [0.0] + [tab_x(i) + TAB_W for i in range(len(JOINT_WORDS))] + for fx in finger_xs: + fill_rect(fx, top, FINGER_W, JOINT_D + 3, AMBER["band"]) + + # 2. the interlocking boundary as one square wave, left edge to right edge + pts: list[tuple[float, float]] = [(0.0, top)] + for i in range(len(JOINT_WORDS)): + x = tab_x(i) + pts += [(x, top), (x, bot), (x + TAB_W, bot), (x + TAB_W, top)] + pts.append((CONTENT_W, top)) + stroke_line(pts, TEAL["stroke"], sw=2) + + # 3. the stack's outer edge through the joint. Both band rectangles curve + # away inside the zone; the amber fingers at each end cover those curves, + # so the edge is redrawn straight in the amber that is actually there. + for x in (0.0, CONTENT_W): + stroke_line([(x, top), (x, bot + 3)], AMBER["stroke"], sw=2) + + # 4. the four words, one per teal tab + for i, word in enumerate(JOINT_WORDS): + els.append(text(uid("jw"), tab_x(i), top + (JOINT_D - 13 * 1.25) / 2, word, + size=13, color=TEAL["text"], align="center", w=TAB_W)) + + # 5. the lead caption, in the teal room kept above the joint + els.append(text(uid("lead"), 0, top - CAPTION_SPACE + (CAPTION_SPACE - 13 * 1.25) / 2, LEAD, + size=13, color=TEAL["mid"], align="center", w=CONTENT_W)) + + +# ============================================================ the stack +def build(out_path: str) -> str: + # ---------------------------------------- 5/4. Use Cases | Sample Applications + Y_TOP = 0 + GAP_MID = 104 # wide enough for "illustrates" to sit clear of both panels + PANEL_PAD = 14 + PANEL_INSET = PAD_BAND - 2 # same left inset as the full-width band headers + PANEL_TITLE = 18 + PANEL_H = PANEL_PAD + PANEL_TITLE * 1.3 + 13 * 1.25 + PANEL_PAD + panel_w = (CONTENT_W - GAP_MID) / 2 + + band_rect(uid("panel"), 0, Y_TOP, panel_w, PANEL_H, ROSE) + band_rect(uid("panel"), panel_w + GAP_MID, Y_TOP, panel_w, PANEL_H, GREEN) + band_header(PANEL_INSET, Y_TOP + PANEL_PAD, "icons/lucide-lightbulb.svg", ROSE, + "Use Cases", "what the project wants built", size=PANEL_TITLE) + band_header(panel_w + GAP_MID + PANEL_INSET, Y_TOP + PANEL_PAD, "icons/lucide-app-window.svg", GREEN, + "Sample Applications", "what has been built", size=PANEL_TITLE) + conn_y = Y_TOP + PANEL_H / 2 + hconn(panel_w + 2, panel_w + GAP_MID - 2, conn_y, CAPTION) + chip(panel_w + GAP_MID / 2, conn_y - 7 - (13 * 1.25 + 6), "illustrates", + "#ffffff", "transparent", CAPTION) + + # ---------------------------------------- 3. SDKs (thin full-width band) + Y_SDK = Y_TOP + PANEL_H + BAND_GAP + sdk_hdr_bottom = band_header(PAD_BAND - 2, Y_SDK + 16, "icons/lucide-package.svg", VIOLET, + "SDKs", "wrap the structures · attach the shared knowledge · support authoring", + size=18) + SDK_BOTTOM = sdk_hdr_bottom + 16 + band_rect(uid("band"), 0, Y_SDK, CONTENT_W, SDK_BOTTOM - Y_SDK, VIOLET, at_front=True) + + # ---------------------------------------- 2. Data Structures + Y_DATA = SDK_BOTTOM + BAND_GAP + hdr_bottom = band_header(PAD_BAND - 2, Y_DATA + 18, "icons/lucide-layers.svg", TEAL, + "Data Structures", "this patient · Patient Context", size=20) + BLOCK_ROW_Y = hdr_bottom + 14 + W4 = (CONTENT_W - 2 * PAD_BAND - 3 * GAP) / 4 + d_positions = [PAD_BAND + i * (W4 + GAP) for i in range(4)] + d_specs = [ + ("icons/lucide-clipboard.svg", ["Observation"], False), + ("icons/lucide-clipboard-list.svg", ["Exam Finding", "List"], False), + ("icons/lucide-list.svg", ["Imaging Problem", "List"], False), + ("icons/healthicons-person.svg", ["Imaging Persona"], True), + ] + ROW_H_DATA = max(icon_block_h(lines) for _, lines, _ in d_specs) + for xpos, (ipath, lines, filled) in zip(d_positions, d_specs): + icon_block(xpos, BLOCK_ROW_Y, W4, ROW_H_DATA, ipath, TEAL, lines, filled_icon=filled) + DATA_BLOCKS_BOTTOM = BLOCK_ROW_Y + ROW_H_DATA + + # the joint zone: the two band rectangles overlap across exactly its depth + JOINT_TOP = DATA_BLOCKS_BOTTOM + CAPTION_SPACE + JOINT_BOT = JOINT_TOP + JOINT_D + band_rect(uid("band"), 0, Y_DATA, CONTENT_W, JOINT_BOT - Y_DATA, TEAL, at_front=True) + + # ---------------------------------------- 1. Foundation Context (bottom) + # Built last so its rect lands behind the Data Structures band in the joint. + FOUND_TOP = JOINT_TOP + hdr_bottom_f = band_header(PAD_BAND - 2, JOINT_BOT + 14, + "icons/lucide-book-open.svg", AMBER, + "Foundation Context", "shared, curated knowledge", size=20) + F_ROW_Y = hdr_bottom_f + 10 + W3 = (CONTENT_W - 2 * PAD_BAND - 2 * GAP_F) / 3 + f_positions = [PAD_BAND + i * (W3 + GAP_F) for i in range(3)] + f_specs = [ + ("icons/lucide-tag.svg", ["Finding/diagnosis definitions"], "finding models · CDEs", False), + ("icons/healthicons-lungs.svg", ["Anatomic locations"], "anchored in RadLex", True), + ("icons/healthicons-xray.svg", ["Exam types"], "LOINC/RSNA Playbook", True), + ] + ROW_H_FOUND = max(icon_block_h(lines, desc) for _, lines, desc, _ in f_specs) + for xpos, (ipath, lines, desc, filled) in zip(f_positions, f_specs): + icon_block(xpos, F_ROW_Y, W3, ROW_H_FOUND, ipath, AMBER, lines, desc=desc, filled_icon=filled) + FOUND_BAND_BOTTOM = F_ROW_Y + ROW_H_FOUND + PAD_BAND + band_rect(uid("band"), 0, FOUND_TOP, CONTENT_W, FOUND_BAND_BOTTOM - FOUND_TOP, AMBER, at_front=True) + + print(f"foundation band below the joint: {FOUND_BAND_BOTTOM - JOINT_BOT:.1f}px") + + # ---------------------------------------- the joint, drawn over both bands + draw_finger_joint({"joint_top": JOINT_TOP}) + + return save(out_path) + + +def main() -> None: + ap = argparse.ArgumentParser(description=__doc__.split("\n")[0]) + ap.add_argument("--out", default="knowledge/drafts/pillars-b1.excalidraw", + help="output path relative to the repo root") + args = ap.parse_args() + build(args.out) + + +if __name__ == "__main__": + main() diff --git a/tools/diagrams/variants/build_pillars_b2.py b/tools/diagrams/variants/build_pillars_b2.py new file mode 100644 index 0000000..d0773c8 --- /dev/null +++ b/tools/diagrams/variants/build_pillars_b2.py @@ -0,0 +1,404 @@ +#!/usr/bin/env python3 +"""Build the OIDM "five pillars" stack diagram -- seam variant B2, "tabs plug +into blocks". + +Variant of tools/diagrams/build_pillars.py --seam b. In v4b the four teal tabs +dropped out of the Data Structures band into empty amber ground: the joint was +band-to-band, and the three Foundation blocks sat well below it with no visible +relation to any particular tab. B2 makes the joint block-to-block instead. + + * The three Foundation Context blocks rise until their top edges *are* the + seam, so there is no amber ground between the joint and the blocks. + * Each teal tab lands in a named block: "finding" and "diagnosis" both plug + into "Finding/diagnosis definitions", "location" into "Anatomic locations", + "exam type" into "Exam types". A tab is drawn over the block's top edge, so + the edge reads as a notch the tab fills. + * The Foundation band header moves to a left column beside the blocks (icon + + wrapped title + subtitle), with the "woven together at every:" lead above + it, on the tab row, where it was in v4b. + * The "relationships" plate and the two double-headed arrows between the + Foundation blocks are gone, and the band is 151px tall including its header. + +Everything above the seam (Use Cases / Sample Applications, SDKs, the four Data +Structures cards) is unchanged from v4b. + +Because the Foundation band is laid out for this seam, the a/b/c seam switch of +the parent builder is not carried over: this file draws B2 and nothing else. + +Block and tab widths here are sized from measured Helvetica advance widths (see +tools/diagrams/README.md, "Measuring text instead of estimating it"), not from +excalib's 0.58-per-character estimate. + +Icons: unchanged from build_pillars.py -- Health Icons (CC0/MIT, outline) for +anatomy/exam/person glyphs, Lucide (ISC) for the rest; see icons/LICENSES.md. + +Output: knowledge/drafts/pillars-b2.excalidraw (override with --out). +""" +from __future__ import annotations + +import argparse +import math +import os +import sys + +sys.path.insert(0, os.path.join(os.path.dirname(os.path.abspath(__file__)), "..")) + +from excalib import els, base, text, image, save, AMBER, TEAL, VIOLET, ROSE, GREEN, CAPTION + +# ---------------------------------------------------------------- layout constants +CONTENT_W = 880 +BAND_GAP = 24 # the vertical gap between bands above the seam +PAD_BAND = 20 # a band's own inner padding on all sides +GAP = 20 # gap between sibling blocks inside a band +ICON = 28 # harmonized icon render size +ICON_FILLED = 32 # filled-path icon sets need a bigger box to match optically +CORNER_R = 32 # Excalidraw's adaptive corner radius for a band-sized rectangle + +# ---- the seam +TAB_W = 92.0 # a tab is sized to hold "diagnosis"/"exam type" (60px measured) with air +TAB_D = 30.0 # how far a tab descends past the seam into its block +TAB_R = 10.0 # the tab's bottom corner radius +TAB_GAP = 24.0 # between the two tabs that share the first block +TAB_RISE = 14.0 # how far the tab's fill runs up past the seam, to break the seam stroke +LEAD = "woven together at every:" + +# ---- the Foundation band's left header column +LEFT_W = 196.0 # holds "shared, curated knowledge" (156 measured) beside the icon, on one line +LEFT_GAP = 20.0 +PAD_BOTTOM = 26 # a little more air under the blocks than PAD_BAND, so their + # bottom corner radius does not crowd the band's own + +_uid = [0] + + +def uid(prefix: str) -> str: + _uid[0] += 1 + return f"{prefix}{_uid[0]}" + + +# ---------------------------------------------------------------- primitives +def band_rect(id_: str, x: float, y: float, w: float, h: float, pal: dict, at_front=False) -> dict: + """Draw a band's background rectangle. Pass at_front=True when the band's + true height is only known after laying out its header/blocks (they were + already appended to els) -- this inserts the rect at index 0 so it still + paints behind its own contents instead of covering them. Note the order + that matters at the seam: whichever band rect is inserted at index 0 last + ends up furthest back, so Foundation Context must be built last.""" + r = base("rectangle", id_, x, y, w, h, pal["stroke"], pal["band"]) + r["roundness"] = {"type": 3} + if at_front: + els.insert(0, r) + else: + els.append(r) + return r + + +def band_header(x: float, y: float, icon_path: str, pal: dict, title: str, subtitle: str, + size=20, filled_icon=False) -> float: + """Bold band title with its icon to the left, subtitle below. Returns bottom y.""" + s = ICON_FILLED if filled_icon else ICON + image(uid("bicon"), x, y - (s - ICON) / 2 - 2, s, s, icon_path, color=pal["stroke"]) + els.append(text(uid("btitle"), x + ICON + 12, y, title, size=size, color=pal["text"])) + y2 = y + size * 1.3 + els.append(text(uid("bsub"), x + ICON + 12, y2, subtitle, size=13, color=pal["mid"])) + return y2 + 13 * 1.25 + + +def left_header(x: float, y: float, icon_path: str, pal: dict, title_lines: list[str], + sub_lines: list[str], size=20) -> float: + """The band header as a narrow left column: the icon hangs at the left + margin beside the first title line, and every line of the title and the + subtitle shares one text column indented past it -- the same icon/text + relationship as the full-width band headers, just wrapped. Returns bottom y.""" + image(uid("bicon"), x, y + (size * 1.3 - ICON) / 2 - 1, ICON, ICON, icon_path, color=pal["stroke"]) + tx, yy = x + ICON + 12, y + for ln in title_lines: + els.append(text(uid("btitle"), tx, yy, ln, size=size, color=pal["text"])) + yy += size * 1.3 + yy += 4 + for ln in sub_lines: + els.append(text(uid("bsub"), tx, yy, ln, size=13, color=pal["mid"])) + yy += 13 * 1.25 + return yy + + +def left_header_h(n_title: int, n_sub: int, size=20) -> float: + return n_title * size * 1.3 + 4 + n_sub * 13 * 1.25 + + +def icon_block_h(lines: list[str], desc: str | None = None) -> float: + """Height an icon_block needs for this many label lines/descriptor.""" + n_title = len(lines) + return 12 + ICON + 8 + n_title * 15 * 1.25 + (13 * 1.25 + 2 if desc else 0) + 10 + + +def icon_block(x: float, y: float, w: float, h: float, icon_path: str, pal: dict, + lines: list[str], desc: str | None = None, filled_icon=False, + top_inset: float = 0.0) -> dict: + """Icon centered on top, label line(s) centered below, optional lighter + descriptor line last. Background is the band's own deeper pastel so the + block reads as 'inside' the band, not a separate object. + + top_inset reserves that much of the block's top edge for something else -- + here, the notch a seam tab plugs into -- and centres the contents in what + is left, so a tab never lands on the icon.""" + r = base("rectangle", uid("blk"), x, y, w, h, pal["stroke"], pal["block"], sw=1) + r["roundness"] = {"type": 3} + els.append(r) + cx = x + w / 2 + content_h = icon_block_h(lines, desc) - 22 # minus this fn's fixed 12+10 top/bottom pad + top = y + top_inset + (h - top_inset - content_h) / 2 + s = ICON_FILLED if filled_icon else ICON + image(uid("blki"), cx - s / 2, top - (s - ICON) / 2, s, s, icon_path, color=pal["stroke"]) + ty = top + ICON + 6 + for ln in lines: + els.append(text(uid("blkt"), x + 6, ty, ln, size=15, color=pal["text"], align="center", w=w - 12)) + ty += 15 * 1.25 + if desc: + els.append(text(uid("blkd"), x + 6, ty + 2, desc, size=13, color=pal["mid"], align="center", w=w - 12)) + return r + + +def chip(cx: float, y_top: float, s: str, fill: str, stroke: str, color: str, + size=13, pad_x=9, pad_y=3) -> float: + """A short caption on its own opaque rounded plate, centered on cx, so it + reads as a label for what it sits over and never mixes with a line or a + band fill behind it. Returns bottom y.""" + w = len(s) * size * 0.58 + 2 * pad_x + h = size * 1.25 + 2 * pad_y + r = base("rectangle", uid("chip"), cx - w / 2, y_top, w, h, stroke, fill, sw=1) + r["roundness"] = {"type": 3} + els.append(r) + els.append(text(uid("chipt"), cx - w / 2 + pad_x, y_top + pad_y, s, size=size, color=color, + align="center", w=w - 2 * pad_x)) + return y_top + h + + +def hconn(x1: float, x2: float, y: float, color: str, sw=1, both=False) -> None: + """A plain horizontal connector; both=True gives it two arrowheads.""" + a = base("arrow" if both else "line", uid("conn"), x1, y, x2 - x1, 0, color, "transparent", sw=sw) + a.update({"points": [[0, 0], [x2 - x1, 0]], "boundElements": None}) + if both: + a.update({"startArrowhead": "arrow", "endArrowhead": "arrow"}) + els.append(a) + + +def fill_rect(x: float, y: float, w: float, h: float, fill: str, rounded=False) -> dict: + """An unstroked patch of colour -- used to close the notch two rounded + bands leave where they meet, to square off a block's rounded top corners + where that top edge has become the seam, and to let a tab sit across a + band edge without that edge's stroke running through it.""" + r = base("rectangle", uid("fill"), x, y, w, h, "transparent", fill, sw=1) + r["roundness"] = {"type": 3} if rounded else None + els.append(r) + return r + + +def stroke_line(pts: list[tuple[float, float]], color: str, sw=2, opacity=100) -> dict: + """A polyline through pts (absolute coordinates), sharp corners.""" + x0, y0 = pts[0] + xs = [p[0] for p in pts] + ys = [p[1] for p in pts] + ln = base("line", uid("ln"), x0, y0, max(xs) - min(xs), max(ys) - min(ys), color, "transparent", sw=sw) + ln.update({"points": [[p[0] - x0, p[1] - y0] for p in pts], "boundElements": None, "roundness": None}) + ln["opacity"] = opacity + els.append(ln) + return ln + + +def arc_pts(cx: float, cy: float, r: float, a0: float, a1: float, n=4) -> list[tuple[float, float]]: + """Points along a circular arc, for rounding a corner of a polyline.""" + return [(cx + r * math.cos(a0 + (a1 - a0) * i / n), cy + r * math.sin(a0 + (a1 - a0) * i / n)) + for i in range(n + 1)] + + +def corner_patch(y_top: float, y_bot: float, pal: dict, anchor: dict) -> None: + """Two rounded bands that meet edge to edge leave a white notch at each + end, where both corner radii curve away from the seam. Fill those notches + with the band's own colour and redraw its outer border straight, so the + stack keeps one silhouette through the seam. + + A notch is CORNER_R deep, which reaches back into the band far enough to + cover a card corner or a header icon, so the patch is restacked to sit + directly above `anchor` (its own band rectangle) instead of on top of + everything the seam is drawn after.""" + made = [ + fill_rect(-1, y_top, CORNER_R + 1, y_bot - y_top, pal["band"]), + fill_rect(CONTENT_W - CORNER_R, y_top, CORNER_R + 1, y_bot - y_top, pal["band"]), + stroke_line([(0, y_top), (0, y_bot)], pal["stroke"], sw=2), + stroke_line([(CONTENT_W, y_top), (CONTENT_W, y_bot)], pal["stroke"], sw=2), + ] + for e in reversed(made): + els.remove(e) + els.insert(els.index(anchor) + 1, e) + + +# ============================================================ the seam +def tab_xs(bx: float, bw: float, n: int) -> list[float]: + """Left edges of the n tabs that plug into a block of width bw at bx.""" + total = n * TAB_W + (n - 1) * TAB_GAP + x0 = bx + (bw - total) / 2 + return [x0 + i * (TAB_W + TAB_GAP) for i in range(n)] + + +def draw_seam(g: dict) -> None: + """The joint: the seam line, then one teal tab per attachment kind cut + into the top edge of the Foundation block it attaches to.""" + seam = g["found_top"] + corner_patch(seam - CORNER_R, seam, TEAL, g["teal_band"]) + corner_patch(seam, seam + CORNER_R, AMBER, g["amber_band"]) + + # The Foundation blocks' top edges are the seam now, so square off their + # rounded top corners -- otherwise each block reads as a lozenge tucked + # under the band rather than a block the band rests on. + for bx, bw in zip(g["f_positions"], g["f_widths"]): + fill_rect(bx, seam, bw, CORNER_R, AMBER["block"]) + stroke_line([(bx, seam), (bx, seam + CORNER_R)], AMBER["stroke"], sw=1) + stroke_line([(bx + bw, seam), (bx + bw, seam + CORNER_R)], AMBER["stroke"], sw=1) + + # Over a block, the seam is that block's own top edge, so it is drawn in + # the block's stroke at the block's own weight: the teal tab then visibly + # interrupts an amber edge, which is what makes the joint read as a notch + # cut into this block rather than a scallop in the band above it. Each tab + # paints over its own stretch of that edge next. Everywhere else the seam + # is the Data Structures band's own bottom edge, in teal at band weight. + edges: list[float] = [0.0] + for bx, bw in zip(g["f_positions"], g["f_widths"]): + stroke_line([(bx, seam), (bx + bw, seam)], AMBER["stroke"], sw=1) + edges += [bx, bx + bw] + edges.append(CONTENT_W) + for x1, x2 in zip(edges[0::2], edges[1::2]): + if x2 - x1 > 0.5: + stroke_line([(x1, seam), (x2, seam)], TEAL["stroke"], sw=2) + + els.append(text(uid("lead"), PAD_BAND, seam + (TAB_D - 13 * 1.25) / 2, LEAD, + size=13, color=AMBER["mid"])) + + for x, word in g["tabs"]: + # the tab's fill runs up past the seam and down over the block's top + # edge, so both strokes stop at the tab: what is left reads as a notch + # cut into the block, filled by the tab. + fill_rect(x, seam - TAB_RISE, TAB_W, TAB_D + TAB_RISE, TEAL["band"], rounded=True) + pts = [(x, seam)] + pts += arc_pts(x + TAB_R, seam + TAB_D - TAB_R, TAB_R, math.pi, math.pi / 2) + pts += arc_pts(x + TAB_W - TAB_R, seam + TAB_D - TAB_R, TAB_R, math.pi / 2, 0.0) + pts += [(x + TAB_W, seam)] + stroke_line(pts, TEAL["stroke"], sw=2) + els.append(text(uid("tabw"), x, seam + (TAB_D - 13 * 1.25) / 2, word, + size=13, color=TEAL["text"], align="center", w=TAB_W)) + + +# ============================================================ the stack +def build(out_path: str) -> str: + # ---------------------------------------- 5/4. Use Cases | Sample Applications + Y_TOP = 0 + GAP_MID = 104 # wide enough for "illustrates" to sit clear of both panels + PANEL_PAD = 14 + PANEL_INSET = PAD_BAND - 2 # same left inset as the full-width band headers + PANEL_TITLE = 18 + PANEL_H = PANEL_PAD + PANEL_TITLE * 1.3 + 13 * 1.25 + PANEL_PAD + panel_w = (CONTENT_W - GAP_MID) / 2 + + band_rect(uid("panel"), 0, Y_TOP, panel_w, PANEL_H, ROSE) + band_rect(uid("panel"), panel_w + GAP_MID, Y_TOP, panel_w, PANEL_H, GREEN) + band_header(PANEL_INSET, Y_TOP + PANEL_PAD, "icons/lucide-lightbulb.svg", ROSE, + "Use Cases", "what the project wants built", size=PANEL_TITLE) + band_header(panel_w + GAP_MID + PANEL_INSET, Y_TOP + PANEL_PAD, "icons/lucide-app-window.svg", GREEN, + "Sample Applications", "what has been built", size=PANEL_TITLE) + conn_y = Y_TOP + PANEL_H / 2 + hconn(panel_w + 2, panel_w + GAP_MID - 2, conn_y, CAPTION) + chip(panel_w + GAP_MID / 2, conn_y - 7 - (13 * 1.25 + 6), "illustrates", + "#ffffff", "transparent", CAPTION) + + # ---------------------------------------- 3. SDKs (thin full-width band) + Y_SDK = Y_TOP + PANEL_H + BAND_GAP + sdk_hdr_bottom = band_header(PAD_BAND - 2, Y_SDK + 16, "icons/lucide-package.svg", VIOLET, + "SDKs", "wrap the structures · attach the shared knowledge · support authoring", + size=18) + SDK_BOTTOM = sdk_hdr_bottom + 16 + band_rect(uid("band"), 0, Y_SDK, CONTENT_W, SDK_BOTTOM - Y_SDK, VIOLET, at_front=True) + + # ---------------------------------------- 2. Data Structures + Y_DATA = SDK_BOTTOM + BAND_GAP + hdr_bottom = band_header(PAD_BAND - 2, Y_DATA + 18, "icons/lucide-layers.svg", TEAL, + "Data Structures", "this patient · Patient Context", size=20) + BLOCK_ROW_Y = hdr_bottom + 14 + W4 = (CONTENT_W - 2 * PAD_BAND - 3 * GAP) / 4 + d_positions = [PAD_BAND + i * (W4 + GAP) for i in range(4)] + d_specs = [ + ("icons/lucide-clipboard.svg", ["Observation"], False), + ("icons/lucide-clipboard-list.svg", ["Exam Finding", "List"], False), + ("icons/lucide-list.svg", ["Imaging Problem", "List"], False), + ("icons/healthicons-person.svg", ["Imaging Persona"], True), + ] + ROW_H_DATA = max(icon_block_h(lines) for _, lines, _ in d_specs) + for xpos, (ipath, lines, filled) in zip(d_positions, d_specs): + icon_block(xpos, BLOCK_ROW_Y, W4, ROW_H_DATA, ipath, TEAL, lines, filled_icon=filled) + DATA_BLOCKS_BOTTOM = BLOCK_ROW_Y + ROW_H_DATA + + DATA_BAND_BOTTOM = DATA_BLOCKS_BOTTOM + PAD_BAND + teal_band = band_rect(uid("band"), 0, Y_DATA, CONTENT_W, DATA_BAND_BOTTOM - Y_DATA, TEAL, at_front=True) + + # ---------------------------------------- 1. Foundation Context (bottom) + # Built last so its rect lands behind the Data Structures band at the seam. + # The two bands are flush: the seam is this band's top edge, and it is also + # the top edge of all three blocks, which start at it with no amber ground + # in between. The header sits in a left column beside them. + FOUND_TOP = DATA_BAND_BOTTOM + + f_specs = [ + ("icons/lucide-tag.svg", ["Finding/diagnosis definitions"], "finding models · CDEs", False, + ["finding", "diagnosis"]), + ("icons/healthicons-lungs.svg", ["Anatomic locations"], "anchored in RadLex", True, + ["location"]), + ("icons/healthicons-xray.svg", ["Exam types"], "LOINC/RSNA Playbook", True, + ["exam type"]), + ] + # The first block holds two tabs, so it is the widest; it also holds the + # longest label ("Finding/diagnosis definitions", 188px measured). + F_WIDTHS = [236.0, 174.0, 174.0] + BX0 = PAD_BAND + LEFT_W + LEFT_GAP + f_positions = [] + x = BX0 + for w in F_WIDTHS: + f_positions.append(x) + x += w + GAP + + ROW_H_FOUND = TAB_D + max(icon_block_h(lines, desc) for _, lines, desc, _, _ in f_specs) + tabs: list[tuple[float, str]] = [] + for xpos, bw, (ipath, lines, desc, filled, words) in zip(f_positions, F_WIDTHS, f_specs): + icon_block(xpos, FOUND_TOP, bw, ROW_H_FOUND, ipath, AMBER, lines, desc=desc, + filled_icon=filled, top_inset=TAB_D) + tabs += list(zip(tab_xs(xpos, bw, len(words)), words)) + FOUND_BLOCKS_BOTTOM = FOUND_TOP + ROW_H_FOUND + + hdr_top = FOUND_TOP + TAB_D + (ROW_H_FOUND - TAB_D - left_header_h(2, 1)) / 2 + left_header(PAD_BAND, hdr_top, "icons/lucide-book-open.svg", AMBER, + ["Foundation", "Context"], ["shared, curated knowledge"], size=20) + + FOUND_BAND_BOTTOM = FOUND_BLOCKS_BOTTOM + PAD_BOTTOM + amber_band = band_rect(uid("band"), 0, FOUND_TOP, CONTENT_W, FOUND_BAND_BOTTOM - FOUND_TOP, + AMBER, at_front=True) + + # ---------------------------------------- the seam, drawn over both bands + draw_seam({ + "found_top": FOUND_TOP, + "f_positions": f_positions, "f_widths": F_WIDTHS, + "tabs": tabs, + "teal_band": teal_band, "amber_band": amber_band, + }) + print(f"foundation band height: {FOUND_BAND_BOTTOM - FOUND_TOP:.0f}px") + + return save(out_path) + + +def main() -> None: + ap = argparse.ArgumentParser(description=__doc__.split("\n")[0]) + ap.add_argument("--out", default="knowledge/drafts/pillars-b2.excalidraw", + help="output path relative to the repo root") + args = ap.parse_args() + build(args.out) + + +if __name__ == "__main__": + main() diff --git a/tools/diagrams/variants/build_pillars_b3.py b/tools/diagrams/variants/build_pillars_b3.py new file mode 100644 index 0000000..f938597 --- /dev/null +++ b/tools/diagrams/variants/build_pillars_b3.py @@ -0,0 +1,462 @@ +#!/usr/bin/env python3 +"""Build the OIDM "five pillars" stack diagram -- seam variant B3, v7. + +Descended from ../build_pillars.py seam b. Where that file offered three +alternative treatments of one seam, this one uses a single treatment -- a +castellated edge -- at every place two bands meet, so the stack's joints are +one visual language instead of three unrelated devices. + +A castellated joint is a square wave drawn once along the boundary of two +bands that overlap by the wave's swing. The upper band is painted over the +lower one throughout the overlap; castellate() then restores the lower band's +fill in the gaps between the teeth and strokes the wave in the upper band's +colour, so the two bands share one interlocking edge with no gap, no tab +shapes and no connectors. Teeth are always twice as wide as the gaps between +them, whatever their count or depth, which is what makes the three joints read +as a family. + +The three joints, top to bottom: + + Sample Applications -> SDKs four green teeth, JOINT_DEPTH deep, labelled + with what an application gets: create, read, + resolve, author. Only the right half of the + SDK band's top edge is joined; Use Cases + keeps a plain BAND_GAP above it, because it + is what the project wants built rather than + something running on the SDKs. + SDKs -> Data Structures two wide violet teeth (wraps, manipulates + instances) plus one narrow tooth at the + right margin that does not close: it carries + on down a reserved lane beside the cards. + Data Structures -> Foundation one castellated line across the whole of the + Foundation band's top edge, SEAM_DEPTH deep: + four teal teeth carrying the attachment + kinds, then, flush right, one violet tooth + where the lane lands, reading what the SDKs + do to the foundation. The lane stops at that + edge rather than running on into the band, + so the band keeps an even margin both sides, + and the SDKs' reach into the foundation is + shown without an arrow. + +Two depths, belonging to the edge rather than to the joint: JOINT_DEPTH for the +two joints above, SEAM_DEPTH for the Foundation band's top edge, which the seam +and the lane's foot share. + +Each joint whose upper band has room for it carries a lead line in that band's +gutter, left-aligned on the first tooth so its colon runs into the list; the +SDK/Data joint has no gutter and so no lead. + +Icons: Health Icons (CC0/MIT, outline style) for anatomy/exam/person glyphs, +Lucide (ISC, with one Feather-derived MIT icon) for everything else -- see +icons/LICENSES.md. ICON_FILLED compensates for Health Icons' filled-path art +rendering optically smaller than Lucide's stroke art at the same box size. + +Output: knowledge/drafts/pillars-b3.excalidraw (override with --out); render +with render_excalidraw.py. +""" +from __future__ import annotations + +import argparse +import os +import sys + +sys.path.insert(0, os.path.dirname(os.path.dirname(os.path.abspath(__file__)))) + +from excalib import els, base, text, image, save, AMBER, TEAL, VIOLET, ROSE, GREEN, CAPTION # noqa: E402 + +# ---------------------------------------------------------------- layout constants +CONTENT_W = 880 +BAND_GAP = 24 # the vertical gap wherever two bands do NOT join +PAD_BAND = 20 # a band's own inner padding on all sides +GAP = 20 # gap between sibling blocks inside a band, both rows +ICON = 28 # harmonized icon render size +ICON_FILLED = 32 # filled-path icon sets need a bigger box to match optically +CORNER_R = 32 # Excalidraw's adaptive corner radius for a band-sized rectangle + +# ---------------------------------------------------------------- joint constants +TOOTH_RATIO = 2 # every joint: a tooth is this many gaps wide +JOINT_OVERRUN = 3.0 # a gap's fill runs this far past the lower level, to bury + # the upper band's own border where it crosses the gap +LEAD_GAP = 10.0 # clearance between a lead line and the wave's upper level + +SEAM_DEPTH = 36.0 # Data Structures -> Foundation Context +SEAM_WORDS = ["finding", "diagnosis", "location", "exam type"] +SEAM_LEAD = "woven together at every:" + +JOINT_DEPTH = 24.0 # the two smaller joints +APP_WORDS = ["create", "read", "resolve", "author"] +APP_LEAD = "an application can:" +SDK_WORDS = ["wraps", "manipulates instances"] + +LANE_W = 34.0 # the narrow violet tooth that carries on down. 28 read as a + # wire rather than as structure, so this is a little wider. +LANE_CLEAR = 12.0 # clear space between the Data Structures cards and the lane +# The lane's foot: one wide violet tooth cut into the Foundation band's top edge, +# at the same depth as the seam's own teeth, so the whole of that edge is one +# castellated line -- four teal teeth and, where the lane lands, a violet one. +# Two separate teeth were the brief; they cannot be drawn, because a tooth wide +# enough for the longer phrase does not sit under a 34px lane, so the second +# would float unattached. The middot carries the two roles instead. +FOOT_LABEL = "attaches to · authors & maintains" +FOOT_PAD = 20.0 # horizontal padding inside the foot, as in the other wide teeth + +DATA_TOP_PAD = 34.0 # Data Structures' header, clear of the violet teeth +FOUND_TOP_PAD = 45.0 # Foundation Context's header, clear of the teal teeth +FOUND_HDR_GAP = 12.0 +FOUND_ROW_SHRINK = 11.0 +FOUND_BOTTOM_PAD = 15.0 + +# Measured, not estimated: excalib.text()'s 0.58 * fontSize per character is +# 25-40% wide for these strings, which blew the "illustrates" plate out to twice +# the width of its own text and swallowed the connector either side of it. Only +# strings positioned or sized by their width need an entry; a word centred in a +# tooth does not. Widths in px for Helvetica as headless Chromium resolves it -- +# see "Measuring text instead of estimating it" in tools/diagrams/README.md. +MEASURED = { + ("illustrates", 13): 54.9, + (SEAM_LEAD, 13): 142.4, + (APP_LEAD, 13): 108.4, + (FOOT_LABEL, 13): 190.0, +} +FOOT_W = MEASURED[(FOOT_LABEL, 13)] + 2 * FOOT_PAD + +_uid = [0] + + +def uid(prefix: str) -> str: + _uid[0] += 1 + return f"{prefix}{_uid[0]}" + + +def even_teeth(x0: float, x1: float, n: int) -> list[tuple[float, float]]: + """n teeth evenly spread between x0 and x1, each TOOTH_RATIO units wide with + a one-unit gap between them and at both ends, filling the span exactly.""" + unit = (x1 - x0) / (n * TOOTH_RATIO + n + 1) + return [(x0 + ((TOOTH_RATIO + 1) * i + 1) * unit, + x0 + ((TOOTH_RATIO + 1) * i + 1 + TOOTH_RATIO) * unit) for i in range(n)] + + +# ---------------------------------------------------------------- primitives +def band_rect(id_: str, x: float, y: float, w: float, h: float, pal: dict, at_front=False) -> dict: + """Draw a band's background rectangle. Pass at_front=True when the band's + true height is only known after laying out its header/blocks (they were + already appended to els) -- this inserts the rect at index 0 so it still + paints behind its own contents instead of covering them. + + The order this produces is what makes the joints work: each band rect is + inserted at 0 after the one above it, so the stack paints back to front, + bottom band first, and every band covers the one below it wherever they + overlap. castellate() then only has to put the lower band's colour back.""" + r = base("rectangle", id_, x, y, w, h, pal["stroke"], pal["band"]) + r["roundness"] = {"type": 3} + if at_front: + els.insert(0, r) + else: + els.append(r) + return r + + +def band_header(x: float, y: float, icon_path: str, pal: dict, title: str, + subtitle: str | None, size=20, filled_icon=False) -> float: + """Bold band title with its icon to the left, subtitle below. A band whose + edges already say what it does takes subtitle=None. Returns bottom y.""" + s = ICON_FILLED if filled_icon else ICON + image(uid("bicon"), x, y - (s - ICON) / 2 - 2, s, s, icon_path, color=pal["stroke"]) + els.append(text(uid("btitle"), x + ICON + 12, y, title, size=size, color=pal["text"])) + y2 = y + size * 1.3 + if subtitle is None: + return y2 + els.append(text(uid("bsub"), x + ICON + 12, y2, subtitle, size=13, color=pal["mid"])) + return y2 + 13 * 1.25 + + +def icon_block_h(lines: list[str], desc: str | None = None) -> float: + """Height an icon_block needs for this many label lines/descriptor.""" + n_title = len(lines) + return 12 + ICON + 8 + n_title * 15 * 1.25 + (13 * 1.25 + 2 if desc else 0) + 10 + + +def icon_block(x: float, y: float, w: float, h: float, icon_path: str, pal: dict, + lines: list[str], desc: str | None = None, filled_icon=False) -> dict: + """Icon centered on top, label line(s) centered below, optional lighter + descriptor line last. Background is the band's own deeper pastel so the + block reads as 'inside' the band, not a separate object. Content is + centered in h, so passing an h below icon_block_h() trims the block's own + padding without touching the icon or the type.""" + r = base("rectangle", uid("blk"), x, y, w, h, pal["stroke"], pal["block"], sw=1) + r["roundness"] = {"type": 3} + els.append(r) + cx = x + w / 2 + content_h = icon_block_h(lines, desc) - 22 # minus this fn's fixed 12+10 top/bottom pad + top = y + (h - content_h) / 2 + s = ICON_FILLED if filled_icon else ICON + image(uid("blki"), cx - s / 2, top - (s - ICON) / 2, s, s, icon_path, color=pal["stroke"]) + ty = top + ICON + 6 + for ln in lines: + els.append(text(uid("blkt"), x + 6, ty, ln, size=15, color=pal["text"], align="center", w=w - 12)) + ty += 15 * 1.25 + if desc: + els.append(text(uid("blkd"), x + 6, ty + 2, desc, size=13, color=pal["mid"], align="center", w=w - 12)) + return r + + +def chip(cx: float, y_top: float, s: str, fill: str, stroke: str, color: str, + size=13, pad_x=9, pad_y=3) -> float: + """A short caption on its own opaque rounded plate, centered on cx, so it + reads as a label for what it sits over and never mixes with a line or a + band fill behind it. Returns bottom y.""" + w = MEASURED.get((s, size), len(s) * size * 0.58) + 2 * pad_x + h = size * 1.25 + 2 * pad_y + r = base("rectangle", uid("chip"), cx - w / 2, y_top, w, h, stroke, fill, sw=1) + r["roundness"] = {"type": 3} + els.append(r) + els.append(text(uid("chipt"), cx - w / 2 + pad_x, y_top + pad_y, s, size=size, color=color, + align="center", w=w - 2 * pad_x)) + return y_top + h + + +def hconn(x1: float, x2: float, y: float, color: str, sw=1) -> None: + """A plain horizontal connector.""" + a = base("line", uid("conn"), x1, y, x2 - x1, 0, color, "transparent", sw=sw) + a.update({"points": [[0, 0], [x2 - x1, 0]], "boundElements": None}) + els.append(a) + + +def fill_rect(x: float, y: float, w: float, h: float, fill: str) -> dict: + """An unstroked patch of colour -- used to carry one band's fill back + across the other band's, without either border's stroke showing through.""" + r = base("rectangle", uid("fill"), x, y, w, h, "transparent", fill, sw=1) + r["roundness"] = None + els.append(r) + return r + + +def stroke_line(pts: list[tuple[float, float]], color: str, sw=2, opacity=100) -> dict: + """A polyline through pts (absolute coordinates), sharp corners.""" + x0, y0 = pts[0] + xs = [p[0] for p in pts] + ys = [p[1] for p in pts] + ln = base("line", uid("ln"), x0, y0, max(xs) - min(xs), max(ys) - min(ys), color, "transparent", sw=sw) + ln.update({"points": [[p[0] - x0, p[1] - y0] for p in pts], "boundElements": None, "roundness": None}) + ln["opacity"] = opacity + els.append(ln) + return ln + + +def corner_fix(y_top: float, y_bot: float, pal: dict, anchor: dict, + x_from: float, x_to: float) -> None: + """A rounded rectangle's corner curves away from its own edge, so where a + band is overlapped at a joint its corner leaves a notch of bare page. Fill + the notch with that band's own colour. + + The patch is restacked to sit directly above `anchor` -- the band rect it + belongs to -- rather than on top of everything the joint is drawn after, so + it can be as deep as the corner radius without covering a header or a + card.""" + made = [fill_rect(x_from - 1, y_top, CORNER_R + 1, y_bot - y_top, pal["band"]), + fill_rect(x_to - CORNER_R, y_top, CORNER_R + 1, y_bot - y_top, pal["band"])] + for e in reversed(made): + els.remove(e) + els.insert(els.index(anchor) + 1, e) + + +# ============================================================ the castellated joint +def castellate(hi: float, lo: float, teeth: list[tuple[float, float]], words: list[str | None], + upper: dict, lower: dict, upper_band: dict, lower_band: dict, + x_from: float = 0.0, x_to: float = CONTENT_W, + lower_borders: tuple[bool, bool] = (True, True), + open_teeth: tuple[int, ...] = (), lead: str | None = None) -> None: + """Draw one interlocking edge between two overlapping bands. + + hi/lo are the wave's upper and lower levels: the lower band's rect starts at + hi, the upper band's ends at lo, and the upper band owns the whole overlap + until this runs. x_from/x_to bound the joint, which need not be the full + width. lower_borders says whether the lower band actually has a side border + at each end (it does not where the joint stops short of the band's own + edge). A tooth listed in open_teeth is left unclosed, for something else to + carry on downwards from. + """ + corner_fix(lo - CORNER_R, lo, upper, upper_band, x_from, x_to) + corner_fix(hi, hi + CORNER_R, lower, lower_band, x_from, x_to) + + # The lower band's colour back over the gaps: flush with the upper level, + # since the wave is stroked along it last, and past the lower one to bury + # the upper band's border. The end gaps overshoot the side borders too. + for x1, x2 in zip([x_from] + [t[1] for t in teeth], [t[0] for t in teeth] + [x_to]): + a = x1 - 1 if x1 == x_from else x1 + b = x2 + 1 if x2 == x_to else x2 + if b - a > 2: # a tooth flush with the end leaves no gap to fill + fill_rect(a, hi, b - a, lo - hi + JOINT_OVERRUN, lower["band"]) + for x, has_lower in ((x_from, lower_borders[0]), (x_to, lower_borders[1])): + stroke_line([(x, hi - CORNER_R), (x, hi)], upper["stroke"], sw=2) + if has_lower: + stroke_line([(x, hi), (x, lo + CORNER_R)], lower["stroke"], sw=2) + + # The wave itself, stroked once. An open tooth breaks it into two runs. + runs: list[list[tuple[float, float]]] = [] + cur: list[tuple[float, float]] = [(x_from, hi)] + for j, (x1, x2) in enumerate(teeth): + if j in open_teeth: + cur.append((x1, hi)) + runs.append(cur) + cur = [(x2, hi)] + else: + cur += [(x1, hi), (x1, lo), (x2, lo), (x2, hi)] + cur.append((x_to, hi)) + runs.append(cur) + for run in runs: + if len(set(run)) > 1: # an open tooth flush with the end leaves no run + stroke_line(run, upper["stroke"], sw=2) + + for word, (x1, x2) in zip(words, teeth): + if word: + els.append(text(uid("jw"), x1, hi + (lo - hi - 13 * 1.25) / 2, word, + size=13, color=upper["text"], align="center", w=x2 - x1)) + + # The lead's colon runs into the list, so it starts where the first tooth + # does; anywhere left of that it reads as a label for the first gap instead. + if lead: + els.append(text(uid("jl"), teeth[0][0], hi - LEAD_GAP - 13 * 1.25, lead, + size=13, color=upper["mid"])) + + +def draw_lane(x1: float, x2: float, y_top: float, foot_top: float, depth: float, + foot_w: float, label: str) -> None: + """The narrow violet tooth carried on down its lane, ending where the + Foundation band's top edge begins by widening into one tooth cut into it. + Drawn last, so it passes in front of every band and joint it crosses.""" + foot_left = x2 - foot_w + fill_rect(x1, y_top, x2 - x1, foot_top - y_top, VIOLET["band"]) + fill_rect(foot_left, foot_top, foot_w, depth, VIOLET["band"]) + stroke_line([(x1, y_top), (x1, foot_top), (foot_left, foot_top), + (foot_left, foot_top + depth), (x2, foot_top + depth), (x2, y_top)], + VIOLET["stroke"], sw=2) + els.append(text(uid("lanet"), foot_left, foot_top + (depth - 13 * 1.25) / 2, label, + size=13, color=VIOLET["text"], align="center", w=foot_w)) + + +# ============================================================ the stack +def build(out_path: str) -> str: + # ---------------------------------------- 5/4. Use Cases | Sample Applications + Y_TOP = 0 + GAP_MID = 120 # wide enough for "illustrates" to sit on the connector + # with a readable stub of line showing each side + PANEL_PAD = 16 # same as the SDK band's, so the two headers' + # identically built bands come out the same height + PANEL_INSET = PAD_BAND - 2 # same left inset as the full-width band headers + PANEL_TITLE = 18 + PANEL_H = PANEL_PAD + PANEL_TITLE * 1.3 + 13 * 1.25 + PANEL_PAD + # Sample Applications takes the larger share, so its four teeth get closer to + # the proportions of the seam's; Use Cases only has to hold its own subtitle. + use_w = (CONTENT_W - GAP_MID) * 0.4 + app_w = (CONTENT_W - GAP_MID) - use_w + APP_X = use_w + GAP_MID + + # The SDK band's top edge is where Sample Applications comes down to meet it; + # Use Cases keeps a plain gap above that same edge. + SDK_TOP = Y_TOP + PANEL_H + BAND_GAP + APP_LO = SDK_TOP + JOINT_DEPTH + + band_rect(uid("panel"), 0, Y_TOP, use_w, PANEL_H, ROSE) + app_panel = band_rect(uid("panel"), APP_X, Y_TOP, app_w, APP_LO - Y_TOP, GREEN) + band_header(PANEL_INSET, Y_TOP + PANEL_PAD, "icons/lucide-lightbulb.svg", ROSE, + "Use Cases", "what the project wants built", size=PANEL_TITLE) + band_header(APP_X + PANEL_INSET, Y_TOP + PANEL_PAD, "icons/lucide-app-window.svg", GREEN, + "Sample Applications", "what has been built", size=PANEL_TITLE) + conn_y = Y_TOP + PANEL_PAD + (PANEL_TITLE * 1.3 + 13 * 1.25) / 2 + hconn(use_w + 2, APP_X - 2, conn_y, CAPTION) + chip(use_w + GAP_MID / 2, conn_y - (13 * 1.25 + 6) / 2, "illustrates", + "#ffffff", "transparent", CAPTION) + + # ---------------------------------------- 3. SDKs (thin full-width band) + # No subtitle: the three joints on this band's two edges now say everything + # the subtitle used to, word for word. + sdk_hdr_bottom = band_header(PAD_BAND - 2, SDK_TOP + 16, "icons/lucide-package.svg", VIOLET, + "SDKs", None, size=18) + SDK_BOTTOM = sdk_hdr_bottom + 16 + SDK_LO = SDK_BOTTOM + JOINT_DEPTH + sdk_band = band_rect(uid("band"), 0, SDK_TOP, CONTENT_W, SDK_LO - SDK_TOP, VIOLET, at_front=True) + + # ---------------------------------------- 2. Data Structures + # A lane down the right margin is left clear in the card row below, for the + # narrow violet tooth to travel in. It runs flush with the bands' own right + # border: inset from it, the strip of band colour left outside the lane reads + # as a sliver rather than as a lane. It stops at the Foundation band's top + # edge, so that band keeps an even PAD_BAND margin on both sides. + LANE_X2 = CONTENT_W + LANE_X1 = LANE_X2 - LANE_W + ROW_RIGHT = LANE_X1 - LANE_CLEAR + + Y_DATA = SDK_BOTTOM + hdr_bottom = band_header(PAD_BAND - 2, Y_DATA + DATA_TOP_PAD, "icons/lucide-layers.svg", TEAL, + "Data Structures", "this patient · Patient Context", size=20) + BLOCK_ROW_Y = hdr_bottom + 14 + W4 = (ROW_RIGHT - PAD_BAND - 3 * GAP) / 4 + d_positions = [PAD_BAND + i * (W4 + GAP) for i in range(4)] + d_specs = [ + ("icons/lucide-clipboard.svg", ["Observation"], False), + ("icons/lucide-clipboard-list.svg", ["Exam Finding", "List"], False), + ("icons/lucide-list.svg", ["Imaging Problem", "List"], False), + ("icons/healthicons-person.svg", ["Imaging Persona"], True), + ] + ROW_H_DATA = max(icon_block_h(lines) for _, lines, _ in d_specs) + for xpos, (ipath, lines, filled) in zip(d_positions, d_specs): + icon_block(xpos, BLOCK_ROW_Y, W4, ROW_H_DATA, ipath, TEAL, lines, filled_icon=filled) + DATA_BLOCKS_BOTTOM = BLOCK_ROW_Y + ROW_H_DATA + + # room below the cards for the seam's lead line and the seam's own swing + DATA_BAND_BOTTOM = DATA_BLOCKS_BOTTOM + SEAM_DEPTH + 2 * LEAD_GAP + 13 * 1.25 + teal_band = band_rect(uid("band"), 0, Y_DATA, CONTENT_W, DATA_BAND_BOTTOM - Y_DATA, TEAL, at_front=True) + + # ---------------------------------------- 1. Foundation Context (bottom) + FOUND_TOP = DATA_BAND_BOTTOM - SEAM_DEPTH + hdr_bottom_f = band_header(PAD_BAND - 2, FOUND_TOP + FOUND_TOP_PAD, + "icons/lucide-book-open.svg", AMBER, + "Foundation Context", "shared, curated knowledge", size=20) + F_ROW_Y = hdr_bottom_f + FOUND_HDR_GAP + W3 = (CONTENT_W - 2 * PAD_BAND - 2 * GAP) / 3 + f_positions = [PAD_BAND + i * (W3 + GAP) for i in range(3)] + f_specs = [ + ("icons/lucide-tag.svg", ["Finding/diagnosis definitions"], "finding models · CDEs", False), + ("icons/healthicons-lungs.svg", ["Anatomic locations"], "anchored in RadLex", True), + ("icons/healthicons-xray.svg", ["Exam types"], "LOINC/RSNA Playbook", True), + ] + ROW_H_FOUND = max(icon_block_h(lines, desc) for _, lines, desc, _ in f_specs) - FOUND_ROW_SHRINK + for xpos, (ipath, lines, desc, filled) in zip(f_positions, f_specs): + icon_block(xpos, F_ROW_Y, W3, ROW_H_FOUND, ipath, AMBER, lines, desc=desc, filled_icon=filled) + FOUND_BAND_BOTTOM = F_ROW_Y + ROW_H_FOUND + FOUND_BOTTOM_PAD + amber_band = band_rect(uid("band"), 0, FOUND_TOP, CONTENT_W, FOUND_BAND_BOTTOM - FOUND_TOP, + AMBER, at_front=True) + + # ---------------------------------------- the three joints, top to bottom + castellate(SDK_TOP, APP_LO, even_teeth(APP_X, CONTENT_W, len(APP_WORDS)), APP_WORDS, + GREEN, VIOLET, app_panel, sdk_band, x_from=APP_X, x_to=CONTENT_W, + lower_borders=(False, True), lead=APP_LEAD) + + sdk_teeth = even_teeth(0, LANE_X1, len(SDK_WORDS)) + [(LANE_X1, LANE_X2)] + castellate(SDK_BOTTOM, SDK_LO, sdk_teeth, SDK_WORDS + [None], VIOLET, TEAL, + sdk_band, teal_band, open_teeth=(len(SDK_WORDS),)) + + # The seam's own teeth share this edge with the lane's foot, so they are laid + # out in the width the foot leaves: one more gap, then the foot, flush right. + castellate(FOUND_TOP, DATA_BAND_BOTTOM, even_teeth(0, CONTENT_W - FOOT_W, len(SEAM_WORDS)), + SEAM_WORDS, TEAL, AMBER, teal_band, amber_band, lead=SEAM_LEAD) + + draw_lane(LANE_X1, LANE_X2, SDK_BOTTOM, FOUND_TOP, SEAM_DEPTH, FOOT_W, FOOT_LABEL) + + print(f"foundation band below its edge: {FOUND_BAND_BOTTOM - FOUND_TOP:.0f}px; " + f"figure {FOUND_BAND_BOTTOM:.0f}px tall") + return save(out_path) + + +def main() -> None: + ap = argparse.ArgumentParser(description=__doc__.split("\n")[0]) + ap.add_argument("--out", default="knowledge/drafts/pillars-b3.excalidraw", + help="output path relative to the repo root") + args = ap.parse_args() + build(args.out) + + +if __name__ == "__main__": + main() From 0db5f045fa041627e820b4f36b3a4b23290d11ea Mon Sep 17 00:00:00 2001 From: "Alkasab Agent (agent-dev)" Date: Wed, 30 Sep 2026 21:07:23 +0000 Subject: [PATCH 15/19] Record the project lead's guidance and decisions of 2026-09-24 to 2026-09-30 - Verbatim guidance for the Overview, Foundation Context, hub, schema, relationships, and figures - Glossary dropped in favor of one grown from the new pages; vendor and contributor names kept generic; deck and CDE figures usable - Dashboard of page and figure status with links for peruse Co-Authored-By: Claude Fable 5.1 --- docs/plans/2026-09-22-layout-plan.md | 37 +++++++++++++++++++++++++- docs/plans/restructure-dashboard.md | 39 ++++++++++++++-------------- 2 files changed, 56 insertions(+), 20 deletions(-) diff --git a/docs/plans/2026-09-22-layout-plan.md b/docs/plans/2026-09-22-layout-plan.md index f70ed19..4459830 100644 --- a/docs/plans/2026-09-22-layout-plan.md +++ b/docs/plans/2026-09-22-layout-plan.md @@ -4,6 +4,38 @@ Status: Proposed, 2026-09-22. Written by Claude for the project lead and the Cod ## The guidance, verbatim +Project lead, 2026-09-27 to 2026-09-29, on the Finding Models and Common Data Elements hub page: + +> I think what we want to say is that the finding/diagnosis definition is an unified anchor for the CONCEPT of a finding/diagnosis in a form that can be used to attach associated context: name, synonyms, definition, attributes, etc. OIFM are AN inclusive collection, intended for rapid prototyping... ACR/RSNA Common Data Elements (always include the organizations) are the well-reviewed... published through radelement.org. Forget about talking about the current schema's sets and elements--waste of bits. + +> "Finding Models and Common Data Elements" / "Definitions of findings and diagnoses anchor these concepts in a form that associated content can..." + +> "...maintained by the OIDM project..." / "The OIFM repository is intended for rapid, community-based prototyping and iteration based on an open-source model." / "...with changes proposed by anyone." / Take out "uneven" / "in the project lead's words" is RIGHT OUT. I think the thing to emphasize is that they will have the same schema and describe the same ideas. Major difference is that OIFMs is much more "beta"/rapid additions and updates and CDEs is much more "release"/reviewed and stable. + +> I think we should also emphasize that we will maintain cross-links: when something migrates to CDEs, it will continue to be maintained in the OIFM repo but have a reference to its CDE identity. "Both CDEs and OIFMs are document-oriented today, and moving..." + +The agreed hub text (2026-09-29) is the one the Opus agent writes verbatim into `knowledge/drafts/finding-models-and-cdes-hub.md`. + +Project lead, 2026-09-30, on figures: "Let's make the AssessmentSchemes ovals rather than diamonds--those have a flowchart implication that doesn't obtain here." Recorded as a convention in tools/diagrams/README.md. + +Project lead, 2026-09-30, four prose decisions on the relationships page: (1) change the associated-findings example to a pair the graph records as OCCURS_WITH; (2) the renal abscess clause becomes "...may have sequela beyond the course of the acute pyelonephritis episode."; (3) "whether or not one causes the other"; (4) use the schema's specificity words: pathognomonic, highly suggestive, suggestive ("they're cooler"). + +Project lead, 2026-09-30, on the pulmonary nodule neighborhood figure (illustrative; reflects updates the project lead, as the CDE project's clinical expert, intends for the CDE graph): rename "attenuation" to "composition" and "pulmonary margin" to "margin"; drop "lesion count"; "ground glass nodule" for "non-solid pulmonary nodule"; add the Grouping "pulmonary parenchymal abnormality"; add the diagnoses "pulmonary neoplasm" and "pulmonary granuloma" (subtype of the grouping); add "Fleischner criteria" as an assessment scheme; add subspecialty; show SEEN_ON CT, XR, and MR; no values; no time course or etiology for now: "I'm starting to think that may need to be a property of the edge connecting it to a diagnosis. Actually, that's the same for etiology." + +Project lead, 2026-09-30, on the relationships page: + +> Emphasizing that they're "strictly apart" makes it seem like THAT'S the issue. / Let's just call this subsection "Findings <-> Diagnoses: Manifestation and Causation" / "Pyelonephritis APPEARS AS striated nephrogram..." "when the pyelonephritis resolves, the striation goes with it..." / Next subsection called "Deriving the Differential" / "The schema distinguishes manifestation and causation to enable inference:..." / We should ALSO include the idea of associated findings here, and the properties of the edges themselves that get at how commonly findings/diagnoses are associated in the specified way / Don't include the "HPO and Orphanet" reference / "a pulmonary nodule definition specifies how a pulmonary nodule WILL BE DESCRIBED. The assessment is a separate assertion, defined by the AssessmentScheme definition, which allows for evaluation of the nodule according to the defined criteria." / "...by an ASSESSED_BY edge" + +Project lead, 2026-09-30, on the next-generation schema page: + +> "Both Open Imaging FInding Models and RSNA/ACR Common Data Elements are moving..." / Show a link to the ACR/RSNA CDE schema repository, on the next-gen-2026 branch. / "...as a graph of interconnected concepts rather than a set of documents." / "Applications will be able to use either or both collections at once via a common SDK based on the new schema." / "FindingClass" defines the properties of the items described in imaging reports. A "Diagnosis" is a separate, closely-related node type, distinguished by a different set of possible relationships. Groupings are broad classes of findings/diagnoses such as "renal abnormality", usually intended to be used in the negative. / For most of these node class definitions, we want to use "defines" rather than "is a" (this is a very tricky but important semantic distinction) / "AssessmentScheme" definitions layout the systems such as Lung-RADS via which a constellation of other findings is evaluated. / "The anatomic scope property of each other node indicates the locations and/or structures in which they may be localized (e.g., "lung parenchyma" for a pulmonary nodule). / "Edges integrate the notes into a rich fabric of interrelated concepts, enabling reliable, reproducible inference." / "Edges bind FindingClass and Diagnosis definitions to their anatomic scope and to the DataElements and Measurements used to specify their attributes. The edges themselves may contain properties that provide additional detail about the relationships between nodes." / Concept nodes as a note below the list, introducing the paragraph that also talks about anatomic scope. / Use the actual table of relationship types as examples. / "Evolution of CDEs and Finding Models: Both CDEs and existing Open Imaging Finding Models will have to migrate from their current JSON document-based organization to a new graph-oriented format, likely using RDF/OWL as an underlying storage format. More ergonomic data structures will also be developed for use in SDKs and via an API." + +Project lead, 2026-09-30, on the SDKs (for the pillars figure and the SDKs index): "I think we should also say that the SDKs help AUTHOR and MAINTAIN the underlying foundation context." + +Project lead, 2026-09-29, on Measurements (for the three-axes figure and the next-generation schema page): + +> Measurements don't have EXPLICIT units, they indicate what KIND of thing they are: length (with appropriate length units, which could be mm, cm, whatever), CT density (HU), or count (unitless), ratio (unitless), velocity (m/s, cm/s), volume (cc, mL, mm^3..., L) + Project lead, 2026-09-24, on the Overview page: > OIDM is NOT just for modeling imaging results, it is for modeling the ENTIRE imaging workflow context throughout its lifecycle. It's meant to enable a common platform across the medical imaging ecosystem that enables tools that will assist radiologists, technologists, ordering providers, and back-office staff. RIGHT NOW, we happen to be focused on data structures and semantics for representing imaging results, whether from current exams or prior, and from AIs, radiologists, technologists, or modalities themselves, and for integrating those results across time. We will ALSO model the broader patient context and enable linking between imaging results and patients' OTHER diagnoses, procedures, and issues. @@ -139,7 +171,7 @@ knowledge/ and PHI-local stance rendering-search-and-exchange.md the 2023 rendering, 2024 ontology-search, and exchange demonstrations - glossary/ kept; cut to cross-topic terms (decision for the project lead) + glossary/ removed at the replace step; rebuilt from the new pages as terms earn entries ``` Pages not listed above are not planned. More idea documents appear wherever a source carries a distinct idea; no cap. @@ -165,6 +197,9 @@ From the current bundle: the old directories (`overview`, `semantic-foundation`, ## Open points for the project lead +Decided 2026-09-29: the reporting vendor in the 2024 update stays generic for now; the organizations behind the 47 and 31 finding models stay generalized; figures from the SIIM 2026 deck and the ACR-RSNA-CDEs repository may be used ("They're all mine"). Glossary, decided 2026-09-29: the existing 48-term glossary is dropped ("PACKED with obsolete stuff"); a new glossary is built out from the real pages as they are written, one entry only when a page needs a term defined across topics. Removal happens at the replace step, since the old pages still link into it. + + 1. Glossary: keep all 49 terms, cut to cross-topic terms, or drop in favor of the idea documents' own definitions. 2. The three naming choices already raised: the reporting vendor in the 2024 update; the two organizations behind the 47 and 31 finding models; the uncommitted CDE decisions S53 to S67. 3. Whether `two-graphs.md` is its own document (as planned here) or lives inside `observation.md`. diff --git a/docs/plans/restructure-dashboard.md b/docs/plans/restructure-dashboard.md index 226411d..6857b10 100644 --- a/docs/plans/restructure-dashboard.md +++ b/docs/plans/restructure-dashboard.md @@ -8,14 +8,14 @@ Status words: **agreed** = text settled with the project lead and on disk; **in | Page | Status | Where to look | |---|---|---| -| **Overview** (root) | agreed; Astra-reviewed; pillars figure not yet embedded | [knowledge/drafts/overview.md](/knowledge/drafts/overview.md) | +| **Overview** (root) | agreed; Astra-reviewed; two-planes figure embedded; pillars stack to follow once B3 is accepted | [knowledge/drafts/overview.md](/knowledge/drafts/overview.md) | | **Foundation Context** index | agreed; both figures embedded | [knowledge/drafts/foundation-context.md](/knowledge/drafts/foundation-context.md) | -| Finding models and CDEs (hub) | in discussion: opening three parts revised 2026-09-27, rest as proposed | conversation; material in [knowledge/drafts/finding-models-and-cdes.md](/knowledge/drafts/finding-models-and-cdes.md) | +| Finding Models and Common Data Elements (hub) | **agreed and written**; Astra-reviewed, six provenance findings applied; prose byte-identical to the agreed text | [knowledge/drafts/finding-models-and-cdes-hub.md](/knowledge/drafts/finding-models-and-cdes-hub.md); material for the children in [knowledge/drafts/finding-models-and-cdes.md](/knowledge/drafts/finding-models-and-cdes.md) | | OIFM content | material only | [knowledge/drafts/finding-models-and-cdes.md](/knowledge/drafts/finding-models-and-cdes.md), "What the inclusive collection holds" | | Definition formats | material only | same file, "The two formats" | | Identifiers | material only | same file, identifiers paragraph | -| Next-generation schema | material only | same file, "The common graph" | -| Relationships | material only | same file, "The relationship family", "Assessments, components" | +| Next-generation schema | **agreed and written**; Astra-reviewed, six provenance findings applied; prose byte-identical; CDE figure embedded | [knowledge/drafts/next-generation-schema.md](/knowledge/drafts/next-generation-schema.md) | +| Relationships | **agreed and written**; Astra-reviewed; the project lead's four prose decisions applied; figure (nodule neighborhood) pending accept | [knowledge/drafts/relationships.md](/knowledge/drafts/relationships.md) | | Standard clinical metadata | material only | same file, "What the graph should carry" | | Authoring and review | material only | same file, "Authoring and review" table | | Anatomic locations | material only; Tuesday draft cross-reviewed and corrected | [knowledge/drafts/anatomic-locations.md](/knowledge/drafts/anatomic-locations.md) | @@ -43,26 +43,27 @@ Status words: **agreed** = text settled with the project lead and on disk; **in | Imaging Problem List viewers | material only | same file | | Report extraction platform | material only | same file | | Rendering, search, and exchange | material only | same file | -| Glossary | decision pending: keep, cut, or drop | [knowledge/glossary/](/knowledge/glossary/) (49 terms) | +| Glossary | decided 2026-09-29: dropped; rebuilt from the new pages as terms earn entries; directory removed at the replace step | [knowledge/glossary/](/knowledge/glossary/) (48 terms, obsolete) | ## Figures | Figure | For | Status | Where to look | |---|---|---|---| -| Two planes: a finding, its exam, and the shared knowledge they attach to | Overview (lead figure) | done (v5 on Opus, with the thorax > lung > upper lobe chain); needs your accept, then embed in the Overview | [docs/plans/renders/two-planes-v5.png](/docs/plans/renders/two-planes-v5.png); [knowledge/drafts/two-planes.svg](/knowledge/drafts/two-planes.svg) | -| Five-pillar stack | Overview | v3 on Opus; needs your accept; fence-like seam threads and the "relationships" plate placement are the known nits | [docs/plans/renders/pillars-v3.png](/docs/plans/renders/pillars-v3.png); [knowledge/drafts/pillars.svg](/knowledge/drafts/pillars.svg) | -| Three axes | Foundation Context | done | [docs/plans/renders/three-axes-v1.png](/docs/plans/renders/three-axes-v1.png); embedded in `foundation-context.md` | -| Foundation Context mini-network | Foundation Context | done (v6 on Opus) | [docs/plans/renders/foundation-network-v6.png](/docs/plans/renders/foundation-network-v6.png); embedded in `foundation-context.md` | -| Patient Context / Foundation Context table (deck slide 7) | Overview | needs your permission to embed your own deck figures | [sources/bucket/siim2026/media/ppt/media/image6.png](/sources/bucket/siim2026/media/ppt/media/image6.png) | -| One content, two collections | Finding models and CDEs hub | not started; design proposed in conversation | | -| Definition field table (deck slide 9) | Definition formats | permission question as above | [sources/bucket/siim2026/media/ppt/media/image7.png](/sources/bucket/siim2026/media/ppt/media/image7.png) | -| Kidney field table (deck slide 10) | Anatomic locations | permission question as above | [sources/bucket/siim2026/media/ppt/media/image8.png](/sources/bucket/siim2026/media/ppt/media/image8.png) | +| Two planes: a finding, its exam, and the shared knowledge they attach to | Overview (lead figure) | ACCEPTED by the project lead 2026-09-29 (v10); embedded in the Overview under "The two contexts" | [docs/plans/renders/two-planes-v10.png](/docs/plans/renders/two-planes-v10.png); [knowledge/drafts/two-planes.svg](/knowledge/drafts/two-planes.svg) | +| Five-pillar stack | Overview | v8 on B3: the SDK lane ends in Foundation Context as one tooth "attaches to · authors & maintains"; SDKs subtitle cut; applications joint widened; needs your accept, then replaces pillars.svg and goes into the Overview | [docs/plans/renders/pillars-v8-b3.png](/docs/plans/renders/pillars-v8-b3.png) | [docs/plans/renders/pillars-v3.png](/docs/plans/renders/pillars-v3.png); [knowledge/drafts/pillars.svg](/knowledge/drafts/pillars.svg) | +| Three axes | Foundation Context | v6 on Opus: full-width section bands in all three columns (node kinds; body regions; modalities), columns filled to equal density, measurements length and CT density only; embedded; needs your accept | [docs/plans/renders/three-axes-v6.png](/docs/plans/renders/three-axes-v6.png) | +| Foundation Context mini-network | Foundation Context | v8 on Opus: solid arrowheads, assessment scheme as an oval; embedded; needs your accept | [docs/plans/renders/foundation-network-v8.png](/docs/plans/renders/foundation-network-v8.png); embedded in `foundation-context.md` | +| Patient Context / Foundation Context table (deck slide 7) | Overview | permitted 2026-09-29; redundant with the two-planes figure, not planned | [sources/bucket/siim2026/media/ppt/media/image6.png](/sources/bucket/siim2026/media/ppt/media/image6.png) | +| One content, two collections | Finding models and CDEs hub | v1 on Opus; needs your accept, then embed in the hub | [docs/plans/renders/two-collections-v1.png](/docs/plans/renders/two-collections-v1.png) | +| Definition field table (deck slide 9) | Definition formats | permitted; planned | [sources/bucket/siim2026/media/ppt/media/image7.png](/sources/bucket/siim2026/media/ppt/media/image7.png) | +| Kidney field table (deck slide 10) | Anatomic locations | permitted; planned | [sources/bucket/siim2026/media/ppt/media/image8.png](/sources/bucket/siim2026/media/ppt/media/image8.png) | | Containment, part-of, laterality example | Anatomic locations | not started | | | CT Chest over the Playbook with anatomy edges | Exam types | not started | | | Data-structure hierarchy | Data Structures index | existing diagram needs revision (Persona as concept, no "pointer") | [knowledge/data-structures/hierarchy.svg](/knowledge/data-structures/hierarchy.svg) | -| Report to Observation (deck slide 4) | Observation | permission question as above | [sources/bucket/siim2026/media/ppt/media/image4.png](/sources/bucket/siim2026/media/ppt/media/image4.png) | -| The two graphs | The two graphs | not started; the CDE repo's `two-planes.svg` and `report-pyelonephritis.svg` are the best existing pictures; permission to reuse from the allied repo is your call | `~/ACR-RSNA-CDEs/docs/next-gen-schema/diagrams/` | -| Foundation-context graph (deck slide 12) | Relationships | permission question as above | [sources/bucket/siim2026/media/ppt/media/image9.png](/sources/bucket/siim2026/media/ppt/media/image9.png) | +| Report to Observation (deck slide 4) | Observation | permitted; planned | [sources/bucket/siim2026/media/ppt/media/image4.png](/sources/bucket/siim2026/media/ppt/media/image4.png) | +| The two graphs | The two graphs | permitted; planned: the CDE repository's one-report-two-planes (pyelonephritis) figure | `~/ACR-RSNA-CDEs/docs/next-gen-schema/diagrams/` | +| Foundation-context graph (deck slide 12) | Relationships | permitted; planned | [sources/bucket/siim2026/media/ppt/media/image9.png](/sources/bucket/siim2026/media/ppt/media/image9.png) | +| Pulmonary nodule neighborhood (nodes and edges from the pinned CDE graph) | Relationships page; could replace the dated 2026-09-03 figure on the schema page | v3 on Opus: illustrative per the project lead's intended CDE updates; assessment schemes now ovals; needs your accept and a placement decision (relationships page; replace the dated figure on the schema page) | [docs/plans/renders/nodule-neighborhood-v3.png](/docs/plans/renders/nodule-neighborhood-v3.png) | | SDK resolution flow | SDKs index | not started | | ## Decisions waiting on the project lead @@ -70,9 +71,9 @@ Status words: **agreed** = text settled with the project lead and on disk; **in 1. Accept the pillars stack v3, then the embed into the Overview. 2. The hub page text as revised on 2026-09-27. 3. Commit of everything since Tuesday to `bootstrap`. -4. Glossary: keep, cut, or drop. -5. Naming: the reporting vendor in the 2024 update; the two organizations behind the 47 and 31 finding models; commit of CDE decisions S53 to S67. -6. Whether your own deck figures, and figures from the ACR-RSNA-CDEs repository, may be embedded. +4. Decided 2026-09-29: glossary dropped; rebuilt from the new pages. +5. Decided 2026-09-29: vendor generic; the two organizations generalized. Still open: commit of CDE decisions S53 to S67. +6. Decided 2026-09-29: deck and CDE-repository figures may be used. ## Process From 25e57a6b3ee66b78ca6be2db086d7ea9a990dce3 Mon Sep 17 00:00:00 2001 From: "Alkasab Agent (agent-dev)" Date: Thu, 1 Oct 2026 13:10:00 +0000 Subject: [PATCH 16/19] Define the four layers and write the agent handoff - Raw sources in a private bucket, references with redrawn figures, the team-facing bundle, and the presentation pages the site builds - Pre-review pages go to staging only, labeled DRAFT / Awaiting Review; production refuses unverified pages - Handoff document with every content ruling, the review process, the model policy, the site mechanics, and the source locations Co-Authored-By: Claude Fable 5.1 --- docs/HANDOFF.md | 60 ++++++++++++++++++ docs/plans/2026-10-01-sources-and-layers.md | 70 +++++++++++++++++++++ docs/plans/restructure-dashboard.md | 8 +++ 3 files changed, 138 insertions(+) create mode 100644 docs/HANDOFF.md create mode 100644 docs/plans/2026-10-01-sources-and-layers.md diff --git a/docs/HANDOFF.md b/docs/HANDOFF.md new file mode 100644 index 0000000..b296a52 --- /dev/null +++ b/docs/HANDOFF.md @@ -0,0 +1,60 @@ +# Handoff: everything an agent needs to work on this repository + +Written 2026-10-01 by the Claude session that has worked with the project lead since 2026-09-20. Read this first, then the plans it points to. The project lead is the only person named in this repository; everyone else is an organization. + +## What this is + +A public knowledgebase for the Open Imaging Data Model (OIDM), in four layers (`docs/plans/2026-10-01-sources-and-layers.md`): + +1. **Raw sources**: a private Tigris bucket `oidm-knowledge-sources`, mirrored to gitignored `raw-sources/` (today still `sources/`), with a tracked manifest. Not in the repo. +2. **References**: `knowledge/references/`, one OKF Reference per source with a detailed summary, key quotes where allowed, and figures. Figures from unpublished or internal sources are redrawn with the diagram tooling, never reproduced. +3. **The knowledge bundle**: `knowledge/`, the comprehensive team-facing OKF 0.2 bundle (115 concepts as of 2026-09-21), public only because the repository is. Reorganizing it under the five pillars is Astra's track. +4. **The presentation**: `pages/` (not yet created; the agreed pages are still in `knowledge/drafts/`), the outward pages distilled from the bundle, the only thing the public site builds. Layout in `docs/plans/2026-09-22-layout-plan.md`; status in `docs/plans/restructure-dashboard.md`. + +## The structure of the ideas + +Five named pillars, always used by name and never numbered: **Foundation Context** (the shared, curated clinical knowledge: finding/diagnosis definitions, anatomic locations, exam types, and the relationships among them), **Data Structures** (the patient side: Observation, Exam Finding List, Imaging Problem List, Imaging Persona, and how the patient graph and the foundation graph are woven together), **SDKs**, **Use Cases** (the team's documented possible applications), **Sample Applications** (what was actually built). An Overview page sits above them. + +Rulings that govern content, all from the project lead and recorded verbatim in `docs/plans/restructure-joint-notes.md` ("Decisions of 2026-09-22") and `docs/plans/2026-09-22-layout-plan.md` ("The guidance, verbatim"): + +- A CDE and a finding model are the same kind of content in two collections: Open Imaging Finding Models (inclusive, beta channel, maintained by the OIDM project) and ACR/RSNA Common Data Elements (well-reviewed, release channel, radelement.org). Both are moving onto the next-generation graph schema being developed in the CDE project; reorganizing OIFM around it is an immediate priority. +- OIDM models the whole imaging workflow context across its lifecycle; the current focus is data structures and semantics for imaging results. The Imaging Persona integrates imaging results into one larger graph of the patient's history, underpinned by Foundation Context. +- Nothing is formally specified. Never call any source "the specification" or "canonical". Show each source's version side by side, dated and attributed; never reconcile disagreements. +- Terminology: "finding/diagnosis definitions" for the WHAT axis ("Observation Type" is under consideration, not adopted); "Foundation Context" and "Patient Context"; the two graphs are "woven together" or "interconnected", never "pointers"; "connective tissue" only in the SIIM 2026 deck's sense (relationships and citations between foundation concepts). Measurements name a kind of quantity, not a unit. Use "defines" for node types, not "is a". Use the schema's own relationship names (MAY_MANIFEST_AS, ASSESSED_BY, ...) and its specificity words (pathognomonic, highly suggestive, suggestive). +- Organizations only. The reporting vendor stays generic; the organizations behind the 47 and 31 finding models stay generalized. Manuscripts under review: paraphrase, cite as under review, never quote, never touch reviewer correspondence. Internal boards: schema ideas only, no live links, no people, meetings, or vendor logistics. The project lead's own deck and the ACR-RSNA-CDEs repository figures may be reused. +- Repository documents, plans, prompts, skills, ADRs, and code are team artifacts and first-class sources; carry each source's own status, date, and provenance labels (the CDE decision record's OWNER / CLAUDE DEFAULT). Only an agent's own inference is kept out. +- Read only committed files at a pinned commit in the CDE repository; its working tree holds uncommitted decisions (S53 to S67) and newer graph files that cannot be cited until committed. +- The old 48-term glossary is dropped; a new one grows from the presentation pages as terms earn entries. + +## How work is done + +- **Pages**: the project lead and the Claude session agree the page text line by line in conversation (one page at a time, actual content, not descriptions). The project lead's words go verbatim into the layout plan's "guidance" section so pages can cite them. An **Opus** sub-agent then writes the page from the agreed text (frontmatter, citations verified against pinned sources, validation) and must not reword it. **Astra** (the Codex session in this workspace's second tab) reviews for source fidelity, writing findings to `sources/review/drafts-.md`; the writer applies footnote findings and writes dispositions to `drafts--response.md`; prose questions go back to the project lead. +- **Figures**: design agreed in conversation, built by an Opus sub-agent as an Excalidraw builder in `tools/diagrams/` (helpers in `excalib.py`; icons and licenses in `tools/diagrams/icons/`), rendered and LOOKED AT before reporting; the Claude session looks again; the project lead accepts. Renders for review go in `docs/plans/renders/` (tracked) because `sources/` is gitignored and peruse will not open it. Conventions in `tools/diagrams/README.md`: shared palette by node kind, assessment schemes as purple ovals (never diamonds), solid small arrowheads, schema relationship names on boxed labels, 13px minimum text, no Mermaid, no "pointer". +- **Models**: implementation runs in Opus sub-agents (always pass the model explicitly) or in the codex-impl tabs; never Sonnet for judgment work; never the Fable session itself without explicit clearance. Review every tool or approach choice with the project lead before adopting it. +- **Astra**: find its pane with `herdr pane list` (the codex pane whose cwd is this repo), read it before sending, send with `herdr pane run ""`, and record handoffs in `docs/plans/restructure-joint-notes.md` under "Handoffs". Never ask the project lead to relay. Never commit Astra's uncommitted work unasked; group commits by what belongs together, not by author. +- **Review surface**: the project lead reads files in peruse (`http://agent-dev:7440/p/oidm-knowledge/`); root-absolute links (`/knowledge/...`) resolve there. Keep `docs/plans/restructure-dashboard.md` current whenever a status changes. +- **Git**: branch `bootstrap`, pushed; PR #1 from `bootstrap` into `main` (which the project lead merges). A global pre-push hook refuses any push to `main`; this checkout has `remote.pushDefault=parent`, so push with the remote named: `git push origin bootstrap`. Never commit without the project lead's explicit yes; propose a concise message first. Never delete or overwrite a file you did not create (`links.txt` is the project lead's). +- **Validation**: `task check` runs the OKF 0.2 validator (`.agents/skills/validate/scripts/okf_validate.py knowledge --strict`) and the house checker (`tools/check_bundle.py`: index coverage, link resolution, trust-signal shape, denylist in gitignored `tools/denylist.txt`). Both must be clean before a commit. Index entries use `* [Title](./file.md) - description` with the description identical to the frontmatter; quote YAML descriptions containing colons. + +## The site + +Quartz 5.0.0 (pinned commit in `site/build.sh`) with YAML config in `site/`, local plugins `site/okf-meta-plugin` (frontmatter badges) and `site/okf-lightbox-plugin` (click-to-zoom), staged by `tools/prepare_site_content.py`; hosted as Cloudflare Workers static assets (`site/wrangler.jsonc`), targets dev (`task deploy`, https://oidm-knowledge-dev.talkasab.workers.dev), staging (`task deploy:staging`, also on push to `main` via `.github/workflows/deploy.yml`, needs `CLOUDFLARE_API_TOKEN` and `CLOUDFLARE_ACCOUNT_ID` secrets, not yet set), prod (`task deploy:prod`; production domain knowledge.openimagingdata.org, not yet configured). Credentials are in the environment "to be cleaned up later". The permission classifier has refused `task deploy` from the Claude session once; the project lead can run it. + +Decided 2026-10-01, not yet built: the public site builds from `pages/` only, the Overview as landing page, the explorer ordered by the five pillars; a separate internal Worker builds the bundle from `knowledge/`; dev and staging stamp "DRAFT / Awaiting Review" on every page; production refuses any page without a `verified` entry (`task verify -- ` stamps it). The current deployed site is the 2026-09-21 bundle and does not match the plan. + +## Where the sources are + +- Repositories cloned read-only under `~/`: findingmodel, findingmodels, med-ontology-lookup, ACR-RSNA-CDEs (branch next-gen-2026), RadLex, imaging-problem-list (dev is current), FindingModelForge, CDEStaging, IPL-MVP-ExtractionAndLabeling, anatomiclocations.org, BodyPartIndex.py/.ts, UseCases, FHIRSamples, and the lineage repositories. Pins used so far are recorded in each page's sources. +- `~/exam-types/sources/LoincRsnaRadiologyPlaybook.xlsx`: Playbook entries (LongCommonName column) for exam-type names; a second sheet `core-playbook-dev` may be the project lead's working set. +- `sources/` (gitignored, to become `raw-sources/`): `bucket/` (manuscripts, decks, the AI-evolution essay, extracted text under `bucket/text/`, the reading in `bucket/REPORT.md`), `siim2026/` (the SIIM 2026 deck, its text and images), `excalidraw-diagrams.md` (15 boards with sensitivity flags), `email/2026-09-19-ipl-manuscript-notes.md`, `ipl-example2-study.md`, `review/` (every review and response file), `upstream-issues-draft.md` (22 drafted issues for the source repositories, awaiting the project lead). +- The SIIM 2026 deck (June 2026, public) is the central framing source; the January 2026 status update and the July 2026 webinar are the others; the openimagingdata.org posts are team sources. + +## State on 2026-10-01 + +Agreed, written, reviewed (in `knowledge/drafts/`): `overview.md`, `foundation-context.md`, `finding-models-and-cdes-hub.md`, `next-generation-schema.md`, `relationships.md`. Figures: two-planes (accepted), three-axes v6, mini-network v8, two-collections v1, pillars v8 (castellated B3), nodule neighborhood v3, all awaiting the project lead's accept except two-planes; the pillars stack is not yet embedded in the Overview and the nodule figure is not yet placed (relationships page, and in place of the dated figure on the schema page). The standard-clinical-metadata page text is proposed in conversation and not yet agreed; it should carry the project lead's 2026-09-30 thought that time course and etiology may be properties of the edge to a diagnosis. The remaining pages of the layout plan have reviewed source material in the superseded Tuesday drafts (same directory) but are not written. Astra's brand-asset work (`docs/brand/`, `knowledge/assets/`, `docs/plans/2026-09-30-brand-assets.md`) is in progress and uncommitted. + +Open with the project lead: the figure accepts above; the metadata text; CI secrets; the upstream issue drafts; the CDE decisions S53 to S67 to commit in the CDE repository. + +## Memory for Claude sessions + +Claude sessions in this project directory also load `~/.claude/projects/-home-talkasab-oidm-knowledge/memory/MEMORY.md`, which indexes the same rules as feedback notes. This file is the version other agents can read. diff --git a/docs/plans/2026-10-01-sources-and-layers.md b/docs/plans/2026-10-01-sources-and-layers.md new file mode 100644 index 0000000..32dd54c --- /dev/null +++ b/docs/plans/2026-10-01-sources-and-layers.md @@ -0,0 +1,70 @@ +# Sources, bundle, and presentation: the three layers + +Status: Agreed in principle 2026-10-01 (the four open points answered); execution not yet started. Written by Claude from the project lead's description. Companion: `docs/HANDOFF.md` holds everything else an agent needs. + +## The project lead's description, verbatim + +> I'd like to have a literal knowledge bundle of OKF files which are mostly for internal team use. They're in a public repo, and anyone can look at them and see what they see, but they're not what we'd present. We'd ALSO like to have a series of interconnected pages that ARE intended as the outward presentation of these ideas, where the knowledge for them is a distillation of the broader knowledgebase to make it more accessible to outsiders. + +> I would ALSO like to maintain something like source material. I will create a non-public bucket on tigris for raw source material (presentations, manuscripts, emails, etc.). I (or people I give appropriate credentials to) can access that bucket to fill out a raw-sources directory, but this is NOT in the repo. We will generate DETAILED distilled summaries with key quotes and ESPECIALLY extracted graphics into a references directory. We can cite these in our knowledge bundle as needed, and if required go back and dig into the raw source. + +> I would promote "paraphrase and describe figures" to "generate new versions of the figures capturing key points". + +## The layers + +| Layer | Where | In the repo? | Audience | Content | +|---|---|---|---|---| +| Raw sources | private Tigris bucket, mirrored to `raw-sources/` | no (gitignored); a manifest is | credentialed team | presentations, manuscripts, emails, boards, spreadsheets, as supplied | +| References | `knowledge/references/` | yes | team | one OKF Reference per raw source: detailed distilled summary, key quotes where allowed, figures (extracted or redrawn), pointer to the raw file | +| Knowledge bundle | `knowledge/` | yes | team (public by virtue of the repo) | comprehensive OKF concepts mined from every source, citing references; reorganized under the five pillars over time | +| Presentation | `pages/` | yes | outsiders | the interconnected pages agreed with the project lead, each a distillation citing bundle pages; what the site builds | + +Each layer cites the one below it. Nothing on the site links into the raw layer. + +## Raw sources + +- The bucket is `oidm-knowledge-sources` on Tigris, private; credentials are the project lead's to grant and are never recorded in the repo. +- `raw-sources/` is gitignored. A `raw-sources/MANIFEST.json` (tracked) lists each file: bucket path, size, SHA-256, date added, a one-line description, and a sensitivity class (`public`, `restricted-until-published`, `internal`). +- A task `task sources:pull` mirrors the bucket into the directory with the t3 tool; `task sources:check` verifies the manifest against the directory. +- The current `sources/` directory becomes `raw-sources/` once the bucket exists; its extracted text and the bucket report move with it. Nothing in it is deleted. + +## References + +One document per raw source, type `Reference`, from a fixed template: + +- frontmatter: title; the raw file's manifest id and checksum; producing organization; date; status of the source (public talk, manuscript under review, internal board, email note); sensitivity class; who extracted it and when. +- body: what the source is and why it matters; a detailed distilled summary, section by section; key quotes, each with its location; the source's figures, one subsection each, with the figure file beside the reference; the claims other documents are likely to cite, each with its location; open questions the source raises. +- figures: for `public` sources, extracted as supplied (with the extraction method recorded); for `restricted-until-published` and `internal` sources, redrawn with the diagram tooling as a new figure capturing the key point, the builder recording which source figure it distills. The original stays in the raw layer. +- rules: organizations only, never an individual; reviewer correspondence never summarized or quoted; for a manuscript under review, no quotes until published; vendor names generalized where the project lead has said so. + +## Knowledge bundle + +Unchanged in role: the comprehensive, team-facing OKF bundle. Changes from this plan: + +- Concepts cite references by id instead of gitignored paths or bucket URLs. +- The bundle's own reorganization under the five named pillars (Foundation Context, Data Structures, SDKs, Use Cases, Sample Applications) is a separate track, mostly Astra and agent work, since its readers are the team. Nothing is deleted for being too detailed; the glossary stays dropped per the 2026-09-29 decision. + +## Presentation + +- The pages agreed with the project lead move from `knowledge/drafts/` to `pages/`, in the directory layout of `docs/plans/2026-09-22-layout-plan.md`, with the Overview at the root. +- The public site builds from `pages/` only. A separate internal site builds from `knowledge/` (the bundle) as its own Cloudflare static Worker, for the team. +- Release gating, decided 2026-10-01: no presentation page reaches the production site until the project lead has reviewed it (`verified` set by `task verify`). Pre-review pages go only to staging, and EVERYTHING deployed to staging carries a visible "DRAFT / Awaiting Review" label on every page. The production build fails if any page lacks a `verified` entry. +- Presentation pages keep frontmatter (status, provenance, sources) and cite bundle pages; the same validators run on both directories. + +## Steps, once agreed + +1. Manifest and sync task; move `sources/` to `raw-sources/`; gitignore update. +2. Reference template; convert the eight sources already summarized (the two SIIM decks, the January deck, the three manuscripts, the reporting-schema deck, the AI-evolution essay) and the board transcription into references; redraw figures for restricted sources. +3. Re-point bundle citations at the references. +4. Create `pages/`, move the agreed drafts, point the public site build at it, reorder the explorer to the five pillars, make the Overview the landing page. +4a. Site gating: a build-time switch that stamps "DRAFT / Awaiting Review" on every page for dev and staging builds, and a production build that refuses any page without a `verified` entry. Reviewed with the project lead before implementing (tool and approach choices are always reviewed first). +4b. Internal site: a third Worker (`oidm-knowledge-internal`) building the bundle from `knowledge/` with the same banner rule; access control to be decided with the project lead (Cloudflare Access is the obvious candidate; review first). +4c. Deploy the presentation to dev, then staging, for the project lead's verification pass. +5. Dashboard and layout plan updated; DEV_LOG and CHANGELOG entries. + +## Decisions, 2026-10-01 + +- Presentation directory: `pages/`. +- The bundle gets an internal site build on a Cloudflare static Worker. +- Nothing pre-review on production; staging only, every page labeled "DRAFT / Awaiting Review". +- Bucket: `oidm-knowledge-sources` (private). diff --git a/docs/plans/restructure-dashboard.md b/docs/plans/restructure-dashboard.md index 6857b10..bf7a1dc 100644 --- a/docs/plans/restructure-dashboard.md +++ b/docs/plans/restructure-dashboard.md @@ -75,6 +75,14 @@ Status words: **agreed** = text settled with the project lead and on disk; **in 5. Decided 2026-09-29: vendor generic; the two organizations generalized. Still open: commit of CDE decisions S53 to S67. 6. Decided 2026-09-29: deck and CDE-repository figures may be used. +## Handoff + +Everything an agent needs, including the working rules, is in [docs/HANDOFF.md](/docs/HANDOFF.md). + +## Layers (2026-10-01) + +Three layers, per [the sources-and-layers plan](/docs/plans/2026-10-01-sources-and-layers.md): raw sources (private bucket, gitignored mirror), references (distilled summaries with figures, in `knowledge/references/`), the knowledge bundle (team-facing OKF, `knowledge/`), and the presentation (`pages/`, what the site builds). The pages in this dashboard are the presentation layer; the 115-page bundle is not replaced by them. + ## Process Content agreed in conversation, one page at a time; implementation in Opus sub-agents or the codex-impl tabs; Fable reviews. Astra cross-reviews for source fidelity. Diagrams: Excalidraw builders in [tools/diagrams/](/tools/diagrams/), rendered and looked at before use. From ffc14f26ba853ca244ff6f2a69becc4bba25a58a Mon Sep 17 00:00:00 2001 From: "Alkasab Agent (agent-dev)" Date: Thu, 1 Oct 2026 21:14:39 +0000 Subject: [PATCH 17/19] Add the OIDM and Anatomic Locations brand assets - Sixteen original logo and mark files (SVG and transparent PNG) with the 2023 style guide - Manifest of source paths and checksums; notes on colors, logo variants, and use in site content and diagrams - No theme, header, favicon, or diagram changes Co-Authored-By: Claude Fable 5.1 --- CHANGELOG.md | 3 + DEV_LOG.md | 4 + docs/brand/README.md | 60 ++++ docs/brand/manifest.json | 107 +++++++ docs/brand/style-guide-2023.pdf | Bin 0 -> 69726 bytes docs/plans/2026-09-30-brand-assets.md | 20 ++ .../brand/anatomic-locations/logo-black.png | Bin 0 -> 31188 bytes .../brand/anatomic-locations/logo-black.svg | 209 ++++++++++++ .../brand/anatomic-locations/logo-color.png | Bin 0 -> 36000 bytes .../brand/anatomic-locations/logo-color.svg | 215 +++++++++++++ .../brand/anatomic-locations/logo-white.png | Bin 0 -> 35044 bytes .../brand/anatomic-locations/logo-white.svg | 214 +++++++++++++ .../assets/brand/anatomic-locations/mark.png | Bin 0 -> 11523 bytes .../assets/brand/anatomic-locations/mark.svg | 36 +++ knowledge/assets/brand/oidm/logo-black.png | Bin 0 -> 42289 bytes knowledge/assets/brand/oidm/logo-black.svg | 293 +++++++++++++++++ knowledge/assets/brand/oidm/logo-color.png | Bin 0 -> 49644 bytes knowledge/assets/brand/oidm/logo-color.svg | 297 ++++++++++++++++++ knowledge/assets/brand/oidm/logo-white.png | Bin 0 -> 48393 bytes knowledge/assets/brand/oidm/logo-white.svg | 297 ++++++++++++++++++ knowledge/assets/brand/oidm/mark.png | Bin 0 -> 18533 bytes knowledge/assets/brand/oidm/mark.svg | 128 ++++++++ site/README.md | 8 + 23 files changed, 1891 insertions(+) create mode 100644 docs/brand/README.md create mode 100644 docs/brand/manifest.json create mode 100644 docs/brand/style-guide-2023.pdf create mode 100644 docs/plans/2026-09-30-brand-assets.md create mode 100644 knowledge/assets/brand/anatomic-locations/logo-black.png create mode 100644 knowledge/assets/brand/anatomic-locations/logo-black.svg create mode 100644 knowledge/assets/brand/anatomic-locations/logo-color.png create mode 100644 knowledge/assets/brand/anatomic-locations/logo-color.svg create mode 100644 knowledge/assets/brand/anatomic-locations/logo-white.png create mode 100644 knowledge/assets/brand/anatomic-locations/logo-white.svg create mode 100644 knowledge/assets/brand/anatomic-locations/mark.png create mode 100644 knowledge/assets/brand/anatomic-locations/mark.svg create mode 100644 knowledge/assets/brand/oidm/logo-black.png create mode 100644 knowledge/assets/brand/oidm/logo-black.svg create mode 100644 knowledge/assets/brand/oidm/logo-color.png create mode 100644 knowledge/assets/brand/oidm/logo-color.svg create mode 100644 knowledge/assets/brand/oidm/logo-white.png create mode 100644 knowledge/assets/brand/oidm/logo-white.svg create mode 100644 knowledge/assets/brand/oidm/mark.png create mode 100644 knowledge/assets/brand/oidm/mark.svg diff --git a/CHANGELOG.md b/CHANGELOG.md index 582f0bd..5387eaa 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -11,6 +11,9 @@ All notable reader-facing changes to this knowledgebase. Format follows [Keep a ### Added +- Source-grounded summaries of 15 project diagram boards, indexed by idea and pillar with links to the source material. +- Reusable OIDM and Anatomic Locations logos for site content and diagrams, with the original style guide and usage notes. + - First full draft of the knowledgebase: 115 documents in OKF 0.2 covering the overview and vision, a 48-term glossary, the semantic foundation (finding models, common data elements, anatomic locations, exam types, terminologies), the data structures (Observation, Exam Finding List, Imaging Problem List, Imaging Persona, FHIR and IHE alignment), the applications, the roadmap and open questions, project history, a repository map, and verbatim reference extracts. - Authoring guide, contributing guide, and migration ledger recording every document migrated from a working repository. - Two validation gates (OKF 0.2 conformance and house rules) run in continuous integration. diff --git a/DEV_LOG.md b/DEV_LOG.md index 66a5e4f..ec12342 100644 --- a/DEV_LOG.md +++ b/DEV_LOG.md @@ -46,3 +46,7 @@ Engineering narrative for the oidm-knowledge repository: decisions, blockers, an - Drafting, Claude side: seven pages staged under `knowledge/drafts/` (introduction, foundation-context, finding-models-and-cdes, anatomic-locations, exam-types, standards, sdks) by four Opus agents, each reviewed by the main session and corrected (inventory IDs removed from prose, agent inferences cut, the deck's own labels used, an internal board cited without its link, American spelling). Three independent source-fidelity reviews of the Codex drafts written to `sources/review/`. Bundle validates at 144 documents, 0 errors, 0 warnings. Committed on `bootstrap`; pull request #1 opened from `bootstrap` into a newly created `main`. - Codex completed the source-fidelity cross-review of all seven Claude drafts, with three agents assisting; findings are in `sources/review/drafts-.md`. Claude pages were not edited by this session. Corrected the three Codex drafts and recorded dispositions, including unsupported review claims, in the corresponding response files. Key fixes cover the worked graph example, source-specific status and transport claims, live application links, and team evidence for built demonstrations. Revised bodies total 3,074 words. Strict OKF and bundle checks pass (144 documents, zero errors/warnings), with citation-ID and whitespace checks passing. Updated the drafting plan, joint handoff, and bundle log. Replacement remains separate; no commit or publication by Codex. + +## 2026-09-30 + +- Imported 16 original OIDM and Anatomic Locations logo/mark assets from Tigris into `knowledge/assets/brand/`, plus the 2023 style guide and a source/checksum manifest in `docs/brand/`. Documented logo typography, colors, the guide's conflicting light-blue RGB and hex values, and usage in site content and Excalidraw builders. Site and diagram READMEs link to the notes. The local Quartz build passed and emitted all assets unchanged; both bundle validators, manifest integrity checks, SVG embedding checks, and whitespace checks passed. The asset import leaves theme and diagram application for a separate task. Plan: `docs/plans/2026-09-30-brand-assets.md`, complete. diff --git a/docs/brand/README.md b/docs/brand/README.md new file mode 100644 index 0000000..63c07b4 --- /dev/null +++ b/docs/brand/README.md @@ -0,0 +1,60 @@ +# Brand assets + +Original assets retrieved from `t3://oidm-public/logos/` on 2026-09-30. [The manifest](./manifest.json) records each source URI, local path, size, and SHA-256. Files were renamed locally but their contents were preserved. + +## What the guide establishes + +The supplied [2023 style guide](./style-guide-2023.pdf) uses the earlier name **Open Radiology Data Model**. It has two pages covering the logo font and colors. The imported full OIDM logos say **Open Imaging Data Model**. + +| Item | Guide | Implication for the site | +|---|---|---| +| Logo font | Arial Rounded MT Bold, page 1 | Use the supplied artwork to preserve the lettering. This is not a specification for website headings or body text. | +| Light blue | `#49b5ea`, Pantone 298 C, page 2 | A candidate accent color, also present in the OIDM SVGs. | +| Dark blue | `#0033cc`, RGB 0, 51, 204, Pantone 2728 C, page 2 | A candidate link and emphasis color on light backgrounds. Both projects' artwork uses it. | + +**Color discrepancy:** page 2 prints light blue as RGB **4, 149, 234**, which is `#0495ea`, alongside hex **#49b5ea**, which is RGB **73, 181, 234**. The OIDM SVG fills use `#49B5EA`. Use that artwork-backed value for proposed web accents; the original guide remains unchanged. Some paths also use `#0133CC`, a near-match to the dark blue, preserved in the original files. + +The guide gives no website layout, body typography, spacing, minimum logo size, clear-space, or dark-mode rules. It supplies no font files or webfont license. SVG lettering is outlined, so displaying these logos requires no font installation. + +## Assets to use + +All paths below are relative to [`knowledge/assets/brand/`](../../knowledge/assets/brand/). Each filename is available in both `.svg` and `.png`. + +| Project | Full logo variants | Square mark | SVG proportions | +|---|---|---|---| +| OIDM | `oidm/logo-color`, `logo-black`, `logo-white` | `oidm/mark` | Full logo 800 × 197.89; mark 720 × 720 | +| Anatomic Locations | `anatomic-locations/logo-color`, `logo-black`, `logo-white` | `anatomic-locations/mark` | Full logo 538.02 × 179.27; mark 720 × 720 | + +Prefer SVG for the website and diagrams. Transparent PNGs support tools that require raster input: OIDM logos are 2000 × 495, Anatomic Locations logos 2000 × 665, and both marks 720 × 720. The square marks came from the supplied favicon files. Their usefulness at very small sizes should be checked when installing a site favicon. + +The selection omits duplicate print/editing formats, JPGs, pre-sized raster copies, overview illustrations, backgrounds, and the graveyard. The vector originals cover resizing without adding those copies. + +## Suggested application + +These are implementation suggestions, not additional rules from the guide: + +- Use the color full logo for project identification on light backgrounds, the white full logo on dark backgrounds, and black for monochrome output. Preserve proportions and allow space around the artwork. +- Use the square marks beside project names in diagrams. Keep the name visible when the mark alone would be ambiguous. Do not use a project logo as a generic symbol for an anatomy or data-model concept. +- Use dark blue for candidate light-theme links or emphasis. Keep light blue for accents and larger graphic areas. Calculated contrast against white is about 8.95:1 for dark blue and 2.31:1 for light blue, so they are not interchangeable text colors. Check the actual background when applying either. +- Keep the current reading fonts until typography is addressed separately. The existing Quartz theme is in `site/quartz.config.yaml`; importing these assets does not apply a new theme. + +## Use in site content and diagrams + +From a document in `knowledge/drafts/`: + +```markdown +![Open Imaging Data Model](../assets/brand/oidm/logo-color.svg) +``` + +The existing staging and Quartz asset steps copy the files to `public/assets/brand/`, making the example available at `/assets/brand/oidm/logo-color.svg` on the built site. Site header and favicon integration remain separate from importing the files. + +For a diagram builder using `tools/diagrams/excalib.py`: + +```python +image("oidm-logo", x, y, 200, 200 * 197.89 / 800, + "../../knowledge/assets/brand/oidm/logo-color.svg") +image("anatomic-locations-mark", x, y, 48, 48, + "../../knowledge/assets/brand/anatomic-locations/mark.svg") +``` + +Use distinct positions for each element. The helper resolves these paths relative to its own directory and embeds the SVG bytes into the Excalidraw file. Omit the `color` argument to preserve brand colors. Follow the [diagram source-of-truth rule](../../tools/diagrams/README.md#source-of-truth-rule) when adding a logo to an existing graphic. diff --git a/docs/brand/manifest.json b/docs/brand/manifest.json new file mode 100644 index 0000000..b05633b --- /dev/null +++ b/docs/brand/manifest.json @@ -0,0 +1,107 @@ +{ + "retrieved": "2026-09-30", + "files": [ + { + "path": "knowledge/assets/brand/oidm/logo-color.svg", + "source": "t3://oidm-public/logos/Open Imaging Data Model/Open Imaging Data Model logo.svg", + "bytes": 29836, + "sha256": "6872de52cfdda7bafa4778f9f60a3cf2986cea1ed62a45985731cf7663b169c0" + }, + { + "path": "knowledge/assets/brand/oidm/logo-color.png", + "source": "t3://oidm-public/logos/Open Imaging Data Model/Open-Imaging-Data-Model-logo.png", + "bytes": 49644, + "sha256": "3b95bc08f6ceb041e6e097d424fbcdf0b80f323bf5ee353b88c096e5443987b4" + }, + { + "path": "knowledge/assets/brand/oidm/logo-black.svg", + "source": "t3://oidm-public/logos/Open Imaging Data Model/Open Imaging Data Model logo black.svg", + "bytes": 29360, + "sha256": "b27765f299d3f171952f27c068ee0fdb8b1b4bb578624a59b6e36df66d30c712" + }, + { + "path": "knowledge/assets/brand/oidm/logo-black.png", + "source": "t3://oidm-public/logos/Open Imaging Data Model/Open-Imaging-Data-Model-logo-black.png", + "bytes": 42289, + "sha256": "089e8f9d2e0c90a3a4df9bb5e1051441e329dce7f59604c707b7260cc76d8ec4" + }, + { + "path": "knowledge/assets/brand/oidm/logo-white.svg", + "source": "t3://oidm-public/logos/Open Imaging Data Model/Open Imaging Data Model logo white.svg", + "bytes": 29995, + "sha256": "0a99b4ed2091e99dfb5a376b865bf348365fdb7923f96c239c4a877e50d9df63" + }, + { + "path": "knowledge/assets/brand/oidm/logo-white.png", + "source": "t3://oidm-public/logos/Open Imaging Data Model/Open-Imaging-Data-Model-logo-white.png", + "bytes": 48393, + "sha256": "98a4771e17b0ddb0423d066778561d1c406c88320b9bf577735f2ba7fafc8ef8" + }, + { + "path": "knowledge/assets/brand/oidm/mark.svg", + "source": "t3://oidm-public/logos/Open Imaging Data Model/Open Radiology Data Model Project favicon.svg", + "bytes": 11504, + "sha256": "bbea5bf9eb403b7669783b560a32c8c3a43da791c95e24e61e61b21d9a78d183" + }, + { + "path": "knowledge/assets/brand/oidm/mark.png", + "source": "t3://oidm-public/logos/Open Imaging Data Model/Open-Radiology-Data-Model-Project-favicon.png", + "bytes": 18533, + "sha256": "bc7f99373c4e8367d60ad634e0b6c83d9cb16b6a971f711e6d600d318acd7d4a" + }, + { + "path": "knowledge/assets/brand/anatomic-locations/logo-color.svg", + "source": "t3://oidm-public/logos/Anatomic Locations/AnatomicLocations logo.svg", + "bytes": 22668, + "sha256": "c0a83e076d969d616c809354b658df5b463989ed3b3d5985b282a359cfcab759" + }, + { + "path": "knowledge/assets/brand/anatomic-locations/logo-color.png", + "source": "t3://oidm-public/logos/Anatomic Locations/AnatomicLocations-logo.png", + "bytes": 36000, + "sha256": "5e49ad69407de57963b45f0eaf6f229988b1ebed556c450789f7b76e2c429862" + }, + { + "path": "knowledge/assets/brand/anatomic-locations/logo-black.svg", + "source": "t3://oidm-public/logos/Anatomic Locations/AnatomicLocations logo black.svg", + "bytes": 22318, + "sha256": "ca728f7b1c1f8b53bbe08d8efc20aebb6ae0f5e23b4fd96776ec910e63b711cb" + }, + { + "path": "knowledge/assets/brand/anatomic-locations/logo-black.png", + "source": "t3://oidm-public/logos/Anatomic Locations/AnatomicLocations-logo-black.png", + "bytes": 31188, + "sha256": "87908be4a2fbe08d3ff5649db194db9cd78778d1d28b91062b177bbe54ff6108" + }, + { + "path": "knowledge/assets/brand/anatomic-locations/logo-white.svg", + "source": "t3://oidm-public/logos/Anatomic Locations/AnatomicLocations logo white.svg", + "bytes": 22647, + "sha256": "4eb007fee8228e65f62165c1659719242bec8177f53ad81c10fd84731bdf6d3d" + }, + { + "path": "knowledge/assets/brand/anatomic-locations/logo-white.png", + "source": "t3://oidm-public/logos/Anatomic Locations/AnatomicLocations-logo-white.png", + "bytes": 35044, + "sha256": "e1284e1b4f63de7e18b9d1b093210018122de4f7fbd6f00daa89a42f5a55aa20" + }, + { + "path": "knowledge/assets/brand/anatomic-locations/mark.svg", + "source": "t3://oidm-public/logos/Anatomic Locations/AnatomicLocations favicon.svg", + "bytes": 3129, + "sha256": "acd4c6467bf638c07825d902fbc807ebae3a237f095c5dedf4698f336b5833c6" + }, + { + "path": "knowledge/assets/brand/anatomic-locations/mark.png", + "source": "t3://oidm-public/logos/Anatomic Locations/AnatomicLocations-favicon.png", + "bytes": 11523, + "sha256": "444b7ca951c491e79cc0e41a8fdd7795dcadaa0c973b85b51f2af98b4f224524" + }, + { + "path": "docs/brand/style-guide-2023.pdf", + "source": "t3://oidm-public/logos/Open Radiology Data Model Project style Guide.pdf", + "bytes": 69726, + "sha256": "f0d08539d4a5f1a78bda59a7bc7bb6237571a594a20b2c91fb8cd670c6e9b37f" + } + ] +} diff --git a/docs/brand/style-guide-2023.pdf b/docs/brand/style-guide-2023.pdf new file mode 100644 index 0000000000000000000000000000000000000000..bf957e64875b3d420a6e9e8b7e07a8b6ae95830b GIT binary patch literal 69726 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°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�e7SfYXQ>QL*;FeFuDRkLFvTT^}p^Dpq#+Q@TY-5 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 SX!Icphhtd9#I%gGS^p0T#+s!7 literal 0 HcmV?d00001 diff --git a/docs/plans/2026-09-30-brand-assets.md b/docs/plans/2026-09-30-brand-assets.md new file mode 100644 index 0000000..093b028 --- /dev/null +++ b/docs/plans/2026-09-30-brand-assets.md @@ -0,0 +1,20 @@ +# Brand assets from Tigris + +Status: complete, 2026-09-30. + +Bring the useful OIDM and Anatomic Locations brand assets from `t3://oidm-public/logos/` into the repository and record what the supplied style guide supports for website presentation. + +1. Read the style guide and inspect the logo variants alongside the site's asset pipeline. +2. Import a small selection of original SVG and PNG assets, plus the guide, with source paths and checksums. +3. Document colors, typography, variant selection, and use in site content and diagrams. Distinguish supplied rules from suggested applications. +4. Check file integrity and site asset handling. Update the site and diagram documentation, changelog, and development log, then mark this plan complete. + +The work prepares assets and guidance. Applying a new site theme or changing the existing diagrams is a separate task. + +## Result + +- Imported 16 unmodified SVG and transparent PNG assets into `knowledge/assets/brand/`, plus the original two-page guide in `docs/brand/`. +- Recorded source URIs and checksums in `docs/brand/manifest.json`. The guide's light-blue RGB and hex values disagree; the SVG artwork supports the hex value `#49b5ea`. +- Wrote `docs/brand/README.md` with source-backed guidance, separate application suggestions, and site/diagram usage examples. Updated the site and diagram READMEs, changelog, and development log. +- Local Quartz build passed. All 16 built assets match the imported bytes, all 17 source-file checksums match the manifest, and all eight SVGs embed unchanged through `excalib.image()`. +- Strict OKF validation and the house bundle checker passed with zero errors or warnings. `git diff --check` passed. No theme changes, diagram changes, deployment, or commit were made for this task. diff --git a/knowledge/assets/brand/anatomic-locations/logo-black.png b/knowledge/assets/brand/anatomic-locations/logo-black.png new file mode 100644 index 0000000000000000000000000000000000000000..26f36137cf41b9a1bd523a212971ba05a7ba5acb GIT binary patch literal 31188 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 literal 0 HcmV?d00001 diff --git a/knowledge/assets/brand/anatomic-locations/logo-black.svg b/knowledge/assets/brand/anatomic-locations/logo-black.svg new file mode 100644 index 0000000..e0a8020 --- /dev/null +++ b/knowledge/assets/brand/anatomic-locations/logo-black.svg @@ -0,0 +1,209 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/knowledge/assets/brand/anatomic-locations/logo-color.png b/knowledge/assets/brand/anatomic-locations/logo-color.png new file mode 100644 index 0000000000000000000000000000000000000000..00abda92670f84078893394a004ca3acac7b343e GIT binary patch literal 36000 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 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/knowledge/assets/brand/anatomic-locations/logo-white.png b/knowledge/assets/brand/anatomic-locations/logo-white.png new file mode 100644 index 0000000000000000000000000000000000000000..488887af956f65700d4bde78945aed01dce48ec7 GIT binary patch literal 35044 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 cjM!P+DM|G7 zW#5_oTuAEU0{bUIs$KCjiQU&;jPJeGJTFbcV3 ax22jIT|1e3zSZ-;(e-o;o>V=y{qR5kLvLvS literal 0 HcmV?d00001 diff --git a/knowledge/assets/brand/anatomic-locations/logo-white.svg b/knowledge/assets/brand/anatomic-locations/logo-white.svg new file mode 100644 index 0000000..baf394a --- /dev/null +++ b/knowledge/assets/brand/anatomic-locations/logo-white.svg @@ -0,0 +1,214 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/knowledge/assets/brand/anatomic-locations/mark.png b/knowledge/assets/brand/anatomic-locations/mark.png new file mode 100644 index 0000000000000000000000000000000000000000..9be7505caa63c27ba87b15ca6351637d3da2c179 GIT binary patch literal 11523 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 W1$X7fcf}|wFP_)eeyeG7@BaYelk18A literal 0 HcmV?d00001 diff --git a/knowledge/assets/brand/anatomic-locations/mark.svg b/knowledge/assets/brand/anatomic-locations/mark.svg new file mode 100644 index 0000000..44de4d3 --- /dev/null +++ b/knowledge/assets/brand/anatomic-locations/mark.svg @@ -0,0 +1,36 @@ + + + + + + + + + diff --git a/knowledge/assets/brand/oidm/logo-black.png b/knowledge/assets/brand/oidm/logo-black.png new file mode 100644 index 0000000000000000000000000000000000000000..83aaf0266311a1ec5039abfb10a947ed9ffa8e8e GIT binary patch literal 42289 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 CSMOZ_ literal 0 HcmV?d00001 diff --git a/knowledge/assets/brand/oidm/logo-black.svg b/knowledge/assets/brand/oidm/logo-black.svg new file mode 100644 index 0000000..cb025a8 --- /dev/null +++ b/knowledge/assets/brand/oidm/logo-black.svg @@ -0,0 +1,293 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/knowledge/assets/brand/oidm/logo-color.png b/knowledge/assets/brand/oidm/logo-color.png new file mode 100644 index 0000000000000000000000000000000000000000..364974c2ed81a09bed7bac1f05f6d31721735d71 GIT binary patch literal 49644 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�v~Sg26RDGoW{S`{>JH?{tBN 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%0Av z-roJ-jnbC5>Vc;C5>H8MkjA5P;O1fd#FGJ{?UVE~n9HW*nQ;?way4hYBa-qAUJ8<3 zNG3LV@dmENrFUT(xviU$6lFZ5URbTEqEka}x*`3!k*n)s(7Dt(-(3fY)YhbFOGliN67tA@B zrj%**!kyIPvm0#WvgoR%gj04{OWxsrd8ucRJkVlI#_uuwf^Nzy*WVGcX^lb$`k!1q zaup7g)yh;yp>(Uc2S4AQJz5$I+#>BqiZ#~0L!8uz>sIM;J`QVS5Qr8UJy~^N_;vHg z&GLi@y)eesld6@XH2JMZ(9n7~vZJei1XSH?i z=9!*_)q7fW`(!iMWN_|U|N4;Yhh~W&v)7Drqbj$LeLMz~tJHSRebI-!NDt*hijEff z#doWfj}Safq<*6YBy*-Si?)7p+VxgWk<#B^V+}^o(&h7=X#US@KfMhd4D;J7JGrX? zjiiF$^rm8}W<`-*&=&MZsNeSyt(?Ca-)lmD(m=}Ojt6s?t-S%(wE1%7D=GS)CmI}L zKGE^T-O`BoCzqfS&;SttX{Lrih=I9Sbk;BXXo`%R=dS*LNppM&+*uad8x}|@4S7iD z{U`mLN4VgMaR|D+&q@Lt2RhXJBd525piTZC=>JIoehGnw6F4H>RCo$R>i#2hl{W}i z3;;|`!9)XH+vR`Kf#0+b0e|Xdi6`5s*;D@%1!%VTN!kaxXauKX&pG7&$sg2I6ho}r zskIq)n}{$*N^&zO>zwA}F9~ueCGLBe^hQtx$x_N9Nf;x#Ui0T1@S;SYaD}Z$m*ahe zh8u{n*jyQ-QV#g%^jJI1rsEIcO_0imGO{xxjtQm&wnQB9_P<36OAOvr2i3HhH@>yv zZH9lYyKZ=SKfI#w@ADPG=bIAy%#?k^gKS9s0RI_w`}M62#8f&D**|4B_lUo}txo?q z(1uX=&*Q;=a&xkbVui%}l2J3DX}jT}Cb+i#TY`M<5={px?~HRrokN)ZmIKhqB0}NH z@M4e&xR|7=F(YG-GQv)0q)`Yk0F07XA6ZPVSM( z2B~k03!Ebrt+T7S2mU++&NK|)#Lx_{)tcu0=EPqmT3Bwy7kEa zD%xNeTTtTzvBu0P7Js-E7-0R6mW$J1As?vh6R&-?cK z9o>)qt5SP!AVe}8-gZR7GOM79sCc&<;v}Z+i?8Yxt_4v_07XhCPS;?Hc zJ|C@^dDSU>_&5Eb>-dv@bpS&A%x@ysw$%wqpKw3X|L@J_BZX>)&i)N z?5@GiqM>y|015HGH@>KKlVE>gDcBY_64u1TBU3QRNyZ?{3n9Hq+KrYBWb%TeXSSOv zeU*366~CrL1FNLb7nI)(&+lER25}mHOAxhyf-46|l03Yr40xIj%aR)s&P>nmIWK1% zEse&eSh&4Ao7wE7IiOM9@=83G^eQ41cGmm1g)a^ae<^zOYQ=|cAF8JGBaZ)iVEylx zJL6vkyaEm@J1IO3@=q5Hkg zg7hOGNb7HLHGF^A1$Ow$V2%2+DF{&@9SL!hKvN3O_@r@QWbtSspUfom)pVJXk8RP* zw%-!iMl2FJ)A~~tSKi11OpSO7d%ZZAI-A{eh<*I$re;v`e$$`7K5l5$!4Z3dM8!nQ za8pe1(HGaEN{W1#MHBob1ruGMk^K)^mPC%t zKX+;7I7bC0W4sI!L}1DweEL7){O!DW|H@xjmOqCS|3UZseJJ<8j?CWwCjiRdCqY-C zKUabO5C1|A{z=gIUq?3#x3^R2bU?1K5kT(VChfuTrB3QBx_@5j3mO)pl>vkF7*T*a z{JYHjIhMKzi8vGy^mEzTtd*fvbR-5f{q z&qTv|&%IYpmeu?2n}^`Zv7IvFK35vTihn-pcMC*<8XxYOKLBSn)rRjZa&V4{SP`)2n zC41o@Oi5&nQ0`&`+^Sgx%qk(QU0nVbY1(;S*2j8ZZ=Ul_1v=8ESI!Tzk25|cT#k$* z{&}$scy5aum`}%rJ$=$ZnN5U=?B@OV+jxHQ|1SwTOP3L6J%2j&?wR|;e<#TQOM#?s ZHv^M*G0%C_CYR5%C@ZQf6g@C|^*@!?QWXFI literal 0 HcmV?d00001 diff --git a/knowledge/assets/brand/oidm/logo-color.svg b/knowledge/assets/brand/oidm/logo-color.svg new file mode 100644 index 0000000..3044dc5 --- /dev/null +++ b/knowledge/assets/brand/oidm/logo-color.svg @@ -0,0 +1,297 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/knowledge/assets/brand/oidm/logo-white.png b/knowledge/assets/brand/oidm/logo-white.png new file mode 100644 index 0000000000000000000000000000000000000000..adff8a843f5336c3c1eedf81023fe69331a3c820 GIT binary patch literal 48393 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 HA3py-?##$0 literal 0 HcmV?d00001 diff --git a/knowledge/assets/brand/oidm/logo-white.svg b/knowledge/assets/brand/oidm/logo-white.svg new file mode 100644 index 0000000..34d4380 --- /dev/null +++ b/knowledge/assets/brand/oidm/logo-white.svg @@ -0,0 +1,297 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/knowledge/assets/brand/oidm/mark.png b/knowledge/assets/brand/oidm/mark.png new file mode 100644 index 0000000000000000000000000000000000000000..5f92ad4c1bb35e3591769d0290ee4c525d85641a GIT binary patch literal 18533 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 literal 0 HcmV?d00001 diff --git a/knowledge/assets/brand/oidm/mark.svg b/knowledge/assets/brand/oidm/mark.svg new file mode 100644 index 0000000..722388b --- /dev/null +++ b/knowledge/assets/brand/oidm/mark.svg @@ -0,0 +1,128 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/site/README.md b/site/README.md index d28b041..6fcbd33 100644 --- a/site/README.md +++ b/site/README.md @@ -18,6 +18,14 @@ plugins live here. `build.sh` clones Quartz at a pinned commit into `site/.quart `site/.quartz-src/` (the Quartz checkout), `public/` (the build output), and any `node_modules/` under `site/` are gitignored. +## Brand assets + +OIDM and Anatomic Locations logos are in `knowledge/assets/brand/`. The existing +content staging and Quartz asset steps publish them at `/assets/brand/`. +See the [brand guide notes](../docs/brand/README.md) for the supplied colors, +logo variants, usage examples, and original style-guide PDF. The import does +not change the site's theme, header, or favicon. + ## Building locally From the repository root: From 4bd7d46751777c96f4031cff6ec9ef094995404e Mon Sep 17 00:00:00 2001 From: "Alkasab Agent (agent-dev)" Date: Thu, 1 Oct 2026 21:25:25 +0000 Subject: [PATCH 18/19] Review and compare OKF tooling options - Installed skills match upstream scaccogatto/okf-skills byte for byte; custom code is the house checker, verification helper, and publishing integration - Alternative validators run against 29 labeled fixtures; shared impossible-date crash and differing check scope recorded - Research only: no tooling, bundle, or site changes Co-Authored-By: Claude Fable 5.1 --- DEV_LOG.md | 9 +++ .../2026-10-01-okf-tooling-comparison.md | 13 ++++ docs/plans/2026-10-01-okf-tooling-review.md | 13 ++++ docs/references/okf-tooling-comparison.md | 69 +++++++++++++++++++ docs/references/okf-tooling-review.md | 52 ++++++++++++++ 5 files changed, 156 insertions(+) create mode 100644 docs/plans/2026-10-01-okf-tooling-comparison.md create mode 100644 docs/plans/2026-10-01-okf-tooling-review.md create mode 100644 docs/references/okf-tooling-comparison.md create mode 100644 docs/references/okf-tooling-review.md diff --git a/DEV_LOG.md b/DEV_LOG.md index ec12342..ff84356 100644 --- a/DEV_LOG.md +++ b/DEV_LOG.md @@ -50,3 +50,12 @@ Engineering narrative for the oidm-knowledge repository: decisions, blockers, an ## 2026-09-30 - Imported 16 original OIDM and Anatomic Locations logo/mark assets from Tigris into `knowledge/assets/brand/`, plus the 2023 style guide and a source/checksum manifest in `docs/brand/`. Documented logo typography, colors, the guide's conflicting light-blue RGB and hex values, and usage in site content and Excalidraw builders. Site and diagram READMEs link to the notes. The local Quartz build passed and emitted all assets unchanged; both bundle validators, manifest integrity checks, SVG embedding checks, and whitespace checks passed. The asset import leaves theme and diagram application for a separate task. Plan: `docs/plans/2026-09-30-brand-assets.md`, complete. + +## 2026-10-01 + +- Compared current OKF skills and toolchains, including lorsabyan and serradura, and qualified the earlier QMD suggestion. Ran 29 labeled external validator fixtures with baseline-policy warnings excluded: installed/current scaccogatto reported 13/19 problem cases and accepted 10/10 clean cases; lorsabyan reported 19/19 and accepted 10/10. Recorded the shared impossible-date crash, differing check scope, missing backfill agent payload, and unsafe index-prose rewriting. Actual-bundle trials exposed 15 repository-versus-bundle source-path warnings in the alternative validator. Findings and upstream reuse priorities are in `docs/references/okf-tooling-comparison.md`; no installation, bundle changes, commit, or publication. + +- Reviewed OKF tooling origins and current reuse options. All 13 installed skill files match upstream `scaccogatto/okf-skills` commit `d8393f3` byte for byte; custom code is the house checker, verification helper, and publishing integration. Recorded Google's canonical-repository move, available upstream MCP/CI support, QMD and Basic Memory tradeoffs, and metadata compatibility differences in `docs/references/okf-tooling-review.md`. Review plan complete. No tooling changes, commit, or publication. + +- Captured and visually reviewed all 15 unique Excalidraw boards in `links.txt` (17 URL occurrences). Native SVG/PNG exports, source contents, searchable text, and checksum metadata are in gitignored `sources/linked-diagrams/`; 15 source-grounded draft summaries and their index are staged in `docs/references/linked-diagrams/`. Three untouched SVG exports have normalized copies for XML compatibility. Verified coverage, image decoding, SVG parsing, 63 checksums, and local links; OKF conformance has zero errors, with 50 external-directory link warnings whose targets were checked separately. Plan `docs/plans/2026-10-01-linked-diagrams.md` is complete. The proposed layer migration, detailed reference conversion, and figure redraws await the owner's go; no bundle or presentation moves, upload, commit, or publication by this session. + diff --git a/docs/plans/2026-10-01-okf-tooling-comparison.md b/docs/plans/2026-10-01-okf-tooling-comparison.md new file mode 100644 index 0000000..5029609 --- /dev/null +++ b/docs/plans/2026-10-01-okf-tooling-comparison.md @@ -0,0 +1,13 @@ +# OKF tooling comparison + +Status: complete. + +1. Record this follow-up plan. +2. Compare available OKF skills and tools using current primary sources, version coverage, maintenance, and repository fit. +3. Inspect upstream functionality missing from this installation and separate useful additions from duplication. +4. Compare search options against the repository's content, provenance requirements, and client access needs. Distinguish documented capabilities from tested results. +5. Save findings, update the development log, and mark this plan complete. Update reader-facing documentation only if behavior changes. + +Scope: research and recommendations. Keep OKF. No installation, migration, commit, or publication. + +Results: [tooling comparison](../references/okf-tooling-comparison.md). Compared current primary documentation for direct OKF skills/toolchains and adjacent search tools. Ran both installed and current scaccogatto validators and lorsabyan's validator against 29 external fixture bundles with baseline-warning adjustment; documented scope differences and a reproducible impossible-date crash. Ran the alternative validator and index generator in read-only modes against the actual bundle; recorded path-contract warnings and prose-preservation limits. Recommended selective upstream reuse and task-based search evaluation. No search performance claims or tool selection without a benchmark. Origins review and development log updated; no reader-facing behavior changed, so no changelog entry. diff --git a/docs/plans/2026-10-01-okf-tooling-review.md b/docs/plans/2026-10-01-okf-tooling-review.md new file mode 100644 index 0000000..b569f57 --- /dev/null +++ b/docs/plans/2026-10-01-okf-tooling-review.md @@ -0,0 +1,13 @@ +# OKF tooling review + +Status: complete. Scope: investigate and recommend; no tooling replacement. + +1. Record this plan before the investigation. +2. Trace the format and installed skills to their sources; inspect local changes and project-specific tooling. +3. Check current upstream tools and adjacent alternatives against the repository's needs. +4. Save findings with source links, recommend what to reuse, and mark the review complete. +5. Review relevant documentation and update the development log. Add a changelog entry only if reader-facing behavior changes. + +Preserve unrelated workspace changes. Do not commit or publish. + +Results are in [the tooling review](../references/okf-tooling-review.md). All 13 installed skill files match the September installation-era upstream revision. Checked current upstream documentation and compared newer files. Identified local policy and publishing integrations, upstream source relocation, retrieval alternatives, and compatibility issues for a future update. Documentation review complete; development log updated. No reader-facing behavior changed, so the changelog is unchanged. diff --git a/docs/references/okf-tooling-comparison.md b/docs/references/okf-tooling-comparison.md new file mode 100644 index 0000000..6a9db0b --- /dev/null +++ b/docs/references/okf-tooling-comparison.md @@ -0,0 +1,69 @@ +# Choosing OKF skills and search tools + +Reviewed 2026-10-01. Follow-up to [the origins review](okf-tooling-review.md). Keep OKF; compare tooling without changing the installation. + +## The current skills are defensible, but not proven best + +The September 20 development log records a comparison between scaccogatto's v0.2 toolkit and the v0.1 skill linked from okf.md. That establishes a version-based selection. It does not establish a comprehensive comparison or prove that the first search result drove the decision. + +Current primary-source comparison: + +| Candidate | Evidence and fit | +|---|---| +| [scaccogatto/okf-skills](https://github.com/scaccogatto/okf-skills) | Our installed toolkit. OKF 0.2 author/maintain/consume, migration, deterministic validator, graph rendering, and history backfill. Uses PyYAML. Good fit with our Python/uv tooling and existing tasks. Current upstream also has MCP, a CI action, plugin hooks, and backfill agent definitions. | +| [lorsabyan/okf-skill](https://github.com/lorsabyan/okf-skill) | Credible v0.2 alternative. Validator, trust/freshness reports, index generator, tests against pinned Google sample bundles, and scheduled spec-drift checks. More validation coverage in the trial below. Its dependency-free parser deliberately handles a YAML subset rather than full YAML. Its skill imposes relative-only links and index-organizing conventions that differ from our current policy. | +| [serradura/okf](https://github.com/serradura/okf) | Broader v0.2 toolkit: separate validate/lint commands, ranked search, trust/status filtering, multi-bundle registry, graph, CLI/library, and optional MCP/TUI. A serious candidate for a unified toolchain, but introduces Ruby or Docker and replaces more of our workflow. Reviewed docs, not executed here. | +| [parkscloud/okf-author](https://github.com/parkscloud/okf-author) and [catancs/okf-skill](https://github.com/catancs/okf-skill) | Current documentation still targets v0.1. Their authoring defaults do not address our v0.2 trust/provenance workflow. No reason to switch to them for this bundle. | +| [copperbox/okf-mcp](https://github.com/copperbox/okf-mcp) | Extensive multi-bundle navigation, remote loading, packing, repair, and authoring tools. Current documentation describes v0.1 validation and timestamp/citations write conventions. Read capabilities merit separate evaluation; avoid adopting its write path for our v0.2 workflow without verification. | + +Recommendation: retain the current authoring and visualization skills provisionally. Evaluate lorsabyan's validator alongside ours before deciding whether to replace validation. Evaluate serradura if we want one tool for multi-bundle search, filtering, lint, and graph navigation. Installing overlapping authoring skills together risks conflicting instructions. + +## What the validator trial actually shows + +I ran the [lorsabyan fixture corpus](https://github.com/lorsabyan/okf-skill/tree/main/benchmark) against our installed validator, current scaccogatto upstream at `8e3187875e66051bb52f91a5ed27342e2c3208da`, and lorsabyan's current validator. The corpus contains 19 deliberately problematic bundles and 10 clean bundles. It was authored by one candidate's maintainer and is a small test, not independent proof of overall superiority. + +| Validator | Problem cases reported without crashing | Clean cases accepted without additional reports | +|---|---|---| +| Installed scaccogatto | 13/19 | 10/10 | +| Current scaccogatto | 13/19 | 10/10 | +| lorsabyan | 19/19 | 10/10 | + +To make the comparison meaningful, I excluded scaccogatto's missing-title and missing-tags warnings, which occur in the unchanged baseline too. Both tools then have a silent baseline. The corpus itself was unchanged. Lorsabyan's clock was pinned to July 30; scaccogatto's checker does not report calendar staleness. The scores count any report, not necessarily the correct diagnosis. Scope differs: scaccogatto intentionally leaves some curation checks to other tools, and our house checker already covers index coverage and stale dates. + +Both scaccogatto versions crash when PyYAML parses an impossible unquoted date. Other unreported cases cover missing indexes, passed stale dates, an undefined/unattributed footnote, an attested computation with no computation, and a dead path-valued field. The crash needs a fix; broader checking needs a policy choice. It is not enough to update the upstream pin and assume these are resolved. + +On the actual bundle, our validator passes with 129 concepts and zero issues. Lorsabyan reports zero errors and 15 warnings for source locators written relative to the repository rather than the bundle. Those are path-contract differences to resolve before replacing the validation gate. Strict mode fails on those warnings. + +The alternative index generator's `--check` proposes changes to all 18 indexes. Inspection shows that it reconstructs headings and recognized list entries but drops surrounding prose. Its preservation promise covers entries, not entire documents. Our root index contains introductory and review-status prose. Do not run this generator in write mode on our indexes without a preservation fix. + +## Useful upstream additions, in priority order + +1. **Pinned updates and drift detection.** Record the toolkit revision, refresh the canonical spec source, and borrow the [lorsabyan scheduled drift-check pattern](https://github.com/lorsabyan/okf-skill/blob/main/README.md#maintenance). Comparing specification content matters because upstream changed timestamp guidance without changing `okf_version`. +2. **Reuse upstream fixtures and tests.** Keep generic conformance covered by upstream tests; test our policy separately. Include the impossible-date case when evaluating an update. Report or contribute the generic validator fix upstream rather than maintaining an unnoticed local fork. +3. **Use the validator's existing JSON output.** It is already installed. CI can consume the report rather than parse terminal output. The [upstream composite action](https://github.com/scaccogatto/okf-skills/blob/main/action.yml) packages validation and a JSON report. It would simplify wiring, not add new validation capability. Pin its commit if adopted. +4. **Complete backfill packaging when needed.** Our backfill skill references `agents/event-analyzer.md` and the `okf:bundle-weaver` agent. Those definitions are not in the installed payload. Vendor the matching definitions or use the reviewed full plugin for a history reconstruction. Do not run backfill on this established bundle just to use the feature. +5. **Expose an upstream MCP reader only for clients that benefit.** The [scaccogatto server](https://github.com/scaccogatto/okf-skills/blob/main/servers/okf_mcp.py) offers search/read/neighbors, including internal source edges. Codex already has file tools; adding MCP does not automatically improve retrieval. For remote clients, configure the actual `knowledge/` path instead of the default `.okf/`. +6. **Trial native OKF filtering for team queries.** Serradura's search supports OKF `--trust` and `--status` directly. That is useful for questions constrained to reviewed content and deserves comparison with a generic search index. + +The full plugin's enforced-upkeep hook only checks that the knowledge log changed alongside code. It does not prove that affected concepts were updated accurately. Our house checker also rejects its root-index `upkeep` field. Adopting that hook is a separate workflow decision, not a prerequisite for better tooling. + +## QMD is a candidate, not the selected search tool + +There are 257 files across `knowledge/` and `docs/` at the review snapshot, including non-Markdown assets. This is small enough to establish a file-search baseline before adding a model-backed index. + +| Need | First candidate | Why / limit | +|---|---|---| +| Known names, exact identifiers, citation IDs | `rg` plus designed indexes | Already available, searches current files, and gives paths/lines. Use as the baseline. | +| Neighbors, backlinks, trust/status constraints | Native OKF tooling | Preserves graph and metadata semantics. Compare serradura and the existing toolkit's MCP reader. | +| Natural-language questions that use different vocabulary | [QMD](https://github.com/tobi/qmd) | Local BM25, vector retrieval, reranking, CLI/MCP, and an existing `qmd bench` command. Quality on OIDM is unmeasured. | +| Section navigation with frontmatter filters | [doctree-mcp](https://github.com/joesaby/doctree-mcp) | BM25 plus heading-tree navigation and frontmatter facets without embedding models. Its own competitive claims are not independent benchmark evidence. | +| Searching original PDFs, decks, websites, and repositories | [docs-mcp-server](https://github.com/arabold/docs-mcp-server) | Broader ingestion formats and sources. More relevant than Markdown-only retrieval if raw-source access is central. Extraction quality, source locators, and indexing scope need testing. | +| People searching the public website | Quartz search | Already integrated. A local agent-search tool is not a replacement for the public-site search experience. | + +QMD's full pipeline downloads three local models totaling about 2 GB. Index refresh and embedding refresh must be managed. Keyword-only mode avoids the model pipeline, but then the comparison is against existing exact search and lighter BM25 tools. + +More importantly, [QMD metadata filtering](https://github.com/tobi/qmd#metadata-filtering) requires an opt-in `qmd.metadata` block with flat typed values. It does not automatically derive trust or freshness from our nested `verified` and `sources` fields. An adapter could produce those filters, but that would add code. Keep retrieval separate from the decision about whether a claim is verified and current. + +Choose search with real tasks: exact terminology, paraphrased concepts, questions requiring multiple linked pages, source lookup, reviewed-only constraints, and absent-answer cases. Label the expected evidence files first. Compare the current agent/file workflow, native OKF search, and QMD or doctree; add broad-source ingestion only if required. Measure evidence recall, citation correctness, refresh after an edit, resource use, and whether extra tool calls help. QMD already provides a benchmark runner, so there is no reason to invent one before trying it. + +No search engine was installed or benchmarked in this review. The validator trial does not establish retrieval quality or authoring quality. The right search choice remains open until its intended consumer and actual failures are clear. diff --git a/docs/references/okf-tooling-review.md b/docs/references/okf-tooling-review.md new file mode 100644 index 0000000..621f997 --- /dev/null +++ b/docs/references/okf-tooling-review.md @@ -0,0 +1,52 @@ +# OKF tooling origins and reuse options + +Reviewed 2026-10-01. This is an investigation and recommendation, not a tooling migration. Research used Exa, Ref, upstream documentation, GitHub metadata, and direct file comparisons. Technical-writing and unslop skills guided the report. + +The [follow-up comparison](okf-tooling-comparison.md) evaluates other v0.2 skills, runs validator fixtures, and qualifies the initial QMD recommendation. This origins review establishes where our tools came from; it does not establish that they are the best available. + +## We adopted the format and core tools + +OKF comes from Google Cloud. Its current canonical home is [GoogleCloudPlatform/open-knowledge-format](https://github.com/GoogleCloudPlatform/open-knowledge-format). The [old knowledge-catalog README](https://github.com/GoogleCloudPlatform/knowledge-catalog/blob/main/okf/README.md) explicitly says its OKF directory is a frozen snapshot and directs users to the new repository. Our vendored specification still names the old location. + +The four installed skills come from [scaccogatto/okf-skills](https://github.com/scaccogatto/okf-skills): author/maintain/consume, validate/migrate, visualize, and backfill. The development log records their selection on September 20. All 13 files under `.agents/skills/` match upstream commit `d8393f329c97836980566c1cf4e4aa4fe47dc111` byte for byte. That was upstream's latest commit before September 21. This establishes that the installed files are upstream copies with no local edits. + +Upstream main was `8e3187875e66051bb52f91a5ed27342e2c3208da`, dated September 28, at review time. Nine installed files differ from that newer revision. Those differences reflect upstream updates, not a local fork. Keep future imports pinned and record their source revision. + +## What is specific to this repository + +| Component | Origin and coupling | +|---|---| +| `.agents/skills/` | Unmodified upstream generic OKF tooling. Works on other bundles. | +| `tools/check_bundle.py` | Local policy, adapted from ACR-RSNA-CDEs. Fixes the allowed document types, requires title/description/generated metadata, demands index coverage, checks links, and scans for email addresses and locally denylisted terms. Default paths are project-specific. | +| `tools/verify.py` | Local implementation of a reusable review action. Writes verification and stable status; defaults to `knowledge/` and the project lead's actor identity. | +| `site/okf-meta-plugin/` | Local Quartz integration for generic OKF fields. It has no imaging-domain model. | +| `tools/prepare_site_content.py` | Local adapter that normalizes Markdown links for our Quartz build. The transformation is reusable; its default paths are local. | +| `Taskfile.yml`, CI, site config, deployment | Project wiring around external tools. | +| `knowledge/` organization and content | Project-specific terminology, five pillars, references, authoring policies, and review decisions. | + +The strict house rules are stronger than OKF conformance. OKF deliberately accepts unknown concept types and missing optional metadata. Our repository chooses a controlled vocabulary and requires richer metadata. Replacing its checker with a generic OKF validator would remove those policies. + +## Existing tools worth using + +| Tool | Fit and recommendation | +|---|---| +| [okf-skills](https://github.com/scaccogatto/okf-skills/blob/main/README.md) | Best direct fit, already installed. Current upstream also offers a composite CI action and a read-only MCP server with search, read, and graph-neighbor tools. The MCP server existed by the installed revision but was not included in our skill-only installation. Review newer validator/spec/template updates and import a pinned revision. Use MCP when a client cannot access the files directly. | +| [Google's reference implementation](https://github.com/GoogleCloudPlatform/open-knowledge-format/blob/main/README.md) | Canonical spec, a reference producer using ADK/Gemini, BigQuery metadata ingestion plus web enrichment, and a graph viewer. The README calls the producer a proof of concept. Its data-catalog workflow does not directly replace our manuscript, diagram, and repository-source curation. | +| [Quartz](https://quartz.jzhao.xyz/) | Already provides the website, search, backlinks, and graph. Keep reusing it. Our OKF metadata component is a small integration rather than a home-grown site generator. | +| [QMD](https://github.com/tobi/qmd) | Strong adjacent candidate for agent retrieval. Indexes existing Markdown and offers local keyword/vector search, reranking, CLI output, and MCP. It can supplement OKF without changing the document format. It does not replace provenance validation or human review. Evaluate only if retrieval is a concrete problem. | +| [Basic Memory](https://github.com/basicmachines-co/basic-memory) | More extensive Markdown knowledge-management and MCP workflow, including graph traversal and semantic search. Its [knowledge format](https://docs.basicmemory.com/concepts/knowledge-format) adds permalinks, categorized observations, and typed wikilink relations. Those conventions require a compatibility trial against our ordinary Markdown links and OKF metadata. It is a larger workflow change than QMD; do not assume it is a drop-in replacement. | + +The direct OKF ecosystem is young. Google's reference producer is explicitly experimental, and okf-skills is pre-1.0. Broader Markdown tools provide more retrieval and publishing functionality, but their support for Markdown does not establish OKF trust or attestation semantics. Popularity alone does not establish suitability. + +## Recommended direction + +Keep OKF and the upstream skills. Update the vendored source references and skills through a reviewed, pinned import. Keep project policy distinct from the generic validator; reduce duplicated metadata checks where upstream already covers them. Continue using Quartz for presentation. Consider QMD for retrieval before building a custom search service. Basic Memory deserves a trial only if we want its broader shared-memory workflow. + +The following differences need attention during that follow-up: + +- Current upstream accepts ISO 8601 timestamps in `stale_after`, source `last_modified`, and usage windows, while our older skill/spec uses date-only guidance. The local house checker accepts only date strings for `stale_after`, so an upstream update needs coordinated policy and documentation review. +- `site/okf-meta-plugin/dist/components/index.js` only renders `verified` arrays. OKF also permits a single mapping. +- The same plugin treats a date as stale strictly after that day. Our vendored spec and house checker use on-or-after semantics. +- The house checker permits only `okf_version` in root-index metadata, while the upstream plugin uses an additional `upkeep` opt-in. That is a policy incompatibility if we adopt the plugin's enforced-upkeep mode. + +These are findings, not changes made by this review. No tool installation, bundle rewrite, commit, or publication occurred. No reader-facing changelog entry is needed. From 9725105cdadf5981fb6b860fd87b4288f564fd56 Mon Sep 17 00:00:00 2001 From: "Alkasab Agent (agent-dev)" Date: Thu, 1 Oct 2026 21:30:07 +0000 Subject: [PATCH 19/19] Add summaries of the fifteen project boards as the first references - One summary per Excalidraw board with its ideas, status, pillar connections, and local capture paths - Captures, checksums, and live links stay in the gitignored sources mirror; no live links or meeting names in the public summaries - Staged under docs/references until the layers plan moves references into the bundle Co-Authored-By: Claude Fable 5.1 --- DEV_LOG.md | 1 - README.md | 1 + docs/plans/2026-10-01-linked-diagrams.md | 22 +++++++++++++ docs/plans/restructure-dashboard.md | 4 +++ .../anatomy-and-exam-coverage.md | 26 ++++++++++++++++ .../definition-observation-example.md | 26 ++++++++++++++++ .../finding-model-authoring.md | 26 ++++++++++++++++ .../linked-diagrams/finding-model-rules.md | 26 ++++++++++++++++ .../imaging-context-object-model.md | 26 ++++++++++++++++ .../linked-diagrams/imaging-problem-list.md | 26 ++++++++++++++++ docs/references/linked-diagrams/index.md | 31 +++++++++++++++++++ .../longitudinal-integration-discussions.md | 26 ++++++++++++++++ .../linked-diagrams/oidm-big-picture.md | 26 ++++++++++++++++ .../outcome-and-follow-up-structures.md | 26 ++++++++++++++++ .../participation-and-demonstrations.md | 26 ++++++++++++++++ .../pulmonary-nodule-demo-workflow.md | 26 ++++++++++++++++ .../radiologist-outcome-feedback.md | 26 ++++++++++++++++ .../linked-diagrams/rsna-exhibit-examples.md | 26 ++++++++++++++++ .../structured-report-representation.md | 26 ++++++++++++++++ .../linked-diagrams/use-case-development.md | 26 ++++++++++++++++ 20 files changed, 448 insertions(+), 1 deletion(-) create mode 100644 docs/plans/2026-10-01-linked-diagrams.md create mode 100644 docs/references/linked-diagrams/anatomy-and-exam-coverage.md create mode 100644 docs/references/linked-diagrams/definition-observation-example.md create mode 100644 docs/references/linked-diagrams/finding-model-authoring.md create mode 100644 docs/references/linked-diagrams/finding-model-rules.md create mode 100644 docs/references/linked-diagrams/imaging-context-object-model.md create mode 100644 docs/references/linked-diagrams/imaging-problem-list.md create mode 100644 docs/references/linked-diagrams/index.md create mode 100644 docs/references/linked-diagrams/longitudinal-integration-discussions.md create mode 100644 docs/references/linked-diagrams/oidm-big-picture.md create mode 100644 docs/references/linked-diagrams/outcome-and-follow-up-structures.md create mode 100644 docs/references/linked-diagrams/participation-and-demonstrations.md create mode 100644 docs/references/linked-diagrams/pulmonary-nodule-demo-workflow.md create mode 100644 docs/references/linked-diagrams/radiologist-outcome-feedback.md create mode 100644 docs/references/linked-diagrams/rsna-exhibit-examples.md create mode 100644 docs/references/linked-diagrams/structured-report-representation.md create mode 100644 docs/references/linked-diagrams/use-case-development.md diff --git a/DEV_LOG.md b/DEV_LOG.md index ff84356..0d03b3d 100644 --- a/DEV_LOG.md +++ b/DEV_LOG.md @@ -58,4 +58,3 @@ Engineering narrative for the oidm-knowledge repository: decisions, blockers, an - Reviewed OKF tooling origins and current reuse options. All 13 installed skill files match upstream `scaccogatto/okf-skills` commit `d8393f3` byte for byte; custom code is the house checker, verification helper, and publishing integration. Recorded Google's canonical-repository move, available upstream MCP/CI support, QMD and Basic Memory tradeoffs, and metadata compatibility differences in `docs/references/okf-tooling-review.md`. Review plan complete. No tooling changes, commit, or publication. - Captured and visually reviewed all 15 unique Excalidraw boards in `links.txt` (17 URL occurrences). Native SVG/PNG exports, source contents, searchable text, and checksum metadata are in gitignored `sources/linked-diagrams/`; 15 source-grounded draft summaries and their index are staged in `docs/references/linked-diagrams/`. Three untouched SVG exports have normalized copies for XML compatibility. Verified coverage, image decoding, SVG parsing, 63 checksums, and local links; OKF conformance has zero errors, with 50 external-directory link warnings whose targets were checked separately. Plan `docs/plans/2026-10-01-linked-diagrams.md` is complete. The proposed layer migration, detailed reference conversion, and figure redraws await the owner's go; no bundle or presentation moves, upload, commit, or publication by this session. - diff --git a/README.md b/README.md index a220ccc..f3acc25 100644 --- a/README.md +++ b/README.md @@ -7,6 +7,7 @@ The content is an [Open Knowledge Format](https://okf.md) 0.2 bundle in [`knowle ## Reading it - Browse on GitHub from [`knowledge/index.md`](knowledge/index.md). +- Source notes: [15 linked diagram summaries](docs/references/linked-diagrams/index.md), with source locators and connections to the five pillars. - Rendered site: `task build` renders it with Quartz into `public/`; `task deploy` publishes it to Cloudflare (Workers static assets, `site/wrangler.jsonc`); pushes to `main` deploy through `.github/workflows/deploy.yml`. - Agents: read `knowledge/index.md` first, follow links only into what the task needs, and weigh `status`, `verified`, and `stale_after` in each document's frontmatter. diff --git a/docs/plans/2026-10-01-linked-diagrams.md b/docs/plans/2026-10-01-linked-diagrams.md new file mode 100644 index 0000000..4285ce3 --- /dev/null +++ b/docs/plans/2026-10-01-linked-diagrams.md @@ -0,0 +1,22 @@ +# Linked diagram references + +Status: complete, 2026-10-01. Capture and summary task only; layer migration awaits the project lead's approval. + +Capture every unique URL in `links.txt` as a visual source and a concise, reusable reference to the project's ideas. + +1. Identify unique links and retrieve each original diagram, preferably as SVG and PNG. Save captures and provenance under `sources/linked-diagrams/`. +2. Inspect each diagram, using readable detail views for large boards. Check earlier transcriptions against the retrieved source. +3. Write one source-grounded Markdown summary per diagram under `docs/references/linked-diagrams/`, with an index, source URL, local artifact paths, and connections to the agreed pillars. Preserve historical wording and proposal status. +4. Verify link coverage and artifacts, review summaries for unsupported interpretations, update this plan and the development log, and mark completion. + +Repeated URLs share one capture and summary. Source boards are historical evidence; they do not override the owner's current terminology or decisions. + +## Results + +- Captured all 15 unique boards from 17 URL occurrences as native SVG and PNG exports. Preserved source contents, searchable text, timestamps, and checksums under `sources/linked-diagrams/`. +- Visually reviewed every board and wrote 15 draft Reference summaries, with an [index](../references/linked-diagrams/index.md), source locators, pillar connections, and links to related working pages. +- Preserved three XML-invalid native SVGs unchanged and provided normalized `usable.svg` copies alongside them. +- Verified URL coverage, PNG decoding, selected SVG XML, 63 artifact checksums, and every local summary link. OKF conformance reports zero errors; its 50 warnings concern links outside the standalone reference directory, whose targets were separately verified on disk. +- Updated README, DEV_LOG, and CHANGELOG for discoverability and handoff. + +The [sources and layers plan](./2026-10-01-sources-and-layers.md) arrived during capture. These short summaries remain staged in `docs/references/linked-diagrams/` until that plan is approved; conversion into its detailed reference template and figure redraws belong to that work. No bundle or presentation files were moved, and no bucket upload or site publication was performed. diff --git a/docs/plans/restructure-dashboard.md b/docs/plans/restructure-dashboard.md index bf7a1dc..1b93e1b 100644 --- a/docs/plans/restructure-dashboard.md +++ b/docs/plans/restructure-dashboard.md @@ -75,6 +75,10 @@ Status words: **agreed** = text settled with the project lead and on disk; **in 5. Decided 2026-09-29: vendor generic; the two organizations generalized. Still open: commit of CDE decisions S53 to S67. 6. Decided 2026-09-29: deck and CDE-repository figures may be used. +## References layer, first content + +Astra's 15 board summaries in [docs/references/linked-diagrams/](/docs/references/linked-diagrams/) are the first references-layer content (staged there until the layers plan runs); live board links and meeting names are being removed per the project lead, 2026-10-01. + ## Handoff Everything an agent needs, including the working rules, is in [docs/HANDOFF.md](/docs/HANDOFF.md). diff --git a/docs/references/linked-diagrams/anatomy-and-exam-coverage.md b/docs/references/linked-diagrams/anatomy-and-exam-coverage.md new file mode 100644 index 0000000..aa087d0 --- /dev/null +++ b/docs/references/linked-diagrams/anatomy-and-exam-coverage.md @@ -0,0 +1,26 @@ +--- +type: Reference +title: "Anatomy and exam coverage" +description: "Actual exam coverage, anatomy connections, curated content" +tags: ["foundation-context", "use-cases"] +status: draft +generated: { by: codex/gpt-6/2026-10-01-linked-diagrams, at: 2026-10-01 } +sources: + - id: board + resource: sources/linked-diagrams/4jmRPObEdLq/ + title: "Common Anatomic Locations" +--- + +# Anatomy and exam coverage + +The board connects anatomy content to exam definitions, finding definitions, templates, and search. Its key exam example distinguishes a CT chest region from “chest” alone: an exam can include lower neck, upper abdomen, shoulders, and other anatomy beyond its focus. This makes actual coverage a definition concern.[^board] + +The board's checklist proposes hierarchy and code verification, synonyms, part-of relationships, body-system organization, added descriptive links, and full-text/semantic search. It also records then-proposed Common identifiers, MongoDB work, and governance discussions. Most items are unchecked.[^board] + +For our work, this anchors why Foundation Context needs both an anatomy system and exam-to-anatomy connections: consumers can reason about what a study includes and find relevant data. Read it with the current anatomy and exam-type pages. Its proposal to promote SNOMED or use ACR Common IDs as primary identifiers is historical and should not override later identifier decisions. + +Pillar connections: Foundation Context; Use Cases. Related working pages: [Anatomic locations](../../../knowledge/drafts/anatomic-locations.md), [Exam types](../../../knowledge/drafts/exam-types.md), [Foundation context](../../../knowledge/drafts/foundation-context.md). + +Source captured 2026-10-01: [PNG](../../../sources/linked-diagrams/4jmRPObEdLq/original.png) · [SVG](../../../sources/linked-diagrams/4jmRPObEdLq/original.svg) · [Source contents](../../../sources/linked-diagrams/4jmRPObEdLq/scene-contents.json) · [Text elements](../../../sources/linked-diagrams/4jmRPObEdLq/text-elements.json) · [Capture metadata](../../../sources/linked-diagrams/4jmRPObEdLq/metadata.json). + +[^board]: The captured board, especially Active Issues; Exam Types; Other big projects. Inspect the full-resolution PNG/SVG for layout and embedded material; text-elements.json records searchable text with element IDs and coordinates. Capture date does not establish when an undated proposal was written. diff --git a/docs/references/linked-diagrams/definition-observation-example.md b/docs/references/linked-diagrams/definition-observation-example.md new file mode 100644 index 0000000..55e8d61 --- /dev/null +++ b/docs/references/linked-diagrams/definition-observation-example.md @@ -0,0 +1,26 @@ +--- +type: Reference +title: "CDE and Observation worked example" +description: "Definitions connected to instance values and clinical text" +tags: ["foundation-context", "data-structures", "sdks"] +status: draft +generated: { by: codex/gpt-6/2026-10-01-linked-diagrams, at: 2026-10-01 } +sources: + - id: board + resource: sources/linked-diagrams/ArAkPl5S3kD/ + title: "CDE\u2194\ufe0eObservation" +--- + +# CDE and Observation worked example + +The pulmonary-nodule example connects a CDE definition, its elements and permissible values, a particular Observation, and FHIR JSON. The Observation selects values for presence, composition, size, and location, carries identifiers and anatomy, and supplies a sentence template that renders a clinical description. The arrows make the definition-to-instance interconnection concrete.[^board] + +“Where Observation objects can come from” lists current dictation, PACS annotation, prior-report extraction, structured reporting, AI, DICOM SR, and EHR data. The code-system meeting note proposes wrapper implementations and import/export work involving FHIR, DICOM SR, and OMOP, together with vendor demonstrations.[^board] + +For our work, this is a compact historical example of Foundation Context informing a patient Observation and developer tools translating representations. It predates the shared graph schema and uses CDE Set/Element structures and fixed example codes. Reuse the conceptual interconnection and multiple-source idea; consult current schema and SDK documents for today's classes and interfaces. The board does not demonstrate an implemented two-graph system or certify the example as conformant with a current FHIR profile. + +Pillar connections: Foundation Context; Data Structures; SDKs. Related working pages: [Next generation schema](../../../knowledge/drafts/next-generation-schema.md), [Data structures](../../../knowledge/drafts/data-structures.md), [Sdks](../../../knowledge/drafts/sdks.md). + +Source captured 2026-10-01: [PNG](../../../sources/linked-diagrams/ArAkPl5S3kD/original.png) · [SVG](../../../sources/linked-diagrams/ArAkPl5S3kD/original.svg) · [Source contents](../../../sources/linked-diagrams/ArAkPl5S3kD/scene-contents.json) · [Text elements](../../../sources/linked-diagrams/ArAkPl5S3kD/text-elements.json) · [Capture metadata](../../../sources/linked-diagrams/ArAkPl5S3kD/metadata.json). + +[^board]: The captured board, especially CDE Set: RDES195; Observation; Template; Where Observation objects can come from; Code System Team. Inspect the full-resolution PNG/SVG for layout and embedded material; text-elements.json records searchable text with element IDs and coordinates. Capture date does not establish when an undated proposal was written. diff --git a/docs/references/linked-diagrams/finding-model-authoring.md b/docs/references/linked-diagrams/finding-model-authoring.md new file mode 100644 index 0000000..e2280e6 --- /dev/null +++ b/docs/references/linked-diagrams/finding-model-authoring.md @@ -0,0 +1,26 @@ +--- +type: Reference +title: "OIFM authoring and content development" +description: "Inclusive definitions, iterative enrichment, authoring tools" +tags: ["foundation-context", "sdks", "sample-applications"] +status: draft +generated: { by: codex/gpt-6/2026-10-01-linked-diagrams, at: 2026-10-01 } +sources: + - id: board + resource: sources/linked-diagrams/A55Dpt6hley/ + title: "OIFM Repo" +--- + +# OIFM authoring and content development + +This board gathers the work of creating, enriching, reviewing, and distributing finding definitions. Its pipeline starts with findings proposed by experts, terminology sources, AI, or report text. Minimal definitions can carry presence and change attributes, then gain anatomy, additional descriptors, references, contributor information, and expert review through iteration.[^board] + +The Forge material describes importing existing definitions, editing with expert input, and using references or report examples to propose improvements. Other notes propose shared library, CLI, and front-end workflows; schema and identifier checks; contributor records; and submissions through pull requests. Measurements with shared element identifiers, locations, and relationships appear as authoring questions.[^board] + +For our work, use this as a source for inclusive content development and the tools that support it. The current finding-model/CDE hub and shared next-generation schema should frame that material. Proposed names, schema forks, document-shaped JSON/Markdown workflows, package choices, and unchecked tasks describe stages of development. They should not become current requirements merely because they appear here. Forge screenshots document a represented interface, while surrounding plans require separate evidence of completion. + +Pillar connections: Foundation Context; SDKs; Sample Applications. Related working pages: [Finding models and cdes hub](../../../knowledge/drafts/finding-models-and-cdes-hub.md), [Next generation schema](../../../knowledge/drafts/next-generation-schema.md), [Sdks](../../../knowledge/drafts/sdks.md), [Sample applications](../../../knowledge/drafts/sample-applications.md). + +Source captured 2026-10-01: [PNG](../../../sources/linked-diagrams/A55Dpt6hley/original.png) · [SVG](../../../sources/linked-diagrams/A55Dpt6hley/usable.svg) · [Source contents](../../../sources/linked-diagrams/A55Dpt6hley/scene-contents.json) · [Text elements](../../../sources/linked-diagrams/A55Dpt6hley/text-elements.json) · [Capture metadata](../../../sources/linked-diagrams/A55Dpt6hley/metadata.json). + +[^board]: The captured board, especially Open Imaging Finding Models: Pipeline and Repo; Approach for Creation of Data Models at Scale; FindingModelForge; Schema Issues; FMF Authoring Issues. Inspect the full-resolution PNG/SVG for layout and embedded material; text-elements.json records searchable text with element IDs and coordinates. Capture date does not establish when an undated proposal was written. diff --git a/docs/references/linked-diagrams/finding-model-rules.md b/docs/references/linked-diagrams/finding-model-rules.md new file mode 100644 index 0000000..cc4f756 --- /dev/null +++ b/docs/references/linked-diagrams/finding-model-rules.md @@ -0,0 +1,26 @@ +--- +type: Reference +title: "Finding model rules and scope" +description: "Naming, anatomic scope, separate associated entities and components" +tags: ["foundation-context"] +status: draft +generated: { by: codex/gpt-6/2026-10-01-linked-diagrams, at: 2026-10-01 } +sources: + - id: board + resource: sources/linked-diagrams/2a3Jq3oVVty/ + title: "Open Imaging Finding Models" +--- + +# Finding model rules and scope + +This compact board records naming and modeling rules. Names expand acronyms, with compact forms retained as synonyms. Models, attributes, and values default to lower case; eponyms should be minimized and should not be preferred terms when avoidable. Attribute and value synonyms are explicit schema concerns.[^board] + +Its location rule defines where a finding could occur as a subset of anatomic-location nodes and says separate location attributes are not needed for that purpose. It asks for separate definitions for associated entities and for a component with its own detailed properties to be extracted as a separate finding, using the solid component of a mixed pulmonary nodule as the example. Modalities, life stages, sex phenotypes, and possible example repositories also appear.[^board] + +For our work, this supports reusable definition content, anatomic scope, and decomposition of complex findings. Read it with the current schema and relationships pages. The board's location statement concerns feasible scope; it should not be summarized as an instruction to encode patient location as an attribute. Its older “avoid associated findings” wording also needs to be read alongside the later relationship work. + +Pillar connections: Foundation Context. Related working pages: [Next generation schema](../../../knowledge/drafts/next-generation-schema.md), [Relationships](../../../knowledge/drafts/relationships.md), [Anatomic locations](../../../knowledge/drafts/anatomic-locations.md). + +Source captured 2026-10-01: [PNG](../../../sources/linked-diagrams/2a3Jq3oVVty/original.png) · [SVG](../../../sources/linked-diagrams/2a3Jq3oVVty/original.svg) · [Source contents](../../../sources/linked-diagrams/2a3Jq3oVVty/scene-contents.json) · [Text elements](../../../sources/linked-diagrams/2a3Jq3oVVty/text-elements.json) · [Capture metadata](../../../sources/linked-diagrams/2a3Jq3oVVty/metadata.json). + +[^board]: The captured board, especially Finding Model Rules; Finding Model Schema; lower-case note. Inspect the full-resolution PNG/SVG for layout and embedded material; text-elements.json records searchable text with element IDs and coordinates. Capture date does not establish when an undated proposal was written. diff --git a/docs/references/linked-diagrams/imaging-context-object-model.md b/docs/references/linked-diagrams/imaging-context-object-model.md new file mode 100644 index 0000000..039b486 --- /dev/null +++ b/docs/references/linked-diagrams/imaging-context-object-model.md @@ -0,0 +1,26 @@ +--- +type: Reference +title: "Imaging context object model" +description: "Patient/exam/report context, provenance, platform operations" +tags: ["data-structures", "foundation-context", "sdks"] +status: draft +generated: { by: codex/gpt-6/2026-10-01-linked-diagrams, at: 2026-10-01 } +sources: + - id: board + resource: sources/linked-diagrams/1sEx11UZ3gq/ + title: "OIDM Object Model" +--- + +# Imaging context object model + +The central map brings patient identity, orders, studies, current and prior reports, tracked observations, and other EHR information into one imaging context. Observations include identification, classification, tracking, anatomy, and coded values. Study-type branches distinguish modality, focused anatomy, included anatomy, laterality, and contrast information.[^board] + +The board's discussion proposes standard content with wrapper libraries and asks about an integrated runtime or microservices, event hooks, platform commands, report text during authoring, image connections, and provenance. It explicitly asks how to record who has seen, approved, changed, or rejected an Observation. A class sketch separately shows the then-proposed CDE and Observation structures.[^board] + +For our work, this anchors the breadth of patient and application context and the need for developer operations around it. The current Data Structures and SDK pillars can draw on those questions. “ObservationType,” nested CDE classes, and the historic standards notes retain their original context; they do not supersede the owner's current finding/diagnosis definitions or the shared graph schema. + +Pillar connections: Data Structures; Foundation Context; SDKs. Related working pages: [Data structures](../../../knowledge/drafts/data-structures.md), [Sdks](../../../knowledge/drafts/sdks.md), [Overview](../../../knowledge/drafts/overview.md). + +Source captured 2026-10-01: [PNG](../../../sources/linked-diagrams/1sEx11UZ3gq/original.png) · [SVG](../../../sources/linked-diagrams/1sEx11UZ3gq/original.svg) · [Source contents](../../../sources/linked-diagrams/1sEx11UZ3gq/scene-contents.json) · [Text elements](../../../sources/linked-diagrams/1sEx11UZ3gq/text-elements.json) · [Capture metadata](../../../sources/linked-diagrams/1sEx11UZ3gq/metadata.json). + +[^board]: The captured board, especially OIDM Data Context mind map; Stuff in CDE Set to get to later; For Next Time. Inspect the full-resolution PNG/SVG for layout and embedded material; text-elements.json records searchable text with element IDs and coordinates. Capture date does not establish when an undated proposal was written. diff --git a/docs/references/linked-diagrams/imaging-problem-list.md b/docs/references/linked-diagrams/imaging-problem-list.md new file mode 100644 index 0000000..f74e05d --- /dev/null +++ b/docs/references/linked-diagrams/imaging-problem-list.md @@ -0,0 +1,26 @@ +--- +type: Reference +title: "Imaging Problem List" +description: "Per-exam findings, longitudinal association, integrated clinical context" +tags: ["data-structures", "use-cases"] +status: draft +generated: { by: codex/gpt-6/2026-10-01-linked-diagrams, at: 2026-10-01 } +sources: + - id: board + resource: sources/linked-diagrams/2jUZLu229km/ + title: "Imaging Problem List" +--- + +# Imaging Problem List + +The board develops a patient-level history of imaging findings from report-level finding lists. Its central flow is reports → Extractor → finding lists → Assembler → Imaging Problem List. The chest CT example retains explicitly absent findings as well as positive ones. The Assembler reorganizes observations by finding across exams.[^board] + +The “Maintaining the IPL” note asks whether this should be an EHR-maintained view, a dynamically regenerated and cached representation, or a service available to reporting systems and viewers. Its v2 note adds an important distinction: explicit longitudinal associations may add information beyond merely collecting reports. The appendectomy scenario and “master, integrated knowledge base” note extend the idea to operative, pathology, and other clinical information.[^board] + +For our work, this is an anchor for longitudinal patient data and context-sensitive applications: prior-finding displays, draft reporting, MRI safety, quality checks, and downstream care workflows. Read it beside the current Data Structures page and the owner's integrated Persona framing. The board's storage, FHIR representation, and vendor responsibilities are questions and proposals, not evidence of completed integration. + +Pillar connections: Data Structures; Use Cases. Related working pages: [Data structures](../../../knowledge/drafts/data-structures.md), [Use cases](../../../knowledge/drafts/use-cases.md), [Overview](../../../knowledge/drafts/overview.md). + +Source captured 2026-10-01: [PNG](../../../sources/linked-diagrams/2jUZLu229km/original.png) · [SVG](../../../sources/linked-diagrams/2jUZLu229km/original.svg) · [Source contents](../../../sources/linked-diagrams/2jUZLu229km/scene-contents.json) · [Text elements](../../../sources/linked-diagrams/2jUZLu229km/text-elements.json) · [Capture metadata](../../../sources/linked-diagrams/2jUZLu229km/metadata.json). + +[^board]: The captured board, especially Imaging Problem List; Maintaining the IPL; Ingredients; Clinical Scenario. Inspect the full-resolution PNG/SVG for layout and embedded material; text-elements.json records searchable text with element IDs and coordinates. Capture date does not establish when an undated proposal was written. diff --git a/docs/references/linked-diagrams/index.md b/docs/references/linked-diagrams/index.md new file mode 100644 index 0000000..7ab9c0b --- /dev/null +++ b/docs/references/linked-diagrams/index.md @@ -0,0 +1,31 @@ +# Linked diagram references + +These 15 short summaries capture the ideas in every unique URL in [links.txt](../../../links.txt). Native SVG and PNG exports, original scene contents, searchable text, and capture metadata are stored under `sources/linked-diagrams//`. Sources remain outside Git under this repository's existing rules; the summaries are tracked here, and the live source URLs are kept only in the gitignored capture manifest. + +These captures are staged here pending approval of the [sources and layers plan](../../plans/2026-10-01-sources-and-layers.md). That plan places distilled references in `knowledge/references/`, keeps raw sources in a private bucket with a gitignored mirror, and separates the team knowledge bundle from presentation pages. This capture task does not move existing content or change the site's build input. + +Read these as source references alongside the [current owner guidance](../../plans/2026-09-22-layout-plan.md). Historical class names, checklists, possible architectures, and demo designs retain their original status. A board is evidence of an idea or discussion; completion requires implementation evidence. The pillar connections below are navigation aids for the agreed structure. + +| Reference | Ideas to return to | Pillars | +|---|---|---| +| [Imaging Problem List](./imaging-problem-list.md) | Per-exam findings, longitudinal association, integrated clinical context | Data Structures; Use Cases | +| [OIFM authoring and content development](./finding-model-authoring.md) | Inclusive definitions, iterative enrichment, authoring tools | Foundation Context; SDKs; Sample Applications | +| [CDE and Observation worked example](./definition-observation-example.md) | Definitions connected to instance values and clinical text | Foundation Context; Data Structures; SDKs | +| [Imaging context object model](./imaging-context-object-model.md) | Patient/exam/report context, provenance, platform operations | Data Structures; Foundation Context; SDKs | +| [Finding model rules and scope](./finding-model-rules.md) | Naming, anatomic scope, separate associated entities and components | Foundation Context | +| [Structured report representation](./structured-report-representation.md) | Complex findings, report sections, source-independent representations | Data Structures; Foundation Context; SDKs | +| [Radiologist outcome feedback](./radiologist-outcome-feedback.md) | Patient/anatomy/time-based outcome feedback | Use Cases; Foundation Context; Data Structures | +| [RSNA exhibit examples](./rsna-exhibit-examples.md) | Comparable observations, multiple producers, AI discrepancies | Foundation Context; Data Structures; Use Cases | +| [OIDM big picture and application framework](./oidm-big-picture.md) | Shared context, commands, tools, content, application ecosystem | All five pillars | +| [Anatomy and exam coverage](./anatomy-and-exam-coverage.md) | Actual exam coverage, anatomy connections, curated content | Foundation Context; Use Cases | +| [Longitudinal integration discussions](./longitudinal-integration-discussions.md) | Tracked identity, per-exam findings, relevance filtering | Data Structures; Foundation Context; Use Cases | +| [Outcome and follow-up structures](./outcome-and-follow-up-structures.md) | Recommendations, later events, completion and pathways | Use Cases; Data Structures | +| [Use-case development and interaction ideas](./use-case-development.md) | User interactions, report views, spine numbering | Use Cases | +| [Participation, reference work, and demonstrations](./participation-and-demonstrations.md) | Contributing content, tools, reference work, demos | Foundation Context; SDKs; Sample Applications | +| [Pulmonary-nodule demo workflow and role tagging](./pulmonary-nodule-demo-workflow.md) | Multi-system nodule workflow, semantic annotations, element roles | Use Cases; Data Structures; SDKs; Sample Applications | + +There are 17 URL occurrences and 15 unique boards. Imaging Problem List and OIFM Repo each occur twice and share one capture and summary. The capture manifest is in `sources/linked-diagrams/manifest.json`. + +All boards were retrieved and visually reviewed on 2026-10-01. Each original PNG is a native full-board export at 1×. Three native SVG exports contain XML-invalid entities or control characters. Their untouched `original.svg` files are retained; linked `usable.svg` copies only normalize those characters. Each capture's metadata records that distinction and file checksums. The source-contents response alone lacks separately stored image binaries; the visual exports embed them. + +The earlier combined transcription in `sources/excalidraw-diagrams.md` remains available as historical research. These individual summaries were checked against the live exports and text, including corrections to the compact finding-model rules about anatomic scope and component extraction. diff --git a/docs/references/linked-diagrams/longitudinal-integration-discussions.md b/docs/references/linked-diagrams/longitudinal-integration-discussions.md new file mode 100644 index 0000000..9245388 --- /dev/null +++ b/docs/references/linked-diagrams/longitudinal-integration-discussions.md @@ -0,0 +1,26 @@ +--- +type: Reference +title: "Longitudinal integration discussions" +description: "Tracked identity, per-exam findings, relevance filtering" +tags: ["data-structures", "foundation-context", "use-cases"] +status: draft +generated: { by: codex/gpt-6/2026-10-01-linked-diagrams, at: 2026-10-01 } +sources: + - id: board + resource: sources/linked-diagrams/1PrQV4pohsD/ + title: "ACR OIDM\u2194\ufe0eEpic Connections" +--- + +# Longitudinal integration discussions + +The board's discussions connect coded findings, longitudinal lesion tracking, anatomy-based relevance, and EHR/reporting/viewer access. The breast-imaging sketch gives multiple study-specific findings one shared lesion identity and raises questions about current status, disappearance, and changes over time.[^board] + +The board asks who assigns tracking identifiers, whether FHIR Condition could represent a longitudinal finding, how a tracked lesion might have several classifications, and how unverified results might be managed. It proposes using exam/anatomy coverage to decide which prior lesions should be considered during a current study. The reporting-assistant example reminds the radiologist to update relevant prior findings.[^board] + +For our work, this is a source for persistent patient entities, per-exam observations, and context-based retrieval. The current Data Structures page should lead the explanation. A question about Condition, or an individual's “yes” in the notes, does not establish an adopted FHIR mapping. The named organizations and vendor roles document the discussion's context, not completed cross-system deployment. + +Pillar connections: Data Structures; Foundation Context; Use Cases. Related working pages: [Data structures](../../../knowledge/drafts/data-structures.md), [Exam types](../../../knowledge/drafts/exam-types.md), [Use cases](../../../knowledge/drafts/use-cases.md). + +Source captured 2026-10-01: [PNG](../../../sources/linked-diagrams/1PrQV4pohsD/original.png) · [SVG](../../../sources/linked-diagrams/1PrQV4pohsD/usable.svg) · [Source contents](../../../sources/linked-diagrams/1PrQV4pohsD/scene-contents.json) · [Text elements](../../../sources/linked-diagrams/1PrQV4pohsD/text-elements.json) · [Capture metadata](../../../sources/linked-diagrams/1PrQV4pohsD/metadata.json). + +[^board]: The captured board, especially Longitudinal Tracking; Breast Imaging Lesions Data Model. Inspect the full-resolution PNG/SVG for layout and embedded material; text-elements.json records searchable text with element IDs and coordinates. Capture date does not establish when an undated proposal was written. diff --git a/docs/references/linked-diagrams/oidm-big-picture.md b/docs/references/linked-diagrams/oidm-big-picture.md new file mode 100644 index 0000000..a2306f6 --- /dev/null +++ b/docs/references/linked-diagrams/oidm-big-picture.md @@ -0,0 +1,26 @@ +--- +type: Reference +title: "OIDM big picture and application framework" +description: "Shared context, commands, tools, content, application ecosystem" +tags: ["all-five-pillars"] +status: draft +generated: { by: codex/gpt-6/2026-10-01-linked-diagrams, at: 2026-10-01 } +sources: + - id: board + resource: sources/linked-diagrams/8v07Nni5p8F/ + title: "OIDM Big Picture" +--- + +# OIDM big picture and application framework + +The board states an integrated, open platform vision for imaging tools and connects clinical content, authoring tools, standard data structures, reference software, an SDK family, and demonstrations. Its work-thread notes place iterative finding definitions, anatomy and exam coverage, report structures, program interfaces, and Python/TypeScript utilities alongside one another.[^board] + +The Reporting Assistance Framework places shared data context and reporting commands around an assisted reporting container. Inputs include patient/EHR information, reports, longitudinal findings, AI, DICOM SR, and extracted data. Proposed commands insert report text, manipulate context, request information, show images, communicate, send data downstream, or request image inference. A use-case map includes quality checks, AI integration, longitudinal reporting, references, and workflow assistance.[^board] + +For our work, this is an early anchor for how the owner's five pillars support an ecosystem of applications. Its content-development notes also connect minimal definitions, open iteration, and ACR/RSNA review. Use the current Overview to organize these ideas. Vendor lists, estimated anatomy counts, older class names, and demo names are historical board content rather than current inventories or completion evidence. + +Pillar connections: All five pillars. Related working pages: [Overview](../../../knowledge/drafts/overview.md), [Sdks](../../../knowledge/drafts/sdks.md), [Use cases](../../../knowledge/drafts/use-cases.md), [Sample applications](../../../knowledge/drafts/sample-applications.md). + +Source captured 2026-10-01: [PNG](../../../sources/linked-diagrams/8v07Nni5p8F/original.png) · [SVG](../../../sources/linked-diagrams/8v07Nni5p8F/original.svg) · [Source contents](../../../sources/linked-diagrams/8v07Nni5p8F/scene-contents.json) · [Text elements](../../../sources/linked-diagrams/8v07Nni5p8F/text-elements.json) · [Capture metadata](../../../sources/linked-diagrams/8v07Nni5p8F/metadata.json). + +[^board]: The captured board, especially Reporting Assistance Framework; OIDM Reporting-based Use Cases; Where / Who / What; OIDM Work Threads; OIDM Data Context Model. Inspect the full-resolution PNG/SVG for layout and embedded material; text-elements.json records searchable text with element IDs and coordinates. Capture date does not establish when an undated proposal was written. diff --git a/docs/references/linked-diagrams/outcome-and-follow-up-structures.md b/docs/references/linked-diagrams/outcome-and-follow-up-structures.md new file mode 100644 index 0000000..98068c1 --- /dev/null +++ b/docs/references/linked-diagrams/outcome-and-follow-up-structures.md @@ -0,0 +1,26 @@ +--- +type: Reference +title: "Outcome and follow-up structures" +description: "Recommendations, later events, completion and pathways" +tags: ["use-cases", "data-structures"] +status: draft +generated: { by: codex/gpt-6/2026-10-01-linked-diagrams, at: 2026-10-01 } +sources: + - id: board + resource: sources/linked-diagrams/68X9qfSP5qA/ + title: "Outcome Tracking Schema" +--- + +# Outcome and follow-up structures + +The board brings a radiology report together with future clinical events and potential actions. Events include later imaging, pathology, procedures, diagnoses, laboratory information, and disposition. Actions include notifying radiologists or others, creating registries, and work queues or dashboards. An annotation says patient factors should come from EHR and other sources separately from report information.[^board] + +The follow-up proposal describes a recommendation with an exam or protocol, timeframe, finding/target, possible conditions or options, and a citation. Completion could be recognized through linked orders, suitable exam types, and timing; an outcome exam need not be exactly the exam named in the recommendation. It connects this work to an IPL whose findings may be live or inactive.[^board] + +For our work, this supplies concrete Use Cases and data requirements for linking recommendations to later events. The cascading-use-cases note moves from individual feedback to practice/population statistics and clinical pathways. These are proposed extensions around shared patient data, not completed capabilities or a settled recommendation schema. The historical patient-factor annotation does not imply separate disconnected graphs in the current Persona. + +Pillar connections: Use Cases; Data Structures. Related working pages: [Use cases](../../../knowledge/drafts/use-cases.md), [Data structures](../../../knowledge/drafts/data-structures.md), [Overview](../../../knowledge/drafts/overview.md). + +Source captured 2026-10-01: [PNG](../../../sources/linked-diagrams/68X9qfSP5qA/original.png) · [SVG](../../../sources/linked-diagrams/68X9qfSP5qA/original.svg) · [Source contents](../../../sources/linked-diagrams/68X9qfSP5qA/scene-contents.json) · [Text elements](../../../sources/linked-diagrams/68X9qfSP5qA/text-elements.json) · [Capture metadata](../../../sources/linked-diagrams/68X9qfSP5qA/metadata.json). + +[^board]: The captured board, especially Future Clinical Event; Actions; Recommendation Structure; Recognizing Follow-up Exams; Issue of use cases cascading; Imaging Problem List. Inspect the full-resolution PNG/SVG for layout and embedded material; text-elements.json records searchable text with element IDs and coordinates. Capture date does not establish when an undated proposal was written. diff --git a/docs/references/linked-diagrams/participation-and-demonstrations.md b/docs/references/linked-diagrams/participation-and-demonstrations.md new file mode 100644 index 0000000..da90581 --- /dev/null +++ b/docs/references/linked-diagrams/participation-and-demonstrations.md @@ -0,0 +1,26 @@ +--- +type: Reference +title: "Participation, reference work, and demonstrations" +description: "Contributing content, tools, reference work, demos" +tags: ["foundation-context", "sdks", "sample-applications"] +status: draft +generated: { by: codex/gpt-6/2026-10-01-linked-diagrams, at: 2026-10-01 } +sources: + - id: board + resource: sources/linked-diagrams/6dKAnPexyN8/ + title: "ACR OIDM" +--- + +# Participation, reference work, and demonstrations + +The board describes a project defining methods and tools for platforms within the imaging ecosystem. Around ACR Data Science Institute and OIDM branding, it groups sponsoring/identity, logistics, volunteer contributions, reference implementations, and demo projects.[^board] + +Volunteer topics include definition/review, indexing, anatomy, exam-to-anatomy connections, use cases, software, documentation, manuscripts, and standards work. Reference components range from anatomy and exam types to definitions, Observations, tracked Observations, studies/reports, and EHR items. Named demo ideas are templating for the SIIM Hackathon, pulmonary nodules for RSNA IAIP, and outcome tracking.[^board] + +For our work, this is an anchor for how people can build content, tools, and demonstrations around the foundation. It complements the SDK and Sample Applications pillars. The board names work areas and demo projects but does not establish completion, formal sponsorship arrangements, available funding, or current institutional commitments. Those claims need their own sources. + +Pillar connections: Foundation Context; SDKs; Sample Applications. Related working pages: [Sdks](../../../knowledge/drafts/sdks.md), [Sample applications](../../../knowledge/drafts/sample-applications.md), [Foundation context](../../../knowledge/drafts/foundation-context.md). + +Source captured 2026-10-01: [PNG](../../../sources/linked-diagrams/6dKAnPexyN8/original.png) · [SVG](../../../sources/linked-diagrams/6dKAnPexyN8/original.svg) · [Source contents](../../../sources/linked-diagrams/6dKAnPexyN8/scene-contents.json) · [Text elements](../../../sources/linked-diagrams/6dKAnPexyN8/text-elements.json) · [Capture metadata](../../../sources/linked-diagrams/6dKAnPexyN8/metadata.json). + +[^board]: The captured board, especially Sponsoring; Logistics; Volunteer Opportunities; Reference Implementations; Demo Projects. Inspect the full-resolution PNG/SVG for layout and embedded material; text-elements.json records searchable text with element IDs and coordinates. Capture date does not establish when an undated proposal was written. diff --git a/docs/references/linked-diagrams/pulmonary-nodule-demo-workflow.md b/docs/references/linked-diagrams/pulmonary-nodule-demo-workflow.md new file mode 100644 index 0000000..5fb8d04 --- /dev/null +++ b/docs/references/linked-diagrams/pulmonary-nodule-demo-workflow.md @@ -0,0 +1,26 @@ +--- +type: Reference +title: "Pulmonary-nodule demo workflow and role tagging" +description: "Multi-system nodule workflow, semantic annotations, element roles" +tags: ["use-cases", "data-structures", "sdks", "sample-applications"] +status: draft +generated: { by: codex/gpt-6/2026-10-01-linked-diagrams, at: 2026-10-01 } +sources: + - id: board + resource: sources/linked-diagrams/2ZpQ4nXotjV/ + title: "Pulm Nodule Demo Project" +--- + +# Pulmonary-nodule demo workflow and role tagging + +The RSNA/ACR AI in Practice demo board proposes exchanging pulmonary-nodule descriptions among AI, PACS, reporting, and EHR tools using CDE-labeled FHIR Observations and FHIRcast. Its seven-step workflow carries AI output through review and reporting, brings prior nodules into the current context, associates observations over time, and returns structured results and text to the EHR.[^board] + +“Smart Annotations” asks a viewer to infer the relevant definition from its tool, anatomy, and permissible measurements, then collect additional descriptors. “CDE 'Role' Standard Tagging” proposes standard codes for element roles such as presence, location, and types of size, so a consumer can find the relevant descriptor without hard-coding a different identifier for each set.[^board] + +For our work, this anchors a concrete interoperation use case and the role-tagging proposal already cited in Relationships. Who accepts edits, assigns tracking identity, and communicates those changes remains open on the board. Treat this as a demo design; the Sample Applications pillar needs separate implementation evidence before describing any named vendor workflow as built. + +Pillar connections: Use Cases; Data Structures; SDKs; Sample Applications. Related working pages: [Relationships](../../../knowledge/drafts/relationships.md), [Data structures](../../../knowledge/drafts/data-structures.md), [Sdks](../../../knowledge/drafts/sdks.md), [Sample applications](../../../knowledge/drafts/sample-applications.md). + +Source captured 2026-10-01: [PNG](../../../sources/linked-diagrams/2ZpQ4nXotjV/original.png) · [SVG](../../../sources/linked-diagrams/2ZpQ4nXotjV/original.svg) · [Source contents](../../../sources/linked-diagrams/2ZpQ4nXotjV/scene-contents.json) · [Text elements](../../../sources/linked-diagrams/2ZpQ4nXotjV/text-elements.json) · [Capture metadata](../../../sources/linked-diagrams/2ZpQ4nXotjV/metadata.json). + +[^board]: The captured board, especially Complete Workflow; Questions; Basic Principles; Smart Annotations; CDE 'Role' Standard Tagging. Inspect the full-resolution PNG/SVG for layout and embedded material; text-elements.json records searchable text with element IDs and coordinates. Capture date does not establish when an undated proposal was written. diff --git a/docs/references/linked-diagrams/radiologist-outcome-feedback.md b/docs/references/linked-diagrams/radiologist-outcome-feedback.md new file mode 100644 index 0000000..d6dd60a --- /dev/null +++ b/docs/references/linked-diagrams/radiologist-outcome-feedback.md @@ -0,0 +1,26 @@ +--- +type: Reference +title: "Radiologist outcome feedback" +description: "Patient/anatomy/time-based outcome feedback" +tags: ["use-cases", "foundation-context", "data-structures"] +status: draft +generated: { by: codex/gpt-6/2026-10-01-linked-diagrams, at: 2026-10-01 } +sources: + - id: board + resource: sources/linked-diagrams/5QMQ1J2FYT3/ + title: "Radiologist Outcome Feedback" +--- + +# Radiologist outcome feedback + +The outcome-feedback proposals ask for later pathology, imaging, or procedures relevant to a patient and body part, either as a notification or a digest of cases a radiologist read within a chosen timeframe. A proposed interface captures requests from the current study, shows new results and cases being awaited, and lets the user choose alert preferences.[^board] + +The earlier material uses anatomy tags on pathology specimens and exam-type coverage to find relevant imaging. Later prostate and MSK examples connect pathology extraction, patient identity, anatomy, exam metadata, and time intervals. The biopsy/result sketch keeps cases in a waiting state until an appropriate pathology result arrives, then extracts data and notifies the relevant radiologists.[^board] + +For our work, this is a concrete application idea built from shared anatomy, exam definitions, patient events, and longitudinal association. It supplies a stronger anchor than a generic claim about outcome dashboards. The proposed notification tools, matching rules, and architecture diagrams do not by themselves establish that a sample application was built. + +Pillar connections: Use Cases; Foundation Context; Data Structures. Related working pages: [Use cases](../../../knowledge/drafts/use-cases.md), [Anatomic locations](../../../knowledge/drafts/anatomic-locations.md), [Exam types](../../../knowledge/drafts/exam-types.md), [Data structures](../../../knowledge/drafts/data-structures.md). + +Source captured 2026-10-01: [PNG](../../../sources/linked-diagrams/5QMQ1J2FYT3/original.png) · [SVG](../../../sources/linked-diagrams/5QMQ1J2FYT3/original.svg) · [Source contents](../../../sources/linked-diagrams/5QMQ1J2FYT3/scene-contents.json) · [Text elements](../../../sources/linked-diagrams/5QMQ1J2FYT3/text-elements.json) · [Capture metadata](../../../sources/linked-diagrams/5QMQ1J2FYT3/metadata.json). + +[^board]: The captured board, especially Proposal for Outcome Tracking; Prostate RadPath; MSK RadPath; Path Result ↔ Biopsy Procedure. Inspect the full-resolution PNG/SVG for layout and embedded material; text-elements.json records searchable text with element IDs and coordinates. Capture date does not establish when an undated proposal was written. diff --git a/docs/references/linked-diagrams/rsna-exhibit-examples.md b/docs/references/linked-diagrams/rsna-exhibit-examples.md new file mode 100644 index 0000000..145c922 --- /dev/null +++ b/docs/references/linked-diagrams/rsna-exhibit-examples.md @@ -0,0 +1,26 @@ +--- +type: Reference +title: "RSNA exhibit examples" +description: "Comparable observations, multiple producers, AI discrepancies" +tags: ["foundation-context", "data-structures", "use-cases"] +status: draft +generated: { by: codex/gpt-6/2026-10-01-linked-diagrams, at: 2026-10-01 } +sources: + - id: board + resource: sources/linked-diagrams/19Qjzb9AmAT/ + title: "Figures for RSNA Edu Exhibit" +--- + +# RSNA exhibit examples + +The exhibit panels illustrate how definitions, Observation values, FHIR representations, and generated clinical sentences fit together. Pulmonary nodule is the expanded example, with presence, composition, size, and location connected to the corresponding components. Other examples include acute aortic syndrome, stroke, and diverticulitis.[^board] + +A source panel feeds one Observation representation from dictation/reporting, DICOM SR, exam metadata, current and prior report extraction, longitudinal findings, and AI. The AI-monitoring panel compares two descriptions of the same finding: the radiologist's nodule is 6.0 mm with a composition value, while the model's is 7.5 mm and omits composition.[^board] + +For our work, these are useful teaching examples of shared semantics making data from different producers comparable. The AI discrepancy is a specific Use Cases illustration, not a reported performance result. The panels use an earlier component-based definition representation. They can inform a new explanation of the graph approach without being presented as the current schema or as proof of an operational monitoring application. + +Pillar connections: Foundation Context; Data Structures; Use Cases. Related working pages: [Data structures](../../../knowledge/drafts/data-structures.md), [Next generation schema](../../../knowledge/drafts/next-generation-schema.md), [Use cases](../../../knowledge/drafts/use-cases.md). + +Source captured 2026-10-01: [PNG](../../../sources/linked-diagrams/19Qjzb9AmAT/original.png) · [SVG](../../../sources/linked-diagrams/19Qjzb9AmAT/original.svg) · [Source contents](../../../sources/linked-diagrams/19Qjzb9AmAT/scene-contents.json) · [Text elements](../../../sources/linked-diagrams/19Qjzb9AmAT/text-elements.json) · [Capture metadata](../../../sources/linked-diagrams/19Qjzb9AmAT/metadata.json). + +[^board]: The captured board, especially Figure 1; Figure 2; Figure 3; Figure 4; Figure 5. Inspect the full-resolution PNG/SVG for layout and embedded material; text-elements.json records searchable text with element IDs and coordinates. Capture date does not establish when an undated proposal was written. diff --git a/docs/references/linked-diagrams/structured-report-representation.md b/docs/references/linked-diagrams/structured-report-representation.md new file mode 100644 index 0000000..71a7fce --- /dev/null +++ b/docs/references/linked-diagrams/structured-report-representation.md @@ -0,0 +1,26 @@ +--- +type: Reference +title: "Structured report representation" +description: "Complex findings, report sections, source-independent representations" +tags: ["data-structures", "foundation-context", "sdks"] +status: draft +generated: { by: codex/gpt-6/2026-10-01-linked-diagrams, at: 2026-10-01 } +sources: + - id: board + resource: sources/linked-diagrams/9Jgo8oKswiE/ + title: "Structured Report Representation" +--- + +# Structured report representation + +The board's notes ask how to represent more than simple findings: technique, the radiologist's understanding of patient history, comparisons, complex subparts, causative relationships, grouped findings, broad anatomic negatives, diagnoses, differentials, recommendations, and communication. They distinguish these needs through concrete examples and a chest CT report/finding-list pair.[^board] + +Another discussion calls for appropriate FHIR representation patterns and a handbook for choosing among them. It says representations should be interchangeable across sources, including modality data, AI, technologists, radiologists, and extraction from prior reports. Further notes propose experiments, stronger definition content, and clinical demonstration scenarios.[^board] + +For our work, this is a source for the Observation layer's structural requirements and developer guidance. The common target representation is the reusable idea. Exact FHIR patterns, impression structures, probabilities, grouping, and recommendation forms remain questions on this board. The newer two-graph and shared-schema work supplies the current organizing context. + +Pillar connections: Data Structures; Foundation Context; SDKs. Related working pages: [Data structures](../../../knowledge/drafts/data-structures.md), [Relationships](../../../knowledge/drafts/relationships.md), [Sdks](../../../knowledge/drafts/sdks.md). + +Source captured 2026-10-01: [PNG](../../../sources/linked-diagrams/9Jgo8oKswiE/original.png) · [SVG](../../../sources/linked-diagrams/9Jgo8oKswiE/original.svg) · [Source contents](../../../sources/linked-diagrams/9Jgo8oKswiE/scene-contents.json) · [Text elements](../../../sources/linked-diagrams/9Jgo8oKswiE/text-elements.json) · [Capture metadata](../../../sources/linked-diagrams/9Jgo8oKswiE/metadata.json). + +[^board]: The captured board, especially Report Finding List. Inspect the full-resolution PNG/SVG for layout and embedded material; text-elements.json records searchable text with element IDs and coordinates. Capture date does not establish when an undated proposal was written. diff --git a/docs/references/linked-diagrams/use-case-development.md b/docs/references/linked-diagrams/use-case-development.md new file mode 100644 index 0000000..654a108 --- /dev/null +++ b/docs/references/linked-diagrams/use-case-development.md @@ -0,0 +1,26 @@ +--- +type: Reference +title: "Use-case development and interaction ideas" +description: "User interactions, report views, spine numbering" +tags: ["use-cases"] +status: draft +generated: { by: codex/gpt-6/2026-10-01-linked-diagrams, at: 2026-10-01 } +sources: + - id: board + resource: sources/linked-diagrams/1lt7q7M1bEz/ + title: "OIDM Use Case Brainstorming" +--- + +# Use-case development and interaction ideas + +The board organizes possible value across reporting efficiency, care-team communication, operations/quality/safety, research, public health, and education. It also groups application ideas by reporting, workflow, AI pipelines, data exploration/outcomes, and multiple report views. The circled question asks how users would interact with each use case.[^board] + +The spine-numbering example makes that interaction concrete: capture prior knowledge from operative or treatment notes, let a surgeon specify anatomy, and allow reporting/viewing tools to map between preferred numbering schemes. Other notes propose use-case metadata, contribution guidelines, stages of development, and an entry index. The “Use Case Definitions” box is empty.[^board] + +For our work, this supports a list-oriented Use Cases pillar grounded in what a person does and which information the tool needs. The detailed assisted-reporting map is also present on the Big Picture board. Keep these ideas as source anchors; the proposed repository/catalog mechanics should not become the organizing purpose of the knowledgebase, and an empty placeholder should not be treated as a defined application. + +Pillar connections: Use Cases. Related working pages: [Use cases](../../../knowledge/drafts/use-cases.md), [Overview](../../../knowledge/drafts/overview.md). + +Source captured 2026-10-01: [PNG](../../../sources/linked-diagrams/1lt7q7M1bEz/original.png) · [SVG](../../../sources/linked-diagrams/1lt7q7M1bEz/usable.svg) · [Source contents](../../../sources/linked-diagrams/1lt7q7M1bEz/scene-contents.json) · [Text elements](../../../sources/linked-diagrams/1lt7q7M1bEz/text-elements.json) · [Capture metadata](../../../sources/linked-diagrams/1lt7q7M1bEz/metadata.json). + +[^board]: The captured board, especially Table 1: Value Categories; how do we imagine user interactions; Spine numbering/transitions; Artifacts; Use Case Definitions. Inspect the full-resolution PNG/SVG for layout and embedded material; text-elements.json records searchable text with element IDs and coordinates. Capture date does not establish when an undated proposal was written.

    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

x9F$Ag^qC@5UDU$hv5Woh!_dwWaqmnnt4!#H_w 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 literal 0 HcmV?d00001 diff --git a/docs/plans/renders/two-planes-v5.png b/docs/plans/renders/two-planes-v5.png new file mode 100644 index 0000000000000000000000000000000000000000..4e778b7ad65860c0c5f4212631247bda1cddaaa9 GIT binary patch literal 80741 zcmZsCV|-j+)Nb0?P2)6Z+}Kvr*tXi(wkB;FtFdj{wynmPXktvPJ8j?pz3+!RpZ0Ig z*=Mh_vDSK?XPpp5c?nb`0wgFXC{!s)QDrD7=nyEVx9JFPA^*JbZsmi5dIu#XDy-_B zcDx3!8|(H0e@^o2r>vyk=eIBjUWma6NVKN{mi1~n3N}`iu8oWOgL)@=M{AwH<=T_^ z<%|ZkNp%|{wWExpj~~g%YRn*=eto8r@_Rj#f>Kg?15I)6!&M0;^|&-X|47o&DQ0PB zCjl85^3#OUf%)6;Gx4+jV;>Y0J*=_H-^N#(kEwqQgo2WJvxN1xp@}q9@VC*W{FxK> zZ!6(#4b9(16&8i@?w<9_rK1PUzita3`yv4M3TLZF`bQH5TvjEdNq;YBVu*#^2;OSD zaS9})`d8u(^mnw_zxme($9n%hk3=Co1N*&ercW7PD)A(F4XA1J<3BU$bu4`aJ2C`x zYc2ex<4H@ZsAF@VpWgj5;Hw<1OGZQWR^*@AKk{*~ zHjjqi2**8Aaam0i6u>=aeg2tXnTHFSxP_;o8Zfp#IlyYbQZnF_;VI zr`S3`!D_q!S0;?Z)5ov1mE1q_@1y--M``J-rjN+i1k&-tAI~hxm#_%HZ~j~>6Vvvs zBmhTWo6hEP*?ly;Df;@~+el|v+!UR|pIXE()m2qAd|5d7TnO*w`SI@~zjlkdD2K@I ziJFNbw-Gnhs+rCLJ^GH75VJ`U{@$S3Fgk$oaMdGzZE99JRxtH%mAbUS9gx=;uwKra z*JWg)Tw3afxg-CdC&p=yM}#8Pq_53&>7!!Sh%M|n3+wB6dBs)!k}mjf*cs$72glR{ z+|Orvj