This commit is contained in:
Duidev Software House
2025-12-08 19:23:51 +07:00
parent 48dd3b9009
commit 3d3a60c747
14 changed files with 6178 additions and 273 deletions
@@ -170,6 +170,323 @@ class FrontpageController extends Controller
return view('pendaftaran', $data);
}
}
public function viewMobileMode() {
if (Session::get('previlage') == ''){
return redirect('/login');
} else {
$alldata = Periksa::where(function($q) {
$q->where(function($sub) {
$sub->whereNotIn('status', ['Selesai', 'Arsip'])
->where('status', 'not like', 'Dibatalkan%');
})->orWhereNull('status');
})->get();
// Kelompok array
$cairansteril = [15,16,43,47,48,66,96,205,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223];
$cci = [20];
$darah = [7,8,13,17,29,33,44,107,114,115,199,200,201,202];
$feces = [37,38,148,149,204];
$hiv = [30];
$kukukulit = [165,179,180,181,183,184,185,187,188,189,190,192,194,195,196,198];
$kulturtb = [26,40,45,52,53,56,60,61,68,69,75,92,102,122,123,136,137,144,145,152,153,233];
$pusdanjaringan = [18,19,32,35,46,49,50,54,57,58,59,72,160,182,186,191,193,197,206,207,208,224,225,226,227,228,234,235,236,237];
$sputum = [1,12,23,24,36,39,229,230,231,232];
$swab = [2,4,5,9,10,11,12,21,22,27,34,41,42,51,63,64,65,85,86,87,88,93,97,118,120,121,125,126,127,128,129,130,132,133,134,135,140,147,158,159,161,162,163,164,166,167,168,169,170,171,172,173,174,175,176,177,178];
$tcmnontb = [79,80,81,82,83,84,203];
$tcmtb = [14,28,55,62,94,104,105,124,138,146];
$urine = [3,6,25,31,154,155,156,157];
// Semua array kategori digabung menjadi satu untuk mencari "lainnya"
$allCategories = array_merge(
$cairansteril, $cci, $darah, $feces, $hiv, $kukukulit, $kulturtb,
$pusdanjaringan, $sputum, $swab, $tcmnontb, $tcmtb, $urine
);
// Hitung total sesuai kategori
$data['cairansteril'] = $alldata->whereIn('poli_id', $cairansteril)->count();
$data['cci'] = $alldata->whereIn('poli_id', $cci)->count();
$data['darah'] = $alldata->whereIn('poli_id', $darah)->count();
$data['feces'] = $alldata->whereIn('poli_id', $feces)->count();
$data['hiv'] = $alldata->whereIn('poli_id', $hiv)->count();
$data['kukukulit'] = $alldata->whereIn('poli_id', $kukukulit)->count();
$data['kulturtb'] = $alldata->whereIn('poli_id', $kulturtb)->count();
$data['pusdanjaringan'] = $alldata->whereIn('poli_id', $pusdanjaringan)->count();
$data['sputum'] = $alldata->whereIn('poli_id', $sputum)->count();
$data['swab'] = $alldata->whereIn('poli_id', $swab)->count();
$data['tcmnontb'] = $alldata->whereIn('poli_id', $tcmnontb)->count();
$data['tcmtb'] = $alldata->whereIn('poli_id', $tcmtb)->count();
$data['urine'] = $alldata->whereIn('poli_id', $urine)->count();
// Hitung yang tidak masuk kategori mana pun
$data['lainnya'] = $alldata->filter(function ($item) use ($allCategories) {
return !in_array($item->poli_id, $allCategories);
})->count();
// Kirim alldata jika tetap ingin dipakai
$data['alldata'] = $alldata;
return view('mobilemode', $data);
}
}
public function viewTabletsMode($master) {
if (Session::get('previlage') == ''){
return redirect('/login');
} else {
$data = [
'dokters' => User::where('previlage', 'supervisor')->get(),
'allppds' => User::where('previlage', 'ppds')->get(),
'allanalis' => User::where('previlage', 'analis')->get(),
'antrkrmsitu' => 0,
];
$allOrganisms = Organisms::orderBy('name', 'ASC')->get();
$allASTManual = SiraB::whereNotNull('setmanual')->select('setmanual')->groupBy('setmanual')->get();
$groupOrganisms = function ($kelompok) use ($allOrganisms) {
$organisms = $allOrganisms->where('kelompok', $kelompok);
if ($organisms->isEmpty()) {
return [
'organismes' => [[['id' => 0, 'name' => 'No Data']]],
'categories' => ['No Data'],
];
}
$grouped = $organisms->groupBy('category');
$organismes = [];
$categories = [];
$i = 0;
foreach ($grouped as $category => $items) {
$categories[] = $category;
$j = 0;
foreach ($items as $item) {
$organismes[$i][$j] = ['id' => $item->id, 'name' => $item->name];
$j++;
}
$i++;
}
return [
'organismes' => $organismes,
'categories' => $categories,
];
};
$biakankulturData = $groupOrganisms('biakankultur');
$mikroorganismeData = $groupOrganisms('mikroorganisme');
$data = array_merge($data, [
'organismes' => $biakankulturData['organismes'],
'bacterycateggories' => $biakankulturData['categories'],
'mikroorganismes' => $mikroorganismeData['organismes'],
'mikroorganismestlist' => $mikroorganismeData['categories'],
]);
$kelompokMapping = [
'jsonsputum' => 'Sputum',
'jsonswabtenggorok' => 'Swab Tenggorok',
'jsonurine' => 'Urine',
'jsonswabperineum' => 'Swab perineum',
'jsonselepitel' => 'Sel Epitel',
'jsonselradang' => 'Sel Radang',
'jsonmikroorganisme' => 'Q Mikroorganisme',
'jsonjumlahlactobacillus' => 'Lactobacillus',
'jsonjumlahgardnerella' => 'Gardnerella',
'jsonjumlahmobiluncus' => 'Mobiluncus',
'jsonpewarnaanziehlnielsen' => 'Pewarnaan Ziehl Nielsen',
'jsonpewarnaanneisser' => 'Pewarnaan Neisser',
'jsonpewarnaannegatif' => 'Pewarnaan Negatif',
'jsonpewarnaanspora' => 'Pewarnaan Spora',
'jsonmediabap' => 'Media BAP',
'jsonmediacap' => 'Media CAP',
'jsonmediamcconkey' => 'Media Mc Conkey',
'jsonpemeriksaantl' => 'Pemeriksaan Tambahan Lainnya',
'jsonbiakankultur' => 'Biakan Kultur',
];
foreach ($kelompokMapping as $key => $kelompok) {
$data[$key] = $allOrganisms->where('kelompok', $kelompok)->values();
}
$kelompokBuku = [
'buku01' => 'Cairan Steril',
'buku02' => 'CCI',
'buku03' => 'Darah',
'buku04' => 'HIV',
'buku05' => 'Kuku, Kulit, Adnexa',
'buku06' => 'Kultur TB',
'buku07' => 'Pus dan Jaringan',
'buku08' => 'Sputum',
'buku09' => 'Swab',
'buku10' => 'TCM TB',
'buku11' => 'TCM non-TB',
'buku12' => 'Urine',
'buku13' => 'Feces',
'buku0' => 'Unknown',
];
$data['antibiotics']= $allASTManual;
$data['lokasi'] = 'Lab Mikrobiologi';
$data['master'] = $kelompokBuku[$master] ?? 'Unknown';
$cairansteril = [15,16,43,47,48,66,96,205,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223];
$cci = 20;
$darah = [7,8,13,17,29,33,44,107,114,115,199,200,201,202];
$feces = [37,38,148,149,204];
$hiv = 30;
$kukukulit = [165,179,180,181,183,184,185,187,188,189,190,192,194,195,196,198];
$kulturtb = [26,40,45,52,53,56,60,61,68,69,75,92,102,122,123,136,137,144,145,152,153,233];
$pusdanjaringan = [18,19,32,35,46,49,50,54,57,58,59,72,160,182,186,191,193,197,206,207,208,224,225,226,227,228,234,235,236,237];
$sputum = [1,12,23,24,36,39,229,230,231,232];
$swab = [2,4,5,9,10,11,12,21,22,27,34,41,42,51,63,64,65,85,86,87,88,93,97,118,120,121,125,126,127,128,129,130,132,133,134,135,140,147,158,159,161,162,163,164,166,167,168,169,170,171,172,173,174,175,176,177,178];
$tcmnontb = [79,80,81,82,83,84,203];
$tcmtb = [14,28,55,62,94,104,105,124,138,146];
$urine = [3,6,25,31,154,155,156,157];
//jikabukan_array_tambahkan_kurung
$mapped = array_merge(
$cairansteril,
[$cci],
$darah,
$feces,
[$hiv],
$kukukulit,
$kulturtb,
$pusdanjaringan,
$sputum,
$swab,
$tcmnontb,
$tcmtb,
$urine
);
$arraylist = Periksa::select(
'id', 'mulai', 'akhir', 'orderid', 'noloket', 'nofoto', 'noregister', 'asalpasien', 'nmrs', 'pasien_id', 'nmpasien',
'jkpasien', 'tgllahirpasien', 'tlppasien', 'alamatpasien', 'reques', 'usia', 'berat', 'ktp', 'bpjs', 'ruangan_id',
'ruangan', 'dokter_id', 'ppdssenior', 'middleppds', 'ppdsjunior', 'ppdsmiddle2', 'ppdsjunior2', 'analis', 'excutor',
'nmdokter', 'nmppdssenior', 'nmmiddleppds', 'nmppdsjunior', 'nmppdsmiddle2', 'nmppdsjunior2', 'nmanalis', 'nmexcutor',
'klinisi', 'klinis', 'keterangan', 'kesimpulan', 'poli_id', 'asuransi', 'urgensi', 'diagnosa', 'diagnosa2', 'modality',
'kd_spesimen', 'nm_spesimen', 'dlp', 'daftar', 'foto', 'tgldraft', 'nmdrafter', 'baca', 'nmpembaca', 'verifikasi',
'export', 'tgladendum', 'nmadendum', 'filefoto', 'pendaftar', 'status', 'created_at', 'updated_at',
'bhp_media', 'bhp_potsputum', 'bhp_poturine', 'bhp_oshe', 'bhp_obyekglass', 'bhp_botolbd', 'bhp_parafilm',
'bhp_tips', 'bhp_cottonswab', 'bhp_antibiotiktambahan', 'id_esbl', 'id_mrsa', 'rating', 'nmpendaftar',
DB::raw("DATE(daftar) as daftartgl"),
DB::raw("TO_CHAR(daftar, 'HH24:MI:SS') as daftarjam"),
DB::raw("TO_CHAR(export, 'HH24:MI:SS') as cetakjam"),
DB::raw("TO_CHAR(verifikasi, 'HH24:MI:SS') as verifikasijam"),
DB::raw("TO_CHAR(baca, 'HH24:MI:SS') as bacajam"),
DB::raw("TO_CHAR(foto, 'HH24:MI:SS') as fotojam"),
DB::raw("CASE WHEN jkpasien = 'L' THEN '1' ELSE '' END AS l"),
DB::raw("CASE WHEN jkpasien = 'P' THEN '1' ELSE '' END AS p"),
DB::raw("CONCAT('https://10.10.123.218/hasil/', nofoto::text) as urlhasil"),
DB::raw("CASE WHEN asuransi IN ('JKN', 'BPJS') THEN '1' ELSE '' END AS jkn"),
DB::raw("CASE WHEN asuransi = 'Billing' THEN '1' ELSE '' END AS billing"),
DB::raw("CASE WHEN asuransi = 'GCU' THEN '1' ELSE '' END AS gcu"),
DB::raw("CASE WHEN asuransi IN ('MANDIRI', 'Umum') THEN '1' ELSE '' END AS umum"),
DB::raw("CASE WHEN asuransi = 'SWASTA' THEN '1' ELSE '' END AS swasta"),
DB::raw("CASE WHEN asuransi = 'TAG' THEN '1' ELSE '' END AS tag"),
DB::raw("CASE WHEN urgensi != 'CITO' THEN '1' ELSE '' END AS elective"),
DB::raw("CASE WHEN urgensi = 'CITO' THEN '1' ELSE '' END AS cito"),
DB::raw("CASE
WHEN status IS NULL THEN '<span class=\"badge badge-danger\">NEW</span>'
WHEN status = '' THEN '<span class=\"badge badge-danger\">NEW</span>'
WHEN status LIKE '%Dibatalkan%' THEN '<font color=grey>Batal</font>'
WHEN status LIKE '%Pemeriksaan Sampel%' THEN '<font color=green>Pemeriksaan Sampel</font>'
WHEN status LIKE '%Proses Analisis Sampel%' THEN '<strong>Diperiksa</strong>'
WHEN status LIKE '%Draft%' THEN '<font color=green>Draft</font>'
WHEN status LIKE '%Expertise%' THEN '<strong><font color=green>Expertise</font></strong>'
WHEN status LIKE '%Decliend%' THEN '<strong><font color=red>Decliend</font></strong>'
WHEN status LIKE '%Selesai%' THEN '<span class=\"badge badge-success\">Selesai</span>'
WHEN status LIKE '%Arsip%' THEN '<span class=\"badge badge-primary\">Arsip</span>'
WHEN status LIKE '%Data Vitek di Terima%' THEN '<span class=\"badge badge-warning\">Data Vitek di Terima</span>'
ELSE CONCAT('<span class=\"badge badge-info\">', status::text, '</span>')
END AS tlsstatus"),
DB::raw("CASE
WHEN status IS NULL THEN CONCAT('<span class=\"badge badge-danger\">', nofoto::text, '</span>')
WHEN status LIKE '%Dibatalkan%' THEN CONCAT('<font color=grey>', nofoto::text, '</font>')
WHEN status LIKE '%Pemeriksaan Sampel%' THEN CONCAT('<font color=green>', nofoto::text, '</font>')
WHEN status LIKE '%Proses Analisis Sampel%' THEN CONCAT('<strong>', nofoto::text, '</strong>')
WHEN status LIKE '%Draft%' THEN CONCAT('<font color=green>', nofoto::text, '</font>')
WHEN status LIKE '%Expertise%' THEN CONCAT('<strong><font color=green>', nofoto::text, '</font></strong>')
WHEN status LIKE '%Decliend%' THEN CONCAT('<strong><font color=red>', nofoto::text, '</font></strong>')
WHEN status LIKE '%Selesai%' THEN CONCAT('<span class=\"badge badge-success\">', nofoto::text, '</span>')
WHEN status LIKE '%Arsip%' THEN CONCAT('<span class=\"badge badge-primary\">', nofoto::text, '</span>')
ELSE CONCAT('<font color=red>', nofoto::text, '</font>')
END AS tlsnofoto"),
DB::raw("CASE
WHEN status IS NULL THEN CONCAT('<span class=\"badge badge-danger\">', noregister::text, '</span>')
WHEN status LIKE '%Dibatalkan%' THEN CONCAT('<font color=grey>', noregister::text, '</font>')
WHEN status LIKE '%Pemeriksaan Sampel%' THEN CONCAT('<font color=green>', noregister::text, '</font>')
WHEN status LIKE '%Proses Analisis Sampel%' THEN CONCAT('<strong>', noregister::text, '</strong>')
WHEN status LIKE '%Draft%' THEN CONCAT('<font color=green>', noregister::text, '</font>')
WHEN status LIKE '%Expertise%' THEN CONCAT('<strong><font color=green>', noregister::text, '</font></strong>')
WHEN status LIKE '%Decliend%' THEN CONCAT('<strong><font color=red>', noregister::text, '</font></strong>')
WHEN status LIKE '%Selesai%' THEN CONCAT('<span class=\"badge badge-success\">', noregister::text, '</span>')
WHEN status LIKE '%Arsip%' THEN CONCAT('<span class=\"badge badge-primary\">', noregister::text, '</span>')
ELSE CONCAT('<font color=red>', noregister::text, '</font>')
END AS tlsnoregister"),
DB::raw("CASE
WHEN status IS NULL THEN CONCAT('<span class=\"badge badge-danger\">', nmpasien::text, '</span>')
WHEN status LIKE '%Dibatalkan%' THEN CONCAT('<font color=grey>', nmpasien::text, '</font>')
WHEN status LIKE '%Pemeriksaan Sampel%' THEN CONCAT('<font color=green>', nmpasien::text, '</font>')
WHEN status LIKE '%Proses Analisis Sampel%' THEN CONCAT('<strong>', nmpasien::text, '</strong>')
WHEN status LIKE '%Draft%' THEN CONCAT('<font color=green>', nmpasien::text, '</font>')
WHEN status LIKE '%Expertise%' THEN CONCAT('<strong><font color=green>', nmpasien::text, '</font></strong>')
WHEN status LIKE '%Decliend%' THEN CONCAT('<strong><font color=red>', nmpasien::text, '</font></strong>')
WHEN status LIKE '%Selesai%' THEN CONCAT('<span class=\"badge badge-success\">', nmpasien::text, '</span>')
WHEN status LIKE '%Arsip%' THEN CONCAT('<span class=\"badge badge-primary\">', nmpasien::text, '</span>')
ELSE CONCAT('<font color=red>', nmpasien::text, '</font>')
END AS tlsnama"),
DB::raw("CASE
WHEN status IS NULL THEN CONCAT('<span class=\"badge badge-danger\">', reques::text, '</span>')
WHEN status LIKE '%Dibatalkan%' THEN CONCAT('<font color=grey>', reques::text, '</font>')
WHEN status LIKE '%Pemeriksaan Sampel%' THEN CONCAT('<font color=green>', reques::text, '</font>')
WHEN status LIKE '%Proses Analisis Sampel%' THEN CONCAT('<strong>', reques::text, '</strong>')
WHEN status LIKE '%Draft%' THEN CONCAT('<font color=green>', reques::text, '</font>')
WHEN status LIKE '%Expertise%' THEN CONCAT('<strong><font color=green>', reques::text, '</font></strong>')
WHEN status LIKE '%Decliend%' THEN CONCAT('<strong><font color=red>', reques::text, '</font></strong>')
WHEN status LIKE '%Selesai%' THEN CONCAT('<span class=\"badge badge-success\">', reques::text, '</span>')
WHEN status LIKE '%Arsip%' THEN CONCAT('<span class=\"badge badge-primary\">', reques::text, '</span>')
ELSE CONCAT('<font color=red>', reques::text, '</font>')
END AS tlsreques")
);
if ($master == 'buku01'){
$arraylist = $arraylist->whereIn('poli_id', $cairansteril);
} else if ($master == 'buku02') {
$arraylist = $arraylist->where('poli_id', $cci);
} else if ($master == 'buku03') {
$arraylist = $arraylist->whereIn('poli_id', $darah);
} else if ($master == 'buku04') {
$arraylist = $arraylist->where('poli_id', $hiv);
} else if ($master == 'buku05') {
$arraylist = $arraylist->whereIn('poli_id', $kukukulit);
} else if ($master == 'buku06') {
$arraylist = $arraylist->whereIn('poli_id', $kulturtb);
} else if ($master == 'buku07') {
$arraylist = $arraylist->whereIn('poli_id', $pusdanjaringan);
} else if ($master == 'buku08') {
$arraylist = $arraylist->whereIn('poli_id', $sputum);
} else if ($master == 'buku09') {
$arraylist = $arraylist->whereIn('poli_id', $swab);
} else if ($master == 'buku10') {
$arraylist = $arraylist->whereIn('poli_id', $tcmtb);
} else if ($master == 'buku11') {
$arraylist = $arraylist->whereIn('poli_id', $tcmnontb);
} else if ($master == 'buku12') {
$arraylist = $arraylist->whereIn('poli_id', $urine);
} else if ($master == 'buku13') {
$arraylist = $arraylist->whereIn('poli_id', $feces);
} else if ($master == 'buku0') {
$arraylist = $arraylist->whereNotIn('poli_id', $mapped);
} else {
}
$arraylist = $arraylist->where(function($q) {
$q->where(function($sub) {
$sub->whereNotIn('status', ['Selesai', 'Arsip'])
->where('status', 'not like', 'Dibatalkan%');
})->orWhereNull('status');
});
$data['alldata'] = $arraylist->orderBy('daftar', 'ASC')->get();
return view('dokter.tabsmode', $data);
}
}
public function autocompleteKlinik(Request $request){
$search = $request->get('term');
$result = Ruangan::where('ruangan', 'LIKE', '%'.$search.'%')->get();