import { useState } from 'react'; import { Input } from '@/components/ui/input'; import { Label } from '@/components/ui/label'; import Badge from '@/components/shared/Badge'; import { Info, AlertTriangle } from 'lucide-react'; interface CollarSize { name: string; description: string; chinToSternumRange: { min: number; max: number }; ageRange?: string; color: string; } const collarSizes: CollarSize[] = [ { name: 'Pediátrico', description: 'Lactantes y niños pequeños', chinToSternumRange: { min: 0, max: 8 }, ageRange: '0-3 años', color: 'info', }, { name: 'Pequeño', description: 'Niños y adolescentes', chinToSternumRange: { min: 8, max: 12 }, ageRange: '4-12 años', color: 'info', }, { name: 'Mediano', description: 'Adultos de tamaño promedio', chinToSternumRange: { min: 12, max: 16 }, ageRange: 'Adultos', color: 'default', }, { name: 'Grande', description: 'Adultos de gran tamaño', chinToSternumRange: { min: 16, max: 25 }, ageRange: 'Adultos grandes', color: 'default', }, ]; const CervicalCollarSizeCalculator = () => { const [chinToSternum, setChinToSternum] = useState(''); const [height, setHeight] = useState(''); const [age, setAge] = useState(''); const distanceNum = parseFloat(chinToSternum) || 0; const heightNum = parseFloat(height) || 0; const ageNum = parseFloat(age) || 0; const isValid = distanceNum > 0 && distanceNum <= 30; // Determinar talla según distancia mentón-esternón const determineSize = (): CollarSize | null => { if (!isValid) return null; for (const size of collarSizes) { if ( distanceNum >= size.chinToSternumRange.min && distanceNum <= size.chinToSternumRange.max ) { return size; } } // Si está fuera de rango, devolver el más cercano if (distanceNum < 8) return collarSizes[0]; if (distanceNum > 16) return collarSizes[3]; return collarSizes[2]; // Mediano por defecto }; const recommendedSize = determineSize(); return (

📏 Calculadora de Talla de Collarín Cervical

{/* Información */}

Método de medición:

Mide la distancia desde el ángulo de la mandíbula (punto superior) hasta el hombro/trapecio (punto inferior).

Importante: El collarín debe quedar ajustado pero no comprimir la vía aérea.

{/* Distancia mentón-esternón */}
setChinToSternum(e.target.value)} className="w-full" min="0" max="30" step="0.1" />

Medir desde el ángulo de la mandíbula hasta el hombro/trapecio

{/* Altura (opcional, para validación) */}
setHeight(e.target.value)} className="w-full" min="0" max="250" step="0.1" />
{/* Edad (opcional, para validación) */}
setAge(e.target.value)} className="w-full" min="0" max="120" step="1" />
{/* Resultados */} {recommendedSize && (
{/* Resultado principal */}

Talla Recomendada

{recommendedSize.name}

{recommendedSize.description}
{/* Tabla de tallas */}

Rangos de Tallas:

{collarSizes.map((size) => (
{size.name} {size.ageRange && ( ({size.ageRange}) )}
{size.chinToSternumRange.min}-{size.chinToSternumRange.max} cm
))}
{/* Advertencias */} {distanceNum < 8 && (

⚠️ Distancia muy pequeña. Verificar medición y considerar collarín pediátrico.

)} {distanceNum > 20 && (

⚠️ Distancia muy grande. Verificar medición y considerar collarín extra grande si está disponible.

)} {/* Instrucciones importantes */}

⚠️ Verificaciones importantes:

  • El collarín debe quedar ajustado pero sin comprimir la vía aérea
  • Collarín demasiado grande → hiperextensión cervical
  • Collarín pequeño → flexión cervical
  • El collarín es parte de un sistema completo de inmovilización
  • Mantener control manual durante la colocación
)} {/* Mensaje cuando faltan datos */} {!isValid && chinToSternum && (

Por favor, ingresa una distancia válida (0-30 cm)

)}
); }; export default CervicalCollarSizeCalculator;