modules/shared/assessment_types.mjs

export { AssessmentType };

/**
 * Class representing an assessment type
 */
class AssessmentType {
    /**
     * HIC assessment
     * @type {string}
     */
    static get HEAD_HIC() {
        return "HEAD_HIC";
    }
    /** Head 3ms exceedence
     * @type {string} */
    static get HEAD_THREE_MS_EXCEEDENCE() {
        return "HEAD_THREE_MS_EXCEEDENCE";
    }
    /** Head peak acceleration
     * @type {string} */
    static get HEAD_PEAK_ACCELERATION() {
        return "HEAD_PEAK_ACCELERATION";
    }
    /** Head excursion
     * @type {string} */
    static get HEAD_EXCURSION() {
        return "HEAD_EXCURSION";
    }
    /** Neck shear exceedence assessment
     * @type {string} */
    static get NECK_SHEAR_EXCEEDENCE() {
        return "NECK_SHEAR_EXCEEDENCE";
    }
    /** Neck shear assessment
     * @type {string} */
    static get NECK_SHEAR() {
        return "NECK_SHEAR";
    }
    /** Neck shear assessment for passenger
     * @type {string} */
    static get NECK_SHEAR_PASSENGER() {
        return "NECK_SHEAR_PASSENGER";
    }
    /** Neck tension exceedence assessment
     * @type {string} */
    static get NECK_TENSION_EXCEEDENCE() {
        return "NECK_TENSION_EXCEEDENCE";
    }
    /** Neck axial assessment
     * @type {string} */
    static get NECK_AXIAL() {
        return "NECK_AXIAL";
    }
    /** Neck axial assessment for passenger
     * @type {string} */
    static get NECK_AXIAL_PASSENGER() {
        return "NECK_AXIAL_PASSENGER";
    }
    /** Neck compression exceedence assessment
     * @type {string} */
    static get NECK_COMPRESSION_EXCEEDENCE() {
        return "NECK_COMPRESSION_EXCEEDENCE";
    }
    /** Neck extension assessment
     * @type {string} */
    static get NECK_EXTENSION() {
        return "NECK_EXTENSION";
    }
    /** Neck extension assessment for passenger
     * @type {string} */
    static get NECK_EXTENSION_PASSENGER() {
        return "NECK_EXTENSION_PASSENGER";
    }
    /** Neck extension assessment for rear passenger
     * @type {string} */
    static get NECK_EXTENSION_REAR_PASSENGER() {
        return "NECK_EXTENSION_REAR_PASSENGER";
    }
    /** Neck NIJ assessment
     * @type {string} */
    static get NECK_NIJ() {
        return "NECK_NIJ";
    }
    /** Neck upper flexion assessment
     * @type {string} */
    static get NECK_UPPER_FLEXION() {
        return "NECK_UPPER_FLEXION";
    }
    /** Neck lower flexion assessment
     * @type {string} */
    static get NECK_LOWER_FLEXION() {
        return "NECK_LOWER_FLEXION";
    }
    /** Neck upper extension assessment
     * @type {string} */
    static get NECK_UPPER_EXTENSION() {
        return "NECK_UPPER_EXTENSION";
    }
    /** Neck lower extension assessment
     * @type {string} */
    static get NECK_LOWER_EXTENSION() {
        return "NECK_LOWER_EXTENSION";
    }
    /** Neck upper axial assessment
     * @type {string} */
    static get NECK_UPPER_AXIAL() {
        return "NECK_UPPER_AXIAL";
    }
    /** Neck lower axial assessment
     * @type {string} */
    static get NECK_LOWER_AXIAL() {
        return "NECK_LOWER_AXIAL";
    }
    /** Chest compression assessment
     * @type {string} */
    static get CHEST_COMPRESSION() {
        return "CHEST_COMPRESSION";
    }
    /** Chest compression assessment for left side
     * @type {string} */
    static get CHEST_COMPRESSION_LEFT() {
        return "CHEST_COMPRESSION_LEFT";
    }
    /** Chest compression assessment for right side
     * @type {string} */
    static get CHEST_COMPRESSION_RIGHT() {
        return "CHEST_COMPRESSION_RIGHT";
    }
    /** Chest compression assessment for passenger
     * @type {string} */
    static get CHEST_COMPRESSION_PASSENGER() {
        return "CHEST_COMPRESSION_PASSENGER";
    }
    /** Chest compression assessment for rear passenger
     * @type {string} */
    static get CHEST_COMPRESSION_REAR_PASSENGER() {
        return "CHEST_COMPRESSION_REAR_PASSENGER";
    }
    /** Chest deflection rate assessment
     * @type {string} */
    static get CHEST_COMPRESSION_RATE() {
        return "CHEST_COMPRESSION_RATE";
    }
    /** Chest 3ms exceedence
     * @type {string} */
    static get CHEST_THREE_MS_EXCEEDENCE() {
        return "CHEST_THREE_MS_EXCEEDENCE";
    }
    /** Chest Viscous Criterion
     * @type {string} */
    static get CHEST_VISCOUS_CRITERION() {
        return "CHEST_VISCOUS_CRITERION";
    }
    /** Shoulder Deflection
     * @type {string} */
    static get SHOULDER_DEFLECTION() {
        return "SHOULDER_DEFLECTION";
    }
    /** Shoulder Deflection Rate
     * @type {string} */
    static get SHOULDER_DEFLECTION_RATE() {
        return "SHOULDER_DEFLECTION_RATE";
    }
    /** Shoulder Viscous Criterion
     * @type {string} */
    static get SHOULDER_VISCOUS_CRITERION() {
        return "SHOULDER_VISCOUS_CRITERION";
    }
    /** Shoulder Lateral Forces
     * @type {string} */
    static get SHOULDER_LATERAL_FORCES() {
        return "SHOULDER_LATERAL_FORCES";
    }
    /** Abdomen compression assessment
     * @type {string} */
    static get ABDOMEN_COMPRESSION() {
        return "ABDOMEN_COMPRESSION";
    }
    /** Abdomen compression assessment on left side
     * @type {string} */
    static get ABDOMEN_COMPRESSION_LEFT() {
        return "ABDOMEN_COMPRESSION_LEFT";
    }
    /** Abdomen compression assessment on right side
     * @type {string} */
    static get ABDOMEN_COMPRESSION_RIGHT() {
        return "ABDOMEN_COMPRESSION_RIGHT";
    }
    /** Abdomen Viscous Criterion
     * @type {string} */
    static get ABDOMEN_VISCOUS_CRITERION() {
        return "ABDOMEN_VISCOUS_CRITERION";
    }
    /** Abdomen force
     * @type {string} */
    static get ABDOMEN_FORCE() {
        return "ABDOMEN_FORCE";
    }
    /** Acetabular force
     * @type {string} */
    static get ACETABULAR_FORCE() {
        return "ACETABULAR_FORCE";
    }
    /** Acetabular force on left side
     * @type {string} */
    static get ACETABULAR_FORCE_LEFT() {
        return "ACETABULAR_FORCE_LEFT";
    }
    /** Acetabular force on right side
     * @type {string} */
    static get ACETABULAR_FORCE_RIGHT() {
        return "ACETABULAR_FORCE_RIGHT";
    }
    /** Ilium force
     * @type {string} */
    static get ILIUM_FORCE() {
        return "ILIUM_FORCE";
    }
    /** Pelvis force
     * @type {string} */
    static get PELVIS_FORCE() {
        return "PELVIS_FORCE";
    }
    /** Lumbar torsion
     * @type {string} */
    static get LUMBAR_TORSION() {
        return "LUMBAR_TORSION";
    }
    /** Lumbar force Y
     * @type {string} */
    static get LUMBAR_SHEAR() {
        return "LUMBAR_SHEAR";
    }
    /** Lumbar force Z
     * @type {string} */
    static get LUMBAR_AXIAL() {
        return "LUMBAR_AXIAL";
    }
    /** Left femur axial
     * @type {string} */
    static get LEFT_FEMUR_AXIAL() {
        return "LEFT_FEMUR_AXIAL";
    }
    /** Right femur axial
     * @type {string} */
    static get RIGHT_FEMUR_AXIAL() {
        return "RIGHT_FEMUR_AXIAL";
    }
    /** Left femur force
     * @type {string} */
    static get LEFT_FEMUR_FORCE() {
        return "LEFT_FEMUR_FORCE";
    }
    /** Right femur axial
     * @type {string} */
    static get RIGHT_FEMUR_FORCE() {
        return "RIGHT_FEMUR_FORCE";
    }
    /** Left femur compression exceedence
     * @type {string} */
    static get LEFT_FEMUR_COMPRESSION_EXCEEDENCE() {
        return "LEFT_FEMUR_COMPRESSION_EXCEEDENCE";
    }
    /** Right femur compression exceedence
     * @type {string} */
    static get RIGHT_FEMUR_COMPRESSION_EXCEEDENCE() {
        return "RIGHT_FEMUR_COMPRESSION_EXCEEDENCE";
    }
    /** Left femur compression vs impulse
     * @type {string} */
    static get LEFT_FEMUR_COMPRESSION_VS_IMPULSE() {
        return "LEFT_FEMUR_COMPRESSION_VS_IMPULSE";
    }
    /** Right femur compression vs impulse
     * @type {string} */
    static get RIGHT_FEMUR_COMPRESSION_VS_IMPULSE() {
        return "RIGHT_FEMUR_COMPRESSION_VS_IMPULSE";
    }
    /** Left knee displacement
     * @type {string} */
    static get LEFT_KNEE_DISPLACEMENT() {
        return "LEFT_KNEE_DISPLACEMENT";
    }
    /** Right knee displacement
     * @type {string} */
    static get RIGHT_KNEE_DISPLACEMENT() {
        return "RIGHT_KNEE_DISPLACEMENT";
    }
    /** Left tibia compression
     * @type {string} */
    static get LEFT_TIBIA_COMPRESSION() {
        return "LEFT_TIBIA_COMPRESSION";
    }
    /** Right tibia compression
     * @type {string} */
    static get RIGHT_TIBIA_COMPRESSION() {
        return "RIGHT_TIBIA_COMPRESSION";
    }
    /** Left tibia index
     * @type {string} */
    static get LEFT_TIBIA_INDEX() {
        return "LEFT_TIBIA_INDEX";
    }
    /** Right tibia index
     * @type {string} */
    static get RIGHT_TIBIA_INDEX() {
        return "RIGHT_TIBIA_INDEX";
    }
    /** Left foot acceleration
     * @type {string} */
    static get LEFT_FOOT_ACCELERATION() {
        return "LEFT_FOOT_ACCELERATION";
    }
    /** Right foot acceleration
     * @type {string} */
    static get RIGHT_FOOT_ACCELERATION() {
        return "RIGHT_FOOT_ACCELERATION";
    }

