This web application estimates the probability of contracting diseases transmitted by mosquitoes based on reported symptoms and geolocation. A heat map highlights the risk of disease based on data from the past 14 days in the user's area.
- Symptom Analysis: Users can report symptoms, which the app correlates with potential mosquito-borne diseases.
- Disease Risk Mapping: A heat map shows the probability of disease transmission in the user's region based on recent data.
- API Integration: Utilizes the Peruvian Ministry of Health (MINSA) API for up-to-date information.
- Data Visualization: Embeds interactive content for a comprehensive user experience.
- Image Upload and Management: Users can upload pictures of mosquito bites for analysis and delete uploaded images as needed.
- Frontend: Vue.js
- Backend: Flask, Python
- Database: SQLAlchemy
- External APIs: MINSA API
| Column | Type | Description |
|---|---|---|
id |
Integer | Primary key (auto-increment) |
fiebre_repentina |
Integer | Sudden fever severity |
dolor_de_cabeza |
Integer | Headache severity |
hemorragia_bucal |
Integer | Mouth bleeding severity |
hemorragia_nasal |
Integer | Nasal bleeding severity |
dolor_muscular |
Integer | Muscle pain severity |
dolor_en_las_articulaciones |
Integer | Joint pain severity |
vomitos |
Integer | Vomiting severity |
Fatiga |
Integer | Fatigue severity |
Ojos_rojos |
Integer | Red-eye severity |
class ENFERMEDADES(db.Model):
__tablename__ = 'enfermedades'
id = db.Column(db.Integer, primary_key=True, autoincrement=True)
fiebre_repentina = db.Column(db.Integer)
dolor_de_cabeza = db.Column(db.Integer)
hemorragia_bucal = db.Column(db.Integer)
hemorragia_nasal = db.Column(db.Integer)
dolor_muscular = db.Column(db.Integer)
dolor_en_las_articulaciones = db.Column(db.Integer)
vomitos = db.Column(db.Integer)
Fatiga = db.Column(db.Integer)
Ojos_rojos = db.Column(db.Integer)
def __repr__(self):
return f'<ENFERMEDADES {self.id}>'- GET: Retrieves all symptom data from the database.
- POST: Submits new symptom data for analysis.
- GET: Returns general results and recommendations.
- POST: Accepts image files for analysis and uploads them to the server.
The app includes methods to upload and manage images of mosquito bites:
- Purpose: Handles uploading of images selected by the user.
- Process:
- Access Selected Files: Retrieves files uploaded via the
<input type="file">element. - Iterate Through Files: Loops through the selected files to process each one individually.
- Read File as Data URL: Uses
FileReaderto convert the file into a base64-encoded URL (data URL). - Store Image Data: Pushes the converted URL into the
imageUrlsarray for display or further processing.
- Access Selected Files: Retrieves files uploaded via the
- Purpose: Removes an uploaded image from the display list.
- Process:
- Identify Image: Receives the index of the image to be removed.
- Update Array: Uses
spliceto remove the image from theimageUrlsarray.
The project utilizes the Insect Bite Identifier dataset, hosted on Roboflow. It contains annotated images of various insect bites, designed to train computer vision models for detection and classification of insect bites. This dataset supports formats for object detection models and offers a robust foundation for image-based predictions.
Dataset Link: Roboflow - Insect Bite Dataset
- Clone the repository:
git clone <repository_url>
- Navigate to the project directory:
cd <project_directory>
- Install dependencies:
pip install -r requirements.txt npm install
- Start the backend server:
python app.py
- Start the frontend server:
npm run serve
- Fork the repository.
- Create a new feature branch:
git checkout -b feature-name
- Commit your changes:
git commit -m "Add a descriptive message" - Push to the branch:
git push origin feature-name
- Open a pull request.