Files
MindScope/components/questionnaire/test/private/AttachmentCalculator.tsx
T
2026-06-22 22:59:01 +02:00

41 lines
1.0 KiB
TypeScript

const avoidanceItems = [1, 2, 3, 4, 5, 6];
const anxietyItems = [7, 8, 9];
const reverseAvoidanceItems = new Set([1, 2, 3, 4]);
function scoreItem(answers: string[], item: number) {
const raw = Number(answers[item - 1] || 1);
return reverseAvoidanceItems.has(item) ? 8 - raw : raw;
}
function average(values: number[]) {
return values.reduce((sum, value) => sum + value, 0) / values.length;
}
export function calculateAttachmentResults(answers: string[]) {
const avoidance = average(avoidanceItems.map((item) => scoreItem(answers, item)));
const anxiety = average(anxietyItems.map((item) => Number(answers[item - 1] || 1)));
let pattern:
| 'secure'
| 'preoccupied'
| 'dismissive'
| 'fearful' = 'secure';
const highAvoidance = avoidance >= 4;
const highAnxiety = anxiety >= 4;
if (highAvoidance && highAnxiety) {
pattern = 'fearful';
} else if (highAvoidance) {
pattern = 'dismissive';
} else if (highAnxiety) {
pattern = 'preoccupied';
}
return {
avoidance,
anxiety,
pattern,
};
}