namespace adas_core.Domain.Models.Pumps;

/// <summary>
/// Serves as an abstract base class for representing common pump types.
/// Provides a shared foundation for derived classes that define specific pump categorizations.
/// </summary>
/// <!-- aidoc:v1 sig=ae2d216 -->
public abstract class CommonPumpTypes
{
    // Tipos auxiliares para valores con unidades (idénticos a PatientPumpObservation pero anidados aquí)

    /// <summary>
    /// Represents a value associated with a pump operation or measurement.
    /// </summary>
    /// <!-- aidoc:v1 sig=e6d5f09 -->
    public class PumpValue
    {
        public double? Value { get; set; }
        public string? Units { get; set; }
        /// <summary>
        /// Returns a string representation of the measurement, including its value and units.
        /// </summary>
        /// <returns>A formatted string containing the Value and Units of the measurement.</returns>
        /// <!-- aidoc:v1 sig=e168502 -->
        public override string ToString() => $"{{Value: {Value}, Units: {Units}}}";
    }

    /// <summary>
    /// Represents a container for detailed information about a syringe.
    /// </summary>
    /// <!-- aidoc:v1 sig=1b49f09 -->
    public class SyringeDetails
    {
        public string? Type { get; set; }
        public string? Manufacturer { get; set; }
        public PumpValue? Volume { get; set; }
    }
}