MAL-Homepage Inhaltsverzeichnis



MAL Dokumentation: Küchenprogramm




Inhalt:

1. ALLGEMEINES
2. DIE DATENBANK-TABELLEN


1. ALLGEMEINES

Das Küchenprogramm basiert auf einer MySQL-Datenbank, die per ODBC angebunden ist. Abgesehen von wenigen Ausnahmen sind alle Worte für das Küchenprogramm im Folder kuechen_folder bzw. unter Topic
kueche zu finden. Der Einstieg für Benutzer erfolgt mit dem Wort kuechenprogramm. Abhängig von den Rechten des jeweiligen Benutzers wird dabei das Hauptmenü gestaltet.

Das Wort kuechendatenbank_aktualisieren muss in regelmäßigen Abständen (z.B. alle 30 Minuten) gestartet werden, liest die aktuellen Patientendaten per ODBC aus Medbase und speichert sie in die Küchendatenbank. Außerdem übernimmt es die automatische Speisenwahl für bestimmte Patienten mit Diätologiebetreuung und generiert die Speisepläne und sonstige HTML-Dokumente für das Intranet.

Die ITR-Datenbank ist ebenfalls per ODBC angebunden, wird aber nur für die Bestimmung der Begleitpersonen und der Patientenzahlen bei der Monatsabrechnung verwendet.

Das Anlegen neuer Wochenspeisepläne erfolgt durch zyklisches Kopieren alter Speisepläne. Zu diesem Zweck muss jede Woche am Montag in der Früh das Wort speiseplan_anlegen aufgerufen werden.



MAL-Homepage Inhaltsverzeichnis


2. DIE DATENBANK-TABELLEN

Tabellen der Küchendatenbank

anfertigungsplaetze
artikel
artikelgruppen
bls
blsnames
cafeteriaeinnahmen
cafeteriakassa
cafeteriakategorien
cafeteriarechnungen
essensbestellungen
essensteilnehmergruppen
firmenadressen
fixspeisen
gastnummer
gewaehlte_speisen
hausinterner_ls
kostenstellen
lagerbewegungen
lagerorte
lagerzugang
lebenszeichen
mahlzeiten
mehrwertsteuer
menuearten
menues
mitarbeiter
moeglichemenues
patienten
patientenmesswerte
patientenvorbestellungen
rezeptarten
rezepte
servierstatus
sitze
spezialitaeten
standardeinkaeufe
tische
user
veranstaltungen
warenzugang
warteschlange
zutaten




Tabelle 'anfertigungsplaetze'

AttributDatentypBeschreibung
id int(11) Laufende Nummer.
Anfertigungsplatzname char(35) Name eines Platzes für die Anfertigung eines Rezeptes.

Bei jedem Rezept ist ein Anfertigungsplatz hinterlegt, d.h. jedes Rezept hat einen Verweis auf einen Eintrag in dieser Tabelle.


Tabelle 'artikel'

AttributDatentypBeschreibung
id int(11) Laufende Nummer.
Bezeichnung char(80) Name des Artikels.
EAN char(60) EAN-Barcode
Gruppe int(11) Verweis auf die Tabelle 'Artikelgruppen'.
Cafeteriakategorie char(20) Wenn der Artikel in der Cafeteria verkauft werden soll, dann wird hier ein Text aus der Tabelle 'Cafeteriaekategorien' hinterlegt.
Lieferant char(20) Name der Lieferfirma.
BLS_Nummer char(10) Wenn der Artikel einem Eintrag im Bundeslebensmittelschlüssel zugeordnet ist, dann steht hier die Kurzbezeichnung von diesem Eintrag.
Einheit char(10) Einheit in der die Packungsgröße angegeben ist. Damit die Inhaltsstoffe berechnet werden können dürfen nur Einheiten aus dem MAL-Wort 'einheiten' verwendet werden.
Packungspreis double Einkaufspreis in Euro.
Packungsgroesse double Menge, die in einer Packung enthalten ist in der oben angeführten Einheit.
MWST double Mehrwertsteuersatz in Prozent.
Lagerort char(25) Name des Lagers, in dem der Artikel gelagert wird.
Lagerstand double Aktueller Lagerstand in der oben angeführten Einheit.
Maximaltemperatur double Maximal zulässige Lagertemperatur in Grad.
Artikelnummer char(25) Artikelnummer der Lieferfirma.
Verkaufspreis double Falls der Artikel in der Cafeteria zum Verkauf angeboten wird, ist hier der Verkaufspeis in Euro eingetragen.
Allergene char(30) Folge von Kleinbuchstaben mit jeweils einem Buchstaben pro Allergen (keine Leerzeichen).

Diese Tabelle wird einerseits für die Lagerhaltung und andererseits für die Zutaten bei Rezepten verwendet. Jeder Zutat entspricht ein Artikel in der Artikeltabelle.


Tabelle 'artikelgruppen'

AttributDatentypBeschreibung
id int(11) Laufende Nummer.
Kurzbezeichnung char(25) Kurzbezeichnung der Artikelgruppe.
Langbezeichnung char(80) Langbezeichnung der Artikelgruppe.

