// ============================================================
// LSMD — Erweiterte Demodaten (Akten, Rollen, Rechte, Logs, Wiki)
// ============================================================

// ---- Aktensystem (MedicNet-Stil) ----
const PATIENT_STATUS = {
  STABIL:      { label: 'Stabil',        color: '#22C55E' },
  BEHANDLUNG:  { label: 'In Behandlung', color: '#F59E0B' },
  KRITISCH:    { label: 'Kritisch',      color: '#CC2233' },
  ENTLASSEN:   { label: 'Entlassen',     color: '#0EA5E9' },
  VERSTORBEN:  { label: 'Verstorben',    color: '#8899AA' },
};

// Patientenhinweise (RP-Flags)
const PATIENT_FLAGS = [
  { id: 'gewalt',     label: 'Gewalttätiger Patient', color: '#CC2233', icon: 'TriangleAlert' },
  { id: 'gang',       label: 'Gangmitglied',          color: '#F59E0B', icon: 'Skull' },
  { id: 'verstorben', label: 'Patient verstorben',    color: '#8899AA', icon: 'HeartCrack' },
];

// Körperregionen für Behandlungseinträge
const KOERPER_TEILE = {
  oberkoerper: [['kopf', 'Kopf'], ['hals', 'Hals'], ['brust', 'Brust / Rücken'], ['armLinks', 'Arm Links'], ['armRechts', 'Arm Rechts']],
  unterkoerper: [['bauch', 'Bauch'], ['huefte', 'Hüfte'], ['beinLinks', 'Linkes Bein'], ['beinRechts', 'Rechtes Bein'], ['fussLinks', 'Fuß Links'], ['fussRechts', 'Fuß Rechts']],
};

const leerVerletzungen = () => ({
  oberkoerper: { kopf: '', hals: '', brust: '', armLinks: '', armRechts: '' },
  unterkoerper: { bauch: '', huefte: '', beinLinks: '', beinRechts: '', fussLinks: '', fussRechts: '' },
});

