This commit is contained in:
2025-02-20 08:26:40 +07:00
parent cb2a335989
commit e56910e0c1
9 changed files with 146 additions and 144 deletions

View File

@@ -146,29 +146,34 @@ class DailyMonitoringController extends Controller
{ {
$detail = RequestDailyMonitoring::where('id', $id) $detail = RequestDailyMonitoring::where('id', $id)
->orderBy("created_at", "desc") ->orderBy("created_at", "desc")
->first(); ->first();
if ($detail) {
// Ubah menjadi array agar bisa dimodifikasi
$detailArray = $detail->toArray();
// Ubah nama key dari request_log_id menjadi log_id
$detailArray['log_code'] = $detailArray['request_log_id'];
unset($detailArray['request_log_id']);
} else {
$detailArray = null;
}
return response()->json([ return response()->json([
'error' => false, 'error' => false,
'message' => "success", 'message' => "success",
'data' => $detail, 'data' => $detailArray,
],200); ], 200);
} }
public function UpdateDetailMonitoringbyID(Request $request) public function UpdateDetailMonitoringbyID(Request $request)
{ {
// validation rule // validation rule
$validator = Validator::make($request->all(),[ $validator = Validator::make($request->all(),[
'subject' => 'required', 'log_code' => 'required',
'submission_date' => 'required',
'body_temperature' => 'required',
'sistole' => 'required',
'diastole' => 'required',
'respiration_rate' => 'required',
'analysis' => 'required',
'medical_plan' => 'required',
'reason' => 'required', 'reason' => 'required',
'non_medikamentosa_plan' => 'required',
],$this->messages()); ],$this->messages());
// validation error // validation error
@@ -182,6 +187,7 @@ class DailyMonitoringController extends Controller
// insert claim daily monitoring // insert claim daily monitoring
$db_response = RequestDailyMonitoring::where('id', $request->id) $db_response = RequestDailyMonitoring::where('id', $request->id)
->update([ ->update([
'request_log_id' => $request->log_code,
'submission_date' => $request->submission_date, 'submission_date' => $request->submission_date,
'subject' => $request->subject, 'subject' => $request->subject,
'object' => $request->objective, 'object' => $request->objective,
@@ -193,6 +199,13 @@ class DailyMonitoringController extends Controller
'lab_date' => $request->lab_date, 'lab_date' => $request->lab_date,
'provider' => $request->provider, 'provider' => $request->provider,
'examination' => $request->examination, 'examination' => $request->examination,
'doctor_1' => $request->doctor_1,
'doctor_2' => $request->doctor_2,
'temp_diagnosis' => $request->temp_diagnosis,
'final_diagnosis' => $request->final_diagnosis,
'approval_pendamping' => $request->approval_pendamping,
'description' => $request->keterangan,
'note' => $request->catatan,
'reason' => $request->reason, 'reason' => $request->reason,
'created_by' => auth()->user()->id, 'created_by' => auth()->user()->id,
]); ]);

View File

@@ -24,6 +24,7 @@ class DailyMonitoringResource extends JsonResource
'start_date' => $this->startdate, 'start_date' => $this->startdate,
'end_date' => $this->enddate, 'end_date' => $this->enddate,
'addmision_date' => $this->addmision_date, 'addmision_date' => $this->addmision_date,
'submission_date' => $this->submission_date,
'provider' => $this->provider, 'provider' => $this->provider,
'organization_id' => $this->organization_id, 'organization_id' => $this->organization_id,
'doctor_1' => $this->doctor_1, 'doctor_1' => $this->doctor_1,

View File

@@ -409,19 +409,12 @@ export default function DailyMonitoringList() {
<TableHead> <TableHead>
<TableRow> <TableRow>
<TableCell style={TableHeadStyle} align="left" width={50} /> <TableCell style={TableHeadStyle} align="left" width={50} />
<TableCell style={TableHeadStyle} align="left" width={160}>Code</TableCell>
<TableCell style={TableHeadStyle} align="left" width={160}>Admission Date</TableCell> <TableCell style={TableHeadStyle} align="left" width={160}>Admission Date</TableCell>
<TableCell style={TableHeadStyle} align="left" width={150}>Member ID</TableCell> <TableCell style={TableHeadStyle} align="left" width={150}>Member ID</TableCell>
<TableCell style={TableHeadStyle} align="left" width={'*'}>Name</TableCell> <TableCell style={TableHeadStyle} align="left" width={'*'}>Name</TableCell>
<TableCell style={TableHeadStyle} align="left" width={160}>Tanggal Lahir</TableCell> <TableCell style={TableHeadStyle} align="left" width={160}>Tanggal Lahir</TableCell>
<TableCell style={TableHeadStyle} align="left" width={160}>Member Type</TableCell> <TableCell style={TableHeadStyle} align="left" width={160}>Member Type</TableCell>
<TableCell style={TableHeadStyle} align="left" width={160}>Dokter 1</TableCell>
<TableCell style={TableHeadStyle} align="left" width={160}>Dokter 2</TableCell>
<TableCell style={TableHeadStyle} align="left" width={160}>Temp Diagnosa</TableCell>
<TableCell style={TableHeadStyle} align="left" width={160}>Diagnosa Akhir</TableCell>
<TableCell style={TableHeadStyle} align="left" width={160}>Approval Pendamping</TableCell>
<TableCell style={TableHeadStyle} align="left" width={160}>Keterangan</TableCell>
<TableCell style={TableHeadStyle} align="left" width={160}>Penjaminan</TableCell>
<TableCell style={TableHeadStyle} align="left" width={160}>Catatan</TableCell>
<TableCell align="left" width={"10"} /> <TableCell align="left" width={"10"} />
</TableRow> </TableRow>
</TableHead> </TableHead>

View File

@@ -36,6 +36,7 @@ export default function DailyMonitoringListRow ({ ...props }: Props) {
<TableRow hover sx={{ '& > td': { borderBottom: '1' } }}> <TableRow hover sx={{ '& > td': { borderBottom: '1' } }}>
<TableCell align="left" /> <TableCell align="left" />
<TableCell align="left">{props.row.code}</TableCell>
<TableCell align="left"> <TableCell align="left">
<Label <Label
variant="ghost" variant="ghost"
@@ -57,26 +58,7 @@ export default function DailyMonitoringListRow ({ ...props }: Props) {
<TableCell align="left"> <TableCell align="left">
{props.row.member_type} {props.row.member_type}
</TableCell> </TableCell>
<TableCell align="left">{props.row.doctor_1}</TableCell>
<TableCell align="left">{props.row.doctor_2}</TableCell>
<TableCell align="left">{props.row.temp_diagnosis}</TableCell>
<TableCell align="left">{props.row.final_diagnosis}</TableCell>
<TableCell align="left">{props.row.approval_pendamping}</TableCell>
<TableCell align="left">
{props.row.description
? props.row.description.length > 130
? props.row.description.substring(0, 130) + "..."
: props.row.description
: "-"}
</TableCell>
<TableCell align="left">{props.row.provider || "-"}</TableCell>
<TableCell align="left">
{props.row.note
? props.row.note.length > 130
? props.row.note.substring(0, 130) + "..."
: props.row.note
: "-"}
</TableCell>
<TableCell align="right" onClick={(e) => e.stopPropagation()}> <TableCell align="right" onClick={(e) => e.stopPropagation()}>
<Stack direction="row" justifyContent="flex-end" spacing={1}> <Stack direction="row" justifyContent="flex-end" spacing={1}>
<TableMoreMenu actions={ <TableMoreMenu actions={
@@ -85,7 +67,7 @@ export default function DailyMonitoringListRow ({ ...props }: Props) {
<Visibility /> <Visibility />
View View
</MenuItem> </MenuItem>
<MenuItem onClick={() => navigate(`/case_management/daily_monitoring/${props.row.member_id}/claims/${props.row.code}/${props.row.id}`)}> <MenuItem onClick={() => navigate(`/case_management/daily_monitoring/${props.row.id}/edit`)}>
<Edit /> <Edit />
Edit Edit
</MenuItem> </MenuItem>

View File

@@ -57,7 +57,7 @@ export default function DetailMonitoringList() {
// setOrganizationId(organization_id); // setOrganizationId(organization_id);
// } // }
const loadDetailDailyMonitoring = async () => { const loadDetailDailyMonitoring = async () => {
const monitoring = await getMonitoringDetailById('') const monitoring = await getMonitoringDetailById(id)
setData(monitoring) setData(monitoring)
} }
@@ -74,41 +74,41 @@ export default function DetailMonitoringList() {
// ==================================== // ====================================
const defaultValues = useMemo( const defaultValues = useMemo(
() => ({ () => ({
id : data?.id ??'', id : data?.id ??'',
// claim_code : data?.claim_code ?? '', // claim_code : data?.claim_code ?? '',
log_code : data?.log_code ?? '', log_code : data?.log_code ?? '',
doctor_1 : data?.doctor_1 ?? '', doctor_1 : data?.doctor_1 ?? '',
doctor_2 : data?.doctor_2 ?? '', doctor_2 : data?.doctor_2 ?? '',
temp_diagnosis : data?.temp_diagnosis ?? '', temp_diagnosis : data?.temp_diagnosis ?? '',
final_diagnosis : data?.final_diagnosis ?? '', final_diagnosis : data?.final_diagnosis ?? '',
approval_pendamping : data?.approval_pendamping ?? '', approval_pendamping : data?.approval_pendamping ?? '',
keterangan : data?.keterangan ?? '', keterangan : data?.keterangan ?? '',
catatan : data?.catatan ?? '', catatan : data?.catatan ?? '',
claim_id : data?.claim_id ?? '', claim_id : data?.claim_id ?? '',
subject : data?.subject ?? '', subject : data?.subject ?? '',
objective : data?.object ?? '', objective : data?.object ?? '',
submission_date : data?.submission_date ?? '', submission_date : data?.submission_date ?? '',
body_temperature: data?.body_temperature ?? '', body_temperature: data?.body_temperature ?? '',
sistole : data?.sistole ?? '', sistole : data?.sistole ?? '',
diastole : data?.diastole ??'', diastole : data?.diastole ??'',
respiration_rate: data?.respiration_rate ??'', respiration_rate: data?.respiration_rate ??'',
complaints : data?.complaints ?? '', complaints : data?.complaints ?? '',
analysis : data?.analysis ?? '', analysis : data?.analysis ?? '',
medical_plan : data?.medical_plan ?? [{ medical_plan : data?.medical_plan ?? [{
medical_plan_str: '' medical_plan_str: ''
}], }],
non_medikamentosa_plan : data?.non_medikamentosa_plan ?? [{ non_medikamentosa_plan : data?.non_medikamentosa_plan ?? [{
non_medikamentosa_plan_str: '' non_medikamentosa_plan_str: ''
}], }],
confirmation_medical_leter : [], confirmation_medical_leter : [],
medical_action_letter : [], medical_action_letter : [],
// result : data?.laboratorium_result ?? [], // result : data?.laboratorium_result ?? [],
result : [], result : [],
created_at : data?.created_at ?? '', created_at : data?.created_at ?? '',
lab_date : data?.lab_date ?? '', lab_date : data?.lab_date ?? '',
provider : data?.provider ?? '', provider : data?.provider ?? '',
examination : data?.examination ?? '', examination : data?.examination ?? '',
reason : '', reason : '',
}), }),
[data] [data]
); );
@@ -262,19 +262,26 @@ export default function DetailMonitoringList() {
useEffect(() => { useEffect(() => {
// Ambil data dari API dan atur opsi ICD axios.get('codeLog')
axios.get('codeLog') .then((response) => {
.then((response) => { const fetchedCodes = response.data.data;
setCodes(response.data.data); setCodes(fetchedCodes);
}) // Set nilai default jika data tersedia
.catch((error) => { console.log(defaultValues, 'test')
console.error('Error fetching Code LOG options:', error); if (defaultValues?.log_code) {
}); const defaultValueLOG = fetchedCodes.find((item) => item.value === defaultValues?.log_code);
setSelectedCode(defaultValueLOG || null);
}
})
.catch((error) => {
console.error('Error fetching Code LOG options:', error);
});
}, [isEdit, defaultValues]); // Tambahkan dependency agar dijalankan ulang jika log_code berubah
}, []); // useEffect dijalankan hanya sekali saat komponen dimount
useEffect(() => { useEffect(() => {
const fetchCodes = async () => { const fetchCodes = async () => {
if (searchTerm.length > 2) { // Hanya fetch jika input lebih dari 2 karakter if (searchTerm.length > 3) { // Hanya fetch jika input lebih dari 2 karakter
try { try {
const response = await axios.get(`codeLog?search=${searchTerm}`); const response = await axios.get(`codeLog?search=${searchTerm}`);
setCodes(response.data.data); setCodes(response.data.data);
@@ -300,7 +307,7 @@ export default function DetailMonitoringList() {
</IconButton> </IconButton>
<Typography variant="h5" sx={{ marginLeft: '24px' }}> <Typography variant="h5" sx={{ marginLeft: '24px' }}>
Tambah Daily Monitoring {isEdit ? "Update " : "Tambah "} Daily Monitoring
</Typography> </Typography>
</Box> </Box>
@@ -317,36 +324,36 @@ export default function DetailMonitoringList() {
</Typography> </Typography>
</Grid> </Grid>
<Grid item xs={12} sx={{ display: 'flex', gap: 1 }}> <Grid item xs={12} sx={{ display: 'flex', gap: 1 }}>
<Autocomplete <Autocomplete
options={codes} options={codes}
getOptionLabel={(option) => option.label} getOptionLabel={(option) => option.label}
fullWidth fullWidth
value={selectedCode} value={selectedCode}
onChange={(event, newValue) => { onChange={(event, newValue) => {
setSelectedCode(newValue); setSelectedCode(newValue);
setValue('log_code',newValue?.value) setValue('log_code', newValue?.value);
// Validasi jika newValue adalah null if (!newValue) {
if (!newValue) { setError('Please select a code');
setError('Please select a code'); } else {
} else { setError('');
setError(''); }
} }}
}} onInputChange={(event, newInputValue) => {
onInputChange={(event, newInputValue) => { setSearchTerm(newInputValue); // Set nilai pencarian untuk fetch data
setSearchTerm(newInputValue); // Set nilai pencarian untuk fetch data }}
}} renderInput={(params) => (
renderInput={(params) => ( <RHFTextField
<RHFTextField {...params}
{...params} label="Code LOG"
label="Code LOG" variant="outlined"
variant="outlined" id="log_code"
id="log_code" name="log_code"
name='log_code' error={false} // Menampilkan error jika ada
error={false} // Menampilkan error jika ada helperText={error} // Menampilkan pesan kesalahan
helperText={error} // Menampilkan pesan kesalahan />
/> )}
)}
/> />
</Grid> </Grid>
<Grid item xs={12}> <Grid item xs={12}>
<Typography variant="body1" component="div"> <Typography variant="body1" component="div">
@@ -365,7 +372,7 @@ export default function DetailMonitoringList() {
</Grid> </Grid>
{/* Doctor 1 */} {/* Doctor 1 */}
<Grid item xs={12}> {/* <Grid item xs={12}>
<Grid container spacing={3}> <Grid container spacing={3}>
<Grid item xs={12}> <Grid item xs={12}>
<Typography variant="body1" component="div"> <Typography variant="body1" component="div">
@@ -428,10 +435,10 @@ export default function DetailMonitoringList() {
/> />
</Grid> </Grid>
</Grid> </Grid>
</Grid> </Grid> */}
{/* Subject */} {/* Subject */}
<Grid item xs={12}> <Grid item xs={12}>
<Grid container spacing={3}> <Grid container spacing={3}>
<Grid item xs={12}> <Grid item xs={12}>
<Typography variant="body1" component="div"> <Typography variant="body1" component="div">
@@ -707,8 +714,8 @@ export default function DetailMonitoringList() {
</Grid> </Grid>
</Grid> </Grid>
{/* Keterangan dan Catatan */} {/* Keterangan dan Catatan */}
<Grid item xs={12}> <Grid item xs={12}>
<Grid container spacing={3}> <Grid container spacing={3}>
<Grid item xs={12}> <Grid item xs={12}>
<Typography variant="body1" component="div"> <Typography variant="body1" component="div">
@@ -729,8 +736,8 @@ export default function DetailMonitoringList() {
</Grid> </Grid>
</Grid> </Grid>
{/* Confirmation Medical Letter */} {/* Confirmation Medical Letter */}
<Grid item xs={12}> <Grid item xs={12}>
<Grid container spacing={3}> <Grid container spacing={3}>
<Grid item xs={12}> <Grid item xs={12}>
<Typography variant="body1" component="div"> <Typography variant="body1" component="div">

View File

@@ -56,7 +56,7 @@ export default function DetailMonitoringList() {
// Use Effect // Use Effect
// -------------------- // --------------------
useEffect(() => { useEffect(() => {
// loadDataTableData(); loadDataTableData();
}, []) }, [])
// Dialog // Dialog
@@ -165,19 +165,18 @@ export default function DetailMonitoringList() {
// Load Data // Load Data
// ------------------- // -------------------
// const loadDataTableData = async () => { const loadDataTableData = async () => {
// const response = await getMonitoringDetailList(claim_code??''); const response = await getMonitoringDetailList(claim_code??'');
// const organization_id = await getOrganizationId(claim_code??''); const organization_id = await getOrganizationId(claim_code??'');
// setDetailMonitoringList(response); setDetailMonitoringList(response);
// setOrganizationId(organization_id); setOrganizationId(organization_id);
// } }
const renderHTML = (data:string) => { function renderHTML(data: string) {
return ( return (
<div style={{marginLeft: 20}} <div style={{ marginLeft: 20 }}
dangerouslySetInnerHTML={{__html: data}} dangerouslySetInnerHTML={{ __html: data }} />
/>
); );
} }
@@ -187,7 +186,7 @@ export default function DetailMonitoringList() {
{/* back button */} {/* back button */}
<Grid item xs={12}> <Grid item xs={12}>
<Box sx={{ display: 'flex', alignItems: 'center' }}> <Box sx={{ display: 'flex', alignItems: 'center' }}>
<IconButton size='large' color='inherit' onClick={() => navigate(`/case_management/daily_monitoring/${member_id}/${organizationId}/claims`)} > <IconButton size='large' color='inherit' onClick={() => navigate(`/case_management/daily_monitoring`)} >
<ArrowBackIosNew/> <ArrowBackIosNew/>
</IconButton> </IconButton>
@@ -241,10 +240,10 @@ export default function DetailMonitoringList() {
<Box sx={{ marginLeft: 'auto' }}> {/* Menempatkan TableMoreMenu di sebelah kanan */} <Box sx={{ marginLeft: 'auto' }}> {/* Menempatkan TableMoreMenu di sebelah kanan */}
<TableMoreMenu actions={ <TableMoreMenu actions={
<> <>
<MenuItem onClick={() => {handleEdit(row.id);}}> {/* <MenuItem onClick={() => {handleEdit(row.id);}}>
<Edit /> <Edit />
Edit Edit
</MenuItem> </MenuItem> */}
<MenuItem onClick={() => {setOpenDialog(true); setId(row.id); setIdFile(null)}}> <MenuItem onClick={() => {setOpenDialog(true); setId(row.id); setIdFile(null)}}>
<Delete color='error' /> <Delete color='error' />
Delete Delete

View File

@@ -60,6 +60,7 @@ export type DetailMonitoringListType = {
id : number|null, id : number|null,
claim_id : string|null, claim_id : string|null,
log_code : string|null, log_code : string|null,
request_log_id : string|null,
claim_code : string|undefined, claim_code : string|undefined,
doctor_1 : string|undefined, doctor_1 : string|undefined,
doctor_2 : string|undefined, doctor_2 : string|undefined,
@@ -68,6 +69,8 @@ export type DetailMonitoringListType = {
approval_pendamping : string|undefined, approval_pendamping : string|undefined,
keterangan : string|undefined, keterangan : string|undefined,
catatan : string|undefined, catatan : string|undefined,
description : string|undefined,
note : string|undefined,
subject : string|undefined, subject : string|undefined,
object : string|undefined, object : string|undefined,
objective : string|undefined, objective : string|undefined,

View File

@@ -194,9 +194,9 @@ export default function DialogEditFinalLOG({requestLog, setOpenDialog, openDialo
<Card sx={{padding:2, marginTop:2}} > <Card sx={{padding:2, marginTop:2}} >
<Stack direction='row' spacing={2} sx={marginBottom2}> <Stack direction='row' spacing={2} sx={marginBottom2}>
<Typography variant='subtitle2' sx={style1} gutterBottom>Invoice Number</Typography> <Typography variant='subtitle2' sx={style1} gutterBottom>Invoice Provider</Typography>
<TextField <TextField
label="Invoice Number" label="Invoice Provider"
variant="outlined" variant="outlined"
fullWidth fullWidth
value={formData.invoice_no} value={formData.invoice_no}

View File

@@ -241,6 +241,10 @@ export default function Router() {
path: 'daily_monitoring/:member_id/claims/:claim_code/:id', path: 'daily_monitoring/:member_id/claims/:claim_code/:id',
element: <DetailMonitoringForm /> element: <DetailMonitoringForm />
}, },
{
path: 'daily_monitoring/:id/edit',
element: <DetailMonitoringForm />
},
{ {
path: 'daily_monitoring/:member_id/claims/:claim_code/list_monitoring', path: 'daily_monitoring/:member_id/claims/:claim_code/list_monitoring',
element: <DetailMonitoringList /> element: <DetailMonitoringList />