Die Artikelgruppen sind hauptsächlich für die Jahresabrechnung vom Lager von Relevanz. Dort werden die Lagerstände nach Artikelgruppen gegliedert gelistet. Jeder Artikel muss einer Artikelgruppe zugeordnet sein.


Tabelle 'bls'

AttributDatentypBeschreibung
id int(11) Laufende Nummer des Eintrags.
SBLS char(10) Kurzbezeichnung des Eintrags. Muss ein eindeutiger Schlüssel sein. Wird bei der Zuordnung von Artikeln oder Rezepten verwendet.
ST char(80) Langbezeichnung der Speise oder Zutat.

Die Tabelle BLS (Bundes-Lebensmittelschlüssel) beschreibt die Inhaltsstoffe bestimmter Rezepte oder Zutaten. Sie hat viele Spalten, die hier nicht angeführt sind. Die Bedeutung der Spalten ist in der Tabelle 'blsnames' hinterlegt. Die Tabelle BLS enthält aber nicht nur den Bundes-Lebensmittelschlüssel, sondern es können auch per Bedienung hauseigene Einträge eingefügt werden für Speisen oder Zutaten, die im Bundes-Lebensmittelschlüssel nicht enthalten sind.


Tabelle 'blsnames'

AttributDatentypBeschreibung
id int(11) Laufende Nummer.
Spaltennamen char(15) Name der Spalte in der Tabelle 'BLS'.
Wertenamen char(50) Bezeichnung des Inhaltsstoffes, der in dieser Spalte der Tabelle 'BLS' gespeichert ist.
Einheiten char(12) Einheit, in der die Menge des Inhaltsstoffes in der Tabelle 'BLS' gespeichert ist.

Hier werden die Attribute (Spalten) der Tabelle 'BLS' beschrieben.


Tabelle 'cafeteriaeinnahmen'

AttributDatentypBeschreibung
id int(11) Laufende Nummer.
Datum date Datum der Einnahme.
Zeit time Uhrzeit der Einnahme.
Artikelgruppe int(11) Verweis auf die Artikelgruppe zu der die Einnahme gehört.
Wert double Eingenommene Summe in Euro.

In dieser Tabelle werden alle Einnahmen, die über das MAL-Wort 'cafeteria_einnahmenerfassung' erfasst wurden gespeichert. Sie dient nur für die Monatsabrechnung und wird nur manuell vom Küchenchef bearbeitet.


Tabelle 'cafeteriakassa'

AttributDatentypBeschreibung
id int(11) Laufende Nummer.
User char(20) Windows-Loginname von dem Benutzer der die Cafeteria-Kassa bedient hat (=Verkäufer).
Datum timestamp Datum und Zeitpunkt des Einkaufs.
Artikel_id int(11) Verweis auf die ID in der Artikel-Tabelle.
Preis decimal(10,2) Bezahlter Preis in Euro.
Bezahlung_von char(15) Bei Einkäufern durch NRZ-Mitarbeiter steht hier der Windows-Loginname des Mitarbeiters, sonst "barzahlung".

In dieser Tabelle werden alle Zahlungseingänge die über das PHP-Programm 'cafeteriakassa.php' erfasst wurden gespeichert.


Tabelle 'cafeteriakategorien'

AttributDatentypBeschreibung
id int(11) Laufende Nummer.
Bezeichnung char(50) Name der Cafeteria-Kategorie.

Die Cafeteria-Kategorien werden für die Monatsabrechnungen benötigt. Dort müssen die Einnahmen von der Cafeteria nach Karegorien aufgeschlüsselt werden.


Tabelle 'cafeteriarechnungen'

AttributDatentypBeschreibung
id int(11) Laufende Nummer.
User char(20) Windows-Loginname von dem Benutzer, der die Rechnung ausgestellt hat.
Datum timestamp Datum und Uhrzeit der Rechnungslegung.
Rechnungsnummer char(20) Jahreszahl und fortlaufende Nummer der Rechnung, getrennt durch Schrägstrich.
bezahlt_von char(40) Bei Bezahlung durch einen Mitarbeiter wird dessen Windows-Loginname gespeichert, sonst der Text "barzahlung".
Betrag decimal(10,2) Rechnungsbetrag in Euro.
Rechnung varchar(2000) HTML-Code der Rechnung.

In diese Tabelle wird vom PHP-Programm 'cafeteriakassa.php' jeweils bei Rechnungslegung ein Eintrag geschrieben.


Tabelle 'essensbestellungen'

AttributDatentypBeschreibung
id int(11) Laufende Nummer.
User char(20) Windows-Loginname vom Mitarbeiter, der das Essen bestellt hat.
Datum date Tag für den das Essen bestellt wurde.
Gang char(15) Gang (Vorspeise, Hauptspeise oder Nachspeise) für den das Essen bestellt wurde.
Rezept int(11) Verweis in die Tabelle 'Rezepte' auf das bestellte Rezept.
Anzeigename char(50) Anzeigename des Bestellers.

In dieser Tabelle werden die Essensvorbestellungen der Mitarbeiter gespeichert. Die Mitarbeiter können ausschließlich Mittagessen vorbestellen, haben aber die Möglichkeit einzelne Rezepte zu wählen (im Gegensatz zu den selbstständig wählenden Patienten, die nur ganze Menüs wählen können).


Tabelle 'essensteilnehmergruppen'

