Merge branch 'ui/master-diagnosis' into staging

This commit is contained in:
korospace
2023-10-26 10:18:57 +07:00
9 changed files with 207 additions and 179 deletions

View File

@@ -90,6 +90,13 @@ const navConfig = [
], ],
}, },
{
title: 'MASTER',
children: [
{ title: 'Diagnosis', path: '/master/diagnosis' },
],
},
{ {
title: 'USER MANAGEMENT', title: 'USER MANAGEMENT',
path: '/users', path: '/users',

View File

@@ -576,32 +576,32 @@ export default function List(props: any) {
)} )}
</TableCell> </TableCell>
<TableCell align="left"> <TableCell align="left">
<TableMoreMenu actions={ <TableMoreMenu actions={
<> <>
<MenuItem onClick={() => setOpen(!open)}> <MenuItem onClick={() => setOpen(!open)}>
<FindInPageOutlined /> <FindInPageOutlined />
Detail Detail
</MenuItem> </MenuItem>
<MenuItem onClick={() => navigate(`/corporates/${corporate_id}/diagnosis-exclusions/${row.id}/edit`)} > <MenuItem onClick={() => navigate(`/corporates/${corporate_id}/diagnosis-exclusions/${row.id}/edit`)} >
<EditOutlined /> <EditOutlined />
Edit Edit
</MenuItem> </MenuItem>
<MenuItem onClick={() => handleActivate(true, { <MenuItem onClick={() => handleActivate(true, {
code: row.code, code: row.code,
name: row.name, name: row.name,
rules: Object.keys(row.rules).length ? 'With Rules' : 'All', rules: Object.keys(row.rules).length ? 'With Rules' : 'All',
id:row.id, id:row.id,
status: row.active, status: row.active,
service: row.service_code service: row.service_code
}) })
} > } >
<CachedIcon /> <CachedIcon />
Update Status Update Status
</MenuItem> </MenuItem>
</> </>
} /> } />
</TableCell> </TableCell>
</TableRow> </TableRow>
{/* COLLAPSIBLE ROW */} {/* COLLAPSIBLE ROW */}
<TableRow> <TableRow>

View File

@@ -16,27 +16,26 @@ export default function Divisions() {
return ( return (
<Page title={ pageTitle }> <Page title={ pageTitle }>
<HeaderBreadcrumbs <HeaderBreadcrumbs
heading={ pageTitle } heading={ pageTitle }
links={[ sx={{ px: 2 }}
{ links={[
name: 'Master', {
href: '/master/diagnosis-template', name: 'Master',
}, href: '/master/diagnosis',
{ },
name: 'Diagnosis Template', {
href: '/master/diagnosis-template', name: 'Diagnosis',
}, href: '/master/diagnosis',
{ },
name: 'Diagnosis', {
href: '/master/diagnosis-template', name: 'Diagnosis',
}, href: '/master/diagnosis',
]} },
/> ]}
/>
<Card>
<List /> <List />
</Card>
</Page> </Page>
); );
} }

View File

@@ -7,7 +7,7 @@ import UploadIcon from '@mui/icons-material/Upload';
import CancelIcon from '@mui/icons-material/Cancel'; import CancelIcon from '@mui/icons-material/Cancel';
import HistoryIcon from '@mui/icons-material/History'; import HistoryIcon from '@mui/icons-material/History';
// hooks // hooks
import { Link, NavLink as RouterLink } from 'react-router-dom'; import { Link, NavLink as RouterLink, useNavigate } from 'react-router-dom';
import React, { ChangeEvent, Component, useEffect, useRef, useState } from 'react'; import React, { ChangeEvent, Component, useEffect, useRef, useState } from 'react';
import useSettings from '../../../hooks/useSettings'; import useSettings from '../../../hooks/useSettings';
import { useParams, useSearchParams } from 'react-router-dom'; import { useParams, useSearchParams } from 'react-router-dom';
@@ -17,12 +17,14 @@ import { LaravelPaginatedData } from '../../../@types/paginated-data';
import { Icd } from '../../../@types/diagnosis'; import { Icd } from '../../../@types/diagnosis';
import BasePagination from '../../../components/BasePagination'; import BasePagination from '../../../components/BasePagination';
import { enqueueSnackbar } from 'notistack'; import { enqueueSnackbar } from 'notistack';
import TableMoreMenu from '@/components/table/TableMoreMenu';
export default function List() { export default function List() {
const { themeStretch } = useSettings(); const navigate = useNavigate();
const { diagnosis_template_id } = useParams(); const { themeStretch } = useSettings();
const [searchParams, setSearchParams] = useSearchParams(); const { diagnosis_template_id } = useParams();
const [importResult, setImportResult] = useState(null); const [searchParams, setSearchParams] = useSearchParams();
const [importResult, setImportResult] = useState(null);
function SearchInput(props: any) { function SearchInput(props: any) {
// SEARCH // SEARCH
@@ -44,7 +46,7 @@ export default function List() {
}, [searchParams]) }, [searchParams])
return ( return (
<form onSubmit={handleSearchSubmit} style={{ width: '100%' }}> <form onSubmit={handleSearchSubmit} style={{ width: '90%' }}>
<TextField id="search-input" ref={searchInput} label="Search" variant="outlined" fullWidth onChange={handleSearchChange} value={searchText}/> <TextField id="search-input" ref={searchInput} label="Search" variant="outlined" fullWidth onChange={handleSearchChange} value={searchText}/>
</form> </form>
); );
@@ -145,8 +147,8 @@ export default function List() {
{/* <h1>kjasndkjandskjasndkjansdkjansd</h1> */} {/* <h1>kjasndkjandskjasndkjansdkjansd</h1> */}
<Button <Button
id="import-button" id="import-button"
variant='outlined' variant='contained'
startIcon={<AddIcon />} sx={{ p: 1.8 }} startIcon={<AddIcon />} sx={{ p: 1.8, width: '200px' }}
aria-controls={createMenu ? 'basic-menu' : undefined} aria-controls={createMenu ? 'basic-menu' : undefined}
aria-haspopup="true" aria-haspopup="true"
aria-expanded={createMenu ? 'true' : undefined} aria-expanded={createMenu ? 'true' : undefined}
@@ -240,15 +242,22 @@ export default function List() {
return ( return (
<React.Fragment> <React.Fragment>
<TableRow sx={{ '& > *': { borderBottom: 'unset' } }}> <TableRow sx={{ '& > *': { borderBottom: '1' } }}>
<TableCell align="left">{row.code}</TableCell> <TableCell align="left"/>
<TableCell align="left">{row.name}</TableCell> <TableCell align="left">{row.code}</TableCell>
<TableCell align="right"> <TableCell align="left">{row.name}</TableCell>
{/* <Button variant="outlined" color="error" size="small">Disable</Button> */} <TableCell align="right">
<Link to={`/master/diagnosis/${row.id}/diagnosis-history`}> <Stack direction="row" justifyContent="flex-end" spacing={1}>
<HistoryIcon /> <TableMoreMenu actions={
</Link> <>
</TableCell> <MenuItem onClick={() => navigate(`/master/diagnosis/${row.id}/diagnosis-history`)}>
<HistoryIcon />
History
</MenuItem>
</>
} />
</Stack>
</TableCell>
</TableRow> </TableRow>
</React.Fragment> </React.Fragment>
); );
@@ -306,17 +315,24 @@ export default function List() {
<Stack> <Stack>
<ImportForm /> <ImportForm />
<Card>
{/* The Main Table */} {/* The Main Table */}
<TableContainer component={Paper}> <TableContainer component={Paper} sx={{ px: 1, mt: 3 }}>
<Table aria-label="collapsible table"> <Table aria-label="collapsible table">
<TableBody> <colgroup>
<col width="20" />
<col width="250" />
<col width="*" />
<col width="50" />
</colgroup>
<TableHead>
<TableRow> <TableRow>
<TableCell align="left" />
<TableCell style={headStyle} align="left">Code</TableCell> <TableCell style={headStyle} align="left">Code</TableCell>
<TableCell style={headStyle} align="left">Description</TableCell> <TableCell style={headStyle} align="left">Description</TableCell>
<TableCell style={headStyle} align="right">Action</TableCell> <TableCell style={headStyle} align="right"></TableCell>
</TableRow> </TableRow>
</TableBody> </TableHead>
{dataTableIsLoading ? {dataTableIsLoading ?
( (
<TableBody> <TableBody>
@@ -344,7 +360,6 @@ export default function List() {
</TableContainer> </TableContainer>
<BasePagination paginationData={dataTableData} onPageChange={handlePageChange}/> <BasePagination paginationData={dataTableData} onPageChange={handlePageChange}/>
</Card>
</Stack> </Stack>
); );
} }

View File

@@ -48,6 +48,7 @@ export default function PlanCreate() {
return ( return (
<Page title= "Master ICD - 10"> <Page title= "Master ICD - 10">
<HeaderBreadcrumbs <HeaderBreadcrumbs
sx={{ px: 2 }}
heading={'Master ICD - 10'} heading={'Master ICD - 10'}
links={[ links={[
{ {

View File

@@ -1,6 +1,6 @@
import * as Yup from 'yup'; import * as Yup from 'yup';
import { LoadingButton } from "@mui/lab"; import { LoadingButton } from "@mui/lab";
import { Card, Grid, Stack, Typography } from "@mui/material"; import { Box, Card, Grid, Stack, Typography } from "@mui/material";
import { CorporatePlan } from "../../../../@types/corporates"; import { CorporatePlan } from "../../../../@types/corporates";
import { FormProvider, RHFSwitch, RHFTextField } from "../../../../components/hook-form"; import { FormProvider, RHFSwitch, RHFTextField } from "../../../../components/hook-form";
import { useEffect, useMemo } from 'react'; import { useEffect, useMemo } from 'react';
@@ -9,6 +9,7 @@ import { yupResolver } from '@hookform/resolvers/yup';
import { useSnackbar } from 'notistack'; import { useSnackbar } from 'notistack';
import { useNavigate, useParams } from 'react-router-dom'; import { useNavigate, useParams } from 'react-router-dom';
import axios from '../../../../utils/axios'; import axios from '../../../../utils/axios';
import palette from '@/theme/palette';
type Props = { type Props = {
isEdit: boolean; isEdit: boolean;
@@ -68,7 +69,7 @@ export default function CorporatePlanForm({ isEdit, currentCorporatePlan }: Prop
enqueueSnackbar('Division created successfully', { variant: 'success' }); enqueueSnackbar('Division created successfully', { variant: 'success' });
}) })
.then((res) => { .then((res) => {
navigate('/master/diagnosis-template', { replace: true }); navigate('/master/diagnosis', { replace: true });
}) })
.catch(({ response }) => { .catch(({ response }) => {
if (response.status === 422) { if (response.status === 422) {
@@ -88,7 +89,7 @@ export default function CorporatePlanForm({ isEdit, currentCorporatePlan }: Prop
enqueueSnackbar('Division updated successfully', { variant: 'success' }); enqueueSnackbar('Division updated successfully', { variant: 'success' });
}) })
.then((res) => { .then((res) => {
navigate('/master/diagnosis-template' , { replace: true }); navigate('/master/diagnosis' , { replace: true });
}) })
.catch(({ response }) => { .catch(({ response }) => {
enqueueSnackbar('Update Failed : '+ response.data.message, { variant: 'error' }); enqueueSnackbar('Update Failed : '+ response.data.message, { variant: 'error' });
@@ -98,31 +99,27 @@ export default function CorporatePlanForm({ isEdit, currentCorporatePlan }: Prop
return ( return (
<FormProvider methods={methods} onSubmit={handleSubmit(onSubmit)}> <FormProvider methods={methods} onSubmit={handleSubmit(onSubmit)}>
<Grid container spacing={2}> <Box sx={{ px: 2 }}>
<Grid item xs={8}> <Grid container spacing={2}>
<Card sx={{ p: 2 }}> <Grid item xs={8}>
<Stack spacing={3}> <Card sx={{ px: 3, py: 4 }}>
<Stack spacing={6}>
<Typography variant="h6">Detail</Typography> <Typography variant="h6" color={palette.light.primary.main}>Detail</Typography>
<RHFTextField name="name" label="Name" /> <RHFTextField name="name" label="Name" />
<RHFTextField name="description" label="Description" /> <RHFTextField name="description" label="Description" />
<LoadingButton type="submit" variant="contained" size="large" fullWidth={true} loading={isSubmitting}> <LoadingButton type="submit" variant="contained" size="large" fullWidth={true} loading={isSubmitting}>
{ isEdit? 'Update' : 'Create' } { isEdit? 'Update' : 'Create' }
</LoadingButton> </LoadingButton>
</Stack> </Stack>
</Card> </Card>
</Grid> </Grid>
{/* <Grid item xs={4}> </Grid>
<Card sx={{ p:2 }}> </Box>
<RHFSwitch name="active" label="Active" />
</Card>
</Grid> */}
</Grid>
</FormProvider> </FormProvider>
); );
} }

View File

@@ -12,27 +12,26 @@ export default function Divisions() {
const { corporate_id } = useParams(); const { corporate_id } = useParams();
const pageTitle = 'Diagnosis Template'; const pageTitle = 'Diagnosis';
return ( return (
<Page title={ pageTitle }> <Page title={ pageTitle }>
<HeaderBreadcrumbs <HeaderBreadcrumbs
sx={{ px: 2 }}
heading={ pageTitle } heading={ pageTitle }
links={[ links={[
{ {
name: 'Master', name: 'Master',
href: '/master/diagnosis-template', href: '/master/diagnosis',
}, },
{ {
name: 'Diagnosis Template', name: 'Diagnosis',
href: '/master/diagnosis-template', href: '/master/diagnosis',
}, },
]} ]}
/> />
<Card>
<List /> <List />
</Card>
</Page> </Page>
); );
} }

View File

@@ -7,7 +7,7 @@ import UploadIcon from '@mui/icons-material/Upload';
import CancelIcon from '@mui/icons-material/Cancel'; import CancelIcon from '@mui/icons-material/Cancel';
import HistoryIcon from '@mui/icons-material/History'; import HistoryIcon from '@mui/icons-material/History';
// hooks // hooks
import { Link, NavLink as RouterLink } from 'react-router-dom'; import { Link, NavLink as RouterLink, useNavigate } from 'react-router-dom';
import React, { ChangeEvent, Component, useEffect, useRef, useState } from 'react'; import React, { ChangeEvent, Component, useEffect, useRef, useState } from 'react';
import useSettings from '../../../../hooks/useSettings'; import useSettings from '../../../../hooks/useSettings';
import { useParams, useSearchParams } from 'react-router-dom'; import { useParams, useSearchParams } from 'react-router-dom';
@@ -17,12 +17,15 @@ import { LaravelPaginatedData } from '../../../../@types/paginated-data';
import { Icd } from '../../../../@types/diagnosis'; import { Icd } from '../../../../@types/diagnosis';
import BasePagination from '../../../../components/BasePagination'; import BasePagination from '../../../../components/BasePagination';
import { enqueueSnackbar } from 'notistack'; import { enqueueSnackbar } from 'notistack';
import TableMoreMenu from '@/components/table/TableMoreMenu';
import { EditOutlined, FindInPageOutlined } from '@mui/icons-material';
export default function List() { export default function List() {
const { themeStretch } = useSettings(); const navigate = useNavigate();
const { corporate_id } = useParams(); const { themeStretch } = useSettings();
const [searchParams, setSearchParams] = useSearchParams(); const { corporate_id } = useParams();
const [importResult, setImportResult] = useState(null); const [searchParams, setSearchParams] = useSearchParams();
const [importResult, setImportResult] = useState(null);
function SearchInput(props: any) { function SearchInput(props: any) {
// SEARCH // SEARCH
@@ -44,7 +47,7 @@ export default function List() {
}, [searchParams]) }, [searchParams])
return ( return (
<form onSubmit={handleSearchSubmit} style={{ width: '100%' }}> <form onSubmit={handleSearchSubmit} style={{ width: '90%' }}>
<TextField id="search-input" ref={searchInput} label="Search" variant="outlined" fullWidth onChange={handleSearchChange} value={searchText}/> <TextField id="search-input" ref={searchInput} label="Search" variant="outlined" fullWidth onChange={handleSearchChange} value={searchText}/>
</form> </form>
); );
@@ -139,17 +142,15 @@ export default function List() {
<SearchInput onSearch={applyFilter}/> <SearchInput onSearch={applyFilter}/>
{/* <h1>kjasndkjandskjasndkjansdkjansd</h1> */} {/* <h1>kjasndkjandskjasndkjansdkjansd</h1> */}
<Button <Button
id="import-button" id="import-button"
variant='outlined' variant='contained'
startIcon={<AddIcon />} sx={{ p: 1.8 }} startIcon={<AddIcon />} sx={{ p: 1.8, width: '200px' }}
aria-controls={createMenu ? 'basic-menu' : undefined} aria-controls={createMenu ? 'basic-menu' : undefined}
aria-haspopup="true" aria-haspopup="true"
aria-expanded={createMenu ? 'true' : undefined} aria-expanded={createMenu ? 'true' : undefined}
onClick={() => navigate(`/master/diagnosis/create`)}
> >
<Link to={`/master/diagnosis-template/create`} style={{ textDecoration: 'none', color: 'blue'}}> Create
Create
</Link>
</Button> </Button>
<Menu <Menu
id="import-button" id="import-button"
@@ -211,27 +212,30 @@ export default function List() {
return ( return (
<React.Fragment> <React.Fragment>
<TableRow sx={{ '& > *': { borderBottom: 'unset' } }}> <TableRow sx={{ '& > *': { borderBottom: '1' } }}>
<TableCell align="left">{row.name}</TableCell> <TableCell align="left"/>
<TableCell align="left">{row.description ?? '-'}</TableCell> <TableCell align="left">{row.name}</TableCell>
<TableCell align="center"> <TableCell align="left">{row.description ?? '-'}</TableCell>
{/* <Button variant="outlined" color="error" size="small">Disable</Button> */} <TableCell align="center">
<Stack direction="row" justifyContent="flex-end" spacing={1}> <Stack direction="row" justifyContent="flex-end" spacing={1}>
<Link to={`/master/diagnosis/${row.id}`}> <TableMoreMenu actions={
<Button variant="outlined" color="primary" size="small"> <>
Detail <MenuItem onClick={() => navigate(`/master/diagnosis/${row.id}`)}>
</Button> <FindInPageOutlined />
</Link> Detail
<Link to={`/master/diagnosis-template/${row.id}/edit`}> </MenuItem>
<Button variant="outlined" color="primary" size="small"> <MenuItem onClick={() => navigate(`/master/diagnosis-template/${row.id}/edit`)} >
Edit <EditOutlined />
</Button> Edit
</Link> </MenuItem>
<Link to={`/master/diagnosis-template/${row.id}/diagnosis-template-history`}> <MenuItem onClick={() => navigate(`/master/diagnosis-template/${row.id}/diagnosis-template-history`)}>
<HistoryIcon /> <HistoryIcon />
</Link> History
</Stack> </MenuItem>
</TableCell> </>
} />
</Stack>
</TableCell>
</TableRow> </TableRow>
</React.Fragment> </React.Fragment>
); );
@@ -288,19 +292,26 @@ export default function List() {
return ( return (
<Stack> <Stack>
<ImportForm /> <ImportForm />
<Card>
{/* The Main Table */} {/* The Main Table */}
<TableContainer component={Paper}> <TableContainer component={Paper} sx={{ px: 1, mt: 3 }}>
<Table aria-label="collapsible table"> <Table aria-label="collapsible table">
<TableBody> <colgroup>
<col width="20" />
<col width="250" />
<col width="*" />
<col width="50" />
</colgroup>
<TableHead>
<TableRow> <TableRow>
<TableCell align="left" />
<TableCell style={headStyle} align="left">Name</TableCell> <TableCell style={headStyle} align="left">Name</TableCell>
<TableCell style={headStyle} align="left">Description</TableCell> <TableCell style={headStyle} align="left">Description</TableCell>
<TableCell style={headStyle} align="right">Action</TableCell> <TableCell style={headStyle} align="right"></TableCell>
</TableRow> </TableRow>
</TableBody> </TableHead>
{dataTableIsLoading ? {dataTableIsLoading ?
( (
<TableBody> <TableBody>
@@ -328,7 +339,6 @@ export default function List() {
</TableContainer> </TableContainer>
<BasePagination paginationData={dataTableData} onPageChange={handlePageChange}/> <BasePagination paginationData={dataTableData} onPageChange={handlePageChange}/>
</Card>
</Stack> </Stack>
); );
} }

View File

@@ -268,12 +268,12 @@ export default function Router() {
element: <MasterHospitalsCreate />, element: <MasterHospitalsCreate />,
}, },
{ {
path: 'master/diagnosis-template/create', path: 'master/diagnosis',
element: <MasterDiagnosisTemplateCreate />, element: <MasterDiagnosisTemplate />,
}, },
{ {
path: 'master/diagnosis-template', path: 'master/diagnosis/create',
element: <MasterDiagnosisTemplate />, element: <MasterDiagnosisTemplateCreate />,
}, },
{ {
path: 'master/diagnosis-template/:id/diagnosis-template-history', path: 'master/diagnosis-template/:id/diagnosis-template-history',