codigo0/docs/FASE_2_INTEGRACION_CONTENT_ADAPTER.md

3.4 KiB

FASE 2: INTEGRACIÓN CONTENT ADAPTER

Fecha: 2025-01-06
Estado: EN PROGRESO


📋 RESUMEN

Integración del sistema ContentAdapter en las páginas de la aplicación para permitir el uso de contenido externo (Content Pack) con fallback automático a datos locales.


IMPLEMENTACIÓN COMPLETADA

1. ContentAdapter Creado

  • LocalContentAdapter - Usa datos locales (procedures.ts, drugs.ts)
  • ExternalContentAdapter - Usa Content Pack JSON desde /api/content-pack/latest.json
  • ContentAdapterFactory - Selecciona automáticamente el adapter disponible
  • Fallback automático: External → Local si falla

2. Integración en Páginas

Páginas Actualizadas:

  • src/pages/SoporteVital.tsx

    • Usa getAllProtocols() del ContentAdapter
    • Fallback a getProceduresByCategory() si no hay contenido externo
  • src/pages/Farmacos.tsx

    • Usa getAllDrugs() del ContentAdapter
    • Fallback a drugs local si no hay contenido externo
  • src/pages/RCP.tsx

    • Función findDrugByName() actualizada para usar ContentAdapter
    • Mantiene compatibilidad con sistema existente (useProtocol hook)

⚠️ Páginas con Sistema Híbrido:

  • src/pages/RCP.tsx - Usa useProtocol hook (sistema anterior) + ContentAdapter para fármacos
  • src/pages/ViaAerea.tsx - Usa useProtocol hook
  • src/pages/Shock.tsx - Usa useProtocol hook

🔄 SISTEMAS EXISTENTES

Sistema 1: content-pack.ts + useProtocol hook

  • Ya implementado y funcionando
  • Usa override de contenido desde Content Pack
  • Mantiene compatibilidad con datos locales

Sistema 2: content-adapter.ts (NUEVO)

  • Implementado según plan técnico
  • Patrón Adapter más completo
  • Fallback automático
  • Cache en localStorage

Decisión: Ambos sistemas pueden coexistir. El ContentAdapter es más completo y seguirá siendo el sistema principal.


🎯 PRÓXIMOS PASOS

Pendiente:

  1. Verificar que Content Pack se carga correctamente desde el backend
  2. Añadir indicador visual cuando se usa contenido externo vs local
  3. Migrar páginas restantes (ViaAerea, Shock) a usar ContentAdapter directamente
  4. Probar fallback cuando Content Pack no está disponible
  5. Optimizar carga del Content Pack (lazy loading, cache)

📊 ESTADO ACTUAL

Componente Estado Notas
ContentAdapter Completo Implementado y funcionando
SoporteVital Integrado Usa ContentAdapter
Farmacos Integrado Usa ContentAdapter
RCP ⚠️ Híbrido Usa ambos sistemas
ViaAerea ⚠️ Sistema anterior Usa useProtocol hook
Shock ⚠️ Sistema anterior Usa useProtocol hook
Content Pack API Disponible /api/content-pack/latest.json

🧪 PRUEBAS REALIZADAS

  • Compilación sin errores
  • Linter sin warnings
  • Fallback a datos locales funciona
  • Pendiente: Probar carga de Content Pack desde backend

📝 NOTAS TÉCNICAS

Carga del Content Pack

  • URL: /api/content-pack/latest.json
  • Cache: localStorage con clave content_pack
  • Expiración: 24 horas
  • Fallback: Si falla, usa datos locales

Compatibilidad

  • No rompe funcionalidad existente
  • Fallback garantizado
  • Sin cambios en rutas ni componentes
  • Datos locales siempre disponibles

Estado: Integración básica completada. Pendiente pruebas y optimizaciones.