AttributDatentypBeschreibung
id int(11) Laufende Nummer.
Essensteilnehmer char(40) Langbezeichnung der Essensteilnehmergruppe.
Teiler double Gewichtung der Teilnehmergruppe in der Wareneinsatzrechnung.

Diese Tabelle wird in der Wareneinsatzrechnung (Wort 'monatsabrechnung_wareneinsatz') für die Gewichtung der konsumierten Speisen herangezogen.


Tabelle 'firmenadressen'

AttributDatentypBeschreibung
id int(11) Laufende Nummer.
Firmenname char(40) Name der Lieferfirma.
Anrede char(20) Anrede des Ansprechpartners.
Ansprechpartner char(40) Name des Ansprechpartners.
Strasse char(60) Strasse der Firmenadresse.
Postleitzahl char(10) Postleitzahl der Firmenadresse.
Ort char(40) Ort der Firmenadresse.
Telefon char(30) Telefonnummer des Firma/des Ansprechparners.
Kundennummer char(25) Kundennummer bei der Firma.
Suchbegriffe char(200) Durch Leerzeichen getrennte Schlagworte für die Suche nach bestimmten Firmen.

Dies Tabelle enthält alle möglichen Lieferfirmen.


Tabelle 'fixspeisen'

AttributDatentypBeschreibung
id int(11) Laufende Nummer.
Patienten_ID int(11) Verweis auf die Spalte 'pat_id' (=Medbase-Patienten-ID) in der Tabelle 'patienten'.
Mahlzeit char(30) Mahlzeit (Frühstück, Mittagessen etc.) bei der die Fixspeise serviert werden soll.
Rezept int(11) Verweis auf die Spalte 'id' in der Tabelle Rezepte.
Kommentar char(250) Kommentar des Diaetologen zu dieser Fixspeise.
Sollphase char(15) Schluckstörungs-Phase zu der diese Fixspeise passt. Die Fixspeise wird nur dann serviert, wenn die Phase des Patienten der Sollphase entspricht.
gedruckt int(11) Flag (=0 oder =1), das anzeigt, ob die Fixspeise von der Küche bereits am Servierplan oder am Stationsesser-Kärtchen ausgedruckt wurde.

Fixspeisen sind Speisen, die der Patient täglich zur gleichen Mahlzeit erhalten soll. Sie können ausschließlich von der Diätologie verordnet werden.


Tabelle 'gastnummer'

AttributDatentypBeschreibung
Nummer int(11) Nummer des zuletzt ausgedruckten Gastessensformulars.

Vor jedem Ausdruck eines Bestellformulars für eine Gästeessen wird die Nummer in dieser Tabelle inkrementiert.


Tabelle 'gewaehlte_speisen'

AttributDatentypBeschreibung
id int(11) Laufende Nummer.
Patienten_ID char(15) Verweis auf das Attribut 'pat_id' (=Medbase-Patienten-ID) in der Tabelle 'patienten'.
Datum date Tag für den das Essen bestellt wurden.
Mahlzeit char(30) Mahlzeit für die das Essen bestellt wurde.
Vorspeise1 int(11) Verweis auf das erste Vorspeisenrezept in die Tabelle 'rezepte'.
Vorspeise2 int(11) Verweis auf das zweite Vorspeisenrezept.
Vorspeise3 int(11) Verweis auf das dritte Vorspeisenrezept.
Vorspeise4 int(11) Verweis auf das vierte Vorspeisenrezept.
Hauptspeise1 int(11) Verweis auf das erste Hauptspeisenrezept.
Hauptspeise2 int(11) Verweis auf das zweite Hauptspeisenrezept.
Hauptspeise3 int(11) Verweis auf das dritte Hauptspeisenrezept.
Hauptspeise4 int(11) Verweis auf das vierte Hauptspeisenrezept.
Nachspeise1 int(11) Verweis auf das erste Nachspeisenrezept.
Nachspeise2 int(11) Verweis auf das zweite Nachspeisenrezept.
Nachspeise3 int(11) Verweis auf das dritte Nachspeisenrezept.
Nachspeise4 int(11) Verweis auf das vierte Nachspeisenrezept.
Kommentar char(250) Kommentar der Diätologie zu dieser Speisenbestellung.
User char(25) Windows-Benutzername der Diätassistentin.
gedruckt int(11) Flag (0 oder 1) das anzeigt, ob die Bestellung von der Küche bereits ausgedruckt wurde.
geprueft int(11) Flag (0 oder 1) das anzeigt, ob die Bestellung von der Diätologie geprüft wurde. D.h. zum Ausdruck in der Küche frei gegeben ist.
Logo_Testessen char(8) Flag ("ja" oder "nein") das angibt, ob es sich um ein Testessen der Logopädie handelt.
Phase char(10) Hier werden die ersten 7 Zeichen der Phase aus der Tabelle 'patienten' zum Zeitpunkt der Essensbestellung eingetragen.

In diese Tabelle werden die Bestellungen der Diätologie für die von ihr betreuten Patienten eingetragen.


Tabelle 'hausinterner_ls'

Dies Tabelle ist nicht in Verwendung, weil die hausinternen Lebensmittelschlüssel in die Tabelle 'BLS' eingetragen werden.


Tabelle 'kostenstellen'

