Files
silaras-rssa/app/Views/input.php
T

1434 lines
42 KiB
PHP
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<!DOCTYPE html>
<html lang="id">
<head>
<meta charset="UTF-8">
<title>Form Input Pasien Ambulans Emergensi 119 RSSA</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<link href="https://cdn.jsdelivr.net/npm/[email protected]/dist/css/bootstrap.min.css" rel="stylesheet">
<style>
body {
background-color: #f8f9fa;
padding: 2rem;
}
.form-label {
font-weight: 500;
}
#inputTujuanContainer {
display: none;
}
.perawat-wrapper {
position: relative;
margin-bottom: 1rem;
}
.hapus-perawat-btn {
position: absolute;
top: 4px;
right: 8px;
font-size: 16px;
color: #dc3545;
background: none;
border: none;
cursor: pointer;
}
.hapus-perawat-btn:hover {
color: #a71d2a;
}
</style>
</head>
<body>
<div class="container py-5">
<div class="card shadow p-4">
<h4 class="mb-4 text-primary">
🚑 Form Input Pasien Ambulans Emergensi 119 RSSA
</h4>
<?php if (session()->has('errors')): ?>
<div class="alert alert-danger">
<strong>Periksa kembali data berikut:</strong>
<ul class="mb-0">
<?php foreach (session('errors') as $error): ?>
<li><?= esc($error) ?></li>
<?php endforeach; ?>
</ul>
</div>
<?php endif; ?>
<!-- FORM START -->
<form id="formPasien"
method="post"
action="<?= base_url('pasien/'.($edit_mode ? 'update/'.$id : 'simpan')) ?>">
<?= csrf_field(); ?>
<!-- ================= HEADER ================= -->
<div class="row mb-3">
<div class="col-md-3">
<label class="form-label">Tanggal & Jam</label>
<input type="datetime-local"
name="tanggal"
class="form-control"
value="<?= isset($pasien['created_at'])
? date('Y-m-d\TH:i', strtotime($pasien['created_at']))
: date('Y-m-d\TH:i') ?>"
<?= $edit_mode ? 'readonly' : '' ?>>
</div>
<div class="col-md-2">
<label class="form-label">Register Ambulans</label>
<input
type="text"
class="form-control"
name="register"
value="<?= $register ?? '' ?>"
readonly>
</div>
<div class="col-md-2 position-relative">
<label class="form-label">No RM</label>
<div class="input-group">
<input
type="text"
id="noRM"
name="rm"
class="form-control"
placeholder="Ketik RM"
pattern="[0-9]*"
inputmode="numeric"
value="<?= isset($pasien['rm']) ? esc($pasien['rm']) : '' ?>"
>
<button type="button" class="btn btn-primary" onclick="searchRM()">
🔍
</button>
</div>
<div id="rmResult" class="list-group position-absolute w-100 z-3"></div>
</div>
<div class="col-md-3">
<label class="form-label">
Nama Penelpon <span class="text-danger">*</span>
</label>
<input
type="text"
class="form-control <?= session('errors.nama_penelpon') ? 'is-invalid' : '' ?>"
id="penelpon"
name="nama_penelpon"
placeholder="Nama penelpon"
value="<?= old('nama_penelpon', $pasien['nama_penelpon'] ?? '') ?>">
<?php if(session('errors.nama_penelpon')): ?>
<div class="invalid-feedback">
<?= session('errors.nama_penelpon') ?>
</div>
<?php endif; ?>
</div>
<div class="col-md-2">
<label class="form-label">
No. Penelpon <span class="text-danger">*</span>
</label>
<input
type="tel"
class="form-control <?= session('errors.no_penelpon') ? 'is-invalid' : '' ?>"
id="no_penelpon"
name="no_penelpon"
placeholder="08xxxx"
value="<?= old('no_penelpon', $pasien['no_penelpon'] ?? '') ?>">
<?php if(session('errors.no_penelpon')): ?>
<div class="invalid-feedback">
<?= session('errors.no_penelpon') ?>
</div>
<?php endif; ?>
</div>
</div>
<!-- ================= IDENTITAS ================= -->
<div class="row mb-3">
<div class="col-md-2" style="max-width: 120px;">
<label class="form-label">Atribut</label>
<select class="form-select" id="panggilanDepan" name="panggilan_depan">
<option value="">Pilih</option>
<?php
$opsi = ['By.','An.','Sdr.','Nn.','Tn.','Ny.'];
foreach ($opsi as $o):
?>
<option value="<?= $o ?>"
<?= old('panggilan_depan', $pasien['atribut'] ?? '') == $o ? 'selected' : '' ?>>
<?= $o ?>
</option>
<?php endforeach; ?>
</select>
</div>
<div class="col-md-4">
<label class="form-label">
Nama Pasien <span class="text-danger">*</span>
</label>
<input type="text"
class="form-control <?= session('errors.nama') ? 'is-invalid' : '' ?>"
id="nama"
name="nama"
value="<?= old('nama', $pasien['nama'] ?? '') ?>">
<?php if(session('errors.nama')): ?>
<div class="invalid-feedback">
<?= session('errors.nama') ?>
</div>
<?php endif; ?>
</div>
<div class="col-md-2">
<label class="form-label">
Jenis Kelamin <span class="text-danger">*</span>
</label>
<select class="form-select <?= session('errors.gender') ? 'is-invalid' : '' ?>"
id="gender"
name="gender">
<option value="">...</option>
<option value="Laki-laki"
<?= old('gender', $pasien['gender'] ?? '') == 'Laki-laki' ? 'selected' : '' ?>>
Laki-laki
</option>
<option value="Perempuan"
<?= old('gender', $pasien['gender'] ?? '') == 'Perempuan' ? 'selected' : '' ?>>
Perempuan
</option>
</select>
<?php if(session('errors.gender')): ?>
<div class="invalid-feedback">
<?= session('errors.gender') ?>
</div>
<?php endif; ?>
</div>
<div class="col-md-2">
<label class="form-label">
Tanggal Lahir <span class="text-danger">*</span>
</label>
<input type="date"
id="tanggalLahir"
class="form-control <?= session('errors.tanggal_lahir') ? 'is-invalid' : '' ?>"
name="tanggal_lahir"
value="<?= old('tanggal_lahir', !empty($pasien['tgl_lahir']) ? date('Y-m-d', strtotime($pasien['tgl_lahir'])) : '') ?>">
<?php if(session('errors.tanggal_lahir')): ?>
<div class="invalid-feedback">
<?= session('errors.tanggal_lahir') ?>
</div>
<?php endif; ?>
</div>
<div class="col-md-2">
<label class="form-label">Umur</label>
<input type="text" id="umur" class="form-control" readonly>
</div>
</div>
<!-- ================= ALAMAT + POSISI ================= -->
<div class="row mb-3">
<!-- ALAMAT (kiri) -->
<div class="col-md-6">
<label class="form-label">
Alamat <span class="text-danger">*</span>
</label>
<textarea id="alamat"
name="alamat"
rows="4"
class="form-control <?= session('errors.alamat') ? 'is-invalid' : '' ?>"><?= old('alamat', $pasien['alamat'] ?? '') ?></textarea>
<?php if(session('errors.alamat')): ?>
<div class="invalid-feedback d-block">
<?= session('errors.alamat') ?>
</div>
<?php endif; ?>
</div>
<!-- POSISI PASIEN (kanan) -->
<div class="col-md-6">
<?php
$pos = json_decode($order['posisi'] ?? '{}', true);
$posisiPasien = old('posisi_pasien', $pos['lokasi'] ?? '');
$lantai = old('posisi_lantai', $pos['lantai'] ?? '');
$lainnya = old('posisi_lainnya', $pos['lainnya'] ?? '');
?>
<!-- HEADER: Judul kiri, Lantai kanan -->
<div class="d-flex justify-content-between align-items-center mb-2">
<label class="form-label mb-0">
Posisi Pasien (Saat Ditemukan)
</label>
<div class="d-flex align-items-center">
<label for="lantai" class="me-2 mb-0">Lantai</label>
<select id="lantai"
name="posisi_lantai"
class="form-select form-select-sm">
<option value="">Pilih</option>
<?php for ($i = 1; $i <= 50; $i++): ?>
<option value="<?= $i ?>"
<?= ($lantai == $i) ? 'selected' : '' ?>>
Lantai <?= $i ?>
</option>
<?php endfor; ?>
</select>
</div>
</div>
<!-- RADIO BUTTON -->
<div class="form-check">
<input class="form-check-input"
type="radio"
id="tidur"
name="posisi_pasien"
value="kamar_tidur"
<?= $posisiPasien === 'kamar_tidur' ? 'checked' : '' ?>>
<label class="form-check-label" for="tidur">
Di Kamar Tidur
</label>
</div>
<div class="form-check">
<input class="form-check-input"
type="radio"
id="tamu"
name="posisi_pasien"
value="ruang_tamu"
<?= $posisiPasien === 'ruang_tamu' ? 'checked' : '' ?>>
<label class="form-check-label" for="tamu">
Di Ruang Tamu
</label>
</div>
<div class="form-check">
<input class="form-check-input"
type="radio"
id="mandi"
name="posisi_pasien"
value="kamar_mandi"
<?= $posisiPasien === 'kamar_mandi' ? 'checked' : '' ?>>
<label class="form-check-label" for="mandi">
Di Kamar Mandi
</label>
</div>
<div class="d-flex align-items-center mb-2">
<input class="form-check-input me-2"
type="radio"
id="ruanglain"
name="posisi_pasien"
value="lainnya"
onchange="toggleInputRuangLain()"
<?= $posisiPasien === 'lainnya' ? 'checked' : '' ?>>
<label class="form-check-label me-2" for="ruanglain">
Di Ruang Lain:
</label>
<input type="text"
id="inputRuangLain"
name="posisi_lainnya"
class="form-control form-control-sm w-50"
placeholder="Sebutkan..."
value="<?= esc($lainnya) ?>"
<?= $posisiPasien === 'lainnya' ? '' : 'disabled' ?>>
</div>
</div>
<div class="row mb-3">
<!-- Keluhan Utama -->
<div class="col-md-12">
<label class="form-label">Keluhan Utama</label>
<textarea
class="form-control <?= session('errors.keluhan_utama') ? 'is-invalid' : '' ?>"
name="keluhan_utama"
rows="2"
placeholder="Contoh: sesak napas, nyeri dada, kecelakaan, dll"><?= old('keluhan_utama', $order['keluhan_utama'] ?? '') ?></textarea>
<?php if(session('errors.keluhan_utama')): ?>
<div class="invalid-feedback">
<?= session('errors.keluhan_utama') ?>
</div>
<?php endif; ?>
</div>
<!-- 1. Kesadaran -->
<div class="col-md-4">
<label class="form-label">
Kesadaran <span class="text-danger">*</span>
</label>
<select
class="form-select <?= session('errors.kesadaran') ? 'is-invalid' : '' ?>"
id="kesadaran"
name="kesadaran">
<option value="">...</option>
<option value="Sadar"
<?= old('kesadaran', $order['kesadaran'] ?? '') == 'Sadar' ? 'selected' : '' ?>>
Sadar
</option>
<option value="Tidak Sadar"
<?= old('kesadaran', $order['kesadaran'] ?? '') == 'Tidak Sadar' ? 'selected' : '' ?>>
Tidak Sadar
</option>
<option value="Gelisah"
<?= old('kesadaran', $order['kesadaran'] ?? '') == 'Gelisah' ? 'selected' : '' ?>>
Gelisah
</option>
</select>
<?php if(session('errors.kesadaran')): ?>
<div class="invalid-feedback">
<?= session('errors.kesadaran') ?>
</div>
<?php endif; ?>
</div>
<!-- 2. Kategori -->
<div class="col-md-4">
<label class="form-label">
Kategori <span class="text-danger">*</span>
</label>
<select
class="form-select <?= session('errors.kategori') ? 'is-invalid' : '' ?>"
id="kategori"
name="kategori">
<option value="">...</option>
<option value="Trauma"
<?= old('kategori', $order['kategori'] ?? '') == 'Trauma' ? 'selected' : '' ?>>
Trauma
</option>
<option value="Non Trauma"
<?= old('kategori', $order['kategori'] ?? '') == 'Non Trauma' ? 'selected' : '' ?>>
Non Trauma
</option>
</select>
<?php if(session('errors.kategori')): ?>
<div class="invalid-feedback">
<?= session('errors.kategori') ?>
</div>
<?php endif; ?>
</div>
<!-- 3. Order Type -->
<div class="col-md-4">
<label class="form-label">
Order Type <span class="text-danger">*</span>
</label>
<select
class="form-select <?= session('errors.order_type') ? 'is-invalid' : '' ?>"
id="orderType"
name="order_type">
<option value="Pending Order"
<?= old('order_type', $order['order_type'] ?? 'Pending Order') == 'Pending Order' ? 'selected' : '' ?>>
🟢 Pending Order
</option>
<option value="Non Emergency"
<?= old('order_type', $order['order_type'] ?? '') == 'Non Emergency' ? 'selected' : '' ?>>
🟡 Non Emergency
</option>
<option value="True Emergency"
<?= old('order_type', $order['order_type'] ?? '') == 'True Emergency' ? 'selected' : '' ?>>
🔴 True Emergency
</option>
</select>
<?php if(session('errors.order_type')): ?>
<div class="invalid-feedback">
<?= session('errors.order_type') ?>
</div>
<?php endif; ?>
</div>
</div>
<div class="row g-3">
<!-- KIRI: PERNAFASAN -->
<div class="col-md-3">
<div class="border rounded p-3 h-100">
<?php
// ✅ WAJIB: decode JSON dulu
$pernafasan = json_decode($order['pernafasan'] ?? '{}', true);
$sesak = old('sesak', $pernafasan['sesak'] ?? '');
$batuk = old('batuk', $pernafasan['batuk'] ?? '');
?>
<label class="fw-bold">Pernafasan</label>
<!-- SESAK -->
<div class="mt-2">
<div class="d-flex gap-3">
<div class="form-check">
<input class="form-check-input"
type="radio"
name="sesak"
value="ya"
id="sesakYa"
<?= $sesak === 'ya' ? 'checked' : '' ?>>
<label class="form-check-label" for="sesakYa">
Sesak
</label>
</div>
<div class="form-check">
<input class="form-check-input"
type="radio"
name="sesak"
value="tidak"
id="sesakTidak"
<?= $sesak === 'tidak' ? 'checked' : '' ?>>
<label class="form-check-label" for="sesakTidak">
Tidak Sesak
</label>
</div>
</div>
</div>
<!-- BATUK -->
<div class="mt-2">
<div class="d-flex gap-3">
<div class="form-check">
<input class="form-check-input"
type="radio"
name="batuk"
value="ya"
id="batukYa"
<?= $batuk === 'ya' ? 'checked' : '' ?>>
<label class="form-check-label" for="batukYa">
Batuk
</label>
</div>
<div class="form-check">
<input class="form-check-input"
type="radio"
name="batuk"
value="tidak"
id="batukTidak"
<?= $batuk === 'tidak' ? 'checked' : '' ?>>
<label class="form-check-label" for="batukTidak">
Tidak Batuk
</label>
</div>
</div>
</div>
<!-- Suhu -->
<?php $suhu = old('suhu', $order['suhu'] ?? ''); ?>
<label class="fw-bold">
Suhu Tubuh <span class="text-danger">*</span>
</label>
<div class="d-flex gap-3 mt-2 mb-2">
<div class="form-check">
<input class="form-check-input <?= session('errors.suhu') ? 'is-invalid' : '' ?>"
type="radio"
id="demam"
name="suhu"
value="demam"
<?= $suhu == 'demam' ? 'checked' : '' ?>>
<label class="form-check-label" for="demam">
Demam
</label>
</div>
<div class="form-check">
<input class="form-check-input <?= session('errors.suhu') ? 'is-invalid' : '' ?>"
type="radio"
id="tidak_demam"
name="suhu"
value="tidak_demam"
<?= $suhu == 'tidak_demam' ? 'checked' : '' ?>>
<label class="form-check-label" for="tidak_demam">
Tidak Demam
</label>
</div>
</div>
<?php if(session('errors.suhu')): ?>
<div class="text-danger small">
<?= session('errors.suhu') ?>
</div>
<?php endif; ?>
<?php
$bahaya = json_decode($order['bahaya'] ?? '{}', true);
$statusBahaya = $bahaya['status'] ?? '';
$detailBahaya = $bahaya['detail'] ?? '';
?>
<!-- Kondisi Bahaya -->
<label class="fw-bold">Kondisi Bahaya</label>
<div class="d-flex gap-3 mt-2">
<div class="form-check">
<input class="form-check-input"
type="radio"
name="bahaya"
value="ada"
id="bahayaAda"
<?= $statusBahaya === 'ada' ? 'checked' : '' ?>>
<label class="form-check-label" for="bahayaAda">
Ada
</label>
</div>
<div class="form-check">
<input class="form-check-input"
type="radio"
name="bahaya"
value="tidak"
id="bahayaTidakAda"
<?= $statusBahaya === 'tidak' ? 'checked' : '' ?>>
<label class="form-check-label" for="bahayaTidakAda">
Tidak
</label>
</div>
</div>
<!-- Detail Bahaya -->
<div id="bahayaInputDiv"
class="mt-2 <?= $statusBahaya === 'ada' ? '' : 'opacity-50' ?>">
<input type="text"
class="form-control"
name="bahaya_detail"
placeholder="Jenis bahaya..."
value="<?= esc($detailBahaya) ?>"
<?= $statusBahaya === 'ada' ? '' : 'disabled' ?>>
</div>
</div>
</div>
<div class="col-md-3">
<div class="border rounded p-3 h-100">
<label class="form-label fw-bold">Keterbatasan Gerak</label>
<div class="d-flex flex-column gap-2 mt-2">
<div class="form-check">
<input class="form-check-input"
type="radio"
name="gerak"
id="gerakTangan"
value="tangan"
<?= ($order['keterbatasan'] ?? '') === 'tangan' ? 'checked' : '' ?>>
<label class="form-check-label">Tangan</label>
</div>
<div class="form-check">
<input class="form-check-input"
type="radio"
name="gerak"
value="kaki"
<?= ($order['keterbatasan'] ?? '') === 'kaki' ? 'checked' : '' ?>>
<label class="form-check-label">Kaki</label>
</div>
<div class="form-check">
<input class="form-check-input"
type="radio"
name="gerak"
value="semua"
<?= ($order['keterbatasan'] ?? '') === 'semua' ? 'checked' : '' ?>>
<label class="form-check-label">Semua Anggota Gerak</label>
</div>
<div class="form-check">
<input class="form-check-input"
type="radio"
name="gerak"
value="normal"
<?= ($order['keterbatasan'] ?? '') === 'normal' ? 'checked' : '' ?>>
<label class="form-check-label">Tidak Ada Keterbatasan</label>
</div>
</div>
<!-- Berat Badan -->
<label class="fw-bold">Berat Badan</label>
<div class="input-group mt-2 mb-3">
<input type="number"
class="form-control"
id="beratBadan"
name="berat_badan"
placeholder="BB Pasien"
value="<?= esc($order['berat_badan'] ?? '') ?>">
<span class="input-group-text">Kg</span>
</div>
</div>
</div>
<?php
// ✅ decode JSON nyeri
$nyeri = json_decode($order['nyeri'] ?? '{}', true);
$statusNyeri = $nyeri['status'] ?? 'tidak';
$lokasiNyeri = $nyeri['lokasi'] ?? [];
$nyeriLain = $nyeri['lain'] ?? '';
// pastikan array
if (!is_array($lokasiNyeri)) {
$lokasiNyeri = [$lokasiNyeri];
}
?>
<!-- KANAN: NYERI -->
<div class="col-md-6">
<div class="border rounded p-3 h-100">
<label class="form-label fw-bold">Nyeri / Luka</label>
<!-- RADIO -->
<div class="d-flex gap-3 mt-2 mb-2">
<div class="form-check">
<input class="form-check-input"
type="radio"
name="status_nyeri"
id="adaNyeri"
value="ya"
<?= $statusNyeri === 'ya' ? 'checked' : '' ?>>
<label class="form-check-label" for="adaNyeri">Nyeri</label>
</div>
<div class="form-check">
<input class="form-check-input"
type="radio"
name="status_nyeri"
id="tidakNyeri"
value="tidak"
<?= $statusNyeri === 'tidak' ? 'checked' : '' ?>>
<label class="form-check-label" for="tidakNyeri">Tidak Nyeri</label>
</div>
</div>
<!-- DETAIL -->
<div id="detailNyeri"
class="<?= $statusNyeri === 'ya' ? '' : 'opacity-50' ?>">
<label class="form-label fw-semibold mb-2">
Lokasi Nyeri
</label>
<div class="row row-cols-2 row-cols-md-4 g-2">
<?php
$lokasiList = [
'kepala','leher','dada','punggung',
'perut','panggul','tangan','kaki'
];
foreach ($lokasiList as $l):
?>
<div class="col">
<div class="form-check">
<input class="form-check-input"
type="checkbox"
name="lokasi_nyeri[]"
value="<?= $l ?>"
id="nyeri_<?= $l ?>"
<?= in_array($l, $lokasiNyeri) ? 'checked' : '' ?>
<?= $statusNyeri !== 'ya' ? 'disabled' : '' ?>>
<label class="form-check-label"
for="nyeri_<?= $l ?>">
<?= ucfirst($l) ?>
</label>
</div>
</div>
<?php endforeach; ?>
</div>
<input type="text"
name="nyeri_lain"
class="form-control mt-3"
placeholder="Lain-lain..."
value="<?= esc($nyeriLain) ?>"
<?= $statusNyeri !== 'ya' ? 'disabled' : '' ?>>
</div>
</div>
</div>
<!-- Informasi Lain -->
<div class="row mt-3">
<div class="col-md-12">
<label class="form-label fw-bold">Informasi Lain</label>
<textarea
class="form-control"
name="informasi_lain"
rows="1"
placeholder="Contoh: alergi obat, kondisi khusus, permintaan khusus, peralatan khusus, dll"><?= esc($order['informasi_lain'] ?? '') ?></textarea>
</div>
</div>
</div>
<!-- ================= TUJUAN ================= -->
<div class="row mt-3 g-3">
<div class="col-md-5">
<div class="border rounded p-3 h-100 shadow-sm">
<label for="tujuan" class="form-label fw-bold">
🎯 Tujuan Transport
</label>
<select class="form-select" id="tujuan" name="tujuan" required>
<option value="">-- Pilih Tujuan --</option>
<option value="RFDK"
<?= ($order['tujuan'] ?? '') === 'RFDK' ? 'selected' : '' ?>>
RFDK Rumah ke Faskes Dalam Kota
</option>
<option value="F-FDK"
<?= ($order['tujuan'] ?? '') === 'F-FDK' ? 'selected' : '' ?>>
F-FDK Fasilitas Umum ke Faskes Dalam Kota
</option>
<option value="AFDK"
<?= ($order['tujuan'] ?? '') === 'AFDK' ? 'selected' : '' ?>>
AFDK Antar Faskes Dalam Kota
</option>
<option value="AFLK"
<?= ($order['tujuan'] ?? '') === 'AFLK' ? 'selected' : '' ?>>
AFLK Antar Faskes Luar Kota
</option>
<option value="PDK"
<?= ($order['tujuan'] ?? '') === 'PDK' ? 'selected' : '' ?>>
PDK Pulang Dalam Kota
</option>
<option value="PLK"
<?= ($order['tujuan'] ?? '') === 'PLK' ? 'selected' : '' ?>>
PLK Pulang Luar Kota
</option>
</select>
<div class="mt-3">
<label for="tujuan_detail" class="form-label small fw-semibold">
Detail Tujuan
</label>
<input
type="text"
id="tujuan_detail"
class="form-control"
name="tujuan_detail"
placeholder="Contoh: Nama RS / Alamat / Keterangan Lain"
value="<?= esc($order['tujuan_detail'] ?? '') ?>">
</div>
</div>
</div>
<?php $persetujuan = $order['persetujuan'] ?? ''; ?>
<!-- PERSETUJUAN BIAYA -->
<div class="col-md-3">
<div class="border rounded p-3 h-100">
<label class="form-label fw-bold">Persetujuan Biaya</label>
<div class="d-flex flex-column gap-1 mt-2 mb-3">
<!-- SETUJU -->
<div class="form-check">
<input class="form-check-input"
type="radio"
name="persetujuan"
id="persetujuanSetuju"
value="setuju"
<?= $persetujuan === 'setuju' ? 'checked' : '' ?>>
<label class="form-check-label" for="persetujuanSetuju">
Setuju
</label>
</div>
<!-- TIDAK -->
<div class="form-check">
<input class="form-check-input"
type="radio"
name="persetujuan"
id="persetujuanTidak"
value="tidak"
<?= $persetujuan === 'tidak' ? 'checked' : '' ?>>
<label class="form-check-label" for="persetujuanTidak">
Tidak Setuju
</label>
</div>
<!-- MENUNGGU -->
<div class="form-check">
<input class="form-check-input"
type="radio"
name="persetujuan"
id="persetujuanMenunggu"
value="menunggu"
<?= $persetujuan === 'menunggu' ? 'checked' : '' ?>>
<label class="form-check-label" for="persetujuanMenunggu">
Menunggu Persetujuan
</label>
</div>
</div>
<label class="form-label small">Nominal Biaya</label>
<div class="input-group">
<span class="input-group-text">Rp</span>
<input type="number"
class="form-control"
name="biaya"
placeholder="Isi Nominal"
value="<?= esc($order['biaya'] ?? '') ?>">
</div>
</div>
</div>
<!-- VALIDASI + PETUGAS -->
<div class="col-md-4">
<div class="border rounded p-3 h-100">
<label class="form-label fw-bold">
Validasi Pelayanan
</label>
<input type="text"
class="form-control mt-1 mb-3"
name="validasi"
placeholder="Valid / Tidak Valid"
value="<?= esc($order['validasi'] ?? '') ?>">
<!-- PETUGAS -->
<label class="form-label small">
Petugas Predispatch
</label>
<input type="hidden"
name="petugas_id_old"
value="<?= $order['petugas_id'] ?? '' ?>">
<select id="petugas"
name="petugas_id"
class="form-select"
style="width:100%">
</select>
</div>
</div>
<!-- ================= BUTTON ================= -->
<div class="d-flex justify-content-between mt-4">
<button type="button"
class="btn btn-secondary"
onclick="history.back()">
Kembali
</button>
<button type="submit"
id="btnSubmit"
class="btn btn-success">
Simpan Pasien
</button>
</div>
</form>
<!-- FORM END -->
</div>
</div>
<script src="https://code.jquery.com/jquery-3.6.0.min.js"></script>
<link href="https://cdn.jsdelivr.net/npm/[email protected]/dist/css/select2.min.css" rel="stylesheet" />
<script src="https://cdn.jsdelivr.net/npm/[email protected]/dist/js/select2.min.js"></script>
<script>
let isSubmitting = false;
let rmTimeout;
let currentRegisterId = null;
// =====================================================
// DOM READY
// =====================================================
document.addEventListener('DOMContentLoaded', function () {
const tglInput = document.getElementById('tanggalLahir');
const umurInput = document.getElementById('umur');
if (!tglInput || !umurInput) return;
function hitungUmur() {
const val = tglInput.value;
if (!val) {
umurInput.value = '';
return;
}
const lahir = new Date(val);
const today = new Date();
let tahun = today.getFullYear() - lahir.getFullYear();
let bulan = today.getMonth() - lahir.getMonth();
let hari = today.getDate() - lahir.getDate();
if (hari < 0) {
bulan--;
const lastMonth = new Date(today.getFullYear(), today.getMonth(), 0);
hari += lastMonth.getDate();
}
if (bulan < 0) {
tahun--;
bulan += 12;
}
umurInput.value = `${tahun} Th ${bulan} Bln ${hari} Hr`;
}
window.hitungUmur = hitungUmur;
// jalan saat pertama load (edit mode)
setTimeout(hitungUmur, 100);
// jalan saat user ganti tanggal
tglInput.addEventListener('change', hitungUmur);
// ================= FORM SUBMIT =================
const form = document.getElementById('formPasien');
form.addEventListener('keydown', function(e) {
if (e.key === 'Enter') {
const tag = e.target.tagName.toLowerCase();
// textarea tetap bisa enter (newline)
if (tag === 'textarea') return;
e.preventDefault();
// ambil semua input yang bisa difokus
const focusable = form.querySelectorAll(
'input:not([type=hidden]):not([disabled]), select, textarea, button'
);
const index = Array.prototype.indexOf.call(focusable, e.target);
if (index > -1 && index < focusable.length - 1) {
focusable[index + 1].focus();
}
}
});
if (form) {
form.addEventListener('submit', function (e) {
if (isSubmitting) {
e.preventDefault();
return false;
}
if (!confirm('Yakin simpan data pasien?')) {
e.preventDefault();
return false;
}
isSubmitting = true;
const btn = document.getElementById('btnSubmit');
if (btn) {
btn.disabled = true;
btn.innerHTML = 'Menyimpan...';
}
});
}
// ================= SELECT2 PETUGAS =================
$('#petugas').select2({
width: '100%',
placeholder: 'Ketik nama petugas...',
minimumInputLength: 1,
ajax: {
url: '<?= base_url('pegawai/search') ?>',
dataType: 'json',
delay: 250,
data: function (params) {
return { q: params.term };
},
processResults: function (data) {
return {
results: data
};
}
}
});
// ✅ inject value saat edit
<?php if (!empty($order['petugas_id']) && !empty($order['petugas_nama'])): ?>
var option = new Option(
"<?= esc($order['petugas_nama']) ?>",
"<?= $order['petugas_id'] ?>",
true,
true
);
$('#petugas').append(option).trigger('change');
<?php endif; ?>
// ✅ auto fokus langsung bisa ngetik
$(document).on('select2:open', function () {
setTimeout(function () {
document.querySelector('.select2-search__field')?.focus();
}, 0);
});
// ================= TOGGLE RADIO =================
toggleByRadio('status_nyeri', 'detailNyeri', 'ya');
toggleByRadio('bahaya', 'bahayaInputDiv', 'ada');
document.querySelectorAll('input[type="radio"]:checked')
.forEach(el => el.dispatchEvent(new Event('change')));
// ================= SEARCH RM =================
const noRM = document.getElementById('noRM');
if (noRM) {
noRM.addEventListener('input', searchRM);
}
// ================= RUANG LAIN =================
toggleInputRuangLain();
});
// =====================================================
// RESET SAAT BACK
// =====================================================
window.addEventListener('pageshow', function () {
isSubmitting = false;
const btn = document.getElementById('btnSubmit');
if (btn) {
btn.disabled = false;
btn.innerHTML = 'Simpan Pasien';
}
});
// =====================================================
// TOGGLE RADIO
// =====================================================
function toggleByRadio(name, targetId, activeValue) {
const radios = document.querySelectorAll(`input[name="${name}"]`);
const target = document.getElementById(targetId);
if (!target) return;
radios.forEach(el => {
el.addEventListener('change', function () {
const aktif = this.value === activeValue;
target.querySelectorAll('input, select, textarea').forEach(input => {
input.disabled = !aktif;
});
target.classList.toggle('opacity-50', !aktif);
});
});
}
// =====================================================
// RUANG LAIN
// =====================================================
function toggleInputRuangLain() {
const checkbox = document.getElementById('ruanglain');
const input = document.getElementById('inputRuangLain');
if (!checkbox || !input) return;
input.disabled = !checkbox.checked;
if (!checkbox.checked) {
input.value = '';
}
}
// =====================================================
// MODAL CEK RM
// =====================================================
function openCekRM() {
currentRegisterId = null;
new bootstrap.Modal(document.getElementById('modalCekRM')).show();
}
function cekRM() {
const rm = document.getElementById('inputRM').value;
fetch("<?= base_url('rm/cek') ?>", {
method: 'POST',
headers: {
'Content-Type': 'application/x-www-form-urlencoded'
},
body: 'rm=' + encodeURIComponent(rm)
})
.then(res => res.json())
.then(res => {
const hasil = document.getElementById('hasilRM');
if (res.status === 'found') {
const p = res.data;
hasil.innerHTML = `
<div class="alert alert-success">
<b>✔ RM Ditemukan</b><br>
Nama: ${p.nama}<br>
Gender: ${p.gender ?? '-'}<br>
Alamat: ${p.alamat ?? '-'}
</div>
<button type="button" class="btn btn-success"
onclick="linkRM('${rm}')">
✔ Konfirmasi RM
</button>
`;
} else {
hasil.innerHTML = `
<div class="alert alert-danger">
⚠ RM tidak ditemukan
</div>
<button type="button" class="btn btn-warning"
onclick="linkRM('${rm}')">
Tetap Gunakan RM Ini
</button>
`;
}
});
}
function linkRM(rm) {
fetch("<?= base_url('rm/link') ?>", {
method: 'POST',
headers: {
'Content-Type': 'application/x-www-form-urlencoded'
},
body: 'register_id=' + currentRegisterId + '&rm=' + encodeURIComponent(rm)
})
.then(res => res.json())
.then(res => {
if (res.status === 'success') {
alert('RM berhasil di-update');
location.reload();
}
});
}
// =====================================================
// SEARCH RM
// =====================================================
function searchRM() {
clearTimeout(rmTimeout);
rmTimeout = setTimeout(() => {
const q = document.getElementById('noRM').value.trim();
const box = document.getElementById('rmResult');
if (!q) {
box.innerHTML = '';
return;
}
fetch("<?= base_url('rm/search') ?>", {
method: 'POST',
headers: {
'Content-Type': 'application/x-www-form-urlencoded'
},
body: 'q=' + encodeURIComponent(q)
})
.then(res => res.json())
.then(res => {
if (!res.data || res.data.length === 0) {
box.innerHTML = `
<div class="list-group-item text-danger">
❌ RM tidak ditemukan
</div>
<div class="list-group-item">
<button type="button"
class="btn btn-warning w-100"
onclick="useNewRM('${q}')">
Gunakan RM Ini (Pasien Baru)
</button>
</div>
`;
return;
}
let html = `
<div class="list-group-item bg-light">
<b>⚠ RM ditemukan</b><br>
Pilih data pasien:
</div>
`;
res.data.forEach(p => {
html += `
<button type="button"
class="list-group-item list-group-item-action"
onclick="confirmRM(
'${p.rm}',
'${(p.nama ?? '').replace(/'/g, "\\'")}',
'${(p.alamat ?? '').replace(/'/g, "\\'")}',
'${p.gender ?? ''}',
'${p.tanggal_lahir ?? ''}'
)">
<b>${p.rm}</b> - ${p.nama}
<br>
<small class="text-muted">${p.alamat ?? ''}</small>
</button>
`;
});
box.innerHTML = html;
});
}, 300);
}
function confirmRM(rm, nama, alamat, gender, tanggal_lahir) {
if (!rm) {
alert('Data RM tidak ditemukan');
return;
}
if (!confirm(`Gunakan data RM: ${nama}?`)) {
return;
}
document.getElementById('noRM').value = rm;
document.getElementById('nama').value = nama ?? '';
document.getElementById('alamat').value = alamat ?? '';
document.getElementById('gender').value = gender ?? '';
document.getElementById('tanggalLahir').value = tanggal_lahir ?? '';
hitungUmur();
document.getElementById('rmResult').innerHTML = `
<div class="alert alert-success py-2">
✔ RM aktif: <b>${rm}</b><br>
👤 ${nama}
</div>
`;
}
function useNewRM(rm) {
document.getElementById('noRM').value = rm;
document.getElementById('rmResult').innerHTML = `
<div class="alert alert-warning alert-dismissible fade show">
⚠ RM ${rm} sebagai PASIEN BARU
<button type="button"
class="btn-close"
data-bs-dismiss="alert"></button>
</div>
`;
setTimeout(() => {
const el = document.querySelector('.alert-warning');
if (el) el.remove();
}, 2000);
}
function fillRM(rm, nama, alamat, gender, tgl) {
document.getElementById('noRM').value = rm;
document.getElementById('nama').value = nama ?? '';
document.getElementById('alamat').value = alamat ?? '';
document.getElementById('gender').value = gender ?? '';
document.getElementById('rmResult').innerHTML = '';
if (tgl) {
document.getElementById('tanggalLahir').value = tgl;
hitungUmur();
}
}
</script>
<!-- ================= Modal RM ================= -->
<div class="modal fade" id="modalCekRM" tabindex="-1">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<h5 class="modal-title">Cek RM</h5>
<button type="button" class="btn-close" data-bs-dismiss="modal"></button>
</div>
<div class="modal-body">
<input type="hidden" id="registerId">
<label>Masukkan RM</label>
<input type="text" id="inputRM" class="form-control">
<button class="btn btn-primary mt-2" onclick="cekRM()">
🔍 Cek RM
</button>
<hr>
<div id="hasilRM"></div>
</div>
</div>
</div>
</div>
<script src="https://cdn.jsdelivr.net/npm/[email protected]/dist/js/bootstrap.bundle.min.js"></script>
</body>
</html>