    /** A-Pillar intrusion
     * @type {string} */
    static get A_PILLAR_FORE_AFT_INTRUSION() {
        return "A_PILLAR_FORE_AFT_INTRUSION";
    }

    /** B-Pillar intrusion
     * @type {string} */
    static get B_PILLAR_INTRUSION() {
        return "B_PILLAR_INTRUSION";
    }

    /** Vertical pedal intrusion
     * @type {string} */
    static get PEDAL_VERTICAL_INTRUSION() {
        return "PEDAL_VERTICAL_INTRUSION";
    }

    /** Lateral pedal intrusion
     * @type {string} */
    static get PEDAL_LATERAL_INTRUSION() {
        return "PEDAL_LATERAL_INTRUSION";
    }

    /** Fore-aft pedal intrusion
     * @type {string} */
    static get PEDAL_FORE_AFT_INTRUSION() {
        return "PEDAL_FORE_AFT_INTRUSION";
    }

    /** Vertical steering column intrusion
     * @type {string} */
    static get STEERING_COLUMN_VERTICAL_INTRUSION() {
        return "STEERING_COLUMN_VERTICAL_INTRUSION";
    }

    /** Lateral steering column intrusion
     * @type {string} */
    static get STEERING_COLUMN_LATERAL_INTRUSION() {
        return "STEERING_COLUMN_LATERAL_INTRUSION";
    }

