update
This commit is contained in:
parent
7fc497ab70
commit
4e367c780c
@ -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)
|
||||||
|
|||||||
@ -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,
|
||||||
|
|||||||
@ -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; }
|
||||||
|
|||||||
@ -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 %}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user