271 lines
9.7 KiB
PHP
271 lines
9.7 KiB
PHP
<?php
|
|
|
|
namespace App\Http\Controllers;
|
|
|
|
use App\Models\Jawaban;
|
|
use App\Models\SoalDetail;
|
|
use Illuminate\Http\Request;
|
|
use Illuminate\Support\Facades\DB;
|
|
use Yajra\DataTables\DataTables;
|
|
|
|
class AdminController extends Controller
|
|
{
|
|
//
|
|
public function index()
|
|
{
|
|
$data['list_unit_kerja'] = [
|
|
"Direktur Utama dan Direksi",
|
|
"Satuan Pengawas Internal",
|
|
"Komite Mutu",
|
|
"Komite Medik",
|
|
"Komite Keperawatan",
|
|
"Komite PPI & PRA",
|
|
"KTKL",
|
|
"KFT",
|
|
"KEH",
|
|
"ULP",
|
|
"Timker Yankep",
|
|
"Timker Yanjang",
|
|
"Timker Perencanaan, Evaluasi dan Program",
|
|
"Timker Hukum dan Humas",
|
|
"Timker Yanmed",
|
|
"Timker Perencanaan dan Evaluasi Anggaran",
|
|
"Timker Akutansi dan BMN",
|
|
"Timker Organisasi dan Sumber Daya Manusia",
|
|
"Timker TU & RT",
|
|
"Timker Diklat",
|
|
"Timker Penelitian",
|
|
"Timker Pelaksanan Keuangan",
|
|
"Instalasi Rawat Inap",
|
|
"Instalasi Rawat Jalan Reguler",
|
|
"Instalasi Rawat Intensif / ICU",
|
|
"Instalasi Rehabilitasi Medik",
|
|
"Instalasi Gizi",
|
|
"Instalasi Laboratorium Terpadu",
|
|
"Instalasi Sistem Informasi Manajemen Rumah Sakit (SIMRS)",
|
|
"Instalasi Bedah Sentral",
|
|
"Instalasi Radiologi",
|
|
"Instalasi Farmasi",
|
|
"Instalasi Rekam Medis",
|
|
"Instalasi Gawat Darurat",
|
|
"Instalasi Verifikasi dan Penjaminan Pasien",
|
|
"Instalasi KL & K3RS",
|
|
"ISSB",
|
|
"IPT",
|
|
"IPJNI",
|
|
"IPSPRS",
|
|
"IPPB",
|
|
"IPPISGB",
|
|
"Instalasi Rawat Jalan Eksekutif",
|
|
"Instalasi Teknologi Berbantu (TRB)",
|
|
"Klinik Utama Bintaro",
|
|
"KSM Anak",
|
|
"KSM Obstetri & Ginekologi",
|
|
"KSM Bedah",
|
|
"KSM Anestesi",
|
|
"KSM Gigi & Mulut",
|
|
"KSM Spesialis Lain",
|
|
"KSM Umum",
|
|
"Lainnya (Mahasiswa dan Outsourcing)"
|
|
];
|
|
return view('admin.dashboard', $data);
|
|
}
|
|
|
|
public function get_data_pegawai_sudah_survey(Request $request)
|
|
{
|
|
$query = Jawaban::query();
|
|
|
|
if ($request->nama_pegawai) {
|
|
$query->where('nama', 'ILIKE', '%' . $request->nama_pegawai . '%');
|
|
}
|
|
|
|
if ($request->unit_kerja) {
|
|
$query->whereIn('unit', $request->unit_kerja);
|
|
}
|
|
|
|
return DataTables::of($query)->make(true);
|
|
|
|
}
|
|
|
|
public function dashboard_analisis()
|
|
{
|
|
$data['list_unit_kerja'] = [
|
|
"Direktur Utama dan Direksi",
|
|
"Satuan Pengawas Internal",
|
|
"Komite Mutu",
|
|
"Komite Medik",
|
|
"Komite Keperawatan",
|
|
"Komite PPI & PRA",
|
|
"KTKL",
|
|
"KFT",
|
|
"KEH",
|
|
"ULP",
|
|
"Timker Yankep",
|
|
"Timker Yanjang",
|
|
"Timker Perencanaan, Evaluasi dan Program",
|
|
"Timker Hukum dan Humas",
|
|
"Timker Yanmed",
|
|
"Timker Perencanaan dan Evaluasi Anggaran",
|
|
"Timker Akutansi dan BMN",
|
|
"Timker Organisasi dan Sumber Daya Manusia",
|
|
"Timker TU & RT",
|
|
"Timker Diklat",
|
|
"Timker Penelitian",
|
|
"Timker Pelaksanan Keuangan",
|
|
"Instalasi Rawat Inap",
|
|
"Instalasi Rawat Jalan Reguler",
|
|
"Instalasi Rawat Intensif / ICU",
|
|
"Instalasi Rehabilitasi Medik",
|
|
"Instalasi Gizi",
|
|
"Instalasi Laboratorium Terpadu",
|
|
"Instalasi Sistem Informasi Manajemen Rumah Sakit (SIMRS)",
|
|
"Instalasi Bedah Sentral",
|
|
"Instalasi Radiologi",
|
|
"Instalasi Farmasi",
|
|
"Instalasi Rekam Medis",
|
|
"Instalasi Gawat Darurat",
|
|
"Instalasi Verifikasi dan Penjaminan Pasien",
|
|
"Instalasi KL & K3RS",
|
|
"ISSB",
|
|
"IPT",
|
|
"IPJNI",
|
|
"IPSPRS",
|
|
"IPPB",
|
|
"IPPISGB",
|
|
"Instalasi Rawat Jalan Eksekutif",
|
|
"Instalasi Teknologi Berbantu (TRB)",
|
|
"Klinik Utama Bintaro",
|
|
"KSM Anak",
|
|
"KSM Obstetri & Ginekologi",
|
|
"KSM Bedah",
|
|
"KSM Anestesi",
|
|
"KSM Gigi & Mulut",
|
|
"KSM Spesialis Lain",
|
|
"KSM Umum",
|
|
"Lainnya (Mahasiswa dan Outsourcing)"
|
|
];
|
|
return view('admin.dashboard_analisis', $data);
|
|
}
|
|
|
|
public function get_data_dashboard_analisis(Request $request)
|
|
{
|
|
try {
|
|
$soal = SoalDetail::all()->sortBy('id')->values()->toArray();
|
|
|
|
$data = [];
|
|
foreach ($soal as $key => $value) {
|
|
$jawaban = [];
|
|
$soal_json = json_decode($value['soal'], true);
|
|
$sub = DB::table('lms_mutu_jawaban_detail')
|
|
->select('lms_mutu_soal_detail_id', DB::raw('COUNT(*) AS total_semua'))
|
|
->join(
|
|
'lms_mutu_jawaban',
|
|
'lms_mutu_jawaban_detail.lms_mutu_jawaban_id',
|
|
'=',
|
|
'lms_mutu_jawaban.id'
|
|
)
|
|
->where('lms_mutu_soal_detail_id', $value['id']);
|
|
if($request->unit_kerja) {
|
|
$sub->whereIn('lms_mutu_jawaban.unit', $request->unit_kerja);
|
|
}
|
|
$sub->groupBy('lms_mutu_soal_detail_id');
|
|
|
|
$result = DB::table('lms_mutu_jawaban_detail AS d')
|
|
->joinSub($sub, 't', function($join) {
|
|
$join->on('t.lms_mutu_soal_detail_id', '=', 'd.lms_mutu_soal_detail_id');
|
|
})
|
|
->join(
|
|
'lms_mutu_jawaban',
|
|
'd.lms_mutu_jawaban_id',
|
|
'=',
|
|
'lms_mutu_jawaban.id'
|
|
)
|
|
->selectRaw(
|
|
'd.lms_mutu_soal_detail_id,
|
|
d.jawaban,
|
|
COUNT(*) AS total_jawaban,
|
|
t.total_semua,
|
|
ROUND((COUNT(*)::numeric / t.total_semua::numeric) * 100) AS percent'
|
|
)
|
|
->where('d.lms_mutu_soal_detail_id', $value['id'])
|
|
->groupBy('d.lms_mutu_soal_detail_id', 'd.jawaban', 't.total_semua');
|
|
if($request->unit_kerja) {
|
|
$result->whereIn('lms_mutu_jawaban.unit', $request->unit_kerja);
|
|
}
|
|
$result->orderBy('d.lms_mutu_soal_detail_id', 'asc');
|
|
|
|
if(count($soal_json['options']) > 0){
|
|
foreach ($soal_json['options'] as $v) {
|
|
|
|
if($v != 'Lainnya'){
|
|
$row = (clone $result)->where('d.jawaban', $v)
|
|
->first();
|
|
|
|
if($row) {
|
|
$data_per_jawaban = [
|
|
'name' => $v,
|
|
'y' => (float) $row->percent,
|
|
'value' => $row->total_jawaban,
|
|
'total' => $row->total_semua
|
|
];
|
|
|
|
array_push($jawaban, $data_per_jawaban);
|
|
} else {
|
|
$data_per_jawaban = [
|
|
'name' => $v,
|
|
'y' => 0
|
|
];
|
|
array_push($jawaban, $data_per_jawaban);
|
|
}
|
|
} else {
|
|
$get_data = (clone $result)->whereNotIn('d.jawaban', $soal_json['options'])
|
|
->get()
|
|
->toArray();
|
|
|
|
foreach ($get_data as $val) {
|
|
$data_per_jawaban = [
|
|
'name' => $val->jawaban,
|
|
'y' => (float) $val->percent,
|
|
'value' => $val->total_jawaban,
|
|
'total' => $val->total_semua
|
|
];
|
|
array_push($jawaban, $data_per_jawaban);
|
|
}
|
|
}
|
|
}
|
|
} else {
|
|
$get_data = $result->get()
|
|
->toArray();
|
|
foreach ($get_data as $val) {
|
|
$data_per_jawaban = [
|
|
'name' => $val->jawaban,
|
|
'y' => (float) $val->percent,
|
|
'value' => $val->total_jawaban,
|
|
'total' => $val->total_semua
|
|
];
|
|
array_push($jawaban, $data_per_jawaban);
|
|
}
|
|
}
|
|
|
|
$data_persoal = [
|
|
'soal' => $soal_json['soal'],
|
|
'jawaban' => $jawaban
|
|
];
|
|
|
|
array_push($data, $data_persoal);
|
|
}
|
|
|
|
return response()->json([
|
|
'msg' => 'Berhasil',
|
|
'data' => $data
|
|
], 200);
|
|
} catch (\ErrorException $th) {
|
|
return response()->json([
|
|
'msg' => 'Oops something wrong!',
|
|
'data' => null,
|
|
'msg_dev' => $th
|
|
], 500);
|
|
}
|
|
}
|
|
}
|