    /** Fore-aft steering column intrusion
     * @type {string} */
    static get STEERING_COLUMN_FORE_AFT_INTRUSION() {
        return "STEERING_COLUMN_FORE_AFT_INTRUSION";
    }

    /** Steering column intrusion (vertical, lateral and fore/aft)
     * @type {string} */
    static get STEERING_COLUMN_ALL_INTRUSION() {
        return "STEERING_COLUMN_ALL_INTRUSION";
    }

    /** Driver left toepan intrusion
     * @type {string} */
    static get DRIVER_LEFT_TOEPAN_ALL_INTRUSION() {
        return "DRIVER_LEFT_TOEPAN_ALL_INTRUSION";
    }

    /** Driver centre toepan intrusion
     * @type {string} */
    static get DRIVER_CENTRE_TOEPAN_ALL_INTRUSION() {
        return "DRIVER_CENTRE_TOEPAN_ALL_INTRUSION";
    }

    /** Driver right toepan intrusion
     * @type {string} */
    static get DRIVER_RIGHT_TOEPAN_ALL_INTRUSION() {
        return "DRIVER_RIGHT_TOEPAN_ALL_INTRUSION";
    }

    /** Passenger left toepan intrusion
     * @type {string} */
    static get PASSENGER_LEFT_TOEPAN_ALL_INTRUSION() {
        return "PASSENGER_LEFT_TOEPAN_ALL_INTRUSION";
    }

