Aller au contenu

Composables

Les composables (use*) encapsulent la logique métier réactive. Ils sont dans pwa/src/composables/.

Gestion de l’état patient réactif : paramètres vitaux, alarmes, seuils.

const { vitals, setVital, isAlarming, alarms } = useVitalSigns()
// Modifier un paramètre
setVital('hr', 120)
// Vérifier les alarmes
if (isAlarming.value) {
console.log(alarms.value) // [{ param: 'hr', type: 'high', value: 120 }]
}

Chargement, exécution et navigation dans les scénarios JSON.

const { scenario, currentState, start, pause, resume, trigger, goto } = useScenario()
// Charger et démarrer
await scenario.load('acr-fv-adulte')
start()
// Navigation
trigger('shock')
goto('stable')

Enregistrement des événements et export.

const { events, log, exportJSON, exportCSV } = useSessionLog()
log('shock_delivered', { energy: 200, rhythm: 'FV' })
await exportJSON()

Communication WebSocket avec le coordinateur ESP32.

const { isConnected, devices, send, connect } = useDeviceConnection()
connect('ws://192.168.4.1:81')
send('SCENARIO_START', { id: 'acr-fv-adulte' })

File de synchronisation IndexedDB ↔ cloud.

const { pendingCount, sync, isOnline } = useOfflineSync()
if (isOnline.value) {
await sync()
}

Gestion du thème clair/sombre.

Notifications temporaires.

Visite guidée pour les nouveaux utilisateurs.

Détection et gestion de l’installation PWA.

Chronomètre de session avec pause/resume.

  1. Un composable = un fichier dans composables/
  2. Prefix use
  3. Retourne des ref() / computed() réactifs
  4. Pas de dépendance directe aux composants
  5. Testable indépendamment (90% couverture cible)