
Check Sheet
# Buat data check sheet
check_sheet <- data.frame(
No = 1:10,
Hari = c("Senin", "Senin", "Selasa", "Rabu", "Rabu", "Kamis", "Jumat", "Sabtu", "Sabtu", "Minggu"),
Nama_Pasien = c("Pasien A", "Pasien B", "Pasien C", "Pasien D", "Pasien E",
"Pasien F", "Pasien G", "Pasien H", "Pasien I", "Pasien J"),
Jenis_Keluhan = c("Kebersihan ruang tunggu",
"Waktu tunggu terlalu lama",
"Keterlambatan penanganan IGD",
"Petugas kurang ramah",
"Kurangnya informasi prosedur",
"Tidak tersedia obat",
"Kesalahan administrasi",
"Kamar mandi tidak bersih",
"Antrian tidak tertib",
"Peralatan medis tidak lengkap")
)
# Tampilkan tabel
print(check_sheet)
## No Hari Nama_Pasien Jenis_Keluhan
## 1 1 Senin Pasien A Kebersihan ruang tunggu
## 2 2 Senin Pasien B Waktu tunggu terlalu lama
## 3 3 Selasa Pasien C Keterlambatan penanganan IGD
## 4 4 Rabu Pasien D Petugas kurang ramah
## 5 5 Rabu Pasien E Kurangnya informasi prosedur
## 6 6 Kamis Pasien F Tidak tersedia obat
## 7 7 Jumat Pasien G Kesalahan administrasi
## 8 8 Sabtu Pasien H Kamar mandi tidak bersih
## 9 9 Sabtu Pasien I Antrian tidak tertib
## 10 10 Minggu Pasien J Peralatan medis tidak lengkap
Control Chart
# Load library
library(qcc)
## Warning: package 'qcc' was built under R version 4.4.3
## Package 'qcc' version 2.7
## Type 'citation("qcc")' for citing this R package in publications.
# Data suhu tubuh pasien per jam
suhu <- c(36.7, 37.1, 37.5, 38.2, 37.8, 36.9, 37.0, 38.5)
# Buat data dalam format matrix (subgroup size = 1)
data_matrix <- matrix(suhu, ncol = 1)
# Buat Control Chart
qcc(data_matrix,
type = "xbar.one",
title = "Control Chart Suhu Tubuh Pasien per Jam di IGD",
xlab = "Jam ke-",
ylab = "Suhu Tubuh (°C)",
center = 37.3, # CL (Center Line)
std.dev = (38.5 - 36.1)/6) # Estimasi standar deviasi dari UCL dan LCL (±3σ)