    /** Passenger centre toepan intrusion
     * @type {string} */
    static get PASSENGER_CENTRE_TOEPAN_ALL_INTRUSION() {
        return "PASSENGER_CENTRE_TOEPAN_ALL_INTRUSION";
    }

    /** Passenger right toepan intrusion
     * @type {string} */
    static get PASSENGER_RIGHT_TOEPAN_ALL_INTRUSION() {
        return "PASSENGER_RIGHT_TOEPAN_ALL_INTRUSION";
    }

    /** Driver footrest intrusion
     * @type {string} */
    static get DRIVER_FOOTREST_ALL_INTRUSION() {
        return "DRIVER_FOOTREST_ALL_INTRUSION";
    }

    /** Passenger footrest intrusion
     * @type {string} */
    static get PASSENGER_FOOTREST_ALL_INTRUSION() {
        return "PASSENGER_FOOTREST_ALL_INTRUSION";
    }

    /** Left instrument_panel intrusion
     * @type {string} */
    static get LEFT_INSTRUMENT_PANEL_FORE_AFT_INTRUSION() {
        return "LEFT_INSTRUMENT_PANEL_FORE_AFT_INTRUSION";
    }

    /** Right instrument_panel intrusion
     * @type {string} */
    static get RIGHT_INSTRUMENT_PANEL_FORE_AFT_INTRUSION() {
        return "RIGHT_INSTRUMENT_PANEL_FORE_AFT_INTRUSION";
    }

    /** Door intrusion
     * @type {string} */
    static get DOOR_FORE_AFT_INTRUSION() {
        return "DOOR_FORE_AFT_INTRUSION";
    }

    /** Passenger left lower dash intrusion
     * @type {string} */
    static get PASSENGER_LEFT_LOWER_DASH_ALL_INTRUSION() {
        return "PASSENGER_LEFT_LOWER_DASH_ALL_INTRUSION";
    }

    /** Passenger right lower dash intrusion
     * @type {string} */
    static get PASSENGER_RIGHT_LOWER_DASH_ALL_INTRUSION() {
        return "PASSENGER_RIGHT_LOWER_DASH_ALL_INTRUSION";
    }

    /** Passenger centre dash intrusion
     * @type {string} */
    static get PASSENGER_CENTRE_DASH_ALL_INTRUSION() {
        return "PASSENGER_CENTRE_DASH_ALL_INTRUSION";
    }

    /** Driver upper dash intrusion
     * @type {string} */
    static get DRIVER_UPPER_DASH_ALL_INTRUSION() {
        return "DRIVER_UPPER_DASH_ALL_INTRUSION";
    }

    /** Passenger upper dash intrusion
     * @type {string} */
    static get PASSENGER_UPPER_DASH_ALL_INTRUSION() {
        return "PASSENGER_UPPER_DASH_ALL_INTRUSION";
    }

    /** Driver lower hinge 1 intrusion
     * @type {string} */
    static get DRIVER_LOWER_HINGE_1_ALL_INTRUSION() {
        return "DRIVER_LOWER_HINGE_1_ALL_INTRUSION";
    }

