El flujo existe y funciona: el correo llega, la página abre, la firma se guarda con IP y user-agent, Puppeteer genera el PDF y el doctor lo recibe adjunto. Lo que falla no es la tubería — es que nada del recorrido se siente como firmar un contrato. El documento se lee por una ranura, el momento de la firma es un canvas gris con borde punteado, y el texto legal esquiva la pregunta que todo doctor se hace: ¿cuánto me cuesta estar aquí?
CONTRATO DE PRESTACIÓN DE SERVICIOS MÉDICOS
Entre AMEDI, plataforma tecnológica que conecta pacientes con profesionales de la salud, y el Doctor identificado en este documento, se celebra el presente contrato… 1. OBJETO DEL CONTRATO. El presente contrato tiene por objeto… 2. OBLIGACIONES DEL DOCTOR. El doctor se compromete a mantener su licencia vigente, proporcionar información veraz, cumplir puntualmente…
Reconstrucción de contract-signature-page.tsx: el contrato completo vive en un
<iframe sandbox> de 350–500 px de alto con su propio scroll — ocho cláusulas
leídas por una ranura — y debajo el canvas de react-signature-canvas con trazo negro.
El checkbox y el botón quedan fuera de la vista del texto que se está aceptando.
Un PDF con marca, un texto con huecos
- El PDF ya viste la banda noche y las dos cajas de firma gemelas — la primera pasada de comunicaciones.
- Pero la comisión dice "será comunicada por separado" — el término económico central no está en el contrato.
- Sin jurisdicción ni ley aplicable; sin razón social ni RIF de Amedi.
- Versión 1.0 hardcodeada; el texto firmado no se persiste — solo el PDF en S3 es evidencia.
Una tubería sin ceremonia
- La página no distingue leer de firmar: todo compite en una sola columna.
- El canvas es la parte menos diseñada de la pantalla — y es el momento que da nombre al flujo.
- La vista post-firma es un header verde genérico con un grid de datos.
- A /doctor/contract solo se llega por el correo o la notificación — ninguna navegación lo enlaza.
El contrato deja de ser un bloque de texto con membrete y se convierte en un documento con estructura editorial: una portada sobre noche que resume los términos en lenguaje claro, un cuerpo notarial sobre papel — hairlines, números en petroleo, cero decoración — y una página de firmas que vuelve a la noche, porque los tokens de la marca la reservan justo para eso: hero, slides, firma. El documento respira como la marca: abre oscuro, argumenta en claro, sella oscuro.
Contrato entre Amedi y el profesional de la salud
[Razón social] · RIF J-________, en adelante Amedi, y Dr. Carlos Rodriguez, titular de la licencia CMC 48.210, Medicina General, en adelante el Profesional.
Los fijas tú. Amedi los publica sin recargos ocultos.
X% por transacción — detallada en el Anexo A, parte del contrato.
Pertenece al paciente. Tú la custodias mientras lo atiendes.
Vigencia indefinida. Terminas cuando quieras con 30 días de aviso.
La portada hace el trabajo que hoy no hace nadie: resumir los términos en lenguaje claro antes del legalese. Las dos ranuras ámbar — razón social y porcentaje de comisión — son los huecos legales señalados a propósito: la plantilla los deja visibles hasta que exista la definición, en vez de esconderlos en un "será comunicado por separado".
Dr. Carlos Rodriguez · CMC 48.210
Objeto del contrato
Amedi es una plataforma tecnológica que conecta pacientes con profesionales de la salud: gestión de agenda, citas, telemedicina e historia clínica digital. Este contrato regula el uso de la plataforma por el Profesional — no crea relación laboral entre las partes.
Obligaciones del Profesional
- Mantener vigente su licencia y credenciales de ejercicio.
- Proporcionar información veraz en su perfil y mantenerla al día.
- Cumplir puntualmente las citas agendadas y mantener sus horarios actualizados.
- Guardar la confidencialidad de los datos de sus pacientes.
- Ejercer conforme a la ética médica y responder oportunamente a sus pacientes.
Obligaciones de Amedi
- Mantener la plataforma disponible y sus datos protegidos.
- Publicar los honorarios que el Profesional fije, sin recargos ocultos.
- Procesar los pagos y liquidarlos según el Anexo A.
- Dar soporte al Profesional en el uso de la plataforma.
Dr. Carlos Rodriguez · CMC 48.210
Términos económicos
El Profesional fija libremente sus honorarios por consulta. Amedi retiene por cada transacción la comisión establecida en el Anexo A, que forma parte integral de este contrato. Cualquier cambio del Anexo A requiere nueva aceptación del Profesional.
Confidencialidad y protección de datos
La historia clínica pertenece al paciente. El Profesional accede a ella solo con ocasión de la atención, y Amedi la resguarda cifrada.
Vigencia y terminación
Vigencia indefinida desde la firma. Cualquiera de las partes puede terminarlo con 30 días de aviso previo, sin penalidad.
Ley aplicable y controversias
Este contrato se rige por las leyes de [jurisdicción] y las controversias se someten a [tribunales / arbitraje].
Aceptación
El Profesional declara haber leído el contrato completo, incluido el Anexo A, y lo acepta de manera libre e informada mediante firma digital.
Las ocho cláusulas actuales sobreviven — ninguna se pierde — pero ganan jerarquía: número en petroleo, título en Parkinsans, cuerpo Inter a 10.5 px con aire notarial. La §4 deja de esquivar: la comisión ya no "se comunica por separado" — vive en el Anexo A y cambiarla exige re-firma. La §7 es nueva: hoy el contrato no nombra ley aplicable, y la ranura ámbar lo deja dicho.
Parte integral del contrato
Comisión por transacción
Sobre cada consulta cobrada a través de la plataforma, Amedi retiene la comisión siguiente. El resto se liquida al Profesional según el calendario de pagos vigente.
| Tipo de consulta | Honorario | Comisión Amedi | Recibe el Profesional |
|---|---|---|---|
| Presencial | Lo fija el Profesional | X% | Honorario − comisión |
| Telemedicina | Lo fija el Profesional | X% | Honorario − comisión |
| Domicilio | Lo fija el Profesional | X% | Honorario − comisión |
Cambios del anexo
Todo cambio de comisión produce una nueva versión del contrato y requiere aceptación expresa del Profesional antes de aplicarse. Las consultas ya agendadas conservan la comisión vigente al momento de agendarse.
Los porcentajes son ranuras, no números inventados: la definición comercial es de Amedi, no de esta propuesta. Lo que la pieza sí decide es la estructura — la comisión como tabla dentro del contrato, con la regla de re-firma cuando cambie. Es el hueco más señalado del texto actual, convertido en página propia.
Las partes firman
El Profesional declara haber leído y aceptado el contrato v2.0 y su Anexo A. La firma se capturó digitalmente sobre esta superficie — trazo claro sobre noche, como toda firma en Amedi.
15 de enero, 2025 · 10:30 am
Caracas, Venezuela
Las dos cajas gemelas de la primera pasada sobreviven — pero ahora sobre noche, y la rúbrica es blanca porque así se capturó (ver sección 03). El rastro de auditoría que hoy vive escondido en la base de datos — IP, user-agent, timestamp — sube al documento como sello técnico, junto a las dos piezas nuevas: la versión y el hash del texto firmado. La marca de agua DEMO del modo demo queda intacta: es condicional en el código y esta retícula no la toca.
El viaje completo, sin cambiar la tubería: los mismos endpoints, el mismo canvas, el mismo Puppeteer. Lo que cambia es la puesta en escena — leer a página completa, firmar sobre noche, terminar con el documento en la mano.
El correo llama
contract-signature-request — la plantilla rediseñada en comunicaciones, con el paso pendiente claro.
El contrato se lee
Páginas a ancho completo sobre hueso — sin iframe con scroll interno — con índice y progreso de lectura.
La firma sucede
Al final de la lectura, la superficie noche: canvas de trazo claro, el checkbox y el botón verde.
El contrato queda
Vista vigente con la rúbrica sobre noche + contract-signed con el PDF adjunto.
Dr. Rodriguez: su perfil está casi listo. Solo falta leer y firmar el contrato de prestación de servicios — toma unos minutos y se firma desde el teléfono.
Leer y firmar el contratoEl enlace abre su consultorio en amedisalud.com. Si no solicitó este registro, ignore este correo.
Médicos cerca de ti · amedisalud.com
La plantilla Postmark contract-signature-request ya se rediseñó en la pieza
comunicaciones — aquí se cita con dos ajustes de copy: el documento se nombra con su versión
(v2.0 + Anexo A) y aparece el tiempo estimado, porque la fricción de un contrato se mide
en minutos, no en cláusulas.
El Profesional fija libremente sus honorarios por consulta. Amedi retiene por cada transacción la comisión establecida en el Anexo A, que forma parte integral de este contrato. Cualquier cambio del Anexo A requiere nueva aceptación del Profesional…
La historia clínica pertenece al paciente. El Profesional accede a ella solo con ocasión de la atención, y Amedi la resguarda cifrada…
Vigencia indefinida desde la firma. Cualquiera de las partes puede terminarlo con 30 días de aviso previo…
El <iframe> de 350 px muere: contract-viewer.tsx pasa a render
directo del HTML sanitizado, cada cláusula como página sobre hueso, columna de lectura de
~65 caracteres. El riel derecho da lo que un contrato le debe al que lo firma: saber
cuánto falta y poder volver a cualquier cláusula. En móvil el riel se pliega a una
barra de progreso pegada arriba.
Firma para activar tu consultorio
Leíste el contrato v2.0 completo, incluido el Anexo A.
Los tokens reservan la superficie noche para "hero, slides, firma" — este es ese momento.
signature-canvas.tsx cambia una sola prop de peso: penColor claro sobre
--noche-deep, y el PNG que se guarda queda blanco — por eso la página 5 del PDF y
la vista vigente son noche: la rúbrica vive donde puede verse. El botón deja de decir "Firmar
contrato": dice lo que pasa — "Firmar y activar mi consultorio". Solo se habilita al final
de la lectura, con firma y checkbox.
Tu contrato con Amedi
Firmado el 15 de enero, 2025 · 10:30 am
Su consultorio está activo. Adjuntamos el contrato firmado — guárdelo: es su copia del acuerdo.
También puede descargarlo cuando quiera desde su consultorio, en Contrato.
Médicos cerca de ti · amedisalud.com
La vista post-firma (contract-signed-view.tsx) deja el header verde genérico y adopta la
tarjeta noche: la rúbrica clara es la protagonista, con la versión firmada y el Anexo A como
datos de primera. Al lado, contract-signed — la plantilla de comunicaciones —
con el adjunto nombrado por licencia y versión.
Un rediseño honesto dice lo que no le toca. Las ranuras ámbar del documento son decisiones de Amedi — comerciales o legales — y los pendientes técnicos son del código, no de la retícula. Quedan en la mesa, con dueño claro:
| Hueco | Dónde vive hoy | Qué necesita |
|---|---|---|
| Comisión (X%) | "Será comunicada por separado" — §4 del texto actual | Definición comercial → llena el Anexo A. Decisión de negocio, previa consulta legal. |
| Razón social + RIF | No aparece — el contrato dice solo "AMEDI" | El dato registral de la entidad que contrata. Sin él, el contrato firma un nombre de fantasía. |
| Jurisdicción y ley aplicable | "Tribunales competentes", sin país ni ciudad | Definición del abogado — la §7 propuesta le deja la ranura lista. |
| Versionado del contrato | contractVersion = '1.0' hardcodeado; el texto firmado no se persiste | Persistir versión + hash del HTML al firmar (columnas nuevas en DoctorContractSignature). El sello de la página 5 lo asume. |
| Re-firma | Firma única por doctor (@unique); el campo active existe y nadie lo lee | Si el Anexo A cambia, hay nueva versión → el modelo debe aceptar más de una firma por doctor. |
| El contrato como requisito | La promesa "sin firma no cobras" vive solo en el FAQ del asistente — ningún guard la aplica | Decisión de producto: si el contrato es requisito, el consultorio debe decirlo y aplicarlo. |
| Acceso a los archivos | Firma y PDF suben con ACL public-read; el authorizer valida un prefijo que no coincide | Objetos privados + URL firmada real. Un contrato no debería ser una URL pública adivinable. |
| PDF huérfano | Si el job en background falla, contractPdfUrl queda nulo para siempre | Reintento o reconciliación — la estación 4 promete un PDF que siempre debe existir. |
Los campos ámbar del documento no se rellenan con valores inventados — ni en esta pieza ni en el código. La plantilla v2.0 los deja visibles hasta que exista la definición: un hueco señalado es un pendiente; un hueco escondido es un riesgo.
Los cuatro endpoints, el canvas, Puppeteer y Postmark quedan donde están. El rediseño se implementa por capas — cada fila es un cambio acotado y desplegable por separado:
| Pieza | Archivo | Cambio |
|---|---|---|
| Plantilla legal | assets/contracts/doctor-contract.html | Nueva estructura editorial: resumen de términos, §1–§8 con jerarquía, Anexo A, ranuras ámbar. Se limpian las ~165 líneas de CSS muerto que hoy se descartan al extraer el <body>. |
| PDF · portada y firmas | pdf/pdf.service.ts | buildContractHtml() gana tres builders: portada noche, anexo con tabla y página de firmas noche con el sello de auditoría. El resto de builders y la marca de agua DEMO quedan intactos. |
| Lectura | contract-viewer.tsx | Muere el iframe de 350 px: render directo sanitizado, cláusulas como páginas sobre hueso, riel de índice + progreso (plegado a barra en móvil). |
| Firma | signature-canvas.tsx | El canvas pasa a superficie --noche-deep con penColor claro. El PNG guardado queda blanco — coherente con la página 5 y la vista vigente, ambas noche. |
| Post-firma | contract-signed-view.tsx | La tarjeta noche "Vigente": rúbrica protagonista, versión + Anexo A como datos de primera, descargar PDF. |
| Versión | doctor-contracts.service.ts | contractVersion pasa a '2.0' y al firmar se persisten versión + hash del texto — las dos columnas nuevas del sello. |
El trazo claro es la única decisión que cruza capas: si la firma se captura blanca, toda superficie que la muestre debe ser noche — el canvas, la página 5 del PDF y la vista vigente ya lo son en esta propuesta. Las firmas históricas (trazo negro) se detectan por fecha de captura y se muestran sobre papel, como hasta hoy.
Un contrato que se lee, se entiende y se firma con ganas.
Cinco páginas con el ritmo de la marca — noche, papel, noche — y cuatro estaciones donde el doctor siempre sabe dónde está: cuánto falta por leer, qué está aceptando y dónde quedó su copia. Los huecos legales dejan de esconderse en un "por separado": quedan señalados en ámbar, con dueño.
5 páginas · portada con resumen claro · Anexo A de comisiones · sello de auditoría con versión y hash.
4 estaciones · lectura a página completa · la firma sobre noche · el PDF siempre en la mano.
Nada breaking · mismos endpoints, mismo canvas, mismo Puppeteer — seis archivos tocados por capas.