// Realistic vascular-surgery fixture data. French. // Lifted verbatim into Object.assign(window, ...) at the bottom so other // Babel scripts can read it from global scope. const DATE_TODAY = { num: '24/05', dow: 'LUN', long: 'lundi 24 mai 2026' }; const TODO_REPORTS = [ { id: 'cro-241', type: 'CRO', patient: 'M. Martin, Jean', procedure: 'Pontage fémoro-poplité sus-géniculé G', duration: '12:42', started: '08:14', state: 'paused', }, { id: 'cro-240', type: 'CRO', patient: 'Mme Durand, Hélène', procedure: 'Endartériectomie carotidienne D', duration: '08:21', started: 'hier 17:48', state: 'draft', }, { id: 'crc-118', type: 'CRC', patient: 'M. Bernard, Paul', procedure: 'Consultation pré-op AAA 54mm', duration: '04:55', started: 'hier 14:02', state: 'draft', }, { id: 'crh-077', type: 'CRH', patient: 'Mme Lefèvre, Denise', procedure: 'Sortie J+5 — pontage fémoro-jambier', duration: '06:10', started: 'hier 10:30', state: 'draft', }, ]; const PATIENTS = [ { id: 'p-2210', name: 'Martin, Jean', civ: 'M.', age: 72, sex: 'H', ddn: '03/11/1953', phone: '06 14 22 87 03', ipp: '2210·44871', status: 'Hospitalisé', bed: 'CV2 · 412', summary: 'AOMI stade IIb G — pontage fémoro-poplité sus-géniculé J0', flags: ['AVK', 'HTA', 'Tabagisme actif'], next: { when: 'AUJ · 14:30', what: 'Visite post-op J0' }, history: [ { d: '24/05/26', t: 'Bloc 7 · 08:14', label: 'Pontage fémoro-poplité sus-géniculé G', tag: 'CRO' }, { d: '22/05/26', t: '10:15', label: 'Consultation pré-op — bilan veineux', tag: 'CRC' }, { d: '12/04/26', t: '09:00', label: 'Echo-doppler artériel MI', tag: 'EXAM' }, { d: '03/03/26', t: '14:40', label: 'Angio-TDM aorto-iliaque + MI', tag: 'IMG' }, ], }, { id: 'p-1987', name: 'Durand, Hélène', civ: 'Mme', age: 68, sex: 'F', ddn: '17/02/1958', phone: '06 88 41 09 22', ipp: '1987·22014', status: 'Hospitalisée', bed: 'CV1 · 308', summary: 'Sténose carotide D 78% symptomatique — endartériectomie J1', flags: ['AAP', 'Diabète T2'], next: { when: 'AUJ · 16:00', what: 'Doppler de contrôle' }, }, { id: 'p-3041', name: 'Bernard, Paul', civ: 'M.', age: 79, sex: 'H', ddn: '22/06/1946', phone: '06 02 55 17 80', ipp: '3041·90112', status: 'Suivi', bed: '—', summary: 'AAA infra-rénal 54mm — discussion staff EVAR vs chirurgie', flags: ['AOD', 'BPCO'], next: { when: '28/05 · 11:00', what: 'Staff vasculaire' }, }, ]; const AGENDA_TODAY = [ { time: '07:30', kind: 'STAFF', label: 'Staff vasculaire', sub: 'Salle Bichat · 6 dossiers', tag: null }, { time: '08:00', kind: 'BLOC', label: 'Pontage fémoro-poplité G', sub: 'M. Martin, J. · Bloc 7 · 4h', tag: 'EN COURS', accent: true }, { time: '13:00', kind: 'CONSULTATION', label: 'Mme Petit, A.', sub: 'Suivi FAV J+30 · Box 3', tag: null }, { time: '13:30', kind: 'CONSULTATION', label: 'M. Garnier, R.', sub: 'AOMI stade IIa · Box 3', tag: null }, { time: '14:00', kind: 'URGENCE', label: 'Ischémie aiguë MI G', sub: 'M. Robert, L. · SAU box 4', tag: 'À VOIR', accent: true }, { time: '14:30', kind: 'VISITE', label: 'Tour de service CV2', sub: '11 patients', tag: null }, { time: '16:00', kind: 'CONSULTATION', label: 'Mme Faure, S.', sub: 'Pré-op stent iliaque · Box 2', tag: null }, { time: '17:00', kind: 'BLOC', label: 'FAV radio-céphalique D', sub: 'M. Lemaire, C. · Bloc 4 · 1h30', tag: null }, ]; // CR (compte rendu) — generated by AI for Martin, Jean const CR_MARTIN = { id: 'cro-241', title: 'Pontage fémoro-poplité sus-géniculé gauche', patient: 'Martin, Jean — 72 ans', ipp: '2210·44871', date: '24/05/2026', operator: 'Dr. — vous', assistant: 'Dr. Roussel, A.', anesth: 'AG — Dr. Mancini, P.', duration: '3h42', generated: 'IA · 09:08 · 12s', sections: [ { label: 'Motif', body: "Patient de 72 ans, AOMI stade IIb gauche invalidante (claudication < 100m), avec lésion fémorale superficielle longue non franchissable en endovasculaire. Indication retenue en RCP du 19/05 d'un pontage fémoro-poplité sus-géniculé en veine grande saphène inversée.", }, { label: 'Examen', body: "Abord fémoral commun gauche par incision longitudinale. Dissection du trépied. Prélèvement de la veine grande saphène homolatérale, calibre 4mm, paroi saine sur 28cm. Anastomose proximale termino-latérale sur la fémorale commune au Prolène 6/0. Tunnellisation sous-sartoriale. Anastomose distale sus-géniculée sur l'artère poplitée P1 au Prolène 6/0.", }, { label: 'Conclusion', body: "Pontage perméable en fin d'intervention, pouls poplité et tibial postérieur palpés, doppler distal positif aux 3 axes. Hémostase satisfaisante. Fermeture en trois plans sur drains de Redon. Pas de complication per-opératoire.", }, { label: 'CAT', body: "Surveillance USC 24h. Anticoagulation curative HBPM J0–J3 puis relais AVK (INR cible 2–3). Echo-doppler de contrôle J2. Lever J1, kiné MI dès J1. Sortie prévue J5–J6. Consultation à 1 mois avec doppler.", }, ], sources: [ { n: 1, label: 'Dictée per-op · 08:14 → 11:56', kind: 'AUDIO' }, { n: 2, label: 'Compte-rendu anesthésie', kind: 'DOC' }, { n: 3, label: 'Imagerie pré-op (angio-TDM)', kind: 'IMG' }, ], }; // AI exploration screen const AI_SUGGESTIONS = [ 'Patients sous AVK à voir cette semaine', 'Mes pontages fémoro-poplités 2025 — perméabilité à 1 an', 'Comparer les CRO de M. Martin avec son angio-TDM', 'Patients à reconvoquer (doppler en retard)', ]; const AI_ANSWER = { query: 'Mes pontages fémoro-poplités sus-géniculés en 2025 — taux de perméabilité primaire à 12 mois ?', score: 92, body: [ "Sur la période janvier–décembre 2025, vous avez réalisé 31 pontages fémoro-poplités sus-géniculés. À 12 mois, la perméabilité primaire est de 84% (26/31), avec 3 thromboses précoces (< 30j) et 2 sténoses anastomotiques distales reprises en endovasculaire.", "Le sous-groupe veine saphène (n=22) montre une perméabilité de 91% contre 67% pour les prothèses PTFE (n=9) — différence cohérente avec la littérature [1,3].", ], cites: [ { n: 1, label: 'CRO 2025 · cohorte 31 patients', sub: 'Dossier interne' }, { n: 2, label: 'Suivi écho-doppler 6m / 12m', sub: '142 examens' }, { n: 3, label: 'Klinkert 2003 — saphène vs PTFE', sub: 'Référence externe' }, ], }; // Chiffres d'activité — source unique, lue à la fois par le widget du // dashboard et par l'écran Statistiques du Compte. Même leçon que la « charge // du jour » : deux jeux de chiffres finissent toujours par diverger. const ACTIVITE = { periode: 'Avril 2026', kpis: [ { key: 'patients', label: 'Patients', value: '1 247', delta: '+18%' }, { key: 'crs', label: 'Comptes rendus', value: '341', delta: '+12%' }, { key: 'rdvs', label: 'Rendez-vous', value: '280', delta: '+9%' }, { key: 'documents', label: 'Documents', value: '856', delta: '+22%' }, { key: 'jour', label: "Aujourd'hui", value: '12', delta: '+3%' }, ], // Comptes rendus dictés sur les 6 derniers mois — alimente la sparkline. crsParMois: [38, 44, 41, 52, 49, 61], moisCourts: ['Nov', 'Déc', 'Jan', 'Fév', 'Mar', 'Avr'], }; Object.assign(window, { DATE_TODAY, TODO_REPORTS, PATIENTS, AGENDA_TODAY, CR_MARTIN, AI_SUGGESTIONS, AI_ANSWER, ACTIVITE, });