The MedConnect API provides a backend for a healthcare appointment scheduling platform, enabling patients to book appointments with healthcare providers, manage their medical history, and receive notifications. It includes features for patient and provider management, appointment scheduling, and secure access to patient records.
Try the MedConnect API live: MedConnect API Swagger Documentation
1- Clone the repository
git clone https://github.com/Y-Baker/MedConnect-API.git
2- Configure Connection String
- Open
appsettings.json
file and update theSQL-Server
string with your SQL Server connection string.
3- Update Database
dotnet ef database update
4- Run the API
dotnet run
5- Open Swagger
https://localhost:{port}/swagger/index.html
-
Purpose:
- To provide a robust backend service for scheduling and managing healthcare appointments.
- It ensures seamless interaction between patients and healthcare providers, enhancing the overall healthcare experience.
-
Scope:
-
Patient Features:
- Register and create a personal profile.
- Book and manage appointments with healthcare providers.
- View and update medical history.
- Receive appointment reminders and notifications.
-
Healthcare Provider Features:
- Manage schedules and availability.
- Access and update patient records securely.
- Communicate with patients through notifications.
-
-
Audience:
- This documentation is intended for developers building web and mobile healthcare applications for clinics or hospitals.
- It provides the necessary information to integrate and utilize the MedConnect API effectively..
-
Assumptions:
- Developers have a basic understanding of RESTful APIs and web development.
- The API will be used in a secure environment with proper authentication and authorization mechanisms.
-
User Management:
- Register:
- Patients and healthcare providers can register for an account.
- Requires basic information such as name, email, and password.
- Login:
- Users can log in to their account using email and password.
- Returns an access token for authentication.
- Register:
-
Patient Features:
- Profile:
- Patients can view and update their personal information.
- Includes fields like name, date of birth, and contact details.
- Medical History:
- Patients can view and update their medical history.
- Includes past diagnoses, medications, and allergies.
- Appointments:
- Patients can view upcoming and past appointments.
- Book appointments with healthcare providers.
- Receive notifications and Confirm Appointment Updates.
- Receive notifications and reminders for appointments.
- Profile:
-
Healthcare Provider Features:
- Profile:
- Healthcare providers can view and update their personal information.
- Includes fields like name, specialty, and contact details.
- Schedule:
- Healthcare providers can manage their availability and working hours.
- Set appointment slots for patients to book.
- Patient Records:
- Healthcare providers can access and update patient records securely.
- Includes medical history, diagnoses, and treatment plans.
- Appointments:
- Healthcare providers can Confirm or cancel appointments.
- Reschedule appointments with patients.
- Communicate with patients through notifications.
- Profile:
-
Security:
- All API endpoints require authentication using JWT tokens.
- Patient and provider data is encrypted at rest and in transit.
- Access to patient records is restricted to authorized healthcare providers.
-
JSON API:
- The API follows the JSON API specification for consistent response formatting.
- Includes support for pagination, filtering, and sorting. (In The Future)
-
Error Handling:
- Errors are returned with appropriate HTTP status codes and error messages.
- Detailed error messages are provided for debugging purposes.
-
Swagger Documentation:
- The API is documented using Swagger for easy reference and testing.
- Includes detailed descriptions of endpoints, request parameters, and response formats.
- Register a new account.
- Schema For Patient:
{ "name": "string", "userName": "string", "email": "user@example.com", "password": "string", "confirmPassword": "string", "birthDay": "2024-12-19", "address": "string", "gender": 1, "userType": 1 }
- Schema For Healthcare Provider:
{ "name": "string", "userName": "string", "email": "user@example.com", "password": "string", "confirmPassword": "string", "bio": "string", "shift": 1, "rate": 5, "userType": 2 }
- Login to an existing account.
- Schema:
{ "userName": "string", "password": "string" }
- Request a password reset for an account.
- Schema:
{ "email": "user@example.com" }
- Reset the password for an account.
- Schema:
{ "password": "string", "confirmPassword": "string", "email": "user@example.com", "token": "string" }
- Delete an account.
- Get the profile of the current user.
- Update the profile of the current user.
- Schema For Patient:
{ "name": "string", "email": "user@example.com", "birthDay": "2024-12-19", "address": "string", "gender": 1, "phoneNumber": "string" }
- Schema For Healthcare Provider:
{ "name": "string", "email": "user@example.com", "phoneNumber": "string", "bio": "string", "shift": 1, "rate": 5, "photo": "binary" }
- Get the profile of a patient.
- Schema:
{ "id": 1 }
- Get the medical history of a patient.
- Book an appointment.
- Schema:
{ "patientId": 1, "doctorId": 2, "date": "2024-12-20T10:00:00Z" }
- Get appointment details by ID.
- Reschedule an appointment.
- Schema:
{ "newDate": "2024-12-21T15:00:00Z" }
- Cancel an appointment.
- Get all appointments needing confirmation.
- Confirm an appointment.
- Get all doctors.
- Get doctor details by ID.
- Edit doctor details.
- Schema:
{ "name": "Dr. John Doe", "specialty": "Cardiology", "phone": "123-456-7890" }
- Delete a doctor.
- Get all notifications.
- Get new notifications.
- Get a notification by ID.
- Send a notification.
- Schema:
{ "recipientId": 1, "message": "Your appointment is confirmed.", "type": "info" }
- Repo
- Yousef Bakier
- Gamal Elbatawy
- Reem Fadaly
- Mahmoud Abdulmawlaa