Τεκμηρίωση
Εκμάθηση
Ροές εργασίας
Ενέργειες kebab
Καθημερινή Εργασία
Πίνακας & Αναφορές
Ποιοτικός Έλεγχος
ISO 17025
Αρχεία Καταγραφής
Επαφές
Τιμολόγηση
Ρύθμιση Αναλύσεων
Ρυθμίσεις
Αρχική Εγκατάσταση
Βοήθεια & Αναφορά
Αποφάσεις αρχιτεκτονικής
Ενέργειες kebab
0:000:00

Διαχείριση εκπρόθεσμης διακρίβωσης

Στόχος

Όταν προσπαθείτε να εγκρίνετε ένα Αρχείο Ανάλυσης (Analysis Record — AR) και η έγκριση μπλοκάρεται επειδή η διακρίβωση κάποιου εκ των οργάνων μέτρησης είναι εκπρόθεσμη, ο οδηγός αυτός περιγράφει τις δύο επιτρεπτές οδούς επίλυσης σύμφωνα με το ΕΛΟΤ ΕΝ ISO/IEC 17025:2017:

  • Επιλογή Α — Διακρίβωση τώρα: η συνιστώμενη οδός. Διακριβώνετε το όργανο, καταχωρείτε νέο CalibrationRecord με ενημερωμένη ημερομηνία επόμενης διακρίβωσης και επανεκκινείτε την έγκριση.
  • Επιλογή Β — Τεκμηριωμένη παράκαμψη: η οδός εξαίρεσης. Ο Διευθυντής Εργαστηρίου (LAB_DIRECTOR), ο Διαχειριστής Ποιότητας (QUALITY_MANAGER) ή ο Αξιολογητής (REVIEWER) εγκρίνει χωρίς διακρίβωση, καταγράφοντας αιτιολογία ≥20 χαρακτήρων. Η παράκαμψη ελέγχεται μέσω καταχώρησης σε audit log.

Καμία από τις δύο οδούς δεν παρακάμπτεται σιωπηλά — κάθε έγκριση επί εκπρόθεσμου οργάνου αφήνει ίχνος στο σύστημα.


Προϋποθέσεις

#ΠροϋπόθεσηΠού ελέγχεται
1Το AR βρίσκεται σε κατάσταση Ελεγμένη και είναι έτοιμο για μετάβαση σε Εγκεκριμένη.Πεδίο status στη σελίδα Λεπτομερειών Ανάλυσης.
2Τουλάχιστον μία Measurement του AR αναφέρεται σε Instrument με requiresCalibration = true.Καρτέλα Μετρήσεις στο AR.
3Η ημερομηνία nextCalibrationDate του οργάνου είναι πριν από τη σημερινή ημέρα.Καρτέλα Διακριβώσεις του Οργάνου.
4Για την Επιλογή Β ο χρήστης διαθέτει ρόλο LAB_DIRECTOR, QUALITY_MANAGER ή REVIEWER.Προφίλ Χρήστη → Ρόλοι.
5Για την Επιλογή Α ο χρήστης έχει δικαίωμα δημιουργίας CalibrationRecord στο εν λόγω όργανο.Δικαιώματα Ρόλου.

Όργανα με requiresCalibration = false (π.χ. ογκομετρικά γυάλινα σκεύη, χειρωνακτικά εργαλεία) ή χωρίς συμπληρωμένη nextCalibrationDate εξαιρούνται αυτόματα και δεν προκαλούν αποκλεισμό.

Έλεγχος πριν αποφασίσετε οδό

Πριν επιλέξετε ανάμεσα σε Α και Β, ανοίξτε την καρτέλα Μετρήσεις του AR και σημειώστε:

  • Ποια όργανα είναι εκπρόθεσμα — συνήθως ένα ή δύο, σπάνια όλα. Αν μόνο ένα όργανο μπλοκάρει, η οδός Α είναι σχεδόν πάντα η σωστή.
  • Πόσο εκπρόθεσμη είναι η διακρίβωση — μία μέρα μετά τη λήξη απαιτεί διαφορετική αιτιολόγηση από έναν μήνα.
  • Αν υπάρχει εν εξελίξει CAPA για το όργανο — η οδός Β πρέπει να συνδεθεί με υπάρχουσα ή νέα διορθωτική ενέργεια.

