update kpi mortality card to change color based on the status
This commit is contained in:
1 parent
cceaf38a25
commit
3fdd9b936f
3 files changed
+105
-1
No files matched your search
@@ -0,0 +1,49 @@
|
||||
import type { KpiStatus } from '../components/KpiCard.tsx';
|
||||
|
||||
/**
|
||||
* Daily mortality % of DOC thresholds (manager operational rules):
|
||||
* - <= 0.05%: Normal / OK (green)
|
||||
* - > 0.05% and < 0.10%: Warning (yellow)
|
||||
* - >= 0.10%: Critical (red)
|
||||
*/
|
||||
export const DAILY_MORTALITY_DOC_THRESHOLDS = {
|
||||
warning_pct: 0.05,
|
||||
critical_pct: 0.1,
|
||||
} as const;
|
||||
|
||||
/**
|
||||
* Calculates daily mortality percentage relative to initial DOC count.
|
||||
*/
|
||||
export function getDailyMortalityPct(
|
||||
mortalityToday: number | null | undefined,
|
||||
docInCount: number | null | undefined
|
||||
): number | null {
|
||||
if (mortalityToday == null || docInCount == null || docInCount <= 0) {
|
||||
return null;
|
||||
}
|
||||
return (mortalityToday / docInCount) * 100;
|
||||
}
|
||||
|
||||
/**
|
||||
* Evaluates the KPI status for daily mortality based on DOC thresholds.
|
||||
* - 'na' when data is unavailable
|
||||
* - 'critical' when daily mortality >= 0.10%
|
||||
* - 'warning' when daily mortality > 0.05%
|
||||
* - 'ok' when daily mortality <= 0.05%
|
||||
*/
|
||||
export function getDailyMortalityStatus(
|
||||
mortalityToday: number | null | undefined,
|
||||
docInCount: number | null | undefined
|
||||
): KpiStatus {
|
||||
if (mortalityToday == null) return 'na';
|
||||
if (docInCount == null || docInCount <= 0) return 'ok';
|
||||
|
||||
const dailyPct = (mortalityToday / docInCount) * 100;
|
||||
if (dailyPct >= DAILY_MORTALITY_DOC_THRESHOLDS.critical_pct) {
|
||||
return 'critical';
|
||||
}
|
||||
if (dailyPct > DAILY_MORTALITY_DOC_THRESHOLDS.warning_pct) {
|
||||
return 'warning';
|
||||
}
|
||||
return 'ok';
|
||||
}
|
||||
Reference in new issue
Block a user