Ein Medikamentenschrank, der es dank eines intelligenten Bestellsystems, den Nutzern ermöglicht, notwendige Medizinprodukte und Medikamente anhand eines QR-Code ein zu scannen.
Vor jedem Benutzen des Systems wird eine Authentifizierung des Anwenders verlangt. Wenn die Login Daten richtig sind entriegelt das System den Schrank, wenn nicht bleibt er verriegelt.
Nach dem erfolgreichen Scanvorgang kann der Bestellauftrag direkt an die Apotheke oder an eine Logistik-Einheit des Krankenhauses geschickt werden.
Dabei führt Putnik eine Datenbank darüber, welcher Bestand noch zur Verfügung steht und ob zu viele oder zu wenige Produkte vorhanden sind.
unten links: Touch-LCD-Screen,
unten rechts: Raspberry Pi 3,
oben rechts: Raspi-cam Kameramodul
oben links: Servomotor, um Schrank abschließen zu können.
Alles wird verbunden mittels Flachbandkabel bzw. Verbinderkabel.
Import von ,,tkinter“ Bibliothek erforderlich Python als Programmiersprache
#Die Buttons #Der Code des ersten Buttons der GUI mit der Funktion Auffüllen def callback1(): os.system("./scannen.sh") #ruft das bash-skript auf, das den scan ausfuehrt und das Ergebnis ins logfile schreibt #liest den Medikamenten namen aus dem logfile aus f = open("logfile")#öffnet die datei "logfile" medikament = f.read()#liest die datei "logfile" und speichert in variabler medikament medikament = medikament.strip()#entfernt zeilenumbrüche + leerzeichen #falls nichts gescannt wurde wird eine fehlermeldung ausgegeben if medikament == "Barcode konnte nicht gescannt werden, bitte versuchen Sie es erneut." : box.showwarning("Fehler","Barcode konnte nicht gescannt werden, bitte versuchen Sie es erneut.") else : #liest Medikamentenbestand aus dem File "bestand" aus filename = 'bestand' medi_bestand = {}#legt ein dictionary an with open(filename) as fh:#öffnet bestand und schließt es nach gebrauch wieder for line in fh: praeparat, bestand = line.strip().split(' ')#jede zeile in bestand enthält 2 parameter mit trennzeichen (split), medi_bestand[praeparat] = int(bestand.strip())#weist im dictionary jedem praeparat einen wert als int zu #Medikamente einfuellen medi_bestand[medikament]+=Slider.get()#erhöht die Anzahl des gescanneten Medikaments um den Wert des Sliders #speichere die aenderung in datei bestand ab with open('bestand','w') as file: # w = write for medikament in medi_bestand: file.write(medikament + " " + str(medi_bestand[medikament]) + "\n" )#schreibt den bestand wieder als string und fügt zeilenumbruch ein #zeigt den Erfolgsmeldung auf dem Bildschirm an box.showinfo('Auffüllen',"Erfolgreicher Scan!")
#!/bin/bash for ((versuche=0; versuche<10; versuche++)) do #schieße Foto scan=$( raspistill -o /home/pi/Projekt/scan.png --width 800 --height 800 --sharpness 100 --contrast 100 ) echo $scan #bearbeite das Foto, damit das Schwarz besser heraussticht convert /home/pi/Projekt/scan.png -black-threshold 20% /home/pi/Projekt/bearbeitet.png #Scanne Barcode qrcode=$(zbarimg -q /home/pi/Projekt/bearbeitet.png) #überprüfe ob scannen erfolgreich war, falls ja beende die schleife if [ $? -eq 0 ] then command=$(echo $qrcode | awk -F: '{print $2}') echo $command > /home/pi/Projekt/logfile break fi #falls nein geht es weiter bis genug versuche gemacht wurden if [ $versuche -eq 9 ] #nach dem letzten Versuch schreibt er eine Fehlermeldung ins logfile then echo "Barcode konnte nicht gescannt werden, bitte versuchen Sie es erneut." > /home/pi/Projekt/logfile fi done