getAge() public static method

If date of death provided, then returns age at point of death
public static getAge ( string $dob, string $date_of_death = null, string $check_date = null ) : string
$dob string
$date_of_death string
$check_date string Optional date to check age at (default is today)
return string $age
示例#1
0
 public function getProfile()
 {
     $db = new DB();
     $sql = "SELECT * FROM " . self::$profile_table . " WHERE id=:id";
     $profile = $db->query($sql, [':id' => $this->id]);
     foreach ($profile[0] as $key => $val) {
         if ('id' == $key) {
             continue;
         }
         $this->{$key} = $val;
     }
     $this->age = Helper::getAge($this->birthday);
 }
示例#2
0
 /**
  * Generates a cataract outcomes report.
  *
  * inputs (all optional):
  * - firm_id
  * - surgeon_id
  * - assistant_id
  * - supervising_surgeon_id
  * - date_from
  * - date_to
  *
  * outputs:
  * - number of cataracts (number)
  * - age of patients (mean and range)
  * - eyes (numbers and percentage for left/right)
  * - final visual acuity (mean and range)
  * - pc ruptures (number and percentage)
  * - complications (number and percentage)
  *
  * @param array $params
  *
  * @return array
  */
 public function reportCataractOperations($params)
 {
     $data = array();
     $where = '';
     @$params['firm_id'] and $where .= " and f.id = {$params['firm_id']}";
     $surgeon_where = '';
     foreach (array('surgeon_id', 'assistant_id', 'supervising_surgeon_id') as $field) {
         if (@$params[$field]) {
             if ($surgeon_where) {
                 $surgeon_where .= ' or ';
             }
             $surgeon_where .= "s.{$field} = {$params[$field]}";
         }
     }
     $surgeon_where and $where .= " and ({$surgeon_where})";
     if (preg_match('/^[0-9]+[\\s\\-][a-zA-Z]{3}[\\s\\-][0-9]{4}$/', @$params['date_from'])) {
         $params['date_from'] = Helper::convertNHS2MySQL($params['date_from']);
     }
     if (preg_match('/^[0-9]+[\\s\\-][a-zA-Z]{3}[\\s\\-][0-9]{4}$/', @$params['date_to'])) {
         $params['date_to'] = Helper::convertNHS2MySQL($params['date_to']);
     }
     @$params['date_from'] and $where .= " and e.created_date >= '{$params['date_from']}'";
     @$params['date_to'] and $where .= " and e.created_date <= '{$params['date_to']}'";
     $data['cataracts'] = 0;
     $data['eyes'] = array('left' => array('number' => 0), 'right' => array('number' => 0));
     $data['age']['from'] = 200;
     // wonder if this will ever need to be changed..
     $data['age']['to'] = 0;
     $data['final_visual_acuity'] = array('from' => 0, 'to' => 0, 'mean' => 0);
     $data['pc_ruptures']['number'] = 0;
     $data['complications']['number'] = 0;
     $ages = array();
     if (!($db = Yii::app()->params['report_db'])) {
         $db = 'db';
     }
     foreach (Yii::app()->{$db}->createCommand()->select('pl.eye_id, p.dob, p.date_of_death, comp.id as comp_id, pc.id as pc_id')->from('et_ophtroperationnote_procedurelist pl')->join('et_ophtroperationnote_cataract c', 'pl.event_id = c.event_id')->join('event e', 'c.event_id = e.id')->join('et_ophtroperationnote_surgeon s', 's.event_id = e.id')->join('episode ep', 'e.episode_id = ep.id')->join('firm f', 'ep.firm_id = f.id')->join('patient p', 'ep.patient_id = p.id')->leftJoin('et_ophtroperationnote_cataract_complication comp', 'comp.cataract_id = c.id')->leftJoin('et_ophtroperationnote_cataract_complication pc', 'pc.cataract_id = c.id and pc.complication_id = 11')->where("pl.deleted = 0 and c.deleted = 0 and e.deleted = 0 and s.deleted = 0 and ep.deleted = 0 and f.deleted = 0 and p.deleted = 0 and (comp.id is null or comp.deleted = 0) and (pc.id is null or pc.deleted = 0) {$where}")->queryAll() as $row) {
         ++$data['cataracts'];
         $row['eye_id'] == 1 ? $data['eyes']['left']['number']++ : $data['eyes']['right']['number']++;
         $age = Helper::getAge($row['dob'], $row['date_of_death']);
         $ages[] = $age;
         //this is taking ages
         if ($age < $data['age']['from']) {
             $data['age']['from'] = $age;
         }
         if ($age > $data['age']['to']) {
             $data['age']['to'] = $age;
         }
         $row['pc_id'] and $data['pc_ruptures']['number']++;
         $row['comp_id'] and $data['complications']['number']++;
     }
     if (count($ages) == 0) {
         $data['age']['from'] = 0;
     }
     $data['eyes']['left']['percentage'] = $data['cataracts'] > 0 ? number_format($data['eyes']['left']['number'] / ($data['cataracts'] / 100), 2) : 0;
     $data['eyes']['right']['percentage'] = $data['cataracts'] > 0 ? number_format($data['eyes']['right']['number'] / ($data['cataracts'] / 100), 2) : 0;
     $data['age']['mean'] = count($ages) > 0 ? number_format(array_sum($ages) / count($ages), 2) : 0;
     $data['pc_ruptures']['percentage'] = $data['cataracts'] > 0 ? number_format($data['pc_ruptures']['number'] / ($data['cataracts'] / 100), 2) : 0;
     $data['complications']['percentage'] = $data['cataracts'] > 0 ? number_format($data['complications']['number'] / ($data['cataracts'] / 100), 2) : 0;
     $data['pc_rupture_average']['number'] = 0;
     $data['complication_average']['number'] = 0;
     if (!($db = Yii::app()->params['report_db'])) {
         $db = 'db';
     }
     foreach (Yii::app()->{$db}->createCommand()->select('pl.eye_id, p.dob, p.date_of_death, comp.id as comp_id, pc.id as pc_id')->from('et_ophtroperationnote_procedurelist pl')->join('et_ophtroperationnote_cataract c', 'pl.event_id = c.event_id')->join('event e', 'c.event_id = e.id')->join('et_ophtroperationnote_surgeon s', 's.event_id = e.id')->join('episode ep', 'e.episode_id = ep.id')->join('firm f', 'ep.firm_id = f.id')->join('patient p', 'ep.patient_id = p.id')->leftJoin('et_ophtroperationnote_cataract_complication comp', 'comp.cataract_id = c.id')->leftJoin('et_ophtroperationnote_cataract_complication pc', 'pc.cataract_id = c.id and pc.complication_id = 11')->where('pl.deleted = 0 and c.deleted = 0 and e.deleted = 0 and s.deleted = 0 and ep.deleted = 0 and f.deleted = 0 and p.deleted = 0 and (comp.id is null or comp.deleted = 0) and (pc.id is null or pc.deleted = 0)')->queryAll() as $i => $row) {
         $row['pc_id'] and $data['pc_rupture_average']['number']++;
         $row['comp_id'] and $data['complication_average']['number']++;
     }
     ++$i;
     $data['pc_rupture_average']['percentage'] = number_format($data['pc_rupture_average']['number'] / ($i / 100), 2);
     $data['complication_average']['percentage'] = number_format($data['complication_average']['number'] / ($i / 100), 2);
     return $data;
 }
示例#3
0
 /**
  * Calculate the patient's age
  *
  * @param string $check_date Date to check age on (default is today)
  * @return string
  */
 public function ageOn($check_date)
 {
     return Helper::getAge($this->dob, $this->date_of_death, $check_date);
 }
示例#4
0
 /**
  * @dataProvider getAgeDataProvider
  */
 public function testGetAge($expected, $dob, $date_of_death = null, $check_date = null)
 {
     $this->assertEquals($expected, Helper::getAge($dob, $date_of_death, $check_date));
 }