Files
medicus/MedicusWithClaudeFaktury/explore_ed_bookofsubmissions.py
T
administrator 4f586f4b57 Přidán list ED_PODANI + ED_PODANI_DATA do faktury_report.py; doplněny poznámky o eDávkách
- faktury_report.py: nový list ED_PODANI (ED_BOOKOFSUBMISSIONS) s přehledem podání pojišťovnám
- faktury_report.py: nový list ED_PODANI_DATA s dekódovaným obsahem dávek (KDAVKA, REQUEST XML, odpovědi pojišťoven)
- Opraveno kódování: KDAVKA=cp1250, REQUEST detekce BOM (utf-16/utf-8), SERVERRESPONSE/PROTOCOL=iso-8859-2
- Hyperlinky ED_PODANI ↔ ED_PODANI_DATA a Faktura → FAK
- FakturaceADavky.md: dokumentace ED_* tabulek, portálů pojišťoven, formátů REQUEST XML
- Průzkumné skripty: find_edavky_table, explore_hpn, explore_ed_bookofsubmissions, parse_trace_edavky aj.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-30 07:42:46 +02:00

62 lines
2.0 KiB
Python

# -*- coding: utf-8 -*-
import sys, io
sys.stdout = io.TextIOWrapper(sys.stdout.buffer, encoding='utf-8', errors='replace')
import fdb
conn = fdb.connect(
dsn=r'localhost:c:\medicus 3\data\medicus.fdb',
user='SYSDBA', password='masterkey', charset='win1250'
)
cur = conn.cursor()
for table in ['ED_BOOKOFSUBMISSIONS', 'ED_BOOKOFSUBMISSIONATTACH', 'ED_MAILBOXMESSAGE', 'ED_STORAGE']:
print(f"\n{'='*70}")
print(f"TABULKA: {table}")
print('='*70)
cur.execute(f"""
SELECT rf.RDB$FIELD_NAME
FROM RDB$RELATION_FIELDS rf
WHERE rf.RDB$RELATION_NAME = '{table}'
ORDER BY rf.RDB$FIELD_POSITION
""")
cols = [r[0].strip() for r in cur.fetchall()]
print(f"Sloupce: {cols}")
cur.execute(f"SELECT COUNT(*) FROM {table}")
print(f"Počet: {cur.fetchone()[0]}")
# BLOB sloupce vynech
cur.execute(f"""
SELECT rf.RDB$FIELD_NAME
FROM RDB$RELATION_FIELDS rf
JOIN RDB$FIELDS f ON f.RDB$FIELD_NAME = rf.RDB$FIELD_SOURCE
WHERE rf.RDB$RELATION_NAME = '{table}'
AND f.RDB$FIELD_TYPE = 261
""")
blob_cols = {r[0].strip() for r in cur.fetchall()}
safe = [c for c in cols if c not in blob_cols]
# Najdi razeni
order_col = next((c for c in ['CREATEDATE','SENTDATE','CREATED','ODESLANO','DATUM','ID'] if c in cols), cols[0])
try:
cur.execute(f"SELECT FIRST 10 {', '.join(safe)} FROM {table} ORDER BY {order_col} DESC")
rows = cur.fetchall()
print(f"\nPosledních 10 (ORDER BY {order_col} DESC):")
for row in rows:
print(f" {dict(zip(safe, row))}")
except Exception as e:
print(f"Chyba SELECT: {e}")
# Zkus bez order
try:
cur.execute(f"SELECT FIRST 5 {', '.join(safe)} FROM {table}")
rows = cur.fetchall()
for row in rows:
print(f" {dict(zip(safe, row))}")
except Exception as e2:
print(f"Chyba i bez ORDER: {e2}")
conn.close()
print("\nHotovo.")