Files
zyt/app/scripts/render_reception_medication_case.py
2026-08-14 14:37:30 +08:00

94 lines
3.4 KiB
Python

"""Render the structured reception medication/case card for visual review."""
from __future__ import annotations
import os
from pathlib import Path
os.environ.setdefault("QT_QPA_PLATFORM", "offscreen")
from PySide6.QtCore import QThreadPool
from PySide6.QtWidgets import QApplication
from doctor_workstation.services.mock_repository import DemoDoctorRepository
from doctor_workstation.ui.shell import ShellWindow
from doctor_workstation.ui.theme import apply_theme
def main() -> int:
app = QApplication.instance() or QApplication([])
apply_theme(app)
repository = DemoDoctorRepository()
session = repository.login("doctor", "doctor123")
window = ShellWindow(repository, session)
window.resize(1710, 920)
window.show()
if not window.navigate("reception"):
raise RuntimeError("reception navigation is unavailable")
for _index in range(4):
app.processEvents()
QThreadPool.globalInstance().waitForDone(10_000)
page = window.pages.get("reception")
if page is None:
raise RuntimeError("reception page was not created")
page.detail_stack.setCurrentIndex(1)
medication_index = next(
index
for index in range(page.detail_tabs.count())
if page.detail_tabs.tabText(index) == "用药记录"
)
page.detail_tabs.setCurrentIndex(medication_index)
page._render_case(
{"has_prescription": True},
{"age": 56, "gender": 1},
{
"diagnosis_date": "2026-08-14",
"diagnosis_type_text": "复诊",
"systolic": 148,
"diastolic": 92,
"blood_pressure_status": "偏高",
"fasting_blood_sugar": "6.8",
"fasting_blood_sugar_status": "偏高",
"clinical_diagnosis": "2 型糖尿病(血糖控制未达标),合并高血压与轻度脂肪肝",
"current_medications": [
"二甲双胍缓释片 0.5 g,早晚餐后各一次",
"格列吡嗪片 5 mg,早餐前一次",
],
"allergy_history_text": "青霉素过敏",
"chief_complaint": "口干口苦、多饮多汗,近期睡眠欠佳",
"present_illness": (
"近两周空腹血糖波动,伴头昏、腰膝酸软及夜间多尿;"
"未发生明确低血糖,服药依从性一般。"
),
"tongue": "舌红,苔黄腻",
"pulse": "脉弦滑",
"treatment_principle": "益气养阴、清热利湿,兼顾健脾化痰",
"diabetes_history_text": "10 年",
"past_history_text": "高血压 6 年、高脂血症 3 年",
"family_history_text": "父亲患 2 型糖尿病",
"sleep_condition_text": "多梦、入睡困难",
"diet_condition_text": "主食量偏多,晚餐较晚",
"remark": "重点核对降糖药剂量,复查肝肾功能,并关注夜间低血糖风险。",
},
)
for _index in range(6):
app.processEvents()
output = (
Path(__file__).resolve().parents[1]
/ "artifacts"
/ "reception_medication_case"
/ "reception_medication_case_1710x920.png"
)
output.parent.mkdir(parents=True, exist_ok=True)
if not window.grab().save(str(output), "PNG"):
raise RuntimeError(f"failed to save {output}")
print(output)
window.close()
return 0
if __name__ == "__main__":
raise SystemExit(main())