/* BridgeWell Calculator — useScreeningCalculator hook.
   Direct port of src/hooks/useScreeningCalculator.ts. */

const { useMemo } = React;

const MINUTES_PER_SCREENING = 10.6;
const DEPRESSION_RATE = 0.25;
const ANXIETY_RATE = 0.30;
const CRISIS_RATE = 0.10;
const CRISIS_FOLLOWUP_HOURS = 1;
const DEPRESSION_FOLLOWUP_MINUTES = 10;
const REIMBURSEMENT_RATE = 35.0;
const LABOR_RATE = 30.0;

function useScreeningCalculator(inputs) {
  return useMemo(() => {
    const { studentPopulation, screeningsPerYear, insuranceCoverage } = inputs;

    const totalScreenings = studentPopulation * screeningsPerYear;

    const totalScreeningMinutes = totalScreenings * MINUTES_PER_SCREENING;
    const totalScreeningHours = totalScreeningMinutes / 60;

    const depressionRisk = Math.round(studentPopulation * DEPRESSION_RATE);
    const anxietyRisk = Math.round(studentPopulation * ANXIETY_RATE);
    const crisisRisk = Math.round(studentPopulation * CRISIS_RATE);
    const crisisFollowUpHours = (
      (crisisRisk * CRISIS_FOLLOWUP_HOURS) +
      (depressionRisk * DEPRESSION_FOLLOWUP_MINUTES / 60)
    ) * screeningsPerYear;

    const insuredStudents = totalScreenings * (insuranceCoverage / 100);
    const grossRevenue = insuredStudents * REIMBURSEMENT_RATE;
    const totalLaborHours = totalScreeningHours + crisisFollowUpHours;
    const laborCost = totalLaborHours * LABOR_RATE;
    const netValue = grossRevenue - laborCost;

    return {
      totalScreeningMinutes,
      totalScreeningHours,
      screeningsPerYear,
      depressionRisk,
      anxietyRisk,
      crisisRisk,
      crisisFollowUpHours,
      grossRevenue,
      laborCost,
      netValue,
      isNetPositive: netValue >= 0,
    };
  }, [inputs]);
}

Object.assign(window, {
  useScreeningCalculator,
  CALC_CONSTANTS: {
    MINUTES_PER_SCREENING,
    DEPRESSION_RATE, ANXIETY_RATE, CRISIS_RATE,
    CRISIS_FOLLOWUP_HOURS, DEPRESSION_FOLLOWUP_MINUTES,
    REIMBURSEMENT_RATE, LABOR_RATE,
  },
});
