For the Web Developer
Now that we know how to predict LOS, we might want to use this in real time when a patient is admitted to a hospital. This example webpage shows how you can connect to the SQL Server and perform native scoring to obtain a predicted length of stay for a patient.
Starting the Website
To start the sample webpage, type the following commands into a terminal window or PowerShell window.
cd C:\Solutions\Hospital\Website
npm start
You should see the following response:
The website is running at http://localhost:3000
Tedious-Connection-Pool: filling pool with 2
Tedious-Connection-Pool: creating connection: 1
...
Now leave this window open and open the url http://localhost:3000 in your browser.
Or see below for accessing the website from a different computer
Prediction LOS
A connection to the Hospital_R
database is set up in server.js. If you deployed the solution using the Deploy To Azure button, the user name and password you chose has been inserted as well. Otherwise, open the file and supply your SQL username and password.
var connectionConfig = {
userName: 'XXYOURSQLUSER',
password: 'XXYOURSQLPW)rd12',
server: 'localhost',
options: { encrypt: true, database: 'Hospital_R' }
The predict
function then calls the do_native_predict
stored procedure with the patient id and receives back a predicted length of stay for that patient.
app.get('/predict', function (req, res) {
pool.acquire(function (err, con) {
if (err) {
console.error(err);
con.release();
return;
}
var request = new Request('do_native_predict', function (err, rowCount) {
if (err) {
console.log(err);
con.release();
return;
}
con.release();
});
var eid = req.query.eid;
console.log('Patient ID: ' + eid)
request.on('row', function (col) {
if (col[0].value === null) {
console.log('NULL result');
} else {
// value to return - the predicted LOS
value = col[0].value;
}
res.json({ pred: value });
console.log("Prediction: " + value)
});
// pass the eid to the stored procedure
request.addParameter('eid', TYPES.VarChar, eid);
con.callProcedure(request);
});
});
Finally, the function in public/js/predLOS.js uses this prediction to display a message to the user based on the value:
function predLOS (id) {
// call /predict to get res.pred, the predicted LOS
$.ajax({
url: '/predict',
type: 'GET',
data: { eid: id },
contentType: "application/json; charset=utf-8",
error: function (xhr, error) {
console.log(xhr); console.log(error);
},
success: function (res) {
console.log("PatientID: " + id)
console.log("Predicted LOS: " + res.pred)
// now display the result
los = Math.round(res.pred);
showResult(los);
}
});
}
Admitting a Patient
This site is set up to mimic a hospital dashboard. Click on one of the first two patients to view their details. Select the Admit Patient
button to trigger the LOS prediction.
You can view the model values by opening the Console window on your browser.
- For Edge or Internet Explorer: Press
F12
to open Developer Tools, then click on the Console tab. - For FireFox or Chome: Press
Ctrl-Shift-i
to open Developer Tools, then click on the Console tab.
Remote Access to Website
If you wish to access this website from another computer, perform the following steps;
netsh advfirewall firewall add rule name="website" dir=in action=allow protocol=tcp localport=3000
cd C:\Solutions\Fraud\Website
npm start
localhost
in the address http://localhost:3000. The Public IP Address can be found in the Azure Portal under the "Network interfaces" section.