Plag Check Report 2025 04 29T05 - 36 - 34
Plag Check Report 2025 04 29T05 - 36 - 34
9.2% 24 10727
Word count
Identical 559
Minor Changes 280
Paraphrased 152
Omitted 0
Powered by
QuillBot Scanned on: 05:36 April 29, 2025 UTC
Results
The results include any sources we have found in your submitted document that includes the
following: identical text, minor changed text, paraphrased text.
https://www.scribd.com/document/853559872/Sample-Project-Report-1
3%
Powered by
.
own-work-decl-ip-pt1.txt
https://www.inf.ed.ac.uk/teaching/courses/ip/own-work-decl-ip-pt1.txt 1%
own-work-decl-ip-pt1.txt
120427431.pdf?sequence=3&isAllowed=y
https://dspace.cuni.cz/bitstream/handle/20.500.11956/178369/12042743… 1%
120427431.pdf
Powered by
.
1.3.4.14.pdf
https://mkce.ac.in/aqar/1.3.4.14.pdf 1%
1.3.4.14.pdf
MedicPoint | LinkedIn
https://iq.linkedin.com/company/medicpointiraq
1%
content
https://odr.chalmers.se/server/api/core/bitstreams/764ca6d4-5fab-4c43-a… 1%
Powered by
QuillBot Scanned on: 05:36 April 29, 2025 UTC
Scanned Text
Your text is highlighted according to the plagiarism types that where
found, as shown above.
Dr. D Prabakar
Assistant Professor
Department of Data Science and Business Systems
in partial fulfillment of the requirementsfor the degree
of
BACHELOR OF TECHNOLOGY
in
COMPUTER SCIENCE ENGINEERING
DEPARTMENT OF
DATA SCIENCE AND BUSSINESS SYSTEMS
SRM INSTITUTE OF SCIENCE AND
TECHNOLOGY
KATTANKULATHUR- 603 203
MAY 2025
Student Name
Registration Number
:
Title of Work
I / We hereby certify that this assessment compiles with the University’s Rules and Regulations
relating to Academic misconduct and plagiarism**, as listed in the University Website,
Regulations, and the Education Committee guidelines.
I / We confirm that all the work contained in this assessment is my / our own except where
indicated, and that I / We have met the following conditions:
•
Referenced and put in inverted commas all quoted text (from books, web, etc)
Given the sources of all pictures, data etc. that are not my own
Not made any use of the report(s) or essay(s) of any other student(s) either past or present
Acknowledged in appropriate places any help that I have received from others (e.g.
fellow students, technicians, statisticians, external sources)
Compiled with any other plagiarism criteria specified in the Course handbook /
University website
I understand that any false claim for this work will be penalized in accordance with the
University policies and regulations.
DECLARATION:
I am aware of and understand the University’s policy on Academic misconduct and plagiarism and I certify
that this assessment is my / our own work, except where indicated by referring, and that I have followed
the good academic practices noted above.
If you are working in a group, please write your registration numbers and sign with the date for
every student in your group.
ii
BONAFIDE CERTIFICATE
<Font Style Times New Roman — Size - 16>
<Font Style Times New Roman — Size - 14>
Certified that 18CSP107L - Minor Project [18CSP108L- Internship] report titled
“PROJECT TITLE ” is the bonafide work of “STUDENT1 NAME [REG NUM],
STUDENT2 NAME [REG NUM]” who carried out the project work[internship] under my
supervision. Certified further, that to the best of my knowledge the work reported herein
does not form any other project report or dissertation on the basis of which a degree or award
was conferred on an earlier occasion on this or any other candidate.
<<Signature >>
SIGNATURE
<<Signature >>
SIGNATURE
<<Name >>
SUPERVISOR
[Designation]
[Department]
PROFESSOR &HEAD
DEPARTMENT OF
COMPUTATIONAL INTELLIGENCE
iii
ACKNOWLEDGEMENTS
We express our humble gratitude to Dr. C. Muthamizhchelvan, Vice-Chancellor, SRM
Institute of Science and Technology, for the facilities extended for the project work and his
continued support.
We extend our sincere thanks to Dr. Leenus Jesu Martin M, Dean-CET, SRM Institute of
Science and Technology, for his invaluable support.
We wish to thank Dr. Revathi Venkataraman, Professor and Chairperson, School of
Computing, SRM Institute of Science and Technology, for her support throughout the project
work.
We encompass our sincere thanks to, Dr. M. Pushpalatha, Professor and Associate
Chairperson - CS, School of Computing and Dr. Lakshmi, Professor and Associate Chairperson
-AI, School of Computing, SRM Institute of Science and Technology, for their invaluable
support.
We are incredibly grateful to our Head of the Department, <<Name , Designation &
Department>>, SRM Institute of Science and Technology, for her suggestions and
encouragement at all the stages of the project work.
We want to convey our thanks to our Project Coordinators, Panel Head, and Panel Members
Department of Computational Intelligence, SRM Institute of Science and Technology, for their
inputs during the project reviews and support.
We register our immeasurable thanks to our Faculty Advisor, ..................., Department of
<<Dept. Name>>, SRM Institute of Science and Technology, for leading and helping us to
complete our course.
Our inexpressible respect and thanks to our guide, ....................., Department of <<Dept.
Name>>, SRM Institute of Science and Technology, for providing us with an opportunity to
pursue our project under his / her mentorship. He / She provided us with the freedom and
support to explore the research topics of our interest. His / Her passion for solving problems
and making a difference in the world has always been inspiring.
We sincerely thank all the staff members of <<Dept. Name>>, School of Computing, S.R.M
Institute of Science and Technology, for their help during our project. Finally, we would like to
thank our parents, family members, and friends for their unconditional love, constant support
and encouragement
Authors
iv
ABSTRACT
The IoT-Based Health Monitoring System project is designed to bridge the gap between
patients and healthcare providers through a digital platform that simplifies appointment
scheduling, health data monitoring, and profile management. This document details the
project's development journey, structured across five organized sprints under Agile
methodology, ensuring rapid delivery, adaptability, and quality assurance. Sprint 1 focused on
building the core authentication system, enabling secure registration and login functionalities
for both doctors and patients, with proper database integration. Sprint 2 developed user
dashboards tailored to each role, providing intuitive navigation and access to key services.
Sprint 3 introduced the management of health metrics, including the collection and storage of
real-time biometric data from devices such as the ESP32 sensor, enhancing the platform's
ability to support remote health monitoring. Sprint 4 implemented the appointment booking
functionality, allowing patients to request consultations and doctors to manage their schedules
effectively. Finally, Sprint 5 concentrated on improving the overall user interface design,
ensuring a responsive and professional look, while comprehensive functional testing was
performed to validate the system’s stability and performance. Each sprint documented sprint
goals, user stories, system architecture, UI prototypes, functional specifications, testing
strategies, daily call progress, and retrospective evaluations. The structured approach adopted
throughout the project ensured not only the successful delivery of all committed features but
also laid a strong foundation for future scalability, positioning IoT-Based Health Monitoring
System as a reliable and user-centric healthcare solution.
TABLE OF CONTENTS
ABSTRACT
iv
TABLE OF CONTENTS
LIST OF FIGURES
vi
LIST OF TABLES
vii
ABBREVIATIONS
viii
CHAPTER NO.
TITLE
PAGE NO.
1 INTRODUCTION
1.2 Motivation
7
1.7 Product Release Plan
9
10
11
12
13
2.1.4 UI Design
14
15
16
17
18
vi
2.2 Sprint 2
19
2.2.1 Sprint Goal with User Stories of Sprint 2
20
21
22
2.2.4 UI Design
23
25
26
27
2.3 Sprint 3
19
2.3.1 Sprint Goal with User Stories of Sprint 2
20
21
22
2.3.4 UI Design
23
24
25
26
27
2.4 Sprint 4
19
2.4.1 Sprint Goal with User Stories of Sprint 2
20
21
22
2.4.4 UI Design
23
24
25
26
vii
27
28
29
30
31
APPENDIX
32
33
B. SAMPLE CODING
34
C. PLAGIARISM REPORT
35
viii
LIST OF FIGURES
Figure
No.
Title
Page
No.
Figure 1.1
11
12
13
14
15
15
16
16
17
Figure
2.10
17
Figure
2.11
18
Figure
2.12
20
21
22
23
ix
Figure
No.
Page
No.
Title
24
24
25
26
27
29
29
30
31
Figure 4.5 UI Design for Booking Appointment
32
32
Figure 3.9
Figure 4.7
33
34
34
35
36
36
Figure 5.6
37
Figure 6.1
39
LIST OF TABLES
Table No. Title
Page No.
11
Table 2.2 Access Level Authorization Matrix (Sprint 1)
13
18
19
20
22
26
27
29
30
32
33
34
35
36
37
xi
ABBREVIATIONS
Abbreviation Full Form
UI
User Interface
API
DB
Database
ESP32
PHP
Hypertext Preprocessor
HTML
CSS
SQL
CRUD
MVC
Model-View-Controller
HTTP
XAMPP
QA
Quality Assurance
UX
User Experience
SRS
xii
CHAPTER 1
INTRODUCTION
1.1 Introduction to IoT-Based Health Monitoring System
The manner in which we access healthcare is transforming at a rate of knots, driven by digital
technologies. There is now increased emphasis on remote care, real-time feedback, and
individualized support between patients and physicians. In this new paradigm, the IoT-Based
Health Monitoring System emerges as an effective tool — building a smart, networked
platform where patients can be continuously monitored without having to visit a hospital each
time.
At the center of this system are IoT technologies such as the ESP32 microcontroller and
biomedical sensors such as the MAX30102. They work together to gather critical health
information — such as heart rate, oxygen saturation (SpO2), and body temperature — and
transmit it securely to healthcare professionals in real time.
We've designed a web application with PHP handling backend computations and MySQL used
to store the data. From there, the patient can sign up, sign in, schedule visits, review medical
records, and receive input from physicians remotely, all within their homes. Meanwhile,
doctors receive real-time data about their patients, are able to see medical trends, and intervene
instantly whenever necessary. This way, patients are no longer restricted to time-bound checkups — early
intervention and detection become relatively easier, particularly when it comes to
chronic diseases.
We made the system simple to use, scalable, and secure so that anyone of any age and technical
skill can take advantage of it. And due to its modular design, it's poised for future enhancements
such as adding new sensors or even AI-based health forecasts.
Ultimately, the IoT-Based Health Monitoring System is not merely about technology — it's
about creating a healthcare experience that's seamless, reliable, and accessible, in the process
creating a healthier and more connected world.
1.2 Motivation
Today’s healthcare environment is confronted with significant challenges — from the burden
of aging populations and long-term diseases to the unpredictability of worldwide pandemics.
Conventional models, which rely heavily on in-person consultations and manual monitoring of
health, can’t always keep pace. In rural communities, individuals often simply struggle to travel
to a clinic, while urban hospitals grapple with swaths of people and lengthy wait times. And
without ongoing monitoring, many health issues aren’t detected until it’s too late.
That is where the impetus for our IoT-Based Health Monitoring System derives from.
Healthcare ought to be less difficult to attain, more swift to deliver, and even proactive — as
opposed to reactionary once something does fail.
By merging IoT devices with a smart digital platform, our system enables one to monitor
significant health markers such as heart rate, SpO2 levels, and body temperature remotely and
in real time. Patients can take charge of monitoring their own health at home, while physicians
receive precise, current information to intervene early when necessary.
This not only enhances patient outcomes — it minimizes avoidable hospital stays and alleviates
the burden on healthcare systems as a whole.
Most of all, it empowers individuals. Rather than waiting until something really feels wrong,
individuals can be in control of their own health, detect warning signs early on, and create
healthier lives. And since the system operates from a distance, it breaks down geographical
barriers, making quality healthcare more accessible to all — regardless of where they reside.
At its heart, this project is propelled by a vision of a world in which technology bridges the gap
between doctors and patients — building a smarter, healthier, and more connected world.
dominant. Rather than go a long way for check-ups, they are able to remain in touch with
medical professionals from their own homes, conserving time, money, and effort. This further
decongests hospitals, making them available for more critical or emergency cases.
In addition, the system is customized. Physicians are able to view the information for each
patient over time, providing individualized advice or treatment regimens that can adapt if
necessary. This customization results in improved health outcomes and fewer disparities in
access to healthcare.
Overall, our project works towards SDG 3 in the sense that it makes health care more
preventive, efficient, and inclusive. It’s bringing us closer to a world in which everyone – no
matter their location, earnings, or age – can have full control of their health and enjoy healthier
lives.
1.4.2 Needs
Primary Needs:
Real-Time Health Monitoring:
Patients and doctors need a way to continuously track key vital signs like heart rate, oxygen
levels, body temperature, and blood pressure, around the clock.
Early Detection of Health Issues:
Immediate notification should inform patients and health professionals when something
abnormal is found so that quick action may be taken before complications arise.Remote
Healthcare Management:
Patients — particularly those who are distant from hospitals — ought to receive quality health
care from their homes, reducing the frequency of hospital visits.
3
Secondary Needs:
Easy Access to Data:
Doctors and patients must be able to access prior medical history easily, aiding in the
identification of patterns and improved long-term health choices.
Seamless Integration with Hospital Systems:
The platform must integrate well with healthcare systems such as hospital records and
electronic health records (EHRs) without requiring significant tweaking.
Simple, User-Friendly Design:
The system should be simple for all to use whether a tech-savvy physician or an older patient
so health tracking is easy and hassle-free.
1.4.3 Products
Core Product:
An Intelligent IoT-based health monitoring system that collects vital health information from
wearable devices such as smartwatches or sensors and sends it immediately to a secure platform
where doctors and patients can monitor it in real time.
Additional Features:
Health Data Insights:
The system
nalyses data collected to provide useful trends and insights, aiding improved
4
1.4
Product Goal
The primary aim of the IoT-Based Health Monitoring System is to develop an intelligent,
secure, and simple healthcare platform that leverages the capabilities of IoT technology with
advanced healthcare management. Our aim is to develop a system that enhances the experience
for patients and healthcare providers alike, rendering healthcare more convenient, proactive,
and efficient.
One of the fundamental concepts behind the platform is ongoing health monitoring. Critical
signs such as heart rate, oxygen saturation (SpO2), body temperature, and other critical
indicators are monitored in real-time. This allows physicians to detect health problems early
and provide timely, customized treatments — possibly even before patients are aware that
anything’s amiss.Security is also high priority. The system employs role-based access control,
so that sensitive health data can only be seen by registered users (patients or physicians) to
safeguard privacy and maintain conformance with healthcare regulations.
In addition to health tracking, the platform simplifies day-to-day healthcare activities. Patients
can schedule, reschedule, or cancel appointments using an automated scheduling system
without having to endure long wait times or complex processes. Physicians also gain, with less
administrative burden and more time to devote to care.
One major way healthcare becomes simpler is by simple and intuitive data visualization.
Doctors and patients can see over time how health trends are progressing using intuitive
dashboards — simpler to monitor progress, detect warning signs early on, and make more
informed treatment decisions.
Another significant objective is ensuring that all patient information, such as electronic health
records (EHRs), is kept safely and is available quickly when necessary. This enhances care
continuity — patients and physicians are able to view the history to see the complete scenario
prior to progressing.
The platform’s power comes in the form of real-time integration of IoT sensors. Health sensors
at home and wearable devices all provide real-time data straight to the platform, providing
doctors with current information on which to base their diagnosis and advice — rather than
working off out-of-date checkup reports.
1.5
S.No
Desired Outcome
System
#US 1
#US 2
authentication
Remote monitoring
IoT integration
Appointment system
convenience.
#US 5
confirm bookings.
#US 6
CHAPTER 2
SPRINT PLANNING AND EXECUTION
2.1 Sprint 1
2.1.1 Sprint Goal
Develop a secure Login, Registration, Update Profile, and Logout system for both doctors
and patients in MedConnect.
I want to...
So that...
I can access my dashboard
Register an account
securely
Register an account I can monitor patient information
Login to my
Access my health data safely
account
Login to my
View patient list safely
account
Priority
Update my profile
Medium
Logout securely
Protect my account
High
High
High
High
High
Planner Board representation of user stories are mentioned below figures 2.1,2.2 and 2.3
10
11
Target Users:
o
User Characteristics:
o
Location:
•
Target Location:
o
12
Profile Management:
•
User Logout:
•
Users can log out, ending the session and maintaining data security.
2.1.2.5. Features
User Registration:
•
User Authentication:
•
Session management maintains secure and persistent login sessions.
Profile Management:
•
User Logout:
•
Users can log out, ending the session and making data secure.
Role
Access Level
Patient
Access to own dashboard, own health data (future), and profile updates
Guest
13
2.1.2.7. Assumptions
•
Phone numbers and email IDs will be usernames as well as unique identifiers.
Secure login sessions will be maintained using standard PHP session management.
MySQL server is well configured and accessible for backend storage of data.
•
Adherence to general data protection laws such as GDPR will be taken into account in
the entire project (subsequent sprints).
14
Frequency
Profile Update
User Logout
Data Sets:
Data Type
User
Fields
Data fullname,
Use Cases
email,
phone,
(Doctor/Patient)
password, age/department
Session Data
15
Update
Session
Management
(Login, Logout)
Mode of Exchanges:
Mode
Description
API (RESTful
Used for real-time communication between frontend forms and backend server
HTTP Calls)
Session
PHP Sessions (or Java Server Sessions) manage login states in real-time
Management
Database Queries
2.1.4 UI DESIGN
16
17
18
19
Day
Focus Areas
12.02.2025
Wednesday
21.02.2025
Monday
3.03.2025
Monday
4.03.2024
Tuesday
5.03.2025
Wednesday
20
Learned
Lacked
- Early stakeholder
feedback improved
PHP session
management and
patient/doctor role
regressions faster.
flows.
practices.
- Daily stand-ups
- Modular code
kept everyone
structure eased
aligned on
debugging (e.g.,
blockers.
- Quick resolution
- Validating user
of database
testing during
connection issues.
backend errors.
outages.
Longed For
- Dedicated UX review
sessions for
deadlines.
login/registration forms.
streamline deployments,
making updates faster,
smoother, and more
reliable.
2.2 SPRINT 2
2.2.1 Sprint Goal
Implement patient health dashboard with real-time IoT data visualization and doctor-patient
interaction features.
Table 3.1 Detailed User Stories of sprint 2
User
Story ID
As a...
I want to...
View
my
So that...
glucose/pulse
US-07
Patient
US-08
Patient
US-09
Doctor
US-10
Doctor
US-11
Both
US-12
Admin
See
emergency
alerts
can
Priority
monitor
my
health trends
for
abnormal readings
I can focus on my
specialty cases
graphs
effectively
22
We can communicate
without delays
High
Critical
High
High
Medium
Medium
Figure 3.1 User Story for View my glucose/pulse readings in real-time charts
23
24
25
2.2.2.3 Demography
User Type
Needs
Technical Proficiency
Patients
Low-medium
Doctors
Medium-high
Admins
Role/permission management
High
2. Alert Workflow:
o
3. Messaging Protocol:
o
2.2.2.5 Features
Feature 1: Real-Time Health Dashboard
•
User Story:
26
•
"As a patient, I want to see my glucose levels on interactive charts so I can track daily
patterns."
Technical Specs:
o
Description: Red-colored alerts for abnormal values (Red: Glucose > 180mg/dL)
User Story:
"As a doctor, I want to get immediate alerts when my patient's values go over thresholds so I
can take action in time."
Feature 3: Doctor Patient Filter
•
Dashboard
Alerts
Messaging
Admin Panel
Patient
Full
Receive Only
Send/Receive
Denied
Doctor
Full
Send/Receive
Send/Receive
Denied
Admin
Read-Only
Denied
Denied
Full
27
Endpoint: /api/v1/patient/:id/telemetry
28
2.2.4 UI Design
29
30
Day
8.03.2025
Saturday
9.03.2025
Sunday
11.03.2025
Tuesday
12.03.2025
Wednesday
Focus Areas
31
Learned
- Seamless
- MongoDB reduced
WebSocket
message storage
integration (1.2s
time by 300% vs
avg latency)
MySQL
Lacked
- Chart.js requires
- HIPAA review
Safari-specific -
delayed role
webkit prefixes
management
- Stakeholders
- Load testing
praised
dashboard
WebSocket
UI/UX
heartbeats
- No fallback for
IoT device
disconnections
Longed For
- Real-time performance
monitoring
(Prometheus/Grafana)
- Dedicated UX reviewer
for dashboard charts
32
2.3 Sprint 3
2.3.1 Sprint Goal with User Stories of Sprint 3
IoT Sensor Data Integration Connect ESP32 + Sensors, Show Real-Time Glucose/Pulse
Table 4.1 Detailed User Stories of sprint 3
ID
Role
User Story
Technical Acceptance
Criteria
Priority
US13
System
Critical
US14
System
High
US15
Patient
High
US16
Engineer
Medium
33
Figure 4.1 user story System: Integrate ESP32 with Glucose Sensor
34
35
36
2.3.2.3 Demography
User Type
Needs
Technical Impact
Patients
Doctors
Engineers
Device management
Table 4. 2 Demography(Sprint 3)
37
38
2.3.4 UI Design
39
2.3.5 Functional Test Cases
Day
18.03.2025
Tuesday
19.03.2025
Wednesday
20.03.2025
Thursday
Focus Areas
40
Learned
Lacked
Longed For
Smooth ESP32-
MAX30102 requires
Clinical validation
Dedicated IoT
WiFi handoff
weekly recalibration
delays
QA specialist
Accurate glucose
SD cards corrupt after
readings (±2%)
100+ cycles
Collaborative
debugging sessions
Insufficient
Bluetooth
debugging tools
WebSocket reduces
No fallback for
latency by 60% vs
sensor conflicts
HTTP
41
Hardware CI/CD
pipeline
Automated
calibration
system
2.4 Sprint 4
2.4.1 Sprint Goal with User Stories of Sprint 3
Finalize system polish, resolve critical bugs, and deploy MedConnect to
production
Table 5.1 Detailed User Stories of sprint 4
ID
US17
US18
US19
Role
System
Patient
Admin
User Story
Deploy on XAMPP
server
environment
Enhanced dashboard
UI
Monitor system
health
Priority
Critical
High
Medium
42
43
44
2.4.2.3 Demography
User Type
Needs
Technical Impact
Patients
Load-balanced servers
Doctors
Administrators
System monitoring
Prometheus+Grafana integration
Engineers
Maintenance access
Table 5. 2 Demography(Sprint 4)
45
2.4.4 UI Design
46
Focus
Technical Outcome
15.04.25
Deployment Setup
16.04.25
Load Testing
10 concurrent users
Learned
Lacked
Longed For
Zero-downtime
Galera clustering
Detailed rollback
Kubernetes
deployments
needs 3+ nodes
playbooks
migration
1.8s 3G load
PDF generation
Audit log
Serverless PDF
performance
spikes CPU
compression
rendering
48
CHAPTER 3
RESULTS AND DISCUSSION
3.1 Project Outcomes
The IoT-Based Health Monitoring System was successfully designed, developed, and
implemented, achieving its intended purpose of real-time monitoring of health through IoT
integration. A secure user authentication system was in place, with independent registration
and login features for doctors and patients and features like profile updates and secure logout
for data protection.
Patients were given an interactive dashboard that showed synchronized vital signs in dynamic
charts so they could track their health trends effectively. Doctors could also view patient history
graphs and filter patients by department to improve diagnosis and management. An emergency
alert system was included to notify users of abnormal readings immediately, providing
immediate action during critical moments.
The system was deployed on a local XAMPP server without any loss of functionality or
integrity with the development environment. Frontend performance optimization was done so
that dashboard pages were loaded in less than two seconds, even on slower 3G network
connections, hence enhancing accessibility and user experience. Server uptime monitoring was
also included, which ensured more than 99.5% availability in the initial phase of deployment.
The IoT-Based Health Monitoring System architecture was developed in a scalable way so that
it could be easily expanded later on with more sensors, extra features, and perhaps cloud
migration. Generally speaking, the project was successful in its objectives of providing a
secure, effective, and responsive system for real-time health monitoring.
49
95
94
93
92
91
90
89
Sprint1
Sprint2
Sprint3
Sprint5
Series 1
Figure 6.1 Bar graph for Committed Vs Completed User Stories(Sprint 1-4)
50
CHAPTER 4
CONCLUSION & FUTURE ENHANCEMENTS
The IoT-Based Health Monitoring System development has successfully demonstrated the
capabilities of integrating IoT technology with healthcare services to provide uninterrupted,
real-time health monitoring and data management. By integrating a glucose sensor and a
MAX30102 pulse oximeter seamlessly with an ESP32 microcontroller, the system was able to
monitor critical health parameters such as blood glucose levels and pulse rates at periodic
intervals. Patients were given an easy-to-use dashboard through which they could track their
health status in real time, while physicians were given access to detailed patient profiles, health
trend history, and department-based filtering for improved patient management.
Security and usability were given importance during the development of the system. Secure
user registration, login authentication, profile modification, and logout features were
incorporated to make sure that patient and physician data was secure. In addition, the testing
on a local XAMPP environment enabled a consistent testing environment where all modules
were able to function smoothly, thus preserving the consistency across the development and
deployment phases. The system also effectively integrated emergency alert systems so that
users could be notified in time in the event of anomalous health readings, thereby averting
serious medical emergencies.
Although the system was successful in meeting its primary goals, a number of exciting avenues
for future development have been suggested. One of the initial enhancements would include
moving the platform from a local server environment to a cloud-based platform, providing
increased accessibility, higher scalability, real-time worldwide access, and enhanced disaster
recovery measures. Secondly, by including AI-driven predictive analytics, the system would
be able to track trends in patient data and predict emerging health risks prior to their worsening,
allowing for early interventions and tailored healthcare planning.
The other significant upgrade is the creation of a standalone mobile app for the Android and
iOS platforms. The app would give patients and physicians an easier method of using the
system's features, including real-time monitoring of health, secure messaging, and scheduling
of appointments. Most importantly, the mobile app would deliver instant alerts through push
notifications whenever critical health thresholds are crossed, ensuring faster response times and
51
potentially saving lives during emergencies. The inclusion of such mobile capabilities would
significantly increase the system's accessibility, user engagement, and responsiveness.
In addition, extending the system's hardware integration to encompass more biomedical
sensors, like temperature sensors, blood pressure sensors, and ECG sensors, would provide a
broader view of the patient's well-being. Real-time synchronization of several health
parameters could provide more precise diagnostics and more comprehensive medical insights.
The system could also include data visualization improvements, like enhanced health trend
analysis and forecasting charts, to help both doctors and patients make more informed
decisions.
In summary, the IoT-Based Health Monitoring System has set a solid and scalable foundation
for future healthcare technology innovation. With the integration of cloud services, mobile
apps, smart sensor integration, and AI-powered health analytics, the platform can potentially
grow into a completely intelligent health monitoring ecosystem that promotes preventive care,
enhances patient outcomes, and facilitates timely medical interventions.
52
APPENDIX
A. PATENT DISCLOSURE FORM
53
B. SAMPLE CODING
Source Code
Patient Dashboard.php
<?php
session_start();
if (!isset($_SESSION['patient_id'])) {
header("Location: patient-login.html");
exit();
}
try {
// Fetch patient profile
$stmt = $conn->prepare("SELECT * FROM patients WHERE id = :id");
$stmt->bindParam(':id', $_SESSION['patient_id']);
$stmt->execute();
$patient = $stmt->fetch(PDO::FETCH_ASSOC);
if (!$patient) {
session_destroy();
header("Location: patient-login.html?error=patient_not_found");
exit();
}
54
$phone = $_POST['phone'];
$age = $_POST['age'];
55
$history_stmt = $conn->prepare("
SELECT heart_rate, spo2, temperature, blood_pressure_sys, blood_pressure_dia,
recorded_at
FROM health_metrics
WHERE patient_id = :patient_id
ORDER BY recorded_at DESC
LIMIT 10
");
$history_stmt->bindParam(':patient_id', $_SESSION['patient_id']);
$history_stmt->execute();
$metrics_history = $history_stmt->fetchAll(PDO::FETCH_ASSOC);
56
57
<!DOCTYPE html>
<html>
<head>
<title>Patient Dashboard</title>
<link rel="stylesheet"
href="https://cdn.jsdelivr.net/npm/[email protected]/dist/css/bootstrap.min.css">
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/[email protected]/font/bootstrap-
icons.css">
<script src="https://cdn.jsdelivr.net/npm/chart.js"></script>
</head>
<body class="bg-light">
<div class="container py-5">
<!-- Updated Header with Profile Dropdown -->
<div class="d-flex justify-content-between align-items-center mb-4">
<h2>Welcome, <?= htmlspecialchars($patient['fullname']) ?></h2>
<div>
<button class="btn btn-primary me-2" data-bs-toggle="modal" data-bstarget="#updateProfileModal">
<i class="bi bi-pencil-square"></i> Edit Profile
</button>
58
<div class="row">
<div class="col-md-4 mb-3">
<div class="card text-white bg-danger">
<div class="card-body">
<h5 class="card-title">Heart Rate</h5>
<p class="card-text fs-4">
</div>
</div>
</div>
<div class="col-md-4 mb-3">
<div class="card text-white bg-info">
<div class="card-body">
<h5 class="card-title">SpO2 Level</h5>
<p class="card-text fs-4">
</div>
</div>
</div>
59
</div>
</div>
</div>
<div class="col-md-4 mb-3">
<div class="card text-white bg-secondary">
<div class="card-body">
<h5 class="card-title">Blood Pressure</h5>
<p class="card-text fs-4">
<?= isset($metrics['blood_pressure_sys'], $metrics['blood_pressure_dia'])
? "{$metrics['blood_pressure_sys']}/{$metrics['blood_pressure_dia']}
mmHg"
: 'N/A' ?>
</p>
</div>
</div>
</div>
<div class="col-md-8 mb-3">
<div class="card border-primary">
<div class="card-body">
<h5 class="card-title">Last Updated</h5>
<p class="card-text">
?></p>
</div>
</div>
</div>
</div>
60
</div>
<div class="card-body">
<div class="row">
<div class="col-md-12">
<canvas id="healthMetricsChart" height="300"></canvas>
</div>
</div>
<div class="row mt-3">
<div class="col-md-6">
<canvas id="heartRateChart" height="200"></canvas>
</div>
<div class="col-md-6">
<canvas id="spo2Chart" height="200"></canvas>
</div>
</div>
</div>
</div>
61
Book an Appointment</h4>
<div class="col-md-3">
<label for="appointment_date" class="form-label">Date</label>
<input type="date" class="form-control" name="appointment_date" required>
</div>
<div class="col-md-3">
<label for="appointment_time" class="form-label">Time</label>
<input type="time" class="form-control" name="appointment_time" required>
</div>
<div class="col-12">
<label for="notes" class="form-label">Notes (Optional)</label>
<textarea class="form-control" name="notes" rows="2"></textarea>
</div>
<div class="col-12">
62
Your Appointments</h4>
<div class="table-responsive">
<table class="table table-striped">
<thead>
<tr>
<th>Doctor</th>
<th>Date</th>
<th>Time</th>
<th>Status</th>
<th>Notes</th>
</tr>
</thead>
<tbody>
<?php if ($appointments): foreach ($appointments as $appt): ?>
<tr>
<td><?= htmlspecialchars($appt['doctor_name']) ?></td>
<td><?= $appt['appointment_date'] ?></td>
<td><?= $appt['appointment_time'] ?></td>
<td>
<span class="badge bg-<?=
$appt['status'] === 'completed' ? 'success' :
($appt['status'] === 'cancelled' ? 'danger' : 'warning') ?>">
63
Prescriptions</h4>
<div class="table-responsive">
<table class="table table-bordered table-hover">
<thead class="table-light">
<tr>
<th>Doctor</th>
<th>Medication</th>
<th>Dosage</th>
<th>Instructions</th>
<th>Prescription Notes</th>
<th>Date Issued</th>
</tr>
</thead>
<tbody>
<?php if ($prescriptions): foreach ($prescriptions as $presc): ?>
<tr>
64
65
<div class="row">
<div class="col-md-6">
<h6>Age</h6>
<p><?= htmlspecialchars($patient['age']) ?></p>
</div>
</div>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-secondary" data-bsdismiss="modal">Close</button>
<button class="btn btn-primary" data-bs-toggle="modal" data-bstarget="#updateProfileModal" data-bs-
dismiss="modal">
<i class="bi bi-pencil-square"></i> Edit Profile
</button>
</div>
</div>
</div>
66
</div>
67
</div>
</div>
<div class="modal-footer">
<button type="submit" class="btn btn-primary">Save Changes</button>
<button type="button" class="btn btn-secondary" data-bsdismiss="modal">Cancel</button>
</div>
</form>
</div>
</div>
<script
src="https://cdn.jsdelivr.net/npm/[email protected]/dist/js/bootstrap.bundle.min.js"></script>
<script>
// Health Metrics Chart
document.addEventListener('DOMContentLoaded', function() {
const ctx = document.getElementById('healthMetricsChart').getContext('2d');
const healthChart = new Chart(ctx, {
type: 'line',
data: {
labels: <?= json_encode($chart_labels) ?>,
datasets: [
{
label: 'Heart Rate (BPM)',
data: <?= json_encode($heart_rate_data) ?>,
borderColor: 'rgb(220, 53, 69)',
backgroundColor: 'rgba(220, 53, 69, 0.1)',
tension: 0.1,
yAxisID: 'y'
},
{
68
69
70
}
});
// SpO2 Chart
71
72
});
</script>
</body>
</html>
Doctor Dashboard.php
<?php
session_start();
if (!isset($_SESSION['doctor_id'])) {
header("Location: doctor-login.html");
exit();
}
try {
// Fetch doctor info
$stmt = $conn->prepare("SELECT * FROM doctors WHERE id = :id");
$stmt->bindParam(':id', $_SESSION['doctor_id']);
$stmt->execute();
$doctor = $stmt->fetch(PDO::FETCH_ASSOC);
if (!$doctor) {
session_destroy();
header("Location: doctor-login.html?error=not_found");
exit();
}
73
$fullname = $_POST['fullname'];
$email = $_POST['email'];
$phone = $_POST['phone'];
$department = $_POST['department'];
74
$insertStmt->bindParam(':patient_id', $patient_id);
$insertStmt->bindParam(':appointment_id', $appointment_id);
$insertStmt->bindParam(':prescription', $prescription);
$insertStmt->bindParam(':medication', $medication);
$insertStmt->bindParam(':dosage', $dosage);
$insertStmt->bindParam(':instructions', $instructions);
$insertStmt->execute();
} elseif (isset($_POST['update_status'])) {
$appointment_id = $_POST['appointment_id'];
$status = $_POST['status'];
$notes = $_POST['notes'] ?? '';
// Count of patients
$stmt = $conn->prepare("SELECT COUNT(DISTINCT p.id) AS total FROM patients p
INNER JOIN appointments a ON a.patient_id = p.id WHERE a.doctor_id = :doc_id");
$stmt->bindParam(':doc_id', $_SESSION['doctor_id']);
$stmt->execute();
$patientCount = $stmt->fetch(PDO::FETCH_ASSOC)['total'];
75
76
");
$stmt->bindParam(':patient_id', $patient['id']);
$stmt->execute();
$patient['health_history'] = $stmt->fetchAll(PDO::FETCH_ASSOC);
}
unset($patient); // Break the reference
<!DOCTYPE html>
<html lang="en">
77
<head>
<meta charset="UTF-8">
<title>Doctor Dashboard - MedConnect</title>
<link rel="stylesheet"
href="https://cdn.jsdelivr.net/npm/[email protected]/dist/css/bootstrap.min.css">
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/[email protected]/font/bootstrap-
icons.css">
<script src="https://cdn.jsdelivr.net/npm/chart.js"></script>
<style>
.prescription-list { max-height: 150px; overflow-y: auto; }
.badge-completed { background-color: #28a745; }
.badge-pending { background-color: #ffc107; color: #212529; }
.badge-cancelled { background-color: #dc3545; }
.badge-accepted { background-color: #17a2b8; }
.prescription-card { border-left: 4px solid #0d6efd; margin-bottom: 10px; }
.status-dropdown { min-width: 120px; }
.profile-icon {
width: 36px; height: 36px; border-radius: 50%;
background-color: #0d6efd; color: white;
display: flex; align-items: center; justify-content: center;
font-weight: bold;
}
.health-metric-card { transition: transform 0.2s; }
.health-metric-card:hover { transform: translateY(-3px); }
.trend-btn { padding: 2px 8px; font-size: 0.8rem; }
.chart-container { height: 300px; }
</style>
</head>
<body class="bg-light">
<div class="container py-5">
<!-- Updated Header with Profile Dropdown -->
78
79
</div>
</div>
80
</div>
<div class="col-md-4">
<div class="card text-white bg-warning health-metric-card">
<div class="card-body">
<div class="d-flex justify-content-between align-items-center">
<div>
<h5 class="card-title"><?= count(array_filter($appointments, fn($a) => $a['status']
=== 'pending')) ?></h5>
<p class="card-text">Pending Appointments</p>
</div>
<i class="bi bi-clock-history" style="font-size: 2rem;"></i>
</div>
</div>
</div>
</div>
</div>
81
<tr>
<th>Patient</th>
<th>Contact</th>
<th>Health Metrics</th>
<th>Last Updated</th>
</tr>
</thead>
<tbody>
<?php foreach ($patients as $p): ?>
<tr>
<td>
<div class="d-flex align-items-center">
<div class="profile-icon me-3">
<?= strtoupper(substr($p['fullname'], 0, 1)) ?>
</div>
<div>
<strong><?= htmlspecialchars($p['fullname']) ?></strong>
<div class="text-muted small">Age: <?= htmlspecialchars($p['age'])
?></div>
</div>
</div>
</td>
<td>
<div><?= htmlspecialchars($p['email']) ?></div>
<div class="text-muted small"><?= htmlspecialchars($p['phone']) ?></div>
</td>
<td>
<div class="d-flex flex-wrap gap-2">
<?php if ($p['heart_rate']): ?>
<span class="badge bg-danger">HR: <?= $p['heart_rate'] ?? 'N/A' ?>
BPM</span>
82
83
</div>
<?php endif; ?>
</div>
</div>
84
<tr>
<td>
<div class="d-flex align-items-center">
<div class="profile-icon me-3" style="background-color: #6c757d;">
<?= strtoupper(substr($appt['patient_name'], 0, 1)) ?>
</div>
<div>
<strong><?= htmlspecialchars($appt['patient_name']) ?></strong>
</div>
</div>
</td>
<td>
<?= date("M j, Y", strtotime($appt['appointment_date'])) ?>
<div class="text-muted small"><?= date("H:i",
strtotime($appt['appointment_time'])) ?></div>
</td>
<td>
<form method="POST" class="d-inline">
<input type="hidden" name="update_status" value="1">
<input type="hidden" name="appointment_id" value="<?= $appt['id'] ?>">
<select name="status" class="form-select status-dropdown"
onchange="this.form.submit()">
<option value="pending" <?= $appt['status'] === 'pending' ? 'selected' : ''
?>>Pending</option>
<option value="accepted" <?= $appt['status'] === 'accepted' ? 'selected' : ''
?>>Accepted</option>
<option value="completed" <?= $appt['status'] === 'completed' ? 'selected' : ''
?>>Completed</option>
<option value="cancelled" <?= $appt['status'] === 'cancelled' ? 'selected' : ''
?>>Cancelled</option>
</select>
</form>
85
</td>
<td>
<form method="POST">
<input type="hidden" name="update_status" value="1">
<input type="hidden" name="appointment_id" value="<?= $appt['id'] ?>">
<div class="input-group">
<input type="text" name="notes" class="form-control form-control-sm"
value="<?= htmlspecialchars($appt['notes'] ?? '') ?>" placeholder="Notes">
<button type="submit" class="btn btn-sm btn-outline-secondary">
<i class="bi bi-save"></i>
</button>
</div>
</form>
</td>
<td>
<?php if (!empty($appt['prescriptions'])): ?>
<div class="prescription-list">
<?php foreach (explode('|||', $appt['prescriptions']) as $prescription): ?>
<div class="prescription-card p-2 mb-2 bg-light small">
<?= nl2br(htmlspecialchars($prescription)) ?>
</div>
<?php endforeach; ?>
</div>
<?php else: ?>
<span class="text-muted small">None</span>
<?php endif; ?>
</td>
<td>
<button class="btn btn-sm btn-outline-primary" data-bs-toggle="modal"
data-bs-target="#addPrescriptionModal"
data-patient-id="<?= $appt['patient_id'] ?>"
86
87
<p class="text-muted"><i class="bi bi-building"></i> <?=
htmlspecialchars($doctor['department']) ?> Department</p>
</div>
<div class="card">
<div class="card-body">
<h6><i class="bi bi-person-badge"></i> Doctor ID</h6>
<p><?= htmlspecialchars($doctor['id']) ?></p>
</div>
</div>
</div>
<div class="modal-footer">
88
<div class="mb-3">
<label class="form-label">Phone</label>
<input type="text" name="phone" class="form-control" value="<?=
htmlspecialchars($doctor['phone']) ?>" required>
</div>
<div class="mb-3">
<label class="form-label">Department</label>
<input type="text" name="department" class="form-control" value="<?=
htmlspecialchars($doctor['department']) ?>" required>
</div>
</div>
<div class="modal-footer">
<button type="submit" class="btn btn-primary">Save Changes</button>
<button type="button" class="btn btn-secondary" data-bsdismiss="modal">Cancel</button>
</div>
</form>
</div>
</div>
90
<div class="mb-3">
<label class="form-label">Instructions</label>
<textarea class="form-control" name="instructions" rows="2"
placeholder="Usage instructions (e.g., Take twice daily after
meals)"></textarea>
</div>
<div class="mb-3">
<label class="form-label">Full Prescription Details</label>
<textarea class="form-control" name="prescription" rows="5" required
placeholder="Enter complete prescription details including duration, refills,
etc."></textarea>
</div>
</div>
<div class="modal-footer">
<button type="submit" class="btn btn-primary">
<i class="bi bi-prescription"></i> Save Prescription
91
</button>
<button type="button" class="btn btn-secondary" data-bsdismiss="modal">Cancel</button>
</div>
</form>
</div>
</div>
92
<canvas id="heartRateChart"></canvas>
</div>
</div>
</div>
</div>
<div class="col-md-6">
<div class="card mb-4">
<div class="card-header bg-info text-white">
<h6 class="mb-0">SpO2 (%)</h6>
</div>
<div class="card-body">
<div class="chart-container">
<canvas id="spo2Chart"></canvas>
</div>
</div>
</div>
</div>
<div class="col-md-6">
<div class="card mb-4">
<div class="card-header bg-warning text-dark">
<h6 class="mb-0">Temperature (°C)</h6>
</div>
<div class="card-body">
<div class="chart-container">
<canvas id="tempChart"></canvas>
</div>
</div>
</div>
</div>
<div class="col-md-6">
93
94
<div class="modal-footer">
<button type="button" class="btn btn-secondary" data-bsdismiss="modal">Close</button>
</div>
</div>
</div>
</div>
<script
src="https://cdn.jsdelivr.net/npm/[email protected]/dist/js/bootstrap.bundle.min.js"></script>
<script>
// Set patient info when prescription modal is shown
document.getElementById('addPrescriptionModal').addEventListener('show.bs.modal',
function (event) {
const button = event.relatedTarget;
document.getElementById('patientId').value = button.getAttribute('data-patient-id');
document.getElementById('patientName').textContent = button.getAttribute('data-patientname');
document.getElementById('appointmentId').value = button.getAttribute('dataappointment-id');
});
95
document.getElementById('trendPatientName').textContent = patientName;
// Prepare data
const labels = healthHistory.map(entry => new Date(entry.recorded_at).toLocaleString());
const heartRates = healthHistory.map(entry => entry.heart_rate || null);
const spo2s = healthHistory.map(entry => entry.spo2 || null);
const temps = healthHistory.map(entry => entry.temperature || null);
96
// Update table
const tableBody = document.getElementById('healthMetricsTableBody');
tableBody.innerHTML = '';
healthHistory.forEach(entry => {
const row = document.createElement('tr');
row.innerHTML = `
<td>${new Date(entry.recorded_at).toLocaleString()}</td>
<td>${entry.heart_rate || 'N/A'}</td>
<td>${entry.spo2 || 'N/A'}</td>
<td>${entry.temperature || 'N/A'}</td>
<td>${entry.blood_pressure_sys && entry.blood_pressure_dia
? `${entry.blood_pressure_sys}/${entry.blood_pressure_dia}`
: 'N/A'}</td>
`;
tableBody.appendChild(row);
});
// Initialize/Update charts
createChart('heartRateChart', 'Heart Rate', labels, heartRates, '#dc3545');
createChart('spo2Chart', 'SpO2', labels, spo2s, '#17a2b8');
createChart('tempChart', 'Temperature', labels, temps, '#ffc107');
createBPChart('bpChart', labels, bpSys, bpDia);
});
97
98
labels: labels,
datasets: [
{
label: 'Systolic',
data: sysData,
borderColor: '#6c757d',
backgroundColor: '#6c757d33',
tension: 0.3
},
{
label: 'Diastolic',
data: diaData,
borderColor: '#495057',
backgroundColor: '#49505733',
tension: 0.3
}
]
},
options: {
responsive: true,
maintainAspectRatio: false,
scales: {
y: { beginAtZero: false }
}
}
});
}
</script>
</body>
</html>
99
100
C. PLAGIARISM REPORT
101