This commit is contained in:
Marwan Alwali 2025-12-31 10:52:00 +03:00
parent 7fc497ab70
commit 4e367c780c
5 changed files with 72 additions and 25 deletions

View File

@ -84,7 +84,7 @@ class Department(UUIDModel, TimeStampedModel):
def __str__(self): def __str__(self):
return f"{self.hospital.name} - {self.name}" return f"{self.hospital.name} - {self.name}"
# TODO Add Section
class Physician(UUIDModel, TimeStampedModel): class Physician(UUIDModel, TimeStampedModel):
"""Physician/Doctor model""" """Physician/Doctor model"""
# Link to user account (optional - some physicians may not have system access) # Link to user account (optional - some physicians may not have system access)

View File

@ -93,12 +93,7 @@ def mention_list(request):
@login_required @login_required
def mention_detail(request, pk): def mention_detail(request, pk):
"""Social media mention detail view""" """Social media mention detail view"""
mention = get_object_or_404( mention = get_object_or_404(SocialMention.objects.select_related('hospital', 'department', 'px_action', 'responded_by'),pk=pk)
SocialMention.objects.select_related(
'hospital', 'department', 'px_action', 'responded_by'
),
pk=pk
)
context = { context = {
'mention': mention, 'mention': mention,

BIN
dump.rdb

Binary file not shown.

View File

@ -111,47 +111,95 @@
box-shadow: 0 1px 3px rgba(0,0,0,0.1); box-shadow: 0 1px 3px rgba(0,0,0,0.1);
transition: transform 0.2s, box-shadow 0.2s; transition: transform 0.2s, box-shadow 0.2s;
} }
.stat-card:hover { .stat-card:hover {
transform: translateY(-2px); transform: translateY(-2px);
box-shadow: 0 4px 6px rgba(0,0,0,0.1); box-shadow: 0 4px 6px rgba(0,0,0,0.1);
} }
.stat-card .card-body { .stat-card .card-body {
padding: 1.5rem; padding: 1.5rem;
} }
.stat-value { .stat-value {
font-size: 2rem; font-size: 2rem;
font-weight: 700; font-weight: 700;
margin: 0.5rem 0; margin: 0.5rem 0;
} }
.stat-label { .stat-label {
color: #6b7280; color: #6b7280;
font-size: 0.875rem; font-size: 0.875rem;
text-transform: uppercase; text-transform: uppercase;
letter-spacing: 0.05em; letter-spacing: 0.05em;
} }
/* Tables */ /* Tables */
.table-card { .table-card {
background: white; background: white;
border-radius: 0.5rem; border-radius: 0.5rem;
box-shadow: 0 1px 3px rgba(0,0,0,0.1); box-shadow: 0 1px 3px rgba(0,0,0,0.1);
} }
.table-card .card-header { .table-card .card-header {
background: white; background: white;
border-bottom: 1px solid #e5e7eb; border-bottom: 1px solid #e5e7eb;
padding: 1rem 1.5rem; padding: 1rem 1.5rem;
} }
/* Badges */ /* Badges */
.badge { .badge {
padding: 0.35em 0.65em; padding: 0.35em 0.65em;
font-weight: 600; font-weight: 600;
} }
/* Soft Buttons (Velzon-inspired) */
.btn-soft-primary {
color: #0d6efd;
background-color: rgba(13, 110, 253, 0.1);
border-color: transparent;
}
.btn-soft-primary:hover {
color: #fff;
background-color: #0d6efd;
border-color: #0d6efd;
}
/* Card Enhancements */
.card {
margin-bottom: 1.5rem;
}
.card-title {
font-size: 1rem;
font-weight: 600;
color: #495057;
}
.shadow-sm {
box-shadow: 0 0.125rem 0.25rem rgba(0, 0, 0, 0.075) !important;
}
.border-0 {
border: 0 !important;
}
.bg-transparent {
background-color: transparent !important;
}
/* Page Title Box */
.page-title-box {
padding-bottom: 1rem;
}
.page-title-box h4 {
font-size: 1.25rem;
font-weight: 600;
color: #495057;
margin: 0;
}
/* SLA Indicators */ /* SLA Indicators */
.sla-overdue { color: #dc2626; } .sla-overdue { color: #dc2626; }

View File

@ -8,7 +8,7 @@
<div class="container-fluid"> <div class="container-fluid">
<div class="mb-3"> <div class="mb-3">
<a href="{% url 'surveys:instance_list' %}" class="btn btn-outline-secondary btn-sm"> <a href="{% url 'surveys:instance_list' %}" class="btn btn-outline-secondary btn-sm">
<i class="bi bi-arrow-left me-1"></i> Back to Surveys <i class="bi bi-arrow-left me-1"></i> {{ _("Back to Surveys")}}
</a> </a>
</div> </div>
@ -41,7 +41,7 @@
{% empty %} {% empty %}
<div class="text-center py-5"> <div class="text-center py-5">
<i class="bi bi-clipboard" style="font-size: 3rem; color: #ccc;"></i> <i class="bi bi-clipboard" style="font-size: 3rem; color: #ccc;"></i>
<p class="text-muted mt-3">No responses yet</p> <p class="text-muted mt-3">{{ _("No responses yet")}}</p>
</div> </div>
{% endfor %} {% endfor %}
</div> </div>
@ -71,26 +71,26 @@
{% if survey.total_score %} {% if survey.total_score %}
<div class="mb-3"> <div class="mb-3">
<strong>Total Score:</strong><br> <strong>{{ _("Total Score")}}:</strong><br>
<h3 class="mb-0 {% if survey.is_negative %}text-danger{% else %}text-success{% endif %}"> <h3 class="mb-0 {% if survey.is_negative %}text-danger{% else %}text-success{% endif %}">
{{ survey.total_score|floatformat:1 }}/5.0 {{ survey.total_score|floatformat:1 }}/5.0
</h3> </h3>
{% if survey.is_negative %} {% if survey.is_negative %}
<span class="badge bg-danger mt-2">Negative Feedback</span> <span class="badge bg-danger mt-2">{{ _("Negative Feedback")}}</span>
{% endif %} {% endif %}
</div> </div>
{% endif %} {% endif %}
{% if survey.sent_at %} {% if survey.sent_at %}
<div class="mb-3"> <div class="mb-3">
<strong>Sent:</strong><br> <strong>{{ _("Sent") }}:</strong><br>
{{ survey.sent_at|date:"M d, Y H:i" }} {{ survey.sent_at|date:"M d, Y H:i" }}
</div> </div>
{% endif %} {% endif %}
{% if survey.completed_at %} {% if survey.completed_at %}
<div class="mb-0"> <div class="mb-0">
<strong>Completed:</strong><br> <strong>{{ _("Completed") }}:</strong><br>
{{ survey.completed_at|date:"M d, Y H:i" }} {{ survey.completed_at|date:"M d, Y H:i" }}
</div> </div>
{% endif %} {% endif %}
@ -103,11 +103,15 @@
</div> </div>
<div class="card-body"> <div class="card-body">
<div class="mb-2"> <div class="mb-2">
<strong>Name:</strong><br> <strong>{{ _("Name") }}:</strong><br>
{{ survey.patient.get_full_name }} {{ survey.patient.get_full_name }}
</div> </div>
<div class="mb-2">
<strong>{{ _("Phone") }}:</strong><br>
{{ survey.patient.phone }}
</div>
<div class="mb-0"> <div class="mb-0">
<strong>MRN:</strong><br> <strong>{{ _("MRN") }}:</strong><br>
{{ survey.patient.mrn }} {{ survey.patient.mrn }}
</div> </div>
</div> </div>
@ -145,17 +149,17 @@
{% else %} {% else %}
<div class="alert alert-success mb-3"> <div class="alert alert-success mb-3">
<i class="bi bi-check-circle me-2"></i> <i class="bi bi-check-circle me-2"></i>
<strong>Patient Contacted</strong><br> <strong>{{ _("Patient Contacted")}}</strong><br>
<small>By {{ survey.patient_contacted_by.get_full_name }} on {{ survey.patient_contacted_at|date:"M d, Y H:i" }}</small> <small>By {{ survey.patient_contacted_by.get_full_name }} on {{ survey.patient_contacted_at|date:"M d, Y H:i" }}</small>
</div> </div>
<div class="mb-3"> <div class="mb-3">
<strong>Contact Notes:</strong> <strong>{{ _("Contact Notes")}}:</strong>
<p class="mb-0 mt-2">{{ survey.contact_notes }}</p> <p class="mb-0 mt-2">{{ survey.contact_notes }}</p>
</div> </div>
<div class="mb-3"> <div class="mb-3">
<strong>Status:</strong><br> <strong>{{ _("Status") }}:</strong><br>
{% if survey.issue_resolved %} {% if survey.issue_resolved %}
<span class="badge bg-success">Issue Resolved</span> <span class="badge bg-success">Issue Resolved</span>
{% else %} {% else %}