    /** Driver lower hinge 2 intrusion
     * @type {string} */
    static get DRIVER_LOWER_HINGE_2_ALL_INTRUSION() {
        return "DRIVER_LOWER_HINGE_2_ALL_INTRUSION";
    }

    /** Driver lower hinge 3 intrusion
     * @type {string} */
    static get DRIVER_LOWER_HINGE_3_ALL_INTRUSION() {
        return "DRIVER_LOWER_HINGE_3_ALL_INTRUSION";
    }

    /** Passenger lower hinge 1 intrusion
     * @type {string} */
    static get PASSENGER_LOWER_HINGE_1_ALL_INTRUSION() {
        return "PASSENGER_LOWER_HINGE_1_ALL_INTRUSION";
    }

    /** Passenger lower hinge 2 intrusion
     * @type {string} */
    static get PASSENGER_LOWER_HINGE_2_ALL_INTRUSION() {
        return "PASSENGER_LOWER_HINGE_2_ALL_INTRUSION";
    }

    /** Passenger lower hinge 3 intrusion
     * @type {string} */
    static get PASSENGER_LOWER_HINGE_3_ALL_INTRUSION() {
        return "PASSENGER_LOWER_HINGE_3_ALL_INTRUSION";
    }

    /** Driver upper hinge 1 intrusion
     * @type {string} */
    static get DRIVER_UPPER_HINGE_1_ALL_INTRUSION() {
        return "DRIVER_UPPER_HINGE_1_ALL_INTRUSION";
    }

    /** Driver upper hinge 2 intrusion
     * @type {string} */
    static get DRIVER_UPPER_HINGE_2_ALL_INTRUSION() {
        return "DRIVER_UPPER_HINGE_2_ALL_INTRUSION";
    }

    /** Driver upper hinge 3 intrusion
     * @type {string} */
    static get DRIVER_UPPER_HINGE_3_ALL_INTRUSION() {
        return "DRIVER_UPPER_HINGE_3_ALL_INTRUSION";
    }

    /** Passenger upper hinge 1 intrusion
     * @type {string} */
    static get PASSENGER_UPPER_HINGE_1_ALL_INTRUSION() {
        return "PASSENGER_UPPER_HINGE_1_ALL_INTRUSION";
    }

    /** Passenger upper hinge 2 intrusion
     * @type {string} */
    static get PASSENGER_UPPER_HINGE_2_ALL_INTRUSION() {
        return "PASSENGER_UPPER_HINGE_2_ALL_INTRUSION";
    }

    /** Passenger upper hinge 3 intrusion
     * @type {string} */
    static get PASSENGER_UPPER_HINGE_3_ALL_INTRUSION() {
        return "PASSENGER_UPPER_HINGE_3_ALL_INTRUSION";
    }

    /** Driver rocker panel 1 lateral intrusion
     * @type {string} */
    static get DRIVER_ROCKER_PANEL_1_LATERAL_INTRUSION() {
        return "DRIVER_ROCKER_PANEL_1_LATERAL_INTRUSION";
    }

    /** Driver rocker panel 2 lateral intrusion
     * @type {string} */
    static get DRIVER_ROCKER_PANEL_2_LATERAL_INTRUSION() {
        return "DRIVER_ROCKER_PANEL_2_LATERAL_INTRUSION";
    }

    /** Driver rocker panel 3 lateral intrusion
     * @type {string} */
    static get DRIVER_ROCKER_PANEL_3_LATERAL_INTRUSION() {
        return "DRIVER_ROCKER_PANEL_3_LATERAL_INTRUSION";
    }

    /** Passenger rocker panel 1 lateral intrusion
     * @type {string} */
    static get PASSENGER_ROCKER_PANEL_1_LATERAL_INTRUSION() {
        return "PASSENGER_ROCKER_PANEL_1_LATERAL_INTRUSION";
    }

    /** Passenger rocker panel 2 lateral intrusion
     * @type {string} */
    static get PASSENGER_ROCKER_PANEL_2_LATERAL_INTRUSION() {
        return "PASSENGER_ROCKER_PANEL_2_LATERAL_INTRUSION";
    }

