Online Clinic Management System PDF

Title Online Clinic Management System
Author SUBHODIP CHOWDHURY
Course Masters in Business Administration
Institution Guagua National Colleges
Pages 25
File Size 1.1 MB
File Type PDF
Total Downloads 380
Total Views 998

Summary

ONLINE CLINIC MANAGEMENT SYSTEMA PROJECT REPORT AND DOCUMENTATIONSubmitted by####### SUBHODIP CHOWDHURY (BWU/BCA/18/088)####### DIPTA PAUL (BWU/BCA/18/078)####### SURYA KARMAKAR (BWU/BCA/18/110)####### NISHAN SARKAR (BWU/BCA/18/153)####### ANIKET DAS (BWU/BCA/18/095)####### KHOKAN BARMAN (BWU/BCA/18...


Description

Page 01

ONLINE CLINIC MANAGEMENT SYSTEM A PROJECT REPORT AND DOCUMENTATION

Submitted by SUBHODIP CHOWDHURY (BWU/BCA/18/088) DIPTA PAUL (BWU/BCA/18/078) SURYA KARMAKAR (BWU/BCA/18/110) NISHAN SARKAR (BWU/BCA/18/153) ANIKET DAS (BWU/BCA/18/095) KHOKAN BARMAN (BWU/BCA/18/166)

in partial fulfillment for the award of the degree of

BACHELOR OF COMPUTER APPLICATION in

COMPUTATIONAL APPLICATION

BRAINWARE UNIVERSITY

398, Ramkrishnapur Road, Barasat, North 24 Parganas, Kolkata - 700 125

Page 02

BRAINWARE UNIVERSITY 398, Ramkrishnapur Road, Barasat, North 24 Parganas, Kolkata - 700 125

DEPARTMENT Of Computational Science

BONAFIDE CERTIFICATE

Certified that this project report “ONLINE CLINIC” is the bonafide work of “SUBHODIP CHOWDHURY, DIPTA PAUL, NISHAN SARKAR, SURYA KARMAKAR, ANIKET DAS, KHOKAN BARMAN ” who carried out the project work under my supervision.

DR. SANDIP ROY SIGNATURE

DR. MAUPARNA NANDAN SIGNATURE

DR. SANDIP ROY HEAD OF THE DEPARTMENT

DR. MAUPARNA NANDAN SUPERVISOR

TABLE OF CONTENTS Page 03

Chapter

Title

Page No.

ABSTRACT

Iv

INTRODUCTION

Iv

OBJECTIVE

V

REQUIREMENTS

VII

DIAGRAMS

VIII,IX,X,XI

GNATT CHART

XII

SCREENSHOTS & CODE

XIII-XXIV

TESTING

XXIV

FUTURE SCOPE

XXV

REFERENCES

XXV

1 [BASICS]

2 [DFD]

3 [ SCREENSHOTS & SOURCE CODE ]

4 [CONCLUSION & REFERENCES]

Page 04

Chapter 1 [BASICS] ABSTRACT This system is easy and simple to use by the user. This system is able to check the inventory for the medicine in the clinic. . If any medicine will be out of stock then that particular medicine name will be highlighted with red color. The target user for this system is staff of the clinic, doctor and also the management. Other than that, the system is user friendly and it can help the clinic to manage their activity. Overall this system is able to support the daily clinic operation based on evaluation from real user and the system is able to perform the task correctly. The patient gets the treatment and data about the treatment is recorded into the system. The system has few modules such as patient registration, medicine registration, disease registration and treatment history, patient record search, appointment and reporting.

INTRODUCTION Clinic Management System is developed to support and automate the clinic daily operation. Clinic Management System is a system that can help the clinic to manage their daily activity. This system will involve all the clinic operation starting from patient registration until billing the patient. Here the patients can register through online and get their appointment. This system help reduce the problems occur when using the manual system. The important thing is it will become easier for the data record and retrieval. This software also stores all the patient details, patients lab reports, bill calculation, billing, monthly reports, daily reports. This system enables doctors and clinic assistant to manage patient records, medicine stock, and appointment and produce reports. This system will be able to generate report regarding the clinic operation. User can enter the patient details. what ever treatment he has taken will also be saved in the database. Other than that, the system is user friendly and it can help the clinic to manage their activity. For example, the number of patient per day and total Page 01

Page 05

collection per day. This Clinic Management System Project will keep track of each and every medicine which is available in medicine store.

