<?php

namespace admin\action;

class rAction  extends \action
{
    public function h24()
    {
		$req = \mvc::$req;
		if(empty($req['k'])){
		    return;
		}
		$id = $req['k'];
		$blood = new \model\doctor\blood();
		$report = new \model\doctor\report();
		$user = new \model\user();
		$reportRow = $report->getRowInfo($id);
		$userRow = $user->getRowByKey($reportRow['r_au_id']);
		unset($userRow['au_pass']);
		$bloodRows = $blood->get24Hour([
		    'uid'=> $reportRow['r_au_id'],
		    'date_start'=> $reportRow['r_date_start'],
		    'time_start'=> $reportRow['r_time_start'],
		    'hand'=> $reportRow['r_hand'],
		]);
		$bloodRowsCount = count($bloodRows);
		//计算异常
        $standardArr = [
            '24'=>[
                'max'=>130,
                'min'=>80
            ],
            'nightUp'=>[ //夜间下降率
                'max'=>20,
                'min'=>10
            ],
            'heart'=>[
                'max'=>100,
                'min'=>50
            ],
            'pulse'=>[
                'max'=>61,
                'min'=>19
            ],
            'map'=>[
                'max'=>105,
                'min'=>70
            ],
            'sbp'=>[
                'all'=>[
                    'max'=>130,
                ],
                'sun'=>[
                    'max'=>135,
                ],
                'night'=>[
                    'max'=>120,
                ],
                'morning'=>[
                    'max'=>135,
                ],
            ],
            'dbp'=>[
                'all'=>[
                    'max'=>80,
                ],
                'sun'=>[
                    'max'=>85,
                ],
                'night'=>[
                    'max'=>70,
                ],
                'morning'=>[
                    'max'=>85,
                ],
            ],
        ]; 
        $sun_begin = date('H:i',strtotime('2000-01-01 '.$reportRow['r_sun_begin'].':00'));
        $sun_end = date('H:i',strtotime('2000-01-01 '.$reportRow['r_sun_end'].':00'));
        $morning_end = date('H:i',strtotime('2000-01-01 '.$reportRow['r_sun_begin'].':00')+2*60*60);
        $sunRows = [];
        $nightRows = [];
        $morningRows = [];
		foreach($bloodRows as $k=>$row){
		    $sbp = $row['bd_sbp']*1;
		    $dbp = $row['bd_dbp']*1;
		    $heart = $row['bd_heart_rate']*1;
		    $pulse = $sbp - $dbp;
		    $map = floor(($sbp - $dbp) / 3 + $dbp);
		    $time = date('H:i',strtotime('2000-01-01 '.$row['bd_time'].':00'));
		    if($time>=$sun_begin && $time<=$sun_end){
		        $row['sun'] = true; //白天
		    }else{
		        $row['sun'] = false;//晚上
		    }
		    $row['err'] = [];
		    //心率异常
	        if($heart >= $standardArr['heart']['max'] || $heart <= $standardArr['heart']['min']){
	            $row['err']['heart'] = true;
	        }
		    //脉压异常
	        if($pulse >= $standardArr['pulse']['max'] || $pulse <= $standardArr['pulse']['min']){
	            $row['err']['pulse'] = true;
	        }
		    //平均动脉压
	        if($map >= $standardArr['map']['max'] || $map <= $standardArr['map']['min']){
	            $row['err']['map'] = true;
	        }
	        //SBP,DBP异常
		    if($row['sun']){
    	        if($sbp >= $standardArr['sbp']['sun']['max']){
    	            $row['err']['sbp'] = true;
    	        }
    	        if($dbp >= $standardArr['dbp']['sun']['max']){
    	            $row['err']['dbp'] = true;
    	        }
    		    $sunRows[$k] = $row;
		    }else{
    	        if($sbp >= $standardArr['sbp']['night']['max']){
    	            $row['err']['sbp'] = true;
    	        }
    	        if($dbp >= $standardArr['dbp']['night']['max']){
    	            $row['err']['dbp'] = true;
    	        }
    		    $nightRows[$k] = $row;
		    }
		    //晨峰
		    if($time>=$sun_begin && $time<=$morning_end){
		        $morningRows[$k] = $row;
		    }
		     
		    $bloodRows[$k]=$row;
		}
		
		//摘要
        $sumAllArr = $blood->sumInfo($bloodRows);
        $sumSunArr = $blood->sumInfo($sunRows);
        $sumNightArr = $blood->sumInfo($nightRows);
        //晨峰
        $sumMorningArr = $blood->sumInfo($morningRows);
        
		//动态动脉硬化指数
		$slope =round(1 - $blood->slope($sumAllArr['sbp']['list'],$sumAllArr['dbp']['list']),3);
        
        
		$hourArr = []; //小时列表
		$sbpArr = [];
		$dbpArr = []; 
		$heartArr = []; 
		$pulseArr = []; 
		$mapArr = []; 
		
		//24小时图表数据
		foreach($bloodRows as $row){
		    $hour = $row['bd_date'] . ' '. $row['bd_time'].':00';
		    $hourArr[] = $row['bd_date'] . ' '. $row['bd_time'].':00';
		    $sbpArr[$hour] = $row['bd_sbp']*1;
		    $dbpArr[$hour] = $row['bd_dbp']*1;
		    $heartArr[$hour] = $row['bd_heart_rate']*1;
		}
		//血压分布图表数据
		$fbSbpKeys = [];
		$fbDbpKeys = [];
		$fbHeartKeys = [];
		for($i=80;$i<=180;$i=$i+10) $fbSbpKeys[] = $i;
		for($i=50;$i<=160;$i=$i+10) $fbDbpKeys[] = $i;
		for($i=50;$i<=150;$i=$i+10) $fbHeartKeys[] = $i;
		$fbSbpArr = [];
		$fbDbpArr = [];
		$fbHeartArr = [];
		foreach($bloodRows as $row){
		    $sbp = $row['bd_sbp']*1;
		    $dbp = $row['bd_dbp']*1;
		    $heart = $row['bd_heart_rate']*1;
		    foreach($fbSbpKeys as $v){
		        if($sbp>=$v && $sbp<$v+10){
		            $fbSbpArr[$v]++;
		        }else{
		            if(!isset($fbSbpArr[$v])) $fbSbpArr[$v] = 0;
		        }
		    }
		    foreach($fbDbpKeys as $v){
		        if($dbp>=$v && $dbp<$v+10){
		            $fbDbpArr[$v]++;
		        }else{
		            if(!isset($fbDbpArr[$v])) $fbDbpArr[$v] = 0;
		        }
		    }
		    foreach($fbHeartKeys as $v){
		        if($heart>=$v && $heart<$v+10){
		            $fbHeartArr[$v]++;
		        }else{
		            if(!isset($fbHeartArr[$v])) $fbHeartArr[$v] = 0;
		        }
		    }
		}
		$bloodRowsCount = count($bloodRows);
		foreach($fbSbpArr as $k=>$v){
		    $fbSbpArr[$k] = round($v/$bloodRowsCount*100,1);
		}
		foreach($fbDbpArr as $k=>$v){
		    $fbDbpArr[$k] = round($v/$bloodRowsCount*100,1);
		}
		foreach($fbHeartArr as $k=>$v){
		    $fbHeartArr[$k] = round($v/$bloodRowsCount*100,1);
		}
		
		\view::set('user',$userRow);
		\view::set('USERID',$userRow['au_id']);
	    \view::set('headerTitle',$userRow['au_name'].' '.($userRow['au_sex']=='男'?'先生':'女士'));
		\view::set('report',$reportRow);
		\view::set('bloodRows',$bloodRows);
		\view::set('hourArr',$hourArr);
		\view::set('sbpArr',$sbpArr);
		\view::set('dbpArr',$dbpArr);
		\view::set('heartArr',$heartArr);
		\view::set('pulseArr',$pulseArr);
		\view::set('mapArr',$mapArr);
		\view::set('sumAllArr',$sumAllArr);
		\view::set('sumSunArr',$sumSunArr);
		\view::set('sumNightArr',$sumNightArr);
		\view::set('sumMorningArr',$sumMorningArr);
		\view::set('standardArr',$standardArr);
		
		\view::set('fbSbpKeys',$fbSbpKeys);
		\view::set('fbDbpKeys',$fbDbpKeys);
		\view::set('fbHeartKeys',$fbHeartKeys);
		\view::set('fbSbpArr',$fbSbpArr);
		\view::set('fbDbpArr',$fbDbpArr);
		\view::set('fbHeartArr',$fbHeartArr);
		
		\view::set('slope',$slope);
		\view::put();
    }
}