// mui import { Box, Tabs, Tab, Grid, Card, Stack, Typography, TableHead, TableCell, TableBody, Table, TableRow, MenuItem, Skeleton, List, ListSubheader, ListItem, ListItemText, ListItemButton, Divider, } from '@mui/material'; import { styled } from '@mui/material/styles'; import { Download as DownloadIcon, Circle as CircleIcon, TableView } from '@mui/icons-material'; // components import Page from '../../components/Page'; // utils import { useState, SyntheticEvent, useContext, useEffect } from 'react'; import { UserCurrentCorporateContext } from '../../contexts/UserCurrentCorporate'; import { useNavigate, useParams } from 'react-router-dom'; import axios from '../../utils/axios'; import { fDateBirth, fDateSuffix, fDateTime } from '../../utils/formatTime'; import ArrowBackIosIcon from '@mui/icons-material/ArrowBackIos'; import TimelineItem, { timelineItemClasses } from '@mui/lab/TimelineItem'; import { Timeline, TimelineConnector, TimelineContent, TimelineDot, TimelineSeparator, } from '@mui/lab'; import TableMoreMenu from '../../components/table/TableMoreMenu'; import Label from '../../components/Label'; import { fSplit } from '../../utils/formatNumber'; interface TabPanelProps { children?: React.ReactNode; index: number; value: number; } function TabPanel(props: TabPanelProps) { const { children, value, index, ...other } = props; return ( ); } function a11yProps(index: number) { return { id: `simple-tab-${index}`, 'aria-controls': `simple-tabpanel-${index}`, }; } interface StyledTabsProps { children?: React.ReactNode; value: number; onChange: (event: React.SyntheticEvent, newValue: number) => void; } const StyledTabs = styled((props: StyledTabsProps) => )({ '& .MuiTabs-indicator': { display: 'flex', justifyContent: 'center', backgroundColor: '19BBBB', }, '& .MuiTabs-indicatorSpan': { maxWidth: 40, width: '100%', backgroundColor: '#635ee7', }, }); interface StyledTabProps { label: string; icon?: string | React.ReactElement; } const StyledTab = styled((props: StyledTabProps) => )( ({ theme }) => ({ fontWeight: 600, fontSize: '14px', color: theme.palette.grey[600], maxWidth: '15%', flex: 1, margin: '0 !important', '&.Mui-selected': { color: theme.palette.grey[900], }, '&:hover': { color: theme.palette.grey[900], opacity: 1, }, }) ); type ServiceMonitoringProps = { companyName: string; serviceCode: string; memberId: string; fullName: string; dateOfBirth: string; phoneNumber: string; email: string; symptoms: string; sign: string; mainDiagnose: string; comparativeDiagnosis: string; serviceName: string; benefits: { amountIncurred: number; amountApproved: number; amountNotAprroved: number; excessPaid: number; description: string; name: string; }[]; benefitTotal: { totalIncurred: number; totalApprove: number; totalNotApprove: number; totalExcess: number; }; hospital: string; admissionDate: string; dischargeDate: string; dailyMonitorings: Record< string, Array<{ time: string; status: string; subject: string; bodyTemperature: string; sistole: string; diastole: string; respirationRate: string; analysis: string; complaints: string; plans: { type: number; plan: string; }[]; }> >; laboratoriumResults: Record< string, Array<{ code: string; date: string; examination: string; location: string; }> >; }; export default function ServiceMonitoring() { const navigate = useNavigate(); const controller = new AbortController(); const [value, setValue] = useState(0); const [loading, setLoading] = useState(false); const handleChange = (event: SyntheticEvent, newValue: number) => { setValue(newValue); }; const [data, setData] = useState(null); const { corporateValue } = useContext(UserCurrentCorporateContext); const { memberId, requestLogId } = useParams(); useEffect(() => { (async () => { try { setLoading(true); const response = await axios.get(`${corporateValue}/service-monitoring/${requestLogId}`, { signal: controller.signal, }); setData(response.data.data); if (response.data.data.serviceCode !== 'IP') { setValue(1); } } catch (error: any) { console.error('Error fetching data:', error.message); } finally { setLoading(false); } })(); return () => { controller.abort(); }; }, [corporateValue]); return ( navigate(`/alarm-center/member/${memberId}}`)} sx={{ cursor: 'pointer' }} /> Service Monitoring {/* Item 1 */} {loading ? : 'Employee Profile'} {loading ? : 'Company Name'} {loading ? ( ) : data && data.companyName ? ( data.companyName ) : ( '-' )} {loading ? : 'Member ID'} {loading ? ( ) : data && data.memberId ? ( data.memberId ) : ( '-' )} {loading ? : 'Full Name'} {loading ? ( ) : data && data.fullName ? ( data.fullName ) : ( '-' )} {loading ? : 'Date of Birth'} {loading ? ( ) : data && data.dateOfBirth ? ( fDateBirth(data.dateOfBirth) ) : ( '-' )} {loading ? : 'Phone Number'} {loading ? ( ) : data && data.phoneNumber ? ( data.phoneNumber ) : ( '-' )} {loading ? : 'Email'} {loading ? ( ) : data && data.email ? ( data.email ) : ( '-' )} {loading ? : 'Diagnose Summary'} {loading ? : 'Symptoms'} {loading ? ( ) : data && data.symptoms ? ( data.symptoms ) : ( '-' )} {loading ? : 'Sign'} {loading ? ( ) : data && data.sign ? ( data.sign ) : ( '-' )} {loading ? : 'Main Diagnose'} {loading ? ( ) : data && data.mainDiagnose ? ( data.mainDiagnose ) : ( '-' )} {loading ? ( ) : ( 'Comparative Diagnosis' )} {loading ? ( ) : data && data.comparativeDiagnosis ? ( data.comparativeDiagnosis ) : ( '-' )} {loading ? : 'Services'} {loading ? : 'Service Name'} {loading ? ( ) : data && data.serviceName ? ( data.serviceName ) : ( '-' )} {loading ? : 'Benefits'} {loading ? ( ) : data && data.benefits && data.benefits.length > 0 ? ( data.benefits.map((benefitValue, benefitIndex) => ( {benefitIndex + 1 + `. ` + benefitValue.name} } key={benefitIndex} > Amount Incurred : Rp. {fSplit(benefitValue.amountApproved)} Amount Approved : Rp. {fSplit(benefitValue.amountApproved)} Amount Not Approved : Rp. {fSplit(benefitValue.amountNotAprroved)} Excess Paid : Rp. {fSplit(benefitValue.excessPaid)} Description : Rp. {fSplit(benefitValue.description)} )) ) : ( - )} {loading ? : 'Benefits Total'} {loading ? : 'Total Incurred : Rp. '} {loading ? ( ) : data && data.benefitTotal ? ( fSplit(data.benefitTotal.totalIncurred) ) : ( '-' )} {loading ? : 'Total Approve : Rp. '} {loading ? ( ) : data && data.benefitTotal ? ( fSplit(data.benefitTotal.totalApprove) ) : ( '-' )} {loading ? : 'Total Not Approve : Rp.'} {loading ? ( ) : data && data.benefitTotal ? ( fSplit(data.benefitTotal.totalNotApprove) ) : ( '-' )} {loading ? : 'Total Excess : Rp.'} {loading ? ( ) : data && data.benefitTotal ? ( fSplit(data.benefitTotal.totalExcess) ) : ( '-' )} {loading ? : 'Hospital'} {loading ? ( ) : data && data.hospital ? ( data.hospital ) : ( '-' )} {loading ? : 'Admission Date'} {loading ? ( ) : data && data.admissionDate ? ( fDateSuffix(data.admissionDate) ) : ( '-' )} {loading ? : 'Discharge Date'} {loading ? ( ) : data && data.dischargeDate ? ( fDateSuffix(data.dischargeDate) ) : ( '-' )} {/* Benefit Item */} {loading ? ( ) : ( {data && data.dailyMonitorings ? ( {data && data.dailyMonitorings && Object.keys(data.dailyMonitorings).length > 0 && Object.keys(data.dailyMonitorings).map((date, dateIndex) => ( {date ? date : '-'} {data.dailyMonitorings[date].map( (dailyMonitoring, dailyMonitoringIndex) => ( Subject {dailyMonitoring.subject ? dailyMonitoring.subject : '-'} Objektif Body Temperature {dailyMonitoring.bodyTemperature ? dailyMonitoring.bodyTemperature : '-'} Sistole {dailyMonitoring.sistole ? dailyMonitoring.sistole : '-'} Diastole {dailyMonitoring.diastole ? dailyMonitoring.diastole : '-'} Respiration Rate {dailyMonitoring.respirationRate ? dailyMonitoring.respirationRate : '-'} Complaints {dailyMonitoring.complaints ? dailyMonitoring.complaints : '-'} Analysis {dailyMonitoring.analysis ? dailyMonitoring.analysis : '-'} Perencanaan {data.dailyMonitorings ? (
    {dailyMonitoring.plans.length > 0 && dailyMonitoring.plans.map((plan, planIndex) => (
  • {plan.plan}
  • ))}
) : ( '-' )}
) )}
))}
) : ( No Data Found )}
{data && data.laboratoriumResults && Object.keys(data.laboratoriumResults).length > 0 ? ( Object.keys(data.dailyMonitorings).map((date, dateIndex) => ( {date ? date : '-'} {data.laboratoriumResults[date].map( (laboratoriumResult, laboratoriumResultIndex) => ( Date Examination Location {/* */} {laboratoriumResult.examination ? laboratoriumResult.examination : '-'} {laboratoriumResult.location ? laboratoriumResult.location : '-'} {/* handleDownloadClick(laboratoriumResult.file)} > Download } /> */}
) )}
)) ) : ( No Data Found )}
)}
); }