OBJECTIVE ● To promote the benefit of the patients of the Health Centre - without distinction of gender, race, colour or political, religious or other opinions or characteristics of individuals - by encouraging development and quality of health promotion and health care services ● To achieve this aim by liaising with the doctors and staff, other community health workers, and other persons or organisations concerned with health care. ● The Group will NOT represent any patient with a complaint concerning medical treatment received from the Health Centre. There is a standard procedure for this and the procedure is available from the Practice Manager. ● The Group is 'non-party in politics' and 'non-sectarian in religion'. It will, at all times, respect diversity and will be committed to the principles contained within the Equality Act. ● To offer patients' perspective on services provided. ● To provide practical support and to help and encourage patients to take more responsibility for their own health. ● To contribute to the continuous improvement of services. ● To foster improved communication between the Practice and its patients, and to break down any barriers.

Page 06

● To assist in implementing any changes. ● To encourage the development of voluntary community care, especially for the housebound and the elderly. ● Where appropriate, to act as a 'community pressure group in order to bring local needs to the attention of health and/or local authorities. ● To help patients to know what services are available to them. ● To undertake fundraising to enable the provision of extra facilities for the practice and its patients. ● The Group has the power to affiliate to: - The National Association of Patient Participation Groups (NAPP) - Healthwatch Surrey - Healthwatch and Public Involvement Association (HAPIA) - Ashford and St. Peter's Hospital NHS Foundation Trust and to other organisations with similar charitable objects.

Page 07

SOFTWARE AND HARDWARE REQUIREMENTS

1. Technology Used: Node.js 2. Framework Used : Express.js 3. Modules Used (dependencies):              

Bcrypt cool-ascii-faces cors dotenv ejs express express-flash express-ip express-session passport passport-local pg pg-hstore sequelize

4. Database The connection of database with the web pages been done using PostgreSQL.

5. Server : Localhost

Page 08

CHAPTER-2 SDLC Model followed LEVEL-0 DFD DIAGRAM

MAKE PAYMENT

BOOK APPOINTMENT

APPOINTMENT DETAILS REGISTRATION /LOG IN

USER

AUTHENTIFICATION

REGISTRATION /LOG IN

ONLINE CLINIC MANAGEMENT SYSTEM

DOCTOR

DISPLAY APPOINTMENT SUMMARY DISPLAY APPOINTMENT DETAILS PAYMENT

MANAGE USER DETAILS &

CONFERMATION

MANAGE DOCTOR DETAILS

REGISTRATION /LOG IN

ADMIN

Page 09

LEVEL 1 DFD DIAGRAM

VIEW PAYMENT DETAILS

P1 REGISTER /

USER PAYMENT TABLE

DOCTOR LOG IN

LOG IN

SEE APPOINTMENT SUMMARY REGISTRATION/ LOG IN DETAILS

LOG IN TABLE

VIEW APPOINTMENT DETAILS

ADMIN APPOINTMENT DETAILS DETAILS

BOOK APPOINTMENT APPOINTMENT CONFIRMED

P3 PAYMENT

Page 10

USER AUTHENTIFICATION ONLINE CLINIC MANAGEMENT SYSTEM

P1.1.1 CUSTOMER LOG IN

P1.1.1 DOCTORS LOG IN

P1.1.1 ADMIN LOG IN

Validation of data P1.1.2 ACCOUNT VALIDATION CHECK

P1.2.2 ACCOUNT DATA

LATEST USER ID

Generate User ID

ACCOUNT DATA WITH USER ID

P1.2.3 USER ID VALIDATION VALIDATED ACCOUNT

CUSTOMER & USER RECORD

P1.2.1 ANALYZE LATEST USER ID

Page 11

System Hierarchical Diagram Medex Clinic

Admin Panel

CLIENTS PANEL

DOCTORS’ PANEL

USER PANEL Menu Bar

HOME

ABOUT US

CONTACT US

REGISTER

LOG IN

SERVICES

DOCTORS

Log In

Description

USERS

New Users

Successfully Registered

Payment

Payment Done Go to home page

Payment failed

Existing Users

Page 12

Gnatt Chart

Page 13

Chapter 3

Screenshots: Front Page:

Sign in Page:

Page 14

Doctors Panel:

Doctor’s Panel:

Page 15

Admin Panel:

Admin Panel

Doctors

Page 16

Admin Panel

Payment

Admin Panel

Income

Page 17

Payment Gateway:

Payment Invoice Download :

Page 18

