Untitled
unknown
plain_text
a year ago
4.7 kB
9
Indexable
const express = require('express');
const mysql = require('mysql2');
const path = require('path');
const app = express();
// Your MySQL connection configuration
const connectionConfig = {
host: 'localhost',
user: 'root',
password: 'Aeondev555666',
database: 'hl7_data'
};
// Create a MySQL connection pool
const pool = mysql.createPool(connectionConfig);
// Define the directory where your HTML and JS files are located
const templatePath = 'c:/Users/andre/Desktop/web/corona-free-dark-bootstrap-admin-template-1.0.0';
// Serve static files (CSS, JavaScript, images) from the 'assets' directory
app.use(express.static(path.join(templatePath, 'assets')));
// Serve the index.html file
app.get('/', (req, res) => {
res.sendFile(path.join(templatePath, 'template', 'index.html'));
});
// Serve the webdata.js file
app.get('/webdata.js', (req, res) => {
res.sendFile(path.join(templatePath, 'template', 'webdata.js'));
});
// Serve the style.css file
app.get('/assets/css/style.css', (req, res) => {
res.sendFile(path.join(templatePath, 'template', 'assets', 'css', 'style.css'));
});
app.use('/assets/fonts', express.static(path.join(templatePath, 'template', 'assets', 'fonts')));
app.use('/assets/images', express.static(path.join(templatePath, 'template', 'assets', 'images')));
app.use('/assets/js', express.static(path.join(templatePath, 'template', 'assets', 'js')));
app.use('/assets/scss', express.static(path.join(templatePath, 'template', 'assets', 'scss')));
app.use('/assets/vendors', express.static(path.join(templatePath, 'template', 'assets', 'vendors')));
// Route to handle data requests from frontend with pagination, item count, and search
app.get('/data', (req, res) => {
console.log('Data request received:', req.query); // Log the request query parameters
const { page, limit, search, patientID, timestamp } = req.query;
const itemCount = req.query.itemCount || 20; // Default to 20 items per page
const offset = (page - 1) * itemCount; // Calculate offset
let query = 'SELECT patientId, operation_name AS operationName, min_value AS minValue, max_value AS `maxValue`, patient_value AS patientValue, compared_value AS comparedValue, units, timestampOperation AS timestamp FROM patient_operations';
let queryParams = [];
// Add search filter to the query if search parameter is provided
if (search) {
query += ' WHERE patientId LIKE ? OR timestampOperation LIKE ?';
queryParams.push(`%${search}%`, `%${search}%`); // Use wildcard to match any substring
}
// Add patientID filter to the query if patientID parameter is provided
if (patientID) {
query += (search ? ' AND' : ' WHERE') + ' patientId = ?';
queryParams.push(patientID);
}
// Add timestamp filter to the query if timestamp parameter is provided
if (timestamp) {
query += (search || patientID ? ' AND' : ' WHERE') + ' timestampOperation = ?';
queryParams.push(timestamp);
}
// Add pagination to the query
query += ' LIMIT ? OFFSET ?';
queryParams.push(parseInt(itemCount), offset);
// Execute the SQL query with parameters
console.log('Executing SQL query:', query, queryParams); // Log the SQL query and parameters
pool.query(query, queryParams, (error, results) => {
if (error) {
console.error('Error querying MySQL:', error);
res.status(500).json({ error: 'Internal server error' });
return;
}
// Log the retrieved data
console.log('Retrieved data:', results);
// Send the data back to the frontend
console.log('Sending data to frontend:', results); // Log data being sent to frontend
res.send(renderData(results)); // Render the data before sending it to the frontend
});
});
// Function to render data in HTML format
function renderData(data) {
let html = '<table class="table">';
html += '<thead><tr><th>Patient ID</th><th>Operation Name</th><th>Min Value</th><th>Max Value</th><th>Patient Value</th><th>Compared Value</th><th>Units</th><th>Timestamp</th></tr></thead>';
html += '<tbody>';
data.forEach(row => {
html += `<tr><td>${row.patientId}</td><td>${row.operationName}</td><td>${row.minValue}</td><td>${row.maxValue}</td><td>${row.patientValue}</td><td>${row.comparedValue}</td><td>${row.units}</td><td>${row.timestamp}</td></tr>`;
});
html += '</tbody></table>';
return html;
}
// Start the server
const PORT = process.env.PORT || 3500;
app.listen(PORT, () => {
console.log(`Server listening on port ${PORT}`);
});
Editor is loading...
Leave a Comment