// provider-quiz.jsx — Inline intake quiz for healthcare providers. // Submits to /provider-submit.php which emails the lead to elena@medicya.com. const PROVIDER_STEPS = [ { id: 'specialty', kind: 'choice', q: '¿Cuál es tu especialidad principal?', sub: 'Esto nos ayuda a curar las guías clínicas y los productos correctos para ti.', options: [ { v: 'endo', l: 'Endocrinología' }, { v: 'internal', l: 'Medicina interna' }, { v: 'longev', l: 'Medicina de longevidad / antiaging' }, { v: 'gyn', l: 'Ginecología' }, { v: 'urol', l: 'Urología / Andrología' }, { v: 'aesth', l: 'Medicina estética' }, { v: 'gp', l: 'Médico general' }, { v: 'other', l: 'Otra' }, ], }, { id: 'country', kind: 'choice', q: '¿En qué país practicas?', sub: 'Operamos hoy en estos países.', options: [ { v: 'mx', l: '🇲🇽 México' }, { v: 'co', l: '🇨🇴 Colombia' }, { v: 'do', l: '🇩🇴 República Dominicana' }, { v: 'ar', l: '🇦🇷 Argentina' }, { v: 'cl', l: '🇨🇱 Chile' }, { v: 'pe', l: '🇵🇪 Perú' }, { v: 'es', l: '🇪🇸 España' }, { v: 'us', l: '🇺🇸 EE.UU.' }, ], }, { id: 'city', kind: 'text', q: '¿En qué ciudad está tu consultorio?', sub: 'Conectamos pacientes con médicos cercanos.', placeholder: 'Ciudad', }, { id: 'experience', kind: 'choice', q: '¿Tienes experiencia prescribiendo péptidos, GLP-1 u hormonas?', sub: 'Cualquier nivel está bien. Ofrecemos capacitación continua.', options: [ { v: 'expert', l: 'Sí, soy especialista' }, { v: 'some', l: 'Sí, ocasionalmente' }, { v: 'curious', l: 'Aún no, pero me interesa aprender' }, ], }, { id: 'volume', kind: 'choice', q: '¿Cuántos pacientes atiendes al mes?', sub: 'Aproximado, no necesita ser exacto.', options: [ { v: 'lt30', l: 'Menos de 30' }, { v: '30-100', l: '30 a 100' }, { v: '100-300', l: '100 a 300' }, { v: 'gt300', l: 'Más de 300' }, ], }, { id: 'interest', kind: 'multi', q: '¿Qué te interesa más de aliarte con Medicya?', sub: 'Selecciona todas las que apliquen.', options: [ { v: 'patients', l: 'Pacientes calificados que ya buscan estos protocolos' }, { v: 'products', l: 'Productos de calidad farmacéutica trazables' }, { v: 'clinical', l: 'Soporte clínico y guías basadas en evidencia' }, { v: 'training', l: 'Capacitación en peptidoterapia y longevidad' }, { v: 'community', l: 'Comunidad de médicos especializados' }, { v: 'logistics', l: 'Logística y reposiciones automáticas' }, ], }, { id: 'name', kind: 'text', q: '¿Cuál es tu nombre completo?', sub: 'Como aparece en tu cédula o licencia profesional.', placeholder: 'Dr. / Dra. Nombre Apellidos', }, { id: 'license', kind: 'text', q: '¿Cuál es tu cédula o licencia profesional?', sub: 'Necesitamos validar tu credencial antes de conectarte con pacientes.', placeholder: 'Número de cédula / licencia', }, { id: 'email', kind: 'email', q: '¿A qué correo te contactamos?', sub: 'Te escribimos en menos de 48 horas para coordinar la siguiente etapa.', }, { id: 'phone', kind: 'phone', q: '¿Tu WhatsApp profesional?', sub: 'Para coordinación rápida de pacientes y reposiciones.', placeholder: 'Tu número con código de país', }, ]; const PROV_COUNTRY_CODES = { mx: '+52', co: '+57', do: '+1', ar: '+54', cl: '+56', pe: '+51', es: '+34', us: '+1', }; function ProviderQuiz() { const [step, setStep] = React.useState(0); const [answers, setAnswers] = React.useState({}); const [done, setDone] = React.useState(false); const [submitting, setSubmitting] = React.useState(false); const [hp, setHp] = React.useState(''); React.useEffect(() => { const cur = PROVIDER_STEPS[step]; if (cur?.kind === 'phone' && !answers.phone && answers.country) { const code = PROV_COUNTRY_CODES[answers.country]; if (code) setAnswers(prev => ({ ...prev, phone: code + ' ' })); } // eslint-disable-next-line react-hooks/exhaustive-deps }, [step]); const s = PROVIDER_STEPS[step]; const total = PROVIDER_STEPS.length; const pct = Math.round(((step + (done ? 1 : 0)) / total) * 100); const setAns = (v) => setAnswers({ ...answers, [s.id]: v }); const next = async () => { if (step < total - 1) { setStep(step + 1); return; } setSubmitting(true); try { await fetch('/provider-submit.php', { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify({ ...answers, website: hp }), }); } catch (e) { /* fail open */ } setSubmitting(false); setDone(true); }; const canNext = (() => { const v = answers[s?.id]; if (v === undefined) return false; if (s.kind === 'multi') return Array.isArray(v) && v.length > 0; if (['text', 'phone', 'email'].includes(s.kind)) return typeof v === 'string' && v.trim().length > 1; return true; })(); return (
Para médicos aliados
{!done && Paso {step + 1} de {total}}
{!done ? (

{s.q}

{s.sub}

{s.kind === 'choice' && (
{s.options.map(o => { const sel = answers[s.id] === o.v; return ( ); })}
)} {s.kind === 'multi' && (
{s.options.map(o => { const arr = answers[s.id] || []; const sel = arr.includes(o.v); return ( ); })}
)} {(s.kind === 'text' || s.kind === 'phone') && ( setAns(e.target.value)} style={{ width: '100%', padding: '18px 20px', borderRadius: 14, border: `1.5px solid ${M.rule}`, fontFamily: POPPINS, fontSize: 18, color: M.ink, outline: 'none', boxSizing: 'border-box', }} onFocus={e => e.currentTarget.style.borderColor = M.primary} onBlur={e => e.currentTarget.style.borderColor = M.rule}/> )} {s.kind === 'email' && (
setAns(e.target.value)} style={{ width: '100%', padding: '18px 20px', borderRadius: 14, border: `1.5px solid ${M.rule}`, fontFamily: POPPINS, fontSize: 18, color: M.ink, outline: 'none', boxSizing: 'border-box', }} onFocus={e => e.currentTarget.style.borderColor = M.primary} onBlur={e => e.currentTarget.style.borderColor = M.rule}/> setHp(e.target.value)} style={{ position: 'absolute', left: '-9999px', width: 1, height: 1, opacity: 0 }} aria-hidden="true"/>
{Icon.lock(M.primary)} Tu información se guarda cifrada y no se comparte con terceros.
)}
) : (
{React.cloneElement(Icon.check('#fff'), { width: 36, height: 36 })}

Gracias, {(answers.name || 'doctor/doctora').split(' ')[0]}.

Recibimos tu solicitud. Nuestro equipo de partnerships revisará tu información y te contactará en menos de 48 horas a{' '} {answers.email || 'tu correo'}{' '} para coordinar los siguientes pasos.

{[ 'Validamos tu cédula y verificamos credenciales', 'Coordinamos una llamada para alinear protocolos y suministro', 'Te damos acceso a la plataforma, guías clínicas y primeros pacientes', ].map((step, i) => (
{i + 1}
{step}
))}
Volver al sitio
)} {!done && (
{submitting ? 'Enviando…' : (step === total - 1 ? 'Enviar solicitud' : 'Continuar')} →
)}
); } Object.assign(window, { ProviderQuiz });