Web application Source Code: const express = require("express"); const { pool } = require("./dbConfig"); const bcrypt = require("bcrypt"); const passport = require("passport"); const flash = require("express-flash"); const session = require("express-session"); require("dotenv").config(); const app = express(); const expressip = require("express-ip"); var url = require('url'); var cors = require('cors'); const PORT = process.env.PORT || 3000; app.use(expressip().getIpInfoMiddleware); const initializePassport = require("./passportConfig"); initializePassport(passport); app.use(express.static(__dirname + '/views')); app.use(cors()); // Middleware // Parses details from a form app.use(express.urlencoded({ extended: false })); app.set("view engine", "ejs"); app.use( session({ // Key we want to keep secret which will encrypt all of our information secret: process.env.SESSION_SECRET, // Should we resave our session variables if nothing has changes which we dont resave: false, // Save empty value if there is no vaue which we do not want to do saveUninitialized: false }) ); // Funtion inside passport which initializes passport app.use(passport.initialize()); // Store our variables to be persisted across the whole session. Works with app.use(Session) above app.use(passport.session()); app.use(flash()); var r_code; app.get("/", (req, res) => { res.render("index"); }); app.get("/about", (req, res) => { res.render("about.ejs"); }); app.get("/services", (req, res) => { res.render("services.ejs"); }); app.get("/doctors", (req, res) => { res.render("doctors.ejs");

Page 19 }); app.get("/departments", (req, res) => { res.render("department.ejs"); }); app.get("/pricing", (req, res) => { res.render("pricing.ejs"); }); app.get("/gallery", (req, res) => { res.render("gallery.ejs"); }); app.get("/blog", (req, res) => { res.render("blog.ejs"); }); app.get("/contact", (req, res) => { res.render("contact.ejs"); }); app.get("/blog-single", (req, res) => { res.render("blog-single.ejs"); }); app.get("/doctors-panel", checkNotAuthenticated, (req, res) => { res.render("docpanel.ejs", { user: req.user.name, doctor_id: req.user.id }); }); app.post("/index", async (req, res) => { //const ipInfo = req.ipInfo; //var country = `${ipInfo.country}`; et { first_name, last_name, age, service, doctor_id, phone_no, email, appointment_date, appointment_time, message } = req.body; //console.log(first_name, last_name, age, service, doctor_id, phone_no, email, appointment_date, appointment_time, message); let errors = []; if (!first_name || !last_name || !age || !service || !doctor_id || !phone_no || !email || !appointment_date || !appointment_time || !message) { errors.push({ message: "Please enter all fields" }); } if (errors.length > 0) { res.render("index", { errors, first_name, last_name, age, service, doctor_id, phone_no, email, appointment_date, appointment_time, message }); } else{ // Validation passed pool.query( `INSERT INTO appointment_booking (first_name, last_name, age, service, doctor_id, phone_no, email, appointment_date, appointment_time, message ) VALUES ($1, $2, $3, $4, $5, $6, $7, $8, $9, $10) RETURNING id`, [first_name, last_name, age, service, doctor_id, phone_no, email, appointment_date, appointment_time, message], (err, results) => { if (err) { throw err;

Page 20 } res.redirect("/"); } ); } }); app.get("/doctors-panel/register", checkAuthenticated, (req, res) => { res.render("register.ejs"); }); app.get("/doctors-panel/login", checkAuthenticated, (req, res) => { // flash sets a messages variable. passport sets the error message console.log(req.session.flash.error); res.render("login.ejs"); }); app.get('/doctors-panel/getdata', checkNotAuthenticated1, function(req, res) { var data = url.parse(req.url, true); data = data.query; date = data.date; time = data.time; time = time+ ":00:00"; console.log(date); var doctor_id = req.user.id; console.log(doctor_id); pool.query( `SELECT * FROM appointment_booking WHERE doctor_id = ($1) and appointment_date = ($2) and appointment_time = ($3) ORDER BY id`, [doctor_id, date, time], // WHERE id = 1`, (err, results) => { if (err) { throw err; } let data = results.rows; res.send(data); } ); }); app.get('/doctors-panel/getdata/count-total', checkNotAuthenticated1, function(req, res) { var data = url.parse(req.url, true); data = data.query; date = data.date; var doctor_id = req.user.id; console.log(doctor_id); pool.query( `SELECT count(appointment_booking.id), users.fees, count(appointment_booking.id)*users.fees as total FROM appointment_booking, users WHERE appointment_booking.doctor_id = users.id and users.id = ($1) and appointment_date = ($2)

Page 21 and appointment_booking.status = 'Done' group by (users.id)`, [doctor_id, date], // WHERE id = 1`, (err, results) => { if (err) { throw err; } let data = results.rows; res.send(data); } ); }); app.get("/doctors-panel/status", async (req, res) => { var data = url.parse(req.url, true); data = data.query; var status = data.set_status; if(status == 'done') { status = 'Done'; } else if(status == 'absent') { status = 'Absent'; } else { status = 'null'; } var patient_id = data.patient_id; pool.query( `UPDATE appointment_booking SET status = ($1) WHERE id = ($2)`, [status, patient_id], (err, results) => { if (err) { throw err; } //res.redirect("/doctors-panel"); res.send(); } ); }); app.get("/doctors-panel/logout", (req, res) => { req.logout();

Page 22 res.redirect("/"); }); app.post("/doctors-panel/register", async (req, res) => { let { name, fees, email, password, password2 } = req.body; let errors = []; console.log({ name, fees, email, password, password2 }); if (!name || !fees || !email || !password || !password2) { errors.push({ message: "Please enter all fields" }); } if (password.length < 6) { errors.push({ message: "Password must be a least 6 characters long" }); } if (password !== password2) { errors.push({ message: "Passwords do not match" }); } if (errors.length > 0) { res.render("register", { errors, name, fess, email, password, password2 }); } else { hashedPassword = await bcrypt.hash(password, 10); console.log(hashedPassword); // Validation passed pool.query( `SELECT * FROM users WHERE email = $1`, [email], (err, results) => { if (err) { console.log(err); } console.log(results.rows); if (results.rows.length > 0) { return res.render("register", { message: "Email already registered" }); } else { pool.query(

Page 23 `INSERT INTO users (name, fees, email, password) VALUES ($1, $2, $3, $4) RETURNING id, password`, [name, fees, email, hashedPassword], (err, results) => { if (err) { throw err; } console.log(results.rows); req.flash("success_msg", "You are now registered. Please log in"); res.redirect("/doctors-panel/login"); } ); } } ); } }); app.post( "/doctors-panel/login", passport.authenticate("local", { successRedirect: "/doctors-panel", failureRedirect: "/doctors-panel/login", failureFlash: true }) ); function checkAuthenticated(req, res, next) { if (req.isAuthenticated()) { return res.redirect("/doctors-panel"); } next(); } function checkNotAuthenticated(req, res, next) { if (req.isAuthenticated()) { return next(); } res.redirect("/doctors-panel/login"); } function checkNotAuthenticated1(req, res, next) { if (req.isAuthenticated()) { return next(); } res.redirect("/doctors-panel/login"); } app.listen(PORT, () => { console.log(`Server running on port ${PORT}`); }); app.get('/index/getdoctors', function(req, res) { pool.query( `SELECT id, name, fees, email FROM users WHERE status = 'Activated'

Page 24 order by name;`, (err, results) => { if (err) { throw err; } let data = results.rows; res.send(data) } ); });