AttributDatentypBeschreibung
id int(11) Laufende Nummer.
Kostenstellennummer char(15) Nummer der Kostenstelle.
Bezeichnung char(80) Bezeichnung der Kostenstelle

Tabelle der möglichen Kostenstellen.


Tabelle 'lagerbewegungen'

AttributDatentypBeschreibung
id int(11) Laufende Nummer.
Datum date Datum der Lagerbewegung.
Zeit time Zeit der Lagerbewegung.
Art char(20) Art der Lagerbewegung (Zugang, Abgang, Inventur ...)
Artikelnummer int(11) Verweis auf das Attribut 'id' in der Artikelliste.
Vorher double Lagerstand vor der Lagerbewegung.
Nachher double Lagerstand nach der Lagerbewegung.
Preis double Preis des Artikels zum Zeitpunkt der Lagerbewegung.
Mehrwertsteuer double Mehrwertsteuer in Prozent.
Kostenstelle int(11) Verweis auf die Kostenstelle bei Entnahmen vom Lager.

In dieser Tabelle werden alle Lagerzu- und -abgänge, sowie Lagerstandserfassungen durch Inventur erfasst.


Tabelle 'lagerorte'

AttributDatentypBeschreibung
id int(11) Laufende Nummer.
Lagerortname char(80) Name des Lagers.

Diese Tabelle enthält alle Orte an denen die Küche Waren lagert.


Tabelle 'lagerzugang'

AttributDatentypBeschreibung
id int(11) Laufende Nummer.
Artikelnummer int(11) Verweis auf die ID in der Tabelle 'Artikel'.
Datum date Datum des Lagerzugangs.
Zeit time Zeit des Lagerzugangs.
Zugangsmenge double Menge des Lagerzugangs.
Preis double Einkaufspreis in Euro.
Temperatur double Temperatur der Ware bei der Anlieferung (nur bei bestimmten Artikeln von Relevanz).
Mehrwertsteuerklasse int(11) Verweis auf die ID in der Tabelle 'Mehrwertsteuer'
Lieferfirma int(11) Verweis auf die ID der Tabelle 'Firmenadressen'

In diese Tabelle werden alle Lagerzugänge gespeichert.


Tabelle 'lebenszeichen'

AttributDatentypBeschreibung
id int(11) Laufende Nummer.
pat_eid int(11) Patienten-ID aus ITR, wenn ein Patient sein Armband registriert hat (sonst Null).
User char(20) Windows-Loginname, wenn ein Mitarbeiter seine Mitarbeiterkarte registriert hat (sonst Null).
Datum timestamp Datum und Uhrzeit der Registrierung.
Ereignis char(15) Art der Registrierung ("kommt", "geht" oder "bleibt"). Derzeit noch nicht in Verwendung.

Diese Tabelle dient primär dazu, regelmäßige Lebenszeichen der Patienten zu erfassen. Nebenbei wird diese Tabelle auch verwendet, um das Erscheinen eines Patienten im Speisesaal zu erkennen. Die Patienten sind aufgefordert, vor jeder Mahlzeit ihr Armband bei einem Barcode-Scanner vor dem Speisesaal zu scannen. Mit dem Wort 'lebenszeichen_abfragen' oder mit dem PHP-Programm 'lebenszeichen_anzeigen.php' kann für jeden Patienten angezeigt werden, wie lange der letzte Scan zurück liegt. Die Erfassung der Lebenszeichen kann mit dem Programm 'lebenszeichen_eingeben.php' oder dem Programm 'kommtgeht_eingeben.php' erfolgen. Das Scannen von Mitarbeiterkarten ist nur für Testzwecke vorgesehen.


Tabelle 'mahlzeiten'

AttributDatentypBeschreibung
id int(11) Laufende Nummer.
Mahlzeit char(35) Langbezeichnung der Mahlzeit.
Kurzbezeichnung char(15) Kurzbezeichnung der Mahlzeit.
Hauptmahlzeit char(4) Flag, ob die Mahlzeit eine Hauptmahlzeit ist ("j" oder "n").
Reihenfolge int(11) Eine aufsteigende Sortierung nach dieser Nummer muss der Reihenfolge der Mahlzeiten im Tagesablauf entsprechen.

Diese Tabelle enthält alle möglichen Mahlzeiten.


Tabelle 'mehrwertsteuer'

AttributDatentypBeschreibung
id int(11) Laufende Nummer.
Steuersatz double Mehrwertsteuersatz in Prozent.

Liste der möglichen Mehrwertsteuersätze.


Tabelle 'menuearten'

AttributDatentypBeschreibung
id int(11) Laufende Nummer.
Menueart char(50) Langbezeichnung der Menüart.
Menuenummer char(15) Kurzbezeichnung der Menüart ("Menü 1", "Menü 2" ...)
Farbe char(20) Drei durch Blank getrennte Zahlenwerte im Bereich 0 bis 1.0 für die Intensitäten von Rot, Grün und Blau.
Phase char(20) Unterscheidung, ob das Menü für Phasenkost ist ("keine" oder "Phase").

Diese Tabelle enthält alle möglichen Menüarten.


Tabelle 'menues'

