z03-assessment-center-data-.../entry.html
Michał Szczepanik d074797f4b
All checks were successful
Server tests / build (push) Successful in 26s
Change "Weitere Diagnostik" from url to (freeform) text input
This addresses a request to make the links optional and instead allow a
text field for the date of diagnostics to indicate that they were
completed.

The field is now a regular text field with no validation, and does not
prescribe any particular format of the input (not even a date). The
field names are left unchanged for backwards compatibility (ie. not
having to change them anywhere else). Practice shows that the URL
feature was not used, so we can change the name in the exported and
aggregated data, for example.
2026-01-27 18:37:18 +01:00

4315 lines
186 KiB
HTML
Raw Permalink 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.

<!-- Uses Bootstrap -->
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
<meta name="description" content="">
<meta name="author" content="">
<title>SFB 1451 - Z03 - Motor Assessment Center - Checkliste</title>
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/css/bootstrap.min.css" rel="stylesheet">
<style>
.required-indicator {
color: lightcoral;
font-weight: bold;
visibility: visible;
}
.group-leader {
background-color: #ececec;
}
.group-leader:checked {
border-color: cornflowerblue;
background-color: cornflowerblue;
}
.group-member:checked {
border-color: lightskyblue;
background-color: lightskyblue;
}
#svg{
position: absolute;
top: 0;
left: 0;
width: 100%;
min-height: 100vp;
z-index: -100;
}
.inm-line{
stroke-width:2px;
stroke:cornflowerblue;
z-index: 100;
}
</style>
</head>
<body class="bg-light" id="main-body">
<svg id="svg">
<line class="inm-line" id="line-enable-acl-k-v"/>
<line class="inm-line" id="line-enable-acl-k-h"/>
<line class="inm-line" id="line-enable-ad-v"/>
<line class="inm-line" id="line-enable-ad-h"/>
<line class="inm-line" id="line-enable-demtect-v"/>
<line class="inm-line" id="line-enable-demtect-h"/>
<line class="inm-line" id="line-enable-euroqol-v"/>
<line class="inm-line" id="line-enable-euroqol-h"/>
<line class="inm-line" id="line-enable-jtt-v"/>
<line class="inm-line" id="line-enable-jtt-h"/>
<line class="inm-line" id="line-enable-dual-task-v"/>
<line class="inm-line" id="line-enable-dual-task-h"/>
<line class="inm-line" id="line-enable-kas-v"/>
<line class="inm-line" id="line-enable-kas-h"/>
<line class="inm-line" id="line-enable-kopss-v"/>
<line class="inm-line" id="line-enable-kopss-h"/>
<line class="inm-line" id="line-enable-moto-test-v"/>
<line class="inm-line" id="line-enable-moto-test-h"/>
<line class="inm-line" id="line-enable-tmt-v"/>
<line class="inm-line" id="line-enable-tmt-h"/>
<line class="inm-line" id="line-enable-tug-v"/>
<line class="inm-line" id="line-enable-tug-h"/>
<line class="inm-line" id="line-enable-psqi-v"/>
<line class="inm-line" id="line-enable-psqi-h"/>
<line class="inm-line" id="line-enable-vosp-v"/>
<line class="inm-line" id="line-enable-vosp-h"/>
<line class="inm-line" id="line-enable-wms-v"/>
<line class="inm-line" id="line-enable-wms-h"/>
</svg>
<div class="container">
<div class="py-5 text-center">
<img class="d-block mx-auto mb-4" src="images/logo-moto-crc-1451.png" alt="" width="350" height="101">
<h2>SFB 1451 Z03 - Motor Assessment Center</h2>
<p class="lead">Angaben und Zeiten</p>
<p class="pt-3">Eine Anleitung (in Englisch) zum digitalen Signieren finden sie <a href="https://rdm.sfb1451.de/z3-db/">hier</a>.</p>
<p>Für Verbesserungsvorschläge und Fehlermeldungen bitte <a href="https://github.com/psychoinformatics-de/sfb1451_data_entry/issues">hier</a> ein neues "Issue" anlegen.</p>
</div>
</div>
<form class="needs-validation" id="entry-form" novalidate>
<input type="text" id="form-data-version" name="form-data-version" style="visibility: hidden;" value="2.4">
<input type="text" id="data-entry-domain" name="data-entry-domain" style="visibility: hidden;" value="de.sfb1451.z03">
<div class="container-lg">
<div class="row">
<div class="col-lg-1"></div>
<div class="col-lg-11">
<h4 class="mb-3">Allgemeine Informationen</h4>
</div>
</div>
<div class="row">
<div class="col-lg-1"></div>
<div class="col-lg-5">
<label for="data-entry-employee">Name Datenerfasser<span class="required-indicator">*</span></label>
</div>
<div class="col-lg-6 entry-value">
<input type="text" class="form-control" id="data-entry-employee" name="data-entry-employee" placeholder="" required>
<div class="invalid-feedback field-validity">
Name des Datenerfassers nicht angegeben.
</div>
</div>
</div>
<div class="row">
<div class="col-lg-1"></div>
<div class="col-lg-5">
<label for="project-code">Projekt-Code<span class="required-indicator">*</span></label>
</div>
<div class="col-lg-6">
<select class="form-select" name="project-code" id="project-code" required>
<option value="">Bitte auswählen</option>
<option value="b2">B2</option>
<option value="b3">B3</option>
<option value="b4">B4</option>
<option value="b5">B5</option>
<option value="c2">C2</option>
<option value="c3">C3</option>
<option value="c4">C4</option>
<option value="c5">C5</option>
<option value="c6">C6</option>
<option value="c7">C7</option>
<option value="x4">X4</option>
<option value="z3">Z3</option>
</select>
<div class="invalid-feedback field-validity">
Projekt-Code nicht ausgewählt.
</div>
</div>
</div>
<div class="row">
<div class="col-lg-1"></div>
<div class="col-lg-5">
<label for="subject-pseudonym">Probanden-Pseudonym<span class="required-indicator">*</span></label>
</div>
<div class="col-lg-6 entry-value">
<input type="text" class="form-control" id="subject-pseudonym" name="subject-pseudonym" placeholder="" required>
<div class="invalid-feedback field-validity">
Probanden Pseudonym nicht angegeben.
</div>
</div>
</div>
<div class="row pt-2">
<div class="col-lg-1"></div>
<div class="col-lg-5">
<label for="date-of-birth">Geburtsdatum<span class="required-indicator">*</span></label>
</div>
<div class="col-lg-6">
<input type="date" class="form-control" id="date-of-birth" name="date-of-birth" required>
<div class="invalid-feedback field-validity">
Geburtsdatum nicht angegeben.
</div>
</div>
</div>
<div class="row pt-1">
<div class="col-lg-1"></div>
<div class="col-lg-5">
<label for="sex-m">Geschlecht<span class="required-indicator">*</span></label>
</div>
<div class="col-lg-6">
<div class="form-check form-check-inline">
<input class="form-check-input group-member" type="radio" name="sex" id="sex-m" value="male" required>
<label class="form-check-label" for="sex-m">m</label>
</div>
<div class="form-check form-check-inline">
<input class="form-check-input group-member" type="radio" name="sex" id="sex-f" value="female" required>
<label class="form-check-label" for="sex-f">w</label>
</div>
<div class="form-check form-check-inline">
<input class="form-check-input group-member" type="radio" name="sex" id="sex-d" value="diverse" required>
<label class="form-check-label" for="sex-d">d</label>
<div class="invalid-feedback field-validity">Geschlecht nicht ausgewählt.</div>
</div>
</div>
</div>
<div class="row pt-2">
<div class="col-lg-1"></div>
<div class="col-lg-5">
<label for="date-of-test">Test-Datum<span class="required-indicator">*</span></label>
</div>
<div class="col-lg-6">
<input type="date" class="form-control" id="date-of-test" name="date-of-test" placeholder="" required>
<div class="invalid-feedback field-validity">
Test-Datum nicht angegeben.
</div>
</div>
</div>
<div class="row pt-1">
<div class="col-lg-1"></div>
<div class="col-lg-5">
<label for="repeated-test">Wiederholte Testung</label>
</div>
<div class="col-lg-6">
<input type="checkbox" class="form-check-input group-member" id="repeated-test" name="repeated-test">
</div>
</div>
<div class="row pt-3">
<div class="col-lg-1"></div>
<div class="col-lg-5">
<label for="subject-group">Probandengruppe<span class="required-indicator">*</span></label>
</div>
<div class="col-lg-6">
<select class="form-select" name="subject-group" id="subject-group" onchange="patientUpdateElement();" required>
<option value="">Bitte auswählen</option>
<option value="healthy" onselect="collapsePatient()">Gesund</option>
<option value="patient" onselect="showCollapsable()">Patient</option>
</select>
<div class="invalid-feedback field-validity">
Probandengruppe nicht ausgewählt.
</div>
</div>
</div>
<div class="collapse pt-3" id="patient-collapse">
<div class="row">
<div class="col-lg-1"></div>
<div class="col-lg-5">
<label for="patient-main-disease">Haupterkrankung<span class="required-indicator">*</span></label>
</div>
<div class="col-lg-6">
<select class="form-select" name="patient-main-disease" id="patient-main-disease" data-inm-collapse-id="patient-collapse" required disabled>
<option value="">Bitte auswählen</option>
<option value="stroke">Schlaganfall</option>
<option value="parkinson">Parkinson</option>
<option value="tic">Tic</option>
<option value="adhd">ADHS</option>
<option value="tic/adhd">Tic/ADHS</option>
<option value="depression">Depression</option>
<option value="alzheimer">Alzheimer</option>
</select>
<div class="invalid-feedback field-validity">
Haupterkrankung nicht ausgewählt.
</div>
</div>
</div>
<div class="row pt-2">
<div class="col-lg-1"></div>
<div class="col-lg-5">
<label for="patient-year-first-symptom">Datum Erstsymptom (soweit bekannt)</label>
</div>
<div class="col-lg-6">
<div class="input-group">
<span class="input-group-text ">Jahr</span>
<input type="number" class="form-control" min="1900" max="2050" id="patient-year-first-symptom" name="patient-year-first-symptom" placeholder="--">
<span class="input-group-text">Monat</span>
<select class="form-select" id="patient-month-first-symptom" name="patient-month-first-symptom">
<option value="">--</option>
<option value="1">Januar</option>
<option value="2">Februar</option>
<option value="3">März</option>
<option value="4">April</option>
<option value="5">Mai</option>
<option value="6">Juni</option>
<option value="7">Juli</option>
<option value="8">August</option>
<option value="9">September</option>
<option value="10">Oktober</option>
<option value="11">November</option>
<option value="12">Dezember</option>
</select>
<span class="input-group-text">Tag</span>
<select class="form-select" id="patient-day-first-symptom" name="patient-day-first-symptom">
<option value="">--</option>
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
<option value="4">4</option>
<option value="5">5</option>
<option value="6">6</option>
<option value="7">7</option>
<option value="8">8</option>
<option value="9">9</option>
<option value="10">10</option>
<option value="11">11</option>
<option value="12">12</option>
<option value="13">13</option>
<option value="14">14</option>
<option value="15">15</option>
<option value="16">16</option>
<option value="17">17</option>
<option value="18">18</option>
<option value="19">19</option>
<option value="20">20</option>
<option value="21">21</option>
<option value="22">22</option>
<option value="23">23</option>
<option value="24">24</option>
<option value="25">25</option>
<option value="26">26</option>
<option value="27">27</option>
<option value="28">28</option>
<option value="29">29</option>
<option value="30">30</option>
<option value="31">31</option>
</select>
</div>
</div>
</div>
<div class="row pt-2">
<div class="col-lg-1"></div>
<div class="col-lg-5">
<label for="patient-year-diagnosis">Datum Diagnose (soweit bekannt)</label>
</div>
<div class="col-lg-6">
<div class="input-group">
<span class="input-group-text ">Jahr</span>
<input type="number" class="form-control" min="1900" max="2050" id="patient-year-diagnosis" name="patient-year-diagnosis" placeholder="--">
<span class="input-group-text">Monat</span>
<select class="form-select" id="patient-month-diagnosis" name="patient-month-diagnosis">
<option value="">--</option>
<option value="1">Januar</option>
<option value="2">Februar</option>
<option value="3">März</option>
<option value="4">April</option>
<option value="5">Mai</option>
<option value="6">Juni</option>
<option value="7">Juli</option>
<option value="8">August</option>
<option value="9">September</option>
<option value="10">Oktober</option>
<option value="11">November</option>
<option value="12">Dezember</option>
</select>
<span class="input-group-text">Tag</span>
<select class="form-select" id="patient-day-diagnosis" name="patient-day-diagnosis">
<option value="">--</option>
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
<option value="4">4</option>
<option value="5">5</option>
<option value="6">6</option>
<option value="7">7</option>
<option value="8">8</option>
<option value="9">9</option>
<option value="10">10</option>
<option value="11">11</option>
<option value="12">12</option>
<option value="13">13</option>
<option value="14">14</option>
<option value="15">15</option>
<option value="16">16</option>
<option value="17">17</option>
<option value="18">18</option>
<option value="19">19</option>
<option value="20">20</option>
<option value="21">21</option>
<option value="22">22</option>
<option value="23">23</option>
<option value="24">24</option>
<option value="25">25</option>
<option value="26">26</option>
<option value="27">27</option>
<option value="28">28</option>
<option value="29">29</option>
<option value="30">30</option>
<option value="31">31</option>
</select>
</div>
</div>
</div>
<div class="row pt-2">
<div class="col-lg-1"></div>
<div class="col-lg-5">
<label for="patient-stronger-impacted-hand-left">Stärker betroffene Hand<span class="required-indicator">*</span></label>
</div>
<div class="col-lg-6">
<div class="form-check form-check-inline">
<input class="form-check-input group-member" type="radio" name="patient-stronger-impacted-hand" id="patient-stronger-impacted-hand-left" data-inm-collapse-id="patient-collapse" value="left" required disabled>
<label class="form-check-label" for="patient-stronger-impacted-hand-left">Links</label>
</div>
<div class="form-check form-check-inline">
<input class="form-check-input group-member" type="radio" name="patient-stronger-impacted-hand" id="patient-stronger-impacted-hand-right" data-inm-collapse-id="patient-collapse" value="right" required disabled>
<label class="form-check-label" for="patient-stronger-impacted-hand-right">Rechts</label>
</div>
<div class="form-check form-check-inline">
<input class="form-check-input group-member" type="radio" name="patient-stronger-impacted-hand" id="patient-stronger-impacted-hand-none" data-inm-collapse-id="patient-collapse" value="none" required disabled>
<label class="form-check-label" for="patient-stronger-impacted-hand-none">Keine</label>
<span class="invalid-feedback field-validity">Stärker betroffene Hand nicht ausgewählt.</span>
</div>
</div>
</div>
</div>
<!-- Motorische Testung: Basisfähigkeiten -->
<div class="row pt-5">
<div class="col-lg-1 form-switch">
<input class="form-check-input group-leader"
type="checkbox"
id="enable-moto-test"
data-inm-switch-group="enable-moto-test-lat;enable-moto-test-ftf;enable-moto-test-mgf"
data-inm-lines="line-enable-moto-test-v;line-enable-moto-test-h"
data-inm-line-end="enable-moto-test-mgf"
checked>
</div>
<div class="col-lg-11">
<h4 class="mb-3">Motorische Testung: Basisfähigkeiten</h4>
</div>
</div>
<div class="row">
<div class="col-lg-1 form-switch">
<input class="form-check-input group-member"
type="checkbox"
id="enable-moto-test-lat"
data-inm-controlled-inputs="laterality-quotient"
checked>
</div>
<div class="col-lg-5">
<label for="laterality-quotient">Händigkeitsfragebogen: Lateralitäts-Quotient</label>
</div>
<div class="col-lg-6 entry-value">
<input type="number" class="form-control" id="laterality-quotient" name="laterality-quotient" min="-100" max="100" step="1" placeholder="-100 - 100">
<div class="invalid-feedback field-validity">
Ganzzahl zwischen -100 und 100 erwartet.
</div>
</div>
</div>
<div class="row pt-2">
<div class="col-lg-1 form-switch">
<input class="form-check-input group-member"
type="checkbox"
id="enable-moto-test-ftf"
data-inm-controlled-inputs="maximum-ftf-left;maximum-ftf-right"
checked>
</div>
<div class="col-lg-5">
<label for="maximum-ftf-left">Maximale Fingertipp-Geschwindigkeit (FTF)</label>
<label class="visually-hidden" for="maximum-ftf-right">Maximale Fingertipp-Geschiwndigkeit (FTF)</label>
</div>
<div class="col-md-3 entry-value">
<div class="input-group has-validation">
<div class="input-group-text">Links</div>
<input type="number" class="form-control" id="maximum-ftf-left" name="maximum-ftf-left" min="0.0" max="10.0" step="any" placeholder="0.0 - 10.0" required>
<div class="input-group-text">Hz&nbsp;</div>
<div class="invalid-feedback field-validity">
Zahlenwert zwischen 0.0 und 10.0 erwartet.
</div>
</div>
</div>
<div class="col-md-3 entry-value">
<div class="input-group has-validation">
<div class="input-group-text">Rechts</div>
<input type="number" class="form-control" id="maximum-ftf-right" name="maximum-ftf-right" min="0.0" max="10.0" step="any" placeholder="0.0 - 10.0" required>
<div class="input-group-text">Hz&nbsp;</div>
<div class="invalid-feedback field-validity">
Zahlenwert zwischen 0.0 und 10.0 erwartet.
</div>
</div>
</div>
</div>
<!--
<div class="row">
<div class="col-md-6 entry-label">
<label class="form-check-label" for="ftf-incorrectly-executed">Kein korrektes Tippen möglich.</label>
</div>
<div class="col-md-6">
<input type="checkbox" class="form-check-input group-member" id="ftf-incorrectly-executed" name="ftf-incorrectly-executed" placeholder="">
</div>
</div>
-->
<div class="row pt-2">
<div class="col-lg-1 form-switch">
<input class="form-check-input group-member"
type="checkbox"
id="enable-moto-test-mgf"
data-inm-controlled-inputs="maximum-gs-left;maximum-gs-right"
checked>
</div>
<div class="col-lg-5">
<label for="maximum-gs-left">Maximale Griffkraft</label>
<label class="visually-hidden" for="maximum-gs-right">Maximale Griffkraft<span class="required-indicator">*</span></label>
</div>
<div class="col-md-3 entry-value">
<div class="input-group has-validation">
<div class="input-group-text">Links</div>
<input type="number" class="form-control" id="maximum-gs-left" name="maximum-gs-left" min="0.0" max="160.0" step="any" placeholder="0.0 - 160.0" required>
<div class="input-group-text">kPa</div>
<div class="invalid-feedback field-validity">
Zahlenwert zwischen 0.0 und 160.0 erwartet.
</div>
</div>
</div>
<div class="col-md-3 entry-value">
<div class="input-group has-validation">
<div class="input-group-text">Rechts</div>
<input type="number" class="form-control" id="maximum-gs-right" name="maximum-gs-right" min="0.0" max="160.0" step="any" placeholder="0.0 - 160.0" required>
<div class="input-group-text">kPa</div>
<div class="invalid-feedback field-validity">
Zahlenwert zwischen 0.0 und 160.0 erwartet.
</div>
</div>
</div>
</div>
<div class="row pt-1">
<div class="col-lg-1 form-switch">
<input class="form-check-input"
type="checkbox"
id="basisfaehig-laterality-check-override">
</div>
<div class="col-lg-5"> Lateralitätsprüfung aufheben </div>
</div>
<div class="row pt-5">
<div class="col-lg-1"></div>
<div class="col-lg-11">
<h4>Motorische Testung: Komplexe Fähigkeiten</h4>
</div>
</div>
<!-- Purdue Pegboard Test -->
<div class="row pt-3">
<div class="col-lg-1 form-switch">
<input class="form-check-input group-leader"
type="checkbox"
id="enable-pegboard-test"
data-inm-controlled-inputs="purdue-pegboard-left;purdue-pegboard-right"
checked>
</div>
<div class="col-lg-11">
<h5 class="h5">Purdue Pegboard Test</h5>
</div>
</div>
<div class="row">
<div class="col-lg-1 form-switch">
<!--
<input class="form-check-input group-member"
type="checkbox"
id="enable-pegboard-test-number"
data-inm-controlled-inputs="purdue-pegboard-left;purdue-pegboard-right"
checked>
-->
</div>
<div class="col-lg-5">
<label for="purdue-pegboard-left">Anzahl gesteckter Stäbchen</label>
<label class="visually-hidden" for="purdue-pegboard-right">Anzahl gesteckter Stäbchen</label>
</div>
<div class="col-lg-3 entry-value">
<div class="input-group has-validation">
<div class="input-group-text">Links</div>
<input type="number" class="form-control" id="purdue-pegboard-left" name="purdue-pegboard-left" min="0" max="25" step="Any" placeholder="0.0 - 25.0" required>
<div class="invalid-feedback field-validity">
Zahlenwert zwischen 0.0 und 25.0 erwartet.
</div>
</div>
</div>
<div class="col-lg-3 entry-value">
<div class="input-group has-validation">
<div class="input-group-text">Rechts</div>
<input type="number" class="form-control" id="purdue-pegboard-right" name="purdue-pegboard-right" min="0" max="25" step="Any" placeholder="0.0 - 25.0" required>
<div class="invalid-feedback field-validity">
Zahlenwert zwischen 0.0 und 25.0 erwartet.
</div>
</div>
</div>
</div>
<div class="row pt-1">
<div class="col-lg-1 form-switch">
<input class="form-check-input"
type="checkbox"
id="purdue-pegboard-laterality-check-override">
</div>
<div class="col-lg-5"> Lateralitätsprüfung aufheben </div>
</div>
<!-- Jebsen Taylor Hand Function Test (JTT) -->
<div class="row pt-3">
<div class="col-lg-1 form-switch">
<input class="form-check-input group-leader"
type="checkbox"
id="enable-jtt"
data-inm-switch-group="enable-jtt-turn-cards;enable-jtt-small-things;enable-jtt-simulated-feeding;enable-jtt-checkers;enable-jtt-llo;enable-jtt-lho;enable-jtt-incorrect"
data-inm-lines="line-enable-jtt-v;line-enable-jtt-h"
data-inm-line-end="enable-jtt-incorrect"
checked>
</div>
<div class="col-lg-11">
<p class="h5">Jebsen Taylor Hand Function Test (JTT)</p>
</div>
</div>
<div class="row">
<div class="col-lg-1 form-switch">
<input class="form-check-input group-member"
type="checkbox"
id="enable-jtt-turn-cards"
data-inm-controlled-inputs="turn-cards-left;turn-cards-right"
checked>
</div>
<div class="col-lg-5">
<label for="turn-cards-left">Karten drehen</label>
<label class="visually-hidden" for="turn-cards-right">Karten drehen</label>
</div>
<div class="col-lg-3 entry-value">
<div class="input-group has-validation">
<div class="input-group-text">Links</div>
<input type="number" class="form-control" id="turn-cards-left" name="turn-cards-left" min="0.0" max="150.0" step="any" placeholder="0.0 - 150.0" required oninput="jttSum();">
<div class="input-group-text">s</div>
<div class="invalid-feedback field-validity">
Zahlenwert zwischen 0.0 und 150.0 erwartet.
</div>
</div>
</div>
<div class="col-lg-3 entry-value">
<div class="input-group has-validation">
<div class="input-group-text">Rechts</div>
<input type="number" class="form-control" id="turn-cards-right" name="turn-cards-right" min="0.0" max="150.0" step="any" placeholder="0.0 - 150.0" required oninput="jttSum();">
<div class="input-group-text">s</div>
<div class="invalid-feedback field-validity">
Zahlenwert zwischen 0.0 und 150.0 erwartet.
</div>
</div>
</div>
</div>
<div class="row">
<div class="col-lg-1 form-switch">
<input class="form-check-input group-member"
type="checkbox"
id="enable-jtt-small-things"
data-inm-controlled-inputs="small-things-left;small-things-right"
checked>
</div>
<div class="col-lg-5">
<label for="small-things-left">Kleine Gegenstände</label>
<label class="visually-hidden" for="small-things-right">Kleine Gegenstände</label>
</div>
<div class="col-lg-3 entry-value">
<div class="input-group has-validation">
<div class="input-group-text">Links</div>
<input type="number" class="form-control" id="small-things-left" name="small-things-left" min="0.0" max="150.0" step="any" placeholder="0.0 - 150.0" required oninput="jttSum();">
<div class="input-group-text">s</div>
<div class="invalid-feedback field-validity">
Zahlenwert zwischen 0.0 und 150.0 erwartet.
</div>
</div>
</div>
<div class="col-lg-3 entry-value">
<div class="input-group has-validation">
<div class="input-group-text">Rechts</div>
<input type="number" class="form-control" id="small-things-right" name="small-things-right" min="0.0" max="150.0" step="any" placeholder="0.0 - 150.0" required oninput="jttSum();">
<div class="input-group-text">s</div>
<div class="invalid-feedback field-validity">
Zahlenwert zwischen 0.0 und 150.0 erwartet.
</div>
</div>
</div>
</div>
<div class="row">
<div class="col-lg-1 form-switch">
<input class="form-check-input group-member"
type="checkbox"
id="enable-jtt-simulated-feeding"
data-inm-controlled-inputs="simulated-feeding-left;simulated-feeding-right"
checked>
</div>
<div class="col-lg-5">
<label for="simulated-feeding-left">Simuliertes Füttern</label>
<label class="visually-hidden" for="simulated-feeding-right">Simuliertes Füttern</label>
</div>
<div class="col-lg-3 entry-value">
<div class="input-group has-validation">
<div class="input-group-text">Links</div>
<input type="number" class="form-control" id="simulated-feeding-left" name="simulated-feeding-left" min="0.0" max="150.0" step="any" placeholder="0.0 - 150.0" required oninput="jttSum();">
<div class="input-group-text">s</div>
<div class="invalid-feedback field-validity">
Zahlenwert zwischen 0.0 und 150.0 erwartet.
</div>
</div>
</div>
<div class="col-lg-3 entry-value">
<div class="input-group has-validation">
<div class="input-group-text">Rechts</div>
<input type="number" class="form-control" id="simulated-feeding-right" name="simulated-feeding-right" min="0.0" max="150.0" step="any" placeholder="0.0 - 150.0" required oninput="jttSum();">
<div class="input-group-text">s</div>
<div class="invalid-feedback field-validity">
Zahlenwert zwischen 0.0 und 150.0 erwartet.
</div>
</div>
</div>
</div>
<div class="row">
<div class="col-lg-1 form-switch">
<input class="form-check-input group-member"
type="checkbox"
id="enable-jtt-checkers"
data-inm-controlled-inputs="checkers-left;checkers-right"
checked>
</div>
<div class="col-lg-5">
<label for="checkers-left">Damesteine stapeln</label>
<label class="visually-hidden" for="checkers-right">Damesteine stapeln</label>
</div>
<div class="col-lg-3 entry-value">
<div class="input-group has-validation">
<div class="input-group-text">Links</div>
<input type="number" class="form-control" id="checkers-left" name="checkers-left" min="0.0" max="150.0" step="any" placeholder="0.0 - 150.0" required oninput="jttSum();">
<div class="input-group-text">s</div>
<div class="invalid-feedback field-validity">
Zahlenwert zwischen 0.0 und 150.0 erwartet.
</div>
</div>
</div>
<div class="col-lg-3 entry-value">
<div class="input-group has-validation">
<div class="input-group-text">Rechts</div>
<input type="number" class="form-control" id="checkers-right" name="checkers-right" min="0.0" max="150.0" step="any" placeholder="0.0 - 150.0" required oninput="jttSum();">
<div class="input-group-text">s</div>
<div class="invalid-feedback field-validity">
Zahlenwert zwischen 0.0 und 150.0 erwartet.
</div>
</div>
</div>
</div>
<div class="row">
<div class="col-lg-1 form-switch">
<input class="form-check-input group-member"
type="checkbox"
id="enable-jtt-llo"
data-inm-controlled-inputs="large-light-things-left;large-light-things-right"
checked>
</div>
<div class="col-lg-5">
<label for="large-light-things-left">Große, leichte Gegenstände</label>
<label class="visually-hidden" for="large-light-things-right">Große, leichte Gegenstände</label>
</div>
<div class="col-lg-3 entry-value">
<div class="input-group has-validation">
<div class="input-group-text">Links</div>
<input type="number" class="form-control" id="large-light-things-left" name="large-light-things-left" min="0.0" max="150.0" step="any" placeholder="0.0 - 150.0" required oninput="jttSum();">
<div class="input-group-text">s</div>
<div class="invalid-feedback field-validity">
Zahlenwert zwischen 0.0 und 150.0 erwartet.
</div>
</div>
</div>
<div class="col-lg-3 entry-value">
<div class="input-group has-validation">
<div class="input-group-text">Rechts</div>
<input type="number" class="form-control" id="large-light-things-right" name="large-light-things-right" min="0.0" max="150.0" step="any" placeholder="0.0 - 150.0" required oninput="jttSum();">
<div class="input-group-text">s</div>
<div class="invalid-feedback field-validity">
Zahlenwert zwischen 0.0 und 150.0 erwartet.
</div>
</div>
</div>
</div>
<div class="row">
<div class="col-lg-1 form-switch">
<input class="form-check-input group-member"
type="checkbox"
id="enable-jtt-lho"
data-inm-controlled-inputs="large-heavy-things-left;large-heavy-things-right"
checked>
</div>
<div class="col-lg-5">
<label for="large-heavy-things-left">Große, schwere Gegenstände</label>
<label class="visually-hidden" for="large-heavy-things-right">Große, schwere Gegenstände</label>
</div>
<div class="col-lg-3 entry-value">
<div class="input-group has-validation">
<div class="input-group-text">Links</div>
<input type="number" class="form-control" id="large-heavy-things-left" name="large-heavy-things-left" min="0.0" max="150.0" step="any" placeholder="0.0 - 150.0" required oninput="jttSum();">
<div class="input-group-text">s</div>
<div class="invalid-feedback field-validity">
Zahlenwert zwischen 0.0 und 150.0 erwartet.
</div>
</div>
</div>
<div class="col-lg-3 entry-value">
<div class="input-group has-validation">
<div class="input-group-text">Rechts</div>
<input type="number" class="form-control" id="large-heavy-things-right" name="large-heavy-things-right" min="0.0" max="150.0" step="any" placeholder="0.0 - 150.0" required oninput="jttSum();">
<div class="input-group-text">s</div>
<div class="invalid-feedback field-validity">
Zahlenwert zwischen 0.0 und 150.0 erwartet.
</div>
</div>
</div>
</div>
<div class="row pt-2">
<div class="col-lg-1"></div>
<div class="col-lg-5">
<label for="jtt-sum-left">JTT Summe</label>
<label class="visually-hidden" for="jtt-sum-right">JTT Summe</label>
</div>
<div class="col-lg-3 entry-value">
<div class="input-group">
<div class="input-group-text">Links</div>
<input type="number" class="form-control" id="jtt-sum-left" name="jtt-sum-left" disabled>
<div class="input-group-text">s</div>
</div>
</div>
<div class="col-lg-3 entry-value">
<div class="input-group">
<div class="input-group-text">Rechts</div>
<input type="number" class="form-control" id="jtt-sum-right" name="jtt-sum-right" disabled>
<div class="input-group-text">s</div>
</div>
</div>
</div>
<div class="row pt-1">
<div class="col-lg-1 form-switch">
<input class="form-check-input group-member"
type="checkbox"
id="enable-jtt-incorrect"
data-inm-controlled-inputs="jtt-incorrectly-executed;jtt-incorrectly-executed-valid"
checked>
</div>
<div class="col-lg-5">
<label class="form-check-label" for="jtt-incorrectly-executed">Aufgaben trotz Zeitüberschreitung durchführbar</label>
</div>
<div class="col-lg-6">
<input type="checkbox" class="form-check-input group-member" id="jtt-incorrectly-executed" name="jtt-incorrectly-executed" placeholder="">
<input type="text" id="jtt-incorrectly-executed-valid" name="jtt-incorrectly-executed-valid" style="visibility: hidden;" value="true">
</div>
</div>
<div class="row pt-1">
<div class="col-lg-1 form-switch">
<input class="form-check-input"
type="checkbox"
id="jtt-laterality-check-override">
</div>
<div class="col-lg-5"> Lateralitätsprüfung aufheben </div>
</div>
<!-- Action Research Arm Test (ARAT) -->
<div class="row pt-5">
<div class="col-lg-1 form-switch">
<input class="form-check-input group-leader"
type="checkbox"
id="enable-arat"
data-inm-controlled-inputs="arat-left;arat-right"
checked>
</div>
<div class="col-lg-11">
<h5>Action Research Arm Test (ARAT)</h5>
</div>
</div>
<div class="row">
<div class="col-lg-1 form-switch">
<!--
<input class="form-check-input group-member"
type="checkbox"
id="enable-arat-score"
data-inm-controlled-inputs="arat-left;arat-right"
checked>
-->
</div>
<div class="col-lg-5">
<label for="arat-left">Punktzahl</label>
<label class="visually-hidden" for="arat-right">Punktzahl</label>
</div>
<div class="col-lg-3 entry-value">
<div class="input-group has-validation">
<div class="input-group-text">Links</div>
<input type="number" class="form-control" id="arat-left" name="arat-left" min="0" max="57" step="1" placeholder="0 - 57" required>
<div class="invalid-feedback field-validity">
Ganzzahl zwischen 0 und 57 erwartet.
</div>
</div>
</div>
<div class="col-lg-3 entry-value">
<div class="input-group has-validation">
<div class="input-group-text">Rechts</div>
<input type="number" class="form-control" id="arat-right" name="arat-right" min="0" max="57" step="1" placeholder="0 - 57" required>
<div class="invalid-feedback field-validity">
Ganzzahl zwischen 0 und 57 erwartet.
</div>
</div>
</div>
</div>
<div class="row pt-1">
<div class="col-lg-1 form-switch">
<input class="form-check-input"
type="checkbox"
id="arat-laterality-check-override">
</div>
<div class="col-lg-5"> Lateralitätsprüfung aufheben </div>
</div>
<!-- Timed Up-and-Go test (TUG) -->
<div class="row pt-3">
<div class="col-lg-1 form-switch">
<input class="form-check-input group-leader"
type="checkbox"
id="enable-tug"
data-inm-switch-group="enable-tug-executed;enable-tug-imagined"
data-inm-lines="line-enable-tug-v;line-enable-tug-h"
data-inm-line-end="enable-tug-imagined"
checked>
</div>
<div class="col-lg-11">
<h5>Timed-Up-and-Go test (TUG)</h5>
</div>
</div>
<div class="row">
<div class="col-lg-1 form-switch">
<input class="form-check-input group-member"
type="checkbox"
id="enable-tug-executed"
data-inm-controlled-inputs="tug-executed;tug-a-incorrectly-executed;tug-a-tools-required;tug-a-incorrectly-executed-valid;tug-a-tools-required-valid"
checked>
</div>
<div class="col-lg-5">
<label for="tug-executed">ausgeführter TUG (aTUG)</label>
</div>
<div class="col-lg-6">
<div class="input-group has-validation">
<input type="number" class="form-control" id="tug-executed" name="tug-executed" min="0" max="60" step="any" placeholder="0.0 - 60.0" required>
<div class="input-group-text">s</div>
<div class="invalid-feedback field-validity">
Zahlenwert zwischen 0.0 und 60.0 erwartet.
</div>
</div>
</div>
</div>
<div class="row">
<div class="col-lg-1"></div>
<div class="col-lg-5">
<label class="form-check-label" for="tug-a-incorrectly-executed">aTUG trotz Zeitüberschreitung durchführbar.</label>
</div>
<div class="col-lg-6">
<input type="checkbox" class="form-check-input group-member" id="tug-a-incorrectly-executed" name="tug-a-incorrectly-executed" placeholder="">
<input type="text" id="tug-a-incorrectly-executed-valid" name="tug-a-incorrectly-executed-valid" style="visibility: hidden;" value="true">
</div>
</div>
<div class="row pt-1">
<div class="col-lg-1"></div>
<div class="col-lg-5">
<label class="form-check-label" for="tug-a-tools-required">aTUG mit Hilfmittel durchführbar.</label>
</div>
<div class="col-lg-6">
<input type="checkbox" class="form-check-input group-member" id="tug-a-tools-required" name="tug-a-tools-required" placeholder="">
<input type="text" id="tug-a-tools-required-valid" name="tug-a-tools-required-valid" style="visibility: hidden;" value="true">
</div>
</div>
<div class="row pt-1">
<div class="col-lg-1 form-switch">
<input class="form-check-input group-member"
type="checkbox"
id="enable-tug-imagined"
data-inm-controlled-inputs="tug-imagined"
checked>
</div>
<div class="col-lg-5">
<label for="tug-imagined">vorgestellter TUG (vTUG)</label>
</div>
<div class="col-lg-6 entry-value">
<div class="input-group has-validation">
<input type="number" class="form-control" id="tug-imagined" name="tug-imagined" min="0" max="60" step="any" placeholder="0.0 - 60.0" required>
<div class="input-group-text">s</div>
<div class="invalid-feedback field-validity">
Zahlenwert zwischen 0.0 und 60.0 erwartet.
</div>
</div>
</div>
</div>
<!--
<div class="row">
<div class="col-md-6 entry-label">
<label class="form-check-label" for="tug-v-not-executable">vTUG nicht durchführbar.</label>
</div>
<div class="col-md-6">
<input type="checkbox" class="form-check-input group-member" id="tug-v-not-executable" name="tug-v-not-executable" placeholder="">
</div>
</div>
-->
<div class="row pt-5">
<div class="col-lg-1"></div>
<div class="col-lg-11">
<h4 class="mb-3">Motorische Testung: Kognitive Fähigkeiten</h4>
</div>
</div>
<!-- Go/Nogo-Task -->
<div class="row pt-2">
<div class="col-lg-1 form-switch">
<input class="form-check-input group-leader"
type="checkbox"
id="enable-go-nogo"
data-inm-controlled-inputs="go-nogo-block-count;go-nogo-correct-answer-time;go-nogo-total-errors;go-nogo-wrong-errors;go-nogo-recognized-errors;go-nogo-recognized-error-time;go-nogo-incorrectly-executed;go-nogo-incorrectly-executed-valid"
checked>
</div>
<div class="col-lg-11">
<h5>Go/Nogo-Task Niessen</h5>
</div>
</div>
<div class="row">
<div class="col-lg-1"></div>
<div class="col-lg-5">
<label for="go-nogo-block-count">Durchgeführte Blöcke</label>
</div>
<div class="col-lg-6 entry-value">
<select class="form-select" name="go-nogo-block-count" id="go-nogo-block-count" required onchange="updateGoNogoBlockCount();">
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
<option value="4">4</option>
<option value="5">5</option>
<option value="6">6</option>
</select>
</div>
</div>
<div class="row pt-1">
<div class="col-lg-1"></div>
<div class="col-lg-5">
<label for="go-nogo-correct-answer-time">Reaktionszeit korrekte Antwort<span class="required-indicator">*</span></label>
</div>
<div class="col-lg-6 entry-value">
<div class="input-group has-validation">
<input type="number" class="form-control" id="go-nogo-correct-answer-time" name="go-nogo-correct-answer-time" min="50.0" max="1200.0" step="any" placeholder="50.0 - 1200.0" required>
<div class="input-group-text">ms</div>
<div class="invalid-feedback field-validity">
Zahlenwert zwischen 50.0 und 1200.0 erwartet.
</div>
</div>
</div>
</div>
<div class="row pt-1">
<div class="col-lg-1"></div>
<div class="col-lg-5">
<label for="go-nogo-total-errors">Anzahl Fehler insgesamt<span class="required-indicator">*</span></label>
</div>
<div class="col-lg-6 entry-value">
<input type="number" class="form-control" id="go-nogo-total-errors" name="go-nogo-total-errors" min="0" max="60" step="1" placeholder="0 - 60" required onchange="checkTotalErrors();">
<div class="invalid-feedback field-validity" id="go-nogo-total-errors-invalid-feedback">
Ganzzahl zwischen 0 und 60 erwartet.
</div>
</div>
</div>
<div class="row pt-1">
<div class="col-lg-1"></div>
<div class="col-lg-5">
<label for="go-nogo-wrong-errors">Anzahl falsche NoGo-Reaktion Fehler<span class="required-indicator">*</span></label>
</div>
<div class="col-lg-6 entry-value">
<input type="number" class="form-control" id="go-nogo-wrong-errors" name="go-nogo-wrong-errors" min="0" max="60" step="1" placeholder="0 - 60" required onchange="checkTotalErrors();">
<div class="invalid-feedback field-validity" id="go-nogo-wrong-errors-invalid-feedback">
Ganzzahl zwischen 0 und 60 erwartet.
</div>
</div>
</div>
<div class="visually-hidden" id="go-nogo-error-display">
<div class="row">
<div class="col-lg-1"></div>
<div class="col-lg-5">
<label for="go-nogo-recognized-errors">Anzahl erkannte Fehler<span class="required-indicator">*</span></label>
</div>
<div class="col-lg-6 entry-value">
<input type="number" class="form-control" id="go-nogo-recognized-errors" name="go-nogo-recognized-errors" min="0" max="60" step="1" placeholder="0 - 60" required onchange="checkRecognizedErrors();">
<div class="invalid-feedback field-validity" id="go-nogo-recognized-errors-invalid-feedback">
Ganzzahl zwischen 0 und 60 erwartet.
</div>
</div>
</div>
<div class="row visually-hidden" id="go-nogo-recognized-error-time-div">
<div class="col-lg-1"></div>
<div class="col-lg-5 entry-label">
<label for="go-nogo-recognized-error-time">Reaktionszeit erkannte Fehler<span class="required-indicator">*</span></label>
</div>
<div class="col-lg-6 entry-value">
<div class="input-group has-validation">
<input type="number" class="form-control" id="go-nogo-recognized-error-time" name="go-nogo-recognized-error-time" min="50.0" max="1000.0" step="any" placeholder="50.0 - 1000.0" required disabled>
<div class="input-group-text">ms</div>
<div class="invalid-feedback field-validity">
Zahlenwert zwischen 50.0 und 1000.0 erwartet.
</div>
</div>
</div>
</div>
</div>
<div class="row pt-1">
<div class="col-lg-1"></div>
<div class="col-lg-5">
<label class="form-check-label" for="go-nogo-incorrectly-executed">Go/Nogo-Task nicht korrekt durchführbar.</label>
</div>
<div class="col-md-6">
<input type="checkbox" class="form-check-input group-member" id="go-nogo-incorrectly-executed" name="go-nogo-incorrectly-executed" placeholder="">
<input type="text" id="go-nogo-incorrectly-executed-valid" name="go-nogo-incorrectly-executed-valid" style="visibility: hidden;" value="true">
</div>
</div>
<!-- New Go/Nogo-Task (Untertest Go/NoGo Variante: 2 aus 5) -->
<div class="row pt-2">
<div class="col-lg-1 form-switch">
<input class="form-check-input group-leader"
type="checkbox"
id="enable-go-nogo-variant"
data-inm-controlled-inputs="go-nogo-variant-hand;go-nogo-variant-reaction-time-median;go-nogo-variant-reaction-time-pct-rank;go-nogo-variant-errors;go-nogo-variant-errors-pct-rank;go-nogo-variant-omissions;go-nogo-variant-omissions-pct-rank"
checked>
</div>
<div class="col-lg-11">
<h5>Untertest Go/NoGo Variante: 2 aus 5</h5>
</div>
</div>
<div class="row">
<div class="col-lg-1"></div>
<div class="col-lg-5">
<label for="go-nogo-variant-hand">Verwendete Hand</label>
</div>
<div class="col-lg-6 entry-value">
<select class="form-select" name="go-nogo-variant-hand" id="go-nogo-variant-hand" required>
<option value="" selected disabled hidden>Bitte auswählen</option>
<option value="left">links</option>
<option value="right">rechts</option>
</select>
</div>
</div>
<div class="row pt-1">
<div class="col-lg-1"></div>
<div class="col-lg-5">
<label for="go-nogo-variant-reaction-time-median">Reaktionszeit Median</label>
</div>
<div class="col-lg-6 entry-value">
<div class="input-group has-validation">
<input id="go-nogo-variant-reaction-time-median" class="form-control" type="number" name="go-nogo-variant-reaction-time-median" min="0" max="4416" step="1" placeholder="0 4416" required>
<div class="input-group-text">ms</div>
<div class="invalid-feedback field-validity">
Ganzzahl zwischen 0 und 4416 erwartet.
</div>
</div>
</div>
</div>
<div class="row pt-1">
<div class="col-lg-1"></div>
<div class="col-lg-5">
<label for="go-nogo-variant-reaction-time-pct-rank">Reaktionszeit Prozentrang</label>
</div>
<div class="col-lg-6 entry-value">
<div class="input-group has-validation">
<input id="go-nogo-variant-reaction-time-pct-rank" class="form-control" type="text" name="go-nogo-variant-reaction-time-pct-rank" pattern="^([<>] )?([1-9]|[1-9][0-9]|100)$" placeholder="(<>) 1 100" required>
<div class="input-group-text">%</div>
<div class="invalid-feedback field-validity">
Ganzzahl zwischen 0 und 100, mit optionalem Präfix "< " oder "> " (einschließlich Leerzeichen), erwartet.
</div>
</div>
</div>
</div>
<div class="row pt-1">
<div class="col-lg-1"></div>
<div class="col-lg-5">
<label for="go-nogo-variant-errors">Fehler Anzahl</label>
</div>
<div class="col-lg-6 entry-value">
<div class="input-group has-validation">
<input id="go-nogo-variant-errors" class="form-control" type="number" name="go-nogo-variant-errors" min="0" max="36" step="1" placeholder="0 36" required>
<div class="invalid-feedback field-validity">
Ganzzahl zwischen 0 und 36 erwartet.
</div>
</div>
</div>
</div>
<div class="row pt-1">
<div class="col-lg-1"></div>
<div class="col-lg-5">
<label for="go-nogo-variant-errors-pct-rank">Fehler Prozentrang</label>
</div>
<div class="col-lg-6 entry-value">
<div class="input-group has-validation">
<input id="go-nogo-variant-errors-pct-rank" class="form-control" type="text" name="go-nogo-variant-errors-pct-rank" pattern="^([<>] )?([1-9]|[1-9][0-9]|100)$" placeholder="(<>) 1 100" required>
<div class="input-group-text">%</div>
<div class="invalid-feedback field-validity">
Ganzzahl zwischen 1 und 100, mit optionalem Präfix "< " oder "> " (einschließlich Leerzeichen), erwartet.
</div>
</div>
</div>
</div>
<div class="row pt-1">
<div class="col-lg-1"></div>
<div class="col-lg-5">
<label for="go-nogo-variant-omissions">Auslassungen Anzahl</label>
</div>
<div class="col-lg-6 entry-value">
<div class="input-group has-validation">
<input id="go-nogo-variant-omissions" class="form-control" type="number" name="go-nogo-variant-omissions" min="0" max="36" step="1" placeholder="0 36" required>
<div class="invalid-feedback field-validity">
Ganzzahl zwischen 0 und 36 erwartet.
</div>
</div>
</div>
</div>
<div class="row pt-1">
<div class="col-lg-1"></div>
<div class="col-lg-5">
<label for="go-nogo-variant-omissions-pct-rank">Auslassungen Prozentrang</label>
</div>
<div class="col-lg-6 entry-value">
<div class="input-group has-validation">
<input id="go-nogo-variant-omissions-pct-rank" class="form-control" type="text" name="go-nogo-variant-omissions-pct-rank" pattern="^([<>] )?([1-9]|[1-9][0-9]|100)$" placeholder="(<>) 1 100" required>
<div class="input-group-text">%</div>
<div class="invalid-feedback field-validity">
Ganzzahl zwischen 1 und 100, mit optionalem Präfix "< " oder "> " (einschließlich Leerzeichen), erwartet.
</div>
</div>
</div>
</div>
<!-- Geteilte Aufmerksamkeit Variante: Doppelaufgabe I -->
<div class="row pt-2">
<div class="col-lg-1 form-switch">
<input class="form-check-input group-leader"
type="checkbox"
id="enable-dual-task"
data-inm-switch-group="enable-dual-task-hand;enable-dual-task-reaction-time-audio;enable-dual-task-reaction-time-visual;enable-dual-task-omissions-audio;enable-dual-task-omissions-visual;enable-dual-task-errors-total;enable-dual-task-omissions-total"
data-inm-lines="line-enable-dual-task-v;line-enable-dual-task-h"
data-inm-line-end="enable-dual-task-omissions-total"
checked>
</div>
<div class="col-lg-11">
<h5>Geteilte Aufmerksamkeit Variante: Doppelaufgabe I</h5>
</div>
</div>
<div class="row">
<div class="col-lg-1 form-switch">
<input class="form-check-input group-member"
type="checkbox"
id="enable-dual-task-hand"
data-inm-controlled-inputs="dual-task-hand"
checked>
</div>
<div class="col-lg-5">
<label for="dual-task-hand">Verwendete Hand</label>
</div>
<div class="col-lg-6 entry-value">
<select class="form-select" name="dual-task-hand" id="dual-task-hand" required>
<option value="" selected disabled hidden>Bitte auswählen</option>
<option value="left">links</option>
<option value="right">rechts</option>
</select>
</div>
</div>
<div class="row">
<div class="col-lg-1 form-switch">
<input class="form-check-input group-member"
type="checkbox"
id="enable-dual-task-reaction-time-audio"
data-inm-controlled-inputs="dual-task-reaction-time-audio-median;dual-task-reaction-time-audio-pct-rank"
checked>
</div>
<div class="col-lg-5">
<label for="dual-task-reaction-time-audio-median">Reaktionszeit auditiv</label>
<label class="visually-hidden" for="dual-task-reaction-time-audio-pct-rank">Reaktionszeit auditiv</label>
</div>
<div class="col-lg-3 entry-value">
<div class="input-group has-validation">
<div class="input-group-text">Median</div>
<input type="number" class="form-control" id="dual-task-reaction-time-audio-median" name="dual-task-reaction-time-audio-median" min="0" max="1000" step="1" placeholder="0 1000" required>
<div class="input-group-text">ms</div>
<div class="invalid-feedback field-validity">
Ganzzahl zwischen 0 und 1000 erwartet.
</div>
</div>
</div>
<div class="col-lg-3 entry-value">
<div class="input-group has-validation">
<div class="input-group-text">Prozentrang</div>
<input type="text" class="form-control" id="dual-task-reaction-time-audio-pct-rank" name="dual-task-reaction-time-audio-pct-rank" pattern="^([<>] )?([1-9]|[1-9][0-9]|100)$" placeholder="(<>) 1 100" required>
<div class="input-group-text">%</div>
<div class="invalid-feedback field-validity">
Ganzzahl zwischen 1 und 100, mit optionalem Präfix "< " oder "> " (einschließlich Leerzeichen), erwartet.
</div>
</div>
</div>
</div>
<div class="row">
<div class="col-lg-1 form-switch">
<input class="form-check-input group-member"
type="checkbox"
id="enable-dual-task-reaction-time-visual"
data-inm-controlled-inputs="dual-task-reaction-time-visual-median;dual-task-reaction-time-visual-pct-rank"
checked>
</div>
<div class="col-lg-5">
<label for="dual-task-reaction-time-visual-median">Reaktionszeit visuell</label>
<label class="visually-hidden" for="dual-task-reaction-time-visual-pct-rank">Reaktionszeit visuell</label>
</div>
<div class="col-lg-3 entry-value">
<div class="input-group has-validation">
<div class="input-group-text">Median</div>
<input type="number" class="form-control" id="dual-task-reaction-time-visual-median" name="dual-task-reaction-time-visual-median" min="0" max="1000" step="1" placeholder="0 1000" required>
<div class="input-group-text">ms</div>
<div class="invalid-feedback field-validity">
Ganzzahl zwischen 0 und 1000 erwartet.
</div>
</div>
</div>
<div class="col-lg-3 entry-value">
<div class="input-group has-validation">
<div class="input-group-text">Prozentrang</div>
<input type="text" class="form-control" id="dual-task-reaction-time-visual-pct-rank" name="dual-task-reaction-time-visual-pct-rank" pattern="^([<>] )?([1-9]|[1-9][0-9]|100)$" placeholder="(<>) 1 100" required>
<div class="input-group-text">%</div>
<div class="invalid-feedback field-validity">
Ganzzahl zwischen 1 und 100, mit optionalem Präfix "< " oder "> " (einschließlich Leerzeichen), erwartet.
</div>
</div>
</div>
</div>
<div class="row">
<div class="col-lg-1 form-switch">
<input class="form-check-input group-member"
type="checkbox"
id="enable-dual-task-omissions-audio"
data-inm-controlled-inputs="dual-task-omissions-audio;dual-task-omissions-audio-pct-rank"
checked>
</div>
<div class="col-lg-5">
<label for="dual-task-omissions-audio">Auslassungen auditiv</label>
<label class="visually-hidden" for="dual-task-omissions-audio-pct-rank">Auslassungen auditiv</label>
</div>
<div class="col-lg-3 entry-value">
<div class="input-group has-validation">
<div class="input-group-text">Anzahl</div>
<input type="number" class="form-control" id="dual-task-omissions-audio" name="dual-task-omissions-audio" min="0" max="16" step="1" placeholder="0 16" required>
<div class="invalid-feedback field-validity">
Ganzzahl zwischen 0 und 16 erwartet.
</div>
</div>
</div>
<div class="col-lg-3 entry-value">
<div class="input-group has-validation">
<div class="input-group-text">Prozentrang</div>
<input type="text" class="form-control" id="dual-task-omissions-audio-pct-rank" name="dual-task-omissions-audio-pct-rank" pattern="^([<>] )?([1-9]|[1-9][0-9]|100)$" placeholder="(<>) 1 100" required>
<div class="input-group-text">%</div>
<div class="invalid-feedback field-validity">
Ganzzahl zwischen 1 und 100, mit optionalem Präfix "< " oder "> " (einschließlich Leerzeichen), erwartet.
</div>
</div>
</div>
</div>
<div class="row">
<div class="col-lg-1 form-switch">
<input class="form-check-input group-member"
type="checkbox"
id="enable-dual-task-omissions-visual"
data-inm-controlled-inputs="dual-task-omissions-visual;dual-task-omissions-visual-pct-rank"
checked>
</div>
<div class="col-lg-5">
<label for="dual-task-omissions-visual">Auslassungen visuell</label>
<label class="visually-hidden" for="dual-task-omissions-visual-pct-rank">Auslassungen visuell</label>
</div>
<div class="col-lg-3 entry-value">
<div class="input-group has-validation">
<div class="input-group-text">Anzahl</div>
<input type="number" class="form-control" id="dual-task-omissions-visual" name="dual-task-omissions-visual" min="0" max="17" step="1" placeholder="0 17" required>
<div class="invalid-feedback field-validity">
Ganzzahl zwischen 0 und 17 erwartet.
</div>
</div>
</div>
<div class="col-lg-3 entry-value">
<div class="input-group has-validation">
<div class="input-group-text">Prozentrang</div>
<input type="text" class="form-control" id="dual-task-omissions-visual-pct-rank" name="dual-task-omissions-visual-pct-rank" pattern="^([<>] )?([1-9]|[1-9][0-9]|100)$" placeholder="(<>) 1 100" required>
<div class="input-group-text">%</div>
<div class="invalid-feedback field-validity">
Ganzzahl zwischen 1 und 100, mit optionalem Präfix "< " oder "> " (einschließlich Leerzeichen), erwartet.
</div>
</div>
</div>
</div>
<div class="row">
<div class="col-lg-1 form-switch">
<input class="form-check-input group-member"
type="checkbox"
id="enable-dual-task-errors-total"
data-inm-controlled-inputs="dual-task-errors-total;dual-task-errors-total-pct-rank"
checked>
</div>
<div class="col-lg-5">
<label for="dual-task-errors-total">Fehler gesamt</label>
<label class="visually-hidden" for="dual-task-errors-total-pct-rank">Fehler gesamt</label>
</div>
<div class="col-lg-3 entry-value">
<div class="input-group has-validation">
<div class="input-group-text">Anzahl</div>
<input type="number" class="form-control" id="dual-task-errors-total" name="dual-task-errors-total" min="0" max="267" step="1" placeholder="0 267" required>
<div class="invalid-feedback field-validity">
Ganzzahl zwischen 0 und 267 erwartet.
</div>
</div>
</div>
<div class="col-lg-3 entry-value">
<div class="input-group has-validation">
<div class="input-group-text">Prozentrang</div>
<input type="text" class="form-control" id="dual-task-errors-total-pct-rank" name="dual-task-errors-total-pct-rank" pattern="^([<>] )?([1-9]|[1-9][0-9]|100)$" placeholder="(<>) 1 100" required>
<div class="input-group-text">%</div>
<div class="invalid-feedback field-validity">
Ganzzahl zwischen 1 und 100, mit optionalem Präfix "< " oder "> " (einschließlich Leerzeichen), erwartet.
</div>
</div>
</div>
</div>
<div class="row">
<div class="col-lg-1 form-switch">
<input class="form-check-input group-member"
type="checkbox"
id="enable-dual-task-omissions-total"
data-inm-controlled-inputs="dual-task-omissions-total;dual-task-omissions-total-pct-rank"
checked>
</div>
<div class="col-lg-5">
<label for="dual-task-omissions-total">Auslassungen gesamt</label>
<label class="visually-hidden" for="dual-task-omissions-total-pct-rank">Auslassungen gesamt</label>
</div>
<div class="col-lg-3 entry-value">
<div class="input-group has-validation">
<div class="input-group-text">Anzahl</div>
<input type="number" class="form-control" id="dual-task-omissions-total" name="dual-task-omissions-total" min="0" max="33" step="1" placeholder="0 33" required>
<div class="invalid-feedback field-validity">
Ganzzahl zwischen 0 und 33 erwartet.
</div>
</div>
</div>
<div class="col-lg-3 entry-value">
<div class="input-group has-validation">
<div class="input-group-text">Prozentrang</div>
<input type="text" class="form-control" id="dual-task-omissions-total-pct-rank" name="dual-task-omissions-total-pct-rank" pattern="^([<>] )?([1-9]|[1-9][0-9]|100)$" placeholder="(<>) 1 100" required>
<div class="input-group-text">%</div>
<div class="invalid-feedback field-validity">
Ganzzahl zwischen 1 und 100, mit optionalem Präfix "< " oder "> " (einschließlich Leerzeichen), erwartet.
</div>
</div>
</div>
</div>
<!-- Cologne Apraxie Screening (KAS) -->
<div class="row pt-4">
<div class="col-lg-1 form-switch">
<input class="form-check-input group-leader"
type="checkbox"
id="enable-kas"
data-inm-switch-group="enable-kas-pbf;enable-kas-pah;enable-kas-ipf;enable-kas-iah"
data-inm-lines="line-enable-kas-v;line-enable-kas-h"
data-inm-line-end="enable-kas-iah"
checked>
</div>
<div class="col-lg-11">
<h5>Cologne Apraxie Screening (KAS)</h5>
</div>
</div>
<div class="row">
<div class="col-lg-1 form-switch">
<input class="form-check-input group-member"
type="checkbox"
id="enable-kas-pbf"
data-inm-controlled-inputs="kas-pantomime-bukko-facial"
checked>
</div>
<div class="col-lg-5">
<label for="kas-pantomime-bukko-facial">Pantomime: Bukko-Facial</label>
</div>
<div class="col-lg-6 entry-value">
<input type="number" class="form-control" id="kas-pantomime-bukko-facial" name="kas-pantomime-bukko-facial" min="0" max="20" step="1" placeholder="0 - 20" required oninput="kasSum();">
<div class="invalid-feedback field-validity">
Ganzzahl zwischen 0 und 20 erwartet.
</div>
</div>
</div>
<div class="row">
<div class="col-lg-1 form-switch">
<input class="form-check-input group-member"
type="checkbox"
id="enable-kas-pah"
data-inm-controlled-inputs="kas-pantomime-arm-hand"
checked>
</div>
<div class="col-lg-5">
<label for="kas-pantomime-arm-hand">Pantomime: Arm-Hand</label>
</div>
<div class="col-md-6 entry-value">
<input type="number" class="form-control" id="kas-pantomime-arm-hand" name="kas-pantomime-arm-hand" min="0" max="20" step="1" placeholder="0 - 20" required oninput="kasSum();">
<div class="invalid-feedback field-validity">
Ganzzahl zwischen 0 und 20 erwartet.
</div>
</div>
</div>
<div class="row">
<div class="col-lg-1 form-switch">
<input class="form-check-input group-member"
type="checkbox"
id="enable-kas-ipf"
data-inm-controlled-inputs="kas-imitation-bukko-facial"
checked>
</div>
<div class="col-lg-5">
<label for="kas-imitation-bukko-facial">Imitation: Bukko-Facial</label>
</div>
<div class="col-lg-6 entry-value">
<input type="number" class="form-control" id="kas-imitation-bukko-facial" name="kas-imitation-bukko-facial" min="0" max="20" step="1" placeholder="0 - 20" required oninput="kasSum();">
<div class="invalid-feedback field-validity">
Ganzzahl zwischen 0 und 20 erwartet.
</div>
</div>
</div>
<div class="row">
<div class="col-lg-1 form-switch">
<input class="form-check-input group-member"
type="checkbox"
id="enable-kas-iah"
data-inm-controlled-inputs="kas-imitation-arm-hand"
checked>
</div>
<div class="col-lg-5">
<label for="kas-imitation-arm-hand">Imitation: Arm-Hand</label>
</div>
<div class="col-lg-6 entry-value">
<input type="number" class="form-control" id="kas-imitation-arm-hand" name="kas-imitation-arm-hand" min="0" max="20" step="1" placeholder="0 - 20" required oninput="kasSum();">
<div class="invalid-feedback field-validity">
Ganzzahl zwischen 0 und 20 erwartet.
</div>
</div>
</div>
<div class="row pt-2">
<div class="col-lg-1"></div>
<div class="col-lg-5">
<label for="kas-sum">KAS Summe</label>
</div>
<div class="col-lg-6 entry-value">
<input type="number" class="form-control" id="kas-sum" name="kas-sum" disabled>
</div>
</div>
<div class="row pt-5">
<div class="col-lg-1">
</div>
<div class="col-lg-11">
<h4>Neuropsychologische/kognitive Testung</h4>
</div>
</div>
<!-- Kölner neuropsychologisches Screening für Schlaganfallpatienten (KöpSS) -->
<div class="row pt-3">
<div class="col-lg-1 form-switch">
<input class="form-check-input group-leader"
type="checkbox"
id="enable-kopss"
data-inm-switch-group="enable-kopss-affect;enable-kopss-bo;enable-kopss-calc;enable-kopss-epa;enable-kopss-memory;enable-kopss-orientation;enable-kopss-praxie;enable-kopss-speech;enable-kopss-vsp"
data-inm-lines="line-enable-kopss-v;line-enable-kopss-h"
data-inm-line-end="enable-kopss-bo"
checked>
</div>
<div class="col-lg-11">
<h5>Kölner neuropsychologisches Screening für Schlaganfallpatienten (KöpSS)</h5>
</div>
</div>
<div class="row">
<div class="col-lg-1 entry-label">
</div>
<div class="col-lg-5 entry-label">
</div>
<div class="col-md-6 entry-value">
<div style="text-align: center;">Gewichteter Domänenwert</div>
</div>
</div>
<div class="row">
<div class="col-lg-1 form-switch">
<input class="form-check-input group-member"
type="checkbox"
id="enable-kopss-orientation"
data-inm-controlled-inputs="kopss-orientation"
checked>
</div>
<div class="col-lg-5">
<label for="kopss-orientation">Orientierung</label>
</div>
<div class="col-lg-6 entry-value">
<input type="number" class="form-control" id="kopss-orientation" name="kopss-orientation" min="0" max="9" step="1" placeholder="0 - 9" required oninput="kopssSum();" data-inm-collapse-id="kopss-collapse">
<div class="invalid-feedback field-validity">
Ganzzahl zwischen 0 und 9 erwartet.
</div>
</div>
</div>
<div class="row">
<div class="col-lg-1 form-switch">
<input class="form-check-input group-member"
type="checkbox"
id="enable-kopss-speech"
data-inm-controlled-inputs="kopss-speech"
checked>
</div>
<div class="col-lg-5">
<label for="kopss-speech">Sprache</label>
</div>
<div class="col-lg-6">
<input type="number" class="form-control" id="kopss-speech" name="kopss-speech" min="0.0" max="18.0" step="any" placeholder="0.0 - 18.0" required oninput="kopssSum();" data-inm-collapse-id="kopss-collapse">
<div class="invalid-feedback field-validity">
Wert zwischen 0.0 und 18.0 erwartet.
</div>
</div>
</div>
<div class="row">
<div class="col-lg-1 form-switch">
<input class="form-check-input group-member"
type="checkbox"
id="enable-kopss-praxie"
data-inm-controlled-inputs="kopss-praxie"
checked>
</div>
<div class="col-lg-5">
<label for="kopss-praxie">Praxie</label>
</div>
<div class="col-lg-6 entry-value">
<input type="number" class="form-control" id="kopss-praxie" name="kopss-praxie" min="0" max="18" step="1" placeholder="0 - 18" required oninput="kopssSum();" data-inm-collapse-id="kopss-collapse">
<div class="invalid-feedback field-validity">
Ganzzahl zwischen 0 und 18 erwartet.
</div>
</div>
</div>
<div class="row">
<div class="col-lg-1 form-switch">
<input class="form-check-input group-member"
type="checkbox"
id="enable-kopss-vsp"
data-inm-controlled-inputs="kopss-visual-spatial-performance"
checked>
</div>
<div class="col-lg-5">
<label for="kopss-visual-spatial-performance">Visuell Räumliche Leistung</label>
</div>
<div class="col-lg-6 entry-value">
<input type="number" class="form-control" id="kopss-visual-spatial-performance" name="kopss-visual-spatial-performance" min="0" max="17" step="1" placeholder="0 - 17" required oninput="kopssSum();" data-inm-collapse-id="kopss-collapse">
<div class="invalid-feedback field-validity">
Ganzzahl zwischen 0 und 17 erwartet.
</div>
</div>
</div>
<div class="row">
<div class="col-lg-1 form-switch">
<input class="form-check-input group-member"
type="checkbox"
id="enable-kopss-calc"
data-inm-controlled-inputs="kopss-calculating"
checked>
</div>
<div class="col-lg-5">
<label for="kopss-calculating">Rechnen</label>
</div>
<div class="col-lg-6 entry-value">
<input type="number" class="form-control" id="kopss-calculating" name="kopss-calculating" min="0" max="8" step="1" placeholder="0 - 8" required oninput="kopssSum();" data-inm-collapse-id="kopss-collapse">
<div class="invalid-feedback field-validity">
Ganzzahl zwischen 0 und 8 erwartet.
</div>
</div>
</div>
<div class="row">
<div class="col-lg-1 form-switch">
<input class="form-check-input group-member"
type="checkbox"
id="enable-kopss-epa"
data-inm-controlled-inputs="kopss-executive-performance"
checked>
</div>
<div class="col-lg-5">
<label for="kopss-executive-performance">Exekutive Leistung/Aufmerksamkeit</label>
</div>
<div class="col-lg-6 entry-value">
<input type="number" class="form-control" id="kopss-executive-performance" name="kopss-executive-performance" min="0.0" max="18.0" step="any" placeholder="0.0 - 18.0" required oninput="kopssSum();" data-inm-collapse-id="kopss-collapse">
<div class="invalid-feedback field-validity">
Wert zwischen 0.0 und 18.0 erwartet.
</div>
</div>
</div>
<div class="row">
<div class="col-lg-1 form-switch">
<input class="form-check-input group-member"
type="checkbox"
id="enable-kopss-memory"
data-inm-controlled-inputs="kopss-memory"
checked>
</div>
<div class="col-lg-5">
<label for="kopss-memory">Gedächtnis</label>
</div>
<div class="col-lg-6 entry-value">
<input type="number" class="form-control" id="kopss-memory" name="kopss-memory" min="0" max="20" step="1" placeholder="0 - 20" required oninput="kopssSum();" data-inm-collapse-id="kopss-collapse">
<div class="invalid-feedback field-validity">
Ganzzahl zwischen 0 und 20 erwartet.
</div>
</div>
</div>
<div class="row pt-2">
<div class="col-lg-1 form-switch">
</div>
<div class="col-lg-5">
<label for="kopss-sum">KöpSS Summe</label>
</div>
<div class="col-lg-6 entry-value">
<input type="number" class="form-control" id="kopss-sum" name="kopss-sum" disabled>
</div>
</div>
<div class="row pt-2">
<div class="col-lg-1 form-switch">
<input class="form-check-input group-member"
type="checkbox"
id="enable-kopss-affect"
data-inm-controlled-inputs="kopss-affect"
checked>
</div>
<div class="col-lg-5">
<label for="kopss-affect">Affekt</label>
</div>
<div class="col-lg-6 entry-value">
<input type="number" class="form-control" id="kopss-affect" name="kopss-affect" min="0" max="9" step="1" placeholder="0 - 9" required data-inm-collapse-id="kopss-collapse">
<div class="invalid-feedback field-validity">
Ganzzahl zwischen 0 und 9 erwartet.
</div>
</div>
</div>
<div class="row">
<div class="col-lg-1 form-switch">
<input class="form-check-input group-member"
type="checkbox"
id="enable-kopss-bo"
data-inm-controlled-inputs="kopss-behavior-observation"
checked>
</div>
<div class="col-lg-5">
<label for="kopss-behavior-observation">Verhaltensbeobachtung</label>
</div>
<div class="col-lg-6 entry-value">
<input type="number" class="form-control" id="kopss-behavior-observation" name="kopss-behavior-observation" min="0" max="9" step="1" placeholder="0 - 9" required data-inm-collapse-id="kopss-collapse">
<div class="invalid-feedback field-validity">
Ganzzahl zwischen 0 und 9 erwartet.
</div>
</div>
</div>
<!-- Aphasia Check Liste (short version, ACL-K) -->
<div class="row pt-5">
<div class="col-lg-1 form-switch">
<input class="form-check-input group-leader"
type="checkbox"
id="enable-acl-k"
data-inm-switch-group="enable-acl-k-reading;enable-acl-k-cst;enable-acl-k-st;enable-acl-k-communication"
data-inm-lines="line-enable-acl-k-v;line-enable-acl-k-h"
data-inm-line-end="enable-acl-k-communication"
checked>
</div>
<div class="col-lg-11">
<h5>Aphasia Check Liste (short version, ACL-K)</h5>
</div>
</div>
<div class="row">
<div class="col-lg-1">
</div>
<div class="col-lg-5">
</div>
<div class="col-lg-6 entry-value">
<div style="text-align: center;">Transformierte Punktzahl</div>
</div>
</div>
<div class="row">
<div class="col-lg-1 form-switch">
<input class="form-check-input group-member"
type="checkbox"
id="enable-acl-k-reading"
data-inm-controlled-inputs="acl-k-loud-reading"
checked>
</div>
<div class="col-lg-5">
<label for="acl-k-loud-reading">Lautes Lesen</label>
</div>
<div class="col-lg-6 entry-value">
<input type="number" class="form-control" id="acl-k-loud-reading" name="acl-k-loud-reading" min="0.0" max="9.0" step="any" placeholder="0.0 - 9.0" required oninput="aclKSum();">
<div class="invalid-feedback field-validity">
Zahlenwert zwischen 0.0 und 9.0 erwartet.
</div>
</div>
</div>
<div class="row">
<div class="col-lg-1 form-switch">
<input class="form-check-input group-member"
type="checkbox"
id="enable-acl-k-cst"
data-inm-controlled-inputs="acl-k-color-form-test"
checked>
</div>
<div class="col-lg-5">
<label for="acl-k-color-form-test">Farb-Figur-Test</label>
</div>
<div class="col-lg-6 entry-value">
<input type="number" class="form-control" id="acl-k-color-form-test" name="acl-k-color-form-test" min="0" max="12" step="1" placeholder="0 - 12" required oninput="aclKSum();">
<div class="invalid-feedback field-validity">
Ganzzahl zwischen 0 und 12 erwartet.
</div>
</div>
</div>
<div class="row">
<div class="col-lg-1 form-switch">
<input class="form-check-input group-member"
type="checkbox"
id="enable-acl-k-st"
data-inm-controlled-inputs="acl-k-supermarket-task"
checked>
</div>
<div class="col-lg-5">
<label for="acl-k-supermarket-task">Supermarktaufgabe</label>
</div>
<div class="col-lg-6 entry-value">
<input type="number" class="form-control" id="acl-k-supermarket-task" name="acl-k-supermarket-task" min="0" max="10" step="1" placeholder="0 - 10" required oninput="aclKSum();">
<div class="invalid-feedback field-validity">
Ganzzahl zwischen 0 und 10 erwartet.
</div>
</div>
</div>
<div class="row">
<div class="col-lg-1 form-switch">
<input class="form-check-input group-member"
type="checkbox"
id="enable-acl-k-communication"
data-inm-controlled-inputs="acl-k-communication-ability"
checked>
</div>
<div class="col-lg-5">
<label for="acl-k-communication-ability">Kommunikationsfähigkeit</label>
</div>
<div class="col-lg-6 entry-value">
<input type="number" class="form-control" id="acl-k-communication-ability" name="acl-k-communication-ability" min="0" max="9" step="1" placeholder="0 - 9" required oninput="aclKSum();">
<div class="invalid-feedback field-validity">
Ganzzahl zwischen 0 und 9 erwartet.
</div>
</div>
</div>
<div class="row pt-2">
<div class="col-lg-1"></div>
<div class="col-lg-5">
<label for="acl-k-sum">ACL-K Summe</label>
</div>
<div class="col-lg-6 entry-value">
<input type="number" class="form-control" id="acl-k-sum" name="acl-k-sum" disabled>
</div>
</div>
<!-- Beck Depression Inventory (BDI II) -->
<div class="row pt-5">
<div class="col-lg-1 form-switch">
<input class="form-check-input group-leader"
type="checkbox"
id="enable-bdi-ii"
data-inm-controlled-inputs="bdi-ii-score"
checked>
</div>
<div class="col-lg-11">
<h5>Beck Depression Inventory (BDI II)</h5>
</div>
</div>
<div class="row">
<div class="col-lg-1 form-switch">
<!--
<input class="form-check-input group-member"
type="checkbox"
id="enable-bdi-ii-score"
data-inm-controlled-inputs="bdi-ii-score"
checked>
-->
</div>
<div class="col-lg-5">
<label for="bdi-ii-score">Punktzahl</label>
</div>
<div class="col-md-6 entry-value">
<input type="number" class="form-control" id="bdi-ii-score" name="bdi-ii-score" min="0" max="63" step="1" placeholder="0 - 63" required>
<div class="invalid-feedback field-validity">
Ganzzahl zwischen 0 und 63 erwartet.
</div>
</div>
</div>
<!-- Montgomery-Asberg Depression rating Scale (MADRS) -->
<div class="row pt-5">
<div class="col-lg-1 form-switch">
<input class="form-check-input group-leader"
type="checkbox"
id="enable-madrs"
data-inm-controlled-inputs="madrs-score"
checked>
</div>
<div class="col-lg-11">
<h5>Montgomery-Asberg Depression rating Scale (MADRS)</h5>
</div>
</div>
<div class="row">
<div class="col-lg-1 form-switch">
<!--
<input class="form-check-input group-member"
type="checkbox"
id="enable-madrs-score"
data-inm-controlled-inputs="madrs-score"
checked>
-->
</div>
<div class="col-lg-5">
<label for="madrs-score">Punktzahl</label>
</div>
<div class="col-lg-6 entry-value">
<input type="number" class="form-control" id="madrs-score" name="madrs-score" min="0" max="60" step="1" placeholder="0 - 60" required>
<div class="invalid-feedback field-validity">
Ganzzahl zwischen 0 und 60 erwartet.
</div>
</div>
</div>
<!-- Wechsler Memory Scale (WMS) - logical memory -->
<div class="row pt-4">
<div class="col-lg-1 form-switch">
<input class="form-check-input group-leader"
type="checkbox"
id="enable-wms"
data-inm-switch-group="enable-logical-memory-variant;enable-logical-memory-immediate-recall;enable-logical-memory-immediate-recall-scaled;enable-logical-memory-delayed-recall;enable-logical-memory-delayed-recall-scaled"
data-inm-lines="line-enable-wms-v;line-enable-wms-h"
data-inm-line-end="enable-logical-memory-delayed-recall-scaled"
checked>
</div>
<div class="col-lg-11">
<h5>Wechsler Memory Scale (WMS) logisches Gedächtnis</h5>
</div>
</div>
<div class="row pt-1">
<div class="col-lg-1 form-switch">
<input class="form-check-input group-member"
type="checkbox"
id="enable-logical-memory-variant"
data-inm-controlled-inputs="logical-memory-variant-ab;logical-memory-variant-bc"
checked>
</div>
<div class="col-lg-5">
<label for="logical-memory-variant-ab">Variante</label>
<label class="visually-hidden" for="logical-memory-variant-bc">Variante</label>
</div>
<div class="col-lg-6">
<div class="form-check form-check-inline">
<input class="form-check-input group-member" type="radio" name="logical-memory-variant" id="logical-memory-variant-ab" value="A+B" required onchange="updateWechslerRanges();">
<label class="form-check-label" for="logical-memory-variant-ab">A+B (≥65 years)</label>
</div>
<div class="form-check form-check-inline">
<input class="form-check-input group-member" type="radio" name="logical-memory-variant" id="logical-memory-variant-bc" value="B+C" required onchange="updateWechslerRanges();">
<label class="form-check-label" for="logical-memory-variant-bc">B+C (1664 years)</label>
<div class="invalid-feedback field-validity">Variante nicht ausgewählt.</div>
</div>
</div>
</div>
<div class="row pt-1">
<div class="col-lg-1 form-switch">
<input class="form-check-input group-member"
type="checkbox"
id="enable-logical-memory-immediate-recall"
data-inm-controlled-inputs="logical-memory-immediate-recall"
checked>
</div>
<div class="col-lg-5">
<label for="logical-memory-immediate-recall">Unmittelbare Wiedergabe: Summenwert (Rohwert)</label>
</div>
<div class="col-lg-6 entry-value">
<div class="input-group has-validation">
<input type="number" class="form-control" id="logical-memory-immediate-recall" name="logical-memory-immediate-recall" min="0" max="53" step="1" placeholder="0 50/53" required>
<div class="invalid-feedback field-validity" id="logical-memory-immediate-recall-feedback">
Ganzzahl zwischen 0 und 50 oder 53 erwartet.
</div>
</div>
</div>
</div>
<div class="row pt-1">
<div class="col-lg-1 form-switch">
<input class="form-check-input group-member"
type="checkbox"
id="enable-logical-memory-immediate-recall-scaled"
data-inm-controlled-inputs="logical-memory-immediate-recall-scaled"
checked>
</div>
<div class="col-lg-5">
<label for="logical-memory-immediate-recall-scaled">Unmittelbare Wiedergabe: Wertpunkte</label>
</div>
<div class="col-lg-6 entry-value">
<div class="input-group has-validation">
<input type="number" class="form-control" id="logical-memory-immediate-recall-scaled" name="logical-memory-immediate-recall-scaled" min="1" max="19" step="1" placeholder="1 19" required>
<div class="invalid-feedback field-validity">
Ganzzahl zwischen 1 und 19 erwartet.
</div>
</div>
</div>
</div>
<div class="row pt-1">
<div class="col-lg-1 form-switch">
<input class="form-check-input group-member"
type="checkbox"
id="enable-logical-memory-delayed-recall"
data-inm-controlled-inputs="logical-memory-delayed-recall"
checked>
</div>
<div class="col-lg-5">
<label for="logical-memory-delayed-recall">Abruf nach Verzögerung: Summenwert (Rohwert)</label>
</div>
<div class="col-lg-6 entry-value">
<div class="input-group has-validation">
<input type="number" class="form-control" id="logical-memory-delayed-recall" name="logical-memory-delayed-recall" min="0" max="50" step="1" placeholder="0 50/39" required>
<div class="invalid-feedback field-validity" id="logical-memory-delayed-recall-feedback">
Ganzzahl zwischen 0 und 50 oder 39 erwartet.
</div>
</div>
</div>
</div>
<div class="row pt-1">
<div class="col-lg-1 form-switch">
<input class="form-check-input group-member"
type="checkbox"
id="enable-logical-memory-delayed-recall-scaled"
data-inm-controlled-inputs="logical-memory-delayed-recall-scaled"
checked>
</div>
<div class="col-lg-5">
<label for="logical-memory-delayed-recall-scaled">Abruf nach Verzögerung: Wertpunkte</label>
</div>
<div class="col-lg-6 entry-value">
<div class="input-group has-validation">
<input type="number" class="form-control" id="logical-memory-delayed-recall-scaled" name="logical-memory-delayed-recall-scaled" min="1" max="19" step="1" placeholder="1 19" required>
<div class="invalid-feedback field-validity">
Ganzzahl zwischen 1 und 19 erwartet.
</div>
</div>
</div>
</div>
<!-- DemTect -->
<div class="row pt-4">
<div class="col-lg-1 form-switch">
<input class="form-check-input group-leader"
type="checkbox"
id="enable-demtect"
data-inm-switch-group="enable-demtect-wordlist;enable-demtect-cn;enable-demtect-supermarket;enable-demtect-nr;enable-demtect-recall"
data-inm-lines="line-enable-demtect-v;line-enable-demtect-h"
data-inm-line-end="enable-demtect-recall"
checked>
</div>
<div class="col-lg-11">
<h5>DemTect</h5>
</div>
</div>
<div class="row">
<div class="col-lg-1">
</div>
<div class="col-lg-5">
</div>
<div class="col-md-6 entry-value">
<div style="text-align: center;">Punkte laut Umrechnungstabelle</div>
</div>
</div>
<div class="row">
<div class="col-lg-1 form-switch">
<input class="form-check-input group-member"
type="checkbox"
id="enable-demtect-wordlist"
data-inm-controlled-inputs="demtect-wordlist"
checked>
</div>
<div class="col-lg-5">
<label for="demtect-wordlist">Wortliste</label>
</div>
<div class="col-md-6 entry-value">
<input type="number" class="form-control" id="demtect-wordlist" name="demtect-wordlist" min="0" max="3" step="1" placeholder="0 - 3" required oninput="demtectSum();">
<div class="invalid-feedback field-validity">
Ganzzahl zwischen 0 und 3 erwartet.
</div>
</div>
</div>
<div class="row">
<div class="col-lg-1 form-switch">
<input class="form-check-input group-member"
type="checkbox"
id="enable-demtect-cn"
data-inm-controlled-inputs="demtect-convert-numbers"
checked>
</div>
<div class="col-lg-5">
<label for="demtect-convert-numbers">Zahlen umwandeln</label>
</div>
<div class="col-lg-6 entry-value">
<input type="number" class="form-control" id="demtect-convert-numbers" name="demtect-convert-numbers" min="0" max="3" step="1" placeholder="0 - 3" required oninput="demtectSum();">
<div class="invalid-feedback field-validity">
Ganzzahl zwischen 0 und 3 erwartet.
</div>
</div>
</div>
<div class="row">
<div class="col-lg-1 form-switch">
<input class="form-check-input group-member"
type="checkbox"
id="enable-demtect-supermarket"
data-inm-controlled-inputs="demtect-supermarket-task"
checked>
</div>
<div class="col-lg-5">
<label for="demtect-supermarket-task">Supermarktaufgabe</label>
</div>
<div class="col-lg-6 entry-value">
<input type="number" class="form-control" id="demtect-supermarket-task" name="demtect-supermarket-task" min="0" max="4" step="1" placeholder="0 - 4" required oninput="demtectSum();">
<div class="invalid-feedback field-validity">
Ganzzahl zwischen 0 und 4 erwartet.
</div>
</div>
</div>
<div class="row">
<div class="col-lg-1 form-switch">
<input class="form-check-input group-member"
type="checkbox"
id="enable-demtect-nr"
data-inm-controlled-inputs="demtect-numbers-reverse"
checked>
</div>
<div class="col-lg-5">
<label for="demtect-numbers-reverse">Zahlenfolge rückwärts</label>
</div>
<div class="col-md-6 entry-value">
<input type="number" class="form-control" id="demtect-numbers-reverse" name="demtect-numbers-reverse" min="0" max="3" step="1" placeholder="0 - 3" required oninput="demtectSum();">
<div class="invalid-feedback field-validity">
Ganzzahl zwischen 0 und 3 erwartet.
</div>
</div>
</div>
<div class="row">
<div class="col-lg-1 form-switch">
<input class="form-check-input group-member"
type="checkbox"
id="enable-demtect-recall"
data-inm-controlled-inputs="demtect-wordlist-recall"
checked>
</div>
<div class="col-lg-5">
<label for="demtect-wordlist-recall">Erneute Abfrage der Wortliste<span class="required-indicator">*</span></label>
</div>
<div class="col-lg-6 entry-value">
<input type="number" class="form-control" id="demtect-wordlist-recall" name="demtect-wordlist-recall" min="0" max="5" step="1" placeholder="0 - 5" required oninput="demtectSum();">
<div class="invalid-feedback field-validity">
Ganzzahl zwischen 0 und 5 erwartet.
</div>
</div>
</div>
<div class="row pt-2">
<div class="col-lg-1">
</div>
<div class="col-lg-5">
<label for="demtect-sum">DemTect Summe</label>
</div>
<div class="col-md-6 entry-value">
<input type="number" class="form-control" id="demtect-sum" name="demtect-sum" disabled>
</div>
</div>
<!-- Testbatterie für visuelle Objekt- und Raumwahrnehmung (VOSP) Subtest 8: „Würfelanzahl analysieren“: -->
<div class="row pt-4">
<div class="col-lg-1 form-switch">
<input class="form-check-input group-leader"
type="checkbox"
id="enable-vosp"
data-inm-switch-group="enable-vosp-cube-analysis-score;enable-vosp-cube-analysis-pct-rank"
data-inm-lines="line-enable-vosp-v;line-enable-vosp-h"
data-inm-line-end="enable-vosp-cube-analysis-pct-rank"
checked>
</div>
<div class="col-lg-11">
<h5>Testbatterie für visuelle Objekt- und Raumwahrnehmung (VOSP) Subtest 8: „Würfelanzahl analysieren“</h5>
</div>
</div>
<div class="row pt-1">
<div class="col-lg-1 form-switch">
<input class="form-check-input group-member"
type="checkbox"
id="enable-vosp-cube-analysis-score"
data-inm-controlled-inputs="vosp-cube-analysis-score"
checked>
</div>
<div class="col-lg-5">
<label for="vosp-cube-analysis-score">Punktzahl</label>
</div>
<div class="col-lg-6 entry-value">
<div class="input-group has-validation">
<input type="number" class="form-control" id="vosp-cube-analysis-score" name="vosp-cube-analysis-score" min="0" max="10" step="1" placeholder="0 10" required>
<div class="invalid-feedback field-validity">
Ganzzahl zwischen 0 und 10 erwartet.
</div>
</div>
</div>
</div>
<div class="row pt-1">
<div class="col-lg-1 form-switch">
<input class="form-check-input group-member"
type="checkbox"
id="enable-vosp-cube-analysis-pct-rank"
data-inm-controlled-inputs="vosp-cube-analysis-pct-rank"
checked>
</div>
<div class="col-lg-5">
<label for="vosp-cube-analysis-pct-rank">Prozentrang</label>
</div>
<div class="col-lg-6 entry-value">
<div class="input-group has-validation">
<input type="text" class="form-control" id="vosp-cube-analysis-pct-rank" name="vosp-cube-analysis-pct-rank" pattern="^([<>] )?([1-9]|[1-9][0-9]|100)$" placeholder="(<>) 1 100" required>
<div class="input-group-text">%</div>
<div class="invalid-feedback field-validity">
Ganzzahl zwischen 1 und 100, mit optionalem Präfix "< " oder "> " (einschließlich Leerzeichen), erwartet.
</div>
</div>
</div>
</div>
<!-- Trail Making Test (TMT) -->
<div class="row pt-5">
<div class="col-lg-1 form-switch">
<input class="form-check-input group-leader"
type="checkbox"
id="enable-tmt"
data-inm-switch-group="enable-tmt-a;enable-tmt-b"
data-inm-lines="line-enable-tmt-v;line-enable-tmt-h"
data-inm-line-end="enable-tmt-b"
checked>
</div>
<div class="col-lg-11">
<h5>Trail Making Test (TMT)</h5>
</div>
</div>
<div class="row">
<div class="col-lg-1 form-switch">
<input class="form-check-input group-member"
type="checkbox"
id="enable-tmt-a"
data-inm-controlled-inputs="time-tmt-a;tmt-a-incorrectly-executed;tmt-a-incorrectly-executed-valid"
checked>
</div>
<div class="col-lg-5">
<label for="time-tmt-a">Zeit TMT A</label>
</div>
<div class="col-lg-6 entry-value">
<div class="input-group has-validation">
<input type="number" class="form-control" id="time-tmt-a" name="time-tmt-a" min="0.0" max="150.0" step="any" placeholder="0.0 - 150.0" required>
<div class="input-group-text">s</div>
<div class="invalid-feedback field-validity">
Zahlenwert zwischen 0.0 und 150.0 erwartet.
</div>
</div>
</div>
</div>
<div class="row">
<div class="col-lg-1"></div>
<div class="col-lg-5">
<label class="form-check-label" for="tmt-a-incorrectly-executed">TMT A trotz Zeitüberschreitung durchführbar.</label>
</div>
<div class="col-lg-6">
<input type="checkbox" class="form-check-input group-member" id="tmt-a-incorrectly-executed" name="tmt-a-incorrectly-executed" placeholder="">
<input type="text" id="tmt-a-incorrectly-executed-valid" name="tmt-a-incorrectly-executed-valid" style="visibility: hidden;" value="true">
</div>
</div>
<div class="row pt-2">
<div class="col-lg-1 form-switch">
<input class="form-check-input group-member"
type="checkbox"
id="enable-tmt-b"
data-inm-controlled-inputs="time-tmt-b;tmt-b-incorrectly-executed;tmt-b-incorrectly-executed-valid"
checked>
</div>
<div class="col-lg-5">
<label for="time-tmt-b">Zeit TMT B</label>
</div>
<div class="col-lg-6 entry-value">
<div class="input-group has-validation">
<input type="number" class="form-control" id="time-tmt-b" name="time-tmt-b" min="0.0" max="300.0" step="any" placeholder="0.0 - 300.0" required>
<div class="input-group-text">s</div>
<div class="invalid-feedback field-validity">
Zahlenwert zwischen 0.0 und 300.0 erwartet.
</div>
</div>
</div>
</div>
<div class="row">
<div class="col-lg-1"></div>
<div class="col-lg-5">
<label class="form-check-label" for="tmt-b-incorrectly-executed">TMT B trotz Zeitüberschreitung durchführbar.</label>
</div>
<div class="col-lg-6">
<input type="checkbox" class="form-check-input group-member" id="tmt-b-incorrectly-executed" name="tmt-b-incorrectly-executed" placeholder="">
<input type="text" id="tmt-b-incorrectly-executed-valid" name="tmt-b-incorrectly-executed-valid" style="visibility: hidden;" value="true">
</div>
</div>
<div class="row pt-5">
<div class="col-lg-1"></div>
<div class="col-lg-11">
<h4>Allgemeine Scores</h4>
</div>
</div>
<!-- Modified Rankin scale (mRS) -->
<div class="row pt-2">
<div class="col-lg-1 form-switch">
<input class="form-check-input group-leader"
type="checkbox"
id="enable-mrs"
data-inm-controlled-inputs="mrs-score"
checked>
</div>
<div class="col-lg-11">
<h5>Modified Rankin scale (mRS)</h5>
</div>
</div>
<div class="row">
<div class="col-lg-1 form-switch">
<!--
<input class="form-check-input group-member"
type="checkbox"
id="enable-mrs-score"
data-inm-controlled-inputs="mrs-score"
checked>
-->
</div>
<div class="col-lg-5">
<label for="mrs-score">Punktzahl</label>
</div>
<div class="col-md-6 entry-value">
<input type="number" class="form-control" id="mrs-score" name="mrs-score" min="0" max="6" step="1" placeholder="0 - 6" required>
<div class="invalid-feedback field-validity">
Ganzzahl zwischen 0 und 6 erwartet.
</div>
</div>
</div>
<!-- EuroQol 5 (5Q-5D) -->
<div class="row pt-2">
<div class="col-lg-1 form-switch">
<input class="form-check-input group-leader"
type="checkbox"
id="enable-euroqol"
data-inm-switch-group="enable-euroqol-code;enable-euroqol-vas"
data-inm-lines="line-enable-euroqol-v;line-enable-euroqol-h"
data-inm-line-end="enable-euroqol-vas"
checked>
</div>
<div class="col-lg-11">
<h5>EuroQol 5 (5Q-5D)</h5>
</div>
</div>
<div class="row">
<div class="col-lg-1 form-switch">
<input class="form-check-input group-member"
type="checkbox"
id="enable-euroqol-code"
data-inm-controlled-inputs="euroqol-code"
checked>
</div>
<div class="col-lg-5">
<label for="euroqol-code">Code aus Antworten</label>
</div>
<div class="col-lg-6 entry-value">
<input type="text" class="form-control" id="euroqol-code" name="euroqol-code" pattern="[1-5]{5}" placeholder="XXXXX mit X jeweils aus 1 - 5" required>
<div class="invalid-feedback field-validity">
Antwort-Code ist nicht korrekt. Erwartet sind 5 Nummern aus 1 - 5, z.B. 31235
</div>
</div>
</div>
<div class="row">
<div class="col-lg-1 form-switch">
<input class="form-check-input group-member"
type="checkbox"
id="enable-euroqol-vas"
data-inm-controlled-inputs="euroqol-vas"
checked>
</div>
<div class="col-lg-5">
<label for="euroqol-vas">Visuelle Analogskala (VAS)</label>
</div>
<div class="col-md-6 entry-value">
<div class="input-group has-validation">
<input type="number" class="form-control" id="euroqol-vas" name="euroqol-vas" min="0" max="100" step="1" placeholder="0 - 100" required>
<div class="input-group-text">%</div>
<div class="invalid-feedback field-validity">
Ganzzahl zwischen 0 und 100 erwartet.
</div>
</div>
</div>
</div>
<!-- Anzahl Ausbildungsjahre -->
<div class="row pt-3">
<div class="col-lg-1 form-switch">
<input class="form-check-input group-leader"
type="checkbox"
id="enable-education"
data-inm-controlled-inputs="isced-value"
checked>
</div>
<div class="col-lg-11">
<h5>Anzahl Ausbildungsjahre</h5>
</div>
</div>
<div class="row">
<div class="col-lg-1 form-switch">
<!--
<input class="form-check-input group-member"
type="checkbox"
id="enable-education-isced"
data-inm-controlled-inputs="isced-value"
checked>
-->
</div>
<div class="col-lg-5">
<label for="isced-value">Zahlenwert nach ISCED</label>
</div>
<div class="col-lg-6 entry-value">
<input type="number" class="form-control" id="isced-value" name="isced-value" min="0" max="6" step="1" placeholder="0 - 6" required>
<div class="invalid-feedback field-validity">
Ganzzahl zwischen 0 und 6 erwartet.
</div>
</div>
</div>
<!-- PSQI -->
<div class="row pt-4">
<div class="col-lg-1 form-switch">
<input class="form-check-input group-leader"
type="checkbox"
id="enable-psqi"
data-inm-switch-group="enable-psqi-sleep-quality;enable-psqi-sleep-latency;enable-psqi-sleep-duration;enable-psqi-sleep-efficiency;enable-psqi-sleep-disturbance;enable-psqi-meds;enable-psqi-day-dysfunction"
data-inm-lines="line-enable-psqi-v;line-enable-psqi-h"
data-inm-line-end="enable-psqi-day-dysfunction"
checked>
</div>
<div class="col-lg-11">
<h5>PSQI</h5>
</div>
</div>
<div class="row">
<div class="col-lg-1 form-switch">
<input class="form-check-input group-member"
type="checkbox"
id="enable-psqi-sleep-quality"
data-inm-controlled-inputs="psqi-sleep-quality"
checked>
</div>
<div class="col-lg-5">
<label for="psqi-sleep-quality">Schlafqualität</label>
</div>
<div class="col-md-6 entry-value">
<input type="number" class="form-control" id="psqi-sleep-quality" name="psqi-sleep-quality" min="0" max="3" step="1" placeholder="0 - 3" required oninput="psqiSum();">
<div class="invalid-feedback field-validity">
Ganzzahl zwischen 0 und 3 erwartet.
</div>
</div>
</div>
<div class="row">
<div class="col-lg-1 form-switch">
<input class="form-check-input group-member"
type="checkbox"
id="enable-psqi-sleep-latency"
data-inm-controlled-inputs="psqi-sleep-latency"
checked>
</div>
<div class="col-lg-5">
<label for="psqi-sleep-latency">Schlaflatenz</label>
</div>
<div class="col-md-6 entry-value">
<input type="number" class="form-control" id="psqi-sleep-latency" name="psqi-sleep-latency" min="0" max="3" step="1" placeholder="0 - 3" required oninput="psqiSum();">
<div class="invalid-feedback field-validity">
Ganzzahl zwischen 0 und 3 erwartet.
</div>
</div>
</div>
<div class="row">
<div class="col-lg-1 form-switch">
<input class="form-check-input group-member"
type="checkbox"
id="enable-psqi-sleep-duration"
data-inm-controlled-inputs="psqi-sleep-duration"
checked>
</div>
<div class="col-lg-5">
<label for="psqi-sleep-duration">Schlafdauer</label>
</div>
<div class="col-md-6 entry-value">
<input type="number" class="form-control" id="psqi-sleep-duration" name="psqi-sleep-duration" min="0" max="3" step="1" placeholder="0 - 3" required oninput="psqiSum();">
<div class="invalid-feedback field-validity">
Ganzzahl zwischen 0 und 3 erwartet.
</div>
</div>
</div>
<div class="row">
<div class="col-lg-1 form-switch">
<input class="form-check-input group-member"
type="checkbox"
id="enable-psqi-sleep-efficiency"
data-inm-controlled-inputs="psqi-sleep-efficiency"
checked>
</div>
<div class="col-lg-5">
<label for="psqi-sleep-efficiency">Schlafeffizienz</label>
</div>
<div class="col-md-6 entry-value">
<input type="number" class="form-control" id="psqi-sleep-efficiency" name="psqi-sleep-efficiency" min="0" max="3" step="1" placeholder="0 - 3" required oninput="psqiSum();">
<div class="invalid-feedback field-validity">
Ganzzahl zwischen 0 und 3 erwartet.
</div>
</div>
</div>
<div class="row">
<div class="col-lg-1 form-switch">
<input class="form-check-input group-member"
type="checkbox"
id="enable-psqi-sleep-disturbance"
data-inm-controlled-inputs="psqi-sleep-disturbance"
checked>
</div>
<div class="col-lg-5">
<label for="psqi-sleep-disturbance">Schlafstörungen</label>
</div>
<div class="col-md-6 entry-value">
<input type="number" class="form-control" id="psqi-sleep-disturbance" name="psqi-sleep-disturbance" min="0" max="3" step="1" placeholder="0 - 3" required oninput="psqiSum();">
<div class="invalid-feedback field-validity">
Ganzzahl zwischen 0 und 3 erwartet.
</div>
</div>
</div>
<div class="row">
<div class="col-lg-1 form-switch">
<input class="form-check-input group-member"
type="checkbox"
id="enable-psqi-meds"
data-inm-controlled-inputs="psqi-meds"
checked>
</div>
<div class="col-lg-5">
<label for="psqi-meds">Schlafmittelkonsum</label>
</div>
<div class="col-md-6 entry-value">
<input type="number" class="form-control" id="psqi-meds" name="psqi-meds" min="0" max="3" step="1" placeholder="0 - 3" required oninput="psqiSum();">
<div class="invalid-feedback field-validity">
Ganzzahl zwischen 0 und 3 erwartet.
</div>
</div>
</div>
<div class="row">
<div class="col-lg-1 form-switch">
<input class="form-check-input group-member"
type="checkbox"
id="enable-psqi-day-dysfunction"
data-inm-controlled-inputs="psqi-day-dysfunction"
checked>
</div>
<div class="col-lg-5">
<label for="psqi-day-dysfunction">Tagesmüdigkeit</label>
</div>
<div class="col-md-6 entry-value">
<input type="number" class="form-control" id="psqi-day-dysfunction" name="psqi-day-dysfunction" min="0" max="3" step="1" placeholder="0 - 3" required oninput="psqiSum();">
<div class="invalid-feedback field-validity">
Ganzzahl zwischen 0 und 3 erwartet.
</div>
</div>
</div>
<div class="row pt-2">
<div class="col-lg-1">
</div>
<div class="col-lg-5">
<label for="psqi-sum">PSQI Gesamtsumme</label>
</div>
<div class="col-md-6 entry-value">
<input type="number" class="form-control" id="psqi-sum" name="psqi-sum" disabled>
</div>
</div>
<!-- Weitere Diagnostik -->
<div class="row pt-5">
<div class="col-lg-1 form-switch">
<input class="form-check-input group-leader"
type="checkbox"
id="enable-ad"
data-inm-switch-group="enable-ad-mrt;enable-ad-eeg;enable-ad-blood;enable-ad-gait-lab"
data-inm-lines="line-enable-ad-v;line-enable-ad-h"
data-inm-line-end="enable-ad-gait-lab">
</div>
<div class="col-lg-11">
<h4 class="mb-3">Weitere Diagnostik</h4>
</div>
</div>
<div class="row pt-2">
<div class="col-lg-1 form-switch">
<input class="form-check-input group-member"
type="checkbox"
id="enable-ad-mrt"
data-inm-controlled-inputs="additional-mrt-url;additional-mrt-resting-state;additional-mrt-tapping-task;additional-mrt-anatomical-representation;additional-mrt-dti;additional-mrt-resting-state-valid;additional-mrt-tapping-task-valid;additional-mrt-anatomical-representation-valid;additional-mrt-dti-valid">
</div>
<div class="col-lg-5">
<label for="additional-mrt-url">MRT-Dateien<span class="required-indicator">*</span></label>
</div>
<div class="col-lg-6 entry-value">
<input type="text" class="form-control" id="additional-mrt-url" name="additional-mrt-url" placeholder="Link / Anmerkung zu MRT-Dateien" disabled required>
</div>
</div>
<div class="row">
<div class="col-lg-1 form-switch">
</div>
<div class="col-lg-5">
</div>
<div class="col-lg-6 entry-label">
<div class="form-check">
<input class="form-check-input group-member" type="checkbox" id="additional-mrt-resting-state" name="additional-mrt-resting-state" disabled>
<label class="form-check-label" for="additional-mrt-resting-state">
Resting-State
</label>
<input type="text" id="additional-mrt-resting-state-valid" name="additional-mrt-resting-state-valid" style="visibility: hidden;" value="true" disabled>
</div>
</div>
</div>
<div class="row">
<div class="col-lg-1 form-switch">
</div>
<div class="col-lg-5">
</div>
<div class="col-lg-6 entry-label">
<div class="form-check">
<input class="form-check-input group-member" type="checkbox" id="additional-mrt-tapping-task" name="additional-mrt-tapping-task" disabled>
<label class="form-check-label" for="additional-mrt-tapping-task">
Tapping-Task
</label>
<input type="text" id="additional-mrt-tapping-task-valid" name="additional-mrt-tapping-task-valid" style="visibility: hidden;" value="true" disabled>
</div>
</div>
</div>
<div class="row">
<div class="col-lg-1 form-switch">
</div>
<div class="col-lg-5">
</div>
<div class="col-lg-6 entry-label">
<div class="form-check">
<input class="form-check-input group-member" type="checkbox" id="additional-mrt-anatomical-representation" name="additional-mrt-anatomical-representation" disabled>
<label class="form-check-label" for="additional-mrt-anatomical-representation">
Anatomische Darstellung
</label>
<input type="text" id="additional-mrt-anatomical-representation-valid" name="additional-mrt-anatomical-representation-valid" style="visibility: hidden;" value="true" disabled>
</div>
</div>
</div>
<div class="row">
<div class="col-lg-1 form-switch">
</div>
<div class="col-lg-5">
</div>
<div class="col-lg-6 entry-label">
<div class="form-check">
<input class="form-check-input group-member" type="checkbox" id="additional-mrt-dti" name="additional-mrt-dti" disabled>
<label class="form-check-label" for="additional-mrt-dti">
DTI
</label>
<input type="text" id="additional-mrt-dti-valid" name="additional-mrt-dti-valid" style="visibility: hidden;" value="true" disabled>
</div>
</div>
</div>
<div class="row pt-2">
<div class="col-lg-1 form-switch">
<input class="form-check-input group-member"
type="checkbox"
id="enable-ad-eeg"
data-inm-controlled-inputs="additional-eeg-url">
</div>
<div class="col-lg-5">
<label for="additional-eeg-url">EEG-Dateien</label>
</div>
<div class="col-lg-6 entry-value">
<input type="text" class="form-control" id="additional-eeg-url" name="additional-eeg-url" placeholder="Link / Anmerkung zu EEG-Dateien" disabled required>
<div class="invalid-feedback field-validity">
Gültige URL erwartet.
</div>
</div>
</div>
<div class="row pt-2">
<div class="col-lg-1 form-switch">
<input class="form-check-input group-member"
type="checkbox"
id="enable-ad-blood"
data-inm-controlled-inputs="additional-blood-sampling-url">
</div>
<div class="col-lg-5">
<label for="additional-blood-sampling-url">Blutproben-Dateien</label>
</div>
<div class="col-lg-6 entry-value">
<input type="text" class="form-control" id="additional-blood-sampling-url" name="additional-blood-sampling-url" placeholder="Link / Anmerkung zu Blutproben-Dateien" disabled required>
</div>
</div>
<div class="row pt-2">
<div class="col-lg-1 form-switch">
<input class="form-check-input group-member"
type="checkbox"
id="enable-ad-gait-lab"
data-inm-controlled-inputs="additional-gait-lab-url">
</div>
<div class="col-lg-5">
<label for="additional-gait-lab-url">Ganglabor</label>
</div>
<div class="col-lg-6 entry-value">
<input type="text" class="form-control" id="additional-gait-lab-url" name="additional-gait-lab-url" placeholder="Link / Anmerkung zu Ganglabor-Dateien" disabled required>
</div>
</div>
<div class="row pt-5">
<h5 class="mb-3"><label for="additional-remarks">Weitere Anmerkungen</label></h5>
</div>
<div class="row">
<textarea rows="4" id="additional-remarks" name="additional-remarks" placeholder="Optionale Bemerkungen"></textarea>
</div>
<div class="row pt-5">
<button class="btn btn-secondary btn-lg btn-block" type="button" id="verify-button" onclick="updateFingerPrint();">Eingaben prüfen</button>
</div>
<div class="pt-5 visually-hidden" id="content-validation-errors" style="color: #dc3545;">
<div class="row">
<h5><label for="content-validation-error-messages">Folgende Fehler müssen vor dem Speichern korrigiert werden:</label></h5>
</div>
<div class="row" id="content-validation-error-messages">
</div>
</div>
<div class="row pt-5">
<div class="col-md-3">
<h5 class="mb-3"><label for="finger-print">Fingerabdruck</label></h5>
</div>
</div>
<div class="row">
<div class="col-md-12">
<div id="finger-print">
</div>
</div>
</div>
<input type="hidden" id="hashed-string" name="hashed-string" value="">
<input type="text" id="hash-value" name="hash-value" style="visibility: hidden;" value="">
<div class="row pt-5">
<h5 class="mb-3"><label for="signature-data">Signaturdaten</label></h5>
</div>
<div class="row">
<textarea rows="4" id="signature-data" name="signature-data" placeholder="Signaturdaten" disabled></textarea>
</div>
<div class="row pt-5">
<!-- Eine lokale Kopie der Formulardaten speichern -->
<button class="btn btn-primary btn-lg btn-block" type="button" id="local-save-button">Daten lokal speichern</button>
</div>
<div class="row pt-5">
<button class="btn btn-primary btn-lg btn-block" type="submit" id="submit-button" formaction="https://sfb1451.inm7.de/store-data" formmethod="post" disabled>Daten speichern</button>
</div>
<div class="row pt-5">
<!-- Eine lokale Kopie der Formulardaten laden -->
<input type="file" id="local-load-input" accept=".json" style="display:none">
<button class="btn btn-primary btn-lg btn-block" type="button" id="local-load-button">Lokale Daten laden</button>
</div>
</div>
</form>
<div>
<footer class="my-5 pt-5 text-muted text-center text-small">
<p class="mb-1">2021-07-16 SFB 1451 Z03 - Motor Assessment Center - Angaben und Zeiten</p>
</footer>
</div>
<script src="https://code.jquery.com/jquery-3.2.1.slim.min.js" integrity="sha384-KJ3o2DKtIkvYIK3UENzmM7KCkRr/rE9/Qpg6aAZGJwFDMVNA/GpGFF93hXpG5KkN" crossorigin="anonymous"></script>
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.0.0-beta3/dist/js/bootstrap.bundle.min.js" integrity="sha384-JEW9xMcG8R+pH31jmWH6WWP0WintQrMb4s7ZOdauHnUtxwoG2vI5DkLtS3qm9Ekf" crossorigin="anonymous"></script>
<script>
function validateForm(form) {
form.classList.remove("inm-invalid");
let fieldValidity = form.checkValidity();
if (fieldValidity === false) {
form.classList.add("inm-invalid");
}
let contentValidityErrors = validateContent(form);
let contentErrorElement = document.getElementById("content-validation-errors");
let contentErrorMessageElement = document.getElementById("content-validation-error-messages");
if (contentValidityErrors.length !== 0) {
contentErrorElement.classList.remove("visually-hidden");
contentErrorMessageElement.innerHTML = contentValidityErrors.join("<BR>\n");
form.classList.add("inm-invalid");
} else {
contentErrorElement.classList.add("visually-hidden");
}
form.classList.add('was-validated');
return (fieldValidity === true && contentValidityErrors.length === 0);
}
(function () {
'use strict'
// Fetch all the forms we want to apply custom Bootstrap validation styles to
var forms = document.querySelectorAll('.needs-validation')
// Loop over them and prevent submission
Array.prototype.slice.call(forms)
.forEach(function (form) {
form.addEventListener('submit', function (event) {
if (validateForm(form) === false) {
event.preventDefault();
event.stopPropagation();
}
}, false)
})
})();
</script>
<script>
const submitButtonUpdater = {
// a global object to track whether the save button can be enabled
// and to toggle its state when needed
// we require data to be validated and only allow submitting after
// the local save has been done
dataValid: false,
dataSaved: false,
update: function () {
let submitButton = document.getElementById("submit-button");
if (this.dataValid && this.dataSaved) {
submitButton.removeAttribute("disabled");
} else {
submitButton.setAttribute("disabled", "");
}
},
setAndUpdate: function (property, value) {
console.assert(
typeof value === "boolean",
"setAndUpdate called with non-boolean value"
);
console.assert(
this.hasOwnProperty(property),
"Unknown property: " + property
);
this[property] = value;
this.update();
},
};
</script>
<script>
function getContentOfElementNamed(name) {
const elementArray = document.getElementsByName(name);
if (elementArray.length === 1)
return elementArray[0].value;
return null;
}
function compareDate(date_a, date_b) {
let [year_a, month_a, day_a] = date_a;
let [year_b, month_b, day_b] = date_b;
if (year_a == null || year_b == null)
return 0;
if (year_a !== year_b)
return year_a - year_b;
if (month_a == null || month_b == null)
return 0;
if (month_a !== month_b)
return month_a - month_b;
if (day_a == null || day_b == null)
return 0;
return day_a - day_b;
}
function parseDate(dateArray) {
let result = dateArray.map(function (x) {
const result = parseInt(x);
if (isNaN(result))
return null;
return result;
})
if (result.length !== 3)
return [null, null, null];
return result;
}
function validateDates() {
let result = [];
const birthDate = parseDate(getContentOfElementNamed("date-of-birth").split("-"));
const testDate = parseDate(getContentOfElementNamed("date-of-test").split("-"));
const firstSymptomDate = parseDate([
getContentOfElementNamed("patient-year-first-symptom"),
getContentOfElementNamed("patient-month-first-symptom"),
getContentOfElementNamed("patient-day-first-symptom")]);
const diagnosisDate = parseDate([
getContentOfElementNamed("patient-year-diagnosis"),
getContentOfElementNamed("patient-month-diagnosis"),
getContentOfElementNamed("patient-day-diagnosis")]);
if (compareDate(birthDate, firstSymptomDate) > 0)
result.push("Das Geburtsdatum muß vor dem Datum der ersten Symptome liegen");
if (compareDate(birthDate, diagnosisDate) > 0)
result.push("Das Geburtsdatum muß vor dem Datum der Diagnose liegen");
if (compareDate(birthDate, testDate) > 0)
result.push("Das Geburtsdatum muß vor dem Testdatum liegen");
if (compareDate(firstSymptomDate, diagnosisDate) > 0)
result.push("Das Datum der ersten Symptome muß vor dem Datum der Diagnose liegen");
if (compareDate(firstSymptomDate, testDate) > 0)
result.push("Das Datum der ersten Symptome muß vor dem Datum des Tests liegen");
if (compareDate(diagnosisDate, testDate) > 0)
result.push("Das Datum der Diagnose muß vor dem Datum des Tests liegen");
return result;
}
function checkLeftRight(left_id, right_id, factor, message) {
let leftValue = parseFloat(document.getElementById(left_id).value);
let rightValue = parseFloat(document.getElementById(right_id).value);
leftValue *= factor;
rightValue *= factor;
if (leftValue >= rightValue) {
let index = parseInt(factor) + 1;
let relationDescription = ["größer", null, "kleiner"][index];
return [message + ": Wert für Links muß " + relationDescription + " sein als Wert für Rechts"];
}
return [];
}
function validateLaterality() {
const subject_group = getContentOfElementNamed("subject-group");
if (subject_group !== "patient")
return [];
let affectedHand = null;
const affectedHandElements = document.getElementsByName("patient-stronger-impacted-hand");
affectedHand = Array.from(affectedHandElements).map(element => {
return element.checked === true;
});
if (affectedHand[2] === true)
return [];
let factor = null;
if (affectedHand[0] === true)
factor = 1.0;
if (affectedHand[1] === true)
factor = -1.0;
// allow conditional ovverriding of some checks
let BFoverride = document.getElementById("basisfaehig-laterality-check-override").checked;
let PPToverride = document.getElementById("purdue-pegboard-laterality-check-override").checked;
let JTToverride = document.getElementById("jtt-laterality-check-override").checked;
let ARAToverride = document.getElementById("arat-laterality-check-override").checked;
// make a list of pairs to be checked, accounting for the above overrides
let checkPairs = [];
if (!BFoverride) {
checkPairs = checkPairs.concat([
["Maximale Fingertipp-Geschwindigkeit", "maximum-ftf-left", "maximum-ftf-right", 1.0],
["Maximale Griffkraft", "maximum-gs-left", "maximum-gs-right", 1.0]
]);
}
if (!PPToverride) {
checkPairs = checkPairs.concat([
["Purdue Pegboard Test: Anzahl gesteckter Stäbchen", "purdue-pegboard-left", "purdue-pegboard-right", 1.0]
]);
}
if (!JTToverride) {
checkPairs = checkPairs.concat([
["JTT: Karten drehen", "turn-cards-left", "turn-cards-right", -1.0],
["JTT: kleine Gegenstände", "small-things-left", "small-things-right", -1.0],
["JTT: simuliertes Füttern", "simulated-feeding-left", "simulated-feeding-right", -1.0],
["JTT: Damesteine stappeln", "checkers-left", "checkers-right", -1.0],
["JTT: große, leichte Gegenstände", "large-light-things-left", "large-light-things-right", -1.0],
["JTT: große, schwere Gegenstände", "large-heavy-things-left", "large-heavy-things-right", -1.0]
]);
}
if (!ARAToverride) {
checkPairs = checkPairs.concat([
["ARAT: Punktzahl", "arat-left", "arat-right", 1.0]
]);
}
// perform the checks
let messages = [];
for (let checkPair of checkPairs) {
messages = messages.concat(checkLeftRight(checkPair[1], checkPair[2], checkPair[3] * factor, checkPair[0]));
}
console.log(messages);
return messages;
}
function validateGoNogoErrors() {
let totalErrors = parseInt(document.getElementById("go-nogo-total-errors").value);
let wrongErrors = parseInt(document.getElementById("go-nogo-wrong-errors").value);
totalErrors = (totalErrors === null) ? 0: totalErrors;
wrongErrors = (wrongErrors === null) ? 0: wrongErrors;
if (totalErrors > 0 || wrongErrors > 0) {
let recognizedErrorsElement = document.getElementById("go-nogo-recognized-errors");
const recognizedErrors = parseInt(recognizedErrorsElement.value);
if (recognizedErrors != null && recognizedErrors > 0) {
if (recognizedErrors > (totalErrors + wrongErrors)) {
return ["Go/Nogo-Task: die Anzahl der erkannten Fehler muß kleiner oder gleich zur Summe von 'Fehler insgesamt' und 'falsche NoGo-Reaktion' sein"];
}
}
}
return [];
}
function validateContent(form) {
let errorMessages = validateDates();
errorMessages = errorMessages.concat(validateLaterality());
errorMessages = errorMessages.concat(validateGoNogoErrors());
console.log(errorMessages);
return errorMessages;
}
</script>
<script>
let patientSelectElement = document.getElementById("subject-group");
let patientCollapseElement = document.getElementById("patient-collapse");
let patientCollapse = null;
patientCollapseElement.addEventListener("shown.bs.collapse", function () {
let x = 1;
updatedLines();
})
patientCollapseElement.addEventListener("hidden.bs.collapse", function () {
let x = 1;
updatedLines();
})
function hideCollapsable(obj, element) {
if (obj !== null) {
obj.hide();
if (element !== null) {
let childNodes = element.getElementsByTagName("*");
for (let childNode of childNodes) {
childNode.setAttribute("disabled", "true");
}
}
}
}
function showCollapsable(obj, element) {
if (obj !== null) {
obj.show();
if (element !== null) {
let childNodes = element.getElementsByTagName("*");
for (let childNode of childNodes) {
if (childNode.id === "kopss-sum")
continue;
childNode.removeAttribute("disabled");
}
}
}
}
function patientUpdateElement() {
if (patientSelectElement.selectedIndex === 2) {
if (patientCollapse === null)
patientCollapse = new bootstrap.Collapse(patientCollapseElement);
showCollapsable(patientCollapse, patientCollapseElement);
}
else {
hideCollapsable(patientCollapse, patientCollapseElement);
}
}
</script>
<script>
function sumInputs(source_elements, digits) {
let result = 0;
for (const se of source_elements) {
if (se.value !== "") {
let value = parseFloat(se.value);
if (isNaN(value)) {
return "";
}
result += value;
}
}
return typeof digits !== "undefined" ? result.toFixed(digits) : result.toString();
}
function jttSum() {
const hands = ["left", "right"];
for (const hand of hands) {
let source_elements = [
document.getElementById(`turn-cards-${hand}`),
document.getElementById(`small-things-${hand}`),
document.getElementById(`simulated-feeding-${hand}`),
document.getElementById(`checkers-${hand}`),
document.getElementById(`large-light-things-${hand}`),
document.getElementById(`large-heavy-things-${hand}`),
];
let sumString = sumInputs(source_elements, 1);
let dest_element = document.getElementById(`jtt-sum-${hand}`);
dest_element.value = sumString;
}
}
function kasSum() {
let source_elements = [
document.getElementById("kas-pantomime-bukko-facial"),
document.getElementById("kas-pantomime-arm-hand"),
document.getElementById("kas-imitation-bukko-facial"),
document.getElementById("kas-imitation-arm-hand"),
];
let sumString = sumInputs(source_elements);
let dest_element = document.getElementById("kas-sum");
dest_element.value = sumString;
}
function kopssSum() {
let source_elements = [
document.getElementById("kopss-orientation"),
document.getElementById("kopss-speech"),
document.getElementById("kopss-praxie"),
document.getElementById("kopss-visual-spatial-performance"),
document.getElementById("kopss-calculating"),
document.getElementById("kopss-executive-performance"),
document.getElementById("kopss-memory"),
];
let sumString = sumInputs(source_elements);
let dest_element = document.getElementById("kopss-sum");
dest_element.value = sumString;
}
function aclKSum() {
let source_elements = [
document.getElementById("acl-k-loud-reading"),
document.getElementById("acl-k-color-form-test"),
document.getElementById("acl-k-supermarket-task"),
document.getElementById("acl-k-communication-ability"),
];
let sumString = sumInputs(source_elements);
let dest_element = document.getElementById("acl-k-sum");
dest_element.value = sumString;
}
function demtectSum() {
let source_elements = [
document.getElementById("demtect-wordlist"),
document.getElementById("demtect-convert-numbers"),
document.getElementById("demtect-supermarket-task"),
document.getElementById("demtect-numbers-reverse"),
document.getElementById("demtect-wordlist-recall"),
];
let sumString = sumInputs(source_elements);
let dest_element = document.getElementById("demtect-sum");
dest_element.value = sumString;
}
function psqiSum() {
let source_elements = [
document.getElementById("psqi-sleep-quality"),
document.getElementById("psqi-sleep-latency"),
document.getElementById("psqi-sleep-duration"),
document.getElementById("psqi-sleep-efficiency"),
document.getElementById("psqi-sleep-disturbance"),
document.getElementById("psqi-meds"),
document.getElementById("psqi-day-dysfunction"),
];
let sumString = sumInputs(source_elements);
let dest_element = document.getElementById("psqi-sum");
dest_element.value = sumString;
}
</script>
<script>
function getStringContent(elementId) {
return document.getElementById(elementId).value;
}
function getCheckboxContent(elementId) {
let element = document.getElementById(elementId);
if (element.disabled === true)
return "";
if (element.checked === true) {
return "True";
}
return "False";
}
function getNumberContent(elementId) {
let element = document.getElementById(elementId);
if (element.disabled === true)
return "";
let value = parseFloat(element.value);
if (isNaN(value))
return "";
return value.toString();
}
function getRadioButtonContent(elementIds) {
let checkedElements = elementIds.filter(elementId => {
return (document.getElementById(elementId).checked === true);
});
if (checkedElements.length === 1)
return document.getElementById(checkedElements[0]).value;
return "";
}
function getContentArray() {
let nameArray = [
["form-data-version", getStringContent],
["data-entry-domain", getStringContent],
["data-entry-employee", getStringContent],
["project-code", getStringContent],
["subject-pseudonym", getStringContent],
["date-of-birth", getStringContent],
["sex", getRadioButtonContent, ["sex-m", "sex-f", "sex-d"]],
["date-of-test", getStringContent],
["repeated-test", getCheckboxContent],
["patient-year-first-symptom", getStringContent],
["patient-month-first-symptom", getStringContent],
["patient-day-first-symptom", getStringContent],
["patient-year-diagnosis", getStringContent],
["patient-month-diagnosis", getStringContent],
["patient-day-diagnosis", getStringContent],
["patient-main-disease", getStringContent],
["patient-stronger-impacted-hand", getRadioButtonContent, [
"patient-stronger-impacted-hand-left",
"patient-stronger-impacted-hand-right",
"patient-stronger-impacted-hand-none"]],
["laterality-quotient", getNumberContent],
["maximum-ftf-left", getNumberContent],
["maximum-ftf-right", getNumberContent],
["maximum-gs-left", getNumberContent],
["maximum-gs-right", getNumberContent],
["purdue-pegboard-left", getNumberContent],
["purdue-pegboard-right", getNumberContent],
["turn-cards-left", getNumberContent],
["turn-cards-right", getNumberContent],
["small-things-left", getNumberContent],
["small-things-right", getNumberContent],
["simulated-feeding-left", getNumberContent],
["simulated-feeding-right", getNumberContent],
["checkers-left", getNumberContent],
["checkers-right", getNumberContent],
["large-light-things-left", getNumberContent],
["large-light-things-right", getNumberContent],
["large-heavy-things-left", getNumberContent],
["large-heavy-things-right", getNumberContent],
["jtt-incorrectly-executed", getCheckboxContent],
["arat-left", getNumberContent],
["arat-right", getNumberContent],
["tug-executed", getNumberContent],
["tug-a-incorrectly-executed", getCheckboxContent],
["tug-a-tools-required", getCheckboxContent],
["tug-imagined", getNumberContent],
["go-nogo-block-count", getNumberContent],
["go-nogo-total-errors", getNumberContent],
["go-nogo-wrong-errors", getNumberContent],
["go-nogo-recognized-errors", getNumberContent],
["go-nogo-correct-answer-time", getNumberContent],
["go-nogo-recognized-error-time", getNumberContent],
["go-nogo-incorrectly-executed", getCheckboxContent],
["go-nogo-variant-hand", getStringContent],
["go-nogo-variant-reaction-time-median", getNumberContent],
["go-nogo-variant-reaction-time-pct-rank", getStringContent],
["go-nogo-variant-errors", getNumberContent],
["go-nogo-variant-errors-pct-rank", getStringContent],
["go-nogo-variant-omissions", getNumberContent],
["go-nogo-variant-omissions-pct-rank", getStringContent],
["dual-task-hand", getStringContent],
["dual-task-reaction-time-audio-median", getNumberContent],
["dual-task-reaction-time-audio-pct-rank", getStringContent],
["dual-task-reaction-time-visual-median", getNumberContent],
["dual-task-reaction-time-visual-pct-rank", getStringContent],
["dual-task-omissions-audio", getNumberContent],
["dual-task-omissions-audio-pct-rank", getStringContent],
["dual-task-omissions-visual", getNumberContent],
["dual-task-omissions-visual-pct-rank", getStringContent],
["dual-task-errors-total", getNumberContent],
["dual-task-errors-total-pct-rank", getStringContent],
["dual-task-omissions-total", getNumberContent],
["dual-task-omissions-total-pct-rank", getStringContent],
["kas-pantomime-bukko-facial", getNumberContent],
["kas-pantomime-arm-hand", getNumberContent],
["kas-imitation-bukko-facial", getNumberContent],
["kas-imitation-arm-hand", getNumberContent],
["kopss-orientation", getNumberContent],
["kopss-speech", getNumberContent],
["kopss-praxie", getNumberContent],
["kopss-visual-spatial-performance", getNumberContent],
["kopss-calculating", getNumberContent],
["kopss-executive-performance", getNumberContent],
["kopss-memory", getNumberContent],
["kopss-affect", getNumberContent],
["kopss-behavior-observation", getNumberContent],
["acl-k-loud-reading", getNumberContent],
["acl-k-color-form-test", getNumberContent],
["acl-k-supermarket-task", getNumberContent],
["acl-k-communication-ability", getNumberContent],
["bdi-ii-score", getNumberContent],
["madrs-score", getNumberContent],
["logical-memory-variant", getRadioButtonContent, [
"logical-memory-variant-ab",
"logical-memory-variant-bc"]],
["logical-memory-immediate-recall", getNumberContent],
["logical-memory-immediate-recall-scaled", getNumberContent],
["logical-memory-delayed-recall", getNumberContent],
["logical-memory-delayed-recall-scaled", getNumberContent],
["demtect-wordlist", getNumberContent],
["demtect-convert-numbers", getNumberContent],
["demtect-supermarket-task", getNumberContent],
["demtect-numbers-reverse", getNumberContent],
["demtect-wordlist-recall", getNumberContent],
["vosp-cube-analysis-score", getNumberContent],
["vosp-cube-analysis-pct-rank", getStringContent],
["time-tmt-a", getNumberContent],
["tmt-a-incorrectly-executed", getCheckboxContent],
["time-tmt-b", getNumberContent],
["tmt-b-incorrectly-executed", getCheckboxContent],
["mrs-score", getNumberContent],
["euroqol-code", getStringContent],
["euroqol-vas", getNumberContent],
["isced-value", getNumberContent],
["psqi-sleep-quality", getNumberContent],
["psqi-sleep-latency", getNumberContent],
["psqi-sleep-duration", getNumberContent],
["psqi-sleep-efficiency", getNumberContent],
["psqi-sleep-disturbance", getNumberContent],
["psqi-meds", getNumberContent],
["psqi-day-dysfunction", getNumberContent],
["additional-mrt-url", getStringContent],
["additional-mrt-resting-state", getCheckboxContent],
["additional-mrt-tapping-task", getCheckboxContent],
["additional-mrt-anatomical-representation", getCheckboxContent],
["additional-mrt-dti", getCheckboxContent],
["additional-eeg-url", getStringContent],
["additional-blood-sampling-url", getStringContent],
["additional-gait-lab-url", getStringContent],
["additional-remarks", getStringContent]
];
let contentArray = nameArray.map(spec => {
if (spec.length === 2) {
return [spec[0], spec[1].apply(null, [spec[0]])];
}
return [spec[0], spec[1].apply(null, [spec[2]])];
});
return contentArray;
}
function getContentString() {
let keyValueArray = getContentArray();
let contentString = Array.from(keyValueArray, kvpair => kvpair.join(":")).join(";");
return contentString;
}
function getContentObj() {
let keyValueArray = getContentArray();
let contentObj = Object.fromEntries(keyValueArray);
contentObj['subject-group'] = getStringContent('subject-group'); // not present in getContentString
return contentObj;
}
async function digestMessage(message) {
const msgUint8 = new TextEncoder().encode(message); // encode as (utf-8) Uint8Array
const hashBuffer = await crypto.subtle.digest('SHA-256', msgUint8); // hash the message
const hashArray = Array.from(new Uint8Array(hashBuffer)); // convert buffer to byte array
const hashHex = hashArray.map(b => b.toString(16).padStart(2, '0')).join(''); // convert bytes to hex string
return hashHex;
}
function updateFingerPrint() {
let fingerPrintElement = document.getElementById("finger-print");
let entryForm = document.getElementById("entry-form");
let hashedStringElement = document.getElementById("hashed-string");
let hashValueElement = document.getElementById("hash-value");
let signatureDataElement = document.getElementById("signature-data");
if (validateForm(entryForm) === false) {
fingerPrintElement.innerHTML = "Fingerabruck nicht verfügbar, da Eingaben ungültig sind.";
submitButtonUpdater.setAndUpdate("dataValid", false)
signatureDataElement.setAttribute("disabled", "");
} else {
const contentString = getContentString();
hashedStringElement.setAttribute("value", contentString);
signatureDataElement.removeAttribute("disabled");
digestMessage(contentString).then(hashHex => {
console.log(hashHex);
fingerPrintElement.innerHTML = hashHex;
hashValueElement.value = hashHex;
submitButtonUpdater.setAndUpdate("dataValid", true)
}).catch(err => {
console.log(err);
fingerPrintElement.innerHTML = "Fingerabruck nicht verfügbar: " + err;
submitButtonUpdater.setAndUpdate("dataValid", false)
});
}
}
</script>
<script>
function checkRecognizedErrors() {
let recognizedErrors = parseInt(document.getElementById("go-nogo-recognized-errors").value);
let recognizedErrorsReactionTime = document.getElementById("go-nogo-recognized-error-time");
let recognizedErrorsReactionTimeDiv = document.getElementById("go-nogo-recognized-error-time-div");
if (recognizedErrors != null && recognizedErrors > 0) {
recognizedErrorsReactionTimeDiv.classList.remove("visually-hidden");
recognizedErrorsReactionTime.removeAttribute("disabled");
updatedLines();
} else {
recognizedErrorsReactionTimeDiv.classList.add("visually-hidden");
recognizedErrorsReactionTime.setAttribute("disabled", "");
updatedLines();
}
}
function checkTotalErrors() {
let totalErrors = parseInt(document.getElementById("go-nogo-total-errors").value);
let wrongErrors = parseInt(document.getElementById("go-nogo-wrong-errors").value);
totalErrors = (totalErrors === null) ? 0: totalErrors;
wrongErrors = (wrongErrors === null) ? 0: wrongErrors;
let goNogoErrorBlock = document.getElementById("go-nogo-error-display");
let recognizedErrors = document.getElementById("go-nogo-recognized-errors");
if ((totalErrors + wrongErrors) > 0) {
goNogoErrorBlock.classList.remove("visually-hidden");
recognizedErrors.removeAttribute("disabled");
updatedLines();
} else {
goNogoErrorBlock.classList.add("visually-hidden");
recognizedErrors.setAttribute("disabled", "");
updatedLines();
}
}
</script>
<script>
function updateGoNogoBlockCount() {
let totalErrors = document.getElementById("go-nogo-total-errors");
let wrongErrors = document.getElementById("go-nogo-wrong-errors");
let recognizedErrors = document.getElementById("go-nogo-recognized-errors");
let totalErrorFeedback = document.getElementById("go-nogo-total-errors-invalid-feedback");
let wrongErrorFeedback = document.getElementById("go-nogo-wrong-errors-invalid-feedback");
let recognizedErrorFeedback = document.getElementById("go-nogo-recognized-errors-invalid-feedback");
const blockCountSelector = document.getElementById("go-nogo-block-count");
const blockCount = parseInt(blockCountSelector.value);
const maxNumber = blockCount * 60;
const maxNumberString = maxNumber.toString()
totalErrors.max = maxNumberString;
wrongErrors.max = maxNumberString;
recognizedErrors.max = maxNumberString;
totalErrors.placeholder = "0 - " + maxNumberString;
wrongErrors.placeholder = "0 - " + maxNumberString;
recognizedErrors.placeholder = "0 - " + maxNumberString;
totalErrorFeedback.innerText = "Ganzzahl zwischen 0 und " + (blockCount * 60).toString() + " erwartet";
wrongErrorFeedback.innerText = "Ganzzahl zwischen 0 und " + (blockCount * 60).toString() + " erwartet";
recognizedErrorFeedback.innerText = "Ganzzahl zwischen 0 und " + (blockCount * 60).toString() + " erwartet";
}
</script>
<script>
function updateWechslerRanges() {
let immediateRecall = document.getElementById("logical-memory-immediate-recall");
let immediateRecallFeedback = document.getElementById("logical-memory-immediate-recall-feedback");
let delayedRecall = document.getElementById("logical-memory-delayed-recall");
let delayedRecallFeedback = document.getElementById("logical-memory-delayed-recall-feedback");
if (event.target.id == "logical-memory-variant-ab"){
var irMax = 53;
var drMax = 39;
} else if (event.target.id == "logical-memory-variant-bc"){
var irMax = 50;
var drMax = 50;
}
immediateRecall.setAttribute("max", irMax);
immediateRecall.setAttribute("placeholder", `0 ${irMax}`);
immediateRecallFeedback.innerText = `Ganzzahl zwischen 0 und ${irMax} erwartet.`;
delayedRecall.setAttribute("max", drMax);
delayedRecall.setAttribute("placeholder", `0 ${drMax}`);
delayedRecallFeedback.innerText = `Ganzzahl zwischen 0 und ${drMax} erwartet.`;
}
</script>
<script>
/*
* This could be automated by identifying group switches by the presence of the
* "data-inm-switch-group" attribute. Group members could be identified by naming
* conventions, if the group leader ID is "x", then the group members could be
* all elements with id "x-*". But for now it is explicit in oder to have more
* control over the names and in order to clearly state the dependencies.
*/
let groupLeaderIds = [
"enable-acl-k",
"enable-ad",
"enable-demtect",
"enable-euroqol",
"enable-jtt",
"enable-dual-task",
"enable-kas",
"enable-kopss",
"enable-moto-test",
"enable-tmt",
"enable-tug",
"enable-psqi",
"enable-vosp",
"enable-wms",
];
function changeGroupedSwitches(changeEvent) {
let checkedState = changeEvent.srcElement.checked;
let dependentIds = changeEvent.srcElement.getAttribute("data-inm-switch-group").split(";");
for (let elementId of dependentIds) {
let element = document.getElementById(elementId);
element.checked = checkedState;
element.dispatchEvent(new Event('change', {'bubbles': true}));
}
}
(function () {
for (let leaderId of groupLeaderIds) {
document.getElementById(leaderId).addEventListener("change", changeGroupedSwitches);
}
})();
</script>
<script>
let inputControllerIds = [
"enable-acl-k-communication",
"enable-acl-k-cst",
"enable-acl-k-reading",
"enable-acl-k-st",
"enable-ad-blood",
"enable-ad-eeg",
"enable-ad-gait-lab",
"enable-ad-mrt",
"enable-arat",
"enable-bdi-ii",
"enable-demtect-cn",
"enable-demtect-nr",
"enable-demtect-recall",
"enable-demtect-supermarket",
"enable-demtect-wordlist",
"enable-education",
"enable-euroqol-code",
"enable-euroqol-vas",
"enable-go-nogo",
"enable-go-nogo-variant",
"enable-jtt-checkers",
"enable-jtt-lho",
"enable-jtt-llo",
"enable-jtt-simulated-feeding",
"enable-jtt-small-things",
"enable-jtt-turn-cards",
"enable-jtt-incorrect",
"enable-dual-task-hand",
"enable-dual-task-reaction-time-audio",
"enable-dual-task-reaction-time-visual",
"enable-dual-task-omissions-audio",
"enable-dual-task-omissions-visual",
"enable-dual-task-errors-total",
"enable-dual-task-omissions-total",
"enable-kas-iah",
"enable-kas-ipf",
"enable-kas-pah",
"enable-kas-pbf",
"enable-kopss-affect",
"enable-kopss-bo",
"enable-kopss-calc",
"enable-kopss-epa",
"enable-kopss-memory",
"enable-kopss-orientation",
"enable-kopss-praxie",
"enable-kopss-speech",
"enable-kopss-vsp",
"enable-logical-memory-variant",
"enable-logical-memory-immediate-recall",
"enable-logical-memory-immediate-recall-scaled",
"enable-logical-memory-delayed-recall",
"enable-logical-memory-delayed-recall-scaled",
"enable-madrs",
"enable-moto-test-ftf",
"enable-moto-test-lat",
"enable-moto-test-mgf",
"enable-mrs",
"enable-pegboard-test",
"enable-tmt-a",
"enable-tmt-b",
"enable-tug-executed",
"enable-tug-imagined",
"enable-psqi-sleep-quality",
"enable-psqi-sleep-latency",
"enable-psqi-sleep-duration",
"enable-psqi-sleep-efficiency",
"enable-psqi-sleep-disturbance",
"enable-psqi-meds",
"enable-psqi-day-dysfunction",
"enable-vosp-cube-analysis-score",
"enable-vosp-cube-analysis-pct-rank"
];
function changeControlledInputs(changeEvent) {
let checkedState = changeEvent.srcElement.checked;
let controlledIds = changeEvent.srcElement.getAttribute("data-inm-controlled-inputs").split(";");
for (let elementId of controlledIds) {
let element = document.getElementById(elementId);
if (checkedState === true)
element.disabled = false;
else
element.disabled = true;
}
}
(function () {
for (let leaderId of inputControllerIds) {
document.getElementById(leaderId).addEventListener("change", changeControlledInputs);
}
})();
</script>
<script>
const xOffset = 8;
let lineSwitches = [
"enable-acl-k",
"enable-ad",
"enable-demtect",
"enable-jtt",
"enable-dual-task",
"enable-euroqol",
"enable-kas",
"enable-kopss",
"enable-moto-test",
"enable-tmt",
"enable-tug",
"enable-psqi",
"enable-vosp",
"enable-wms",
];
function updatedLines() {
bodyElement = document.getElementById("main-body");
svgElement = document.getElementById("svg");
svgElement.setAttribute("height", bodyElement.offsetHeight.toString());
for (let originId of lineSwitches) {
let element = document.getElementById(originId);
let lineIds = element.getAttribute("data-inm-lines").split(";");
let verticalLineElement = document.getElementById(lineIds[0]);
let horizontalLineElement = document.getElementById(lineIds[1]);
let endId = element.getAttribute("data-inm-line-end");
let endElement = document.getElementById(endId);
let x0 = element.offsetLeft + element.offsetWidth;
let x = element.offsetLeft + element.offsetWidth + xOffset;
x0 = element.offsetLeft;
x = element.offsetLeft - xOffset;
let y1 = element.offsetTop + (element.offsetHeight / 2.0);
let y2 = endElement.offsetTop + (element.offsetHeight);
verticalLineElement.setAttribute("x1", x.toString());
verticalLineElement.setAttribute("x2", x.toString());
verticalLineElement.setAttribute("y1", y1.toString());
verticalLineElement.setAttribute("y2", y2.toString());
horizontalLineElement.setAttribute("x1", x0.toString());
horizontalLineElement.setAttribute("x2", x.toString());
horizontalLineElement.setAttribute("y1", y1.toString());
horizontalLineElement.setAttribute("y2", y1.toString());
}
}
window.onresize = updatedLines;
let observer = new ResizeObserver(updatedLines);
observer.observe(document.getElementById("main-body"));
updatedLines();
</script>
<script>
// Local save
const lsb = document.getElementById("local-save-button");
lsb.onclick = function () {
let savedObject = getContentObj();
// refuse to save without subject pseudonym
if (savedObject["subject-pseudonym"] === "") {
window.alert(
"Vor dem Speichern bitte Probanden-Pseudonym eingeben"
);
return false;
}
// save using pseudonym as filename
let fname = savedObject["subject-pseudonym"] + ".json";
var bb = new Blob([JSON.stringify(savedObject)], {
type: "text/json;charset=utf-8",
});
var a = document.createElement("a");
a.setAttribute("download", fname);
a.setAttribute("href", URL.createObjectURL(bb));
a.click();
a.remove();
// allow submit button to be enabled
submitButtonUpdater.setAndUpdate("dataSaved", true);
return false;
};
</script>
<script>
// Local load
function resetTheForm(fieldsToWrite) {
// call reset() to clear the form
document.getElementById("entry-form").reset();
// while reset affects the sliders used to enable/disable fields,
// it does not change the field's disabled status
// looks like we need to do this explicitly
let shouldBeDisabled = [
"patient-main-disease",
"patient-stronger-impacted-hand-left",
"patient-stronger-impacted-hand-right",
"patient-stronger-impacted-hand-none",
"go-nogo-recognized-error-time",
"kas-sum",
"kopss-sum",
"acl-k-sum",
"demtect-sum",
"psqi-sum",
"additional-mrt-url",
"additional-mrt-resting-state",
"additional-mrt-resting-state-valid",
"additional-mrt-tapping-task",
"additional-mrt-tapping-task-valid",
"additional-mrt-anatomical-representation",
"additional-mrt-dti",
"additional-mrt-dti-valid",
"additional-eeg-url",
"additional-blood-sampling-url",
"additional-gait-lab-url",
"submit-button",
];
// disable all fields which should be disabled
shouldBeDisabled.forEach((fieldId) => {
let elem = document.getElementById(fieldId);
if (!elem.disabled) {
elem.disabled = true;
}
});
// enable all fields which should be enabled
fieldsToWrite.forEach((fieldId) => {
let elem = document.getElementById(fieldId);
// note: this won't catch radio buttons, but presently they cannot get disabled
if (
elem !== null &&
elem.disabled &&
!shouldBeDisabled.includes(fieldId)
) {
elem.disabled = false;
}
});
}
function insertSubjectGroup(groupName) {
document.getElementById("subject-group").value = groupName;
patientUpdateElement(); // required to display or hide patient-specific fields
}
function insertGoNogo(loadedData) {
function updateAndDispatch(obj, key, evt, parseFun) {
// helper to update a field and trigger an event if obj[key] is nonempty
let elem = document.getElementById(key);
if (obj[key] !== "") {
if (parseFun === undefined) {
elem.value = obj[key];
} else {
elem.value = parseFun(obj[key]);
}
elem.dispatchEvent(evt);
}
}
let syntheticChangeEvent = new UIEvent("change");
// update block count, reaction times, and error counts
updateAndDispatch(
loadedData,
"go-nogo-block-count",
syntheticChangeEvent
);
updateAndDispatch(
loadedData,
"go-nogo-correct-answer-time",
syntheticChangeEvent,
parseFloat
);
updateAndDispatch(
loadedData,
"go-nogo-total-errors",
syntheticChangeEvent,
parseInt
);
updateAndDispatch(
loadedData,
"go-nogo-wrong-errors",
syntheticChangeEvent,
parseInt
);
updateAndDispatch(
loadedData,
"go-nogo-recognized-errors",
syntheticChangeEvent,
parseInt
);
updateAndDispatch(
loadedData,
"go-nogo-recognized-error-time",
syntheticChangeEvent,
parseFloat
);
// note *-time fields have no onChange event, but that shouldn't be a problem
// update checkbox
if (loadedData["go-nogo-incorrectly-executed"] === "True") {
document.getElementById(
"go-nogo-incorrectly-executed"
).checked = true;
} else if (loadedData["go-nogo-incorrectly-executed"] === "False") {
document.getElementById(
"go-nogo-incorrectly-executed"
).checked = false;
}
}
function loadData() {
let obj = JSON.parse(this.result); // when used as event handler, this = element on which is placed
// set the state to a clean sheet
resetTheForm(Object.keys(obj));
// some fields need to trigger their events and need more than just value update
let handledSeparately = [/subject-group/, /go-nogo-(?!variant)/];
insertSubjectGroup(obj["subject-group"]);
insertGoNogo(obj);
// iterate through all the loaded values and put remaining values into the form
for (let [key, value] of Object.entries(obj)) {
if (handledSeparately.some((x) => key.match(x))) continue;
let element = document.getElementById(key); // will be null if key not present
if (element !== null) {
let elType = element.getAttribute("type");
if (
(elType === "text") |
(elType === "date") |
(elType === "url")
) {
element.value = value;
} else if (elType === "number") {
if (value === "") {
// disabled or NaN - don't change (relies on the form being reset by this function)
} else {
element.value = parseFloat(value);
}
} else if (elType === "checkbox") {
if (value === "True") {
element.checked = true;
} else if (value === "False") {
element.checked = false;
}
// note: (value === "") <-> checkbox was disabled; do nothing
} else if (element.type === "textarea") {
// for textarea, getAttribute() doesn't work
element.value = value;
} else if (element.getAttribute("class") == "form-select") {
element.value = value;
} else {
// catch those that didn't match - shouldn't be any
console.log(
"unmatched",
element.getAttribute("class"),
elType,
element
);
}
} else {
// element with given id not found, probably radiobox
// assuming the coding is done with name & value proprerties
document.getElementsByName(key).forEach((elem) => {
// assuming type === radio, might check
if (elem.getAttribute("value") === value) {
elem.checked = true;
} else {
elem.checked = false;
}
});
}
}
// Weitere Diagnostik starts disabled, enable if needed
if (
obj["additional-mrt-url"] !== "" ||
obj["additional-eeg-url"] !== "" ||
obj["additional-blood-sampling-url"] != "" ||
obj["additional-gait-lab-url"] != ""
) {
document.getElementById("enable-ad").click();
}
// update sum fields
jttSum();
kasSum();
kopssSum();
aclKSum();
demtectSum();
psqiSum();
// wechsler variant choice requires updating ranges
if (obj["logical-memory-variant"] === "A+B") {
let event = new Event("change");
document.getElementById("logical-memory-variant-ab").dispatchEvent(event);
} else if (obj["logical-memory-variant"] === "B+C") {
let event = new Event("change");
document.getElementById("logical-memory-variant-bc").dispatchEvent(event);
}
}
function readSavedJSON() {
const [dataFile] = this.files; // let dataFile = this.files[0];
const reader = new FileReader();
reader.addEventListener("load", loadData, false);
if (dataFile) {
reader.readAsText(dataFile);
}
}
const fileSelect = document.getElementById("local-load-button");
const fileElem = document.getElementById("local-load-input");
fileSelect.addEventListener(
"click",
function (e) {
if (fileElem) {
fileElem.click();
}
},
false
);
fileElem.addEventListener("change", readSavedJSON, false);
</script>
</body>
</html>
<!-- Local Variables: -->
<!-- sgml-basic-offset: 4 -->
<!-- web-mode-script-padding: 4 -->
<!-- indent-tabs-mode: nil -->
<!-- End: -->