Files
ordinaceprojekt/Medicus/Externi/QRCode/NOTES.md
T
Vladimir Buzalka 38568dc2ca notebookvb
2026-05-10 07:29:09 +02:00

4.0 KiB
Raw Blame History

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 účtu
  • AM — čá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