const PATIENTS = [
  {
    id: 'AKTE-1042', name: 'Daniel Smith', geschlecht: 'M', gebdatum: '24.08.1996',
    tel: '222', adresse: 'Haus 6028',
    notfallkontakte: [{ name: 'Alicia Black', nr: '444' }, { name: 'Chris Mansory', nr: '491239' }, { name: 'Georg Mustermann', nr: '1234-555-678' }],
    blutgruppe: 'A+', allergien: 'Keine bekannt', vorerkrankungen: 'Keine', groesse: 175, gewicht: 110,
    sonstiges: 'Frühere KFZ-Leitung. Patient kooperativ.',
    flags: { gewalt: false, gang: false, verstorben: false },
    status: 'STABIL', letzte: '21.05.2026', hausarzt: '[MD-14] Moe Black',
    behandlungen: [
      {
        id: '22448-44', ersteller: 'MD-Personalleitung', erstellt: '21.05.2024 00:02', abgeschlossen: true,
        verlauf: 'Akte von [MD-14] Moe Black\nVerkehrsunfall\nQuetschung am Fuß (links)\nMedikamente: 2× Ibu (400)', datum: '21.05.24',
        intensitaet: 'Leicht', blutung: 'Keine', vorgenommen: 'Kühlung, Verband, Schmerzmittel verabreicht.',
        verletzungen: { ...leerVerletzungen(), unterkoerper: { ...leerVerletzungen().unterkoerper, fussLinks: 'Quetschung am Fuß' } },
      },
    ],
  },
  {
    id: 'AKTE-1051', name: 'Yusuf Demir', geschlecht: 'M', gebdatum: '27.07.1995',
    tel: '555-0211', adresse: 'Strawberry Ave 14',
    notfallkontakte: [{ name: 'Leyla Demir', nr: '555-0212' }],
    blutgruppe: 'B+', allergien: 'Keine bekannt', vorerkrankungen: 'Diabetes Typ 1', groesse: 178, gewicht: 76,
    sonstiges: 'Insulinpflichtig. Notfallausweis vorhanden.',
    flags: { gewalt: false, gang: true, verstorben: false },
    status: 'KRITISCH', letzte: '02.06.2026', hausarzt: 'Dr. Samuel Okonkwo',
    behandlungen: [
      {
        id: '23110-09', ersteller: 'Dr. S. Okonkwo', erstellt: '02.06.2026 14:02', abgeschlossen: false,
        verlauf: 'Schussverletzung Unterbauch nach Auseinandersetzung. Notoperation eingeleitet, Kreislauf instabil, Intensivüberwachung.', datum: '02.06.26',
        intensitaet: 'Schwer', blutung: 'Stark / arteriell', vorgenommen: 'Notoperation, Bluttransfusion (2 Konserven), Intensivpflege.',
        verletzungen: { ...leerVerletzungen(), unterkoerper: { ...leerVerletzungen().unterkoerper, bauch: 'Schussverletzung, OP' } },
      },
    ],
  },
  {
    id: 'AKTE-1039', name: 'Grace Albright', geschlecht: 'W', gebdatum: '02.11.1988',
    tel: '555-0188', adresse: 'Mirror Park Blvd 7',
    notfallkontakte: [{ name: 'Iris Novak', nr: '555-0099' }, { name: 'Tom Albright', nr: '555-0190' }],
    blutgruppe: 'A−', allergien: 'Hausstaub, Nüsse', vorerkrankungen: 'Asthma bronchiale, Migräne', groesse: 168, gewicht: 63,
    sonstiges: 'Salbutamol-Spray immer dabei.',
    flags: { gewalt: false, gang: false, verstorben: false },
    status: 'BEHANDLUNG', letzte: '01.06.2026', hausarzt: 'Dr. Lena Fischer',
    behandlungen: [
      {
        id: '23098-02', ersteller: 'Dr. L. Fischer', erstellt: '01.06.2026 16:40', abgeschlossen: true,
        verlauf: 'Akuter Asthmaanfall. Sauerstoffgabe und Inhalation, stabilisiert. Beobachtung 24h empfohlen.', datum: '01.06.26',
        intensitaet: 'Mittel', blutung: 'Keine', vorgenommen: 'O₂-Gabe, Inhalation Salbutamol, Monitoring.',
        verletzungen: leerVerletzungen(),
      },
    ],
  },
  {
    id: 'AKTE-0998', name: 'Iris Novak', geschlecht: 'W', gebdatum: '19.05.1979',
    tel: '555-0099', adresse: 'Del Perro Heights 12',
    notfallkontakte: [{ name: 'Grace Albright', nr: '555-0188' }],
    blutgruppe: 'AB+', allergien: 'Latex', vorerkrankungen: 'Speichenfraktur (verheilt)', groesse: 172, gewicht: 68,
    sonstiges: '',
    flags: { gewalt: false, gang: false, verstorben: false },
    status: 'ENTLASSEN', letzte: '20.05.2026', hausarzt: 'Dr. Hannah Berg',
    behandlungen: [
      {
        id: '22901-77', ersteller: 'Dr. H. Berg', erstellt: '06.05.2026 11:20', abgeschlossen: true,
        verlauf: 'Speichenfraktur links nach Verkehrsunfall. Reposition und Gipsversorgung. Gips am 20.05. entfernt, Beweglichkeit wiederhergestellt.', datum: '06.05.26',
        intensitaet: 'Mittel', blutung: 'Gering', vorgenommen: 'Reposition, Gips, Kontrolle, Entlassung.',
        verletzungen: { ...leerVerletzungen(), oberkoerper: { ...leerVerletzungen().oberkoerper, armLinks: 'Speichenfraktur' } },
      },
    ],
  },
  {
    id: 'AKTE-1033', name: 'Kingsley Obi', geschlecht: 'M', gebdatum: '30.12.1983',
    tel: '555-0455', adresse: 'Davis Avenue 3',
    notfallkontakte: [{ name: 'Ada Obi', nr: '555-0456' }],
    blutgruppe: 'A+', allergien: 'Keine bekannt', vorerkrankungen: 'Chronische Rückenschmerzen', groesse: 190, gewicht: 95,
    sonstiges: 'Physiotherapie laufend.',
    flags: { gewalt: false, gang: false, verstorben: false },
    status: 'STABIL', letzte: '15.05.2026', hausarzt: 'Dr. Paul Henning',
    behandlungen: [
      {
        id: '22844-31', ersteller: 'Dr. P. Henning', erstellt: '15.05.2026 09:30', abgeschlossen: true,
        verlauf: 'Kontrolle Lendenwirbelsäule. Empfehlung: Physiotherapie fortführen.', datum: '15.05.26',
        intensitaet: 'Leicht', blutung: 'Keine', vorgenommen: 'Untersuchung, Beratung.',
        verletzungen: leerVerletzungen(),
      },
    ],
  },
];
const ENTRY_DEFAULT = () => ({
  id: '', ersteller: 'Dr. M. Vance', erstellt: '', abgeschlossen: false,
  verlauf: '', datum: '', intensitaet: '', blutung: '', vorgenommen: '',
  verletzungen: leerVerletzungen(),
});
const BLOOD_TYPES = ['', '0+', '0−', 'A+', 'A−', 'B+', 'B−', 'AB+', 'AB−'];
const INTENSITAET_OPT = ['', 'Leicht', 'Mittel', 'Schwer', 'Lebensbedrohlich'];
const BLUTUNG_OPT = ['', 'Keine', 'Gering', 'Mittel', 'Stark / arteriell'];

