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.
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.
| 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": {
- "j": 2024,
- "h": "g.U. Mosel",
- "ht": "Gewanne mit Lage",
- "r": [
- "Spätburgunder",
- "Portugieser"
], - "q": "Qualitätswein",
- "g": "halbtrocken",
- "w": "Rosé",
- "f": "Erzeugerabfüllung",
- "a": "Im Eichenfass gegoren",
- "l": "Steillage",
- "z": [
- "blanc de noir"
], - "gz": "Profilwein Rheinhessen"
}
}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_HisBeispiel:
500101147202026_2017_2026-04-13_124000.zipDas ZIP-Archiv muss enthalten:
manifest.json Manifest-Datei mit Hash und Metadatendata.json Labordaten in JSON-FormatDokumentation über den Aufbau der manifest.json Datei, die in dem ZIP-Archiv enthalten sein muss.
| 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": {
- "apNr": "5 001011 4720 2026"
}
}Dokumentation über den Aufbau der data.json Datei, die in dem ZIP-Archiv enthalten sein muss.
| 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. |
{- "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
}