463 lines
23 KiB
HTML
463 lines
23 KiB
HTML
{% load i18n %}
|
|
{% load hospital_filters %}
|
|
<div class="sidebar">
|
|
<!-- Brand -->
|
|
<div class="sidebar-brand">
|
|
<i class="bi bi-heart-pulse-fill"></i> PX360
|
|
</div>
|
|
|
|
<!-- Navigation -->
|
|
<nav class="sidebar-nav">
|
|
<ul class="nav flex-column">
|
|
<!-- Command Center -->
|
|
<li class="nav-item">
|
|
<a class="nav-link {% if request.resolver_match.url_name == 'command_center' %}active{% endif %}"
|
|
href="{% url 'analytics:command_center' %}">
|
|
<i class="bi bi-speedometer2"></i>
|
|
{% trans "Command Center" %}
|
|
</a>
|
|
</li>
|
|
|
|
<hr class="my-2" style="border-color: rgba(255,255,255,0.1);">
|
|
|
|
<!-- Complaints -->
|
|
<li class="nav-item">
|
|
<a class="nav-link {% if 'complaints' in request.path %}active{% endif %}"
|
|
data-bs-toggle="collapse"
|
|
href="#complaintsMenu"
|
|
role="button"
|
|
aria-expanded="{% if 'complaints' in request.path %}true{% else %}false{% endif %}"
|
|
aria-controls="complaintsMenu">
|
|
<i class="bi bi-exclamation-triangle"></i>
|
|
{% trans "Complaints" %}
|
|
<span class="badge bg-danger">{{ complaint_count|default:0 }}</span>
|
|
<i class="bi bi-chevron-down ms-auto"></i>
|
|
</a>
|
|
<div class="collapse {% if 'complaints' in request.path %}show{% endif %}" id="complaintsMenu">
|
|
<ul class="nav flex-column ms-3">
|
|
<li class="nav-item">
|
|
<a class="nav-link {% if request.resolver_match.url_name == 'complaint_list' %}active{% endif %}"
|
|
href="{% url 'complaints:complaint_list' %}">
|
|
<i class="bi bi-list-ul"></i>
|
|
{% trans "All Complaints" %}
|
|
</a>
|
|
</li>
|
|
<li class="nav-item">
|
|
<a class="nav-link {% if request.resolver_match.url_name == 'inquiry_list' %}active{% endif %}"
|
|
href="{% url 'complaints:inquiry_list' %}">
|
|
<i class="bi bi-question-circle"></i>
|
|
{% trans "Inquiries" %}
|
|
</a>
|
|
</li>
|
|
<li class="nav-item">
|
|
<a class="nav-link {% if request.resolver_match.url_name == 'complaints_analytics' %}active{% endif %}"
|
|
href="{% url 'complaints:complaints_analytics' %}">
|
|
<i class="bi bi-bar-chart"></i>
|
|
{% trans "Analytics" %}
|
|
</a>
|
|
</li>
|
|
</ul>
|
|
</div>
|
|
</li>
|
|
|
|
<!-- Feedback -->
|
|
<li class="nav-item">
|
|
<a class="nav-link {% if 'feedback' in request.path %}active{% endif %}"
|
|
href="{% url 'feedback:feedback_list' %}">
|
|
<i class="bi bi-chat-heart"></i>
|
|
{% trans "Feedback" %}
|
|
<span class="badge bg-success">{{ feedback_count|default:0 }}</span>
|
|
</a>
|
|
</li>
|
|
|
|
<!-- Appreciation -->
|
|
<li class="nav-item">
|
|
<a class="nav-link {% if 'appreciation' in request.path %}active{% endif %}"
|
|
data-bs-toggle="collapse"
|
|
href="#appreciationMenu"
|
|
role="button"
|
|
aria-expanded="{% if 'appreciation' in request.path %}true{% else %}false{% endif %}"
|
|
aria-controls="appreciationMenu">
|
|
<i class="bi bi-heart-fill"></i>
|
|
{% trans "Appreciation" %}
|
|
<i class="bi bi-chevron-down ms-auto"></i>
|
|
</a>
|
|
<div class="collapse {% if 'appreciation' in request.path %}show{% endif %}" id="appreciationMenu">
|
|
<ul class="nav flex-column ms-3">
|
|
<li class="nav-item">
|
|
<a class="nav-link {% if request.resolver_match.url_name == 'appreciation_list' %}active{% endif %}"
|
|
href="{% url 'appreciation:appreciation_list' %}">
|
|
<i class="bi bi-list-ul"></i>
|
|
{% trans "All Appreciations" %}
|
|
</a>
|
|
</li>
|
|
<li class="nav-item">
|
|
<a class="nav-link {% if request.resolver_match.url_name == 'appreciation_send' %}active{% endif %}"
|
|
href="{% url 'appreciation:appreciation_send' %}">
|
|
<i class="bi bi-send"></i>
|
|
{% trans "Send Appreciation" %}
|
|
</a>
|
|
</li>
|
|
<li class="nav-item">
|
|
<a class="nav-link {% if request.resolver_match.url_name == 'leaderboard_view' %}active{% endif %}"
|
|
href="{% url 'appreciation:leaderboard_view' %}">
|
|
<i class="bi bi-trophy"></i>
|
|
{% trans "Leaderboard" %}
|
|
</a>
|
|
</li>
|
|
<li class="nav-item">
|
|
<a class="nav-link {% if request.resolver_match.url_name == 'my_badges_view' %}active{% endif %}"
|
|
href="{% url 'appreciation:my_badges_view' %}">
|
|
<i class="bi bi-award"></i>
|
|
{% trans "My Badges" %}
|
|
</a>
|
|
</li>
|
|
</ul>
|
|
</div>
|
|
</li>
|
|
|
|
<!-- Observations -->
|
|
<li class="nav-item">
|
|
<a class="nav-link {% if 'observations' in request.path and 'new' not in request.path %}active{% endif %}"
|
|
href="{% url 'observations:observation_list' %}">
|
|
<i class="bi bi-eye"></i>
|
|
{% trans "Observations" %}
|
|
</a>
|
|
</li>
|
|
|
|
<!-- PX Actions -->
|
|
<li class="nav-item">
|
|
<a class="nav-link {% if 'actions' in request.path %}active{% endif %}"
|
|
href="{% url 'actions:action_list' %}">
|
|
<i class="bi bi-clipboard-check"></i>
|
|
{% trans "PX Actions" %}
|
|
<span class="badge bg-warning">{{ action_count|default:0 }}</span>
|
|
</a>
|
|
</li>
|
|
|
|
<!-- Journeys -->
|
|
<li class="nav-item">
|
|
<a class="nav-link {% if 'journeys' in request.path %}active{% endif %}"
|
|
href="{% url 'journeys:instance_list' %}">
|
|
<i class="bi bi-diagram-3"></i>
|
|
{% trans "Patient Journeys" %}
|
|
</a>
|
|
</li>
|
|
|
|
<!-- Surveys -->
|
|
<li class="nav-item">
|
|
<a class="nav-link {% if 'surveys' in request.path %}active{% endif %}"
|
|
href="{% url 'surveys:instance_list' %}">
|
|
<i class="bi bi-clipboard-data"></i>
|
|
{% trans "Surveys" %}
|
|
</a>
|
|
</li>
|
|
|
|
<!-- Physicians -->
|
|
<li class="nav-item">
|
|
<a class="nav-link {% if 'physicians' in request.path %}active{% endif %}"
|
|
href="{% url 'physicians:physician_list' %}">
|
|
<i class="bi bi-person-badge"></i>
|
|
{% trans "Physicians" %}
|
|
</a>
|
|
</li>
|
|
|
|
<!-- Staff -->
|
|
<li class="nav-item">
|
|
<a class="nav-link {% if 'staff' in request.path and 'api' not in request.path %}active{% endif %}"
|
|
data-bs-toggle="collapse"
|
|
href="#staffMenu"
|
|
role="button"
|
|
aria-expanded="{% if 'staff' in request.path %}true{% else %}false{% endif %}"
|
|
aria-controls="staffMenu">
|
|
<i class="bi bi-people"></i>
|
|
{% trans "Staff" %}
|
|
<i class="bi bi-chevron-down ms-auto"></i>
|
|
</a>
|
|
<div class="collapse {% if 'staff' in request.path %}show{% endif %}" id="staffMenu">
|
|
<ul class="nav flex-column ms-3">
|
|
<li class="nav-item">
|
|
<a class="nav-link {% if request.resolver_match.url_name == 'staff_list' %}active{% endif %}"
|
|
href="{% url 'organizations:staff_list' %}">
|
|
<i class="bi bi-list-ul"></i>
|
|
{% trans "Staff List" %}
|
|
</a>
|
|
</li>
|
|
<li class="nav-item">
|
|
<a class="nav-link {% if request.resolver_match.url_name == 'staff_hierarchy_d3' %}active{% endif %}"
|
|
href="{% url 'organizations:staff_hierarchy_d3' %}">
|
|
<i class="bi bi-diagram-3"></i>
|
|
{% trans "Hierarchy" %}
|
|
</a>
|
|
</li>
|
|
</ul>
|
|
</div>
|
|
</li>
|
|
|
|
<hr class="my-2" style="border-color: rgba(255,255,255,0.1);">
|
|
|
|
<!-- Organizations -->
|
|
<li class="nav-item">
|
|
<a class="nav-link {% if 'organizations' in request.path and 'api' not in request.path %}active{% endif %}"
|
|
href="{% url 'organizations:hospital_list' %}">
|
|
<i class="bi bi-building"></i>
|
|
{% trans "Organizations" %}
|
|
</a>
|
|
</li>
|
|
|
|
<!-- Call Center -->
|
|
<li class="nav-item">
|
|
<a class="nav-link {% if 'callcenter' in request.path %}active{% endif %}"
|
|
data-bs-toggle="collapse"
|
|
href="#callcenterMenu"
|
|
role="button"
|
|
aria-expanded="{% if 'callcenter' in request.path %}true{% else %}false{% endif %}"
|
|
aria-controls="callcenterMenu">
|
|
<i class="bi bi-telephone"></i>
|
|
{% trans "Call Center" %}
|
|
<i class="bi bi-chevron-down ms-auto"></i>
|
|
</a>
|
|
<div class="collapse {% if 'callcenter' in request.path %}show{% endif %}" id="callcenterMenu">
|
|
<ul class="nav flex-column ms-3">
|
|
<li class="nav-item">
|
|
<a class="nav-link {% if request.resolver_match.url_name == 'interaction_list' %}active{% endif %}"
|
|
href="{% url 'callcenter:interaction_list' %}">
|
|
<i class="bi bi-list-ul"></i>
|
|
{% trans "Interactions" %}
|
|
</a>
|
|
</li>
|
|
<li class="nav-item">
|
|
<a class="nav-link {% if request.resolver_match.url_name == 'create_complaint' %}active{% endif %}"
|
|
href="{% url 'callcenter:create_complaint' %}">
|
|
<i class="bi bi-plus-circle"></i>
|
|
{% trans "Create Complaint" %}
|
|
</a>
|
|
</li>
|
|
<li class="nav-item">
|
|
<a class="nav-link {% if request.resolver_match.url_name == 'create_inquiry' %}active{% endif %}"
|
|
href="{% url 'callcenter:create_inquiry' %}">
|
|
<i class="bi bi-plus-circle"></i>
|
|
{% trans "Create Inquiry" %}
|
|
</a>
|
|
</li>
|
|
<li class="nav-item">
|
|
<a class="nav-link {% if request.resolver_match.url_name == 'complaint_list' and 'callcenter' in request.path %}active{% endif %}"
|
|
href="{% url 'callcenter:complaint_list' %}">
|
|
<i class="bi bi-exclamation-triangle"></i>
|
|
{% trans "Complaints" %}
|
|
</a>
|
|
</li>
|
|
<li class="nav-item">
|
|
<a class="nav-link {% if request.resolver_match.url_name == 'inquiry_list' and 'callcenter' in request.path %}active{% endif %}"
|
|
href="{% url 'callcenter:inquiry_list' %}">
|
|
<i class="bi bi-question-circle"></i>
|
|
{% trans "Inquiries" %}
|
|
</a>
|
|
</li>
|
|
</ul>
|
|
</div>
|
|
</li>
|
|
|
|
<!-- Social Media -->
|
|
<li class="nav-item">
|
|
<a class="nav-link {% if 'social' in request.path %}active{% endif %}"
|
|
href="{% url 'social:social_comment_list' %}">
|
|
<i class="bi bi-chat-dots"></i>
|
|
{% trans "Social Media" %}
|
|
</a>
|
|
</li>
|
|
|
|
<!-- PX Sources -->
|
|
<li class="nav-item">
|
|
<a class="nav-link {% if 'px_sources' in request.path %}active{% endif %}"
|
|
href="{% url 'px_sources:source_list' %}">
|
|
<i class="bi bi-lightning"></i>
|
|
{% trans "PX Sources" %}
|
|
</a>
|
|
</li>
|
|
|
|
<!-- References -->
|
|
<li class="nav-item">
|
|
<a class="nav-link {% if 'references' in request.path %}active{% endif %}"
|
|
href="{% url 'references:dashboard' %}">
|
|
<i class="bi bi-folder"></i>
|
|
{% trans "References" %}
|
|
</a>
|
|
</li>
|
|
|
|
<!-- Standards -->
|
|
<li class="nav-item">
|
|
<a class="nav-link {% if 'standards' in request.path %}active{% endif %}"
|
|
data-bs-toggle="collapse"
|
|
href="#standardsMenu"
|
|
role="button"
|
|
aria-expanded="{% if 'standards' in request.path %}true{% else %}false{% endif %}"
|
|
aria-controls="standardsMenu">
|
|
<i class="bi bi-shield-check"></i>
|
|
{% trans "Standards" %}
|
|
<i class="bi bi-chevron-down ms-auto"></i>
|
|
</a>
|
|
<div class="collapse {% if 'standards' in request.path %}show{% endif %}" id="standardsMenu">
|
|
<ul class="nav flex-column ms-3">
|
|
<li class="nav-item">
|
|
<a class="nav-link {% if request.resolver_match.url_name == 'standards:dashboard' %}active{% endif %}"
|
|
href="{% url 'standards:dashboard' %}">
|
|
<i class="bi bi-speedometer2"></i>
|
|
{% trans "Dashboard" %}
|
|
</a>
|
|
</li>
|
|
<li class="nav-item">
|
|
<a class="nav-link {% if request.resolver_match.url_name == 'standards:search' %}active{% endif %}"
|
|
href="{% url 'standards:search' %}">
|
|
<i class="bi bi-search"></i>
|
|
{% trans "Search Standards" %}
|
|
</a>
|
|
</li>
|
|
{% comment %} {% if user.is_px_admin %} {% endcomment %}
|
|
<li><hr class="my-1" style="border-color: rgba(255,255,255,0.1);"></li>
|
|
<li class="nav-item">
|
|
<a class="nav-link {% if request.resolver_match.url_name == 'standards:source_list' or request.resolver_match.url_name == 'standards:source_create' %}active{% endif %}"
|
|
href="{% url 'standards:source_list' %}">
|
|
<i class="bi bi-building"></i>
|
|
{% trans "Sources" %}
|
|
</a>
|
|
</li>
|
|
<li class="nav-item">
|
|
<a class="nav-link {% if request.resolver_match.url_name == 'standards:category_list' or request.resolver_match.url_name == 'standards:category_create' %}active{% endif %}"
|
|
href="{% url 'standards:category_list' %}">
|
|
<i class="bi bi-folder"></i>
|
|
{% trans "Categories" %}
|
|
</a>
|
|
</li>
|
|
{% comment %} {% endif %} {% endcomment %}
|
|
</ul>
|
|
</div>
|
|
</li>
|
|
|
|
<hr class="my-2" style="border-color: rgba(255,255,255,0.1);">
|
|
|
|
<!-- Analytics -->
|
|
<li class="nav-item">
|
|
<a class="nav-link {% if 'analytics' in request.path %}active{% endif %}"
|
|
href="{% url 'analytics:dashboard' %}">
|
|
<i class="bi bi-graph-up"></i>
|
|
{% trans "Analytics" %}
|
|
</a>
|
|
</li>
|
|
|
|
<!-- QI Projects -->
|
|
<li class="nav-item">
|
|
<a class="nav-link {% if 'projects' in request.path %}active{% endif %}"
|
|
href="{% url 'projects:project_list' %}">
|
|
<i class="bi bi-kanban"></i>
|
|
{% trans "QI Projects" %}
|
|
</a>
|
|
</li>
|
|
|
|
<hr class="my-2" style="border-color: rgba(255,255,255,0.1);">
|
|
|
|
<!-- Settings (PX Admin only) -->
|
|
{% if user.is_px_admin %}
|
|
<li class="nav-item">
|
|
<a class="nav-link {% if 'config' in request.path %}active{% endif %}"
|
|
data-bs-toggle="collapse"
|
|
href="#settingsMenu"
|
|
role="button"
|
|
aria-expanded="{% if 'config' in request.path %}true{% else %}false{% endif %}"
|
|
aria-controls="settingsMenu">
|
|
<i class="bi bi-gear"></i>
|
|
{% trans "Settings" %}
|
|
<i class="bi bi-chevron-down ms-auto"></i>
|
|
</a>
|
|
<div class="collapse {% if 'config' in request.path %}show{% endif %}" id="settingsMenu">
|
|
<ul class="nav flex-column ms-3">
|
|
<li class="nav-item">
|
|
<a class="nav-link {% if request.resolver_match.url_name == 'config_dashboard' %}active{% endif %}"
|
|
href="{% url 'config:dashboard' %}">
|
|
<i class="bi bi-sliders"></i>
|
|
{% trans "Configuration" %}
|
|
</a>
|
|
</li>
|
|
<li class="nav-item">
|
|
<a class="nav-link {% if 'onboarding' in request.path %}active{% endif %}"
|
|
href="{% url 'accounts:provisional-user-list' %}">
|
|
<i class="bi bi-person-plus"></i>
|
|
{% trans "Onboarding" %}
|
|
<span class="badge bg-info">{{ provisional_user_count|default:0 }}</span>
|
|
</a>
|
|
</li>
|
|
</ul>
|
|
</div>
|
|
</li>
|
|
{% endif %}
|
|
</ul>
|
|
</nav>
|
|
|
|
<!-- Hospital Display -->
|
|
{% if current_hospital %}
|
|
<div class="hospital-selector px-3 py-2" style="border-top: 1px solid rgba(255,255,255,0.1);">
|
|
{% if is_px_admin %}
|
|
<div class="dropdown">
|
|
<button class="btn btn-light w-100 d-flex align-items-center text-start" type="button" data-bs-toggle="dropdown">
|
|
<i class="bi bi-hospital me-2 text-primary"></i>
|
|
<div class="flex-grow-1">
|
|
<div class="fw-semibold" style="font-size: 0.9rem;">
|
|
{{ current_hospital.name|truncatewords:3 }}
|
|
</div>
|
|
<div class="text-muted" style="font-size: 0.75rem;">
|
|
{% if current_hospital.city %}{{ current_hospital.city }}{% endif %}
|
|
</div>
|
|
</div>
|
|
<i class="bi bi-chevron-down text-muted"></i>
|
|
</button>
|
|
<ul class="dropdown-menu w-100" style="max-height: 400px; overflow-y: auto;">
|
|
<li class="dropdown-header">
|
|
<i class="bi bi-building me-2"></i>{% trans "Switch Hospital" %}
|
|
</li>
|
|
<li><hr class="dropdown-divider"></li>
|
|
{% get_all_hospitals as hospitals %}
|
|
{% for hospital in hospitals %}
|
|
<li>
|
|
<form action="{% url 'core:select_hospital' %}" method="post">
|
|
{% csrf_token %}
|
|
<input type="hidden" name="hospital_id" value="{{ hospital.id }}">
|
|
<button type="submit" class="dropdown-item d-flex align-items-center w-100{% if hospital.id == current_hospital.id %} active{% endif %}">
|
|
<i class="bi bi-hospital me-2 text-primary"></i>
|
|
<div class="text-start flex-grow-1">
|
|
<div class="fw-semibold" style="font-size: 0.9rem;">{{ hospital.name }}</div>
|
|
<div class="text-muted" style="font-size: 0.75rem;">
|
|
{% if hospital.city %}{{ hospital.city }}{% endif %}
|
|
</div>
|
|
</div>
|
|
{% if hospital.id == current_hospital.id %}
|
|
<i class="bi bi-check2 text-success"></i>
|
|
{% endif %}
|
|
</button>
|
|
</form>
|
|
</li>
|
|
{% endfor %}
|
|
<li><hr class="dropdown-divider"></li>
|
|
<li>
|
|
<a href="{% url 'core:select_hospital' %}" class="dropdown-item">
|
|
<i class="bi bi-list-ul me-2"></i>{% trans "View All Hospitals" %}
|
|
</a>
|
|
</li>
|
|
</ul>
|
|
</div>
|
|
{% else %}
|
|
<div class="d-flex align-items-center">
|
|
<i class="bi bi-hospital me-2 text-primary"></i>
|
|
<div>
|
|
<div class="fw-semibold" style="font-size: 0.9rem;">
|
|
{{ current_hospital.name|truncatewords:3 }}
|
|
</div>
|
|
<div class="text-muted" style="font-size: 0.75rem;">
|
|
{% if current_hospital.city %}{{ current_hospital.city }}{% endif %}
|
|
</div>
|
|
</div>
|
|
</div>
|
|
{% endif %}
|
|
</div>
|
|
{% endif %}
|
|
</div>
|