// ---- Discord-Rollen & Rechte (Admin) ----
const DISCORD_ROLES = [
  { id: 'leitung',   name: 'Leitung',            color: '#FF4F6C', members: 2 },
  { id: 'chefarzt',  name: 'Chefärzte',          color: '#F59E0B', members: 3 },
  { id: 'arzt',      name: 'Ärzte',              color: '#3B82F6', members: 12 },
  { id: 'sani',      name: 'Sanitäter',          color: '#14B8A6', members: 18 },
  { id: 'azubi',     name: 'Auszubildende',      color: '#A78BFA', members: 6 },
];

const PERMISSION_GROUPS = [
  { group: 'Personal', perms: [
    { id: 'p_view',   label: 'Mitarbeiter ansehen' },
    { id: 'p_edit',   label: 'Mitarbeiter bearbeiten' },
    { id: 'p_create', label: 'Mitarbeiter anlegen' },
    { id: 'p_fire',   label: 'Mitarbeiter entlassen' },
  ]},
  { group: 'Aktensystem', perms: [
    { id: 'a_view',   label: 'Akten einsehen' },
    { id: 'a_create', label: 'Akten anlegen' },
    { id: 'a_edit',   label: 'Akten bearbeiten' },
    { id: 'a_delete', label: 'Akten löschen' },
  ]},
  { group: 'Verwaltung', perms: [
    { id: 'v_insure', label: 'Versicherungen verwalten' },
    { id: 'v_bonus',  label: 'Bonus auszahlen' },
    { id: 'v_leave',  label: 'Urlaub genehmigen' },
    { id: 'v_admin',  label: 'Admin-Bereich' },
  ]},
];

// Matrix: roleId -> { permId: bool }
const DEFAULT_PERMISSIONS = {
  leitung:  { p_view:1,p_edit:1,p_create:1,p_fire:1, a_view:1,a_create:1,a_edit:1,a_delete:1, v_insure:1,v_bonus:1,v_leave:1,v_admin:1 },
  chefarzt: { p_view:1,p_edit:1,p_create:1,p_fire:0, a_view:1,a_create:1,a_edit:1,a_delete:0, v_insure:1,v_bonus:1,v_leave:1,v_admin:0 },
  arzt:     { p_view:1,p_edit:0,p_create:0,p_fire:0, a_view:1,a_create:1,a_edit:1,a_delete:0, v_insure:1,v_bonus:0,v_leave:0,v_admin:0 },
  sani:     { p_view:1,p_edit:0,p_create:0,p_fire:0, a_view:1,a_create:1,a_edit:0,a_delete:0, v_insure:0,v_bonus:0,v_leave:0,v_admin:0 },
  azubi:    { p_view:1,p_edit:0,p_create:0,p_fire:0, a_view:1,a_create:0,a_edit:0,a_delete:0, v_insure:0,v_bonus:0,v_leave:0,v_admin:0 },
};

// ---- Sonderrechte / Schlüssel (Mitarbeiter) ----
const SPECIAL_RIGHTS = [
  { id: 'leitstelle', label: 'Leitstellen-Zugang',   icon: 'RadioTower' },
  { id: 'fuhrpark',   label: 'Fuhrpark-Schlüssel',   icon: 'KeyRound' },
  { id: 'medikament', label: 'Medikamenten-Ausgabe',  icon: 'Pill' },
  { id: 'dnalabor',   label: 'DNA-Labor',             icon: 'TestTube' },
  { id: 'tresor',     label: 'Tresor-Zugang',         icon: 'Vault' },
  { id: 'adminpanel', label: 'Admin-Panel',           icon: 'ShieldAlert' },
  { id: 'aktenedit',  label: 'Akten bearbeiten',      icon: 'FilePen' },
  { id: 'heli',       label: 'Helikopter-Freigabe',   icon: 'Plane' },
];
// default rights per member id
const MEMBER_RIGHTS = {
  1: ['leitstelle','fuhrpark','medikament','dnalabor','tresor','adminpanel','aktenedit','heli'],
  2: ['leitstelle','fuhrpark','medikament','dnalabor','adminpanel','aktenedit','heli'],
  3: ['leitstelle','fuhrpark','medikament','aktenedit'],
  4: ['fuhrpark','medikament','aktenedit'],
  6: ['fuhrpark','medikament','heli'],
  7: ['fuhrpark'],
  8: ['fuhrpark','heli'],
};

