示例#1
0
 public function listing()
 {
     $access_level = $this->session->userdata('user_indicator');
     $source = 0;
     if ($access_level == "pharmacist") {
         $source = $this->session->userdata('facility');
     }
     $data = array();
     $data['content_view'] = "regimen_listing_v";
     $data['styles'] = array("jquery-ui.css");
     $data['scripts'] = array("jquery-ui.js");
     $regimens = Regimen::getAllHydrated($source, $access_level);
     $tmpl = array('table_open' => '<table id="regimen_setting" class="table table-bordered table-hover table-striped setting_table">');
     $this->table->set_template($tmpl);
     $this->table->set_heading('id', 'Regimen', 'Line', 'Regimen Category', 'Type Of Service', 'Options');
     foreach ($regimens as $regimen) {
         $links = "";
         $drug = $regimen['id'];
         $type_of_service = $regimen['Regimen_Service_Type'];
         //if($type_of_service!="ART" && $access_level!="system_administrator"){
         if ($access_level != "facility_administrator") {
             $array_param = array('id' => $regimen['id'], 'role' => 'button', 'class' => 'edit_user', 'data-toggle' => 'modal');
             if ($regimen['Enabled'] == 1) {
                 //$links .= anchor('' . $regimen['id'], 'Edit', array('class' => 'edit_user','id'=>$regimen['id']));
                 $links .= anchor('#edit_form', 'Edit', $array_param);
             }
         } elseif ($access_level == "facility_administrator") {
             //href="#entry_form" role="button" id="new_regimen" class="btn" data-toggle="modal"
             $array_param = array('id' => $regimen['id'], 'role' => 'button', 'class' => 'edit_user', 'data-toggle' => 'modal');
             if ($regimen['Enabled'] == 1) {
                 $links .= anchor('#edit_form', 'Edit', $array_param);
             }
         }
         if ($regimen['Enabled'] == 1 && @$regimen['Merged_To']) {
             $links .= " | ";
             $links .= anchor('regimen_management/disable/' . $regimen['id'], 'Disable', array('class' => 'disable_user actual'));
         }
         if ($regimen['Enabled'] == 1 && @$regimen['Merged_To'] == "" && $access_level == "facility_administrator") {
             $links .= " | ";
             $links .= anchor('regimen_management/disable/' . $regimen['id'], 'Disable', array('class' => 'disable_user actual'));
             $links .= " | ";
             $links .= "<a href='#' class='merge_drug' id='{$drug}'>Merge</a>";
         }
         if ($regimen['Enabled'] == 0 && $access_level == "facility_administrator") {
             $links .= anchor('regimen_management/enable/' . $regimen['id'], 'Enable', array('class' => 'enable_user actual'));
         }
         if ($regimen['Merged_To'] != '') {
             if ($access_level == "facility_administrator") {
                 $links .= " | ";
                 $links .= anchor('regimen_management/unmerge/' . $regimen['id'], 'Unmerge', array('class' => 'unmerge_drug'));
             }
             $checkbox = "<input type='checkbox' name='drugcodes' id='drugcodes' class='drugcodes' value='{$drug}' disabled/>";
         } else {
             $checkbox = "<input type='checkbox' name='drugcodes' id='drugcodes' class='drugcodes' value='{$drug}'/>";
         }
         $mapped = "";
         if ($regimen['map'] != 0) {
             $mapped = "<b>(mapped)</b>";
         }
         if ($regimen['Regimen_Code']) {
             $regimen_code = $regimen['Regimen_Code'] . " | " . $regimen['Regimen_Desc'];
         } else {
             $regimen_code = $regimen['Regimen_Desc'];
         }
         $this->table->add_row($regimen['id'], $checkbox . "" . $regimen_code . " " . $mapped, $regimen['Line'], $regimen['Regimen_Category'], $regimen['Regimen_Service_Type'], $links);
     }
     $data['access_level'] = $access_level;
     $data['regimens'] = $this->table->generate();
     $data['regimen_categories'] = Regimen_Category::getAll();
     $data['regimen_service_types'] = Regimen_Service_Type::getAll();
     $sql = "SELECT s.id,s.code,s.name,sr.Name as category_name,s.category_id\n                FROM sync_regimen s \n                LEFT JOIN sync_regimen_category sr ON sr.id = s.category_id\n                WHERE s.id NOT IN(SELECT r.map\n                                  FROM regimen r\n                                  WHERE r.map !='0')\n                OR s.name LIKE '%other%'\n                OR s.code LIKE '%x%'\n                ORDER BY s.category_id,s.code asc";
     $query = $this->db->query($sql);
     $unmapped_regimens = $query->result_array();
     $sync_regimens = Sync_Regimen::getActive();
     $data['edit_mappings'] = $unmapped_regimens;
     $data['mappings'] = $sync_regimens;
     $this->base_params($data);
 }
