Files
zyt/server/app/adminapi/controller/stats/RevisitAssignRateController.php
T
2026-10-17 16:08:24 +08:00

66 lines
2.1 KiB
PHP

<?php
declare(strict_types=1);
namespace app\adminapi\controller\stats;
use app\adminapi\controller\BaseAdminController;
use app\adminapi\logic\stats\RevisitCohortLogic;
/**
* 新指派复诊接诊率(按指派日期选患者,订单累计至查询时刻)
*
* - GET stats.revisitAssignRate/overview N 诊接诊率(部门 → 医助分组 + 合计)
* - GET stats.revisitAssignRate/deptOptions 部门下拉(前端组树)
* - GET stats.revisitAssignRate/assignLines 「被指派数」明细(按诊单聚合)
* - GET stats.revisitAssignRate/visitOrderLines 「N 诊单数」订单明细
*/
class RevisitAssignRateController extends BaseAdminController
{
protected const COHORT_TYPE = 'new';
public function overview()
{
// 涉及指派日志 + 全量订单序列扫描,放宽执行时间兜底
@set_time_limit(120);
$params = $this->request->get();
try {
return $this->data(RevisitCohortLogic::overview($params, static::COHORT_TYPE));
} catch (\InvalidArgumentException $e) {
return $this->fail($e->getMessage());
}
}
public function deptOptions()
{
return $this->data(RevisitCohortLogic::deptOptions());
}
/** 「被指派数」点击下钻:诊单维度明细 */
public function assignLines()
{
@set_time_limit(120);
$params = $this->request->get();
try {
return $this->data(RevisitCohortLogic::assignLines($params, static::COHORT_TYPE));
} catch (\InvalidArgumentException $e) {
return $this->fail($e->getMessage());
}
}
/** 「N 诊单数」点击下钻:具体订单明细 */
public function visitOrderLines()
{
@set_time_limit(120);
$params = $this->request->get();
try {
return $this->data(RevisitCohortLogic::visitOrderLines($params, static::COHORT_TYPE));
} catch (\InvalidArgumentException $e) {
return $this->fail($e->getMessage());
}
}
}