DiagFlow 2.0
📋 DiagFlow 2.0 - Update Log & Release Notes
Έκδοση: 2.0.0
Ημερομηνία Έκδοσης: 20 Αυγούστου 2026
🌟 Σύνοψη Έκδοσης
Η έκδοση DiagFlow v2.0 αποτελεί τη σημαντικότερη αναβάθμιση της αρχιτεκτονικής του συστήματος. Η εφαρμογή μεταβαίνει από το αρχικό μοντέλο τοπικής αποθήκευσης (SQLite) σε πλήρως ενοποιημένη αρχιτεκτονική κεντρικής βάσης δεδομένων (MSSQL Server / Slis DB), επιτρέποντας την ταυτόχρονη, αξιόπιστη χρήση από πολλαπλούς σταθμούς εργασίας γραμματείας σε πραγματικό χρόνο.
🚀 Κύρια Χαρακτηριστικά & Αλλαγές
1. Ενοποιημένη Κεντρική Βάση Δεδομένων (df_* Tables)
- Κατάργηση Τοπικών SQLite Αρχείων στην Παραγωγή: Στην παραγωγή (
USE_MOCK_SLIS_DB=false), η εφαρμογή δεν απαιτεί πλέον τοπικά αρχεία.dbή φάκελοdb/στους υπολογιστές των χρηστών. - Συνύπαρξη στον ίδιο SQL Server με το Slis: Όλοι οι πίνακες ρυθμίσεων, κανόνων, αδειών και καταγραφής του DiagFlow διατηρούνται στον ίδιο κεντρικό διακομιστή MSSQL (
LisKosmo), χρησιμοποιώντας το πρόθεμαdf_ώστε να αποκλείεται οποιαδήποτε σύγκρουση με τους υπάρχοντες πίνακες του Slis.df_diagnosticians,df_diagnostician_skills— Στοιχεία διαγνωστών, ειδικότητες και ημερήσια όρια.df_partnerships,df_doctors— Συνεργασίες, παραπέμποντες ιατροί και αποκλειστικότητες.df_availability— Παρουσίες, άδειες και σημάνσεις on-call για προσωρινές αλλαγές στο πρόγραμμα της Παμμακαρίστου.df_exam_routing_rules,df_exclusive_lab_rules— Δυναμικοί κανόνες δρομολόγησης εξετάσεων και αποκλειστικά εργαστήρια.df_modality_quotas,df_pamakristos_schedule— Ημερίσια όρια ανά modality (CT/MRI) και πρόγραμμα Παμμακαρίστου.df_system_settings,df_admin_users— Βάρη μηχανής αποφάσεων και λογαριασμοί διαχειριστών.df_local_assignments,df_assignment_log— Κοινόχρηστες προσωρινές αναθέσεις και ιστορικό καταγραφής (audit trail).
2. Ταυτόχρονη Χρήση από Πολλαπλούς Χρήστες (Multi-User Concurrency)
- Κοινόχρηστο Staging Αναθέσεων (
df_local_assignments): Όταν ο Χρήστης A αναθέτει μία εξέταση, η ανάθεση καταχωρείται άμεσα στον κεντρικό πίνακαdf_local_assignments. - Αυτόματος Συγχρονισμός μεταξύ Σταθμών:
- Όταν ο Χρήστης B πατάει «Ανανέωση», η εξέταση που ανέθεσε ο Χρήστης A αφαιρείται από τις Εκκρεμείς και εμφανίζεται στις Ανατεθειμένες του Χρήστη B με το επιλεγμένο όνομα διαγνώστη.
- Ενοποιημένο Dashboard σε Πραγματικό Χρόνο: Το Dashboard αντλεί δεδομένα απευθείας από τον κεντρικό SQL Server (
df_local_assignments,df_assignment_log,df_modality_quotas), εμφανίζοντας ακριβώς τα ίδια στατιστικά, μετρητές και υπόλοιπα quotas σε όλους τους υπολογιστές.
3. Direct In-Memory Επεξεργασία & Stored Procedures
- Απευθείας Εκτέλεση Stored Procedure: Η εφαρμογή εκτελεί απ' ευθείας την
EXEC getExamsListForPeriod_V1στον SQL Server για τις τελευταίες 3 ημέρες. - In-Memory Pipeline: Το φιλτράρισμα των εκκρεμών εξετάσεων (
diagnostis IS NULL), η εκτέλεση των κανόνων Stage 0 (αποκλειστικότητες, dynamic routing, εφημερία Παμμακαρίστου) και ο αλγόριθμος προτάσεων εκτελούνται απευθείας στη μνήμη RAM χωρίς περιττές ενδιάμεσες εγγραφές στο δίσκο.
4. Βελτιστοποιημένη Καταγραφή Ιστορικού (Audit Trail)
- Logging στο
df_assignment_log: Η οριστική καταγραφή της ανάθεσης στο ιστορικό πραγματοποιείται αποκλειστικά κατά την επιτυχή ενημέρωση του Slis (Push to Slis), εξαλείφοντας πρόωρες ή διπλότυπες εγγραφές κατά τα ενδιάμεσα στάδια επεξεργασίας. - Αυτόματος Καθαρισμός: Μετά την ενημέρωση του Slis, η προσωρινή εγγραφή διαγράφεται αυτόματα από το
df_local_assignments.
🎨 Σχεδιασμός & Βελτιστοποιήσεις UI/UX (Apple-Style Glassmorphism)
5. Premium Glassmorphism & Σύστημα Σχεδίασης
- Ambient Mesh Glow Background: Δυναμικό φόντο με απαλές πολυεπίπεδες ακτινικές διαβαθμίσεις χρωμάτων (indigo, sapphire, violet, emerald, rose) που προσδίδει βάθος και μοντέρνα αισθητική.
- Frosted Glass Cards: Όλες οι κάρτες, οι πίνακες και οι διαχειριστικές ενότητες υιοθετούν εφέ ημι-διαφανούς κρυστάλλου με
backdrop-filter: blur(28px) saturate(190%), διπλά specular borders (rgba(255, 255, 255, 0.75)) και άνω εσωτερικό highlight. - Segmented Tabs & Glass Controls: Κουμπιά, inputs και tabs με στρογγυλεμένες γωνίες, απτική απόκριση στο hover και φυσική ανύψωση.
- Dark Mode: Η εφαρμογή είναι πλέον πλήρως λειτουργική και σε σκοτεινή λειτουργία που μπορεί να αλλάξει από το κουμπί στο πάνω δεξιά μέρος του header.
6. Εναλλαγή Χρωμάτων ανά Εντολή (Order-Level Zebra Striping)
- Εξάλειψη Διχρωμίας σε Πολλαπλές Εξετάσεις: Η εναλλαγή αποχρώσεων στους πίνακες εκκρεμών και ανατεθειμένων εξετάσεων γίνεται πλέον αυστηρά ανά εντολή (Order Group) (
.order-group-basevs.order-group-alt) και όχι ανά φυσική γραμμή<tr>. - Ομοιόμορφο Background: Όλες οι εξετάσεις που ανήκουν στην ίδια εντολή/ασθενή (ίδιο
extracode) μοιράζονται τον ίδιο ενιαίο τόνο φόντου σε όλες τις στήλες.
7. Custom Searchable Glass Dropdowns & Live Autocomplete
- Custom Dropdown Component: Αντικατάσταση των κλασικών dropdowns περιηγητή με ενιαία γυάλινα searchable dropdowns που διαθέτουν:
- Ενσωματωμένο πεδίο γρήγορης αναζήτησης (
🔍 Αναζήτηση...) με άμεσο φιλτράρισμα. - Καθολικό Greek Normalization (αφαίρεση τόνων/διαλυτικών, υποστήριξη πεζών/κεφαλαίων).
- Ένδειξη τρέχοντος φόρτου και ορίων ανά διαγνώστη (π.χ.
(13/15)).
- Ενσωματωμένο πεδίο γρήγορης αναζήτησης (
8. Συντομεύσεις Πληκτρολογίου & Επιλογή με Shift (Keyboard Engine)
- Πλήρης Πλοήγηση με Πληκτρολόγιο (Browser & Desktop .exe):
- ↓ / ↑ (Βέλη): Μετακίνηση μεταξύ των γραμμών με φωτεινό περίγραμμα επιλογής (
.row-keyboard-focused) και αυτόματο scroll. - Space: Επιλογή/αποεπιλογή (check/uncheck) της εστιασμένης εξέτασης.
- Enter: Άμεση επιβεβαίωση της προτεινόμενης ανάθεσης (ή μαζική ανάθεση αν έχουν επιλεγεί πολλές εξετάσεις). Μέσα στο παράθυρο πρότασης εκτελεί την επιβεβαίωση.
- O / o: Άμεσο άνοιγμα του παραθύρου πρότασης / αλλαγής διαγνώστη (Override).
- Ctrl + A / Cmd + A: Επιλογή όλων των ορατών εξετάσεων της τρέχουσας καρτέλας.
- Shift + Click: Μαζική επιλογή εύρους (range selection) από την πρώτη έως την τελευταία επιλεγμένη εξέταση.
- /: Άμεση εστίαση στο πεδίο αναζήτησης.
- Esc: Κλείσιμο ανοιχτών παραθύρων/dropdowns ή καθαρισμός επιλογών.
- ↓ / ↑ (Βέλη): Μετακίνηση μεταξύ των γραμμών με φωτεινό περίγραμμα επιλογής (
9. Βελτιστοποίηση Badges & Πίνακα Ημερήσιων Ορίων
- Υψηλή Αντίθεση Modality Badges σε Light & Dark Mode:
- CT: Απαλό πράσινο φόντο (
#DCFCE7) με έντονο σκούρο σμαραγδί κείμενο (#047857, 700 bold). - MRI: Απαλό βιολετί φόντο (
#EDE9FE) με έντονο σκούρο ιώδες κείμενο (#6D28D9, 700 bold). - MRA: Απαλό ροζ φόντο (
#FFE4E6) με έντονο σκούρο κόκκινο κείμενο (#BE123C, 700 bold). - Dashboard: Ενσωμάτωση των ίδιων ακριβώς pill badges στη λίστα εξετάσεων του Dashboard για απόλυτη οπτική συνοχή.
- CT: Απαλό πράσινο φόντο (
- Πίνακας Ημερήσιων Ορίων (Admin):
- Καθαρά ημιδιαφανή capsule inputs με διακριτικό κόκκινο (
#EF4444) για 0 όριο και βιολετί για ενεργό όριο. - Καθαρή εμφάνιση ονομάτων χωρίς emoji.
- Καθαρά ημιδιαφανή capsule inputs με διακριτικό κόκκινο (
🛠️ Αξιοπιστία & Deployment
10. Ενσωμάτωση Πεδίου Ηλικίας Ασθενούς (Patient Age Field)
- Πλήρης Κλινική Εικόνα στους Πίνακες: Προσθήκη στήλης «Ηλικία» (
age) σε όλους τους πίνακες της εφαρμογής (Εκκρεμείς, Ανατεθειμένες και 4η Καρτέλα Αναζήτησης Slis). - Ενσωμάτωση στο Context Μηχανής: Το πεδίο
ageμεταβιβάζεται στοExamContextεπιτρέποντας μελλοντική στόχευση εξειδικεύσεων (π.χ. παιδιατρικές vs γηριατρικές εξετάσεις).
11. Δίκαιη Κατανομή Ισοπαλιών & Round-Robin Load Balancing
- Ευφυής Εξισορρόπηση Ισοβαθμιών (Near-Tie Balancer): Όταν δύο ή περισσότεροι διαγνώστες συγκεντρώνουν ισοδύναμη κορυφαία βαθμολογία (εντός ανοχής
score_tie_tolerance = 0.05), το σύστημα εφαρμόζει δυναμική περιστροφή:- Προηγείται ο διαγνώστης με τον μικρότερο πραγματικό αριθμό εξετάσεων σήμερα (συνυπολογίζοντας το Session Workload Offset).
- Ακολουθεί ο διαγνώστης με τη μεγαλύτερη ημερήσια χωρητικότητα.
- Εφαρμόζεται δίκαιο τυχαίο jitter ως τελικός ισοσταθμιστής, εξασφαλίζοντας ότι οι εξετάσεις δεν συσσωρεύονται στον ίδιο ιατρό.
12. Βελτιστοποίηση Μαζικής Αξιολόγησης Υποψηφίων (In-Memory Batch Evaluation)
-
High-Performance Batch Method (
get_candidates_for_exams_batch): Ταυτόχρονη αξιολόγηση δεκάδων εξετάσεων με μία ενιαία ανάγνωση δεδομένων, μετατρέποντας$O(N)$ κλήσεις βάσης δεδομένων σε$O(1)$ άμεσες αναζητήσεις στη μνήμη RAM. - 3-Second Short-Lived Cache: Ελαχιστοποίηση των ερωτημάτων στον SQL Server κατά τη διάρκεια μαζικών προτάσεων, εξασφαλίζοντας ακαριαία απόκριση στο UI.
13. Διαχείριση Χρηστών & Ρόλων Διαχειριστή (df_admin_users)
- Κεντρικός Πίνακας
df_admin_users: Πλήρης υποστήριξη πολλαπλών λογαριασμών διαχειριστή απευθείας στον κεντρικό SQL Server. - Ασφάλεια Επιπέδου Enterprise: Κρυπτογράφηση κωδικών πρόσβασης με bcrypt (cost factor 12), αυτόματη μετάβαση από παλαιά SHA-256 hashes, και IP rate limiting (5 απόπειρες/60s).
- Διακριτοί Ρόλοι: Υποστήριξη ρόλων
admin(διαχείριση ιατρικών κανόνων & διαγνωστών) καιit_support(διαχείριση λογαριασμών χρηστών, επαναφορά κωδικών & τεχνικές ρυθμίσεις).
14. Κλείδωμα Συνοχής Εντολών Multi-Exam (Order Alignment Lock)
- Απόλυτη Διαγνωστική Συνέπεια: Όλες οι υπο-εξετάσεις που ανήκουν στην ίδια παραγγελία/παραπεμπτικό (ίδιο
extracode) ανατίθενται αυστηρά στον ίδιο διαγνώστη που συγκεντρώνει τη μέγιστη συνολική συμβατότητα.
15. Καθαρός Τερματισμός Εφαρμογής (Clean Window Exit)
- Πλήρης Αποδέσμευση Πόρων: Με το κλείσιμο του παραθύρου της εφαρμογής από το «Χ», ενεργοποιείται αυτόματος μηχανισμός άμεσου τερματισμού του background Uvicorn server και όλων των threads (
os._exit(0)). - Μηδενικά Υπολείμματα στο Task Manager: Η διεργασία
DiagFlow.exeκλείνει ακαριαία χωρίς να παραμένει ενεργή στο παρασκήνιο των Windows.
16. Απλοποιημένη Εγκατάσταση (Zero-Config Deployment)
- Μινιμαλιστικό Πακέτο Διανομής: Για την εγκατάσταση σε νέο υπολογιστή γραμματείας, απαιτούνται μόνο δύο αρχεία:
DiagFlow.exe(αυτόνομο εκτελέσιμο ~52 MB).env(αρχείο ρυθμίσεων σύνδεσης)
- Αυτόματο Seeding Mock DB: Αν η εφαρμογή εκτελεστεί σε mock mode χωρίς υπάρχουσα βάση, δημιουργεί και αρχικοποιεί αυτόματα τη δομή από τα ενσωματωμένα SQL templates (
ensure_mock_slis_db_initialized()).
📊 Σύγκριση Αρχιτεκτονικής v1.0 vs v2.0
| Χαρακτηριστικό | DiagFlow v1.0 | DiagFlow v2.0 |
|---|---|---|
| Αποθήκευση Ρυθμίσεων | Τοπικό diagflow.db (SQLite) |
Κεντρικός SQL Server (df_* tables) |
| Ταυτόχρονη Χρήση (LAN) | Όχι (ασυγχρόνιστα τοπικά αρχεία) | Ναι (Πλήρης συγχρονισμός σε πραγματικό χρόνο) |
| Κατάσταση Αναθέσεων | Τοπική ανά υπολογιστή | Κοινή για όλους τους χρήστες (df_local_assignments) |
| Αποτροπή Διπλοαναθέσεων | Καμία προστασία | Optimistic Locking με έλεγχο συγκρούσεων |
| Dashboard Quotas | Τοπικοί μετρητές ανά PC | Κοινά, πανομοιότυπα δεδομένα σε όλα τα PC |
| Κατανομή Ισοπαλιών | Στατική επιλογή πρώτου | Fair Round-Robin & Workload-Aware Jitter |
| Αξιολόγηση Υποψηφίων |
|
In-Memory Batch Evaluation |
| Πεδίο Ηλικίας Ασθενούς | Δεν υπήρχε | Πλήρης ενσωμάτωση (age column & context) |
| Διαχείριση Χρηστών | Στατικός κωδικός config | Multi-User df_admin_users με bcrypt & ρόλους |
| Design System | Βασικό επίπεδο CSS | Apple-Style Frosted Glassmorphism |
| Εναλλαγή Χρωμάτων | Ανά φυσική γραμμή (διχρωμίες) | Ανά Εντολή (Ενιαίος τόνος ανά ασθενή/παραγγελία) |
| Dropdowns & Selects | Default Browser Selects | Searchable Custom Glass Dropdowns με Greek Filter |
| Συντομεύσεις & Multi-Select | Βασικές συντομεύσεις | Πλήρες Keyboard Engine & Shift Range Select |
| Απαιτούμενα Αρχεία Client |
.exe, .env, φάκελος db/
|
Μόνο .exe και .env |
| Επεξεργασία Εξετάσεων | Εγγραφή σε τοπικό SQLite cache | Direct in-memory επεξεργασία από MSSQL SP |
| Τερματισμός Παραθύρου | Παρέμενε ανοιχτό στο Task Manager | Άμεσος, καθαρός τερματισμός διεργασίας |