01-03-2025

This commit is contained in:
Duidev Software House
2025-03-01 14:10:05 +07:00
parent 0fb1978a0e
commit 52893f4eb9
8 changed files with 2591 additions and 1721 deletions

View File

@@ -130,6 +130,7 @@ class DokterController extends Controller
$data['periksa'] = $periksa;
$data['keterangan'] = $keterangan;
$data['tandatangananalis'] = $tandatangananalis;
$data['ttdanalis'] = $tandatangananalis;
$data['tandatangan'] = $tandatangan;
$data['ppds'] = $ppds;
$data['kopsurat'] = $kopsurat;
@@ -173,63 +174,75 @@ class DokterController extends Controller
public function reportppds() {
$previlage = Session('previlage');
if ($previlage == 'developer' OR $previlage == 'supervisor') {
$data = [];
$dokters = User::where('previlage', 'supervisor')->get();
$allppds = User::where('previlage', 'ppds')->get();
$allanalis = User::where('previlage', 'analis')->get();
$organismslis = Organisms::where('kelompok', 'biakankultur')->groupBy('category')->select('category')->get();
$i = 0;
foreach ($organismslis as $rorganisme) {
$j = 0;
$category = $rorganisme->category;
$rooms = Organisms::where('kelompok', 'biakankultur')->where('category', $category)->orderBy('name', 'ASC')->get();
foreach ($rooms as $room) {
$data['organismes'][$i][$j]['id'] = $room->id;
$data['organismes'][$i][$j]['name'] = $room->name;
$j++;
$data = [
'dokters' => User::where('previlage', 'supervisor')->get(),
'allppds' => User::where('previlage', 'ppds')->get(),
'allanalis' => User::where('previlage', 'analis')->get(),
'lokasi' => 'Lab Mikrobiologi',
'master' => 'mikro',
'antrkrmsitu' => 0,
];
$allOrganisms = Organisms::orderBy('name', 'ASC')->get();
$groupOrganisms = function ($kelompok) use ($allOrganisms) {
$organisms = $allOrganisms->where('kelompok', $kelompok);
if ($organisms->isEmpty()) {
return [
'organismes' => [[['id' => 0, 'name' => 'No Data']]],
'categories' => ['No Data'],
];
}
$i++;
}
$x = 0;
foreach ($organismslis as $rows) {
$data['bacterycateggories'][$x] = $rows->category;
$x++;
}
if ($x == 0){
$data['organismes'][0][0]['id'] = 0;
$data['organismes'][0][0]['name'] = 'No Data';
$data['bacterycateggories'][0] = 'No Data';
}
$mikroorganismelist = Organisms::where('kelompok', 'mikroorganisme')->groupBy('category')->select('category')->get();
$i = 0;
foreach ($mikroorganismelist as $rorganisme) {
$j = 0;
$category = $rorganisme->category;
$rooms = Organisms::where('kelompok', 'mikroorganisme')->where('category', $category)->orderBy('name', 'ASC')->get();
foreach ($rooms as $room) {
$data['mikroorganismes'][$i][$j]['id'] = $room->id;
$data['mikroorganismes'][$i][$j]['name'] = $room->name;
$j++;
$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++;
}
$i++;
return [
'organismes' => $organismes,
'categories' => $categories,
];
};
$biakankulturData = $groupOrganisms('biakankultur');
$mikroorganismeData = $groupOrganisms('mikroorganisme');
// Gabungkan data
$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();
}
$x = 0;
foreach ($mikroorganismelist as $rows) {
$data['mikroorganismestlist'][$x] = $rows->category;
$x++;
}
if ($x == 0){
$data['mikroorganismes'][0][0]['id'] = 0;
$data['mikroorganismes'][0][0]['name'] = 'No Data';
$data['mikroorganismestlist'][0] = 'No Data';
}
$data['allppds'] = $allppds;
$data['dokters'] = $dokters;
$data['allanalis'] = $allanalis;
$data['antrkrmsitu']= PeriksaSYNC::where('created_by', Session('username'))->where('status', '')->count();
$data['lokasi'] = 'Lab Mikrobiologi';
$data['master'] = 'mikro';
$previlage = Session('previlage');
return view('dokter.pemeriksaan', $data);
} else {
$data = [];
@@ -948,11 +961,30 @@ class DokterController extends Controller
Periksa::where('nofoto', $nofoto)->update([
'bhp_cottonswab' => $request->input('isi'),
]);
} else if ($request->input('komponen') == 'id_esbl'){
Periksa::where('nofoto', $nofoto)->update([
'id_esbl' => $request->input('isi'),
]);
} else if ($request->input('komponen') == 'id_mrsa'){
Periksa::where('nofoto', $nofoto)->update([
'id_mrsa' => $request->input('isi'),
]);
} else {
Periksa::where('nofoto', $nofoto)->update([
'bhp_antibiotiktambahan' => $request->input('isi'),
]);
}
KomponenJawaban::updateOrCreate(
[
'accnumber' => $nofoto,
'template' => $request->input('jenis'),
'komponen' => $request->input('komponen'),
],
[
'isidata' => $request->input('isi'),
'created_by' => Session('nama')
]
);
$pesan = $nofoto.' Saved '.$request->input('jenis');
} catch (Exception $e) {
$pesan = $e->getMessage();

View File

@@ -88,39 +88,7 @@ class FrontpageController extends Controller
}
}
public function getKalenderlist() {
$data = [];
$idne = '';
$jadwals = Periksa::whereDate('daftar', '>=', Carbon::yesterday())->orderBy('daftar', 'ASC')->orderBy('ruangan_id', 'ASC')->get();
if (!empty($jadwals)){
foreach ($jadwals as $hcari) {
$nofoto = $hcari->nofoto;
$ruang = $hcari->ruangan;
$mulai = $hcari->mulai;
$akhir = $hcari->akhir;
$reques = $hcari->reques;
$arrayttl = explode(" ", $mulai);
$tanggal = $arrayttl[0];
$jam = $arrayttl[1];
$cnama = $hcari->getPasien->nama ?? 'Deleted Data Pasien';
$ctelpon = $hcari->getPasien->telpon ?? '';
$calam = $hcari->getPasien->alamat ?? '';
$ckota = $hcari->getPasien->kota ?? '';
$keperluan = 'On '.$ruang.' Request '.$reques.' for '.$cnama;
$start = Carbon::parse($mulai)->format('Y-m-d H:i:s');
$end = Carbon::parse($akhir)->format('Y-m-d H:i:s');
if ($idne == ''){ $idne = 'id1'; }
else { $idne = $hcari->id; }
$data[] = array(
'id' => $idne,
'description' => $reques,
'location' => $hcari->urgensi,
'subject' => $keperluan,
'calendar' => $ruang,
'start' => $start,
'end' => $end,
);
}
}
$data = Periksa::select('id as idne', 'mulai as start', 'akhir as end', 'reques as description', 'urgensi as location', 'ruangan as calendar', DB::raw("CONCAT('on ', ruangan, ' Request ', reques, ' for Patient ID ', noregister) as subject"), 'daftar', 'ruangan_id')->where('daftar', '>=', Carbon::yesterday())->orderBy('daftar', 'ASC')->orderBy('ruangan_id', 'ASC')->get();
echo json_encode($data);
}
public function pendaftaran() {
@@ -160,12 +128,9 @@ class FrontpageController extends Controller
}
}
public function viewMikro() {
// Cek previlage
if (!Session::has('previlage')) {
return redirect('/login');
}
// Data umum
$data = [
'dokters' => User::where('previlage', 'supervisor')->get(),
'allppds' => User::where('previlage', 'ppds')->get(),
@@ -174,27 +139,19 @@ class FrontpageController extends Controller
'master' => 'mikro',
'antrkrmsitu' => 0,
];
// Ambil semua data organisme sekaligus
$allOrganisms = Organisms::orderBy('name', 'ASC')->get();
// Fungsi helper untuk mengelompokkan data organisme
$allOrganisms = Organisms::orderBy('name', 'ASC')->get();
$groupOrganisms = function ($kelompok) use ($allOrganisms) {
$organisms = $allOrganisms->where('kelompok', $kelompok);
$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;
$i = 0;
foreach ($grouped as $category => $items) {
$categories[] = $category;
$j = 0;
@@ -204,15 +161,13 @@ class FrontpageController extends Controller
}
$i++;
}
return [
'organismes' => $organismes,
'categories' => $categories,
];
};
// Data untuk biakankultur dan mikroorganisme
$biakankulturData = $groupOrganisms('biakankultur');
$biakankulturData = $groupOrganisms('biakankultur');
$mikroorganismeData = $groupOrganisms('mikroorganisme');
// Gabungkan data

