Merge remote-tracking branch 'origin/staging' into origin/production

This commit is contained in:
Linksehat Staging Server
2024-02-19 16:30:48 +07:00
10 changed files with 146 additions and 52 deletions

View File

@@ -222,7 +222,7 @@ class CorporateMemberController extends Controller
'requestLogBenefits:id,request_log_id,benefit_id,amount_incurred,amount_approved,amount_not_approved,excess_paid,keterangan' => [ 'requestLogBenefits:id,request_log_id,benefit_id,amount_incurred,amount_approved,amount_not_approved,excess_paid,keterangan' => [
'benefit' 'benefit'
], ],
'requestLogDailyMonitorings:id,request_log_id,submission_date,subject,body_temperature,sistole,diastole,respiration_rate,analysis,lab_date,provider,examination' => [ 'requestLogDailyMonitorings:id,request_log_id,submission_date,subject,object,body_temperature,sistole,diastole,respiration_rate,analysis,lab_date,provider,examination' => [
'requestLogMedicalPlans:request_log_daily_monitoring_id,plan,type', 'requestLogMedicalPlans:request_log_daily_monitoring_id,plan,type',
// 'document' // 'document'
], ],

View File

@@ -141,10 +141,11 @@ class DataServiceMonitoring extends JsonResource
'time' => Carbon::parse($requestLogDailyMonitoring->submission_date)->format('H:i') ?? null, 'time' => Carbon::parse($requestLogDailyMonitoring->submission_date)->format('H:i') ?? null,
'status' => 'Done' ?? null, 'status' => 'Done' ?? null,
'subject' => $requestLogDailyMonitoring->subject ?? null, 'subject' => $requestLogDailyMonitoring->subject ?? null,
'object' => $requestLogDailyMonitoring->object ?? null,
'bodyTemperature' => $requestLogDailyMonitoring->body_temperature ?? null, 'bodyTemperature' => $requestLogDailyMonitoring->body_temperature ?? null,
'sistole' => $requestLogDailyMonitoring->sistole . 'mm[Hg]' ?? null, 'sistole' => $requestLogDailyMonitoring->sistole ?? null,
'diastole' => $requestLogDailyMonitoring->diastole . 'mm[Hg]' ?? null, 'diastole' => $requestLogDailyMonitoring->diastole ?? null,
'respirationRate' => $requestLogDailyMonitoring->respiration_rate . '/min' ?? null, 'respirationRate' => $requestLogDailyMonitoring->respiration_rate ?? null,
'analysis' => $requestLogDailyMonitoring->analysis ?? null, 'analysis' => $requestLogDailyMonitoring->analysis ?? null,
'complaints' => $requestLogDailyMonitoring->complaints ?? null, 'complaints' => $requestLogDailyMonitoring->complaints ?? null,
'plans' => $this->when($requestLogDailyMonitoring->requestLogMedicalPlans, collect($requestLogDailyMonitoring->requestLogMedicalPlans) 'plans' => $this->when($requestLogDailyMonitoring->requestLogMedicalPlans, collect($requestLogDailyMonitoring->requestLogMedicalPlans)

View File

@@ -102,7 +102,7 @@ class DailyMonitoringController extends Controller
{ {
// get id request log // get id request log
$request_logs = DB::table('request_logs') $request_logs = DB::table('request_logs')
->select('id') ->select('id','organization_id')
->where('code', $request_code) ->where('code', $request_code)
->first(); ->first();
@@ -115,6 +115,7 @@ class DailyMonitoringController extends Controller
'message' => "success", 'message' => "success",
'data' => [ 'data' => [
'detail_list'=> $detail_list, 'detail_list'=> $detail_list,
'organization_id' => $request_logs ? $request_logs->organization_id : 0
] ]
],200); ],200);
} }
@@ -164,6 +165,7 @@ class DailyMonitoringController extends Controller
$db_response = DailyMonitoring::create([ $db_response = DailyMonitoring::create([
'claim_id' => $claim->id, 'claim_id' => $claim->id,
'subject' => $request->subject, 'subject' => $request->subject,
'objective' => $request->objective,
'sistole' => $request->sistole, 'sistole' => $request->sistole,
'diastole' => $request->diastole, 'diastole' => $request->diastole,
'body_temperature' => $request->body_temperature, 'body_temperature' => $request->body_temperature,
@@ -232,10 +234,10 @@ class DailyMonitoringController extends Controller
'request_code' => 'required|exists:request_logs,code', 'request_code' => 'required|exists:request_logs,code',
'subject' => 'required', 'subject' => 'required',
'submission_date' => 'required', 'submission_date' => 'required',
'body_temperature' => 'required|numeric', 'body_temperature' => 'required',
'sistole' => 'required|numeric', 'sistole' => 'required',
'diastole' => 'required|numeric', 'diastole' => 'required',
'respiration_rate' => 'required|numeric', 'respiration_rate' => 'required',
'analysis' => 'required', 'analysis' => 'required',
'medical_plan' => 'required', 'medical_plan' => 'required',
'non_medikamentosa_plan' => 'required', 'non_medikamentosa_plan' => 'required',
@@ -261,6 +263,7 @@ class DailyMonitoringController extends Controller
'request_log_id' => $request_log->id, 'request_log_id' => $request_log->id,
'submission_date' => $request->submission_date, 'submission_date' => $request->submission_date,
'subject' => $request->subject, 'subject' => $request->subject,
'object' => $request->objective,
'sistole' => $request->sistole, 'sistole' => $request->sistole,
'diastole' => $request->diastole, 'diastole' => $request->diastole,
'body_temperature' => $request->body_temperature, 'body_temperature' => $request->body_temperature,

View File

@@ -15,6 +15,7 @@ class RequestDailyMonitoring extends Model
protected $fillable = [ protected $fillable = [
'request_log_id', 'request_log_id',
'subject', 'subject',
'object',
'submission_date', 'submission_date',
'body_temperature', 'body_temperature',
'respiration_rate', 'respiration_rate',
@@ -31,25 +32,25 @@ class RequestDailyMonitoring extends Model
protected $appends = ['medical_plan', 'non_medikamentosa_plan', 'document', 'discharge_date']; protected $appends = ['medical_plan', 'non_medikamentosa_plan', 'document', 'discharge_date'];
public function getBodyTemperatureAttribute() // public function getBodyTemperatureAttribute()
{ // {
return round($this->attributes['body_temperature'], 0); // return round($this->attributes['body_temperature'], 0);
} // }
public function getSistoleAttribute() // public function getSistoleAttribute()
{ // {
return round($this->attributes['sistole'], 0); // return round($this->attributes['sistole'], 0);
} // }
public function getDiastoleAttribute() // public function getDiastoleAttribute()
{ // {
return round($this->attributes['diastole'], 0); // return round($this->attributes['diastole'], 0);
} // }
public function getRespirationRateAttribute() // public function getRespirationRateAttribute()
{ // {
return round($this->attributes['respiration_rate'], 0); // return round($this->attributes['respiration_rate'], 0);
} // }
public function getMedicalPlanAttribute() public function getMedicalPlanAttribute()
{ {

View File

@@ -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_log_daily_monitorings', function (Blueprint $table) {
$table->text('object')->after('subject')->nullable()->default(null);
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::table('request_log_daily_monitorings', function (Blueprint $table) {
$table->dropColumn('object');
});
}
};

View File

@@ -169,10 +169,11 @@ type ServiceMonitoringProps = {
time: string; time: string;
status: string; status: string;
subject: string; subject: string;
bodyTemperature: string; object: string;
sistole: string; bodyTemperature: number;
diastole: string; sistole: number;
respirationRate: string; diastole: number;
respirationRate: number;
analysis: string; analysis: string;
complaints: string; complaints: string;
plans: { plans: {
@@ -942,10 +943,15 @@ export default function ServiceMonitoring() {
</Stack> </Stack>
</Grid> </Grid>
<Grid item xs={12} lg={12} md={12}> <Grid item xs={12} lg={12} md={12}>
<Stack spacing={1}> <Stack spacing={1} sx={{ paddingBottom: 2 }}>
<Typography variant="h6" sx={{ paddingBottom: 2 }}> <Typography variant="h6">
Objektif Objektif
</Typography> </Typography>
<Typography variant="inherit">
{dailyMonitoring.object
? dailyMonitoring.object
: '-'}
</Typography>
</Stack> </Stack>
<Stack direction={'row'} sx={{ paddingY: 1 }} spacing={2}> <Stack direction={'row'} sx={{ paddingY: 1 }} spacing={2}>
<Grid item xs={6} lg={6} md={6}> <Grid item xs={6} lg={6} md={6}>
@@ -958,8 +964,8 @@ export default function ServiceMonitoring() {
<Grid item xs={6} lg={6} md={6}> <Grid item xs={6} lg={6} md={6}>
<Stack> <Stack>
<Typography variant="subtitle1"> <Typography variant="subtitle1">
{dailyMonitoring.bodyTemperature {dailyMonitoring.bodyTemperature > 0
? dailyMonitoring.bodyTemperature ? dailyMonitoring.bodyTemperature + ' Cel'
: '-'} : '-'}
</Typography> </Typography>
</Stack> </Stack>
@@ -974,8 +980,8 @@ export default function ServiceMonitoring() {
<Grid item xs={6} lg={6} md={6}> <Grid item xs={6} lg={6} md={6}>
<Stack> <Stack>
<Typography variant="subtitle1"> <Typography variant="subtitle1">
{dailyMonitoring.sistole {dailyMonitoring.sistole > 0
? dailyMonitoring.sistole ? dailyMonitoring.sistole + ' mm[Hg]'
: '-'} : '-'}
</Typography> </Typography>
</Stack> </Stack>
@@ -990,8 +996,8 @@ export default function ServiceMonitoring() {
<Grid item xs={6} lg={6} md={6}> <Grid item xs={6} lg={6} md={6}>
<Stack> <Stack>
<Typography variant="subtitle1"> <Typography variant="subtitle1">
{dailyMonitoring.diastole {dailyMonitoring.diastole > 0
? dailyMonitoring.diastole ? dailyMonitoring.diastole + ' mm[Hg]'
: '-'} : '-'}
</Typography> </Typography>
</Stack> </Stack>
@@ -1008,14 +1014,14 @@ export default function ServiceMonitoring() {
<Grid item xs={6} lg={6} md={6}> <Grid item xs={6} lg={6} md={6}>
<Stack> <Stack>
<Typography variant="subtitle1"> <Typography variant="subtitle1">
{dailyMonitoring.respirationRate {dailyMonitoring.respirationRate > 0
? dailyMonitoring.respirationRate ? dailyMonitoring.respirationRate + ' / min'
: '-'} : '-'}
</Typography> </Typography>
</Stack> </Stack>
</Grid> </Grid>
</Stack> </Stack>
<Stack direction={'row'} sx={{ paddingY: 1 }} spacing={2}> {/* <Stack direction={'row'} sx={{ paddingY: 1 }} spacing={2}>
<Grid item xs={6} lg={6} md={6}> <Grid item xs={6} lg={6} md={6}>
<Stack> <Stack>
<Typography variant="inherit">Complaints</Typography> <Typography variant="inherit">Complaints</Typography>
@@ -1030,7 +1036,7 @@ export default function ServiceMonitoring() {
</Typography> </Typography>
</Stack> </Stack>
</Grid> </Grid>
</Stack> </Stack> */}
<Stack spacing={1}> <Stack spacing={1}>
<Typography variant="h6" sx={{ paddingTop: 2 }}> <Typography variant="h6" sx={{ paddingTop: 2 }}>
Analysis Analysis

View File

@@ -28,21 +28,31 @@ import InsertDriveFileIcon from '@mui/icons-material/InsertDriveFile';
* Utils, Types, Functions * Utils, Types, Functions
* ============================================ * ============================================
*/ */
import { AddMonitoringDetail } from '../Model/Functions'; import { AddMonitoringDetail, getOrganizationId } from '../Model/Functions';
import { DetailMonitoringListType} from '../Model/Types'; import { DetailMonitoringListType} from '../Model/Types';
import FormCreateFilesUpload from '@/pages/CustomerService/FinalLog/Components/FormCreateFilesUpload'; import FormCreateFilesUpload from '@/pages/CustomerService/FinalLog/Components/FormCreateFilesUpload';
import MultiFilePreview from '@/components/upload/MultiFilePreview'; import MultiFilePreview from '@/components/upload/MultiFilePreview';
import Iconify from '@/components/Iconify'; import Iconify from '@/components/Iconify';
import { useRef } from 'react'; import { useEffect, useRef, useState } from 'react';
export default function DetailMonitoringList() { export default function DetailMonitoringList() {
const { member_id, claim_code } = useParams(); const { member_id, claim_code } = useParams();
const [organizationId, setOrganizationId] = useState<number|undefined>();
const navigate = useNavigate() const navigate = useNavigate()
const pageTitle = claim_code??'_ _ _ _'; const pageTitle = claim_code??'_ _ _ _';
const fileInput1 = useRef<HTMLInputElement>(null); const fileInput1 = useRef<HTMLInputElement>(null);
const fileInput2 = useRef<HTMLInputElement>(null); const fileInput2 = useRef<HTMLInputElement>(null);
const fileInput3 = useRef<HTMLInputElement>(null); const fileInput3 = useRef<HTMLInputElement>(null);
const loadOrganizationID = async () => {
const organization_id = await getOrganizationId(claim_code??'');
setOrganizationId(organization_id);
}
useEffect(() => {
loadOrganizationID();
}, [])
// setup form // setup form
// ==================================== // ====================================
const defaultValues: DetailMonitoringListType = { const defaultValues: DetailMonitoringListType = {
@@ -50,6 +60,7 @@ export default function DetailMonitoringList() {
claim_code : '', claim_code : '',
claim_id : '', claim_id : '',
subject : '', subject : '',
objective : '',
submission_date : '', submission_date : '',
body_temperature: '', body_temperature: '',
sistole : '', sistole : '',
@@ -157,13 +168,11 @@ export default function DetailMonitoringList() {
// Submit Form // Submit Form
// ===================================== // =====================================
const submitHandler = async (data: DetailMonitoringListType) => { const submitHandler = async (data: DetailMonitoringListType) => {
console.log(claim_code);
const response = await AddMonitoringDetail(claim_code??'', data); const response = await AddMonitoringDetail(claim_code??'', data);
if (response == true) { if (response == true) {
reset(); reset();
navigate('/case_management/daily_monitoring/'+member_id+'/claims', { replace: true }); navigate('/case_management/daily_monitoring/'+member_id+'/'+organizationId+'/claims', { replace: true });
// window.location.reload() // window.location.reload()
} }
} }
@@ -171,7 +180,7 @@ export default function DetailMonitoringList() {
return ( return (
<Page title={pageTitle}> <Page title={pageTitle}>
<Box sx={{ display: 'flex', alignItems: 'center', pl: '22px', mb: '40px' }}> <Box sx={{ display: 'flex', alignItems: 'center', pl: '22px', mb: '40px' }}>
<IconButton size='large' color='inherit' onClick={() => navigate(`/case_management/daily_monitoring/${member_id}/claims`)} > <IconButton size='large' color='inherit' onClick={() => navigate(`/case_management/daily_monitoring/${member_id}/${organizationId}/claims`)} >
<ArrowBackIosNew/> <ArrowBackIosNew/>
</IconButton> </IconButton>
@@ -215,6 +224,8 @@ export default function DetailMonitoringList() {
id="subject" id="subject"
name='subject' name='subject'
placeholder='Subjective' placeholder='Subjective'
multiline
rows={4}
/> />
</Grid> </Grid>
</Grid> </Grid>
@@ -225,9 +236,18 @@ export default function DetailMonitoringList() {
<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">
Objectif Objective
</Typography> </Typography>
</Grid> </Grid>
<Grid item xs={12} sx={{display: 'flex', gap: 1}}>
<RHFTextField
id="objective"
name='objective'
placeholder='Objective'
multiline
rows={4}
/>
</Grid>
<Grid item xs={12}> <Grid item xs={12}>
<Grid container spacing={3}> <Grid container spacing={3}>
<Grid item xs={3}> <Grid item xs={3}>

View File

@@ -29,6 +29,7 @@ import FiberManualRecord from '@mui/icons-material/FiberManualRecord';
*/ */
import { fDate, fDateOnly } from '@/utils/formatTime'; import { fDate, fDateOnly } from '@/utils/formatTime';
import { getMonitoringDetailList } from '../Model/Functions'; import { getMonitoringDetailList } from '../Model/Functions';
import { getOrganizationId } from '../Model/Functions';
import { DetailMonitoringListType } from '../Model/Types'; import { DetailMonitoringListType } from '../Model/Types';
@@ -40,7 +41,7 @@ export default function DetailMonitoringList() {
// State // State
// -------------------- // --------------------
const [detailMonitoringList, setDetailMonitoringList] = useState<DetailMonitoringListType[]>(); const [detailMonitoringList, setDetailMonitoringList] = useState<DetailMonitoringListType[]>();
const [organizationId, setOrganizationId] = useState<number|undefined>();
// Use Effect // Use Effect
// -------------------- // --------------------
useEffect(() => { useEffect(() => {
@@ -51,8 +52,10 @@ export default function DetailMonitoringList() {
// ------------------- // -------------------
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??'');
setDetailMonitoringList(response); setDetailMonitoringList(response);
setOrganizationId(organization_id);
} }
return ( return (
@@ -61,7 +64,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}/claims`)} > <IconButton size='large' color='inherit' onClick={() => navigate(`/case_management/daily_monitoring/${member_id}/${organizationId}/claims`)} >
<ArrowBackIosNew/> <ArrowBackIosNew/>
</IconButton> </IconButton>
@@ -129,6 +132,11 @@ export default function DetailMonitoringList() {
Object : Object :
</Typography> </Typography>
</Grid> </Grid>
<Grid item xs={12} paddingY={2}>
<Typography variant="body2" color={"GrayText"}>
{row.object}
</Typography>
</Grid>
<Grid item xs={12}> <Grid item xs={12}>
<Grid container spacing={2}> <Grid container spacing={2}>
<Grid item xs={6}> <Grid item xs={6}>
@@ -138,7 +146,7 @@ export default function DetailMonitoringList() {
</Grid> </Grid>
<Grid item xs={6}> <Grid item xs={6}>
<Typography variant="body2"> <Typography variant="body2">
{row.body_temperature} {row.body_temperature} Cel
</Typography> </Typography>
</Grid> </Grid>
<Grid item xs={6}> <Grid item xs={6}>

View File

@@ -99,3 +99,21 @@ export const getMonitoringDetailList = async ( claim_code: string ): Promise<Det
return response; return response;
}; };
/**
* Get Monitoring Detail List
*/
export const getOrganizationId = async ( claim_code: string ): Promise<number> => {
const response = await axios.get(`/case_management/daily_monitoring/detail/${claim_code}/list`)
.then((res) =>{
return res.data.data.organization_id;
})
.catch((res) => {
enqueueSnackbar("server error !", {
variant: 'error',
});
return [];
});
return response;
};

View File

@@ -52,6 +52,8 @@ export type DetailMonitoringListType = {
claim_id : string|null, claim_id : string|null,
claim_code : string, claim_code : string,
subject : string, subject : string,
object : string,
objective : string,
body_temperature: string, body_temperature: string,
respiration_rate: string, respiration_rate: string,
sistole : string, sistole : string,
@@ -69,6 +71,9 @@ export type DetailMonitoringListType = {
result : files[], result : files[],
document : document[], document : document[],
created_at : string|null created_at : string|null
data : {
organization_id : number
}
} }
export type MedicalPlanStrType = { export type MedicalPlanStrType = {