simple-lis/Views/Home/Index.cshtml
2025-10-29 17:15:51 +05:30

146 lines
6.4 KiB
Plaintext

@{
ViewData["Title"] = "Dashboard";
}
<div class="container-fluid">
<div class="row mb-4">
<div class="col-12">
<h1 class="display-4 mb-0">Dashboard</h1>
<p class="text-muted">Laboratory Information System - Real-time HL7 Message Processing</p>
</div>
</div>
<!-- Statistics Cards -->
<div class="row mb-4">
<div class="col-md-4 mb-3">
<div class="card text-white bg-primary">
<div class="card-body">
<div class="d-flex justify-content-between align-items-center">
<div>
<h6 class="card-title text-white-50 text-uppercase mb-1">Total Patients</h6>
<h2 class="mb-0">@ViewBag.TotalPatients</h2>
</div>
<div class="fs-1 opacity-50">
<i class="bi bi-people-fill"></i>
</div>
</div>
</div>
</div>
</div>
<div class="col-md-4 mb-3">
<div class="card text-white bg-success">
<div class="card-body">
<div class="d-flex justify-content-between align-items-center">
<div>
<h6 class="card-title text-white-50 text-uppercase mb-1">HL7 Messages</h6>
<h2 class="mb-0">@ViewBag.TotalMessages</h2>
</div>
<div class="fs-1 opacity-50">
<i class="bi bi-envelope-fill"></i>
</div>
</div>
</div>
</div>
</div>
<div class="col-md-4 mb-3">
<div class="card text-white bg-info">
<div class="card-body">
<div class="d-flex justify-content-between align-items-center">
<div>
<h6 class="card-title text-white-50 text-uppercase mb-1">Lab Observations</h6>
<h2 class="mb-0">@ViewBag.TotalObservations</h2>
</div>
<div class="fs-1 opacity-50">
<i class="bi bi-clipboard2-pulse-fill"></i>
</div>
</div>
</div>
</div>
</div>
</div>
<!-- Recent Messages -->
<div class="row">
<div class="col-12">
<div class="card">
<div class="card-header bg-white">
<h5 class="mb-0">Recent HL7 Messages</h5>
</div>
<div class="card-body">
@if (ViewBag.RecentMessages != null && ((IEnumerable<SimpleLIS.Models.Message>)ViewBag.RecentMessages).Any())
{
<div class="table-responsive">
<table class="table table-hover">
<thead>
<tr>
<th>Control ID</th>
<th>Message Type</th>
<th>Patient</th>
<th>Sending Facility</th>
<th>Timestamp</th>
<th>Observations</th>
</tr>
</thead>
<tbody>
@foreach (var message in (IEnumerable<SimpleLIS.Models.Message>)ViewBag.RecentMessages)
{
<tr>
<td><code>@message.ControlId</code></td>
<td><span class="badge bg-primary">@message.MessageType</span></td>
<td>@message.Patient.FirstName @message.Patient.LastName</td>
<td>@message.SendingFacility</td>
<td>@message.Timestamp.ToString("yyyy-MM-dd HH:mm:ss")</td>
<td><span class="badge bg-info">@message.Observations.Count tests</span></td>
</tr>
}
</tbody>
</table>
</div>
}
else
{
<div class="alert alert-info mb-0">
<strong>No messages yet.</strong> Start Mirth Connect and send HL7 messages to see them appear here!
</div>
}
</div>
<div class="card-footer bg-white">
<a asp-controller="Home" asp-action="Messages" class="btn btn-sm btn-primary">View All Messages</a>
</div>
</div>
</div>
</div>
<!-- Quick Actions -->
<div class="row mt-4">
<div class="col-12">
<div class="card">
<div class="card-header bg-white">
<h5 class="mb-0">Quick Actions</h5>
</div>
<div class="card-body">
<div class="row">
<div class="col-md-4 mb-2">
<a asp-controller="Home" asp-action="Patients" class="btn btn-outline-primary btn-lg w-100">
<i class="bi bi-people"></i> View All Patients
</a>
</div>
<div class="col-md-4 mb-2">
<a asp-controller="Home" asp-action="Messages" class="btn btn-outline-success btn-lg w-100">
<i class="bi bi-envelope"></i> View All Messages
</a>
</div>
<div class="col-md-4 mb-2">
<a asp-controller="Home" asp-action="Observations" class="btn btn-outline-info btn-lg w-100">
<i class="bi bi-clipboard2-pulse"></i> View Observations
</a>
</div>
</div>
</div>
</div>
</div>
</div>
</div>