2025-06-05 15:36:53 +07:00

233 lines
9.2 KiB
PHP

<?php
namespace App\Http\Controllers\Dokter\EMR\CPPT;
use Illuminate\Http\Request;
use Illuminate\Support\Str;
use App\Http\Controllers\Controller;
use App\Http\Controllers\Dokter\Partial\PartialController;
use DB;
use Auth;
use Session;
use Redirect;
class CpptController extends Controller
{
public function viewSoapCPPT(Request $request)
{
$filter_identitas_pasien = (strlen($request->pdnorec) > 8) ? 'pdnorec' : 'nocm';
$getDataPD = PartialController::identitasPasien($filter_identitas_pasien, $request->pdnorec);
if(empty($getDataPD)){
Session::flash('message', "Ops!, Data Tidak Ditemukan.");
return Redirect::back();
}
$dataHistoryCPPT = DB::connection('smart')->select("
select
pasiendaftar_t.norec as pd_norec,
pegawai_m.namalengkap,
pasiendaftar_t.noregistrasi,
ruangan_m.id as id_ruangan,
ruangan_m.namaruangan,
case when cppt_t.flag_ = 1 then 'SOAP' when cppt_t.flag_ = 3 then 'SOAPIE' else 'TBAK' end as keterangan,
cppt_t.norec as cpptnorec,
cppt_t.tglinput,
cppt_t.s,
cppt_t.o,
cppt_t.a,
cppt_t.p,
cppt_t.cppt_i,
cppt_t.cppt_e,
cppt_t.tbak,
cppt_t.pegawaifk
from
cppt_t inner join
pegawai_m on cppt_t.pegawaifk = pegawai_m.id inner join
antrianpasiendiperiksa_t on cppt_t.noregistrasifk = antrianpasiendiperiksa_t.norec inner join
pasiendaftar_t on antrianpasiendiperiksa_t.noregistrasifk = pasiendaftar_t.norec inner join
ruangan_m on cppt_t.ruanganfk = ruangan_m.id
where
cppt_t.statusenabled is true
and cppt_t.flag_ in (1,3,4)
and cppt_t.isverifikasi is true
and cppt_t.pasienfk = ?
order by
cppt_t.tglinput desc
limit 10
", array($getDataPD[0]->nocmfk));
$dataHistoryResep = DB::connection('smart')->select("
select
strukorder_t.tglorder,
pegawai_m.namalengkap
from
t_resep_dokter inner join
strukorder_t on t_resep_dokter.strukorderfk = strukorder_t.norec inner join
pegawai_m on strukorder_t.objectpegawaiorderfk = pegawai_m.id
where
t_resep_dokter.statusenabled is true
and strukorder_t.statusenabled is true
and strukorder_t.nocmfk = ?
order by
strukorder_t.tglorder desc
limit 10
", array($getDataPD[0]->nocmfk));
$dataMasterObat = DB::connection('smart')->select("
select
produk_m.id,
produk_m.namaproduk
from
produk_m inner join
detailjenisproduk_m on produk_m.objectdetailjenisprodukfk = detailjenisproduk_m.id
where
detailjenisproduk_m.objectjenisprodukfk = 97
AND produk_m.statusenabled IS true
order by
namaproduk
limit 20
");
$dataReturn['pdnorec'] = $request->pdnorec;
$dataReturn['pasien_identitas'] = $getDataPD[0];
$dataReturn['his_cppt'] = $dataHistoryCPPT;
$dataReturn['his_resep'] = $dataHistoryResep;
$dataReturn['master_obat'] = $dataMasterObat;
$dataReturn['type'] = $filter_identitas_pasien;
return view('dokter.emr.form.soap')->with("data", $dataReturn);
}
public function formSoapCPPT(Request $request)
{
$filter_identitas_pasien = (strlen($request->pdnorec) > 8) ? 'pdnorec' : 'nocm';
$getDataPD = PartialController::identitasPasien($filter_identitas_pasien, $request->pdnorec);
if(empty($getDataPD)){
Session::flash('message', "Ops!, Data Tidak Ditemukan.");
return Redirect::back();
}
if(isset($request->cpptnorec)){
$dataHistoryCPPT = DB::connection('smart')->select("
select
pasiendaftar_t.norec as pd_norec,
pegawai_m.namalengkap,
pasiendaftar_t.noregistrasi,
ruangan_m.id as id_ruangan,
ruangan_m.namaruangan,
case when cppt_t.flag_ = 1 then 'SOAP' when cppt_t.flag_ = 3 then 'SOAPIE' else 'TBAK' end as keterangan,
cppt_t.norec as cpptnorec,
cppt_t.tglinput,
cppt_t.s,
cppt_t.o,
cppt_t.a,
cppt_t.p,
cppt_t.cppt_i,
cppt_t.cppt_e,
cppt_t.tbak,
cppt_t.pegawaifk
from
cppt_t inner join
pegawai_m on cppt_t.pegawaifk = pegawai_m.id inner join
antrianpasiendiperiksa_t on cppt_t.noregistrasifk = antrianpasiendiperiksa_t.norec inner join
pasiendaftar_t on antrianpasiendiperiksa_t.noregistrasifk = pasiendaftar_t.norec inner join
ruangan_m on cppt_t.ruanganfk = ruangan_m.id
where
cppt_t.statusenabled is true
and cppt_t.flag_ in (1,3,4)
and cppt_t.isverifikasi is true
and cppt_t.norec = ?
order by
cppt_t.tglinput desc
limit 10
", array($request->cpptnorec));
}
$dataReturn['pdnorec'] = $request->pdnorec;
$dataReturn['cpptnorec'] = (isset($request->cpptnorec) ? $request->cpptnorec : null);
$dataReturn['pasien_identitas'] = $getDataPD[0];
$dataReturn['his_cppt'] = (isset($request->cpptnorec)) ? $dataHistoryCPPT[0] : [];
$dataReturn['type'] = $filter_identitas_pasien;
return view('dokter.emr.form.soap-form')->with("data", $dataReturn);
}
public function simpanSoapCPPT(Request $request)
{
$filter_identitas_pasien = (strlen($request->pdnorec) > 8) ? 'pdnorec' : 'nocm';
DB::connection('smart')->beginTransaction();
try {
DB::connection('smart')->table('cppt_t')->insert([
'norec' => $this->generateNorecSmartV1(),
'kdprofile' => 0,
'statusenabled' => 't',
'tglinput' => date('Y-m-d H:i:s'),
'isverifikasi' => true,
'pasienfk' => $request->pasienfk,
'pegawaifk' => Auth::user()->smart_pk,
'noregistrasifk' => $request->noregistrasifk,
'ruanganfk' => $request->ruanganfk,
's' => $request->s,
'o' => $request->o,
'a' => $request->a,
'p' => $request->p,
'flag_' => 1,
]);
DB::connection('smart')->commit();
return redirect()->route('dokter.emr.soap.view', [$filter_identitas_pasien => $request->pdnorec])->with('success','SOAP Berhasil Disimpan.');
} catch (\Exception $e) {
DB::connection('smart')->rollBack();
return back()->with('error', 'Data gagal disimpan, mohon periksa kembali inputan anda.');
}
}
public function updateSoapCPPT(Request $request)
{
$filter_identitas_pasien = (strlen($request->pdnorec) > 8) ? 'pdnorec' : 'nocm';
DB::connection('smart')->beginTransaction();
try {
DB::connection('smart')->table('cppt_t')->where('norec', '=', $request->cpptnorec)->update([
's' => $request->s,
'o' => $request->o,
'a' => $request->a,
'p' => $request->p,
]);
DB::connection('smart')->commit();
return redirect()->route('dokter.emr.soap.view', [$filter_identitas_pasien => $request->pdnorec])->with('success','Edit SOAP Berhasil.');
} catch (\Exception $e) {
DB::connection('smart')->rollBack();
return back()->with('error', 'Data gagal disimpan, mohon periksa kembali inputan anda.');
}
}
public function deleteSoapCPPT(Request $request)
{
$filter_identitas_pasien = (strlen($request->pdnorec) > 8) ? 'pdnorec' : 'nocm';
DB::connection('smart')->beginTransaction();
try {
DB::connection('smart')->table('cppt_t')->where('norec', '=', $request->cpptnorec)->update([
'statusenabled' => false
]);
DB::connection('smart')->commit();
return redirect()->route('dokter.emr.soap.view', [$filter_identitas_pasien => $request->pdnorec])->with('success','Batal SOAP Berhasil.');
} catch (\Exception $e) {
DB::connection('smart')->rollBack();
return back()->with('error', 'Gagal Delete Data.');
}
}
public function generateNorecSmartV1(){
return str_replace("-","",strtolower(Str::uuid()->toString()));
}
}