No description
- Java 99.6%
- Shell 0.4%
|
|
||
|---|---|---|
| .forgejo/workflows | ||
| gradle/wrapper | ||
| src | ||
| .gitignore | ||
| build.gradle.kts | ||
| gradlew | ||
| gradlew.bat | ||
| README.md | ||
| settings.gradle.kts | ||
| start.sh | ||
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 | t² |
| Hat Termin | +10 |
| Privatversichert | +20 |
| FATAL | immer #1 |
Die Wartezeit steigt um 1 pro behandeltem Patienten. Durch den quadratischen Anstieg (t²) 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):
- Name – Freitext
- Alter – Zahl (1–120)
- Schweregrad – Cycle-Selektor: MINOR → MODERATE → SEVERE → CRITICAL → FATAL
- Geschlecht –
m,woderd - Krankheit – Freitext
- Termin – Toggle: Ja / Nein
- 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