import 'cognitive_type.dart'; class AssessmentQuestion { final String id; final String text; final CognitiveArea area; const AssessmentQuestion({ required this.id, required this.text, required this.area, }); } /// 전체 진단 질문 풀 (총 100문항) final List rawAssessmentQuestions = [ // ========================================================= // 1. 기억력 (Memory) - 20문항 // ========================================================= AssessmentQuestion(id: 'm_01', text: '자신의 기억력에 문제가 있다고 생각한다.', area: CognitiveArea.memory), AssessmentQuestion(id: 'm_02', text: '최근 기억력이 10년 전에 비해 현저히 저하되었다.', area: CognitiveArea.memory), AssessmentQuestion(id: 'm_03', text: '같은 또래들에 비해 기억력이 나쁘다고 느낀다.', area: CognitiveArea.memory), AssessmentQuestion(id: 'm_04', text: '기억력 저하로 일상생활(은행, 쇼핑 등)에 불편을 느낀다.', area: CognitiveArea.memory), AssessmentQuestion(id: 'm_05', text: '최근(며칠 전)에 있었던 중요한 일을 자주 잊어버린다.', area: CognitiveArea.memory), AssessmentQuestion(id: 'm_06', text: '며칠 전에 나눈 대화 내용을 기억하기가 어렵다.', area: CognitiveArea.memory), AssessmentQuestion(id: 'm_07', text: '약속 시간이나 장소를 잊어버려 곤란했던 적이 있다.', area: CognitiveArea.memory), AssessmentQuestion(id: 'm_08', text: '자주 만나는 사람의 이름이 바로 떠오르지 않는다.', area: CognitiveArea.memory), AssessmentQuestion(id: 'm_09', text: '물건을 둔 장소를 잊어 한참을 찾은 적이 있다.', area: CognitiveArea.memory), AssessmentQuestion(id: 'm_10', text: '가스불, 전등, 수도꼭지 잠그는 것을 깜빡한다.', area: CognitiveArea.memory), AssessmentQuestion(id: 'm_11', text: '물건을 가지러 방에 들어갔다가 무엇을 하러 왔는지 잊었다.', area: CognitiveArea.memory), AssessmentQuestion(id: 'm_12', text: '자주 사용하는 전화번호(가족, 본인)가 기억나지 않는다.', area: CognitiveArea.memory), AssessmentQuestion(id: 'm_13', text: '같은 질문을 반복해서 한다는 지적을 받은 적이 있다.', area: CognitiveArea.memory), AssessmentQuestion(id: 'm_14', text: '하고 싶은 말이나 단어가 금방 떠오르지 않아 "그거"라고 한다.', area: CognitiveArea.memory), AssessmentQuestion(id: 'm_15', text: '약을 먹었는지 안 먹었는지 기억이 잘 안 난다.', area: CognitiveArea.memory), AssessmentQuestion(id: 'm_16', text: 'TV나 신문에서 본 뉴스의 내용을 나중에 기억하기 힘들다.', area: CognitiveArea.memory), AssessmentQuestion(id: 'm_17', text: '최근에 새로 배운 사용법(기기 조작 등)을 금방 잊어버린다.', area: CognitiveArea.memory), AssessmentQuestion(id: 'm_18', text: '제사나 가족 생일 등 중요한 날짜를 잊어버린다.', area: CognitiveArea.memory), AssessmentQuestion(id: 'm_19', text: '이야기 도중 방금 무슨 이야기를 하고 있었는지 잊을 때가 있다.', area: CognitiveArea.memory), AssessmentQuestion(id: 'm_20', text: '과거의 일을 기억해내는 데 시간이 오래 걸린다.', area: CognitiveArea.memory), // ========================================================= // 2. 시지각 & 소근육 (Perception) - 20문항 (그리기/손기술 강화) // ========================================================= AssessmentQuestion(id: 'p_01', text: '손이 떨려서 글씨를 쓰거나 그림을 그리기 어렵다.', area: CognitiveArea.perception), AssessmentQuestion(id: 'p_02', text: '단추를 채우거나 지퍼를 올리는 등 섬세한 손동작이 힘들다.', area: CognitiveArea.perception), AssessmentQuestion(id: 'p_03', text: '젓가락질이 예전보다 서툴러져 음식을 자주 흘린다.', area: CognitiveArea.perception), AssessmentQuestion(id: 'p_04', text: '바늘에 실을 꿰거나 작은 물건을 집는 것이 어렵다.', area: CognitiveArea.perception), AssessmentQuestion(id: 'p_05', text: '글씨체가 삐뚤빼뚤해지거나 크기가 작아졌다.', area: CognitiveArea.perception), AssessmentQuestion(id: 'p_06', text: '길을 걷다가 문턱이나 계단의 높낮이를 잘못 봐서 걸려 넘어진다.', area: CognitiveArea.perception), AssessmentQuestion(id: 'p_07', text: '오늘이 몇 월, 무슨 요일인지 헷갈릴 때가 있다.', area: CognitiveArea.perception), AssessmentQuestion(id: 'p_08', text: '익숙한 동네나 건물 안에서도 길을 잃은 적이 있다.', area: CognitiveArea.perception), AssessmentQuestion(id: 'p_09', text: '거울에 비친 내 모습이나 가족의 얼굴이 낯설어 보일 때가 있다.', area: CognitiveArea.perception), AssessmentQuestion(id: 'p_10', text: '물건을 잡으려다 거리 조절을 못해 헛손질을 한다.', area: CognitiveArea.perception), AssessmentQuestion(id: 'p_11', text: '비슷하게 생긴 두 물건의 차이점을 찾기가 어렵다.', area: CognitiveArea.perception), AssessmentQuestion(id: 'p_12', text: '옷을 입을 때 안팎이나 앞뒤를 바꿔 입는 실수를 한다.', area: CognitiveArea.perception), AssessmentQuestion(id: 'p_13', text: '운전 중 표지판이나 신호등의 의미가 순간적으로 헷갈린다.', area: CognitiveArea.perception), AssessmentQuestion(id: 'p_14', text: '지도를 보고 목적지를 찾는 것이 예전보다 훨씬 어렵다.', area: CognitiveArea.perception), AssessmentQuestion(id: 'p_15', text: '방향 감각(동서남북, 좌우)이 둔해졌다고 느낀다.', area: CognitiveArea.perception), AssessmentQuestion(id: 'p_16', text: '글자를 읽을 때 줄을 건너뛰거나 순서를 놓친다.', area: CognitiveArea.perception), AssessmentQuestion(id: 'p_17', text: '밤과 낮이 헷갈려 엉뚱한 시간에 일어난 적이 있다.', area: CognitiveArea.perception), AssessmentQuestion(id: 'p_18', text: '물건의 위, 아래, 옆 등의 위치 관계를 설명하기 어렵다.', area: CognitiveArea.perception), AssessmentQuestion(id: 'p_19', text: '익숙한 사람의 얼굴을 보고도 누구인지 바로 못 알아본 적이 있다.', area: CognitiveArea.perception), AssessmentQuestion(id: 'p_20', text: '그림을 그리거나 도형을 따라 그리는 것이 잘 안 된다.', area: CognitiveArea.perception), // ========================================================= // 3. 계산력 & 판단력 (Calculation) - 20문항 // ========================================================= AssessmentQuestion(id: 'c_01', text: '간단한 암산(예: 100 - 7)이 즉시 되지 않는다.', area: CognitiveArea.calculation), AssessmentQuestion(id: 'c_02', text: '마트에서 물건값을 계산하거나 거스름돈을 확인할 때 실수한다.', area: CognitiveArea.calculation), AssessmentQuestion(id: 'c_03', text: '은행 업무(송금, 입출금)를 혼자 처리하기가 부담스럽다.', area: CognitiveArea.calculation), AssessmentQuestion(id: 'c_04', text: '공과금이나 세금 납부 기한을 맞추거나 계산하기 어렵다.', area: CognitiveArea.calculation), AssessmentQuestion(id: 'c_05', text: '가계부 정리나 용돈 관리 등 금전 관리에 실수가 잦아졌다.', area: CognitiveArea.calculation), AssessmentQuestion(id: 'c_06', text: '두 물건의 가격과 양을 비교해 싼 것을 고르기가 어렵다.', area: CognitiveArea.calculation), AssessmentQuestion(id: 'c_07', text: '복잡한 문제나 상황이 닥치면 어떻게 해결할지 판단이 안 선다.', area: CognitiveArea.calculation), AssessmentQuestion(id: 'c_08', text: '요리할 때 양념의 양을 조절하거나 조리 순서를 맞추기 힘들다.', area: CognitiveArea.calculation), AssessmentQuestion(id: 'c_09', text: '남의 말(보이스피싱 등)에 쉽게 속거나 의심 없이 믿게 된다.', area: CognitiveArea.calculation), AssessmentQuestion(id: 'c_10', text: '계획을 세워 일을 처리하는 순서를 정하기가 어렵다.', area: CognitiveArea.calculation), AssessmentQuestion(id: 'c_11', text: '갑작스러운 위기 상황(정전, 고장 등)에 대처하지 못하고 당황한다.', area: CognitiveArea.calculation), AssessmentQuestion(id: 'c_12', text: '물건을 살 때 필요한 것과 불필요한 것을 구별하기 어렵다.', area: CognitiveArea.calculation), AssessmentQuestion(id: 'c_13', text: '이전보다 충동적으로 물건을 사거나 돈을 쓰는 경향이 있다.', area: CognitiveArea.calculation), AssessmentQuestion(id: 'c_14', text: '대화의 숨은 뜻이나 농담을 이해하지 못하고 곧이곧대로 듣는다.', area: CognitiveArea.calculation), AssessmentQuestion(id: 'c_15', text: 'TV 드라마나 영화의 줄거리 흐름을 논리적으로 이해하기 힘들다.', area: CognitiveArea.calculation), AssessmentQuestion(id: 'c_16', text: '식당에서 메뉴를 고르고 주문하는 결정이 예전보다 오래 걸린다.', area: CognitiveArea.calculation), AssessmentQuestion(id: 'c_17', text: '날씨에 맞지 않게 옷을 입거나 상황에 맞지 않는 행동을 한다.', area: CognitiveArea.calculation), AssessmentQuestion(id: 'c_18', text: '사회적 규칙이나 예절을 지키는 것에 대한 판단이 흐려졌다.', area: CognitiveArea.calculation), AssessmentQuestion(id: 'c_19', text: '복잡한 기계(세탁기, 키오스크) 조작 방법을 이해하기 어렵다.', area: CognitiveArea.calculation), AssessmentQuestion(id: 'c_20', text: '숫자 자체를 읽거나 쓰는 것이 헷갈릴 때가 있다.', area: CognitiveArea.calculation), // ========================================================= // 4. 주의력 & 집행기능 (Attention) - 20문항 // ========================================================= AssessmentQuestion(id: 'a_01', text: '대화 중 상대방의 말에 집중하지 못하고 딴생각을 한다.', area: CognitiveArea.attention), AssessmentQuestion(id: 'a_02', text: '두 가지 일(예: TV 보며 대화하기)을 동시에 하기가 매우 힘들다.', area: CognitiveArea.attention), AssessmentQuestion(id: 'a_03', text: '책이나 신문을 읽을 때 집중이 안 되어 같은 줄을 반복해 읽는다.', area: CognitiveArea.attention), AssessmentQuestion(id: 'a_04', text: '주변이 시끄러우면 하던 일에 전혀 집중할 수 없다.', area: CognitiveArea.attention), AssessmentQuestion(id: 'a_05', text: '한 가지 일을 끝까지 마치지 못하고 중간에 그만두는 경우가 많다.', area: CognitiveArea.attention), AssessmentQuestion(id: 'a_06', text: '방 정리 정돈을 하지 못해 집안이 예전보다 어지럽다.', area: CognitiveArea.attention), AssessmentQuestion(id: 'a_07', text: '외출 준비를 하거나 씻는 과정이 귀찮아지고 대충 하게 된다.', area: CognitiveArea.attention), AssessmentQuestion(id: 'a_08', text: '성격이 급해지거나 참을성이 없어 화를 잘 낸다.', area: CognitiveArea.attention), AssessmentQuestion(id: 'a_09', text: '매사에 의욕이 없고 만사가 귀찮게 느껴진다.', area: CognitiveArea.attention), AssessmentQuestion(id: 'a_10', text: '갈수록 말수가 줄어들고 사람들을 만나기 싫어한다.', area: CognitiveArea.attention), AssessmentQuestion(id: 'a_11', text: '늘 하던 일상적인 일(청소, 빨래)의 순서가 헷갈린다.', area: CognitiveArea.attention), AssessmentQuestion(id: 'a_12', text: '복잡한 그림이나 자극을 보면 머리가 멍해진다.', area: CognitiveArea.attention), AssessmentQuestion(id: 'a_13', text: '상대방의 말이 끝나기도 전에 끼어들거나 엉뚱한 대답을 한다.', area: CognitiveArea.attention), AssessmentQuestion(id: 'a_14', text: '편지나 간단한 메모를 쓰려고 해도 문장을 잇기가 어렵다.', area: CognitiveArea.attention), AssessmentQuestion(id: 'a_15', text: '새로운 환경이나 변화에 적응하는 것이 매우 스트레스다.', area: CognitiveArea.attention), AssessmentQuestion(id: 'a_16', text: '냄비가 끓어넘치거나 물이 넘치는 것을 보고도 멍하니 있는다.', area: CognitiveArea.attention), AssessmentQuestion(id: 'a_17', text: '개인 위생(목욕, 양치질)에 소홀해져도 신경 쓰지 않는다.', area: CognitiveArea.attention), AssessmentQuestion(id: 'a_18', text: '다른 사람의 감정을 파악하거나 공감하는 능력이 떨어진 것 같다.', area: CognitiveArea.attention), AssessmentQuestion(id: 'a_19', text: '하루 종일 멍하니 앉아 있거나 잠만 자는 시간이 늘었다.', area: CognitiveArea.attention), AssessmentQuestion(id: 'a_20', text: '물건을 분류하거나 정리하는 작업이 혼란스럽다.', area: CognitiveArea.attention), // ========================================================= // 5. 언어 능력 (Language) - 20문항 (신규) // ========================================================= AssessmentQuestion(id: 'l_01', text: '말을 할 때 적절한 단어가 떠오르지 않아 머뭇거린다.', area: CognitiveArea.language), AssessmentQuestion(id: 'l_02', text: '물건의 이름이 금방 생각나지 않아 "그거"라고 자주 말한다.', area: CognitiveArea.language), AssessmentQuestion(id: 'l_03', text: '책이나 신문을 읽어도 무슨 내용인지 이해가 잘 안 된다.', area: CognitiveArea.language), AssessmentQuestion(id: 'l_04', text: '상대방의 말을 이해하지 못해 엉뚱한 대답을 할 때가 있다.', area: CognitiveArea.language), AssessmentQuestion(id: 'l_05', text: '발음이 어눌해지거나 목소리가 작아졌다는 소리를 듣는다.', area: CognitiveArea.language), AssessmentQuestion(id: 'l_06', text: '글을 쓸 때 맞춤법이 자주 틀리거나 문장 구성이 어렵다.', area: CognitiveArea.language), AssessmentQuestion(id: 'l_07', text: '알고 있던 단어의 뜻이 갑자기 헷갈릴 때가 있다.', area: CognitiveArea.language), AssessmentQuestion(id: 'l_08', text: '긴 문장을 말하거나 이해하는 것이 벅차게 느껴진다.', area: CognitiveArea.language), AssessmentQuestion(id: 'l_09', text: '대화 도중 주제를 자꾸 놓치거나 횡설수설한다.', area: CognitiveArea.language), AssessmentQuestion(id: 'l_10', text: '익숙한 속담이나 관용구의 의미를 이해하지 못한다.', area: CognitiveArea.language), AssessmentQuestion(id: 'l_11', text: '책을 소리 내어 읽을 때 자주 더듬거리거나 틀리게 읽는다.', area: CognitiveArea.language), AssessmentQuestion(id: 'l_12', text: '다른 사람의 이름이나 지명을 부를 때 자꾸 다른 이름을 말한다.', area: CognitiveArea.language), AssessmentQuestion(id: 'l_13', text: '자신의 생각이나 감정을 말로 표현하기가 매우 힘들다.', area: CognitiveArea.language), AssessmentQuestion(id: 'l_14', text: 'TV 자막을 읽는 속도가 느려 내용을 따라가지 못한다.', area: CognitiveArea.language), AssessmentQuestion(id: 'l_15', text: '전화 통화 시 상대방의 말을 잘 알아듣지 못해 되묻는다.', area: CognitiveArea.language), AssessmentQuestion(id: 'l_16', text: '메모를 하려고 해도 글씨를 어떻게 쓰는지 순간 잊어버린다.', area: CognitiveArea.language), AssessmentQuestion(id: 'l_17', text: '비슷한 발음의 단어를 혼동하여 잘못 말하는 경우가 있다.', area: CognitiveArea.language), AssessmentQuestion(id: 'l_18', text: '말수가 급격히 줄어들고 대화를 피하게 된다.', area: CognitiveArea.language), AssessmentQuestion(id: 'l_19', text: '남의 말을 끝까지 듣지 않고 중간에 끊거나 화를 낸다.', area: CognitiveArea.language), AssessmentQuestion(id: 'l_20', text: '과거에 즐겨 읽던 책이나 잡지에 흥미를 잃었다.', area: CognitiveArea.language), ]; class AssessmentRecord { final String id; final DateTime date; final Map scores; // 영역별 획득 점수 AssessmentRecord({ required this.id, required this.date, required this.scores, }); // JSON 직렬화 (Enum인 Key를 String으로 변환) Map toJson() { return { 'id': id, 'date': date.toIso8601String(), // CognitiveArea Enum을 index(숫자 문자열) 또는 name으로 변환하여 저장 'scores': scores.map((key, value) => MapEntry(key.index.toString(), value)), }; } // JSON 역직렬화 factory AssessmentRecord.fromJson(Map json) { // scores 맵 복원 final scoresMap = (json['scores'] as Map).map( (key, value) => MapEntry( CognitiveArea.values[int.parse(key)], // index 문자열을 다시 Enum으로 value as int ), ); return AssessmentRecord( id: json['id'], date: DateTime.parse(json['date']), scores: scoresMap, ); } }