Skip to content

DiagFlow 2.0

Choose a tag to compare

@Georgekon4002 Georgekon4002 released this 20 Aug 12:54
· 7 commits to main since this release

📋 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-base vs .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 για απόλυτη οπτική συνοχή.
  • Πίνακας Ημερήσιων Ορίων (Admin):
    • Καθαρά ημιδιαφανή capsule inputs με διακριτικό κόκκινο (#EF4444) για 0 όριο και βιολετί για ενεργό όριο.
    • Καθαρή εμφάνιση ονομάτων χωρίς emoji.

🛠️ Αξιοπιστία & 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), το σύστημα εφαρμόζει δυναμική περιστροφή:
    1. Προηγείται ο διαγνώστης με τον μικρότερο πραγματικό αριθμό εξετάσεων σήμερα (συνυπολογίζοντας το Session Workload Offset).
    2. Ακολουθεί ο διαγνώστης με τη μεγαλύτερη ημερήσια χωρητικότητα.
    3. Εφαρμόζεται δίκαιο τυχαίο 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)

  • Μινιμαλιστικό Πακέτο Διανομής: Για την εγκατάσταση σε νέο υπολογιστή γραμματείας, απαιτούνται μόνο δύο αρχεία:
    1. DiagFlow.exe (αυτόνομο εκτελέσιμο ~52 MB)
    2. .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
Αξιολόγηση Υποψηφίων $O(N)$ ερωτήματα DB ανά εξέταση In-Memory Batch Evaluation $O(1)$ με Cache
Πεδίο Ηλικίας Ασθενούς Δεν υπήρχε Πλήρης ενσωμάτωση (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 Άμεσος, καθαρός τερματισμός διεργασίας