- erp-dialysis: 新建 dialysis_stats_dto/handler/service,注册 /health/admin/statistics/dialysis 路由 - erp-health: 删除 get_dialysis_statistics 及 helper、DialysisStatisticsResp、 DialysisRecordNotFound/DialysisPrescriptionNotFound、validate_dialysis_status* 及 9 个测试、 DoctorDashboard.pending_dialysis_review、module 路由 - Web: HealthDataStats 移除 dialysis 字段,新增 getDialysisStats() 独立 API, useStatsData 并行 fetch,HealthDataCenter 接受独立 dialysisData prop - 小程序: DoctorDashboard 移除 pending_dialysis_review,医护工作台移除"待审透析"卡片
24 lines
833 B
Rust
24 lines
833 B
Rust
use axum::extract::{Extension, FromRef, State};
|
|
use axum::Json;
|
|
use erp_core::error::AppError;
|
|
use erp_core::rbac::require_permission;
|
|
use erp_core::types::{ApiResponse, TenantContext};
|
|
|
|
use crate::dto::dialysis_stats_dto::DialysisStatisticsResp;
|
|
use crate::service::dialysis_stats_service;
|
|
use crate::state::DialysisState;
|
|
|
|
pub async fn get_dialysis_stats<S>(
|
|
State(state): State<S>,
|
|
Extension(ctx): Extension<TenantContext>,
|
|
) -> Result<Json<ApiResponse<DialysisStatisticsResp>>, AppError>
|
|
where
|
|
DialysisState: FromRef<S>,
|
|
S: Clone + Send + Sync + 'static,
|
|
{
|
|
require_permission(&ctx, "health.dialysis.list")?;
|
|
let dialysis_state = DialysisState::from_ref(&state);
|
|
let stats = dialysis_stats_service::get_dialysis_statistics(&dialysis_state, ctx.tenant_id).await?;
|
|
Ok(Json(ApiResponse::ok(stats)))
|
|
}
|