update
This commit is contained in:
parent
0a037d3d9d
commit
73c9e2e921
BIN
db.sqlite3
BIN
db.sqlite3
Binary file not shown.
Binary file not shown.
Binary file not shown.
@ -163,7 +163,7 @@ class LabTestDetailView(LoginRequiredMixin, DetailView):
|
|||||||
|
|
||||||
# Get recent orders for this test
|
# Get recent orders for this test
|
||||||
context['recent_orders'] = LabOrder.objects.filter(
|
context['recent_orders'] = LabOrder.objects.filter(
|
||||||
test=lab_test,
|
tests=lab_test,
|
||||||
tenant=self.request.user.tenant
|
tenant=self.request.user.tenant
|
||||||
).select_related('patient').order_by('-order_datetime')[:10]
|
).select_related('patient').order_by('-order_datetime')[:10]
|
||||||
|
|
||||||
@ -171,7 +171,7 @@ class LabTestDetailView(LoginRequiredMixin, DetailView):
|
|||||||
context['qc_records'] = QualityControl.objects.filter(
|
context['qc_records'] = QualityControl.objects.filter(
|
||||||
test=lab_test,
|
test=lab_test,
|
||||||
tenant=self.request.user.tenant
|
tenant=self.request.user.tenant
|
||||||
).order_by('-test_date')[:5]
|
).order_by('-created_at')[:5]
|
||||||
|
|
||||||
return context
|
return context
|
||||||
|
|
||||||
|
|||||||
File diff suppressed because it is too large
Load Diff
@ -52,9 +52,9 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="row">
|
<div class="row mb-4">
|
||||||
<!-- Recent Activity -->
|
<!-- Recent Activity -->
|
||||||
<div class="col-lg-8 mb-4">
|
<div class="col-lg-8">
|
||||||
<div class="panel panel-inverse" data-sortable-id="index-1">
|
<div class="panel panel-inverse" data-sortable-id="index-1">
|
||||||
<div class="panel-heading">
|
<div class="panel-heading">
|
||||||
<h4 class="panel-title"><i class="fas fa-history me-2"></i> {{ _("Recent Activity")}}</h4>
|
<h4 class="panel-title"><i class="fas fa-history me-2"></i> {{ _("Recent Activity")}}</h4>
|
||||||
@ -104,16 +104,25 @@
|
|||||||
<!-- Sidebar -->
|
<!-- Sidebar -->
|
||||||
<div class="col-lg-4">
|
<div class="col-lg-4">
|
||||||
<!-- System Health -->
|
<!-- System Health -->
|
||||||
<div class="card mb-4">
|
<div class="panel panel-inverse mb-4" data-sortable-id="index-2">
|
||||||
<div class="card-header">
|
<div class="panel-heading">
|
||||||
<h5 class="mb-0">
|
<h4 class="panel-title">
|
||||||
<i class="fas fa-heartbeat me-2"></i>System Health
|
<i class="fas fa-heartbeat me-2"></i>System Health
|
||||||
</h5>
|
</h4>
|
||||||
</div>
|
<div class="panel-heading-btn">
|
||||||
<div class="card-body">
|
|
||||||
|
<a href="javascript:;" class="btn btn-xs btn-icon btn-default" data-toggle="panel-expand"><i class="fa fa-expand"></i></a>
|
||||||
|
<a href="javascript:;" class="btn btn-xs btn-icon btn-success" data-toggle="panel-reload"><i class="fa fa-redo"></i></a>
|
||||||
|
<a href="javascript:;" class="btn btn-xs btn-icon btn-warning" data-toggle="panel-collapse"><i class="fa fa-minus"></i></a>
|
||||||
|
<a href="javascript:;" class="btn btn-xs btn-icon btn-danger" data-toggle="panel-remove"><i class="fa fa-times"></i></a>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="card-body p-4">
|
||||||
<div id="system-health"
|
<div id="system-health"
|
||||||
hx-get="{% url 'core:system_health' %}"
|
hx-get="{% url 'core:system_health' %}"
|
||||||
hx-trigger="load, every 60s">
|
hx-trigger="load, every 60s"
|
||||||
|
hx-swap="innerHTML">
|
||||||
<div class="text-center">
|
<div class="text-center">
|
||||||
<div class="spinner-border spinner-border-sm text-primary" role="status">
|
<div class="spinner-border spinner-border-sm text-primary" role="status">
|
||||||
<span class="visually-hidden">Loading system health...</span>
|
<span class="visually-hidden">Loading system health...</span>
|
||||||
@ -125,13 +134,21 @@
|
|||||||
|
|
||||||
<!-- Tenant Information -->
|
<!-- Tenant Information -->
|
||||||
{% if current_tenant %}
|
{% if current_tenant %}
|
||||||
<div class="card mb-4">
|
<div class="panel panel-inverse mb-4" data-sortable-id="index-3">
|
||||||
<div class="card-header">
|
<div class="panel-heading">
|
||||||
<h5 class="mb-0">
|
<h4 class="panel-title">
|
||||||
<i class="fas fa-building me-2"></i>Organization Info
|
<i class="fas fa-building me-2"></i>Organization Info
|
||||||
</h5>
|
</h4>
|
||||||
</div>
|
<div class="panel-heading-btn">
|
||||||
<div class="card-body">
|
|
||||||
|
<a href="javascript:;" class="btn btn-xs btn-icon btn-default" data-toggle="panel-expand"><i class="fa fa-expand"></i></a>
|
||||||
|
<a href="javascript:;" class="btn btn-xs btn-icon btn-success" data-toggle="panel-reload"><i class="fa fa-redo"></i></a>
|
||||||
|
<a href="javascript:;" class="btn btn-xs btn-icon btn-warning" data-toggle="panel-collapse"><i class="fa fa-minus"></i></a>
|
||||||
|
<a href="javascript:;" class="btn btn-xs btn-icon btn-danger" data-toggle="panel-remove"><i class="fa fa-times"></i></a>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="card-body p-4">
|
||||||
<div id="tenant-info"
|
<div id="tenant-info"
|
||||||
hx-get="{% url 'core:tenant_info' %}"
|
hx-get="{% url 'core:tenant_info' %}"
|
||||||
hx-trigger="load">
|
hx-trigger="load">
|
||||||
@ -146,13 +163,21 @@
|
|||||||
{% endif %}
|
{% endif %}
|
||||||
|
|
||||||
<!-- Quick Stats -->
|
<!-- Quick Stats -->
|
||||||
<div class="card">
|
<div class="panel panel-inverse mb-4" data-sortable-id="index-4">
|
||||||
<div class="card-header">
|
<div class="panel-heading">
|
||||||
<h5 class="mb-0">
|
<h4 class="panel-title">
|
||||||
<i class="fas fa-chart-pie me-2"></i>Quick Stats
|
<i class="fas fa-chart-pie me-2"></i>Quick Stats
|
||||||
</h5>
|
</h4>
|
||||||
</div>
|
<div class="panel-heading-btn">
|
||||||
<div class="card-body">
|
|
||||||
|
<a href="javascript:;" class="btn btn-xs btn-icon btn-default" data-toggle="panel-expand"><i class="fa fa-expand"></i></a>
|
||||||
|
<a href="javascript:;" class="btn btn-xs btn-icon btn-success" data-toggle="panel-reload"><i class="fa fa-redo"></i></a>
|
||||||
|
<a href="javascript:;" class="btn btn-xs btn-icon btn-warning" data-toggle="panel-collapse"><i class="fa fa-minus"></i></a>
|
||||||
|
<a href="javascript:;" class="btn btn-xs btn-icon btn-danger" data-toggle="panel-remove"><i class="fa fa-times"></i></a>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="card-body p-4">
|
||||||
<div class="row text-center">
|
<div class="row text-center">
|
||||||
<div class="col-6 mb-3">
|
<div class="col-6 mb-3">
|
||||||
<div class="border-end">
|
<div class="border-end">
|
||||||
@ -181,15 +206,23 @@
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
<!-- Quick Actions Grid -->
|
<!-- Quick Actions Grid -->
|
||||||
<div class="row mt-4">
|
<div class="row mb-4">
|
||||||
<div class="col-12">
|
<div class="col-12">
|
||||||
<div class="card">
|
<div class="panel panel-inverse mb-4" data-sortable-id="index-5">
|
||||||
<div class="card-header">
|
<div class="panel-heading">
|
||||||
<h5 class="mb-0">
|
<h4 class="panel-title">
|
||||||
<i class="fas fa-bolt me-2"></i>Quick Actions
|
<i class="fas fa-bolt me-2"></i>Quick Actions
|
||||||
</h5>
|
</h4>
|
||||||
</div>
|
<div class="panel-heading-btn">
|
||||||
<div class="card-body">
|
|
||||||
|
<a href="javascript:;" class="btn btn-xs btn-icon btn-default" data-toggle="panel-expand"><i class="fa fa-expand"></i></a>
|
||||||
|
<a href="javascript:;" class="btn btn-xs btn-icon btn-success" data-toggle="panel-reload"><i class="fa fa-redo"></i></a>
|
||||||
|
<a href="javascript:;" class="btn btn-xs btn-icon btn-warning" data-toggle="panel-collapse"><i class="fa fa-minus"></i></a>
|
||||||
|
<a href="javascript:;" class="btn btn-xs btn-icon btn-danger" data-toggle="panel-remove"><i class="fa fa-times"></i></a>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="card-body p-4">
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="col-xl-3 col-lg-4 col-md-6 mb-3">
|
<div class="col-xl-3 col-lg-4 col-md-6 mb-3">
|
||||||
<a href="{% url 'patients:patient_registration' %}" class="btn btn-outline-primary w-100 h-100 d-flex flex-column align-items-center justify-content-center py-4">
|
<a href="{% url 'patients:patient_registration' %}" class="btn btn-outline-primary w-100 h-100 d-flex flex-column align-items-center justify-content-center py-4">
|
||||||
|
|||||||
@ -1,4 +1,4 @@
|
|||||||
<div class="system-health">
|
<div id="system-health">
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="col-12 mb-3">
|
<div class="col-12 mb-3">
|
||||||
<div class="d-flex justify-content-between align-items-center">
|
<div class="d-flex justify-content-between align-items-center">
|
||||||
|
|||||||
@ -458,24 +458,24 @@
|
|||||||
.order-header {
|
.order-header {
|
||||||
padding: 1.5rem;
|
padding: 1.5rem;
|
||||||
}
|
}
|
||||||
|
|
||||||
.order-info-grid {
|
.order-info-grid {
|
||||||
grid-template-columns: repeat(2, 1fr);
|
grid-template-columns: repeat(2, 1fr);
|
||||||
gap: 1rem;
|
gap: 1rem;
|
||||||
}
|
}
|
||||||
|
|
||||||
.section-content {
|
.section-content {
|
||||||
padding: 1rem;
|
padding: 1rem;
|
||||||
}
|
}
|
||||||
|
|
||||||
.action-buttons {
|
.action-buttons {
|
||||||
justify-content: center;
|
justify-content: center;
|
||||||
}
|
}
|
||||||
|
|
||||||
.timeline {
|
.timeline {
|
||||||
padding-left: 1.5rem;
|
padding-left: 1.5rem;
|
||||||
}
|
}
|
||||||
|
|
||||||
.documents-grid {
|
.documents-grid {
|
||||||
grid-template-columns: repeat(2, 1fr);
|
grid-template-columns: repeat(2, 1fr);
|
||||||
}
|
}
|
||||||
@ -485,18 +485,18 @@
|
|||||||
.action-buttons, .btn {
|
.action-buttons, .btn {
|
||||||
display: none !important;
|
display: none !important;
|
||||||
}
|
}
|
||||||
|
|
||||||
.section-card {
|
.section-card {
|
||||||
break-inside: avoid;
|
break-inside: avoid;
|
||||||
margin-bottom: 1rem;
|
margin-bottom: 1rem;
|
||||||
}
|
}
|
||||||
|
|
||||||
.section-header {
|
.section-header {
|
||||||
background: none;
|
background: none;
|
||||||
border-bottom: 2px solid #000;
|
border-bottom: 2px solid #000;
|
||||||
color: #000;
|
color: #000;
|
||||||
}
|
}
|
||||||
|
|
||||||
.order-header {
|
.order-header {
|
||||||
background: none;
|
background: none;
|
||||||
color: #000;
|
color: #000;
|
||||||
@ -673,7 +673,7 @@
|
|||||||
<div class="section-card">
|
<div class="section-card">
|
||||||
<div class="section-header">
|
<div class="section-header">
|
||||||
<div>
|
<div>
|
||||||
<i class="fas fa-list me-2"></i>Order Items ({{ order.items.count }})
|
<i class="fas fa-list me-2"></i>Order Items ({{ order.line_items.count }})
|
||||||
</div>
|
</div>
|
||||||
<div class="btn-group btn-group-sm">
|
<div class="btn-group btn-group-sm">
|
||||||
<button type="button" class="btn btn-outline-secondary" onclick="expandAllItems()">
|
<button type="button" class="btn btn-outline-secondary" onclick="expandAllItems()">
|
||||||
@ -698,7 +698,7 @@
|
|||||||
</tr>
|
</tr>
|
||||||
</thead>
|
</thead>
|
||||||
<tbody>
|
<tbody>
|
||||||
{% for item in order.items.all %}
|
{% for item in order.line_items.all %}
|
||||||
<tr class="item-row">
|
<tr class="item-row">
|
||||||
<td>
|
<td>
|
||||||
{% if item.product.image %}
|
{% if item.product.image %}
|
||||||
@ -711,34 +711,44 @@
|
|||||||
</td>
|
</td>
|
||||||
<td>
|
<td>
|
||||||
<div class="item-details">
|
<div class="item-details">
|
||||||
<div class="item-name">{{ item.product.name }}</div>
|
<div class="item-name">{{ item.inventory_item.item_name }}</div>
|
||||||
<div class="item-description">{{ item.product.description|truncatechars:100 }}</div>
|
{# <div class="item-description">{{ item.inventory_item.description|truncatechars:50 }}</div>#}
|
||||||
<div class="item-specs">
|
<div class="item-specs">
|
||||||
SKU: {{ item.product.sku|default:"N/A" }} |
|
Category: {{ item.inventory_item.category|default:"N/A" }} |
|
||||||
Category: {{ item.product.category|default:"N/A" }}
|
Subcategory: {{ item.inventory_item.subcategory|default:"N/A" }}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</td>
|
</td>
|
||||||
<td>
|
<td>
|
||||||
<div class="quantity-info">
|
<div class="">
|
||||||
<div class="quantity-number">{{ item.quantity }}</div>
|
<div class="">{{ item.quantity_ordered }}</div>
|
||||||
<div class="quantity-unit">{{ item.unit|default:"pcs" }}</div>
|
<div class="text-muted fs-9px">{{ item.inventory_item.unit_of_measure|default:"pcs" }}</div>
|
||||||
</div>
|
</div>
|
||||||
</td>
|
</td>
|
||||||
<td>
|
<td>
|
||||||
<div class="price-info">
|
<div class="">
|
||||||
<div class="unit-price"><span class="symbol">ê</span>{{ item.unit_price|floatformat:'2g' }}</div>
|
<div class=""><span class="symbol">ê</span>{{ item.unit_price|floatformat:'2g' }}</div>
|
||||||
</div>
|
</div>
|
||||||
</td>
|
</td>
|
||||||
<td>
|
<td>
|
||||||
<div class="price-info">
|
<div class="">
|
||||||
<div class="total-price"><span class="symbol">ê</span>{{ item.total_price|floatformat:'2g' }}</div>
|
<div class="text-success fw-bold"><span class="symbol">ê</span>{{ item.total_price|floatformat:'2g' }}</div>
|
||||||
</div>
|
</div>
|
||||||
</td>
|
</td>
|
||||||
<td>
|
<td>
|
||||||
<span class="badge bg-{{ item.status_color }}">
|
{% if item.status == 'PENDING' %}
|
||||||
{{ item.get_status_display|default:"Pending" }}
|
<span class="badge bg-warning text-dark">{{ item.get_status_display|upper }}</span>
|
||||||
</span>
|
{% elif item.status == 'ORDERED' %}
|
||||||
|
<span class="badge bg-info">{{ item.get_status_display|upper }}</span>
|
||||||
|
{% elif item.status == 'PARTIAL_RECEIVED' %}
|
||||||
|
<span class="badge bg-success">{{ item.get_status_display|upper }}</span>
|
||||||
|
{% elif item.status == 'RECEIVED' %}
|
||||||
|
<span class="badge bg-green">{{ item.get_status_display|upper }}</span>
|
||||||
|
{% elif item.status == 'CANCELLED' %}
|
||||||
|
<span class="badge bg-danger">{{ item.get_status_display|upper }}</span>
|
||||||
|
{% else %}
|
||||||
|
<span class="badge bg-secondary">{{ item.get_status_display|upper }}</span>
|
||||||
|
{% endif %}
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
|
|||||||
@ -5,7 +5,7 @@
|
|||||||
{% if reference_range.pk %}Edit Reference Range{% else %}Add Reference Range{% endif %}
|
{% if reference_range.pk %}Edit Reference Range{% else %}Add Reference Range{% endif %}
|
||||||
{% endblock %}
|
{% endblock %}
|
||||||
|
|
||||||
{% block extra_css %}
|
{% block css %}
|
||||||
<style>
|
<style>
|
||||||
.form-section {
|
.form-section {
|
||||||
background: #f8f9fa;
|
background: #f8f9fa;
|
||||||
@ -533,7 +533,7 @@
|
|||||||
</div>
|
</div>
|
||||||
{% endblock %}
|
{% endblock %}
|
||||||
|
|
||||||
{% block extra_js %}
|
{% block js %}
|
||||||
<script>
|
<script>
|
||||||
$(document).ready(function() {
|
$(document).ready(function() {
|
||||||
// Initialize form
|
// Initialize form
|
||||||
|
|||||||
@ -55,13 +55,20 @@
|
|||||||
<div class="row">
|
<div class="row">
|
||||||
<!-- Test Information -->
|
<!-- Test Information -->
|
||||||
<div class="col-lg-8 mb-4">
|
<div class="col-lg-8 mb-4">
|
||||||
<div class="card">
|
<div class="panel panel-inverse" data-sortable-id="index-1">
|
||||||
<div class="card-header">
|
<div class="panel-heading">
|
||||||
<h5 class="mb-0">
|
<h4 class="panel-title">
|
||||||
<i class="fas fa-info-circle me-2"></i>Test Information
|
<i class="fas fa-info-circle me-2"></i> {{ _("Test Information")}}
|
||||||
</h5>
|
</h4>
|
||||||
</div>
|
<div class="panel-heading-btn">
|
||||||
<div class="card-body">
|
<a href="javascript:;" class="btn btn-xs btn-icon btn-default" data-toggle="panel-expand"><i class="fa fa-expand"></i></a>
|
||||||
|
{# <a href="javascript:;" class="btn btn-xs btn-icon btn-success" data-toggle="panel-reload"><i class="fa fa-redo"></i></a>#}
|
||||||
|
{# <a href="javascript:;" class="btn btn-xs btn-icon btn-warning" data-toggle="panel-collapse"><i class="fa fa-minus"></i></a>#}
|
||||||
|
{# <a href="javascript:;" class="btn btn-xs btn-icon btn-danger" data-toggle="panel-remove"><i class="fa fa-times"></i></a>#}
|
||||||
|
{##}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="panel-body">
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="col-md-6">
|
<div class="col-md-6">
|
||||||
<table class="table table-borderless">
|
<table class="table table-borderless">
|
||||||
@ -149,13 +156,20 @@
|
|||||||
|
|
||||||
<!-- Quick Stats -->
|
<!-- Quick Stats -->
|
||||||
<div class="col-lg-4 mb-4">
|
<div class="col-lg-4 mb-4">
|
||||||
<div class="card">
|
<div class="panel panel-inverse" data-sortable-id="index-2">
|
||||||
<div class="card-header">
|
<div class="panel-heading">
|
||||||
<h5 class="mb-0">
|
<h4 class="panel-title">
|
||||||
<i class="fas fa-chart-bar me-2"></i>Test Statistics
|
<i class="fas fa-chart-bar me-2"></i> {{ _("Test Statistics")}}
|
||||||
</h5>
|
</h4>
|
||||||
</div>
|
<div class="panel-heading-btn">
|
||||||
<div class="card-body">
|
<a href="javascript:;" class="btn btn-xs btn-icon btn-default" data-toggle="panel-expand"><i class="fa fa-expand"></i></a>
|
||||||
|
{# <a href="javascript:;" class="btn btn-xs btn-icon btn-success" data-toggle="panel-reload"><i class="fa fa-redo"></i></a>#}
|
||||||
|
{# <a href="javascript:;" class="btn btn-xs btn-icon btn-warning" data-toggle="panel-collapse"><i class="fa fa-minus"></i></a>#}
|
||||||
|
{# <a href="javascript:;" class="btn btn-xs btn-icon btn-danger" data-toggle="panel-remove"><i class="fa fa-times"></i></a>#}
|
||||||
|
{##}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="panel-body">
|
||||||
<div class="row g-3">
|
<div class="row g-3">
|
||||||
<div class="col-6">
|
<div class="col-6">
|
||||||
<div class="text-center p-3 bg-light rounded">
|
<div class="text-center p-3 bg-light rounded">
|
||||||
@ -191,18 +205,23 @@
|
|||||||
{% if reference_ranges %}
|
{% if reference_ranges %}
|
||||||
<div class="row mb-4">
|
<div class="row mb-4">
|
||||||
<div class="col-12">
|
<div class="col-12">
|
||||||
<div class="card">
|
<div class="panel panel-inverse" data-sortable-id="index-3">
|
||||||
<div class="card-header">
|
<div class="panel-heading">
|
||||||
<div class="d-flex justify-content-between align-items-center">
|
<h4 class="panel-title">
|
||||||
<h5 class="mb-0">
|
<i class="fas fa-ruler me-2"></i>Reference Ranges
|
||||||
<i class="fas fa-ruler me-2"></i>Reference Ranges
|
</h4>
|
||||||
</h5>
|
<div class="panel-heading-btn">
|
||||||
<a href="{% url 'laboratory:reference_range_create' %}?test={{ lab_test.pk }}" class="btn btn-outline-primary btn-sm">
|
<a href="{% url 'laboratory:reference_range_create' %}?test={{ lab_test.pk }}" class="btn btn-outline-primary btn-xs">
|
||||||
<i class="fas fa-plus me-1"></i>Add Range
|
<i class="fas fa-plus me-1"></i>Add Range
|
||||||
</a>
|
</a>
|
||||||
</div>
|
<a href="javascript:;" class="btn btn-xs btn-icon btn-default" data-toggle="panel-expand"><i class="fa fa-expand"></i></a>
|
||||||
</div>
|
{# <a href="javascript:;" class="btn btn-xs btn-icon btn-success" data-toggle="panel-reload"><i class="fa fa-redo"></i></a>#}
|
||||||
<div class="card-body p-0">
|
{# <a href="javascript:;" class="btn btn-xs btn-icon btn-warning" data-toggle="panel-collapse"><i class="fa fa-minus"></i></a>#}
|
||||||
|
{# <a href="javascript:;" class="btn btn-xs btn-icon btn-danger" data-toggle="panel-remove"><i class="fa fa-times"></i></a>#}
|
||||||
|
{##}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="panel-body">
|
||||||
<div class="table-responsive">
|
<div class="table-responsive">
|
||||||
<table class="table table-hover mb-0">
|
<table class="table table-hover mb-0">
|
||||||
<thead class="table-light">
|
<thead class="table-light">
|
||||||
@ -224,16 +243,16 @@
|
|||||||
</span>
|
</span>
|
||||||
</td>
|
</td>
|
||||||
<td>{{ range.age_min }} - {{ range.age_max|default:"∞" }} years</td>
|
<td>{{ range.age_min }} - {{ range.age_max|default:"∞" }} years</td>
|
||||||
<td class="fw-semibold">{{ range.normal_min }} - {{ range.normal_max }}</td>
|
<td class="fw-semibold">{{ range.range_low }} - {{ range.range_high }}</td>
|
||||||
<td class="text-danger">{{ range.critical_low|default:"N/A" }}</td>
|
<td class="text-danger">{{ range.critical_low }}</td>
|
||||||
<td class="text-danger">{{ range.critical_high|default:"N/A" }}</td>
|
<td class="text-danger">{{ range.critical_high }}</td>
|
||||||
<td>
|
<td>
|
||||||
<div class="btn-group btn-group-sm">
|
<div class="btn-group btn-group-sm">
|
||||||
<a href="{% url 'laboratory:reference_range_detail' range.pk %}" class="btn btn-outline-primary">
|
<a href="{% url 'laboratory:reference_range_detail' range.pk %}" class="btn btn-outline-primary btn-xs">
|
||||||
<i class="fas fa-eye"></i>
|
<i class="fas fa-eye"></i>
|
||||||
</a>
|
</a>
|
||||||
{% if perms.laboratory.change_referencerange %}
|
{% if perms.laboratory.change_referencerange %}
|
||||||
<a href="{% url 'laboratory:reference_range_update' range.pk %}" class="btn btn-outline-secondary">
|
<a href="{% url 'laboratory:reference_range_update' range.pk %}" class="btn btn-outline-secondary btn-xs">
|
||||||
<i class="fas fa-edit"></i>
|
<i class="fas fa-edit"></i>
|
||||||
</a>
|
</a>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
@ -254,18 +273,23 @@
|
|||||||
<div class="row">
|
<div class="row">
|
||||||
<!-- Recent Orders -->
|
<!-- Recent Orders -->
|
||||||
<div class="col-lg-6 mb-4">
|
<div class="col-lg-6 mb-4">
|
||||||
<div class="card">
|
<div class="panel panel-inverse" data-sortable-id="index-4">
|
||||||
<div class="card-header">
|
<div class="panel-heading">
|
||||||
<div class="d-flex justify-content-between align-items-center">
|
<h4 class="panel-title">
|
||||||
<h5 class="mb-0">
|
<i class="fas fa-clipboard-list me-2"></i>Recent Orders
|
||||||
<i class="fas fa-clipboard-list me-2"></i>Recent Orders
|
</h4>
|
||||||
</h5>
|
<div class="panel-heading-btn">
|
||||||
<a href="{% url 'laboratory:lab_order_list' %}?test={{ lab_test.pk }}" class="btn btn-outline-primary btn-sm">
|
<a href="{% url 'laboratory:lab_order_list' %}?test={{ lab_test.pk }}" class="btn btn-outline-primary btn-xs">
|
||||||
<i class="fas fa-list me-1"></i>View All
|
<i class="fas fa-list me-1"></i>View All
|
||||||
</a>
|
</a>
|
||||||
</div>
|
<a href="javascript:;" class="btn btn-xs btn-icon btn-default" data-toggle="panel-expand"><i class="fa fa-expand"></i></a>
|
||||||
</div>
|
{# <a href="javascript:;" class="btn btn-xs btn-icon btn-success" data-toggle="panel-reload"><i class="fa fa-redo"></i></a>#}
|
||||||
<div class="card-body p-0">
|
{# <a href="javascript:;" class="btn btn-xs btn-icon btn-warning" data-toggle="panel-collapse"><i class="fa fa-minus"></i></a>#}
|
||||||
|
{# <a href="javascript:;" class="btn btn-xs btn-icon btn-danger" data-toggle="panel-remove"><i class="fa fa-times"></i></a>#}
|
||||||
|
{##}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="panel-body">
|
||||||
{% if recent_orders %}
|
{% if recent_orders %}
|
||||||
<div class="table-responsive">
|
<div class="table-responsive">
|
||||||
<table class="table table-hover mb-0">
|
<table class="table table-hover mb-0">
|
||||||
@ -298,7 +322,7 @@
|
|||||||
</td>
|
</td>
|
||||||
<td>{{ order.order_datetime|date:"M d, H:i" }}</td>
|
<td>{{ order.order_datetime|date:"M d, H:i" }}</td>
|
||||||
<td>
|
<td>
|
||||||
<a href="{% url 'laboratory:lab_order_detail' order.pk %}" class="btn btn-outline-primary btn-sm">
|
<a href="{% url 'laboratory:lab_order_detail' order.pk %}" class="btn btn-outline-primary btn-xs">
|
||||||
<i class="fas fa-eye"></i>
|
<i class="fas fa-eye"></i>
|
||||||
</a>
|
</a>
|
||||||
</td>
|
</td>
|
||||||
@ -320,18 +344,23 @@
|
|||||||
|
|
||||||
<!-- Quality Control Records -->
|
<!-- Quality Control Records -->
|
||||||
<div class="col-lg-6 mb-4">
|
<div class="col-lg-6 mb-4">
|
||||||
<div class="card">
|
<div class="panel panel-inverse" data-sortable-id="index-5">
|
||||||
<div class="card-header">
|
<div class="panel-heading">
|
||||||
<div class="d-flex justify-content-between align-items-center">
|
<h4 class="panel-title">
|
||||||
<h5 class="mb-0">
|
<i class="fas fa-check-circle me-2"></i>Quality Control
|
||||||
<i class="fas fa-check-circle me-2"></i>Quality Control
|
</h4>
|
||||||
</h5>
|
<div class="panel-heading-btn">
|
||||||
<a href="{% url 'laboratory:quality_control_create' %}?test={{ lab_test.pk }}" class="btn btn-outline-success btn-sm">
|
<a href="{% url 'laboratory:quality_control_create' %}?test={{ lab_test.pk }}" class="btn btn-outline-success btn-xs">
|
||||||
<i class="fas fa-plus me-1"></i>Add QC
|
<i class="fas fa-plus me-1"></i>Add QC
|
||||||
</a>
|
</a>
|
||||||
</div>
|
<a href="javascript:;" class="btn btn-xs btn-icon btn-default" data-toggle="panel-expand"><i class="fa fa-expand"></i></a>
|
||||||
</div>
|
{# <a href="javascript:;" class="btn btn-xs btn-icon btn-success" data-toggle="panel-reload"><i class="fa fa-redo"></i></a>#}
|
||||||
<div class="card-body p-0">
|
{# <a href="javascript:;" class="btn btn-xs btn-icon btn-warning" data-toggle="panel-collapse"><i class="fa fa-minus"></i></a>#}
|
||||||
|
{# <a href="javascript:;" class="btn btn-xs btn-icon btn-danger" data-toggle="panel-remove"><i class="fa fa-times"></i></a>#}
|
||||||
|
{##}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="panel-body">
|
||||||
{% if qc_records %}
|
{% if qc_records %}
|
||||||
<div class="table-responsive">
|
<div class="table-responsive">
|
||||||
<table class="table table-hover mb-0">
|
<table class="table table-hover mb-0">
|
||||||
@ -347,16 +376,16 @@
|
|||||||
<tbody>
|
<tbody>
|
||||||
{% for qc in qc_records %}
|
{% for qc in qc_records %}
|
||||||
<tr>
|
<tr>
|
||||||
<td>{{ qc.test_date|date:"M d" }}</td>
|
<td>{{ qc.run_datetime|date:"M d" }}</td>
|
||||||
<td>{{ qc.get_control_level_display }}</td>
|
<td>{{ qc.get_control_level_display }}</td>
|
||||||
<td class="fw-semibold">{{ qc.result_value }}</td>
|
<td class="fw-semibold">{{ qc.result.result_value }}</td>
|
||||||
<td>
|
<td>
|
||||||
<span class="badge bg-{% if qc.is_within_range %}success{% else %}danger{% endif %}">
|
<span class="badge bg-{% if qc.is_within_range %}success{% else %}danger{% endif %}">
|
||||||
{% if qc.is_within_range %}In Range{% else %}Out of Range{% endif %}
|
{% if qc.is_within_range %}In Range{% else %}Out of Range{% endif %}
|
||||||
</span>
|
</span>
|
||||||
</td>
|
</td>
|
||||||
<td>
|
<td>
|
||||||
<a href="{% url 'laboratory:quality_control_detail' qc.pk %}" class="btn btn-outline-primary btn-sm">
|
<a href="{% url 'laboratory:quality_control_detail' qc.pk %}" class="btn btn-outline-primary btn-xs">
|
||||||
<i class="fas fa-eye"></i>
|
<i class="fas fa-eye"></i>
|
||||||
</a>
|
</a>
|
||||||
</td>
|
</td>
|
||||||
|
|||||||
@ -24,14 +24,18 @@
|
|||||||
|
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="col-xl-8">
|
<div class="col-xl-8">
|
||||||
<div class="card">
|
<div class="panel panel-inverse" data-sortable-id="index-1">
|
||||||
<div class="card-header">
|
<div class="panel-heading">
|
||||||
<h4 class="card-title">
|
<h4 class="panel-title"><i class="fas fa-vial me-2"></i> {{ _("Lab Test Information")}}</h4>
|
||||||
<i class="fas fa-vial me-2"></i>
|
{# <div class="panel-heading-btn">#}
|
||||||
Lab Test Information
|
{# <a href="javascript:;" class="btn btn-xs btn-icon btn-default" data-toggle="panel-expand"><i class="fa fa-expand"></i></a>#}
|
||||||
</h4>
|
{# <a href="javascript:;" class="btn btn-xs btn-icon btn-success" data-toggle="panel-reload"><i class="fa fa-redo"></i></a>#}
|
||||||
</div>
|
{# <a href="javascript:;" class="btn btn-xs btn-icon btn-warning" data-toggle="panel-collapse"><i class="fa fa-minus"></i></a>#}
|
||||||
<div class="card-body">
|
{# <a href="javascript:;" class="btn btn-xs btn-icon btn-danger" data-toggle="panel-remove"><i class="fa fa-times"></i></a>#}
|
||||||
|
{##}
|
||||||
|
{# </div>#}
|
||||||
|
</div>
|
||||||
|
<div class="panel-body">
|
||||||
{% if messages %}
|
{% if messages %}
|
||||||
{% for message in messages %}
|
{% for message in messages %}
|
||||||
<div class="alert alert-{{ message.tags }} alert-dismissible fade show" role="alert">
|
<div class="alert alert-{{ message.tags }} alert-dismissible fade show" role="alert">
|
||||||
@ -375,14 +379,18 @@
|
|||||||
|
|
||||||
<div class="col-xl-4">
|
<div class="col-xl-4">
|
||||||
<!-- Test Categories -->
|
<!-- Test Categories -->
|
||||||
<div class="card mb-4">
|
<div class="panel panel-inverse" data-sortable-id="index-2">
|
||||||
<div class="card-header">
|
<div class="panel-heading">
|
||||||
<h5 class="card-title">
|
<h4 class="panel-title"><i class="fas fa-tags me-2"></i> {{ _("Test Categories")}}</h4>
|
||||||
<i class="fas fa-tags me-2"></i>
|
{# <div class="panel-heading-btn">#}
|
||||||
Test Categories
|
{# <a href="javascript:;" class="btn btn-xs btn-icon btn-default" data-toggle="panel-expand"><i class="fa fa-expand"></i></a>#}
|
||||||
</h5>
|
{# <a href="javascript:;" class="btn btn-xs btn-icon btn-success" data-toggle="panel-reload"><i class="fa fa-redo"></i></a>#}
|
||||||
</div>
|
{# <a href="javascript:;" class="btn btn-xs btn-icon btn-warning" data-toggle="panel-collapse"><i class="fa fa-minus"></i></a>#}
|
||||||
<div class="card-body">
|
{# <a href="javascript:;" class="btn btn-xs btn-icon btn-danger" data-toggle="panel-remove"><i class="fa fa-times"></i></a>#}
|
||||||
|
{##}
|
||||||
|
{# </div>#}
|
||||||
|
</div>
|
||||||
|
<div class="panel-body">
|
||||||
<div class="mb-3">
|
<div class="mb-3">
|
||||||
<h6><i class="fas fa-heart text-danger me-2"></i>Hematology</h6>
|
<h6><i class="fas fa-heart text-danger me-2"></i>Hematology</h6>
|
||||||
<p class="small text-muted">Blood cell counts, coagulation studies</p>
|
<p class="small text-muted">Blood cell counts, coagulation studies</p>
|
||||||
@ -406,14 +414,18 @@
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
<!-- Specimen Types -->
|
<!-- Specimen Types -->
|
||||||
<div class="card mb-4">
|
<div class="panel panel-inverse" data-sortable-id="index-3">
|
||||||
<div class="card-header">
|
<div class="panel-heading">
|
||||||
<h5 class="card-title">
|
<h4 class="panel-title"><i class="fas fa-bolt me-2"></i> {{ _("Common Specimen Types")}}</h4>
|
||||||
<i class="fas fa-vial me-2"></i>
|
{# <div class="panel-heading-btn">#}
|
||||||
Common Specimen Types
|
{# <a href="javascript:;" class="btn btn-xs btn-icon btn-default" data-toggle="panel-expand"><i class="fa fa-expand"></i></a>#}
|
||||||
</h5>
|
{# <a href="javascript:;" class="btn btn-xs btn-icon btn-success" data-toggle="panel-reload"><i class="fa fa-redo"></i></a>#}
|
||||||
</div>
|
{# <a href="javascript:;" class="btn btn-xs btn-icon btn-warning" data-toggle="panel-collapse"><i class="fa fa-minus"></i></a>#}
|
||||||
<div class="card-body">
|
{# <a href="javascript:;" class="btn btn-xs btn-icon btn-danger" data-toggle="panel-remove"><i class="fa fa-times"></i></a>#}
|
||||||
|
{##}
|
||||||
|
{# </div>#}
|
||||||
|
</div>
|
||||||
|
<div class="panel-body">
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="col-6">
|
<div class="col-6">
|
||||||
<ul class="list-unstyled small">
|
<ul class="list-unstyled small">
|
||||||
@ -436,14 +448,18 @@
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
<!-- Quick Actions -->
|
<!-- Quick Actions -->
|
||||||
<div class="card">
|
<div class="panel panel-inverse" data-sortable-id="index-4">
|
||||||
<div class="card-header">
|
<div class="panel-heading">
|
||||||
<h5 class="card-title">
|
<h4 class="panel-title"><i class="fas fa-bolt me-2"></i> {{ _("Quick Actions")}}</h4>
|
||||||
<i class="fas fa-bolt me-2"></i>
|
{# <div class="panel-heading-btn">#}
|
||||||
Quick Actions
|
{# <a href="javascript:;" class="btn btn-xs btn-icon btn-default" data-toggle="panel-expand"><i class="fa fa-expand"></i></a>#}
|
||||||
</h5>
|
{# <a href="javascript:;" class="btn btn-xs btn-icon btn-success" data-toggle="panel-reload"><i class="fa fa-redo"></i></a>#}
|
||||||
</div>
|
{# <a href="javascript:;" class="btn btn-xs btn-icon btn-warning" data-toggle="panel-collapse"><i class="fa fa-minus"></i></a>#}
|
||||||
<div class="card-body">
|
{# <a href="javascript:;" class="btn btn-xs btn-icon btn-danger" data-toggle="panel-remove"><i class="fa fa-times"></i></a>#}
|
||||||
|
{##}
|
||||||
|
{# </div>#}
|
||||||
|
</div>
|
||||||
|
<div class="panel-body">
|
||||||
<div class="d-grid gap-2">
|
<div class="d-grid gap-2">
|
||||||
<button type="button" class="btn btn-outline-primary" onclick="generateCode()">
|
<button type="button" class="btn btn-outline-primary" onclick="generateCode()">
|
||||||
<i class="fas fa-barcode me-2"></i>Generate Test Code
|
<i class="fas fa-barcode me-2"></i>Generate Test Code
|
||||||
|
|||||||
@ -169,29 +169,29 @@
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
<!-- Tests Table -->
|
<!-- Tests Table -->
|
||||||
<div class="card">
|
|
||||||
<div class="card-header">
|
<div class="panel panel-inverse" data-sortable-id="index-1">
|
||||||
<div class="d-flex align-items-center">
|
<div class="panel-heading">
|
||||||
<h4 class="card-title mb-0">
|
<h4 class="panel-title"><i class="fas fa-list me-2"></i> {{ _("Lab Tests")}}
|
||||||
<i class="fas fa-list me-2"></i>
|
{% if object_list %}
|
||||||
Lab Tests
|
<span class="badge bg-primary ms-2">{{ object_list|length }}</span>
|
||||||
{% if object_list %}
|
{% endif %} </h4>
|
||||||
<span class="badge bg-secondary ms-2">{{ object_list|length }}</span>
|
<div class="panel-heading-btn">
|
||||||
{% endif %}
|
|
||||||
</h4>
|
<button type="button" class="btn btn-xs btn-outline-primary me-2" onclick="selectAll()">
|
||||||
<div class="ms-auto">
|
|
||||||
<div class="btn-group btn-group-sm">
|
|
||||||
<button type="button" class="btn btn-outline-secondary" onclick="selectAll()">
|
|
||||||
<i class="fas fa-check-square me-1"></i>Select All
|
<i class="fas fa-check-square me-1"></i>Select All
|
||||||
</button>
|
</button>
|
||||||
<button type="button" class="btn btn-outline-secondary" onclick="clearSelection()">
|
<button type="button" class="btn btn-xs btn-outline-danger me-2" onclick="clearSelection()">
|
||||||
<i class="fas fa-square me-1"></i>Clear
|
<i class="fas fa-square me-1"></i>Clear
|
||||||
</button>
|
</button>
|
||||||
</div>
|
<a href="javascript:;" class="btn btn-xs btn-icon btn-default" data-toggle="panel-expand"><i class="fa fa-expand"></i></a>
|
||||||
</div>
|
{# <a href="javascript:;" class="btn btn-xs btn-icon btn-success" data-toggle="panel-reload"><i class="fa fa-redo"></i></a>#}
|
||||||
</div>
|
{# <a href="javascript:;" class="btn btn-xs btn-icon btn-warning" data-toggle="panel-collapse"><i class="fa fa-minus"></i></a>#}
|
||||||
</div>
|
{# <a href="javascript:;" class="btn btn-xs btn-icon btn-danger" data-toggle="panel-remove"><i class="fa fa-times"></i></a>#}
|
||||||
<div class="card-body p-0">
|
{##}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="panel-body">
|
||||||
{% if object_list %}
|
{% if object_list %}
|
||||||
<div class="table-responsive">
|
<div class="table-responsive">
|
||||||
<table class="table table-hover mb-0">
|
<table class="table table-hover mb-0">
|
||||||
@ -222,30 +222,47 @@
|
|||||||
<div class="flex-grow-1">
|
<div class="flex-grow-1">
|
||||||
<div class="fw-bold">
|
<div class="fw-bold">
|
||||||
<a href="{% url 'laboratory:lab_test_detail' test.pk %}" class="text-decoration-none">
|
<a href="{% url 'laboratory:lab_test_detail' test.pk %}" class="text-decoration-none">
|
||||||
{{ test.name }}
|
{{ test.test_name }}
|
||||||
</a>
|
</a>
|
||||||
</div>
|
</div>
|
||||||
{% if test.description %}
|
{% if test.test_description %}
|
||||||
<div class="small text-muted">{{ test.description|truncatewords:8 }}</div>
|
<div class="small text-muted">{{ test.test_description|truncatewords:8 }}</div>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</td>
|
</td>
|
||||||
<td>
|
<td>
|
||||||
<span class="badge bg-light text-dark">{{ test.code }}</span>
|
<span class="badge bg-light text-dark">{{ test.test_code }}</span>
|
||||||
</td>
|
</td>
|
||||||
<td>
|
<td>
|
||||||
<span class="badge bg-{% if test.category == 'hematology' %}danger{% elif test.category == 'chemistry' %}primary{% elif test.category == 'microbiology' %}warning{% elif test.category == 'molecular' %}success{% else %}secondary{% endif %}">
|
|
||||||
{{ test.get_category_display }}
|
<span class="badge bg-{% if test.test_category == 'HEMATOLOGY' %}danger{% elif test.test_category == 'CHEMISTRY' %}primary{% elif test.test_category == 'MICROBIOLOGY' %}warning{% elif test.test_category == 'MOLECULAR' %}success{% else %}secondary{% endif %}">
|
||||||
|
{{ test.get_test_category_display }}
|
||||||
</span>
|
</span>
|
||||||
</td>
|
</td>
|
||||||
<td>
|
<td>
|
||||||
<div class="d-flex align-items-center">
|
<div class="d-flex align-items-center">
|
||||||
<i class="fas fa-{% if test.specimen_type == 'blood' %}tint text-danger{% elif test.specimen_type == 'urine' %}flask text-warning{% elif test.specimen_type == 'sputum' %}lungs text-info{% else %}vial text-secondary{% endif %} me-2"></i>
|
<i class="fas
|
||||||
{{ test.get_specimen_type_display }}
|
fa-{% if test.specimen_type == 'BLOOD' %}tint text-danger
|
||||||
|
{% elif test.specimen_type == 'URINE' %}flask text-warning
|
||||||
|
{% elif test.specimen_type == 'SPUTUM' %}lungs text-info
|
||||||
|
{% elif test.specimen_type == 'PLASMA' %}tint text-yellow
|
||||||
|
{% elif test.specimen_type == 'SERUM' %}bottle-droplet text-info
|
||||||
|
{% elif test.specimen_type == 'STOOL' %}poop text-cyan
|
||||||
|
{% elif test.specimen_type == 'CSF' %}eye text-primary
|
||||||
|
{% elif test.specimen_type == 'SWAB' %}hand text-secondary
|
||||||
|
{% elif test.specimen_type == 'TISSUE' %}microscope text-green
|
||||||
|
{% elif test.specimen_type == 'FLUID' %}droplet text-info
|
||||||
|
{% elif test.specimen_type == 'SALIVA' %}lungs text-info
|
||||||
|
{% else %}vial-vertical text-secondary{% endif %} me-1"></i>
|
||||||
|
<span class="fw-bold">{{ test.get_specimen_type_display }}</span>
|
||||||
|
</div>
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
<div class="d-flex align-items-center">
|
||||||
|
{{ test.get_department_display }}
|
||||||
</div>
|
</div>
|
||||||
</td>
|
</td>
|
||||||
<td>{{ test.department.name }}</td>
|
|
||||||
<td>
|
<td>
|
||||||
{% if test.turnaround_time %}
|
{% if test.turnaround_time %}
|
||||||
<span class="badge bg-{% if test.turnaround_time <= 2 %}success{% elif test.turnaround_time <= 24 %}warning{% else %}info{% endif %}">
|
<span class="badge bg-{% if test.turnaround_time <= 2 %}success{% elif test.turnaround_time <= 24 %}warning{% else %}info{% endif %}">
|
||||||
@ -257,7 +274,7 @@
|
|||||||
</td>
|
</td>
|
||||||
<td>
|
<td>
|
||||||
{% if test.cost %}
|
{% if test.cost %}
|
||||||
${{ test.cost|floatformat:2 }}
|
<span class="symbol">ê</span>{{ test.cost|floatformat:'2g' }}
|
||||||
{% else %}
|
{% else %}
|
||||||
<span class="text-muted">-</span>
|
<span class="text-muted">-</span>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
@ -284,16 +301,16 @@
|
|||||||
title="View Details">
|
title="View Details">
|
||||||
<i class="fas fa-eye"></i>
|
<i class="fas fa-eye"></i>
|
||||||
</a>
|
</a>
|
||||||
<a href="{% url 'laboratory:lab_test_create' test.pk %}"
|
<a href="{% url 'laboratory:lab_test_update' test.pk %}"
|
||||||
class="btn btn-outline-secondary"
|
class="btn btn-outline-secondary"
|
||||||
title="Edit">
|
title="Edit">
|
||||||
<i class="fas fa-edit"></i>
|
<i class="fas fa-edit"></i>
|
||||||
</a>
|
</a>
|
||||||
<a href="{% url 'laboratory:lab_test_confirm_delete' test.pk %}"
|
{# <a href="{% url 'laboratory:lab_test_confirm_delete' test.pk %}" #}
|
||||||
class="btn btn-outline-danger"
|
{# class="btn btn-outline-danger" #}
|
||||||
title="Delete">
|
{# title="Delete">#}
|
||||||
<i class="fas fa-trash"></i>
|
{# <i class="fas fa-trash"></i>#}
|
||||||
</a>
|
{# </a>#}
|
||||||
</div>
|
</div>
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
@ -304,38 +321,7 @@
|
|||||||
|
|
||||||
<!-- Pagination -->
|
<!-- Pagination -->
|
||||||
{% if is_paginated %}
|
{% if is_paginated %}
|
||||||
<div class="card-footer">
|
{% include 'partial/pagination.html' %}
|
||||||
<div class="d-flex justify-content-between align-items-center">
|
|
||||||
<div>
|
|
||||||
Showing {{ page_obj.start_index }} to {{ page_obj.end_index }} of {{ paginator.count }} tests
|
|
||||||
</div>
|
|
||||||
<nav>
|
|
||||||
<ul class="pagination pagination-sm mb-0">
|
|
||||||
{% if page_obj.has_previous %}
|
|
||||||
<li class="page-item">
|
|
||||||
<a class="page-link" href="?page=1{% if request.GET.search %}&search={{ request.GET.search }}{% endif %}{% if request.GET.category %}&category={{ request.GET.category }}{% endif %}">First</a>
|
|
||||||
</li>
|
|
||||||
<li class="page-item">
|
|
||||||
<a class="page-link" href="?page={{ page_obj.previous_page_number }}{% if request.GET.search %}&search={{ request.GET.search }}{% endif %}{% if request.GET.category %}&category={{ request.GET.category }}{% endif %}">Previous</a>
|
|
||||||
</li>
|
|
||||||
{% endif %}
|
|
||||||
|
|
||||||
<li class="page-item active">
|
|
||||||
<span class="page-link">{{ page_obj.number }}</span>
|
|
||||||
</li>
|
|
||||||
|
|
||||||
{% if page_obj.has_next %}
|
|
||||||
<li class="page-item">
|
|
||||||
<a class="page-link" href="?page={{ page_obj.next_page_number }}{% if request.GET.search %}&search={{ request.GET.search }}{% endif %}{% if request.GET.category %}&category={{ request.GET.category }}{% endif %}">Next</a>
|
|
||||||
</li>
|
|
||||||
<li class="page-item">
|
|
||||||
<a class="page-link" href="?page={{ paginator.num_pages }}{% if request.GET.search %}&search={{ request.GET.search }}{% endif %}{% if request.GET.category %}&category={{ request.GET.category }}{% endif %}">Last</a>
|
|
||||||
</li>
|
|
||||||
{% endif %}
|
|
||||||
</ul>
|
|
||||||
</nav>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
|
||||||
<!-- Bulk Actions -->
|
<!-- Bulk Actions -->
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user