306 lines
13 KiB
PHP
306 lines
13 KiB
PHP
<?php
|
|
|
|
namespace App\Http\Controllers\Dokter\Order;
|
|
|
|
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 PeresepanObatController extends Controller
|
|
|
|
{
|
|
public function viewPeresepanObat(Request $request)
|
|
{
|
|
$listNorecOrderan = [];
|
|
$returnData = [];
|
|
|
|
$filter_identitas_pasien = (strlen($request->pdnorec) > 8) ? 'pdnorec' : 'nocm';
|
|
$getDataPD = PartialController::identitasPasien($filter_identitas_pasien, $request->pdnorec);
|
|
|
|
if(empty($getDataPD)){
|
|
Session::flash('message', "Special message goes here");
|
|
return Redirect::back();
|
|
}
|
|
$dataHistoryResep = DB::connection('smart')->select("
|
|
select
|
|
t_resep_dokter.strukorderfk,
|
|
strukorder_t.tglorder,
|
|
pegawai_m.namalengkap,
|
|
jeniskemasan_m.jeniskemasan,
|
|
t_resep_dokter.namaobat,
|
|
t_resep_dokter.keteranganpakai,
|
|
t_resep_dokter.keteranganlainnya,
|
|
t_resep_dokter.racikanke,
|
|
t_resep_dokter.qtyproduk
|
|
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 inner join
|
|
jeniskemasan_m on jeniskemasan_m.id = t_resep_dokter.jeniskemasanfk
|
|
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));
|
|
|
|
if(!empty($dataHistoryResep)){
|
|
foreach($dataHistoryResep as $key => $value){
|
|
array_push($listNorecOrderan, $value->strukorderfk);
|
|
$dataRacikenke[$value->strukorderfk]['racikanke'][] = $value->racikanke;
|
|
$dataRacikenke[$value->strukorderfk][$value->racikanke]['jeniskemasan'][] = $value->jeniskemasan;
|
|
$dataRacikenke[$value->strukorderfk][$value->racikanke]['keterangan'][] = $value->keteranganpakai;
|
|
$dataRacikenke[$value->strukorderfk][$value->racikanke]['keteranganlainnya'][] = $value->keteranganlainnya;
|
|
|
|
$dataHead[$value->strukorderfk]['namalengkap'] = $value->namalengkap;
|
|
$dataHead[$value->strukorderfk]['tglorder'] = $value->tglorder;
|
|
$dataHead[$value->strukorderfk]['tglorder'] = $value->tglorder;
|
|
}
|
|
$listNorecOrderan = array_unique($listNorecOrderan);
|
|
|
|
foreach($listNorecOrderan as $perResep){
|
|
$dataRacikanKeUniq = array_unique($dataRacikenke[$perResep]['racikanke']);
|
|
$detailResep = [];
|
|
|
|
foreach($dataRacikanKeUniq as $dataRacikanKe => $valRacikanKe){
|
|
$dataJenisKemasanUniq = array_unique($dataRacikenke[$perResep][$valRacikanKe]['jeniskemasan']);
|
|
$dataKeteranganUniq = array_unique($dataRacikenke[$perResep][$valRacikanKe]['keterangan']);
|
|
$dataKeteranganLainnyaUniq = array_unique($dataRacikenke[$perResep][$valRacikanKe]['keteranganlainnya']);
|
|
|
|
$afterFilterDetails = array_filter($dataHistoryResep, function ($val) use ($perResep, $valRacikanKe) {
|
|
return ($val->strukorderfk == $perResep && $val->racikanke == $valRacikanKe);
|
|
});
|
|
|
|
array_push($detailResep, array(
|
|
'racikanke' => $valRacikanKe,
|
|
'jeniskemasan' => $dataJenisKemasanUniq[0],
|
|
'keteranganpakai' => $dataKeteranganUniq[0],
|
|
'keteranganlainnya' => $dataKeteranganLainnyaUniq[0],
|
|
'details' => $afterFilterDetails
|
|
));
|
|
}
|
|
|
|
array_push($returnData, array(
|
|
'norecOrder' => $perResep,
|
|
'namalengkap' => $dataHead[$perResep]['namalengkap'],
|
|
'tglorder' => $dataHead[$perResep]['tglorder'],
|
|
'detail' => $detailResep
|
|
));
|
|
|
|
}
|
|
}
|
|
|
|
$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_resep'] = $returnData;
|
|
$dataReturn['master_obat'] = $dataMasterObat;
|
|
$dataReturn['type'] = $filter_identitas_pasien;
|
|
|
|
//dd($dataReturn);
|
|
|
|
return view('dokter.order.form.resep')->with("data", $dataReturn);
|
|
}
|
|
|
|
public function formPeresepanObat(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();
|
|
}
|
|
|
|
$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,
|
|
detailjenisproduk_m.id as detid,
|
|
detailjenisproduk_m.detailjenisproduk
|
|
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
|
|
and detailjenisproduk_m.statusenabled is true
|
|
and detailjenisproduk_m.id in (474,1474,1346)
|
|
order by
|
|
namaproduk
|
|
|
|
");
|
|
|
|
$dataReturn['pdnorec'] = $request->pdnorec;
|
|
$dataReturn['pasien_identitas'] = $getDataPD[0];
|
|
$dataReturn['his_resep'] = $dataHistoryResep;
|
|
$dataReturn['master_obat'] = $dataMasterObat;
|
|
$dataReturn['type'] = $filter_identitas_pasien;
|
|
|
|
$assets = ['pro','select2'];
|
|
return view('dokter.order.form.resep-form', compact('assets'))->with("data", $dataReturn);
|
|
}
|
|
|
|
public function SimpanPeresepanObat(Request $request)
|
|
{
|
|
$filter_identitas_pasien = (strlen($request->pdnorec) > 8) ? 'pdnorec' : 'nocm';
|
|
DB::connection('smart')->beginTransaction();
|
|
try {
|
|
$now = date('Y-m-d H:i:s');
|
|
$registrasiDetail = DB::connection('smart')->table('antrianpasiendiperiksa_t as apd')
|
|
->JOIN('pasiendaftar_t as pd','pd.norec','=','apd.noregistrasifk')
|
|
->select('pd.norec','pd.nocmfk','apd.objectruanganfk','pd.objectkelasfk','apd.norec as apdnorec')
|
|
->where('apd.norec',$request->noregistrasifk)
|
|
->first();
|
|
|
|
$newId = DB::connection('smart')->table('strukorder_t')->where('noorder','like',date('ym').'%')->max('noorder');
|
|
$newId = substr(trim($newId),4);
|
|
$newId = (int)$newId + 1;
|
|
$noOrder = date('ym'). str_pad($newId, 6, "0", STR_PAD_LEFT);
|
|
|
|
$strukOrder = [
|
|
'norec' => $this->generateNorecSmartV1(),
|
|
'kdprofile' => 0,
|
|
'statusenabled' => 't',
|
|
'nocmfk' => $registrasiDetail->nocmfk,
|
|
'kddokter' => $request->penulisresepfk,
|
|
'objectjenisorderfk' => 5,
|
|
'isdelivered' => 1,
|
|
'objectkelompoktransaksifk' => 4,
|
|
'keteranganorder' => 'Order Farmasi',
|
|
'noorder' => $noOrder,
|
|
'noregistrasifk' => $registrasiDetail->norec,
|
|
'objectpegawaiorderfk' => $request->penulisresepfk,
|
|
'qtyproduk' => 0,
|
|
'qtyjenisproduk' => 0,
|
|
'objectruanganfk' => $registrasiDetail->objectruanganfk,
|
|
'objectruangantujuanfk' => $this->getRuanganTujuanOrderFarmasi($registrasiDetail->objectruanganfk),
|
|
'statusorder' => 0,
|
|
'tglorder' => $now,
|
|
'totalbeamaterai' => 0,
|
|
'totalbiayakirim' => 0,
|
|
'totalbiayatambahan' => 0,
|
|
'totaldiscount' => 0,
|
|
'totalhargasatuan' => 0,
|
|
'totalharusdibayar' => 0,
|
|
'totalpph' => 0,
|
|
'totalppn' => 0,
|
|
'masalah' => $request->riwayatalergi,
|
|
'diagnosis' => $request->beratbadan,
|
|
'cito' => (isset($request->cito) && $request->cito == 'on') ? true : false,
|
|
'ispickup' => (isset($request->pulang) && $request->pulang == 'on') ? true : false,
|
|
'alamattempattujuan' => 'Tidak',
|
|
];
|
|
|
|
DB::connection('smart')->table('strukorder_t')->insert($strukOrder);
|
|
|
|
foreach($request->resepdokter as $listItemObat){
|
|
$resepDokter = [
|
|
'norec' => $this->generateNorecSmartV1(),
|
|
'statusenabled' => 't',
|
|
'noorderfk' => $strukOrder['norec'],
|
|
'qtyproduk' => $listItemObat['jumlah'],
|
|
'objectruanganfk' => $registrasiDetail->objectruanganfk,
|
|
'strukorderfk' => $strukOrder['norec'],
|
|
'racikanke' => $listItemObat['rke'],
|
|
'jenisobatfk' => 5,
|
|
'jeniskemasanfk' => $listItemObat['jeniskemasanfk'],
|
|
'keteranganlainnya' => $listItemObat['keteranganlainnya'],
|
|
'keteranganpakai' =>$listItemObat['keteranganpakai'],
|
|
'namaobat' => $listItemObat['namaobat'],
|
|
];
|
|
|
|
DB::connection('smart')->table('t_resep_dokter')->insert($resepDokter);
|
|
}
|
|
|
|
DB::connection('smart')->commit();
|
|
return redirect()->route('dokter.order.resep.view', [$filter_identitas_pasien => $request->pdnorec])->with('success','Resep Berhasil Disimpan.');
|
|
|
|
} catch (\Exception $e) {
|
|
DB::connection('smart')->rollBack();
|
|
return back()->with('error', 'Data gagal disimpan, mohon periksa kembali inputan anda.');
|
|
}
|
|
}
|
|
|
|
public function generateNorecSmartV1(){
|
|
return str_replace("-","",strtolower(Str::uuid()->toString()));
|
|
}
|
|
|
|
public function getRuanganTujuanOrderFarmasi($asalOrder){
|
|
if($asalOrder==491){
|
|
return 116;
|
|
} elseif ($asalOrder==510) {
|
|
return 116;
|
|
} elseif ($asalOrder==511) {
|
|
return 116;
|
|
} elseif ($asalOrder==512) {
|
|
return 116;
|
|
} elseif ($asalOrder==514) {
|
|
return 116;
|
|
} elseif ($asalOrder==517) {
|
|
return 116;
|
|
} elseif ($asalOrder==518) {
|
|
return 116;
|
|
} elseif ($asalOrder==519) {
|
|
return 116;
|
|
} elseif ($asalOrder==520) {
|
|
return 116;
|
|
} elseif ($asalOrder==521) {
|
|
return 116;
|
|
} elseif ($asalOrder==522) {
|
|
return 116;
|
|
} elseif ($asalOrder==523) {
|
|
return 116;
|
|
} elseif ($asalOrder==525) {
|
|
return 116;
|
|
} elseif ($asalOrder==531) {
|
|
return 116;
|
|
} elseif ($asalOrder==533) {
|
|
return 116;
|
|
} elseif ($asalOrder==534) {
|
|
return 116;
|
|
} else {
|
|
return 94;
|
|
}
|
|
}
|
|
}
|