Code Monkey home page Code Monkey logo

healthlink's Introduction

Health Link

Health Link is a cutting-edge platform designed to provide a virtual bridge between patients and doctors, offering remote medical consultations and a comprehensive suite of features tailored to enhance the healthcare experience. With the platform, patients can easily search for and select doctors by name or specialization, request video consultations, and receive personalized medical records post-consultation. This system not only ensures that patients receive timely and efficient healthcare services from the comfort of their homes but also significantly reduces the risk of exposure to contagious diseases in hospital settings.

Platform Overview

Users and Functionality

  • Users: Health Link caters to three types of users: patients, doctors, and administrative staff. It allows registered users to log in, while new users can sign up as patients.
  • Doctor Selection and Consultation: Patients can search for and select doctors based on specialization or name. They can request video consultations, during which doctors can access the patient's medical records to aid in diagnosis.
  • Medical Records: After consultations, patients receive medical records containing advice or treatment plans. Doctors have the capability to view, edit, and delete medical records for their patients.
  • User Profiles: All registered users can view and modify their profiles. Administrative staff are responsible for managing doctor profiles within the system.

Technology Stack

  • Frontend: The client-side of the website is built using React and TailwindCSS, offering a responsive and user-friendly interface.
  • Backend: The server-side utilizes Node.js and Express for RESTful API services.
  • Real-time Communication: Socket.io is employed to manage online/offline statuses of doctors, facilitating real-time interactions. It supports features like online presence indicators and private consultation rooms.
  • Video Consultations: The integration of WebRTC and PeerJS enables high-quality video consultations, with PeerJS simplifying the peer-to-peer connection setup.
  • Database: MongoDB, along with the Mongoose library, is used for data storage, providing a flexible and scalable solution for managing user data and medical records.

Project Setup

To run Health Link locally:

  1. Environment Setup: Create a config.env file in the backend directory with necessary environment variables (e.g., database URL, API path, JWT secret).
NODE_ENV=development
PORT=5000
MONGO_URI=<Your MongoDB Url>
API_URL=/api/v1
secret=<Your secret code for JWT>
  1. Backend Setup:

Install dependencies and start the backend server with the following commands:

cd backend
npm install
npm start
  1. Frontend Setup:

Install dependencies and launch the React frontend with the following commands:

cd frontend
npm install
npm start

API Overview

Health Link provides comprehensive API routes for managing patients, doctors, staff, medical records, and specializations. It supports operations like registration, login, and CRUD operations for medical records and user profiles, ensuring secure access through JWT authentication. Additionally, it offers advanced features like filtering, sorting, field limiting, and pagination to efficiently manage and query data.

API Documentation

Patient Route (Need JWT token)

Endpoint HTTP Method CRUD Method Result Authorization
/api/v1/patient GET READ Get all patients Doctor, Staff
/api/v1/patient/:id GET READ Get a single patient Doctor, Staff, Patient(with match id)
/api/v1/patient POST CREATE Add a patient Staff
/api/v1/patient/:id PUT UPDATE Update a patient Patient(with match id)
/api/v1/patient/:id DELETE DELETE Delete a patient Staff

Doctor Route (Need JWT token)

Endpoint HTTP Method CRUD Method Result Authorization
/api/v1/doctor GET READ Get all doctor Paitent, Staff
/api/v1/doctor/:id GET READ Get a single doctor Patient, Staff, Doctor(with match id)
/api/v1/doctor POST CREATE Add a doctor Staff
/api/v1/doctor/:id PUT UPDATE Update a doctor Doctor(with match id)
/api/v1/doctor/:id DELETE DELETE Delete a doctor Staff

Staff Route (Need JWT token)

Endpoint HTTP Method CRUD Method Result Authorization
/api/v1/staff GET READ Get all staffs Staff
/api/v1/staff/:id GET READ Get a single staff Staff
/api/v1/staff POST CREATE Add a staff Staff
/api/v1/staff/:id PUT UPDATE Update a staff staff
/api/v1/staff/:id DELETE DELETE Delete a staff Staff

Medical Record Route (Need JWT token)

Endpoint HTTP Method CRUD Method Result Authorization
/api/v1/medicalRecord GET READ Get all medicalRecords Patient, Doctor
/api/v1/medicalRecord/:id GET READ Get a single medicalRecord Patient, Doctor
/api/v1/medicalRecord POST CREATE Add a medicalRecord Doctor
/api/v1/medicalRecord/:id PUT UPDATE Update a medicalRecord Doctor
/api/v1/medicalRecord/:id DELETE DELETE Delete a medicalRecord Doctor

Specialization Route (Need JWT token)

Endpoint HTTP Method CRUD Method Result Authorization
/api/v1/specialization GET READ Get all specializations Patient, Doctor, Staff
/api/v1/specialization/:id GET READ Get a single specialization Patient, Staff
/api/v1/specialization POST CREATE Add a specialization Staff
/api/v1/specialization/:id PUT UPDATE Update a specialization Staff
/api/v1/specialization/:id DELETE DELETE Delete a specialization Staff

Authentication Route (Don't need JWT token)

Endpoint HTTP Method CRUD Method Result Authorization
/api/v1/patient/login POST CREATE Create JWT Token Registed Patient
/api/v1/patient/register POST CREATE Create an patient account All users
/api/v1/doctor/login POST CREATE Create JWT Token Doctor
/api/v1/staff/login POST CREATE Create JWT Token Staff

Filtering

Example Result
/api/v1/medicalRecord?doctor=123456&patient=789102 Get medical record that match the doctorID and patientID
/api/v1/doctor/123456,213123 Get the information of the two doctors

Sorting

Example Result
/api/v1/medicalRecord?sort=date Medical Record sort by date
/api/v1/patient?sort=-name Patient sort by name in descending order

Field Limiting

Example Result
/api/v1/patient?fields=name,email Show only patient name

Pagination

Example Result
/api/v1/doctor?page=2&limit=5 Get the information in page 2 and have 5 doctor per page

ER | Use Case | Data Flow Diagrams

Level 1 DFD

Level 1 DFD

Level 2 DFD

Level 2 DFD

Entity-Relationship Diagram

ER Diagram

Use Case Diagram

Use Case Diagram

healthlink's People

Contributors

neerchayaphon avatar milad1372 avatar zeyu-li avatar domekittipol avatar

Watchers

Abbas Pirmoradi avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.