Βήματα

  1. Δοκιμάστε την έγκριση. Στη σελίδα Λεπτομερειών του AR, ανοίξτε το μενού kebab και επιλέξτε Έγκριση. Εφόσον υπάρχει εκπρόθεσμο όργανο, το backend επιστρέφει σφάλμα με κωδικό APPROVAL_BLOCKED_CALIBRATION_OVERDUE. Το frontend αναγνωρίζει τον κωδικό και ανοίγει το Override Dialog αντί για snackbar σφάλματος, παρουσιάζοντας τη λίστα των εκπρόθεσμων οργάνων (όνομα, αριθμός σειράς, ημερομηνία λήξης διακρίβωσης).
  2. Επιλογή Α — Διακρίβωση τώρα (συνιστώμενη).
  • Κλείστε το Override Dialog με Ακύρωση.
  • Πατήστε στον σύνδεσμο του οργάνου από τη λίστα ή πλοηγηθείτε χειροκίνητα στη σελίδα Όργανα → επιλέξτε το όργανο.
  • Στην καρτέλα Διακριβώσεις καταχωρήστε νέο CalibrationRecord. Συμπληρώστε:
  • calibrationDate — η σημερινή ημερομηνία διακρίβωσης.
  • withinTolerance: true — το όργανο πέρασε τον έλεγχο.
  • nextCalibrationDate — υπολογίστε με βάση τη συχνότητα του SOP (π.χ. + 12 μήνες).
  • Αρχείο τεκμηρίωσης (πιστοποιητικό διακρίβωσης διαπιστευμένου φορέα ή ενδοεργαστηριακό πρωτόκολλο).
  • Επιστρέψτε στο AR και ξανατρέξτε την Έγκριση. Πλέον ο έλεγχος περνά καθαρά και το AR μεταβαίνει σε Εγκεκριμένη χωρίς αναφορά παράκαμψης στο audit log.
  1. Επιλογή Β — Τεκμηριωμένη παράκαμψη (οδός εξαίρεσης).
  • Στο Override Dialog που έχει ήδη ανοίξει, συμπληρώστε την αιτιολογία παράκαμψης στο πεδίο κειμένου. Πρέπει να αναφέρετε:
  • γιατί η διακρίβωση δεν μπορεί να γίνει άμεσα,
  • γιατί η αποδέσμευση των αποτελεσμάτων είναι μετρολογικά αποδεκτή παρόλα αυτά (π.χ. ισχύς εσωτερικού QC με γνωστό υλικό αναφοράς, εύρος ικανότητας ελεγχόμενο),
  • ποια ενέργεια διόρθωσης έχει προγραμματιστεί (CAPA, διακρίβωση εντός Χ ημερών).
  • Το πεδίο απαιτεί τουλάχιστον 20 χαρακτήρες· διαφορετικά η υποβολή απορρίπτεται με κωδικό OVERRIDE_REASON_TOO_SHORT.
  • Πατήστε Υποβολή. Το AR μεταβαίνει σε Εγκεκριμένη και καταγράφεται audit event OVERRIDE_CALIBRATION_APPROVE με τα πεδία userId, entityType = 'AnalysisRecord', entityId, reason, χρονοσφραγίδα και τη λίστα των εκπρόθεσμων οργάνων ως changes.
  1. Επιβεβαίωση καταχώρησης. Στο AR, η καρτέλα Ιστορικό Παρακάμψεων (override log) εμφανίζει την εγγραφή με την πλήρη αιτιολογία και τον υπεύθυνο. Δεν διαγράφεται ποτέ — αποτελεί μέρος του αρχείου αξιολόγησης για τον επιθεωρητή ΕΣΥΔ.

