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\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']);
|
||||
});
|
||||
|
||||
|
||||
|
||||
@@ -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();
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
@@ -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'],
|
||||
|
||||
@@ -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
|
||||
</Card>
|
||||
|
||||
<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}>
|
||||
<Typography variant='subtitle2' sx={style1} gutterBottom>Invoice Provider</Typography>
|
||||
<TextField
|
||||
|
||||
@@ -356,7 +356,7 @@ export default function DetailRequestFinalLog() {
|
||||
}
|
||||
setSubmitLoading(true);
|
||||
const formData = makeFormData({
|
||||
request_logs_id: Log_id,
|
||||
request_logs_id: requestLog?.id,
|
||||
// result_files: fileHasilPenunjangs,
|
||||
// diagnosa_files: fileDiagnosas,
|
||||
// kondisi_files: fileKondisis,
|
||||
@@ -424,7 +424,7 @@ export default function DetailRequestFinalLog() {
|
||||
Detail
|
||||
</Typography>
|
||||
</Grid>
|
||||
{requestLog?.status_final_log != 'requested' ? (
|
||||
{requestLog?.status_final_log != 'approved' ? (
|
||||
<Grid item xs={6} sx={{ display: 'flex', placeContent: 'end' }}>
|
||||
<MoreMenu
|
||||
actions={
|
||||
@@ -1316,7 +1316,7 @@ export default function DetailRequestFinalLog() {
|
||||
setOpenDialogSubmit(true);
|
||||
}}
|
||||
>
|
||||
Request Final LOG
|
||||
{requestLog?.status_final_log == 'requested' ? 'Edit' : ''} Request Final LOG
|
||||
</Button>
|
||||
|
||||
</div>
|
||||
@@ -1330,7 +1330,6 @@ export default function DetailRequestFinalLog() {
|
||||
</Stack>
|
||||
</Grid>
|
||||
) : null}
|
||||
|
||||
</Grid>
|
||||
</Container>
|
||||
</Page>
|
||||
|
||||
@@ -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() {
|
||||
<Iconify icon="eva:eye-fill" />
|
||||
View
|
||||
</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' ? (
|
||||
<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" />
|
||||
@@ -542,7 +563,7 @@ export default function TableListFinalLog() {
|
||||
DialogMember(currentMember, () => setOpenDialogBenefit(false))
|
||||
}
|
||||
maxWidth="sm"
|
||||
/>
|
||||
/>
|
||||
<MuiDialog
|
||||
title={{name: dataViewClaimSubmit?.full_name}}
|
||||
openDialog={openDialogClaimSubmit}
|
||||
@@ -573,7 +594,7 @@ export default function TableListFinalLog() {
|
||||
</Stack>
|
||||
</DialogTitle>
|
||||
<DialogContent>
|
||||
|
||||
|
||||
<Stack spacing={2} padding={2}>
|
||||
<Typography variant='body1'>{localeData.txtDialogConfirmation}</Typography>
|
||||
{valDialog == "decline" ? (
|
||||
@@ -596,7 +617,7 @@ export default function TableListFinalLog() {
|
||||
<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>
|
||||
</DialogActions>
|
||||
</Dialog>
|
||||
</Dialog>
|
||||
</>
|
||||
);
|
||||
}
|
||||
Reference in New Issue
Block a user