469 lines
24 KiB
PHP
469 lines
24 KiB
PHP
<?php
|
||
|
||
namespace app\testapp\controller;
|
||
|
||
|
||
class Cardparts extends Base{
|
||
|
||
protected $color = ['#FF5656','#FFAB00','#5AD06D','#6492F6','#3967D6'];
|
||
protected $parameter_aggregate_top = [
|
||
'weight'=>'反映和衡量一个人健康状况的重要标志之一',
|
||
'height'=>'人体纵向部分的长度,源于人体的纵向生长,受遗传因素的影响较大',
|
||
'bmi'=>'BMI是身体质量指数,是目前国际上常用的衡量人体胖瘦程度以及是否健康的一个标准。'
|
||
];
|
||
protected $parameter_aggregate_bottom = [
|
||
'fat_r'=>'体脂率是指身体成分中,脂肪组织所占的比率。测量体脂率比单纯的只测量体重更能反映我们身体的脂肪水平(肥胖程度)。',
|
||
'fat_w'=>'人体脂肪的重量',
|
||
'muscle'=>'根据人体肌肉总量和人体体重、身高等相结合得到的人体的一个比例值,这个值的范围决定一个人的身体健康状况以及力量的多少。',
|
||
'muscleval'=>'肌肉量=实际体重*肌肉率',
|
||
'water'=>'指人体内水分比例。',
|
||
'proteinval'=>'蛋白量=实际体重*蛋白率',
|
||
'bone'=>'单位体积内,骨组织、骨矿物质(钙、磷等)和骨基质(骨胶原、蛋白率、无机盐等等)含量,骨量代表它们骨骼健康的情况。',
|
||
'protein'=>'人体内蛋白率含量。',
|
||
'kcal'=>'指人体在清醒而又极端安静的状态下,不受肌肉活动、环境温度、食物及精神紧张等影响时的能量代谢率',
|
||
'visceral'=>'内脏脂肪指数',
|
||
'sfr'=>'皮下脂脂肪就是贮存于皮下的脂肪组织,人体的脂肪大约有2/3贮存在皮下组织',
|
||
'body_level'=>'肥胖的程度,表现实际体重与理想体重的差距。肥胖等级是判定肥胖症的一个指标。'
|
||
];
|
||
protected $parameter_aggregate_bottom_out = ['body_level'];
|
||
protected $parameter_aggregate_bottom_condition = ['body_level'];
|
||
// 脂肪率&脂肪量
|
||
protected $fat_r_w = [
|
||
'man'=>[
|
||
'29'=>[
|
||
['min_val'=>'0','max_val'=>'10','text'=>'偏低','color'=>'#FCDB67'],
|
||
['min_val'=>'10','max_val'=>'21','text'=>'标准','color'=>'#59D16D'],
|
||
['min_val'=>'21','max_val'=>'26','text'=>'偏高','color'=>'#FAB000'],
|
||
['min_val'=>'26','max_val'=>'50','text'=>'高','color'=>'#FA5951'],
|
||
],
|
||
'30'=>[
|
||
['min_val'=>'0','max_val'=>'11','text'=>'偏低','color'=>'#FCDB67'],
|
||
['min_val'=>'11','max_val'=>'22','text'=>'标准','color'=>'#59D16D'],
|
||
['min_val'=>'22','max_val'=>'27','text'=>'偏高','color'=>'#FAB000'],
|
||
['min_val'=>'27','max_val'=>'50','text'=>'高','color'=>'#FA5951'],
|
||
],
|
||
],
|
||
'woman'=>[
|
||
'29'=>[
|
||
['min_val'=>'0','max_val'=>'20','text'=>'偏低','color'=>'#FCDB67'],
|
||
['min_val'=>'20','max_val'=>'31','text'=>'标准','color'=>'#59D16D'],
|
||
['min_val'=>'31','max_val'=>'38','text'=>'偏高','color'=>'#FAB000'],
|
||
['min_val'=>'38','max_val'=>'80','text'=>'高','color'=>'#FA5951'],
|
||
],
|
||
'30'=>[
|
||
['min_val'=>'0','max_val'=>'21','text'=>'偏低','color'=>'#FCDB67'],
|
||
['min_val'=>'21','max_val'=>'32','text'=>'标准','color'=>'#59D16D'],
|
||
['min_val'=>'32','max_val'=>'39','text'=>'偏高','color'=>'#FAB000'],
|
||
['min_val'=>'39','max_val'=>'80','text'=>'高','color'=>'#FA5951'],
|
||
]
|
||
]
|
||
];
|
||
// 肌肉率&肌肉量
|
||
protected $muscle_muscleval = [
|
||
'man'=>[
|
||
['min_val'=>'0','max_val'=>'40','text'=>'不足','color'=>'#FCDB67'],
|
||
['min_val'=>'40','max_val'=>'60','text'=>'标准','color'=>'#59D16D'],
|
||
['min_val'=>'60','max_val'=>'100','text'=>'优','color'=>'#3C66D2'],
|
||
],
|
||
'woman'=>[
|
||
['min_val'=>'0','max_val'=>'30','text'=>'不足','color'=>'#FCDB67'],
|
||
['min_val'=>'30','max_val'=>'50','text'=>'标准','color'=>'#59D16D'],
|
||
['min_val'=>'50','max_val'=>'100','text'=>'优','color'=>'#3C66D2'],
|
||
]
|
||
];
|
||
// 水分
|
||
protected $water = [
|
||
'man'=>[
|
||
['min_val'=>'0','max_val'=>'55','text'=>'不足','color'=>'#FCDB67'],
|
||
['min_val'=>'55','max_val'=>'65','text'=>'标准','color'=>'#59D16D'],
|
||
['min_val'=>'65','max_val'=>'100','text'=>'优','color'=>'#3C66D2'],
|
||
],
|
||
'woman'=>[
|
||
['min_val'=>'0','max_val'=>'45','text'=>'不足','color'=>'#FCDB67'],
|
||
['min_val'=>'45','max_val'=>'60','text'=>'标准','color'=>'#59D16D'],
|
||
['min_val'=>'60','max_val'=>'100','text'=>'优','color'=>'#3C66D2'],
|
||
]
|
||
];
|
||
// 蛋白量&蛋白率
|
||
protected $proteinval_protein = [
|
||
'man'=>[
|
||
['min_val'=>'0','max_val'=>'16','text'=>'不足','color'=>'#FCDB67'],
|
||
['min_val'=>'16','max_val'=>'18','text'=>'标准','color'=>'#59D16D'],
|
||
['min_val'=>'18','max_val'=>'50','text'=>'优','color'=>'#3C66D2'], //蓝
|
||
],
|
||
'woman'=>[
|
||
['min_val'=>'0','max_val'=>'14','text'=>'不足','color'=>'#FCDB67'],
|
||
['min_val'=>'14','max_val'=>'16','text'=>'标准','color'=>'#59D16D'],
|
||
['min_val'=>'16','max_val'=>'50','text'=>'优','color'=>'#3C66D2'],
|
||
]
|
||
];
|
||
// 骨重
|
||
protected $bone = [
|
||
'man'=>[
|
||
'60'=>[
|
||
['min_val'=>'0','max_val'=>'2.4','text'=>'不足','color'=>'#FCDB67'],
|
||
['min_val'=>'2.4','max_val'=>'2.6','text'=>'标准','color'=>'#59D16D'],
|
||
['min_val'=>'2.6','max_val'=>'6','text'=>'优','color'=>'#3C66D2'],
|
||
],
|
||
'60_75'=>[
|
||
['min_val'=>'0','max_val'=>'2.8','text'=>'不足','color'=>'#FCDB67'],
|
||
['min_val'=>'2.8','max_val'=>'3','text'=>'标准','color'=>'#59D16D'],
|
||
['min_val'=>'3','max_val'=>'6','text'=>'优','color'=>'#3C66D2'],
|
||
],
|
||
'75'=>[
|
||
['min_val'=>'0','max_val'=>'3.1','text'=>'不足','color'=>'#FCDB67'],
|
||
['min_val'=>'3.1','max_val'=>'3.3','text'=>'标准','color'=>'#59D16D'],
|
||
['min_val'=>'3.3','max_val'=>'7','text'=>'优','color'=>'#3C66D2'],
|
||
],
|
||
],
|
||
'woman'=>[
|
||
'45'=>[
|
||
['min_val'=>'0','max_val'=>'1.7','text'=>'不足','color'=>'#FCDB67'],
|
||
['min_val'=>'1.7','max_val'=>'1.9','text'=>'标准','color'=>'#59D16D'],
|
||
['min_val'=>'1.9','max_val'=>'5','text'=>'优','color'=>'#3C66D2'],
|
||
],
|
||
'45_60'=>[
|
||
['min_val'=>'0','max_val'=>'2.1','text'=>'不足','color'=>'#FCDB67'],
|
||
['min_val'=>'2.1','max_val'=>'2.3','text'=>'标准','color'=>'#59D16D'],
|
||
['min_val'=>'2.3','max_val'=>'5','text'=>'优','color'=>'#3C66D2'],
|
||
],
|
||
'60'=>[
|
||
['min_val'=>'0','max_val'=>'2.4','text'=>'不足','color'=>'#FCDB67'],
|
||
['min_val'=>'2.4','max_val'=>'2.6','text'=>'标准','color'=>'#59D16D'],
|
||
['min_val'=>'2.6','max_val'=>'5','text'=>'优','color'=>'#3C66D2'],
|
||
],
|
||
]
|
||
];
|
||
// 基础代谢
|
||
protected $kcal = [
|
||
['min_val'=>'0','max_val'=>'','text'=>'偏低','color'=>'#ff5656'],
|
||
['min_val'=>'','max_val'=>'9999','text'=>'优','color'=>'#3C66D2'],
|
||
];
|
||
// 内脏指数
|
||
protected $visceral = [
|
||
'man'=>[
|
||
['min_val'=>'0','max_val'=>'9','text'=>'标准','color'=>'#59D16D'],
|
||
['min_val'=>'9','max_val'=>'14','text'=>'警惕','color'=>'#FAB000'],
|
||
['min_val'=>'14','max_val'=>'50','text'=>'危险','color'=>'#FA5951'], //红
|
||
],
|
||
'woman'=>[
|
||
['min_val'=>'0','max_val'=>'9','text'=>'标准','color'=>'#59D16D'],
|
||
['min_val'=>'9','max_val'=>'14','text'=>'警惕','color'=>'#FAB000'],
|
||
['min_val'=>'14','max_val'=>'50','text'=>'危险','color'=>'#FA5951'], //红
|
||
]
|
||
];
|
||
// 皮下脂肪
|
||
protected $sfr = [
|
||
'man'=>[
|
||
['min_val'=>'0','max_val'=>'7','text'=>'不足','color'=>'#FCDB67'], //淡黄
|
||
['min_val'=>'7','max_val'=>'15','text'=>'标准','color'=>'#59D16D'], //绿
|
||
['min_val'=>'15','max_val'=>'50','text'=>'偏高','color'=>'#FAB000'], //橙
|
||
],
|
||
'woman'=>[
|
||
['min_val'=>'0','max_val'=>'11','text'=>'不足','color'=>'#FCDB67'],
|
||
['min_val'=>'11','max_val'=>'17','text'=>'标准','color'=>'#59D16D'],
|
||
['min_val'=>'17','max_val'=>'50','text'=>'偏高','color'=>'#FAB000'],
|
||
]
|
||
];
|
||
|
||
|
||
|
||
// 加 bcadd(,,20)
|
||
// 减 bcsub(,,20)
|
||
// 乘 bcmul(,,20)
|
||
// 除 bcdiv(,,20)
|
||
// 计算部分内容的横线标准以及说明文字
|
||
public function conversion_interval($data){
|
||
// $data['gender'] = $data['gender']==2?'woman':'man';
|
||
$gender = $data['gender']==2?'woman':'man';
|
||
$age = $data['age']['value'];
|
||
$weight = 0;
|
||
$temporary_arr = [
|
||
'score_name' =>$data['record_type']['value'] == 'by_device_adc'?$data['score']['name']:'',
|
||
'score_value' =>$data['record_type']['value'] == 'by_device_adc'?$data['score']['value']:'',
|
||
'score_unit' =>$data['record_type']['value'] == 'by_device_adc'?$data['score']['unit']:'',
|
||
'body_type_name' =>$data['record_type']['value'] == 'by_device_adc'?$data['body_type']['name']:'',
|
||
'body_type_value' =>$data['record_type']['value'] == 'by_device_adc'?$data['body_type']['value']:'',
|
||
'body_type_unit' =>$data['record_type']['value'] == 'by_device_adc'?$data['body_type']['unit']:'',
|
||
// 'record_time' =>str_replace('-', '/', $data['record_time']),
|
||
'record_time' =>$data['record_time'],
|
||
'top_list'=>[],
|
||
'bottom_list'=>[],
|
||
];
|
||
// die;
|
||
$date_temporary = new \DateTime($temporary_arr['record_time']);
|
||
|
||
// 使用 format 方法来指定新的日期和时间格式
|
||
$temporary_arr['record_time'] = $date_temporary->format('Y年m月d日 H:i:s');
|
||
// 处理格式(顶部)
|
||
foreach ($this->parameter_aggregate_top as $key => $value) {
|
||
$data[$key]['key_name'] = $key;
|
||
$data[$key]['desc'] = $value;
|
||
if($key == 'weight'){
|
||
$weight = $data[$key]['value'];
|
||
}
|
||
array_push($temporary_arr['top_list'],$data[$key]);
|
||
}
|
||
|
||
// 处理格式(底部)
|
||
foreach ($this->parameter_aggregate_bottom as $key => $value) {
|
||
$data[$key]['key_name'] = $key;
|
||
$data[$key]['desc'] = $value;
|
||
array_push($temporary_arr['bottom_list'],$data[$key]);
|
||
}
|
||
// 处理顶部list
|
||
foreach ($temporary_arr['top_list'] as $key => $value) {
|
||
|
||
if(count($value['list']) > 0){
|
||
$temporary_arr['top_list'][$key]['offset'] = $this->calculate_landing_point($value['list'],$value['value'],$value['standard']);
|
||
}
|
||
}
|
||
// 如果是没有阻抗的测试,那么就不要底部的其他数据了
|
||
if($data['record_type']['value'] != 'by_device_adc'){
|
||
$temporary_arr['bottom_list'] = [];
|
||
return $temporary_arr;
|
||
}
|
||
// 处理底部list
|
||
foreach ($temporary_arr['bottom_list'] as $key => $value) {
|
||
// 脂肪率&
|
||
if($value['key_name'] == 'fat_r'){
|
||
if($age < 30){
|
||
$temporary_arr['bottom_list'][$key]['list'] = $this->fat_r_w[$gender]['29'];
|
||
}else{
|
||
$temporary_arr['bottom_list'][$key]['list'] = $this->fat_r_w[$gender]['30'];
|
||
}
|
||
// 处理异常
|
||
if($temporary_arr['bottom_list'][$key]['standard'] == '异常'){
|
||
$temporary_arr['bottom_list'][$key] = $this->handling_exceptions($temporary_arr['bottom_list'][$key]);
|
||
}
|
||
$temporary_arr['bottom_list'][$key]['offset'] = $this->calculate_landing_point($temporary_arr['bottom_list'][$key]['list'],$temporary_arr['bottom_list'][$key]['value'],$temporary_arr['bottom_list'][$key]['standard']);
|
||
}
|
||
// 脂肪量
|
||
else if($value['key_name'] == 'fat_w'){
|
||
if($age < 30){
|
||
$temporary_arr['bottom_list'][$key]['list'] = $this->fat_r_w[$gender]['29'];
|
||
}else{
|
||
$temporary_arr['bottom_list'][$key]['list'] = $this->fat_r_w[$gender]['30'];
|
||
}
|
||
$temporary_arr['bottom_list'][$key]['list'] = $this->calculate_new_standard($temporary_arr['bottom_list'][$key]['list'],$weight,$value['key_name']);
|
||
// 处理异常
|
||
if($temporary_arr['bottom_list'][$key]['standard'] == '异常'){
|
||
$temporary_arr['bottom_list'][$key] = $this->handling_exceptions($temporary_arr['bottom_list'][$key]);
|
||
}
|
||
$temporary_arr['bottom_list'][$key]['offset'] = $this->calculate_landing_point($temporary_arr['bottom_list'][$key]['list'],$temporary_arr['bottom_list'][$key]['value'],$temporary_arr['bottom_list'][$key]['standard']);
|
||
}
|
||
// 肌肉率
|
||
else if($value['key_name'] == 'muscle'){
|
||
$temporary_arr['bottom_list'][$key]['list'] = $this->muscle_muscleval[$gender];
|
||
// 处理异常
|
||
if($temporary_arr['bottom_list'][$key]['standard'] == '异常'){
|
||
$temporary_arr['bottom_list'][$key] = $this->handling_exceptions($temporary_arr['bottom_list'][$key]);
|
||
}
|
||
$temporary_arr['bottom_list'][$key]['offset'] = $this->calculate_landing_point($temporary_arr['bottom_list'][$key]['list'],$temporary_arr['bottom_list'][$key]['value'],$temporary_arr['bottom_list'][$key]['standard']);
|
||
}
|
||
// 肌肉量
|
||
else if($value['key_name'] == 'muscleval'){
|
||
$temporary_arr['bottom_list'][$key]['list'] = $this->muscle_muscleval[$gender];
|
||
$temporary_arr['bottom_list'][$key]['list'] = $this->calculate_new_standard($temporary_arr['bottom_list'][$key]['list'],$weight,$value['key_name']);
|
||
// 处理异常
|
||
if($temporary_arr['bottom_list'][$key]['standard'] == '异常'){
|
||
$temporary_arr['bottom_list'][$key] = $this->handling_exceptions($temporary_arr['bottom_list'][$key]);
|
||
}
|
||
$temporary_arr['bottom_list'][$key]['offset'] = $this->calculate_landing_point($temporary_arr['bottom_list'][$key]['list'],$temporary_arr['bottom_list'][$key]['value'],$temporary_arr['bottom_list'][$key]['standard']);
|
||
}
|
||
// 水分
|
||
else if($value['key_name'] == 'water'){
|
||
$temporary_arr['bottom_list'][$key]['list'] = $this->water[$gender];
|
||
// 处理异常
|
||
if($temporary_arr['bottom_list'][$key]['standard'] == '异常'){
|
||
$temporary_arr['bottom_list'][$key] = $this->handling_exceptions($temporary_arr['bottom_list'][$key]);
|
||
}
|
||
$temporary_arr['bottom_list'][$key]['offset'] = $this->calculate_landing_point($temporary_arr['bottom_list'][$key]['list'],$temporary_arr['bottom_list'][$key]['value'],$temporary_arr['bottom_list'][$key]['standard']);
|
||
}
|
||
// 蛋白量
|
||
else if($value['key_name'] == 'proteinval'){
|
||
$temporary_arr['bottom_list'][$key]['list'] = $this->proteinval_protein[$gender];
|
||
$temporary_arr['bottom_list'][$key]['list'] = $this->calculate_new_standard($temporary_arr['bottom_list'][$key]['list'],$weight,$value['key_name']);
|
||
// 处理异常
|
||
if($temporary_arr['bottom_list'][$key]['standard'] == '异常'){
|
||
$temporary_arr['bottom_list'][$key] = $this->handling_exceptions($temporary_arr['bottom_list'][$key]);
|
||
}
|
||
$temporary_arr['bottom_list'][$key]['offset'] = $this->calculate_landing_point($temporary_arr['bottom_list'][$key]['list'],$temporary_arr['bottom_list'][$key]['value'],$temporary_arr['bottom_list'][$key]['standard']);
|
||
}
|
||
// 骨重
|
||
else if($value['key_name'] == 'bone'){
|
||
if($gender == 'man'){
|
||
if($weight < 60){
|
||
$temporary_arr['bottom_list'][$key]['list'] = $this->bone[$gender]['60'];
|
||
}else if($weight >= 60 && $weight < 75){
|
||
$temporary_arr['bottom_list'][$key]['list'] = $this->bone[$gender]['60_75'];
|
||
}else{
|
||
$temporary_arr['bottom_list'][$key]['list'] = $this->bone[$gender]['75'];
|
||
}
|
||
}else{
|
||
if($weight < 45){
|
||
$temporary_arr['bottom_list'][$key]['list'] = $this->bone[$gender]['45'];
|
||
}else if($weight >= 45 && $weight < 60){
|
||
$temporary_arr['bottom_list'][$key]['list'] = $this->bone[$gender]['45_60'];
|
||
}else{
|
||
$temporary_arr['bottom_list'][$key]['list'] = $this->bone[$gender]['60'];
|
||
}
|
||
}
|
||
// 处理异常
|
||
if($temporary_arr['bottom_list'][$key]['standard'] == '异常'){
|
||
$temporary_arr['bottom_list'][$key] = $this->handling_exceptions($temporary_arr['bottom_list'][$key]);
|
||
}
|
||
$temporary_arr['bottom_list'][$key]['offset'] = $this->calculate_landing_point($temporary_arr['bottom_list'][$key]['list'],$temporary_arr['bottom_list'][$key]['value'],$temporary_arr['bottom_list'][$key]['standard']);
|
||
}
|
||
// 蛋白率
|
||
else if($value['key_name'] == 'protein'){
|
||
$temporary_arr['bottom_list'][$key]['list'] = $this->proteinval_protein[$gender];
|
||
// 处理异常
|
||
if($temporary_arr['bottom_list'][$key]['standard'] == '异常'){
|
||
$temporary_arr['bottom_list'][$key] = $this->handling_exceptions($temporary_arr['bottom_list'][$key]);
|
||
}
|
||
$temporary_arr['bottom_list'][$key]['offset'] = $this->calculate_landing_point($temporary_arr['bottom_list'][$key]['list'],$temporary_arr['bottom_list'][$key]['value'],$temporary_arr['bottom_list'][$key]['standard']);
|
||
}
|
||
// 基础代谢
|
||
else if($value['key_name'] == 'kcal'){
|
||
$temporary_arr['bottom_list'][$key]['list'] = $this->calculate_new_standard($this->kcal,$weight,$value['key_name'],$age,$gender);
|
||
// 处理异常
|
||
if($temporary_arr['bottom_list'][$key]['standard'] == '异常'){
|
||
$temporary_arr['bottom_list'][$key] = $this->handling_exceptions($temporary_arr['bottom_list'][$key]);
|
||
}
|
||
$temporary_arr['bottom_list'][$key]['offset'] = $this->calculate_landing_point($temporary_arr['bottom_list'][$key]['list'],$temporary_arr['bottom_list'][$key]['value'],$temporary_arr['bottom_list'][$key]['standard']);
|
||
}
|
||
// 内脏指数
|
||
else if($value['key_name'] == 'visceral'){
|
||
$temporary_arr['bottom_list'][$key]['list'] = $this->visceral[$gender];
|
||
// 处理异常
|
||
if($temporary_arr['bottom_list'][$key]['standard'] == '异常'){
|
||
$temporary_arr['bottom_list'][$key] = $this->handling_exceptions($temporary_arr['bottom_list'][$key]);
|
||
}
|
||
$temporary_arr['bottom_list'][$key]['offset'] = $this->calculate_landing_point($temporary_arr['bottom_list'][$key]['list'],$temporary_arr['bottom_list'][$key]['value'],$temporary_arr['bottom_list'][$key]['standard']);
|
||
}
|
||
// 皮下脂肪
|
||
else if($value['key_name'] == 'sfr'){
|
||
$temporary_arr['bottom_list'][$key]['list'] = $this->sfr[$gender];
|
||
// 处理异常
|
||
if($temporary_arr['bottom_list'][$key]['standard'] == '异常'){
|
||
$temporary_arr['bottom_list'][$key] = $this->handling_exceptions($temporary_arr['bottom_list'][$key]);
|
||
}
|
||
$temporary_arr['bottom_list'][$key]['offset'] = $this->calculate_landing_point($temporary_arr['bottom_list'][$key]['list'],$temporary_arr['bottom_list'][$key]['value'],$temporary_arr['bottom_list'][$key]['standard']);
|
||
}
|
||
}
|
||
return $temporary_arr;
|
||
}
|
||
|
||
|
||
// 计算落点百分比(区间字典,值,值描述)
|
||
public function calculate_landing_point($data,$val,$t_val){
|
||
// 根据字典确认有几个区间
|
||
$num = count($data);
|
||
// 没个区间占比
|
||
$a_section = bcdiv(100,$num,2);
|
||
$temporary_data = [];
|
||
$num_0 = 0;
|
||
// 看看值是在哪个区间
|
||
foreach ($data as $key => $value) {
|
||
if($t_val == $value['text']){
|
||
$temporary_data = $value;
|
||
$num_0 = $key;
|
||
break;
|
||
}
|
||
}
|
||
// 加 bcadd(,,20)
|
||
// 减 bcsub(,,20)
|
||
// 乘 bcmul(,,20)
|
||
// 除 bcdiv(,,20)
|
||
$max_num = trim($temporary_data['max_val']);
|
||
$min_num = trim($temporary_data['min_val']);
|
||
if($val < $temporary_data['max_val']){
|
||
// 这个值比最小值多出来多少
|
||
$num_1 = bcsub($val,$min_num,2);
|
||
// 这个区间的值是多少
|
||
$num_2 = bcsub($max_num,$min_num,2);
|
||
// 算出这个值在这个区间的占比
|
||
$num_3 = bcdiv($num_1,$num_2,2);
|
||
|
||
$num_4 = bcmul($num_3,$a_section,2);
|
||
$result = bcadd($num_4,bcmul($a_section,$num_0,2),2);
|
||
}else{
|
||
// $num_4 = bcdiv(1,$num,4)*100;
|
||
$result = bcadd(bcmul($num_0,$a_section,2),$a_section,2);
|
||
}
|
||
return $result;
|
||
}
|
||
|
||
// 计算新标准
|
||
public function calculate_new_standard($data,$w,$k,$age=0,$gender='man'){
|
||
$temporary_arr = [];
|
||
if($k != 'kcal'){
|
||
foreach ($data as $key => $value) {
|
||
array_push($temporary_arr,[
|
||
'min_val'=>bcmul($w,bcdiv($value['min_val'],100,2),2),
|
||
'max_val'=>bcmul($w,bcdiv($value['max_val'],100,2),2),
|
||
'text'=>$value['text'],
|
||
'color'=>$value['color']
|
||
]);
|
||
}
|
||
}else{
|
||
// BMR标准值(男) BMR标准值(女)
|
||
// 60.9*体重(kg)-54 61.0*体重(kg)-51
|
||
// 22.7*体重(kg)+495 22.5*体重(kg)+499
|
||
// 17.5*体重(kg)+651 12.2*体重(kg)+746
|
||
// 15.3*体重(kg)+679 14.7*体重(kg)+496
|
||
// 11.6*体重(kg)+879 8.7*体重(kg)+820
|
||
$vv_val = 0;
|
||
if($age < 3){
|
||
if($gender == 'man'){
|
||
$vv_val = bcsub(bcmul(60.9,$w,2),54,2);
|
||
}else{
|
||
$vv_val = bcsub(bcmul(61.0,$w,2),51,2);
|
||
}
|
||
}else if($age >= 3 && $age < 10){
|
||
if($gender == 'man'){
|
||
$vv_val = bcadd(bcmul(22.7,$w,2),495,2);
|
||
}else{
|
||
$vv_val = bcadd(bcmul(22.5,$w,2),499,2);
|
||
}
|
||
}else if($age >= 10 && $age < 18){
|
||
if($gender == 'man'){
|
||
$vv_val = bcadd(bcmul(17.5,$w,2),651,2);
|
||
}else{
|
||
$vv_val = bcadd(bcmul(12.2,$w,2),746,2);
|
||
}
|
||
}else if($age >= 18 && $age < 30){
|
||
if($gender == 'man'){
|
||
$vv_val = bcadd(bcmul(15.3,$w,2),679,2);
|
||
}else{
|
||
$vv_val = bcadd(bcmul(14.7,$w,2),496,2);
|
||
}
|
||
}else{
|
||
if($gender == 'man'){
|
||
$vv_val = bcadd(bcmul(11.6,$w,2),879,2);
|
||
}else{
|
||
$vv_val = bcadd(bcmul(8.7,$w,2),820,2);
|
||
}
|
||
}
|
||
$data[0]['max_val'] = $vv_val;
|
||
$data[1]['min_val'] = $vv_val;
|
||
$temporary_arr = $data;
|
||
}
|
||
return $temporary_arr;
|
||
}
|
||
|
||
|
||
// 处理异常
|
||
public function handling_exceptions($data){
|
||
if($data['value'] <= $data['list'][0]['max_val']){
|
||
$data['standard'] = $data['list'][0]['text'];
|
||
$data['color'] = $data['list'][0]['color'];
|
||
}else if($data['value'] >= $data['list'][count($data['list'])-1]['min_val']){
|
||
$data['standard'] = $data['list'][count($data['list'])-1]['text'];
|
||
$data['color'] = $data['list'][count($data['list'])-1]['color'];
|
||
}
|
||
return $data;
|
||
}
|
||
|
||
} |