View File

@@ -315,6 +315,8 @@ class ReportController extends Controller
$getarray = explode('?', $bulan);
$bulan = $getarray[0] ?? date('m');
$tahun = $getarray[1] ?? date('Y');
$bulan = str_replace('bulan=', '', $bulan);
$tahun = str_replace('tahun=', '', $tahun);
}
if ($bulan == '' OR $bulan == 'ALL' OR $bulan == 'Pick Month') {
$orderbydate = Periksa::whereYear('daftar', $tahun)->get();
@@ -333,6 +335,8 @@ class ReportController extends Controller
$getarray = explode('?', $bulan);
$bulan = $getarray[0] ?? date('m');
$tahun = $getarray[1] ?? date('Y');
$bulan = str_replace('bulan=', '', $bulan);
$tahun = str_replace('tahun=', '', $tahun);
}
if ($bulan == '' OR $bulan == 'ALL' OR $bulan == 'Pick Month') {
$orderbydate = Periksa::whereYear('daftar', $tahun)->get();

View File

@@ -87,6 +87,8 @@ return new class extends Migration
$table->integer('bhp_tips')->nullable();
$table->integer('bhp_cottonswab')->nullable();
$table->integer('bhp_antibiotiktambahan')->nullable();
$table->string('id_esbl', 5)->nullable();
$table->string('id_mrsa', 5)->nullable();
$table->timestamp('created_at')->useCurrent();
$table->timestamp('updated_at')->useCurrent();
});

