# MedicusWithClaudeSelects – SQL dotazy ## Registrovaní pacienti Přesný select který Medicus používá pro záložku **Registrovaní** (zachycen přes FBScanner, dotaz č. 143). ### Počet registrovaných pacientů ```sql SELECT COUNT(*) FROM KAR WHERE (vyrazen = 'N') AND EXISTS ( SELECT id FROM registr r JOIN icp i ON r.idicp = i.idicp WHERE r.idpac = kar.idpac AND (r.datum <= '2026-03-20') AND (r.datum_zruseni IS NULL OR r.datum_zruseni >= '2026-03-20') AND (r.priznak IN ('V','D','A')) AND (i.icp = '09305001') AND (i.odb = '001') ) ``` Vrátí: **1618 pacientů** (ověřit na Windows). ### Podmínky registrace – vysvětlení - `vyrazen = 'N'` – pacient není vyřazen z kartotéky - `r.datum <= dnes` – registrace již začala - `r.datum_zruseni IS NULL OR r.datum_zruseni >= dnes` – registrace dosud platí - `r.priznak IN ('V','D','A')` – aktivní příznak (ne 'Z' = zrušen, ne 'N') - `i.icp = '09305001'` – IČP naší ordinace - `i.odb = '001'` – odbornost praktický lékař ### Skript pro Python Viz `count_registrovani.py` v této složce – spustit na Windows. ### Plný select Medicusu (seznam pacientů s metadaty) ```sql SELECT KAR.DATNAR, KAR.IDPAC, KAR.INFORMACE, KAR.INFORMACE_COL, KAR.JMENO, KAR.POHLAVI, GPP.POJ, KAR.POZNAMKA, KAR.PRIJMENI, KAR.PRIJMENI_UP, (SELECT DATUM_REGISTRACE FROM SP_GETREGDAT(kar.IDPAC)) AS REGDATUM, KAR.REGISTROVAL, (SELECT PRIZNAK FROM SP_GETREGDAT(kar.IDPAC)) AS REGPRIZNAK, KAR.RODCIS, KAR.ROZENA, KAR.TITUL, KAR.TITULZA, KAR.TRVOBEC, KAR.TRVPSC, KAR.TRVULICE, KAR.VYRAZEN FROM KAR LEFT JOIN GETPACPOJ(KAR.IDPAC, '2026-03-20') GPP ON GPP.IDPAC = KAR.IDPAC WHERE (vyrazen = 'N') AND EXISTS ( SELECT id FROM registr r JOIN icp i ON r.idicp = i.idicp WHERE r.idpac = kar.idpac AND (r.datum <= '2026-03-20') AND (r.datum_zruseni IS NULL OR r.datum_zruseni >= '2026-03-20') AND (r.priznak IN ('V','D','A')) AND (i.icp = '09305001') AND (i.odb = '001') ) ORDER BY KAR.PRIJMENI_UP ASC, KAR.RODCIS ASC ``` Poznámka: `GETPACPOJ` a `SP_GETREGDAT` jsou uložené procedury Medicusu – fungují v kontextu Firebird připojení přes SYSDBA/masterkey.