Vishal Dr.1 PDF
Vishal Dr.1 PDF
2
3
4
5
6
ABSTRACT
The Doctor Appointment System is a comprehensive software solution designed to
streamline the process of scheduling and managing medical appointments. This system
is tailored to enhance the efficiency of healthcare facilities by providing a seamless
interface for patients, doctors, and administrative staff. The DAS integrates various
functionalities, including appointment booking, patient registration, doctor availability
tracking, and automated reminders, to reduce administrative burdens and improve
patient care.
The primary objective of the DAS is to minimize wait times, reduce scheduling
conflicts, and ensure optimal utilization of healthcare resources. Patients can easily
book appointments online, view their medical history, and receive notifications about
their upcoming visits. Doctors can manage their schedules, access patient records, and
update treatment plans in real-time. Administrative staff benefit from a centralized
dashboard that offers insights into appointment trends, patient flow, and resource
allocation.
7
TABLE OF CONTENT
S NO. TOPICS PAGE NO.
1. Project Summary 10
2. Purpose 11
3. Technology 13
4. Feasibility Analysis 16
5. Detailed Design 18
6. MySQL Presentation 23
7. Coding 27
8. Screenshots 87
9. Conclusion 100
10. Future Reference 101
11. References 102
12. Bibliography 103
8
LIST OF FIGURES
FIG NO. FIGURE NAME PAGE NO.
1. Class Diagram 20
2. ER Diagram 22
9
LIST OF TABLES
2. Versions of MySQL 15
3. Hardware Configuration 17
4. Software Configuration 18
5. MySQL Presentation 23-24
10
CHAPTER - 1
INTRODUCTION
1.1 Project Summary: -
“Doctor Appointment Management System is a web-based technology that
will manage to automate the existing manual system by the help of
computerized equipment’s and full-fledged computer software, so that their
valuable data/information can be stored for a longer period with easy
accessing and manipulation of the same. Basically, the project describes
how to manage for good performance and better services for the clients. This
automatic system delivers data processing in very high speed in systematic
manner.
Doctor Module
1. Dashboard: In this section, doctor can briefly view the total number of
the new appointment, total approved appointment and total cancelled
appointment.
11
3. Reports: In this section doctor can view the appointment details in a
particular period.
4. Search: In this section, doctor can search appointment with the help of
user appointment number/Name/Mobile Number
Doctor can also update his profile, change the password and recover the
password.
1. Home Page: In this section, user can view the welcome page of the web
application.
2. Book: In this section, user can have sent the appointment request.
3. Check Appointment: In this section, user can search appointment with
the help of user appointment number/Name/Mobile Number
Purpose:
Scope:
The Software design document would demonstrate how the design will
accomplish the functional and non- functional requirements captured in the
12
Software Requirement specification (SRS). The document will provide a
framework to the programmers through describing the high level
components and architecture, sub systems, interfaces, database design and
algorithm design. This is achieved through the use of architectural patterns,
design patterns, sequence diagrams, class diagrams, relational models and
user interfaces.
Design Introduction:
Design is the first step in the development phase for any techniques and
principles for the purpose of defining a device, a process or system in
sufficient detail to permit its physical realization.
Once the software requirements have been analyzed and specified the
software design involves three technical activities - design, coding,
implementation and testing that are required to build and verify the software.
The design activities are of main importance in this phase, because in this
activity, decisions ultimately affecting the success of the software
implementation and its ease of maintenance are made. These decisions have
the final bearing upon reliability and maintainability of the system. Design
is the only way to accurately translate the customer’s requirements into
finished software or a system (R. J. Martis, U. R. Acharya and H. Adeli
2014).
13
Design is the place where quality is fostered in development. Software
design is a process through which requirements are translated into a
representation of software. Software design is conducted in two steps.
Preliminary design is concerned with the transformation of requirements
into data.
14
CHAPTER-2
TECHNOLOGY
APACHE:
The Apache HTTP Server Project is an effort to develop and maintain an
open-source HTTP server for 6modern operating systems including UNIX
and Windows. The goal of this project is to provide a secure, efficient and
extensible server that provides HTTP services in sync with the current
HTTP standards.
PHP:
PHP is an open-source, server-side programming language that can be used
to create websites, applications, customer relationship management systems
and more. It is a widely-used general-purpose language that can be
15
embedded into HTML. This functionality with HTML means that the PHP
language has remained popular with developers as it helps to simplify
HTML code.
MYSQL:
MySQL is the world’s most popular open-source database. According
to DB-Engines, MySQL ranks as the second-most-popular database,
behind Oracle Database. MySQL powers many of the most accessed
applications, including Facebook, Twitter, Netflix, Uber, Airbnb, Shopify,
and Booking.com.
Since MySQL is open source, it includes numerous features developed in
close cooperation with users over more than 25 years. So, it’s very likely
that your favorite application or programming language is supported by
MySQL Database.
Versions of MySQL:
MySQL 14-11-2008 December This version contains the releases of MySQL 5.0 to MySQL
5.1 2013 5.1.73 versions. To read about the first version of MySQL,
click here.
MySQL 03-12-2010 December This version contains the releases of MySQL 5.5 to MySQL
5.5 2018 5.5.62 versions.
MySQL 05-02-2013 February This version contains the releases of MySQL 5.6 to MySQL
5.6 2021 5.5.45 versions.
MySQL 21-10-2015 October This version contains the releases of MySQL 5.7 to MySQL
5.7 2023 5.6.27 versions.
MySQL 19-04-2018 April 2026 This version contains the releases of MySQL 8.0 to MySQL
8.0 8.0.21 versions.
17
Feasibility analysis
The analysis of the requirement has led to a conclusion that the project is
feasible with respect to time and cost. The data collection from the field is
assured by the client to provide. The technology used to develop is almost
Open Source, therefore less cost for implementation and maintenance will
be involved. A feasibility study is an analysis used in measuring the ability
and likelihood to complete a project successfully including all relevant
factors. It must account for factors that affect it such as economic,
technological and time factors. It is used to assess the strengths and
weaknesses of a proposed project and present directions of activities which
will improve a project and achieve desired results (A. Mincholé and B.
Rodriguez 2019).
Economic feasibility
The purpose of economic feasibility assessment is to determine the positive
economic benefits to the organization that the proposed system will provide.
The assessment typically involves a cost/benefits analysis.
Technical feasibility
Technical analysis is a trading tool employed to evaluate securities and
attempt to forecast the future movement. I am using java language and other
tools like net beans to develop the software.
Operational feasibility
Operational feasibility is a measure of how well proposed system solves the
problems, and takes advantage of the opportunities identified during scope
18
definition and how it satisfies the requirements analysis phase of the system
development.
Analysis and Design
Analysis:
Operational feasibility is a measure of how well proposed system solves the
problems, and takes advantage of the opportunities identified during scope
definition and how it satisfies the requirements analysis phase of the system
development (U. R. Acharya, H. Fujita, O. S. Lih, M. Adam, J. H. Tan and
C. K. Chua 2017).
Requirement Specification
Hardware Configuration:
Client Side:
RAM 1 GB
Hard disk 20 GB
Processor 2.0 GHz
19
Software Requirement:
Client Side:
Server Side:
Web Server APACHE
Server-side Language PHP5.6 or above version
Database Server MYSQL
Operating System Windows or any equivalent OS
DETAILED DESIGN
UML DIAGRAMS
Actor:
A coherent set of roles that users of use cases play when interacting with
the use `cases.
Use case:
20
specifying, visualizing and documenting the system. This is the step while
developing any product after analysis. The goal from this is to produce a
model of the entities involved in the project which later need to be built.
The representation of the entities that are to be used in the product being
developed need to be designed.
USECASE DIAGRAM:
Class Diagram:
21
ER Diagram:
The ER model is a conceptual data model that views the real world as
entities and relationships. A basic component of the model is the Entity-
Relationship diagram which is used to visually represent data objects.
Since Chen wrote his paper the model has been extended and today it is
22
commonly used for database design for the database designer, the utility of
the ER model is:
23
ER Diagram
24
MYSQL PRESENTATION
MySQL
25
Appointment Table: (Table name is table appointment)
The DFD is also called as a data flow graph or bubble chart. Standard
symbols for DFDs are derived from the electric circuit diagram analysis and
are shown in fig:
26
Zero Level DFD
Appointment
Management
Doctor Login
Management
Management
DAMS
Specialization Password
Management Management
Webpages
Management
27
First Level DFD
Appointment Password
Management
Management
Doctor Password
Management
DAMS Management
Specialization Login
Management Management
Authorization Generate
Report
Management
28
CHAPTER-3
CODING
HTML CODE:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Preskool</title>
<link
href="https://fonts.googleapis.com/css2?family=Poppins:ital,wght@0,500;0,600;0,70
0;1,400&display=swap" rel="stylesheet">
<link rel="stylesheet"
href="assets/plugins/fontawesome/css/fontawesome.min.html">
</head>
<body>
29
<div class="collapse navbar-collapse mainmenu" id="navbar-menu">
<li class="nav-item">
</li>
<li class="nav-item">
</li>
<li class="nav-item">
</li>
</ul>
<a href="https://themeforest.net/item/preskool-bootstrap-admin-html-
template/29532878" target="_blank" class="button download-btn">Buy
Template</a>
</div>
</div>
</div>
</nav>
</header>
<section class="hero-section">
<div class="container-fluid">
30
<div class="row align-items-center">
<a href="https://themeforest.net/item/preskool-bootstrap-admin-html-
template/29532878" target="_blank" class="button">Buy Template</a>
</div>
<div class="hero-4-img">
</div>
</div>
</div>
</div>
</section>
<div class="container-fluid">
<h2>Home Page</h2>
<p class="sub-title">We build this template with HTML5, Vuejs and Laravel. </p>
</div>
31
</div>
</div>
<div class="demo-tabs">
</ul>
</div>
<div class="demo-box">
</div>
</div>
</div>
</div>
32
</div>
</section>
<div class="container-fluid">
<h2>Preskool Pages</h2>
</div>
</div>
</div>
<div class="row">
</div>
<div class="project-info">
</div>
33
</div>
</div>
<div class="project-info">
</div>
</div>
</div>
<div class="project-info">
</div>
</div>
</div>
<div class="project-info">
</div>
</div>
</div>
<div class="project-info">
</div>
</div>
35
<div class="project-link"><a class="button" href="html-template/expenses.html"
target="_blank"> View Demo</a></div>
</div>
<div class="project-info">
</div>
</div>
</div>
<div class="project-info">
</div>
</div>
</div>
<div class="project-info">
36
<div class="project-title"><a href="html-template/holiday.html"
target="_blank">Holiday</a></div>
</div>
</div>
</div>
<div class="project-info">
</div>
</div>
</div>
<div class="project-info">
37
</div>
</div>
</div>
</div>
</section>
<footer class="footer">
<div class="footer-bottom">
<div class="container-fluid">
<div class="copyright">
<div class="row">
<div class="copyright-text">
</div>
</div>
</div>
</div>
</div>
</div>
</footer>
38
<div class="container py-5">
</ol>
</nav>
</div>
</div>
<div class="container">
<div class="row">
<div class="col-sm-12">
<div class="card-block">
<form method="GET">
39
<label class="col-sm-12 col-form-label">Search(By Fullname/Appointment
Number)</label>
<br>
<div class="col-sm-12">
</div>
</div>
<br>
</form>
</div>
<br>
<div class="card-body">
{% if messages %}
{% if message.tags == 'error' %}
{{message}}
<span aria-hidden="true">×</span>
</button>
</div>
40
{% endif %}
{% endfor %}
{% endif %}
{% if messages %}
{% if message.tags == 'info' %}
{{message}}
<span aria-hidden="true">×</span>
</button>
</div>
{% endif %}
{% endfor %}
{% endif %}
<div class="table-responsive">
<thead>
<tr>
{% if patient %}
<th>Appointment Number</th>
<th>Patient Name</th>
<th>Date of Appointment</th>
41
<th>Time of Appointment</th>
<th>Creation Date</th>
<th>Status</th>
<th class="text-right">Action</th>
</tr>
</thead>
<tbody>
{% for i in patient %}
<tr>
<td>{{i.appointmentnumber}}</td>
<td>{{i.fullname}}</td>
<td>{{i.date_of_appointment}}</td>
<td>{{i.time_of_appointment}}</td>
<td>{{i.created_at}}</td>
{% if i.status == '0' %}
CSS CODE:
html {
height: 100%;
body {
background-color: #fff;
color: #333;
42
font-family: 'Poppins', sans-serif;
font-size: 1rem;
height: 100%;
line-height: 1.5;
overflow-x: hidden;
h1,
h2,
h3,
h4,
h5,
h6 {
margin-top: 0;
a: hover,
a: active,
a: focus {
outline: none;
text-decoration: none;
input: -webkit-autofill,
43
input: -webkit-autofill: focus {
.form-control {
box-shadow: none;
color: #333;
font-size: 15px;
height: 40px;
.form-control: focus {
border-color: #FFBC53;
box-shadow: none;
outline: 0 none;
. form-control. Form-control-sm {
. form-control-sm {
background-color: #fff;
. form-control. form-control-lg {
44
height: calc (1.5em + 1rem + 2px);
a{
color: #009ce7;
input,
button,
a{
outline: none;
input[type="file"] {
height: auto;
input[type=text],
45
input[type=password] {
-webkit-appearance: none;
-moz-appearance: none;
appearance: none;
textarea. form-control {
resize: vertical;
. navbar-nav > li {
float: left;
. form-group {
margin-bottom: 1.25rem;
. input-group. form-control {
height: 40px;
46
.font-weight-600 {
font-weight: 600;
ul, ol {
padding: 0px;
list-style: none;
/*-----------------
3. Header
-----------------------*/
. header {
background-color: #fff;
left: 0;
position: fixed;
right: 0;
top: 0;
z-index: 1001;
height: 60px;
47
. header. header-left {
float: left;
height: 60px;
padding: 0 20px;
position: relative;
width: 320px;
z-index: 1;
background-color: #f7f7fa;
display: flex;
align-items: center;
justify-content: center;
display: inline-block;
line-height: 60px;
max-height: 40px;
48
width: auto;
display: none;
position: relative;
display: none;
.user-menu {
float: right;
margin: 0;
position: relative;
z-index: 99;
padding-right: 15px;
color: #a0a0a0;
font-size: 14px;
line-height: 58px;
padding: 0 15px;
49
height: 60px;
color: #18aefa;
.user-img {
margin-right: 3px;
position: relative;
border: 0;
position: relative;
padding: 0;
margin: 0;
cursor: pointer
.user-menu. dropdown-menu {
min-width: 200px;
50
padding: 0;
display: flex;
align-items: center;
color: #FFBC53;
background-color: #FFBC53;
color: #fff;
color: #fff;
51
. header. dropdown-menu > li > a {
color: #FFBC53;
margin-right: 10px;
text-align: center;
width: 18px;
color: #FFBC53;
font-size: 16px;
margin-right: 10px;
min-width: 18px;
text-align: center;
color: #fff;
. mobile_btn {
display: none;
float: left;
52
}
. slide-nav. sidebar {
margin-left: 0;
.user-header {
background-color: #f9f9f9;
display: flex;
.user-header .user-text {
margin-left: 10px;
.user-header .user-text h6 {
margin-bottom: 2px;
. menu-title {
color: #a3a3a3;
display: block;
font-size: 14px;
margin-bottom: 5px;
padding: 0 25px;
. sidebar-overlay {
53
background-color: rgba (0, 0, 0, 0.6);
display: none;
height: 100%;
left: 0;
position: fixed;
top: 60px;
width: 100%;
z-index: 1000;
. sidebar-overlay. opened {
display: block;
html. menu-opened {
overflow: hidden;
overflow: hidden;
. top-nav-search {
float: left;
margin-left: 15px;
. top-nav-search form {
54
margin-top: 10px;
position: relative;
width: 300px;
. top-nav-search. form-control {
background-color: transparent;
border-radius: 50px;
color: #ddd;
height: 40px;
. top-nav-search. btn {
background-color: transparent;
border-color: transparent;
color: #ffbc53;
min-height: 40px;
position: absolute;
right: 0;
top: 0;
55
color: #ddd;
color: #ddd;
color: #ddd;
color: #ddd;
color: #ddd;
/*-----------------
4. Footer
-----------------------*/
footer {
56
footer p {
margin: 0px;
:root {
--primary: #0463FA;
--light: #EFF5FF;
--dark: #1B2C51;
.fw-medium {
.fw-bold {
.fw-black {
.back-to-top {
57
position: fixed;
display: none;
right: 45px;
bottom: 45px;
z-index: 99;
#spinner {
opacity: 0;
visibility: hidden;
z-index: 99999;
#spinner.show {
visibility: visible;
opacity: 1;
58
/*** Button ***/
.btn {
font-weight: 500;
transition: .5s;
.btn.btn-primary,
.btn.btn-secondary {
color: #FFFFFF;
.btn-square {
width: 38px;
height: 38px;
.btn-sm-square {
width: 32px;
height: 32px;
.btn-lg-square {
width: 48px;
59
height: 48px;
.btn-square,
.btn-sm-square,
.btn-lg-square {
padding: 0;
display: flex;
align-items: center;
justify-content: center;
font-weight: normal;
.navbar .dropdown-toggle::after {
border: none;
content: "\f107";
font-weight: 900;
vertical-align: middle;
margin-left: 8px;
60
.navbar .navbar-nav .nav-link {
margin-right: 30px;
padding: 25px 0;
color: #FFFFFF;
font-size: 15px;
font-weight: 500;
text-transform: uppercase;
outline: none;
color: var(--primary);
margin-right: 0;
padding: 10px 0;
.navbar .navbar-nav {
61
border-top: 1px solid #EEEEEE;
.navbar .navbar-brand,
.navbar a.btn {
height: 75px;
color: var(--dark);
font-weight: 500;
.navbar.sticky-top {
top: -100px;
transition: .5s;
display: block;
border: none;
62
margin-top: 0;
top: 150%;
opacity: 0;
visibility: hidden;
transition: .5s;
top: 100%;
visibility: visible;
transition: .5s;
opacity: 1;
.header-carousel .owl-carousel-text {
position: absolute;
width: 100%;
height: 100%;
padding: 3rem;
top: 0;
63
left: 0;
display: flex;
align-items: center;
justify-content: center;
.header-carousel .owl-nav {
position: absolute;
width: 200px;
height: 45px;
bottom: 30px;
left: 50%;
transform: translateX(-50%);
display: flex;
justify-content: space-between;
width: 45px;
height: 45px;
display: flex;
64
align-items: center;
justify-content: center;
color: #FFFFFF;
background: transparent;
border-radius: 45px;
font-size: 22px;
transition: .5s;
background: var(--primary);
border-color: var(--primary);
.header-carousel .owl-dots {
position: absolute;
height: 45px;
bottom: 30px;
left: 50%;
transform: translateX(-50%);
display: flex;
65
align-items: center;
justify-content: center;
.header-carousel .owl-dot {
position: relative;
display: inline-block;
margin: 0 5px;
width: 15px;
height: 15px;
background: transparent;
border-radius: 15px;
transition: .5s;
.header-carousel .owl-dot::after {
position: absolute;
content: "";
width: 5px;
height: 5px;
top: 4px;
left: 4px;
66
background: #FFFFFF;
border-radius: 5px;
.header-carousel .owl-dot.active {
background: var(--primary);
border-color: var(--primary);
.page-header {
background-size: cover;
.breadcrumb-item + .breadcrumb-item::before {
color: var(--light);
.service-item {
transition: .5s;
67
}
.service-item:hover {
margin-top: -10px;
.service-item .btn {
width: 40px;
height: 40px;
display: inline-flex;
align-items: center;
background: #FFFFFF;
border-radius: 40px;
white-space: nowrap;
overflow: hidden;
transition: .5s;
.service-item:hover .btn {
width: 140px;
68
/*** Feature ***/
.container.feature {
.feature-text {
.feature-text {
.feature-text {
69
/*** Team ***/
.team-item img {
position: relative;
top: 0;
transition: .5s;
.team-item:hover img {
top: -30px;
.team-item .team-text {
position: relative;
height: 100px;
transition: .5s;
.team-item:hover .team-text {
margin-top: -60px;
height: 160px;
70
.team-item .team-text .team-social {
opacity: 0;
transition: .5s;
opacity: 1;
display: inline-flex;
color: var(--primary);
background: #FFFFFF;
border-radius: 40px;
color: #FFFFFF;
background: var(--primary);
71
/*** Appointment ***/
.bootstrap-datetimepicker-widget.bottom {
.bootstrap-datetimepicker-widget .table * {
border-bottom-width: 0px;
.bootstrap-datetimepicker-widget .table th {
font-weight: 500;
.bootstrap-datetimepicker-widget.dropdown-menu {
padding: 10px;
border-radius: 2px;
background: var(--primary);
border-bottom-color: var(--primary);
72
.testimonial-carousel::before {
position: absolute;
content: "";
top: 0;
left: 0;
height: 100%;
width: 0;
background: linear-gradient(to right, rgba(255, 255, 255, 1) 0%, rgba(255, 255, 255,
0) 100%);
z-index: 1;
PYTHON CODE:
from django.db import models
USER = {
(1,'admin'),
(2,'doc'),
73
profile_pic = models. ImageField(upload_to='media/profile_pic')
updated_at = models.DateTimeField(auto_now=True)
def __str__(self):
def __str__(self):
if self. admin:
74
else:
def __str__(self):
75
pagetitle = models. CharField(max_length=250)
email = models.EmailField(max_length=200)
def __str__(self):
User = get_user_model()
def BASE(request):
return render(request,'base.html')
def LOGIN(request):
return render(request,'login.html')
def doLogout(request):
76
logout(request)
return redirect('login')
def doLogin(request):
if request.method == 'POST':
user = EmailBackEnd.authenticate(request,
username=request.POST.get('email'),
password=request.POST.get('password')
if user!=None:
login(request,user)
user_type = user.user_type
if user_type == '1':
return redirect('admin_home')
return redirect('doctor_home')
else:
return redirect('login')
else:
77
messages.error(request,'Email or Password is not valid')
return redirect('login')
login_required(login_url='/')
context = {
"user":user,
profile_pic = request.FILES.get('profile_pic')
first_name = request.POST.get('first_name')
last_name = request.POST.get('last_name')
email = request.POST.get('email')
username = request.POST.get('username')
print(profile_pic)
try:
78
if profile_pic! =None and profile_pic! = "":
customuser. save ()
return redirect('profile')
except:
context = {}
if len(ch)>0:
context["data"]:data
new_pas = request.POST['npwd']
un = user. username
79
if check == True:
user.set_password(new_pas)
user. save ()
user = User.objects.get(username=un)
else:
return render(request,'change-password.html')
def DOCSIGNUP(request):
specialization = Specialization.objects.all()
if request.method == "POST":
pic = request.FILES.get('pic')
first_name = request.POST.get('first_name')
last_name = request.POST.get('last_name')
username = request.POST.get('username')
80
email = request.POST.get('email')
mobno = request.POST.get('mobno')
specialization_id = request.POST.get('specialization_id')
password = request.POST.get('password')
if CustomUser.objects.filter(email=email).exists():
return redirect('docsignup')
if CustomUser.objects.filter(username=username).exists():
return redirect('docsignup')
else:
user = CustomUser(
first_name=first_name,
last_name=last_name,
username=username,
email=email,
user_type=2,
profile_pic = pic,
user.set_password(password)
user.save()
spid =Specialization.objects.get(id=specialization_id)
81
doctor = DoctorReg(
admin = user,
mobilenumber = mobno,
specialization_id = spid
doctor.save()
messages.success(request,'Signup Successfully')
return redirect('docsignup')
context = {
'specialization':specialization
return render(request,'doc/docreg.html',context)
@login_required(login_url='/')
def DOCTORHOME(request):
doctor_admin = request.user
doctor_reg = DoctorReg.objects.get(admin=doctor_admin)
allaptcount = Appointment.objects.filter(doctor_id=doctor_reg).count
newaptcount = Appointment.objects.filter(status='0',doctor_id=doctor_reg).count
appaptcount =
Appointment.objects.filter(status='Approved',doctor_id=doctor_reg).count
canaptcount =
Appointment.objects.filter(status='Cancelled',doctor_id=doctor_reg).count
comaptcount =
Appointment.objects.filter(status='Completed',doctor_id=doctor_reg).count
82
context = {
'newaptcount':newaptcount,
'allaptcount':allaptcount,
'appaptcount':appaptcount,
'canaptcount':canaptcount,
'comaptcount':comaptcount
return render(request,'doc/dochome.html',context)
def View_Appointment(request):
try:
doctor_admin = request.user
doctor_reg = DoctorReg.objects.get(admin=doctor_admin)
view_appointment = Appointment.objects.filter(doctor_id=doctor_reg)
# Pagination
page = request.GET.get('page')
try:
view_appointment = paginator.page(page)
except PageNotAnInteger:
view_appointment = paginator.page(1)
83
except EmptyPage:
view_appointment = paginator.page(paginator.num_pages)
except Exception as e:
def Patient_Appointment_Details(request,id):
patientdetails=Appointment.objects.filter(id=id)
context={'patientdetails':patientdetails
return render(request,'doc/patient_appointment_details.html',context)
def Patient_Appointment_Details_Remark(request):
if request.method == 'POST':
patient_id = request.POST.get('pat_id')
remark = request.POST['remark']
status = request.POST['status']
patientaptdet = Appointment.objects.get(id=patient_id)
patientaptdet.remark = remark
patientaptdet.status = status
patientaptdet.save()
84
messages.success(request,"Status Update successfully")
return redirect('view_appointment')
return render(request,'doc/view_appointment.html',context)
def Patient_Approved_Appointment(request):
doctor_admin = request.user
doctor_reg = DoctorReg.objects.get(admin=doctor_admin)
patientdetails1 = Appointment.objects.filter(status='Approved',doctor_id=doctor_reg)
def Patient_Cancelled_Appointment(request):
doctor_admin = request.user
doctor_reg = DoctorReg.objects.get(admin=doctor_admin)
patientdetails1 = Appointment.objects.filter(status='Cancelled',doctor_id=doctor_reg)
def Patient_New_Appointment(request):
doctor_admin = request.user
doctor_reg = DoctorReg.objects.get(admin=doctor_admin)
patientdetails1 = Appointment.objects.filter(status='0',doctor_id=doctor_reg)
85
return render(request, 'doc/patient_app_appointment.html', context)
def Patient_List_Approved_Appointment(request):
doctor_admin = request.user
doctor_reg = DoctorReg.objects.get(admin=doctor_admin)
patientdetails1 = Appointment.objects.filter(status='Approved',doctor_id=doctor_reg)
def DoctorAppointmentList(request,id):
patientdetails=Appointment.objects.filter(id=id)
context={'patientdetails':patientdetails
return render(request,'doc/doctor_appointment_list_details.html',context)
def Patient_Appointment_Prescription(request):
if request.method == 'POST':
patient_id = request.POST.get('pat_id')
prescription = request.POST['prescription']
recommendedtest = request.POST['recommendedtest']
status = request.POST['status']
patientaptdet = Appointment.objects.get(id=patient_id)
patientaptdet.prescription = prescription
patientaptdet.recommendedtest = recommendedtest
86
patientaptdet.status = status
patientaptdet.save()
return redirect('view_appointment')
return render(request,'doc/patient_list_app_appointment.html',context)
def Patient_Appointment_Completed(request):
doctor_admin = request.user
doctor_reg = DoctorReg.objects.get(admin=doctor_admin)
patientdetails1 =
Appointment.objects.filter(status='Completed',doctor_id=doctor_reg)
def Search_Appointments(request):
doctor_admin = request.user
doctor_reg = DoctorReg.objects.get(admin=doctor_admin)
if request.method == "GET":
if query:
patient = Appointment.objects.filter(fullname__icontains=query) |
Appointment.objects.filter(appointmentnumber__icontains=query) &
Appointment.objects.filter(doctor_id=doctor_reg)
87
messages.success(request, "Search against " + query)
else:
def Between_Date_Report(request):
start_date = request.GET.get('start_date')
end_date = request.GET.get('end_date')
patient = []
doctor_admin = request.user
doctor_reg = DoctorReg.objects.get(admin=doctor_admin)
try:
except ValueError:
88
SCREENSHOTS: -
Homepage:
89
90
91
Book Appointment:
92
Search Appointment:
Doctor Panel
Sign Up:
93
Login Page:
Forget Password:
94
Backend (MySQL)
95
Dashboard:
Doctor Profile:
96
Forget Password:
New Appointments:
97
Approved Appointment:
98
View Approved Appointment:
99
Search Appointment:
Report:
100
View Report Dates Between:
101
CHAPTER-4
CONCLUSION
This Application provides a computerized version of doctor appointment
which will benefit the people who wants to take appointment with
doctor online.
It makes entire process online and can generate reports. It has a facility
of doctor login where doctor can manage user appointment and
generate appointment report.
This Application was designed in such a way that future changes can be
done easily. The following conclusions can be deduced from the
development of the project.
103
REFERENCES
[1] “Doctor Appointment System” World Health Organization (WHO), 11.
06. 2021. [Online]. Available: https://www.who.int/health-topics/diseases.
104
BIPLIOGRAPHY
For PHP
• https://www.w3schools.com/php/default.asp
• https://www.sitepoint.com/php/
• https://www.php.net/
For MySQL
• https://www.mysql.com/
• http://www.mysqltutorial.org
For XAMPP
• https://www.apachefriends.org/download.html
105