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' => [
'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',
// 'document'
],

View File

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

View File

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

View File

@@ -15,6 +15,7 @@ class RequestDailyMonitoring extends Model
protected $fillable = [
'request_log_id',
'subject',
'object',
'submission_date',
'body_temperature',
'respiration_rate',
@@ -31,25 +32,25 @@ class RequestDailyMonitoring extends Model
protected $appends = ['medical_plan', 'non_medikamentosa_plan', 'document', 'discharge_date'];
public function getBodyTemperatureAttribute()
{
return round($this->attributes['body_temperature'], 0);
}
// public function getBodyTemperatureAttribute()
// {
// return round($this->attributes['body_temperature'], 0);
// }
public function getSistoleAttribute()
{
return round($this->attributes['sistole'], 0);
}
// public function getSistoleAttribute()
// {
// return round($this->attributes['sistole'], 0);
// }
public function getDiastoleAttribute()
{
return round($this->attributes['diastole'], 0);
}
// public function getDiastoleAttribute()
// {
// return round($this->attributes['diastole'], 0);
// }
public function getRespirationRateAttribute()
{
return round($this->attributes['respiration_rate'], 0);
}
// public function getRespirationRateAttribute()
// {
// return round($this->attributes['respiration_rate'], 0);
// }
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;
status: string;
subject: string;
bodyTemperature: string;
sistole: string;
diastole: string;
respirationRate: string;
object: string;
bodyTemperature: number;
sistole: number;
diastole: number;
respirationRate: number;
analysis: string;
complaints: string;
plans: {
@@ -942,10 +943,15 @@ export default function ServiceMonitoring() {
</Stack>
</Grid>
<Grid item xs={12} lg={12} md={12}>
<Stack spacing={1}>
<Typography variant="h6" sx={{ paddingBottom: 2 }}>
<Stack spacing={1} sx={{ paddingBottom: 2 }}>
<Typography variant="h6">
Objektif
</Typography>
<Typography variant="inherit">
{dailyMonitoring.object
? dailyMonitoring.object
: '-'}
</Typography>
</Stack>
<Stack direction={'row'} sx={{ paddingY: 1 }} spacing={2}>
<Grid item xs={6} lg={6} md={6}>
@@ -958,8 +964,8 @@ export default function ServiceMonitoring() {
<Grid item xs={6} lg={6} md={6}>
<Stack>
<Typography variant="subtitle1">
{dailyMonitoring.bodyTemperature
? dailyMonitoring.bodyTemperature
{dailyMonitoring.bodyTemperature > 0
? dailyMonitoring.bodyTemperature + ' Cel'
: '-'}
</Typography>
</Stack>
@@ -974,8 +980,8 @@ export default function ServiceMonitoring() {
<Grid item xs={6} lg={6} md={6}>
<Stack>
<Typography variant="subtitle1">
{dailyMonitoring.sistole
? dailyMonitoring.sistole
{dailyMonitoring.sistole > 0
? dailyMonitoring.sistole + ' mm[Hg]'
: '-'}
</Typography>
</Stack>
@@ -990,8 +996,8 @@ export default function ServiceMonitoring() {
<Grid item xs={6} lg={6} md={6}>
<Stack>
<Typography variant="subtitle1">
{dailyMonitoring.diastole
? dailyMonitoring.diastole
{dailyMonitoring.diastole > 0
? dailyMonitoring.diastole + ' mm[Hg]'
: '-'}
</Typography>
</Stack>
@@ -1008,14 +1014,14 @@ export default function ServiceMonitoring() {
<Grid item xs={6} lg={6} md={6}>
<Stack>
<Typography variant="subtitle1">
{dailyMonitoring.respirationRate
? dailyMonitoring.respirationRate
{dailyMonitoring.respirationRate > 0
? dailyMonitoring.respirationRate + ' / min'
: '-'}
</Typography>
</Stack>
</Grid>
</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}>
<Stack>
<Typography variant="inherit">Complaints</Typography>
@@ -1030,7 +1036,7 @@ export default function ServiceMonitoring() {
</Typography>
</Stack>
</Grid>
</Stack>
</Stack> */}
<Stack spacing={1}>
<Typography variant="h6" sx={{ paddingTop: 2 }}>
Analysis

View File

@@ -28,21 +28,31 @@ import InsertDriveFileIcon from '@mui/icons-material/InsertDriveFile';
* Utils, Types, Functions
* ============================================
*/
import { AddMonitoringDetail } from '../Model/Functions';
import { AddMonitoringDetail, getOrganizationId } from '../Model/Functions';
import { DetailMonitoringListType} from '../Model/Types';
import FormCreateFilesUpload from '@/pages/CustomerService/FinalLog/Components/FormCreateFilesUpload';
import MultiFilePreview from '@/components/upload/MultiFilePreview';
import Iconify from '@/components/Iconify';
import { useRef } from 'react';
import { useEffect, useRef, useState } from 'react';
export default function DetailMonitoringList() {
const { member_id, claim_code } = useParams();
const [organizationId, setOrganizationId] = useState<number|undefined>();
const navigate = useNavigate()
const pageTitle = claim_code??'_ _ _ _';
const fileInput1 = useRef<HTMLInputElement>(null);
const fileInput2 = 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
// ====================================
const defaultValues: DetailMonitoringListType = {
@@ -50,6 +60,7 @@ export default function DetailMonitoringList() {
claim_code : '',
claim_id : '',
subject : '',
objective : '',
submission_date : '',
body_temperature: '',
sistole : '',
@@ -157,13 +168,11 @@ export default function DetailMonitoringList() {
// Submit Form
// =====================================
const submitHandler = async (data: DetailMonitoringListType) => {
console.log(claim_code);
const response = await AddMonitoringDetail(claim_code??'', data);
if (response == true) {
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()
}
}
@@ -171,7 +180,7 @@ export default function DetailMonitoringList() {
return (
<Page title={pageTitle}>
<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/>
</IconButton>
@@ -215,6 +224,8 @@ export default function DetailMonitoringList() {
id="subject"
name='subject'
placeholder='Subjective'
multiline
rows={4}
/>
</Grid>
</Grid>
@@ -225,9 +236,18 @@ export default function DetailMonitoringList() {
<Grid container spacing={3}>
<Grid item xs={12}>
<Typography variant="body1" component="div">
Objectif
Objective
</Typography>
</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 container spacing={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 { getMonitoringDetailList } from '../Model/Functions';
import { getOrganizationId } from '../Model/Functions';
import { DetailMonitoringListType } from '../Model/Types';
@@ -40,7 +41,7 @@ export default function DetailMonitoringList() {
// State
// --------------------
const [detailMonitoringList, setDetailMonitoringList] = useState<DetailMonitoringListType[]>();
const [organizationId, setOrganizationId] = useState<number|undefined>();
// Use Effect
// --------------------
useEffect(() => {
@@ -51,8 +52,10 @@ export default function DetailMonitoringList() {
// -------------------
const loadDataTableData = async () => {
const response = await getMonitoringDetailList(claim_code??'');
const organization_id = await getOrganizationId(claim_code??'');
setDetailMonitoringList(response);
setOrganizationId(organization_id);
}
return (
@@ -61,7 +64,7 @@ export default function DetailMonitoringList() {
{/* back button */}
<Grid item xs={12}>
<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/>
</IconButton>
@@ -129,6 +132,11 @@ export default function DetailMonitoringList() {
Object :
</Typography>
</Grid>
<Grid item xs={12} paddingY={2}>
<Typography variant="body2" color={"GrayText"}>
{row.object}
</Typography>
</Grid>
<Grid item xs={12}>
<Grid container spacing={2}>
<Grid item xs={6}>
@@ -138,7 +146,7 @@ export default function DetailMonitoringList() {
</Grid>
<Grid item xs={6}>
<Typography variant="body2">
{row.body_temperature}
{row.body_temperature} Cel
</Typography>
</Grid>
<Grid item xs={6}>

View File

@@ -99,3 +99,21 @@ export const getMonitoringDetailList = async ( claim_code: string ): Promise<Det
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_code : string,
subject : string,
object : string,
objective : string,
body_temperature: string,
respiration_rate: string,
sistole : string,
@@ -69,6 +71,9 @@ export type DetailMonitoringListType = {
result : files[],
document : document[],
created_at : string|null
data : {
organization_id : number
}
}
export type MedicalPlanStrType = {