Skip to content

feat: estendere modello dati per tagging/categorizzazione progetti terapeutici #79

@artcava

Description

@artcava

🎯 Obiettivo

Aggiungere supporto per tagging e categorizzazione dei Progetti Terapeutici, permettendo classificazioni flessibili oltre allo stato clinico (Active/Suspended/Completed/Deceased).

📋 Contesto

Nel dominio reale potrebbero servire categorizzazioni aggiuntive per i progetti:

  • Tipologia intervento (es. "Riabilitazione Sociale", "Supporto Domiciliare", "Inserimento Lavorativo")
  • Area tematica (es. "Salute Mentale", "Dipendenze", "Disabilità")
  • Tag liberi per filtri/ricerche (es. "urgente", "famiglia coinvolta", "necessita supervisione")
  • Priorità clinica (Alta/Media/Bassa)

Queste informazioni facilitano:

  • filtri avanzati in PatientListView e Dashboard
  • reportistica per tipologia di intervento
  • assegnazione educatori con competenze specifiche.

📦 Estensioni Modello

1. Aggiungere campo InterventionType in TherapyProjectModel

public class TherapyProjectModel
{
    // ... campi esistenti ...
    
    /// <summary>
    /// Tipologia di intervento terapeutico (opzionale)
    /// </summary>
    public string? InterventionType { get; set; }
    
    /// <summary>
    /// Priorità clinica del progetto
    /// </summary>
    public ProjectPriority Priority { get; set; } = ProjectPriority.Medium;
}

public enum ProjectPriority
{
    Low,
    Medium,
    High,
    Critical
}

2. Introdurre entità ProjectTag per tagging flessibile

public class ProjectTag
{
    public Guid Id { get; set; }
    public Guid TherapyProjectId { get; set; }
    public TherapyProjectModel TherapyProject { get; set; } = null!;
    
    public string TagName { get; set; } = string.Empty;
    public string? TagCategory { get; set; } // es. "tema", "stato", "nota"
    
    public DateTime CreatedAt { get; set; }
    public string CreatedBy { get; set; } = string.Empty;
}

3. Relazione Many-to-Many in TherapyProjectModel

public ICollection<ProjectTag> Tags { get; set; } = new List<ProjectTag>();

📋 Tasks

✅ Acceptance Criteria

  • Modello dati esteso compila correttamente
  • Migration applicata senza errori
  • Possibile assegnare tag multipli a un progetto
  • Filtri in UI permettono di cercare progetti per InterventionType, Priority, Tag
  • Seeding include almeno 3-4 tipologie di intervento diverse
  • Documentazione aggiornata in docs/DATABASE.md con nuove entità

🔗 Riferimenti


CLUSTER: Domain & Data (gap 5.1)
FASE: 2A - Pazienti & Progetti
PRIORITÀ: 🔵 MEDIA
DIPENDENZE: #71, #72
OPZIONALE: Può essere implementata dopo il core se non richiesta dal dominio reale

Metadata

Metadata

Assignees

No one assigned

    Labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions