コード例 #1
0
             echo HTML::section(3, _("Attending Physician"));
             echo HTML::para($staff->getSurname1() . ' ' . $staff->getSurname2() . ', ' . $staff->getFirstName());
         }
         $staffQ->freeResult();
     }
     $staffQ->close();
     unset($staffQ);
     unset($staff);
 }
 echo HTML::section(3, _("Opening Date"));
 echo HTML::para(I18n::localDate($problem->getOpeningDate()));
 echo HTML::section(3, _("Last Update Date"));
 echo HTML::para(I18n::localDate($problem->getLastUpdateDate()));
 if ($problem->getClosingDate() != "" && $problem->getClosingDate() != "0000-00-00") {
     echo HTML::section(3, _("Closing Date"));
     echo HTML::para(I18n::localDate($problem->getClosingDate()));
 }
 if ($problem->getMeetingPlace()) {
     echo HTML::section(3, _("Meeting Place"));
     echo HTML::para($problem->getMeetingPlace());
 }
 echo HTML::section(3, _("Wording"));
 echo HTML::para(nl2br($problem->getWording()));
 if ($problem->getSubjective()) {
     echo HTML::section(3, _("Subjective"));
     echo HTML::para(nl2br($problem->getSubjective()));
 }
 if ($problem->getObjective()) {
     echo HTML::section(3, _("Objective"));
     echo HTML::para(nl2br($problem->getObjective()));
 }
コード例 #2
0
ファイル: log_list.php プロジェクト: edubort/openclinic-1
    exit;
}
$thead = array(_("#"), _("Access Date"), _("Login"));
if ($table == 'record') {
    $thead[] = _("Table");
    $thead[] = _("Operation");
    $thead[] = _("Data");
} else {
    $thead[] = _("Profile");
}
$options = array('align' => 'center', 0 => array('align' => 'right'));
$tbody = array();
for ($i = 1; $log = $logQ->fetch(); $i++) {
    $row = $i . '.';
    $row .= OPEN_SEPARATOR;
    $row .= I18n::localDate($log["access_date"]);
    $row .= OPEN_SEPARATOR;
    $row .= $log["login"];
    $row .= OPEN_SEPARATOR;
    if ($table == 'record') {
        $row .= $log["table_name"];
        $row .= OPEN_SEPARATOR;
        $row .= $log["operation"];
        $row .= OPEN_SEPARATOR;
        $row .= htmlspecialchars(var_export(unserialize($log["affected_row"]), true));
    } else {
        $row .= $profiles[$log["id_profile"]];
    }
    $tbody[] = explode(OPEN_SEPARATOR, $row);
}
// end for
コード例 #3
0
ファイル: problem_fields.php プロジェクト: edubort/openclinic
 * @license   http://www.gnu.org/copyleft/gpl.html GNU GPL
 * @version   CVS: $Id: problem_fields.php,v 1.31 2008/03/23 12:00:17 jact Exp $
 * @author    jact <*****@*****.**>
 */
