Files

76 lines
3.0 KiB
TypeScript

/* EXAMPLE ONLY: an extract from the Superbill Review prototype, kept as reference for porting. ECW/eClinicalWorks, Tebra, 'Example Client', SPB_* tables and patient/ticket wording are that project's examples. Don't copy them into a new project. */
/**
* 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