Как создать систему управления больницей с помощью Node.js?
В этой статье мы собираемся создать систему управления больницей. Система управления больницей в основном используется для управления пациентами в больнице. Полезно видеть, для каких пациентов не выделена койка, есть ли свободные койки или нет. Следит за тем, чтобы койки выписавшихся больных не оставались свободными, а выделялись тем, кто в них нуждается.
Функциональность: с помощью этой системы управления больницей больница может выполнять следующие действия:
- Показать всех пациентов
- Добавить новых пациентов
- Не добавляйте новых пациентов, если кровати недоступны
- Выписка пациентов
Подход: мы собираемся использовать Body Parser, с помощью которого мы можем фиксировать вводимые пользователем значения из формы, такие как имя пациента, номер, дата рождения, город, номер телефона и номер палаты, и сохранять их в коллекции. Затем мы отправим данные пациентов на веб-страницу с помощью EJS. EJS — это промежуточное ПО, упрощающее отправку данных из файла вашего сервера (app.js или server.js) на веб-страницу. Мы также создадим маршрут выписки для выписки пациентов.
Реализация: Ниже приведена пошаговая реализация описанного выше подхода.
Шаг 1: Настройка проекта:
Инициализирует NPM: создайте и найдите папку проекта в терминале и введите команду
npm init -y
Он инициализирует наше приложение узла и создает файл package.json.
Установите зависимости: найдите корневой каталог проекта в терминале и введите команду
npm install express ejs body-parser
Чтобы установить Express, EJS и Body Parser в качестве зависимостей внутри вашего проекта
Создайте файл сервера: создайте файл «app.js», внутри этого файла укажите модуль Express и создайте постоянное «приложение» для создания экземпляра модуля Express, затем установите EJS в качестве механизма просмотра по умолчанию.
const express = require("express");
const app = express();
app.set("view engine", "ejs");Мы также создаем константу availableBeds и устанавливаем для нее количество доступных кроватей.
const availableBeds = 2;
Переупорядочите свои каталоги : необходимо использовать «.ejs» в качестве расширения для файла HTML вместо «.html» для использования EJS внутри него. Затем вам нужно переместить каждый файл «.ejs» в каталоге представлений внутри вашего корневого каталога. EJS по умолчанию ищет файлы '.ejs' внутри папки представлений.
Используйте переменную EJS: внутри вашего обновленного файла .ejs вы должны использовать переменные EJS для получения значений из файла вашего сервера. Вы можете объявлять переменные в EJS, например
<%= variableName %>
HTML
<!DOCTYPE html><html> <head> <title>Page Title</title></head> <body> <%= variableName %></body> </html> |
Отправка данных в переменную: внутри файла вашего сервера ( app.js или index.js ) вы можете отправить файл EJS вместе с некоторыми данными, используя метод рендеринга.
app.get("/", (req, res) => {
res.render("home", { variableName: "Hello Geeks!" })
})Javascript
const express = require("express")const app = express()app.set("view engine", "ejs") app.get("/", (req, res) => { res.render("home", { variableName: "Hello Geeks!" })}) app.listen(3000, (req, res) => { console.log("App is running on port 3000")}) |
Извлечение данных из формы в app.js: чтобы получить входные значения формы, мы должны использовать пакет узлов с именем body-parser.
Установить парсер тела:
npm install body-parser
Требуется модуль body-parser:
const bodyParser = require("body-parser")А потом:
app.use( bodyParser.json() );
app.use(bodyParser.urlencoded({
extended: true
}));Затем мы можем обрабатывать данные формы, используя объект запроса.
Шаг 2. Получение записей о пациентах. У нас есть множество пациентов с различными свойствами. Давайте отправим массив на нашу веб-страницу. На предыдущем шаге мы просто отправили значение переменной, теперь мы отправляем полный массив.
Javascript
const express = require("express")const bodyParser = require("body-parser")const patients = [{ name: "Aditya", number: "8175826846", dob: "29/09/2001", city: "Mirzapur", roomNo: "1",}] const app = express() app.set("view engine", "ejs") app.use(bodyParser.json());app.use(bodyParser.urlencoded({ extended: true})) app.get("/", function (req, res) { res.render("home", { data: patients })}) app.listen(3000, (req, res) => { console.log("App is running on port 3000")}) |
Поскольку у нас так много элементов внутри нашего массива, и мы должны распечатать каждый из них, поэтому мы должны использовать цикл For Each Loop, чтобы просмотреть каждый отдельный элемент в нашей коллекции и отобразить детали.
HTML
<!DOCTYPE html><html> <head> <title>HMS</title></head><style> table { font-family: arial, sans-serif; border-collapse: collapse; width: 100%; } td, th { border: 1px solid #dddddd; text-align: left; padding: 8px; } tr:nth-child(even) { background-color: #dddddd; }</style> <body> <h1>All Patients</h1> <table> <tr> <th>Name</th> <th>Number</th> <th>DOB</th> <th>City</th> <th>Room No.</th> </tr> <% data.forEach(element=> { %> <tr> <td> <%= element.name %> </td> <td> <%= element.number %> </td> <td> <%= element.dob %> </td> <td> <%= element.city %> </td> <td> <%= element.roomNo %> </td> </tr> <% }) %> </table></body> </html> |
Шаг 3: Добавьте пациентов в список. Для этого нам нужно создать форму и обработать данные формы в нашем файле app.js с помощью Body Parser.
<form action="/" method="post">
<input type="text" placeholder="Name" name="name">
<input type="number" placeholder="Number" name="number">
<input type="text" placeholder="DOB" name="dob">
<input type="text" placeholder="City" name="city">
<button type="submit">Add</button>
</form>Обработка данных формы внутри 'app.js': мы должны получить значения из формы, используя req.body.valueName, а затем упорядочить их как объект и поместить в массив нашего пациента.
app.post("/", (req, res) => {
const name = req.body.name
const number = req.body.number
const dob = req.body.dob
const city = req.body.city
if (patients.length < availableBeds) {
const roomNo = patients.length + 1;
patients.push({
name: name,
number: number,
dob: dob,
city: city,
roomNo: roomNo
})
res.render("home", {
data: patients
})
}
else {
res.send("No room available");
}
})Мы толкаем пациентов только в том случае, если есть свободные койки, если нет, то просто возвращаем сообщение Нет свободных мест.
Шаг 4: Выписка пациентов: обновление веб-страницы с возможностью выписки: нам нужно создать форму, которая отправляет имя пациента, которого мы хотим выписать, в файл сервера «app.js».
<form action="/discharge" method="post">
<input type="text" style="display: none;"
name="name" value="<%= element.name %>">
<button type="submit">Discharge</button>
</form>Для выписки пациентов мы должны создать маршрут выписки, где мы собираемся получить имя запрошенного пациента, найти пациента с таким же именем и удалить элемент.
app.post("/discharge", (req, res) => {
var name = req.body.name;
var j = 0;
patients.forEach(patient => {
j = j + 1;
if (patient.name == name) {
patients.splice((j - 1), 1)
}
})
res.render("home", {
data: patients
})
})Полный код:
app.js
Javascript
const express = require("express")const bodyParser = require("body-parser")const patients = [{ name: "Aditya", number: "8175826846", dob: "29/09/2001", city: "Mirzapur", roomNo: "1",}]const availableBeds = 2; const app = express() app.set("view engine", "ejs") app.use(bodyParser.json());app.use(bodyParser.urlencoded({ extended: true})) app.get("/", function (req, res) { res.render("home", { data: patients })}) app.post("/", (req, res) => { const name = req.body.name const number = req.body.number const dob = req.body.dob const city = req.body.city if (patients.length < availableBeds) { const roomNo = patients.length + 1; patients.push({ name: name, number: number, dob: dob, city: city, roomNo: roomNo }) res.render("home", { data: patients }) } else { res.send("No room available"); }}) app.post("/discharge", (req, res) => { var name = req.body.name; var j = 0; patients.forEach(patient => { j = j + 1; if (patient.name == name) { patients.splice((j - 1), 1) } }) res.render("home", { data: patients })}) app.listen(3000, (req, res) => { console.log("App is running on port 3000")}) |
home.ejs
HTML
<!DOCTYPE html><html> <head> <title>HMS</title></head><style> table { font-family: arial, sans-serif; border-collapse: collapse; width: 100%; } td, th { border: 1px solid #dddddd; text-align: left; padding: 8px; } tr:nth-child(even) { background-color: #dddddd; } </style> <body> <h1>All Patients</h1> <table> <tr> <th>Name</th> <th>Number</th> <th>DOB</th> <th>City</th> <th>Room No.</th> <th>Discharge</th> </tr> <% data.forEach(element=> { %> <tr> <td><%= element.name %></td> <td><%= element.number %></td> <td><%= element.dob %></td> <td><%= element.city %></td> <td><%= element.roomNo %></td> <td> <form action="/discharge" method="post"> <input type="text" style="display: none;" name="name" value="<%= element.name %>"> <button type="submit">Discharge</button> </form> </td> </tr> <% }) %> </table> <h1>Add Patient</h1> <form action="/" method="post"> <input type="text" placeholder="Name" name="name"> <input type="number" placeholder="Number" name="number"> <input type="text" placeholder="DOB" name="dob"> <input type="text" placeholder="City" name= |