Edit Final LOG

This commit is contained in:
ivan-sim
2026-04-09 14:20:29 +07:00
parent e4a6a58e17
commit 63de17a98f
6 changed files with 89 additions and 19 deletions

View File

@@ -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']);
}); });

View File

@@ -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();

View File

@@ -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'],

View File

@@ -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

View File

@@ -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>

View File

@@ -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" />