update print adminloket, logika klinik ruang, numbering antrian baru klinik ruang

This commit is contained in:
bagus-arie05
2026-01-08 14:38:37 +07:00
parent 14153a2f03
commit 676bdc076f
5 changed files with 252 additions and 239 deletions
+34 -5
View File
@@ -570,32 +570,61 @@ export const useQueueStore = defineStore('queue', () => {
const timestamp = new Date();
const barcode = patient ? patient.barcode : `250811${String(timestamp.getTime()).slice(-6)}`;
// Generate nomor antrian baru dengan format: [huruf pertama poli + urutan abjad ruang + nomor antrian ruang]
// Contoh: "Anak" ruang 1 = "AA001" (A dari Anak, A dari ruang 1, 001 nomor antrian)
// 1. Ambil huruf pertama dari nama klinik/poli
const firstLetter = klinikRuang.namaKlinik.charAt(0).toUpperCase();
// 2. Konversi nomor ruang ke abjad (1 = A, 2 = B, 3 = C, dst)
const ruangNumber = parseInt(ruang.nomorRuang) || 1;
const ruangLetter = String.fromCharCode(64 + ruangNumber); // 64 = '@', 65 = 'A', 66 = 'B', dst
// 3. Hitung nomor antrian ruang (dimulai dari 1, maksimal 3 digit)
const roomQueues = allPatients.value.filter(p =>
p.kodeKlinik === klinikRuang.kodeKlinik &&
p.nomorRuang === ruang.nomorRuang &&
p.processStage === 'klinik-ruang'
);
const queueNumber = roomQueues.length + 1;
const queueNumberStr = String(queueNumber).padStart(3, "0");
// 4. Format nomor antrian: AA001, AB002, dst
const newNoAntrian = `${firstLetter}${ruangLetter}${queueNumberStr}`;
const newPatient = {
no: newNo,
jamPanggil: `${String(timestamp.getHours()).padStart(2, "0")}:${String(
timestamp.getMinutes()
).padStart(2, "0")}`,
barcode: barcode,
noAntrian: `KR${String(newNo).padStart(4, "0")} | ${klinikRuang.namaKlinik} - Ruang ${ruang.nomorRuang} - ${barcode}`,
shift: "Shift 1",
noAntrian: `${newNoAntrian} | ${klinikRuang.namaKlinik} - ${ruang.namaRuang}`,
noAntrianRuang: `${klinikRuang.namaKlinik} - ${ruang.namaRuang} | ${newNoAntrian}`,
shift: patient ? (patient.shift || "Shift 1") : "Shift 1",
klinik: klinikRuang.namaKlinik,
ruang: ruang.namaRuang,
kodeKlinik: klinikRuang.kodeKlinik,
nomorRuang: ruang.nomorRuang,
nomorScreen: ruang.nomorScreen,
fastTrack: "TIDAK",
fastTrack: patient ? (patient.fastTrack || "TIDAK") : "TIDAK",
pembayaran: patient ? patient.pembayaran : "UMUM",
status: "waiting",
processStage: "klinik",
processStage: "klinik-ruang", // Set ke klinik-ruang langsung
createdAt: timestamp.toISOString(),
referencePatient: patient ? patient.noAntrian : null,
sourcePatientNo: patient ? patient.no : null,
// Tracking panggilan
calledPemeriksaanAwal: false,
calledTindakan: false,
lastCalledAt: null,
lastCalledTipeLayanan: null,
};
allPatients.value.push(newPatient);
return {
success: true,
message: `Antrean ${klinikRuang.namaKlinik} Ruang ${ruang.nomorRuang} berhasil dibuat dan akan ditampilkan di layar antrian`,
message: `Antrean ${klinikRuang.namaKlinik} Ruang ${ruang.nomorRuang} berhasil dibuat: ${newNoAntrian}`,
patient: newPatient,
};
};