first commit
This commit is contained in:
@@ -0,0 +1,121 @@
|
||||
"""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())
|
||||
Reference in New Issue
Block a user