107 lines
2.6 KiB
Python
107 lines
2.6 KiB
Python
#!/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()
|