Στην ίδια καρτέλα μπορείτε να φιλτράρετε ανά action (OVERRIDE_CALIBRATION_APPROVE) και να εξάγετε CSV για το φάκελο εσωτερικής επιθεώρησης. Η εξαγωγή περιλαμβάνει χρήστη, χρονοσφραγίδα, αιτιολογία και τη λίστα των οργάνων με τις αντίστοιχες nextCalibrationDate, που είναι ακριβώς το είδος των δεδομένων που ζητάει η §6.4.7.

  1. Παρακολούθηση εκκρεμοτήτων. Από τον Επιχειρηματικό Πίνακα (Business Dashboard), η κάρτα Calibration-overdue revenue δείχνει πόσα AR εκκρεμούν σε ουρά λόγω εκπρόθεσμης διακρίβωσης και το αντίστοιχο τιμολογητέο ποσό. Χρησιμοποιήστε την για να ιεραρχήσετε ποια όργανα χρειάζονται διακρίβωση πρώτα.

Πρότυπο αιτιολογίας παράκαμψης

Για να αποφύγετε επανειλημμένες απορρίψεις λόγω ανεπαρκούς τεκμηρίωσης, ακολουθήστε τη δομή:

«Η διακρίβωση του οργάνου <όνομα> (S/N <serial>) έληξε στις <ημερομηνία>. Δεν μπορεί να γίνει άμεσα διότι <λόγος — π.χ. αναμένεται επίσκεψη παρόχου, αναπληρωματικό όργανο σε χρήση>. Η μετρολογική εμπιστοσύνη διατηρείται μέσω <εσωτερικό QC με υλικό αναφοράς LotXXX εντός ορίων / διπλή ανάλυση με αναπληρωματικό όργανο>. Έχει ανοιχθεί CAPA-<αριθμός> και η διακρίβωση έχει προγραμματιστεί για <ημερομηνία>

Τι συμβαίνει στο παρασκήνιο

Η λογική αποκλεισμού υλοποιείται στη μέθοδο _enforceCalibrationGuard του analysis-record.resolver.ts (analysis-record.resolver.ts:1001). Για κάθε Measurement του AR συλλέγονται τα μοναδικά instrumentId και ζητείται ο πίνακας Instrument όπου requiresCalibration = 1, nextCalibrationDate IS NOT NULL και nextCalibrationDate < CURDATE(). Αν δεν προκύψουν εγγραφές, ο guard περνά αμέσως· διαφορετικά, χωρίς overrideReason, ρίχνεται GraphQLError με κωδικό extension APPROVAL_BLOCKED_CALIBRATION_OVERDUE (analysis-record.resolver.ts:1044) και payload instruments[] που περιλαμβάνει id, name, serialNumber, nextCalibrationDate.

Το πεδίο nextCalibrationDate στο Instrument (instrument.entity.ts:65) είναι nullable string τύπου date — η πολιτική σύγκρισης χρησιμοποιεί τη συνάρτηση CURDATE() του MariaDB, οπότε όλα τα όργανα του ίδιου tenant ελέγχονται με ενιαία ζώνη ώρας server. Όργανα με nextCalibrationDate IS NULL δεν προκαλούν μπλόκο, αλλά εμφανίζονται ως «μη διακριβωμένα» σε ξεχωριστή κάρτα του Business Dashboard.

Στην οδό παράκαμψης, ο guard ελέγχει διαδοχικά:

  1. Ότι ο ρόλος ικανοποιεί overrideHelper.isOverrideRole(role) — διαφορετικά OVERRIDE_DENIED.
  2. Ότι το overrideReason.trim().length >= 20 — διαφορετικά OVERRIDE_REASON_TOO_SHORT.
  3. Εκτελεί OverrideHelper.recordEvent({ action: 'OVERRIDE_CALIBRATION_APPROVE', ... }) που γράφει αδιάβλητη εγγραφή στο OverrideLog.

Η ακολουθία ελέγχων είναι σκόπιμα fail-fast: ένας χρήστης χωρίς ρόλο δεν θα δει ποτέ μήνυμα τύπου «η αιτιολογία είναι πολύ σύντομη», ώστε να μην εξάγει πληροφορίες για το πώς να παρακάμψει.

Σύντομη δίγλωσση περιγραφή είναι ενσωματωμένη στο ίδιο το μήνυμα σφάλματος (analysis-record.resolver.ts:1041), οπότε ακόμη και εργαλεία που δεν προβάλλουν το extensions.instruments (π.χ. απευθείας curl) εμφανίζουν ποιο όργανο είναι εκπρόθεσμο.

