using System.ComponentModel;

namespace adas_core.Domain.Enums;

/// <summary>
/// Provides static members related to alarm enumeration values or alarm-related operations.
/// </summary>
/// <remarks>
/// This class is declared as static and cannot be instantiated; all members are accessed via the type name.
/// </remarks>
public static class AlarmEnum
{
    public enum AudioAlarmType
    {
        Continuous,
        Off,
        OnStart
    }

    public enum AudioVideoState
    {
        Paused,
        Off,
        Enabled,
        Disabled
    }

    public enum BeaconColor
    {
        Blue,
        Yellow,
        Red,
        None
    }

    public enum EventPhase
    {
        Tpoint,
        Start,
        Continue,
        End,
        Update,
        Escalate,
        Deescalate,
        Reset,
        Inactivation
    }

    public enum Name
    {
        [Description("CÓDIGO AZUL")] Blue,
        [Description("Hemofiltro")] Hemo,
        [Description("PEEP baja")] Peep,

        [Description("Límite superior de presión del respirador vía aerea")]
        Pico,
        [Description("Presión intracraneal")] Picm,

        [Description("Fuga Respirador")] VniLeak,

        [Description("Superación de Límites FR")]
        EventFr,

        [Description("Superación de Límites FC")]
        EventFc,

        [Description("Superación de Límites PAm")]
        EventPam,

        [Description("Superación de Límites ARTm")]
        EventArtm,

        [Description("Superación de Límites SpO2")]
        EventSpo2,

        [Description("Superación de Límites PEEP")]
        EventPeep,

        [Description("Límite FC Alto")] EventFcHi,
        [Description("Límite FR Alto")] EventFrHi,
        [Description("Límite SPO2 Alto")] EventSpo2Hi,
        [Description("Límite PaM Alto")] EventPamHi,
        [Description("Límite PICm Alto")] EventPicmHi,
        [Description("Límite PEEPt Alto")] EventPeeptHi,
        [Description("Límite MVexp Alto")] EventMvexpHi,
        [Description("Límite ARTm Alto")] EventArtmHi,


        [Description("Límite PEEP Bajo")] EventPeepLo,
        [Description("Límite FC Bajo")] EventFcLo,
        [Description("Límite FR Bajo")] EventFrLo,
        [Description("Límite SPO2 Bajo")] EventSpo2Lo,
        [Description("Límite PaM Bajo")] EventPamLo,
        [Description("Límite PICm Bajo")] EventPicmLo,
        [Description("Límite PEEPt Bajo")] EventPeeptLo,
        [Description("Límite VMExp Bajo")] EventVmexpLo,
        [Description("Límite ARTm Bajo")] EventArtmLo,

        [Description("Parada flujo de sangre Hemofiltro")]
        EventAlarmFlow,

        [Description("Evento extremo")] ExtremeEvent,

        [Description("Bradicardia extrema")] ExtremeBradi,
        [Description("Taquicardia extrema")] ExtremeTaqui,
        [Description("Desaturación extrema")] ExtremeDesat,

        [Description("Alerta de volumen minuto respirador")]
        VolMin,

        [Description("TAm alta extrema")] EvtExtrPamHi,
        [Description("TAm baja extrema")] EvtExtrPamLo,
        [Description("Límite VMExp Bajo")] EvtExtrVmexpLo,

        [Description("Apnea")] Apnea,
        [Description("Respiratorio")] Respiration,

        //separar en varias
        [Description("Alerta bomba")] Pump,

        //Tipo para hacer pruebas
        [Description("Alerta Test")] Test,

        [Description("NEWS RED")] NewsAlert,

        [Description("NEWS YELLOW")] NewsWarning,

        [Description("NEWS OFF")] NewsOff
    }

    public enum ObservationAlarmCode
    {
        AdvisoryAlert,
        SoftInop
    }

    public enum ObservationAlarmPriority
    {
        Ph,
        Pm,
        Pl
    }

    public enum ObservationAlarmState
    {
        Inactive,
        Active,
        Latched
    }

    public enum ObservationAlarmType
    {
        Sp,
        St,
        Sa
    }

    public enum Severity
    {
        None,
        Blue,
        Red,
        Yellow
    }

    public enum Type
    {
        Manual,
        Auto
    }
}