Files
hms/crates/erp-dialysis/src/entity/dialysis_record.rs
iven fa9278590d
Some checks failed
CI / rust-check (push) Has been cancelled
CI / rust-test (push) Has been cancelled
CI / frontend-build (push) Has been cancelled
CI / security-audit (push) Has been cancelled
refactor(dialysis): 透析模块拆分为独立 erp-dialysis crate
- 创建 erp-dialysis crate(DialysisState + DialysisError + DialysisModule)
- 迁移 2 Entity + 2 Service + 2 Handler + 2 DTO 共 8 个文件
- Entity 移除跨 crate patient Relation(FK 列保留)
- Service 内联 validation 逻辑,移除 patient 存在性检查(FK 约束保证)
- erp-health 的 stats/consultation 中 dialysis 查询改为 raw SQL
- ReviewLabReportReq 从 dialysis_dto 移至 health_data_dto(正确归属)
- workspace 全量编译通过
2026-04-28 12:37:23 +08:00

69 lines
2.7 KiB
Rust

use sea_orm::entity::prelude::*;
use serde::{Deserialize, Serialize};
#[derive(Clone, Debug, PartialEq, DeriveEntityModel, Serialize, Deserialize)]
#[sea_orm(table_name = "dialysis_record")]
pub struct Model {
#[sea_orm(primary_key, auto_increment = false)]
pub id: Uuid,
pub tenant_id: Uuid,
pub patient_id: Uuid,
pub dialysis_date: chrono::NaiveDate,
#[sea_orm(skip_serializing_if = "Option::is_none")]
pub start_time: Option<chrono::NaiveTime>,
#[sea_orm(skip_serializing_if = "Option::is_none")]
pub end_time: Option<chrono::NaiveTime>,
#[sea_orm(skip_serializing_if = "Option::is_none")]
pub dry_weight: Option<Decimal>,
#[sea_orm(skip_serializing_if = "Option::is_none")]
pub pre_weight: Option<Decimal>,
#[sea_orm(skip_serializing_if = "Option::is_none")]
pub post_weight: Option<Decimal>,
#[sea_orm(skip_serializing_if = "Option::is_none")]
pub pre_bp_systolic: Option<i32>,
#[sea_orm(skip_serializing_if = "Option::is_none")]
pub pre_bp_diastolic: Option<i32>,
#[sea_orm(skip_serializing_if = "Option::is_none")]
pub post_bp_systolic: Option<i32>,
#[sea_orm(skip_serializing_if = "Option::is_none")]
pub post_bp_diastolic: Option<i32>,
#[sea_orm(skip_serializing_if = "Option::is_none")]
pub pre_heart_rate: Option<i32>,
#[sea_orm(skip_serializing_if = "Option::is_none")]
pub post_heart_rate: Option<i32>,
#[sea_orm(skip_serializing_if = "Option::is_none")]
pub ultrafiltration_volume: Option<i32>,
#[sea_orm(skip_serializing_if = "Option::is_none")]
pub dialysis_duration: Option<i32>,
#[sea_orm(skip_serializing_if = "Option::is_none")]
pub blood_flow_rate: Option<i32>,
/// HD / HDF / HF
pub dialysis_type: String,
#[sea_orm(skip_serializing_if = "Option::is_none")]
pub symptoms: Option<serde_json::Value>,
#[sea_orm(skip_serializing_if = "Option::is_none")]
pub complication_notes: Option<String>,
/// draft / completed / reviewed
pub status: String,
#[sea_orm(skip_serializing_if = "Option::is_none")]
pub reviewed_by: Option<Uuid>,
#[sea_orm(skip_serializing_if = "Option::is_none")]
pub reviewed_at: Option<DateTimeUtc>,
pub created_at: DateTimeUtc,
pub updated_at: DateTimeUtc,
#[sea_orm(skip_serializing_if = "Option::is_none")]
pub created_by: Option<Uuid>,
#[sea_orm(skip_serializing_if = "Option::is_none")]
pub updated_by: Option<Uuid>,
#[sea_orm(skip_serializing_if = "Option::is_none")]
pub deleted_at: Option<DateTimeUtc>,
pub version: i32,
#[sea_orm(skip_serializing_if = "Option::is_none")]
pub key_version: Option<i32>,
}
#[derive(Copy, Clone, Debug, EnumIter, DeriveRelation)]
pub enum Relation {}
impl ActiveModelBehavior for ActiveModel {}