public function generate() { $bata_buffer = ""; $year = $this->input->post('year_from'); $epiweek = $this->input->post('epiweek_to'); $province = $this->input->post('province'); $district = $this->input->post('district'); $display_type = $this->input->post('display_type'); $weekending = Surveillance::getWeekEnding($year, $epiweek); $provinces = array(); $districts = array(); //Check if a province has been specified if ($province > 0) { //if so, retrieve it's details from the database $provinces = Province::getProvince($province); } else { //if not, retrieve all provinces $provinces = Province::getAll(); } //Check if a district has been specified if ($district > 0) { //if so, retrieve it's details from the database $districts = District::getDistrict($district); //also, retrieve the province details for this district $provinces = Province::getProvince($districts[0]['Province']); } else { //if not, empty the array $districts = array(); } //Start displaying the header of the table $bata_buffer .= " <table class='data-table'>\n <tr style='background: #F5D2AE;'>\n <th rowspan=2>Province</th>\n <th rowspan=2>District</th>\n <th rowspan=2>Reports Expected</th>\n <th rowspan=2>Reports Received</th>\n <th rowspan=2>%RR</th>"; $diseases["reports"] = "reports"; $diseases["submitted"] = "submitted"; $diseases["percentage"] = "percentage"; $disease_array = Disease::getAll(); foreach ($disease_array as $disease) { if ($disease['Name'] == 'Malaria') { $diseases[$disease['id']] = $disease['Name']; $diseases["tested"] = "tested"; $diseases["positive"] = "positive"; $bata_buffer .= "<th rowspan=2>" . $disease['Name'] . "</th>"; $bata_buffer .= "<th colspan=2 style='color:green;'>" . $disease['Name'] . " Indicators</th>"; } else { $diseases[$disease['id']] = $disease['Name']; $bata_buffer .= "<th rowspan=2>" . $disease['Name'] . "</th>"; } } //Finish Displaying the Header $bata_buffer .= " </tr>\n <tr style='background: #F5D2AE'>\n <th >Tested</th><th >Positive</th>\n </tr>\n\t\t"; //Start retrieving all the rows for the data foreach ($provinces as $province_object) { $bata_buffer .= "<tr class='even'><td style='font-weight:bold; font-size:14px'>" . $province_object->Name . "</td></tr>"; $province_districts = array(); //check if a district was specified if (count($districts) > 0) { $province_districts = $districts; } else { //Get all the districts for this province $province_districts = district::getProvinceDistrict($province_object->id); } //loop through all the districts to get their data foreach ($province_districts as $province_district) { $available_data = array(); $surveillance_counter = 2; $bata_buffer .= "<tr class='even' style='background:#C4E8B7'><td></td><td>" . $province_district['Name'] . "</td>"; $surveillance_data = Surveillance::getWeeklySummaries($year, $epiweek, $province_district['id']); //Check if any surveillance data exists if (isset($surveillance_data[0])) { $available_data['reports'] = $surveillance_data[0]['Expected']; $available_data['submitted'] = $surveillance_data[0]['Submitted']; //Calculate the reporting $available_data['percentage'] = floor($available_data['submitted'] / $available_data['reports'] * 100); //Display these Parameters $bata_buffer .= "<td>" . $available_data['reports'] . "</td><td>" . $available_data['submitted'] . "</td><td>" . $available_data['percentage'] . "</td>"; } else { $bata_buffer .= "<td>DNR</td><td>DNR</td><td>0</td>"; } //Check if there is any surveillance data if (isset($surveillance_data[0])) { //Loop through all the surveillance data returned foreach ($surveillance_data as $disease_data) { $bata_buffer .= "<td>" . $disease_data['Cases'] . "(" . $disease_data['Deaths'] . ")</td>"; //Check if the disease is malaria and if so, get the lab data and display it if ($disease_data['Disease'] == 1) { //Get malaria data $lab_weekly_data = Lab_Weekly::getWeeklyLabData($year, $epiweek, $province_district['id']); //Check if any data exists if (isset($lab_weekly_data)) { $bata_buffer .= "<td>" . $lab_weekly_data['Tested'] . "</td><td>" . $lab_weekly_data['Positive'] . "</td>"; } else { $bata_buffer .= "<td>DNR</td><td>DNR</td>"; } } } } else { $total_diseases = count($disease_array); $total_elements = $total_diseases + 1; for ($x = 0; $x <= $total_elements; $x++) { $bata_buffer .= "<td>DNR</td>"; } } //Marks the end of data for one district $bata_buffer .= "</tr>"; } //End districts loop } //End provinces loop //Finish the table $bata_buffer .= "</table>"; //Start section that shows cumulative data $bata_buffer .= "<table class='data-table'>\n <tr style='background: #F5D2AE;'>\n <th rowspan='2' colspan='5'>Cumulative Summaries</th>"; //Loop through all the diseases to display their names foreach ($disease_array as $disease) { if ($disease['Name'] == 'Malaria') { $diseases[$disease['id']] = $disease['Name']; $diseases["tested"] = "tested"; $diseases["positive"] = "positive"; $bata_buffer .= "<th rowspan=2>" . $disease['Name'] . "</th>"; $bata_buffer .= "<th colspan=2 style='color:green;'>" . $disease['Name'] . " Indicators</th>"; } else { $diseases[$disease['id']] = $disease['Name']; $bata_buffer .= "<th rowspan=2>" . $disease['Name'] . "</th>"; } } //end diseases loop $bata_buffer .= "</tr>\n <tr style='background: #F5D2AE'>\n <th >Tested</th><th >Positive</th>\n </tr>"; //Get the malaria lab data summaries $lab_weekly_summary = Lab_Weekly::getWeeklyLabSummaries($year, $epiweek); //Start Displaying this week summary $bata_buffer .= "<tr class='even'><td rowspan='2' colspan='5'>Week " . $epiweek . " Summary</td>"; //Get the summary for the week. Disease cases vs. deaths $disease_deaths = array(); foreach ($disease_array as $disease_object) { $disease_summaries = Surveillance::getWeeklyDiseaseSummaries($year, $epiweek, $disease_object['id']); $bata_buffer .= "<td>" . $disease_summaries['Cases'] . "</td>"; $disease_deaths[$disease_object['id']] = $disease_summaries['Deaths']; //check if the disease is Malaria. If so, display lab data if ($disease_object['Name'] == "Malaria") { $bata_buffer .= "<td rowspan=2>" . $lab_weekly_summary['Tested'] . "</td>"; $bata_buffer .= "<td rowspan=2>" . $lab_weekly_summary['Positive'] . "</td>"; } } //Finish the cases row $bata_buffer .= "</tr>"; //Start the deaths row $bata_buffer .= "<tr>"; //Loop through one more time to display the total number of deaths foreach ($disease_array as $disease_object) { $bata_buffer .= "<td>(" . $disease_deaths[$disease_object['id']] . ")</td>"; } //finish the deaths row $bata_buffer .= "</tr>"; //Get the annual summary //Get the malaria lab data summaries $lab_weekly_summary = Lab_Weekly::getAnnualLabSummaries($year); //Start Displaying this week summary $bata_buffer .= "<tr class='even' style='background:#BB00FF'><td rowspan='2' colspan='5'>Years Cummulative Summary</td>"; //Get the summary for the week. Disease cases vs. deaths $disease_deaths = array(); foreach ($disease_array as $disease_object) { $disease_summaries = Surveillance::getAnnualDiseaseSummaries($year, $disease_object['id']); $bata_buffer .= "<td>" . $disease_summaries['Cases'] . "</td>"; $disease_deaths[$disease_object['id']] = $disease_summaries['Deaths']; //check if the disease is Malaria. If so, display lab data if ($disease_object['Name'] == "Malaria") { $bata_buffer .= "<td rowspan=2>" . $lab_weekly_summary['Tested'] . "</td>"; $bata_buffer .= "<td rowspan=2>" . $lab_weekly_summary['Positive'] . "</td>"; } } //Finish the cases row $bata_buffer .= "</tr>"; //Start the deaths row $bata_buffer .= "<tr class='even' style='background:#BB00FF'>"; //Loop through one more time to display the total number of deaths foreach ($disease_array as $disease_object) { $bata_buffer .= "<td>(" . $disease_deaths[$disease_object['id']] . ")</td>"; } //finish the deaths row $bata_buffer .= "</tr></table>"; $this->generatePDF($year, $bata_buffer, $epiweek, $weekending, $display_type); }