Update halaman predispatch

This commit is contained in:
2026-07-24 15:06:00 +07:00
parent b4645e71de
commit dd4c8a4240
+425 -128
View File
@@ -77,12 +77,16 @@ body {
border-radius: 6px;
}
/* sembunyikan di layar */
.ttd-print-only {
display: none;
}
@keyframes blinkAnim {
0% { opacity: 1; }
50% { opacity: 0.4; }
100% { opacity: 1; }
}
/* ================= PRINT SETTING ================= */
@media print {
@@ -99,7 +103,10 @@ body {
.no-print {
display: none !important;
}
.ttd-print-only {
display: block !important;
}
.container-a4 {
width: 100%;
min-height: auto;
@@ -117,6 +124,26 @@ body {
b {
font-weight: 600;
}
.kv {
display: flex;
align-items: flex-start;
margin-bottom: 4px;
}
.label {
width: 140px;
font-weight: 600;
}
.colon {
width: 10px;
}
.value {
flex: 1;
word-break: break-word; /* biar alamat panjang tetap rapi */
}
</style>
</head>
@@ -124,112 +151,189 @@ b {
<div class="container-a4">
<div class="no-print mb-3 d-flex justify-content-end gap-2">
<button class="btn btn-secondary" onclick="history.back()">⬅️ Kembali</button>
<button class="btn btn-warning">✏️ Edit</button>
<a href="<?= base_url('pasien/edit/'.$pasien['id']) ?>" class="btn btn-warning">
✏️ Edit
</a>
<?php if(($pasien['status'] ?? '') !== 'batal'): ?>
<button class="btn btn-danger" onclick="showBatal()">❌ Batal</button>
<?php else: ?>
<button class="btn btn-success" onclick="aktifkan(<?= $pasien['id'] ?>)">
🔄 Aktifkan
</button>
<?php endif; ?>
<button onclick="window.print()" class="btn btn-primary">🖨️ Cetak</button>
</div>
<?php if(($pasien['status'] ?? '') !== 'batal'): ?>
<div id="formBatal" class="card border-danger mb-3 no-print" style="display:none;">
<div class="card-body">
<h6 class="text-danger">Alasan Pembatalan</h6>
<textarea id="alasanBatal" class="form-control mb-2"
placeholder="Masukkan alasan pembatalan..."></textarea>
<div class="d-flex gap-2">
<button class="btn btn-danger btn-sm" onclick="simpanBatal(<?= $pasien['id'] ?>)">
💾 Simpan
</button>
<button class="btn btn-secondary btn-sm" onclick="hideBatal()">Tutup</button>
</div>
</div>
</div>
<?php endif; ?>
<h4 class="text-center mb-4">
📄 FORM PERMINTAAN PASIEN AMBULANS 119
</h4>
<?php if(($pasien['status'] ?? '') === 'batal'): ?>
<div class="alert alert-danger text-center">
🚫 <strong>ORDER DIBATALKAN</strong><br>
<small><?= $pasien['alasan_batal'] ?? '-' ?></small>
</div>
<?php endif; ?>
<?php if (!$pasien): ?>
<div class="alert alert-danger">Data tidak ditemukan</div>
<?php else: ?>
<div class="row mb-3">
<!-- ================= KIRI ================= -->
<div class="col-md-4">
<div class="border p-2 h-100">
<h6 class="fw-bold">👤 IDENTITAS PASIEN</h6>
<div>
<b>Nama:</b>
<?= trim(($pasien['atribut'] ?? '') . ' ' . ($pasien['nama'] ?? '')) ?>
<div class="section-title">Identitas Pasien</div>
<div class="row">
<div class="kv">
<div class="label">Nama</div>
<div class="colon">:</div>
<div class="value">
<?= ucwords(strtolower(trim(($pasien['atribut'] ?? '') . ' ' . ($pasien['nama'] ?? '-')))) ?>
</div>
<div><b>Tgl Lahir:</b> <?= $pasien['tgl_lahir'] ?? '-' ?></div>
<div><b>Usia:</b> <?= esc($pasien['umur'] ?? '-') ?></div>
<div><b>Jenis Kelamin:</b> <?= $pasien['gender'] ?? '-' ?></div>
<div><b>Alamat:</b> <?= $pasien['alamat'] ?? '-' ?></div>
</div>
<div class="kv">
<div class="label">Tgl Lahir</div>
<div class="colon">:</div>
<div class="value"><?= $pasien['tgl_lahir'] ?? '-' ?></div>
</div>
<div class="kv">
<div class="label">Usia</div>
<div class="colon">:</div>
<div class="value"><?= esc($pasien['umur'] ?? '-') ?></div>
</div>
<div class="kv">
<div class="label">Jenis Kelamin</div>
<div class="colon">:</div>
<div class="value"><?= $pasien['gender'] ?? '-' ?></div>
</div>
<div class="kv">
<div class="label">Alamat</div>
<div class="colon">:</div>
<div class="value">
<?= ucwords(strtolower($pasien['alamat'] ?? '-')) ?>
</div>
</div>
</div>
</div>
<div class="section-title"> Data Registrasi</div>
<div class="row">
<div class="kv">
<div class="label">Nomor Rekam Medik</div>
<div class="colon">:</div>
<div class="value"><?= $pasien['rm'] ?? '-' ?></div>
</div>
<div class="kv">
<div class="label">Register Ambulans</div>
<div class="colon">:</div>
<div class="value"><?= $pasien['register'] ?? '-' ?></div>
</div>
<div class="kv">
<div class="label">Nama Penelpon</div>
<div class="colon">:</div>
<div class="value">
<?= ucwords(strtolower($pasien['nama_penelpon'] ?? '-')) ?>
</div>
</div>
<!-- ================= TENGAH ================= -->
<div class="col-md-4">
<div class="border p-2 h-100">
<div class="kv">
<div class="label">No Penelpon</div>
<div class="colon">:</div>
<div class="value"><?= $pasien['no_penelpon'] ?? '-' ?></div>
</div>
<h6 class="fw-bold">📋 REGISTRASI</h6>
</div>
<div><b>No RM:</b> <?= $pasien['rm'] ?? '-' ?></div>
<div><b>Register Ambulans:</b> <?= $pasien['register'] ?? '-' ?></div>
<div><b>Nama Penelpon:</b> <?= $pasien['nama_penelpon'] ?? '-' ?></div>
<div><b>No Penelpon:</b> <?= $pasien['no_penelpon'] ?? '-' ?></div>
<div class="section-title"> Status Permintaan</div>
<div class="row">
<div class="kv">
<div class="label">Tanggal & Jam Order</div>
<div class="colon">:</div>
<div class="value">
<?= !empty($pasien['created_at'])
? date('d-m-Y H:i', strtotime($pasien['created_at']))
: '-' ?>
</div>
</div>
<!-- ================= KANAN ================= -->
<div class="col-md-4">
<div class="border p-2 h-100">
<h6 class="fw-bold">🚑 STATUS ORDER</h6>
<div>
<b>Tanggal & Jam Order:</b><br>
<?= !empty($pasien['created_at'])
? date('d-m-Y H:i', strtotime($pasien['created_at']))
: '-' ?>
</div>
<div class="mt-2">
<b>Status Order:</b><br>
<?php
$type = $pasien['order_type'] ?? 'Pending Order';
if ($type == 'True Emergency') {
echo '🔴 True Emergency';
} elseif ($type == 'Non Emergency') {
echo '🟡 Non Emergency';
} else {
echo '🟢 Pending Order';
}
?>
</div>
<div class="mt-2">
<b>Status Fase Ambulans:</b><br>
<?php
$fase = $pasien['fase'] ?? 1;
if ($fase == 1) {
echo 'Predispatch';
} elseif ($fase == 2) {
echo 'On Scene';
} elseif ($fase == 3) {
echo 'Transport';
} elseif ($fase == 4) {
echo 'Arrival RS';
} elseif ($fase == 5) {
echo 'Handover';
} elseif ($fase >= 6) {
echo 'Selesai';
} else {
echo 'Predispatch';
}
?>
</div>
<div class="kv">
<div class="label">Status Kegawatan</div>
<div class="colon">:</div>
<div class="value">
<?php
$type = $pasien['order_type'] ?? '';
if ($type === 'True Emergency') {
echo '🔴 True Emergency';
} elseif ($type === 'Non Emergency') {
echo '🟡 Non Emergency';
} elseif ($type === 'Pending Order') {
echo '🟢 Pending Order';
} else {
echo '-';
}
?>
</div>
</div>
<div class="kv">
<div class="label">Status Fase Ambulans</div>
<div class="colon">:</div>
<div class="value">
<?php
$fase = $pasien['fase'] ?? 1;
if ($fase == 1) {
echo 'Predispatch';
} elseif ($fase == 2) {
echo 'On Scene';
} elseif ($fase == 3) {
echo 'Transport';
} elseif ($fase == 4) {
echo 'Arrival RS';
} elseif ($fase == 5) {
echo 'Handover';
} elseif ($fase >= 6) {
echo 'Selesai';
} else {
echo 'Predispatch';
}
?>
</div>
</div>
</div>
<!-- ================= PRE DISPATCH ================= -->
<div class="section-title">Kondisi Awal Pasien (Pre Dispatch)</div>
<div class="row">
<?php
$nafas = json_decode($order['pernafasan'] ?? '{}', true);
?>
<?php
$nafas = json_decode($order['pernafasan'] ?? '', true);
$pos = json_decode($order['posisi'] ?? '{}', true);
$nyeri = json_decode($order['nyeri'] ?? '', true);
$bahaya = json_decode($order['bahaya'] ?? '', true);
$kat = $order['kategori'] ?? '-';
function up($val){
return !empty($val) ? ucfirst($val) : '-';
}
?>
<style>
@@ -259,66 +363,180 @@ $kat = $order['kategori'] ?? '-';
</div>
<div class="col-4">
<div class="kv"><b>Kesadaran</b>: <span><?= $order['kesadaran'] ?? '-' ?></span></div>
<div class="kv">
<b>Kesadaran</b>:
<span><?= up($order['kesadaran'] ?? null) ?></span>
</div>
<div class="kv">
<b>Pernafasan</b>:
<span><?= ($nafas['sesak'] ?? '-') . ' / ' . ($nafas['batuk'] ?? '-') ?></span>
<span>
Sesak: <?= up($nafas['sesak'] ?? null) ?> <br>
Batuk: <?= up($nafas['batuk'] ?? null) ?>
</span>
</div>
<div class="kv">
<b>Posisi Pasien Ditemukan</b>:
<span>
<?= is_array($pos['lokasi'] ?? null) ? implode(', ', $pos['lokasi']) : '-' ?>
<?= !empty($pos['lainnya']) ? ' - ' . $pos['lainnya'] : '' ?>
</span>
<div class="kv">
<div class="kv">
<b>Posisi Pasien Ditemukan</b>:
<span>
<?php
$pos = json_decode($order['posisi'] ?? '{}', true);
$lokasi = $pos['lokasi'] ?? '';
$lantai = $pos['lantai'] ?? '';
$lainnya = $pos['lainnya'] ?? '';
$mapLokasi = [
'kamar_tidur' => 'Kamar Tidur',
'ruang_tamu' => 'Ruang Tamu',
'kamar_mandi' => 'Kamar Mandi',
];
$hasil = '';
if ($lokasi == 'lainnya' && !empty($lainnya)) {
$hasil = ucwords($lainnya);
}
elseif (!empty($lokasi)) {
$hasil = $mapLokasi[$lokasi] ?? ucwords($lokasi);
}
if (!empty($lantai)) {
$hasil .= ($hasil ? ' - ' : '') . 'Lantai ' . $lantai;
}
echo $hasil ?: '-';
?>
</span>
</div>
</div>
</div>
</div>
<div class="col-4">
<?php
$keterbatasanMap = [
'tangan' => 'Tangan',
'kaki' => 'Kaki',
'semua' => 'Semua Anggota Gerak',
'normal' => 'Tidak Ada Keterbatasan'
];
$ket = $order['keterbatasan'] ?? null;
?>
<div class="kv">
<b>Keterbatasan Gerak</b>:
<span><?= $keterbatasanMap[$ket] ?? '-' ?></span>
</div>
<?php
$nyeri = json_decode($order['nyeri'] ?? '{}', true);
// ================= STATUS NYERI =================
$statusNyeri = $nyeri['status'] ?? '-';
if ($statusNyeri == 'ya') {
$statusNyeri = 'Ya';
} elseif ($statusNyeri == 'tidak') {
$statusNyeri = 'Tidak Nyeri';
}
// ================= LOKASI NYERI =================
$lokasiNyeri = '';
// ambil dari checkbox / select
if (!empty($nyeri['lokasi'])) {
if (is_array($nyeri['lokasi'])) {
$lokasiNyeri = implode(', ', array_map('ucwords', $nyeri['lokasi']));
} else {
$lokasiNyeri = ucwords($nyeri['lokasi']);
}
}
// ================= NYERI LAINNYA =================
if (!empty($nyeri['lain'])) {
if (!empty($lokasiNyeri)) {
$lokasiNyeri .= ' - ' . ucwords($nyeri['lain']);
} else {
$lokasiNyeri = ucwords($nyeri['lain']);
}
}
// ================= DEFAULT =================
if (empty($lokasiNyeri)) {
$lokasiNyeri = '-';
}
?>
<div class="kv">
<b>Nyeri</b>:
<span><?= $statusNyeri ?></span>
</div>
</div>
<div class="col-4">
<div class="kv"><b>Keterbatasan</b>: <span><?= $order['keterbatasan'] ?? '-' ?></span></div>
<div class="kv"><b>Nyeri</b>: <span><?= $nyeri['status'] ?? '-' ?></span></div>
<div class="kv">
<b>Lokasi Nyeri</b>:
<span>
<?= isset($nyeri['lokasi']) && is_array($nyeri['lokasi'])
? implode(', ', $nyeri['lokasi'])
: '-' ?>
</span>
<span><?= $lokasiNyeri ?></span>
</div>
</div>
</div>
<div class="col-4">
<?php
$kat = strtolower($order['kategori'] ?? '');
$kategori = '-';
if ($kat == 'trauma') {
$kategori = 'Trauma';
} elseif ($kat == 'non trauma') {
$kategori = 'Non Trauma';
}
?>
<div class="kv">
<b>Kategori</b>:
<b>Kategori Pasien</b>:
<span><?= $kategori ?></span>
</div>
<div class="kv">
<b>Suhu</b>:
<span>
<?php
if ($kat == 'Trauma') echo 'Trauma';
elseif ($kat == 'Non Trauma') echo 'Non Trauma';
else echo '-';
$suhu = $order['suhu'] ?? '';
$mapSuhu = [
'demam' => 'Demam',
'tidak_demam' => 'Tidak Demam'
];
echo $mapSuhu[$suhu] ?? '-';
?>
</span>
</div>
<div class="kv"><b>Suhu</b>: <span><?= $order['suhu'] ?? '-' ?></span></div>
<?php
$bahaya = json_decode($order['bahaya'] ?? '{}', true);
// format status
$statusBahaya = $bahaya['status'] ?? '-';
if ($statusBahaya == 'ya') {
$statusBahaya = 'Ya';
} elseif ($statusBahaya == 'tidak') {
$statusBahaya = 'Tidak Bahaya';
}
// format detail
$detailBahaya = '';
if (!empty($bahaya['detail'])) {
$detailBahaya = ' - ' . ucfirst($bahaya['detail']);
}
?>
<div class="kv">
<b>Bahaya</b>:
<span>
<?= $bahaya['status'] ?? '-' ?>
<?= !empty($bahaya['detail']) ? ' - ' . $bahaya['detail'] : '' ?>
</span>
<b>Kondisi Bahaya</b>:
<span><?= $statusBahaya . $detailBahaya ?></span>
</div>
<div class="kv"><b>BB</b>: <span><?= $order['berat_badan'] ?? '-' ?> Kg</span></div>
</div>
</div>
<?php
$tujuanList = [
'RFDK' => 'Rumah ke Faskes Dalam Kota',
@@ -368,6 +586,14 @@ $tujuan = $order['tujuan'] ?? '-';
</div>
<!-- ================= INFORMASI LAIN ================= -->
<div class="col-md-12">
<div class="kv">
<b>Informasi Lain</b>
<span>: <?= !empty($order['informasi_lain']) ? $order['informasi_lain'] : '-' ?></span>
</div>
</div>
<!-- ================= VALIDASI + PETUGAS ================= -->
<div class="section-title">Validasi & Petugas</div>
<div class="col-md-6">
@@ -384,45 +610,116 @@ $tujuan = $order['tujuan'] ?? '-';
</div>
</div>
</div>
<!-- ================= TANDA TANGAN ================= -->
<div class="row mb-2"> </div>
<div class="ttd-box no-print-break">
<div class="row ttd-print-only" style="margin-top: 40px;">
<div class="col-5 ms-auto small">
<div class="ttd-title">________________</div>
<div class="ttd-colon">tanda tangan</div>
<div class="text-center mb-2 border-bottom" style="width:200px; margin:auto;"></div>
<div class="text-center mb-3">Tanda Tangan Pemesan</div>
<div class="ttd-row">
<div class="ttd-label">Nama Pemesan :</div>
<div class="ttd-line"></div>
</div>
<div class="d-flex mb-2">
<div style="width:80px;">Nama</div>
<div style="width:10px;">:</div>
<div class="flex-fill border-bottom"></div>
</div>
<div class="d-flex">
<div style="width:80px;">No. WA</div>
<div style="width:10px;">:</div>
<div class="flex-fill border-bottom"></div>
</div>
<div class="ttd-row">
<div class="ttd-label">Nomor WA:</div>
<div class="ttd-line"></div>
</div>
</div>
<!-- ================= BUTTON ================= -->
<div class="center-box">
<?php if(($pasien['status'] ?? '') !== 'batal'): ?>
<div class="center-box no-print">
<button class="btn btn-success blink"
onclick="terimaOrder(<?= $pasien['id'] ?>)">
✅ Terima Order & Lanjut Dispatch
</button>
</div>
<?php endif; ?>
<?php endif; ?>
<script>
function terimaOrder(id){
fetch("<?= base_url('pasien/next') ?>/" + id)
fetch("<?= base_url('../pasien/next') ?>/" + id)
.then(() => {
window.location.href = "<?= base_url('pasien/aktif') ?>";
window.location.href = "<?= base_url('../pasien/aktif') ?>";
});
}
function showBatal(){
document.getElementById('formBatal').style.display = 'block';
}
function hideBatal(){
document.getElementById('formBatal').style.display = 'none';
}
function simpanBatal(id){
let btn = event.target;
btn.disabled = true;
let alasan = document.getElementById('alasanBatal').value.trim();
if(!alasan){
alert("⚠️ Alasan batal wajib diisi!");
btn.disabled = false;
return;
}
fetch("<?= base_url('../pasien/batal') ?>", {
method: "POST",
headers: {
"Content-Type": "application/json"
},
body: JSON.stringify({ id, alasan })
})
.then(res => res.json())
.then(() => location.reload())
.catch(() => {
alert("❌ Gagal");
btn.disabled = false;
});
}
function aktifkan(id){
if(!confirm("Aktifkan kembali order ini?")){
return;
}
fetch("<?= base_url('../pasien/aktifkan') ?>", {
method: "POST",
headers: {
"Content-Type": "application/json"
},
body: JSON.stringify({
id: id
})
})
.then(res => res.json())
.then(res => {
alert("✅ Order diaktifkan kembali");
location.reload();
})
.catch(err => {
alert("❌ Gagal mengaktifkan");
console.error(err);
});
}
</script>
</body>