/** * The confidence bands, and the exact colours the workbook paints. * * These hexes are not a design choice made here — they are the same values * patient_extractor_v2.py fills cells with. A reviewer moves between the sheet * and this dashboard looking at the same field; if the two disagreed about what * red looks like, the colour would stop being a shared language. * * GREEN B6E2B6 green channel high * AMBER F4E2B6 red + green high <- sits visually between the other two * RED F4B6B6 red channel high */ export const BAND_COLOR = { green: '#B6E2B6', amber: '#F4E2B6', red: '#F4B6B6', blank: '#FFFFFF', unscored: '#FFFFFF', } as const /** Border, so a white "blank" cell is still visibly a cell. */ export const BAND_BORDER = { green: '#9AC79A', amber: '#D9C79A', red: '#D99A9A', blank: '#D0D0D0', unscored: '#D0D0D0', } as const export const BAND_LABEL = { green: 'Clean print', amber: 'Slightly unclear', red: 'Handwritten / messy', blank: 'Billing code missing', unscored: 'Not found in transcription', } as const /** * What the colour does NOT say. Kept next to the palette on purpose: the score * rates how legibly the text was printed, not whether the value is right. A * confident misread comes back green — measured on this document set, "J27.20" * scored 0.9 while the correct "I27.20" sat on the same page. */ export const BAND_CAVEAT = 'Colour reflects print clarity, not correctness. A cleanly printed value can still be misread.' export type Band = keyof typeof BAND_COLOR /** * The band as a THEME TOKEN, for anything drawn in the interface rather than on * the scan: status pills, the 3px grade rule down a field input, legend * swatches, donut segments, quality meters. * * These reference the CSS variables rather than carrying hexes, so a band * follows the appearance the same way every other surface does, and so the * grading triple is declared in exactly one place (index.css). * * `blank` and `unscored` collapse to the same grey: nothing was read, so there * is no print clarity to grade, and inventing a fourth hue for "no data" would * put a colour on the legend that means nothing a reviewer can act on. * * BAND_COLOR / BAND_BORDER above are NOT replaced by this and are still the * right choice in one place: the highlight chips drawn over the scanned page * itself. Those sit on the document, mirror what the workbook fills, and are * the shared language between the sheet and this dashboard — interface tokens * would break that and would be unreadable on a white scan besides. */ export const BAND_VAR = { green: 'var(--clean)', amber: 'var(--verify)', red: 'var(--review)', blank: 'var(--absent)', unscored: 'var(--absent)', } as const