AttributDatentypBeschreibung
id int(11) Laufende Nummer.
Datum date Tag für den das Menü geplant ist.
Mahlzeit char(30) Mahlzeit für die das Menü geplant ist ("Mittagessen", "Abendessen" ...).
Menueart int(11) Verweis auf die ID in der Tabelle 'Menuearten'.
Vorspeise1 int(11) Verweis auf die ID in der Tabelle 'Rezepte' für die erste Vorspeise.
Trennzeichen_V1 char(60) Trennende Worte für den Speiseplan (z.B.: "dazu servieren wir").
Vorspeise2 int(11) Verweis auf das zweite Vorspeisenrezept.
Trennzeichen_V2 char(60) Trennende Worte.
Vorspeise3 int(11) Verweis auf das dritte Vorspeisenrezept.
Trennzeichen_V3 char(60) Trennende Worte.
Vorspeise4 int(11) Verweis auf das vierte Vorspeisenrezept.
Hauptspeise1 int(11) Verweis auf das erste Hauptspeisenrezept.
Trennzeichen_H1 char(60) Trennende Worte.
Hauptspeise2 int(11) Verweis auf das zweite Hauptspeisenrezept.
Trennzeichen_H2 char(60) Trennende Worte.
Hauptspeise3 int(11) Verweis auf das dritte Hauptspeisenrezept.
Trennzeichen_H3 char(60) Trennende Worte.
Hauptspeise4 int(11) Verweis auf das vierte Hauptspeisenrezept.
Nachspeise1 int(11) Verweis auf das erste Nachspeisenrezept.
Trennzeichen_N1 char(60) Trennende Worte.
Nachspeise2 int(11) Verweis auf das zweite Nachspeisenrezept.
Trennzeichen_N2 char(60) Trennende Worte.
Nachspeise3 int(11) Verweis auf das dritte Nachspeisenrezept.
Trennzeichen_N3 char(60) Trennende Worte.
Nachspeise4 int(11) Verweis auf das vierte Nachspeisenrezept.

Jeder Eintrag dieser Tabelle beschreibt ein Menü im Speiseplan.


Tabelle 'mitarbeiter'

AttributDatentypBeschreibung
id int(11) Laufende Nummer.
Loginname char(20) Windows-Loginname des Mitarbeiters. Bei Personen, die keinen Windows-Account haben kann ein beliebiger sonstiger Bezeichner eingesetzt werden. Er muss aber über die ganze Tabelle eindeutig sein. Bei gesperrten Mitarbeierkarten wird der Loginname auf "gesperrt" umbenannt. Das ist der einzige Text der mehrfach vorkommen darf.
Anzeigename char(50) Anzeigename des Mitarbeiters. In der Regel Vorname und Familienname.
aktiv char(5) Flag, ob der Mitarbeiter bzw. sein Account aktiv ist ("j" oder "n").
Titel char(40) Titel des Mitarbeiters. Um vor- und nachgestellte Titel in gleicher Weise bedienen zu können wird im Titel das Zeichen '+' als Platzhalter für den Namen des Mitarbeiters verwendet.
Funktion char(50) Berufsbezeichnung oder Arbeitsbereich des Mitarbeiters.
Telefon char(25) Telefonnummer des Mitarbeiters.
Email char(60) E-Mail-Adresse des Mitarbeiters.
Familienname char(35) Familienname des Mitarbeiters.
Vorname char(20) Vorname des Mitarbeiters.
PersonalNr char(30) Personalnummer des Mitarbeiters. Dieses Feld ist für die Abrechnung der konsumierten Essen relevant. Es wird 1:1 bei der Monatsabrechnung in der Spalte "Personalnummer" ausgegeben. Per Konvention bedeutet eine fehlende Personalnummer, dass der Mitarbeiter kostenlos essen darf.

Diese Tabelle dient u.a. zum Drucken der Mitarbeiterkarten. Die Barcodes auf den Mitarbeiterkarten bestehen aus dem Attribut 'id' mit vorangestellter Zeichenfolge "mit".


Tabelle 'moeglichemenues'

Diese Tabelle ist nicht in Verwendung.


Tabelle 'patienten'

