hospital-management/templates/emr/encounter_detail.html
2025-08-12 13:33:25 +03:00

387 lines
18 KiB
HTML

{% extends "base.html" %}
{% load static %}
{% block title %}Encounter Details - {{ block.super }}{% endblock %}
{% block content %}
<div class="container-fluid">
<div class="row mb-3">
<div class="col">
<h1>Encounter Details</h1>
<p class="text-muted">{{ encounter.patient.get_full_name }} • {{ encounter.start_datetime|date:"M d, Y H:i" }}</p>
</div>
<div class="col-auto">
<div class="btn-group">
{% if encounter.status == 'IN_PROGRESS' %}
<button class="btn btn-success"
hx-post="{% url 'emr:complete_encounter' encounter.id %}"
hx-confirm="Complete this encounter?"
hx-swap="none">
<i class="fas fa-check me-1"></i>Complete
</button>
{% endif %}
<button class="btn btn-outline-primary">
<i class="fas fa-edit me-1"></i>Edit
</button>
<button class="btn btn-outline-secondary">
<i class="fas fa-print me-1"></i>Print
</button>
</div>
</div>
</div>
<div class="row">
<!-- Encounter Information -->
<div class="col-lg-6">
<div class="card mb-3">
<div class="card-header">
<h5 class="mb-0"><i class="fas fa-notes-medical me-2"></i>Encounter Information</h5>
</div>
<div class="card-body">
<table class="table table-sm">
<tr><td>Start Time</td><td>{{ encounter.start_datetime|date:"M d, Y H:i" }}</td></tr>
{% if encounter.end_datetime %}
<tr><td>End Time</td><td>{{ encounter.end_datetime|date:"M d, Y H:i" }}</td></tr>
<tr><td>Duration</td><td>{{ encounter.duration_minutes }} minutes</td></tr>
{% endif %}
<tr><td>Type</td><td>{{ encounter.get_encounter_type_display }}</td></tr>
<tr><td>Status</td><td>
{% if encounter.status == 'SCHEDULED' %}
<span class="badge bg-info">{{ encounter.get_status_display }}</span>
{% elif encounter.status == 'ARRIVED' %}
<span class="badge bg-warning">{{ encounter.get_status_display }}</span>
{% elif encounter.status == 'TRIAGED' %}
<span class="badge bg-primary">{{ encounter.get_status_display }}</span>
{% elif encounter.status == 'IN_PROGRESS' %}
<span class="badge bg-success">{{ encounter.get_status_display }}</span>
{% elif encounter.status == 'ON_HOLD' %}
<span class="badge bg-secondary">{{ encounter.get_status_display }}</span>
{% elif encounter.status == 'FINISHED' %}
<span class="badge bg-success">{{ encounter.get_status_display }}</span>
{% elif encounter.status == 'CANCELLED' %}
<span class="badge bg-danger">{{ encounter.get_status_display }}</span>
{% elif encounter.status == 'NO_SHOW' %}
<span class="badge bg-secondary">{{ encounter.get_status_display }}</span>
{% endif %}
</td></tr>
<tr><td>Priority</td><td>{{ encounter.get_priority_display }}</td></tr>
<tr><td>Documentation Complete</td><td>
{% if encounter.documentation_complete %}
<span class="badge bg-success">Yes</span>
{% else %}
<span class="badge bg-warning">No</span>
{% endif %}
</td></tr>
</table>
</div>
</div>
{% if encounter.chief_complaint %}
<div class="card mb-3">
<div class="card-header">
<h5 class="mb-0"><i class="fas fa-stethoscope me-2"></i>Chief Complaint</h5>
</div>
<div class="card-body">
<p>{{ encounter.chief_complaint }}</p>
</div>
</div>
{% endif %}
{% if encounter.history_of_present_illness %}
<div class="card mb-3">
<div class="card-header">
<h5 class="mb-0"><i class="fas fa-history me-2"></i>History of Present Illness</h5>
</div>
<div class="card-body">
<p>{{ encounter.history_of_present_illness|linebreaks }}</p>
</div>
</div>
{% endif %}
{% if encounter.assessment_and_plan %}
<div class="card mb-3">
<div class="card-header">
<h5 class="mb-0"><i class="fas fa-clipboard-list me-2"></i>Assessment & Plan</h5>
</div>
<div class="card-body">
<p>{{ encounter.assessment_and_plan|linebreaks }}</p>
</div>
</div>
{% endif %}
</div>
<!-- Patient & Provider Information -->
<div class="col-lg-6">
<div class="card mb-3">
<div class="card-header">
<h5 class="mb-0"><i class="fas fa-user me-2"></i>Patient Information</h5>
</div>
<div class="card-body">
<table class="table table-sm">
<tr><td>Name</td><td><strong>{{ encounter.patient.get_full_name }}</strong></td></tr>
<tr><td>MRN</td><td>{{ encounter.patient.mrn }}</td></tr>
<tr><td>Date of Birth</td><td>{{ encounter.patient.date_of_birth|date:"M d, Y" }}</td></tr>
<tr><td>Age</td><td>{{ encounter.patient.age }}</td></tr>
<tr><td>Gender</td><td>{{ encounter.patient.get_gender_display }}</td></tr>
<tr><td>Phone</td><td>{{ encounter.patient.phone_number|default:"Not provided" }}</td></tr>
<tr><td>Email</td><td>{{ encounter.patient.email|default:"Not provided" }}</td></tr>
</table>
<div class="mt-2">
<a href="{% url 'patients:patient_detail' encounter.patient.id %}" class="btn btn-sm btn-outline-primary">
<i class="fas fa-eye me-1"></i>View Patient
</a>
</div>
</div>
</div>
{% if encounter.provider %}
<div class="card mb-3">
<div class="card-header">
<h5 class="mb-0"><i class="fas fa-user-md me-2"></i>Provider Information</h5>
</div>
<div class="card-body">
<table class="table table-sm">
<tr><td>Name</td><td><strong>{{ encounter.provider.get_full_name }}</strong></td></tr>
<tr><td>Role</td><td>{{ encounter.provider.get_role_display }}</td></tr>
<tr><td>Department</td><td>{{ encounter.provider.department|default:"Not specified" }}</td></tr>
<tr><td>Phone</td><td>{{ encounter.provider.phone_number|default:"Not provided" }}</td></tr>
<tr><td>Email</td><td>{{ encounter.provider.email|default:"Not provided" }}</td></tr>
</table>
</div>
</div>
{% endif %}
<!-- Quick Actions -->
<div class="card mb-3">
<div class="card-header">
<h5 class="mb-0"><i class="fas fa-bolt me-2"></i>Quick Actions</h5>
</div>
<div class="card-body">
<div class="d-grid gap-2">
<button class="btn btn-outline-primary"
hx-get="{% url 'emr:add_vital_signs' encounter.id %}"
hx-target="#vital-signs-modal .modal-content"
data-bs-toggle="modal"
data-bs-target="#vital-signs-modal">
<i class="fas fa-heartbeat me-2"></i>Add Vital Signs
</button>
<button class="btn btn-outline-info"
hx-get="{% url 'emr:clinical_note_create' encounter.id %}"
hx-target="#note-modal .modal-content"
data-bs-toggle="modal"
data-bs-target="#note-modal">
<i class="fas fa-sticky-note me-2"></i>Add Clinical Note
</button>
<button class="btn btn-outline-success"
hx-get="{% url 'emr:add_problem' encounter.id %}"
hx-target="#problem-modal .modal-content"
data-bs-toggle="modal"
data-bs-target="#problem-modal">
<i class="fas fa-plus me-2"></i>Add Problem
</button>
</div>
</div>
</div>
</div>
</div>
<!-- Vital Signs Section -->
{% if vital_signs %}
<div class="row">
<div class="col-12">
<div class="card mb-3">
<div class="card-header">
<h5 class="mb-0"><i class="fas fa-heartbeat me-2"></i>Vital Signs</h5>
</div>
<div class="card-body">
<div class="table-responsive">
<table class="table table-sm">
<thead>
<tr>
<th>Time</th>
<th>Temperature</th>
<th>Blood Pressure</th>
<th>Heart Rate</th>
<th>Respiratory Rate</th>
<th>O2 Saturation</th>
<th>Measured By</th>
</tr>
</thead>
<tbody>
{% for vitals in vital_signs %}
<tr>
<td>{{ vitals.measured_datetime|date:"M d H:i" }}</td>
<td>
{% if vitals.temperature %}
{{ vitals.temperature }}°{{ vitals.temperature_unit }}
{% else %}
<span class="text-muted">-</span>
{% endif %}
</td>
<td>
{% if vitals.systolic_bp and vitals.diastolic_bp %}
{{ vitals.systolic_bp }}/{{ vitals.diastolic_bp }}
{% else %}
<span class="text-muted">-</span>
{% endif %}
</td>
<td>
{% if vitals.heart_rate %}
{{ vitals.heart_rate }} bpm
{% else %}
<span class="text-muted">-</span>
{% endif %}
</td>
<td>
{% if vitals.respiratory_rate %}
{{ vitals.respiratory_rate }} /min
{% else %}
<span class="text-muted">-</span>
{% endif %}
</td>
<td>
{% if vitals.oxygen_saturation %}
{{ vitals.oxygen_saturation }}%
{% else %}
<span class="text-muted">-</span>
{% endif %}
</td>
<td>{{ vitals.measured_by.get_full_name }}</td>
</tr>
{% endfor %}
</tbody>
</table>
</div>
</div>
</div>
</div>
</div>
{% endif %}
<!-- Clinical Notes Section -->
{% if clinical_notes %}
<div class="row">
<div class="col-12">
<div class="card mb-3">
<div class="card-header">
<h5 class="mb-0"><i class="fas fa-sticky-note me-2"></i>Clinical Notes</h5>
</div>
<div class="card-body">
{% for note in clinical_notes %}
<div class="border-bottom pb-3 mb-3">
<div class="d-flex justify-content-between align-items-start">
<div>
<h6>{{ note.title }}</h6>
<small class="text-muted">
{{ note.get_note_type_display }} •
{{ note.note_datetime|date:"M d, Y H:i" }} •
{{ note.author.get_full_name }}
</small>
</div>
<span class="badge {% if note.status == 'COMPLETED' %}bg-success{% elif note.status == 'DRAFT' %}bg-warning{% else %}bg-info{% endif %}">
{{ note.get_status_display }}
</span>
</div>
<div class="mt-2">
<p>{{ note.content|truncatewords:50|linebreaks }}</p>
</div>
</div>
{% endfor %}
</div>
</div>
</div>
</div>
{% endif %}
<!-- Problems Section -->
{% if problems %}
<div class="row">
<div class="col-12">
<div class="card mb-3">
<div class="card-header">
<h5 class="mb-0"><i class="fas fa-list me-2"></i>Problems Identified</h5>
</div>
<div class="card-body">
<div class="table-responsive">
<table class="table table-sm">
<thead>
<tr>
<th>Problem</th>
<th>Type</th>
<th>Priority</th>
<th>Status</th>
<th>Diagnosed By</th>
<th>Date</th>
</tr>
</thead>
<tbody>
{% for problem in problems %}
<tr>
<td>
<strong>{{ problem.problem_name }}</strong>
{% if problem.problem_code %}
<br><small class="text-muted">{{ problem.problem_code }}</small>
{% endif %}
</td>
<td>{{ problem.get_problem_type_display }}</td>
<td>
{% if problem.priority == 'HIGH' %}
<span class="badge bg-danger">High</span>
{% elif problem.priority == 'MEDIUM' %}
<span class="badge bg-warning">Medium</span>
{% else %}
<span class="badge bg-info">Low</span>
{% endif %}
</td>
<td>
{% if problem.status == 'ACTIVE' %}
<span class="badge bg-success">Active</span>
{% elif problem.status == 'RESOLVED' %}
<span class="badge bg-secondary">Resolved</span>
{% elif problem.status == 'INACTIVE' %}
<span class="badge bg-secondary">Inactive</span>
{% endif %}
</td>
<td>{{ problem.diagnosing_provider.get_full_name }}</td>
<td>{{ problem.onset_date|date:"M d, Y" }}</td>
</tr>
{% endfor %}
</tbody>
</table>
</div>
</div>
</div>
</div>
</div>
{% endif %}
</div>
<!-- Vital Signs Modal -->
<div class="modal fade" id="vital-signs-modal" tabindex="-1">
<div class="modal-dialog modal-lg">
<div class="modal-content">
<!-- Content loaded via HTMX -->
</div>
</div>
</div>
<!-- Note Modal -->
<div class="modal fade" id="note-modal" tabindex="-1">
<div class="modal-dialog modal-lg">
<div class="modal-content">
<!-- Content loaded via HTMX -->
</div>
</div>
</div>
<!-- Problem Modal -->
<div class="modal fade" id="problem-modal" tabindex="-1">
<div class="modal-dialog modal-lg">
<div class="modal-content">
<!-- Content loaded via HTMX -->
</div>
</div>
</div>
{% endblock %}