diff --git a/README.md b/README.md index e6bc571..9f2256f 100644 --- a/README.md +++ b/README.md @@ -1,16 +1,44 @@ -# Buffer-4.0 -Buffer is a Data Structures and Algorithms Project series, in which students can participate as mentees in teams of 3-4 people. -This year the themes on which students can create a project are- -1. Healthcare -2. Digital Society -3. Open Innovation -4. Custom data structure to store data +# PrioDoc - A Priority Queue Based Patient Management System -This repository is created for all the teams to be able to upload their final project source code for the same. +This is a web-based application that allows doctors to manage their patient queue. The application is built using HTML, CSS, and JavaScript and uses Firebase for real-time data synchronization and storage. The data structure used for the Priority Queue is arrays and the language used is JavaScript. The application allows doctors to view their current patient, next patient (if any), and completed patients, as well as to mark a patient as completed and remove them from the queue. The application is designed to improve the efficiency of patient management for doctors and ultimately improve patient care. -While submitting, note that: -Each folder should have the name of the team and inside a readme file with team member details, (name, year, branch) and their theme. The readme file should also contain the link to their presentation as well as the drive link where both the report documents would be stored. -Happy Coding :) +## Acknowledgements + + - [Firebase](https://firebase.google.com/docs/auth) +- [MDN Web Docs](https://developer.mozilla.org/en-US/docs/Web/JavaScript) + + +## Tech Stack + +**Front-end:** HTML, CSS, JavaScript + +**Back-end:** Firebase (including Realtime Database and Authentication) for authentication + +**Additional tools:** Visual Studio Code as the code editor and Local Storage for storing temporary data + +## Instructions before Using + - Open up startpage.html on localhost + - Sign Up as a Patient + - Login as a Patient + - Register for an Appointment + - Head back and login as a doctor with the credentials email: dr.kellysmith@myradoc.in and password: 123456 + - Service the patient based on the given queue + +## Team Arcs + + - Mrunal Shinde - SY - COMP + - Srushti Pophale - SY - COMP + - Sakshi Vaidya - SY - COMP + + +## Video Demonstration + +https://drive.google.com/file/d/11DzaeFGXGXay4N_-JlS4lhmF7P1D8itM/view?usp=sharing + +## FeedBack Reports + +https://docs.google.com/document/d/13LsFH3T-BQZjuCsXr-FcfYV-NJQKRkL8/edit?usp=sharing&ouid=112103796661072165501&rtpof=true&sd=true + diff --git a/TeamArcs_SY_78/Logo.png b/TeamArcs_SY_78/Logo.png new file mode 100644 index 0000000..173e318 Binary files /dev/null and b/TeamArcs_SY_78/Logo.png differ diff --git a/TeamArcs_SY_78/LookUpPatients.html b/TeamArcs_SY_78/LookUpPatients.html new file mode 100644 index 0000000..8f3518a --- /dev/null +++ b/TeamArcs_SY_78/LookUpPatients.html @@ -0,0 +1,100 @@ + + + + + Doctor's View + + + + +

Dr.Kelly Smith's View

+ +

Current Patient:

+
+ +

Next Patient:

+
+ +

Completed Patients:

