Edit Final LOG
This commit is contained in:
@@ -16,6 +16,7 @@ use Modules\HospitalPortal\Http\Middleware\Authentication;
|
|||||||
use Modules\HospitalPortal\Http\Middleware\Authorization;
|
use Modules\HospitalPortal\Http\Middleware\Authorization;
|
||||||
use Modules\Internal\Http\Controllers\Api\NavigationController;
|
use Modules\Internal\Http\Controllers\Api\NavigationController;
|
||||||
use Modules\Linksehat\Http\Controllers\Api\AutocompleteController;
|
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('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::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::post('claim-requests/{id}/request-files', [ClaimRequestController::class, 'requestFiles']);
|
||||||
|
|
||||||
|
Route::get('organizations', [MasterController::class, 'organizations']);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -129,7 +129,7 @@ class RequestLogController extends Controller
|
|||||||
if ($request->member_id){
|
if ($request->member_id){
|
||||||
try {
|
try {
|
||||||
$code = !empty($this->getNextCode($request)) ? $this->getNextCode($request) : null;
|
$code = !empty($this->getNextCode($request)) ? $this->getNextCode($request) : null;
|
||||||
|
|
||||||
$member = Member::find($request->member_id);
|
$member = Member::find($request->member_id);
|
||||||
$memberValid = false;
|
$memberValid = false;
|
||||||
if ($member){
|
if ($member){
|
||||||
@@ -349,7 +349,7 @@ class RequestLogController extends Controller
|
|||||||
if ($request->status_approval){
|
if ($request->status_approval){
|
||||||
$requestLog->status_approval = $request->status_approval;
|
$requestLog->status_approval = $request->status_approval;
|
||||||
$requestLog->approval_nominal_by = auth()->user()->id;
|
$requestLog->approval_nominal_by = auth()->user()->id;
|
||||||
}
|
}
|
||||||
|
|
||||||
$requestLog->save();
|
$requestLog->save();
|
||||||
|
|
||||||
@@ -529,6 +529,10 @@ class RequestLogController extends Controller
|
|||||||
$requestLog->type_of_member = $request->type_of_member;
|
$requestLog->type_of_member = $request->type_of_member;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (!empty($request->organization_id)){
|
||||||
|
$requestLog->organization_id = $request->organization_id;
|
||||||
|
}
|
||||||
|
|
||||||
$requestLog->final_log = 1;
|
$requestLog->final_log = 1;
|
||||||
$requestLog->approved_final_log_by = auth()->user()->id;
|
$requestLog->approved_final_log_by = auth()->user()->id;
|
||||||
$requestLog->approved_final_log_at = Carbon::now();
|
$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');
|
$organization = Organization::where(['id' => $request->organization_id, 'type' => 'hospital'])->first('code');
|
||||||
$provideCode = $organization ? $organization->code : '';
|
$provideCode = $organization ? $organization->code : '';
|
||||||
$member = Member::with(['currentCorporate','currentPolicy' ])->where(['id' => $request->member_id])->first();
|
$member = Member::with(['currentCorporate','currentPolicy' ])->where(['id' => $request->member_id])->first();
|
||||||
|
|
||||||
|
|
||||||
$data = [
|
$data = [
|
||||||
'source' => $source,
|
'source' => $source,
|
||||||
'provideCode' => $provideCode,
|
'provideCode' => $provideCode,
|
||||||
@@ -1148,7 +1152,7 @@ class RequestLogController extends Controller
|
|||||||
'member_code' => $member->member_id,
|
'member_code' => $member->member_id,
|
||||||
];
|
];
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
$last_numeric_code = RequestLog::select(DB::raw('MAX(CAST(SUBSTRING_INDEX(code, ".", -1) AS SIGNED)) as max_numeric_code'))
|
$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]+$"')
|
->whereRaw('SUBSTRING_INDEX(code, ".", -1) REGEXP "^[0-9]+$"')
|
||||||
@@ -1307,7 +1311,7 @@ class RequestLogController extends Controller
|
|||||||
{
|
{
|
||||||
// Ambil data file dari database
|
// Ambil data file dari database
|
||||||
$file = File::where('path', $request->path)->first();
|
$file = File::where('path', $request->path)->first();
|
||||||
|
|
||||||
// Tentukan disk berdasarkan source
|
// Tentukan disk berdasarkan source
|
||||||
$disk = $file->source === 's3' ? 's3' : 'local';
|
$disk = $file->source === 's3' ? 's3' : 'local';
|
||||||
|
|
||||||
@@ -1317,7 +1321,7 @@ class RequestLogController extends Controller
|
|||||||
// Hapus file dari storage (cek dulu ada atau tidak)
|
// Hapus file dari storage (cek dulu ada atau tidak)
|
||||||
if (Storage::disk($disk)->exists($path)) {
|
if (Storage::disk($disk)->exists($path)) {
|
||||||
Storage::disk($disk)->delete($path);
|
Storage::disk($disk)->delete($path);
|
||||||
|
|
||||||
// Update status file di DB (soft delete + reason)
|
// Update status file di DB (soft delete + reason)
|
||||||
$file->update([
|
$file->update([
|
||||||
'deleted_at' => Carbon::now(),
|
'deleted_at' => Carbon::now(),
|
||||||
@@ -1355,5 +1359,5 @@ class RequestLogController extends Controller
|
|||||||
phpinfo();
|
phpinfo();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -174,6 +174,7 @@ class RequestLogShowResource extends JsonResource
|
|||||||
'medicine' => $medicineData,
|
'medicine' => $medicineData,
|
||||||
'files' => $requestLog['files'],
|
'files' => $requestLog['files'],
|
||||||
'provider' => $providerName,
|
'provider' => $providerName,
|
||||||
|
'organization_id' => $requestLog['organization_id'],
|
||||||
'no_identitas' => $requestLog['member']['nric'],
|
'no_identitas' => $requestLog['member']['nric'],
|
||||||
'keterangan' => $requestLog['keterangan'],
|
'keterangan' => $requestLog['keterangan'],
|
||||||
'hak_kamar_pasien' => $requestLog['hak_kamar_pasien'],
|
'hak_kamar_pasien' => $requestLog['hak_kamar_pasien'],
|
||||||
|
|||||||
@@ -29,6 +29,7 @@ export default function DialogEditFinalLOG({requestLog, setOpenDialog, openDialo
|
|||||||
icdCodes: requestLog?.diagnosis,
|
icdCodes: requestLog?.diagnosis,
|
||||||
reason: requestLog?.reason,
|
reason: requestLog?.reason,
|
||||||
type_of_member: requestLog?.type_of_member,
|
type_of_member: requestLog?.type_of_member,
|
||||||
|
organization_id: requestLog?.organization_id || 0,
|
||||||
status: 'requested',
|
status: 'requested',
|
||||||
});
|
});
|
||||||
|
|
||||||
@@ -62,8 +63,10 @@ export default function DialogEditFinalLOG({requestLog, setOpenDialog, openDialo
|
|||||||
icdCodes: requestLog?.diagnosis|| [],
|
icdCodes: requestLog?.diagnosis|| [],
|
||||||
reason: requestLog?.reason|| '',
|
reason: requestLog?.reason|| '',
|
||||||
type_of_member: requestLog?.type_of_member|| '',
|
type_of_member: requestLog?.type_of_member|| '',
|
||||||
|
organization_id: requestLog?.organization_id || 0,
|
||||||
status: 'requested',
|
status: 'requested',
|
||||||
});
|
});
|
||||||
|
setIdProvider(requestLog?.organization_id || 0); // ✅ sekalian sync UI
|
||||||
}, [requestLog]);
|
}, [requestLog]);
|
||||||
|
|
||||||
|
|
||||||
@@ -144,6 +147,7 @@ export default function DialogEditFinalLOG({requestLog, setOpenDialog, openDialo
|
|||||||
icdCodes: requestLog?.diagnosis ?? [],
|
icdCodes: requestLog?.diagnosis ?? [],
|
||||||
reason: requestLog?.reason ?? '',
|
reason: requestLog?.reason ?? '',
|
||||||
type_of_member: requestLog?.type_of_member ?? '',
|
type_of_member: requestLog?.type_of_member ?? '',
|
||||||
|
organization_id: requestLog?.organization_id || 0,
|
||||||
status: 'requested'
|
status: 'requested'
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
@@ -162,6 +166,24 @@ export default function DialogEditFinalLOG({requestLog, setOpenDialog, openDialo
|
|||||||
// Add more options as needed
|
// 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)
|
// console.log(formData.type_of_member)
|
||||||
|
|
||||||
const getContent = () => (
|
const getContent = () => (
|
||||||
@@ -196,6 +218,26 @@ export default function DialogEditFinalLOG({requestLog, setOpenDialog, openDialo
|
|||||||
</Card>
|
</Card>
|
||||||
|
|
||||||
<Card sx={{padding:2, marginTop:2}} >
|
<Card sx={{padding:2, marginTop:2}} >
|
||||||
|
<Stack direction="row" spacing={2} sx={marginBottom2}>
|
||||||
|
<Typography variant="subtitle2" sx={style1} gutterBottom>
|
||||||
|
Provider
|
||||||
|
</Typography>
|
||||||
|
|
||||||
|
<Autocomplete
|
||||||
|
options={providers}
|
||||||
|
getOptionLabel={(option) => 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) => (
|
||||||
|
<TextField {...params} label="Provider" fullWidth />
|
||||||
|
)}
|
||||||
|
fullWidth
|
||||||
|
/>
|
||||||
|
</Stack>
|
||||||
<Stack direction='row' spacing={2} sx={marginBottom2}>
|
<Stack direction='row' spacing={2} sx={marginBottom2}>
|
||||||
<Typography variant='subtitle2' sx={style1} gutterBottom>Invoice Provider</Typography>
|
<Typography variant='subtitle2' sx={style1} gutterBottom>Invoice Provider</Typography>
|
||||||
<TextField
|
<TextField
|
||||||
|
|||||||
@@ -356,7 +356,7 @@ export default function DetailRequestFinalLog() {
|
|||||||
}
|
}
|
||||||
setSubmitLoading(true);
|
setSubmitLoading(true);
|
||||||
const formData = makeFormData({
|
const formData = makeFormData({
|
||||||
request_logs_id: Log_id,
|
request_logs_id: requestLog?.id,
|
||||||
// result_files: fileHasilPenunjangs,
|
// result_files: fileHasilPenunjangs,
|
||||||
// diagnosa_files: fileDiagnosas,
|
// diagnosa_files: fileDiagnosas,
|
||||||
// kondisi_files: fileKondisis,
|
// kondisi_files: fileKondisis,
|
||||||
@@ -424,7 +424,7 @@ export default function DetailRequestFinalLog() {
|
|||||||
Detail
|
Detail
|
||||||
</Typography>
|
</Typography>
|
||||||
</Grid>
|
</Grid>
|
||||||
{requestLog?.status_final_log != 'requested' ? (
|
{requestLog?.status_final_log != 'approved' ? (
|
||||||
<Grid item xs={6} sx={{ display: 'flex', placeContent: 'end' }}>
|
<Grid item xs={6} sx={{ display: 'flex', placeContent: 'end' }}>
|
||||||
<MoreMenu
|
<MoreMenu
|
||||||
actions={
|
actions={
|
||||||
@@ -1316,7 +1316,7 @@ export default function DetailRequestFinalLog() {
|
|||||||
setOpenDialogSubmit(true);
|
setOpenDialogSubmit(true);
|
||||||
}}
|
}}
|
||||||
>
|
>
|
||||||
Request Final LOG
|
{requestLog?.status_final_log == 'requested' ? 'Edit' : ''} Request Final LOG
|
||||||
</Button>
|
</Button>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
@@ -1330,7 +1330,6 @@ export default function DetailRequestFinalLog() {
|
|||||||
</Stack>
|
</Stack>
|
||||||
</Grid>
|
</Grid>
|
||||||
) : null}
|
) : null}
|
||||||
|
|
||||||
</Grid>
|
</Grid>
|
||||||
</Container>
|
</Container>
|
||||||
</Page>
|
</Page>
|
||||||
|
|||||||
@@ -188,7 +188,7 @@ export default function TableListFinalLog() {
|
|||||||
// enqueueSnackbar('Mohon isi alasan', { variant: 'warning' });
|
// enqueueSnackbar('Mohon isi alasan', { variant: 'warning' });
|
||||||
// return false;
|
// return false;
|
||||||
// }
|
// }
|
||||||
axios.post('/submit-claims', {
|
axios.post('/submit-claims', {
|
||||||
selectedRows: selectedRows
|
selectedRows: selectedRows
|
||||||
})
|
})
|
||||||
.then((response) => {
|
.then((response) => {
|
||||||
@@ -202,7 +202,7 @@ export default function TableListFinalLog() {
|
|||||||
enqueueSnackbar(response.data.meta.message, {variant : "error"});
|
enqueueSnackbar(response.data.meta.message, {variant : "error"});
|
||||||
}
|
}
|
||||||
getData();
|
getData();
|
||||||
setSelectedRows([]);
|
setSelectedRows([]);
|
||||||
})
|
})
|
||||||
.catch(({response}) => {
|
.catch(({response}) => {
|
||||||
enqueueSnackbar(response.data.errors ? response.data.errors[0] : (response.data ? response.data.meta.message : 'Opps, Something went Wrong!'), {variant : "error"})
|
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) {
|
function handleSearchMember(noPolis:any, birthDate:any) {
|
||||||
setLoadingClaim(false)
|
setLoadingClaim(false)
|
||||||
axios.post('/search-member', {
|
axios.post('/search-member', {
|
||||||
no_polis: noPolis,
|
no_polis: noPolis,
|
||||||
birth_date: birthDate ? fPostFormat(birthDate, 'yyyy-MM-dd') : null,
|
birth_date: birthDate ? fPostFormat(birthDate, 'yyyy-MM-dd') : null,
|
||||||
type: 'view'
|
type: 'view'
|
||||||
})
|
})
|
||||||
@@ -466,6 +466,27 @@ export default function TableListFinalLog() {
|
|||||||
<Iconify icon="eva:eye-fill" />
|
<Iconify icon="eva:eye-fill" />
|
||||||
View
|
View
|
||||||
</MenuItem>
|
</MenuItem>
|
||||||
|
{obj.status !== 'approved' ? (
|
||||||
|
<MenuItem
|
||||||
|
onClick={() =>
|
||||||
|
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,
|
||||||
|
},
|
||||||
|
})
|
||||||
|
}
|
||||||
|
>
|
||||||
|
<Iconify icon="fa:file-text" />
|
||||||
|
Edit Request Final LOG
|
||||||
|
</MenuItem>
|
||||||
|
):''}
|
||||||
{obj.status === 'approved' ? (
|
{obj.status === 'approved' ? (
|
||||||
<MenuItem onClick={() => handleDownloadLog(obj.id, obj.service_code, obj.no_polis, obj.full_name, obj.provider, obj.approved_final_log_at)}>
|
<MenuItem onClick={() => handleDownloadLog(obj.id, obj.service_code, obj.no_polis, obj.full_name, obj.provider, obj.approved_final_log_at)}>
|
||||||
<Iconify icon="eva:download-fill" />
|
<Iconify icon="eva:download-fill" />
|
||||||
@@ -542,7 +563,7 @@ export default function TableListFinalLog() {
|
|||||||
DialogMember(currentMember, () => setOpenDialogBenefit(false))
|
DialogMember(currentMember, () => setOpenDialogBenefit(false))
|
||||||
}
|
}
|
||||||
maxWidth="sm"
|
maxWidth="sm"
|
||||||
/>
|
/>
|
||||||
<MuiDialog
|
<MuiDialog
|
||||||
title={{name: dataViewClaimSubmit?.full_name}}
|
title={{name: dataViewClaimSubmit?.full_name}}
|
||||||
openDialog={openDialogClaimSubmit}
|
openDialog={openDialogClaimSubmit}
|
||||||
@@ -573,7 +594,7 @@ export default function TableListFinalLog() {
|
|||||||
</Stack>
|
</Stack>
|
||||||
</DialogTitle>
|
</DialogTitle>
|
||||||
<DialogContent>
|
<DialogContent>
|
||||||
|
|
||||||
<Stack spacing={2} padding={2}>
|
<Stack spacing={2} padding={2}>
|
||||||
<Typography variant='body1'>{localeData.txtDialogConfirmation}</Typography>
|
<Typography variant='body1'>{localeData.txtDialogConfirmation}</Typography>
|
||||||
{valDialog == "decline" ? (
|
{valDialog == "decline" ? (
|
||||||
@@ -596,7 +617,7 @@ export default function TableListFinalLog() {
|
|||||||
<Button variant="outlined" sx={{color: '#212B36', borderColor: '#919EAB52'}} onClick={handleCloseDialogSubmit}>{localeData.txtCancel}</Button>
|
<Button variant="outlined" sx={{color: '#212B36', borderColor: '#919EAB52'}} onClick={handleCloseDialogSubmit}>{localeData.txtCancel}</Button>
|
||||||
<Button sx={{backgroundColor: (valDialog === 'decline' ? '' : '#19BBBB'), color: (valDialog === 'decline' ? '#FF4842' : ''), borderColor: '#FF4842'}} onClick={handleSubmitData} variant={(valDialog === 'decline' ? 'outlined' : 'contained')}>{(valDialog === "decline" ? localeData.txtDeclaine : 'Submit')}</Button>
|
<Button sx={{backgroundColor: (valDialog === 'decline' ? '' : '#19BBBB'), color: (valDialog === 'decline' ? '#FF4842' : ''), borderColor: '#FF4842'}} onClick={handleSubmitData} variant={(valDialog === 'decline' ? 'outlined' : 'contained')}>{(valDialog === "decline" ? localeData.txtDeclaine : 'Submit')}</Button>
|
||||||
</DialogActions>
|
</DialogActions>
|
||||||
</Dialog>
|
</Dialog>
|
||||||
</>
|
</>
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
Reference in New Issue
Block a user