300 lines
14 KiB
HTML
300 lines
14 KiB
HTML
{% extends "base.html" %}
|
|
{% load i18n static patient_tags %}
|
|
|
|
{% block title %}{% trans "Encounter Details" %} - {{ block.super }}{% endblock %}
|
|
|
|
{% block content %}
|
|
<div class="container-fluid">
|
|
<!-- Page Header -->
|
|
<div class="d-flex justify-content-between align-items-center mb-4">
|
|
<h1 class="h3 mb-0">
|
|
<i class="fa fa-stethoscope me-2"></i>{% trans "Clinical Encounter" %}
|
|
</h1>
|
|
<div class="btn-group">
|
|
<a href="{% url 'clinic:encounter-update' encounter.pk %}" class="btn btn-warning">
|
|
<i class="fa fa-edit me-1"></i>{% trans "Edit" %}
|
|
</a>
|
|
<a href="{% url 'clinic:encounter-list' %}" class="btn btn-secondary">
|
|
<i class="fa fa-arrow-left me-1"></i>{% trans "Back to List" %}
|
|
</a>
|
|
</div>
|
|
</div>
|
|
|
|
{% include "includes/messages.html" %}
|
|
|
|
<div class="row">
|
|
<!-- Main Content -->
|
|
<div class="col-md-8">
|
|
<!-- Encounter Information -->
|
|
<div class="card mb-4">
|
|
<div class="card-header">
|
|
<h5 class="card-title mb-0">{% trans "Encounter Information" %}</h5>
|
|
</div>
|
|
<div class="card-body">
|
|
<div class="row">
|
|
<div class="col-md-6">
|
|
<dl class="row">
|
|
<dt class="col-sm-5">{% trans "Patient" %}:</dt>
|
|
<dd class="col-sm-7">
|
|
<a href="{% url 'core:patient-detail' encounter.patient.pk %}">
|
|
{% patient_name encounter.patient %}
|
|
</a>
|
|
</dd>
|
|
|
|
<dt class="col-sm-5">{% trans "Date" %}:</dt>
|
|
<dd class="col-sm-7">{{ encounter.encounter_datetime|date:"Y-m-d" }}</dd>
|
|
|
|
<dt class="col-sm-5">{% trans "Service" %}:</dt>
|
|
<dd class="col-sm-7">
|
|
<span class="badge bg-primary">{{ encounter.service.name }}</span>
|
|
</dd>
|
|
|
|
<dt class="col-sm-5">{% trans "Provider" %}:</dt>
|
|
<dd class="col-sm-7">{{ encounter.provider.get_full_name }}</dd>
|
|
</dl>
|
|
</div>
|
|
<div class="col-md-6">
|
|
<dl class="row">
|
|
|
|
<dt class="col-sm-5">{% trans "Status" %}:</dt>
|
|
<dd class="col-sm-7">
|
|
<span class="badge bg-{% if encounter.status == 'COMPLETED' %}success{% elif encounter.status == 'IN_PROGRESS' %}warning{% else %}secondary{% endif %}">
|
|
{{ encounter.get_status_display }}
|
|
</span>
|
|
</dd>
|
|
|
|
{% if encounter.room %}
|
|
<dt class="col-sm-5">{% trans "Room" %}:</dt>
|
|
<dd class="col-sm-7">{{ encounter.room.name }}</dd>
|
|
{% endif %}
|
|
|
|
<dt class="col-sm-5">{% trans "Duration" %}:</dt>
|
|
<dd class="col-sm-7">{{ encounter.duration_minutes }} {% trans "minutes" %}</dd>
|
|
</dl>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<!-- Vitals -->
|
|
{% if encounter.vitals %}
|
|
<div class="card mb-4">
|
|
<div class="card-header">
|
|
<h5 class="card-title mb-0">
|
|
<i class="fa fa-heartbeat me-2"></i>{% trans "Vital Signs" %}
|
|
</h5>
|
|
</div>
|
|
<div class="card-body">
|
|
<div class="row">
|
|
{% if encounter.vitals.temperature %}
|
|
<div class="col-md-3 mb-3">
|
|
<div class="text-center">
|
|
<i class="fa fa-thermometer-half fa-2x text-danger mb-2"></i>
|
|
<h4 class="mb-0">{{ encounter.vitals.temperature }}°C</h4>
|
|
<small class="text-muted">{% trans "Temperature" %}</small>
|
|
</div>
|
|
</div>
|
|
{% endif %}
|
|
|
|
{% if encounter.vitals.blood_pressure %}
|
|
<div class="col-md-3 mb-3">
|
|
<div class="text-center">
|
|
<i class="fa fa-heart fa-2x text-danger mb-2"></i>
|
|
<h4 class="mb-0">{{ encounter.vitals.blood_pressure }}</h4>
|
|
<small class="text-muted">{% trans "Blood Pressure" %}</small>
|
|
</div>
|
|
</div>
|
|
{% endif %}
|
|
|
|
{% if encounter.vitals.heart_rate %}
|
|
<div class="col-md-3 mb-3">
|
|
<div class="text-center">
|
|
<i class="fa fa-heartbeat fa-2x text-primary mb-2"></i>
|
|
<h4 class="mb-0">{{ encounter.vitals.heart_rate }} bpm</h4>
|
|
<small class="text-muted">{% trans "Heart Rate" %}</small>
|
|
</div>
|
|
</div>
|
|
{% endif %}
|
|
|
|
{% if encounter.vitals.weight %}
|
|
<div class="col-md-3 mb-3">
|
|
<div class="text-center">
|
|
<i class="fa fa-weight fa-2x text-success mb-2"></i>
|
|
<h4 class="mb-0">{{ encounter.vitals.weight }} kg</h4>
|
|
<small class="text-muted">{% trans "Weight" %}</small>
|
|
</div>
|
|
</div>
|
|
{% endif %}
|
|
|
|
{% if encounter.vitals.height %}
|
|
<div class="col-md-3 mb-3">
|
|
<div class="text-center">
|
|
<i class="fa fa-ruler-vertical fa-2x text-info mb-2"></i>
|
|
<h4 class="mb-0">{{ encounter.vitals.height }} cm</h4>
|
|
<small class="text-muted">{% trans "Height" %}</small>
|
|
</div>
|
|
</div>
|
|
{% endif %}
|
|
|
|
{% if encounter.vitals.oxygen_saturation %}
|
|
<div class="col-md-3 mb-3">
|
|
<div class="text-center">
|
|
<i class="fa fa-lungs fa-2x text-primary mb-2"></i>
|
|
<h4 class="mb-0">{{ encounter.vitals.oxygen_saturation }}%</h4>
|
|
<small class="text-muted">{% trans "O2 Saturation" %}</small>
|
|
</div>
|
|
</div>
|
|
{% endif %}
|
|
</div>
|
|
</div>
|
|
</div>
|
|
{% endif %}
|
|
|
|
<!-- Chief Complaint -->
|
|
{% if encounter.chief_complaint %}
|
|
<div class="card mb-4">
|
|
<div class="card-header">
|
|
<h5 class="card-title mb-0">{% trans "Chief Complaint" %}</h5>
|
|
</div>
|
|
<div class="card-body">
|
|
<p class="mb-0">{{ encounter.chief_complaint }}</p>
|
|
</div>
|
|
</div>
|
|
{% endif %}
|
|
|
|
<!-- Assessment -->
|
|
{% if encounter.assessment %}
|
|
<div class="card mb-4">
|
|
<div class="card-header">
|
|
<h5 class="card-title mb-0">{% trans "Assessment" %}</h5>
|
|
</div>
|
|
<div class="card-body">
|
|
<p class="mb-0">{{ encounter.assessment }}</p>
|
|
</div>
|
|
</div>
|
|
{% endif %}
|
|
|
|
<!-- Treatment Plan -->
|
|
{% if encounter.treatment_plan %}
|
|
<div class="card mb-4">
|
|
<div class="card-header">
|
|
<h5 class="card-title mb-0">{% trans "Treatment Plan" %}</h5>
|
|
</div>
|
|
<div class="card-body">
|
|
<p class="mb-0">{{ encounter.treatment_plan }}</p>
|
|
</div>
|
|
</div>
|
|
{% endif %}
|
|
|
|
<!-- Notes -->
|
|
{% if encounter.notes %}
|
|
<div class="card mb-4">
|
|
<div class="card-header">
|
|
<h5 class="card-title mb-0">{% trans "Additional Notes" %}</h5>
|
|
</div>
|
|
<div class="card-body">
|
|
<p class="mb-0">{{ encounter.notes }}</p>
|
|
</div>
|
|
</div>
|
|
{% endif %}
|
|
</div>
|
|
|
|
<!-- Sidebar -->
|
|
<div class="col-md-4">
|
|
<!-- Related Documents -->
|
|
<div class="card mb-4">
|
|
<div class="card-header d-flex justify-content-between align-items-center">
|
|
<h5 class="card-title mb-0">{% trans "Clinical Notes" %}</h5>
|
|
<a href="{% url 'documents:note-create' %}?encounter={{ encounter.pk }}" class="btn btn-sm btn-primary">
|
|
<i class="fa fa-plus"></i>
|
|
</a>
|
|
</div>
|
|
<div class="card-body">
|
|
{% if encounter.note_set.all %}
|
|
<div class="list-group list-group-flush">
|
|
{% for note in encounter.note_set.all %}
|
|
<a href="{% url 'documents:note-detail' note.pk %}" class="list-group-item list-group-item-action">
|
|
<div class="d-flex justify-content-between align-items-start">
|
|
<div>
|
|
<strong>{{ note.title }}</strong>
|
|
<br>
|
|
<small class="text-muted">{{ note.get_category_display }}</small>
|
|
</div>
|
|
{% if note.is_locked %}
|
|
<i class="fa fa-lock text-danger"></i>
|
|
{% endif %}
|
|
</div>
|
|
</a>
|
|
{% endfor %}
|
|
</div>
|
|
{% else %}
|
|
<p class="text-muted mb-0">{% trans "No clinical notes yet." %}</p>
|
|
{% endif %}
|
|
</div>
|
|
</div>
|
|
|
|
<!-- Related Assessments -->
|
|
<div class="card mb-4">
|
|
<div class="card-header d-flex justify-content-between align-items-center">
|
|
<h5 class="card-title mb-0">{% trans "Assessments" %}</h5>
|
|
<a href="{% url 'clinic:assessment-create' %}?encounter={{ encounter.pk }}" class="btn btn-sm btn-primary">
|
|
<i class="fa fa-plus"></i>
|
|
</a>
|
|
</div>
|
|
<div class="card-body">
|
|
{% if encounter.assessment_set.all %}
|
|
<div class="list-group list-group-flush">
|
|
{% for assessment in encounter.assessment_set.all %}
|
|
<a href="{% url 'clinic:assessment-detail' assessment.pk %}" class="list-group-item list-group-item-action">
|
|
<div>
|
|
<strong>{{ assessment.get_assessment_type_display }}</strong>
|
|
<br>
|
|
<small class="text-muted">{{ assessment.assessment_date|date:"Y-m-d" }}</small>
|
|
</div>
|
|
</a>
|
|
{% endfor %}
|
|
</div>
|
|
{% else %}
|
|
<p class="text-muted mb-0">{% trans "No assessments yet." %}</p>
|
|
{% endif %}
|
|
</div>
|
|
</div>
|
|
|
|
<!-- Follow-up -->
|
|
{% if encounter.follow_up_date %}
|
|
<div class="card mb-4">
|
|
<div class="card-header">
|
|
<h5 class="card-title mb-0">{% trans "Follow-up" %}</h5>
|
|
</div>
|
|
<div class="card-body">
|
|
<div class="text-center">
|
|
<i class="fa fa-calendar-check fa-3x text-primary mb-3"></i>
|
|
<h5>{{ encounter.follow_up_date|date:"Y-m-d" }}</h5>
|
|
{% if encounter.follow_up_notes %}
|
|
<p class="text-muted mb-0">{{ encounter.follow_up_notes }}</p>
|
|
{% endif %}
|
|
</div>
|
|
</div>
|
|
</div>
|
|
{% endif %}
|
|
|
|
<!-- Metadata -->
|
|
<div class="card">
|
|
<div class="card-header">
|
|
<h5 class="card-title mb-0">{% trans "Metadata" %}</h5>
|
|
</div>
|
|
<div class="card-body">
|
|
<dl class="row mb-0">
|
|
<dt class="col-sm-6">{% trans "Created" %}:</dt>
|
|
<dd class="col-sm-6">{{ encounter.created_at|date:"Y-m-d H:i" }}</dd>
|
|
|
|
<dt class="col-sm-6">{% trans "Updated" %}:</dt>
|
|
<dd class="col-sm-6">{{ encounter.updated_at|date:"Y-m-d H:i" }}</dd>
|
|
</dl>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
{% endblock %}
|