AttributDatentypBeschreibung
id int(11) Laufende Nummer.
pat_id char(20) Patienten-ID aus Medbase.
Familienname char(50) Familienname des Patienten.
Vorname char(50) Vorname des Patienten.
SozNr char(10) Sozialversichernungsnummer des Patienten.
Station char(50) Stationsbezeichung im Langtext.
Bett char(6) Bettennummer des Patienten.
Kostform char(80) Kostform aus dem Essen-/Trinken-Erhebungsbogen in Medbase.
Ort char(80) Ort der Essenseinnahme (aus dem Ess-/Trink-Erhebungsbogen).
Phase varchar(500) Schluckstörungsphase (aus dem Ess-/Trink-Erhebungsbogen).
aktuell char(1) Flag, ob der Patient aktuell anwesend ist ("j" oder "n"). Am Tag der Abreise gilt der Patient nicht mehr als anwesend.
Portion char(30) Gewünschte Portionsgröße (aus dem Ess-/Trink-Erhebungsbogen).
Kommentar_zum_Patienten varchar(5000) Allgemeiner Kommentar der Diätologie zum Patienten (unabhängig von Medbase).
KommentarDatum date Tag, an dem der Kommentar verfasst wurde.
KommentarZeit time Uhrzeit des Kommentars.
KommentarUser char(30) Windows-Loginname des Users, der den Kommentar eingegeben hat.
Suppe char(10) Flag ("ohne" oder "mit"), ob der Patient eine Suppe wünscht (aus dem Ess-/Trink-Erhebungsbogen).
Nachspeise char(10) Flag ("ohne" oder "mit"), ob der Patient eine Nachspeise wünscht (aus dem Ess-/Trink-Erhebungsbogen).
Schluckstoerung char(10) Ist "ja", wenn der Patient eine Schluckstörung hat (aus dem Ess-/Trink-Erhebungsbogen).
Eindicken char(200) Antwort auf die Frage "Eindicken" im Ess-/Trink-Erhebungsbogen.
Hinweise char(200) Kopie der Hinweise vom Ess-/Trink-Erhebungsbogen.
EssenTrinkenDatum char(40) Letztes Erhebungsdatum vom Ess-/Trink-Erhebungsbogen.
Anreise date Datum der Anreise.
Abreise date Datum der geplanten Abreise.
Diaetologiebetreuung char(5) Enthält das Zeichen "+", wenn der Patient von der Diätologie betreut wird, andernfalls ist das Attribut leer.
Geschlecht char(1) Wird aus Medbase gelesen und kann "M" oder "W" enthalten.
updated char(1) Dieses Attribut ist ein Hilfsattribut das beim Update der Patientendaten kurzfristig benötigt wird. Es wird vor dem Update bei allen Patienten auf "n" gestellt und bei jedem einzelnen Patienten im Zuge der Datenaktualisierung bei anwesenden Patienten auf "j" gestellt. Anschließend wird der Wert vom Attribut 'updated' auf 'aktuell' kopiert. Damit wird sicher gestellt, dass die Datenbank während des Updates für gleichzeitige Lesezugriffe konsistent erscheint.
pat_eid char(20) Patienten-ID aus ITR.
Gehen char(25) Mobilität des Patienten aus der Pflegeanamnese. Ist für die Plazzuteilung im Speisesaal von Relevanz.
Titel char(20) Titel des Patienten. Nur vorangestellte Titel, nachgestellte Titel werden ignoriert.
Zahnstatus char(80) Zahnstatus aus dem Essen-/Trinken-Erhebungsbogen.

Allgemeine Patientendaten.


Tabelle 'patientenmesswerte'

AttributDatentypBeschreibung
id int(11) Laufende Nummer.
Datum timestamp Datum und Uhrzeit der Messwerteingabe.
pat_eid int(11) Patienten-ID aus ITR. Ist Null, wenn eine Probeeingabe durch einen Mitarbeiter durchgeführt wurde.
User char(20) Bei Probeeingaben durch Mitarbeiter ist hier der Windows-Loginname hinterlegt, sonst ist das Feld Null.
Bezeichnung char(80) Bezeichnung der Messgröße.
Wert double Eingegebener Messwert.

Diese Tabelle hat eigentlich mit dem Küchenprogramm nichts zu tun, sondern dient für die selbstständige Eingabe von Patienten-Messwerten (z.B.: Blutdruck, Gewicht etc.). Derzeit noch im Testbetrieb.


Tabelle 'patientenvorbestellungen'

AttributDatentypBeschreibung
id int(11) Laufende Nummer.
Bestellzeit timestamp Zeitpunkt der Bestellung.
pat_eid char(20) Patienten-ID aus ITR von dem Patienten für den bestellt wurde.
Datum date Tag für den bestellt wurde.
Mahlzeit char(20) Mahlzeit für die bestellt wurde.
Menue int(11) Verweis in die Tabelle 'menues' auf das bestellte Menü .
Essensort char(30) Ort der Essenseinnahme im Klartext.
gedruckt int(11) Flag das anzeigt, ob die Bestellung schon von der Küche gedruckt wurde (=0..nicht gedruckt, =1..gedruckt).
User char(25) Windows-Loginname von dem Benutzer, der die Bestellung eingegeben hat.

Diese Tabelle enthält alle Vorbestellungen von selbständig wählenden Patienten. Im Gegensatz zu Patienten mit Diätologiebetreuung, können selbststängig wählende Patienten nur ganze Menüs auswählen. Das ist insbesondere dann von Vorteil, wenn ein Patient eine Bestellung ändern will. Bei einzeln gewählten Speisen würden Änderungen erheblich mehr Bedien- und Kontrollaufwand erfordern als bei der Änderung der Menünummer.






Tabelle 'rezeptarten'

AttributDatentypBeschreibung
id int(11) Laufende Nummer.
Rezeptartname char(35) Name der Rezeptart.

Liste der möglichen Rezeptarten.


Tabelle 'rezepte'

