diff --git a/Medicus/Externi/KdoJeLekar/NOTES.md b/Medicus/Externi/KdoJeLekar/NOTES.md new file mode 100644 index 0000000..e85bf39 --- /dev/null +++ b/Medicus/Externi/KdoJeLekar/NOTES.md @@ -0,0 +1,76 @@ +# KdoJeLekarApp – Registrující lékař z VZP B2B + +## Přehled + +Aplikace zobrazí registrujícího lékaře pacienta (praktický lékař, gynekolog, stomatolog a další) dotazem na VZP B2B API. Spouští se z Medicusu nad vybraným pacientem. + +## Soubory + +| Soubor | Popis | +|--------|-------| +| `KdoJeLekarApp.py` | Hlavní skript (customtkinter GUI) | +| `KdoJeLekarApp.spec` | PyInstaller konfigurace | +| `KdoJeLekarApp.ico` | Ikona EXE (konvertována z icons8-physician-60.png) | +| `dist/KdoJeLekarApp.exe` | Spustitelný EXE | + +## Konfigurace v Medicusu + +V menu **Konfigurace > Externí programy**: + +| Položka | Hodnota | +|---------|---------| +| **Program** | `U:\OrdinaceProjekt\Medicus\Externi\KdoJeLekar\dist\KdoJeLekarApp.exe` | +| **Příkazový řádek** | `"U:\OrdinaceProjekt\Medicus\Externi\KdoJeLekar\dist\KdoJeLekarApp.exe" %JMENO% %PRIJMENI% %RODCIS%` | +| **Pacient** | ✓ | +| **Menu** | Kdo je lékař | + +## VZP B2B API + +- **Endpoint:** `https://prod.b2b.vzp.cz/B2BProxy/HttpProxy/RegistracePojistencePZSB2B` +- **Certifikát:** `U:\OrdinaceProjekt\Insurance\Certificates\picka.pfx` / heslo viz `KdoJeLekarApp.py` +- **Knihovna:** `Knihovny/vzpb2b_client.py` → metody `registrace_lekare()` a `parse_registrace_lekare()` +- VZP B2B je **centrální endpoint pro všechny pojišťovny** — vrací pojištěnce VZP i ostatních pojišťoven (ČPZP, OZP atd.) na základě mezipojišťovnické dohody + +## Důležité technické detaily + +### Rodné číslo +Medicus předává RC **s lomítkem** (např. `730928/104`). Skript lomítko automaticky odstraní před odesláním do API: +```python +RODCIS = sys.argv[3].replace("/", "") +``` + +### Cesta k certifikátu +Cesta k PFX je **absolutní natvrdo** — PyInstaller při spuštění EXE mění `Path(__file__)` na temp adresář, relativní cesta by nefungovala: +```python +PFX_PATH = Path(r"U:\OrdinaceProjekt\Insurance\Certificates\picka.pfx") +``` + +### Argumenty z Medicusu +```python +JMENO = sys.argv[1] +PRIJMENI = sys.argv[2] +RODCIS = sys.argv[3].replace("/", "") +``` + +## Zobrazená data + +| Pole VZP | Zobrazeno jako | +|----------|---------------| +| `nazevSZZ` | Lékař | +| `nazevICP` | Pracoviště | +| `ICZ` + `ICP` | ICZ / ICP | +| `datumRegistrace` | Registrace | +| `datumZahajeni` | Platí od | +| `datumUkonceni` | Platí do (3000-01-01 = bez omezení) | +| `poj_zkratka` | Pojišťovna (zobrazena jednou v kartě pacienta) | + +## Error handling + +Jakákoliv výjimka zobrazí dialog a pošle email na `vladimir.buzalka@buzalka.cz` s traceback a údaji pacienta. Implementováno přes `Knihovny/EmailMessagingGraph.py`. + +## Rebuild EXE + +``` +cd U:\OrdinaceProjekt\Medicus\Externi\KdoJeLekar +pyinstaller KdoJeLekarApp.spec +``` diff --git a/Medicus/Externi/QRCode/NOTES.md b/Medicus/Externi/QRCode/NOTES.md index 38c5427..51fc2d4 100644 --- a/Medicus/Externi/QRCode/NOTES.md +++ b/Medicus/Externi/QRCode/NOTES.md @@ -2,87 +2,64 @@ ## 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). +Aplikace 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) +| Soubor | Popis | +|--------|-------| +| `QRPlatbaApp.py` | Hlavní skript (customtkinter GUI) | +| `QRPlatbaApp.spec` | PyInstaller konfigurace | +| `qrcode.ico` | Ikona EXE | +| `dist/QRPlatbaApp.exe` | Spustitelný EXE | +| `QRPlatby/` | Uložené QR kódy (PNG) | -## Technologie +## Konfigurace v Medicusu -- **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) +V menu **Konfigurace > Externí programy**: -## Jak to funguje +| Položka | Hodnota | +|---------|---------| +| **Program** | `U:\OrdinaceProjekt\Medicus\Externi\QRCode\dist\QRPlatbaApp.exe` | +| **Příkazový řádek** | `"U:\OrdinaceProjekt\Medicus\Externi\QRCode\dist\QRPlatbaApp.exe" %JMENO% %PRIJMENI% %RODCIS%` | +| **Pacient** | ✓ | +| **Menu** | QR Platba | -### 1. Spouštění z Medicusu +## Důležité technické detaily -Medicus předá údaje pacienta přes příkazový řádek do EXE: -``` -QRPlatbaApp.exe %JMENO% %PRIJMENI% %RODCIS% +### Rodné číslo +Medicus předává RC **s lomítkem** (např. `730928/104`). Skript lomítko automaticky odstraní — variabilní symbol ve SPAYD formátu musí být max 10 číslic: +```python +RODCIS = sys.argv[3].replace("/", "") ``` -### 2. Načtení ceníku +### Argumenty z Medicusu +```python +JMENO = sys.argv[1] +PRIJMENI = sys.argv[2] +RODCIS = sys.argv[3].replace("/", "") +``` -Skript se připojí na Medicus DB a načte ceník ze stored procedure `VLV_SEL`: +## Ceník + +Načítá se ze stored procedure Medicus DB: ```python cur.execute("SELECT V.KOD, V.NAZEV, V.CENA FROM VLV_SEL(NULL, NULL, NULL) V ORDER BY V.KOD") ``` -### 3. GUI okno +## SPAYD formát -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í - -```python -DB_DSN = r'localhost:c:\medicus 3\data\medicus.fdb' -DB_USER = 'SYSDBA' -DB_PASSWORD = 'masterkey' -DB_CHARSET = 'win1250' -``` +| Pole | Popis | +|------|-------| +| `ACC` | IBAN bankovního účtu | +| `AM` | Částka (Kč) | +| `CC` | Měna (CZK) | +| `X-VS` | Variabilní symbol = RC bez lomítka (max 10 číslic) | +| `MSG` | Jméno pacienta + položka | ## Bankovní účty @@ -93,49 +70,26 @@ ACCOUNTS = { } ``` -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: -```python -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 -└── ... +QR kódy PNG se ukládají do `U:\OrdinaceProjekt\Medicus\Externi\QRCode\QRPlatby\`. + +## Error handling + +Jakákoliv výjimka zobrazí dialog a pošle email na `vladimir.buzalka@buzalka.cz` s traceback a údaji pacienta. Implementováno přes `Knihovny/EmailMessagingGraph.py`. + +## Firebird DB připojení + +```python +DB_DSN = r'localhost:c:\medicus 3\data\medicus.fdb' +DB_USER = 'SYSDBA' +DB_PASSWORD = 'masterkey' +DB_CHARSET = 'win1250' ``` -## PyInstaller kompilace +## Rebuild EXE -EXE soubor byl zkompilován příkazem: -```bash -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: -```bash -cd U:\OrdinaceProjekt\Medicus\QRCode -C:\Python312\Scripts\pyinstaller.exe --onefile --windowed --icon=qrcode.ico --clean QRPlatbaApp.py +cd U:\OrdinaceProjekt\Medicus\Externi\QRCode +pyinstaller QRPlatbaApp.spec ```