/* =====================================================================
 * Référentiels (listes de choix) utilisés par les modules.
 * ===================================================================== */

/* ---------- Utilisateurs ---------- */

const ROLES = [
  { value: 'admin', label: 'Administrateur', tone: 'red', defaults: { sap: true, jsp: true } },
  { value: 'chef_agres', label: 'Bilan', tone: 'blue', defaults: { sap: true, jsp: false } },
  { value: 'encadrant_jsp', label: 'Encadrant JSP', tone: 'amber', defaults: { sap: false, jsp: true } },
];
const roleOf = (value) => ROLES.find((r) => r.value === value) || ROLES[1];

const GRADES = [
  'Sapeur 2e classe',
  'Sapeur 1re classe',
  'Caporal',
  'Caporal-chef',
  'Sergent',
  'Sergent-chef',
  'Adjudant',
  'Adjudant-chef',
  'Lieutenant',
  'Capitaine',
  'Commandant',
  'Lieutenant-colonel',
  'Infirmier SP',
  'Médecin SP',
];

/* ---------- Étape 1 : Bilan circonstanciel ---------- */

const ENGINS = ['VSAV 1', 'VSAV 2', 'VSR', 'FPT', 'CCF', 'VTU', 'VLI', 'VL'];

const MOTIFS = [
  'Malaise',
  'Chute',
  'Accident de la circulation',
  'Détresse respiratoire',
  'Douleur thoracique',
  'Traumatisme',
  'Arrêt cardio-respiratoire',
  'Personne ne répondant pas aux appels',
  'Intoxication',
  'Brûlure',
  'Hémorragie',
  'Accouchement',
  'Trouble du comportement',
  'Noyade',
  'Pendaison',
  'Autre',
];

const SECURITE_ZONE = [
  { value: 'securisee', label: 'Zone sécurisée', tone: 'emerald' },
  { value: 'en_cours', label: 'Sécurisation en cours', tone: 'amber' },
  { value: 'danger', label: 'Danger persistant', tone: 'red' },
];

const RISQUES = [
  'Électrique',
  'Gaz',
  'Toxique / NRBC',
  'Incendie',
  'Routier / Circulation',
  'Effondrement',
  'Chute de hauteur',
  'Aquatique / Noyade',
  'Animal',
  'Agressivité / Violence',
  'Météo / Intempéries',
  'Produits dangereux',
];

const MECANISMES = [
  { value: 'traumatique', label: 'Traumatique (accident)' },
  { value: 'medical', label: 'Médical (maladie)' },
  { value: 'mixte', label: 'Mixte' },
];

const ENVIRONNEMENT = [
  'Victime au sol',
  'Victime assise',
  'Victime debout',
  'Victime dans un lit',
  'Victime incarcérée',
  'Ceinture portée',
  'Ceinture non portée',
  'Airbag déclenché',
  'Casque porté',
  'Casque retiré',
  'Éjection',
  'Habitacle déformé',
  'Chute > 3 m',
  'Domicile',
  'Voie publique',
  'Lieu public / ERP',
  'Lieu de travail',
];

const RENFORTS = [
  'SMUR',
  'Médecin SP',
  'Infirmier SP (ISP)',
  'Second VSAV',
  'Police',
  'Gendarmerie',
  'EDF / Enedis',
  'GRDF',
  'GRIMP',
  'VSR / Désincarcération',
  'FPT / Incendie',
  'Chef de groupe',
  'Plongeurs / SAV',
  'Cynotechnie',
];

/* ---------- Étape 2 : Bilan vital X-ABCDE ---------- */

const HEMORRAGIE_GESTES = ['Compression manuelle', 'Pansement compressif', 'Garrot', 'Pansement hémostatique'];

const VA_ETAT = [
  { value: 'libres', label: 'Libres', tone: 'emerald' },
  { value: 'obstruees', label: 'Obstruées', tone: 'red' },
];
const VA_CAUSES = ['Corps étranger', 'Sécrétions', 'Vomissements', 'Sang', 'Chute de langue', 'Œdème'];