AttributDatentypBeschreibung
id int(11) Laufende Nummer.
Rezeptnummer char(12) Dieses Attribut wurd nicht verwendet.
Bezeichnung char(60) Name des Rezepts.
Rezeptart int(11) Verweis auf die ID in der Tabelle 'rezeptarten'.
Zubereitung longtext Beschreibung der Zubereitung im Klartext.
Anfertigungsplatz int(11) Verweis auf die 'id' der Tabelle 'anfertigungsplaetze'.
Portionspreis double Preis für eine Portion in Euro.
kalkulierter_Preis double Der Unterschied zum Portionspreis ist mir auch nicht klar. Beide Preise werden manuell eingegeben.
Losgroesse double Anzahl der Portionen für die das Rezept angelegt wurde.
Standardproduktionsrichtlinie char(15) Verweis auf einen Eintrag im Wort 'standardproduktionslinie'. Dort ist ein HTML-Text hinterlegt, der bei dem Rezept mit ausgedruckt wird.
BLS_Nummer char(10) Verweis auf die Spalte 'SBLS' in der Tabelle 'BLS' oder Null. Wenn der Verweis angegeben ist, können die Inhaltsstoffe direkt aus dem entsprechenden Eintrag gelesen werden. Andernfalls müssen sie durch Aufsummieren der Inhaltsstoffe der einzelnen Zutaten berechnet werden.
Portionsgewicht double Gewicht einer Portion in Gramm. Wird durch Aufsummieren der Zutaten berechnet.
geeignet_fuer_Phase char(10) Die geeigneten Phasen werden hier durch Nummern (1..4) ohne bestimmtes Trennzeichen angeführt. Wenn man ein Rezept für eine bestimmte Phase sucht, kann man die Nummer mit Wildchars anführen. Z.B. "select * from rezepte where geeignet_fuer_Phase like '%3%'".

Diese Tabelle enthält alle möglichen Rezepte. Die einzelnen Zutaten für die Rezepte sind über die Tabelle 'zutaten' mit der Tabelle 'artikel' verknüpft.


Tabelle 'servierstatus'

AttributDatentypBeschreibung
id int(11) Laufende Nummer.
pat_eid int(11) Patienten-ID aus ITR.
Datum timestamp Zeitpunkt des Eintrags.
Mahlzeit char(25) Servierte Mahlzeit ("Frühstück", "Mittagessen" etc.).
Auswahl char(5) Enthält "Di" bei Diätologiebetreuung, "F" bei Frühstück und ansonsten die Menünummer.
Gangfolge char(5) Normalerweise "VHN" für Vorspeise, Hauptspeise und Nachspeise. Wenn der Patient keine Suppe oder keine Nachspeise wüscht, fällt der entsprechende Buchstabe weg. Die Gangfolge wird aber auch entsprechend reduziert, wenn ein Gang serviert wurde. Es sind also immer die noch offenen Gänge enthalten.
VS_serviert int(11) Flag =1, wenn die Vorspeise serviert wurde.
HS_serviert int(11) Falg =1, wenn die Hauptspeise serviert wurde.
NS_serviert int(11) Flag =1, wenn die Nachspeise serviert wurde.
spontan int(11) Flag =1, wenn der Patient das Menü nicht vorbestellt, sondern spontan bei der Essenseinnahme gewählt hat.

Diese Tabelle dient dazu, den mommentanen Servierstatus im Speisesaal zu beschreiben und ermöglicht damit der Küche einen Überblick über die noch zu liefenden Speisen. Sie wird vom Programm 'tischplan.php' bedient und am Ende einer Mahlzeit komplett geleert. Die Lebenszeichenerfassung initialisert jeweils einen Eintrag, wenn ein Patient sein Armband scannt.


Tabelle 'sitze'

AttributDatentypBeschreibung
id int(11) Laufende Nummer.
Platznummer char(3) Großbuchstabe mit der Platzbezeichnung innerhalb des Tisches.
Tisch int(11) Verweis in die Tabelle 'tische' auf die 'id' vom Tisch.
Patient int(11) Verweis auf die 'id' in der Patiententabelle, wenn der Platz für einen Patienten reserviert ist, sonst Null.
xPosition int(11) Horizontalposition in Pixel gemessen vom linken Tischrand für die Anzeige im Tischplan.
yPosition int(11) Vertikalposition gemessen vom oberen Tischrand.

Jeder Eintrag dieser Tabelle beschreibt einen Sitzplatz im Speisesaal. Reservierte Sitze haben eine Patienten-ID eingetragen.


Tabelle 'spezialitaeten'

AttributDatentypBeschreibung
id int(11) Laufende Nummer.
Rezept_id int(11) Verweis auf die 'id' in der Tabelle 'rezepte'.
Datum date Tag, an dem die Spezialität angeboten wird.
Gang char(20) "Vorspeise", "Hauptspeise" oder "Nachspeise".

Hier kann der Küchenchef außertourliche Angebote für die Mitarbeiter ankündigen. Die Mitarbeiter sehen diese Angebote bei der Vorbestellung zusätzlich zu den normalen Menüs.


Tabelle 'standardeinkaeufe'

AttributDatentypBeschreibung
id int(11) Laufende Nummer.
Bezeichnung char(50) Name des Standardeinkaufs.
Lieferant int(11) Verweis auf die 'id' in der Tabelle 'firmenadressen'.
Einkaufsdaten blob MAL-Stackeintrag mit der Artikelliste des Standardeinkaufs.

Für regelmäßig in identer Form auftretende Lagerzugänge kann ein Standardeinkauf definiert und in dieser Tabelle gespeichert werden. Man braucht dann bei der Lieferung nicht die einzelnen Artikel anführen, sondern kann einfach den Standardeinkauf abarbeiten.


