use erp_core::error::AppError; use thiserror::Error; #[derive(Debug, Error)] pub enum DialysisError { #[error("{0}")] Validation(String), #[error("患者不存在")] PatientNotFound, #[error("透析记录不存在")] DialysisRecordNotFound, #[error("透析方案不存在")] DialysisPrescriptionNotFound, #[error("状态转换无效: {0}")] InvalidStatusTransition(String), #[error("版本冲突: 数据已被其他操作修改,请刷新后重试")] VersionMismatch, #[error("数据库操作失败: {0}")] DbError(String), } impl From for AppError { fn from(err: DialysisError) -> Self { match err { DialysisError::Validation(s) => AppError::Validation(s), DialysisError::PatientNotFound | DialysisError::DialysisRecordNotFound | DialysisError::DialysisPrescriptionNotFound => AppError::NotFound(err.to_string()), DialysisError::InvalidStatusTransition(s) => AppError::Validation(s), DialysisError::VersionMismatch => AppError::VersionMismatch, DialysisError::DbError(_) => AppError::Internal(err.to_string()), } } } impl From for DialysisError { fn from(err: sea_orm::DbErr) -> Self { DialysisError::DbError(err.to_string()) } } impl From for DialysisError { fn from(err: AppError) -> Self { DialysisError::Validation(err.to_string()) } } impl From for DialysisError { fn from(err: String) -> Self { DialysisError::Validation(err) } } pub type DialysisResult = Result;