Fitur edit di final LOG
This commit is contained in:
@@ -336,7 +336,9 @@ class ClaimController extends Controller
|
|||||||
'request_logs.member_id',
|
'request_logs.member_id',
|
||||||
'request_logs.service_code',
|
'request_logs.service_code',
|
||||||
'request_logs.code',
|
'request_logs.code',
|
||||||
'request_logs.diagnosis'
|
'request_logs.diagnosis',
|
||||||
|
'request_logs.keterangan',
|
||||||
|
'request_logs.catatan'
|
||||||
)
|
)
|
||||||
->orderBy('request_logs.submission_date')
|
->orderBy('request_logs.submission_date')
|
||||||
->get();
|
->get();
|
||||||
|
|||||||
@@ -20,7 +20,7 @@ class OptionController extends Controller
|
|||||||
{
|
{
|
||||||
$request->validate([
|
$request->validate([
|
||||||
'type' => 'required',
|
'type' => 'required',
|
||||||
'search' => 'required'
|
// 'search' => 'required'
|
||||||
]);
|
]);
|
||||||
|
|
||||||
switch ($request->type) {
|
switch ($request->type) {
|
||||||
|
|||||||
@@ -5,6 +5,7 @@ namespace Modules\Internal\Http\Controllers\Api;
|
|||||||
use App\Helpers\Helper;
|
use App\Helpers\Helper;
|
||||||
use App\Models\RequestLog;
|
use App\Models\RequestLog;
|
||||||
use App\Models\Organization;
|
use App\Models\Organization;
|
||||||
|
use App\Models\Icd;
|
||||||
use App\Services\ClaimService;
|
use App\Services\ClaimService;
|
||||||
use App\Services\ImportService;
|
use App\Services\ImportService;
|
||||||
use Illuminate\Contracts\Support\Renderable;
|
use Illuminate\Contracts\Support\Renderable;
|
||||||
@@ -193,6 +194,20 @@ class RequestLogController extends Controller
|
|||||||
return Helper::responseJson(data: RequestLogShowResource::make($claimRequest));
|
return Helper::responseJson(data: RequestLogShowResource::make($claimRequest));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function diagnosis(){
|
||||||
|
$icds = Icd::query()
|
||||||
|
->get();
|
||||||
|
|
||||||
|
$manipulatedIcds = $icds->map(function ($icd) {
|
||||||
|
// Contoh manipulasi, tambahkan atau ubah properti sesuai kebutuhan
|
||||||
|
return [
|
||||||
|
'value' => $icd->code, // Ganti dengan properti yang sesuai dari model Icd
|
||||||
|
'label' => $icd->code . ' - ' .$icd->name, // Ganti dengan properti yang sesuai dari model Icd
|
||||||
|
];
|
||||||
|
});
|
||||||
|
return Helper::responseJson(data: $manipulatedIcds);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Show the form for editing the specified resource.
|
* Show the form for editing the specified resource.
|
||||||
* @param int $id
|
* @param int $id
|
||||||
@@ -366,14 +381,32 @@ class RequestLogController extends Controller
|
|||||||
|
|
||||||
|
|
||||||
// Update Request LOG untuk lanjut ke Final LOG
|
// Update Request LOG untuk lanjut ke Final LOG
|
||||||
$requestLog->catatan = $request->catatan;
|
if (!empty($request->catatan)) {
|
||||||
|
$requestLog->catatan = $request->catatan;
|
||||||
|
}
|
||||||
|
if ($request->discharge_date) {
|
||||||
|
$requestLog->discharge_date = $request->discharge_date;
|
||||||
|
}
|
||||||
|
if (!empty($request->icdCodes)) {
|
||||||
|
$diagnosis = implode(',', $request->icdCodes);
|
||||||
|
|
||||||
|
$requestLog->diagnosis = $diagnosis;
|
||||||
|
}
|
||||||
|
if (!empty($request->status)) {
|
||||||
|
$requestLog->status_final_log = $status;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!empty($request->reason)) {
|
||||||
|
$requestLog->reason_final = $request->reason;
|
||||||
|
}
|
||||||
|
|
||||||
$requestLog->final_log = 1;
|
$requestLog->final_log = 1;
|
||||||
$requestLog->status_final_log = $status;
|
|
||||||
$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();
|
||||||
if($requestLog->service_code != 'IP'){
|
// if($requestLog->service_code != 'IP'){
|
||||||
$requestLog->discharge_date = Carbon::now();
|
// $requestLog->discharge_date = Carbon::now();
|
||||||
}
|
// }
|
||||||
|
|
||||||
$requestLog->save();
|
$requestLog->save();
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -263,7 +263,10 @@ Route::prefix('internal')->group(function () {
|
|||||||
Route::get('customer-service/request/data', [RequestLogController::class, 'generateDataRequestLogExcel']);
|
Route::get('customer-service/request/data', [RequestLogController::class, 'generateDataRequestLogExcel']);
|
||||||
|
|
||||||
Route::post('customer-service/request/final-log', [RequestLogController::class, 'updateFinalLog']);
|
Route::post('customer-service/request/final-log', [RequestLogController::class, 'updateFinalLog']);
|
||||||
|
|
||||||
|
// search diagnosis
|
||||||
|
Route::get('diagnosis', [RequestLogController::class, 'diagnosis']);
|
||||||
|
|
||||||
// insert benefit
|
// insert benefit
|
||||||
Route::post('customer-service/request/insert-benefit', [RequestLogBenefitController::class, 'store']);
|
Route::post('customer-service/request/insert-benefit', [RequestLogBenefitController::class, 'store']);
|
||||||
Route::delete('customer-service/request/benefit_data/{id}', [RequestLogBenefitController::class, 'destroy']);
|
Route::delete('customer-service/request/benefit_data/{id}', [RequestLogBenefitController::class, 'destroy']);
|
||||||
|
|||||||
@@ -82,11 +82,21 @@ class RequestLogShowResource extends JsonResource
|
|||||||
->where('corporate_id', $corporateId)
|
->where('corporate_id', $corporateId)
|
||||||
->first();
|
->first();
|
||||||
|
|
||||||
|
// Diagnosis
|
||||||
|
$icd = [];
|
||||||
|
if($requestLog['diagnosis']){
|
||||||
|
$diagnosis = explode(',', $requestLog['diagnosis']);
|
||||||
|
$icd = Icd::query()
|
||||||
|
->whereIn('code', $diagnosis)
|
||||||
|
->select('code', 'name')
|
||||||
|
->get();
|
||||||
|
}
|
||||||
|
|
||||||
$data = [
|
$data = [
|
||||||
'id' => $requestLog['id'],
|
'id' => $requestLog['id'],
|
||||||
'code' => $requestLog['code'],
|
'code' => $requestLog['code'],
|
||||||
'member_id' => $requestLog['member']['member_id'],
|
'member_id' => $requestLog['member']['member_id'],
|
||||||
|
'corporate_id' => $corporateId,
|
||||||
'policy_number' =>$policyNumber->code ? $policyNumber->code : '-',
|
'policy_number' =>$policyNumber->code ? $policyNumber->code : '-',
|
||||||
'name' => $requestLog['member']['name'],
|
'name' => $requestLog['member']['name'],
|
||||||
'date_of_birth' => $requestLog['member']['birth_date'],
|
'date_of_birth' => $requestLog['member']['birth_date'],
|
||||||
@@ -97,6 +107,7 @@ class RequestLogShowResource extends JsonResource
|
|||||||
'principal_name' => $requestLog['member']['principal_id'] ? Helper::principalName($requestLog['member']['principal_id']) : '-',
|
'principal_name' => $requestLog['member']['principal_id'] ? Helper::principalName($requestLog['member']['principal_id']) : '-',
|
||||||
'relation_with_principal' => Helper::relationWithPrincipal($requestLog['member']['relation_with_principal']),
|
'relation_with_principal' => Helper::relationWithPrincipal($requestLog['member']['relation_with_principal']),
|
||||||
'submission_date' => $requestLog['submission_date'],
|
'submission_date' => $requestLog['submission_date'],
|
||||||
|
'discharge_date' => $requestLog['discharge_date'],
|
||||||
'service_type' => Helper::serviceName($requestLog['service_code']),
|
'service_type' => Helper::serviceName($requestLog['service_code']),
|
||||||
'claim_method' => $requestLog['payment_type'],
|
'claim_method' => $requestLog['payment_type'],
|
||||||
'status' => $requestLog['status'],
|
'status' => $requestLog['status'],
|
||||||
@@ -114,7 +125,7 @@ class RequestLogShowResource extends JsonResource
|
|||||||
'penempatan_kamar' => $requestLog['penempatan_kamar'],
|
'penempatan_kamar' => $requestLog['penempatan_kamar'],
|
||||||
'catatan' => $requestLog['catatan'],
|
'catatan' => $requestLog['catatan'],
|
||||||
'reason' => $requestLog['reason'],
|
'reason' => $requestLog['reason'],
|
||||||
|
'diagnosis' => $icd,
|
||||||
|
|
||||||
];
|
];
|
||||||
|
|
||||||
|
|||||||
@@ -39,6 +39,7 @@ class RequestLog extends Model
|
|||||||
'diagnosis',
|
'diagnosis',
|
||||||
'code',
|
'code',
|
||||||
'reason',
|
'reason',
|
||||||
|
'reason_final',
|
||||||
'approved_by',
|
'approved_by',
|
||||||
'approved_at',
|
'approved_at',
|
||||||
'approved_final_log_by',
|
'approved_final_log_by',
|
||||||
|
|||||||
@@ -0,0 +1,32 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
use Illuminate\Database\Migrations\Migration;
|
||||||
|
use Illuminate\Database\Schema\Blueprint;
|
||||||
|
use Illuminate\Support\Facades\Schema;
|
||||||
|
|
||||||
|
return new class extends Migration
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* Run the migrations.
|
||||||
|
*
|
||||||
|
* @return void
|
||||||
|
*/
|
||||||
|
public function up()
|
||||||
|
{
|
||||||
|
Schema::table('request_logs', function (Blueprint $table) {
|
||||||
|
$table->string('reason_final')->after('reason')->default(null);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Reverse the migrations.
|
||||||
|
*
|
||||||
|
* @return void
|
||||||
|
*/
|
||||||
|
public function down()
|
||||||
|
{
|
||||||
|
Schema::table('request_logs', function (Blueprint $table) {
|
||||||
|
$table->dropColumn('reason_final');
|
||||||
|
});
|
||||||
|
}
|
||||||
|
};
|
||||||
@@ -1,82 +0,0 @@
|
|||||||
import { Card, Typography } from "@mui/material";
|
|
||||||
import { Stack } from '@mui/material';
|
|
||||||
import { DetailFinalLogType } from "../FinalLog/Model/Types";
|
|
||||||
import { fDate, fDateTimesecond, toTitleCase } from "@/utils/formatTime";
|
|
||||||
|
|
||||||
|
|
||||||
type CardDetail = {
|
|
||||||
requestLog: DetailFinalLogType|undefined;
|
|
||||||
}
|
|
||||||
|
|
||||||
const style1 = {
|
|
||||||
color: '#919EAB',
|
|
||||||
width: '30%'
|
|
||||||
}
|
|
||||||
const style2 = {
|
|
||||||
width: '70%'
|
|
||||||
}
|
|
||||||
const marginBottom1 = {
|
|
||||||
marginBottom: 1,
|
|
||||||
}
|
|
||||||
const marginBottom2 = {
|
|
||||||
marginBottom: 2,
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
export default function CardDetail({requestLog} : CardDetail ) {
|
|
||||||
return (
|
|
||||||
<Card sx={{padding:2}} >
|
|
||||||
<Typography variant='subtitle1' sx={{color: '#19BBBB', marginBottom: 4}} gutterBottom>Detail</Typography>
|
|
||||||
<Stack direction='row' spacing={2} sx={marginBottom1}>
|
|
||||||
<Typography variant='subtitle2' sx={style1} gutterBottom>Provider</Typography>
|
|
||||||
<Typography variant='subtitle2' sx={style2} gutterBottom>{requestLog?.provider}</Typography>
|
|
||||||
</Stack>
|
|
||||||
<Stack direction='row' spacing={2} sx={marginBottom1}>
|
|
||||||
<Typography variant='subtitle2' sx={style1} gutterBottom>Member ID</Typography>
|
|
||||||
<Typography variant='subtitle2' sx={style2} gutterBottom>{requestLog?.member_id}</Typography>
|
|
||||||
</Stack>
|
|
||||||
<Stack direction='row' spacing={2} sx={marginBottom1}>
|
|
||||||
<Typography variant='subtitle2' sx={style1} gutterBottom>Policy Number</Typography>
|
|
||||||
<Typography variant='subtitle2' sx={style2} gutterBottom>{requestLog?.policy_number}</Typography>
|
|
||||||
</Stack>
|
|
||||||
<Stack direction='row' spacing={2} sx={marginBottom1}>
|
|
||||||
<Typography variant='subtitle2' sx={style1} gutterBottom>Name</Typography>
|
|
||||||
<Typography variant='subtitle2' sx={style2} gutterBottom>{requestLog?.name}</Typography>
|
|
||||||
</Stack>
|
|
||||||
<Stack direction='row' spacing={2} sx={marginBottom1}>
|
|
||||||
<Typography variant='subtitle2' sx={style1} gutterBottom>Date Of Birth</Typography>
|
|
||||||
<Typography variant='subtitle2' sx={style2} gutterBottom>{requestLog?.date_of_birth ? fDate(requestLog?.date_of_birth) : '-'}</Typography>
|
|
||||||
</Stack>
|
|
||||||
<Stack direction='row' spacing={2} sx={marginBottom1}>
|
|
||||||
<Typography variant='subtitle2' sx={style1} gutterBottom>Marital Status</Typography>
|
|
||||||
<Typography variant='subtitle2' sx={style2} gutterBottom>{requestLog?.marital_status}</Typography>
|
|
||||||
</Stack>
|
|
||||||
<Stack direction='row' spacing={2} sx={marginBottom1}>
|
|
||||||
<Typography variant='subtitle2' sx={style1} gutterBottom>Submission Date</Typography>
|
|
||||||
<Typography variant='subtitle2' sx={style2} gutterBottom>{requestLog?.submission_date ? fDateTimesecond(requestLog?.submission_date) : '-'}</Typography>
|
|
||||||
</Stack>
|
|
||||||
|
|
||||||
<Stack direction='row' spacing={2} sx={marginBottom1}>
|
|
||||||
<Typography variant='subtitle2' sx={style1} gutterBottom>No KTP</Typography>
|
|
||||||
<Typography variant='subtitle2' sx={style2} gutterBottom>{requestLog?.no_identitas ? requestLog?.no_identitas : '-'}</Typography>
|
|
||||||
</Stack>
|
|
||||||
<Stack direction='row' spacing={2} sx={marginBottom1}>
|
|
||||||
<Typography variant='subtitle2' sx={style1} gutterBottom>Keterangan</Typography>
|
|
||||||
<Typography variant='subtitle2' sx={style2} gutterBottom>{requestLog?.keterangan ? requestLog?.keterangan : '-'}</Typography>
|
|
||||||
</Stack>
|
|
||||||
<Stack direction='row' spacing={2} sx={marginBottom1}>
|
|
||||||
<Typography variant='subtitle2' sx={style1} gutterBottom>Hak Kamar Pasien</Typography>
|
|
||||||
<Typography variant='subtitle2' sx={style2} gutterBottom>{requestLog?.hak_kamar_pasien ? requestLog?.hak_kamar_pasien : '-'}</Typography>
|
|
||||||
</Stack>
|
|
||||||
<Stack direction='row' spacing={2} sx={marginBottom1}>
|
|
||||||
<Typography variant='subtitle2' sx={style1} gutterBottom>Penempatan Kamar</Typography>
|
|
||||||
<Typography variant='subtitle2' sx={style2} gutterBottom>{requestLog?.penempatan_kamar ? requestLog?.penempatan_kamar : '-'}</Typography>
|
|
||||||
</Stack>
|
|
||||||
<Stack direction='row' spacing={2} sx={marginBottom1}>
|
|
||||||
<Typography variant='subtitle2' sx={style1} gutterBottom>Catatan</Typography>
|
|
||||||
<Typography variant='subtitle2' sx={style2} gutterBottom>{requestLog?.catatan ? requestLog?.catatan : '-'}</Typography>
|
|
||||||
</Stack>
|
|
||||||
</Card>
|
|
||||||
)
|
|
||||||
|
|
||||||
}
|
|
||||||
@@ -1,10 +1,10 @@
|
|||||||
import MuiDialog from "@/components/MuiDialog";
|
import MuiDialog from "@/components/MuiDialog";
|
||||||
import { Button, Card, Checkbox, DialogActions, Grid, TextField, Typography } from "@mui/material";
|
import { Autocomplete, Button, Card, Checkbox, DialogActions, Grid, TextField, Typography } from "@mui/material";
|
||||||
import { Paper } from "@mui/material";
|
import { Paper } from "@mui/material";
|
||||||
import { Stack } from '@mui/material';
|
import { Stack } from '@mui/material';
|
||||||
import React, { useEffect, useState } from 'react';
|
import React, { useEffect, useState } from 'react';
|
||||||
import { DetailFinalLogType } from "../Model/Types";
|
import { DetailFinalLogType } from "../Model/Types";
|
||||||
import { fDateTimesecond, toTitleCase } from "@/utils/formatTime";
|
import { fDateOnly, fDateTimesecond, toTitleCase } from "@/utils/formatTime";
|
||||||
import axios from "@/utils/axios";
|
import axios from "@/utils/axios";
|
||||||
import { enqueueSnackbar } from "notistack";
|
import { enqueueSnackbar } from "notistack";
|
||||||
import { useNavigate } from "react-router";
|
import { useNavigate } from "react-router";
|
||||||
@@ -22,11 +22,29 @@ export default function DialogConfirmation({requestLog, setOpenDialog, openDialo
|
|||||||
|
|
||||||
const navigate = useNavigate();
|
const navigate = useNavigate();
|
||||||
const [formData, setFormData] = useState({
|
const [formData, setFormData] = useState({
|
||||||
|
discharge_date: requestLog?.discharge_date,
|
||||||
id: requestLog?.id,
|
id: requestLog?.id,
|
||||||
status: approve || '',
|
status: approve || '',
|
||||||
catatan: '',
|
catatan: '',
|
||||||
|
icdCodes: requestLog?.diagnosis.length ? requestLog.diagnosis.map(diagnosis => ({ value: diagnosis.id, label: diagnosis.name })) : []
|
||||||
});
|
});
|
||||||
|
|
||||||
|
const [icdOptions, setIcdOptions] = useState([
|
||||||
|
{ value: '-', label: '-' }
|
||||||
|
]);
|
||||||
|
|
||||||
|
useEffect(() => {
|
||||||
|
// Ambil data dari API dan atur opsi ICD
|
||||||
|
axios.get('diagnosis')
|
||||||
|
.then((response) => {
|
||||||
|
setIcdOptions(response.data.data);
|
||||||
|
})
|
||||||
|
.catch((error) => {
|
||||||
|
console.error('Error fetching ICD options:', error);
|
||||||
|
});
|
||||||
|
}, []); // useEffect dijalankan hanya sekali saat komponen dimount
|
||||||
|
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
// Update formData setiap kali approve berubah
|
// Update formData setiap kali approve berubah
|
||||||
setFormData(prevData => ({
|
setFormData(prevData => ({
|
||||||
@@ -87,6 +105,8 @@ export default function DialogConfirmation({requestLog, setOpenDialog, openDialo
|
|||||||
setOpenDialog(false);
|
setOpenDialog(false);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
const getContent = () => (
|
const getContent = () => (
|
||||||
<Stack spacing={1} marginTop={2}>
|
<Stack spacing={1} marginTop={2}>
|
||||||
<Typography variant="subtitle2">Are you sure to {approve == 'approved' ? 'approve' : 'deciline'} this final log ?</Typography>
|
<Typography variant="subtitle2">Are you sure to {approve == 'approved' ? 'approve' : 'deciline'} this final log ?</Typography>
|
||||||
@@ -119,6 +139,17 @@ export default function DialogConfirmation({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>Discharge Date</Typography>
|
||||||
|
<TextField
|
||||||
|
label="Discharge Date"
|
||||||
|
variant="outlined"
|
||||||
|
fullWidth
|
||||||
|
type="date"
|
||||||
|
value={formData.discharge_date ? fDateOnly(formData.discharge_date) : ''}
|
||||||
|
onChange={(e) => handleChange('discharge_date', e.target.value)}
|
||||||
|
/>
|
||||||
|
</Stack>
|
||||||
<Stack direction='row' spacing={2} sx={marginBottom2}>
|
<Stack direction='row' spacing={2} sx={marginBottom2}>
|
||||||
<Typography variant='subtitle2' sx={style1} gutterBottom>Catatan</Typography>
|
<Typography variant='subtitle2' sx={style1} gutterBottom>Catatan</Typography>
|
||||||
<TextField
|
<TextField
|
||||||
@@ -129,6 +160,24 @@ export default function DialogConfirmation({requestLog, setOpenDialog, openDialo
|
|||||||
onChange={(e) => handleChange('catatan', e.target.value)}
|
onChange={(e) => handleChange('catatan', e.target.value)}
|
||||||
/>
|
/>
|
||||||
</Stack>
|
</Stack>
|
||||||
|
<Stack direction='row' spacing={2} sx={marginBottom2}>
|
||||||
|
<Typography variant='subtitle2' sx={style1} gutterBottom>Diagnosis ICD - X</Typography>
|
||||||
|
<Autocomplete
|
||||||
|
multiple
|
||||||
|
options={icdOptions}
|
||||||
|
getOptionLabel={(option) => option.label}
|
||||||
|
fullWidth
|
||||||
|
value={icdOptions.filter((icd) => formData.icdCodes.includes(icd.value))}
|
||||||
|
onChange={(e, newValues) => handleChange('icdCodes', newValues.map((value) => value.value))}
|
||||||
|
renderInput={(params) => (
|
||||||
|
<TextField
|
||||||
|
{...params}
|
||||||
|
label="Diagnosis ICD - X"
|
||||||
|
variant="outlined"
|
||||||
|
/>
|
||||||
|
)}
|
||||||
|
/>
|
||||||
|
</Stack>
|
||||||
</Card>
|
</Card>
|
||||||
</Grid>
|
</Grid>
|
||||||
<DialogActions>
|
<DialogActions>
|
||||||
|
|||||||
@@ -0,0 +1,261 @@
|
|||||||
|
import MuiDialog from "@/components/MuiDialog";
|
||||||
|
import { Autocomplete, Button, Card, Checkbox, DialogActions, Grid, TextField, Typography } from "@mui/material";
|
||||||
|
import { Paper } from "@mui/material";
|
||||||
|
import { Stack } from '@mui/material';
|
||||||
|
import React, { useEffect, useState } from 'react';
|
||||||
|
import { DetailFinalLogType } from "../Model/Types";
|
||||||
|
import { fDateOnly, fDateTimesecond, toTitleCase } from "@/utils/formatTime";
|
||||||
|
import axios from "@/utils/axios";
|
||||||
|
import { enqueueSnackbar } from "notistack";
|
||||||
|
import { useNavigate } from "react-router";
|
||||||
|
|
||||||
|
|
||||||
|
type DialogConfirmationType = {
|
||||||
|
openDialog: boolean;
|
||||||
|
setOpenDialog: any;
|
||||||
|
onSubmit?: void;
|
||||||
|
requestLog: DetailFinalLogType|undefined;
|
||||||
|
}
|
||||||
|
|
||||||
|
export default function DialogEditFinalLOG({requestLog, setOpenDialog, openDialog, onSubmit} : DialogConfirmationType ) {
|
||||||
|
|
||||||
|
const navigate = useNavigate();
|
||||||
|
const [formData, setFormData] = useState({
|
||||||
|
discharge_date: requestLog?.discharge_date,
|
||||||
|
id: requestLog?.id,
|
||||||
|
catatan: requestLog?.catatan,
|
||||||
|
icdCodes: requestLog?.diagnosis
|
||||||
|
? requestLog?.diagnosis.map(diagnosis => diagnosis.code)
|
||||||
|
: [],
|
||||||
|
reason: requestLog?.reason
|
||||||
|
});
|
||||||
|
|
||||||
|
const [icdOptions, setIcdOptions] = useState([
|
||||||
|
{ value: '-', label: '-' }
|
||||||
|
]);
|
||||||
|
|
||||||
|
useEffect(() => {
|
||||||
|
// Ambil data dari API dan atur opsi ICD
|
||||||
|
axios.get('diagnosis')
|
||||||
|
.then((response) => {
|
||||||
|
setIcdOptions(response.data.data);
|
||||||
|
})
|
||||||
|
.catch((error) => {
|
||||||
|
console.error('Error fetching ICD options:', error);
|
||||||
|
});
|
||||||
|
}, []); // useEffect dijalankan hanya sekali saat komponen dimount
|
||||||
|
|
||||||
|
useEffect(() => {
|
||||||
|
if (requestLog) {
|
||||||
|
setFormData({
|
||||||
|
discharge_date: requestLog.discharge_date,
|
||||||
|
id: requestLog.id,
|
||||||
|
catatan: requestLog.catatan,
|
||||||
|
icdCodes: requestLog.diagnosis
|
||||||
|
? requestLog.diagnosis.map(diagnosis => diagnosis.code)
|
||||||
|
: [],
|
||||||
|
reason: requestLog.reason
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}, [requestLog]);
|
||||||
|
|
||||||
|
const handleChange = (field, value) => {
|
||||||
|
setFormData((prevData) => ({
|
||||||
|
...prevData,
|
||||||
|
[field]: value,
|
||||||
|
}));
|
||||||
|
if (field === 'reason') {
|
||||||
|
setIsReasonSelected(!!value);
|
||||||
|
}
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
const handleApprove = () => {
|
||||||
|
setFormData((prevData) => ({
|
||||||
|
...prevData,
|
||||||
|
}));
|
||||||
|
handleSubmit();
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
const handleSubmit = () => {
|
||||||
|
if (isReasonSelected && formData.reason !== '') {
|
||||||
|
axios
|
||||||
|
.post(`customer-service/request/final-log`, formData)
|
||||||
|
.then((response) => {
|
||||||
|
enqueueSnackbar('Verification Request LOG Success', { variant: 'success' });
|
||||||
|
setOpenDialog(false);
|
||||||
|
if (requestLog?.service_type == 'Inpatient'){
|
||||||
|
navigate('/case_management/inpatient_monitoring');
|
||||||
|
} else {
|
||||||
|
navigate('/custormer-service/final-log');
|
||||||
|
}
|
||||||
|
})
|
||||||
|
.catch(({ response }) => {
|
||||||
|
enqueueSnackbar(response.data.message ?? 'Something went wrong!', { variant: 'error' });
|
||||||
|
});
|
||||||
|
} else {
|
||||||
|
setIsReasonSelected(false);
|
||||||
|
alert('Silakan pilih alasan sebelum mengirimkan data.');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
const style1 = {
|
||||||
|
color: '#919EAB',
|
||||||
|
width: '30%'
|
||||||
|
}
|
||||||
|
const style2 = {
|
||||||
|
width: '70%'
|
||||||
|
}
|
||||||
|
const marginBottom1 = {
|
||||||
|
marginBottom: 1,
|
||||||
|
}
|
||||||
|
const marginBottom2 = {
|
||||||
|
marginBottom: 2,
|
||||||
|
}
|
||||||
|
|
||||||
|
const resetForm = () => {
|
||||||
|
setFormData({
|
||||||
|
discharge_date: requestLog?.discharge_date,
|
||||||
|
id: requestLog?.id,
|
||||||
|
catatan: requestLog?.catatan,
|
||||||
|
icdCodes: requestLog?.diagnosis
|
||||||
|
? requestLog?.diagnosis.map(diagnosis => diagnosis.code)
|
||||||
|
: [],
|
||||||
|
reason: requestLog?.reason
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|
||||||
|
const [isReasonSelected, setIsReasonSelected] = useState(true);
|
||||||
|
|
||||||
|
const handleCloseDialog = () => {
|
||||||
|
setOpenDialog(false);
|
||||||
|
resetForm();
|
||||||
|
}
|
||||||
|
|
||||||
|
const reasons = [
|
||||||
|
{ value: 'agreement', label: 'Agreement changed' },
|
||||||
|
{ value: 'endorsement', label: 'Endorsement' },
|
||||||
|
{ value: 'renewal', label: 'Renewal' },
|
||||||
|
{ value: 'wrong_setting', label: 'Wrong Setting' },
|
||||||
|
// Add more options as needed
|
||||||
|
];
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
const getContent = () => (
|
||||||
|
<Stack spacing={1} marginTop={2}>
|
||||||
|
<Typography variant="subtitle2">Are you sure to edit this final log ?</Typography>
|
||||||
|
<Grid item xs={12} md={12} marginTop={4}>
|
||||||
|
<Card sx={{padding:2, marginTop:2}} >
|
||||||
|
<Stack direction='row' spacing={2} sx={marginBottom1}>
|
||||||
|
<Typography variant='subtitle2' sx={style1} gutterBottom>Member ID</Typography>
|
||||||
|
<Typography variant='subtitle2' sx={style2} gutterBottom>{requestLog?.member_id}</Typography>
|
||||||
|
</Stack>
|
||||||
|
<Stack direction='row' spacing={2} sx={marginBottom1}>
|
||||||
|
<Typography variant='subtitle2' sx={style1} gutterBottom>Policy Number</Typography>
|
||||||
|
<Typography variant='subtitle2' sx={style2} gutterBottom>{requestLog?.policy_number}</Typography>
|
||||||
|
</Stack>
|
||||||
|
<Stack direction='row' spacing={2} sx={marginBottom1}>
|
||||||
|
<Typography variant='subtitle2' sx={style1} gutterBottom>Name</Typography>
|
||||||
|
<Typography variant='subtitle2' sx={style2} gutterBottom>{requestLog?.name}</Typography>
|
||||||
|
</Stack>
|
||||||
|
<Stack direction='row' spacing={2} sx={marginBottom1}>
|
||||||
|
<Typography variant='subtitle2' sx={style1} gutterBottom>Submission Date</Typography>
|
||||||
|
<Typography variant='subtitle2' sx={style2} gutterBottom>{requestLog?.submission_date ? fDateTimesecond(requestLog?.submission_date) : '-'}</Typography>
|
||||||
|
</Stack>
|
||||||
|
<Stack direction='row' spacing={2} sx={marginBottom1}>
|
||||||
|
<Typography variant='subtitle2' sx={style1} gutterBottom>Claim Method</Typography>
|
||||||
|
<Typography variant='subtitle2' sx={style2} gutterBottom>{requestLog?.claim_method ? toTitleCase(requestLog?.claim_method) : '-'}</Typography>
|
||||||
|
</Stack>
|
||||||
|
<Stack direction='row' spacing={2} sx={marginBottom1}>
|
||||||
|
<Typography variant='subtitle2' sx={style1} gutterBottom>Service Type</Typography>
|
||||||
|
<Typography variant='subtitle2' sx={style2} gutterBottom>{requestLog?.service_type}</Typography>
|
||||||
|
</Stack>
|
||||||
|
</Card>
|
||||||
|
|
||||||
|
<Card sx={{padding:2, marginTop:2}} >
|
||||||
|
<Stack direction='row' spacing={2} sx={marginBottom2}>
|
||||||
|
<Typography variant='subtitle2' sx={style1} gutterBottom>Discharge Date</Typography>
|
||||||
|
<TextField
|
||||||
|
label="Discharge Date"
|
||||||
|
variant="outlined"
|
||||||
|
fullWidth
|
||||||
|
type="date"
|
||||||
|
value={formData.discharge_date ? fDateOnly(formData.discharge_date) : ''}
|
||||||
|
onChange={(e) => handleChange('discharge_date', e.target.value)}
|
||||||
|
/>
|
||||||
|
</Stack>
|
||||||
|
<Stack direction='row' spacing={2} sx={marginBottom2}>
|
||||||
|
<Typography variant='subtitle2' sx={style1} gutterBottom>Catatan</Typography>
|
||||||
|
<TextField
|
||||||
|
label="Catatan"
|
||||||
|
variant="outlined"
|
||||||
|
fullWidth
|
||||||
|
value={formData.catatan}
|
||||||
|
onChange={(e) => handleChange('catatan', e.target.value)}
|
||||||
|
/>
|
||||||
|
</Stack>
|
||||||
|
<Stack direction='row' spacing={2} sx={marginBottom2}>
|
||||||
|
<Typography variant='subtitle2' sx={style1} gutterBottom>Diagnosis ICD - X</Typography>
|
||||||
|
<Autocomplete
|
||||||
|
multiple
|
||||||
|
options={icdOptions}
|
||||||
|
getOptionLabel={(option) => option.label}
|
||||||
|
fullWidth
|
||||||
|
value={icdOptions.filter((icd) => formData.icdCodes.includes(icd.value))}
|
||||||
|
onChange={(e, newValues) => {
|
||||||
|
const selectedCodes = newValues.map((value) => value.value);
|
||||||
|
setFormData({ ...formData, icdCodes: selectedCodes });
|
||||||
|
}}
|
||||||
|
renderInput={(params) => (
|
||||||
|
<TextField
|
||||||
|
{...params}
|
||||||
|
label="Diagnosis ICD - X"
|
||||||
|
variant="outlined"
|
||||||
|
/>
|
||||||
|
)}
|
||||||
|
/>
|
||||||
|
</Stack>
|
||||||
|
<Stack direction='row' spacing={2} sx={marginBottom2}>
|
||||||
|
<Typography variant='subtitle2' sx={style1} gutterBottom>Reason*</Typography>
|
||||||
|
<Autocomplete
|
||||||
|
options={reasons}
|
||||||
|
getOptionLabel={(option) => option.label}
|
||||||
|
fullWidth
|
||||||
|
value={reasons.find((r) => r.value === formData.reason) || null} // Use find to match the default value
|
||||||
|
onChange={(e, newValue) => handleChange('reason', newValue?.value)}
|
||||||
|
renderInput={(params) => (
|
||||||
|
<TextField
|
||||||
|
{...params}
|
||||||
|
label="Reason"
|
||||||
|
variant="outlined"
|
||||||
|
required
|
||||||
|
error={!isReasonSelected} // Menandai input sebagai salah jika opsi tidak dipilih
|
||||||
|
helperText={!isReasonSelected ? 'Alasan harus dipilih' : ''}
|
||||||
|
|
||||||
|
/>
|
||||||
|
)}
|
||||||
|
/>
|
||||||
|
</Stack>
|
||||||
|
</Card>
|
||||||
|
</Grid>
|
||||||
|
<DialogActions>
|
||||||
|
<Button variant="outlined" sx={{color: '#212B36', borderColor: '#919EAB52'}} onClick={handleCloseDialog}>Cancel</Button>
|
||||||
|
<Button color="primary" variant="contained" onClick={() => handleApprove()}>Update</Button>
|
||||||
|
</DialogActions>
|
||||||
|
</Stack>
|
||||||
|
);
|
||||||
|
|
||||||
|
|
||||||
|
return (
|
||||||
|
<MuiDialog
|
||||||
|
title={{name: "Update"}}
|
||||||
|
openDialog={openDialog}
|
||||||
|
setOpenDialog={setOpenDialog}
|
||||||
|
content={getContent()}
|
||||||
|
maxWidth="xl"
|
||||||
|
/>
|
||||||
|
);
|
||||||
|
}
|
||||||
@@ -54,6 +54,7 @@ import { fNumber } from '@/utils/formatNumber';
|
|||||||
import palette from '@/theme/palette';
|
import palette from '@/theme/palette';
|
||||||
import CardMedicine from '../Components/CardMedicine';
|
import CardMedicine from '../Components/CardMedicine';
|
||||||
import CardFile from '../Components/CardFile';
|
import CardFile from '../Components/CardFile';
|
||||||
|
import DialogEditFinalLOG from './Components/DialogEditFinalLOG';
|
||||||
|
|
||||||
|
|
||||||
// ----------------------------------------------------------------------
|
// ----------------------------------------------------------------------
|
||||||
@@ -84,6 +85,10 @@ export default function Detail() {
|
|||||||
color: '#919EAB',
|
color: '#919EAB',
|
||||||
width: '30%'
|
width: '30%'
|
||||||
}
|
}
|
||||||
|
const style3 = {
|
||||||
|
color: '#919EAB',
|
||||||
|
width: '35%'
|
||||||
|
}
|
||||||
const style2 = {
|
const style2 = {
|
||||||
width: '70%'
|
width: '70%'
|
||||||
}
|
}
|
||||||
@@ -95,7 +100,7 @@ export default function Detail() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
const [openDialogSubmit, setOpenDialogSubmit] = useState(false);
|
const [openDialogSubmit, setOpenDialogSubmit] = useState(false);
|
||||||
const [openDialogHospital, setDialogHospital] = useState(false);
|
const [openDialogEditDetail, setDialogDEditDetail] = useState(false);
|
||||||
const [openDialogBenefit, setDialogBenefit] = useState(false);
|
const [openDialogBenefit, setDialogBenefit] = useState(false);
|
||||||
const [openDialogMedicine, setDialogMedicine] = useState(false);
|
const [openDialogMedicine, setDialogMedicine] = useState(false);
|
||||||
|
|
||||||
@@ -121,10 +126,104 @@ export default function Detail() {
|
|||||||
<Grid container spacing={2}>
|
<Grid container spacing={2}>
|
||||||
{/* Detail */}
|
{/* Detail */}
|
||||||
<Grid item xs={12} md={12}>
|
<Grid item xs={12} md={12}>
|
||||||
<CardDetail
|
<Card sx={{padding:2}} >
|
||||||
|
<Grid container spacing={2}>
|
||||||
|
<Grid item xs={6}>
|
||||||
|
<Typography variant='subtitle1' sx={{ color: '#19BBBB', marginBottom: 4 }} gutterBottom>
|
||||||
|
Detail
|
||||||
|
</Typography>
|
||||||
|
</Grid>
|
||||||
|
<Grid item xs={6} sx={{ display: 'flex', placeContent: 'end' }}>
|
||||||
|
<MoreMenu
|
||||||
|
actions={
|
||||||
|
<>
|
||||||
|
<MenuItem onClick={() => {
|
||||||
|
setDialogDEditDetail(true)
|
||||||
|
}}>
|
||||||
|
<EditOutlined />
|
||||||
|
Edit
|
||||||
|
</MenuItem>
|
||||||
|
</>
|
||||||
|
}
|
||||||
|
/>
|
||||||
|
</Grid>
|
||||||
|
|
||||||
|
</Grid>
|
||||||
|
<Stack direction='row' spacing={2} sx={marginBottom1}>
|
||||||
|
<Typography variant='subtitle2' sx={style1} gutterBottom>Provider</Typography>
|
||||||
|
<Typography variant='subtitle2' sx={style2} gutterBottom>{requestLog?.provider}</Typography>
|
||||||
|
</Stack>
|
||||||
|
<Stack direction='row' spacing={2} sx={marginBottom1}>
|
||||||
|
<Typography variant='subtitle2' sx={style1} gutterBottom>Member ID</Typography>
|
||||||
|
<Typography variant='subtitle2' sx={style2} gutterBottom>{requestLog?.member_id}</Typography>
|
||||||
|
</Stack>
|
||||||
|
<Stack direction='row' spacing={2} sx={marginBottom1}>
|
||||||
|
<Typography variant='subtitle2' sx={style1} gutterBottom>Policy Number</Typography>
|
||||||
|
<Typography variant='subtitle2' sx={style2} gutterBottom>{requestLog?.policy_number}</Typography>
|
||||||
|
</Stack>
|
||||||
|
<Stack direction='row' spacing={2} sx={marginBottom1}>
|
||||||
|
<Typography variant='subtitle2' sx={style1} gutterBottom>Name</Typography>
|
||||||
|
<Typography variant='subtitle2' sx={style2} gutterBottom>{requestLog?.name}</Typography>
|
||||||
|
</Stack>
|
||||||
|
<Stack direction='row' spacing={2} sx={marginBottom1}>
|
||||||
|
<Typography variant='subtitle2' sx={style1} gutterBottom>Date Of Birth</Typography>
|
||||||
|
<Typography variant='subtitle2' sx={style2} gutterBottom>{requestLog?.date_of_birth ? fDate(requestLog?.date_of_birth) : '-'}</Typography>
|
||||||
|
</Stack>
|
||||||
|
<Stack direction='row' spacing={2} sx={marginBottom1}>
|
||||||
|
<Typography variant='subtitle2' sx={style1} gutterBottom>Marital Status</Typography>
|
||||||
|
<Typography variant='subtitle2' sx={style2} gutterBottom>{requestLog?.marital_status}</Typography>
|
||||||
|
</Stack>
|
||||||
|
<Stack direction='row' spacing={2} sx={marginBottom1}>
|
||||||
|
<Typography variant='subtitle2' sx={style1} gutterBottom>Submission Date</Typography>
|
||||||
|
<Typography variant='subtitle2' sx={style2} gutterBottom>{requestLog?.submission_date ? fDateTimesecond(requestLog?.submission_date) : '-'}</Typography>
|
||||||
|
</Stack>
|
||||||
|
|
||||||
|
<Stack direction='row' spacing={2} sx={marginBottom1}>
|
||||||
|
<Typography variant='subtitle2' sx={style1} gutterBottom>Discharge Date</Typography>
|
||||||
|
<Typography variant='subtitle2' sx={style2} gutterBottom>{requestLog?.discharge_date ? fDateTimesecond(requestLog?.discharge_date) : '-'}</Typography>
|
||||||
|
</Stack>
|
||||||
|
|
||||||
|
<Stack direction='row' spacing={2} sx={marginBottom1}>
|
||||||
|
<Typography variant='subtitle2' sx={style1} gutterBottom>No KTP</Typography>
|
||||||
|
<Typography variant='subtitle2' sx={style2} gutterBottom>{requestLog?.no_identitas ? requestLog?.no_identitas : '-'}</Typography>
|
||||||
|
</Stack>
|
||||||
|
<Stack direction='row' spacing={2} sx={marginBottom1}>
|
||||||
|
<Typography variant='subtitle2' sx={style1} gutterBottom>Keterangan</Typography>
|
||||||
|
<Typography variant='subtitle2' sx={style2} gutterBottom>{requestLog?.keterangan ? requestLog?.keterangan : '-'}</Typography>
|
||||||
|
</Stack>
|
||||||
|
<Stack direction='row' spacing={2} sx={marginBottom1}>
|
||||||
|
<Typography variant='subtitle2' sx={style1} gutterBottom>Hak Kamar Pasien</Typography>
|
||||||
|
<Typography variant='subtitle2' sx={style2} gutterBottom>{requestLog?.hak_kamar_pasien ? requestLog?.hak_kamar_pasien : '-'}</Typography>
|
||||||
|
</Stack>
|
||||||
|
<Stack direction='row' spacing={2} sx={marginBottom1}>
|
||||||
|
<Typography variant='subtitle2' sx={style1} gutterBottom>Penempatan Kamar</Typography>
|
||||||
|
<Typography variant='subtitle2' sx={style2} gutterBottom>{requestLog?.penempatan_kamar ? requestLog?.penempatan_kamar : '-'}</Typography>
|
||||||
|
</Stack>
|
||||||
|
<Stack direction='row' spacing={2} sx={marginBottom1}>
|
||||||
|
<Typography variant='subtitle2' sx={style1} gutterBottom>Catatan</Typography>
|
||||||
|
<Typography variant='subtitle2' sx={style2} gutterBottom>{requestLog?.catatan ? requestLog?.catatan : '-'}</Typography>
|
||||||
|
</Stack>
|
||||||
|
<Stack direction='row' spacing={2} sx={marginBottom1}>
|
||||||
|
<Typography variant='subtitle2' sx={style3} gutterBottom>Diagnosis</Typography>
|
||||||
|
<Typography variant='subtitle2' sx={style2} gutterBottom>
|
||||||
|
{requestLog?.diagnosis?.length > 0 ? (
|
||||||
|
<ul>
|
||||||
|
{requestLog.diagnosis.map((diagnosisItem, index) => (
|
||||||
|
<li key={index}>{diagnosisItem.code} - {diagnosisItem.name}</li>
|
||||||
|
// Replace 'name' with the property you want to display
|
||||||
|
))}
|
||||||
|
</ul>
|
||||||
|
) : (
|
||||||
|
<p>No diagnosis available.</p>
|
||||||
|
)}
|
||||||
|
</Typography>
|
||||||
|
</Stack>
|
||||||
|
{/* <DialogEditFinalLOG
|
||||||
|
setOpenDialog={setOpenDialogEdit}
|
||||||
requestLog={requestLog}
|
requestLog={requestLog}
|
||||||
>
|
openDialog={openDialogEdit}
|
||||||
</CardDetail>
|
/> */}
|
||||||
|
</Card>
|
||||||
</Grid>
|
</Grid>
|
||||||
|
|
||||||
{/* Service */}
|
{/* Service */}
|
||||||
@@ -138,10 +237,10 @@ export default function Detail() {
|
|||||||
|
|
||||||
{/* Exclusion */}
|
{/* Exclusion */}
|
||||||
<Grid item xs={12} md={12} marginTop={2}>
|
<Grid item xs={12} md={12} marginTop={2}>
|
||||||
<CardExclusion
|
{/* <CardExclusion
|
||||||
requestLog={requestLog}
|
requestLog={requestLog}
|
||||||
>
|
>
|
||||||
</CardExclusion>
|
</CardExclusion> */}
|
||||||
</Grid>
|
</Grid>
|
||||||
|
|
||||||
{/* Hospital Care */}
|
{/* Hospital Care */}
|
||||||
@@ -313,7 +412,6 @@ export default function Detail() {
|
|||||||
>
|
>
|
||||||
|
|
||||||
</CardBenefit> */}
|
</CardBenefit> */}
|
||||||
|
|
||||||
<DialogBenefit
|
<DialogBenefit
|
||||||
requestLog={requestLog}
|
requestLog={requestLog}
|
||||||
openDialog={openDialogBenefit}
|
openDialog={openDialogBenefit}
|
||||||
@@ -326,15 +424,21 @@ export default function Detail() {
|
|||||||
data={BenefitConfigurationData}
|
data={BenefitConfigurationData}
|
||||||
openDialog={openDialogEditBenefit}
|
openDialog={openDialogEditBenefit}
|
||||||
setOpenDialog={setDialogEditBenefit}
|
setOpenDialog={setDialogEditBenefit}
|
||||||
>
|
/>
|
||||||
|
|
||||||
</DialogEditBenefit>
|
|
||||||
{/* Dialog Delete */}
|
{/* Dialog Delete */}
|
||||||
<DialogDeleteBenfit
|
<DialogDeleteBenfit
|
||||||
id={idBenefitData}
|
id={idBenefitData}
|
||||||
openDialog={openDialogDeleteBenefit}
|
openDialog={openDialogDeleteBenefit}
|
||||||
setOpenDialog={setDialogDeleteBenefit}
|
setOpenDialog={setDialogDeleteBenefit}
|
||||||
/>
|
/>
|
||||||
|
|
||||||
|
{/* Dialog Edit Detai; */}
|
||||||
|
<DialogEditFinalLOG
|
||||||
|
setOpenDialog={setDialogDEditDetail}
|
||||||
|
requestLog={requestLog}
|
||||||
|
openDialog={openDialogEditDetail}
|
||||||
|
/>
|
||||||
</Grid>
|
</Grid>
|
||||||
|
|
||||||
{/* Medicine */}
|
{/* Medicine */}
|
||||||
|
|||||||
@@ -45,6 +45,9 @@ export type DetailFinalLogType = {
|
|||||||
hak_kamar_pasien : string,
|
hak_kamar_pasien : string,
|
||||||
penempatan_kamar : string,
|
penempatan_kamar : string,
|
||||||
catatan : string,
|
catatan : string,
|
||||||
|
discharge_date : string,
|
||||||
|
reason : string,
|
||||||
|
diagnosis : Diagnosis[],
|
||||||
benefit : Benefit[],
|
benefit : Benefit[],
|
||||||
benefit_data : BenefitData[],
|
benefit_data : BenefitData[],
|
||||||
config_service : ConfigService,
|
config_service : ConfigService,
|
||||||
@@ -53,6 +56,12 @@ export type DetailFinalLogType = {
|
|||||||
files : file[],
|
files : file[],
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export type Diagnosis = {
|
||||||
|
id : number,
|
||||||
|
name : string,
|
||||||
|
code : string
|
||||||
|
}
|
||||||
|
|
||||||
export type BenefitData = {
|
export type BenefitData = {
|
||||||
amount_incurred : number,
|
amount_incurred : number,
|
||||||
amount_approved : number,
|
amount_approved : number,
|
||||||
|
|||||||
Reference in New Issue
Block a user