diff --git a/assets/components/enotf/topbar.php b/assets/components/enotf/topbar.php
index f6b54abb..1d942bc5 100644
--- a/assets/components/enotf/topbar.php
+++ b/assets/components/enotf/topbar.php
@@ -27,6 +27,11 @@
+
+ Automatisch erstellt mit intraRP Version = SYSTEM_VERSION ?>
+ Papieransicht
+
+
diff --git a/assets/css/print.css b/assets/css/print.css
new file mode 100644
index 00000000..7965beef
--- /dev/null
+++ b/assets/css/print.css
@@ -0,0 +1,272 @@
+body {
+ --bs-body-bg: gray;
+}
+
+.print__paper {
+ height: 297mm;
+ width: 210mm;
+ background-color: #fff;
+ margin: 0 auto;
+ padding: 1.27cm;
+}
+
+h6.print__heading {
+ text-transform: uppercase;
+ font-size: 8pt;
+ margin-bottom: 0;
+}
+
+h5.print__heading {
+ font-size: 8pt;
+ margin-bottom: 0;
+}
+
+h1.print__heading-main {
+ font-size: 14pt;
+ text-transform: uppercase;
+ font-weight: bold;
+}
+
+.print__divider {
+ margin-left: calc(var(--bs-gutter-x) * -0.5) !important;
+ margin-right: calc(var(--bs-gutter-x) * -0.5) !important;
+}
+
+.print__text-small {
+ font-size: 6pt;
+}
+
+p.print__text-small {
+ margin-bottom: 0;
+}
+
+input[type=radio] {
+ appearance: none;
+ -webkit-appearance: none;
+ width: 6pt;
+ height: 6pt;
+ border: 1px solid #000;
+ border-radius: 50%;
+ display: inline-block;
+ position: relative;
+ cursor: pointer;
+ outline: none;
+ vertical-align: middle;
+ margin-right: 2px;
+ cursor: default;
+}
+
+input[type=radio]:checked {
+ background-color: #000;
+ border-color: #000;
+}
+
+.print__field-wrapper {
+ position: relative;
+ margin-bottom: 4pt;
+}
+.print__field-wrapper::after {
+ content: attr(data-field-name);
+ position: absolute;
+ right: 3pt;
+ bottom: 0;
+ font-size: 5pt;
+}
+.print__field-wrapper::before {
+ content: attr(data-vp-name);
+ position: absolute;
+ left: 3pt;
+ top: 0;
+ font-size: 5pt;
+}
+.print__field-wrapper .print__field {
+ font-size: 11pt;
+ font-weight: 600;
+ border: 1px solid #000;
+ border-top: 0;
+ padding-left: 0.35rem;
+ cursor: default;
+ pointer-events: none;
+ user-select: none;
+ caret-color: transparent;
+}
+.print__field-wrapper .print__field:focus {
+ outline: none;
+}
+.print__field-wrapper .print__field-vitals {
+ font-size: 11pt;
+ font-weight: 600;
+ border: 1px solid #000;
+ border-top: 0;
+ border-right: 0;
+ padding-left: 0.35rem;
+ cursor: default;
+ pointer-events: none;
+ user-select: none;
+ caret-color: transparent;
+ margin-top: 5pt;
+}
+.print__field-wrapper .print__field-vitals:focus {
+ outline: none;
+}
+.print__field-wrapper .print__textbox {
+ font-size: 7pt;
+ border: 0;
+ cursor: default;
+ pointer-events: none;
+ user-select: none;
+ caret-color: transparent;
+}
+.print__field-wrapper .print__textbox:focus {
+ outline: none;
+}
+
+.print__full-height {
+ height: 100%;
+}
+
+.print__vitals-table {
+ border-collapse: collapse;
+}
+.print__vitals-table th,
+.print__vitals-table td {
+ border: 1px solid #000;
+ padding: 3pt !important;
+}
+.print__vitals-table th {
+ background-color: #f0f0f0;
+ font-weight: bold;
+}
+.print__vitals-table tbody tr:nth-child(even) {
+ background-color: #f9f9f9;
+}
+.print__vitals-table tbody tr:hover {
+ background-color: #f0f0f0;
+}
+
+.topbar-btn {
+ display: inline-flex;
+ align-items: center;
+ justify-content: center;
+ width: 40px;
+ height: 40px;
+ border: 1px solid #ddd;
+ background: white;
+ color: #333;
+ text-decoration: none;
+ margin-left: 5px;
+ cursor: pointer;
+ transition: all 0.2s ease;
+ font-size: 20px;
+}
+
+.topbar-btn:hover {
+ background: #f0f0f0;
+ border-color: #bbb;
+ color: #000;
+}
+
+.topbar-btn:active {
+ background: #e0e0e0;
+}
+
+body {
+ transform-origin: top center;
+ transition: transform 0.2s ease;
+}
+
+@media print {
+ @page {
+ size: A4;
+ margin: 0;
+ }
+ * {
+ -webkit-print-color-adjust: exact !important;
+ print-color-adjust: exact !important;
+ color-adjust: exact !important;
+ }
+
+ body {
+ margin: 0;
+ padding: 0;
+ background: white !important;
+ transform: none !important;
+ }
+
+ .print__paper {
+ page-break-after: always;
+ page-break-inside: avoid;
+ margin: 0;
+ padding: 1.27cm;
+ width: 210mm;
+ height: 297mm;
+ box-sizing: border-box;
+ transform: none !important;
+ }
+
+ .print__paper:last-child {
+ page-break-after: auto;
+ }
+
+ .row {
+ page-break-inside: avoid;
+ display: flex !important;
+ flex-wrap: wrap !important;
+ }
+
+ .col,
+[class*=col-] {
+ flex-shrink: 0;
+ }
+
+ canvas {
+ max-width: 100% !important;
+ height: auto !important;
+ display: block !important;
+ }
+
+ .col:has(#vitalChart) {
+ border-left: 1px solid #000 !important;
+ border-bottom: 1px solid #000 !important;
+ }
+
+ .border {
+ border-color: #000 !important;
+ }
+
+ input[type=radio] {
+ -webkit-appearance: none;
+ appearance: none;
+ width: 6pt;
+ height: 6pt;
+ border: 1px solid #000 !important;
+ border-radius: 50%;
+ background: white;
+ }
+
+ input[type=radio]:checked {
+ background-color: #000 !important;
+ }
+
+ input[type=text],
+textarea,
+select {
+ border-color: #000 !important;
+ background: white !important;
+ color: black !important;
+ }
+
+ * {
+ color: black !important;
+ }
+
+ .print__heading,
+.print__heading-main,
+.print__text-small {
+ color: black !important;
+ }
+
+ #topbar {
+ display: none !important;
+ }
+}
\ No newline at end of file
diff --git a/assets/css/print.min.css b/assets/css/print.min.css
new file mode 100644
index 00000000..4384f18f
--- /dev/null
+++ b/assets/css/print.min.css
@@ -0,0 +1 @@
+h5.print__heading,h6.print__heading{font-size:8pt;margin-bottom:0}.print__paper{height:297mm;width:210mm;background-color:#fff;margin:0 auto;padding:1.27cm}h6.print__heading{text-transform:uppercase}h1.print__heading-main{font-size:14pt;text-transform:uppercase;font-weight:700}.print__divider{margin-left:calc(var(--bs-gutter-x) * -.5)!important;margin-right:calc(var(--bs-gutter-x) * -.5)!important}.print__text-small{font-size:6pt}p.print__text-small{margin-bottom:0}input[type=radio]{appearance:none;-webkit-appearance:none;width:6pt;height:6pt;border:1px solid #000;border-radius:50%;display:inline-block;position:relative;outline:0;vertical-align:middle;margin-right:2px;cursor:default}input[type=radio]:checked{background-color:#000;border-color:#000}.print__field-wrapper{position:relative;margin-bottom:4pt}.print__field-wrapper::after{content:attr(data-field-name);position:absolute;right:3pt;bottom:0;font-size:5pt}.print__field-wrapper::before{content:attr(data-vp-name);position:absolute;left:3pt;top:0;font-size:5pt}.print__field-wrapper .print__field,.print__field-wrapper .print__field-vitals{font-size:11pt;font-weight:600;padding-left:.35rem;pointer-events:none;caret-color:transparent}.print__field-wrapper .print__field{border:1px solid #000;border-top:0;cursor:default;user-select:none}.print__field-wrapper .print__field:focus{outline:0}.print__field-wrapper .print__field-vitals{border:1px solid #000;border-top:0;border-right:0;cursor:default;user-select:none;margin-top:5pt}.print__field-wrapper .print__field-vitals:focus{outline:0}.print__field-wrapper .print__textbox{font-size:7pt;border:0;cursor:default;pointer-events:none;user-select:none;caret-color:transparent}.print__field-wrapper .print__textbox:focus{outline:0}.print__full-height{height:100%}.print__vitals-table{border-collapse:collapse}.print__vitals-table td,.print__vitals-table th{border:1px solid #000;padding:3pt!important}.print__vitals-table th{background-color:#f0f0f0;font-weight:700}.print__vitals-table tbody tr:nth-child(even){background-color:#f9f9f9}.print__vitals-table tbody tr:hover{background-color:#f0f0f0}.topbar-btn{display:inline-flex;align-items:center;justify-content:center;width:40px;height:40px;border:1px solid #ddd;background:#fff;color:#333;text-decoration:none;margin-left:5px;cursor:pointer;transition:all .2s ease;font-size:20px}.topbar-btn:hover{background:#f0f0f0;border-color:#bbb;color:#000}.topbar-btn:active{background:#e0e0e0}body{--bs-body-bg:gray;transform-origin:top center;transition:transform .2s ease}@media print{.print__paper,.row{page-break-inside:avoid}.print__paper,body{margin:0;transform:none!important}@page{size:A4;margin:0}*{-webkit-print-color-adjust:exact!important;print-color-adjust:exact!important;color-adjust:exact!important}body{padding:0;background:#fff!important}.print__paper{page-break-after:always;padding:1.27cm;width:210mm;height:297mm;box-sizing:border-box}.print__paper:last-child{page-break-after:auto}.row{display:flex!important;flex-wrap:wrap!important}.col,[class*=col-]{flex-shrink:0}canvas{max-width:100%!important;height:auto!important;display:block!important}.col:has(#vitalChart){border-left:1px solid #000!important;border-bottom:1px solid #000!important}.border{border-color:#000!important}input[type=radio]{-webkit-appearance:none;appearance:none;width:6pt;height:6pt;border:1px solid #000!important;border-radius:50%;background:#fff}input[type=radio]:checked{background-color:#000!important}input[type=text],select,textarea{border-color:#000!important;background:#fff!important;color:#000!important}*,.print__heading,.print__heading-main,.print__text-small{color:#000!important}#topbar{display:none!important}}
\ No newline at end of file
diff --git a/assets/css/print.scss b/assets/css/print.scss
new file mode 100644
index 00000000..6afd7faa
--- /dev/null
+++ b/assets/css/print.scss
@@ -0,0 +1,285 @@
+body {
+ --bs-body-bg: gray;
+}
+
+.print__paper {
+ height: 297mm;
+ width: 210mm;
+ background-color: #fff;
+ margin: 0 auto;
+ padding: 1.27cm;
+}
+
+h6.print__heading {
+ text-transform: uppercase;
+ font-size: 8pt;
+ margin-bottom: 0;
+}
+
+h5.print__heading {
+ font-size: 8pt;
+ margin-bottom: 0;
+}
+
+h1.print__heading-main {
+ font-size: 14pt;
+ text-transform: uppercase;
+ font-weight: bold;
+}
+
+.print__divider {
+ margin-left: calc(var(--bs-gutter-x) * -0.5) !important;
+ margin-right: calc(var(--bs-gutter-x) * -0.5) !important;
+}
+
+.print__text-small {
+ font-size: 6pt;
+}
+
+p.print__text-small {
+ margin-bottom: 0;
+}
+
+input[type="radio"] {
+ appearance: none;
+ -webkit-appearance: none;
+ width: 6pt;
+ height: 6pt;
+ border: 1px solid #000;
+ border-radius: 50%;
+ display: inline-block;
+ position: relative;
+ cursor: pointer;
+ outline: none;
+ vertical-align: middle;
+ margin-right: 2px;
+ cursor: default;
+}
+
+input[type="radio"]:checked {
+ background-color: #000;
+ border-color: #000;
+}
+
+.print__field-wrapper {
+ position: relative;
+ margin-bottom: 4pt;
+
+ &::after {
+ content: attr(data-field-name);
+ position: absolute;
+ right: 3pt;
+ bottom: 0;
+ font-size: 5pt;
+ }
+
+ &::before {
+ content: attr(data-vp-name);
+ position: absolute;
+ left: 3pt;
+ top: 0;
+ font-size: 5pt;
+ }
+
+ .print__field {
+ font-size: 11pt;
+ font-weight: 600;
+ border: 1px solid #000;
+ border-top: 0;
+ padding-left: 0.35rem;
+ cursor: default;
+ pointer-events: none;
+ user-select: none;
+ caret-color: transparent;
+
+ &:focus {
+ outline: none;
+ }
+ }
+
+ .print__field-vitals {
+ font-size: 11pt;
+ font-weight: 600;
+ border: 1px solid #000;
+ border-top: 0;
+ border-right: 0;
+ padding-left: 0.35rem;
+ cursor: default;
+ pointer-events: none;
+ user-select: none;
+ caret-color: transparent;
+ margin-top: 5pt;
+
+ &:focus {
+ outline: none;
+ }
+ }
+
+ .print__textbox {
+ font-size: 7pt;
+ border: 0;
+ cursor: default;
+ pointer-events: none;
+ user-select: none;
+ caret-color: transparent;
+
+ &:focus {
+ outline: none;
+ }
+ }
+}
+
+.print__full-height {
+ height: 100%;
+}
+
+.print__vitals-table {
+ border-collapse: collapse;
+
+ th,
+ td {
+ border: 1px solid #000;
+ padding: 3pt !important;
+ }
+
+ th {
+ background-color: #f0f0f0;
+ font-weight: bold;
+ }
+
+ tbody tr:nth-child(even) {
+ background-color: #f9f9f9;
+ }
+
+ tbody tr:hover {
+ background-color: #f0f0f0;
+ }
+}
+
+.topbar-btn {
+ display: inline-flex;
+ align-items: center;
+ justify-content: center;
+ width: 40px;
+ height: 40px;
+ border: 1px solid #ddd;
+ background: white;
+ color: #333;
+ text-decoration: none;
+ margin-left: 5px;
+ cursor: pointer;
+ transition: all 0.2s ease;
+ font-size: 20px;
+}
+
+.topbar-btn:hover {
+ background: #f0f0f0;
+ border-color: #bbb;
+ color: #000;
+}
+
+.topbar-btn:active {
+ background: #e0e0e0;
+}
+
+body {
+ transform-origin: top center;
+ transition: transform 0.2s ease;
+}
+
+@media print {
+ @page {
+ size: A4;
+ margin: 0;
+ }
+
+ * {
+ -webkit-print-color-adjust: exact !important;
+ print-color-adjust: exact !important;
+ color-adjust: exact !important;
+ }
+
+ body {
+ margin: 0;
+ padding: 0;
+ background: white !important;
+ transform: none !important;
+ }
+
+ .print__paper {
+ page-break-after: always;
+ page-break-inside: avoid;
+ margin: 0;
+ padding: 1.27cm;
+ width: 210mm;
+ height: 297mm;
+ box-sizing: border-box;
+ transform: none !important;
+ }
+
+ .print__paper:last-child {
+ page-break-after: auto;
+ }
+
+ .row {
+ page-break-inside: avoid;
+ display: flex !important;
+ flex-wrap: wrap !important;
+ }
+
+ .col,
+ [class*="col-"] {
+ flex-shrink: 0;
+ }
+
+ canvas {
+ max-width: 100% !important;
+ height: auto !important;
+ display: block !important;
+ }
+
+ .col:has(#vitalChart) {
+ border-left: 1px solid #000 !important;
+ border-bottom: 1px solid #000 !important;
+ }
+
+ .border {
+ border-color: #000 !important;
+ }
+
+ input[type="radio"] {
+ -webkit-appearance: none;
+ appearance: none;
+ width: 6pt;
+ height: 6pt;
+ border: 1px solid #000 !important;
+ border-radius: 50%;
+ background: white;
+ }
+
+ input[type="radio"]:checked {
+ background-color: #000 !important;
+ }
+
+ input[type="text"],
+ textarea,
+ select {
+ border-color: #000 !important;
+ background: white !important;
+ color: black !important;
+ }
+
+ * {
+ color: black !important;
+ }
+
+ .print__heading,
+ .print__heading-main,
+ .print__text-small {
+ color: black !important;
+ }
+
+ #topbar {
+ display: none !important;
+ }
+}
diff --git a/enotf/print/index.php b/enotf/print/index.php
new file mode 100644
index 00000000..e7ba57c4
--- /dev/null
+++ b/enotf/print/index.php
@@ -0,0 +1,2379 @@
+prepare($queryget);
+ $stmt->execute(['enr' => $_GET['enr']]);
+
+ $daten = $stmt->fetch(PDO::FETCH_ASSOC);
+
+ if (count($daten) == 0) {
+ header("Location: " . BASE_PATH . "enotf/");
+ exit();
+ }
+} else {
+ header("Location: " . BASE_PATH . "enotf/");
+ exit();
+}
+
+$enr = $daten['enr'];
+
+$prot_url = "https://" . SYSTEM_URL . "/enotf/protokoll/index.php?enr=" . $enr;
+$defaultUrl = $prot_url;
+
+date_default_timezone_set('Europe/Berlin');
+$currentTime = date('H:i');
+$currentDate = date('d.m.Y');
+?>
+
+
+
+
+
+
+
+
+ Patientendaten
+
+
+
+
+ Geschlecht
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Jahre
+ Einsatzprotokoll
+
+ Notarztprotokoll
+
+ Einsatztechnische Daten
+ Notfallgeschehen, Anamnese, Erstebefund, Vormedikation, Vorbehandlung
+ Erstbefund
+ Atemwege
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Zyanose
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Atmung
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Auskultation
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Kreislauf
+ 'stabil',
+ 2 => 'instabil',
+ 3 => 'Nicht beurteilbar'
+ ];
+ ?>
+
+
+
+
+ Zustand
+
= $c_kreislauf_labels[$daten['c_kreislauf']] ?? '' ?>
+ Puls
+
+
+
+
+
+
+
+
+
+
+ Radialispuls
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ EKG
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Messwerte initial
+ ERKRANKUNGEN
+ 'Schlaganfall / TIA / ICB',
+ 2 => 'ICB (klin. Diagn.)',
+ 3 => 'SAB (klin. Diagn.)',
+ 4 => 'Krampfanfall',
+ 5 => 'Status Epilepticus',
+ 6 => 'Meningitis / Encephalitis',
+ 9 => 'sonstige Erkrankung ZNS',
+
+ // Herz-Kreislauf (11-29)
+ 11 => 'ACS / NSTEMI',
+ 12 => 'ACS / STEMI',
+ 13 => 'Kardiogener Schock',
+ 14 => 'tachykarde Arrhythmie',
+ 15 => 'bradykarde Arrhythmie',
+ 16 => 'Schrittmacher-/ICD Fehlfunktion',
+ 17 => 'Lungenembolie',
+ 18 => 'Lungenödem',
+ 19 => 'hypertensiver Notfall',
+ 20 => 'Aortenaneurysma',
+ 21 => 'Hypotonie',
+ 22 => 'Synkope',
+ 23 => 'Thrombose / art. Verschluss',
+ 24 => 'Herz-Kreislauf-Stillstand',
+ 25 => 'Schock unklarer Genese',
+ 26 => 'unklarer Thoraxschmerz',
+ 27 => 'orthostatische Fehlregulation',
+ 28 => 'hypertensive Krise / Entgleisung',
+ 29 => 'sonstige Erkrankung Herz-Kreislauf',
+
+ // Atemwege (31-49)
+ 31 => 'Asthma (Anfall)',
+ 32 => 'Status Asthmaticus',
+ 33 => 'exacerbierte COPD',
+ 34 => 'Aspiration',
+ 35 => 'Pneumonie / Bronchitis',
+ 36 => 'Hyperventilation',
+ 37 => 'Spontanpneumothorax',
+ 38 => 'Hämoptysis',
+ 39 => 'Dyspnoe unklarer Ursache',
+ 49 => 'sonstige Erkrankung Atmung',
+
+ // Abdomen (51-59)
+ 51 => 'akutes Abdomen',
+ 52 => 'obere GI-Blutung',
+ 53 => 'untere GI-Blutung',
+ 54 => 'Gallenkolik',
+ 55 => 'Nierenkolik',
+ 56 => 'Kolik allgemein',
+ 59 => 'sonstige Erkrankung Abdomen',
+
+ // Psychiatrie (61-69)
+ 61 => 'psychischer Ausnahmezustand',
+ 62 => 'Depression',
+ 63 => 'Manie',
+ 64 => 'Intoxikation',
+ 65 => 'Entzug, Delir',
+ 66 => 'Suizidalität',
+ 67 => 'psychosoziale Krise',
+ 69 => 'sonstige Erkrankung Psychiatrie',
+
+ // Stoffwechsel (71-79)
+ 71 => 'Hypoglykämie',
+ 72 => 'Hyperglykämie',
+ 73 => 'Urämie / ANV',
+ 74 => 'Exsikkose',
+ 75 => 'bek. Dialyspflicht',
+ 79 => 'sonstige Erkrankung Stoffwechsel',
+
+ // Sonstige (81-99)
+ 81 => 'Anaphylaxie Grad 1/2',
+ 82 => 'Anaphylaxie Grad 3/4',
+ 83 => 'Infekt / Sepsis / Schock',
+ 84 => 'Hitzeerschöpfung / Hitzschlag',
+ 85 => 'Unterkühlung / Erfrierung',
+ 86 => 'akute Lumbago',
+ 87 => 'Palliative Situation',
+ 88 => 'medizinische Behandlungskompl.',
+ 89 => 'Epistaxis / HNO-Erkrankung',
+ 91 => 'urologische Erkrankung',
+ 92 => 'unklare Erkrankung',
+ 93 => 'akzidentelle Intoxikation',
+ 94 => 'Augenerkrankung',
+ 99 => 'Keine Erkrankung / Verletzung feststellbar',
+
+ // Trauma - Schädel-Hirn (101-104)
+ 101 => 'Trauma Schädel-Hirn leicht',
+ 102 => 'Trauma Schädel-Hirn mittel',
+ 103 => 'Trauma Schädel-Hirn schwer',
+ 104 => 'Trauma Schädel-Hirn tödlich',
+
+ // Trauma - Gesicht (111-114)
+ 111 => 'Trauma Gesicht leicht',
+ 112 => 'Trauma Gesicht mittel',
+ 113 => 'Trauma Gesicht schwer',
+ 114 => 'Trauma Gesicht tödlich',
+
+ // Trauma - HWS (121-124)
+ 121 => 'Trauma HWS leicht',
+ 122 => 'Trauma HWS mittel',
+ 123 => 'Trauma HWS schwer',
+ 124 => 'Trauma HWS tödlich',
+
+ // Trauma - Thorax (131-134)
+ 131 => 'Trauma Thorax leicht',
+ 132 => 'Trauma Thorax mittel',
+ 133 => 'Trauma Thorax schwer',
+ 134 => 'Trauma Thorax tödlich',
+
+ // Trauma - Abdomen (141-144)
+ 141 => 'Trauma Abdomen leicht',
+ 142 => 'Trauma Abdomen mittel',
+ 143 => 'Trauma Abdomen schwer',
+ 144 => 'Trauma Abdomen tödlich',
+
+ // Trauma - BWS / LWS (151-153)
+ 151 => 'Trauma BWS / LWS leicht',
+ 152 => 'Trauma BWS / LWS mittel',
+ 153 => 'Trauma BWS / LWS schwer',
+
+ // Trauma - Becken (161-163)
+ 161 => 'Trauma Becken leicht',
+ 162 => 'Trauma Becken mittel',
+ 163 => 'Trauma Becken schwer',
+
+ // Trauma - obere Extremitäten (171-173)
+ 171 => 'Trauma obere Extremitäten leicht',
+ 172 => 'Trauma obere Extremitäten mittel',
+ 173 => 'Trauma obere Extremitäten schwer',
+
+ // Trauma - untere Extremitäten (181-183)
+ 181 => 'Trauma untere Extremitäten leicht',
+ 182 => 'Trauma untere Extremitäten mittel',
+ 183 => 'Trauma untere Extremitäten schwer',
+
+ // Trauma - Weichteile (191-193)
+ 191 => 'Trauma Weichteile leicht',
+ 192 => 'Trauma Weichteile mittel',
+ 193 => 'Trauma Weichteile schwer',
+
+ // Trauma - spezielle (201-209)
+ 201 => 'Verbrennung / Verbrühung',
+ 202 => 'Inhalationstrauma',
+ 203 => 'Elektrounfall',
+ 204 => '(beinahe-) Ertrinken',
+ 205 => 'Tauchunfall',
+ 206 => 'Verätzung',
+ 209 => 'Sonstige',
+ ];
+
+ $diagnose_haupt_text = '';
+ if (isset($daten['diagnose_haupt']) && !empty($daten['diagnose_haupt'])) {
+ $diagnose_haupt_text = $diagnose_labels[$daten['diagnose_haupt']] ?? 'Unbekannte Diagnose';
+ }
+
+ $diagnose_weitere_array = [];
+ if (!empty($daten['diagnose_weitere'])) {
+ $decoded = json_decode($daten['diagnose_weitere'], true);
+ if (is_array($decoded)) {
+ $diagnose_weitere_array = $decoded;
+ }
+ }
+
+ $diagnose_weitere_text = '';
+ if (!empty($diagnose_weitere_array)) {
+ $diagnose_weitere_labels = [];
+ foreach ($diagnose_weitere_array as $diagnose_id) {
+ if (isset($diagnose_labels[$diagnose_id])) {
+ $diagnose_weitere_labels[] = $diagnose_labels[$diagnose_id];
+ }
+ }
+ $diagnose_weitere_text = implode(', ', $diagnose_weitere_labels);
+ }
+ ?>
+ weitere Diagnosen
+ Neurologie
+
+
+
+
+
+
+
+
+ Bewusstsein = $d_bewusstsein_labels[$daten['d_bewusstsein']] ?? '' ?>
+
+
+
+
+ Augen
+
= 4 - $daten['d_gcs_1'] ?>
+
+ Verbal
+
= 5 - $daten['d_gcs_2'] ?>
+
+ Motorik
+
= 6 - $daten['d_gcs_2'] ?>
+
+ Summe
+
GCS
+ Pupillenstatus
+
+
+
+
+ rechts
+ Weite
+
= $d_pupillenw_1_labels[$daten['d_pupillenw_2']] ?? '' ?>Lichtreaktion
+
= $d_lichtreakt_1_labels[$daten['d_lichtreakt_2']] ?? '' ?>links
+ Weite
+
= $d_pupillenw_1_labels[$daten['d_pupillenw_1']] ?? '' ?>Lichtreaktion
+
= $d_lichtreakt_1_labels[$daten['d_lichtreakt_1']] ?? '' ?>
= $d_ex_1_labels[$daten['d_ex_1']] ?? '' ?>
+
+
+
+
+ Schmerzen
+
NRS = $sz_nrs_labels[$daten['sz_nrs']] ?? '' ?>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Psyche
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Verletzungen
+ 'keine',
+ 2 => 'leicht',
+ 3 => 'mittel',
+ 4 => 'schwer',
+ 99 => 'Nicht untersucht'
+ ];
+ $v_muster_k1_labels = [
+ 1 => 'offen',
+ 2 => 'geschlossen'
+ ];
+ ?>
+
+
+
+
+ Schädel-Hirn
+ = $v_muster_k_labels[$daten['v_muster_k']] ?? '' ?>
+ = $v_muster_k1_labels[$daten['v_muster_k1']] ?? '' ?>
+
+
+ Wirbelsäule
+ = $v_muster_k_labels[$daten['v_muster_w']] ?? '' ?>
+ = $v_muster_k1_labels[$daten['v_muster_w1']] ?? '' ?>
+
+
+ Thorax
+ = $v_muster_k_labels[$daten['v_muster_t']] ?? '' ?>
+ = $v_muster_k1_labels[$daten['v_muster_t1']] ?? '' ?>
+
+
+ Abdomen
+ = $v_muster_k_labels[$daten['v_muster_a']] ?? '' ?>
+ = $v_muster_k1_labels[$daten['v_muster_a1']] ?? '' ?>
+
+
+ Obere Extremitäten
+ = $v_muster_k_labels[$daten['v_muster_al']] ?? '' ?>
+ = $v_muster_k1_labels[$daten['v_muster_al1']] ?? '' ?>
+
+
+ Untere Extremitäten
+ = $v_muster_k_labels[$daten['v_muster_bl']] ?? '' ?>
+ = $v_muster_k1_labels[$daten['v_muster_bl1']] ?? '' ?>
+ Verlaufsbeschreibung
+ Medikation
+
+
+
+
+ Patient Name
+
= $daten['patname'] ?>Geb.Dat.
+
= !empty($daten['patgebdat']) ? date('d.m.Y', strtotime($daten['patgebdat'])) : '' ?>Maßnahmen
+ Zugänge
+ $zugang) {
+ if (
+ $zugang['art'] === $newZugang['art'] &&
+ $zugang['ort'] === $newZugang['ort'] &&
+ $zugang['seite'] === $newZugang['seite']
+ ) {
+ $zugaenge[$index] = $newZugang;
+ return $zugaenge;
+ }
+ }
+
+ $zugaenge[] = $newZugang;
+ return $zugaenge;
+ }
+
+ function removeZugang($zugaenge, $art, $ort, $seite)
+ {
+ return array_values(array_filter($zugaenge, function ($zugang) use ($art, $ort, $seite) {
+ return !($zugang['art'] === $art &&
+ $zugang['ort'] === $ort &&
+ $zugang['seite'] === $seite);
+ }));
+ }
+
+ $currentZugaenge = getCurrentZugaenge($daten['c_zugang'] ?? '');
+
+ function normalize_groesse_pretty(string $raw): string
+ {
+ $v = strtoupper(str_replace(' ', '', trim($raw)));
+ $suffixKurz = false;
+
+ if (str_ends_with($v, '_KURZ')) {
+ $suffixKurz = true;
+ $v = substr($v, 0, -5);
+ }
+
+ if (preg_match('/^(\d{2})G$/', $v, $m)) {
+ $core = $m[1] . 'G';
+ } elseif (preg_match('/^G(\d{2})$/', $v, $m)) {
+ $core = $m[1] . 'G';
+ } elseif (preg_match('/^(15|25|45)MM$/', $v, $m)) {
+ return $m[1] . ' mm';
+ } else {
+ $core = $v;
+ }
+
+ $labels = [
+ '24G' => '24 G',
+ '22G' => '22 G',
+ '20G' => '20 G',
+ '18G' => '18 G',
+ '17G' => '17 G',
+ '16G' => '16 G',
+ '14G' => '14 G',
+ ];
+
+ $pretty = $labels[$core] ?? $raw;
+
+ if ($suffixKurz) {
+ $pretty .= ' kurz';
+ }
+ return $pretty;
+ }
+
+ function displayAllZugaenge($zugangJson)
+ {
+ if (!isset($zugangJson) || $zugangJson === null) {
+ return '';
+ }
+ if ($zugangJson === '0') {
+ return 'Kein Zugang';
+ }
+
+ $zugaenge = getCurrentZugaenge($zugangJson);
+ if (empty($zugaenge)) {
+ return '';
+ }
+
+ usort($zugaenge, function ($a, $b) {
+ return [$a['art'], $a['ort'], $a['seite']] <=> [$b['art'], $b['ort'], $b['seite']];
+ });
+
+ $artNames = ['pvk' => 'PVK', 'zvk' => 'ZVK', 'io' => 'intraossär'];
+ $displays = [];
+
+ foreach ($zugaenge as $zugang) {
+ $artName = $artNames[$zugang['art']] ?? $zugang['art'];
+ $groesse = normalize_groesse_pretty($zugang['groesse'] ?? '');
+ $ort = $zugang['ort'] ?? '';
+ $seite = $zugang['seite'] ?? '';
+
+ $displays[] = sprintf('%s %s %s %s', $artName, $groesse, $ort, $seite);
+ }
+
+ return implode('
', $displays);
+ }
+
+ function displayAllZugaengeText($zugangJson)
+ {
+ if (!isset($zugangJson) || $zugangJson === null) {
+ return '';
+ }
+ if ($zugangJson === '0') {
+ return 'Kein Zugang';
+ }
+
+ $zugaenge = getCurrentZugaenge($zugangJson);
+ if (empty($zugaenge)) {
+ return '';
+ }
+
+ usort($zugaenge, function ($a, $b) {
+ return [$a['art'], $a['ort'], $a['seite']] <=> [$b['art'], $b['ort'], $b['seite']];
+ });
+
+ $artNames = ['pvk' => 'PVK', 'zvk' => 'ZVK', 'io' => 'intraossär'];
+ $displays = [];
+
+ foreach ($zugaenge as $zugang) {
+ $artName = $artNames[$zugang['art']] ?? $zugang['art'];
+ $groesse = normalize_groesse_pretty($zugang['groesse'] ?? '');
+ $ort = $zugang['ort'] ?? '';
+ $seite = $zugang['seite'] ?? '';
+
+ $displays[] = sprintf('%s %s %s %s', $artName, $groesse, $ort, $seite);
+ }
+
+ return implode("\n", $displays);
+ }
+
+ function displayZugaengeByArt($zugangJson, $filterArt = null)
+ {
+ if (!isset($zugangJson) || $zugangJson === null) {
+ return '';
+ }
+ if ($zugangJson === '0') {
+ return 'Kein Zugang';
+ }
+
+ $zugaenge = getCurrentZugaenge($zugangJson);
+ if (empty($zugaenge)) {
+ return '';
+ }
+
+ // Filtern nach Art, wenn angegeben
+ if ($filterArt !== null) {
+ $zugaenge = array_filter($zugaenge, function ($zugang) use ($filterArt) {
+ return $zugang['art'] === $filterArt;
+ });
+
+ if (empty($zugaenge)) {
+ return 'Keine Zugänge dieser Art';
+ }
+ }
+
+ usort($zugaenge, function ($a, $b) {
+ return [$a['art'], $a['ort'], $a['seite']] <=> [$b['art'], $b['ort'], $b['seite']];
+ });
+
+ $artNames = ['pvk' => 'PVK', 'zvk' => 'ZVK', 'io' => 'intraossär'];
+ $displays = [];
+
+ foreach ($zugaenge as $zugang) {
+ $artName = $artNames[$zugang['art']] ?? $zugang['art'];
+ $groesse = normalize_groesse_pretty($zugang['groesse'] ?? '');
+ $ort = $zugang['ort'] ?? '';
+ $seite = $zugang['seite'] ?? '';
+
+ $displays[] = sprintf('%s %s %s %s', $artName, $groesse, $ort, $seite);
+ }
+
+ return implode('
', $displays);
+ }
+
+ // Oder als Text-Version für Textareas:
+ function displayZugaengeByArtText($zugangJson, $filterArt = null)
+ {
+ if (!isset($zugangJson) || $zugangJson === null) {
+ return '';
+ }
+ if ($zugangJson === '0') {
+ return 'Kein Zugang';
+ }
+
+ $zugaenge = getCurrentZugaenge($zugangJson);
+ if (empty($zugaenge)) {
+ return '';
+ }
+
+ // Filtern nach Art, wenn angegeben
+ if ($filterArt !== null) {
+ $zugaenge = array_filter($zugaenge, function ($zugang) use ($filterArt) {
+ return $zugang['art'] === $filterArt;
+ });
+
+ if (empty($zugaenge)) {
+ return 'Keine Zugänge dieser Art';
+ }
+ }
+
+ usort($zugaenge, function ($a, $b) {
+ return [$a['art'], $a['ort'], $a['seite']] <=> [$b['art'], $b['ort'], $b['seite']];
+ });
+
+ $artNames = ['pvk' => 'PVK', 'zvk' => 'ZVK', 'io' => 'intraossär'];
+ $displays = [];
+
+ foreach ($zugaenge as $zugang) {
+ $artName = $artNames[$zugang['art']] ?? $zugang['art'];
+ $groesse = normalize_groesse_pretty($zugang['groesse'] ?? '');
+ $ort = $zugang['ort'] ?? '';
+ $seite = $zugang['seite'] ?? '';
+
+ $displays[] = sprintf('%s %s %s %s', $artName, $groesse, $ort, $seite);
+ }
+
+ return implode("\n", $displays);
+ }
+
+ function hasAnyZugang($zugangJson)
+ {
+ $zugaenge = getCurrentZugaenge($zugangJson);
+ return !empty($zugaenge);
+ }
+ ?>
+ Atemwege
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Intubation
+
= $awsicherung_neu_labels[$daten['awsicherung_neu']] ?? '' ?>
+
+ Beatmung
+
= $b_beatmung_labels[$daten['b_beatmung']] ?? '' ?>
+
+
+
+ O2-Gabe L/min
+
= $daten['o2gabe'] ?? '' ?>
+ Übergabe an
+ = $uebergabe_an_text ?>
+ Übergabeort
+ = $uebergabe_ort_text ?>
+ Protokollant
+ = $daten['pfname'] ?? ' ' ?>
+