Tabelle 'tische'

AttributDatentypBeschreibung
id int(11) Laufende Nummer.
Tischnummer char(15) Kurzbezeichnung vom Tisch (derzeit nur eine fortlaufende Nummer).
Raum char(50) Name vom Raum, in dem der Tisch steht.
Servierkraft char(30) Derzeit nur ein einzelner Großbuchstabe als Bezeichnung der zuständigen Servierkraft.
Plaetze char(30) Folge von Großbuchstaben mit den vorhandenen Sitzplätzen.
xPosition int(11) Horizontalposition des Tisches am Tischplan gemessen in Pixel vom linken Bildrand.
yPosition int(11) Vertikalposition gemessen vom oberen Bildrand.
Breite int(11) Breite des Tisches im Tischplan.
Hoehe int(11) Höhe des Tisches im Tischplan.

Jeder Eintrag in dieser Tabelle beschreibt einen Tisch im Speisesaal.


Tabelle 'user'

AttributDatentypBeschreibung
id int(11) Laufende Nummer.
Username char(35) Windows-Loginname des Benutzers.
Rechte char(15) Buchstabenfolge mit den Rechten des Benutzers (case sensitiv).
Ablaufdatum date Letzter Tag, an dem der Account verwendet werden kann. Null wenn der Account nicht abläuft. Das war ursprünglich hauptsächlich bei Zivildienern von Relevanz. Nachdem das Offboarding über das Active-Directory gemacht wird, ist das von untergeordneter Bedeutung.

Tabelle der Benutzer, die spezielle Rechte im Küchenprogramm haben.


Tabelle 'veranstaltungen'

AttributDatentypBeschreibung
id int(11) Laufende Nummer.
Veranstaltung char(60) Name der Veranstaltung.
Teilnehmeranzahl int(11) Zahl der Essensteilnehmer.
Datum date Datum der Veranstaltung.
Kosten double Kosten in Euro.

Diese Tabelle dient ausschließlich der Berücksichtigung von Veranstaltungen bei der Monatsabrechnung. Die Daten müssen manuell vom Küchenleiter eingetragen werden.


Tabelle 'warenzugang'

AttributDatentypBeschreibung
id int(11) Laufende Nummer.
Datum date Datum des Warenzugangs.
Zeit time Zeit der Erfassung.
Lieferfirma int(11) Verweis auf die 'id' in der Tabelle 'firmenadressen'.
Artikel_id int(11) Verweis auf die 'id' in der Tabelle 'artikel'.
Bezeichnung char(80) Name des Artikels.
Einheit char(10) Einheit der Mengenangabe.
Preis double Einkaufspreis in Euro.
Packungsgroesse double Mengenangabe in oben angeführter Einheit.
Lagerstand double Lagerstand nach dem Einkauf.
Anzahl int(11) Widerholungsanzahl der Einlagerungen.
Rabatt double Eventuell vom Lieferanten gewährter Rabatt in Prozent vom Einkaufspreis.
Weiterleitung char(25) "ins_Lager", wenn der Artikel eingelagert wird oder "zum_Verbrauch", wenn er direkt in die Küche geht.
MWST double Mehrwertsteuer in Prozent.
LieferscheinNr char(25) Lieferscheinnummer.
RechnungsNr char(25) Rechnungsnummer.

Für jeden an die Küche gelieferten Artikel wird in dieser Tabelle ein Eintrag angelegt.


Tabelle 'warteschlange'

AttributDatentypBeschreibung
id int(11) Laufende Nummer.
User char(20) Windows-Loginname des Mitarbeiters.
Anzeigename char(40) Anzeigename des Mitarbeiters aus dem Active-Directory.
Datum timestamp Zeitpunkt zu dem die Mitarbeiterkarte gescannt wurde.
Mahlzeit char(20) Die Mahlzeit (und damit auch der Preis) wird aufgrund der Zeitgrenzen in 'kitchen_config' bestimmt.
Preis decimal(10,2) Preis der Mahlzeit. Wird aus 'kitchen_config' von der lokalen Installation am Barcode-Scanner-Tablet geholt.

Wenn ein Mitarbeiter seine Mitarbeiterkarte bei der Essensausgabe einscannt, wird in diese Tabelle ein Eintrag geschrieben, außer wenn zu der gleichen Mahlzeit schon ein Eintrag von dem Mitarbeiter vorhanden ist. Auf Basis dieser Tabelle wird auch die Monatsabrechnung für die Konsumation der Mitarbeiter gewonnen.


Tabelle 'zutaten'

AttributDatentypBeschreibung
id int(11) Laufende Nummer.
Rezeptnummer int(11) Verweis auf die 'id' in der Tabelle 'rezepte'.
Artikelnummer int(11) Verweis auf die 'id' in der Tabelle 'artikel'.
Menge double Menge der Zutat, die in dem Rezept benötigt wird.
Einheit char(15) Einheit der Menge.
Reihenfolge int(11) Reihenfolge für die Nennung der Zutaten beim Rezept.

Diese Tabelle beschreibt für jedes Rezept, welche Zutaten erforderlich sind. Sie stellt eine Verknüpfung der Tabellen 'rezepte' und 'artikel' her.

MAL-Homepage Inhaltsverzeichnis