82 lines
2.2 KiB
Markdown
82 lines
2.2 KiB
Markdown
# 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.
|