RIDING BYTES
← Alle Insights

29. Juli 2026 · 6 min Lesezeit

SENAITE.storage wird erwachsen: Aufbewahrung, Retrieve, druckbare Etiketten

Ein Rundgang durch das, was in senaite.storage in diesem Halbjahr gelandet ist. Konfigurierbare Aufbewahrung mit Regeln pro Service, ISO-konforme Retrieve-Transition mit Pflichtgrund und Code128-Etiketten für Standorte und Container.

SENAITE.storage wird erwachsen: Aufbewahrung, Retrieve, druckbare Etiketten

senaite.storage begann als Karte: Einrichtungen, Positionen, Container. Man legte eine Probe in ein Fach, wusste, wo sie liegt. Die letzten Monate haben aus der Karte einen Lebenszyklus gemacht: wie lange Material verbleibt, warum es wieder herauskommt, und wie man mit einem Scanner in der Hand das richtige Regalfach findet.

Konfigurierbare Aufbewahrung

Jedes akkreditierte Labor hat Aufbewahrungsregeln. Wasserproben halten so lange, Blutproben so lange, “Chikungunya positiv” wieder anders. Bis #62 hat senaite.storage davon nichts gewusst. Aufbewahrung lebte in einer Tabelle.

Das neue Retention Rules-Raster im Storage-Konfigpanel verknüpft einen Analyse-Service, optional einen bestimmten Ergebniswert, mit einer Aufbewahrungsdauer in Tagen. Der Matching-Algorithmus ist explizit:

Storage Settings, Reiter Retention Rules. Days before expiration auf 5. Drei Retention-Zeilen: Analyse-Service Cs-134 mit 90 Tagen, Cs-137 mit 90 Tagen, und eine Cs-134-Zeile ohne Retention-Wert. Save- und Cancel-Buttons unten.
Retention Rules im Storage-Kontrollpanel. Eine Zeile pro Analyse-Service, optional pro Ergebniswert, mit einer Aufbewahrungsdauer.
  1. Alle Analysen der Probe durchlaufen.
  2. Für jede Analyse die Regeln nach Service-UID durchsehen.
  3. Definiert die Regel einen Ergebniswert, auch danach matchen.
  4. Regeln mit Ergebniswert schlagen allgemeine Regeln.
  5. Matchen mehrere Regeln, gewinnt die längste Dauer.

Das deckt zwei reale Muster sauber ab. Ist der Organismus das Ergebnis eines Tests (Service “Identifizierter Organismus”, Resultat “E. coli”), matcht man auf den Ergebniswert. Ist der Organismus ein eigener Test (Service “Chikungunya”, Resultat Positiv oder Negativ), matcht man auf dasselbe Feld. Die Store-Ansicht befüllt die Aufbewahrungstage automatisch aus der Regel; nur wenn nötig überschreibt jemand.

Ergänzungen folgen: #63 bringt ergebnistyp-spezifische Steuerungen (unterschiedliche Felder für numerische und String-Resultate), #64 macht das Ablaufdatum als Spalte sichtbar, #65 fügt einen Filter “Past Retention” hinzu, und #66 färbt abgelaufene Proben rot. Am Ende steht ein Listing, in dem die Kollegin am Montagmorgen im Kühlschrank auf einen Blick sieht, was zur Entsorgung wandert.

Aus Recover wurde Retrieve

Klein, aber wichtig, wenn Auditoren SOPs lesen. #67 benennt jedes sichtbare Vorkommen von “recover” in “retrieve” um, angelehnt an die Terminologie von ISO 17025 und ISO 15189. Interne Transition-IDs (recover, recover_samples) und Berechtigungs-Strings bleiben unverändert, damit Add-ons, die darauf hängen, weiterhin funktionieren. Nur Labels, Buttons und Meldungen sind gewandert.

Pflichtgrund beim Retrieve

Bei Zurückweisungen fragt SENAITE seit jeher nach dem Warum. Bei Rückholen aus dem Lager bislang nicht. Das ist eine Lücke im Audit-Trail: Eine Probe ging ins Lager und kam wieder heraus, ohne dass festgehalten war, ob es für einen Rerun, eine Kundenanfrage oder eine Zweitmeinung war.

#70 bringt ein Retrieve Reasons-Raster ins Storage-Konfigpanel. Lab-Manager konfigurieren die Auswahlliste (“Rerun”, “Kundenanfrage”, “Externe Bestätigung”), ein Toggle macht die Auswahl verpflichtend. Löst man Retrieve auf einer gelagerten Probe aus, landet man auf einem Formular, wählt einen Grund oder tippt einen eigenen via “Andere…”. Ein Info-Viewlet auf der Probe trägt Grund, Bearbeiter und Datum ab da dauerhaft.

Code128-Etiketten für Lagerplätze

Man kann nicht auf ein Regal scannen, wenn das Regal keinen Barcode hat. #72 schliesst diese Lücke mit einer Sticker-Vorlage StorageLocation_50x30mm, die einen Code128-Barcode aus der getId() des Ortes rendert, dazu die ID und den vollständigen Breadcrumb-Titel als lesbaren Text. Ein GetStorageStickers-Adapter registriert die Vorlage für IStorageFacility, IStoragePosition, IStorageContainer und IStorageSamplesContainer. Die Listings bekommen in jedem Review-State eine Aktion Etiketten drucken, die die bestehende workflow_action?action=print_stickers-Weiterleitung wiederverwendet.

Ein Etikett aufs Regal, und ein Scanner liefert die exakt selbe Zeichenkette, die die Sample-Storage-Formulare akzeptieren. Die Template-ID lautet senaite.storage:StorageLocation_50x30mm.pt; überschreiben Sie sie pro Instanz genauso wie jede andere Sticker-Vorlage.

Etiketten-Druckdialog. Template-Dropdown auf 'Storage location (50x30mm)', Anzahl Kopien 1, Buttons Back und Print. Die Vorschau zeigt das gedruckte Etikett: ein Code128-Barcode über der Ortsnummer SS-00001 mit '9x9 Container' als lesbarem Text, vor einer beschrifteten Millimeter-Skala.
Ein StorageLocation_50x30mm-Etikett gerendert. Code128-Barcode der Ortsnummer, Breadcrumb-Titel als Text, Vorschau vor Millimeterlineal.

Eine leise Änderung mit spürbarer Wirkung

#74 hat die Listings für gelagerte Proben und für abgelaufene Aufbewahrung auf flat_listing umgestellt. Kein neues Feature, nur ein schnelleres Rendering bei Containern mit hunderten Proben. Wert der Erwähnung, weil es eine der letzten “Storage ist langsam”-Klagen aus der Welt schafft.

Zwei Personen prüfen Notizen auf Papier neben einem Laptop

Bringen Sie das in Ihr Labor

Ob Sie SENAITE evaluieren, über mehrere Standorte skalieren oder Geräte und Monitoring anbinden — das Team, das die Plattform geschrieben hat, ist das Team, mit dem Sie sprechen.