// ---- Logbuch ----
const LOGBOOK = [
  { ts: '02.06.2026 14:32', user: 'Dr. M. Vance',   action: 'Akte AKTE-1051 (Yusuf Demir) als KRITISCH markiert', type: 'Akte' },
  { ts: '02.06.2026 13:58', user: 'Dr. S. Okonkwo', action: 'Notfall-Eintrag zu AKTE-1051 erstellt',                type: 'Akte' },
  { ts: '02.06.2026 11:14', user: 'Dr. M. Vance',   action: 'Rechte der Rolle „Ärzte" angepasst',                  type: 'Admin' },
  { ts: '01.06.2026 22:07', user: 'J. Weiß',        action: 'Dienst beendet — 6h 12m',                              type: 'Dienst' },
  { ts: '01.06.2026 16:40', user: 'Dr. L. Fischer', action: 'Behandlung zu AKTE-1039 (Grace Albright) erfasst',     type: 'Akte' },
  { ts: '01.06.2026 09:21', user: 'Dr. E. Cross',   action: 'Versicherung V-2041 (Familie Delgado) verlängert',     type: 'Versicherung' },
  { ts: '31.05.2026 18:55', user: 'C. Mendes',      action: 'Bonus i.H.v. $1.200 an T. Brandt ausgezahlt',          type: 'Bonus' },
  { ts: '31.05.2026 12:03', user: 'Dr. M. Vance',   action: 'Mitarbeiter „Sophie Lang" angelegt (LSMD-041)',        type: 'Personal' },
  { ts: '30.05.2026 20:18', user: 'M. Aydın',       action: 'DNA-Test DNA-0042 abgeschlossen',                      type: 'DNA' },
];
const LOG_TYPES = { Akte:'#3B82F6', Admin:'#CC2233', Dienst:'#22C55E', Versicherung:'#0EA5E9', Bonus:'#F59E0B', Personal:'#A78BFA', DNA:'#14B8A6' };

// ---- DNA-Tests ----
const DNA_TESTS = [
  { id: 'DNA-0042', proband: 'Unbekannt (Tatort Vinewood)', match: 'Yusuf Demir', conf: 99.2, status: 'Treffer', date: '30.05.2026', by: 'M. Aydın' },
  { id: 'DNA-0041', proband: 'Blutprobe Sandy Shores',      match: 'Kein Treffer', conf: 0,    status: 'Offen',   date: '28.05.2026', by: 'Dr. L. Fischer' },
  { id: 'DNA-0040', proband: 'Speichelprobe Legion Square', match: 'Grace Albright', conf: 97.8, status: 'Treffer', date: '24.05.2026', by: 'Dr. H. Berg' },
  { id: 'DNA-0039', proband: 'Haarprobe Paleto Bay',        match: 'In Bearbeitung', conf: 0,   status: 'Analyse', date: '22.05.2026', by: 'M. Aydın' },
];

// ---- Wiki ----
const WIKI = [
  { cat: 'Erste Schritte', icon: 'Flag', articles: ['Onboarding für neue Sanitäter', 'Funkcodes & 10-Codes', 'Dienstkleidung & Ausrüstung', 'Verhalten im Einsatz'] },
  { cat: 'Medizin',        icon: 'HeartPulse', articles: ['Reanimation (CPR) — Ablauf', 'Triage-System erklärt', 'Medikamenten-Übersicht', 'Schussverletzungen versorgen'] },
  { cat: 'Fuhrpark',       icon: 'Ambulance', articles: ['RTW — Funktionen', 'Notarzt-Einsatzfahrzeug', 'Rettungshelikopter „Air-1"', 'Fahrzeug-Anforderung'] },
  { cat: 'Verwaltung',     icon: 'FileText', articles: ['Aktensystem (MedicNet) Anleitung', 'Versicherungen ausstellen', 'Dienstzeiten erfassen', 'Beförderungsrichtlinien'] },
];

