The aim of this project is to design and implement a comprehensive healthcare platform that caters to the needs of patients, doctors, and administrators. The platform's primary goal is to facilitate seamless interactions, streamline medical processes, and enhance the overall healthcare experience for users. The platform will be feature-rich, accommodating a wide array of functionalities, and will be developed iteratively across multiple sprints.
The motivation behind developing a comprehensive healthcare platform stems from addressing several challenges and opportunities within the healthcare industry. Here are some key motivations for undertaking such a project:
1. Enhanced Patient Care:
- Improve patient care by providing a centralized platform for managing medical records, prescriptions, and appointments.
- Facilitate easy communication between patients and healthcare providers for better follow-up care.
2. Efficiency and Streamlining Processes:
- Streamline administrative processes for healthcare providers, reducing paperwork and administrative overhead.
- Optimize appointment scheduling, prescription management, and document handling for increased efficiency.
3. Improved Accessibility:
- Increase accessibility to healthcare services, especially in remote or underserved areas, through telemedicine features like video consultations.
4. Collaboration and Coordination:
- Enhance collaboration among healthcare professionals by providing a platform for easy communication and sharing of relevant patient information.
5. Patient Empowerment:
- Empower patients to actively manage their health by providing tools for tracking medical history, accessing health packages, and scheduling appointments.
-
Agile Methodology: Utilize Agile methodology effectively for project planning and software development.
-
System Requirements: Demonstrate proficiency in implementing a given set of system requirements to develop software.
-
MERN Stack Mastery: Research and master the use of the MERN Stack, understanding its intricacies and functionalities.
-
Collaboration via GitHub: Develop teamwork skills by collaborating on GitHub, ensuring effective version control and collaborative development.
-
Project Management & Feedback: Engage with project management practices and feedback sessions to iteratively improve the project.
As a requirement for our ACL course at GUC, this project allowed us to delve into and implement the MERN Stack. It provided a valuable opportunity to critically think about and execute a fully functional website, offering insights into our future career paths.
The project is currently in the development stage, progressing through milestones with continuous improvements in code implementation and execution. Notable learning curves were experienced during milestones 2 and 3, particularly in the areas of authentication and user login.
One prominent issue encountered was the slowness in fetching data from the backend to the frontend. Despite this challenge, the frontend functionality remains robust, albeit with some organizational improvements needed.
Looking ahead, the project will require deployment, likely through platforms such as Google Cloud or similar services, to ensure accessibility and scalability in the near future.
-
Prettier: Automatic code formatter that ensures uniform formatting across the entire project before each commit.
-
Consistent Coding Style: The project maintains a specific code style for readability and consistency, essential for collaboration and maintenance.
-
Standart Code Style Guide: Adherence to the Standart Code Style Guide ensures uniformity across the codebase. Contributors are encouraged to review the guide for code alignment.
-
Consistent Formatting: Proper indentation and consistent formatting enhance code readability and comprehension.
-
Descriptive Variable Names: Variables like
fromDateReschedule
,followUpDate
,linkedFamilyMembers
,toggleAppointmentModal
, etc., use descriptive names to convey their purpose. -
Destructuring: Utilization of destructuring for props like
user
fromUserContext
enhances code readability. -
Async/Await: The use of async/await syntax for handling asynchronous operations improves code readability and manages promises effectively.
-
React Component Structure: Functional components with React hooks (
useState
,useEffect
) manage state and side effects efficiently. -
Conditional Rendering: Modals (
Modal isOpen={modalStates[index]}
) and button disabling/enabling based on appointment status use conditional rendering. -
Consistent Styling: Consistency in inline styling and class names throughout the component simplifies maintenance and styling.
-
Error Handling: Error handling blocks (
try...catch
) manage potential errors during API requests (axios calls). -
Comments: Code includes comments to explain certain blocks or functionalities, aiding future reference and understanding.
-
Event Handling: Consistent event handling, such as
onClick
events on buttons invoking corresponding functions (handleReschedule
,handleFollowUp
,handleCancel
).
(https://drive.google.com/drive/folders/1HfreTuMMeXtqHv4OUfgK04wQMY8--XyO?usp=drive_link))
- MERN Stack (MongoDB, Express.js, React.js, Node.js)
- JavaScript
- Postman
1. User Authentication
- Secure Authentication: Ensures secure login for both doctors and patients.
- Separate Login Portals: Dedicated login portals designed for doctors and patients.
2. Doctor Profiles
- Detailed Information: Includes comprehensive details like name, specialty, qualifications, and contact information.
- Profile Picture Upload: Provides an option for doctors to upload their profile pictures.
3. Patient Profiles
- Basic Information: Stores basic patient information along with their medical history.
- Secure Health Record Storage: Safely stores and manages patient health records.
4. Appointment Scheduling
- User-Friendly System: Easy-to-use appointment scheduling system, primarily designed for patients.
- Doctor Availability Calendar: Shows doctors' availability with convenient time slots for appointments.
- Confirmation and Reminder Notifications: Sends notifications for both doctors and patients for appointment updates.
5. Prescription Management
- Electronic Prescriptions: Enables doctors to generate and manage electronic prescriptions.
- Prescription History: Patients have access to their prescription history through their profiles.
- Direct Prescription Sending: Option for doctors to send prescriptions directly to pharmacies.
6. Medical Records and History
- Centralized Storage: Stores patient medical records and treatment history centrally.
- Secure Access Control: Implements secure access control to protect patient confidentiality.
7. Notifications and Reminders
- Automated Appointment Reminders: Sends automated appointment reminders to patients.
- Doctor Notifications: Notifies doctors about upcoming appointments.
8. Search and Filter Options
- Patient Search Functionality: Enables patients to search for doctors based on specialty, location, etc.
- Doctor Filters: Allows doctors to manage appointment types and availability through filters.
9. Real-Time Video Consultations
- Integration of Video Call Feature: Enables real-time video calls for virtual consultations between patients and doctors.
10. Real-Time Chat System
- Implementation of Messaging System: Enables instant communication between patients and doctors through a real-time messaging system.
Video chat API between doctor and patient, doctor is waiting in the room for patient
The patient uses a family member through their email to link with them
(https://drive.google.com/drive/folders/1HfreTuMMeXtqHv4OUfgK04wQMY8--XyO?usp=drive_link)
These instructions will help you get a copy of the project up and running on your local machine for development and testing purposes. See deployment for notes on how to deploy the project on a live system.
-
Click on
code
->Download ZIP
-
Extract the zip file and open it in visual studio code.
-
Navigate to the
server
folder using the terminal and run the following command:npm install
-
Next, navigate to the
client
folder in the terminal and run the following command:npm install
To launch the project locally, follow these steps:
Navigate to the server
folder using the terminal and run the following command:
npm start
Next, navigate to the client
folder in the terminal and run the following command:
npm start
1. Express.js(express
)
- Description: Web application framework for Node.js, used for building the backend server and handling HTTP requests.
- Documentation: Express.js Documentation
2. Mongoose(mongoose
)
- Description: Elegant Object Data Modeling (ODM) library for MongoDB and Node.js, streamlining interaction with MongoDB.
- Documentation: Mongoose Documentation
3. Axios(axios
)
- Description: Promise-based HTTP client for making HTTP requests, facilitating seamless communication with external APIs.
- Documentation: Axios Documentation
4. Bcrypt(bcrypt
)
- Description: Library for hashing and salting passwords, fortifying the project's password security.
- Documentation: Bcrypt Documentation
5. Cors(cors
)
- Description: Middleware for Express.js enabling Cross-Origin Resource Sharing (CORS), granting controlled access to server resources.
- Documentation: Cors Documentation
6. Dotenv(dotenv
)
- Description: Zero-dependency module seamlessly loading environment variables from a
.env
file intoprocess.env
. - Documentation: Dotenv Documentation
7. Jsonwebtokens(jsonwebtoken
)
- Description: Robust library for creating and verifying JSON Web Tokens (JWT), a cornerstone for user authentication.
- Documentation: Jsonwebtoken Documentation
8. Morgan(morgan
)
- Description: Express.js middleware providing an HTTP request logger, capturing essential information about incoming requests.
- Documentation: Morgan Documentation
9. Multer(multer
)
- Description: Middleware tailored for handling multipart/form-data, an essential tool for efficient file uploads.
- Documentation: Multer Documentation
10. Nodemailer(nodemailer
)
- Description: Powerful module for sending emails, often utilized for tasks like dispatching confirmation emails.
- Documentation: Nodemailer Documentation
11. Nodemon(nodemon
)
- Description: Intelligent utility monitoring changes in source code and autonomously restarting the server.
- Documentation: Nodemon Documentation
12. Socket.io(^4.7.2
)
- Description: Real-time bidirectional event-based communication library for Node.js. Facilitates real-time communication between web clients and servers.
- Documentation: Socket.IO Documentation
13. Stripe(@stripe/stripe-js
and stripe
)
- Description: Libraries dedicated to handling Stripe payments, a leading payment processing platform.
- Documentation:
For detailed information and usage instructions, refer to the official documentation linked above for each API.
To ensure the proper functioning of this project, you can perform various tests using tools like Postman. Below are some examples demonstrating how to test different aspects of the code.
Prerequisites
- Before running the tests, make sure you have Postman installed on your machine.
doctor (getMyPatients) route testing
as a patient (linkFamilyMember) route testing
We welcome contributions from the community! If you'd like to contribute to the development of this project, follow these guidelines:
-
Fork the Repository: Click on the "Fork" button on the top right corner of this repository's page.
-
Clone the Repository: Clone the forked repository to your local machine using the following terminal command:
git clone https://github.com/your-username/your-forked-repo.git
-
Create a Branch: Create a new branch for your contributions:
git checkout -b feature/your-feature-name
-
Make Changes: Make your desired changes to the codebase.
-
Commit Changes: Commit your changes with a meaningful commit message:
git commit -m "Add your meaningful commit message here"
-
Push Changes: Push your changes to your forked repository:
git push origin feature/your-feature-name
-
Create a Pull Request (PR): Open a Pull Request against the main branch of the original repository. Provide a clear title and description for your changes.
-
Code Review: Participate in the code review process. Make any requested changes if needed.
-
Merge: Once your changes are approved, they will be merged into the main branch.
Thank you for contributing to our project! 🚀
to run the backend : npm start
-
YouTube Tutorial: Coding a video calling app with React
-
Youtube Tutorial: Used to get an overview and understand the concepts of the MERN stack
-
Youtube Tutorial: Used to learn Node.js
-
Youtube Tutorial: Used to learn react contexts and hooks
This project is licensed under the MIT License & Apache License