{"version":3,"file":"static/js/patients-register.1d90a897.chunk.js","mappings":"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","sources":["hooks/use-rw-validation.tsx","modules/patients/register.tsx"],"sourcesContent":["import { useCallback, useEffect, useState } from 'react'\r\n\r\n\r\nexport type ValidationRules = Record string>;\r\nexport type ValidationErrors = Record;\r\n\r\nexport interface IRwValidation {\r\n validate: (data: T, field?: string) => boolean;\r\n setServerErrors: React.Dispatch>,\r\n formattedServerErrors: Record,\r\n removeFormattedServerError: (keyIndex: number, valueIndex: number) => void;\r\n singleServerError: string;\r\n clientErrors: ValidationErrors,\r\n clearClientErrors: () => void;\r\n}\r\n\r\nconst useRwValidation = (ruleMap: ValidationRules): IRwValidation => {\r\n const [clientErrors, setClientErrors] = useState({} as ValidationErrors);\r\n const [serverErrors, setServerErrors] = useState(null as any);\r\n const [formattedServerErrors, setFormattedServerErrors] = useState(null as Record);\r\n\r\n useEffect(() => {\r\n let errors = {};\r\n if (serverErrors?.response?.errors) {\r\n errors = serverErrors.response.errors;\r\n if (errors === null) {\r\n errors = {\r\n 'error': [serverErrors.response.title]\r\n };\r\n }\r\n }\r\n if (Object.keys(errors).length) {\r\n setFormattedServerErrors(errors);\r\n } else {\r\n setFormattedServerErrors(null);\r\n }\r\n }, [serverErrors]);\r\n\r\n const validate = useCallback((rules: any, data: T, field?: string) => {\r\n const temp: ValidationErrors = { ...clientErrors }\r\n for (const ruleName of Object.keys(rules)) {\r\n if (field && field !== ruleName)\r\n continue;\r\n\r\n\r\n const rule: (data: T) => string = rules[ruleName];\r\n temp[ruleName] = rule(data);\r\n }\r\n setClientErrors({\r\n ...temp\r\n });\r\n\r\n return Object.values(temp).every((x) => !x);\r\n }, [clientErrors, setClientErrors]); // eslint-disable-line react-hooks/exhaustive-deps\r\n\r\n const clearClientErrors = useCallback(() => {\r\n setClientErrors({} as ValidationErrors);\r\n }, [setClientErrors]); // eslint-disable-line react-hooks/exhaustive-deps\r\n\r\n const removeFormattedServerError = useCallback((keyIndex: number, valueIndex: number) => {\r\n const recordKey = Object.keys(formattedServerErrors)[keyIndex];\r\n const newErrorsForKey = [...formattedServerErrors[recordKey]];\r\n newErrorsForKey.splice(valueIndex, 1);\r\n let copy = { ...formattedServerErrors, [recordKey]: newErrorsForKey };\r\n if (!newErrorsForKey?.length) {\r\n delete copy[recordKey];\r\n }\r\n if (!Object.keys(copy).length) {\r\n copy = null;\r\n }\r\n setFormattedServerErrors(copy);\r\n\r\n }, [formattedServerErrors, setFormattedServerErrors]);\r\n\r\n return {\r\n validate: (data: T, field?: string) => validate(ruleMap, data, field),\r\n setServerErrors,\r\n formattedServerErrors,\r\n clientErrors,\r\n removeFormattedServerError,\r\n clearClientErrors,\r\n singleServerError: formattedServerErrors ? formattedServerErrors[Object.keys(formattedServerErrors)[0]][0] : null,\r\n };\r\n};\r\n\r\nexport default useRwValidation;","import { DatePicker, LocalizationProvider } from '@mui/x-date-pickers';\r\nimport { Box, Button, Fade, Grid, TextField, Typography } from '@mui/material';\r\nimport React, { useEffect, useState } from 'react';\r\nimport { useParams, Redirect } from \"react-router-dom\";\r\nimport { PatientsClient, PatientStatus, RegisterPatientCommand } from '../../api/web-api-client';\r\nimport clientService from '../../services/clientService';\r\nimport { AdapterDateFns } from '@mui/x-date-pickers/AdapterDateFns';\r\nimport enLocale from 'date-fns/locale/en-US';\r\nimport makeStyles from '@mui/styles/makeStyles';\r\nimport { getPatientPortalColor, patientStyles } from '../../themes/patients-custom-theme';\r\nimport StoreIcon from '@mui/icons-material/Store';\r\nimport ErrorOutlineOutlinedIcon from '@mui/icons-material/ErrorOutlineOutlined';\r\nimport { usePatientAppContext } from '../../context/patient-app-context';\r\nimport RwPatientPage from '../shared/RwPatientPage';\r\nimport useRwValidation, { ValidationRules } from '../../hooks/use-rw-validation';\r\nimport RwValidationErrors from '../shared/RwValidationErrors';\r\nimport validator from 'validator';\r\nimport ArrowForwardIcon from '@mui/icons-material/ArrowForward';\r\nimport CheckCircleOutlineIcon from '@mui/icons-material/CheckCircleOutline';\r\nimport PatientLoginContainer from '../shared/PatientLoginContainer';\r\nimport moment from 'moment';\r\n\r\nconst patientPortalColor = getPatientPortalColor('blue');\r\n\r\nconst useStyles = makeStyles((theme) => ({\r\n page: {\r\n width: '100%',\r\n backgroundColor: patientStyles.background,\r\n },\r\n success: {\r\n padding: '5px',\r\n borderRadius: '4px',\r\n background: patientStyles.successBackgroundColor\r\n },\r\n error: {\r\n background: \"#F44336\",\r\n borderRadius: \"4px\",\r\n width: \"100%\",\r\n height: \"100%\"\r\n },\r\n errorMessage: {\r\n boxSizing: \"border-box\",\r\n color: \"#fff\",\r\n padding: \"6px 8px\",\r\n fontSize: \"12px\"\r\n },\r\n expired: {\r\n background: \"#089AF7\",\r\n borderRadius: \"4px\",\r\n width: \"100%\",\r\n height: \"100%\"\r\n },\r\n expiredMessage: {\r\n boxSizing: \"border-box\",\r\n color: \"#fff\",\r\n padding: \"6px 8px\"\r\n },\r\n field: {\r\n background: \"#fff\",\r\n },\r\n footer: {\r\n color: patientStyles.footerColor,\r\n },\r\n arrowIcon: {\r\n marginLeft: \"8px\",\r\n },\r\n verify: {\r\n paddingTop: \"7px\",\r\n }\r\n}));\r\n\r\nconst localeMap = {\r\n en: enLocale,\r\n};\r\n\r\ninterface PatientRegisterVm {\r\n firstName: string,\r\n lastName: string,\r\n emailOrPhone: string,\r\n dateOfBirth: Date,\r\n locale: string,\r\n status: PatientStatus,\r\n error: boolean,\r\n dateOfBirthError: boolean,\r\n firstNameError: boolean,\r\n lastNameError: boolean,\r\n emailError: boolean,\r\n errorMessage: string,\r\n isExpired: boolean,\r\n}\r\n\r\nexport const RegisterPatient: React.FC = props => {\r\n const { id, type, locationId, expired } = useParams();\r\n const { ShowError, loading, location, setRwLocationId, unwrapperedDomain } = usePatientAppContext();\r\n const rules = {\r\n emailOrPhone: data => data.emailOrPhone ? validator.isEmail(data.emailOrPhone) || validator.isMobilePhone(data.emailOrPhone) ? null : 'Email or Phone is invalid' : 'Email or Phone is required',\r\n dateOfBirth: data => data.dateOfBirth ? validator.isDate(data.dateOfBirth) ? null : 'Date of Birth is invalid' : 'Date of Birth is required',\r\n firstName: data => data.firstName ? null : 'First Name is required',\r\n lastName: data => data.lastName ? null : 'Last Name is required',\r\n } as ValidationRules;\r\n const { validate, clientErrors, setServerErrors, formattedServerErrors } = useRwValidation(rules);\r\n const [patientRegisterVm, setPatientRegisterVm] = useState({\r\n firstName: '', lastName: '', emailOrPhone: '', dateOfBirth: null, locale: 'en', status: PatientStatus.Fail, error: false, dateOfBirthError: false, errorMessage: '', isExpired: (expired == \"true\")\r\n } as PatientRegisterVm);\r\n\r\n const classes = useStyles();\r\n\r\n const handleRegister = async () => {\r\n\r\n try {\r\n setServerErrors(null);\r\n const valid = validate(patientRegisterVm);\r\n if (!valid)\r\n return;\r\n\r\n const client = clientService.getFormsClient(PatientsClient, { apiPath: unwrapperedDomain });\r\n const formattedDate = moment(patientRegisterVm.dateOfBirth).utcOffset(0, false).format('MM-DD-YYYY');\r\n\r\n const cmd = new RegisterPatientCommand();\r\n cmd.locationIndex = locationId ?? location?.rwLocationId;\r\n cmd.firstName = patientRegisterVm.firstName;\r\n cmd.lastName = patientRegisterVm.lastName;\r\n cmd.emailOrPhone = patientRegisterVm.emailOrPhone;\r\n cmd.dateOfBirth = formattedDate;\r\n cmd.formsId = id;\r\n cmd.type = type;\r\n\r\n const patientDto = await client.register(cmd);\r\n\r\n setPatientRegisterVm({ ...patientRegisterVm, status: patientDto.status, error: !patientDto.status });\r\n } catch (err) {\r\n if (err?.response?.errors)\r\n setServerErrors(err);\r\n else ShowError('Couldn\\'t validate your information.');\r\n }\r\n }\r\n\r\n const handleDateChange = (newValue: Date | null) => {\r\n const copy: PatientRegisterVm = { ...patientRegisterVm } as PatientRegisterVm;\r\n copy['dateOfBirth'] = newValue;\r\n setPatientRegisterVm(copy);\r\n validate(copy, 'dateOfBirth');\r\n }\r\n\r\n const handleChange = (event: React.ChangeEvent) => {\r\n if ((event.target !== null) && (event.target != undefined) && event.target.name) {\r\n const copy: PatientRegisterVm = { ...patientRegisterVm } as PatientRegisterVm;\r\n copy[event.target.name] = event.target.value;\r\n setPatientRegisterVm(copy);\r\n validate(copy, event.target.name);\r\n }\r\n }\r\n\r\n useEffect(() => {\r\n if (locationId && !location?.rwLocationId)\r\n setRwLocationId(locationId);\r\n }, [locationId, location?.rwLocationId]); // eslint-disable-line react-hooks/exhaustive-deps\r\n\r\n\r\n if (patientRegisterVm.status === PatientStatus.Succeed) return ;\r\n\r\n return (\r\n\r\n \r\n \r\n \r\n\r\n \r\n \r\n Welcome to\r\n your Patient Portal\r\n \r\n \r\n {!patientRegisterVm.status && <>\r\n\r\n {patientRegisterVm.error &&\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n This information doesn’t match our records. Please check the fields below and try again.\r\n \r\n \r\n \r\n \r\n }\r\n\r\n {patientRegisterVm.isExpired &&\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Your patient portal access link has expired. Please reverify your information to receive a new email with a valid access link.\r\n \r\n \r\n \r\n \r\n }\r\n\r\n {!patientRegisterVm.isExpired && !patientRegisterVm.error &&\r\n \r\n Please enter your information. You will receive an email with a link to access your assigned form(s).\r\n \r\n }\r\n \r\n {formattedServerErrors &&\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n }\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n }\r\n />\r\n \r\n \r\n \r\n \r\n \r\n }\r\n\r\n \r\n {patientRegisterVm.status === PatientStatus.PreviouslyCreated &&\r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n {`Thank you. For security purposes we've sent you a link to access your forms.`}\r\n \r\n \r\n \r\n }\r\n\r\n \r\n\r\n \r\n \r\n {location &&\r\n <>\r\n \r\n \r\n \r\n \r\n {location.name} \r\n {location.address} {location.address2}
{location.city}, {location.state} {location.zip}
{location.phone}
\r\n
\r\n \r\n \r\n \r\n } \r\n
\r\n
\r\n
\r\n \r\n )\r\n}\r\n\r\nexport default RegisterPatient;\r\n\r\n"],"names":["ruleMap","clientErrors","setClientErrors","useState","serverErrors","setServerErrors","formattedServerErrors","setFormattedServerErrors","useEffect","_serverErrors$respons","errors","response","title","Object","keys","length","validate","useCallback","rules","data","field","temp","ruleName","rule","values","every","x","clearClientErrors","removeFormattedServerError","keyIndex","valueIndex","recordKey","newErrorsForKey","splice","copy","singleServerError","patientPortalColor","getPatientPortalColor","useStyles","makeStyles","theme","page","width","backgroundColor","patientStyles","success","padding","borderRadius","background","error","height","errorMessage","boxSizing","color","fontSize","expired","expiredMessage","footer","arrowIcon","marginLeft","verify","paddingTop","localeMap","en","enLocale","RegisterPatient","props","id","type","locationId","useParams","ShowError","loading","location","setRwLocationId","unwrapperedDomain","usePatientAppContext","emailOrPhone","validator","dateOfBirth","firstName","lastName","useRwValidation","patientRegisterVm","setPatientRegisterVm","locale","status","PatientStatus","dateOfBirthError","isExpired","classes","handleChange","event","target","undefined","name","value","rwLocationId","_jsx","Redirect","to","RwPatientPage","children","PatientLoginContainer","_jsxs","Grid","container","item","spacing","xs","Box","mt","Typography","variant","_Fragment","Fade","in","timeout","direction","alignItems","className","ErrorOutlineOutlinedIcon","RwValidationErrors","md","TextField","onChange","fullWidth","label","LocalizationProvider","dateAdapter","AdapterDateFns","DatePicker","newValue","inputFormat","renderInput","params","Button","onClick","async","client","clientService","PatientsClient","apiPath","formattedDate","moment","utcOffset","format","cmd","RegisterPatientCommand","locationIndex","formsId","patientDto","register","err","_err$response","ArrowForwardIcon","wrap","CheckCircleOutlineIcon","StoreIcon","style","address","address2","city","state","zip","phone"],"sourceRoot":""}