    /** Passenger rocker panel 3 lateral intrusion
     * @type {string} */
    static get PASSENGER_ROCKER_PANEL_3_LATERAL_INTRUSION() {
        return "PASSENGER_ROCKER_PANEL_3_LATERAL_INTRUSION";
    }

    /**
     * Return an array of all the available assessment type strings
     * @param {?string} [program=null] The program to filter the assessment types, either "d3plot" or "this"
     * @returns {string[]}
     * @example
     * // Get all assessment types
     * let assessment_types = AssessmentType.GetAll();
     *
     * // Get assessment types for d3plot
     * let d3plot_assessment_types = AssessmentType.GetAll("d3plot");
     *
     * // Get assessment types for this
     * let this_assessment_types = AssessmentType.GetAll("this");
     */
    static GetAll(program = null) {
        /** @type {string[]} */
        let programs = [];

        if (program === null) {
            programs = ["d3plot", "this"];
        } else if (program == "d3plot") {
            programs = ["d3plot"];
        } else if (program == "this") {
            programs = ["this"];
        } else {
            throw new Error(`Invalid program ${program} in AssessmentType.GetAll()`);
        }

        /** @type {string[]} */
        let assessment_types = [];

        for (let p of programs) {
            switch (p) {
                case "d3plot":
                    assessment_types.push(AssessmentType.B_PILLAR_INTRUSION);
                    assessment_types.push(AssessmentType.HEAD_EXCURSION);
                    break;

                case "this":
                    /* Return an array containing both occupant and structure assessment types */
                    assessment_types = assessment_types.concat(AssessmentType.AllTHisOccupantAssessmentTypes());
                    assessment_types = assessment_types.concat(AssessmentType.AllTHisStructureAssessmentTypes());
                    break;

                default:
                    throw new Error(`Invalid program ${p} in AssessmentType.GetAll()`);
            }
        }

        return assessment_types;
    }