View File

@@ -15,7 +15,9 @@
<div class="ribbon ribbon-danger">Rekapitulasi Data Bulan {{$bulan}} Tahun {{$tahun}}</div>
<p></p>
<div class="table-responsive">
<table id="datatable" class="table table-bordered display">
<button type="button" class="btn btn-primary" id="btnexport"><i class="fa fa-print"></i> Export</button>
<table id="glassreport" class="table table-bordered display">
<thead>
<tr>
<th>ID Rumah Sakit</th>
@@ -42,7 +44,7 @@
<tbody>
@forelse($orderbydate ?? [] as $data)
<tr>
<td></td>
<td>&nbsp;</td>
<td>{{ $data->nmpasien }}</td>
<td>{{ $data->noregister }}</td>
<td>{{ $data->jkpasien }}</td>
@@ -51,9 +53,11 @@
<td>{{ $data->asalpasien }}</td>
<td>{{ $data->mulai }}</td>
<td>{{ $data->daftar }}</td>
<td>&nbsp;</td>
<td>{{ $data->kd_spesimen }}</td>
<td>{{ $data->nm_spesimen }}</td>
<td>{{ $data->nm_spesimen }}</td>
<td>{{ $data->updated_at }}</td>
<td>{{ $data->id_esbl }}</td>
<td>{{ $data->id_mrsa }}</td>
@if(!empty($jsonantibiotik))
@foreach($jsonantibiotik as $antibiotic)
@php
@@ -80,4 +84,21 @@
</div>
</div>
<input type="hidden" name="_token" id="token" value="{{ csrf_token() }}">
@endsection
@endsection
@push('script')
<!-- SIGNATURE PAD -->
<script src="https://cdnjs.cloudflare.com/ajax/libs/xlsx/0.17.0/xlsx.full.min.js"></script>
<script type="text/javascript">
document.addEventListener('DOMContentLoaded', function() {
document.getElementById('btnexport').addEventListener('click', function() {
var table = document.getElementById('glassreport');
if (table) {
var wb = XLSX.utils.table_to_book(table, { sheet: "Report" });
XLSX.writeFile(wb, "GlassReport_{{$bulan}}_Tahun{{$tahun}}.xlsx");
} else {
console.error('Tabel dengan ID "tblkeaktifankelas" tidak ditemukan.');
}
});
});
</script>
@endpush

View File

