Esempio n. 1
0
 public static function listClaims(array $filters)
 {
     $db = Zend_Registry::get('dbAdapter');
     $sqlSelect = $db->select()->from('claimFiles')->join('encounter', 'encounter.encounter_id = claimFiles.visitId')->order('claimFiles.dateTime DESC')->order('encounter.appointmentId');
     foreach ($filters as $key => $value) {
         switch ($key) {
             case 'DOSDateRange':
                 $sqlSelect->where("encounter.date_of_treatment BETWEEN '{$value['start']} 00:00:00' AND '{$value['end']} 23:59:59'");
                 break;
             case 'facilities':
                 // practice, building, room
                 if (!is_array($value)) {
                     $value = array($value);
                 }
                 $facilities = array();
                 foreach ($value as $val) {
                     $facilities[] = 'practice_id = ' . (int) $val['practice'] . ' AND building_id = ' . (int) $val['building'] . ' AND room_id = ' . (int) $val['room'];
                 }
                 $sqlSelect->where(implode(' OR ', $facilities));
                 break;
             case 'payers':
                 $payers = array();
                 foreach ($value as $payerId) {
                     $payers[] = (int) $payerId;
                 }
                 $sqlSelect->where('activePayerId IN (' . implode(',', $payers) . ')');
                 break;
             case 'facility':
                 // practice, building, room
                 $sqlSelect->where('encounter.practice_id = ?', (int) $value['practice']);
                 $sqlSelect->where('encounter.building_id = ?', (int) $value['building']);
                 $sqlSelect->where('encounter.room_id = ?', (int) $value['room']);
                 break;
             case 'insurer':
                 $sqlSelect->where('encounter.activePayerId = ?', (int) $value);
                 break;
             case 'visitId':
                 $sqlSelect->where('encounter.encounter_id = ?', (int) $value);
                 break;
             case 'provider':
                 $sqlSelect->where('encounter.treating_person_id = ?', (int) $value);
                 break;
         }
     }
     $columnMeta = array();
     $rows = array();
     $stmt = $db->query($sqlSelect);
     while ($row = $stmt->fetch(PDO::FETCH_NUM)) {
         if (!isset($rows[0])) {
             for ($i = 0, $ctr = count($row); $i < $ctr; $i++) {
                 $columnMeta[$i] = $stmt->getColumnMeta($i);
             }
         }
         $data = array();
         $col = 0;
         foreach ($columnMeta as $i => $meta) {
             $data[$meta['table']][$meta['name']] = $row[$i];
         }
         $claimFile = new ClaimFile();
         $claimFile->populateWithArray($data[$claimFile->_table]);
         $visit = new Visit();
         $visit->populateWithArray($data[$visit->_table]);
         $rows[] = array('claimFile' => $claimFile, 'visit' => $visit);
     }
     return $rows;
 }