# Voice Chat Bot for Medical Role Play
## Introduction
Voice Chat Bot for Medical Role Play is an innovative application designed to simulate medical scenarios through voice interactions. Ideal for medical students, practitioners, and enthusiasts, this app offers a unique platform to practice diagnostic skills, patient communication, and decision-making in a virtual environment.
## Features
### User Management
- [ ] **User Registration and Login:** Users can register and log in using their email addresses, ensuring secure access to the app.
- [ ] **Profile Management:** Users can manage their profiles, including updating personal details and preferences.
- [ ] **Limit**: User have limited access to:
- [ ] A pre-defined number of sessions.
- [ ] Limited amount of time for a session.
### Chatbot Interaction
- [ ] **Disease Selection**: Users can either choose a specific disease for the chatbot to simulate or opt for a random disease.
- [ ] **Custom Case Information**: Before starting a conversation, users can input specific information about the case to tailor the simulation.
- [ ] **Focused Consultations**: Instead of covering a disease from A to Z, users can focus on specific aspects (e.g., HIV counseling), including handling patient emotions like anger or anxiety.
- [ ] **Conversation Duration**: Users can set the duration of the conversation, ranging from 20 to 30 minutes per case.
- [ ] **Chat History**: The app retains up to 10 previous chat sessions for user reference.
- [ ] **AI Recommendations**: The chatbot offers recommendations on improving communication skills and word choices based on the conversation.
- [ ] **Export Transcript**: User can export transcript of the conversation as a pdf file
### Validation and Feedback
- [ ] **Input Validation**: All provided information is validated for accuracy and relevance before the chat begins.
- [ ] **Feedback Mechanism**: Users can provide feedback on their experience, which helps in improving the chatbot's performance.
### Educational Tools
- [ ] **Diagnostic Tips**: During the conversation, the chatbot can offer diagnostic tips and guidelines relevant to the case.
- [ ] **Resource Links**: Users have access to links for additional reading and resources related to medical cases.
### Additional User Stories
- [ ] **Interactive Case Scenarios**: As a user, I can engage in interactive case scenarios where the chatbot presents symptoms, and I have to diagnose and suggest treatments.
- [ ] **Real-time Assistance**: As a user, I can receive real-time assistance or hints from the chatbot if I am stuck during the diagnosis process.
- [ ] **Progress Tracking**: As a user, I can track my progress over time, seeing how my diagnostic skills have improved.
- [ ] **Gamification Elements**: Introduce gamification elements like scores, levels, and rewards to make the learning process more engaging.
## Technical Specifications
### Database Schema
- [ ] Users: Stores user details such as email, password, and profile information.
- [ ] Sessions: Records details of each chat session, including user ID, disease chosen, case information, duration, feedback for that session, and chat history.
- [ ] Feedback: Captures user feedback on each session for quality improvement purposes.
### Technologies
* Frontend: React, Bootstrap.
* Backend: Node.js with Express.
* Database: MongoDB for storing user data and session details.
* Voice Recognition: Integration with a openai API (chat completion, text-to-speech, speech-to-text).
## Getting Started
To get started with the development:
* Clone the repository.
* Install dependencies.
* Set up the database.
* Configure the environment variables.
* Run the application.