This commit is contained in:
Your Name
2026-10-30 13:41:35 +08:00
parent 28ba9b97f2
commit e2fc30e1f7
69 changed files with 8702 additions and 252 deletions
+58
View File
@@ -0,0 +1,58 @@
from __future__ import annotations
import os
import socket
from concurrent.futures import ThreadPoolExecutor
os.environ.setdefault("QT_QPA_PLATFORM", "offscreen")
import pytest
from PySide6.QtWidgets import QApplication, QDialog, QPlainTextEdit, QWidget
from doctor_workstation.core.transcript_text import simplified_transcript
from doctor_workstation.ui.dialogs.diagnosis import DiagnosisDialog
@pytest.mark.parametrize(
("source", "expected"),
[
("你會說老家話嗎?很會,很會。", "你会说老家话吗?很会,很会。"),
("沒有過敏,沒有吃藥。0.5 mg,不是 5 mg。", "没有过敏,没有吃药。0.5 mg,不是 5 mg。"),
("血壓 120/80 mmHg,血糖 2.00–30.00 mmol/L,HbA1c 6.5%。",
"血压 120/80 mmHg,血糖 2.00–30.00 mmol/L,HbA1c 6.5%。"),
("唔係,冇食藥,咩事?", "唔系,冇食药,咩事?"),
("患者:口乾。\n醫生:不?\n患者:不。", "患者:口干。\n医生:不?\n患者:不。"),
("简体,不! \n0.5 mg\tB12", "简体,不! \n0.5 mg\tB12"),
("", ""),
],
)
def test_script_conversion_is_offline_and_preserves_clinical_tokens(monkeypatch, source, expected):
def no_network(*args, **kwargs):
pytest.fail("Script conversion must use bundled dictionaries only")
monkeypatch.setattr(socket.socket, "connect", no_network)
# A fresh thread loads its own dictionaries, even when a prior test ran.
with ThreadPoolExecutor(max_workers=1) as pool:
assert pool.submit(simplified_transcript, source).result() == expected
assert simplified_transcript(expected) == expected
def test_historical_transcript_dialog_displays_simplified_without_changing_record(monkeypatch):
application = QApplication.instance() or QApplication([])
parent = QWidget()
record = {"transcript_text": "患者:你會說老家話嗎?\n患者:沒有吃藥,0.5 mg。"}
source = DiagnosisDialog._call_transcript_text(record)
displayed = []
def inspect(dialog):
displayed.append(dialog.findChild(QPlainTextEdit, "DiagnosisCallTranscriptText").toPlainText())
return 0
monkeypatch.setattr(QDialog, "exec", inspect)
try:
DiagnosisDialog._view_call_transcript(parent, 12, source)
assert displayed == ["患者:你会说老家话吗?\n患者:没有吃药,0.5 mg。"]
assert record["transcript_text"] == source
finally:
parent.close()
application.processEvents()