    /**
     * Return an array of all the available T/HIS Occupant assessment type strings
     * @returns {string[]}
     * @example
     * let assessment_types = AssessmentType.AllTHisOccupantAssessmentTypes();
     */
    static AllTHisOccupantAssessmentTypes() {
        /** @type {string[]} */
        let assessment_types = [];
        assessment_types.push(AssessmentType.HEAD_HIC);
        assessment_types.push(AssessmentType.HEAD_THREE_MS_EXCEEDENCE);
        assessment_types.push(AssessmentType.HEAD_PEAK_ACCELERATION);
        assessment_types.push(AssessmentType.NECK_SHEAR_EXCEEDENCE);
        assessment_types.push(AssessmentType.NECK_SHEAR);
        assessment_types.push(AssessmentType.NECK_SHEAR_PASSENGER);
        assessment_types.push(AssessmentType.NECK_TENSION_EXCEEDENCE);
        assessment_types.push(AssessmentType.NECK_AXIAL);
        assessment_types.push(AssessmentType.NECK_AXIAL_PASSENGER);
        assessment_types.push(AssessmentType.NECK_EXTENSION);
        assessment_types.push(AssessmentType.NECK_EXTENSION_PASSENGER);
        assessment_types.push(AssessmentType.NECK_EXTENSION_REAR_PASSENGER);
        assessment_types.push(AssessmentType.NECK_COMPRESSION_EXCEEDENCE);
        assessment_types.push(AssessmentType.NECK_NIJ);
        assessment_types.push(AssessmentType.NECK_UPPER_AXIAL);
        assessment_types.push(AssessmentType.NECK_UPPER_EXTENSION);
        assessment_types.push(AssessmentType.NECK_UPPER_FLEXION);
        assessment_types.push(AssessmentType.NECK_LOWER_AXIAL);
        assessment_types.push(AssessmentType.NECK_LOWER_EXTENSION);
        assessment_types.push(AssessmentType.NECK_LOWER_FLEXION);
        assessment_types.push(AssessmentType.SHOULDER_DEFLECTION);
        assessment_types.push(AssessmentType.SHOULDER_DEFLECTION_RATE);
        assessment_types.push(AssessmentType.SHOULDER_VISCOUS_CRITERION);
        assessment_types.push(AssessmentType.SHOULDER_LATERAL_FORCES);
        assessment_types.push(AssessmentType.CHEST_COMPRESSION);
        assessment_types.push(AssessmentType.CHEST_COMPRESSION_LEFT);
        assessment_types.push(AssessmentType.CHEST_COMPRESSION_RIGHT);
        assessment_types.push(AssessmentType.CHEST_COMPRESSION_PASSENGER);
        assessment_types.push(AssessmentType.CHEST_COMPRESSION_REAR_PASSENGER);
        assessment_types.push(AssessmentType.CHEST_COMPRESSION_RATE);
        assessment_types.push(AssessmentType.CHEST_THREE_MS_EXCEEDENCE);
        assessment_types.push(AssessmentType.CHEST_VISCOUS_CRITERION);
        assessment_types.push(AssessmentType.ABDOMEN_COMPRESSION);
        assessment_types.push(AssessmentType.ABDOMEN_COMPRESSION_LEFT);
        assessment_types.push(AssessmentType.ABDOMEN_COMPRESSION_RIGHT);
        assessment_types.push(AssessmentType.ABDOMEN_VISCOUS_CRITERION);
        assessment_types.push(AssessmentType.ABDOMEN_FORCE);
        assessment_types.push(AssessmentType.LUMBAR_TORSION);
        assessment_types.push(AssessmentType.LUMBAR_SHEAR);
        assessment_types.push(AssessmentType.LUMBAR_AXIAL);
        assessment_types.push(AssessmentType.ACETABULAR_FORCE);
        assessment_types.push(AssessmentType.ACETABULAR_FORCE_LEFT);
        assessment_types.push(AssessmentType.ACETABULAR_FORCE_RIGHT);
        assessment_types.push(AssessmentType.ILIUM_FORCE);
        assessment_types.push(AssessmentType.PELVIS_FORCE);
        assessment_types.push(AssessmentType.LEFT_FEMUR_AXIAL);
        assessment_types.push(AssessmentType.RIGHT_FEMUR_AXIAL);
        assessment_types.push(AssessmentType.LEFT_FEMUR_FORCE);
        assessment_types.push(AssessmentType.RIGHT_FEMUR_FORCE);
        assessment_types.push(AssessmentType.LEFT_FEMUR_COMPRESSION_EXCEEDENCE);
        assessment_types.push(AssessmentType.RIGHT_FEMUR_COMPRESSION_EXCEEDENCE);
        assessment_types.push(AssessmentType.LEFT_FEMUR_COMPRESSION_VS_IMPULSE);
        assessment_types.push(AssessmentType.RIGHT_FEMUR_COMPRESSION_VS_IMPULSE);
        assessment_types.push(AssessmentType.LEFT_KNEE_DISPLACEMENT);
        assessment_types.push(AssessmentType.RIGHT_KNEE_DISPLACEMENT);
        assessment_types.push(AssessmentType.LEFT_TIBIA_COMPRESSION);
        assessment_types.push(AssessmentType.RIGHT_TIBIA_COMPRESSION);
        assessment_types.push(AssessmentType.LEFT_TIBIA_INDEX);
        assessment_types.push(AssessmentType.RIGHT_TIBIA_INDEX);
        assessment_types.push(AssessmentType.LEFT_FOOT_ACCELERATION);
        assessment_types.push(AssessmentType.RIGHT_FOOT_ACCELERATION);

        return assessment_types;
    }

