Files
2026-06-22 22:59:01 +02:00

49 lines
1.5 KiB
TypeScript

import { QuestionType } from "@/types";
interface ISICalculatorProps {
answers: { [key: number]: string };
questions: QuestionType[];
}
export const calculateISIResults = ({ answers }: ISICalculatorProps): any => {
// ISI calculation logic
let totalScore = 0;
// Calculate total score (simple sum)
Object.entries(answers).forEach(([, score]) => {
const scoreValue = parseInt(score);
totalScore += scoreValue;
});
// Determine insomnia severity level
let severity = "no_insomnia";
if (totalScore >= 22) {
severity = "severe";
} else if (totalScore >= 15) {
severity = "moderate";
} else if (totalScore >= 8) {
severity = "subthreshold";
}
// Analyze item scores
const itemAnalysis = Object.entries(answers).map(([questionId, score]) => ({
questionId: parseInt(questionId),
score: parseInt(score),
isHigh: parseInt(score) >= 3 // Scores of 3 or above are considered high score items
}));
const highScoreItems = itemAnalysis.filter(item => item.isHigh);
return {
totalScore,
severity,
itemAnalysis,
highScoreItemCount: highScoreItems.length,
factorScores: {},
positiveItemCount: highScoreItems.length,
positiveItemAverage: highScoreItems.length > 0
? highScoreItems.reduce((sum, item) => sum + item.score, 0) / highScoreItems.length
: 0,
isSevere: severity === "severe" || severity === "moderate"
};
};