@@ -8,7 +8,9 @@
<div class="ribbon ribbon-danger">Rekapitulasi Data Bulan {{$bulan}} Tahun {{$tahun}}</div>
<p></p>
<div class="table-responsive">
<table id="datatable" class="table table-bordered display">
<button type="button" class="btn btn-primary" id="btnexport"><i class="fa fa-print"></i> Export</button>
<table id="rekapantibiotik" class="table table-bordered display">
<thead>
<tr>
<th>No</th>
@@ -23,6 +25,18 @@
<th>Code</th>
<th>Spesimen</th>
<th>Finish</th>
<th>bhp_media</th>
<th>bhp_potsputum</th>
<th>bhp_poturine</th>
<th>bhp_oshe</th>
<th>bhp_obyekglass</th>
<th>bhp_botolbd</th>
<th>bhp_parafilm</th>
<th>bhp_tips</th>
<th>bhp_cottonswab</th>
<th>bhp_antibiotiktambahan</th>
<th>id_esbl</th>
<th>id_mrsa</th>
@if(isset($jsonantibiotik) && !empty($jsonantibiotik))
@foreach($jsonantibiotik->first() as $antibiotic)
<th>{{ $antibiotic->antibiotic }}</th>
@@ -46,10 +60,24 @@
<td>{{ $data->kd_spesimen }}</td>
<td>{{ $data->nm_spesimen }}</td>
<td>{{ $data->updated_at }}</td>
<td>{{ $data->bhp_media}} </td>
<td>{{ $data->bhp_potsputum}} </td>
<td>{{ $data->bhp_poturine}} </td>
<td>{{ $data->bhp_oshe}} </td>
<td>{{ $data->bhp_obyekglass}} </td>
<td>{{ $data->bhp_botolbd}} </td>
<td>{{ $data->bhp_parafilm}} </td>
<td>{{ $data->bhp_tips}} </td>
<td>{{ $data->bhp_cottonswab}} </td>
<td>{{ $data->bhp_antibiotiktambahan}} </td>
<td>{{ $data->id_esbl}} </td>
<td>{{ $data->id_mrsa}} </td>
@if(isset($jsonantibiotik[$data->id]) && !empty($jsonantibiotik[$data->id]))
@foreach($jsonantibiotik[$data->id] as $antibiotic)
<td>{{ $antibiotic->interpretation }}</td>
@endforeach
@else
<td>&nbsp;</td>
@endif
</tr>
@endforeach
@@ -65,4 +93,21 @@
</div>
</div>
<input type="hidden" name="_token" id="token" value="{{ csrf_token() }}">
@endsection
@endsection
@push('script')
<!-- SIGNATURE PAD -->
<script src="https://cdnjs.cloudflare.com/ajax/libs/xlsx/0.17.0/xlsx.full.min.js"></script>
<script type="text/javascript">
document.addEventListener('DOMContentLoaded', function() {
document.getElementById('btnexport').addEventListener('click', function() {
var table = document.getElementById('rekapantibiotik');
if (table) {
var wb = XLSX.utils.table_to_book(table, { sheet: "Report" });
XLSX.writeFile(wb, "RekapanAntiBiotik_{{$bulan}}_Tahun{{$tahun}}.xlsx");
} else {
console.error('Tabel dengan ID "tblkeaktifankelas" tidak ditemukan.');
}
});
});
</script>
@endpush

File diff suppressed because it is too large Load Diff

View File

@@ -34,7 +34,7 @@
<select class="form-control" id="valjenis" name="valjenis">
<option value="searchbydate">Pencarian Berdasarkan Tanggal</option>
<option value="norm">No.RM</option>
<option value="nofoto">No.Foto</option>
<option value="nofoto">No.Lab</option>
<option value="rekues">Request/Modality</option>
<option value="keterangan">Expertise</option>
<option value="kesimpulan">Expertise + Date</option>
@@ -2270,9 +2270,9 @@
}
function openedpage( jQuery ){
var jenis = document.getElementById('master_set01').value;
var mulai = document.getElementById('mulai').value;
var akhir = document.getElementById('akhir').value;
var valcari = document.getElementById('valcari').value;
var mulai = '';
var akhir = '';
var valcari = '';
var master = document.getElementById('master_lokasi').value;
var poli = document.getElementById('valpoli2').value;
var set06 = document.getElementById('master_judul').value;
@@ -2825,7 +2825,6 @@
CKEDITOR.env.isCompatible = true;
CKEDITOR.replace( 'keterangan');
CKEDITOR.replace( 'kesimpulan');
CKEDITOR.replace( 'read_adendum');
CKEDITOR.replace( 'lsg_ditemukanmorfologi');
CKEDITOR.replace( 'lsg_pewarnaanlain');
CKEDITOR.replace( 'viralload');