#!/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()