4.0 KiB
QRPlatbaApp – QR kód pro platby
Přehled
Aplikace QRPlatbaApp generuje QR kódy pro platby pacientů v ordinaci. Údaje o pacientovi jsou předávány z Medicusu, aplikace zobrazí okno s výběrem položky k úhradě a generuje QR kód ve formátu SPAYD (Czech Payment Standard).
Soubory
QRPlatbaApp.py— hlavní Python skript (customtkinter GUI)dist/QRPlatbaApp.exe— kompilovaný spustitelný soubor (bez CMD okna)
Technologie
- Python 3.x (nutný pouze pro vývoj, EXE běží bez Pythonu)
- customtkinter — moderní GUI
- qrcode — generování QR kódů
- pillow (PIL) — manipulace s obrázky
- fdb — připojení na Firebird DB (Medicus)
Jak to funguje
1. Spouštění z Medicusu
Medicus předá údaje pacienta přes příkazový řádek do EXE:
QRPlatbaApp.exe %JMENO% %PRIJMENI% %RODCIS%
2. Načtení ceníku
Skript se připojí na Medicus DB a načte ceník ze stored procedure VLV_SEL:
cur.execute("SELECT V.KOD, V.NAZEV, V.CENA FROM VLV_SEL(NULL, NULL, NULL) V ORDER BY V.KOD")
3. GUI okno
Zobrazí se okno s:
- Údaji pacienta (jméno, příjmení, rodné číslo)
- Výběrem položky k úhradě (dropdown)
- Výběrem bankovního účtu (2 možnosti: Fio 2100046291/2010 nebo 2800046620/2010)
- Tlačítko "Uložit QR kód"
- QR kód (200x200px, SPAYD formát)
4. SPAYD formát
QR kód obsahuje:
SPD*1.0*ACC:CZ7520100000002800046620*AM:500.00*CC:CZK*X-VS:7309281045*MSG:Buzalka%20Vladimír%20–%20Poplatek
ACC— IBAN bankovního účtuAM— částka (Kč)CC— měna (CZK)X-VS— variabilní symbol (rodné číslo pacienta)MSG— zpráva (jméno + položka)
5. Uložení QR
Po kliknutí na "Uložit QR kód" se PNG vygeneruje do adresáře:
U:\OrdinaceProjekt\Medicus\QRCode\QRPlatby\Buzalka_Vladimír_20260510_143025.png
Konfigurace v Medicusu
V menu Konfigurace > Externí programy přidej nový záznam:
| Položka | Hodnota |
|---|---|
| Kategorie | Ostatní |
| Typ programu | Externí program |
| Program | U:\OrdinaceProjekt\Medicus\QRCode\dist\QRPlatbaApp.exe |
| Příkazový řádek | "U:\OrdinaceProjekt\Medicus\QRCode\dist\QRPlatbaApp.exe" %JMENO% %PRIJMENI% %RODCIS% |
| Pacient | ✓ (vyžaduje vybraného pacienta) |
| Menu | QR Platba |
Firebird DB připojení
DB_DSN = r'localhost:c:\medicus 3\data\medicus.fdb'
DB_USER = 'SYSDBA'
DB_PASSWORD = 'masterkey'
DB_CHARSET = 'win1250'
Bankovní účty
ACCOUNTS = {
"2100046291/2010": "CZ1720100000002100046291",
"2800046620/2010": "CZ7520100000002800046620",
}
Oba účty jsou u Fio banky.
Spouštění bez CMD okna
EXE soubor se zkompiloval pomocí PyInstalleru s parametrem --windowed, což zajistí spuštění bez zobrazení CMD okna. GUI se zobrazí přímo bez blikání.
Příjmání argumentů
Python skript přijímá argumenty přesně z příkazového řádku:
if len(sys.argv) >= 4:
JMENO = sys.argv[1] # arg 1 z Medicusu (%JMENO%)
PRIJMENI = sys.argv[2] # arg 2 z Medicusu (%PRIJMENI%)
RODCIS = sys.argv[3] # arg 3 z Medicusu (%RODCIS%)
Ladění a opravy
Při chybách se informace vypíší v GUI (messagebox).
Pokud potřebuješ upravit zdrojový kód, edituj QRPlatbaApp.py a znovu zkompiluj EXE.
Výstup
Generované QR kódy PNG se ukládají do:
U:\OrdinaceProjekt\Medicus\QRCode\QRPlatby\
├── Buzalka_Vladimír_20260510_143025.png
├── Buzalka_Vladimír_20260510_144030.png
└── ...
PyInstaller kompilace
EXE soubor byl zkompilován příkazem:
pyinstaller --onefile --windowed --icon=qrcode.ico QRPlatbaApp.py
Výsledný EXE se nachází v dist/QRPlatbaApp.exe a je schopen běžet na počítačích bez Pythonu.
Při potřebě znovu kompilovat po změně kódu:
cd U:\OrdinaceProjekt\Medicus\QRCode
C:\Python312\Scripts\pyinstaller.exe --onefile --windowed --icon=qrcode.ico --clean QRPlatbaApp.py