using Health.Domain.Enums;
using System.ComponentModel.DataAnnotations.Schema;
namespace Health.Domain.Entities;
///
/// 复查/随访计划
///
public sealed class FollowUp
{
public Guid Id { get; set; }
public Guid UserId { get; set; }
public string Title { get; set; } = string.Empty;
public string? DoctorName { get; set; }
public string? Department { get; set; }
public DateTime ScheduledAt { get; set; }
public string? Notes { get; set; }
public FollowUpStatus Status { get; set; }
public DateTime CreatedAt { get; set; } = DateTime.UtcNow;
public User User { get; set; } = null!;
}
///
/// 健康档案
///
public sealed class HealthArchive
{
public Guid Id { get; set; }
public Guid UserId { get; set; }
public string? Diagnosis { get; set; } // 主要诊断
public string? SurgeryType { get; set; } // 手术类型
public DateOnly? SurgeryDate { get; set; } // 手术日期
public List Allergies { get; set; } = []; // 过敏信息
public List DietRestrictions { get; set; } = []; // 饮食限制
public List ChronicDiseases { get; set; } = []; // 慢病史
public string? FamilyHistory { get; set; } // 家族病史
public DateTime UpdatedAt { get; set; } = DateTime.UtcNow;
public User User { get; set; } = null!;
public ICollection Surgeries { get; set; } = [];
}
public sealed class HealthArchiveSurgery
{
public Guid Id { get; set; }
public Guid HealthArchiveId { get; set; }
public string Type { get; set; } = string.Empty;
public DateOnly? Date { get; set; }
public int SortOrder { get; set; }
public HealthArchive HealthArchive { get; set; } = null!;
}
///
/// 刷新令牌
///
public sealed class RefreshToken
{
public Guid Id { get; set; }
public Guid UserId { get; set; }
public string Token { get; set; } = string.Empty;
public DateTime ExpiresAt { get; set; }
public bool IsRevoked { get; set; }
public DateTime CreatedAt { get; set; } = DateTime.UtcNow;
}
///
/// 短信验证码
///
public sealed class VerificationCode
{
public Guid Id { get; set; }
public string Phone { get; set; } = string.Empty;
public string Code { get; set; } = string.Empty;
public DateTime ExpiresAt { get; set; }
public bool IsUsed { get; set; }
public DateTime CreatedAt { get; set; } = DateTime.UtcNow;
}
///
/// 通知偏好
///
public sealed class NotificationPreference
{
public Guid Id { get; set; }
public Guid UserId { get; set; }
public bool MedicationReminder { get; set; } = true;
public bool FollowUpReminder { get; set; } = true;
public bool DoctorReply { get; set; } = true;
public bool AbnormalAlert { get; set; } = true;
// 健康录入提醒——总开关 + 5 子项
public bool HealthRecordReminder { get; set; } = true;
public bool HealthRecordReminderBloodPressure { get; set; } = true;
public bool HealthRecordReminderHeartRate { get; set; } = true;
public bool HealthRecordReminderGlucose { get; set; } = true;
public bool HealthRecordReminderSpO2 { get; set; } = true;
public bool HealthRecordReminderWeight { get; set; } = true;
public DateTime UpdatedAt { get; set; } = DateTime.UtcNow;
public User User { get; set; } = null!;
}
///
/// 设备推送 token
///
public sealed class DeviceToken
{
public Guid Id { get; set; }
public Guid UserId { get; set; }
public string Platform { get; set; } = string.Empty; // ios / android
public string PushToken { get; set; } = string.Empty;
public bool IsActive { get; set; } = true;
public DateTime CreatedAt { get; set; } = DateTime.UtcNow;
public DateTime UpdatedAt { get; set; } = DateTime.UtcNow;
public User User { get; set; } = null!;
}
public sealed class UserNotification
{
public Guid Id { get; set; }
public Guid UserId { get; set; }
public Guid SourceId { get; set; }
public string Type { get; set; } = string.Empty;
public string Title { get; set; } = string.Empty;
public string Message { get; set; } = string.Empty;
public string Severity { get; set; } = "info";
public string? ActionType { get; set; }
public string? ActionTargetId { get; set; }
public bool IsRead { get; set; }
public DateTime? ReadAt { get; set; }
public bool IsDeleted { get; set; }
public DateTime CreatedAt { get; set; } = DateTime.UtcNow;
}