docs(datamodel): FCO-IM feitenronde instroom, besluitenlog + herstructurering

Voegt de discovery- en besluitvormingsronde van 18-19 juli toe (besluitenlog,
begrippenlijst, feitenmodel-instroom met scenariotoetsen, terminologie- en
leveranciersonderzoek) en synchroniseert feitenmodel-instroom.md met de
screening=acceptatie-beslissing (§5). Herstructureert docs/datamodel/ naar
submappen per documentsoort (besluiten/sessielogs/feitenmodellen/deelmodellen/
onderzoek/entiteitenkaarten) zodat toekomstige besluitenlogs en feitenrondes
per deelgebied een vaste plek krijgen.
This commit is contained in:
colinislit
2026-07-19 11:07:21 +02:00
parent 37beef14be
commit 2a1278936b
20 changed files with 6169 additions and 6 deletions

View File

@@ -0,0 +1,818 @@
<!doctype html>
<html lang="nl">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta name="color-scheme" content="light dark">
<title>Engelstalige EHR-termen voor GGZ-instroom</title>
<style>
:root {
--bg: #f5f7f6;
--surface: #ffffff;
--surface-subtle: #edf3f1;
--text: #172420;
--muted: #5b6d68;
--line: #dce3e0;
--accent: #0f766e;
--accent-strong: #0b5c56;
--accent-soft: #e1f0ee;
--success: #166534;
--success-soft: #e7f6eb;
--warning: #9a4d08;
--warning-soft: #fceedc;
--danger: #a12c2c;
--danger-soft: #fce8e8;
--code-bg: #e9efed;
}
@media (prefers-color-scheme: dark) {
:root {
--bg: #0d1512;
--surface: #12201c;
--surface-subtle: #172923;
--text: #e6eeeb;
--muted: #96a9a4;
--line: #2a3b36;
--accent: #35d6c4;
--accent-strong: #6ee7d9;
--accent-soft: #163430;
--success: #72d58a;
--success-soft: #173322;
--warning: #f0a94e;
--warning-soft: #2a1f10;
--danger: #f18a8a;
--danger-soft: #341a1a;
--code-bg: #1c2d28;
}
}
:root[data-theme="light"] {
--bg: #f5f7f6;
--surface: #ffffff;
--surface-subtle: #edf3f1;
--text: #172420;
--muted: #5b6d68;
--line: #dce3e0;
--accent: #0f766e;
--accent-strong: #0b5c56;
--accent-soft: #e1f0ee;
--success: #166534;
--success-soft: #e7f6eb;
--warning: #9a4d08;
--warning-soft: #fceedc;
--danger: #a12c2c;
--danger-soft: #fce8e8;
--code-bg: #e9efed;
}
:root[data-theme="dark"] {
--bg: #0d1512;
--surface: #12201c;
--surface-subtle: #172923;
--text: #e6eeeb;
--muted: #96a9a4;
--line: #2a3b36;
--accent: #35d6c4;
--accent-strong: #6ee7d9;
--accent-soft: #163430;
--success: #72d58a;
--success-soft: #173322;
--warning: #f0a94e;
--warning-soft: #2a1f10;
--danger: #f18a8a;
--danger-soft: #341a1a;
--code-bg: #1c2d28;
}
* {
box-sizing: border-box;
}
html {
background: var(--bg);
color: var(--text);
scroll-behavior: smooth;
}
body {
margin: 0;
background: var(--bg);
color: var(--text);
font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif;
line-height: 1.55;
}
a {
color: var(--accent-strong);
text-underline-offset: 0.2em;
}
a:hover {
text-decoration-thickness: 2px;
}
code {
padding: 0.12em 0.38em;
border-radius: 5px;
background: var(--code-bg);
color: var(--accent-strong);
font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;
font-size: 0.9em;
}
.page {
width: min(1180px, calc(100% - 2rem));
margin: 0 auto;
padding: 2rem 0 5rem;
}
.toolbar {
display: flex;
justify-content: space-between;
align-items: center;
gap: 1rem;
margin-bottom: 3rem;
color: var(--muted);
font-size: 0.82rem;
}
.toolbar-actions {
display: flex;
align-items: center;
gap: 0.75rem;
}
.button {
appearance: none;
border: 1px solid var(--line);
border-radius: 7px;
background: var(--surface);
color: var(--text);
padding: 0.45rem 0.75rem;
font: inherit;
cursor: pointer;
}
.button:hover {
border-color: var(--accent);
}
header {
margin-bottom: 2rem;
}
.eyebrow {
margin: 0 0 0.65rem;
color: var(--accent-strong);
font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;
font-size: 0.72rem;
font-weight: 700;
letter-spacing: 0.08em;
text-transform: uppercase;
}
h1,
h2,
h3 {
color: var(--text);
line-height: 1.2;
text-wrap: balance;
}
h1 {
max-width: 22ch;
margin: 0 0 0.7rem;
font-family: "Iowan Old Style", "Palatino Linotype", "Book Antiqua", Georgia, serif;
font-size: clamp(2rem, 5vw, 3.7rem);
font-weight: 600;
letter-spacing: -0.025em;
}
h2 {
margin: 0 0 1rem;
font-family: "Iowan Old Style", "Palatino Linotype", "Book Antiqua", Georgia, serif;
font-size: clamp(1.4rem, 2.4vw, 2rem);
font-weight: 600;
}
h3 {
margin: 0;
font-size: 1rem;
}
.subtitle {
max-width: 68ch;
margin: 0;
color: var(--muted);
font-size: 1.05rem;
}
section {
margin-top: 3.5rem;
}
.callout {
margin-top: 2rem;
padding: 1.15rem 1.25rem;
border: 1px solid color-mix(in srgb, var(--success) 36%, var(--line));
border-radius: 10px;
background: var(--success-soft);
}
.callout.warning {
border-color: color-mix(in srgb, var(--warning) 36%, var(--line));
background: var(--warning-soft);
}
.callout h2,
.callout h3 {
margin-bottom: 0.45rem;
color: inherit;
}
.callout p {
max-width: 80ch;
margin: 0;
}
.concept-grid {
display: grid;
grid-template-columns: repeat(3, minmax(0, 1fr));
gap: 1rem;
}
.concept-card {
display: flex;
flex-direction: column;
min-height: 230px;
border: 1px solid var(--line);
border-radius: 10px;
background: var(--surface);
overflow: hidden;
}
.concept-header {
display: flex;
justify-content: space-between;
align-items: center;
gap: 0.75rem;
padding: 0.75rem 1rem;
border-bottom: 1px solid var(--line);
}
.concept-body {
display: flex;
flex: 1;
flex-direction: column;
gap: 0.9rem;
padding: 1rem;
}
.concept-body p {
margin: 0;
}
.concept-body .note {
margin-top: auto;
color: var(--muted);
font-size: 0.86rem;
}
.pill {
display: inline-flex;
align-items: center;
border-radius: 999px;
background: var(--surface-subtle);
color: var(--muted);
padding: 0.18rem 0.55rem;
font-size: 0.72rem;
white-space: nowrap;
}
.model-flow {
display: grid;
grid-template-columns: repeat(5, minmax(0, 1fr));
gap: 0.55rem;
margin-top: 1.2rem;
}
.flow-step {
position: relative;
padding: 0.75rem 0.8rem;
border-radius: 8px;
background: var(--accent-soft);
color: var(--accent-strong);
font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;
font-size: 0.78rem;
text-align: center;
}
.flow-step:not(:last-child)::after {
position: absolute;
top: 50%;
right: -0.48rem;
z-index: 1;
content: "";
transform: translateY(-52%);
color: var(--muted);
font-family: sans-serif;
font-size: 1.2rem;
}
.caption {
margin: 0.75rem 0 0;
color: var(--muted);
font-size: 0.82rem;
}
.table-shell {
overflow-x: auto;
border: 1px solid var(--line);
border-radius: 10px;
background: var(--surface);
}
table {
width: 100%;
min-width: 780px;
border-collapse: collapse;
font-size: 0.9rem;
}
th,
td {
padding: 0.8rem 0.9rem;
border-bottom: 1px solid var(--line);
text-align: left;
vertical-align: top;
}
th {
background: var(--surface-subtle);
color: var(--muted);
font-size: 0.74rem;
font-weight: 700;
letter-spacing: 0.045em;
text-transform: uppercase;
}
tbody tr:last-child td {
border-bottom: 0;
}
tbody tr:nth-child(even) {
background: color-mix(in srgb, var(--surface-subtle) 45%, transparent);
}
.rating {
display: inline-block;
min-width: 4.5rem;
border-radius: 999px;
padding: 0.15rem 0.5rem;
font-size: 0.75rem;
font-weight: 700;
text-align: center;
}
.rating.strong {
background: var(--success-soft);
color: var(--success);
}
.rating.moderate {
background: var(--accent-soft);
color: var(--accent-strong);
}
.rating.weak {
background: var(--warning-soft);
color: var(--warning);
}
.rating.reject {
background: var(--danger-soft);
color: var(--danger);
}
.two-column {
display: grid;
grid-template-columns: 1fr 1fr;
gap: 2rem;
align-items: start;
}
.avoid-list {
display: grid;
gap: 0.65rem;
margin: 0;
padding: 0;
list-style: none;
}
.avoid-list li {
padding-bottom: 0.65rem;
border-bottom: 1px solid var(--line);
}
.panel {
padding: 1.25rem;
border: 1px solid var(--line);
border-radius: 10px;
background: var(--surface);
}
.panel h3 {
margin-bottom: 0.65rem;
}
.panel p {
margin: 0 0 0.8rem;
}
.panel p:last-child {
margin-bottom: 0;
}
.source-grid {
display: grid;
grid-template-columns: repeat(2, minmax(0, 1fr));
gap: 0.65rem 1.5rem;
padding: 0;
list-style: none;
}
.source-grid a {
display: block;
padding: 0.5rem 0;
border-bottom: 1px solid var(--line);
}
footer {
margin-top: 4rem;
padding-top: 1.25rem;
border-top: 1px solid var(--line);
color: var(--muted);
font-size: 0.8rem;
}
@media (max-width: 840px) {
.concept-grid,
.two-column {
grid-template-columns: 1fr;
}
.model-flow {
grid-template-columns: 1fr;
}
.flow-step:not(:last-child)::after {
top: auto;
right: 50%;
bottom: -0.72rem;
transform: translateX(50%) rotate(90deg);
}
}
@media (max-width: 620px) {
.page {
width: min(100% - 1.25rem, 1180px);
padding-top: 1rem;
}
.toolbar {
align-items: flex-start;
flex-direction: column;
margin-bottom: 2rem;
}
.source-grid {
grid-template-columns: 1fr;
}
}
@media print {
:root {
--bg: #ffffff;
--surface: #ffffff;
--surface-subtle: #f3f5f4;
--text: #111111;
--muted: #444444;
--line: #cccccc;
--accent: #0f766e;
--accent-strong: #0b5c56;
--accent-soft: #edf7f5;
--success: #166534;
--success-soft: #eef8f0;
--warning: #814005;
--warning-soft: #fff6e8;
--danger: #8a2424;
--danger-soft: #fff0f0;
--code-bg: #eeeeee;
}
.toolbar-actions {
display: none;
}
.page {
width: 100%;
padding: 0;
}
section,
.concept-card,
.panel,
.callout {
break-inside: avoid;
}
}
</style>
</head>
<body>
<main class="page">
<nav class="toolbar" aria-label="Documentacties">
<span>Lokaal onderzoeksartefact · 18 juli 2026</span>
<div class="toolbar-actions">
<a href="onderzoek-engelstalige-epd-terminologie.md">Onderzoeksrapport</a>
<button class="button" id="theme-toggle" type="button" aria-label="Wissel licht en donker thema">
Licht/donker
</button>
</div>
</nav>
<header>
<p class="eyebrow">EHR terminology review</p>
<h1>Engelstalige EHR-termen voor GGZ-instroom</h1>
<p class="subtitle">
Vergelijking van Epic, Oracle Health, athenahealth, Netsmart, NextGen,
HL7 FHIR, ONC/360X en NHS, aangescherpt voor een primair ambulante GGZ-context.
</p>
</header>
<aside class="callout">
<h2>Aanbevolen richting</h2>
<p>
Gebruik <code>referral</code> als eersteklas lifecycle-object voor het beheerde
aanmeldingstraject en <code>referral_submission</code> voor iedere afzonderlijke
ontvangst of aanvulling. Een mogelijk <code>referral_request</code> blijft een
apart te valideren concept voor het inhoudelijke verzoek of de formele verwijzing.
</p>
</aside>
<section aria-labelledby="core-model-title">
<h2 id="core-model-title">Voorgesteld kernmodel</h2>
<div class="concept-grid">
<article class="concept-card">
<div class="concept-header">
<h3>Referral Request</h3>
<span class="pill">verzoek · open</span>
</div>
<div class="concept-body">
<p><code>referral_request</code></p>
<p>
Het inhoudelijke verzoek om zorg of beoordeling, geïnitieerd door een
professional, organisatie, cliënt of vertegenwoordiger.
</p>
<p class="note">
Mogelijke Engelse tegenhanger van de formele VERWIJZING. Eerst bepalen
of dit een eigen identiteit nodig heeft.
</p>
</div>
</article>
<article class="concept-card">
<div class="concept-header">
<h3>Referral Submission</h3>
<span class="pill">ontvangst</span>
</div>
<div class="concept-body">
<p><code>referral_submission</code></p>
<p>
Eén ontvangen indiening of aanvulling, met eigen kanaal, bron, tijdstip,
documenten en oorspronkelijke inhoud.
</p>
<p class="note">
Voorkeursnaam voor AANMELDSIGNAAL. Een lokale technische term, geen
universele EHR-standaard.
</p>
</div>
</article>
<article class="concept-card">
<div class="concept-header">
<h3>Referral</h3>
<span class="pill">workflow</span>
</div>
<div class="concept-body">
<p><code>referral</code></p>
<p>
Het beheerde instroomobject dat submissions en eventuele requests
beoordeelt, aanvult, trieert en afsluit.
</p>
<p class="note">
Voorkeursnaam voor AANMELDINGSTRAJECT. Sluit aan op Epic, Oracle en
behavioral-healthleverancier Netsmart.
</p>
</div>
</article>
</div>
<div class="model-flow" aria-label="Voorgestelde instroomketen">
<div class="flow-step">referral_submission</div>
<div class="flow-step">referral</div>
<div class="flow-step">acceptance_decision</div>
<div class="flow-step">clinical_care_episode</div>
<div class="flow-step">clinical_intake</div>
</div>
<p class="caption">
De zorgsetting is een afzonderlijk tijdgebonden kenmerk. De keten heet dus
niet admission of pre-admission; de meeste GGZ-behandeling is ambulant.
</p>
</section>
<section aria-labelledby="options-title">
<h2 id="options-title">Beoordeling van naamparen</h2>
<div class="table-shell">
<table>
<thead>
<tr>
<th>Naamparen</th>
<th>Oordeel</th>
<th>Sterk punt</th>
<th>Belangrijk risico</th>
</tr>
</thead>
<tbody>
<tr>
<td>Referral Submission / Referral</td>
<td><span class="rating strong">Voorkeur</span></td>
<td>Idiomatic in referral management en behavioral health</td>
<td>Referral moet expliciet als ontvangende lifecycle worden gedefinieerd</td>
</tr>
<tr>
<td>Referral Submission / Referral Case</td>
<td><span class="rating moderate">Sterk</span></td>
<td>Scheidt ontvangst en workflow zeer expliciet</td>
<td>Case kan elders juridisch, financieel of klinisch iets anders betekenen</td>
</tr>
<tr>
<td>Care Access Submission / Care Access Case</td>
<td><span class="rating moderate">Redelijk</span></td>
<td>Inclusief voor zelfaanmelding en niet-formele bronnen</td>
<td>Access kan als dossier-, systeem- of autorisatietoegang worden gelezen</td>
</tr>
<tr>
<td>Referral Submission / Referral Intake Case</td>
<td><span class="rating weak">Zwak</span></td>
<td>Sluit aan op behavioral-healthtaal als referral intake</td>
<td>Botst met Triqura's afzonderlijke klinische intake</td>
</tr>
<tr>
<td>Inbound Care Submission / Access Assessment Case</td>
<td><span class="rating reject">Afwijzen</span></td>
<td>Domeinneutraal</td>
<td>Abstract en niet herkenbaar in onderzochte EHR-documentatie</td>
</tr>
</tbody>
</table>
</div>
</section>
<section aria-labelledby="evidence-title">
<h2 id="evidence-title">Wat markt en standaarden feitelijk gebruiken</h2>
<div class="table-shell">
<table>
<thead>
<tr>
<th>Bron</th>
<th>Gepubliceerde term</th>
<th>Betekenis</th>
<th>Gevolg voor Triqura</th>
</tr>
</thead>
<tbody>
<tr>
<td>Epic</td>
<td>Referral</td>
<td>Lifecycle-object met incoming/outgoing class, status, triage en historie</td>
<td>Ondersteunt <code>referral</code> als beheerd instroomobject</td>
</tr>
<tr>
<td>Oracle Health</td>
<td>Referral / Referral Order</td>
<td>Order is verzoek; Referral Management beheert status, bijlagen en tijdlijn</td>
<td>Scheidt request en beheerde referral</td>
</tr>
<tr>
<td>Netsmart</td>
<td>Incoming Referral / Referral Manager / Referral Packet</td>
<td>Behavioral-healthinstroom uit meerdere kanalen; acceptatie naar pre-admit</td>
<td>Referraltaal past bij de GGZ, maar pre-admit niet als generieke kernterm</td>
</tr>
<tr>
<td>HL7 FHIR</td>
<td>ServiceRequest / Task / EpisodeOfCare / Encounter</td>
<td>Verzoek, workflowtaak, verantwoordelijkheid en contact zijn aparte concepten</td>
<td>Lokale objecten niet naar één FHIR-resource forceren</td>
</tr>
<tr>
<td>ONC/360X</td>
<td>Referral Request / Referral Order / Referral Identifier</td>
<td>Closed-loop workflow met persistente identifier tot afsluiting</td>
<td>Request en workflow moeten herkenbaar maar niet samengevouwen zijn</td>
</tr>
<tr>
<td>NHS</td>
<td>Referral Request / Patient Pathway</td>
<td>Referral Request omvat self-referral; Patient Pathway is veel breder</td>
<td>Ondersteunt een apart request, maar niet Patient Pathway voor deze fase</td>
</tr>
</tbody>
</table>
</div>
</section>
<section class="two-column" aria-label="Terminologierisico's en modelcorrectie">
<div>
<h2>Termen om te vermijden</h2>
<ul class="avoid-list">
<li><code>signal</code> — klinkt als alert of klinisch vroegsignaal.</li>
<li><code>admission</code> — suggereert opname of reeds verleende toegang.</li>
<li><code>pre_admission</code> — is opnamegericht en niet passend als ambulante standaard.</li>
<li><code>encounter</code> — is een feitelijk contact, geen instroomworkflow.</li>
<li><code>episode_of_care</code> — impliceert organisatorische verantwoordelijkheid.</li>
<li><code>patient_pathway</code> — is breder en langduriger dan beoordeling vóór acceptatie.</li>
<li><code>referral_intake_case</code> — botst met de afzonderlijke klinische intake.</li>
</ul>
</div>
<article class="panel">
<h3>Belangrijkste modelcorrectie</h3>
<p>
Het huidige AANMELDSIGNAAL bevat zowel een transportfeit als inhoud van
een zorgverzoek. Engelstalige EHR-terminologie maakt zichtbaar dat dit
twee betekenissen kunnen zijn.
</p>
<p>
Een huisartsbrief, later ontvangen diagnostiek en een telefoontje kunnen
drie submissions binnen één referral zijn, zonder dat drie nieuwe
zorgverzoeken of trajecten ontstaan.
</p>
<p>
Of het inhoudelijke verzoek daarom een eigen <code>referral_request</code>
nodig heeft, wordt in de FCO-IM-feitenronde bepaald.
</p>
</article>
</section>
<section aria-labelledby="sources-title">
<h2 id="sources-title">Primaire bronnen</h2>
<ul class="source-grid">
<li><a href="https://open.epic.com/EHITables/GetTable/REFERRAL.htm">Epic REFERRAL</a></li>
<li><a href="https://open.epic.com/EHITables/GetTable/REFERRAL_2.htm">Epic referral triage</a></li>
<li><a href="https://docs.oracle.com/en/industries/health/oracle-health-ehr/ehrfg/referrals.html">Oracle Health Referrals</a></li>
<li><a href="https://www.ntst.com/carefabric/population-health-management/referral-management">Netsmart Referral Manager</a></li>
<li><a href="https://hl7.org/fhir/R5/servicerequest.html">HL7 FHIR ServiceRequest</a></li>
<li><a href="https://hl7.org/fhir/R5/episodeofcare.html">HL7 FHIR EpisodeOfCare</a></li>
<li><a href="https://oncprojectracking.healthit.gov/wiki/spaces/TechLab360X/pages/18776120/360X+Home">ONC 360X</a></li>
<li><a href="https://www.datadictionary.nhs.uk/classes/patient_pathway.html">NHS Patient Pathway</a></li>
</ul>
</section>
<aside class="callout warning">
<h2>Nog één open begrippenvraag</h2>
<p>
<code>referral_submission</code> en <code>referral</code> zijn de huidige
voorkeursrichting. De bestaande begrippenlijst is nog niet aangepast omdat
eerst moet worden vastgesteld of de Nederlandse VERWIJZING volledig
samenvalt met een zelfstandig <code>referral_request</code>.
</p>
</aside>
<footer>
Zelfstandig HTML-artefact. Geen externe scripts, fonts of stylesheets.
Bronlinks vereisen internet; alle onderzoeksinhoud is lokaal beschikbaar.
</footer>
</main>
<script>
(() => {
const root = document.documentElement;
const toggle = document.getElementById("theme-toggle");
const storedTheme = localStorage.getItem("ehr-referral-theme");
if (storedTheme === "light" || storedTheme === "dark") {
root.dataset.theme = storedTheme;
}
toggle.addEventListener("click", () => {
const systemDark = window.matchMedia("(prefers-color-scheme: dark)").matches;
const current = root.dataset.theme || (systemDark ? "dark" : "light");
const next = current === "dark" ? "light" : "dark";
root.dataset.theme = next;
localStorage.setItem("ehr-referral-theme", next);
});
})();
</script>
</body>
</html>