Στο frontend, ο component AnalysisDetail (analysis-detail.ts:730) εντοπίζει τον κωδικό σφάλματος μέσα στο err.errors[0].extensions.code (Apollo v4 shape) και ενεργοποιεί το override dialog μέσω showOverrideDialog.set(true), αποθηκεύοντας το recordId σε pendingApprovalRecordId. Η υποβολή της αιτιολογίας καλεί ξανά τη mutation, αυτή τη φορά με το overrideReason σαν παράμετρο — η ίδια ροή guard τρέχει εκ νέου, βλέπει το reason, και προχωρά στην καταγραφή.

Ακραίες περιπτώσεις

  • Όργανο διαγραμμένο μετά την καταχώρηση μέτρησης: ο guard εξακολουθεί να βλέπει το instrumentId στη μέτρηση. Διορθώστε ή διαγράψτε τη μέτρηση πριν επιχειρήσετε εκ νέου έγκριση.
  • Πολλαπλά εκπρόθεσμα όργανα στο ίδιο AR: το dialog εμφανίζει όλα. Η ίδια αιτιολογία καλύπτει το σύνολο — δεν χρειάζεται ξεχωριστή υποβολή ανά όργανο.
  • Διακρίβωση εκτός tolerance (withinTolerance: false): δεν θεωρείται επιτυχής. Το nextCalibrationDate δεν ενημερώνεται και το AR παραμένει μπλοκαρισμένο.

Σημαντική διαφορά για bulk approve. Η μέθοδος μαζικής έγκρισης (analysis-record.resolver.ts:1767) καλεί _enforceCalibrationGuard(r, undefined, userRole, userId) με overrideReason = undefined, οπότε δεν επιτρέπεται καμία παράκαμψη: όλα τα AR με εκπρόθεσμο όργανο αποτυγχάνουν και πρέπει να διορθωθούν είτε μεμονωμένα με reason είτε με πραγματική διακρίβωση. Αυτό είναι σκόπιμο — η μαζική έγκριση δεν πρέπει να καλύπτει εξαιρέσεις.


Σχετικά εδάφια

  • §6.4.6 — Διακρίβωση οργάνων μέτρησης για ιχνηλασιμότητα. Όλα τα όργανα που επηρεάζουν την αβεβαιότητα μέτρησης πρέπει να διακριβώνονται σύμφωνα με τεκμηριωμένο πρόγραμμα. Η εκπρόθεσμη διακρίβωση συνεπάγεται αμφισβητούμενη ιχνηλασιμότητα.
  • §6.4.7 — Πρόγραμμα διακρίβωσης και επανεξέταση. Το εργαστήριο τεκμηριώνει συχνότητες διακρίβωσης, ενδιάμεσους ελέγχους, και εξετάζει το πρόγραμμα όταν εντοπίζονται αποκλίσεις. Η οδός παράκαμψης πρέπει να συνοδεύεται από CAPA που τροφοδοτεί την επανεξέταση.

Για το πλήρες κείμενο των εδαφίων δείτε τη σελίδα Αναφορά → ISO/IEC 17025:2017.


Συμβουλή για επιθεωρήσεις ΕΣΥΔ

Οι επιθεωρητές ΕΣΥΔ συχνά ζητούν δειγματοληπτικά να δουν παραδείγματα παρακάμψεων. Ένα καλά δομημένο OverrideLog με σαφή αιτιολογία, παραπομπή σε CAPA και αποδείξεις μετρολογικής εμπιστοσύνης (QC charts, αναπληρωματικές μετρήσεις) αποτελεί ισχυρή απόδειξη ότι το εργαστήριο δεν παρακάμπτει σιωπηλά τους ελέγχους, αλλά διαχειρίζεται την εξαίρεση με ώριμο τρόπο. Αντίθετα, λακωνικές αιτιολογίες του τύπου «έκτακτη ανάγκη» είναι κόκκινη σημαία.

Συστηματική χρήση της οδού Β (π.χ. πάνω από 5 παρακάμψεις/μήνα για το ίδιο όργανο) πρέπει να ενεργοποιεί ανασκόπηση του προγράμματος διακρίβωσης σύμφωνα με τη §6.4.7 και ενδεχομένως αύξηση της συχνότητας ή αλλαγή παρόχου.