Files
medicus/MedicusWithClaude/test_import_3files.py
2026-03-18 07:13:47 +01:00

109 lines
4.3 KiB
Python
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
"""test_import_3files.py jednorázový test: 3 soubory jednoho pacienta → 1 dekurs s klikacími odkazy
Testuje opravenou RTF logiku (cs32, Přílohy: inline, poradi++)
Spustit na Windows.
"""
import datetime
import os
import fdb
import funkce
import funkce_ext
CESTA = r'u:\\'
IDPAC = 9742 # Buzalka Vladimír, RC 7309208104
SOUBORY = [
{
'souborname': '7309208104 2026-03-18 Buzalka, Vladimír [vyšetření] [ahoj Claude copy1].pdf',
'prvnizavorka': 'vyšetření',
'druhazavorka': 'ahoj Claude copy1',
'datum': datetime.date(2026, 3, 18),
},
{
'souborname': '7309208104 2026-03-18 Buzalka, Vladimír [vyšetření] [ahoj Claude copy2].pdf',
'prvnizavorka': 'vyšetření',
'druhazavorka': 'ahoj Claude copy2',
'datum': datetime.date(2026, 3, 18),
},
{
'souborname': '7309208104 2026-03-18 Buzalka, Vladimír [vyšetření] [ahoj Claude].pdf',
'prvnizavorka': 'vyšetření',
'druhazavorka': 'ahoj Claude',
'datum': datetime.date(2026, 3, 18),
},
]
# ── Připojení ─────────────────────────────────────────────────────────────────
conn = fdb.connect(
dsn=r'localhost:c:\medicus 3\data\medicus.fdb',
user='SYSDBA', password='masterkey', charset='WIN1250'
)
# ── Krok 1: vložit každý soubor do ext DB ─────────────────────────────────────
bookmark = ''
bookmarks = ''
cislo = 9
poradi = 0
for s in SOUBORY:
cesta_souboru = os.path.join(CESTA, s['souborname'])
datumsouboru = datetime.datetime.fromtimestamp(os.path.getmtime(cesta_souboru))
print(f"\n>>> Zpracovávám: {s['souborname']}")
fileid = funkce_ext.zapis_file_ext(
vstupconnection = conn,
idpac = IDPAC,
cesta = CESTA,
souborname = s['souborname'],
prvnizavorka = s['prvnizavorka'],
soubordate = s['datum'],
souborfiledate = datumsouboru,
poznamka = s['druhazavorka'],
)
print(f" → FILES.ID = {fileid}")
# {\info{\bookmarks ...}} sekce
filenameforbookmark = s['datum'].strftime('%Y-%m-%d') + ' ' + s['prvnizavorka'] + ': ' + s['druhazavorka']
bookmark += '"' + filenameforbookmark + '","Files:' + str(fileid) + '",' + str(cislo) + ';'
cislo += 7
# tělo RTF klikatelné záložky (cs32, všechny stejný formát)
bookmarks += (r'\pard\s10{\*\bkmkstart ' + str(poradi) + r'}'
r'\plain\cs32\f0\ul\fs20\cf1 ' + filenameforbookmark +
r'{\*\bkmkend ' + str(poradi) + r'}\par')
poradi += 1
bookmark = bookmark[:-1] # odstranit poslední ;
# ── Krok 2: sestavit RTF ──────────────────────────────────────────────────────
rtf = r"""{\rtf1\ansi\ansicpg1250\uc1\deff0\deflang1029{\info{\bookmarks BOOKMARKNAMES}}{\fonttbl{\f0\fnil\fcharset238 Arial;}{\f5\fnil\fcharset238 Symbol;}}
{\colortbl ;\red0\green0\blue255;\red0\green128\blue0;\red0\green0\blue0;}
{\stylesheet{\s10\fi0\li0\ql\ri0\sb0\sa0 Vlevo;}{\*\cs15\f0\fs20 Norm\'e1ln\'ed;}{\*\cs20\f0\i\fs20 Z\'e1hlav\'ed;}{\*\cs32\f0\ul\fs20\cf1 Odkaz;}}
\uc1\pard\s10\plain\cs20\f0\i\fs20 Vlo\'9een\'e9 p\'f8\'edlohy:\par
BOOKMARKSTEXT
\pard\s10\plain\cs15\f0\fs20 \par
}"""
rtf = rtf.replace('BOOKMARKNAMES', bookmark)
rtf = rtf.replace('BOOKMARKSTEXT', bookmarks)
print('\n=== Výsledný RTF ===')
print(rtf)
# ── Krok 3: zapsat dekurs ─────────────────────────────────────────────────────
dekursid = funkce.get_dekurs_id(conn)
datumzapisu = datetime.datetime.now().date()
caszapisu = datetime.datetime.now().time()
cur = conn.cursor()
cur.execute(
"INSERT INTO DEKURS (id, iduzi, idprac, idodd, idpac, datum, cas, dekurs)"
" VALUES (?,?,?,?,?,?,?,?)",
(dekursid, 6, 2, 2, IDPAC, datumzapisu, caszapisu, rtf)
)
conn.commit()
conn.close()
print(f'\n=== HOTOVO ===')
print(f'DEKURS.ID = {dekursid}')
print('Otevři Medicus → karta Buzalka Vladimír → najdi dnešní záznam → klikej na odkazy!')