// vita-services2.jsx — Nutrición, Psicología, Diagnóstico // ════ 2. NUTRICIÓN ═════════════════════════════════════════════ const NUTRIOLOGOS = [ { nombre: 'Dra. Marcela Ruiz', esp: 'Nutrición clínica · Cardiometabólica', match: 'Experta en hipertensión y corazón', rating: 4.9, modalidad: 'Virtual y presencial', tag: 'Mejor para ti' }, { nombre: 'Dr. Andrés Patiño', esp: 'Nutrición deportiva', match: 'Enfocado en energía y hábitos', rating: 4.7, modalidad: 'Virtual', tag: null }, ]; function NutricionService({ t, persona, profile, asis, nutricion, loading, onGenerate, onBack, onSchedule }) { const accent = persona.accent; const [tab, setTab] = React.useState('plan'); // plan | nutriologo React.useEffect(() => { if (!nutricion && !loading) onGenerate(); }, []); return (
{[['plan', 'Mi plan'], ['nutriologo', 'Mi nutriólogo']].map(([k, l]) => ( ))}
{tab === 'plan' && ( (loading || !nutricion) ? (
Vita está armando tu plan
según tu historia clínica…
) : (
{Icon.food({ s: 18, c: accent })}Tu enfoque

{nutricion.enfoque}

Tus metas
{nutricion.objetivos.map((o, i) => (
{i + 1} {o}
))}
Un día de ejemplo
{nutricion.comidas.map((c, i) => (
{Icon.food({ s: 20, c: accent })}
{c.momento}
{c.idea}
{c.nota &&
{c.nota}
}
))}
Reduce poco a poco
{nutricion.evitar.map((e, i) => ( {e} ))}
) )} {tab === 'nutriologo' && (

De nuestra red, este es quien mejor se ajusta a tu historia clínica:

{NUTRIOLOGOS.map((n, i) => (
{n.nombre.split(' ')[1].charAt(0)}
{n.nombre}
{n.esp}
{Icon.star({ s: 13, c: '#E6A93C', fill: '#E6A93C' })}{n.rating}· {n.modalidad}
{n.tag && {n.tag}}
{Icon.sparkle({ s: 14, c: accent })}{n.match}
{i === 0 && }
))}
)}
); } // ════ 3. PSICOLOGÍA ════════════════════════════════════════════ const MOODS = [ { k: 5, label: 'Muy bien', color: '#3E8F5A', face: 'M8.5 14a4.5 4.5 0 0 0 7 0' }, { k: 4, label: 'Bien', color: '#73C58E', face: 'M9 14a4 4 0 0 0 6 0' }, { k: 3, label: 'Normal', color: '#E6A93C', face: 'M9 14.5h6' }, { k: 2, label: 'Bajón', color: '#E08A4F', face: 'M9 15a4 4 0 0 1 6 0' }, { k: 1, label: 'Mal', color: '#D9534F', face: 'M8.5 15.5a4.5 4.5 0 0 1 7 0' }, ]; const SINTOMAS_SEG = ['Dormí bien', 'Tuve ansiedad', 'Me sentí motivado', 'Tomé mi medicación', 'Hice ejercicio']; function PsicologiaService({ t, persona, onBack, onSchedule }) { const accent = persona.accent; const seed = [{ d: 'Lun', k: 3 }, { d: 'Mar', k: 2 }, { d: 'Mié', k: 4 }, { d: 'Jue', k: 3 }, { d: 'Vie', k: 4 }, { d: 'Sáb', k: 5 }]; const [log, setLog] = React.useState(seed); const [todayMood, setTodayMood] = React.useState(null); const [sintomas, setSintomas] = React.useState({}); const [saved, setSaved] = React.useState(false); const moodOf = (k) => MOODS.find(m => m.k === k); const guardar = () => { if (todayMood == null) return; setLog(l => [...l, { d: 'Hoy', k: todayMood }]); setSaved(true); }; return (
{/* treatment status */}
{Icon.brain({ s: 23, c: accent })}
En tratamiento con Dr. Suárez
Próxima sesión: jueves 4:00 p.m.
{/* mood check-in */} ¿Cómo te sientes hoy?
{MOODS.slice().reverse().map(m => ( ))}
{/* symptoms checklist */} {todayMood != null && (
Seguimiento de hoy
Lo que tu psicólogo pidió revisar
{SINTOMAS_SEG.map(s => { const on = sintomas[s]; return ( ); })}
{!saved ? ( ) : (
Listo, lo registré. Si veo varios días bajitos, le aviso a tu psicólogo. No estás solo. 💚
)}
)} {/* mood history */} Tu semana
{log.map((e, i) => { const m = moodOf(e.k); return (
{e.d}
); })}
); } // ════ 4. DIAGNÓSTICO ═══════════════════════════════════════════ const COMPLEMENTARIOS = [ { nombre: 'Perfil lipídico', motivo: 'Por tu hipertensión y riesgo cardiaco', tipo: 'laboratorio' }, { nombre: 'Glucosa en ayunas', motivo: 'Control metabólico', tipo: 'laboratorio' }, { nombre: 'Electrocardiograma', motivo: 'Antecedente familiar de infarto', tipo: 'examen' }, ]; const DROGUERIAS = [ { nombre: 'Cruz Verde · Laureles', dist: '450 m', dir: 'Cra 70 #C2-30', abierto: true, eps: true }, { nombre: 'Farmatodo · Av. Nutibara', dist: '1.2 km', dir: 'Cl 33 #74-10', abierto: true, eps: true }, { nombre: 'Droguería La Rebaja', dist: '1.8 km', dir: 'Cra 80 #45-12', abierto: false, eps: false }, ]; function DiagnosticoService({ t, persona, profile, onBack, onSchedule }) { const accent = persona.accent; const [tab, setTab] = React.useState('estudios'); // estudios | droguerias const [picked, setPicked] = React.useState({}); const [agendado, setAgendado] = React.useState(false); const nPicked = Object.values(picked).filter(Boolean).length; return (
{[['estudios', 'Estudios y labs'], ['droguerias', 'Droguerías']].map(([k, l]) => ( ))}
{tab === 'estudios' && (
Plan complementario sugerido
Vita los recomienda según tu historia. Tócalos para agendar.
{COMPLEMENTARIOS.map((c, i) => { const on = picked[c.nombre]; return ( ); })}
{nPicked > 0 && !agendado && ( )} {agendado && (
{Icon.check({ s: 20, c: t.green, w: 3 })}Listo. Gestioné {nPicked} {nPicked > 1 ? 'estudios' : 'estudio'} con {profile.eps || 'tu EPS'}. Te aviso fecha, hora y lugar.
)}
)} {tab === 'droguerias' && (
Dónde reclamar tus medicamentos
Aliadas y autorizadas por {profile.eps || 'tu EPS'}, cerca de ti.
{/* stylized map */}
{[[70, 100, true], [200, 40, true], [280, 110, false]].map(([x, y, on], i) => ( ))}
{Icon.pin({ s: 12, c: t.green, fill: t.green })} Tú estás aquí · Laureles
{DROGUERIAS.map((d, i) => (
{Icon.pin({ s: 20, c: d.eps ? accent : t.muted, fill: 'none' })}
{d.nombre}
{d.dir} · {d.dist}
{d.abierto ? 'Abierto' : 'Cerrado'} {d.eps && Cubre tu EPS}
))}
)}
); } function SecTitle({ t, children, style }) { return
{children}
; } Object.assign(window, { NutricionService, PsicologiaService, DiagnosticoService, SecTitle });