appointments.html
⎇
Raw
1{{define "title"}}Termine{{end}}
2{{define "content"}}
3<h2>Termine</h2>
4{{with .Error}}<p class="error" role="alert">{{.}}</p>{{end}}
5<form method="get" action="/termine" class="row appt-filter">
6 <input type="date" name="von" value="{{.From}}" aria-label="Ab Datum">
7 <select name="behandler" aria-label="Behandler">
8 <option value="0">Alle Behandler</option>
9 {{range .Therapists}}<option value="{{.ID}}"{{if eq .ID $.Therapist}} selected{{end}}>{{.Name}}{{if not .Active}} (inaktiv){{end}}</option>{{end}}
10 </select>
11 <button type="submit" class="secondary">Anzeigen</button>
12</form>
13<p class="appt-nav">
14 <a href="/termine?von={{.Prev}}&amp;behandler={{.Therapist}}">← früher</a>
15 <span class="muted">{{.Count}} Termin(e) bis {{day .To}}</span>
16 <a href="/termine?von={{.Next}}&amp;behandler={{.Therapist}}">später →</a>
17</p>
18
19{{range .Days}}
20<article class="appt-day{{if .Today}} today{{end}}">
21 <h4>{{.Label}}{{if .Today}} · heute{{end}}</h4>
22 {{range .Appts}}
23 <div class="appt{{if .Cancelled}} cancelled{{end}}">
24 <span class="appt-time">{{hm .Start}}–{{hm .End}}</span>
25 <a href="/patient/{{.PatientID}}#termine"><strong>{{.PatientName}}</strong></a>
26 <span class="muted">{{.Title}}{{with .TherapistName}} · {{.}}{{end}}{{if .Cancelled}} · abgesagt{{end}}</span>
27 <span class="appt-actions">
28 <a href="/termin/{{.ID}}" class="small-link">Bearbeiten</a>
29 <form method="post" action="/termin/{{.ID}}/absagen" class="inline"><input type="hidden" name="back" value="termine">
30 <button type="submit" class="link small-link">{{if .Cancelled}}Wieder zusagen{{else}}Absagen{{end}}</button></form>
31 </span>
32 </div>
33 {{end}}
34</article>
35{{else}}<p class="muted">Keine Termine in diesem Zeitraum.</p>{{end}}
36
37<article>
38 <h3>Neuer Termin</h3>
39 {{if .Patients}}
40 <form method="post" action="/termine">
41 <select name="patient" required aria-label="Patient"><option value="">Patient wählen …</option>
42 {{range .Patients}}<option value="{{.ID}}">{{.Name}}{{with .Dob}} ({{.}}){{end}}</option>{{end}}
43 </select>
44 {{template "apptfields" .}}
45 <button type="submit">Termin anlegen</button>
46 </form>
47 {{else}}<p class="muted">Zuerst einen <a href="/patienten">Patienten anlegen</a>.</p>{{end}}
48</article>
49
50<article id="behandler">
51 <h3>Behandler</h3>
52 {{range .Therapists}}
53 <form method="post" action="/behandler/{{.ID}}" class="row">
54 <input name="name" value="{{.Name}}" required aria-label="Name">
55 <label class="consent"><input type="checkbox" name="active" value="1"{{if .Active}} checked{{end}}> aktiv</label>
56 <button type="submit" class="secondary outline">Speichern</button>
57 </form>
58 {{else}}<p class="muted">Noch keine Behandler eingetragen.</p>{{end}}
59 <form method="post" action="/behandler" class="row">
60 <input name="name" placeholder="Name, z. B. Anna Schmidt" required aria-label="Neuer Behandler">
61 <button type="submit">+ Behandler</button>
62 </form>
63 <small class="muted">Inaktive Behandler bleiben an alten Terminen erhalten, stehen aber nicht mehr zur Auswahl.</small>
64</article>
65{{end}}
66
67{{define "apptfields"}}
68<div class="appt-fields">
69 <label>Datum <input type="date" name="date" value="{{.Today}}" required></label>
70 <label>Uhrzeit <input type="time" name="time" value="08:00" step="300" required></label>
71 <label>Dauer (Min.) <input type="number" name="duration" value="30" min="5" max="480" step="5"></label>
72 <label>Behandler
73 <select name="therapist"><option value="0">—</option>
74 {{range .Therapists}}{{if .Active}}<option value="{{.ID}}">{{.Name}}</option>{{end}}{{end}}
75 </select>
76 </label>
77 <label>Art <input name="title" value="Physiotherapie" list="dl-appttypes"></label>
78 <label>Ort <input name="location" placeholder="{{if .Address}}{{.Address}}{{else}}Praxis / Hausbesuch{{end}}"></label>
79 <label class="wide">Hinweis für den Patienten <input name="note" placeholder="z. B. Handtuch und bequeme Kleidung mitbringen"></label>
80 <label>Wiederholen <input type="number" name="repeat" value="1" min="1" max="40"></label>
81 <label>alle … Tage <input type="number" name="every" value="7" min="1" max="60"></label>
82</div>
83<datalist id="dl-appttypes"><option value="Physiotherapie"><option value="Krankengymnastik"><option value="Manuelle Therapie"><option value="Klassische Massage"><option value="Lymphdrainage"><option value="Befundaufnahme"><option value="Wiederbefund"><option value="Hausbesuch"></datalist>
84{{end}}
85