using adas_core.Domain.Enums;
using adas_core.Domain.Models.Observations;
using MongoDB.Bson;

namespace adas_core.Domain.Models.MongoModels;

/// <summary>
/// Represents a patient box (clinical display unit) that aggregates patient data,
/// observations, medications, and display configuration for a specific point of care.
/// </summary>
public class Box
{
    public Person? AttendingDoctor;
    public string? PointOfCare { get; set; }

    public string? Bed { get; set; }

    public bool IsActive { get; set; } = true;

    public bool IsVisible { get; set; } = true;

    public Dictionary<string, object>? Configuration { get; set; }

    public PatientLocation Location => new(PointOfCare, Bed);

    public bool HasPatient { get; set; }

    public ObjectId? Patientid { get; set; }

    public Patient? Patient { get; set; }

    public StatusEnum.Type Type { get; set; }

    public List<PatientObservation>? Observations { get; set; }

    public List<Medication>? Medication { get; set; }
}