// vita-collect.jsx — end-of-triage collection: documents + health plan (EPS) + pending items const EPS_LIST = ['Sura', 'Nueva EPS', 'Sanitas', 'Salud Total', 'Compensar', 'Famisanar', 'Coosalud', 'Otra']; const PREPAGADA_LIST = ['Colsanitas', 'Sura', 'MedPlus', 'Coomeva', 'Plan complementario', 'Ninguna']; const DOC_REQUESTS = [ { key: 'historia', label: 'Última historia clínica', hint: 'Tu resumen médico más reciente' }, { key: 'examenes', label: 'Exámenes recientes', hint: 'Laboratorios, imágenes, resultados' }, { key: 'visita', label: 'Última visita al médico', hint: 'Epicrisis, orden o recomendaciones' }, { key: 'formula', label: 'Fórmulas y medicamentos', hint: 'Lo que te recetaron' }, ]; const UPLOAD_METHODS = [ { m: 'PDF', icon: 'doc' }, { m: 'Foto', icon: 'camera' }, { m: 'Escanear', icon: 'scan' }, ]; const PENDING_TYPES = [ { tipo: 'cita', label: 'Cita médica', icon: 'calendar' }, { tipo: 'examen', label: 'Examen', icon: 'scan' }, { tipo: 'laboratorio', label: 'Laboratorio', icon: 'lab' }, { tipo: 'medicamento', label: 'Medicamento', icon: 'pill' }, ]; function CollectScreen({ t, persona, profile, onComplete }) { const accent = persona.accent; const [uploaded, setUploaded] = React.useState({}); // key -> method const [pickerFor, setPickerFor] = React.useState(null); const [eps, setEps] = React.useState(profile.eps || ''); const [prepagada, setPrepagada] = React.useState(profile.prepagada || ''); const [pendings, setPendings] = React.useState([]); const [addType, setAddType] = React.useState(null); const [addText, setAddText] = React.useState(''); const docs = Object.entries(uploaded).map(([k, m]) => { const d = DOC_REQUESTS.find(x => x.key === k); return (d ? d.label : k) + ' (' + m + ')'; }); const addPending = () => { if (!addText.trim()) return; const meta = PENDING_TYPES.find(p => p.tipo === addType); setPendings(ps => [...ps, { id: 'sg' + Date.now(), tipo: addType, titulo: addText.trim(), detalle: meta.label + ' por gestionar', estado: 'pendiente' }]); setAddText(''); setAddType(null); }; return (
{/* Vita intro */}
Ahora yo me encargo

Súbeme lo que tengas a la mano — PDF, foto o escaneado. Yo lo guardo, lo organizo y le hago seguimiento a cada cosa por vos.

{/* Documents */} Sube tus documentos
{DOC_REQUESTS.map(d => { const done = uploaded[d.key]; return ( ); })}
{/* Health plan */} Tu seguro de salud
EPS
Medicina prepagada o plan
{/* Pending items */}
¿Te dejaron pendientes?

Citas por pedir, exámenes, laboratorios o medicamentos. Yo me encargo de que se cumplan.

{PENDING_TYPES.map(p => ( ))}
{addType && (
setAddText(e.target.value)} onKeyDown={e => { if (e.key === 'Enter') addPending(); }} placeholder={'Ej. ' + (addType === 'cita' ? 'Control con cardiólogo' : addType === 'examen' ? 'Ecografía abdominal' : addType === 'laboratorio' ? 'Perfil lipídico' : 'Losartán 50mg')} style={{ flex: 1, padding: '12px 14px', borderRadius: 13, border: `1.5px solid ${t.stroke}`, background: t.dark ? 'rgba(255,255,255,0.05)' : '#fff', color: t.text, fontSize: 14.5, fontFamily: 'Hanken Grotesk, sans-serif', outline: 'none' }} />
)} {pendings.length > 0 && (
{pendings.map(p => { const meta = PENDING_TYPES.find(x => x.tipo === p.tipo); return (
{Icon[meta.icon]({ s: 17, c: accent })} {p.titulo}
); })}
)}
{/* upload method picker */} {pickerFor && (
setPickerFor(null)} style={{ position: 'absolute', inset: 0, zIndex: 30, background: 'rgba(3,10,24,0.55)', backdropFilter: 'blur(4px)', display: 'flex', alignItems: 'flex-end', animation: 'vitaFade .2s both' }}>
e.stopPropagation()} style={{ width: '100%', borderRadius: '24px 24px 0 0', background: t.dark ? t.bg1 : '#fff', border: `1px solid ${t.stroke}`, padding: '14px 20px 36px', animation: 'vitaSheet .3s cubic-bezier(.2,.8,.2,1) both' }}>
¿Cómo quieres subirlo?
{UPLOAD_METHODS.map(u => ( ))}
)} {/* CTA */}
onComplete({ docs, eps, prepagada, pendings })}> {Icon.sparkle({ s: 17, c: t.onAccent })} Generar mi análisis (ASIS)
); } function CollectTitle({ t, icon, accent, children }) { return (
{Icon[icon]({ s: 15, c: accent })} {children}
); } function ChipRow({ items, value, onPick, t, accent }) { return (
{items.map(it => { const on = value === it; return ( ); })}
); } Object.assign(window, { CollectScreen });