Amedi carpeta médica · paciente · subproyecto de “QR inteligente del consultorio”

La carpeta que el doctor pide,
hecha data.

Ya escaneaste y estás en la sala. Mientras llega tu turno, completas tu carpeta médica desde el teléfono —tocando, casi sin escribir. No es texto suelto: cada respuesta se guarda como dato estructurado siguiendo el estándar clínico (FHIR US Core / USCDI), para que Amedi pueda usarla, reusarla y compartirla.

datos estructurados · FHIR US Core / USCDI design system real de Amedi · Poppins se guarda en tu historia · prellenada la próxima vez
Cómo se llega aquí — flujo y autenticación
La carpeta no aparece sola: es un destino al que el QR enruta. Desde que el paciente escanea hasta que su carpeta queda guardada — sin app, con identidad mínima y la intención preservada.
01 · físico
Escanea el póster
Enlace fijo /c/ana-perez. El papel nunca cambia.
02 · resolución
Amedi resuelve
Reglas del consultorio + contexto: ¿quién es? ¿tiene cita hoy? ¿carpeta pendiente? → destino = carpeta.
03 · identidad
Identifícate
Antes de cualquier dato clínico. Sin SMS (WABA pendiente).
Googlecódigo por correousuario y clave
04 · carpeta
Llena los 8 pasos
Tocando, casi sin escribir. Autosave por paso.
05 · persiste
Guardada
Recursos en su historia FHIR; el doctor la ve al abrir la consulta.
Camino rápido: si ya tenía sesión en ese teléfono, del escaneo salta directo a la carpeta — los pasos de identidad no existen.
Arquitectura
Un QR dinámico, identidad antes de cualquier dato clínico, y la carpeta persistida como recursos consultables — reusando el stack que Amedi ya tiene.
físicoPóster con enlace fijo amedisalud.com/c/{slug} — uno por médico, nunca se reimprime.papel
resoluciónRedirect + motor de reglas del consultorio decide el destino según el contexto del paciente. La carpeta es una de las acciones configurables.edge / api
identidadSupabase Auth: Google OAuth, código por correo (OTP), usuario y clave. Sin SMS. Preserva la intención con deep-link de retorno.supabase
clienteapps/client (Next.js) — la UI de la carpeta (este diseño). Hooks TanStack Query, schemas Zod, autosave por paso.next.js
apiNestJS — valida y mapea cada sección a su recurso clínico; prellena desde lo que ya existe del paciente.nestjs / prisma
datosPostgres/Supabase — Patient · AllergyIntolerance · Condition · MedicationStatement · Observation, alineados a FHIR. Reusables y consultables.fhir-aligned
Casos borde
Lo que pasa cuando el camino feliz no aplica. Cada uno con su manejo — porque es donde se cae la experiencia si no se piensa.
Ya tiene sesión
Salta identidad: del escaneo directo a la carpeta. El puente es invisible para recurrentes.
Paciente nuevo
Registro mínimo (correo) y sigue. La carpeta crea su Patient con lo que llena.
Carpeta ya completa
Llega prellenada; solo confirma o edita lo que cambió. No vuelve a llenar todo.
Abandona a mitad
Autosave por paso; retoma donde quedó. Nada se pierde si cierra el navegador.
Sin cita hoy
Igual se guarda en su historia; el doctor la ve en la próxima. La carpeta es del paciente, no del turno.
Llena por otra persona
“Es para alguien más” → identifica al paciente correcto; los datos van a su historia, no a la de quien sostiene el teléfono.
Mala señal
Se guarda paso a paso; si la conexión se cae, no se pierde lo ya respondido.
Privacidad
Consentimiento de datos antes de guardar; son datos clínicos, solo el equipo médico los ve.
Sin alergias / no toma nada
“No conocidas” / “No tomo” son opciones explícitas → se registra como afirmación negativa (un dato, no un vacío).

Por qué estructurado (y no un PDF)

Una carpeta en texto libre se ve igual pero no sirve como dato: no se filtra, no se compara, no alimenta alertas ni se comparte entre sistemas. Diseñamos cada paso contra el estándar USCDI / FHIR US Core con terminologías codificadas, así que al terminar Amedi no tiene un formulario lleno — tiene recursos clínicos consultables. Esa es la diferencia entre “tener formularios” y “tener data”.

Sección de la carpetaRecurso FHIR · terminología
Datos personalesPatient — demografía US Core
Peso y tallaObservation — vital-signs · LOINC
Motivo de consultaEncounter.reasonCode
Antecedentes / cirugíasCondition · ProcedureSNOMED CT
AlergiasAllergyIntolerance — substancia + reacción + severidad
MedicamentosMedicationStatementRxNorm + dosis
Hábitos (tabaco, alcohol)Observation — social history · smoking status value set
Contacto de emergenciaPatient.contact
  • Tocar, no escribirChips, segmentos y catálogos antes que campos libres — menos fricción y mejor dato.
  • Codificado en origenLo que se elige ya viene con su código (SNOMED, RxNorm, LOINC); nada que normalizar después.
  • Lo crítico, explícitoAlergias con severidad; lo grave se marca en rojo. Seguridad, no adorno.
  • No pedir dos vecesLo que Amedi ya sabe llega prellenado; la carpeta se reusa entre visitas.
  • Design system realComponentes, tipografía (Poppins) y color de Amedi — sin mayúsculas, sin estética prestada.