|
|
|
|
@ -1,9 +1,11 @@
|
|
|
|
|
import 'dart:developer';
|
|
|
|
|
|
|
|
|
|
import 'package:hmg_patient_app_new/core/enums.dart';
|
|
|
|
|
import 'package:hmg_patient_app_new/features/symptoms_checker/models/organ_model.dart';
|
|
|
|
|
|
|
|
|
|
class OrganData {
|
|
|
|
|
// ==================== FRONT VIEW ====================
|
|
|
|
|
static const List<OrganModel> frontViewOrgans = [
|
|
|
|
|
static const List<OrganModel> frontViewOrgansForMale = [
|
|
|
|
|
// ========== HEAD & FACE ==========
|
|
|
|
|
OrganModel(
|
|
|
|
|
id: 'head',
|
|
|
|
|
@ -307,9 +309,313 @@ class OrganData {
|
|
|
|
|
position: OrganPosition(x: 0.57, y: 0.91),
|
|
|
|
|
),
|
|
|
|
|
];
|
|
|
|
|
static const List<OrganModel> frontViewOrgansForFemale = [
|
|
|
|
|
// ========== HEAD & FACE ==========
|
|
|
|
|
OrganModel(
|
|
|
|
|
id: 'head',
|
|
|
|
|
name: 'whole_head',
|
|
|
|
|
nameAr: 'الرأس_كامل',
|
|
|
|
|
description: 'Head',
|
|
|
|
|
descriptionAr: 'الرأس',
|
|
|
|
|
bodyView: BodyView.front,
|
|
|
|
|
position: OrganPosition(x: 0.54, y: 0.05),
|
|
|
|
|
),
|
|
|
|
|
OrganModel(
|
|
|
|
|
id: 'left_eye',
|
|
|
|
|
name: 'eyes',
|
|
|
|
|
nameAr: 'العيون',
|
|
|
|
|
description: 'Left Eye',
|
|
|
|
|
descriptionAr: 'العين اليسرى',
|
|
|
|
|
bodyView: BodyView.front,
|
|
|
|
|
position: OrganPosition(x: 0.49, y: 0.095),
|
|
|
|
|
),
|
|
|
|
|
OrganModel(
|
|
|
|
|
id: 'right_eye',
|
|
|
|
|
name: 'eyes',
|
|
|
|
|
nameAr: 'العيون',
|
|
|
|
|
description: 'Right Eye',
|
|
|
|
|
descriptionAr: 'العين اليمنى',
|
|
|
|
|
bodyView: BodyView.front,
|
|
|
|
|
position: OrganPosition(x: 0.6, y: 0.095),
|
|
|
|
|
),
|
|
|
|
|
OrganModel(
|
|
|
|
|
id: 'nose_mouth',
|
|
|
|
|
name: 'oral_cavity',
|
|
|
|
|
nameAr: 'تجويف_الفم',
|
|
|
|
|
description: 'Nose/Mouth',
|
|
|
|
|
descriptionAr: 'الأنف/الفم',
|
|
|
|
|
bodyView: BodyView.front,
|
|
|
|
|
position: OrganPosition(x: 0.54, y: 0.12),
|
|
|
|
|
),
|
|
|
|
|
|
|
|
|
|
// ========== NECK ==========
|
|
|
|
|
OrganModel(
|
|
|
|
|
id: 'throat',
|
|
|
|
|
name: 'neck_or_throat',
|
|
|
|
|
nameAr: 'الرقبة_أو_الحلق',
|
|
|
|
|
description: 'Throat',
|
|
|
|
|
descriptionAr: 'الحلق',
|
|
|
|
|
bodyView: BodyView.front,
|
|
|
|
|
position: OrganPosition(x: 0.54, y: 0.17),
|
|
|
|
|
),
|
|
|
|
|
|
|
|
|
|
// ========== SHOULDERS ==========
|
|
|
|
|
OrganModel(
|
|
|
|
|
id: 'left_shoulder',
|
|
|
|
|
name: 'upper_arm',
|
|
|
|
|
nameAr: 'الذراع_العلوي',
|
|
|
|
|
description: 'Left Shoulder',
|
|
|
|
|
descriptionAr: 'الكتف الأيسر',
|
|
|
|
|
bodyView: BodyView.front,
|
|
|
|
|
position: OrganPosition(x: 0.29, y: 0.22),
|
|
|
|
|
),
|
|
|
|
|
OrganModel(
|
|
|
|
|
id: 'right_shoulder',
|
|
|
|
|
name: 'upper_arm',
|
|
|
|
|
nameAr: 'الذراع_العلوي',
|
|
|
|
|
description: 'Right Shoulder',
|
|
|
|
|
descriptionAr: 'الكتف الأيمن',
|
|
|
|
|
bodyView: BodyView.front,
|
|
|
|
|
position: OrganPosition(x: 0.75, y: 0.22),
|
|
|
|
|
),
|
|
|
|
|
|
|
|
|
|
// ========== CHEST ==========
|
|
|
|
|
OrganModel(
|
|
|
|
|
id: 'left_chest',
|
|
|
|
|
name: 'chest',
|
|
|
|
|
nameAr: 'الصدر',
|
|
|
|
|
description: 'Left Chest',
|
|
|
|
|
descriptionAr: 'الصدر الأيسر',
|
|
|
|
|
bodyView: BodyView.front,
|
|
|
|
|
position: OrganPosition(x: 0.4, y: 0.22),
|
|
|
|
|
),
|
|
|
|
|
OrganModel(
|
|
|
|
|
id: 'center_chest',
|
|
|
|
|
name: 'chest',
|
|
|
|
|
nameAr: 'الصدر',
|
|
|
|
|
description: 'Center Chest',
|
|
|
|
|
descriptionAr: 'وسط الصدر',
|
|
|
|
|
bodyView: BodyView.front,
|
|
|
|
|
position: OrganPosition(x: 0.52, y: 0.25),
|
|
|
|
|
),
|
|
|
|
|
OrganModel(
|
|
|
|
|
id: 'right_chest',
|
|
|
|
|
name: 'chest',
|
|
|
|
|
nameAr: 'الصدر',
|
|
|
|
|
description: 'Right Chest',
|
|
|
|
|
descriptionAr: 'الصدر الأيمن',
|
|
|
|
|
bodyView: BodyView.front,
|
|
|
|
|
position: OrganPosition(x: 0.65, y: 0.22),
|
|
|
|
|
),
|
|
|
|
|
|
|
|
|
|
// ========== RIBS ==========
|
|
|
|
|
OrganModel(
|
|
|
|
|
id: 'left_ribs',
|
|
|
|
|
name: 'chest',
|
|
|
|
|
nameAr: 'الصدر',
|
|
|
|
|
description: 'Left Ribs',
|
|
|
|
|
descriptionAr: 'الأضلاع اليسرى',
|
|
|
|
|
bodyView: BodyView.front,
|
|
|
|
|
position: OrganPosition(x: 0.38, y: 0.35),
|
|
|
|
|
),
|
|
|
|
|
OrganModel(
|
|
|
|
|
id: 'right_ribs',
|
|
|
|
|
name: 'chest',
|
|
|
|
|
nameAr: 'الصدر',
|
|
|
|
|
description: 'Right Ribs',
|
|
|
|
|
descriptionAr: 'الأضلاع اليمنى',
|
|
|
|
|
bodyView: BodyView.front,
|
|
|
|
|
position: OrganPosition(x: 0.64, y: 0.35),
|
|
|
|
|
),
|
|
|
|
|
|
|
|
|
|
// ========== ABDOMEN ==========
|
|
|
|
|
OrganModel(
|
|
|
|
|
id: 'upper_abdomen',
|
|
|
|
|
name: 'upper_abdomen',
|
|
|
|
|
nameAr: 'البطن_العلوي',
|
|
|
|
|
description: 'Upper Abdomen',
|
|
|
|
|
descriptionAr: 'أعلى البطن',
|
|
|
|
|
bodyView: BodyView.front,
|
|
|
|
|
position: OrganPosition(x: 0.51, y: 0.31),
|
|
|
|
|
),
|
|
|
|
|
OrganModel(
|
|
|
|
|
id: 'navel',
|
|
|
|
|
name: 'mid_abdomen',
|
|
|
|
|
nameAr: 'البطن_الأوسط',
|
|
|
|
|
description: 'Navel',
|
|
|
|
|
descriptionAr: 'السرة',
|
|
|
|
|
bodyView: BodyView.front,
|
|
|
|
|
position: OrganPosition(x: 0.51, y: 0.38),
|
|
|
|
|
),
|
|
|
|
|
OrganModel(
|
|
|
|
|
id: 'lower_abdomen',
|
|
|
|
|
name: 'lower_abdomen',
|
|
|
|
|
nameAr: 'البطن_السفلي',
|
|
|
|
|
description: 'Lower Abdomen',
|
|
|
|
|
descriptionAr: 'أسفل البطن',
|
|
|
|
|
bodyView: BodyView.front,
|
|
|
|
|
position: OrganPosition(x: 0.51, y: 0.44),
|
|
|
|
|
),
|
|
|
|
|
|
|
|
|
|
// ========== PELVIS ==========
|
|
|
|
|
OrganModel(
|
|
|
|
|
id: 'left_groin',
|
|
|
|
|
name: 'sexual_organs',
|
|
|
|
|
nameAr: 'الأعضاء_التناسلية',
|
|
|
|
|
description: 'Left Groin',
|
|
|
|
|
descriptionAr: 'الفخذ الأيسر',
|
|
|
|
|
bodyView: BodyView.front,
|
|
|
|
|
position: OrganPosition(x: 0.42, y: 0.49),
|
|
|
|
|
),
|
|
|
|
|
OrganModel(
|
|
|
|
|
id: 'right_groin',
|
|
|
|
|
name: 'sexual_organs',
|
|
|
|
|
nameAr: 'الأعضاء_التناسلية',
|
|
|
|
|
description: 'Right Groin',
|
|
|
|
|
descriptionAr: 'الفخذ الأيمن',
|
|
|
|
|
bodyView: BodyView.front,
|
|
|
|
|
position: OrganPosition(x: 0.59, y: 0.49),
|
|
|
|
|
),
|
|
|
|
|
|
|
|
|
|
// ========== LEFT ARM ==========
|
|
|
|
|
|
|
|
|
|
OrganModel(
|
|
|
|
|
id: 'left_elbow',
|
|
|
|
|
name: 'elbow',
|
|
|
|
|
nameAr: 'الكوع',
|
|
|
|
|
description: 'Left Elbow',
|
|
|
|
|
descriptionAr: 'الكوع الأيسر',
|
|
|
|
|
bodyView: BodyView.front,
|
|
|
|
|
position: OrganPosition(x: 0.24, y: 0.35),
|
|
|
|
|
),
|
|
|
|
|
OrganModel(
|
|
|
|
|
id: 'left_forearm',
|
|
|
|
|
name: 'forearm',
|
|
|
|
|
nameAr: 'الساعد',
|
|
|
|
|
description: 'Left Forearm',
|
|
|
|
|
descriptionAr: 'الساعد الأيسر',
|
|
|
|
|
bodyView: BodyView.front,
|
|
|
|
|
position: OrganPosition(x: 0.24, y: 0.43),
|
|
|
|
|
),
|
|
|
|
|
OrganModel(
|
|
|
|
|
id: 'left_wrist',
|
|
|
|
|
name: 'hand',
|
|
|
|
|
nameAr: 'اليد',
|
|
|
|
|
description: 'Left Wrist',
|
|
|
|
|
descriptionAr: 'المعصم الأيسر',
|
|
|
|
|
bodyView: BodyView.front,
|
|
|
|
|
position: OrganPosition(x: 0.17, y: 0.49),
|
|
|
|
|
),
|
|
|
|
|
|
|
|
|
|
// ========== RIGHT ARM ==========
|
|
|
|
|
|
|
|
|
|
OrganModel(
|
|
|
|
|
id: 'right_elbow',
|
|
|
|
|
name: 'elbow',
|
|
|
|
|
nameAr: 'الكوع',
|
|
|
|
|
description: 'Right Elbow',
|
|
|
|
|
descriptionAr: 'الكوع الأيمن',
|
|
|
|
|
bodyView: BodyView.front,
|
|
|
|
|
position: OrganPosition(x: 0.76, y: 0.35),
|
|
|
|
|
),
|
|
|
|
|
OrganModel(
|
|
|
|
|
id: 'right_forearm',
|
|
|
|
|
name: 'forearm',
|
|
|
|
|
nameAr: 'الساعد',
|
|
|
|
|
description: 'Right Forearm',
|
|
|
|
|
descriptionAr: 'الساعد الأيمن',
|
|
|
|
|
bodyView: BodyView.front,
|
|
|
|
|
position: OrganPosition(x: 0.76, y: 0.43),
|
|
|
|
|
),
|
|
|
|
|
OrganModel(
|
|
|
|
|
id: 'right_wrist',
|
|
|
|
|
name: 'hand',
|
|
|
|
|
nameAr: 'اليد',
|
|
|
|
|
description: 'Right Wrist',
|
|
|
|
|
descriptionAr: 'المعصم الأيمن',
|
|
|
|
|
bodyView: BodyView.front,
|
|
|
|
|
position: OrganPosition(x: 0.83, y: 0.5),
|
|
|
|
|
),
|
|
|
|
|
|
|
|
|
|
// ========== LEFT LEG ==========
|
|
|
|
|
OrganModel(
|
|
|
|
|
id: 'left_thigh',
|
|
|
|
|
name: 'thigh',
|
|
|
|
|
nameAr: 'الفخذ',
|
|
|
|
|
description: 'Left Thigh',
|
|
|
|
|
descriptionAr: 'الفخذ الأيسر',
|
|
|
|
|
bodyView: BodyView.front,
|
|
|
|
|
position: OrganPosition(x: 0.4, y: 0.60),
|
|
|
|
|
),
|
|
|
|
|
OrganModel(
|
|
|
|
|
id: 'left_knee',
|
|
|
|
|
name: 'knee',
|
|
|
|
|
nameAr: 'الركبة',
|
|
|
|
|
description: 'Left Knee',
|
|
|
|
|
descriptionAr: 'الركبة اليسرى',
|
|
|
|
|
bodyView: BodyView.front,
|
|
|
|
|
position: OrganPosition(x: 0.4, y: 0.72),
|
|
|
|
|
),
|
|
|
|
|
OrganModel(
|
|
|
|
|
id: 'left_shin',
|
|
|
|
|
name: 'lower_leg',
|
|
|
|
|
nameAr: 'الساق_السفلي',
|
|
|
|
|
description: 'Left Shin',
|
|
|
|
|
descriptionAr: 'الساق اليسرى',
|
|
|
|
|
bodyView: BodyView.front,
|
|
|
|
|
position: OrganPosition(x: 0.41, y: 0.82),
|
|
|
|
|
),
|
|
|
|
|
OrganModel(
|
|
|
|
|
id: 'left_ankle',
|
|
|
|
|
name: 'foot',
|
|
|
|
|
nameAr: 'القدم',
|
|
|
|
|
description: 'Left Ankle',
|
|
|
|
|
descriptionAr: 'الكاحل الأيسر',
|
|
|
|
|
bodyView: BodyView.front,
|
|
|
|
|
position: OrganPosition(x: 0.43, y: 0.91),
|
|
|
|
|
),
|
|
|
|
|
|
|
|
|
|
// ========== RIGHT LEG ==========
|
|
|
|
|
OrganModel(
|
|
|
|
|
id: 'right_thigh',
|
|
|
|
|
name: 'thigh',
|
|
|
|
|
nameAr: 'الفخذ',
|
|
|
|
|
description: 'Right Thigh',
|
|
|
|
|
descriptionAr: 'الفخذ الأيمن',
|
|
|
|
|
bodyView: BodyView.front,
|
|
|
|
|
position: OrganPosition(x: 0.65, y: 0.60),
|
|
|
|
|
),
|
|
|
|
|
OrganModel(
|
|
|
|
|
id: 'right_knee',
|
|
|
|
|
name: 'knee',
|
|
|
|
|
nameAr: 'الركبة',
|
|
|
|
|
description: 'Right Knee',
|
|
|
|
|
descriptionAr: 'الركبة اليمنى',
|
|
|
|
|
bodyView: BodyView.front,
|
|
|
|
|
position: OrganPosition(x: 0.6, y: 0.72),
|
|
|
|
|
),
|
|
|
|
|
OrganModel(
|
|
|
|
|
id: 'right_shin',
|
|
|
|
|
name: 'lower_leg',
|
|
|
|
|
nameAr: 'الساق_السفلي',
|
|
|
|
|
description: 'Right Shin',
|
|
|
|
|
descriptionAr: 'الساق اليمنى',
|
|
|
|
|
bodyView: BodyView.front,
|
|
|
|
|
position: OrganPosition(x: 0.59, y: 0.82),
|
|
|
|
|
),
|
|
|
|
|
OrganModel(
|
|
|
|
|
id: 'right_ankle',
|
|
|
|
|
name: 'foot',
|
|
|
|
|
nameAr: 'القدم',
|
|
|
|
|
description: 'Right Ankle',
|
|
|
|
|
descriptionAr: 'الكاحل الأيمن',
|
|
|
|
|
bodyView: BodyView.front,
|
|
|
|
|
position: OrganPosition(x: 0.57, y: 0.91),
|
|
|
|
|
),
|
|
|
|
|
];
|
|
|
|
|
|
|
|
|
|
// ==================== BACK VIEW ====================
|
|
|
|
|
static const List<OrganModel> backViewOrgans = [
|
|
|
|
|
static const List<OrganModel> backViewOrgansForMale = [
|
|
|
|
|
// ========== HEAD & NECK ==========
|
|
|
|
|
OrganModel(
|
|
|
|
|
id: 'back_of_head',
|
|
|
|
|
@ -504,19 +810,232 @@ class OrganData {
|
|
|
|
|
position: OrganPosition(x: 0.57, y: 0.79),
|
|
|
|
|
),
|
|
|
|
|
];
|
|
|
|
|
static const List<OrganModel> backViewOrgansForFemale = [
|
|
|
|
|
// ========== HEAD & NECK ==========
|
|
|
|
|
OrganModel(
|
|
|
|
|
id: 'back_of_head',
|
|
|
|
|
name: 'whole_head',
|
|
|
|
|
nameAr: 'الرأس_كامل',
|
|
|
|
|
description: 'Back of Head',
|
|
|
|
|
descriptionAr: 'مؤخرة الرأس',
|
|
|
|
|
bodyView: BodyView.back,
|
|
|
|
|
position: OrganPosition(x: 0.48, y: 0.055),
|
|
|
|
|
),
|
|
|
|
|
OrganModel(
|
|
|
|
|
id: 'neck_back',
|
|
|
|
|
name: 'nape_of_neck',
|
|
|
|
|
nameAr: 'مؤخرة_الرقبة',
|
|
|
|
|
description: 'Neck',
|
|
|
|
|
descriptionAr: 'الرقبة',
|
|
|
|
|
bodyView: BodyView.back,
|
|
|
|
|
position: OrganPosition(x: 0.50, y: 0.14),
|
|
|
|
|
),
|
|
|
|
|
|
|
|
|
|
// ========== SHOULDERS ==========
|
|
|
|
|
OrganModel(
|
|
|
|
|
id: 'left_shoulder_back',
|
|
|
|
|
name: 'upper_arm',
|
|
|
|
|
nameAr: 'الذراع_العلوي',
|
|
|
|
|
description: 'Left Shoulder',
|
|
|
|
|
descriptionAr: 'الكتف الأيسر',
|
|
|
|
|
bodyView: BodyView.back,
|
|
|
|
|
position: OrganPosition(x: 0.3, y: 0.2),
|
|
|
|
|
),
|
|
|
|
|
OrganModel(
|
|
|
|
|
id: 'right_shoulder_back',
|
|
|
|
|
name: 'upper_arm',
|
|
|
|
|
nameAr: 'الذراع_العلوي',
|
|
|
|
|
description: 'Right Shoulder',
|
|
|
|
|
descriptionAr: 'الكتف الأيمن',
|
|
|
|
|
bodyView: BodyView.back,
|
|
|
|
|
position: OrganPosition(x: 0.69, y: 0.2),
|
|
|
|
|
),
|
|
|
|
|
|
|
|
|
|
// ========== UPPER BACK ==========
|
|
|
|
|
OrganModel(
|
|
|
|
|
id: 'upper_spine',
|
|
|
|
|
name: 'back',
|
|
|
|
|
nameAr: 'الظهر',
|
|
|
|
|
description: 'Upper Spine',
|
|
|
|
|
descriptionAr: 'العمود الفقري العلوي',
|
|
|
|
|
bodyView: BodyView.back,
|
|
|
|
|
position: OrganPosition(x: 0.50, y: 0.23),
|
|
|
|
|
),
|
|
|
|
|
OrganModel(
|
|
|
|
|
id: 'left_upper_back',
|
|
|
|
|
name: 'back',
|
|
|
|
|
nameAr: 'الظهر',
|
|
|
|
|
description: 'Left Upper Back',
|
|
|
|
|
descriptionAr: 'أعلى الظهر الأيسر',
|
|
|
|
|
bodyView: BodyView.back,
|
|
|
|
|
position: OrganPosition(x: 0.38, y: 0.28),
|
|
|
|
|
),
|
|
|
|
|
OrganModel(
|
|
|
|
|
id: 'right_upper_back',
|
|
|
|
|
name: 'back',
|
|
|
|
|
nameAr: 'الظهر',
|
|
|
|
|
description: 'Right Upper Back',
|
|
|
|
|
descriptionAr: 'أعلى الظهر الأيمن',
|
|
|
|
|
bodyView: BodyView.back,
|
|
|
|
|
position: OrganPosition(x: 0.62, y: 0.28),
|
|
|
|
|
),
|
|
|
|
|
|
|
|
|
|
// ========== MID BACK ==========
|
|
|
|
|
OrganModel(
|
|
|
|
|
id: 'mid_spine',
|
|
|
|
|
name: 'back',
|
|
|
|
|
nameAr: 'الظهر',
|
|
|
|
|
description: 'Mid Spine',
|
|
|
|
|
descriptionAr: 'العمود الفقري الأوسط',
|
|
|
|
|
bodyView: BodyView.back,
|
|
|
|
|
position: OrganPosition(x: 0.50, y: 0.35),
|
|
|
|
|
),
|
|
|
|
|
OrganModel(
|
|
|
|
|
id: 'left_mid_back',
|
|
|
|
|
name: 'back',
|
|
|
|
|
nameAr: 'الظهر',
|
|
|
|
|
description: 'Left Mid Back',
|
|
|
|
|
descriptionAr: 'وسط الظهر الأيسر',
|
|
|
|
|
bodyView: BodyView.back,
|
|
|
|
|
position: OrganPosition(x: 0.38, y: 0.35),
|
|
|
|
|
),
|
|
|
|
|
OrganModel(
|
|
|
|
|
id: 'right_mid_back',
|
|
|
|
|
name: 'back',
|
|
|
|
|
nameAr: 'الظهر',
|
|
|
|
|
description: 'Right Mid Back',
|
|
|
|
|
descriptionAr: 'وسط الظهر الأيمن',
|
|
|
|
|
bodyView: BodyView.back,
|
|
|
|
|
position: OrganPosition(x: 0.62, y: 0.35),
|
|
|
|
|
),
|
|
|
|
|
|
|
|
|
|
// ========== LOWER BACK ==========
|
|
|
|
|
OrganModel(
|
|
|
|
|
id: 'lower_spine',
|
|
|
|
|
name: 'lower_back',
|
|
|
|
|
nameAr: 'أسفل_الظهر',
|
|
|
|
|
description: 'Lower Back',
|
|
|
|
|
descriptionAr: 'أسفل الظهر',
|
|
|
|
|
bodyView: BodyView.back,
|
|
|
|
|
position: OrganPosition(x: 0.50, y: 0.43),
|
|
|
|
|
),
|
|
|
|
|
OrganModel(
|
|
|
|
|
id: 'left_lower_back',
|
|
|
|
|
name: 'lower_back',
|
|
|
|
|
nameAr: 'أسفل_الظهر',
|
|
|
|
|
description: 'Left Lower Back',
|
|
|
|
|
descriptionAr: 'أسفل الظهر الأيسر',
|
|
|
|
|
bodyView: BodyView.back,
|
|
|
|
|
position: OrganPosition(x: 0.36, y: 0.43),
|
|
|
|
|
),
|
|
|
|
|
OrganModel(
|
|
|
|
|
id: 'right_lower_back',
|
|
|
|
|
name: 'lower_back',
|
|
|
|
|
nameAr: 'أسفل_الظهر',
|
|
|
|
|
description: 'Right Lower Back',
|
|
|
|
|
descriptionAr: 'أسفل الظهر الأيمن',
|
|
|
|
|
bodyView: BodyView.back,
|
|
|
|
|
position: OrganPosition(x: 0.65, y: 0.43),
|
|
|
|
|
),
|
|
|
|
|
|
|
|
|
|
// ========== GLUTES ==========
|
|
|
|
|
OrganModel(
|
|
|
|
|
id: 'sacrum',
|
|
|
|
|
name: 'lower_back',
|
|
|
|
|
nameAr: 'أسفل_الظهر',
|
|
|
|
|
description: 'Sacrum',
|
|
|
|
|
descriptionAr: 'العجز',
|
|
|
|
|
bodyView: BodyView.back,
|
|
|
|
|
position: OrganPosition(x: 0.50, y: 0.5),
|
|
|
|
|
),
|
|
|
|
|
OrganModel(
|
|
|
|
|
id: 'left_glute',
|
|
|
|
|
name: 'buttocks',
|
|
|
|
|
nameAr: 'الأرداف',
|
|
|
|
|
description: 'Left Glute',
|
|
|
|
|
descriptionAr: 'الأرداف اليسرى',
|
|
|
|
|
bodyView: BodyView.back,
|
|
|
|
|
position: OrganPosition(x: 0.36, y: 0.52),
|
|
|
|
|
),
|
|
|
|
|
OrganModel(
|
|
|
|
|
id: 'right_glute',
|
|
|
|
|
name: 'buttocks',
|
|
|
|
|
nameAr: 'الأرداف',
|
|
|
|
|
description: 'Right Glute',
|
|
|
|
|
descriptionAr: 'الأرداف اليمنى',
|
|
|
|
|
bodyView: BodyView.back,
|
|
|
|
|
position: OrganPosition(x: 0.61, y: 0.52),
|
|
|
|
|
),
|
|
|
|
|
|
|
|
|
|
// ========== LEGS ==========
|
|
|
|
|
OrganModel(
|
|
|
|
|
id: 'left_hamstring',
|
|
|
|
|
name: 'thigh',
|
|
|
|
|
nameAr: 'الفخذ',
|
|
|
|
|
description: 'Left Hamstring',
|
|
|
|
|
descriptionAr: 'عضلة الفخذ الخلفية اليسرى',
|
|
|
|
|
bodyView: BodyView.back,
|
|
|
|
|
position: OrganPosition(x: 0.41, y: 0.62),
|
|
|
|
|
),
|
|
|
|
|
OrganModel(
|
|
|
|
|
id: 'right_hamstring',
|
|
|
|
|
name: 'thigh',
|
|
|
|
|
nameAr: 'الفخذ',
|
|
|
|
|
description: 'Right Hamstring',
|
|
|
|
|
descriptionAr: 'عضلة الفخذ الخلفية اليمنى',
|
|
|
|
|
bodyView: BodyView.back,
|
|
|
|
|
position: OrganPosition(x: 0.62, y: 0.62),
|
|
|
|
|
),
|
|
|
|
|
OrganModel(
|
|
|
|
|
id: 'left_calf',
|
|
|
|
|
name: 'lower_leg',
|
|
|
|
|
nameAr: 'الساق_السفلي',
|
|
|
|
|
description: 'Left Calf',
|
|
|
|
|
descriptionAr: 'ربلة الساق اليسرى',
|
|
|
|
|
bodyView: BodyView.back,
|
|
|
|
|
position: OrganPosition(x: 0.43, y: 0.79),
|
|
|
|
|
),
|
|
|
|
|
OrganModel(
|
|
|
|
|
id: 'right_calf',
|
|
|
|
|
name: 'lower_leg',
|
|
|
|
|
nameAr: 'الساق_السفلي',
|
|
|
|
|
description: 'Right Calf',
|
|
|
|
|
descriptionAr: 'ربلة الساق اليمنى',
|
|
|
|
|
bodyView: BodyView.back,
|
|
|
|
|
position: OrganPosition(x: 0.57, y: 0.79),
|
|
|
|
|
),
|
|
|
|
|
];
|
|
|
|
|
|
|
|
|
|
// Helper methods
|
|
|
|
|
static List<OrganModel> getOrgansForView(BodyView view) {
|
|
|
|
|
return view == BodyView.front ? frontViewOrgans : backViewOrgans;
|
|
|
|
|
// Accept genderKey (e.g., 'male' / 'female' or Arabic 'ذكر' / 'أنثى') to return gender-specific organ sets
|
|
|
|
|
static List<OrganModel> getOrgansForView(BodyView view, {String? genderKey}) {
|
|
|
|
|
final bool isFemale = genderKey != null && (genderKey.toLowerCase() == 'female' || genderKey == 'أنثى' || genderKey == '2');
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if (view == BodyView.front) {
|
|
|
|
|
return isFemale ? frontViewOrgansForFemale : frontViewOrgansForMale;
|
|
|
|
|
} else {
|
|
|
|
|
return isFemale ? backViewOrgansForFemale : backViewOrgansForMale;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
static List<OrganModel> getAllOrgans() {
|
|
|
|
|
return [...frontViewOrgans, ...backViewOrgans];
|
|
|
|
|
/// Return all organs (front + back) for the selected gender.
|
|
|
|
|
/// If genderKey is null, default to male to preserve previous behavior.
|
|
|
|
|
static List<OrganModel> getAllOrgans({String? genderKey}) {
|
|
|
|
|
final bool isFemale = genderKey != null && (genderKey.toLowerCase() == 'female' || genderKey == 'أنثى' || genderKey == '2');
|
|
|
|
|
|
|
|
|
|
if (isFemale) {
|
|
|
|
|
return [...frontViewOrgansForFemale, ...backViewOrgansForFemale];
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// default: male
|
|
|
|
|
return [...frontViewOrgansForMale, ...backViewOrgansForMale];
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
static OrganModel? getOrganById(String id) {
|
|
|
|
|
/// Find organ by id within the organs of the selected gender (or male if not specified)
|
|
|
|
|
static OrganModel? getOrganById(String id, {String? genderKey}) {
|
|
|
|
|
try {
|
|
|
|
|
return getAllOrgans().firstWhere((organ) => organ.id == id);
|
|
|
|
|
return getAllOrgans(genderKey: genderKey).firstWhere((organ) => organ.id == id);
|
|
|
|
|
} catch (e) {
|
|
|
|
|
return null;
|
|
|
|
|
}
|
|
|
|
|
|