// Mock CPT data + state used by all CPT-lookup variants.
// Profile and locality reuse window.MOCK from dashboard-data.jsx — we just
// add CPT-specific data here (codes, categories, recent/favorite/popular).

const CPT = {
  // Realistic mock CPT slice — heavy on E/M because that's what this user logs.
  codes: [
    // E/M – office, established
    { code: '99211', desc: 'Office visit, established, minimal',                              rvu: 0.18, cat: 'E/M' },
    { code: '99212', desc: 'Office visit, established, straightforward',                      rvu: 0.93, cat: 'E/M' },
    { code: '99213', desc: 'Office visit, established patient, low complexity',               rvu: 1.30, cat: 'E/M' },
    { code: '99214', desc: 'Office visit, established patient, moderate complexity',          rvu: 1.92, cat: 'E/M' },
    { code: '99215', desc: 'Office visit, established patient, high complexity',              rvu: 2.80, cat: 'E/M' },
    // E/M – office, new
    { code: '99202', desc: 'Office visit, new patient, straightforward decision making',      rvu: 0.93, cat: 'E/M' },
    { code: '99203', desc: 'Office visit, new patient, low complexity',                       rvu: 1.60, cat: 'E/M' },
    { code: '99204', desc: 'Office visit, new patient, moderate complexity',                  rvu: 2.60, cat: 'E/M' },
    { code: '99205', desc: 'Office visit, new patient, high complexity',                      rvu: 3.50, cat: 'E/M' },
    // E/M – preventive / wellness
    { code: 'G0438', desc: 'Annual wellness visit, initial',                                  rvu: 2.43, cat: 'E/M · Preventive' },
    { code: 'G0439', desc: 'Annual wellness visit, subsequent',                               rvu: 1.50, cat: 'E/M · Preventive' },
    { code: '99497', desc: 'Advance care planning, first 30 minutes',                         rvu: 1.50, cat: 'E/M · Preventive' },
    // Procedures – common in primary care
    { code: '17110', desc: 'Destruction of benign lesions, up to 14 lesions',                 rvu: 0.70, cat: 'Procedure' },
    { code: '11200', desc: 'Removal of skin tags, up to 15 lesions',                          rvu: 0.80, cat: 'Procedure' },
    { code: '69210', desc: 'Cerumen removal, unilateral, requiring instrumentation',          rvu: 0.61, cat: 'Procedure' },
    { code: '20610', desc: 'Arthrocentesis, major joint (knee, shoulder, hip)',               rvu: 0.94, cat: 'Procedure' },
    // Hospital / Inpatient
    { code: '99232', desc: 'Subsequent hospital care, 25 minutes, moderate complexity',       rvu: 1.59, cat: 'Hospital' },
    { code: '99233', desc: 'Subsequent hospital care, 35 minutes, high complexity',           rvu: 2.40, cat: 'Hospital' },
    { code: '99239', desc: 'Hospital discharge management, more than 30 minutes',             rvu: 1.90, cat: 'Hospital' },
    // Telehealth
    { code: '99421', desc: 'Online digital E/M, 5–10 minutes',                                rvu: 0.25, cat: 'Telehealth' },
    { code: '99422', desc: 'Online digital E/M, 11–20 minutes',                               rvu: 0.50, cat: 'Telehealth' },
    { code: '99423', desc: 'Online digital E/M, 21+ minutes',                                 rvu: 0.80, cat: 'Telehealth' },
  ],

  // What the user types into the search bar for the "results" state
  sampleQuery: '992',

  // Top results when sampleQuery is typed
  sampleResults: ['99213', '99214', '99215', '99212', '99211', '99232', '99233', '99202', '99203', '99204', '99205', '99239'],

  // Codes recently logged by this user (most recent first)
  recent: ['99214', '99204', '99215', '99213', 'G0438'],

  // Codes the user starred
  favorites: ['99214', '99213', '99215', '99204', '99205', '20610'],

  // Categories with code counts (for browse-by-category)
  categories: [
    { id: 'em-office',     label: 'Office E/M',     count: 10, color: '#1E4080' },
    { id: 'em-prev',       label: 'Preventive',     count:  6, color: '#0E9C8A' },
    { id: 'procedure',     label: 'Procedures',     count: 28, color: '#2D5DA6' },
    { id: 'hospital',      label: 'Hospital',       count: 14, color: '#3DCFBD' },
    { id: 'telehealth',    label: 'Telehealth',     count:  7, color: '#A8EDE6' },
    { id: 'anesthesia',    label: 'Anesthesia',     count:  9, color: '#9CA3AF' },
  ],

  // Selection for the modal sheet preview
  modalSelected: '99214',
  modalQty: 3,
  modalDate: 'Thu, May 22',
};

// Look up a single code by id
CPT.byCode = (code) => CPT.codes.find(c => c.code === code);

// Apply GPCI to a base wRVU
CPT.adjusted = (rvu) => rvu * 1.097;

Object.assign(window, { CPT });
