SRP_DOCUMENT-1
SRP_DOCUMENT-1
A PROJECT REPORT
Submitted in partial fulfillment of the requirements for the award of the degree of
Bachelor of Technology
in
COMPUTER SCIENCE and DATA SCIENCE
BY
1|Page
DEPARTMENT OF DATA ENGINEERING
CERTIFICATE
This is to certify that the project report entitled HEALTH CARE ACCESS PORTAL
being submitted by SRIPATHI RAM SAI, BANKURU CHANDINI,
KANTUBHUKTHA LOHITH SATYAM NAIDU bearing roll numbers 22331A4446,
22331A4404, 22331A4424 respectively, in partial fulfillment for the award of the degree
of “Bachelor of Technology” in Computer Science with Data Science is a record of
Bonafide work done by them under my supervision during the academic year 2022-2026.
1|Page
INDEX
6. Results 29-33
7. Conclusion and Feature scope 34-34
8. References 35-35
2|Page
INTRODUCTION:
In today's rapidly evolving digital landscape, the healthcare sector is increasingly leveraging
technology to enhance patient care and streamline operations. One of the most impactful
advancements is the adoption of online appointment systems, which allow patients to easily
schedule appointments, access health information, and communicate with healthcare
providers. This project focuses on developing a hospital online appointment system, designed
to address common challenges in patient management and optimize healthcare delivery.
The primary aim of this system is to provide a user-friendly platform for both patients and
healthcare providers. Patients can conveniently book appointments, view doctor profiles,
receive automated reminders, and access their medical records securely. Healthcare
providers, in turn, benefit from an organized system that reduces administrative tasks and
helps them manage their schedules effectively. With features like appointment booking,
digital health records, and feedback mechanisms, this system enhances the patient experience
and promotes efficient resource allocation.
By integrating these functionalities, the project not only strives to improve operational
efficiency within hospitals but also to empower patients with easy, accessible healthcare
services.
STUDY OF THE EXISTING WORK / LITERATURE REVIEW:
Ease of Access: A user-friendly interface allowing patients to book appointments and view
records effortlessly.
Data Security and Privacy: Protecting patient information through robust security measures
and compliance with health regulations like HIPAA is a core requirement.
Integration with Health Records: Studies highlight that integrating digital health records within
these systems helps providers access complete patient histories, improving diagnosis and
treatment planning.
Feedback Mechanisms: Including feedback and rating options enables hospitals to assess
service quality and fosters continuous improvement.
Challenges and Limitations
Despite their advantages, online appointment systems also face certain challenges. Key issues
include patient reluctance to adopt digital systems, especially among older demographics, and
concerns around data privacy. Additionally, some systems lack scalability, leading to issues as
patient volume increases. Literature suggests that incorporating flexible and scalable
architecture and providing digital literacy support can help address these limitations.
In summary, existing research and solutions reveal a strong demand for comprehensive online
appointment systems that facilitate efficient scheduling, protect patient data, and provide a
seamless user experience. By studying these existing works, our project aims to develop a
hospital online appointment system that combines the strengths of current solutions while
addressing common challenges. This study provides a foundation for building a system that
enhances the patient journey and supports healthcare providers in delivering quality care.
REQUIREMENT SPECIFICATION:
4|Page
flexible ways to access healthcare services, while hospitals seek solutions that reduce
administrative burdens, optimize schedules, and improve patient flow.
An online appointment system is essential to address these needs, providing a digital platform
where patients can easily book appointments, receive reminders, access health records, and
give feedback. The system streamlines hospital workflows and enhances patient satisfaction by
making healthcare more accessible and organized.
b. Flaws in the Existing System:
1)Inconvenience and Accessibility Issues
Traditional appointment systems often require patients to visit or call the hospital to schedule
appointments, which can be time-consuming and inconvenient, especially for those with
limited mobility or residing in remote areas. This reliance on manual processes limits patient
accessibility and flexibility.
5|Page
2)Automated Reminders and Notifications
By incorporating automated email and SMS reminders, the system helps reduce missed
appointments and ensures patients are well-informed about their scheduled visits. This
enhancement benefits both patients, who avoid missed appointments, and hospitals, which
experience more efficient scheduling.
d. Target Audience:
1)Patients
The primary audience for this system includes patients who seek convenient and accessible
healthcare services. The system is especially beneficial for busy individuals, elderly patients,
and those living in remote areas who can now easily access scheduling services and
healthcare records from anywhere.
4)Hospital Management
For hospital administrators and managers, this system provides insights into hospital
efficiency and resource allocation, allowing them to make data-driven decisions. Feedback
and rating features also offer a means to assess service quality and implement improvements.
6|Page
5)IT and Security Teams
IT and security teams are responsible for maintaining the system's infrastructure and ensuring
that it adheres to data privacy and security regulations. They play a key role in protecting
patient data and keeping the system operational and secure.
METHODOLOGY
a. Model:
1)Requirement Gathering and Analysis
In this phase, the needs of patients, doctors, and hospital administrative staff are analyzed to
define requirements for each module:
Appointment Booking Module: Allows patients to view available time slots and schedule
appointments.
Doctor Profiles Module: Provides profiles with details on doctors’ specialties, qualifications,
and availability.
Automated Reminders Module: Sends reminders to patients for upcoming appointments.
Digital Health Records Module: Provides patients with secure access to their medical history,
test results, and prescriptions.
Feedback and Ratings Module: Enables patients to give feedback on their appointments,
helping others make informed decisions.
3)Database Design: Structured to store patient and doctor details, health records, appointment
schedules, feedback, and notifications securely.
User Interface (UI) Design: Ensures a user-friendly interface for each module, tailored to
both patients and healthcare providers.
Security Framework: Employs robust encryption and authentication protocols to safeguard
patient data, aligning with healthcare privacy regulations.
7|Page
In each sprint, one or more modules are developed and tested as standalone features. This
allows the team to manage the complexity of each module and ensure high quality. Example
sprint breakdown:
Unit Testing: For each feature within a module, such as booking or reminders.
Integration Testing: To ensure modules work together and data flows correctly across them.
User Acceptance Testing (UAT): Engages end-users—patients, doctors, and admin staff—to
validate the system’s usability and effectiveness.
Deployment and Implementation
Once all modules have been developed and tested, the system is deployed in the hospital
environment. Training is provided to hospital staff and healthcare providers to familiarize
them with the platform, ensuring smooth adoption and usability.
8|Page
b. Flow Diagram of the work:
c. Description of Technology:
The HEALTH CARE ACCESS PORTAL platform leverages a combination of front-end and
back-end technologies, along with a robust database solution, to create a seamless and efficient
user experience. Below is a detailed description of each technology used in the project.
Front-End Technologies:
9|Page
HTML is the foundational markup language used to structure the content of web pages.
It enables the creation of elements like headings, paragraphs, links, images, and forms,
which are essential for user interaction within the HEALTH CARE ACCESS PORTAL
platform.
3. JavaScript (JS):
JavaScript is a dynamic scripting language that enables interactive features on web
pages. In HEALTH CARE ACCESS PORTAL, it is used for client-side validation,
asynchronous data fetching (through AJAX), and enhancing user interactions (e.g.,
handling form submissions and providing real-time updates).
Back-End Technologies:
1. Python:
Python is a high-level, interpreted programming language known for its readability and
simplicity. It has a vast ecosystem of libraries and frameworks, making it suitable for
various applications, used in web development .
2. Django:
Django is a high-level web framework built on Python that encourages rapid
development and clean, pragmatic design. It follows the model-template-views (MTV)
architectural pattern.Django plays an vital role in our HEALTH CARE ACCESS
PORTAL project.
Database Technology:
1. SQLite:
SQLite is a widely used relational database management system (RDBMS) that stores
and manages the data for the HEALTH CARE ACCESS PORTAL platform. It provides
robust data integrity, security, and scalability, ensuring that all lost and found item
records, user profiles, and communication logs are efficiently organized and easily
accessible.
Software Requirements:
1. Front-End Technologies:
o Web Browser:
A modern web browser (such as Google Chrome, Mozilla Firefox, or
Microsoft Edge) for testing and accessing the GOTIT platform.
o HTML/CSS/JavaScript:
No specific installation is required, but a code editor (e.g., Visual Studio Code,
Sublime Text) is recommended for development.
2. Back-End Technologies:
o Django:
Django is a powerful and versatile python web framework that simplifies the
process of building comppex web applications.
Hardware Requirements:
1. Development Machine:
o Processor:
Dual-core processor or higher (Intel i5 or equivalent).
o RAM:
Minimum of 8 GB RAM recommended for smooth performance during
development.
o Storage:
At least 256 GB SSD for faster data access and application loading times.
11 | P a g e
o Operating System:
Windows 10, macOS Mojave (or later), or a Linux distribution (Ubuntu,
CentOS, etc.).
o
2. Server Requirements for Deployment:
3. Network Requirements:
o Internet Connection:
A stable and high-speed internet connection is essential for hosting the
platform, especially if using cloud services.
By fulfilling these software and hardware requirements, the GOTIT platform will be able to
operate effectively, ensuring a reliable and user-friendly experience for students and staff in
managing lost and found items on campus.
Codesnipets:
HTML:
<!DOCTYPE html>
{% load static %}
<html lang="en">
<head>
12 | P a g e
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Doctor Appointment System</title>
<link rel="stylesheet" href="{% static 'css/styles.css' %}"> <!-- Link to the external CSS
file -->
</head>
<body>
<!-- Header Section -->
<header>
<div class="logo">
<h1>HealthConnect</h1>
</div>
<nav>
<ul>
<li><a href="#">Home</a></li>
<li><a href="#">Find a Doctor</a></li>
<li><a href="#">About Us</a></li>
<li><a href="#">Contact Us</a></li>
<li><a href="#">Login/Sign Up</a></li>
</ul>
</nav>
</header>
<form id="areaForm">
<label for="area">Select Area:</label>
<select id="area" name="area" required>
<option value="" disabled selected>Select your area</option>
<option value="vizianagaram">Vizianagaram</option>
<option value="srikakulam">Srikakulam</option>
<option value="seethanagaram">Seethanagaram</option>
<!-- Add more options here -->
</select>
<button type="submit">Proceed to OP Form</button>
</form>
</section>
if (area) {
window.location.href = `{% url 'opform' %}`;
} else {
alert("Please select an area before proceeding.");
}
});
</script>
</body>
</html>
OP_FORM.HTML:
<!DOCTYPE html>
{% load static %}
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Patient OP Form</title>
<link rel="stylesheet" href="{% static 'css/op_form_styles.css' %}">
</head>
<body>
<header>
15 | P a g e
<div class="logo">
<h1>HealthConnect</h1>
</div>
<nav>
<ul>
<li><a href="{% url 'index' %}">Home</a></li>
<li><a href="#">Find a Doctor</a></li>
<li><a href="#">About Us</a></li>
<li><a href="#">Contact Us</a></li>
</ul>
</nav>
</header>
<section class="op-form">
<h2>Book Your Appointment</h2>
{% if messages %}
<div class="messages">
{% for message in messages %}
<div class="alert {{ message.tags }} alert-dismissible fade show" role="alert">
{{ message }}
</div>
{% endfor %}
</div>
{% endif %}
<form action="{% url 'book_appointment' %}" method="POST" class="form-
container">
{% csrf_token %}
<div class="form-section">
<h3>Step 1: Patient Details</h3>
<label for="name">Patient Name:</label>
<input type="text" id="name" name="patient_name" required>
<div class="form-section">
<h3>Step 2: Choose Doctor Type</h3>
<label>
<input type="radio" name="doctor_type" value="general" required>
General Doctor
</label>
<label>
<input type="radio" name="doctor_type" value="specialist" required>
Specialist
</label>
<div class="form-section">
<h3>Step 3: Select Your Doctor</h3>
<div class="doctor-list">
<p>Select a doctor based on availability:</p>
<label for="doctor">Doctor Name:</label>
<select id="doctor" name="doctor" required>
<option value="">Select a doctor</option>
{% for doctor in general_doctors %}
<option value="{{ doctor.id }}">{{ doctor.name }} - General
Physician</option>
{% endfor %}
</select>
</div>
</div>
17 | P a g e
<div class="form-section">
<h3>Step 4: Appointment Details</h3>
<label for="appointment-date">Preferred Appointment Date:</label>
<input type="date" id="appointment-date" name="appointment_date" required>
<footer>
specialistRadio.addEventListener('change', () => {
specializationSection.style.display = 'block';
doctorSelect.innerHTML = '<option value="">Select a doctor</option>';
});
generalRadio.addEventListener('change', () => {
specializationSection.style.display = 'none';
doctorSelect.innerHTML = '<option value="">Select a doctor</option>';
{% for doctor in general_doctors %}
doctorSelect.innerHTML += `<option value="{{ doctor.id }}">{{ doctor.name }} -
General Physician</option>`;
{% endfor %}
18 | P a g e
});
fetch(`/get_doctors/?specialization=${selectedSpecialization}`)
.then(response => response.json())
.then(doctors => {
doctors.forEach(doctor => {
doctorSelect.innerHTML += `<option value="${doctor.id}">${doctor.name} -
${doctor.specialization}</option>`;
});
})
.catch(error => console.error('Error fetching doctors:', error));
});
</script>
</body>
</html>
CSS:
body {
font-family: Arial, sans-serif;
margin: 0;
padding: 0;
background-color: #f4f4f4;
color: #333;
}
header {
background-color: #007bff;
color: white;
padding: 1rem 0;
text-align: center;
}
.logo h1 {
margin: 0;
font-size: 2rem;
19 | P a g e
margin-bottom: 20px;
}
nav ul {
list-style: none;
margin: 0;
padding: 0;
text-align: center;
}
nav li {
display: inline-block;
margin: 0 1rem;
}
nav a {
color: white;
text-decoration: none;
}
.op-form {
background-color: white;
padding: 2rem;
margin: 2rem auto;
max-width: 600px;
border-radius: 8px;
box-shadow: 0 2px 5px rgba(0, 0, 0, 0.1);
}
.op-form h2 {
text-align: center;
margin-bottom: 1rem;
}
.form-container {
display: flex;
flex-direction: column;
gap: 1rem;
}
20 | P a g e
.form-section {
margin-bottom: 1rem;
}
label {
display: block;
margin-bottom: 10px;
margin-top: 10px;
font-weight: bold;
}
input[type="text"],
input[type="tel"],
input[type="date"],
input[type="time"],
select {
width: 100%;
padding: 8px;
border: 1px solid #ccc;
border-radius: 4px;
box-sizing: border-box;
}
input[type="radio"] {
margin-right: 5px;
}
button[type="submit"] {
background-color: #007bff;
color: white;
padding: 1rem 2rem;
border: none;
border-radius: 4px;
cursor: pointer;
transition: background-color 0.3s;
}
button[type="submit"]:hover {
background-color: #0056b3;
}
21 | P a g e
.messages {
list-style: none;
padding: 0;
margin-bottom: 20px;
}
.messages {
padding: 10px 15px;
margin-bottom: 5px;
border-radius: 4px;
text-align: center;
}
.messages {
background-color: #d4edda;
border-color: #c3e6cb;
color: #155724;
}
footer {
background-color: #333;
color: white;
padding: 0.1rem 0;
text-align: center;
}
footer a {
color: white;
text-decoration: none;
}
/* General Styles */
body {
font-family: Arial, sans-serif;
margin: 0;
padding: 0;
}
header {
background-color: #2c3e50; /* Dark blue color */
22 | P a g e
color: white;
padding: 1rem;
display: flex;
justify-content: space-between;
align-items: center;
}
header .logo h1 {
font-size: 1.8rem;
font-weight: bold;
margin: 0;
color: #ecf0f1; /* Light text color */
}
nav ul {
list-style: none;
margin: 0;
padding: 0;
display: flex;
gap: 20px; /* Space between nav items */
}
nav ul li {
display: inline-block;
}
nav ul li a {
color: #ecf0f1; /* Light grey color for better contrast */
text-decoration: none;
font-weight: bold;
font-size: 1.1rem;
}
nav ul li a:hover {
color: #3498db; /* Hover color for links */
}
/* Hero Section */
.hero-image {
position: relative;
23 | P a g e
text-align: center;
}
.hero-image img {
width: 100%;
height: 60vh; /* Adjust height for better appearance */
object-fit: cover; /* Cover the area without distortion */
}
.hero-text {
position: absolute;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
color: white;
text-shadow: 2px 2px 4px rgba(0, 0, 0, 0.7); /* Dark shadow for better readability */
}
.hero-text h2 {
font-size: 2.5rem;
margin-bottom: 0.5rem;
}
.hero-text p {
font-size: 1.2rem;
}
.how-it-works h3 {
margin-bottom: 1.5rem;
}
.how-it-works .steps {
display: flex;
justify-content: space-around;
24 | P a g e
flex-wrap: wrap; /* Allow wrapping on smaller screens */
}
.how-it-works .step {
background-color: #ecf0f1; /* Light grey background */
border: 1px solid #bdc3c7; /* Border color */
border-radius: 8px; /* Rounded corners */
padding: 1rem;
width: 22%; /* Width of each step box */
margin: 1rem; /* Spacing between boxes */
box-shadow: 0 2px 5px rgba(0, 0, 0, 0.2); /* Shadow for depth */
}
.how-it-works .step h4 {
color: #2980b9; /* Blue color for step titles */
}
.area-selection form {
display: inline-block;
}
.area-selection select {
padding: 0.5rem;
margin-right: 10px;
}
.area-selection button {
padding: 0.5rem 1rem;
background-color: #2980b9; /* Button color */
color: white;
border: none;
border-radius: 5px;
cursor: pointer;
}
25 | P a g e
.area-selection button:hover {
background-color: #3498db; /* Lighter blue on hover */
}
/* Footer Section */
footer {
background-color: #2c3e50; /* Dark blue color */
color: white;
text-align: center;
padding: 1rem 0;
}
footer ul {
list-style: none;
padding: 0;
}
footer ul li {
display: inline-block;
margin-right: 10px;
}
footer ul li a {
color: white;
text-decoration: none;
font-size: 1rem;
}
PYTHON:
class DoctorAdmin(admin.ModelAdmin):
list_display = ('name', 'specialization')
search_fields = ('name', 'specialization')
class PatientAdmin(admin.ModelAdmin):
list_display = ('name', 'phone_number', 'date_of_birth')
26 | P a g e
search_fields = ('name', 'phone_number')
class AppointmentAdmin(admin.ModelAdmin):
list_display = ('patient', 'doctor', 'doctor_type', 'appointment_date', 'appointment_time')
list_filter = ('doctor_type', 'appointment_date')
search_fields = ('patient__name', 'doctor__name')
admin.site.register(Doctor, DoctorAdmin)
admin.site.register(Patient, PatientAdmin)
admin.site.register(Appointment, AppointmentAdmin)
class OpappConfig(AppConfig):
default_auto_field = 'django.db.models.BigAutoField'
name = 'opapp'
class Doctor(models.Model):
id=models.AutoField(primary_key=True)
name = models.CharField(max_length=100)
specialization = models.CharField(max_length=100, blank=True, null=True)
def __str__(self):
return self.name
class Patient(models.Model):
name = models.CharField(max_length=100)
phone_number = models.CharField(max_length=15)
date_of_birth = models.DateField()
reason_for_visit = models.TextField()
def __str__(self):
return self.name
class Appointment(models.Model):
patient = models.ForeignKey(Patient, on_delete=models.CASCADE)
doctor = models.ForeignKey(Doctor, on_delete=models.CASCADE)
doctor_type = models.CharField(max_length=20, choices=[
27 | P a g e
('general', 'General Doctor'),
('specialist', 'Specialist')
])
appointment_date = models.DateField()
appointment_time = models.TimeField()
def __str__(self):
return f"Appointment for {self.patient.name} with {self.doctor.name}"
def index(request):
return render(request,'index.html')
def opform(request):
doctors = Doctor.objects.all()
general_doctors = doctors.filter(specialization__isnull=True)
specilized_doctors=doctors.filter(specialization__isnull=False)
context = {
'specilized_doctors': specilized_doctors,
'general_doctors': general_doctors,
}
print(context)
return render(request, 'op_form.html', context)
def get_doctors(request):
specialization = request.GET.get('specialization')
doctors = Doctor.objects.filter(specialization=specialization)
doctor_list = [{'name': doctor.name, 'specialization': doctor.specialization,'id':doctor.id} for
doctor in doctors]
return JsonResponse(doctor_list, safe=False)
def book_appointment(request):
if request.method == 'POST':
28 | P a g e
patient_name = request.POST.get('patient_name')
phone_number = request.POST.get('phone_number')
date_of_birth = request.POST.get('dob')
reason_for_visit = request.POST.get('reason_for_visit')
doctor_type = request.POST.get('doctor_type')
specialization = request.POST.get('specialization')
doctor_id = request.POST.get('doctor')
appointment_date = request.POST.get('appointment_date')
appointment_time = request.POST.get('appointment_time')
try:
doctor = Doctor.objects.get(id=doctor_id)
except Doctor.DoesNotExist:
return redirect('opform')
else:
return redirect('opform')
29 | P a g e
RESULTS:
a. Screen shots of output
HOME PAGE:
30 | P a g e
OP REGISTARTION FORM:
31 | P a g e
SELECTION OF SPECIALIOST DOCTOR IN OP FORM:
32 | P a g e
APPOINTMENT BOOKING:
33 | P a g e
ADMIN PAGE FOR LOGIN:
ADMIN DASHBOARD:
34 | P a g e
Tables:
10. CONCLUSION
Future Scope
The future scope of the online appointment system project is broad and promising. Potential
developments include:
35 | P a g e
2)Mobile Application Development: Creating a dedicated mobile app can enhance user
accessibility and engagement, allowing patients to manage their appointments on-the-go.
4)Data Analytics for Resource Management: Leveraging data analytics can help hospitals
predict peak times and allocate resources effectively, further improving operational
efficiency.
Enhanced Security Features: As patient data is sensitive, future enhancements should focus
on robust security measures, including advanced encryption and two-factor authentication, to
protect personal health information.
11. REFERENCES
• Journals:
1)M. D. G. M. Chou, C. Y. Chen, H. Y. Cheng, & Y. C. Wang. (2020). "The
Impact of an Online Appointment System on Patient Flow and Satisfaction."
Journal of Healthcare Management, 65(3), 180-192.
• Websites:
1)Centers for Medicare & Medicaid Services (CMS). (2023). "Telehealth
Services." CMS. https://www.cms.gov/
36 | P a g e