notebookvb

This commit is contained in:
Vladimir Buzalka
2026-04-29 06:51:47 +02:00
parent a1b9c93506
commit a9c143ba24
141 changed files with 30711 additions and 0 deletions
@@ -0,0 +1,252 @@
# Fakturace a dávky poznámky pro Clauda
## Přehled tabulek
### FAK faktury pojišťovnám
- **844 záznamů** (k 2026-03-28)
- Primární klíč: `ID`
| Sloupec | Popis |
|---|---|
| `ID` | primární klíč |
| `CISFAK` | číslo faktury (10 znaků) |
| `POJ` | pojišťovna (3 znaky, např. 111=VZP, 205=ČPZP, 207=OZP) |
| `ICZ`, `ICZ1` | IČZ ordinace |
| `IDICZ` | FK → ICZ.IDICZ (jen jedna ordinace, neřešit) |
| `PORCISLO` | pořadové číslo |
| `DATUMOD`, `DATUMDO` | období faktury (oddo) |
| `DATVYS` | datum vystavení |
| `DATODE` | datum odeslání |
| `OBDOB` | období (5 znaků, např. "20260") |
| `VYKONY` | částka za výkony (Kč) |
| `KAPITACE` | kapitační platba (Kč) |
| `ZALOHA` | záloha |
| `CENA` | celková cena faktury (Kč) |
| `DRUH` | druh faktury (např. "konečná") |
| `TYP` | typ (1 znak) |
| `ROK` | rok |
| `SPLAT` | datum splatnosti |
| `PROPLACENO` | datum proplacení (NULL = nezaplaceno) |
| `ZAPLACENO` | zaplacená částka |
| `ZUM` | ? |
| `HOSPAUSAL` | hospitalizační/paušální? |
| `FDAVKA` | BLOB odkaz na dávku |
| `KAPDETAIL`, `AGRDETAIL` | BLOBy detaily kapitace/agregace |
| `NAZFAK`, `POZFAK`, `OBDFAK` | název, poznámka, období faktury (texty) |
| `ICO`, `BANKA`, `UCET` | IČO, banka, účet |
| `ODJMENO/ULICE/MISTO/PSC` | adresa odesílatele |
| `PLNAZEV/ULICE/MISTO/PSC` | adresa plátce (pojišťovny) |
| `DRUHPOJ` | druh pojištění |
---
### FAKDET finanční detail faktury
- **1021 záznamů**
- Vazba: `IDFAK` → FAK.ID
- Typicky 12 řádky na fakturu (breakdown podle lékaře/IDUZI)
| Sloupec | Popis |
|---|---|
| `ID` | primární klíč |
| `IDFAK` | FK → FAK.ID |
| `ICP` | IČP ordinace (např. 09305001) |
| `ODB` | odbornost (001 = praktický lékař) |
| `IDUZI` | FK → UZIVATEL.IDUZI který lékař |
| `CENAVYK` | výkony (Kč) |
| `CENALEC` | léky (Kč) |
| `CENAKAP` | kapitace (Kč) |
**Poznámka:** IDUZI=0 = systémový záznam (kapitace bez konkrétního lékaře).
---
### FAKDAV dávky zahrnuté ve faktuře
- **1296 záznamů**
- Vazba: `IDFAK` → FAK.ID
| Sloupec | Popis |
|---|---|
| `ID` | primární klíč |
| `IDFAK` | FK → FAK.ID |
| `CISDAV` | číslo dávky |
| `DRUH` | druh dávky |
| `CENA` | celková cena dávky |
| `CENAVYK` | výkony |
| `CENALEC` | léky |
| `CENAPAU` | paušál |
| `ODB` | odbornost |
| `ICP` | IČP |
---
### PORTAL elektronické podání pojišťovně
- **180 záznamů**
- Vazba: `IDFAK` → FAK.ID
| Sloupec | Popis |
|---|---|
| `ID` | primární klíč |
| `IDFAK` | FK → FAK.ID |
| `ODESLANO` | timestamp odeslání |
| `DATA`, `KDAVKA`, `FDAVKA` | BLOBy pravděpodobně XML dávky |
| `CHYBA` | příznak chyby (1 znak) |
| `STAV` | stav podání (smallint) |
| `ID_PODANI` | ID podání u pojišťovny (32 znaků, UUID) |
| `IDPODANI` | interní ID podání |
| `IDCERT` | certifikát použitý pro podání |
| `DAVKA_ROK`, `DAVKA_DISK`, `DAVKA_IDICZ` | metadata dávky |
| `BB_DAVKA`, `BB_FAKTURA` | ? |
| `DAVKA_DATUMOD`, `DAVKA_DATUMDO` | období dávky |
| `DAVKA_CASTKA` | částka dávky |
---
## Schéma vazeb
```
FAK (faktura)
├── FAKDET (IDFAK → FAK.ID) finanční breakdown podle lékaře
├── FAKDAV (IDFAK → FAK.ID) seznam dávek ve faktuře
├── PORTAL (IDFAK → FAK.ID) viz níže, IDFAK bývá NULL
└── ICZ (IDICZ → ICZ.IDICZ) ordinace (jen jedna, neřešit)
```
---
## UZIVATEL lékaři a uživatelé
| IDUZI | Příjmení | Jméno | Zkratka | Aktivní |
|---|---|---|---|---|
| 2 | Jourová | Jana | JOU | F (neaktivní) |
| 3 | Sestra | — | SES | F (neaktivní) |
| 4 | Buzalková | Michaela | MBU | T **lékařka, manželka** |
| 5 | Ševčíková | Ivana | ISE | T |
| 6 | Buzalka | Vladimír | VBU | T **uživatel (já)** |
---
## Ukázkové záznamy
### FAK ID=856 (poslední)
- Faktura č. 260026, pojišťovna **205 (ČPZP)**, prosinec 2025
- Vystavena: 2026-03-12, druh: konečná
- VYKONY: 2 528,99 Kč, KAPITACE: 0, CENA: **2 528,99 Kč**
- ZAPLACENO: NULL, PROPLACENO: NULL
FAKDET k FAK ID=856:
| ID | IDUZI | CENAVYK | CENALEC | CENAKAP |
|---|---|---|---|---|
| 1034 | 0 (systém) | 0 | 0 | 1 902,54 |
| 1035 | 4 (Buzalková) | 2 528,99 | 0 | 0 |
### FAK ID=855 (předposlední)
- Faktura č. 260026, pojišťovna **207 (OZP)**, prosinec 2025
- Vystavena: 2026-03-01, druh: konečná
- VYKONY: 85 Kč, KAPITACE: 0, CENA: **85 Kč**
- ZAPLACENO: NULL, PROPLACENO: NULL
FAKDET k FAK ID=855:
| ID | IDUZI | CENAVYK | CENALEC | CENAKAP |
|---|---|---|---|---|
| 1033 | 6 (Buzalka Vladimír) | 85 | 0 | 0 |
---
## PORTAL upřesnění (zjištěno 2026-03-28)
PORTAL **nesouvisí s fakturací**. Je to samostatná agenda evidence **registračních dávek** odeslaných pojišťovně.
### Co PORTAL skutečně je
- Medicus přes PORTAL odesílá pojišťovně dávky s přihlášením/odhlášením pacientů k lékaři (MUDr. Buzalková jako praktický lékař)
- Bez peněz čistě administrativní agenda registrací
- **IDFAK = NULL** u všech registračních podání (není vazba na fakturu)
### Klíčové sloupce
| Sloupec | Popis |
|---|---|
| `KDAVKA` | odeslaná dávka pevný formát (hlavička + řádky I = pacienti, RC, datum) |
| `DATA` | odpověď pojišťovny jako XML (`<statuscode>100</statuscode>` = OK) |
| `ID_PODANI` | ID přidělené pojišťovnou (např. `D01F260118593316.D01`) |
| `DAVKA_DISK` | číslo dávky v roce (sekvenční) |
| `DAVKA_ROK` | rok dávky |
| `DAVKA_DATUMOD/DO` | období registrací v dávce |
| `CHYBA` | F = bez chyby |
### Ukázka KDAVKA (hlavička dávky)
```
DP80093050000900202506 15 1 0 0.00180:6.2.46
H21109305001 179202506001
I 1Příjmení Jméno RC datum_registrace
I 2...
```
### Ukázka DATA (odpověď pojišťovny)
```xml
<ekomunikace timestamp="20260127 063105">
<session id="ff59b436-...">
<statusline>Přijetí registrací proběhlo úspěšně</statusline>
<statuscode>100</statuscode>
<idpodani>D01F260118593316.D01</idpodani>
</session>
</ekomunikace>
```
---
## PORTAL dva typy dávek
### Typ 1 Registrační dávka (DP80)
- KDAVKA začíná `DP80`
- **IDFAK = NULL** bez vazby na fakturu
- Bez peněz (`DAVKA_CASTKA` = NULL)
- Přihlašuje/odhlašuje pacienty k lékaři (MUDr. Buzalková)
- Řádky `I` = pacient (RC, datum registrace)
### Typ 2 Výkonová dávka (DP98)
- KDAVKA začíná `DP98`
- **IDFAK = ID faktury** napojeno na FAK
- Má peníze (`DAVKA_CASTKA`, např. 15 452,91 Kč)
- `STAV = 10` (registrační mají NULL)
- Obsahuje výkony vykázané pojišťovně za dané období
**Struktura výkonové dávky (KDAVKA):**
```
DP98... hlavička dávky (IČP, rok, měsíc, disk, počet případů, částka)
A ... ambulantní případ (RC pacienta, diagnóza)
V ... výkon (datum, kód výkonu, body)
Z ... ZULP (zvlášť účtovaný léčivý přípravek)
L ... lékový řádek (kód, množství, cena)
DP05... druhá část dávky (prevence / jiný typ)
P ... preventivní prohlídka
```
**Odpověď pojišťovny pro výkonovou dávku:**
```xml
<statusline>Přijetí faktury proběhlo úspěšně</statusline>
<statuscode>100</statuscode>
```
---
## Poznámky
- Faktury jsou vystavovány zvlášť pro každou pojišťovnu
- FAKDET má řádky zvlášť pro každého lékaře (IDUZI)
- IDUZI=0 v FAKDET = systémový záznam pro kapitaci
- Kapitace se v FAK.KAPITACE neukazuje (je 0), ale v FAKDET.CENAKAP ano nutno ověřit
- PORTAL = registrační dávky, nesouvisí s fakturací, IDFAK bývá NULL
## Kódování KDAVKA/FDAVKA důležité!
Dávkové soubory (KDAVKA, FDAVKA) jsou uloženy v **CP852** (DOS Latin-2, prahistorické kódování).
fdb je čte přes connection charset win1250 a vrací je jako Python `str` (špatně dekódované).
**Správný postup dekódování:**
```python
# fdb vrátil string dekódovaný jako win1250 musíme to zvrátit
raw_bytes = s.encode('cp1250', errors='replace')
spravny_text = raw_bytes.decode('cp852', errors='replace')
```
- **KDAVKA, FDAVKA** → cp852
- **DATA** (XML odpověď pojišťovny) → cp1250 (win1250), fdb dekóduje správně