const RESP_QUALITE = [
  'Ample',
  'Silencieuse',
  'Régulière',
  'Irrégulière',
  'Superficielle',
  'Pauses respiratoires',
  'Tirage',
  'Sifflements',
  'Râles',
  'Cyanose',
  'Difficulté à parler',
];

const O2_DISPOSITIFS = ['MHC (Masque Haute Concentration)', 'Insufflateur (BAVU)', 'Lunettes à O2', 'Masque simple'];

const POULS_QUALITE = [
  { value: 'Régulier, bien frappé, symétrique', label: 'Régulier, bien frappé, symétrique', tone: 'emerald' },
  { value: 'Régulier', label: 'Régulier', tone: 'emerald' },
  { value: 'Irrégulier', label: 'Irrégulier', tone: 'amber' },
  { value: 'Filant', label: 'Filant', tone: 'amber' },
  { value: 'Absent', label: 'Absent', tone: 'red' },
];

const SIGNES_PERIPH = ['Marbrures', 'Pâleur', 'Sueurs', 'Cyanose', 'Extrémités froides', 'Soif'];

const TRC = [
  { value: '< 2 s', label: 'TRC < 2 s', tone: 'emerald' },
  { value: '> 2 s', label: 'TRC > 2 s', tone: 'red' },
];

const AVPU = [
  { value: 'A', label: 'A — Alerte', tone: 'emerald' },
  { value: 'V', label: 'V — Réagit à la voix', tone: 'amber' },
  { value: 'P', label: 'P — Réagit à la douleur', tone: 'amber' },
  { value: 'U', label: 'U — Inconscient', tone: 'red' },
];

const GLASGOW = {
  E: [
    { value: '4', label: '4 — Spontanée' },
    { value: '3', label: '3 — À la demande' },
    { value: '2', label: '2 — À la douleur' },
    { value: '1', label: '1 — Aucune' },
  ],
  V: [
    { value: '5', label: '5 — Orientée' },
    { value: '4', label: '4 — Confuse' },
    { value: '3', label: '3 — Inappropriée' },
    { value: '2', label: '2 — Incompréhensible' },
    { value: '1', label: '1 — Aucune' },
  ],
  M: [
    { value: '6', label: '6 — Obéit aux ordres' },
    { value: '5', label: '5 — Orientée à la douleur' },
    { value: '4', label: '4 — Évitement' },
    { value: '3', label: '3 — Flexion anormale' },
    { value: '2', label: '2 — Extension' },
    { value: '1', label: '1 — Aucune' },
  ],
};

const PUPILLES = ['Isocores', 'Anisocores', 'Mydriase', 'Myosis', 'Réactives', 'Non réactives'];

const NEURO = [
  'Motricité égale des 4 membres',
  'Sensibilité conservée',
  'Paresthésies',
  'Déficit moteur',
  'Déficit sensitif',
  'Asymétrie faciale',
  'Trouble de la parole',
  'Convulsions',
  'Désorientation',
];

const COTES = ['Droit', 'Gauche', 'Bilatéral'];

const ECHELLES_DOULEUR = [
  { value: 'EN', label: 'EN (numérique)' },
  { value: 'EVA', label: 'EVA (visuelle)' },
  { value: 'EVS', label: 'EVS (verbale)' },
];

/* ---------- Étape 3 : Bilan lésionnel ---------- */

const BODY_ZONES = [
  { id: 'tete', label: 'Tête / Face' },
  { id: 'cou', label: 'Cou / Rachis cervical' },
  { id: 'thorax', label: 'Thorax' },
  { id: 'abdomen', label: 'Abdomen' },
  { id: 'bassin', label: 'Bassin' },
  { id: 'rachis', label: 'Dos / Rachis dorso-lombaire' },
  { id: 'msd', label: 'Membre sup. droit' },
  { id: 'msg', label: 'Membre sup. gauche' },
  { id: 'mid', label: 'Membre inf. droit' },
  { id: 'mig', label: 'Membre inf. gauche' },
];
const zoneLabel = (id) => (BODY_ZONES.find((z) => z.id === id) || { label: id }).label;