## List of 11
## $ call : language qcc(data = data_matrix, type = "xbar.one", center = 37.3, std.dev = (38.5 - 36.1)/6, title = "Control Chart | __truncated__ ...
## $ type : chr "xbar.one"
## $ data.name : chr "data_matrix"
## $ data : num [1:8, 1] 36.7 37.1 37.5 38.2 37.8 36.9 37 38.5
## ..- attr(*, "dimnames")=List of 2
## $ statistics: Named num [1:8] 36.7 37.1 37.5 38.2 37.8 36.9 37 38.5
## ..- attr(*, "names")= chr [1:8] "1" "2" "3" "4" ...
## $ sizes : int [1:8] 1 1 1 1 1 1 1 1
## $ center : num 37.3
## $ std.dev : num 0.4
## $ nsigmas : num 3
## $ limits : num [1, 1:2] 36.1 38.5
## ..- attr(*, "dimnames")=List of 2
## $ violations:List of 2
## - attr(*, "class")= chr "qcc"
Fishbone Diagram
# Load Library
library(DiagrammeR)
## Warning: package 'DiagrammeR' was built under R version 4.4.3
grViz("
digraph fishbone {
graph [layout = dot, rankdir = LR]
node [shape=plaintext, fontname = Helvetica]
# Efek utama
effect [label='Keterlambatan Pelayanan Pasien', fontsize=16, fontcolor=black]
# Kategori utama
Man -> effect
Method -> effect
Machine -> effect
Material -> effect
Measurement -> effect
Environment -> effect
# Sub-kategori
Man1 -> Man; Man2 -> Man; Man3 -> Man
Method1 -> Method; Method2 -> Method; Method3 -> Method
Machine1 -> Machine; Machine2 -> Machine; Machine3 -> Machine
Material1 -> Material; Material2 -> Material; Material3 -> Material
Measurement1 -> Measurement; Measurement2 -> Measurement; Measurement3 -> Measurement
Environment1 -> Environment; Environment2 -> Environment; Environment3 -> Environment
# Label sub-kategori
Man1 [label='Staf medis tidak cukup']
Man2 [label='Perawat kurang terlatih']
Man3 [label='Komunikasi antar petugas lambat']
Method1 [label='Prosedur administrasi panjang']
Method2 [label='Tidak ada sistem triase otomatis']
Method3 [label='Jadwal dokter tidak sinkron']
Machine1 [label='Komputer pendaftaran lambat']
Machine2 [label='Alat medis rusak']
Machine3 [label='Tidak ada sistem antrian digital']
Material1 [label='Formulir manual habis']
Material2 [label='Label pasien tidak tersedia']
Material3 [label='Kekurangan perlengkapan medis']
Measurement1 [label='Tidak ada monitoring waktu tunggu']
Measurement2 [label='Indikator performa tidak tersedia']
Measurement3 [label='Data pasien tidak di-update']
Environment1 [label='Ruang tunggu sesak']
Environment2 [label='Ventilasi buruk']
Environment3 [label='Kebisingan menghambat komunikasi']
}
")
Flowchart
library(DiagrammeR)
grViz("
digraph RS_Flowchart {
graph [layout = dot, rankdir = TB]
node [shape = box, style = filled, fillcolor = grey, fontname = Helvetica]
// Tahapan utama
A [label = 'Pasien Datang']
B [label = 'Pendaftaran']
C [label = 'Pemeriksaan Awal']
D [label = 'Pemeriksaan Dokter']
E [label = 'Pemeriksaan Penunjang\\n(Lab, Radiologi, dll)']
F [label = 'Diagnosis & Rencana Tindakan']
DEC [label = 'Rawat Jalan atau Rawat Inap?', shape = diamond, fillcolor = lightblue]
// Jalur rawat jalan
G1 [label = 'Pemberian Obat / Resep']
H1 [label = 'Evaluasi Akhir oleh Dokter']
I1 [label = 'Administrasi & Pembayaran']
// Jalur rawat inap
G2 [label = 'Tindakan Medis / Terapi']
H2 [label = 'Observasi / Rawat Inap']
I2 [label = 'Evaluasi Akhir oleh Dokter']
J2 [label = 'Administrasi & Pembayaran']
// Tujuan akhir
Z [label = 'Pasien Pulang / Keluar RS']
// Alur utama ke keputusan
A -> B -> C -> D -> E -> F -> DEC
// Rawat jalan
DEC -> G1 [label = 'Rawat Jalan']
G1 -> H1 -> I1 -> Z
// Rawat inap
DEC -> G2 [label = 'Rawat Inap']
G2 -> H2 -> I2 -> J2 -> Z
}
")
Histogram
# Simulasi data waktu tunggu pasien (dalam menit)
set.seed(123) # agar hasil konsisten
waktu_tunggu <- round(rexp(10, rate = 1/5)) # rerata ~5 menit, 10 pasien
# Buat histogram waktu tunggu
hist(waktu_tunggu,
main = "Histogram Waktu Tunggu Pasien di UGD",
xlab = "Waktu Tunggu (menit)",
ylab = "Jumlah Pasien",
col = "grey",
border = "white",
breaks = 6)
# Tambahkan garis rata-rata
abline(v = mean(waktu_tunggu), col = "black", lwd = 2, lty = 2)
text(mean(waktu_tunggu), max(table(cut(waktu_tunggu, breaks = 6))) * 0.8,
labels = paste("Rata-rata =", round(mean(waktu_tunggu), 1), "menit"),
pos = 4, col = "black")

Pareto Chart
library(qcc)
# Data: penyakit dan frekuensinya
penyakit <- c("Demam", "Cedera", "Diare", "Asma", "Infeksi Saluran Pernapasan", "Hipertensi", "Nyeri Dada")
frekuensi <- c(25, 18, 10, 8, 7, 5, 4)
# Buat Pareto Chart dengan warna abu-abu
pareto.chart(frekuensi,
names = penyakit,
main = "Pareto Chart: Penyakit Paling Umum di UGD",
ylab = "Frekuensi Kasus",
col = rep("gray", length(frekuensi))) # semua batang abu-abu

##
## Pareto chart analysis for frekuensi
## Frequency Cum.Freq. Percentage Cum.Percent.
## A 25.000000 25.000000 32.467532 32.467532
## B 18.000000 43.000000 23.376623 55.844156
## C 10.000000 53.000000 12.987013 68.831169
## D 8.000000 61.000000 10.389610 79.220779
## E 7.000000 68.000000 9.090909 88.311688
## F 5.000000 73.000000 6.493506 94.805195
## G 4.000000 77.000000 5.194805 100.000000
Scatter Diagram
## Warning: package 'ggplot2' was built under R version 4.4.3
# Data
waktu_pelayanan <- c(12, 18, 22, 27, 31, 36, 40, 44, 47, 50)
kepuasan_pasien <- c(9, 8, 7, 6, 6, 5, 4, 3, 2, 1)
# Buat data frame
data <- data.frame(WaktuPelayanan = waktu_pelayanan,
KepuasanPasien = kepuasan_pasien)
# Plot
ggplot(data, aes(x = WaktuPelayanan, y = KepuasanPasien)) +
geom_point(color = "gray", size = 3) +
labs(title = "Scatter Plot: Waktu Pelayanan vs Kepuasan Pasien",
x = "Waktu Pelayanan (menit)",
y = "Skor Kepuasan Pasien") +
theme_minimal()
