namespace adas_core.Domain.Enums;

/// <summary>
/// Provides static utility members related to the Pump enumeration.
/// </summary>
/// <remarks>This class cannot be instantiated and serves as a container for helpers associated with the Pump enum.</remarks>
public static class PumpEnum
{
    public enum PumpMessageType
    {
        Unknown = 0,
        Observation = 1, // PCD-01 / PCD-10
        Alarm = 2        // PCD-04
    }
    
    public enum AlarmMode
    {
        Hight,
        Medium,
        Low,
        None
    }

    public enum AlarmType
    {
        // ALARMAS DE ESTADO/CONDICIÓN GENERAL
        AlarmCondition,

        // ALARMAS ESPECÍFICAS DE INFUSIÓN Y BOMBA
        Occlusion,
        DoorOpen,
        InfusionNearCompletion,
        VtbiComplete,
        NoPowerSource,
        SyringeSizeMismatch,


        // ALARMAS DE SISTEMA Y TÉCNICAS
        BatteryEmpty,
        PowerFailure,
        CommunicationFailure,
        PumpMalfunction,
        ProgramError,
        SensorError,
        PressureSensorError,
        TemperatureTooHigh,
        SelfTestFailed,

        //NEXUS ALARMS
        SystemError,
        CheckSyringePlunger,
        CheckSyringeClamp,
        SyringeInstallError,
        DownstreamOcclusion,
        DriveHeadPositionErr,
        HandOverFailed,
        KvoEnd,
        SyringeEmpty,
        VtbiDone,
        PressureFall,
        PressureRise,
        StandbyEnd,
        AcPowerFail,
        Attention,
        DrugMismatch,
        StepCompleted,
        NearEndOfInfusion,
        SyringeNearEmpty,
        AirInLine,
        BatteryLow,
        NoBattery,
        TitrationNotConfirmed,
        DropSensorDisconnect,
        NoFlow,
        TooFewDrops,
        TooManyDrops,
        UpstreamOcclusion,
        KvoAtSeEnd,
        InfusionSetNotCorrectlyFitted
    }

    public enum Event
    {
        Start,
        Stop,
        Complete,
        ProgramRelay,
        CommStatusChange,
        LimitOverrideSoftUpper,
        LimitOverrideSoftLower,
        LimitExceededSoftUpper,
        LimitExceededSoftLower,
        VolumeCountersCleared
    }

    public enum EventPhase
    {
        Start,
        Continue,
        End
    }

    public enum InfusingStatus
    {
        Infusing,
        NotInfusing,
        Unknown
    }

    public enum MedicationMode
    {
        DrugDosing,
        RampTaper,
        MultiStep,
        MultiDosing,
        LoadingDose,
        Continuous,
        Piggyback,
        Concurrent,
        ClinicianDose,
        Kvo,
        Flushing,
        PatientDose,
        Priming,
        Other
    }

    public enum Mode
    {
        Hold,
        Infusing,
        Primary,
        Secondary,
        KeepVeinOpen,
        EndOfInfusion,
        Titration,
        Bolus,
        Priming,
        Setup,
        Induction,
        BackOff,
        MultiDose,
        LoadingDose,
        Unknown,
        DrugDosing,
        RampTaper,
        MultiDosing,
        Continuous,
        Piggyback,
        Concurrent,
        ClinicianDose,
        Other,
        Flushing,
        PatientDose,
        MultiStep
    }

    public enum Status
    {
        Alarm,
        Warning,
        Caution,
        Hold,
        Infusing,
        Unknown,
        NotInfusing,
        Delivering,
        NotDelivering,
        Transitioning,
        Kvo,
        Priming
    }
}