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 Surgeries, IReadOnlyList Allergies, IReadOnlyList DietRestrictions, IReadOnlyList ChronicDiseases, string? FamilyHistory, DateTime UpdatedAt); public sealed record HealthArchiveUpdateRequest( string? Diagnosis, string? SurgeryType, DateOnly? SurgeryDate, IReadOnlyList? Allergies, IReadOnlyList? DietRestrictions, IReadOnlyList? ChronicDiseases, string? FamilyHistory, IReadOnlyList? Surgeries = null); public interface IHealthArchiveService { Task GetAsync(Guid userId, CancellationToken ct); Task UpdateAsync(Guid userId, HealthArchiveUpdateRequest request, CancellationToken ct); Task ExecuteAiActionAsync(Guid userId, string action, HealthArchiveUpdateRequest request, CancellationToken ct); } public interface IHealthArchiveRepository { Task GetByUserIdAsync(Guid userId, CancellationToken ct); Task AddAsync(HealthArchive archive, CancellationToken ct); Task SaveChangesAsync(CancellationToken ct); }