+ + + + + + diff --git a/TeamArcs_SY_78/form-doc.js b/TeamArcs_SY_78/form-doc.js new file mode 100644 index 0000000..6488bdf --- /dev/null +++ b/TeamArcs_SY_78/form-doc.js @@ -0,0 +1,66 @@ +var firebaseConfig = { + apiKey: "AIzaSyCeE9c3jX_LfBWjRd6Rv2O7KY5NGPKwh4o", + authDomain: "teamloop-79b88.firebaseapp.com", + projectId: "teamloop-79b88", + storageBucket: "teamloop-79b88.appspot.com", + messagingSenderId: "18214010600", + appId: "1:18214010600:web:0818dfba3d291d1f51d35d" +}; +// Initialize Firebase +firebase.initializeApp(firebaseConfig); + +const auth = firebase.auth(); + +//signup function +function signUp() { + var email = document.getElementById("email"); + var password = document.getElementById("password"); + + const promise = auth.createUserWithEmailAndPassword(email.value, password.value); + + promise.catch(e => alert(e.message)); + alert("SignUp Successfully"); +} + +//signIN function +function signIn() { + var email = document.getElementById("email"); + var password = document.getElementById("password"); + const promise = auth.signInWithEmailAndPassword(email.value, password.value); + promise.then(() => { + window.location.href = "LookUpPatients.html"; + }) + .catch(e => alert(e.message)); + +} + + +//signOut + +function signOut() { + auth.signOut(); + alert("SignOut Successfully from System"); +} + +//active user to homepage +firebase.auth().onAuthStateChanged((user) => { + if (user) { + var email = user.email; + alert("Your account has been created!!! " + email); + + } else { + alert("No Active user Found") + } +}) + +function validateEmail() { + const email = document.getElementById("email").value.trim(); + const emailRegex = /^dr\.kellysmith@myradoc\.in$/i; // regex to match required email format + + if (!emailRegex.test(email)) { + alert("Invalid email format. Please enter a valid doctor email."); + return false; + } + return true; + } + \ No newline at end of file diff --git a/TeamArcs_SY_78/form-patient.js b/TeamArcs_SY_78/form-patient.js new file mode 100644 index 0000000..ccb273b --- /dev/null +++ b/TeamArcs_SY_78/form-patient.js @@ -0,0 +1,54 @@ +var firebaseConfig = { + apiKey: "AIzaSyCeE9c3jX_LfBWjRd6Rv2O7KY5NGPKwh4o", + authDomain: "teamloop-79b88.firebaseapp.com", + projectId: "teamloop-79b88", + storageBucket: "teamloop-79b88.appspot.com", + messagingSenderId: "18214010600", + appId: "1:18214010600:web:0818dfba3d291d1f51d35d" +}; +// Initialize Firebase +firebase.initializeApp(firebaseConfig); + +const auth = firebase.auth(); + +//signup function +function signUp() { + var email = document.getElementById("email"); + var password = document.getElementById("password"); + + const promise = auth.createUserWithEmailAndPassword(email.value, password.value); + + promise.catch(e => alert(e.message)); + alert("SignUp Successfully"); +} + +//signIN function +function signIn() { + var email = document.getElementById("email"); + var password = document.getElementById("password"); + const promise = auth.signInWithEmailAndPassword(email.value, password.value); + promise.then(() => { + window.location.href = "registration.html"; + }) + .catch(e => alert(e.message)); + +} + + +//signOut + +function signOut() { + auth.signOut(); + alert("SignOut Successfully from System"); +} + +//active user to homepage +firebase.auth().onAuthStateChanged((user) => { + if (user) { + var email = user.email; + alert("Your account has been created!!! " + email); + + } else { + alert("No Active user Found") + } +}) \ No newline at end of file diff --git a/TeamArcs_SY_78/index-doc.html b/TeamArcs_SY_78/index-doc.html new file mode 100644 index 0000000..526340a --- /dev/null +++ b/TeamArcs_SY_78/index-doc.html @@ -0,0 +1,26 @@ + + + + + + + + + + + + + + Login System Doctor + + +
+

Doctor Credentials:

+
+
+ + + +
+ + diff --git a/TeamArcs_SY_78/index-patient.html b/TeamArcs_SY_78/index-patient.html new file mode 100644 index 0000000..ffe924d --- /dev/null +++ b/TeamArcs_SY_78/index-patient.html @@ -0,0 +1,30 @@ + + + + + + + + + + + + + + Login System Patients + + +
+

Patient Credentials:

+
+
+ + + +
+ + + + + + diff --git a/TeamArcs_SY_78/registration.html b/TeamArcs_SY_78/registration.html new file mode 100644 index 0000000..fd84432 --- /dev/null +++ b/TeamArcs_SY_78/registration.html @@ -0,0 +1,103 @@ + + + + + Priority Queue Example + + + + +

Priority Queue Example

+ +

Registered Patients:

+ + +

Register New Patient:

+ +

+ +

+ +

+ +

+ + + + + \ No newline at end of file diff --git a/TeamArcs_SY_78/startpage.html b/TeamArcs_SY_78/startpage.html new file mode 100644 index 0000000..0b3422f --- /dev/null +++ b/TeamArcs_SY_78/startpage.html @@ -0,0 +1,60 @@ + + + + + + Myra Healthcare + + + +
+ +
+ +
+
+ +
+
+ +
+

About Us

+