const LESIONS = [
  'Plaie',
  'Brûlure',
  'Fracture suspectée',
  'Hématome',
  'Trauma / Contusion',
  'Déformation',
  'Douleur',
  'Saignement',
  'Luxation',
  'Amputation',
];

const SAMPLE = [
  { key: 's', letter: 'S', label: 'Symptômes ressentis', placeholder: 'Ce que la victime ressent : douleur, nausées, vertiges…' },
  { key: 'a', letter: 'A', label: 'Allergies connues', placeholder: 'Médicaments, aliments, latex… ou « aucune connue »' },
  { key: 'm', letter: 'M', label: 'Médicaments / Traitements', placeholder: 'Traitements en cours, ordonnance récupérée…' },
  { key: 'p', letter: 'P', label: 'Passé médical / Antécédents', placeholder: 'Antécédents médicaux, chirurgicaux, hospitalisations…' },
  { key: 'l', letter: 'L', label: 'Dernier repas (Last meal)', placeholder: 'Heure et nature du dernier repas / boisson' },
  { key: 'e', letter: 'E', label: 'Événements déclenchants', placeholder: 'Circonstances précédant le malaise / l\'accident' },
];

/* ---------- Étape 4 : Gestes ---------- */

const GESTES_GROUPES = [
  {
    titre: 'Immobilisation',
    tone: 'blue',
    items: [
      'Collier cervical',
      'Attelle de membre',
      'Attelle à dépression',
      'MID (Matelas Immobilisateur à Dépression)',
      'Plan dur',
      'ACT (Attelle cervico-thoracique)',
      'Écharpe / Contre-écharpe',
      'Maintien tête',
    ],
  },
  {
    titre: 'Hémorragies & plaies',
    tone: 'red',
    items: [
      'Compression manuelle',
      'Pansement compressif',
      'Garrot',
      'Pansement simple',
      'Refroidissement brûlure',
      'Pansement brûlure',
    ],
  },
  {
    titre: 'Ventilation',
    tone: 'violet',
    items: [
      'Oxygénothérapie',
      'LVA (Libération des voies aériennes)',
      'Désobstruction',
      'Aspiration de mucosités',
      'Insufflations BAVU',
      'Canule oro-pharyngée',
    ],
  },
  {
    titre: 'Circulation & réanimation',
    tone: 'amber',
    items: ['RCP', 'DAE', 'PLS', 'Position demi-assise', 'Position allongée', 'Jambes surélevées'],
  },
  {
    titre: 'Divers',
    tone: 'emerald',
    items: [
      "Dégagement d'urgence",
      'Resucrage (sucre)',
      'Protection thermique / Couverture',
      'Réchauffement',
      'Relevage',
      'Brancardage',
      'Aide à la prise de traitement',
      'Surveillance / Réconfort',
    ],
  },
];

/* ---------- Étape 5 : Transmission ---------- */

const DECISIONS = [
  { value: 'smur', label: 'Transport médicalisé (SMUR)', tone: 'red' },
  { value: 'vsav', label: 'Transport VSAV non médicalisé', tone: 'blue' },
  { value: 'ambulance', label: 'Transport ambulance privée', tone: 'violet' },
  { value: 'lsp', label: 'Laissé sur place', tone: 'emerald' },
  { value: 'refus', label: 'Refus de transport (décharge)', tone: 'amber' },
  { value: 'dcd', label: 'Décès constaté', tone: 'slate' },
];
const decisionLabel = (v) => (DECISIONS.find((d) => d.value === v) || { label: v || '—' }).label;

const SERVICES = [
  'Urgences',
  'Déchocage / SAUV',
  'Pédiatrie',
  'Maternité',
  'Cardiologie / USIC',
  'Neurologie / UNV',
  'Centre des brûlés',
  'Psychiatrie',
  'Autre',
];

const HOPITAUX = ['CHU', 'Centre Hospitalier', 'Clinique', 'Hôpital pédiatrique', 'Maison médicale de garde'];
