notebookVB

This commit is contained in:
2026-01-17 09:59:18 +01:00
parent 5e40bc4608
commit eb448ee9cf
18 changed files with 706 additions and 46 deletions

106
10 Tests/2026-01-16 3.py Normal file
View File

@@ -0,0 +1,106 @@
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
REPORT změna stavu pojištění
Výstup:
pacient XY, současný (dnešní) stav pojištění je "X",
ke změně došlo dne Y, kdy stav byl "Z"
Používá pouze tabulku vzp_stav_pojisteni
Kompatibilní s ONLY_FULL_GROUP_BY
"""
import pymysql
# ==========================================
# MYSQL CONFIG
# ==========================================
MYSQL_CONFIG = {
"host": "192.168.1.76",
"port": 3307,
"user": "root",
"password": "Vlado9674+",
"database": "medevio",
"charset": "utf8mb4",
"cursorclass": pymysql.cursors.DictCursor,
}
# ==========================================
# SQL REPORT
# ==========================================
SQL = """
SELECT
cur.rc,
cur.prijmeni,
cur.jmeno,
cur.stav AS current_stav,
chg.k_datu AS change_date,
chg.stav AS change_stav
FROM
-- aktuální (poslední) stav pacienta
(
SELECT p1.*
FROM vzp_stav_pojisteni p1
JOIN (
SELECT rc, MAX(k_datu) AS max_date
FROM vzp_stav_pojisteni
GROUP BY rc
) x
ON x.rc = p1.rc
AND x.max_date = p1.k_datu
WHERE p1.stav <> '1'
) cur
JOIN
-- první den změny po posledním stavu = '1'
(
SELECT p2.rc, p2.k_datu, p2.stav
FROM vzp_stav_pojisteni p2
JOIN (
SELECT rc, MIN(k_datu) AS change_date
FROM vzp_stav_pojisteni
WHERE stav <> '1'
AND k_datu > (
SELECT MAX(k_datu)
FROM vzp_stav_pojisteni t
WHERE t.rc = vzp_stav_pojisteni.rc
AND t.stav = '1'
)
GROUP BY rc
) y
ON y.rc = p2.rc
AND y.change_date = p2.k_datu
) chg
ON chg.rc = cur.rc
ORDER BY cur.prijmeni, cur.jmeno;
"""
# ==========================================
# MAIN
# ==========================================
def main():
mysql = pymysql.connect(**MYSQL_CONFIG)
with mysql.cursor() as cur:
cur.execute(SQL)
rows = cur.fetchall()
mysql.close()
print("\nREPORT ZMĚNA STAVU POJIŠTĚNÍ\n")
for r in rows:
jmeno = f"{r['prijmeni']} {r['jmeno']}".strip()
print(
f"pacient {jmeno}, "
f"současný (dnešní) stav pojištění je \"{r['current_stav']}\", "
f"ke změně došlo dne {r['change_date']}, "
f"kdy stav byl \"{r['change_stav']}\""
)
print("\nKONEC REPORTU.")
# ==========================================
if __name__ == "__main__":
main()