Compare commits

..

56 Commits

Author SHA1 Message Date
0d4b0c7576 Merge pull request 'feature/view-patient-data' (#7) from feature/view-patient-data into develop
Reviewed-on: #7
2023-09-14 11:01:37 +00:00
vipeeshpavithran
2e403624a8 View page rating index number not showing correct issue fixed 2023-09-14 15:25:07 +05:30
vipeeshpavithran
18a31e4c2a Bug fix after delete last wo marker entry is updating same rating 2023-09-14 15:12:58 +05:30
sonika
98df5a2825 view and new patient button 2023-09-13 21:40:03 +05:30
sonika
9b18f4aff0 spelling fix 2023-09-11 13:45:09 +05:30
sonika
b9f3aa35e5 css and checkbox veiw only fix 2023-09-11 13:35:01 +05:30
sonika
ca3e9d451c heading and descrition change 2023-09-08 20:06:58 +05:30
vipeeshpavithran
60c1152a38 removed save button and added autosave on marking 2023-09-08 18:43:15 +05:30
vipeeshpavithran
67b6c5921c fixing responsivness of patient marker 2023-09-08 18:38:29 +05:30
sonika
bfbc9a8f0d Merge branch 'feature/view-patient-data' of https://git.seyfertsoft.com/sonika/patient_Information_reactProject into feature/view-patient-data 2023-09-08 15:57:36 +05:30
sonika
24a9a71c04 undefined display state handeling 2023-09-08 15:55:04 +05:30
vipeeshpavithran
3991c7507e icon code commented 2023-09-08 14:17:52 +05:30
sonika
e53df5c7ce signature sisplay change 2023-09-08 14:08:42 +05:30
vipeeshpavithran
d1e1952298 mobile responsive changes 2023-09-08 13:48:44 +05:30
sonika
66f0b3941e draw signature feature 2023-09-08 13:29:14 +05:30
9c1174b325 Merge pull request 'feature/view-patient-data' (#6) from feature/view-patient-data into develop
Reviewed-on: #6
2023-09-07 12:42:37 +00:00
sonika
63a9eb6bf6 Merge branch 'feature/view-patient-data' of https://git.seyfertsoft.com/sonika/patient_Information_reactProject into feature/view-patient-data 2023-09-07 17:44:25 +05:30
sonika
f52b8ed7f4 phone number validation issue fix 2023-09-07 17:44:07 +05:30
vipeeshpavithran
ee88fc80e4 Title change 2023-09-07 17:28:05 +05:30
sonika
e747ac7bda responsive fix all section 2023-09-07 17:15:57 +05:30
sonika
f27ef0e113 responsive all sections 2023-09-07 17:08:28 +05:30
vipeeshpavithran
81fb560898 Screen responsive changes 2023-09-07 14:31:45 +05:30
463fc03153 Merge pull request 'Added image marker values to json data' (#5) from feature/view-patient-data into develop
Reviewed-on: #5
2023-09-07 08:45:44 +00:00
vipeeshpavithran
303225458d Added image marker values to json data 2023-09-07 14:15:12 +05:30
b3b1843711 Merge pull request 'display add table data' (#4) from feature/view-patient-data into develop
Reviewed-on: #4
2023-09-07 07:06:46 +00:00
sonika
dfff86c491 display add table data 2023-09-06 22:24:34 +05:30
sonika
d8a25984fc validation fix 2023-09-06 22:09:44 +05:30
a3e4a61015 Merge pull request 'feature/view-patient-data' (#3) from feature/view-patient-data into develop
Reviewed-on: #3
2023-09-06 14:40:07 +00:00
sonika
9c7ff223fe validation and alrert dialog 2023-09-06 15:51:30 +05:30
sonika
133725b7a0 Merge branch 'feature/view-patient-data' of https://git.seyfertsoft.com/sonika/patient_Information_reactProject into feature/view-patient-data 2023-09-06 12:44:09 +05:30
sonika
48a959bfd6 section 1 validation 2023-09-06 12:43:46 +05:30
vipeeshpavithran
28ba717201 Display or Fill image marker accorsing to type 2023-09-06 10:29:41 +05:30
sonika
617728b771 submit button disable 2023-09-05 19:50:23 +05:30
sonika
98b486d43c section 8 data display 2023-09-05 19:26:54 +05:30
sonika
10724d86fb section 7 display 2023-09-05 19:21:41 +05:30
sonika
3fc6f628bb section 6 display 2023-09-05 19:08:53 +05:30
sonika
44cb8ce9ff section 5 display 2023-09-05 18:59:21 +05:30
sonika
25befed37c section 4 display 2023-09-05 18:46:41 +05:30
sonika
160f98edfb section 3 display 2023-09-05 18:38:53 +05:30
sonika
c410fbbd95 section 2 display changes 2023-09-05 18:24:52 +05:30
sonika
a72be1748f data display changes for section1 2023-09-05 18:14:41 +05:30
vipeeshpavithran
2fd461222a json download and localstorage 2023-09-05 15:10:29 +05:30
vipeeshpavithran
84a55d48c8 Merge branch 'develop' into feature/view-patient-data 2023-09-05 14:37:11 +05:30
a1b090cc82 Merge pull request 'feature/patientSubmitData' (#2) from feature/patientSubmitData into develop
Reviewed-on: #2
2023-09-05 09:04:03 +00:00
sonika
0293126f77 allpatient data 2023-09-05 13:16:32 +05:30
vipeeshpavithran
5add485a0b Added View Patient details screen 2023-09-05 12:29:08 +05:30
70f97d1e00 Merge pull request 'Added image marker components' (#1) from feature/image-marker-functionality into develop
Reviewed-on: #1
2023-09-05 04:31:05 +00:00
sonika
65b559a4fb section 8 data to main 2023-09-04 23:13:32 +05:30
sonika
867dac8327 section 7 data to main 2023-09-04 22:58:24 +05:30
sonika
9b3444a4f6 section6 to main 2023-09-04 22:35:02 +05:30
sonika
a025a32a7f section5 data to main 2023-09-04 22:23:45 +05:30
sonika
3a994d4269 section4 data to main 2023-09-04 22:11:48 +05:30
sonika
f1527188ed section 3 data to main 2023-09-04 21:32:04 +05:30
sonika
25c213d1f7 section2 data to main 2023-09-04 21:10:31 +05:30
sonika
ab27164ed8 section 1 data to the main page 2023-09-04 20:35:18 +05:30
vipeeshpavithran
735ec1e31f Added image marker components 2023-09-04 19:25:29 +05:30
25 changed files with 5048 additions and 1946 deletions

52
package-lock.json generated
View File

@ -37,9 +37,11 @@
"react-dom": "^18.2.0", "react-dom": "^18.2.0",
"react-gauge-chart": "^0.4.1", "react-gauge-chart": "^0.4.1",
"react-icons": "^4.9.0", "react-icons": "^4.9.0",
"react-image-marker": "^1.2.0",
"react-leaflet": "^4.2.1", "react-leaflet": "^4.2.1",
"react-router-dom": "^6.14.2", "react-router-dom": "^6.14.2",
"react-scripts": "5.0.1", "react-scripts": "5.0.1",
"react-signature-canvas": "^1.0.6",
"react-table": "^7.8.0", "react-table": "^7.8.0",
"recharts": "^2.7.2", "recharts": "^2.7.2",
"typescript": "^4.9.5", "typescript": "^4.9.5",
@ -52,6 +54,7 @@
"@types/leaflet": "^1.9.3", "@types/leaflet": "^1.9.3",
"@types/react-date-range": "^1.4.4", "@types/react-date-range": "^1.4.4",
"@types/react-gauge-chart": "^0.4.0", "@types/react-gauge-chart": "^0.4.0",
"@types/react-signature-canvas": "^1.0.2",
"autoprefixer": "^10.4.14", "autoprefixer": "^10.4.14",
"postcss": "^8.4.24", "postcss": "^8.4.24",
"tailwindcss": "^3.3.2" "tailwindcss": "^3.3.2"
@ -4971,6 +4974,16 @@
"@types/react": "*" "@types/react": "*"
} }
}, },
"node_modules/@types/react-signature-canvas": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/@types/react-signature-canvas/-/react-signature-canvas-1.0.2.tgz",
"integrity": "sha512-uDHDoo2JM/9qYS+U7PRKDLBgOnQOOUEkDdXjCxBvI19fWtOLqXisrjiquPu+enu5iu2oWIfU7cVhn1QJZPkLTg==",
"dev": true,
"dependencies": {
"@types/react": "*",
"@types/signature_pad": "*"
}
},
"node_modules/@types/react-transition-group": { "node_modules/@types/react-transition-group": {
"version": "4.4.6", "version": "4.4.6",
"resolved": "https://registry.npmjs.org/@types/react-transition-group/-/react-transition-group-4.4.6.tgz", "resolved": "https://registry.npmjs.org/@types/react-transition-group/-/react-transition-group-4.4.6.tgz",
@ -5028,6 +5041,12 @@
"@types/node": "*" "@types/node": "*"
} }
}, },
"node_modules/@types/signature_pad": {
"version": "2.3.2",
"resolved": "https://registry.npmjs.org/@types/signature_pad/-/signature_pad-2.3.2.tgz",
"integrity": "sha512-dDfWIgRcdzAaeVOpLRmLHIumGwc5inSD4Dj2Duis3yUEoSADZECLJHKkUQphbaANQ7kSC2bkf1JzyBPSmTlrPQ==",
"dev": true
},
"node_modules/@types/sockjs": { "node_modules/@types/sockjs": {
"version": "0.3.33", "version": "0.3.33",
"resolved": "https://registry.npmjs.org/@types/sockjs/-/sockjs-0.3.33.tgz", "resolved": "https://registry.npmjs.org/@types/sockjs/-/sockjs-0.3.33.tgz",
@ -15795,6 +15814,15 @@
"react": "*" "react": "*"
} }
}, },
"node_modules/react-image-marker": {
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/react-image-marker/-/react-image-marker-1.2.0.tgz",
"integrity": "sha512-HFrzKVnX/hgZqHlxwV7XQNiyMRowD1IAnbsf4dZCEuSzGlGHxAv+sCv/AU1VHHVxFxoHubNL/xYNpGQfgtX67A==",
"peerDependencies": {
"react": ">= 16.8.0",
"react-dom": ">= 16.8.0"
}
},
"node_modules/react-is": { "node_modules/react-is": {
"version": "17.0.2", "version": "17.0.2",
"resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz", "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz",
@ -15951,6 +15979,20 @@
} }
} }
}, },
"node_modules/react-signature-canvas": {
"version": "1.0.6",
"resolved": "https://registry.npmjs.org/react-signature-canvas/-/react-signature-canvas-1.0.6.tgz",
"integrity": "sha512-NoMHomYu9HxFeLjUGbIeV9abPdWSROfFxFNDekGdwmmaIx+w5ziOEiU2C34X0Ao4GxFnwqyUy/BpYlA4lCD1CA==",
"dependencies": {
"signature_pad": "^2.3.2",
"trim-canvas": "^0.1.0"
},
"peerDependencies": {
"prop-types": "^15.5.8",
"react": "0.14 - 18",
"react-dom": "0.14 - 18"
}
},
"node_modules/react-smooth": { "node_modules/react-smooth": {
"version": "2.0.3", "version": "2.0.3",
"resolved": "https://registry.npmjs.org/react-smooth/-/react-smooth-2.0.3.tgz", "resolved": "https://registry.npmjs.org/react-smooth/-/react-smooth-2.0.3.tgz",
@ -16834,6 +16876,11 @@
"resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz",
"integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==" "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ=="
}, },
"node_modules/signature_pad": {
"version": "2.3.2",
"resolved": "https://registry.npmjs.org/signature_pad/-/signature_pad-2.3.2.tgz",
"integrity": "sha512-peYXLxOsIY6MES2TrRLDiNg2T++8gGbpP2yaC+6Ohtxr+a2dzoaqWosWDY9sWqTAAk6E/TyQO+LJw9zQwyu5kA=="
},
"node_modules/sisteransi": { "node_modules/sisteransi": {
"version": "1.0.5", "version": "1.0.5",
"resolved": "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz", "resolved": "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz",
@ -17681,6 +17728,11 @@
"node": ">=8" "node": ">=8"
} }
}, },
"node_modules/trim-canvas": {
"version": "0.1.2",
"resolved": "https://registry.npmjs.org/trim-canvas/-/trim-canvas-0.1.2.tgz",
"integrity": "sha512-nd4Ga3iLFV94mdhW9JFMLpQbHUyCQuhFOD71PEAt1NjtMD5wbZctzhX8c3agHNybMR5zXD1XTGoIEWk995E6pQ=="
},
"node_modules/tryer": { "node_modules/tryer": {
"version": "1.0.1", "version": "1.0.1",
"resolved": "https://registry.npmjs.org/tryer/-/tryer-1.0.1.tgz", "resolved": "https://registry.npmjs.org/tryer/-/tryer-1.0.1.tgz",

View File

@ -33,9 +33,11 @@
"react-dom": "^18.2.0", "react-dom": "^18.2.0",
"react-gauge-chart": "^0.4.1", "react-gauge-chart": "^0.4.1",
"react-icons": "^4.9.0", "react-icons": "^4.9.0",
"react-image-marker": "^1.2.0",
"react-leaflet": "^4.2.1", "react-leaflet": "^4.2.1",
"react-router-dom": "^6.14.2", "react-router-dom": "^6.14.2",
"react-scripts": "5.0.1", "react-scripts": "5.0.1",
"react-signature-canvas": "^1.0.6",
"react-table": "^7.8.0", "react-table": "^7.8.0",
"recharts": "^2.7.2", "recharts": "^2.7.2",
"typescript": "^4.9.5", "typescript": "^4.9.5",
@ -72,6 +74,7 @@
"@types/leaflet": "^1.9.3", "@types/leaflet": "^1.9.3",
"@types/react-date-range": "^1.4.4", "@types/react-date-range": "^1.4.4",
"@types/react-gauge-chart": "^0.4.0", "@types/react-gauge-chart": "^0.4.0",
"@types/react-signature-canvas": "^1.0.2",
"autoprefixer": "^10.4.14", "autoprefixer": "^10.4.14",
"postcss": "^8.4.24", "postcss": "^8.4.24",
"tailwindcss": "^3.3.2" "tailwindcss": "^3.3.2"

View File

@ -7,7 +7,7 @@
<meta name="theme-color" content="#000000" /> <meta name="theme-color" content="#000000" />
<meta <meta
name="description" name="description"
content="Web site created using create-react-app" content="In Motion Spine & Joint Center"
/> />
<link rel="apple-touch-icon" href="%PUBLIC_URL%/logo192.png" /> <link rel="apple-touch-icon" href="%PUBLIC_URL%/logo192.png" />
<!-- <!--
@ -24,7 +24,7 @@
work correctly both with client-side routing and a non-root public URL. work correctly both with client-side routing and a non-root public URL.
Learn how to configure a non-root public URL by running `npm run build`. Learn how to configure a non-root public URL by running `npm run build`.
--> -->
<title>React App</title> <title>In Motion Spine & Joint Center</title>
</head> </head>
<body> <body>
<noscript>You need to enable JavaScript to run this app.</noscript> <noscript>You need to enable JavaScript to run this app.</noscript>

View File

@ -1,37 +1,34 @@
.app-screen-constants .MuiInputBase-root{ /* .app-screen-constants .MuiInputBase-root{
margin:auto; margin:auto;
max-width:1500; max-width:1500;
height:800 !important; height:800 !important;
} } */
.collapsable-form-style .MuiInputBase-root { /* .collapsable-form-style .MuiInputBase-root {
width: 300px !important; margin:3%;
margin: 5%;
height: 50px height: 50px
} }
.collapsable-form-style-form7 .MuiInputBase-root { .collapsable-form-style-form7 .MuiInputBase-root {
width: 350px !important;
margin: 3%; margin: 3%;
height: 50px height: 50px
} }
.collapsable-form-style-multiline .MuiInputBase-root { .collapsable-form-style-multiline .MuiInputBase-root {
width: 350px !important;
margin: 5%; margin: 5%;
min-height: 100px min-height: 100px
} } */
.collapsable-form-style-multiline label { /* .collapsable-form-style-multiline label {
padding: 15px; padding: 15px;
} } */
.collapsable-form-style label { /* .collapsable-form-style label {
padding: 15px; padding: 15px;
} } */
.collapsable-form-style-form7 label { /* .collapsable-form-style-form7 label {
padding: 13px; padding: 13px;
} } */
.collapsable-form-style-radioButtons{ .collapsable-form-style-radioButtons{
width: 300px !important; width: 300px !important;
@ -41,7 +38,6 @@
} }
.collapsable-form-style-radioButtons-fullwidth{ .collapsable-form-style-radioButtons-fullwidth{
/* width: 300px !important; */
margin: 5%; margin: 5%;
padding-top: 12px; padding-top: 12px;
padding-left: 16px; padding-left: 16px;
@ -58,3 +54,32 @@
.addNew-form-table-style label { .addNew-form-table-style label {
padding: 0px; padding: 0px;
} }
.MuiFormControl-root {
width: 95% !important;
}
.MuiGrid-root .MuiTextField-root {
margin-top: 3%;
margin-bottom: 3%;
}
/* .MuiFormControl-root{
width: 90% !important;
height: 50px !important;
margin-bottom: 1% !important;
}
.MuiTextField-root {
margin-top: 3% !important;
margin-bottom: 5% !important;
}
.collapsable-form-style-multiline label {
padding: 15px;
}
.collapsable-form-style-radioButtons-fullwidth {
margin: 5%;
padding-top: 12px;
padding-left: 16px;
} */

View File

@ -11,7 +11,8 @@ function App() {
<div className='flex'> <div className='flex'>
<BrowserRouter> <BrowserRouter>
<Routes> <Routes>
<Route path='/' element={<PatientForm />}/> <Route path='/' element={<PatientForm type={"fill"}/>} />
<Route path='/view-details' element={<PatientForm type={"display"}/>}/>
</Routes> </Routes>
</BrowserRouter> </BrowserRouter>
</div> </div>

BIN
src/Assets/delete.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 28 KiB

View File

@ -1,4 +1,17 @@
import { Button, TableContainer, Table, TableHead, TableRow, TableCell, TableBody, TextField, Paper, Grid, FormLabel, FormControl } from '@mui/material'; import {
Button,
TableContainer,
Table,
TableHead,
TableRow,
TableCell,
TableBody,
TextField,
Paper,
Grid,
FormLabel,
FormControl,
} from '@mui/material';
import * as React from 'react'; import * as React from 'react';
interface RowData { interface RowData {
@ -13,31 +26,64 @@ interface DataTableProps {
onAddRow: () => void; onAddRow: () => void;
} }
const DataTable: React.FC= () => { type Props = {
handleFormSection5Data: (
generalHealth: string | undefined,
presentProblemBefore: string | undefined,
ifYespresentProblemBefore: string | undefined,
ifYestreatmentProvided: string | undefined,
ifYesOutcome: string | undefined,
strokeBloodclotting: string | undefined,
ifYesstrokeBloodclotting: string | undefined,
dizzinessFetigue: string | undefined,
ifyesdizzinessFetigue: string | undefined,
antiColligent: string | undefined,
injuriesHospitalization: string | undefined,
supplementsOrDrugs: string | undefined
) => void;
patientDataDiplay: any;
type: string;
};
function DataTable({ handleFormSection5Data, patientDataDiplay, type }: Props) {
const [illnessFromData, setIllnessFromData] = React.useState<any>({ const [illnessFromData, setIllnessFromData] = React.useState<any>({
id:0,date:'',illness:'',treatment:'',results:'' id: 0,
}) date: '',
illness: '',
treatment: '',
results: '',
});
const [illnessData, setIllnessData] = React.useState<any[]>([ const [illnessData, setIllnessData] = React.useState<any[]>([
{id:0,date:'ex-12-01-2020',illness:'knee pain',treatment:'surgery',results:'cured'} {
id: 0,
date: 'ex-12-01-2020',
illness: 'knee pain',
treatment: 'surgery',
results: 'cured',
},
]); ]);
const deleteIllnessData = (idToDelete:number) => { const deleteIllnessData = (idToDelete: number) => {
const updatedIllnessData = illnessData.filter(item => item.id !== idToDelete); const updatedIllnessData = illnessData.filter(
(item) => item.id !== idToDelete
);
setIllnessData(updatedIllnessData); setIllnessData(updatedIllnessData);
}; };
const handleAddRow = () => { const handleAddRow = () => {
if(illnessFromData.date!='' && illnessFromData.illness!='' && illnessFromData.treatment!='' && illnessFromData.results!=''){ if (
illnessFromData.date != '' &&
const newId = Math.max(...illnessData.map(item => item.id)) + 1; illnessFromData.illness != '' &&
illnessFromData.treatment != '' &&
illnessFromData.results != ''
) {
const newId = Math.max(...illnessData.map((item) => item.id)) + 1;
const newIllnessData = [ const newIllnessData = [
...illnessData, ...illnessData,
{ {
...illnessFromData, ...illnessFromData,
id: newId id: newId,
} },
]; ];
setIllnessData(newIllnessData); setIllnessData(newIllnessData);
setIllnessFromData({ setIllnessFromData({
@ -45,89 +91,136 @@ const DataTable: React.FC= () => {
date: '', date: '',
illness: '', illness: '',
treatment: '', treatment: '',
results: '' results: '',
}); });
} }
}; };
console.log("sdfsdfdsf",illnessData, illnessFromData)
return ( return (
<> <>
<FormLabel>If yes, Please enter the details below:</FormLabel><br></br> <FormLabel>If yes, Please enter the details below:</FormLabel>
<br></br>
{type !== 'display' ? (
<FormControl> <FormControl>
<Grid container spacing={1.5} sx={{width:750, marginTop:1}}> <Grid container spacing={1.5}>
<Grid item xs={2} className='addNew-form-table-style'> <Grid
item
xs={12}
xl={3}
lg={3}
md={6}
sm={12}
className='addNew-form-table-style'
>
<TextField <TextField
required required
variant="outlined" variant='outlined'
label="Date" label='Date'
value={illnessFromData.date} value={illnessFromData.date}
onChange={(event) => { onChange={(event) => {
setIllnessFromData((prevValues:any) => ({ setIllnessFromData((prevValues: any) => ({
...prevValues, ...prevValues,
date: event.target.value, date: event.target.value,
})); }));
}} }}
/> />
</Grid> </Grid>
<Grid item xs={3.7} className='addNew-form-table-style'> <Grid
item
xs={12}
xl={3}
lg={3}
md={6}
sm={12}
className='addNew-form-table-style'
>
<TextField <TextField
required required
variant="outlined" variant='outlined'
label="Injury/Illness/Surgeries" label='Injury/Illness/Surgeries'
value={illnessFromData.illness} value={illnessFromData.illness}
onChange={(event) => { onChange={(event) => {
setIllnessFromData((prevValues:any) => ({ setIllnessFromData((prevValues: any) => ({
...prevValues, ...prevValues,
illness: event.target.value, illness: event.target.value,
})); }));
}} }}
/> />
</Grid> </Grid>
<Grid item xs={3.5} className='addNew-form-table-style'> <Grid
item
xs={12}
xl={3}
lg={3}
md={6}
sm={12}
className='addNew-form-table-style'
>
<TextField <TextField
required required
variant="outlined" variant='outlined'
label="Treatment" label='Treatment'
value={illnessFromData.treatment} value={illnessFromData.treatment}
onChange={(event) => { onChange={(event) => {
setIllnessFromData((prevValues:any) => ({ setIllnessFromData((prevValues: any) => ({
...prevValues, ...prevValues,
treatment: event.target.value, treatment: event.target.value,
})); }));
}} }}
/> />
</Grid> </Grid>
<Grid item xs={2} className='addNew-form-table-style'> <Grid
item
xs={12}
xl={3}
lg={3}
md={6}
sm={12}
className='addNew-form-table-style'
>
<TextField <TextField
required required
variant="outlined" variant='outlined'
label="Results" label='Results'
value={illnessFromData.results} value={illnessFromData.results}
onChange={(event) => { onChange={(event) => {
setIllnessFromData((prevValues:any) => ({ setIllnessFromData((prevValues: any) => ({
...prevValues, ...prevValues,
results: event.target.value, results: event.target.value,
})); }));
}} }}
/> />
</Grid> </Grid>
<Grid item xs={0.8} className='addNew-form-table-style'> <Grid
<Button sx={{height:'40px', bgcolor:'skyblue'}} onClick={handleAddRow}>Add</Button> item
xs={12}
xl={3}
lg={3}
md={6}
sm={12}
className='addNew-form-table-style'
>
<Button
sx={{ height: '40px', bgcolor: 'skyblue' }}
onClick={handleAddRow}
>
Add
</Button>
</Grid> </Grid>
</Grid> </Grid>
</FormControl> </FormControl>
) : (
''
)}
<TableContainer className='illness-table-style'>
<TableContainer sx={{width:800}} className='illness-table-style'> <Table aria-label='simple table'>
<Table aria-label="simple table">
<TableHead> <TableHead>
<TableRow> <TableRow>
<TableCell align='left'>Date</TableCell> <TableCell align='left'>Date</TableCell>
<TableCell align='center'>Injury/Fracture/Illness/Surgeries</TableCell> <TableCell align='center'>
Injury/Fracture/Illness/Surgeries
</TableCell>
<TableCell align='left'>Treatment</TableCell> <TableCell align='left'>Treatment</TableCell>
<TableCell align='left'>Results</TableCell> <TableCell align='left'>Results</TableCell>
<TableCell align='left'></TableCell> <TableCell align='left'></TableCell>
@ -136,22 +229,23 @@ const DataTable: React.FC= () => {
<TableBody> <TableBody>
{illnessData.map((row, index) => ( {illnessData.map((row, index) => (
<TableRow key={index}> <TableRow key={index}>
<TableCell align='left'>{row.date}</TableCell>
<TableCell align='center'>{row.illness}</TableCell>
<TableCell align='left'>{row.treatment}</TableCell>
<TableCell align='left'>{row.results}</TableCell>
<TableCell align='left'> <TableCell align='left'>
{row.date} {type !== 'display' ? (
</TableCell> <Button
<TableCell align='center'> sx={{ height: '30x', width: 20, bgcolor: 'skyblue' }}
{row.illness} onClick={(e) => {
</TableCell> deleteIllnessData(row.id);
<TableCell align='left'> }}
{row.treatment} >
</TableCell>
<TableCell align='left'>
{row.results}
</TableCell>
<TableCell align='left'>
<Button sx={{height:'30x',width:20, bgcolor:'skyblue'}} onClick={(e)=>{deleteIllnessData(row.id)}}>
Delete Delete
</Button> </Button>
) : (
''
)}
</TableCell> </TableCell>
</TableRow> </TableRow>
))} ))}
@ -160,6 +254,6 @@ const DataTable: React.FC= () => {
</TableContainer> </TableContainer>
</> </>
); );
}; }
export default DataTable; export default DataTable;

View File

@ -0,0 +1,35 @@
import { Alert, AlertColor, Snackbar, Stack } from '@mui/material';
type Props = {
open: boolean;
message: string;
severity: AlertColor;
duration: number;
handleAlertClose: () => void;
};
function AlertDialog({
open,
message,
severity,
duration,
handleAlertClose,
}: Props) {
return (
<Stack spacing={2} sx={{ width: '100%' }}>
<Snackbar
anchorOrigin={{ vertical: 'top', horizontal: 'right' }}
open={open}
autoHideDuration={duration}
onClose={handleAlertClose}
sx={{ zIndex: 9999 }}
>
<Alert severity={severity} sx={{ width: '100%' }}>
{message}
</Alert>
</Snackbar>
</Stack>
);
}
export default AlertDialog;

View File

@ -0,0 +1,50 @@
import React, { useEffect, useRef } from 'react';
import SignatureCanvas from 'react-signature-canvas';
import Button from '@mui/material/Button';
import { styled } from '@mui/material/styles';
import { FormLabel, Grid } from '@mui/material';
type Props={
signature:any;
setSignature: (value: any) => void;
}
const SignatureComponent = ({signature,setSignature}:Props) => {
const sigCanvas = useRef<any>();
const clear = () => sigCanvas.current.clear();
// setSignature(sigCanvas.current.toDataURL());
const save = () => {
setSignature(sigCanvas.current.toDataURL());
};
const StyledCanvas = styled(SignatureCanvas)({
border: '5px solid #888888'
});
return (
<>
<Grid item sx={{border:'1px solid #888888',borderRadius:2, width:'250px', height:'110px',marginLeft:'10px'}}>
<StyledCanvas
ref={sigCanvas}
canvasProps={{
className: 'signatureCanvas',
height:'110px',
width:'250px'
}}
/>
</Grid>
<Grid container flexDirection={'row'} sx={{ marginTop:'10px'}}>
<Grid item sx={{marginLeft:'10px'}}>
<Button variant="contained" onClick={clear}>Clear</Button>
</Grid>
<Grid item sx={{marginLeft:'20px'}}>
<Button variant="contained" onClick={save}>Save</Button>
</Grid>
</Grid>
</>
);
};
export default SignatureComponent;

View File

@ -0,0 +1,26 @@
import Slider from '@mui/material/Slider';
import IconButton from '@mui/material/IconButton';
import deleteIcon from '../../Assets/delete.png';
import Rating from './Rating';
type Props = {
entry: any;
index: number;
onUpdate: (data: any) => void;
onDelete: (index: number) => void;
};
const Entry = ({ entry, onUpdate, onDelete, index }: Props) => {
return (
<div className='entry'>
<span className='image-marker__marker--default'>{index + 1}</span>
<Rating index={entry.index} defaultValue={entry.severity} onUpdate={onUpdate}/>
<IconButton aria-label='delete' onClick={() => onDelete(index)}>
<img src={deleteIcon} height='25' width='25' />
</IconButton>
</div>
);
};
export default Entry;

View File

@ -0,0 +1,41 @@
import Entry from './Entry';
import { Button } from '@mui/material';
type Props = {
entries: Array<any>;
onUpdate: (data: any) => void;
onDelete: (index: number) => void;
onSave: (data: any) => void;
};
const EntryForm = ({ entries, onUpdate, onDelete, onSave }: Props) => {
return (
<div className='entryForm'>
<span className='header'>
*** Mark Your Areas of Pain on the Picture ***
</span>
{entries && entries.length > 0 && (
<span className='sub-header'>How much pain are you in right now?</span>
)}
{entries?.map((entry: any, index: number) => (
<Entry
entry={entry}
index={index}
key={index}
onUpdate={onUpdate}
onDelete={onDelete}
/>
))}
{/* {
entries && entries.length > 0 &&
<div className='buttonDiv'>
<Button variant='contained' onClick={() => onSave({})}>
Save
</Button>
</div>
} */}
</div>
);
};
export default EntryForm;

View File

@ -0,0 +1,185 @@
.image-marker-div {
width: 100%;
display: flex;
justify-content: space-between;
}
.image-marker-div .entry-div {
width: 55%;
}
.image-marker-div .entry-div .entryForm {
display: flex;
flex-direction: column;
gap: 10px;
}
.image-marker-div .entry-div .entryForm .header {
font-weight: 500;
font-size: 18px;
}
.image-marker-div .entry-div .entryForm .sub-header {
font-weight: 500;
font-size: 14px;
}
.image-marker-div .entry-div .entryForm .entry {
margin-top: 1%;
display: flex;
align-items: center;
gap: 20px;
}
.image-marker-div .marker-div {
/* margin-right: 5%; */
}
.image-marker-div .rating-div {
width: 80%;
}
.image-marker-div .entry-div .sub-header {
font-weight: 500;
font-size: 16px;
}
.ratingResult {
display: flex;
align-items: center;
gap: 5px;
margin-top: 2%;
margin-bottom: 3%;
}
.image-marker-div .marker-div {
width: 45%;
}
@media only screen and (max-width: 1200px) {
.image-marker-div {
flex-direction: column;
}
.image-marker-div .entry-div {
width: 100%;
}
.image-marker-div .rating-div {
width: 100%;
}
.image-marker-div .entry-div .entryForm .entry {
gap: 0;
margin-bottom: 2%;
}
.image-marker-div .marker-div {
/* margin-right: 5%; */
margin-top: 3%;
width: 100%;
}
}
@media only screen and (min-width: 1400px) {
.image-marker-div .rating-div {
width: 70%;
}
.ratingResult .rating-div {
width: 80%;
}
}
.btn-scale {
min-width: 40px !important;
width: 3% !important;
text-align: center !important;
font-weight: bold !important;
color: black !important;
font-family: 'Lato', sans-serif;
border: none !important;
margin-left: 1% !important;
}
.selected {
border: 3px solid black !important;
}
.btn-scale-asc-1 {
background-color: #33FF00 !important;
}
.btn-scale-asc-1:hover {
background-color: #2CDE00 !important;
}
.btn-scale-asc-2 {
background-color: #66FF00 !important;
}
.btn-scale-asc-2:hover {
background-color: #59DE00 !important;
}
.btn-scale-asc-3 {
background-color: #99FF00 !important;
}
.btn-scale-asc-3:hover {
background-color: #85DE00 !important;
}
.btn-scale-asc-4 {
background-color: #CCFF00 !important;
}
.btn-scale-asc-4:hover {
background-color: #B1DE00 !important;
}
.btn-scale-asc-5 {
background-color: #FFFF00 !important;
}
.btn-scale-asc-5:hover {
background-color: #DEDE00 !important;
}
.btn-scale-asc-6 {
background-color: #FFCC00 !important;
}
.btn-scale-asc-6:hover {
background-color: #DEB100 !important;
}
.btn-scale-asc-7 {
background-color: #FF9900 !important;
}
.btn-scale-asc-7:hover {
background-color: #DE8500 !important;
}
.btn-scale-asc-8 {
background-color: #FF6600 !important;
}
.btn-scale-asc-8 {
background-color: #DE5900 !important;
}
.btn-scale-asc-9 {
background-color: #FF3300 !important;
}
.btn-scale-asc-9:hover {
background-color: #DE2C00 !important;
}
.btn-scale-asc-10 {
background-color: #FF0000 !important;
}
.btn-scale-asc-10:hover {
background-color: #DE0000 !important;
}

View File

@ -0,0 +1,79 @@
import React, { useEffect, useState } from 'react';
import ImageMarker, { Marker } from 'react-image-marker';
import humanImage from '../../Assets/human_body_3d.jpg';
import EntryForm from './EntryForm';
import './PatientImageMarker.css';
type Props = {};
const PatientImageMarker = (props: Props) => {
const [markers, setMarkers] = useState<Array<Marker>>([]);
const [entries, setEntries] = useState<Array<any>>([]);
const [action, setAction] = useState<any>({});
const updateEntry = (updated: any) => {
setEntries((prevEntries) =>
prevEntries.map((entry) =>
entry.index === updated.index
? { ...entry, severity: updated.severity }
: entry
)
);
};
const addEntries = (marker: Marker) => {
setAction({ type: 'add', index: 0 });
setMarkers([...markers, marker]);
};
const deleteEntry = (index: number) => {
setAction({ type: 'delete', index: index });
setMarkers(markers.filter((marker: Marker, ind: number) => ind != index));
};
const onSave = () => {
localStorage.setItem(
'entry',
JSON.stringify({ markers: markers, entries: entries })
);
};
useEffect(() => {
if (action.type === 'add') {
const ind =
entries.length != 0 ? entries[entries.length - 1].index + 1 : 1;
setEntries([...entries, { index: ind, severity: 5 }]);
} else
setEntries(
entries.filter((entry: any, ind: number) => ind != action.index)
);
}, [action]);
useEffect(() => {
onSave();
}, [entries]);
return (
<div className='image-marker-div'>
<div className='entry-div'>
<EntryForm
entries={entries}
onSave={onSave}
onDelete={deleteEntry}
onUpdate={updateEntry}
/>
</div>
<div className='marker-div'>
<ImageMarker
src={humanImage}
markers={markers}
onAddMarker={(marker: Marker) => addEntries(marker)}
/>
</div>
</div>
);
};
export default PatientImageMarker;

View File

@ -0,0 +1,32 @@
import { Button, Tooltip } from '@mui/material';
import React, { useState } from 'react';
type Props = {
index: number;
defaultValue: number;
onUpdate: (data: any) => void;
disabled?: boolean;
};
const Rating = ({index, defaultValue, onUpdate, disabled} : Props) => {
return (
<div key={index} className='rating-div'>
{[...Array(10)].map((star, ind) => {
return (
<Tooltip title={(ind+1) < 3 ? 'No Pain' : (ind+1) > 7 ? 'Unbearable' : ''} placement="top-end">
<Button
className={`btn btn-scale btn-scale-asc-${ind+1} ${(ind+1) === defaultValue ? 'selected' : ''}`}
key={ind + 1}
onClick={() => onUpdate({ index: index, severity: ind + 1 })}
disabled={disabled}
>
{ind + 1}
</Button>
</Tooltip>
);
})}
</div>
);
};
export default Rating;

View File

@ -0,0 +1,35 @@
import React, { useEffect, useState } from 'react';
import ImageMarker, { Marker } from 'react-image-marker';
import humanImage from '../../Assets/human_body_3d.jpg';
import './PatientImageMarker.css';
import Rating from './Rating';
type Props = {};
const ViewPatientImageMarker = (props: Props) => {
const saved = JSON.parse(localStorage.getItem('entry') || '{}');
return (
<div className='image-marker-div'>
<div className='entry-div'>
<span className='sub-header'>How much pain?</span>
{saved.entries?.map((entry: any, index: number) => (
<div className='ratingResult' key={index}>
<span className='image-marker__marker--default'>{index + 1}</span>
<Rating
index={entry.index}
defaultValue={entry.severity}
onUpdate={() => {}}
disabled
/>
</div>
))}
</div>
<div className='marker-div'>
<ImageMarker src={humanImage} markers={saved.markers ?? []} />
</div>
</div>
);
};
export default ViewPatientImageMarker;

View File

@ -1,240 +1,481 @@
import { Button, Checkbox, FormControl, FormControlLabel, FormGroup, FormLabel, Grid, Paper, Radio, RadioGroup, TextField } from '@mui/material'; import {
import { useFormik } from "formik"; Button,
import * as yup from "yup"; Checkbox,
FormControl,
FormControlLabel,
FormGroup,
FormLabel,
Grid,
Paper,
Radio,
RadioGroup,
TextField,
} from '@mui/material';
import { useFormik } from 'formik';
import * as yup from 'yup';
import { LocalizationProvider, DatePicker } from '@mui/x-date-pickers'; import { LocalizationProvider, DatePicker } from '@mui/x-date-pickers';
import React, { useEffect } from 'react';
interface FormValues { interface Patient {
maritalStatus: string; maritalStatus: string | undefined;
numberOfChildren: string; numberOfChildren: string | undefined;
ages: string; occupation: string | undefined;
occupation: string; hoursPerWeek: number | string | undefined;
hoursPerWeek: number | string; employer: string | undefined;
employer: string; businessPhone: string | undefined;
businessPhone: string; spouseName: string | undefined;
spouseName: string; spouseEmployer: string | undefined;
spouseEmployer: string; spouseBusinessPhone: string | undefined;
spouseBusinessPhone: string; emergencyContact: string | undefined;
emergencyContact: string; relationship: string | undefined;
relationship: string; spousePhone: string | undefined;
spousePhone: string;
} }
const validationSchema = yup.object({ type Props = {
maritalStatus:yup.string().required("Marital Status is required"), handleFormSection2Data: (
numberOfChildren:yup.string().required("Full name is required"), maritalStatus: string | undefined,
ages:yup.string().required("Full name is required"), numberOfChildren: string | undefined,
occupation:yup.string().required("Occupation is required"), occupation: string | undefined,
// hoursPerWeek: yup.number().required('Required'), hoursPerWeek: number | string | undefined,
// employer:yup.string().required("Full name is required"), employer: string | undefined,
// businessPhone:yup.string().required("Full name is required"), businessPhone: string | undefined,
spouseName:yup.string().required("Spouse name is required"), spouseName: string | undefined,
// spouseEmployer:yup.string().required("Full name is required"), spouseEmployer: string | undefined,
// spouseBusinessPhone:yup.string().required("Full name is required"), spouseBusinessPhone: string | undefined,
emergencyContact:yup.string().matches(/^\d{10}$/, "Cell phone must be 10 digits"), emergencyContact: string | undefined,
relationship:yup.string().required("Relationship is required"), relationship: string | undefined,
spousePhone:yup.string().matches(/^\d{10}$/, "Cell phone must be 10 digits"), spousePhone: string | undefined
}); ) => void;
patientDataDiplay: any;
type: string;
};
export default function FamilyFormSection(){ export default function FamilyFormSection({
const formik = useFormik<FormValues>({ handleFormSection2Data,
initialValues:{ patientDataDiplay,
maritalStatus:'', type,
numberOfChildren:'', }: Props) {
ages:'', const [patient, setPatient] = React.useState<Patient>({
occupation:'', maritalStatus: '',
hoursPerWeek:'', numberOfChildren: '',
employer:'', occupation: '',
businessPhone:'', hoursPerWeek: '',
spouseName:'', employer: '',
spouseEmployer:'', businessPhone: '',
spouseBusinessPhone:'', spouseName: '',
emergencyContact:'', spouseEmployer: '',
relationship:'', spouseBusinessPhone: '',
spousePhone:'' emergencyContact: '',
}, relationship: '',
validationSchema, spousePhone: '',
onSubmit:(values)=>{ });
console.log(values);
} useEffect(() => {
}) handleFormSection2Data(
return( patient.maritalStatus,
patient.numberOfChildren,
patient.occupation,
patient.hoursPerWeek,
patient.employer,
patient.businessPhone,
patient.spouseName,
patient.spouseEmployer,
patient.spouseBusinessPhone,
patient.emergencyContact,
patient.relationship,
patient.spousePhone
);
}, [patient]);
return (
<> <>
<form onSubmit={formik.handleSubmit}> <Grid container direction='row'>
<Grid container direction="row">
<Grid item xs={8} className='collapsable-form-style-radioButtons'> <Grid item xs={8} className='collapsable-form-style-radioButtons'>
<FormControl> <FormControl>
<FormLabel>Marital Status</FormLabel> <FormLabel>Marital Status</FormLabel>
<RadioGroup <RadioGroup
aria-labelledby="demo-radio-buttons-group-label" aria-labelledby='demo-radio-buttons-group-label'
defaultValue="married" name='maritalStatus'
name="maritalStatus" defaultValue={
onChange={formik.handleChange} type == 'display'
value={formik.values.maritalStatus} ? patientDataDiplay && patientDataDiplay.maritalStatus
sx={{display:'flex', flexDirection:'row'}} : patient.maritalStatus
// error={formik.touched.numberOfChildren && Boolean(formik.errors.maritalStatus)} }
// helperText={formik.touched.numberOfChildren && formik.errors.maritalStatus} sx={{ display: 'flex', flexDirection: 'row' }}
onChange={(e) => {
setPatient((prevValues: any) => ({
...prevValues,
maritalStatus: e.target.value,
}));
}}
> >
<FormControlLabel value="married" control={<Radio />} label="Married" /> <FormControlLabel
<FormControlLabel value="single" control={<Radio />} label="Single" /> value='married'
<FormControlLabel value="widowed" control={<Radio />} label="Widowed" /> control={<Radio />}
<FormControlLabel value="seperated" control={<Radio />} label="Seperated" /> label='Married'
<FormControlLabel value="divorced" control={<Radio />} label="Divorced" /> disabled={type == 'display'}
/>
<FormControlLabel
value='single'
control={<Radio />}
label='Single'
disabled={type == 'display'}
/>
<FormControlLabel
value='widowed'
control={<Radio />}
label='Widowed'
disabled={type == 'display'}
/>
<FormControlLabel
value='seperated'
control={<Radio />}
label='Seperated'
disabled={type == 'display'}
/>
<FormControlLabel
value='divorced'
control={<Radio />}
label='Divorced'
disabled={type == 'display'}
/>
</RadioGroup> </RadioGroup>
</FormControl> </FormControl>
</Grid> </Grid>
<Grid item xs={4} className='collapsable-form-style '></Grid> <Grid item xs={4} className='collapsable-form-style '></Grid>
<Grid item xs={4} className='collapsable-form-style '> <Grid
item
xs={12}
xl={3}
lg={4}
md={6}
sm={12}
className='collapsable-form-style '
>
<TextField <TextField
variant='outlined'
variant="outlined" type='number'
type="number" label='Number of Children/Ages'
label="Number of Children/Ages"
className='collapsable-form-style' className='collapsable-form-style'
name='numberOfChildren' name='numberOfChildren'
onChange={formik.handleChange} onChange={(e) => {
value={formik.values.numberOfChildren} setPatient((prevValues: any) => ({
onBlur={formik.handleBlur} ...prevValues,
// error={formik.touched.numberOfChildren && Boolean(formik.errors.numberOfChildren)} numberOfChildren: e.target.value,
// helperText={formik.touched.numberOfChildren && formik.errors.numberOfChildren} }));
}}
value={
type == 'display'
? patientDataDiplay && patientDataDiplay.numberOfChildren
: patient.numberOfChildren
}
disabled={type == 'display'}
/> />
</Grid> </Grid>
<Grid item xs={4} className='collapsable-form-style '> <Grid
item
xs={12}
xl={3}
lg={4}
md={6}
sm={12}
className='collapsable-form-style '
>
<TextField <TextField
// required // required
variant="outlined" variant='outlined'
label="Occupation" label='Occupation'
className='collapsable-form-style' className='collapsable-form-style'
name='occupation' name='occupation'
onChange={formik.handleChange} onChange={(e) => {
value={formik.values.occupation} setPatient((prevValues: any) => ({
onBlur={formik.handleBlur} ...prevValues,
// error={formik.touched.occupation && Boolean(formik.errors.occupation)} occupation: e.target.value,
// helperText={formik.touched.occupation && formik.errors.occupation} }));
}}
value={
type == 'display'
? patientDataDiplay && patientDataDiplay.occupation
: patient.occupation
}
disabled={type == 'display'}
/> />
</Grid> </Grid>
<Grid item xs={4} className='collapsable-form-style '> <Grid
item
xs={12}
xl={3}
lg={4}
md={6}
sm={12}
className='collapsable-form-style '
>
<TextField <TextField
variant="outlined" variant='outlined'
label="Hours/Week" label='Hours/Week'
type="number" type='number'
className='collapsable-form-style' className='collapsable-form-style'
name='hoursPerWeek' name='hoursPerWeek'
onChange={formik.handleChange} onChange={(e) => {
value={formik.values.hoursPerWeek} setPatient((prevValues: any) => ({
onBlur={formik.handleBlur} ...prevValues,
hoursPerWeek: e.target.value,
}));
}}
value={
type == 'display'
? patientDataDiplay && patientDataDiplay.hoursPerWeek
: patient.hoursPerWeek
}
disabled={type == 'display'}
/> />
</Grid> </Grid>
<Grid item xs={4} className='collapsable-form-style '> <Grid
xs={12}
xl={3}
lg={4}
md={6}
sm={12}
className='collapsable-form-style '
>
<TextField <TextField
variant="outlined" variant='outlined'
label="Employer" label='Employer'
className='collapsable-form-style' className='collapsable-form-style'
name='employer' name='employer'
onChange={formik.handleChange} onChange={(e) => {
value={formik.values.employer} setPatient((prevValues: any) => ({
onBlur={formik.handleBlur} ...prevValues,
employer: e.target.value,
}));
}}
value={
type == 'display' ? patientDataDiplay && patientDataDiplay.employer : patient.employer
}
disabled={type == 'display'}
/> />
</Grid> </Grid>
<Grid item xs={4} className='collapsable-form-style '> <Grid
item
xs={12}
xl={3}
lg={4}
md={6}
sm={12}
className='collapsable-form-style '
>
<TextField <TextField
variant="outlined" variant='outlined'
label="Business Phone" label='Business Phone'
type="number" type='number'
className='collapsable-form-style' className='collapsable-form-style'
name='businessPhone' name='businessPhone'
onChange={formik.handleChange} onChange={(e) => {
value={formik.values.businessPhone} setPatient((prevValues: any) => ({
onBlur={formik.handleBlur} ...prevValues,
businessPhone: e.target.value,
}));
}}
value={
type == 'display'
? patientDataDiplay && patientDataDiplay.businessPhone
: patient.businessPhone
}
disabled={type == 'display'}
/> />
</Grid> </Grid>
<Grid item xs={4} className='collapsable-form-style '></Grid> <Grid
item
xs={12}
xl={3}
lg={4}
md={6}
sm={12}
className='collapsable-form-style '
></Grid>
<Grid item xs={12} className='collapsable-form-style '> <Grid item xs={12} className='collapsable-form-style '>
<FormLabel sx={{fontWeight:600}}>Spouse's Information:</FormLabel> <FormLabel sx={{ fontWeight: 600 }}>Spouse's Information:</FormLabel>
</Grid> </Grid>
<Grid item xs={4} className='collapsable-form-style '> <Grid
item
xs={12}
xl={3}
lg={4}
md={6}
sm={12}
className='collapsable-form-style '
>
<TextField <TextField
variant="outlined" variant='outlined'
label="Spouse's Name" label="Spouse's Name"
className='collapsable-form-style' className='collapsable-form-style'
name='spouseName' name='spouseName'
onChange={formik.handleChange} onChange={(e) => {
value={formik.values.spouseName} setPatient((prevValues: any) => ({
onBlur={formik.handleBlur} ...prevValues,
spouseName: e.target.value,
}));
}}
value={
type == 'display'
? patientDataDiplay && patientDataDiplay.spouseName
: patient.spouseName
}
disabled={type == 'display'}
/> />
</Grid> </Grid>
<Grid item xs={4} className='collapsable-form-style '> <Grid
item
xs={12}
xl={3}
lg={4}
md={6}
sm={12}
className='collapsable-form-style '
>
<TextField <TextField
variant="outlined" variant='outlined'
label="Spouse's Employer" label="Spouse's Employer"
className='collapsable-form-style' className='collapsable-form-style'
name='spouseEmployer' name='spouseEmployer'
onChange={formik.handleChange} onChange={(e) => {
value={formik.values.spouseEmployer} setPatient((prevValues: any) => ({
onBlur={formik.handleBlur} ...prevValues,
spouseEmployer: e.target.value,
}));
}}
value={
type == 'display'
? patientDataDiplay && patientDataDiplay.spouseEmployer
: patient.spouseEmployer
}
disabled={type == 'display'}
/> />
</Grid> </Grid>
<Grid item xs={4} className='collapsable-form-style '> <Grid
item
xs={12}
xl={3}
lg={4}
md={6}
sm={12}
className='collapsable-form-style '
>
<TextField <TextField
variant="outlined" variant='outlined'
label="Business Phone" label='Business Phone'
type="number" type='number'
className='collapsable-form-style' className='collapsable-form-style'
name='spouseBusinessPhone' name='spouseBusinessPhone'
onChange={formik.handleChange} onChange={(e) => {
value={formik.values.spouseBusinessPhone} setPatient((prevValues: any) => ({
onBlur={formik.handleBlur} ...prevValues,
spouseBusinessPhone: e.target.value,
}));
}}
value={
type == 'display'
? patientDataDiplay && patientDataDiplay.spouseBusinessPhone
: patient.spouseBusinessPhone
}
disabled={type == 'display'}
/> />
</Grid> </Grid>
<Grid item xs={12} className='collapsable-form-style '> <Grid item xs={12} className='collapsable-form-style '>
<FormLabel sx={{fontWeight:600}}>Emergency:</FormLabel> <FormLabel sx={{ fontWeight: 600 }}>Emergency:</FormLabel>
</Grid> </Grid>
<Grid
<Grid item xs={4} className='collapsable-form-style '> item
xs={12}
xl={3}
lg={4}
md={6}
sm={12}
className='collapsable-form-style '
>
<TextField <TextField
variant="outlined" variant='outlined'
label="Emergency Contact" label='Emergency Contact'
type="number"
className='collapsable-form-style' className='collapsable-form-style'
name='emergencyContact' name='emergencyContact'
onChange={formik.handleChange} onChange={(e) => {
value={formik.values.emergencyContact} setPatient((prevValues: any) => ({
onBlur={formik.handleBlur} ...prevValues,
emergencyContact: e.target.value,
}));
}}
value={
type == 'display'
? patientDataDiplay && patientDataDiplay.emergencyContact
: patient.emergencyContact
}
disabled={type == 'display'}
/> />
</Grid> </Grid>
<Grid item xs={4} className='collapsable-form-style '> <Grid
item
xs={12}
xl={3}
lg={4}
md={6}
sm={12}
className='collapsable-form-style '
>
<TextField <TextField
variant="outlined" variant='outlined'
label="Relationship" label='Relationship'
className='collapsable-form-style' className='collapsable-form-style'
name='relationship' name='relationship'
onChange={formik.handleChange} onChange={(e) => {
value={formik.values.relationship} setPatient((prevValues: any) => ({
onBlur={formik.handleBlur} ...prevValues,
relationship: e.target.value,
}));
}}
value={
type == 'display'
? patientDataDiplay && patientDataDiplay.relationship
: patient.relationship
}
disabled={type == 'display'}
/> />
</Grid> </Grid>
<Grid item xs={4} className='collapsable-form-style '> <Grid
item
xs={12}
xl={3}
lg={4}
md={6}
sm={12}
className='collapsable-form-style '
>
<TextField <TextField
variant="outlined" variant='outlined'
type="number" type='number'
label="Phone" label='Phone'
className='collapsable-form-style' className='collapsable-form-style'
name='spousePhone' name='spousePhone'
onChange={formik.handleChange} onChange={(e) => {
value={formik.values.spousePhone} setPatient((prevValues: any) => ({
onBlur={formik.handleBlur} ...prevValues,
spousePhone: e.target.value,
}));
}}
value={
type == 'display'
? patientDataDiplay && patientDataDiplay.spousePhone
: patient.spousePhone
}
disabled={type == 'display'}
/> />
</Grid> </Grid>
</Grid> </Grid>
</form>
</> </>
) );
}; }

View File

@ -2,147 +2,250 @@ import * as React from 'react';
import { Checkbox, FormControlLabel, TextField, FormGroup, Grid, FormControl, FormLabel, Radio, RadioGroup } from '@mui/material'; import { Checkbox, FormControlLabel, TextField, FormGroup, Grid, FormControl, FormLabel, Radio, RadioGroup } from '@mui/material';
import { useFormik } from 'formik'; import { useFormik } from 'formik';
import * as Yup from 'yup'; import * as Yup from 'yup';
import { useEffect } from 'react';
interface FormValues { interface Patient {
physicianname: string; physicianname: string |undefined;
physiciancity: string; physiciancity: string |undefined;
physicianstate: string; physicianstate: string |undefined;
physicianphone: string; physicianphone: string |undefined;
chiropractorName: string; chiropractorName: string |undefined;
chiropractorState: string; chiropractorState: string |undefined;
xray: boolean; xray: string|undefined;
ctScan: boolean; haveChiropractor: string|undefined;
cdImages: boolean; reference: string|undefined;
visitDetails: string; visitDetails: string |undefined;
cellPhoneProvider: string; cellPhoneProvider: string |undefined;
} }
const validationSchema = Yup.object({ type Props = {
familyphysician: Yup.string().required('Required'), handleFormSection3Data:(
city: Yup.string().required('Required'), physicianname?: string |undefined,
state: Yup.string().required('Required'), physiciancity?: string |undefined,
phone: Yup.string().required('Required'), physicianstate?: string |undefined,
chiropractorName: Yup.string().required('Required'), physicianphone?: string |undefined,
xray: Yup.boolean().required('Required'), chiropractorName?: string |undefined,
ctScan: Yup.boolean().required('Required'), chiropractorState?: string |undefined,
cdImages: Yup.boolean().required('Required'), xray?: string|undefined,
visitDetails: Yup.string().required('Required'), haveChiropractor?: string|undefined,
cellPhoneProvider: Yup.string().required('Required'), reference?: string|undefined,
}); visitDetails?: string |undefined,
cellPhoneProvider?: string |undefined,
)=> void
patientDataDiplay:any;
type:string;
}
export default function MedicalHistoryForm(){ export default function MedicalHistoryForm({handleFormSection3Data,patientDataDiplay,type}:Props){
const formik = useFormik<FormValues>({
initialValues:{ const [patient, setPatient] = React.useState<Patient>({
physicianname: '', physicianname: '',
physiciancity: '', physiciancity: '',
physicianstate: '', physicianstate: '',
physicianphone: '', physicianphone: '',
chiropractorName: '', chiropractorName: '',
chiropractorState: '', chiropractorState: '',
xray: false, xray: '',
ctScan: false, haveChiropractor: '',
cdImages: false, reference: '',
visitDetails: '', visitDetails: '',
cellPhoneProvider: '', cellPhoneProvider: '',
}, });
validationSchema,
onSubmit:(values)=>{ useEffect(()=>{
console.log(values); handleFormSection3Data(
} patient.physicianname,
}) patient.physiciancity,
patient.physicianstate,
patient.physicianphone,
patient.chiropractorName,
patient.chiropractorState,
patient.xray,
patient.haveChiropractor,
patient.reference,
patient.visitDetails,
patient.cellPhoneProvider,
)
},[patient])
return( return(
<> <>
<form onSubmit={formik.handleSubmit}>
<Grid item xs={12} className='collapsable-form-style '> <Grid item xs={12} className='collapsable-form-style '>
<FormLabel sx={{fontWeight:600}}>Physician Hisory Information:</FormLabel> <FormLabel sx={{fontWeight:600}}>Physician Hisory Information:</FormLabel>
</Grid> </Grid>
<Grid container direction="row"> <Grid container direction="row">
<Grid item xs={4} className='collapsable-form-style'> <Grid item
xs={12}
xl={3}
lg={4}
md={6}
sm={12}
className='collapsable-form-style'>
<TextField <TextField
variant="outlined" variant="outlined"
label="Family physician" label="Family physician"
name='physicianname' name='physicianname'
onChange={formik.handleChange} onChange={(e)=>{
value={formik.values.physicianname} setPatient((prevValues) => ({
onBlur={formik.handleBlur} ...prevValues,
physicianname: e.target.value,
}));
}}
value={type=='display'? patientDataDiplay && patientDataDiplay.physicianname:patient.physicianname}
disabled={type=='display'}
/> />
</Grid> </Grid>
<Grid item xs={4} className='collapsable-form-style'> <Grid item
xs={12}
xl={3}
lg={4}
md={6}
sm={12}
className='collapsable-form-style'>
<TextField <TextField
variant="outlined" variant="outlined"
label="City" label="City"
name='physiciancity' name='physiciancity'
onChange={formik.handleChange} onChange={(e)=>{
value={formik.values.physiciancity} setPatient((prevValues) => ({
onBlur={formik.handleBlur} ...prevValues,
physiciancity: e.target.value,
}));
}}
value={type=='display'? patientDataDiplay && patientDataDiplay.physiciancity:patient.physiciancity}
disabled={type=='display'}
/> />
</Grid> </Grid>
<Grid item xs={4} className='collapsable-form-style'> <Grid item
xs={12}
xl={3}
lg={4}
md={6}
sm={12}
className='collapsable-form-style'>
<TextField <TextField
variant="outlined" variant="outlined"
label="State" label="State"
name='physicianstate' name='physicianstate'
onChange={formik.handleChange} onChange={(e)=>{
value={formik.values.physicianstate} setPatient((prevValues) => ({
onBlur={formik.handleBlur} ...prevValues,
physicianstate: e.target.value,
}));
}}
value={type=='display'? patientDataDiplay && patientDataDiplay.physicianstate:patient.physicianstate}
disabled={type=='display'}
/> />
</Grid> </Grid>
<Grid item xs={4} className='collapsable-form-style'> <Grid item
xs={12}
xl={3}
lg={4}
md={6}
sm={12}
className='collapsable-form-style'>
<TextField <TextField
variant="outlined" variant="outlined"
label="Phone" label="Phone"
type="number" type="number"
name='physicianphone' name='physicianphone'
onChange={formik.handleChange} onChange={(e)=>{
value={formik.values.physicianphone} setPatient((prevValues) => ({
onBlur={formik.handleBlur} ...prevValues,
physicianphone: e.target.value,
}));
}}
value={type=='display'? patientDataDiplay && patientDataDiplay.physicianphone:patient.physicianphone}
disabled={type=='display'}
/> />
</Grid> </Grid>
<Grid item xs={4} className='collapsable-form-style'></Grid> <Grid item
<Grid item xs={4} className='collapsable-form-style'></Grid> xs={12}
xl={3}
lg={4}
md={6}
sm={12} className='collapsable-form-style'></Grid>
<Grid item
xs={12}
xl={3}
lg={4}
md={6}
sm={12} className='collapsable-form-style'></Grid>
<Grid item xs={12} className='collapsable-form-style '> <Grid item xs={12} className='collapsable-form-style '>
<FormLabel sx={{fontWeight:600}}>Chiropractor Information:</FormLabel> <FormLabel sx={{fontWeight:600}}>Chiropractor Information:</FormLabel>
</Grid> </Grid>
<Grid item xs={4} sx={{paddingLeft:"14px",marginTop:2}} className='collapsable-form-style-radioButtons'> <Grid item
xs={12}
xl={3}
lg={4}
md={6}
sm={12}
sx={{paddingLeft:"14px",marginTop:2}} className='collapsable-form-style-radioButtons'>
<FormControl> <FormControl>
<FormLabel>Previous Chiropractic Care:</FormLabel> <FormLabel>Previous Chiropractic Care:</FormLabel>
<RadioGroup <RadioGroup
// value={patient.gender}
aria-labelledby="demo-radio-buttons-group-label" aria-labelledby="demo-radio-buttons-group-label"
// defaultValue="yes" defaultValue={type=='display'? patientDataDiplay && patientDataDiplay.haveChiropractor:patient.haveChiropractor}
name="radio-buttons-group" name="radio-buttons-group"
onChange={formik.handleChange} onChange={(e)=>{
setPatient((prevValues) => ({
...prevValues,
haveChiropractor: e.target.value,
}));
}}
sx={{display:'flex', flexDirection:'row'}} sx={{display:'flex', flexDirection:'row'}}
> >
<FormControlLabel value="yes" control={<Radio />} label="Yes" /> <FormControlLabel disabled={type=='display'} value="yes" control={<Radio />} label="Yes" />
<FormControlLabel value="no" control={<Radio />} label="No" /> <FormControlLabel disabled={type=='display'} value="no" control={<Radio />} label="No" />
</RadioGroup> </RadioGroup>
</FormControl> </FormControl>
</Grid> </Grid>
<Grid item xs={4} className='collapsable-form-style'> <Grid item
xs={12}
xl={3}
lg={4}
md={6}
sm={12}
className='collapsable-form-style'>
<TextField <TextField
variant="outlined" variant="outlined"
label="Chiropractor's Name" label="Chiropractor's Name"
name='chiropractorName' name='chiropractorName'
onChange={formik.handleChange} onChange={(e)=>{
value={formik.values.chiropractorName} setPatient((prevValues) => ({
onBlur={formik.handleBlur} ...prevValues,
chiropractorName: e.target.value,
}));
}}
value={type=='display'? patientDataDiplay && patientDataDiplay.chiropractorName:patient.chiropractorName}
disabled={type=='display'}
/> />
</Grid> </Grid>
<Grid item xs={4} className='collapsable-form-style'> <Grid item
xs={12}
xl={3}
lg={4}
md={6}
sm={12}
className='collapsable-form-style'>
<TextField <TextField
variant="outlined" variant="outlined"
label="City/State" label="City/State"
name='chiropractorState' name='chiropractorState'
onChange={formik.handleChange} onChange={(e)=>{
value={formik.values.chiropractorState} setPatient((prevValues) => ({
onBlur={formik.handleBlur} ...prevValues,
chiropractorState: e.target.value,
}));
}}
value={type=='display'? patientDataDiplay && patientDataDiplay.chiropractorState:patient.chiropractorState}
disabled={type=='display'}
/> />
</Grid> </Grid>
</Grid> </Grid>
@ -153,13 +256,18 @@ export default function MedicalHistoryForm(){
<RadioGroup <RadioGroup
// value={patient.gender} // value={patient.gender}
aria-labelledby="demo-radio-buttons-group-label" aria-labelledby="demo-radio-buttons-group-label"
// defaultValue="yes" defaultValue={type=='display'? patientDataDiplay && patientDataDiplay.xray:patient.xray}
name="radio-buttons-group" name="radio-buttons-group"
onChange={formik.handleChange} onChange={(e)=>{
setPatient((prevValues) => ({
...prevValues,
xray: e.target.value,
}));
}}
sx={{display:'flex', flexDirection:'row'}} sx={{display:'flex', flexDirection:'row'}}
> >
<FormControlLabel value="yes" control={<Radio />} label="Yes" /> <FormControlLabel disabled={type=='display'} value="yes" control={<Radio />} label="Yes" />
<FormControlLabel value="no" control={<Radio />} label="No" /> <FormControlLabel disabled={type=='display'} value="no" control={<Radio />} label="No" />
</RadioGroup> </RadioGroup>
</FormControl> </FormControl>
</Grid> </Grid>
@ -170,17 +278,22 @@ export default function MedicalHistoryForm(){
<RadioGroup <RadioGroup
// value={patient.gender} // value={patient.gender}
aria-labelledby="demo-radio-buttons-group-label" aria-labelledby="demo-radio-buttons-group-label"
// defaultValue="physician" defaultValue={type=='display'? patientDataDiplay && patientDataDiplay.reference:patient.reference}
name="radio-buttons-group" name="radio-buttons-group"
onChange={formik.handleChange} onChange={(e)=>{
setPatient((prevValues) => ({
...prevValues,
reference: e.target.value,
}));
}}
sx={{display:'flex', flexDirection:'row'}} sx={{display:'flex', flexDirection:'row'}}
> >
<FormControlLabel value="friend" control={<Radio />} label="Friend" /> <FormControlLabel disabled={type=='display'} value="friend" control={<Radio />} label="Friend" />
<FormControlLabel value="relative" control={<Radio />} label="Relative" /> <FormControlLabel disabled={type=='display'} value="relative" control={<Radio />} label="Relative" />
<FormControlLabel value="physician" control={<Radio />} label="Physician" /> <FormControlLabel disabled={type=='display'} value="physician" control={<Radio />} label="Physician" />
<FormControlLabel value="instagram" control={<Radio />} label="Instagram" /> <FormControlLabel disabled={type=='display'} value="instagram" control={<Radio />} label="Instagram" />
<FormControlLabel value="google" control={<Radio />} label="Google" /> <FormControlLabel disabled={type=='display'} value="google" control={<Radio />} label="Google" />
<FormControlLabel value="others" control={<Radio />} label="Others" /> <FormControlLabel disabled={type=='display'} value="others" control={<Radio />} label="Others" />
</RadioGroup> </RadioGroup>
</FormControl> </FormControl>
</Grid> </Grid>
@ -191,17 +304,21 @@ export default function MedicalHistoryForm(){
<RadioGroup <RadioGroup
// value={patient.gender} // value={patient.gender}
aria-labelledby="demo-radio-buttons-group-label" aria-labelledby="demo-radio-buttons-group-label"
// defaultValue="email" defaultValue={type=='display'? patientDataDiplay && patientDataDiplay.cellPhoneProvider:patient.cellPhoneProvider}
name="radio-buttons-group" name="radio-buttons-group"
onChange={formik.handleChange} onChange={(e)=>{
setPatient((prevValues) => ({
...prevValues,
cellPhoneProvider: e.target.value,
}));
}}
sx={{display:'flex', flexDirection:'row'}} sx={{display:'flex', flexDirection:'row'}}
> >
<FormControlLabel value="email" control={<Radio />} label="Email" /> <FormControlLabel disabled={type=='display'} value="email" control={<Radio />} label="Email" />
<FormControlLabel value="text" control={<Radio />} label="Text" /> <FormControlLabel disabled={type=='display'} value="text" control={<Radio />} label="Text" />
</RadioGroup> </RadioGroup>
</FormControl> </FormControl>
</Grid> </Grid>
</form>
</> </>
)} )}

View File

@ -1,54 +1,103 @@
import { Grid, FormLabel, TextField, FormControl, RadioGroup, FormControlLabel, Radio } from "@mui/material"; import {
import { AdapterDayjs } from "@mui/x-date-pickers/AdapterDayjs"; Grid,
import React from "react"; FormLabel,
TextField,
FormControl,
RadioGroup,
FormControlLabel,
Radio,
} from '@mui/material';
import { AdapterDayjs } from '@mui/x-date-pickers/AdapterDayjs';
import React, { useEffect } from 'react';
import { LocalizationProvider, DatePicker } from '@mui/x-date-pickers'; import { LocalizationProvider, DatePicker } from '@mui/x-date-pickers';
import dayjs from "dayjs"; import dayjs from 'dayjs';
interface FormValues { interface Patient {
familyHistory: string; familyHistory: string;
sleep: string; sleep: string;
pillow:string; pillow: string;
orthotics:string; orthotics: string;
brestExam: any; brestExam: any;
pregnancy:string; pregnancy: string;
menstralCycle: any; menstralCycle: any;
} }
export default function OtherDetails8(){ type Props = {
handleFormSection8Data: (
familyHistory: string | undefined,
sleep: string | undefined,
pillow: string | undefined,
orthotics: string | undefined,
brestExam: any,
pregnancy: string | undefined,
menstralCycle: any
) => void;
patientDataDiplay: any;
type: string;
};
const [values, setValues] = React.useState<FormValues>({ export default function OtherDetails8({
handleFormSection8Data,
patientDataDiplay,
type,
}: Props) {
const [patient, setPatient] = React.useState<Patient>({
familyHistory: '', familyHistory: '',
sleep: '', sleep: '',
pillow:'', pillow: '',
orthotics:'', orthotics: '',
brestExam: dayjs('2022-04-17'), brestExam: dayjs('2022-04-17'),
pregnancy:'', pregnancy: '',
menstralCycle: dayjs('2022-04-17'), menstralCycle: dayjs('2022-04-17'),
}); });
const formatDate = (inputDate:any) => { useEffect(() => {
handleFormSection8Data(
patient.familyHistory,
patient.sleep,
patient.pillow,
patient.orthotics,
(patient.brestExam = dayjs(patient.brestExam)),
patient.pregnancy,
(patient.menstralCycle = dayjs(patient.menstralCycle))
);
}, [patient]);
const formatDate = (inputDate: any) => {
const date = new Date(inputDate); const date = new Date(inputDate);
const year = date.getUTCFullYear(); const year = date.getUTCFullYear();
const month = String(date.getUTCMonth() + 1).padStart(2, '0'); const month = String(date.getUTCMonth() + 1).padStart(2, '0');
const day = String(date.getUTCDate()+1).padStart(2, '0'); const day = String(date.getUTCDate() + 1).padStart(2, '0');
return `${year}-${month}-${day}`; return `${year}-${month}-${day}`;
}; };
console.log("dsfdsfsdf",values) return (
return(
<> <>
<Grid container direction="row"> <Grid container direction='row'>
<Grid item xs={12} className='collapsable-form-style-multiline'> <Grid
<FormLabel>Family history and health status:</FormLabel><br></br> item
xs={12}
xl={3}
lg={4}
md={6}
sm={12}
className='collapsable-form-style-multiline'
>
<FormLabel>Family history and health status:</FormLabel>
<br></br>
<TextField <TextField
multiline multiline
variant="outlined" variant='outlined'
label="" label=''
name='explanation' value={
onChange={(event:any) => { type == 'display'
setValues((prevValues) => ({ ? patientDataDiplay && patientDataDiplay.familyHistory
: patient.familyHistory
}
disabled={type == 'display'}
onChange={(event: any) => {
setPatient((prevValues) => ({
...prevValues, ...prevValues,
familyHistory: event.target.value, familyHistory: event.target.value,
})); }));
@ -60,17 +109,35 @@ export default function OtherDetails8(){
<FormControl> <FormControl>
<FormLabel>How do you sleep?</FormLabel> <FormLabel>How do you sleep?</FormLabel>
<RadioGroup <RadioGroup
sx={{display:'flex', flexDirection:'row'}} sx={{ display: 'flex', flexDirection: 'row' }}
defaultValue={
type == 'display' ? patientDataDiplay && patientDataDiplay.sleep : patient.sleep
}
onChange={(event) => { onChange={(event) => {
setValues((prevValues) => ({ setPatient((prevValues) => ({
...prevValues, ...prevValues,
educationLevel: event.target.value, sleep: event.target.value,
})); }));
}} }}
> >
<FormControlLabel value="Back" control={<Radio />} label="Back" /> <FormControlLabel
<FormControlLabel value="Side" control={<Radio />} label="Side" /> disabled={type == 'display'}
<FormControlLabel value="Stomach" control={<Radio />} label="Stomach" /> value='Back'
control={<Radio />}
label='Back'
/>
<FormControlLabel
disabled={type == 'display'}
value='Side'
control={<Radio />}
label='Side'
/>
<FormControlLabel
disabled={type == 'display'}
value='Stomach'
control={<Radio />}
label='Stomach'
/>
</RadioGroup> </RadioGroup>
</FormControl> </FormControl>
</Grid> </Grid>
@ -79,16 +146,29 @@ export default function OtherDetails8(){
<FormControl> <FormControl>
<FormLabel>Do you use a pillow?</FormLabel> <FormLabel>Do you use a pillow?</FormLabel>
<RadioGroup <RadioGroup
sx={{display:'flex', flexDirection:'row'}} sx={{ display: 'flex', flexDirection: 'row' }}
defaultValue={
type == 'display' ? patientDataDiplay && patientDataDiplay.pillow : patient.pillow
}
onChange={(event) => { onChange={(event) => {
setValues((prevValues) => ({ setPatient((prevValues) => ({
...prevValues, ...prevValues,
pillow: event.target.value, pillow: event.target.value,
})); }));
}} }}
> >
<FormControlLabel value="Yes" control={<Radio />} label="Yes" /> <FormControlLabel
<FormControlLabel value="No" control={<Radio />} label="No" /> disabled={type == 'display'}
value='Yes'
control={<Radio />}
label='Yes'
/>
<FormControlLabel
disabled={type == 'display'}
value='No'
control={<Radio />}
label='No'
/>
</RadioGroup> </RadioGroup>
</FormControl> </FormControl>
</Grid> </Grid>
@ -97,34 +177,65 @@ export default function OtherDetails8(){
<FormControl> <FormControl>
<FormLabel>Do you wear orthotics or arch support?</FormLabel> <FormLabel>Do you wear orthotics or arch support?</FormLabel>
<RadioGroup <RadioGroup
sx={{display:'flex', flexDirection:'row'}} sx={{ display: 'flex', flexDirection: 'row' }}
defaultValue={
type == 'display'
? patientDataDiplay && patientDataDiplay.orthotics
: patient.orthotics
}
onChange={(event) => { onChange={(event) => {
setValues((prevValues) => ({ setPatient((prevValues) => ({
...prevValues, ...prevValues,
orthotics: event.target.value, orthotics: event.target.value,
})); }));
}} }}
> >
<FormControlLabel value="Yes" control={<Radio />} label="Yes" /> <FormControlLabel
<FormControlLabel value="No" control={<Radio />} label="No" /> disabled={type == 'display'}
value='Yes'
control={<Radio />}
label='Yes'
/>
<FormControlLabel
disabled={type == 'display'}
value='No'
control={<Radio />}
label='No'
/>
</RadioGroup> </RadioGroup>
</FormControl> </FormControl>
</Grid> </Grid>
<Grid item xs={12} className='collapsable-form-style-radioButtons'> <Grid
<FormLabel>Date of last gynecological and brest exam?</FormLabel><br></br> item
xs={12}
xl={3}
lg={4}
md={6}
sm={12}
className='collapsable-form-style-radioButtons'
>
<FormLabel>Date of last gynecological and brest exam?</FormLabel>
<br></br>
<FormControl> <FormControl>
<LocalizationProvider dateAdapter={AdapterDayjs}> <LocalizationProvider dateAdapter={AdapterDayjs}>
<DatePicker <DatePicker
value={values.brestExam} value={
type == 'display'
? patientDataDiplay && patientDataDiplay.brestExam
: patient.brestExam
}
disabled={type == 'display'}
onChange={(event) => { onChange={(event) => {
const formattedDate = formatDate(event) const formattedDate = formatDate(event);
setValues((prevValues) => ({ setPatient((prevValues) => ({
...prevValues, ...prevValues,
brestExam: formattedDate, brestExam: formattedDate,
})); }));
}} }}
renderInput={(params) => <TextField variant="outlined" {...params} />} renderInput={(params) => (
<TextField variant='outlined' {...params} />
)}
/> />
</LocalizationProvider> </LocalizationProvider>
</FormControl> </FormControl>
@ -138,41 +249,70 @@ export default function OtherDetails8(){
<FormControl> <FormControl>
<FormLabel>Possible pregnancy?</FormLabel> <FormLabel>Possible pregnancy?</FormLabel>
<RadioGroup <RadioGroup
sx={{display:'flex', flexDirection:'row'}} sx={{ display: 'flex', flexDirection: 'row' }}
defaultValue={
type == 'display'
? patientDataDiplay && patientDataDiplay.pregnancy
: patient.pregnancy
}
onChange={(event) => { onChange={(event) => {
setValues((prevValues) => ({ setPatient((prevValues) => ({
...prevValues, ...prevValues,
orthotics: event.target.value, pregnancy: event.target.value,
})); }));
}} }}
> >
<FormControlLabel value="Yes" control={<Radio />} label="Yes" /> <FormControlLabel
<FormControlLabel value="No" control={<Radio />} label="No" /> disabled={type == 'display'}
value='Yes'
control={<Radio />}
label='Yes'
/>
<FormControlLabel
disabled={type == 'display'}
value='No'
control={<Radio />}
label='No'
/>
</RadioGroup> </RadioGroup>
</FormControl> </FormControl>
</Grid> </Grid>
<Grid item xs={12} className='collapsable-form-style-radioButtons'> <Grid
<FormLabel>Date of last menstrual cycle?</FormLabel><br></br> item
xs={12}
xl={3}
lg={4}
md={6}
sm={12}
className='collapsable-form-style-radioButtons'
>
<FormLabel>Date of last menstrual cycle?</FormLabel>
<br></br>
<FormControl> <FormControl>
<LocalizationProvider dateAdapter={AdapterDayjs}> <LocalizationProvider dateAdapter={AdapterDayjs}>
<DatePicker <DatePicker
value={values.menstralCycle} value={
type == 'display'
? patientDataDiplay && patientDataDiplay.menstralCycle
: patient.menstralCycle
}
disabled={type == 'display'}
onChange={(event) => { onChange={(event) => {
const formattedDate = formatDate(event) const formattedDate = formatDate(event);
setValues((prevValues) => ({ setPatient((prevValues) => ({
...prevValues, ...prevValues,
menstralCycle: formattedDate, menstralCycle: formattedDate,
})); }));
}} }}
renderInput={(params) => <TextField variant="outlined" {...params} />} renderInput={(params) => (
<TextField variant='outlined' {...params} />
)}
/> />
</LocalizationProvider> </LocalizationProvider>
</FormControl> </FormControl>
</Grid> </Grid>
</Grid> </Grid>
</> </>
) );
} }

View File

@ -1,266 +1,587 @@
import * as React from 'react'; import * as React from 'react';
import { Checkbox, FormControlLabel, TextField, FormGroup, Grid, FormControl, FormLabel, Radio, RadioGroup } from '@mui/material'; import {
Checkbox,
FormControlLabel,
TextField,
FormGroup,
Grid,
FormControl,
FormLabel,
Radio,
RadioGroup,
} from '@mui/material';
import { useFormik } from 'formik'; import { useFormik } from 'formik';
import * as Yup from 'yup'; import * as Yup from 'yup';
import path from 'path';
import { useEffect } from 'react';
interface FormValues { interface Patient {
chiefComplaint:string; chiefComplaint: string;
painWorse: string[];
painBetter: string[];
painQuality: string[]; painQuality: string[];
painWorstTime: string[];
currentComplaintIssues: string[];
painDuration: string; painDuration: string;
currentTreatment: string; currentTreatment: string;
treatmentResults: string;
treatmentGoal: string; treatmentGoal: string;
} selfTreatment: string;
}
const validationSchema = Yup.object({ type Props = {
chiefComplaint:Yup.array().required('Required'), handleFormSection4Data: (
painQuality: Yup.array().required('Required'), chiefComplaint: string | undefined,
painDuration: Yup.string().required('Required'), painWorse: any,
currentTreatment: Yup.string().required('Required'), painBetter: any,
treatmentResults: Yup.string().required('Required'), painQuality: any,
treatmentGoal: Yup.string().required('Required'), painWorstTime: any,
currentComplaintIssues: any,
painDuration: string | undefined,
currentTreatment: string | undefined,
treatmentGoal: string | undefined,
selfTreatment: string | undefined
) => void;
patientDataDiplay: any;
type: string;
};
export default function PainAnalysisSection4({
handleFormSection4Data,
patientDataDiplay,
type,
}: Props) {
const [patient, setPatient] = React.useState<Patient>({
chiefComplaint: '',
painWorse: [],
painBetter: [],
painQuality: [],
painWorstTime: [],
currentComplaintIssues: [],
painDuration: '',
currentTreatment: '',
treatmentGoal: '',
selfTreatment: '',
}); });
export default function PainAnalysisSection4(){ useEffect(() => {
const formik = useFormik<FormValues>({ handleFormSection4Data(
initialValues:{ patient.chiefComplaint,
chiefComplaint:'', patient.painWorse,
painQuality:[], patient.painBetter,
painDuration:'', patient.painQuality,
currentTreatment:'', patient.painWorstTime,
treatmentResults:'', patient.currentComplaintIssues,
treatmentGoal:'', patient.painDuration,
}, patient.currentTreatment,
validationSchema, patient.treatmentGoal,
onSubmit:(values)=>{ patient.selfTreatment
console.log(values); );
} }, [patient]);
})
const handlePainQualityChange = (event: React.ChangeEvent<HTMLInputElement>) => { const handlePainWorseChange = (
if (event.target.checked) { event: React.ChangeEvent<HTMLInputElement>
formik.setFieldValue('painQuality', [...formik.values.painQuality, event.target.value]); ) => {
} else { const { name, checked } = event.target;
formik.setFieldValue('painQuality', formik.values.painQuality.filter((item) => item !== event.target.value)); setPatient((prevValues) => ({
} ...prevValues,
painWorse: checked
? [...prevValues.painWorse, name]
: prevValues.painWorse.filter((item) => item !== name),
}));
}; };
return( const handlePainBetterChange = (
event: React.ChangeEvent<HTMLInputElement>
) => {
const { name, checked } = event.target;
setPatient((prevValues) => ({
...prevValues,
painBetter: checked
? [...prevValues.painBetter, name]
: prevValues.painBetter.filter((item) => item !== name),
}));
};
const handlePainQualityChange = (
event: React.ChangeEvent<HTMLInputElement>
) => {
const { name, checked } = event.target;
setPatient((prevValues) => ({
...prevValues,
painQuality: checked
? [...prevValues.painQuality, name]
: prevValues.painQuality.filter((item) => item !== name),
}));
};
const handlePainWorstTimeChange = (
event: React.ChangeEvent<HTMLInputElement>
) => {
const { name, checked } = event.target;
setPatient((prevValues) => ({
...prevValues,
painWorstTime: checked
? [...prevValues.painWorstTime, name]
: prevValues.painWorstTime.filter((item) => item !== name),
}));
};
const handleCurrentComplaintIssuesTimeChange = (
event: React.ChangeEvent<HTMLInputElement>
) => {
const { name, checked } = event.target;
setPatient((prevValues) => ({
...prevValues,
currentComplaintIssues: checked
? [...prevValues.currentComplaintIssues, name]
: prevValues.currentComplaintIssues.filter((item) => item !== name),
}));
};
return (
<> <>
<form onSubmit={formik.handleSubmit}>
<Grid item xs={12} className='collapsable-form-style '> <Grid item xs={12} className='collapsable-form-style '>
<FormLabel sx={{fontWeight:600}}>Issue Details:</FormLabel> <FormLabel sx={{ fontWeight: 600 }}>Issue Details:</FormLabel>
</Grid> </Grid>
<Grid container direction="row"> <Grid container direction='row'>
<Grid item xs={4} className='collapsable-form-style-form7'> <Grid
item
xs={12}
xl={10}
lg={10}
md={10}
sm={12}
className='collapsable-form-style-form7'
>
<TextField <TextField
variant="outlined" variant='outlined'
label="How did your Chief complaint start?(ex-fell on ice)" label='How did your Chief complaint start?(ex-fell on ice)'
name='chiefComplaint' name='chiefComplaint'
onChange={formik.handleChange} onChange={(e) => {
value={formik.values.chiefComplaint} setPatient((prevValues) => ({
onBlur={formik.handleBlur} ...prevValues,
chiefComplaint: e.target.value,
}));
}}
value={
type == 'display'
? patientDataDiplay && patientDataDiplay.chiefComplaint
: patient.chiefComplaint
}
disabled={type == 'display'}
/> />
</Grid> </Grid>
<Grid item xs={12} className='collapsable-form-style-radioButtons-fullwidth'> <Grid
item
xs={12}
className='collapsable-form-style-radioButtons-fullwidth'
>
<FormControl> <FormControl>
<FormLabel>What makes your pain worse?</FormLabel> <FormLabel>What makes your pain worse?</FormLabel>
<FormGroup sx={{display:'flex', flexDirection:'row'}}> <FormGroup sx={{ display: 'flex', flexDirection: 'row' }}>
<FormControlLabel <FormControlLabel
control={<Checkbox onChange={handlePainQualityChange} name="sharp" />} control={
label="Bending" <Checkbox onChange={handlePainWorseChange} name='Bending' defaultChecked={type=='display' && patientDataDiplay && patientDataDiplay.painWorse.includes('Bending')}/>
}
label='Bending'
disabled={type == 'display'}
/> />
<FormControlLabel <FormControlLabel
control={<Checkbox onChange={handlePainQualityChange} name="dull" />} control={
label="Standing" <Checkbox onChange={handlePainWorseChange} name='Standing' defaultChecked={type=='display' && patientDataDiplay && patientDataDiplay.painWorse.includes('Standing')}/>
}
label='Standing'
disabled={type == 'display'}
/> />
<FormControlLabel <FormControlLabel
control={<Checkbox onChange={handlePainQualityChange} name="burning" />} control={
label="Sitting" <Checkbox onChange={handlePainWorseChange} name='Sitting' defaultChecked={type=='display' && patientDataDiplay && patientDataDiplay.painWorse.includes('Sitting')}/>
}
label='Sitting'
disabled={type == 'display'}
/> />
<FormControlLabel <FormControlLabel
control={<Checkbox onChange={handlePainQualityChange} name="aching" />} control={
label="Walking" <Checkbox onChange={handlePainWorseChange} name='Walking' defaultChecked={type=='display' && patientDataDiplay && patientDataDiplay.painWorse.includes('Walking')}/>
}
label='Walking'
disabled={type == 'display'}
/> />
<FormControlLabel <FormControlLabel
control={<Checkbox onChange={handlePainQualityChange} name="aching" />} control={
label="Others" <Checkbox onChange={handlePainWorseChange} name='Others' defaultChecked={type=='display' && patientDataDiplay && patientDataDiplay.painWorse.includes('Others')}/>
}
label='Others'
disabled={type == 'display'}
/> />
</FormGroup> </FormGroup>
{formik.touched.painQuality && formik.errors.painQuality ? (
<div>{formik.errors.painQuality}</div>
) : null}
</FormControl> </FormControl>
</Grid> </Grid>
<Grid item xs={12} className='collapsable-form-style-radioButtons-fullwidth'> <Grid
item
xs={12}
className='collapsable-form-style-radioButtons-fullwidth'
>
<FormControl> <FormControl>
<FormLabel>What makes your pain better?</FormLabel> <FormLabel>What makes your pain better?</FormLabel>
<FormGroup sx={{display:'flex', flexDirection:'row'}}> <FormGroup sx={{ display: 'flex', flexDirection: 'row' }}>
<FormControlLabel <FormControlLabel
control={<Checkbox onChange={handlePainQualityChange} name="sharp" />} control={
label="laying down" <Checkbox
onChange={handlePainBetterChange}
name='laying down'
defaultChecked={type=='display' && patientDataDiplay && patientDataDiplay.painBetter.includes('laying down')}
/>
}
label='laying down'
disabled={type == 'display'}
/> />
<FormControlLabel <FormControlLabel
control={<Checkbox onChange={handlePainQualityChange} name="dull" />} control={
label="Standing" <Checkbox onChange={handlePainBetterChange} name='Standing' defaultChecked={type=='display' && patientDataDiplay && patientDataDiplay.painBetter.includes('Standing')}/>
}
label='Standing'
disabled={type == 'display'}
/> />
<FormControlLabel <FormControlLabel
control={<Checkbox onChange={handlePainQualityChange} name="burning" />} control={
label="Sitting" <Checkbox onChange={handlePainBetterChange} name='Sitting' defaultChecked={type=='display' && patientDataDiplay && patientDataDiplay.painBetter.includes('Sitting')}/>
}
label='Sitting'
disabled={type == 'display'}
/> />
<FormControlLabel <FormControlLabel
control={<Checkbox onChange={handlePainQualityChange} name="aching" />} control={
label="Walking" <Checkbox onChange={handlePainBetterChange} name='Walking' defaultChecked={type=='display' && patientDataDiplay && patientDataDiplay.painBetter.includes('Walking')}/>
}
label='Walking'
disabled={type == 'display'}
/> />
<FormControlLabel <FormControlLabel
control={<Checkbox onChange={handlePainQualityChange} name="aching" />} control={
label="Others" <Checkbox onChange={handlePainBetterChange} name='Others' defaultChecked={type=='display' && patientDataDiplay && patientDataDiplay.painBetter.includes('Others')}/>
}
label='Others'
disabled={type == 'display'}
/> />
</FormGroup> </FormGroup>
</FormControl> </FormControl>
</Grid> </Grid>
<Grid item xs={12} className='collapsable-form-style-radioButtons-fullwidth'> <Grid
item
xs={12}
className='collapsable-form-style-radioButtons-fullwidth'
>
<FormControl> <FormControl>
<FormLabel>What is the quality of your pain?</FormLabel> <FormLabel>What is the quality of your pain?</FormLabel>
<FormGroup sx={{display:'flex', flexDirection:'row'}}> <FormGroup sx={{ display: 'flex', flexDirection: 'row' }}>
<FormControlLabel <FormControlLabel
control={<Checkbox onChange={handlePainQualityChange} name="sharp" />} control={
label="Sharp" <Checkbox onChange={handlePainQualityChange} name='sharp' defaultChecked={type=='display' && patientDataDiplay && patientDataDiplay.painQuality.includes('Sharp')}/>
}
label='Sharp'
disabled={type == 'display'}
/> />
<FormControlLabel <FormControlLabel
control={<Checkbox onChange={handlePainQualityChange} name="dull" />} control={
label="Dull/Ache" <Checkbox onChange={handlePainQualityChange} name='Dull/Ache' defaultChecked={type=='display' && patientDataDiplay && patientDataDiplay.painQuality.includes('Dull/Ache')}/>
}
label='Dull/Ache'
disabled={type == 'display'}
/> />
<FormControlLabel <FormControlLabel
control={<Checkbox onChange={handlePainQualityChange} name="burning" />} control={
label="Throbbing" <Checkbox
onChange={handlePainQualityChange}
name='Throbbing'
defaultChecked={type=='display' && patientDataDiplay && patientDataDiplay.painQuality.includes('Throbbing')}
/>
}
label='Throbbing'
disabled={type == 'display'}
/> />
<FormControlLabel <FormControlLabel
control={<Checkbox onChange={handlePainQualityChange} name="aching" />} control={
label="Tingling/Numbness/Burning" <Checkbox
onChange={handlePainQualityChange}
name='Tingling/Numbness/Burning'
defaultChecked={type=='display' && patientDataDiplay && patientDataDiplay.painQuality.includes('Tingling/Numbness/Burning')}
/>
}
label='Tingling/Numbness/Burning'
disabled={type == 'display'}
/> />
<FormControlLabel <FormControlLabel
control={<Checkbox onChange={handlePainQualityChange} name="aching" />} control={
label="Others" <Checkbox onChange={handlePainQualityChange} name='Others' defaultChecked={type=='display' && patientDataDiplay && patientDataDiplay.painQuality.includes('Others')}/>
}
label='Others'
disabled={type == 'display'}
/> />
</FormGroup> </FormGroup>
{formik.touched.painQuality && formik.errors.painQuality ? (
<div>{formik.errors.painQuality}</div>
) : null}
</FormControl> </FormControl>
</Grid> </Grid>
<Grid item xs={12} className='collapsable-form-style-radioButtons-fullwidth'> <Grid
item
xs={12}
className='collapsable-form-style-radioButtons-fullwidth'
>
<FormControl> <FormControl>
<FormLabel>What is the worst time for your pain?</FormLabel> <FormLabel>What is the worst time for your pain?</FormLabel>
<FormGroup sx={{display:'flex', flexDirection:'row'}}> <FormGroup sx={{ display: 'flex', flexDirection: 'row' }}>
<FormControlLabel <FormControlLabel
control={<Checkbox onChange={handlePainQualityChange} name="sharp" />} control={
label="Morning" <Checkbox
onChange={handlePainWorstTimeChange}
name='Morning'
defaultChecked={type=='display' && patientDataDiplay && patientDataDiplay.painWorstTime.includes('Morning')}
/>
}
label='Morning'
disabled={type == 'display'}
/> />
<FormControlLabel <FormControlLabel
control={<Checkbox onChange={handlePainQualityChange} name="dull" />} control={
label="During day" <Checkbox
onChange={handlePainWorstTimeChange}
name='During day'
defaultChecked={type=='display' && patientDataDiplay && patientDataDiplay.painWorstTime.includes('During day')}
/>
}
label='During day'
disabled={type == 'display'}
/> />
<FormControlLabel <FormControlLabel
control={<Checkbox onChange={handlePainQualityChange} name="burning" />} control={
label="Evening" <Checkbox
onChange={handlePainWorstTimeChange}
name='Evening'
defaultChecked={type=='display' && patientDataDiplay && patientDataDiplay.painWorstTime.includes('Evening')}
/>
}
label='Evening'
disabled={type == 'display'}
/> />
<FormControlLabel <FormControlLabel
control={<Checkbox onChange={handlePainQualityChange} name="aching" />} control={
label="Lying in bed" <Checkbox
onChange={handlePainWorstTimeChange}
name='Lying in bed'
defaultChecked={type=='display' && patientDataDiplay && patientDataDiplay.painWorstTime.includes('Lying in bed')}
/>
}
label='Lying in bed'
disabled={type == 'display'}
/> />
<FormControlLabel <FormControlLabel
control={<Checkbox onChange={handlePainQualityChange} name="aching" />} control={
label="Others" <Checkbox
onChange={handlePainWorstTimeChange}
name='Others'
defaultChecked={type=='display' && patientDataDiplay && patientDataDiplay.painWorstTime.includes('Others')}
/>
}
label='Others'
disabled={type == 'display'}
/> />
</FormGroup> </FormGroup>
{formik.touched.painQuality && formik.errors.painQuality ? (
<div>{formik.errors.painQuality}</div>
) : null}
</FormControl> </FormControl>
</Grid> </Grid>
<Grid item xs={12} className='collapsable-form-style-radioButtons-fullwidth'> <Grid
<FormControl> item
<FormLabel>How much of the day do you experience your chief complaint?</FormLabel> xs={12}
<RadioGroup className='collapsable-form-style-radioButtons-fullwidth'
name="painDuration"
onChange={formik.handleChange}
value={formik.values.painDuration}
sx={{display:'flex', flexDirection:'row'}}
> >
<FormControlLabel value="0-25%" control={<Radio />} label="0-25%" /> <FormControl>
<FormControlLabel value="25-50%" control={<Radio />} label="25-50%" /> <FormLabel>
<FormControlLabel value="50-75%" control={<Radio />} label="50-75%" /> How much of the day do you experience your chief complaint?
<FormControlLabel value="75-100%" control={<Radio />} label="75-100%" /> </FormLabel>
<RadioGroup
name='painDuration'
onChange={(e) => {
setPatient((prevValues) => ({
...prevValues,
painDuration: e.target.value,
}));
}}
value={
type == 'display'
? patientDataDiplay && patientDataDiplay.painDuration
: patient.painDuration
}
sx={{ display: 'flex', flexDirection: 'row' }}
>
<FormControlLabel
disabled={type == 'display'}
value='0-25%'
control={<Radio />}
label='0-25%'
/>
<FormControlLabel
disabled={type == 'display'}
value='25-50%'
control={<Radio />}
label='25-50%'
/>
<FormControlLabel
disabled={type == 'display'}
value='50-75%'
control={<Radio />}
label='50-75%'
/>
<FormControlLabel
disabled={type == 'display'}
value='75-100%'
control={<Radio />}
label='75-100%'
/>
</RadioGroup> </RadioGroup>
</FormControl> </FormControl>
</Grid> </Grid>
<Grid item xs={12} className='collapsable-form-style-radioButtons-fullwidth'> <Grid
item
xs={12}
className='collapsable-form-style-radioButtons-fullwidth'
>
<FormControl> <FormControl>
<FormLabel>Has your current complaint caused any of the following?</FormLabel> <FormLabel>
<FormGroup sx={{display:'flex', flexDirection:'row'}}> Has your current complaint caused any of the following?
</FormLabel>
<FormGroup sx={{ display: 'flex', flexDirection: 'row' }}>
<FormControlLabel <FormControlLabel
control={<Checkbox onChange={handlePainQualityChange} name="sharp" />} control={
label="Muscle weakness" <Checkbox
onChange={handleCurrentComplaintIssuesTimeChange}
name='Muscle weakness'
defaultChecked={type=='display' && patientDataDiplay && patientDataDiplay.currentComplaintIssues.includes('Muscle weakness')}
/>
}
label='Muscle weakness'
disabled={type == 'display'}
/> />
<FormControlLabel <FormControlLabel
control={<Checkbox onChange={handlePainQualityChange} name="dull" />} control={
label="Bowel/Bladder problem" <Checkbox
onChange={handleCurrentComplaintIssuesTimeChange}
name='Bowel/Bladder problem'
defaultChecked={type=='display' && patientDataDiplay && patientDataDiplay.currentComplaintIssues.includes('Bowel/Bladder problem')}
/>
}
label='Bowel/Bladder problem'
disabled={type == 'display'}
/> />
<FormControlLabel <FormControlLabel
control={<Checkbox onChange={handlePainQualityChange} name="burning" />} control={
label="Digestion" <Checkbox
onChange={handleCurrentComplaintIssuesTimeChange}
name='Digestion'
defaultChecked={type=='display' && patientDataDiplay && patientDataDiplay.currentComplaintIssues.includes('Digestion')}
/>
}
label='Digestion'
disabled={type == 'display'}
/> />
<FormControlLabel <FormControlLabel
control={<Checkbox onChange={handlePainQualityChange} name="aching" />} control={
label="Cardiac/Respiratory" <Checkbox
onChange={handleCurrentComplaintIssuesTimeChange}
name='Cardiac/Respiratory'
defaultChecked={type=='display' && patientDataDiplay && patientDataDiplay.currentComplaintIssues.includes('Cardiac/Respiratory')}
/>
}
label='Cardiac/Respiratory'
disabled={type == 'display'}
/> />
</FormGroup> </FormGroup>
</FormControl> </FormControl>
</Grid> </Grid>
<Grid item xs={12} className='collapsable-form-style-radioButtons-fullwidth'> <Grid
<FormControl> item
<FormLabel>Have you tried any self treatment (ex-ice, heat, excercise) or taken any medication(over the counter or prescription)?</FormLabel> xs={12}
<RadioGroup className='collapsable-form-style-radioButtons-fullwidth'
name="painDuration"
onChange={formik.handleChange}
value={formik.values.painDuration}
sx={{display:'flex', flexDirection:'row'}}
> >
<FormControlLabel value="yes" control={<Radio />} label="Yes" /> <FormControl>
<FormControlLabel value="no" control={<Radio />} label="No" /> <FormLabel>
Have you tried any self treatment (ex-ice, heat, excercise) or
taken any medication(over the counter or prescription)?
</FormLabel>
<RadioGroup
name='painDuration'
onChange={(e) => {
setPatient((prevValues) => ({
...prevValues,
selfTreatment: e.target.value,
}));
}}
value={
type == 'display'
? patientDataDiplay && patientDataDiplay.selfTreatment
: patient.selfTreatment
}
sx={{ display: 'flex', flexDirection: 'row' }}
>
<FormControlLabel
disabled={type == 'display'}
value='yes'
control={<Radio />}
label='Yes'
/>
<FormControlLabel
disabled={type == 'display'}
value='no'
control={<Radio />}
label='No'
/>
</RadioGroup> </RadioGroup>
{formik.touched.painDuration && formik.errors.painDuration ? (
<div>{formik.errors.painDuration}</div>
) : null}
</FormControl> </FormControl>
</Grid> </Grid>
<Grid item xs={12} className='collapsable-form-style' sx={{marginTop:3 }}> <Grid
<FormLabel sx={{fontWeight:600}}>Expected Treatment Result:</FormLabel> item
xs={12}
className='collapsable-form-style'
sx={{ marginTop: 3 }}
>
<FormLabel sx={{ fontWeight: 600 }}>
Expected Treatment Result:
</FormLabel>
</Grid> </Grid>
<Grid item xs={4} className='collapsable-form-style-form7'> <Grid
item
xs={12}
xl={10}
lg={10}
md={10}
sm={12}
className='collapsable-form-style-form7'
>
<TextField <TextField
variant="outlined" variant='outlined'
label="What is your goal from treatment?(ex-play golf without pain)" label='What is your goal from treatment?(ex-play golf without pain)'
name='treatmentGoal' name='treatmentGoal'
onChange={formik.handleChange} onChange={(e) => {
value={formik.values.treatmentGoal} setPatient((prevValues) => ({
onBlur={formik.handleBlur} ...prevValues,
treatmentGoal: e.target.value,
}));
}}
value={
type == 'display'
? patientDataDiplay && patientDataDiplay.treatmentGoal
: patient.treatmentGoal
}
disabled={type == 'display'}
/> />
</Grid> </Grid>
</Grid> </Grid>
</form>
</> </>
)} );
}

View File

@ -1,11 +1,21 @@
import { TextField, FormControlLabel,Grid,Checkbox, FormControl, FormLabel, Radio, RadioGroup } from '@mui/material'; import {
TextField,
FormControlLabel,
Grid,
Checkbox,
FormControl,
FormLabel,
Radio,
RadioGroup,
} from '@mui/material';
import * as React from 'react'; import * as React from 'react';
import Table from '../Helper/AddNewTable'; import Table from '../Helper/AddNewTable';
import { useEffect } from 'react';
interface FormValues { interface Patient {
generalHealth: string; generalHealth: string;
presentProblemBefore: string; presentProblemBefore: string;
ifYespresentProblemBefore:string; ifYespresentProblemBefore: string;
ifYestreatmentProvided: string; ifYestreatmentProvided: string;
ifYesOutcome: string; ifYesOutcome: string;
strokeBloodclotting: string; strokeBloodclotting: string;
@ -17,108 +27,238 @@ interface FormValues {
supplementsOrDrugs: string; supplementsOrDrugs: string;
} }
type Props = {
handleFormSection5Data: (
generalHealth: string | undefined,
presentProblemBefore: string | undefined,
ifYespresentProblemBefore: string | undefined,
ifYestreatmentProvided: string | undefined,
ifYesOutcome: string | undefined,
strokeBloodclotting: string | undefined,
ifYesstrokeBloodclotting: string | undefined,
dizzinessFetigue: string | undefined,
ifyesdizzinessFetigue: string | undefined,
antiColligent: string | undefined,
injuriesHospitalization: string | undefined,
supplementsOrDrugs: string | undefined
) => void;
patientDataDiplay: any;
type: string;
};
export default function PastTreatment5(){ export default function PastTreatment5({
handleFormSection5Data,
const [values, setValues] = React.useState<FormValues>({ patientDataDiplay,
type,
}: Props) {
const [patient, setPatient] = React.useState<Patient>({
generalHealth: '', generalHealth: '',
presentProblemBefore: '', presentProblemBefore: '',
ifYespresentProblemBefore:'', ifYespresentProblemBefore: '',
ifYestreatmentProvided:'', ifYestreatmentProvided: '',
ifYesOutcome:'', ifYesOutcome: '',
strokeBloodclotting: '', strokeBloodclotting: '',
ifYesstrokeBloodclotting: '', ifYesstrokeBloodclotting: '',
dizzinessFetigue: '', dizzinessFetigue: '',
ifyesdizzinessFetigue:'', ifyesdizzinessFetigue: '',
antiColligent: '', antiColligent: '',
injuriesHospitalization: '', injuriesHospitalization: '',
supplementsOrDrugs:'' supplementsOrDrugs: '',
}); });
console.log("dsfdsfdsfg",values) useEffect(() => {
return( handleFormSection5Data(
patient.generalHealth,
patient.presentProblemBefore,
patient.ifYespresentProblemBefore,
patient.ifYestreatmentProvided,
patient.ifYesOutcome,
patient.strokeBloodclotting,
patient.ifYesstrokeBloodclotting,
patient.dizzinessFetigue,
patient.ifyesdizzinessFetigue,
patient.antiColligent,
patient.injuriesHospitalization,
patient.supplementsOrDrugs
);
}, [patient]);
return (
<> <>
<form> <form>
<Grid container direction="row"> <Grid container direction='row'>
<Grid
<Grid item xs={12} className='collapsable-form-style-radioButtons-fullwidth'> item
xs={12}
className='collapsable-form-style-radioButtons-fullwidth'
>
<FormControl> <FormControl>
<FormLabel>Overall your General Healgth is:</FormLabel> <FormLabel>Overall your General Health is:</FormLabel>
<RadioGroup <RadioGroup
name="painDuration" name='painDuration'
sx={{display:'flex', flexDirection:'row'}} defaultValue={
type == 'display'
? patientDataDiplay && patientDataDiplay.generalHealth
: patient.generalHealth
}
sx={{ display: 'flex', flexDirection: 'row' }}
onChange={(event) => { onChange={(event) => {
setValues((prevValues) => ({ setPatient((prevValues) => ({
...prevValues, ...prevValues,
generalHealth: event.target.value, generalHealth: event.target.value,
})); }));
}} }}
> >
<FormControlLabel value="Excellent" control={<Radio />} label="Excellent" /> <FormControlLabel
<FormControlLabel value="Very Good" control={<Radio />} label="Very Good" /> disabled={type == 'display'}
<FormControlLabel value="Good" control={<Radio />} label="Good" /> value='Excellent'
<FormControlLabel value="Fair" control={<Radio />} label="Fair" /> control={<Radio />}
<FormControlLabel value="Poor" control={<Radio />} label="Poor" /> label='Excellent'
/>
<FormControlLabel
disabled={type == 'display'}
value='Very Good'
control={<Radio />}
label='Very Good'
/>
<FormControlLabel
disabled={type == 'display'}
value='Good'
control={<Radio />}
label='Good'
/>
<FormControlLabel
disabled={type == 'display'}
value='Fair'
control={<Radio />}
label='Fair'
/>
<FormControlLabel
disabled={type == 'display'}
value='Poor'
control={<Radio />}
label='Poor'
/>
</RadioGroup> </RadioGroup>
</FormControl> </FormControl>
</Grid> </Grid>
<Grid item xs={12} className='collapsable-form-style-radioButtons-fullwidth'> <Grid
item
xs={12}
className='collapsable-form-style-radioButtons-fullwidth'
>
<FormControl> <FormControl>
<FormLabel>Have you experienced your present problem before?</FormLabel> <FormLabel>
Have you experienced your present problem before?
</FormLabel>
<RadioGroup <RadioGroup
name="painDuration" name='painDuration'
sx={{display:'flex', flexDirection:'row'}} defaultValue={
type == 'display'
? patientDataDiplay && patientDataDiplay.presentProblemBefore
: patient.presentProblemBefore
}
sx={{ display: 'flex', flexDirection: 'row' }}
onChange={(event) => { onChange={(event) => {
setValues((prevValues) => ({ setPatient((prevValues) => ({
...prevValues, ...prevValues,
presentProblemBefore: event.target.value, presentProblemBefore: event.target.value,
})); }));
}} }}
> >
<FormControlLabel value="Yes" control={<Radio />} label="Yes" /> <FormControlLabel
<FormControlLabel value="No" control={<Radio />} label="No" /> disabled={type == 'display'}
value='Yes'
control={<Radio />}
label='Yes'
/>
<FormControlLabel
disabled={type == 'display'}
value='No'
control={<Radio />}
label='No'
/>
</RadioGroup> </RadioGroup>
</FormControl> </FormControl>
</Grid> </Grid>
<Grid
<Grid item xs={4} className='collapsable-form-style-form7'> item
xs={12}
xl={3}
lg={4}
md={6}
sm={12}
className='collapsable-form-style-form7'
>
<TextField <TextField
variant="outlined" variant='outlined'
label="If yes, when?" label='If yes, when?'
name='treatmentGoal' name='treatmentGoal'
disabled={values.presentProblemBefore!=='Yes'} disabled={
patient.presentProblemBefore !== 'Yes' || type == 'display'
}
onChange={(event) => { onChange={(event) => {
setValues((prevValues) => ({ setPatient((prevValues) => ({
...prevValues, ...prevValues,
ifYespresentProblemBefore: event.target.value, ifYespresentProblemBefore: event.target.value,
})); }));
}} }}
/> />
</Grid> </Grid>
<Grid item xs={4} className='collapsable-form-style-form7'> <Grid
item
xs={12}
xl={3}
lg={4}
md={6}
sm={12}
className='collapsable-form-style-form7'
>
<TextField <TextField
variant="outlined" variant='outlined'
label="Was treatment provided?If yes, by whom?" label='Was treatment provided?If yes, by whom?'
name='treatmentGoal' name='treatmentGoal'
disabled={values.presentProblemBefore!=='Yes'} disabled={
patient.presentProblemBefore !== 'Yes' || type == 'display'
}
value={
type == 'display'
? patientDataDiplay && patientDataDiplay.ifYestreatmentProvided
: patient.ifYestreatmentProvided
}
onChange={(event) => { onChange={(event) => {
setValues((prevValues) => ({ setPatient((prevValues) => ({
...prevValues, ...prevValues,
ifYestreatmentProvided: event.target.value, ifYestreatmentProvided: event.target.value,
})); }));
}} }}
/> />
</Grid> </Grid>
<Grid item xs={4} className='collapsable-form-style-form7'> <Grid
item
xs={12}
xl={3}
lg={4}
md={6}
sm={12}
className='collapsable-form-style-form7'
>
<TextField <TextField
variant="outlined" variant='outlined'
label="Outcome?" label='Outcome?'
name='treatmentGoal' name='treatmentGoal'
disabled={values.presentProblemBefore!=='Yes'} disabled={
patient.presentProblemBefore !== 'Yes' || type == 'display'
}
value={
type == 'display'
? patientDataDiplay && patientDataDiplay.ifYesOutcome
: patient.ifYesOutcome
}
onChange={(event) => { onChange={(event) => {
setValues((prevValues) => ({ setPatient((prevValues) => ({
...prevValues, ...prevValues,
ifYesOutcome: event.target.value, ifYesOutcome: event.target.value,
})); }));
@ -126,34 +266,74 @@ export default function PastTreatment5(){
/> />
</Grid> </Grid>
<Grid
<Grid item xs={12} className='collapsable-form-style-radioButtons-fullwidth'> item
xs={12}
className='collapsable-form-style-radioButtons-fullwidth'
>
<FormControl> <FormControl>
<FormLabel>Have you ever had a stroke or issues with blood clotting?</FormLabel> <FormLabel>
Have you ever had a stroke or issues with blood clotting?
</FormLabel>
<RadioGroup <RadioGroup
name="painDuration" name='painDuration'
sx={{display:'flex', flexDirection:'row'}} defaultValue={
type == 'display'
? patientDataDiplay && patientDataDiplay.strokeBloodclotting
: patient.strokeBloodclotting
}
value={
type == 'display'
? patientDataDiplay && patientDataDiplay.strokeBloodclotting
: patient.strokeBloodclotting
}
sx={{ display: 'flex', flexDirection: 'row' }}
onChange={(event) => { onChange={(event) => {
setValues((prevValues) => ({ setPatient((prevValues) => ({
...prevValues, ...prevValues,
strokeBloodclotting: event.target.value, strokeBloodclotting: event.target.value,
})); }));
}} }}
> >
<FormControlLabel value="Yes" control={<Radio />} label="Yes" /> <FormControlLabel
<FormControlLabel value="No" control={<Radio />} label="No" /> disabled={type == 'display'}
value='Yes'
control={<Radio />}
label='Yes'
/>
<FormControlLabel
disabled={type == 'display'}
value='No'
control={<Radio />}
label='No'
/>
</RadioGroup> </RadioGroup>
</FormControl> </FormControl>
</Grid> </Grid>
<Grid item xs={4} className='collapsable-form-style-form7'> <Grid
item
xs={12}
xl={10}
lg={10}
md={10}
sm={12}
className='collapsable-form-style-form7'
>
<TextField <TextField
variant="outlined" variant='outlined'
label="If yes, when?" label='If yes, when?'
name='treatmentGoal' name='treatmentGoal'
disabled={values.strokeBloodclotting!=='Yes'} value={
type == 'display'
? patientDataDiplay && patientDataDiplay.ifYesstrokeBloodclotting
: patient.ifYesstrokeBloodclotting
}
disabled={
patient.strokeBloodclotting !== 'Yes' || type == 'display'
}
onChange={(event) => { onChange={(event) => {
setValues((prevValues) => ({ setPatient((prevValues) => ({
...prevValues, ...prevValues,
ifYesstrokeBloodclotting: event.target.value, ifYesstrokeBloodclotting: event.target.value,
})); }));
@ -161,33 +341,68 @@ export default function PastTreatment5(){
/> />
</Grid> </Grid>
<Grid item xs={12} className='collapsable-form-style-radioButtons-fullwidth'> <Grid
item
xs={12}
className='collapsable-form-style-radioButtons-fullwidth'
>
<FormControl> <FormControl>
<FormLabel>Have you recently experienced dizziness, unexplained fatigue, weight loss or blood loss?</FormLabel> <FormLabel>
Have you recently experienced dizziness, unexplained fatigue,
weight loss or blood loss?
</FormLabel>
<RadioGroup <RadioGroup
name="painDuration" name='painDuration'
sx={{display:'flex', flexDirection:'row'}} sx={{ display: 'flex', flexDirection: 'row' }}
defaultValue={
type == 'display'
? patientDataDiplay && patientDataDiplay.dizzinessFetigue
: patient.dizzinessFetigue
}
onChange={(event) => { onChange={(event) => {
setValues((prevValues) => ({ setPatient((prevValues) => ({
...prevValues, ...prevValues,
dizzinessFetigue: event.target.value, dizzinessFetigue: event.target.value,
})); }));
}} }}
> >
<FormControlLabel value="Yes" control={<Radio />} label="Yes" /> <FormControlLabel
<FormControlLabel value="No" control={<Radio />} label="No" /> disabled={type == 'display'}
value='Yes'
control={<Radio />}
label='Yes'
/>
<FormControlLabel
disabled={type == 'display'}
value='No'
control={<Radio />}
label='No'
/>
</RadioGroup> </RadioGroup>
</FormControl> </FormControl>
</Grid> </Grid>
<Grid item xs={4} className='collapsable-form-style-form7'> <Grid
item
xs={12}
xl={10}
lg={10}
md={10}
sm={12}
className='collapsable-form-style-form7'
>
<TextField <TextField
variant="outlined" variant='outlined'
label="If yes, when?" label='If yes, when?'
name='treatmentGoal' name='treatmentGoal'
disabled={values.dizzinessFetigue!=='Yes'} disabled={patient.dizzinessFetigue !== 'Yes'}
value={
type == 'display'
? patientDataDiplay && patientDataDiplay.ifyesdizzinessFetigue
: patient.ifyesdizzinessFetigue
}
onChange={(event) => { onChange={(event) => {
setValues((prevValues) => ({ setPatient((prevValues) => ({
...prevValues, ...prevValues,
ifyesdizzinessFetigue: event.target.value, ifyesdizzinessFetigue: event.target.value,
})); }));
@ -195,66 +410,129 @@ export default function PastTreatment5(){
/> />
</Grid> </Grid>
<Grid item xs={12} className='collapsable-form-style-radioButtons-fullwidth'> <Grid
item
xs={12}
className='collapsable-form-style-radioButtons-fullwidth'
>
<FormControl> <FormControl>
<FormLabel>Are you currently taking anti-coagulant or blood thinning medication?</FormLabel> <FormLabel>
Are you currently taking anti-coagulant or blood thinning
medication?
</FormLabel>
<RadioGroup <RadioGroup
name="painDuration" name='painDuration'
sx={{display:'flex', flexDirection:'row'}} sx={{ display: 'flex', flexDirection: 'row' }}
defaultValue={
type == 'display'
? patientDataDiplay && patientDataDiplay.antiColligent
: patient.antiColligent
}
onChange={(event) => { onChange={(event) => {
setValues((prevValues) => ({ setPatient((prevValues) => ({
...prevValues, ...prevValues,
antiColligent: event.target.value, antiColligent: event.target.value,
})); }));
}} }}
> >
<FormControlLabel value="Yes" control={<Radio />} label="Yes" /> <FormControlLabel
<FormControlLabel value="No" control={<Radio />} label="No" /> disabled={type == 'display'}
value='Yes'
control={<Radio />}
label='Yes'
/>
<FormControlLabel
disabled={type == 'display'}
value='No'
control={<Radio />}
label='No'
/>
</RadioGroup> </RadioGroup>
</FormControl> </FormControl>
</Grid> </Grid>
<Grid item xs={12} className='collapsable-form-style-radioButtons-fullwidth'> <Grid
item
xs={12}
className='collapsable-form-style-radioButtons-fullwidth'
>
<FormControl> <FormControl>
<FormLabel>Have you ever had any major illness, injuries, hospitalization or surgeries?</FormLabel> <FormLabel>
Have you ever had any major illness, injuries, hospitalization
or surgeries?
</FormLabel>
<RadioGroup <RadioGroup
name="painDuration" name='painDuration'
sx={{display:'flex', flexDirection:'row'}} defaultValue={
type == 'display'
? patientDataDiplay && patientDataDiplay.injuriesHospitalization
: patient.injuriesHospitalization
}
sx={{ display: 'flex', flexDirection: 'row' }}
onChange={(event) => { onChange={(event) => {
setValues((prevValues) => ({ setPatient((prevValues) => ({
...prevValues, ...prevValues,
injuriesHospitalization: event.target.value, injuriesHospitalization: event.target.value,
})); }));
}} }}
> >
<FormControlLabel value="Yes" control={<Radio />} label="Yes" /> <FormControlLabel
<FormControlLabel value="No" control={<Radio />} label="No" /> disabled={type == 'display'}
value='Yes'
control={<Radio />}
label='Yes'
/>
<FormControlLabel
disabled={type == 'display'}
value='No'
control={<Radio />}
label='No'
/>
</RadioGroup> </RadioGroup>
</FormControl> </FormControl>
</Grid> </Grid>
<Grid item xs={12} sx={{marginLeft:2, marginBottom:3}} > <Grid item xs={12} sx={{ marginLeft: 2, marginBottom: 3 }}>
<Table /> <Table
handleFormSection5Data={handleFormSection5Data}
patientDataDiplay={patientDataDiplay}
type={type}
/>
</Grid> </Grid>
<Grid item xs={6} className='collapsable-form-style-multiline'> <Grid
<FormLabel>Please list current supplements or drugs you may be taking:</FormLabel> item
xs={12}
xl={3}
lg={4}
md={6}
sm={12}
className='collapsable-form-style-multiline'
>
<FormLabel>
Please list current supplements or drugs you may be taking:
</FormLabel>
<TextField <TextField
multiline multiline
variant="outlined" variant='outlined'
label="" label=''
name='treatmentGoal' name='treatmentGoal'
defaultValue={
type == 'display'
? patientDataDiplay && patientDataDiplay.supplementsOrDrugs
: patient.supplementsOrDrugs
}
disabled={type == 'display'}
onChange={(event) => { onChange={(event) => {
setValues((prevValues) => ({ setPatient((prevValues) => ({
...prevValues, ...prevValues,
supplementsOrDrugs: event.target.value, supplementsOrDrugs: event.target.value,
})); }));
}} }}
/> />
</Grid> </Grid>
</Grid> </Grid>
</form> </form>
</> </>
) );
} }

View File

@ -1,9 +1,21 @@
import * as React from 'react'; import * as React from 'react';
import Typography from '@mui/material/Typography'; import Typography from '@mui/material/Typography';
import ExpandMoreIcon from '@mui/icons-material/ExpandMore'; import ExpandMoreIcon from '@mui/icons-material/ExpandMore';
import Footer from "../Footer"; import Footer from '../Footer';
import Header from "../Header"; import Header from '../Header';
import {Button, Checkbox, FormControlLabel, FormGroup, FormLabel, Grid, Paper, Radio, RadioGroup, TextField } from '@mui/material'; import {
Box,
Button,
Checkbox,
FormControlLabel,
FormGroup,
FormLabel,
Grid,
Paper,
Radio,
RadioGroup,
TextField,
} from '@mui/material';
import PersonalSection from './PersonalSection1'; import PersonalSection from './PersonalSection1';
import { styled } from '@mui/material/styles'; import { styled } from '@mui/material/styles';
import ArrowForwardIosSharpIcon from '@mui/icons-material/ArrowForwardIosSharp'; import ArrowForwardIosSharpIcon from '@mui/icons-material/ArrowForwardIosSharp';
@ -19,26 +31,15 @@ import PastTreatment5 from './PastTreatment5';
import SystemReviewSection6 from './SyestemReviewSection6'; import SystemReviewSection6 from './SyestemReviewSection6';
import RecreationalHobbiesSection7 from './RecreationalHobbiesSection7'; import RecreationalHobbiesSection7 from './RecreationalHobbiesSection7';
import OtherDetails8 from './OtherDetails8'; import OtherDetails8 from './OtherDetails8';
import PatientImageMarker from '../ImageMarker/PatientImageMarker';
import ViewPatientImageMarker from '../ImageMarker/ViewPatientImageMarker';
import AlertDialog from '../Helper/AlertDialogBox';
import SignatureComponent from '../Helper/SignatureComponent';
import { Link, useLocation } from 'react-router-dom';
interface Patient { const Accordion = styled((props: AccordionProps) => (
fullName: string;
homePhone: string;
cellPhone: string;
email: string;
age: number;
dateOfBirth: string;
socialSecurityNumber: string;
mailingAddress: string;
city: string;
state: string;
zipCode: string;
gender: string;
maritalStatus: string;
}
const Accordion = styled((props: AccordionProps) => (
<MuiAccordion disableGutters elevation={0} square {...props} /> <MuiAccordion disableGutters elevation={0} square {...props} />
))(({ theme }) => ({ ))(({ theme }) => ({
border: `1px solid ${theme.palette.divider}`, border: `1px solid ${theme.palette.divider}`,
'&:not(:last-child)': { '&:not(:last-child)': {
borderBottom: 0, borderBottom: 0,
@ -46,14 +47,14 @@ interface Patient {
'&:before': { '&:before': {
display: 'none', display: 'none',
}, },
})); }));
const AccordionSummary = styled((props: AccordionSummaryProps) => ( const AccordionSummary = styled((props: AccordionSummaryProps) => (
<MuiAccordionSummary <MuiAccordionSummary
expandIcon={<ArrowForwardIosSharpIcon sx={{ fontSize: '0.9rem' }} />} expandIcon={<ArrowForwardIosSharpIcon sx={{ fontSize: '0.9rem' }} />}
{...props} {...props}
/> />
))(({ theme }) => ({ ))(({ theme }) => ({
backgroundColor: backgroundColor:
theme.palette.mode === 'dark' theme.palette.mode === 'dark'
? 'rgba(255, 255, 255, .05)' ? 'rgba(255, 255, 255, .05)'
@ -65,36 +66,342 @@ interface Patient {
'& .MuiAccordionSummary-content': { '& .MuiAccordionSummary-content': {
marginLeft: theme.spacing(1), marginLeft: theme.spacing(1),
}, },
})); }));
const AccordionDetails = styled(MuiAccordionDetails)(({ theme }) => ({ const AccordionDetails = styled(MuiAccordionDetails)(({ theme }) => ({
padding: theme.spacing(2), padding: theme.spacing(2),
borderTop: '1px solid rgba(0, 0, 0, .125)', borderTop: '1px solid rgba(0, 0, 0, .125)',
})); }));
export default function PatientForm(){ type Props = {
type: any;
};
export default function PatientForm({ type }: Props) {
const [alertProps, setAlertProps] = React.useState<any>({});
const [expanded, setExpanded] = React.useState<string | false>('panel1'); const [expanded, setExpanded] = React.useState<string | false>('panel1');
const [isChecked, setIsChecked] = React.useState(false); const [isChecked, setIsChecked] = React.useState(false);
const [signature,setSignature]=React.useState(''); const [signature, setSignature] = React.useState<any>();
const [section1Data, setSection1Data] = React.useState<any>({});
const [section2Data, setSection2Data] = React.useState<any>({});
const [section3Data, setSection3Data] = React.useState<any>({});
const [section4Data, setSection4Data] = React.useState<any>({});
const [section5Data, setSection5Data] = React.useState<any>({});
const [section6Data, setSection6Data] = React.useState<any>({});
const [section7Data, setSection7Data] = React.useState<any>({});
const [section8Data, setSection8Data] = React.useState<any>({});
const [allPatientData, setAllPatientData] = React.useState<any>([]);
const [patientDetailsButtonFlag, setPatientDetailsButtonFlag ] = React.useState<boolean>(false)
const [patient, setPatient] = React.useState<Patient>({ const handleFormSection1Data = (
fullName: "", fullName?: string | undefined,
homePhone: "", homePhone?: string | undefined,
cellPhone: "", cellPhone?: string | undefined,
email: "", email?: string | undefined,
age: 0, age?: number | undefined | string,
dateOfBirth: "", dateOfBirth?: string | undefined,
socialSecurityNumber: "", socialSecurityNumber?: string | undefined,
mailingAddress: "", mailingAddress?: string | undefined,
city: "", city?: string | undefined,
state: "", state?: string | undefined,
zipCode: "", zipCode?: string | undefined,
gender: "", gender?: string | undefined
maritalStatus: "", ) => {
setSection1Data({
fullName,
homePhone,
cellPhone,
email,
age,
dateOfBirth,
socialSecurityNumber,
mailingAddress,
city,
state,
zipCode,
gender,
}); });
};
const handleSubmit = (event: React.FormEvent<HTMLFormElement>) => { const handleFormSection2Data = (
event.preventDefault(); maritalStatus: string | undefined,
numberOfChildren: string | undefined,
occupation: string | undefined,
hoursPerWeek: number | string | undefined,
employer: string | undefined,
businessPhone: string | undefined,
spouseName: string | undefined,
spouseEmployer: string | undefined,
spouseBusinessPhone: string | undefined,
emergencyContact: string | undefined,
relationship: string | undefined,
spousePhone: string | undefined
) => {
setSection2Data({
maritalStatus,
numberOfChildren,
occupation,
hoursPerWeek,
employer,
businessPhone,
spouseName,
spouseEmployer,
spouseBusinessPhone,
emergencyContact,
relationship,
spousePhone,
});
};
const handleFormSection3Data = (
physicianname: string | undefined,
physiciancity: string | undefined,
physicianstate: string | undefined,
physicianphone: string | undefined,
chiropractorName: string | undefined,
chiropractorState: string | undefined,
xray: string | undefined,
haveChiropractor: string | undefined,
reference: string | undefined,
visitDetails: string | undefined,
cellPhoneProvider: string | undefined
) => {
setSection3Data({
physicianname,
physiciancity,
physicianstate,
physicianphone,
chiropractorName,
chiropractorState,
xray,
haveChiropractor,
reference,
visitDetails,
cellPhoneProvider,
});
};
const handleFormSection4Data = (
chiefComplaint: string | undefined,
painWorse: any,
painBetter: any,
painQuality: any,
painWorstTime: any,
currentComplaintIssues: any,
painDuration: string | undefined,
currentTreatment: string | undefined,
treatmentGoal: string | undefined,
selfTreatment: string | undefined
) => {
setSection4Data({
chiefComplaint,
painWorse,
painBetter,
painQuality,
painWorstTime,
currentComplaintIssues,
painDuration,
currentTreatment,
treatmentGoal,
selfTreatment,
});
};
const handleFormSection5Data = (
generalHealth: string | undefined,
presentProblemBefore: string | undefined,
ifYespresentProblemBefore: string | undefined,
ifYestreatmentProvided: string | undefined,
ifYesOutcome: string | undefined,
strokeBloodclotting: string | undefined,
ifYesstrokeBloodclotting: string | undefined,
dizzinessFetigue: string | undefined,
ifyesdizzinessFetigue: string | undefined,
antiColligent: string | undefined,
injuriesHospitalization: string | undefined,
supplementsOrDrugs: string | undefined
) => {
setSection5Data({
generalHealth,
presentProblemBefore,
ifYespresentProblemBefore,
ifYestreatmentProvided,
ifYesOutcome,
strokeBloodclotting,
ifYesstrokeBloodclotting,
dizzinessFetigue,
ifyesdizzinessFetigue,
antiColligent,
injuriesHospitalization,
supplementsOrDrugs,
});
};
const handleFormSection6Data = (
eyes: string | undefined,
IntestinesBowls: string | undefined,
jointsBones: string | undefined,
allergies: string | undefined,
earsNoseMouth: string | undefined,
urinary: string | undefined,
skin: string | undefined,
psychological: string | undefined,
heart: string | undefined,
muscles: string | undefined,
internalOrgans: string | undefined,
gynecological: string | undefined,
lungsBreathing: string | undefined,
nerves: string | undefined,
blood: string | undefined,
prostate: string | undefined,
explanation: string | undefined
) => {
setSection6Data({
eyes,
IntestinesBowls,
jointsBones,
allergies,
earsNoseMouth,
urinary,
skin,
psychological,
heart,
muscles,
internalOrgans,
gynecological,
lungsBreathing,
nerves,
blood,
prostate,
explanation,
});
};
const handleFormSection7Data = (
hobbies: string | undefined,
educationLevel: string | undefined,
excercise: string | undefined,
excerciseExplanation: string | undefined,
tobacco: string | undefined,
tobaccoExplanation: string | undefined,
alcohol: string | undefined,
alcoholExplanation: string | undefined,
healthyDiet: string | undefined,
healthyDietExplanation: string | undefined,
sleep: string | undefined,
sleepExplanation: string | undefined,
workSchool: string | undefined,
workSchoolExplanation: string | undefined,
familyLife: string | undefined,
familyLifeExplanation: string | undefined,
drugs: string | undefined,
drugsExplanation: string | undefined
) => {
setSection7Data({
hobbies,
educationLevel,
excercise,
excerciseExplanation,
tobacco,
tobaccoExplanation,
alcohol,
alcoholExplanation,
healthyDiet,
healthyDietExplanation,
sleep,
sleepExplanation,
workSchool,
workSchoolExplanation,
familyLife,
familyLifeExplanation,
drugs,
drugsExplanation,
});
};
const handleFormSection8Data = (
familyHistory: string | undefined,
sleep: string | undefined,
pillow: string | undefined,
orthotics: string | undefined,
brestExam: any,
pregnancy: string | undefined,
menstralCycle: any
) => {
setSection8Data({
familyHistory,
sleep,
pillow,
orthotics,
brestExam,
pregnancy,
menstralCycle,
});
};
const handleSubmit = () => {
const saved = JSON.parse(localStorage.getItem('entry') || '{}');
const newPatientData = {
personalInformation: section1Data,
familyInformation: section2Data,
medicalHistory: section3Data,
injuryDetails: section4Data,
pastTreatment: section5Data,
systemReviewQuestions: section6Data,
recreationalActivities: section7Data,
otherDetails: section8Data,
injuryPainDetails: saved.entries,
signature: signature,
};
// Create a copy of the existing data array and push the new patient data
const updatedAllPatientData = [...allPatientData, newPatientData];
// Update the state with the new array
setAllPatientData(updatedAllPatientData);
localStorage.setItem('patientData', JSON.stringify(newPatientData));
if (
section1Data.fullName !== '' &&
section1Data.cellPhone &&
/^\d{10}$/.test(section1Data.cellPhone) &&
section1Data.email &&
/^\S+@\S+\.\S+$/.test(section1Data.email) &&
section1Data.age &&
section1Data.age !== '' &&
Number(section1Data.age) >= 0 &&
section1Data.mailingAddress &&
section1Data.mailingAddress !== ''
) {
TextFile();
setPatientDetailsButtonFlag(true)
setAlertProps({
open: true,
severity: 'success',
message: 'The patient details have been submitted!',
duration: 5000,
});
} else {
setAlertProps({
open: true,
severity: 'error',
message: 'Please fill all the mandatory fields with valid data!',
duration: 4000,
});
}
};
const TextFile = () => {
const element = document.createElement('a');
//@ts-ignore
const textFile = new Blob([localStorage.getItem('patientData')], {
type: 'text/json',
});
element.href = URL.createObjectURL(textFile);
element.download = 'patientData.json';
document.body.appendChild(element);
element.click();
}; };
const handleExpandChange = const handleExpandChange =
@ -102,149 +409,358 @@ export default function PatientForm(){
setExpanded(newExpanded ? panel : false); setExpanded(newExpanded ? panel : false);
}; };
const handleCheckboxChange = (event:any) => { const handleCheckboxChange = (event: any) => {
setIsChecked(event.target.checked); setIsChecked(event.target.checked);
}; };
const handleAlertClose = () => {
setAlertProps({});
};
return( const patientData = localStorage.getItem('patientData')
? //@ts-ignore
JSON.parse(localStorage.getItem('patientData'))
: [];
return (
<> <>
{alertProps && alertProps.open && (
<AlertDialog
open={alertProps.open}
message={alertProps.message}
severity={alertProps.severity}
duration={alertProps.duration}
handleAlertClose={handleAlertClose}
/>
)}
<Paper elevation={0} className='app-screen-constants'> <Paper elevation={0} className='app-screen-constants'>
<Header/> <Header />
<Paper elevation={0} sx={{margin:4, minHeight:550}} > <Paper elevation={0} sx={{ margin: '2%', minHeight: 550 }}>
<form onSubmit={handleSubmit}> {/* <form onSubmit={handleSubmit}> */}
<Typography sx={{fontSize:20}} gutterBottom> <Typography sx={{ fontSize: 20 }} gutterBottom>
Confidential Patient Information Confidential Patient Information
</Typography> </Typography>
<Grid> <Grid>
<Accordion expanded={expanded === 'panel1'} onChange={handleExpandChange('panel1')}> <Accordion
expanded={expanded === 'panel1'}
<AccordionSummary onChange={handleExpandChange('panel1')}
expandIcon={<ExpandMoreIcon />}
aria-controls="panel1a-content"
id="panel1a-header"
> >
<Typography sx={{fontSize:18}}>Patient's Personal Information</Typography> <AccordionSummary
// expandIcon={<ExpandMoreIcon />}
aria-controls='panel1a-content'
id='panel1a-header'
>
<Typography sx={{ fontSize: 18 }}>
Patient's Personal Information
</Typography>
</AccordionSummary> </AccordionSummary>
<AccordionDetails> <AccordionDetails>
<PersonalSection/> <PersonalSection
</AccordionDetails> handleFormSection1Data={handleFormSection1Data}
patientDataDiplay={patientData.personalInformation}
</Accordion> type={type}
/>
<Accordion expanded={expanded === 'panel2'} onChange={handleExpandChange('panel2')}>
<AccordionSummary aria-controls="panel2d-content" id="panel2d-header">
<Typography sx={{fontSize:18}}>Patient's Family Information</Typography>
</AccordionSummary>
<AccordionDetails>
<FamilyFormSection/>
</AccordionDetails> </AccordionDetails>
</Accordion> </Accordion>
<Accordion expanded={expanded === 'panel3'} onChange={handleExpandChange('panel3')}> <Accordion
<AccordionSummary aria-controls="panel3d-content" id="panel3d-header"> expanded={expanded === 'panel2'}
<Typography sx={{fontSize:18}}>Patient's Medical History Information</Typography> onChange={handleExpandChange('panel2')}
>
<AccordionSummary
aria-controls='panel2d-content'
id='panel2d-header'
>
<Typography sx={{ fontSize: 18 }}>
Patient's Family Information
</Typography>
</AccordionSummary> </AccordionSummary>
<AccordionDetails> <AccordionDetails>
<MedicalHistory/> <FamilyFormSection
handleFormSection2Data={handleFormSection2Data}
patientDataDiplay={patientData.familyInformation}
type={type}
/>
</AccordionDetails> </AccordionDetails>
</Accordion> </Accordion>
<Accordion expanded={expanded === 'panel4'} onChange={handleExpandChange('panel4')}> <Accordion
<AccordionSummary aria-controls="panel4d-content" id="panel4d-header"> expanded={expanded === 'panel3'}
<Typography sx={{fontSize:18}}>Patient's Injury Details</Typography> onChange={handleExpandChange('panel3')}
>
<AccordionSummary
aria-controls='panel3d-content'
id='panel3d-header'
>
<Typography sx={{ fontSize: 18 }}>
Patient's Medical History Information
</Typography>
</AccordionSummary> </AccordionSummary>
<AccordionDetails> <AccordionDetails>
<PainAnalysisSection4/> <MedicalHistory
handleFormSection3Data={handleFormSection3Data}
patientDataDiplay={patientData.medicalHistory}
type={type}
/>
</AccordionDetails> </AccordionDetails>
</Accordion> </Accordion>
<Accordion expanded={expanded === 'panel5'} onChange={handleExpandChange('panel5')}> <Accordion
<AccordionSummary aria-controls="panel5d-content" id="panel5d-header"> expanded={expanded === 'panel9'}
<Typography sx={{fontSize:18}}>Patient's Past Treatment Details</Typography> onChange={handleExpandChange('panel9')}
>
<AccordionSummary
aria-controls='panel9d-content'
id='panel9d-header'
>
<Typography sx={{ fontSize: 18 }}>
Patient's Pain Zone
</Typography>
</AccordionSummary> </AccordionSummary>
<AccordionDetails> <AccordionDetails>
<PastTreatment5/> {type === 'fill' ? (
<PatientImageMarker />
) : (
<ViewPatientImageMarker />
)}
</AccordionDetails> </AccordionDetails>
</Accordion> </Accordion>
<Accordion expanded={expanded === 'panel6'} onChange={handleExpandChange('panel6')}> <Accordion
<AccordionSummary aria-controls="panel6d-content" id="panel6d-header"> expanded={expanded === 'panel4'}
<Typography sx={{fontSize:18}}>System Review Questions</Typography> onChange={handleExpandChange('panel4')}
>
<AccordionSummary
aria-controls='panel4d-content'
id='panel4d-header'
>
<Typography sx={{ fontSize: 18 }}>
Patient's Injury Details
</Typography>
</AccordionSummary> </AccordionSummary>
<AccordionDetails> <AccordionDetails>
<SystemReviewSection6/> <PainAnalysisSection4
handleFormSection4Data={handleFormSection4Data}
patientDataDiplay={patientData.injuryDetails}
type={type}
/>
</AccordionDetails> </AccordionDetails>
</Accordion> </Accordion>
<Accordion expanded={expanded === 'panel7'} onChange={handleExpandChange('panel7')}> <Accordion
<AccordionSummary aria-controls="panel7d-content" id="panel7d-header"> expanded={expanded === 'panel5'}
<Typography sx={{fontSize:18}}>Recreational Activities/Hobbies Details</Typography> onChange={handleExpandChange('panel5')}
>
<AccordionSummary
aria-controls='panel5d-content'
id='panel5d-header'
>
<Typography sx={{ fontSize: 18 }}>
Patient's Past Treatment Details
</Typography>
</AccordionSummary> </AccordionSummary>
<AccordionDetails> <AccordionDetails>
<RecreationalHobbiesSection7/> <PastTreatment5
handleFormSection5Data={handleFormSection5Data}
patientDataDiplay={patientData.pastTreatment}
type={type}
/>
</AccordionDetails> </AccordionDetails>
</Accordion> </Accordion>
<Accordion expanded={expanded === 'panel8'} onChange={handleExpandChange('panel8')}> <Accordion
<AccordionSummary aria-controls="panel8d-content" id="panel8d-header"> expanded={expanded === 'panel6'}
<Typography sx={{fontSize:18}}>Other Details</Typography> onChange={handleExpandChange('panel6')}
>
<AccordionSummary
aria-controls='panel6d-content'
id='panel6d-header'
>
<Typography sx={{ fontSize: 18 }}>
System Review Questions
</Typography>
</AccordionSummary> </AccordionSummary>
<AccordionDetails> <AccordionDetails>
<OtherDetails8/> <SystemReviewSection6
handleFormSection6Data={handleFormSection6Data}
patientDataDiplay={patientData.systemReviewQuestions}
type={type}
/>
</AccordionDetails>
</Accordion>
<Accordion
expanded={expanded === 'panel7'}
onChange={handleExpandChange('panel7')}
>
<AccordionSummary
aria-controls='panel7d-content'
id='panel7d-header'
>
<Typography sx={{ fontSize: 18 }}>
Recreational Activities/Hobbies Details
</Typography>
</AccordionSummary>
<AccordionDetails>
<RecreationalHobbiesSection7
handleFormSection7Data={handleFormSection7Data}
patientDataDiplay={patientData.recreationalActivities}
type={type}
/>
</AccordionDetails>
</Accordion>
<Accordion
expanded={expanded === 'panel8'}
onChange={handleExpandChange('panel8')}
>
<AccordionSummary
aria-controls='panel8d-content'
id='panel8d-header'
>
<Typography sx={{ fontSize: 18 }}>Other Details</Typography>
</AccordionSummary>
<AccordionDetails>
<OtherDetails8
handleFormSection8Data={handleFormSection8Data}
patientDataDiplay={patientData.otherDetails}
type={type}
/>
</AccordionDetails> </AccordionDetails>
</Accordion> </Accordion>
<Grid container> <Grid container>
<Grid item xs={12} className='collapsable-form-style-multiline'> <Grid item xs={12} className='collapsable-form-style-multiline'>
<FormGroup sx={{ marginTop: 3 }}> <FormGroup sx={{ marginTop: 3 }}>
<FormControlLabel <FormControlLabel
required required
control={<Checkbox checked={isChecked} onChange={handleCheckboxChange} />} disabled={type == 'display'}
label="I hereby state that all the information I have provided is complete and truthful and that I have fully disclosed my health history." control={
<Checkbox
checked={type === 'display' ? true : isChecked}
onChange={handleCheckboxChange}
/>
}
label='I hereby state that all the information I have provided is complete and truthful and that I have fully disclosed my health history.'
/> />
</FormGroup> </FormGroup>
</Grid> </Grid>
<Grid item xs={6} className='collapsable-form-style'> <Grid item xs={12}>
<TextField <Grid container spacing={2} flexDirection={'row'}>
{type !== 'display' ? (
<>
variant="outlined" <Grid item className='collapsable-form-style'>
label="SIGNATURE" <FormLabel sx={{marginLeft:'10px'}}> Signature:</FormLabel>
name='treatmentGoal' <SignatureComponent signature={signature} setSignature={setSignature} />
placeholder='Please type your name' </Grid>
onChange={(event) => {
setSignature(event.target.value) <Grid item>
<FormLabel sx={{ margin: 0, padding: 0 }}>
Please verify your signature here:
</FormLabel>
<Box
sx={{
border: '1px solid black',
borderRadius: 2,
height: '110px',
width: '250px',
}} }}
>
<img
src={signature}
style={{ height: '110px', width: '250px' }}
/> />
</Box>
</Grid>
</>
) : (
<Grid item>
<FormLabel sx={{ margin: 0, padding: 0 }}>
Your signature:
</FormLabel>
<Box
sx={{
border: '1px solid black',
borderRadius: 2,
height: '110px',
width: '250px',
}}
>
<img
src={patientData.signature}
style={{ height: '110px', width: '250px' }}
/>
</Box>
</Grid>
)}
</Grid> </Grid>
</Grid> </Grid>
<Grid> </Grid>
<Grid container flexDirection={'row-reverse'}>
{patientDetailsButtonFlag && type!=='display'?
<Grid item>
<Button <Button
type="submit" variant='contained'
variant="contained" color='primary'
color="primary" sx={{ margin: 5, width: '200px' }}
sx={{ margin: 5, left: '40%', width: '200px' }} onClick={(e)=>{
disabled={isChecked==false || signature==''}
}}
component={Link}
to='/view-details'
>
View Patient Details
</Button>
</Grid>:null}
{type=='display'?
<Grid item>
<Button
variant='contained'
color='primary'
sx={{ margin: 5, width: '200px' }}
onClick={(e)=>{
}}
component={Link}
to='/'
>
New Patient Form
</Button>
</Grid>:null}
<Grid item>
<Button
variant='contained'
color='primary'
sx={{ margin: 5, width: '200px' }}
disabled={
isChecked == false ||
signature == undefined ||
type == 'display'
}
onClick={handleSubmit}
> >
Submit Submit
</Button> </Button>
</Grid> </Grid>
</Grid> </Grid>
</form> </Grid>
{/* </form> */}
</Paper> </Paper>
<Footer/> <Footer />
</Paper> </Paper>
</> </>
) );
} }

View File

@ -1,9 +1,18 @@
import * as React from 'react'; import * as React from 'react';
import { Button, FormControl, FormControlLabel, FormLabel, Grid, Paper, Radio, RadioGroup, TextField } from '@mui/material'; import {
import { useFormik } from "formik"; Button,
import * as yup from "yup"; FormControl,
FormControlLabel,
FormLabel,
Grid,
Paper,
Radio,
RadioGroup,
TextField,
} from '@mui/material';
import { LocalizationProvider, DatePicker } from '@mui/x-date-pickers'; import { LocalizationProvider, DatePicker } from '@mui/x-date-pickers';
import { AdapterDayjs } from '@mui/x-date-pickers/AdapterDayjs'; import { AdapterDayjs } from '@mui/x-date-pickers/AdapterDayjs';
import { useEffect } from 'react';
interface Patient { interface Patient {
fullName: string; fullName: string;
@ -18,251 +27,513 @@ interface Patient {
state: string; state: string;
zipCode: string; zipCode: string;
gender: string; gender: string;
maritalStatus: string; }
}
const validationSchema = yup.object({ type Props = {
fullName: yup.string().required("Full name is required"), handleFormSection1Data: (
homePhone: yup.string().matches(/^\d{10}$/, "Home phone must be 10 digits"), fullName?: string | undefined,
cellPhone: yup.string().required("Phone number is required").matches(/^\d{10}$/, "Cell phone must be 10 digits"), homePhone?: string | undefined,
email: yup.string().required("Email is required"), cellPhone?: string | undefined,
age: yup.number().positive().integer("Age must be a positive integer").required("Age is required"), email?: string | undefined,
dateOfBirth: yup.date().required("Date of birth is required"), age?: number | undefined | string,
socialSecurityNumber: yup.string(), dateOfBirth?: string | undefined,
mailingAddress: yup.string().required("Mailing address is required"), socialSecurityNumber?: string | undefined,
city: yup.string().required("City is required"), mailingAddress?: string | undefined,
state: yup.string().required("State is required"), city?: string | undefined,
zipCode: yup.string().matches(/^\d{6}$/, "Zip code must be 6 digits").required("Zip code is required") state?: string | undefined,
zipCode?: string | undefined,
gender?: string | undefined
) => void;
patientDataDiplay: any;
type: string;
};
export default function PersonalSection({
handleFormSection1Data,
patientDataDiplay,
type,
}: Props) {
const [birthDateValue, setBirthDateValue] = React.useState<any>();
const [patient, setPatient] = React.useState<any>({
fullName: '',
fullNameError: false,
homePhone: '',
cellPhone: '',
cellPhoneError: false,
email: '',
emailError: false,
age: '',
ageError: false,
dateOfBirth: birthDateValue,
socialSecurityNumber: '',
mailingAddress: '',
mailingAddressFalse: false,
city: '',
state: '',
zipCode: '',
gender: 'male',
}); });
export default function PersonalSection(){ useEffect(() => {
handleFormSection1Data(
patient.fullName,
patient.homePhone,
patient.cellPhone,
patient.email,
patient.age,
birthDateValue,
patient.socialSecurityNumber,
patient.mailingAddress,
patient.city,
patient.state,
patient.zipCode,
patient.gender
);
}, [patient]);
const [startDateValue, setStartDateValue] = React.useState<any>(); return (
const [emailValue, setEmailValue]= React.useState<string>('');
const [patient, setPatient] = React.useState<Patient>({
fullName: "",
homePhone: "",
cellPhone: "",
email: "",
age: 0,
dateOfBirth: "",
socialSecurityNumber: "",
mailingAddress:"",
city: "",
state: "",
zipCode: "",
gender: "male",
maritalStatus: "",
});
const formik = useFormik<Patient>({
initialValues: {
fullName: "",
homePhone: "",
cellPhone: "",
email: "",
age: "",
dateOfBirth: "",
socialSecurityNumber: "",
mailingAddress:"",
city: "",
state: "",
zipCode: "",
gender: "male",
maritalStatus: "",
},
validationSchema,
onSubmit: (values) => {
// Do something with the patient data
console.log(values);
},
});
const handleChange = (event: React.ChangeEvent<HTMLInputElement>) => {
console.log("dsfsdfsdf",event.target.value)
const { name, value } = event.target;
setPatient((prevPatient) => ({
...prevPatient,
[name]: value,
}));
};
return(
<> <>
<Grid container direction="row" className='section1-test-class'> <Grid container direction='row' className='section1-test-class'>
<Grid item xs={4} className='collapsable-form-style '> <Grid
item
xs={12}
xl={3}
lg={4}
md={6}
sm={12}
className='collapsable-form-style '
>
<TextField <TextField
variant="outlined" variant='outlined'
label="Patient's Full Name" label="Patient's Full Name"
name="fullName" name='fullName'
placeholder='Please enter your name' placeholder='Please enter your name'
value={formik.values.fullName} value={
onChange={formik.handleChange} type == 'display' ? patientDataDiplay && patientDataDiplay.fullName : patient.fullName
onBlur={formik.handleBlur} }
error={formik.touched.fullName && Boolean(formik.errors.fullName)} disabled={type == 'display'}
helperText={formik.touched.fullName && formik.errors.fullName} onChange={(e) => {
required setPatient((prevValues: any) => ({
/> ...prevValues,
</Grid> fullName: e.target.value,
}));
<Grid item xs={4} className='collapsable-form-style'>
<TextField
required
variant="outlined"
label="Phone Number"
name="cellPhone"
placeholder='Please enter your cell Phone number'
value={formik.values.cellPhone}
onChange={formik.handleChange}
onBlur={formik.handleBlur}
error={formik.touched.cellPhone && Boolean(formik.errors.cellPhone)}
helperText={formik.touched.cellPhone && formik.errors.cellPhone}
/>
</Grid>
<Grid item xs={4} className='collapsable-form-style'>
<TextField
variant="outlined"
label="Home Phone Number"
name="homePhone"
placeholder='Please enter your home phone'
value={formik.values.homePhone}
onChange={formik.handleChange}
onBlur={formik.handleBlur}
error={formik.touched.homePhone && Boolean(formik.errors.homePhone)}
helperText={formik.touched.homePhone && formik.errors.homePhone}
/>
</Grid>
<Grid item xs={4} className='collapsable-form-style'>
<TextField
variant="outlined"
label="Email"
name="email"
placeholder='Please enter your email'
value={emailValue}
onChange={(e)=>{
setEmailValue(e.target.value)
}} }}
onBlur={formik.handleBlur} onBlur={(e) => {
// error={formik.touched.email && Boolean(formik.errors.email)} if (e.target.value === '') {
// helperText={formik.touched.email && formik.errors.email} setPatient((prevValues: any) => ({
...prevValues,
fullNameError: true,
}));
} else {
setPatient((prevValues: any) => ({
...prevValues,
fullNameError: false,
}));
}
}}
required
error={patient.fullNameError}
helperText={patient.fullNameError ? 'Please enter your name' : ''}
/> />
</Grid> </Grid>
<Grid item xs={4} className='collapsable-form-style'>
<Grid
item
xs={12}
xl={3}
lg={4}
md={6}
sm={12}
className='collapsable-form-style'
>
<TextField <TextField
required required
variant="outlined" variant='outlined'
label="Age" label='Phone Number'
name="age" name='cellPhone'
type="number" type='number'
placeholder='Please enter your age' placeholder='Please enter your cell Phone number'
value={formik.values.age} value={
onChange={formik.handleChange} type == 'display'
onBlur={formik.handleBlur} ? patientDataDiplay && patientDataDiplay.cellPhone
error={formik.touched.age && Boolean(formik.errors.age)} : patient.cellPhone
helperText={formik.touched.age && formik.errors.age} }
disabled={type == 'display'}
onChange={(e) => {
let value = e.target.value;
if (value[0] === '0') {
value = value.slice(1);
}
setPatient((prevValues: any) => ({
...prevValues,
cellPhone: value,
}));
}}
onBlur={(e) => {
if (!/^\d{10}$/.test(e.target.value)) {
setPatient((prevValues: any) => ({
...prevValues,
cellPhoneError: true,
}));
} else {
setPatient((prevValues: any) => ({
...prevValues,
cellPhoneError: false,
}));
}
}}
error={patient.cellPhoneError}
helperText={
patient.cellPhoneError
? 'Please enter a valid 10-digit phone number'
: ''
}
/> />
</Grid> </Grid>
<Grid item xs={4} className='collapsable-form-style'>
<FormControl >
<Grid
item
xs={12}
xl={3}
lg={4}
md={6}
sm={12}
className='collapsable-form-style'
>
<TextField
variant='outlined'
label='Home Phone Number'
name='homePhone'
type='number'
placeholder='Please enter your home phone'
value={
type == 'display'
? patientDataDiplay && patientDataDiplay.homePhone
: patient.homePhone
}
disabled={type == 'display'}
onChange={(e) => {
setPatient((prevValues: any) => ({
...prevValues,
homePhone: e.target.value,
}));
}}
// error={!(/^\d{10}$/.test(patient.homePhone))}
// helperText={!(/^\d{10}$/.test(patient.homePhone)) ? "Please enter a valid 10-digit phone number" : ""}
/>
</Grid>
<Grid
item
xs={12}
xl={3}
lg={4}
md={6}
sm={12}
className='collapsable-form-style'
>
<TextField
required
variant='outlined'
label='Email'
name='email'
placeholder='Please enter your email'
value={type == 'display' ? patientDataDiplay && patientDataDiplay.email : patient.email}
disabled={type == 'display'}
onChange={(e) => {
setPatient((prevValues: any) => ({
...prevValues,
email: e.target.value,
}));
}}
onBlur={(e) => {
if (!/^\S+@\S+\.\S+$/.test(e.target.value)) {
setPatient((prevValues: any) => ({
...prevValues,
emailError: true,
}));
} else {
setPatient((prevValues: any) => ({
...prevValues,
emailError: false,
}));
}
}}
error={patient.emailError}
helperText={
patient.emailError ? 'Please enter a valid email address' : ''
}
/>
</Grid>
<Grid
item
xs={12}
xl={3}
lg={4}
md={6}
sm={12}
className='collapsable-form-style'
>
<TextField
required
variant='outlined'
label='Age'
name='age'
type='number'
placeholder='Please enter your age'
value={type == 'display' ? patientDataDiplay && patientDataDiplay.age : patient.age}
disabled={type == 'display'}
onChange={(e) => {
setPatient((prevValues: any) => ({
...prevValues,
age: e.target.value,
}));
}}
onBlur={(e) => {
if (e.target.value === '') {
setPatient((prevValues: any) => ({
...prevValues,
ageError: true,
}));
} else {
setPatient((prevValues: any) => ({
...prevValues,
ageError: false,
}));
}
}}
error={patient.ageError}
helperText={patient.ageError ? 'Please enter your age' : ''}
/>
</Grid>
<Grid
item
xs={12}
xl={3}
lg={4}
md={6}
sm={12}
className='collapsable-form-style'
>
<FormControl>
<LocalizationProvider dateAdapter={AdapterDayjs}> <LocalizationProvider dateAdapter={AdapterDayjs}>
<DatePicker <DatePicker
label="Date of Birth" label='Date of Birth'
value={startDateValue} value={
type == 'display'
? patientDataDiplay && patientDataDiplay.dateOfBirth
: birthDateValue
}
disabled={type == 'display'}
onChange={(newValue) => { onChange={(newValue) => {
setStartDateValue(newValue); setBirthDateValue(newValue);
}} }}
renderInput={(params) => <TextField required variant="outlined" {...params} />} renderInput={(params) => (
<TextField variant='outlined' {...params} />
)}
/> />
</LocalizationProvider> </LocalizationProvider>
</FormControl> </FormControl>
</Grid> </Grid>
<Grid item xs={4} className='collapsable-form-style'>
<Grid
item
xs={12}
xl={3}
lg={4}
md={6}
sm={12}
className='collapsable-form-style'
>
<TextField <TextField
variant="outlined" variant='outlined'
label="Social Security Number" label='Social Security Number'
name="socialSecurityNumber" name='socialSecurityNumber'
value={formik.values.socialSecurityNumber} value={
onChange={formik.handleChange} type == 'display'
onBlur={formik.handleBlur} ? patientDataDiplay && patientDataDiplay.socialSecurityNumber
error={formik.touched.socialSecurityNumber && Boolean(formik.errors.socialSecurityNumber)} : patient.socialSecurityNumber
helperText={formik.touched.socialSecurityNumber && formik.errors.socialSecurityNumber} }
disabled={type == 'display'}
onChange={(e) => {
setPatient((prevValues: any) => ({
...prevValues,
socialSecurityNumber: e.target.value,
}));
}}
// onBlur={formik.handleBlur}
// error={formik.touched.socialSecurityNumber && Boolean(formik.errors.socialSecurityNumber)}
// helperText={formik.touched.socialSecurityNumber && formik.errors.socialSecurityNumber}
/> />
</Grid> </Grid>
<Grid item xs={4} className='collapsable-form-style'> <Grid
item
xs={12}
xl={3}
lg={4}
md={6}
sm={12}
className='collapsable-form-style'
>
<TextField <TextField
required required
variant="outlined" variant='outlined'
label="Mailing Address" label='Mailing Address'
name="mailingAddress" name='mailingAddress'
value={formik.values.mailingAddress} value={
onChange={formik.handleChange} type == 'display'
onBlur={formik.handleBlur} ? patientDataDiplay && patientDataDiplay.mailingAddress
error={formik.touched.mailingAddress && Boolean(formik.errors.mailingAddress)} : patient.mailingAddress
helperText={formik.touched.mailingAddress && formik.errors.mailingAddress} }
disabled={type == 'display'}
onChange={(e) => {
setPatient((prevValues: any) => ({
...prevValues,
mailingAddress: e.target.value,
}));
}}
onBlur={(e) => {
if (e.target.value === '') {
setPatient((prevValues: any) => ({
...prevValues,
mailingAddressError: true,
}));
} else {
setPatient((prevValues: any) => ({
...prevValues,
mailingAddressError: false,
}));
}
}}
error={patient.mailingAddressError}
helperText={
patient.mailingAddressError
? 'Please enter your mailing address'
: ''
}
/> />
</Grid> </Grid>
<Grid item xs={4} className='collapsable-form-style'> <Grid
item
xs={12}
xl={3}
lg={4}
md={6}
sm={12}
className='collapsable-form-style'
>
<TextField <TextField
variant="outlined" variant='outlined'
label="State" label='State'
name="state" name='state'
value={formik.values.state} value={type == 'display' ? patientDataDiplay && patientDataDiplay.state : patient.state}
onChange={formik.handleChange} disabled={type == 'display'}
onBlur={formik.handleBlur} onChange={(e) => {
// error={formik.touched.state && Boolean(formik.errors.state)} setPatient((prevValues: any) => ({
// helperText={formik.touched.state && formik.errors.state} ...prevValues,
state: e.target.value,
}));
}}
/> />
</Grid> </Grid>
<Grid item xs={4} className='collapsable-form-style'> <Grid
item
xs={12}
xl={3}
lg={4}
md={6}
sm={12}
className='collapsable-form-style'
>
<TextField <TextField
required variant='outlined'
variant="outlined" label='City'
label="City" name='city'
name="city" value={type == 'display' ? patientDataDiplay && patientDataDiplay.city : patient.city}
value={formik.values.city} disabled={type == 'display'}
onChange={formik.handleChange} onChange={(e) => {
onBlur={formik.handleBlur} setPatient((prevValues: any) => ({
error={formik.touched.city && Boolean(formik.errors.city)} ...prevValues,
helperText={formik.touched.city && formik.errors.city} city: e.target.value,
}));
}}
/> />
</Grid> </Grid>
<Grid item xs={4} className='collapsable-form-style'> <Grid
item
xs={12}
xl={3}
lg={4}
md={6}
sm={12}
className='collapsable-form-style'
>
<TextField <TextField
variant="outlined" variant='outlined'
label="Zip Code" label='Zip Code'
name="zipCode" name='zipCode'
value={formik.values.zipCode} value={
onChange={formik.handleChange} type == 'display' ? patientDataDiplay && patientDataDiplay.zipCode : patient.zipCode
onBlur={formik.handleBlur} }
error={formik.touched.zipCode && Boolean(formik.errors.zipCode)} disabled={type == 'display'}
helperText={formik.touched.zipCode && formik.errors.zipCode} onChange={(e) => {
setPatient((prevValues: any) => ({
...prevValues,
zipCode: e.target.value,
}));
}}
// onBlur={formik.handleBlur}
// error={formik.touched.zipCode && Boolean(formik.errors.zipCode)}
// helperText={formik.touched.zipCode && formik.errors.zipCode}
/> />
</Grid> </Grid>
<Grid item xs={4} className='collapsable-form-style-radioButtons'> <Grid
<FormControl > item
xs={12}
xl={3}
lg={4}
md={6}
sm={12}
className='collapsable-form-style-radioButtons'
>
<FormControl>
<FormLabel>Gender</FormLabel> <FormLabel>Gender</FormLabel>
<RadioGroup <RadioGroup
aria-labelledby="demo-radio-buttons-group-label" aria-labelledby='demo-radio-buttons-group-label'
defaultValue="male" defaultValue={
name="radio-buttons-group" type == 'display' ? patientDataDiplay && patientDataDiplay.gender : patient.gender
onChange={handleChange} }
sx={{display:'flex', flexDirection:'row'}} name='radio-buttons-group'
onChange={(e) => {
setPatient((prevValues: any) => ({
...prevValues,
gender: e.target.value,
}));
}}
sx={{ display: 'flex', flexDirection: 'row' }}
> >
<FormControlLabel value="male" control={<Radio />} label="Male" /> <FormControlLabel
<FormControlLabel value="female" control={<Radio />} label="Female" /> disabled={type == 'display'}
value='male'
control={<Radio />}
label='Male'
/>
<FormControlLabel
disabled={type == 'display'}
value='female'
control={<Radio />}
label='Female'
/>
</RadioGroup> </RadioGroup>
</FormControl> </FormControl>
</Grid> </Grid>
</Grid> </Grid>
</> </>
) );
} }

View File

@ -1,7 +1,7 @@
import { FormControl, FormControlLabel, FormLabel, Grid, Radio, RadioGroup, TextField } from "@mui/material"; import { FormControl, FormControlLabel, FormLabel, Grid, Radio, RadioGroup, TextField } from "@mui/material";
import React from "react"; import React, { useEffect } from "react";
interface FormValues { interface Patient {
hobbies: string; hobbies: string;
educationLevel: string; educationLevel: string;
excercise: string; excercise: string;
@ -22,8 +22,33 @@ interface FormValues {
drugsExplanation:string; drugsExplanation:string;
} }
export default function RecreationalHobbiesSection7(){ type Props = {
const [values, setValues] = React.useState<FormValues>({ handleFormSection7Data:(
hobbies: string|undefined,
educationLevel: string|undefined,
excercise: string|undefined,
excerciseExplanation: string|undefined,
tobacco: string|undefined,
tobaccoExplanation: string|undefined,
alcohol: string|undefined,
alcoholExplanation: string|undefined,
healthyDiet: string|undefined,
healthyDietExplanation: string|undefined,
sleep: string|undefined,
sleepExplanation: string|undefined,
workSchool: string|undefined,
workSchoolExplanation: string|undefined,
familyLife: string|undefined,
familyLifeExplanation: string|undefined,
drugs: string|undefined,
drugsExplanation:string|undefined,
)=> void
patientDataDiplay:any;
type:string;
}
export default function RecreationalHobbiesSection7({handleFormSection7Data,patientDataDiplay,type}:Props){
const [patient, setPatient] = React.useState<Patient>({
hobbies: '', hobbies: '',
educationLevel: '', educationLevel: '',
excercise:'', excercise:'',
@ -43,6 +68,31 @@ export default function RecreationalHobbiesSection7(){
drugs: '', drugs: '',
drugsExplanation:'' drugsExplanation:''
}); });
useEffect(()=>{
handleFormSection7Data(
patient.hobbies,
patient.educationLevel,
patient.excercise,
patient.excerciseExplanation,
patient.tobacco,
patient.tobaccoExplanation,
patient.alcohol,
patient.alcoholExplanation,
patient.healthyDiet,
patient.healthyDietExplanation,
patient.sleep,
patient.sleepExplanation,
patient.workSchool,
patient.workSchoolExplanation,
patient.familyLife,
patient.familyLifeExplanation,
patient.drugs,
patient.drugsExplanation
)
},[patient])
return( return(
<> <>
@ -53,9 +103,10 @@ export default function RecreationalHobbiesSection7(){
multiline multiline
variant="outlined" variant="outlined"
label="" label=""
name='explanation' value={type=='display'?patientDataDiplay && patientDataDiplay.hobbies:patient.hobbies}
disabled={type=='display'}
onChange={(event:any) => { onChange={(event:any) => {
setValues((prevValues) => ({ setPatient((prevValues) => ({
...prevValues, ...prevValues,
hobbies: event.target.value, hobbies: event.target.value,
})); }));
@ -68,49 +119,60 @@ export default function RecreationalHobbiesSection7(){
<FormLabel>Your education level:</FormLabel> <FormLabel>Your education level:</FormLabel>
<RadioGroup <RadioGroup
sx={{display:'flex', flexDirection:'row'}} sx={{display:'flex', flexDirection:'row'}}
defaultValue={type=='display'?patientDataDiplay && patientDataDiplay.educationLevel:patient.educationLevel}
onChange={(event) => { onChange={(event) => {
setValues((prevValues) => ({ setPatient((prevValues) => ({
...prevValues, ...prevValues,
educationLevel: event.target.value, educationLevel: event.target.value,
})); }));
}} }}
> >
<FormControlLabel value="High School" control={<Radio />} label="High School" /> <FormControlLabel disabled={type=='display'} value="High School" control={<Radio />} label="High School" />
<FormControlLabel value="Some college" control={<Radio />} label="Some college" /> <FormControlLabel disabled={type=='display'} value="Some college" control={<Radio />} label="Some college" />
<FormControlLabel value="College Graduate" control={<Radio />} label="College Graduate" /> <FormControlLabel disabled={type=='display'} value="College Graduate" control={<Radio />} label="College Graduate" />
<FormControlLabel value="Post college" control={<Radio />} label="Post college" /> <FormControlLabel disabled={type=='display'} value="Post college" control={<Radio />} label="Post college" />
<FormControlLabel value="Other" control={<Radio />} label="Other" /> <FormControlLabel disabled={type=='display'} value="Other" control={<Radio />} label="Other" />
</RadioGroup> </RadioGroup>
</FormControl> </FormControl>
</Grid> </Grid>
<Grid item xs={6} className='collapsable-form-style-radioButtons'> <Grid item xs={12}
xl={3}
// lg={4}
md={6}
sm={12} className='collapsable-form-style-radioButtons'>
<FormControl> <FormControl>
<FormLabel>Do you excercise?</FormLabel> <FormLabel>Do you excercise?</FormLabel>
<RadioGroup <RadioGroup
name="painDuration" name="painDuration"
sx={{display:'flex', flexDirection:'row'}} sx={{display:'flex', flexDirection:'row'}}
defaultValue={type=='display'?patientDataDiplay && patientDataDiplay.excercise:patient.excercise}
onChange={(event) => { onChange={(event) => {
setValues((prevValues) => ({ setPatient((prevValues) => ({
...prevValues, ...prevValues,
excercise: event.target.value, excercise: event.target.value,
})); }));
}} }}
> >
<FormControlLabel value="Yes" control={<Radio />} label="Yes" /> <FormControlLabel disabled={type=='display'} value="Yes" control={<Radio />} label="Yes" />
<FormControlLabel value="No" control={<Radio />} label="No" /> <FormControlLabel disabled={type=='display'} value="No" control={<Radio />} label="No" />
</RadioGroup> </RadioGroup>
</FormControl> </FormControl>
</Grid> </Grid>
<Grid item xs={6} className='collapsable-form-style-form7'> <Grid item xs={12}
xl={3}
// lg={4}
md={6}
sm={12} className='collapsable-form-style-form7'>
<TextField <TextField
disabled={values.excercise!=='Yes'} disabled={patient.excercise!=='Yes'||type=='display'}
variant="outlined" variant="outlined"
label="Times per week?" label="Times per week?"
name='treatmentGoal' name='treatmentGoal'
value={type=='display'?patientDataDiplay && patientDataDiplay.excerciseExplanation:patient.excerciseExplanation}
onChange={(event) => { onChange={(event) => {
setValues((prevValues) => ({ setPatient((prevValues) => ({
...prevValues, ...prevValues,
excerciseExplanation: event.target.value, excerciseExplanation: event.target.value,
})); }));
@ -118,67 +180,87 @@ export default function RecreationalHobbiesSection7(){
/> />
</Grid> </Grid>
<Grid item xs={6} className='collapsable-form-style-radioButtons'> <Grid item xs={12}
xl={3}
// lg={4}
md={6}
sm={12} className='collapsable-form-style-radioButtons'>
<FormControl> <FormControl>
<FormLabel>Use tobacco?</FormLabel> <FormLabel>Use tobacco?</FormLabel>
<RadioGroup <RadioGroup
name="painDuration" name="painDuration"
sx={{display:'flex', flexDirection:'row'}} sx={{display:'flex', flexDirection:'row'}}
defaultValue={type=='display'?patientDataDiplay && patientDataDiplay.tobacco:patient.tobacco}
onChange={(event) => { onChange={(event) => {
setValues((prevValues) => ({ setPatient((prevValues) => ({
...prevValues, ...prevValues,
tobacco: event.target.value, tobacco: event.target.value,
})); }));
}} }}
> >
<FormControlLabel value="Yes" control={<Radio />} label="Yes" /> <FormControlLabel disabled={type=='display'} value="Yes" control={<Radio />} label="Yes" />
<FormControlLabel value="No" control={<Radio />} label="No" /> <FormControlLabel disabled={type=='display'} value="No" control={<Radio />} label="No" />
</RadioGroup> </RadioGroup>
</FormControl> </FormControl>
</Grid> </Grid>
<Grid item xs={6} className='collapsable-form-style-form7'> <Grid item xs={12}
xl={3}
// lg={4}
md={6}
sm={12} className='collapsable-form-style-form7'>
<TextField <TextField
disabled={values.tobacco!=='Yes'} disabled={patient.tobacco!=='Yes'||type=='display'}
value={type=='display'?patientDataDiplay && patientDataDiplay.tobaccoExplanation:patient.tobaccoExplanation}
variant="outlined" variant="outlined"
label="Packs/Cans per day(If you have quit, when did you quit?)" label="Packs/Cans per day(If you have quit, when did you quit?)"
name='treatmentGoal' name='treatmentGoal'
onChange={(event) => { onChange={(event) => {
setValues((prevValues) => ({ setPatient((prevValues) => ({
...prevValues, ...prevValues,
excerciseExplanation: event.target.value, tobaccoExplanation: event.target.value,
})); }));
}} }}
/> />
</Grid> </Grid>
<Grid item xs={6} className='collapsable-form-style-radioButtons'> <Grid item xs={12}
xl={3}
// lg={4}
md={6}
sm={12} className='collapsable-form-style-radioButtons'>
<FormControl> <FormControl>
<FormLabel>Consume alcohol?</FormLabel> <FormLabel>Consume alcohol?</FormLabel>
<RadioGroup <RadioGroup
name="painDuration" name="painDuration"
sx={{display:'flex', flexDirection:'row'}} sx={{display:'flex', flexDirection:'row'}}
defaultValue={type=='display'?patientDataDiplay && patientDataDiplay.alcohol:patient.alcohol}
onChange={(event) => { onChange={(event) => {
setValues((prevValues) => ({ setPatient((prevValues) => ({
...prevValues, ...prevValues,
alcohol: event.target.value, alcohol: event.target.value,
})); }));
}} }}
> >
<FormControlLabel value="Yes" control={<Radio />} label="Yes" /> <FormControlLabel disabled={type=='display'} value="Yes" control={<Radio />} label="Yes" />
<FormControlLabel value="No" control={<Radio />} label="No" /> <FormControlLabel disabled={type=='display'} value="No" control={<Radio />} label="No" />
</RadioGroup> </RadioGroup>
</FormControl> </FormControl>
</Grid> </Grid>
<Grid item xs={6} className='collapsable-form-style-form7'> <Grid item xs={12}
xl={3}
// lg={4}
md={6}
sm={12} className='collapsable-form-style-form7'>
<TextField <TextField
disabled={values.alcohol!=='Yes'} disabled={patient.alcohol!=='Yes'||type=='display'}
value={type=='display'?patientDataDiplay && patientDataDiplay.alcoholExplanation:patient.alcoholExplanation}
variant="outlined" variant="outlined"
label="How many drinks per week?" label="How many drinks per week?"
name='treatmentGoal' name='treatmentGoal'
onChange={(event) => { onChange={(event) => {
setValues((prevValues) => ({ setPatient((prevValues) => ({
...prevValues, ...prevValues,
alcoholExplanation: event.target.value, alcoholExplanation: event.target.value,
})); }));
@ -186,33 +268,43 @@ export default function RecreationalHobbiesSection7(){
/> />
</Grid> </Grid>
<Grid item xs={6} className='collapsable-form-style-radioButtons'> <Grid item xs={12}
xl={3}
// lg={4}
md={6}
sm={12} className='collapsable-form-style-radioButtons'>
<FormControl> <FormControl>
<FormLabel>Have a healthy diet?</FormLabel> <FormLabel>Have a healthy diet?</FormLabel>
<RadioGroup <RadioGroup
name="painDuration" name="painDuration"
sx={{display:'flex', flexDirection:'row'}} sx={{display:'flex', flexDirection:'row'}}
defaultValue={type=='display'?patientDataDiplay && patientDataDiplay.healthyDiet:patient.healthyDiet}
onChange={(event) => { onChange={(event) => {
setValues((prevValues) => ({ setPatient((prevValues) => ({
...prevValues, ...prevValues,
healthyDiet: event.target.value, healthyDiet: event.target.value,
})); }));
}} }}
> >
<FormControlLabel value="Yes" control={<Radio />} label="Yes" /> <FormControlLabel disabled={type=='display'} value="Yes" control={<Radio />} label="Yes" />
<FormControlLabel value="No" control={<Radio />} label="No" /> <FormControlLabel disabled={type=='display'} value="No" control={<Radio />} label="No" />
</RadioGroup> </RadioGroup>
</FormControl> </FormControl>
</Grid> </Grid>
<Grid item xs={6} className='collapsable-form-style-form7'> <Grid item xs={12}
xl={3}
// lg={4}
md={6}
sm={12} className='collapsable-form-style-form7'>
<TextField <TextField
disabled={values.healthyDiet!=='No'} disabled={patient.healthyDiet!=='No'||type=='display'}
value={type=='display'?patientDataDiplay && patientDataDiplay.healthyDietExplanation:patient.healthyDietExplanation}
variant="outlined" variant="outlined"
label="If no, explain" label="If no, explain"
name='treatmentGoal' name='treatmentGoal'
onChange={(event) => { onChange={(event) => {
setValues((prevValues) => ({ setPatient((prevValues) => ({
...prevValues, ...prevValues,
healthyDietExplanation: event.target.value, healthyDietExplanation: event.target.value,
})); }));
@ -220,33 +312,43 @@ export default function RecreationalHobbiesSection7(){
/> />
</Grid> </Grid>
<Grid item xs={6} className='collapsable-form-style-radioButtons'> <Grid item xs={12}
xl={3}
// lg={4}
md={6}
sm={12} className='collapsable-form-style-radioButtons'>
<FormControl> <FormControl>
<FormLabel>Get adequate sleep?</FormLabel> <FormLabel>Get adequate sleep?</FormLabel>
<RadioGroup <RadioGroup
name="painDuration" name="painDuration"
sx={{display:'flex', flexDirection:'row'}} sx={{display:'flex', flexDirection:'row'}}
defaultValue={type=='display'?patientDataDiplay && patientDataDiplay.sleep:patient.sleep}
onChange={(event) => { onChange={(event) => {
setValues((prevValues) => ({ setPatient((prevValues) => ({
...prevValues, ...prevValues,
sleep: event.target.value, sleep: event.target.value,
})); }));
}} }}
> >
<FormControlLabel value="Yes" control={<Radio />} label="Yes" /> <FormControlLabel disabled={type=='display'} value="Yes" control={<Radio />} label="Yes" />
<FormControlLabel value="No" control={<Radio />} label="No" /> <FormControlLabel disabled={type=='display'} value="No" control={<Radio />} label="No" />
</RadioGroup> </RadioGroup>
</FormControl> </FormControl>
</Grid> </Grid>
<Grid item xs={6} className='collapsable-form-style-form7'> <Grid item xs={12}
xl={3}
// lg={4}
md={6}
sm={12} className='collapsable-form-style-form7'>
<TextField <TextField
disabled={values.sleep!=='No'} disabled={patient.sleep!=='No'||type=='display'}
value={type=='display'?patientDataDiplay && patientDataDiplay.sleepExplanation:patient.sleepExplanation}
variant="outlined" variant="outlined"
label="If no, explain" label="If no, explain"
name='treatmentGoal' name='treatmentGoal'
onChange={(event) => { onChange={(event) => {
setValues((prevValues) => ({ setPatient((prevValues) => ({
...prevValues, ...prevValues,
sleepExplanation: event.target.value, sleepExplanation: event.target.value,
})); }));
@ -254,33 +356,43 @@ export default function RecreationalHobbiesSection7(){
/> />
</Grid> </Grid>
<Grid item xs={6} className='collapsable-form-style-radioButtons'> <Grid item xs={12}
xl={3}
// lg={4}
md={6}
sm={12} className='collapsable-form-style-radioButtons'>
<FormControl> <FormControl>
<FormLabel>Is Work/School stressful to you?</FormLabel> <FormLabel>Is Work/School stressful to you?</FormLabel>
<RadioGroup <RadioGroup
name="painDuration" name="painDuration"
sx={{display:'flex', flexDirection:'row'}} sx={{display:'flex', flexDirection:'row'}}
defaultValue={type=='display'?patientDataDiplay && patientDataDiplay.workSchool:patient.workSchool}
onChange={(event) => { onChange={(event) => {
setValues((prevValues) => ({ setPatient((prevValues) => ({
...prevValues, ...prevValues,
workSchool: event.target.value, workSchool: event.target.value,
})); }));
}} }}
> >
<FormControlLabel value="Yes" control={<Radio />} label="Yes" /> <FormControlLabel disabled={type=='display'} value="Yes" control={<Radio />} label="Yes" />
<FormControlLabel value="No" control={<Radio />} label="No" /> <FormControlLabel disabled={type=='display'} value="No" control={<Radio />} label="No" />
</RadioGroup> </RadioGroup>
</FormControl> </FormControl>
</Grid> </Grid>
<Grid item xs={6} className='collapsable-form-style-form7'> <Grid item xs={12}
xl={3}
// lg={4}
md={6}
sm={12} className='collapsable-form-style-form7'>
<TextField <TextField
disabled={values.workSchool!=='Yes'} disabled={patient.workSchool!=='Yes'||type=='display'}
value={type=='display'?patientDataDiplay && patientDataDiplay.workSchool:patient.workSchool}
variant="outlined" variant="outlined"
label="If yes, explain" label="If yes, explain"
name='treatmentGoal' name='treatmentGoal'
onChange={(event) => { onChange={(event) => {
setValues((prevValues) => ({ setPatient((prevValues) => ({
...prevValues, ...prevValues,
workSchool: event.target.value, workSchool: event.target.value,
})); }));
@ -288,33 +400,43 @@ export default function RecreationalHobbiesSection7(){
/> />
</Grid> </Grid>
<Grid item xs={6} className='collapsable-form-style-radioButtons'> <Grid item xs={12}
xl={3}
// lg={4}
md={6}
sm={12} className='collapsable-form-style-radioButtons'>
<FormControl> <FormControl>
<FormLabel>Family life stressful to you?</FormLabel> <FormLabel>Family life stressful to you?</FormLabel>
<RadioGroup <RadioGroup
name="painDuration" name="painDuration"
sx={{display:'flex', flexDirection:'row'}} sx={{display:'flex', flexDirection:'row'}}
defaultValue={type=='display'?patientDataDiplay && patientDataDiplay.familyLife:patient.familyLife}
onChange={(event) => { onChange={(event) => {
setValues((prevValues) => ({ setPatient((prevValues) => ({
...prevValues, ...prevValues,
familyLife: event.target.value, familyLife: event.target.value,
})); }));
}} }}
> >
<FormControlLabel value="Yes" control={<Radio />} label="Yes" /> <FormControlLabel disabled={type=='display'} value="Yes" control={<Radio />} label="Yes" />
<FormControlLabel value="No" control={<Radio />} label="No" /> <FormControlLabel disabled={type=='display'} value="No" control={<Radio />} label="No" />
</RadioGroup> </RadioGroup>
</FormControl> </FormControl>
</Grid> </Grid>
<Grid item xs={6} className='collapsable-form-style-form7'> <Grid item xs={12}
xl={3}
// lg={4}
md={6}
sm={12} className='collapsable-form-style-form7'>
<TextField <TextField
disabled={values.familyLife!=='Yes'} disabled={patient.familyLife!=='Yes'||type=='display'}
value={type=='display'?patientDataDiplay && patientDataDiplay.familyLifeExplanation:patient.familyLifeExplanation}
variant="outlined" variant="outlined"
label="If yes, explain" label="If yes, explain"
name='treatmentGoal' name='treatmentGoal'
onChange={(event) => { onChange={(event) => {
setValues((prevValues) => ({ setPatient((prevValues) => ({
...prevValues, ...prevValues,
familyLifeExplanation: event.target.value, familyLifeExplanation: event.target.value,
})); }));
@ -322,33 +444,43 @@ export default function RecreationalHobbiesSection7(){
/> />
</Grid> </Grid>
<Grid item xs={6} className='collapsable-form-style-radioButtons'> <Grid item xs={12}
xl={3}
// lg={4}
md={6}
sm={12} className='collapsable-form-style-radioButtons'>
<FormControl> <FormControl>
<FormLabel>Use recreational drugs?</FormLabel> <FormLabel>Use recreational drugs?</FormLabel>
<RadioGroup <RadioGroup
name="painDuration" name="painDuration"
sx={{display:'flex', flexDirection:'row'}} sx={{display:'flex', flexDirection:'row'}}
defaultValue={type=='display'?patientDataDiplay && patientDataDiplay.drugs:patient.drugs}
onChange={(event) => { onChange={(event) => {
setValues((prevValues) => ({ setPatient((prevValues) => ({
...prevValues, ...prevValues,
drugs: event.target.value, drugs: event.target.value,
})); }));
}} }}
> >
<FormControlLabel value="Yes" control={<Radio />} label="Yes" /> <FormControlLabel disabled={type=='display'} value="Yes" control={<Radio />} label="Yes" />
<FormControlLabel value="No" control={<Radio />} label="No" /> <FormControlLabel disabled={type=='display'} value="No" control={<Radio />} label="No" />
</RadioGroup> </RadioGroup>
</FormControl> </FormControl>
</Grid> </Grid>
<Grid item xs={6} className='collapsable-form-style-form7'> <Grid item xs={12}
xl={3}
// lg={4}
md={6}
sm={12} className='collapsable-form-style-form7'>
<TextField <TextField
disabled={values.drugs!=='Yes'} disabled={patient.drugs!=='Yes'||type=='display'}
value={type=='display'?patientDataDiplay && patientDataDiplay.drugsExplanation:patient.drugsExplanation}
variant="outlined" variant="outlined"
label="If yes, explain" label="If yes, explain"
name='treatmentGoal' name='treatmentGoal'
onChange={(event) => { onChange={(event) => {
setValues((prevValues) => ({ setPatient((prevValues) => ({
...prevValues, ...prevValues,
drugsExplanation: event.target.value, drugsExplanation: event.target.value,
})); }));

View File

@ -1,10 +1,18 @@
import { FormControl, FormControlLabel, FormLabel, Grid, Radio, RadioGroup, TextField } from "@mui/material"; import {
import React from "react"; FormControl,
FormControlLabel,
FormLabel,
Grid,
Radio,
RadioGroup,
TextField,
} from '@mui/material';
import React, { useEffect } from 'react';
interface FormValues { interface Patient {
eyes: string; eyes: string;
IntestinesBowls: string; IntestinesBowls: string;
jointsBones:string; jointsBones: string;
allergies: string; allergies: string;
earsNoseMouth: string; earsNoseMouth: string;
urinary: string; urinary: string;
@ -18,14 +26,42 @@ interface FormValues {
nerves: string; nerves: string;
blood: string; blood: string;
prostate: string; prostate: string;
explanation:string; explanation: string;
} }
export default function SystemReviewSection6(){ type Props = {
const [values, setValues] = React.useState<FormValues>({ handleFormSection6Data: (
eyes: string | undefined,
IntestinesBowls: string | undefined,
jointsBones: string | undefined,
allergies: string | undefined,
earsNoseMouth: string | undefined,
urinary: string | undefined,
skin: string | undefined,
psychological: string | undefined,
heart: string | undefined,
muscles: string | undefined,
internalOrgans: string | undefined,
gynecological: string | undefined,
lungsBreathing: string | undefined,
nerves: string | undefined,
blood: string | undefined,
prostate: string | undefined,
explanation: string | undefined
) => void;
patientDataDiplay: any;
type: string;
};
export default function SystemReviewSection6({
handleFormSection6Data,
patientDataDiplay,
type,
}: Props) {
const [patient, setPatients] = React.useState<Patient>({
eyes: '', eyes: '',
IntestinesBowls: '', IntestinesBowls: '',
jointsBones:'', jointsBones: '',
allergies: '', allergies: '',
earsNoseMouth: '', earsNoseMouth: '',
urinary: '', urinary: '',
@ -39,320 +75,712 @@ export default function SystemReviewSection6(){
nerves: '', nerves: '',
blood: '', blood: '',
prostate: '', prostate: '',
explanation:'', explanation: '',
}); });
return(
useEffect(() => {
handleFormSection6Data(
patient.eyes,
patient.IntestinesBowls,
patient.jointsBones,
patient.allergies,
patient.earsNoseMouth,
patient.urinary,
patient.skin,
patient.psychological,
patient.heart,
patient.muscles,
patient.internalOrgans,
patient.gynecological,
patient.lungsBreathing,
patient.nerves,
patient.blood,
patient.prostate,
patient.explanation
);
}, [patient]);
return (
<> <>
<Grid item xs={12} className='collapsable-form-style '> <Grid item xs={12} className='collapsable-form-style '>
<FormLabel sx={{fontWeight:600}}>Please choose body areas or systems where you may have problems:</FormLabel> <FormLabel sx={{ fontWeight: 600 }}>
Please choose body areas or systems where you may have problems:
</FormLabel>
</Grid> </Grid>
<Grid container direction="row"> <Grid container direction='row'>
<Grid item xs={3} className='collapsable-form-style-radioButtons'> <Grid
item
xs={12}
xl={3}
lg={4}
md={6}
sm={12}
className='collapsable-form-style-radioButtons'
>
<FormControl> <FormControl>
<FormLabel>Eyes</FormLabel> <FormLabel>Eyes</FormLabel>
<RadioGroup <RadioGroup
name="painDuration" name='painDuration'
sx={{display:'flex', flexDirection:'row'}} defaultValue={
type == 'display' ? patientDataDiplay && patientDataDiplay.eyes : patient.eyes
}
sx={{ display: 'flex', flexDirection: 'row' }}
onChange={(event) => { onChange={(event) => {
setValues((prevValues) => ({ setPatients((prevValues) => ({
...prevValues, ...prevValues,
eyes: event.target.value, eyes: event.target.value,
})); }));
}} }}
> >
<FormControlLabel value="Yes" control={<Radio />} label="Yes" /> <FormControlLabel
<FormControlLabel value="No" control={<Radio />} label="No" /> disabled={type == 'display'}
value='Yes'
control={<Radio />}
label='Yes'
/>
<FormControlLabel
disabled={type == 'display'}
value='No'
control={<Radio />}
label='No'
/>
</RadioGroup> </RadioGroup>
</FormControl> </FormControl>
</Grid> </Grid>
<Grid item xs={3} className='collapsable-form-style-radioButtons'> <Grid
item
xs={12}
xl={3}
lg={4}
md={6}
sm={12}
className='collapsable-form-style-radioButtons'
>
<FormControl> <FormControl>
<FormLabel>Intestines/Bowls</FormLabel> <FormLabel>Intestines/Bowls</FormLabel>
<RadioGroup <RadioGroup
name="painDuration" name='painDuration'
sx={{display:'flex', flexDirection:'row'}} defaultValue={
type == 'display'
? patientDataDiplay && patientDataDiplay.IntestinesBowls
: patient.IntestinesBowls
}
sx={{ display: 'flex', flexDirection: 'row' }}
onChange={(event) => { onChange={(event) => {
setValues((prevValues) => ({ setPatients((prevValues) => ({
...prevValues, ...prevValues,
presentProblemBefore: event.target.value, IntestinesBowls: event.target.value,
})); }));
}} }}
> >
<FormControlLabel value="Yes" control={<Radio />} label="Yes" /> <FormControlLabel
<FormControlLabel value="No" control={<Radio />} label="No" /> disabled={type == 'display'}
value='Yes'
control={<Radio />}
label='Yes'
/>
<FormControlLabel
disabled={type == 'display'}
value='No'
control={<Radio />}
label='No'
/>
</RadioGroup> </RadioGroup>
</FormControl> </FormControl>
</Grid> </Grid>
<Grid item xs={3} className='collapsable-form-style-radioButtons'> <Grid
item
xs={12}
xl={3}
lg={4}
md={6}
sm={12}
className='collapsable-form-style-radioButtons'
>
<FormControl> <FormControl>
<FormLabel>Joints/Bones</FormLabel> <FormLabel>Joints/Bones</FormLabel>
<RadioGroup <RadioGroup
name="painDuration" name='painDuration'
sx={{display:'flex', flexDirection:'row'}} defaultValue={
type == 'display'
? patientDataDiplay && patientDataDiplay.jointsBones
: patient.jointsBones
}
sx={{ display: 'flex', flexDirection: 'row' }}
onChange={(event) => { onChange={(event) => {
setValues((prevValues) => ({ setPatients((prevValues) => ({
...prevValues, ...prevValues,
jointsBones: event.target.value, jointsBones: event.target.value,
})); }));
}} }}
> >
<FormControlLabel value="Yes" control={<Radio />} label="Yes" /> <FormControlLabel
<FormControlLabel value="No" control={<Radio />} label="No" /> disabled={type == 'display'}
value='Yes'
control={<Radio />}
label='Yes'
/>
<FormControlLabel
disabled={type == 'display'}
value='No'
control={<Radio />}
label='No'
/>
</RadioGroup> </RadioGroup>
</FormControl> </FormControl>
</Grid> </Grid>
<Grid item xs={3} className='collapsable-form-style-radioButtons'> <Grid
item
xs={12}
xl={3}
lg={4}
md={6}
sm={12}
className='collapsable-form-style-radioButtons'
>
<FormControl> <FormControl>
<FormLabel>Allergies</FormLabel> <FormLabel>Allergies</FormLabel>
<RadioGroup <RadioGroup
name="painDuration" name='painDuration'
sx={{display:'flex', flexDirection:'row'}} defaultValue={
type == 'display'
? patientDataDiplay && patientDataDiplay.allergies
: patient.allergies
}
sx={{ display: 'flex', flexDirection: 'row' }}
onChange={(event) => { onChange={(event) => {
setValues((prevValues) => ({ setPatients((prevValues) => ({
...prevValues, ...prevValues,
allergies: event.target.value, allergies: event.target.value,
})); }));
}} }}
> >
<FormControlLabel value="Yes" control={<Radio />} label="Yes" /> <FormControlLabel
<FormControlLabel value="No" control={<Radio />} label="No" /> disabled={type == 'display'}
value='Yes'
control={<Radio />}
label='Yes'
/>
<FormControlLabel
disabled={type == 'display'}
value='No'
control={<Radio />}
label='No'
/>
</RadioGroup> </RadioGroup>
</FormControl> </FormControl>
</Grid> </Grid>
<Grid item xs={3} className='collapsable-form-style-radioButtons'> <Grid
item
xs={12}
xl={3}
lg={4}
md={6}
sm={12}
className='collapsable-form-style-radioButtons'
>
<FormControl> <FormControl>
<FormLabel>Ears, Nose, Mouth, Throat</FormLabel> <FormLabel>Ears, Nose, Mouth, Throat</FormLabel>
<RadioGroup <RadioGroup
name="painDuration" name='painDuration'
sx={{display:'flex', flexDirection:'row'}} defaultValue={
type == 'display'
? patientDataDiplay && patientDataDiplay.earsNoseMouth
: patient.earsNoseMouth
}
sx={{ display: 'flex', flexDirection: 'row' }}
onChange={(event) => { onChange={(event) => {
setValues((prevValues) => ({ setPatients((prevValues) => ({
...prevValues, ...prevValues,
earsNoseMouth: event.target.value, earsNoseMouth: event.target.value,
})); }));
}} }}
> >
<FormControlLabel value="Yes" control={<Radio />} label="Yes" /> <FormControlLabel
<FormControlLabel value="No" control={<Radio />} label="No" /> disabled={type == 'display'}
value='Yes'
control={<Radio />}
label='Yes'
/>
<FormControlLabel
disabled={type == 'display'}
value='No'
control={<Radio />}
label='No'
/>
</RadioGroup> </RadioGroup>
</FormControl> </FormControl>
</Grid> </Grid>
<Grid item xs={3} className='collapsable-form-style-radioButtons'> <Grid
item
xs={12}
xl={3}
lg={4}
md={6}
sm={12}
className='collapsable-form-style-radioButtons'
>
<FormControl> <FormControl>
<FormLabel>Urinary</FormLabel> <FormLabel>Urinary</FormLabel>
<RadioGroup <RadioGroup
name="painDuration" name='painDuration'
sx={{display:'flex', flexDirection:'row'}} defaultValue={
type == 'display' ? patientDataDiplay && patientDataDiplay.urinary : patient.urinary
}
sx={{ display: 'flex', flexDirection: 'row' }}
onChange={(event) => { onChange={(event) => {
setValues((prevValues) => ({ setPatients((prevValues) => ({
...prevValues, ...prevValues,
urinary: event.target.value, urinary: event.target.value,
})); }));
}} }}
> >
<FormControlLabel value="Yes" control={<Radio />} label="Yes" /> <FormControlLabel
<FormControlLabel value="No" control={<Radio />} label="No" /> disabled={type == 'display'}
value='Yes'
control={<Radio />}
label='Yes'
/>
<FormControlLabel
disabled={type == 'display'}
value='No'
control={<Radio />}
label='No'
/>
</RadioGroup> </RadioGroup>
</FormControl> </FormControl>
</Grid> </Grid>
<Grid item xs={3} className='collapsable-form-style-radioButtons'> <Grid
item
xs={12}
xl={3}
lg={4}
md={6}
sm={12}
className='collapsable-form-style-radioButtons'
>
<FormControl> <FormControl>
<FormLabel>Skin</FormLabel> <FormLabel>Skin</FormLabel>
<RadioGroup <RadioGroup
name="painDuration" name='painDuration'
sx={{display:'flex', flexDirection:'row'}} defaultValue={
type == 'display' ? patientDataDiplay && patientDataDiplay.skin : patient.skin
}
sx={{ display: 'flex', flexDirection: 'row' }}
onChange={(event) => { onChange={(event) => {
setValues((prevValues) => ({ setPatients((prevValues) => ({
...prevValues, ...prevValues,
skin: event.target.value, skin: event.target.value,
})); }));
}} }}
> >
<FormControlLabel value="Yes" control={<Radio />} label="Yes" /> <FormControlLabel
<FormControlLabel value="No" control={<Radio />} label="No" /> disabled={type == 'display'}
value='Yes'
control={<Radio />}
label='Yes'
/>
<FormControlLabel
disabled={type == 'display'}
value='No'
control={<Radio />}
label='No'
/>
</RadioGroup> </RadioGroup>
</FormControl> </FormControl>
</Grid> </Grid>
<Grid item xs={3} className='collapsable-form-style-radioButtons'> <Grid
item
xs={12}
xl={3}
lg={4}
md={6}
sm={12}
className='collapsable-form-style-radioButtons'
>
<FormControl> <FormControl>
<FormLabel>Psychological/Emotional</FormLabel> <FormLabel>Psychological/Emotional</FormLabel>
<RadioGroup <RadioGroup
name="painDuration" name='painDuration'
sx={{display:'flex', flexDirection:'row'}} defaultValue={
type == 'display'
? patientDataDiplay && patientDataDiplay.psychological
: patient.psychological
}
sx={{ display: 'flex', flexDirection: 'row' }}
onChange={(event) => { onChange={(event) => {
setValues((prevValues) => ({ setPatients((prevValues) => ({
...prevValues, ...prevValues,
psychological: event.target.value, psychological: event.target.value,
})); }));
}} }}
> >
<FormControlLabel value="Yes" control={<Radio />} label="Yes" /> <FormControlLabel
<FormControlLabel value="No" control={<Radio />} label="No" /> disabled={type == 'display'}
value='Yes'
control={<Radio />}
label='Yes'
/>
<FormControlLabel
disabled={type == 'display'}
value='No'
control={<Radio />}
label='No'
/>
</RadioGroup> </RadioGroup>
</FormControl> </FormControl>
</Grid> </Grid>
<Grid item xs={3} className='collapsable-form-style-radioButtons'> <Grid
item
xs={12}
xl={3}
lg={4}
md={6}
sm={12}
className='collapsable-form-style-radioButtons'
>
<FormControl> <FormControl>
<FormLabel>Heart</FormLabel> <FormLabel>Heart</FormLabel>
<RadioGroup <RadioGroup
name="painDuration" name='painDuration'
sx={{display:'flex', flexDirection:'row'}} defaultValue={
type == 'display' ? patientDataDiplay && patientDataDiplay.heart : patient.heart
}
sx={{ display: 'flex', flexDirection: 'row' }}
onChange={(event) => { onChange={(event) => {
setValues((prevValues) => ({ setPatients((prevValues) => ({
...prevValues, ...prevValues,
heart: event.target.value, heart: event.target.value,
})); }));
}} }}
> >
<FormControlLabel value="Yes" control={<Radio />} label="Yes" /> <FormControlLabel
<FormControlLabel value="No" control={<Radio />} label="No" /> disabled={type == 'display'}
value='Yes'
control={<Radio />}
label='Yes'
/>
<FormControlLabel
disabled={type == 'display'}
value='No'
control={<Radio />}
label='No'
/>
</RadioGroup> </RadioGroup>
</FormControl> </FormControl>
</Grid> </Grid>
<Grid item xs={3} className='collapsable-form-style-radioButtons'> <Grid
item
xs={12}
xl={3}
lg={4}
md={6}
sm={12}
className='collapsable-form-style-radioButtons'
>
<FormControl> <FormControl>
<FormLabel>Muscles</FormLabel> <FormLabel>Muscles</FormLabel>
<RadioGroup <RadioGroup
name="painDuration" name='painDuration'
sx={{display:'flex', flexDirection:'row'}} defaultValue={
type == 'display' ? patientDataDiplay && patientDataDiplay.muscles : patient.muscles
}
sx={{ display: 'flex', flexDirection: 'row' }}
onChange={(event) => { onChange={(event) => {
setValues((prevValues) => ({ setPatients((prevValues) => ({
...prevValues, ...prevValues,
muscles: event.target.value, muscles: event.target.value,
})); }));
}} }}
> >
<FormControlLabel value="Yes" control={<Radio />} label="Yes" /> <FormControlLabel
<FormControlLabel value="No" control={<Radio />} label="No" /> disabled={type == 'display'}
value='Yes'
control={<Radio />}
label='Yes'
/>
<FormControlLabel
disabled={type == 'display'}
value='No'
control={<Radio />}
label='No'
/>
</RadioGroup> </RadioGroup>
</FormControl> </FormControl>
</Grid> </Grid>
<Grid item xs={3} className='collapsable-form-style-radioButtons'> <Grid
item
xs={12}
xl={3}
lg={4}
md={6}
sm={12}
className='collapsable-form-style-radioButtons'
>
<FormControl> <FormControl>
<FormLabel>Internal Organs</FormLabel> <FormLabel>Internal Organs</FormLabel>
<RadioGroup <RadioGroup
name="painDuration" name='painDuration'
sx={{display:'flex', flexDirection:'row'}} defaultValue={
type == 'display'
? patientDataDiplay && patientDataDiplay.internalOrgans
: patient.internalOrgans
}
sx={{ display: 'flex', flexDirection: 'row' }}
onChange={(event) => { onChange={(event) => {
setValues((prevValues) => ({ setPatients((prevValues) => ({
...prevValues, ...prevValues,
internalOrgans: event.target.value, internalOrgans: event.target.value,
})); }));
}} }}
> >
<FormControlLabel value="Yes" control={<Radio />} label="Yes" /> <FormControlLabel
<FormControlLabel value="No" control={<Radio />} label="No" /> disabled={type == 'display'}
value='Yes'
control={<Radio />}
label='Yes'
/>
<FormControlLabel
disabled={type == 'display'}
value='No'
control={<Radio />}
label='No'
/>
</RadioGroup> </RadioGroup>
</FormControl> </FormControl>
</Grid> </Grid>
<Grid item xs={3} className='collapsable-form-style-radioButtons'> <Grid
item
xs={12}
xl={3}
lg={4}
md={6}
sm={12}
className='collapsable-form-style-radioButtons'
>
<FormControl> <FormControl>
<FormLabel>Gynecological menstrual/Brest</FormLabel> <FormLabel>Gynecological menstrual/Brest</FormLabel>
<RadioGroup <RadioGroup
name="painDuration" name='painDuration'
sx={{display:'flex', flexDirection:'row'}} defaultValue={
type == 'display'
? patientDataDiplay && patientDataDiplay.gynecological
: patient.gynecological
}
sx={{ display: 'flex', flexDirection: 'row' }}
onChange={(event) => { onChange={(event) => {
setValues((prevValues) => ({ setPatients((prevValues) => ({
...prevValues, ...prevValues,
gynecological: event.target.value, gynecological: event.target.value,
})); }));
}} }}
> >
<FormControlLabel value="Yes" control={<Radio />} label="Yes" /> <FormControlLabel
<FormControlLabel value="No" control={<Radio />} label="No" /> disabled={type == 'display'}
value='Yes'
control={<Radio />}
label='Yes'
/>
<FormControlLabel
disabled={type == 'display'}
value='No'
control={<Radio />}
label='No'
/>
</RadioGroup> </RadioGroup>
</FormControl> </FormControl>
</Grid> </Grid>
<Grid item xs={3} className='collapsable-form-style-radioButtons'> <Grid
item
xs={12}
xl={3}
lg={4}
md={6}
sm={12}
className='collapsable-form-style-radioButtons'
>
<FormControl> <FormControl>
<FormLabel>Lungs/Breathing</FormLabel> <FormLabel>Lungs/Breathing</FormLabel>
<RadioGroup <RadioGroup
name="painDuration" name='painDuration'
sx={{display:'flex', flexDirection:'row'}} defaultValue={
type == 'display'
? patientDataDiplay && patientDataDiplay.lungsBreathing
: patient.lungsBreathing
}
sx={{ display: 'flex', flexDirection: 'row' }}
onChange={(event) => { onChange={(event) => {
setValues((prevValues) => ({ setPatients((prevValues) => ({
...prevValues, ...prevValues,
lungsBreathing: event.target.value, lungsBreathing: event.target.value,
})); }));
}} }}
> >
<FormControlLabel value="Yes" control={<Radio />} label="Yes" /> <FormControlLabel
<FormControlLabel value="No" control={<Radio />} label="No" /> disabled={type == 'display'}
value='Yes'
control={<Radio />}
label='Yes'
/>
<FormControlLabel
disabled={type == 'display'}
value='No'
control={<Radio />}
label='No'
/>
</RadioGroup> </RadioGroup>
</FormControl> </FormControl>
</Grid> </Grid>
<Grid item xs={3} className='collapsable-form-style-radioButtons'> <Grid
item
xs={12}
xl={3}
lg={4}
md={6}
sm={12}
className='collapsable-form-style-radioButtons'
>
<FormControl> <FormControl>
<FormLabel>Nerves</FormLabel> <FormLabel>Nerves</FormLabel>
<RadioGroup <RadioGroup
name="painDuration" name='painDuration'
sx={{display:'flex', flexDirection:'row'}} defaultValue={
type == 'display' ? patientDataDiplay && patientDataDiplay.nerves : patient.nerves
}
sx={{ display: 'flex', flexDirection: 'row' }}
onChange={(event) => { onChange={(event) => {
setValues((prevValues) => ({ setPatients((prevValues) => ({
...prevValues, ...prevValues,
nerves: event.target.value, nerves: event.target.value,
})); }));
}} }}
> >
<FormControlLabel value="Yes" control={<Radio />} label="Yes" /> <FormControlLabel
<FormControlLabel value="No" control={<Radio />} label="No" /> disabled={type == 'display'}
value='Yes'
control={<Radio />}
label='Yes'
/>
<FormControlLabel
disabled={type == 'display'}
value='No'
control={<Radio />}
label='No'
/>
</RadioGroup> </RadioGroup>
</FormControl> </FormControl>
</Grid> </Grid>
<Grid item xs={3} className='collapsable-form-style-radioButtons'> <Grid
item
xs={12}
xl={3}
lg={4}
md={6}
sm={12}
className='collapsable-form-style-radioButtons'
>
<FormControl> <FormControl>
<FormLabel>Blood</FormLabel> <FormLabel>Blood</FormLabel>
<RadioGroup <RadioGroup
name="painDuration" name='painDuration'
sx={{display:'flex', flexDirection:'row'}} defaultValue={
type == 'display' ? patientDataDiplay && patientDataDiplay.blood : patient.blood
}
sx={{ display: 'flex', flexDirection: 'row' }}
onChange={(event) => { onChange={(event) => {
setValues((prevValues) => ({ setPatients((prevValues) => ({
...prevValues, ...prevValues,
blood: event.target.value, blood: event.target.value,
})); }));
}} }}
> >
<FormControlLabel value="Yes" control={<Radio />} label="Yes" /> <FormControlLabel
<FormControlLabel value="No" control={<Radio />} label="No" /> disabled={type == 'display'}
value='Yes'
control={<Radio />}
label='Yes'
/>
<FormControlLabel
disabled={type == 'display'}
value='No'
control={<Radio />}
label='No'
/>
</RadioGroup> </RadioGroup>
</FormControl> </FormControl>
</Grid> </Grid>
<Grid item xs={3} className='collapsable-form-style-radioButtons'> <Grid
item
xs={12}
xl={3}
lg={4}
md={6}
sm={12}
className='collapsable-form-style-radioButtons'
>
<FormControl> <FormControl>
<FormLabel>Prostate/Testicular/Penile</FormLabel> <FormLabel>Prostate/Testicular/Penile</FormLabel>
<RadioGroup <RadioGroup
name="painDuration" name='painDuration'
sx={{display:'flex', flexDirection:'row'}} defaultValue={
type == 'display'
? patientDataDiplay && patientDataDiplay.prostate
: patient.prostate
}
sx={{ display: 'flex', flexDirection: 'row' }}
onChange={(event) => { onChange={(event) => {
setValues((prevValues) => ({ setPatients((prevValues) => ({
...prevValues, ...prevValues,
prostate: event.target.value, prostate: event.target.value,
})); }));
}} }}
> >
<FormControlLabel value="Yes" control={<Radio />} label="Yes" /> <FormControlLabel
<FormControlLabel value="No" control={<Radio />} label="No" /> disabled={type == 'display'}
value='Yes'
control={<Radio />}
label='Yes'
/>
<FormControlLabel
disabled={type == 'display'}
value='No'
control={<Radio />}
label='No'
/>
</RadioGroup> </RadioGroup>
</FormControl> </FormControl>
</Grid> </Grid>
<Grid item xs={6} className='collapsable-form-style-multiline'> <Grid
<FormLabel>Please explain your check marks:</FormLabel><br></br> item
xs={12}
xl={10}
lg={10}
md={10}
sm={12}
className='collapsable-form-style-multiline'
>
<FormLabel>Please explain your check marks:</FormLabel>
<br></br>
<TextField <TextField
multiline multiline
variant="outlined" variant='outlined'
label="" label=''
name='explanation' name='explanation'
onChange={(event:any) => { value={
setValues((prevValues) => ({ type == 'display'
? patientDataDiplay && patientDataDiplay.explanation
: patient.explanation
}
disabled={type == 'display'}
onChange={(event: any) => {
setPatients((prevValues) => ({
...prevValues, ...prevValues,
explanation: event.target.value, explanation: event.target.value,
})); }));
}} }}
/> />
</Grid> </Grid>
</Grid> </Grid>
</> </>
) );
} }