{"version":3,"sources":["Components/AppointmentBooking/AppointmentCancellation/CancelAppoinmentSuccess.js","Components/AppointmentBooking/AppointmentCancellation/CancelAppointmentFailure.js","Components/AppointmentBooking/AppointmentCancellation/CancelAppointmentWaiting.js","Utils/Request/Axios.js","Requests/contactingAPIs.js","Components/AppointmentBooking/AppointmentCancellation/CancelAppointment.js","Components/AppointmentBooking/AppointmentConfirmation/ConfirmAppoinmentSuccess.js","Components/AppointmentBooking/AppointmentConfirmation/ConfirmAppointmentFailure.js","Components/AppointmentBooking/AppointmentConfirmation/ConfirmAppointmentWaiting.js","Components/AppointmentBooking/AppointmentConfirmation/ConfirmAppointment.js","Components/AppointmentBooking/AppointmentLanding/AppointmentLanding.js","Components/OptInBooking/OptInBooking.js","Components/OptInBooking/OptInBookingConfirmation.js","Utils/Hooks/useWindowDimensions.js","Components/CarePlan/CarePlanConfirmation.js","Components/Validation/LightValidation.js","Components/OptInBooking/OptInBookingInvalid.js","Components/Validation/ValidationError.js","Utils/Hooks/useBreakPoint.js","Components/Questionnaires/singleSelectDataGrid.tsx","Components/Questionnaires/Faq/styles.js","Components/Questionnaires/Faq/Faqs.jsx","Components/Questionnaires/QuestionnairePortal.js","Components/Questionnaires/Questionnaire/Utils/Request/Axios.js","Components/Questionnaires/Questionnaire/ContactingAPIs/contactingCher.js","Components/Questionnaires/Questionnaire/ContactingAPIs/contactingOChad.js","Components/Questionnaires/Questionnaire/questions/CombineJsons.js","Components/Questionnaires/Questionnaire/questions/GetQuestionnaire.js","Components/Questionnaires/Questionnaire/Components/RadioButtonsSuicidalThoughts.js","Components/Questionnaires/Questionnaire/Components/PainWorkStatus.js","Components/Questionnaires/Questionnaire/Components/element.js","Components/Questionnaires/Questionnaire/Utils/Hooks/useBreakPoint.js","Components/Questionnaires/Questionnaire/Components/FormikStepper.tsx","Components/Questionnaires/Questionnaire/questions/validation.js","Components/Questionnaires/Questionnaire/Components/questionnaire.js","App.js","index.js"],"names":["CancelAppointmentSuccess","props","useState","count","setCount","useEffect","interval","setInterval","clearInterval","to","window","location","search","Alert","severity","variant","sx","mt","xs","sm","mb","AlertTitle","Typography","Link","href","target","rel","color","underline","CancelAppointmentFailure","statusMessage","result","CancelAppointmentWaiting","AxiosRequest","url","body","requestOptions","axios","post","BuildAxiosRequestHeaders","method","endpoint","headers","Method","Endpoint","manageAppointment","appointmentUID","a","raw","JSON","stringify","requestJson","AppointmentUID","response","data","verifyReCaptcha","token","version","captchaToken","tokenValidationType","googleVersion","redirect","fetch","then","text","catch","error","console","log","getAppointmentBookingRequestPatient","dob","postcode","email","mobileNumber","Date","day","getDate","month","getMonth","year","getFullYear","formattedDob","trim","replace","DateOfBirth","Postcode","Email","MobileNumber","GetLightValidationBody","AppointmentBookingInformation","responseData","apptTypes","IsFaceToFaceAppointment","push","IsTelephoneAppointment","IsVirtualAppointment","length","LastAppointmentDateTime","lastApptDate","diffInTime","getTime","daysSinceLastAppt","Math","round","localStorage","setItem","firstName","FirstName","AppointmentBookingGUID","appointmentTypes","daysSinceLastApt","clinician","LastAppointmentClinician","getCarePlanBase64Pdf","uuid","StatusCode","base64Pdf","RequestAppointmentBooking","request","UUID","RequestPatientQuestionnaireInfo","results","QInfo","RequestPatientSatisfactionLink","satisfactionLink","GetQuestionnaireFaqs","CancelAppointment","params","useHistory","isAppointmentCancelled","setIsAppointmentCancelled","setStatusMessage","openDialog","setOpenDialog","queryString","parse","ContactingApi","cancelAppointmentResult","e","handleClose","answer","document","title","Dialog","open","onClose","DialogTitle","id","DialogContent","DialogContentText","DialogActions","Button","onClick","autoFocus","Paper","padding","md","paddingBottom","ConfirmAppointmentSuccess","ConfirmAppointmentFailure","ConfirmAppointmentWaiting","ConfirmAppointment","isAppointmentConfirmed","setIsAppointmentConfirmed","confirmAppointmentResult","interceptors","use","config","getItem","Promise","reject","originalRequest","status","_retry","removeItem","get","appname","res","access_token","refresh_token","expires_in","defaults","common","AppointmentLanding","apptInfo","setApptInfo","loading","setLoading","prefersDarkMode","useCHUIDarkModeContext","fetchData","Box","p","textAlign","Container","maxWidth","elevation","List","ListItem","BookResendCancelConfirm","Divider","pt","pb","AppointmentDateTime","toLocaleDateString","undefined","weekday","toTimeString","ClinicType","Clinician","SiteName","Stack","divider","orientation","flexItem","direction","spacing","justifyContent","alignItems","toISOString","paddingTop","Grid","container","marginTop","item","disabled","width","iconStyle","display","marginRight","iconTextDiv","flexWrap","questionStyle","formikStyle","flexDirection","OptInBooking","errorOccurred","setErrorOccurred","optInBookingInfo","setOptInBookingInfo","reCaptchaRef","useFormikContext","createRef","maxDate","minDate","setDate","patientInformation","initialValues","validateOnChange","validateOnBlur","onSubmit","values","setSubmitting","appointmentType","earliestAppointment","validationSchema","appointmentTypeOptions","Yup","shape","required","min","toDateString","max","name","question","options","map","option","getErrorMessage","TableContainer","Table","TableBody","fontSize","TableRow","border","TableCell","component","scope","style","Call","VideoCall","Group","align","Person","ref","sitekey","process","onChange","value","setFieldValue","size","type","isSubmitting","errors","FormHelperText","OptInBookingConfirmation","getWindowDimensions","innerWidth","height","innerHeight","CarePlanConfirmation","numPages","setNumPages","windowDimensions","setWindowDimensions","handleResize","addEventListener","removeEventListener","useWindowDimensions","atob","q","base64toPDF","file","onLoadSuccess","Array","from","element","i","pageNumber","margin","bufferArray","bString","bLength","bytes","Uint8Array","ascii","charCodeAt","base64ToArrayBuffer","blobStore","Blob","navigator","msSaveOrOpenBlob","URL","createObjectURL","link","createElement","appendChild","download","click","revokeObjectURL","remove","LightValidation","recaptchaValue","setRecaptchaValue","postcodeValidatorRegex","RegExp","urlPath","pathname","handleBlur","formikProps","emailAddress","validCheck","carePlan","btoa","alert","matches","when","is","htmlFor","tabIndex","onBlur","support","mask","handleChange","phoneNumber","OptInBookingInvalid","reasonText","setReasonText","reason","ValidationError","history","explanation","goBack","getDeviceConfig","useBreakpoint","breakPoint","setBreakPoint","calcInnerWidth","throttle","GetColumns","questionnaireTypeUUIDs","questionnaireDurations","tempTimeLeftMap","patientsUuid","answersUuid","portalUuid","useBreakpoints","nameColObj","field","headerName","sortable","secsLeftToCompleteColObj","renderCell","getValue","secs","days","floor","hours","minutes","convertSecondsToTime","buttonsColObj","typeUUID","includes","bgcolor","split","boxShadow","informationColObj","Tooltip","IconButton","Info","SingleSelectDataGrid","memo","timeLeft","setTimeLeftMap","typeUUIDs","setTypeUUIDs","durations","setDurations","answersUuids","setAnswersUuids","rows","setRows","tempTimeLeft","tempTypeUUIDs","tempDurations","tempAnswersUuids","orderedRows","forEach","row","displayOrder","isCompleted","isExpired","orderValue","formattedDisplayOrder","sort","b","valA","valB","secsLeftToComplete","timer","sortModel","columns","pageSize","hideFooterSelectedRowCount","centerBox","FaqCollapsible","faqData","setOpen","Object","keys","getPrototypeOf","prototype","Styles","marginBottom","Faq","faq","index","ListItemButton","handleOpen","ListItemText","disableTypography","primary","fontWeight","Question","ExpandLess","ExpandMore","Collapse","in","timeout","unmountOnExit","disablePadding","pl","formatAnswer","Answer","tabindex","QuestionnairePortal","questionnaireDetails","setQuestionnaireDetails","questionnaireTypeMap","setQuestionnaireTypeMap","questionnairesLeft","setQuestionnairesLeft","questionnairesLeftCSS","setQuestionnairesLeftCSS","questionnairesTotalTime","setQuestionnairesTotalTime","nextDueDaysDuration","setNextDueDaysDuration","nextDueRemainingTime","setNextDueRemainingTime","refreshTimer","setRefreshTimer","setFaqData","setFeedbackUrl","faqContainer","getElementById","retrievedFaqData","statusCode","getDetails","details","questionnaire","secondsLeft","dateTimeDue","mandatory","completed","splice","lowestDueEndTime","dueEndTime","dueStartTime","questionnairesCompleted","questionnairesTotal","questionnairesEstTimeTotal","now","percentageComplete","remainingTime","timeSinceStart","ceil","feedbackUrl","reset","timerId","renderTime","dimension","time","className","getTimeDays","containerPaddingSides","background","Card","small","backgroundColor","CardContent","font","isPlaying","strokeWidth","colors","duration","initialRemainingTime","elapsedTime","transition","scrollTo","top","offsetTop","left","behavior","LiveHelp","idToken","orginialRequest","refreshToken","reload","baseUrl","sendQuestionnaireData","formikValues","questionnaireUUID","setRetryingSubmission","encodeAnswers","encodedJsonData","generateDetailedJson","detailedJson","formattedJson","jsonData","encode","toString","encodeURI","key","getInitialPsfsValues","patientQuestionnaireUuid","translateText","keysToIgnore","translationId","myHeaders","Headers","append","IsJsonValid","decodeURI","str","createQuestionnaire","questionTypesJson","questionnaireWrapper","pageHeaders","questions","questionnaireQuestionNumber","questionnaireHeaderNumber","page","pageHeadersCount","questionType","questionNumber","heading","answerType","createQuestionnaireInitialValues","questionnaireInitialValues","questionnaireTypeUuid","questionnaireUuid","assign","staticValues","intialPsfs","json","RawAnswer","textValue","getJsonQuestionnaire","questionUUID","qTestingElements","qTestingElementsFailure","wEmpty","iTestingElements","iTestingElementsFailure","qGeneralPromsInitial","qEQ5D","qStartMsk","qPSEQ8And9","wProms","iGeneralPromsInitial","iEQ5D","iStartMsk","iPSEQ8And9","qMSK","qPSFS","qMskBaselineHealth","qMskBaselinePersonal","iMSK","iPSFS","iMskBaselineHealth","iMskBaselinePersonal","qMskDischargeHealth","qMskDischargePersonal","qMskPrems","iMskDischargeHealth","iMskDischargePersonal","iMskPrems","qMskMonthsDischargePrems","iMskMonthsDischargePrems","qDecon","wDecon","iDecon","qGAD7","iGAD7","qMedialBranchBlock","iMedialBranchBlock","qPAM","wPAM","iPAM","qPHQ9","iPHQ9","qPHQ8","iPHQ8","qManchesterPromsInitial","iManchesterPromsInitial","wPSEQ8and9","qPSFSDischarge","qSleepProgramme","iSleepProgramme","qStartBack","wStartBack","iStartBack","qPainPersonal","iPainPersonal","qPainPersonalManchester","iPainPersonalManchester","qBpi","iBpi","qMpfi","iMpfi","qPainBaselineHealth","iPainBaselineHealth","qCore10","iCore10","qPainDischargePersonal","iPainDischargePersonal","qPainDischargeHealth","iPainDischargeHealth","qFft","iFft","qPainMedication","iPainMedication","qPainSatisfaction","iPainSatisfaction","RadioButtonsSuicidalThoughts","triggerAnswers","theme","useTheme","React","setValue","fullScreen","useMediaQuery","breakpoints","down","formik","RadioGroup","event","choice","FormControlLabel","control","Radio","label","questionCGrid","questionContainer","center","WorkStatusQuestions","questionCText","subQuestionInfo","otherProps","months","years","zero","cYears","cMonths","d","answers","setAnswers","c","displaying","setDisplaying","answersJson","displayingJson","displayingKeys","questionOptionsKey","j","FormControl","m","minWidth","InputLabel","Select","labelId","MenuProps","maxHeight","MenuItem","Element","questionClass","increment","customChoiceOption","followUpQuestion","followUpCheckBoxes","subFollowUpQuestionInfo","followUpOption","sliderRange","checkBoxes","optionsArray","followUpOptions","subQuestions","checkBoxesTitle","textFieldTitle","marks","selectColours","changePositionText","labels","listHeaderId","requiredQuestions","rowManagerButtons","readOnly","customMarks","PainWorkStatus","headingArray","FormikStep","children","FormikStepper","step","setStep","submitted","setSubmitted","childrenArray","Children","toArray","formikLabel","next","submit","submitting","errorMessage","successfulSubmitMessage","pop","currentChild","isLastStep","helpers","isValid","Stepper","alternativeLabel","activeStep","child","Step","StepLabel","getValidation","vm","validationMessages","test1","test2","test3","test4","test5","test6","test7","test8","of","test9","test10","test11","TestingElementsFailureSchema","PromsInitialSchema","EQ5DSchema","StartMskSchema","PSEQ8And9Schema","MskSchema","PSFSSchema","MskBaselineHealthSchema","MskBaselinePersonalSchema","MskDischargeHealthSchema","MskDischargePersonalSchema","MskPremsSchema","MskMonthsDischargePremsSchema","DeconSchema","GAD7Schema","MedialBranchBlockSchema","PAMSchema","PHQ9Schema","PHQ8Schema","ManchesterPromsInitialSchema","PSFSDischargeSchema","SleepProgrammeSchema","StartBackSchema","PainPersonalSchema","PainPersonalManchesterSchema","BpiSchema","MpfiSchema","PainBaselineHealthSchema","Core10Schema","PainDischargePersonalSchema","PainDischargeHealthSchema","FftSchema","PainMedicationSchema","PainSatisfactionSchema","test12","test13","test14","test15","test16","test17","test18","test19","test20","test21","test22","describeSymptoms","activitiesStopped","medication","previousTreatment","mobility","selfCare","usualActivities","painOrDiscomfort","anxietyOrDepression","healthToday","feelingAnxious","cantControlWorrying","worryingTooMuch","troubleRelaxing","cantSitStill","easilyAnnoyed","afraidSomethingAwfulHappens","painRating","painRating30AfterInjection","painRating60AfterInjection","painRating120AfterInjection","painRating180AfterInjection","painRating240AfterInjection","painRating360AfterInjection","painRating480AfterInjection","painRating1DayAfterInjection","comments","stiffnessDuringTheDay","StiffnessDuringTheNight","AbilityToWalk","WashingDressing","PhysicalActivityLevels","DailyRoutine","SocialActivitiesAndHobbies","NeedingHelp","TroubleSleeping","FatigueOrLowEnergy","EmotionalWellBeing","CurrentTreatment","ManageSymptoms","OverallImpact","painSite","syDuration","recommendedAmountOfphysicalActivityLevels","healthUtilisation","previousPhysiotherapy","investigationsAndTreatments","sexualOrientation","ethnicity","selfReportedAsDisabled","benefitStatus","education","workStatus","fft","fftFollowUp","globalImprovement","collaborate1","collaborate2","collaborate3","confidenceInClinicalCompetence","givenSufficientInformation","timeliness","convenience","PAM1","PAM2","PAM3","PAM4","PAM5","PAM6","PAM7","PAM8","PAM9","PAM10","PAM11","PAM12","PAM13","botheredByInterests","feelingDown","troubleSleeping","littleEnergy","offAppetite","feelingBad","struggleConcentrating","changeInSpeech","suicidalThoughts","happyWithService","whyAnswer","triedMedication","problemsWithHealth","allergies","readingDifficulties","hearingOrSpeakingDifficulties","expectations","ethnicGroup","confidentlyAccomplishGoals","confidentlyLiveNormalLifestyle","activity1","activity2","activity3","activity4","activity5","sleepPerNight","sleepQuality","sleepPerNightAfter","sleepQualityAfter","recommendProgramme","whyFeelThisWay","benefits","useful","recommend","painIntensity","unsureHowToManagePain","onlyAbleToWalkShort","botheredALotByPain","troublesomeJointPain","thinkConditionWillLast","otherImportantHealthProblems","feelingDepressedCauseOfPain","unsafeForPeWithCondition","problemFor6MonthsOrMore","painSpreadDownLegs","painShoulderNeck","walkShortDistances","dressSlowly","notSafeToBeActive","worryingThoughts","backPainTerrible","notEnjoyedThings","overallBackPain","yearOfBirth","coMorbidities","symptomDuration","highestLevelOfEducation","sexAtBirth","relationshipStatus","currentPainIntensity","painIntensityPast24Hours","usualPainIntensity","highestPainIntensity","generalActivity","mood","walkingAbility","normalWork","relationsWithOtherPeople","sleep","enjoymentOfLife","Acceptance1","Acceptance2","PresentMomentAwareness1","PresentMomentAwareness2","SelfAsContext1","SelfAsContext2","Defusion1","Defusion2","Values1","Values2","CommittedAction1","CommittedAction2","ExperientialAvoidance1","ExperientialAvoidance2","LastOfContact1","LastOfContact2","SelfAsContent1","SelfAsContent2","Fusion1","Fusion2","lackOfContactWithValues1","lackOfContactWithValues2","Inaction1","Inaction2","timesSeenGp","timesSeenDoctor","timesSeenEmergency","daysAdmittedHospital","prescribedMedications","medicationForPain","ableToDoMore","feltTense","needSupport","ableToCope","talkingFeltTooMuch","feltPanic","difficultyGettingToSleep","feltDespairing","feltUnhappy","distressingImages","recommendService","effortToUnderstand","effortMadeToListen","effortToInclude","medicationChanged","satisfiedWithTreatment","satisfiedWithStaff","generalComments","sayToSomeone","subContainer","clinicalTranslateBox","clinicalTranslateWarning","Questionnaire","searchParams","patientPortalUuid","formInfo","setFormInfo","formikStepperText","setFormikStepperText","formText","setFormText","formInfoPages","setFormInfoPages","yupValidation","setYupValidation","submitSuccess","setSubmitSuccess","submitSuccessMessage","setSubmitSuccessMessage","standardJsonQuestions","setStandardJsonQuestions","setInitialValues","isLoading","setIsLoading","retryingSubmission","useCHUIAbrRegionContext","selectedAbrRegion","setSelectedAbrRegion","useCHUILanguageSupportContext","setLanguageSupport","languageSupport","useCHUILanguageContext","setSelectedLanguage","selectedLanguage","useCHUIAbrLanguageContext","selectedAbrLanguage","setSelectedAbrLanguage","useCHUIOldAbrLanguageContext","selectedOldAbrLanguage","setSelectedOldAbrLanguage","standardValidationMessages","string","array","minimumOfOne","date","number","generalError","standardFormikStepperText","standardFormText","success","successMessage","expire","expireMessage","errorContinues","expireContinues","retrying","retryingMessage","linkProvided","clinicallyTranslatedDisclaimer","initialDisclaimerArray","finalDisclaimerArray","language","abrLanguage","abrRegion","pages","getFormPages","Validation","localQuestionnaireDetails","localStandardJsonQuestions","localInitialValues","localFormInfo","translatedFormText","translatedFormInfo","translatedFormikText","translatedValidationMessages","square","minHeight","zIndex","position","CircularProgress","checkIfClinicallyTranslated","SendQuestionnaireData","submitResult","setTimeout","valdidate","prevNumber","languageAbr","clinicallyTranslatedQuestionnaires","App","selectedTextSize","useCHUITextSizeContext","useMemo","createTheme","CHUITheme","ThemeProvider","CssBaseline","includeTranslation","getTitle","exact","path","ReactDOM","render","StrictMode"],"mappings":"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","file":"static/js/main.e57b5239.chunk.js","sourcesContent":["import React, { useEffect, useState } from \"react\";\r\nimport { Alert, AlertTitle } from \"@mui/material\";\r\nimport { Link } from \"@mui/material\";\r\nimport { Typography } from \"@mui/material\";\r\nimport { Redirect } from \"react-router\";\r\nexport function CancelAppointmentSuccess(props) {\r\n const [count, setCount] = useState(30);\r\n useEffect(() => {\r\n const interval = setInterval(() => {\r\n if (count > 0) {\r\n let time = count;\r\n setCount(time - 1);\r\n } else {\r\n setCount(\"Redirecting...\");\r\n }\r\n }, 1000);\r\n return () => {\r\n clearInterval(interval);\r\n };\r\n });\r\n\r\n if (count === 0) {\r\n return (\r\n \r\n );\r\n } else {\r\n return (\r\n \r\n \r\n Your appointment has been cancelled as requested\r\n \r\n
\r\n \r\n We will contact you via telephone to rearrange your appointment.\r\n \r\n
\r\n \r\n {\" \"}\r\n If 7 days has passed and you have not received a telephone call, get\r\n in touch with us through our website -{\" \"}\r\n \r\n https://www.connecthealth.co.uk/contact/\r\n \r\n \r\n \r\n You will also find information about your service, including opening\r\n times, services offered and who your clinicians are, on our website.\r\n \r\n
\r\n \r\n {\" \"}\r\n Please note, we are experiencing a high demand for our services, and\r\n our next available appointment may be later than you were originally\r\n offered.\r\n \r\n
\r\n This page will redirect in {count}.\r\n \r\n );\r\n }\r\n}\r\n","import React from \"react\";\r\nimport { Alert, AlertTitle, Link } from \"@mui/material\";\r\n\r\nexport function CancelAppointmentFailure(props) {\r\n const statusMessage = props.result;\r\n\r\n return (\r\n \r\n Error\r\n We have not been able to cancel your appointment, please try again later,\r\n or contact us{\" \"}\r\n \r\n here\r\n {\" \"}\r\n and quote the below error.\r\n {statusMessage}\r\n \r\n );\r\n}\r\n","import React from \"react\";\r\nimport { CHUIProgressBackdrop } from \"@connecthealth-ui/core\";\r\n\r\nexport function CancelAppointmentWaiting(props) {\r\n return ;\r\n}\r\n","import axios from \"axios\";\r\n\r\nexport function AxiosRequest(url, body, requestOptions) {\r\n return axios.post(url, body, requestOptions);\r\n}\r\n\r\nexport function BuildAxiosRequestHeaders(method, endpoint) {\r\n var myHeaders = {\r\n headers: {\r\n Method: method,\r\n Endpoint: endpoint,\r\n \"Content-Type\": \"application/json\",\r\n },\r\n };\r\n\r\n return myHeaders;\r\n}\r\n\r\naxios.interceptors.request.use(\r\n (config) => {\r\n const token = localStorage.getItem(\"access_token\");\r\n if (token) {\r\n config.headers[\"Authorization\"] = \"Bearer \" + token;\r\n config.headers[\"IdToken\"] = \"public\";\r\n }\r\n return config;\r\n },\r\n (error) => {\r\n Promise.reject(error);\r\n }\r\n);\r\n\r\naxios.interceptors.response.use(\r\n (response) => {\r\n return response;\r\n },\r\n (error) => {\r\n const originalRequest = error.config;\r\n console.log(error);\r\n if (error.response.status === 401 || !originalRequest._retry) {\r\n localStorage.removeItem(\"access_token\")\r\n localStorage.removeItem(\"refresh_token\")\r\n localStorage.removeItem(\"expires_in\")\r\n localStorage.removeItem(\"id_token\")\r\n\r\n originalRequest._retry = true;\r\n return axios\r\n .get(\"https://ochad.connecthealthworks.co.uk/api/public\", {\r\n headers: {\r\n appname: \"PatientPortal\",\r\n },\r\n })\r\n .then((res) => {\r\n if (res.status === 200) {\r\n // console.log(res.data);\r\n localStorage.setItem(\"access_token\", res.data.access_token);\r\n localStorage.setItem(\"refresh_token\", res.data.refresh_token);\r\n localStorage.setItem(\"expires_in\", res.data.expires_in);\r\n localStorage.setItem(\"id_token\", \"public\");\r\n }\r\n axios.defaults.headers.common[\"Authorization\"] =\r\n \"Bearer \" + localStorage.getItem(\"access_token\");\r\n\r\n return axios(originalRequest);\r\n });\r\n \r\n }\r\n return Promise.reject(error);\r\n }\r\n);\r\n","import { AxiosRequest, BuildAxiosRequestHeaders } from \"../Utils/Request/Axios\";\r\nimport axios from \"axios\";\r\n\r\nexport async function getAccessToken() {\r\n try {\r\n axios\r\n .get(\"https://ochad.connecthealthworks.co.uk/api/public\", {\r\n headers: {\r\n appname: \"PatientPortal\",\r\n },\r\n })\r\n .then((result) => {\r\n //console.log(result.data)\r\n localStorage.setItem(\"access_token\", result.data.access_token);\r\n localStorage.setItem(\"refresh_token\", result.data.refresh_token);\r\n localStorage.setItem(\"expires_in\", result.data.expires_in);\r\n localStorage.setItem(\"id_token\", \"public\");\r\n return result.data.access_token;\r\n })\r\n .catch((error) => console.error(error));\r\n } catch (error) {\r\n console.error(error);\r\n }\r\n}\r\n\r\nexport async function manageAppointment(appointmentUID, method) {\r\n var raw = JSON.stringify({\r\n requestJson: {\r\n AppointmentUID: appointmentUID,\r\n },\r\n });\r\n\r\n var requestOptions = BuildAxiosRequestHeaders(method, \"AppointmentBooking\");\r\n const response = await AxiosRequest(\"https://connecthealth.azure-api.net/cher/api\", raw, requestOptions);\r\n // console.log(response);\r\n return response.data;\r\n}\r\n\r\nexport async function fetchAppointment(appointmentUID, method) {\r\n var raw = JSON.stringify({\r\n requestJson: {\r\n AppointmentUID: appointmentUID,\r\n },\r\n });\r\n\r\n var requestOptions = BuildAxiosRequestHeaders(method, \"AppointmentBooking\");\r\n const response = await AxiosRequest(\"https://connecthealth.azure-api.net/cher/api\", raw, requestOptions);\r\n // console.log(response);\r\n return response.data;\r\n}\r\n\r\nexport async function getDistanceBetweenPostcodes(origin, destinations) {\r\n var raw = JSON.stringify({\r\n origin,\r\n destinations,\r\n });\r\n\r\n var requestOptions = {\r\n method: \"POST\",\r\n headers: {\r\n \"Content-Type\": \"application/json\",\r\n },\r\n body: raw,\r\n redirect: \"follow\",\r\n };\r\n\r\n let response = await fetch(\r\n \"https://ochad.connecthealthworks.co.uk/api/google/distanceBetweenPostcodes\",\r\n requestOptions\r\n )\r\n .then((response) => response.json())\r\n .then((result) => {\r\n return result;\r\n })\r\n .catch((error) => console.log(\"error\", error));\r\n\r\n return response;\r\n}\r\n\r\nexport async function verifyReCaptcha(token, version) {\r\n var requestOptions = {\r\n method: \"POST\",\r\n headers: {\r\n \"Content-Type\": \"application/json\",\r\n captchaToken: token,\r\n tokenValidationType: \"optInBooking\",\r\n googleVersion: version,\r\n },\r\n redirect: \"follow\",\r\n };\r\n\r\n let response = await fetch(\"https://ochad.connecthealthworks.co.uk/api/google/captchaVerification\", requestOptions)\r\n .then((response) => response.text())\r\n .then((result) => {\r\n return result;\r\n })\r\n .catch((error) => console.log(\"error\", error));\r\n\r\n return response;\r\n}\r\n\r\nexport async function getAppointmentBookingRequestPatient(dob, postcode, email, mobileNumber) {\r\n dob = new Date(dob);\r\n let day = dob.getDate() < 10 ? \"0\" + dob.getDate() : dob.getDate();\r\n let month = dob.getMonth() + 1;\r\n month = month < 10 ? \"0\" + month : month;\r\n let year = dob.getFullYear();\r\n\r\n let formattedDob = `${year}-${month}-${day}`;\r\n\r\n //trim white spaces at either side of text\r\n postcode = postcode.trim();\r\n email = email.trim();\r\n mobileNumber = mobileNumber.trim().replace(/\\s/g, \"\");\r\n\r\n let raw = JSON.stringify({\r\n requestJson: {\r\n DateOfBirth: formattedDob,\r\n Postcode: postcode,\r\n Email: email,\r\n MobileNumber: mobileNumber,\r\n },\r\n });\r\n raw = GetLightValidationBody(dob, postcode, email, mobileNumber);\r\n\r\n var requestOptions = BuildAxiosRequestHeaders(\"AppointmentBookingRequestInformation\", \"AppointmentBooking\");\r\n try {\r\n const response = await AxiosRequest(\"https://connecthealth.azure-api.net/cher/api\", raw, requestOptions);\r\n\r\n //if user found store info and return valid\r\n if (response.data.AppointmentBookingInformation) {\r\n let responseData = response.data.AppointmentBookingInformation;\r\n\r\n let apptTypes = [];\r\n if (responseData.IsFaceToFaceAppointment) apptTypes.push(\"Face to Face\");\r\n if (responseData.IsTelephoneAppointment) apptTypes.push(\"Telephone\");\r\n if (responseData.IsVirtualAppointment) apptTypes.push(\"Virtual\");\r\n\r\n if (apptTypes.length == 0) {\r\n apptTypes = [\"Face to Face\", \"Telephone\", \"Virtual\"];\r\n }\r\n if (responseData.LastAppointmentDateTime == null) {\r\n return \"error\";\r\n }\r\n\r\n const lastApptDate = new Date(responseData.LastAppointmentDateTime);\r\n const diffInTime = new Date().getTime() - lastApptDate.getTime();\r\n const daysSinceLastAppt = Math.round(diffInTime / (1000 * 60 * 60 * 24));\r\n\r\n if (daysSinceLastAppt > 28) {\r\n return \"expired\";\r\n }\r\n\r\n localStorage.setItem(\r\n \"patientInformation\",\r\n JSON.stringify({\r\n firstName: responseData.FirstName,\r\n AppointmentBookingGUID: responseData.AppointmentBookingGUID,\r\n appointmentTypes: apptTypes,\r\n //TODO uncomment once location returned from API\r\n // \"location\": responseData.location,\r\n daysSinceLastApt: daysSinceLastAppt,\r\n clinician: responseData.LastAppointmentClinician,\r\n })\r\n );\r\n\r\n return \"valid\";\r\n } else {\r\n switch (response.data.statusMessage) {\r\n case \"Patient Information not found\":\r\n return \"notFound\";\r\n case \"Appointment already requested\":\r\n return \"alreadyRequested\";\r\n default:\r\n return \"error\";\r\n }\r\n }\r\n } catch (e) {\r\n return \"error\"; //no response\r\n }\r\n}\r\n\r\nexport async function getCarePlanBase64Pdf(dob, postcode, email, mobileNumber, uuid) {\r\n let raw = GetLightValidationBody(dob, postcode, email, mobileNumber, uuid);\r\n\r\n var requestOptions = BuildAxiosRequestHeaders(\"validate\", \"CarePlan\");\r\n try {\r\n const response = await AxiosRequest(\"https://connecthealth.azure-api.net/cher/api\", raw, requestOptions);\r\n\r\n if (response.data.StatusCode === 200) {\r\n return { base64Pdf: [response.data.base64Pdf], firstName: [response.data.firstName] };\r\n } else {\r\n switch (response.data.statusMessage) {\r\n case \"Care Plan not found\":\r\n return \"notFound\";\r\n default:\r\n return \"error\";\r\n }\r\n }\r\n } catch (e) {\r\n return \"error\"; //no response\r\n }\r\n}\r\n\r\nexport async function RequestAppointmentBooking(request) {\r\n var raw = JSON.stringify({\r\n requestJson: {\r\n request,\r\n },\r\n });\r\n\r\n var requestOptions = BuildAxiosRequestHeaders(\"AppointmentBookingRequest\", \"AppointmentBooking\");\r\n const response = await AxiosRequest(\"https://connecthealth.azure-api.net/cher/api\", raw, requestOptions);\r\n\r\n return response.data;\r\n}\r\n\r\nfunction GetLightValidationBody(dob, postcode, email, mobileNumber, uuid = null) {\r\n dob = new Date(dob);\r\n let day = dob.getDate() < 10 ? \"0\" + dob.getDate() : dob.getDate();\r\n let month = dob.getMonth() + 1;\r\n month = month < 10 ? \"0\" + month : month;\r\n let year = dob.getFullYear();\r\n\r\n let formattedDob = `${year}-${month}-${day}`;\r\n\r\n //trim white spaces at either side of text\r\n postcode = postcode.trim();\r\n email = email.trim();\r\n mobileNumber = mobileNumber.trim().replace(/\\s/g, \"\");\r\n\r\n var raw = JSON.stringify({\r\n requestJson: {\r\n DateOfBirth: formattedDob,\r\n Postcode: postcode,\r\n Email: email,\r\n MobileNumber: mobileNumber,\r\n UUID: uuid,\r\n },\r\n });\r\n\r\n return raw;\r\n}\r\n\r\nexport async function RequestPatientQuestionnaireInfo(uuid) {\r\n var raw = JSON.stringify({\r\n requestJson: {\r\n results: [{ uuid: uuid }],\r\n },\r\n });\r\n\r\n var requestOptions = BuildAxiosRequestHeaders(\"GetPatientInfo\", \"QPortal\");\r\n const response = await AxiosRequest(\"https://connecthealth.azure-api.net/cher/api\", raw, requestOptions);\r\n\r\n return response.data.QInfo;\r\n}\r\n\r\nexport async function RequestPatientSatisfactionLink(uuid) {\r\n var raw = JSON.stringify({\r\n requestJson: {\r\n results: [{ uuid: uuid }],\r\n },\r\n });\r\n\r\n var requestOptions = BuildAxiosRequestHeaders(\"GetPatientSatisfactionLink\", \"QPortal\");\r\n const response = await AxiosRequest(\"https://connecthealth.azure-api.net/cher/api\", raw, requestOptions);\r\n\r\n return response.data.satisfactionLink;\r\n}\r\n\r\nexport async function GetQuestionnaireFaqs() {\r\n var raw = JSON.stringify({\r\n requestJson: {},\r\n });\r\n\r\n var requestOptions = BuildAxiosRequestHeaders(\"GetQuestionnaireFaq\", \"QPortal\");\r\n const response = await AxiosRequest(\"https://connecthealth.azure-api.net/cher/api\", raw, requestOptions);\r\n\r\n return response;\r\n}\r\n","import React, { Fragment, useEffect, useState } from \"react\";\r\nimport { CancelAppointmentSuccess } from \"./CancelAppoinmentSuccess\";\r\nimport { CancelAppointmentFailure } from \"./CancelAppointmentFailure\";\r\nimport { CancelAppointmentWaiting } from \"./CancelAppointmentWaiting\";\r\nimport {\r\n Paper,\r\n Dialog,\r\n DialogTitle,\r\n DialogContent,\r\n DialogContentText,\r\n DialogActions,\r\n Button,\r\n} from \"@mui/material\";\r\nimport queryString from \"query-string\";\r\nimport * as ContactingApi from \"../../../Requests/contactingAPIs\";\r\nimport { useHistory } from \"react-router-dom\";\r\n\r\nexport function CancelAppointment(params) {\r\n const { push } = useHistory();\r\n // const [accessToken, setAccessToken] = useState(null);\r\n const [isAppointmentCancelled, setIsAppointmentCancelled] = useState({});\r\n const [statusMessage, setStatusMessage] = useState({});\r\n const [openDialog, setOpenDialog] = useState(true);\r\n\r\n const value = queryString.parse(window.location.search);\r\n const appointmentUID = value.appointmentUID;\r\n\r\n // useEffect(async () => {\r\n // await setAccessToken(await ContactingApi.getAccessToken());\r\n // }, []);\r\n\r\n const CancelAppointment = async () => {\r\n setIsAppointmentCancelled(null);\r\n let cancelAppointmentResult = await ContactingApi.manageAppointment(\r\n appointmentUID,\r\n \"CancelAppointment\"\r\n );\r\n try {\r\n if (cancelAppointmentResult != null) {\r\n if (cancelAppointmentResult.StatusCode === 200) {\r\n setStatusMessage(cancelAppointmentResult.statusMessage);\r\n setIsAppointmentCancelled(200);\r\n } else {\r\n setStatusMessage(cancelAppointmentResult.statusMessage);\r\n setIsAppointmentCancelled(400);\r\n }\r\n } else {\r\n setIsAppointmentCancelled(null);\r\n }\r\n } catch (e) {\r\n setStatusMessage(e);\r\n }\r\n };\r\n\r\n const handleClose = (answer) => {\r\n if (answer === \"Agree\") {\r\n CancelAppointment();\r\n setOpenDialog(false);\r\n } else if (answer === \"Disagree\") {\r\n push(`/Appointments/AppointmentBooking?appointmentUID=${appointmentUID}`);\r\n }\r\n };\r\n\r\n useEffect(() => {\r\n document.title = \"Connect Health | Cancel Appointment\";\r\n }, []);\r\n\r\n return (\r\n \r\n \r\n \r\n {\"Cancel your appointment?\"}\r\n \r\n \r\n \r\n Are you sure you want to cancel your appointment.\r\n \r\n \r\n \r\n handleClose(\"Disagree\")}\r\n color=\"secondary\"\r\n variant=\"contained\"\r\n >\r\n No\r\n \r\n handleClose(\"Agree\")}\r\n color=\"primary\"\r\n autoFocus\r\n variant=\"contained\"\r\n >\r\n Yes\r\n \r\n \r\n \r\n {isAppointmentCancelled === 200 && (\r\n \r\n \r\n \r\n )}\r\n {(isAppointmentCancelled === 400 || isAppointmentCancelled === 403) && (\r\n \r\n \r\n \r\n )}\r\n {isAppointmentCancelled == null && }\r\n \r\n );\r\n}\r\n","import React, { useEffect, useState } from \"react\";\r\nimport { Alert, AlertTitle } from \"@mui/material\";\r\nimport { Link, Typography } from \"@mui/material\";\r\nimport { Redirect } from \"react-router\";\r\n\r\nexport function ConfirmAppointmentSuccess(props) {\r\n const [count, setCount] = useState(30);\r\n useEffect(() => {\r\n const interval = setInterval(() => {\r\n if (count > 0) {\r\n let time = count;\r\n setCount(time - 1);\r\n } else {\r\n setCount(\"Redirecting...\");\r\n }\r\n }, 1000);\r\n return () => {\r\n clearInterval(interval);\r\n };\r\n });\r\n\r\n if (count === 0) {\r\n return (\r\n \r\n );\r\n } else {\r\n return (\r\n \r\n Your appointment is confirmed\r\n
\r\n \r\n {\" \"}\r\n If you need to, you can get in touch with us through our website -{\" \"}\r\n \r\n https://www.connecthealth.co.uk/contact/\r\n \r\n \r\n \r\n You will also find information about your service, including opening\r\n times, services offered and who your clinicians are, on our website.\r\n \r\n
\r\n \r\n {\" \"}\r\n Please note, we are experiencing a high demand for our services, and\r\n we have offered you the earliest available appointment.\r\n \r\n
\r\n This page will redirect in {count}.\r\n \r\n );\r\n }\r\n}\r\n","import React from \"react\";\r\nimport { Alert, AlertTitle, Link } from \"@mui/material\";\r\n\r\nexport function ConfirmAppointmentFailure(props) {\r\n const statusMessage = props.result;\r\n\r\n return (\r\n \r\n Error\r\n We have not been able to confirm your appointment, please try again later,\r\n or contact us{\" \"}\r\n \r\n here\r\n {\" \"}\r\n and quote the below error.\r\n {statusMessage}\r\n \r\n );\r\n}\r\n","import React from \"react\";\r\nimport { CHUIProgressBackdrop } from \"@connecthealth-ui/core\";\r\n\r\nexport function ConfirmAppointmentWaiting(props) {\r\n return ;\r\n}\r\n","import React, { Fragment, useEffect, useState } from \"react\";\r\nimport { ConfirmAppointmentSuccess } from \"./ConfirmAppoinmentSuccess\";\r\nimport { ConfirmAppointmentFailure } from \"./ConfirmAppointmentFailure\";\r\nimport { ConfirmAppointmentWaiting } from \"./ConfirmAppointmentWaiting\";\r\nimport queryString from \"query-string\";\r\nimport {\r\n Paper,\r\n Dialog,\r\n DialogTitle,\r\n DialogContent,\r\n DialogContentText,\r\n DialogActions,\r\n Button,\r\n} from \"@mui/material\";\r\nimport * as ContactingApi from \"../../../Requests/contactingAPIs\";\r\nimport { useHistory } from \"react-router-dom\";\r\n\r\nexport function ConfirmAppointment(params) {\r\n // const [accessToken, setAccessToken] = useState(null);\r\n const [isAppointmentConfirmed, setIsAppointmentConfirmed] = useState({});\r\n const [statusMessage, setStatusMessage] = useState({});\r\n const [openDialog, setOpenDialog] = useState(true);\r\n const { push } = useHistory();\r\n\r\n const value = queryString.parse(window.location.search);\r\n const appointmentUID = value.appointmentUID;\r\n\r\n const ConfirmAppointment = async () => {\r\n setIsAppointmentConfirmed(null);\r\n const confirmAppointmentResult = await ContactingApi.manageAppointment(\r\n appointmentUID,\r\n \"ConfirmAppointment\"\r\n );\r\n try {\r\n if (confirmAppointmentResult != null) {\r\n if (confirmAppointmentResult.StatusCode === 200) {\r\n setStatusMessage(confirmAppointmentResult.statusMessage);\r\n setIsAppointmentConfirmed(200);\r\n } else {\r\n setStatusMessage(confirmAppointmentResult.statusMessage);\r\n setIsAppointmentConfirmed(400);\r\n }\r\n } else {\r\n setIsAppointmentConfirmed(null);\r\n }\r\n } catch (e) {\r\n setStatusMessage(e);\r\n }\r\n };\r\n\r\n useEffect(() => {\r\n document.title = \"Connect Health | Confirm Appointment\";\r\n }, []);\r\n\r\n const handleClose = (answer) => {\r\n if (answer === \"Agree\") {\r\n ConfirmAppointment();\r\n setOpenDialog(false);\r\n } else if (answer === \"Disagree\") {\r\n push(`/Appointments/AppointmentBooking?appointmentUID=${appointmentUID}`);\r\n }\r\n };\r\n\r\n return (\r\n \r\n \r\n \r\n {\"Confirm your appointment?\"}\r\n \r\n \r\n \r\n Are you sure you want to confirm your appointment.\r\n \r\n \r\n \r\n handleClose(\"Disagree\")}\r\n color=\"secondary\"\r\n variant=\"contained\"\r\n >\r\n No\r\n \r\n handleClose(\"Agree\")}\r\n color=\"primary\"\r\n autoFocus\r\n variant=\"contained\"\r\n >\r\n Yes\r\n \r\n \r\n \r\n {isAppointmentConfirmed === 200 && (\r\n \r\n \r\n \r\n )}\r\n {(isAppointmentConfirmed === 400 || isAppointmentConfirmed === 403) && (\r\n \r\n \r\n \r\n )}\r\n {isAppointmentConfirmed === null && }\r\n \r\n );\r\n}\r\n","import {\r\n Box,\r\n Button,\r\n Container,\r\n Divider,\r\n Grid,\r\n Link,\r\n List,\r\n ListItem,\r\n Paper,\r\n Stack,\r\n Typography,\r\n} from \"@mui/material\";\r\nimport React from \"react\";\r\nimport { useState } from \"react\";\r\nimport { useEffect } from \"react\";\r\nimport { Fragment } from \"react\";\r\nimport { useHistory } from \"react-router-dom\";\r\nimport queryString from \"query-string\";\r\nimport * as ContactingApi from \"../../../Requests/contactingAPIs\";\r\nimport {\r\n CHUIProgressBackdrop,\r\n useCHUIDarkModeContext,\r\n} from \"@connecthealth-ui/core\";\r\nimport CalendarTodayIcon from \"@mui/icons-material/CalendarToday\";\r\n\r\nexport function AppointmentLanding(props) {\r\n const { push } = useHistory();\r\n const [apptInfo, setApptInfo] = useState(null);\r\n const [loading, setLoading] = useState(true);\r\n const { prefersDarkMode } = useCHUIDarkModeContext();\r\n\r\n //Get appt uid\r\n const value = queryString.parse(window.location.search);\r\n const appointmentUID = value.appointmentUID;\r\n\r\n //Controls how the date object is displayed\r\n const options = {\r\n weekday: \"long\",\r\n year: \"numeric\",\r\n month: \"long\",\r\n day: \"numeric\",\r\n };\r\n\r\n useEffect(() => {\r\n async function fetchData() {\r\n try {\r\n const confirmAppointmentResult = await ContactingApi.manageAppointment(\r\n appointmentUID,\r\n \"AppointmentInformation\"\r\n );\r\n // Use this to change appt state for testing\r\n // confirmAppointmentResult.AppointmentBookingInformation.BookResendCancelConfirm =\r\n // \"Cancel\";\r\n // confirmAppointmentResult.AppointmentBookingInformation.ClinicType =\r\n // \"Physioline\";\r\n setApptInfo(confirmAppointmentResult.AppointmentBookingInformation);\r\n setLoading(false);\r\n } catch (error) {\r\n console.error(error);\r\n }\r\n }\r\n fetchData();\r\n // This is to prevent a warning of the deps array, deps array is empty to force it to run only once.\r\n //eslint-disable-next-line\r\n }, []);\r\n\r\n useEffect(() => {\r\n document.title = \"Connect Health | Appointment\";\r\n }, []);\r\n\r\n if (loading) {\r\n return ;\r\n } else {\r\n return (\r\n \r\n \r\n \r\n Hello, {apptInfo.FirstName}\r\n \r\n \r\n \r\n \r\n \r\n \r\n Appointment Details\r\n {apptInfo.BookResendCancelConfirm === \"Cancel\" &&\r\n \" - Cancelled\"}\r\n {apptInfo.BookResendCancelConfirm === \"Confirm\" &&\r\n \" - Confirmed\"}\r\n \r\n \r\n {apptInfo.BookResendCancelConfirm === \"Cancel\" && (\r\n \r\n \r\n \r\n \r\n Your appointment has been cancelled as requested. We\r\n will contact you via telephone to rearrange your\r\n appointment.\r\n \r\n \r\n \r\n \r\n If 7 days has passed and you have not received a\r\n telephone call, get in touch with us through our{\" \"}\r\n \r\n website\r\n \r\n \r\n \r\n \r\n )}\r\n \r\n \r\n \r\n Date:{\" \"}\r\n {new Date(apptInfo.AppointmentDateTime).toLocaleDateString(\r\n undefined,\r\n options\r\n ) +\r\n \" @ \" +\r\n new Date(apptInfo.AppointmentDateTime).toTimeString()}\r\n {apptInfo.ClinicType === \"Physioline\" &&\r\n \" - You may be called 30 minutes either side of this appointment time, from a withheld number.\"}\r\n \r\n \r\n \r\n Clinican: {apptInfo.Clinician}\r\n \r\n \r\n Type: {apptInfo.ClinicType}\r\n \r\n {apptInfo.IsFaceToFaceAppointment && (\r\n \r\n Sitename: {apptInfo.SiteName}\r\n \r\n )}\r\n {apptInfo.IsTelephoneAppointment && (\r\n \r\n Telephone Appointment\r\n \r\n )}\r\n {apptInfo.IsVirtualAppointment && (\r\n \r\n Virtual Appointment\r\n \r\n )}\r\n \r\n {apptInfo.BookResendCancelConfirm !== \"Cancel\" && (\r\n }\r\n direction={{ xs: \"column\", sm: \"row\", md: \"row\" }}\r\n spacing={{ xs: 1, sm: 2, md: 4 }}\r\n justifyContent=\"center\"\r\n alignItems=\"center\"\r\n >\r\n \r\n \r\n \r\n \r\n \r\n \r\n Add to Google Calendar\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 Add to Outlook Calendar\r\n \r\n \r\n \r\n \r\n \r\n \r\n )}\r\n {apptInfo.BookResendCancelConfirm !== \"Cancel\" && (\r\n \r\n \r\n \r\n \r\n You will also find lots of information on our{\" \"}\r\n \r\n website\r\n {\" \"}\r\n about your service, including opening times, services\r\n offered, a map for directions and who your clinicians\r\n are.\r\n \r\n \r\n \r\n )}\r\n \r\n \r\n\r\n \r\n \r\n \r\n push(\r\n `/Appointments/AppointmentBooking/ConfirmAppointment?appointmentUID=${appointmentUID}`\r\n )\r\n }\r\n >\r\n Confirm Appointment\r\n \r\n \r\n \r\n \r\n push(\r\n `/Appointments/AppointmentBooking/CancelAppointment?appointmentUID=${appointmentUID}`\r\n )\r\n }\r\n >\r\n Cancel Appointment\r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n }\r\n}\r\n","import React, {useState, useEffect, Fragment, createRef } from \"react\";\r\nimport * as Yup from \"yup\";\r\nimport ReCAPTCHA from \"react-google-recaptcha\";\r\nimport {\r\n Button,\r\n Container,\r\n Grid,\r\n Paper,\r\n Typography,\r\n Table,\r\n TableBody,\r\n TableCell,\r\n TableContainer,\r\n TableRow,\r\n FormHelperText,\r\n Alert,\r\n AlertTitle,\r\n } from \"@mui/material\";\r\n import { useHistory } from \"react-router-dom\";\r\n import * as ContactingApi from \"../../Requests/contactingAPIs\";\r\n import {\r\n CHUIDropDown,\r\n CHUIDatePicker,\r\n CHUIProgressBackdrop,\r\n useCHUIDarkModeContext,\r\n } from \"@connecthealth-ui/core\";\r\n import {Formik, Form, useFormikContext} from 'formik';\r\n import {Call, VideoCall, Group, LocationOn, Person} from '@mui/icons-material';\r\n\r\n\r\n\r\n //sx styles\r\n const iconStyle = { \r\n display: { xs: 'none', md: 'block',},\r\n marginRight: \"5px\"\r\n }\r\n\r\n const iconTextDiv = {\r\n display: 'flex',\r\n alignItems: 'center',\r\n flexWrap: 'wrap',\r\n }\r\n\r\n const questionStyle = {\r\n marginTop: \"80px\",\r\n }\r\n\r\n const formikStyle = {\r\n marginTop: \"60px\",\r\n display: 'flex',\r\n flexDirection: 'column',\r\n alignItems: 'center',\r\n justifyContent: 'center'\r\n }\r\n\r\n \r\n export function OptInBooking(props) {\r\n const { push } = useHistory();\r\n const [loading, setLoading] = useState(true);\r\n const [errorOccurred, setErrorOccurred] = useState(false);\r\n const [optInBookingInfo, setOptInBookingInfo] = useState({\r\n \"firstName\": \"\",\r\n \"appointmentTypeOptions\":[],\r\n \"clinician\":\"\",\r\n \"location\":\"\",\r\n \"daysSinceLastAppointment\":-1,\r\n \"AppointmentBookingGUID\" : \"\"\r\n });\r\n const { prefersDarkMode } = useCHUIDarkModeContext();\r\n const formik = useFormikContext();\r\n\r\n let reCaptchaRef = createRef()\r\n //max date a user can select \r\n let maxDate = new Date();\r\n let minDate = new Date();\r\n maxDate.setDate(maxDate.getDate() + optInBookingInfo[\"daysSinceLastAppointment\"]);\r\n minDate.setDate(minDate.getDate() - 1);\r\n\r\n\r\n useEffect(() => {\r\n document.title = \"Connect Health | Opt In Booking\";\r\n }, []);\r\n\r\n \r\n useEffect(() => {\r\n if(optInBookingInfo[\"daysSinceLastAppointment\"] > 28){\r\n push(`/Booking/OptInBookingInvalid?reason=expired`);\r\n }\r\n }, []);\r\n\r\n\r\n \r\n useEffect(() => {\r\n let patientInformation = JSON.parse(localStorage.getItem(\"patientInformation\"));\r\n setOptInBookingInfo({\r\n \"firstName\": patientInformation[\"firstName\"],\r\n \"appointmentTypeOptions\":patientInformation[\"appointmentTypes\"],\r\n \"clinician\":patientInformation[\"clinician\"],\r\n //TODO uncomment once location returned from API\r\n // \"location\":patientInformation[\"location\"],\r\n \"location\":null,\r\n \"daysSinceLastAppointment\":patientInformation[\"daysSinceLastApt\"],\r\n \"AppointmentBookingGUID\":patientInformation[\"AppointmentBookingGUID\"]\r\n })\r\n setLoading(false);\r\n }, []);\r\n\r\n\r\n \r\n if (loading) {\r\n return ;\r\n } else {\r\n return (\r\n \r\n \r\n \r\n Hello {optInBookingInfo[\"firstName\"]}, \r\n \r\n \r\n \r\n\r\n {\r\n let appointmentType = values[\"appointmentType\"];\r\n if(optInBookingInfo[\"appointmentTypeOptions\"].length == 1){\r\n appointmentType = optInBookingInfo[\"appointmentTypeOptions\"][0];\r\n }\r\n\r\n let earliestAppointment = new Date(values[\"earliestAppointment\"]);\r\n earliestAppointment = `${earliestAppointment.getFullYear()}-${(earliestAppointment.getMonth() + 1)}-${earliestAppointment.getDate()}T00:00:00`;\r\n\r\n\r\n //build response\r\n let request = {\r\n \"AppointmentBookingGUID\": optInBookingInfo[\"AppointmentBookingGUID\"],\r\n \"IsFaceToFaceAppointment\": appointmentType == \"Face to Face\" ? true : false,\r\n \"IsTelephoneAppointment\": appointmentType == \"Telephone\" ? true : false,\r\n \"IsVirtualAppointment\": appointmentType == \"Virtual\" ? true : false,\r\n \"EarliestAppointmentDate\": earliestAppointment\r\n }\r\n\r\n \r\n\r\n let response = await ContactingApi.RequestAppointmentBooking(request);\r\n if(response[\"StatusCode\"] == \"200\")\r\n {\r\n localStorage.removeItem(\"patientInformation\");\r\n\r\n push(`/Booking/OptInBookingConfirmation?clinician=${optInBookingInfo[\"clinician\"]}`);\r\n }\r\n else\r\n {\r\n setErrorOccurred(true);\r\n }\r\n }}\r\n validationSchema={\r\n optInBookingInfo.appointmentTypeOptions.length > 1 ?\r\n Yup.object().shape({\r\n appointmentType: Yup.string().required(\"This field is required\"),\r\n earliestAppointment:\r\n Yup\r\n .date()\r\n .min(minDate, `Your earliest date must be at within 45 days after your last appointment, before ${maxDate.toDateString()}`)\r\n .max(maxDate, `Your earliest date must be at within 45 days of your last appointment, before ${maxDate.toDateString()}`)\r\n .required(\"This field is required\"),\r\n })\r\n :\r\n Yup.object().shape({\r\n earliestAppointment:\r\n Yup\r\n .date()\r\n .min(minDate, `Your earliest date must be at within 45 days after your last appointment, before ${maxDate.toDateString()}`)\r\n .max(maxDate, `Your earliest date must be at within 45 days of your last appointment, before ${maxDate.toDateString()}`)\r\n .required(\"This field is required\"),\r\n })\r\n }\r\n >\r\n {(props) => (\r\n
\r\n {\r\n optInBookingInfo.appointmentTypeOptions.length > 1 &&\r\n (\r\n {\r\n \"text\": option,\r\n \"value\": option\r\n }\r\n ))}\r\n />\r\n }\r\n \r\n \r\n \r\n \r\n \r\n {getErrorMessage(props, \"earliestAppointment\")}\r\n \r\n \r\n \r\n \r\n \r\n \r\n {\r\n optInBookingInfo.appointmentTypeOptions.length == 1 &&\r\n \r\n \r\n
\r\n {\r\n optInBookingInfo[\"appointmentTypeOptions\"][0] == \"Telephone\" ?\r\n \r\n :\r\n optInBookingInfo[\"appointmentTypeOptions\"][0] == \"Virtual\" ?\r\n \r\n :\r\n \r\n }\r\n Appointment Type \r\n
\r\n
\r\n \r\n {optInBookingInfo[\"appointmentTypeOptions\"][0]}\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 {optInBookingInfo[\"location\"]}\r\n \r\n */}\r\n\r\n \r\n \r\n
\r\n \r\n Clinician \r\n
\r\n
\r\n \r\n {optInBookingInfo[\"clinician\"]}\r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n \r\n {\r\n props.setFieldValue(\"recaptcha\", value);\r\n props.setSubmitting(false);\r\n }}\r\n size=\"invisible\"\r\n />\r\n \r\n \r\n \r\n {props.isSubmitting ? \"submitting\" : \"submit\"}\r\n \r\n \r\n \r\n \r\n )}\r\n \r\n \r\n
\r\n {errorOccurred &&\r\n \r\n \r\n Error Occurred\r\n An error has occurred please check over your input and if the issues persists please contact servicedesk@connecthealth.co.uk\r\n \r\n \r\n } \r\n \r\n
\r\n );\r\n }\r\n }\r\n \r\n\r\n\r\n function getErrorMessage(props, name){\r\n let error = props.errors[name] ? \r\n (\r\n {props.errors[name]}\r\n )\r\n :\r\n null\r\n\r\n return error\r\n }","import React, { useEffect, useState } from \"react\";\r\nimport { Alert, AlertTitle, Link, Typography, Divider, Grid } from \"@mui/material\";\r\nimport queryString from \"query-string\";\r\n\r\nexport function OptInBookingConfirmation(props) {\r\n \r\n //Get clinic name\r\n const value = queryString.parse(window.location.search);\r\n const clinician = value.clinician;\r\n\r\n return (\r\n \r\n \r\n You have successfully requested a new appointment with {clinician}\r\n
\r\n \r\n {\" \"}\r\n Please note, we are experiencing a high demand for our services, and we will contact you with an offer for the earliest available appointment.\r\n \r\n
\r\n
\r\n \r\n
\r\n \r\n {\" \"}\r\n If you need to, you can get in touch with us through our website -{\" \"}\r\n \r\n https://www.connecthealth.co.uk/contact/\r\n \r\n \r\n \r\n You will also find information about your service, including opening\r\n times, services offered and who your clinicians are, on our website.\r\n \r\n
\r\n \r\n
\r\n );\r\n}\r\n","import { useState, useEffect } from \"react\";\r\n\r\nfunction getWindowDimensions() {\r\n const { innerWidth: width, innerHeight: height } = window;\r\n return {\r\n width,\r\n height,\r\n };\r\n}\r\n\r\nexport default function useWindowDimensions() {\r\n const [windowDimensions, setWindowDimensions] = useState(getWindowDimensions());\r\n\r\n useEffect(() => {\r\n function handleResize() {\r\n setWindowDimensions(getWindowDimensions());\r\n }\r\n\r\n window.addEventListener(\"resize\", handleResize);\r\n return () => window.removeEventListener(\"resize\", handleResize);\r\n }, []);\r\n\r\n return windowDimensions;\r\n}\r\n","import React, { useEffect, useState } from \"react\";\r\nimport { Alert, AlertTitle, Link, Typography, Divider, Grid, Button } from \"@mui/material\";\r\nimport queryString from \"query-string\";\r\nimport { Document, Page } from \"react-pdf/dist/esm/entry.webpack\";\r\nimport useWindowDimensions from \"../../Utils/Hooks/useWindowDimensions\";\r\n\r\nexport function CarePlanConfirmation(props) {\r\n const [numPages, setNumPages] = useState(null);\r\n const { height, width } = useWindowDimensions();\r\n\r\n function onDocumentLoadSuccess({ numPages }) {\r\n setNumPages(numPages);\r\n }\r\n\r\n //get first name\r\n const value = queryString.parse(window.location.search);\r\n const firstName = atob(value.q);\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n Hi {firstName}, we found your care plan!\r\n \r\n
\r\n \r\n Your care plan can be seen below, alternatively you can download the PDF by clicking{\" \"}\r\n Download PDF.\r\n \r\n
\r\n
\r\n \r\n
\r\n \r\n If you need to, you can get in touch with us through our website -{\" \"}\r\n \r\n https://www.connecthealth.co.uk/contact/\r\n \r\n \r\n \r\n You will also find information about your service, including opening times, services offered and\r\n who your clinicians are, on our website.\r\n \r\n
\r\n \r\n localStorage.getItem(\"carePlan\") && base64toPDF(localStorage.getItem(\"carePlan\"))\r\n }\r\n >\r\n Download PDF\r\n \r\n \r\n
\r\n\r\n \r\n {localStorage.getItem(\"carePlan\") ? (\r\n \r\n {Array.from(new Array(numPages), (element, i) => (\r\n <>\r\n 1080 ? 1080 : width} pageNumber={i + 1} />\r\n \r\n \r\n ))}\r\n \r\n ) : (\r\n \r\n Unable to load PDF \r\n \r\n )}\r\n \r\n\r\n localStorage.getItem(\"carePlan\") && base64toPDF(localStorage.getItem(\"carePlan\"))}\r\n >\r\n Download PDF\r\n \r\n
\r\n );\r\n}\r\n\r\nfunction base64toPDF(data) {\r\n var bufferArray = base64ToArrayBuffer(data);\r\n var blobStore = new Blob([bufferArray], { type: \"application/pdf\" });\r\n if (window.navigator && window.navigator.msSaveOrOpenBlob) {\r\n window.navigator.msSaveOrOpenBlob(blobStore);\r\n return;\r\n }\r\n var data = window.URL.createObjectURL(blobStore);\r\n var link = document.createElement(\"a\");\r\n document.body.appendChild(link);\r\n\r\n //download PDF\r\n link.href = data;\r\n link.download = \"CarePlan.pdf\";\r\n link.click();\r\n window.URL.revokeObjectURL(data);\r\n link.remove();\r\n\r\n // Open PDF\r\n // window.open(data);\r\n}\r\n\r\nfunction base64ToArrayBuffer(data) {\r\n var bString = window.atob(data);\r\n var bLength = bString.length;\r\n var bytes = new Uint8Array(bLength);\r\n for (var i = 0; i < bLength; i++) {\r\n var ascii = bString.charCodeAt(i);\r\n bytes[i] = ascii;\r\n }\r\n return bytes;\r\n}\r\n","import React, { useState, useEffect, Fragment, useCallback } from \"react\";\r\nimport * as Yup from \"yup\";\r\nimport { Button, Container, Grid, Paper, Typography, FormHelperText, Box } from \"@mui/material\";\r\nimport { useHistory } from \"react-router-dom\";\r\nimport * as ContactingApi from \"../../Requests/contactingAPIs\";\r\nimport {\r\n CHUIDatePicker,\r\n CHUIShortTextfield,\r\n CHUIProgressBackdrop,\r\n useCHUIDarkModeContext,\r\n} from \"@connecthealth-ui/core\";\r\nimport { Formik, Form, useFormikContext } from \"formik\";\r\nimport InputMask from \"react-input-mask\";\r\n\r\nimport queryString from \"query-string\";\r\n\r\nimport ReCAPTCHA from \"react-google-recaptcha\";\r\n\r\n//sx styles\r\nconst questionStyle = {\r\n marginTop: \"60px\",\r\n};\r\n\r\nconst formikStyle = {\r\n marginTop: \"60px\",\r\n display: \"flex\",\r\n flexDirection: \"column\",\r\n alignItems: \"center\",\r\n justifyContent: \"center\",\r\n};\r\n\r\nexport function LightValidation(props) {\r\n const [loading, setLoading] = useState(false);\r\n const [recaptchaValue, setRecaptchaValue] = useState(\"\");\r\n\r\n const { prefersDarkMode } = useCHUIDarkModeContext();\r\n const { push } = useHistory();\r\n\r\n let postcodeValidatorRegex = RegExp(\r\n \"^([A-Za-z][A-Ha-hJ-Yj-y]?[0-9][A-Za-z0-9]? ?[0-9][A-Za-z]{2}|[Gg][Ii][Rr] ?0[Aa]{2})$\"\r\n );\r\n let urlPath = window.location.pathname;\r\n\r\n useEffect(() => {\r\n document.title = \"Connect Health | Validation\";\r\n }, []);\r\n\r\n const handleBlur = (e, formikProps) => {\r\n formikProps.handleBlur(e);\r\n };\r\n\r\n if (loading) {\r\n return (\r\n \r\n \r\n \r\n );\r\n } else {\r\n return (\r\n \r\n \r\n \r\n Hello\r\n \r\n \r\n \r\n {\r\n setSubmitting(true);\r\n setLoading(true);\r\n\r\n let captchaResponse = await ContactingApi.verifyReCaptcha(recaptchaValue, \"2\");\r\n\r\n if (captchaResponse == \"invalid\") {\r\n push(`/Validation/Error?reason=error`);\r\n return;\r\n }\r\n\r\n switch (urlPath) {\r\n case \"/Booking/Validate\":\r\n let validCheck = await ContactingApi.getAppointmentBookingRequestPatient(\r\n values[\"dob\"],\r\n values[\"postcode\"],\r\n values[\"emailAddress\"],\r\n values[\"mobileNumber\"]\r\n );\r\n switch (validCheck) {\r\n case \"valid\":\r\n push(`/Booking/OptInBooking`);\r\n break;\r\n\r\n case \"notFound\":\r\n push(`/Validation/Error?reason=notFound`);\r\n break;\r\n\r\n case \"error\":\r\n push(`/Validation/Error?reason=error`);\r\n break;\r\n\r\n default:\r\n push(`/Booking/OptInBookingInvalid?reason=${validCheck}`);\r\n break;\r\n }\r\n break;\r\n\r\n case \"/CarePlan/Validate\":\r\n const value = queryString.parse(window.location.search);\r\n const uuid = value.UUID;\r\n\r\n let carePlan = await ContactingApi.getCarePlanBase64Pdf(\r\n values[\"dob\"],\r\n values[\"postcode\"],\r\n values[\"emailAddress\"],\r\n values[\"mobileNumber\"],\r\n uuid\r\n );\r\n\r\n switch (carePlan) {\r\n case \"error\":\r\n push(`/Validation/Error?reason=error`);\r\n break;\r\n\r\n case \"notFound\":\r\n push(`/Validation/Error?reason=notFound`);\r\n break;\r\n\r\n default:\r\n localStorage.setItem(\"carePlan\", carePlan[\"base64Pdf\"][0]);\r\n push(`/CarePlan/Confirmation?q=${btoa(carePlan[\"firstName\"])}`);\r\n break;\r\n }\r\n break;\r\n\r\n default:\r\n alert(\"Invalid URL\");\r\n break;\r\n }\r\n\r\n setLoading(false);\r\n }}\r\n validationSchema={Yup.object().shape(\r\n {\r\n postcode: Yup.string()\r\n .required(\"This field is required.\")\r\n .matches(postcodeValidatorRegex, \"Postcode is invalid\"),\r\n dob: Yup.date().required(\"This field is required\"),\r\n mobileNumber: Yup.string().when(\"emailAddress\", {\r\n is: (emailAddress) => !emailAddress,\r\n //length is 12 to include the space for formatting\r\n then: Yup.string()\r\n .length(12, \"Phone number is invalid\")\r\n .required(\"This field is required\"),\r\n }),\r\n emailAddress: Yup.string().when(\"mobileNumber\", {\r\n is: (mobileNumber) => !mobileNumber,\r\n then: Yup.string()\r\n .required(\"This field is required\")\r\n .email(\"Email is invalid\"),\r\n }),\r\n },\r\n [\"emailAddress\", \"mobileNumber\"]\r\n )}\r\n >\r\n {(props) => (\r\n
\r\n \r\n

Please fill in the form below so we can confirm your identity.

\r\n

\r\n Please ensure that the details you are entering are the same details\r\n your GP will have on record.\r\n

\r\n
\r\n \r\n \r\n \r\n Please enter your postcode.\r\n \r\n \r\n \r\n \r\n handleBlur(e, props)}\r\n value={props.values[\"postcode\"]}\r\n support={false}\r\n />\r\n \r\n \r\n \r\n\r\n \r\n handleBlur(e, props)}\r\n />\r\n \r\n \r\n

\r\n Please enter your mobile number and/ or email address.\r\n

\r\n
\r\n\r\n \r\n \r\n \r\n Mobile number\r\n \r\n \r\n \r\n \r\n handleBlur(e, props)}\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 Email address\r\n \r\n \r\n \r\n \r\n handleBlur(e, props)}\r\n value={props.values[\"email\"]}\r\n support={false}\r\n />\r\n \r\n \r\n \r\n\r\n {(props.values.phoneNumber != \"\" || props.values.emailAddress != \"\") &&\r\n props.values.postcode != \"\" &&\r\n props.values.dob != \"\" && (\r\n \r\n setRecaptchaValue(value)}\r\n />\r\n \r\n )}\r\n\r\n \r\n \r\n {props.isSubmitting ? \"submitting\" : \"submit\"}\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","import React, { useEffect, useState } from \"react\";\r\nimport { Alert, AlertTitle, Link, Typography, Divider, Grid, Button } from \"@mui/material\";\r\nimport { Redirect, useHistory } from \"react-router\";\r\nimport queryString from \"query-string\";\r\n\r\nexport function OptInBookingInvalid(props) {\r\n const { push } = useHistory()\r\n\r\n const [reasonText, setReasonText] = useState(null)\r\n \r\n //Get reason for invalid\r\n const value = queryString.parse(window.location.search);\r\n const reason = value.reason;\r\n\r\n useEffect(() => {\r\n switch(reason){\r\n case \"expired\":\r\n setReasonText({\r\n \"title\": \"You are no longer valid for opt in booking.\",\r\n \"explanation\": \"Due to your last appointment with us at Connect Health being more than 28 days ago, we are afraid we can no longer off you the ability to request another appointment.\"\r\n })\r\n break;\r\n\r\n case \"invalid\":\r\n setReasonText({\r\n \"title\": \"You are not valid for opt in booking.\",\r\n \"explanation\": \"We are afraid that we are unable to offer you the ability to request an appointment.\"\r\n })\r\n break;\r\n\r\n case \"alreadyRequested\":\r\n setReasonText({\r\n \"title\": \"You have already requested an appointment.\",\r\n \"explanation\": \"We will contact you with an offer for the earliest available appointment.\"\r\n })\r\n break;\r\n\r\n default: \r\n setReasonText({\r\n \"title\": \"You are not valid for opt in booking or we could not find your details.\",\r\n \"explanation\": \"We apologise for any inconvenience, if this is an error then please contact us. https://www.connecthealth.co.uk/contact/\"\r\n })\r\n break;\r\n }\r\n \r\n },[])\r\n\r\n return (\r\n \r\n {reasonText != null &&\r\n \r\n {reasonText[\"title\"]}\r\n
\r\n \r\n {\" \"}\r\n {reasonText[\"explanation\"]}\r\n \r\n
\r\n
\r\n \r\n
\r\n \r\n {\" \"}\r\n If you need to, you can get in touch with us through our website -{\" \"}\r\n \r\n https://www.connecthealth.co.uk/contact/\r\n \r\n \r\n \r\n You will also find information about your service, including opening\r\n times, services offered and who your clinicians are, on our website.\r\n \r\n
\r\n {\r\n reason == 'notFound' &&\r\n \r\n push(`/Booking/Validate`)}\r\n >\r\n {\"Try again\"}\r\n \r\n \r\n }\r\n \r\n }\r\n
\r\n );\r\n}\r\n","import React, { useEffect, useState } from \"react\";\r\nimport { Alert, AlertTitle, Link, Typography, Divider, Grid, Button } from \"@mui/material\";\r\nimport { useHistory } from \"react-router-dom\";\r\nimport queryString from \"query-string\";\r\n\r\nexport function ValidationError(props) {\r\n const [reasonText, setReasonText] = useState(null);\r\n\r\n const history = useHistory();\r\n //Get reason for invalid\r\n const value = queryString.parse(window.location.search);\r\n const reason = value.reason;\r\n\r\n useEffect(() => {\r\n switch (reason) {\r\n case \"notFound\":\r\n setReasonText({\r\n title: \"We could not find you using your details.\",\r\n explanation:\r\n \"Using the details you provided we are unable to find you, please try again and ensure that the details you are entering are the same details your GP will have on record.\",\r\n });\r\n break;\r\n\r\n case \"error\":\r\n setReasonText({\r\n title: \"An error occurred during your validation, please try again.\",\r\n explanation:\r\n \"Please ensure that the details you are entering are the same details your GP will have on record.\",\r\n });\r\n break;\r\n\r\n default:\r\n setReasonText({\r\n title: \"An error occurred during your validation, please try again.\",\r\n explanation:\r\n \"Please ensure that the details you are entering are the same details your GP will have on record.\",\r\n });\r\n break;\r\n }\r\n }, []);\r\n\r\n return (\r\n \r\n {reasonText != null && (\r\n \r\n {reasonText[\"title\"]}\r\n
\r\n {reasonText[\"explanation\"]}\r\n
\r\n
\r\n \r\n
\r\n \r\n {\" \"}\r\n If you need to contact us please visit -{\" \"}\r\n \r\n https://www.connecthealth.co.uk/patient-information/\r\n \r\n \r\n \r\n You will also find information about your service, including opening times, services offered and\r\n who your clinicians are, on our website.\r\n \r\n
\r\n \r\n \r\n {\"Try again\"}\r\n \r\n \r\n \r\n )}\r\n
\r\n );\r\n}\r\n","import {useState, useEffect} from 'react';\r\nimport throttle from 'lodash.throttle';\r\n\r\nconst getDeviceConfig = (width) => {\r\n if(width < 320) {\r\n return 'xxs';\r\n } else if(width >= 320 && width < 450 ) {\r\n return 'xs';\r\n } else if(width >= 450 && width < 720 ) {\r\n return 'sm';\r\n }else if(width >= 720 && width < 850) {\r\n return 'smd';\r\n } else if(width >= 850 && width < 1024) {\r\n return 'md';\r\n } else if(width >= 1024) {\r\n return 'lg';\r\n }\r\n};\r\n\r\nconst useBreakpoint = () => {\r\n const [breakPoint, setBreakPoint] = useState(() => getDeviceConfig(window.innerWidth));\r\n \r\n useEffect(() => {\r\n const calcInnerWidth = throttle(function() {\r\n setBreakPoint(getDeviceConfig(window.innerWidth))\r\n }, 200); \r\n window.addEventListener('resize', calcInnerWidth);\r\n return () => window.removeEventListener('resize', calcInnerWidth);\r\n }, []);\r\n\r\n return breakPoint;\r\n}\r\nexport default useBreakpoint;","import React, { memo, useEffect, useState } from \"react\";\r\nimport { DataGrid, GridColDef } from \"@mui/x-data-grid\";\r\nimport IconButton from \"@mui/material/IconButton\";\r\nimport { EightK, Info } from \"@mui/icons-material\";\r\nimport { Button, Tooltip, Typography } from \"@mui/material\";\r\nimport useBreakpoints from \"../../Utils/Hooks/useBreakPoint\";\r\nimport { Done, Clear } from \"@mui/icons-material\";\r\n\r\ninterface stringMaps {\r\n [key: string]: string;\r\n}\r\n\r\ninterface numberMaps {\r\n [key: string]: number;\r\n}\r\n\r\ninterface rows {\r\n id: number;\r\n secsLeftToComplete: number;\r\n name: string;\r\n buttons: number;\r\n duration: number;\r\n information: string;\r\n typeUUID: string;\r\n completed: boolean;\r\n dateTimeDue: string;\r\n dateTimeStarted: string;\r\n AnswersUuid: string;\r\n portalUuid: string;\r\n DisplayOrder?: number;\r\n formattedDisplayOrder?: number;\r\n push: any;\r\n}\r\n\r\nfunction GetColumns(\r\n questionnaireTypeUUIDs: stringMaps,\r\n questionnaireDurations: numberMaps,\r\n tempTimeLeftMap: numberMaps,\r\n patientsUuid: string,\r\n answersUuid: stringMaps,\r\n push: any,\r\n portalUuid: string\r\n): GridColDef[] {\r\n const breakPoint = useBreakpoints();\r\n\r\n function convertSecondsToTime(secs: number): string {\r\n let days = Math.floor(secs / (24 * 60 * 60));\r\n let hours = Math.floor((secs - days * 24 * 60 * 60) / (60 * 60));\r\n let minutes = Math.floor((secs - days * 24 * 60 * 60 - hours * 60 * 60) / 60);\r\n\r\n let dayString = days > 0 ? days + \"d \" : \"\";\r\n let hourString = hours > 0 ? hours + \"h \" : \"\";\r\n let minuteString = minutes > 0 ? minutes + \"m \" : \"\";\r\n\r\n return dayString + hourString + minuteString;\r\n }\r\n\r\n let nameColObj = {\r\n field: \"name\",\r\n headerName: \"Questionnaire Name\",\r\n width: 220,\r\n sortable: false,\r\n };\r\n let secsLeftToCompleteColObj = {\r\n field: \"secsLeftToComplete\",\r\n headerName: \"Time left\",\r\n width: 120,\r\n sortable: true,\r\n renderCell: (params: any) => {\r\n let answersUuid = params.getValue(params.id, \"AnswersUuid\");\r\n let typeUUID = questionnaireTypeUUIDs[answersUuid];\r\n if (tempTimeLeftMap[answersUuid] < 0 || tempTimeLeftMap[answersUuid] == null) {\r\n return;\r\n }\r\n return convertSecondsToTime(tempTimeLeftMap[answersUuid]);\r\n },\r\n };\r\n\r\n let buttonsWidth = breakPoint == \"lg\" || breakPoint == \"md\" || breakPoint == \"smd\" ? 130 : 75;\r\n let buttonsColObj = {\r\n field: \"buttons\",\r\n headerName: \"\",\r\n width: buttonsWidth,\r\n sortable: true,\r\n renderCell: (params: any) => {\r\n let answersUuid = params.getValue(params.id, \"AnswersUuid\");\r\n let typeUUID = questionnaireTypeUUIDs[answersUuid];\r\n let a = answersUuid;\r\n return (\r\n <>\r\n {typeUUID.includes(\"completed-\") &&\r\n (tempTimeLeftMap[answersUuid] < 0 || tempTimeLeftMap[answersUuid] == null) ? (\r\n \r\n Completed\r\n \r\n ) : typeUUID.includes(\"completed-\") ? (\r\n \r\n push(\r\n `/Questionnaire/Questionnaires?UUID=${patientsUuid}&questionnaire=${\r\n typeUUID.split(\"-\")[1]\r\n }&a=${a}&u=${portalUuid}`\r\n )\r\n }\r\n >\r\n Restart\r\n \r\n ) : tempTimeLeftMap[answersUuid] < 0 || tempTimeLeftMap[answersUuid] == null ? (\r\n \r\n Expired\r\n \r\n ) : (\r\n \r\n push(\r\n `/Questionnaire/Questionnaires?UUID=${patientsUuid}&questionnaire=${typeUUID}&a=${a}&u=${portalUuid}`\r\n )\r\n }\r\n >\r\n Start\r\n \r\n )}\r\n \r\n );\r\n },\r\n };\r\n let informationColObj = {\r\n field: \"information\",\r\n headerName: \"Information\",\r\n width: 130,\r\n sortable: false,\r\n renderCell: (params: any) => {\r\n let answersUuid = params.getValue(params.id, \"AnswersUuid\");\r\n\r\n return (\r\n <>\r\n {params.getValue(params.id, \"information\")}}>\r\n \r\n \r\n \r\n \r\n\r\n {!(tempTimeLeftMap[answersUuid] < 0 || tempTimeLeftMap[answersUuid] == null) &&\r\n questionnaireDurations[answersUuid] + \" mins\"}\r\n \r\n );\r\n },\r\n };\r\n\r\n if (breakPoint == \"lg\" || breakPoint == \"md\") {\r\n return [nameColObj, secsLeftToCompleteColObj, buttonsColObj, informationColObj];\r\n } else if (breakPoint == \"smd\") {\r\n return [nameColObj, buttonsColObj, informationColObj];\r\n } else {\r\n return [nameColObj, buttonsColObj];\r\n }\r\n}\r\n\r\nexport const SingleSelectDataGrid = memo((props: any) => {\r\n const [timeLeft, setTimeLeftMap] = useState({});\r\n const [typeUUIDs, setTypeUUIDs] = useState({});\r\n const [durations, setDurations] = useState({});\r\n const [answersUuids, setAnswersUuids] = useState({});\r\n const [rows, setRows] = useState(props[\"rows\"]);\r\n\r\n //update time left every 30 seconds, (as time does not need to be exact)\r\n useEffect(() => {\r\n setRows(props[\"rows\"]);\r\n\r\n let tempTimeLeft = JSON.parse(JSON.stringify(timeLeft));\r\n let tempTypeUUIDs = JSON.parse(JSON.stringify(typeUUIDs));\r\n let tempDurations = JSON.parse(JSON.stringify(durations));\r\n let tempAnswersUuids = JSON.parse(JSON.stringify(answersUuids));\r\n\r\n let orderedRows: any[] = [];\r\n\r\n props[\"rows\"].forEach((row: rows, i: number) => {\r\n //uncompleted 0-99\r\n //able to retry 100-199\r\n //completed 200-299\r\n //expired 300-399\r\n\r\n let displayOrder = row[\"DisplayOrder\"] ? row[\"DisplayOrder\"] : 99;\r\n let isCompleted = row[\"completed\"];\r\n let isExpired = new Date(row[\"dateTimeDue\"]) < new Date();\r\n\r\n let orderValue = displayOrder;\r\n\r\n //able to retry\r\n if (isCompleted && !isExpired) {\r\n orderValue += 100;\r\n }\r\n //completed\r\n else if (isCompleted && isExpired) {\r\n orderValue += 200;\r\n }\r\n //expired\r\n else if (!isCompleted && isExpired) {\r\n orderValue += 300;\r\n }\r\n row.formattedDisplayOrder = orderValue;\r\n\r\n orderedRows.push(row);\r\n });\r\n\r\n orderedRows.sort(function (a, b) {\r\n var valA = a.formattedDisplayOrder,\r\n valB = b.formattedDisplayOrder;\r\n // Compare the 2 dates\r\n if (valA < valB) return -1;\r\n if (valA > valB) return 1;\r\n return 0;\r\n });\r\n\r\n orderedRows.forEach((row: rows, i: number) => {\r\n let answersUuid = row[\"AnswersUuid\"];\r\n let typeUUID = row[\"typeUUID\"];\r\n if (row[\"completed\"]) {\r\n typeUUID = \"completed-\" + typeUUID;\r\n }\r\n\r\n tempTypeUUIDs[answersUuid] = typeUUID;\r\n tempAnswersUuids[answersUuid] = answersUuid;\r\n tempDurations[answersUuid] = row[\"duration\"];\r\n\r\n let secsLeftToComplete = new Date(row[\"dateTimeDue\"]).getTime() / 1000 - new Date().getTime() / 1000;\r\n tempTimeLeft[answersUuid] = secsLeftToComplete;\r\n\r\n if (row[\"completed\"]) {\r\n row[\"buttons\"] = 99999999999999;\r\n } else if (secsLeftToComplete < 0) {\r\n row[\"buttons\"] = 999999999999;\r\n } else {\r\n row[\"buttons\"] = secsLeftToComplete;\r\n }\r\n });\r\n\r\n setTimeLeftMap(tempTimeLeft);\r\n setTypeUUIDs(tempTypeUUIDs);\r\n setAnswersUuids(tempAnswersUuids);\r\n setDurations(tempDurations);\r\n\r\n const timer = window.setInterval(() => {\r\n let tempTimeLeft = JSON.parse(JSON.stringify(timeLeft));\r\n\r\n rows.forEach((row: rows) => {\r\n let answersUuid = row[\"AnswersUuid\"];\r\n let secsLeftToComplete = new Date(row[\"dateTimeDue\"]).getTime() / 1000 - new Date().getTime() / 1000;\r\n\r\n if (secsLeftToComplete > 0) {\r\n tempTimeLeft[answersUuid] = secsLeftToComplete;\r\n }\r\n });\r\n\r\n setTimeLeftMap(tempTimeLeft);\r\n }, 30000);\r\n return () => {\r\n window.clearInterval(timer);\r\n };\r\n }, [props[\"rows\"]]);\r\n\r\n return (\r\n
\r\n {props[\"rows\"].length > 0 && (\r\n \r\n )}\r\n
\r\n );\r\n});\r\n","export const centerBox = {\r\n display: \"flex\",\r\n justifyContent: \"center\",\r\n};\r\n\r\nexport const faqTitle = {\r\n width: \"100%\",\r\n};\r\n","import React, { useState, useEffect, memo } from \"react\";\r\nimport {\r\n List,\r\n ListItemButton,\r\n ListItemText,\r\n Collapse,\r\n Typography,\r\n Container,\r\n Grid,\r\n Paper,\r\n Box,\r\n Divider,\r\n} from \"@mui/material\";\r\nimport { ExpandLess, ExpandMore } from \"@mui/icons-material\";\r\nimport * as Styles from \"./styles\";\r\n\r\nexport const FaqCollapsible = memo(({ ref, faqData }) => {\r\n const [open, setOpen] = useState(null);\r\n const handleOpen = (e, index) => {\r\n if (open === index) {\r\n setOpen(null);\r\n return;\r\n }\r\n setOpen(index);\r\n };\r\n\r\n if (faqData && Object.keys(faqData).length === 0 && Object.getPrototypeOf(faqData) === Object.prototype) {\r\n return <>;\r\n }\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n FAQ\r\n \r\n \r\n \r\n \r\n {faqData.Faq.map((faq, index) => (\r\n <>\r\n handleOpen(e, index)}>\r\n \r\n {faq.Question}\r\n \r\n }\r\n />\r\n {index == open ? : }\r\n \r\n \r\n \r\n \r\n \r\n {formatAnswer(faq.Answer).map((element) => (\r\n \r\n {element === \"\" ? (\r\n \r\n ) : (\r\n {element} \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\nfunction formatAnswer(answer) {\r\n const answerArray = answer.split(\"
\");\r\n return answerArray;\r\n}\r\n","import React, { useState, useEffect, Fragment } from \"react\";\r\nimport { Button, Container, Grid, Paper, Typography, Card, Box, CardContent, IconButton } from \"@mui/material\";\r\nimport { useHistory } from \"react-router-dom\";\r\nimport queryString from \"query-string\";\r\nimport {\r\n RequestPatientQuestionnaireInfo,\r\n RequestPatientSatisfactionLink,\r\n GetQuestionnaireFaqs,\r\n} from \"../../Requests/contactingAPIs\";\r\nimport { CHUIProgressBackdrop, useCHUIDarkModeContext } from \"@connecthealth-ui/core\";\r\nimport { SingleSelectDataGrid } from \"./singleSelectDataGrid\";\r\nimport { CountdownCircleTimer } from \"react-countdown-circle-timer\";\r\nimport useBreakpoints from \"../../Utils/Hooks/useBreakPoint\";\r\nimport { FaqCollapsible } from \"./Faq/Faqs\";\r\nimport { LiveHelp } from \"@mui/icons-material\";\r\n\r\nexport function QuestionnairePortal(props) {\r\n const { push } = useHistory();\r\n const [questionnaireDetails, setQuestionnaireDetails] = useState({});\r\n const [questionnaireTypeMap, setQuestionnaireTypeMap] = useState({});\r\n\r\n const [questionnairesLeft, setQuestionnairesLeft] = useState(0);\r\n const [questionnairesLeftCSS, setQuestionnairesLeftCSS] = useState(0);\r\n const [questionnairesTotalTime, setQuestionnairesTotalTime] = useState(0);\r\n const [nextDueDaysDuration, setNextDueDaysDuration] = useState(0);\r\n const [nextDueRemainingTime, setNextDueRemainingTime] = useState(0);\r\n const [refreshTimer, setRefreshTimer] = useState(0);\r\n const [faqData, setFaqData] = useState({});\r\n\r\n const [loading, setLoading] = useState(true);\r\n const [feedbackUrl, setFeedbackUrl] = useState(\"\");\r\n const { prefersDarkMode } = useCHUIDarkModeContext();\r\n\r\n var faqContainer = document.getElementById(\"faqContainer\");\r\n const scrollToFaq = () =>\r\n window.scrollTo({\r\n top: faqContainer.offsetTop,\r\n left: 0,\r\n behavior: \"smooth\",\r\n });\r\n\r\n //Get uuid\r\n const value = queryString.parse(window.location.search);\r\n const uuid = value.UUID;\r\n\r\n useEffect(() => {\r\n document.title = \"Connect Health | Questionnaires\";\r\n }, []);\r\n\r\n useEffect(async () => {\r\n let retrievedFaqData = await GetQuestionnaireFaqs();\r\n\r\n if (\r\n retrievedFaqData.data.data == null ||\r\n retrievedFaqData.status != \"200\" ||\r\n retrievedFaqData.data.statusCode != \"200\"\r\n ) {\r\n setFaqData({});\r\n return;\r\n }\r\n\r\n setFaqData(retrievedFaqData.data.data);\r\n }, []);\r\n\r\n const getDetails = async () => {\r\n //Get questionnaire list details\r\n let details = await RequestPatientQuestionnaireInfo(uuid);\r\n\r\n if (!details) return;\r\n\r\n //provide unique ID and secondsLeft\r\n details.forEach((questionnaire, i) => {\r\n questionnaire.portalUuid = uuid;\r\n questionnaire.id = i;\r\n questionnaire.secondsLeft =\r\n new Date(questionnaire.dateTimeDue).getTime() / 1000 - new Date().getTime() / 1000 > 0;\r\n });\r\n\r\n //check if all mandatory questionnaires are answered\r\n details.forEach((questionnaire, i) => {\r\n if (questionnaire.mandatory && questionnaire.completed == false && questionnaire.secondsLeft > 0) {\r\n //hide none mandatory questionnaires\r\n details.map((questionnaire, i) => {\r\n if (questionnaire.mandatory == false) {\r\n if (i > -1) {\r\n details.splice(i, 1);\r\n }\r\n }\r\n });\r\n }\r\n });\r\n\r\n //calculate when the next questionnaire is due, for timer\r\n let lowestDueEndTime = 999999999999999;\r\n let dueEndTime = 0;\r\n let dueStartTime = 0;\r\n let questionnairesCompleted = 0;\r\n let questionnairesTotal = 0;\r\n let questionnairesEstTimeTotal = 0;\r\n\r\n details.forEach((element) => {\r\n if (new Date() / 1000 - new Date(element[\"dateTimeDue\"]) / 1000 < 0) {\r\n if (lowestDueEndTime > new Date(element[\"dateTimeDue\"]) / 1000) {\r\n lowestDueEndTime = new Date(element[\"dateTimeDue\"]) / 1000;\r\n dueEndTime = new Date(element[\"dateTimeDue\"]) / 1000;\r\n dueStartTime = new Date(element[\"dateTimeStarted\"]) / 1000;\r\n }\r\n }\r\n\r\n if (lowestDueEndTime == 999999999999999) {\r\n lowestDueEndTime = 0;\r\n dueEndTime = Date.now() / 1000;\r\n }\r\n\r\n if (element[\"completed\"] || !element[\"secondsLeft\"]) {\r\n questionnairesCompleted++;\r\n } else {\r\n questionnairesEstTimeTotal += element[\"duration\"];\r\n }\r\n\r\n questionnairesTotal++;\r\n });\r\n\r\n setQuestionnairesLeft(questionnairesTotal - questionnairesCompleted);\r\n let percentageComplete = (questionnairesCompleted / questionnairesTotal) * 100;\r\n\r\n setQuestionnairesLeftCSS(\r\n `linear-gradient(0deg, #27ae60 ${percentageComplete}%, #f5f8fc ${percentageComplete + 1}%, #f5f8fc ${\r\n 100 - percentageComplete\r\n }%)`\r\n );\r\n setQuestionnairesTotalTime(questionnairesEstTimeTotal);\r\n\r\n let remainingTime = dueEndTime - Date.now() / 1000;\r\n let timeSinceStart = dueEndTime - dueStartTime;\r\n const days = Math.ceil(remainingTime / 86400);\r\n\r\n if (remainingTime < 0) {\r\n remainingTime = 0;\r\n timeSinceStart = 0;\r\n }\r\n\r\n setNextDueDaysDuration(timeSinceStart);\r\n setNextDueRemainingTime(remainingTime);\r\n\r\n setQuestionnaireTypeMap(questionnaireTypeMap);\r\n setQuestionnaireDetails(details);\r\n setLoading(false);\r\n };\r\n\r\n useEffect(() => {\r\n document.title = \"Connect Health | Questionnaires\";\r\n }, []);\r\n\r\n useEffect(async () => {\r\n let feedbackUrl = await RequestPatientSatisfactionLink(uuid);\r\n setFeedbackUrl(feedbackUrl);\r\n getDetails();\r\n\r\n // setInterval(() => {\r\n // getDetails();\r\n // reset();\r\n // }, 30000);\r\n }, []);\r\n\r\n const tick = () => {\r\n if (refreshTimer == 0) {\r\n reset();\r\n } else {\r\n setRefreshTimer(refreshTimer - 1);\r\n }\r\n };\r\n\r\n const reset = () => setRefreshTimer(30);\r\n\r\n useEffect(() => {\r\n const timerId = setInterval(() => tick(), 1000);\r\n return () => clearInterval(timerId);\r\n });\r\n\r\n //functions for timer\r\n const renderTime = (dimension, time) => {\r\n return (\r\n
\r\n
{time}
\r\n
{dimension}
\r\n
\r\n );\r\n };\r\n const getTimeDays = (time) => (time / 86400) | 0;\r\n const getTimeHours = (time) => ((time % 86400) / 3600) | 0;\r\n\r\n const breakPoint = useBreakpoints();\r\n let containerPaddingSides = breakPoint == \"lg\" || breakPoint == \"md\" || breakPoint == \"smd\" ? 16 : 0;\r\n\r\n if (loading) {\r\n return ;\r\n } else {\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Questionnaires left\r\n \r\n \r\n {questionnairesLeft}\r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n Est time to complete\r\n \r\n \r\n {questionnairesTotalTime} Mins\r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n Next Questionnaire Due\r\n \r\n
\r\n \r\n {({ elapsedTime }) =>\r\n nextDueRemainingTime > 0\r\n ? getTimeDays(nextDueDaysDuration - elapsedTime) == 0\r\n ? renderTime(\r\n \"hours\",\r\n getTimeHours(nextDueDaysDuration - elapsedTime)\r\n )\r\n : renderTime(\r\n \"days\",\r\n getTimeDays(nextDueDaysDuration - elapsedTime)\r\n )\r\n : 0 + \" hours\"\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 Refresh in: ~{refreshTimer}s\r\n */}\r\n \r\n \r\n \r\n \r\n FAQ\r\n \r\n \r\n \r\n \r\n \r\n Questionnaires\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 Click here to provide anonymous feedback. \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","import axios from \"axios\";\r\n\r\nexport function AxiosRequest(url, body, requestOptions) {\r\n return axios.post(url, body, requestOptions);\r\n}\r\n\r\nexport function BuildAxiosRequestHeaders(method, endpoint) {\r\n var myHeaders = {\r\n headers: {\r\n Method: method,\r\n Endpoint: endpoint,\r\n \"Content-Type\": \"application/json\",\r\n },\r\n };\r\n\r\n return myHeaders;\r\n}\r\n\r\naxios.interceptors.request.use(\r\n (config) => {\r\n const token = localStorage.getItem(\"access_token\");\r\n const idToken = localStorage.getItem(\"id_token\");\r\n if (token) {\r\n config.headers[\"Authorization\"] = \"Bearer \" + token;\r\n config.headers[\"IdToken\"] = idToken;\r\n }\r\n return config;\r\n },\r\n (error) => {\r\n Promise.reject(error);\r\n }\r\n);\r\n\r\naxios.interceptors.response.use(\r\n (response) => {\r\n return response;\r\n },\r\n (error) => {\r\n const orginialRequest = error.config;\r\n\r\n if (\r\n (error.response.status === 401 || error.response.status === 400) &&\r\n localStorage.getItem(\"refresh_token\") === null &&\r\n orginialRequest.url === \"https://ochad.connecthealthworks.co.uk/api/public/refresh\"\r\n ) {\r\n window.location.reload();\r\n return Promise.reject(error);\r\n }\r\n if (\r\n (error.response.status === 401 || error.response.status === 400) &&\r\n orginialRequest.url === \"https://ochad.connecthealthworks.co.uk/api/public/refresh\"\r\n ) {\r\n window.location.reload();\r\n return Promise.reject(error);\r\n }\r\n if (error.response.status === 401 || !orginialRequest._retry) {\r\n orginialRequest._retry = true;\r\n return axios\r\n .get(\"https://ochad.connecthealthworks.co.uk/api/public/refresh\", {\r\n headers: {\r\n refreshToken: localStorage.getItem(\"refresh_token\"),\r\n appname: \"Questionnaire\",\r\n },\r\n })\r\n .then((res) => {\r\n if (res.status === 200) {\r\n // console.log(res.data);\r\n localStorage.setItem(\"access_token\", res.data.access_token);\r\n localStorage.setItem(\"refresh_token\", res.data.refresh_token);\r\n localStorage.setItem(\"expires_in\", res.data.expires_in);\r\n localStorage.setItem(\"id_token\", \"public\");\r\n }\r\n axios.defaults.headers.common[\"Authorization\"] = \"Bearer \" + localStorage.getItem(\"access_token\");\r\n\r\n return axios(orginialRequest);\r\n });\r\n }\r\n return Promise.reject(error);\r\n }\r\n);\r\n","import { BuildAxiosRequestHeaders, AxiosRequest } from \"../Utils/Request/Axios\";\r\n\r\nlet baseUrl = \"https://connecthealth.azure-api.net/cher/api\";\r\nexport default async function sendQuestionnaireData(\r\n formikValues,\r\n questionnaireUUID,\r\n UUID,\r\n answersUuid,\r\n questionnaireDetails,\r\n setRetryingSubmission\r\n) {\r\n //parse and then stringify so that a copy is created instead of a reference\r\n let encodedJsonData = await encodeAnswers(JSON.parse(JSON.stringify(formikValues)));\r\n\r\n //match values with questionnaire data\r\n let detailedJson = await generateDetailedJson(\r\n questionnaireDetails,\r\n encodedJsonData,\r\n UUID,\r\n questionnaireUUID,\r\n answersUuid\r\n );\r\n\r\n //format jsonData to match format:\r\n let formattedJson = JSON.stringify({\r\n requestJson: {\r\n results: [detailedJson],\r\n },\r\n });\r\n\r\n if (questionnaireUUID == \"testingElements\") {\r\n console.log(formattedJson);\r\n return;\r\n }\r\n\r\n let options = BuildAxiosRequestHeaders(questionnaireUUID, \"ReturnCHQuestionnaireV2\");\r\n let result = \"\";\r\n\r\n for (let i = 0; i < 3; i++) {\r\n try {\r\n result = await AxiosRequest(baseUrl, formattedJson, options);\r\n } catch (e) {\r\n return 399; //no response\r\n }\r\n\r\n if (result.data.StatusCode == 200) {\r\n break;\r\n } else {\r\n setRetryingSubmission(true);\r\n }\r\n }\r\n\r\n setRetryingSubmission(false);\r\n\r\n return { StatusCode: result.data.StatusCode, statusMessage: result.data.statusMessage };\r\n}\r\n\r\nasync function encodeAnswers(jsonData) {\r\n for (var question in jsonData) {\r\n let answer = jsonData[question];\r\n if (typeof answer == \"object\") {\r\n answer = JSON.stringify(answer);\r\n }\r\n answer = await encode(answer.toString());\r\n\r\n jsonData[question] = answer;\r\n }\r\n\r\n return jsonData;\r\n}\r\n\r\nasync function encode(text) {\r\n text.replace(/\\\\n/g, \"\\\\n\").replace(/\\\\'/g, \"\\\\'\").replace(/\\\\\"/g, '\\\\\"');\r\n text = await encodeURI(text);\r\n\r\n return text;\r\n}\r\n\r\nasync function generateDetailedJson(questionnaireDetails, encodedJsonData, UUID, questionnaireUUID, answersUuid) {\r\n //make copy of questionnaire json\r\n questionnaireDetails = JSON.parse(JSON.stringify(questionnaireDetails[0][0]));\r\n questionnaireDetails[\"UUID\"] = UUID;\r\n questionnaireDetails[\"questionnaireUUID\"] = questionnaireUUID;\r\n questionnaireDetails[\"a\"] = answersUuid;\r\n\r\n await questionnaireDetails[\"questions\"].forEach(async (element) => {\r\n //set the value from formik to the value of the question\r\n if (encodedJsonData[element[\"name\"]] != null) {\r\n let value = encodedJsonData[element[\"name\"]].split(await encode(\"[$£.;.£$]\"));\r\n\r\n element[\"rawValue\"] = value.length > 1 ? value[1] : value[0];\r\n element[\"textValue\"] = value[0];\r\n }\r\n\r\n [\r\n \"initialDisclaimer\",\r\n \"finalDisclaimer\",\r\n \"answerType\",\r\n \"name\",\r\n \"page\",\r\n \"sliderRange\",\r\n \"options\",\r\n \"choices\",\r\n \"followUpOption\",\r\n \"customChoiceOption\",\r\n \"increment\",\r\n \"marks\",\r\n \"textFieldTitle\",\r\n \"checkBoxesTitle\",\r\n \"questions\",\r\n \"subQuestions\",\r\n \"followUpOptions\",\r\n \"optionsArray\",\r\n \"checkBoxes\",\r\n \"value\",\r\n \"selectColours\",\r\n \"support\",\r\n \"changePositionText\",\r\n \"labels\",\r\n \"questionCText\",\r\n \"listHeaderId\",\r\n \"requiredQuestions\",\r\n \"readOnly\",\r\n ].forEach((key) => {\r\n delete element[key];\r\n });\r\n });\r\n\r\n return questionnaireDetails;\r\n}\r\n\r\nexport async function getInitialPsfsValues(answersUuid, patientQuestionnaireUuid) {\r\n let formattedJson = JSON.stringify({\r\n requestJson: {\r\n results: [\r\n {\r\n answersUuid: answersUuid,\r\n patientQuestionnaireUuid: patientQuestionnaireUuid,\r\n },\r\n ],\r\n },\r\n });\r\n let request = BuildAxiosRequestHeaders(\"GetInitialPsfsValues\", \"QPortal\");\r\n\r\n let result = \"\";\r\n try {\r\n result = await AxiosRequest(baseUrl, formattedJson, request);\r\n } catch (e) {\r\n return 399; //no response\r\n }\r\n\r\n return { StatusCode: result.data.statusCode, data: result.data.data };\r\n}\r\n","import axios from \"axios\";\r\nimport fetch from \"node-fetch\";\r\n\r\nexport async function getPublicToken() {\r\n try {\r\n axios\r\n .get(\"https://ochad.connecthealthworks.co.uk/api/public\", {\r\n headers: {\r\n appname: \"ChpsPremsProms\",\r\n },\r\n })\r\n .then((result) => {\r\n //console.log(result.data)\r\n localStorage.setItem(\"access_token\", result.data.access_token);\r\n localStorage.setItem(\"refresh_token\", result.data.refresh_token);\r\n localStorage.setItem(\"expires_in\", result.data.expires_in);\r\n localStorage.setItem(\"id_token\", \"public\");\r\n })\r\n .catch((error) => console.error(error));\r\n } catch (error) {\r\n console.error(error);\r\n }\r\n}\r\n\r\n//if keysToTranslate is not equal to null then only stuff specified in this will be translated\r\nexport async function translateText(text, to, from, keysToIgnore, translationId = null) {\r\n var myHeaders = new Headers();\r\n myHeaders.append(\"keysToIgnore\", keysToIgnore);\r\n myHeaders.append(\"to\", to);\r\n myHeaders.append(\"from\", \"en\");\r\n myHeaders.append(\"Content-Type\", \"application/json\");\r\n\r\n var requestOptions = {\r\n method: \"POST\",\r\n headers: myHeaders,\r\n body: text,\r\n redirect: \"follow\",\r\n translationId,\r\n };\r\n\r\n let response = await fetch(\r\n \"https://ochad.connecthealthworks.co.uk/api/google/translateTextFromJson\",\r\n requestOptions\r\n )\r\n .then((response) => response.text())\r\n .then((result) => {\r\n return result;\r\n })\r\n .catch((error) => {\r\n console.error(\"error\", error);\r\n return \"errorOccured\";\r\n });\r\n\r\n if (response == \"errorOccured\") {\r\n alert(\"An error occured during translating!\"); //some languages have characters that break the JSON\r\n return null;\r\n }\r\n\r\n response = decodeURI(response);\r\n if (!IsJsonValid(response)) alert(\"Unable to translate!\"); //some languages have characters that break the JSON\r\n\r\n response = JSON.parse(response);\r\n return response;\r\n}\r\n\r\nfunction IsJsonValid(str) {\r\n try {\r\n JSON.parse(str);\r\n } catch (e) {\r\n return false;\r\n }\r\n return true;\r\n}\r\n","import { getInitialPsfsValues } from \"../ContactingAPIs/contactingCher\";\r\n\r\nfunction createQuestionnaire(questionTypesJson, questionnaireWrapper, pageHeaders) {\r\n let questionnaire = questionnaireWrapper[0];\r\n let questions = [];\r\n let questionnaireQuestionNumber = 1;\r\n let questionnaireHeaderNumber = 1;\r\n let page = 1;\r\n let pageHeadersCount = 0;\r\n\r\n for (let questionType of questionTypesJson) {\r\n //add page header if there is one\r\n if (pageHeaders[page - 1] != null && pageHeaders[page - 1] != \"\") {\r\n questions[questionnaireQuestionNumber + questionnaireHeaderNumber - 2 + pageHeadersCount] = {\r\n id: `Page${page}Header`,\r\n page: page,\r\n heading: pageHeaders[page - 1],\r\n answerType: \"header\",\r\n name: `Page${page}Header`,\r\n };\r\n\r\n pageHeadersCount++;\r\n }\r\n\r\n //add the pages questions\r\n for (let questionNumber in questionType) {\r\n questionType[questionNumber][\"page\"] = page;\r\n\r\n if (questionType[questionNumber][\"answerType\"] == \"header\") {\r\n questionType[questionNumber][\"id\"] = `Header${questionnaireHeaderNumber}`;\r\n questionnaireHeaderNumber++;\r\n } else {\r\n questionType[questionNumber][\"id\"] = `Question${questionnaireQuestionNumber}`;\r\n questionnaireQuestionNumber++;\r\n }\r\n\r\n questions[questionnaireQuestionNumber + questionnaireHeaderNumber - 3 + pageHeadersCount] =\r\n questionType[questionNumber];\r\n }\r\n\r\n page++;\r\n }\r\n\r\n //add the questions/\r\n questionnaire[\"questions\"] = questions;\r\n\r\n return [questionnaire];\r\n}\r\n\r\nasync function createQuestionnaireInitialValues(\r\n questionnaireInitialValues,\r\n questionnaireTypeUuid = \"\",\r\n answersUuid = \"\",\r\n questionnaireUuid = \"\"\r\n) {\r\n let initialValues = {};\r\n\r\n questionnaireInitialValues.forEach((element) => {\r\n Object.assign(initialValues, element);\r\n });\r\n\r\n let staticValues;\r\n if (questionnaireTypeUuid == \"om6w4\") {\r\n staticValues = await getInitialPsfsValues(answersUuid, questionnaireUuid);\r\n if (\r\n staticValues.data && // 👈 null and undefined check\r\n Object.keys(staticValues.data).length === 0 &&\r\n Object.getPrototypeOf(staticValues.data) === Object.prototype\r\n ) {\r\n staticValues = null;\r\n }\r\n }\r\n\r\n if (!!staticValues && staticValues.StatusCode == \"200\" && staticValues.data) {\r\n staticValues.data.intialPsfs.map((answer, i) => {\r\n let json = JSON.parse(answer.RawAnswer);\r\n if (json && Object.keys(json).length === 0 && Object.getPrototypeOf(json) === Object.prototype) {\r\n initialValues[`activity${i + 1}`] = \"\";\r\n return;\r\n }\r\n let textValue = json[`activity${i + 1}`][\"text\"];\r\n initialValues[`activity${i + 1}`] = textValue == \"{}\" ? \"\" : textValue;\r\n });\r\n }\r\n return initialValues;\r\n}\r\n\r\nexport { createQuestionnaire, createQuestionnaireInitialValues };\r\n","import { createQuestionnaire, createQuestionnaireInitialValues } from \"./CombineJsons\";\r\n\r\n//Initial values\r\nimport iDecon from \"./Json/InitialValueSets/Decon.json\";\r\nimport iEQ5D from \"./Json/InitialValueSets/EQ5D.json\";\r\nimport iGAD7 from \"./Json/InitialValueSets/GAD7.json\";\r\nimport iMedialBranchBlock from \"./Json/InitialValueSets/MedialBranchBlock.json\";\r\nimport iMSK from \"./Json/InitialValueSets/MSK.json\";\r\nimport iMskBaselineHealth from \"./Json/InitialValueSets/MskBaselineHealth.json\";\r\nimport iMskBaselinePersonal from \"./Json/InitialValueSets/MskBaselinePersonal.json\";\r\nimport iMskDischargeHealth from \"./Json/InitialValueSets/MskDischargeHealth.json\";\r\nimport iMskDischargePersonal from \"./Json/InitialValueSets/MskDischargePersonal.json\";\r\nimport iMskMonthsDischargePrems from \"./Json/InitialValueSets/MskMonthsDischargePrems.json\";\r\nimport iMskPrems from \"./Json/InitialValueSets/MskPrems.json\";\r\nimport iPAM from \"./Json/InitialValueSets/PAM.json\";\r\nimport iPHQ8 from \"./Json/InitialValueSets/PHQ8.json\";\r\nimport iPHQ9 from \"./Json/InitialValueSets/PHQ9.json\";\r\nimport iGeneralPromsInitial from \"./Json/InitialValueSets/GeneralPromsInitial.json\";\r\nimport iManchesterPromsInitial from \"./Json/InitialValueSets/ManchesterPromsInitial.json\";\r\nimport iPSEQ8And9 from \"./Json/InitialValueSets/PSEQ8And9.json\";\r\nimport iPSFS from \"./Json/InitialValueSets/PSFS.json\";\r\nimport iPSFSDischarge from \"./Json/InitialValueSets/PSFSDischarge.json\";\r\nimport iSleepProgramme from \"./Json/InitialValueSets/SleepProgramme.json\";\r\nimport iStartMsk from \"./Json/InitialValueSets/StartMsk.json\";\r\nimport iStartBack from \"./Json/InitialValueSets/StartBack.json\";\r\nimport iTestingElements from \"./Json/InitialValueSets/TestingElements.json\";\r\nimport iTestingElementsFailure from \"./Json/InitialValueSets/TestingElementsFailure.json\";\r\nimport iPainPersonal from \"./Json/InitialValueSets/PainPersonal.json\";\r\nimport iPainBaselineHealth from \"./Json/InitialValueSets/PainBaselineHealth.json\";\r\nimport iBpi from \"./Json/InitialValueSets/Bpi.json\";\r\nimport iMpfi from \"./Json/InitialValueSets/MPFI.json\";\r\nimport iCore10 from \"./Json/InitialValueSets/CORE10.json\";\r\nimport iPainDischargePersonal from \"./Json/InitialValueSets/PainDischargePersonal.json\";\r\nimport iPainDischargeHealth from \"./Json/InitialValueSets/PainDischargeHealth.json\";\r\nimport iFft from \"./Json/InitialValueSets/Fft.json\";\r\nimport iPainMedication from \"./Json/InitialValueSets/PainMedication.json\";\r\nimport iPainSatisfaction from \"./Json/InitialValueSets/PainSatisfaction.json\";\r\nimport iPainPersonalManchester from \"./Json/InitialValueSets/PainPersonalManchester.json\";\r\n\r\n//Question JSONs\r\nimport qDecon from \"./Json/QuestionSets/Decon.json\";\r\nimport qEQ5D from \"./Json/QuestionSets/EQ5D.json\";\r\nimport qGAD7 from \"./Json/QuestionSets/GAD7.json\";\r\nimport qMedialBranchBlock from \"./Json/QuestionSets/MedialBranchBlock.json\";\r\nimport qMSK from \"./Json/QuestionSets/MSK.json\";\r\nimport qMskBaselineHealth from \"./Json/QuestionSets/MskBaselineHealth.json\";\r\nimport qMskBaselinePersonal from \"./Json/QuestionSets/MskBaselinePersonal.json\";\r\nimport qMskDischargeHealth from \"./Json/QuestionSets/MskDischargeHealth.json\";\r\nimport qMskDischargePersonal from \"./Json/QuestionSets/MskDischargePersonal.json\";\r\nimport qMskMonthsDischargePrems from \"./Json/QuestionSets/MskMonthsDischargePrems.json\";\r\nimport qMskPrems from \"./Json/QuestionSets/MskPrems.json\";\r\nimport qPAM from \"./Json/QuestionSets/PAM.json\";\r\nimport qPHQ8 from \"./Json/QuestionSets/PHQ8.json\";\r\nimport qPHQ9 from \"./Json/QuestionSets/PHQ9.json\";\r\nimport qGeneralPromsInitial from \"./Json/QuestionSets/GeneralPromsInitial.json\";\r\nimport qManchesterPromsInitial from \"./Json/QuestionSets/ManchesterPromsInitial.json\";\r\nimport qPSEQ8And9 from \"./Json/QuestionSets/PSEQ8And9.json\";\r\nimport qPSFS from \"./Json/QuestionSets/PSFS.json\";\r\nimport qPSFSDischarge from \"./Json/QuestionSets/PSFSDischarge.json\";\r\nimport qSleepProgramme from \"./Json/QuestionSets/SleepProgramme.json\";\r\nimport qStartMsk from \"./Json/QuestionSets/StartMsk.json\";\r\nimport qStartBack from \"./Json/QuestionSets/StartBack.json\";\r\nimport qTestingElements from \"./Json/QuestionSets/TestingElements.json\";\r\nimport qTestingElementsFailure from \"./Json/QuestionSets/TestingElementsFailure.json\";\r\nimport qPainPersonal from \"./Json/QuestionSets/PainPersonal.json\";\r\nimport qPainBaselineHealth from \"./Json/QuestionSets/PainBaselineHealth.json\";\r\nimport qBpi from \"./Json/QuestionSets/Bpi.json\";\r\nimport qMpfi from \"./Json/QuestionSets/MPFI.json\";\r\nimport qCore10 from \"./Json/QuestionSets/CORE10.json\";\r\nimport qPainDischargePersonal from \"./Json/QuestionSets/PainDischargePersonal.json\";\r\nimport qPainDischargeHealth from \"./Json/QuestionSets/PainDischargeHealth.json\";\r\nimport qFft from \"./Json/QuestionSets/Fft.json\";\r\nimport qPainMedication from \"./Json/QuestionSets/PainMedication.json\";\r\nimport qPainSatisfaction from \"./Json/QuestionSets/PainSatisfaction.json\";\r\nimport qPainPersonalManchester from \"./Json/QuestionSets/PainPersonalManchester.json\";\r\n\r\n//Question set wrapper JSONS\r\nimport wDecon from \"./Json/QuestionSetWrappers/Decon.json\";\r\nimport wEmpty from \"./Json/QuestionSetWrappers/Empty.json\";\r\nimport wPAM from \"./Json/QuestionSetWrappers/PatientActivation.json\";\r\nimport wProms from \"./Json/QuestionSetWrappers/Proms.json\";\r\nimport wPSEQ8and9 from \"./Json/QuestionSetWrappers/PSEQ8And9.json\";\r\nimport wStartBack from \"./Json/QuestionSetWrappers/StartBack.json\";\r\nimport wPainBaseline from \"./Json/QuestionSetWrappers/PainBaseline.json\";\r\nimport wPainDischarge from \"./Json/QuestionSetWrappers/PainDischarge.json\";\r\n\r\nexport async function getJsonQuestionnaire(questionUUID, answersUuid, questionnaireUuid) {\r\n let initialValues;\r\n switch (questionUUID) {\r\n //testingElements\r\n case \"testingElements\":\r\n return [\r\n createQuestionnaire([qTestingElements, qTestingElementsFailure], wEmpty, [\"\", \"\"]),\r\n await createQuestionnaireInitialValues([iTestingElements, iTestingElementsFailure]),\r\n ];\r\n //Proms\r\n case \"120ph\":\r\n return [\r\n createQuestionnaire([qGeneralPromsInitial, qEQ5D, qStartMsk, qPSEQ8And9], wProms, [\"\", \"\", \"\", \"\"]),\r\n await createQuestionnaireInitialValues([iGeneralPromsInitial, iEQ5D, iStartMsk, iPSEQ8And9]),\r\n ];\r\n //Proms south\r\n case \"093pa\":\r\n return [\r\n createQuestionnaire([qGeneralPromsInitial, qEQ5D, qStartMsk], wProms, [\"\", \"\", \"\"]),\r\n await createQuestionnaireInitialValues([iGeneralPromsInitial, iEQ5D, iStartMsk]),\r\n ];\r\n //MskPromsBaseline\r\n case \"12aia\":\r\n return [\r\n createQuestionnaire([qMSK, qEQ5D, qPSFS, qStartMsk, qMskBaselineHealth, qMskBaselinePersonal], wEmpty, [\r\n \"The following questions are designed to help your clinician understand more about your symptoms, and how they are impacting on you. This will enable us to ensure your treatment is individualised to you, and your needs. This section should take no more than five minutes. [NEWLINE] [NEWLINE] Please respond to these questions with reference to why you have been referred to the MSK/Physiotherapy service. If you have more than one problem for which we are seeing you e.g. you have both back pain and foot pain, then please consider both problems when answering the questions.\",\r\n \"\",\r\n \"\",\r\n \"\",\r\n \"Thank you for completing those questions. This second set of questions allows you to provide some more detail regarding your symptoms and general health. This will allow your clinician to obtain a clear picture of how they can best help you. This section should take no more than five minutes:\",\r\n \"Thank you for completing those questions. This final set of questions is designed to inform your clinician a little more about you as a person to ensure your treatment is individualised to you, and your needs. This section should take no more than five minutes:\",\r\n ]),\r\n await createQuestionnaireInitialValues([\r\n iMSK,\r\n iEQ5D,\r\n iPSFS,\r\n iStartMsk,\r\n iMskBaselineHealth,\r\n iMskBaselinePersonal,\r\n ]),\r\n ];\r\n //MskPromsDischarge\r\n case \"poa2h\":\r\n return [\r\n createQuestionnaire(\r\n [qMSK, qEQ5D, qPSFS, qStartMsk, qMskDischargeHealth, qMskDischargePersonal, qMskPrems],\r\n wEmpty,\r\n [\r\n \"The following questions are designed to help your clinician understand more about your current symptoms (if any), and how they are impacting on you. This will enable us to understand how effective your treatment has been. This section should take no more than five minutes. [NEWLINE] [NEWLINE] Please respond to these questions with reference to why you have been referred to the MSK/Physiotherapy service. If you have more than one problem for which we are seeing you e.g. you have both back pain and foot pain, then please consider both problems when answering the questions.\",\r\n \"\",\r\n \"\",\r\n \"\",\r\n \"Thank you for completing those questions. This second set of questions allows you to provide some more detail regarding your symptoms and general health. This will allow us to understand not only how effective your treatment has been at resolving your symptoms, but also how well we have impacted your wider health. This section should take no more than five minutes:\",\r\n \"Thank you for completing those questions. This final set of questions will allow us to understand how well we have impacted your wider health and wellbeing. This section should take no more than five minutes:\",\r\n \"\",\r\n ]\r\n ),\r\n await createQuestionnaireInitialValues([\r\n iMSK,\r\n iEQ5D,\r\n iPSFS,\r\n iStartMsk,\r\n iMskDischargeHealth,\r\n iMskDischargePersonal,\r\n iMskPrems,\r\n ]),\r\n ];\r\n //MskPromsMonthsAfterDischarge\r\n case \"bhaswe\":\r\n return [\r\n createQuestionnaire(\r\n [qMSK, qEQ5D, qStartMsk, qMskDischargeHealth, qMskDischargePersonal, qMskMonthsDischargePrems],\r\n wEmpty,\r\n [\r\n \"The following questions are designed to help your clinician understand more about your current symptoms (if any), and how they are impacting on you. This will enable us to understand how effective your treatment has been. This section should take no more than five minutes. [NEWLINE] [NEWLINE] Please respond to these questions with reference to why you have been referred to the MSK/Physiotherapy service. If you have more than one problem for which we are seeing you e.g. you have both back pain and foot pain, then please consider both problems when answering the questions.\",\r\n \"\",\r\n \"\",\r\n \"Thank you for completing those questions. This second set of questions allows you to provide some more detail regarding your symptoms and general health. This will allow your clinician to obtain a clear picture of how they can best help you. This section should take no more than five minutes:\",\r\n \"Thank you for completing those questions. This final set of questions is designed to inform your clinician a little more about you as a person to ensure your treatment is individualised to you, and your needs. This section should take no more than five minutes:\",\r\n \"\",\r\n ]\r\n ),\r\n await createQuestionnaireInitialValues([\r\n iMSK,\r\n iEQ5D,\r\n iStartMsk,\r\n iMskDischargeHealth,\r\n iMskDischargePersonal,\r\n iMskMonthsDischargePrems,\r\n ]),\r\n ];\r\n //Decon\r\n case \"92opa\":\r\n return [createQuestionnaire([qDecon], wDecon, [\"\"]), await createQuestionnaireInitialValues([iDecon])];\r\n //EQ5D\r\n case \"apwed\":\r\n return [createQuestionnaire([qEQ5D], wEmpty, [\"\"]), await createQuestionnaireInitialValues([iEQ5D])];\r\n //GAD7\r\n case \"bijwa\":\r\n return [createQuestionnaire([qGAD7], wEmpty, [\"\"]), await createQuestionnaireInitialValues([iGAD7])];\r\n //MedialBranchBlock\r\n case \"ph28a\":\r\n return [\r\n createQuestionnaire([qMedialBranchBlock], wEmpty, [\"\"]),\r\n await createQuestionnaireInitialValues([iMedialBranchBlock]),\r\n ];\r\n //MSK\r\n case \"9032m\":\r\n return [createQuestionnaire([qMSK], wEmpty, [\"\"]), await createQuestionnaireInitialValues([iMSK])];\r\n //MskBaselineHealth\r\n case \"ejaqr\":\r\n return [\r\n createQuestionnaire([qMskBaselineHealth], wEmpty, [\"\"]),\r\n await createQuestionnaireInitialValues([iMskBaselineHealth]),\r\n ];\r\n //MskBaselinePersonal\r\n case \"fioja\":\r\n return [\r\n createQuestionnaire([qMskBaselinePersonal], wEmpty, [\"\"]),\r\n await createQuestionnaireInitialValues([iMskBaselinePersonal]),\r\n ];\r\n //MskDischargeHealth\r\n case \"gikow\":\r\n return [\r\n createQuestionnaire([qMskDischargeHealth], wEmpty, [\"\"]),\r\n await createQuestionnaireInitialValues([iMskDischargeHealth]),\r\n ];\r\n //MskDischargePersonal\r\n case \"hpoaw\":\r\n return [\r\n createQuestionnaire([qMskDischargePersonal], wEmpty, [\"\"]),\r\n await createQuestionnaireInitialValues([iMskDischargePersonal]),\r\n ];\r\n //MskMonthsDischargePrems\r\n case \"iu890\":\r\n return [\r\n createQuestionnaire([qMskMonthsDischargePrems], wEmpty, [\"\"]),\r\n await createQuestionnaireInitialValues([iMskMonthsDischargePrems]),\r\n ];\r\n //Msk Prems\r\n case \"kaimj\":\r\n return [\r\n createQuestionnaire([qMskPrems], wEmpty, [\"\"]),\r\n await createQuestionnaireInitialValues([qMskPrems]),\r\n ];\r\n //PatientActivation\r\n case \"r03jg\":\r\n return [createQuestionnaire([qPAM], wPAM, [\"\"]), await createQuestionnaireInitialValues([iPAM])];\r\n //PHQ9\r\n case \"lca91\":\r\n return [createQuestionnaire([qPHQ9], wEmpty, [\"\"]), await createQuestionnaireInitialValues([iPHQ9])];\r\n //PHQ8\r\n case \"l4289\":\r\n return [createQuestionnaire([qPHQ8], wEmpty, [\"\"]), await createQuestionnaireInitialValues([iPHQ8])];\r\n //GeneralPromsInitial\r\n case \"mklaw\":\r\n return [\r\n createQuestionnaire([qGeneralPromsInitial], wProms, [\"\"]),\r\n await createQuestionnaireInitialValues([iGeneralPromsInitial]),\r\n ];\r\n //ManchesterPromsInitial\r\n case \"94lrp\":\r\n return [\r\n createQuestionnaire([qManchesterPromsInitial], wProms, [\"\"]),\r\n await createQuestionnaireInitialValues([iManchesterPromsInitial]),\r\n ];\r\n //PSEQ8And9\r\n case \"n890a\":\r\n return [\r\n createQuestionnaire([qPSEQ8And9], wPSEQ8and9, [\"\"]),\r\n await createQuestionnaireInitialValues([iPSEQ8And9]),\r\n ];\r\n //PSFS Baseline\r\n case \"omaw4\":\r\n return [createQuestionnaire([qPSFS], wEmpty, [\"\"]), await createQuestionnaireInitialValues([iPSFS])];\r\n //PSFS Discharge\r\n case \"om6w4\":\r\n initialValues = await createQuestionnaireInitialValues(\r\n [qPSFSDischarge],\r\n \"om6w4\",\r\n answersUuid,\r\n questionnaireUuid\r\n );\r\n return [createQuestionnaire([qPSFSDischarge], wEmpty, [\"\"]), initialValues];\r\n //SleepProgramme\r\n case \"p21af\":\r\n return [\r\n createQuestionnaire([qSleepProgramme], wEmpty, [\"\"]),\r\n await createQuestionnaireInitialValues([iSleepProgramme]),\r\n ];\r\n //StartMsk\r\n case \"q456a\":\r\n return [\r\n createQuestionnaire([qStartMsk], wEmpty, [\"\"]),\r\n await createQuestionnaireInitialValues([iStartMsk]),\r\n ];\r\n //StartBack\r\n case \"q5aaa\":\r\n return [\r\n createQuestionnaire([qStartBack], wStartBack, [\"\"]),\r\n await createQuestionnaireInitialValues([iStartBack]),\r\n ];\r\n\r\n //Pain personal\r\n case \"pzk24\":\r\n return [\r\n createQuestionnaire([qPainPersonal], wEmpty, [\"\"]),\r\n await createQuestionnaireInitialValues([iPainPersonal]),\r\n ];\r\n //Pain personal manchester\r\n case \"kzk2om\":\r\n return [\r\n createQuestionnaire([qPainPersonalManchester], wEmpty, [\"\"]),\r\n await createQuestionnaireInitialValues([iPainPersonalManchester]),\r\n ];\r\n //Bpi\r\n case \"pzz23\":\r\n return [createQuestionnaire([qBpi], wEmpty, [\"\"]), await createQuestionnaireInitialValues([iBpi])];\r\n //MPFI baseline\r\n case \"okqnv\":\r\n return [createQuestionnaire([qMpfi], wEmpty, [\"\"]), await createQuestionnaireInitialValues([iMpfi])];\r\n //Pain baseline Health\r\n case \"8zkl5\":\r\n return [\r\n createQuestionnaire([qPainBaselineHealth], wEmpty, [\"\"]),\r\n await createQuestionnaireInitialValues([iPainBaselineHealth]),\r\n ];\r\n //Core10 (Sussex baseline)\r\n case \"lryb0\":\r\n return [createQuestionnaire([qCore10], wEmpty, [\"\"]), await createQuestionnaireInitialValues([iCore10])];\r\n //Pain Discharge personal\r\n case \"o4129\":\r\n return [\r\n createQuestionnaire([qPainDischargePersonal], wEmpty, [\"\"]),\r\n await createQuestionnaireInitialValues([iPainDischargePersonal]),\r\n ];\r\n //Pain Discharge Health\r\n case \"gnbc1\":\r\n return [\r\n createQuestionnaire([qPainDischargeHealth], wEmpty, [\"\"]),\r\n await createQuestionnaireInitialValues([iPainDischargeHealth]),\r\n ];\r\n //FFT\r\n case \"qwert\":\r\n return [createQuestionnaire([qFft], wEmpty, [\"\"]), await createQuestionnaireInitialValues([iFft])];\r\n //Pain Medication\r\n case \"med0p\":\r\n return [\r\n createQuestionnaire([qPainMedication], wEmpty, [\"\"]),\r\n await createQuestionnaireInitialValues([iPainMedication]),\r\n ];\r\n //Pain Satisfaction\r\n case \"uyi12\":\r\n return [\r\n createQuestionnaire([qPainSatisfaction], wEmpty, [\"\"]),\r\n await createQuestionnaireInitialValues([iPainSatisfaction]),\r\n ];\r\n\r\n default:\r\n break;\r\n }\r\n}\r\n","import React, { useState } from \"react\";\r\nimport {\r\n Grid,\r\n RadioGroup,\r\n useMediaQuery,\r\n FormControlLabel,\r\n Radio,\r\n Dialog,\r\n DialogContentText,\r\n DialogContent,\r\n DialogActions,\r\n Button,\r\n Typography,\r\n FormHelperText,\r\n} from \"@mui/material\";\r\nimport { useFormikContext } from \"formik\";\r\nimport { useTheme } from \"@mui/material/styles\";\r\n\r\nconst RadioButtonsSuicidalThoughts = ({ id, name, options, className, question, triggerAnswers, ...otherProps }) => {\r\n const theme = useTheme();\r\n const [open, setOpen] = React.useState(false);\r\n const [value, setValue] = useState(\"yes\");\r\n\r\n const fullScreen = useMediaQuery(theme.breakpoints.down(\"xl\"));\r\n\r\n const formik = useFormikContext();\r\n\r\n const handleClickOpen = () => {\r\n setOpen(true);\r\n };\r\n\r\n const handleClose = () => {\r\n setOpen(false);\r\n };\r\n\r\n const handleChange = (event) => {\r\n if (triggerAnswers.includes(event.target.value)) {\r\n handleClickOpen();\r\n }\r\n\r\n formik.setFieldValue(name, event.target.value);\r\n setValue(event.target.value);\r\n };\r\n\r\n return (\r\n \r\n \r\n {question != null && (\r\n \r\n {question}\r\n \r\n )}\r\n \r\n \r\n {options.map((choice) => (\r\n }\r\n label={\r\n \r\n {choice[\"radioLabel\"]}\r\n \r\n }\r\n tabIndex=\"0\"\r\n />\r\n ))}\r\n \r\n\r\n {formik.errors[name] ? (\r\n \r\n {formik.errors[name] ? formik.errors[name].errors : null}\r\n \r\n ) : null}\r\n\r\n \r\n \r\n \r\n \r\n In this questionnaire you answer that you have frequent thoughts of self-harm or suicide. If\r\n you have difficult thoughts like this it is important to recognise them and work with the\r\n right people to deal with them.\r\n \r\n
\r\n
\r\n\r\n \r\n If you are at risk of acting on these thoughts right now please call 999 or go to A&E. If\r\n you need help urgently for your mental health, but it's not an emergency,{\" \"}\r\n \r\n get help from NHS 111 online\r\n {\" \"}\r\n or call 111\r\n \r\n
\r\n
\r\n\r\n \r\n Mental health emergencies are a health emergency like any other. If you have support from\r\n mental health services you could also give them a call if you're feeling particularly at\r\n risk. Talking to your GP or a trusted person in your life is also a good step.\r\n \r\n
\r\n
\r\n\r\n \r\n Below are several other forms of support:\r\n \r\n \r\n
\r\n
\r\n\r\n \r\n It's okay to talk about suicide. Things can get better, no matter how bleak they can seem.\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 RadioButtonsSuicidalThoughts;\r\n","import React, { useState } from \"react\";\r\nimport {\r\n Grid,\r\n RadioGroup,\r\n Typography,\r\n FormControlLabel,\r\n Radio,\r\n FormControl,\r\n MenuItem,\r\n InputLabel,\r\n Select,\r\n FormHelperText,\r\n} from \"@mui/material\";\r\nimport { useFormikContext } from \"formik\";\r\n\r\n//contains 5 questions (0, A, B, C, D)\r\n//possibly flows:\r\n//0 - Yes => A - Working fewer hours = > B\r\n//0 - Yes => A - On paid sick leave = > B & C\r\n//0 - Yes => A - On unpaid sick leave = > B & C\r\n//0 - No => D\r\n\r\nconst questionCGrid = {\r\n padding: \"10px 20px 0px 0px\",\r\n};\r\n\r\nconst questionCHeader = {\r\n fontSize: \"1.5rem\",\r\n};\r\n\r\nconst questionContainer = {\r\n marginBottom: \"80px\",\r\n};\r\n\r\nconst center = {\r\n display: \"flex\",\r\n justifyContent: \"center\",\r\n};\r\n\r\nconst WorkStatusQuestions = ({\r\n id,\r\n name,\r\n className,\r\n questions,\r\n options,\r\n subQuestionInfo,\r\n questionCText,\r\n ...otherProps\r\n}) => {\r\n const formik = useFormikContext();\r\n const months = [];\r\n const years = [];\r\n\r\n const [answers, setAnswers] = useState({\r\n zero: \"\",\r\n a: \"\",\r\n b: \"\",\r\n cYears: \"\",\r\n cMonths: \"\",\r\n d: \"\",\r\n errors: [\"zero\"],\r\n });\r\n const [displaying, setDisplaying] = useState({ zero: true, a: false, b: false, c: false, d: false });\r\n const keys = Object.keys(options);\r\n\r\n for (let i = 1; i <= 11; i++) {\r\n months.push(i);\r\n }\r\n\r\n for (let i = 1; i <= 100; i++) {\r\n years.push(i);\r\n }\r\n\r\n const handleChange = (event, id) => {\r\n let answersJson = { ...answers, [id]: event.target.value };\r\n\r\n let displayingJson = { ...displaying };\r\n switch (id) {\r\n case \"zero\":\r\n if (event.target.value === options.zero.options[0]) {\r\n displayingJson = { ...displaying, a: true, b: false, c: false, d: false };\r\n } else {\r\n displayingJson = { ...displaying, a: false, b: false, c: false, d: true };\r\n }\r\n\r\n break;\r\n case \"a\":\r\n if (event.target.value === options.a.options[0]) {\r\n displayingJson = { ...displaying, b: false, c: false, d: false };\r\n } else if (event.target.value === options.a.options[1]) {\r\n displayingJson = { ...displaying, b: true, c: false, d: false };\r\n } else if (event.target.value === options.a.options[2]) {\r\n displayingJson = { ...displaying, b: true, c: true, d: false };\r\n } else if (event.target.value === options.a.options[3]) {\r\n displayingJson = { ...displaying, b: true, c: true, d: false };\r\n }\r\n break;\r\n }\r\n //dont add value if id is c as it will be cMonths or cYears\r\n\r\n let displayingKeys = Object.keys(displayingJson);\r\n\r\n let errors = [];\r\n displayingKeys.forEach((key) => {\r\n //reset answers that are not being displayed\r\n if (!displayingJson[key]) {\r\n if (key === \"c\") {\r\n answersJson = { ...answersJson, cYears: \"\", cMonths: \"\" };\r\n } else {\r\n answersJson = { ...answersJson, [key]: \"\" };\r\n }\r\n }\r\n //if being displayed then check if there is an answer\r\n else {\r\n if (answersJson[key] === \"\") {\r\n errors.push(key);\r\n } else if (key === \"c\") {\r\n if (answersJson[\"cYears\"] === \"\" || answersJson[\"cMonths\"] === \"\") {\r\n errors.push(\"cYears\");\r\n errors.push(\"cMonths\");\r\n }\r\n }\r\n }\r\n });\r\n\r\n //set error value\r\n answersJson = { ...answersJson, errors: errors };\r\n\r\n setAnswers(answersJson);\r\n setDisplaying(displayingJson);\r\n formik.setFieldValue(name, answersJson);\r\n };\r\n\r\n return keys.map((questionOptionsKey, i) => {\r\n if (questionOptionsKey != \"c\") {\r\n return (\r\n <>\r\n {displaying[questionOptionsKey] && (\r\n \r\n \r\n \r\n {questions[questionOptionsKey]}\r\n \r\n \r\n \r\n handleChange(e, questionOptionsKey)}\r\n {...otherProps}\r\n >\r\n {options[questionOptionsKey].options.map((option, j) => (\r\n }\r\n label={\r\n \r\n {option}\r\n \r\n }\r\n tabIndex=\"0\"\r\n />\r\n ))}\r\n\r\n {answers.errors.includes(questionOptionsKey) ? (\r\n \r\n {formik.errors[name] ? formik.errors[name].errors : null}\r\n \r\n ) : null}\r\n \r\n \r\n \r\n )}\r\n \r\n );\r\n } else {\r\n return (\r\n <>\r\n {displaying[questionOptionsKey] && (\r\n \r\n \r\n \r\n {questions[questionOptionsKey]}\r\n \r\n \r\n \r\n \r\n \r\n \r\n {questionCText[\"Years\"]}\r\n handleChange(e, \"cYears\")}\r\n >\r\n {years.map((year, i) => (\r\n {year}\r\n ))}\r\n \r\n \r\n \r\n\r\n \r\n \r\n {questionCText[\"Months\"]}\r\n handleChange(e, \"cMonths\")}\r\n >\r\n {months.map((month, i) => (\r\n {month}\r\n ))}\r\n \r\n \r\n \r\n\r\n \r\n \r\n {answers.errors.includes(\"cMonths\") || answers.errors.includes(\"cYears\") ? (\r\n \r\n {formik.errors[name] ? formik.errors[name].errors : null}\r\n \r\n ) : null}\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 WorkStatusQuestions;\r\n","import React from \"react\";\r\nimport { Typography } from \"@mui/material\";\r\nimport {\r\n CHUIMuliLineTextfield,\r\n CHUITextfieldWithFollowUpSlider,\r\n CHUIRadioWithFollowUpCheckBox,\r\n CHUIRadioButtons,\r\n CHUIRadioWithFollowUpRadioButtons,\r\n CHUIRadioWithFollowUpTextFieldQuestion,\r\n CHUIShortTextfield,\r\n CHUITimePicker,\r\n CHUIDatePicker,\r\n CHUISlider,\r\n CHUICheckBoxes,\r\n CHUICheckBoxesWithAssociatedTextField,\r\n CHUIPainDiagram,\r\n CHUICollapsibleTable,\r\n} from \"@connecthealth-ui/core\";\r\n\r\nimport RadioButtonsSuicidalThoughts from \"./RadioButtonsSuicidalThoughts\";\r\nimport PainWorkStatus from \"./PainWorkStatus\";\r\n\r\nconst Element = (\r\n {\r\n questions: {\r\n id,\r\n question,\r\n questions,\r\n heading,\r\n increment,\r\n customChoiceOption,\r\n subQuestionInfo,\r\n followUpQuestion,\r\n followUpCheckBoxes,\r\n subFollowUpQuestionInfo,\r\n followUpOption,\r\n sliderRange,\r\n answerType,\r\n options,\r\n name,\r\n value,\r\n label,\r\n checkBoxes,\r\n optionsArray,\r\n followUpOptions,\r\n subQuestions,\r\n checkBoxesTitle,\r\n textFieldTitle,\r\n marks,\r\n row,\r\n selectColours,\r\n support,\r\n changePositionText,\r\n labels,\r\n questionCText,\r\n listHeaderId,\r\n requiredQuestions,\r\n triggerAnswers,\r\n rowManagerButtons,\r\n readOnly,\r\n },\r\n },\r\n questionClass\r\n) => {\r\n switch (answerType) {\r\n case \"MultilineTextField\":\r\n return (\r\n \r\n );\r\n\r\n case \"RadioWithFollowUpTextFieldQuestion\":\r\n return (\r\n \r\n );\r\n\r\n case \"RadioWithFollowUpCheckBoxes\":\r\n return (\r\n \r\n );\r\n\r\n case \"RadioButtons\":\r\n return (\r\n \r\n );\r\n\r\n case \"RadioButtonsSuicidalThoughts\":\r\n return (\r\n \r\n );\r\n\r\n case \"ShortTextField\":\r\n return (\r\n \r\n );\r\n\r\n case \"DatePicker\":\r\n return (\r\n \r\n );\r\n\r\n case \"TimePicker\":\r\n return (\r\n \r\n );\r\n\r\n case \"Slider\":\r\n return (\r\n \r\n );\r\n\r\n case \"CheckBoxes\":\r\n return (\r\n \r\n );\r\n\r\n case \"RadioWithFollowUpRadioButtons\":\r\n return (\r\n \r\n );\r\n\r\n case \"CheckBoxesWithAssociatedTextField\":\r\n return (\r\n \r\n );\r\n\r\n case \"TextfieldWithFollowUpSlider\":\r\n return (\r\n \r\n );\r\n\r\n case \"painWorkStatus\":\r\n return (\r\n \r\n );\r\n\r\n case \"header\":\r\n const headingArray = heading.split(\"[NEWLINE]\");\r\n return (\r\n \r\n {headingArray ? headingArray.map((element) =>

{element}

) : null}\r\n
\r\n );\r\n\r\n case \"painDiagram\":\r\n return (\r\n \r\n );\r\n\r\n case \"CollapsibleTable\":\r\n return (\r\n \r\n );\r\n\r\n default:\r\n return null;\r\n }\r\n};\r\n\r\nexport default Element;\r\n","import {useState, useEffect} from 'react';\r\nimport throttle from 'lodash.throttle';\r\n\r\nconst getDeviceConfig = (width) => {\r\n if(width < 320) {\r\n return 'xs';\r\n } else if(width >= 320 && width < 720 ) {\r\n return 'sm';\r\n } else if(width >= 720 && width < 1024) {\r\n return 'md';\r\n } else if(width >= 1024) {\r\n return 'lg';\r\n }\r\n};\r\n\r\nconst useBreakpoint = () => {\r\n const [breakPoint, setBreakPoint] = useState(() => getDeviceConfig(window.innerWidth));\r\n \r\n useEffect(() => {\r\n const calcInnerWidth = throttle(function() {\r\n setBreakPoint(getDeviceConfig(window.innerWidth))\r\n }, 200); \r\n window.addEventListener('resize', calcInnerWidth);\r\n return () => window.removeEventListener('resize', calcInnerWidth);\r\n }, []);\r\n\r\n return breakPoint;\r\n}\r\nexport default useBreakpoint;","import React, { useState, useEffect } from \"react\";\r\nimport { FormikConfig, FormikValues, Formik, Form } from \"formik\";\r\nimport { Button, Stepper, Step, StepLabel, Grid } from \"@mui/material\";\r\nimport { Alert } from \"@mui/material\";\r\nimport useBreakpoints from \"../Utils/Hooks/useBreakPoint\";\r\n\r\ninterface FormikStepProps extends Pick, \"children\" | \"validationSchema\"> {\r\n label: string;\r\n}\r\n\r\nfunction FormikStep({ children }: FormikStepProps) {\r\n return <>{children};\r\n}\r\n\r\nfunction FormikStepper({ children, ...props }: FormikConfig) {\r\n const [step, setStep] = useState(0);\r\n const [submitted, setSubmitted] = useState(false);\r\n const breakPoint = useBreakpoints();\r\n\r\n useEffect(() => {\r\n window.scrollTo(0, 0);\r\n }, [step]);\r\n\r\n const childrenArray = React.Children.toArray(children) as React.ReactElement[];\r\n\r\n //create a copy of the formikValues that were passed in via the step\r\n let formikLabel = childrenArray ? childrenArray[childrenArray.length - 1].props.label : null;\r\n let formikValues =\r\n formikLabel != null\r\n ? JSON.parse(JSON.stringify(formikLabel))\r\n : {\r\n next: \"next\",\r\n submit: \"submit\",\r\n submitting: \"submitting\",\r\n errorMessage: \"Invalid inputs, please check your answers\",\r\n successfulSubmitMessage: \"Form was successfully submitted!\",\r\n };\r\n //remove the formikValues step\r\n childrenArray.pop();\r\n\r\n const currentChild = childrenArray[step] as React.ReactElement;\r\n\r\n function isLastStep() {\r\n return step === childrenArray.length - 1;\r\n }\r\n\r\n return (\r\n {\r\n if (isLastStep()) {\r\n await props.onSubmit(values, helpers);\r\n } else {\r\n setSubmitted(false);\r\n setStep(step + 1);\r\n }\r\n }}\r\n >\r\n {({ isValid, isSubmitting }) => (\r\n
\r\n {currentChild}\r\n\r\n {childrenArray.length !== 1 && (\r\n \r\n \r\n {step > 0 && (\r\n setStep(step - 1)}\r\n >\r\n Previous\r\n \r\n )}\r\n \r\n \r\n {childrenArray.length !== 1 && breakPoint != \"xs\" && breakPoint != \"sm\" && (\r\n \r\n {childrenArray.map((child, i) => (\r\n i}>\r\n \r\n \r\n ))}\r\n \r\n )}\r\n \r\n \r\n {isLastStep() ? (\r\n setSubmitted(true)}\r\n variant=\"contained\"\r\n color=\"secondary\"\r\n size=\"large\"\r\n type=\"submit\"\r\n disabled={isSubmitting}\r\n >\r\n {isSubmitting ? formikValues[\"submitting\"] : formikValues[\"submit\"]}\r\n \r\n ) : (\r\n setSubmitted(true)}\r\n disabled={isSubmitting}\r\n type=\"submit\"\r\n >\r\n {formikValues[\"next\"]}\r\n \r\n )}\r\n \r\n \r\n )}\r\n\r\n {childrenArray.length === 1 && (\r\n \r\n setSubmitted(true)}\r\n variant=\"contained\"\r\n color=\"secondary\"\r\n size=\"large\"\r\n type=\"submit\"\r\n disabled={isSubmitting}\r\n >\r\n {isSubmitting ? formikValues[\"submitting\"] : formikValues[\"submit\"]}\r\n \r\n \r\n )}\r\n\r\n {!isValid && submitted && (\r\n \r\n {formikValues[\"errorMessage\"]}\r\n \r\n )}\r\n
\r\n )}\r\n \r\n );\r\n}\r\n\r\nexport { FormikStep, FormikStepper };\r\n","import * as Yup from \"yup\";\r\n\r\n//the key inside of each validation must match the name inside of the json.\r\n//if json question has \"name\":\"lastName\"\r\n////then Yup validation will have name: Yup.string(validationMessages[\"string\"]).required(validationMessages[\"required\"]),\r\n\r\n//put each page's yup object/ validation in a separate element\r\n//make sure each validation params include a custom message that is from the json object below\r\n\r\nexport function getValidation(questionnaireUUID, vm) {\r\n //vm = validationMessages\r\n switch (questionnaireUUID) {\r\n //testingElements\r\n case \"testingElements\":\r\n return [TestingElementsSchema(vm), TestingElementsFailureSchema(vm)];\r\n //Proms\r\n case \"120ph\":\r\n return [PromsInitialSchema(vm), EQ5DSchema(vm), StartMskSchema(vm), PSEQ8And9Schema(vm)];\r\n //Proms south\r\n case \"093pa\":\r\n return [PromsInitialSchema(vm), EQ5DSchema(vm), StartMskSchema(vm)];\r\n //MskPromsBaseline\r\n case \"12aia\":\r\n return [\r\n MskSchema(vm),\r\n EQ5DSchema(vm),\r\n PSFSSchema(vm),\r\n StartMskSchema(vm),\r\n MskBaselineHealthSchema(vm),\r\n MskBaselinePersonalSchema(vm),\r\n ];\r\n //MskPromsDischarge\r\n case \"poa2h\":\r\n return [\r\n MskSchema(vm),\r\n EQ5DSchema(vm),\r\n PSFSSchema(vm),\r\n StartMskSchema(vm),\r\n MskDischargeHealthSchema(vm),\r\n MskDischargePersonalSchema(vm),\r\n MskPremsSchema(vm),\r\n ];\r\n //MskPromsMonthsAfterDischarge\r\n case \"bhaswe\":\r\n return [\r\n MskSchema(vm),\r\n EQ5DSchema(vm),\r\n StartMskSchema(vm),\r\n MskDischargeHealthSchema(vm),\r\n MskDischargePersonalSchema(vm),\r\n MskMonthsDischargePremsSchema(vm),\r\n ];\r\n //Decon\r\n case \"92opa\":\r\n return [DeconSchema(vm)];\r\n //EQ5D\r\n case \"apwed\":\r\n return [EQ5DSchema(vm)];\r\n //GAD7\r\n case \"bijwa\":\r\n return [GAD7Schema(vm)];\r\n //MedialBranchBlock\r\n case \"ph28a\":\r\n return [MedialBranchBlockSchema(vm)];\r\n //MSK\r\n case \"9032m\":\r\n return [MskSchema(vm)];\r\n //MskBaselineHealth\r\n case \"ejaqr\":\r\n return [MskBaselineHealthSchema(vm)];\r\n //MskBaselinePersonal\r\n case \"fioja\":\r\n return [MskBaselinePersonalSchema(vm)];\r\n //MskDischargeHealth\r\n case \"gikow\":\r\n return [MskDischargeHealthSchema(vm)];\r\n //MskDischargePersonal\r\n case \"hpoaw\":\r\n return [MskDischargePersonalSchema(vm)];\r\n //MskMonthsDischargePrems\r\n case \"iu890\":\r\n return [MskMonthsDischargePremsSchema(vm)];\r\n //Msk Prems\r\n case \"kaimj\":\r\n return [MskPremsSchema(vm)];\r\n //PatientActivation\r\n case \"r03jg\":\r\n return [PAMSchema(vm)];\r\n //PHQ9\r\n case \"lca91\":\r\n return [PHQ9Schema(vm)];\r\n //PHQ8\r\n case \"l4289\":\r\n return [PHQ8Schema(vm)];\r\n //GeneralPromsInitial\r\n case \"mklaw\":\r\n return [PromsInitialSchema(vm)];\r\n //ManchesterPromsInitial\r\n case \"94lrp\":\r\n return [ManchesterPromsInitialSchema(vm)];\r\n //PSEQ8And9\r\n case \"n890a\":\r\n return [PSEQ8And9Schema(vm)];\r\n //PSFS\r\n case \"omaw4\":\r\n return [PSFSSchema(vm)];\r\n //PSFS Discharge\r\n case \"om6w4\":\r\n return [PSFSDischargeSchema(vm)];\r\n //SleepProgramme\r\n case \"p21af\":\r\n return [SleepProgrammeSchema(vm)];\r\n //StartMsk\r\n case \"q456a\":\r\n return [StartMskSchema(vm)];\r\n //StartBack\r\n case \"q5aaa\":\r\n return [StartBackSchema(vm)];\r\n //Pain personal\r\n case \"pzk24\":\r\n return [PainPersonalSchema(vm)];\r\n //Pain personal manchester\r\n case \"kzk2om\":\r\n return [PainPersonalManchesterSchema(vm)];\r\n //Bpi\r\n case \"pzz23\":\r\n return [BpiSchema(vm)];\r\n //MPFI\r\n case \"okqnv\":\r\n return [MpfiSchema(vm)];\r\n //Pain baseline Health\r\n case \"8zkl5\":\r\n return [PainBaselineHealthSchema(vm)];\r\n //Core 10\r\n case \"lryb0\":\r\n return [Core10Schema(vm)];\r\n //Pain Discharge personal\r\n case \"o4129\":\r\n return [PainDischargePersonalSchema(vm)];\r\n //Pain Discharge Health\r\n case \"gnbc1\":\r\n return [PainDischargeHealthSchema(vm)];\r\n //FFT\r\n case \"qwert\":\r\n return [FftSchema(vm)];\r\n //Pain Medication\r\n case \"med0p\":\r\n return [PainMedicationSchema(vm)];\r\n //Pain Satisfaction\r\n case \"uyi12\":\r\n return [PainSatisfactionSchema(vm)];\r\n default:\r\n break;\r\n }\r\n}\r\n\r\nexport function getValidationMessages() {\r\n return {\r\n required: \"This field is required!\",\r\n string: \"This field must be a string!\",\r\n array: \"This field must be an array!\",\r\n minimumOfOne: \"This field has a minimum of 1!\",\r\n date: \"This field must be a valid date (--/--/----)\",\r\n number: \"This field must be a number!\",\r\n generalError: \"An error occurred!\",\r\n };\r\n}\r\n\r\nfunction TestingElementsFailureSchema(validationMessages) {\r\n return Yup.object().shape({\r\n test12: Yup.string(validationMessages[\"string\"]).required(validationMessages[\"required\"]),\r\n test13: Yup.string(validationMessages[\"string\"]).required(validationMessages[\"required\"]),\r\n test14: Yup.string(validationMessages[\"string\"]).required(validationMessages[\"required\"]),\r\n test15: Yup.string(validationMessages[\"string\"]).required(validationMessages[\"required\"]),\r\n test16: Yup.date(validationMessages[\"date\"]).required(validationMessages[\"required\"]),\r\n test17: Yup.string(validationMessages[\"string\"]).required(validationMessages[\"required\"]),\r\n test18: Yup.string(validationMessages[\"string\"]).required(validationMessages[\"required\"]),\r\n test19: Yup.array(validationMessages[\"array\"])\r\n .min(1, validationMessages[\"required\"])\r\n .of(Yup.string(validationMessages[\"string\"]).trim().required(validationMessages[\"required\"])),\r\n test20: Yup.string(validationMessages[\"string\"]).required(validationMessages[\"required\"]),\r\n test21: Yup.string(validationMessages[\"string\"])\r\n .min(3, validationMessages[\"required\"])\r\n .required(validationMessages[\"required\"]),\r\n test22: Yup.string(validationMessages[\"string\"]).required(validationMessages[\"required\"]),\r\n });\r\n}\r\n\r\nfunction TestingElementsSchema(validationMessages) {\r\n return Yup.object().shape({\r\n test1: Yup.string(validationMessages[\"string\"]).required(validationMessages[\"required\"]),\r\n test2: Yup.string(validationMessages[\"string\"]).required(validationMessages[\"required\"]),\r\n test3: Yup.string(validationMessages[\"string\"]).required(validationMessages[\"required\"]),\r\n test4: Yup.string(validationMessages[\"string\"]).required(validationMessages[\"required\"]),\r\n test5: Yup.date(validationMessages[\"date\"]).required(validationMessages[\"required\"]),\r\n test6: Yup.string(validationMessages[\"string\"]).required(validationMessages[\"required\"]),\r\n test7: Yup.string(validationMessages[\"string\"]).required(validationMessages[\"required\"]),\r\n test8: Yup.array(validationMessages[\"array\"])\r\n .min(1, validationMessages[\"required\"])\r\n .of(Yup.string(validationMessages[\"string\"]).trim().required(validationMessages[\"required\"])),\r\n test9: Yup.string(validationMessages[\"string\"]).required(validationMessages[\"required\"]),\r\n test10: Yup.string(validationMessages[\"string\"])\r\n .min(3, validationMessages[\"required\"])\r\n .required(validationMessages[\"required\"]),\r\n test11: Yup.string(validationMessages[\"string\"]).required(validationMessages[\"required\"]),\r\n });\r\n}\r\n\r\nfunction DeconSchema(validationMessages) {\r\n return Yup.object().shape({\r\n describeSymptoms: Yup.string(validationMessages[\"string\"]).required(validationMessages[\"required\"]),\r\n activitiesStopped: Yup.string(validationMessages[\"string\"]).required(validationMessages[\"required\"]),\r\n medication: Yup.string(validationMessages[\"string\"]).required(validationMessages[\"required\"]),\r\n previousTreatment: Yup.string(validationMessages[\"string\"]).required(validationMessages[\"required\"]),\r\n });\r\n}\r\n\r\nfunction EQ5DSchema(validationMessages) {\r\n return Yup.object().shape({\r\n mobility: Yup.string(validationMessages[\"string\"]).required(validationMessages[\"required\"]),\r\n selfCare: Yup.string(validationMessages[\"string\"]).required(validationMessages[\"required\"]),\r\n usualActivities: Yup.string(validationMessages[\"string\"]).required(validationMessages[\"required\"]),\r\n painOrDiscomfort: Yup.string(validationMessages[\"string\"]).required(validationMessages[\"required\"]),\r\n anxietyOrDepression: Yup.string(validationMessages[\"string\"]).required(validationMessages[\"required\"]),\r\n healthToday: Yup.number(validationMessages[\"number\"]).required(validationMessages[\"required\"]),\r\n });\r\n}\r\n\r\nfunction GAD7Schema(validationMessages) {\r\n return Yup.object().shape({\r\n feelingAnxious: Yup.string(validationMessages[\"string\"]).required(validationMessages[\"required\"]),\r\n cantControlWorrying: Yup.string(validationMessages[\"string\"]).required(validationMessages[\"required\"]),\r\n worryingTooMuch: Yup.string(validationMessages[\"string\"]).required(validationMessages[\"required\"]),\r\n troubleRelaxing: Yup.string(validationMessages[\"string\"]).required(validationMessages[\"required\"]),\r\n cantSitStill: Yup.string(validationMessages[\"string\"]).required(validationMessages[\"required\"]),\r\n easilyAnnoyed: Yup.string(validationMessages[\"string\"]).required(validationMessages[\"required\"]),\r\n afraidSomethingAwfulHappens: Yup.string(validationMessages[\"string\"]).required(validationMessages[\"required\"]),\r\n });\r\n}\r\n\r\nfunction MedialBranchBlockSchema(validationMessages) {\r\n return Yup.object().shape({\r\n painRating: Yup.number(validationMessages[\"number\"]).required(validationMessages[\"required\"]),\r\n painRating30AfterInjection: Yup.number(validationMessages[\"number\"]).required(validationMessages[\"required\"]),\r\n painRating60AfterInjection: Yup.number(validationMessages[\"number\"]).required(validationMessages[\"required\"]),\r\n painRating120AfterInjection: Yup.number(validationMessages[\"number\"]).required(validationMessages[\"required\"]),\r\n painRating180AfterInjection: Yup.number(validationMessages[\"number\"]).required(validationMessages[\"required\"]),\r\n painRating240AfterInjection: Yup.number(validationMessages[\"number\"]).required(validationMessages[\"required\"]),\r\n painRating360AfterInjection: Yup.number(validationMessages[\"number\"]).required(validationMessages[\"required\"]),\r\n painRating480AfterInjection: Yup.number(validationMessages[\"number\"]).required(validationMessages[\"required\"]),\r\n painRating1DayAfterInjection: Yup.number(validationMessages[\"number\"]).required(validationMessages[\"required\"]),\r\n comments: Yup.string(validationMessages[\"string\"]),\r\n });\r\n}\r\n\r\nfunction MskSchema(validationMessages) {\r\n return Yup.object().shape({\r\n stiffnessDuringTheDay: Yup.string(validationMessages[\"string\"]).required(validationMessages[\"required\"]),\r\n StiffnessDuringTheNight: Yup.string(validationMessages[\"string\"]).required(validationMessages[\"required\"]),\r\n AbilityToWalk: Yup.string(validationMessages[\"string\"]).required(validationMessages[\"required\"]),\r\n WashingDressing: Yup.string(validationMessages[\"string\"]).required(validationMessages[\"required\"]),\r\n PhysicalActivityLevels: Yup.string(validationMessages[\"string\"]).required(validationMessages[\"required\"]),\r\n DailyRoutine: Yup.string(validationMessages[\"string\"]).required(validationMessages[\"required\"]),\r\n SocialActivitiesAndHobbies: Yup.string(validationMessages[\"string\"]).required(validationMessages[\"required\"]),\r\n NeedingHelp: Yup.string(validationMessages[\"string\"]).required(validationMessages[\"required\"]),\r\n TroubleSleeping: Yup.string(validationMessages[\"string\"]).required(validationMessages[\"required\"]),\r\n FatigueOrLowEnergy: Yup.string(validationMessages[\"string\"]).required(validationMessages[\"required\"]),\r\n EmotionalWellBeing: Yup.string(validationMessages[\"string\"]).required(validationMessages[\"required\"]),\r\n CurrentTreatment: Yup.string(validationMessages[\"string\"]).required(validationMessages[\"required\"]),\r\n ManageSymptoms: Yup.string(validationMessages[\"string\"]).required(validationMessages[\"required\"]),\r\n OverallImpact: Yup.string(validationMessages[\"string\"]).required(validationMessages[\"required\"]),\r\n PhysicalActivityLevels: Yup.string(validationMessages[\"string\"]).required(validationMessages[\"required\"]),\r\n });\r\n}\r\n\r\nfunction MskBaselineHealthSchema(validationMessages) {\r\n return Yup.object().shape({\r\n painSite: Yup.array(validationMessages[\"array\"])\r\n .min(1, validationMessages[\"required\"])\r\n .of(Yup.string(validationMessages[\"string\"]).trim().required(validationMessages[\"required\"])),\r\n syDuration: Yup.string(validationMessages[\"string\"]).required(validationMessages[\"required\"]),\r\n recommendedAmountOfphysicalActivityLevels: Yup.string(validationMessages[\"string\"]).required(\r\n validationMessages[\"required\"]\r\n ),\r\n healthUtilisation: Yup.string(validationMessages[\"string\"])\r\n .min(3, validationMessages[\"required\"])\r\n .required(validationMessages[\"required\"]),\r\n previousPhysiotherapy: Yup.string(validationMessages[\"string\"]).required(validationMessages[\"required\"]),\r\n investigationsAndTreatments: Yup.string(validationMessages[\"string\"]).required(validationMessages[\"required\"]),\r\n });\r\n}\r\n\r\nfunction MskBaselinePersonalSchema(validationMessages) {\r\n return Yup.object().shape({\r\n dob: Yup.string(validationMessages[\"string\"]).required(validationMessages[\"required\"]),\r\n sexualOrientation: Yup.string(validationMessages[\"string\"]).required(validationMessages[\"required\"]),\r\n ethnicity: Yup.string(validationMessages[\"string\"]).required(validationMessages[\"required\"]),\r\n selfReportedAsDisabled: Yup.string(validationMessages[\"string\"]).required(validationMessages[\"required\"]),\r\n benefitStatus: Yup.array(validationMessages[\"array\"])\r\n .min(1, validationMessages[\"required\"])\r\n .of(Yup.string(validationMessages[\"string\"]).trim().required(validationMessages[\"required\"])),\r\n education: Yup.string(validationMessages[\"string\"]).required(validationMessages[\"required\"]),\r\n workStatus: Yup.string(validationMessages[\"string\"]).required(validationMessages[\"required\"]),\r\n });\r\n}\r\n\r\nfunction MskDischargeHealthSchema(validationMessages) {\r\n return Yup.object().shape({\r\n recommendedAmountOfphysicalActivityLevels: Yup.string(validationMessages[\"string\"]).required(\r\n validationMessages[\"required\"]\r\n ),\r\n healthUtilisation: Yup.string(validationMessages[\"string\"])\r\n .min(3, validationMessages[\"required\"])\r\n .required(validationMessages[\"required\"]),\r\n investigationsAndTreatments: Yup.string(validationMessages[\"string\"]).required(validationMessages[\"required\"]),\r\n });\r\n}\r\n\r\nfunction MskDischargePersonalSchema(validationMessages) {\r\n return Yup.object().shape({\r\n selfReportedAsDisabled: Yup.string(validationMessages[\"string\"]).required(validationMessages[\"required\"]),\r\n benefitStatus: Yup.array(validationMessages[\"array\"])\r\n .min(1, validationMessages[\"required\"])\r\n .of(Yup.string(validationMessages[\"string\"]).trim().required(validationMessages[\"required\"])),\r\n workStatus: Yup.string(validationMessages[\"string\"]).required(validationMessages[\"required\"]),\r\n });\r\n}\r\n\r\nfunction MskMonthsDischargePremsSchema(validationMessages) {\r\n return Yup.object().shape({\r\n fft: Yup.string(validationMessages[\"string\"]).required(validationMessages[\"required\"]),\r\n fftFollowUp: Yup.string(validationMessages[\"string\"]).required(validationMessages[\"required\"]),\r\n globalImprovement: Yup.string(validationMessages[\"string\"]).required(validationMessages[\"required\"]),\r\n });\r\n}\r\n\r\nfunction MskPremsSchema(validationMessages) {\r\n return Yup.object().shape({\r\n fft: Yup.string(validationMessages[\"string\"]).required(validationMessages[\"required\"]),\r\n fftFollowUp: Yup.string(validationMessages[\"string\"]).required(validationMessages[\"required\"]),\r\n collaborate1: Yup.string(validationMessages[\"string\"]).required(validationMessages[\"required\"]),\r\n collaborate2: Yup.string(validationMessages[\"string\"]).required(validationMessages[\"required\"]),\r\n collaborate3: Yup.string(validationMessages[\"string\"]).required(validationMessages[\"required\"]),\r\n confidenceInClinicalCompetence: Yup.string(validationMessages[\"string\"]).required(\r\n validationMessages[\"required\"]\r\n ),\r\n givenSufficientInformation: Yup.string(validationMessages[\"string\"]).required(validationMessages[\"required\"]),\r\n globalImprovement: Yup.string(validationMessages[\"string\"]).required(validationMessages[\"required\"]),\r\n timeliness: Yup.string(validationMessages[\"string\"]).required(validationMessages[\"required\"]),\r\n convenience: Yup.string(validationMessages[\"string\"]).required(validationMessages[\"required\"]),\r\n });\r\n}\r\n\r\nfunction PAMSchema(validationMessages) {\r\n return Yup.object().shape({\r\n PAM1: Yup.string(validationMessages[\"string\"]).required(validationMessages[\"required\"]),\r\n PAM2: Yup.string(validationMessages[\"string\"]).required(validationMessages[\"required\"]),\r\n PAM3: Yup.string(validationMessages[\"string\"]).required(validationMessages[\"required\"]),\r\n PAM4: Yup.string(validationMessages[\"string\"]).required(validationMessages[\"required\"]),\r\n PAM5: Yup.string(validationMessages[\"string\"]).required(validationMessages[\"required\"]),\r\n PAM6: Yup.string(validationMessages[\"string\"]).required(validationMessages[\"required\"]),\r\n PAM7: Yup.string(validationMessages[\"string\"]).required(validationMessages[\"required\"]),\r\n PAM8: Yup.string(validationMessages[\"string\"]).required(validationMessages[\"required\"]),\r\n PAM9: Yup.string(validationMessages[\"string\"]).required(validationMessages[\"required\"]),\r\n PAM10: Yup.string(validationMessages[\"string\"]).required(validationMessages[\"required\"]),\r\n PAM11: Yup.string(validationMessages[\"string\"]).required(validationMessages[\"required\"]),\r\n PAM12: Yup.string(validationMessages[\"string\"]).required(validationMessages[\"required\"]),\r\n PAM13: Yup.string(validationMessages[\"string\"]).required(validationMessages[\"required\"]),\r\n });\r\n}\r\n\r\nfunction PHQ9Schema(validationMessages) {\r\n return Yup.object().shape({\r\n botheredByInterests: Yup.string(validationMessages[\"string\"]).required(validationMessages[\"required\"]),\r\n feelingDown: Yup.string(validationMessages[\"string\"]).required(validationMessages[\"required\"]),\r\n troubleSleeping: Yup.string(validationMessages[\"string\"]).required(validationMessages[\"required\"]),\r\n littleEnergy: Yup.string(validationMessages[\"string\"]).required(validationMessages[\"required\"]),\r\n offAppetite: Yup.string(validationMessages[\"string\"]).required(validationMessages[\"required\"]),\r\n feelingBad: Yup.string(validationMessages[\"string\"]).required(validationMessages[\"required\"]),\r\n struggleConcentrating: Yup.string(validationMessages[\"string\"]).required(validationMessages[\"required\"]),\r\n changeInSpeech: Yup.string(validationMessages[\"string\"]).required(validationMessages[\"required\"]),\r\n suicidalThoughts: Yup.string(validationMessages[\"string\"]).required(validationMessages[\"required\"]),\r\n });\r\n}\r\n\r\nfunction PHQ8Schema(validationMessages) {\r\n return Yup.object().shape({\r\n botheredByInterests: Yup.string(validationMessages[\"string\"]).required(validationMessages[\"required\"]),\r\n feelingDown: Yup.string(validationMessages[\"string\"]).required(validationMessages[\"required\"]),\r\n troubleSleeping: Yup.string(validationMessages[\"string\"]).required(validationMessages[\"required\"]),\r\n littleEnergy: Yup.string(validationMessages[\"string\"]).required(validationMessages[\"required\"]),\r\n offAppetite: Yup.string(validationMessages[\"string\"]).required(validationMessages[\"required\"]),\r\n feelingBad: Yup.string(validationMessages[\"string\"]).required(validationMessages[\"required\"]),\r\n struggleConcentrating: Yup.string(validationMessages[\"string\"]).required(validationMessages[\"required\"]),\r\n changeInSpeech: Yup.string(validationMessages[\"string\"]).required(validationMessages[\"required\"]),\r\n });\r\n}\r\n\r\nfunction PromsInitialSchema(validationMessages) {\r\n return Yup.object().shape({\r\n name: Yup.string(validationMessages[\"string\"]).required(validationMessages[\"required\"]),\r\n dob: Yup.date(validationMessages[\"date\"]).required(validationMessages[\"required\"]),\r\n happyWithService: Yup.string(validationMessages[\"string\"]).required(validationMessages[\"required\"]),\r\n whyAnswer: Yup.string(validationMessages[\"string\"]).required(validationMessages[\"required\"]),\r\n triedMedication: Yup.string(validationMessages[\"string\"]).required(validationMessages[\"required\"]),\r\n problemsWithHealth: Yup.string(validationMessages[\"string\"]).required(validationMessages[\"required\"]),\r\n allergies: Yup.string(validationMessages[\"string\"]).required(validationMessages[\"required\"]),\r\n readingDifficulties: Yup.string(validationMessages[\"string\"]).required(validationMessages[\"required\"]),\r\n hearingOrSpeakingDifficulties: Yup.string(validationMessages[\"string\"]).required(\r\n validationMessages[\"required\"]\r\n ),\r\n expectations: Yup.string(validationMessages[\"string\"]).required(validationMessages[\"required\"]),\r\n });\r\n}\r\n\r\nfunction ManchesterPromsInitialSchema(validationMessages) {\r\n return Yup.object().shape({\r\n name: Yup.string(validationMessages[\"string\"]).required(validationMessages[\"required\"]),\r\n dob: Yup.date(validationMessages[\"date\"]).required(validationMessages[\"required\"]),\r\n sexualOrientation: Yup.string(validationMessages[\"string\"]).required(validationMessages[\"required\"]),\r\n ethnicGroup: Yup.string(validationMessages[\"string\"]).required(validationMessages[\"required\"]),\r\n happyWithService: Yup.string(validationMessages[\"string\"]).required(validationMessages[\"required\"]),\r\n whyAnswer: Yup.string(validationMessages[\"string\"]).required(validationMessages[\"required\"]),\r\n triedMedication: Yup.string(validationMessages[\"string\"]).required(validationMessages[\"required\"]),\r\n problemsWithHealth: Yup.string(validationMessages[\"string\"]).required(validationMessages[\"required\"]),\r\n allergies: Yup.string(validationMessages[\"string\"]).required(validationMessages[\"required\"]),\r\n readingDifficulties: Yup.string(validationMessages[\"string\"]).required(validationMessages[\"required\"]),\r\n hearingOrSpeakingDifficulties: Yup.string(validationMessages[\"string\"]).required(\r\n validationMessages[\"required\"]\r\n ),\r\n expectations: Yup.string(validationMessages[\"string\"]).required(validationMessages[\"required\"]),\r\n });\r\n}\r\n\r\nfunction PSEQ8And9Schema(validationMessages) {\r\n return Yup.object().shape({\r\n confidentlyAccomplishGoals: Yup.number(validationMessages[\"number\"]).required(validationMessages[\"required\"]),\r\n confidentlyLiveNormalLifestyle: Yup.number(validationMessages[\"number\"]).required(\r\n validationMessages[\"required\"]\r\n ),\r\n });\r\n}\r\n\r\nfunction PSFSSchema(validationMessages) {\r\n return Yup.object().shape({\r\n activity1: Yup.number(validationMessages[\"number\"]),\r\n activity2: Yup.number(validationMessages[\"number\"]),\r\n activity3: Yup.number(validationMessages[\"number\"]),\r\n activity4: Yup.number(validationMessages[\"number\"]),\r\n activity5: Yup.number(validationMessages[\"number\"]),\r\n });\r\n}\r\n\r\nfunction PSFSDischargeSchema(validationMessages) {\r\n return Yup.object().shape({\r\n activity1: Yup.string(validationMessages[\"string\"]),\r\n activity2: Yup.string(validationMessages[\"string\"]),\r\n activity3: Yup.string(validationMessages[\"string\"]),\r\n activity4: Yup.string(validationMessages[\"string\"]),\r\n activity5: Yup.string(validationMessages[\"string\"]),\r\n });\r\n}\r\n\r\nfunction SleepProgrammeSchema(validationMessages) {\r\n return Yup.object().shape({\r\n sleepPerNight: Yup.string(validationMessages[\"string\"]).required(validationMessages[\"required\"]),\r\n sleepQuality: Yup.number(validationMessages[\"number\"]).required(validationMessages[\"required\"]),\r\n sleepPerNightAfter: Yup.string(validationMessages[\"string\"]).required(validationMessages[\"required\"]),\r\n sleepQualityAfter: Yup.number(validationMessages[\"number\"]).required(validationMessages[\"required\"]),\r\n recommendProgramme: Yup.string(validationMessages[\"string\"]).required(validationMessages[\"required\"]),\r\n whyFeelThisWay: Yup.string(validationMessages[\"string\"]).required(validationMessages[\"required\"]),\r\n benefits: Yup.string(validationMessages[\"string\"]).required(validationMessages[\"required\"]),\r\n useful: Yup.string(validationMessages[\"string\"]).required(validationMessages[\"required\"]),\r\n recommend: Yup.string(validationMessages[\"string\"]).required(validationMessages[\"required\"]),\r\n comments: Yup.string(validationMessages[\"string\"]),\r\n });\r\n}\r\n\r\nfunction StartMskSchema(validationMessages) {\r\n return Yup.object().shape({\r\n painIntensity: Yup.string(validationMessages[\"string\"]).required(validationMessages[\"required\"]),\r\n unsureHowToManagePain: Yup.string(validationMessages[\"string\"]).required(validationMessages[\"required\"]),\r\n onlyAbleToWalkShort: Yup.string(validationMessages[\"string\"]).required(validationMessages[\"required\"]),\r\n botheredALotByPain: Yup.string(validationMessages[\"string\"]).required(validationMessages[\"required\"]),\r\n troublesomeJointPain: Yup.string(validationMessages[\"string\"]).required(validationMessages[\"required\"]),\r\n thinkConditionWillLast: Yup.string(validationMessages[\"string\"]).required(validationMessages[\"required\"]),\r\n otherImportantHealthProblems: Yup.string(validationMessages[\"string\"]).required(validationMessages[\"required\"]),\r\n feelingDepressedCauseOfPain: Yup.string(validationMessages[\"string\"]).required(validationMessages[\"required\"]),\r\n unsafeForPeWithCondition: Yup.string(validationMessages[\"string\"]).required(validationMessages[\"required\"]),\r\n problemFor6MonthsOrMore: Yup.string(validationMessages[\"string\"]).required(validationMessages[\"required\"]),\r\n });\r\n}\r\n\r\nfunction StartBackSchema(validationMessages) {\r\n return Yup.object().shape({\r\n painSpreadDownLegs: Yup.string(validationMessages[\"string\"]).required(validationMessages[\"required\"]),\r\n painShoulderNeck: Yup.string(validationMessages[\"string\"]).required(validationMessages[\"required\"]),\r\n walkShortDistances: Yup.string(validationMessages[\"string\"]).required(validationMessages[\"required\"]),\r\n dressSlowly: Yup.string(validationMessages[\"string\"]).required(validationMessages[\"required\"]),\r\n notSafeToBeActive: Yup.string(validationMessages[\"string\"]).required(validationMessages[\"required\"]),\r\n worryingThoughts: Yup.string(validationMessages[\"string\"]).required(validationMessages[\"required\"]),\r\n backPainTerrible: Yup.string(validationMessages[\"string\"]).required(validationMessages[\"required\"]),\r\n notEnjoyedThings: Yup.string(validationMessages[\"string\"]).required(validationMessages[\"required\"]),\r\n overallBackPain: Yup.string(validationMessages[\"string\"]).required(validationMessages[\"required\"]),\r\n });\r\n}\r\n\r\nfunction PainPersonalSchema(validationMessages) {\r\n return Yup.object().shape({\r\n yearOfBirth: Yup.string(validationMessages[\"string\"]).required(validationMessages[\"required\"]),\r\n painSite: Yup.string().min(3, validationMessages[\"required\"]),\r\n coMorbidities: Yup.array(validationMessages[\"array\"])\r\n .min(1, validationMessages[\"required\"])\r\n .of(Yup.string(validationMessages[\"string\"]).trim().required(validationMessages[\"required\"])),\r\n symptomDuration: Yup.string(validationMessages[\"string\"]).required(validationMessages[\"required\"]),\r\n highestLevelOfEducation: Yup.string(validationMessages[\"string\"]).required(validationMessages[\"required\"]),\r\n sexAtBirth: Yup.string(validationMessages[\"string\"]).required(validationMessages[\"required\"]),\r\n ethnicity: Yup.string(validationMessages[\"string\"]).required(validationMessages[\"required\"]),\r\n relationshipStatus: Yup.string(validationMessages[\"string\"]).required(validationMessages[\"required\"]),\r\n benefitStatus: Yup.array(\"\")\r\n .min(1, validationMessages[\"required\"])\r\n .of(Yup.string(validationMessages[\"string\"]).trim().required(validationMessages[\"required\"])),\r\n workStatus: Yup.object({\r\n errors: Yup.array().length(0, validationMessages[\"required\"]),\r\n }),\r\n });\r\n}\r\n\r\nfunction PainPersonalManchesterSchema(validationMessages) {\r\n return Yup.object().shape({\r\n yearOfBirth: Yup.string(validationMessages[\"string\"]).required(validationMessages[\"required\"]),\r\n painSite: Yup.string().min(3, validationMessages[\"required\"]),\r\n coMorbidities: Yup.array(validationMessages[\"array\"])\r\n .min(1, validationMessages[\"required\"])\r\n .of(Yup.string(validationMessages[\"string\"]).trim().required(validationMessages[\"required\"])),\r\n symptomDuration: Yup.string(validationMessages[\"string\"]).required(validationMessages[\"required\"]),\r\n highestLevelOfEducation: Yup.string(validationMessages[\"string\"]).required(validationMessages[\"required\"]),\r\n sexAtBirth: Yup.string(validationMessages[\"string\"]).required(validationMessages[\"required\"]),\r\n sexualOrientation: Yup.string(validationMessages[\"string\"]).required(validationMessages[\"required\"]),\r\n ethnicity: Yup.string(validationMessages[\"string\"]).required(validationMessages[\"required\"]),\r\n relationshipStatus: Yup.string(validationMessages[\"string\"]).required(validationMessages[\"required\"]),\r\n benefitStatus: Yup.array(\"\")\r\n .min(1, validationMessages[\"required\"])\r\n .of(Yup.string(validationMessages[\"string\"]).trim().required(validationMessages[\"required\"])),\r\n workStatus: Yup.object({\r\n errors: Yup.array().length(0, validationMessages[\"required\"]),\r\n }),\r\n });\r\n}\r\n\r\nfunction BpiSchema(validationMessages) {\r\n return Yup.object().shape({\r\n currentPainIntensity: Yup.string(validationMessages[\"string\"]).required(validationMessages[\"required\"]),\r\n painIntensityPast24Hours: Yup.string(validationMessages[\"string\"]).required(validationMessages[\"required\"]),\r\n usualPainIntensity: Yup.string(validationMessages[\"string\"]).required(validationMessages[\"required\"]),\r\n highestPainIntensity: Yup.string(validationMessages[\"string\"]).required(validationMessages[\"required\"]),\r\n generalActivity: Yup.string(validationMessages[\"string\"]).required(validationMessages[\"required\"]),\r\n mood: Yup.string(validationMessages[\"string\"]).required(validationMessages[\"required\"]),\r\n walkingAbility: Yup.string(validationMessages[\"string\"]).required(validationMessages[\"required\"]),\r\n normalWork: Yup.string(validationMessages[\"string\"]).required(validationMessages[\"required\"]),\r\n relationsWithOtherPeople: Yup.string(validationMessages[\"string\"]).required(validationMessages[\"required\"]),\r\n sleep: Yup.string(validationMessages[\"string\"]).required(validationMessages[\"required\"]),\r\n enjoymentOfLife: Yup.string(validationMessages[\"string\"]).required(validationMessages[\"required\"]),\r\n });\r\n}\r\n\r\nfunction MpfiSchema(validationMessages) {\r\n return Yup.object().shape({\r\n Acceptance1: Yup.string(validationMessages[\"string\"]).required(validationMessages[\"required\"]),\r\n Acceptance2: Yup.string(validationMessages[\"string\"]).required(validationMessages[\"required\"]),\r\n PresentMomentAwareness1: Yup.string(validationMessages[\"string\"]).required(validationMessages[\"required\"]),\r\n PresentMomentAwareness2: Yup.string(validationMessages[\"string\"]).required(validationMessages[\"required\"]),\r\n SelfAsContext1: Yup.string(validationMessages[\"string\"]).required(validationMessages[\"required\"]),\r\n SelfAsContext2: Yup.string(validationMessages[\"string\"]).required(validationMessages[\"required\"]),\r\n Defusion1: Yup.string(validationMessages[\"string\"]).required(validationMessages[\"required\"]),\r\n Defusion2: Yup.string(validationMessages[\"string\"]).required(validationMessages[\"required\"]),\r\n Values1: Yup.string(validationMessages[\"string\"]).required(validationMessages[\"required\"]),\r\n Values2: Yup.string(validationMessages[\"string\"]).required(validationMessages[\"required\"]),\r\n CommittedAction1: Yup.string(validationMessages[\"string\"]).required(validationMessages[\"required\"]),\r\n CommittedAction2: Yup.string(validationMessages[\"string\"]).required(validationMessages[\"required\"]),\r\n ExperientialAvoidance1: Yup.string(validationMessages[\"string\"]).required(validationMessages[\"required\"]),\r\n ExperientialAvoidance2: Yup.string(validationMessages[\"string\"]).required(validationMessages[\"required\"]),\r\n LastOfContact1: Yup.string(validationMessages[\"string\"]).required(validationMessages[\"required\"]),\r\n LastOfContact2: Yup.string(validationMessages[\"string\"]).required(validationMessages[\"required\"]),\r\n SelfAsContent1: Yup.string(validationMessages[\"string\"]).required(validationMessages[\"required\"]),\r\n SelfAsContent2: Yup.string(validationMessages[\"string\"]).required(validationMessages[\"required\"]),\r\n Fusion1: Yup.string(validationMessages[\"string\"]).required(validationMessages[\"required\"]),\r\n Fusion2: Yup.string(validationMessages[\"string\"]).required(validationMessages[\"required\"]),\r\n lackOfContactWithValues1: Yup.string(validationMessages[\"string\"]).required(validationMessages[\"required\"]),\r\n lackOfContactWithValues2: Yup.string(validationMessages[\"string\"]).required(validationMessages[\"required\"]),\r\n Inaction1: Yup.string(validationMessages[\"string\"]).required(validationMessages[\"required\"]),\r\n Inaction2: Yup.string(validationMessages[\"string\"]).required(validationMessages[\"required\"]),\r\n });\r\n}\r\n\r\nfunction PainBaselineHealthSchema(validationMessages) {\r\n return Yup.object().shape({\r\n timesSeenGp: Yup.string(validationMessages[\"string\"]).required(validationMessages[\"required\"]),\r\n timesSeenDoctor: Yup.string(validationMessages[\"string\"]).required(validationMessages[\"required\"]),\r\n timesSeenEmergency: Yup.string(validationMessages[\"string\"]).required(validationMessages[\"required\"]),\r\n daysAdmittedHospital: Yup.string(validationMessages[\"string\"]).required(validationMessages[\"required\"]),\r\n prescribedMedications: Yup.object({\r\n errors: Yup.array().length(0, validationMessages[\"required\"]),\r\n }),\r\n medicationForPain: Yup.string(validationMessages[\"string\"]).required(validationMessages[\"required\"]),\r\n ableToDoMore: Yup.string(validationMessages[\"string\"]).required(validationMessages[\"required\"]),\r\n expectations: Yup.string(validationMessages[\"string\"]).required(validationMessages[\"required\"]),\r\n });\r\n}\r\n\r\nfunction Core10Schema(validationMessages) {\r\n return Yup.object().shape({\r\n feltTense: Yup.string(validationMessages[\"string\"]).required(validationMessages[\"required\"]),\r\n needSupport: Yup.string(validationMessages[\"string\"]).required(validationMessages[\"required\"]),\r\n ableToCope: Yup.string(validationMessages[\"string\"]).required(validationMessages[\"required\"]),\r\n talkingFeltTooMuch: Yup.string(validationMessages[\"string\"]).required(validationMessages[\"required\"]),\r\n feltPanic: Yup.string(validationMessages[\"string\"]).required(validationMessages[\"required\"]),\r\n difficultyGettingToSleep: Yup.string(validationMessages[\"string\"]).required(validationMessages[\"required\"]),\r\n feltDespairing: Yup.string(validationMessages[\"string\"]).required(validationMessages[\"required\"]),\r\n feltUnhappy: Yup.string(validationMessages[\"string\"]).required(validationMessages[\"required\"]),\r\n distressingImages: Yup.string(validationMessages[\"string\"]).required(validationMessages[\"required\"]),\r\n });\r\n}\r\n\r\nfunction PainDischargePersonalSchema(validationMessages) {\r\n return Yup.object().shape({\r\n benefitStatus: Yup.array(\"\")\r\n .min(1, validationMessages[\"required\"])\r\n .of(Yup.string(validationMessages[\"string\"]).trim().required(validationMessages[\"required\"])),\r\n workStatus: Yup.object({\r\n errors: Yup.array().length(0, validationMessages[\"required\"]),\r\n }),\r\n });\r\n}\r\n\r\nfunction PainDischargeHealthSchema(validationMessages) {\r\n return Yup.object().shape({\r\n globalImprovement: Yup.string(validationMessages[\"string\"]).required(validationMessages[\"required\"]),\r\n timesSeenGp: Yup.string(validationMessages[\"string\"]).required(validationMessages[\"required\"]),\r\n timesSeenDoctor: Yup.string(validationMessages[\"string\"]).required(validationMessages[\"required\"]),\r\n timesSeenEmergency: Yup.string(validationMessages[\"string\"]).required(validationMessages[\"required\"]),\r\n daysAdmittedHospital: Yup.string(validationMessages[\"string\"]).required(validationMessages[\"required\"]),\r\n prescribedMedications: Yup.object({\r\n errors: Yup.array().length(0, validationMessages[\"required\"]),\r\n }),\r\n medicationForPain: Yup.string(validationMessages[\"string\"]).required(validationMessages[\"required\"]),\r\n ableToDoMore: Yup.string(validationMessages[\"string\"]).required(validationMessages[\"required\"]),\r\n });\r\n}\r\n\r\nfunction FftSchema(validationMessages) {\r\n return Yup.object().shape({\r\n recommendService: Yup.string(validationMessages[\"string\"]).required(validationMessages[\"required\"]),\r\n effortToUnderstand: Yup.string(validationMessages[\"string\"]),\r\n effortMadeToListen: Yup.string(validationMessages[\"string\"]),\r\n effortToInclude: Yup.string(validationMessages[\"string\"]),\r\n });\r\n}\r\n\r\nfunction PainMedicationSchema(validationMessages) {\r\n return Yup.object().shape({\r\n prescribedMedications: Yup.object({\r\n errors: Yup.array().length(0, validationMessages[\"required\"]),\r\n }),\r\n medicationForPain: Yup.string(validationMessages[\"string\"]).required(validationMessages[\"required\"]),\r\n ableToDoMore: Yup.string(validationMessages[\"string\"]).required(validationMessages[\"required\"]),\r\n medicationChanged: Yup.string(validationMessages[\"string\"]).required(validationMessages[\"required\"]),\r\n });\r\n}\r\n\r\nfunction PainSatisfactionSchema(validationMessages) {\r\n return Yup.object().shape({\r\n satisfiedWithTreatment: Yup.string(validationMessages[\"string\"]).required(validationMessages[\"required\"]),\r\n satisfiedWithStaff: Yup.string(validationMessages[\"string\"]).required(validationMessages[\"required\"]),\r\n generalComments: Yup.string(validationMessages[\"string\"]).required(validationMessages[\"required\"]),\r\n sayToSomeone: Yup.string(validationMessages[\"string\"]).required(validationMessages[\"required\"]),\r\n });\r\n}\r\n","import { Container, Paper, Grid, Typography, Box, Button, Alert, AlertTitle, CircularProgress } from \"@mui/material\";\r\nimport { useHistory } from \"react-router-dom\";\r\nimport React, { useEffect, useState } from \"react\";\r\nimport SendQuestionnaireData from \"../ContactingAPIs/contactingCher.js\";\r\nimport {\r\n CHUIAppBar,\r\n useCHUIAbrLanguageContext,\r\n useCHUIOldAbrLanguageContext,\r\n useCHUIAbrRegionContext,\r\n useCHUILanguageSupportContext,\r\n useCHUILanguageContext,\r\n} from \"@connecthealth-ui/core\";\r\nimport { translateText } from \"../ContactingAPIs/contactingOChad.js\";\r\nimport { getJsonQuestionnaire } from \"../questions/GetQuestionnaire.js\";\r\nimport Element from \"../Components/element\";\r\nimport { FormikStepper, FormikStep } from \"./FormikStepper.tsx\";\r\nimport * as Validation from \"../questions/validation\";\r\nimport clinicallyTranslatedQuestionnaires from \"../Utils/clinicallyTranslatedQuestionnaires.json\";\r\n\r\nconst container = {\r\n padding: \"0 0 20px 0\",\r\n marginTop: \"40px\",\r\n justifyContent: \"center\",\r\n};\r\nconst subContainer = {\r\n padding: \"0 10px\",\r\n paddingTop: \"8px\",\r\n};\r\nconst question = {\r\n marginTop: \"8px\",\r\n};\r\n\r\nconst clinicalTranslateBox = {\r\n display: \"flex\",\r\n justifyContent: \"center\",\r\n};\r\n\r\nconst clinicalTranslateWarning = {\r\n color: \"#cc0000\",\r\n textAlign: \"center\",\r\n};\r\n\r\nexport default function Questionnaire(props) {\r\n let params = new URL(document.location).searchParams;\r\n const history = useHistory();\r\n const UUID = params.get(\"UUID\");\r\n const answersUuid = params.get(\"a\");\r\n const questionnaireUUID = params.get(\"questionnaire\");\r\n const patientPortalUuid = params.get(\"u\");\r\n\r\n //this formInfo is what will be used to update the questionnaire, this should be updated when translating.\r\n const [formInfo, setFormInfo] = useState(null);\r\n const [formikStepperText, setFormikStepperText] = useState();\r\n const [formText, setFormText] = useState();\r\n const [formInfoPages, setFormInfoPages] = useState(null);\r\n const [yupValidation, setYupValidation] = useState(null);\r\n const [submitSuccess, setSubmitSuccess] = useState(null);\r\n const [submitSuccessMessage, setSubmitSuccessMessage] = useState(\"error\");\r\n const [questionnaireDetails, setQuestionnaireDetails] = useState(null);\r\n const [standardJsonQuestions, setStandardJsonQuestions] = useState(null);\r\n const [initialValues, setInitialValues] = useState(null);\r\n const [isLoading, setIsLoading] = useState(true);\r\n const [retryingSubmission, setRetryingSubmission] = useState(false);\r\n\r\n //contexts\r\n const { selectedAbrRegion, setSelectedAbrRegion } = useCHUIAbrRegionContext();\r\n const { languageSupport, setLanguageSupport } = useCHUILanguageSupportContext();\r\n const { selectedLanguage, setSelectedLanguage } = useCHUILanguageContext();\r\n const { selectedAbrLanguage, setSelectedAbrLanguage } = useCHUIAbrLanguageContext(\"en\");\r\n const { selectedOldAbrLanguage, setSelectedOldAbrLanguage } = useCHUIOldAbrLanguageContext();\r\n\r\n //an english standard of the form and text so that all translation is from the original language and text\r\n\r\n const standardValidationMessages = Validation.getValidationMessages();\r\n const standardFormikStepperText = {\r\n next: \"next\",\r\n submit: \"submit\",\r\n submitting: \"submitting\",\r\n errorMessage: \"Invalid inputs, please check your answers\",\r\n successfulSubmitMessage: \"Form was successfully submitted!\",\r\n };\r\n const standardFormText = {\r\n success: \"Success\",\r\n successMessage: \"Your form was successfully submitted! You will be redirected in 3 seconds.\",\r\n error: \"Error\",\r\n expire: \"Questionnaire has expired\",\r\n errorMessage: \"Your answers did not submit successfully! Please check over your answers.\",\r\n expireMessage: \"Your time to complete this questionnaire has expired.\",\r\n errorContinues:\r\n \"Our system's are currently experiencing some issues please try again later. If the issues persists, please contact servicedesk@connecthealth.co.uk and mention the response below.\",\r\n expireContinues: \"Please go back to your Questionnaire Portal, to view your remaining questionnaires.\",\r\n retrying: \"Retrying submission...\",\r\n retryingMessage: \"Your submission is taking longer than expected, please wait while we try again.\",\r\n linkProvided: \"Please use the provided link\",\r\n clinicallyTranslatedDisclaimer:\r\n \"Please be aware that the accuracy and appropriateness of this translation has not been checked, so some words may be incorrectly translated\",\r\n };\r\n\r\n const initialDisclaimerArray = formInfo ? formInfo[\"initialDisclaimer\"].split(\"[NEWLINE]\") : null;\r\n const finalDisclaimerArray = formInfo ? formInfo[\"finalDisclaimer\"].split(\"[NEWLINE]\") : null;\r\n\r\n useEffect(() => {\r\n const language = params.get(\"l\");\r\n const abrLanguage = params.get(\"al\");\r\n const abrRegion = params.get(\"ar\");\r\n if (language == null || abrLanguage == null || abrRegion == null) {\r\n return;\r\n }\r\n\r\n const support = true;\r\n\r\n if (abrLanguage != selectedAbrLanguage && abrLanguage != null) {\r\n setSelectedOldAbrLanguage(selectedAbrLanguage);\r\n setSelectedAbrLanguage(abrLanguage);\r\n setSelectedLanguage(language);\r\n }\r\n\r\n setSelectedAbrRegion(abrRegion != null ? abrRegion : selectedAbrRegion);\r\n setLanguageSupport(support != null ? support : languageSupport);\r\n\r\n if (questionnaireUUID != null) {\r\n setFormInfo(standardJsonQuestions);\r\n\r\n let pages = getFormPages(standardJsonQuestions);\r\n setFormInfoPages(pages);\r\n\r\n setFormikStepperText(standardFormikStepperText);\r\n\r\n setYupValidation(Validation.getValidation(questionnaireUUID, standardValidationMessages));\r\n }\r\n }, []);\r\n\r\n useEffect(async () => {\r\n setIsLoading(true);\r\n if (questionnaireUUID != null) {\r\n const localQuestionnaireDetails = await getJsonQuestionnaire(questionnaireUUID, answersUuid, UUID);\r\n setQuestionnaireDetails(localQuestionnaireDetails);\r\n\r\n const localStandardJsonQuestions = localQuestionnaireDetails ? localQuestionnaireDetails[0][0] : null;\r\n setStandardJsonQuestions(localStandardJsonQuestions);\r\n\r\n const localInitialValues = localQuestionnaireDetails ? localQuestionnaireDetails[1] : null;\r\n setInitialValues(localInitialValues);\r\n\r\n let localFormInfo = localStandardJsonQuestions;\r\n setFormInfo(localFormInfo);\r\n\r\n let pages = getFormPages(localFormInfo);\r\n setFormInfoPages(pages);\r\n\r\n setFormikStepperText(standardFormikStepperText);\r\n\r\n setYupValidation(Validation.getValidation(questionnaireUUID, standardValidationMessages));\r\n }\r\n\r\n setFormText(standardFormText);\r\n setIsLoading(false);\r\n }, []);\r\n\r\n useEffect(async () => {\r\n //translate questions and options\r\n if (selectedAbrLanguage === selectedOldAbrLanguage) return;\r\n\r\n if (selectedAbrLanguage !== \"en\") {\r\n //translate form text\r\n let translatedFormText = await translateText(\r\n JSON.stringify(standardFormText),\r\n selectedAbrLanguage,\r\n selectedOldAbrLanguage,\r\n \"\"\r\n );\r\n\r\n console.log(translatedFormText);\r\n\r\n if (questionnaireUUID != null) {\r\n let translatedFormInfo = await translateText(\r\n JSON.stringify(standardJsonQuestions),\r\n selectedAbrLanguage,\r\n selectedOldAbrLanguage,\r\n \"formName, UUID, id, page, answerType, name, value, type, sliderRange, customChoiceOption, increment, followUpOption, followUpOptions, marks, row, followUpOptionId0, followUpOptionId1, selectColours, defaultColour, mediumColour, highColour, support, listHeaderId, requiredQuestions, rowManagerButtons, requiredQuestions, readOnly\",\r\n questionnaireUUID\r\n );\r\n\r\n //translate formikStatic text\r\n let translatedFormikText = await translateText(\r\n JSON.stringify(standardFormikStepperText),\r\n selectedAbrLanguage,\r\n selectedOldAbrLanguage,\r\n \"\"\r\n );\r\n\r\n let translatedValidationMessages = await translateText(\r\n JSON.stringify(standardValidationMessages),\r\n selectedAbrLanguage,\r\n selectedOldAbrLanguage,\r\n \"\"\r\n );\r\n\r\n //set values at bottom so there is no delay between each translation\r\n setYupValidation(Validation.getValidation(questionnaireUUID, translatedValidationMessages));\r\n setFormikStepperText(translatedFormikText);\r\n setFormInfo(translatedFormInfo);\r\n let pages = getFormPages(translatedFormInfo);\r\n setFormInfoPages(pages);\r\n }\r\n\r\n setFormText(translatedFormText);\r\n }\r\n\r\n setFormText(standardFormText);\r\n }, [selectedAbrLanguage]);\r\n\r\n return (\r\n \r\n {isLoading && (\r\n \r\n \r\n \r\n )}\r\n \r\n {!isLoading && (\r\n \r\n \r\n {UUID != null && questionnaireUUID != null && answersUuid != null && (\r\n \r\n {submitSuccess !== 200 && (\r\n <>\r\n {!checkIfClinicallyTranslated(selectedAbrLanguage, questionnaireUUID) && (\r\n \r\n \r\n {formText?.clinicallyTranslatedDisclaimer}\r\n \r\n \r\n )}\r\n\r\n \r\n \r\n {initialDisclaimerArray\r\n ? initialDisclaimerArray.map((element) => (\r\n

{element}

\r\n ))\r\n : null}\r\n
\r\n\r\n {initialValues != null && (\r\n {\r\n let submitResult = await SendQuestionnaireData(\r\n values,\r\n questionnaireUUID,\r\n UUID,\r\n answersUuid,\r\n questionnaireDetails,\r\n setRetryingSubmission\r\n );\r\n\r\n if (\r\n submitResult[\"StatusCode\"] != null &&\r\n submitResult[\"StatusCode\"] !== 200\r\n ) {\r\n switch (submitResult[\"statusMessage\"]) {\r\n case \" Questionnaire has expired\":\r\n setSubmitSuccessMessage(\"expired\");\r\n break;\r\n default:\r\n setSubmitSuccessMessage(\"error\");\r\n break;\r\n }\r\n }\r\n\r\n setSubmitSuccess(submitResult[\"StatusCode\"]);\r\n window.scrollTo(0, 0);\r\n\r\n setTimeout(() => {\r\n history.push(\r\n `/questionnaire/QuestionnairePortal?UUID=${patientPortalUuid}`\r\n );\r\n }, 3700);\r\n\r\n setSubmitting(false);\r\n }}\r\n >\r\n {formInfoPages\r\n ? formInfoPages.map((field, i) => {\r\n return (\r\n \r\n {field.map((field, i) => (\r\n \r\n \r\n
\r\n ))}\r\n {retryingSubmission && (\r\n \r\n \r\n \r\n {formText[\"retrying\"]}\r\n \r\n

\r\n {formText[\"retryingMessage\"]}\r\n

\r\n
\r\n
\r\n )}\r\n\r\n {submitSuccess != null &&\r\n submitSuccess !== 200 &&\r\n (submitSuccessMessage == \"expired\" ? (\r\n \r\n \r\n \r\n {formText[\"expire\"]}\r\n \r\n

\r\n {\r\n formText[\r\n \"expireMessage\"\r\n ]\r\n }\r\n

\r\n

\r\n {\r\n formText[\r\n \"expireContinues\"\r\n ]\r\n }\r\n

\r\n
\r\n
\r\n ) : (\r\n \r\n \r\n \r\n {formText[\"error\"]}\r\n \r\n

\r\n {formText[\"errorMessage\"]}\r\n

\r\n

\r\n {\r\n formText[\r\n \"errorContinues\"\r\n ]\r\n }\r\n

\r\n \r\n {window.location.href +\r\n \" failed with a response status \" +\r\n submitSuccess}\r\n \r\n
\r\n \r\n ))}\r\n \r\n );\r\n })\r\n : null}\r\n \r\n \r\n )}\r\n \r\n \r\n )}\r\n\r\n {submitSuccess === 200 && (\r\n \r\n \r\n {formText[\"success\"]}\r\n {formText[\"successMessage\"]}\r\n \r\n \r\n )}\r\n\r\n \r\n {finalDisclaimerArray\r\n ? finalDisclaimerArray.map((element) =>

{element}

)\r\n : null}\r\n
\r\n \r\n )}\r\n\r\n {UUID == null && (\r\n \r\n

{formText ? formText[\"linkProvided\"] : null}

\r\n
\r\n )}\r\n \r\n \r\n )}\r\n \r\n \r\n );\r\n}\r\n\r\nfunction getFormPages(formInfo) {\r\n let pages = [];\r\n let page = [];\r\n\r\n let questions = formInfo ? formInfo.questions : {};\r\n if (questions && Object.keys(questions).length === 0 && Object.getPrototypeOf(questions) === Object.prototype) {\r\n return pages;\r\n }\r\n let prevNumber = 1;\r\n questions.forEach((element) => {\r\n if (element[\"page\"] !== prevNumber) {\r\n pages.push(page);\r\n page = [];\r\n prevNumber++;\r\n }\r\n\r\n page.push(element);\r\n });\r\n\r\n // push last page\r\n pages.push(page);\r\n\r\n return pages;\r\n}\r\n\r\nfunction checkIfClinicallyTranslated(languageAbr, questionnaireUuid) {\r\n if (!clinicallyTranslatedQuestionnaires[languageAbr]) return false;\r\n if (clinicallyTranslatedQuestionnaires[languageAbr] == \"*\") return true;\r\n\r\n if (clinicallyTranslatedQuestionnaires[languageAbr].includes(questionnaireUuid)) return true;\r\n\r\n return false;\r\n}\r\n","import { BrowserRouter as Router, Switch, Route } from \"react-router-dom\";\r\nimport { CancelAppointment } from \"./Components/AppointmentBooking/AppointmentCancellation/CancelAppointment\";\r\nimport { ConfirmAppointment } from \"./Components/AppointmentBooking/AppointmentConfirmation/ConfirmAppointment\";\r\nimport { AppointmentLanding } from \"./Components/AppointmentBooking/AppointmentLanding/AppointmentLanding\";\r\nimport { OptInBooking } from \"./Components/OptInBooking/OptInBooking\";\r\nimport { OptInBookingConfirmation } from \"./Components/OptInBooking/OptInBookingConfirmation\";\r\nimport { CarePlanConfirmation } from \"./Components/CarePlan/CarePlanConfirmation\";\r\nimport { LightValidation } from \"./Components/Validation/LightValidation\";\r\nimport { OptInBookingInvalid } from \"./Components/OptInBooking/OptInBookingInvalid\";\r\nimport { ValidationError } from \"./Components/Validation/ValidationError\";\r\nimport { QuestionnairePortal } from \"./Components/Questionnaires/QuestionnairePortal\";\r\nimport Questionnaire from \"./Components/Questionnaires/Questionnaire/Components/questionnaire\";\r\nimport { createTheme, ThemeProvider } from \"@mui/material/styles\";\r\nimport {\r\n CHUIAppBar,\r\n CHUIFooter,\r\n CHUITheme,\r\n useCHUIDarkModeContext,\r\n useCHUITextSizeContext,\r\n} from \"@connecthealth-ui/core\";\r\nimport { CssBaseline, Paper } from \"@mui/material\";\r\nimport { useMemo, useEffect } from \"react\";\r\n\r\nfunction App() {\r\n const { prefersDarkMode } = useCHUIDarkModeContext();\r\n const { selectedTextSize } = useCHUITextSizeContext();\r\n\r\n const theme = useMemo(() => {\r\n return createTheme(CHUITheme(prefersDarkMode, selectedTextSize));\r\n }, [prefersDarkMode, selectedTextSize]);\r\n return (\r\n \r\n \r\n {/* min height in the total view height - footers height*/}\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\nexport default App;\r\n\r\nfunction getTitle() {\r\n let pathname = window.location.pathname.toString();\r\n if (pathname.includes(\"Appointments\") || pathname.includes(\"Booking\")) {\r\n return \"Appointment Booking\";\r\n } else if (pathname.includes(\"Questionnaire\")) {\r\n return \"Digital Assessment\";\r\n } else if (pathname.includes(\"CarePlan\")) {\r\n return \"Care Plan\";\r\n } else if (pathname.includes(\"Validation\")) {\r\n return \"Validation\";\r\n } else {\r\n return \"Patient Portal\";\r\n }\r\n}\r\n\r\nfunction includeTranslation() {\r\n let pathname = window.location.pathname.toString();\r\n if (pathname.includes(\"Questionnaire\")) {\r\n return true;\r\n }\r\n\r\n return false;\r\n}\r\n","import React from \"react\";\r\nimport ReactDOM from \"react-dom\";\r\nimport \"./index.css\";\r\nimport App from \"./App\";\r\nimport { CHUIContextProvider } from \"@connecthealth-ui/core\";\r\nReactDOM.render(\r\n \r\n \r\n \r\n \r\n ,\r\n document.getElementById(\"root\")\r\n);\r\n"],"sourceRoot":""}