Zusammenarbeit zwischen WIP und Laborinformationssystem (LIMS) (1.0.0)

Erteilt ein Weinbaubetrieb einem Labor einen Analyseauftrag, wird im LIMS die Anlage eines Datensatzes notwendig, der Informationen über Betrieb, APNr, Kategorie, Abfüllart und Bezeichnung des Produktes enthält. Im Anschluss an die Analyse gibt das Labor die analytischen Werte an den Betrieb zurück, der die Daten in den Antragssatz in QP-online einfügt. Somit ergeben sich zwei Prozesse, die getrennt voneinander zu betrachten sind:

Laborauftrag - Einlesen Produktdaten in Laborsoftware

Funktionalität der Übernahme der Bezeichnungsdaten und der APNr in die Laborsoftware und das Abbilden der APNr, Kategorie, Antragstyp und Bezeichnungsdaten als Datensatz in einem QR-Code auf dem Laborauftrag, der vom Labor gescannt und in das LIMS des Labors eingelesen werden kann.

Labordatenimport - Upload der Analysedaten in QP-Online

Importieren der Laboranalysedaten als ZIP-Archiv. Dies ist noch keine offizielle API-Schnittstelle sondern dient als Dokumentation darüber wie das zum Upload benötigte ZIP-Archiv aufgebaut werden muss. Der Import der Labordaten erfolgt vom Nutzer über das WeinInformationsPortal (WIP) bei dem Erstellen eines Antrags auf Qualitätsprüfung. Hierfür muss dem Nutzer eine Datei bereitgestellt werden, deren Aufbau im Folgenden dokumentiert wird.

Informationen im Laborauftrag

Dokumentation über den Laborauftrag, der vom Winzer an das Labor übermittelt wird. Dieser enthält einen QR-Code, der Informationen im folgenden Schema enthält. Diese Informationen sind darunter auch als Klartext im JSON-Format angegeben.

Laborauftrag Schema

id
required
string <uuid>

Identifikationsnummer des Antrags

ap
required
string^[1-9]\d{6}\d{4}\d{4}$

Ap-Nummer bestehend aus Prüfstelle (1), Betriebsnr. (6), lfd Nr. (4), Jahr (4)

k
required
string
Enum: "Wein" "Sekt" "Perlwein" "Likörwein"

Kategorie

at
required
string
Enum: "Flaschenantrag" "Fassantrag" "Erste Teilfüllung" "Weitere Teilfüllung" "Abfüllanzeige"

Antragstyp

required
object (bezeichnung)

Bezeichnung

{
  • "id": "f4232892-9ec0-4b97-bbeb-6bf9748d911c",
  • "ap": "112345600012025",
  • "k": "Wein",
  • "at": "Teilfüllung",
  • "b": {
    }
}

Beispiel Laborauftrag

Beispiel für eine von QP-Online generierte Laborauftrag PDF-Datei. Laborauftrag

ZIP-Archiv Struktur

Schema zum Aufbau des ZIP-Archiv für den Labordatenimport. Analysedaten können vom Nutzer als ZIP-Archiv auf der QP-Online Plattform importiert werden. Diese Datei muss eine bestimmte Struktur aufweisen, um die sichere Verarbeitung und Validierung der Daten zu gewährleisten.

ZIP-Datei Namensschema: apNr_laborNr_timestamp.zip

  • apNr Ap-Nummer
  • laborNr 4-stellige Labornummer (z.B. 1234)
  • timestamp Timestamp des Erstellungszeitpunkts des ZIP-Archiv im Format Y-m-d_His

Beispiel:

  • 500101147202026_2017_2026-04-13_124000.zip

Das ZIP-Archiv muss enthalten:

  • manifest.json Manifest-Datei mit Hash und Metadaten
  • data.json Labordaten in JSON-Format

Manifest Datei

Dokumentation über den Aufbau der manifest.json Datei, die in dem ZIP-Archiv enthalten sein muss.

manifest.json Schema

version
required
string
Value: "1.0.0"

Versionsnummer des Manifest-Formats

created_at
required
string <date-time>

Zeitpunkt der Erstellung des Manifests

data_file
required
string
Default: "data.json"

Name der Datei mit den Labordaten

hash_algorithm
required
string
Value: "md5"

Verwendeter Hash-Algorithmus

hash
required
string^[a-fA-F0-9]+$

Hash der data.json Datei

object

Zusätzliche Informationen

{
  • "version": "1.0.0",
  • "created_at": "2019-08-24T14:15:22Z",
  • "data_file": "data.json",
  • "hash_algorithm": "md5",
  • "hash": "5d41402abc4b2a76b9719d911017c592",
  • "info": {
    }
}

Labordaten

Dokumentation über den Aufbau der data.json Datei, die in dem ZIP-Archiv enthalten sein muss.

data.json Schema

One of
uuid
required
string <uuid>

Die eindeutige UUID des Datensatzes die vom Labor vergeben wird

antragUuid
required
string <uuid>

Die eindeutige UUID des Antrags die im Laborauftrag angegeben ist

kategorie
required
string
Enum: "Wein" "Sekt" "Perlwein" "Likörwein"
Value: "Wein"
laborNr
required
string = 4 characters
annahmeTS
required
string <date-time> (Zeitpunkt der Annahme)
analyseTS
required
string <date-time> (Zeitpunkt der Analyse)
alkohol
required
number <float> (vorhandener Alkohol) decimal places <= 1 [ 0 .. 999.9 ]

Angabe des im Produkt vorhandenen Alkohols. Angabe in g/l.

extrakt
required
number <float> (Extrakt zuckerfrei) decimal places <= 1 [ 0 .. 999.9 ]

zuckerfreier Extrakt (indirekt). Angabe in g/l.

zuckerVorInversion
required
number <float> (Zucker vor Inversion) decimal places <= 1 [ 0 .. 999.9 ]

Vergärbare Zucker vor Inversion. Angabe in g/l.

zuckerNachInversion
required
number <float> (Zucker nach Inversion) decimal places <= 1 [ 0 .. 999.9 ]

Vergärbare Zucker nach Inversion. Angabe in g/l.

saeure
required
number <float> (Säure) decimal places <= 1 [ 0 .. 99.9 ]

Gesamtsäure, berechnet als Weinsäure. Angabe in g/l.

freieSO2
integer (Freie SO2) [ 0 .. 999 ]

Freie schweflige Säure. Angabe in mg/l.

gesamteSO2
integer (Gesamte SO2) [ 0 .. 999 ]

Gesamte schweflige Säure. Angabe in mg/l.

bemerkung
string (Bemerkung des Labors)

Optionale Bemerkungen des Labors zur Analyse

dichte
required
number <float> (relative Dichte) decimal places <= 4 [ 0 .. 9.9999 ]

Wert bei Wein, Perlwein und Likörwein: relative Dichte d20/20.

Example
{
  • "uuid": "095be615-a8ad-4c33-8e9c-c7612fbf6c9f",
  • "antragUuid": "0d46e611-232a-484e-bf7b-ce8d57e58821",
  • "kategorie": "Wein",
  • "laborNr": "1234",
  • "annahmeTS": "2019-08-24T14:15:22Z",
  • "analyseTS": "2019-08-24T14:15:22Z",
  • "alkohol": 91.8,
  • "extrakt": 22.8,
  • "zuckerVorInversion": 6.5,
  • "zuckerNachInversion": 18.3,
  • "saeure": 6.4,
  • "freieSO2": 51,
  • "gesamteSO2": 139,
  • "bemerkung": "string",
  • "dichte": 1.0006
}