Files
triqura-ecd/docs/datamodel/entiteitenkaart-instroom.html
colinislit 37beef14be docs(datamodel): discovery uitgebreid t/m behandelplan + sessielog 17 juli
- datamodel-discovery.md: scopeverbreding ronde 1 (wachtlijst, diagnose,
  behandelplan), besluiten zorgepisode als eigen entiteit, DSM-5-TR
  primair met ICD-10-mapping, wachtlijstplaatsing op twee momenten
  (Treeknormen), behandelplan-kern; bevindingen prototype-verkenning
- entiteitenkaart-instroom.html: samenhang-diagram (aanmelding als
  besluitproces vs zorgepisode als periode van zorg), diagram 3 met
  wachtlijst/diagnose/behandelplan, nieuwe waardelijsten
- sessielog 17 juli: 13 besluiten, bevindingen en open vragen

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-17 21:51:05 +02:00

1034 lines
32 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<style>
:root {
--bg: #F5F7F6;
--surface: #FFFFFF;
--text: #172420;
--muted: #5B6D68;
--line: #DCE3E0;
--accent: #0F766E;
--accent-strong: #0B5C56;
--accent-soft: #E1F0EE;
--warn: #B45309;
--warn-soft: #FCEEDC;
--warn-line: #F0D3A8;
}
@media (prefers-color-scheme: dark) {
:root {
--bg: #0D1512;
--surface: #12201C;
--text: #E6EEEB;
--muted: #96A9A4;
--line: #223330;
--accent: #35D6C4;
--accent-strong: #6EE7D9;
--accent-soft: #163430;
--warn: #F0A94E;
--warn-soft: #2A1F10;
--warn-line: #4A3419;
}
}
:root[data-theme="dark"] {
--bg: #0D1512;
--surface: #12201C;
--text: #E6EEEB;
--muted: #96A9A4;
--line: #223330;
--accent: #35D6C4;
--accent-strong: #6EE7D9;
--accent-soft: #163430;
--warn: #F0A94E;
--warn-soft: #2A1F10;
--warn-line: #4A3419;
}
:root[data-theme="light"] {
--bg: #F5F7F6;
--surface: #FFFFFF;
--text: #172420;
--muted: #5B6D68;
--line: #DCE3E0;
--accent: #0F766E;
--accent-strong: #0B5C56;
--accent-soft: #E1F0EE;
--warn: #B45309;
--warn-soft: #FCEEDC;
--warn-line: #F0D3A8;
}
* { box-sizing: border-box; }
body {
background: var(--bg);
color: var(--text);
}
.page {
max-width: 900px;
margin: 0 auto;
padding: 3rem 1.5rem 5rem;
font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;
line-height: 1.55;
}
.eyebrow {
display: inline-flex;
align-items: center;
gap: 0.4em;
font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;
font-size: 0.72rem;
letter-spacing: 0.08em;
text-transform: uppercase;
color: var(--accent-strong);
background: var(--accent-soft);
border-radius: 999px;
padding: 0.3em 0.8em;
margin-bottom: 1.1rem;
}
h1 {
font-family: "Iowan Old Style", "Palatino Linotype", "Book Antiqua", Georgia, serif;
font-size: clamp(1.7rem, 3.2vw, 2.3rem);
font-weight: 600;
line-height: 1.2;
text-wrap: balance;
margin: 0 0 0.4rem;
}
.subtitle {
color: var(--muted);
font-size: 1.02rem;
max-width: 62ch;
margin: 0 0 2.6rem;
}
h2 {
font-family: "Iowan Old Style", "Palatino Linotype", "Book Antiqua", Georgia, serif;
font-size: 1.28rem;
font-weight: 600;
margin: 0 0 0.9rem;
padding-top: 0.2rem;
}
h3 {
font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;
font-size: 0.86rem;
letter-spacing: 0.02em;
color: var(--accent-strong);
margin: 0 0 0.6rem;
}
section {
margin-bottom: 3rem;
}
section > p {
color: var(--muted);
max-width: 68ch;
margin: 0 0 1.2rem;
}
.panel {
background: var(--surface);
border: 1px solid var(--line);
border-radius: 10px;
padding: 1.4rem;
}
.diagram-panel {
overflow-x: auto;
}
.diagram-panel pre.mermaid {
margin: 0;
min-width: 640px;
}
.legend-row {
display: flex;
flex-wrap: wrap;
gap: 1.4rem;
margin-top: 1.1rem;
font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;
font-size: 0.78rem;
color: var(--muted);
}
.legend-row span {
display: inline-flex;
align-items: center;
gap: 0.45em;
}
.legend-swatch {
width: 0.85em;
height: 0.85em;
border-radius: 3px;
border: 1px solid var(--line);
}
.waardelijsten-grid {
display: grid;
grid-template-columns: repeat(2, 1fr);
gap: 1.2rem;
}
@media (max-width: 620px) {
.waardelijsten-grid { grid-template-columns: 1fr; }
}
table {
width: 100%;
border-collapse: collapse;
font-size: 0.88rem;
}
caption {
caption-side: top;
text-align: left;
margin-bottom: 0.1rem;
}
th, td {
text-align: left;
padding: 0.45rem 0.5rem;
border-bottom: 1px solid var(--line);
vertical-align: top;
}
th {
font-weight: 600;
color: var(--muted);
font-size: 0.74rem;
text-transform: uppercase;
letter-spacing: 0.03em;
}
td.code {
font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;
font-size: 0.82rem;
white-space: nowrap;
}
.tag {
display: inline-block;
font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;
font-size: 0.72rem;
padding: 0.1em 0.5em;
border-radius: 5px;
}
.tag-ja { background: var(--accent-soft); color: var(--accent-strong); }
.tag-nee { background: var(--line); color: var(--muted); }
.tag-tbc { background: var(--warn-soft); color: var(--warn); }
.callout {
background: var(--warn-soft);
border: 1px solid var(--warn-line);
border-radius: 10px;
padding: 1.3rem 1.4rem;
}
.callout h2 { color: var(--warn); margin-bottom: 0.8rem; }
.callout ol {
margin: 0;
padding-left: 1.2rem;
color: var(--text);
}
.callout li { margin-bottom: 0.7rem; }
.callout li:last-child { margin-bottom: 0; }
.callout li b { font-weight: 600; }
.callout li .why { color: var(--muted); font-size: 0.92rem; }
.baseline-note {
font-size: 0.86rem;
color: var(--muted);
border-top: 1px dashed var(--line);
margin-top: 1.2rem;
padding-top: 1rem;
}
footer {
border-top: 1px solid var(--line);
padding-top: 1.5rem;
color: var(--muted);
font-size: 0.88rem;
}
footer a { color: var(--accent-strong); }
</style>
<div class="page">
<span class="eyebrow">ECD · datamodel discovery</span>
<h1>Entiteitenkaart — instroomflow</h1>
<p class="subtitle">
Afgeleid uit de feitzinnen in <code>datamodel-discovery.md</code> §5.15.5: van persoon en aanmelding
via screening, intake en wachtlijst tot diagnose en behandelplan, met de bijbehorende waardelijsten.
Status: concept, ter review — vóór dit naar SQL gaat, checkt Colin de entiteiten, kardinaliteiten en
waardelijst-waarden.
</p>
<section>
<h2>Samenhang — de keten in één oogopslag</h2>
<p>
Aanmelding en zorgepisode zijn géén gelijke niveaus: de aanmelding is de binnenkomst en het
besluitproces (daar horen screening en aanmeldwachttijd bij), de zorgepisode is de periode van zorg
die pas ontstaat als het besluit "intake" is. Alles in de onderste doos hangt aan de episode.
De pijlen binnen de episode tonen de chronologie (intake → diagnose → behandelplan); in het
datamodel hangen alle drie rechtstreeks aan de episode, met de intake als optionele herkomst
van de diagnose.
</p>
<div class="panel diagram-panel">
<pre class="mermaid">
flowchart TB
CL["CLIËNT (rol op PERSOON)"] -->|"meldt zich aan — 1 op veel"| AANM
subgraph AANMBOX["AANMELDING — binnenkomst en besluitproces"]
direction TB
AANM["Aanmelding
verwijzer · wettelijk kader · hulpvraag"]
AANM --> SCR["Screening
activiteiten + besluit"]
AANM -.-> WLA["Wachtlijstplaatsing
soort: aanmeld"]
SCR --> UIT{"Uitkomst
bij status besloten"}
end
UIT -->|"afgewezen · doorverwezen"| EINDE["geen episode"]
UIT -->|"wachtlijst"| WLA
UIT ==>|"intake"| EPI
subgraph EPIBOX["ZORGEPISODE — periode van zorg, 0..1 per aanmelding"]
direction TB
EPI["Zorgepisode"]
EPI --> INT["Intake(s)
aanleiding: regulier · intern · crisis"]
EPI -.-> WLB["Wachtlijstplaatsing
soort: behandel"]
INT --> DIA["Diagnose(s)
DSM-5-TR · gesteld tijdens intake"]
DIA --> PLAN["Behandelplan
doelen · interventies · evaluaties"]
end
</pre>
</div>
</section>
<section>
<h2>Diagram 1 — persoon &amp; aanmelding (§5.1)</h2>
<p>Rechthoeken met een sleutel (<code>PK</code>) zijn entiteiten met een eigen identiteit; entiteiten met alleen een <code>code</code>-sleutel zijn waardelijsten (referentiedata, geen eigen levenscyclus).</p>
<div class="panel diagram-panel">
<pre class="mermaid">
erDiagram
PERSOON ||--o| CLIENT : "is cliënt sinds"
CLIENT ||--o{ AANMELDING : "meldt zich aan"
CLIENT ||--o| CLIENTPORTAAL_ACCOUNT : "heeft toegang via"
AANMELDING ||--o| ZORGEPISODE : "start bij uitkomst intake"
AANMELDING }o--|| WETTELIJK_KADER : "valt onder"
AANMELDING }o--|| AANMELDING_STATUS : "heeft"
AANMELDING }o--o| AANMELDING_UITKOMST : "heeft, bij besloten"
AANMELDING }o--o| VERWIJZER : "komt binnen via"
AANMELDING ||--o{ VERWIJSDOCUMENT : "ontvangt"
VERWIJSDOCUMENT }o--|| VERWIJSDOCUMENT_TYPE : "is van type"
VERWIJZER }o--|| VERWIJZERTYPE : "is van type"
VERWIJZER }o--o| PRAKTIJK_INSTELLING : "verbonden aan"
PERSOON {
uuid id PK
string naam
date geboortedatum
string bsn_encrypted "optioneel"
}
CLIENT {
uuid id PK
uuid persoon_id FK
string clientnummer UK
date sinds
}
CLIENTPORTAAL_ACCOUNT {
uuid id PK
uuid client_id FK
string status
}
AANMELDING {
uuid id PK
uuid client_id FK
date datum
string hulpvraag
}
ZORGEPISODE {
uuid id PK
uuid aanmelding_id FK
date gestart_op
date beeindigd_op "optioneel"
}
VERWIJZER {
uuid id PK
string naam
string agb_code
}
PRAKTIJK_INSTELLING {
uuid id PK
string naam
string agb_code
}
VERWIJSDOCUMENT {
uuid id PK
uuid aanmelding_id FK
date ontvangen_datum
}
VERWIJZERTYPE {
string code PK
string label
boolean agb_verplicht
}
WETTELIJK_KADER {
string code PK
string label
}
AANMELDING_STATUS {
string code PK
string label
}
AANMELDING_UITKOMST {
string code PK
string label
}
VERWIJSDOCUMENT_TYPE {
string code PK
string label
}
</pre>
</div>
<p class="baseline-note">
Niet in het diagram, maar op elke entiteit van toepassing (spelregels §3.1): <code>id</code> (uuid),
<code>created_at</code>/<code>updated_at</code>, <code>deleted_at</code> (soft delete), en een append-only
audit-event per mutatie. Weggelaten voor leesbaarheid, niet omdat ze niet gelden.
</p>
</section>
<section>
<h2>Diagram 2 — screening &amp; intake (§5.2)</h2>
<p>
De screening hoort bij de aanmelding (besluitproces); intakes horen bij de zorgepisode. Eén episode
kan meerdere intakes hebben — naast de reguliere intake bestaan interne intakes binnen een lopende
episode; de <code>aanleiding</code> legt het verschil vast. Screening vóór intake is een nudge,
geen harde volgorde-eis in het schema.
</p>
<div class="panel diagram-panel">
<pre class="mermaid">
erDiagram
AANMELDING ||--o| SCREENING : "wordt gescreend in"
SCREENING ||--o{ SCREENING_ACTIVITEIT : "omvat"
SCREENING_ACTIVITEIT }o--|| SCREENING_ACTIVITEIT_TYPE : "is van type"
SCREENING }o--o| SCREENING_BESLUIT : "besluit, bij afronding"
SCREENING }o--o| AFDELING : "adviseert"
ZORGEPISODE ||--o{ INTAKE : "omvat"
INTAKE }o--|| INTAKE_AANLEIDING : "gestart vanwege"
INTAKE }o--|| INTAKE_STATUS : "heeft"
INTAKE }o--o| INTAKE_UITKOMST : "heeft, bij afgerond"
INTAKE }o--|| AFDELING : "op afdeling"
INTAKE ||--o{ CONTACTMOMENT : "omvat"
CONTACTMOMENT }o--|| CONTACTMOMENT_TYPE : "is van type"
INTAKE ||--o| KINDCHECK : "heeft"
SCREENING {
uuid id PK
uuid aanmelding_id FK
date gestart_op
date besluit_datum "optioneel"
}
SCREENING_ACTIVITEIT {
uuid id PK
uuid screening_id FK
date datum
string toelichting
uuid uitgevoerd_door "rollenronde"
}
INTAKE {
uuid id PK
uuid zorgepisode_id FK
date gestart_op
date afgerond_op "optioneel"
}
CONTACTMOMENT {
uuid id PK
uuid intake_id FK
date datum
uuid gevoerd_door "rollenronde"
}
KINDCHECK {
uuid id PK
uuid intake_id FK
date uitgevoerd_op
boolean thuiswonende_kinderen
boolean zorgen_veiligheid
boolean actie_ondernomen
string toelichting
}
SCREENING_ACTIVITEIT_TYPE {
string code PK
string label
}
SCREENING_BESLUIT {
string code PK
string label
}
AFDELING {
string code PK
string label
}
INTAKE_AANLEIDING {
string code PK
string label
}
INTAKE_STATUS {
string code PK
string label
}
INTAKE_UITKOMST {
string code PK
string label
}
CONTACTMOMENT_TYPE {
string code PK
string label
}
</pre>
</div>
<p class="baseline-note">
<b>ZORGPROGRAMMA</b> (FACT, Verslaving, Trauma, ...) is als waardelijst besloten maar heeft nog geen
relatie in dit diagram — de koppeling (aan behandeladvies of traject) volgt in de ronde
diagnose &amp; behandeltraject. <b>Verslagen</b> (feitzin 9, provenance) volgen in de rapportage-ronde.
</p>
</section>
<section>
<h2>Diagram 3 — wachtlijst, diagnose &amp; behandelplan (§5.35.5)</h2>
<p>
De aanmeldwachttijd hangt aan de AANMELDING (besluitproces); diagnoses, behandelplannen en de
behandelwachttijd hangen aan de ZORGEPISODE. De diagnose wordt in DSM-5-TR geregistreerd; de
ICD-10-code wordt via een mappingtabel afgeleid. Het behandelplan is hier de kern — sessieplanning,
leefgebieden en veiligheidsplan volgen in latere rondes.
</p>
<div class="panel diagram-panel">
<pre class="mermaid">
erDiagram
AANMELDING ||--o{ WACHTLIJSTPLAATSING : "aanmeldwachttijd"
ZORGEPISODE ||--o{ WACHTLIJSTPLAATSING : "behandelwachttijd"
WACHTLIJSTPLAATSING }o--|| WACHTLIJST_SOORT : "is van soort"
WACHTLIJSTPLAATSING }o--|| PRIORITEIT : "heeft"
WACHTLIJSTPLAATSING }o--|| AFDELING : "voor afdeling"
WACHTLIJSTPLAATSING }o--o| WACHTLIJST_EINDREDEN : "beëindigd met"
ZORGEPISODE ||--o{ DIAGNOSE : "heeft"
DIAGNOSE }o--|| ERNST : "heeft"
DIAGNOSE }o--|| DIAGNOSE_STATUS : "klinische status"
DIAGNOSE }o--|| VERIFICATIESTATUS : "werkdiagnose of definitief"
DIAGNOSE }o--o| INTAKE : "gesteld tijdens"
DIAGNOSE }o--|| DSM_ICD_MAPPING : "geclassificeerd als"
ZORGEPISODE ||--o{ BEHANDELPLAN : "heeft"
BEHANDELPLAN }o--|| PLAN_STATUS : "heeft"
BEHANDELPLAN }o--o{ DIAGNOSE : "adresseert"
BEHANDELPLAN }o--o| INTAKE : "gebaseerd op"
BEHANDELPLAN ||--o{ BEHANDELDOEL : "bevat"
BEHANDELDOEL }o--|| DOEL_STATUS : "heeft"
BEHANDELPLAN ||--o{ INTERVENTIE : "bevat"
INTERVENTIE }o--o{ BEHANDELDOEL : "werkt aan"
BEHANDELPLAN ||--o{ EVALUATIEMOMENT : "kent"
EVALUATIEMOMENT }o--|| EVALUATIE_TYPE : "is van type"
WACHTLIJSTPLAATSING {
uuid id PK
uuid aanmelding_id FK "bij soort aanmeld"
uuid zorgepisode_id FK "bij soort behandel"
date geplaatst_op
date telt_vanaf
date beeindigd_op "optioneel"
}
DIAGNOSE {
uuid id PK
uuid zorgepisode_id FK
string dsm_code
string omschrijving
boolean hoofddiagnose
date gesteld_op
uuid gesteld_door "rollenronde"
}
DSM_ICD_MAPPING {
string dsm_code PK
string icd10_code
string dsm_omschrijving
}
BEHANDELPLAN {
uuid id PK
uuid zorgepisode_id FK
int versie
date opgesteld_op
date client_akkoord_op "optioneel"
}
BEHANDELDOEL {
uuid id PK
uuid behandelplan_id FK
string titel
string clientversie_b1
string prioriteit
int termijn_weken
}
INTERVENTIE {
uuid id PK
uuid behandelplan_id FK
string naam
string rationale
}
EVALUATIEMOMENT {
uuid id PK
uuid behandelplan_id FK
int week
date gepland_op
date uitgevoerd_op "optioneel"
}
WACHTLIJST_SOORT {
string code PK
string label
}
PRIORITEIT {
string code PK
string label
}
WACHTLIJST_EINDREDEN {
string code PK
string label
}
ERNST {
string code PK
string label
}
DIAGNOSE_STATUS {
string code PK
string label
}
VERIFICATIESTATUS {
string code PK
string label
}
PLAN_STATUS {
string code PK
string label
}
DOEL_STATUS {
string code PK
string label
}
EVALUATIE_TYPE {
string code PK
string label
}
</pre>
</div>
<p class="baseline-note">
<b>Aannames ter bevestiging:</b> versiebeheer als nieuw record per versie (<code>versie</code>-veld) ·
cliëntakkoord als datum-feit, niet als status · "max één hoofddiagnose" als constraint — maar per wat
(episode / moment) is nog open. WACHTLIJSTPLAATSING heeft twee optionele FK's; welke gevuld is volgt
uit de soort (aanmeld → aanmelding, behandel → episode).
</p>
</section>
<section>
<h2>Waardelijsten</h2>
<p>De daadwerkelijke waarden per referentietabel, zodat je kunt controleren of de lijst klopt en compleet is.</p>
<div class="waardelijsten-grid">
<div class="panel">
<h3>VERWIJZERTYPE</h3>
<table>
<thead><tr><th>Code</th><th>AGB verplicht</th></tr></thead>
<tbody>
<tr><td class="code">huisarts</td><td><span class="tag tag-ja">ja</span></td></tr>
<tr><td class="code">medisch_specialist</td><td><span class="tag tag-tbc">te bevestigen</span></td></tr>
<tr><td class="code">ggz_instelling</td><td><span class="tag tag-tbc">te bevestigen</span></td></tr>
<tr><td class="code">bedrijfsarts</td><td><span class="tag tag-tbc">te bevestigen</span></td></tr>
<tr><td class="code">gemeente</td><td><span class="tag tag-nee">nee</span></td></tr>
<tr><td class="code">zelfaanmelding</td><td><span class="tag tag-nee">nee</span></td></tr>
<tr><td class="code">crisis</td><td><span class="tag tag-tbc">te bevestigen</span></td></tr>
</tbody>
</table>
</div>
<div class="panel">
<h3>WETTELIJK_KADER</h3>
<table>
<thead><tr><th>Code</th></tr></thead>
<tbody>
<tr><td class="code">zvw</td></tr>
<tr><td class="code">jeugdwet</td></tr>
<tr><td class="code">wmo</td></tr>
<tr><td class="code">wlz</td></tr>
<tr><td class="code">forensisch</td></tr>
</tbody>
</table>
</div>
<div class="panel">
<h3>AANMELDING_STATUS</h3>
<table>
<thead><tr><th>Code</th></tr></thead>
<tbody>
<tr><td class="code">nieuw</td></tr>
<tr><td class="code">in_screening</td></tr>
<tr><td class="code">besloten</td></tr>
</tbody>
</table>
<p class="baseline-note" style="margin-top: 0.9rem; padding-top: 0.7rem;">
Overgangen zijn vrij — een <code>besloten</code> aanmelding kan terug naar <code>in_screening</code> bij heropening. Geen eenrichtingsflow.
</p>
</div>
<div class="panel">
<h3>AANMELDING_UITKOMST</h3>
<table>
<thead><tr><th>Code</th></tr></thead>
<tbody>
<tr><td class="code">intake</td></tr>
<tr><td class="code">afgewezen</td></tr>
<tr><td class="code">doorverwezen</td></tr>
<tr><td class="code">wachtlijst</td></tr>
</tbody>
</table>
<p class="baseline-note" style="margin-top: 0.9rem; padding-top: 0.7rem;">
Alleen gezet zodra status = <code>besloten</code>.
</p>
</div>
<div class="panel">
<h3>VERWIJSDOCUMENT_TYPE</h3>
<table>
<thead><tr><th>Code</th></tr></thead>
<tbody>
<tr><td class="code">verwijsbrief</td></tr>
<tr><td class="code">beschikking</td></tr>
</tbody>
</table>
<p class="baseline-note" style="margin-top: 0.9rem; padding-top: 0.7rem;">
Lijst waarschijnlijk niet compleet — open voor aanvulling.
</p>
</div>
<div class="panel">
<h3>AFDELING</h3>
<table>
<thead><tr><th>Code</th></tr></thead>
<tbody>
<tr><td class="code">volwassenen</td></tr>
<tr><td class="code">jeugd</td></tr>
<tr><td class="code">ouderen</td></tr>
<tr><td class="code">forensisch</td></tr>
</tbody>
</table>
<p class="baseline-note" style="margin-top: 0.9rem; padding-top: 0.7rem;">
Organisatorische eenheid; per instelling configureerbaar. Startlijst te bevestigen —
FACT en Verslaving zijn bewust géén afdeling (zie ZORGPROGRAMMA).
</p>
</div>
<div class="panel">
<h3>ZORGPROGRAMMA</h3>
<table>
<thead><tr><th>Code</th></tr></thead>
<tbody>
<tr><td class="code">algemeen_ggz</td></tr>
<tr><td class="code">fact</td></tr>
<tr><td class="code">verslaving</td></tr>
<tr><td class="code">trauma</td></tr>
</tbody>
</table>
<p class="baseline-note" style="margin-top: 0.9rem; padding-top: 0.7rem;">
Inhoudelijk aanbod, los van afdeling. Koppeling volgt in de ronde diagnose &amp; behandeltraject.
</p>
</div>
<div class="panel">
<h3>SCREENING_ACTIVITEIT_TYPE</h3>
<table>
<thead><tr><th>Code</th></tr></thead>
<tbody>
<tr><td class="code">telefonisch_contact</td></tr>
<tr><td class="code">dossieronderzoek</td></tr>
<tr><td class="code">vragenlijst</td></tr>
<tr><td class="code">overig</td></tr>
</tbody>
</table>
<p class="baseline-note" style="margin-top: 0.9rem; padding-top: 0.7rem;">
Type + vrije toelichting per activiteit. Startlijst te bevestigen.
</p>
</div>
<div class="panel">
<h3>SCREENING_BESLUIT</h3>
<table>
<thead><tr><th>Code</th></tr></thead>
<tbody>
<tr><td class="code">geschikt</td></tr>
<tr><td class="code">niet_geschikt</td></tr>
</tbody>
</table>
<p class="baseline-note" style="margin-top: 0.9rem; padding-top: 0.7rem;">
Verhouding tot AANMELDING_UITKOMST is een open vraag (overlap "geschikt" ↔ "intake").
</p>
</div>
<div class="panel">
<h3>INTAKE_AANLEIDING</h3>
<table>
<thead><tr><th>Code</th></tr></thead>
<tbody>
<tr><td class="code">regulier</td></tr>
<tr><td class="code">intern</td></tr>
<tr><td class="code">crisis</td></tr>
</tbody>
</table>
<p class="baseline-note" style="margin-top: 0.9rem; padding-top: 0.7rem;">
Regulier = vanuit aanmelding/screening; intern = tweede intake binnen lopende episode
(bijv. afdelingsovergang). Lijst te bevestigen.
</p>
</div>
<div class="panel">
<h3>INTAKE_STATUS</h3>
<table>
<thead><tr><th>Code</th></tr></thead>
<tbody>
<tr><td class="code">bezig</td></tr>
<tr><td class="code">afgerond</td></tr>
</tbody>
</table>
<p class="baseline-note" style="margin-top: 0.9rem; padding-top: 0.7rem;">
Uit het prototype overgenomen; mogelijk komt er nog een status bij (bijv. gepland).
</p>
</div>
<div class="panel">
<h3>INTAKE_UITKOMST</h3>
<table>
<thead><tr><th>Code</th></tr></thead>
<tbody>
<tr><td class="code">in_zorg</td></tr>
<tr><td class="code">doorverwijzing</td></tr>
<tr><td class="code">extra_diagnostiek</td></tr>
</tbody>
</table>
<p class="baseline-note" style="margin-top: 0.9rem; padding-top: 0.7rem;">
Alleen gezet bij status = <code>afgerond</code>. Waarden uit het prototype — te bevestigen.
</p>
</div>
<div class="panel">
<h3>CONTACTMOMENT_TYPE</h3>
<table>
<thead><tr><th>Code</th></tr></thead>
<tbody>
<tr><td class="code">intakegesprek</td></tr>
<tr><td class="code">aanvullend_onderzoek</td></tr>
<tr><td class="code">telefonisch_contact</td></tr>
<tr><td class="code">huisbezoek</td></tr>
<tr><td class="code">overig</td></tr>
</tbody>
</table>
</div>
<div class="panel">
<h3>WACHTLIJST_SOORT</h3>
<table>
<thead><tr><th>Code</th></tr></thead>
<tbody>
<tr><td class="code">aanmeld</td></tr>
<tr><td class="code">behandel</td></tr>
</tbody>
</table>
<p class="baseline-note" style="margin-top: 0.9rem; padding-top: 0.7rem;">
Volgt de Treeknormen: aanmeldwachttijd (vóór intake) en behandelwachttijd (na intake).
</p>
</div>
<div class="panel">
<h3>PRIORITEIT</h3>
<table>
<thead><tr><th>Code</th></tr></thead>
<tbody>
<tr><td class="code">spoed</td></tr>
<tr><td class="code">normaal</td></tr>
<tr><td class="code">laag</td></tr>
</tbody>
</table>
</div>
<div class="panel">
<h3>WACHTLIJST_EINDREDEN</h3>
<table>
<thead><tr><th>Code</th></tr></thead>
<tbody>
<tr><td class="code">intake_gestart</td></tr>
<tr><td class="code">behandeling_gestart</td></tr>
<tr><td class="code">doorverwezen</td></tr>
<tr><td class="code">teruggetrokken</td></tr>
</tbody>
</table>
<p class="baseline-note" style="margin-top: 0.9rem; padding-top: 0.7rem;">
Startlijst te bevestigen.
</p>
</div>
<div class="panel">
<h3>ERNST</h3>
<table>
<thead><tr><th>Code</th></tr></thead>
<tbody>
<tr><td class="code">licht</td></tr>
<tr><td class="code">matig</td></tr>
<tr><td class="code">ernstig</td></tr>
</tbody>
</table>
</div>
<div class="panel">
<h3>DIAGNOSE_STATUS</h3>
<table>
<thead><tr><th>Code</th></tr></thead>
<tbody>
<tr><td class="code">actief</td></tr>
<tr><td class="code">in_remissie</td></tr>
<tr><td class="code">opgelost</td></tr>
<tr><td class="code">inactief</td></tr>
</tbody>
</table>
<p class="baseline-note" style="margin-top: 0.9rem; padding-top: 0.7rem;">
Klinische status — losse as naast VERIFICATIESTATUS.
</p>
</div>
<div class="panel">
<h3>VERIFICATIESTATUS</h3>
<table>
<thead><tr><th>Code</th></tr></thead>
<tbody>
<tr><td class="code">werkdiagnose</td></tr>
<tr><td class="code">definitief</td></tr>
</tbody>
</table>
<p class="baseline-note" style="margin-top: 0.9rem; padding-top: 0.7rem;">
Aparte status-as — te bevestigen (zat in het prototype-model maar werd niet gebruikt).
</p>
</div>
<div class="panel">
<h3>PLAN_STATUS</h3>
<table>
<thead><tr><th>Code</th></tr></thead>
<tbody>
<tr><td class="code">concept</td></tr>
<tr><td class="code">actief</td></tr>
<tr><td class="code">afgerond</td></tr>
<tr><td class="code">vervallen</td></tr>
</tbody>
</table>
<p class="baseline-note" style="margin-top: 0.9rem; padding-top: 0.7rem;">
Voorstel — de statusmachine (incl. plaats van cliëntakkoord) is nog een open vraag.
</p>
</div>
<div class="panel">
<h3>DOEL_STATUS</h3>
<table>
<thead><tr><th>Code</th></tr></thead>
<tbody>
<tr><td class="code">niet_gestart</td></tr>
<tr><td class="code">bezig</td></tr>
<tr><td class="code">gehaald</td></tr>
<tr><td class="code">bijgesteld</td></tr>
</tbody>
</table>
</div>
<div class="panel">
<h3>EVALUATIE_TYPE</h3>
<table>
<thead><tr><th>Code</th></tr></thead>
<tbody>
<tr><td class="code">tussentijds</td></tr>
<tr><td class="code">eind</td></tr>
<tr><td class="code">crisis</td></tr>
</tbody>
</table>
</div>
</div>
</section>
<section class="callout">
<h2>Openstaand / geparkeerd</h2>
<ol>
<li>
<b>AGB-validatie tegen een echte Vecozo-tabel</b> — nu vrije invoer, geen validatie.
<div class="why">Geparkeerd tot de declaratie-ronde.</div>
</li>
<li>
<b>Wie mag de aanmelding-status zetten</b> — nog geen rollen/disciplines gemodelleerd.
<div class="why">Komt terug zodra die ronde wordt gedaan.</div>
</li>
<li>
<b>AGB-verplichting per verwijzertype</b> — alleen huisarts (ja) en gemeente (nee) zijn expliciet besproken; de overige vier staan als "te bevestigen" in de tabel hierboven.
</li>
<li>
<b>Verwijsbrief/beschikking is een nudge, geen schema-constraint</b> — leeft in de Protocol Rules Registry (Nudge Engine), niet zichtbaar als FK-verplichting in dit diagram.
</li>
<li>
<b>CLIENTPORTAAL_ACCOUNT is nog een lege huls</b> — alleen de relatie (1-op-0..1 op CLIENT) staat vast.
<div class="why">Authenticatiedetails (e-mail, provider-koppeling, status) volgen in de auth/ADM-ronde.</div>
</li>
<li>
<b>Verwijzersportaal — nog geen besluit, alleen een idee.</b> Mogelijk krijgt een verwijzer ook toegang tot de status van zijn verwijzingen, analoog aan <code>CLIENTPORTAAL_ACCOUNT</code>.
<div class="why">Niet in dit diagram opgenomen — apart onderwerp voor een volgende ronde als het een echte behoefte blijkt.</div>
</li>
<li>
<b>BSN is optioneel op PERSOON</b> — een medewerker is ook een persoon en heeft geen BSN in het systeem nodig. De verplichting hoort bij de rol (voor cliënten: Wabvpz).
<div class="why">Nudge ("cliënt zonder BSN") of rolgebonden eis — te bepalen in de rollenronde.</div>
</li>
<li>
<b>Screeningsbesluit ↔ aanmelding-uitkomst</b> — "geschikt" (screening) en uitkomst "intake" (aanmelding) overlappen mogelijk: één feit of twee?
<div class="why">Open vraag voor een volgende sessie.</div>
</li>
<li>
<b>Startlijsten te bevestigen</b> — AFDELING, ZORGPROGRAMMA, SCREENING_ACTIVITEIT_TYPE, INTAKE_AANLEIDING en INTAKE_UITKOMST zijn afgeleid uit het prototype en nog niet definitief.
</li>
<li>
<b>Kindcheck-structuur</b> — nu gemodelleerd als drie ja/nee-vlaggen + toelichting (zoals het prototype), niet als één uitkomstwaarde.
<div class="why">Bevestigen of dit de juiste registratievorm is (Meldcode-eisen meenemen).</div>
</li>
<li>
<b>Screening vóór intake is een nudge</b> — geen harde volgorde-eis in het schema; protocolregel bij de eerste intake van een episode.
</li>
<li>
<b>Behandelplan: statusmachine, versiebeheer-vorm en verplichting nog open</b> — cliëntakkoord als status of feit (WGBO), nieuw record per versie of muteren met audit, en behandelplan-verplicht-vóór-behandeling als nudge of harde eis.
</li>
<li>
<b>Wanneer ontstaat de ZORGEPISODE precies</b> — pas bij aanmelding-uitkomst "intake", of al bij "wachtlijst"?
<div class="why">Bepaalt waar de behandelwachttijd van een nog-niet-gestarte episode aan hangt.</div>
</li>
<li>
<b>DSM-ICD-mappingtabel heeft een bron nodig</b> — wie levert en onderhoudt de mapping (en de DSM-5-TR-lijst zelf, licentie APA)?
<div class="why">Uitzoeken vóór de schema-baseline; raakt ook de declaratie-ronde.</div>
</li>
<li>
<b>Wachtlijst per afdeling en/of zorgprogramma</b> — nu alleen afdeling gemodelleerd; en de beëindigingsredenen-startlijst is te bevestigen.
</li>
</ol>
</section>
<footer>
Bron: <code>docs/datamodel/datamodel-discovery.md</code> §5.15.5 · volgende stap (§6): statussen +
eigenaarschap ECD/TIP per entiteit vastleggen, daarna de latere rondes (agenda, rapportage &amp;
overdracht, rollen/disciplines) en pas dan de schema-baseline.
</footer>
</div>