Myra Healthcare is a leading healthcare provider, committed to providing high-quality medical services to our patients. Our team of experienced healthcare professionals is dedicated to providing personalized care and ensuring that our patients receive the best possible treatment.

+
+ +
+

Our Services

+ +
+ +
+

Contact Us

+
+ + + + + + + +
+
+ + + + diff --git a/TeamArcs_SY_78/styles-2.css b/TeamArcs_SY_78/styles-2.css new file mode 100644 index 0000000..3c5871b --- /dev/null +++ b/TeamArcs_SY_78/styles-2.css @@ -0,0 +1,229 @@ +/* Global Styles */ +* { + margin: 0; + padding: 0; + box-sizing: border-box; + } + + body { + font-family: Arial, sans-serif; + font-size: 16px; + line-height: 1.5; + color: #333; + } + + a { + color: #333; + text-decoration: none; + } + + ul { + list-style: none; + } + + /* Header Styles */ + header { + background-color: #fff; + box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1); + position: fixed; + top: 0; + left: 0; + right: 0; + z-index: 9999; + } + + nav { + max-width: 1200px; + margin: 0 auto; + display: flex; + align-items: center; + justify-content: space-between; + height: 80px; + } + + .logo { + font-size: 24px; + font-weight: bold; + letter-spacing: 1px; + } + + nav ul { + display: flex; + } + + nav li { + margin-left: 40px; + } + + nav a:hover { + color: #1e90ff; + } + + .login-button { + background-color: #1e90ff; + color: #fff; + padding: 10px 20px; + border-radius: 5px; + } + + .login-button:hover { + background-color: #0077b6; + } + + /* Hero Section Styles */ + .hero { + background-image: url('https://via.placeholder.com/1500x500'); + background-size: cover; + height: 500px; + display: flex; + align-items: center; + } + + .hero-text { + max-width: 800px; + margin: 0 auto; + text-align: center; + color: #fff; + } + + .hero h1 { + font-size: 48px; + margin-bottom: 20px; + } + + .hero p { + font-size: 24px; + font-weight: 300; + margin-bottom: 40px; + } + + /* About Section Styles */ + .about { + max-width: 1200px; + margin: 80px auto; + text-align: center; + } + + .about h2 { + font-size: 36px; + margin-bottom: 20px; + } + + .about p { + font-size: 18px; + font-weight: 300; + margin-bottom: 40px; + } + + /* Services Section Styles */ + .services { + max-width: 1200px; + margin: 80px auto; + text-align: center; + } + + .services h2 { + font-size: 36px; + margin-bottom: 20px; + } + + .services ul li { + font-size: 18px; + font-weight: 300; + margin-bottom: 20px; + } + + /* Contact Section Styles */ + .contact { + max-width: 1200px; + margin: 80px auto; + text-align: center; + } + + .contact h2 { + font-size: 36px; + margin-bottom: 20px; + } + + .contact label { + font-size: 18px; + font-weight: 300; + display: block; + margin-bottom: 10px; + } + + .contact input, + .contact textarea { + width: 100%; + padding: 10px; + border: 1px solid #ccc; + border-radius: 5px; + margin-bottom: 20px; + font-size: 16px; + } + + .contact button { + background-color: #1e90ff; + color: #fff; + padding: 10px 20px; + border-radius: 5px; + font-size: 18px; + border: none; + cursor: pointer; + } + + .contact button:hover { + background-color: #0077b6; + } + + .success-message { + color: green; + margin-top: 20px; + } + + .error-message { + color: red; + margin-top: 20px; + } + + /* Form Container Styles */ + .formContainer { + max-width: 500px; + margin: 80px auto; + text-align: center; + background-color: #f2f2f2; + border-radius: 5px; + padding: 40px; + } + + .formContainer h1 { + font-size: 36px; + margin-bottom: 20px; + } + + .formContainer input { + width: 100%; + padding: 10px; + border: none; + border-radius: 5px; + margin-bottom: 20px; + font-size: 16px; + } + + .formContainer button { + background-color: #1e90ff; + color: #fff; + padding: 10px 20px; + border-radius: 5px; + font-size: 18px; + border: none; + cursor: pointer; + } + + .formContainer button:hover { + background-color: #0077b6; + } + + .formContainer #signUp { + margin-right: 20px; + } \ No newline at end of file diff --git a/TeamArcs_SY_78/styles-3.css b/TeamArcs_SY_78/styles-3.css new file mode 100644 index 0000000..7011eae --- /dev/null +++ b/TeamArcs_SY_78/styles-3.css @@ -0,0 +1,49 @@ +body { + font-family: Arial, sans-serif; + background-color: #f2f2f2; +} + +h1 { + text-align: center; + margin-top: 50px; + margin-bottom: 30px; +} + +h2 { + margin-top: 50px; +} + +#currentPatient, +#nextPatient { + background-color: #fff; + border-radius: 5px; + padding: 20px; + margin-bottom: 20px; +} + +#completedPatients { + list-style: none; + padding: 0; + margin: 0; +} + +#completedPatients li { + background-color: #fff; + border-radius: 5px; + padding: 10px; + margin-bottom: 10px; +} + +button { + background-color: #1e90ff; + color: #fff; + padding: 10px 20px; + border-radius: 5px; + font-size: 18px; + border: none; + cursor: pointer; +} + +button:hover { + background-color: #0077b6; +} diff --git a/TeamArcs_SY_78/styles.css b/TeamArcs_SY_78/styles.css new file mode 100644 index 0000000..71f2ca9 --- /dev/null +++ b/TeamArcs_SY_78/styles.css @@ -0,0 +1,178 @@ +/* Global Styles */ +* { + margin: 0; + padding: 0; + box-sizing: border-box; + } + + body { + font-family: Arial, sans-serif; + font-size: 16px; + line-height: 1.5; + color: #333; + } + + a { + color: #333; + text-decoration: none; + } + + ul { + list-style: none; + } + + /* Header Styles */ + header { + background-color: #fff; + box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1); + position: fixed; + top: 0; + left: 0; + right: 0; + z-index: 9999; + } + + nav { + max-width: 1200px; + margin: 0 auto; + display: flex; + align-items: center; + justify-content: space-between; + height: 80px; + } + + .logo { + font-size: 24px; + font-weight: bold; + letter-spacing: 1px; + } + + nav ul { + display: flex; + } + + nav li { + margin-left: 40px; + } + + .login-button { + background-color: #1e90ff; + color: #fff; + padding: 10px 20px; + border-radius: 5px; + } + + .login-button:hover { + background-color: #0077b6; + } + + /* Hero Section Styles */ + .hero { + background-image: url('Logo.png'); + background-size: cover; + height: 650px; + display: flex; + align-items: center; + } + + .hero-text { + max-width: 800px; + margin: 0 auto; + text-align: center; + color: #fff; + } + + .hero h1 { + font-size: 48px; + margin-bottom: 20px; + } + + .hero p { + font-size: 24px; + font-weight: 300; + margin-bottom: 40px; + } + + /* About Section Styles */ + .about { + max-width: 1200px; + margin: 80px auto; + text-align: center; + } + + .about h2 { + font-size: 36px; + margin-bottom: 20px; + } + + .about p { + font-size: 18px; + font-weight: 300; + margin-bottom: 40px; + } + + /* Services Section Styles */ + .services { + max-width: 1200px; + margin: 80px auto; + text-align: center; + } + + .services h2 { + font-size: 36px; + margin-bottom: 20px; + } + + .services ul li { + font-size: 18px; + font-weight: 300; + margin-bottom: 20px; + } + + /* Contact Section Styles */ + .contact { + max-width: 1200px; + margin: 80px auto; + text-align: center; + } + + .contact h2 { + font-size: 36px; + margin-bottom: 20px; + } + + .contact label { + font-size: 18px; + font-weight: 300; + display: block; + margin-bottom: 10px; + } + + .contact input, + .contact textarea { + width: 100%; + padding: 10px; + border: 1px solid #ccc; + border-radius: 5px; + margin-bottom: 20px; + font-size: 16px; + } + + + .contact button { + background-color: #1e90ff; + color: #fff; + padding: 10px 20px; + border: none; + border-radius: 5px; + font-size: 16px; + cursor: pointer; + + } + + + + + + + \ No newline at end of file diff --git a/pictures/Loop Project - Hospital Management .png b/pictures/Loop Project - Hospital Management .png new file mode 100644 index 0000000..a52c2d5 Binary files /dev/null and b/pictures/Loop Project - Hospital Management .png differ