// ---- Abteilungen ----
const DEPT_DETAIL = [
  { name: 'Notaufnahme',    lead: 'Dr. Tobias Reyes',   members: 11, color: '#CC2233', desc: 'Erstversorgung und stationäre Akutbehandlung im Pillbox Hill Medical Center.' },
  { name: 'Rettungsdienst', lead: 'Dr. Lena Fischer',   members: 14, color: '#0EA5E9', desc: 'Notfallrettung, RTW- und Helikopter-Einsätze im gesamten Stadtgebiet.' },
  { name: 'Chirurgie',      lead: 'Dr. Elena Cross',    members: 7,  color: '#F59E0B', desc: 'Operative Eingriffe, Traumaversorgung und Nachsorge.' },
  { name: 'Verwaltung',     lead: 'Dr. Marcus Vance',   members: 4,  color: '#A78BFA', desc: 'Personal, Finanzen, Versicherungen und behördliche Koordination.' },
  { name: 'Ausbildung',     lead: 'Dr. Hannah Berg',    members: 5,  color: '#22C55E', desc: 'Schulung von Praktikanten und Sanitätern, Zertifizierungen.' },
];

// ---- Urlaub / Abwesenheit ----
const LEAVES = [
  { name: 'Dr. Paul Henning', dn: 'LSMD-029', from: '18.05.2026', to: '08.06.2026', type: 'Urlaub',       status: 'Genehmigt' },
  { name: 'Dr. Samuel Okonkwo',dn: 'LSMD-014', from: '02.06.2026', to: '09.06.2026', type: 'Krankheit',    status: 'Genehmigt' },
  { name: 'Mira Aydın',       dn: 'LSMD-025', from: '10.06.2026', to: '17.06.2026', type: 'Urlaub',       status: 'Offen' },
  { name: 'Tim Brandt',       dn: 'LSMD-037', from: '05.06.2026', to: '06.06.2026', type: 'Sonderurlaub', status: 'Offen' },
  { name: 'Carla Mendes',     dn: 'LSMD-033', from: '20.06.2026', to: '04.07.2026', type: 'Urlaub',       status: 'Offen' },
];

// ---- Bonus ----
const BONUSES = [
  { name: 'Tim Brandt',     dn: 'LSMD-037', amount: 1200, reason: 'Vorbildlicher Einsatz Großschadenslage', date: '31.05.2026', status: 'Ausgezahlt' },
  { name: 'Jonas Weiß',     dn: 'LSMD-022', amount: 800,  reason: 'Überstunden Mai',                        date: '30.05.2026', status: 'Ausgezahlt' },
  { name: 'Nadia Khan',     dn: 'LSMD-044', amount: 500,  reason: 'Bestandene Facharzt-Prüfung',            date: '02.06.2026', status: 'Offen' },
  { name: 'Carla Mendes',   dn: 'LSMD-033', amount: 650,  reason: 'Ausbildung neuer Praktikanten',          date: '02.06.2026', status: 'Offen' },
];

// ---- Dienstzeiten (offene Freigaben) ----
const SHIFTS = [
  { name: 'Jonas Weiß',     dn: 'LSMD-022', date: '01.06.2026', start: '15:48', end: '22:00', dur: '6h 12m', status: 'Freigabe' },
  { name: 'Mira Aydın',     dn: 'LSMD-025', date: '01.06.2026', start: '14:02', end: '20:30', dur: '6h 28m', status: 'Freigabe' },
  { name: 'Nadia Khan',     dn: 'LSMD-044', date: '31.05.2026', start: '09:10', end: '17:40', dur: '8h 30m', status: 'Bestätigt' },
  { name: 'Tim Brandt',     dn: 'LSMD-037', date: '31.05.2026', start: '18:00', end: '23:15', dur: '5h 15m', status: 'Freigabe' },
];

// ---- Boards & Teams ----
const BOARDS = [
  { name: 'Leitungsboard',     color: '#FF4F6C', count: 5,  desc: 'Strategie, Personalentscheidungen, Budget' },
  { name: 'Einsatzleitung',    color: '#CC2233', count: 8,  desc: 'Schichtplanung & Großschadenslagen' },
  { name: 'Ausbildungsteam',   color: '#22C55E', count: 6,  desc: 'Schulungen, Prüfungen, Zertifikate' },
  { name: 'QM & Dokumentation',color: '#0EA5E9', count: 4,  desc: 'Qualitätssicherung, Aktenpflege' },
];

Object.assign(window, {
  PATIENT_STATUS, PATIENT_FLAGS, KOERPER_TEILE, leerVerletzungen, ENTRY_DEFAULT,
  PATIENTS, BLOOD_TYPES, INTENSITAET_OPT, BLUTUNG_OPT,
  DISCORD_ROLES, PERMISSION_GROUPS, DEFAULT_PERMISSIONS, SPECIAL_RIGHTS, MEMBER_RIGHTS,
  LOGBOOK, LOG_TYPES, DNA_TESTS, WIKI, DEPT_DETAIL, LEAVES, BONUSES, SHIFTS, BOARDS,
});
