deck slide 07: port approved prototype variant D — EN-first category pills (tier1 tinted, tier2 white, counts in badges), numbered points, right output panel 'The output: text becomes recorded data'; drop orphaned tier/chipc css; css v36

This commit is contained in:
Codex
2026-09-07 23:07:18 +02:00
parent bdfdfca2e5
commit 4127c1e590
2 changed files with 52 additions and 24 deletions
+28 -7
View File
@@ -214,13 +214,34 @@
.arit .divider-h { font: 700 40px/1.15 var(--sans); margin-top: 10px; }
.arit .cue { margin-top: 22px; font: 600 12px/1 var(--sans); letter-spacing: .12em; text-transform: uppercase; color: var(--ink-muted); }
/* ontology chips */
.arit .tier { margin-bottom: 18px; }
.arit .tier-label { display: block; font: 700 11px/1 var(--mono); letter-spacing: .12em; text-transform: uppercase;
color: var(--ink-muted); margin-bottom: 8px; }
.arit .chips { display: flex; flex-wrap: wrap; gap: 8px; }
.arit .chipc { border: 1px solid var(--bordeaux); color: var(--bordeaux-deep); background: #fff;
border-radius: 9999px; padding: 7px 14px; font: 700 13px/1 var(--sans); }
/* ontology slide: EN-first category pills + output panel */
.arit .onto-split { flex: 1; min-height: 0; display: grid; grid-template-columns: 1.25fr 1fr;
gap: 26px; align-items: stretch; margin-top: 14px; }
.arit .tier-h { display: flex; align-items: center; font: 700 10px/1 var(--mono); letter-spacing: .14em;
text-transform: uppercase; color: var(--bordeaux-deep); margin-bottom: 9px; }
.arit .tier-h .cnt { margin-left: auto; font: 700 9px/1 var(--mono); color: var(--bordeaux);
border: 1px solid var(--bordeaux); border-radius: 9999px; padding: 2px 7px; }
.arit .cats { display: flex; flex-wrap: wrap; gap: 8px; }
.arit .cat { display: inline-flex; align-items: baseline; gap: 7px; border: 1px solid var(--bordeaux);
border-radius: 9999px; padding: 6px 13px; background: #fff; white-space: nowrap; }
.arit .cat b { font: 700 13px/1 var(--sans); color: var(--ink); }
.arit .cat .it { font: 400 11px/1 var(--sans); color: var(--ink-muted); }
.arit .cat.fill { background: var(--bordeaux-tint); }
.arit .onto-points { margin-top: 12px; }
.arit .oitem { display: flex; gap: 10px; padding: 7px 0; border-bottom: 1px solid var(--line); }
.arit .oitem:last-child { border-bottom: none; }
.arit .oitem .n { flex: 0 0 22px; font: 700 11px/1.6 var(--mono); color: var(--bordeaux); }
.arit .oitem b { font: 700 13px/1.35 var(--sans); color: var(--ink); }
.arit .oitem .d { font: 400 12.5px/1.45 var(--sans); color: var(--ink-muted); }
.arit .out-panel { border: 1px solid var(--bordeaux); background: var(--bordeaux-tint); border-radius: 10px;
padding: 15px 18px 8px; align-self: stretch; display: flex; flex-direction: column; }
.arit .out-h { display: block; font: 700 10px/1 var(--mono); letter-spacing: .14em; text-transform: uppercase;
color: var(--bordeaux-deep); margin-bottom: 4px; }
.arit .out-item { display: flex; gap: 10px; padding: 11px 0; border-bottom: 1px solid rgba(143,18,4,.18); flex: 1; }
.arit .out-item:last-child { border-bottom: none; }
.arit .out-item .n { flex: 0 0 22px; font: 700 11px/1.6 var(--mono); color: var(--bordeaux-deep); }
.arit .out-item b { font: 700 13px/1.35 var(--sans); color: var(--bordeaux-deep); }
.arit .out-item .d { display: block; margin-top: 2px; font: 400 12.5px/1.45 var(--sans); color: var(--ink); }
/* flow */
.arit .flow { margin-top: 16px; display: flex; align-items: stretch; gap: 14px; }
+24 -17
View File
@@ -5,7 +5,7 @@
<title>AritmoLab — Role of AI in the Analysis of Unstructured Clinical Databases</title>
<link rel="stylesheet" href="vendor/reveal/dist/reveal.css">
<link rel="stylesheet" href="fonts.css?v=8">
<link rel="stylesheet" href="deck.css?v=35">
<link rel="stylesheet" href="deck.css?v=36">
</head>
<body>
<div class="reveal"><div class="slides">
@@ -325,29 +325,36 @@
<div class="sbody">
<div class="kicker">The clinical ontology</div>
<h2>Two tiers, one clinical order</h2>
<div class="tier">
<span class="tier-label">TIER 1 · arrhythmic — 11 categories</span>
<div class="chips">
<span class="chipc">FA <span class="g">· AF</span></span><span class="chipc">Brugada</span><span class="chipc">Flutter</span><span class="chipc">TA <span class="g">· AT</span></span><span class="chipc">TRN <span class="g">· AVNRT</span></span><span class="chipc">WPW / TPSV <span class="g">· PSVT</span></span><span class="chipc">TV <span class="g">· VT</span></span><span class="chipc">FV <span class="g">· VF</span></span><span class="chipc">Extrasistolia V. <span class="g">· ventricular ectopy</span></span><span class="chipc">Sincope <span class="g">· syncope</span></span><span class="chipc">QT lungo <span class="g">· long QT</span></span>
<div class="onto-split">
<div class="onto-left">
<div class="tier-h">TIER 1 · arrhythmic<span class="cnt">11</span></div>
<div class="cats">
<span class="cat fill"><b>AF</b><span class="it">FA</span></span><span class="cat fill"><b>Brugada</b></span><span class="cat fill"><b>Flutter</b></span><span class="cat fill"><b>AT</b><span class="it">TA</span></span><span class="cat fill"><b>AVNRT</b><span class="it">TRN</span></span><span class="cat fill"><b>PSVT</b><span class="it">WPW / TPSV</span></span><span class="cat fill"><b>VT</b><span class="it">TV</span></span><span class="cat fill"><b>VF</b><span class="it">FV</span></span><span class="cat fill"><b>Ventricular ectopy</b><span class="it">Extrasistolia V.</span></span><span class="cat fill"><b>Syncope</b><span class="it">Sincope</span></span><span class="cat fill"><b>Long QT</b><span class="it">QT lungo</span></span>
</div>
<div class="tier-h">TIER 2 · structural<span class="cnt">5</span></div>
<div class="cats">
<span class="cat"><b>AV block</b><span class="it">Blocco AV</span></span><span class="cat"><b>Bundle branch block</b><span class="it">Blocco di branca</span></span><span class="cat"><b>Cardiomyopathy</b><span class="it">Cardiomiopatia</span></span><span class="cat"><b>Heart failure</b><span class="it">Scompenso</span></span><span class="cat"><b>Valvular disease</b><span class="it">Valvulopatia</span></span>
</div>
<div class="onto-points">
<div class="oitem"><span class="n">01</span><div><b>Order encodes clinical precedence</b> <span class="d">— “Brugada” is matched before “TV”, so “substrato per TV” <span class="g">(“substrate for VT”)</span> can't mask a Brugada pattern</span></div></div>
<div class="oitem"><span class="n">02</span><div><b>Synonyms live inline</b> <span class="d">— FA / f.a. / fib. atriale / atrial fibrillation → one canonical label</span></div></div>
<div class="oitem"><span class="n">03</span><div><b>Versioned like software</b> <span class="d">— semver for the pattern library, <code>pattern_version</code> on every extracted row</span></div></div>
</div>
</div>
<div class="out-panel">
<div class="out-h">The output: text becomes recorded data</div>
<div class="out-item"><span class="n">01</span><div><b>Quantitative data on the records</b><span class="d">every procedure and implant the text analysis reads is written back as structured, quantitative values on the record that describes it</span></div></div>
<div class="out-item"><span class="n">02</span><div><b>Straight into the DWH flow</b><span class="d">these records enter the data-warehouse generation like any other source</span></div></div>
<div class="out-item"><span class="n">03</span><div><b>As if typed at the visit</b><span class="d">the data lands exactly as if clinicians had keyed it in themselves during the visits</span></div></div>
</div>
</div>
<div class="tier">
<span class="tier-label">TIER 2 · structural — 5 categories</span>
<div class="chips">
<span class="chipc">Blocco AV <span class="g">· AV block</span></span><span class="chipc">Blocco di branca <span class="g">· bundle branch block</span></span><span class="chipc">Cardiomiopatia <span class="g">· cardiomyopathy</span></span><span class="chipc">Scompenso <span class="g">· heart failure</span></span><span class="chipc">Valvulopatia <span class="g">· valvular disease</span></span>
</div>
</div>
<ul class="points" style="margin-top:24px">
<li><b>Order encodes clinical precedence</b> — “Brugada” is matched before “TV”, so “substrato per TV” <span class="g">(“substrate for VT”)</span> can't mask a Brugada pattern</li>
<li><b>Synonyms live inline</b> — FA / f.a. / fib. atriale / atrial fibrillation → one canonical label</li>
<li><b>Versioned like software</b> — semver for the pattern library, <code>pattern_version</code> on every extracted row</li>
</ul>
</div>
<footer class="foot"><span class="g">Role of AI in the Analysis of Unstructured Clinical Databases</span><span class="g">Dr. Marco Pancotti - MultiPhysixLab</span><span class="g">Dr. Sara Paratico - Gruppo San Donato</span><span class="g">San Donato Milanese, Milan, Italy · 2–3 October 2026</span><span class="g num">07 / 14</span></footer>
<aside class="notes">
[DRAFT — Sara] Extraction needs a target vocabulary — that's the ontology. Tier 1 holds the eleven arrhythmological categories that matter most for our research; Tier 2 holds five structural conditions. The order of the rules is itself clinical knowledge: Brugada patterns are tested before TV, because "substrato per TV" often appears in Brugada reports and would otherwise mask the diagnosis.
The ontology is versioned like software: a semantic version for the pattern library, stamped on every extracted row. When we add a synonym or fix a rule, the change is traceable — and the data can be rebuilt.
Sara: review the category list and the Italian labels before final.
And this is the output of the whole work: reading a letter writes structured, quantitative values back onto the records that describe the procedures and implants it contains — and those records enter the warehouse generation exactly as if the clinicians had typed them during the visits. Text becomes data, indistinguishable from bedside data entry.
Sara: review the category list and the Italian labels before final. Labels are now English-first (audience is mostly foreign) — please confirm the EN terms, especially PSVT as the umbrella for WPW/TPSV and AT/AVNRT for TA/TRN.
</aside>
</section>