    /**
     * Return an array of all the available T/HIS Structure assessment type strings
     * @returns {string[]}
     * @example
     * let assessment_types = AssessmentType.AllTHisStructureAssessmentTypes();
     */
    static AllTHisStructureAssessmentTypes() {
        /** @type {string[]} */
        let assessment_types = [];

        assessment_types.push(AssessmentType.A_PILLAR_FORE_AFT_INTRUSION);
        assessment_types.push(AssessmentType.PEDAL_VERTICAL_INTRUSION);
        assessment_types.push(AssessmentType.PEDAL_LATERAL_INTRUSION);
        assessment_types.push(AssessmentType.PEDAL_FORE_AFT_INTRUSION);
        assessment_types.push(AssessmentType.STEERING_COLUMN_VERTICAL_INTRUSION);
        assessment_types.push(AssessmentType.STEERING_COLUMN_LATERAL_INTRUSION);
        assessment_types.push(AssessmentType.STEERING_COLUMN_FORE_AFT_INTRUSION);
        assessment_types.push(AssessmentType.STEERING_COLUMN_ALL_INTRUSION);
        assessment_types.push(AssessmentType.DRIVER_LEFT_TOEPAN_ALL_INTRUSION);
        assessment_types.push(AssessmentType.DRIVER_CENTRE_TOEPAN_ALL_INTRUSION);
        assessment_types.push(AssessmentType.DRIVER_RIGHT_TOEPAN_ALL_INTRUSION);
        assessment_types.push(AssessmentType.PASSENGER_LEFT_TOEPAN_ALL_INTRUSION);
        assessment_types.push(AssessmentType.PASSENGER_CENTRE_TOEPAN_ALL_INTRUSION);
        assessment_types.push(AssessmentType.PASSENGER_RIGHT_TOEPAN_ALL_INTRUSION);
        assessment_types.push(AssessmentType.DRIVER_FOOTREST_ALL_INTRUSION);
        assessment_types.push(AssessmentType.PASSENGER_FOOTREST_ALL_INTRUSION);
        assessment_types.push(AssessmentType.LEFT_INSTRUMENT_PANEL_FORE_AFT_INTRUSION);
        assessment_types.push(AssessmentType.RIGHT_INSTRUMENT_PANEL_FORE_AFT_INTRUSION);
        assessment_types.push(AssessmentType.DOOR_FORE_AFT_INTRUSION);
        assessment_types.push(AssessmentType.PASSENGER_LEFT_LOWER_DASH_ALL_INTRUSION);
        assessment_types.push(AssessmentType.PASSENGER_RIGHT_LOWER_DASH_ALL_INTRUSION);
        assessment_types.push(AssessmentType.PASSENGER_CENTRE_DASH_ALL_INTRUSION);
        assessment_types.push(AssessmentType.DRIVER_UPPER_DASH_ALL_INTRUSION);
        assessment_types.push(AssessmentType.PASSENGER_UPPER_DASH_ALL_INTRUSION);
        assessment_types.push(AssessmentType.DRIVER_LOWER_HINGE_1_ALL_INTRUSION);
        assessment_types.push(AssessmentType.DRIVER_LOWER_HINGE_2_ALL_INTRUSION);
        assessment_types.push(AssessmentType.DRIVER_LOWER_HINGE_3_ALL_INTRUSION);
        assessment_types.push(AssessmentType.PASSENGER_LOWER_HINGE_1_ALL_INTRUSION);
        assessment_types.push(AssessmentType.PASSENGER_LOWER_HINGE_2_ALL_INTRUSION);
        assessment_types.push(AssessmentType.PASSENGER_LOWER_HINGE_3_ALL_INTRUSION);
        assessment_types.push(AssessmentType.DRIVER_UPPER_HINGE_1_ALL_INTRUSION);
        assessment_types.push(AssessmentType.DRIVER_UPPER_HINGE_2_ALL_INTRUSION);
        assessment_types.push(AssessmentType.DRIVER_UPPER_HINGE_3_ALL_INTRUSION);
        assessment_types.push(AssessmentType.PASSENGER_UPPER_HINGE_1_ALL_INTRUSION);
        assessment_types.push(AssessmentType.PASSENGER_UPPER_HINGE_2_ALL_INTRUSION);
        assessment_types.push(AssessmentType.PASSENGER_UPPER_HINGE_3_ALL_INTRUSION);
        assessment_types.push(AssessmentType.DRIVER_ROCKER_PANEL_1_LATERAL_INTRUSION);
        assessment_types.push(AssessmentType.DRIVER_ROCKER_PANEL_2_LATERAL_INTRUSION);
        assessment_types.push(AssessmentType.DRIVER_ROCKER_PANEL_3_LATERAL_INTRUSION);
        assessment_types.push(AssessmentType.PASSENGER_ROCKER_PANEL_1_LATERAL_INTRUSION);
        assessment_types.push(AssessmentType.PASSENGER_ROCKER_PANEL_2_LATERAL_INTRUSION);
        assessment_types.push(AssessmentType.PASSENGER_ROCKER_PANEL_3_LATERAL_INTRUSION);

        return assessment_types;
    }
}