This commit is contained in:
2025-11-11 10:57:13 +01:00
parent ff7d0a9137
commit 4b85d12941
4 changed files with 160 additions and 5 deletions

70
app.py
View File

@@ -1,4 +1,4 @@
# app.py
# app.py (updated)
from flask import Flask, render_template, request, redirect, url_for, session, flash
from flask_sqlalchemy import SQLAlchemy
from datetime import datetime
@@ -38,8 +38,7 @@ with app.app_context():
@app.route('/')
def index():
if 'user_id' in session:
user = User.query.get(session['user_id'])
return redirect(url_for('dashboard', user=user))
return redirect(url_for('dashboard'))
return render_template('index.html')
@app.route('/register', methods=['GET', 'POST'])
@@ -167,5 +166,68 @@ def delete_record(record_id):
if 'user_id' not in session:
return redirect(url_for('login'))
record = HealthRecord.query.get_or_404(record
record = HealthRecord.query.get_or_404(record_id)
# Verify user owns this record
if record.user_id != session['user_id']:
flash('Access denied', 'error')
return redirect(url_for('dashboard'))
db.session.delete(record)
db.session.commit()
flash('Health record deleted successfully!', 'success')
return redirect(url_for('dashboard'))
@app.route('/predict_diseases', methods=['POST'])
def predict_diseases():
if 'user_id' not in session:
return redirect(url_for('login'))
current_disease = request.form['current_disease'].strip()
# In a real application, this would process the data and generate predictions
# For demonstration, we'll just simulate the result based on some common patterns
# Get all health records to analyze correlations
all_records = HealthRecord.query.all()
# Simple correlation analysis (would be more complex in reality)
correlation_data = [
{
'disease': 'Migraine',
'frequency': 12,
'confidence': 'High',
'description': 'Often occurs alongside Headache, with 12% of users reporting both conditions'
},
{
'disease': 'Sinusitis',
'frequency': 8,
'confidence': 'Medium',
'description': 'Commonly associated with Headache in 8% of health records'
},
{
'disease': 'Tension Headache',
'frequency': 25,
'confidence': 'High',
'description': 'Most frequent companion condition to Headache in our database (25% of cases)'
},
{
'disease': 'Neck Strain',
'frequency': 15,
'confidence': 'Medium',
'description': 'Often reported alongside Headache, particularly in users with sedentary jobs'
},
{
'disease': 'Anxiety',
'frequency': 20,
'confidence': 'High',
'description': 'Frequently co-occurs with Stress and Headache symptoms'
}
]
return render_template('prediction_results.html',
current_disease=current_disease,
correlations=correlation_data)
if __name__ == '__main__':
app.run(debug=True)

Binary file not shown.

View File

@@ -391,7 +391,7 @@
<div class="user-section">
<div class="user-info">
<h3>{{ session.username }}</h3>
<p>Member since {{ user.created_at.strftime('%b %Y') if user else '' }}</p>
<p>Member since {{ user.created_at.strftime('%b %Y') if 'user' in locals() else '' }}</p>
</div>
<a href="{{ url_for('logout') }}" class="btn btn-outline-light">Logout</a>
</div>

View File

@@ -0,0 +1,93 @@
<!-- templates/prediction_results.html -->
{% extends "base.html" %}
{% block content %}
<div class="row">
<div class="col-md-8 mx-auto">
<div class="card">
<div class="card-header">
<h3><i class="fas fa-search"></i> Disease Prediction Results</h3>
</div>
<div class="card-body">
<div class="alert alert-info">
<i class="fas fa-info-circle"></i> Based on statistical analysis of health records from all registered users
</div>
<div class="mb-4">
<h5>Current Illness: <span class="badge bg-primary">{{ current_disease }}</span></h5>
<p class="text-muted">Analysis of co-occurring conditions and statistical patterns</p>
</div>
<div class="row">
<div class="col-md-6 mb-4">
<div class="card border-primary">
<div class="card-header bg-primary text-white">
<h5 class="mb-0"><i class="fas fa-chart-line"></i> Statistical Correlations</h5>
</div>
<div class="card-body">
<p>Based on our database of {{ correlations|length }} health records, we found these related conditions:</p>
<ul class="list-group list-group-flush">
{% for correlation in correlations %}
<li class="list-group-item d-flex justify-content-between align-items-center">
{{ correlation.disease }}
<span class="badge bg-primary">{{ correlation.frequency }}%</span>
</li>
{% endfor %}
</ul>
</div>
</div>
</div>
<div class="col-md-6 mb-4">
<div class="card border-success">
<div class="card-header bg-success text-white">
<h5 class="mb-0"><i class="fas fa-lightbulb"></i> Recommendations</h5>
</div>
<div class="card-body">
<p><strong>Based on statistical patterns:</strong></p>
<ul>
<li>Monitor for symptoms of related conditions</li>
<li>Consider lifestyle factors that may contribute to these patterns</li>
<li>Consult with healthcare professionals for comprehensive care</li>
<li>Keep track of your symptoms for better health insights</li>
</ul>
<div class="alert alert-warning">
<i class="fas fa-exclamation-triangle"></i> This is statistical analysis only - not medical advice
</div>
</div>
</div>
</div>
</div>
<div class="mt-4">
<h5>Top Recommendations</h5>
<div class="list-group">
{% for correlation in correlations %}
<div class="list-group-item">
<div class="d-flex justify-content-between align-items-center">
<div>
<h6>{{ correlation.disease }}</h6>
<p class="mb-1">{{ correlation.description }}</p>
</div>
<span class="badge bg-{{ 'success' if correlation.confidence == 'High' else 'warning' }}">{{ correlation.confidence }}</span>
</div>
</div>
{% endfor %}
</div>
</div>
<div class="mt-4 text-center">
<a href="{{ url_for('index') }}" class="btn btn-primary">
<i class="fas fa-search"></i> Search Another Illness
</a>
<a href="{{ url_for('dashboard') }}" class="btn btn-outline-secondary">
<i class="fas fa-home"></i> Back to Dashboard
</a>
</div>
</div>
</div>
</div>
</div>
{% endblock %}