require_once dirname(__FILE__) . "/../lib/exe_protect.php";
executionProtection(__FILE__);
require_once "../model/Query/Staff.php";
$tbody = array();
$row = _("Código do atendimento") . ": ";
$row .= $formVar["order_number"];
$tbody[] = $row;
$row = _("Data de inclusão") . ": ";
$row .= I18n::localDate($formVar["opening_date"]);
$tbody[] = $row;
$row = _("Última atualização") . ": ";
$row .= I18n::localDate($formVar["last_update_date"]);
$tbody[] = $row;
$row = Form::label("id_member", _("Atendimento pelo projeto") . ":");
$staffQ = new Query_Staff();
$array = null;
$array[0] = "";
// to permit null value
if ($staffQ->selectType('D')) {
    while ($staff = $staffQ->fetch()) {
        $array[$staff->getIdMember()] = $staff->getFirstName() . " " . $staff->getSurname1() . " " . $staff->getSurname2();
    }
    $staffQ->freeResult();
}
$staffQ->close();
unset($staffQ);
$row .= Form::select("id_member", $array, isset($formVar["id_member"]) ? $formVar["id_member"] : null);
コード例 #4
0
ファイル: problem_list.php プロジェクト: edubort/openclinic-1
$tbody = array();
while ($problem = $problemQ->fetch()) {
    $row = $problem->getOrderNumber();
    $row .= OPEN_SEPARATOR;
    if ($_SESSION['auth']['is_administrative']) {
        $row .= HTML::link(HTML::image('../img/action_edit.png', _("edit")), '../medical/problem_edit_form.php', array('id_problem' => $problem->getIdProblem(), 'id_patient' => $problem->getIdPatient()));
        $row .= OPEN_SEPARATOR;
        $row .= HTML::link(HTML::image('../img/action_delete.png', _("delete")), '../medical/problem_del_confirm.php', array('id_problem' => $problem->getIdProblem(), 'id_patient' => $problem->getIdPatient()));
        $row .= OPEN_SEPARATOR;
    }
    // end if
    $row .= HTML::link(HTML::image('../img/action_view.png', _("view")), '../medical/problem_view.php', array('id_problem' => $problem->getIdProblem(), 'id_patient' => $problem->getIdPatient()));
    $row .= OPEN_SEPARATOR;
    $row .= HTML::link(HTML::image('../img/action_test.png', _("tests")), '../medical/test_list.php', array('id_problem' => $problem->getIdProblem(), 'id_patient' => $problem->getIdPatient()));
    $row .= OPEN_SEPARATOR;
    $row .= HTML::link(HTML::image('../img/action_connection.png', _("connect")), '../medical/connection_list.php', array('id_problem' => $problem->getIdProblem(), 'id_patient' => $problem->getIdPatient()));
    $row .= OPEN_SEPARATOR;
    $row .= $problem->getWordingPreview();
    $row .= OPEN_SEPARATOR;
    $row .= I18n::localDate($problem->getOpeningDate());
    $row .= OPEN_SEPARATOR;
    $row .= I18n::localDate($problem->getLastUpdateDate());
    $tbody[] = explode(OPEN_SEPARATOR, $row);
}
// end while
$problemQ->freeResult();
$problemQ->close();
unset($problemQ);
unset($problem);
echo HTML::table($thead, $tbody, null, $options);
require_once "../layout/footer.php";
コード例 #5
0
unset($links);
echo HTML::section(2, sprintf(_("Record Logs List for user %s"), $login) . ":");
// Printing result stats and page nav
echo HTML::para(HTML::tag('strong', sprintf(_("%d transactions."), $recordQ->getRowCount())));
$params = array('id_user='******'login='******'&', $params);
$pageCount = $recordQ->getPageCount();
$pageLinks = Search::pageLinks($currentPage, $pageCount, $_SERVER['PHP_SELF'] . '?' . $params);
echo $pageLinks;
$thead = array(_("Access Date") => array('colspan' => 2), _("Login"), _("Table"), _("Operation"), _("Data"));
$options = array(0 => array('align' => 'right'), 1 => array('align' => 'center', 'nowrap' => 1), 2 => array('align' => 'center'), 3 => array('align' => 'center'), 4 => array('align' => 'center'));
$tbody = array();
while ($record = $recordQ->fetch()) {
    $row = $recordQ->getCurrentRow() . ".";
    $row .= OPEN_SEPARATOR;
    $row .= I18n::localDate($record["access_date"]);
    $row .= OPEN_SEPARATOR;
    $row .= $record["login"];
    $row .= OPEN_SEPARATOR;
    $row .= $record["table_name"];
    $row .= OPEN_SEPARATOR;
    $row .= $record["operation"];
    $row .= OPEN_SEPARATOR;
    $row .= htmlspecialchars(var_export(unserialize($record["affected_row"]), true));
    $tbody[] = explode(OPEN_SEPARATOR, $row);
}
$recordQ->freeResult();
$recordQ->close();
echo HTML::table($thead, $tbody, null, $options);
echo $pageLinks;
unset($recordQ);
コード例 #6
0
echo HTML::section(2, sprintf(_("Access Logs List for user %s"), $login) . ":");
// Printing result stats and page nav
echo HTML::para(HTML::tag('strong', sprintf(_("%d accesses."), $accessQ->getRowCount())));
$params = array('id_user='******'login='******'&', $params);
$pageCount = $accessQ->getPageCount();
$pageLinks = Search::pageLinks($currentPage, $pageCount, $_SERVER['PHP_SELF'] . '?' . $params);
echo $pageLinks;
$profiles = array(OPEN_PROFILE_ADMINISTRATOR => _("Administrator"), OPEN_PROFILE_ADMINISTRATIVE => _("Administrative"), OPEN_PROFILE_DOCTOR => _("Doctor"));
$thead = array(_("Access Date") => array('colspan' => 2), _("Login"), _("Profile"));
$options = array(0 => array('align' => 'right'), 2 => array('align' => 'center'), 3 => array('align' => 'center'));
$tbody = array();
while ($access = $accessQ->fetch()) {
    $row = $accessQ->getCurrentRow() . ".";
    $row .= OPEN_SEPARATOR;
    $row .= I18n::localDate($access["access_date"]);
    $row .= OPEN_SEPARATOR;
    $row .= $access["login"];
    $row .= OPEN_SEPARATOR;
    $row .= $profiles[$access["id_profile"]];
    $tbody[] = explode(OPEN_SEPARATOR, $row);
}
$accessQ->freeResult();
$accessQ->close();
echo HTML::table($thead, $tbody, null, $options);
echo $pageLinks;
unset($accessQ);
unset($access);
unset($profiles);
echo HTML::para(HTML::link(_("Return to users list"), $returnLocation));
require_once "../layout/footer.php";
コード例 #7
0
ファイル: Problem.php プロジェクト: edubort/openclinic-1
 /**
  * string getHeader(void)
  *
  * Returns a header with medical problem information
  *
  * @return string
  * @access public
  * @since 0.8
  */
 function getHeader()
 {
     $_html = HTML::start('div', array('id' => 'problem_header', 'class' => 'clearfix'));
     $_html .= HTML::para(_("Wording") . ': ' . $this->getWordingPreview());
     $_html .= HTML::para(_("Opening Date") . ': ' . I18n::localDate($this->getOpeningDate()), array('class' => 'right'));
     $_html .= HTML::para(_("Last Update Date") . ': ' . I18n::localDate($this->getLastUpdateDate()), array('class' => 'right'));
     $_html .= HTML::end('div');
     return $_html;
 }
