Source code for rofunc.utils.ergolab.rula

import numpy as np


[docs]def upperArm_score(header, data): """returns rula score for upper Arm takes all three anatomical angles for shoulder provided by MR3s myoMOTION """ # No. 1 of RULA protocol angle_limits = [[-20, 20], [-20, 20, 45], [45, 90], [90]] # rula definition angle_abdu = 30 # own definition/limit shoulder_flex = np.zeros((len(data), 2)) # [0,1 == left, right] shoulder_abdu = np.zeros((len(data), 2)) # [0,1 == left, right] shoulder_flex[:, 0] = data[:, np.where(header == "Schulter Flexion LT,Grad")[0][0]] shoulder_flex[:, 1] = data[:, np.where(header == "Schulter Flexion RT,Grad")[0][0]] shoulder_abdu[:, 0] = data[:, np.where(header == "Schulter Abduktion LT,Grad")[0][0]] shoulder_abdu[:, 1] = data[:, np.where(header == "Schulter Abduktion RT,Grad")[0][0]] score_left = np.zeros((len(data), 1)) # [0,1 == angleScore, additional] score_right = np.zeros((len(data), 1)) # [0,1 == angleScore, additional] for a in range(len(data)): # scoring for left side if shoulder_flex[a, 0] > angle_limits[0][0] and shoulder_flex[a, 0] <= angle_limits[0][1]: score_left[a, 0] = 1 elif shoulder_flex[a, 0] < angle_limits[1][0]: score_left[a, 0] = 2 elif shoulder_flex[a, 0] > angle_limits[1][1] and shoulder_flex[a, 0] <= angle_limits[1][2]: score_left[a, 0] = 2 elif shoulder_flex[a, 0] > angle_limits[2][0] and shoulder_flex[a, 0] <= angle_limits[2][1]: score_left[a, 0] = 3 elif shoulder_flex[a, 0] > angle_limits[3][0]: score_left[a, 0] = 4 # scoring for right side for b in range(len(data)): if shoulder_flex[b, 1] > angle_limits[0][0] and shoulder_flex[a, 0] <= angle_limits[0][1]: score_right[b, 0] = 1 elif shoulder_flex[b, 1] < angle_limits[1][0]: score_right[b, 0] = 2 elif shoulder_flex[b, 1] > angle_limits[1][1] and shoulder_flex[a, 0] <= angle_limits[1][2]: score_right[b, 0] = 2 elif shoulder_flex[b, 1] > angle_limits[2][0] and shoulder_flex[a, 0] <= angle_limits[2][1]: score_right[b, 0] = 3 elif shoulder_flex[b, 1] > angle_limits[3][0]: score_right[b, 0] = 4 abucted_arm_left = np.where(shoulder_abdu[:, 0] > angle_abdu)[0] abucted_arm_right = np.where(shoulder_abdu[:, 1] > angle_abdu)[0] score_left[abucted_arm_left, 0] += 1 score_right[abucted_arm_right, 0] += 1 print("\n???????????????\nQUESTION\n???????????????") while True: try: a = int(input( "Wie lange ist die Person angelehnt ODER\n der Arm unterstützt?\n [Angabe in % relativ zur Gesamtdauer des Vorgangs]\n\n\t")) a = a / 100 break except ValueError: print("Oppsidaysi! That wasn't an integer Value. Try again!") print('upper Arm:') print(np.mean(score_left[:, 0])) print(np.mean(score_right[:, 0])) return score_left, score_right