"""Render focused blue-white diagnosis subwindow acceptance references.""" from __future__ import annotations import os import sys from pathlib import Path os.environ.setdefault("QT_QPA_PLATFORM", "offscreen") ROOT = Path(__file__).resolve().parents[1] SRC = ROOT / "src" if str(SRC) not in sys.path: sys.path.insert(0, str(SRC)) from PySide6.QtGui import QFont, QFontDatabase # noqa: E402 from PySide6.QtWidgets import QApplication # noqa: E402 from render_diagnosis_detail_visual import ( # noqa: E402 ScreenshotRepository, _run_immediately, ) from render_diagnosis_order_video_visual import order_detail # noqa: E402 from doctor_workstation.core import PermissionSet # noqa: E402 from doctor_workstation.services import DemoDoctorRepository # noqa: E402 from doctor_workstation.ui.diagnosis_editors import DailyRecordEditorDialog # noqa: E402 from doctor_workstation.ui.dialogs import diagnosis as diagnosis_module # noqa: E402 from doctor_workstation.ui.dialogs import prescription_ai as ai_module # noqa: E402 from doctor_workstation.ui.dialogs.diagnosis import DiagnosisDialog # noqa: E402 from doctor_workstation.ui.dialogs.prescription_ai import ( # noqa: E402 DIAGNOSIS_AI_KIND, PrescriptionAiReportDialog, ) def _save(widget: object, path: Path, app: QApplication) -> None: widget.show() for _ in range(8): app.processEvents() if not widget.grab().save(str(path), "PNG"): raise RuntimeError(f"failed to save {path}") def main() -> int: output = ROOT / "artifacts" / "subwindow_exact" output.mkdir(parents=True, exist_ok=True) app = QApplication.instance() or QApplication([]) font_path = Path("C:/Windows/Fonts/msyh.ttc") if font_path.is_file(): font_id = QFontDatabase.addApplicationFont(str(font_path)) families = QFontDatabase.applicationFontFamilies(font_id) if families: app.setFont(QFont(families[0], 9)) diagnosis_module.run_async = _run_immediately ai_module.run_async = _run_immediately host = DiagnosisDialog(ScreenshotRepository(locked=False), permissions=PermissionSet(["*"])) host.resize(1280, 800) host.open_for(501, editable=True) _save(host, output / "diagnosis_edit_drawer_1280x800.png", app) order = host._build_order_detail_dialog(order_detail(), 801) _save(order, output / "diagnosis_order_detail_1280x800.png", app) order.close() host.close() app.processEvents() daily = DailyRecordEditorDialog( "blood", { "id": 6101, "diagnosis_id": 501, "patient_id": 1501, "record_date": "2026-08-10", "record_time": "08:20", "fasting_blood_sugar": 8.2, "postprandial_blood_sugar": 12.4, "systolic_pressure": 146, "diastolic_pressure": 92, "western_medicine": "二甲双胍", "remark": "继续观察餐后波动。", }, ) daily.setStyleSheet(diagnosis_module.DIAGNOSIS_QSS) daily.resize(680, 660) _save(daily, output / "diagnosis_daily_editor_680x660.png", app) daily.close() app.processEvents() ai_report = PrescriptionAiReportDialog( DemoDoctorRepository(), permissions=PermissionSet(["*"]), kind=DIAGNOSIS_AI_KIND, ) ai_report.open_for( { "id": 501, "diagnosis_id": 501, "patient_name": "林晓岚", "diagnosis_date": "2026-08-10", "diagnosis_type": "复诊", "syndrome_type": "气阴两虚", "chief_complaint": "口干乏力,餐后血糖波动", "present_illness": "近两周睡眠改善,仍需记录空腹与餐后血糖。", "clinical_diagnosis": "2 型糖尿病", "treatment_principle": "益气养阴,兼顾饮食与运动管理", "doctor_advice": "连续记录七日血糖并按时复诊", } ) ai_report.resize(920, 760) _save(ai_report, output / "diagnosis_ai_report_920x760.png", app) ai_report.close() app.processEvents() for path in sorted(output.glob("*.png")): print(path) return 0 if __name__ == "__main__": raise SystemExit(main())