コード例 #8
0
ファイル: Dump.php プロジェクト: edubort/openclinic-1
 /**
  * mixed SQLDefinition(string $db, string $table, array $options = null)
  *
  * Returns $table's CREATE definition
  *
  * @param string $db database name
  * @param string $table table name
  * @param array $options (optional) (drop, use_backquotes)
  * @return mixed false if error occurs, string with CREATE statement if OK
  * @access public
  * @static
  * @see DUMP_CRLF, DUMP_MYSQL_INT_VERSION
  */
 public static function SQLDefinition($db, $table, $options = null)
 {
     $schemaCreate = '';
     $useBackquote = isset($options['use_backquotes']) ? $options['use_backquotes'] : false;
     if (isset($options['drop']) && $options['drop']) {
         $schemaCreate .= 'DROP TABLE IF EXISTS ' . self::backQuote($table, $useBackquote) . ';' . DUMP_CRLF;
     }
     $localConn = new DbConnection();
     if (!$localConn->connect()) {
         return false;
     }
     if (DUMP_MYSQL_INT_VERSION >= 32321) {
         $result = $localConn->exec('SHOW TABLE STATUS FROM ' . $db . ' LIKE "' . self::addSlashes($table) . '"');
         if ($result != false && $localConn->numRows() > 0) {
             $tmpRes = $localConn->fetchRow(MYSQL_ASSOC);
             if (isset($tmpRes['Create_time']) && !empty($tmpRes['Create_time'])) {
                 $schemaCreate .= '# ' . _("Create Time") . ': ' . I18n::localDate($tmpRes['Create_time']) . DUMP_CRLF;
             }
             if (isset($tmpRes['Update_time']) && !empty($tmpRes['Update_time'])) {
                 $schemaCreate .= '# ' . _("Update Time") . ': ' . I18n::localDate($tmpRes['Update_time']) . DUMP_CRLF;
             }
             if (isset($tmpRes['Check_time']) && !empty($tmpRes['Check_time'])) {
                 $schemaCreate .= '# ' . _("Check Time") . ': ' . I18n::localDate($tmpRes['Check_time']) . DUMP_CRLF;
             }
             $schemaCreate .= DUMP_CRLF;
         }
         $localConn->freeResult();
         // Whether to quote table and fields names or not
         $localConn->exec('SET SQL_QUOTE_SHOW_CREATE=' . ($useBackquote ? 1 : 0));
         $localQuery = 'SHOW CREATE TABLE ' . self::backQuote($db) . '.' . self::backQuote($table);
         $result = $localConn->exec($localQuery);
         if ($result != false && $localConn->numRows() > 0) {
             $tmpRes = $localConn->fetchRow(MYSQL_NUM);
             $pos = strpos($tmpRes[1], ' (');
             $tmpRes[1] = substr($tmpRes[1], 0, 13) . ($useBackquote ? self::backQuote($tmpRes[0]) : $tmpRes[0]) . substr($tmpRes[1], $pos);
             $schemaCreate .= str_replace("\n", DUMP_CRLF, $tmpRes[1]);
         }
         $localConn->close();
         return $schemaCreate;
     }
     // end if MySQL >= 3.23.21
     // For MySQL < 3.23.20
     $schemaCreate .= 'CREATE TABLE ' . self::backQuote($table, $useBackquote) . ' (' . DUMP_CRLF;
     $localQuery = 'SHOW FIELDS FROM ' . self::backQuote($db) . '.' . self::backQuote($table);
     if (!$localConn->exec($localQuery)) {
         return false;
     }
     while ($row = $localConn->fetchRow()) {
         $schemaCreate .= '   ' . self::backQuote($row['Field'], $useBackquote) . ' ' . strtoupper($row['Type']);
         if (isset($row['Default']) && !empty($row['Default'])) {
             $schemaCreate .= ' DEFAULT "' . self::addSlashes($row['Default']) . '"';
         }
         if ($row['Null'] != 'YES') {
             $schemaCreate .= ' NOT NULL';
         }
         if ($row['Extra'] != '') {
             $schemaCreate .= ' ' . $row['Extra'];
         }
         $schemaCreate .= ',' . DUMP_CRLF;
     }
     // end while
     $schemaCreate = preg_replace('/,' . DUMP_CRLF . '$/', '', $schemaCreate);
     $localQuery = 'SHOW KEYS FROM ' . self::backQuote($db) . '.' . self::backQuote($table);
     if (!$localConn->exec($localQuery)) {
         return false;
     }
     while ($row = $localConn->fetchRow()) {
         $kname = $row['Key_name'];
         $comment = isset($row['Comment']) ? $row['Comment'] : '';
         $subPart = isset($row['Sub_part']) ? $row['Sub_part'] : '';
         if ($kname != 'PRIMARY' && $row['Non_unique'] == 0) {
             $kname = "UNIQUE|{$kname}";
         }
         if ($comment == 'FULLTEXT') {
             $kname = 'FULLTEXT|$kname';
         }
         if (!isset($index[$kname])) {
             $index[$kname] = array();
         }
         if ($subPart > 1) {
             $index[$kname][] = self::backQuote($row['Column_name'], $useBackquote) . '(' . $subPart . ')';
         } else {
             $index[$kname][] = self::backQuote($row['Column_name'], $useBackquote);
         }
     }
     // end while
     $localConn->close();
     while (list($x, $columns) = @each($index)) {
         $schemaCreate .= ',' . DUMP_CRLF;
         if ($x == 'PRIMARY') {
             $schemaCreate .= '   PRIMARY KEY (';
         } elseif (substr($x, 0, 6) == 'UNIQUE') {
             $schemaCreate .= '   UNIQUE ' . substr($x, 7) . ' (';
         } elseif (substr($x, 0, 8) == 'FULLTEXT') {
             $schemaCreate .= '   FULLTEXT ' . substr($x, 9) . ' (';
         } else {
             $schemaCreate .= '   KEY ' . $x . ' (';
         }
         $schemaCreate .= implode($columns, ', ') . ')';
     }
     // end while
     $schemaCreate .= DUMP_CRLF . ')';
     return $schemaCreate;
 }
