- 新增用户通知 outbox 流水线(EfUserNotificationPipeline)与后台投递 worker - 通知中心页面及前端通知服务接入 - 健康指标异常、用药/运动提醒等事件统一产出站内通知 - 健康档案结构化手术史、用药提醒扫描、医生/用户端点等配套调整 - AppDbContext 注册通知相关实体
51 lines
1.6 KiB
C#
51 lines
1.6 KiB
C#
using Health.Domain.Entities;
|
|
|
|
namespace Health.Application.HealthArchives;
|
|
|
|
public sealed record HealthArchiveSurgeryDto(
|
|
Guid Id,
|
|
string Type,
|
|
DateOnly? Date);
|
|
|
|
public sealed record HealthArchiveSurgeryInput(
|
|
string Type,
|
|
DateOnly? Date);
|
|
|
|
public sealed record HealthArchiveDto(
|
|
Guid Id,
|
|
Guid UserId,
|
|
string? Diagnosis,
|
|
string? SurgeryType,
|
|
DateOnly? SurgeryDate,
|
|
IReadOnlyList<HealthArchiveSurgeryDto> Surgeries,
|
|
IReadOnlyList<string> Allergies,
|
|
IReadOnlyList<string> DietRestrictions,
|
|
IReadOnlyList<string> ChronicDiseases,
|
|
string? FamilyHistory,
|
|
DateTime UpdatedAt);
|
|
|
|
public sealed record HealthArchiveUpdateRequest(
|
|
string? Diagnosis,
|
|
string? SurgeryType,
|
|
DateOnly? SurgeryDate,
|
|
IReadOnlyList<string>? Allergies,
|
|
IReadOnlyList<string>? DietRestrictions,
|
|
IReadOnlyList<string>? ChronicDiseases,
|
|
string? FamilyHistory,
|
|
IReadOnlyList<HealthArchiveSurgeryInput>? Surgeries = null);
|
|
|
|
public interface IHealthArchiveService
|
|
{
|
|
Task<HealthArchiveDto?> GetAsync(Guid userId, CancellationToken ct);
|
|
Task<HealthArchiveDto> GetOrCreateAsync(Guid userId, CancellationToken ct);
|
|
Task<HealthArchiveDto> UpdateAsync(Guid userId, HealthArchiveUpdateRequest request, CancellationToken ct);
|
|
Task<object> ExecuteAiActionAsync(Guid userId, string action, HealthArchiveUpdateRequest request, CancellationToken ct);
|
|
}
|
|
|
|
public interface IHealthArchiveRepository
|
|
{
|
|
Task<HealthArchive?> GetByUserIdAsync(Guid userId, CancellationToken ct);
|
|
Task AddAsync(HealthArchive archive, CancellationToken ct);
|
|
Task SaveChangesAsync(CancellationToken ct);
|
|
}
|