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

Γιατί δύο χρονοσημάνσεις σε κάθε δείγμα

Το πραγματικό πρόβλημα στο χωράφι

Ο δειγματολήπτης βρίσκεται σε αμπελώνα στη Νεμέα.

Είναι 07:42, η ομίχλη δεν έχει σηκωθεί ακόμη,

και το κινητό δείχνει «κανένα σήμα».

Παίρνει το πυρηνοδειγματολήπτη,

μαζεύει δείγμα από τρία σημεία της σειράς αμπελιού,

βγάζει φωτογραφία, καταγράφει τις συντεταγμένες GPS

και πατάει «Αποθήκευση» στη διαδρομή /collect.

Το δείγμα έχει συλλεχθεί — αλλά ο διακομιστής του LIMS δεν το γνωρίζει ακόμα.

Θα το μάθει στις 09:15, όταν το αγροτικό περάσει την κορυφή και πιάσει 4G.

Αυτή η ψαλίδα — από λίγα λεπτά έως αρκετές ώρες, ενίοτε και ημέρες —

είναι η ζώνη εμπιστοσύνης που πρέπει να αντιμετωπίσει κάθε offline-first σύστημα.

Ένας ελεγκτής ΕΣΥΔ θα ρωτήσει: «Πότε ακριβώς συνέβη η δειγματοληψία;»

— και η απάντηση δεν μπορεί να είναι «τότε που το έλαβε ο διακομιστής μας».

Η απόφαση: δύο διακριτές χρονοσημάνσεις

Κάθε Sample φέρει δύο ξεχωριστές χρονοσημάνσεις στη βάση:

  • collectedAt (datetime(6) στον πίνακα samples) — η στιγμή παρατήρησης,

σφραγισμένη από το ρολόι της συσκευής του δειγματολήπτη

τη στιγμή που πάτησε «Αποθήκευση» στο χωράφι.

Είναι το πεδίο που απαιτεί ρητά το ISO 17025 §7.3.3(b)

(«ημερομηνία ΚΑΙ ώρα δειγματοληψίας»).

  • createdAt (@CreateDateColumn κληρονομημένο από την Common) —

η στιγμή που η εγγραφή προσέγγισε τον διακομιστή του LIMS

και υπέβαλε επιτυχώς το mutation. Σφραγίζεται από το ρολόι του διακομιστή.

Μία χρονοσήμανση δεν αρκεί.

Αν κρατούσαμε μόνο το createdAt, θα χάναμε την πραγματική στιγμή παρατήρησης

— η μετεωρολογία της ημέρας, οι συνθήκες αγρού,

η ταυτοχρονία με άλλα συμβάντα γίνονται μη ανακτήσιμες.

Αν κρατούσαμε μόνο το collectedAt, χάνουμε την ιχνηλασιμότητα της εισόδου στο LIMS

και ένας ελεγκτής δεν θα μπορούσε να διακρίνει

αν η εγγραφή προσγειώθηκε με καθυστέρηση ή τροποποιήθηκε εκ των υστέρων.

Τι απαιτεί στην πραγματικότητα το §7.11.3

Το §7.11.3 του ISO/IEC 17025:2017 ζητάει «προστασία και ακεραιότητα» του LIMS

— συμπεριλαμβανομένης μιας υπερασπίσιμης καταγραφής

του πότε πραγματικά συνέβη κάθε γεγονός.

Το ζεύγος (collectedAt, createdAt) καλύπτει τρία σημεία του εδαφίου ταυτόχρονα:

  • το γεγονός της παρατήρησης είναι αμετάβλητο και ξεχωριστό από τη μηχανική του συγχρονισμού,
  • η ψαλίδα μεταξύ των δύο είναι μετρήσιμη

— ο ελεγκτής βλέπει πόσο καθυστέρησε η εγγραφή στο LIMS,

  • όταν ο πελάτης συμπληρώσει «παραλαβή στο εργαστήριο»,

η τρίτη σφραγίδα receivedDate (στιγμή μετάβασης Σε Συλλογή → Παραλήφθηκε

μέσω του markSampleReceivedAtLab) κλείνει την αλυσίδα παρακολούθησης.

Πού φαίνεται στο UI

Στο dialog λεπτομερειών δείγματος, ένα μπλοκ «Χρονοσήμανση Δείγματος»

πάνω από το ιστορικό κατάστασης δείχνει και τις δύο σφραγίδες δίπλα-δίπλα,

μαζί με μια ετικέτα «Καθυστέρηση συγχρονισμού»

όταν η ψαλίδα ξεπερνά τα 5 λεπτά

(διαφορετικά αποκρύπτεται για να μη θορυβεί τα walk-in δείγματα).

Το chip κατάστασης συγχρονισμού στην μπάρα δείχνει σε πραγματικό χρόνο

πόσες εγγραφές περιμένουν να φτάσουν στον διακομιστή.

Η μη προφανής συνέπεια

Κάθε ερώτημα ελέγχου που συσχετίζει δείγματα με «τι συνέβαινε εκείνη την ημέρα»

— μετεωρολογικά δεδομένα, βάρδια προσωπικού, παρτίδες αναλωσίμων,

αναφορές βαθμονόμησης οργάνων —

πρέπει να γίνει join στο collectedAt, όχι στο createdAt.

Διαφορετικά, ένα δείγμα που συλλέχθηκε την Τρίτη αλλά συγχρονίστηκε την Πέμπτη

θα φανεί λανθασμένα συσχετισμένο με συμβάντα της Πέμπτης.

Αυτή η λεπτομέρεια ζει στα ερωτήματα ιχνηλασιμότητας — όχι στα screens —

γι' αυτό αξίζει να καταγραφεί ρητά εδώ.