No description
  • Java 99.6%
  • Shell 0.4%
Find a file
raupy 77f3362658
Some checks failed
Javadoc SSH Deploy / build-and-deploy (push) Has been cancelled
few more names
2026-03-26 12:11:33 +01:00
.forgejo/workflows neure java version 2026-03-19 15:39:57 +01:00
gradle/wrapper init commit 2026-03-12 12:04:59 +01:00
src few more names 2026-03-26 12:11:33 +01:00
.gitignore init commit 2026-03-12 12:44:21 +01:00
build.gradle.kts UI 2026-03-15 14:53:14 +01:00
gradlew init commit 2026-03-12 12:04:59 +01:00
gradlew.bat init commit 2026-03-12 12:04:59 +01:00
README.md docs: Gedankenstriche im README entfernt und neu formuliert 2026-03-20 10:03:52 +01:00
settings.gradle.kts init commit 2026-03-12 12:04:59 +01:00
start.sh UI 2026-03-15 14:53:14 +01:00

Arztpraxis SmartQueue

Eine Terminal-Applikation (TUI) zur Verwaltung des Wartezimmers einer Arztpraxis. Patienten werden nicht einfach nach Ankunftszeit gereiht, sondern nach einem Prioritäts-Score, der Dringlichkeit, Alter, Wartezeit, Versicherungsart und Terminstatus berücksichtigt.

JavaDoc

Features

  • Intelligente Warteschlange: Patienten werden automatisch nach Priorität sortiert
  • Terminaleingabe (TUI): Tastaturgesteuerte Oberfläche auf Basis von tui4j
  • Patienten manuell anlegen: Formular mit allen relevanten Feldern
  • Zufälliger Patient: Schnelles Befüllen der Warteschlange zu Testzwecken
  • Detailansicht: Alle Patienteninfos auf einen Blick

Prioritätslogik (SmartQueue)

Jeder Patient erhält einen Score. Die Warteschlange wird nach diesem Score absteigend sortiert. FATAL-Patienten stehen immer ganz vorne, unabhängig vom Score.

Kriterium Punkte
CRITICAL +50
SEVERE +30
MODERATE +15
MINOR +5
Kind (unter 12) +15
Senior (ab 65) +10
Wartezeit
Hat Termin +10
Privatversichert +20
FATAL immer #1

Die Wartezeit steigt um 1 pro behandeltem Patienten. Durch den quadratischen Anstieg () holen wartende Patienten mit der Zeit automatisch auf.

Bedienung

Hauptscreen

Taste Aktion
/ k Cursor nach oben
/ j Cursor nach unten
a Neuen Patienten anlegen
g Zufälligen Patienten hinzufügen
x Nächsten Patienten behandeln
r Ausgewählten Patienten entfernen
q Anwendung beenden

Patient anlegen (a)

Das Formular hat folgende Felder (Navigation mit Tab / Shift+Tab):

  1. Name Freitext
  2. Alter Zahl (1120)
  3. Schweregrad Cycle-Selektor: MINOR → MODERATE → SEVERE → CRITICAL → FATAL
  4. Geschlecht m, w oder d
  5. Krankheit Freitext
  6. Termin Toggle: Ja / Nein
  7. Versicherung Toggle: Gesetzlich / Privat

Mit Enter wird der Patient gespeichert, mit Esc wird das Formular abgebrochen.

Datenmodell

Patient

Feld Typ Beschreibung
name String Vollständiger Name
age int Alter in Jahren
isSchedule boolean Hat der Patient einen Termin?
severity Severity Dringlichkeitsstufe
gender Gender Geschlecht (m / w / d)
illness String Krankheitsbild
insuranceType InsuranceType Privat oder Gesetzlich
waitingTime int Wartezeit (wird automatisch erhöht)

Severity-Stufen

Stufe Bedeutung
MINOR Geringfügige Verletzung/Krankheit
MODERATE Mäßige Verletzung/Krankheit
SEVERE Schwere Verletzung/Krankheit
CRITICAL Kritischer Zustand
FATAL Lebensbedrohlicher Zustand

Projektstruktur

src/main/java/org/example/
├── Main.java                        # Einstiegspunkt
├── core/
│   ├── SmartQueue.java              # Priorisierte Warteschlange
│   └── PatientGenerator.java        # Zufällige Patientengenerierung
├── model/
│   ├── Patient.java
│   ├── Severity.java
│   ├── Gender.java
│   └── InsuranceType.java
└── tui/
    ├── AppController.java           # Vermittler zwischen UI und Queue
    ├── AppRouter.java               # Screen-Navigation
    ├── messages/
    │   ├── ScreenId.java
    │   ├── SwitchScreenMessage.java
    │   └── PatientTreatedMessage.java
    └── screens/
        ├── MainScreen.java          # Hauptansicht mit Wartezimmerliste
        ├── AddPatientScreen.java    # Formular für neue Patienten
        └── TreatConfirmScreen.java  # Bestätigung nach Behandlung

Abhängigkeiten

  • tui4j, ein Java-Port der Go-Bibliotheken Bubble Tea und Lip Gloss