diff --git a/Modules/HospitalPortal/Routes/api.php b/Modules/HospitalPortal/Routes/api.php index 9f18de88..f1cd4b58 100755 --- a/Modules/HospitalPortal/Routes/api.php +++ b/Modules/HospitalPortal/Routes/api.php @@ -16,6 +16,7 @@ use Modules\HospitalPortal\Http\Middleware\Authentication; use Modules\HospitalPortal\Http\Middleware\Authorization; use Modules\Internal\Http\Controllers\Api\NavigationController; use Modules\Linksehat\Http\Controllers\Api\AutocompleteController; +use Modules\Primaya\Http\Controllers\Api\MasterController; /* |-------------------------------------------------------------------------- @@ -128,6 +129,8 @@ Route::prefix('v1')->group(function() { Route::get('get-claim-requests', [ClaimRequestController::class, 'get_claim_requests'])->name('claim-requests.get_claim_requests'); Route::get('detail-claim-requests/{id}', [ClaimRequestController::class, 'detail_claim_requests'])->name('claim-requests.detail_claim_requests'); Route::post('claim-requests/{id}/request-files', [ClaimRequestController::class, 'requestFiles']); + + Route::get('organizations', [MasterController::class, 'organizations']); }); diff --git a/Modules/Internal/Http/Controllers/Api/RequestLogController.php b/Modules/Internal/Http/Controllers/Api/RequestLogController.php index d66b3255..8c924a14 100755 --- a/Modules/Internal/Http/Controllers/Api/RequestLogController.php +++ b/Modules/Internal/Http/Controllers/Api/RequestLogController.php @@ -129,7 +129,7 @@ class RequestLogController extends Controller if ($request->member_id){ try { $code = !empty($this->getNextCode($request)) ? $this->getNextCode($request) : null; - + $member = Member::find($request->member_id); $memberValid = false; if ($member){ @@ -349,7 +349,7 @@ class RequestLogController extends Controller if ($request->status_approval){ $requestLog->status_approval = $request->status_approval; $requestLog->approval_nominal_by = auth()->user()->id; - } + } $requestLog->save(); @@ -529,6 +529,10 @@ class RequestLogController extends Controller $requestLog->type_of_member = $request->type_of_member; } + if (!empty($request->organization_id)){ + $requestLog->organization_id = $request->organization_id; + } + $requestLog->final_log = 1; $requestLog->approved_final_log_by = auth()->user()->id; $requestLog->approved_final_log_at = Carbon::now(); @@ -1138,8 +1142,8 @@ class RequestLogController extends Controller $organization = Organization::where(['id' => $request->organization_id, 'type' => 'hospital'])->first('code'); $provideCode = $organization ? $organization->code : ''; $member = Member::with(['currentCorporate','currentPolicy' ])->where(['id' => $request->member_id])->first(); - - + + $data = [ 'source' => $source, 'provideCode' => $provideCode, @@ -1148,7 +1152,7 @@ class RequestLogController extends Controller 'member_code' => $member->member_id, ]; - + $last_numeric_code = RequestLog::select(DB::raw('MAX(CAST(SUBSTRING_INDEX(code, ".", -1) AS SIGNED)) as max_numeric_code')) ->whereRaw('SUBSTRING_INDEX(code, ".", -1) REGEXP "^[0-9]+$"') @@ -1307,7 +1311,7 @@ class RequestLogController extends Controller { // Ambil data file dari database $file = File::where('path', $request->path)->first(); - + // Tentukan disk berdasarkan source $disk = $file->source === 's3' ? 's3' : 'local'; @@ -1317,7 +1321,7 @@ class RequestLogController extends Controller // Hapus file dari storage (cek dulu ada atau tidak) if (Storage::disk($disk)->exists($path)) { Storage::disk($disk)->delete($path); - + // Update status file di DB (soft delete + reason) $file->update([ 'deleted_at' => Carbon::now(), @@ -1355,5 +1359,5 @@ class RequestLogController extends Controller phpinfo(); } - + } diff --git a/Modules/Internal/Transformers/RequestLogShowResource.php b/Modules/Internal/Transformers/RequestLogShowResource.php index 0627386a..1a6fac3e 100755 --- a/Modules/Internal/Transformers/RequestLogShowResource.php +++ b/Modules/Internal/Transformers/RequestLogShowResource.php @@ -174,6 +174,7 @@ class RequestLogShowResource extends JsonResource 'medicine' => $medicineData, 'files' => $requestLog['files'], 'provider' => $providerName, + 'organization_id' => $requestLog['organization_id'], 'no_identitas' => $requestLog['member']['nric'], 'keterangan' => $requestLog['keterangan'], 'hak_kamar_pasien' => $requestLog['hak_kamar_pasien'], diff --git a/frontend/hospital-portal/src/sections/dashboard/Components/DialogEditFinalLOG.tsx b/frontend/hospital-portal/src/sections/dashboard/Components/DialogEditFinalLOG.tsx index 3dfb0898..363109a1 100644 --- a/frontend/hospital-portal/src/sections/dashboard/Components/DialogEditFinalLOG.tsx +++ b/frontend/hospital-portal/src/sections/dashboard/Components/DialogEditFinalLOG.tsx @@ -29,6 +29,7 @@ export default function DialogEditFinalLOG({requestLog, setOpenDialog, openDialo icdCodes: requestLog?.diagnosis, reason: requestLog?.reason, type_of_member: requestLog?.type_of_member, + organization_id: requestLog?.organization_id || 0, status: 'requested', }); @@ -62,8 +63,10 @@ export default function DialogEditFinalLOG({requestLog, setOpenDialog, openDialo icdCodes: requestLog?.diagnosis|| [], reason: requestLog?.reason|| '', type_of_member: requestLog?.type_of_member|| '', + organization_id: requestLog?.organization_id || 0, status: 'requested', }); + setIdProvider(requestLog?.organization_id || 0); // ✅ sekalian sync UI }, [requestLog]); @@ -144,6 +147,7 @@ export default function DialogEditFinalLOG({requestLog, setOpenDialog, openDialo icdCodes: requestLog?.diagnosis ?? [], reason: requestLog?.reason ?? '', type_of_member: requestLog?.type_of_member ?? '', + organization_id: requestLog?.organization_id || 0, status: 'requested' }); }; @@ -162,6 +166,24 @@ export default function DialogEditFinalLOG({requestLog, setOpenDialog, openDialo // Add more options as needed ]; + const [providers, setProviders] = useState([]); + const [idProvider, setIdProvider] = useState(0); + + useEffect(() => { + axios + .get('/organizations') + .then((res) => { + setProviders(res.data.data || []); + }) + .catch((err) => console.error(err)); + }, []); + + useEffect(() => { + if (requestLog?.organization_id) { + setIdProvider(requestLog.organization_id); + } + }, [requestLog]); + // console.log(formData.type_of_member) const getContent = () => ( @@ -196,6 +218,26 @@ export default function DialogEditFinalLOG({requestLog, setOpenDialog, openDialo + + + Provider + + + option.name?.trim() || '-'} + value={providers.find((item) => item.id == idProvider) || null} + onChange={(event, newValue) => { + const id = newValue?.id || 0; + setIdProvider(id); + handleChange('organization_id', id); + }} + renderInput={(params) => ( + + )} + fullWidth + /> + Invoice Provider - {requestLog?.status_final_log != 'requested' ? ( + {requestLog?.status_final_log != 'approved' ? ( - Request Final LOG + {requestLog?.status_final_log == 'requested' ? 'Edit' : ''} Request Final LOG @@ -1330,7 +1330,6 @@ export default function DetailRequestFinalLog() { ) : null} - diff --git a/frontend/hospital-portal/src/sections/dashboard/TableListFinalLog.tsx b/frontend/hospital-portal/src/sections/dashboard/TableListFinalLog.tsx index 91f9aeff..5e316e26 100644 --- a/frontend/hospital-portal/src/sections/dashboard/TableListFinalLog.tsx +++ b/frontend/hospital-portal/src/sections/dashboard/TableListFinalLog.tsx @@ -188,7 +188,7 @@ export default function TableListFinalLog() { // enqueueSnackbar('Mohon isi alasan', { variant: 'warning' }); // return false; // } - axios.post('/submit-claims', { + axios.post('/submit-claims', { selectedRows: selectedRows }) .then((response) => { @@ -202,7 +202,7 @@ export default function TableListFinalLog() { enqueueSnackbar(response.data.meta.message, {variant : "error"}); } getData(); - setSelectedRows([]); + setSelectedRows([]); }) .catch(({response}) => { enqueueSnackbar(response.data.errors ? response.data.errors[0] : (response.data ? response.data.meta.message : 'Opps, Something went Wrong!'), {variant : "error"}) @@ -365,8 +365,8 @@ export default function TableListFinalLog() { ]; function handleSearchMember(noPolis:any, birthDate:any) { setLoadingClaim(false) - axios.post('/search-member', { - no_polis: noPolis, + axios.post('/search-member', { + no_polis: noPolis, birth_date: birthDate ? fPostFormat(birthDate, 'yyyy-MM-dd') : null, type: 'view' }) @@ -466,6 +466,27 @@ export default function TableListFinalLog() { View + {obj.status !== 'approved' ? ( + + navigate('/detail-request-final-log/'+obj.id, { + state: { + Log_id: obj.id, + full_name: obj.full_name, + no_polis: obj.no_polis, + submission_date: obj.submission_date, + service_code: obj.service_code, + member_id: obj.member_id, + specialities_id: obj.specialities_id, + dppj: obj.dppj, + }, + }) + } + > + + Edit Request Final LOG + + ):''} {obj.status === 'approved' ? ( handleDownloadLog(obj.id, obj.service_code, obj.no_polis, obj.full_name, obj.provider, obj.approved_final_log_at)}> @@ -542,7 +563,7 @@ export default function TableListFinalLog() { DialogMember(currentMember, () => setOpenDialogBenefit(false)) } maxWidth="sm" - /> + /> - + {localeData.txtDialogConfirmation} {valDialog == "decline" ? ( @@ -596,7 +617,7 @@ export default function TableListFinalLog() { - + ); } \ No newline at end of file