Chapter 4 Testing Alpha Testing : Alpha Testing is a type of software testing performed to identify bugs before releasing the software product to the real users or public. It is a type of acceptance testing. The main objective of alpha testing is to refine the software product by finding and fixing the bugs that were not discovered through previous tests.

Beta Testing : Beta testing starts right after Alpha testing. Product's beta version is ready to be tested. User manuals are ready and published containing all the list of known issues. Maintaining a log of bugs, feedback using a tool which can help in documentation as well.

FUTURE SCOPE FUTURE SCOPE: Their number might differ depending on the clinic needs, however, it

usually includes some basic Clinic information system modules.

Client management It is used to control patient flow. It can be used to register them, get the data of the patients’ health condition, view the treatment and check the medical history and reports.

Facility management The facility management module is responsible for tracking and maintaining the room availability, the occupancy status as well as various kinds of administrative documentation.

Page 25

Staff Management Staff management module provides the human resources administration. It updates the job description of employees, updates the hospital structure, tracks the recruiting records.

Medicine management Medicine management module contains the list of drugs that usually used for the specific treatment. It keeps records of every patient’ drugs used during their treatment.

Laboratory and tests management Lab management module shows the test results of the particular patient. The lab data can be viewed by the staff and generated for the patients’ reports. It is usually integrated with other hospital information system modules for the better overall functionality of the system.

REFERENCES

List of References –The reference material should be listed in the alphabetical order of the first author. The name of the author/authors should be immediately followed by the year and other details. A typical illustrative list given below relates to the citation example quoted above.

REFERENCES

1. www.W3School.com 2. www.stackoverflow.com 3. www.google.com 4. www.youtube.com

Thank You...


Similar Free PDFs