示例#2
0
 public function aggregate_download($period_begin, $facility_id, $cdrr_id, $fmaps_id, $facility_code)
 {
     $this->load->library('PHPExcel');
     $dir = "Export";
     $template = "order_merge";
     $inputFileType = 'Excel5';
     $inputFileName = $_SERVER['DOCUMENT_ROOT'] . '/ADT/assets/' . $template . '.xls';
     $objReader = PHPExcel_IOFactory::createReader($inputFileType);
     $objPHPExcel = $objReader->load($inputFileName);
     //get satellite facilities
     $central_site = array('id' => $facility_id);
     $satellites = Sync_Facility::getSatellitesDetails($central_site['id']);
     $details = Facilities::getCodeFacility($facility_code);
     $facility_name = $details->name;
     $district = $details->Parent_District->Name;
     //1.0 set worksheet index for cdrrs
     $objWorksheet = $objPHPExcel->setActiveSheetIndex(0);
     $highestColumm = $objPHPExcel->setActiveSheetIndex(0)->getHighestColumn();
     $highestRow = $objPHPExcel->setActiveSheetIndex(0)->getHighestRow();
     $arr = $objPHPExcel->getActiveSheet()->toArray(null, true, true, true);
     $drug_count = 15;
     $drug_gap = 8;
     //range of satellites letters
     $start_column = 'F';
     $columns = array($start_column);
     $current = $start_column;
     while ($current != $highestColumm) {
         $columns[] = ++$current;
     }
     //loop through the drugs
     while ($drug_count <= $highestRow) {
         $drug_name = trim($arr[$drug_count]['A']);
         //drug exceptions that drug_id cannot be found
         $exceptions = array('Abacavir (ABC) liquid 20mg/ml' => 20, 'Lamivudine (3TC) liquid 10mg/ml' => 26, 'Lopinavir/ritonavir (LPV/r) liquid 80/20mg/ml' => 28, 'Nevirapine (NVP) Susp 10mg/ml' => 30, 'Nevirapine (NVP) Susp 10mg/ml (For PMTCT only)' => 141, 'Zidovudine (AZT) liquid 10mg/ml' => 35, 'Cotrimoxazole Suspension 240mg/5ml' => 38, 'Diflucan Suspension 50mg/5ml' => 41, 'Amphotericin B 50mg IV Injection' => 45);
         $pack_size = (int) str_ireplace(array('Packs', 'of', 'tablets', 'Bottle', 'ml', 'capsules', 'Tablets', 'Pack', 'Vials'), array(''), trim($arr[$drug_count]['B']));
         $drug_id = $this->getMappedDrug($drug_name, $pack_size);
         //get drug_id for exception drugs
         if (array_key_exists($drug_name, $exceptions)) {
             $drug_id = $exceptions[$drug_name];
         }
         //if drug_id is not null
         if ($drug_id != null) {
             //loop through satellite facilities
             foreach ($satellites as $index => $satellite) {
                 //write satellite name and level
                 $objPHPExcel->getActiveSheet()->SetCellValue($columns[$index] . '10', $satellite['name']);
                 $pos = stripos($satellite['keph_level'], "Level");
                 if ($pos !== false) {
                     $level = str_ireplace(array('Level'), array(''), $satellite['keph_level']);
                 } else {
                     $level = '';
                 }
                 $objPHPExcel->getActiveSheet()->SetCellValue($columns[$index] . '11', $level);
                 $facility_id = $satellite['id'];
                 //query to pull data about the drug
                 $sql = "SELECT *\n\t\t\t\t\t\t\tFROM cdrr c\n\t\t\t\t\t\t\tLEFT JOIN cdrr_item ci ON ci.cdrr_id=c.id\n\t\t\t\t\t\t\tWHERE c.facility_id='{$facility_id}'\n\t\t\t\t\t\t\tAND c.period_begin='{$period_begin}'\n\t\t\t\t\t\t\tAND ci.drug_id='{$drug_id}'\n\t\t\t\t\t\t\tORDER BY c.id desc\n\t\t\t\t\t\t\tLIMIT 1";
                 $query = $this->db->query($sql);
                 $orders = $query->result_array();
                 foreach ($orders as $order) {
                     //loop through order transactions and write them to excel
                     $objPHPExcel->getActiveSheet()->SetCellValue($columns[$index] . $drug_count, $order['balance']);
                     $objPHPExcel->getActiveSheet()->SetCellValue($columns[$index] . ($drug_count + 1), $order['received']);
                     $objPHPExcel->getActiveSheet()->SetCellValue($columns[$index] . ($drug_count + 2), $order['dispensed_units']);
                     $objPHPExcel->getActiveSheet()->SetCellValue($columns[$index] . ($drug_count + 3), $order['losses']);
                     $objPHPExcel->getActiveSheet()->SetCellValue($columns[$index] . ($drug_count + 4), $order['adjustments']);
                     $objPHPExcel->getActiveSheet()->SetCellValue($columns[$index] . ($drug_count + 5), $order['count']);
                     $objPHPExcel->getActiveSheet()->SetCellValue($columns[$index] . ($drug_count + 6), $order['out_of_stock']);
                     $objPHPExcel->getActiveSheet()->SetCellValue($columns[$index] . ($drug_count + 7), $order['resupply']);
                 }
             }
         }
         $drug_count += $drug_gap;
     }
     //write to file(B5-central site name,C7-period_begin,J7-period_end)
     $objPHPExcel->getActiveSheet()->SetCellValue('B5', $facility_name);
     $objPHPExcel->getActiveSheet()->SetCellValue('J5', $district);
     $objPHPExcel->getActiveSheet()->SetCellValue('C7', date('d/m/Y', strtotime($period_begin)));
     $objPHPExcel->getActiveSheet()->SetCellValue('J7', date('t/m/Y', strtotime($period_begin)));
     //2.0 set worksheet index for maps
     $objWorksheet = $objPHPExcel->setActiveSheetIndex(1);
     $highestColumm = $objPHPExcel->setActiveSheetIndex(1)->getHighestColumn();
     $highestRow = $objPHPExcel->setActiveSheetIndex(1)->getHighestRow();
     $arr = $objPHPExcel->getActiveSheet()->toArray(null, true, true, true);
     $regimen_count = 16;
     //range of satellites letters
     $start_column = 'E';
     $columns = array($start_column);
     $current = $start_column;
     while ($current != $highestColumm) {
         $columns[] = ++$current;
     }
     //loop through the regimens
     while ($regimen_count < 100) {
         if ($regimen_count != 24) {
             //remove row 24
             $regimen_code = trim($arr[$regimen_count]['A']);
             if ($regimen_code != '') {
                 $regimen_id = '';
                 $regimen_id = Sync_Regimen::getId($regimen_code);
                 if ($regimen_id != "") {
                     //loop through satellite facilities
                     foreach ($satellites as $index => $satellite) {
                         //write satellite name and level
                         $objPHPExcel->getActiveSheet()->SetCellValue($columns[$index] . '10', $satellite['name']);
                         $pos = stripos($satellite['keph_level'], "Level");
                         if ($pos !== false) {
                             $level = str_ireplace(array('Level'), array(''), $satellite['keph_level']);
                         } else {
                             $level = '';
                         }
                         $objPHPExcel->getActiveSheet()->SetCellValue($columns[$index] . '11', $level);
                         $facility_id = $satellite['id'];
                         //query to pull data about the regimen
                         $sql = "SELECT *\n\t\t\t\t\t\t\t\t\t FROM maps m\n\t\t\t\t\t\t\t\t\t LEFT JOIN maps_item mi ON mi.maps_id=m.id\n\t\t\t\t\t\t\t\t\t WHERE m.facility_id='{$facility_id}'\n\t\t\t\t\t\t\t\t\t AND m.period_begin='{$period_begin}'\n\t\t\t\t\t\t\t\t\t AND mi.regimen_id='{$regimen_id}'\n\t\t\t\t\t\t\t\t\t ORDER BY m.id desc\n\t\t\t\t\t\t\t\t\t LIMIT 1";
                         $query = $this->db->query($sql);
                         $maps = $query->result_array();
                         foreach ($maps as $map) {
                             //loop through maps transactions and write them to excel
                             $objPHPExcel->getActiveSheet()->SetCellValue($columns[$index] . $regimen_count, $map['total']);
                             //write other data e.g total clients on ART only
                             $objPHPExcel->getActiveSheet()->SetCellValue($columns[$index] . '100', $map['art_adult']);
                             $objPHPExcel->getActiveSheet()->SetCellValue($columns[$index] . '101', $map['art_child']);
                             $objPHPExcel->getActiveSheet()->SetCellValue($columns[$index] . '102', $map['new_male']);
                             $objPHPExcel->getActiveSheet()->SetCellValue($columns[$index] . '103', $map['revisit_male']);
                             $objPHPExcel->getActiveSheet()->SetCellValue($columns[$index] . '104', $map['new_female']);
                             $objPHPExcel->getActiveSheet()->SetCellValue($columns[$index] . '105', $map['revisit_female']);
                             $objPHPExcel->getActiveSheet()->SetCellValue($columns[$index] . '106', $map['new_pmtct']);
                             $objPHPExcel->getActiveSheet()->SetCellValue($columns[$index] . '107', $map['revisit_pmtct']);
                             $objPHPExcel->getActiveSheet()->SetCellValue($columns[$index] . '108', $map['total_adult']);
                             $objPHPExcel->getActiveSheet()->SetCellValue($columns[$index] . '109', $map['total_child']);
                             $objPHPExcel->getActiveSheet()->SetCellValue($columns[$index] . '110', $map['diflucan_adult']);
                             $objPHPExcel->getActiveSheet()->SetCellValue($columns[$index] . '111', $map['diflucan_child']);
                         }
                     }
                 }
             }
         }
         $regimen_count++;
     }
     //set facility name on regimen sheet
     $objPHPExcel->getActiveSheet()->SetCellValue('B5', $facility_name);
     $objPHPExcel->getActiveSheet()->SetCellValue('I5', $district);
     //3.0 set worksheet index for D-CDRR
     $objWorksheet = $objPHPExcel->setActiveSheetIndex(2);
     $highestColumm = $objPHPExcel->setActiveSheetIndex(2)->getHighestColumn();
     $highestRow = $objPHPExcel->setActiveSheetIndex(2)->getHighestRow();
     $arr = $objPHPExcel->getActiveSheet()->toArray(null, true, true, true);
     //D-CDRR
     $drug_name = "CONCAT_WS('] ',CONCAT_WS(' [',sd.name,sd.abbreviation),CONCAT_WS(' ',sd.strength,sd.formulation)) as drug_map";
     $sql = "SELECT c.*,ci.*,cl.*,f.*,co.county as county_name,d.name as district_name,u.*,al.level_name,IF(c.code='D-CDRR',CONCAT('D-CDRR#',c.id),CONCAT('F-CDRR#',c.id)) as cdrr_label,c.status as status_name,sf.name as facility_name,{$drug_name}\n\t\t\t\tFROM cdrr c\n\t\t\t\tLEFT JOIN cdrr_item ci ON ci.cdrr_id=c.id\n\t\t\t\tLEFT JOIN cdrr_log cl ON cl.cdrr_id=c.id\n\t\t\t\tLEFT JOIN sync_facility sf ON sf.id=c.facility_id\n\t\t\t\tLEFT JOIN facilities f ON f.facilitycode=sf.code\n\t\t\t\tLEFT JOIN counties co ON co.id=f.county\n\t\t\t\tLEFT JOIN district d ON d.id=f.district\n\t\t\t\tLEFT JOIN sync_user su ON su.id=cl.user_id\n\t\t\t\tLEFT JOIN users u ON su.id=u.map\n\t\t\t\tLEFT JOIN access_level al ON al.id=u.Access_Level\n\t\t\t\tLEFT JOIN sync_drug sd ON sd.id=ci.drug_id\n\t\t\t\tLEFT JOIN drugcode dc ON dc.map=sd.id\n\t\t\t\tWHERE c.id='{$cdrr_id}'";
     $query = $this->db->query($sql);
     $cdrr_array = $query->result_array();
     $objPHPExcel->getActiveSheet()->SetCellValue('C4', $cdrr_array[0]['name']);
     $objPHPExcel->getActiveSheet()->SetCellValue('G4', $cdrr_array[0]['facilitycode']);
     $objPHPExcel->getActiveSheet()->SetCellValue('C5', $cdrr_array[0]['county_name']);
     $objPHPExcel->getActiveSheet()->SetCellValue('G5', $cdrr_array[0]['district_name']);
     $objPHPExcel->getActiveSheet()->SetCellValue('D7', date('d/m/y', strtotime($cdrr_array[0]['period_begin'])));
     $objPHPExcel->getActiveSheet()->SetCellValue('G7', date('d/m/y', strtotime($cdrr_array[0]['period_end'])));
     if ($cdrr_array[0]['sponsors'] != "") {
         if (strtoupper($cdrr_array[0]['sponsors']) == "GOK") {
             $loc = "D";
         } else {
             if (strtoupper($cdrr_array[0]['sponsors']) == "PEPFAR") {
                 $loc = "F";
             } else {
                 if (strtoupper($cdrr_array[0]['sponsors']) == "MSF") {
                     $loc = "H";
                 }
             }
         }
         $objPHPExcel->getActiveSheet()->SetCellValue($loc . '9', "X");
     }
     $services = explode(",", $cdrr_array[0]['services']);
     if ($services != "") {
         foreach ($services as $service) {
             if (strtoupper($service) == "ART") {
                 $objPHPExcel->getActiveSheet()->SetCellValue('D11', "X");
             } else {
                 if (strtoupper($service) == "PMTCT") {
                     $objPHPExcel->getActiveSheet()->SetCellValue('F11', "X");
                 } else {
                     if (strtoupper($service) == "PEP") {
                         $objPHPExcel->getActiveSheet()->SetCellValue('H11', "X");
                     }
                 }
             }
         }
     }
     $objPHPExcel->getActiveSheet()->SetCellValue('A95', $cdrr_array[0]['comments']);
     $arr = $objPHPExcel->getActiveSheet()->toArray(null, true, true, true);
     for ($i = 18; $i <= 93; $i++) {
         $drug = $arr[$i]['A'];
         $pack_size = $arr[$i]['B'];
         if ($drug) {
             $key = $this->getMappedDrug($drug, $pack_size);
             if ($key !== null) {
                 foreach ($cdrr_array as $cdrr_item) {
                     if ($key == $cdrr_item['drug_id']) {
                         if ($cdrr_array[0]['code'] == "F-CDRR_packs") {
                             $objPHPExcel->getActiveSheet()->SetCellValue('C' . $i, $cdrr_item['balance']);
                             $objPHPExcel->getActiveSheet()->SetCellValue('D' . $i, $cdrr_item['received']);
                             $objPHPExcel->getActiveSheet()->SetCellValue('E' . $i, $cdrr_item['dispensed_units']);
                             $objPHPExcel->getActiveSheet()->SetCellValue('F' . $i, $cdrr_item['dispensed_packs']);
                             $objPHPExcel->getActiveSheet()->SetCellValue('G' . $i, $cdrr_item['losses']);
                             $objPHPExcel->getActiveSheet()->SetCellValue('H' . $i, $cdrr_item['adjustments']);
                             $objPHPExcel->getActiveSheet()->SetCellValue('I' . $i, $cdrr_item['count']);
                             $objPHPExcel->getActiveSheet()->SetCellValue('J' . $i, $cdrr_item['expiry_quant']);
                             $objPHPExcel->getActiveSheet()->SetCellValue('K' . $i, $cdrr_item['expiry_date']);
                             $objPHPExcel->getActiveSheet()->SetCellValue('L' . $i, $cdrr_item['out_of_stock']);
                             $objPHPExcel->getActiveSheet()->SetCellValue('M' . $i, $cdrr_item['resupply']);
                         } else {
                             $objPHPExcel->getActiveSheet()->SetCellValue('C' . $i, $cdrr_item['balance']);
                             $objPHPExcel->getActiveSheet()->SetCellValue('D' . $i, $cdrr_item['received']);
                             $objPHPExcel->getActiveSheet()->SetCellValue('E' . $i, $cdrr_item['dispensed_units']);
                             $objPHPExcel->getActiveSheet()->SetCellValue('F' . $i, $cdrr_item['losses']);
                             $objPHPExcel->getActiveSheet()->SetCellValue('G' . $i, $cdrr_item['adjustments']);
                             $objPHPExcel->getActiveSheet()->SetCellValue('H' . $i, $cdrr_item['count']);
                             if ($cdrr_array[0]['code'] == "D-CDRR") {
                                 $objPHPExcel->getActiveSheet()->SetCellValue('I' . $i, $cdrr_item['aggr_consumed']);
                                 $objPHPExcel->getActiveSheet()->SetCellValue('J' . $i, $cdrr_item['aggr_on_hand']);
                                 $objPHPExcel->getActiveSheet()->SetCellValue('K' . $i, $cdrr_item['expiry_quant']);
                                 $objPHPExcel->getActiveSheet()->SetCellValue('L' . $i, $cdrr_item['expiry_date']);
                                 $objPHPExcel->getActiveSheet()->SetCellValue('M' . $i, $cdrr_item['out_of_stock']);
                                 $objPHPExcel->getActiveSheet()->SetCellValue('N' . $i, $cdrr_item['resupply']);
                             } else {
                                 $objPHPExcel->getActiveSheet()->SetCellValue('I' . $i, $cdrr_item['expiry_quant']);
                                 $objPHPExcel->getActiveSheet()->SetCellValue('J' . $i, $cdrr_item['expiry_date']);
                                 $objPHPExcel->getActiveSheet()->SetCellValue('K' . $i, $cdrr_item['out_of_stock']);
                                 $objPHPExcel->getActiveSheet()->SetCellValue('L' . $i, $cdrr_item['resupply']);
                             }
                         }
                     }
                 }
             }
         }
     }
     $objPHPExcel->getActiveSheet()->SetCellValue('E108', $cdrr_array[0]['reports_expected']);
     $objPHPExcel->getActiveSheet()->SetCellValue('H108', $cdrr_array[0]['reports_actual']);
     $logs = Cdrr_Log::getLogs($cdrr_id);
     foreach ($logs as $log) {
         if ($log->description == "prepared") {
             $objPHPExcel->getActiveSheet()->SetCellValue('C111', $log->s_user->name);
             $objPHPExcel->getActiveSheet()->SetCellValue('C113', 'N/A');
             $objPHPExcel->getActiveSheet()->SetCellValue('K111', $log->s_user->role);
             $objPHPExcel->getActiveSheet()->SetCellValue('G113', $log->created);
         } else {
             if ($log->description == "approved") {
                 $objPHPExcel->getActiveSheet()->SetCellValue('C115', $log->s_user->name);
                 $objPHPExcel->getActiveSheet()->SetCellValue('C117', 'N/A');
                 $objPHPExcel->getActiveSheet()->SetCellValue('K115', $log->s_user->role);
                 $objPHPExcel->getActiveSheet()->SetCellValue('G117', $log->created);
             }
         }
     }
     //4.0 set worksheet index for D-MAPS
     $objWorksheet = $objPHPExcel->setActiveSheetIndex(3);
     $highestColumm = $objPHPExcel->setActiveSheetIndex(3)->getHighestColumn();
     $highestRow = $objPHPExcel->setActiveSheetIndex(3)->getHighestRow();
     $arr = $objPHPExcel->getActiveSheet()->toArray(null, true, true, true);
     //D-MAPS
     $sql = "SELECT m.*,mi.*,ml.*,f.*,co.county as county_name,d.name as district_name,u.*,al.level_name,IF(m.code='D-MAPS',CONCAT('D-MAPS#',m.id),CONCAT('F-MAPS#',m.id)) as maps_id,m.status as status_name,sf.name as facility_name,m.id as map_id\n\t\t\t \tFROM maps m\n\t\t\t \tLEFT JOIN maps_item mi ON mi.maps_id=m.id\n\t\t\t \tLEFT JOIN maps_log ml ON ml.maps_id=m.id\n\t\t\t \tLEFT JOIN sync_facility sf ON sf.id=m.facility_id\n\t\t\t \tLEFT JOIN facilities f ON f.facilitycode=sf.code\t\n\t\t\t \tLEFT JOIN counties co ON co.id=f.county\n\t\t\t\tLEFT JOIN district d ON d.id=f.district\n\t\t\t\tLEFT JOIN users u ON u.map=ml.user_id\n\t\t\t\tLEFT JOIN access_level al ON al.id=u.Access_Level\n\t\t\t\tWHERE m.id='{$fmaps_id}'";
     $query = $this->db->query($sql);
     $fmaps_array = $query->result_array();
     $objPHPExcel->getActiveSheet()->SetCellValue('B4', $fmaps_array[0]['facility_name']);
     $objPHPExcel->getActiveSheet()->SetCellValue('F4', $fmaps_array[0]['facilitycode']);
     $objPHPExcel->getActiveSheet()->SetCellValue('B5', $fmaps_array[0]['county_name']);
     $objPHPExcel->getActiveSheet()->SetCellValue('F5', $fmaps_array[0]['district_name']);
     $objPHPExcel->getActiveSheet()->SetCellValue('D7', date('d/m/y', strtotime($fmaps_array[0]['period_begin'])));
     $objPHPExcel->getActiveSheet()->SetCellValue('G7', date('d/m/y', strtotime($fmaps_array[0]['period_end'])));
     if (strtoupper($fmaps_array[0]['sponsors']) == "GOK") {
         $loc = "D";
     } else {
         if (strtoupper($fmaps_array[0]['sponsors']) == "PEPFAR") {
             $loc = "F";
         } else {
             if (strtoupper($fmaps_array[0]['sponsors']) == "MSF") {
                 $loc = "H";
             }
         }
     }
     $objPHPExcel->getActiveSheet()->SetCellValue($loc . '9', "X");
     $services = explode(",", $fmaps_array[0]['services']);
     foreach ($services as $service) {
         if (strtoupper($service) == "ART") {
             $objPHPExcel->getActiveSheet()->SetCellValue('D11', "X");
         } else {
             if (strtoupper($service) == "PMTCT") {
                 $objPHPExcel->getActiveSheet()->SetCellValue('F11', "X");
             } else {
                 if (strtoupper($service) == "PEP") {
                     $objPHPExcel->getActiveSheet()->SetCellValue('H11', "X");
                 }
             }
         }
     }
     $objPHPExcel->getActiveSheet()->SetCellValue('D14', $fmaps_array[0]['art_adult']);
     $objPHPExcel->getActiveSheet()->SetCellValue('F14', $fmaps_array[0]['art_child']);
     $objPHPExcel->getActiveSheet()->SetCellValue('D18', $fmaps_array[0]['new_male']);
     $objPHPExcel->getActiveSheet()->SetCellValue('E18', $fmaps_array[0]['revisit_male']);
     $objPHPExcel->getActiveSheet()->SetCellValue('F18', $fmaps_array[0]['new_female']);
     $objPHPExcel->getActiveSheet()->SetCellValue('G18', $fmaps_array[0]['revisit_female']);
     $objPHPExcel->getActiveSheet()->SetCellValue('H26', $fmaps_array[0]['new_pmtct']);
     $objPHPExcel->getActiveSheet()->SetCellValue('H27', $fmaps_array[0]['revisit_pmtct']);
     $objPHPExcel->getActiveSheet()->SetCellValue('H38', $fmaps_array[0]['total_infant']);
     $objPHPExcel->getActiveSheet()->SetCellValue('H107', $fmaps_array[0]['pep_adult']);
     $objPHPExcel->getActiveSheet()->SetCellValue('H108', $fmaps_array[0]['pep_child']);
     if ($report_type != "D-MAPS") {
         $objPHPExcel->getActiveSheet()->SetCellValue('E124', $fmaps_array[0]['total_adult']);
         $objPHPExcel->getActiveSheet()->SetCellValue('G124', $fmaps_array[0]['total_child']);
         $objPHPExcel->getActiveSheet()->SetCellValue('E128', $fmaps_array[0]['diflucan_adult']);
         $objPHPExcel->getActiveSheet()->SetCellValue('G128', $fmaps_array[0]['diflucan_child']);
         $objPHPExcel->getActiveSheet()->SetCellValue('D134', $fmaps_array[0]['new_cm']);
         $objPHPExcel->getActiveSheet()->SetCellValue('E134', $fmaps_array[0]['revisit_cm']);
         $objPHPExcel->getActiveSheet()->SetCellValue('F134', $fmaps_array[0]['new_oc']);
         $objPHPExcel->getActiveSheet()->SetCellValue('G134', $fmaps_array[0]['revisit_oc']);
         $objPHPExcel->getActiveSheet()->SetCellValue('D138', $fmaps_array[0]['reports_expected']);
         $objPHPExcel->getActiveSheet()->SetCellValue('G138', $fmaps_array[0]['reports_actual']);
     } else {
         $objPHPExcel->getActiveSheet()->SetCellValue('E164', $fmaps_array[0]['total_adult']);
         $objPHPExcel->getActiveSheet()->SetCellValue('G164', $fmaps_array[0]['total_child']);
         $objPHPExcel->getActiveSheet()->SetCellValue('E168', $fmaps_array[0]['diflucan_adult']);
         $objPHPExcel->getActiveSheet()->SetCellValue('G168', $fmaps_array[0]['diflucan_child']);
         $objPHPExcel->getActiveSheet()->SetCellValue('D174', $fmaps_array[0]['new_cm']);
         $objPHPExcel->getActiveSheet()->SetCellValue('E174', $fmaps_array[0]['revisit_cm']);
         $objPHPExcel->getActiveSheet()->SetCellValue('F174', $fmaps_array[0]['new_oc']);
         $objPHPExcel->getActiveSheet()->SetCellValue('G174', $fmaps_array[0]['revisit_oc']);
     }
     $arr = $objPHPExcel->getActiveSheet()->toArray(null, true, true, true);
     for ($i = 25; $i <= 120; $i++) {
         if ($i == 36 || $i == 43 || $i == 53 || $i == 68 || $i == 75 || $i == 88 || $i == 99 || $i == 105 || $i == 113) {
             continue;
         }
         $regimen_code = $arr[$i]['A'];
         $regimen_desc = $arr[$i]['B'];
         $key = $this->getMappedRegimen($regimen_code, $regimen_desc);
         if ($key !== null) {
             foreach ($fmaps_array as $fmaps_item) {
                 if ($key == $fmaps_item['regimen_id']) {
                     $objPHPExcel->getActiveSheet()->SetCellValue('E' . $i, $fmaps_item['total']);
                 }
             }
         }
     }
     //If order has changed status, check who prepared the order
     $logs = Maps_Log::getMapLogs($fmaps_id);
     foreach ($logs as $log) {
         if ($log->description == "prepared") {
             $objPHPExcel->getActiveSheet()->SetCellValue('B141', $log->s_user->name);
             $objPHPExcel->getActiveSheet()->SetCellValue('B143', 'N/A');
             $objPHPExcel->getActiveSheet()->SetCellValue('G141', $log->s_user->role);
             $objPHPExcel->getActiveSheet()->SetCellValue('E143', $log->created);
         } else {
             if ($log->description == "approved") {
                 $objPHPExcel->getActiveSheet()->SetCellValue('B145', $log->s_user->name);
                 $objPHPExcel->getActiveSheet()->SetCellValue('B147', 'N/A');
                 $objPHPExcel->getActiveSheet()->SetCellValue('G145', $log->s_user->role);
                 $objPHPExcel->getActiveSheet()->SetCellValue('E147', $log->created);
             }
         }
     }
     //Delete all files in export folder
     if (is_dir($dir)) {
         $files = scandir($dir);
         foreach ($files as $object) {
             if ($object != "." && $object != "..") {
                 unlink($dir . "/" . $object);
             }
         }
     } else {
         mkdir($dir);
     }
     //Generate file
     ob_start();
     $file = "AGGR#" . date('Ym', strtotime($period_begin)) . ".xlsx";
     $filename = $dir . "/" . urldecode($file);
     $objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007');
     $objWriter->save($filename);
     $objPHPExcel->disconnectWorksheets();
     unset($objPHPExcel);
     if (file_exists($filename)) {
         $filename = str_replace("#", "%23", $filename);
         redirect($filename);
     }
 }