コード例 #9
0
        } else {
            $query .= $word[$i] . " " . $logical . " ";
        }
    }
}
if ($logical == OPEN_NOT) {
    $query .= " NOT ";
}
$query .= $word[$num - 1] . ")";
$thead = array(sprintf(_("Search Results From Query: %s"), $query) => array('colspan' => 2));
$options = array(0 => array('align' => 'right'));
$recordset = null;
while ($problem = $problemQ->fetch()) {
    $row = $problemQ->getCurrentRow();
    eval("\$aux = {$val};");
    $recordset[$row] = $row . OPEN_SEPARATOR . $problem->getIdProblem() . OPEN_SEPARATOR . $problem->getIdPatient() . OPEN_SEPARATOR . $aux . OPEN_SEPARATOR . I18n::localDate($problem->getOpeningDate()) . OPEN_SEPARATOR . I18n::localDate($problem->getClosingDate());
}
// end while
$problemQ->freeResult();
$problemQ->close();
unset($problemQ);
$tbody = array();
foreach ($recordset as $arrKey => $arrValue) {
    $array = explode(OPEN_SEPARATOR, $arrValue, 6);
    $patQ = new Query_Page_Patient();
    if ($patQ->select($array[2])) {
        $pat = $patQ->fetch();
        if (!$pat) {
            $patQ->close();
            Error::fetch($patQ);
        }
コード例 #10
0
ファイル: history_list.php プロジェクト: edubort/openclinic-1
$options = array(0 => array('align' => 'right'));
$tbody = array();
while ($problem = $problemQ->fetch()) {
    $row = $problem->getOrderNumber();
    $row .= OPEN_SEPARATOR;
    // a closed medical problem is not editable
    $row .= HTML::link(HTML::image('../img/action_view.png', _("view")), '../medical/problem_view.php', array('id_problem' => $problem->getIdProblem(), 'id_patient' => $problem->getIdPatient()));
    $row .= OPEN_SEPARATOR;
    if ($_SESSION['auth']['is_administrative']) {
        $row .= HTML::link(HTML::image('../img/action_delete.png', _("delete")), '../medical/problem_del_confirm.php', array('id_problem' => $problem->getIdProblem(), 'id_patient' => $problem->getIdPatient()));
        $row .= OPEN_SEPARATOR;
    }
    // end if
    $row .= HTML::link(HTML::image('../img/action_test.png', _("tests")), '../medical/test_list.php', array('id_problem' => $problem->getIdProblem(), 'id_patient' => $problem->getIdPatient()));
    $row .= OPEN_SEPARATOR;
    $row .= HTML::link(HTML::image('../img/action_connection.png', _("connect")), '../medical/connection_list.php', array('id_problem' => $problem->getIdProblem(), 'id_patient' => $problem->getIdPatient()));
    $row .= OPEN_SEPARATOR;
    $row .= $problem->getWordingPreview();
    $row .= OPEN_SEPARATOR;
    $row .= I18n::localDate($problem->getOpeningDate());
    $row .= OPEN_SEPARATOR;
    $row .= I18n::localDate($problem->getClosingDate());
    $tbody[] = explode(OPEN_SEPARATOR, $row);
}
// end while
$problemQ->freeResult();
$problemQ->close();
unset($problemQ);
unset($problem);
echo HTML::table($thead, $tbody, null, $options);
require_once "../layout/footer.php";
コード例 #11
0
ファイル: dump_process.php プロジェクト: edubort/openclinic-1
                     $limitFrom = $limitTo = 0;
                 }
                 $dumpBuffer .= Dump::SQLData(OPEN_DATABASE, $table, array('from' => $limitFrom, 'to' => $limitTo, 'use_backquotes' => isset($_POST['use_backquotes']) ? $_POST['use_backquotes'] : null, 'show_columns' => isset($_POST['show_columns']) ? $_POST['show_columns'] : null, 'extended_inserts' => isset($_POST['extended_inserts']) ? $_POST['extended_inserts'] : null));
             }
             // end if
         }
         // end if
     }
     // end for
     // don't remove, it makes easier to select & copy from browser
     $dumpBuffer .= DUMP_CRLF;
 } elseif ($_POST['what'] == 'xml') {
     // first add the xml tag
     $dumpBuffer .= '<?xml version="1.0" encoding="ISO-8859-1" ?>' . DUMP_CRLF . DUMP_CRLF;
     // some comments
     $dumpBuffer .= '<!--' . DUMP_CRLF . '--' . DUMP_CRLF . '-- OpenClinic XML-Dump' . DUMP_CRLF . '-- version ' . OPEN_VERSION . DUMP_CRLF . '-- http://openclinic.sourceforge.net/' . DUMP_CRLF . '--' . DUMP_CRLF . '-- ' . _("Host") . ": " . OPEN_HOST . DUMP_CRLF . '-- ' . _("Generation Time") . ": " . I18n::localDate() . DUMP_CRLF . '-- ' . _("Server Version") . ': ' . DUMP_MYSQL_VERSION . DUMP_CRLF . '-- ' . _("PHP Version") . ": " . phpversion() . DUMP_CRLF . '-- ' . _("Database") . ": " . OPEN_DATABASE . DUMP_CRLF;
     if (isset($_POST['table_select'])) {
         $tableSelect = implode($_POST['table_select'], ', ');
         $tmpSelect = implode($_POST['table_select'], OPEN_SEPARATOR);
         $tmpSelect = OPEN_SEPARATOR . $tmpSelect . OPEN_SEPARATOR;
     } else {
         $tableSelect = _("All Tables");
     }
     $dumpBuffer .= '-- ' . sprintf(_("Table Summary: %s"), $tableSelect) . DUMP_CRLF . '--' . DUMP_CRLF . '-->' . DUMP_CRLF . DUMP_CRLF;
     // Now build the structure
     // TODO: Make db and table names XML compatible (designer responsability)
     $dumpBuffer .= '<database name="' . OPEN_DATABASE . '">' . DUMP_CRLF;
     if (isset($_POST['table_select'])) {
         $tmpSelect = implode($_POST['table_select'], OPEN_SEPARATOR);
         $tmpSelect = OPEN_SEPARATOR . $tmpSelect . OPEN_SEPARATOR;
     }
コード例 #12
0
ファイル: patient_view.php プロジェクト: edubort/openclinic
    echo HTML::section(3, _("Raça/Cor"));
    echo HTML::para($patient->getRace());
}
if ($patient->getBirthDate() != "" && $patient->getBirthDate() != "0000-00-00") {
    echo HTML::section(3, _("Data nascimento"));
    echo HTML::para(I18n::localDate($patient->getBirthDate()));
    echo HTML::section(3, _("Idade"));
    echo HTML::para($patient->getAge());
}
if ($patient->getBirthPlace()) {
    echo HTML::section(3, _("Cidade em que nasceu"));
    echo HTML::para($patient->getBirthPlace());
}
if ($patient->getDeceaseDate() != "" && $patient->getDeceaseDate() != "0000-00-00") {
    echo HTML::section(3, _("Data de saída do benefício"));
    echo HTML::para(I18n::localDate($patient->getDeceaseDate()));
}
if ($patient->getNTS()) {
    echo HTML::section(3, _("RG"));
    echo HTML::para($patient->getNTS());
}
if ($patient->getNSS()) {
    echo HTML::section(3, _("CPF"));
    echo HTML::para($patient->getNSS());
}
if ($patient->getFamilySituation()) {
    echo HTML::section(3, _("Situação da família"));
    echo HTML::para(nl2br($patient->getFamilySituation()));
}
if ($patient->getLabourSituation()) {
    echo HTML::section(3, _("Condição de trabalho"));
コード例 #13
0
    if ($problemQ->isError()) {
        Error::query($problemQ, false);
        continue;
    }
    $problem = $problemQ->fetch();
    if (!$problem) {
        $problemQ->close();
        Error::fetch($problemQ);
    }
    $row = $i + 1 . '.';
    $row .= OPEN_SEPARATOR;
    $row .= HTML::link(HTML::image('../img/action_view.png', _("view")), '../medical/problem_view.php', array('id_problem' => $problem->getIdProblem(), 'id_patient' => $idPatient));
    $row .= OPEN_SEPARATOR;
    if ($_SESSION['auth']['is_administrative']) {
        $row .= HTML::link(HTML::image('../img/action_delete.png', _("delete")), '../medical/connection_del_confirm.php', array('id_problem' => $idProblem, 'id_patient' => $idPatient, 'id_connection' => $problem->getIdProblem()));
        $row .= OPEN_SEPARATOR;
    }
    // end if
    $row .= I18n::localDate($problem->getOpeningDate());
    $row .= OPEN_SEPARATOR;
    $row .= $problem->getWordingPreview();
    $tbody[] = explode(OPEN_SEPARATOR, $row);
}
// end for
$problemQ->freeResult();
$problemQ->close();
unset($problemQ);
unset($problem);
$options = array(0 => array('align' => 'right'));
echo HTML::table($thead, $tbody, null, $options);
require_once "../layout/footer.php";