Sistema Médico Hospital Nacional d. Ingenieros y Programadores 4. Diseño del frontend
HN Ingenieros · Sección 4 de 10
🎨

4. Diseño del frontend

Cómo construir una pantalla paso a paso. Una receta única replicable para todas las pantallas del hospital.

4.1 Stack obligatorio

4.2 Estructura del proyecto

apps/web
├── src/
│   ├── app             // Bootstrapping, providers, layout principal
│   ├── contexts        // (subdominios) admision/ ce/ er/ hosp/ quirofano/ farmacia/ ...
│   │   └── ce/
│   │       ├── pages/        // ConsultaList.tsx · ConsultaDetail.tsx
│   │       ├── components/   // FormaConsulta.tsx
│   │       ├── api/          // useConsultas.ts (TanStack)
│   │       └── schemas/      // zod schemas compartidos
│   ├── shared          // ui, hooks, utils, i18n, design-tokens
│   └── routes          // Definición de rutas y guards
├── tests/              // Vitest + Playwright
└── public/                   // assets estáticos · iconos · sonidos de alerta

4.3 Design System Toscana Salud (resumen)

TokenValorUso
--c-primary#0b3d91 (azul institucional)Encabezados, botones primarios
--c-accent#2D9C9C (verde Toscana)CTAs, estados positivos
--c-danger#dc2626Triaje rojo · alertas críticas
--c-warn#f59e0bTriaje amarillo · advertencias
--c-ok#10b981Resultados normales · éxito
TipografíaInter 400/500/700 (UI) · Lora 400/700 (encabezados clínicos)Jerarquía consistente
SpacingEscala 4 / 8 / 12 / 16 / 24 / 32 pxRitmo vertical de 8 px
Radio4 (chip) · 8 (input) · 12 (card) · 9999 (pill)Coherencia
Sombra0 4px 14px rgba(0,0,0,0.05) (card) · 0 8px 22px rgba(11,61,145,.15) (hover)Profundidad

4.4 Cómo construir una pantalla (paso a paso)

  1. Definir el contrato con backend (OpenAPI). Genera tipos TypeScript con openapi-typescript.
  2. Crear el schema Zod en schemas/. Puede ser el mismo que valida el backend (compartido por monorepo).
  3. Hook de datos en api/useConsultas.ts: useQuery para lectura, useMutation con onMutate optimista, invalidación de keys jerárquicas.
  4. Componente de pantalla en pages/ConsultaDetail.tsx: orquesta layout, llama al hook, maneja estados isLoading · isError · data.
  5. Formulario con useForm({ resolver: zodResolver(schema) }). Usar componentes de @toscana/sih-ui: <Field>, <Select>, <DatePicker>, <CodeSearch> (CIE-10/ATC).
  6. Manejo de errores: errores de validación → mensajes inline; errores 4xx/5xx → <ErrorBanner> con trace_id visible para soporte.
  7. Accesibilidad: navegación por teclado, focus visible, etiquetas label+aria-describedby, contraste AA, sin trampas de foco. Lector de pantalla anuncia cambios de estado.
  8. Internacionalización: ningún string hardcodeado · <FormattedMessage id="ce.title" />. Fechas con <FormattedDate /> en zona America/Guatemala.
  9. Tableros vivos (encamamiento, ER, quirófano): conectar WebSocket vía hook useLiveBoard(); reconectar con backoff exponencial; mostrar indicador de conexión.
  10. Pruebas: Testing Library para componentes; Playwright para flujo crítico (CU-04 orden + resultado lab).
  11. Performance: React.lazy por ruta · prefetch en hover · imágenes WebP · listas virtualizadas para censos >200 ítems.
  12. Empaquetar: pnpm build · servir desde NGINX con cache-control agresivo en hash y cero en index.html.

4.5 Mapa de pantallas por rol

RolPantallas
AdmisiónBuscar paciente · Registrar paciente · Emitir carnet QR · Abrir episodio CE/ER/Hosp
Médico CELista de citas · Expediente · Anamnesis · Receta · Órdenes de lab/imagen · Alta
Médico ERTablero de triaje (vivo) · Sala de choque · Observación 24 h · Notas seriadas
EnfermeríaTriaje Manchester · Signos vitales · Censo de cama · Dispensación · Hoja de medicación
Médico HospPase de visita · Evolución · Órdenes · Alta hospitalaria
QuirófanoProgramación semanal · Hoja operatoria · Checklist OMS · Recursos
LaboratorioBandeja de órdenes · Validación · Liberación de resultados · Estadística
FarmaciaRecetas pendientes · Dispensación · Inventario · Vencimientos
ObstetriciaPartograma · Parto · Recién nacido · SIGSA-4/5
EstadísticaReportes SIGSA · Vigilancia EPI · Producción
Admin/FinanzasRRHH · Presupuesto · Compras · Facturación · Tableros
DirecciónTablero ejecutivo · Censo · Producción · Ejecución presupuestaria · Indicadores MSPAS

4.6 Listo cuando…

← Volver a d. Ingenieros y Programadores 🏥 Inicio del Sistema Médico 🏠 Inicio Toscana