163 lines
5.3 KiB
Plaintext
163 lines
5.3 KiB
Plaintext
<div class="layout">
|
|
|
|
<div class="main">
|
|
|
|
<!-- ✅ Neuer globaler Header -->
|
|
<%- include("partials/page-header", {
|
|
user,
|
|
title: "Patientenübersicht",
|
|
subtitle: patient.firstname + " " + patient.lastname,
|
|
showUserName: true,
|
|
hideDashboardButton: false
|
|
}) %>
|
|
|
|
<div class="content">
|
|
|
|
<%- include("partials/flash") %>
|
|
|
|
<div class="container-fluid mt-3">
|
|
|
|
<!-- =========================
|
|
PATIENT INFO
|
|
========================== -->
|
|
<div class="card shadow mb-4">
|
|
<div class="card-body">
|
|
<h4 class="mb-1">👤 <%= patient.firstname %> <%= patient.lastname %></h4>
|
|
|
|
<p class="text-muted mb-3">
|
|
Geboren am <%= new Date(patient.birthdate).toLocaleDateString("de-DE") %>
|
|
</p>
|
|
|
|
<ul class="list-group">
|
|
<li class="list-group-item">
|
|
<strong>E-Mail:</strong> <%= patient.email || "-" %>
|
|
</li>
|
|
<li class="list-group-item">
|
|
<strong>Telefon:</strong> <%= patient.phone || "-" %>
|
|
</li>
|
|
<li class="list-group-item">
|
|
<strong>Adresse:</strong>
|
|
<%= patient.street || "" %> <%= patient.house_number || "" %>,
|
|
<%= patient.postal_code || "" %> <%= patient.city || "" %>
|
|
</li>
|
|
</ul>
|
|
</div>
|
|
</div>
|
|
|
|
<!-- =========================
|
|
MEDIKAMENTE & RECHNUNGEN
|
|
========================== -->
|
|
<div
|
|
class="row g-3"
|
|
style="
|
|
height: calc(100vh - 420px);
|
|
min-height: 300px;
|
|
padding-bottom: 3rem;
|
|
overflow: hidden;
|
|
"
|
|
>
|
|
|
|
<!-- 💊 MEDIKAMENTE -->
|
|
<div class="col-lg-6 h-100">
|
|
<div class="card shadow h-100">
|
|
<div class="card-body d-flex flex-column h-100">
|
|
<h5>💊 Aktuelle Medikamente</h5>
|
|
|
|
<div
|
|
style="
|
|
flex: 1 1 auto;
|
|
overflow-y: auto;
|
|
min-height: 0;
|
|
padding-bottom: 1.5rem;
|
|
"
|
|
>
|
|
<% if (medications.length === 0) { %>
|
|
<p class="text-muted">Keine aktiven Medikamente</p>
|
|
<% } else { %>
|
|
<table class="table table-sm table-bordered mt-2">
|
|
<thead class="table-light">
|
|
<tr>
|
|
<th>Medikament</th>
|
|
<th>Variante</th>
|
|
<th>Anweisung</th>
|
|
</tr>
|
|
</thead>
|
|
<tbody>
|
|
<% medications.forEach(m => { %>
|
|
<tr>
|
|
<td><%= m.medication_name %></td>
|
|
<td><%= m.variant_dosage %></td>
|
|
<td><%= m.dosage_instruction || "-" %></td>
|
|
</tr>
|
|
<% }) %>
|
|
</tbody>
|
|
</table>
|
|
<% } %>
|
|
</div>
|
|
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<!-- 🧾 RECHNUNGEN -->
|
|
<div class="col-lg-6 h-100">
|
|
<div class="card shadow h-100">
|
|
<div class="card-body d-flex flex-column h-100">
|
|
<h5>🧾 Rechnungen</h5>
|
|
|
|
<div
|
|
style="
|
|
flex: 1 1 auto;
|
|
overflow-y: auto;
|
|
min-height: 0;
|
|
padding-bottom: 1.5rem;
|
|
"
|
|
>
|
|
<% if (invoices.length === 0) { %>
|
|
<p class="text-muted">Keine Rechnungen vorhanden</p>
|
|
<% } else { %>
|
|
<table class="table table-sm table-bordered mt-2">
|
|
<thead class="table-light">
|
|
<tr>
|
|
<th>Datum</th>
|
|
<th>Betrag</th>
|
|
<th>PDF</th>
|
|
</tr>
|
|
</thead>
|
|
<tbody>
|
|
<% invoices.forEach(i => { %>
|
|
<tr>
|
|
<td><%= new Date(i.invoice_date).toLocaleDateString("de-DE") %></td>
|
|
<td><%= Number(i.total_amount).toFixed(2) %> €</td>
|
|
<td>
|
|
<% if (i.file_path) { %>
|
|
<a
|
|
href="<%= i.file_path %>"
|
|
target="_blank"
|
|
class="btn btn-sm btn-outline-primary"
|
|
>
|
|
📄 Öffnen
|
|
</a>
|
|
<% } else { %>
|
|
-
|
|
<% } %>
|
|
</td>
|
|
</tr>
|
|
<% }) %>
|
|
</tbody>
|
|
</table>
|
|
<% } %>
|
|
</div>
|
|
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
</div>
|
|
</div>
|