Files
zyt/server/tests/TcmMissingEvidenceLanguageR37Test.php
2026-10-27 14:03:35 +08:00

36 lines
2.2 KiB
PHP

<?php
declare(strict_types=1);
require dirname(__DIR__) . '/vendor/autoload.php';
use app\adminapi\service\TcmClinicalFactStateGuard as Guard;
$unknown = Guard::build(['id' => 1, 'diagnosis_date' => '2026-10-26', 'tongue' => '未记录']);
$known = Guard::build(['id' => 1, 'diagnosis_date' => '2026-10-26', 'tongue' => '舌淡,苔薄白。']);
$before = serialize([$unknown, $known]);
$cases = [
[$unknown, '本次尚缺可核验的舌象、本次症状病史;依赖这些资料的辨证只作待核实方向,其余记录仍可供相应任务分析。', true],
[$unknown, '当前没有可比较的血糖数值,不能计算趋势;可依据既往诊断记录建立同一时段的测量表,补充空腹或餐后身份及测量条件后再评价。', true],
[$unknown, '目前缺少可核验的舌象资料。', true],
[$unknown, '当前尚缺可比较的用药记录。', true],
[$known, '本次尚缺可核验的舌象。', false],
[$known, '当前没有可核验的舌象记录。', false],
[$unknown, '本次尚缺可核验的舌象,但本次舌红,苔黄腻。', false],
[$unknown, '本次尚缺可核验的舌象且舌红。', false],
[$unknown, '本次尚缺可核验的舌象;本次舌红。', false],
[$unknown, '本次尚缺可核验的舌象并且舌红。', false],
[$unknown, '当前没有可比较的血糖数值,但本次舌红。', false],
[$unknown, '本次尚缺可核验的舌红。', false],
[$unknown, '舌象正常。', false],
[$unknown, '本次无舌象异常。', false],
];
$results = [];
foreach ($cases as [$ledger, $text, $expected]) {
$result = Guard::validate($ledger, $text);
$results[] = ['text' => $text, 'expected' => $expected, 'actual' => $result['valid'], 'issues' => $result['issues'],
'passed' => $expected === $result['valid']];
}
$unchanged = serialize([$unknown, $known]) === $before;
echo json_encode(['passed' => count(array_filter($results, fn($r) => $r['passed'])), 'total' => count($results),
'ledgers_unchanged' => $unchanged, 'cases' => $results], JSON_UNESCAPED_UNICODE | JSON_PRETTY_PRINT) . "\n";
exit($unchanged && !array_filter($results, fn($r) => !$r['passed']) ? 0 : 1);