{"version":3,"sources":["components/Calendar/TimeSlots.tsx","hooks/usePersonalData.ts","components/ErrorBoundary/ErrorBoundary.jsx","components/Modals/AlertModal/AlertModal.tsx","context/alertReducer.ts","context/appPropsReducer.ts","context/checkInReducer.ts","context/dokumenteReducer.ts","context/executeRuleReducer.ts","context/iframeReducer.ts","context/loginReducer.ts","context/questionnaireReducer.ts","context/sigPadReducer.ts","context/terminierungReducer.ts","context/themeReducer.ts","context/videochatReducer.ts","fonts/Inter.ttf","fonts/Roboto-Regular.ttf","globals/GlobalStyles.ts","App.tsx","serviceWorker.ts","index.tsx","services/fhir/FHIRDiagnosticReports.ts","components/Div/StyledDiv.tsx","hooks/useAppProperties.ts","context/questionnaireContext.ts","components/Badges/StyledBadge.tsx","utils/lottieUtils.ts","services/fhir/FHIRPatientResource.ts","components/Loading/Loading.tsx","components/Loading/LoadingSpinnerWithText.tsx","context/executeRuleContext.ts","utils/soundUtils.ts","components/Telephone/Telephone.tsx","components/Chat/ChatMessages.tsx","components/Chat/ChatInput.tsx","components/Chat/ChatMessagesContainer.tsx","components/Chat/Message.tsx","components/Chat/Chat.tsx","components/Chat/ChatWidgetContainer.tsx","components/Chat/ChatWidgetSymbol.tsx","components/StyledText/StyledHeader.tsx","hooks/useHandleLogout.ts","components/Cards/AppointmentDate.tsx","components/Cards/AppointmentChat.tsx","components/Cards/CompleteAppointment.tsx","components/Cards/AppointmentStatus.tsx","components/Modals/CancelAppointmentModal/CancelAppointmentModal.tsx","components/Cards/CancelAppointment.tsx","components/Cards/InpatientAppointment.tsx","components/Cards/Participants.tsx","components/Cards/PostponeAppointment.tsx","components/Cards/AppointmentCard.tsx","context/alertContext.ts","services/fhir/FHIRQuestionnaire.ts","context/themeContext.ts","context/sigpadContext.ts","utils/dateUtils.ts","components/IFrame/IFramePDF.tsx","utils/chartUtils.ts","container/Mainscreen/FullScreenImpressum.tsx","components/Buttons/StyledButton.tsx","components/Modals/PDFModal/PDFModal.tsx","components/Buttons/SelectButton.tsx","components/Cols/StyledCol.tsx","container/PersonalDataSummary/PersonalDataSummary.tsx","utils/documentUtils.ts","components/Modals/BlockingAppointmentModal/BlockingAppointmentModal.tsx","components/AppointmentPersonalData/AppointmentPersonalData.tsx","components/Div/DragNDropArea.tsx","context/loginContext.ts","components/SidebarItems/Avatar.tsx","container/Sidebar/Sidebar.tsx","hooks/barcodeKeyHandler.ts","components/Tabs/StyledNavButton.tsx","components/Buttons/EncounterTitle.tsx","components/ProfileSwitch/PatientSwitch.tsx","components/ProfileSwitch/ProfileSwitch.tsx","hooks/useNavbar.ts","container/Navbar/Navbar.tsx","hooks/useChart.ts","components/TableProvider/TableProvider.tsx","components/Modals/TableModal/TableModal.tsx","components/Charts/ChartViews/EmptyView.tsx","components/Charts/ChartViews/FiveYearsView.tsx","components/Charts/ChartViews/MaxView.tsx","components/Charts/ChartViews/OneMonthView.tsx","components/Charts/ChartViews/OneWeekView.tsx","components/Charts/ChartViews/OneYearView.tsx","components/Charts/ChartViews/ViewSwitcher.tsx","components/Charts/ActivityCharts/ActivityCharts.tsx","components/Charts/BloodSugar/BloodSugarCharts.tsx","components/Charts/BodyFat/BodyFatCharts.tsx","components/Charts/FLI/FLICharts.tsx","components/Charts/SAM/SAMCharts.tsx","components/Charts/Weight/WeightCharts.tsx","components/Charts/AppCharts/AppCharts.tsx","components/IFrame/IFrameFragebogen.tsx","container/Charts/Charts.tsx","container/Charts/ChartsActivity/ChartsActivity.tsx","container/Charts/ChartsBlutzucker/ChartsBlutzucker.tsx","container/Charts/ChartsFettmasse/ChartsFettmasse.tsx","container/Charts/ChartsFLI/ChartsFLI.tsx","container/Charts/ChartsGewicht/ChartsGewicht.tsx","container/Charts/ChartsSAM/ChartsSAM.tsx","container/Error/Error.tsx","container/ExecuteRule/ExecuteRule.ts","components/EnrollCodeBox/EnrollCodeBox.tsx","container/Home/Home.tsx","container/NeuerAccount/NeuerAccountPhysLogin.tsx","images/CardSim.png","components/Buttons/ReadCardButton.tsx","container/Splashscreen/CheckInSplashscreen.tsx","container/Splashscreen/CheckInSplashscreenMultifragebogenWaiting.tsx","container/Splashscreen/CheckInSplashscreenWaiting.tsx","container/Splashscreen/LoggedOutSplashscreen.tsx","components/Tables/VAL/VALTable.tsx","container/Tables/TableVAL/TableVAL.tsx","Routes.tsx","context/dokumenteContext.ts","utils/appointmentUtils.ts","components/AppointmentCalendar/AppointmentCalendar.tsx","components/AppointmentCalendar/AppointmentCalendarWithHeadline.tsx","context/iframeContext.ts","globals/theme.ts","components/Div/ImageDiv.tsx","components/Modals/ForeignQRModal/ForeignQRModal.tsx","components/Modals/PDFModal/EmbeddedPDF.tsx","components/Toast/ErrorToast.tsx","container/Fragebogen/FragebogenDetail.tsx","utils/photoUtils.ts","hooks/useLoadQuestionnaireAnswers.ts","components/RefreshButton/RefreshButton.tsx","services/RestServices.ts","utils/questionnaireUtils.ts","components/Modals/TelephoneModal/TelephoneModal.tsx","services/VideochatService.ts","hooks/useSecurityItems.ts","components/Booking/EarlierAppointment.tsx","components/Booking/Booking.tsx","hooks/usePatientSwitch.ts","components/Calendar/StyledCalendar.tsx","components/Calendar/Calendar.tsx","context/terminierungContext.ts","components/ExtraLinks/ExtraLinks.tsx","hooks/useScreenResolution.ts","hooks/useProfileSwitch.ts","container/Navbar/StyledNavbar.tsx","components/IFrame/IFrame.tsx","utils/executeRuleUtils.ts","utils/generalUtils.ts","components/SignaturePad/SignaturePad.tsx","components/PhysicianSelectionCard/PhysicianSelectionDescriptionList.tsx","components/PhysicianSelectionCard/PhysicianSelectionPhoto.tsx","components/Modals/WebcamModal/WebcamPreviewModal.tsx","container/Navbar/NavbarCheckInWL.tsx","container/NeuerAccount/NeuerAccount.tsx","components/Tabs/StyledTab.tsx","components/PhysicianSelectionCard/PhysicianSelectionCardWithAppointments.tsx","components/Calendar/HorizontalDateSwitcher.tsx","components/PhysicianSelectionCard/PhysicianSelectionCardWithDateSwitcher.tsx","container/AppointmentCategory/AppointmentCategoryExtendedPhysican.tsx","hooks/useSignotecConnector.ts","hooks/useSignaturePad.ts","components/SignaturePad/SignaturePadSignotec.tsx","components/Modals/SignDocumentModal/SignDocumentModal.tsx","components/SidebarItems/SidebarItem.tsx","components/SidebarItems/SidebarItemList.tsx","utils/screenResolution.ts","utils/alertHandling.ts","components/Stepper/StepperCheckIn.tsx","context/appPropsContext.ts","components/Inputs/RemarkInputField.tsx","components/AppointmentPersonalData/AppointmentPersonalDataWithCardRead.tsx","components/AppointmentPersonalData/AppointmentPersonalDataWithLogin.tsx","components/Modals/CodeInputModal/CodeInputModal.tsx","components/Booking/BookingAppointment.tsx","components/FinalCheckIn/FinalCheckIn.tsx","components/Modals/LoginCardModal/LoginCardModal.tsx","components/Badges/BadgesList.tsx","container/AppointmentCategory/AppointmentCategoryDepartment.tsx","container/AppointmentCategory/AppointmentCategoryLocation.tsx","components/PhysicianSelectionCard/PhysicianSelectionCard.tsx","container/AppointmentCategory/AppointmentCategoryPhysician.tsx","container/AppointmentCategory/AppointmentCategoryReasonHints.tsx","container/AppointmentCategory/AppointmentCategoryReason.tsx","container/Termine/TermineCheckIn.tsx","container/Upload/Upload.tsx","container/CheckIn/CheckInWL.tsx","hooks/useMessages.ts","hooks/useAuth.ts","components/Cards/StyledCardContent.tsx","utils/fileUtils.ts","components/Modals/PhotoModal/PhotoModal.tsx","components/UploadContentCards/UploadContentCards.tsx","container/UploadContent/UploadContent.tsx","components/StyledParagraph/StyledParagraph.tsx","components/Rows/StyledRow.tsx","components/Cards/StyledCard.tsx","utils/errorHandling.ts","components/QRCode/QRCodeForApp.tsx","components/Impressum/Impressum.tsx","components/Modals/WebcamModal/WebcamModal.tsx","components/Toast/ConfirmationToast.tsx","components/Modals/StyledModal/StyledModal.tsx","container/Fragebogen/MultiFragebogen.tsx","container/Videochat/VideochatWL.tsx","components/Modals/ConsignationModal/ConsignationWaitForLetterModal.tsx","components/Modals/NewPWDModal/NewPWDModal.tsx","components/User/InitialPassword.tsx","components/Modals/ConsignationModal/ConsignationWaitModal.tsx","components/Modals/DoDoubleOptInModal/DoDoubleOptInModal.tsx","components/Modals/DoDoubleOptInModal/DoDoubleOptInViaLinkModal.tsx","components/Modals/TwoFALoginModal/TwoFALoginModal.tsx","components/Modals/ConsignationModal/ConsignationModal.tsx","components/Modals/ConsignationModal/ConsignationAddModal.tsx","components/User/ConsignationAdd.tsx","components/User/Consignation.tsx","container/Login/Login.tsx","components/Appointments/PastAppointments.tsx","components/Appointments/StyledHeader.tsx","components/Appointments/UpcomingAppointments.tsx","components/Modals/CancelAppointmentModal/AskNewAppointmentModal.tsx","container/Termine/Termine.tsx","components/Stepper/StepperTerminierungAlternateDate.tsx","container/Terminierung/TerminierungAlternateDate.tsx","utils/pcpUtils.ts","components/StyledForm/SyledForm.tsx","services/fhir/fhirConstants.ts","components/Header/Header.tsx","components/Tooltip/MyTooltip.tsx","globals/global.ts","hooks/useGoogleAnalytics.ts","container/Navbar/NavbarBottom.tsx","container/Mainscreen/Mainscreen.tsx","context/videochatContext.ts","hooks/useAppointmentSelection.ts","components/Buttons/ToggleButtonGroupCst.tsx","utils/urlUtils.ts","services/fhir/FHIRAppointment.ts","context/checkInContext.ts"],"names":["isTimeslotDateSet","date","start","end","TimeSlots","props","useContext","TerminierungContext","tmstate","tmdispatch","apstate","AppPropsContext","useAppointmentSelection","getSelectedResource","setSelectedResource","setSelectedTimeslot","getAvailableTimeslots","getSelectedTimeslot","getMakroIdFromResourceServiceType","useState","show","blockingModalShow","setBlockingModalShow","getTime","moment","format","useEffect","resource_1","unblockAppointment","clickedTimeslot","timeslot","supressDuration","a","selectedTimeslot","updatedResource","setReplacedRoomForResource","workOnAppointmentNr","replacedRoom","setReplacedStartEndForResource","setReplacedPractitionerForResource","replacedPractitioner","setReplacedCareUnitForResource","replacedCareUnit","setReplacedDepartmentForResource","replacedDepartment","setReplacedServiceTypeForResource","replacedServiceType","resource","blockAppointment","success","undefined","selectedReason","makroId","filteredSelectedReason","filteredReasons","filter","e","type","getTimeRange","slot","selectedDay","getGermanDateFormatFromString","xs","sm","md","lg","xl","availableTimeslots","availableTimeslot","map","data","index","display","Appointment","skipBehandlersuche","placement","overlay","id","className","selected","height","width","variant","block","onClick","displayAllTimeslots","onHide","usePersonalData","state","LoginContext","checkinstate","CheckInContext","shouldCreateAccount","personalData","username","length","password","getAndSetPersonalData","useCallback","sessionId","activeUserId","practitionerRoleId","getPractitionerResource","getPatientResource","patdata","patdataExt","extractPatData","insuranceNr","firstName","lastName","birthday","gender","email","emailHome","telephone","telephoneHome","mobilePhone","academicTitle","street","streetHome","housenr","houseNrHome","city","cityHome","zip","zipHome","country","profilePhoto","plannedStudies","insuranceName","language","readCardDataAndSetPersonalData","wpName","readCardData","readCardResponse","nameLast","houseNumber","eGK","readKVDataAndSetPersonalData","txt","interpreteKVParams","response","kvBarcode","barcode","resetPersonalData","resetPersonalDataPhysPat","getPlannedStudyParticipation","studyCode","study","find","p","code","participate","getEnrollData","selectedResource","produce","draft","enrollData","nameFirst","toString","birthdate","streetNr","bsnr","tel","remark","ambId","getLocationCareUnitIdFromResource","maId","getParticipantIdFromResource","departmentId","getLocationDepartmentIdFromResource","roomId","getLocationRoomIdFromResource","createAccount","accountName","accountPWD","selectedReasonHints","selectedPhysicianId","selectedPhysician","selectedAptType","selectedAppointmentType","selectedInsurance","earlierAppointmentWanted","selectedDepartment","name","getEnrollDataPhysPat","enrollDataPhysPat","personalDataPhysPat","ErrorBoundary","hasError","error","errorInfo","stack","componentStack","this","setState","children","Component","AlertModal","navigate","useNavigate","AlertContext","alertstate","alertdispatch","handleLogoutAfterIdleTime","useHandleLogoutAfterIdleTime","errorType","setErrorType","alertMessage","alertType","AlertType","info","StyledModal","showModal","size","centered","Modal","Header","Title","alertTitle","Body","Alert","alertTxt","Footer","StyledButton","resetShowAlertMessage","AlertOnHide","custom","onHideCustom","onlyClose","goToHome","Paths","HOME","reload","window","location","buttonName","alertReducer","action","appPropsReducer","appPropsSet","AppointmentSummary","behandler","fach","pflege","raum","standort","RegistrationMandFields","birthDate","phone","privacyTerms","RegistrationVisibleFields","RegistrationReadOnlyFields","allowAccountAfterAppointment","allowAccountCreateDirect","allowAppointments","allowAppointmentsWithoutLogin","allowDirectAppointments","allowDirectAppointmentsWithoutLogin","allowLogin","allowVideo","allowVideoWithoutLogin","allowAccountInAnmeldeworkflow","brandingBytes","brandigType","extraLinks","customTexts","showMobileQR","jitsiDomain","jitsiOptions","impressum","anmeldeContexts","countDaysToVisualize","extendedPhysicians","allowChat","googleAnalyticsID","fullscreenMode","checkinReducer","urlToCallResponse","url","key","reason","requesttype","userId","t0","otp","dokumenteReducer","filedata","lastModified","lastModifiedDate","title","conclusion","uploaded","Date","executeRuleReducer","ruleName","ruleParam","persInfo","iframeReducer","src","callingPage","loginReducer","isLoggedIn","userName","securityItems","CHARTS","CHARTS_WEIGHT","CHARTS_FATMASS","CHARTS_BLOODSUGAR","CHARTS_FLI","CHARTS_SAM","CHARTS_ACTIVITY","TABLE_VAL","PATLIST","DOKUMENT","FOTOS","FRAGEBOGEN","MEDIKATION","TAGESPLAN","TERMINE","VIDEO","JOURNEY","TODO","TAB_ORDER","iceServers","possibleMacros","departments","activeStudies","activeProfile","termsHTML","privacyHTML","possibleStudies","addConsignationsToAsk","encounterId","encounterTitle","activeSidebarItem","activePatients","activePatient","lastPatOpened","setOfInitPageDone","securityItemsStudy","finalSecurityItemsOrder","gdt","redirectUser","redirectPwd","questionnaireReducer","qData","selectedQuestionnaire","selectedAnswers","item","questionnaireBody","isExternalRequest","externalUserId","externalOTP","externalT0","externalBaseURL","entry","linkId","text","resourceType","extension","valueString","valueReference","reference","authored","context","identifier","system","value","meta","versionId","lastUpdated","questionnaire","source","status","subject","sigpadReducer","deviceData","deviceName","canStoreEncryptKey","firmwareVersion","serialNumber","supportsRSA","padConnectionType","padIndex","displayHeight","displayWidth","sampleRate","scaleFactorX","scaleFactorY","xResolution","yResolution","sigData","certId","pictureData","rsaSignature","signData","signingCert","canvasRef","deviceActions","sendClicked","cancelClicked","terminierungReducer","withLogin","withCheckIn","selectedCategory","selectedLocation","hdBooking","countAPKs","oneMacro","macroCode","macroType","selectedTimeslots","timeslotClicked","selectedResources","renewAppointment","enrollCode","patNameFirst","patNameLast","scheduleTime","fhir","participant","serviceType","waitNumber","requestFromDirectLink","isToday","res","changePersonalData","canceledAppointment","journeyData","site","hints","reasons","makroCode","makroName","pFilter","aFilter","reasonCode","reasonId","reasonName","lines","pict","cancelNewAppointmentData","selectedDeparment","themeReducer","theme","navbarCollapsed","videochatReducer","incomingCall","callAccepted","caller","remoteSid","roomName","jitsiAllowed","app","wsconnect","readyState","peerConnection","close","localStream","getTracks","forEach","track","stop","remoteStream","chatMessages","numberUnreadMessages","appointmentChat","lastIncomingAppChatMsg","incomingMessages","iceServer","lastIncomingTextChatMsg","appChat","chatOpen","appointmentChatEntry","getAppointmentChatEntry","numberUnreadMsg","appChatValue","newAppointmentChat","push","numberUnread","audioMuted","jitsiError","GlobalStyles","createGlobalStyle","Inter","Roboto","App","locale","useReducer","initialLoginState","dispatch","initialAlertState","initialVideochatState","vsstate","vsdispatch","initialTerminierungState","initialDokumenteState","docstate","docdispatch","initialQuestionnaireState","qstate","qdispatch","InitialAppPropsState","apdispatch","initialThemeState","themestate","themedispatch","initialExecuteRuleState","executerulestate","executeruledispatch","initialSigPadState","sigpadstate","sigpaddispatch","initialIFrameState","iframestate","iframedispatch","initialCheckInState","checkindispatch","useLocation","refreshPage","getProperties","getAppProperties","propRes","setDataFromAppProperties","ReactGA","initialize","showAlertMessage","allowVideochatMessages","hashParams","getQueryParams","search","user","pwd","replace","hash","lastIndexOf","setRuleProperties","pTheme","getThemeConfig","getTheme","Provider","getAppVersion","Boolean","hostname","match","ReactDOM","render","document","getElementById","navigator","serviceWorker","ready","then","registration","unregister","require","DIAGNOSTIC_REPORT","getDiagnosticReportsOfPatient","getFHIRConfig","query","patient","catch","responseErrorHandling","getDiagnosticReportsByCategory","category","_targetDevice","getDiagnosticReport","documentId","authData","myAuthData","read","uploadPDF","file","dataTrim","split","dataResource","effectiveDateTime","presentedForm","contentType","create","sendPhotoDiagnosticReport","imageArr","img","photoResource","coding","LeftDiv","styled","div","prop","marginTop","marginBottom","marginLeft","marginRight","LeftDivMain","AnmeldBaseDiv","AnmeldBaseHeader","AnmeldBaseHeaderLogin","LeftDivCheckIn","RightDiv","CenterDiv","margin","paddingTop","paddingBottom","paddingLeft","paddingRight","overflowX","overflowY","color","backgroundColor","zIndex","position","bottom","top","right","left","maxHeight","fontSize","CheckInCenterDiv","StickyHeaderTitleDiv","header","main","StickyStepperWithNavbar","StickyStepperDiv","StickyButtonRowBottomDiv","StickyStepperRowDiv","StickyHeaderTabsDiv","mainColor","tabcontainer","backgroundImage","StickyTagesplanSectionDiv","VerticalCenterDiv","divTop","borderRight","VerticalCenterFlexDiv","divWidth","IconDiv","icon","default","backgroundColorHover","borderRadius","MainHeaderButtonIcon","ChartInnerDiv","ChartOuterDiv","MailParentDiv","selectButton","backgroundColorActive","MailListDiv","MailContentDiv","MailContentHeaderDiv","StyledStepperContentDiv","StepperContentDiv","useScreenResolution","EmbeddedPDFContainer","EmbeddedPDFFooter","EmbeddedPDFContent","EmbeddedSignDocumentModalContainer","SpaceBetweenDiv","lineHeight","ImpressumBottom","ContentWithoutImpressum","CenterPositionFixedDiv","useAppProperties","themeContext","ThemeContext","screenSize","getAndSetAppProperties","getImpressum","impressumLink","datenschutzLink","textColor","button","secondary","isExtendedPhysicians","isFullscreenMode","enableFullscreenMode","disableFullscreenMode","getCountDaysToVisualize","QuestionnaireContext","createContext","StyledBadge","Badge","borderwidth","appointmentStatus","enteredInError","badge","neg","borderColor","Styled2FABadge","pos","CategoryBadge","Button","backgroundColorSelected","colorSelected","CategoryBadgeSelected","BadgeWithWordWrap","padding","lottieCheck","loop","autoplay","animationData","checkAnimation","rendererSettings","preserveAspectRatio","calcButtonPaddingSize","buttonRef","lottieWidth","calcButtonWidth","current","offsetWidth","changePatientResource","update","getNewPlannedStudiesEntry","plannedStudy","valueCoding","valueBoolean","modifyPatientResource","originalPatientResource","newData","newPatientResource","formatedBirthdate","address","i","use","telecom","getGenderEN","foundInsuranceNrEntry","given","family","prefixPosition","_prefix","j","z","valueCode","prefix","line","_line","foundPhoneEntry","postalCode","patientResource","newPlannedStudies","foundEntry","endsWith","studyEntries","updatePatientResourcePlannedStudies","getPatientId","patientdataJson","getPatientNumber","ele","element","getFamilyName","nameArr","familyName","getGivenName","givenName","getInsuranceNr","getGender","getHomePhone","telecomArr","getMobilePhone","getAcademicTitle","arrayPosition","getCountry","addressArr","getCountryLongName","getHomeEmail","getHomeCity","getHomeHouseNr","splitAdressLineToStreetAndHouseNr","houseNr","addressLine","getAddressLine","firstNumberAppearance","character","charAt","trim","substring","lineArr","getHomePostalCode","getLanguage","communication","communcationArr","getInsuranceName","getPlannedStudies","allPlannedStudies","plannedStudySelection","birthdayFormated","getBirthdayPrettyFormatedWithAge","getBirthDate","patientId","patientNumber","getPatientProfilePictureWL","_id","_includePicture","getPatientProfilePicture","getPatientsWithName","practitioner","_count","lottieSpinnerOptions","loadingSpinner","lottieSpinnerWhiteOptions","loadingSpinnerWhite","LottieSpinner","options","LoadingSpinner","LoadingSpinnerInMainscreen","LottieButtonLoadingSpinner","LoadingSpinnerWithText","style","loadingText","ExecuteRuleContext","playSound","audioFile","load","currentTime","muted","audioPromise","play","err","console","handleAudioPlay","stopSound","audio","pause","ringtone","Audio","ringtoneStarted","lottieIncomingCall","incomingCallAnimation","lottieCallOff","callOffAnimation","gotIceCandidate","event","candidate","sid","send","JSON","stringify","rtc","ice","mySid","callAccept","cmd","hasOwnVideo","onicecandidate","ontrack","streams","VIDEOCHAT","VIDEOCHAT_WL","callOff","navigation","userAction","stopRingTone","pathname","TERMINCODE","CallAcceptIcon","OverlayTrigger","tooltipText","Tooltip","CallOffIcon","TelephoneRing","VideochatContext","callProps","soundConfig","playRingTone","Telephone","MessageType","ChatInput","msg","setMsg","sendMessage","handleUserMessage","Form","Row","Col","Control","placeholder","onChange","target","onKeyDown","cursor","ChatMessagesContainer","Container","OutgoingMsgDiv","IncomingMsgDiv","OutgoingMessage","span","offset","StyledParagraph","ParagraphFontSize","ExtraSmall","time","IncomingMessage","MessageIdType","ChatMessages","messageBottomRef","useRef","allMsg","setAllMsg","displayAllMessages","messages","scrollIntoView","allMessages","message","Outgoing","Incoming","chatContainerHeight","ref","ChatWidgetBaseContainer","ChatWidgetContainer","ChatWidgetSymbolContainer","WidgetSymbol","showUnreadBadge","isOpen","ChatWidgetSymbol","StyledCol","textAlign","handleIconClick","isChatOpen","appId","Chat","setMessages","widgetIconClicked","setWidgetIconClicked","allIncomingMsg","ts","isPat","userMsg","idType","AppId","addChatEntryAppointment","EnrollCode","addChatEntry","handleWidgetSymbolClick","ChatWithWidget","fluid","showChatInput","ChatWithoutWidget","asWidget","StyledMainHeader","h3","font","highlightColor","StyledSubHeader","h4","useHandleLogoutWL","handleLogout","preventDefault","useHandleLogoutCheckIn","handleLogoutCheckIn","useHandleLogout","logout","loginData","includes","startDate","dateStart","dateEnd","isSame","startTime","modifierExtension","ext","AppointmentDate","fontWeight","AppointmentChatIcon","setNumberUnread","setShowUnreadBadge","getNumberUnreadMessages","handleChatIconClick","currentChatOpenStatus","toggleChatOpen","Nav","Link","MyTooltip","iconDiv","AppointmentChat","allIncomingMessages","setAllIncomingMessages","getAllIncomingMessages","parse","isDateToday","CompleteAppointmentBadge","pill","TERMINIERUNG_ALTERNATE_DATE","translateStatus","AppointmentStatus","CompleteAppointment","CancelAppointmentModal","backdrop","noValidate","onSubmit","currentTarget","checkValidity","stopPropagation","commentPossible","Group","controlId","onInput","float","CancelAppointment","React","cancelModalShow","setCancelModalShow","setReason","handleSubmit","cancelEnrollment","cancelRes","onHideAlertModal","cancelAppointment","ERROR","contained","InpatientAppointment","inpatientAppointment","Participants","showDepartment","showCareUnit","showRoom","showPractitioner","ptype","getParticipantType","actor","displayValue","getLongNameFromAppointmentData","APPOINTMENTTYPE_DEPARTMENT","passive","APPOINTMENTTYPE_CAREUNIT","APPOINTMENTTYPE_ROOM","APPOINTMENTTYPE_PRACTITIONER","renderActor","PostponeAppointment","postponeAppointment","APPOINTMENT_POSTPONE_REASON","DetailsButtonParentDiv","DetailsButton","displayParticipants","appointment","sortedParticipant","sortParticipantsForCard","allParticipants","participants","AppointmentCard","setChatOpen","isInpatient","getEncounterTitle","department","justifyContent","cardPosition","alignItems","bg","cardWidth","isCancelable","cancelled","arrived","showIcon","today","isAppSeriesAppointment","showPostponeAppointmentIcon","showChatIcon","getSelectedReasonFromAppointment","macroName","getMacroNameFromAppointment","showReason","comment","QUESSTIONNAIRE_RESPONSE","fetchOptions","method","headers","Accept","Authorization","getQuestionnaires","patRoleId","requestTime","toISOString","getQuestionnaireById","request","getQuestionnaireByFHIRId","fhirId","getQuestionnaireContent","getQuestionnaireOTPAuth","session","baseUrl","baseURL","sendQuestionnaire","targetPatId","qr","getFhirURL","baseurl","getBaseURL","fetch","body","updateQuestionnaireContent","SigPadContext","diff","isDateBeforeToday","isBefore","getCalculatedElapsedTimeFromEndFormat","times","fromNow","getCurrentDateTime","setTimeOnDate","timeParts","set","hour","parseInt","minute","getCurrentTime","monthNameConverter","month","convertedMonth","getWeekDay","IFramePDF","useResizedScreenResolution","initalChartData","displayOption","chartOptions","animation","duration","scales","xAxes","bounds","distribution","unit","min","max","yAxes","axisLeft","axisRight","factorFromLeft","chartData","AXIS","COLOR","DECDIGIT","OPACITY","SHOWHD","TITLELONG","TYPE","YMIN","YMAX","t","y","label","targetChart1","targetChart2","targetChart3","chartViewLimits","fiveYears","oneYear","oneMonth","oneWeek","labels","labelOption","tooltipPrecisionVal","chartViews","ONE_WEEK_VIEW","ONE_MONTH_VIEW","ONE_YEAR_VIEW","FIVE_YEAR_VIEW","ALL_VIEW","charts","ACTIVITY","requestId","appTypeName","FATMASS","FLI","SAM","WEIGHT","BLOODSUGAR","tables","VALTBL","transformAndSortDates","jsonRes","datasets","dateAsMoment","sort","b","chartSettingsForDevice","view","screenWidth","screenHeight","isTablet","isMobile","rotation","handleDisplayControllers","showControllers","getUnitFromLabel","unitFromLabel","getDatasetData","labelsToDisplay","chartProps","chartName","mmol_l","mg_dl","day","localMin","localMax","firstDailyDataMax","firstDailyDataMin","minSpanData","maxSpanData","dailyData","foundFirstData","Infinity","m","yNumber","Number","lastDailyDataMax","lastDailyDataMin","fill","lineTension","barPercentage","datalabels","align","anchor","opacity","weight","formatter","chart","dataIndex","toFixed","spanGaps","pointRadius","borderWidth","steppedLine","radius","getChartOptionsData","scalesOffset","displayFormats","second","millisecond","isoWeekday","ticks","ticksXMin","ticksXMax","maxRotation","ticksMaxRotation","chartSettings","minRotation","ticksMinRotation","autoSkipPadding","labelOffset","ticksLabelOffset","autoSkip","maxTicksLimit","scaleLabel","labelString","suggestedMin","suggestedMax","legend","tooltips","intersect","titleFontColor","callbacks","tooltipItem","yLabel","xLabel","labelTextColor","datasetIndex","zoom","enabled","mode","onZoomComplete","updateLimits","pan","onPanComplete","annotation","annotations","drawTime","yMin","yMax","targetBarrier","yScaleID","targetArea","getTableDataFromDiagnosticReportResponse","diagnosticReportResponse","tableTitle","tableData","getTableHeight","FullScreenImpressum","buttonProps","bp","primary","colorHover","borderRadiusTopLeft","borderRadiusTopRight","borderRadiusBottomLeft","borderRadiusBottomRight","border","borderColorHover","boxShadow","warning","danger","borderHover","ModalCst","fullScreen","modal","PDFModal","signModalShow","setSignModalShow","docIsSigned","setDocIsSigned","pdfDocAfterSign","setPdfDocAfterSign","isSigned","onSignModalSigned","diagnosticReportData","addSignatureToPDF","pdfURF","modalTitle","pdfData","isSignable","disabled","blur","showSignModal","embedded","onSign","onCancel","SelectButton","TimeslotButton","ToggleButton","borderLeft","MainHeaderCol","ChartsHeaderCol","MainHeaderButtonCol","ChartsButtonCol","AppointmentCardHeaderCol","AppointmentCardHeaderStatusButtonCol","AppointmentCardDateCol","AppointmentCardStatusCol","AppointmentCardButtonCol","StyledColNoPadding","DateSwitcherTimeslotCol","DateSwitcherTimeslotColStartEnd","DateCol","DatePlaceholderCol","QuestionnaireSwitcherColStartEnd","QuestionnaireSwitcherColTitle","ButtonColLeft","ButtonColMiddle","ButtonColRight","PersonalDataSummary","DataItem","getGenderDE","studyList","getPlannedStudiesList","getPDFDataFromDiagnosticReportResponse","filename","pdfsrc","signPosData","diagReport","BlockingAppointmentModal","AppointmentPersonalData","allCurrentStudies","setAllCurrentStudies","mandFields","setMandFields","cbxRegistrationSelected","setCbxRegistrationSelected","cbxPrivacyPolicySelected","setCbxPrivacyPolicySelected","sendGoogleAnalyticsPageView","useGoogleAnalytics","page","allStudies","participated","isPhysPat","formatBirthdayForFormik","isValid","dateFormated","log","labelName","isFieldReadOnly","registrationReadOnlyField","CancelButton","showCancelButton","handleCancel","BackButton","showBackButton","handleBack","NextButton","showNextButton","buttonEnabled","showPrivacyPolicyCbx","nextButtonEnabled","SubmitButton","FormGroupInsuranceNr","propsFG","as","values","handleChange","isInvalid","errors","readOnly","Feedback","FormGroupInsuranceName","FormGroupLastName","FormGroupFirstName","FormGroupBirthday","FormGroupGender","FormGroupLanguage","FormGroupTelephone","FormGroupMobilePhone","FormGroupAcademicTitle","FormGroupEmail","FormGroupZip","FormGroupCity","FormGroupStreet","FormGroupHouseNr","handleCbxRegistrationSelected","handleCbxPrivacyPolicySelected","FormGroupRegistrationCbx","showRegistrationCbx","Check","checked","FormGroupPrivacyPolicyRegistrationCbx","Input","Label","href","rel","FormGroupRegistrationUsername","FormGroupRegistrationPassword","FormGroupCountry","hidden","FormGroupStudies","cbxId","isParticipated","foundStudy","modifiedAllCurrentStudies","studyChange","validationSchema","yup","shape","required","notRequired","matches","pattern","setInsuranceName","setLanguage","setFirstName","setLastName","setBirthday","setEmail","setGender","setTelephone","setStreet","setHouseNr","setZip","setCity","setCountry","setMobilePhone","setAcademicTitle","setUsername","setPassword","handleNextWithActiveStep","currentActiveStep","handleNext","initialValues","directRegistration","DragNDropArea","currentLocation","MyThemeContext","dragCounter","setDragCounter","dropRef","DokumenteContext","handleDrag","handleDragIn","dataTransfer","items","handleDragOut","handleDrop","files","DOKUMENTE","reader","FileReader","readAsDataURL","onload","result","onerror","fileToBase64","clearData","addEventListener","removeEventListener","StyledPDiv","StyledP","Avatar","photoSrc","hasProfilePhoto","navbar","Sidebar","memo","displayName","ScanUtils","barcodescanner","isInScan","prefixChecked","lastKeyPressed","stopTimer","scanPrefix","scanTxt","onScanFinish","stopEventListing","ev","cancelBubble","returnValue","onScanKeyDown","ctrlKey","keyCode","currentDT","charCode","clearTimeout","setTimeout","onScanKey","chr","String","fromCharCode","onScanKeyUp","startup","elem","scanDone","removeListeners","navButtonProps","navb","navbutton","eventKey","activekey","horizontal","colorActive","colorInactive","vertical","backgroundColorInactive","StyledNavButton","StepperNavLinkButton","EncounterTitle","PatientSwitch","allPatients","setAllPatients","setNewPatient","usePatientSwitch","getDropdownItems","handlePatSwitch","pat","allItems","Array","isArray","Dropdown","Item","indexOf","isInNeuesProfilPhysLogin","Toggle","margintop","Menu","ProfileSwitch","allProfiles","setAllProfiles","useProfileSwitch","setSecurityItems","getUserId","handleProfileSwitch","profileName","setActivePatId","SUCCESS","studyName","PROFILE_HOME","useNavbar","showProfileSwitch","setShowProfileSwitch","showPatSwitch","setShowPatSwitch","NavbarMenu","toggleButtonRef","showPatientSwitch","brandingSrc","StyledNavbar","fixed","Navbar","Brand","alt","Collapse","navbarScroll","ExtraLinks","to","useChart","getChartData","dataPrecision","dataPrecisionVal","chartLoaded","foundChartData","userData","chartId","foundDataEntry","dataString","sortedJSON","labelsArray","tlind","foundData","origDataVal","dataValPrec","clone","subtract","lastTargetWeight","add","getTableData","initalTableData","table","TableProvider","tableToShow","setTableToShow","tblDat","getTable","getTableHeader","allHeaders","background","getTableRows","allTr","allTd","td","subTable","generateTable","val","Table","striped","bordered","hover","overflow","TableModal","bodyHeight","getBodyHeight","EmptyView","EmptyViewLine","redraw","FiveYearsView","year","startOf","xMin","setXMin","endOf","xMax","setXMax","datasetProps","chartOptionsProps","mobileProps","MyLine","MyBar","MaxView","OneMonthView","selectedMonth","setSelectedMonth","selectedYear","setSelectedYear","firstYear","lastYear","yearList","monthsList","radioValYear","setRadioValYear","radioValMonth","setRadioValMonth","MonthOptions","allMonthOptions","idx","selectedMonthVal","selectedYearAndMonth","handleMonthChange","defaultValue","YearOptions","allYearOptions","selectedYearVal","yearName","handleYearChange","OneWeekView","isoWeek","selectedWeekNumber","setSelectedWeekNumber","firstYearOfData","lastYearOfData","setValues","newDate","selectedYearAndWeek","week","oneWeekBack_beginOfWeek","oneWeekBack_endOfWeek","handleWeekBack","oneWeekForward_beginOfWeek","oneWeekForward_endOfWeek","handleWeekForward","OneYearView","radioValue","setRadioValue","ViewSwitcher","rangeValue","setRangeValue","labelButtonVal","setLabelButtonVal","labelOpt","setLabelOpt","showTableButtonLoadingSpinner","setShowTableButtonLoadingSpinner","tableButtonRef","desktop","isDesktop","isSmallScreen","tableModalShow","setTableModalShow","oneWeekView","oneMonthView","oneYearView","fiveYearView","allView","handleTableDataClick","extraTables","titleFromExtraTables","getTableId","ShowTableButton","ButtonToolbar","ToggleButtonGroup","isTableIncluded","handleValueChange","ActivityCharts","setChartData","getData","BloodSugarCharts","targetCeiling","BodyFatCharts","FLICharts","SAMCharts","WeightCharts","AppCharts","chartType","IFrameContent","formId","n","patId","iFrame","setIFrame","iFrameSrc","getLinkForIFrame","getIFrameURL","iframeResp","IFrameFragebogen","containerHeader","ChartsContent","chartsOrder","setChartsOrder","allChartItems","startsWith","route","CHARTS_GEWICHT","CHARTS_BLUTZUCKER","CHARTS_FETTMASSE","StyledCardContent","showChartItems","Charts","Mainscreen","ChartsActivityContent","ChartsActivity","ChartsBlutzuckerContent","ChartsBlutzucker","ChartsFettmasseContent","ChartsFettmasse","ChartsFLIContent","ChartsFLI","ChartsGewichtContent","ChartsGewicht","ChartsSAMContent","ChartsSAM","Error","ExecuteRule","EnrollCodeBox","sendGoogleAnalyticsEvent","anmeldKatSelected","setAnmeldKatSelected","Card","handleSetAnmeldKat","anmeldeContext","GoogleAnalyticsCategory","HOMESCREEN","GoogleAnalyticsAction","CLICK","NEUER_ACCOUNT_WL","Home","showLogin","showEnrollCodeBox","showQRCodeForApp","row_lg","homeElements","setHomeElements","homeEle","row_lg_counter","Image","Login","QRCodeForApp","NeuerAccountPhysLogin","setJourneyData","loaded","setLoaded","getQuestJourney","getQuestionnaireJourney","questionnaireJourneyResponse","innerContent","CheckInWL","newAccountHashParams","journeyResponse","useLoginContext","isPhysicianLogin","ReadCardButton","cardSim","textSize","BsSim","intervalTimer","CheckInSplashscreen","useNavigationType","showLoadingSpinner","setShowLoadingSpinner","setBrandingBytes","tileUeberweisung","tileOnlinebuchung","tilePraxisanmeldung","tileTerminueberpruefung","visibleTiles","setVisibleTiles","checkedAppointmentData","setCheckedAppointmentData","scanInputRefUEB","scanInputRefOBU","scanInputRefTUE","bc","barcodeScannerCallback","ueb","obu","tue","tileUEB","tileOBU","tilePAN","tileTUE","handleUrlTextAfterScan","scannedText","fromTUE","urlStart","urlToCall","hashParamsResponse","checkAppointment","getOTPFromAppID","secret","newOTPData","QUESTIONNAIRE_WL","loadingSplashWait","LottieSplashWait","getURLToCallWorkflow","getURLToCall","handleClickWithCard","UeberweisungTile","marginBlockEnd","autoFocus","OnlinebuchungTile","PraxisanmeldungTile","TerminueberpruefenTile","CheckInSplashscreenMultifragebogenWaiting","setFoundData","multifragebogen","setMultifragebogen","startListening","clearInterval","setInterval","listeningWorkflow","tabletID","getTabletURL","webAppURL","multifragebogenData","formNames","MultiFragebogen","CheckInSplashscreenWaiting","navtype","setIntervalTimer","SPLASHSCREEN_CHECKIN","history","timer","open","LoggedOutSplashscreen","SPLASHSCREEN_LOGGEDOUT","VALTable","dataLoaded","setDataLoaded","handleSetTableTitle","TableVAL","setTableTitle","AppInfo","lazy","Dashboard","Termine","PatientList","Dokumente","Fotos","Medikation","Tagesplan","Journey","Fragebogen","FragebogenDetail","Profil","Videochat","VideochatWL","Terminierung","TerminierungAlternateDate","Terminkategorie","Termincode","Warteraum","PersonalInformation","ProfileSafety","ProfileLegalTerms","TwoFactorAuthentication","NeuerAccount","NeuerAccountWL","QRCode4App","ResetPassword","Mails","QuestionnaireWL","TerminierungWL","Todo","LOGIN","APPINFO","DASHBOARD","FRAGEBOGEN_DETAIL","IFRAME","FRAGEBOGEN_IFRAME","TERMINIERUNG","TERMINIERUNG_WL","PROFIL","PROFIL_INFO","PROFIL_SICHERHEIT","PROFIL_LEGALTERMS","ZWEI_FAKTOR_AUTHENTIFIZIERUNG","TERMINKATEGORIE","TERMIN_DETAIL","WARTERAUM","NEUER_ACCOUNT","NEUER_ACCOUNT_PHYSLOGIN","AENDERN_ACCOUNT","QRCODE4APP","RESET_PASSWORD","MAILS","APP_CHARTS","EXECUTE_RULE","CHECKIN_WL","SPLASHSCREEN_CHECKIN_WAITING","SPLASHSCREEN_MULTIFRAGEBOGEN_WAITING","PublicRoute","fallback","Loading","PrivateRoute","AppRoutes","path","IFrame","getPractitionerNameFromResource","participantDisplay","participantData","_maId","getLocationDepartmentNameFromResource","locationDepartmentDisplay","locationDepartmentData","getLocationDepartmentLongNameFromResource","locationDepartmentDisplayLong","_departmentId","getLocationCareUnitNameFromResource","locationCareUnitDisplay","locationCareUnitData","getLocationCareUnitLongNameFromResource","locationCareUnitDisplayLong","_ambId","getLocationRoomNameFromResource","locationRoomDisplay","locationRoomData","getLocationRoomLongNameFromResource","locationRoomDisplayLong","_roomId","appDataValue","longName","practitionerData","careUnitData","departmentData","newStartEnd","getCountAPKsFromExtension","cancelNewAppointmentDataExtension","valueInteger","getMissingAPKsFromExtension","missingAPK","getEnrollCodeFromExtension","getAPKNrFromExtension","apkNr","getIdentifierId","dataIdentifier","originalId","getSelectedReasonDataFromAppointment","selectedReasonObj","getMacroNameFromSelectedResource","isAppSeries","getStickyPosition","getTabHeight","updateSelectedResources","currentSelectedResources","appointmentNr","newSelectedResource","newResource","updatedSelectedResources","foundIndex","some","splice","resetSelectedResourceWithNr","updateAvailableTimeslots","currentAvailableTimeslots","newAvailableTimeslot","newTimeslots","updatedAvailableTimeslots","resetAvailableTimeslotsWithNr","updateSelectedTimeslot","currentTimeslots","newSelectedTimeslot","newSelctedTimeslots","updatedSelectedTimeslots","resetSelectedTimeslotsWithNr","reorderedParticipants","cond","getOriginalAppointmentDate","originalAppointmentDetails","endDate","getPhysicianFrom","appointData","AppointmentCalendar","setSelectedDay","StyledRow","Calendar","AppointmentCalendarWithHeadline","handleTimelotClick","terminName","categoryName","IFrameContext","themeName","toUpperCase","betaTheme","pcpTheme","pcpV2Theme","pcpColors","pcpValues","passiveColor","strokeWidth","alertColor","mainColorHover","accordionMenu","newMessageBadge","step","active","completed","buttonColor","sidebar","itemBackground","appointmentCard","list","medication","acceptColor","rejectColor","laterColor","resultAcceptColor","hint","pcpV2Colors","pcpV2Values","betaColors","betaValues","imageProps","textDirection","imageDescProps","ImageDiv","ImageDescDiv","StyledImageFloatDiv","direction","ImageFloatDiv","QImageDiv","ForeignQRModal","closeButton","pdfjs","GlobalWorkerOptions","workerSrc","EmbeddedPDF","numPages","setNumPages","pageNumber","setPageNumber","scale","setScale","setInitialScale","clickedClear","setClickedClear","clickedSign","setClickedSign","signPos","setSignPos","pdfPage","resizeObserver","ResizeObserver","getSignRectPos","observe","disconnect","changePage","prevPageNumber","isPageSignable","transformDim","dim","parseFloat","isNaN","NaN","parentElement","scrollTop","d0x","offsetLeft","d0y","offsetTop","bx","by","offsetHeight","ay","ax","transformedSignPosData","onLoadSuccess","onLoadError","parentDiv","querySelector","pageScale","clientHeight","originalHeight","onPageLoadSuccess","SignDocumentModal","clickClear","clickSign","onClickClear","borderStyle","previousPage","verticalAlign","nextPage","minWidth","newScale","zoomOut","zoomIn","handleClear","handleSign","ErrorToast","Toast","onClose","delay","autohide","QDiv","QCheckboxRow","RequiredAsterisk","DeactivatedThumb","ActivatedThumb","calcInputWidth","maxLength","NOINFO_CBX_VALUE","steps","setSteps","actualStep","setActualStep","answers","setAnswers","clickedSubmit","setClickedSubmit","clickedSave","setClickedSave","questionnaireSendResponse","setQuestionnaireSendResponse","showRequiredMessage","setShowRequiredMessage","scrollToRequiredMessage","setScrollToRequiredMessage","scrollToTop","setScrollToTop","isExternalQuest","setIsExternalQuest","requiredMessageRef","errorMessageRef","topRef","qDisplayBorderPadding","showSaveToast","setShowSaveToast","showErrorToast","setShowErrorToast","firstSave","setFirstSave","validate","setValidate","tempTime","setTempTime","setTargetPatId","tempDateTimeDate","setTempDateTimeDate","tempDateTimeTime","setTempDateTimeTime","finishButtonName","setFinishButtonName","postStoreDocumentRefId","setPostStoreDocumentRefId","pdfModalShow","setPdfModalShow","embeddedPdfModalShow","setEmbeddedPdfModalShow","allValues","base64Arr","showForeignQRModal","setShowForeignQRModal","useLoadQuestionnaireAnswers","setSelectedQuestionnaire","setQuestionnaireBody","loadQuestionnaireAnswers","setSelectedQuestionnaireAnswers","setQuestionnaireData","tempAnswers","allDecItems","getAllItems","tempValue","answer","valueDecimal","precision","getExtensionPrecision","getAnswers","rep","qResource","getQuestionnaireResourceFromRequest","qResponse","getQuestionnaireResponseResourceFromRequest","qDiagnosticReport","getQuestionnaireDiagnosticReportFromRequest","visualPDF","setAllSteps","mainDiv","fButtonName","getExtensionFinishButtonName","getExternalQuest","resetPDFModalShow","respJson","json","respStatus","responseError","issue","diagnostics","severity","makroData","getPostStoreStartAppointmentSearch","getPostStoreDocumentRefId","submitResp","sendQ","isDraft","getNumberOfDrafts","firstSaveResp","firstSaveRespJson","respId","respData","stepData","handleQuestionnaireSave","updateResp","saveQ","scrollToRequiredMessageAlert","scrollToTopOfPage","verifyCovidCert","verifyCovidCertResponse","covidCertValueSuccessWorkflow","handleClosePDFExternalView","isCheckin","handleQuestionnairePDFClose","activeStepNumber","handleClosePDFInternal","handleButtonFinish","pageNr","allSteps","requiredCheckItem","doCheck","enableWhen","qEnableWhenHandling","answerEnableWhenCheck","foundAnswer","requiredCheck","stepItems","subItem","handleQuestionnaireFinished","handleQSubmit","getStepTitle","QStepper","Medium","hasStepInvalidState","setAnswerDateOption","valueDate","lid","isAnswerLinkIdPresent","answersCopy","isPresent","resetSelectedAnswer","getAnswerDateOption","setAnswerTimeOption","valueTime","templid","isTempTimeLinkIdPresent","tempTimeCopy","getAnswerTimeOption","getTempDateTimeValue","tempArrayObject","tt","getTempTime","getTempDateTimeDate","getTempDateTimeTime","setAnswerDateTimeOption","valueDateTimeDate","valueDateTimeTime","tempDateLinkId","isTempDateTimeDateLinkIdPresent","tempDateTimeDateCopy","tempTimeLinkId","isTempDateTimeTimeLinkIdPresent","tempDateTimeTimeCopy","valueDateTime","tz","setValidity","timeInvalid","checkInvalidState","validStatus","completeStatus","inputCheckCopy","inputCheck","itemIndex","icItem","inValid","inComplete","setInputCheck","handleAnswerDateTimeOption","handleAnswerTimeOption","getAnswerDateTimeOption","getAnswerDateTimeDateOption","getAnswerDateTimeTimeOption","setAnswerIntegerOption","getAnswerIntegerOption","valueInt","setAnswerDecimalOption","setValueDecimalLocal","valueDecimalLocal","dotOrComma","toLocaleString","getDotOrCommaForDecimalLocal","convertToLocalString","decimalVal","minimumFractionDigits","maximumFractionDigits","getAnswerDecimalOption","getValueDecimalLocal","valueDec","valueDecLocal","setAnswerTextOption","setAnswerCovidQRValues","pictureLinkId","pictureBase64Arr","idValueArray","valueAttachmentArr","attachment","valueAttachment","getAnswerTextOption","deleteAnswerEntryWithCopy","setAnswerChoiceOption","getAnswerBooleanOption","setAnswerAttachment","valueBase64","getAnswerOpenChoiceOptions","valueCodingEntries","isAnswerOpenChoiceOptionSet","getAnswerChoiceOption","getAnswerChoiceOptionExtended","getAnswerDropdownOption","getTypeOfQuestionnaireItem","getQuestionnaireItem","itemEnableWhen","questionLinkId","question","answerBoolean","answerCoding","linkIdToFind","answersToSearch","answ","linkIdPresent","isTempLinkIdPresent","isAnswerChoiceOptionSet","selectedCode","isSet","getCurrentAnswer","displayType","getExtensionClassValue","getExtensionDisplayType","reqItems","getRequiredItems","questionLinkIds","requiredValues","operators","currentAnswer","requiredAnswer","foundMatchInArray","operator","irequiredAnswer","isTrue","andExp","getAndExpressionAsArray","qMultiEnableWhenHandling","array1","array2","allAnswerLinkIdsPresent","enableWhenAnswers","currentAnswers","every","v","checkInput","input","regex","test","roundDecimalInput","modifyTimeInput","inputNumber","minVal","maxVal","setAnswerAfterCheck","dateTimeDate","myItem","stepToCheck","stepHasInvalidState","RiTreasureMapFill","qTypeInteger","getExtensionMinValue","getExtensionMaxValue","labelLeft","getExtensionLabelLeft","labelRight","getExtensionLabelRight","presetValue","presetValueCmd","getExtensionPresetValue","_val","commandSplit","command","commandVals","sum","commandValArr","choiceAnswer","answerVal","interpretPresetValue","isInteger","tooltip","getExtensionFieldNote","isSlider","getExtensionStepWidth","skipKA","extensionSkipKA","labelKA","getExtensionLabelKA","multiCol","marks","s","noInfoCheckBoxVals","sliderColor","Slider","ThumbComponent","valueLabelDisplay","newVal","NoInfoCheckbox","initialInteger","feedbackMessage","fieldWidthType","getExtensionAppearanceValue","fieldWidth","wrapperWidth","invalid","currentSetAnswer","decimalInput","feedbackMessageRange","onBlur","qTypeChoice","allOptions","rowLimit_sm","rowLimit_lg","rowLimit_md","rowLimit_xs","rowLimit_xl","option","transform","appearance","maxValue","myOptions","dropdownWidth","o","setAnswerDropdownOption","initialCoding","requiredMissing","allOptionTexts","itemOptions","getAllOptionTextsAsArray","buttonWidthVal","buttonText","maxWordLength","longestWord","findLongestWord","buttonWidth","requiredmissing","radioBreakpointSM","radioSpanLG","rowHeight","qTypeOpenChoice","andSubExpressions","getExtensionAndSubExpressions","maxCol","horizontalBreakpointSM","horizontalBreakpointLG","singleSelectionAttr","getOptionExtensionSingleSelection","inline","isChecked","currentValueCodingEntries","allOptionsWithSingleSelection","optionWithSingleSelection","setAnswerOpenChoiceOption","qTypeBoolean","labelLeftColor","setAnswerBooleanOption","qTypeSignature","signatureSize","getExtensionSize","signaturePosition","getExtensionPosition","sigFloat","content","SignaturePad","onWriteEnd","setAnswerSignature","toBase64","Promise","resolve","reject","dob","nam","fn","fnt","gn","gnt","tg","vp","mp","ma","dn","sd","dt","co","is","qrContent","nm","sc","tr","tc","r","fr","df","du","setCovidCertValues","handleSelectedPhoto","buttonType","from","base64Src","UploadButton","inputRef","openWebcamPreview","setOpenWebcamPreview","photoPreviewColl","setPreviewColl","showOverlay","setShowOverlay","acceptFileType","possibleFileType","fileTypeList","fileTypeArr","fileType","handleUpload","click","uploadSelectedPhotos","popoverId","formFileId","WebcamPreviewModal","photos","onSave","onRemove","photoIndex","temp","handleRemovePhoto","addPhoto","photo","photoData","pop","newPhoto","handleAddPhotoToPreview","trigger","onToggle","Popover","Content","File","popOverFileUploadName","accept","popOverCameraUploadName","qTypeButton","getExtensionLabel","getExtensionTooltip","getExtensionPossibleFileType","fieldNote","popOverFileName","popOverCameraName","imageSrc","image","valueAttachmentAnswer","getAnswerAttachment","showImage","imageData","displayImage","checkboxRequired","noInfoCbx","getNoInfoCheckBox","setNoInfoCheckBox","qTypeGroup","gridVals","cols","rowType","getExtensionRowType","runNr","questionsItem","sliderPrecisionCount","Math","pow","qTypeDecimal","dateVal","initialDate","showButton_twoDaysAgo","showButton_yesterday","showButton_today","showButton_tomorow","showButton_dayAfterTomorrow","flexWrap","qTypeDate","initialTime","timeRegex","showButton_Jetzt","showButton_Zuruecksetzen","timeAnswerSet","timeAnswer","qTypeTime","initDateTimeDate","initDateTimeTime","initialDateTime","dateIsEmpty","timeIsEmpty","dateIsMissing","timeIsMissing","invalidTimeFormat","tdt","qTypeDateTime","asHTML","dangerouslySetInnerHTML","__html","qTypeDisplay","inputWidth","rows","qTypeText","maxLengthStr","initialString","qTypeString","initialAttachment","imageWidth","getExtensionImageWidth","imageHeight","getExtensionImageHeight","descAppearance","getExtensionImageDescAppearance","imageTooltip","imageDescription","alignFromClassName","imageDescDirection","displayFlex","parentDivDirection","alignItemsFloatDiv","floatDivWidth","qTypeAttachment","questions","qi","useEmbeddedPDF","spd","pdfShowData","embeddedPdfShowData","embeddedPdfShow","setPDFShow","getPostStoreDocumentPDF","qContent","showPdf","responseMessage","errorMsg","Big","handleButtonPreviousStep","handleButtonNextStep","questionnaireMainPage","disableTempStorage","isDisableTempStorage","noGutters","transition","ConfirmationToast","fullSrc","dataSrc","resourceData","responseData","RefreshButton","iconSize","handleClick","POST","GET","getFetchOptions","addContextToUrl","addParamToURL","getContextConfig","authorizeAsync","getRestURL","bodyObj","token","fa2Secret","doubleOptInCode","releaseCode","getParticipants","resp","re","searchAppointments","freeAppointment","slice","physicianId","jbody","getPossibleTimelist","appointmentResource","enroll","registerData","_reason","patBirthDate","patGender","patZip","patCity","patStreet","patHousenr","patCountry","patEmail","patTel","patMobilePhone","patAcademicTitle","bookingCode","behFilter","updateEnroll","loadPerspectiveData","getEnrollStatus","getParkedGDT","gdtKey","appointmentId","registerUser","registerUserDirect","patEMail","consignation","isAddConsignation","urlTerms","checkConsignation","getPossibleMacros","setPwd","oldPassword","oldUsername","deleteAccount","generateSecret","removeSecret","checkSecret","getBarcodeForApp","addPlannedStudy","getTermsHTML","addUrl","encodeURIComponent","getPrivacyHTML","getJourney","parentId","getPasswordReset","callRestMethod","methodName","setPatientProfilePicture","base64","removePatientProfilePicture","executeRule","taskList","callTaskListFunction","callFunction","parameter","auth","authorization","wp","bh","reportData","report","getPhysiciansFor","currentPhys","scantxt","pushActivePatient","hasOwnProperty","resourceFromEntry","round","getExtensionOperator","andExpArray","minutes","presetVal","hasSingleSelection","opt","minValue","rowtype","stepWidth","sizeVal","numberOfDrafts","getDraft","resultExtension","positionVal","appearanceValue","tempStorageDisabled","questionnaireResponse","questData","_valueString","extValStr","TelephoneModal","onCallHide","onCallOff","onCallAccept","pingInterval","clearPingInterval","leaveSession","initWebSocket","wsLocation","WebSocket","onopen","wsc","isWebApp","ex","closeWebSocket","onclose","getLocalStream","mediaDevices","getUserMedia","video","stream","addStream","onmessage","msgdata","RTCPeerConnection","myIceServers","urls","credential","oniceconnectionstatechange","iceConnectionState","chat","sdp","setRemoteDescription","RTCSessionDescription","createAnswer","description","setLocalDescription","localDescription","createdDescription","addIceCandidate","RTCIceCandidate","useSecurityItems","isPatListEnabled","isDokumenteEnabled","isTermineEnabled","isFotosEnabled","isMedikationEnabled","isTagesplanEnabled","isFragebogenEnabled","isVideochatEnabled","isChartsEnabled","isChartsWeightEnabled","isChartsBodyFatEnabled","isChartsBloodSugarEnabled","isChartsFLIEnabled","isChartsSAMEnabled","isChartsActivityEnabled","isTableVALEnabled","isJourneyEnabled","isTodoEnabled","todoEnabled","getTabOrder","tabOrder","tabOrderFromRequest","setActiveSidebarItem","sidebarItem","EarlierAppointmentPossible","setter","cbxValue","setCbxValue","Booking","multiAppointment","locationDetail","locationRoom","appointmentCardData","isInError","selectedResource_2","practitioner_2","location_2","locationDetail_2","locationRoom_2","TerminSummary","room","terminProps","terminProps_2","showEarlierAppointmentPossible","EarlierAppointment","RemarkInputField","groupText","reasonGroupText","mb","isBootstrap_lg","isPatientSelected","getActivePatient","currPatients","patIndex","findIndex","unshift","setLastPatOpened","StyledCalendar","onNewAppointments","possibleTimelist","setAvailableTimeslots","rootExtension","container","subExtension","valuePeriod","valueCodeableConcept","resetAllAvailableTimeslots","isEarliestAppointmentClicked","getAllMakroIdsFromFilteredReasons","getFirstDayOfMonth","concat","firstDayOfMonth","setFirstDayOfMonth","freeAppointments","setFreeAppointments","initMonthDone","setInitMonthDone","showPossibleNoFreeAppointmentsPopUp","setShowPossibleNoFreeAppointmentsPopUp","getFreeAppointments","freeAppointmentSearch","getFreeAppointmentTimeSlotsRenew","getFreeAppointmentTimeSlots","dateToday","firstDayOf3MonthsFuture","search1MonthLater","newSearchDate","firstDayOfMonthNewSearch","dateSearch","appSearchPattern","c0","makroIdPostponeAppoinment","oneYearLater","earliestDay","earliestDayFormated","convertedDayFormated","dateButtonLabel","dateButton","simulateClick","onClickDay","availableTimeSlots","onActiveStartDateChange","activeStartDate","getMonthFromStrFormat","firstDayOfClickedMonth","tileDisabled","dDate","referenceDate","isSameDay","showDoubleView","prev2Label","next2Label","showNeighboringMonth","reasonMainCode","linkObj","restmethod","tokenRes","tempUrl","myIcon","displayLink","innerHTML","linkText","linkList","allLinks","linkItem","myExtraLink","windowSize","setWindowSize","handleResize","innerWidth","innerHeight","factor","getSecurityItems","getActiveStudyEntry","SecurityItems","isSecurityItemEnabled","securityItem","securityItemsFound","newActiveUserId","studyPatId","setActiveUserId","securityItemNames","IFrameInternal","str","strSplit","mouseEventType","dispatchEvent","MouseEvent","bubbles","cancelable","buttons","focus","signatureRef","setDivWidth","divHeight","setDivHeight","setOffsetTop","setOffsetLeft","signaturePadWidth","setSignaturePadWidth","signaturePadHeight","setSignaturePadHeight","onSignaturePadClear","clear","onSignaturePadWriteEnd","getCanvas","toDataURL","penColor","onEnd","canvasProps","onSignaturePadSave","PhysicianSelectionDescriptionList","allDescrItems","firstFreeDateElement","descriptionList","PhysicianSelectionPhoto","showPicture","rounded","myVars","fmt","webcamRef","webcamDim","getWebcamDim","setBodyHeight","getImage","fmtPerspective","resKOORDS","canvas","createElement","ctx","getContext","drawImage","normalSrc","testImg","removeChild","src_image","appendChild","done","errfnc","fx_canvas","w_ratio","naturalWidth","h_ratio","naturalHeight","fx","alert","texture","sourceTransform","c1","x","c2","c3","c4","draw","perspective","destCanvas","resSrc","isTransformation","capture","getScreenshot","FormatChoice","setFmt","sfmt","handleFormatButtonChange","onEnter","order","photoPreview","videoConstraints","screenshotFormat","NavbarCheckInWL","expand","showAvatarIcon","onProfileClick","showLoginIcon","onLoginClick","onLogout","useStyles","makeStyles","createStyles","instructions","spacing","iconContainer","activeStep","setActiveStep","Set","skipped","setSkipped","setSuccess","setResponse","classes","getStepContent","personalDataForm","personalDataSummary","stepContent","SuccessLottieMessage","finalButton","isStepSkipped","has","newSkipped","delete","prevActiveStep","patdataOrignal","modifiedPatientResource","alertTitleCst","handleFinishClick","stepProps","StyledTabRow","StyledTabContent","TabContent","PhysicianSelectionCardWithAppointments","showMoreButton","setShowMoreButton","showAllTimeSlots","setShowAllTimeSlots","getAppointmentForDate","appointments","getTimeSlotsForDate","resourceAppointment","rowNrToShow","rowNr","maxRowNr","allPossibleTimeslots","stepWith","floor","timeslotCol","allCols","myDateFormated","maxTimeSlots","possibleTimeslots","visibility","timeslots","allTimeslots","maxRows","currentMax","ShowMoreButton","BlockMessage","blockMessage","FirstPossibleDateInTimeSlot","firstPossibleDate","FirstPossibleDateContent","FirstPossibleDateInDescrList","handleStartDate","TimeSlotArea","flexBasis","HorizontalDateSwitcher","showDate","myDate","weekday","handlePreviousDate","dates","handleNextDate","PhysicianSelectionCardWithDateSwitcher","AppointmentCategoryExtendedPhysician","allPhysicians","setAllPhysicians","setStartDate","setMakroId","hdTimeslots","setHdTimeslots","initalPhysicianIds","setInitialPhysicianIds","getExtension","getExtensionJSON","sjson","simulateBehFilterFromLocation","getPhysicians","_makroId","physiciansForData","newAccountHashParam","physiciansData","physicians","allPhysicianIds","getNewPhyscianData","join","toDate","MyAnmeldBaseHeader","allCards","DateHeader","descrList","handleTimeslotClick","allPhysicianCards","useSignotecConnector","docHashes","rsa_scheme","STPadServerLibDefault","RsaScheme","PSS","docHash_type","fieldName","customText","padStates","padState","padModes","padMode","deviceCapabilities","padTypes","onOpen","evt","loadText","logMessage","getSignatureDefault","unloadText","onError","errorText","searchForPadsParams","Params","searchForPads","setPadSubset","pads","foundPads","padType","intTypeNumber","getReadableType","capabilities","STPadServerLibCommons","defaultReject","openPadParams","openPad","padInfo","samplingRate","selection_dialog","error_message","default_close_pad","signature_start","param","errorCode","errorMesage","closePadParams","closePad","dochash","startSignatureParams","startSignature","setFieldName","setCustomText","enablePadEncryption","handleDisconnect","disconnect_send","handleNextSignaturePoint","signature_point_send","handleRetrySignature","signature_retry_send","handleConfirmSignature","handleCancelSignature","handleError","error_context","return_code","error_description","error_send","STPadServerLibApi","Sensor","handleHotSpotPressed","api_sensor_hot_spot_pressed_send","handleDisplayScrollPosChanged","xPos","yPos","api_display_scroll_pos_changed_send","lineWidth","lineCap","canvasContext","softCoordX","softCoordY","beginPath","arc","PI","stroke","moveTo","lineTo","drawStrokePoint","canvRef","retrySignature","clearRect","Signature","retry","Device","api_close_pad","signature_confirm_send","confirmSignature","countedPoints","getSigningCert","getSignatureImageParams","getSignatureImage","setFileType","FileType","PNG","setPenWidth","getSignatureDataParams","getSignatureData","setRsaScheme","loadSignotec","wsUri","handleLogging","createConnection","unloadSignotec","destroyConnection","clearSignotec","sendSignotec","SignaturePadDeviceName","SignaturePadSignotec","canvasSignotec","Small","onClear","mouseSignData","setMouseSignData","setSendClicked","signotecProps","loadSignaturePad","unloadSignaturePad","clearSignaturePad","sendSignaturePad","useSignaturePad","onSignatureSend","onSignatureCancel","SignaturePadComponent","onSignatureClear","SidebarItem","isActive","setIsActive","forMoreMenu","NavDropdown","SidebarItemList","itemOrderIsSet","setItemOrderIsSet","defaultPage","getDefaultPage","tabOrderFromSecurityItems","firstItem","isPhysicanLoginWithoutSelectedPatient","orderSidebarItemsWorkflow","startItemNr","tabOrderList","maxSidebarItems","allSidebarItems","itemNr","tab","journey","showJourney","securityItemName","patList","showPatList","dokumente","showDokumente","termine","showTermine","fotos","showFotos","medikation","showMedikation","tagesplan","showTagesplan","fragebogen","showFragebogen","videochat","showVideochat","showCharts","chartWeight","showChartWeight","chartBodyFat","showChartBodyFat","chartBloodSugar","showChartBloodSugar","chartFLI","showChartFLI","chartSAM","showChartSAM","chartActivity","showChartActivity","tableVAL","showTableVAL","todo","showTodo","onSelect","allSidebarMoreMenuItems","allSidebarItemNames","defaultTabOrder","doTabOrderFromSecItems","dropdown","drop","alignRight","orderedSidebarItems","getMaxSidebarItems","Mobile","useMediaQuery","maxWidth","Default","isBootstrap_md","StepperOrientation","StepperLabelOrientation","StepTyp","root","overflowClipMargin","whiteSpace","textOverflow","minHeight","stepButtonDraft","StepperCheckIn","setCompleted","typ","Normal","clickable","newCompleted","activeIndex","currentSteps","newSteps","haveStepsChanged","getTooltipText","isCompleted","nonLinear","orientation","stepperOrientation","Vertical","alternativeLabel","labelOrientation","Right","handleStepClick","wordBreak","Object","keys","CredentialsLost","Prepend","Text","AppointmentPersonalDataWithCardRead","readEGKCard","onCardReadClick","showCardReadButton","handleCardReadClick","AppointmentPersonalDataWithLogin","handleLoginClick","CodeInputModal","setCode","modalText","BookingAppointment","isEarlierAppointmentPossible","setBookingCode","showBookingButtonLoadingSpinner","setShowBookingButtonLoadingSpinner","bookingSuccess","setBookingSuccess","bookingButtonRef","innerBookAppointment","codeModalShow","setCodeModalShow","BookNowButton","showWithSpaceBetween","APPOINTMENT_BOOKING","SUBMIT","handleBooking","BookingButtons","getEnrollDataForBooking","handleBookingClick","timeslot_1","timeslot_2","resource_2","bookAppointment","BookSuccessScreen","handleCancelClick","FinalCheckIn","handleButtonClick","LoginCardModal","BadgesList","showAsGrid","allBadges","badgesList","handleBadgeClick","getAllBadges","AppointmentCategoryDepartment","setDepartments","possibleMacrosResponse","getDepartmentMacros","getBadgesList","departmentName","dep","handleDepartmentClick","AppointmentCategoryLocation","locationName","loc","handleLocationClick","PhysicianSelectionCard","AppointmentCategoryPhysician","handleSetPhysicianClick","handlePhysicianClick","mandatory","getNumericRegex","CheckboxTypeEle","getHintAnswerBoolean","setHintAnswerBoolean","TextTypeEle","getHintAnswerText","setHintAnswerText","NumericTypeEle","feedbackMsg","preFeedbackMsg","getHintAnswerNumeric","setHintAnswerNumeric","AppointmentCategoryReasonHints","validated","setValidated","Fragen","frage","booleanVal","numeric","RegExp","newAnswers","valueNumber","Hinweis","onHintsSubmit","allQuestions","q","showQuestions","AppointmentCategoryReason","reasonSelected","setReasonSelected","reasonSelected1","setReasonSelected1","reasonMainCodeSelected","setReasonMainCodeSelected","insuranceSelected","setInsuranceSelected","appTypeSelected","setAppTypeSelected","setHints","VERSICHERUNG_VOR_ORT_LONG","VERSICHERUNG_PER_VIDEO_LONG","VERSICHERUNG_PER_TELEFON_LONG","TERMINART_PRIVAT_LONG","TERMINART_GESETZLICH_LONG","TERMINART_BG_LONG","TERMINART_SELBSTZAHLER_LONG","getShortVersicherungsart","versicherungsartLong","versicherungsArtShort","getShortTerminart","terminartLong","terminartShort","filteredReasonsLocal","foundHint","filterVersicherungsart","filterTerminart","aFilterChecked","pFilterChecked","hintAFilter","hintPFilter","handleReasonClick","selectedReasonId","getBesuchsgrundOptions","mainReason","usedReasons","usedReasonMainCodes","reasonsDone","valueSub","versicherungsArt","handleSetComboboxInsurance","kontaktArt","handleSetComboboxAppType","filteredReason","freason","handleSetComboboxReason","handleSetComboboxReasonSub","displayHints","TermineButtons","TermineCheckIn","checkInVariant","UploadButtons","Upload","getDiagnosticReports","UploadContent","headerTitle","fileUploadButtonName","cameraUploadButtonName","acceptedFileTypes","allowMessages","forbidMessages","videochatMessagesAllowed","setCheckInAuth","getFullOTPAuthorization","hasAnmeldContexts","useAuth","stepClicked","setStepClicked","activeContent","setActiveContent","finalURL","setAuthData","loginModalShow","setLoginModalShow","questionnaireLoaded","setQuestionnaireLoaded","showTelephoneModal","setShowTelephoneModal","clickedQuestSave","setClickedQuestSave","reloadContent","setReloadContent","updateEnrollmentRequest","setUpdateEnrollmentRequest","videosprechstundeStepLoad","setVideosprechstundeStepLoad","videochatHangup","setVideochatHangup","withJourneyReload","nextActiveStep","newStepValues","reloadPageData","setReloadPageData","cardReadClickedInPersData","setCardReadClickedInPersData","initPageDone","setInitPageDone","registerdUserData","setRegisteredUserData","setIsLoggedIn","conState","registeredUserHashParams","listener","getAndSetPersData","getJourneyData","getInitialSteps","getContent","newSetOfStepsAndContent","mySetJourneyRessponse","reloadQuests","reloadChatMessages","responseEnroll","ID_VIDEO","reloadData","handleQuestFinished","handleQuestPDFClose","handleQuestSave","isRegisteredUser","setVideochatStepAndContent","con","ID_CATEGORY_DEPARTMENT","ID_CATEGORY_REASON","reinitPage","getOverwriteAppProps","overwriteProps","propResOverwritten","nextStep","getNextUnfinishedStepNumber","currentStepNumber","endReached","getJourneyDataForHOME","isCheckInWorkplace","handleRegistrationFinished","handleClickPDFDocment","handleClickQuestionnaireDraft","questionnaireId","stepName","questionnaireAuth","contentRes","qId","showQuestionnaireEntries","forms","form","getJourneyFinalURLId","draftId","draftURL","getJourneyDraftURLId","handlePossibleChangeOfNextSteps","stepNumberClicked","setInactive","clickedId","ID_CATEGORY_PHYSICIAN","ID_APPOINTMENT_SELECTION","stepNumber","allStepsCopy","setAllStepsGreaterInactive","handleProfileClick","ID_MYDATA","showAccountInAnmeldeworkflow","handleLoginIconClick","handleOnCardReadClick","handleFinalCheckInClick","opener","handleOnVideoHangup","getAuthorizeLoginData","authorizeLoginProps","PossibleMacros","ID_CATEGORY_LOCATION","getStepId","ID_APPOINTMENT_SELECTION_WITH_PHYSICIAN","ID_PERSONALDATA","newId","ID_BOOKING","handlePersonalDataNext","handleMyAppointmentNext","handleUploadNext","ID_FINALCHECKIN","updateEnrollment","stepCode","handlePersonalDataNextAfterCardRead","ID_MYAPPOINTMENTS","newPatient","handleBookingCancelClick","getRestHeight","stepbar","vh","newStepsToSet","newStep","newValues","setAllOtherStepsInactive","changeStep","journeyResp","videoIsActive","finished","onVideoHangup","NavbarAndStepper","Horizontal","Bottom","inMeineDatan","handleClosePDFModal","cardwidth","prettyByte","sizeInByte","isFileTypeAccepted","fileName","acceptedTypes","allAcceptedTypes","heigth","PhotoModal","modalSize","itemMargin","modalDate","Carousel","handleSelect","interval","controls","UploadContentCards","photoReports","setFotoReports","dataFound","setDataFound","modalIndex","setModalIndex","photoModalShow","setPhotoModalShow","alertWidth","getCardSize","itemMargins","getMargins","loadPhotos","resources","photoCarouselItems","photoItems","Caption","getPhotos","refreshPhotos","resetRefresh","showPhoto","photoId","getCardTitle","photoItem","getAllCards","showCard","Photos","Spinner","role","selectedIndex","handlePhotoChange","setRefreshPhotos","photoUploadRef","handleUploadOpen","areFileTypesAccepted","isAccepted","myModString","multiple","StyledParagraphVerticallyCenter","StyledParagraphWithoutMargin","StyledParagraphGrayTextItalic","QuestionnaireStepperTitle","CenterRow","MainHeaderRow","AppointmentCardStatusButtonRow","StyledRowNoMargin","StyledRowPersonalDataBottom","StyledVerticalCenterRow","attrs","TimeslotRow","DateSwitcherRow","QuestionnaireSwitcherRow","StyledAppointmentCard","StyledAppointmentCardHeader","StyledMainCardTitle","StyledAppointmentCardBody","StyledAppointmentCardFooter","StyledMainCard","StyledProfileCard","StyledPhysicianSelectionCard","StyledNewRegistrationCard","StyledNewRegistrationCardBody","StyledNewRegistrationCardImg","Img","StyledPhotoCard","StyledAppoinmentCategoryCard","backgroundcolor","marginbottom","ListGroupCst","ListGroup","ListGroupItemCst","StyledWaitingCard","StyledWaitingCardBody","StyledPhysicianSelectionCardTitle","responseMsg","qrCode","setQrCode","applinksURL","setAppLinksURL","qrCodeConfig","getQRCodeConfig","qrCodeData","getQRCodes4App","qrCodeSrc","thumbnail","ImpressumNormal","Impressum","WebcamModal","setPhoto","StyledModalMedicationDetail","newQuestionnaireStep","formName","api","vcContext","setVcContext","includeExternalScript","whenFinished","script","handleScript","async","jitsNowAllowed","getResizedHeight","jitsiContent","userInfo","configOverwrite","jp","eval","parentNode","JitsiMeetExternalAPI","waitScreen","errmsg","contentToShow","ConsignationWaitForLetterModal","NewPWDModal","onRepeat","identicalPW","InitialPassword","forcePWModalShow","setForcePwModalShow","identical","confirmedPassword","passwordCheck","setPasswordCheck","pwResponse","onchange","oncancel","newPassword","newPW","repeatedPassword","confirmedPW","ConsignationWaitModal","consignationFinished","setConsignationFinished","initPassword","setInitPassword","isConsignationAccepted","consigRes","forceNewPWD","DoDoubleOptInModal","DoDoubleOptInViaLinkModal","TwoFactorAuthModal","setToken","setInvalid","errorMessage","setErroMessage","authorizeData","twoFALogin","activeStudy","activePatId","photoRes","ConsignationModal","activeId","setActiveId","termsHTMLBottom","setTermsHTMLBottom","submitButtonRef","notGiven","Accordion","defaultActiveKey","onScroll","scrollHeight","setAttribute","checkConsignation1","checkbox1","flexGrow","onDeny","ConsignationAddModal","htmlTerm","setHTMLTerm","getTermHTML","htmlText","checkbox","ConsignationAdd","consigModalShow","setConsigModalShow","setCheckConsignation","getUrlTerms","handleDenial","ondenial","Consignation","consigWaitModalShow","setConsigWaitModalShow","consigWaitForLetterModalShow","setConsigWaitForLetterModalShow","checkbox2","consigAddModalShow","setConsigAddModalShow","passwordModalShow","setPasswordModalShow","waitForConsignation","waitForLetter","lastConsigRes","setLastConsigRes","handlePWChange","checkConsignation2","notgiven","consignationForm","showConsignationForm","consignationAddForm","showConsignationAddForm","consignationWaitForm","showConsignationWaitForm","consignationWaitForLetterForm","showConsignationWaitForLetterForm","doubleOptInForm","showDoubleOptInForm","doubleOptInViaLinkForm","showDoubleOptInViaLinkForm","twoFAModalShow","set2FAModalShow","setNotGiven","consig","setConsignation","doubleOptInMissingAfterPWDChange","setDoubleOptInMissingAfterPWDChange","autoLogin","setAutoLogin","activeStudyName","setActiveStudyName","showLoginButtonLoadingSpinner","setShowLoginButtonLoadingSpinner","loginButtonRef","setCurrentActivePatId","getAddConsignationToAsk","loginData_addConsignationToAsk","urlParam_addConsignationToAsk","responseArray","loginHandling","addPlannedStudyUrlParam","executeRuleRespone","doubleOptInViaLink","addConsignationResponse","LoginButton","newPwd","Scheduled","StickyTitle","stickyBreakpoint","PastAppointments","stickyPosition","structuredAppointments","setStructuredAppointments","getAppointments","getAppointmentsOfPatient","apt","structureAppointments","PastAppointmentsTitle","PastAppointmentsData","refreshAppointments","Past","Cancelled","UpcomingAppointments","currentApt","bestEnrollCode","extensionData","enrollCodeData","UpcomingAppointmentsTitle","Incomplete","UpcomingAppointmentsData","chatIcon","Today","Future","WithoutTime","AskNewAppointmentModal","cancelAPKNr","setCancelAPKNr","bookedAPKNr","setBookedAPKNr","getCancelAPKNr","cancelNr","onRenewAppointment","onCancelOtherAppointment","TermineContent","setKey","iPadProPaddinig","tabHeight","setRefreshAppointments","askNewAppModalShow","setAskNewAppModalShow","goToTerminierungAlternateDate","setGoToTerminierungAlternateDate","askNewAppHandleSubmit","cancelOtherAppointment","handleAppointmentsCancelClick","handleAppointmentsFinishClick","TabContainer","activeKey","k","StyledTab","Tab","Pane","STEP_KATEGORIE_WAEHLEN","STEP_TERMIN_WAEHLEN","STEP_TERMIN_BUCHEN","isStepMultiAppointment","getCurrentAppointmentNr","numberStr","StepperTerminierungAlternateDate","setNextButtonEnabled","bookSuccess","setBookSuccess","setEnrollCode","setAppointmentCardData","appointmentCardData_2","setAppointmentCardData_2","appointmentBooked_1","setAppointmentBooked_1","appointmentBooked_2","setAppointmentBooked_2","resetAllSelectedTimeslots","resetAllSelectedResource","isAppointmentPostpone","cancelPostponeAppointment","gotNewAppointment","blockResponse","newApp","selectedTimeslot_2","bookMultiAppointment","participantData_2","EnrollCodeWithLink","getTermincodeEnrollIdURL","getCurrentBaseURL","SuccessCards","SuccessSummary","SuccessMessage","newAppData","countAPK","completeAPKMode","isPostponeAppointment","isMissingAPKWorkflow","selectedReasonObject","missingAPKNr","bookedAppointment","bookedResource","changeStepsIfMultiAppointments","stepIndex","stepscompleted","Stepper","terminbuchen","Step","StepLabel","getStep","StepperTerminierungAlternateDateContent","countryShortName","isEmailValid","toLowerCase","appProps","getDataFromAppProperties","_userId","isDEVMode","StyledFormLabelForInput","FormLabel","Color","StyledFormRowNoMargin","StyledFormGroupMaxWidth","headerBaseStyle","css","MainH1Title","h1","MainH2Title","h2","MainH3Title","MainH4Title","MainH5Title","h5","appVersion","version","pcpconfig","homepageURL","contextConfig","qrcode","themeConfig","getTermsURL","getPrivacyURL","getHomepageURL","booked","toolbarButtons","breakoutRooms","hideAddRoomButton","hideAutoAssignButton","hideJoinRoomButton","isGoogleAnalyticsEnabled","hitType","nonInteraction","transport","NavbarBottom","appNr","updatedSelectedResource","resetSelectedResource","resetedResource","updatedAvailableTimeslot","resetAvailableTimeslots","resetedAvailableTimeslot","updatedSelectedTimeslot","resetSelectedTimeslots","resetedSelectedTimeslot","fruehererTermin","makroIdArray","foundMakroId","subCoding","st","subMakro","se","foundResource","foundSelectedTimeslots","ToggleButtonGroupFlex","StyledToggleButton","StyledResetButton","getHashParam","hashLocation","hashSub1","reduce","parts","params","exec","currentPathName","enrollId","questChar","andChar","_sort","_physicianId","res0Date","res0","foundSelectedTimeslots_2","res1Date","res1","mResource","mResource_2","trBunde","config","transaction","random","cmt","resultsUpcomming","resultsPast","todayAppt","futureAppt","plannedWithoutDateAppt","pastAppt","incompleteAppt","incompleteApptPast","incompleteApptTotal","canceledAppt","isAfter","isSameOrAfter","obj"],"mappings":"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","file":"static/js/main.1e938b95.chunk.js","sourcesContent":["import moment from 'moment';\r\nimport { useContext, useEffect, useState } from 'react';\r\nimport { OverlayTrigger, Tooltip } from 'react-bootstrap';\r\nimport Col from 'react-bootstrap/Col';\r\nimport Row from 'react-bootstrap/Row';\r\nimport SelectButton from '../../components/Buttons/SelectButton';\r\nimport AppPropsContext from '../../context/appPropsContext';\r\nimport TerminierungContext, { IAvailableTimeslot } from '../../context/terminierungContext';\r\nimport { useAppointmentSelection } from '../../hooks/useAppointmentSelection';\r\nimport { blockAppointment, unblockAppointment } from '../../services/RestServices';\r\nimport {\r\n setReplacedCareUnitForResource,\r\n setReplacedDepartmentForResource,\r\n setReplacedPractitionerForResource,\r\n setReplacedRoomForResource,\r\n setReplacedServiceTypeForResource,\r\n setReplacedStartEndForResource,\r\n} from '../../utils/appointmentUtils';\r\nimport { getGermanDateFormatFromString } from '../../utils/pcpUtils';\r\nimport BlockingAppointmentModal from '../Modals/BlockingAppointmentModal/BlockingAppointmentModal';\r\n\r\ninterface Props {\r\n selectedDay: string;\r\n}\r\n\r\nexport const isTimeslotDateSet = (date: any) => {\r\n /* the default init date is a date type with 'new Date(0)' */\r\n if (date) {\r\n if (typeof date.start === 'string' && typeof date.end === 'string') {\r\n return true;\r\n }\r\n }\r\n\r\n return false;\r\n};\r\n\r\nconst TimeSlots = (props: Props) => {\r\n const { tmstate, tmdispatch } = useContext(TerminierungContext);\r\n const { apstate } = useContext(AppPropsContext);\r\n const {\r\n getSelectedResource,\r\n setSelectedResource,\r\n setSelectedTimeslot,\r\n getAvailableTimeslots,\r\n getSelectedTimeslot,\r\n getMakroIdFromResourceServiceType,\r\n } = useAppointmentSelection();\r\n\r\n interface IBlockingModalShow {\r\n show: boolean;\r\n }\r\n const [blockingModalShow, setBlockingModalShow] = useState({\r\n show: false,\r\n });\r\n\r\n const getTime = (date: Date) => {\r\n return moment(date).format('HH:mm');\r\n };\r\n\r\n useEffect(() => {\r\n const resource_1 = getSelectedResource(1);\r\n if (resource_1) {\r\n unblockAppointment(resource_1);\r\n }\r\n }, []);\r\n\r\n const clickedTimeslot = async (timeslot: IAvailableTimeslot, supressDuration: boolean) => {\r\n // console.log('clicked timeslot: start: ', dateStart, ' end: ', dateEnd);\r\n const selectedTimeslot = {\r\n start: timeslot.timeslot.start,\r\n end: timeslot.timeslot.end,\r\n supressDuration: supressDuration,\r\n };\r\n\r\n // if (tmstate.workOnAppointmentNr > 1) {\r\n // let updatedResource = setReplacedRoomForResource(tmstate.selectedResource_2, timeslot.replacedRoom);\r\n // updatedResource = setReplacedStartEndForResource(updatedResource, selectedTimeslot);\r\n\r\n // tmdispatch({\r\n // type: 'SELECTTIMESLOT_2',\r\n // selectedTimeslot_2: selectedTimeslot,\r\n // });\r\n // tmdispatch({\r\n // type: 'SETRESOURCE_2',\r\n // selectedResource_2: updatedResource,\r\n // });\r\n // } else {\r\n // let updatedResource = setReplacedRoomForResource(tmstate.selectedResource, timeslot.replacedRoom);\r\n // updatedResource = setReplacedStartEndForResource(updatedResource, selectedTimeslot);\r\n\r\n // tmdispatch({\r\n // type: 'SELECTTIMESLOT',\r\n // selectedTimeslot: selectedTimeslot,\r\n // });\r\n // tmdispatch({\r\n // type: 'SETRESOURCE',\r\n // selectedResource: updatedResource,\r\n // });\r\n // }\r\n\r\n let updatedResource = setReplacedRoomForResource(\r\n getSelectedResource(tmstate.workOnAppointmentNr),\r\n timeslot.replacedRoom,\r\n );\r\n updatedResource = setReplacedStartEndForResource(updatedResource, selectedTimeslot);\r\n updatedResource = setReplacedPractitionerForResource(updatedResource, timeslot.replacedPractitioner);\r\n updatedResource = setReplacedCareUnitForResource(updatedResource, timeslot.replacedCareUnit);\r\n updatedResource = setReplacedDepartmentForResource(updatedResource, timeslot.replacedDepartment);\r\n updatedResource = setReplacedServiceTypeForResource(updatedResource, timeslot.replacedServiceType);\r\n\r\n setSelectedResource(tmstate.workOnAppointmentNr, updatedResource);\r\n\r\n const resource = getSelectedResource(1);\r\n const blockResponse = await blockAppointment(resource);\r\n if (blockResponse.success === 'false') {\r\n // onNewAppointments(blockResponse.newApp, tmstate.workOnAppointmentNr, setSelectedTimeslot);\r\n // gotNewAppointment = true;\r\n setBlockingModalShow({\r\n show: true,\r\n });\r\n return;\r\n }\r\n\r\n setSelectedTimeslot(tmstate.workOnAppointmentNr, selectedTimeslot);\r\n\r\n /* Fruehester Termin -> get makroId from ServiceType and find resource from filteredResources */\r\n if (tmstate.selectedReason?.makroId !== undefined && tmstate.selectedReason.makroId === 0) {\r\n const makroId = getMakroIdFromResourceServiceType(updatedResource);\r\n\r\n if (makroId && makroId > 0) {\r\n const filteredSelectedReason = tmstate.filteredReasons.filter((e) => e.makroId === makroId);\r\n tmdispatch({\r\n type: 'SELECTREASON',\r\n selectedReason: filteredSelectedReason[0],\r\n });\r\n }\r\n }\r\n };\r\n\r\n const getTimeRange = (slot: IAvailableTimeslot, supressDuration: boolean) => {\r\n if (supressDuration) {\r\n return getTime(slot.timeslot.start);\r\n }\r\n return getTime(slot.timeslot.start) + ' - ' + getTime(slot.timeslot.end);\r\n };\r\n const displayAllTimeslots = () => {\r\n const availableTimeslots = getAvailableTimeslots(tmstate.workOnAppointmentNr);\r\n const selectedTimeslot = getSelectedTimeslot(tmstate.workOnAppointmentNr);\r\n if (availableTimeslots) {\r\n const allTimeslots = availableTimeslots.availableTimeslot.map((data: IAvailableTimeslot, index: number) => {\r\n if (data.replacedPractitioner?.display) {\r\n return (\r\n \r\n \r\n {data.replacedPractitioner?.display ? data.replacedPractitioner?.display : ''}\r\n \r\n }\r\n >\r\n clickedTimeslot(data, availableTimeslots.supressDuration)}\r\n >\r\n {getTimeRange(data, availableTimeslots.supressDuration)}\r\n \r\n \r\n \r\n );\r\n } else {\r\n return (\r\n clickedTimeslot(data, availableTimeslots.supressDuration)}\r\n >\r\n {getTimeRange(data, availableTimeslots.supressDuration)}\r\n \r\n );\r\n }\r\n });\r\n return allTimeslots;\r\n }\r\n\r\n return <>;\r\n };\r\n\r\n // return TimeSlot;\r\n return (\r\n <>\r\n
\r\n

\r\n Verfügbare Zeiten für den{' '}\r\n {props.selectedDay === '' ? (\r\n ''\r\n ) : (\r\n {getGermanDateFormatFromString(props.selectedDay)}\r\n )}\r\n

\r\n \r\n {displayAllTimeslots()}\r\n \r\n
\r\n setBlockingModalShow({ show: false })}\r\n />\r\n \r\n );\r\n};\r\n\r\nexport default TimeSlots;\r\n","import produce from 'immer';\r\nimport { useCallback, useContext } from 'react';\r\nimport { isTimeslotDateSet } from '../components/Calendar/TimeSlots';\r\nimport CheckInContext from '../context/checkInContext';\r\nimport LoginContext from '../context/loginContext';\r\nimport TerminierungContext from '../context/terminierungContext';\r\nimport { IEnrollData, interpreteKVParams, readCardData } from '../services/RestServices';\r\nimport { extractPatData, getPatientResource, getPractitionerResource } from '../services/fhir/FHIRPatientResource';\r\nimport {\r\n getLocationCareUnitIdFromResource,\r\n getLocationDepartmentIdFromResource,\r\n getLocationRoomIdFromResource,\r\n getParticipantIdFromResource,\r\n} from '../utils/appointmentUtils';\r\nimport { useAppointmentSelection } from './useAppointmentSelection';\r\n\r\nexport const usePersonalData = () => {\r\n const { tmstate, tmdispatch } = useContext(TerminierungContext);\r\n const { state } = useContext(LoginContext);\r\n const { checkinstate } = useContext(CheckInContext);\r\n const { getSelectedTimeslot, getSelectedResource } = useAppointmentSelection();\r\n\r\n const shouldCreateAccount = () => {\r\n if (tmstate.personalData?.username?.length > 0 && tmstate.personalData?.password?.length > 0) {\r\n return true;\r\n }\r\n return false;\r\n };\r\n\r\n const getAndSetPersonalData = useCallback(\r\n async (sessionId: string, activeUserId: string, practitionerRoleId: string) => {\r\n const patdata = practitionerRoleId\r\n ? await getPractitionerResource(sessionId, practitionerRoleId)\r\n : await getPatientResource(sessionId, activeUserId);\r\n\r\n const patdataExt = extractPatData(patdata);\r\n\r\n tmdispatch({\r\n type: 'SETPERSONALDATA',\r\n personalData: {\r\n ...tmstate.personalData,\r\n insuranceNr: patdataExt.insuranceNr,\r\n firstName: patdataExt.firstName,\r\n lastName: patdataExt.lastName,\r\n birthday: patdataExt.birthday, //format YYYY-MM-DD\r\n gender: patdataExt.gender,\r\n email: patdataExt.emailHome,\r\n telephone: patdataExt.telephoneHome,\r\n mobilePhone: patdataExt.mobilePhone,\r\n academicTitle: patdataExt.academicTitle,\r\n street: patdataExt.streetHome,\r\n housenr: patdataExt.houseNrHome,\r\n city: patdataExt.cityHome,\r\n zip: patdataExt.zipHome,\r\n country: patdataExt.country,\r\n profilePhoto: tmstate.personalData.profilePhoto,\r\n plannedStudies: patdataExt.plannedStudies,\r\n insuranceName: patdataExt.insuranceName,\r\n language: patdataExt.language,\r\n },\r\n });\r\n },\r\n [tmdispatch, tmstate.personalData],\r\n );\r\n\r\n const readCardDataAndSetPersonalData = useCallback(\r\n async (wpName: string) => {\r\n const readCardResponse = await readCardData(wpName);\r\n\r\n tmdispatch({\r\n type: 'SETPERSONALDATA',\r\n personalData: {\r\n ...tmstate.personalData,\r\n insuranceNr: readCardResponse.insuranceNr ? readCardResponse.insuranceNr : '',\r\n firstName: readCardResponse.firstName ? readCardResponse.firstName : '',\r\n lastName: readCardResponse.nameLast ? readCardResponse.nameLast : '',\r\n birthday: readCardResponse.birthday ? readCardResponse.birthday : '', //format YYYY-MM-DD\r\n gender: readCardResponse.gender ? readCardResponse.gender : '',\r\n street: readCardResponse.street ? readCardResponse.street : '',\r\n housenr: readCardResponse.houseNumber ? readCardResponse.houseNumber : '',\r\n city: readCardResponse.city ? readCardResponse.city : '',\r\n zip: readCardResponse.zip ? readCardResponse.zip : '',\r\n country: readCardResponse.country ? readCardResponse.country : '',\r\n mobilePhone: readCardResponse.mobilePhone ? readCardResponse.mobilePhone : '',\r\n academicTitle: readCardResponse.academicTitle ? readCardResponse.academicTitle : '',\r\n eGK: readCardResponse.eGK ? readCardResponse.eGK : '',\r\n state: readCardResponse.state ? readCardResponse.state : '',\r\n profilePhoto: tmstate.personalData.profilePhoto ? tmstate.personalData.profilePhoto : '',\r\n plannedStudies: readCardResponse.plannedStudies ? readCardResponse.plannedStudies : '',\r\n insuranceName: readCardResponse.insuranceName ? readCardResponse.insuranceName : '',\r\n language: readCardResponse.language ? readCardResponse.language : '',\r\n },\r\n });\r\n },\r\n [tmdispatch, tmstate.personalData],\r\n );\r\n\r\n const readKVDataAndSetPersonalData = useCallback(\r\n async (txt: string) => {\r\n const response: any = await interpreteKVParams(txt);\r\n // console.log(JSON.stringify(response));\r\n tmdispatch({\r\n type: 'SETPERSONALDATA',\r\n personalData: {\r\n ...tmstate.personalData,\r\n insuranceNr: response.insuranceNr ? response.insuranceNr : '',\r\n firstName: response.firstName ? response.firstName : '',\r\n lastName: response.nameLast ? response.nameLast : '',\r\n birthday: response.birthday ? response.birthday : '', //format YYYY-MM-DD\r\n gender: response.gender ? response.gender : '',\r\n street: response.street ? response.street : '',\r\n housenr: response.houseNumber ? response.houseNumber : '',\r\n city: response.city ? response.city : '',\r\n zip: response.zip ? response.zip : '',\r\n country: response.country ? response.country : '',\r\n mobilePhone: response.mobilePhone ? response.mobilePhone : '',\r\n academicTitle: response.academicTitle ? response.academicTitle : '',\r\n eGK: response.eGK ? response.eGK : '',\r\n kvBarcode: response.barcode ? response.barcode : '',\r\n state: response.state ? response.state : '',\r\n profilePhoto: tmstate.personalData.profilePhoto ? tmstate.personalData.profilePhoto : '',\r\n plannedStudies: response.plannedStudies ? response.plannedStudies : '',\r\n insuranceName: response.insuranceName ? response.insuranceName : '',\r\n language: response.language ? response.language : '',\r\n },\r\n });\r\n },\r\n [tmdispatch, tmstate.personalData],\r\n );\r\n\r\n const resetPersonalData = useCallback(async () => {\r\n tmdispatch({\r\n type: 'RESETPERSONALDATA',\r\n });\r\n }, [tmdispatch]);\r\n\r\n const resetPersonalDataPhysPat = useCallback(async () => {\r\n tmdispatch({\r\n type: 'RESETPERSONALDATA_PHYSPAT',\r\n });\r\n }, [tmdispatch]);\r\n\r\n const getPlannedStudyParticipation = useCallback(\r\n (studyCode: string) => {\r\n const study = tmstate.personalData.plannedStudies.find((p: any) => p.code === studyCode);\r\n if (study) {\r\n return study.participate;\r\n }\r\n return false;\r\n },\r\n [tmstate.personalData.plannedStudies],\r\n );\r\n\r\n const getEnrollData = useCallback(async () => {\r\n const selectedTimeslot = getSelectedTimeslot(1);\r\n let selectedResource = getSelectedResource(1);\r\n if (isTimeslotDateSet(selectedTimeslot)) {\r\n selectedResource = produce(selectedResource, (draft: any) => {\r\n draft.start = selectedTimeslot?.start;\r\n draft.end = selectedTimeslot?.end;\r\n });\r\n }\r\n\r\n const enrollData: IEnrollData = {\r\n insuranceNr: tmstate.personalData.insuranceNr,\r\n nameLast: tmstate.personalData.lastName,\r\n nameFirst: tmstate.personalData.firstName,\r\n makroId: tmstate.selectedReason.makroId !== undefined ? tmstate.selectedReason.makroId.toString() : '',\r\n start: selectedTimeslot ? selectedTimeslot.start.toString() : '',\r\n end: selectedTimeslot ? selectedTimeslot.end.toString() : '',\r\n birthdate: tmstate.personalData.birthday,\r\n gender: tmstate.personalData.gender,\r\n zip: tmstate.personalData.zip,\r\n city: tmstate.personalData.city,\r\n street: tmstate.personalData.street,\r\n streetNr: tmstate.personalData.housenr,\r\n country: tmstate.personalData.country,\r\n bsnr: '',\r\n email: tmstate.personalData.email,\r\n tel: tmstate.personalData.telephone,\r\n mobilePhone: tmstate.personalData.mobilePhone,\r\n academicTitle: tmstate.personalData.academicTitle,\r\n remark: tmstate.remark,\r\n ambId: getLocationCareUnitIdFromResource(selectedResource),\r\n maId: getParticipantIdFromResource(selectedResource),\r\n departmentId: getLocationDepartmentIdFromResource(selectedResource),\r\n roomId: getLocationRoomIdFromResource(selectedResource),\r\n createAccount: shouldCreateAccount(),\r\n accountName: tmstate.personalData.username,\r\n accountPWD: tmstate.personalData.password,\r\n selectedReason: tmstate.selectedReason,\r\n selectedReasonHints: tmstate.selectedReasonHints,\r\n selectedPhysicianId: tmstate.selectedPhysician.id,\r\n sessionId: state.sessionId,\r\n wpName: checkinstate.wpName ? checkinstate.wpName : '',\r\n selectedAptType: tmstate.selectedAppointmentType ? tmstate.selectedAppointmentType : '',\r\n selectedInsurance: tmstate.selectedInsurance ? tmstate.selectedInsurance : '',\r\n earlierAppointmentWanted: tmstate.earlierAppointmentWanted,\r\n insuranceName: tmstate.personalData.insuranceName,\r\n language: tmstate.personalData.language,\r\n selectedDepartment: tmstate.selectedDepartment?.name ? tmstate.selectedDepartment?.name : '',\r\n };\r\n\r\n return enrollData;\r\n }, [tmdispatch, tmstate]);\r\n\r\n const getEnrollDataPhysPat = useCallback(async () => {\r\n const selectedTimeslot = getSelectedTimeslot(1);\r\n let selectedResource = getSelectedResource(1);\r\n if (isTimeslotDateSet(selectedTimeslot)) {\r\n selectedResource = produce(selectedResource, (draft: any) => {\r\n draft.start = selectedTimeslot?.start;\r\n draft.end = selectedTimeslot?.end;\r\n });\r\n }\r\n\r\n const enrollDataPhysPat: IEnrollData = {\r\n insuranceNr: tmstate.personalDataPhysPat.insuranceNr,\r\n nameLast: tmstate.personalDataPhysPat.lastName,\r\n nameFirst: tmstate.personalDataPhysPat.firstName,\r\n makroId: tmstate.selectedReason.makroId.toString(),\r\n start: selectedTimeslot ? selectedTimeslot.start.toString() : '',\r\n end: selectedTimeslot ? selectedTimeslot.end.toString() : '',\r\n birthdate: tmstate.personalDataPhysPat.birthday,\r\n gender: tmstate.personalDataPhysPat.gender,\r\n zip: tmstate.personalDataPhysPat.zip,\r\n city: tmstate.personalDataPhysPat.city,\r\n street: tmstate.personalDataPhysPat.street,\r\n streetNr: tmstate.personalDataPhysPat.housenr,\r\n country: tmstate.personalDataPhysPat.country,\r\n bsnr: '',\r\n email: tmstate.personalDataPhysPat.email,\r\n tel: tmstate.personalDataPhysPat.telephone,\r\n mobilePhone: tmstate.personalDataPhysPat.mobilePhone,\r\n academicTitle: tmstate.personalDataPhysPat.academicTitle,\r\n remark: tmstate.remark,\r\n ambId: getLocationCareUnitIdFromResource(selectedResource),\r\n maId: getParticipantIdFromResource(selectedResource),\r\n departmentId: getLocationDepartmentIdFromResource(selectedResource),\r\n roomId: getLocationRoomIdFromResource(selectedResource),\r\n createAccount: shouldCreateAccount(),\r\n accountName: tmstate.personalDataPhysPat.username,\r\n accountPWD: tmstate.personalDataPhysPat.password,\r\n selectedReason: tmstate.selectedReason,\r\n selectedReasonHints: tmstate.selectedReasonHints,\r\n selectedPhysicianId: tmstate.selectedPhysician.id,\r\n sessionId: state.sessionId,\r\n wpName: checkinstate.wpName ? checkinstate.wpName : '',\r\n selectedAptType: tmstate.selectedAppointmentType ? tmstate.selectedAppointmentType : '',\r\n selectedInsurance: tmstate.selectedInsurance ? tmstate.selectedInsurance : '',\r\n practitionerRoleId: state.practitionerRoleId,\r\n insuranceName: tmstate.personalDataPhysPat.insuranceName,\r\n language: tmstate.personalDataPhysPat.language,\r\n selectedDepartment: tmstate.selectedDepartment?.name ? tmstate.selectedDepartment?.name : '',\r\n };\r\n\r\n return enrollDataPhysPat;\r\n }, [tmdispatch, tmstate]);\r\n\r\n return {\r\n getAndSetPersonalData,\r\n resetPersonalData,\r\n resetPersonalDataPhysPat,\r\n getPlannedStudyParticipation,\r\n readCardDataAndSetPersonalData,\r\n getEnrollData,\r\n getEnrollDataPhysPat,\r\n readKVDataAndSetPersonalData,\r\n };\r\n};\r\n","import { Component } from 'react';\r\n\r\nexport class ErrorBoundary extends Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = { hasError: false, error: '', errorInfo: '' };\r\n }\r\n\r\n static getDerivedStateFromError() {\r\n // Update state so the next render will show the fallback UI.\r\n return { hasError: true };\r\n }\r\n\r\n componentDidCatch(error, errorInfo) {\r\n // You can also log the error to an error reporting service\r\n // logErrorToMyService(error, errorInfo);\r\n // console.log('ErrorBoundary: error = ' + error + ', errorInfo = ' + errorInfo);\r\n let stack = '';\r\n if (errorInfo.componentStack) {\r\n stack = errorInfo.componentStack;\r\n }\r\n\r\n this.setState({\r\n error: error,\r\n errorInfo: stack,\r\n });\r\n }\r\n\r\n render() {\r\n if (this.state.hasError) {\r\n // You can render any custom fallback UI\r\n return (\r\n
\r\n

Something went wrong.

\r\n

{this.state.error ? this.state.error : ''}

\r\n

{this.state.errorInfo ? this.state.errorInfo : ''}

\r\n
\r\n );\r\n }\r\n\r\n return this.props.children;\r\n }\r\n}\r\n","import { useContext, useEffect, useState } from 'react';\r\nimport Alert from 'react-bootstrap/Alert';\r\nimport Modal from 'react-bootstrap/Modal';\r\nimport { useNavigate } from 'react-router-dom';\r\nimport { Paths } from '../../../Routes';\r\nimport AlertContext, { AlertOnHide, AlertType } from '../../../context/alertContext';\r\nimport { useHandleLogoutAfterIdleTime } from '../../../hooks/useHandleLogout';\r\nimport { resetShowAlertMessage } from '../../../utils/alertHandling';\r\nimport StyledButton from '../../Buttons/StyledButton';\r\nimport { StyledModal } from '../StyledModal/StyledModal';\r\n\r\nconst AlertModal = () => {\r\n const navigate = useNavigate();\r\n const { alertstate, alertdispatch } = useContext(AlertContext);\r\n const { handleLogoutAfterIdleTime } = useHandleLogoutAfterIdleTime();\r\n const [errorType, setErrorType] = useState('info');\r\n\r\n useEffect(() => {\r\n if (alertstate.alertMessage.alertType !== undefined) {\r\n if (alertstate.alertMessage.alertType === AlertType.info) {\r\n setErrorType('info');\r\n } else if (alertstate.alertMessage.alertType === AlertType.error) {\r\n setErrorType('danger');\r\n } else {\r\n setErrorType('info');\r\n }\r\n }\r\n }, [alertstate.alertMessage]);\r\n\r\n const onHideHandling = () => {\r\n resetShowAlertMessage(alertdispatch);\r\n\r\n if (\r\n alertstate.alertMessage.onHide === AlertOnHide.custom &&\r\n alertstate.alertMessage.onHideCustom !== undefined\r\n ) {\r\n alertstate.alertMessage.onHideCustom();\r\n } else {\r\n if (alertstate.alertMessage.onHide === AlertOnHide.onlyClose) {\r\n // do nothing\r\n } else {\r\n handleLogoutAfterIdleTime();\r\n\r\n if (alertstate.alertMessage.onHide === AlertOnHide.goToHome) {\r\n navigate(Paths.HOME);\r\n } else if (alertstate.alertMessage.onHide === AlertOnHide.reload) {\r\n window.location.reload();\r\n } else {\r\n navigate(Paths.HOME);\r\n }\r\n }\r\n }\r\n };\r\n\r\n return (\r\n \r\n \r\n {alertstate.alertMessage.alertTitle}\r\n \r\n \r\n \r\n

{alertstate.alertMessage.alertTxt}

\r\n
\r\n
\r\n \r\n {alertstate.alertMessage.buttonName}\r\n \r\n \r\n );\r\n};\r\n\r\nexport default AlertModal;\r\n","import { AlertOnHide, AlertType, InitialAlertType } from './alertContext';\r\n\r\ntype Action =\r\n | {\r\n type: 'SETSHOWALERTMESSAGE';\r\n alertMessage: {\r\n showModal: boolean;\r\n alertTitle: string;\r\n alertTxt: string;\r\n alertType: AlertType;\r\n onHide: AlertOnHide;\r\n onHideCustom: () => void;\r\n buttonName?: string;\r\n };\r\n }\r\n | {\r\n type: 'RESETSHOWALERTMESSAGE';\r\n };\r\n\r\nexport const alertReducer = (state: InitialAlertType, action: Action) => {\r\n switch (action.type) {\r\n case 'SETSHOWALERTMESSAGE':\r\n return {\r\n ...state,\r\n alertMessage: {\r\n showModal: action.alertMessage.showModal,\r\n alertTitle: action.alertMessage.alertTitle,\r\n alertTxt: action.alertMessage.alertTxt,\r\n alertType: action.alertMessage.alertType,\r\n onHide: action.alertMessage.onHide,\r\n onHideCustom: action.alertMessage.onHideCustom,\r\n buttonName: action.alertMessage.buttonName ? action.alertMessage.buttonName : 'OK',\r\n },\r\n };\r\n case 'RESETSHOWALERTMESSAGE':\r\n return {\r\n ...state,\r\n alertMessage: {\r\n showModal: false,\r\n alertTitle: '',\r\n alertTxt: '',\r\n alertType: AlertType.info,\r\n onHide: AlertOnHide.onlyClose,\r\n onHideCustom: undefined,\r\n buttonName: 'OK',\r\n },\r\n };\r\n default:\r\n return state;\r\n }\r\n};\r\n","import {\r\n IAnmeldeContexts,\r\n IAppointmentGeneral,\r\n IAppointmentSummary,\r\n ICustomTexts,\r\n IImpressum,\r\n IRegistrationFields,\r\n} from '../context/appPropsContext';\r\nimport { InitialAppPropsType } from './appPropsContext';\r\nimport { ILink } from './loginContext';\r\n\r\ntype Action =\r\n | {\r\n type: 'SETAPPPROPS';\r\n Appointment: IAppointmentGeneral;\r\n AppointmentSummary: IAppointmentSummary;\r\n RegistrationMandFields: IRegistrationFields;\r\n RegistrationVisibleFields: IRegistrationFields;\r\n RegistrationReadOnlyFields: IRegistrationFields;\r\n allowAccountAfterAppointment: boolean;\r\n allowAccountCreateDirect: boolean;\r\n allowAppointments: boolean;\r\n allowAppointmentsWithoutLogin: boolean;\r\n allowDirectAppointments: boolean;\r\n allowDirectAppointmentsWithoutLogin: boolean;\r\n allowLogin: boolean;\r\n allowVideo: boolean;\r\n allowVideoWithoutLogin: boolean;\r\n allowAccountInAnmeldeworkflow: boolean;\r\n brandingBytes: string;\r\n brandigType: string;\r\n extraLinks: Array;\r\n customTexts: ICustomTexts;\r\n showMobileQR: boolean;\r\n jitsiDomain: string;\r\n jitsiOptions: any;\r\n impressum: IImpressum;\r\n anmeldeContexts: Array;\r\n countDaysToVisualize: number;\r\n extendedPhysicians: boolean;\r\n allowChat: boolean;\r\n googleAnalyticsID?: string;\r\n }\r\n | { type: 'SET_FULLSCREEN_MODE'; fullscreenMode: boolean };\r\n\r\nexport const appPropsReducer = (state: InitialAppPropsType, action: Action) => {\r\n switch (action.type) {\r\n case 'SETAPPPROPS':\r\n return {\r\n ...state,\r\n appPropsSet: true,\r\n Appointment: {\r\n skipBehandlersuche: action.Appointment.skipBehandlersuche,\r\n },\r\n AppointmentSummary: {\r\n behandler:\r\n action.AppointmentSummary.behandler === null\r\n ? state.AppointmentSummary.behandler\r\n : action.AppointmentSummary.behandler,\r\n fach:\r\n action.AppointmentSummary.fach === null\r\n ? state.AppointmentSummary.fach\r\n : action.AppointmentSummary.fach,\r\n pflege:\r\n action.AppointmentSummary.pflege === null\r\n ? state.AppointmentSummary.pflege\r\n : action.AppointmentSummary.pflege,\r\n raum:\r\n action.AppointmentSummary.raum === null\r\n ? state.AppointmentSummary.raum\r\n : action.AppointmentSummary.raum,\r\n standort:\r\n action.AppointmentSummary.standort === null\r\n ? state.AppointmentSummary.standort\r\n : action.AppointmentSummary.standort,\r\n },\r\n RegistrationMandFields: {\r\n birthDate:\r\n action.RegistrationMandFields.birthDate === null\r\n ? state.RegistrationMandFields.birthDate\r\n : action.RegistrationMandFields.birthDate,\r\n city:\r\n action.RegistrationMandFields.city === null\r\n ? state.RegistrationMandFields.city\r\n : action.RegistrationMandFields.city,\r\n country:\r\n action.RegistrationMandFields.country === null\r\n ? state.RegistrationMandFields.country\r\n : action.RegistrationMandFields.country,\r\n email:\r\n action.RegistrationMandFields.email === null\r\n ? state.RegistrationMandFields.email\r\n : action.RegistrationMandFields.email,\r\n firstName:\r\n action.RegistrationMandFields.firstName === null\r\n ? state.RegistrationMandFields.firstName\r\n : action.RegistrationMandFields.firstName,\r\n gender:\r\n action.RegistrationMandFields.gender === null\r\n ? state.RegistrationMandFields.gender\r\n : action.RegistrationMandFields.gender,\r\n lastName:\r\n action.RegistrationMandFields.lastName === null\r\n ? state.RegistrationMandFields.lastName\r\n : action.RegistrationMandFields.lastName,\r\n phone:\r\n action.RegistrationMandFields.phone === null\r\n ? state.RegistrationMandFields.phone\r\n : action.RegistrationMandFields.phone,\r\n street:\r\n action.RegistrationMandFields.street === null\r\n ? state.RegistrationMandFields.street\r\n : action.RegistrationMandFields.street,\r\n zip:\r\n action.RegistrationMandFields.zip === null\r\n ? state.RegistrationMandFields.zip\r\n : action.RegistrationMandFields.zip,\r\n insuranceNr:\r\n action.RegistrationMandFields.insuranceNr === null\r\n ? state.RegistrationMandFields.insuranceNr\r\n : action.RegistrationMandFields.insuranceNr,\r\n insuranceName:\r\n action.RegistrationMandFields.insuranceName === null\r\n ? state.RegistrationMandFields.insuranceName\r\n : action.RegistrationMandFields.insuranceName,\r\n language:\r\n action.RegistrationMandFields.language === null\r\n ? state.RegistrationMandFields.language\r\n : action.RegistrationMandFields.language,\r\n mobilePhone:\r\n action.RegistrationMandFields.mobilePhone === null\r\n ? state.RegistrationMandFields.mobilePhone\r\n : action.RegistrationMandFields.mobilePhone,\r\n academicTitle:\r\n action.RegistrationMandFields.academicTitle === null\r\n ? state.RegistrationMandFields.academicTitle\r\n : action.RegistrationMandFields.academicTitle,\r\n privacyTerms:\r\n action.RegistrationMandFields.privacyTerms === null\r\n ? state.RegistrationMandFields.privacyTerms\r\n : action.RegistrationMandFields.privacyTerms,\r\n },\r\n RegistrationVisibleFields: {\r\n birthDate:\r\n action.RegistrationVisibleFields.birthDate === null\r\n ? state.RegistrationVisibleFields.birthDate\r\n : action.RegistrationVisibleFields.birthDate,\r\n city:\r\n action.RegistrationVisibleFields.city === null\r\n ? state.RegistrationVisibleFields.city\r\n : action.RegistrationVisibleFields.city,\r\n country:\r\n action.RegistrationVisibleFields.country === null\r\n ? state.RegistrationVisibleFields.country\r\n : action.RegistrationVisibleFields.country,\r\n email:\r\n action.RegistrationVisibleFields.email === null\r\n ? state.RegistrationVisibleFields.email\r\n : action.RegistrationVisibleFields.email,\r\n firstName:\r\n action.RegistrationVisibleFields.firstName === null\r\n ? state.RegistrationVisibleFields.firstName\r\n : action.RegistrationVisibleFields.firstName,\r\n gender:\r\n action.RegistrationVisibleFields.gender === null\r\n ? state.RegistrationVisibleFields.gender\r\n : action.RegistrationVisibleFields.gender,\r\n lastName:\r\n action.RegistrationVisibleFields.lastName === null\r\n ? state.RegistrationVisibleFields.lastName\r\n : action.RegistrationVisibleFields.lastName,\r\n phone:\r\n action.RegistrationVisibleFields.phone === null\r\n ? state.RegistrationVisibleFields.phone\r\n : action.RegistrationVisibleFields.phone,\r\n street:\r\n action.RegistrationVisibleFields.street === null\r\n ? state.RegistrationVisibleFields.street\r\n : action.RegistrationVisibleFields.street,\r\n zip:\r\n action.RegistrationVisibleFields.zip === null\r\n ? state.RegistrationVisibleFields.zip\r\n : action.RegistrationVisibleFields.zip,\r\n insuranceNr:\r\n action.RegistrationVisibleFields.insuranceNr === null\r\n ? state.RegistrationVisibleFields.insuranceNr\r\n : action.RegistrationVisibleFields.insuranceNr,\r\n insuranceName:\r\n action.RegistrationVisibleFields.insuranceName === null\r\n ? state.RegistrationVisibleFields.insuranceName\r\n : action.RegistrationVisibleFields.insuranceName,\r\n language:\r\n action.RegistrationVisibleFields.language === null\r\n ? state.RegistrationVisibleFields.language\r\n : action.RegistrationVisibleFields.language,\r\n mobilePhone:\r\n action.RegistrationVisibleFields.mobilePhone === null\r\n ? state.RegistrationVisibleFields.mobilePhone\r\n : action.RegistrationVisibleFields.mobilePhone,\r\n academicTitle:\r\n action.RegistrationVisibleFields.academicTitle === null\r\n ? state.RegistrationVisibleFields.academicTitle\r\n : action.RegistrationVisibleFields.academicTitle,\r\n privacyTerms:\r\n action.RegistrationVisibleFields.privacyTerms === null\r\n ? state.RegistrationVisibleFields.privacyTerms\r\n : action.RegistrationVisibleFields.privacyTerms,\r\n },\r\n RegistrationReadOnlyFields: {\r\n birthDate:\r\n action.RegistrationReadOnlyFields.birthDate === null\r\n ? state.RegistrationReadOnlyFields.birthDate\r\n : action.RegistrationReadOnlyFields.birthDate,\r\n city:\r\n action.RegistrationReadOnlyFields.city === null\r\n ? state.RegistrationReadOnlyFields.city\r\n : action.RegistrationReadOnlyFields.city,\r\n country:\r\n action.RegistrationReadOnlyFields.country === null\r\n ? state.RegistrationReadOnlyFields.country\r\n : action.RegistrationReadOnlyFields.country,\r\n email:\r\n action.RegistrationReadOnlyFields.email === null\r\n ? state.RegistrationReadOnlyFields.email\r\n : action.RegistrationReadOnlyFields.email,\r\n firstName:\r\n action.RegistrationReadOnlyFields.firstName === null\r\n ? state.RegistrationReadOnlyFields.firstName\r\n : action.RegistrationReadOnlyFields.firstName,\r\n gender:\r\n action.RegistrationReadOnlyFields.gender === null\r\n ? state.RegistrationReadOnlyFields.gender\r\n : action.RegistrationReadOnlyFields.gender,\r\n lastName:\r\n action.RegistrationReadOnlyFields.lastName === null\r\n ? state.RegistrationReadOnlyFields.lastName\r\n : action.RegistrationReadOnlyFields.lastName,\r\n phone:\r\n action.RegistrationReadOnlyFields.phone === null\r\n ? state.RegistrationReadOnlyFields.phone\r\n : action.RegistrationReadOnlyFields.phone,\r\n street:\r\n action.RegistrationReadOnlyFields.street === null\r\n ? state.RegistrationReadOnlyFields.street\r\n : action.RegistrationReadOnlyFields.street,\r\n zip:\r\n action.RegistrationReadOnlyFields.zip === null\r\n ? state.RegistrationReadOnlyFields.zip\r\n : action.RegistrationReadOnlyFields.zip,\r\n insuranceNr:\r\n action.RegistrationReadOnlyFields.insuranceNr === null\r\n ? state.RegistrationReadOnlyFields.insuranceNr\r\n : action.RegistrationReadOnlyFields.insuranceNr,\r\n insuranceName:\r\n action.RegistrationReadOnlyFields.insuranceName === null\r\n ? state.RegistrationReadOnlyFields.insuranceName\r\n : action.RegistrationReadOnlyFields.insuranceName,\r\n language:\r\n action.RegistrationReadOnlyFields.language === null\r\n ? state.RegistrationReadOnlyFields.language\r\n : action.RegistrationReadOnlyFields.language,\r\n mobilePhone:\r\n action.RegistrationReadOnlyFields.mobilePhone === null\r\n ? state.RegistrationReadOnlyFields.mobilePhone\r\n : action.RegistrationReadOnlyFields.mobilePhone,\r\n academicTitle:\r\n action.RegistrationReadOnlyFields.academicTitle === null\r\n ? state.RegistrationReadOnlyFields.academicTitle\r\n : action.RegistrationReadOnlyFields.academicTitle,\r\n privacyTerms:\r\n action.RegistrationReadOnlyFields.privacyTerms === null\r\n ? state.RegistrationReadOnlyFields.privacyTerms\r\n : action.RegistrationReadOnlyFields.privacyTerms,\r\n },\r\n allowAccountAfterAppointment: action.allowAccountAfterAppointment,\r\n allowAccountCreateDirect: action.allowAccountCreateDirect,\r\n allowAppointments: action.allowAppointments,\r\n allowAppointmentsWithoutLogin: action.allowAppointmentsWithoutLogin,\r\n allowDirectAppointments: action.allowDirectAppointments,\r\n allowDirectAppointmentsWithoutLogin: action.allowDirectAppointmentsWithoutLogin,\r\n allowLogin: action.allowLogin,\r\n allowVideo: action.allowVideo,\r\n allowVideoWithoutLogin: action.allowVideoWithoutLogin,\r\n allowAccountInAnmeldeworkflow: action.allowAccountInAnmeldeworkflow,\r\n brandingBytes: action.brandingBytes,\r\n brandigType: action.brandigType,\r\n extraLinks: action.extraLinks,\r\n customTexts: action.customTexts,\r\n showMobileQR: action.showMobileQR,\r\n jitsiDomain: action.jitsiDomain,\r\n jitsiOptions: action.jitsiOptions,\r\n impressum: action.impressum,\r\n anmeldeContexts: action.anmeldeContexts,\r\n countDaysToVisualize: action.countDaysToVisualize,\r\n extendedPhysicians: action.extendedPhysicians,\r\n allowChat: action.allowChat,\r\n googleAnalyticsID: action.googleAnalyticsID,\r\n };\r\n case 'SET_FULLSCREEN_MODE':\r\n return {\r\n ...state,\r\n fullscreenMode: action.fullscreenMode,\r\n };\r\n\r\n default:\r\n return state;\r\n }\r\n};\r\n","import { IURLToCallResponse } from '../container/Splashscreen/CheckInSplashscreen';\r\nimport { InitialCheckInType } from './checkInContext';\r\n\r\ntype Action =\r\n | {\r\n type: 'SETCHECKINDATA';\r\n urlToCallResponse: IURLToCallResponse;\r\n key: string;\r\n reason: string;\r\n requesttype: string;\r\n wpName: string;\r\n userId?: string;\r\n t0?: string;\r\n otp?: string;\r\n }\r\n | {\r\n type: 'RESETALL';\r\n };\r\n\r\nexport const checkinReducer = (state: InitialCheckInType, action: Action) => {\r\n switch (action.type) {\r\n case 'SETCHECKINDATA':\r\n return {\r\n ...state,\r\n urlToCallResponse: {\r\n state: action.urlToCallResponse.state,\r\n url: action.urlToCallResponse.url,\r\n eGK: action.urlToCallResponse.eGK,\r\n kvBarcode: action.urlToCallResponse.kvBarcode,\r\n birthday: action.urlToCallResponse.birthday,\r\n city: action.urlToCallResponse.city,\r\n country: action.urlToCallResponse.country,\r\n firstName: action.urlToCallResponse.firstName,\r\n gender: action.urlToCallResponse.gender,\r\n street: action.urlToCallResponse.street,\r\n houseNumber: action.urlToCallResponse.houseNumber,\r\n nameLast: action.urlToCallResponse.nameLast,\r\n zip: action.urlToCallResponse.zip,\r\n insuranceNr: action.urlToCallResponse.insuranceNr,\r\n insuranceName: action.urlToCallResponse.insuranceName,\r\n language: action.urlToCallResponse.language,\r\n },\r\n key: action.key,\r\n reason: action.reason,\r\n requesttype: action.type,\r\n wpName: action.wpName,\r\n userId: action.userId ? action.userId : '',\r\n t0: action.t0 ? action.t0 : '',\r\n otp: action.otp ? action.otp : '',\r\n };\r\n case 'RESETALL':\r\n return {\r\n urlToCallResponse: {\r\n state: '',\r\n url: '',\r\n eGK: '',\r\n kvBarcode: '',\r\n birthday: '',\r\n city: '',\r\n country: '',\r\n firstName: '',\r\n gender: '',\r\n street: '',\r\n houseNumber: '',\r\n nameLast: '',\r\n zip: '',\r\n insuranceNr: '',\r\n insuranceName: '',\r\n language: '',\r\n },\r\n key: '',\r\n reason: '',\r\n requesttype: '',\r\n wpName: '',\r\n userId: '',\r\n t0: '',\r\n otp: '',\r\n };\r\n\r\n default:\r\n return state;\r\n }\r\n};\r\n","import { InitialDokumenteType } from '../context/dokumenteContext';\r\nimport { IFile } from '../utils/fileUtils';\r\n\r\ntype Action =\r\n | {\r\n type: 'SETFILEDATA';\r\n filedata: IFile;\r\n }\r\n | {\r\n type: 'SETUPLOADED';\r\n filedata: IFile;\r\n }\r\n | {\r\n type: 'RESETFILEDATA';\r\n filedata: IFile;\r\n };\r\n\r\nexport const dokumenteReducer = (state: InitialDokumenteType, action: Action) => {\r\n switch (action.type) {\r\n case 'SETFILEDATA':\r\n return {\r\n ...state,\r\n filedata: {\r\n name: action.filedata.name,\r\n lastModified: action.filedata.lastModified,\r\n lastModifiedDate: action.filedata.lastModifiedDate,\r\n size: action.filedata.size,\r\n type: action.filedata.type,\r\n data: action.filedata.data,\r\n title: action.filedata.title,\r\n conclusion: action.filedata.conclusion,\r\n uploaded: action.filedata.uploaded,\r\n },\r\n };\r\n case 'SETUPLOADED':\r\n return {\r\n ...state,\r\n filedata: {\r\n ...state.filedata,\r\n uploaded: true,\r\n },\r\n };\r\n case 'RESETFILEDATA':\r\n return {\r\n ...state,\r\n filedata: {\r\n name: '',\r\n lastModified: 0,\r\n lastModifiedDate: new Date(),\r\n size: 0,\r\n type: '',\r\n data: '',\r\n title: '',\r\n conclusion: '',\r\n uploaded: false,\r\n },\r\n };\r\n\r\n default:\r\n return state;\r\n }\r\n};\r\n","import { InitialExecuteRuleType } from './executeRuleContext';\r\n\r\ntype Action =\r\n | {\r\n type: 'SETRULEPROPERTIES';\r\n ruleName: string;\r\n ruleParam: string;\r\n persInfo: string;\r\n }\r\n | {\r\n type: 'RESETRULEPROPERTIES';\r\n };\r\n\r\nexport const executeRuleReducer = (state: InitialExecuteRuleType, action: Action) => {\r\n switch (action.type) {\r\n case 'SETRULEPROPERTIES':\r\n return {\r\n ...state,\r\n ruleName: action.ruleName,\r\n ruleParam: action.ruleParam,\r\n persInfo: action.persInfo,\r\n };\r\n case 'RESETRULEPROPERTIES':\r\n return {\r\n ...state,\r\n ruleName: '',\r\n ruleParam: '',\r\n persInfo: '',\r\n };\r\n default:\r\n return state;\r\n }\r\n};\r\n","import { InitialIFrameType } from './iframeContext';\r\n\r\ntype Action =\r\n | {\r\n type: 'SETIFRAME';\r\n src: string;\r\n name: string;\r\n callingPage: string;\r\n }\r\n | {\r\n type: 'RESETIFRAME';\r\n src: string;\r\n name: string;\r\n callingPage: string;\r\n };\r\n\r\nexport const iframeReducer = (state: InitialIFrameType, action: Action) => {\r\n switch (action.type) {\r\n case 'SETIFRAME':\r\n return {\r\n ...state,\r\n src: action.src,\r\n name: action.name,\r\n callingPage: action.callingPage,\r\n };\r\n case 'RESETIFRAME':\r\n return {\r\n ...state,\r\n src: '',\r\n name: '',\r\n callingPage: '',\r\n };\r\n\r\n default:\r\n return state;\r\n }\r\n};\r\n","import {\r\n IActivePatients,\r\n IActiveStudies,\r\n ICodeName,\r\n IDepartments,\r\n ILastPatOpened,\r\n ILink,\r\n InitialLoginType,\r\n IPossibleMacros,\r\n IPossibleStudies,\r\n ISecurityItems,\r\n} from '../context/loginContext';\r\n\r\ntype Action =\r\n | {\r\n type: 'LOGIN';\r\n isLoggedIn: boolean;\r\n userId: string;\r\n practitionerRoleId: string;\r\n userName: string;\r\n sessionId: string;\r\n securityItems: ISecurityItems;\r\n iceServers: Array;\r\n possibleMacros: Array;\r\n departments: IDepartments[];\r\n activeStudies: Array;\r\n activeUserId: string;\r\n activeProfile: string;\r\n termsHTML: string;\r\n privacyHTML: string;\r\n extraLinks: Array;\r\n possibleStudies: Array;\r\n addConsignationsToAsk: Array;\r\n encounterId: string;\r\n encounterTitle: string;\r\n activeSidebarItem: string;\r\n activePatients: Array;\r\n activePatient: string;\r\n gdt: {\r\n id: string;\r\n };\r\n lastPatOpened: Array;\r\n anmeldeContexts: Array;\r\n }\r\n | {\r\n type: 'LOGOUT';\r\n }\r\n | {\r\n type: 'SETACTIVEUSERID';\r\n activeUserId: string;\r\n }\r\n | {\r\n type: 'SETACTIVEPROFILE';\r\n activeProfile: string;\r\n }\r\n | {\r\n type: 'SETACTIVEPATIENT';\r\n activePatient: string;\r\n }\r\n | {\r\n type: 'SETSECURITYITEMS';\r\n securityItems: ISecurityItems;\r\n }\r\n | {\r\n type: 'SETSECURITYITEMSSTUDY';\r\n securityItemsStudy: ISecurityItems;\r\n }\r\n | {\r\n type: 'SETTERMSHTML';\r\n termsHTML: any;\r\n }\r\n | {\r\n type: 'SETPRIVACYHTML';\r\n privacyHTML: any;\r\n }\r\n | {\r\n type: 'SETREDIRECTUSER';\r\n redirectUser: string;\r\n redirectPwd: string;\r\n }\r\n | {\r\n type: 'RESETREDIRECTUSER';\r\n redirectUser: string;\r\n redirectPwd: string;\r\n }\r\n | {\r\n type: 'SETOFINITPAGEDONE';\r\n setOfInitPageDone: boolean;\r\n }\r\n | {\r\n type: 'SETCHECKINAUTH';\r\n userId: string;\r\n activeUserId: string;\r\n sessionId: string;\r\n }\r\n | {\r\n type: 'SETFINALSECURITYITEMSORDER';\r\n finalSecurityItemsOrder: string[];\r\n }\r\n | {\r\n type: 'SETDEPARTMENTS';\r\n departments: IDepartments[];\r\n }\r\n | {\r\n type: 'SETENCOUNTER';\r\n encounterId: string;\r\n encounterTitle: string;\r\n }\r\n | {\r\n type: 'SETACTIVESIDEBARITEM';\r\n activeSidebarItem: string;\r\n }\r\n | {\r\n type: 'SETACTIVEPATIENTS';\r\n activePatients: IActivePatients[];\r\n }\r\n | {\r\n type: 'SETGDTDATA';\r\n gdt: {\r\n id: string;\r\n };\r\n }\r\n | {\r\n type: 'RESETGDTDATA';\r\n gdt: {\r\n id: string;\r\n };\r\n };\r\n\r\nexport const loginReducer = (state: InitialLoginType, action: Action) => {\r\n switch (action.type) {\r\n case 'LOGIN':\r\n return {\r\n ...state,\r\n isLoggedIn: true,\r\n userId: action.userId,\r\n practitionerRoleId: action.practitionerRoleId,\r\n userName: action.userName,\r\n sessionId: action.sessionId,\r\n securityItems: {\r\n CHARTS: action.securityItems.CHARTS,\r\n CHARTS_WEIGHT: action.securityItems.CHARTS_WEIGHT,\r\n CHARTS_FATMASS: action.securityItems.CHARTS_FATMASS,\r\n CHARTS_BLOODSUGAR: action.securityItems.CHARTS_BLOODSUGAR,\r\n CHARTS_FLI: action.securityItems.CHARTS_FLI,\r\n CHARTS_SAM: action.securityItems.CHARTS_SAM,\r\n CHARTS_ACTIVITY: action.securityItems.CHARTS_ACTIVITY,\r\n TABLE_VAL: action.securityItems.TABLE_VAL,\r\n PATLIST: action.securityItems.PATLIST,\r\n DOKUMENT: action.securityItems.DOKUMENT,\r\n FOTOS: action.securityItems.FOTOS,\r\n FRAGEBOGEN: action.securityItems.FRAGEBOGEN,\r\n MEDIKATION: action.securityItems.MEDIKATION,\r\n TAGESPLAN: action.securityItems.TAGESPLAN,\r\n TERMINE: action.securityItems.TERMINE,\r\n VIDEO: action.securityItems.VIDEO,\r\n JOURNEY: action.securityItems.JOURNEY,\r\n TODO: action.securityItems.TODO,\r\n TAB_ORDER: action.securityItems.TAB_ORDER,\r\n },\r\n iceServers: action.iceServers,\r\n possibleMacros: action.possibleMacros,\r\n departments: action.departments,\r\n activeStudies: action.activeStudies,\r\n activeUserId: action.activeUserId,\r\n activeProfile: action.activeProfile,\r\n termsHTML: action.termsHTML,\r\n privacyHTML: action.privacyHTML,\r\n extraLinks: action.extraLinks,\r\n possibleStudies: action.possibleStudies,\r\n addConsignationsToAsk: action.addConsignationsToAsk,\r\n encounterId: action.encounterId,\r\n encounterTitle: action.encounterTitle,\r\n activeSidebarItem: action.activeSidebarItem,\r\n activePatients: action.activePatients ? action.activePatients : [],\r\n activePatient: action.activePatient,\r\n lastPatOpened: action.lastPatOpened ? action.lastPatOpened : [],\r\n anmeldeContexts: action.anmeldeContexts ? action.anmeldeContexts : [],\r\n };\r\n case 'LOGOUT':\r\n return {\r\n ...state,\r\n isLoggedIn: false,\r\n setOfInitPageDone: false,\r\n userId: '',\r\n practitionerRoleId: '',\r\n userName: '',\r\n sessionId: '',\r\n securityItems: {\r\n CHARTS: false,\r\n CHARTS_WEIGHT: false,\r\n CHARTS_FATMASS: false,\r\n CHARTS_BLOODSUGAR: false,\r\n CHARTS_FLI: false,\r\n CHARTS_SAM: false,\r\n CHARTS_ACTIVITY: false,\r\n TABLE_VAL: false,\r\n PATLIST: false,\r\n DOKUMENT: false,\r\n FOTOS: false,\r\n FRAGEBOGEN: false,\r\n MEDIKATION: false,\r\n TAGESPLAN: false,\r\n TERMINE: false,\r\n VIDEO: false,\r\n JOURNEY: false,\r\n TODO: [],\r\n TAB_ORDER: '',\r\n },\r\n securityItemsStudy: {\r\n CHARTS: false,\r\n CHARTS_WEIGHT: false,\r\n CHARTS_FATMASS: false,\r\n CHARTS_BLOODSUGAR: false,\r\n CHARTS_FLI: false,\r\n CHARTS_SAM: false,\r\n CHARTS_ACTIVITY: false,\r\n TABLE_VAL: false,\r\n PATLIST: false,\r\n DOKUMENT: false,\r\n FOTOS: false,\r\n FRAGEBOGEN: false,\r\n MEDIKATION: false,\r\n TAGESPLAN: false,\r\n TERMINE: false,\r\n VIDEO: false,\r\n JOURNEY: false,\r\n TODO: [],\r\n TAB_ORDER: '',\r\n },\r\n finalSecurityItemsOrder: [],\r\n iceServers: [],\r\n possibleMacros: [],\r\n departments: [],\r\n activeStudies: [],\r\n activeUserId: '',\r\n activeProfile: '',\r\n termsHTML: '',\r\n privacyHTML: '',\r\n extraLinks: [],\r\n possibleStudies: [],\r\n addConsignationsToAsk: [],\r\n encounterId: '',\r\n encounterTitle: '',\r\n activeSidebarItem: '',\r\n activePatients: [],\r\n activePatient: '',\r\n gdt: {\r\n id: '',\r\n },\r\n lastPatOpened: [],\r\n anmeldeContexts: [],\r\n };\r\n case 'SETACTIVEUSERID':\r\n return {\r\n ...state,\r\n activeUserId: action.activeUserId,\r\n };\r\n case 'SETSECURITYITEMS':\r\n return {\r\n ...state,\r\n securityItems: {\r\n CHARTS: action.securityItems.CHARTS,\r\n CHARTS_WEIGHT: action.securityItems.CHARTS_WEIGHT,\r\n CHARTS_FATMASS: action.securityItems.CHARTS_FATMASS,\r\n CHARTS_BLOODSUGAR: action.securityItems.CHARTS_BLOODSUGAR,\r\n CHARTS_FLI: action.securityItems.CHARTS_FLI,\r\n CHARTS_SAM: action.securityItems.CHARTS_SAM,\r\n CHARTS_ACTIVITY: action.securityItems.CHARTS_ACTIVITY,\r\n TABLE_VAL: action.securityItems.TABLE_VAL,\r\n PATLIST: action.securityItems.PATLIST,\r\n DOKUMENT: action.securityItems.DOKUMENT,\r\n FOTOS: action.securityItems.FOTOS,\r\n FRAGEBOGEN: action.securityItems.FRAGEBOGEN,\r\n MEDIKATION: action.securityItems.MEDIKATION,\r\n TAGESPLAN: action.securityItems.TAGESPLAN,\r\n TERMINE: action.securityItems.TERMINE,\r\n VIDEO: action.securityItems.VIDEO,\r\n JOURNEY: action.securityItems.JOURNEY,\r\n TODO: action.securityItems.TODO,\r\n TAB_ORDER: action.securityItems.TAB_ORDER,\r\n },\r\n };\r\n case 'SETSECURITYITEMSSTUDY':\r\n return {\r\n ...state,\r\n securityItemsStudy: {\r\n CHARTS: action.securityItemsStudy.CHARTS,\r\n CHARTS_WEIGHT: action.securityItemsStudy.CHARTS_WEIGHT,\r\n CHARTS_FATMASS: action.securityItemsStudy.CHARTS_FATMASS,\r\n CHARTS_BLOODSUGAR: action.securityItemsStudy.CHARTS_BLOODSUGAR,\r\n CHARTS_FLI: action.securityItemsStudy.CHARTS_FLI,\r\n CHARTS_SAM: action.securityItemsStudy.CHARTS_SAM,\r\n CHARTS_ACTIVITY: action.securityItemsStudy.CHARTS_ACTIVITY,\r\n TABLE_VAL: action.securityItemsStudy.TABLE_VAL,\r\n PATLIST: action.securityItemsStudy.PATLIST,\r\n DOKUMENT: action.securityItemsStudy.DOKUMENT,\r\n FOTOS: action.securityItemsStudy.FOTOS,\r\n FRAGEBOGEN: action.securityItemsStudy.FRAGEBOGEN,\r\n MEDIKATION: action.securityItemsStudy.MEDIKATION,\r\n TAGESPLAN: action.securityItemsStudy.TAGESPLAN,\r\n TERMINE: action.securityItemsStudy.TERMINE,\r\n VIDEO: action.securityItemsStudy.VIDEO,\r\n JOURNEY: action.securityItemsStudy.JOURNEY,\r\n TODO: action.securityItemsStudy.TODO,\r\n TAB_ORDER: action.securityItemsStudy.TAB_ORDER,\r\n },\r\n };\r\n case 'SETACTIVEPROFILE':\r\n return {\r\n ...state,\r\n activeProfile: action.activeProfile,\r\n };\r\n case 'SETTERMSHTML':\r\n return {\r\n ...state,\r\n termsHTML: action.termsHTML,\r\n };\r\n case 'SETPRIVACYHTML':\r\n return {\r\n ...state,\r\n privacyHTML: action.privacyHTML,\r\n };\r\n case 'SETREDIRECTUSER':\r\n return {\r\n ...state,\r\n redirectUser: action.redirectUser,\r\n redirectPwd: action.redirectPwd,\r\n };\r\n case 'RESETREDIRECTUSER':\r\n return {\r\n ...state,\r\n redirectUser: '',\r\n redirectPwd: '',\r\n };\r\n case 'SETOFINITPAGEDONE':\r\n return {\r\n ...state,\r\n setOfInitPageDone: action.setOfInitPageDone,\r\n };\r\n case 'SETCHECKINAUTH':\r\n return {\r\n ...state,\r\n userId: action.userId,\r\n activeUserId: action.activeUserId,\r\n sessionId: action.sessionId,\r\n };\r\n case 'SETFINALSECURITYITEMSORDER':\r\n return {\r\n ...state,\r\n finalSecurityItemsOrder: action.finalSecurityItemsOrder,\r\n };\r\n case 'SETDEPARTMENTS':\r\n return {\r\n ...state,\r\n departments: action.departments,\r\n };\r\n case 'SETENCOUNTER':\r\n return {\r\n ...state,\r\n encounterId: action.encounterId,\r\n encounterTitle: action.encounterTitle,\r\n };\r\n case 'SETACTIVESIDEBARITEM':\r\n return {\r\n ...state,\r\n activeSidebarItem: action.activeSidebarItem,\r\n };\r\n case 'SETACTIVEPATIENTS':\r\n return {\r\n ...state,\r\n activePatients: action.activePatients,\r\n };\r\n case 'SETACTIVEPATIENT':\r\n return {\r\n ...state,\r\n activePatient: action.activePatient,\r\n };\r\n case 'SETGDTDATA':\r\n return {\r\n ...state,\r\n gdt: {\r\n id: action.gdt.id,\r\n },\r\n };\r\n case 'RESETGDTDATA':\r\n return {\r\n ...state,\r\n gdt: {\r\n id: '',\r\n },\r\n };\r\n default:\r\n return state;\r\n }\r\n};\r\n","import { InitialQuestionnaireType, IQAnswers, IQBody, IQData, IQResource } from '../context/questionnaireContext';\r\n\r\ntype Action =\r\n | {\r\n type: 'SETQDATA';\r\n qData: IQData;\r\n }\r\n | {\r\n type: 'SETSELECTEDQUESTIONNAIRE';\r\n selectedQuestionnaire: {\r\n resource: IQResource;\r\n };\r\n }\r\n | {\r\n type: 'SETSELECTEDANSWERS';\r\n selectedAnswers: {\r\n item: IQAnswers[];\r\n };\r\n }\r\n | {\r\n type: 'SETQUESTIONNAIREBODY';\r\n questionnaireBody: {\r\n data: IQBody;\r\n };\r\n }\r\n | {\r\n type: 'SETEXTERNALREQUESTDATA';\r\n isExternalRequest: boolean;\r\n externalUserId: string;\r\n externalOTP: string;\r\n externalT0: string;\r\n externalBaseURL: string;\r\n }\r\n | {\r\n type: 'SETCALLINGPAGE';\r\n callingPage: string;\r\n }\r\n | {\r\n type: 'SETENCOUNTERID';\r\n encounterId: string;\r\n }\r\n | {\r\n type: 'RESETQUESTIONNAIRE';\r\n };\r\n\r\nexport const questionnaireReducer = (state: InitialQuestionnaireType, action: Action) => {\r\n switch (action.type) {\r\n case 'SETQDATA':\r\n return {\r\n ...state,\r\n qData: action.qData,\r\n };\r\n\r\n case 'SETSELECTEDQUESTIONNAIRE':\r\n return {\r\n ...state,\r\n selectedQuestionnaire: {\r\n resource: action.selectedQuestionnaire.resource,\r\n },\r\n };\r\n\r\n case 'SETSELECTEDANSWERS':\r\n return {\r\n ...state,\r\n selectedAnswers: {\r\n item: action.selectedAnswers.item,\r\n },\r\n };\r\n\r\n case 'SETQUESTIONNAIREBODY':\r\n return {\r\n ...state,\r\n questionnaireBody: {\r\n data: action.questionnaireBody.data,\r\n },\r\n };\r\n\r\n case 'SETEXTERNALREQUESTDATA':\r\n return {\r\n ...state,\r\n isExternalRequest: action.isExternalRequest,\r\n externalUserId: action.externalUserId,\r\n externalOTP: action.externalOTP,\r\n externalT0: action.externalT0,\r\n externalBaseURL: action.externalBaseURL,\r\n };\r\n\r\n case 'SETCALLINGPAGE':\r\n return {\r\n ...state,\r\n callingPage: action.callingPage,\r\n };\r\n case 'SETENCOUNTERID':\r\n return {\r\n ...state,\r\n encounterId: action.encounterId,\r\n };\r\n case 'RESETQUESTIONNAIRE':\r\n return {\r\n ...state,\r\n qData: {\r\n entry: [\r\n {\r\n resource: [\r\n {\r\n id: '',\r\n item: [\r\n {\r\n item: [\r\n {\r\n linkId: '',\r\n text: '',\r\n type: '',\r\n },\r\n ],\r\n linkId: '',\r\n text: '',\r\n type: '',\r\n },\r\n ],\r\n name: '',\r\n resourceType: '',\r\n title: '',\r\n extension: [\r\n {\r\n url: '',\r\n valueString: '',\r\n valueReference: {\r\n reference: '',\r\n },\r\n },\r\n ],\r\n },\r\n ],\r\n },\r\n ],\r\n id: '',\r\n resourceType: '',\r\n type: '',\r\n },\r\n selectedQuestionnaire: {\r\n resource: {\r\n id: '',\r\n item: [],\r\n name: '',\r\n resourceType: '',\r\n title: '',\r\n extension: [\r\n {\r\n url: '',\r\n valueString: '',\r\n valueReference: {\r\n reference: '',\r\n },\r\n },\r\n ],\r\n },\r\n },\r\n selectedAnswers: {\r\n item: [],\r\n },\r\n questionnaireBody: {\r\n data: {\r\n authored: '',\r\n context: {\r\n reference: '',\r\n },\r\n id: '',\r\n identifier: {\r\n system: '',\r\n value: '',\r\n },\r\n item: [],\r\n meta: {\r\n versionId: '',\r\n lastUpdated: '',\r\n },\r\n questionnaire: {\r\n reference: '',\r\n },\r\n resourceType: '',\r\n source: {\r\n reference: '',\r\n },\r\n status: '',\r\n subject: {\r\n reference: '',\r\n },\r\n },\r\n },\r\n isExternalRequest: false,\r\n externalUserId: '',\r\n externalOTP: '',\r\n externalT0: '',\r\n externalBaseURL: '',\r\n callingPage: '',\r\n encounterId: '',\r\n };\r\n\r\n default:\r\n return state;\r\n }\r\n};\r\n","import { InitialSigPadType, ISigData, ISignaturePadDevice, ISignotecDeviceActions } from './sigpadContext';\r\n\r\ntype Action =\r\n | {\r\n type: 'SETDEVICEDATA';\r\n deviceData: ISignaturePadDevice;\r\n }\r\n | {\r\n type: 'SETSIGDATA';\r\n sigData: ISigData;\r\n }\r\n | {\r\n type: 'SETCANVAS';\r\n canvasRef: any;\r\n }\r\n | {\r\n type: 'SETDEVICEACTION_SEND';\r\n deviceActions: ISignotecDeviceActions;\r\n }\r\n | {\r\n type: 'SETDEVICEACTION_CANCEL';\r\n deviceActions: ISignotecDeviceActions;\r\n }\r\n | {\r\n type: 'RESETDEVICEDATA';\r\n }\r\n | {\r\n type: 'RESETSIGDATA';\r\n }\r\n | {\r\n type: 'RESETDEVICEACTIONS';\r\n }\r\n | {\r\n type: 'RESETALL';\r\n };\r\n\r\nexport const sigpadReducer = (state: InitialSigPadType, action: Action) => {\r\n switch (action.type) {\r\n case 'SETDEVICEDATA':\r\n return {\r\n ...state,\r\n deviceData: {\r\n deviceName: action.deviceData.deviceName,\r\n canStoreEncryptKey: action.deviceData.canStoreEncryptKey,\r\n firmwareVersion: action.deviceData.firmwareVersion,\r\n serialNumber: action.deviceData.serialNumber,\r\n supportsRSA: action.deviceData.supportsRSA,\r\n padConnectionType: action.deviceData.padConnectionType,\r\n padIndex: action.deviceData.padIndex,\r\n displayHeight: action.deviceData.displayHeight,\r\n displayWidth: action.deviceData.displayWidth,\r\n sampleRate: action.deviceData.sampleRate,\r\n scaleFactorX: action.deviceData.scaleFactorX,\r\n scaleFactorY: action.deviceData.scaleFactorY,\r\n xResolution: action.deviceData.xResolution,\r\n yResolution: action.deviceData.yResolution,\r\n },\r\n };\r\n case 'SETSIGDATA':\r\n return {\r\n ...state,\r\n sigData: {\r\n certId: action.sigData.certId,\r\n pictureData: action.sigData.pictureData,\r\n rsaSignature: action.sigData.rsaSignature,\r\n signData: action.sigData.signData,\r\n signingCert: action.sigData.signingCert,\r\n },\r\n };\r\n case 'SETCANVAS':\r\n return {\r\n ...state,\r\n canvasRef: action.canvasRef,\r\n };\r\n case 'SETDEVICEACTION_SEND':\r\n return {\r\n ...state,\r\n deviceActions: {\r\n ...state.deviceActions,\r\n sendClicked: action.deviceActions.sendClicked,\r\n },\r\n };\r\n case 'SETDEVICEACTION_CANCEL':\r\n return {\r\n ...state,\r\n deviceActions: {\r\n ...state.deviceActions,\r\n cancelClicked: action.deviceActions.cancelClicked,\r\n },\r\n };\r\n case 'RESETDEVICEDATA':\r\n return {\r\n ...state,\r\n deviceData: {\r\n deviceName: '',\r\n canStoreEncryptKey: false,\r\n firmwareVersion: '',\r\n serialNumber: '',\r\n supportsRSA: false,\r\n padConnectionType: '',\r\n padIndex: 0,\r\n displayHeight: 0,\r\n displayWidth: 0,\r\n sampleRate: 0,\r\n scaleFactorX: 0,\r\n scaleFactorY: 0,\r\n xResolution: 0,\r\n yResolution: 0,\r\n },\r\n };\r\n case 'RESETSIGDATA':\r\n return {\r\n ...state,\r\n sigData: {\r\n certId: '',\r\n pictureData: '',\r\n rsaSignature: '',\r\n signData: '',\r\n signingCert: '',\r\n },\r\n };\r\n case 'RESETDEVICEACTIONS':\r\n return {\r\n ...state,\r\n deviceActions: {\r\n sendClicked: false,\r\n cancelClicked: false,\r\n },\r\n };\r\n case 'RESETALL':\r\n return {\r\n deviceData: {\r\n deviceName: '',\r\n canStoreEncryptKey: false,\r\n firmwareVersion: '',\r\n serialNumber: '',\r\n supportsRSA: false,\r\n padConnectionType: '',\r\n padIndex: 0,\r\n displayHeight: 0,\r\n displayWidth: 0,\r\n sampleRate: 0,\r\n scaleFactorX: 0,\r\n scaleFactorY: 0,\r\n xResolution: 0,\r\n yResolution: 0,\r\n },\r\n sigData: {\r\n certId: '',\r\n pictureData: '',\r\n rsaSignature: '',\r\n signData: '',\r\n signingCert: '',\r\n },\r\n deviceActions: {\r\n sendClicked: false,\r\n cancelClicked: false,\r\n },\r\n canvasRef: null,\r\n };\r\n\r\n default:\r\n return state;\r\n }\r\n};\r\n","import {\r\n IAvailableTimeslots,\r\n IHints,\r\n IHintsAnswers,\r\n InitialTerminierungType,\r\n ISelectedPhysician,\r\n ISelectedTimeslots,\r\n} from '../context/terminierungContext';\r\nimport { IPlannedStudies } from '../services/fhir/FHIRPatientResource';\r\nimport { IParticipant } from '../utils/appointmentUtils';\r\nimport { ICodeName, IDepartmentReasons, IDepartments } from './loginContext';\r\n\r\ntype Action =\r\n | {\r\n type: 'SETWITHLOGIN';\r\n withLogin: boolean;\r\n }\r\n | {\r\n type: 'SETWITHCHECKIN';\r\n withCheckIn: boolean;\r\n }\r\n | {\r\n type: 'SELECTLOCATION';\r\n selectedLocation: {\r\n code: string;\r\n name: string;\r\n };\r\n }\r\n | {\r\n type: 'SELECTCATEGORY';\r\n selectedCategory: {\r\n name: string;\r\n id: number;\r\n countAPKs: number;\r\n oneMacro: boolean;\r\n macroCode: string;\r\n macroType: string;\r\n };\r\n }\r\n | {\r\n type: 'SELECTLOCATION';\r\n selectedLocation: ICodeName;\r\n }\r\n | {\r\n type: 'SELECTDEPARTMENT';\r\n selectedDepartment: IDepartments;\r\n }\r\n | {\r\n type: 'HDBOOKING';\r\n hdBooking: string;\r\n }\r\n | {\r\n type: 'SETFILTEREDREASONS';\r\n filteredReasons: IDepartmentReasons[];\r\n }\r\n | {\r\n type: 'SELECTREASON';\r\n selectedReason: IDepartmentReasons;\r\n }\r\n | {\r\n type: 'SELECTREASONHINTS';\r\n selectedReasonHints: IHintsAnswers[];\r\n }\r\n | {\r\n type: 'SELECTINSURANCE';\r\n selectedInsurance: string;\r\n }\r\n | {\r\n type: 'SELECTPHYSICIAN';\r\n selectedPhysician: ISelectedPhysician;\r\n }\r\n | {\r\n type: 'SELECTAPPOINTMENTTYPE';\r\n selectedAppointmentType: string;\r\n }\r\n | {\r\n type: 'RESETCATEGORY';\r\n }\r\n | {\r\n type: 'SETAVAILABLETIMESLOTS';\r\n availableTimeslots: IAvailableTimeslots[];\r\n }\r\n\r\n /*\r\n | {\r\n type: 'SETAVAILABLETIMESLOTS_2';\r\n availableTimeslots_2: IAvailableTimeslot[];\r\n }\r\n */\r\n | {\r\n type: 'SELECTTIMESLOT';\r\n selectedTimeslots: ISelectedTimeslots[];\r\n }\r\n | {\r\n type: 'RESETTIMESLOT';\r\n }\r\n | {\r\n type: 'TIMESLOTCLICKED';\r\n timeslotClicked: boolean;\r\n }\r\n /*\r\n | {\r\n type: 'SELECTTIMESLOT_2';\r\n selectedTimeslot_2: ITimeslot;\r\n }\r\n */\r\n | {\r\n type: 'SETRESOURCE';\r\n selectedResources: any;\r\n }\r\n /*\r\n | {\r\n type: 'SETRESOURCE_2';\r\n selectedResource_2: any;\r\n }\r\n */\r\n | {\r\n type: 'SETRENEWAPPOINTMENT';\r\n renewAppointment: boolean;\r\n }\r\n | {\r\n type: 'SETPERSONALDATA_INSURANCENR';\r\n personalData: {\r\n insuranceNr: string;\r\n };\r\n }\r\n | {\r\n type: 'SETPERSONALDATA_INSURANCENAME';\r\n personalData: {\r\n insuranceName: string;\r\n };\r\n }\r\n | {\r\n type: 'SETPERSONALDATA_LANGUAGE';\r\n personalData: {\r\n language: string;\r\n };\r\n }\r\n | {\r\n type: 'SETPERSONALDATA_FIRSTNAME';\r\n personalData: {\r\n firstName: string;\r\n };\r\n }\r\n | {\r\n type: 'SETPERSONALDATA_LASTNAME';\r\n personalData: {\r\n lastName: string;\r\n };\r\n }\r\n | {\r\n type: 'SETPERSONALDATA_BIRTHDAY';\r\n personalData: {\r\n birthday: string;\r\n };\r\n }\r\n | {\r\n type: 'SETPERSONALDATA_GENDER';\r\n personalData: {\r\n gender: string;\r\n };\r\n }\r\n | {\r\n type: 'SETPERSONALDATA_EMAIL';\r\n personalData: {\r\n email: string;\r\n };\r\n }\r\n | {\r\n type: 'SETPERSONALDATA_TELEPHONE';\r\n personalData: {\r\n telephone: string;\r\n };\r\n }\r\n | {\r\n type: 'SETPERSONALDATA_STREET';\r\n personalData: {\r\n street: string;\r\n };\r\n }\r\n | {\r\n type: 'SETPERSONALDATA_HOUSENR';\r\n personalData: {\r\n housenr: string;\r\n };\r\n }\r\n | {\r\n type: 'SETPERSONALDATA_CITY';\r\n personalData: {\r\n city: string;\r\n };\r\n }\r\n | {\r\n type: 'SETPERSONALDATA_ZIP';\r\n personalData: {\r\n zip: string;\r\n };\r\n }\r\n | {\r\n type: 'SETPERSONALDATA_COUNTRY';\r\n personalData: {\r\n country: string;\r\n };\r\n }\r\n | {\r\n type: 'SETPERSONALDATA_MOBILEPHONE';\r\n personalData: {\r\n mobilePhone: string;\r\n };\r\n }\r\n | {\r\n type: 'SETPERSONALDATA_ACADEMICTITLE';\r\n personalData: {\r\n academicTitle: string;\r\n };\r\n }\r\n | {\r\n type: 'SETPERSONALDATA_USERNAME';\r\n personalData: {\r\n username: string;\r\n };\r\n }\r\n | {\r\n type: 'SETPERSONALDATA_PASSWORD';\r\n personalData: {\r\n password: string;\r\n };\r\n }\r\n | {\r\n type: 'SETPERSONALDATA_PROFILEPHOTO';\r\n personalData: {\r\n profilePhoto: string;\r\n };\r\n }\r\n | {\r\n type: 'SETPERSONALDATA_PLANNEDSTUDIES';\r\n personalData: {\r\n plannedStudies: IPlannedStudies[];\r\n };\r\n }\r\n | {\r\n type: 'SETPERSONALDATA';\r\n personalData: {\r\n insuranceNr: string;\r\n firstName: string;\r\n lastName: string;\r\n birthday: string;\r\n gender: string;\r\n email: string;\r\n telephone: string;\r\n street: string;\r\n housenr: string;\r\n city: string;\r\n zip: string;\r\n country: string;\r\n eGK: string;\r\n mobilePhone: string;\r\n academicTitle: string;\r\n kvBarcode: string;\r\n state: string;\r\n profilePhoto: string;\r\n plannedStudies: IPlannedStudies[];\r\n username: string;\r\n password: string;\r\n insuranceName: string;\r\n language: string;\r\n };\r\n }\r\n | {\r\n type: 'SETPERSONALDATA_PHYSPAT_INSURANCENR';\r\n personalDataPhysPat: {\r\n insuranceNr: string;\r\n };\r\n }\r\n | {\r\n type: 'SETPERSONALDATA_PHYSPAT_INSURANCENAME';\r\n personalDataPhysPat: {\r\n insuranceName: string;\r\n };\r\n }\r\n | {\r\n type: 'SETPERSONALDATA_PHYSPAT_LANGUAGE';\r\n personalDataPhysPat: {\r\n language: string;\r\n };\r\n }\r\n | {\r\n type: 'SETPERSONALDATA_PHYSPAT_FIRSTNAME';\r\n personalDataPhysPat: {\r\n firstName: string;\r\n };\r\n }\r\n | {\r\n type: 'SETPERSONALDATA_PHYSPAT_LASTNAME';\r\n personalDataPhysPat: {\r\n lastName: string;\r\n };\r\n }\r\n | {\r\n type: 'SETPERSONALDATA_PHYSPAT_BIRTHDAY';\r\n personalDataPhysPat: {\r\n birthday: string;\r\n };\r\n }\r\n | {\r\n type: 'SETPERSONALDATA_PHYSPAT_GENDER';\r\n personalDataPhysPat: {\r\n gender: string;\r\n };\r\n }\r\n | {\r\n type: 'SETPERSONALDATA_PHYSPAT_EMAIL';\r\n personalDataPhysPat: {\r\n email: string;\r\n };\r\n }\r\n | {\r\n type: 'SETPERSONALDATA_PHYSPAT_TELEPHONE';\r\n personalDataPhysPat: {\r\n telephone: string;\r\n };\r\n }\r\n | {\r\n type: 'SETPERSONALDATA_PHYSPAT_STREET';\r\n personalDataPhysPat: {\r\n street: string;\r\n };\r\n }\r\n | {\r\n type: 'SETPERSONALDATA_PHYSPAT_HOUSENR';\r\n personalDataPhysPat: {\r\n housenr: string;\r\n };\r\n }\r\n | {\r\n type: 'SETPERSONALDATA_PHYSPAT_CITY';\r\n personalDataPhysPat: {\r\n city: string;\r\n };\r\n }\r\n | {\r\n type: 'SETPERSONALDATA_PHYSPAT_ZIP';\r\n personalDataPhysPat: {\r\n zip: string;\r\n };\r\n }\r\n | {\r\n type: 'SETPERSONALDATA_PHYSPAT_COUNTRY';\r\n personalDataPhysPat: {\r\n country: string;\r\n };\r\n }\r\n | {\r\n type: 'SETPERSONALDATA_PHYSPAT_MOBILEPHONE';\r\n personalDataPhysPat: {\r\n mobilePhone: string;\r\n };\r\n }\r\n | {\r\n type: 'SETPERSONALDATA_PHYSPAT_ACADEMICTITLE';\r\n personalDataPhysPat: {\r\n academicTitle: string;\r\n };\r\n }\r\n | {\r\n type: 'SETPERSONALDATA_PHYSPAT_USERNAME';\r\n personalDataPhysPat: {\r\n username: string;\r\n };\r\n }\r\n | {\r\n type: 'SETPERSONALDATA_PHYSPAT_PASSWORD';\r\n personalDataPhysPat: {\r\n password: string;\r\n };\r\n }\r\n | {\r\n type: 'SETPERSONALDATA_PHYSPAT_PROFILEPHOTO';\r\n personalDataPhysPat: {\r\n profilePhoto: string;\r\n };\r\n }\r\n | {\r\n type: 'SETPERSONALDATA_PHYSPAT_PLANNEDSTUDIES';\r\n personalDataPhysPat: {\r\n plannedStudies: IPlannedStudies[];\r\n };\r\n }\r\n | {\r\n type: 'SETPERSONALDATA_PHYSPAT';\r\n personalDataPhysPat: {\r\n insuranceNr: string;\r\n firstName: string;\r\n lastName: string;\r\n birthday: string;\r\n gender: string;\r\n email: string;\r\n telephone: string;\r\n street: string;\r\n housenr: string;\r\n city: string;\r\n zip: string;\r\n country: string;\r\n mobilePhone: string;\r\n academicTitle: string;\r\n eGK: string;\r\n kvBarcode: string;\r\n state: string;\r\n profilePhoto: string;\r\n plannedStudies: IPlannedStudies[];\r\n username: string;\r\n password: string;\r\n insuranceName: string;\r\n language: string;\r\n };\r\n }\r\n | {\r\n type: 'SETREMARK';\r\n remark: string;\r\n }\r\n | {\r\n type: 'SETEARLIERAPPOINTMENTWANTED';\r\n earlierAppointmentWanted: boolean;\r\n }\r\n | {\r\n type: 'SETENROLLDATA';\r\n enrollData: {\r\n ambId: string;\r\n enrollCode: string;\r\n maId: string;\r\n patNameFirst: string;\r\n patNameLast: string;\r\n scheduleTime: string;\r\n fhir: {\r\n participant: IParticipant[];\r\n resourceType: string;\r\n start: Date;\r\n end: Date;\r\n status: string;\r\n serviceType: any[];\r\n };\r\n waitNumber: string;\r\n requestFromDirectLink: boolean | undefined;\r\n remark: string;\r\n isToday: boolean | undefined;\r\n };\r\n }\r\n | {\r\n type: 'SETENROLLCODE';\r\n enrollData: {\r\n enrollCode: string;\r\n kvBarcode?: string;\r\n isToday?: boolean | undefined;\r\n };\r\n }\r\n | {\r\n type: 'SETJOURNEYDATA';\r\n journeyData: {\r\n site: string;\r\n hints: IHints[];\r\n };\r\n }\r\n | {\r\n type: 'RESETPERSONALDATA';\r\n }\r\n | {\r\n type: 'RESETPERSONALDATA_PHYSPAT';\r\n }\r\n | {\r\n type: 'RESETREMARK';\r\n }\r\n | {\r\n type: 'RESETALL';\r\n }\r\n | {\r\n type: 'RESETALL_WITHOUTPERSONALDATA';\r\n }\r\n | {\r\n type: 'RESETALL_FORPOSTPONEAPPOINTMENT';\r\n }\r\n | {\r\n type: 'CHANGEPERSONALDATA';\r\n changePersonalData: boolean;\r\n }\r\n | {\r\n type: 'CANCELEDAPPOINTMENT';\r\n canceledAppointment: boolean;\r\n }\r\n | {\r\n type: 'WORKONAPPOINTMENTNR';\r\n workOnAppointmentNr: number;\r\n }\r\n | {\r\n type: 'SETCANCELNEWAPPOINTMENTDATA';\r\n cancelNewAppointmentData: {\r\n showModal: boolean;\r\n data: any;\r\n reason: any;\r\n };\r\n }\r\n /*\r\n | {\r\n type: 'RESETAVAILABLETIMESLOTS';\r\n appointmentNr: number;\r\n }\r\n */\r\n /*\r\n | {\r\n type: 'RESETAVAILABLETIMESLOTS_2';\r\n }\r\n */\r\n /*\r\n | {\r\n type: 'RESETRESOURCE';\r\n }\r\n */\r\n /*\r\n | {\r\n type: 'RESETRESOURCE_2';\r\n }\r\n */\r\n /*\r\n | {\r\n type: 'RESETSELECTEDTIMESLOT';\r\n }\r\n */\r\n /*\r\n | {\r\n type: 'RESETSELECTEDTIMESLOT_2';\r\n }\r\n */\r\n | {\r\n type: 'RESETCANCELNEWAPPOINTMENTDATA';\r\n }\r\n | {\r\n type: 'DONTSHOWCANCELNEWAPPOINTMENTDATA';\r\n };\r\n\r\nexport const terminierungReducer = (state: InitialTerminierungType, action: Action) => {\r\n switch (action.type) {\r\n case 'SETWITHLOGIN':\r\n return {\r\n ...state,\r\n withLogin: action.withLogin,\r\n };\r\n case 'SETWITHCHECKIN':\r\n return {\r\n ...state,\r\n withCheckIn: action.withCheckIn,\r\n };\r\n case 'SELECTCATEGORY':\r\n return {\r\n ...state,\r\n selectedCategory: action.selectedCategory,\r\n };\r\n case 'SELECTLOCATION':\r\n return {\r\n ...state,\r\n selectedLocation: action.selectedLocation,\r\n };\r\n case 'SELECTDEPARTMENT':\r\n return {\r\n ...state,\r\n selectedDepartment: action.selectedDepartment,\r\n };\r\n case 'HDBOOKING':\r\n return {\r\n ...state,\r\n hdBooking: action.hdBooking,\r\n };\r\n case 'SETFILTEREDREASONS':\r\n return {\r\n ...state,\r\n filteredReasons: action.filteredReasons,\r\n };\r\n case 'SELECTREASON':\r\n return {\r\n ...state,\r\n selectedReason: action.selectedReason,\r\n };\r\n case 'SELECTREASONHINTS':\r\n return {\r\n ...state,\r\n selectedReasonHints: action.selectedReasonHints,\r\n };\r\n case 'SELECTINSURANCE':\r\n return {\r\n ...state,\r\n selectedInsurance: action.selectedInsurance,\r\n };\r\n case 'SELECTPHYSICIAN':\r\n return {\r\n ...state,\r\n selectedPhysician: action.selectedPhysician,\r\n };\r\n case 'SELECTAPPOINTMENTTYPE':\r\n return {\r\n ...state,\r\n selectedAppointmentType: action.selectedAppointmentType,\r\n };\r\n case 'RESETCATEGORY':\r\n return {\r\n ...state,\r\n selectedCategory: {\r\n name: '',\r\n id: 0,\r\n countAPKs: 1,\r\n oneMacro: false,\r\n macroCode: '',\r\n macroType: '',\r\n },\r\n };\r\n case 'SETAVAILABLETIMESLOTS':\r\n return {\r\n ...state,\r\n availableTimeslots: action.availableTimeslots,\r\n };\r\n /*\r\n case 'SETAVAILABLETIMESLOTS_2':\r\n return {\r\n ...state,\r\n availableTimeslots_2: action.availableTimeslots_2,\r\n };\r\n */\r\n case 'SELECTTIMESLOT':\r\n return {\r\n ...state,\r\n selectedTimeslots: action.selectedTimeslots,\r\n };\r\n case 'RESETTIMESLOT':\r\n return {\r\n ...state,\r\n selectedTimeslots: [],\r\n };\r\n case 'TIMESLOTCLICKED':\r\n return {\r\n ...state,\r\n timeslotClicked: action.timeslotClicked,\r\n };\r\n /*\r\n case 'SELECTTIMESLOT_2':\r\n return {\r\n ...state,\r\n selectedTimeslot_2: action.selectedTimeslot_2,\r\n };\r\n */\r\n case 'SETRESOURCE':\r\n return {\r\n ...state,\r\n selectedResources: action.selectedResources,\r\n };\r\n /*\r\n case 'SETRESOURCE_2':\r\n return {\r\n ...state,\r\n selectedResource_2: action.selectedResource_2,\r\n };\r\n */\r\n case 'SETRENEWAPPOINTMENT':\r\n return {\r\n ...state,\r\n renewAppointment: action.renewAppointment,\r\n };\r\n case 'SETPERSONALDATA_INSURANCENR':\r\n return {\r\n ...state,\r\n personalData: {\r\n ...state.personalData,\r\n insuranceNr: action.personalData.insuranceNr,\r\n },\r\n };\r\n case 'SETPERSONALDATA_INSURANCENAME':\r\n return {\r\n ...state,\r\n personalData: {\r\n ...state.personalData,\r\n insuranceName: action.personalData.insuranceName,\r\n },\r\n };\r\n case 'SETPERSONALDATA_LANGUAGE':\r\n return {\r\n ...state,\r\n personalData: {\r\n ...state.personalData,\r\n language: action.personalData.language,\r\n },\r\n };\r\n case 'SETPERSONALDATA_FIRSTNAME':\r\n return {\r\n ...state,\r\n personalData: {\r\n ...state.personalData,\r\n firstName: action.personalData.firstName,\r\n },\r\n };\r\n case 'SETPERSONALDATA_LASTNAME':\r\n return {\r\n ...state,\r\n personalData: {\r\n ...state.personalData,\r\n lastName: action.personalData.lastName,\r\n },\r\n };\r\n case 'SETPERSONALDATA_BIRTHDAY':\r\n return {\r\n ...state,\r\n personalData: {\r\n ...state.personalData,\r\n birthday: action.personalData.birthday,\r\n },\r\n };\r\n case 'SETPERSONALDATA_GENDER':\r\n return {\r\n ...state,\r\n personalData: {\r\n ...state.personalData,\r\n gender: action.personalData.gender,\r\n },\r\n };\r\n case 'SETPERSONALDATA_EMAIL':\r\n return {\r\n ...state,\r\n personalData: {\r\n ...state.personalData,\r\n email: action.personalData.email,\r\n },\r\n };\r\n case 'SETPERSONALDATA_TELEPHONE':\r\n return {\r\n ...state,\r\n personalData: {\r\n ...state.personalData,\r\n telephone: action.personalData.telephone,\r\n },\r\n };\r\n case 'SETPERSONALDATA_STREET':\r\n return {\r\n ...state,\r\n personalData: {\r\n ...state.personalData,\r\n street: action.personalData.street,\r\n },\r\n };\r\n case 'SETPERSONALDATA_HOUSENR':\r\n return {\r\n ...state,\r\n personalData: {\r\n ...state.personalData,\r\n housenr: action.personalData.housenr,\r\n },\r\n };\r\n case 'SETPERSONALDATA_CITY':\r\n return {\r\n ...state,\r\n personalData: {\r\n ...state.personalData,\r\n city: action.personalData.city,\r\n },\r\n };\r\n case 'SETPERSONALDATA_ZIP':\r\n return {\r\n ...state,\r\n personalData: {\r\n ...state.personalData,\r\n zip: action.personalData.zip,\r\n },\r\n };\r\n case 'SETPERSONALDATA_COUNTRY':\r\n return {\r\n ...state,\r\n personalData: {\r\n ...state.personalData,\r\n country: action.personalData.country,\r\n },\r\n };\r\n case 'SETPERSONALDATA_MOBILEPHONE':\r\n return {\r\n ...state,\r\n personalData: {\r\n ...state.personalData,\r\n mobilePhone: action.personalData.mobilePhone,\r\n },\r\n };\r\n case 'SETPERSONALDATA_ACADEMICTITLE':\r\n return {\r\n ...state,\r\n personalData: {\r\n ...state.personalData,\r\n academicTitle: action.personalData.academicTitle,\r\n },\r\n };\r\n case 'SETPERSONALDATA_USERNAME':\r\n return {\r\n ...state,\r\n personalData: {\r\n ...state.personalData,\r\n username: action.personalData.username,\r\n },\r\n };\r\n case 'SETPERSONALDATA_PASSWORD':\r\n return {\r\n ...state,\r\n personalData: {\r\n ...state.personalData,\r\n password: action.personalData.password,\r\n },\r\n };\r\n case 'SETPERSONALDATA_PROFILEPHOTO':\r\n return {\r\n ...state,\r\n personalData: {\r\n ...state.personalData,\r\n profilePhoto: action.personalData.profilePhoto,\r\n },\r\n };\r\n case 'SETPERSONALDATA_PLANNEDSTUDIES':\r\n return {\r\n ...state,\r\n personalData: {\r\n ...state.personalData,\r\n plannedStudies: action.personalData.plannedStudies,\r\n },\r\n };\r\n\r\n case 'SETPERSONALDATA':\r\n return {\r\n ...state,\r\n personalData: {\r\n insuranceNr: action.personalData.insuranceNr,\r\n firstName: action.personalData.firstName,\r\n lastName: action.personalData.lastName,\r\n birthday: action.personalData.birthday,\r\n gender: action.personalData.gender,\r\n email: action.personalData.email,\r\n telephone: action.personalData.telephone,\r\n street: action.personalData.street,\r\n housenr: action.personalData.housenr,\r\n city: action.personalData.city,\r\n zip: action.personalData.zip,\r\n country: action.personalData.country,\r\n mobilePhone: action.personalData.mobilePhone,\r\n academicTitle: action.personalData.academicTitle,\r\n eGK: action.personalData.eGK ? action.personalData.eGK : '',\r\n kvBarcode: action.personalData.kvBarcode\r\n ? action.personalData.kvBarcode\r\n : state.enrollData.kvBarcode\r\n ? state.enrollData.kvBarcode\r\n : '',\r\n state: action.personalData.state,\r\n profilePhoto: action.personalData.profilePhoto,\r\n plannedStudies: action.personalData.plannedStudies,\r\n username: action.personalData.username,\r\n password: action.personalData.password,\r\n insuranceName: action.personalData.insuranceName,\r\n language: action.personalData.language,\r\n },\r\n };\r\n\r\n case 'SETPERSONALDATA_PHYSPAT_INSURANCENR':\r\n return {\r\n ...state,\r\n personalDataPhysPat: {\r\n ...state.personalDataPhysPat,\r\n insuranceNr: action.personalDataPhysPat.insuranceNr,\r\n },\r\n };\r\n case 'SETPERSONALDATA_PHYSPAT_INSURANCENAME':\r\n return {\r\n ...state,\r\n personalDataPhysPat: {\r\n ...state.personalDataPhysPat,\r\n insuranceName: action.personalDataPhysPat.insuranceName,\r\n },\r\n };\r\n case 'SETPERSONALDATA_PHYSPAT_LANGUAGE':\r\n return {\r\n ...state,\r\n personalDataPhysPat: {\r\n ...state.personalDataPhysPat,\r\n language: action.personalDataPhysPat.language,\r\n },\r\n };\r\n case 'SETPERSONALDATA_PHYSPAT_FIRSTNAME':\r\n return {\r\n ...state,\r\n personalDataPhysPat: {\r\n ...state.personalDataPhysPat,\r\n firstName: action.personalDataPhysPat.firstName,\r\n },\r\n };\r\n case 'SETPERSONALDATA_PHYSPAT_LASTNAME':\r\n return {\r\n ...state,\r\n personalDataPhysPat: {\r\n ...state.personalDataPhysPat,\r\n lastName: action.personalDataPhysPat.lastName,\r\n },\r\n };\r\n case 'SETPERSONALDATA_PHYSPAT_BIRTHDAY':\r\n return {\r\n ...state,\r\n personalDataPhysPat: {\r\n ...state.personalDataPhysPat,\r\n birthday: action.personalDataPhysPat.birthday,\r\n },\r\n };\r\n case 'SETPERSONALDATA_PHYSPAT_GENDER':\r\n return {\r\n ...state,\r\n personalDataPhysPat: {\r\n ...state.personalDataPhysPat,\r\n gender: action.personalDataPhysPat.gender,\r\n },\r\n };\r\n case 'SETPERSONALDATA_PHYSPAT_EMAIL':\r\n return {\r\n ...state,\r\n personalDataPhysPat: {\r\n ...state.personalDataPhysPat,\r\n email: action.personalDataPhysPat.email,\r\n },\r\n };\r\n case 'SETPERSONALDATA_PHYSPAT_TELEPHONE':\r\n return {\r\n ...state,\r\n personalDataPhysPat: {\r\n ...state.personalDataPhysPat,\r\n telephone: action.personalDataPhysPat.telephone,\r\n },\r\n };\r\n case 'SETPERSONALDATA_PHYSPAT_STREET':\r\n return {\r\n ...state,\r\n personalDataPhysPat: {\r\n ...state.personalDataPhysPat,\r\n street: action.personalDataPhysPat.street,\r\n },\r\n };\r\n case 'SETPERSONALDATA_PHYSPAT_HOUSENR':\r\n return {\r\n ...state,\r\n personalDataPhysPat: {\r\n ...state.personalDataPhysPat,\r\n housenr: action.personalDataPhysPat.housenr,\r\n },\r\n };\r\n case 'SETPERSONALDATA_PHYSPAT_CITY':\r\n return {\r\n ...state,\r\n personalDataPhysPat: {\r\n ...state.personalDataPhysPat,\r\n city: action.personalDataPhysPat.city,\r\n },\r\n };\r\n case 'SETPERSONALDATA_PHYSPAT_ZIP':\r\n return {\r\n ...state,\r\n personalDataPhysPat: {\r\n ...state.personalDataPhysPat,\r\n zip: action.personalDataPhysPat.zip,\r\n },\r\n };\r\n case 'SETPERSONALDATA_PHYSPAT_COUNTRY':\r\n return {\r\n ...state,\r\n personalDataPhysPat: {\r\n ...state.personalDataPhysPat,\r\n country: action.personalDataPhysPat.country,\r\n },\r\n };\r\n case 'SETPERSONALDATA_PHYSPAT_MOBILEPHONE':\r\n return {\r\n ...state,\r\n personalDataPhysPat: {\r\n ...state.personalDataPhysPat,\r\n mobilePhone: action.personalDataPhysPat.mobilePhone,\r\n },\r\n };\r\n case 'SETPERSONALDATA_PHYSPAT_ACADEMICTITLE':\r\n return {\r\n ...state,\r\n personalDataPhysPat: {\r\n ...state.personalDataPhysPat,\r\n academicTitle: action.personalDataPhysPat.academicTitle,\r\n },\r\n };\r\n case 'SETPERSONALDATA_PHYSPAT_USERNAME':\r\n return {\r\n ...state,\r\n personalDataPhysPat: {\r\n ...state.personalDataPhysPat,\r\n username: action.personalDataPhysPat.username,\r\n },\r\n };\r\n case 'SETPERSONALDATA_PHYSPAT_PASSWORD':\r\n return {\r\n ...state,\r\n personalDataPhysPat: {\r\n ...state.personalDataPhysPat,\r\n password: action.personalDataPhysPat.password,\r\n },\r\n };\r\n case 'SETPERSONALDATA_PHYSPAT_PROFILEPHOTO':\r\n return {\r\n ...state,\r\n personalDataPhysPat: {\r\n ...state.personalDataPhysPat,\r\n profilePhoto: action.personalDataPhysPat.profilePhoto,\r\n },\r\n };\r\n case 'SETPERSONALDATA_PHYSPAT_PLANNEDSTUDIES':\r\n return {\r\n ...state,\r\n personalDataPhysPat: {\r\n ...state.personalDataPhysPat,\r\n plannedStudies: action.personalDataPhysPat.plannedStudies,\r\n },\r\n };\r\n\r\n case 'SETPERSONALDATA_PHYSPAT':\r\n return {\r\n ...state,\r\n personalDataPhysPat: {\r\n insuranceNr: action.personalDataPhysPat.insuranceNr,\r\n firstName: action.personalDataPhysPat.firstName,\r\n lastName: action.personalDataPhysPat.lastName,\r\n birthday: action.personalDataPhysPat.birthday,\r\n gender: action.personalDataPhysPat.gender,\r\n email: action.personalDataPhysPat.email,\r\n telephone: action.personalDataPhysPat.telephone,\r\n street: action.personalDataPhysPat.street,\r\n housenr: action.personalDataPhysPat.housenr,\r\n city: action.personalDataPhysPat.city,\r\n zip: action.personalDataPhysPat.zip,\r\n country: action.personalDataPhysPat.country,\r\n mobilePhone: action.personalDataPhysPat.mobilePhone,\r\n academicTitle: action.personalDataPhysPat.academicTitle,\r\n eGK: action.personalDataPhysPat.eGK ? action.personalDataPhysPat.eGK : '',\r\n kvBarcode: action.personalDataPhysPat.kvBarcode\r\n ? action.personalDataPhysPat.kvBarcode\r\n : state.enrollData.kvBarcode\r\n ? state.enrollData.kvBarcode\r\n : '',\r\n state: action.personalDataPhysPat.state,\r\n profilePhoto: action.personalDataPhysPat.profilePhoto,\r\n plannedStudies: action.personalDataPhysPat.plannedStudies,\r\n username: action.personalDataPhysPat.username,\r\n password: action.personalDataPhysPat.password,\r\n insuranceName: action.personalDataPhysPat.insuranceName,\r\n language: action.personalDataPhysPat.language,\r\n },\r\n };\r\n\r\n case 'SETREMARK':\r\n return {\r\n ...state,\r\n remark: action.remark,\r\n };\r\n case 'SETEARLIERAPPOINTMENTWANTED':\r\n return {\r\n ...state,\r\n earlierAppointmentWanted: action.earlierAppointmentWanted,\r\n };\r\n\r\n case 'SETENROLLDATA':\r\n return {\r\n ...state,\r\n enrollData: {\r\n ambId: action.enrollData.ambId,\r\n enrollCode: action.enrollData.enrollCode,\r\n maId: action.enrollData.maId,\r\n patNameFirst: action.enrollData.patNameFirst,\r\n patNameLast: action.enrollData.patNameLast,\r\n scheduleTime: action.enrollData.scheduleTime,\r\n fhir: {\r\n participant: action.enrollData.fhir.participant,\r\n resourceType: action.enrollData.fhir.resourceType,\r\n start: action.enrollData.fhir.start,\r\n end: action.enrollData.fhir.end,\r\n status: action.enrollData.fhir.status,\r\n serviceType: action.enrollData.fhir.serviceType,\r\n },\r\n waitNumber: action.enrollData.waitNumber,\r\n requestFromDirectLink: action.enrollData.requestFromDirectLink,\r\n remark: action.enrollData.remark,\r\n isToday: action.enrollData.isToday,\r\n },\r\n };\r\n case 'SETENROLLCODE':\r\n const res = {\r\n ...state,\r\n enrollData: {\r\n ...state.enrollData,\r\n enrollCode: action.enrollData.enrollCode,\r\n kvBarcode: action.enrollData.kvBarcode,\r\n isToday: action.enrollData.isToday,\r\n },\r\n };\r\n if (action.enrollData.kvBarcode) {\r\n res.personalData = {\r\n ...state.personalData,\r\n kvBarcode: action.enrollData.kvBarcode,\r\n };\r\n }\r\n return res;\r\n case 'CHANGEPERSONALDATA':\r\n return {\r\n ...state,\r\n changePersonalData: action.changePersonalData,\r\n };\r\n case 'CANCELEDAPPOINTMENT':\r\n return {\r\n ...state,\r\n canceledAppointment: action.canceledAppointment,\r\n };\r\n\r\n case 'SETJOURNEYDATA':\r\n return {\r\n ...state,\r\n journeyData: {\r\n site: action.journeyData.site,\r\n hints: action.journeyData.hints,\r\n },\r\n };\r\n\r\n case 'RESETPERSONALDATA':\r\n return {\r\n ...state,\r\n personalData: {\r\n insuranceNr: '',\r\n firstName: '',\r\n lastName: '',\r\n birthday: '',\r\n gender: '',\r\n email: '',\r\n telephone: '',\r\n street: '',\r\n housenr: '',\r\n city: '',\r\n zip: '',\r\n country: '',\r\n mobilePhone: '',\r\n academicTitle: '',\r\n eGK: '',\r\n kvBarcode: '',\r\n state: '',\r\n profilePhoto: '',\r\n plannedStudies: [],\r\n username: '',\r\n password: '',\r\n insuranceName: '',\r\n language: '',\r\n },\r\n remark: '',\r\n earlierAppointmentWanted: false,\r\n };\r\n case 'RESETPERSONALDATA_PHYSPAT':\r\n return {\r\n ...state,\r\n personalDataPhysPat: {\r\n insuranceNr: '',\r\n firstName: '',\r\n lastName: '',\r\n birthday: '',\r\n gender: '',\r\n email: '',\r\n telephone: '',\r\n street: '',\r\n housenr: '',\r\n city: '',\r\n zip: '',\r\n country: '',\r\n mobilePhone: '',\r\n academicTitle: '',\r\n eGK: '',\r\n kvBarcode: '',\r\n state: '',\r\n profilePhoto: '',\r\n plannedStudies: [],\r\n username: '',\r\n password: '',\r\n insuranceName: '',\r\n language: '',\r\n },\r\n remark: '',\r\n earlierAppointmentWanted: false,\r\n };\r\n case 'RESETREMARK':\r\n return {\r\n ...state,\r\n remark: '',\r\n };\r\n case 'RESETALL':\r\n return {\r\n ...state,\r\n selectedLocation: {\r\n code: '',\r\n name: '',\r\n },\r\n selectedCategory: {\r\n name: '',\r\n id: 0,\r\n countAPKs: 1,\r\n oneMacro: false,\r\n macroCode: '',\r\n macroType: '',\r\n },\r\n selectedDepartment: {\r\n name: '',\r\n reasons: [],\r\n },\r\n hdBooking: '',\r\n filteredReasons: [],\r\n selectedReason: {\r\n makroCode: '',\r\n makroId: 0,\r\n makroName: '',\r\n pFilter: '',\r\n aFilter: '',\r\n reasonCode: '',\r\n reasonId: '',\r\n reasonName: '',\r\n },\r\n selectedReasonHints: [],\r\n selectedInsurance: '',\r\n selectedPhysician: {\r\n lines: [],\r\n id: 0,\r\n name: '',\r\n pict: '',\r\n makroId: 0,\r\n },\r\n selectedAppointmentType: '',\r\n availableTimeslots: [],\r\n // availableTimeslots_2: [],\r\n selectedTimeslots: [],\r\n timeslotClicked: false,\r\n /*\r\n selectedTimeslot_2: {\r\n start: new Date(0),\r\n end: new Date(0),\r\n },\r\n */\r\n selectedResources: [],\r\n // selectedResource_2: '',\r\n personalData: {\r\n insuranceNr: '',\r\n firstName: '',\r\n lastName: '',\r\n birthday: '',\r\n gender: '',\r\n email: '',\r\n telephone: '',\r\n street: '',\r\n housenr: '',\r\n city: '',\r\n zip: '',\r\n country: '',\r\n mobilePhone: '',\r\n academicTitle: '',\r\n eGK: '',\r\n kvBarcode: '',\r\n state: '',\r\n profilePhoto: '',\r\n plannedStudies: [],\r\n username: '',\r\n password: '',\r\n insuranceName: '',\r\n language: '',\r\n },\r\n personalDataPhysPat: {\r\n insuranceNr: '',\r\n firstName: '',\r\n lastName: '',\r\n birthday: '',\r\n gender: '',\r\n email: '',\r\n telephone: '',\r\n street: '',\r\n housenr: '',\r\n city: '',\r\n zip: '',\r\n country: '',\r\n mobilePhone: '',\r\n academicTitle: '',\r\n eGK: '',\r\n kvBarcode: '',\r\n state: '',\r\n profilePhoto: '',\r\n plannedStudies: [],\r\n username: '',\r\n password: '',\r\n insuranceName: '',\r\n language: '',\r\n },\r\n remark: '',\r\n earlierAppointmentWanted: false,\r\n enrollData: {\r\n ambId: '',\r\n enrollCode: '',\r\n maId: '',\r\n patNameFirst: '',\r\n patNameLast: '',\r\n scheduleTime: '',\r\n fhir: {\r\n participant: [],\r\n resourceType: '',\r\n start: new Date(0),\r\n end: new Date(0),\r\n status: '',\r\n serviceType: [],\r\n },\r\n waitNumber: '',\r\n requestFromDirectLink: undefined,\r\n remark: '',\r\n isToday: undefined,\r\n },\r\n changePersonalData: false,\r\n workOnAppointmentNr: 1,\r\n cancelNewAppointmentData: {\r\n showModal: false,\r\n data: '',\r\n reason: '',\r\n },\r\n renewAppointment: false,\r\n withLogin: false,\r\n withCheckIn: false,\r\n journeyData: {\r\n site: '',\r\n hints: [],\r\n },\r\n };\r\n case 'RESETALL_WITHOUTPERSONALDATA':\r\n return {\r\n ...state,\r\n selectedLocation: {\r\n code: '',\r\n name: '',\r\n },\r\n selectedCategory: {\r\n name: '',\r\n id: 0,\r\n countAPKs: 1,\r\n oneMacro: false,\r\n macroCode: '',\r\n macroType: '',\r\n },\r\n selectedDeparment: {\r\n name: '',\r\n reasons: [],\r\n },\r\n hdBooking: '',\r\n filteredReasons: [],\r\n selectedReason: {\r\n makroCode: '',\r\n makroId: 0,\r\n makroName: '',\r\n pFilter: '',\r\n aFilter: '',\r\n reasonCode: '',\r\n reasonId: '',\r\n reasonName: '',\r\n },\r\n selectedReasonHints: [],\r\n selectedInsurance: '',\r\n selectedPhysician: {\r\n lines: [],\r\n id: 0,\r\n name: '',\r\n pict: '',\r\n makroId: 0,\r\n },\r\n selectedAppointmentType: '',\r\n availableTimeslots: [],\r\n // availableTimeslots_2: [],\r\n selectedTimeslots: [],\r\n timeslotClicked: false,\r\n /*\r\n selectedTimeslot_2: {\r\n start: new Date(0),\r\n end: new Date(0),\r\n },\r\n */\r\n selectedResources: [],\r\n // selectedResource_2: '',\r\n remark: '',\r\n earlierAppointmentWanted: false,\r\n enrollData: {\r\n ambId: '',\r\n enrollCode: '',\r\n maId: '',\r\n patNameFirst: '',\r\n patNameLast: '',\r\n scheduleTime: '',\r\n fhir: {\r\n participant: [],\r\n resourceType: '',\r\n start: new Date(0),\r\n end: new Date(0),\r\n status: '',\r\n serviceType: [],\r\n },\r\n waitNumber: '',\r\n requestFromDirectLink: undefined,\r\n remark: '',\r\n },\r\n changePersonalData: false,\r\n workOnAppointmentNr: 1,\r\n cancelNewAppointmentData: {\r\n showModal: false,\r\n data: '',\r\n reason: '',\r\n },\r\n renewAppointment: false,\r\n journeyData: {\r\n site: '',\r\n hints: [],\r\n },\r\n };\r\n case 'RESETALL_FORPOSTPONEAPPOINTMENT':\r\n return {\r\n ...state,\r\n selectedLocation: {\r\n code: '',\r\n name: '',\r\n },\r\n selectedCategory: {\r\n name: '',\r\n id: 0,\r\n countAPKs: 1,\r\n oneMacro: false,\r\n macroCode: '',\r\n macroType: '',\r\n },\r\n selectedDepartment: {\r\n name: '',\r\n reasons: [],\r\n },\r\n hdBooking: '',\r\n filteredReasons: [],\r\n selectedReason: {\r\n makroCode: '',\r\n makroId: 0,\r\n makroName: '',\r\n pFilter: '',\r\n aFilter: '',\r\n reasonCode: '',\r\n reasonId: '',\r\n reasonName: '',\r\n },\r\n selectedReasonHints: [],\r\n selectedInsurance: '',\r\n selectedPhysician: {\r\n lines: [],\r\n id: 0,\r\n name: '',\r\n pict: '',\r\n makroId: 0,\r\n },\r\n selectedAppointmentType: '',\r\n availableTimeslots: [],\r\n // availableTimeslots_2: [],\r\n selectedTimeslots: [],\r\n timeslotClicked: false,\r\n /*\r\n selectedTimeslot_2: {\r\n start: new Date(0),\r\n end: new Date(0),\r\n },\r\n */\r\n selectedResources: [],\r\n // selectedResource_2: '',\r\n //remark: '',\r\n changePersonalData: false,\r\n workOnAppointmentNr: 1,\r\n renewAppointment: false,\r\n withLogin: false,\r\n withCheckIn: false,\r\n journeyData: {\r\n site: '',\r\n hints: [],\r\n },\r\n };\r\n case 'WORKONAPPOINTMENTNR':\r\n return {\r\n ...state,\r\n workOnAppointmentNr: action.workOnAppointmentNr,\r\n };\r\n case 'SETCANCELNEWAPPOINTMENTDATA':\r\n return {\r\n ...state,\r\n cancelNewAppointmentData: {\r\n showModal: action.cancelNewAppointmentData.showModal,\r\n data: action.cancelNewAppointmentData.data,\r\n reason: action.cancelNewAppointmentData.reason,\r\n },\r\n };\r\n /*\r\n case 'RESETAVAILABLETIMESLOTS':\r\n const updatedResetAvailableTimeslots = resetAvailableTimeslots(\r\n state.availableTimeslots,\r\n action.appointmentNr,\r\n );\r\n\r\n return {\r\n ...state,\r\n availableTimeslots: updatedResetAvailableTimeslots,\r\n };\r\n /*\r\n case 'RESETAVAILABLETIMESLOTS_2':\r\n return {\r\n ...state,\r\n availableTimeslots_2: [],\r\n };\r\n */\r\n /*\r\n case 'RESETRESOURCE':\r\n return {\r\n ...state,\r\n selectedResource: resetedResource,\r\n };\r\n */\r\n /*\r\n case 'RESETRESOURCE_2':\r\n return {\r\n ...state,\r\n selectedResource_2: '',\r\n };\r\n */\r\n /*\r\n case 'RESETSELECTEDTIMESLOT':\r\n return {\r\n ...state,\r\n selectedTimeslot: {\r\n start: new Date(0),\r\n end: new Date(0),\r\n },\r\n };\r\n */\r\n /*\r\n case 'RESETSELECTEDTIMESLOT_2':\r\n return {\r\n ...state,\r\n selectedTimeslot_2: {\r\n start: new Date(0),\r\n end: new Date(0),\r\n },\r\n };\r\n */\r\n case 'RESETCANCELNEWAPPOINTMENTDATA':\r\n return {\r\n ...state,\r\n cancelNewAppointmentData: {\r\n showModal: false,\r\n data: '',\r\n reason: '',\r\n },\r\n };\r\n case 'DONTSHOWCANCELNEWAPPOINTMENTDATA':\r\n return {\r\n ...state,\r\n cancelNewAppointmentData: {\r\n ...state.cancelNewAppointmentData,\r\n showModal: false,\r\n },\r\n };\r\n\r\n default:\r\n return state;\r\n }\r\n};\r\n","import { InitialThemeType } from './themeContext';\r\n\r\ntype Action =\r\n | {\r\n type: 'SETTHEME';\r\n theme: string;\r\n }\r\n | {\r\n type: 'SETNAVBARCOLLAPSED';\r\n navbarCollapsed: boolean;\r\n };\r\n\r\nexport const themeReducer = (state: InitialThemeType, action: Action) => {\r\n switch (action.type) {\r\n case 'SETTHEME':\r\n return {\r\n ...state,\r\n theme: action.theme,\r\n };\r\n case 'SETNAVBARCOLLAPSED':\r\n return {\r\n ...state,\r\n navbarCollapsed: action.navbarCollapsed,\r\n };\r\n\r\n default:\r\n return state;\r\n }\r\n};\r\n","import { getAppointmentChatEntry, IAppointmentChat, IIncomingMessage } from '../components/Chat/Chat';\r\nimport { InitialVideochatType } from '../context/videochatContext';\r\n\r\ntype Action =\r\n | {\r\n type: 'ONMESSAGE';\r\n incomingCall: boolean;\r\n callAccepted: boolean;\r\n caller: string;\r\n remoteSid: string;\r\n roomName: string;\r\n iceServer: Array;\r\n }\r\n | {\r\n type: 'ONACCEPT';\r\n incomingCall: boolean;\r\n callAccepted: boolean;\r\n caller: string;\r\n remoteSid: string;\r\n iceServer: Array;\r\n }\r\n | {\r\n type: 'ONDISCONNECT';\r\n incomingCall: boolean;\r\n callAccepted: boolean;\r\n caller: string;\r\n remoteSid: string;\r\n roomName: string;\r\n iceServer: Array;\r\n chatMessages: IIncomingMessage[];\r\n appointmentChat: [];\r\n lastIncomingAppChatMsg: {\r\n id: '';\r\n incomingMessages: [];\r\n };\r\n }\r\n | {\r\n type: 'ONLOCALSTREAM';\r\n localStream: any;\r\n iceServer: Array;\r\n }\r\n | {\r\n type: 'ONREMOTESTREAM';\r\n remoteStream: any;\r\n iceServer: Array;\r\n }\r\n | {\r\n type: 'SETICESERVER';\r\n iceServer: Array;\r\n }\r\n | {\r\n type: 'SETCHATMESSAGES';\r\n chatMessages: IIncomingMessage[];\r\n }\r\n | {\r\n type: 'RESETCHATMESSAGES';\r\n }\r\n | {\r\n type: 'SETLASTINCOMINGTEXTCHATMSG';\r\n lastIncomingTextChatMsg: string;\r\n }\r\n | {\r\n type: 'SETAPPOINTMENTCHAT';\r\n appointmentChat: IAppointmentChat[];\r\n }\r\n | {\r\n type: 'CLOSEALLAPPOINTMENTCHATS';\r\n }\r\n | {\r\n type: 'SETLASTINCOMINGCHATMESSAGES';\r\n lastIncomingAppChatMsg: {\r\n id: string;\r\n incomingMessages: [];\r\n };\r\n }\r\n | {\r\n type: 'SETNUMBERUNREADMESSAGES';\r\n numberUnreadMessages: number;\r\n }\r\n | {\r\n type: 'RESETNUMBERUNREADMESSAGES';\r\n }\r\n | {\r\n type: 'INCREASENUMBERUNREADMESSAGES';\r\n }\r\n | {\r\n type: 'SETAUDIOMUTED';\r\n audioMuted: boolean;\r\n }\r\n | {\r\n type: 'SETJITSIALLOWED';\r\n jitsiAllowed: boolean;\r\n roomName: string;\r\n }\r\n | {\r\n type: 'JITSIENROLLERROR';\r\n jitsiError: string;\r\n };\r\n\r\nexport const videochatReducer = (state: InitialVideochatType, action: Action) => {\r\n switch (action.type) {\r\n case 'ONMESSAGE':\r\n return {\r\n ...state,\r\n incomingCall: true,\r\n callAccepted: false,\r\n caller: action.caller,\r\n remoteSid: action.remoteSid,\r\n roomName: action.roomName,\r\n };\r\n\r\n case 'ONACCEPT':\r\n return {\r\n ...state,\r\n incomingCall: false,\r\n callAccepted: true,\r\n caller: action.caller,\r\n remoteSid: action.remoteSid,\r\n jitsiAllowed: true,\r\n };\r\n\r\n case 'ONDISCONNECT':\r\n if (window.app.wsconnect && window.app.wsconnect.readyState == 1) {\r\n if (window.app.wsconnect.peerConnection) {\r\n window.app.wsconnect.peerConnection.close();\r\n }\r\n window.app.wsconnect.close();\r\n window.app.wsconnect = null;\r\n if (state.localStream) {\r\n state.localStream.getTracks().forEach(function (track: any) {\r\n track.stop();\r\n });\r\n delete state.localStream;\r\n }\r\n if (state.remoteStream) {\r\n state.remoteStream.getTracks().forEach(function (track: any) {\r\n track.stop();\r\n });\r\n delete state.remoteStream;\r\n }\r\n }\r\n return {\r\n ...state,\r\n incomingCall: false,\r\n callAccepted: false,\r\n caller: '',\r\n remoteSid: '',\r\n roomName: '',\r\n chatMessages: [],\r\n numberUnreadMessages: 0,\r\n appointmentChat: [],\r\n lastIncomingAppChatMsg: {\r\n id: '',\r\n incomingMessages: [],\r\n },\r\n jitsiAllowed: false,\r\n };\r\n\r\n case 'ONLOCALSTREAM':\r\n return {\r\n ...state,\r\n localStream: action.localStream,\r\n };\r\n case 'ONREMOTESTREAM':\r\n return {\r\n ...state,\r\n remoteStream: action.remoteStream,\r\n };\r\n case 'SETICESERVER':\r\n return {\r\n ...state,\r\n iceServer: action.iceServer,\r\n };\r\n case 'SETCHATMESSAGES':\r\n return {\r\n ...state,\r\n chatMessages: action.chatMessages,\r\n };\r\n case 'RESETCHATMESSAGES':\r\n return {\r\n ...state,\r\n chatMessages: [],\r\n lastIncomingTextChatMsg: '',\r\n };\r\n case 'SETLASTINCOMINGTEXTCHATMSG':\r\n return {\r\n ...state,\r\n lastIncomingTextChatMsg: action.lastIncomingTextChatMsg,\r\n };\r\n case 'SETAPPOINTMENTCHAT':\r\n return {\r\n ...state,\r\n appointmentChat: action.appointmentChat,\r\n };\r\n case 'CLOSEALLAPPOINTMENTCHATS':\r\n const appChat = state.appointmentChat.map((item) => {\r\n item.chatOpen = false;\r\n return item;\r\n });\r\n\r\n return {\r\n ...state,\r\n appointmentChat: appChat,\r\n };\r\n case 'SETLASTINCOMINGCHATMESSAGES':\r\n let appointmentChat;\r\n const appointmentChatEntry = getAppointmentChatEntry(\r\n state.appointmentChat,\r\n action.lastIncomingAppChatMsg.id,\r\n );\r\n if (appointmentChatEntry) {\r\n /* nothing changed, there are no new messages, so do nothing...*/\r\n if (\r\n appointmentChatEntry.incomingMessages?.length ===\r\n action.lastIncomingAppChatMsg.incomingMessages.length\r\n ) {\r\n return {\r\n ...state,\r\n };\r\n }\r\n appointmentChat = state.appointmentChat.map((item: IAppointmentChat) => {\r\n if (item.id === action.lastIncomingAppChatMsg.id) {\r\n item.incomingMessages = action.lastIncomingAppChatMsg.incomingMessages;\r\n if (item.numberUnreadMsg) {\r\n item.numberUnreadMsg = item.numberUnreadMsg + 1;\r\n } else {\r\n item.numberUnreadMsg = 1;\r\n }\r\n }\r\n return item;\r\n });\r\n\r\n return {\r\n ...state,\r\n appointmentChat: appointmentChat,\r\n };\r\n } else {\r\n const appChatValue: IAppointmentChat = {\r\n id: action.lastIncomingAppChatMsg.id,\r\n chatOpen: false,\r\n incomingMessages: action.lastIncomingAppChatMsg.incomingMessages,\r\n numberUnreadMsg: 1,\r\n };\r\n const newAppointmentChat = state.appointmentChat;\r\n newAppointmentChat.push(appChatValue);\r\n let numberUnread = 0;\r\n if (state.numberUnreadMessages) {\r\n numberUnread = state.numberUnreadMessages + 1;\r\n } else {\r\n numberUnread = 1;\r\n }\r\n return {\r\n ...state,\r\n appointmentChat: newAppointmentChat,\r\n numberUnreadMessages: numberUnread,\r\n };\r\n }\r\n case 'SETNUMBERUNREADMESSAGES':\r\n return {\r\n ...state,\r\n numberUnreadMessages: action.numberUnreadMessages,\r\n };\r\n case 'RESETNUMBERUNREADMESSAGES':\r\n return {\r\n ...state,\r\n numberUnreadMessages: 0,\r\n };\r\n case 'INCREASENUMBERUNREADMESSAGES':\r\n return {\r\n ...state,\r\n numberUnreadMessages: state.numberUnreadMessages + 1,\r\n };\r\n case 'SETAUDIOMUTED':\r\n return {\r\n ...state,\r\n audioMuted: action.audioMuted,\r\n };\r\n case 'SETJITSIALLOWED':\r\n return {\r\n ...state,\r\n jitsiAllowed: action.jitsiAllowed,\r\n roomName: action.roomName,\r\n };\r\n case 'JITSIENROLLERROR':\r\n return {\r\n ...state,\r\n jitsiError: action.jitsiError,\r\n };\r\n default:\r\n return state;\r\n }\r\n};\r\n","export default __webpack_public_path__ + \"static/media/Inter.aadb65ac.ttf\";","export default __webpack_public_path__ + \"static/media/Roboto-Regular.fc2b5060.ttf\";","import { createGlobalStyle } from 'styled-components';\r\nimport Inter from '../fonts/Inter.ttf';\r\nimport Roboto from '../fonts/Roboto-Regular.ttf';\r\n\r\nconst GlobalStyles = createGlobalStyle`\r\n/*\r\n @font-face {\r\n font-family: 'Inter';\r\n src: local('Inter'), url(${Inter}) format('truetype');\r\n }\r\n @font-face {\r\n font-family: 'Roboto';\r\n src: local('Roboto'), url(${Roboto}) format('truetype');\r\n }\r\n*/\r\n body {\r\n\r\n }\r\n\r\n @media screen and (max-width: 500px) {\r\n body {\r\n font-size: 0.8rem;\r\n }\r\n }\r\n\r\n .App {\r\n font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Inter', 'Roboto', 'Oxygen', 'Ubuntu', 'Cantarell', 'Fira Sans',\r\n 'Droid Sans', 'Helvetica Neue', sans-serif;\r\n -webkit-font-smoothing: antialiased;\r\n -moz-osx-font-smoothing: grayscale;\r\n }\r\n\r\n @media screen and (max-width: 500px) {\r\n .MuiStepLabel-label {\r\n font-size: 13px !important;\r\n }\r\n\r\n .nav-link {\r\n padding: 4px;\r\n }\r\n \r\n }\r\n #page-wrap {\r\n text-align: center;\r\n }\r\n`;\r\n\r\nexport default GlobalStyles;\r\n","import moment from 'moment';\r\nimport 'moment/locale/de';\r\nimport { useEffect, useReducer } from 'react';\r\nimport { useLocation, useNavigate } from 'react-router-dom';\r\nimport { ThemeProvider } from 'styled-components';\r\n// import 'typeface-roboto';\r\nimport ReactGA from 'react-ga4';\r\nimport AppRoutes, { Paths } from './Routes';\r\nimport { ErrorBoundary } from './components/ErrorBoundary/ErrorBoundary';\r\nimport AlertModal from './components/Modals/AlertModal/AlertModal';\r\nimport AlertContext, { AlertOnHide, AlertType, initialAlertState } from './context/alertContext';\r\nimport { alertReducer } from './context/alertReducer';\r\nimport AppPropsContext, { InitialAppPropsState } from './context/appPropsContext';\r\nimport { appPropsReducer } from './context/appPropsReducer';\r\nimport CheckInContext, { initialCheckInState } from './context/checkInContext';\r\nimport { checkinReducer } from './context/checkInReducer';\r\nimport DokumenteContext, { initialDokumenteState } from './context/dokumenteContext';\r\nimport { dokumenteReducer } from './context/dokumenteReducer';\r\nimport ExecuteRuleContext, { initialExecuteRuleState } from './context/executeRuleContext';\r\nimport { executeRuleReducer } from './context/executeRuleReducer';\r\nimport IFrameContext, { initialIFrameState } from './context/iframeContext';\r\nimport { iframeReducer } from './context/iframeReducer';\r\nimport LoginContext, { initialLoginState } from './context/loginContext';\r\nimport { loginReducer } from './context/loginReducer';\r\nimport QuestionnaireContext, { initialQuestionnaireState } from './context/questionnaireContext';\r\nimport { questionnaireReducer } from './context/questionnaireReducer';\r\nimport { sigpadReducer } from './context/sigPadReducer';\r\nimport SigPadContext, { initialSigPadState } from './context/sigpadContext';\r\nimport TerminierungContext, { initialTerminierungState } from './context/terminierungContext';\r\nimport { terminierungReducer } from './context/terminierungReducer';\r\nimport ThemeContext, { initialThemeState } from './context/themeContext';\r\nimport { themeReducer } from './context/themeReducer';\r\nimport VideochatContext, { initialVideochatState } from './context/videochatContext';\r\nimport { videochatReducer } from './context/videochatReducer';\r\nimport GlobalStyles from './globals/GlobalStyles';\r\nimport { getAppVersion, getThemeConfig } from './globals/global';\r\nimport { getTheme } from './globals/theme';\r\nimport { getAppProperties } from './services/RestServices';\r\nimport { showAlertMessage } from './utils/alertHandling';\r\nimport { setRuleProperties } from './utils/executeRuleUtils';\r\nimport { setDataFromAppProperties } from './utils/pcpUtils';\r\nimport { getQueryParams } from './utils/urlUtils';\r\n\r\ndeclare global {\r\n interface Window {\r\n app: any;\r\n }\r\n}\r\n\r\nwindow.app = window.app || {};\r\n\r\nfunction App() {\r\n const navigate = useNavigate();\r\n moment.locale('de');\r\n\r\n const [state, dispatch] = useReducer(loginReducer, initialLoginState);\r\n const [alertstate, alertdispatch] = useReducer(alertReducer, initialAlertState);\r\n const [vsstate, vsdispatch] = useReducer(videochatReducer, initialVideochatState);\r\n const [tmstate, tmdispatch] = useReducer(terminierungReducer, initialTerminierungState);\r\n const [docstate, docdispatch] = useReducer(dokumenteReducer, initialDokumenteState);\r\n const [qstate, qdispatch] = useReducer(questionnaireReducer, initialQuestionnaireState);\r\n const [apstate, apdispatch] = useReducer(appPropsReducer, InitialAppPropsState);\r\n const [themestate, themedispatch] = useReducer(themeReducer, initialThemeState);\r\n const [executerulestate, executeruledispatch] = useReducer(executeRuleReducer, initialExecuteRuleState);\r\n const [sigpadstate, sigpaddispatch] = useReducer(sigpadReducer, initialSigPadState);\r\n const [iframestate, iframedispatch] = useReducer(iframeReducer, initialIFrameState);\r\n const [checkinstate, checkindispatch] = useReducer(checkinReducer, initialCheckInState);\r\n\r\n const location = useLocation();\r\n\r\n const refreshPage = () => {\r\n window.location.reload();\r\n };\r\n\r\n const getProperties = async () => {\r\n const propRes = await getAppProperties();\r\n if (propRes) {\r\n setDataFromAppProperties(propRes, apdispatch);\r\n\r\n /* Google Analytics ID Init */\r\n if (propRes.googleAnalyticsID) {\r\n ReactGA.initialize(propRes.googleAnalyticsID);\r\n }\r\n } else {\r\n showAlertMessage({\r\n alertTitle: 'Fehler beim Laden der App',\r\n alertTxt:\r\n 'Die Seite konnte nicht geladen werden. Bitte versuchen Sie es zu einem späteren Zeitpunkt erneut.',\r\n alertType: AlertType.error,\r\n onHide: AlertOnHide.custom,\r\n onHideCustom: refreshPage,\r\n alertdispatch: alertdispatch,\r\n buttonName: 'Erneut versuchen',\r\n });\r\n }\r\n };\r\n\r\n useEffect(() => {\r\n /* AppProperties */\r\n getProperties();\r\n\r\n /* allow Vidochat messages */\r\n window.app.allowVideochatMessages = true;\r\n // const hashParams = getQueryParams(location.hash);\r\n const hashParams = getQueryParams(location.search);\r\n if (hashParams.type === 'Redirect') {\r\n if (state.redirectUser === '') {\r\n dispatch({\r\n type: 'SETREDIRECTUSER',\r\n redirectUser: hashParams.user,\r\n redirectPwd: hashParams.pwd,\r\n });\r\n // history.replace(Paths.HOME);\r\n navigate(Paths.HOME, { replace: true });\r\n }\r\n }\r\n if (hashParams.type === 'gdt') {\r\n if (hashParams.id && hashParams.id.length > 0) {\r\n dispatch({\r\n type: 'SETGDTDATA',\r\n gdt: {\r\n id: hashParams.id,\r\n },\r\n });\r\n }\r\n }\r\n if (location.hash.lastIndexOf('#/ExecuteRule') > -1) {\r\n if (hashParams.type === 'ExecuteRule') {\r\n setRuleProperties(hashParams, executeruledispatch);\r\n // history.replace(Paths.HOME);\r\n navigate(Paths.HOME, { replace: true });\r\n }\r\n }\r\n let theme = 'PCP';\r\n if (hashParams.theme) {\r\n const pTheme = hashParams.theme;\r\n if (pTheme.length > 0) {\r\n theme = pTheme;\r\n }\r\n } else {\r\n theme = getThemeConfig();\r\n }\r\n themedispatch({\r\n type: 'SETTHEME',\r\n theme: theme,\r\n });\r\n }, []);\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n
\r\n \r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n );\r\n}\r\n\r\nexport default App;\r\n","// tslint:disable:no-console\n// In production, we register a service worker to serve assets from local cache.\n\n// This lets the app load faster on subsequent visits in production, and gives\n// it offline capabilities. However, it also means that developers (and users)\n// will only see deployed updates on the 'N+1' visit to a page, since previously\n// cached resources are updated in the background.\n\n// To learn more about the benefits of this model, read https://goo.gl/KwvDNy.\n// This link also includes instructions on opting out of this behavior.\n\nconst isLocalhost = Boolean(\n window.location.hostname === 'localhost' ||\n // [::1] is the IPv6 localhost address.\n window.location.hostname === '[::1]' ||\n // 127.0.0.1/8 is considered localhost for IPv4.\n window.location.hostname.match(/^127(?:\\.(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)){3}$/),\n);\n\nexport default function register() {\n if ('serviceWorker' in navigator) {\n // The URL constructor is available in all browsers that support SW.\n const publicUrl = new URL(process.env.PUBLIC_URL!, window.location.toString());\n if (publicUrl.origin !== window.location.origin) {\n // Our service worker won't work if PUBLIC_URL is on a different origin\n // from what our page is served on. This might happen if a CDN is used to\n // serve assets; see https://github.com/facebookincubator/create-react-app/issues/2374\n return;\n }\n\n window.addEventListener('load', () => {\n const swUrl = `${process.env.PUBLIC_URL}/service-worker.js`;\n\n if (isLocalhost) {\n // This is running on localhost. Lets check if a service worker still exists or not.\n checkValidServiceWorker(swUrl);\n\n // Add some additional logging to localhost, pointing developers to the\n // service worker/PWA documentation.\n navigator.serviceWorker.ready.then(() => {\n console.log(\n 'This web app is being served cache-first by a service ' +\n 'worker. To learn more, visit https://goo.gl/SC7cgQ',\n );\n });\n } else {\n // Is not local host. Just register service worker\n registerValidSW(swUrl);\n }\n });\n }\n}\n\nfunction registerValidSW(swUrl: string) {\n navigator.serviceWorker\n .register(swUrl)\n .then((registration) => {\n registration.onupdatefound = () => {\n const installingWorker = registration.installing;\n if (installingWorker) {\n installingWorker.onstatechange = () => {\n if (installingWorker.state === 'installed') {\n if (navigator.serviceWorker.controller) {\n // At this point, the old content will have been purged and\n // the fresh content will have been added to the cache.\n // It's the perfect time to display a 'New content is\n // available; please refresh.' message in your web app.\n console.log('New content is available; please refresh.');\n } else {\n // At this point, everything has been precached.\n // It's the perfect time to display a\n // 'Content is cached for offline use.' message.\n console.log('Content is cached for offline use.');\n }\n }\n };\n }\n };\n })\n .catch((error) => {\n console.error('Error during service worker registration:', error);\n });\n}\n\nfunction checkValidServiceWorker(swUrl: string) {\n // Check if the service worker can be found. If it can't reload the page.\n fetch(swUrl)\n .then((response) => {\n // Ensure service worker exists, and that we really are getting a JS file.\n if (response.status === 404 || response.headers.get('content-type')!.indexOf('javascript') === -1) {\n // No service worker found. Probably a different app. Reload the page.\n navigator.serviceWorker.ready.then((registration) => {\n registration.unregister().then(() => {\n window.location.reload();\n });\n });\n } else {\n // Service worker found. Proceed as normal.\n registerValidSW(swUrl);\n }\n })\n .catch(() => {\n console.log('No internet connection found. App is running in offline mode.');\n });\n}\n\nexport function unregister() {\n if ('serviceWorker' in navigator) {\n navigator.serviceWorker.ready.then((registration) => {\n registration.unregister();\n });\n }\n}\n","import 'bootstrap/dist/css/bootstrap.min.css';\r\nimport { StrictMode } from 'react';\r\nimport ReactDOM from 'react-dom';\r\nimport { HashRouter } from 'react-router-dom';\r\nimport App from './App';\r\nimport * as serviceWorker from './serviceWorker';\r\n\r\nReactDOM.render(\r\n \r\n \r\n \r\n \r\n ,\r\n document.getElementById('root'),\r\n);\r\n\r\n// If you want your app to work offline and load faster, you can change\r\n// unregister() to register() below. Note this comes with some pitfalls.\r\n// Learn more about service workers: https://bit.ly/CRA-PWA\r\nserviceWorker.unregister();\r\n","import moment from 'moment';\r\nimport * as React from 'react';\r\nimport { IAuthData } from '../../container/CheckIn/CheckInWL';\r\nimport { AlertOnHide, AlertType } from '../../context/alertContext';\r\nimport { InitialLoginType } from '../../context/loginContext';\r\nimport { IExtension } from '../../context/questionnaireContext';\r\nimport { responseErrorHandling } from '../../utils/errorHandling';\r\nimport { IFile } from '../../utils/fileUtils';\r\nimport { IPhoto } from '../../utils/photoUtils';\r\nimport { getFHIRConfig } from './fhirConstants';\r\n\r\nconst fhir = require('fhir.js');\r\n\r\nconst DIAGNOSTIC_REPORT = 'DiagnosticReport';\r\n\r\nexport interface IDRResource {\r\n effectiveDateTime: string;\r\n status: string;\r\n category: {\r\n coding: [\r\n {\r\n code: string;\r\n display: string;\r\n system: string;\r\n },\r\n ];\r\n };\r\n code: {\r\n coding: [\r\n {\r\n code: string;\r\n display: string;\r\n system: string;\r\n },\r\n ];\r\n };\r\n context: {\r\n reference: string;\r\n };\r\n id: string;\r\n basedOn: [\r\n {\r\n reference: string;\r\n },\r\n ];\r\n extension: IExtension[];\r\n}\r\n\r\nexport interface IDRDataEntry {\r\n resource: IDRResource;\r\n}\r\n\r\nexport const getDiagnosticReportsOfPatient = async (state: InitialLoginType, alertdispatch: React.Dispatch) => {\r\n return await fhir(getFHIRConfig(state.sessionId))\r\n .search({\r\n type: DIAGNOSTIC_REPORT,\r\n query: {\r\n patient: 'Patient/' + state.activeUserId,\r\n // _sort: '-date',\r\n },\r\n })\r\n .catch(function (e: any) {\r\n responseErrorHandling({\r\n response: e,\r\n alertdispatch: alertdispatch,\r\n });\r\n });\r\n};\r\n\r\nexport const getDiagnosticReportsByCategory = async (\r\n state: InitialLoginType,\r\n category: string,\r\n alertdispatch: React.Dispatch,\r\n) => {\r\n return await fhir(getFHIRConfig(state.sessionId))\r\n .search({\r\n type: DIAGNOSTIC_REPORT,\r\n query: {\r\n patient: 'Patient/' + state.activeUserId,\r\n category: category,\r\n _targetDevice: 'WEB',\r\n // _sort: '-date',\r\n },\r\n })\r\n .catch(function (e: any) {\r\n responseErrorHandling({\r\n response: e,\r\n alertdispatch: alertdispatch,\r\n });\r\n });\r\n};\r\n\r\nexport const getDiagnosticReport = async (sessionId: string, documentId: string, authData?: IAuthData) => {\r\n if (authData) {\r\n const myAuthData = 'PCP ' + authData.otp + '&t0=' + authData.t0 + '&userId=' + authData.userId;\r\n return await fhir(getFHIRConfig(myAuthData)).read({\r\n type: DIAGNOSTIC_REPORT,\r\n id: documentId,\r\n });\r\n } else {\r\n return await fhir(getFHIRConfig(sessionId)).read({\r\n type: DIAGNOSTIC_REPORT,\r\n id: documentId,\r\n });\r\n }\r\n};\r\n\r\n/* not used yet, but can be used if we want to group the documents in day sections */\r\nexport const getSectionedReports = (reports: IDRDataEntry[]) => {\r\n const result: any[] = [];\r\n\r\n const reportsMap = new Map();\r\n\r\n reports?.map((report) => {\r\n const date = moment(report.resource.effectiveDateTime).format('DD.MM.YYYY');\r\n\r\n let arr = reportsMap.get(date);\r\n if (arr) {\r\n arr.push(report.resource);\r\n } else {\r\n arr = [report.resource];\r\n }\r\n reportsMap.set(date, arr);\r\n });\r\n\r\n const mapIter = reportsMap[Symbol.iterator]();\r\n\r\n for (const item of mapIter) {\r\n result.push({ key: item[0], data: item[1] });\r\n }\r\n\r\n return result;\r\n};\r\n\r\nexport const uploadPDF = async (\r\n state: InitialLoginType,\r\n file: IFile,\r\n title: string,\r\n conclusion: string,\r\n alertdispatch: React.Dispatch,\r\n) => {\r\n const dataTrim = file.data.split('base64,')[1];\r\n\r\n const dataResource = {\r\n resourceType: DIAGNOSTIC_REPORT,\r\n subject: { reference: 'Patient/' + state.activeUserId },\r\n conclusion: conclusion,\r\n effectiveDateTime: new Date(),\r\n presentedForm: [\r\n {\r\n contentType: 'application/pdf',\r\n data: dataTrim,\r\n title: title,\r\n },\r\n ],\r\n };\r\n\r\n return await fhir(getFHIRConfig(state.sessionId))\r\n .create({\r\n resource: dataResource,\r\n })\r\n .catch(function (e: any) {\r\n responseErrorHandling({\r\n response: e,\r\n alertdispatch: alertdispatch,\r\n alertMessage: {\r\n alertTitle: 'Upload PDF',\r\n alertTxt: 'Upload Fehler:' + e.status,\r\n alertType: AlertType.error,\r\n onHide: AlertOnHide.onlyClose,\r\n },\r\n });\r\n // console.log('An error happened while uploadPDF: \\n', e);\r\n });\r\n};\r\n\r\nexport const sendPhotoDiagnosticReport = async (\r\n state: InitialLoginType,\r\n imageArr: IPhoto[],\r\n alertdispatch: React.Dispatch,\r\n) => {\r\n const userId = state.activeUserId;\r\n const sessionId = state.sessionId;\r\n\r\n const presentedForm: any[] = [];\r\n\r\n imageArr.forEach((img: IPhoto, index: number) => {\r\n let name = 'Bild ' + index;\r\n let contentType = 'image/jpeg';\r\n if (img.name && img.name.length > 0) {\r\n name = img.name;\r\n }\r\n if (img.type && img.type.length > 0) {\r\n contentType = img.type;\r\n }\r\n presentedForm.push({\r\n contentType: contentType,\r\n data: img.data,\r\n title: name,\r\n });\r\n });\r\n\r\n const photoResource = {\r\n resourceType: DIAGNOSTIC_REPORT,\r\n meta: { versionId: '1', lastUpdated: new Date() },\r\n status: 'final',\r\n category: {\r\n coding: [{ system: 'http://www.principa.com', code: 'CD', display: 'CommonData' }],\r\n },\r\n code: {\r\n coding: [\r\n {\r\n system: 'http://www.principa.com',\r\n code: 'PHOTODOK',\r\n display: 'Fotodokumentation',\r\n },\r\n ],\r\n },\r\n subject: { reference: 'Patient/' + userId },\r\n effectiveDateTime: new Date(),\r\n context: { reference: 'Encounter/' + userId + (state.encounterId ? '_' + state.encounterId : '_null') },\r\n presentedForm,\r\n };\r\n\r\n return await fhir(getFHIRConfig(sessionId))\r\n .create({\r\n resource: photoResource,\r\n })\r\n .catch(function (e: { status: string }) {\r\n responseErrorHandling({\r\n response: e,\r\n alertdispatch: alertdispatch,\r\n alertMessage: {\r\n alertTitle: 'Fotodokumentation',\r\n alertTxt: 'Fotodokumentation senden Fehler:' + e.status,\r\n alertType: AlertType.error,\r\n onHide: AlertOnHide.onlyClose,\r\n },\r\n });\r\n });\r\n};\r\n","import * as React from 'react';\r\nimport styled from 'styled-components';\r\nimport useScreenResolution from '../../hooks/useScreenResolution';\r\nimport { ParagraphFontSize } from '../StyledParagraph/StyledParagraph';\r\n\r\ninterface IDiv {\r\n divWidth?: string;\r\n borderRight?: string;\r\n divTop?: string;\r\n margin?: string;\r\n marginTop?: string;\r\n marginBottom?: string;\r\n marginLeft?: string;\r\n marginRight?: string;\r\n paddingTop?: string;\r\n paddingBottom?: string;\r\n paddingLeft?: string;\r\n paddingRight?: string;\r\n height?: string;\r\n textAlign?: string;\r\n color?: string;\r\n overflowX?: string;\r\n overflowY?: string;\r\n backgroundColor?: string;\r\n zIndex?: number;\r\n position?: string;\r\n bottom?: string;\r\n top?: string;\r\n left?: string;\r\n right?: string;\r\n maxHeight?: string;\r\n borderRadius?: string;\r\n lineHeight?: string;\r\n fontSize?: ParagraphFontSize | string;\r\n}\r\n\r\ninterface IDivSplit {\r\n height?: string;\r\n width?: string;\r\n paddingTop?: string;\r\n backgroundColor?: string;\r\n}\r\n\r\nexport const LeftDiv = styled.div`\r\n text-align: left;\r\n margin-top: ${(prop) => (prop.marginTop ? prop.marginTop : '0px')};\r\n margin-bottom: ${(prop) => (prop.marginBottom ? prop.marginBottom : '0px')};\r\n margin-left: ${(prop) => (prop.marginLeft ? prop.marginLeft : '0px')};\r\n margin-right: ${(prop) => (prop.marginRight ? prop.marginRight : '0px')};\r\n`;\r\n\r\nexport const LeftDivMain = styled.div`\r\n text-align: left;\r\n margin-top: ${(prop) => (prop.marginTop ? prop.marginTop : '0px')};\r\n margin-bottom: ${(prop) => (prop.marginBottom ? prop.marginBottom : '0px')};\r\n margin-right: ${(prop) => (prop.marginRight ? prop.marginRight : '0px')};\r\n margin-left: 100px;\r\n @media only screen and (max-width: 800px) {\r\n margin-left: 60px;\r\n }\r\n @media only screen and (max-width: 500px) {\r\n margin-left: 0px;\r\n }\r\n`;\r\nexport const AnmeldBaseDiv = styled.div`\r\n text-align: left;\r\n margin-left: ${(prop) => (prop.marginLeft ? prop.marginLeft : '50px')};\r\n margin-right: ${(prop) => (prop.marginRight ? prop.marginRight : '50px')};\r\n @media only screen and (max-width: 800px) {\r\n margin-left: 25px;\r\n margin-right: 25px;\r\n }\r\n @media only screen and (max-width: 500px) {\r\n margin-left: 0px;\r\n margin-right: 0px;\r\n }\r\n`;\r\n\r\nexport const AnmeldBaseHeader = styled.div`\r\n position: sticky;\r\n z-index: 30;\r\n background-color: white;\r\n top: 190px;\r\n @media only screen and (max-width: 800px) {\r\n top: 170px;\r\n }\r\n @media only screen and (max-height: 700px) {\r\n top: 140px;\r\n }\r\n @media only screen and (max-height: 500px) {\r\n top: 60px;\r\n }\r\n`;\r\n\r\nexport const AnmeldBaseHeaderLogin = styled.div`\r\n position: sticky;\r\n z-index: 30;\r\n background-color: white;\r\n top: 120px;\r\n @media only screen and (max-width: 800px) {\r\n top: 150px;\r\n }\r\n @media only screen and (max-height: 500px) {\r\n top: 200px;\r\n }\r\n`;\r\n\r\nexport const LeftDivCheckIn = styled.div`\r\n text-align: left;\r\n margin-top: ${(prop) => (prop.marginTop ? prop.marginTop : '0px')};\r\n margin-bottom: ${(prop) => (prop.marginBottom ? prop.marginBottom : '0px')};\r\n margin-left: 100px;\r\n margin-right: 100px;\r\n @media only screen and (max-width: 800px) {\r\n margin-left: 25px;\r\n margin-right: 25px;\r\n }\r\n @media only screen and (max-width: 500px) {\r\n margin-left: 0px;\r\n margin-right: 0px;\r\n }\r\n`;\r\n\r\nexport const RightDiv = styled.div`\r\n text-align: right;\r\n margin-top: ${(prop) => (prop.marginTop ? prop.marginTop : '0px')};\r\n margin-bottom: ${(prop) => (prop.marginBottom ? prop.marginBottom : '0px')};\r\n margin-left: ${(prop) => (prop.marginLeft ? prop.marginLeft : '0px')};\r\n margin-right: ${(prop) => (prop.marginRight ? prop.marginRight : '0px')};\r\n`;\r\n\r\nexport const CenterDiv = styled.div`\r\n text-align: center;\r\n height: ${(prop) => (prop.height ? prop.height : null)};\r\n margin: ${(prop) => (prop.margin ? prop.margin : null)};\r\n margin-top: ${(prop) => (prop.marginTop ? prop.marginTop : '0px')};\r\n margin-bottom: ${(prop) => (prop.marginBottom ? prop.marginBottom : '0px')};\r\n margin-left: ${(prop) => (prop.marginLeft ? prop.marginLeft : '0px')};\r\n margin-right: ${(prop) => (prop.marginRight ? prop.marginRight : '0px')};\r\n padding-top: ${(prop) => (prop.paddingTop ? prop.paddingTop : null)};\r\n padding-bottom: ${(prop) => (prop.paddingBottom ? prop.paddingBottom : null)};\r\n padding-left: ${(prop) => (prop.paddingLeft ? prop.paddingLeft : null)};\r\n padding-right: ${(prop) => (prop.paddingRight ? prop.paddingRight : null)};\r\n overflow-x: ${(prop) => (prop.overflowX ? prop.overflowX : null)};\r\n overflow-y: ${(prop) => (prop.overflowY ? prop.overflowY : null)};\r\n color: ${(prop) => (prop.color ? prop.color : 'black')};\r\n background-color: ${(prop) => (prop.backgroundColor ? prop.backgroundColor : null)};\r\n z-index: ${(prop) => (prop.zIndex ? prop.zIndex : null)};\r\n position: ${(prop) => (prop.position ? prop.position : null)};\r\n bottom: ${(prop) => (prop.bottom ? prop.bottom : null)};\r\n top: ${(prop) => (prop.top ? prop.top : null)};\r\n right: ${(prop) => (prop.right ? prop.right : null)};\r\n left: ${(prop) => (prop.left ? prop.left : null)};\r\n max-height: ${(prop) => (prop.maxHeight ? prop.maxHeight : null)};\r\n font-size: ${(prop) => (prop.fontSize ? prop.fontSize : null)};\r\n`;\r\n\r\nexport const CheckInCenterDiv = styled.div`\r\n text-align: center;\r\n height: ${(prop) => (prop.height ? prop.height : null)};\r\n margin: ${(prop) => (prop.margin ? prop.margin : null)};\r\n margin-top: ${(prop) => (prop.marginTop ? prop.marginTop : '10px')};\r\n margin-bottom: ${(prop) => (prop.marginBottom ? prop.marginBottom : '10px')};\r\n margin-left: ${(prop) => (prop.marginLeft ? prop.marginLeft : '30px')};\r\n margin-right: ${(prop) => (prop.marginRight ? prop.marginRight : '30px')};\r\n padding-top: ${(prop) => (prop.paddingTop ? prop.paddingTop : '10px')};\r\n padding-bottom: ${(prop) => (prop.paddingBottom ? prop.paddingBottom : '10px')};\r\n padding-left: ${(prop) => (prop.paddingLeft ? prop.paddingLeft : null)};\r\n padding-right: ${(prop) => (prop.paddingRight ? prop.paddingRight : null)};\r\n overflow-x: ${(prop) => (prop.overflowX ? prop.overflowX : null)};\r\n overflow-y: ${(prop) => (prop.overflowY ? prop.overflowY : null)};\r\n color: ${(prop) => (prop.color ? prop.color : 'black')};\r\n background-color: ${(prop) => (prop.backgroundColor ? prop.backgroundColor : 'lightgray')};\r\n z-index: ${(prop) => (prop.zIndex ? prop.zIndex : null)};\r\n position: ${(prop) => (prop.position ? prop.position : null)};\r\n bottom: ${(prop) => (prop.bottom ? prop.bottom : null)};\r\n top: ${(prop) => (prop.top ? prop.top : null)};\r\n right: ${(prop) => (prop.right ? prop.right : null)};\r\n left: ${(prop) => (prop.left ? prop.left : null)};\r\n max-height: ${(prop) => (prop.maxHeight ? prop.maxHeight : null)};\r\n font-size: ${(prop) => (prop.fontSize ? prop.fontSize : null)};\r\n`;\r\n\r\nexport const StickyHeaderTitleDiv = styled.div`\r\n position: -webkit-sticky;\r\n position: sticky;\r\n top: 0px;\r\n z-index: 20;\r\n height: 57px;\r\n background-color: ${(props) =>\r\n props.backgroundColor ? props.backgroundColor : props.theme.header.main.backgroundColor};\r\n padding-top: ${(prop) => (prop.paddingTop ? prop.paddingTop : '0px')};\r\n`;\r\n\r\nexport const StickyStepperWithNavbar = styled.div`\r\n position: -webkit-sticky;\r\n position: sticky;\r\n top: 0px;\r\n z-index: 30;\r\n height: 190px;\r\n @media only screen and (max-width: 800px) {\r\n height: 170px;\r\n }\r\n @media only screen and (max-height: 700px) {\r\n height: 140px;\r\n }\r\n background-color: ${(props) => (props.backgroundColor ? props.backgroundColor : 'white')};\r\n padding-top: ${(prop) => (prop.paddingTop ? prop.paddingTop : '0px')};\r\n`;\r\n\r\nexport const StickyStepperDiv = styled.div`\r\n position: -webkit-sticky;\r\n position: sticky;\r\n top: 0px;\r\n z-index: 30;\r\n height: 120px;\r\n @media only screen and (max-width: 800px) {\r\n height: 150px;\r\n }\r\n @media only screen and (max-height: 500px) {\r\n height: 200px;\r\n }\r\n background-color: ${(props) => (props.backgroundColor ? props.backgroundColor : 'white')};\r\n padding-top: ${(prop) => (prop.paddingTop ? prop.paddingTop : '0px')};\r\n`;\r\n\r\nexport const StickyButtonRowBottomDiv = styled.div`\r\n position: -webkit-sticky;\r\n position: sticky;\r\n bottom: 0px;\r\n z-index: 20;\r\n height: 100px;\r\n padding-top: ${(prop) => (prop.paddingTop ? prop.paddingTop : '0px')};\r\n margin-top: ${(prop) => (prop.marginTop ? prop.marginTop : '10px')};\r\n background-color: white;\r\n`;\r\n\r\nexport const StickyStepperRowDiv = styled.div`\r\n position: -webkit-sticky;\r\n position: sticky;\r\n top: 0px;\r\n z-index: 20;\r\n height: 57px;\r\n background-color: white;\r\n padding-top: 0px;\r\n margin-bottom: 70px;\r\n`;\r\n\r\nexport const StickyHeaderTabsDiv = styled.div`\r\n position: -webkit-sticky;\r\n position: sticky;\r\n top: 55px;\r\n z-index: 30;\r\n /* height: 65px; */\r\n padding-top: 20px;\r\n background-color: ${(props) => props.theme.mainColor};\r\n background-image: ${(props) => props.theme.tabcontainer.backgroundImage};\r\n height: ${(prop) => (prop.height ? prop.height : 'auto')};\r\n border-radius: 10px;\r\n`;\r\n\r\nexport const StickyTagesplanSectionDiv = styled.div`\r\n position: -webkit-sticky;\r\n position: sticky;\r\n top: 55px;\r\n z-index: 20;\r\n height: 57px;\r\n background-color: ${(props) => props.theme.mainColor};\r\n background-image: ${(props) => props.theme.tabcontainer.backgroundImage};\r\n border-radius: 10px;\r\n padding-top: ${(prop) => (prop.paddingTop ? prop.paddingTop : '0px')};\r\n`;\r\n\r\nexport const VerticalCenterDiv = styled.div`\r\n width: 100%;\r\n position: absolute;\r\n top: ${(prop) => (prop.divTop ? prop.divTop : '50%')};\r\n left: 50%;\r\n transform: translate(-50%, -50%);\r\n border-right: ${(prop) => (prop.borderRight ? prop.borderRight : 'none')};\r\n`;\r\n\r\nexport const VerticalCenterFlexDiv = styled.div`\r\n display: flex;\r\n align-items: center;\r\n font-size: ${(prop) => (prop.fontSize ? prop.fontSize : null)};\r\n width: ${(prop) => (prop.divWidth ? prop.divWidth : null)};\r\n`;\r\n\r\nexport const IconDiv = styled.div`\r\n width: ${(prop) => (prop.divWidth ? prop.divWidth : 'auto')};\r\n margin-left: ${(prop) => (prop.marginLeft ? prop.marginLeft : '0px')};\r\n margin-right: ${(prop) => (prop.marginRight ? prop.marginRight : '0px')};\r\n &:hover {\r\n background-color: ${(props) => props.theme.icon.default.backgroundColorHover};\r\n border-radius: ${(props) => (props.borderRadius ? props.borderRadius : props.theme.borderRadius)};\r\n }\r\n`;\r\n\r\nexport const MainHeaderButtonIcon = styled.div`\r\n width: ${(prop) => (prop.divWidth ? prop.divWidth : 'auto')};\r\n margin-left: 20px;\r\n margin-right: 20px;\r\n &:hover {\r\n background-color: ${(props) => props.theme.icon.default.backgroundColorHover};\r\n border-radius: ${(props) => (props.borderRadius ? props.borderRadius : props.theme.borderRadius)};\r\n }\r\n padding: 3px;\r\n`;\r\n\r\nexport const BreakFlexDiv = styled.div`\r\n flex-basis: 100%;\r\n height: 0;\r\n`;\r\n\r\nexport const ChartInnerDiv = styled.div`\r\n position: absolute;\r\n width: 110%;\r\n padding-top: 5px;\r\n overflow: hidden;\r\n margin-right: -100px;\r\n`;\r\n\r\nexport const ChartOuterDiv = styled.div`\r\n position: relative;\r\n height: 500px;\r\n width: 95%;\r\n overflow: hidden;\r\n`;\r\n\r\nexport const NewMessageBadgeDiv = styled.div`\r\n position: absolute;\r\n top: 45px;\r\n background-color: ${(props) => props.theme.selectButton.backgroundColorActive};\r\n width: 20px;\r\n height: 20px;\r\n padding: 2px;\r\n border-radius: 50%;\r\n text-align: center;\r\n font-size: 0.8rem;\r\n font-weight: bold;\r\n`;\r\n\r\nexport const MailParentDiv = styled.div`\r\n height: ${(prop) => (prop.height ? prop.height : '700px')};\r\n margin-top: 10px;\r\n overflow: hidden;\r\n`;\r\n\r\nexport const MailListDiv = styled.div`\r\n position: relative;\r\n height: ${(prop) => (prop.height ? prop.height : '50%')};\r\n margin-top: 10px;\r\n margin-bottom: 20px;\r\n overflow-x: hidden;\r\n overflow-y: scroll;\r\n`;\r\n\r\nexport const MailContentDiv = styled.div`\r\n position: -webkit-sticky;\r\n position: sticky;\r\n z-index: 20;\r\n height: 53%;\r\n border-style: solid;\r\n border-width: thin;\r\n overflow-y: scroll;\r\n overflow-x: hidden;\r\n`;\r\n\r\nexport const MailContentHeaderDiv = styled.div`\r\n position: -webkit-sticky;\r\n position: sticky;\r\n top: 0;\r\n z-index: 20;\r\n text-align: left;\r\n background-color: white;\r\n`;\r\n\r\nexport const SplitLeftDiv = styled.div`\r\n height: ${(prop) => (prop.height ? prop.height : '100%')};\r\n width: ${(prop) => (prop.width ? prop.width : '50%')};\r\n position: fixed;\r\n z-index: 1;\r\n top: 0;\r\n overflow-x: hidden;\r\n overflow-y: hidden;\r\n padding-top: ${(prop) => (prop.paddingTop ? prop.paddingTop : '20px')};\r\n left: 0;\r\n background-color: ${(prop) => (prop.backgroundColor ? prop.backgroundColor : 'white')};\r\n`;\r\n\r\nexport const SplitRightDiv = styled.div`\r\n height: ${(prop) => (prop.height ? prop.height : '100%')};\r\n width: ${(prop) => (prop.width ? prop.width : '50%')};\r\n position: fixed;\r\n z-index: 1;\r\n top: 0;\r\n overflow-x: hidden;\r\n padding-top: ${(prop) => (prop.paddingTop ? prop.paddingTop : '0px')};\r\n right: 0;\r\n background-color: ${(prop) => (prop.backgroundColor ? prop.backgroundColor : 'white')};\r\n`;\r\n\r\nexport const StyledStepperContentDiv = styled.div`\r\n margin-left: ${(prop) => (prop.marginLeft ? prop.marginLeft : '120px')};\r\n margin-right: ${(prop) => (prop.marginRight ? prop.marginRight : '120px')};\r\n`;\r\n\r\nexport const StepperContentDiv = ({ children }: React.PropsWithChildren) => {\r\n const screenSize = useScreenResolution();\r\n let marginLeft = '200px';\r\n let marginRight = '200px';\r\n\r\n if (screenSize.width < 1430) {\r\n marginLeft = '30px';\r\n marginRight = '30px';\r\n }\r\n return (\r\n \r\n {children}\r\n \r\n );\r\n};\r\n\r\nexport const EncounterDiv = styled.div`\r\n text-align: left;\r\n font-weight: bold;\r\n padding-top: 6px;\r\n margin-right: 10px;\r\n`;\r\n\r\nexport const EmbeddedPDFContainer = styled.div`\r\n /*\r\n position: fixed;\r\n top: 80px;\r\n*/\r\n position: relative;\r\n margin-top: 5px;\r\n left: 50%;\r\n transform: translate(-50%, 0%);\r\n z-index: 20;\r\n height: 90%;\r\n width: 100%;\r\n overflow-y: scroll;\r\n overflow-x: hidden;\r\n ::-webkit-scrollbar {\r\n display: none;\r\n }\r\n -ms-overflow-style: none;\r\n scrollbar-width: none;\r\n`;\r\n\r\nexport const EmbeddedPDFFooter = styled.div`\r\n /* width: 400px;\r\n position: -webkit-sticky;\r\n position: sticky;\r\n bottom: 5px;\r\n padding: 5px;\r\n left: 50%;\r\n background: white;\r\n opacity: 95%;\r\n transform: translateX(-50%);\r\n transition: opacity ease-in-out 0.2s;\r\n box-shadow: 0 30px 40px 0 rgba(16, 36, 94, 0.2);\r\n border-radius: 4px; */\r\n position: sticky;\r\n bottom: 20px;\r\n margin-left: auto;\r\n margin-right: auto;\r\n justify-content: center;\r\n z-index: 100;\r\n`;\r\n\r\nexport const EmbeddedPDFHeader = styled.div`\r\n position: -webkit-sticky;\r\n position: sticky;\r\n top: 30px;\r\n z-index: 50;\r\n`;\r\n\r\nexport const EmbeddedPDFContent = styled.div`\r\n position: relative;\r\n display: flex;\r\n margin-left: auto;\r\n margin-right: auto;\r\n justify-content: center;\r\n`;\r\n\r\nexport const EmbeddedSignDocumentModalContainer = styled.div``;\r\n\r\nexport const SpaceBetweenDiv = styled.div`\r\n display: flex;\r\n justify-content: space-between;\r\n flex-direction: 'row';\r\n line-height: ${(prop) => (prop.lineHeight ? prop.lineHeight : null)};\r\n margin-top: ${(prop) => (prop.marginTop ? prop.marginTop : null)};\r\n margin-bottom: ${(prop) => (prop.marginBottom ? prop.marginBottom : null)};\r\n margin-left: ${(prop) => (prop.marginLeft ? prop.marginLeft : null)};\r\n margin-right: ${(prop) => (prop.marginRight ? prop.marginRight : null)};\r\n`;\r\n\r\nexport const ImpressumBottom = styled.div`\r\n position: fixed;\r\n background-color: white;\r\n bottom: 0;\r\n width: 100%;\r\n z-index: 50;\r\n height: 2em;\r\n text-align: center;\r\n font-size: ${(prop) => (prop.fontSize ? prop.fontSize : null)};\r\n`;\r\n\r\nexport const ContentWithoutImpressum = styled.div`\r\n margin-bottom: 2em;\r\n height: calc(100vh - 2em);\r\n overflow: auto;\r\n box-sizing: border-box;\r\n`;\r\n\r\nexport const CenterPositionFixedDiv = styled.div`\r\n position: fixed;\r\n top: 50%;\r\n left: 50%;\r\n transform: translate(-50%, -50%);\r\n`;\r\n","import { useCallback, useContext } from 'react';\r\nimport { ThemeContext } from 'styled-components';\r\nimport AppPropsContext from '../context/appPropsContext';\r\nimport { getAppProperties } from '../services/RestServices';\r\nimport { setDataFromAppProperties } from '../utils/pcpUtils';\r\nimport useScreenResolution from './useScreenResolution';\r\n\r\nexport const useAppProperties = () => {\r\n const { apstate, apdispatch } = useContext(AppPropsContext);\r\n\r\n const themeContext = useContext(ThemeContext);\r\n\r\n const screenSize = useScreenResolution();\r\n\r\n const getAndSetAppProperties = useCallback(async () => {\r\n const propRes = await getAppProperties();\r\n if (propRes) {\r\n setDataFromAppProperties(propRes, apdispatch);\r\n } else {\r\n // setError(true); //TODO: add error handling\r\n }\r\n }, [apdispatch]);\r\n\r\n const getImpressum = () => {\r\n const impressum = {\r\n impressumLink: apstate.impressum.impressumLink,\r\n datenschutzLink: apstate.impressum.datenschutzLink,\r\n textColor: themeContext.button.secondary.color,\r\n };\r\n return impressum;\r\n };\r\n\r\n const getCountDaysToVisualize = () => {\r\n const MAX_DAYS_SMALL_DEVICES = 3;\r\n const MAX_SCREEN_WIDTH_SMALL_DEVICES = 414;\r\n if (!apstate.countDaysToVisualize) {\r\n return 0;\r\n } else if (screenSize.width > MAX_SCREEN_WIDTH_SMALL_DEVICES) {\r\n return apstate.countDaysToVisualize;\r\n } else if (apstate.countDaysToVisualize && apstate.countDaysToVisualize < MAX_DAYS_SMALL_DEVICES) {\r\n return apstate.countDaysToVisualize;\r\n } else {\r\n return MAX_DAYS_SMALL_DEVICES;\r\n }\r\n };\r\n\r\n /**\r\n * use extendedPhysicians in Booking (physicians and timeslots in one step)\r\n *\r\n * @returns true if extendedPhysicians is true and countDaysToVisualize is greater than 0\r\n */\r\n const isExtendedPhysicians = () => {\r\n if (\r\n apstate.extendedPhysicians &&\r\n apstate.extendedPhysicians === true &&\r\n apstate.countDaysToVisualize &&\r\n apstate.countDaysToVisualize > 0\r\n ) {\r\n return true;\r\n }\r\n\r\n return false;\r\n };\r\n\r\n const isFullscreenMode = () => {\r\n return apstate.fullscreenMode;\r\n };\r\n\r\n const enableFullscreenMode = () => {\r\n apdispatch({ type: 'SET_FULLSCREEN_MODE', fullscreenMode: true });\r\n };\r\n\r\n const disableFullscreenMode = () => {\r\n apdispatch({ type: 'SET_FULLSCREEN_MODE', fullscreenMode: false });\r\n };\r\n\r\n return {\r\n getAndSetAppProperties,\r\n getImpressum,\r\n isExtendedPhysicians,\r\n isFullscreenMode,\r\n enableFullscreenMode,\r\n disableFullscreenMode,\r\n getCountDaysToVisualize,\r\n };\r\n};\r\n","import { createContext } from 'react';\r\n\r\nexport interface IQData {\r\n entry: IQDataEntry[];\r\n id: string;\r\n resourceType: string;\r\n type: string;\r\n}\r\n\r\nexport interface IQDataEntry {\r\n resource: IQResource[];\r\n}\r\n\r\nexport interface IQResource {\r\n id: string;\r\n item: IQMainItem[];\r\n name: string;\r\n resourceType: string;\r\n title: string;\r\n extension: IExtension[];\r\n status?: string;\r\n}\r\n\r\nexport interface IQBody {\r\n authored: string;\r\n context: {\r\n reference: string;\r\n };\r\n id: string;\r\n identifier: {\r\n system: string;\r\n value: string;\r\n };\r\n item: IQAnswers[];\r\n meta: {\r\n versionId: string;\r\n lastUpdated: string;\r\n };\r\n questionnaire: {\r\n reference: string;\r\n };\r\n resourceType: string;\r\n source: {\r\n reference: string;\r\n };\r\n status: string;\r\n subject: {\r\n reference: string;\r\n };\r\n}\r\n\r\nexport interface IExtension {\r\n url: string;\r\n valueString: string;\r\n valueBoolean?: boolean;\r\n valueReference: {\r\n reference: string;\r\n };\r\n}\r\n\r\nexport interface IQMainItem {\r\n item: IQItem[];\r\n linkId: string;\r\n text: string;\r\n type: string;\r\n}\r\n\r\nexport interface IAttachment {\r\n contentType: string;\r\n data: string;\r\n}\r\n\r\nexport interface IQItem {\r\n linkId: string;\r\n text: string;\r\n type: string;\r\n initialDate?: string;\r\n initialTime?: string;\r\n initialDateTime?: string;\r\n initialInteger?: string;\r\n initialCoding?: IQItemInitialChoiceOption;\r\n initialString?: string;\r\n initialAttachment?: IAttachment;\r\n modifierExtension?: IQItemExtension[];\r\n option?: IQItemChoiceOption[];\r\n extension?: IQItemExtension[];\r\n required?: boolean;\r\n enableWhen?: IQItemEnableWhen[];\r\n maxLength?: number;\r\n readOnly?: boolean;\r\n item?: IQItem[];\r\n}\r\n\r\nexport interface IQItemChoiceOption {\r\n modifierExtension?: IQOptionExtension[];\r\n valueCoding: {\r\n code: string;\r\n display: string;\r\n extension?: IQOptionExtension[];\r\n };\r\n}\r\n\r\nexport interface IQItemInitialChoiceOption {\r\n code: string;\r\n display: string;\r\n}\r\n\r\nexport interface IQItemExtension {\r\n url: string;\r\n valueString: string;\r\n valueDecimal?: number;\r\n valueInteger?: number;\r\n valueBoolean?: boolean;\r\n}\r\n\r\nexport interface IQOptionExtension {\r\n url: string;\r\n valueBoolean?: boolean;\r\n valueInteger?: number;\r\n}\r\n\r\nexport interface IQItemEnableWhen {\r\n hasAnswer: boolean;\r\n question: string;\r\n answerCoding: {\r\n code: string;\r\n };\r\n answerBoolean: boolean;\r\n modifierExtension?: IQItemExtension[];\r\n}\r\n\r\nexport interface IQAnswers {\r\n linkId: string;\r\n answer?: any; //IQAnswerValueCoding[] | IQAnswerValueInteger;\r\n}\r\n\r\nexport interface IQAnswerValueCoding {\r\n valueCoding: {\r\n code: string;\r\n display: string;\r\n extension?: IQOptionExtension[];\r\n };\r\n}\r\n\r\nexport interface IQAnswerValueInteger {\r\n valueInteger: number;\r\n}\r\n\r\nexport interface InitialQuestionnaireType {\r\n qData: IQData;\r\n selectedQuestionnaire: {\r\n resource: IQResource;\r\n };\r\n selectedAnswers: {\r\n item: IQAnswers[];\r\n };\r\n questionnaireBody: {\r\n data: IQBody;\r\n };\r\n isExternalRequest: boolean;\r\n externalUserId: string;\r\n externalOTP: string;\r\n externalT0: string;\r\n externalBaseURL: string;\r\n callingPage: string;\r\n encounterId: string;\r\n}\r\n\r\nexport const initialQuestionnaireState = {\r\n qData: {\r\n entry: [\r\n {\r\n resource: [\r\n {\r\n id: '',\r\n item: [\r\n {\r\n item: [\r\n {\r\n linkId: '',\r\n text: '',\r\n type: '',\r\n },\r\n ],\r\n linkId: '',\r\n text: '',\r\n type: '',\r\n },\r\n ],\r\n name: '',\r\n resourceType: '',\r\n title: '',\r\n extension: [\r\n {\r\n url: '',\r\n valueString: '',\r\n valueReference: {\r\n reference: '',\r\n },\r\n },\r\n ],\r\n },\r\n ],\r\n },\r\n ],\r\n id: '',\r\n resourceType: '',\r\n type: '',\r\n },\r\n selectedQuestionnaire: {\r\n resource: {\r\n id: '',\r\n item: [],\r\n name: '',\r\n resourceType: '',\r\n title: '',\r\n extension: [\r\n {\r\n url: '',\r\n valueString: '',\r\n valueReference: {\r\n reference: '',\r\n },\r\n },\r\n ],\r\n },\r\n },\r\n selectedAnswers: {\r\n item: [],\r\n },\r\n questionnaireBody: {\r\n data: {\r\n authored: '',\r\n context: {\r\n reference: '',\r\n },\r\n id: '',\r\n identifier: {\r\n system: '',\r\n value: '',\r\n },\r\n item: [],\r\n meta: {\r\n versionId: '',\r\n lastUpdated: '',\r\n },\r\n questionnaire: {\r\n reference: '',\r\n },\r\n resourceType: '',\r\n source: {\r\n reference: '',\r\n },\r\n status: '',\r\n subject: {\r\n reference: '',\r\n },\r\n },\r\n },\r\n isExternalRequest: false,\r\n externalUserId: '',\r\n externalOTP: '',\r\n externalT0: '',\r\n externalBaseURL: '',\r\n callingPage: '',\r\n encounterId: '',\r\n};\r\n\r\nconst QuestionnaireContext = createContext<{\r\n qstate: InitialQuestionnaireType;\r\n qdispatch: React.Dispatch;\r\n}>({\r\n qstate: initialQuestionnaireState,\r\n qdispatch: () => null,\r\n});\r\n\r\nexport default QuestionnaireContext;\r\n","import { Button } from 'react-bootstrap';\r\nimport Badge from 'react-bootstrap/Badge';\r\nimport styled from 'styled-components';\r\nimport { appointmentStatus } from '../../globals/global';\r\nimport { ParagraphFontSize } from '../StyledParagraph/StyledParagraph';\r\n\r\nexport const StyledBadge = styled(Badge)`\r\n align-self: right;\r\n border-width: ${(props) => (props.borderwidth ? props.borderwidth : 'thin')};\r\n border-radius: 10px;\r\n border-style: solid;\r\n border-color: ${(props) =>\r\n props.status === 'cancelled' || props.status === appointmentStatus.enteredInError\r\n ? props.theme.badge.neg.borderColor\r\n : 'black'};\r\n color: ${(props) =>\r\n props.status === 'cancelled' || props.status === appointmentStatus.enteredInError\r\n ? props.theme.badge.neg.color\r\n : 'black'};\r\n font-weight: ${(props) => (props.status === appointmentStatus.enteredInError ? 'bold' : 'normal')};\r\n font-size: 14px;\r\n`;\r\n\r\nexport const Styled2FABadge = styled(Badge)`\r\n align-self: right;\r\n border-width: thin;\r\n border-radius: 10px;\r\n border-style: solid;\r\n border-color: ${(props) =>\r\n props.status === 'deaktiviert' ? props.theme.badge.neg.borderColor : props.theme.badge.pos.borderColor};\r\n color: ${(props) => (props.status === 'deaktiviert' ? props.theme.badge.neg.color : props.theme.badge.pos.color)};\r\n font-weight: bold;\r\n font-size: 14px;\r\n`;\r\n\r\ninterface ICategoryBadge {\r\n backgroundColor?: string;\r\n backgroundColorSelected?: string;\r\n color?: string;\r\n colorSelected?: string;\r\n marginRight?: string;\r\n marginBottom?: string;\r\n fontSize?: string | ParagraphFontSize;\r\n}\r\n\r\nexport const CategoryBadge = styled(Button)`\r\n border-radius: 50px;\r\n background-color: ${(props) => (props.backgroundColor ? props.backgroundColor : null)};\r\n border-color: ${(props) => (props.backgroundColor ? props.backgroundColor : null)};\r\n color: ${(props) => (props.color ? props.color : null)};\r\n margin-right: ${(props) => (props.marginRight ? props.marginRight : null)};\r\n margin-bottom: ${(props) => (props.marginBottom ? props.marginBottom : null)};\r\n font-size: ${(props) => (props.fontSize ? props.fontSize : null)};\r\n &:hover {\r\n background-color: ${(props) => (props.backgroundColorSelected ? props.backgroundColorSelected : null)};\r\n border-color: ${(props) => (props.backgroundColorSelected ? props.backgroundColorSelected : null)};\r\n color: ${(props) => (props.colorSelected ? props.colorSelected : null)};\r\n }\r\n &:focus {\r\n background-color: ${(props) => (props.backgroundColorSelected ? props.backgroundColorSelected : null)};\r\n border-color: ${(props) => (props.backgroundColorSelected ? props.backgroundColorSelected : null)};\r\n color: ${(props) => (props.colorSelected ? props.colorSelected : null)};\r\n }\r\n &:hover:focus:active {\r\n background-color: ${(props) => (props.backgroundColorSelected ? props.backgroundColorSelected : null)};\r\n border-color: ${(props) => (props.backgroundColorSelected ? props.backgroundColorSelected : null)};\r\n color: ${(props) => (props.colorSelected ? props.colorSelected : null)};\r\n }\r\n &:active {\r\n background-color: ${(props) => (props.backgroundColorSelected ? props.backgroundColorSelected : null)};\r\n border-color: ${(props) => (props.backgroundColorSelected ? props.backgroundColorSelected : null)};\r\n color: ${(props) => (props.colorSelected ? props.colorSelected : null)};\r\n }\r\n`;\r\n\r\ninterface ICategoryBadgeSelected {\r\n backgroundColor?: string;\r\n color?: string;\r\n marginLeft?: string;\r\n marginRight?: string;\r\n marginBottom?: string;\r\n fontSize?: string | ParagraphFontSize;\r\n}\r\n\r\nexport const CategoryBadgeSelected = styled(Badge)`\r\n border-radius: 50px;\r\n background-color: ${(props) => (props.backgroundColor ? props.backgroundColor : null)};\r\n border-color: ${(props) => (props.backgroundColor ? props.backgroundColor : null)};\r\n color: ${(props) => (props.color ? props.color : null)};\r\n margin-left: ${(props) => (props.marginLeft ? props.marginLeft : null)};\r\n margin-right: ${(props) => (props.marginRight ? props.marginRight : null)};\r\n margin-bottom: ${(props) => (props.marginBottom ? props.marginBottom : null)};\r\n font-size: ${(props) => (props.fontSize ? props.fontSize : null)};\r\n max-width: 50%;\r\n overflow: hidden;\r\n text-overflow: ellipsis;\r\n`;\r\n\r\ninterface IBadgeWithWordWrap {\r\n padding?: string;\r\n}\r\n\r\nexport const BadgeWithWordWrap = styled(Badge)`\r\n white-space: normal;\r\n text-align: left;\r\n padding: ${(props) => (props.padding ? props.padding : null)};\r\n`;\r\n","import checkAnimation from '../lotties/checkAnimation.json';\r\n\r\nexport const lottieCheck = {\r\n loop: false,\r\n autoplay: true,\r\n animationData: checkAnimation, //fill color = #adcf03 (successGreen from theme)\r\n rendererSettings: {\r\n preserveAspectRatio: 'xMidYMid slice',\r\n },\r\n};\r\n\r\nexport const calcButtonPaddingSize = (buttonRef: React.MutableRefObject, lottieWidth: number) => {\r\n let calcButtonWidth = '35px';\r\n if (buttonRef.current) {\r\n const buttonWidth = buttonRef.current.offsetWidth;\r\n const calcButtonW = (buttonWidth - lottieWidth) / 2;\r\n calcButtonWidth = calcButtonW.toString() + 'px';\r\n }\r\n return calcButtonWidth;\r\n};\r\n","import moment from 'moment';\r\nimport * as React from 'react';\r\nimport { InitialLoginType } from '../../context/loginContext';\r\nimport { getBirthdayPrettyFormatedWithAge } from '../../utils/dateUtils';\r\nimport { responseErrorHandling } from '../../utils/errorHandling';\r\nimport { getCountryLongName, getGenderEN } from '../../utils/pcpUtils';\r\nimport { IRegisterData } from '../RestServices';\r\nimport { getFHIRConfig } from './fhirConstants';\r\nconst fhir = require('fhir.js');\r\n\r\nexport interface IPatientResource {\r\n id: any;\r\n name: any;\r\n birthDate: any;\r\n address: any;\r\n gender: any;\r\n identifier: any;\r\n telecom: any;\r\n communication?: any;\r\n extension?: any;\r\n}\r\n\r\ninterface IPatientResourceAddress {\r\n street: string;\r\n houseNr: string;\r\n}\r\n\r\nexport interface IPlannedStudies {\r\n code: string;\r\n display: string;\r\n participate: boolean;\r\n}\r\n\r\n/**\r\n *\r\n * @param sessionId\r\n * the sessionId OR OTP variant (PCP otp,userId,to)\r\n * @param activeUserId\r\n * the activeUserId\r\n * @returns patientResource\r\n * the patient resource\r\n */\r\nexport const getPatientResource = async (sessionId: string, activeUserId: string) => {\r\n return await fhir(getFHIRConfig(sessionId)).read({\r\n type: 'Patient',\r\n id: activeUserId,\r\n });\r\n};\r\n\r\nexport const getPractitionerResource = async (sessionId: string, practitionerRoleId: string) => {\r\n return await fhir(getFHIRConfig(sessionId)).read({\r\n type: 'Practitioner',\r\n id: practitionerRoleId,\r\n });\r\n};\r\n\r\nexport const changePatientResource = async (state: InitialLoginType, resource: any) => {\r\n return await fhir(getFHIRConfig(state.sessionId)).update({\r\n type: 'Patient',\r\n id: state.userId,\r\n resource: resource.data,\r\n });\r\n};\r\n\r\nconst getNewPlannedStudiesEntry = (plannedStudy: IPlannedStudies) => {\r\n const newEntry = {\r\n url: 'http://www.principa.siegele-software.com/plannedStudies',\r\n valueCoding: {\r\n code: plannedStudy.code,\r\n display: plannedStudy.display,\r\n extension: [\r\n {\r\n url: 'http://www.principa.siegele-software.com/plannedStudySelection',\r\n valueBoolean: plannedStudy.participate,\r\n },\r\n ],\r\n },\r\n };\r\n return newEntry;\r\n};\r\n\r\nexport const updatePatientResourcePlannedStudies = (patientResource: any, newPlannedStudies: IPlannedStudies[]) => {\r\n if (patientResource.data.extension !== undefined) {\r\n newPlannedStudies.forEach((plannedStudy) => {\r\n let foundEntry = false;\r\n for (let i = 0; i < patientResource.data.extension.length; i++) {\r\n if (patientResource.data.extension[i].url.endsWith('plannedStudies')) {\r\n if (patientResource.data.extension[i].valueCoding?.code === plannedStudy.code) {\r\n for (let j = 0; j < patientResource.data.extension[i].valueCoding?.extension.length; j++) {\r\n if (\r\n patientResource.data.extension[i].valueCoding.extension[j]?.url.endsWith(\r\n 'plannedStudySelection',\r\n )\r\n ) {\r\n foundEntry = true;\r\n patientResource.data.extension[i].valueCoding.extension[j].valueBoolean =\r\n plannedStudy.participate;\r\n }\r\n }\r\n }\r\n }\r\n }\r\n if (!foundEntry) {\r\n patientResource.data.extension[patientResource.data.extension.length] =\r\n getNewPlannedStudiesEntry(plannedStudy);\r\n }\r\n });\r\n } else {\r\n const studyEntries: any[] = [];\r\n newPlannedStudies.forEach((plannedStudy) => {\r\n studyEntries.push(getNewPlannedStudiesEntry(plannedStudy));\r\n });\r\n\r\n patientResource.data.extension = [...studyEntries];\r\n // patientResource.data.extension = [studyEntries[0]];\r\n }\r\n return patientResource;\r\n};\r\n\r\nexport const modifyPatientResource = (originalPatientResource: any, newData: IRegisterData) => {\r\n let newPatientResource = {} as any;\r\n\r\n newPatientResource = originalPatientResource;\r\n\r\n if (newData.birthdate !== undefined) {\r\n const formatedBirthdate = moment(newData.birthdate, 'DD.MM.YYYY').format('YYYY-MM-DD');\r\n newPatientResource.data.birthDate = formatedBirthdate;\r\n }\r\n if (newData.city !== undefined) {\r\n if (newPatientResource.data.address !== undefined) {\r\n for (let i = 0; i < newPatientResource.data.address.length; i++) {\r\n if (newPatientResource.data.address[i].use === 'home') {\r\n newPatientResource.data.address[i].city = newData.city;\r\n break;\r\n }\r\n }\r\n } else {\r\n newPatientResource.data.address = [\r\n {\r\n city: newData.city,\r\n },\r\n ];\r\n }\r\n }\r\n if (newData.country !== undefined) {\r\n if (newPatientResource.data.address !== undefined) {\r\n for (let i = 0; i < newPatientResource.data.address.length; i++) {\r\n if (newPatientResource.data.address[i].use === 'home') {\r\n newPatientResource.data.address[i].country = newData.country;\r\n break;\r\n }\r\n }\r\n } else {\r\n newPatientResource.data.address = [\r\n {\r\n country: newData.country,\r\n },\r\n ];\r\n }\r\n }\r\n if (newData.email !== undefined) {\r\n if (newPatientResource.data.telecom !== undefined) {\r\n for (let i = 0; i < newPatientResource.data.telecom.length; i++) {\r\n if (newPatientResource.data.telecom[i].system === 'email') {\r\n newPatientResource.data.telecom[i].value = newData.email;\r\n break;\r\n }\r\n }\r\n } else {\r\n newPatientResource.data.telecom = [\r\n {\r\n system: 'email',\r\n value: newData.email,\r\n },\r\n ];\r\n }\r\n }\r\n if (newData.gender !== undefined) {\r\n newPatientResource.data.gender = getGenderEN(newData.gender);\r\n }\r\n\r\n if (newData.insuranceNr !== undefined) {\r\n if (newPatientResource.data.identifier !== undefined) {\r\n let foundInsuranceNrEntry = false;\r\n for (let i = 0; i < newPatientResource.data.identifier.length; i++) {\r\n if (newPatientResource.data.identifier[i].system === 'http://fhir.de/NamingSystem/gkv/kvid-10') {\r\n foundInsuranceNrEntry = true;\r\n newPatientResource.data.identifier[i].value = newData.insuranceNr;\r\n break;\r\n }\r\n }\r\n if (!foundInsuranceNrEntry) {\r\n newPatientResource.data.identifier[newPatientResource.data.identifier.length] = {\r\n system: 'http://fhir.de/NamingSystem/gkv/kvid-10',\r\n value: newData.insuranceNr,\r\n };\r\n }\r\n } else {\r\n newPatientResource.data.identifier = [\r\n {\r\n system: 'http://fhir.de/NamingSystem/gkv/kvid-10',\r\n value: newData.insuranceNr,\r\n },\r\n ];\r\n }\r\n }\r\n\r\n if (newData.nameFirst !== undefined) {\r\n for (let i = 0; i < newPatientResource.data.name.length; i++) {\r\n if (newPatientResource.data.name[i].use === 'usual') {\r\n newPatientResource.data.name[i].given[0] = newData.nameFirst;\r\n break;\r\n }\r\n }\r\n }\r\n if (newData.nameLast !== undefined) {\r\n for (let i = 0; i < newPatientResource.data.name.length; i++) {\r\n if (newPatientResource.data.name[i].use === 'usual') {\r\n newPatientResource.data.name[i].family = newData.nameLast;\r\n break;\r\n }\r\n }\r\n }\r\n if (newData.academicTitle !== undefined) {\r\n let prefixPosition = 0;\r\n for (let i = 0; i < newPatientResource.data.name.length; i++) {\r\n if (newPatientResource.data.name[i].use === 'usual') {\r\n if (newPatientResource.data.name[i]._prefix !== undefined) {\r\n for (let j = 0; j < newPatientResource.data.name[i]._prefix.length; j++) {\r\n if (newPatientResource.data.name[i]._prefix[j]?.extension) {\r\n for (let z = 0; z < newPatientResource.data.name[i]._prefix[j].extension.length; z++) {\r\n if (\r\n newPatientResource.data.name[i]._prefix[j].extension[z].url ===\r\n 'http://hl7.org/fhir/StructureDefinition/iso21090-EN-qualifier' &&\r\n newPatientResource.data.name[i]._prefix[j].extension[z].valueCode === 'AC'\r\n ) {\r\n prefixPosition = j;\r\n break;\r\n }\r\n }\r\n }\r\n }\r\n\r\n newPatientResource.data.name[i].prefix[prefixPosition] = newData.academicTitle;\r\n } else {\r\n if (newPatientResource.data.name[i].prefix !== undefined) {\r\n prefixPosition = newPatientResource.data.name[i].prefix.length;\r\n }\r\n newPatientResource.data.name[i].prefix[prefixPosition] = newData.academicTitle;\r\n\r\n // newPatientResource.data.name[i]._prefix = [\r\n // {\r\n // extension: [\r\n // {\r\n // url: 'http://hl7.org/fhir/StructureDefinition/iso21090-EN-qualifier',\r\n // valueCode: 'AC',\r\n // },\r\n // ],\r\n // },\r\n // ];\r\n\r\n newPatientResource.data.name[i]._prefix = [];\r\n for (let j = 0; j <= prefixPosition; j++) {\r\n if (prefixPosition === j) {\r\n newPatientResource.data.name[i]._prefix[j] = [\r\n {\r\n extension: [\r\n {\r\n url: 'http://hl7.org/fhir/StructureDefinition/iso21090-EN-qualifier',\r\n valueCode: 'AC',\r\n },\r\n ],\r\n },\r\n ];\r\n } else {\r\n newPatientResource.data.name[i]._prefix[j] = null;\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n if (newData.street !== undefined) {\r\n if (newPatientResource.data.address !== undefined) {\r\n for (let i = 0; i < newPatientResource.data.address.length; i++) {\r\n if (newPatientResource.data.address[i].use === 'home') {\r\n if (newPatientResource.data.address[i].line !== undefined) {\r\n newPatientResource.data.address[i].line[0] = newData.street + ' ' + newData.streetNr;\r\n newPatientResource.data.address[i]._line[0].extension[0].valueString = newData.street;\r\n newPatientResource.data.address[i]._line[0].extension[1].valueString = newData.streetNr;\r\n break;\r\n } else {\r\n newPatientResource.data.address[i].line = [newData.street + ' ' + newData.streetNr];\r\n newPatientResource.data.address[i]._line = [\r\n {\r\n extension: [\r\n {\r\n url: 'http://hl7.org/fhir/StructureDefinition/iso21090-ADXP-streetName',\r\n valueString: newData.street,\r\n },\r\n {\r\n url: 'http://hl7.org/fhir/StructureDefinition/iso21090-ADXP-houseNumber',\r\n valueString: newData.streetNr,\r\n },\r\n ],\r\n },\r\n ];\r\n }\r\n }\r\n }\r\n } else {\r\n newPatientResource.data.address = [\r\n {\r\n use: 'home',\r\n line: [newData.street + ' ' + newData.streetNr],\r\n _line: [\r\n {\r\n extension: [\r\n {\r\n url: 'http://hl7.org/fhir/StructureDefinition/iso21090-ADXP-streetName',\r\n valueString: newData.street,\r\n },\r\n {\r\n url: 'http://hl7.org/fhir/StructureDefinition/iso21090-ADXP-houseNumber',\r\n valueString: newData.streetNr,\r\n },\r\n ],\r\n },\r\n ],\r\n },\r\n ];\r\n\r\n newPatientResource.data.address[0].line[0] = newData.street + ' ' + newData.streetNr;\r\n }\r\n }\r\n if (newData.tel !== undefined) {\r\n if (newPatientResource.data.telecom !== undefined) {\r\n let foundPhoneEntry = false;\r\n for (let i = 0; i < newPatientResource.data.telecom.length; i++) {\r\n if (\r\n newPatientResource.data.telecom[i].system === 'phone' &&\r\n newPatientResource.data.telecom[i].use === 'home'\r\n ) {\r\n foundPhoneEntry = true;\r\n newPatientResource.data.telecom[i].value = newData.tel;\r\n break;\r\n }\r\n }\r\n if (!foundPhoneEntry) {\r\n newPatientResource.data.telecom[newPatientResource.data.telecom.length] = [\r\n {\r\n system: 'phone',\r\n use: 'home',\r\n value: newData.tel,\r\n },\r\n ];\r\n }\r\n } else {\r\n newPatientResource.data.telecom = [\r\n {\r\n system: 'phone',\r\n use: 'home',\r\n value: newData.tel,\r\n },\r\n ];\r\n }\r\n }\r\n if (newData.mobilePhone !== undefined) {\r\n if (newPatientResource.data.telecom !== undefined) {\r\n let foundPhoneEntry = false;\r\n for (let i = 0; i < newPatientResource.data.telecom.length; i++) {\r\n if (\r\n newPatientResource.data.telecom[i].system === 'phone' &&\r\n newPatientResource.data.telecom[i].use === 'mobile'\r\n ) {\r\n foundPhoneEntry = true;\r\n newPatientResource.data.telecom[i].value = newData.mobilePhone;\r\n break;\r\n }\r\n }\r\n if (!foundPhoneEntry) {\r\n newPatientResource.data.telecom[newPatientResource.data.telecom.length] = [\r\n {\r\n system: 'phone',\r\n use: 'mobile',\r\n value: newData.mobilePhone,\r\n },\r\n ];\r\n }\r\n } else {\r\n newPatientResource.data.telecom = [\r\n {\r\n system: 'phone',\r\n use: 'mobile',\r\n value: newData.mobilePhone,\r\n },\r\n ];\r\n }\r\n }\r\n if (newData.zip !== undefined) {\r\n if (newPatientResource.data.address !== undefined) {\r\n for (let i = 0; i < newPatientResource.data.address.length; i++) {\r\n if (newPatientResource.data.address[i].use === 'home') {\r\n newPatientResource.data.address[i].postalCode = newData.zip;\r\n break;\r\n }\r\n }\r\n } else {\r\n newPatientResource.data.address = [\r\n {\r\n postalCode: newData.zip,\r\n },\r\n ];\r\n }\r\n }\r\n if (newData.plannedStudies !== undefined) {\r\n updatePatientResourcePlannedStudies(newPatientResource, newData.plannedStudies);\r\n }\r\n\r\n return newPatientResource;\r\n};\r\n\r\nexport const getPatientId = (patientdataJson: IPatientResource) => {\r\n const id = patientdataJson.id;\r\n if (id !== undefined) {\r\n return id;\r\n }\r\n};\r\n\r\nexport const getPatientNumber = (patientdataJson: IPatientResource) => {\r\n const ele = patientdataJson.identifier?.find((element) => {\r\n return element.system?.endsWith('patientNumber');\r\n });\r\n if (ele) {\r\n return ele.value;\r\n }\r\n};\r\n\r\nexport const getFamilyName = (patientdataJson: IPatientResource) => {\r\n const nameArr = patientdataJson.name;\r\n for (let i = 0; i < nameArr.length; i++) {\r\n if (nameArr[i].use === 'usual') {\r\n const familyName = nameArr[i].family;\r\n if (familyName !== undefined) {\r\n return familyName;\r\n }\r\n }\r\n }\r\n};\r\n\r\nexport const getGivenName = (patientdataJson: IPatientResource) => {\r\n const nameArr = patientdataJson.name;\r\n for (let i = 0; i < nameArr.length; i++) {\r\n if (nameArr[i].use === 'usual') {\r\n const givenName = nameArr[i].given;\r\n if (givenName !== undefined) {\r\n return givenName[0];\r\n }\r\n }\r\n }\r\n};\r\n\r\nexport const getInsuranceNr = (patientdataJson: IPatientResource) => {\r\n const identifier = patientdataJson.identifier;\r\n\r\n if (identifier !== undefined) {\r\n for (let i = 0; i < identifier.length; i++) {\r\n if (identifier[i].system === 'http://fhir.de/NamingSystem/gkv/kvid-10') {\r\n const insuranceNr = identifier[i].value;\r\n if (typeof insuranceNr !== 'undefined') {\r\n return insuranceNr;\r\n }\r\n }\r\n }\r\n }\r\n};\r\n\r\nexport const getBirthDate = (patientdataJson: IPatientResource) => {\r\n const birthdate = patientdataJson.birthDate;\r\n return getBirthdayPrettyFormatedWithAge(birthdate);\r\n};\r\n\r\nexport const getGender = (patientdataJson: IPatientResource) => {\r\n const gender = patientdataJson.gender;\r\n if (gender !== undefined) {\r\n return gender;\r\n }\r\n};\r\n\r\nexport const getHomePhone = (patientdataJson: IPatientResource) => {\r\n const telecomArr = patientdataJson.telecom;\r\n\r\n if (telecomArr !== undefined) {\r\n for (let i = 0; i < telecomArr.length; i++) {\r\n if (telecomArr[i].system === 'phone' && telecomArr[i].use === 'home') {\r\n const phone = telecomArr[i].value;\r\n if (typeof phone !== 'undefined') {\r\n return phone;\r\n }\r\n }\r\n }\r\n }\r\n};\r\n\r\nexport const getMobilePhone = (patientdataJson: IPatientResource) => {\r\n const telecomArr = patientdataJson.telecom;\r\n\r\n if (telecomArr !== undefined) {\r\n for (let i = 0; i < telecomArr.length; i++) {\r\n if (telecomArr[i].system === 'phone' && telecomArr[i].use === 'mobile') {\r\n const phone = telecomArr[i].value;\r\n if (typeof phone !== 'undefined') {\r\n return phone;\r\n }\r\n }\r\n }\r\n }\r\n};\r\n\r\nexport const getAcademicTitle = (patientdataJson: IPatientResource) => {\r\n const nameArr = patientdataJson.name;\r\n\r\n let arrayPosition = -1;\r\n\r\n if (nameArr) {\r\n for (let i = 0; i < nameArr.length; i++) {\r\n if (nameArr[i]._prefix) {\r\n for (let j = 0; j < nameArr[i]._prefix.length; j++) {\r\n if (nameArr[i]._prefix[j]) {\r\n if (nameArr[i]._prefix[j].extension) {\r\n for (let z = 0; z < nameArr[i]._prefix[j].extension.length; z++) {\r\n if (\r\n nameArr[i]._prefix[j].extension[z].url ===\r\n 'http://hl7.org/fhir/StructureDefinition/iso21090-EN-qualifier' &&\r\n nameArr[i]._prefix[j].extension[z].valueCode === 'AC'\r\n ) {\r\n arrayPosition = j;\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n if (arrayPosition >= 0) {\r\n for (let i = 0; i < nameArr.length; i++) {\r\n const value = nameArr[i].prefix[arrayPosition];\r\n if (value) {\r\n return value;\r\n }\r\n }\r\n }\r\n};\r\n\r\nexport const getCountry = (patientdataJson: IPatientResource) => {\r\n const addressArr = patientdataJson.address;\r\n\r\n if (addressArr !== undefined) {\r\n for (let i = 0; i < addressArr.length; i++) {\r\n if (addressArr[i].use === 'home') {\r\n const country = addressArr[i].country;\r\n if (typeof country !== 'undefined') {\r\n const countryLongName = getCountryLongName(country);\r\n return countryLongName;\r\n }\r\n }\r\n }\r\n }\r\n};\r\n\r\nexport const getHomeEmail = (patientdataJson: IPatientResource) => {\r\n const telecomArr = patientdataJson.telecom;\r\n\r\n if (telecomArr !== undefined) {\r\n for (let i = 0; i < telecomArr.length; i++) {\r\n if (telecomArr[i].system === 'email' && telecomArr[i].use === 'home') {\r\n const email = telecomArr[i].value;\r\n if (typeof email !== 'undefined') {\r\n return email;\r\n }\r\n }\r\n }\r\n }\r\n};\r\n\r\nexport const getHomeCity = (patientdataJson: IPatientResource) => {\r\n const addressArr = patientdataJson.address;\r\n\r\n if (addressArr !== undefined) {\r\n for (let i = 0; i < addressArr.length; i++) {\r\n if (addressArr[i].use === 'home') {\r\n const city = addressArr[i].city;\r\n if (typeof city !== 'undefined') {\r\n return city;\r\n }\r\n }\r\n }\r\n }\r\n};\r\n\r\nexport const getHomeStreet = (patientdataJson: IPatientResource) => {\r\n const addressLine = splitAdressLineToStreetAndHouseNr(patientdataJson);\r\n return addressLine.street;\r\n};\r\n\r\nexport const getHomeHouseNr = (patientdataJson: IPatientResource) => {\r\n const addressLine = splitAdressLineToStreetAndHouseNr(patientdataJson);\r\n return addressLine.houseNr;\r\n};\r\n\r\nexport const splitAdressLineToStreetAndHouseNr = (patientdataJson: IPatientResource): IPatientResourceAddress => {\r\n const addressLine = getAddressLine(patientdataJson);\r\n let firstNumberAppearance = 0;\r\n\r\n const address: IPatientResourceAddress = {\r\n street: '',\r\n houseNr: '',\r\n };\r\n\r\n if (addressLine) {\r\n for (let i = 0; i < addressLine.length; i++) {\r\n const character = addressLine.charAt(i);\r\n if (character >= '0' && character <= '9') {\r\n firstNumberAppearance = i;\r\n break;\r\n }\r\n }\r\n\r\n let street = '';\r\n let houseNr = '';\r\n if (firstNumberAppearance === 0) {\r\n street = addressLine.trim();\r\n } else {\r\n street = addressLine.substring(0, firstNumberAppearance).trim();\r\n houseNr = addressLine.substring(firstNumberAppearance, addressLine.length).trim();\r\n }\r\n\r\n address.street = street;\r\n address.houseNr = houseNr;\r\n }\r\n\r\n return address;\r\n};\r\n\r\n/**\r\n * returns street and houseNr in one line -> split it in getHomeStreet and getHomeHouseNr\r\n *\r\n * @param patientdataJson the response from getPatientResource\r\n */\r\nexport const getAddressLine = (patientdataJson: IPatientResource) => {\r\n const addressArr = patientdataJson.address;\r\n\r\n if (addressArr !== undefined) {\r\n for (let i = 0; i < addressArr.length; i++) {\r\n if (addressArr[i].use === 'home') {\r\n const lineArr = addressArr[i].line;\r\n if (typeof lineArr !== 'undefined') {\r\n return lineArr[0];\r\n }\r\n }\r\n }\r\n }\r\n};\r\n\r\n// export const getAddressLine = (patientdataJson: IPatientResource) : IPatientResourceAddress => {\r\n// let address : IPatientResourceAddress = {\r\n// street: '',\r\n// houseNr: '',\r\n// }\r\n\r\n// /* hier aufspliten auf street + houseNr */\r\n\r\n// return address;\r\n// }\r\n\r\nexport const getHomePostalCode = (patientdataJson: IPatientResource) => {\r\n const addressArr = patientdataJson.address;\r\n\r\n if (addressArr !== undefined) {\r\n for (let i = 0; i < addressArr.length; i++) {\r\n if (addressArr[i].use === 'home') {\r\n const postalCode = addressArr[i].postalCode;\r\n if (typeof postalCode !== 'undefined') {\r\n return postalCode;\r\n }\r\n }\r\n }\r\n }\r\n};\r\n\r\nexport const getLanguage = (patientdataJson: IPatientResource) => {\r\n if (patientdataJson.communication !== undefined) {\r\n const communcationArr = patientdataJson.communication;\r\n for (let i = 0; i < communcationArr.length; i++) {\r\n if (communcationArr[i].language !== undefined) {\r\n const language = communcationArr[i].language;\r\n if (language !== undefined) {\r\n if (language.coding !== undefined) {\r\n const languageName = language.coding[0].display;\r\n return languageName;\r\n }\r\n }\r\n }\r\n }\r\n }\r\n};\r\n\r\nexport const getInsuranceName = (patientdataJson: IPatientResource) => {\r\n if (patientdataJson.extension !== undefined) {\r\n const communcationArr = patientdataJson.communication;\r\n if (communcationArr !== undefined) {\r\n for (let i = 0; i < communcationArr.length; i++) {\r\n if (communcationArr[i].language !== undefined) {\r\n const language = communcationArr[i].language;\r\n if (language !== undefined) {\r\n if (language.coding !== undefined) {\r\n const languageName = language.coding[0].display;\r\n return languageName;\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n};\r\n\r\nexport const getPlannedStudies = (patientdataJson: IPatientResource) => {\r\n const allPlannedStudies: IPlannedStudies[] = [];\r\n\r\n if (patientdataJson.extension) {\r\n const plannedStudies = patientdataJson.extension.filter((p: any) => p.url.endsWith('plannedStudies'));\r\n\r\n if (plannedStudies) {\r\n plannedStudies.forEach((plannedStudy) => {\r\n let code = '';\r\n let display = '';\r\n let participate = false;\r\n\r\n if (plannedStudy.valueCoding) {\r\n code = plannedStudy.valueCoding.code;\r\n display = plannedStudy.valueCoding.display;\r\n\r\n if (plannedStudy.valueCoding.extension) {\r\n const plannedStudySelection = plannedStudy.valueCoding.extension.find((p: any) =>\r\n p.url.endsWith('plannedStudySelection'),\r\n );\r\n if (plannedStudySelection) {\r\n if (plannedStudySelection.valueBoolean) {\r\n participate = plannedStudySelection.valueBoolean;\r\n\r\n allPlannedStudies.push({\r\n code: code,\r\n display: display,\r\n participate: participate,\r\n });\r\n }\r\n }\r\n }\r\n }\r\n });\r\n }\r\n }\r\n\r\n return allPlannedStudies;\r\n};\r\n\r\nexport const extractPatData = (patdata: any) => {\r\n const birthdayFormated = getBirthDate(patdata.data);\r\n\r\n const patdataExt = {\r\n insuranceNr: getInsuranceNr(patdata.data),\r\n firstName: getGivenName(patdata.data),\r\n lastName: getFamilyName(patdata.data),\r\n birthday: patdata.data.birthDate,\r\n birthdayFormated: birthdayFormated ? birthdayFormated : '',\r\n gender: getGender(patdata.data),\r\n emailHome: getHomeEmail(patdata.data),\r\n telephoneHome: getHomePhone(patdata.data),\r\n streetHome: getHomeStreet(patdata.data),\r\n houseNrHome: getHomeHouseNr(patdata.data),\r\n cityHome: getHomeCity(patdata.data),\r\n zipHome: getHomePostalCode(patdata.data),\r\n country: getCountry(patdata.data),\r\n mobilePhone: getMobilePhone(patdata.data),\r\n academicTitle: getAcademicTitle(patdata.data),\r\n plannedStudies: getPlannedStudies(patdata.data),\r\n patientId: getPatientId(patdata.data),\r\n patientNumber: getPatientNumber(patdata.data),\r\n insuranceName: getInsuranceName(patdata.data),\r\n language: getLanguage(patdata.data),\r\n };\r\n\r\n return patdataExt;\r\n};\r\n\r\nexport const getPatientProfilePictureWL = async (sessionId: string, userId: string) => {\r\n return await fhir(getFHIRConfig(sessionId)).search({\r\n type: 'Patient',\r\n query: {\r\n _id: userId,\r\n _includePicture: 'true',\r\n },\r\n });\r\n};\r\n\r\nexport const getPatientProfilePicture = async (state: InitialLoginType, alertdispatch: React.Dispatch) => {\r\n if (state.practitionerRoleId) {\r\n return await fhir(getFHIRConfig(state.sessionId))\r\n .search({\r\n type: 'Practitioner',\r\n query: {\r\n _id: state.practitionerRoleId,\r\n _includePicture: 'true',\r\n },\r\n })\r\n .catch(function (e: any) {\r\n responseErrorHandling({\r\n response: e,\r\n alertdispatch: alertdispatch,\r\n });\r\n });\r\n } else {\r\n return await fhir(getFHIRConfig(state.sessionId))\r\n .search({\r\n type: 'Patient',\r\n query: {\r\n _id: state.userId,\r\n _includePicture: 'true',\r\n },\r\n })\r\n .catch(function (e: any) {\r\n responseErrorHandling({\r\n response: e,\r\n alertdispatch: alertdispatch,\r\n });\r\n });\r\n }\r\n};\r\n\r\nexport const getPatientsWithName = async (\r\n state: InitialLoginType,\r\n familyName: string,\r\n givenName: string,\r\n alertdispatch: React.Dispatch,\r\n) => {\r\n return await fhir(getFHIRConfig(state.sessionId))\r\n .search({\r\n type: 'Patient',\r\n query: {\r\n family: familyName,\r\n given: givenName,\r\n _includePicture: 'true',\r\n practitioner: state.practitionerRoleId,\r\n _count: 30,\r\n },\r\n })\r\n .catch(function (e: any) {\r\n responseErrorHandling({\r\n response: e,\r\n alertdispatch: alertdispatch,\r\n });\r\n });\r\n};\r\n","import Lottie from 'react-lottie';\r\nimport Mainscreen from '../../container/Mainscreen/Mainscreen';\r\nimport loadingSpinner from '../../lotties/loadingSpinner.json';\r\nimport loadingSpinnerWhite from '../../lotties/loadingSpinnerWhite.json';\r\nimport { VerticalCenterDiv } from '../Div/StyledDiv';\r\n\r\nconst lottieSpinnerOptions = {\r\n loop: true,\r\n autoplay: true,\r\n animationData: loadingSpinner,\r\n rendererSettings: {\r\n preserveAspectRatio: 'xMidYMid slice',\r\n },\r\n};\r\n\r\nconst lottieSpinnerWhiteOptions = {\r\n loop: true,\r\n autoplay: true,\r\n animationData: loadingSpinnerWhite,\r\n rendererSettings: {\r\n preserveAspectRatio: 'xMidYMid slice',\r\n },\r\n};\r\n\r\nconst LottieSpinner = () => {\r\n return ;\r\n};\r\n\r\nexport const LoadingSpinner = () => {\r\n return (\r\n \r\n \r\n \r\n );\r\n};\r\n\r\nexport const LoadingSpinnerInMainscreen = () => {\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n );\r\n};\r\n\r\ninterface ILottieButtonLoadingSpinner {\r\n size: number;\r\n}\r\n\r\nexport const LottieButtonLoadingSpinner = (props: ILottieButtonLoadingSpinner) => {\r\n return ;\r\n};\r\n","import { useContext } from 'react';\r\nimport Col from 'react-bootstrap/esm/Col';\r\nimport Row from 'react-bootstrap/esm/Row';\r\nimport { ThemeContext } from 'styled-components';\r\nimport { VerticalCenterDiv } from '../Div/StyledDiv';\r\nimport { LoadingSpinner } from './Loading';\r\n\r\nexport interface ILoadingSpinner {\r\n loadingText: string;\r\n}\r\nconst LoadingSpinnerWithText = (props: ILoadingSpinner) => {\r\n const themeContext = useContext(ThemeContext);\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n

{props.loadingText}

\r\n \r\n
\r\n
\r\n );\r\n};\r\n\r\nexport default LoadingSpinnerWithText;\r\n","import { createContext } from 'react';\r\n\r\nexport type InitialExecuteRuleType = {\r\n ruleName: string;\r\n ruleParam: string;\r\n persInfo: string;\r\n};\r\n\r\nexport const initialExecuteRuleState = {\r\n ruleName: '',\r\n ruleParam: '',\r\n persInfo: '',\r\n};\r\n\r\nconst ExecuteRuleContext = createContext<{\r\n executerulestate: InitialExecuteRuleType;\r\n executeruledispatch: React.Dispatch;\r\n}>({\r\n executerulestate: initialExecuteRuleState,\r\n executeruledispatch: () => null,\r\n});\r\n\r\nexport default ExecuteRuleContext;\r\n","export interface IAudio {\r\n audioFile: HTMLAudioElement;\r\n audioMuted: boolean;\r\n}\r\n\r\nconst handleAudioPlay = (a: HTMLAudioElement) => {\r\n const audioPromise = a.play();\r\n if (audioPromise !== undefined) {\r\n audioPromise\r\n .then(() => {\r\n // autoplay started\r\n })\r\n .catch((err: any) => {\r\n // catch dom exception\r\n console.info(err);\r\n });\r\n }\r\n};\r\n\r\n// let delayTimeout: number;\r\nexport const playSound = (props: IAudio) => {\r\n props.audioFile.load();\r\n props.audioFile.currentTime = 0;\r\n props.audioFile.loop = true;\r\n props.audioFile.muted = props.audioMuted;\r\n handleAudioPlay(props.audioFile);\r\n};\r\n\r\nexport const stopSound = (audio: HTMLAudioElement) => {\r\n audio.pause();\r\n audio.currentTime = 0;\r\n};\r\n","import * as React from 'react';\r\nimport { useContext } from 'react';\r\nimport OverlayTrigger from 'react-bootstrap/OverlayTrigger';\r\nimport Tooltip from 'react-bootstrap/Tooltip';\r\nimport Lottie from 'react-lottie';\r\nimport { Location, NavigateFunction, useLocation, useNavigate } from 'react-router-dom';\r\nimport LoginContext, { InitialLoginType } from '../../context/loginContext';\r\nimport TerminierungContext, { InitialTerminierungType } from '../../context/terminierungContext';\r\nimport VideochatContext, { InitialVideochatType } from '../../context/videochatContext';\r\nimport incomingCallAnimation from '../../lotties/telephoneRing.json';\r\nimport callOffAnimation from '../../lotties/telephoneRingOff.json';\r\nimport { Paths } from '../../Routes';\r\nimport { IAudio, playSound, stopSound } from '../../utils/soundUtils';\r\n\r\n// import { audiofile } from '../../sounds/ringTone.mp3';\r\n\r\n// const ringtone = new Audio(audiofile);\r\nconst ringtone = new Audio('/ringTone.mp3');\r\n\r\nlet ringtoneStarted = false;\r\n\r\nconst lottieIncomingCall = {\r\n loop: true,\r\n autoplay: true,\r\n animationData: incomingCallAnimation,\r\n rendererSettings: {\r\n preserveAspectRatio: 'xMidYMid slice',\r\n },\r\n};\r\n\r\nconst lottieCallOff = {\r\n loop: false,\r\n autoplay: false,\r\n animationData: callOffAnimation,\r\n rendererSettings: {\r\n preserveAspectRatio: 'xMidYMid slice',\r\n },\r\n};\r\n\r\ninterface ITelephoneRing {\r\n incomingCall: boolean;\r\n callAccepted: boolean;\r\n caller: string;\r\n}\r\n\r\nconst gotIceCandidate = (event: RTCPeerConnectionIceEvent, remoteSid: string, sessionId: string) => {\r\n if (event.candidate !== null) {\r\n const sid = sessionId;\r\n window.app.wsconnect.send(\r\n JSON.stringify({ rtc: 'true', ice: event.candidate, mySid: sid, remoteSid: remoteSid }),\r\n );\r\n // console.log('chat.gotIceCandidate for ' + sid + ': ' + JSON.stringify(event.candidate));\r\n }\r\n};\r\n\r\nconst callAccept = async (\r\n state: InitialLoginType,\r\n vsstate: InitialVideochatType,\r\n vsdispatch: React.Dispatch,\r\n tmstate: InitialTerminierungType,\r\n navigate: NavigateFunction,\r\n) => {\r\n let sid = '';\r\n if (tmstate.withLogin) {\r\n sid = state.sessionId;\r\n } else {\r\n sid = tmstate.enrollData.enrollCode;\r\n }\r\n\r\n stopSound(ringtone);\r\n ringtoneStarted = false;\r\n\r\n window.app.wsconnect.send(\r\n JSON.stringify({\r\n rtc: 'true',\r\n cmd: 'callAccepted',\r\n mySid: sid,\r\n remoteSid: vsstate.remoteSid,\r\n hasOwnVideo: true,\r\n }),\r\n );\r\n\r\n window.app.wsconnect.peerConnection.onicecandidate = (event: RTCPeerConnectionIceEvent) => {\r\n let sid = '';\r\n if (tmstate.withLogin) {\r\n sid = state.sessionId;\r\n } else {\r\n sid = tmstate.enrollData.enrollCode;\r\n }\r\n gotIceCandidate(event, vsstate.remoteSid, sid);\r\n };\r\n\r\n window.app.wsconnect.peerConnection.ontrack = (event: RTCTrackEvent) => {\r\n vsdispatch({\r\n type: 'ONREMOTESTREAM',\r\n remoteStream: event.streams[0],\r\n });\r\n };\r\n\r\n vsdispatch({\r\n type: 'ONACCEPT',\r\n });\r\n\r\n if (tmstate.withCheckIn) {\r\n // handled in CheckInWL\r\n } else if (tmstate.withLogin) {\r\n navigate(Paths.VIDEOCHAT);\r\n } else {\r\n navigate(Paths.VIDEOCHAT_WL);\r\n }\r\n};\r\n\r\nexport const callOff = async (\r\n navigation: NavigateFunction,\r\n location: Location,\r\n userAction: boolean,\r\n vsdispatch: React.Dispatch,\r\n tmstate: InitialTerminierungType,\r\n state?: InitialLoginType,\r\n vsstate?: InitialVideochatType,\r\n) => {\r\n stopRingTone();\r\n\r\n if (userAction) {\r\n if (state && vsstate) {\r\n let sid = '';\r\n if (tmstate.withLogin) {\r\n sid = state.sessionId;\r\n } else {\r\n sid = tmstate.enrollData.enrollCode;\r\n }\r\n\r\n window.app.wsconnect.send(\r\n JSON.stringify({\r\n rtc: 'true',\r\n cmd: 'callRefused',\r\n mySid: sid,\r\n remoteSid: vsstate.remoteSid,\r\n type: 'ABORT',\r\n }),\r\n );\r\n }\r\n }\r\n\r\n vsdispatch({\r\n type: 'ONDISCONNECT',\r\n });\r\n\r\n if (tmstate.withCheckIn) {\r\n // handled in CheckInWL\r\n } else if (tmstate.withLogin) {\r\n if (location.pathname.endsWith(Paths.VIDEOCHAT)) {\r\n navigation(Paths.TERMINE);\r\n }\r\n } else {\r\n navigation(Paths.TERMINCODE);\r\n }\r\n};\r\n\r\nexport interface ITelephoneCallIcon {\r\n state: InitialLoginType;\r\n vsstate: InitialVideochatType;\r\n vsdispatch: React.Dispatch;\r\n tmstate: InitialTerminierungType;\r\n tooltipText?: string;\r\n}\r\n\r\nexport const CallAcceptIcon = (props: ITelephoneCallIcon) => {\r\n const navigate = useNavigate();\r\n const callAcceptTooltip = () => {\r\n if (props.tooltipText) {\r\n return {props.tooltipText};\r\n } else {\r\n return (\r\n \r\n Sie werden von {props.vsstate.caller} gerufen\r\n \r\n );\r\n }\r\n };\r\n\r\n return (\r\n \r\n
callAccept(props.state, props.vsstate, props.vsdispatch, props.tmstate, navigate)}>\r\n \r\n
\r\n
\r\n );\r\n};\r\n\r\nexport const CallOffIcon = (props: ITelephoneCallIcon) => {\r\n const navigate = useNavigate();\r\n const location = useLocation();\r\n return (\r\n Anruf beenden}\r\n >\r\n \r\n callOff(navigate, location, true, props.vsdispatch, props.tmstate, props.state, props.vsstate)\r\n }\r\n >\r\n \r\n \r\n \r\n );\r\n};\r\n\r\nexport const playRingTone = (soundConfig: IAudio) => {\r\n playSound(soundConfig);\r\n};\r\n\r\nexport const stopRingTone = () => {\r\n stopSound(ringtone);\r\n ringtoneStarted = false;\r\n};\r\n\r\nconst TelephoneRing = (props: ITelephoneRing) => {\r\n const { state } = useContext(LoginContext);\r\n const { vsstate, vsdispatch } = useContext(VideochatContext);\r\n const { tmstate } = useContext(TerminierungContext);\r\n\r\n const callProps: ITelephoneCallIcon = {\r\n state: state,\r\n vsstate: vsstate,\r\n vsdispatch: vsdispatch,\r\n tmstate: tmstate,\r\n };\r\n\r\n if (props.incomingCall) {\r\n if (!ringtoneStarted) {\r\n const soundConfig: IAudio = {\r\n audioFile: ringtone,\r\n audioMuted: vsstate.audioMuted,\r\n };\r\n\r\n playRingTone(soundConfig);\r\n ringtoneStarted = true;\r\n }\r\n\r\n return ;\r\n } else if (props.callAccepted) {\r\n return ;\r\n } else {\r\n return null;\r\n }\r\n};\r\n\r\nconst Telephone = () => {\r\n const { vsstate } = useContext(VideochatContext);\r\n\r\n return (\r\n \r\n );\r\n};\r\n\r\nexport default Telephone;\r\n","import { useEffect, useRef, useState } from 'react';\r\nimport { ChatMessagesContainer } from './ChatMessagesContainer';\r\nimport { IncomingMessage, OutgoingMessage } from './Message';\r\n\r\nexport enum MessageType {\r\n Incoming,\r\n Outgoing,\r\n}\r\n\r\nexport interface IChatMessages {\r\n chatContainerHeight: string;\r\n messages: IChatMessage[];\r\n}\r\n\r\nexport interface IMessage {\r\n txt: string;\r\n time: string;\r\n}\r\n\r\nexport interface IChatMessage extends IMessage {\r\n type: MessageType;\r\n}\r\n\r\nconst ChatMessages = (props: IChatMessages) => {\r\n const messageBottomRef = useRef(null);\r\n const [allMsg, setAllMsg] = useState([]);\r\n\r\n useEffect(() => {\r\n displayAllMessages();\r\n }, [props.messages]);\r\n\r\n useEffect(() => {\r\n messageBottomRef.current.scrollIntoView({ block: 'nearest' });\r\n }, [allMsg]);\r\n\r\n const displayAllMessages = () => {\r\n const allMessages: any[] = [];\r\n\r\n props.messages.forEach((message: IChatMessage) => {\r\n if (message.type === MessageType.Outgoing) {\r\n allMessages.push();\r\n } else if (message.type === MessageType.Incoming) {\r\n allMessages.push();\r\n }\r\n });\r\n\r\n setAllMsg(allMessages);\r\n };\r\n\r\n return (\r\n \r\n {allMsg}\r\n
\r\n
\r\n );\r\n};\r\n\r\nexport default ChatMessages;\r\n","import { useState } from 'react';\r\nimport Col from 'react-bootstrap/esm/Col';\r\nimport Form from 'react-bootstrap/Form';\r\nimport { MdSend } from 'react-icons/md';\r\nimport { VerticalCenterDiv } from '../Div/StyledDiv';\r\n\r\ninterface IChatInput {\r\n handleUserMessage(userMsg: string): void;\r\n}\r\n\r\nconst ChatInput = (props: IChatInput) => {\r\n const [msg, setMsg] = useState('');\r\n\r\n const sendMessage = () => {\r\n props.handleUserMessage(msg);\r\n setMsg('');\r\n };\r\n\r\n const handleEnter = (event: any) => {\r\n if (event.key === 'Enter') {\r\n sendMessage();\r\n }\r\n };\r\n\r\n return (\r\n
\r\n \r\n \r\n setMsg(e.target.value)}\r\n onKeyDown={handleEnter}\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 ChatInput;\r\n","import Container from 'react-bootstrap/Container';\r\nimport styled from 'styled-components';\r\n\r\nexport const ChatMessagesContainer = styled(Container)`\r\n height: ${(props) => (props.height ? props.height : '200px')};\r\n overflow: auto;\r\n`;\r\n","import Col from 'react-bootstrap/esm/Col';\r\nimport Row from 'react-bootstrap/esm/Row';\r\nimport styled from 'styled-components';\r\nimport { LeftDiv, RightDiv } from '../Div/StyledDiv';\r\nimport { ParagraphFontSize, StyledParagraph } from '../StyledParagraph/StyledParagraph';\r\nimport { IMessage } from './ChatMessages';\r\n\r\nconst OutgoingMsgDiv = styled(RightDiv)`\r\n background-color: #a3eaf7;\r\n border-radius: 10px;\r\n text-align: left;\r\n padding: 15px;\r\n`;\r\n\r\nconst IncomingMsgDiv = styled(LeftDiv)`\r\n background-color: #57aee7;\r\n border-radius: 10px;\r\n text-align: left;\r\n padding: 15px;\r\n`;\r\n\r\nexport const OutgoingMessage = (props: IMessage) => {\r\n return (\r\n \r\n \r\n \r\n \r\n {props.txt}\r\n \r\n {props.time}\r\n \r\n \r\n \r\n );\r\n};\r\n\r\nexport const IncomingMessage = (props: IMessage) => {\r\n return (\r\n \r\n \r\n \r\n \r\n {props.txt}\r\n \r\n {props.time}\r\n \r\n \r\n \r\n );\r\n};\r\n","import moment from 'moment';\r\nimport { useContext, useEffect, useState } from 'react';\r\nimport Container from 'react-bootstrap/esm/Container';\r\nimport AlertContext from '../../context/alertContext';\r\nimport VideochatContext from '../../context/videochatContext';\r\nimport { addChatEntry, addChatEntryAppointment } from '../../services/RestServices';\r\nimport ChatInput from './ChatInput';\r\nimport ChatMessages, { IChatMessage, MessageType } from './ChatMessages';\r\nimport { ChatWidgetBaseContainer, ChatWidgetContainer } from './ChatWidgetContainer';\r\nimport ChatWidgetSymbol from './ChatWidgetSymbol';\r\n\r\nexport enum MessageIdType {\r\n AppId,\r\n EnrollCode,\r\n}\r\n\r\nexport interface IIncomingMessage {\r\n txt: string;\r\n isPat?: boolean;\r\n name: string;\r\n ts: string;\r\n}\r\n\r\nexport interface IChat {\r\n id: string;\r\n incomingMessages: IIncomingMessage[];\r\n}\r\n\r\nexport interface IChatExt extends IChat {\r\n idType: MessageIdType;\r\n asWidget: boolean;\r\n showChatInput: boolean;\r\n show: boolean;\r\n}\r\n\r\nexport interface IAppointmentChat {\r\n id: string;\r\n chatOpen: boolean;\r\n incomingMessages?: IIncomingMessage[];\r\n numberUnreadMsg?: number;\r\n}\r\n\r\nexport const isChatOpen = (appointmentChat: IAppointmentChat[], appId: string) => {\r\n const appointmentChatEntry = appointmentChat.find((e) => e.id === appId);\r\n if (appointmentChatEntry) {\r\n return appointmentChatEntry.chatOpen;\r\n }\r\n return false;\r\n};\r\n\r\nexport const getAppointmentChatEntry = (\r\n appointmentChat: IAppointmentChat[],\r\n appId: string,\r\n): IAppointmentChat | undefined => {\r\n const appointmentChatEntry = appointmentChat.find((e) => e.id === appId);\r\n return appointmentChatEntry;\r\n};\r\n\r\nconst Chat = (props: IChatExt) => {\r\n const [messages, setMessages] = useState([]);\r\n const [widgetIconClicked, setWidgetIconClicked] = useState(true);\r\n const { vsstate, vsdispatch } = useContext(VideochatContext);\r\n const { alertdispatch } = useContext(AlertContext);\r\n\r\n useEffect(() => {\r\n const allIncomingMsg: IChatMessage[] = [];\r\n props.incomingMessages.forEach((message: IIncomingMessage) => {\r\n const msg: IChatMessage = {\r\n txt: '',\r\n time: '',\r\n type: MessageType.Incoming,\r\n };\r\n msg.txt = message.txt;\r\n msg.time = message.ts;\r\n msg.type = MessageType.Incoming;\r\n if (message.isPat) {\r\n msg.type = MessageType.Outgoing;\r\n }\r\n\r\n allIncomingMsg.push(msg);\r\n });\r\n\r\n // setMessages((messages) => [...messages, ...allIncomingMsg]);\r\n if (allIncomingMsg.length > 0) {\r\n if (allIncomingMsg.length > messages.length) {\r\n setMessages(allIncomingMsg);\r\n }\r\n }\r\n }, [props.incomingMessages]);\r\n\r\n useEffect(() => {\r\n const allIncomingMsg: IChatMessage[] = [];\r\n if (vsstate.chatMessages) {\r\n vsstate.chatMessages.forEach((message: IIncomingMessage) => {\r\n const msg: IChatMessage = {\r\n txt: '',\r\n time: '',\r\n type: MessageType.Incoming,\r\n };\r\n msg.txt = message.txt;\r\n msg.time = message.ts;\r\n msg.type = MessageType.Incoming;\r\n if (message.isPat) {\r\n msg.type = MessageType.Outgoing;\r\n }\r\n\r\n allIncomingMsg.push(msg);\r\n });\r\n\r\n // setMessages((messages) => [...messages, ...allIncomingMsg]);\r\n if (allIncomingMsg.length > 0) {\r\n setMessages(allIncomingMsg);\r\n }\r\n }\r\n }, [vsstate.chatMessages]);\r\n\r\n const handleUserMessage = (userMsg: string) => {\r\n let response;\r\n if (props.idType === MessageIdType.AppId) {\r\n response = addChatEntryAppointment(props.id, userMsg, alertdispatch);\r\n } else if (props.idType === MessageIdType.EnrollCode) {\r\n response = addChatEntry(props.id, userMsg, alertdispatch);\r\n }\r\n\r\n if (response) {\r\n setMessages((messages) => [\r\n ...messages,\r\n { txt: userMsg, time: moment().format('L LT'), type: MessageType.Outgoing },\r\n ]);\r\n }\r\n };\r\n\r\n const handleWidgetSymbolClick = () => {\r\n setWidgetIconClicked(!widgetIconClicked);\r\n vsdispatch({\r\n type: 'RESETNUMBERUNREADMESSAGES',\r\n });\r\n };\r\n\r\n const ChatWithWidget = () => {\r\n return (\r\n \r\n {widgetIconClicked && (\r\n \r\n \r\n {props.showChatInput === true && }\r\n \r\n )}\r\n \r\n \r\n );\r\n };\r\n\r\n const ChatWithoutWidget = () => {\r\n return (\r\n \r\n \r\n {props.showChatInput === true && }\r\n \r\n );\r\n };\r\n\r\n if (props.show) {\r\n if (props.asWidget) {\r\n return ;\r\n } else {\r\n return ;\r\n }\r\n } else {\r\n return <>;\r\n }\r\n};\r\n\r\nexport default Chat;\r\n","import Container from 'react-bootstrap/Container';\r\nimport styled from 'styled-components';\r\n\r\nexport const ChatWidgetBaseContainer = styled(Container)`\r\n bottom: 0;\r\n display: flex;\r\n flex-direction: column;\r\n margin: 0 20px 20px 0;\r\n max-width: 370px;\r\n position: fixed;\r\n right: 0;\r\n width: 90vw;\r\n z-index: 1000;\r\n`;\r\n\r\nexport const ChatWidgetContainer = styled(Container)`\r\n padding: 10px;\r\n border-radius: 10px;\r\n box-shadow: 0 2px 10px 1px #b5b5b5;\r\n background-color: white;\r\n`;\r\n","import Badge from 'react-bootstrap/Badge';\r\nimport Container from 'react-bootstrap/Container';\r\nimport Row from 'react-bootstrap/esm/Row';\r\nimport { BsChatDots } from 'react-icons/bs';\r\nimport styled from 'styled-components';\r\nimport StyledCol from '../Cols/StyledCol';\r\n\r\ninterface IChatWidgetSymbol {\r\n isOpen: boolean;\r\n handleIconClick?: any;\r\n numberUnreadMsg?: number;\r\n}\r\n\r\nconst ChatWidgetSymbolContainer = styled(Container)`\r\n align-self: flex-end;\r\n background-color: rgb(36, 94, 173);\r\n border: 0;\r\n border-radius: 500%;\r\n box-shadow: 0 2px 10px 1px #b5b5b5;\r\n height: 60px;\r\n margin-top: 10px;\r\n cursor: pointer;\r\n width: 60px;\r\n`;\r\n\r\nconst WidgetSymbol = (props: IChatWidgetSymbol) => {\r\n let showUnreadBadge = false;\r\n if (props.numberUnreadMsg && props.numberUnreadMsg > 0) {\r\n showUnreadBadge = true;\r\n }\r\n\r\n if (props.isOpen) {\r\n return

X

;\r\n } else {\r\n return (\r\n
\r\n \r\n {showUnreadBadge && (\r\n \r\n {props.numberUnreadMsg}\r\n \r\n )}\r\n
\r\n );\r\n }\r\n};\r\n\r\nconst ChatWidgetSymbol = (props: IChatWidgetSymbol) => {\r\n return (\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 ChatWidgetSymbol;\r\n","import styled from 'styled-components';\r\n\r\nexport const StyledH3 = styled.h3`\r\n color: ${(props) => props.theme.font.highlightColor};\r\n`;\r\n\r\nexport const StyledMainHeader = styled.h3`\r\n @media only screen and (max-width: 500px), screen and (max-height: 500px) {\r\n font-size: 1.25rem;\r\n }\r\n`;\r\n\r\nexport const StyledSubHeader = styled.h4`\r\n @media only screen and (max-width: 500px), screen and (max-height: 500px) {\r\n font-size: 1.1rem;\r\n }\r\n`;\r\n","import { useContext } from 'react';\r\nimport { useNavigate } from 'react-router-dom';\r\nimport AlertContext, { AlertOnHide, AlertType } from '../context/alertContext';\r\nimport CheckInContext from '../context/checkInContext';\r\nimport ExecuteRuleContext from '../context/executeRuleContext';\r\nimport LoginContext from '../context/loginContext';\r\nimport QuestionnaireContext from '../context/questionnaireContext';\r\nimport TerminierungContext from '../context/terminierungContext';\r\nimport VideochatContext from '../context/videochatContext';\r\nimport { logout, unblockAppointment } from '../services/RestServices';\r\nimport { showAlertMessage } from '../utils/alertHandling';\r\nimport { useAppointmentSelection } from './useAppointmentSelection';\r\n\r\nconst useHandleLogout = () => {\r\n const navigate = useNavigate();\r\n const { state, dispatch } = useContext(LoginContext);\r\n const { vsdispatch } = useContext(VideochatContext);\r\n const { tmdispatch } = useContext(TerminierungContext);\r\n const { alertdispatch } = useContext(AlertContext);\r\n const { qdispatch } = useContext(QuestionnaireContext);\r\n const { executeruledispatch } = useContext(ExecuteRuleContext);\r\n\r\n const handleLogout = async (\r\n event?: React.MouseEvent | React.MouseEvent,\r\n ) => {\r\n if (event !== undefined) {\r\n event.preventDefault();\r\n }\r\n\r\n const loginData = await logout(state.sessionId);\r\n\r\n if (loginData.error) {\r\n if (loginData.error.includes('SID not found')) {\r\n showAlertMessage({\r\n alertTitle: 'Authorization',\r\n alertTxt: 'Authorization failed',\r\n alertType: AlertType.error,\r\n onHide: AlertOnHide.goToHome,\r\n alertdispatch: alertdispatch,\r\n });\r\n }\r\n } else {\r\n dispatch({ type: 'LOGOUT' });\r\n vsdispatch({ type: 'ONDISCONNECT' });\r\n vsdispatch({ type: 'CLOSEALLAPPOINTMENTCHATS' });\r\n vsdispatch({ type: 'SETAUDIOMUTED', audioMuted: false });\r\n tmdispatch({ type: 'RESETALL' });\r\n qdispatch({ type: 'RESETQUESTIONNAIRE' });\r\n executeruledispatch({ type: 'RESETRULEPROPERTIES' });\r\n navigate('/');\r\n }\r\n };\r\n\r\n return {\r\n handleLogout,\r\n };\r\n};\r\n\r\nexport const useHandleLogoutWL = () => {\r\n const navigate = useNavigate();\r\n const { vsdispatch } = useContext(VideochatContext);\r\n const { tmdispatch } = useContext(TerminierungContext);\r\n const { qdispatch } = useContext(QuestionnaireContext);\r\n const { executeruledispatch } = useContext(ExecuteRuleContext);\r\n\r\n const handleLogout = async (\r\n event?: React.MouseEvent | React.MouseEvent,\r\n ) => {\r\n if (event !== undefined) {\r\n event.preventDefault();\r\n }\r\n\r\n vsdispatch({ type: 'ONDISCONNECT' });\r\n vsdispatch({ type: 'SETAUDIOMUTED', audioMuted: false });\r\n tmdispatch({ type: 'RESETALL' });\r\n qdispatch({ type: 'RESETQUESTIONNAIRE' });\r\n executeruledispatch({ type: 'RESETRULEPROPERTIES' });\r\n navigate('/');\r\n };\r\n\r\n return {\r\n handleLogout,\r\n };\r\n};\r\n\r\nexport const useHandleLogoutAfterIdleTime = () => {\r\n const { dispatch } = useContext(LoginContext);\r\n const { vsdispatch } = useContext(VideochatContext);\r\n const { tmdispatch } = useContext(TerminierungContext);\r\n const { qdispatch } = useContext(QuestionnaireContext);\r\n\r\n const { executeruledispatch } = useContext(ExecuteRuleContext);\r\n\r\n const handleLogoutAfterIdleTime = () => {\r\n dispatch({ type: 'LOGOUT' });\r\n vsdispatch({ type: 'ONDISCONNECT' });\r\n vsdispatch({ type: 'CLOSEALLAPPOINTMENTCHATS' });\r\n vsdispatch({ type: 'SETAUDIOMUTED', audioMuted: false });\r\n tmdispatch({ type: 'RESETALL' });\r\n qdispatch({ type: 'RESETQUESTIONNAIRE' });\r\n executeruledispatch({ type: 'RESETRULEPROPERTIES' });\r\n };\r\n\r\n return {\r\n handleLogoutAfterIdleTime,\r\n };\r\n};\r\n\r\nexport const useHandleLogoutCheckIn = () => {\r\n const { dispatch } = useContext(LoginContext);\r\n const { vsdispatch } = useContext(VideochatContext);\r\n const { tmdispatch } = useContext(TerminierungContext);\r\n const { qdispatch } = useContext(QuestionnaireContext);\r\n const { executeruledispatch } = useContext(ExecuteRuleContext);\r\n const { checkindispatch } = useContext(CheckInContext);\r\n\r\n const { getSelectedResource } = useAppointmentSelection();\r\n\r\n const handleLogoutCheckIn = () => {\r\n dispatch({ type: 'LOGOUT' });\r\n vsdispatch({ type: 'ONDISCONNECT' });\r\n vsdispatch({ type: 'CLOSEALLAPPOINTMENTCHATS' });\r\n vsdispatch({ type: 'SETAUDIOMUTED', audioMuted: false });\r\n tmdispatch({ type: 'RESETALL' });\r\n qdispatch({ type: 'RESETQUESTIONNAIRE' });\r\n checkindispatch({ type: 'RESETALL' });\r\n executeruledispatch({ type: 'RESETRULEPROPERTIES' });\r\n\r\n const resource_1 = getSelectedResource(1);\r\n if (resource_1) {\r\n unblockAppointment(resource_1);\r\n }\r\n };\r\n\r\n return {\r\n handleLogoutCheckIn,\r\n };\r\n};\r\n\r\nexport default useHandleLogout;\r\n","import { moment } from '../../globals/global';\r\nimport { IAppointment } from '../../utils/appointmentUtils';\r\n\r\nexport function startDate(data: IAppointment) {\r\n const dateStart = moment(data.start);\r\n const dateEnd = moment(data.end);\r\n if (dateStart.isSame(dateEnd, 'day')) {\r\n // return dateStart.format(dateStart.isSame(moment(), 'year') ? 'dddd, DoMMM' : 'dddd, DoMMM YYYY');\r\n return dateStart.format('dddd, DoMMM YYYY');\r\n } else {\r\n // return (\r\n // dateStart.format(dateStart.isSame(moment(), 'year') ? 'dd, DoMMM' : 'dd, DoMMM YYYY') +\r\n // ' - ' +\r\n // dateEnd.format(dateEnd.isSame(moment(), 'year') ? 'dd, DoMMM' : 'dd, DoMMM YYYY')\r\n // );\r\n return dateStart.format('dd, DoMMM YYYY') + ' - ' + dateEnd.format('dd, DoMMM YYYY');\r\n }\r\n}\r\n\r\nfunction startTime(data: IAppointment) {\r\n const dateStart = moment(data.start);\r\n const dateEnd = moment(data.end);\r\n let supressDuration;\r\n if (data.modifierExtension) {\r\n for (const ext of data.modifierExtension) {\r\n if (ext.url == 'http://www.principa.siegele-software.com/suppressDuration' && ext.valueBoolean) {\r\n supressDuration = true;\r\n }\r\n }\r\n } else {\r\n supressDuration = data.supressDuration;\r\n }\r\n\r\n if (dateStart.isSame(dateEnd, 'day')) {\r\n if (supressDuration) {\r\n return dateStart.format(`HH:mm`);\r\n }\r\n return dateStart.format(`HH:mm - ${dateEnd.format('HH:mm')}`);\r\n }\r\n}\r\n\r\nconst AppointmentDate = (props: IAppointment) => {\r\n return (\r\n
\r\n
{startDate(props)}
\r\n
{startTime(props)} Uhr
\r\n
\r\n );\r\n};\r\n\r\nexport default AppointmentDate;\r\n","import { useContext, useEffect, useState } from 'react';\r\nimport Badge from 'react-bootstrap/Badge';\r\nimport Nav from 'react-bootstrap/Nav';\r\nimport { BsChatDots } from 'react-icons/bs';\r\nimport VideochatContext from '../../context/videochatContext';\r\nimport { IAppointment } from '../../utils/appointmentUtils';\r\nimport { isDateToday } from '../../utils/dateUtils';\r\nimport Chat, { getAppointmentChatEntry, IAppointmentChat, IIncomingMessage, MessageIdType } from '../Chat/Chat';\r\nimport MyTooltip from '../Tooltip/MyTooltip';\r\nimport { StyledAppointmentCardFooter } from './StyledCard';\r\n\r\ninterface IAppointmentChatIcon extends IAppointment {\r\n chatOpen: boolean;\r\n numberUnreadMsg?: number;\r\n}\r\n\r\nexport const AppointmentChatIcon = (props: IAppointmentChatIcon) => {\r\n const { vsstate, vsdispatch } = useContext(VideochatContext);\r\n const [numberUnread, setNumberUnread] = useState(0);\r\n const [showUnreadBadge, setShowUnreadBadge] = useState(false);\r\n\r\n useEffect(() => {\r\n const numberUnreadMsg = getNumberUnreadMessages();\r\n if (!props.chatOpen && numberUnreadMsg && numberUnreadMsg > 0) {\r\n setNumberUnread(numberUnreadMsg);\r\n setShowUnreadBadge(true);\r\n }\r\n }, [vsstate.appointmentChat, vsstate.numberUnreadMessages]);\r\n\r\n const toggleChatOpen = (currentChatOpenStatus: boolean) => {\r\n let appointmentChat;\r\n\r\n const appointmentChatEntry = getAppointmentChatEntry(vsstate.appointmentChat, props.id);\r\n if (appointmentChatEntry) {\r\n appointmentChat = vsstate.appointmentChat.map((item) => {\r\n if (item.id === props.id) {\r\n item.numberUnreadMsg = 0;\r\n }\r\n return item;\r\n });\r\n }\r\n\r\n setNumberUnread(0);\r\n setShowUnreadBadge(false);\r\n\r\n vsdispatch({\r\n type: 'SETAPPOINTMENTCHAT',\r\n appointmentChat: appointmentChat,\r\n });\r\n\r\n return !currentChatOpenStatus;\r\n };\r\n\r\n const getNumberUnreadMessages = () => {\r\n const appointmentChatEntry = getAppointmentChatEntry(vsstate.appointmentChat, props.id);\r\n return appointmentChatEntry?.numberUnreadMsg;\r\n };\r\n\r\n const handleChatIconClick = () => {\r\n let appointmentChat;\r\n\r\n const appointmentChatEntry = getAppointmentChatEntry(vsstate.appointmentChat, props.id);\r\n if (appointmentChatEntry) {\r\n appointmentChat = vsstate.appointmentChat.map((item) => {\r\n if (item.id === props.id) {\r\n if (!item.chatOpen) {\r\n item.numberUnreadMsg = 0;\r\n setNumberUnread(0);\r\n setShowUnreadBadge(false);\r\n }\r\n item.chatOpen = toggleChatOpen(item.chatOpen);\r\n }\r\n return item;\r\n });\r\n } else {\r\n const appChatValue: IAppointmentChat = {\r\n id: props.id,\r\n chatOpen: true,\r\n };\r\n appointmentChat = vsstate.appointmentChat;\r\n appointmentChat.push(appChatValue);\r\n }\r\n\r\n vsdispatch({\r\n type: 'SETAPPOINTMENTCHAT',\r\n appointmentChat: appointmentChat,\r\n });\r\n };\r\n\r\n return (\r\n
\r\n handleChatIconClick()}>\r\n }\r\n >\r\n \r\n {showUnreadBadge && (\r\n \r\n {numberUnread}\r\n \r\n )}\r\n
\r\n );\r\n};\r\n\r\nexport const AppointmentChat = (props: IAppointment) => {\r\n const [allIncomingMessages, setAllIncomingMessages] = useState([]);\r\n const { vsstate } = useContext(VideochatContext);\r\n useEffect(() => {\r\n getAllIncomingMessages(props);\r\n }, []);\r\n\r\n useEffect(() => {\r\n const appointmentChatEntry = getAppointmentChatEntry(vsstate.appointmentChat, props.id);\r\n if (appointmentChatEntry) {\r\n if (appointmentChatEntry.incomingMessages) {\r\n setAllIncomingMessages(appointmentChatEntry.incomingMessages);\r\n }\r\n }\r\n // return () => {\r\n // cleanup\r\n // }\r\n }, [vsstate.appointmentChat]);\r\n\r\n const getAllIncomingMessages = (props: IAppointment) => {\r\n if (props.extension) {\r\n props.extension.forEach((extension: any) => {\r\n if (extension.url.endsWith('ChatEntries')) {\r\n const incomingMessages = extension.valueString;\r\n const allMsg: IIncomingMessage[] = JSON.parse(incomingMessages);\r\n setAllIncomingMessages(allMsg);\r\n }\r\n });\r\n }\r\n };\r\n\r\n return (\r\n
\r\n \r\n \r\n \r\n
\r\n );\r\n};\r\n","import { useContext } from 'react';\r\nimport { useNavigate } from 'react-router-dom';\r\nimport TerminierungContext from '../../context/terminierungContext';\r\nimport { Paths } from '../../Routes';\r\nimport { IAppointment } from '../../utils/appointmentUtils';\r\nimport { translateStatus } from '../../utils/pcpUtils';\r\nimport { StyledBadge } from '../Badges/StyledBadge';\r\nimport MyTooltip from '../Tooltip/MyTooltip';\r\n\r\nconst CompleteAppointmentBadge = (props: IAppointment) => {\r\n const navigate = useNavigate();\r\n const { tmdispatch } = useContext(TerminierungContext);\r\n\r\n const handleCompleteAppointment = () => {\r\n tmdispatch({\r\n type: 'SETCANCELNEWAPPOINTMENTDATA',\r\n cancelNewAppointmentData: {\r\n showModal: false,\r\n data: props,\r\n reason: '',\r\n },\r\n });\r\n tmdispatch({\r\n type: 'SELECTCATEGORY',\r\n selectedCategory: {\r\n name: props.serviceType[0].coding[0].display,\r\n id: props.serviceType[0].coding[0].id,\r\n countAPKs: 2,\r\n oneMacro: false,\r\n },\r\n });\r\n navigate(Paths.TERMINIERUNG_ALTERNATE_DATE);\r\n };\r\n\r\n return (\r\n <>\r\n handleCompleteAppointment()}>\r\n {translateStatus(props.status)}\r\n \r\n }\r\n >\r\n \r\n );\r\n};\r\n\r\nexport default CompleteAppointmentBadge;\r\n","import { StyledBadge } from '../../components/Badges/StyledBadge';\r\nimport { appointmentStatus } from '../../globals/global';\r\nimport { IAppointment } from '../../utils/appointmentUtils';\r\nimport { translateStatus } from '../../utils/pcpUtils';\r\nimport CompleteAppointmentBadge from './CompleteAppointment';\r\n\r\nconst AppointmentStatus = (props: IAppointment) => {\r\n if (props.status === appointmentStatus.enteredInError) {\r\n return ;\r\n } else {\r\n return (\r\n \r\n {translateStatus(props.status)}\r\n \r\n );\r\n }\r\n};\r\n\r\nexport default AppointmentStatus;\r\n","import * as React from 'react';\r\nimport Col from 'react-bootstrap/Col';\r\nimport Container from 'react-bootstrap/Container';\r\nimport Form from 'react-bootstrap/Form';\r\nimport Modal from 'react-bootstrap/Modal';\r\nimport Row from 'react-bootstrap/Row';\r\nimport StyledButton from '../../Buttons/StyledButton';\r\nimport StyledCol from '../../Cols/StyledCol';\r\nimport { StyledFormLabelForInput } from '../../StyledForm/SyledForm';\r\nimport { StyledModal } from '../StyledModal/StyledModal';\r\n\r\ninterface ICancelAppointmentModal {\r\n show: boolean;\r\n onHide: () => void;\r\n onInput: (reason: string) => void;\r\n onSubmit: () => void;\r\n commentPossible: boolean;\r\n}\r\n\r\nconst CancelAppointmentModal = (props: ICancelAppointmentModal) => {\r\n const handleSubmit = (event: React.FormEvent) => {\r\n event.preventDefault();\r\n const form = event.currentTarget;\r\n if (form.checkValidity() === false) {\r\n event.preventDefault();\r\n event.stopPropagation();\r\n }\r\n {\r\n props.onSubmit();\r\n }\r\n };\r\n\r\n return (\r\n \r\n \r\n Termin stornieren\r\n \r\n
\r\n \r\n
\r\n \r\n {props.commentPossible && (\r\n \r\n \r\n \r\n Stornierungsgrund\r\n
\r\n {\r\n props.onInput(e.target.value);\r\n }}\r\n />\r\n
\r\n \r\n
\r\n )}\r\n
\r\n
\r\n \r\n \r\n Abbrechen\r\n \r\n \r\n
\r\n
\r\n \r\n Termin stornieren\r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n {/* \r\n
Wollen Sie den Termin wirklich stornieren?
\r\n
\r\n
\r\n \r\n Abbrechen\r\n \r\n
\r\n
\r\n \r\n Termin stornieren\r\n \r\n
\r\n
\r\n
*/}\r\n \r\n );\r\n};\r\n\r\nexport default CancelAppointmentModal;\r\n","import { useContext, useState } from 'react';\r\nimport * as React from 'react';\r\nimport Nav from 'react-bootstrap/Nav';\r\nimport { AiOutlineMinusCircle } from 'react-icons/ai';\r\nimport { useNavigate } from 'react-router-dom';\r\nimport { ThemeContext } from 'styled-components';\r\nimport AlertContext, { AlertOnHide, AlertType } from '../../context/alertContext';\r\nimport LoginContext from '../../context/loginContext';\r\nimport TerminierungContext from '../../context/terminierungContext';\r\nimport { Paths } from '../../Routes';\r\nimport { cancelAppointment } from '../../services/fhir/FHIRAppointment';\r\nimport { cancelEnrollment } from '../../services/RestServices';\r\nimport { showAlertMessage } from '../../utils/alertHandling';\r\nimport { IAppointment } from '../../utils/appointmentUtils';\r\nimport CancelAppointmentModal from '../Modals/CancelAppointmentModal/CancelAppointmentModal';\r\nimport MyTooltip from '../Tooltip/MyTooltip';\r\n\r\nconst CancelAppointment = (props: IAppointment) => {\r\n const navigate = useNavigate();\r\n const themeContext = useContext(ThemeContext);\r\n const { alertdispatch } = useContext(AlertContext);\r\n const { state } = useContext(LoginContext);\r\n const { tmdispatch } = useContext(TerminierungContext);\r\n const [cancelModalShow, setCancelModalShow] = React.useState(false);\r\n const [reason, setReason] = useState('');\r\n\r\n const handleSubmit = async () => {\r\n /* appointment without login */\r\n if (props.enrollCode) {\r\n const cancelRes: any = await cancelEnrollment(props.enrollCode, alertdispatch, reason);\r\n setCancelModalShow(false);\r\n if (cancelRes.info === 'Die Anmeldung ist erfolgreich abgesagt worden.') {\r\n showAlertMessage({\r\n alertTitle: 'Terminabsage',\r\n alertTxt: 'Der Termin wurde erfolgreich abgesagt',\r\n alertType: AlertType.info,\r\n onHide: AlertOnHide.custom,\r\n onHideCustom: onHideAlertModal,\r\n alertdispatch: alertdispatch,\r\n });\r\n } else {\r\n showAlertMessage({\r\n alertTitle: 'Terminabsage',\r\n alertTxt: 'Es ist ein Fehler bei der Terminabsage aufgetreten.',\r\n alertType: AlertType.error,\r\n onHide: AlertOnHide.custom,\r\n onHideCustom: onHideAlertModal,\r\n alertdispatch: alertdispatch,\r\n });\r\n }\r\n\r\n /* appointment with login */\r\n } else {\r\n const cancelRes = await cancelAppointment(state.sessionId, props.id, reason, alertdispatch);\r\n // console.log('cancelRes: ', cancelRes);\r\n if (cancelRes) {\r\n if (cancelRes.ERROR) {\r\n showAlertMessage({\r\n alertTitle: 'Terminabsage',\r\n alertTxt: cancelRes.ERROR,\r\n alertType: AlertType.error,\r\n onHide: AlertOnHide.custom,\r\n onHideCustom: onHideAlertModal,\r\n alertdispatch: alertdispatch,\r\n });\r\n } else {\r\n setCancelModalShow(false);\r\n setReason('');\r\n tmdispatch({\r\n type: 'CANCELEDAPPOINTMENT',\r\n canceledAppointment: true,\r\n });\r\n\r\n /* ask for making alternative date */\r\n if (cancelRes.data.contained) {\r\n tmdispatch({\r\n type: 'SETCANCELNEWAPPOINTMENTDATA',\r\n cancelNewAppointmentData: {\r\n showModal: true,\r\n data: cancelRes.data,\r\n reason: reason,\r\n },\r\n });\r\n }\r\n }\r\n }\r\n }\r\n };\r\n\r\n const onHideAlertModal = () => {\r\n if (props.enrollCode) {\r\n navigate(Paths.HOME);\r\n }\r\n };\r\n\r\n return (\r\n
\r\n setCancelModalShow(true)}>\r\n }\r\n >\r\n \r\n setCancelModalShow(false)}\r\n onInput={(reason: string) => setReason(reason)}\r\n onSubmit={handleSubmit}\r\n commentPossible={true} //comment only with login appointments\r\n />\r\n
\r\n );\r\n};\r\n\r\nexport default CancelAppointment;\r\n","import { useContext } from 'react';\r\nimport Nav from 'react-bootstrap/Nav';\r\nimport { FaBed } from 'react-icons/fa';\r\nimport { ThemeContext } from 'styled-components';\r\nimport TerminierungContext from '../../context/terminierungContext';\r\nimport MyTooltip from '../Tooltip/MyTooltip';\r\n\r\nconst InpatientAppointment = () => {\r\n const themeContext = useContext(ThemeContext);\r\n const { tmdispatch } = useContext(TerminierungContext);\r\n\r\n const inpatientAppointment = async () => {\r\n /*\r\n tmdispatch({\r\n type: 'SETCANCELNEWAPPOINTMENTDATA',\r\n cancelNewAppointmentData: {\r\n showModal: false,\r\n data: props,\r\n reason: APPOINTMENT_POSTPONE_REASON,\r\n },\r\n });\r\n */\r\n };\r\n\r\n return (\r\n
\r\n inpatientAppointment()}>\r\n }\r\n >\r\n \r\n
\r\n );\r\n};\r\n\r\nexport default InpatientAppointment;\r\n","import { useContext } from 'react';\r\nimport { FaHospitalAlt, FaUserNurse } from 'react-icons/fa';\r\nimport { ThemeContext } from 'styled-components';\r\nimport AppPropsContext from '../../context/appPropsContext';\r\nimport TerminierungContext from '../../context/terminierungContext';\r\nimport {\r\n APPOINTMENTTYPE_CAREUNIT,\r\n APPOINTMENTTYPE_DEPARTMENT,\r\n APPOINTMENTTYPE_PRACTITIONER,\r\n APPOINTMENTTYPE_ROOM,\r\n IParticipant,\r\n getLongNameFromAppointmentData,\r\n getParticipantType,\r\n} from '../../utils/appointmentUtils';\r\n\r\nconst Participants = (props: IParticipant) => {\r\n const themeContext = useContext(ThemeContext);\r\n const { apstate } = useContext(AppPropsContext);\r\n const { tmstate } = useContext(TerminierungContext);\r\n\r\n function renderActor(props: IParticipant) {\r\n const showDepartment = apstate.AppointmentSummary.fach;\r\n const showCareUnit = apstate.AppointmentSummary.pflege;\r\n const showRoom = apstate.AppointmentSummary.raum;\r\n const showPractitioner = apstate.AppointmentSummary.behandler;\r\n\r\n const ptype = getParticipantType(props);\r\n\r\n /* Displaying */\r\n if (props.actor.display === '') {\r\n return <>;\r\n } else {\r\n const displayValue = getLongNameFromAppointmentData(props.actor.display);\r\n //const displayValue = props.actor.display;\r\n\r\n switch (ptype) {\r\n case APPOINTMENTTYPE_DEPARTMENT:\r\n if (showDepartment) {\r\n return (\r\n
\r\n {displayValue}\r\n
\r\n );\r\n } else {\r\n return <>;\r\n }\r\n case APPOINTMENTTYPE_CAREUNIT:\r\n if (showCareUnit) {\r\n return (\r\n
\r\n {displayValue}\r\n
\r\n );\r\n } else {\r\n return <>;\r\n }\r\n\r\n case APPOINTMENTTYPE_ROOM:\r\n if (showRoom) {\r\n return (\r\n
\r\n {displayValue}\r\n
\r\n );\r\n } else {\r\n return <>;\r\n }\r\n\r\n case APPOINTMENTTYPE_PRACTITIONER:\r\n if (showPractitioner) {\r\n return (\r\n
\r\n {displayValue}\r\n
\r\n );\r\n } else {\r\n return <>;\r\n }\r\n\r\n default:\r\n // TODO: add exception for unkown actor.reference\r\n return <>;\r\n }\r\n }\r\n }\r\n\r\n return renderActor(props);\r\n};\r\n\r\nexport default Participants;\r\n","import { useContext } from 'react';\r\nimport Nav from 'react-bootstrap/Nav';\r\nimport { BiCalendarEdit } from 'react-icons/bi';\r\nimport { ThemeContext } from 'styled-components';\r\nimport TerminierungContext from '../../context/terminierungContext';\r\nimport { APPOINTMENT_POSTPONE_REASON, IAppointment } from '../../utils/appointmentUtils';\r\nimport MyTooltip from '../Tooltip/MyTooltip';\r\n\r\nconst PostponeAppointment = (props: IAppointment) => {\r\n const themeContext = useContext(ThemeContext);\r\n const { tmdispatch } = useContext(TerminierungContext);\r\n\r\n const postponeAppointment = async () => {\r\n tmdispatch({\r\n type: 'SETCANCELNEWAPPOINTMENTDATA',\r\n cancelNewAppointmentData: {\r\n showModal: false,\r\n data: props,\r\n reason: APPOINTMENT_POSTPONE_REASON,\r\n },\r\n });\r\n };\r\n\r\n return (\r\n
\r\n postponeAppointment()}>\r\n }\r\n >\r\n \r\n
\r\n );\r\n};\r\n\r\nexport default PostponeAppointment;\r\n","import { useContext, useEffect, useState } from 'react';\r\nimport Col from 'react-bootstrap/Col';\r\nimport Container from 'react-bootstrap/Container';\r\nimport Row from 'react-bootstrap/Row';\r\nimport { FaHospitalAlt } from 'react-icons/fa';\r\nimport { useNavigate } from 'react-router-dom';\r\nimport styled, { ThemeContext } from 'styled-components';\r\nimport { Paths } from '../../Routes';\r\nimport AppointmentDate, { startDate } from '../../components/Cards/AppointmentDate';\r\nimport {\r\n StyledAppointmentCard,\r\n StyledAppointmentCardBody,\r\n StyledAppointmentCardFooter,\r\n StyledAppointmentCardHeader,\r\n} from '../../components/Cards/StyledCard';\r\nimport AppPropsContext from '../../context/appPropsContext';\r\nimport LoginContext from '../../context/loginContext';\r\nimport TerminierungContext from '../../context/terminierungContext';\r\nimport VideochatContext from '../../context/videochatContext';\r\nimport { appointmentStatus } from '../../globals/global';\r\nimport {\r\n APPOINTMENTTYPE_DEPARTMENT,\r\n IAppointment,\r\n IParticipant,\r\n getMacroNameFromAppointment,\r\n getParticipantType,\r\n getSelectedReasonFromAppointment,\r\n isAppSeriesAppointment,\r\n sortParticipantsForCard,\r\n} from '../../utils/appointmentUtils';\r\nimport StyledButton from '../Buttons/StyledButton';\r\nimport { isChatOpen } from '../Chat/Chat';\r\nimport {\r\n AppointmentCardButtonCol,\r\n AppointmentCardDateCol,\r\n AppointmentCardHeaderStatusButtonCol,\r\n AppointmentCardStatusCol,\r\n} from '../Cols/StyledCol';\r\nimport { AppointmentCardStatusButtonRow } from '../Rows/StyledRow';\r\nimport { AppointmentChat, AppointmentChatIcon } from './AppointmentChat';\r\nimport AppointmentStatus from './AppointmentStatus';\r\nimport CancelAppointment from './CancelAppointment';\r\nimport InpatientAppointment from './InpatientAppointment';\r\nimport Participants from './Participants';\r\nimport PostponeAppointment from './PostponeAppointment';\r\nconst moment = require('moment');\r\n\r\nconst DetailsButtonParentDiv = styled.div`\r\n background-color: white;\r\n text-align: right;\r\n`;\r\n\r\nconst DetailsButton = styled(StyledButton)`\r\n width: 50%;\r\n margin-left: 10px;\r\n margin-right: 10px;\r\n margin-bottom: 10px;\r\n`;\r\n\r\nfunction displayParticipants(appointment: IAppointment, standort?: string, color?: string) {\r\n const sortedParticipant = sortParticipantsForCard(appointment.participant);\r\n\r\n const allParticipants: any[] = [];\r\n\r\n if (standort && standort.length > 0) {\r\n allParticipants.push(\r\n
\r\n {standort}\r\n
,\r\n );\r\n }\r\n\r\n const participants = sortedParticipant.map((data: IParticipant, index: number) => (\r\n
\r\n \r\n
\r\n ));\r\n\r\n allParticipants.push(participants);\r\n return allParticipants;\r\n}\r\n\r\nconst AppointmentCard = (props: IAppointment) => {\r\n const { apstate } = useContext(AppPropsContext);\r\n const { vsstate } = useContext(VideochatContext);\r\n const { tmstate } = useContext(TerminierungContext);\r\n const themeContext = useContext(ThemeContext);\r\n const [chatOpen, setChatOpen] = useState(false);\r\n const { state, dispatch } = useContext(LoginContext);\r\n const navigate = useNavigate();\r\n\r\n useEffect(() => {\r\n // const isChatOpen = () => {\r\n // let appointmentChatEntry = vsstate.appointmentChat.find((e) => e.id === props.id);\r\n // if (appointmentChatEntry) {\r\n // return appointmentChatEntry.chatOpen;\r\n // }\r\n // return false;\r\n // };\r\n\r\n if (isChatOpen(vsstate.appointmentChat, props.id)) {\r\n setChatOpen(true);\r\n } else {\r\n setChatOpen(false);\r\n }\r\n }, [JSON.stringify(vsstate.appointmentChat)]);\r\n\r\n const showMacroName = () => {\r\n let macroName = getMacroNameFromAppointment(props);\r\n if (macroName.length <= 0) {\r\n macroName = tmstate.selectedCategory.name;\r\n }\r\n\r\n return (\r\n \r\n \r\n
{macroName}
\r\n \r\n
\r\n );\r\n };\r\n\r\n const showReason = () => {\r\n let name = '';\r\n const selectedReason = getSelectedReasonFromAppointment(props);\r\n\r\n if (selectedReason && selectedReason.length > 0) {\r\n name = selectedReason;\r\n } else if (tmstate.selectedReason && tmstate.selectedReason.reasonName) {\r\n name = tmstate.selectedReason.reasonName;\r\n } else {\r\n /* if no reason, fallback to macro */\r\n const macroName = getMacroNameFromAppointment(props);\r\n if (macroName.length <= 0) {\r\n name = tmstate.selectedCategory.name;\r\n } else {\r\n name = macroName;\r\n }\r\n }\r\n\r\n return (\r\n \r\n \r\n
{name}
\r\n \r\n
\r\n );\r\n };\r\n\r\n const isInpatient = () => {\r\n if (!props.extension) {\r\n return false;\r\n }\r\n for (const ext of props.extension) {\r\n if (ext.url === 'http://www.principa.siegele-software.com/isInpatient' && ext.valueBoolean == true) {\r\n return true;\r\n }\r\n }\r\n return false;\r\n };\r\n\r\n const showPostponeAppointmentIcon = () => {\r\n let showIcon = true;\r\n const dateStart = moment(props.start);\r\n const today = moment();\r\n if (dateStart.isSame(today, 'day')) {\r\n const startHour = dateStart.format('HH');\r\n if (startHour === '00') {\r\n showIcon = false; //then we asume that it is a Soforttermin\r\n }\r\n }\r\n if (isAppSeriesAppointment(props)) {\r\n showIcon = false;\r\n }\r\n if (isInpatient()) {\r\n showIcon = false;\r\n }\r\n\r\n return showIcon;\r\n };\r\n\r\n const getEncounterTitle = () => {\r\n const sortedParticipant = sortParticipantsForCard(props.participant);\r\n let department = '';\r\n for (const data of sortedParticipant) {\r\n const ptype = getParticipantType(data);\r\n if (ptype === APPOINTMENTTYPE_DEPARTMENT) {\r\n department = data.actor.display;\r\n break;\r\n }\r\n }\r\n return startDate(props) + department;\r\n };\r\n const activateEncounter = () => {\r\n dispatch({\r\n type: 'SETENCOUNTER',\r\n encounterId: props.id,\r\n encounterTitle: getEncounterTitle(),\r\n });\r\n navigate(Paths.JOURNEY);\r\n };\r\n\r\n return (\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 {props.isCancelable &&\r\n props.status !== appointmentStatus.cancelled &&\r\n props.status !== appointmentStatus.arrived ? (\r\n <>\r\n {showPostponeAppointmentIcon() ? (\r\n \r\n ) : (\r\n <>\r\n )}\r\n {isInpatient() ? <> : }\r\n \r\n ) : (\r\n <>\r\n )}\r\n {props.showChatIcon && props.showChatIcon === true && !isInpatient() ? (\r\n <>\r\n \r\n \r\n ) : (\r\n <>\r\n )}\r\n {isInpatient() ? (\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 {/* {showMacroName()} */}\r\n {showReason()}\r\n \r\n \r\n {displayParticipants(\r\n props,\r\n apstate.AppointmentSummary.standort ? tmstate.journeyData.site : '',\r\n themeContext.icon.passive.color,\r\n )}\r\n \r\n \r\n \r\n {props.comment ? (\r\n <>\r\n
\r\n \r\n {props.comment}\r\n \r\n
\r\n \r\n ) : (\r\n <>\r\n )}\r\n {state.activeUserId && state.activeUserId != '0' && state.isLoggedIn ? (\r\n \r\n \r\n Details\r\n \r\n \r\n ) : (\r\n <>\r\n )}\r\n {chatOpen ? : <>}\r\n
\r\n \r\n );\r\n};\r\n\r\nexport default AppointmentCard;\r\n","import { createContext } from 'react';\r\n\r\nexport enum AlertOnHide {\r\n onlyClose = 1,\r\n goToHome,\r\n custom,\r\n reload,\r\n}\r\n\r\nexport enum AlertType {\r\n error,\r\n info,\r\n}\r\n\r\nexport type InitialAlertType = {\r\n alertMessage: {\r\n showModal: boolean;\r\n alertTitle: string;\r\n alertTxt: string;\r\n alertType: AlertType;\r\n onHide: AlertOnHide;\r\n onHideCustom: any;\r\n buttonName?: string;\r\n };\r\n};\r\n\r\nexport const initialAlertState = {\r\n alertMessage: {\r\n showModal: false,\r\n alertTitle: '',\r\n alertTxt: '',\r\n alertType: AlertType.info,\r\n onHide: AlertOnHide.onlyClose,\r\n onHideCustom: undefined,\r\n buttonName: 'OK',\r\n },\r\n};\r\n\r\nconst AlertContext = createContext<{\r\n alertstate: InitialAlertType;\r\n alertdispatch: React.Dispatch;\r\n}>({\r\n alertstate: initialAlertState,\r\n alertdispatch: () => null,\r\n});\r\n\r\nexport default AlertContext;\r\n","import * as React from 'react';\r\nimport { IQuestionnaireWL } from '../../container/Fragebogen/QuestionnaireWL';\r\nimport { AlertOnHide, AlertType } from '../../context/alertContext';\r\nimport { InitialLoginType } from '../../context/loginContext';\r\nimport { InitialQuestionnaireType } from '../../context/questionnaireContext';\r\nimport { getBaseURL, getFhirURL } from '../../globals/global';\r\nimport { responseErrorHandling } from '../../utils/errorHandling';\r\nimport { getFHIRConfig } from './fhirConstants';\r\n\r\nconst fhir = require('fhir.js');\r\n\r\nconst QUESSTIONNAIRE_RESPONSE = 'QuestionnaireResponse';\r\n\r\nexport const GET = 'GET';\r\nexport const POST = 'POST';\r\nexport const PUT = 'PUT';\r\n\r\nexport const fetchOptions = (method: string, sessionId: string) => ({\r\n method: method,\r\n headers: {\r\n Accept: '*/*',\r\n 'Content-Type': 'application/json',\r\n Authorization: sessionId,\r\n },\r\n});\r\n\r\nexport const getQuestionnaires = async (state: InitialLoginType, alertdispatch: React.Dispatch) => {\r\n return await fhir(getFHIRConfig(state.sessionId))\r\n .search({\r\n type: 'Questionnaire',\r\n query: { patRoleId: state.activeUserId, requestTime: new Date().toISOString() },\r\n })\r\n .catch(function (e: any) {\r\n responseErrorHandling({\r\n response: e,\r\n alertdispatch: alertdispatch,\r\n });\r\n });\r\n};\r\n\r\nexport const getQuestionnaireById = async (\r\n state: InitialLoginType,\r\n request: string,\r\n alertdispatch: React.Dispatch,\r\n) => {\r\n return await fhir(getFHIRConfig(state.sessionId))\r\n .search({\r\n type: 'Questionnaire',\r\n query: { name: request, patRoleId: state.activeUserId, requestTime: new Date().toISOString() },\r\n })\r\n .catch(function (e: any) {\r\n responseErrorHandling({\r\n response: e,\r\n alertdispatch: alertdispatch,\r\n });\r\n });\r\n};\r\n\r\nexport const getQuestionnaireByFHIRId = async (\r\n state: InitialLoginType,\r\n fhirId: string,\r\n encounterId: string,\r\n alertdispatch: React.Dispatch,\r\n) => {\r\n return await fhir(getFHIRConfig(state.sessionId))\r\n .search({\r\n type: 'Questionnaire',\r\n query: {\r\n id: fhirId,\r\n patRoleId: state.activeUserId,\r\n encounterId: encounterId,\r\n requestTime: new Date().toISOString(),\r\n },\r\n })\r\n .catch(function (e: any) {\r\n responseErrorHandling({\r\n response: e,\r\n alertdispatch: alertdispatch,\r\n });\r\n });\r\n};\r\n\r\nexport const getQuestionnaireContent = async (\r\n sessionId: string,\r\n request: string,\r\n alertdispatch: React.Dispatch,\r\n) => {\r\n return await fhir(getFHIRConfig(sessionId))\r\n .search({\r\n type: request,\r\n })\r\n .catch(function (e: any) {\r\n responseErrorHandling({\r\n response: e,\r\n alertdispatch: alertdispatch,\r\n });\r\n });\r\n};\r\n\r\nexport const deleteQuestionnaireContent = async (\r\n state: InitialLoginType,\r\n qId: string,\r\n alertdispatch: React.Dispatch,\r\n) => {\r\n return await fhir(getFHIRConfig(state.sessionId))\r\n .delete({\r\n type: 'QuestionnaireResponse/' + qId,\r\n })\r\n .catch(function (e: any) {\r\n responseErrorHandling({\r\n response: e,\r\n alertdispatch: alertdispatch,\r\n });\r\n });\r\n};\r\n\r\nexport const getQuestionnaireOTPAuth = async (state: IQuestionnaireWL) => {\r\n const session = 'PCP ' + state.otp;\r\n\r\n const query: IQuestionnaireWL = {\r\n name: state.name,\r\n userId: state.userId,\r\n t0: state.t0,\r\n requestTime: new Date().toISOString(),\r\n };\r\n\r\n if (state.reason) {\r\n query.reason = state.reason;\r\n }\r\n\r\n let baseUrl = state.baseURL;\r\n if (baseUrl !== undefined && !baseUrl?.endsWith('/fhir')) {\r\n baseUrl = baseUrl + '/fhir';\r\n }\r\n\r\n const response = await fhir(getFHIRConfig(session, baseUrl)).search({\r\n type: 'Questionnaire',\r\n query,\r\n });\r\n\r\n if (response?.data && response.data?.entry && response.data.entry.length > 0) {\r\n return response;\r\n } else {\r\n return null;\r\n }\r\n};\r\n\r\nexport const sendQuestionnaire = async (\r\n state: InitialLoginType,\r\n qstate: InitialQuestionnaireType,\r\n alertdispatch: React.Dispatch,\r\n status: string,\r\n targetPatId: number,\r\n) => {\r\n let userId = '';\r\n let sessionId = '';\r\n if (qstate.isExternalRequest) {\r\n userId = qstate.externalUserId;\r\n sessionId = qstate.externalOTP;\r\n } else {\r\n userId = state.activeUserId;\r\n sessionId = state.sessionId;\r\n }\r\n\r\n if (targetPatId > 0) {\r\n userId = targetPatId?.toString();\r\n }\r\n\r\n const qr = {\r\n resourceType: QUESSTIONNAIRE_RESPONSE,\r\n status: status,\r\n questionnaire: { reference: 'Questionnaire/' + qstate.selectedQuestionnaire.resource.id },\r\n subject: { reference: 'Patient/' + userId },\r\n authored: new Date(),\r\n context: { reference: 'Encounter/' + userId + (qstate.encounterId ? '_' + qstate.encounterId : '_null') },\r\n // context: { reference: 'Encounter/' + userId },\r\n request: {\r\n method: 'PUT',\r\n url: getFhirURL() + '/' + QUESSTIONNAIRE_RESPONSE + '/qr_' + qstate.qData.id,\r\n },\r\n item: qstate.selectedAnswers.item,\r\n };\r\n\r\n let baseurl = getBaseURL();\r\n if (qstate.externalBaseURL) {\r\n baseurl = qstate.externalBaseURL;\r\n }\r\n if (qstate.isExternalRequest) {\r\n try {\r\n const url =\r\n baseurl +\r\n '/fhir/' +\r\n 'QuestionnaireResponse?name=' +\r\n qstate.selectedQuestionnaire.resource.id +\r\n '&userId=' +\r\n userId +\r\n '&t0=' +\r\n qstate.externalT0;\r\n\r\n return await fetch(url, {\r\n ...fetchOptions(POST, sessionId),\r\n body: JSON.stringify(qr),\r\n });\r\n // return await res.json();\r\n } catch (error) {\r\n responseErrorHandling({\r\n response: error,\r\n alertdispatch: alertdispatch,\r\n alertMessage: {\r\n alertTitle: 'Fragebogen',\r\n alertTxt: 'Fehler beim senden des Fragebogens',\r\n alertType: AlertType.error,\r\n onHide: AlertOnHide.onlyClose,\r\n },\r\n });\r\n }\r\n } else {\r\n return await fhir(getFHIRConfig(sessionId))\r\n .create({\r\n resource: qr,\r\n })\r\n .catch(function (e: any) {\r\n responseErrorHandling({\r\n response: e,\r\n alertdispatch: alertdispatch,\r\n alertMessage: {\r\n alertTitle: 'Fragebogen',\r\n alertTxt: 'Fehler beim senden des Fragebogens',\r\n alertType: AlertType.error,\r\n onHide: AlertOnHide.onlyClose,\r\n },\r\n });\r\n });\r\n }\r\n};\r\n\r\nexport const updateQuestionnaireContent = async (\r\n state: InitialLoginType,\r\n qstate: InitialQuestionnaireType,\r\n alertdispatch: React.Dispatch,\r\n) => {\r\n let userId = '';\r\n let sessionId = '';\r\n if (qstate.isExternalRequest) {\r\n userId = qstate.externalUserId;\r\n sessionId = qstate.externalOTP;\r\n } else {\r\n userId = state.activeUserId;\r\n sessionId = state.sessionId;\r\n }\r\n\r\n let baseurl = getBaseURL();\r\n if (qstate.externalBaseURL) {\r\n baseurl = qstate.externalBaseURL;\r\n }\r\n if (qstate.isExternalRequest) {\r\n try {\r\n const url =\r\n baseurl +\r\n '/fhir/' +\r\n 'QuestionnaireResponse/' +\r\n qstate.questionnaireBody.data.id +\r\n '?name=' +\r\n qstate.selectedQuestionnaire.resource.name +\r\n '&userId=' +\r\n userId +\r\n '&t0=' +\r\n qstate.externalT0;\r\n\r\n return await fetch(url, {\r\n ...fetchOptions(PUT, sessionId),\r\n body: JSON.stringify(qstate.questionnaireBody.data),\r\n });\r\n // return await res.json();\r\n } catch (error) {\r\n responseErrorHandling({\r\n response: error,\r\n alertdispatch: alertdispatch,\r\n alertMessage: {\r\n alertTitle: 'Fragebogen',\r\n alertTxt: 'Fehler beim Speichern des Fragebogens',\r\n alertType: AlertType.error,\r\n onHide: AlertOnHide.onlyClose,\r\n },\r\n });\r\n }\r\n } else {\r\n return await fhir(getFHIRConfig(sessionId))\r\n .update({\r\n resource: qstate.questionnaireBody.data,\r\n })\r\n .catch(function (e: any) {\r\n responseErrorHandling({\r\n response: e,\r\n alertdispatch: alertdispatch,\r\n alertMessage: {\r\n alertTitle: 'Fragebogen',\r\n alertTxt: 'Fehler beim Speichern des Fragebogens',\r\n alertType: AlertType.error,\r\n onHide: AlertOnHide.onlyClose,\r\n },\r\n });\r\n });\r\n }\r\n};\r\n","import { createContext } from 'react';\r\n\r\nexport type InitialThemeType = {\r\n theme: string;\r\n navbarCollapsed: boolean;\r\n};\r\n\r\nexport const initialThemeState = {\r\n theme: 'PCP',\r\n navbarCollapsed: false,\r\n};\r\n\r\n// const LoginContext = createContext(initialLoginState);\r\nconst ThemeContext = createContext<{\r\n themestate: InitialThemeType;\r\n themedispatch: React.Dispatch;\r\n}>({\r\n themestate: initialThemeState,\r\n themedispatch: () => null,\r\n});\r\n\r\nexport default ThemeContext;\r\n","import { createContext } from 'react';\r\n\r\nexport interface ISignaturePadDevice {\r\n deviceName: string;\r\n serialNumber: string;\r\n firmwareVersion: string;\r\n supportsRSA: boolean;\r\n canStoreEncryptKey: boolean;\r\n padConnectionType: string;\r\n padIndex: number;\r\n displayWidth: number;\r\n displayHeight: number;\r\n xResolution: number;\r\n yResolution: number;\r\n scaleFactorX: number;\r\n scaleFactorY: number;\r\n sampleRate: number;\r\n}\r\n\r\nexport interface ISigData {\r\n pictureData: string;\r\n certId: string;\r\n rsaSignature: string;\r\n signData: string;\r\n signingCert: string;\r\n}\r\n\r\nexport interface ISignotecDeviceActions {\r\n sendClicked: boolean;\r\n cancelClicked: boolean;\r\n}\r\n\r\nexport type InitialSigPadType = {\r\n deviceData: ISignaturePadDevice;\r\n sigData: ISigData;\r\n deviceActions: ISignotecDeviceActions; //action that are clicked direct on the Signature Device\r\n canvasRef: any;\r\n};\r\n\r\nexport const initialSigPadState = {\r\n deviceData: {\r\n deviceName: '',\r\n canStoreEncryptKey: false,\r\n firmwareVersion: '',\r\n serialNumber: '',\r\n supportsRSA: false,\r\n padConnectionType: '',\r\n padIndex: 0,\r\n displayHeight: 0,\r\n displayWidth: 0,\r\n sampleRate: 0,\r\n scaleFactorX: 0,\r\n scaleFactorY: 0,\r\n xResolution: 0,\r\n yResolution: 0,\r\n },\r\n sigData: {\r\n certId: '',\r\n pictureData: '',\r\n rsaSignature: '',\r\n signData: '',\r\n signingCert: '',\r\n },\r\n deviceActions: {\r\n sendClicked: false,\r\n cancelClicked: false,\r\n },\r\n canvasRef: null,\r\n};\r\n\r\nconst SigPadContext = createContext<{\r\n sigpadstate: InitialSigPadType;\r\n sigpaddispatch: React.Dispatch;\r\n}>({\r\n sigpadstate: initialSigPadState,\r\n sigpaddispatch: () => null,\r\n});\r\n\r\nexport default SigPadContext;\r\n","import moment from 'moment';\r\n\r\nexport const getBirthdayPrettyFormatedWithAge = (birthdate: string) => {\r\n if (birthdate !== undefined) {\r\n const date = moment(birthdate, 'YYYY-MM-DD', true);\r\n date.locale('de');\r\n return date.format('DD.MM.YYYY') + ' (' + moment().diff(date, 'years') + ' Jahre)';\r\n }\r\n\r\n return birthdate;\r\n};\r\n\r\nexport const isDateToday = (date: string) => {\r\n const momentDate = moment(date);\r\n const isToday = momentDate.isSame(moment(), 'day');\r\n return isToday;\r\n};\r\n\r\nexport const isDateBeforeToday = (date: string | Date) => {\r\n const momentDate = moment(date);\r\n const isBeforeToday = momentDate.isBefore(moment(), 'day');\r\n return isBeforeToday;\r\n};\r\n\r\n/**\r\n * get the elapsed time for a time with format (HH:mm - HH:mm)\r\n *\r\n * @param time\r\n * @returns\r\n * the elapsed time for a time with format (HH:mm - HH:mm)\r\n */\r\nexport const getCalculatedElapsedTimeFromEndFormat = (time: string) => {\r\n const times = time.split(' - ');\r\n return moment(times[0], 'HH:mm').fromNow();\r\n};\r\n\r\nexport const getCurrentDateTime = () => {\r\n // return moment().format('YYYY-MM-DDTHH:mm:ss');\r\n return moment().format();\r\n};\r\n\r\nexport const setTimeOnDate = (date: string, time: string) => {\r\n const timeParts = time.split(':');\r\n return moment(date)\r\n .set({ hour: parseInt(timeParts[0]), minute: parseInt(timeParts[1]) })\r\n .format();\r\n};\r\n\r\n/**\r\n * get the current time with format (HH:mm)\r\n */\r\nexport const getCurrentTime = () => {\r\n const time = moment().format('LT');\r\n return time;\r\n};\r\n\r\nexport const monthNameConverter = (month: string) => {\r\n let convertedMonth = month;\r\n if (month.includes('Januar')) {\r\n convertedMonth = month.replace('Januar', 'Jänner');\r\n }\r\n\r\n return convertedMonth;\r\n};\r\n\r\n/**\r\n * get the weekday from a date\r\n *\r\n * @param date\r\n * the date to get the weekday from\r\n * @param format\r\n * the format to return the weekday in (e.g. 'dddd' for the full name of the weekday)\r\n * @returns\r\n * the weekday from a date\r\n */\r\nexport const getWeekDay = (date: string, format: string) => {\r\n const momentDate = moment(date);\r\n return momentDate.format(format);\r\n};\r\n","import { useResizedScreenResolution } from '../../hooks/useScreenResolution';\r\n\r\nexport interface IFramePDF {\r\n src: string;\r\n}\r\n\r\nconst IFramePDF = (props: IFramePDF) => {\r\n const [getResizedHeight] = useResizedScreenResolution();\r\n // return ;\r\n return (\r\n \r\n );\r\n};\r\n\r\nexport default IFramePDF;\r\n","import 'chartjs-plugin-annotation';\r\nimport moment, { Moment } from 'moment';\r\nimport { ITableData } from '../components/TableProvider/TableProvider';\r\nimport { IAppCharts } from './../components/Charts/AppCharts/AppCharts';\r\nimport { isMobile, isTablet } from './screenResolution';\r\n\r\nexport interface IChartProps {\r\n chartName?: string;\r\n chartType?: string;\r\n mobileProps?: IAppCharts;\r\n displayOption: number;\r\n chartOptions: IOptions;\r\n chartData: IDatasetProps;\r\n targetChart1?: IDatasetProps;\r\n targetChart2?: IDatasetProps;\r\n targetChart3?: IDatasetProps;\r\n targetBarrier?: IDatasetProps;\r\n targetArea?: IDatasetProps;\r\n targetCeiling?: IDatasetProps;\r\n multiLine?: IDatasetProps;\r\n chartViewLimits: ILimits;\r\n labels: any[];\r\n labelOption: boolean;\r\n tooltipPrecisionVal: number;\r\n // labelButton: number[];\r\n // setLabelOpt: (opt: boolean, val: React.SetStateAction) => void;\r\n}\r\n\r\nexport interface IDatasetProps {\r\n AXIS: string;\r\n COLOR: string;\r\n DECDIGIT: string;\r\n OPACITY: string;\r\n SHOWHD: string;\r\n TITLELONG: string;\r\n TYPE: string;\r\n YMIN: number;\r\n YMAX: number;\r\n data: any[];\r\n label: string;\r\n}\r\nexport interface IOptions {\r\n animation: {\r\n duration: number;\r\n };\r\n scales: {\r\n xAxes: {\r\n bounds: string;\r\n distribution: string;\r\n offset: boolean;\r\n time: { unit: string };\r\n type: string;\r\n min: number;\r\n max: number;\r\n };\r\n yAxes: {\r\n min: number;\r\n max: number;\r\n };\r\n axisLeft: {\r\n unit: string;\r\n };\r\n axisRight: {\r\n unit: string;\r\n factorFromLeft: number;\r\n };\r\n };\r\n extraTables?: [\r\n {\r\n name: string;\r\n id: string;\r\n },\r\n ];\r\n}\r\n\r\nexport interface ILimits {\r\n fiveYears: Moment;\r\n oneYear: Moment;\r\n oneMonth: Moment;\r\n oneWeek: Moment;\r\n}\r\n\r\nexport interface IGetChartData {\r\n chartLoaded: boolean;\r\n foundChartData: boolean;\r\n chartData: IChartProps;\r\n}\r\n\r\nexport interface IGetTableData {\r\n tableTitle: string;\r\n tableData: ITableData;\r\n}\r\n\r\nexport interface IChartDataset {\r\n chartProps: IChartProps;\r\n barPercentage?: number;\r\n}\r\n\r\nexport interface IChartOptions {\r\n chartProps: IChartProps;\r\n chartSettings: IChartSettings;\r\n ticksXMin: Moment;\r\n ticksXMax: Moment;\r\n ticksMinRotation?: number;\r\n ticksMaxRotation?: number;\r\n ticksLabelOffset?: number;\r\n scalesOffset?: boolean;\r\n updateLimits: (e: any) => void;\r\n}\r\n\r\nexport interface IChartSettings {\r\n isMobile: boolean;\r\n height: number;\r\n padding: number;\r\n rotation: number;\r\n}\r\n\r\nexport const initalChartData = {\r\n displayOption: 1,\r\n chartOptions: {\r\n animation: { duration: 0 },\r\n scales: {\r\n xAxes: { bounds: '', distribution: '', offset: false, time: { unit: '' }, type: '', min: 0, max: 0 },\r\n yAxes: { min: 0, max: 0 },\r\n axisLeft: {\r\n unit: '',\r\n },\r\n axisRight: {\r\n unit: '',\r\n factorFromLeft: 0,\r\n },\r\n },\r\n },\r\n chartData: {\r\n AXIS: '',\r\n COLOR: '',\r\n DECDIGIT: '',\r\n OPACITY: '',\r\n SHOWHD: '',\r\n TITLELONG: '',\r\n TYPE: '',\r\n YMIN: 0,\r\n YMAX: 0,\r\n data: [{ t: '', y: null }],\r\n label: '',\r\n },\r\n targetChart1: {\r\n AXIS: '',\r\n COLOR: '',\r\n DECDIGIT: '',\r\n OPACITY: '',\r\n SHOWHD: '',\r\n TITLELONG: '',\r\n TYPE: '',\r\n YMIN: 0,\r\n YMAX: 0,\r\n data: [{ t: '', y: null }],\r\n label: '',\r\n },\r\n targetChart2: {\r\n AXIS: '',\r\n COLOR: '',\r\n DECDIGIT: '',\r\n OPACITY: '',\r\n SHOWHD: '',\r\n TITLELONG: '',\r\n TYPE: '',\r\n YMIN: 0,\r\n YMAX: 0,\r\n data: [{ t: '', y: null }],\r\n label: '',\r\n },\r\n targetChart3: {\r\n AXIS: '',\r\n COLOR: '',\r\n DECDIGIT: '',\r\n OPACITY: '',\r\n SHOWHD: '',\r\n TITLELONG: '',\r\n TYPE: '',\r\n YMIN: 0,\r\n YMAX: 0,\r\n data: [{ t: '', y: null }],\r\n label: '',\r\n },\r\n chartViewLimits: {\r\n fiveYears: moment(),\r\n oneYear: moment(),\r\n oneMonth: moment(),\r\n oneWeek: moment(),\r\n },\r\n labels: [],\r\n labelOption: false,\r\n tooltipPrecisionVal: 1,\r\n};\r\n\r\nexport const chartViews = {\r\n ONE_WEEK_VIEW: 0,\r\n ONE_MONTH_VIEW: 1,\r\n ONE_YEAR_VIEW: 2,\r\n FIVE_YEAR_VIEW: 3,\r\n ALL_VIEW: 4,\r\n};\r\n\r\nexport const charts = {\r\n ACTIVITY: {\r\n name: 'Aktivität',\r\n id: 'CHARTS:ACTIVITY',\r\n requestId: 'CHART:ACTIVITY',\r\n appTypeName: 'ACTIVITY',\r\n },\r\n FATMASS: {\r\n name: 'Fettmasse',\r\n id: 'CHARTS:FATMASS',\r\n requestId: 'CHART:FATMASS',\r\n appTypeName: 'FATMASS',\r\n },\r\n FLI: {\r\n name: 'FLI',\r\n id: 'CHARTS:FLI',\r\n requestId: 'CHART:FLI',\r\n appTypeName: 'FLI',\r\n },\r\n SAM: {\r\n name: 'SAM',\r\n id: 'CHARTS:SAM',\r\n requestId: 'CHART:SAM',\r\n appTypeName: 'SAM',\r\n },\r\n WEIGHT: {\r\n name: 'Gewicht',\r\n id: 'CHARTS:WEIGHT',\r\n requestId: 'CHART:WEIGHT',\r\n appTypeName: 'WEIGHT',\r\n },\r\n BLOODSUGAR: {\r\n name: 'Blutzucker',\r\n id: 'CHARTS:BLOODSUGAR',\r\n requestId: 'CHART:BLOODSUGAR',\r\n appTypeName: 'BLOODSUGAR',\r\n },\r\n};\r\n\r\nexport const tables = {\r\n VALTBL: {\r\n name: 'Rohdaten',\r\n id: 'CHARTS:VALTBL',\r\n requestId: 'CHART:VALTBL',\r\n appTypeName: 'VALTBL',\r\n },\r\n};\r\n\r\n/**\r\n *\r\n * @param jsonRes returns the data chronologically sorted by moment objects\r\n */\r\nexport function transformAndSortDates(jsonRes: { data: { datasets: string | any[] } }) {\r\n // convert dates (string) into moment objects\r\n for (let i = 0; i < jsonRes.data.datasets.length; i++) {\r\n for (let j = 0; j < jsonRes.data.datasets[i].data.length; j++) {\r\n const dateAsMoment = moment(jsonRes.data.datasets[i].data[j].t, 'ddd MMM DD LTS YYYY', 'en');\r\n jsonRes.data.datasets[i].data[j].t = dateAsMoment;\r\n }\r\n }\r\n\r\n // sort data by moment\r\n for (let i = 0; i < jsonRes.data.datasets.length; i++) {\r\n jsonRes.data.datasets[i].data.sort((a: { t: Moment; y: string }, b: { t: Moment; y: string }) => a.t.diff(b.t));\r\n }\r\n return jsonRes;\r\n}\r\n\r\nexport function chartSettingsForDevice(view: string, screenWidth: number, screenHeight: number): IChartSettings {\r\n switch (view) {\r\n case 'max':\r\n if (isTablet(screenWidth)) {\r\n return { isMobile: false, height: screenHeight * 0.28, padding: 20, rotation: 0 };\r\n } else if (isMobile(screenWidth)) {\r\n return { isMobile: true, height: 350, padding: 30, rotation: 0 };\r\n } else {\r\n return { isMobile: false, height: 130, padding: 180, rotation: 0 };\r\n }\r\n case 'fiveYears':\r\n if (isTablet(screenWidth)) {\r\n return { isMobile: false, height: screenHeight * 0.28, padding: 30, rotation: 0 };\r\n } else if (isMobile(screenWidth)) {\r\n return { isMobile: true, height: 350, padding: 30, rotation: 0 };\r\n } else {\r\n return { isMobile: false, height: 130, padding: 100, rotation: 0 };\r\n }\r\n case 'oneYear':\r\n if (isTablet(screenWidth)) {\r\n return { isMobile: false, height: screenHeight * 0.28, padding: 30, rotation: 0 };\r\n } else if (isMobile(screenWidth)) {\r\n return { isMobile: true, height: 350, padding: 30, rotation: 0 };\r\n } else {\r\n return { isMobile: false, height: 120, padding: 60, rotation: 0 };\r\n }\r\n case 'oneMonth':\r\n if (isTablet(screenWidth)) {\r\n return { isMobile: false, height: screenHeight * 0.28, padding: 20, rotation: 0 };\r\n } else if (isMobile(screenWidth)) {\r\n return { isMobile: true, height: 300, padding: 500, rotation: 0 };\r\n } else {\r\n return { isMobile: false, height: 110, padding: 20, rotation: 0 };\r\n }\r\n case 'oneWeek':\r\n if (isTablet(screenWidth)) {\r\n return { isMobile: false, height: screenHeight * 0.28, padding: 20, rotation: 0 };\r\n } else if (isMobile(screenWidth)) {\r\n return { isMobile: true, height: 250, padding: 20, rotation: 0 };\r\n } else {\r\n return { isMobile: false, height: 100, padding: 100, rotation: 0 };\r\n }\r\n default:\r\n return { isMobile: false, height: 130, padding: 180, rotation: 0 };\r\n }\r\n}\r\n\r\nexport const handleDisplayControllers = (props: IAppCharts | undefined): any => {\r\n if (props && props.showControllers !== undefined) {\r\n if (props.showControllers) {\r\n return 'block';\r\n } else {\r\n return 'none';\r\n }\r\n } else {\r\n return 'block';\r\n }\r\n};\r\n\r\nexport const getUnitFromLabel = (props: IChartProps) => {\r\n const unitFromLabel = props.chartData.label.split(' ');\r\n const unit = unitFromLabel[unitFromLabel.length - 1];\r\n return unit;\r\n};\r\n\r\nexport const getDatasetData = (props: IChartDataset) => {\r\n let labelsToDisplay = props.chartProps.labels;\r\n\r\n const unit = getUnitFromLabel(props.chartProps);\r\n\r\n const datasets: any[] = [];\r\n\r\n /* special datasets for MultiLine (Blutzucker) */\r\n if (props.chartProps.chartName === charts.BLOODSUGAR.id) {\r\n /* separate data and fill in \"gaps\" when date changes */\r\n const mmol_l: any[] = [];\r\n const mg_dl: any[] = [];\r\n const labels: any[] = [];\r\n const chartData = props.chartProps.chartData;\r\n let day = chartData.data[0].t;\r\n\r\n /* before a new day begins we fill in a ',' to enable gaps in the line */\r\n for (let i = 0; i < chartData.data.length; i++) {\r\n if (!chartData.data[i].t.isSame(day, 'day')) {\r\n day = chartData.data[i].t;\r\n mmol_l.push(',');\r\n mg_dl.push(',');\r\n labels.push(chartData.data[i].y);\r\n }\r\n if (chartData.data[i].y) {\r\n mmol_l.push(chartData.data[i]);\r\n }\r\n if (chartData.data[i].z) {\r\n // mg_dl.push(chartData.data[i].z);\r\n // mg_dl.push(chartData.data[i]);\r\n }\r\n\r\n labels.push(chartData.data[i].y);\r\n }\r\n mmol_l.push(','); /* fill in ',' at the end for the next step */\r\n mg_dl.push(','); /* fill in ',' at the end for the next step */\r\n labels.push(chartData.data[chartData.data.length - 1].y);\r\n\r\n /* build the dataset that spans the min and max values of every day */\r\n const minSpanData: any[] = [];\r\n const maxSpanData: any[] = [];\r\n let localMin: any;\r\n let localMax: any;\r\n let dailyData: any[] = [];\r\n let firstDailyDataMax: any;\r\n let firstDailyDataMin: any;\r\n let foundFirstData = false;\r\n for (let i = 0; i < mmol_l.length; i++) {\r\n /* build up one array per day */\r\n if (mmol_l[i] !== ',') {\r\n // dailyData.push(Number(mmol_l[i]));\r\n dailyData.push(mmol_l[i]);\r\n if (!foundFirstData) {\r\n firstDailyDataMax = { ...mmol_l[i] };\r\n firstDailyDataMin = { ...mmol_l[i] };\r\n foundFirstData = true;\r\n }\r\n } else {\r\n /* get min and max values from one day */\r\n foundFirstData = false;\r\n let min = +Infinity;\r\n let max = -Infinity;\r\n for (let m = 0; m < dailyData.length; m++) {\r\n const yNumber = Number(dailyData[m].y);\r\n if (yNumber < min) {\r\n min = yNumber;\r\n localMin = dailyData[m];\r\n }\r\n if (yNumber > max) {\r\n max = yNumber;\r\n localMax = dailyData[m];\r\n }\r\n }\r\n\r\n /* add data points with min and max values to create the spanning data */\r\n const lastDailyDataMax = { ...dailyData[dailyData.length - 1] };\r\n lastDailyDataMax.y = localMax;\r\n firstDailyDataMax.y = localMax;\r\n\r\n const lastDailyDataMin = { ...dailyData[dailyData.length - 1] };\r\n lastDailyDataMin.y = localMin;\r\n firstDailyDataMin.y = localMin;\r\n\r\n maxSpanData.push(firstDailyDataMax);\r\n maxSpanData.push(localMax);\r\n maxSpanData.push(lastDailyDataMax);\r\n\r\n // lastDailyData.y = localMin;\r\n // firstDailyData.y = localMin;\r\n\r\n minSpanData.push(firstDailyDataMin);\r\n minSpanData.push(localMin);\r\n minSpanData.push(lastDailyDataMin);\r\n /* fill in gaps after every day for correct label mapping of the data */\r\n minSpanData.push(',');\r\n maxSpanData.push(',');\r\n dailyData = [];\r\n }\r\n }\r\n\r\n labelsToDisplay = labels;\r\n\r\n datasets.push(\r\n {\r\n label: 'Blutzucker',\r\n data: mmol_l,\r\n // yAxisID: 'y-axis-1',\r\n borderColor: '#ed90d5',\r\n backgroundColor: '#ed90d5',\r\n fill: false,\r\n lineTension: 0,\r\n barPercentage: props.barPercentage ? props.barPercentage : 5,\r\n datalabels: {\r\n display: props.chartProps.labelOption, // if labels are enabled, tooltips are disabled and vice versa\r\n align: '-45',\r\n anchor: 'end',\r\n offset: 5,\r\n borderRadius: 4,\r\n backgroundColor: 'rgb(255,255,216)',\r\n opacity: 0.7,\r\n color: 'black',\r\n font: {\r\n weight: 'bold',\r\n },\r\n formatter: function (\r\n value: any,\r\n context: { chart: { data: { labels: { [x: string]: any } } }; dataIndex: string | number },\r\n ) {\r\n const valLabel = Number(context.chart.data.labels[context.dataIndex]).toFixed(\r\n props.chartProps.tooltipPrecisionVal,\r\n );\r\n return valLabel + ' ' + props.chartProps.chartOptions.scales.axisLeft.unit;\r\n },\r\n },\r\n },\r\n {\r\n label: 'Tagesminimum',\r\n data: minSpanData,\r\n borderColor: props.chartProps.chartData.COLOR,\r\n backgroundColor: 'rgba(255,192,203, 0.2)',\r\n fill: '+1',\r\n spanGaps: true,\r\n lineTension: 0,\r\n pointRadius: 0, //don't show point in span\r\n barPercentage: props.barPercentage ? props.barPercentage : 5,\r\n datalabels: {\r\n display: false, // if labels are enabled, tooltips are disabled and vice versa\r\n align: '-45',\r\n anchor: 'end',\r\n offset: 5,\r\n borderRadius: 4,\r\n backgroundColor: 'rgb(255,255,216)',\r\n opacity: 0.7,\r\n color: 'black',\r\n font: {\r\n weight: 'bold',\r\n },\r\n formatter: function (\r\n value: any,\r\n context: { chart: { data: { labels: { [x: string]: any } } }; dataIndex: string | number },\r\n ) {\r\n return (\r\n context.chart.data.labels[context.dataIndex] +\r\n ' ' +\r\n props.chartProps.chartOptions.scales.axisLeft.unit\r\n );\r\n },\r\n },\r\n },\r\n {\r\n label: 'Tagesmaximum',\r\n data: maxSpanData,\r\n borderColor: props.chartProps.chartData.COLOR,\r\n backgroundColor: 'rgba(255,192,203, 0.2)',\r\n spanGaps: true,\r\n fill: '-1',\r\n lineTension: 0,\r\n pointRadius: 0, //don't show point in span\r\n barPercentage: props.barPercentage ? props.barPercentage : 5,\r\n datalabels: {\r\n display: false, // if labels are enabled, tooltips are disabled and vice versa\r\n align: '-45',\r\n anchor: 'end',\r\n offset: 5,\r\n borderRadius: 4,\r\n backgroundColor: 'rgb(255,255,216)',\r\n opacity: 0.7,\r\n color: 'black',\r\n font: {\r\n weight: 'bold',\r\n },\r\n formatter: function (\r\n value: any,\r\n context: { chart: { data: { labels: { [x: string]: any } } }; dataIndex: string | number },\r\n ) {\r\n return (\r\n context.chart.data.labels[context.dataIndex] +\r\n ' ' +\r\n props.chartProps.chartOptions.scales.axisLeft.unit\r\n );\r\n },\r\n },\r\n },\r\n );\r\n /* all other Charts */\r\n } else {\r\n /* add datapoints */\r\n datasets.push({\r\n label: props.chartProps.chartData.label,\r\n data: props.chartProps.chartData.data,\r\n borderColor: props.chartProps.chartData.COLOR,\r\n backgroundColor:\r\n props.chartProps.chartName === charts.ACTIVITY.id\r\n ? 'rgba(170, 206, 41, 1)'\r\n : props.chartProps.chartData.COLOR,\r\n fill: false,\r\n lineTension: 0,\r\n barPercentage: props.barPercentage ? props.barPercentage : 5,\r\n datalabels: {\r\n display: props.chartProps.labelOption, // if labels are enabled, tooltips are disabled and vice versa\r\n align: '-45',\r\n anchor: 'end',\r\n offset: 5,\r\n borderRadius: 4,\r\n backgroundColor: 'rgb(255,255,216)',\r\n opacity: 0.7,\r\n color: 'black',\r\n font: {\r\n weight: 'bold',\r\n },\r\n formatter: function (\r\n value: any,\r\n context: { chart: { data: { labels: { [x: string]: any } } }; dataIndex: string | number },\r\n ) {\r\n return context.chart.data.labels[context.dataIndex] + ' ' + unit; // labels with unit from dataset (e.g. \"kg\", \"%\")\r\n },\r\n },\r\n });\r\n\r\n /* add targetChart1 if not empty */\r\n if (props.chartProps.targetChart1 && props.chartProps.targetChart1.label.length > 0) {\r\n datasets.push({\r\n label: props.chartProps.targetChart1.label,\r\n data: props.chartProps.targetChart1.data,\r\n fill: unit === 'kg' ? 'end' : '+1', // fill to the top of the chart (='end') for weightChart and to dataset 2 (='+1') for bodyfatChart\r\n borderColor: props.chartProps.targetChart1.COLOR,\r\n backgroundColor: unit === 'kg' ? 'rgba(255, 99, 132, 0.2)' : 'rgb(193, 213, 249, 0.4)',\r\n borderWidth: 1,\r\n steppedLine: 'before',\r\n radius: 0,\r\n datalabels: {\r\n labels: {\r\n title: null,\r\n },\r\n },\r\n });\r\n }\r\n\r\n /* add targetChart2 if not empty */\r\n if (props.chartProps.targetChart2 && props.chartProps.targetChart2.label.length > 0) {\r\n datasets.push({\r\n label: props.chartProps.targetChart2.label,\r\n data: props.chartProps.targetChart2.data,\r\n fill: unit === 'kg' ? 1 : '+2', // fill to dataset 1 = targetWeight1 for weightChart and to dataset 4 (='+2') for bodyfatChart (skip hidden dataset)\r\n borderColor: props.chartProps.targetChart2.COLOR,\r\n backgroundColor: unit === 'kg' ? 'rgba(255, 206, 86, 0.2)' : 'rgb(123, 165, 243, 0.4)',\r\n borderWidth: 1,\r\n steppedLine: 'before',\r\n radius: 0,\r\n datalabels: {\r\n labels: {\r\n title: null,\r\n },\r\n },\r\n });\r\n }\r\n\r\n /* add hidden dataset */\r\n datasets.push({\r\n label: 'hiddenDataset',\r\n data: props.chartProps.targetChart2 && props.chartProps.targetChart2.data,\r\n fill: unit === 'kg' ? '+1' : false, // fill to dataset +1 = targetWeight3 for weightChart and don't fill for bodyfatChart\r\n borderColor: props.chartProps.targetChart2 && props.chartProps.targetChart2.COLOR,\r\n backgroundColor: 'rgba(255, 206, 86, 0.2)',\r\n borderWidth: 1,\r\n steppedLine: 'before',\r\n radius: 0,\r\n datalabels: {\r\n labels: {\r\n title: null,\r\n },\r\n },\r\n });\r\n\r\n /* add targetChart3 if not empty */\r\n if (props.chartProps.targetChart3 && props.chartProps.targetChart3.label.length > 0) {\r\n datasets.push({\r\n label: props.chartProps.targetChart3.label,\r\n data: props.chartProps.targetChart3.data,\r\n fill: true, // \"fill area to the bottom of the chart\"\r\n borderColor: props.chartProps.targetChart3.COLOR,\r\n backgroundColor: unit === 'kg' ? 'rgba(75, 192, 192, 0.2)' : 'rgb(53, 117, 237, 0.4)',\r\n borderWidth: 1,\r\n steppedLine: 'before',\r\n radius: 0,\r\n datalabels: {\r\n labels: {\r\n title: null,\r\n },\r\n },\r\n });\r\n }\r\n }\r\n\r\n const data: [any[], any[]] = [datasets, labelsToDisplay];\r\n return data;\r\n};\r\n\r\nexport const getChartOptionsData = (props: IChartOptions) => {\r\n const unit = getUnitFromLabel(props.chartProps);\r\n\r\n let options: any = undefined;\r\n if (props.chartProps.chartName === charts.BLOODSUGAR.id) {\r\n options = {\r\n animation: false,\r\n scales: {\r\n xAxes: [\r\n {\r\n offset: props.scalesOffset ? props.scalesOffset : false,\r\n type: 'time',\r\n time: {\r\n displayFormats: {\r\n day: 'DD.MM.YYYY',\r\n hour: 'DD.MM.YYYY HH:mm',\r\n minute: 'DD.MM.YYYY HH:mm',\r\n second: 'DD.MM.YYYY HH:mm',\r\n millisecond: 'DD.MM.YYYY HH:mm',\r\n },\r\n isoWeekday: true,\r\n },\r\n ticks: {\r\n min: props.ticksXMin,\r\n max: props.ticksXMax,\r\n maxRotation: props.ticksMaxRotation ? props.ticksMaxRotation : props.chartSettings.rotation,\r\n minRotation: props.ticksMinRotation ? props.ticksMinRotation : 0,\r\n autoSkipPadding: props.chartSettings.padding,\r\n labelOffset: props.ticksLabelOffset ? props.ticksLabelOffset : 0,\r\n autoSkip: true,\r\n maxTicksLimit: props.chartSettings.isMobile ? 2 : 4,\r\n },\r\n },\r\n ],\r\n yAxes: [\r\n {\r\n scaleLabel: {\r\n display: true,\r\n fontSize: 14,\r\n labelString: props.chartProps.chartOptions.scales.axisLeft.unit,\r\n },\r\n\r\n ticks: {\r\n suggestedMin: props.chartProps.chartData.YMIN,\r\n suggestedMax: props.chartProps.chartData.YMAX,\r\n },\r\n },\r\n // {\r\n // position: 'right',\r\n // scaleLabel: {\r\n // display: true,\r\n // fontSize: 14,\r\n // labelString: 'mg/dl',\r\n // },\r\n\r\n // ticks: {\r\n // suggestedMin: props.chartProps.chartData.YMIN,\r\n // suggestedMax: props.chartProps.chartData.YMAX,\r\n // },\r\n // },\r\n ],\r\n },\r\n legend: {\r\n labels: {\r\n filter: function (item: { text: string | string[] }) {\r\n if (item.text) {\r\n return !item.text.includes('hiddenDataset'); // Don't show a legend for the duplicated dataset\r\n }\r\n },\r\n },\r\n },\r\n tooltips: {\r\n intersect: props.chartProps.labelOption, // if labels are displayed tooltips are only shown when mouse position intersects with element (less sensitive), for better experience\r\n backgroundColor: 'rgb(255,255,216)',\r\n titleFontColor: 'black',\r\n callbacks: {\r\n label: function (tooltipItem: { yLabel: any }) {\r\n if (tooltipItem?.yLabel) {\r\n const val = Number(tooltipItem?.yLabel).toFixed(props.chartProps.tooltipPrecisionVal);\r\n return val + ' ' + props.chartProps.chartOptions.scales.axisLeft.unit;\r\n }\r\n },\r\n title: function (tooltipItem: any) {\r\n if (tooltipItem[0]?.xLabel) {\r\n return moment(tooltipItem[0]?.xLabel, 'MMM D, YYYY h:mm:ss A', 'de').format(\r\n 'DD.MM.YYYY HH:mm',\r\n );\r\n }\r\n },\r\n labelTextColor: function () {\r\n return 'black';\r\n },\r\n },\r\n filter: function (tooltipItem: { datasetIndex: number }) {\r\n if (tooltipItem.datasetIndex === 0) {\r\n return true;\r\n } else {\r\n return false;\r\n }\r\n // return tooltipItem.datasetIndex !== 3; // don't show tooltips for duplicated dataset\r\n },\r\n },\r\n zoom: {\r\n enabled: true,\r\n mode: 'x',\r\n // Function called once zooming is completed\r\n onZoomComplete: props.updateLimits,\r\n },\r\n pan: {\r\n enabled: true,\r\n mode: 'x',\r\n // Function called once panning is completed\r\n onPanComplete: props.updateLimits,\r\n },\r\n };\r\n } else {\r\n options = {\r\n animation: false,\r\n scales: {\r\n xAxes: [\r\n {\r\n offset: props.scalesOffset ? props.scalesOffset : false,\r\n type: 'time',\r\n time: {\r\n displayFormats: {\r\n day: props.chartProps.chartName === charts.ACTIVITY.id ? 'DD.MM.YYYY' : 'DD.MM.YYYY',\r\n hour:\r\n props.chartProps.chartName === charts.ACTIVITY.id\r\n ? 'DD.MM.YYYY'\r\n : 'DD.MM.YYYY HH:mm',\r\n minute:\r\n props.chartProps.chartName === charts.ACTIVITY.id\r\n ? 'DD.MM.YYYY'\r\n : 'DD.MM.YYYY HH:mm',\r\n second:\r\n props.chartProps.chartName === charts.ACTIVITY.id\r\n ? 'DD.MM.YYYY'\r\n : 'DD.MM.YYYY HH:mm',\r\n millisecond:\r\n props.chartProps.chartName === charts.ACTIVITY.id\r\n ? 'DD.MM.YYYY'\r\n : 'DD.MM.YYYY HH:mm',\r\n },\r\n isoWeekday: true,\r\n },\r\n ticks: {\r\n min: props.ticksXMin,\r\n max: props.ticksXMax,\r\n maxRotation: props.ticksMaxRotation ? props.ticksMaxRotation : props.chartSettings.rotation,\r\n minRotation: props.ticksMinRotation ? props.ticksMinRotation : 0,\r\n autoSkipPadding: props.chartSettings.padding,\r\n labelOffset: props.ticksLabelOffset ? props.ticksLabelOffset : 0,\r\n autoSkip: true,\r\n maxTicksLimit: props.chartSettings.isMobile ? 2 : 4,\r\n },\r\n },\r\n ],\r\n yAxes: [\r\n {\r\n ticks: {\r\n suggestedMin: props.chartProps.chartData.YMIN,\r\n suggestedMax: props.chartProps.chartData.YMAX,\r\n },\r\n },\r\n ],\r\n },\r\n legend: {\r\n labels: {\r\n filter: function (item: { text: string | string[] }) {\r\n if (item.text) {\r\n return !item.text.includes('hiddenDataset'); // Don't show a legend for the duplicated dataset\r\n }\r\n },\r\n },\r\n },\r\n tooltips: {\r\n intersect: props.chartProps.labelOption, // if labels are displayed tooltips are only shown when mouse position intersects with element (less sensitive), for better experience\r\n backgroundColor: 'rgb(255,255,216)',\r\n titleFontColor: 'black',\r\n callbacks: {\r\n label: function (tooltipItem: { yLabel: any }) {\r\n return Number(tooltipItem?.yLabel).toFixed(props.chartProps.tooltipPrecisionVal) + ' ' + unit;\r\n },\r\n title: function (tooltipItem: any) {\r\n return moment(tooltipItem[0]?.xLabel, 'MMM D, YYYY h:mm:ss A', 'de').format(\r\n props.chartProps.chartName === charts.ACTIVITY.id ? 'DD.MM.YYYY' : 'DD.MM.YYYY HH:mm',\r\n );\r\n },\r\n labelTextColor: function () {\r\n return 'black';\r\n },\r\n },\r\n filter: function (tooltipItem: { datasetIndex: number }) {\r\n return tooltipItem.datasetIndex !== 3; // don't show tooltips for duplicated dataset\r\n },\r\n },\r\n zoom: {\r\n enabled: true,\r\n mode: 'x',\r\n // Function called once zooming is completed\r\n onZoomComplete: props.updateLimits,\r\n },\r\n pan: {\r\n enabled: true,\r\n mode: 'x',\r\n // Function called once panning is completed\r\n onPanComplete: props.updateLimits,\r\n },\r\n };\r\n\r\n /* use of chartjs-plugin-annotation - Box Annotations */\r\n if (props.chartProps.chartName === charts.FLI.id) {\r\n options.annotation = {\r\n annotations: [\r\n {\r\n type: 'box',\r\n drawTime: 'beforeDatasetsDraw',\r\n yMin: 0,\r\n yMax: props.chartProps.targetBarrier?.data[0].y,\r\n backgroundColor: 'rgba(184, 216, 62, 0.5)',\r\n borderWidth: 0,\r\n borderColor: 'transparent',\r\n yScaleID: 'y-axis-0',\r\n },\r\n {\r\n type: 'box',\r\n drawTime: 'beforeDatasetsDraw',\r\n yMin: props.chartProps.targetBarrier?.data[0].y,\r\n yMax: props.chartProps.targetArea?.data[0].y,\r\n backgroundColor: 'rgba(249, 205, 90, 0.5)',\r\n borderWidth: 0,\r\n borderColor: 'transparent',\r\n yScaleID: 'y-axis-0',\r\n },\r\n {\r\n type: 'box',\r\n drawTime: 'beforeDatasetsDraw',\r\n yMin: props.chartProps.targetArea?.data[0].y,\r\n yMax: 100,\r\n backgroundColor: 'rgba(205, 50, 50, 0.5)',\r\n borderWidth: 0,\r\n borderColor: 'transparent',\r\n yScaleID: 'y-axis-0',\r\n },\r\n ],\r\n };\r\n }\r\n }\r\n\r\n return options;\r\n};\r\n\r\nexport const getTableDataFromDiagnosticReportResponse = (diagnosticReportResponse: any) => {\r\n let tableTitle = '';\r\n // let tableData = {} as ITableData;\r\n let tableData = {} as any;\r\n\r\n if (diagnosticReportResponse) {\r\n tableTitle = diagnosticReportResponse.data.entry[0].resource.presentedForm[0].title;\r\n tableData = diagnosticReportResponse.data.entry[0].resource.presentedForm[0].extension[0].valueString;\r\n const jsonRes = JSON.parse(tableData);\r\n tableData = jsonRes;\r\n }\r\n\r\n const tableAllData: [string, ITableData] = [tableTitle, tableData];\r\n return tableAllData;\r\n};\r\n\r\nexport const getTableHeight = (screenHeight: number) => {\r\n const tableHeight = screenHeight - 150;\r\n return tableHeight.toString() + 'px';\r\n};\r\n","import { ContentWithoutImpressum } from '../../components/Div/StyledDiv';\r\nimport Impressum, { IImpressumElement } from '../../components/Impressum/Impressum';\r\n\r\ninterface IFullScreenImpressum {\r\n show?: boolean;\r\n impressum?: IImpressumElement;\r\n children: React.ReactNode;\r\n}\r\n\r\nconst FullScreenImpressum = (props: IFullScreenImpressum) => {\r\n const showImpressum = props.show !== undefined ? props.show : true;\r\n\r\n if (showImpressum && props.impressum) {\r\n return (\r\n
\r\n {props.children}\r\n \r\n
\r\n );\r\n } else {\r\n return <>{props.children};\r\n }\r\n};\r\n\r\nexport default FullScreenImpressum;\r\n","import Button from 'react-bootstrap/Button';\r\nimport styled from 'styled-components';\r\n\r\nexport interface IButtonProps {\r\n color: string;\r\n colorHover: string;\r\n backgroundColor: string;\r\n backgroundColorHover: string;\r\n borderRadius: string;\r\n borderRadiusTopLeft: string;\r\n borderRadiusTopRight: string;\r\n borderRadiusBottomLeft: string;\r\n borderRadiusBottomRight: string;\r\n border: string;\r\n borderColor: string;\r\n borderColorHover: string;\r\n boxShadow: string;\r\n width?: string;\r\n marginLeft?: string;\r\n}\r\n\r\nconst buttonProps = (props: any): IButtonProps => {\r\n /* defaultValues / primary */\r\n const bp: IButtonProps = {\r\n color: props.theme.button.primary.color,\r\n colorHover: props.theme.button.primary.colorHover,\r\n backgroundColor: props.theme.button.primary.backgroundColor,\r\n backgroundColorHover: props.theme.button.primary.backgroundColorHover,\r\n borderRadius: props.theme.button.borderRadius,\r\n borderRadiusTopLeft: props.theme.button.primary.borderRadiusTopLeft,\r\n borderRadiusTopRight: props.theme.button.primary.borderRadiusTopRight,\r\n borderRadiusBottomLeft: props.theme.button.primary.borderRadiusBottomLeft,\r\n borderRadiusBottomRight: props.theme.button.primary.borderRadiusBottomRight,\r\n border: props.theme.button.border,\r\n borderColor: props.theme.button.primary.borderColor,\r\n borderColorHover: props.theme.button.primary.borderColorHover,\r\n boxShadow: props.theme.button.boxShadow,\r\n };\r\n\r\n if (props.variant === 'primary') {\r\n return bp;\r\n } else if (props.variant === 'secondary') {\r\n bp.color = props.theme.button.secondary.color;\r\n bp.colorHover = props.theme.button.secondary.colorHover;\r\n bp.backgroundColor = props.theme.button.secondary.backgroundColor;\r\n bp.backgroundColorHover = props.theme.button.secondary.backgroundColorHover;\r\n bp.border = props.theme.button.secondary.border;\r\n bp.borderColor = props.theme.button.secondary.borderColor;\r\n bp.borderColorHover = props.theme.button.secondary.borderColorHover;\r\n } else if (props.variant === 'warning') {\r\n bp.color = props.theme.button.warning.color;\r\n bp.colorHover = props.theme.button.warning.colorHover;\r\n bp.backgroundColor = props.theme.button.warning.backgroundColor;\r\n bp.backgroundColorHover = props.theme.button.warning.backgroundColorHover;\r\n bp.border = props.theme.button.warning.border;\r\n bp.borderColor = props.theme.button.warning.borderColor;\r\n bp.borderColorHover = props.theme.button.warning.borderColorHover;\r\n } else if (props.variant === 'success') {\r\n bp.color = props.theme.button.success.color;\r\n bp.colorHover = props.theme.button.success.colorHover;\r\n bp.backgroundColor = props.theme.button.success.backgroundColor;\r\n bp.backgroundColorHover = props.theme.button.success.backgroundColorHover;\r\n bp.border = props.theme.button.success.border;\r\n bp.borderColor = props.theme.button.success.borderColor;\r\n bp.borderColorHover = props.theme.button.success.borderColorHover;\r\n } else if (props.variant === 'danger') {\r\n bp.color = props.theme.button.danger.color;\r\n bp.colorHover = props.theme.button.danger.colorHover;\r\n bp.backgroundColor = props.theme.button.danger.backgroundColor;\r\n bp.backgroundColorHover = props.theme.button.danger.backgroundColorHover;\r\n bp.border = props.theme.button.danger.border;\r\n bp.borderColor = props.theme.button.danger.borderColor;\r\n bp.borderColorHover = props.theme.button.danger.borderColorHover;\r\n /* #dc3545\r\n } else if (props.variant === 'pill') {\r\n bp.color = 'black';\r\n bp.backgroundColor = 'white';\r\n bp.backgroundColorHover = pcpColors.lightGray;\r\n bp.borderColor = pcpColors.midGray;\r\n bp.borderColorHover = pcpColors.lightGray;\r\n bp.borderRadius = '20px';\r\n bp.boxShadow = '0 2px 0 0 #e0e1e1, 0 0 2px 0 #e0e1e1';\r\n } else if (props.variant === 'lowP') {\r\n bp.backgroundColor = pcpColors.p4;\r\n bp.borderColor = pcpColors.p4;\r\n bp.backgroundColorHover = pcpColors.p5;\r\n bp.borderColorHover = pcpColors.p5;*/\r\n }\r\n\r\n return bp;\r\n};\r\n\r\nconst StyledButton = styled(Button)`\r\n min-width: 100px;\r\n width: ${(props) => (props.width ? props.width : null)};\r\n height: ${(props) => (props.height ? props.height : null)};\r\n margin-left: ${(props) => (props.marginLeft ? props.marginLeft : null)};\r\n margin-top: ${(props) => (props.marginTop ? props.marginTop : '5px')};\r\n margin-right: ${(props) => (props.marginRight ? props.marginRight : null)};\r\n margin-bottom: ${(props) => (props.marginBottom ? props.marginBottom : null)};\r\n padding-right: ${(props) => (props.paddingRight ? props.paddingRight : null)};\r\n padding-left: ${(props) => (props.paddingLeft ? props.paddingLeft : null)};\r\n color: ${(props) => (props.color ? props.color : buttonProps(props).color)};\r\n background-color: ${(props) =>\r\n props.backgroundColor ? props.backgroundColor : buttonProps(props).backgroundColor};\r\n\r\n border-top-left-radius: ${(props) =>\r\n props.borderRadiusTopLeft ? props.borderRadiusTopLeft : buttonProps(props).borderRadiusTopLeft};\r\n border-top-right-radius: ${(props) =>\r\n props.borderRadiusTopRight ? props.borderRadiusTopRight : buttonProps(props).borderRadiusTopRight};\r\n border-bottom-left-radius: ${(props) =>\r\n props.borderRadiusBottomLeft ? props.borderRadiusBottomLeft : buttonProps(props).borderRadiusBottomLeft};\r\n border-bottom-right-radius: ${(props) =>\r\n props.borderRadiusBottomRight ? props.borderRadiusBottomRight : buttonProps(props).borderRadiusBottomRight};\r\n border-radius: ${(props) => (props.borderRadius ? props.borderRadius : buttonProps(props).borderRadius)};\r\n border: ${(props) => (props.border ? props.border : buttonProps(props).border)};\r\n border-color: ${(props) => (props.borderColor ? props.borderColor : buttonProps(props).borderColor)};\r\n box-shadow: ${(props) => (props.boxShadow ? props.boxShadow : buttonProps(props).boxShadow)};\r\n &:hover {\r\n color: ${(props) => (props.colorHover ? props.colorHover : buttonProps(props).colorHover)};\r\n background-color: ${(props) =>\r\n props.backgroundColorHover ? props.backgroundColorHover : buttonProps(props).backgroundColorHover};\r\n border-color: ${(props) =>\r\n props.borderColorHover ? props.borderColorHover : buttonProps(props).borderColorHover};\r\n }\r\n &:focus {\r\n color: ${(props) => (props.colorHover ? props.colorHover : buttonProps(props).colorHover)};\r\n background-color: ${(props) =>\r\n props.backgroundColorHover ? props.backgroundColorHover : buttonProps(props).backgroundColorHover};\r\n border-color: ${(props) =>\r\n props.borderColorHover ? props.borderColorHover : buttonProps(props).borderColorHover};\r\n }\r\n &:hover:focus:active {\r\n color: ${(props) => (props.colorHover ? props.colorHover : buttonProps(props).colorHover)};\r\n background-color: ${(props) =>\r\n props.backgroundColorHover ? props.backgroundColorHover : buttonProps(props).backgroundColorHover};\r\n border-color: ${(props) =>\r\n props.borderColorHover ? props.borderColorHover : buttonProps(props).borderColorHover};\r\n }\r\n &:active {\r\n color: ${(props) => (props.colorHover ? props.colorHover : buttonProps(props).colorHover)} !important;\r\n background-color: ${(props) =>\r\n props.backgroundColorHover\r\n ? props.backgroundColorHover\r\n : buttonProps(props).backgroundColorHover} !important;\r\n border-color: ${(props) =>\r\n props.borderColorHover ? props.borderHover : buttonProps(props).borderColorHover} !important;\r\n }\r\n &:disabled {\r\n background-color: #eeeeee;\r\n color: gray;\r\n border: solid 1px;\r\n border-color: #aaaaaa;\r\n }\r\n`;\r\n\r\nexport default StyledButton;\r\n","import * as React from 'react';\r\nimport { useContext, useEffect, useState } from 'react';\r\nimport Modal from 'react-bootstrap/Modal';\r\nimport styled from 'styled-components';\r\nimport AlertContext, { AlertOnHide, AlertType } from '../../../context/alertContext';\r\nimport { ISigData } from '../../../context/sigpadContext';\r\nimport { addSignatureToPDF } from '../../../services/RestServices';\r\nimport { showAlertMessage } from '../../../utils/alertHandling';\r\nimport StyledButton from '../../Buttons/StyledButton';\r\nimport IFramePDF from '../../IFrame/IFramePDF';\r\nimport SignDocumentModal, { ISignDocumentModalShow } from '../SignDocumentModal/SignDocumentModal';\r\n\r\ninterface IModalCst {\r\n fullScreen?: boolean;\r\n}\r\n\r\nexport const ModalCst = styled(Modal)`\r\n .modal-dialog {\r\n max-width: ${(props) => (props.fullScreen ? '100%' : '90%')};\r\n max-height: ${(props) => (props.fullScreen ? '100%' : '93%')};\r\n margin: ${(props) => (props.fullScreen ? '0' : '1.75rem auto')};\r\n height: ${(props) => (props.fullScreen ? '100%' : '93%')};\r\n width: ${(props) => (props.fullScreen ? '100%' : null)};\r\n }\r\n .modal-content {\r\n min-height: ${(props) => (props.fullScreen ? '100%' : '93%')};\r\n border-radius: ${(props) => props.theme.modal.borderRadius};\r\n box-shadow: ${(props) => props.theme.modal.boxShadow};\r\n }\r\n\r\n .modal-body {\r\n min-height: ${(props) => (props.fullScreen ? '100%' : '93%')};\r\n }\r\n`;\r\n\r\nexport interface IPDFModal {\r\n show: boolean;\r\n onHide(): void;\r\n modalTitle: string;\r\n pdfData: any;\r\n isSignable?: boolean;\r\n isSigned?: boolean;\r\n diagnosticReportData?: any;\r\n fullScreen?: boolean;\r\n}\r\n\r\nconst PDFModal = (props: IPDFModal) => {\r\n const [signModalShow, setSignModalShow] = useState({\r\n show: false,\r\n });\r\n const [docIsSigned, setDocIsSigned] = useState(false);\r\n const [pdfDocAfterSign, setPdfDocAfterSign] = useState();\r\n\r\n const { alertdispatch } = useContext(AlertContext);\r\n\r\n useEffect(() => {\r\n if (props.isSigned && props.isSigned === true) {\r\n setDocIsSigned(true);\r\n }\r\n }, [props.show]);\r\n\r\n const showSignModal = (e: React.MouseEvent) => {\r\n if (e) {\r\n e.currentTarget.blur();\r\n }\r\n setSignModalShow({\r\n show: true,\r\n });\r\n };\r\n\r\n const onSignModalSigned = async (sigData: ISigData) => {\r\n setSignModalShow({ show: false });\r\n if (sigData && sigData.pictureData.length > 0 && props.diagnosticReportData) {\r\n const response = await addSignatureToPDF(sigData, props.diagnosticReportData);\r\n if (response.success !== 'true') {\r\n showAlertMessage({\r\n alertTitle: 'PDF signieren',\r\n alertTxt: 'Es ist ein Fehler bei der Signierung des PDFs aufgetreten.',\r\n alertType: AlertType.error,\r\n onHide: AlertOnHide.onlyClose,\r\n alertdispatch: alertdispatch,\r\n });\r\n } else {\r\n setDocIsSigned(true);\r\n if (response.pdfURF) {\r\n setPdfDocAfterSign();\r\n }\r\n }\r\n }\r\n };\r\n\r\n const onSignModalCancel = () => {\r\n setSignModalShow({ show: false });\r\n };\r\n\r\n const showPDFData = () => {\r\n if (docIsSigned && pdfDocAfterSign) {\r\n return pdfDocAfterSign;\r\n } else {\r\n return props.pdfData;\r\n }\r\n };\r\n\r\n return (\r\n <>\r\n \r\n \r\n {props.modalTitle}\r\n \r\n {showPDFData()}\r\n \r\n {props.isSignable && (\r\n showSignModal(e)}>\r\n {docIsSigned ? 'ist signiert' : 'Signieren'}\r\n \r\n )}\r\n props.onHide()}>\r\n Schließen\r\n \r\n \r\n \r\n \r\n \r\n );\r\n};\r\n\r\nexport default PDFModal;\r\n","import Button from 'react-bootstrap/Button';\r\nimport ToggleButton from 'react-bootstrap/ToggleButton';\r\nimport styled from 'styled-components';\r\n\r\nconst SelectButton = styled(Button)`\r\n margin: 10px;\r\n padding: ${(props) => (props.padding ? props.padding : '.375rem .50rem')};\r\n height: ${(props) => (props.height ? props.height : '80px')};\r\n width: ${(props) => (props.width ? props.width : '300px')};\r\n color: rgb(36, 94, 173);\r\n background-color: ${(props) =>\r\n props.selected ? props.theme.selectButton.backgroundColorActive : props.theme.selectButton.backgroundColor};\r\n border-color: rgb(36, 94, 173);\r\n font-weight: normal;\r\n font-size: ${(props) => (props.fontSize ? props.fontSize : 'medium')};\r\n margin-left: 0;\r\n box-shadow: ${(props) => (props.theme.button.boxShadow ? props.theme.button.boxShadow : 'none')};\r\n border-radius: ${(props) => (props.theme.button.borderRadius ? props.theme.button.borderRadius : 'none')};\r\n\r\n &:hover {\r\n background-color: ${(props) => props.theme.selectButton.backgroundColorHover};\r\n border-color: ${(props) => props.theme.selectButton.backgroundColorHover};\r\n color: rgb(36, 94, 173);\r\n }\r\n &:active {\r\n background-color: ${(props) => props.theme.selectButton.backgroundColorActive} !important;\r\n border-color: ${(props) => props.theme.selectButton.backgroundColorActive} !important;\r\n color: rgb(36, 94, 173);\r\n }\r\n\r\n &.btn-outline-primary:not(:disabled):not(.disabled).active,\r\n .btn-outline-primary:not(:disabled):not(.disabled):active,\r\n .show > .btn-outline-primary.dropdown-toggle {\r\n color: black;\r\n background-color: white;\r\n border-color: lightblue;\r\n }\r\n`;\r\n\r\nexport const TimeslotButton = styled(SelectButton)`\r\n variant: 'outline-primary';\r\n margin: 0px;\r\n background-color: rgba(173, 207, 3, 0.5);\r\n box-shadow: none;\r\n font-size: small;\r\n /* font-size: 0.58rem; */\r\n height: 80%;\r\n width: 100%;\r\n display: inline-block;\r\n border-radius: 2px;\r\n text-align: center;\r\n @media screen and (max-width: 520px) {\r\n /* font-size: 10px; */\r\n font-size: 0.58rem;\r\n padding: 4px 2px 4px 2px;\r\n max-width: 37px;\r\n overflow: hidden;\r\n white-space: nowrap;\r\n }\r\n @media screen and (max-width: 400px) {\r\n max-width: 32px;\r\n }\r\n @media screen and (max-width: 414px) {\r\n max-width: 90%;\r\n font-size: small;\r\n // word-break: break-all;\r\n }\r\n`;\r\n\r\nexport const SelectRadioToggleButton = styled(ToggleButton)`\r\n width: 180px;\r\n`;\r\n\r\nexport default SelectButton;\r\n","import Col from 'react-bootstrap/Col';\r\nimport styled from 'styled-components';\r\n\r\ninterface ICol {\r\n borderLeft?: string;\r\n paddingLeft?: string;\r\n paddingRight?: string;\r\n textAlign?: string;\r\n justifyContent?: string;\r\n}\r\n\r\nconst StyledCol = styled(Col)`\r\n border-left: ${(prop) => (prop.borderLeft ? prop.borderLeft : 'none')};\r\n padding-left: ${(prop) => (prop.paddingLeft ? prop.paddingLeft : '15px')};\r\n padding-right: ${(prop) => (prop.paddingRight ? prop.paddingRight : '15px')};\r\n text-align: ${(prop) => (prop.textAlign ? prop.textAlign : 'left')};\r\n`;\r\n\r\nexport const MainHeaderCol = styled(Col)`\r\n height: 100%;\r\n display: flex;\r\n align-items: center;\r\n justify-content: center;\r\n width: 100%;\r\n`;\r\n\r\nexport const ChartsHeaderCol = styled(Col)`\r\n height: 100%;\r\n display: flex;\r\n align-items: center;\r\n justify-content: center;\r\n width: 100%;\r\n`;\r\n\r\nexport const MainHeaderButtonCol = styled(Col)`\r\n height: 100%;\r\n display: flex;\r\n align-items: center;\r\n justify-content: flex-end;\r\n width: 100%;\r\n`;\r\n\r\nexport const ChartsButtonCol = styled(Col)`\r\n height: 100%;\r\n display: flex;\r\n align-items: center;\r\n justify-content: ${(prop) => (prop.justifyContent ? prop.justifyContent : 'flex-end')};\r\n width: 100%;\r\n`;\r\n\r\nexport const AppointmentCardHeaderCol = styled(Col)`\r\n height: 100%;\r\n display: flex;\r\n align-items: center;\r\n justify-content: center;\r\n align-self: center;\r\n width: 100%;\r\n`;\r\n\r\nexport const AppointmentCardHeaderStatusButtonCol = styled(Col)`\r\n justify-content: flex-end;\r\n`;\r\n\r\nexport const AppointmentCardDateCol = styled(AppointmentCardHeaderCol)`\r\n justify-content: left;\r\n`;\r\n\r\nexport const AppointmentCardStatusCol = styled(AppointmentCardHeaderCol)`\r\n padding: 0;\r\n justify-content: flex-start;\r\n`;\r\n\r\nexport const AppointmentCardButtonCol = styled(AppointmentCardHeaderCol)`\r\n padding: 0;\r\n justify-content: flex-end;\r\n`;\r\n\r\nexport const StyledColNoPadding = styled(Col)`\r\n padding: 0 !important;\r\n padding-right: 0 !important;\r\n padding-left: 0 !important;\r\n`;\r\n\r\nexport const DateSwitcherTimeslotCol = styled(Col)`\r\n height: 100%;\r\n padding-left: 5px;\r\n padding-right: 5px;\r\n padding-top: 5px;\r\n\r\n @media screen and (max-width: 580px) {\r\n padding-left: 2px;\r\n padding-right: 2px;\r\n padding-top: 5px;\r\n }\r\n`;\r\n\r\nexport const DateSwitcherTimeslotColStartEnd = styled(Col)`\r\n height: 100%;\r\n padding-left: 5px;\r\n padding-right: 5px;\r\n padding-top: 5px;\r\n flex: 0 0 40px;\r\n\r\n @media screen and (max-width: 580px) {\r\n padding-left: 2px;\r\n padding-right: 2px;\r\n padding-top: 5px;\r\n flex: 0 0 30px;\r\n }\r\n @media screen and (max-width: 360px) {\r\n padding-left: 2px;\r\n padding-right: 2px;\r\n padding-top: 5px;\r\n flex: 0 0 25px;\r\n }\r\n`;\r\n\r\nexport const DateCol = styled(Col)`\r\n font-size: small;\r\n text-align: center;\r\n @media screen and (max-width: 500px) {\r\n font-size: 13px;\r\n }\r\n`;\r\n\r\nexport const DatePlaceholderCol = styled(Col)`\r\n @media screen and (min-width: 897px) {\r\n min-width: 277px;\r\n }\r\n @media screen and (min-width: 985px) {\r\n min-width: 230px;\r\n }\r\n`;\r\n\r\nexport const QuestionnaireSwitcherColStartEnd = styled(Col)`\r\n flex-grow: 1;\r\n padding-left: 0px;\r\n padding-right: 0px;\r\n`;\r\n\r\nexport const QuestionnaireSwitcherColTitle = styled(Col)`\r\n flex-grow: 1;\r\n padding-left: 0px;\r\n padding-right: 0px;\r\n`;\r\n\r\nexport const ButtonColLeft = styled(Col)`\r\n padding-left: 15px;\r\n padding-right: 15px;\r\n\r\n @media screen and (max-width: 500px) {\r\n padding-left: 0px;\r\n padding-right: 5px;\r\n }\r\n`;\r\n\r\nexport const ButtonColMiddle = styled(Col)`\r\n padding-left: 15px;\r\n padding-right: 15px;\r\n\r\n @media screen and (max-width: 500px) {\r\n padding-left: 5px;\r\n padding-right: 5px;\r\n }\r\n`;\r\n\r\nexport const ButtonColRight = styled(Col)`\r\n padding-left: 15px;\r\n padding-right: 15px;\r\n\r\n @media screen and (max-width: 500px) {\r\n padding-left: 5px;\r\n padding-right: 0px;\r\n }\r\n`;\r\n\r\nexport default StyledCol;\r\n","import { useContext } from 'react';\r\nimport Card from 'react-bootstrap/Card';\r\nimport Col from 'react-bootstrap/Col';\r\nimport Container from 'react-bootstrap/Container';\r\nimport ListGroup from 'react-bootstrap/ListGroup';\r\nimport Row from 'react-bootstrap/Row';\r\nimport styled from 'styled-components';\r\nimport { ListGroupCst, ListGroupItemCst, StyledProfileCard } from '../../components/Cards/StyledCard';\r\nimport AppPropsContext from '../../context/appPropsContext';\r\nimport TerminierungContext from '../../context/terminierungContext';\r\nimport { getGenderDE } from '../../utils/pcpUtils';\r\n\r\ninterface IPersonalDataSummary {\r\n width?: string;\r\n}\r\n\r\nconst PersonalDataSummary = (props: IPersonalDataSummary) => {\r\n const { tmstate } = useContext(TerminierungContext);\r\n const { apstate } = useContext(AppPropsContext);\r\n\r\n interface IDataItem {\r\n label: string;\r\n data: string;\r\n }\r\n\r\n const DataItem = (props: IDataItem) => {\r\n return (\r\n \r\n \r\n {props.label}\r\n \r\n {props.data}\r\n \r\n \r\n \r\n );\r\n };\r\n\r\n const getPlannedStudiesList = () => {\r\n let studyList = '';\r\n\r\n if (tmstate.personalData.plannedStudies.length > 0) {\r\n for (let i = 0; i < tmstate.personalData.plannedStudies.length; i++) {\r\n if (tmstate.personalData.plannedStudies[i].participate === true) {\r\n if (i === 0) {\r\n studyList = studyList + tmstate.personalData.plannedStudies[i].display;\r\n } else {\r\n studyList = studyList + ', ' + tmstate.personalData.plannedStudies[i].display;\r\n }\r\n }\r\n }\r\n }\r\n\r\n return studyList;\r\n };\r\n\r\n return (\r\n \r\n \r\n Ihre persönlichen Daten\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {apstate.RegistrationVisibleFields.academicTitle === true && (\r\n \r\n )}\r\n {apstate.RegistrationVisibleFields.firstName === true && (\r\n \r\n )}\r\n {apstate.RegistrationVisibleFields.lastName === true && (\r\n \r\n )}\r\n {apstate.RegistrationVisibleFields.birthDate === true && (\r\n \r\n )}\r\n {apstate.RegistrationVisibleFields.gender === true && (\r\n \r\n )}\r\n {apstate.RegistrationVisibleFields.phone === true && (\r\n \r\n )}\r\n {apstate.RegistrationVisibleFields.mobilePhone === true && (\r\n \r\n )}\r\n {apstate.RegistrationVisibleFields.email === true && (\r\n \r\n )}\r\n {apstate.RegistrationVisibleFields.zip === true && (\r\n \r\n )}\r\n {apstate.RegistrationVisibleFields.city === true && (\r\n \r\n )}\r\n {apstate.RegistrationVisibleFields.street === true && (\r\n \r\n )}\r\n {apstate.RegistrationVisibleFields.street === true && (\r\n \r\n )}\r\n {apstate.RegistrationVisibleFields.country === true && (\r\n \r\n )}\r\n {apstate.RegistrationVisibleFields.insuranceNr === true && (\r\n \r\n )}\r\n {apstate.RegistrationVisibleFields.insuranceName === true && (\r\n \r\n )}\r\n {apstate.RegistrationVisibleFields.language === true && (\r\n \r\n )}\r\n {tmstate.personalData.plannedStudies.length > 0 && (\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 PersonalDataSummary;\r\n","import moment from 'moment';\r\n\r\nexport interface ISignPosData {\r\n left: any;\r\n top: any;\r\n width: any;\r\n height: any;\r\n page: number;\r\n}\r\n\r\nexport const getPDFDataFromDiagnosticReportResponse = (\r\n diagnosticReportResponse: any,\r\n filename: string,\r\n date: string,\r\n) => {\r\n let modalTitle = '';\r\n let pdfdata = '';\r\n let pdfsrc = '';\r\n let isSignable = 'false';\r\n let isSigned = 'false';\r\n let signPosData = '';\r\n\r\n const diagReport =\r\n diagnosticReportResponse.data !== undefined ? diagnosticReportResponse.data : diagnosticReportResponse;\r\n\r\n if (diagReport.presentedForm) {\r\n if (date === '') {\r\n if (diagReport.effectiveDateTime) {\r\n date = moment(diagReport.effectiveDateTime).format('L LT');\r\n }\r\n }\r\n if (filename === '') {\r\n if (diagReport.code.coding[0].display) {\r\n filename = diagReport.code.coding[0].display;\r\n }\r\n }\r\n modalTitle = filename + ' / ' + date;\r\n pdfdata = diagReport.presentedForm[0].data;\r\n pdfsrc = 'data:application/pdf;base64,' + pdfdata;\r\n\r\n if (diagReport.extension) {\r\n diagReport.extension.forEach((e) => {\r\n if (e.url.endsWith('isSignable')) {\r\n if (e.valueBoolean === true) {\r\n isSignable = 'true';\r\n }\r\n }\r\n if (e.url.endsWith('isSigned')) {\r\n if (e.valueBoolean === true) {\r\n isSigned = 'true';\r\n }\r\n }\r\n if (e.url.endsWith('signPosData')) {\r\n signPosData = e.valueString;\r\n }\r\n });\r\n }\r\n } else {\r\n modalTitle = 'Kein PDF zum anzeigen vorhanden';\r\n }\r\n\r\n return [modalTitle, pdfsrc, isSignable, isSigned, signPosData];\r\n};\r\n","import Modal from 'react-bootstrap/Modal';\r\nimport styled from 'styled-components';\r\nimport StyledButton from '../../Buttons/StyledButton';\r\n\r\nexport const ModalCst = styled(Modal)`\r\n .modal-dialog {\r\n max-width: 90%;\r\n margin: 1.75rem auto;\r\n }\r\n .modal-content {\r\n border-radius: ${(prop) => (prop.borderRadius ? prop.borderRadius : prop.theme.modal.borderRadius)};\r\n box-shadow: ${(prop) => (prop.boxShadow ? prop.boxShadow : prop.theme.modal.boxShadow)};\r\n }\r\n`;\r\n\r\nexport interface IBlockingAppointmentModal {\r\n show: boolean;\r\n onHide: any;\r\n}\r\n\r\nconst BlockingAppointmentModal = (props: IBlockingAppointmentModal) => {\r\n // useEffect(() => {}, [props.show]);\r\n\r\n return (\r\n <>\r\n \r\n \r\n Dieser Timeslot wurde in der Zwischenzeit bereits vergeben\r\n \r\n Bitte wählen Sie einen neuen Termin aus.\r\n \r\n props.onHide()}>OK\r\n \r\n \r\n \r\n );\r\n};\r\n\r\nexport default BlockingAppointmentModal;\r\n","import { Formik } from 'formik';\r\nimport produce from 'immer';\r\nimport moment from 'moment';\r\nimport * as React from 'react';\r\nimport { useContext, useEffect, useState } from 'react';\r\nimport Col from 'react-bootstrap/Col';\r\nimport Form from 'react-bootstrap/Form';\r\nimport * as yup from 'yup';\r\nimport { StyledFormLabelForInput } from '../../components/StyledForm/SyledForm';\r\nimport AppPropsContext, { IRegistrationFields } from '../../context/appPropsContext';\r\nimport CheckInContext from '../../context/checkInContext';\r\nimport LoginContext, { IPossibleStudies } from '../../context/loginContext';\r\nimport TerminierungContext from '../../context/terminierungContext';\r\nimport { useGoogleAnalytics } from '../../hooks/useGoogleAnalytics';\r\nimport { usePersonalData } from '../../hooks/usePersonalData';\r\nimport { IPlannedStudies } from '../../services/fhir/FHIRPatientResource';\r\nimport { getGenderDE, pattern } from '../../utils/pcpUtils';\r\nimport { Default, Mobile } from '../../utils/screenResolution';\r\nimport StyledButton from '../Buttons/StyledButton';\r\nimport StyledCol from '../Cols/StyledCol';\r\nimport { LeftDiv } from '../Div/StyledDiv';\r\nimport { StyledRowPersonalDataBottom } from '../Rows/StyledRow';\r\nimport './AppointmentPersonalData.css';\r\n\r\nexport interface IAppointmentPersonalData {\r\n handleNext?: any;\r\n handleNextWithActiveStep?(currentActiveStep: number): void;\r\n handleBack?: any;\r\n handleCancel?: any;\r\n directRegistration?: boolean;\r\n currentActiveStep?: number;\r\n showCancelButton?: boolean;\r\n showBackButton?: boolean;\r\n showRegistrationCbx?: boolean;\r\n nextButtonEnabled?: boolean;\r\n showNextButton?: boolean;\r\n isPhysPat?: boolean;\r\n showPrivacyPolicyCbx?: boolean;\r\n}\r\n\r\nconst AppointmentPersonalData = (props: IAppointmentPersonalData) => {\r\n const { state } = useContext(LoginContext);\r\n const { tmstate, tmdispatch } = useContext(TerminierungContext);\r\n const { checkinstate } = useContext(CheckInContext);\r\n const { apstate } = useContext(AppPropsContext);\r\n const [allCurrentStudies, setAllCurrentStudies] = useState();\r\n const [mandFields, setMandFields] = useState({\r\n birthDate: apstate.RegistrationMandFields.birthDate,\r\n city: apstate.RegistrationMandFields.city,\r\n country: apstate.RegistrationMandFields.country,\r\n email: apstate.RegistrationMandFields.email,\r\n firstName: apstate.RegistrationMandFields.firstName,\r\n gender: apstate.RegistrationMandFields.gender,\r\n lastName: apstate.RegistrationMandFields.lastName,\r\n phone: apstate.RegistrationMandFields.phone,\r\n street: apstate.RegistrationMandFields.street,\r\n zip: apstate.RegistrationMandFields.zip,\r\n insuranceNr: apstate.RegistrationMandFields.insuranceNr,\r\n mobilePhone: apstate.RegistrationMandFields.mobilePhone,\r\n academicTitle: apstate.RegistrationMandFields.academicTitle,\r\n insuranceName: apstate.RegistrationMandFields.insuranceName,\r\n language: apstate.RegistrationMandFields.language,\r\n privacyTerms: apstate.RegistrationMandFields.language,\r\n });\r\n\r\n const [cbxRegistrationSelected, setCbxRegistrationSelected] = useState(false);\r\n const [cbxPrivacyPolicySelected, setCbxPrivacyPolicySelected] = useState(false);\r\n\r\n const { getPlannedStudyParticipation } = usePersonalData();\r\n const { sendGoogleAnalyticsPageView } = useGoogleAnalytics();\r\n\r\n useEffect(() => {\r\n sendGoogleAnalyticsPageView({ page: '/AppointmentPersonalData', title: 'Personendaten eingeben' });\r\n\r\n const allStudies: IPlannedStudies[] = [];\r\n\r\n state.possibleStudies.forEach((study) => {\r\n const code = study.code;\r\n const display = study.display;\r\n const participated = getPlannedStudyParticipation(code);\r\n allStudies.push({\r\n code: code,\r\n display: display,\r\n participate: participated,\r\n });\r\n });\r\n\r\n /* get the inital values for the checkboxes */\r\n setAllCurrentStudies(allStudies);\r\n\r\n /* override mand fields */\r\n if (props.isPhysPat) {\r\n setMandFields({\r\n ...mandFields,\r\n email: false,\r\n });\r\n }\r\n }, []);\r\n\r\n const setInsuranceNr = (value: string) => {\r\n if (props.isPhysPat) {\r\n tmdispatch({\r\n type: 'SETPERSONALDATA_PHYSPAT_INSURANCENR',\r\n personalDataPhysPat: {\r\n insuranceNr: value,\r\n },\r\n });\r\n } else {\r\n tmdispatch({\r\n type: 'SETPERSONALDATA_INSURANCENR',\r\n personalData: {\r\n insuranceNr: value,\r\n },\r\n });\r\n }\r\n };\r\n\r\n const setInsuranceName = (value: string) => {\r\n if (props.isPhysPat) {\r\n tmdispatch({\r\n type: 'SETPERSONALDATA_PHYSPAT_INSURANCENAME',\r\n personalDataPhysPat: {\r\n insuranceName: value,\r\n },\r\n });\r\n } else {\r\n tmdispatch({\r\n type: 'SETPERSONALDATA_INSURANCENAME',\r\n personalData: {\r\n insuranceName: value,\r\n },\r\n });\r\n }\r\n };\r\n\r\n const setLanguage = (value: string) => {\r\n if (props.isPhysPat) {\r\n tmdispatch({\r\n type: 'SETPERSONALDATA_PHYSPAT_LANGUAGE',\r\n personalDataPhysPat: {\r\n language: value,\r\n },\r\n });\r\n } else {\r\n tmdispatch({\r\n type: 'SETPERSONALDATA_LANGUAGE',\r\n personalData: {\r\n language: value,\r\n },\r\n });\r\n }\r\n };\r\n\r\n const setMobilePhone = (value: string) => {\r\n if (props.isPhysPat) {\r\n tmdispatch({\r\n type: 'SETPERSONALDATA_PHYSPAT_MOBILEPHONE',\r\n personalDataPhysPat: {\r\n mobilePhone: value,\r\n },\r\n });\r\n } else {\r\n tmdispatch({\r\n type: 'SETPERSONALDATA_MOBILEPHONE',\r\n personalData: {\r\n mobilePhone: value,\r\n },\r\n });\r\n }\r\n };\r\n\r\n const setAcademicTitle = (value: string) => {\r\n if (props.isPhysPat) {\r\n tmdispatch({\r\n type: 'SETPERSONALDATA_PHYSPAT_ACADEMICTITLE',\r\n personalDataPhysPat: {\r\n academicTitle: value,\r\n },\r\n });\r\n } else {\r\n tmdispatch({\r\n type: 'SETPERSONALDATA_ACADEMICTITLE',\r\n personalData: {\r\n academicTitle: value,\r\n },\r\n });\r\n }\r\n };\r\n\r\n const setFirstName = (value: string) => {\r\n if (props.isPhysPat) {\r\n tmdispatch({\r\n type: 'SETPERSONALDATA_PHYSPAT_FIRSTNAME',\r\n personalDataPhysPat: {\r\n firstName: value,\r\n },\r\n });\r\n } else {\r\n tmdispatch({\r\n type: 'SETPERSONALDATA_FIRSTNAME',\r\n personalData: {\r\n firstName: value,\r\n },\r\n });\r\n }\r\n };\r\n\r\n const setLastName = (value: string) => {\r\n if (props.isPhysPat) {\r\n tmdispatch({\r\n type: 'SETPERSONALDATA_PHYSPAT_LASTNAME',\r\n personalDataPhysPat: {\r\n lastName: value,\r\n },\r\n });\r\n } else {\r\n tmdispatch({\r\n type: 'SETPERSONALDATA_LASTNAME',\r\n personalData: {\r\n lastName: value,\r\n },\r\n });\r\n }\r\n };\r\n\r\n const setBirthday = (value: string) => {\r\n let dateFormated = '';\r\n\r\n if (value) {\r\n dateFormated = moment(value).format('DD.MM.yyyy');\r\n }\r\n\r\n if (props.isPhysPat) {\r\n tmdispatch({\r\n type: 'SETPERSONALDATA_PHYSPAT_BIRTHDAY',\r\n personalDataPhysPat: {\r\n birthday: dateFormated,\r\n },\r\n });\r\n } else {\r\n tmdispatch({\r\n type: 'SETPERSONALDATA_BIRTHDAY',\r\n personalData: {\r\n birthday: dateFormated,\r\n },\r\n });\r\n }\r\n };\r\n\r\n const formatBirthdayForFormik = (birthday: string) => {\r\n if (moment(birthday, 'dd.MM.yyyy', true).isValid()) {\r\n const dateFormated = moment(birthday).format('YYYY-DD-MM');\r\n console.log('dateFormated: ' + dateFormated);\r\n return dateFormated;\r\n } else {\r\n return birthday;\r\n }\r\n };\r\n\r\n const setGender = (value: string) => {\r\n if (props.isPhysPat) {\r\n tmdispatch({\r\n type: 'SETPERSONALDATA_PHYSPAT_GENDER',\r\n personalDataPhysPat: {\r\n gender: value,\r\n },\r\n });\r\n } else {\r\n tmdispatch({\r\n type: 'SETPERSONALDATA_GENDER',\r\n personalData: {\r\n gender: value,\r\n },\r\n });\r\n }\r\n };\r\n\r\n const setEmail = (value: string) => {\r\n if (props.isPhysPat) {\r\n tmdispatch({\r\n type: 'SETPERSONALDATA_PHYSPAT_EMAIL',\r\n personalDataPhysPat: {\r\n email: value,\r\n },\r\n });\r\n } else {\r\n tmdispatch({\r\n type: 'SETPERSONALDATA_EMAIL',\r\n personalData: {\r\n email: value,\r\n },\r\n });\r\n }\r\n };\r\n\r\n const setTelephone = (value: string) => {\r\n if (props.isPhysPat) {\r\n tmdispatch({\r\n type: 'SETPERSONALDATA_PHYSPAT_TELEPHONE',\r\n personalDataPhysPat: {\r\n telephone: value,\r\n },\r\n });\r\n } else {\r\n tmdispatch({\r\n type: 'SETPERSONALDATA_TELEPHONE',\r\n personalData: {\r\n telephone: value,\r\n },\r\n });\r\n }\r\n };\r\n\r\n const setStreet = (value: string) => {\r\n if (props.isPhysPat) {\r\n tmdispatch({\r\n type: 'SETPERSONALDATA_PHYSPAT_STREET',\r\n personalDataPhysPat: {\r\n street: value,\r\n },\r\n });\r\n } else {\r\n tmdispatch({\r\n type: 'SETPERSONALDATA_STREET',\r\n personalData: {\r\n street: value,\r\n },\r\n });\r\n }\r\n };\r\n\r\n const setHouseNr = (value: string) => {\r\n if (props.isPhysPat) {\r\n tmdispatch({\r\n type: 'SETPERSONALDATA_PHYSPAT_HOUSENR',\r\n personalDataPhysPat: {\r\n housenr: value,\r\n },\r\n });\r\n } else {\r\n tmdispatch({\r\n type: 'SETPERSONALDATA_HOUSENR',\r\n personalData: {\r\n housenr: value,\r\n },\r\n });\r\n }\r\n };\r\n\r\n const setCity = (value: string) => {\r\n if (props.isPhysPat) {\r\n tmdispatch({\r\n type: 'SETPERSONALDATA_PHYSPAT_CITY',\r\n personalDataPhysPat: {\r\n city: value,\r\n },\r\n });\r\n } else {\r\n tmdispatch({\r\n type: 'SETPERSONALDATA_CITY',\r\n personalData: {\r\n city: value,\r\n },\r\n });\r\n }\r\n };\r\n\r\n const setZip = (value: string) => {\r\n if (props.isPhysPat) {\r\n tmdispatch({\r\n type: 'SETPERSONALDATA_PHYSPAT_ZIP',\r\n personalDataPhysPat: {\r\n zip: value,\r\n },\r\n });\r\n } else {\r\n tmdispatch({\r\n type: 'SETPERSONALDATA_ZIP',\r\n personalData: {\r\n zip: value,\r\n },\r\n });\r\n }\r\n };\r\n\r\n const setCountry = (value: string) => {\r\n if (props.isPhysPat) {\r\n tmdispatch({\r\n type: 'SETPERSONALDATA_PHYSPAT_COUNTRY',\r\n personalDataPhysPat: {\r\n country: value,\r\n },\r\n });\r\n } else {\r\n tmdispatch({\r\n type: 'SETPERSONALDATA_COUNTRY',\r\n personalData: {\r\n country: value,\r\n },\r\n });\r\n }\r\n };\r\n\r\n const setUsername = (value: string) => {\r\n if (props.isPhysPat) {\r\n if (cbxRegistrationSelected) {\r\n tmdispatch({\r\n type: 'SETPERSONALDATA_PHYSPAT_USERNAME',\r\n personalDataPhysPat: {\r\n username: value,\r\n },\r\n });\r\n } else {\r\n tmdispatch({\r\n type: 'SETPERSONALDATA_PHYSPAT_USERNAME',\r\n personalDataPhysPat: {\r\n username: '',\r\n },\r\n });\r\n }\r\n } else {\r\n if (cbxRegistrationSelected) {\r\n tmdispatch({\r\n type: 'SETPERSONALDATA_USERNAME',\r\n personalData: {\r\n username: value,\r\n },\r\n });\r\n } else {\r\n tmdispatch({\r\n type: 'SETPERSONALDATA_USERNAME',\r\n personalData: {\r\n username: '',\r\n },\r\n });\r\n }\r\n }\r\n };\r\n\r\n const setPassword = (value: string) => {\r\n if (props.isPhysPat) {\r\n if (cbxRegistrationSelected) {\r\n tmdispatch({\r\n type: 'SETPERSONALDATA_PHYSPAT_PASSWORD',\r\n personalDataPhysPat: {\r\n password: value,\r\n },\r\n });\r\n } else {\r\n tmdispatch({\r\n type: 'SETPERSONALDATA_PHYSPAT_PASSWORD',\r\n personalDataPhysPat: {\r\n password: '',\r\n },\r\n });\r\n }\r\n } else {\r\n if (cbxRegistrationSelected) {\r\n tmdispatch({\r\n type: 'SETPERSONALDATA_PASSWORD',\r\n personalData: {\r\n password: value,\r\n },\r\n });\r\n } else {\r\n tmdispatch({\r\n type: 'SETPERSONALDATA_PASSWORD',\r\n personalData: {\r\n password: '',\r\n },\r\n });\r\n }\r\n }\r\n };\r\n\r\n const setPlannedStudies = () => {\r\n if (props.isPhysPat) {\r\n tmdispatch({\r\n type: 'SETPERSONALDATA_PHYSPAT_PLANNEDSTUDIES',\r\n personalDataPhysPat: {\r\n plannedStudies: allCurrentStudies,\r\n },\r\n });\r\n } else {\r\n tmdispatch({\r\n type: 'SETPERSONALDATA_PLANNEDSTUDIES',\r\n personalData: {\r\n plannedStudies: allCurrentStudies,\r\n },\r\n });\r\n }\r\n };\r\n\r\n const handleSubmit = (event: any) => {\r\n setInsuranceNr(event.insuranceNr);\r\n setInsuranceName(event.insuranceName);\r\n setLanguage(event.language);\r\n setFirstName(event.firstName);\r\n setLastName(event.lastName);\r\n setBirthday(event.birthday);\r\n setEmail(event.email);\r\n setGender(event.gender);\r\n setTelephone(event.phone);\r\n setStreet(event.street);\r\n setHouseNr(event.houseNumber);\r\n setZip(event.zip);\r\n setCity(event.city);\r\n setCountry(event.country);\r\n setMobilePhone(event.mobilePhone);\r\n setAcademicTitle(event.academicTitle);\r\n setUsername(event.username);\r\n setPassword(event.password);\r\n setPlannedStudies();\r\n if (props.handleNextWithActiveStep) {\r\n props.handleNextWithActiveStep(props.currentActiveStep ? props.currentActiveStep : 0);\r\n } else {\r\n props.handleNext();\r\n }\r\n };\r\n\r\n const label = (value: boolean, labelName: string) => {\r\n return (\r\n
\r\n {value ? (\r\n
\r\n {labelName}*\r\n
\r\n ) : (\r\n
\r\n {labelName}\r\n
\r\n )}\r\n
\r\n );\r\n };\r\n\r\n function validationSchema() {\r\n const SignupSchema = yup.object().shape({\r\n insuranceNr:\r\n mandFields.insuranceNr && !isFieldReadOnly(apstate.RegistrationReadOnlyFields.insuranceNr)\r\n ? yup.string().required('Bitte geben Sie Ihre Versichertennummer an.')\r\n : yup.string().notRequired(),\r\n insuranceName:\r\n mandFields.insuranceName && !isFieldReadOnly(apstate.RegistrationReadOnlyFields.insuranceName)\r\n ? yup.string().required('Bitte geben Sie Ihre Krankenkassse an.')\r\n : yup.string().notRequired(),\r\n language:\r\n mandFields.language && !isFieldReadOnly(apstate.RegistrationReadOnlyFields.language)\r\n ? yup.string().required('Bitte geben Sie Ihre Sprache an.')\r\n : yup.string().notRequired(),\r\n firstName:\r\n mandFields.firstName && !isFieldReadOnly(apstate.RegistrationReadOnlyFields.firstName)\r\n ? yup.string().required('Bitte geben Sie Ihren Vornamen an.')\r\n : yup.string().notRequired(),\r\n lastName:\r\n mandFields.lastName && !isFieldReadOnly(apstate.RegistrationReadOnlyFields.lastName)\r\n ? yup.string().required('Bitte geben Sie Ihren Nachnamen an.')\r\n : yup.string().notRequired(),\r\n birthday:\r\n mandFields.birthDate && !isFieldReadOnly(apstate.RegistrationReadOnlyFields.birthDate)\r\n ? yup.string().required('Bitte geben Sie Ihren Geburtstag an.')\r\n : yup.string().notRequired(),\r\n email:\r\n mandFields.email &&\r\n !isFieldReadOnly(apstate.RegistrationReadOnlyFields.email) &&\r\n checkinstate.wpName.length <= 0\r\n ? yup\r\n .string()\r\n .required('Bitte geben Sie Ihre E-Mail-Adresse an.')\r\n .matches(pattern, 'Ungültiges E-Mail-Format')\r\n : yup.string().notRequired().matches(pattern, 'Ungültiges E-Mail-Format'),\r\n phone:\r\n mandFields.phone && !isFieldReadOnly(apstate.RegistrationReadOnlyFields.phone)\r\n ? yup.string().required('Bitte geben Sie Ihre Telefonnummer an.')\r\n : yup.string().notRequired(),\r\n gender:\r\n mandFields.gender && !isFieldReadOnly(apstate.RegistrationReadOnlyFields.gender)\r\n ? yup.string().required('Bitte geben Sie Ihr Geschlecht an.')\r\n : yup.string().notRequired(),\r\n street:\r\n mandFields.street && !isFieldReadOnly(apstate.RegistrationReadOnlyFields.street)\r\n ? yup.string().required('Bitte geben Sie Ihre Straße an.')\r\n : yup.string().notRequired(),\r\n houseNumber:\r\n mandFields.street && !isFieldReadOnly(apstate.RegistrationReadOnlyFields.street)\r\n ? yup.string().required('Bitte geben Sie Ihre Hausnummer an.')\r\n : yup.string().notRequired(),\r\n zip:\r\n mandFields.zip && !isFieldReadOnly(apstate.RegistrationReadOnlyFields.zip)\r\n ? yup.string().required('Bitte geben Sie Ihre Postleitzahl an.')\r\n : yup.string().notRequired(),\r\n city:\r\n mandFields.city && !isFieldReadOnly(apstate.RegistrationReadOnlyFields.city)\r\n ? yup.string().required('Bitte geben Sie Ihren Ort an.')\r\n : yup.string().notRequired(),\r\n country:\r\n mandFields.country && !isFieldReadOnly(apstate.RegistrationReadOnlyFields.country)\r\n ? yup.string().required('Bitte geben Sie Ihr Land an.')\r\n : yup.string().notRequired(),\r\n mobilePhone:\r\n mandFields.mobilePhone && !isFieldReadOnly(apstate.RegistrationReadOnlyFields.mobilePhone)\r\n ? yup.string().required('Bitte geben Sie Ihre Mobil-Telefonnummer an.')\r\n : yup.string().notRequired(),\r\n academicTitle:\r\n mandFields.academicTitle && !isFieldReadOnly(apstate.RegistrationReadOnlyFields.academicTitle)\r\n ? yup.string().required('Bitte geben Sie Ihren Titel an.')\r\n : yup.string().notRequired(),\r\n username: cbxRegistrationSelected\r\n ? yup.string().required('Bitte geben Sie einen Benutzernamen an.')\r\n : yup.string().notRequired(),\r\n password: cbxRegistrationSelected\r\n ? yup.string().required('Bitte geben Sie ein Passwort an.')\r\n : yup.string().notRequired(),\r\n });\r\n\r\n return SignupSchema;\r\n }\r\n\r\n /**\r\n * The field can only be readOnly if the value is set and if we are in changePersonalData.\r\n * The field is always writable when creating a new account\r\n *\r\n * @param registrationReadOnlyField\r\n * the field to check\r\n * @returns\r\n * true, if field is readOnly, otherwise false\r\n */\r\n const isFieldReadOnly = (registrationReadOnlyField: boolean) => {\r\n if (tmstate.changePersonalData) {\r\n return registrationReadOnlyField;\r\n }\r\n return false;\r\n };\r\n\r\n const CancelButton = () => {\r\n if (props.showCancelButton !== undefined && props.showCancelButton === false) {\r\n return null;\r\n } else {\r\n return (\r\n \r\n Abbrechen\r\n \r\n );\r\n }\r\n };\r\n\r\n const BackButton = () => {\r\n if (props.showBackButton !== undefined && props.showBackButton === false) {\r\n return null;\r\n } else {\r\n return Zurück;\r\n }\r\n };\r\n\r\n const NextButton = () => {\r\n if (props.showNextButton !== undefined && props.showNextButton === false) {\r\n return null;\r\n }\r\n let buttonEnabled = true;\r\n if (props.showPrivacyPolicyCbx && apstate.RegistrationVisibleFields.privacyTerms) {\r\n if (cbxPrivacyPolicySelected === false && apstate.RegistrationMandFields.privacyTerms) {\r\n buttonEnabled = false;\r\n }\r\n } else if (props.nextButtonEnabled) {\r\n buttonEnabled = props.nextButtonEnabled;\r\n } else if (\r\n checkinstate.wpName !== undefined &&\r\n checkinstate?.wpName?.length > 0 &&\r\n (tmstate.personalData.eGK === undefined || tmstate?.personalData?.eGK?.length <= 0) &&\r\n (tmstate.personalData.kvBarcode === undefined || tmstate?.personalData?.kvBarcode.length <= 0)\r\n ) {\r\n buttonEnabled = false;\r\n }\r\n return (\r\n \r\n Weiter\r\n \r\n );\r\n };\r\n\r\n const SubmitButton = () => {\r\n return Bestätigen;\r\n };\r\n\r\n interface IFormGroup {\r\n values: any;\r\n handleChange: any;\r\n errors: any;\r\n }\r\n\r\n const FormGroupInsuranceNr = (propsFG: IFormGroup) => {\r\n if (apstate.RegistrationVisibleFields.insuranceNr === true) {\r\n return (\r\n \r\n {label(mandFields.insuranceNr, 'Versichertennummer')}\r\n \r\n {propsFG.errors.insuranceNr}\r\n \r\n );\r\n } else {\r\n return null;\r\n }\r\n };\r\n\r\n const FormGroupInsuranceName = (propsFG: IFormGroup) => {\r\n if (apstate.RegistrationVisibleFields.insuranceName === true) {\r\n return (\r\n \r\n {label(mandFields.insuranceName, 'Krankenkasse')}\r\n \r\n {propsFG.errors.insuranceName}\r\n \r\n );\r\n } else {\r\n return null;\r\n }\r\n };\r\n\r\n const FormGroupLastName = (propsFG: IFormGroup) => {\r\n if (apstate.RegistrationVisibleFields.lastName === true) {\r\n return (\r\n \r\n {label(mandFields.lastName, 'Nachname')}\r\n \r\n {propsFG.errors.lastName}\r\n \r\n );\r\n } else {\r\n return null;\r\n }\r\n };\r\n\r\n const FormGroupFirstName = (propsFG: IFormGroup) => {\r\n if (apstate.RegistrationVisibleFields.firstName === true) {\r\n return (\r\n \r\n {label(mandFields.firstName, 'Vorname')}\r\n \r\n {propsFG.errors.firstName}\r\n \r\n );\r\n } else {\r\n return null;\r\n }\r\n };\r\n\r\n const FormGroupBirthday = (propsFG: IFormGroup) => {\r\n if (apstate.RegistrationVisibleFields.birthDate === true) {\r\n return (\r\n \r\n {label(mandFields.birthDate, 'Geburtstag')}\r\n {\r\n const currentValues = e.target.value;\r\n const currentNumberValues = currentValues.length;\r\n if (currentNumberValues < 11) {\r\n propsFG.handleChange(e);\r\n }\r\n }}\r\n isInvalid={!!propsFG.errors.birthday}\r\n readOnly={isFieldReadOnly(apstate.RegistrationReadOnlyFields.birthDate)}\r\n />\r\n {propsFG.errors.birthday}\r\n \r\n );\r\n } else {\r\n return null;\r\n }\r\n };\r\n\r\n const FormGroupGender = (propsFG: IFormGroup) => {\r\n if (apstate.RegistrationVisibleFields.gender === true) {\r\n return (\r\n \r\n {label(mandFields.gender, 'Geschlecht')}\r\n \r\n \r\n \r\n \r\n \r\n \r\n readOnly={isFieldReadOnly(apstate.RegistrationReadOnlyFields.gender)}\r\n \r\n {propsFG.errors.gender}\r\n \r\n );\r\n } else {\r\n return null;\r\n }\r\n };\r\n\r\n const FormGroupLanguage = (propsFG: IFormGroup) => {\r\n if (apstate.RegistrationVisibleFields.language === true) {\r\n return (\r\n \r\n {label(mandFields.language, 'Sprache')}\r\n \r\n \r\n \r\n \r\n readOnly={isFieldReadOnly(apstate.RegistrationReadOnlyFields.language)}\r\n \r\n {propsFG.errors.language}\r\n \r\n );\r\n } else {\r\n return null;\r\n }\r\n };\r\n\r\n const FormGroupTelephone = (propsFG: IFormGroup) => {\r\n if (apstate.RegistrationVisibleFields.phone === true) {\r\n return (\r\n \r\n {label(mandFields.phone, 'Telefonnummer')}\r\n \r\n {propsFG.errors.phone}\r\n \r\n );\r\n } else {\r\n return null;\r\n }\r\n };\r\n\r\n const FormGroupMobilePhone = (propsFG: IFormGroup) => {\r\n if (apstate.RegistrationVisibleFields.mobilePhone === true) {\r\n return (\r\n \r\n {label(mandFields.mobilePhone, 'Mobil Telefonnummer')}\r\n \r\n {propsFG.errors.mobilePhone}\r\n \r\n );\r\n } else {\r\n return null;\r\n }\r\n };\r\n\r\n const FormGroupAcademicTitle = (propsFG: IFormGroup) => {\r\n if (apstate.RegistrationVisibleFields.academicTitle === true) {\r\n return (\r\n \r\n {label(mandFields.academicTitle, 'Titel')}\r\n \r\n {propsFG.errors.academicTitle}\r\n \r\n );\r\n } else {\r\n return null;\r\n }\r\n };\r\n\r\n const FormGroupEmail = (propsFG: IFormGroup) => {\r\n if (apstate.RegistrationVisibleFields.email === true) {\r\n return (\r\n \r\n {label(mandFields.email && checkinstate.wpName.length <= 0, 'E-Mail')}\r\n \r\n {propsFG.errors.email}\r\n \r\n );\r\n } else {\r\n return null;\r\n }\r\n };\r\n\r\n const FormGroupZip = (propsFG: IFormGroup) => {\r\n if (apstate.RegistrationVisibleFields.zip === true) {\r\n return (\r\n \r\n {label(mandFields.zip, 'Postleitzahl')}\r\n \r\n {propsFG.errors.zip}\r\n \r\n );\r\n } else {\r\n return null;\r\n }\r\n };\r\n\r\n const FormGroupCity = (propsFG: IFormGroup) => {\r\n if (apstate.RegistrationVisibleFields.city === true) {\r\n return (\r\n \r\n {label(mandFields.city, 'Ort')}\r\n \r\n {propsFG.errors.city}\r\n \r\n );\r\n } else {\r\n return null;\r\n }\r\n };\r\n\r\n const FormGroupStreet = (propsFG: IFormGroup) => {\r\n if (apstate.RegistrationVisibleFields.street === true) {\r\n return (\r\n \r\n {label(mandFields.street, 'Straße')}\r\n \r\n {propsFG.errors.street}\r\n \r\n );\r\n } else {\r\n return null;\r\n }\r\n };\r\n\r\n const FormGroupHouseNr = (propsFG: IFormGroup) => {\r\n if (apstate.RegistrationVisibleFields.street === true) {\r\n return (\r\n \r\n {label(mandFields.street, 'Hausnummer')}\r\n \r\n {propsFG.errors.houseNumber}\r\n \r\n );\r\n } else {\r\n return null;\r\n }\r\n };\r\n\r\n const handleCbxRegistrationSelected = () => {\r\n setCbxRegistrationSelected(!cbxRegistrationSelected);\r\n };\r\n\r\n const handleCbxPrivacyPolicySelected = () => {\r\n setCbxPrivacyPolicySelected(!cbxPrivacyPolicySelected);\r\n };\r\n\r\n const FormGroupRegistrationCbx = () => {\r\n if (props.showRegistrationCbx) {\r\n return (\r\n \r\n \r\n \r\n );\r\n } else {\r\n return null;\r\n }\r\n };\r\n\r\n const FormGroupPrivacyPolicyRegistrationCbx = () => {\r\n if (props.showPrivacyPolicyCbx && apstate.RegistrationVisibleFields.privacyTerms) {\r\n return (\r\n
\r\n \r\n \r\n \r\n
\r\n \r\n \r\n Datenschutzerklärung\r\n {' '}\r\n gelesen und akzeptiert\r\n \r\n
\r\n
\r\n
\r\n
\r\n );\r\n } else {\r\n return null;\r\n }\r\n };\r\n\r\n const FormGroupRegistrationUsername = (propsFG: IFormGroup) => {\r\n if (props.showRegistrationCbx && cbxRegistrationSelected) {\r\n return (\r\n \r\n {label(true, 'Benutzername')}\r\n \r\n {propsFG.errors.username}\r\n \r\n );\r\n } else {\r\n return null;\r\n }\r\n };\r\n\r\n const FormGroupRegistrationPassword = (propsFG: IFormGroup) => {\r\n if (props.showRegistrationCbx && cbxRegistrationSelected) {\r\n return (\r\n \r\n {label(true, 'Passwort')}\r\n \r\n {propsFG.errors.password}\r\n \r\n );\r\n } else {\r\n return null;\r\n }\r\n };\r\n\r\n const FormGroupCountry = (propsFG: IFormGroup) => {\r\n if (apstate.RegistrationVisibleFields.country === true) {\r\n return (\r\n \r\n {label(mandFields.country, 'Land')}\r\n \r\n \r\n \r\n \r\n \r\n readOnly={isFieldReadOnly(apstate.RegistrationReadOnlyFields.country)}\r\n \r\n {propsFG.errors.country}\r\n \r\n );\r\n } else {\r\n return null;\r\n }\r\n };\r\n\r\n const studyChange = (e: React.ChangeEvent, studyCode: string) => {\r\n console.log(studyCode + ':' + e.target.checked);\r\n\r\n const modifiedAllCurrentStudies = produce(allCurrentStudies, (draft) => {\r\n if (draft && draft.length > 0) {\r\n for (let i = 0; i < draft.length; i++) {\r\n if (draft[i].code === studyCode) {\r\n draft[i].participate = e.target.checked;\r\n }\r\n }\r\n }\r\n });\r\n\r\n setAllCurrentStudies(modifiedAllCurrentStudies);\r\n };\r\n\r\n const FormGroupStudies = () => {\r\n const allStudies: any[] = [];\r\n\r\n state.possibleStudies.forEach((study: IPossibleStudies) => {\r\n const cbxId = 'check-formGroupStudies-' + study.code;\r\n let isParticipated = false;\r\n if (allCurrentStudies) {\r\n const foundStudy = allCurrentStudies.find((p: IPlannedStudies) => p.code === study.code);\r\n if (foundStudy?.participate !== undefined) {\r\n isParticipated = foundStudy.participate;\r\n\r\n allStudies.push(\r\n \r\n studyChange(e, study.code)}\r\n />\r\n \r\n
{study.display}
\r\n
\r\n
,\r\n );\r\n }\r\n }\r\n });\r\n\r\n if (tmstate.changePersonalData && state.possibleStudies?.length > 0) {\r\n return (\r\n \r\n {label(false, 'Gewünschte Studienteilnahmen')}\r\n {allStudies}\r\n \r\n );\r\n } else {\r\n return null;\r\n }\r\n };\r\n\r\n const getInitialFirstName = () => {\r\n let firstName = '';\r\n if (props.isPhysPat) {\r\n firstName = tmstate.personalDataPhysPat.firstName;\r\n } else if (checkinstate.urlToCallResponse.firstName && checkinstate.urlToCallResponse.firstName.length > 0) {\r\n firstName = checkinstate.urlToCallResponse.firstName;\r\n } else {\r\n firstName = tmstate.personalData.firstName;\r\n }\r\n return firstName;\r\n };\r\n\r\n const getInitialLastName = () => {\r\n let lastName = '';\r\n if (props.isPhysPat) {\r\n lastName = tmstate.personalDataPhysPat.lastName;\r\n } else if (checkinstate.urlToCallResponse.nameLast && checkinstate.urlToCallResponse.nameLast.length > 0) {\r\n lastName = checkinstate.urlToCallResponse.nameLast;\r\n } else {\r\n lastName = tmstate.personalData.lastName;\r\n }\r\n return lastName;\r\n };\r\n\r\n const getInitialInsuranceNr = () => {\r\n let insuranceNr = '';\r\n if (props.isPhysPat) {\r\n insuranceNr = tmstate.personalDataPhysPat.insuranceNr;\r\n } else if (\r\n checkinstate.urlToCallResponse.insuranceNr &&\r\n checkinstate.urlToCallResponse.insuranceNr.length > 0\r\n ) {\r\n insuranceNr = checkinstate.urlToCallResponse.insuranceNr;\r\n } else {\r\n insuranceNr = tmstate.personalData.insuranceNr;\r\n }\r\n return insuranceNr;\r\n };\r\n\r\n const getInitialInsuranceName = () => {\r\n let insuranceName = '';\r\n if (props.isPhysPat) {\r\n insuranceName = tmstate.personalDataPhysPat.insuranceName;\r\n } else if (\r\n checkinstate.urlToCallResponse.insuranceName &&\r\n checkinstate.urlToCallResponse.insuranceName.length > 0\r\n ) {\r\n insuranceName = checkinstate.urlToCallResponse.insuranceName;\r\n } else {\r\n insuranceName = tmstate.personalData.insuranceName;\r\n }\r\n return insuranceName;\r\n };\r\n\r\n const getLanguage = () => {\r\n let language = '';\r\n if (props.isPhysPat) {\r\n language = tmstate.personalDataPhysPat.language;\r\n } else if (checkinstate.urlToCallResponse.language && checkinstate.urlToCallResponse.language.length > 0) {\r\n language = checkinstate.urlToCallResponse.language;\r\n } else {\r\n language = tmstate.personalData.language;\r\n }\r\n return language;\r\n };\r\n\r\n const getInitialBirthday = () => {\r\n let birthday = '';\r\n if (props.isPhysPat) {\r\n birthday = formatBirthdayForFormik(tmstate.personalDataPhysPat.birthday);\r\n } else if (checkinstate.urlToCallResponse.birthday && checkinstate.urlToCallResponse.birthday.length > 0) {\r\n birthday = formatBirthdayForFormik(checkinstate.urlToCallResponse.birthday);\r\n } else {\r\n birthday = formatBirthdayForFormik(tmstate.personalData.birthday);\r\n }\r\n return birthday;\r\n };\r\n\r\n const getInitialEmail = () => {\r\n let email = '';\r\n if (props.isPhysPat) {\r\n email = tmstate.personalDataPhysPat.email;\r\n } else {\r\n email = tmstate.personalData.email;\r\n }\r\n return email;\r\n };\r\n\r\n const getInitialPhone = () => {\r\n let phone = '';\r\n if (props.isPhysPat) {\r\n phone = tmstate.personalDataPhysPat.telephone;\r\n } else {\r\n phone = tmstate.personalData.telephone;\r\n }\r\n\r\n return phone;\r\n };\r\n\r\n const getInitialMobilePhone = () => {\r\n let mobilePhone = '';\r\n if (props.isPhysPat) {\r\n mobilePhone = tmstate.personalDataPhysPat.mobilePhone;\r\n } else {\r\n mobilePhone = tmstate.personalData.mobilePhone;\r\n }\r\n\r\n return mobilePhone;\r\n };\r\n\r\n const getInitialAcademicTitle = () => {\r\n let academicTitle = '';\r\n if (props.isPhysPat) {\r\n academicTitle = tmstate.personalDataPhysPat.academicTitle;\r\n } else {\r\n academicTitle = tmstate.personalData.academicTitle;\r\n }\r\n\r\n return academicTitle;\r\n };\r\n\r\n const getInitialGender = () => {\r\n let gender = '';\r\n if (props.isPhysPat) {\r\n gender = tmstate.personalDataPhysPat.gender;\r\n } else if (checkinstate.urlToCallResponse.gender && checkinstate.urlToCallResponse.gender.length > 0) {\r\n gender = checkinstate.urlToCallResponse.gender;\r\n } else {\r\n gender = tmstate.personalData.gender;\r\n }\r\n return gender;\r\n };\r\n\r\n const getInitialStreet = () => {\r\n let street = '';\r\n if (props.isPhysPat) {\r\n street = tmstate.personalDataPhysPat.street;\r\n } else if (checkinstate.urlToCallResponse.street && checkinstate.urlToCallResponse.street.length > 0) {\r\n street = checkinstate.urlToCallResponse.street;\r\n } else {\r\n street = tmstate.personalData.street;\r\n }\r\n return street;\r\n };\r\n\r\n const getInitialHouseNr = () => {\r\n let houseNr = '';\r\n if (props.isPhysPat) {\r\n houseNr = tmstate.personalDataPhysPat.housenr;\r\n } else if (\r\n checkinstate.urlToCallResponse.houseNumber &&\r\n checkinstate.urlToCallResponse.houseNumber.length > 0\r\n ) {\r\n houseNr = checkinstate.urlToCallResponse.houseNumber;\r\n } else {\r\n houseNr = tmstate.personalData.housenr;\r\n }\r\n return houseNr;\r\n };\r\n\r\n const getInitialZip = () => {\r\n let zip = '';\r\n if (props.isPhysPat) {\r\n zip = tmstate.personalDataPhysPat.zip;\r\n } else if (checkinstate.urlToCallResponse.zip && checkinstate.urlToCallResponse.zip.length > 0) {\r\n zip = checkinstate.urlToCallResponse.zip;\r\n } else {\r\n zip = tmstate.personalData.zip;\r\n }\r\n return zip;\r\n };\r\n\r\n const getInitialCity = () => {\r\n let city = '';\r\n if (props.isPhysPat) {\r\n city = tmstate.personalDataPhysPat.city;\r\n } else if (checkinstate.urlToCallResponse.city && checkinstate.urlToCallResponse.city.length > 0) {\r\n city = checkinstate.urlToCallResponse.city;\r\n } else {\r\n city = tmstate.personalData.city;\r\n }\r\n return city;\r\n };\r\n\r\n const getInitialCountry = () => {\r\n let country = '';\r\n if (props.isPhysPat) {\r\n country = tmstate.personalDataPhysPat.country;\r\n } else if (checkinstate.urlToCallResponse.country && checkinstate.urlToCallResponse.country.length > 0) {\r\n country = checkinstate.urlToCallResponse.country;\r\n } else {\r\n country = tmstate.personalData.country;\r\n }\r\n return country;\r\n };\r\n\r\n const getInitialPlannedStudies = () => {\r\n if (props.isPhysPat) {\r\n return tmstate.personalDataPhysPat.plannedStudies;\r\n } else {\r\n return tmstate.personalData.plannedStudies;\r\n }\r\n };\r\n\r\n return (\r\n \r\n \r\n {({ handleSubmit, handleChange, values, errors }) => (\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {!props.isPhysPat && (\r\n <>\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n )}\r\n {props.showPrivacyPolicyCbx && (\r\n \r\n \r\n \r\n )}\r\n
\r\n {props.directRegistration ? (\r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n ) : (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n )}\r\n
\r\n
\r\n )}\r\n \r\n
\r\n );\r\n};\r\n\r\nexport default AppointmentPersonalData;\r\n","import * as React from 'react';\r\nimport { SetStateAction, useContext, useEffect, useRef, useState } from 'react';\r\nimport Col from 'react-bootstrap/Col';\r\nimport { useLocation } from 'react-router-dom';\r\nimport DokumenteContext from '../../context/dokumenteContext';\r\nimport MyThemeContext from '../../context/themeContext';\r\nimport { Paths } from '../../Routes';\r\n\r\nconst DragNDropArea = ({ children }: React.PropsWithChildren) => {\r\n const currentLocation = useLocation();\r\n\r\n const { themestate } = useContext(MyThemeContext);\r\n\r\n // const [setDrag] = useState(false);\r\n const [dragCounter, setDragCounter] = useState(0);\r\n const dropRef = useRef(null);\r\n const { docdispatch } = useContext(DokumenteContext);\r\n\r\n const fileToBase64 = (file: any): any => {\r\n const reader = new FileReader();\r\n reader.readAsDataURL(file);\r\n reader.onload = function (): SetStateAction {\r\n const result = reader.result;\r\n\r\n docdispatch({\r\n type: 'SETFILEDATA',\r\n filedata: {\r\n name: file.name,\r\n lastModified: file.lastModified,\r\n lastModifiedDate: file.lastModifiedDate,\r\n size: file.size,\r\n type: file.type,\r\n data: result,\r\n title: '',\r\n conclusion: '',\r\n uploaded: false,\r\n },\r\n });\r\n };\r\n reader.onerror = function (error): SetStateAction {\r\n const result = 'ERROR: ' + error;\r\n docdispatch({\r\n type: 'SETFILEDATA',\r\n filedata: {\r\n name: file.name,\r\n lastModified: file.lastModified,\r\n lastModifiedDate: file.lastModifiedDate,\r\n size: file.size,\r\n type: file.type,\r\n data: result,\r\n title: '',\r\n conclusion: '',\r\n uploaded: false,\r\n },\r\n });\r\n };\r\n };\r\n\r\n const handleDrag = (e: any) => {\r\n e.preventDefault();\r\n e.stopPropagation();\r\n };\r\n\r\n const handleDragIn = (e: any) => {\r\n e.preventDefault();\r\n e.stopPropagation();\r\n setDragCounter(dragCounter + 1);\r\n if (e.dataTransfer.items && e.dataTransfer.items.length > 0) {\r\n // setDrag(true);\r\n }\r\n };\r\n\r\n const handleDragOut = (e: any) => {\r\n e.preventDefault();\r\n e.stopPropagation();\r\n setDragCounter(dragCounter - 1);\r\n if (dragCounter === 0) {\r\n // setDrag(false);\r\n }\r\n };\r\n\r\n const handleDrop = (e: any) => {\r\n e.preventDefault();\r\n e.stopPropagation();\r\n // setDrag(false);\r\n if (e.dataTransfer.files && e.dataTransfer.files.length > 0) {\r\n if (currentLocation.pathname === Paths.DOKUMENTE) {\r\n fileToBase64(e.dataTransfer.files[0]);\r\n }\r\n /* \r\n .\r\n . here handling for other pages/areas \r\n .\r\n */\r\n e.dataTransfer.clearData();\r\n setDragCounter(0);\r\n }\r\n };\r\n\r\n useEffect(() => {\r\n const div = dropRef.current;\r\n div.addEventListener('dragenter', handleDragIn);\r\n div.addEventListener('dragleave', handleDragOut);\r\n div.addEventListener('dragover', handleDrag);\r\n div.addEventListener('drop', handleDrop);\r\n return () => {\r\n div.removeEventListener('dragenter', handleDragIn);\r\n div.removeEventListener('dragleave', handleDragOut);\r\n div.removeEventListener('dragover', handleDrag);\r\n div.removeEventListener('drop', handleDrop);\r\n };\r\n }, []);\r\n\r\n return (\r\n \r\n {children}\r\n \r\n );\r\n};\r\n\r\nexport default DragNDropArea;\r\n","import { createContext } from 'react';\r\n\r\nexport interface IPossibleMacros {\r\n code: string;\r\n name: string;\r\n id: number;\r\n countAPKs: number;\r\n type?: string;\r\n}\r\n\r\nexport interface ITodoSecurityItem {\r\n name: string;\r\n type: string;\r\n}\r\n\r\nexport interface ISecurityItems {\r\n CHARTS: boolean;\r\n CHARTS_WEIGHT: boolean;\r\n CHARTS_FATMASS: boolean;\r\n CHARTS_BLOODSUGAR: boolean;\r\n CHARTS_FLI: boolean;\r\n CHARTS_SAM: boolean;\r\n CHARTS_ACTIVITY: boolean;\r\n TABLE_VAL: boolean;\r\n PATLIST: boolean;\r\n DOKUMENT: boolean;\r\n FOTOS: boolean;\r\n FRAGEBOGEN: boolean;\r\n MEDIKATION: boolean;\r\n TAGESPLAN: boolean;\r\n TERMINE: boolean;\r\n VIDEO: boolean;\r\n JOURNEY: boolean;\r\n TODO: ITodoSecurityItem[];\r\n TAB_ORDER: string;\r\n}\r\n\r\nexport interface IActiveStudies {\r\n studyName: string;\r\n studyOrgaId: string;\r\n studyPatId: string;\r\n studyPatSynonym: string;\r\n studyPid: string;\r\n securityItems: ISecurityItems;\r\n}\r\n\r\nexport interface IActivePatients {\r\n patientId: string;\r\n nameLast: string;\r\n nameFirst: string;\r\n birthDate: string;\r\n}\r\n\r\nexport interface ILastPatOpened {\r\n patId: string;\r\n nameLast: string;\r\n nameFirst: string;\r\n birthDate: string;\r\n}\r\n\r\nexport interface ILink {\r\n headline: string;\r\n href: string;\r\n linkText: string;\r\n prefix: string;\r\n target: string;\r\n restmethod: string;\r\n innerHTML: string;\r\n}\r\n\r\nexport interface IPossibleStudies {\r\n code: string;\r\n display: string;\r\n}\r\n\r\nexport interface IDepartments {\r\n name: string;\r\n reasons: IDepartmentReasons[];\r\n kontaktArt?: string[];\r\n versicherungsArt?: string[];\r\n fruehererTermin?: boolean;\r\n}\r\n\r\nexport interface IDepartmentReasons {\r\n makroCode: string;\r\n makroId: number;\r\n makroName: string;\r\n pFilter: string;\r\n aFilter: string;\r\n reasonCode: string;\r\n reasonId: string;\r\n reasonName: string;\r\n reasonMainCode?: string;\r\n}\r\n\r\nexport interface ICodeName {\r\n code: string;\r\n name: string;\r\n}\r\n\r\nexport type InitialLoginType = {\r\n isLoggedIn: boolean;\r\n setOfInitPageDone: boolean;\r\n userId: string;\r\n practitionerRoleId: string;\r\n userName: string;\r\n sessionId: string;\r\n securityItems: ISecurityItems;\r\n securityItemsStudy?: ISecurityItems;\r\n finalSecurityItemsOrder: string[];\r\n iceServers: Array;\r\n possibleMacros: Array;\r\n departments: IDepartments[];\r\n activeStudies: Array;\r\n activeUserId: string;\r\n activeProfile: string;\r\n termsHTML: string;\r\n privacyHTML: string;\r\n redirectUser: string;\r\n redirectPwd: string;\r\n extraLinks: Array;\r\n possibleStudies: Array;\r\n addConsignationsToAsk: Array;\r\n encounterId: string;\r\n encounterTitle: string;\r\n activeSidebarItem: string;\r\n activePatients: Array;\r\n activePatient: string;\r\n gdt: {\r\n id: string;\r\n };\r\n lastPatOpened: Array;\r\n anmeldeContexts: Array;\r\n};\r\n\r\nexport const initialLoginState = {\r\n isLoggedIn: false,\r\n setOfInitPageDone: false,\r\n userId: '',\r\n practitionerRoleId: '',\r\n userName: '',\r\n sessionId: '',\r\n securityItems: {\r\n CHARTS: false,\r\n CHARTS_WEIGHT: false,\r\n CHARTS_FATMASS: false,\r\n CHARTS_BLOODSUGAR: false,\r\n CHARTS_FLI: false,\r\n CHARTS_SAM: false,\r\n CHARTS_ACTIVITY: false,\r\n TABLE_VAL: false,\r\n PATLIST: false,\r\n DOKUMENT: false,\r\n FOTOS: false,\r\n FRAGEBOGEN: false,\r\n MEDIKATION: false,\r\n TAGESPLAN: false,\r\n TERMINE: false,\r\n VIDEO: false,\r\n JOURNEY: false,\r\n TODO: [],\r\n TAB_ORDER: '',\r\n },\r\n securityItemsStudy: {\r\n CHARTS: false,\r\n CHARTS_WEIGHT: false,\r\n CHARTS_FATMASS: false,\r\n CHARTS_BLOODSUGAR: false,\r\n CHARTS_FLI: false,\r\n CHARTS_SAM: false,\r\n CHARTS_ACTIVITY: false,\r\n TABLE_VAL: false,\r\n PATLIST: false,\r\n DOKUMENT: false,\r\n FOTOS: false,\r\n FRAGEBOGEN: false,\r\n MEDIKATION: false,\r\n TAGESPLAN: false,\r\n TERMINE: false,\r\n VIDEO: false,\r\n JOURNEY: false,\r\n TODO: [],\r\n TAB_ORDER: '',\r\n },\r\n iceServers: [],\r\n finalSecurityItemsOrder: [],\r\n possibleMacros: [],\r\n departments: [],\r\n activeStudies: [],\r\n activeUserId: '',\r\n activeProfile: '',\r\n termsHTML: '',\r\n privacyHTML: '',\r\n redirectUser: '',\r\n redirectPwd: '',\r\n extraLinks: [],\r\n possibleStudies: [],\r\n addConsignationsToAsk: [],\r\n encounterId: '',\r\n encounterTitle: '',\r\n activeSidebarItem: '',\r\n activePatients: [],\r\n activePatient: '',\r\n gdt: {\r\n id: '',\r\n },\r\n lastPatOpened: [],\r\n anmeldeContexts: [],\r\n};\r\n\r\n// const LoginContext = createContext(initialLoginState);\r\nconst LoginContext = createContext<{\r\n state: InitialLoginType;\r\n dispatch: React.Dispatch;\r\n}>({\r\n state: initialLoginState,\r\n dispatch: () => null,\r\n});\r\n\r\nexport default LoginContext;\r\n","import { useContext } from 'react';\r\nimport { Image, OverlayTrigger, Tooltip } from 'react-bootstrap';\r\nimport styled, { ThemeContext } from 'styled-components';\r\nimport TerminierungContext from '../../context/terminierungContext';\r\n\r\ninterface IStyledPDiv {\r\n backgroundColor?: string;\r\n}\r\n\r\nexport const StyledPDiv = styled.div`\r\n width: 35px;\r\n height: 35px;\r\n border-radius: 50%;\r\n background: ${(props) => (props.backgroundColor ? props.backgroundColor : props.theme.mainColor)};\r\n font-size: 20px;\r\n color: #fff;\r\n text-align: center;\r\n padding-top: 2px;\r\n\r\n &:hover {\r\n box-shadow: 0px 2px 3px 2px rgba(0, 0, 0, 0.2);\r\n }\r\n`;\r\n\r\nexport const StyledP = styled.p`\r\n text-align: center;\r\n vertical-align: middle;\r\n`;\r\n\r\nconst Avatar = () => {\r\n const { tmstate } = useContext(TerminierungContext);\r\n const themeContext = useContext(ThemeContext);\r\n const photoSrc = 'data:image/jpg;base64,' + tmstate.personalData.profilePhoto;\r\n\r\n const hasProfilePhoto = () => {\r\n if (tmstate.personalData.profilePhoto === '' || tmstate.personalData.profilePhoto === undefined) {\r\n return false;\r\n }\r\n return true;\r\n };\r\n\r\n return (\r\n Profil}>\r\n \r\n {!hasProfilePhoto() ? (\r\n \r\n {tmstate.personalData.firstName.charAt(0)}\r\n {tmstate.personalData.lastName.charAt(0)}\r\n \r\n ) : (\r\n \r\n )}\r\n \r\n \r\n );\r\n};\r\n\r\nexport default Avatar;\r\n","import { memo } from 'react';\r\nimport SidebarItemList from '../../components/SidebarItems/SidebarItemList';\r\nimport './Sidebar.css';\r\n\r\ninterface ISidebar {\r\n backgroundColor?: string;\r\n backgroundImage?: string;\r\n width?: string;\r\n paddingTop?: string;\r\n paddingLeft?: string;\r\n paddingRight?: string;\r\n}\r\n\r\nconst Sidebar = memo((props: ISidebar) => {\r\n return (\r\n \r\n \r\n \r\n );\r\n});\r\n\r\nSidebar.displayName = 'Sidebar';\r\n\r\nexport default Sidebar;\r\n","export type BarcodeScanCallback = (txt: string) => void;\r\nexport interface IBarCodeScanner {\r\n isInScan: boolean;\r\n prefixChecked: boolean;\r\n stopEventListing: any;\r\n onScanKeyDown: any;\r\n onScanKey: any;\r\n lastKeyPressed: number | null;\r\n stopTimer: any;\r\n onScanKeyUp: any;\r\n\r\n startup: any;\r\n removeListeners: any;\r\n scanPrefix: string;\r\n\r\n scanTxt: string;\r\n onScanFinish: BarcodeScanCallback | null;\r\n}\r\n\r\nconst ScanUtils = (): IBarCodeScanner | null => {\r\n const scanStart = 13;\r\n const scanStart1 = 22;\r\n const scanStart1A = 60;\r\n const scanEnd = 13;\r\n const scanEnd1 = 226;\r\n const scanEnd1A = 60;\r\n const maxDTFirstChar = 300;\r\n const checkCtrlKey = true;\r\n const checkKVForm = true;\r\n\r\n /*\r\n const isKVMForm = function(txt: string): boolean {\r\n if (txt.length < 3) {\r\n return false;\r\n }\r\n if ((txt.charAt(0) >= '0') && (txt.charAt(0) <= '9')\r\n && (txt.charAt(1) >= '0') && (txt.charAt(1) <= '9')\r\n && (txt.charAt(2) == '\\t')) {\r\n return true;\r\n }\r\n return false;\r\n };\r\n */\r\n const isKVMForm1st = function (txt: string): boolean {\r\n if (txt.length < 2) {\r\n return false;\r\n }\r\n if (txt.charAt(0) >= '0' && txt.charAt(0) <= '9' && txt.charAt(1) >= '0' && txt.charAt(1) <= '9') {\r\n return true;\r\n }\r\n return false;\r\n };\r\n\r\n /*\r\n const isQREscape = function (txt: string): boolean {\r\n return txt.startsWith('\\\\0026') || txt.startsWith('\\\\000026');\r\n };\r\n */\r\n\r\n const barcodescanner: IBarCodeScanner = {\r\n isInScan: false,\r\n prefixChecked: false,\r\n lastKeyPressed: null,\r\n stopTimer: null,\r\n scanPrefix: '',\r\n scanTxt: '',\r\n onScanFinish: null,\r\n // barcodescanner.onScanFinsh = null;\r\n stopEventListing: function (this: HTMLElement, ev: KeyboardEvent) {\r\n if (ev.stopPropagation) {\r\n ev.stopPropagation();\r\n } else {\r\n ev.cancelBubble = true;\r\n }\r\n\r\n if (ev.preventDefault) {\r\n ev.preventDefault();\r\n } else {\r\n ev.returnValue = false;\r\n }\r\n return false;\r\n },\r\n\r\n onScanKeyDown: function (this: HTMLElement, ev: KeyboardEvent) {\r\n if (ev.ctrlKey && checkCtrlKey && barcodescanner.isInScan) {\r\n ev.stopPropagation();\r\n ev.preventDefault();\r\n console.log('found ctrlKey???');\r\n return false;\r\n }\r\n // xml.doLog('onScanKeyDown (' + barcodescanner.isInScan + '): charcode=' + ev.charCode + '/keyCode=' + ev.keyCode + '/txt=barcodescanner.scanTxt=\\n>' + barcodescanner.scanTxt + '<\\n', true, true);\r\n if (ev.keyCode == 9 && barcodescanner.isInScan && checkKVForm && isKVMForm1st(barcodescanner.scanTxt)) {\r\n barcodescanner.scanTxt += '\\t';\r\n ev.stopPropagation();\r\n ev.preventDefault();\r\n return false;\r\n }\r\n if (!barcodescanner.isInScan) {\r\n if (\r\n ev.keyCode == scanStart ||\r\n ev.keyCode == scanStart1 ||\r\n ev.keyCode == scanStart1A ||\r\n !barcodescanner.scanPrefix\r\n ) {\r\n barcodescanner.isInScan = true;\r\n barcodescanner.prefixChecked = false;\r\n barcodescanner.scanTxt = '';\r\n barcodescanner.lastKeyPressed = new Date().getTime();\r\n }\r\n } else if (barcodescanner.isInScan) {\r\n if (barcodescanner.lastKeyPressed) {\r\n const currentDT = new Date().getTime();\r\n if (currentDT > barcodescanner.lastKeyPressed + maxDTFirstChar) {\r\n // it seems, this is the real keyboard. do not process further messages\r\n console.log(\r\n 'Stop barcode - key - handling. to slow after scanStart (barcodescanner.scanTxt=' +\r\n barcodescanner.scanTxt +\r\n ')',\r\n );\r\n barcodescanner.isInScan = false;\r\n barcodescanner.lastKeyPressed = null;\r\n } else {\r\n barcodescanner.lastKeyPressed = currentDT;\r\n }\r\n }\r\n console.log('onScanKeyDown (isInScan): charcode=' + ev.charCode + '/keyCode=' + ev.keyCode);\r\n if (barcodescanner.stopTimer) {\r\n window.clearTimeout(barcodescanner.stopTimer);\r\n barcodescanner.stopTimer = null;\r\n }\r\n if (scanEnd && ev.keyCode == scanEnd) {\r\n barcodescanner.onScanFinish ? barcodescanner.scanTxt : null;\r\n barcodescanner.scanTxt = '';\r\n barcodescanner.isInScan = false;\r\n barcodescanner.lastKeyPressed = null;\r\n console.log('Stop barcode - key - handling. found scanEnd');\r\n } else if (ev.keyCode == scanEnd1 || ev.keyCode == scanEnd1A || !barcodescanner.scanPrefix) {\r\n barcodescanner.stopTimer = window.setTimeout(function () {\r\n if (barcodescanner.scanTxt.length > 20 && barcodescanner.onScanFinish) {\r\n barcodescanner.onScanFinish(barcodescanner.scanTxt);\r\n }\r\n barcodescanner.isInScan = false;\r\n barcodescanner.lastKeyPressed = null;\r\n barcodescanner.stopTimer = null;\r\n barcodescanner.scanTxt = '';\r\n }, 500);\r\n }\r\n }\r\n // console.log('scan char:, ml.onScanKeyDown..., ev.charCode=' + ev.charCode + ', isInScan=' + ml.isInScan + ', ml.scanText=' + ml.scanText + ', keyCode=' + ev.keyCode);\r\n if (barcodescanner.isInScan) {\r\n // return barcodescanner.stopEventListing(ev);\r\n }\r\n },\r\n\r\n onScanKey: function (this: HTMLElement, ev: KeyboardEvent) {\r\n if (barcodescanner.isInScan) {\r\n console.log('onScanKey (isInScan): charcode=' + ev.charCode + '/keyCode=' + ev.keyCode);\r\n const chr = String.fromCharCode(ev.keyCode || ev.charCode);\r\n if (chr == String.fromCharCode(scanStart) || (ev.keyCode || ev.charCode) == scanStart) {\r\n console.log('onScanKey: found scanstart, do nothing');\r\n return;\r\n }\r\n barcodescanner.scanTxt += chr;\r\n if (!barcodescanner.prefixChecked && barcodescanner.scanPrefix) {\r\n if (barcodescanner.scanTxt.length == barcodescanner.scanPrefix.length) {\r\n if (barcodescanner.scanTxt == barcodescanner.scanPrefix) {\r\n barcodescanner.prefixChecked = true;\r\n }\r\n } else if (barcodescanner.scanTxt.length > barcodescanner.scanPrefix.length) {\r\n barcodescanner.isInScan = false;\r\n }\r\n }\r\n // console.log('onScanKey: ' + barcodescanner.scanTxt);\r\n if (barcodescanner.scanPrefix) {\r\n return barcodescanner.stopEventListing(ev);\r\n }\r\n }\r\n },\r\n\r\n onScanKeyUp: function (this: HTMLElement, ev: KeyboardEvent) {\r\n if (barcodescanner.isInScan) {\r\n // return barcodescanner.stopEventListing(ev);\r\n }\r\n },\r\n\r\n startup: function (elem: HTMLElement, scanPrefix: string, scanDone: BarcodeScanCallback) {\r\n elem.removeEventListener('keydown', barcodescanner.onScanKeyDown, true);\r\n elem.addEventListener('keydown', barcodescanner.onScanKeyDown, true);\r\n elem.removeEventListener('keypress', barcodescanner.onScanKey, true);\r\n elem.addEventListener('keypress', barcodescanner.onScanKey, true);\r\n elem.removeEventListener('keyup', barcodescanner.onScanKeyUp, true);\r\n elem.addEventListener('keyup', barcodescanner.onScanKeyUp, true);\r\n barcodescanner.isInScan = false;\r\n barcodescanner.scanTxt = '';\r\n barcodescanner.scanPrefix = scanPrefix;\r\n\r\n barcodescanner.onScanFinish = scanDone;\r\n },\r\n\r\n removeListeners: function (elem: HTMLElement) {\r\n if (elem) {\r\n elem.removeEventListener('keydown', barcodescanner.onScanKeyDown, true);\r\n elem.removeEventListener('keypress', barcodescanner.onScanKey, true);\r\n elem.removeEventListener('keyup', barcodescanner.onScanKeyUp, true);\r\n }\r\n if (barcodescanner.stopTimer) {\r\n window.clearTimeout(barcodescanner.stopTimer);\r\n barcodescanner.stopTimer = null;\r\n }\r\n\r\n barcodescanner.onScanFinish = null;\r\n },\r\n };\r\n return barcodescanner;\r\n};\r\n\r\nexport default ScanUtils;\r\n","import Nav from 'react-bootstrap/Nav';\r\nimport styled from 'styled-components';\r\n\r\ninterface INavButtonProps {\r\n color: string;\r\n backgroundColor: string;\r\n backgroundColorHover: string;\r\n borderRadius: string;\r\n border: string;\r\n borderColor: string;\r\n borderColorHover: string;\r\n width: string;\r\n textAlign: string;\r\n fontWeight: string;\r\n margin: string;\r\n}\r\n\r\nconst navButtonProps = (props: any): INavButtonProps => {\r\n /* defaultValues / primary */\r\n const navb: INavButtonProps = {\r\n color: props.theme.mainColor,\r\n backgroundColor: props.theme.navbutton.default.backgroundColor,\r\n backgroundColorHover: props.theme.navbutton.default.backgroundColorHover,\r\n borderRadius: '0px',\r\n border: '1px transparent',\r\n borderColor: props.theme.navbutton.default.borderColor,\r\n borderColorHover: props.theme.navbutton.default.borderColorHover,\r\n width: '200px',\r\n textAlign: 'left',\r\n fontWeight: 'normal',\r\n margin: 'auto',\r\n };\r\n if (props.variant === 'horizontal') {\r\n if (props.eventKey === props.activekey) {\r\n navb.color = props.theme.navbutton.horizontal.colorActive;\r\n navb.fontWeight = 'bold';\r\n } else {\r\n navb.color = props.theme.navbutton.horizontal.colorInactive;\r\n navb.fontWeight = 'normal';\r\n }\r\n navb.backgroundColorHover = props.theme.navbutton.horizontal.backgroundColorHover;\r\n navb.borderRadius = '20px';\r\n navb.width = '100%';\r\n navb.textAlign = 'center';\r\n }\r\n if (props.variant === 'vertical') {\r\n if (props.eventKey === props.activekey) {\r\n navb.color = props.theme.navbutton.vertical.colorActive;\r\n navb.backgroundColor = props.theme.navbutton.vertical.backgroundColorActive;\r\n navb.fontWeight = 'bold';\r\n } else {\r\n navb.color = props.theme.navbutton.vertical.colorInactive;\r\n navb.backgroundColor = props.theme.navbutton.vertical.backgroundColorInactive;\r\n navb.fontWeight = 'normal';\r\n }\r\n navb.backgroundColorHover = props.theme.navbutton.vertical.backgroundColorHover;\r\n navb.borderRadius = '0px 30px 30px 0px';\r\n navb.border = '1px transparent';\r\n navb.borderColor = 'white';\r\n navb.borderColorHover = props.theme.navbutton.vertical.borderColorHover;\r\n navb.width = '350px';\r\n navb.textAlign = 'left';\r\n }\r\n return navb;\r\n};\r\n\r\nconst StyledNavButton = styled(Nav.Link)`\r\n margin: 'auto';\r\n color: ${(props) => (props.color ? props.color : navButtonProps(props).color)};\r\n background-color: ${(props) =>\r\n props.backgroundColor ? props.backgroundColor : navButtonProps(props).backgroundColor};\r\n border-radius: ${(props) => (props.borderRadius ? props.borderRadius : navButtonProps(props).borderRadius)};\r\n border: ${(props) => (props.border ? props.border : navButtonProps(props).border)};\r\n border-color: ${(props) => (props.borderColor ? props.borderColor : navButtonProps(props).borderColor)};\r\n width: ${(props) => (props.width ? props.width : navButtonProps(props).width)};\r\n text-align: ${(props) => (props.textAlign ? props.textAlign : navButtonProps(props).textAlign)};\r\n font-weight: ${(props) => (props.fontWeight ? props.fontWeight : navButtonProps(props).fontWeight)};\r\n &:hover {\r\n background-color: ${(props) =>\r\n props.backgroundColorHover ? props.backgroundColorHover : navButtonProps(props).backgroundColorHover};\r\n border-color: ${(props) =>\r\n props.borderColorHover ? props.borderHover : navButtonProps(props).borderColorHover};\r\n }\r\n`;\r\n\r\nexport const StepperNavLinkButton = styled(Nav.Link)`\r\n padding: 0;\r\n`;\r\n\r\nexport default StyledNavButton;\r\n","import { useContext } from 'react';\r\nimport { Badge, OverlayTrigger, Tooltip } from 'react-bootstrap';\r\nimport { IoIosCloseCircleOutline } from 'react-icons/io';\r\nimport { useNavigate } from 'react-router-dom';\r\nimport LoginContext from '../../context/loginContext';\r\nimport { Paths } from '../../Routes';\r\nimport StyledButton from './StyledButton';\r\n\r\nconst EncounterTitle = () => {\r\n const { state, dispatch } = useContext(LoginContext);\r\n const navigate = useNavigate();\r\n const resetEncounter = () => {\r\n dispatch({\r\n type: 'SETENCOUNTER',\r\n encounterId: '',\r\n encounterTitle: '',\r\n });\r\n navigate(Paths.TERMINE);\r\n };\r\n\r\n return (\r\n Terminauswahl aufheben}\r\n >\r\n \r\n \r\n \r\n \r\n {state.encounterTitle}\r\n \r\n \r\n );\r\n};\r\n\r\nexport default EncounterTitle;\r\n","import { useContext, useEffect, useState } from 'react';\r\nimport Dropdown from 'react-bootstrap/Dropdown';\r\nimport { JsxElement } from 'typescript';\r\nimport LoginContext, { IActivePatients } from '../../context/loginContext';\r\nimport { usePatientSwitch } from '../../hooks/usePatientSwitch';\r\nimport StyledButton from '../Buttons/StyledButton';\r\n\r\nconst PatientSwitch = () => {\r\n const [allPatients, setAllPatients] = useState();\r\n\r\n const { state, dispatch } = useContext(LoginContext);\r\n const { setNewPatient } = usePatientSwitch();\r\n\r\n useEffect(() => {\r\n getDropdownItems();\r\n }, [state.activePatients, state.activePatient]);\r\n\r\n const handlePatSwitch = async (e: any, pat: IActivePatients) => {\r\n if (e && e.currentTarget) {\r\n e.preventDefault();\r\n e.currentTarget.blur();\r\n }\r\n setNewPatient(pat);\r\n };\r\n\r\n const getDropdownItems = () => {\r\n const allItems: any[] = [];\r\n\r\n if (Array.isArray(state.activePatients) && state.activePatients.length) {\r\n state.activePatients.forEach((pat: IActivePatients) => {\r\n allItems.push(\r\n handlePatSwitch(e, pat)}>\r\n {pat.nameFirst} {pat.nameLast}\r\n ,\r\n );\r\n });\r\n }\r\n\r\n setAllPatients(allItems);\r\n };\r\n\r\n const isInNeuesProfilPhysLogin = () => {\r\n if (location?.href) {\r\n return location.href.indexOf('NeuesProfilPhysLogin') >= 0;\r\n }\r\n return false;\r\n };\r\n\r\n const getContent = () => {\r\n if (!isInNeuesProfilPhysLogin()) {\r\n return (\r\n \r\n \r\n Derzeit gewählt: {state.activePatient}\r\n \r\n {allPatients}\r\n \r\n );\r\n } else {\r\n return null;\r\n }\r\n };\r\n\r\n return getContent();\r\n};\r\n\r\nexport default PatientSwitch;\r\n","import { useContext, useEffect, useState } from 'react';\r\nimport Dropdown from 'react-bootstrap/Dropdown';\r\nimport LoginContext from '../../context/loginContext';\r\nimport { PROFILE_HOME } from '../../globals/global';\r\nimport { useProfileSwitch } from '../../hooks/useProfileSwitch';\r\nimport { setActivePatId } from '../../services/RestServices';\r\nimport StyledButton from '../Buttons/StyledButton';\r\n\r\nconst ProfileSwitch = () => {\r\n const [allProfiles, setAllProfiles] = useState();\r\n\r\n const { state, dispatch } = useContext(LoginContext);\r\n\r\n const { setSecurityItems, getUserId } = useProfileSwitch();\r\n\r\n useEffect(() => {\r\n getDropdownItems();\r\n }, []);\r\n\r\n const handleProfileSwitch = async (profileName: string) => {\r\n const activeUserId = getUserId(profileName);\r\n\r\n dispatch({\r\n type: 'SETACTIVEUSERID',\r\n activeUserId: activeUserId,\r\n });\r\n\r\n dispatch({\r\n type: 'SETACTIVEPROFILE',\r\n activeProfile: profileName,\r\n });\r\n dispatch({\r\n type: 'SETOFINITPAGEDONE',\r\n setOfInitPageDone: false,\r\n });\r\n\r\n setSecurityItems(profileName);\r\n const changeRes = await setActivePatId(state.sessionId, activeUserId);\r\n if (!changeRes.SUCCESS) {\r\n // console.log('profile change NOT successful');\r\n }\r\n };\r\n\r\n const getDropdownItems = () => {\r\n const allItems: any[] = [];\r\n\r\n if (Array.isArray(state.activeStudies) && state.activeStudies.length) {\r\n state.activeStudies.forEach((study: any) => {\r\n allItems.push(\r\n handleProfileSwitch(study.studyName)}>\r\n {study.studyName}\r\n ,\r\n );\r\n });\r\n\r\n allItems.push(\r\n handleProfileSwitch(PROFILE_HOME)}>\r\n {PROFILE_HOME}\r\n ,\r\n );\r\n } else {\r\n allItems.push(\r\n handleProfileSwitch(PROFILE_HOME)}>\r\n {PROFILE_HOME}\r\n ,\r\n );\r\n }\r\n\r\n setAllProfiles(allItems);\r\n };\r\n\r\n return (\r\n \r\n \r\n {state.activeProfile}\r\n \r\n {allProfiles}\r\n \r\n );\r\n};\r\n\r\nexport default ProfileSwitch;\r\n","import { useContext, useEffect, useState } from 'react';\r\nimport LoginContext from '../context/loginContext';\r\n\r\nconst useNavbar = () => {\r\n const { state } = useContext(LoginContext);\r\n\r\n const [showProfileSwitch, setShowProfileSwitch] = useState(false);\r\n\r\n const [showPatSwitch, setShowPatSwitch] = useState(false);\r\n\r\n useEffect(() => {\r\n if (state.activeStudies !== undefined && state.activeStudies.length > 0) {\r\n setShowProfileSwitch(true);\r\n }\r\n if (state.activePatients !== undefined && state.activePatients.length > 0) {\r\n setShowPatSwitch(true);\r\n }\r\n }, [state.activeStudies, state.activePatients, state.activePatient]);\r\n\r\n return [showProfileSwitch, showPatSwitch];\r\n};\r\n\r\nexport default useNavbar;\r\n","import { useContext, useRef } from 'react';\r\nimport Nav from 'react-bootstrap/Nav';\r\nimport Navbar from 'react-bootstrap/Navbar';\r\nimport { RiLogoutBoxRLine } from 'react-icons/ri';\r\nimport { Link } from 'react-router-dom';\r\nimport { ThemeContext } from 'styled-components';\r\nimport EncounterTitle from '../../components/Buttons/EncounterTitle';\r\nimport { IconDiv } from '../../components/Div/StyledDiv';\r\nimport ExtraLinks from '../../components/ExtraLinks/ExtraLinks';\r\nimport PatientSwitch from '../../components/ProfileSwitch/PatientSwitch';\r\nimport ProfileSwitch from '../../components/ProfileSwitch/ProfileSwitch';\r\nimport Avatar from '../../components/SidebarItems/Avatar';\r\nimport Telephone from '../../components/Telephone/Telephone';\r\nimport MyTooltip from '../../components/Tooltip/MyTooltip';\r\nimport AppPropsContext from '../../context/appPropsContext';\r\nimport LoginContext from '../../context/loginContext';\r\nimport MyThemeContext from '../../context/themeContext';\r\nimport useHandleLogout from '../../hooks/useHandleLogout';\r\nimport useNavbar from '../../hooks/useNavbar';\r\nimport { StyledNavbar } from './StyledNavbar';\r\n\r\nconst NavbarMenu = () => {\r\n const themeContext = useContext(ThemeContext);\r\n const { apstate } = useContext(AppPropsContext);\r\n const { state } = useContext(LoginContext);\r\n const { themestate, themedispatch } = useContext(MyThemeContext);\r\n const { handleLogout } = useHandleLogout();\r\n\r\n const toggleButtonRef = useRef(null);\r\n\r\n const [showProfileSwitch, showPatientSwitch] = useNavbar();\r\n\r\n const brandingSrc = 'data:image/jpg;base64,' + apstate.brandingBytes;\r\n\r\n return (\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 NavbarMenu;\r\n","import 'chartjs-plugin-annotation';\r\nimport moment from 'moment';\r\nimport { useCallback, useContext } from 'react';\r\nimport { IAppCharts } from '../components/Charts/AppCharts/AppCharts';\r\nimport AlertContext from '../context/alertContext';\r\nimport LoginContext from '../context/loginContext';\r\nimport { getDiagnosticReportsByCategory } from '../services/fhir/FHIRDiagnosticReports';\r\nimport { charts, IGetChartData, initalChartData, transformAndSortDates } from '../utils/chartUtils';\r\n\r\ninterface IUseCharts extends IAppCharts {\r\n chartId: string;\r\n}\r\n\r\nexport const useChart = (props: IUseCharts) => {\r\n const { state } = useContext(LoginContext);\r\n const { alertdispatch } = useContext(AlertContext);\r\n\r\n const getChartData = useCallback(async () => {\r\n let dataPrecision = 1;\r\n if (props.dataPrecisionVal !== undefined) {\r\n dataPrecision = props.dataPrecisionVal;\r\n }\r\n\r\n const data: IGetChartData = {\r\n chartLoaded: false,\r\n foundChartData: false,\r\n chartData: { ...initalChartData },\r\n };\r\n\r\n const userData: any = {};\r\n let response;\r\n if (props.sessionId) {\r\n userData.sessionId = props.sessionId;\r\n userData.activeUserId = props.activeUserId;\r\n response = await getDiagnosticReportsByCategory(userData, props.chartId, alertdispatch);\r\n } else {\r\n response = await getDiagnosticReportsByCategory(state, props.chartId, alertdispatch);\r\n }\r\n data.chartLoaded = true;\r\n if (response) {\r\n let foundDataEntry = false;\r\n\r\n if (response.data?.entry) {\r\n foundDataEntry = true;\r\n }\r\n\r\n if (foundDataEntry) {\r\n const dataString = response.data.entry[0].resource.presentedForm[0].extension[0].valueString;\r\n const jsonRes = JSON.parse(dataString);\r\n\r\n // convert dates (string) into moment objects and sort chronologically\r\n const sortedJSON = transformAndSortDates(jsonRes);\r\n\r\n const labelsArray: any[] = [];\r\n let tlind = 1;\r\n let foundData = false;\r\n for (let i = 0; i < sortedJSON.data.datasets.length; i++) {\r\n if (\r\n sortedJSON.data.datasets[i].TYPE === 'Line' ||\r\n sortedJSON.data.datasets[i].TYPE === 'Day bars' ||\r\n sortedJSON.data.datasets[i].TYPE === 'MultiLine'\r\n ) {\r\n for (let j = 0; j < jsonRes.data.datasets[i].data.length; j++) {\r\n const origDataVal: number = jsonRes.data.datasets[i].data[j].y;\r\n const dataValPrec: string = origDataVal.toFixed(dataPrecision);\r\n labelsArray.push(dataValPrec);\r\n }\r\n data.chartData.labels = labelsArray;\r\n data.chartData.chartData = sortedJSON.data.datasets[i];\r\n\r\n if (jsonRes.data?.datasets[i]?.data[jsonRes.data.datasets[i].data.length - 1]?.t) {\r\n data.foundChartData = true;\r\n foundData = true;\r\n }\r\n\r\n if (foundData) {\r\n data.chartData.chartViewLimits = {\r\n fiveYears: sortedJSON.data.datasets[i].data[\r\n sortedJSON.data.datasets[i].data.length - 1\r\n ].t\r\n .clone()\r\n .subtract(4, 'years'),\r\n oneYear: sortedJSON.data.datasets[i].data[sortedJSON.data.datasets[i].data.length - 1].t\r\n .clone()\r\n .subtract(1, 'years'),\r\n oneMonth: sortedJSON.data.datasets[i].data[\r\n sortedJSON.data.datasets[i].data.length - 1\r\n ].t\r\n .clone()\r\n .subtract(1, 'months'),\r\n oneWeek: sortedJSON.data.datasets[i].data[sortedJSON.data.datasets[i].data.length - 1].t\r\n .clone()\r\n .subtract(1, 'week'),\r\n };\r\n }\r\n } else if (sortedJSON.data.datasets[i].TYPE === 'TargetLine') {\r\n const lastTargetWeight =\r\n sortedJSON.data.datasets[i].data[sortedJSON.data.datasets[i].data.length - 1].y;\r\n const today = moment();\r\n sortedJSON.data.datasets[i].data.push({\r\n t: today.add(4, 'months'),\r\n y: lastTargetWeight,\r\n });\r\n if (tlind === 1) {\r\n data.chartData.targetChart1 = sortedJSON.data.datasets[i];\r\n tlind++;\r\n } else if (tlind === 2) {\r\n data.chartData.targetChart2 = sortedJSON.data.datasets[i];\r\n tlind++;\r\n } else if (tlind === 3) {\r\n data.chartData.targetChart3 = sortedJSON.data.datasets[i];\r\n tlind++;\r\n }\r\n }\r\n\r\n /* specific chart options */\r\n if (props.chartId === charts.FLI.requestId) {\r\n if (sortedJSON.data.datasets[i].TYPE === 'TargetBarrier') {\r\n data.chartData.targetBarrier = sortedJSON.data.datasets[i];\r\n }\r\n if (sortedJSON.data.datasets[i].TYPE === 'TargetArea') {\r\n data.chartData.targetArea = sortedJSON.data.datasets[i];\r\n }\r\n }\r\n }\r\n\r\n data.chartData.chartOptions = jsonRes.options;\r\n }\r\n }\r\n\r\n return data;\r\n }, []);\r\n\r\n const getTableData = useCallback(async () => {\r\n const response = await getDiagnosticReportsByCategory(state, props.chartId, alertdispatch);\r\n if (response) {\r\n return response;\r\n }\r\n\r\n return 'FAILURE';\r\n }, []);\r\n\r\n return {\r\n getChartData,\r\n getTableData,\r\n };\r\n};\r\n","import { useEffect, useState } from 'react';\r\nimport Table from 'react-bootstrap/Table';\r\n\r\ninterface ITableTitleVal {\r\n name: string;\r\n title: string;\r\n}\r\n\r\ninterface ITableDataVal {\r\n val?: string;\r\n table?: ITableData;\r\n type: string;\r\n}\r\n\r\nexport interface ITableData {\r\n table: {\r\n title: ITableTitleVal[];\r\n data: ITableDataVal[][];\r\n };\r\n}\r\n\r\ninterface ITableProvider {\r\n tableData: ITableData;\r\n maxHeight: string;\r\n}\r\n\r\nexport const initalTableData = {\r\n tableTitle: '',\r\n tableData: {\r\n table: {\r\n title: [],\r\n data: [],\r\n },\r\n },\r\n};\r\n\r\nconst TableProvider = (props: ITableProvider) => {\r\n const [tableToShow, setTableToShow] = useState(<>);\r\n\r\n useEffect(() => {\r\n const tblDat = getTable();\r\n if (tblDat) {\r\n setTableToShow(tblDat);\r\n }\r\n }, []);\r\n\r\n const getTableHeader = (props: ITableTitleVal[]) => {\r\n const allHeaders: any[] = [];\r\n props.forEach((e) => {\r\n allHeaders.push(\r\n \r\n {e.name}\r\n ,\r\n );\r\n });\r\n\r\n return allHeaders;\r\n };\r\n\r\n const getTableRows = (props: ITableDataVal[][]) => {\r\n const allTr: any[] = [];\r\n props.forEach((line, key) => {\r\n const allTd: any[] = [];\r\n line.forEach((td, key) => {\r\n if (!td.type || td.type === 'text' || td.type === 'document') {\r\n if (td.val) {\r\n allTd.push({td.val});\r\n }\r\n } else if (td.type === 'table') {\r\n if (td.table) {\r\n const subTableData: ITableData = td as unknown as ITableData;\r\n const subTable = generateTable(subTableData);\r\n allTd.push({subTable});\r\n }\r\n }\r\n });\r\n allTr.push({allTd});\r\n });\r\n return allTr;\r\n };\r\n\r\n const generateTable = (props: ITableData) => {\r\n const table = (\r\n \r\n \r\n {getTableHeader(props.table.title)}\r\n \r\n {getTableRows(props.table.data)}\r\n
\r\n );\r\n\r\n return table;\r\n };\r\n\r\n const getTable = () => {\r\n if (props.tableData) {\r\n return generateTable(props.tableData);\r\n } else {\r\n return null;\r\n }\r\n };\r\n\r\n return (\r\n \r\n {tableToShow}\r\n \r\n );\r\n};\r\n\r\nexport default TableProvider;\r\n","import Modal from 'react-bootstrap/Modal';\r\nimport styled from 'styled-components';\r\nimport useScreenResolution from '../../../hooks/useScreenResolution';\r\nimport StyledButton from '../../Buttons/StyledButton';\r\nimport TableProvider, { ITableData } from '../../TableProvider/TableProvider';\r\n\r\nexport const ModalCst = styled(Modal)`\r\n .modal-dialog {\r\n max-width: 90%;\r\n max-height: 100%;\r\n margin: 1.75rem auto;\r\n }\r\n .modal-content {\r\n border-radius: ${(prop) => (prop.borderRadius ? prop.borderRadius : prop.theme.modal.borderRadius)};\r\n box-shadow: ${(prop) => (prop.boxShadow ? prop.boxShadow : prop.theme.modal.boxShadow)};\r\n }\r\n`;\r\n\r\nexport interface ITableModalShow {\r\n show: boolean;\r\n modalTitle: string;\r\n tableData: ITableData;\r\n}\r\nexport interface ITableModal extends ITableModalShow {\r\n onHide(): void;\r\n}\r\n\r\nconst TableModal = (props: ITableModal) => {\r\n const screenSize = useScreenResolution();\r\n\r\n const onHideClick = () => {\r\n props.onHide();\r\n };\r\n\r\n const getBodyHeight = () => {\r\n let bodyHeight = screenSize.height;\r\n bodyHeight = bodyHeight * 0.8;\r\n return bodyHeight.toString() + 'px';\r\n };\r\n\r\n return (\r\n <>\r\n \r\n \r\n {props.modalTitle}\r\n \r\n \r\n \r\n \r\n \r\n onHideClick()}>\r\n Schließen\r\n \r\n \r\n \r\n \r\n );\r\n};\r\n\r\nexport default TableModal;\r\n","import { Line } from 'react-chartjs-2';\r\nimport { VerticalCenterDiv } from '../../Div/StyledDiv';\r\nimport { IAppCharts } from '../AppCharts/AppCharts';\r\n\r\nconst EmptyView = (props: IAppCharts) => {\r\n const data = {\r\n labels: [\r\n 'Januar',\r\n 'Februar',\r\n 'März',\r\n 'April',\r\n 'Mai',\r\n 'Juni',\r\n 'Juli',\r\n 'August',\r\n 'September',\r\n 'Oktober',\r\n 'November',\r\n 'Dezember',\r\n ],\r\n datasets: [\r\n {\r\n label: 'Keine Daten',\r\n },\r\n ],\r\n };\r\n\r\n const options = {\r\n scales: {\r\n yAxes: [\r\n {\r\n ticks: {\r\n min: 30,\r\n max: 100,\r\n },\r\n },\r\n ],\r\n },\r\n };\r\n\r\n const EmptyViewLine = () => {\r\n return (\r\n
\r\n \r\n
\r\n );\r\n };\r\n\r\n return props.type ? (\r\n /* if props.type then it is called by mobile and we net to center the chart */\r\n \r\n \r\n \r\n ) : (\r\n \r\n );\r\n};\r\n\r\nexport default EmptyView;\r\n","import moment from 'moment';\r\nimport { useState } from 'react';\r\nimport { Bar, Line } from 'react-chartjs-2';\r\nimport useScreenResolution from '../../../hooks/useScreenResolution';\r\nimport {\r\n chartSettingsForDevice,\r\n getChartOptionsData,\r\n getDatasetData,\r\n IChartOptions,\r\n IChartProps,\r\n} from '../../../utils/chartUtils';\r\nimport { ChartInnerDiv, ChartOuterDiv } from '../../Div/StyledDiv';\r\n\r\nconst FiveYearsView = (props: IChartProps) => {\r\n const [xMin, setXMin] = useState(moment([props.chartViewLimits.fiveYears.year()]).clone().startOf('year'));\r\n const [xMax, setXMax] = useState(moment().endOf('year').add(6, 'month'));\r\n\r\n const screenSize = useScreenResolution();\r\n\r\n const chartSettings = chartSettingsForDevice('fiveYears', screenSize.width, screenSize.height);\r\n\r\n const datasetProps = {\r\n chartProps: props,\r\n barPercentage: 2,\r\n };\r\n\r\n const [datasets, labelsToDisplay] = getDatasetData(datasetProps);\r\n const data = {\r\n labels: labelsToDisplay, // labels to be displayed by the datalabels.formatter\r\n datasets: datasets,\r\n };\r\n\r\n const chartOptionsProps: IChartOptions = {\r\n chartProps: props,\r\n ticksXMin: xMin,\r\n ticksXMax: xMax,\r\n chartSettings: chartSettings,\r\n updateLimits: (e) => updateLimits(e),\r\n };\r\n\r\n const options = getChartOptionsData(chartOptionsProps);\r\n\r\n function updateLimits(context: any) {\r\n if (!props.mobileProps?.sessionId) {\r\n setXMin(context.chart.scales['x-axis-0'].min);\r\n setXMax(context.chart.scales['x-axis-0'].max);\r\n }\r\n }\r\n\r\n const MyLine = () => {\r\n if (props.mobileProps?.height !== undefined) {\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n );\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 const MyBar = () => {\r\n if (props.mobileProps?.height !== undefined) {\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n );\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 return
{props.displayOption === 1 ? : }
;\r\n};\r\n\r\nexport default FiveYearsView;\r\n","import moment from 'moment';\r\nimport { useState } from 'react';\r\nimport { Bar, Line } from 'react-chartjs-2';\r\nimport useScreenResolution from '../../../hooks/useScreenResolution';\r\nimport {\r\n chartSettingsForDevice,\r\n getChartOptionsData,\r\n getDatasetData,\r\n IChartOptions,\r\n IChartProps,\r\n} from '../../../utils/chartUtils';\r\nimport { ChartInnerDiv, ChartOuterDiv } from '../../Div/StyledDiv';\r\n\r\nconst MaxView = (props: IChartProps) => {\r\n const [xMin, setXMin] = useState(props.chartData.data[0].t);\r\n const [xMax, setXMax] = useState(moment().endOf('year').add(12, 'month'));\r\n\r\n const screenSize = useScreenResolution();\r\n\r\n const chartSettings = chartSettingsForDevice('max', screenSize.width, screenSize.height);\r\n\r\n const datasetProps = {\r\n chartProps: props,\r\n barPercentage: 2,\r\n };\r\n\r\n const [datasets, labelsToDisplay] = getDatasetData(datasetProps);\r\n const data = {\r\n labels: labelsToDisplay, // labels to be displayed by the datalabels.formatter\r\n datasets: datasets,\r\n };\r\n\r\n const chartOptionsProps: IChartOptions = {\r\n chartProps: props,\r\n ticksXMin: xMin,\r\n ticksXMax: xMax,\r\n chartSettings: chartSettings,\r\n updateLimits: (e) => updateLimits(e),\r\n };\r\n\r\n const options = getChartOptionsData(chartOptionsProps);\r\n\r\n function updateLimits(context: any) {\r\n if (!props.mobileProps?.sessionId) {\r\n setXMin(context.chart.scales['x-axis-0'].min);\r\n setXMax(context.chart.scales['x-axis-0'].max);\r\n }\r\n }\r\n\r\n const MyLine = () => {\r\n if (props.mobileProps?.height !== undefined) {\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n );\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 const MyBar = () => {\r\n if (props.mobileProps?.height !== undefined) {\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n );\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 return
{props.displayOption === 1 ? : }
;\r\n};\r\n\r\nexport default MaxView;\r\n","import moment from 'moment';\r\nimport { useState } from 'react';\r\nimport * as React from 'react';\r\nimport Col from 'react-bootstrap/Col';\r\nimport Row from 'react-bootstrap/Row';\r\nimport ToggleButton from 'react-bootstrap/ToggleButton';\r\nimport { Bar, Line } from 'react-chartjs-2';\r\nimport useScreenResolution from '../../../hooks/useScreenResolution';\r\nimport {\r\n chartSettingsForDevice,\r\n getChartOptionsData,\r\n getDatasetData,\r\n handleDisplayControllers,\r\n IChartOptions,\r\n IChartProps,\r\n} from '../../../utils/chartUtils';\r\nimport { ToggleButtonGroupFlex } from '../../Buttons/ToggleButtonGroupCst';\r\nimport { ChartInnerDiv, ChartOuterDiv } from '../../Div/StyledDiv';\r\n\r\nconst OneMonthView = (props: IChartProps) => {\r\n // const [xMin, setXMin] = useState(moment(moment().startOf('month').format('DD.MM.YYYY'), 'DD.MM.YYYY'));\r\n // const [xMax, setXMax] = useState(moment(moment().endOf('month').format('DD.MM.YYYY'), 'DD.MM.YYYY'));\r\n\r\n // start with displaying the month with the latest data entry\r\n const [xMin, setXMin] = useState(\r\n moment(\r\n props.chartData.data[props.chartData.data.length - 1].t.clone().startOf('month').format('DD.MM.YYYY'),\r\n 'DD.MM.YYYY',\r\n ),\r\n );\r\n const [xMax, setXMax] = useState(\r\n moment(\r\n props.chartData.data[props.chartData.data.length - 1].t.clone().endOf('month').format('DD.MM.YYYY'),\r\n 'DD.MM.YYYY',\r\n ),\r\n );\r\n\r\n const screenSize = useScreenResolution();\r\n\r\n const chartSettings = chartSettingsForDevice('oneMonth', screenSize.width, screenSize.height);\r\n\r\n const [selectedMonth, setSelectedMonth] = useState(\r\n props.chartData.data[props.chartData.data.length - 1].t.clone().month(),\r\n );\r\n const [selectedYear, setSelectedYear] = useState(\r\n props.chartData.data[props.chartData.data.length - 1].t.clone().year(),\r\n );\r\n\r\n const scalesOffset = props?.mobileProps?.sessionId ? true : false;\r\n // const ticksMinRotation = props?.mobileProps?.sessionId ? 20 : 0;\r\n // const ticksMaxRotation = props?.mobileProps?.sessionId ? 20 : chartSettings.rotation;\r\n const ticksLabelOffset = props?.mobileProps?.sessionId ? 30 : 0;\r\n\r\n // get year of first and last weight data entry\r\n const firstYear = props.chartData.data[0].t.year();\r\n const lastYear = props.chartData.data[props.chartData.data.length - 1].t.year();\r\n\r\n // create a list of objects with the years and an index for the buttons\r\n const yearList: Array<{ name: number; value: number }> = [];\r\n let index = 0;\r\n for (let year = firstYear; year <= lastYear; year++) {\r\n yearList.push({ name: year, value: index });\r\n index++;\r\n }\r\n\r\n const monthsList = [\r\n { name: 'Januar', value: 0 },\r\n { name: 'Februar', value: 1 },\r\n { name: 'März', value: 2 },\r\n { name: 'April', value: 3 },\r\n { name: 'Mai', value: 4 },\r\n { name: 'Juni', value: 5 },\r\n { name: 'Juli', value: 6 },\r\n { name: 'August', value: 7 },\r\n { name: 'September', value: 8 },\r\n { name: 'Oktober', value: 9 },\r\n { name: 'November', value: 10 },\r\n { name: 'Dezember', value: 11 },\r\n ];\r\n\r\n const datasetProps = {\r\n chartProps: props,\r\n barPercentage: 2,\r\n };\r\n\r\n const [datasets, labelsToDisplay] = getDatasetData(datasetProps);\r\n const data = {\r\n labels: labelsToDisplay, // labels to be displayed by the datalabels.formatter\r\n datasets: datasets,\r\n };\r\n\r\n const chartOptionsProps: IChartOptions = {\r\n chartProps: props,\r\n ticksXMin: xMin,\r\n ticksXMax: xMax,\r\n scalesOffset: scalesOffset,\r\n ticksLabelOffset: ticksLabelOffset,\r\n // ticksMinRotation: ticksMinRotation,\r\n // ticksMaxRotation: ticksMaxRotation,\r\n chartSettings: chartSettings,\r\n updateLimits: (e) => updateLimits(e),\r\n };\r\n\r\n const options = getChartOptionsData(chartOptionsProps);\r\n\r\n function updateLimits(context: any) {\r\n if (!props.mobileProps?.sessionId) {\r\n setXMin(context.chart.scales['x-axis-0'].min);\r\n setXMax(context.chart.scales['x-axis-0'].max);\r\n }\r\n }\r\n\r\n const [radioValYear, setRadioValYear] = useState(yearList[yearList.length - 1].value);\r\n const [radioValMonth, setRadioValMonth] = useState(props.chartData.data[props.chartData.data.length - 1].t.month());\r\n\r\n const handleYearChange = (selectedYearVal: React.SetStateAction) => {\r\n const yearName = yearList.find((i) => i.value === selectedYearVal)?.name;\r\n const selectedYearAndMonth = moment([yearName, selectedMonth]);\r\n setRadioValYear(selectedYearVal);\r\n setSelectedYear(yearList.find((i) => i.value === selectedYearVal)?.name);\r\n setXMin(moment(selectedYearAndMonth).startOf('month'));\r\n setXMax(moment(selectedYearAndMonth).endOf('month'));\r\n };\r\n\r\n const handleMonthChange = (selectedMonthVal: React.SetStateAction) => {\r\n const selectedYearAndMonth = moment([selectedYear, Number(selectedMonthVal)]);\r\n setRadioValMonth(Number(selectedMonthVal));\r\n setSelectedMonth(selectedMonthVal);\r\n setXMin(moment(selectedYearAndMonth).startOf('month'));\r\n setXMax(moment(selectedYearAndMonth).endOf('month'));\r\n };\r\n\r\n const MonthOptions = () => {\r\n const allMonthOptions: any[] = [];\r\n {\r\n monthsList.map((month, idx) => {\r\n allMonthOptions.push(\r\n \r\n handleMonthChange(month.value)}\r\n >\r\n {month.name}\r\n \r\n ,\r\n );\r\n });\r\n }\r\n\r\n return (\r\n \r\n {allMonthOptions}\r\n \r\n );\r\n };\r\n\r\n const YearOptions = () => {\r\n const allYearOptions: any[] = [];\r\n {\r\n yearList.map((year, idx) => {\r\n allYearOptions.push(\r\n \r\n handleYearChange(year.value)}\r\n >\r\n {year.name}\r\n \r\n ,\r\n );\r\n });\r\n }\r\n\r\n return (\r\n \r\n {allYearOptions}\r\n \r\n );\r\n };\r\n\r\n const MyLine = () => {\r\n if (props.mobileProps?.height !== undefined) {\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n );\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 const MyBar = () => {\r\n if (props.mobileProps?.height !== undefined) {\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n );\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 return (\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {props.displayOption === 1 ? : }\r\n
\r\n );\r\n};\r\n\r\nexport default OneMonthView;\r\n","import moment, { Moment } from 'moment';\r\nimport { useState } from 'react';\r\nimport * as React from 'react';\r\nimport Badge from 'react-bootstrap/Badge';\r\nimport Button from 'react-bootstrap/Button';\r\nimport Col from 'react-bootstrap/Col';\r\nimport Row from 'react-bootstrap/Row';\r\nimport ToggleButton from 'react-bootstrap/ToggleButton';\r\nimport { Bar, Line } from 'react-chartjs-2';\r\nimport { IoIosArrowBack, IoIosArrowForward } from 'react-icons/io';\r\nimport useScreenResolution from '../../../hooks/useScreenResolution';\r\nimport {\r\n chartSettingsForDevice,\r\n getChartOptionsData,\r\n getDatasetData,\r\n handleDisplayControllers,\r\n IChartOptions,\r\n IChartProps,\r\n} from '../../../utils/chartUtils';\r\nimport { ToggleButtonGroupFlex } from '../../Buttons/ToggleButtonGroupCst';\r\nimport { ChartInnerDiv, ChartOuterDiv } from '../../Div/StyledDiv';\r\n\r\nconst OneWeekView = (props: IChartProps) => {\r\n // start with displaying the week with the latest data entry\r\n const [xMin, setXMin] = useState(\r\n moment(\r\n props.chartData.data[props.chartData.data.length - 1].t.clone().startOf('isoWeek').format('DD.MM.YYYY'),\r\n 'DD.MM.YYYY',\r\n ),\r\n );\r\n const [xMax, setXMax] = useState(\r\n moment(\r\n props.chartData.data[props.chartData.data.length - 1].t.clone().endOf('isoWeek').format('DD.MM.YYYY'),\r\n 'DD.MM.YYYY',\r\n ),\r\n );\r\n\r\n const screenSize = useScreenResolution();\r\n\r\n const chartSettings = chartSettingsForDevice('oneWeek', screenSize.width, screenSize.height);\r\n\r\n // start with button selection with the year, month and week from the latest data entry\r\n const [selectedYear, setSelectedYear] = useState(\r\n props.chartData.data[props.chartData.data.length - 1].t.clone().year(),\r\n );\r\n const [selectedMonth, setSelectedMonth] = useState(\r\n props.chartData.data[props.chartData.data.length - 1].t.clone().month(),\r\n );\r\n const [selectedWeekNumber, setSelectedWeekNumber] = useState(\r\n props.chartData.data[props.chartData.data.length - 1].t.clone().isoWeek(),\r\n );\r\n\r\n const scalesOffset = props?.mobileProps?.sessionId ? true : false;\r\n // const ticksMinRotation = props?.mobileProps?.sessionId ? 20 : 0;\r\n // const ticksMaxRotation = props?.mobileProps?.sessionId ? 20 : chartSettings.rotation;\r\n const ticksLabelOffset = props?.mobileProps?.sessionId ? 30 : 0;\r\n\r\n // get year of first and last weight data entry\r\n const firstYearOfData = props.chartData.data[0].t.year();\r\n const lastYearOfData = props.chartData.data[props.chartData.data.length - 1].t.year();\r\n\r\n // create a list of objects with the years and an index for the buttons\r\n const yearList: Array<{ name: number; value: number }> = [];\r\n let index = 0;\r\n for (let year = firstYearOfData; year <= lastYearOfData; year++) {\r\n yearList.push({ name: year, value: index });\r\n index++;\r\n }\r\n\r\n const monthsList = [\r\n { name: 'Januar', value: 0 },\r\n { name: 'Februar', value: 1 },\r\n { name: 'März', value: 2 },\r\n { name: 'April', value: 3 },\r\n { name: 'Mai', value: 4 },\r\n { name: 'Juni', value: 5 },\r\n { name: 'Juli', value: 6 },\r\n { name: 'August', value: 7 },\r\n { name: 'September', value: 8 },\r\n { name: 'Oktober', value: 9 },\r\n { name: 'November', value: 10 },\r\n { name: 'Dezember', value: 11 },\r\n ];\r\n\r\n const datasetProps = {\r\n chartProps: props,\r\n barPercentage: 5,\r\n };\r\n\r\n const [datasets, labelsToDisplay] = getDatasetData(datasetProps);\r\n const data = {\r\n labels: labelsToDisplay, // labels to be displayed by the datalabels.formatter\r\n datasets: datasets,\r\n };\r\n\r\n const chartOptionsProps: IChartOptions = {\r\n chartProps: props,\r\n ticksXMin: xMin,\r\n ticksXMax: xMax,\r\n scalesOffset: scalesOffset,\r\n ticksLabelOffset: ticksLabelOffset,\r\n // ticksMinRotation: ticksMinRotation,\r\n // ticksMaxRotation: ticksMaxRotation,\r\n chartSettings: chartSettings,\r\n updateLimits: (e) => updateLimits(e),\r\n };\r\n\r\n const options = getChartOptionsData(chartOptionsProps);\r\n\r\n function updateLimits(context: any) {\r\n if (!props.mobileProps?.sessionId) {\r\n setXMin(context.chart.scales['x-axis-0'].min);\r\n setXMax(context.chart.scales['x-axis-0'].max);\r\n }\r\n }\r\n\r\n const [radioValYear, setRadioValYear] = useState(yearList[yearList.length - 1].value);\r\n const [radioValMonth, setRadioValMonth] = useState(props.chartData.data[props.chartData.data.length - 1].t.month());\r\n\r\n const handleYearChange = (selectedYearVal: React.SetStateAction) => {\r\n if (yearList !== undefined) {\r\n const yearName = yearList.find((i) => i.value === selectedYearVal)?.name;\r\n if (yearName !== undefined) {\r\n const selectedYearAndWeek = moment().year(yearName).week(selectedWeekNumber);\r\n setRadioValYear(selectedYearVal);\r\n setSelectedYear(yearList.find((i) => i.value === selectedYearVal)?.name);\r\n setSelectedMonth(selectedYearAndWeek.month());\r\n setRadioValMonth(selectedYearAndWeek.month());\r\n setXMin(moment(selectedYearAndWeek).startOf('isoWeek'));\r\n setXMax(moment(selectedYearAndWeek).endOf('isoWeek'));\r\n }\r\n }\r\n };\r\n\r\n const handleMonthChange = (selectedMonthVal: React.SetStateAction) => {\r\n const selectedYearAndMonth = moment([selectedYear, Number(selectedMonthVal)]);\r\n setSelectedWeekNumber(moment(selectedYearAndMonth).isoWeek());\r\n setRadioValMonth(Number(selectedMonthVal));\r\n setSelectedMonth(selectedMonthVal);\r\n setXMin(moment(selectedYearAndMonth).startOf('isoWeek'));\r\n setXMax(moment(selectedYearAndMonth).endOf('isoWeek'));\r\n };\r\n\r\n function setValues(newDate: Moment) {\r\n setSelectedWeekNumber(newDate.isoWeek());\r\n setSelectedMonth(newDate.month());\r\n setRadioValMonth(newDate.month());\r\n setSelectedYear(newDate.year());\r\n if (yearList !== undefined) {\r\n const year = yearList.find((i) => i.name === newDate.year());\r\n if (year !== undefined) {\r\n setRadioValYear(year.value);\r\n }\r\n }\r\n }\r\n\r\n const handleWeekBack = () => {\r\n // jump one week back and get first and last dates of iso week\r\n const oneWeekBack_beginOfWeek = moment()\r\n .year(selectedYear)\r\n .week(selectedWeekNumber)\r\n .startOf('isoWeek')\r\n .subtract(1, 'week');\r\n const oneWeekBack_endOfWeek = moment()\r\n .year(selectedYear)\r\n .week(selectedWeekNumber)\r\n .endOf('isoWeek')\r\n .subtract(1, 'week');\r\n\r\n // set x-axis time limits left and right\r\n setXMin(oneWeekBack_beginOfWeek);\r\n setXMax(oneWeekBack_endOfWeek);\r\n\r\n // set all time hooks by passing beginning of week\r\n setValues(oneWeekBack_beginOfWeek);\r\n };\r\n\r\n const handleWeekForward = () => {\r\n // jump one week forward and get first and last dates of iso week\r\n const oneWeekForward_beginOfWeek = moment()\r\n .year(selectedYear)\r\n .week(selectedWeekNumber)\r\n .startOf('isoWeek')\r\n .add(1, 'week');\r\n const oneWeekForward_endOfWeek = moment()\r\n .year(selectedYear)\r\n .week(selectedWeekNumber)\r\n .endOf('isoWeek')\r\n .add(1, 'week');\r\n\r\n // set x-axis time limits left and right\r\n setXMin(oneWeekForward_beginOfWeek);\r\n setXMax(oneWeekForward_endOfWeek);\r\n\r\n // set all time hooks by passing beginning of week\r\n setValues(oneWeekForward_endOfWeek);\r\n };\r\n\r\n // returns year if one would step 1 week back in time\r\n const backwardCheck = () => {\r\n return moment().year(selectedYear).week(selectedWeekNumber).endOf('isoWeek').subtract(1, 'week').year();\r\n };\r\n\r\n // returns year of one would step 1 week forward in time\r\n const forwardCheck = () => {\r\n return moment().year(selectedYear).week(selectedWeekNumber).startOf('isoWeek').add(1, 'week').year();\r\n };\r\n\r\n const MonthOptions = () => {\r\n const allMonthOptions: any[] = [];\r\n {\r\n monthsList.map((month, idx) => {\r\n allMonthOptions.push(\r\n \r\n handleMonthChange(month.value)}\r\n >\r\n {month.name}\r\n \r\n ,\r\n );\r\n });\r\n }\r\n\r\n return (\r\n \r\n {allMonthOptions}\r\n \r\n );\r\n };\r\n\r\n const YearOptions = () => {\r\n const allYearOptions: any[] = [];\r\n {\r\n yearList.map((year, idx) => {\r\n allYearOptions.push(\r\n \r\n handleYearChange(year.value)}\r\n >\r\n {year.name}\r\n \r\n ,\r\n );\r\n });\r\n }\r\n\r\n return (\r\n \r\n {allYearOptions}\r\n \r\n );\r\n };\r\n\r\n const MyLine = () => {\r\n if (props.mobileProps?.height !== undefined) {\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n );\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 const MyBar = () => {\r\n if (props.mobileProps?.height !== undefined) {\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n );\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 return (\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 handleWeekBack()}\r\n disabled={firstYearOfData > backwardCheck()}\r\n >\r\n \r\n \r\n Woche {selectedWeekNumber}\r\n handleWeekForward()}\r\n disabled={lastYearOfData < forwardCheck()}\r\n >\r\n \r\n \r\n

\r\n \r\n
\r\n {props.displayOption === 1 ? : }\r\n
\r\n );\r\n};\r\n\r\nexport default OneWeekView;\r\n","import moment from 'moment';\r\nimport { useState } from 'react';\r\nimport * as React from 'react';\r\nimport Col from 'react-bootstrap/Col';\r\nimport Row from 'react-bootstrap/Row';\r\nimport ToggleButton from 'react-bootstrap/ToggleButton';\r\nimport { Bar, Line } from 'react-chartjs-2';\r\nimport useScreenResolution from '../../../hooks/useScreenResolution';\r\nimport {\r\n chartSettingsForDevice,\r\n getChartOptionsData,\r\n getDatasetData,\r\n handleDisplayControllers,\r\n IChartOptions,\r\n IChartProps,\r\n} from '../../../utils/chartUtils';\r\nimport { ToggleButtonGroupFlex } from '../../Buttons/ToggleButtonGroupCst';\r\nimport { ChartInnerDiv, ChartOuterDiv } from '../../Div/StyledDiv';\r\n\r\nconst OneYearView = (props: IChartProps) => {\r\n const [xMin, setXMin] = useState(\r\n moment(props.chartData.data[props.chartData.data.length - 1].t)\r\n .clone()\r\n .startOf('year'),\r\n );\r\n const [xMax, setXMax] = useState(\r\n moment(props.chartData.data[props.chartData.data.length - 1].t)\r\n .clone()\r\n .endOf('year'),\r\n );\r\n\r\n const screenSize = useScreenResolution();\r\n\r\n const chartSettings = chartSettingsForDevice('oneYear', screenSize.width, screenSize.height);\r\n\r\n // get year of first and last weight data entry\r\n const firstYear = props.chartData.data[0].t.year();\r\n const lastYear = props.chartData.data[props.chartData.data.length - 1].t.year();\r\n\r\n // create a list of objects with the years and an index for the buttons\r\n const yearList: Array<{ name: number; value: number }> = [];\r\n let index = 0;\r\n for (let year = firstYear; year <= lastYear; year++) {\r\n yearList.push({ name: year, value: index });\r\n index++;\r\n }\r\n\r\n const datasetProps = {\r\n chartProps: props,\r\n barPercentage: 2,\r\n };\r\n\r\n const [datasets, labelsToDisplay] = getDatasetData(datasetProps);\r\n const data = {\r\n labels: labelsToDisplay, // labels to be displayed by the datalabels.formatter\r\n datasets: datasets,\r\n };\r\n\r\n const chartOptionsProps: IChartOptions = {\r\n chartProps: props,\r\n ticksXMin: xMin,\r\n ticksXMax: xMax,\r\n ticksLabelOffset: 0,\r\n chartSettings: chartSettings,\r\n updateLimits: (e) => updateLimits(e),\r\n };\r\n\r\n const options = getChartOptionsData(chartOptionsProps);\r\n\r\n function updateLimits(context: any) {\r\n if (!props.mobileProps?.sessionId) {\r\n setXMin(context.chart.scales['x-axis-0'].min);\r\n setXMax(context.chart.scales['x-axis-0'].max);\r\n }\r\n }\r\n\r\n const [radioValue, setRadioValue] = useState(yearList[yearList.length - 1].value);\r\n\r\n const handleYearChange = (selectedYearVal: React.SetStateAction) => {\r\n setRadioValue(selectedYearVal);\r\n if (yearList) {\r\n const yearName = yearList.find((i) => i.value === selectedYearVal)?.name;\r\n if (yearName) {\r\n setXMin(moment([yearName]).clone().startOf('year'));\r\n setXMax(moment([yearName]).clone().endOf('year'));\r\n }\r\n }\r\n };\r\n\r\n const YearOptions = () => {\r\n const allYearOptions: any[] = [];\r\n {\r\n yearList.map((year, idx) => {\r\n allYearOptions.push(\r\n \r\n handleYearChange(year.value)}\r\n >\r\n {year.name}\r\n \r\n ,\r\n );\r\n });\r\n }\r\n\r\n return (\r\n \r\n {allYearOptions}\r\n \r\n );\r\n };\r\n\r\n const MyLine = () => {\r\n if (props.mobileProps?.height !== undefined) {\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n );\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 const MyBar = () => {\r\n if (props.mobileProps?.height !== undefined) {\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n );\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 return (\r\n
\r\n \r\n \r\n \r\n \r\n \r\n {props.displayOption === 1 ? : }\r\n
\r\n );\r\n};\r\n\r\nexport default OneYearView;\r\n","import * as React from 'react';\r\nimport { useContext, useRef, useState } from 'react';\r\nimport ButtonToolbar from 'react-bootstrap/esm/ButtonToolbar';\r\nimport Col from 'react-bootstrap/esm/Col';\r\nimport Container from 'react-bootstrap/esm/Container';\r\nimport Row from 'react-bootstrap/esm/Row';\r\nimport ToggleButton from 'react-bootstrap/esm/ToggleButton';\r\nimport ToggleButtonGroup from 'react-bootstrap/esm/ToggleButtonGroup';\r\nimport AlertContext from '../../../context/alertContext';\r\nimport LoginContext from '../../../context/loginContext';\r\nimport useScreenResolution from '../../../hooks/useScreenResolution';\r\nimport { getDiagnosticReportsByCategory } from '../../../services/fhir/FHIRDiagnosticReports';\r\nimport {\r\n chartViews,\r\n getTableDataFromDiagnosticReportResponse,\r\n handleDisplayControllers,\r\n IChartProps,\r\n} from '../../../utils/chartUtils';\r\nimport { calcButtonPaddingSize } from '../../../utils/lottieUtils';\r\nimport { isDesktop } from '../../../utils/screenResolution';\r\nimport StyledButton from '../../Buttons/StyledButton';\r\nimport { ChartsButtonCol, ChartsHeaderCol } from '../../Cols/StyledCol';\r\nimport { CenterDiv } from '../../Div/StyledDiv';\r\nimport { LottieButtonLoadingSpinner } from '../../Loading/Loading';\r\nimport LoadingSpinnerWithText from '../../Loading/LoadingSpinnerWithText';\r\nimport TableModal, { ITableModalShow } from '../../Modals/TableModal/TableModal';\r\nimport { initalTableData } from '../../TableProvider/TableProvider';\r\nimport EmptyView from './EmptyView';\r\nimport FiveYearsView from './FiveYearsView';\r\nimport MaxView from './MaxView';\r\nimport OneMonthView from './OneMonthView';\r\nimport OneWeekView from './OneWeekView';\r\nimport OneYearView from './OneYearView';\r\n\r\ninterface IViewSwitcher {\r\n chartLoaded: boolean;\r\n foundData: boolean;\r\n chartProps: IChartProps;\r\n}\r\n\r\nconst ViewSwitcher = (props: IViewSwitcher) => {\r\n const { state } = useContext(LoginContext);\r\n const { alertdispatch } = useContext(AlertContext);\r\n const [rangeValue, setRangeValue] = useState(chartViews.ALL_VIEW);\r\n const [labelButtonVal, setLabelButtonVal] = useState('Werte anzeigen');\r\n const [labelOpt, setLabelOpt] = useState(false);\r\n const [showTableButtonLoadingSpinner, setShowTableButtonLoadingSpinner] = useState(false);\r\n const tableButtonRef = useRef(null);\r\n\r\n const screenSize = useScreenResolution();\r\n const desktop = isDesktop(screenSize.width);\r\n const isSmallScreen = screenSize.width < 500 ? true : false;\r\n\r\n const [tableModalShow, setTableModalShow] = useState({\r\n show: false,\r\n modalTitle: '',\r\n tableData: { ...initalTableData.tableData },\r\n });\r\n\r\n const handleValueChange = (e: React.MouseEvent) => {\r\n if (e) {\r\n e.currentTarget.blur();\r\n }\r\n if ('Werte anzeigen' === labelButtonVal) {\r\n setLabelButtonVal('Werte ausblenden');\r\n } else {\r\n setLabelButtonVal('Werte anzeigen');\r\n }\r\n\r\n setLabelOpt(!labelOpt);\r\n };\r\n\r\n const oneWeekView = () => {\r\n if (rangeValue !== chartViews.ONE_WEEK_VIEW) {\r\n setRangeValue(chartViews.ONE_WEEK_VIEW);\r\n }\r\n\r\n if (props.foundData) {\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n );\r\n } else {\r\n return ;\r\n }\r\n };\r\n\r\n const oneMonthView = () => {\r\n if (rangeValue !== chartViews.ONE_MONTH_VIEW) {\r\n setRangeValue(chartViews.ONE_MONTH_VIEW);\r\n }\r\n\r\n if (props.foundData) {\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n );\r\n } else {\r\n return ;\r\n }\r\n };\r\n\r\n const oneYearView = () => {\r\n if (rangeValue !== chartViews.ONE_YEAR_VIEW) {\r\n setRangeValue(chartViews.ONE_YEAR_VIEW);\r\n }\r\n\r\n if (props.foundData) {\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n );\r\n } else {\r\n return ;\r\n }\r\n };\r\n\r\n const fiveYearView = () => {\r\n if (rangeValue !== chartViews.FIVE_YEAR_VIEW) {\r\n setRangeValue(chartViews.FIVE_YEAR_VIEW);\r\n }\r\n\r\n if (props.foundData) {\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n );\r\n } else {\r\n return ;\r\n }\r\n };\r\n\r\n const allView = () => {\r\n if (rangeValue !== chartViews.ALL_VIEW) {\r\n setRangeValue(chartViews.ALL_VIEW);\r\n }\r\n\r\n if (props.foundData) {\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n );\r\n } else {\r\n return ;\r\n }\r\n };\r\n\r\n const getChartsView = () => {\r\n if (rangeValue === chartViews.ONE_WEEK_VIEW) {\r\n return oneWeekView();\r\n } else if (rangeValue === chartViews.ONE_MONTH_VIEW) {\r\n return oneMonthView();\r\n } else if (rangeValue === chartViews.ONE_YEAR_VIEW) {\r\n return oneYearView();\r\n } else if (rangeValue === chartViews.FIVE_YEAR_VIEW) {\r\n return fiveYearView();\r\n } else if (rangeValue === chartViews.ALL_VIEW) {\r\n return allView();\r\n }\r\n };\r\n\r\n const handleTableDataClick = async (e: React.MouseEvent) => {\r\n if (e) {\r\n e.currentTarget.blur();\r\n }\r\n setShowTableButtonLoadingSpinner(true);\r\n\r\n if (props?.chartProps?.chartOptions?.extraTables !== undefined) {\r\n let titleFromExtraTables = '';\r\n titleFromExtraTables = props?.chartProps?.chartOptions?.extraTables[0]?.name;\r\n const id = props?.chartProps?.chartOptions?.extraTables[0]?.id;\r\n\r\n if (id && id.length > 0) {\r\n const response = await getDiagnosticReportsByCategory(state, id, alertdispatch);\r\n if (response) {\r\n const [tableTitle, tableData] = getTableDataFromDiagnosticReportResponse(response);\r\n setShowTableButtonLoadingSpinner(false);\r\n setTableModalShow({\r\n show: true,\r\n modalTitle: titleFromExtraTables,\r\n tableData: tableData,\r\n });\r\n }\r\n }\r\n }\r\n };\r\n\r\n const isTableIncluded = () => {\r\n if (props?.chartProps?.chartOptions?.extraTables !== undefined) {\r\n if (props?.chartProps?.chartOptions?.extraTables[0]?.id?.length > 0) {\r\n return true;\r\n }\r\n }\r\n\r\n return false;\r\n };\r\n\r\n const getTableId = () => {\r\n let id: string | undefined = '';\r\n id = props?.chartProps?.chartOptions?.extraTables?.[0]?.id;\r\n return id;\r\n };\r\n\r\n const ShowTableButton = () => {\r\n if (showTableButtonLoadingSpinner) {\r\n let calcButtonWidth = '35px';\r\n const lottieSize = 24;\r\n calcButtonWidth = calcButtonPaddingSize(tableButtonRef, lottieSize);\r\n\r\n return (\r\n handleTableDataClick(e)}\r\n >\r\n \r\n \r\n );\r\n } else {\r\n return (\r\n handleTableDataClick(e)}\r\n >\r\n Tabelle anzeigen\r\n \r\n );\r\n }\r\n };\r\n\r\n return (\r\n \r\n {!props.chartLoaded ? (\r\n \r\n ) : (\r\n \r\n \r\n \r\n \r\n \r\n \r\n 1 Woche\r\n \r\n \r\n 1 Monat\r\n \r\n \r\n {' '}\r\n 1 Jahr{' '}\r\n \r\n \r\n {' '}\r\n 5 Jahre{' '}\r\n \r\n \r\n {' '}\r\n Max{' '}\r\n \r\n \r\n \r\n \r\n {isTableIncluded() && }\r\n handleValueChange(e)}\r\n >\r\n {labelButtonVal}\r\n \r\n \r\n {/* {isTableIncluded() && }\r\n \r\n handleValueChange(e)}\r\n >\r\n {labelButtonVal}\r\n \r\n */}\r\n \r\n \r\n \r\n )}\r\n \r\n {getChartsView()}\r\n \r\n setTableModalShow({\r\n show: false,\r\n modalTitle: '',\r\n tableData: { ...initalTableData.tableData },\r\n })\r\n }\r\n modalTitle={tableModalShow.modalTitle}\r\n tableData={tableModalShow.tableData}\r\n />\r\n \r\n \r\n );\r\n};\r\n\r\nexport default ViewSwitcher;\r\n","import 'chartjs-plugin-datalabels';\r\nimport 'chartjs-plugin-zoom';\r\nimport { useContext, useEffect, useState } from 'react';\r\nimport LoginContext from '../../../context/loginContext';\r\nimport { useChart } from '../../../hooks/useChart';\r\nimport { charts, IChartProps, IGetChartData, initalChartData } from '../../../utils/chartUtils';\r\nimport { IAppCharts } from '../AppCharts/AppCharts';\r\nimport ViewSwitcher from '../ChartViews/ViewSwitcher';\r\n\r\nconst ActivityCharts = (props: IAppCharts) => {\r\n const { state } = useContext(LoginContext);\r\n const { getChartData } = useChart({ ...props, chartId: charts.ACTIVITY.requestId, dataPrecisionVal: 0 });\r\n\r\n const [chartData, setChartData] = useState({\r\n chartLoaded: false,\r\n foundChartData: false,\r\n chartData: { ...initalChartData },\r\n });\r\n\r\n useEffect(() => {\r\n const getData = async () => {\r\n const data = await getChartData();\r\n setChartData(data);\r\n };\r\n\r\n console.log(initalChartData);\r\n console.log(chartData);\r\n getData();\r\n }, [state.activePatient]);\r\n\r\n const getData = () => {\r\n const data: IChartProps = {\r\n chartName: charts.ACTIVITY.id,\r\n mobileProps: props,\r\n displayOption: 0,\r\n chartOptions: chartData.chartData.chartOptions,\r\n chartData: chartData.chartData.chartData,\r\n targetChart1: chartData.chartData.targetChart1,\r\n targetChart2: chartData.chartData.targetChart2,\r\n targetChart3: chartData.chartData.targetChart3,\r\n chartViewLimits: chartData.chartData.chartViewLimits,\r\n labels: chartData.chartData.labels,\r\n labelOption: false,\r\n tooltipPrecisionVal: 0,\r\n };\r\n\r\n return data;\r\n };\r\n\r\n return (\r\n \r\n );\r\n};\r\n\r\nexport default ActivityCharts;\r\n","import { useContext, useEffect, useState } from 'react';\r\nimport LoginContext from '../../../context/loginContext';\r\nimport { useChart } from '../../../hooks/useChart';\r\nimport { charts, IChartProps, IGetChartData, initalChartData } from '../../../utils/chartUtils';\r\nimport { IAppCharts } from '../AppCharts/AppCharts';\r\nimport ViewSwitcher from '../ChartViews/ViewSwitcher';\r\n\r\nconst BloodSugarCharts = (props: IAppCharts) => {\r\n const { state } = useContext(LoginContext);\r\n const { getChartData } = useChart({ ...props, chartId: charts.BLOODSUGAR.requestId, dataPrecisionVal: 2 });\r\n\r\n const [chartData, setChartData] = useState({\r\n chartLoaded: false,\r\n foundChartData: false,\r\n chartData: { ...initalChartData },\r\n });\r\n\r\n useEffect(() => {\r\n const getData = async () => {\r\n const data = await getChartData();\r\n setChartData(data);\r\n };\r\n\r\n getData();\r\n }, [state.activePatient]);\r\n\r\n const getData = () => {\r\n const data: IChartProps = {\r\n chartName: charts.BLOODSUGAR.id,\r\n mobileProps: props,\r\n displayOption: 1,\r\n chartOptions: chartData.chartData.chartOptions,\r\n chartData: chartData.chartData.chartData,\r\n targetBarrier: chartData.chartData.targetBarrier,\r\n targetArea: chartData.chartData.targetArea,\r\n targetCeiling: chartData.chartData.targetCeiling,\r\n chartViewLimits: chartData.chartData.chartViewLimits,\r\n labels: chartData.chartData.labels,\r\n labelOption: false,\r\n tooltipPrecisionVal: 1,\r\n };\r\n\r\n return data;\r\n };\r\n\r\n return (\r\n
\r\n \r\n
\r\n );\r\n};\r\n\r\nexport default BloodSugarCharts;\r\n","import { useContext, useEffect, useState } from 'react';\r\nimport LoginContext from '../../../context/loginContext';\r\nimport { useChart } from '../../../hooks/useChart';\r\nimport { charts, IChartProps, IGetChartData, initalChartData } from '../../../utils/chartUtils';\r\nimport { IAppCharts } from '../AppCharts/AppCharts';\r\nimport ViewSwitcher from '../ChartViews/ViewSwitcher';\r\n\r\nconst BodyFatCharts = (props: IAppCharts) => {\r\n const { state } = useContext(LoginContext);\r\n const { getChartData } = useChart({ ...props, chartId: charts.FATMASS.requestId, dataPrecisionVal: 1 });\r\n\r\n const [chartData, setChartData] = useState({\r\n chartLoaded: false,\r\n foundChartData: false,\r\n chartData: { ...initalChartData },\r\n });\r\n\r\n useEffect(() => {\r\n const getData = async () => {\r\n const data = await getChartData();\r\n setChartData(data);\r\n };\r\n\r\n getData();\r\n }, [state.activePatient]);\r\n\r\n const getData = () => {\r\n const data: IChartProps = {\r\n chartName: charts.FATMASS.id,\r\n mobileProps: props,\r\n displayOption: 1,\r\n chartOptions: chartData.chartData.chartOptions,\r\n chartData: chartData.chartData.chartData,\r\n targetChart1: chartData.chartData.targetChart1,\r\n targetChart2: chartData.chartData.targetChart2,\r\n targetChart3: chartData.chartData.targetChart3,\r\n chartViewLimits: chartData.chartData.chartViewLimits,\r\n labels: chartData.chartData.labels,\r\n labelOption: false,\r\n tooltipPrecisionVal: 1,\r\n };\r\n\r\n return data;\r\n };\r\n\r\n return (\r\n \r\n );\r\n};\r\n\r\nexport default BodyFatCharts;\r\n","import 'chartjs-plugin-datalabels';\r\nimport 'chartjs-plugin-zoom';\r\nimport { useContext, useEffect, useState } from 'react';\r\nimport LoginContext from '../../../context/loginContext';\r\nimport { useChart } from '../../../hooks/useChart';\r\nimport { charts, IChartProps, IGetChartData, initalChartData } from '../../../utils/chartUtils';\r\nimport { IAppCharts } from '../AppCharts/AppCharts';\r\nimport ViewSwitcher from '../ChartViews/ViewSwitcher';\r\n\r\nconst FLICharts = (props: IAppCharts) => {\r\n const { state } = useContext(LoginContext);\r\n const { getChartData } = useChart({ ...props, chartId: charts.FLI.requestId, dataPrecisionVal: 0 });\r\n\r\n const [chartData, setChartData] = useState({\r\n chartLoaded: false,\r\n foundChartData: false,\r\n chartData: { ...initalChartData },\r\n });\r\n\r\n useEffect(() => {\r\n const getData = async () => {\r\n const data = await getChartData();\r\n setChartData(data);\r\n };\r\n\r\n getData();\r\n }, [state.activePatient]);\r\n\r\n const getData = () => {\r\n const data: IChartProps = {\r\n chartName: charts.FLI.id,\r\n mobileProps: props,\r\n displayOption: 1,\r\n chartOptions: chartData.chartData.chartOptions,\r\n chartData: chartData.chartData.chartData,\r\n targetBarrier: chartData.chartData.targetBarrier,\r\n targetArea: chartData.chartData.targetArea,\r\n targetCeiling: chartData.chartData.targetCeiling,\r\n chartViewLimits: chartData.chartData.chartViewLimits,\r\n labels: chartData.chartData.labels,\r\n labelOption: false,\r\n tooltipPrecisionVal: 0,\r\n };\r\n\r\n return data;\r\n };\r\n\r\n return (\r\n \r\n );\r\n};\r\n\r\nexport default FLICharts;\r\n","import 'chartjs-plugin-datalabels';\r\nimport 'chartjs-plugin-zoom';\r\nimport { useContext, useEffect, useState } from 'react';\r\nimport LoginContext from '../../../context/loginContext';\r\nimport { useChart } from '../../../hooks/useChart';\r\nimport { charts, IChartProps, IGetChartData, initalChartData } from '../../../utils/chartUtils';\r\nimport { IAppCharts } from '../AppCharts/AppCharts';\r\nimport ViewSwitcher from '../ChartViews/ViewSwitcher';\r\n\r\nconst SAMCharts = (props: IAppCharts) => {\r\n const { state } = useContext(LoginContext);\r\n const { getChartData } = useChart({ ...props, chartId: charts.SAM.requestId, dataPrecisionVal: 0 });\r\n\r\n const [chartData, setChartData] = useState({\r\n chartLoaded: false,\r\n foundChartData: false,\r\n chartData: { ...initalChartData },\r\n });\r\n\r\n useEffect(() => {\r\n const getData = async () => {\r\n const data = await getChartData();\r\n setChartData(data);\r\n };\r\n\r\n getData();\r\n }, [state.activePatient]);\r\n\r\n const getData = () => {\r\n const data: IChartProps = {\r\n chartName: charts.SAM.id,\r\n mobileProps: props,\r\n displayOption: 1,\r\n chartOptions: chartData.chartData.chartOptions,\r\n chartData: chartData.chartData.chartData,\r\n targetBarrier: chartData.chartData.targetBarrier,\r\n targetArea: chartData.chartData.targetArea,\r\n targetCeiling: chartData.chartData.targetCeiling,\r\n chartViewLimits: chartData.chartData.chartViewLimits,\r\n labels: chartData.chartData.labels,\r\n labelOption: false,\r\n tooltipPrecisionVal: 0,\r\n };\r\n\r\n return data;\r\n };\r\n\r\n return (\r\n \r\n );\r\n};\r\n\r\nexport default SAMCharts;\r\n","import 'chartjs-plugin-datalabels';\r\nimport 'chartjs-plugin-zoom';\r\nimport { useContext, useEffect, useState } from 'react';\r\nimport LoginContext from '../../../context/loginContext';\r\nimport { useChart } from '../../../hooks/useChart';\r\nimport { charts, IChartProps, IGetChartData, initalChartData } from '../../../utils/chartUtils';\r\nimport { IAppCharts } from '../AppCharts/AppCharts';\r\nimport ViewSwitcher from '../ChartViews/ViewSwitcher';\r\n\r\nconst WeightCharts = (props: IAppCharts) => {\r\n const { state } = useContext(LoginContext);\r\n const { getChartData } = useChart({ ...props, chartId: charts.WEIGHT.requestId, dataPrecisionVal: 1 });\r\n\r\n const [chartData, setChartData] = useState({\r\n chartLoaded: false,\r\n foundChartData: false,\r\n chartData: { ...initalChartData },\r\n });\r\n\r\n useEffect(() => {\r\n const getData = async () => {\r\n const data = await getChartData();\r\n setChartData(data);\r\n };\r\n\r\n getData();\r\n }, [state.activePatient]);\r\n\r\n const getData = () => {\r\n const data: IChartProps = {\r\n chartName: charts.WEIGHT.id,\r\n mobileProps: props,\r\n displayOption: 1,\r\n chartOptions: chartData.chartData.chartOptions,\r\n chartData: chartData.chartData.chartData,\r\n targetChart1: chartData.chartData.targetChart1,\r\n targetChart2: chartData.chartData.targetChart2,\r\n targetChart3: chartData.chartData.targetChart3,\r\n chartViewLimits: chartData.chartData.chartViewLimits,\r\n labels: chartData.chartData.labels,\r\n labelOption: false,\r\n tooltipPrecisionVal: 1,\r\n };\r\n\r\n return data;\r\n };\r\n\r\n return (\r\n \r\n );\r\n};\r\n\r\nexport default WeightCharts;\r\n","import { useLocation } from 'react-router-dom';\r\nimport { charts } from '../../../utils/chartUtils';\r\nimport { getQueryParams } from '../../../utils/urlUtils';\r\nimport ActivityCharts from '../ActivityCharts/ActivityCharts';\r\nimport BloodSugarCharts from '../BloodSugar/BloodSugarCharts';\r\nimport BodyFatCharts from '../BodyFat/BodyFatCharts';\r\nimport FLICharts from '../FLI/FLICharts';\r\nimport SAMCharts from '../SAM/SAMCharts';\r\nimport WeightCharts from '../Weight/WeightCharts';\r\n\r\nexport interface IAppCharts {\r\n type?: string;\r\n chartType?: string;\r\n width?: number;\r\n height?: number;\r\n sessionId?: string;\r\n activeUserId?: number;\r\n showControllers?: boolean;\r\n dataPrecisionVal?: number;\r\n}\r\n\r\nconst AppCharts = () => {\r\n const location = useLocation();\r\n const hashParams = getQueryParams(location.search);\r\n\r\n if (hashParams.type === 'Charts') {\r\n if (hashParams.chartType === charts.WEIGHT.appTypeName) {\r\n return ;\r\n }\r\n if (hashParams.chartType === charts.FATMASS.appTypeName) {\r\n return ;\r\n }\r\n if (hashParams.chartType === charts.BLOODSUGAR.appTypeName) {\r\n return ;\r\n }\r\n if (hashParams.chartType === charts.FLI.appTypeName) {\r\n return ;\r\n }\r\n if (hashParams.chartType === charts.ACTIVITY.appTypeName) {\r\n return ;\r\n }\r\n if (hashParams.chartType === charts.SAM.appTypeName) {\r\n return ;\r\n }\r\n }\r\n\r\n return null;\r\n};\r\n\r\nexport default AppCharts;\r\n","import { useContext, useEffect, useState } from 'react';\r\nimport Col from 'react-bootstrap/esm/Col';\r\nimport Container from 'react-bootstrap/esm/Container';\r\nimport Row from 'react-bootstrap/esm/Row';\r\nimport { useNavigate } from 'react-router-dom';\r\nimport { ThemeContext } from 'styled-components';\r\nimport NavbarMenu from '../../container/Navbar/Navbar';\r\nimport Sidebar from '../../container/Sidebar/Sidebar';\r\nimport QuestionnaireContext from '../../context/questionnaireContext';\r\nimport { getIFrameURL } from '../../services/RestServices';\r\nimport StyledButton from '../Buttons/StyledButton';\r\nimport StyledCol from '../Cols/StyledCol';\r\nimport DragNDropArea from '../Div/DragNDropArea';\r\nimport { containerHeader } from '../Header/Header';\r\n\r\nconst IFrameContent = () => {\r\n const { qstate } = useContext(QuestionnaireContext);\r\n\r\n // console.log('qstate: ', qstate);\r\n\r\n const formId = qstate.selectedQuestionnaire.resource.id;\r\n const n = qstate.selectedQuestionnaire.resource.extension[0].valueString.lastIndexOf('='); // get index of last = in string\r\n const patId = qstate.selectedQuestionnaire.resource.extension[0].valueString.substring(n + 1); // extract patientId after last =\r\n\r\n const [iFrame, setIFrame] = useState('');\r\n\r\n //const iFrameSrc = 'data:image/jpg;base64,' + iFrame;\r\n const iFrameSrc = '' + iFrame;\r\n\r\n const getLinkForIFrame = async () => {\r\n const iframeResp = await getIFrameURL(formId, patId);\r\n // console.log('iiframeRep: ', iframeResp);\r\n setIFrame(iframeResp);\r\n };\r\n\r\n useEffect(() => {\r\n getLinkForIFrame();\r\n }, []);\r\n\r\n const navigate = useNavigate();\r\n return (\r\n <>\r\n \r\n \r\n {/* \r\n {iFrame !== '' ? (\r\n \r\n ) : <>}\r\n */}\r\n \r\n \r\n \r\n \r\n navigate(-1)}>\r\n Zurück\r\n \r\n \r\n \r\n \r\n \r\n );\r\n};\r\n\r\nconst IFrameFragebogen = () => {\r\n const themeContext = useContext(ThemeContext);\r\n\r\n return (\r\n
\r\n
\r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n {containerHeader('Fragebogen')}\r\n \r\n \r\n \r\n \r\n
\r\n );\r\n};\r\n\r\nexport default IFrameFragebogen;\r\n","import { useContext, useEffect, useState } from 'react';\r\nimport Col from 'react-bootstrap/Col';\r\nimport Container from 'react-bootstrap/Container';\r\nimport Nav from 'react-bootstrap/Nav';\r\nimport Row from 'react-bootstrap/Row';\r\nimport { FaChartPie, FaWeight } from 'react-icons/fa';\r\nimport { GiLiver } from 'react-icons/gi';\r\nimport { ImDroplet, ImTable } from 'react-icons/im';\r\nimport { RiFootprintFill } from 'react-icons/ri';\r\nimport StyledCardContent from '../../components/Cards/StyledCardContent';\r\nimport { containerHeader } from '../../components/Header/Header';\r\nimport LoginContext from '../../context/loginContext';\r\nimport { Paths } from '../../Routes';\r\nimport { charts, tables } from '../../utils/chartUtils';\r\nimport Mainscreen from '../Mainscreen/Mainscreen';\r\n\r\nconst ChartsContent = () => {\r\n const { state } = useContext(LoginContext);\r\n const [chartsOrder, setChartsOrder] = useState([\r\n charts.WEIGHT.id,\r\n charts.ACTIVITY.id,\r\n charts.BLOODSUGAR.id,\r\n charts.FATMASS.id,\r\n charts.SAM.id,\r\n charts.FLI.id,\r\n tables.VALTBL.id,\r\n ]);\r\n\r\n // const {\r\n // isChartsWeightEnabled,\r\n // isChartsBodyFatEnabled,\r\n // isChartsBloodSugarEnabled,\r\n // isChartsFLIEnabled,\r\n // isChartsSAMEnabled,\r\n // isChartsActivityEnabled,\r\n // } = useSecurityItems();\r\n\r\n useEffect(() => {\r\n if (state.finalSecurityItemsOrder.length > 0) {\r\n setChartsOrder(state.finalSecurityItemsOrder);\r\n }\r\n }, [state.finalSecurityItemsOrder]);\r\n\r\n const showChartItems = () => {\r\n const allChartItems: any[] = [];\r\n\r\n chartsOrder.forEach((e) => {\r\n if (!e.startsWith('CHARTS:')) {\r\n return;\r\n }\r\n\r\n let route = '';\r\n let title = '';\r\n let icon = ;\r\n\r\n if (e === charts.WEIGHT.id) {\r\n route = Paths.CHARTS_GEWICHT;\r\n title = charts.WEIGHT.name;\r\n icon = ;\r\n } else if (e === charts.ACTIVITY.id) {\r\n route = Paths.CHARTS_ACTIVITY;\r\n title = charts.ACTIVITY.name;\r\n icon = ;\r\n } else if (e === charts.BLOODSUGAR.id) {\r\n route = Paths.CHARTS_BLUTZUCKER;\r\n title = charts.BLOODSUGAR.name;\r\n icon = ;\r\n } else if (e === charts.FATMASS.id) {\r\n route = Paths.CHARTS_FETTMASSE;\r\n title = charts.FATMASS.name;\r\n icon = ;\r\n } else if (e === charts.SAM.id) {\r\n route = Paths.CHARTS_SAM;\r\n title = charts.SAM.name;\r\n icon = ;\r\n } else if (e === charts.FLI.id) {\r\n route = Paths.CHARTS_FLI;\r\n title = charts.FLI.name;\r\n icon = ;\r\n } else if (e === tables.VALTBL.id) {\r\n route = Paths.TABLE_VAL;\r\n title = tables.VALTBL.name;\r\n icon = ;\r\n }\r\n\r\n allChartItems.push(\r\n ,\r\n );\r\n });\r\n\r\n return allChartItems;\r\n };\r\n\r\n return (\r\n
\r\n \r\n
\r\n\r\n //
\r\n // \r\n //
\r\n );\r\n};\r\n\r\nconst Charts = () => {\r\n return (\r\n \r\n \r\n \r\n \r\n {containerHeader('Charts')}\r\n \r\n \r\n \r\n \r\n \r\n );\r\n};\r\n\r\nexport default Charts;\r\n","import Col from 'react-bootstrap/Col';\r\nimport Container from 'react-bootstrap/Container';\r\nimport Row from 'react-bootstrap/Row';\r\nimport ActivityCharts from '../../../components/Charts/ActivityCharts/ActivityCharts';\r\nimport { containerHeader } from '../../../components/Header/Header';\r\nimport { charts } from '../../../utils/chartUtils';\r\nimport Mainscreen from '../../Mainscreen/Mainscreen';\r\n\r\nconst ChartsActivityContent = () => {\r\n return (\r\n \r\n \r\n \r\n );\r\n};\r\n\r\nconst ChartsActivity = () => {\r\n return (\r\n \r\n \r\n \r\n \r\n {containerHeader(charts.ACTIVITY.name)}\r\n \r\n \r\n \r\n \r\n \r\n );\r\n};\r\n\r\nexport default ChartsActivity;\r\n","import Col from 'react-bootstrap/esm/Col';\r\nimport Container from 'react-bootstrap/esm/Container';\r\nimport Row from 'react-bootstrap/esm/Row';\r\nimport BloodSugarCharts from '../../../components/Charts/BloodSugar/BloodSugarCharts';\r\nimport { containerHeader } from '../../../components/Header/Header';\r\nimport Mainscreen from '../../Mainscreen/Mainscreen';\r\n\r\nconst ChartsBlutzuckerContent = () => {\r\n return (\r\n \r\n \r\n \r\n );\r\n};\r\n\r\nconst ChartsBlutzucker = () => {\r\n return (\r\n \r\n \r\n \r\n \r\n {containerHeader('Blutzucker')}\r\n \r\n \r\n \r\n \r\n \r\n );\r\n};\r\n\r\nexport default ChartsBlutzucker;\r\n","import Col from 'react-bootstrap/Col';\r\nimport Container from 'react-bootstrap/Container';\r\nimport Row from 'react-bootstrap/Row';\r\nimport BodyFatCharts from '../../../components/Charts/BodyFat/BodyFatCharts';\r\nimport { containerHeader } from '../../../components/Header/Header';\r\nimport { charts } from '../../../utils/chartUtils';\r\nimport Mainscreen from '../../Mainscreen/Mainscreen';\r\n\r\nconst ChartsFettmasseContent = () => {\r\n return (\r\n \r\n \r\n \r\n );\r\n};\r\n\r\nconst ChartsFettmasse = () => {\r\n return (\r\n \r\n \r\n \r\n \r\n {containerHeader(charts.FATMASS.name)}\r\n \r\n \r\n \r\n \r\n \r\n );\r\n};\r\n\r\nexport default ChartsFettmasse;\r\n","import Col from 'react-bootstrap/Col';\r\nimport Container from 'react-bootstrap/Container';\r\nimport Row from 'react-bootstrap/Row';\r\nimport FLICharts from '../../../components/Charts/FLI/FLICharts';\r\nimport { containerHeader } from '../../../components/Header/Header';\r\nimport Mainscreen from '../../Mainscreen/Mainscreen';\r\n\r\nconst ChartsFLIContent = () => {\r\n return (\r\n \r\n \r\n \r\n );\r\n};\r\n\r\nconst ChartsFLI = () => {\r\n return (\r\n \r\n \r\n \r\n \r\n {containerHeader('FLI')}\r\n \r\n \r\n \r\n \r\n \r\n );\r\n};\r\n\r\nexport default ChartsFLI;\r\n","import Container from 'react-bootstrap/Container';\r\nimport Row from 'react-bootstrap/Row';\r\nimport Col from 'react-bootstrap/Col';\r\nimport Mainscreen from '../../Mainscreen/Mainscreen';\r\nimport { containerHeader } from '../../../components/Header/Header';\r\nimport WeightCharts from '../../../components/Charts/Weight/WeightCharts';\r\n\r\nconst ChartsGewichtContent = () => {\r\n return (\r\n \r\n \r\n \r\n );\r\n};\r\n\r\nconst ChartsGewicht = () => {\r\n return (\r\n \r\n \r\n \r\n \r\n {containerHeader('Gewicht')}\r\n \r\n \r\n \r\n \r\n \r\n );\r\n};\r\n\r\nexport default ChartsGewicht;\r\n","import Col from 'react-bootstrap/Col';\r\nimport Container from 'react-bootstrap/Container';\r\nimport Row from 'react-bootstrap/Row';\r\nimport SAMCharts from '../../../components/Charts/SAM/SAMCharts';\r\nimport { containerHeader } from '../../../components/Header/Header';\r\nimport Mainscreen from '../../Mainscreen/Mainscreen';\r\n\r\nconst ChartsSAMContent = () => {\r\n return (\r\n \r\n \r\n \r\n );\r\n};\r\n\r\nconst ChartsSAM = () => {\r\n return (\r\n \r\n \r\n \r\n \r\n {containerHeader('SAM')}\r\n \r\n \r\n \r\n \r\n \r\n );\r\n};\r\n\r\nexport default ChartsSAM;\r\n","const Error = () => {\r\n return (\r\n
\r\n

404 Error

\r\n

cannot find page

\r\n
\r\n );\r\n};\r\n\r\nexport default Error;\r\n","import { useContext } from 'react';\r\nimport { useNavigate } from 'react-router-dom';\r\nimport ExecuteRuleContext from '../../context/executeRuleContext';\r\nimport { Paths } from '../../Routes';\r\nimport { setRuleProperties } from '../../utils/executeRuleUtils';\r\nimport { getQueryParams } from '../../utils/urlUtils';\r\n\r\nconst ExecuteRule = () => {\r\n const navigate = useNavigate();\r\n const { executeruledispatch } = useContext(ExecuteRuleContext);\r\n\r\n const hashParams = getQueryParams(location.hash);\r\n setRuleProperties(hashParams, executeruledispatch);\r\n navigate(Paths.HOME);\r\n return null;\r\n};\r\n\r\nexport default ExecuteRule;\r\n","import { useContext, useState } from 'react';\r\nimport { Container, Form } from 'react-bootstrap';\r\nimport Card from 'react-bootstrap/esm/Card';\r\nimport Col from 'react-bootstrap/esm/Col';\r\nimport Row from 'react-bootstrap/esm/Row';\r\nimport { FaRegCalendarAlt } from 'react-icons/fa';\r\nimport { useNavigate } from 'react-router-dom';\r\nimport { ThemeContext } from 'styled-components';\r\nimport { Paths } from '../../Routes';\r\nimport AppPropsContext from '../../context/appPropsContext';\r\nimport { GoogleAnalyticsAction, GoogleAnalyticsCategory, useGoogleAnalytics } from '../../hooks/useGoogleAnalytics';\r\nimport StyledButton from '../Buttons/StyledButton';\r\nimport { StyledMainCardTitle, StyledProfileCard } from '../Cards/StyledCard';\r\nimport { CenterDiv, RightDiv } from '../Div/StyledDiv';\r\nconst EnrollCodeBox = () => {\r\n const navigate = useNavigate();\r\n const themeContext = useContext(ThemeContext);\r\n const { apstate } = useContext(AppPropsContext);\r\n\r\n const { sendGoogleAnalyticsEvent } = useGoogleAnalytics();\r\n //const screenSize = useScreenResolution();\r\n\r\n const [anmeldKatSelected, setAnmeldKatSelected] = useState();\r\n\r\n // const getMarginRightLeft = () => {\r\n // if (screenSize.width > 1700) {\r\n // return '50px';\r\n // } else if (screenSize.width > 1300) {\r\n // return '20px';\r\n // } else {\r\n // return '10px';\r\n // }\r\n // };\r\n\r\n const handleSetAnmeldKat = (e: any) => {\r\n setAnmeldKatSelected(e.target.value.toString());\r\n };\r\n\r\n const getAnmeldKatOptions = () => {\r\n // if (props.departments.versicherungsArt && props.departments.versicherungsArt.length > 0) {\r\n // return props.departments.versicherungsArt.map((versicherungsArt) => (\r\n // \r\n // ));\r\n // } else {\r\n // return (\r\n // <>\r\n // \r\n // \r\n // \r\n // );\r\n // }\r\n\r\n if (apstate.anmeldeContexts && apstate.anmeldeContexts.length > 0) {\r\n return apstate.anmeldeContexts.map((anmeldeContext) => (\r\n \r\n ));\r\n } else {\r\n return null;\r\n }\r\n\r\n // return (\r\n // <>\r\n // \r\n // \r\n // \r\n // );\r\n };\r\n\r\n const handleTerminAnfordernClick = () => {\r\n sendGoogleAnalyticsEvent({\r\n category: GoogleAnalyticsCategory.HOMESCREEN,\r\n action: GoogleAnalyticsAction.CLICK,\r\n label: 'Standort ' + anmeldKatSelected + ' ausgewählt',\r\n });\r\n navigate(Paths.NEUER_ACCOUNT_WL + '?reason=' + anmeldKatSelected + '&type=NewAccount');\r\n };\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n Ihre Terminplanung ohne Account\r\n \r\n \r\n \r\n \r\n \r\n handleSetAnmeldKat(e)}\r\n >\r\n \r\n {getAnmeldKatOptions()}\r\n \r\n \r\n \r\n handleTerminAnfordernClick()}\r\n >\r\n Neuen Termin anfordern\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n /* ALTE VARIANTE \r\n return (\r\n \r\n \r\n \r\n \r\n Sie haben einen Termincode?\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n navigate(Paths.TERMINIERUNG_WL)}>\r\n Neuen Termin anfordern\r\n \r\n
\r\n
\r\n
\r\n \r\n
\r\n );\r\n */\r\n};\r\n\r\nexport default EnrollCodeBox;\r\n","import { useContext, useEffect, useState } from 'react';\r\nimport Col from 'react-bootstrap/Col';\r\nimport Container from 'react-bootstrap/Container';\r\nimport Image from 'react-bootstrap/Image';\r\nimport Row from 'react-bootstrap/Row';\r\nimport Nav from 'react-bootstrap/esm/Nav';\r\nimport EnrollCodeBox from '../../components/EnrollCodeBox/EnrollCodeBox';\r\nimport ExtraLinks from '../../components/ExtraLinks/ExtraLinks';\r\nimport QRCodeForApp from '../../components/QRCode/QRCodeForApp';\r\nimport AlertContext from '../../context/alertContext';\r\nimport AppPropsContext from '../../context/appPropsContext';\r\nimport { useAppProperties } from '../../hooks/useAppProperties';\r\nimport { resetShowAlertMessage } from '../../utils/alertHandling';\r\nimport Login from '../Login/Login';\r\nimport FullScreenImpressum from '../Mainscreen/FullScreenImpressum';\r\n\r\nconst Home = () => {\r\n interface IShowHomeElements {\r\n showLogin: boolean;\r\n showEnrollCodeBox: boolean;\r\n showQRCodeForApp: boolean;\r\n row_lg: number;\r\n }\r\n\r\n const { apstate } = useContext(AppPropsContext);\r\n const { alertdispatch } = useContext(AlertContext);\r\n // const themeContext = useContext(ThemeContext);\r\n\r\n const { getImpressum } = useAppProperties();\r\n\r\n const [homeElements, setHomeElements] = useState({\r\n showLogin: false,\r\n showEnrollCodeBox: false,\r\n showQRCodeForApp: false,\r\n row_lg: 0,\r\n });\r\n\r\n useEffect(() => {\r\n resetShowAlertMessage(alertdispatch);\r\n }, []);\r\n\r\n useEffect(() => {\r\n const homeEle = {\r\n showLogin: false,\r\n showEnrollCodeBox: false,\r\n showQRCodeForApp: false,\r\n row_lg: 0,\r\n };\r\n let row_lg_counter = 0;\r\n\r\n if (apstate.allowLogin) {\r\n homeEle.showLogin = true;\r\n row_lg_counter++;\r\n }\r\n if (apstate.allowAppointmentsWithoutLogin) {\r\n homeEle.showEnrollCodeBox = true;\r\n row_lg_counter++;\r\n }\r\n if (apstate.showMobileQR !== false) {\r\n homeEle.showQRCodeForApp = true;\r\n row_lg_counter++;\r\n }\r\n\r\n homeEle.row_lg = row_lg_counter;\r\n\r\n setHomeElements(homeEle);\r\n }, [apstate]);\r\n\r\n const brandingSrc = 'data:image/jpg;base64,' + apstate.brandingBytes;\r\n\r\n const impressum = getImpressum();\r\n\r\n return (\r\n \r\n
\r\n \r\n \r\n {apstate.extraLinks ? : null}\r\n \r\n
\r\n \r\n
\r\n \r\n {apstate.extraLinks ? (\r\n \r\n
\r\n \r\n
\r\n \r\n ) : null}\r\n
\r\n \r\n {homeElements.showEnrollCodeBox ? (\r\n \r\n \r\n \r\n ) : null}\r\n {homeElements.showLogin ? (\r\n \r\n \r\n \r\n ) : null}\r\n\r\n {homeElements.showQRCodeForApp ? (\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\r\nexport default Home;\r\n","import { useContext, useEffect, useState } from 'react';\r\nimport AppPropsContext from '../../context/appPropsContext';\r\nimport { getBaseURL } from '../../globals/global';\r\nimport { usePersonalData } from '../../hooks/usePersonalData';\r\nimport { getQuestionnaireJourney } from '../../services/RestServices';\r\nimport CheckInWL from '../CheckIn/CheckInWL';\r\nimport Mainscreen from '../Mainscreen/Mainscreen';\r\n\r\nexport interface INeuerAccountWL {\r\n type?: string;\r\n key?: string;\r\n reason?: string;\r\n handleFinishClick?(response: any): void;\r\n}\r\n\r\nconst NeuerAccountPhysLogin = () => {\r\n const { apstate, apdispatch } = useContext(AppPropsContext);\r\n\r\n const [journeyData, setJourneyData] = useState();\r\n const [loaded, setLoaded] = useState(false);\r\n const { resetPersonalDataPhysPat } = usePersonalData();\r\n\r\n const hashParams: INeuerAccountWL = {\r\n type: 'NewAccount',\r\n reason: 'ANMELDKARD',\r\n key: getBaseURL(),\r\n };\r\n\r\n useEffect(() => {\r\n const getQuestJourney = async () => {\r\n const questionnaireJourneyResponse = await getQuestionnaireJourney('ANMELDKARD', '', '');\r\n if (questionnaireJourneyResponse) {\r\n /* override appProperties */\r\n apdispatch({\r\n type: 'SETAPPPROPS',\r\n ...apstate,\r\n allowAccountCreateDirect: false,\r\n allowDirectAppointmentsWithoutLogin: false,\r\n });\r\n setJourneyData(questionnaireJourneyResponse);\r\n }\r\n setLoaded(true);\r\n };\r\n\r\n resetPersonalDataPhysPat();\r\n getQuestJourney();\r\n }, []);\r\n\r\n const innerContent = () => {\r\n if (loaded) {\r\n if (journeyData) {\r\n return (\r\n \r\n );\r\n } else {\r\n return <>;\r\n }\r\n }\r\n };\r\n\r\n const showContent = () => {\r\n return (\r\n \r\n
{innerContent()}
\r\n
\r\n );\r\n };\r\n\r\n return showContent();\r\n};\r\n\r\nexport default NeuerAccountPhysLogin;\r\n","export default __webpack_public_path__ + \"static/media/CardSim.11c82f64.png\";","import { Image } from 'react-bootstrap';\r\nimport { BsSim } from 'react-icons/bs';\r\nimport cardSim from '../../images/CardSim.png';\r\nimport { SpaceBetweenDiv, VerticalCenterFlexDiv } from '../Div/StyledDiv';\r\nimport StyledButton from './StyledButton';\r\n\r\ninterface IReadCardButton {\r\n width?: string;\r\n textSize?: string;\r\n disabled: boolean;\r\n onClick(): void;\r\n}\r\n\r\nconst ReadCardButton = (props: IReadCardButton) => {\r\n return (\r\n {\r\n props.onClick();\r\n }}\r\n >\r\n \r\n \r\n \r\n \r\n \r\n Karte einlesen\r\n \r\n \r\n \r\n );\r\n};\r\n\r\nexport default ReadCardButton;\r\nBsSim;\r\n","import { useContext, useEffect, useRef, useState } from 'react';\r\nimport { Form, Image, Row } from 'react-bootstrap';\r\nimport Col from 'react-bootstrap/esm/Col';\r\nimport Lottie from 'react-lottie';\r\nimport { useLocation, useNavigate, useNavigationType } from 'react-router-dom';\r\nimport { Paths } from '../../Routes';\r\nimport {\r\n CenterDiv,\r\n CenterPositionFixedDiv,\r\n CheckInCenterDiv,\r\n SpaceBetweenDiv,\r\n VerticalCenterFlexDiv,\r\n} from '../../components/Div/StyledDiv';\r\nimport CheckInContext from '../../context/checkInContext';\r\nimport ScanUtils, { BarcodeScanCallback } from '../../hooks/barcodeKeyHandler';\r\nimport loadingSplashWait from '../../lotties/splashscreenWait.json';\r\nimport {\r\n checkAppointment,\r\n getAppProperties,\r\n getOTPFromAppID,\r\n getURLToCall,\r\n interpreteKVParams,\r\n} from '../../services/RestServices';\r\nimport { getQueryParams } from '../../utils/urlUtils';\r\nimport { INeuerAccountWL } from '../NeuerAccount/NeuerAccountWL';\r\n\r\nimport { BiBarcodeReader } from 'react-icons/bi';\r\nimport { ThemeContext } from 'styled-components';\r\nimport ReadCardButton from '../../components/Buttons/ReadCardButton';\r\nimport AlertContext, { AlertOnHide, AlertType } from '../../context/alertContext';\r\nimport useScreenResolution from '../../hooks/useScreenResolution';\r\nimport { showAlertMessage } from '../../utils/alertHandling';\r\n\r\nexport interface ICheckInSplashscreen {\r\n wpName?: string;\r\n reason?: string;\r\n tileUEB?: boolean;\r\n tileOBU?: boolean; //Onlinebuchung\r\n tilePAN?: boolean; //Praxisanmeldung\r\n tileTUE?: boolean; //Terminueberpruefung\r\n}\r\n\r\nexport interface IURLToCallResponse {\r\n state: string;\r\n url: string;\r\n eGK: string;\r\n kvBarcode: string;\r\n birthday: string;\r\n city: string;\r\n country: string;\r\n firstName: string;\r\n gender: string;\r\n street: string;\r\n houseNumber: string;\r\n nameLast: string;\r\n zip: string;\r\n insuranceNr: string;\r\n insuranceName: string;\r\n language;\r\n error?: any;\r\n info?: any;\r\n}\r\n\r\ninterface IVisibleTiles {\r\n tileUeberweisung: boolean;\r\n tileOnlinebuchung: boolean;\r\n tilePraxisanmeldung: boolean;\r\n tileTerminueberpruefung: boolean;\r\n}\r\n\r\ninterface ICheckedAppointmentData {\r\n userId: string;\r\n t0: string;\r\n otp: string;\r\n reason: string;\r\n}\r\n\r\nconst CheckInSplashscreen = () => {\r\n const navigate = useNavigate();\r\n const location = useLocation();\r\n const navtype = useNavigationType();\r\n const hashParams: ICheckInSplashscreen = getQueryParams(location.search);\r\n const { checkindispatch } = useContext(CheckInContext);\r\n const [showLoadingSpinner, setShowLoadingSpinner] = useState(false);\r\n const [brandingBytes, setBrandingBytes] = useState('');\r\n const [visibleTiles, setVisibleTiles] = useState({\r\n tileUeberweisung: false,\r\n tileOnlinebuchung: false,\r\n tilePraxisanmeldung: false,\r\n tileTerminueberpruefung: false,\r\n });\r\n const [checkedAppointmentData, setCheckedAppointmentData] = useState({\r\n userId: '',\r\n t0: '',\r\n otp: '',\r\n reason: '',\r\n });\r\n const screenSize = useScreenResolution();\r\n const themeContext = useContext(ThemeContext);\r\n const { alertdispatch } = useContext(AlertContext);\r\n\r\n const brandingSrc = 'data:image/jpg;base64,' + brandingBytes;\r\n\r\n const scanInputRefUEB = useRef(null);\r\n const scanInputRefOBU = useRef(null);\r\n const scanInputRefTUE = useRef(null);\r\n\r\n useEffect(() => {\r\n const bc = ScanUtils();\r\n if (bc) {\r\n bc.startup(document.getElementById('MainSplashscreen'), '', barcodeScannerCallback);\r\n }\r\n\r\n let ueb = false;\r\n let obu = false;\r\n let pan = false;\r\n let tue = false;\r\n\r\n if (hashParams.tileUEB) {\r\n ueb = hashParams.tileUEB;\r\n }\r\n\r\n if (hashParams.tileOBU) {\r\n obu = hashParams.tileOBU;\r\n }\r\n\r\n if (hashParams.tilePAN) {\r\n pan = hashParams.tilePAN;\r\n }\r\n\r\n if (hashParams.tileTUE) {\r\n tue = hashParams.tileTUE;\r\n }\r\n setVisibleTiles({\r\n tileUeberweisung: ueb,\r\n tileOnlinebuchung: obu,\r\n tilePraxisanmeldung: pan,\r\n tileTerminueberpruefung: tue,\r\n });\r\n getProperties();\r\n\r\n return () => {\r\n if (bc) {\r\n bc.removeListeners(document.getElementById('MainSplashscreen'));\r\n }\r\n };\r\n }, []);\r\n\r\n const handleUrlTextAfterScan = async (scannedText: string) => {\r\n let urlToCall = '';\r\n\r\n let fromOBU = false;\r\n let fromUEB = false;\r\n let fromTUE = false;\r\n if (scannedText) {\r\n if (scanInputRefOBU.current && scanInputRefOBU.current.value.length > 0) {\r\n fromOBU = true;\r\n } else if (scanInputRefUEB.current && scanInputRefUEB.current.value.length > 0) {\r\n fromUEB = true;\r\n } else if (scanInputRefTUE.current && scanInputRefTUE.current.value.length > 0) {\r\n fromTUE = true;\r\n }\r\n\r\n // scannedText = scanInputRef.current?.value;\r\n const urlStart = scannedText.indexOf('https://');\r\n urlToCall = scannedText.substring(urlStart);\r\n\r\n const hashParamsResponse: any = getQueryParams(urlToCall);\r\n\r\n if (fromTUE) {\r\n const response = await checkAppointment(\r\n hashParamsResponse.userId,\r\n hashParamsResponse.otp,\r\n hashParamsResponse.t0,\r\n hashParamsResponse.reason,\r\n );\r\n\r\n if (response && response.state == 'error') {\r\n showAlertMessage({\r\n alertTitle: response.error.alertTitle,\r\n alertTxt: response.error.alertTxt,\r\n alertType: AlertType.error,\r\n onHide: AlertOnHide.reload,\r\n alertdispatch: alertdispatch,\r\n });\r\n } else if (response && response.state == 'info') {\r\n showAlertMessage({\r\n alertTitle: response.info.alertTitle,\r\n alertTxt: response.info.alertTxt,\r\n alertType: AlertType.info,\r\n onHide: AlertOnHide.onlyClose,\r\n alertdispatch: alertdispatch,\r\n });\r\n setVisibleTiles({ ...visibleTiles, tilePraxisanmeldung: true, tileTerminueberpruefung: false });\r\n setCheckedAppointmentData({\r\n ...checkedAppointmentData,\r\n userId: hashParamsResponse.userId,\r\n t0: hashParamsResponse.t0,\r\n otp: hashParamsResponse.otp,\r\n reason: hashParamsResponse.reason,\r\n });\r\n }\r\n\r\n return;\r\n }\r\n\r\n if (hashParamsResponse.appId) {\r\n const newOTPData = await getOTPFromAppID(hashParamsResponse.appId, hashParamsResponse.secret);\r\n checkindispatch({\r\n type: 'SETCHECKINDATA',\r\n urlToCallResponse: {},\r\n key: hashParamsResponse.key,\r\n reason: 'ANY', // TODO: Irgendwann mal muessen wir das Ding los werden\r\n requesttype: newOTPData.type,\r\n wpName: hashParams.wpName,\r\n userId: newOTPData.userId,\r\n t0: newOTPData.t0,\r\n otp: newOTPData.otp,\r\n });\r\n\r\n navigate(\r\n Paths.QUESTIONNAIRE_WL +\r\n '?reason=ANY' +\r\n '&type=' +\r\n newOTPData.type +\r\n '&wpName=' +\r\n hashParams.wpName,\r\n );\r\n setShowLoadingSpinner(false);\r\n } else {\r\n checkindispatch({\r\n type: 'SETCHECKINDATA',\r\n urlToCallResponse: {},\r\n key: hashParamsResponse.key,\r\n reason: hashParamsResponse.reason,\r\n requesttype: hashParamsResponse.type,\r\n wpName: hashParams.wpName,\r\n userId: hashParamsResponse.userId,\r\n t0: hashParamsResponse.t0,\r\n otp: hashParamsResponse.otp,\r\n });\r\n\r\n navigate(\r\n Paths.QUESTIONNAIRE_WL +\r\n '?reason=' +\r\n hashParamsResponse.reason +\r\n '&type=' +\r\n hashParamsResponse.type +\r\n '&wpName=' +\r\n hashParams.wpName,\r\n );\r\n setShowLoadingSpinner(false);\r\n }\r\n }\r\n };\r\n\r\n const barcodeScannerCallback: BarcodeScanCallback = async (txt) => {\r\n console.log(txt);\r\n if (txt.indexOf('https://') >= 0) {\r\n handleUrlTextAfterScan(txt);\r\n } else {\r\n if (txt.startsWith('06\\t')) {\r\n const response = await interpreteKVParams(txt, hashParams.reason);\r\n if (response && response.url) {\r\n // let urlToOpen = response.url;\r\n // /* only for testing */\r\n // urlToOpen =\r\n // 'https://localhost:3000/#/NeuesProfilWL?type=NewAccount&key=https://demo.siegele-software.com&reason=ANMELDKARD&isMobile=false';\r\n // window.open(urlToOpen, '_self');\r\n const hashParamsResponse: INeuerAccountWL = getQueryParams(response.url);\r\n checkindispatch({\r\n type: 'SETCHECKINDATA',\r\n urlToCallResponse: response,\r\n key: hashParamsResponse.key,\r\n reason: hashParamsResponse.reason,\r\n requesttype: hashParamsResponse.type,\r\n wpName: hashParams.wpName,\r\n });\r\n\r\n navigate(\r\n Paths.NEUER_ACCOUNT_WL +\r\n '?reason=' +\r\n hashParamsResponse.reason +\r\n '&type=' +\r\n hashParamsResponse.type,\r\n );\r\n setShowLoadingSpinner(false);\r\n }\r\n }\r\n }\r\n };\r\n\r\n const getProperties = async () => {\r\n const propRes = await getAppProperties();\r\n setBrandingBytes(propRes.brandingBytes);\r\n };\r\n\r\n const lottieSpinnerOptions = {\r\n loop: true,\r\n autoplay: true,\r\n animationData: loadingSplashWait,\r\n rendererSettings: {\r\n preserveAspectRatio: 'xMidYMid slice',\r\n },\r\n };\r\n\r\n const LottieSplashWait = () => {\r\n return ;\r\n };\r\n\r\n const getURLToCallWorkflow = async () => {\r\n if (hashParams.wpName) {\r\n const response: IURLToCallResponse = await getURLToCall(\r\n hashParams.wpName,\r\n hashParams.reason,\r\n checkedAppointmentData.userId,\r\n checkedAppointmentData.t0,\r\n checkedAppointmentData.otp,\r\n );\r\n if (response && response.state === 'active') {\r\n // let urlToOpen = response.url;\r\n // /* only for testing */\r\n // urlToOpen =\r\n // 'https://localhost:3000/#/NeuesProfilWL?type=NewAccount&key=https://demo.siegele-software.com&reason=ANMELDKARD&isMobile=false';\r\n // window.open(urlToOpen, '_self');\r\n const hashParamsResponse: INeuerAccountWL = getQueryParams(response.url);\r\n checkindispatch({\r\n type: 'SETCHECKINDATA',\r\n urlToCallResponse: response,\r\n key: hashParamsResponse.key,\r\n reason: hashParamsResponse.reason,\r\n requesttype: hashParamsResponse.type,\r\n wpName: hashParams.wpName,\r\n });\r\n\r\n navigate(\r\n Paths.NEUER_ACCOUNT_WL +\r\n '?reason=' +\r\n hashParamsResponse.reason +\r\n '&type=' +\r\n hashParamsResponse.type,\r\n );\r\n setShowLoadingSpinner(false);\r\n } else if (response && response.state == 'error') {\r\n showAlertMessage({\r\n alertTitle: response.error.alertTitle,\r\n alertTxt: response.error.alertTxt,\r\n alertType: AlertType.error,\r\n onHide: AlertOnHide.reload,\r\n alertdispatch: alertdispatch,\r\n });\r\n } else if (response && response.state == 'info') {\r\n showAlertMessage({\r\n alertTitle: response.info.alertTitle,\r\n alertTxt: response.info.alertTxt,\r\n alertType: AlertType.info,\r\n onHide: AlertOnHide.reload,\r\n alertdispatch: alertdispatch,\r\n });\r\n }\r\n }\r\n };\r\n\r\n const handleClickWithCard = () => {\r\n setShowLoadingSpinner(true);\r\n getURLToCallWorkflow();\r\n };\r\n\r\n const getArrowImageWidth = () => {\r\n if (screenSize.width > 1600) {\r\n return '50%';\r\n } else if (screenSize.width > 1000) {\r\n return '70%';\r\n } else {\r\n return '80%';\r\n }\r\n };\r\n\r\n const UeberweisungTile = () => {\r\n if (visibleTiles.tileUeberweisung) {\r\n return (\r\n \r\n \r\n

Überweisung

\r\n

Daten übertragen

\r\n 1000 ? '50%' : '70%',\r\n marginLeft: 'auto',\r\n marginRight: 'auto',\r\n backgroundColor: 'white',\r\n borderRadius: '100px',\r\n paddingLeft: '20px',\r\n paddingRight: '20px',\r\n boxShadow: themeContext.button.boxShadow,\r\n }}\r\n >\r\n \r\n \r\n \r\n \r\n
\r\n \r\n 1300 ? '1.5rem' : '1rem',\r\n }}\r\n type=\"text\"\r\n placeholder=\"Code scannen\"\r\n />\r\n \r\n \r\n
{' '}\r\n \r\n
\r\n \r\n );\r\n } else {\r\n return null;\r\n }\r\n };\r\n\r\n const OnlinebuchungTile = () => {\r\n if (visibleTiles.tileOnlinebuchung) {\r\n return (\r\n \r\n \r\n

Onlinebuchung

\r\n

Buchungsdatei einsehen / vervollständigen

\r\n 1000 ? '50%' : '70%',\r\n marginLeft: 'auto',\r\n marginRight: 'auto',\r\n backgroundColor: 'white',\r\n borderRadius: '100px',\r\n paddingLeft: '20px',\r\n paddingRight: '20px',\r\n boxShadow: themeContext.button.boxShadow,\r\n }}\r\n >\r\n \r\n \r\n \r\n \r\n
\r\n \r\n 1300 ? '1.5rem' : '1rem',\r\n }}\r\n type=\"text\"\r\n placeholder=\"Code scannen\"\r\n />\r\n \r\n \r\n
{' '}\r\n \r\n
\r\n \r\n );\r\n } else {\r\n return null;\r\n }\r\n };\r\n\r\n const PraxisanmeldungTile = () => {\r\n if (visibleTiles.tilePraxisanmeldung) {\r\n return (\r\n \r\n \r\n

Praxisanmeldung

\r\n

Gesundheitskarte einlesen

\r\n 1000 ? '50%' : '70%'}\r\n textSize={screenSize.width > 1300 ? '1.5rem' : '1rem'}\r\n disabled={showLoadingSpinner}\r\n onClick={handleClickWithCard}\r\n >\r\n
\r\n \r\n );\r\n } else {\r\n return null;\r\n }\r\n };\r\n\r\n const TerminueberpruefenTile = () => {\r\n if (visibleTiles.tileTerminueberpruefung) {\r\n return (\r\n \r\n \r\n

Termin überprüfen

\r\n

QR Code überprüfen

\r\n 1000 ? '50%' : '70%',\r\n marginLeft: 'auto',\r\n marginRight: 'auto',\r\n backgroundColor: 'white',\r\n borderRadius: '100px',\r\n paddingLeft: '20px',\r\n paddingRight: '20px',\r\n boxShadow: themeContext.button.boxShadow,\r\n }}\r\n >\r\n \r\n \r\n \r\n \r\n
\r\n \r\n 1300 ? '1.5rem' : '1rem',\r\n }}\r\n type=\"text\"\r\n placeholder=\"Code scannen\"\r\n />\r\n \r\n \r\n
{' '}\r\n \r\n
\r\n \r\n );\r\n } else {\r\n return null;\r\n }\r\n };\r\n\r\n const useV2 = true;\r\n\r\n const getContent = () => {\r\n if (useV2) {\r\n return (\r\n <>\r\n \r\n
\r\n \r\n
\r\n \r\n

Willkommen

\r\n

beim Self Check-in

{' '}\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {showLoadingSpinner ? : null}\r\n \r\n );\r\n } else {\r\n return null;\r\n // return (\r\n // <>\r\n // \r\n // \r\n // \r\n // \r\n // \r\n // \r\n // \r\n // \r\n // \r\n // \r\n // {/* {showLoadingSpinner ? : null} */}\r\n // \r\n // \r\n // \r\n // \r\n // \r\n // \r\n // \r\n // \r\n // \r\n // \r\n // \r\n // 1000 ? '50%' : '70%',\r\n // marginLeft: 'auto',\r\n // marginRight: 'auto',\r\n // backgroundColor: 'white',\r\n // borderRadius: '100px',\r\n // paddingLeft: '20px',\r\n // paddingRight: '20px',\r\n // boxShadow: themeContext.button.boxShadow,\r\n // }}\r\n // >\r\n // \r\n // \r\n // \r\n // \r\n //
\r\n // \r\n // 1300 ? '1.5rem' : '1rem',\r\n // }}\r\n // type=\"text\"\r\n // placeholder=\"Code scannen\"\r\n // />\r\n // \r\n // \r\n //
\r\n // \r\n // \r\n // \r\n // 1000 ? '50%' : '70%'}\r\n // textSize={screenSize.width > 1300 ? '1.5rem' : '1rem'}\r\n // disabled={showLoadingSpinner}\r\n // onClick={handleClickWithCard}\r\n // >\r\n // \r\n //
\r\n //
\r\n // \r\n // {showLoadingSpinner ? : null}\r\n // \r\n // );\r\n }\r\n };\r\n\r\n return getContent();\r\n};\r\n\r\nexport default CheckInSplashscreen;\r\n","import { useEffect, useState } from 'react';\r\nimport Lottie from 'react-lottie';\r\nimport { useLocation, useNavigate, useNavigationType } from 'react-router-dom';\r\nimport { Paths } from '../../Routes';\r\nimport { CenterDiv, VerticalCenterDiv } from '../../components/Div/StyledDiv';\r\nimport loadingSplashWait from '../../lotties/splashscreenWait.json';\r\nimport { getTabletURL } from '../../services/RestServices';\r\nimport { getQueryParams } from '../../utils/urlUtils';\r\nimport MultiFragebogen, { IMultiFragebogen } from '../Fragebogen/MultiFragebogen';\r\n\r\nexport interface ICheckInSplashscreenMultifragebogenWaiting {\r\n id?: string;\r\n}\r\n\r\nexport interface IGetTabletURLResponse {\r\n t0: string;\r\n otp: string;\r\n userId: string;\r\n name: string;\r\n key: string;\r\n formNames: any;\r\n webAppURL?: string;\r\n}\r\n\r\nlet intervalTimer;\r\n\r\nconst CheckInSplashscreenMultifragebogenWaiting = () => {\r\n const navigate = useNavigate();\r\n const navtype = useNavigationType();\r\n // const [intervalTimer, setIntervalTimer] = useState();\r\n\r\n const location = useLocation();\r\n const hashParams: ICheckInSplashscreenMultifragebogenWaiting = getQueryParams(location.search);\r\n\r\n const [foundData, setFoundData] = useState(false);\r\n const [multifragebogen, setMultifragebogen] = useState(<>);\r\n\r\n useEffect(() => {\r\n startListening();\r\n\r\n return () => {\r\n // clearInterval(intervalTimer);\r\n clearInterval(intervalTimer);\r\n };\r\n }, []);\r\n\r\n /*\r\n useEffect(() => {\r\n /* avoid browser back button click * /\r\n return () => {\r\n if (navtype === 'POP') {\r\n navigate(Paths.SPLASHSCREEN_MULTIFRAGEBOGEN_WAITING);\r\n }\r\n };\r\n }, [history]);\r\n */\r\n\r\n const lottieSpinnerOptions = {\r\n loop: true,\r\n autoplay: true,\r\n animationData: loadingSplashWait,\r\n rendererSettings: {\r\n preserveAspectRatio: 'xMidYMid slice',\r\n },\r\n };\r\n\r\n const LottieSplashWait = () => {\r\n return ;\r\n };\r\n\r\n const LoadingSpinner = () => {\r\n return (\r\n \r\n \r\n

Fragebogen Terminal

\r\n \r\n

Warten auf Daten...

\r\n
\r\n
\r\n );\r\n };\r\n\r\n const startListening = () => {\r\n // const timer = setInterval(() => listeningWorkflow(), 1000);\r\n // setIntervalTimer(timer);\r\n intervalTimer = setInterval(() => listeningWorkflow(), 1000);\r\n };\r\n\r\n const listeningWorkflow = async () => {\r\n let tabletID = '';\r\n\r\n if (hashParams.id === undefined) {\r\n return;\r\n } else {\r\n tabletID = hashParams.id;\r\n }\r\n\r\n const response: IGetTabletURLResponse = await getTabletURL(tabletID);\r\n if (response && response.webAppURL) {\r\n window.location.replace(response.webAppURL);\r\n return;\r\n }\r\n if (\r\n response &&\r\n response.t0?.length > 0 &&\r\n response.otp?.length > 0 &&\r\n response.userId?.length > 0 &&\r\n response.name?.length > 0 &&\r\n response.key?.length > 0\r\n ) {\r\n const multifragebogenData: IMultiFragebogen = {\r\n type: 'Questionnaire',\r\n name: response.name,\r\n userId: response.userId,\r\n t0: response.t0,\r\n otp: response.otp,\r\n formNames: response.formNames,\r\n };\r\n\r\n const multifragebogen = ;\r\n clearInterval(intervalTimer);\r\n setFoundData(true);\r\n setMultifragebogen(multifragebogen);\r\n }\r\n };\r\n\r\n return foundData ? (\r\n multifragebogen\r\n ) : (\r\n
\r\n \r\n
\r\n );\r\n};\r\n\r\nexport default CheckInSplashscreenMultifragebogenWaiting;\r\n","import { useEffect, useState } from 'react';\r\nimport Lottie from 'react-lottie';\r\nimport { useNavigate, useNavigationType } from 'react-router-dom';\r\nimport { CenterDiv, VerticalCenterDiv } from '../../components/Div/StyledDiv';\r\nimport { IURLToCallResponse } from '../../container/Splashscreen/CheckInSplashscreen';\r\nimport loadingSplashWait from '../../lotties/splashscreenWait.json';\r\nimport { Paths } from '../../Routes';\r\nimport { getURLToCall } from '../../services/RestServices';\r\nconst CheckInSplashscreenWaiting = () => {\r\n const navigate = useNavigate();\r\n const navtype = useNavigationType();\r\n const [intervalTimer, setIntervalTimer] = useState();\r\n\r\n useEffect(() => {\r\n startListening();\r\n\r\n return () => {\r\n clearInterval(intervalTimer);\r\n };\r\n }, []);\r\n\r\n useEffect(() => {\r\n /* avoid browser back button click */\r\n return () => {\r\n if (navtype === 'POP') {\r\n navigate(Paths.SPLASHSCREEN_CHECKIN);\r\n }\r\n };\r\n }, [history]);\r\n\r\n const lottieSpinnerOptions = {\r\n loop: true,\r\n autoplay: true,\r\n animationData: loadingSplashWait,\r\n rendererSettings: {\r\n preserveAspectRatio: 'xMidYMid slice',\r\n },\r\n };\r\n\r\n const LottieSplashWait = () => {\r\n return ;\r\n };\r\n\r\n const LoadingSpinner = () => {\r\n return (\r\n \r\n \r\n

CheckIn Terminal

\r\n \r\n

Bitte stecken Sie Ihre Karte

\r\n
\r\n
\r\n );\r\n };\r\n\r\n const startListening = () => {\r\n const timer = setInterval(() => listeningWorkflow(), 1000);\r\n setIntervalTimer(timer);\r\n };\r\n\r\n const listeningWorkflow = async () => {\r\n // console.log('do something...');\r\n const wpName = 'HSRUW';\r\n const response: IURLToCallResponse = await getURLToCall(wpName);\r\n if (response && response.state === 'active') {\r\n window.open(response.url, '_self');\r\n }\r\n };\r\n\r\n return (\r\n
\r\n \r\n
\r\n );\r\n};\r\n\r\nexport default CheckInSplashscreenWaiting;\r\n","import { useEffect } from 'react';\r\nimport { useNavigate, useNavigationType } from 'react-router-dom';\r\nimport { CenterDiv, VerticalCenterDiv } from '../../components/Div/StyledDiv';\r\nimport { Paths } from '../../Routes';\r\n\r\nconst LoggedOutSplashscreen = () => {\r\n const navigation = useNavigate();\r\n const navtype = useNavigationType();\r\n /* avoid browser back button click */\r\n useEffect(() => {\r\n return () => {\r\n if (navtype === 'POP') {\r\n navigation(Paths.SPLASHSCREEN_LOGGEDOUT);\r\n }\r\n };\r\n }, [history]);\r\n\r\n return (\r\n
\r\n \r\n \r\n

Sie wurden abgemeldet

\r\n
\r\n
\r\n
\r\n );\r\n};\r\n\r\nexport default LoggedOutSplashscreen;\r\n","import { useEffect, useState } from 'react';\r\nimport { useChart } from '../../../hooks/useChart';\r\nimport useScreenResolution from '../../../hooks/useScreenResolution';\r\nimport {\r\n getTableDataFromDiagnosticReportResponse,\r\n getTableHeight,\r\n IGetTableData,\r\n tables,\r\n} from '../../../utils/chartUtils';\r\nimport { CenterDiv } from '../../Div/StyledDiv';\r\nimport LoadingSpinnerWithText from '../../Loading/LoadingSpinnerWithText';\r\nimport TableProvider, { initalTableData } from '../../TableProvider/TableProvider';\r\n\r\ninterface ITableProps {\r\n tableTitle: string;\r\n handleSetTableTitle(title: string): void;\r\n}\r\n\r\nconst VALTable = (props: ITableProps) => {\r\n const { getTableData } = useChart({ chartId: tables.VALTBL.requestId });\r\n const [chartData, setChartData] = useState({\r\n ...initalTableData,\r\n });\r\n const [dataLoaded, setDataLoaded] = useState(false);\r\n const screenSize = useScreenResolution();\r\n\r\n useEffect(() => {\r\n const getData = async () => {\r\n const response = await getTableData();\r\n setDataLoaded(true);\r\n const [tableTitle, tableData] = getTableDataFromDiagnosticReportResponse(response);\r\n setChartData({\r\n tableTitle: tableTitle,\r\n tableData: tableData,\r\n });\r\n props.handleSetTableTitle(tableTitle);\r\n };\r\n\r\n getData();\r\n }, []);\r\n\r\n const showTable = () => {\r\n if (chartData.tableTitle && chartData.tableTitle.length > 0) {\r\n return ;\r\n } else {\r\n return null;\r\n }\r\n };\r\n\r\n // return <>{showTable()};\r\n return (\r\n <>\r\n {!dataLoaded ? (\r\n \r\n \r\n \r\n ) : (\r\n <>{showTable()}\r\n )}\r\n \r\n );\r\n};\r\n\r\nexport default VALTable;\r\n","import { useState } from 'react';\r\nimport Col from 'react-bootstrap/Col';\r\nimport Container from 'react-bootstrap/Container';\r\nimport Row from 'react-bootstrap/Row';\r\nimport { containerHeader } from '../../../components/Header/Header';\r\nimport VALTable from '../../../components/Tables/VAL/VALTable';\r\nimport { tables } from '../../../utils/chartUtils';\r\nimport Mainscreen from '../../Mainscreen/Mainscreen';\r\n\r\nconst TableVAL = () => {\r\n const [tableTitle, setTableTitle] = useState(tables.VALTBL.name);\r\n\r\n const handleSetTableTitle = (title: string) => {\r\n setTableTitle(title);\r\n };\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n {containerHeader(tableTitle)}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n};\r\n\r\nexport default TableVAL;\r\n","import { lazy, Suspense, useContext } from 'react';\r\nimport { Route, Routes, useNavigate } from 'react-router-dom';\r\nimport AppCharts from './components/Charts/AppCharts/AppCharts';\r\nimport IFrame from './components/IFrame/IFrame';\r\nimport IFrameFragebogen from './components/IFrame/IFrameFragebogen';\r\nimport { LoadingSpinner, LoadingSpinnerInMainscreen } from './components/Loading/Loading';\r\nimport Charts from './container/Charts/Charts';\r\nimport ChartsActivity from './container/Charts/ChartsActivity/ChartsActivity';\r\nimport ChartsBlutzucker from './container/Charts/ChartsBlutzucker/ChartsBlutzucker';\r\nimport ChartsFettmasse from './container/Charts/ChartsFettmasse/ChartsFettmasse';\r\nimport ChartsFLI from './container/Charts/ChartsFLI/ChartsFLI';\r\nimport ChartsGewicht from './container/Charts/ChartsGewicht/ChartsGewicht';\r\nimport ChartsSAM from './container/Charts/ChartsSAM/ChartsSAM';\r\nimport Error from './container/Error/Error';\r\nimport ExecuteRule from './container/ExecuteRule/ExecuteRule';\r\nimport Home from './container/Home/Home';\r\nimport NeuerAccountPhysLogin from './container/NeuerAccount/NeuerAccountPhysLogin';\r\nimport CheckInSplashscreen from './container/Splashscreen/CheckInSplashscreen';\r\nimport CheckInSplashscreenMultifragebogenWaiting from './container/Splashscreen/CheckInSplashscreenMultifragebogenWaiting';\r\nimport CheckInSplashscreenWaiting from './container/Splashscreen/CheckInSplashscreenWaiting';\r\nimport LoggedOutSplashscreen from './container/Splashscreen/LoggedOutSplashscreen';\r\nimport TableVAL from './container/Tables/TableVAL/TableVAL';\r\nimport LoginContext from './context/loginContext';\r\n\r\nconst AppInfo = lazy(() => import('./container/AppInfo/AppInfo'));\r\n\r\nconst Dashboard = lazy(() => import('./container/Dashboard/Dashboard'));\r\nconst Termine = lazy(() => import('./container/Termine/Termine'));\r\nconst PatientList = lazy(() => import('./container/PatientList/PatientList'));\r\nconst Dokumente = lazy(() => import('./container/Dokumente/Dokumente'));\r\nconst Login = lazy(() => import('./container/Login/Login'));\r\n\r\nconst Fotos = lazy(() => import('./container/Fotos/Fotos'));\r\nconst Medikation = lazy(() => import('./container/Medikation/Medikation'));\r\nconst Tagesplan = lazy(() => import('./container/Tagesplan/Tagesplan'));\r\nconst Journey = lazy(() => import('./container/Journey/Journey'));\r\nconst Fragebogen = lazy(() => import('./container/Fragebogen/Fragebogen'));\r\nconst FragebogenDetail = lazy(() => import('./container/Fragebogen/FragebogenDetail'));\r\nconst Profil = lazy(() => import('./container/Profil/Profil'));\r\n\r\nconst Videochat = lazy(() => import('./container/Videochat/Videochat'));\r\nconst VideochatWL = lazy(() => import('./container/Videochat/VideochatWL'));\r\nconst Terminierung = lazy(() => import('./container/Terminierung/Terminierung'));\r\nconst TerminierungAlternateDate = lazy(() => import('./container/Terminierung/TerminierungAlternateDate'));\r\nconst Terminkategorie = lazy(() => import('./container/Terminkategorie/Terminkategorie'));\r\nconst Termincode = lazy(() => import('./container/Termincode/Termincode'));\r\nconst Warteraum = lazy(() => import('./container/Warteraum/Warteraum'));\r\nconst PersonalInformation = lazy(() => import('./components/User/PersonalInformation'));\r\nconst ProfileSafety = lazy(() => import('./components/User/ProfileSafety'));\r\nconst ProfileLegalTerms = lazy(() => import('./components/User/LegalTerms'));\r\nconst TwoFactorAuthentication = lazy(() => import('./components/TwoFactorAuthentication/TwoFactorAuthentication'));\r\nconst NeuerAccount = lazy(() => import('./container/NeuerAccount/NeuerAccount'));\r\nconst NeuerAccountWL = lazy(() => import('./container/NeuerAccount/NeuerAccountWL'));\r\nconst QRCode4App = lazy(() => import('./components/User/HandyAppQRCode'));\r\nconst ResetPassword = lazy(() => import('./components/User/ResetPassword'));\r\nconst Mails = lazy(() => import('./container/Mails/Mails'));\r\nconst QuestionnaireWL = lazy(() => import('./container/Fragebogen/QuestionnaireWL'));\r\nconst TerminierungWL = lazy(() => import('./container/Terminierung/TerminierungWL'));\r\nconst Todo = lazy(() => import('./container/Todo/Todo'));\r\nconst CheckInWL = lazy(() => import('./container/CheckIn/CheckInWL'));\r\n\r\ninterface IPaths {\r\n readonly HOME: string;\r\n readonly LOGIN: string;\r\n readonly APPINFO: string;\r\n readonly DASHBOARD: string;\r\n readonly TERMINE: string;\r\n readonly PATLIST: string;\r\n readonly DOKUMENTE: string;\r\n readonly FOTOS: string;\r\n readonly MEDIKATION: string;\r\n readonly TAGESPLAN: string;\r\n readonly JOURNEY: string;\r\n readonly FRAGEBOGEN: string;\r\n readonly FRAGEBOGEN_DETAIL: string;\r\n readonly QUESTIONNAIRE_WL: string;\r\n readonly IFRAME: string;\r\n readonly FRAGEBOGEN_IFRAME: string;\r\n readonly VIDEOCHAT: string;\r\n readonly VIDEOCHAT_WL: string;\r\n readonly TERMINIERUNG: string;\r\n readonly TERMINIERUNG_ALTERNATE_DATE: string;\r\n readonly TERMINIERUNG_WL: string;\r\n readonly PROFIL: string;\r\n readonly PROFIL_INFO: string;\r\n readonly PROFIL_SICHERHEIT: string;\r\n readonly PROFIL_LEGALTERMS: string;\r\n readonly ZWEI_FAKTOR_AUTHENTIFIZIERUNG: string;\r\n readonly TERMINKATEGORIE: string;\r\n readonly TERMINCODE: string;\r\n readonly TERMIN_DETAIL: string;\r\n readonly WARTERAUM: string;\r\n readonly NEUER_ACCOUNT: string;\r\n readonly NEUER_ACCOUNT_WL: string;\r\n readonly NEUER_ACCOUNT_PHYSLOGIN: string;\r\n readonly AENDERN_ACCOUNT: string;\r\n readonly QRCODE4APP: string;\r\n readonly RESET_PASSWORD: string;\r\n readonly MAILS: string;\r\n readonly CHARTS: string;\r\n readonly CHARTS_GEWICHT: string;\r\n readonly CHARTS_FETTMASSE: string;\r\n readonly CHARTS_BLUTZUCKER: string;\r\n readonly CHARTS_FLI: string;\r\n readonly CHARTS_SAM: string;\r\n readonly CHARTS_ACTIVITY: string;\r\n readonly APP_CHARTS: string;\r\n readonly TABLE_VAL: string;\r\n readonly EXECUTE_RULE: string;\r\n readonly TODO: string;\r\n readonly CHECKIN_WL: string;\r\n readonly SPLASHSCREEN_CHECKIN: string;\r\n readonly SPLASHSCREEN_CHECKIN_WAITING: string;\r\n readonly SPLASHSCREEN_MULTIFRAGEBOGEN_WAITING: string;\r\n readonly SPLASHSCREEN_LOGGEDOUT: string;\r\n}\r\n\r\nexport const Paths: IPaths = {\r\n HOME: '/',\r\n LOGIN: '/Login',\r\n APPINFO: '/AppInfo',\r\n DASHBOARD: '/Dashboard',\r\n TERMINE: '/Termine',\r\n PATLIST: '/PatList',\r\n DOKUMENTE: '/Dokumente',\r\n FOTOS: '/Fotos',\r\n MEDIKATION: '/Medikation',\r\n TAGESPLAN: '/Tagesplan',\r\n JOURNEY: '/Journey',\r\n FRAGEBOGEN: '/Fragebogen',\r\n FRAGEBOGEN_DETAIL: '/FragebogenDetail',\r\n QUESTIONNAIRE_WL: '/QuestionnaireWL',\r\n IFRAME: '/IFrame',\r\n FRAGEBOGEN_IFRAME: '/FragebogenInfo',\r\n VIDEOCHAT: '/Videochat',\r\n VIDEOCHAT_WL: '/VideochatWL',\r\n TERMINIERUNG: '/Terminierung',\r\n TERMINIERUNG_ALTERNATE_DATE: '/TerminierungAlternateDate',\r\n TERMINIERUNG_WL: '/TerminierungWL',\r\n PROFIL: '/Profil',\r\n PROFIL_INFO: '/ProfilInfo',\r\n PROFIL_SICHERHEIT: '/ProfilSicherheit',\r\n PROFIL_LEGALTERMS: '/ProfilBestimmungen',\r\n ZWEI_FAKTOR_AUTHENTIFIZIERUNG: '/2FA',\r\n TERMINKATEGORIE: '/Terminkategorie',\r\n TERMINCODE: '/Termincode',\r\n TERMIN_DETAIL: 'TerminDetails',\r\n WARTERAUM: '/Warteraum',\r\n NEUER_ACCOUNT: '/NeuesProfil',\r\n NEUER_ACCOUNT_WL: '/NeuesProfilWL',\r\n NEUER_ACCOUNT_PHYSLOGIN: '/NeuesProfilPhysLogin',\r\n AENDERN_ACCOUNT: '/ProfilAendern',\r\n QRCODE4APP: '/AppCode',\r\n RESET_PASSWORD: '/PasswortZuruecksetzen',\r\n MAILS: '/Mails',\r\n CHARTS: '/Charts',\r\n CHARTS_GEWICHT: '/ChartsGewicht',\r\n CHARTS_FETTMASSE: '/ChartsFettmasse',\r\n CHARTS_BLUTZUCKER: '/ChartsBlutzucker',\r\n CHARTS_FLI: '/ChartsFLI',\r\n CHARTS_SAM: '/ChartsSAM',\r\n CHARTS_ACTIVITY: '/ChartsActivity',\r\n APP_CHARTS: '/AppCharts',\r\n TABLE_VAL: '/TableVal',\r\n EXECUTE_RULE: '/ExecuteRule',\r\n TODO: '/Todo',\r\n CHECKIN_WL: '/CheckInWL',\r\n SPLASHSCREEN_CHECKIN: '/CheckInSplashscreen',\r\n SPLASHSCREEN_CHECKIN_WAITING: '/CheckInSplashscreenWaiting',\r\n SPLASHSCREEN_MULTIFRAGEBOGEN_WAITING: '/MultifragebogenSplashscreenWaiting',\r\n SPLASHSCREEN_LOGGEDOUT: '/LoggedOutSplashscreen',\r\n};\r\n\r\nconst PublicRoute = ({ children }) => {\r\n return }>{children};\r\n};\r\n\r\nconst PrivateRoute = ({ children }) => {\r\n const { state } = useContext(LoginContext);\r\n const navigate = useNavigate();\r\n // const { handleLogout } = useHandleLogout();\r\n\r\n if (state.sessionId !== '' && state.userId !== '') {\r\n return }>{children};\r\n } else {\r\n // history.push('/');\r\n navigate(Paths.HOME);\r\n return (\r\n }>\r\n \r\n \r\n );\r\n }\r\n};\r\n\r\nfunction AppRoutes() {\r\n return (\r\n \r\n \r\n \r\n \r\n }\r\n >\r\n \r\n \r\n \r\n }\r\n >\r\n \r\n \r\n \r\n }\r\n >\r\n \r\n \r\n \r\n }\r\n >\r\n \r\n \r\n \r\n }\r\n >\r\n \r\n \r\n \r\n }\r\n >\r\n \r\n \r\n \r\n }\r\n >\r\n \r\n \r\n \r\n }\r\n >\r\n \r\n \r\n \r\n }\r\n >\r\n \r\n \r\n \r\n }\r\n >\r\n \r\n \r\n \r\n }\r\n >\r\n \r\n \r\n \r\n }\r\n >\r\n \r\n \r\n \r\n }\r\n >\r\n \r\n \r\n \r\n }\r\n >\r\n \r\n \r\n \r\n }\r\n >\r\n \r\n \r\n \r\n }\r\n >\r\n \r\n \r\n \r\n }\r\n >\r\n \r\n \r\n \r\n }\r\n >\r\n \r\n \r\n \r\n }\r\n >\r\n \r\n \r\n \r\n }\r\n >\r\n \r\n \r\n \r\n }\r\n >\r\n\r\n \r\n \r\n \r\n }\r\n >\r\n \r\n \r\n \r\n }\r\n >\r\n \r\n \r\n \r\n }\r\n >\r\n \r\n \r\n \r\n }\r\n >\r\n \r\n \r\n \r\n }\r\n >\r\n \r\n \r\n \r\n }\r\n >\r\n \r\n \r\n \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 const IFrameInternal = (props: IIFrame) => {\r\n return (\r\n \r\n \r\n \r\n );\r\n};\r\nexport default IFrame;\r\n","export const setRuleProperties = (hashParams: any, executeruledispatch: any) => {\r\n if (hashParams && hashParams.type === 'ExecuteRule' && hashParams.ruleName) {\r\n executeruledispatch({\r\n type: 'SETRULEPROPERTIES',\r\n ruleName: hashParams.ruleName ? hashParams.ruleName : '',\r\n ruleParam: hashParams.ruleParam ? hashParams.ruleParam : '',\r\n persInfo: hashParams.persInfo ? hashParams.persInfo : '',\r\n });\r\n }\r\n};\r\n","export const findLongestWord = (str: string) => {\r\n const strSplit = str.split(' ');\r\n let longestWord = 0;\r\n for (let i = 0; i < strSplit.length; i++) {\r\n if (strSplit[i].length > longestWord) {\r\n longestWord = strSplit[i].length;\r\n }\r\n }\r\n return longestWord;\r\n};\r\n\r\nexport const simulateClick = (element: HTMLElement | null) => {\r\n if (element) {\r\n const mouseClickEvents = ['mousedown', 'click', 'mouseup'];\r\n mouseClickEvents.forEach((mouseEventType) =>\r\n element.dispatchEvent(\r\n new MouseEvent(mouseEventType, {\r\n view: window,\r\n bubbles: true,\r\n cancelable: true,\r\n buttons: 1,\r\n }),\r\n ),\r\n );\r\n element.focus();\r\n }\r\n};\r\n","import * as React from 'react';\r\nimport { useEffect, useRef, useState } from 'react';\r\nimport { Col, Container, Row } from 'react-bootstrap';\r\nimport SigPad from 'react-signature-canvas';\r\nimport { ISigData } from '../../context/sigpadContext';\r\nimport StyledButton from '../Buttons/StyledButton';\r\n\r\n/* ### Usage for for Mouse Signature without device ###\r\n\r\n use either onSave OR onWriteEnd\r\n\r\n const onSignaturePadSave = (sigData) => {\r\n setSignatureData(sigData);\r\n };\r\n\r\n const onSignaturePadWriteEnd = (sigData) => {\r\n setSignatureData(sigData);\r\n };\r\n\r\n \r\n \r\n */\r\n\r\ninterface ISignaturePad {\r\n onSave?: (sigData: ISigData) => void; // callback when click on buttonSave\r\n onWriteEnd?: (sigData: ISigData) => void; // callback when end of write\r\n onCancel?: () => void; // callback when click on buttonCancel\r\n onSign?: () => void; // callback when click on buttonSign\r\n onClickClear?: () => void; // clear signature pad done\r\n clickClear?: boolean; // clear signature pad\r\n clickSign?: boolean; // sign signature pad\r\n embedded?: boolean; // embedded mode\r\n width?: number; // override width\r\n height?: number; // override height\r\n offsetTop?: number; // Abstand von oben\r\n offsetLeft?: number; // Abstand von links\r\n margin?: string;\r\n}\r\n\r\nconst SignaturePad = (props: ISignaturePad) => {\r\n const signatureRef = useRef(null);\r\n const [divWidth, setDivWidth] = useState(700);\r\n const [divHeight, setDivHeight] = useState(300);\r\n const [offsetTop, setOffsetTop] = useState(0);\r\n const [offsetLeft, setOffsetLeft] = useState(0);\r\n const [signaturePadWidth, setSignaturePadWidth] = useState(690);\r\n const [signaturePadHeight, setSignaturePadHeight] = useState(240);\r\n\r\n useEffect(() => {\r\n /* clickClear clicked */\r\n if (props.clickClear) {\r\n onSignaturePadClear();\r\n }\r\n\r\n /* clickSign clicked */\r\n if (props.clickSign) {\r\n if (props.onSign) {\r\n props.onSign();\r\n }\r\n }\r\n\r\n /* explicity set width and height override all other sizes */\r\n if (props.width && props.width > 0) {\r\n setDivWidth(props.width);\r\n setSignaturePadWidth(props.width - 10);\r\n }\r\n if (props.height && props.height > 0) {\r\n setDivHeight(props.height);\r\n setSignaturePadHeight(props.height - 60);\r\n }\r\n if (props.offsetTop && props.offsetTop > 0) {\r\n setOffsetTop(props.offsetTop);\r\n }\r\n if (props.offsetLeft && props.offsetLeft > 0) {\r\n setOffsetLeft(props.offsetLeft);\r\n }\r\n }, [props.width, props.height, props.offsetTop, props.offsetLeft, props.clickClear, props.clickSign]);\r\n\r\n const onSignaturePadClear = (e?: React.MouseEvent) => {\r\n if (e) {\r\n e.currentTarget.blur();\r\n }\r\n if (signatureRef) {\r\n signatureRef?.current.clear();\r\n }\r\n\r\n if (props.onClickClear) {\r\n props.onClickClear();\r\n }\r\n };\r\n\r\n const onSignaturePadSave = (e: React.MouseEvent) => {\r\n if (e) {\r\n e.currentTarget.blur();\r\n }\r\n if (signatureRef && props.onSave) {\r\n // const sigDataPicture = signatureRef.current.getTrimmedCanvas().toDataURL('image/png');\r\n const sigDataPicture = signatureRef.current.getCanvas().toDataURL('image/png');\r\n\r\n // const sigDataPicture = signatureRef.current.toDataURL('image/svg+xml');\r\n const sigData: ISigData = {\r\n certId: '',\r\n pictureData: sigDataPicture,\r\n rsaSignature: '',\r\n signData: '',\r\n signingCert: '',\r\n };\r\n\r\n props.onSave(sigData);\r\n }\r\n };\r\n\r\n const onSignaturePadWriteEnd = () => {\r\n if (signatureRef && props.onWriteEnd) {\r\n // const sigDataPicture = signatureRef.current.getTrimmedCanvas().toDataURL('image/png');\r\n const sigDataPicture = signatureRef.current.getCanvas().toDataURL('image/png');\r\n\r\n // const sigDataPicture = signatureRef.current.toDataURL('image/svg+xml');\r\n const sigData: ISigData = {\r\n certId: '',\r\n pictureData: sigDataPicture,\r\n rsaSignature: '',\r\n signData: '',\r\n signingCert: '',\r\n };\r\n\r\n props.onWriteEnd(sigData);\r\n }\r\n };\r\n\r\n return props.embedded ? (\r\n \r\n \r\n \r\n ) : (\r\n \r\n
\r\n \r\n
\r\n \r\n \r\n \r\n onSignaturePadClear(e)}>\r\n Löschen\r\n \r\n \r\n {props.onSave !== undefined && (\r\n \r\n onSignaturePadSave(e)}>Speichern\r\n \r\n )}\r\n {props.onCancel !== undefined && (\r\n \r\n \r\n Abbrechen\r\n \r\n \r\n )}\r\n {props.onSign !== undefined && (\r\n \r\n Jetzt signieren\r\n \r\n )}\r\n \r\n \r\n \r\n );\r\n};\r\n\r\nexport default SignaturePad;\r\n","type IPhyscianSelectionDescriptionList = {\r\n description?: string[];\r\n firstFreeDateElement?: JSX.Element;\r\n};\r\n\r\nconst PhysicianSelectionDescriptionList = (props: IPhyscianSelectionDescriptionList) => {\r\n const descriptionList = () => {\r\n if (props.description && props.description.length > 0) {\r\n const allDescrItems: any[] = [];\r\n props.description?.forEach((e) => {\r\n // allDescrItems.push(
  • {e}
  • );\r\n allDescrItems.push(

    );\r\n });\r\n\r\n if (props.firstFreeDateElement) {\r\n allDescrItems.push(props.firstFreeDateElement);\r\n }\r\n\r\n return allDescrItems;\r\n }\r\n\r\n return null;\r\n };\r\n\r\n return <>{descriptionList()};\r\n};\r\n\r\nexport default PhysicianSelectionDescriptionList;\r\n","import { Image } from 'react-bootstrap';\r\nimport { AiOutlineUser } from 'react-icons/ai';\r\n\r\ntype IPhyscianSelectionPhoto = {\r\n showPicture?: boolean;\r\n pict?: string;\r\n};\r\n\r\nconst PhysicianSelectionPhoto = (props: IPhyscianSelectionPhoto) => {\r\n const physicianPhoto = () => {\r\n if (props.showPicture && props.pict) {\r\n return ;\r\n } else if (props.showPicture && !props.pict) {\r\n return ;\r\n } else {\r\n return null;\r\n }\r\n };\r\n\r\n return physicianPhoto();\r\n};\r\n\r\nexport default PhysicianSelectionPhoto;\r\n","import { useCallback, useContext, useRef, useState } from 'react';\r\nimport { ButtonToolbar, Form } from 'react-bootstrap';\r\nimport Col from 'react-bootstrap/esm/Col';\r\nimport Container from 'react-bootstrap/esm/Container';\r\nimport Modal from 'react-bootstrap/esm/Modal';\r\nimport Nav from 'react-bootstrap/esm/Nav';\r\nimport Row from 'react-bootstrap/esm/Row';\r\nimport Image from 'react-bootstrap/Image';\r\nimport { AiOutlineMinusCircle } from 'react-icons/ai';\r\nimport { MdAddAPhoto, MdPhotoLibrary } from 'react-icons/md';\r\nimport Webcam from 'react-webcam';\r\nimport { ThemeContext } from 'styled-components';\r\nimport CheckInContext from '../../../context/checkInContext';\r\nimport useScreenResolution from '../../../hooks/useScreenResolution';\r\nimport { loadPerspectiveData } from '../../../services/RestServices';\r\nimport { fullSrc, IPhoto } from '../../../utils/photoUtils';\r\nimport StyledButton from '../../Buttons/StyledButton';\r\nimport { StyledToggleButton, ToggleButtonGroupFlex } from '../../Buttons/ToggleButtonGroupCst';\r\nimport StyledCol from '../../Cols/StyledCol';\r\nimport MyTooltip from '../../Tooltip/MyTooltip';\r\nimport { StyledModal } from '../StyledModal/StyledModal';\r\nimport { getWebcamDim } from './WebcamModal';\r\n\r\ninterface IWebcamPreviewModal {\r\n show: boolean;\r\n onCancel: () => void;\r\n photos: IPhoto[];\r\n onSave: () => void;\r\n onRemove: (index: number) => void;\r\n addPhoto: (photo: string) => void;\r\n}\r\n\r\nconst myVars = {\r\n fmt: 'A4',\r\n};\r\n\r\nconst WebcamPreviewModal = (props: IWebcamPreviewModal) => {\r\n const themeContext = useContext(ThemeContext);\r\n const webcamRef = useRef(null);\r\n const screenSize = useScreenResolution();\r\n const webcamDim = getWebcamDim(screenSize.width);\r\n const [bodyHeight, setBodyHeight] = useState(0);\r\n const { checkinstate } = useContext(CheckInContext);\r\n // const [formatButton, setFormatButton] = useState('A4');\r\n\r\n const ref = useRef(null);\r\n\r\n const onModalEnter = () => {\r\n if (ref) {\r\n const height = ref?.current?.clientHeight;\r\n if (height) {\r\n setBodyHeight(height - 30);\r\n }\r\n }\r\n };\r\n\r\n function photoPreview(photos: IPhoto[]) {\r\n if (photos.length > 0) {\r\n const previews = photos.map((item: IPhoto, index: number) => (\r\n \r\n \r\n
    \r\n \r\n
    \r\n \r\n \r\n {\r\n props.onRemove(index);\r\n }}\r\n >\r\n }\r\n >\r\n \r\n \r\n
    \r\n ));\r\n return previews;\r\n }\r\n }\r\n\r\n const getImage = async function (video: any): Promise {\r\n // Temporary create canvas element\r\n\r\n const fmtPerspective = await loadPerspectiveData();\r\n const resKOORDS = fmtPerspective[myVars.fmt];\r\n\r\n const canvas = document.createElement('canvas');\r\n canvas.width = 2480;\r\n canvas.height = 3507;\r\n const ctx = canvas.getContext('2d');\r\n // Write video stream to canvas instance\r\n ctx?.drawImage(video, 0, 0, canvas.width, canvas.height);\r\n //const dataURI = canvas.toDataURL('image/jpeg'); // can also use 'image/png'\r\n // Access canvas data\r\n const normalSrc = canvas.toDataURL('image/jpeg', 1);\r\n if (myVars.fmt == 'A5') {\r\n console.log('want A5 transformation.');\r\n } else if (myVars.fmt == 'A6') {\r\n console.log('want A6 transformation.');\r\n } else {\r\n console.log('want A4 transformation.');\r\n }\r\n let testImg = document.getElementById('__HIDDENIMG');\r\n if (testImg) {\r\n document.body.removeChild(testImg);\r\n }\r\n const src_image = document.createElement('img');\r\n src_image.src = normalSrc;\r\n src_image.id = '__HIDDENIMG';\r\n src_image.width = 2480;\r\n src_image.height = 3507;\r\n document.body.appendChild(src_image);\r\n return new Promise(function (done, errfnc) {\r\n src_image.addEventListener('load', function () {\r\n const w_ratio = src_image.naturalWidth / canvas.width;\r\n const h_ratio = src_image.naturalHeight / canvas.height;\r\n // try to create a WebGL canvas (will fail if WebGL isn't supported)\r\n // eslint-disable-next-line no-var\r\n var fx_canvas;\r\n try {\r\n fx_canvas = fx.canvas();\r\n console.log('Fx canvas loaded');\r\n } catch (e) {\r\n alert(e);\r\n }\r\n const texture = fx_canvas.texture(src_image);\r\n /*\r\n const destTransform = [\r\n 0,\r\n 0,\r\n src_image.width,\r\n 0,\r\n 0,\r\n src_image.height,\r\n src_image.width,\r\n src_image.height,\r\n ];\r\n */\r\n const destTransform = [0, 0, 2480, 0, 0, 3507, 2480, 3507];\r\n const sourceTransform = [\r\n resKOORDS.c1.x * w_ratio,\r\n resKOORDS.c1.y * h_ratio,\r\n resKOORDS.c2.x * w_ratio,\r\n resKOORDS.c2.y * h_ratio,\r\n resKOORDS.c3.x * w_ratio,\r\n resKOORDS.c3.y * h_ratio,\r\n resKOORDS.c4.x * w_ratio,\r\n resKOORDS.c4.y * h_ratio,\r\n ];\r\n\r\n fx_canvas.draw(texture);\r\n fx_canvas.perspective(sourceTransform, destTransform);\r\n fx_canvas.update();\r\n\r\n /*\r\n canvas\r\n .getContext('2d')\r\n ?.drawImage(fx_canvas, 0, 0, src_image.width, src_image.height, 0, 0, canvas.width, canvas.height);\r\n */\r\n const destCanvas = document.createElement('canvas');\r\n destCanvas.width = 2480;\r\n destCanvas.height = 3507;\r\n destCanvas.getContext('2d')?.drawImage(fx_canvas, 0, 0);\r\n\r\n const resSrc = destCanvas.toDataURL('image/jpeg', 0.5);\r\n testImg = document.getElementById('__HIDDENIMG');\r\n if (testImg) {\r\n document.body.removeChild(testImg);\r\n }\r\n done(resSrc);\r\n });\r\n });\r\n /*\r\n canvas.remove();\r\n\r\n const fx_canvas = document.createElement('canvas');\r\n const texture = fx_canvas.texture(src_image);\r\n\r\n // set mapping from src to dst coordinates in same canvas\r\n \r\n // src = [0,0, 568,386, 2190,1920, 2306,92]; // the 4 corners of the warped paper in the picture\r\n // | | | | remember mapping of points\r\n dest = [0,0, src_image.width,0, 0,src_image.height, src_image.width,src_image.height]; // the 90deg rotated DinA4 mold\r\n // [top left, top right, bottom left, bottom right]\r\n // apply the perspective transform filter initially\r\n fx_canvas.draw(texture);\r\n fx_canvas.perspective(src, dest);\r\n fx_canvas.update();\r\n\r\n // Add canvas to dom structure in place of dummy canvas\r\n if(shadow.getElementById(\"persp_canvas\")){\r\n console.log(\"temp canvas present\");\r\n fx_canvas.setAttribute(\"id\", \"transform_canvas\");\r\n shadow.getElementById(\"persp_canvas\").replaceWith(fx_canvas);\r\n } \r\n */\r\n // return resSrc;\r\n };\r\n const isTransformation = function (): boolean {\r\n if (checkinstate.wpName?.length > 0) {\r\n return true;\r\n }\r\n return false;\r\n };\r\n const capture = useCallback(() => {\r\n if (isTransformation()) {\r\n getImage(webcamRef.current?.video).then((img: string) => {\r\n props.addPhoto(img);\r\n });\r\n } else {\r\n if (webcamRef.current) {\r\n const image = webcamRef.current?.getScreenshot();\r\n if (image) {\r\n props.addPhoto(image);\r\n }\r\n }\r\n }\r\n }, [webcamRef]);\r\n\r\n interface IFormatChoice {\r\n handleFormatButtonChange(format: string): void;\r\n }\r\n const FormatChoice = (props: IFormatChoice) => {\r\n const [fmt, setFmt] = useState(myVars.fmt);\r\n const handleChange = (sfmt: string) => {\r\n setFmt(sfmt);\r\n props.handleFormatButtonChange(sfmt);\r\n };\r\n return (\r\n
    \r\n \r\n \r\n \r\n {\r\n handleChange('A4');\r\n }}\r\n >\r\n A4\r\n \r\n {\r\n handleChange('A5');\r\n }}\r\n >\r\n A5\r\n \r\n {\r\n handleChange('A6');\r\n }}\r\n >\r\n A6\r\n \r\n \r\n \r\n \r\n
    \r\n );\r\n };\r\n\r\n return (\r\n <>\r\n \r\n \r\n \r\n Neue Fotodokumentation\r\n \r\n \r\n \r\n \r\n \r\n \r\n {photoPreview(props.photos)}\r\n \r\n \r\n \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n {isTransformation() && (\r\n {\r\n console.log('fmtChg: ' + fmt);\r\n myVars.fmt = fmt;\r\n }}\r\n />\r\n )}\r\n \r\n Foto aufnehmen\r\n \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n \r\n \r\n \r\n \r\n \r\n Abbrechen\r\n \r\n \r\n \r\n \r\n Speichern\r\n \r\n \r\n \r\n \r\n \r\n
    \r\n \r\n );\r\n};\r\n\r\nexport default WebcamPreviewModal;\r\n","import { useContext } from 'react';\r\nimport Nav from 'react-bootstrap/Nav';\r\nimport Navbar from 'react-bootstrap/Navbar';\r\nimport { AiOutlineUser } from 'react-icons/ai';\r\nimport { RiLogoutBoxRLine } from 'react-icons/ri';\r\nimport { ThemeContext } from 'styled-components';\r\nimport { IconDiv } from '../../components/Div/StyledDiv';\r\nimport Avatar from '../../components/SidebarItems/Avatar';\r\nimport MyTooltip from '../../components/Tooltip/MyTooltip';\r\n\r\nexport interface INavbarCheckInWL {\r\n onLogout?(): void;\r\n showAvatarIcon: boolean;\r\n onProfileClick?(): void;\r\n showLoginIcon: boolean;\r\n onLoginClick?(): void;\r\n wpName?: string;\r\n}\r\n\r\nconst NavbarCheckInWL = (props: INavbarCheckInWL) => {\r\n const themeContext = useContext(ThemeContext);\r\n\r\n return (\r\n \r\n \r\n {props.wpName && props.wpName.length > 0 && (\r\n
    \r\n

    \r\n Arbeitsplatz: {props.wpName}\r\n

    \r\n
    \r\n )}\r\n \r\n \r\n \r\n
    \r\n );\r\n};\r\n\r\nexport default NavbarCheckInWL;\r\n","import { Step, Stepper } from '@material-ui/core';\r\nimport StepLabel from '@material-ui/core/StepLabel';\r\nimport { Theme, createStyles, makeStyles } from '@material-ui/core/styles';\r\nimport { useContext, useEffect, useState } from 'react';\r\nimport Alert from 'react-bootstrap/Alert';\r\nimport Container from 'react-bootstrap/Container';\r\nimport Nav from 'react-bootstrap/Nav';\r\nimport Row from 'react-bootstrap/Row';\r\nimport Lottie from 'react-lottie';\r\nimport { Link, useNavigate } from 'react-router-dom';\r\nimport { Paths } from '../../Routes';\r\nimport AppointmentPersonalData from '../../components/AppointmentPersonalData/AppointmentPersonalData';\r\nimport StyledButton from '../../components/Buttons/StyledButton';\r\nimport StyledCol from '../../components/Cols/StyledCol';\r\nimport { LeftDiv } from '../../components/Div/StyledDiv';\r\nimport PersonalDataSummary from '../../container/PersonalDataSummary/PersonalDataSummary';\r\nimport AlertContext, { AlertOnHide, AlertType } from '../../context/alertContext';\r\nimport AppPropsContext from '../../context/appPropsContext';\r\nimport LoginContext from '../../context/loginContext';\r\nimport TerminierungContext from '../../context/terminierungContext';\r\nimport { useAppProperties } from '../../hooks/useAppProperties';\r\nimport { usePersonalData } from '../../hooks/usePersonalData';\r\nimport useScreenResolution from '../../hooks/useScreenResolution';\r\nimport { IRegisterData, registerUserDirect } from '../../services/RestServices';\r\nimport {\r\n changePatientResource,\r\n getPatientResource,\r\n modifyPatientResource,\r\n} from '../../services/fhir/FHIRPatientResource';\r\nimport { showAlertMessage } from '../../utils/alertHandling';\r\nimport { lottieCheck } from '../../utils/lottieUtils';\r\nimport { isMobile, isTablet } from '../../utils/screenResolution';\r\nimport FullScreenImpressum from '../Mainscreen/FullScreenImpressum';\r\nimport { INeuerAccountWL } from './NeuerAccountWL';\r\n\r\nconst useStyles = makeStyles((theme: Theme) =>\r\n createStyles({\r\n instructions: {\r\n marginTop: theme.spacing(1),\r\n marginBottom: theme.spacing(1),\r\n },\r\n iconContainer: {\r\n transform: 'scale(1.5)',\r\n },\r\n }),\r\n);\r\n\r\nfunction getSteps() {\r\n return ['Formular ausfüllen', 'Daten überprüfen'];\r\n}\r\n\r\nfunction getDivWidth(screenWidth: number) {\r\n if (isTablet(screenWidth)) {\r\n return '70%';\r\n } else if (isMobile(screenWidth)) {\r\n return '100%';\r\n } else {\r\n return '60%';\r\n }\r\n}\r\n\r\nconst NeuerAccount = (props: INeuerAccountWL) => {\r\n const navigate = useNavigate();\r\n const { state } = useContext(LoginContext);\r\n const { alertdispatch } = useContext(AlertContext);\r\n const { tmstate, tmdispatch } = useContext(TerminierungContext);\r\n const { apstate } = useContext(AppPropsContext);\r\n const [activeStep, setActiveStep] = useState(0);\r\n const [skipped, setSkipped] = useState(new Set());\r\n const steps = getSteps();\r\n const [success, setSuccess] = useState(false);\r\n const [response, setResponse] = useState();\r\n const [reason, setReason] = useState('');\r\n\r\n const screenSize = useScreenResolution();\r\n const divWidth = getDivWidth(screenSize.width);\r\n\r\n const { getAndSetPersonalData } = usePersonalData();\r\n const { getAndSetAppProperties, getImpressum } = useAppProperties();\r\n\r\n const classes = useStyles();\r\n\r\n useEffect(() => {\r\n if (props.type === 'NewAccount') {\r\n if (props.reason) {\r\n setReason(props.reason);\r\n }\r\n getAndSetAppProperties();\r\n }\r\n }, []);\r\n\r\n function getStepContent(step: number, handleNext: any, handleBack: any, handleCancel: any) {\r\n switch (step) {\r\n case 0:\r\n return personalDataForm(handleNext, handleBack, handleCancel);\r\n case 1:\r\n return personalDataSummary();\r\n default:\r\n return 'Unknown step';\r\n }\r\n }\r\n\r\n const SuccessLottieMessage = () => {\r\n if (tmstate.changePersonalData) {\r\n return (\r\n <>\r\n

    Ihre Profildaten wurden erfolgreich geändert!

    \r\n \r\n );\r\n } else {\r\n return (\r\n <>\r\n

    \r\n Willkommen{' '}\r\n \r\n {tmstate.personalData.firstName} {tmstate.personalData.lastName}\r\n \r\n

    \r\n

    Ihr Account wurde erfolgreich eingerichtet!

    \r\n

    Die Login-Daten wurden an folgende E-Mail Adresse gesendet:

    \r\n

    \r\n {tmstate.personalData.email}\r\n

    \r\n \r\n );\r\n }\r\n };\r\n\r\n const personalDataForm = (handleNext: any, handleBack: any, handleCancel: any) => {\r\n return (\r\n \r\n );\r\n };\r\n\r\n const personalDataSummary = () => {\r\n let finalButton = 'Account erstellen';\r\n if (tmstate.changePersonalData) {\r\n finalButton = 'Daten ändern';\r\n }\r\n\r\n return (\r\n
    \r\n \r\n \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n \r\n \r\n handleCancel()}>\r\n Abbrechen\r\n \r\n \r\n
    \r\n \r\n Zurück\r\n \r\n
    \r\n
    \r\n \r\n \r\n {activeStep === steps.length - 1 ? finalButton : 'Bestätigen'}\r\n \r\n \r\n
    \r\n
    \r\n
    \r\n );\r\n };\r\n\r\n const isStepSkipped = (step: number) => {\r\n return skipped.has(step);\r\n };\r\n\r\n const handleNext = () => {\r\n let newSkipped = skipped;\r\n if (isStepSkipped(activeStep)) {\r\n newSkipped = new Set(newSkipped.values());\r\n newSkipped.delete(activeStep);\r\n }\r\n\r\n setActiveStep((prevActiveStep) => prevActiveStep + 1);\r\n setSkipped(newSkipped);\r\n\r\n if (activeStep === steps.length - 1) {\r\n handleSubmit();\r\n }\r\n };\r\n\r\n const handleSubmit = async () => {\r\n const registerData: IRegisterData = {\r\n insuranceNr: tmstate.personalData.insuranceNr,\r\n nameLast: tmstate.personalData.lastName,\r\n nameFirst: tmstate.personalData.firstName,\r\n birthdate: tmstate.personalData.birthday,\r\n zip: tmstate.personalData.zip,\r\n city: tmstate.personalData.city,\r\n street: tmstate.personalData.street,\r\n streetNr: tmstate.personalData.housenr,\r\n tel: tmstate.personalData.telephone,\r\n email: tmstate.personalData.email,\r\n gender: tmstate.personalData.gender,\r\n country: tmstate.personalData.country,\r\n mobilePhone: tmstate.personalData.mobilePhone,\r\n academicTitle: tmstate.personalData.academicTitle,\r\n reason: reason,\r\n plannedStudies: tmstate.personalData.plannedStudies,\r\n insuranceName: tmstate.personalData.insuranceName,\r\n language: tmstate.personalData.language,\r\n };\r\n\r\n let response;\r\n if (tmstate.changePersonalData) {\r\n const patdataOrignal = await getPatientResource(state.sessionId, state.activeUserId);\r\n const modifiedPatientResource = modifyPatientResource(patdataOrignal, registerData);\r\n response = await changePatientResource(state, modifiedPatientResource);\r\n } else {\r\n response = await registerUserDirect(registerData);\r\n }\r\n\r\n if (response.error) {\r\n let alertTitleCst = 'Neuer Account';\r\n if (tmstate.changePersonalData) {\r\n alertTitleCst = 'Persönliche Daten ändern';\r\n }\r\n\r\n showAlertMessage({\r\n alertTitle: alertTitleCst,\r\n alertTxt: response.error,\r\n alertType: AlertType.error,\r\n onHide: AlertOnHide.goToHome,\r\n alertdispatch: alertdispatch,\r\n });\r\n } else {\r\n setSuccess(true);\r\n setResponse(response);\r\n\r\n if (tmstate.changePersonalData) {\r\n getAndSetPersonalData(state.sessionId, state.activeUserId, state.practitionerRoleId);\r\n }\r\n }\r\n };\r\n\r\n const handleBack = () => {\r\n setActiveStep((prevActiveStep) => prevActiveStep - 1);\r\n };\r\n\r\n const handleCancel = async () => {\r\n if (props.handleFinishClick) {\r\n props.handleFinishClick(response);\r\n } else if (tmstate.changePersonalData) {\r\n tmdispatch({\r\n type: 'CHANGEPERSONALDATA',\r\n changePersonalData: true,\r\n });\r\n navigate(Paths.PROFIL_INFO);\r\n } else {\r\n tmdispatch({\r\n type: 'RESETALL',\r\n });\r\n navigate(Paths.HOME);\r\n }\r\n };\r\n\r\n let stepContent;\r\n\r\n if (activeStep === 0) {\r\n stepContent = {getStepContent(activeStep, handleNext, handleBack, handleCancel)};\r\n }\r\n\r\n if (activeStep === 1) {\r\n stepContent = {getStepContent(activeStep, handleNext, handleBack, handleCancel)};\r\n }\r\n\r\n if (activeStep === steps.length && success) {\r\n stepContent = (\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 handleCancel()}>OK\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n );\r\n }\r\n\r\n let description;\r\n\r\n if (activeStep === 0) {\r\n description =

    Bitte erfassen Sie Ihre persönlichen Informationen:

    ;\r\n }\r\n\r\n if (activeStep === 1) {\r\n description =

    Bitte überprüfen Sie Ihre persönlichen Informationen:

    ;\r\n }\r\n\r\n const brandingSrc = 'data:image/jpg;base64,' + apstate.brandingBytes;\r\n\r\n const impressum = getImpressum();\r\n\r\n return (\r\n \r\n \r\n \r\n \"Principa\r\n \r\n \r\n
    \r\n

    {tmstate.changePersonalData ? 'Accountdaten ändern' : 'Neuen Account erstellen'}

    \r\n
    {description}
    \r\n
    \r\n
    \r\n \r\n
    \r\n \r\n {steps.map((label, index) => {\r\n const stepProps: { completed?: boolean } = {};\r\n if (isStepSkipped(index)) {\r\n stepProps.completed = false;\r\n }\r\n return (\r\n \r\n \r\n {label}\r\n \r\n \r\n );\r\n })}\r\n \r\n
    {stepContent}
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n );\r\n};\r\n\r\nexport default NeuerAccount;\r\n","import Row from 'react-bootstrap/Row';\r\nimport TabContent from 'react-bootstrap/TabContent';\r\nimport styled from 'styled-components';\r\n\r\nexport const StyledTabRow = styled(Row)`\r\n background-color: white;\r\n border-radius: 50px 50px 0px 0px;\r\n padding: 5px;\r\n`;\r\n\r\nexport const StyledTabContent = styled(TabContent)`\r\n background-color: white;\r\n width: 100%;\r\n margin: 0 auto;\r\n`;\r\n\r\nexport const FixedTabsHeader = styled.div`\r\n overflow: hidden;\r\n position: fixed;\r\n width: 80%;\r\n margin-top: 45px;\r\n background-color: ${(props) => props.theme.mainColor};\r\n z-index: 10;\r\n align-content: center;\r\n`;\r\n","import moment from 'moment';\r\nimport { useContext, useState } from 'react';\r\nimport { Button, Card, Col, Row } from 'react-bootstrap';\r\nimport TerminierungContext, {\r\n IAvailableTimeslot,\r\n IExtendedPhysicianAppointment,\r\n IExtendedPhysicianAppointmentExtension,\r\n} from '../../context/terminierungContext';\r\nimport { useAppointmentSelection } from '../../hooks/useAppointmentSelection';\r\nimport useScreenResolution from '../../hooks/useScreenResolution';\r\nimport { blockAppointment } from '../../services/RestServices';\r\nimport {\r\n setReplacedCareUnitForResource,\r\n setReplacedDepartmentForResource,\r\n setReplacedPractitionerForResource,\r\n setReplacedRoomForResource,\r\n setReplacedServiceTypeForResource,\r\n setReplacedStartEndForResource,\r\n} from '../../utils/appointmentUtils';\r\nimport { TimeslotButton } from '../Buttons/SelectButton';\r\nimport { StyledPhysicianSelectionCard, StyledPhysicianSelectionCardTitle } from '../Cards/StyledCard';\r\nimport { DateSwitcherTimeslotCol, DateSwitcherTimeslotColStartEnd } from '../Cols/StyledCol';\r\nimport { VerticalCenterDiv } from '../Div/StyledDiv';\r\nimport LoadingSpinnerWithText from '../Loading/LoadingSpinnerWithText';\r\nimport BlockingAppointmentModal from '../Modals/BlockingAppointmentModal/BlockingAppointmentModal';\r\nimport { TimeslotRow } from '../Rows/StyledRow';\r\nimport PhysicianSelectionDescriptionList from './PhysicianSelectionDescriptionList';\r\nimport PhysicianSelectionPhoto from './PhysicianSelectionPhoto';\r\n\r\ntype IPhyscianSelectionCardWithAppointments = {\r\n name?: string;\r\n description?: string[];\r\n showPicture?: boolean;\r\n pict?: string;\r\n startDate: Date;\r\n countDaysToVisualize: number;\r\n maxTimeSlots: number;\r\n appointments?: IExtendedPhysicianAppointment[];\r\n blockMessage?: string;\r\n hdBooking?: string;\r\n handleTimelotClick?(currentActiveStep: number): void;\r\n currentActiveStep?: number;\r\n showLoadingSpinner: boolean;\r\n firstPossibleDate?: string;\r\n handleStartDate(firstPossibleDate?: string): void;\r\n};\r\n\r\nconst PhysicianSelectionCardWithAppointments = (props: IPhyscianSelectionCardWithAppointments) => {\r\n const { tmstate, tmdispatch } = useContext(TerminierungContext);\r\n\r\n const [showMoreButton, setShowMoreButton] = useState(false);\r\n const [showAllTimeSlots, setShowAllTimeSlots] = useState(false);\r\n\r\n const { getSelectedResource, setSelectedResource, setSelectedTimeslot, getMakroIdFromResourceServiceType } =\r\n useAppointmentSelection();\r\n\r\n const screenSize = useScreenResolution();\r\n\r\n interface IBlockingModalShow {\r\n show: boolean;\r\n }\r\n const [blockingModalShow, setBlockingModalShow] = useState({\r\n show: false,\r\n });\r\n\r\n const getAppointmentForDate = (date: string, appointments: IExtendedPhysicianAppointment[]) => {\r\n const appointment = appointments.filter((e) => {\r\n const myDate = moment(e.start).format('DD.MM.yyyy');\r\n if (myDate === date) {\r\n return true;\r\n }\r\n });\r\n\r\n return appointment;\r\n };\r\n\r\n const getTimeSlotsForDate = (appointment: IExtendedPhysicianAppointmentExtension[]) => {\r\n const timeslots = appointment.filter((e) => {\r\n if (e.url.endsWith('possibleTimes')) {\r\n return true;\r\n }\r\n });\r\n\r\n return timeslots;\r\n };\r\n\r\n const clickedTimeslot = async (\r\n resourceAppointment: IExtendedPhysicianAppointment,\r\n timeslot: IAvailableTimeslot,\r\n supressDuration: boolean,\r\n ) => {\r\n // console.log('clicked timeslot: start: ', dateStart, ' end: ', dateEnd);\r\n const selectedTimeslot = {\r\n start: timeslot.timeslot.start,\r\n end: timeslot.timeslot.end,\r\n supressDuration: supressDuration,\r\n };\r\n\r\n let updatedResource = setReplacedRoomForResource(resourceAppointment, timeslot.replacedRoom);\r\n updatedResource = setReplacedStartEndForResource(updatedResource, selectedTimeslot);\r\n updatedResource = setReplacedPractitionerForResource(updatedResource, timeslot.replacedPractitioner);\r\n updatedResource = setReplacedCareUnitForResource(updatedResource, timeslot.replacedCareUnit);\r\n updatedResource = setReplacedDepartmentForResource(updatedResource, timeslot.replacedDepartment);\r\n updatedResource = setReplacedServiceTypeForResource(updatedResource, timeslot.replacedServiceType);\r\n\r\n setSelectedResource(tmstate.workOnAppointmentNr, updatedResource);\r\n\r\n const resource = getSelectedResource(1);\r\n const blockResponse = await blockAppointment(resource);\r\n if (blockResponse.success === 'false') {\r\n // onNewAppointments(blockResponse.newApp, tmstate.workOnAppointmentNr, setSelectedTimeslot);\r\n // gotNewAppointment = true;\r\n setBlockingModalShow({\r\n show: true,\r\n });\r\n return;\r\n }\r\n\r\n setSelectedTimeslot(tmstate.workOnAppointmentNr, selectedTimeslot);\r\n\r\n /* Fruehester Termin -> get makroId from ServiceType and find resource from filteredResources */\r\n if (tmstate.selectedReason?.makroId !== undefined && tmstate.selectedReason.makroId === 0) {\r\n const makroId = getMakroIdFromResourceServiceType(updatedResource);\r\n\r\n if (makroId && makroId > 0) {\r\n const filteredSelectedReason = tmstate.filteredReasons.filter((e) => e.makroId === makroId);\r\n tmdispatch({\r\n type: 'SELECTREASON',\r\n selectedReason: filteredSelectedReason[0],\r\n });\r\n }\r\n }\r\n\r\n if (props.handleTimelotClick) {\r\n // if (tmstate.selectedTimeslots && tmstate.selectedTimeslots.length > 0 && tmstate.timeslotClicked) {\r\n // props.handleTimelotClick(props.currentActiveStep ? props.currentActiveStep : 0);\r\n // }\r\n tmdispatch({\r\n type: 'HDBOOKING',\r\n hdBooking: props.hdBooking ? props.hdBooking : '',\r\n });\r\n props.handleTimelotClick(props.currentActiveStep ? props.currentActiveStep : 0);\r\n }\r\n };\r\n\r\n const getTime = (date: Date) => {\r\n return moment(date).format('HH:mm');\r\n };\r\n\r\n const getTimeRange = (slot: IAvailableTimeslot, supressDuration: boolean) => {\r\n if (supressDuration) {\r\n return getTime(slot.timeslot.start);\r\n }\r\n return getTime(slot.timeslot.start) + ' - ' + getTime(slot.timeslot.end);\r\n };\r\n\r\n const rowNrToShow = (\r\n rowNr: number,\r\n maxRowNr: number,\r\n allPossibleTimeslots: IExtendedPhysicianAppointmentExtension[],\r\n ) => {\r\n if (isNaN(maxRowNr)) {\r\n return rowNr;\r\n }\r\n if (maxRowNr >= allPossibleTimeslots.length) {\r\n return rowNr;\r\n }\r\n if (rowNr == maxRowNr - 1) {\r\n return allPossibleTimeslots.length - 1;\r\n }\r\n const stepWith = allPossibleTimeslots.length / (maxRowNr - 1);\r\n return Math.floor(rowNr * stepWith);\r\n };\r\n\r\n const timeslotCol = (rowNr: number, maxRowNr: number) => {\r\n const allCols: any[] = [];\r\n\r\n allCols.push();\r\n for (let i = 0; i < props.countDaysToVisualize; i++) {\r\n let color = '#f0f0f0';\r\n if (i % 2 !== 0) {\r\n color = 'white';\r\n }\r\n\r\n const myDate = moment(props.startDate).add(i, 'days');\r\n const myDateFormated = myDate.format('DD.MM.yyyy');\r\n if (props.appointments && props.appointments.length > 0) {\r\n const appointments = getAppointmentForDate(\r\n myDateFormated,\r\n props.appointments ? props.appointments : [],\r\n );\r\n if (appointments.length > 0) {\r\n const appointment = appointments[0];\r\n if (appointment.extension) {\r\n const allPossibleTimeslots = getTimeSlotsForDate(appointment.extension);\r\n\r\n if (allPossibleTimeslots.length > props.maxTimeSlots) {\r\n if (showMoreButton === false) {\r\n setShowMoreButton(true);\r\n }\r\n }\r\n\r\n const row2Show = rowNrToShow(rowNr, maxRowNr, allPossibleTimeslots);\r\n const possibleTimeslots = allPossibleTimeslots[row2Show];\r\n\r\n if (possibleTimeslots?.url.endsWith('possibleTimes')) {\r\n if (possibleTimeslots.extension) {\r\n const container = {} as IAvailableTimeslot;\r\n\r\n possibleTimeslots.extension.forEach((subExtension) => {\r\n if (subExtension.url.endsWith('timeSlot') && subExtension.valuePeriod) {\r\n container.timeslot = subExtension.valuePeriod;\r\n }\r\n if (subExtension.url.endsWith('replacedRoom') && subExtension.valueReference) {\r\n container.replacedRoom = subExtension.valueReference;\r\n }\r\n if (\r\n subExtension.url.endsWith('replacedPractitioner') &&\r\n subExtension.valueReference\r\n ) {\r\n container.replacedPractitioner = subExtension.valueReference;\r\n }\r\n if (subExtension.url.endsWith('replacedCareunit') && subExtension.valueReference) {\r\n container.replacedCareUnit = subExtension.valueReference;\r\n }\r\n if (\r\n subExtension.url.endsWith('replacedDepartment') &&\r\n subExtension.valueReference\r\n ) {\r\n container.replacedDepartment = subExtension.valueReference;\r\n }\r\n if (\r\n subExtension.url.endsWith('replacedServiceType') &&\r\n subExtension.valueCodeableConcept\r\n ) {\r\n container.replacedServiceType = subExtension.valueCodeableConcept;\r\n }\r\n });\r\n\r\n allCols.push(\r\n \r\n clickedTimeslot(appointment, container, true)}\r\n >\r\n {getTimeRange(container, true)}\r\n \r\n {/* clickedTimeslot(appointment, container, true)}\r\n >\r\n {getTimeRange(container, true)}\r\n */}\r\n ,\r\n );\r\n }\r\n } else {\r\n allCols.push(\r\n \r\n \r\n 00:00\r\n \r\n ,\r\n );\r\n }\r\n }\r\n } else {\r\n allCols.push(\r\n \r\n \r\n 00:00\r\n \r\n ,\r\n );\r\n }\r\n }\r\n }\r\n allCols.push();\r\n\r\n return allCols;\r\n };\r\n\r\n const timeslots = (appointments: IExtendedPhysicianAppointment[]) => {\r\n const allTimeslots: JSX.Element[] = [];\r\n\r\n if (showAllTimeSlots) {\r\n let maxRows = 7;\r\n appointments.forEach((e) => {\r\n let currentMax = 0;\r\n e.extension?.forEach((ext) => {\r\n if (ext.url.endsWith('possibleTimes')) {\r\n currentMax++;\r\n }\r\n });\r\n\r\n if (currentMax > maxRows) {\r\n maxRows = currentMax;\r\n }\r\n });\r\n for (let i = 0; i < maxRows; i++) {\r\n allTimeslots.push({timeslotCol(i, NaN)});\r\n }\r\n } else {\r\n for (let i = 0; i < props.maxTimeSlots; i++) {\r\n allTimeslots.push({timeslotCol(i, props.maxTimeSlots)});\r\n }\r\n }\r\n\r\n return allTimeslots;\r\n };\r\n\r\n const ShowMoreButton = () => {\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n );\r\n };\r\n\r\n const BlockMessage = () => {\r\n if (props.blockMessage) {\r\n return (\r\n
    \r\n
    \r\n
    \r\n );\r\n }\r\n return null;\r\n };\r\n\r\n const jumpToDate = (firstPossibleDate?: string) => {\r\n props.handleStartDate(firstPossibleDate);\r\n };\r\n\r\n const FirstPossibleDateInTimeSlot = () => {\r\n if (props.firstPossibleDate && screenSize.width >= 677) {\r\n return (\r\n \r\n \r\n \r\n );\r\n }\r\n return null;\r\n };\r\n\r\n const FirstPossibleDateInDescrList = () => {\r\n if (props.firstPossibleDate && screenSize.width < 677) {\r\n return (\r\n
    \r\n \r\n
    \r\n );\r\n }\r\n return null;\r\n };\r\n\r\n const FirstPossibleDateContent = () => {\r\n return (\r\n

    \r\n Nächster Freier Termin:  \r\n jumpToDate(props.firstPossibleDate)}\r\n >\r\n {props.firstPossibleDate}\r\n \r\n

    \r\n );\r\n };\r\n\r\n const TimeSlotArea = () => {\r\n if (props.showLoadingSpinner) {\r\n return (\r\n
    \r\n \r\n
    \r\n );\r\n }\r\n if (props.blockMessage) {\r\n return ;\r\n } else if (props.firstPossibleDate) {\r\n return ;\r\n } else {\r\n return (\r\n <>\r\n {timeslots(props.appointments ? props.appointments : [])}\r\n {showMoreButton && props.appointments && props.appointments.length > 0 && }\r\n \r\n );\r\n }\r\n };\r\n\r\n return (\r\n <>\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {props.name && (\r\n {props.name}\r\n )}\r\n }\r\n />\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n setBlockingModalShow({ show: false })}\r\n />\r\n \r\n );\r\n};\r\n\r\nexport default PhysicianSelectionCardWithAppointments;\r\n","import moment from 'moment';\r\nimport { Nav } from 'react-bootstrap';\r\nimport { RiArrowLeftSLine, RiArrowRightSLine } from 'react-icons/ri';\r\nimport useScreenResolution from '../../hooks/useScreenResolution';\r\nimport { getWeekDay } from '../../utils/dateUtils';\r\nimport { DateSwitcherTimeslotCol, DateSwitcherTimeslotColStartEnd } from '../Cols/StyledCol';\r\nimport { IPhysicianSelectionCardWithDateSwitcher } from '../PhysicianSelectionCard/PhysicianSelectionCardWithDateSwitcher';\r\nimport { DateSwitcherRow } from '../Rows/StyledRow';\r\nimport MyTooltip from '../Tooltip/MyTooltip';\r\n\r\ntype IHorizontalDateSwitcher = IPhysicianSelectionCardWithDateSwitcher;\r\n\r\nconst HorizontalDateSwitcher = (props: IHorizontalDateSwitcher) => {\r\n const screenSize = useScreenResolution();\r\n\r\n const showDate = (date: Date, offset: number) => {\r\n const myDate = moment(date).add(offset, 'days');\r\n const weekday = getWeekDay(myDate.toString(), 'dd');\r\n\r\n // return weekday;\r\n\r\n return (\r\n
    \r\n
    {weekday}
    \r\n
    {myDate.format('DD.MM.')}
    \r\n
    \r\n );\r\n };\r\n\r\n const dates = () => {\r\n const dates: any[] = [];\r\n\r\n for (let i = 0; i < props.countDaysToVisualize; i++) {\r\n dates.push({showDate(props.startDate, i)});\r\n }\r\n\r\n return dates;\r\n };\r\n\r\n return (\r\n \r\n \r\n props.handlePreviousDate()}>\r\n }\r\n >\r\n \r\n \r\n {dates()}\r\n \r\n \r\n props.handleNextDate()}>\r\n }\r\n >\r\n \r\n \r\n \r\n \r\n );\r\n};\r\n\r\nexport default HorizontalDateSwitcher;\r\n","import { Card, Col, Row } from 'react-bootstrap';\r\nimport HorizontalDateSwitcher from '../Calendar/HorizontalDateSwitcher';\r\nimport { StyledPhysicianSelectionCard } from '../Cards/StyledCard';\r\nimport { DateCol, DatePlaceholderCol } from '../Cols/StyledCol';\r\n\r\nexport interface IPhysicianSelectionCardWithDateSwitcher {\r\n startDate: Date;\r\n handlePreviousDate(): void;\r\n handleNextDate(): void;\r\n countDaysToVisualize: number;\r\n}\r\n\r\nconst PhysicianSelectionCardWithDateSwitcher = (props: IPhysicianSelectionCardWithDateSwitcher) => {\r\n return (\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 PhysicianSelectionCardWithDateSwitcher;\r\n","import moment from 'moment';\r\nimport { useContext, useEffect, useState } from 'react';\r\nimport { Col, Row } from 'react-bootstrap';\r\nimport { ThemeContext } from 'styled-components';\r\nimport { CategoryBadgeSelected } from '../../components/Badges/StyledBadge';\r\nimport { AnmeldBaseDiv, AnmeldBaseHeader, AnmeldBaseHeaderLogin, CenterDiv } from '../../components/Div/StyledDiv';\r\nimport LoadingSpinnerWithText from '../../components/Loading/LoadingSpinnerWithText';\r\nimport PhysicianSelectionCardWithAppointments from '../../components/PhysicianSelectionCard/PhysicianSelectionCardWithAppointments';\r\nimport PhysicianSelectionCardWithDateSwitcher from '../../components/PhysicianSelectionCard/PhysicianSelectionCardWithDateSwitcher';\r\nimport { ParagraphFontSize } from '../../components/StyledParagraph/StyledParagraph';\r\nimport { StyledMainHeader, StyledSubHeader } from '../../components/StyledText/StyledHeader';\r\nimport AppPropsContext from '../../context/appPropsContext';\r\nimport LoginContext, { IDepartmentReasons } from '../../context/loginContext';\r\nimport TerminierungContext, { ISelectedPhysician } from '../../context/terminierungContext';\r\nimport { useAppProperties } from '../../hooks/useAppProperties';\r\nimport { useAppointmentSelection } from '../../hooks/useAppointmentSelection';\r\nimport { useGoogleAnalytics } from '../../hooks/useGoogleAnalytics';\r\nimport useScreenResolution from '../../hooks/useScreenResolution';\r\nimport { IPhysiciansFor, getPhysiciansFor, unblockAppointment } from '../../services/RestServices';\r\nimport { INeuerAccountWL } from '../NeuerAccount/NeuerAccountWL';\r\n\r\ninterface IAppointmentCategoryExtendedPhysician {\r\n department: string;\r\n reason: IDepartmentReasons;\r\n handleTimeslotClick(currentActiveStep: number, hdBooking?: string): void;\r\n currentActiveStep: number;\r\n newAccountHashParam?: INeuerAccountWL;\r\n}\r\n\r\nconst AppointmentCategoryExtendedPhysician = (props: IAppointmentCategoryExtendedPhysician) => {\r\n const themeContext = useContext(ThemeContext);\r\n const { tmstate, tmdispatch } = useContext(TerminierungContext);\r\n const { state } = useContext(LoginContext);\r\n const { apstate } = useContext(AppPropsContext);\r\n const [allPhysicians, setAllPhysicians] = useState();\r\n const { getAllMakroIdsFromFilteredReasons } = useAppointmentSelection();\r\n const [startDate, setStartDate] = useState(new Date());\r\n const [makroId, setMakroId] = useState('');\r\n const [hdTimeslots, setHdTimeslots] = useState('');\r\n const [initalPhysicianIds, setInitialPhysicianIds] = useState();\r\n const [showLoadingSpinner, setShowLoadingSpinner] = useState(false);\r\n const { getCountDaysToVisualize } = useAppProperties();\r\n const { sendGoogleAnalyticsPageView } = useGoogleAnalytics();\r\n\r\n const screenSize = useScreenResolution();\r\n\r\n const { getSelectedResource } = useAppointmentSelection();\r\n\r\n const getExtension = (app: any, url: string) => {\r\n for (const e of app.extension) {\r\n if (e.url == url) {\r\n return e.valueString;\r\n }\r\n }\r\n return null;\r\n };\r\n\r\n const getExtensionJSON = (app: any, url: string) => {\r\n const sjson = getExtension(app, url);\r\n if (sjson) {\r\n return JSON.parse(sjson);\r\n }\r\n return null;\r\n };\r\n const simulateBehFilterFromLocation = (app: any) => {\r\n let res = '';\r\n for (const p of app.participant) {\r\n const ref = p.actor.reference;\r\n if (ref.startsWith('Location/')) {\r\n if (res.length > 0) {\r\n res += ',';\r\n }\r\n res += ref.substring('Location/'.length);\r\n } else if (ref.startsWith('Practitioner/')) {\r\n if (res.length > 0) {\r\n res += ',';\r\n }\r\n res += ref.substring('Practitioner/'.length);\r\n }\r\n }\r\n return res;\r\n };\r\n useEffect(() => {\r\n sendGoogleAnalyticsPageView({\r\n page: '/AppointmentCategoryExtendedPhysician',\r\n title: 'Behandler und Termin wählen',\r\n });\r\n\r\n const getPhysicians = async () => {\r\n let physiciansForData: IPhysiciansFor;\r\n if (tmstate.cancelNewAppointmentData?.data) {\r\n const app = tmstate.cancelNewAppointmentData?.data;\r\n const _makroId = app.serviceType[0].coding[0].id;\r\n const behFilter = simulateBehFilterFromLocation(app);\r\n setMakroId(_makroId);\r\n physiciansForData = {\r\n makroId: _makroId,\r\n selectedReason: getExtensionJSON(app, 'http://www.principa.siegele-software.com/selectedReason')\r\n ?.reasonId,\r\n selectedInsurance: getExtension(app, 'http://www.principa.siegele-software.com/selectedInsurance'),\r\n selectedDepartment: getExtension(\r\n app,\r\n 'http://www.principa.siegele-software.com/selectedDepartment',\r\n ),\r\n selectedAptType: getExtension(app, 'http://www.principa.siegele-software.com/selectedAptType'),\r\n countDaysToVisualize: getCountDaysToVisualize(),\r\n extendedPhysicians: apstate.extendedPhysicians,\r\n // behFilter: getExtension(app, 'http://www.principa.siegele-software.com/behFilter'),\r\n behFilter: behFilter,\r\n };\r\n } else {\r\n const _makroId = getAllMakroIdsFromFilteredReasons();\r\n setMakroId(_makroId);\r\n physiciansForData = {\r\n makroId: _makroId,\r\n selectedReason: tmstate.selectedReason.reasonId,\r\n selectedInsurance: tmstate.selectedInsurance,\r\n selectedDepartment: tmstate.selectedDepartment.name,\r\n selectedAptType: tmstate.selectedAppointmentType,\r\n countDaysToVisualize: getCountDaysToVisualize(),\r\n extendedPhysicians: apstate.extendedPhysicians,\r\n };\r\n if (props.newAccountHashParam?.behFilter) {\r\n physiciansForData.behFilter = props.newAccountHashParam?.behFilter;\r\n }\r\n }\r\n\r\n setShowLoadingSpinner(true);\r\n const physiciansData = await getPhysiciansFor(physiciansForData);\r\n setShowLoadingSpinner(false);\r\n if (physiciansData?.physicians) {\r\n setAllPhysicians(physiciansData.physicians);\r\n setHdTimeslots(physiciansData.hdTimeslots);\r\n const allPhysicianIds: string[] = [];\r\n physiciansData.physicians.forEach((e: ISelectedPhysician) => {\r\n if (e.id) {\r\n allPhysicianIds?.push(e.id.toString());\r\n }\r\n });\r\n setInitialPhysicianIds(allPhysicianIds);\r\n }\r\n };\r\n\r\n tmdispatch({\r\n type: 'RESETTIMESLOT',\r\n });\r\n\r\n /* unblock appointment */\r\n const resource_1 = getSelectedResource(1);\r\n if (resource_1) {\r\n unblockAppointment(resource_1);\r\n }\r\n\r\n /* get physicians data*/\r\n\r\n getPhysicians();\r\n }, []);\r\n\r\n const getNewPhyscianData = async (myDate: moment.Moment) => {\r\n const physiciansForData: IPhysiciansFor = {\r\n makroId: makroId,\r\n selectedReason: tmstate.selectedReason.reasonId,\r\n selectedInsurance: tmstate.selectedInsurance,\r\n selectedDepartment: tmstate.selectedDepartment.name,\r\n selectedAptType: tmstate.selectedAppointmentType,\r\n countDaysToVisualize: getCountDaysToVisualize(),\r\n extendedPhysicians: apstate.extendedPhysicians,\r\n startDate: myDate.format('DD.MM.yyyy'),\r\n currentPhys: initalPhysicianIds?.join(),\r\n };\r\n if (props.newAccountHashParam?.behFilter) {\r\n physiciansForData.behFilter = props.newAccountHashParam?.behFilter;\r\n }\r\n\r\n setShowLoadingSpinner(true);\r\n const physiciansData = await getPhysiciansFor(physiciansForData);\r\n setShowLoadingSpinner(false);\r\n if (physiciansData?.physicians) {\r\n setAllPhysicians(physiciansData.physicians);\r\n }\r\n };\r\n\r\n const handlePreviousDate = () => {\r\n const dateToday = new Date();\r\n\r\n const offset = apstate.countDaysToVisualize ? getCountDaysToVisualize() : 7;\r\n\r\n const myDate = moment(startDate).add(offset * -1, 'days');\r\n\r\n if (moment(myDate).isBefore(dateToday, 'day')) {\r\n /* no switch to past dates */\r\n return;\r\n }\r\n setStartDate(myDate.toDate());\r\n\r\n getNewPhyscianData(myDate);\r\n };\r\n const handleNextDate = async () => {\r\n const offset = apstate.countDaysToVisualize ? getCountDaysToVisualize() : 7;\r\n\r\n const myDate = moment(startDate).add(offset, 'days');\r\n setStartDate(myDate.toDate());\r\n\r\n getNewPhyscianData(myDate);\r\n };\r\n\r\n const handleStartDate = async (firstPossibleDate: string) => {\r\n const myDate = moment(firstPossibleDate, 'DD.MM.yyyy', true);\r\n setStartDate(myDate.toDate());\r\n\r\n getNewPhyscianData(myDate);\r\n };\r\n\r\n const DateHeader = () => {\r\n const allCards: any[] = [];\r\n\r\n allCards.push(\r\n
    \r\n \r\n
    ,\r\n );\r\n return allCards;\r\n };\r\n const allPhysicianCards = () => {\r\n const allCards: any[] = [];\r\n\r\n allPhysicians?.forEach((e: ISelectedPhysician) => {\r\n let descrList: string[] = [];\r\n if (e.lines && typeof e.lines === 'string') {\r\n descrList.push(e.lines);\r\n } else if (e.lines) {\r\n descrList = e.lines;\r\n }\r\n allCards.push(\r\n
    \r\n \r\n
    ,\r\n );\r\n });\r\n\r\n return allCards;\r\n };\r\n\r\n const MyAnmeldBaseHeader = (props) => {\r\n if (state.isLoggedIn) {\r\n return {props.children};\r\n } else {\r\n return {props.children};\r\n }\r\n };\r\n const getTimeslotHeader = () => {\r\n if (hdTimeslots) {\r\n return ;\r\n }\r\n return null;\r\n };\r\n\r\n return (\r\n <>\r\n {showLoadingSpinner && (\r\n
    \r\n \r\n
    \r\n )}\r\n \r\n {getTimeslotHeader()}\r\n \r\n {screenSize.height && screenSize.height > 600 && (\r\n \r\n \r\n Behandler und Termin wählen\r\n \r\n \r\n \r\n Fachrichtung\r\n \r\n {props.department ? props.department : ''}\r\n \r\n \r\n \r\n \r\n \r\n Besuchsgrund\r\n \r\n {props.reason?.reasonName ? props.reason.reasonName : ''}\r\n \r\n \r\n \r\n \r\n )}\r\n {DateHeader()}\r\n \r\n {allPhysicianCards()}\r\n \r\n \r\n );\r\n};\r\n\r\nexport default AppointmentCategoryExtendedPhysician;\r\n","import { useContext } from 'react';\r\nimport SigPadContext, { ISigData, ISignaturePadDevice } from '../context/sigpadContext';\r\n\r\nexport interface ISignotec {\r\n wsUri?: string;\r\n}\r\n\r\nexport const useSignotecConnector = (props: ISignotec) => {\r\n const { sigpadstate, sigpaddispatch } = useContext(SigPadContext);\r\n\r\n const docHashes = {\r\n kSha1: 0,\r\n kSha256: 1,\r\n };\r\n\r\n const sha1_dochash = 'AAECAwQFBgcICQoLDA0ODxAREhM=';\r\n const sha256_dochash = 'AAECAwQFBgcICQoLDA0ODxAREhMUFRYXGBkaGxwdHh8=';\r\n const encryption_cert =\r\n 'MIICqTCCAZGgAwIBAgIBATANBgkqhkiG9w0BAQUFADAYMRYwFAYDVQQKEw1EZW1vIHNpZ25vdGVjMB4XDTE1MTAwNzA5NDc1MFoXDTI1MTAwNDA5NDc1MFowGDEWMBQGA1UEChMNRGVtbyBzaWdub3RlYzCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAOFFpsZexYW28Neznn26Bp9NVCJywFFj1QYXg3DDsaSyr6ubuqXKSC4jkenIGBnom/zKPxwPDtNXuy+nyDYFXYNn87TUdh/51CCr3uk9kR9hvRIzBKwkOx0DGLdCoSGAKDOPHwx1rE0m/SOqYOQh6XFjlybw+KzDZcPvhf2Fq/IFNXHpk8m0YHMAReW8q34CYjk9ZtcIlrcYGTikQherOtYM8CaEUPDd6vdJgosGWEnDeNXDCAIWTFc5ECJm9Hh7a47eF3BG5Pjl1QfOSA8lQBV5eTjQc1n1rWCWULt143nIbN5yCFrn0D8W6+eKJV5urETxWUQ208iqgeU1bIgKSEUCAwEAATANBgkqhkiG9w0BAQUFAAOCAQEAt2ax8iwLFoOmlAOZTQcRQtjxseQAhgOTYL/vEP14rPZhF1/gkI9ZzhESdkqR8mHIIl7FnfBg9A2v9ZccC7YgRb4bCXNzv6TIEyz4EYXNkIq8EaaQpvsX4+A5jKIP0PRNZUaLJaDRcQZudd6FMyHxrHtCUTEvORzrgGtRnhBDhAMiSDmQ958t8RhET6HL8C7EnL7f8XBMMFR5sDC60iCu/HeIUkCnx/a2waZ13QvhEIeUBmTRi9gEjZEsGd1iZmgf8OapTjefZMXlbl7CJBymKPJgXFe5mD9/yEMFKNRy5Xfl3cB2gJka4wct6PSIzcQVPaCts6I0V9NfEikXy1bpSA==';\r\n\r\n const encryption_cert_only_when_empty = 'TRUE';\r\n const rsa_scheme = STPadServerLibDefault.RsaScheme.PSS;\r\n let supportsRSA = false;\r\n let canStoreEncryptKey = false;\r\n const padConnectionType = 'HID';\r\n const padIndex = 0;\r\n const docHash_type = docHashes.kSha256;\r\n\r\n const cancelButton = -1;\r\n const retryButton = -1;\r\n const confirmButton = -1;\r\n // const buttonDiff = 0;\r\n // const buttonLeft = 0;\r\n // const buttonTop = 0;\r\n // const buttonSize = 0;\r\n // let backgroundImage;\r\n // const scaleFactorX = 1.0;\r\n // const scaleFactorY = 1.0;\r\n\r\n let sampleRate;\r\n\r\n const fieldName = 'Signatur';\r\n const customText = 'Bitte hier signieren!';\r\n\r\n const padStates = {\r\n closed: 0,\r\n opened: 1,\r\n };\r\n\r\n let padState = padStates.closed;\r\n\r\n const padModes = {\r\n Default: 0,\r\n API: 1,\r\n };\r\n const padMode = padModes.Default;\r\n\r\n const deviceCapabilities = {\r\n HasColorDisplay: 0x00000001,\r\n HasBacklight: 0x00000002,\r\n SupportsVerticalScrolling: 0x00000004,\r\n SupportsHorizontalScrolling: 0x00000008,\r\n SupportsPenScrolling: 0x00000010,\r\n SupportsServiceMenu: 0x00000020,\r\n SupportsRSA: 0x00000040,\r\n SupportsContentSigning: 0x00000080,\r\n SupportsH2ContentSigning: 0x00000100,\r\n CanGenerateSignKey: 0x00000200,\r\n CanStoreSignKey: 0x00000400,\r\n CanStoreEncryptKey: 0x00000800,\r\n CanSignExternalHash: 0x00001000,\r\n SupportsRSAPassword: 0x00002000,\r\n SupportsSecureModePassword: 0x00004000,\r\n Supports4096BitKeys: 0x00008000,\r\n HasNFCReader: 0x00010000,\r\n SupportsKeyPad: 0x00020000,\r\n SupportsKeyPad32: 0x00040000,\r\n HasDisplay: 0x00080000,\r\n SupportsRSASignPassword: 0x00100000,\r\n };\r\n\r\n const padTypes = {\r\n sigmaUSB: 1,\r\n sigmaSerial: 2,\r\n zetaUSB: 5,\r\n zetaSerial: 6,\r\n omegaUSB: 11,\r\n omegaSerial: 12,\r\n gammaUSB: 15,\r\n gammaSerial: 16,\r\n deltaUSB: 21,\r\n deltaSerial: 22,\r\n deltaIP: 23,\r\n alphaUSB: 31,\r\n alphaSerial: 32,\r\n alphaIP: 33,\r\n };\r\n\r\n const getReadableType = (intTypeNumber: number) => {\r\n switch (intTypeNumber) {\r\n case padTypes.sigmaUSB:\r\n return 'Sigma USB';\r\n case padTypes.sigmaSerial:\r\n return 'Sigma serial';\r\n case padTypes.zetaUSB:\r\n return 'Zeta USB';\r\n case padTypes.zetaSerial:\r\n return 'Zeta serial';\r\n case padTypes.omegaUSB:\r\n return 'Omega USB';\r\n case padTypes.omegaSerial:\r\n return 'Omega serial';\r\n case padTypes.gammaUSB:\r\n return 'Gamma USB';\r\n case padTypes.gammaSerial:\r\n return 'Gamma serial';\r\n case padTypes.deltaUSB:\r\n return 'Delta USB';\r\n case padTypes.deltaSerial:\r\n return 'Delta serial';\r\n case padTypes.deltaIP:\r\n return 'Delta IP';\r\n case padTypes.alphaUSB:\r\n return 'Alpha USB';\r\n case padTypes.alphaSerial:\r\n return 'Alpha serial';\r\n case padTypes.alphaIP:\r\n return 'Alpha IP';\r\n default:\r\n return 'Unknown';\r\n }\r\n };\r\n\r\n const resetSignotecDeviceData = () => {\r\n sigpaddispatch({\r\n type: 'RESETALL',\r\n });\r\n };\r\n\r\n /* BEGIN extern callable hook functions */\r\n\r\n const loadSignotec = () => {\r\n let wsUri = 'wss://local.signotecwebsocket.de:49494';\r\n if (props.wsUri && props.wsUri.length > 0) {\r\n wsUri = props.wsUri;\r\n }\r\n STPadServerLibCommons.handleLogging = logMessage;\r\n STPadServerLibCommons.createConnection(wsUri, onOpen, onClose, onError);\r\n };\r\n\r\n const unloadSignotec = () => {\r\n try {\r\n default_close_pad();\r\n } catch (e) {\r\n logMessage('problems to close pad, maybe its already closed, exception was = ' + e);\r\n }\r\n\r\n STPadServerLibCommons.destroyConnection();\r\n resetSignotecDeviceData();\r\n };\r\n\r\n const clearSignotec = (canvasRef: any) => {\r\n signature_retry_send(canvasRef);\r\n };\r\n\r\n const sendSignotec = () => {\r\n signature_confirm_send();\r\n };\r\n\r\n /* END extern callable hook functions */\r\n\r\n const onOpen = (evt) => {\r\n let loadText = '';\r\n if (evt.target === undefined || evt.target.url === undefined) {\r\n loadText = 'ActiveX loaded';\r\n } else {\r\n loadText = 'Connected to ' + evt.target.url;\r\n }\r\n logMessage('loadText: ' + loadText);\r\n\r\n getSignatureDefault(); // hier aufrufen???\r\n };\r\n\r\n const onClose = (evt) => {\r\n let unloadText = '';\r\n if (evt.target === undefined || evt.target.url === undefined) {\r\n unloadText = 'ActiveX unloaded';\r\n } else {\r\n unloadText = 'Disconnected from ' + evt.target.url;\r\n }\r\n logMessage('unloadText: ' + unloadText);\r\n };\r\n\r\n const onError = (evt) => {\r\n let errorText = '';\r\n if (evt.target === undefined || evt.target.url === undefined) {\r\n errorText = 'Communication error';\r\n } else {\r\n errorText = 'Communication error ' + evt.target.url;\r\n }\r\n logMessage('errorText: ' + errorText);\r\n };\r\n\r\n const getSignatureDefault = () => {\r\n // search for pads begin\r\n const deviceData: ISignaturePadDevice = {\r\n deviceName: '',\r\n canStoreEncryptKey: false,\r\n firmwareVersion: '',\r\n serialNumber: '',\r\n supportsRSA: false,\r\n padConnectionType: '',\r\n padIndex: 0,\r\n displayHeight: 0,\r\n displayWidth: 0,\r\n sampleRate: 0,\r\n scaleFactorX: 0,\r\n scaleFactorY: 0,\r\n xResolution: 0,\r\n yResolution: 0,\r\n };\r\n\r\n const searchForPadsParams = new STPadServerLibDefault.Params.searchForPads();\r\n\r\n searchForPadsParams.setPadSubset(padConnectionType);\r\n\r\n STPadServerLibDefault.searchForPads(searchForPadsParams)\r\n .then(function (pads: any) {\r\n if (pads.foundPads.length == 0) {\r\n logMessage('No connected pads have been found.');\r\n return Promise.reject('No connected pads have been found.');\r\n }\r\n\r\n deviceData.padIndex = padIndex;\r\n deviceData.padConnectionType = padConnectionType;\r\n\r\n const padType = pads.foundPads[padIndex].type;\r\n\r\n deviceData.deviceName = getReadableType(padType);\r\n deviceData.serialNumber = pads.foundPads[padIndex].serialNumber;\r\n deviceData.firmwareVersion = pads.foundPads[padIndex].firmwareVersion;\r\n\r\n if (pads.foundPads[padIndex].capabilities & deviceCapabilities.SupportsRSA) {\r\n supportsRSA = true;\r\n } else {\r\n supportsRSA = false;\r\n }\r\n deviceData.supportsRSA = supportsRSA;\r\n\r\n if (pads.foundPads[padIndex].capabilities & deviceCapabilities.CanStoreEncryptKey) {\r\n canStoreEncryptKey = true;\r\n } else {\r\n canStoreEncryptKey = false;\r\n }\r\n deviceData.canStoreEncryptKey = canStoreEncryptKey;\r\n }, STPadServerLibCommons.defaultReject)\r\n // search for pads end\r\n\r\n // open pad begin\r\n .then(function () {\r\n const openPadParams = new STPadServerLibDefault.Params.openPad(padIndex);\r\n return STPadServerLibDefault.openPad(openPadParams);\r\n }, STPadServerLibCommons.defaultReject)\r\n .then(function (padInfo) {\r\n padState = padStates.opened;\r\n deviceData.displayWidth = padInfo.padInfo.displayWidth;\r\n deviceData.displayHeight = padInfo.padInfo.displayHeight;\r\n\r\n //get scale factor from signature resolution to canvas\r\n deviceData.scaleFactorX = padInfo.padInfo.displayWidth / padInfo.padInfo.xResolution;\r\n deviceData.scaleFactorY = padInfo.padInfo.displayHeight / padInfo.padInfo.yResolution;\r\n\r\n //get sample rate\r\n deviceData.sampleRate = padInfo.padInfo.samplingRate;\r\n\r\n //start the signature process\r\n selection_dialog();\r\n }, STPadServerLibCommons.defaultReject)\r\n // open pad end\r\n\r\n .then(\r\n function () {\r\n logMessage('getSignatureDefault end');\r\n sigpaddispatch({\r\n type: 'SETDEVICEDATA',\r\n deviceData: {\r\n ...deviceData,\r\n },\r\n });\r\n },\r\n function (reason) {\r\n error_message(reason);\r\n default_close_pad();\r\n },\r\n );\r\n };\r\n\r\n const selection_dialog = () => {\r\n //Selection Diaglog nur für SignaturPads mit Display\r\n if (false) {\r\n // prepare selection dialog\r\n const checkBoxInformation: any = [];\r\n const box: any = {};\r\n box.id = 'Signature 1';\r\n box.text = 'Bite signieren...';\r\n box.checked = false;\r\n box.required = true;\r\n checkBoxInformation[0] = box;\r\n\r\n const startSelectionDialogParams = new STPadServerLibDefault.Params.startSelectionDialog();\r\n startSelectionDialogParams.addCheckboxInformation(checkBoxInformation);\r\n STPadServerLibDefault.startSelectionDialog(startSelectionDialogParams)\r\n .then(function () {\r\n logMessage('Please select and confirm elements on the pad.');\r\n }, STPadServerLibCommons.defaultReject)\r\n .then(null, function (reason) {\r\n error_message(reason);\r\n default_close_pad();\r\n });\r\n } else {\r\n // start signature capture\r\n signature_start();\r\n }\r\n };\r\n\r\n const error_message = (param: any) => {\r\n if (param.errorCode < 0) {\r\n logMessage('Signotec errorMessage: Function' + param.command + ' failed. Reason: ' + param.errorMesage);\r\n }\r\n };\r\n\r\n const logMessage = (msg) => {\r\n //TODO: do something with this log\r\n console.log('Signotec logMessage: ' + msg);\r\n };\r\n\r\n // close pad begin\r\n const default_close_pad = () => {\r\n if (padState == padStates.opened) {\r\n const closePadParams = new STPadServerLibDefault.Params.closePad(padIndex);\r\n STPadServerLibDefault.closePad(closePadParams)\r\n .then(function () {\r\n padState = padStates.closed;\r\n }, STPadServerLibCommons.defaultReject)\r\n .then(null, function (reason) {\r\n error_message(reason);\r\n return;\r\n });\r\n }\r\n };\r\n\r\n const api_close_pad = () => {\r\n if (padState == padStates.opened) {\r\n const closePadParams = new STPadServerLibApi.Device.Params.close(padIndex);\r\n STPadServerLibApi.Device.close(closePadParams)\r\n .then(function () {\r\n padState = padStates.closed;\r\n }, STPadServerLibCommons.defaultReject)\r\n .then(null, function (reason) {\r\n error_message(reason);\r\n return;\r\n });\r\n }\r\n };\r\n // close pad end\r\n\r\n // signature start begin\r\n const signature_start = () => {\r\n let dochash;\r\n\r\n switch (docHash_type) {\r\n case docHashes.kSha1:\r\n dochash = sha1_dochash;\r\n break;\r\n\r\n case docHashes.kSha256:\r\n dochash = sha256_dochash;\r\n break;\r\n\r\n default:\r\n logMessage('unknown doc hash');\r\n return;\r\n }\r\n\r\n if (supportsRSA) {\r\n const startSignatureParams = new STPadServerLibDefault.Params.startSignature();\r\n startSignatureParams.setFieldName(fieldName);\r\n startSignatureParams.setCustomText(customText);\r\n if (canStoreEncryptKey) {\r\n startSignatureParams.enablePadEncryption(dochash, encryption_cert, encryption_cert_only_when_empty);\r\n } else {\r\n startSignatureParams.enablePadEncryption(dochash, null);\r\n }\r\n STPadServerLibDefault.startSignature(startSignatureParams)\r\n .then(function () {}, STPadServerLibCommons.defaultReject)\r\n .then(null, function (reason) {\r\n error_message(reason);\r\n default_close_pad();\r\n });\r\n } else {\r\n const startSignatureParams = new STPadServerLibDefault.Params.startSignature();\r\n startSignatureParams.setFieldName(fieldName);\r\n startSignatureParams.setCustomText(customText);\r\n STPadServerLibDefault.startSignature(startSignatureParams)\r\n .then(function () {}, STPadServerLibCommons.defaultReject)\r\n .then(null, function (reason) {\r\n error_message(reason);\r\n default_close_pad();\r\n });\r\n }\r\n };\r\n // signature start end\r\n\r\n /**\r\n * The send events\r\n */\r\n STPadServerLibCommons.handleDisconnect = function (index) {\r\n disconnect_send(index);\r\n };\r\n\r\n STPadServerLibCommons.handleNextSignaturePoint = function (x, y, p) {\r\n signature_point_send(x, y, p);\r\n };\r\n\r\n STPadServerLibDefault.handleRetrySignature = function () {\r\n signature_retry_send();\r\n };\r\n\r\n STPadServerLibDefault.handleConfirmSignature = function () {\r\n // signature_confirm_send();\r\n sigpaddispatch({\r\n type: 'SETDEVICEACTION_SEND',\r\n deviceActions: {\r\n sendClicked: true,\r\n },\r\n });\r\n };\r\n\r\n STPadServerLibDefault.handleCancelSignature = function () {\r\n // signature_cancel_send();\r\n sigpaddispatch({\r\n type: 'SETDEVICEACTION_CANCEL',\r\n deviceActions: {\r\n cancelClicked: true,\r\n },\r\n });\r\n };\r\n\r\n // STPadServerLibDefault.handleConfirmSelection = function () {\r\n // selection_confirm_send();\r\n // };\r\n\r\n // STPadServerLibDefault.handleSelectionChange = function (fieldId, fieldChecked) {\r\n // selection_change_send(fieldId, fieldChecked);\r\n // };\r\n\r\n // STPadServerLibDefault.handleCancelSelection = function () {\r\n // selection_cancel_send();\r\n // };\r\n\r\n STPadServerLibDefault.handleError = function (error_context, return_code, error_description) {\r\n error_send(error_context, return_code, error_description);\r\n };\r\n\r\n STPadServerLibApi.Sensor.handleHotSpotPressed = function (button) {\r\n api_sensor_hot_spot_pressed_send(button);\r\n };\r\n\r\n STPadServerLibApi.Sensor.handleDisplayScrollPosChanged = function (xPos, yPos) {\r\n api_display_scroll_pos_changed_send(xPos, yPos);\r\n };\r\n\r\n // disconnect send begin\r\n const disconnect_send = (index) => {\r\n const msg = 'The pad (index: ' + index + ') has been disconnected.';\r\n logMessage('disconnect_send: ' + msg);\r\n\r\n padState = padStates.closed;\r\n };\r\n // disconnect send end\r\n\r\n // signature point send begin\r\n const signature_point_send = (x, y, p) => {\r\n // const sigcanvas: HTMLCanvasElement = document.getElementById('signotecCanvas');\r\n if (sigpadstate.canvasRef) {\r\n const ctx = sigpadstate.canvasRef.current?.getContext('2d');\r\n if (ctx) {\r\n ctx.lineWidth = 4.5;\r\n ctx.lineCap = 'round';\r\n if (p == 0) {\r\n // drawStrokeStartPoint(ctx, x * scaleFactorX, y * scaleFactorY);\r\n drawStrokeStartPoint(\r\n ctx,\r\n x * sigpadstate.deviceData.scaleFactorX,\r\n y * sigpadstate.deviceData.scaleFactorY,\r\n );\r\n } else {\r\n // drawStrokePoint(ctx, x * scaleFactorX, y * scaleFactorY);\r\n drawStrokePoint(\r\n ctx,\r\n x * sigpadstate.deviceData.scaleFactorX,\r\n y * sigpadstate.deviceData.scaleFactorY,\r\n );\r\n }\r\n }\r\n }\r\n };\r\n // signature point send end\r\n\r\n /**\r\n * Draws a stroke start point into the canvas\r\n */\r\n function drawStrokeStartPoint(canvasContext, softCoordX, softCoordY) {\r\n // open new stroke's path\r\n canvasContext.beginPath();\r\n canvasContext.arc(softCoordX, softCoordY, 0.1, 0, 2 * Math.PI, true);\r\n canvasContext.fill();\r\n canvasContext.stroke();\r\n canvasContext.moveTo(softCoordX, softCoordY);\r\n }\r\n\r\n /**\r\n * Draws a stroke point into the canvas\r\n */\r\n function drawStrokePoint(canvasContext, softCoordX, softCoordY) {\r\n // continue after start or not start point\r\n canvasContext.lineTo(softCoordX, softCoordY);\r\n canvasContext.stroke();\r\n }\r\n\r\n // signature retry send begin\r\n const signature_retry_send = (canvRef?: any) => {\r\n let canvasRef: any = null;\r\n if (sigpadstate.canvasRef) {\r\n canvasRef = sigpadstate.canvasRef;\r\n } else if (canvRef) {\r\n canvasRef = canvRef;\r\n }\r\n\r\n if (canvasRef) {\r\n if (padMode == padModes.Default) {\r\n // default mode\r\n STPadServerLibDefault.retrySignature()\r\n .then(function () {\r\n const ctx = canvasRef.current?.getContext('2d');\r\n if (ctx) {\r\n if (canvasRef.current) {\r\n ctx.clearRect(0, 0, canvasRef.current.width, canvasRef.current.height);\r\n }\r\n }\r\n }, STPadServerLibCommons.defaultReject)\r\n .then(null, function (reason) {\r\n error_message(reason);\r\n default_close_pad();\r\n });\r\n } else if (padMode == padModes.API) {\r\n // API mode\r\n STPadServerLibApi.Signature.retry()\r\n .then(function () {\r\n const ctx = canvasRef.current?.getContext('2d');\r\n if (ctx) {\r\n if (canvasRef.current) {\r\n ctx.clearRect(0, 0, canvasRef.current.width, canvasRef.current.height);\r\n }\r\n }\r\n }, STPadServerLibCommons.defaultReject)\r\n .then(null, function (reason) {\r\n error_message(reason);\r\n api_close_pad();\r\n });\r\n } else {\r\n alert('invalid padMode');\r\n return;\r\n }\r\n }\r\n };\r\n // signature retry send end\r\n\r\n // signature confirm send begin\r\n const signature_confirm_send = () => {\r\n const sigData: ISigData = {\r\n certId: '',\r\n pictureData: '',\r\n rsaSignature: '',\r\n signData: '',\r\n signingCert: '',\r\n };\r\n\r\n if (padMode == padModes.Default) {\r\n // default mode\r\n STPadServerLibDefault.confirmSignature()\r\n .then(function (value) {\r\n // check if there are enough points for a valid signature\r\n if (value.countedPoints / sampleRate <= 0.2) {\r\n alert('The signature is too short. Please sign again!');\r\n return STPadServerLibDefault.retrySignature();\r\n }\r\n if (supportsRSA) {\r\n return STPadServerLibDefault.getSigningCert();\r\n } else {\r\n return value;\r\n }\r\n }, STPadServerLibCommons.defaultReject)\r\n .then(function (value) {\r\n if (value.command == 'TOKEN_CMD_SIGNATURE_RETRY') {\r\n const ctx = sigpadstate.canvasRef.current?.getContext('2d');\r\n if (ctx) {\r\n if (sigpadstate.canvasRef.current?.width && sigpadstate.canvasRef.current?.height) {\r\n ctx.clearRect(\r\n 0,\r\n 0,\r\n sigpadstate.canvasRef.current?.width,\r\n sigpadstate.canvasRef.current?.height,\r\n );\r\n }\r\n }\r\n\r\n return value;\r\n }\r\n if (supportsRSA) {\r\n if (value.signingCert !== undefined) {\r\n sigData.signingCert = value.signingCert; // NEEDED\r\n }\r\n }\r\n const getSignatureImageParams = new STPadServerLibDefault.Params.getSignatureImage();\r\n getSignatureImageParams.setFileType(STPadServerLibDefault.FileType.PNG);\r\n getSignatureImageParams.setPenWidth(5);\r\n return STPadServerLibDefault.getSignatureImage(getSignatureImageParams);\r\n }, STPadServerLibCommons.defaultReject)\r\n .then(function (value) {\r\n if (value.command == 'TOKEN_CMD_SIGNATURE_RETRY') {\r\n // just do nothing but returning original promise object\r\n return value;\r\n }\r\n if (value.file !== undefined) {\r\n const pictureData = 'data:image/png;base64,' + value.file; //NEEDED\r\n sigData.pictureData = pictureData;\r\n }\r\n const getSignatureDataParams = new STPadServerLibDefault.Params.getSignatureData();\r\n getSignatureDataParams.setRsaScheme(rsa_scheme);\r\n return STPadServerLibDefault.getSignatureData(getSignatureDataParams);\r\n }, STPadServerLibCommons.defaultReject)\r\n .then(function (value) {\r\n if (value.command == 'TOKEN_CMD_SIGNATURE_RETRY') {\r\n // just do nothing but returning original promise object\r\n return value;\r\n }\r\n if (supportsRSA) {\r\n if (value.certId !== undefined) {\r\n const certId = value.certId; //NEEDED\r\n sigData.certId = certId;\r\n }\r\n if (value.rsaSignature !== undefined) {\r\n const rsaSignature = value.rsaSignature; //NEEDED\r\n sigData.rsaSignature = rsaSignature;\r\n }\r\n }\r\n if (value.signData !== undefined) {\r\n const signData = value.signData; //NEEDED\r\n sigData.signData = signData;\r\n }\r\n default_close_pad();\r\n\r\n sigpaddispatch({\r\n type: 'SETSIGDATA',\r\n sigData: {\r\n ...sigData,\r\n },\r\n });\r\n }, STPadServerLibCommons.defaultReject)\r\n .then(null, function (reason) {\r\n error_message(reason);\r\n default_close_pad();\r\n });\r\n } else if (padMode == padModes.API) {\r\n // // API mode\r\n // STPadServerLibApi.Signature.confirm()\r\n // .then(function (value) {\r\n // // check if there are enough points for a valid signature\r\n // if (value.countedPoints / sampleRate <= 0.2) {\r\n // alert('The signature is too short. Please sign again!');\r\n // return STPadServerLibApi.Signature.retry();\r\n // }\r\n // const saveAsStreamExParams = new STPadServerLibApi.Signature.Params.saveAsStreamEx(\r\n // 300,\r\n // 0,\r\n // 0,\r\n // STPadServerLibApi.FileType.PNG,\r\n // 5,\r\n // document.getElementById('signaturePenColorSelect').value,\r\n // 0,\r\n // );\r\n // return STPadServerLibApi.Signature.saveAsStreamEx(saveAsStreamExParams);\r\n // }, STPadServerLibCommons.defaultReject)\r\n // .then(function (value) {\r\n // if (value.command == 'TOKEN_CMD_API_SIGNATURE_RETRY') {\r\n // const ctx = sigcanvas.getContext('2d');\r\n // ctx.clearRect(0, 0, sigcanvas.width, sigcanvas.height);\r\n // return value;\r\n // }\r\n // if (value.image !== undefined) {\r\n // document.getElementById('Signature_0').src = 'data:image/png;base64,' + value.image;\r\n // }\r\n // return STPadServerLibApi.Signature.getSignData();\r\n // }, STPadServerLibCommons.defaultReject)\r\n // .then(function (value) {\r\n // if (value.command == 'TOKEN_CMD_API_SIGNATURE_RETRY') {\r\n // // just do nothing but returning original promise object\r\n // return value;\r\n // }\r\n // if (value.signData !== undefined) {\r\n // document.getElementById('SignData_0').value = value.signData;\r\n // }\r\n // api_close_pad();\r\n // }, STPadServerLibCommons.defaultReject)\r\n // .then(\r\n // function (value) {},\r\n // function (reason) {\r\n // error_message(reason);\r\n // api_close_pad();\r\n // },\r\n // );\r\n } else {\r\n alert('invalid padMode');\r\n return;\r\n }\r\n };\r\n // signature confirm send end\r\n\r\n // signature cancel send begin\r\n const signature_cancel_send = () => {\r\n //TODO: do something with the points...\r\n //\r\n //\r\n // if (padMode == padModes.Default) {\r\n // // default mode\r\n // STPadServerLibDefault.cancelSignature()\r\n // .then(function (value) {\r\n // const ctx = sigcanvas.getContext('2d');\r\n // ctx.clearRect(0, 0, sigcanvas.width, sigcanvas.height);\r\n // default_close_pad();\r\n // }, STPadServerLibCommons.defaultReject)\r\n // .then(null, function (reason) {\r\n // error_message(reason);\r\n // default_close_pad();\r\n // });\r\n // } else if (padMode == padModes.API) {\r\n // // API mode\r\n // const cancelParams = new STPadServerLibApi.Signature.Params.cancel();\r\n // cancelParams.setErase(0);\r\n // STPadServerLibApi.Signature.cancel(cancelParams)\r\n // .then(function (value) {\r\n // const ctx = sigcanvas.getContext('2d');\r\n // ctx.clearRect(0, 0, sigcanvas.width, sigcanvas.height);\r\n // api_close_pad();\r\n // }, STPadServerLibCommons.defaultReject)\r\n // .then(\r\n // function (value) {},\r\n // function (reason) {\r\n // error_message(reason);\r\n // api_close_pad();\r\n // },\r\n // );\r\n // } else {\r\n // alert('invalid padMode');\r\n // return;\r\n // }\r\n };\r\n // signature cancel send end\r\n\r\n // selection confirm send begin\r\n // const selection_confirm_send = () => {\r\n\r\n // if (padMode == padModes.Default) {\r\n // // default mode\r\n // let status = '';\r\n // for (i = 1; i <= document.getElementById('check_boxes_selectedElements').value; i++) {\r\n // status += 'Feld ' + i + ' = ' + document.getElementById('fieldChecked' + i).checked + '\\n';\r\n // }\r\n // alert(status);\r\n // signature_start();\r\n // } else if (padMode == padModes.API) {\r\n // // API mode\r\n // // do nothing\r\n // } else {\r\n // alert('invalid padMode');\r\n // return;\r\n // }\r\n // };\r\n // selection confirm send end\r\n\r\n // selection change send begin\r\n // const selection_change_send = (fieldId, fieldChecked) => {\r\n\r\n // if (padMode == padModes.Default) {\r\n // // default mode\r\n // for (i = 1; i <= document.getElementById('check_boxes_selectedElements').value; i++) {\r\n // if (document.getElementById('fieldID' + i).value == fieldId) {\r\n // if (fieldChecked == 'TRUE') {\r\n // document.getElementById('fieldChecked' + i).checked = true;\r\n // } else {\r\n // document.getElementById('fieldChecked' + i).checked = false;\r\n // }\r\n // }\r\n // }\r\n // } else if (padMode == padModes.API) {\r\n // // API mode\r\n // // do nothing\r\n // } else {\r\n // alert('invalid padMode');\r\n // return;\r\n // }\r\n // };\r\n // selection change send end\r\n\r\n // selection cancel send begin\r\n // const selection_cancel_send = () => {\r\n\r\n // if (padMode == padModes.Default) {\r\n // // default mode\r\n // const ctx = sigcanvas.getContext('2d');\r\n // ctx.clearRect(0, 0, sigcanvas.width, sigcanvas.height);\r\n // STPadServerLibDefault.cancelSignature()\r\n // .then(function (value) {\r\n // default_close_pad();\r\n // }, STPadServerLibCommons.defaultReject)\r\n // .then(null, function (reason) {\r\n // error_message(reason);\r\n // default_close_pad();\r\n // });\r\n // } else if (padMode == padModes.API) {\r\n // // API mode\r\n // // do nothing\r\n // } else {\r\n // alert('invalid padMode');\r\n // return;\r\n // }\r\n // };\r\n // selection cancel send end\r\n\r\n // error send begin\r\n const error_send = (error_context, return_code, error_description) => {\r\n const ret = return_code;\r\n if (ret < 0) {\r\n logMessage('Failed to confirm the signature. Reason: ' + error_description + ', Context: ' + error_context);\r\n }\r\n };\r\n // error send end\r\n\r\n // api sensor hot spot pressed send begin\r\n const api_sensor_hot_spot_pressed_send = (button) => {\r\n switch (button) {\r\n // cancel signing process\r\n case cancelButton:\r\n signature_cancel_send();\r\n break;\r\n\r\n // restart signing process\r\n case retryButton:\r\n signature_retry_send();\r\n break;\r\n\r\n // confirm signing process\r\n case confirmButton:\r\n signature_confirm_send();\r\n break;\r\n\r\n default:\r\n alert('unknown button id: ' + button);\r\n }\r\n };\r\n // api sensor hot spot pressed send end\r\n\r\n // api display scroll pos changed send begin\r\n function api_display_scroll_pos_changed_send(xPos, yPos) {\r\n logMessage(xPos + ',' + yPos);\r\n }\r\n // api display scroll pos changed send end\r\n\r\n return {\r\n loadSignotec,\r\n unloadSignotec,\r\n clearSignotec,\r\n sendSignotec,\r\n };\r\n};\r\n","import { useCallback } from 'react';\r\nimport { ISignotec, useSignotecConnector } from './useSignotecConnector';\r\n\r\nexport const SignaturePadDeviceName = {\r\n SIGNOTEC_SIGMA: 'Sigma USB',\r\n SIGNOTEC_GAMMA: 'Gamma USB',\r\n};\r\n\r\nexport interface ISignaturePad {\r\n signotecProps: ISignotec;\r\n}\r\n\r\nexport const useSignaturePad = (props: ISignaturePad) => {\r\n const { loadSignotec, unloadSignotec, clearSignotec, sendSignotec } = useSignotecConnector(props.signotecProps);\r\n\r\n const loadSignaturePad = useCallback(() => {\r\n loadSignotec();\r\n }, []);\r\n\r\n const unloadSignaturePad = useCallback((deviceName: string) => {\r\n // if (\r\n // deviceName === SignaturePadDeviceName.SIGNOTEC_SIGMA ||\r\n // deviceName === SignaturePadDeviceName.SIGNOTEC_GAMMA\r\n // ) {\r\n // unloadSignotec();\r\n // }\r\n unloadSignotec();\r\n }, []);\r\n\r\n const clearSignaturePad = useCallback((deviceName: string, canvasRef: any) => {\r\n if (\r\n deviceName === SignaturePadDeviceName.SIGNOTEC_SIGMA ||\r\n deviceName === SignaturePadDeviceName.SIGNOTEC_GAMMA\r\n ) {\r\n clearSignotec(canvasRef);\r\n }\r\n }, []);\r\n\r\n const sendSignaturePad = useCallback((deviceName: string) => {\r\n if (\r\n deviceName === SignaturePadDeviceName.SIGNOTEC_SIGMA ||\r\n deviceName === SignaturePadDeviceName.SIGNOTEC_GAMMA\r\n ) {\r\n sendSignotec();\r\n }\r\n }, []);\r\n\r\n return {\r\n loadSignaturePad,\r\n unloadSignaturePad,\r\n clearSignaturePad,\r\n sendSignaturePad,\r\n };\r\n};\r\n","import * as React from 'react';\r\nimport { useContext, useEffect, useState } from 'react';\r\nimport Col from 'react-bootstrap/esm/Col';\r\nimport Container from 'react-bootstrap/esm/Container';\r\nimport Row from 'react-bootstrap/esm/Row';\r\nimport SigPadContext, { ISignaturePadDevice } from '../../context/sigpadContext';\r\nimport StyledButton from '../Buttons/StyledButton';\r\nimport { ParagraphFontSize, StyledParagraph } from '../StyledParagraph/StyledParagraph';\r\n\r\ninterface ISignaturePadSignotec {\r\n width: number;\r\n height: number;\r\n margin?: string;\r\n deviceData: ISignaturePadDevice;\r\n onClear: (canvasRef: any) => void; // callback when click on button Clear\r\n onCancel?: () => void; // callback when click on button Cancel\r\n onSign?: () => void; // callback when click on button Signieren\r\n}\r\n\r\nconst SignaturePadSignotec = (props: ISignaturePadSignotec) => {\r\n const { sigpaddispatch } = useContext(SigPadContext);\r\n\r\n const [divWidth, setDivWidth] = useState(700);\r\n const [divHeight, setDivHeight] = useState(300);\r\n const [signaturePadWidth, setSignaturePadWidth] = useState(690);\r\n const [signaturePadHeight, setSignaturePadHeight] = useState(240);\r\n\r\n const canvasSignotec = React.useRef(null);\r\n\r\n useEffect(() => {\r\n sigpaddispatch({\r\n type: 'SETCANVAS',\r\n canvasRef: canvasSignotec,\r\n });\r\n }, []);\r\n\r\n useEffect(() => {\r\n /* explicity set width and height override all other sizes */\r\n if (props.width && props.width > 0) {\r\n setDivWidth(props.width);\r\n setSignaturePadWidth(props.width - 10);\r\n }\r\n if (props.height && props.height > 0) {\r\n setDivHeight(props.height);\r\n setSignaturePadHeight(props.height - 120);\r\n }\r\n }, [props.width, props.height]);\r\n\r\n const onSignaturePadClear = (e: React.MouseEvent) => {\r\n if (e) {\r\n e.currentTarget.blur();\r\n }\r\n props.onClear(canvasSignotec);\r\n };\r\n\r\n return (\r\n \r\n
    \r\n \r\n deviceName: \r\n {props.deviceData.deviceName}\r\n
    \r\n
    \r\n
    \r\n {/* \r\n firmwareVersion: \r\n {props.deviceData.firmwareVersion}\r\n \r\n \r\n serialNumber: \r\n {props.deviceData.serialNumber}\r\n \r\n \r\n canStoreEncryptionKey: \r\n {props.deviceData.canStoreEncryptKey}\r\n \r\n \r\n supportsRSA: \r\n {props.deviceData.supportsRSA}\r\n \r\n \r\n padConnectionType: \r\n {props.deviceData.padConnectionType}\r\n \r\n \r\n padIndex: \r\n {props.deviceData.padIndex}\r\n */}\r\n
    \r\n \r\n Your browser does not support the HTML canvas tag.\r\n \r\n
    \r\n \r\n \r\n \r\n onSignaturePadClear(e)}>\r\n Löschen\r\n \r\n \r\n {props.onCancel !== undefined && (\r\n \r\n \r\n Abbrechen\r\n \r\n \r\n )}\r\n {props.onSign !== undefined && (\r\n \r\n Jetzt signieren\r\n \r\n )}\r\n \r\n \r\n
    \r\n );\r\n};\r\n\r\nexport default SignaturePadSignotec;\r\n","import { useContext, useEffect, useState } from 'react';\r\nimport Modal from 'react-bootstrap/Modal';\r\nimport styled from 'styled-components';\r\nimport SigPadContext, { ISigData } from '../../../context/sigpadContext';\r\nimport { ISignaturePad, SignaturePadDeviceName, useSignaturePad } from '../../../hooks/useSignaturePad';\r\nimport { ISignotec } from '../../../hooks/useSignotecConnector';\r\nimport { ISignPosData } from '../../../utils/documentUtils';\r\nimport StyledButton from '../../Buttons/StyledButton';\r\nimport { EmbeddedSignDocumentModalContainer } from '../../Div/StyledDiv';\r\nimport SignaturePad from '../../SignaturePad/SignaturePad';\r\nimport SignaturePadSignotec from '../../SignaturePad/SignaturePadSignotec';\r\n\r\nexport const ModalCst = styled(Modal)`\r\n .modal-dialog {\r\n max-width: 90%;\r\n max-height: 90%;\r\n width: 90%;\r\n height: 90%;\r\n margin: 1.75rem auto;\r\n margin-top: 100px;\r\n }\r\n .modal-content {\r\n border-radius: ${(prop) => (prop.borderRadius ? prop.borderRadius : prop.theme.modal.borderRadius)};\r\n box-shadow: ${(prop) => (prop.boxShadow ? prop.boxShadow : prop.theme.modal.boxShadow)};\r\n }\r\n`;\r\n\r\nexport interface ISignDocumentModalShow {\r\n show: boolean;\r\n}\r\n\r\nexport interface ISignDocumentModal {\r\n show: boolean;\r\n embedded: boolean;\r\n onSign(signData: ISigData): void;\r\n onCancel(): void;\r\n onClickClear?: () => void; // clear signature pad done\r\n clickSign?: boolean;\r\n clickClear?: boolean;\r\n signPosData?: ISignPosData;\r\n}\r\n\r\nconst SignDocumentModal = (props: ISignDocumentModal) => {\r\n const { sigpadstate, sigpaddispatch } = useContext(SigPadContext);\r\n\r\n const [mouseSignData, setMouseSignData] = useState({\r\n certId: '',\r\n pictureData: '',\r\n rsaSignature: '',\r\n signData: '',\r\n signingCert: '',\r\n });\r\n\r\n const [sendClicked, setSendClicked] = useState(false);\r\n\r\n const signotecProps: ISignotec = {\r\n wsUri: 'wss://local.signotecwebsocket.de:49494',\r\n };\r\n const signaturePadProps: ISignaturePad = { signotecProps: signotecProps };\r\n const { loadSignaturePad, unloadSignaturePad, clearSignaturePad, sendSignaturePad } =\r\n useSignaturePad(signaturePadProps);\r\n\r\n useEffect(() => {\r\n if (props.show) {\r\n loadSignaturePad();\r\n }\r\n\r\n return () => {\r\n unloadSignaturePad(sigpadstate.deviceData.deviceName);\r\n };\r\n }, [props.show]);\r\n\r\n useEffect(() => {\r\n if (sendClicked) {\r\n if (sigpadstate.sigData.pictureData && sigpadstate.sigData.pictureData.length > 0) {\r\n /* Signotec Sign Data */\r\n props.onSign(sigpadstate.sigData);\r\n setSendClicked(false);\r\n } else if (mouseSignData.pictureData && mouseSignData.pictureData.length > 0) {\r\n /* Default Mouse Sign Data*/\r\n props.onSign(mouseSignData);\r\n setSendClicked(false);\r\n }\r\n }\r\n }, [sigpadstate.sigData, mouseSignData, sendClicked]);\r\n\r\n /* ## DEVICE ACTIONS BEGIN ## */\r\n useEffect(() => {\r\n if (sigpadstate?.deviceActions?.sendClicked) {\r\n onSignatureSend();\r\n sigpaddispatch({\r\n type: 'RESETDEVICEACTIONS',\r\n });\r\n }\r\n if (sigpadstate?.deviceActions?.cancelClicked) {\r\n onSignatureCancel();\r\n sigpaddispatch({\r\n type: 'RESETDEVICEACTIONS',\r\n });\r\n }\r\n }, [sigpadstate.deviceActions]);\r\n\r\n /* ## DEVICE ACTIONS END ## */\r\n\r\n const SignaturePadComponent = () => {\r\n if (\r\n sigpadstate.deviceData.deviceName === SignaturePadDeviceName.SIGNOTEC_SIGMA ||\r\n sigpadstate.deviceData.deviceName === SignaturePadDeviceName.SIGNOTEC_GAMMA\r\n ) {\r\n /* Signotec Pad */\r\n return (\r\n \r\n );\r\n } else {\r\n /* withoutDevice - Standard SignaturePad to use with mouse */\r\n return (\r\n \r\n );\r\n }\r\n };\r\n\r\n const onSignaturePadWriteEnd = (sigData) => {\r\n setMouseSignData(sigData);\r\n };\r\n\r\n const onSignatureCancel = () => {\r\n unloadSignaturePad(sigpadstate.deviceData.deviceName);\r\n props.onCancel();\r\n };\r\n\r\n const onSignatureClear = (canvasRef: any) => {\r\n clearSignaturePad(sigpadstate.deviceData.deviceName, canvasRef);\r\n };\r\n\r\n const onSignatureSend = () => {\r\n sendSignaturePad(sigpadstate.deviceData.deviceName);\r\n setSendClicked(true);\r\n };\r\n\r\n return props.embedded && props.show ? (\r\n {SignaturePadComponent()}\r\n ) : (\r\n \r\n \r\n Signieren\r\n \r\n {SignaturePadComponent()}\r\n \r\n onSignatureCancel()}>\r\n Abbrechen\r\n \r\n onSignatureSend()}>\r\n Jetzt signieren\r\n \r\n \r\n \r\n );\r\n};\r\n\r\nexport default SignDocumentModal;\r\n","import { useContext, useEffect, useState } from 'react';\r\nimport { NavDropdown } from 'react-bootstrap';\r\nimport Col from 'react-bootstrap/Col';\r\nimport Container from 'react-bootstrap/Container';\r\nimport Nav from 'react-bootstrap/Nav';\r\nimport Row from 'react-bootstrap/Row';\r\nimport { IconBaseProps } from 'react-icons/lib';\r\nimport { Link } from 'react-router-dom';\r\nimport { ThemeContext } from 'styled-components';\r\nimport LoginContext from '../../context/loginContext';\r\nimport useScreenResolution from '../../hooks/useScreenResolution';\r\nimport { isMobile } from '../../utils/screenResolution';\r\nimport { CenterRow } from '../Rows/StyledRow';\r\n\r\ninterface ISidebarItem {\r\n route: string;\r\n label: string;\r\n icon: IconBaseProps;\r\n className?: string;\r\n forMoreMenu?: boolean;\r\n}\r\n\r\nconst SidebarItem = (props: ISidebarItem) => {\r\n const themeContext = useContext(ThemeContext);\r\n const { state } = useContext(LoginContext);\r\n const [isActive, setIsActive] = useState(false);\r\n\r\n const screenSize = useScreenResolution();\r\n\r\n useEffect(() => {\r\n if (state.activeSidebarItem === props.label || state.activeSidebarItem === props.route) {\r\n setIsActive(true);\r\n } else {\r\n setIsActive(false);\r\n }\r\n }, [state.activeSidebarItem]);\r\n\r\n if (isMobile(screenSize.width)) {\r\n if (props.forMoreMenu) {\r\n return (\r\n \r\n \r\n \r\n {props.icon}\r\n {props.label}\r\n \r\n \r\n \r\n );\r\n } else {\r\n return (\r\n \r\n \r\n \r\n {props.icon}\r\n \r\n \r\n {props.label}\r\n \r\n \r\n \r\n );\r\n }\r\n } else {\r\n return (\r\n \r\n \r\n \r\n \r\n
    {props.icon}
    \r\n \r\n \r\n {props.label}\r\n \r\n
    \r\n
    \r\n \r\n );\r\n }\r\n};\r\n\r\nexport default SidebarItem;\r\n","import { useContext, useEffect, useState } from 'react';\r\nimport { NavDropdown } from 'react-bootstrap';\r\nimport Nav from 'react-bootstrap/Nav';\r\nimport { FaChartPie, FaWeight } from 'react-icons/fa';\r\nimport { GiLiver } from 'react-icons/gi';\r\nimport { ImDroplet, ImTable } from 'react-icons/im';\r\nimport {\r\n RiBarChart2Line,\r\n RiCalendarCheckLine,\r\n RiCalendarEventLine,\r\n RiCameraLine,\r\n RiFileList2Line,\r\n RiFolder2Line,\r\n RiFootprintFill,\r\n RiGitMergeLine,\r\n RiHospitalLine,\r\n RiLiveLine,\r\n RiMenuFill,\r\n RiTaskLine,\r\n RiUserSearchFill,\r\n} from 'react-icons/ri';\r\nimport { useNavigate } from 'react-router-dom';\r\nimport { Paths } from '../../Routes';\r\nimport LoginContext from '../../context/loginContext';\r\nimport { securityItemNames } from '../../globals/global';\r\nimport useScreenResolution from '../../hooks/useScreenResolution';\r\nimport { useSecurityItems } from '../../hooks/useSecurityItems';\r\nimport { charts, tables } from '../../utils/chartUtils';\r\nimport { isMobile } from '../../utils/screenResolution';\r\nimport SidebarItem from '../SidebarItems/SidebarItem';\r\n\r\nconst SidebarItemList = () => {\r\n const navigate = useNavigate();\r\n const { state, dispatch } = useContext(LoginContext);\r\n const [itemOrderIsSet, setItemOrderIsSet] = useState(false);\r\n const {\r\n isPatListEnabled,\r\n isDokumenteEnabled,\r\n isTermineEnabled,\r\n isFotosEnabled,\r\n isMedikationEnabled,\r\n isTagesplanEnabled,\r\n isFragebogenEnabled,\r\n isVideochatEnabled,\r\n isChartsEnabled,\r\n isChartsWeightEnabled,\r\n isChartsBodyFatEnabled,\r\n isChartsBloodSugarEnabled,\r\n isChartsFLIEnabled,\r\n isChartsSAMEnabled,\r\n isChartsActivityEnabled,\r\n isTableVALEnabled,\r\n isJourneyEnabled,\r\n isTodoEnabled,\r\n getTabOrder,\r\n setActiveSidebarItem,\r\n } = useSecurityItems();\r\n\r\n const screenSize = useScreenResolution();\r\n\r\n useEffect(() => {\r\n if (!state.setOfInitPageDone) {\r\n dispatch({\r\n type: 'SETOFINITPAGEDONE',\r\n setOfInitPageDone: true,\r\n });\r\n if (isJourneyEnabled()) {\r\n setActiveSidebarItem(Paths.JOURNEY);\r\n navigate(Paths.JOURNEY);\r\n } else {\r\n const defaultPage = getDefaultPage();\r\n setActiveSidebarItem(defaultPage);\r\n navigate(defaultPage);\r\n }\r\n }\r\n }, [state.setOfInitPageDone]);\r\n\r\n const getDefaultPage = () => {\r\n /* Default Page when no TAB_ORDER from SecurityItems*/\r\n let route = Paths.DOKUMENTE;\r\n if (state.practitionerRoleId) {\r\n route = Paths.PATLIST;\r\n }\r\n const tabOrderFromSecurityItems = getTabOrder();\r\n if (tabOrderFromSecurityItems.length > 0) {\r\n /* first item from SecurityItems.TAB_ORDER is defaultPage */\r\n const firstItem = tabOrderFromSecurityItems[0];\r\n if (firstItem !== undefined && firstItem === securityItemNames.JOURNEY && isJourneyEnabled()) {\r\n route = Paths.JOURNEY;\r\n }\r\n if (firstItem !== undefined && firstItem === securityItemNames.PATLIST) {\r\n route = Paths.PATLIST;\r\n }\r\n if (firstItem !== undefined && firstItem === securityItemNames.DOKUMENT) {\r\n route = Paths.DOKUMENTE;\r\n }\r\n if (firstItem !== undefined && firstItem === securityItemNames.TERMINE) {\r\n route = Paths.TERMINE;\r\n }\r\n if (firstItem !== undefined && firstItem === securityItemNames.FOTOS) {\r\n route = Paths.FOTOS;\r\n }\r\n if (firstItem !== undefined && firstItem === securityItemNames.MEDIKATION) {\r\n route = Paths.MEDIKATION;\r\n }\r\n if (firstItem !== undefined && firstItem === securityItemNames.TAGESPLAN) {\r\n route = Paths.TAGESPLAN;\r\n }\r\n if (firstItem !== undefined && firstItem === securityItemNames.FRAGEBOGEN) {\r\n route = Paths.FRAGEBOGEN;\r\n }\r\n if (firstItem !== undefined && firstItem === securityItemNames.VIDEO) {\r\n route = Paths.VIDEOCHAT;\r\n }\r\n if (firstItem !== undefined && firstItem === securityItemNames.CHARTS) {\r\n route = Paths.CHARTS;\r\n }\r\n if (firstItem !== undefined && firstItem === securityItemNames.CHARTS_WEIGHT) {\r\n route = Paths.CHARTS_GEWICHT;\r\n }\r\n if (firstItem !== undefined && firstItem === securityItemNames.CHARTS_FATMASS) {\r\n route = Paths.CHARTS_FETTMASSE;\r\n }\r\n if (firstItem !== undefined && firstItem === securityItemNames.CHARTS_BLOODSUGAR) {\r\n route = Paths.CHARTS_BLUTZUCKER;\r\n }\r\n if (firstItem !== undefined && firstItem === securityItemNames.CHARTS_FLI) {\r\n route = Paths.CHARTS_FLI;\r\n }\r\n if (firstItem !== undefined && firstItem === securityItemNames.CHARTS_SAM) {\r\n route = Paths.CHARTS_SAM;\r\n }\r\n if (firstItem !== undefined && firstItem === securityItemNames.CHARTS_ACTIVITY) {\r\n route = Paths.CHARTS_ACTIVITY;\r\n }\r\n if (firstItem !== undefined && firstItem === securityItemNames.TABLE_VAL) {\r\n route = Paths.TABLE_VAL;\r\n }\r\n if (firstItem !== undefined && firstItem === securityItemNames.TODO) {\r\n route = Paths.TODO;\r\n }\r\n }\r\n\r\n return route;\r\n };\r\n\r\n const isPhysicanLoginWithoutSelectedPatient = () => {\r\n if (state.practitionerRoleId && (state.activePatient === undefined || state.activePatient.length <= 0)) {\r\n return true;\r\n }\r\n return false;\r\n };\r\n\r\n const showPatList = (forMoreMenu: boolean) => {\r\n if (isPatListEnabled()) {\r\n return (\r\n }\r\n forMoreMenu={forMoreMenu}\r\n >\r\n );\r\n } else {\r\n return null;\r\n }\r\n };\r\n\r\n const showDokumente = (forMoreMenu: boolean) => {\r\n if (isPhysicanLoginWithoutSelectedPatient()) {\r\n return null;\r\n }\r\n if (isDokumenteEnabled()) {\r\n return (\r\n }\r\n forMoreMenu={forMoreMenu}\r\n >\r\n );\r\n } else {\r\n return null;\r\n }\r\n };\r\n\r\n const showTermine = (forMoreMenu: boolean) => {\r\n if (isPhysicanLoginWithoutSelectedPatient()) {\r\n return null;\r\n }\r\n if (isTermineEnabled()) {\r\n return (\r\n }\r\n forMoreMenu={forMoreMenu}\r\n >\r\n );\r\n } else {\r\n return null;\r\n }\r\n };\r\n\r\n const showFotos = (forMoreMenu: boolean) => {\r\n if (isPhysicanLoginWithoutSelectedPatient()) {\r\n return null;\r\n }\r\n if (isFotosEnabled()) {\r\n return (\r\n }\r\n forMoreMenu={forMoreMenu}\r\n >\r\n );\r\n } else {\r\n return null;\r\n }\r\n };\r\n\r\n const showMedikation = (forMoreMenu: boolean) => {\r\n if (isPhysicanLoginWithoutSelectedPatient()) {\r\n return null;\r\n }\r\n if (isMedikationEnabled()) {\r\n return (\r\n }\r\n forMoreMenu={forMoreMenu}\r\n >\r\n );\r\n } else {\r\n return null;\r\n }\r\n };\r\n\r\n const showTagesplan = (forMoreMenu: boolean) => {\r\n if (isPhysicanLoginWithoutSelectedPatient()) {\r\n return null;\r\n }\r\n if (isTagesplanEnabled()) {\r\n return (\r\n }\r\n forMoreMenu={forMoreMenu}\r\n >\r\n );\r\n } else {\r\n return null;\r\n }\r\n };\r\n\r\n const showFragebogen = (forMoreMenu: boolean) => {\r\n if (isPhysicanLoginWithoutSelectedPatient()) {\r\n return null;\r\n }\r\n if (isFragebogenEnabled()) {\r\n return (\r\n }\r\n forMoreMenu={forMoreMenu}\r\n >\r\n );\r\n } else {\r\n return null;\r\n }\r\n };\r\n\r\n const showVideochat = (forMoreMenu: boolean) => {\r\n if (isPhysicanLoginWithoutSelectedPatient()) {\r\n return null;\r\n }\r\n if (isVideochatEnabled()) {\r\n return (\r\n }\r\n forMoreMenu={forMoreMenu}\r\n >\r\n );\r\n } else {\r\n return null;\r\n }\r\n };\r\n\r\n const showJourney = (forMoreMenu: boolean) => {\r\n if (isPhysicanLoginWithoutSelectedPatient()) {\r\n return null;\r\n }\r\n if (isJourneyEnabled()) {\r\n return (\r\n }\r\n forMoreMenu={forMoreMenu}\r\n >\r\n );\r\n } else {\r\n return null;\r\n }\r\n };\r\n\r\n const showCharts = (forMoreMenu: boolean) => {\r\n if (isPhysicanLoginWithoutSelectedPatient()) {\r\n return null;\r\n }\r\n if (isChartsEnabled()) {\r\n return (\r\n }\r\n forMoreMenu={forMoreMenu}\r\n >\r\n );\r\n } else {\r\n return null;\r\n }\r\n };\r\n\r\n const showChartWeight = (forMoreMenu: boolean) => {\r\n if (isPhysicanLoginWithoutSelectedPatient()) {\r\n return null;\r\n }\r\n if (isChartsWeightEnabled()) {\r\n return (\r\n
    \r\n }\r\n forMoreMenu={forMoreMenu}\r\n >\r\n
    \r\n );\r\n } else {\r\n return null;\r\n }\r\n };\r\n\r\n const showChartBodyFat = (forMoreMenu: boolean) => {\r\n if (isPhysicanLoginWithoutSelectedPatient()) {\r\n return null;\r\n }\r\n if (isChartsBodyFatEnabled()) {\r\n return (\r\n
    \r\n }\r\n forMoreMenu={forMoreMenu}\r\n >\r\n
    \r\n );\r\n } else {\r\n return null;\r\n }\r\n };\r\n\r\n const showChartBloodSugar = (forMoreMenu: boolean) => {\r\n if (isPhysicanLoginWithoutSelectedPatient()) {\r\n return null;\r\n }\r\n // if (true) {\r\n if (isChartsBloodSugarEnabled()) {\r\n return (\r\n
    \r\n }\r\n forMoreMenu={forMoreMenu}\r\n >\r\n
    \r\n );\r\n } else {\r\n return null;\r\n }\r\n };\r\n\r\n const showChartFLI = (forMoreMenu: boolean) => {\r\n if (isPhysicanLoginWithoutSelectedPatient()) {\r\n return null;\r\n }\r\n // if (true) {\r\n if (isChartsFLIEnabled()) {\r\n return (\r\n
    \r\n }\r\n forMoreMenu={forMoreMenu}\r\n >\r\n
    \r\n );\r\n } else {\r\n return null;\r\n }\r\n };\r\n\r\n const showChartSAM = (forMoreMenu: boolean) => {\r\n if (isPhysicanLoginWithoutSelectedPatient()) {\r\n return null;\r\n }\r\n // if (true) {\r\n if (isChartsSAMEnabled()) {\r\n return (\r\n
    \r\n }\r\n forMoreMenu={forMoreMenu}\r\n >\r\n
    \r\n );\r\n } else {\r\n return null;\r\n }\r\n };\r\n\r\n const showChartActivity = (forMoreMenu: boolean) => {\r\n if (isPhysicanLoginWithoutSelectedPatient()) {\r\n return null;\r\n }\r\n // if (true) {\r\n if (isChartsActivityEnabled()) {\r\n return (\r\n
    \r\n }\r\n forMoreMenu={forMoreMenu}\r\n >\r\n
    \r\n );\r\n } else {\r\n return null;\r\n }\r\n };\r\n\r\n const showTableVAL = (forMoreMenu: boolean) => {\r\n if (isPhysicanLoginWithoutSelectedPatient()) {\r\n return null;\r\n }\r\n // if (true) {\r\n if (isTableVALEnabled()) {\r\n return (\r\n
    \r\n }\r\n forMoreMenu={forMoreMenu}\r\n >\r\n
    \r\n );\r\n } else {\r\n return null;\r\n }\r\n };\r\n\r\n const showTodo = (forMoreMenu: boolean) => {\r\n if (isPhysicanLoginWithoutSelectedPatient()) {\r\n return null;\r\n }\r\n if (isTodoEnabled()) {\r\n return (\r\n <>\r\n }\r\n forMoreMenu={forMoreMenu}\r\n >\r\n \r\n );\r\n } else {\r\n return null;\r\n }\r\n };\r\n\r\n interface IOrderSidebarItems {\r\n securityItemName: string;\r\n item: any;\r\n forMoreMenu: boolean;\r\n }\r\n\r\n const orderSidebarItemsWorkflow = (startItemNr: number, tabOrderList: string[], maxSidebarItems: number) => {\r\n const allSidebarItems: IOrderSidebarItems[] = [];\r\n\r\n let itemNr = startItemNr;\r\n tabOrderList.forEach((tab) => {\r\n let forMoreMenu = false;\r\n\r\n if (maxSidebarItems > 0 && itemNr >= maxSidebarItems - 1) {\r\n forMoreMenu = true;\r\n }\r\n if (tab !== undefined && tab === securityItemNames.JOURNEY) {\r\n const journey = showJourney(forMoreMenu);\r\n if (journey) {\r\n itemNr++;\r\n allSidebarItems.push({\r\n securityItemName: securityItemNames.JOURNEY,\r\n item: journey,\r\n forMoreMenu: forMoreMenu,\r\n });\r\n }\r\n }\r\n if (tab !== undefined && tab === securityItemNames.PATLIST) {\r\n const patList = showPatList(forMoreMenu);\r\n if (patList) {\r\n itemNr++;\r\n allSidebarItems.push({\r\n securityItemName: securityItemNames.PATLIST,\r\n item: patList,\r\n forMoreMenu: forMoreMenu,\r\n });\r\n }\r\n }\r\n if (tab !== undefined && tab === securityItemNames.DOKUMENT) {\r\n const dokumente = showDokumente(forMoreMenu);\r\n if (dokumente) {\r\n itemNr++;\r\n allSidebarItems.push({\r\n securityItemName: securityItemNames.DOKUMENT,\r\n item: dokumente,\r\n forMoreMenu: forMoreMenu,\r\n });\r\n }\r\n }\r\n if (tab !== undefined && tab === securityItemNames.TERMINE) {\r\n const termine = showTermine(forMoreMenu);\r\n if (termine) {\r\n itemNr++;\r\n allSidebarItems.push({\r\n securityItemName: securityItemNames.TERMINE,\r\n item: termine,\r\n forMoreMenu: forMoreMenu,\r\n });\r\n }\r\n }\r\n if (tab !== undefined && tab === securityItemNames.FOTOS) {\r\n const fotos = showFotos(forMoreMenu);\r\n if (fotos) {\r\n itemNr++;\r\n allSidebarItems.push({\r\n securityItemName: securityItemNames.FOTOS,\r\n item: fotos,\r\n forMoreMenu: forMoreMenu,\r\n });\r\n }\r\n }\r\n if (tab !== undefined && tab === securityItemNames.MEDIKATION) {\r\n const medikation = showMedikation(forMoreMenu);\r\n if (medikation) {\r\n itemNr++;\r\n allSidebarItems.push({\r\n securityItemName: securityItemNames.MEDIKATION,\r\n item: medikation,\r\n forMoreMenu: forMoreMenu,\r\n });\r\n }\r\n }\r\n if (tab !== undefined && tab === securityItemNames.TAGESPLAN) {\r\n const tagesplan = showTagesplan(forMoreMenu);\r\n if (tagesplan) {\r\n itemNr++;\r\n allSidebarItems.push({\r\n securityItemName: securityItemNames.TAGESPLAN,\r\n item: tagesplan,\r\n forMoreMenu: forMoreMenu,\r\n });\r\n }\r\n }\r\n if (tab !== undefined && tab === securityItemNames.FRAGEBOGEN) {\r\n const fragebogen = showFragebogen(forMoreMenu);\r\n if (fragebogen) {\r\n itemNr++;\r\n allSidebarItems.push({\r\n securityItemName: securityItemNames.FRAGEBOGEN,\r\n item: fragebogen,\r\n forMoreMenu: forMoreMenu,\r\n });\r\n }\r\n }\r\n if (tab !== undefined && tab === securityItemNames.VIDEO) {\r\n const videochat = showVideochat(forMoreMenu);\r\n if (videochat) {\r\n itemNr++;\r\n allSidebarItems.push({\r\n securityItemName: securityItemNames.VIDEO,\r\n item: videochat,\r\n forMoreMenu: forMoreMenu,\r\n });\r\n }\r\n }\r\n if (tab !== undefined && tab === securityItemNames.CHARTS) {\r\n const charts = showCharts(forMoreMenu);\r\n if (charts) {\r\n itemNr++;\r\n allSidebarItems.push({\r\n securityItemName: securityItemNames.CHARTS,\r\n item: charts,\r\n forMoreMenu: forMoreMenu,\r\n });\r\n }\r\n }\r\n if (tab !== undefined && tab === securityItemNames.CHARTS_WEIGHT) {\r\n const chartWeight = showChartWeight(forMoreMenu);\r\n if (chartWeight) {\r\n itemNr++;\r\n allSidebarItems.push({\r\n securityItemName: securityItemNames.CHARTS_WEIGHT,\r\n item: chartWeight,\r\n forMoreMenu: forMoreMenu,\r\n });\r\n }\r\n }\r\n if (tab !== undefined && tab === securityItemNames.CHARTS_FATMASS) {\r\n const chartBodyFat = showChartBodyFat(forMoreMenu);\r\n if (chartBodyFat) {\r\n itemNr++;\r\n allSidebarItems.push({\r\n securityItemName: securityItemNames.CHARTS_FATMASS,\r\n item: chartBodyFat,\r\n forMoreMenu: forMoreMenu,\r\n });\r\n }\r\n }\r\n if (tab !== undefined && tab === securityItemNames.CHARTS_BLOODSUGAR) {\r\n const chartBloodSugar = showChartBloodSugar(forMoreMenu);\r\n if (chartBloodSugar) {\r\n itemNr++;\r\n allSidebarItems.push({\r\n securityItemName: securityItemNames.CHARTS_BLOODSUGAR,\r\n item: chartBloodSugar,\r\n forMoreMenu: forMoreMenu,\r\n });\r\n }\r\n }\r\n if (tab !== undefined && tab === securityItemNames.CHARTS_FLI) {\r\n const chartFLI = showChartFLI(forMoreMenu);\r\n if (chartFLI) {\r\n itemNr++;\r\n allSidebarItems.push({\r\n securityItemName: securityItemNames.CHARTS_FLI,\r\n item: chartFLI,\r\n forMoreMenu: forMoreMenu,\r\n });\r\n }\r\n }\r\n if (tab !== undefined && tab === securityItemNames.CHARTS_SAM) {\r\n const chartSAM = showChartSAM(forMoreMenu);\r\n if (chartSAM) {\r\n itemNr++;\r\n allSidebarItems.push({\r\n securityItemName: securityItemNames.CHARTS_SAM,\r\n item: chartSAM,\r\n forMoreMenu: forMoreMenu,\r\n });\r\n }\r\n }\r\n if (tab !== undefined && tab === securityItemNames.CHARTS_ACTIVITY) {\r\n const chartActivity = showChartActivity(forMoreMenu);\r\n if (chartActivity) {\r\n itemNr++;\r\n allSidebarItems.push({\r\n securityItemName: securityItemNames.CHARTS_ACTIVITY,\r\n item: chartActivity,\r\n forMoreMenu: forMoreMenu,\r\n });\r\n }\r\n }\r\n if (tab !== undefined && tab === securityItemNames.TABLE_VAL) {\r\n const tableVAL = showTableVAL(forMoreMenu);\r\n if (tableVAL) {\r\n itemNr++;\r\n allSidebarItems.push({\r\n securityItemName: securityItemNames.TABLE_VAL,\r\n item: tableVAL,\r\n forMoreMenu: forMoreMenu,\r\n });\r\n }\r\n }\r\n if (tab !== undefined && tab === securityItemNames.TODO) {\r\n const todo = showTodo(forMoreMenu);\r\n if (todo) {\r\n itemNr++;\r\n allSidebarItems.push({\r\n securityItemName: securityItemNames.TODO,\r\n item: todo,\r\n forMoreMenu: forMoreMenu,\r\n });\r\n }\r\n }\r\n });\r\n\r\n return allSidebarItems;\r\n };\r\n\r\n const orderedSidebarItems = (maxSidebarItems: number) => {\r\n /* INFO: the defaultPage (first page after login) is defined in getDefaultPage() */\r\n\r\n const allSidebarItems: any[] = [];\r\n const allSidebarMoreMenuItems: any[] = [];\r\n const allSidebarItemNames: string[] = [];\r\n\r\n const defaultTabOrder = [\r\n securityItemNames.JOURNEY,\r\n securityItemNames.PATLIST,\r\n securityItemNames.DOKUMENT,\r\n securityItemNames.TERMINE,\r\n securityItemNames.FOTOS,\r\n securityItemNames.MEDIKATION,\r\n securityItemNames.TAGESPLAN,\r\n securityItemNames.FRAGEBOGEN,\r\n securityItemNames.VIDEO,\r\n securityItemNames.CHARTS,\r\n securityItemNames.CHARTS_WEIGHT,\r\n securityItemNames.CHARTS_FATMASS,\r\n securityItemNames.CHARTS_BLOODSUGAR,\r\n securityItemNames.CHARTS_SAM,\r\n securityItemNames.CHARTS_FLI,\r\n securityItemNames.CHARTS_ACTIVITY,\r\n securityItemNames.TABLE_VAL,\r\n securityItemNames.TODO,\r\n ];\r\n\r\n const tabOrderFromSecurityItems = getTabOrder();\r\n let doTabOrderFromSecItems = false;\r\n if (tabOrderFromSecurityItems.length > 0) {\r\n /* ORDER FROM SECURITY ITEMS */\r\n doTabOrderFromSecItems = true;\r\n tabOrderFromSecurityItems.forEach((tab) => {\r\n /* delete from the default list */\r\n delete defaultTabOrder[defaultTabOrder.indexOf(tab)];\r\n });\r\n }\r\n\r\n /* ORDER FROM SECURITY ITEMS */\r\n if (doTabOrderFromSecItems) {\r\n const orderedSidebarItemsSecItems = orderSidebarItemsWorkflow(\r\n 0,\r\n tabOrderFromSecurityItems,\r\n maxSidebarItems,\r\n );\r\n\r\n orderedSidebarItemsSecItems.forEach((e) => {\r\n if (e.forMoreMenu) {\r\n allSidebarMoreMenuItems.push(e.item);\r\n } else {\r\n allSidebarItems.push(e.item);\r\n }\r\n\r\n allSidebarItemNames.push(e.securityItemName);\r\n });\r\n\r\n // allSidebarItems.push(orderSidebarItemsWorkflow(tabOrderFromSecurityItems));\r\n }\r\n\r\n /* REST FROM DEFAULT LIST */\r\n const orderedSidebarItemsDefault = orderSidebarItemsWorkflow(\r\n allSidebarItems.length,\r\n defaultTabOrder,\r\n maxSidebarItems,\r\n );\r\n orderedSidebarItemsDefault.forEach((e) => {\r\n if (e.forMoreMenu) {\r\n allSidebarMoreMenuItems.push(e.item);\r\n } else {\r\n allSidebarItems.push(e.item);\r\n }\r\n allSidebarItemNames.push(e.securityItemName);\r\n });\r\n // allSidebarItems.push(orderSidebarItemsWorkflow(defaultTabOrder));\r\n\r\n if (!itemOrderIsSet) {\r\n dispatch({\r\n type: 'SETFINALSECURITYITEMSORDER',\r\n finalSecurityItemsOrder: allSidebarItemNames,\r\n });\r\n setItemOrderIsSet(true);\r\n }\r\n\r\n if (allSidebarMoreMenuItems.length > 0) {\r\n const dropdown = (\r\n }\r\n id=\"moreMenu-collasible-nav-dropdown\"\r\n drop=\"up\"\r\n alignRight\r\n >\r\n {allSidebarMoreMenuItems}\r\n \r\n );\r\n\r\n allSidebarItems.push(dropdown);\r\n }\r\n\r\n return allSidebarItems;\r\n };\r\n\r\n const handleSidebarItemClick = (eventKey) => {\r\n setActiveSidebarItem(eventKey);\r\n };\r\n\r\n const getMaxSidebarItems = () => {\r\n let maxSidebarItems = 0;\r\n\r\n if (isMobile(screenSize.width)) {\r\n if (screenSize.width < 295) {\r\n maxSidebarItems = 3;\r\n } else if (screenSize.width < 354) {\r\n maxSidebarItems = 4;\r\n } else if (screenSize.width < 490) {\r\n maxSidebarItems = 5;\r\n } else if (screenSize.width < 620) {\r\n maxSidebarItems = 6;\r\n } else if (screenSize.width < 720) {\r\n maxSidebarItems = 7;\r\n } else {\r\n maxSidebarItems = 8;\r\n }\r\n }\r\n\r\n return maxSidebarItems;\r\n };\r\n\r\n return (\r\n <>\r\n
    \r\n \r\n {/* }> */}\r\n {orderedSidebarItems(getMaxSidebarItems())}\r\n \r\n
    \r\n \r\n );\r\n};\r\n\r\nexport default SidebarItemList;\r\n","import { useMediaQuery } from 'react-responsive';\r\n\r\n/* Custom Screen Sizes */\r\nconst desktopMin = 1025;\r\nconst tabletMin = 768;\r\nconst tabletMax = 1024;\r\nconst mobileMax = 767;\r\nconst defaultMin = 768;\r\n\r\nexport const isDesktop = (screenWidth: number) => {\r\n if (screenWidth >= desktopMin) {\r\n return true;\r\n }\r\n return false;\r\n};\r\n\r\nexport const Desktop = ({ children }: any) => {\r\n const isDesktop = useMediaQuery({ minWidth: desktopMin });\r\n return isDesktop ? children : null;\r\n};\r\n\r\nexport const isTablet = (screenWidth: number) => {\r\n if (screenWidth >= tabletMin && screenWidth <= tabletMax) {\r\n return true;\r\n }\r\n return false;\r\n};\r\n\r\nexport const Tablet = ({ children }: any) => {\r\n const isTablet = useMediaQuery({ minWidth: tabletMin, maxWidth: tabletMax });\r\n return isTablet ? children : null;\r\n};\r\n\r\nexport const isMobile = (screenWidth: number) => {\r\n if (screenWidth <= mobileMax) {\r\n return true;\r\n }\r\n return false;\r\n};\r\n\r\nexport const Mobile = ({ children }: any) => {\r\n const isMobile = useMediaQuery({ maxWidth: mobileMax });\r\n return isMobile ? children : null;\r\n};\r\n\r\nexport const isDefault = (screenWidth: number) => {\r\n if (screenWidth >= defaultMin) {\r\n return true;\r\n }\r\n return false;\r\n};\r\n\r\nexport const Default = ({ children }: any) => {\r\n const isNotMobile = useMediaQuery({ minWidth: defaultMin });\r\n return isNotMobile ? children : null;\r\n};\r\n\r\n/* Bootstrap Screen Sizes */\r\nexport const isBootstrap_lg = (screenWidth: number) => {\r\n if (screenWidth >= 992) {\r\n return true;\r\n }\r\n return false;\r\n};\r\n\r\nexport const isBootstrap_md = (screenWidth: number) => {\r\n if (screenWidth >= 768) {\r\n return true;\r\n }\r\n return false;\r\n};\r\n\r\nexport const isBootstrap_sm = (screenWidth: number) => {\r\n if (screenWidth >= 576) {\r\n return true;\r\n }\r\n return false;\r\n};\r\n\r\nexport const isBootstrap_xl = (screenWidth: number) => {\r\n if (screenWidth >= 1200) {\r\n return true;\r\n }\r\n return false;\r\n};\r\n\r\nexport const isBootstrap_xs = (screenWidth: number) => {\r\n if (screenWidth < 576) {\r\n return true;\r\n }\r\n return false;\r\n};\r\n\r\nexport const isBootstrap_xxl = (screenWidth: number) => {\r\n if (screenWidth >= 1400) {\r\n return true;\r\n }\r\n return false;\r\n};\r\n","import { AlertOnHide, AlertType } from '../context/alertContext';\r\n\r\nexport interface IAlertMessageWithoutDispatch {\r\n alertTitle: string;\r\n alertTxt: string;\r\n alertType: AlertType;\r\n onHide: AlertOnHide;\r\n onHideCustom?: any;\r\n buttonName?: string;\r\n}\r\nexport interface IAlertMessage extends IAlertMessageWithoutDispatch {\r\n alertdispatch: React.Dispatch;\r\n}\r\n\r\nexport const showAlertMessage = (props: IAlertMessage) => {\r\n props.alertdispatch({\r\n type: 'SETSHOWALERTMESSAGE',\r\n alertMessage: {\r\n showModal: true,\r\n alertTitle: props.alertTitle,\r\n alertTxt: props.alertTxt,\r\n alertType: props.alertType,\r\n onHide: props.onHide,\r\n onHideCustom: props.onHideCustom,\r\n buttonName: props.buttonName ? props.buttonName : 'OK',\r\n },\r\n });\r\n};\r\n\r\nexport const resetShowAlertMessage = (alertdispatch: any) => {\r\n alertdispatch({\r\n type: 'RESETSHOWALERTMESSAGE',\r\n });\r\n};\r\n","import { makeStyles, Step, StepButton, StepLabel, Stepper } from '@material-ui/core';\r\nimport { useEffect, useState } from 'react';\r\nimport OverlayTrigger from 'react-bootstrap/esm/OverlayTrigger';\r\nimport Tooltip from 'react-bootstrap/esm/Tooltip';\r\nimport { IQuestionnaireWL } from '../../container/Fragebogen/QuestionnaireWL';\r\nimport { pcpTheme } from '../../globals/theme';\r\nimport './Stepper.css';\r\nimport useScreenResolution from '../../hooks/useScreenResolution';\r\nimport { BsStackOverflow } from 'react-icons/bs';\r\nimport { MdVisibility } from 'react-icons/md';\r\n\r\nexport enum StepperOrientation {\r\n Horizontal,\r\n Vertical,\r\n}\r\n\r\nexport enum StepperLabelOrientation {\r\n Right,\r\n Bottom,\r\n}\r\n\r\nexport enum StepTyp {\r\n Normal = 'NORMAL',\r\n Journey = 'JOURNEY',\r\n}\r\n\r\nexport interface IStepperCheckInStep {\r\n id: string;\r\n name: string;\r\n typ: StepTyp;\r\n completed: boolean;\r\n draft: boolean;\r\n active: boolean;\r\n clickable: boolean;\r\n url?: string;\r\n hashParams?: IQuestionnaireWL;\r\n}\r\n\r\nexport interface IStepperCheckIn {\r\n steps: IStepperCheckInStep[];\r\n backgroundColor?: string;\r\n handleStepClick(stepNumberClicked: number): void;\r\n stepperOrientation: StepperOrientation;\r\n labelOrientation: StepperLabelOrientation;\r\n paddingTop?: number | string;\r\n paddingBottom?: number | string;\r\n}\r\n\r\nconst useStyles = makeStyles({\r\n root: {\r\n '& .MuiStepIcon-root': { color: 'gray' },\r\n '& .MuiStepIcon-completed': { color: pcpTheme.step.completed + ' !important' },\r\n '& .MuiStepIcon-active': { color: pcpTheme.step.active + ' !important' } /*{ color: 'rgb(36, 94, 173)' },*/,\r\n '& .Mui-disabled .MuiStepIcon-root': { color: '#bab9b9 !important' },\r\n // '& .MuiStepLabel-alternativeLabel': { marginTop: '10px', marginBottom: '30px', color: 'white', width: '100%' },\r\n '& .MuiStep-alternativeLabel': { overflow: 'clip', minWidth: '0px', overflowClipMargin: 'content-box 500px' },\r\n '& .MuiStepLabel-alternativeLabel': { overflow: 'hidden' },\r\n '& .MuiStepLabel-label': {\r\n color: 'black',\r\n textAlign: 'left',\r\n whiteSpace: 'nowrap',\r\n textOverflow: 'ellipsis',\r\n overflow: 'hidden',\r\n },\r\n '& .MuiStepLabel-active .MuiStepLabel-label': {\r\n fontWeight: '530',\r\n },\r\n '& .MuiStepConnector-lineVertical': { minHeight: '60px' },\r\n '& .MuiStepConnector-horizontal': { visibility: 'visible', position: 'absolute' },\r\n '& .MuiStepConnector-lineHorizontal': { visibility: 'visible !important', position: 'static' },\r\n },\r\n stepButtonDraft: {\r\n '& .MuiStepIcon-root': { color: '#0080009c' },\r\n },\r\n});\r\n// const useStyles = makeStyles({\r\n// root: {\r\n// '& .MuiStepIcon-root': { color: 'gray' },\r\n// '& .MuiStepIcon-completed': { color: pcpTheme.step.completed + ' !important' },\r\n// '& .MuiStepIcon-active': { color: pcpTheme.step.active + ' !important' } /*{ color: 'rgb(36, 94, 173)' },*/,\r\n// '& .Mui-disabled .MuiStepIcon-root': { color: '#bab9b9 !important' },\r\n// '& .MuiStepLabel-alternativeLabel': { marginTop: '10px', marginBottom: '30px', color: 'white', width: '100%' },\r\n// '& .MuiStepLabel-label': { color: 'white', width: '100%', textAlign: 'left' },\r\n// '& .MuiStepConnector-lineVertical': { minHeight: '60px' },\r\n// },\r\n// stepButtonDraft: {\r\n// '& .MuiStepIcon-root': { color: '#0080009c' },\r\n// },\r\n// });\r\n\r\nconst StepperCheckIn = (props: IStepperCheckIn) => {\r\n const classes = useStyles();\r\n\r\n const [activeStep, setActiveStep] = useState(0);\r\n const [completed, setCompleted] = useState({});\r\n const [steps, setSteps] = useState([\r\n {\r\n id: '',\r\n name: '',\r\n typ: StepTyp.Normal,\r\n completed: false,\r\n draft: false,\r\n active: false,\r\n clickable: false,\r\n url: '',\r\n },\r\n ]);\r\n\r\n const screenSize = useScreenResolution();\r\n\r\n // const steps = ['Select campaign settings', 'Create an ad group', 'Create an ad'];\r\n\r\n const haveStepsChanged = () => {\r\n let isSame = false;\r\n let currentSteps;\r\n let newSteps;\r\n\r\n if (props.steps) {\r\n currentSteps = steps.map((step) => step.id);\r\n newSteps = props.steps.map((step) => step.id);\r\n }\r\n\r\n isSame =\r\n currentSteps.length === newSteps.length && currentSteps.every((value, index) => value === newSteps[index]);\r\n return !isSame;\r\n };\r\n\r\n useEffect(() => {\r\n let newCompleted = completed;\r\n let activeIndex = 0;\r\n\r\n if (props.steps) {\r\n if (haveStepsChanged()) {\r\n newCompleted = {};\r\n setActiveStep(0);\r\n }\r\n if (props.steps.length > 0) {\r\n props.steps.forEach((step, index) => {\r\n if (step.active) {\r\n activeIndex = index;\r\n }\r\n if (step.completed) {\r\n newCompleted[index] = true;\r\n }\r\n });\r\n }\r\n setCompleted(newCompleted);\r\n setActiveStep(activeIndex);\r\n\r\n setSteps(props.steps);\r\n }\r\n }, [props.steps]);\r\n\r\n const totalSteps = () => {\r\n return steps.length;\r\n };\r\n\r\n const completedSteps = () => {\r\n return Object.keys(completed).length;\r\n };\r\n\r\n const allStepsCompleted = () => {\r\n return completedSteps() === totalSteps();\r\n };\r\n\r\n const handleStep = (step) => () => {\r\n setActiveStep(step);\r\n props.handleStepClick(step);\r\n };\r\n\r\n // const handleComplete = () => {\r\n // const newCompleted = completed;\r\n // newCompleted[activeStep] = true;\r\n // setCompleted(newCompleted);\r\n // };\r\n\r\n const getTooltipText = (isCompleted: boolean, isDraft: boolean) => {\r\n let text = 'noch offen';\r\n if (isCompleted) {\r\n text = 'abgeschlossen';\r\n } else if (isDraft) {\r\n text = 'zwischengespeichert';\r\n }\r\n return text;\r\n };\r\n\r\n const getStepperOrientation = () => {\r\n if (props.stepperOrientation === StepperOrientation.Vertical) {\r\n return 'vertical';\r\n } else {\r\n return 'horizontal';\r\n }\r\n };\r\n\r\n const getStepperLabelOrientation = () => {\r\n if (props.labelOrientation === StepperLabelOrientation.Right) {\r\n return false;\r\n } else {\r\n return true;\r\n }\r\n };\r\n\r\n return (\r\n <>\r\n \r\n {steps.map((label, index) => (\r\n \r\n \r\n \r\n {getTooltipText(completed[index], label.draft)}\r\n \r\n }\r\n >\r\n {label.name}\r\n \r\n \r\n \r\n ))}\r\n \r\n
    {allStepsCompleted() ? <>{/*

    Alles erledigt

    */} : <>}
    \r\n \r\n );\r\n};\r\n\r\nexport default StepperCheckIn;\r\n","import { createContext } from 'react';\r\nimport { ILink } from './loginContext';\r\n\r\nexport interface IRegistrationFields {\r\n birthDate: boolean;\r\n city: boolean;\r\n country: boolean;\r\n email: boolean;\r\n firstName: boolean;\r\n gender: boolean;\r\n lastName: boolean;\r\n phone: boolean;\r\n street: boolean;\r\n zip: boolean;\r\n insuranceNr: boolean;\r\n mobilePhone: boolean;\r\n academicTitle: boolean;\r\n insuranceName: boolean;\r\n language: boolean;\r\n privacyTerms: boolean;\r\n}\r\n\r\nexport interface IAppointmentSummary {\r\n behandler: boolean;\r\n fach: boolean;\r\n pflege: boolean;\r\n raum: boolean;\r\n standort: boolean;\r\n}\r\n\r\nexport interface IAppointmentGeneral {\r\n skipBehandlersuche?: boolean;\r\n}\r\n\r\nexport interface ICustomTexts {\r\n CredentialsLost: string;\r\n}\r\n\r\nexport interface IImpressum {\r\n impressumLink: string;\r\n datenschutzLink: string;\r\n}\r\n\r\nexport interface IAnmeldeContexts {\r\n code: string;\r\n name: string;\r\n}\r\n\r\nexport type InitialAppPropsType = {\r\n appPropsSet: boolean;\r\n Appointment?: IAppointmentGeneral;\r\n AppointmentSummary: IAppointmentSummary;\r\n RegistrationMandFields: IRegistrationFields;\r\n RegistrationVisibleFields: IRegistrationFields;\r\n RegistrationReadOnlyFields: IRegistrationFields;\r\n allowAccountAfterAppointment: boolean;\r\n allowAccountCreateDirect: boolean;\r\n allowAppointments: boolean;\r\n allowAppointmentsWithoutLogin: boolean;\r\n allowDirectAppointments: boolean;\r\n allowDirectAppointmentsWithoutLogin: boolean;\r\n allowLogin: boolean;\r\n allowVideo: boolean;\r\n allowVideoWithoutLogin: boolean;\r\n allowAccountInAnmeldeworkflow: boolean;\r\n brandingBytes: string;\r\n brandigType: string;\r\n extraLinks: Array;\r\n customTexts: ICustomTexts;\r\n showMobileQR: boolean;\r\n jitsiDomain: string;\r\n jitsiOptions: any;\r\n impressum: IImpressum;\r\n anmeldeContexts: Array;\r\n countDaysToVisualize?: number;\r\n extendedPhysicians: boolean;\r\n allowChat: boolean;\r\n fullscreenMode: boolean;\r\n googleAnalyticsID?: string;\r\n};\r\n\r\nexport const InitialAppPropsState = {\r\n appPropsSet: false,\r\n Appointment: {\r\n skipBehandlersuche: false,\r\n },\r\n AppointmentSummary: {\r\n behandler: true,\r\n fach: true,\r\n pflege: true,\r\n raum: true,\r\n standort: true,\r\n },\r\n RegistrationMandFields: {\r\n birthDate: false,\r\n city: false,\r\n country: false,\r\n email: true,\r\n firstName: true,\r\n gender: false,\r\n lastName: true,\r\n phone: false,\r\n street: false,\r\n zip: false,\r\n insuranceNr: false,\r\n mobilePhone: false,\r\n academicTitle: false,\r\n insuranceName: false,\r\n language: false,\r\n privacyTerms: false,\r\n },\r\n RegistrationVisibleFields: {\r\n birthDate: true,\r\n city: true,\r\n country: true,\r\n email: true,\r\n firstName: true,\r\n gender: true,\r\n lastName: true,\r\n phone: true,\r\n street: true,\r\n zip: true,\r\n insuranceNr: false,\r\n mobilePhone: true,\r\n academicTitle: true,\r\n insuranceName: true,\r\n language: true,\r\n privacyTerms: false,\r\n },\r\n RegistrationReadOnlyFields: {\r\n birthDate: false,\r\n city: false,\r\n country: false,\r\n email: false,\r\n firstName: false,\r\n gender: false,\r\n lastName: false,\r\n phone: false,\r\n street: false,\r\n zip: false,\r\n insuranceNr: false,\r\n mobilePhone: false,\r\n academicTitle: false,\r\n insuranceName: false,\r\n language: false,\r\n privacyTerms: false,\r\n },\r\n allowAccountAfterAppointment: false,\r\n allowAccountCreateDirect: false,\r\n allowAppointments: false,\r\n allowAppointmentsWithoutLogin: false,\r\n allowDirectAppointments: false,\r\n allowDirectAppointmentsWithoutLogin: false,\r\n allowLogin: false,\r\n allowVideo: false,\r\n allowVideoWithoutLogin: false,\r\n allowAccountInAnmeldeworkflow: true,\r\n brandingBytes: '',\r\n brandigType: '',\r\n extraLinks: [],\r\n customTexts: {\r\n CredentialsLost: '',\r\n },\r\n showMobileQR: true,\r\n jitsiDomain: '',\r\n jitsiOptions: null,\r\n impressum: {\r\n impressumLink: '',\r\n datenschutzLink: '',\r\n },\r\n anmeldeContexts: [],\r\n countDaysToVisualize: 0,\r\n extendedPhysicians: false,\r\n allowChat: false,\r\n fullscreenMode: false,\r\n googleAnalyticsID: '',\r\n};\r\n\r\nconst AppPropsContext = createContext<{\r\n apstate: InitialAppPropsType;\r\n apdispatch: React.Dispatch;\r\n}>({\r\n apstate: InitialAppPropsState,\r\n apdispatch: () => null,\r\n});\r\n\r\nexport default AppPropsContext;\r\n","import { useContext } from 'react';\r\nimport FormControl from 'react-bootstrap/FormControl';\r\nimport InputGroup from 'react-bootstrap/InputGroup';\r\nimport TerminierungContext from '../../context/terminierungContext';\r\n\r\ninterface IRemarkInputField {\r\n groupText?: string;\r\n}\r\n\r\nconst RemarkInputField = (props: IRemarkInputField) => {\r\n const { tmstate, tmdispatch } = useContext(TerminierungContext);\r\n\r\n const setRemark = (value: string) => {\r\n tmdispatch({\r\n type: 'SETREMARK',\r\n remark: value,\r\n });\r\n };\r\n\r\n return (\r\n \r\n \r\n \r\n {props.groupText ? props.groupText : 'Grund für Termin'}\r\n \r\n \r\n setRemark(e.target.value)}\r\n />\r\n \r\n );\r\n};\r\n\r\nexport default RemarkInputField;\r\n","import { useContext, useEffect } from 'react';\r\nimport CheckInContext from '../../context/checkInContext';\r\nimport { usePersonalData } from '../../hooks/usePersonalData';\r\nimport StyledButton from '../Buttons/StyledButton';\r\nimport AppointmentPersonalData, { IAppointmentPersonalData } from './AppointmentPersonalData';\r\nimport ScanUtils, { BarcodeScanCallback } from '../../hooks/barcodeKeyHandler';\r\nimport { showAlertMessage } from '../../utils/alertHandling';\r\nimport AlertContext, { AlertOnHide, AlertType } from '../../context/alertContext';\r\n\r\ninterface IAppointmentPersonalDataWithCardRead extends IAppointmentPersonalData {\r\n showCardReadButton: boolean;\r\n onCardReadClick?(): void;\r\n}\r\n\r\nconst AppointmentPersonalDataWithCardRead = (props: IAppointmentPersonalDataWithCardRead) => {\r\n const { readCardDataAndSetPersonalData, readKVDataAndSetPersonalData } = usePersonalData();\r\n const { checkinstate } = useContext(CheckInContext);\r\n const { alertdispatch } = useContext(AlertContext);\r\n\r\n const readEGKCard = async () => {\r\n readCardDataAndSetPersonalData(checkinstate.wpName);\r\n };\r\n\r\n const handleCardReadClick = (e: any) => {\r\n if (e) {\r\n e.currentTarget.blur();\r\n }\r\n\r\n readEGKCard();\r\n if (props.onCardReadClick) {\r\n props.onCardReadClick();\r\n }\r\n };\r\n\r\n const barcodeScannerCallback: BarcodeScanCallback = (txt) => {\r\n if (txt.startsWith('06\\t')) {\r\n readKVDataAndSetPersonalData(txt);\r\n if (props.onCardReadClick) {\r\n props.onCardReadClick();\r\n }\r\n } else {\r\n showAlertMessage({\r\n alertTitle: 'Unbekannter Barcode',\r\n alertTxt: 'An dieser Stelle sind nur Überweisungen erlaubt.',\r\n alertType: AlertType.error,\r\n onHide: AlertOnHide.onlyClose,\r\n alertdispatch: alertdispatch,\r\n });\r\n }\r\n };\r\n useEffect(() => {\r\n const bc = ScanUtils();\r\n if (bc) {\r\n bc.startup(document.getElementById('MainPatData'), '', barcodeScannerCallback);\r\n }\r\n return () => {\r\n if (bc) {\r\n bc.removeListeners(document.getElementById('MainPatData'));\r\n }\r\n };\r\n }, []);\r\n\r\n return (\r\n
    \r\n
    \r\n {props.showCardReadButton && (\r\n

    \r\n handleCardReadClick(e)}>Karte lesen\r\n

    \r\n )}\r\n
    \r\n \r\n
    \r\n );\r\n};\r\n\r\nexport default AppointmentPersonalDataWithCardRead;\r\n","import { Button } from 'react-bootstrap';\r\nimport AppointmentPersonalData, { IAppointmentPersonalData } from './AppointmentPersonalData';\r\n\r\ninterface IAppointmentPersonalDataWithLogin extends IAppointmentPersonalData {\r\n showLogin: boolean;\r\n showRegistrationCbx: boolean;\r\n onLoginClick?(): void;\r\n}\r\n\r\nconst AppointmentPersonalDataWithLogin = (props: IAppointmentPersonalDataWithLogin) => {\r\n const handleLoginClick = (e: any) => {\r\n if (e) {\r\n e.currentTarget.blur();\r\n }\r\n if (props.onLoginClick) {\r\n props.onLoginClick();\r\n }\r\n };\r\n\r\n const showLogin = () => {\r\n if (props.isPhysPat) {\r\n return false;\r\n }\r\n if (props.showLogin) {\r\n return true;\r\n }\r\n return false;\r\n };\r\n\r\n return (\r\n
    \r\n
    \r\n {showLogin() && (\r\n

    \r\n Haben Sie bereits einen Account?\r\n \r\n

    \r\n )}\r\n
    \r\n \r\n
    \r\n );\r\n};\r\n\r\nexport default AppointmentPersonalDataWithLogin;\r\n","import * as React from 'react';\r\nimport { useState } from 'react';\r\nimport Col from 'react-bootstrap/Col';\r\nimport Container from 'react-bootstrap/Container';\r\nimport Form from 'react-bootstrap/Form';\r\nimport Modal from 'react-bootstrap/Modal';\r\nimport Row from 'react-bootstrap/Row';\r\nimport StyledButton from '../../Buttons/StyledButton';\r\nimport StyledCol from '../../Cols/StyledCol';\r\nimport { StyledFormLabelForInput } from '../../StyledForm/SyledForm';\r\nimport { StyledModal } from '../StyledModal/StyledModal';\r\n\r\nexport interface ICodeInputModalShow {\r\n show: boolean;\r\n modalTitle: string;\r\n modalText: string;\r\n}\r\n\r\ninterface ICodeInputModal {\r\n show: boolean;\r\n modalTitle: string;\r\n modalText: string;\r\n onHide: () => void;\r\n onSubmit: (code: string) => void;\r\n}\r\n\r\nexport const CodeInputModal = (props: ICodeInputModal) => {\r\n const [code, setCode] = useState('');\r\n\r\n const handleSubmit = (event: React.FormEvent) => {\r\n event.preventDefault();\r\n if (event) {\r\n event.currentTarget.blur();\r\n }\r\n setCode('');\r\n props.onSubmit(code);\r\n };\r\n\r\n return (\r\n \r\n \r\n {props.modalTitle}\r\n \r\n
    \r\n \r\n \r\n \r\n \r\n \r\n {props.modalText}\r\n setCode(e.target.value)}\r\n />\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Abbrechen\r\n \r\n \r\n \r\n Absenden\r\n \r\n \r\n \r\n \r\n \r\n
    \r\n \r\n );\r\n};\r\n\r\nexport default CodeInputModal;\r\n","import produce from 'immer';\r\nimport { useContext, useEffect, useRef, useState } from 'react';\r\nimport { Modal, Row } from 'react-bootstrap';\r\nimport Lottie from 'react-lottie';\r\nimport { useNavigate } from 'react-router-dom';\r\nimport { Paths } from '../../Routes';\r\nimport { INeuerAccountWL } from '../../container/NeuerAccount/NeuerAccountWL';\r\nimport AlertContext, { AlertOnHide, AlertType } from '../../context/alertContext';\r\nimport CheckInContext from '../../context/checkInContext';\r\nimport LoginContext from '../../context/loginContext';\r\nimport TerminierungContext from '../../context/terminierungContext';\r\nimport { useAppointmentSelection } from '../../hooks/useAppointmentSelection';\r\nimport { GoogleAnalyticsAction, GoogleAnalyticsCategory, useGoogleAnalytics } from '../../hooks/useGoogleAnalytics';\r\nimport { usePersonalData } from '../../hooks/usePersonalData';\r\nimport useScreenResolution from '../../hooks/useScreenResolution';\r\nimport { IEnrollData, enroll } from '../../services/RestServices';\r\nimport { bookAppointment } from '../../services/fhir/FHIRAppointment';\r\nimport { showAlertMessage } from '../../utils/alertHandling';\r\nimport { APPOINTMENT_POSTPONE_REASON } from '../../utils/appointmentUtils';\r\nimport { calcButtonPaddingSize, lottieCheck } from '../../utils/lottieUtils';\r\nimport StyledButton from '../Buttons/StyledButton';\r\nimport { isTimeslotDateSet } from '../Calendar/TimeSlots';\r\nimport StyledCol from '../Cols/StyledCol';\r\nimport { StickyButtonRowBottomDiv } from '../Div/StyledDiv';\r\nimport { LottieButtonLoadingSpinner } from '../Loading/Loading';\r\nimport CodeInputModal, { ICodeInputModalShow } from '../Modals/CodeInputModal/CodeInputModal';\r\nimport { StyledModal } from '../Modals/StyledModal/StyledModal';\r\nimport { StyledRowNoMargin } from '../Rows/StyledRow';\r\nimport { StyledP } from '../SidebarItems/Avatar';\r\nimport Booking from './Booking';\r\n\r\ninterface IBookingAppointment {\r\n reason: string;\r\n handleBookingClick(response: any, currentActiveStep: number): void;\r\n handleCancelClick(currentActiveStep: number): void;\r\n currentActiveStep: number;\r\n reasonGroupText?: string;\r\n useLoginContext: boolean;\r\n isPhysicianLogin?: boolean;\r\n newAccountHashParam?: INeuerAccountWL;\r\n}\r\n\r\ninterface IBookingButtons {\r\n handleBooking(): void;\r\n handleCancel(): void;\r\n showWithSpaceBetween: boolean;\r\n}\r\n\r\ninterface IBookingSuccess {\r\n handleNext(): void;\r\n show: boolean;\r\n}\r\n\r\nconst BookingAppointment = (props: IBookingAppointment) => {\r\n const { getEnrollData, getEnrollDataPhysPat } = usePersonalData();\r\n const { state } = useContext(LoginContext);\r\n const { checkinstate } = useContext(CheckInContext);\r\n const { tmstate } = useContext(TerminierungContext);\r\n const { alertdispatch } = useContext(AlertContext);\r\n const { getSelectedTimeslot, getSelectedResource, isEarlierAppointmentPossible } = useAppointmentSelection();\r\n const [bookingCode, setBookingCode] = useState('');\r\n const [showBookingButtonLoadingSpinner, setShowBookingButtonLoadingSpinner] = useState(false);\r\n const [bookingSuccess, setBookingSuccess] = useState({ show: false, handleNext: function () {} });\r\n const navigate = useNavigate();\r\n const { sendGoogleAnalyticsEvent } = useGoogleAnalytics();\r\n\r\n const screenSize = useScreenResolution();\r\n\r\n const bookingButtonRef = useRef(null);\r\n\r\n useEffect(() => {\r\n if (bookingCode && bookingCode.length > 0) {\r\n innerBookAppointment();\r\n }\r\n }, [bookingCode]);\r\n\r\n const [codeModalShow, setCodeModalShow] = useState({\r\n show: false,\r\n modalTitle: '',\r\n modalText: '',\r\n });\r\n\r\n const BookNowButton = (props: IBookingButtons) => {\r\n const handleBooking = () => {\r\n sendGoogleAnalyticsEvent({\r\n category: GoogleAnalyticsCategory.APPOINTMENT_BOOKING,\r\n action: GoogleAnalyticsAction.SUBMIT,\r\n label: 'Jetzt buchen',\r\n });\r\n setShowBookingButtonLoadingSpinner(true);\r\n props.handleBooking();\r\n };\r\n\r\n if (showBookingButtonLoadingSpinner) {\r\n let calcButtonWidth = '35px';\r\n const lottieSize = 24;\r\n calcButtonWidth = calcButtonPaddingSize(bookingButtonRef, lottieSize);\r\n\r\n return (\r\n \r\n \r\n \r\n );\r\n } else {\r\n return (\r\n handleBooking()}\r\n >\r\n Jetzt buchen\r\n \r\n );\r\n }\r\n };\r\n\r\n const BookingButtons = (props: IBookingButtons) => {\r\n const handleCancel = () => {\r\n sendGoogleAnalyticsEvent({\r\n category: GoogleAnalyticsCategory.APPOINTMENT_BOOKING,\r\n action: GoogleAnalyticsAction.CLICK,\r\n label: 'Termin buchen abbrechen',\r\n });\r\n props.handleCancel();\r\n };\r\n\r\n if (props.showWithSpaceBetween) {\r\n return (\r\n \r\n \r\n \r\n handleCancel()}>\r\n Abbrechen\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n } else {\r\n return (\r\n \r\n \r\n \r\n handleCancel()}>\r\n Abbrechen\r\n \r\n {/* handleBooking()}>\r\n Jetzt buchen\r\n */}\r\n \r\n \r\n \r\n \r\n );\r\n }\r\n };\r\n\r\n const shouldCreateAccount = () => {\r\n if (tmstate.personalData.username.length > 0 && tmstate.personalData.password.length > 0) {\r\n return true;\r\n }\r\n return false;\r\n };\r\n\r\n const getEnrollDataForBooking = async (isPhysicianLogin: boolean) => {\r\n let enrollData: IEnrollData;\r\n if (isPhysicianLogin) {\r\n enrollData = await getEnrollDataPhysPat();\r\n } else {\r\n enrollData = await getEnrollData();\r\n }\r\n\r\n if (bookingCode && bookingCode.length > 0) {\r\n enrollData.bookingCode = bookingCode;\r\n }\r\n\r\n if (tmstate.cancelNewAppointmentData.reason === APPOINTMENT_POSTPONE_REASON) {\r\n enrollData.makroId = tmstate.enrollData.fhir.serviceType[0].coding[0].extension[0].valueInteger.toString();\r\n }\r\n\r\n if (checkinstate.urlToCallResponse.eGK && checkinstate.urlToCallResponse.eGK.length > 0) {\r\n enrollData.eGK = checkinstate.urlToCallResponse.eGK;\r\n }\r\n if (checkinstate.urlToCallResponse.kvBarcode && checkinstate.urlToCallResponse.kvBarcode.length > 0) {\r\n enrollData.kvBarcode = checkinstate.urlToCallResponse.kvBarcode;\r\n }\r\n if (checkinstate.urlToCallResponse.kvBarcode && checkinstate.urlToCallResponse.kvBarcode.length > 0) {\r\n enrollData.kvBarcode = checkinstate.urlToCallResponse.kvBarcode;\r\n }\r\n if (props.newAccountHashParam?.behFilter) {\r\n enrollData.behFilter = props.newAccountHashParam?.behFilter;\r\n }\r\n\r\n return enrollData;\r\n };\r\n\r\n const innerBookAppointment = async () => {\r\n if (props.isPhysicianLogin) {\r\n const enrollData: IEnrollData = await getEnrollDataForBooking(true);\r\n setBookingCode('');\r\n\r\n const response = await enroll(enrollData, props.reason);\r\n\r\n if (!response || response.error) {\r\n if (response?.error.includes('MISSINGBC:')) {\r\n const text = response.error.slice('MISSINGBC:'.length, response.error.length);\r\n setCodeModalShow({\r\n show: true,\r\n modalTitle: 'Buchungscode',\r\n modalText: text,\r\n });\r\n } else {\r\n showAlertMessage({\r\n alertTitle: 'Terminbuchung',\r\n alertTxt: response?.error ? response.error : 'Fehler in der Terminbuchung',\r\n alertType: AlertType.error,\r\n onHide: AlertOnHide.onlyClose,\r\n alertdispatch: alertdispatch,\r\n });\r\n }\r\n } else {\r\n props.handleBookingClick(response, props.currentActiveStep);\r\n }\r\n } else if (props.useLoginContext && !props.isPhysicianLogin) {\r\n let selectedResource;\r\n let selectedResource_2;\r\n let multiAppointment = false;\r\n\r\n const timeslot_1 = getSelectedTimeslot(1);\r\n const resource_1 = getSelectedResource(1);\r\n if (isTimeslotDateSet(timeslot_1)) {\r\n selectedResource = produce(resource_1, (draft: any) => {\r\n draft.start = timeslot_1?.start;\r\n draft.end = timeslot_1?.end;\r\n });\r\n }\r\n\r\n const timeslot_2 = getSelectedTimeslot(2);\r\n const resource_2 = getSelectedResource(2);\r\n if (isTimeslotDateSet(timeslot_2)) {\r\n selectedResource_2 = produce(resource_2, (draft: any) => {\r\n draft.start = timeslot_2?.start;\r\n draft.end = timeslot_2?.end;\r\n });\r\n multiAppointment = true;\r\n }\r\n const response = await bookAppointment(\r\n state.sessionId,\r\n selectedResource,\r\n tmstate.remark,\r\n tmstate.earlierAppointmentWanted,\r\n );\r\n if (!response || response.error) {\r\n if (response?.error.includes('MISSINGBC:')) {\r\n const text = response.error.slice('MISSINGBC:'.length, response.error.length);\r\n setCodeModalShow({\r\n show: true,\r\n modalTitle: 'Buchungscode',\r\n modalText: text,\r\n });\r\n } else {\r\n showAlertMessage({\r\n alertTitle: 'Terminbuchung',\r\n alertTxt: response?.error ? response.error : 'Fehler in der Terminbuchung',\r\n alertType: AlertType.error,\r\n onHide: AlertOnHide.onlyClose,\r\n alertdispatch: alertdispatch,\r\n });\r\n }\r\n } else {\r\n setBookingSuccess({\r\n show: true,\r\n handleNext: function () {\r\n navigate(Paths.TERMINE);\r\n },\r\n });\r\n }\r\n } else {\r\n const enrollData: IEnrollData = await getEnrollDataForBooking(false);\r\n setBookingCode('');\r\n\r\n const response = await enroll(enrollData, props.reason);\r\n\r\n if (!response || response.error) {\r\n if (response?.error.includes('MISSINGBC:')) {\r\n const text = response.error.slice('MISSINGBC:'.length, response.error.length);\r\n setCodeModalShow({\r\n show: true,\r\n modalTitle: 'Buchungscode',\r\n modalText: text,\r\n });\r\n } else {\r\n showAlertMessage({\r\n alertTitle: 'Terminbuchung',\r\n alertTxt: response?.error ? response.error : 'Fehler in der Terminbuchung',\r\n alertType: AlertType.error,\r\n onHide: AlertOnHide.onlyClose,\r\n alertdispatch: alertdispatch,\r\n });\r\n }\r\n } else {\r\n setBookingSuccess({\r\n show: true,\r\n handleNext: function () {\r\n props.handleBookingClick(response, props.currentActiveStep);\r\n },\r\n });\r\n }\r\n }\r\n };\r\n\r\n const handleBookingClick = () => {\r\n innerBookAppointment();\r\n };\r\n\r\n const handleCancelClick = () => {\r\n props.handleCancelClick(props.currentActiveStep);\r\n };\r\n\r\n const handleCloseCodeInputModal = () => {\r\n sendGoogleAnalyticsEvent({\r\n category: GoogleAnalyticsCategory.APPOINTMENT_BOOKING,\r\n action: GoogleAnalyticsAction.CLICK,\r\n label: 'Buchungscode abbrechen',\r\n });\r\n setCodeModalShow({\r\n show: false,\r\n modalTitle: '',\r\n modalText: '',\r\n });\r\n setShowBookingButtonLoadingSpinner(false);\r\n };\r\n\r\n const handleSubmitCodeInputModal = (code: string) => {\r\n sendGoogleAnalyticsEvent({\r\n category: GoogleAnalyticsCategory.APPOINTMENT_BOOKING,\r\n action: GoogleAnalyticsAction.SUBMIT,\r\n label: 'Buchungscode absenden',\r\n });\r\n setBookingCode(code);\r\n setCodeModalShow({\r\n show: false,\r\n modalTitle: '',\r\n modalText: '',\r\n });\r\n };\r\n\r\n const BookSuccessScreen = (props: IBookingSuccess) => {\r\n return (\r\n \r\n \r\n Terminbuchung erfolgreich\r\n \r\n \r\n \r\n
    \r\n \r\n Ihre Terminbuchung wurde erfolgreich durchgeführt. Weitere Infos zu Ihrem Termin erhalten Sie\r\n auch per E-Mail.\r\n \r\n
    \r\n \r\n \r\n \r\n \r\n Weiter\r\n \r\n \r\n \r\n \r\n );\r\n };\r\n\r\n return (\r\n <>\r\n \r\n \r\n handleCloseCodeInputModal()}\r\n onSubmit={handleSubmitCodeInputModal}\r\n />\r\n \r\n \r\n );\r\n};\r\n\r\nexport default BookingAppointment;\r\n","import StyledButton from '../Buttons/StyledButton';\r\nimport { CenterDiv, VerticalCenterDiv } from '../Div/StyledDiv';\r\n\r\ninterface IFinalCheckIn {\r\n handleButtonClick(): void;\r\n}\r\n\r\nconst FinalCheckIn = (props: IFinalCheckIn) => {\r\n const onButtonClick = () => {\r\n props.handleButtonClick();\r\n };\r\n\r\n return (\r\n \r\n \r\n onButtonClick()}>\r\n CheckIn abschließen\r\n \r\n \r\n \r\n );\r\n};\r\n\r\nexport default FinalCheckIn;\r\n","import * as React from 'react';\r\nimport { useState } from 'react';\r\nimport { Col, Container, Form, Modal, Row } from 'react-bootstrap';\r\nimport StyledButton from '../../Buttons/StyledButton';\r\nimport StyledCol from '../../Cols/StyledCol';\r\nimport { StyledFormLabelForInput } from '../../StyledForm/SyledForm';\r\nimport { StyledModal } from '../StyledModal/StyledModal';\r\n\r\nexport interface ILoginCardModalShow {\r\n show: boolean;\r\n}\r\n\r\ninterface ILoginCardModal {\r\n show: boolean;\r\n onHide: () => void;\r\n onLoginClick(username: string, pwd: string): void;\r\n}\r\n\r\nconst LoginCardModal = (props: ILoginCardModal) => {\r\n const [username, setUsername] = useState('');\r\n const [password, setPassword] = useState('');\r\n\r\n const handleSubmit = (event: React.FormEvent) => {\r\n event.preventDefault();\r\n const form = event.currentTarget;\r\n if (form.checkValidity() === false) {\r\n event.preventDefault();\r\n event.stopPropagation();\r\n }\r\n {\r\n props.onLoginClick(username, password);\r\n }\r\n };\r\n\r\n return (\r\n \r\n \r\n Anmelden\r\n \r\n
    \r\n \r\n
    \r\n \r\n \r\n \r\n \r\n Benutzername\r\n
    \r\n {\r\n setUsername(e.target.value);\r\n }}\r\n />\r\n
    \r\n \r\n
    \r\n \r\n \r\n \r\n Passwort\r\n {\r\n setPassword(e.target.value);\r\n }}\r\n />\r\n \r\n \r\n \r\n
    \r\n
    \r\n \r\n \r\n Abbrechen\r\n \r\n \r\n
    \r\n
    \r\n \r\n
    \r\n Anmelden\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 LoginCardModal;\r\n","import { useContext } from 'react';\r\nimport { ThemeContext } from 'styled-components';\r\nimport { ParagraphFontSize } from '../StyledParagraph/StyledParagraph';\r\nimport { CategoryBadge } from './StyledBadge';\r\n\r\ninterface IBadgesList {\r\n badgesList: string[];\r\n handleBadgeClick(badgeName: string): void;\r\n showAsGrid: boolean;\r\n}\r\n\r\nconst BadgesList = (props: IBadgesList) => {\r\n const themeContext = useContext(ThemeContext);\r\n\r\n const handleBadgeClick = (badge: string) => {\r\n props.handleBadgeClick(badge);\r\n };\r\n\r\n const getAllBadges = () => {\r\n const allBadges: any[] = [];\r\n\r\n props.badgesList.forEach((badge) => {\r\n allBadges.push(\r\n handleBadgeClick(badge)}\r\n >\r\n {badge}\r\n ,\r\n );\r\n });\r\n\r\n return allBadges;\r\n };\r\n\r\n return
    {getAllBadges()}
    ;\r\n};\r\n\r\nexport default BadgesList;\r\n","import { useContext, useEffect, useState } from 'react';\r\nimport BadgesList from '../../components/Badges/BadgesList';\r\nimport { LeftDivMain } from '../../components/Div/StyledDiv';\r\nimport { StyledMainHeader } from '../../components/StyledText/StyledHeader';\r\nimport AlertContext from '../../context/alertContext';\r\nimport LoginContext, { IDepartments } from '../../context/loginContext';\r\nimport TerminierungContext from '../../context/terminierungContext';\r\nimport { useGoogleAnalytics } from '../../hooks/useGoogleAnalytics';\r\nimport useScreenResolution from '../../hooks/useScreenResolution';\r\nimport { getParticipants } from '../../services/RestServices';\r\n\r\ninterface IAppointmentCategoryDepartment {\r\n departments?: IDepartments[];\r\n handleDepartmentClick(): void;\r\n}\r\n\r\nconst AppointmentCategoryDepartment = (props: IAppointmentCategoryDepartment) => {\r\n const { alertdispatch } = useContext(AlertContext);\r\n const { dispatch } = useContext(LoginContext);\r\n const { tmdispatch } = useContext(TerminierungContext);\r\n const [departments, setDepartments] = useState([]);\r\n\r\n const { sendGoogleAnalyticsPageView } = useGoogleAnalytics();\r\n\r\n const screenSize = useScreenResolution();\r\n\r\n useEffect(() => {\r\n sendGoogleAnalyticsPageView({ page: '/AppointmentCategoryDepartment', title: 'Fachrichtung wählen' });\r\n\r\n const getDepartmentMacros = async () => {\r\n if (props.departments) {\r\n setDepartments(props.departments);\r\n } else {\r\n const possibleMacrosResponse: any = await getParticipants(alertdispatch);\r\n if (possibleMacrosResponse.departments !== undefined) {\r\n setDepartments(possibleMacrosResponse.departments);\r\n }\r\n }\r\n };\r\n\r\n getDepartmentMacros();\r\n }, []);\r\n\r\n useEffect(() => {\r\n if (departments && departments.length > 0) {\r\n dispatch({\r\n type: 'SETDEPARTMENTS',\r\n departments: departments,\r\n });\r\n }\r\n }, [departments]);\r\n\r\n const getBadgesList = () => {\r\n const allBadges: string[] = [];\r\n departments.forEach((e) => {\r\n allBadges.push(e.name);\r\n });\r\n\r\n return allBadges;\r\n };\r\n\r\n const handleDepartmentClick = (departmentName: string) => {\r\n const selectedDepartment = departments.find((dep) => dep.name === departmentName);\r\n if (selectedDepartment) {\r\n tmdispatch({\r\n type: 'SELECTDEPARTMENT',\r\n selectedDepartment: selectedDepartment,\r\n });\r\n props.handleDepartmentClick();\r\n }\r\n };\r\n\r\n return (\r\n \r\n Fachrichtung wählen\r\n

    Wählen Sie die gewünschte Fachrichtung aus

    \r\n
    \r\n \r\n
    \r\n );\r\n};\r\n\r\nexport default AppointmentCategoryDepartment;\r\n","import { useContext } from 'react';\r\nimport BadgesList from '../../components/Badges/BadgesList';\r\nimport { LeftDivMain } from '../../components/Div/StyledDiv';\r\nimport { StyledMainHeader } from '../../components/StyledText/StyledHeader';\r\nimport AlertContext from '../../context/alertContext';\r\nimport LoginContext, { ICodeName } from '../../context/loginContext';\r\nimport TerminierungContext from '../../context/terminierungContext';\r\nimport useScreenResolution from '../../hooks/useScreenResolution';\r\n\r\ninterface IAppointmentCategoryLocation {\r\n handleLocationClick(location: ICodeName): void;\r\n}\r\n\r\nconst AppointmentCategoryLocation = (props: IAppointmentCategoryLocation) => {\r\n const { alertdispatch } = useContext(AlertContext);\r\n const { state } = useContext(LoginContext);\r\n const { tmstate, tmdispatch } = useContext(TerminierungContext);\r\n\r\n const screenSize = useScreenResolution();\r\n\r\n const getBadgesList = () => {\r\n const allBadges: string[] = [];\r\n state.anmeldeContexts.forEach((e) => {\r\n allBadges.push(e.name);\r\n });\r\n\r\n return allBadges;\r\n };\r\n\r\n const handleLocationClick = (locationName: string) => {\r\n const location = state.anmeldeContexts.find((loc) => loc.name === locationName);\r\n\r\n if (location) {\r\n tmdispatch({\r\n type: 'SELECTLOCATION',\r\n selectedLocation: location,\r\n });\r\n props.handleLocationClick(location);\r\n }\r\n };\r\n\r\n return (\r\n \r\n Standort wählen\r\n

    Wählen Sie den gwünschten Standort aus

    \r\n
    \r\n \r\n
    \r\n );\r\n};\r\n\r\nexport default AppointmentCategoryLocation;\r\n","import { Card, Col, Row } from 'react-bootstrap';\r\nimport { StyledPhysicianSelectionCard, StyledPhysicianSelectionCardTitle } from '../Cards/StyledCard';\r\nimport PhysicianSelectionDescriptionList from './PhysicianSelectionDescriptionList';\r\nimport PhysicianSelectionPhoto from './PhysicianSelectionPhoto';\r\n\r\ntype IPhyscianSelectionCard = {\r\n name: string;\r\n description?: string[];\r\n showPicture: boolean;\r\n pict?: string;\r\n};\r\n\r\nconst PhysicianSelectionCard = (props: IPhyscianSelectionCard) => {\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {props.name && (\r\n {props.name}\r\n )}\r\n \r\n \r\n \r\n \r\n \r\n );\r\n};\r\n\r\nexport default PhysicianSelectionCard;\r\n","import { useContext, useEffect, useState } from 'react';\r\nimport { ThemeContext } from 'styled-components';\r\nimport { CategoryBadgeSelected } from '../../components/Badges/StyledBadge';\r\nimport { LeftDivMain } from '../../components/Div/StyledDiv';\r\nimport PhysicianSelectionCard from '../../components/PhysicianSelectionCard/PhysicianSelectionCard';\r\nimport { ParagraphFontSize } from '../../components/StyledParagraph/StyledParagraph';\r\nimport AppPropsContext from '../../context/appPropsContext';\r\nimport { IDepartmentReasons } from '../../context/loginContext';\r\nimport TerminierungContext, { ISelectedPhysician } from '../../context/terminierungContext';\r\nimport { useAppProperties } from '../../hooks/useAppProperties';\r\nimport { useAppointmentSelection } from '../../hooks/useAppointmentSelection';\r\nimport { useGoogleAnalytics } from '../../hooks/useGoogleAnalytics';\r\nimport { IPhysiciansFor, getPhysiciansFor } from '../../services/RestServices';\r\n\r\ninterface IAppointmentCategoryPhysician {\r\n department: string;\r\n reason: IDepartmentReasons;\r\n handlePhysicianClick(currentActiveStep: number): void;\r\n currentActiveStep: number;\r\n}\r\n\r\nconst AppointmentCategoryPhysician = (props: IAppointmentCategoryPhysician) => {\r\n const themeContext = useContext(ThemeContext);\r\n const { tmstate, tmdispatch } = useContext(TerminierungContext);\r\n const { apstate } = useContext(AppPropsContext);\r\n const [allPhysicians, setAllPhysicians] = useState();\r\n const { getAllMakroIdsFromFilteredReasons } = useAppointmentSelection();\r\n\r\n const { getCountDaysToVisualize } = useAppProperties();\r\n const { sendGoogleAnalyticsPageView } = useGoogleAnalytics();\r\n\r\n useEffect(() => {\r\n sendGoogleAnalyticsPageView({ page: '/AppointmentCategoryPhysician', title: 'Behandler wählen' });\r\n\r\n const getPhysicians = async () => {\r\n const makroId = getAllMakroIdsFromFilteredReasons();\r\n\r\n const physiciansForData: IPhysiciansFor = {\r\n makroId: makroId,\r\n selectedReason: tmstate.selectedReason.reasonId,\r\n selectedInsurance: tmstate.selectedInsurance,\r\n selectedDepartment: tmstate.selectedDepartment.name,\r\n selectedAptType: tmstate.selectedAppointmentType,\r\n countDaysToVisualize: getCountDaysToVisualize(),\r\n extendedPhysicians: apstate.extendedPhysicians,\r\n };\r\n\r\n const physiciansData = await getPhysiciansFor(physiciansForData);\r\n if (physiciansData?.physicians) {\r\n setAllPhysicians(physiciansData.physicians);\r\n } else {\r\n /* only earliest appointment possible, no physicians, so auto jump to next step */\r\n handleSetPhysicianClick(0, 0, '', '', []);\r\n }\r\n };\r\n\r\n tmdispatch({\r\n type: 'RESETTIMESLOT',\r\n });\r\n\r\n getPhysicians();\r\n }, []);\r\n\r\n const handleSetPhysicianClick = (\r\n id: number,\r\n makroId: number | undefined,\r\n name: string,\r\n pict?: string,\r\n description?: string[],\r\n ) => {\r\n tmdispatch({\r\n type: 'SELECTPHYSICIAN',\r\n selectedPhysician: {\r\n lines: description ? description : [],\r\n id: id ? id : 0,\r\n name: name ? name : '',\r\n pict: pict ? pict : '',\r\n makroId: makroId ? makroId : 0,\r\n },\r\n });\r\n\r\n /* search for the correct physician with makroId from filteredReasons and set it as selectedReason */\r\n if (makroId) {\r\n const filteredSelectedReason = tmstate.filteredReasons.filter((e) => e.makroId === makroId);\r\n tmdispatch({\r\n type: 'SELECTREASON',\r\n selectedReason: filteredSelectedReason[0],\r\n });\r\n }\r\n\r\n props.handlePhysicianClick(props.currentActiveStep);\r\n };\r\n\r\n const allPhysicianCards = () => {\r\n const allCards: any[] = [];\r\n\r\n allCards.push(\r\n
    handleSetPhysicianClick(0, 0, '', '', [])}>\r\n \r\n
    ,\r\n );\r\n\r\n allPhysicians?.forEach((e: ISelectedPhysician) => {\r\n let descrList: string[] = [];\r\n if (e.lines && typeof e.lines === 'string') {\r\n descrList.push(e.lines);\r\n } else if (e.lines) {\r\n descrList = e.lines;\r\n }\r\n allCards.push(\r\n
    handleSetPhysicianClick(e.id, e.makroId, e.name, e.pict, e.lines)}>\r\n \r\n
    ,\r\n );\r\n });\r\n\r\n return allCards;\r\n };\r\n\r\n return (\r\n \r\n

    Behandler wählen

    \r\n
    \r\n
    \r\n

    \r\n Fachrichtung\r\n \r\n {props.department}\r\n \r\n

    \r\n

    \r\n Besuchsgrund\r\n \r\n {props.reason.reasonName}\r\n \r\n

    \r\n
    \r\n
    \r\n {allPhysicianCards()}\r\n
    \r\n );\r\n};\r\n\r\nexport default AppointmentCategoryPhysician;\r\n","import { useContext, useState } from 'react';\r\nimport { Col, Form, Row } from 'react-bootstrap';\r\nimport { ThemeContext } from 'styled-components';\r\nimport StyledButton from '../../components/Buttons/StyledButton';\r\nimport { RightDiv } from '../../components/Div/StyledDiv';\r\nimport { StyledRowNoMargin } from '../../components/Rows/StyledRow';\r\nimport {\r\n StyledFormGroupMaxWidth,\r\n StyledFormLabelForInput,\r\n StyledFormRowNoMargin,\r\n} from '../../components/StyledForm/SyledForm';\r\nimport { IHints, IHintsAnswers, IHintsFragen } from '../../context/terminierungContext';\r\nimport useScreenResolution from '../../hooks/useScreenResolution';\r\nimport { isBootstrap_md } from '../../utils/screenResolution';\r\n\r\ninterface IAppointmentCategoryReasonHints {\r\n hints: IHints;\r\n onHintsSubmit: (answers: IHintsAnswers[]) => void;\r\n}\r\n\r\ninterface IHintTypeEleBoolean {\r\n question: IHintsFragen;\r\n setHintAnswerBoolean: (linkId: string, answer: boolean) => void;\r\n getHintAnswerBoolean: (linkId: string) => boolean;\r\n}\r\n\r\ninterface IHintTypeEleText {\r\n question: IHintsFragen;\r\n setHintAnswerText: (linkId: string, answer: string) => void;\r\n getHintAnswerText: (linkId: string) => string | undefined;\r\n}\r\n\r\ninterface IHintTypeEleNumeric {\r\n question: IHintsFragen;\r\n setHintAnswerNumeric: (linkId: string, answer: string) => void;\r\n getHintAnswerNumeric: (linkId: string) => string | undefined;\r\n}\r\n\r\nconst label = (mandatory: boolean, labelName: string) => {\r\n return (\r\n
    \r\n {mandatory ? (\r\n
    \r\n {labelName}*\r\n
    \r\n ) : (\r\n
    \r\n {labelName}\r\n
    \r\n )}\r\n
    \r\n );\r\n};\r\n\r\nconst getNumericRegex = (precision?: number) => {\r\n if (precision && precision > 0) {\r\n return '^\\\\d{1,99}([.,]{1}\\\\d{' + precision + ',' + precision + '}){1}?$';\r\n } else {\r\n return '^\\\\d{1,99}?$';\r\n }\r\n};\r\n\r\nconst CheckboxTypeEle = (props: IHintTypeEleBoolean) => {\r\n return (\r\n <>\r\n
    \r\n \r\n \r\n \r\n \r\n props.setHintAnswerBoolean(\r\n props.question.linkId,\r\n !props.getHintAnswerBoolean(props.question.linkId),\r\n )\r\n }\r\n />\r\n \r\n {label(props.question.mandatory ? props.question.mandatory : false, props.question.label)}\r\n \r\n Pflichtfeld\r\n \r\n \r\n \r\n \r\n );\r\n};\r\n\r\nconst TextTypeEle = (props: IHintTypeEleText) => {\r\n return (\r\n <>\r\n
    \r\n \r\n \r\n \r\n {label(props.question.mandatory ? props.question.mandatory : false, props.question.label)}\r\n \r\n props.setHintAnswerText(props.question.linkId, e.target.value)}\r\n />\r\n Pflichtfeld\r\n \r\n \r\n \r\n );\r\n};\r\n\r\nconst NumericTypeEle = (props: IHintTypeEleNumeric) => {\r\n let regex = '';\r\n let feedbackMsg = '';\r\n\r\n if (props.question.mandatory) {\r\n feedbackMsg = 'Pflichtfeld';\r\n }\r\n\r\n if (props.question.precision && props.question.precision > 0) {\r\n regex = getNumericRegex(props.question.precision);\r\n let preFeedbackMsg = '';\r\n if (props.question.mandatory) {\r\n preFeedbackMsg = 'Pflichtfeld: ';\r\n }\r\n feedbackMsg =\r\n preFeedbackMsg + 'Bitte geben Sie eine Zahl mit ' + props.question.precision + ' Nachkommastellen ein.';\r\n } else {\r\n let preFeedbackMsg = '';\r\n if (props.question.mandatory) {\r\n preFeedbackMsg = 'Pflichtfeld: ';\r\n }\r\n regex = getNumericRegex();\r\n feedbackMsg = preFeedbackMsg + 'Bitte geben Sie eine ganzzahlige Zahl ein.';\r\n }\r\n\r\n return (\r\n <>\r\n
    \r\n \r\n \r\n \r\n {label(props.question.mandatory ? props.question.mandatory : false, props.question.label)}\r\n \r\n props.setHintAnswerNumeric(props.question.linkId, e.target.value)}\r\n />\r\n {feedbackMsg}\r\n \r\n \r\n \r\n );\r\n};\r\n\r\nconst AppointmentCategoryReasonHints = (props: IAppointmentCategoryReasonHints) => {\r\n const [validated, setValidated] = useState(false);\r\n const [answers, setAnswers] = useState([]);\r\n const themeContext = useContext(ThemeContext);\r\n const screenSize = useScreenResolution();\r\n\r\n const handleSubmit = (event) => {\r\n event.preventDefault();\r\n event.stopPropagation();\r\n\r\n setValidated(true);\r\n\r\n if (validate()) {\r\n props.onHintsSubmit(answers);\r\n }\r\n };\r\n\r\n const validate = () => {\r\n if (props.hints.Fragen && props.hints.Fragen.length > 0) {\r\n for (let i = 0; i < props.hints.Fragen.length; i++) {\r\n const frage = props.hints.Fragen[i];\r\n if (frage.type === 'checkbox') {\r\n const booleanVal = getHintAnswerBoolean(frage.linkId);\r\n if (frage.mandatory) {\r\n if (booleanVal === undefined || booleanVal === false) {\r\n return false;\r\n }\r\n }\r\n } else if (frage.type === 'text') {\r\n const text = getHintAnswerText(frage.linkId);\r\n if (frage.mandatory) {\r\n if (text === undefined || text.length <= 0) {\r\n return false;\r\n }\r\n }\r\n } else if (frage.type === 'numeric') {\r\n const numeric = getHintAnswerNumeric(frage.linkId);\r\n if (frage.mandatory) {\r\n if (numeric === undefined || numeric.length <= 0) {\r\n return false;\r\n }\r\n }\r\n\r\n if (numeric) {\r\n if (frage.precision && frage.precision > 0) {\r\n const regex = new RegExp(getNumericRegex(frage.precision));\r\n if (!regex.test(numeric)) {\r\n return false;\r\n }\r\n } else {\r\n const regex = new RegExp(getNumericRegex());\r\n if (!regex.test(numeric)) {\r\n return false;\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n return true;\r\n };\r\n\r\n const showHinweis = () => {\r\n if (props.hints.Hinweis && props.hints.Hinweis.length > 0) {\r\n return true;\r\n }\r\n\r\n return false;\r\n };\r\n\r\n const setHintAnswerBoolean = (linkId: string, answer: boolean) => {\r\n const foundAnswer = answers?.find((a: IHintsAnswers) => {\r\n if (a.linkId === linkId) {\r\n return true;\r\n }\r\n });\r\n if (foundAnswer) {\r\n /* update valueBoolean */\r\n const newAnswers = answers.map((a: IHintsAnswers) => {\r\n if (a.linkId === linkId) {\r\n return { ...a, valueBoolean: answer };\r\n }\r\n return a;\r\n });\r\n setAnswers(newAnswers);\r\n } else {\r\n /* make new entry*/\r\n setAnswers([...answers, { linkId: linkId, valueBoolean: answer }]);\r\n }\r\n };\r\n\r\n const getHintAnswerBoolean = (linkId: string): boolean => {\r\n const foundAnswer = answers?.find((a: IHintsAnswers) => {\r\n if (a.linkId === linkId) {\r\n return true;\r\n }\r\n });\r\n if (foundAnswer !== undefined) {\r\n if (foundAnswer.valueBoolean !== undefined) {\r\n return foundAnswer.valueBoolean;\r\n }\r\n }\r\n\r\n return false;\r\n };\r\n\r\n const setHintAnswerText = (linkId: string, answer: string) => {\r\n const foundAnswer = answers?.find((a: IHintsAnswers) => {\r\n if (a.linkId === linkId) {\r\n return true;\r\n }\r\n });\r\n if (foundAnswer) {\r\n /* update valueString */\r\n const newAnswers = answers.map((a: IHintsAnswers) => {\r\n if (a.linkId === linkId) {\r\n return { ...a, valueString: answer };\r\n }\r\n return a;\r\n });\r\n setAnswers(newAnswers);\r\n } else {\r\n /* make new entry*/\r\n setAnswers([...answers, { linkId: linkId, valueString: answer }]);\r\n }\r\n };\r\n\r\n const getHintAnswerText = (linkId: string): string | undefined => {\r\n const foundAnswer = answers?.find((a: IHintsAnswers) => {\r\n if (a.linkId === linkId) {\r\n return true;\r\n }\r\n });\r\n if (foundAnswer !== undefined) {\r\n if (foundAnswer.valueString !== undefined) {\r\n return foundAnswer.valueString;\r\n }\r\n }\r\n };\r\n\r\n const setHintAnswerNumeric = (linkId: string, answer: string) => {\r\n const foundAnswer = answers?.find((a: IHintsAnswers) => {\r\n if (a.linkId === linkId) {\r\n return true;\r\n }\r\n });\r\n if (foundAnswer) {\r\n /* update valueString */\r\n const newAnswers = answers.map((a: IHintsAnswers) => {\r\n if (a.linkId === linkId) {\r\n return { ...a, valueNumber: answer };\r\n }\r\n return a;\r\n });\r\n setAnswers(newAnswers);\r\n } else {\r\n /* make new entry*/\r\n setAnswers([...answers, { linkId: linkId, valueNumber: answer }]);\r\n }\r\n };\r\n\r\n const getHintAnswerNumeric = (linkId: string): string | undefined => {\r\n const foundAnswer = answers?.find((a: IHintsAnswers) => {\r\n if (a.linkId === linkId) {\r\n return true;\r\n }\r\n });\r\n if (foundAnswer !== undefined) {\r\n if (foundAnswer.valueNumber !== undefined) {\r\n return foundAnswer.valueNumber;\r\n }\r\n }\r\n };\r\n\r\n const showQuestions = () => {\r\n const allQuestions: any[] = [];\r\n if (props.hints.Fragen && props.hints.Fragen.length > 0) {\r\n props.hints.Fragen.forEach((q: IHintsFragen) => {\r\n if (q.type === 'checkbox') {\r\n allQuestions.push(\r\n getHintAnswerBoolean(linkId)}\r\n setHintAnswerBoolean={setHintAnswerBoolean}\r\n />,\r\n );\r\n } else if (q.type === 'text') {\r\n allQuestions.push(\r\n getHintAnswerText(linkId)}\r\n setHintAnswerText={setHintAnswerText}\r\n />,\r\n );\r\n } else if (q.type === 'numeric') {\r\n allQuestions.push(\r\n getHintAnswerNumeric(linkId)}\r\n setHintAnswerNumeric={setHintAnswerNumeric}\r\n />,\r\n );\r\n }\r\n });\r\n }\r\n\r\n return allQuestions;\r\n };\r\n\r\n return (\r\n <>\r\n
    \r\n
    \r\n {showHinweis() && (\r\n <>\r\n \r\n \r\n \r\n \r\n Hinweis\r\n \r\n \r\n \r\n

    {props.hints.Hinweis}

    \r\n
    \r\n \r\n
    \r\n \r\n )}\r\n \r\n \r\n
    \r\n {showQuestions()}\r\n \r\n \r\n Weiter\r\n \r\n \r\n
    \r\n \r\n
    \r\n \r\n );\r\n};\r\n\r\nexport default AppointmentCategoryReasonHints;\r\n","import { useContext, useEffect, useState } from 'react';\r\nimport { Col, Form } from 'react-bootstrap';\r\nimport { ThemeContext } from 'styled-components';\r\nimport { CategoryBadgeSelected } from '../../components/Badges/StyledBadge';\r\nimport { StyledColNoPadding } from '../../components/Cols/StyledCol';\r\nimport { LeftDivMain } from '../../components/Div/StyledDiv';\r\nimport { StyledRowNoMargin } from '../../components/Rows/StyledRow';\r\nimport { StyledFormRowNoMargin } from '../../components/StyledForm/SyledForm';\r\nimport { ParagraphFontSize } from '../../components/StyledParagraph/StyledParagraph';\r\nimport { StyledMainHeader, StyledSubHeader } from '../../components/StyledText/StyledHeader';\r\nimport { IDepartmentReasons, IDepartments } from '../../context/loginContext';\r\nimport TerminierungContext, { IHints, IHintsAnswers } from '../../context/terminierungContext';\r\nimport { useGoogleAnalytics } from '../../hooks/useGoogleAnalytics';\r\nimport AppointmentCategoryReasonHints from './AppointmentCategoryReasonHints';\r\n\r\ninterface IAppointmentCategoryReason {\r\n departments: IDepartments;\r\n hints?: IHints[];\r\n handleReasonClick(): void;\r\n}\r\n\r\nconst AppointmentCategoryReason = (props: IAppointmentCategoryReason) => {\r\n const themeContext = useContext(ThemeContext);\r\n const { tmstate, tmdispatch } = useContext(TerminierungContext);\r\n const [reasonSelected, setReasonSelected] = useState();\r\n const [reasonSelected1, setReasonSelected1] = useState();\r\n const [reasonMainCodeSelected, setReasonMainCodeSelected] = useState();\r\n const [insuranceSelected, setInsuranceSelected] = useState();\r\n const [appTypeSelected, setAppTypeSelected] = useState();\r\n const [hints, setHints] = useState();\r\n const { sendGoogleAnalyticsPageView } = useGoogleAnalytics();\r\n\r\n const VERSICHERUNG_VOR_ORT_LONG = 'vor Ort';\r\n const VERSICHERUNG_VOR_ORT_SHORT = 'O';\r\n\r\n const VERSICHERUNG_PER_VIDEO_LONG = 'per Video';\r\n const VERSICHERUNG_PER_VIDEO_SHORT = 'V';\r\n\r\n const VERSICHERUNG_PER_TELEFON_LONG = 'per Telefon';\r\n const VERSICHERUNG_PER_TELEFON_SHORT = 'T';\r\n\r\n const TERMINART_PRIVAT_LONG = 'Private Krankenversicherung (PKV)';\r\n const TERMINART_PRIVAT_SHORT = 'P';\r\n\r\n const TERMINART_GESETZLICH_LONG = 'Gesetzliche Krankenversicherung (GKV)';\r\n const TERMINART_GESETZLICH_SHORT = 'G';\r\n\r\n const TERMINART_BG_LONG = 'Berufsgenossenschaft (BG)';\r\n const TERMINART_BG_SHORT = 'B';\r\n\r\n const TERMINART_SELBSTZAHLER_LONG = 'Selbstzahler (SZ)';\r\n const TERMINART_SELBSTZAHLER_SHORT = 'S';\r\n\r\n const getShortVersicherungsart = (versicherungsartLong: string) => {\r\n let versicherungsArtShort = '';\r\n if (versicherungsartLong) {\r\n if (versicherungsartLong === TERMINART_PRIVAT_LONG) {\r\n versicherungsArtShort = TERMINART_PRIVAT_SHORT;\r\n } else if (versicherungsartLong === TERMINART_GESETZLICH_LONG) {\r\n versicherungsArtShort = TERMINART_GESETZLICH_SHORT;\r\n } else if (versicherungsartLong === TERMINART_BG_LONG) {\r\n versicherungsArtShort = TERMINART_BG_SHORT;\r\n } else if (versicherungsartLong === TERMINART_SELBSTZAHLER_LONG) {\r\n versicherungsArtShort = TERMINART_SELBSTZAHLER_SHORT;\r\n }\r\n }\r\n\r\n return versicherungsArtShort;\r\n };\r\n\r\n const getShortTerminart = (terminartLong: string) => {\r\n let terminartShort = '';\r\n if (terminartLong) {\r\n if (terminartLong === VERSICHERUNG_VOR_ORT_LONG) {\r\n terminartShort = VERSICHERUNG_VOR_ORT_SHORT;\r\n } else if (terminartLong === VERSICHERUNG_PER_VIDEO_LONG) {\r\n terminartShort = VERSICHERUNG_PER_VIDEO_SHORT;\r\n } else if (terminartLong === VERSICHERUNG_PER_TELEFON_LONG) {\r\n terminartShort = VERSICHERUNG_PER_TELEFON_SHORT;\r\n }\r\n }\r\n\r\n return terminartShort;\r\n };\r\n\r\n const getLongVersicherungsart = (versicherungsartShort: string) => {\r\n let versicherungsArtLong = '';\r\n if (versicherungsartShort) {\r\n if (versicherungsartShort === TERMINART_PRIVAT_SHORT) {\r\n versicherungsArtLong = TERMINART_PRIVAT_LONG;\r\n } else if (versicherungsartShort === TERMINART_GESETZLICH_SHORT) {\r\n versicherungsArtLong = TERMINART_GESETZLICH_LONG;\r\n }\r\n }\r\n\r\n return versicherungsArtLong;\r\n };\r\n\r\n const getLongTerminart = (terminartShort: string) => {\r\n let terminartLong = '';\r\n if (terminartShort) {\r\n if (terminartShort === VERSICHERUNG_VOR_ORT_SHORT) {\r\n terminartLong = VERSICHERUNG_VOR_ORT_LONG;\r\n } else if (terminartShort === VERSICHERUNG_PER_VIDEO_SHORT) {\r\n terminartLong = VERSICHERUNG_PER_VIDEO_LONG;\r\n } else if (terminartShort === VERSICHERUNG_PER_TELEFON_SHORT) {\r\n terminartLong = VERSICHERUNG_PER_TELEFON_LONG;\r\n }\r\n }\r\n\r\n return terminartLong;\r\n };\r\n\r\n let filteredReasonsLocal: IDepartmentReasons[] = [];\r\n\r\n useEffect(() => {\r\n sendGoogleAnalyticsPageView({ page: '/AppointmentCategoryReason', title: 'Besuchsgrund wählen' });\r\n }, []);\r\n\r\n useEffect(() => {\r\n if (\r\n reasonSelected &&\r\n reasonSelected.length > 0 &&\r\n insuranceSelected &&\r\n insuranceSelected.length > 0 &&\r\n appTypeSelected &&\r\n appTypeSelected.length > 0\r\n ) {\r\n const filterVersicherungsart = getShortVersicherungsart(insuranceSelected);\r\n const filterTerminart = getShortTerminart(appTypeSelected);\r\n\r\n const filteredReasons = props.departments.reasons.filter((reason) => {\r\n if (\r\n reason.reasonName === reasonSelected &&\r\n ((reason.pFilter && reason.pFilter.length > 0 && reason.pFilter.includes(filterVersicherungsart)) ||\r\n reason.pFilter === '') &&\r\n ((reason.aFilter && reason.aFilter.length > 0 && reason.aFilter.includes(filterTerminart)) ||\r\n reason.aFilter === '')\r\n ) {\r\n return true;\r\n }\r\n });\r\n let foundHint: IHints | undefined;\r\n if (filteredReasons) {\r\n tmdispatch({\r\n type: 'SETFILTEREDREASONS',\r\n filteredReasons: filteredReasons,\r\n });\r\n filteredReasonsLocal = filteredReasons;\r\n tmdispatch({\r\n type: 'SELECTINSURANCE',\r\n selectedInsurance: insuranceSelected,\r\n });\r\n tmdispatch({\r\n type: 'SELECTAPPOINTMENTTYPE',\r\n selectedAppointmentType: appTypeSelected,\r\n });\r\n\r\n /* check for possible hints questions */\r\n\r\n if (props.hints) {\r\n let hints = props.hints;\r\n\r\n /* filter for department */\r\n const selectedDepartment = tmstate.selectedDepartment.name;\r\n hints = props.hints.filter((hint) => {\r\n if (\r\n hint.department === undefined ||\r\n (hint.department && hint.department === selectedDepartment)\r\n ) {\r\n return true;\r\n }\r\n });\r\n\r\n /* filter for rest */\r\n for (let i = 0; i < filteredReasons.length; i++) {\r\n for (let j = 0; j < hints.length; j++) {\r\n if (hints[j].reason === filteredReasons[i].reasonCode) {\r\n let aFilterChecked = false;\r\n let pFilterChecked = false;\r\n\r\n const hintAFilter = hints[j].aFilter;\r\n if (hintAFilter && hintAFilter.length > 0) {\r\n if (hintAFilter.includes(filterTerminart)) {\r\n aFilterChecked = true;\r\n }\r\n } else {\r\n aFilterChecked = true;\r\n }\r\n\r\n const hintPFilter = hints[j].pFilter;\r\n if (hintPFilter && hintPFilter.length > 0) {\r\n if (hintPFilter.includes(filterVersicherungsart)) {\r\n pFilterChecked = true;\r\n }\r\n } else {\r\n pFilterChecked = true;\r\n }\r\n\r\n if (aFilterChecked && pFilterChecked) {\r\n foundHint = hints[j];\r\n break;\r\n }\r\n }\r\n }\r\n\r\n if (foundHint) {\r\n break;\r\n }\r\n }\r\n }\r\n }\r\n\r\n if (foundHint) {\r\n setHints(foundHint);\r\n } else {\r\n handleReasonClick();\r\n }\r\n }\r\n }, [reasonSelected, insuranceSelected, appTypeSelected]);\r\n\r\n const handleReasonClick = () => {\r\n let selectedReasonId: string | null = null;\r\n for (const v of filteredReasonsLocal) {\r\n if (v.reasonName == reasonSelected) {\r\n selectedReasonId = v.reasonId;\r\n }\r\n v.reasonId;\r\n }\r\n tmdispatch({\r\n type: 'SELECTREASON',\r\n selectedReason: {\r\n ...tmstate.selectedReason,\r\n reasonName: reasonSelected,\r\n reasonId: selectedReasonId,\r\n },\r\n });\r\n props.handleReasonClick();\r\n };\r\n\r\n const onHintsSubmit = (answers: IHintsAnswers[]) => {\r\n if (answers) {\r\n tmdispatch({\r\n type: 'SELECTREASONHINTS',\r\n selectedReasonHints: answers,\r\n });\r\n }\r\n handleReasonClick();\r\n };\r\n\r\n const handleSetComboboxReason = (e: any) => {\r\n const reason = e.target.value.toString();\r\n const filteredReason = props.departments.reasons.find((freason) => {\r\n if ((freason.reasonMainCode && freason.reasonMainCode === reason) || freason.reasonName == reason) {\r\n return true;\r\n }\r\n });\r\n\r\n if (filteredReason?.reasonMainCode) {\r\n setReasonMainCodeSelected(filteredReason.reasonMainCode);\r\n setReasonSelected1(filteredReason.reasonMainCode);\r\n setReasonSelected('');\r\n setHints({\r\n reason: '',\r\n });\r\n } else {\r\n setReasonMainCodeSelected('');\r\n setReasonSelected1(e.target.value.toString());\r\n setReasonSelected(e.target.value.toString());\r\n }\r\n };\r\n\r\n const handleSetComboboxReasonSub = (e: any) => {\r\n const reason = e.target.value.toString();\r\n if (reason.startsWith('Main|')) {\r\n setReasonMainCodeSelected(reason.split('|')[1]);\r\n } else {\r\n setReasonSelected(e.target.value.toString());\r\n }\r\n };\r\n\r\n const handleSetComboboxInsurance = (e: any) => {\r\n setInsuranceSelected(e.target.value.toString());\r\n };\r\n\r\n const handleSetComboboxAppType = (e: any) => {\r\n setAppTypeSelected(e.target.value.toString());\r\n };\r\n\r\n const getVersicherungsartOptions = () => {\r\n if (props.departments.versicherungsArt && props.departments.versicherungsArt.length > 0) {\r\n return props.departments.versicherungsArt.map((versicherungsArt) => (\r\n \r\n ));\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\r\n const getVersicherungsartDefault = () => {\r\n if (props.departments.versicherungsArt && props.departments.versicherungsArt.length == 1) {\r\n // setInsuranceSelected(props.departments.versicherungsArt[0]);\r\n if (!insuranceSelected) {\r\n setInsuranceSelected(props.departments.versicherungsArt[0]);\r\n }\r\n return props.departments.versicherungsArt[0];\r\n }\r\n return '';\r\n };\r\n\r\n const getVersicherungsartDisabled = () => {\r\n if (props.departments.versicherungsArt && props.departments.versicherungsArt.length == 1) {\r\n return true;\r\n }\r\n return false;\r\n };\r\n\r\n const getKontaktartOptions = () => {\r\n if (props.departments.kontaktArt && props.departments.kontaktArt.length > 0) {\r\n return props.departments.kontaktArt.map((kontaktArt) => (\r\n \r\n ));\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 const getKontaktartDefault = () => {\r\n if (props.departments.kontaktArt && props.departments.kontaktArt.length == 1) {\r\n // setAppTypeSelected(props.departments.kontaktArt[0]);\r\n if (!appTypeSelected) {\r\n setAppTypeSelected(props.departments.kontaktArt[0]);\r\n }\r\n return props.departments.kontaktArt[0];\r\n }\r\n return '';\r\n };\r\n\r\n const getKontaktartDisabled = () => {\r\n if (props.departments.kontaktArt && props.departments.kontaktArt.length == 1) {\r\n return true;\r\n }\r\n return false;\r\n };\r\n\r\n const getBesuchsgrundOptions = (mainReason: string | null) => {\r\n let filterVersicherungsart = '';\r\n if (insuranceSelected) {\r\n filterVersicherungsart = getShortVersicherungsart(insuranceSelected);\r\n }\r\n let filterTerminart = '';\r\n if (appTypeSelected) {\r\n filterTerminart = getShortTerminart(appTypeSelected);\r\n }\r\n\r\n const usedReasons: string[] = [];\r\n const usedReasonMainCodes: string[] = [];\r\n const reasonsDone = {};\r\n const reasons = props.departments.reasons.map((reason) => {\r\n if (mainReason) {\r\n if (!reason.reasonMainCode || reason.reasonMainCode !== mainReason) {\r\n return null;\r\n } else {\r\n if (reasonsDone[reason.reasonId]) {\r\n return null;\r\n }\r\n if (\r\n (reason.pFilter && !reason.pFilter.includes(filterVersicherungsart) && reason.pFilter !== '') ||\r\n (reason.aFilter && !reason.aFilter.includes(filterTerminart) && reason.aFilter !== '')\r\n ) {\r\n return null;\r\n }\r\n reasonsDone[reason.reasonId] = true;\r\n const name = reason.reasonName;\r\n return (\r\n <>\r\n \r\n \r\n );\r\n }\r\n } else {\r\n if (\r\n (reason.pFilter && !reason.pFilter.includes(filterVersicherungsart) && reason.pFilter !== '') ||\r\n (reason.aFilter && !reason.aFilter.includes(filterTerminart) && reason.aFilter !== '')\r\n ) {\r\n return null;\r\n } else {\r\n if (\r\n (reason.reasonMainCode && usedReasonMainCodes.includes(reason.reasonMainCode)) ||\r\n usedReasons.includes(reason.reasonId)\r\n ) {\r\n return null;\r\n } else {\r\n usedReasons.push(reason.reasonId);\r\n\r\n let name = reason.reasonName;\r\n let valueSub = reason.reasonName;\r\n if (reason.reasonMainCode && reason.reasonMainCode.length > 0) {\r\n usedReasonMainCodes.push(reason.reasonMainCode);\r\n name = reason.reasonMainCode;\r\n valueSub = name;\r\n }\r\n return (\r\n <>\r\n \r\n \r\n );\r\n }\r\n }\r\n }\r\n });\r\n\r\n return reasons;\r\n };\r\n\r\n const getBesuchsgrundDefault = () => {\r\n if (\r\n props.departments.reasons &&\r\n props.departments.reasons.length == 1 &&\r\n !props.departments.reasons[0].reasonMainCode\r\n ) {\r\n // setAppTypeSelected(props.departments.kontaktArt[0]);\r\n if (!reasonSelected) {\r\n setReasonSelected(props.departments.reasons[0].reasonName);\r\n }\r\n return props.departments.reasons[0].reasonName;\r\n }\r\n return '';\r\n };\r\n\r\n const getBesuchsgrundDisabled = () => {\r\n if (\r\n props.departments.reasons &&\r\n props.departments.reasons.length == 1 &&\r\n !props.departments.reasons[0].reasonMainCode\r\n ) {\r\n return true;\r\n }\r\n return false;\r\n };\r\n\r\n const displayHints = () => {\r\n if (hints?.reason && hints?.reason.length > 0) {\r\n return ;\r\n }\r\n };\r\n\r\n return (\r\n \r\n Besuchsgrund wählen\r\n
    \r\n
    \r\n \r\n Fachrichtung\r\n \r\n {props.departments.name}\r\n \r\n \r\n
    \r\n\r\n
    \r\n \r\n \r\n \r\n \r\n Versichertentyp\r\n \r\n handleSetComboboxInsurance(e)}\r\n >\r\n \r\n {getVersicherungsartOptions()}\r\n \r\n \r\n \r\n \r\n \r\n \r\n
    \r\n \r\n \r\n Terminart\r\n \r\n handleSetComboboxAppType(e)}\r\n >\r\n \r\n {getKontaktartOptions()}\r\n \r\n \r\n
    \r\n
    \r\n
    \r\n \r\n \r\n \r\n Besuchsgrund\r\n \r\n \r\n \r\n handleSetComboboxReason(e)}\r\n >\r\n \r\n {getBesuchsgrundOptions(null)}\r\n \r\n \r\n\r\n \r\n {reasonMainCodeSelected && reasonMainCodeSelected.length > 0 && (\r\n handleSetComboboxReasonSub(e)}\r\n >\r\n \r\n {getBesuchsgrundOptions(reasonMainCodeSelected)}\r\n \r\n )}\r\n \r\n \r\n \r\n \r\n {hints && displayHints()}\r\n
    \r\n );\r\n};\r\n\r\nexport default AppointmentCategoryReason;\r\n","import StyledButton from '../../components/Buttons/StyledButton';\r\nimport StyledCol from '../../components/Cols/StyledCol';\r\nimport { StickyButtonRowBottomDiv } from '../../components/Div/StyledDiv';\r\nimport { StyledRowNoMargin } from '../../components/Rows/StyledRow';\r\nimport { TermineContent } from './Termine';\r\n\r\ninterface ITermineCheckIn {\r\n showNextButton: boolean;\r\n handleNextWithActiveStep?(currentActiveStep: number): void;\r\n currentActiveStep: number;\r\n}\r\n\r\ninterface ITermineButtons {\r\n handleNext(): void;\r\n}\r\n\r\nconst TermineButtons = (props: ITermineButtons) => {\r\n const handleNext = () => {\r\n props.handleNext();\r\n };\r\n\r\n return (\r\n \r\n \r\n \r\n handleNext()}>Weiter\r\n \r\n \r\n \r\n );\r\n};\r\n\r\nconst TermineCheckIn = (props: ITermineCheckIn) => {\r\n const handleNextClick = () => {\r\n if (props.handleNextWithActiveStep) {\r\n props.handleNextWithActiveStep(props.currentActiveStep);\r\n }\r\n };\r\n\r\n return (\r\n <>\r\n \r\n {props.showNextButton && }\r\n \r\n );\r\n};\r\n\r\nexport default TermineCheckIn;\r\n","import { useContext, useEffect } from 'react';\r\nimport StyledButton from '../../components/Buttons/StyledButton';\r\nimport StyledCol from '../../components/Cols/StyledCol';\r\nimport { StickyButtonRowBottomDiv } from '../../components/Div/StyledDiv';\r\nimport { StyledRowNoMargin } from '../../components/Rows/StyledRow';\r\nimport AlertContext from '../../context/alertContext';\r\nimport LoginContext, { InitialLoginType } from '../../context/loginContext';\r\nimport { getDiagnosticReportsOfPatient, IDRDataEntry } from '../../services/fhir/FHIRDiagnosticReports';\r\nimport UploadContent from '../UploadContent/UploadContent';\r\n\r\ninterface ITermineButtons {\r\n handleNext(): void;\r\n nextButtonEnabled: boolean;\r\n}\r\n\r\ninterface IUpload {\r\n showNextButton: boolean;\r\n nextButtonEnabled?: boolean;\r\n handleNextWithActiveStep?(currentActiveStep: number): void;\r\n currentActiveStep: number;\r\n}\r\n\r\nconst UploadButtons = (props: ITermineButtons) => {\r\n const handleNext = () => {\r\n props.handleNext();\r\n };\r\n\r\n const buttonEnabled = () => {\r\n let enabled = true;\r\n if (props.nextButtonEnabled === false) {\r\n enabled = false;\r\n }\r\n return enabled;\r\n };\r\n\r\n return (\r\n \r\n \r\n \r\n handleNext()}>\r\n Weiter\r\n \r\n \r\n \r\n \r\n );\r\n};\r\n\r\nconst Upload = (props: IUpload) => {\r\n const { state } = useContext(LoginContext);\r\n const { alertdispatch } = useContext(AlertContext);\r\n\r\n useEffect(() => {\r\n getDiagnosticReports(state, alertdispatch);\r\n }, []);\r\n\r\n const handleNextClick = () => {\r\n if (props.handleNextWithActiveStep) {\r\n props.handleNextWithActiveStep(props.currentActiveStep);\r\n }\r\n };\r\n\r\n const getDiagnosticReports = async (state: InitialLoginType, alertdispatch: any) => {\r\n const response = await getDiagnosticReportsOfPatient(state, alertdispatch);\r\n if (response) {\r\n const rep: IDRDataEntry[] = response.data.entry;\r\n console.log(rep);\r\n // setReports(rep);\r\n }\r\n };\r\n\r\n const buttonEnabled = () => {\r\n let enabled = true;\r\n if (props.nextButtonEnabled === false) {\r\n enabled = false;\r\n }\r\n return enabled;\r\n };\r\n\r\n return (\r\n
    \r\n \r\n {props.showNextButton && }\r\n
    \r\n );\r\n};\r\n\r\nexport default Upload;\r\n","import { useContext, useEffect, useState } from 'react';\r\nimport Container from 'react-bootstrap/esm/Container';\r\nimport { useLocation, useNavigate } from 'react-router-dom';\r\nimport { ThemeContext } from 'styled-components';\r\nimport { Paths } from '../../Routes';\r\nimport AppointmentCalendarWithHeadline from '../../components/AppointmentCalendar/AppointmentCalendarWithHeadline';\r\nimport AppointmentPersonalDataWithCardRead from '../../components/AppointmentPersonalData/AppointmentPersonalDataWithCardRead';\r\nimport AppointmentPersonalDataWithLogin from '../../components/AppointmentPersonalData/AppointmentPersonalDataWithLogin';\r\nimport BookingAppointment from '../../components/Booking/BookingAppointment';\r\nimport { IIncomingMessage } from '../../components/Chat/Chat';\r\nimport { CenterDiv, LeftDivCheckIn, StickyStepperDiv, StickyStepperWithNavbar } from '../../components/Div/StyledDiv';\r\nimport FinalCheckIn from '../../components/FinalCheckIn/FinalCheckIn';\r\nimport { IFrameInternal } from '../../components/IFrame/IFrame';\r\nimport IFramePDF from '../../components/IFrame/IFramePDF';\r\nimport LoadingSpinnerWithText from '../../components/Loading/LoadingSpinnerWithText';\r\nimport LoginCardModal, { ILoginCardModalShow } from '../../components/Modals/LoginCardModal/LoginCardModal';\r\nimport PDFModal from '../../components/Modals/PDFModal/PDFModal';\r\nimport TelephoneModal from '../../components/Modals/TelephoneModal/TelephoneModal';\r\nimport StepperCheckIn, {\r\n IStepperCheckInStep,\r\n StepTyp,\r\n StepperLabelOrientation,\r\n StepperOrientation,\r\n} from '../../components/Stepper/StepperCheckIn';\r\nimport { ITelephoneCallIcon, stopRingTone } from '../../components/Telephone/Telephone';\r\nimport AlertContext, { AlertOnHide, AlertType } from '../../context/alertContext';\r\nimport AppPropsContext from '../../context/appPropsContext';\r\nimport CheckInContext from '../../context/checkInContext';\r\nimport LoginContext, { IActivePatients, ICodeName } from '../../context/loginContext';\r\nimport { IQAnswers, IQData } from '../../context/questionnaireContext';\r\nimport TerminierungContext from '../../context/terminierungContext';\r\nimport VideochatContext from '../../context/videochatContext';\r\nimport { PROFILE_HOME, securityItemNames } from '../../globals/global';\r\nimport { useAppProperties } from '../../hooks/useAppProperties';\r\nimport { useAppointmentSelection } from '../../hooks/useAppointmentSelection';\r\nimport { useAuth } from '../../hooks/useAuth';\r\nimport { useHandleLogoutCheckIn } from '../../hooks/useHandleLogout';\r\nimport { useLoadQuestionnaireAnswers } from '../../hooks/useLoadQuestionnaireAnswers';\r\nimport { useMessages } from '../../hooks/useMessages';\r\nimport { usePatientSwitch } from '../../hooks/usePatientSwitch';\r\nimport { usePersonalData } from '../../hooks/usePersonalData';\r\nimport useScreenResolution from '../../hooks/useScreenResolution';\r\nimport {\r\n IAuthorizeAsync,\r\n IEnrollData,\r\n IQuestionnaireJourneyData,\r\n authorizeAsync,\r\n getEnrollStatus,\r\n getQuestionnaireJourney,\r\n unblockAppointment,\r\n updateEnroll,\r\n} from '../../services/RestServices';\r\nimport { initWebSocket } from '../../services/VideochatService';\r\nimport { getDiagnosticReport } from '../../services/fhir/FHIRDiagnosticReports';\r\nimport { getQuestionnaireContent, getQuestionnaireOTPAuth } from '../../services/fhir/FHIRQuestionnaire';\r\nimport { showAlertMessage } from '../../utils/alertHandling';\r\nimport { getPDFDataFromDiagnosticReportResponse } from '../../utils/documentUtils';\r\nimport { getFullOTPAuthorization } from '../../utils/pcpUtils';\r\nimport { getQuestionnaireResourceFromRequest } from '../../utils/questionnaireUtils';\r\nimport AppointmentCategoryDepartment from '../AppointmentCategory/AppointmentCategoryDepartment';\r\nimport AppointmentCategoryExtendedPhysician from '../AppointmentCategory/AppointmentCategoryExtendedPhysican';\r\nimport AppointmentCategoryLocation from '../AppointmentCategory/AppointmentCategoryLocation';\r\nimport AppointmentCategoryPhysician from '../AppointmentCategory/AppointmentCategoryPhysician';\r\nimport AppointmentCategoryReason from '../AppointmentCategory/AppointmentCategoryReason';\r\nimport { IPDFModalShow } from '../Dokumente/Dokumente';\r\nimport FragebogenDetail from '../Fragebogen/FragebogenDetail';\r\nimport { IQuestionnaireStepData, IQuestionnaireWL } from '../Fragebogen/QuestionnaireWL';\r\nimport FullScreenImpressum from '../Mainscreen/FullScreenImpressum';\r\nimport NavbarCheckInWL from '../Navbar/NavbarCheckInWL';\r\nimport NeuerAccount from '../NeuerAccount/NeuerAccount';\r\nimport { INeuerAccountWL } from '../NeuerAccount/NeuerAccountWL';\r\nimport PersonalDataSummary from '../PersonalDataSummary/PersonalDataSummary';\r\nimport TermineCheckIn from '../Termine/TermineCheckIn';\r\nimport Upload from '../Upload/Upload';\r\nimport VideochatWL from '../Videochat/VideochatWL';\r\n// import {s} from '../../services/SignaturePad/signotec/STPadServerLib-3.2.0'\r\n\r\nexport interface IRegisteredUserParams {\r\n reason: string;\r\n userId: string;\r\n t0: string;\r\n otp: string;\r\n isCheckin?: boolean;\r\n}\r\n\r\nexport interface ICheckInWL {\r\n newAccountHashParams?: INeuerAccountWL;\r\n registeredUserHashParams?: IRegisteredUserParams;\r\n journeyResponse?: IQuestionnaireJourneyData;\r\n useLoginContext: boolean;\r\n isPhysicianLogin?: boolean;\r\n}\r\n\r\nexport interface IAuthData {\r\n finalURL?: string;\r\n otp: string;\r\n t0: string;\r\n userId: number;\r\n}\r\n\r\ninterface IReloadPageData {\r\n reload: boolean;\r\n withJourneyReload: boolean;\r\n nextActiveStep: number;\r\n newStepValues?: IChangeStep[];\r\n}\r\n\r\ninterface IChangeStep {\r\n id: string;\r\n completed: boolean;\r\n draft: boolean;\r\n active: boolean;\r\n clickable: boolean;\r\n}\r\n\r\nconst CheckInWL = (props: ICheckInWL) => {\r\n const navigate = useNavigate();\r\n const location = useLocation();\r\n const screenSize = useScreenResolution();\r\n // const location = useLocation();\r\n // const hashParams: ICheckInWL = getQueryParams(location.search);\r\n\r\n const { state, dispatch } = useContext(LoginContext);\r\n const { tmstate, tmdispatch } = useContext(TerminierungContext);\r\n const { alertdispatch } = useContext(AlertContext);\r\n const { getAndSetPersonalData, getEnrollData } = usePersonalData();\r\n const { apstate, apdispatch } = useContext(AppPropsContext);\r\n const { vsstate, vsdispatch } = useContext(VideochatContext);\r\n const { checkinstate } = useContext(CheckInContext);\r\n const themeContext = useContext(ThemeContext);\r\n\r\n const { handleLogoutCheckIn } = useHandleLogoutCheckIn();\r\n\r\n const { allowMessages, forbidMessages, videochatMessagesAllowed } = useMessages();\r\n\r\n const [\r\n setSelectedQuestionnaire,\r\n setQuestionnaireBody,\r\n loadQuestionnaireAnswers,\r\n setSelectedQuestionnaireAnswers,\r\n setQuestionnaireData,\r\n ] = useLoadQuestionnaireAnswers();\r\n\r\n const { setCheckInAuth, hasAnmeldContexts } = useAuth();\r\n\r\n const { setNewPatient } = usePatientSwitch();\r\n\r\n const { getImpressum, isExtendedPhysicians, enableFullscreenMode, disableFullscreenMode, isFullscreenMode } =\r\n useAppProperties();\r\n\r\n const { getSelectedResource } = useAppointmentSelection();\r\n\r\n const [allSteps, setAllSteps] = useState([]);\r\n const [activeStep, setActiveStep] = useState(0);\r\n const [stepClicked, setStepClicked] = useState(false);\r\n const [activeContent, setActiveContent] = useState(<>);\r\n const [authData, setAuthData] = useState({ finalURL: '', otp: '', t0: '', userId: 0 });\r\n const [journeyData, setJourneyData] = useState();\r\n const [pdfModalShow, setPdfModalShow] = useState({\r\n show: false,\r\n modalTitle: '',\r\n pdfData: '',\r\n isSignable: false,\r\n diagnosticReportData: '',\r\n });\r\n const [loginModalShow, setLoginModalShow] = useState({\r\n show: false,\r\n });\r\n const [questionnaireLoaded, setQuestionnaireLoaded] = useState(false);\r\n const [showTelephoneModal, setShowTelephoneModal] = useState(false);\r\n const [clickedQuestSave, setClickedQuestSave] = useState(false);\r\n const [reloadContent, setReloadContent] = useState(false);\r\n const [updateEnrollmentRequest, setUpdateEnrollmentRequest] = useState(false);\r\n\r\n const [videosprechstundeStepLoad, setVideosprechstundeStepLoad] = useState(false);\r\n const [videochatHangup, setVideochatHangup] = useState(false);\r\n\r\n const [reloadPageData, setReloadPageData] = useState({\r\n reload: false,\r\n withJourneyReload: false,\r\n nextActiveStep: 0,\r\n newStepValues: [\r\n {\r\n id: '',\r\n active: false,\r\n clickable: false,\r\n completed: false,\r\n draft: false,\r\n },\r\n ],\r\n });\r\n\r\n const [showLoadingSpinner, setShowLoadingSpinner] = useState(false);\r\n\r\n const [cardReadClickedInPersData, setCardReadClickedInPersData] = useState(false);\r\n const [initPageDone, setInitPageDone] = useState(false);\r\n\r\n const [registerdUserData, setRegisteredUserData] = useState({\r\n reason: '',\r\n userId: '',\r\n t0: '',\r\n otp: '',\r\n isCheckin: false,\r\n });\r\n\r\n const [isLoggedIn, setIsLoggedIn] = useState(false);\r\n\r\n const callProps: ITelephoneCallIcon = {\r\n state: state,\r\n vsstate: vsstate,\r\n vsdispatch: vsdispatch,\r\n tmstate: tmstate,\r\n };\r\n const conState: any = {};\r\n\r\n useEffect(() => {\r\n if (\r\n !props.useLoginContext &&\r\n props.registeredUserHashParams !== undefined &&\r\n props.registeredUserHashParams.otp.length > 0\r\n ) {\r\n setRegisteredUserData({\r\n reason: props.registeredUserHashParams.reason,\r\n userId: props.registeredUserHashParams.userId,\r\n t0: props.registeredUserHashParams.t0,\r\n otp: props.registeredUserHashParams.otp,\r\n isCheckin: props.registeredUserHashParams.isCheckin,\r\n });\r\n }\r\n const listener = () => {\r\n const resource_1 = getSelectedResource(1);\r\n if (resource_1) {\r\n unblockAppointment(resource_1);\r\n }\r\n return true;\r\n };\r\n window.addEventListener('beforeunload', listener);\r\n return () => window.removeEventListener('beforeunload', listener);\r\n }, []);\r\n\r\n useEffect(() => {\r\n if (registerdUserData !== undefined && registerdUserData.otp.length > 0) {\r\n const authData: IAuthData = {\r\n otp: registerdUserData.otp,\r\n t0: registerdUserData.t0.toString(),\r\n userId: Number(registerdUserData.userId),\r\n };\r\n\r\n setActiveStep(0);\r\n setAuthData(authData);\r\n getAndSetPersData(authData);\r\n getJourneyData();\r\n }\r\n getInitialSteps();\r\n getContent();\r\n\r\n if (!props.useLoginContext) {\r\n getProperties();\r\n }\r\n }, [registerdUserData]);\r\n\r\n useEffect(() => {\r\n if (clickedQuestSave) {\r\n getInitialSteps();\r\n } else {\r\n if (!props.useLoginContext) {\r\n setCheckInAuth(authData);\r\n newSetOfStepsAndContent();\r\n }\r\n }\r\n setClickedQuestSave(false);\r\n }, [authData, journeyData]);\r\n\r\n const mySetJourneyRessponse = (questionnaireJourneyResponse) => {\r\n setJourneyData(questionnaireJourneyResponse);\r\n if (questionnaireJourneyResponse.enrollCode) {\r\n tmdispatch({\r\n type: 'SETENROLLCODE',\r\n enrollData: {\r\n enrollCode: questionnaireJourneyResponse.enrollCode,\r\n kvBarcode: questionnaireJourneyResponse.kvBarcode,\r\n isToday: questionnaireJourneyResponse.isToday,\r\n },\r\n });\r\n }\r\n };\r\n\r\n useEffect(() => {\r\n const reloadQuests = async () => {\r\n if (registerdUserData?.reason) {\r\n const auth = getFullOTPAuthorization('PCP', authData.otp, authData.userId, authData.t0);\r\n const questionnaireJourneyResponse = await getQuestionnaireJourney(\r\n registerdUserData?.reason,\r\n auth,\r\n checkinstate.wpName,\r\n );\r\n if (questionnaireJourneyResponse) {\r\n mySetJourneyRessponse(questionnaireJourneyResponse);\r\n }\r\n }\r\n };\r\n\r\n if (clickedQuestSave) {\r\n reloadQuests();\r\n }\r\n }, [clickedQuestSave]);\r\n\r\n useEffect(() => {\r\n // qdispatch({\r\n // type: 'RESETQUESTIONNAIRE',\r\n // });\r\n\r\n if (stepClicked || reloadContent) {\r\n const content = getContent();\r\n if (content) {\r\n setActiveContent(content);\r\n }\r\n setStepClicked(false);\r\n setReloadContent(false);\r\n }\r\n }, [stepClicked]);\r\n\r\n useEffect(() => {\r\n const reloadChatMessages = async () => {\r\n if (tmstate.enrollData.enrollCode) {\r\n const responseEnroll = await getEnrollStatus(tmstate.enrollData.enrollCode);\r\n if (responseEnroll.error && !vsstate.jitsiError) {\r\n vsdispatch({\r\n type: 'JITSIENROLLERROR',\r\n jitsiError:\r\n 'Der Termin wurde abgesagt oder storniert. Bitte vereinbaren Sie einen neuen Termin.',\r\n });\r\n } else {\r\n const allMsg: IIncomingMessage[] = responseEnroll.chat;\r\n vsdispatch({\r\n type: 'SETCHATMESSAGES',\r\n chatMessages: allMsg,\r\n });\r\n\r\n if (!vsstate.jitsiAllowed) {\r\n if (responseEnroll.jitsiAllowed) {\r\n vsdispatch({\r\n type: 'SETJITSIALLOWED',\r\n jitsiAllowed: true,\r\n roomName: responseEnroll.roomName,\r\n });\r\n }\r\n }\r\n }\r\n }\r\n };\r\n\r\n if (vsstate.chatMessages && vsstate.chatMessages.length <= 0) {\r\n if (\r\n true ||\r\n (allSteps && activeStep && allSteps.length > activeStep && allSteps[activeStep].id != ID_VIDEO)\r\n ) {\r\n reloadChatMessages();\r\n }\r\n }\r\n\r\n if (!window.app.wsconnect) {\r\n if (tmstate.enrollData.enrollCode !== undefined && tmstate.enrollData.enrollCode.length > 0) {\r\n initWebSocket(\r\n vsstate.iceServer,\r\n tmstate.enrollData.enrollCode,\r\n vsstate,\r\n vsdispatch,\r\n tmstate,\r\n navigate,\r\n location,\r\n );\r\n }\r\n }\r\n\r\n if (vsstate.incomingCall) {\r\n if (!videochatMessagesAllowed()) {\r\n return;\r\n }\r\n if (!showTelephoneModal) {\r\n if (allSteps[activeStep].id != ID_VIDEO) {\r\n setShowTelephoneModal(true);\r\n } else {\r\n if (!vsstate.jitsiAllowed) {\r\n vsdispatch({\r\n type: 'SETJITSIALLOWED',\r\n jitsiAllowed: true,\r\n });\r\n }\r\n }\r\n }\r\n }\r\n\r\n if (vsstate.callAccepted) {\r\n const foundIndex = allSteps.findIndex((step) => {\r\n if (step.id == ID_VIDEO) {\r\n return true;\r\n }\r\n });\r\n const reloadData: IReloadPageData = {\r\n reload: true,\r\n withJourneyReload: false,\r\n nextActiveStep: foundIndex,\r\n newStepValues: [\r\n {\r\n id: ID_VIDEO,\r\n clickable: true,\r\n active: true,\r\n completed: false,\r\n draft: false,\r\n },\r\n ],\r\n };\r\n enableFullscreenMode();\r\n setReloadPageData(reloadData);\r\n }\r\n }, [tmstate, vsstate]);\r\n\r\n useEffect(() => {\r\n if (questionnaireLoaded) {\r\n const stepData: IQuestionnaireStepData = {\r\n activeStepNumber: activeStep,\r\n handleQuestionnaireFinished: handleQuestFinished,\r\n handleQuestionnairePDFClose: handleQuestPDFClose,\r\n handleQuestionnaireSave: handleQuestSave,\r\n };\r\n\r\n const auth = getFullOTPAuthorization('', authData.otp, authData.userId, authData.t0);\r\n setActiveContent(\r\n ,\r\n );\r\n setQuestionnaireLoaded(false);\r\n }\r\n }, [questionnaireLoaded]);\r\n\r\n useEffect(() => {\r\n if (!videosprechstundeStepLoad) {\r\n if (apstate.jitsiDomain && tmstate.enrollData && tmstate.enrollData.enrollCode) {\r\n newSetOfStepsAndContent();\r\n setVideosprechstundeStepLoad(true);\r\n }\r\n }\r\n }, [apstate.jitsiDomain, tmstate.enrollData]);\r\n\r\n useEffect(() => {\r\n /* set the active step to first clickable unfinished journey step */\r\n if (isRegisteredUser()) {\r\n if ((tmstate?.enrollData?.isToday && !videochatHangup) || vsstate.callAccepted) {\r\n setVideochatStepAndContent();\r\n return;\r\n }\r\n if (allSteps.length > 1) {\r\n const foundIndex = allSteps.findIndex((step) => {\r\n if (step.typ === StepTyp.Journey && step.clickable && !step.completed) {\r\n return true;\r\n }\r\n });\r\n if (foundIndex >= 0) {\r\n setActiveStep(foundIndex);\r\n const con = getContent(foundIndex);\r\n if (con) {\r\n setActiveContent(con);\r\n }\r\n }\r\n }\r\n } else if (props.useLoginContext && !activeStep) {\r\n const foundIndex = allSteps.findIndex((step) => {\r\n if (step.clickable && !step.completed) {\r\n return true;\r\n }\r\n });\r\n if (foundIndex >= 0) {\r\n setActiveStep(foundIndex);\r\n const con = getContent(foundIndex);\r\n if (con) {\r\n setActiveContent(con);\r\n }\r\n }\r\n }\r\n\r\n /* ##### change initial steps ##### */\r\n\r\n /* Wenn Fachrichtung eindeutig ist, wird Step noch angezeigt, aber uebersprungen */\r\n if (\r\n allSteps.length > 0 &&\r\n isExtendedPhysicians() &&\r\n props.journeyResponse &&\r\n props.journeyResponse.departments?.length == 1 &&\r\n !tmstate.selectedDepartment?.name\r\n ) {\r\n tmdispatch({\r\n type: 'SELECTDEPARTMENT',\r\n selectedDepartment: props.journeyResponse.departments[0],\r\n });\r\n const reloadData: IReloadPageData = {\r\n reload: true,\r\n withJourneyReload: false,\r\n nextActiveStep: 1,\r\n newStepValues: [\r\n {\r\n id: ID_CATEGORY_DEPARTMENT,\r\n clickable: true,\r\n active: false,\r\n completed: true,\r\n draft: false,\r\n },\r\n {\r\n id: ID_CATEGORY_REASON,\r\n clickable: true,\r\n active: true,\r\n completed: false,\r\n draft: false,\r\n },\r\n ],\r\n };\r\n setReloadPageData(reloadData);\r\n\r\n /* ########################## */\r\n }\r\n if (!conState.done) {\r\n const con = getContent(activeStep);\r\n if (con) {\r\n setActiveContent(con);\r\n }\r\n }\r\n }, [allSteps]);\r\n\r\n useEffect(() => {\r\n if (showLoadingSpinner) {\r\n if (reloadPageData.reload && reloadPageData.withJourneyReload) {\r\n getJourneyData();\r\n } else {\r\n newSetOfStepsAndContent();\r\n }\r\n\r\n setShowLoadingSpinner(false);\r\n }\r\n }, [showLoadingSpinner]);\r\n\r\n useEffect(() => {\r\n if (reloadPageData.reload) {\r\n reinitPage();\r\n }\r\n }, [reloadPageData]);\r\n\r\n useEffect(() => {\r\n if (cardReadClickedInPersData) {\r\n if (tmstate.personalData.eGK.length > 0 || tmstate.personalData.kvBarcode.length > 0) {\r\n setCardReadClickedInPersData(false);\r\n }\r\n } else if (!initPageDone) {\r\n if (tmstate.personalData?.lastName?.length > 0 || checkinstate.urlToCallResponse?.nameLast?.length > 0) {\r\n setInitPageDone(true);\r\n }\r\n }\r\n }, [tmstate.personalData, checkinstate.urlToCallResponse]);\r\n\r\n const reinitPage = () => {\r\n setShowLoadingSpinner(true);\r\n };\r\n\r\n const getOverwriteAppProps = () => {\r\n const overwriteProps = {\r\n allowAccountCreateDirect: false,\r\n allowDirectAppointmentsWithoutLogin: false,\r\n RegistrationVisibleFields: {\r\n ...apstate.RegistrationVisibleFields,\r\n insuranceNr: true,\r\n },\r\n };\r\n\r\n return overwriteProps;\r\n };\r\n\r\n const overwriteAppProps = () => {\r\n const overwriteProps = getOverwriteAppProps();\r\n apdispatch({\r\n type: 'SETAPPPROPS',\r\n ...apstate,\r\n ...overwriteProps,\r\n });\r\n };\r\n\r\n const getProperties = async () => {\r\n // const propRes = await getAppProperties();\r\n // if (propRes) {\r\n // /* override appProperties */\r\n // const overwriteProps = getOverwriteAppProps();\r\n // const propResOverwritten = {\r\n // ...propRes,\r\n // ...overwriteProps,\r\n // };\r\n // apdispatch({\r\n // type: 'SETAPPPROPS',\r\n // ...apstate,\r\n // ...propResOverwritten,\r\n // });\r\n // setDataFromAppProperties(propRes, apdispatch);\r\n // }\r\n /* override appProperties */\r\n const overwriteProps = getOverwriteAppProps();\r\n const propResOverwritten = {\r\n ...apstate,\r\n ...overwriteProps,\r\n };\r\n apdispatch({\r\n type: 'SETAPPPROPS',\r\n ...apstate,\r\n ...propResOverwritten,\r\n });\r\n // setDataFromAppProperties(propRes, apdispatch);\r\n };\r\n\r\n const setVideochatStepAndContent = () => {\r\n const foundIndex = allSteps.findIndex((step) => {\r\n if (step.id == ID_VIDEO) {\r\n return true;\r\n }\r\n });\r\n if (foundIndex >= 0) {\r\n setActiveStep(foundIndex);\r\n const con = getContent(foundIndex);\r\n if (con) {\r\n setActiveContent(con);\r\n }\r\n vsdispatch({ type: 'ONDISCONNECT' });\r\n }\r\n };\r\n\r\n const newSetOfStepsAndContent = () => {\r\n getInitialSteps();\r\n let nextStep = 0;\r\n if (reloadPageData.reload) {\r\n nextStep = reloadPageData.nextActiveStep;\r\n }\r\n const con = getContent(nextStep);\r\n if (con) {\r\n setActiveContent(con);\r\n }\r\n setReloadPageData({\r\n reload: false,\r\n withJourneyReload: false,\r\n nextActiveStep: 0,\r\n newStepValues: [\r\n {\r\n id: '',\r\n active: false,\r\n clickable: false,\r\n completed: false,\r\n draft: false,\r\n },\r\n ],\r\n });\r\n };\r\n\r\n const getNextUnfinishedStepNumberWithoutVideo = (currentStepNumber: number) => {\r\n let endReached = false;\r\n for (let i = currentStepNumber; i < allSteps.length; i++) {\r\n const nextStep = i + 1;\r\n if (nextStep >= allSteps.length) {\r\n endReached = true;\r\n break;\r\n } else {\r\n if (!allSteps[nextStep].completed && allSteps[nextStep].id != ID_VIDEO) {\r\n return nextStep;\r\n }\r\n }\r\n }\r\n\r\n if (endReached) {\r\n for (let i = 0; i < currentStepNumber; i++) {\r\n if (!allSteps[i].completed && allSteps[i].id != ID_VIDEO) {\r\n return i;\r\n }\r\n }\r\n }\r\n\r\n return 0;\r\n };\r\n\r\n const getNextUnfinishedStepNumber = (currentStepNumber: number) => {\r\n let endReached = false;\r\n for (let i = currentStepNumber; i < allSteps.length; i++) {\r\n const nextStep = i + 1;\r\n if (nextStep >= allSteps.length) {\r\n endReached = true;\r\n break;\r\n } else {\r\n if (!allSteps[nextStep].completed) {\r\n return nextStep;\r\n }\r\n }\r\n }\r\n\r\n if (endReached) {\r\n for (let i = 0; i < currentStepNumber; i++) {\r\n if (!allSteps[i].completed) {\r\n return i;\r\n }\r\n }\r\n }\r\n\r\n return 0;\r\n };\r\n\r\n const getActiveStep = () => {\r\n let st = -1;\r\n setActiveStep((step) => {\r\n st = step;\r\n return step;\r\n });\r\n\r\n return st;\r\n };\r\n\r\n const changeStep = (\r\n currentSteps: IStepperCheckInStep[],\r\n newValues: IChangeStep,\r\n setAllOtherStepsInactive: boolean,\r\n ) => {\r\n if (currentSteps.length > 0) {\r\n const allStepsCopy = [...currentSteps];\r\n for (let i = 0; i < allStepsCopy.length; i++) {\r\n if (allStepsCopy[i].id === newValues.id) {\r\n if (newValues.completed) {\r\n allStepsCopy[i].completed = newValues.completed;\r\n }\r\n if (newValues.draft) {\r\n allStepsCopy[i].draft = newValues.draft;\r\n }\r\n if (newValues.active) {\r\n allStepsCopy[i].active = newValues.active;\r\n }\r\n if (newValues.clickable) {\r\n allStepsCopy[i].clickable = newValues.clickable;\r\n }\r\n } else {\r\n if (setAllOtherStepsInactive) {\r\n allStepsCopy[i].active = false;\r\n }\r\n }\r\n }\r\n\r\n return allStepsCopy;\r\n }\r\n };\r\n\r\n const setAllStepsGreaterInactive = (stepNumber: number) => {\r\n if (allSteps.length > 0) {\r\n const allStepsCopy = [...allSteps];\r\n const startNumber = stepNumber + 1;\r\n for (let i = startNumber; i < allStepsCopy.length; i++) {\r\n allStepsCopy[i].active = false;\r\n allStepsCopy[i].clickable = false;\r\n }\r\n allStepsCopy[stepNumber].active = true;\r\n allStepsCopy[stepNumber].clickable = true;\r\n setAllSteps(allStepsCopy);\r\n }\r\n };\r\n\r\n // const getGDTData = async () => {\r\n // const gdtData = await getParkedGDT(state.gdt.id);\r\n // return gdtData;\r\n // };\r\n\r\n const getJourneyData = async () => {\r\n if (registerdUserData?.reason) {\r\n const auth = getFullOTPAuthorization(\r\n 'PCP',\r\n registerdUserData.otp,\r\n registerdUserData.userId,\r\n registerdUserData.t0,\r\n );\r\n const questionnaireJourneyResponse = await getQuestionnaireJourney(\r\n registerdUserData?.reason,\r\n auth,\r\n checkinstate.wpName,\r\n );\r\n if (questionnaireJourneyResponse) {\r\n mySetJourneyRessponse(questionnaireJourneyResponse);\r\n }\r\n }\r\n };\r\n\r\n const getJourneyDataForHOME = async (reason) => {\r\n const questionnaireJourneyResponse = await getQuestionnaireJourney(reason, state.sessionId);\r\n if (questionnaireJourneyResponse) {\r\n mySetJourneyRessponse(questionnaireJourneyResponse);\r\n }\r\n };\r\n\r\n const isCheckInWorkplace = () => {\r\n if (checkinstate.wpName?.length > 0) {\r\n return true;\r\n }\r\n\r\n return false;\r\n };\r\n\r\n const isPerVideo = () => {\r\n /*\r\n if (tmstate.selectedAppointmentType == 'per Video') {\r\n return true;\r\n }\r\n */\r\n\r\n return false;\r\n };\r\n\r\n // const isCardReadDone = () => {\r\n // if (tmstate.personalData.eGK.length > 0) {\r\n // return true;\r\n // }\r\n\r\n // return false;\r\n // };\r\n\r\n const isRegisteredUser = () => {\r\n if (authData.userId > 0 && authData.otp.length > 0 && authData.t0.length > 0) {\r\n return true;\r\n }\r\n return false;\r\n };\r\n\r\n const handleQuestFinished = (currentActiveStep) => {\r\n const reloadData: IReloadPageData = {\r\n reload: true,\r\n withJourneyReload: true,\r\n nextActiveStep: getNextUnfinishedStepNumber(currentActiveStep),\r\n };\r\n setReloadPageData(reloadData);\r\n };\r\n\r\n const handleQuestSave = () => {\r\n setClickedQuestSave(true);\r\n };\r\n\r\n const handleQuestPDFClose = (currentActiveStep: number) => {\r\n const reloadData: IReloadPageData = {\r\n reload: true,\r\n withJourneyReload: true,\r\n nextActiveStep: getNextUnfinishedStepNumber(currentActiveStep),\r\n };\r\n setReloadPageData(reloadData);\r\n };\r\n\r\n const handleRegistrationFinished = (response: IAuthData) => {\r\n if (response) {\r\n const authData: IAuthData = {\r\n finalURL: response.finalURL,\r\n otp: response.otp,\r\n t0: response.t0,\r\n userId: response.userId,\r\n };\r\n\r\n setAuthData(authData);\r\n }\r\n\r\n setActiveStep(1); //Now sign Datenschutz\r\n };\r\n\r\n const onTelephoneCallOff = () => {\r\n setShowTelephoneModal(false);\r\n };\r\n\r\n const onTelephoneCallAccept = () => {\r\n setShowTelephoneModal(false);\r\n };\r\n\r\n const onTelephoneHide = () => {\r\n stopRingTone();\r\n setShowTelephoneModal(false);\r\n };\r\n\r\n const getJourneyFinalURLId = (id: string) => {\r\n let finalURL = '';\r\n journeyData?.forms.forEach((form) => {\r\n if (id === form.id) {\r\n if (form.finalURL) {\r\n finalURL = form.finalURL;\r\n }\r\n }\r\n });\r\n\r\n const documentId = finalURL.split('DiagnosticReport/')[1];\r\n return documentId;\r\n };\r\n\r\n const getJourneyDraftURLId = (id: string) => {\r\n let draftURL = '';\r\n journeyData?.forms.forEach((form) => {\r\n if (id === form.id) {\r\n if (form.draftURL) {\r\n draftURL = form.draftURL;\r\n }\r\n }\r\n });\r\n\r\n return draftURL;\r\n };\r\n\r\n const handleClickPDFDocment = async (auth: string, documentId: string) => {\r\n const response = await getDiagnosticReport(auth, documentId);\r\n const [modalTitle, pdfsrc, isSignable, isSigned, signPosData] = getPDFDataFromDiagnosticReportResponse(\r\n response,\r\n '',\r\n '',\r\n );\r\n\r\n setPdfModalShow({\r\n show: true,\r\n modalTitle: modalTitle,\r\n pdfData: ,\r\n isSignable: isSignable === 'true' ? true : false,\r\n isSigned: isSigned === 'true' ? true : false,\r\n diagnosticReportData: response.data,\r\n });\r\n };\r\n\r\n const handleClickQuestionnaireDraft = async (\r\n auth: string,\r\n questionnaireId: string,\r\n stepData: IQuestionnaireStepData,\r\n stepName: string,\r\n ) => {\r\n let answers: IQAnswers[] = [];\r\n\r\n const questionnaireAuth: IQuestionnaireWL = {\r\n type: 'Questionnaire',\r\n baseURL: props.newAccountHashParams?.key,\r\n name: stepName,\r\n otp: auth,\r\n t0: authData.t0,\r\n userId: authData.userId.toString(),\r\n stepData: stepData,\r\n };\r\n\r\n const selectedResource = await getQuestionnaireOTPAuth(questionnaireAuth);\r\n if (selectedResource) {\r\n const rep: IQData = selectedResource.data;\r\n setQuestionnaireData(rep);\r\n const qResource = getQuestionnaireResourceFromRequest(rep);\r\n const contentRes = await getQuestionnaireContent('PCP ' + auth, questionnaireId, alertdispatch);\r\n\r\n // set correct questionnaire id\r\n const qId = questionnaireId.split('/')[1];\r\n selectedResource.id = qId;\r\n selectedResource.status = contentRes.data.status; //in-progress\r\n\r\n setQuestionnaireBody(contentRes.data);\r\n\r\n answers = loadQuestionnaireAnswers(contentRes.data);\r\n\r\n setSelectedQuestionnaireAnswers(answers);\r\n\r\n qResource.status = contentRes.data.status; //in-progress\r\n setSelectedQuestionnaire(qResource);\r\n\r\n setQuestionnaireLoaded(true);\r\n }\r\n };\r\n\r\n // const handleClickAppointmentRegisteredUser = () => {\r\n // if (journeyData?.makros && journeyData.makros.length > 0) {\r\n // const auth = getFullOTPAuthorization('PCP', authData.otp, authData.userId, authData.t0);\r\n // setActiveContent(\r\n // ,\r\n // );\r\n // }\r\n // };\r\n\r\n // const handleClickAppointmentNewUser = (journeyData: IQuestionnaireJourneyData) => {\r\n // if (journeyData?.makros && journeyData.makros.length > 0) {\r\n // if (checkinstate.urlToCallResponse.eGK && checkinstate.urlToCallResponse.eGK.length > 0) {\r\n // setActiveContent(\r\n // ,\r\n // );\r\n // } else {\r\n // setActiveContent(\r\n // ,\r\n // );\r\n // }\r\n // }\r\n // };\r\n\r\n const getAndSetPersData = (authData: IAuthData) => {\r\n const auth = getFullOTPAuthorization('PCP', authData.otp, authData.userId, authData.t0);\r\n getAndSetPersonalData(auth, authData.userId.toString(), '');\r\n };\r\n\r\n const showQuestionnaireEntries = (stepContent: number) => {\r\n if (allSteps.length > 0) {\r\n // const activeHashParams = allSteps[activeStep].hashParams;\r\n const stepData: IQuestionnaireStepData = {\r\n activeStepNumber: stepContent,\r\n handleQuestionnaireFinished: handleQuestFinished,\r\n handleQuestionnairePDFClose: handleQuestPDFClose,\r\n handleQuestionnaireSave: handleQuestSave,\r\n };\r\n\r\n // const otp = authData.otp + '&userId=' + authData.userId + '&t0=' + authData.t0;\r\n const otp = getFullOTPAuthorization('', authData.otp, authData.userId, authData.t0);\r\n const step = allSteps[stepContent];\r\n\r\n const documentId = getJourneyFinalURLId(step.id);\r\n const draftId = getJourneyDraftURLId(step.id);\r\n if (documentId && documentId.length > 0) {\r\n /* it's a pdf document */\r\n handleClickPDFDocment('PCP ' + otp, documentId);\r\n } else if (draftId && draftId.length > 0) {\r\n /* it's a draft questionnaire */\r\n handleClickQuestionnaireDraft(otp, draftId, stepData, step.id);\r\n } else {\r\n return (\r\n \r\n );\r\n }\r\n }\r\n };\r\n\r\n const handlePossibleChangeOfNextSteps = (stepNumberClicked: number) => {\r\n let setInactive = false;\r\n const clickedId = allSteps[stepNumberClicked].id;\r\n if (\r\n clickedId === ID_CATEGORY_DEPARTMENT ||\r\n clickedId === ID_CATEGORY_REASON ||\r\n clickedId === ID_CATEGORY_PHYSICIAN ||\r\n clickedId === ID_APPOINTMENT_SELECTION\r\n ) {\r\n setInactive = true;\r\n }\r\n\r\n if (setInactive) {\r\n setAllStepsGreaterInactive(stepNumberClicked);\r\n }\r\n };\r\n\r\n const handleStepClick = (stepNumberClicked: number) => {\r\n setActiveStep(stepNumberClicked);\r\n setStepClicked(true);\r\n handlePossibleChangeOfNextSteps(stepNumberClicked);\r\n };\r\n\r\n const handleLogout = () => {\r\n if (!props.useLoginContext) {\r\n handleLogoutCheckIn();\r\n }\r\n\r\n if (isCheckInWorkplace()) {\r\n navigate(Paths.SPLASHSCREEN_CHECKIN + '?wpName=' + checkinstate.wpName);\r\n } else {\r\n // navigate(Paths.SPLASHSCREEN_LOGGEDOUT);\r\n navigate(Paths.HOME);\r\n // window.location.reload();\r\n }\r\n };\r\n\r\n const showAvatarIcon = () => {\r\n if (isRegisteredUser()) {\r\n return true;\r\n }\r\n return false;\r\n };\r\n\r\n const showLoginIcon = () => {\r\n if (isRegisteredUser()) {\r\n return false;\r\n } else if (isLoggedIn) {\r\n return false;\r\n } else if (apstate.allowAccountInAnmeldeworkflow) {\r\n return apstate.allowAccountInAnmeldeworkflow;\r\n }\r\n\r\n return false;\r\n };\r\n\r\n const handleProfileClick = () => {\r\n if (isRegisteredUser()) {\r\n const reloadData: IReloadPageData = {\r\n reload: true,\r\n withJourneyReload: false,\r\n nextActiveStep: 0,\r\n newStepValues: [\r\n {\r\n id: ID_MYDATA,\r\n clickable: true,\r\n active: true,\r\n completed: false,\r\n draft: false,\r\n },\r\n ],\r\n };\r\n setReloadPageData(reloadData);\r\n } else {\r\n setActiveContent();\r\n }\r\n };\r\n\r\n const showAccountInAnmeldeworkflow = () => {\r\n if (apstate.allowAccountInAnmeldeworkflow) {\r\n return !isLoggedIn;\r\n }\r\n return false;\r\n };\r\n\r\n const handleLoginIconClick = () => {\r\n setLoginModalShow({\r\n show: true,\r\n });\r\n };\r\n\r\n const handleOnCardReadClick = () => {\r\n setCardReadClickedInPersData(true);\r\n };\r\n\r\n const handleFinalCheckInClick = () => {\r\n if (props.useLoginContext) {\r\n return;\r\n }\r\n handleLogout();\r\n };\r\n\r\n const handleClosePDFModal = () => {\r\n setPdfModalShow({\r\n show: false,\r\n modalTitle: '',\r\n pdfData: '',\r\n isSignable: false,\r\n isSigned: false,\r\n });\r\n const reloadData: IReloadPageData = {\r\n reload: true,\r\n withJourneyReload: false,\r\n nextActiveStep: getNextUnfinishedStepNumber(activeStep),\r\n };\r\n setReloadPageData(reloadData);\r\n };\r\n\r\n const handleCloseLoginModal = () => {\r\n setLoginModalShow({\r\n show: false,\r\n });\r\n };\r\n\r\n const onHideAlertModal = () => {\r\n if (window.opener !== null) {\r\n window.close();\r\n } else {\r\n handleLogout();\r\n }\r\n };\r\n\r\n const handleOnVideoHangup = () => {\r\n // const nextStep = getNextUnfinishedStepNumberWithoutVideo(0);\r\n // allSteps[nextStep];\r\n // const reloadData: IReloadPageData = {\r\n // reload: true,\r\n // withJourneyReload: false,\r\n // nextActiveStep: nextStep,\r\n // newStepValues: [\r\n // {\r\n // id: ID_VIDEO,\r\n // clickable: true,\r\n // active: false,\r\n // completed: true,\r\n // draft: false,\r\n // },\r\n // {\r\n // id: allSteps[nextStep].id,\r\n // clickable: allSteps[nextStep].clickable,\r\n // active: true,\r\n // completed: allSteps[nextStep].completed,\r\n // draft: allSteps[nextStep].draft,\r\n // },\r\n // ],\r\n // };\r\n\r\n setVideochatHangup(true);\r\n vsdispatch({ type: 'ONDISCONNECT' });\r\n\r\n showAlertMessage({\r\n alertTitle: 'Videotermin',\r\n alertTxt: 'Die Videosprechstunde wurde beendet',\r\n alertType: AlertType.info,\r\n onHide: AlertOnHide.custom,\r\n onHideCustom: onHideAlertModal,\r\n alertdispatch: alertdispatch,\r\n });\r\n\r\n /*\r\n vsdispatch({\r\n type: 'SETJITSIALLOWED',\r\n jitsiAllowed: false,\r\n });\r\n */\r\n\r\n // setReloadPageData(reloadData);\r\n };\r\n\r\n const getAuthorizeLoginData = async (username: string, password: string) => {\r\n const authorizeLoginProps: IAuthorizeAsync = {\r\n username: username,\r\n password: password,\r\n };\r\n const loginData = await authorizeAsync(authorizeLoginProps);\r\n if (!loginData || loginData.error) {\r\n showAlertMessage({\r\n alertTitle: 'Anmelden',\r\n alertTxt: loginData.error,\r\n alertType: AlertType.error,\r\n onHide: AlertOnHide.onlyClose,\r\n alertdispatch: alertdispatch,\r\n });\r\n } else {\r\n getAndSetPersonalData(loginData.sessionId, loginData.userId, loginData.practitionerRoleId);\r\n setIsLoggedIn(true);\r\n dispatch({\r\n type: 'LOGIN',\r\n userId: loginData.userId,\r\n userName: username,\r\n sessionId: loginData.sessionId,\r\n securityItems: {\r\n CHARTS: loginData.SecurityItems[securityItemNames.CHARTS] === 'true' ? true : false,\r\n CHARTS_WEIGHT: loginData.SecurityItems[securityItemNames.CHARTS_WEIGHT] === 'true' ? true : false,\r\n CHARTS_FATMASS: loginData.SecurityItems[securityItemNames.CHARTS_FATMASS] === 'true' ? true : false,\r\n CHARTS_BLOODSUGAR:\r\n loginData.SecurityItems[securityItemNames.CHARTS_BLOODSUGAR] === 'true' ? true : false,\r\n CHARTS_FLI: loginData.SecurityItems[securityItemNames.CHARTS_FLI] === 'true' ? true : false,\r\n CHARTS_SAM: loginData.SecurityItems[securityItemNames.CHARTS_SAM] === 'true' ? true : false,\r\n CHARTS_ACTIVITY:\r\n loginData.SecurityItems[securityItemNames.CHARTS_ACTIVITY] === 'true' ? true : false,\r\n TABLE_VAL: loginData.SecurityItems[securityItemNames.TABLE_VAL] === 'true' ? true : false,\r\n DOKUMENT: loginData.SecurityItems[securityItemNames.DOKUMENT] === 'true' ? true : false,\r\n FOTOS: loginData.SecurityItems[securityItemNames.FOTOS] === 'true' ? true : false,\r\n FRAGEBOGEN: loginData.SecurityItems[securityItemNames.FRAGEBOGEN] === 'true' ? true : false,\r\n MEDIKATION: loginData.SecurityItems[securityItemNames.MEDIKATION] === 'true' ? true : false,\r\n TAGESPLAN: loginData.SecurityItems[securityItemNames.TAGESPLAN] === 'true' ? true : false,\r\n TERMINE: loginData.SecurityItems[securityItemNames.TERMINE] === 'true' ? true : false,\r\n VIDEO: loginData.SecurityItems[securityItemNames.VIDEO] === 'true' ? true : false,\r\n JOURNEY: loginData.SecurityItems[securityItemNames.JOURNEY] === 'true' ? true : false,\r\n TODO: loginData.SecurityItems[securityItemNames.TODO]\r\n ? loginData.SecurityItems[securityItemNames.TODO]\r\n : [],\r\n TAB_ORDER: loginData.SecurityItems[securityItemNames.TAB_ORDER]\r\n ? loginData.SecurityItems[securityItemNames.TAB_ORDER]\r\n : '',\r\n },\r\n iceServers: loginData.iceServers,\r\n possibleMacros: loginData.PossibleMacros,\r\n departments: loginData.departments ? loginData.departments : [],\r\n activeStudies: loginData.activeStudies,\r\n activeProfile: PROFILE_HOME,\r\n activeUserId: loginData.userId,\r\n termsHTML: '',\r\n privacyHTML: '',\r\n extraLinks: loginData.extraLinks,\r\n possibleStudies: loginData.possibleStudies ? loginData.possibleStudies : [],\r\n addConsignationsToAsk: [],\r\n });\r\n }\r\n };\r\n\r\n const handleLogin = (username: string, password: string) => {\r\n setLoginModalShow({\r\n show: false,\r\n });\r\n getAuthorizeLoginData(username, password);\r\n };\r\n\r\n const handleDepartmentClick = () => {\r\n const reloadData: IReloadPageData = {\r\n reload: true,\r\n withJourneyReload: false,\r\n nextActiveStep: activeStep + 1,\r\n newStepValues: [\r\n {\r\n id: ID_CATEGORY_DEPARTMENT,\r\n clickable: true,\r\n active: false,\r\n completed: true,\r\n draft: false,\r\n },\r\n {\r\n id: ID_CATEGORY_REASON,\r\n clickable: true,\r\n active: true,\r\n completed: false,\r\n draft: false,\r\n },\r\n ],\r\n };\r\n setReloadPageData(reloadData);\r\n };\r\n\r\n const handleLocationClick = async (location: ICodeName) => {\r\n await getJourneyDataForHOME(location.code);\r\n const reloadData: IReloadPageData = {\r\n reload: true,\r\n withJourneyReload: false,\r\n nextActiveStep: activeStep + 1,\r\n newStepValues: [\r\n {\r\n id: ID_CATEGORY_LOCATION,\r\n clickable: true,\r\n active: false,\r\n completed: true,\r\n draft: false,\r\n },\r\n {\r\n id: ID_CATEGORY_DEPARTMENT,\r\n clickable: true,\r\n active: true,\r\n completed: false,\r\n draft: false,\r\n },\r\n ],\r\n };\r\n setReloadPageData(reloadData);\r\n };\r\n\r\n const handleReasonClick = () => {\r\n let reloadData: IReloadPageData = {\r\n reload: true,\r\n withJourneyReload: false,\r\n nextActiveStep: getStepId(ID_CATEGORY_PHYSICIAN),\r\n newStepValues: [\r\n {\r\n id: ID_CATEGORY_REASON,\r\n clickable: true,\r\n active: false,\r\n completed: true,\r\n draft: false,\r\n },\r\n {\r\n id: ID_CATEGORY_PHYSICIAN,\r\n clickable: true,\r\n active: true,\r\n completed: false,\r\n draft: false,\r\n },\r\n ],\r\n };\r\n if (isExtendedPhysicians()) {\r\n reloadData = {\r\n reload: true,\r\n withJourneyReload: false,\r\n // nextActiveStep: getActiveStep() + 1,\r\n nextActiveStep: getStepId(ID_APPOINTMENT_SELECTION_WITH_PHYSICIAN),\r\n newStepValues: [\r\n {\r\n id: ID_CATEGORY_REASON,\r\n clickable: true,\r\n active: false,\r\n completed: true,\r\n draft: false,\r\n },\r\n {\r\n id: ID_APPOINTMENT_SELECTION_WITH_PHYSICIAN,\r\n clickable: true,\r\n active: true,\r\n completed: false,\r\n draft: false,\r\n },\r\n ],\r\n };\r\n } else if (apstate.Appointment?.skipBehandlersuche) {\r\n reloadData = {\r\n reload: true,\r\n withJourneyReload: false,\r\n nextActiveStep: getStepId(ID_APPOINTMENT_SELECTION),\r\n newStepValues: [\r\n {\r\n id: ID_CATEGORY_REASON,\r\n clickable: true,\r\n active: false,\r\n completed: true,\r\n draft: false,\r\n },\r\n {\r\n id: ID_APPOINTMENT_SELECTION,\r\n clickable: true,\r\n active: true,\r\n completed: false,\r\n draft: false,\r\n },\r\n ],\r\n };\r\n }\r\n\r\n setReloadPageData(reloadData);\r\n };\r\n\r\n const handlePhysicianClick = (currentActiveStep: number) => {\r\n /* Ohne CheckInDesk -> Termin buchen Step kommt mit */\r\n let reloadData: IReloadPageData = {\r\n reload: true,\r\n withJourneyReload: false,\r\n nextActiveStep: currentActiveStep + 1,\r\n newStepValues: [\r\n {\r\n id: ID_CATEGORY_PHYSICIAN,\r\n clickable: true,\r\n active: false,\r\n completed: true,\r\n draft: false,\r\n },\r\n {\r\n id: ID_APPOINTMENT_SELECTION,\r\n clickable: true,\r\n active: true,\r\n completed: false,\r\n draft: false,\r\n },\r\n ],\r\n };\r\n /* Kein Termin buchen wenn an einem CheckInDesk -> wpName kommt mit -> Soforttermin */\r\n if (isCheckInWorkplace()) {\r\n reloadData = {\r\n reload: true,\r\n withJourneyReload: false,\r\n nextActiveStep: currentActiveStep + 1,\r\n newStepValues: [\r\n {\r\n id: ID_PERSONALDATA,\r\n clickable: true,\r\n active: true,\r\n completed: false,\r\n draft: false,\r\n },\r\n ],\r\n };\r\n } else if (isPerVideo()) {\r\n reloadData = {\r\n reload: true,\r\n withJourneyReload: false,\r\n nextActiveStep: currentActiveStep + 2,\r\n newStepValues: [\r\n {\r\n id: ID_PERSONALDATA,\r\n clickable: true,\r\n active: true,\r\n completed: false,\r\n draft: false,\r\n },\r\n ],\r\n };\r\n }\r\n\r\n setReloadPageData(reloadData);\r\n };\r\n\r\n const handleTimeslotClick = (currentActiveStep: number, hdBooking?: string) => {\r\n let newId;\r\n if (props.isPhysicianLogin) {\r\n newId = ID_PERSONALDATA;\r\n } else if (props.useLoginContext) {\r\n newId = ID_BOOKING;\r\n } else {\r\n newId = ID_PERSONALDATA;\r\n }\r\n let reloadData: IReloadPageData = {\r\n reload: true,\r\n withJourneyReload: false,\r\n nextActiveStep: currentActiveStep + 1,\r\n newStepValues: [\r\n {\r\n id: ID_APPOINTMENT_SELECTION,\r\n clickable: true,\r\n active: false,\r\n completed: true,\r\n draft: false,\r\n },\r\n {\r\n id: newId,\r\n clickable: true,\r\n active: true,\r\n completed: false,\r\n draft: false,\r\n },\r\n ],\r\n };\r\n\r\n if (isExtendedPhysicians()) {\r\n reloadData = {\r\n reload: true,\r\n withJourneyReload: false,\r\n nextActiveStep: currentActiveStep + 1,\r\n newStepValues: [\r\n {\r\n id: ID_APPOINTMENT_SELECTION_WITH_PHYSICIAN,\r\n clickable: true,\r\n active: false,\r\n completed: true,\r\n draft: false,\r\n },\r\n {\r\n id: newId,\r\n clickable: true,\r\n active: true,\r\n completed: false,\r\n draft: false,\r\n },\r\n ],\r\n };\r\n }\r\n setReloadPageData(reloadData);\r\n tmdispatch({\r\n type: 'TIMESLOTCLICKED',\r\n timeslotClicked: false,\r\n });\r\n };\r\n\r\n const handlePersonalDataNext = (currentActiveStep: number) => {\r\n const reloadData: IReloadPageData = {\r\n reload: true,\r\n withJourneyReload: false,\r\n nextActiveStep: currentActiveStep + 1,\r\n newStepValues: [\r\n {\r\n id: ID_PERSONALDATA,\r\n clickable: true,\r\n active: false,\r\n completed: true,\r\n draft: false,\r\n },\r\n {\r\n id: ID_BOOKING,\r\n clickable: true,\r\n active: true,\r\n completed: false,\r\n draft: false,\r\n },\r\n ],\r\n };\r\n setReloadPageData(reloadData);\r\n };\r\n\r\n const handleMyAppointmentNext = (currentActiveStep: number) => {\r\n const reloadData: IReloadPageData = {\r\n reload: true,\r\n withJourneyReload: false,\r\n nextActiveStep: getNextUnfinishedStepNumber(currentActiveStep),\r\n };\r\n setReloadPageData(reloadData);\r\n };\r\n\r\n const handleUploadNext = (currentActiveStep: number) => {\r\n const reloadData: IReloadPageData = {\r\n reload: true,\r\n withJourneyReload: false,\r\n nextActiveStep: getNextUnfinishedStepNumber(currentActiveStep),\r\n newStepValues: [\r\n {\r\n id: ID_FINALCHECKIN,\r\n clickable: true,\r\n active: true,\r\n completed: false,\r\n draft: false,\r\n },\r\n ],\r\n };\r\n setReloadPageData(reloadData);\r\n };\r\n\r\n const updateEnrollment = async () => {\r\n const enrollData: IEnrollData = await getEnrollData();\r\n if (tmstate.personalData.eGK.length > 0 || tmstate.personalData.kvBarcode.length > 0) {\r\n enrollData.eGK = tmstate.personalData.eGK;\r\n enrollData.kvBarcode = tmstate.personalData.kvBarcode;\r\n }\r\n await updateEnroll(enrollData, checkinstate.reason);\r\n };\r\n\r\n const getStepId = (stepCode: string) => {\r\n for (let i = 0; i < allSteps.length; i++) {\r\n if (allSteps[i].id == stepCode) {\r\n return i;\r\n }\r\n }\r\n return -1;\r\n };\r\n const handlePersonalDataNextAfterCardRead = (currentActiveStep: number) => {\r\n // updateEnrollment();\r\n setUpdateEnrollmentRequest(true);\r\n const reloadData: IReloadPageData = {\r\n reload: true,\r\n withJourneyReload: false,\r\n nextActiveStep: currentActiveStep + 1,\r\n newStepValues: [\r\n {\r\n id: ID_MYAPPOINTMENTS,\r\n clickable: true,\r\n active: true,\r\n completed: true,\r\n draft: false,\r\n },\r\n ],\r\n };\r\n setReloadPageData(reloadData);\r\n };\r\n\r\n const handleBookingClick = (response: any) => {\r\n if (props.isPhysicianLogin) {\r\n dispatch({\r\n type: 'SETACTIVEUSERID',\r\n activeUserId: response.userId,\r\n });\r\n\r\n const newPatient: IActivePatients = {\r\n patientId: response.userId,\r\n nameLast: response.patNameLast,\r\n nameFirst: response.patNameFirst,\r\n birthDate: response.patBirthDate,\r\n };\r\n\r\n setNewPatient(newPatient);\r\n // pushActivePatient(response.userId, state.sessionId);\r\n navigate(Paths.FRAGEBOGEN);\r\n }\r\n setRegisteredUserData({\r\n reason: response.reason,\r\n userId: response.userId,\r\n t0: response.t0,\r\n otp: response.otp,\r\n isCheckin: true,\r\n });\r\n if (response.enrollCode) {\r\n tmdispatch({\r\n type: 'SETENROLLCODE',\r\n enrollData: {\r\n enrollCode: response.enrollCode,\r\n },\r\n });\r\n }\r\n\r\n /* get AppProperties (jitsiDomain,...) to set Steps correctly in next Screen */\r\n getProperties();\r\n };\r\n const handleBookingCancelClick = () => {\r\n const resource_1 = getSelectedResource(1);\r\n if (resource_1) {\r\n unblockAppointment(resource_1);\r\n }\r\n if (props.useLoginContext) {\r\n navigate(Paths.TERMINE);\r\n } else {\r\n handleLogout();\r\n }\r\n };\r\n\r\n /**\r\n * ----------------------------------------------\r\n * ############ BEGIN STEPS AND CONTENT ###############\r\n * ----------------------------------------------\r\n */\r\n\r\n const ID_MYDATA = '__MYDATA'; // Meine Daten\r\n const ID_MYAPPOINTMENTS = '__MYAPPOINTMENTS'; // Meine Termine\r\n const ID_FINALCHECKIN = '__FINALCHECKIN'; // CheckIn\r\n const ID_CATEGORY_DEPARTMENT = '__CATDEPARTMENT'; // Fachrichtung\r\n const ID_CATEGORY_REASON = '__CATREASON'; // Besuchsgrund\r\n const ID_CATEGORY_PHYSICIAN = '__CATPHYSICIAN'; // Arztauswahl\r\n const ID_APPOINTMENT_SELECTION = '__APPOINTMENTSELECTION'; // Termin buchen\r\n const ID_APPOINTMENT_SELECTION_WITH_PHYSICIAN = '__APPOINTMENTSELECTION_WITH_PHYSICIAN'; // Termin buchen und Arzt Auswahl in einem Step\r\n const ID_PERSONALDATA = '__PERSONALDATA'; // Daten eingeben\r\n const ID_BOOKING = '__BOOKING'; // Termin bestätigen\r\n const ID_VIDEO = '__VIDEO'; // Video - Fenster\r\n const ID_CATEGORY_LOCATION = '__LOCATION'; // Standort Auswahl\r\n\r\n const ID_REGISTRATION = '__REGISTRATION'; // Registrierung\r\n const ID_UPLOAD = '__UPLOAD'; // Briefe und Befunde\r\n const ID_ROUTE = '__ROUTE';\r\n\r\n const getRestHeight = () => {\r\n try {\r\n const navbar = document.body.querySelector('nav.navbar');\r\n const stepbar = document.getElementById('steppercheckinparent');\r\n const vh = screenSize.height;\r\n if (navbar && stepbar) {\r\n const resHeight = vh - navbar.clientHeight - stepbar?.offsetHeight - 10;\r\n return resHeight + 'px';\r\n }\r\n } catch (ex) {}\r\n return '100%';\r\n };\r\n const getInitialSteps = () => {\r\n let steps: IStepperCheckInStep[] = [];\r\n\r\n /* handle possible change of step */\r\n let newStepsToSet = false;\r\n if (reloadPageData.newStepValues && reloadPageData.newStepValues.length > 0) {\r\n reloadPageData.newStepValues.forEach((newStep) => {\r\n if (newStep.id?.length > 0) {\r\n const newSteps = changeStep(steps.length > 0 ? steps : allSteps, newStep, true);\r\n if (newSteps) {\r\n steps = newSteps;\r\n newStepsToSet = true;\r\n }\r\n setActiveStep(reloadPageData.nextActiveStep);\r\n }\r\n });\r\n }\r\n\r\n if (!newStepsToSet) {\r\n let journeyResp = props.journeyResponse;\r\n if (journeyData !== undefined) {\r\n journeyResp = journeyData;\r\n }\r\n\r\n const videoIsActive =\r\n apstate.jitsiDomain &&\r\n tmstate.enrollData &&\r\n tmstate.enrollData.enrollCode &&\r\n tmstate.enrollData.isToday &&\r\n !videochatHangup;\r\n\r\n if (isRegisteredUser()) {\r\n /* Meine DATEN */\r\n steps.push({\r\n id: ID_MYDATA,\r\n name: 'Meine Daten',\r\n typ: StepTyp.Normal,\r\n completed: true,\r\n draft: false,\r\n active: videoIsActive ? false : true,\r\n clickable: true,\r\n });\r\n\r\n /* Meine Termine */\r\n steps.push({\r\n id: ID_MYAPPOINTMENTS,\r\n name: 'Meine Termine',\r\n typ: StepTyp.Normal,\r\n completed: true,\r\n draft: false,\r\n active: false,\r\n clickable: true,\r\n });\r\n\r\n /* Rest */\r\n journeyResp?.forms.forEach((form) => {\r\n let finished = false;\r\n let draft = false;\r\n if (form.finalURL) {\r\n finished = true;\r\n } else if (form.draftURL) {\r\n draft = true;\r\n }\r\n steps.push({\r\n id: form.id,\r\n name: form.name,\r\n typ: StepTyp.Journey,\r\n completed: finished,\r\n draft: draft,\r\n active: false,\r\n clickable: true,\r\n url: form.url,\r\n }); //all questionnaire steps\r\n });\r\n\r\n /* CheckIn (wenn an einem workplace) */\r\n if (isCheckInWorkplace()) {\r\n steps.push({\r\n id: ID_FINALCHECKIN,\r\n name: 'CheckIn',\r\n typ: StepTyp.Normal,\r\n completed: false,\r\n draft: false,\r\n active: false,\r\n clickable: true,\r\n });\r\n } else if (apstate.jitsiDomain && tmstate.enrollData && tmstate.enrollData.enrollCode) {\r\n steps.push({\r\n id: ID_VIDEO,\r\n name: 'Videosprechstunde',\r\n typ: StepTyp.Normal,\r\n completed: false,\r\n draft: false,\r\n active: videoIsActive ? true : false,\r\n clickable: true,\r\n }); //all questionnaire steps\r\n }\r\n\r\n /**\r\n * ------------------------------\r\n * additional adaptions to steps\r\n * ------------------------------\r\n */\r\n\r\n /* set the active step to first clickable unfinished journey step */\r\n for (let i = 0; i < steps.length; i++) {\r\n if (steps[i].typ === StepTyp.Journey && steps[i].clickable && !steps[i].completed) {\r\n steps[i].active = true;\r\n break;\r\n }\r\n }\r\n\r\n /* set next active step after reload \r\n (e.g. pdf closed -> handleClosePDF() -> getNextUnfinishedStepNumber() -> reload)\r\n */\r\n if (reloadPageData.reload) {\r\n steps[reloadPageData.nextActiveStep].active = true;\r\n }\r\n } else if (props.isPhysicianLogin) {\r\n if (isExtendedPhysicians()) {\r\n if (hasAnmeldContexts()) {\r\n steps.push({\r\n id: ID_CATEGORY_LOCATION,\r\n name: 'Standort',\r\n typ: StepTyp.Normal,\r\n completed: false,\r\n draft: false,\r\n active: false,\r\n clickable: true,\r\n });\r\n }\r\n steps.push({\r\n id: ID_CATEGORY_DEPARTMENT,\r\n name: 'Fachrichtung',\r\n typ: StepTyp.Normal,\r\n completed: false,\r\n draft: false,\r\n active: false,\r\n clickable: true,\r\n });\r\n steps.push({\r\n id: ID_CATEGORY_REASON,\r\n name: 'Besuchsgrund',\r\n typ: StepTyp.Normal,\r\n completed: false,\r\n draft: false,\r\n active: false,\r\n clickable: false,\r\n });\r\n steps.push({\r\n id: ID_APPOINTMENT_SELECTION_WITH_PHYSICIAN,\r\n name: 'Termin buchen',\r\n typ: StepTyp.Normal,\r\n completed: false,\r\n draft: false,\r\n active: false,\r\n clickable: false,\r\n });\r\n steps.push({\r\n id: ID_PERSONALDATA,\r\n name: 'Daten eingeben',\r\n typ: StepTyp.Normal,\r\n completed: false,\r\n draft: false,\r\n active: false,\r\n clickable: false,\r\n });\r\n steps.push({\r\n id: ID_BOOKING,\r\n name: 'Termin bestätigen',\r\n typ: StepTyp.Normal,\r\n completed: false,\r\n draft: false,\r\n active: false,\r\n clickable: false,\r\n });\r\n } else {\r\n steps.push({\r\n id: ID_CATEGORY_DEPARTMENT,\r\n name: 'Fachrichtung',\r\n typ: StepTyp.Normal,\r\n completed: false,\r\n draft: false,\r\n active: false,\r\n clickable: true,\r\n });\r\n steps.push({\r\n id: ID_CATEGORY_REASON,\r\n name: 'Besuchsgrund',\r\n typ: StepTyp.Normal,\r\n completed: false,\r\n draft: false,\r\n active: false,\r\n clickable: false,\r\n });\r\n if (!apstate.Appointment?.skipBehandlersuche) {\r\n steps.push({\r\n id: ID_CATEGORY_PHYSICIAN,\r\n name: 'Behandler',\r\n typ: StepTyp.Normal,\r\n completed: false,\r\n draft: false,\r\n active: false,\r\n clickable: false,\r\n });\r\n }\r\n\r\n steps.push({\r\n id: ID_APPOINTMENT_SELECTION,\r\n name: 'Termin buchen',\r\n typ: StepTyp.Normal,\r\n completed: false,\r\n draft: false,\r\n active: false,\r\n clickable: false,\r\n });\r\n steps.push({\r\n id: ID_PERSONALDATA,\r\n name: 'Daten eingeben',\r\n typ: StepTyp.Normal,\r\n completed: false,\r\n draft: false,\r\n active: false,\r\n clickable: false,\r\n });\r\n steps.push({\r\n id: ID_BOOKING,\r\n name: 'Termin bestätigen',\r\n typ: StepTyp.Normal,\r\n completed: false,\r\n draft: false,\r\n active: false,\r\n clickable: false,\r\n });\r\n }\r\n } else if (props.useLoginContext) {\r\n if (isExtendedPhysicians()) {\r\n if (hasAnmeldContexts()) {\r\n steps.push({\r\n id: ID_CATEGORY_LOCATION,\r\n name: 'Standort',\r\n typ: StepTyp.Normal,\r\n completed: false,\r\n draft: false,\r\n active: false,\r\n clickable: true,\r\n });\r\n }\r\n steps.push({\r\n id: ID_CATEGORY_DEPARTMENT,\r\n name: 'Fachrichtung',\r\n typ: StepTyp.Normal,\r\n completed: false,\r\n draft: false,\r\n active: false,\r\n clickable: true,\r\n });\r\n steps.push({\r\n id: ID_CATEGORY_REASON,\r\n name: 'Besuchsgrund',\r\n typ: StepTyp.Normal,\r\n completed: false,\r\n draft: false,\r\n active: false,\r\n clickable: false,\r\n });\r\n steps.push({\r\n id: ID_APPOINTMENT_SELECTION_WITH_PHYSICIAN,\r\n name: 'Termin buchen',\r\n typ: StepTyp.Normal,\r\n completed: false,\r\n draft: false,\r\n active: false,\r\n clickable: false,\r\n });\r\n steps.push({\r\n id: ID_BOOKING,\r\n name: 'Termin bestätigen',\r\n typ: StepTyp.Normal,\r\n completed: false,\r\n draft: false,\r\n active: false,\r\n clickable: false,\r\n });\r\n /* physicians and timeslots in seperated steps*/\r\n } else {\r\n if (hasAnmeldContexts()) {\r\n steps.push({\r\n id: ID_CATEGORY_LOCATION,\r\n name: 'Standort',\r\n typ: StepTyp.Normal,\r\n completed: false,\r\n draft: false,\r\n active: false,\r\n clickable: true,\r\n });\r\n }\r\n steps.push({\r\n id: ID_CATEGORY_DEPARTMENT,\r\n name: 'Fachrichtung',\r\n typ: StepTyp.Normal,\r\n completed: false,\r\n draft: false,\r\n active: false,\r\n clickable: true,\r\n });\r\n steps.push({\r\n id: ID_CATEGORY_REASON,\r\n name: 'Besuchsgrund',\r\n typ: StepTyp.Normal,\r\n completed: false,\r\n draft: false,\r\n active: false,\r\n clickable: false,\r\n });\r\n if (!apstate.Appointment?.skipBehandlersuche) {\r\n steps.push({\r\n id: ID_CATEGORY_PHYSICIAN,\r\n name: 'Behandler',\r\n typ: StepTyp.Normal,\r\n completed: false,\r\n draft: false,\r\n active: false,\r\n clickable: false,\r\n });\r\n }\r\n\r\n steps.push({\r\n id: ID_APPOINTMENT_SELECTION,\r\n name: 'Termin buchen',\r\n typ: StepTyp.Normal,\r\n completed: false,\r\n draft: false,\r\n active: false,\r\n clickable: false,\r\n });\r\n steps.push({\r\n id: ID_BOOKING,\r\n name: 'Termin bestätigen',\r\n typ: StepTyp.Normal,\r\n completed: false,\r\n draft: false,\r\n active: false,\r\n clickable: false,\r\n });\r\n }\r\n } else {\r\n if (props.newAccountHashParams) {\r\n /* Termin / Reigistrierung */\r\n if (journeyResp !== undefined && journeyResp?.departments?.length > 0) {\r\n /* Kein Termin buchen wenn an einem CheckInDesk -> wpName kommt mit -> Soforttermin */\r\n if (isCheckInWorkplace()) {\r\n steps.push({\r\n id: ID_CATEGORY_DEPARTMENT,\r\n name: 'Fachrichtung',\r\n typ: StepTyp.Normal,\r\n completed: false,\r\n draft: false,\r\n active: false,\r\n clickable: true,\r\n });\r\n steps.push({\r\n id: ID_CATEGORY_REASON,\r\n name: 'Besuchsgrund',\r\n typ: StepTyp.Normal,\r\n completed: false,\r\n draft: false,\r\n active: false,\r\n clickable: false,\r\n });\r\n if (!apstate.Appointment?.skipBehandlersuche) {\r\n steps.push({\r\n id: ID_CATEGORY_PHYSICIAN,\r\n name: 'Behandler',\r\n typ: StepTyp.Normal,\r\n completed: false,\r\n draft: false,\r\n active: false,\r\n clickable: false,\r\n });\r\n }\r\n\r\n steps.push({\r\n id: ID_PERSONALDATA,\r\n name: 'Daten eingeben',\r\n typ: StepTyp.Normal,\r\n completed: false,\r\n draft: false,\r\n active: false,\r\n clickable: false,\r\n });\r\n steps.push({\r\n id: ID_BOOKING,\r\n name: 'Termin bestätigen',\r\n typ: StepTyp.Normal,\r\n completed: false,\r\n draft: false,\r\n active: false,\r\n clickable: false,\r\n });\r\n /* Ohne CheckInDesk, wpName kommt nicht mit -> Buchung von daheim -> Termin buchen muss angezeigt werden */\r\n } else {\r\n /* physicans and timeslots in one step */\r\n if (isExtendedPhysicians()) {\r\n steps.push({\r\n id: ID_CATEGORY_DEPARTMENT,\r\n name: 'Fachrichtung',\r\n typ: StepTyp.Normal,\r\n completed: false,\r\n draft: false,\r\n active: false,\r\n clickable: true,\r\n });\r\n steps.push({\r\n id: ID_CATEGORY_REASON,\r\n name: 'Besuchsgrund',\r\n typ: StepTyp.Normal,\r\n completed: false,\r\n draft: false,\r\n active: false,\r\n clickable: false,\r\n });\r\n steps.push({\r\n id: ID_APPOINTMENT_SELECTION_WITH_PHYSICIAN,\r\n name: 'Termin buchen',\r\n typ: StepTyp.Normal,\r\n completed: false,\r\n draft: false,\r\n active: false,\r\n clickable: false,\r\n });\r\n steps.push({\r\n id: ID_PERSONALDATA,\r\n name: 'Daten eingeben',\r\n typ: StepTyp.Normal,\r\n completed: false,\r\n draft: false,\r\n active: false,\r\n clickable: false,\r\n });\r\n steps.push({\r\n id: ID_BOOKING,\r\n name: 'Termin bestätigen',\r\n typ: StepTyp.Normal,\r\n completed: false,\r\n draft: false,\r\n active: false,\r\n clickable: false,\r\n });\r\n /* physicians and timeslots in seperated steps*/\r\n } else {\r\n steps.push({\r\n id: ID_CATEGORY_DEPARTMENT,\r\n name: 'Fachrichtung',\r\n typ: StepTyp.Normal,\r\n completed: false,\r\n draft: false,\r\n active: false,\r\n clickable: true,\r\n });\r\n steps.push({\r\n id: ID_CATEGORY_REASON,\r\n name: 'Besuchsgrund',\r\n typ: StepTyp.Normal,\r\n completed: false,\r\n draft: false,\r\n active: false,\r\n clickable: false,\r\n });\r\n if (!apstate.Appointment?.skipBehandlersuche) {\r\n steps.push({\r\n id: ID_CATEGORY_PHYSICIAN,\r\n name: 'Behandler',\r\n typ: StepTyp.Normal,\r\n completed: false,\r\n draft: false,\r\n active: false,\r\n clickable: false,\r\n });\r\n }\r\n steps.push({\r\n id: ID_APPOINTMENT_SELECTION,\r\n name: 'Termin buchen',\r\n typ: StepTyp.Normal,\r\n completed: false,\r\n draft: false,\r\n active: false,\r\n clickable: false,\r\n });\r\n steps.push({\r\n id: ID_PERSONALDATA,\r\n name: 'Daten eingeben',\r\n typ: StepTyp.Normal,\r\n completed: false,\r\n draft: false,\r\n active: false,\r\n clickable: false,\r\n });\r\n steps.push({\r\n id: ID_BOOKING,\r\n name: 'Termin bestätigen',\r\n typ: StepTyp.Normal,\r\n completed: false,\r\n draft: false,\r\n active: false,\r\n clickable: false,\r\n });\r\n }\r\n }\r\n } else {\r\n steps.push({\r\n id: ID_REGISTRATION,\r\n name: 'Registrierung',\r\n typ: StepTyp.Normal,\r\n completed: false,\r\n draft: false,\r\n active: true,\r\n clickable: true,\r\n });\r\n }\r\n }\r\n }\r\n }\r\n\r\n setAllSteps(steps);\r\n };\r\n\r\n const getContent = (step?: number) => {\r\n let journeyResp = props.journeyResponse;\r\n if (journeyData !== undefined) {\r\n journeyResp = journeyData;\r\n }\r\n\r\n let stepContent = activeStep;\r\n if (step !== undefined) {\r\n stepContent = step;\r\n }\r\n\r\n allowMessages();\r\n\r\n conState.done = true;\r\n if (allSteps.length <= 0) {\r\n conState.done = false;\r\n return null;\r\n }\r\n if (isRegisteredUser()) {\r\n if (allSteps.length > 0) {\r\n if (allSteps[stepContent].id === ID_VIDEO) {\r\n // forbidMessages();\r\n return ;\r\n } else if (allSteps[stepContent].id === ID_MYDATA) {\r\n return (\r\n \r\n \r\n \r\n );\r\n } else if (allSteps[stepContent].id === ID_MYAPPOINTMENTS) {\r\n if (updateEnrollmentRequest) {\r\n updateEnrollment();\r\n setUpdateEnrollmentRequest(false);\r\n }\r\n\r\n return (\r\n \r\n \r\n \r\n );\r\n } else if (allSteps[stepContent].id === ID_UPLOAD) {\r\n return (\r\n \r\n \r\n \r\n );\r\n } else if (allSteps[stepContent].id === ID_ROUTE) {\r\n return (\r\n \r\n \r\n \r\n );\r\n } else if (allSteps[stepContent].id === ID_FINALCHECKIN) {\r\n return ;\r\n } else {\r\n return {showQuestionnaireEntries(stepContent)};\r\n }\r\n }\r\n } else if (false && props.isPhysicianLogin) {\r\n /* Als Arzt angemeldet -> will neuen Account fuer Patienten anlegen */\r\n /*\r\n if (stepContent === 0) {\r\n if (journeyResp !== undefined && journeyResp?.departments?.length > 0) {\r\n return (\r\n \r\n );\r\n } else if (props.useLoginContext) {\r\n return (\r\n \r\n );\r\n }\r\n } else if (allSteps[stepContent].id === ID_CATEGORY_REASON) {\r\n return (\r\n \r\n );\r\n } else if (allSteps[stepContent].id === ID_CATEGORY_PHYSICIAN) {\r\n return (\r\n \r\n );\r\n } else if (allSteps[stepContent].id === ID_APPOINTMENT_SELECTION) {\r\n return (\r\n \r\n \r\n \r\n );\r\n } else if (allSteps[stepContent].id === ID_PERSONALDATA) {\r\n return (\r\n \r\n \r\n \r\n );\r\n } else if (allSteps[stepContent].id === ID_BOOKING) {\r\n return (\r\n \r\n \r\n \r\n );\r\n } else {\r\n return showQuestionnaireEntries(stepContent);\r\n }\r\n */\r\n } else {\r\n /* Kein Termin buchen wenn an einem CheckInDesk -> wpName kommt mit -> Soforttermin */\r\n if (isCheckInWorkplace()) {\r\n if (stepContent === 0) {\r\n if (journeyResp !== undefined && journeyResp?.departments?.length > 0) {\r\n return (\r\n \r\n );\r\n } else {\r\n return (\r\n \r\n );\r\n }\r\n } else if (allSteps[stepContent].id === ID_CATEGORY_REASON) {\r\n return (\r\n \r\n );\r\n } else if (allSteps[stepContent].id === ID_CATEGORY_PHYSICIAN) {\r\n return (\r\n \r\n );\r\n } else if (allSteps[stepContent].id === ID_PERSONALDATA) {\r\n return (\r\n \r\n \r\n \r\n );\r\n } else if (allSteps[stepContent].id === ID_BOOKING) {\r\n return (\r\n \r\n \r\n \r\n );\r\n } else {\r\n return showQuestionnaireEntries(stepContent);\r\n }\r\n } else {\r\n if (isExtendedPhysicians()) {\r\n /* Terminauswahl und Arztauswahl in einem Step */\r\n if (allSteps[stepContent].id == ID_CATEGORY_LOCATION) {\r\n return ;\r\n } else if (allSteps[stepContent].id == ID_CATEGORY_DEPARTMENT) {\r\n if (journeyResp !== undefined && journeyResp?.departments?.length > 0) {\r\n return (\r\n \r\n );\r\n } else if (props.useLoginContext) {\r\n return (\r\n \r\n );\r\n } else {\r\n return (\r\n \r\n );\r\n }\r\n } else if (allSteps[stepContent].id === ID_CATEGORY_REASON) {\r\n return (\r\n \r\n );\r\n } else if (allSteps[stepContent].id === ID_APPOINTMENT_SELECTION_WITH_PHYSICIAN) {\r\n return (\r\n \r\n );\r\n } else if (allSteps[stepContent].id === ID_PERSONALDATA) {\r\n return (\r\n \r\n \r\n \r\n );\r\n } else if (allSteps[stepContent].id === ID_BOOKING) {\r\n return (\r\n \r\n \r\n \r\n );\r\n } else {\r\n return showQuestionnaireEntries(stepContent);\r\n }\r\n } else {\r\n /* Ohne CheckInDesk, wpName kommt nicht mit -> Buchung von daheim -> Termin buchen muss angezeigt werden */\r\n if (allSteps[stepContent].id == ID_CATEGORY_LOCATION) {\r\n return ;\r\n } else if (allSteps[stepContent].id == ID_CATEGORY_DEPARTMENT) {\r\n if (journeyResp !== undefined && journeyResp?.departments?.length > 0) {\r\n return (\r\n \r\n );\r\n } else if (props.useLoginContext) {\r\n return (\r\n \r\n );\r\n } else {\r\n return (\r\n \r\n );\r\n }\r\n } else if (allSteps[stepContent].id === ID_CATEGORY_REASON) {\r\n return (\r\n \r\n );\r\n } else if (allSteps[stepContent].id === ID_CATEGORY_PHYSICIAN) {\r\n return (\r\n \r\n );\r\n } else if (allSteps[stepContent].id === ID_APPOINTMENT_SELECTION) {\r\n return (\r\n \r\n \r\n \r\n );\r\n } else if (allSteps[stepContent].id === ID_PERSONALDATA) {\r\n return (\r\n \r\n \r\n \r\n );\r\n } else if (allSteps[stepContent].id === ID_BOOKING) {\r\n return (\r\n \r\n \r\n \r\n );\r\n } else {\r\n return showQuestionnaireEntries(stepContent);\r\n }\r\n }\r\n }\r\n }\r\n\r\n conState.done = false;\r\n return null;\r\n };\r\n\r\n const inMeineDatan = () => {\r\n if (allSteps[activeStep]?.id == ID_MYDATA || allSteps[activeStep]?.id == ID_PERSONALDATA) {\r\n return true;\r\n }\r\n return false;\r\n };\r\n\r\n const contentToShow = () => {\r\n if (showLoadingSpinner) {\r\n return (\r\n
    \r\n \r\n
    \r\n );\r\n } else if (inMeineDatan() && (isLoggedIn || (isRegisteredUser() && !isCheckInWorkplace()))) {\r\n /* we must unmount the PersonalData Page with this dummy LoadingSpinner to be sure that the personal data is filled in correctly when tmstate.personalData is set with values */\r\n if (tmstate.personalData.lastName.length <= 0) {\r\n return (\r\n
    \r\n \r\n
    \r\n );\r\n } else {\r\n return getContent();\r\n }\r\n } else if (isCheckInWorkplace()) {\r\n /* we must unmount the PersonalData Page with this dummy LoadingSpinner to be sure that the personal data is filled in correctly when tmstate.personalData is set with values */\r\n if (\r\n cardReadClickedInPersData ||\r\n !initPageDone ||\r\n (isRegisteredUser() && tmstate.personalData.lastName.length <= 0)\r\n ) {\r\n return (\r\n
    \r\n \r\n
    \r\n );\r\n } else {\r\n // return getContent();\r\n return
    {activeContent}
    ;\r\n }\r\n } else {\r\n return
    {activeContent}
    ;\r\n }\r\n };\r\n\r\n interface INavbarAndStepper {\r\n fullscreenMode: boolean;\r\n }\r\n const NavbarAndStepper = (props: INavbarAndStepper) => {\r\n if (props.fullscreenMode) {\r\n return null;\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 };\r\n\r\n /**\r\n * --------------------------------------------------------\r\n * ############### END STEPS AND CONTENT ##################\r\n * --------------------------------------------------------\r\n */\r\n\r\n const impressum = getImpressum();\r\n\r\n const showImpressum = () => {\r\n if (props.useLoginContext) {\r\n return false;\r\n }\r\n if (isFullscreenMode()) {\r\n return false;\r\n }\r\n return true;\r\n };\r\n\r\n return (\r\n \r\n \r\n {props.useLoginContext ? (\r\n \r\n \r\n \r\n \r\n \r\n ) : (\r\n \r\n )}\r\n {contentToShow()}\r\n\r\n handleClosePDFModal()}\r\n modalTitle={pdfModalShow.modalTitle}\r\n pdfData={pdfModalShow.pdfData}\r\n isSignable={pdfModalShow.isSignable}\r\n isSigned={pdfModalShow.isSigned}\r\n diagnosticReportData={pdfModalShow.diagnosticReportData}\r\n fullScreen={true}\r\n />\r\n handleCloseLoginModal()}\r\n onLoginClick={handleLogin}\r\n />\r\n onTelephoneCallAccept()}\r\n onCallOff={() => onTelephoneCallOff()}\r\n onCallHide={() => onTelephoneHide()}\r\n />\r\n \r\n \r\n );\r\n};\r\n\r\nexport default CheckInWL;\r\n","import { useCallback } from 'react';\r\n\r\nexport const useMessages = () => {\r\n const allowMessages = useCallback(() => {\r\n window.app.allowVideochatMessages = true;\r\n }, []);\r\n\r\n const forbidMessages = useCallback(() => {\r\n window.app.allowVideochatMessages = false;\r\n }, []);\r\n\r\n const videochatMessagesAllowed = useCallback(() => {\r\n return window.app.allowVideochatMessages;\r\n }, []);\r\n\r\n return {\r\n allowMessages,\r\n forbidMessages,\r\n videochatMessagesAllowed,\r\n };\r\n};\r\n","import { useCallback, useContext } from 'react';\r\nimport { IAuthData } from '../container/CheckIn/CheckInWL';\r\nimport LoginContext from '../context/loginContext';\r\nimport TerminierungContext from '../context/terminierungContext';\r\nimport { getFullOTPAuthorization } from '../utils/pcpUtils';\r\n\r\nexport const useAuth = () => {\r\n const { state, dispatch } = useContext(LoginContext);\r\n const { tmdispatch } = useContext(TerminierungContext);\r\n\r\n const setCheckInAuth = useCallback(\r\n (authData: IAuthData) => {\r\n const auth = getFullOTPAuthorization('PCP', authData.otp, authData.userId, authData.t0);\r\n dispatch({\r\n type: 'SETCHECKINAUTH',\r\n userId: authData.userId,\r\n activeUserId: authData.userId,\r\n sessionId: auth,\r\n });\r\n tmdispatch({\r\n type: 'SETWITHCHECKIN',\r\n withCheckIn: true,\r\n });\r\n },\r\n [dispatch],\r\n );\r\n\r\n const hasAnmeldContexts = () => {\r\n if (state.anmeldeContexts && state.anmeldeContexts.length > 0) {\r\n return true;\r\n }\r\n return false;\r\n };\r\n\r\n return {\r\n setCheckInAuth,\r\n hasAnmeldContexts,\r\n };\r\n};\r\n","import Card from 'react-bootstrap/Card';\r\nimport Col from 'react-bootstrap/Col';\r\nimport Nav from 'react-bootstrap/Nav';\r\nimport { IconBaseProps } from 'react-icons/lib';\r\nimport { Link, useNavigate } from 'react-router-dom';\r\nimport useScreenResolution from '../../hooks/useScreenResolution';\r\nimport { isMobile, isTablet } from '../../utils/screenResolution';\r\nimport { StyledMainCard } from '../Cards/StyledCard';\r\n\r\ninterface ICardContent {\r\n type: string;\r\n route: string;\r\n title: string;\r\n text?: string;\r\n icon?: IconBaseProps;\r\n}\r\n\r\nfunction getCardWidth(screenWidth: number) {\r\n if (isTablet(screenWidth)) {\r\n return '380px';\r\n } else if (isMobile(screenWidth)) {\r\n return '300px';\r\n } else {\r\n return '380px';\r\n }\r\n}\r\n\r\nconst StyledCardContent = (props: ICardContent) => {\r\n const navigate = useNavigate();\r\n const screenSize = useScreenResolution();\r\n const cardWidth = getCardWidth(screenSize.width);\r\n\r\n if (props.type === 'link' && props.icon) {\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n {props.title}\r\n {props.icon}\r\n \r\n \r\n \r\n \r\n \r\n );\r\n }\r\n if (props.type === 'link' && props.text) {\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n {props.title}\r\n {props.text}\r\n \r\n \r\n \r\n \r\n \r\n );\r\n }\r\n if (props.type === 'clickOpen') {\r\n const url: string = props.route;\r\n return (\r\n \r\n window.open(url, '_blank')}>\r\n \r\n \r\n \r\n {props.title}\r\n {props.icon}\r\n \r\n \r\n \r\n \r\n \r\n );\r\n }\r\n if (props.type === 'clickPush') {\r\n return (\r\n \r\n navigate(props.route)}>\r\n \r\n \r\n \r\n {props.title}\r\n {props.icon}\r\n \r\n \r\n \r\n \r\n \r\n );\r\n } else {\r\n return

    Card content cannot be loaded (props.type does not match)

    ;\r\n }\r\n};\r\n\r\nexport default StyledCardContent;\r\n","export interface IFile {\r\n name: string;\r\n lastModified: number;\r\n lastModifiedDate: Date;\r\n size: number;\r\n type: string;\r\n data: any;\r\n title: string;\r\n conclusion: string;\r\n uploaded: boolean;\r\n}\r\n\r\nexport const prettyByte = (sizeInByte: number) => {\r\n if (sizeInByte < 1024) {\r\n const sizeInByteFixed = sizeInByte.toFixed(2);\r\n return sizeInByteFixed.toString() + ' Byte';\r\n } else if (sizeInByte >= 1024 && sizeInByte < 1048576) {\r\n const sizeInKB = sizeInByte / 1024;\r\n const sizeInKBFixed = sizeInKB.toFixed(2);\r\n return sizeInKBFixed.toString() + ' KB';\r\n } else {\r\n const sizeInMB = sizeInByte / 1024 / 1024;\r\n const sizeInMBFixed = sizeInMB.toFixed(2);\r\n return sizeInMBFixed.toString() + ' MB';\r\n }\r\n};\r\n\r\nexport const isFileTypeAccepted = (fileName: string, acceptedTypes: string) => {\r\n if (acceptedTypes && acceptedTypes.length > 0) {\r\n const allAcceptedTypes = acceptedTypes.split(',');\r\n let accept = false;\r\n allAcceptedTypes.forEach((e) => {\r\n const fileType = e.trim();\r\n if (fileName.endsWith(fileType)) {\r\n accept = true;\r\n }\r\n });\r\n\r\n return accept;\r\n }\r\n\r\n return true;\r\n};\r\n","import * as React from 'react';\r\nimport Carousel from 'react-bootstrap/esm/Carousel';\r\nimport Modal from 'react-bootstrap/Modal';\r\nimport styled from 'styled-components';\r\nimport useScreenResolution from '../../../hooks/useScreenResolution';\r\nimport { isMobile, isTablet } from '../../../utils/screenResolution';\r\nimport StyledButton from '../../Buttons/StyledButton';\r\nimport './PhotoModal.css';\r\n\r\nexport interface IPhotoModal {\r\n show: boolean;\r\n itemMargin: string;\r\n index: number;\r\n onHide: () => void;\r\n modalTitle: string;\r\n modalDate: string;\r\n photoData: any[];\r\n handleSelect: (selectedIndex: React.SetStateAction) => void;\r\n}\r\n\r\ninterface IPhotoModalFrame {\r\n width: string;\r\n height: string;\r\n}\r\n\r\nconst ModalCst = styled(Modal)`\r\n .modal-dialog {\r\n max-width: ${(props) => (props.width ? props.width : '40%')};\r\n max-height: ${(props) => (props.heigth ? props.height : '50%')};\r\n margin: 1.75rem auto;\r\n }\r\n .modal-content {\r\n border-radius: ${(prop) => (prop.borderRadius ? prop.borderRadius : prop.theme.modal.borderRadius)};\r\n box-shadow: ${(prop) => (prop.boxShadow ? prop.boxShadow : prop.theme.modal.boxShadow)};\r\n }\r\n`;\r\n\r\nfunction getWidth(screenWidth: number) {\r\n if (isMobile(screenWidth) || isTablet(screenWidth)) {\r\n return { width: '80%', height: '90%' };\r\n } else {\r\n return { width: '40%', height: '50%' };\r\n }\r\n}\r\n\r\nconst PhotoModal = (props: IPhotoModal) => {\r\n const screenSize = useScreenResolution();\r\n const modalSize = getWidth(screenSize.width);\r\n\r\n return (\r\n <>\r\n props.onHide()} width={modalSize.width} height={modalSize.height}>\r\n \r\n {props.modalTitle}\r\n \r\n \r\n
    \r\n

    {props.modalDate}

    \r\n {props.photoData.length > 1 ? (\r\n \r\n {props.photoData}\r\n \r\n ) : (\r\n {props.photoData}\r\n )}\r\n
    \r\n
    \r\n \r\n props.onHide()}>Schließen\r\n \r\n
    \r\n \r\n );\r\n};\r\n\r\nexport default PhotoModal;\r\n","import moment from 'moment';\r\nimport * as React from 'react';\r\nimport { useContext, useEffect, useState } from 'react';\r\nimport Alert from 'react-bootstrap/Alert';\r\nimport Card from 'react-bootstrap/Card';\r\nimport Col from 'react-bootstrap/Col';\r\nimport Container from 'react-bootstrap/Container';\r\nimport Image from 'react-bootstrap/Image';\r\nimport Row from 'react-bootstrap/Row';\r\nimport Spinner from 'react-bootstrap/Spinner';\r\nimport Carousel from 'react-bootstrap/esm/Carousel';\r\nimport Nav from 'react-bootstrap/esm/Nav';\r\nimport { FaRegFilePdf } from 'react-icons/fa';\r\nimport ReactPanZoom from 'react-image-pan-zoom-rotate';\r\nimport { ThemeContext } from 'styled-components';\r\nimport { IPDFModalShow } from '../../container/Dokumente/Dokumente';\r\nimport AlertContext from '../../context/alertContext';\r\nimport LoginContext from '../../context/loginContext';\r\nimport useScreenResolution from '../../hooks/useScreenResolution';\r\nimport { getDiagnosticReport, getDiagnosticReportsByCategory } from '../../services/fhir/FHIRDiagnosticReports';\r\nimport { getPDFDataFromDiagnosticReportResponse } from '../../utils/documentUtils';\r\nimport { IPhotoModalShow } from '../../utils/modalUtils';\r\nimport { IPhotoItem, IPhotoRep, fullSrc } from '../../utils/photoUtils';\r\nimport { isMobile, isTablet } from '../../utils/screenResolution';\r\nimport { StyledPhotoCard } from '../Cards/StyledCard';\r\nimport IFramePDF from '../IFrame/IFramePDF';\r\nimport PDFModal from '../Modals/PDFModal/PDFModal';\r\nimport PhotoModal from '../Modals/PhotoModal/PhotoModal';\r\nimport './UploadContentCards.css';\r\n\r\nfunction getAlertSize(screenWidth: number) {\r\n if (isTablet(screenWidth)) {\r\n return '60%';\r\n } else if (isMobile(screenWidth)) {\r\n return '90%';\r\n } else {\r\n return '50%';\r\n }\r\n}\r\n\r\nfunction getCardSize(screenWidth: number) {\r\n if (isTablet(screenWidth)) {\r\n return '300px';\r\n } else if (isMobile(screenWidth)) {\r\n return '270px';\r\n } else {\r\n return '300px';\r\n }\r\n}\r\n\r\nfunction getMargins(screenWidth: number) {\r\n if (isTablet(screenWidth)) {\r\n return '35px';\r\n } else if (isMobile(screenWidth)) {\r\n return '20px';\r\n } else {\r\n return '40px';\r\n }\r\n}\r\n\r\ninterface IUploadContentCards {\r\n refreshPhotos: boolean;\r\n resetRefresh: any;\r\n acceptedFileTypes: string;\r\n}\r\n\r\nconst UploadContentCards = (props: IUploadContentCards) => {\r\n const themeContext = useContext(ThemeContext);\r\n const { alertdispatch } = useContext(AlertContext);\r\n const { state } = useContext(LoginContext);\r\n const [photoReports, setFotoReports] = useState([]);\r\n const [dataFound, setDataFound] = useState(true);\r\n const [modalIndex, setModalIndex] = useState(0);\r\n const [photoModalShow, setPhotoModalShow] = useState({\r\n show: false,\r\n modalTitle: '',\r\n modalDate: '',\r\n photoData: '',\r\n });\r\n const [pdfModalShow, setPdfModalShow] = useState({\r\n show: false,\r\n modalTitle: '',\r\n pdfData: '',\r\n isSignable: false,\r\n isSigned: false,\r\n diagnosticReportData: '',\r\n });\r\n\r\n const screenSize = useScreenResolution();\r\n const alertWidth = getAlertSize(screenSize.width);\r\n const cardWidth = getCardSize(screenSize.width);\r\n const itemMargins = getMargins(screenSize.width);\r\n\r\n const loadPhotos = async () => {\r\n const res = await getDiagnosticReportsByCategory(state, 'MULTIMEDIA', alertdispatch);\r\n if (res) {\r\n const resources = res?.data?.entry;\r\n if (resources) {\r\n setFotoReports(resources);\r\n } else {\r\n setDataFound(false);\r\n }\r\n }\r\n };\r\n\r\n function photoCarouselItems(photoItems: IPhotoItem[], cardWidth: string) {\r\n const carouselItems = photoItems.map((photo: IPhotoItem, index: number) => (\r\n \r\n
    \r\n \r\n \r\n
    {photo.title}
    \r\n

    \r\n {index + 1}\r\n \r\n /{photoItems.length}\r\n \r\n

    \r\n
    \r\n
    \r\n
    \r\n ));\r\n return carouselItems;\r\n }\r\n\r\n useEffect(() => {\r\n const getPhotos = async () => {\r\n loadPhotos();\r\n };\r\n getPhotos();\r\n }, [state.activePatient]);\r\n\r\n useEffect(() => {\r\n const getPhotos = async () => {\r\n loadPhotos();\r\n };\r\n if (props.refreshPhotos) {\r\n getPhotos();\r\n props.resetRefresh();\r\n }\r\n }, [props.refreshPhotos]);\r\n\r\n function photoCard(photoItems: IPhotoItem[]) {\r\n if (photoItems !== undefined) {\r\n const itemsToShow = photoItems.slice(0, 3); // get only three first elements for the card preview\r\n const photoRow = itemsToShow.map((item: IPhotoItem, index: number) => (\r\n \r\n {item.contentType === 'application/pdf' ? (\r\n \r\n ) : (\r\n \r\n )}\r\n \r\n ));\r\n return photoRow;\r\n } else {\r\n return null;\r\n }\r\n }\r\n\r\n const showPhoto = async (photoId: string, date: string) => {\r\n const response = await getDiagnosticReport(state.sessionId, photoId);\r\n const title = getCardTitle(response.data.presentedForm);\r\n if (response.data.presentedForm[0].contentType === 'application/pdf') {\r\n const [modalTitle, pdfsrc, isSignable, isSigned, signPosData] = getPDFDataFromDiagnosticReportResponse(\r\n response,\r\n title,\r\n '',\r\n );\r\n\r\n setPdfModalShow({\r\n show: true,\r\n modalTitle: modalTitle,\r\n isSignable: isSignable === 'true' ? true : false,\r\n isSigned: isSigned === 'true' ? true : false,\r\n pdfData: ,\r\n diagnosticReportData: response,\r\n });\r\n } else {\r\n setPhotoModalShow({\r\n show: true,\r\n modalTitle: title,\r\n modalDate: moment(date).format('DD. MMMM YYYY HH:mm'),\r\n photoData: photoCarouselItems(response.data.presentedForm, cardWidth),\r\n });\r\n }\r\n };\r\n\r\n const getCardTitle = (photoItem: IPhotoItem[]) => {\r\n let title = 'Foto';\r\n if (photoItem.length > 1) {\r\n title = 'Fotodokumentation';\r\n } else {\r\n if (photoItem[0].title) {\r\n title = photoItem[0].title;\r\n }\r\n }\r\n\r\n return title;\r\n };\r\n\r\n const getAllCards = () => {\r\n const allCards: any[] = [];\r\n\r\n photoReports.forEach((photo: IPhotoRep, index: number) => {\r\n let showCard = true;\r\n if (props.acceptedFileTypes && props.acceptedFileTypes.length > 0) {\r\n if (\r\n photo.resource.presentedForm[0].contentType === 'application/pdf' &&\r\n !props.acceptedFileTypes.includes('pdf')\r\n ) {\r\n showCard = false;\r\n }\r\n }\r\n\r\n if (showCard) {\r\n allCards.push(\r\n
    \r\n \r\n \r\n \r\n
    ,\r\n );\r\n }\r\n });\r\n\r\n return allCards;\r\n };\r\n\r\n function Photos() {\r\n if (photoReports.length > 0) {\r\n return <>{getAllCards()};\r\n } else {\r\n return (\r\n
    \r\n Keine Fotodokumentation vorhanden.\r\n
    \r\n );\r\n }\r\n }\r\n\r\n function handlePhotoChange(selectedIndex: React.SetStateAction) {\r\n setModalIndex(selectedIndex);\r\n }\r\n\r\n function handleClose() {\r\n setPhotoModalShow({ show: false, modalTitle: '', modalDate: '', photoData: '' });\r\n setModalIndex(0);\r\n }\r\n\r\n return (\r\n
    \r\n \r\n {photoReports.length === 0 && dataFound ? (\r\n \r\n \r\n \r\n Loading...\r\n \r\n

    \r\n Fotodokumentation wird geladen...\r\n

    \r\n \r\n
    \r\n ) : (\r\n \r\n \r\n \r\n )}\r\n handleClose()}\r\n modalTitle={photoModalShow.modalTitle}\r\n modalDate={photoModalShow.modalDate}\r\n photoData={photoModalShow.photoData}\r\n handleSelect={(selectedIndex: React.SetStateAction) => handlePhotoChange(selectedIndex)}\r\n />\r\n \r\n setPdfModalShow({\r\n show: false,\r\n modalTitle: '',\r\n pdfData: '',\r\n isSignable: false,\r\n isSigned: false,\r\n diagnosticReportData: '',\r\n })\r\n }\r\n modalTitle={pdfModalShow.modalTitle}\r\n isSignable={pdfModalShow.isSignable}\r\n isSigned={pdfModalShow.isSigned}\r\n pdfData={pdfModalShow.pdfData}\r\n diagnosticReportData={pdfModalShow.diagnosticReportData}\r\n />\r\n
    \r\n
    \r\n );\r\n};\r\n\r\nexport default UploadContentCards;\r\n","import * as React from 'react';\r\nimport { useContext, useRef, useState } from 'react';\r\nimport { Button, Form, OverlayTrigger, Popover } from 'react-bootstrap';\r\nimport { BiCamera } from 'react-icons/bi';\r\nimport { FiPlusCircle, FiUpload } from 'react-icons/fi';\r\nimport { ThemeContext } from 'styled-components';\r\nimport { MainHeaderButtonCol, MainHeaderCol } from '../../components/Cols/StyledCol';\r\nimport { CenterDiv, MainHeaderButtonIcon, StickyHeaderTitleDiv } from '../../components/Div/StyledDiv';\r\nimport { MainH1Title } from '../../components/Header/Header';\r\nimport WebcamPreviewModal from '../../components/Modals/WebcamModal/WebcamPreviewModal';\r\nimport RefreshButton from '../../components/RefreshButton/RefreshButton';\r\nimport { MainHeaderRow } from '../../components/Rows/StyledRow';\r\nimport UploadContentCards from '../../components/UploadContentCards/UploadContentCards';\r\nimport AlertContext, { AlertOnHide, AlertType } from '../../context/alertContext';\r\nimport LoginContext from '../../context/loginContext';\r\nimport useScreenResolution from '../../hooks/useScreenResolution';\r\nimport { sendPhotoDiagnosticReport } from '../../services/fhir/FHIRDiagnosticReports';\r\nimport { showAlertMessage } from '../../utils/alertHandling';\r\nimport { isFileTypeAccepted } from '../../utils/fileUtils';\r\nimport { IPhoto } from '../../utils/photoUtils';\r\n\r\ninterface IUploadContent {\r\n headerTitle: string;\r\n fileUploadButtonName: string;\r\n cameraUploadButtonName: string;\r\n acceptedFileTypes: string;\r\n maxHeight?: string;\r\n overflowY?: string;\r\n}\r\n\r\nconst UploadContent = (props: IUploadContent): JSX.Element => {\r\n const { state } = useContext(LoginContext);\r\n const screenSize = useScreenResolution();\r\n const themeContext = useContext(ThemeContext);\r\n const { alertdispatch } = useContext(AlertContext);\r\n const [showOverlay, setShowOverlay] = useState(false);\r\n const [openWebcamPreview, setOpenWebcamPreview] = useState(false);\r\n const [refreshPhotos, setRefreshPhotos] = useState(false);\r\n\r\n const [photoPreviewColl, setPreviewColl] = useState([]);\r\n\r\n const isSmallScreen = screenSize.width < 500 ? true : false;\r\n\r\n const photoUploadRef = useRef(null);\r\n\r\n const handleOpenPreview = () => {\r\n setOpenWebcamPreview(true);\r\n setShowOverlay(false);\r\n };\r\n\r\n const handleClosePreview = () => {\r\n setOpenWebcamPreview(false);\r\n setPreviewColl([]);\r\n };\r\n\r\n const handleAddPhotoToPreview = (photo: string) => {\r\n if (photo) {\r\n const photoData = photo.split(',').pop();\r\n if (photoData) {\r\n const newPhoto: IPhoto = {\r\n name: '',\r\n lastModifiedDate: new Date(),\r\n size: 0,\r\n type: '',\r\n data: photoData,\r\n };\r\n setPreviewColl((photoPreviewColl) => [...photoPreviewColl, newPhoto]); // add new photo to array in hook\r\n }\r\n }\r\n };\r\n\r\n const handleRemovePhoto = (photoIndex: number) => {\r\n const temp = [...photoPreviewColl];\r\n temp.splice(photoIndex, 1);\r\n setPreviewColl(temp);\r\n };\r\n\r\n const handleSaveCollection = () => {\r\n if (photoPreviewColl.length > 0) {\r\n uploadSelectedPhotos();\r\n }\r\n setOpenWebcamPreview(false);\r\n };\r\n\r\n const uploadSelectedPhotos = async () => {\r\n const response = await sendPhotoDiagnosticReport(state, photoPreviewColl, alertdispatch);\r\n if (response && response.status === 201) {\r\n setPreviewColl([]);\r\n } else {\r\n showAlertMessage({\r\n alertTitle: 'Probleme beim Upload',\r\n alertTxt: 'Es traten Problem beim Upload der Fotos auf.',\r\n alertType: AlertType.error,\r\n onHide: AlertOnHide.onlyClose,\r\n alertdispatch: alertdispatch,\r\n });\r\n }\r\n setRefreshPhotos(true);\r\n };\r\n\r\n const handleUploadOpen = async (photoUploadRef: React.RefObject) => {\r\n photoUploadRef?.current?.click();\r\n };\r\n\r\n const areFileTypesAccepted = (files: any[]) => {\r\n let isAccepted = true;\r\n if (props.acceptedFileTypes) {\r\n for (let i = 0; i < files.length; i++) {\r\n if (files[i].name) {\r\n if (!isFileTypeAccepted(files[0].name, props.acceptedFileTypes)) {\r\n isAccepted = false;\r\n break;\r\n }\r\n }\r\n }\r\n\r\n if (!isAccepted) {\r\n showAlertMessage({\r\n alertTitle: 'Falsches Dateiformat',\r\n alertTxt:\r\n 'Es werden nur Dateien mit dem Format ' + props.acceptedFileTypes.toString() + ' akzeptiert',\r\n alertType: AlertType.error,\r\n onHide: AlertOnHide.onlyClose,\r\n alertdispatch: alertdispatch,\r\n });\r\n }\r\n }\r\n\r\n return isAccepted;\r\n };\r\n\r\n const handleSelectedPhoto = async (e: React.ChangeEvent) => {\r\n setShowOverlay(false);\r\n const files: any[] = Array.from(e.target.files);\r\n\r\n if (areFileTypesAccepted(files)) {\r\n for (let i = 0; i < files.length; i++) {\r\n const base64Src = await toBase64(files[i]);\r\n const myString = base64Src as string;\r\n const myModString = myString.split(',').pop();\r\n if (myModString) {\r\n photoPreviewColl.push({\r\n name: files[i].name,\r\n lastModifiedDate: files[i].lastModifiedDate,\r\n size: files[i].size,\r\n type: files[i].type,\r\n data: myModString,\r\n });\r\n }\r\n }\r\n uploadSelectedPhotos();\r\n }\r\n };\r\n\r\n const toBase64 = (file: any) =>\r\n new Promise((resolve, reject) => {\r\n const reader = new FileReader();\r\n reader.readAsDataURL(file);\r\n reader.onload = () => resolve(reader.result);\r\n reader.onerror = (error) => reject(error);\r\n });\r\n\r\n const handleRefreshClick = () => {\r\n setRefreshPhotos(true);\r\n };\r\n\r\n const resetRefresh = () => {\r\n setRefreshPhotos(false);\r\n };\r\n\r\n return (\r\n
    \r\n handleClosePreview()}\r\n photos={photoPreviewColl}\r\n onSave={() => handleSaveCollection()}\r\n onRemove={(photoIndex: number) => handleRemovePhoto(photoIndex)}\r\n addPhoto={(photo: string) => handleAddPhotoToPreview(photo)}\r\n />\r\n \r\n \r\n {!isSmallScreen && }\r\n \r\n \r\n {props.headerTitle}\r\n \r\n \r\n \r\n setShowOverlay(!showOverlay)}\r\n overlay={\r\n \r\n \r\n \r\n handleUploadOpen(photoUploadRef)}\r\n >\r\n
    \r\n {' '}\r\n {props.fileUploadButtonName}\r\n
    \r\n handleSelectedPhoto(e)}\r\n multiple\r\n hidden\r\n accept={props.acceptedFileTypes ? props.acceptedFileTypes : ''}\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 UploadContent;\r\n","import styled from 'styled-components';\r\n\r\ninterface IParagraph {\r\n margin?: string;\r\n marginBottom?: string;\r\n marginTop?: string;\r\n marginLeft?: string;\r\n marginRight?: string;\r\n fontSize?: ParagraphFontSize | string;\r\n display?: string;\r\n color?: string;\r\n textAlign?: string;\r\n}\r\n\r\nexport enum ParagraphFontSize {\r\n ExtraSmall = '0.70rem',\r\n Small = '0.85rem',\r\n Medium = '1rem',\r\n Big = '1.7rem',\r\n ExtraBig = '2.5rem',\r\n}\r\n\r\nexport const StyledParagraph = styled.p`\r\n margin-bottom: ${(prop) => (prop.marginBottom ? prop.marginBottom : '1rem')};\r\n margin-top: ${(prop) => (prop.marginTop ? prop.marginTop : '1rem')};\r\n margin-left: ${(prop) => (prop.marginLeft ? prop.marginLeft : '1rem')};\r\n margin-right: ${(prop) => (prop.marginRight ? prop.marginRight : '1rem')};\r\n font-size: ${(prop) => (prop.fontSize ? prop.fontSize : ParagraphFontSize.Medium)};\r\n display: ${(prop) => (prop.display ? prop.display : 'block')};\r\n color: ${(prop) => (prop.color ? prop.color : 'black')};\r\n text-align: ${(prop) => (prop.textAlign ? prop.textAlign : null)};\r\n`;\r\n\r\nexport const StyledParagraphHorizontallyCenter = styled.p`\r\n margin-bottom: ${(prop) => (prop.marginBottom ? prop.marginBottom : '1rem')};\r\n margin-left: ${(prop) => (prop.marginLeft ? prop.marginLeft : '0rem')};\r\n font-size: ${(prop) => (prop.fontSize ? prop.fontSize : ParagraphFontSize.Medium)};\r\n display: ${(prop) => (prop.display ? prop.display : 'block')};\r\n color: ${(prop) => (prop.color ? prop.color : 'black')};\r\n text-align: ${(prop) => (prop.textAlign ? prop.textAlign : 'center')};\r\n`;\r\n\r\nexport const StyledParagraphVerticallyCenter = styled.p`\r\n margin: ${(prop) => (prop.margin ? prop.margin : 'auto')};\r\n font-size: ${(prop) => (prop.fontSize ? prop.fontSize : ParagraphFontSize.Medium)};\r\n display: ${(prop) => (prop.display ? prop.display : 'block')};\r\n color: ${(prop) => (prop.color ? prop.color : 'black')};\r\n`;\r\n\r\nexport const StyledParagraphWithoutMargin = styled.p`\r\n margin-bottom: 0;\r\n font-size: ${(prop) => (prop.fontSize ? prop.fontSize : ParagraphFontSize.Medium)};\r\n`;\r\n\r\nexport const StyledParagraphGrayText = styled.p`\r\n color: rgb(116, 118, 130);\r\n`;\r\n\r\nexport const StyledParagraphGrayTextItalic = styled.p`\r\n color: rgb(116, 118, 130);\r\n font-style: italic;\r\n`;\r\n\r\nexport const QuestionnaireStepperTitle = styled.p`\r\n margin-bottom: 1rem;\r\n margin-top: 1rem;\r\n margin-left: 1rem;\r\n margin-right: 1rem;\r\n font-size: 1.7rem;\r\n display: block;\r\n color: black;\r\n\r\n @media screen and (max-width: 900px) {\r\n font-size: 1.1rem;\r\n }\r\n`;\r\n","import Row from 'react-bootstrap/Row';\r\nimport styled from 'styled-components';\r\n\r\ninterface IRow {\r\n height?: string;\r\n justifyContent?: string;\r\n marginLeft?: string;\r\n marginRight?: string;\r\n}\r\n\r\nexport const StyledRow = styled(Row)`\r\n justify-content: ${(prop) => (prop.justifyContent ? prop.justifyContent : null)};\r\n`;\r\n\r\nexport const CenterRow = styled(Row)`\r\n justify-content: center;\r\n align-items: center;\r\n text-align: center;\r\n`;\r\n\r\nexport const MainHeaderRow = styled(Row)`\r\n height: 100%;\r\n`;\r\n\r\nexport const AppointmentCardStatusButtonRow = styled(Row)`\r\n height: 100%;\r\n flex-wrap: inherit;\r\n`;\r\n\r\nexport const StyledRowNoMargin = styled(Row)`\r\n margin-left: 0px;\r\n margin-right: 0px;\r\n`;\r\n\r\nexport const StyledRowPersonalDataBottom = styled(Row)`\r\n margin-left: 0px;\r\n margin-right: 0px;\r\n margin-bottom: 10px;\r\n`;\r\n\r\nexport const StyledVerticalCenterRow = styled(Row).attrs({ className: 'align-items-center' })`\r\n height: 100%;\r\n`;\r\n\r\nexport const TimeslotRow = styled(Row).attrs({ className: 'align-items-center' })`\r\n /* height: 45px; */\r\n flex-wrap: nowrap;\r\n`;\r\n\r\nexport const DateSwitcherRow = styled(Row).attrs({ className: 'align-items-center' })`\r\n height: 45px;\r\n flex-wrap: nowrap;\r\n`;\r\n\r\nexport const QuestionnaireSwitcherRow = styled(Row).attrs({ className: 'align-items-center' })`\r\n flex-wrap: nowrap;\r\n`;\r\n","import { ListGroup } from 'react-bootstrap';\r\nimport Card from 'react-bootstrap/Card';\r\nimport styled from 'styled-components';\r\n\r\ninterface ICard {\r\n width?: string;\r\n backgroundcolor?: string;\r\n marginbottom?: string;\r\n}\r\n\r\nexport const StyledAppointmentCard = styled(Card)`\r\n width: ${(prop) => (prop.width ? prop.width : '35rem')};\r\n align-self: center;\r\n border-radius: ${(props) => props.theme.appointmentCard.borderRadius};\r\n border-color: #e0e1e1;\r\n overflow: hidden;\r\n text-align: left;\r\n box-shadow: 0 2px 4px 0 #e0e1e1, 0 3px 10px 0 #e0e1e1;\r\n margin-bottom: 10px;\r\n margin-top: 10px;\r\n`;\r\n\r\nexport const StyledAppointmentCardHeader = styled(Card.Header)`\r\n background-color: ${(props) => (props.type === 'upcoming' ? '#c9d2df' : '#e0e1e1')};\r\n`;\r\n\r\nexport const StyledMainCardTitle = styled(Card.Title)`\r\n text-align: center;\r\n color: ${(props) => props.theme.icon.passive};\r\n`;\r\n\r\nexport const StyledAppointmentCardBody = styled(Card.Body)`\r\n background-color: white;\r\n border-top-style: solid;\r\n border-top-width: thin;\r\n border-top-color: black;\r\n`;\r\n\r\nexport const StyledAppointmentCardFooter = styled(Card.Footer)`\r\n color: ${(props) => (props.status === 'cancelled' ? 'red' : 'black')};\r\n background-color: white;\r\n`;\r\n\r\nexport const StyledMainCard = styled(Card)`\r\n color: ${(props) => props.theme.mainColor};\r\n background-color: ${(props) => props.theme.passiveColor};\r\n border-color: #e0e1e1;\r\n margin-top: 10px;\r\n margin-bottom: 10px;\r\n border-radius: 10px;\r\n width: ${(prop) => (prop.cardwidth ? prop.cardwidth : '380px')};\r\n height: 190px;\r\n box-shadow: 0 2px 4px 0 #e0e1e1, 0 3px 10px 0 #e0e1e1;\r\n text-align: center;\r\n align-self: center;\r\n &:hover {\r\n background-color: white;\r\n color: ${(props) => props.theme.font.mainColorHover};\r\n box-shadow: 0 4px 8px 0 #e0e1e1, 0 6px 20px 0 #e0e1e1;\r\n }\r\n`;\r\n\r\nexport const StyledProfileCard = styled(Card)`\r\n width: 600px;\r\n border-radius: 10px;\r\n border-color: #e0e1e1;\r\n overflow: hidden;\r\n box-shadow: 0 2px 4px 0 #e0e1e1, 0 3px 10px 0 #e0e1e1;\r\n margin: auto;\r\n margin-bottom: 10px;\r\n margin-top: 10px;\r\n`;\r\n\r\nexport const StyledPhysicianSelectionCard = styled(Card)`\r\n width: 100%;\r\n border-radius: 10px;\r\n border-color: #e0e1e1;\r\n overflow: hidden;\r\n box-shadow: 0 2px 4px 0 #e0e1e1, 0 3px 10px 0 #e0e1e1;\r\n margin: auto;\r\n margin-bottom: 10px;\r\n margin-top: 0px;\r\n margin-left: 0px;\r\n background-color: white;\r\n color: black;\r\n`;\r\n\r\nexport const StyledNewRegistrationCard = styled(Card)`\r\n height: 400px;\r\n width: 90%;\r\n border-radius: 10px;\r\n border-color: #e0e1e1;\r\n overflow: hidden;\r\n box-shadow: 0 2px 4px 0 #e0e1e1, 0 3px 10px 0 #e0e1e1;\r\n margin: auto;\r\n margin-bottom: 10px;\r\n align-self: center;\r\n text-align: left;\r\n`;\r\n\r\nexport const StyledNewRegistrationCardBody = styled(Card.Body)`\r\n background-color: rgb(36, 94, 173);\r\n border-top-style: solid;\r\n border-top-width: thin;\r\n border-top-color: black;\r\n color: white;\r\n`;\r\n\r\nexport const StyledNewRegistrationCardImg = styled(Card.Img)`\r\n width: 60%;\r\n margin: 20px 20px;\r\n`;\r\n\r\nexport const StyledPhotoCard = styled(Card)`\r\n color: ${(props) => props.theme.mainColor};\r\n background-color: ${(props) => props.theme.passiveColor};\r\n border-color: #e0e1e1;\r\n margin-top: 10px;\r\n margin-bottom: 10px;\r\n border-radius: 25px;\r\n width: ${(prop) => (prop.cardwidth ? prop.cardwidth : '300px')};\r\n height: ${(prop) => (prop.cardwidth ? prop.cardwidth : '300px')};\r\n box-shadow: 0 2px 4px 0 #e0e1e1, 0 3px 10px 0 #e0e1e1;\r\n text-align: center;\r\n align-self: center;\r\n &:hover {\r\n background-color: white;\r\n color: ${(props) => props.theme.font.mainColorHover};\r\n box-shadow: 0 4px 8px 0 #e0e1e1, 0 6px 20px 0 #e0e1e1;\r\n }\r\n`;\r\n\r\nexport const StyledAppoinmentCategoryCard = styled(Card)`\r\n background-color: ${(prop) => (prop.backgroundcolor ? prop.backgroundcolor : 'white')};\r\n margin-bottom: ${(prop) => (prop.marginbottom ? prop.marginbottom : null)};\r\n`;\r\n\r\nexport const ListGroupCst = styled(ListGroup)`\r\n font-size: 0.85rem;\r\n`;\r\n\r\nexport const ListGroupItemCst = styled(ListGroup.Item)`\r\n padding: 0.2rem 1.25rem;\r\n`;\r\n\r\nexport const StyledWaitingCard = styled(Card)`\r\n color: ${(props) => props.theme.mainColor};\r\n background-color: ${(props) => props.theme.passiveColor};\r\n border-color: #e0e1e1;\r\n margin-top: 10px;\r\n margin-bottom: 10px;\r\n border-radius: 10px;\r\n width: ${(prop) => (prop.cardwidth ? prop.cardwidth : '380px')};\r\n height: 190px;\r\n box-shadow: 0 2px 4px 0 #e0e1e1, 0 3px 10px 0 #e0e1e1;\r\n text-align: center;\r\n align-self: center;\r\n`;\r\n\r\nexport const StyledWaitingCardBody = styled(Card.Body)`\r\n /* border-top-style: solid; */\r\n /* border-top-width: thin; */\r\n`;\r\n\r\nexport const StyledPhysicianSelectionCardTitle = styled(Card.Title)`\r\n font-weight: bold;\r\n color: rgb(36, 94, 173);\r\n`;\r\n","import * as React from 'react';\r\nimport { AlertOnHide, AlertType } from '../context/alertContext';\r\nimport { IAlertMessageWithoutDispatch, showAlertMessage } from './alertHandling';\r\n\r\n/* #### ERROR MESSAGES #### */\r\nexport const ERROR_MESSAGE_DEFAULT = 'Es ist ein Fehler aufgetreten.';\r\n\r\n/* ######################## */\r\n\r\ninterface IResponseErrorHandling {\r\n response: any;\r\n alertdispatch: React.Dispatch;\r\n alertMessage?: IAlertMessageWithoutDispatch;\r\n}\r\n\r\nexport const responseErrorHandling = (props: IResponseErrorHandling) => {\r\n let responseMsg = '';\r\n if (props.response) {\r\n if (props.response.data) {\r\n if (props.response.data.issue) {\r\n if (props.response.data.issue[0].diagnostics !== undefined) {\r\n responseMsg = props.response.data.issue[0].diagnostics;\r\n }\r\n } else {\r\n responseMsg = props.response.data;\r\n }\r\n } else if (props.response.message) {\r\n responseMsg = props.response.message;\r\n } else if (typeof props.response === 'string') {\r\n responseMsg = props.response;\r\n }\r\n }\r\n\r\n /* check if responseMsg is a string */\r\n if (typeof responseMsg !== 'string') {\r\n responseMsg = 'responseErrorHandling(): Keine error responseMsg gefunden.';\r\n }\r\n\r\n /* Priority Error Messages */\r\n if (responseMsg.includes('Authorization failed')) {\r\n showAlertMessage({\r\n alertTitle: 'Authorization',\r\n alertTxt: 'Authorization failed',\r\n alertType: AlertType.error,\r\n onHide: AlertOnHide.goToHome,\r\n // onHideCustom: onHideAlertModal,\r\n alertdispatch: props.alertdispatch,\r\n });\r\n\r\n /* Custom Error Message OR Default Error Message*/\r\n } else {\r\n showAlertMessage({\r\n alertTitle: props.alertMessage ? props.alertMessage.alertTitle : ERROR_MESSAGE_DEFAULT,\r\n alertTxt: props.alertMessage ? props.alertMessage.alertTxt : responseMsg,\r\n alertType: props.alertMessage ? props.alertMessage.alertType : AlertType.error,\r\n onHide: props.alertMessage ? props.alertMessage.onHide : AlertOnHide.onlyClose,\r\n onHideCustom: props.alertMessage?.onHideCustom ? props.alertMessage.onHideCustom : undefined,\r\n alertdispatch: props.alertdispatch,\r\n });\r\n }\r\n};\r\n","import { Container } from '@material-ui/core';\r\nimport { useContext, useEffect, useState } from 'react';\r\nimport Card from 'react-bootstrap/Card';\r\nimport Col from 'react-bootstrap/Col';\r\nimport Image from 'react-bootstrap/Image';\r\nimport OverlayTrigger from 'react-bootstrap/OverlayTrigger';\r\nimport Row from 'react-bootstrap/Row';\r\nimport Tooltip from 'react-bootstrap/Tooltip';\r\nimport LoginContext from '../../context/loginContext';\r\nimport { getQRCodeConfig } from '../../globals/global';\r\nimport { getBarcodeForApp } from '../../services/RestServices';\r\nimport { StyledMainCardTitle, StyledProfileCard } from '../Cards/StyledCard';\r\n\r\nconst QRCodeForApp = () => {\r\n const { state } = useContext(LoginContext);\r\n\r\n const [qrCode, setQrCode] = useState('');\r\n const [applinksURL, setAppLinksURL] = useState('');\r\n\r\n useEffect(() => {\r\n const getQRCodes4App = async () => {\r\n const response = await getBarcodeForApp(state.sessionId);\r\n\r\n const qrCodeConfig = getQRCodeConfig();\r\n const qrCodeData = response[qrCodeConfig];\r\n // let applinksURL = '';\r\n\r\n if (qrCodeConfig === 'pngSSG') {\r\n setAppLinksURL(response['applinksURLSSG']);\r\n } else if (qrCodeConfig === 'pngPOI') {\r\n setAppLinksURL(response['applinksURLPOI']);\r\n }\r\n\r\n if (qrCodeData) {\r\n setQrCode(qrCodeData);\r\n } else {\r\n console.log('cannot find qrcode with config: ', qrCodeConfig);\r\n }\r\n };\r\n getQRCodes4App();\r\n }, []);\r\n\r\n const qrCodeSrc = 'data:image/jpg;base64,' + qrCode;\r\n\r\n const handleQRClick = () => {\r\n window.open(applinksURL, '_self');\r\n };\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n Die App für Ihr Handy\r\n \r\n \r\n \r\n
    \r\n \r\n Öffnen Sie die Kamera-App Ihres Gerätes und richten\r\n Sie den Sucher auf diesen QR-Code.\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 QRCodeForApp;\r\n","import { CenterDiv, ImpressumBottom } from '../Div/StyledDiv';\r\nimport { ParagraphFontSize } from '../StyledParagraph/StyledParagraph';\r\n\r\nexport interface IImpressumElement {\r\n impressumLink: string;\r\n datenschutzLink: string;\r\n textColor?: string;\r\n}\r\n\r\nconst Impressum = (props: IImpressumElement) => {\r\n const textColor = props.textColor ? props.textColor : '#007bff';\r\n\r\n return (\r\n \r\n {props.impressumLink && (\r\n \r\n Impressum\r\n \r\n )}\r\n {props.datenschutzLink && props.impressumLink && ' | '}\r\n {props.datenschutzLink && (\r\n \r\n Datenschutz\r\n \r\n )}\r\n \r\n );\r\n};\r\n\r\nexport const ImpressumNormal = (props: IImpressumElement) => {\r\n const textColor = props.textColor ? props.textColor : '#007bff';\r\n return (\r\n \r\n {props.impressumLink && (\r\n \r\n Impressum\r\n \r\n )}\r\n {props.datenschutzLink && props.impressumLink && ' | '}\r\n {props.datenschutzLink && (\r\n \r\n Datenschutz\r\n \r\n )}\r\n \r\n );\r\n};\r\n\r\nexport default Impressum;\r\n","import { useCallback, useRef } from 'react';\r\nimport Container from 'react-bootstrap/esm/Container';\r\nimport Modal from 'react-bootstrap/esm/Modal';\r\nimport Row from 'react-bootstrap/esm/Row';\r\nimport { BiCamera } from 'react-icons/bi';\r\nimport Webcam from 'react-webcam';\r\nimport useScreenResolution from '../../../hooks/useScreenResolution';\r\nimport { isMobile, isTablet } from '../../../utils/screenResolution';\r\nimport StyledButton from '../../Buttons/StyledButton';\r\nimport StyledCol from '../../Cols/StyledCol';\r\nimport { StyledModal } from '../StyledModal/StyledModal';\r\n\r\ninterface IWebcamModal {\r\n show: boolean;\r\n onClose: () => void;\r\n setPhoto: (photo: string) => void;\r\n}\r\n\r\nexport function getWebcamDim(screenWidth: number) {\r\n if (isMobile(screenWidth)) {\r\n return { width: 300, height: 200 };\r\n } else if (isTablet(screenWidth)) {\r\n return { width: 350, height: 250 };\r\n } else {\r\n return { width: 550, height: 450 };\r\n }\r\n}\r\n\r\nconst WebcamModal = (props: IWebcamModal) => {\r\n const webcamRef = useRef(null);\r\n\r\n const screenSize = useScreenResolution();\r\n const webcamDim = getWebcamDim(screenSize.width);\r\n\r\n const capture = useCallback(() => {\r\n if (webcamRef.current) {\r\n const image = webcamRef.current?.getScreenshot();\r\n if (image) {\r\n props.setPhoto(image);\r\n }\r\n }\r\n }, [webcamRef]);\r\n\r\n return (\r\n <>\r\n \r\n \r\n \r\n Kamera\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 Abbrechen\r\n \r\n \r\n \r\n \r\n Foto aufnehmen\r\n \r\n \r\n \r\n \r\n \r\n
    \r\n \r\n );\r\n};\r\n\r\nexport default WebcamModal;\r\n","import Toast from 'react-bootstrap/Toast';\r\nimport Lottie from 'react-lottie';\r\nimport { lottieCheck } from '../../utils/lottieUtils';\r\n\r\nexport interface IToast {\r\n show: boolean;\r\n onHide: () => void;\r\n text: string;\r\n delay: number;\r\n width?: string;\r\n height?: string;\r\n}\r\n\r\nconst ConfirmationToast = (props: IToast) => {\r\n return (\r\n \r\n \r\n \r\n
    {props.text}
    \r\n
    \r\n \r\n );\r\n};\r\n\r\nexport default ConfirmationToast;\r\n","import { Modal } from 'react-bootstrap';\r\nimport styled from 'styled-components';\r\n\r\ninterface IStyledModal {\r\n borderRadius?: string;\r\n boxShadow?: string;\r\n height?: string;\r\n width?: string;\r\n}\r\n\r\nexport const StyledModal = styled(Modal)`\r\n .modal-content {\r\n border-radius: ${(prop) => (prop.borderRadius ? prop.borderRadius : prop.theme.modal.borderRadius)};\r\n box-shadow: ${(prop) => (prop.boxShadow ? prop.boxShadow : prop.theme.modal.boxShadow)};\r\n }\r\n`;\r\n\r\nexport const StyledModalMedicationDetail = styled(Modal)`\r\n .modal-dialog {\r\n max-width: 85%;\r\n max-height: 90%;\r\n margin: '1.75rem auto';\r\n height: 90%;\r\n }\r\n .modal-content {\r\n min-height: 90%;\r\n border-radius: ${(props) => props.theme.modal.borderRadius};\r\n box-shadow: ${(props) => props.theme.modal.boxShadow};\r\n }\r\n\r\n .modal-body {\r\n min-height: 90%;\r\n }\r\n`;\r\n","import { useEffect, useState } from 'react';\r\nimport { Container } from 'react-bootstrap';\r\nimport { CenterDiv, StickyStepperWithNavbar } from '../../components/Div/StyledDiv';\r\nimport StepperCheckIn, {\r\n IStepperCheckInStep,\r\n StepTyp,\r\n StepperLabelOrientation,\r\n StepperOrientation,\r\n} from '../../components/Stepper/StepperCheckIn';\r\nimport { useAppProperties } from '../../hooks/useAppProperties';\r\nimport FullScreenImpressum from '../Mainscreen/FullScreenImpressum';\r\nimport NavbarCheckInWL from '../Navbar/NavbarCheckInWL';\r\nimport FragebogenDetail from './FragebogenDetail';\r\nimport { IQuestionnaireStepData, IQuestionnaireWL } from './QuestionnaireWL';\r\n\r\nexport interface IMultiFragebogen extends IQuestionnaireWL {\r\n formNames: any;\r\n}\r\n\r\ninterface IChangeStep {\r\n id: string;\r\n completed: boolean;\r\n draft: boolean;\r\n active: boolean;\r\n clickable: boolean;\r\n}\r\n\r\ninterface IReloadPageData {\r\n reload: boolean;\r\n nextActiveStep: number;\r\n newStepValues?: IChangeStep[];\r\n}\r\n\r\nconst MultiFragebogen = (props: IMultiFragebogen) => {\r\n const [allSteps, setAllSteps] = useState([]);\r\n const [activeStep, setActiveStep] = useState(0);\r\n const [activeContent, setActiveContent] = useState(<>);\r\n const [reloadPageData, setReloadPageData] = useState({\r\n reload: false,\r\n nextActiveStep: 0,\r\n newStepValues: [\r\n {\r\n id: '',\r\n active: false,\r\n clickable: false,\r\n completed: false,\r\n draft: false,\r\n },\r\n ],\r\n });\r\n\r\n const { getImpressum, getAndSetAppProperties } = useAppProperties();\r\n const impressum = getImpressum();\r\n\r\n useEffect(() => {\r\n getAndSetAppProperties();\r\n getInitialSteps();\r\n }, []);\r\n\r\n useEffect(() => {\r\n if (reloadPageData.reload) {\r\n getInitialSteps();\r\n let nextStep = 0;\r\n if (reloadPageData.reload) {\r\n nextStep = reloadPageData.nextActiveStep;\r\n }\r\n const con = getContent(nextStep);\r\n if (con) {\r\n setActiveContent(con);\r\n }\r\n setReloadPageData({\r\n reload: false,\r\n nextActiveStep: 0,\r\n newStepValues: [\r\n {\r\n id: '',\r\n active: false,\r\n clickable: false,\r\n completed: false,\r\n draft: false,\r\n },\r\n ],\r\n });\r\n }\r\n }, [reloadPageData]);\r\n\r\n useEffect(() => {\r\n setActiveContent(getContent(activeStep));\r\n }, [allSteps, activeStep]);\r\n\r\n const handleStepClick = (stepNumberClicked: number) => {\r\n setActiveStep(stepNumberClicked);\r\n // setStepClicked(true);\r\n // handlePossibleChangeOfNextSteps(stepNumberClicked);\r\n };\r\n\r\n const handleQuestFinished = (currentActiveStep) => {\r\n const reloadData: IReloadPageData = {\r\n reload: true,\r\n nextActiveStep: getNextUnfinishedStepNumber(currentActiveStep),\r\n newStepValues: [\r\n {\r\n id: allSteps[currentActiveStep].id,\r\n active: false,\r\n clickable: true,\r\n completed: true,\r\n draft: false,\r\n },\r\n {\r\n id: allSteps[getNextUnfinishedStepNumber(currentActiveStep)].id,\r\n active: true,\r\n clickable: true,\r\n completed: false,\r\n draft: false,\r\n },\r\n ],\r\n };\r\n setReloadPageData(reloadData);\r\n };\r\n\r\n const handleQuestSave = () => {\r\n // setClickedQuestSave(true);\r\n };\r\n\r\n const handleQuestPDFClose = (currentActiveStep: number) => {\r\n const reloadData: IReloadPageData = {\r\n reload: true,\r\n nextActiveStep: getNextUnfinishedStepNumber(currentActiveStep),\r\n };\r\n setReloadPageData(reloadData);\r\n };\r\n\r\n const getNextUnfinishedStepNumber = (currentStepNumber: number) => {\r\n let endReached = false;\r\n for (let i = currentStepNumber; i < allSteps.length; i++) {\r\n const nextStep = i + 1;\r\n if (nextStep >= allSteps.length) {\r\n endReached = true;\r\n break;\r\n } else {\r\n if (!allSteps[nextStep].completed) {\r\n return nextStep;\r\n }\r\n }\r\n }\r\n\r\n if (endReached) {\r\n for (let i = 0; i < currentStepNumber; i++) {\r\n if (!allSteps[i].completed) {\r\n return i;\r\n }\r\n }\r\n }\r\n\r\n return 0;\r\n };\r\n\r\n const changeStep = (\r\n currentSteps: IStepperCheckInStep[],\r\n newValues: IChangeStep,\r\n setAllOtherStepsInactive: boolean,\r\n ) => {\r\n if (currentSteps.length > 0) {\r\n const allStepsCopy = [...currentSteps];\r\n for (let i = 0; i < allStepsCopy.length; i++) {\r\n if (allStepsCopy[i].id === newValues.id) {\r\n if (newValues.completed) {\r\n allStepsCopy[i].completed = newValues.completed;\r\n }\r\n if (newValues.draft) {\r\n allStepsCopy[i].draft = newValues.draft;\r\n }\r\n if (newValues.active) {\r\n allStepsCopy[i].active = newValues.active;\r\n }\r\n if (newValues.clickable) {\r\n allStepsCopy[i].clickable = newValues.clickable;\r\n }\r\n } else {\r\n if (setAllOtherStepsInactive) {\r\n allStepsCopy[i].active = false;\r\n }\r\n }\r\n }\r\n\r\n return allStepsCopy;\r\n }\r\n };\r\n\r\n const getInitialSteps = () => {\r\n let steps: IStepperCheckInStep[] = [];\r\n\r\n const nameArr = props.name?.split(',');\r\n\r\n /* handle possible change of step */\r\n let newStepsToSet = false;\r\n if (reloadPageData.newStepValues && reloadPageData.newStepValues.length > 0) {\r\n reloadPageData.newStepValues.forEach((newStep) => {\r\n if (newStep.id?.length > 0) {\r\n const newSteps = changeStep(steps.length > 0 ? steps : allSteps, newStep, true);\r\n if (newSteps) {\r\n steps = newSteps;\r\n newStepsToSet = true;\r\n }\r\n setActiveStep(reloadPageData.nextActiveStep);\r\n }\r\n });\r\n }\r\n\r\n if (!newStepsToSet) {\r\n if (nameArr !== undefined && nameArr?.length > 0) {\r\n for (let i = 0; i < nameArr.length; i++) {\r\n const name = nameArr[i];\r\n\r\n const newQuestionnaireStep: IQuestionnaireWL = {\r\n ...props,\r\n name: name,\r\n };\r\n\r\n let formName = name;\r\n if (props.formNames && props.formNames[name] !== undefined) {\r\n formName = props.formNames[name];\r\n }\r\n\r\n steps.push({\r\n id: name,\r\n name: formName,\r\n typ: StepTyp.Journey,\r\n completed: false,\r\n draft: false,\r\n active: i === 0 ? true : false,\r\n clickable: true,\r\n hashParams: newQuestionnaireStep,\r\n });\r\n }\r\n }\r\n }\r\n\r\n setAllSteps(steps);\r\n };\r\n\r\n const getContent = (step?: number): JSX.Element => {\r\n let stepContent = activeStep;\r\n if (step !== undefined) {\r\n stepContent = step;\r\n }\r\n\r\n if (allSteps && allSteps.length > 0) {\r\n const hashParams = allSteps[stepContent].hashParams !== undefined ? allSteps[stepContent].hashParams : {};\r\n if (hashParams) {\r\n const stepData: IQuestionnaireStepData = {\r\n activeStepNumber: stepContent,\r\n handleQuestionnaireFinished: handleQuestFinished,\r\n handleQuestionnairePDFClose: handleQuestPDFClose,\r\n handleQuestionnaireSave: handleQuestSave,\r\n };\r\n\r\n hashParams.stepData = stepData;\r\n\r\n return (\r\n
    \r\n \r\n
    \r\n );\r\n }\r\n }\r\n\r\n return

    Content nicht gefunden

    ;\r\n };\r\n\r\n const contentToShow = () => {\r\n return
    {getContent(activeStep)}
    ;\r\n };\r\n\r\n const handleLogout = () => {\r\n window.location.reload();\r\n };\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {contentToShow()}\r\n \r\n \r\n );\r\n};\r\n\r\nexport default MultiFragebogen;\r\n","import { useContext, useEffect, useState } from 'react';\r\nimport { ThemeContext } from 'styled-components';\r\nimport { StyledWaitingCard, StyledWaitingCardBody } from '../../components/Cards/StyledCard';\r\nimport { CenterDiv } from '../../components/Div/StyledDiv';\r\nimport AppPropsContext from '../../context/appPropsContext';\r\nimport TerminierungContext from '../../context/terminierungContext';\r\nimport VideochatContext from '../../context/videochatContext';\r\nimport { jitsiOptions } from '../../globals/global';\r\nimport { useAppProperties } from '../../hooks/useAppProperties';\r\nimport { useResizedScreenResolution } from '../../hooks/useScreenResolution';\r\n\r\ninterface IVideochatWL {\r\n checkInVariant?: boolean;\r\n onVideoHangup?(): void;\r\n}\r\n\r\ndeclare class JitsiMeetExternalAPI {\r\n constructor(domain: string, options: any);\r\n}\r\n\r\ninterface VCContext {\r\n jitsiDomain: string;\r\n jitsiAllowed: boolean;\r\n}\r\nlet api: JitsiMeetExternalAPI | null | any;\r\nconst VideochatWL = (props: IVideochatWL) => {\r\n const { vsstate } = useContext(VideochatContext);\r\n const { tmstate } = useContext(TerminierungContext);\r\n const { apstate } = useContext(AppPropsContext);\r\n const themeContext = useContext(ThemeContext);\r\n const [vcContext, setVcContext] = useState({ jitsiDomain: '', jitsiAllowed: false });\r\n\r\n const { disableFullscreenMode, enableFullscreenMode, isFullscreenMode } = useAppProperties();\r\n\r\n const includeExternalScript = (url, whenFinished) => {\r\n let script: any;\r\n script = document.querySelector(`script[src=\"${url}\"]`);\r\n\r\n const handleScript = (e) => {\r\n if (e.type === 'load') {\r\n whenFinished();\r\n }\r\n };\r\n\r\n if (!script) {\r\n script = document.createElement('script');\r\n script.type = 'application/javascript';\r\n script.src = url;\r\n script.async = true;\r\n document.body.appendChild(script);\r\n script.addEventListener('load', handleScript);\r\n script.addEventListener('error', handleScript);\r\n } else {\r\n whenFinished();\r\n }\r\n\r\n script.addEventListener('load', handleScript);\r\n script.addEventListener('error', handleScript);\r\n };\r\n\r\n useEffect(() => {\r\n let jitsNowAllowed = false;\r\n if (vcContext.jitsiAllowed || vsstate.jitsiAllowed) {\r\n jitsNowAllowed = true;\r\n if (!isFullscreenMode()) {\r\n enableFullscreenMode();\r\n }\r\n }\r\n if (vcContext.jitsiDomain != apstate.jitsiDomain || (!vcContext.jitsiAllowed && jitsNowAllowed)) {\r\n setVcContext({ jitsiDomain: apstate.jitsiDomain, jitsiAllowed: jitsNowAllowed });\r\n }\r\n }, [apstate, vsstate]);\r\n\r\n const [getResizedHeight] = useResizedScreenResolution();\r\n const jitsiContent = () => {\r\n const style = {\r\n height: getResizedHeight(isFullscreenMode() ? 100 : 75)?.toString() + 'px',\r\n };\r\n const url = 'https://' + apstate.jitsiDomain + '/external_api.js';\r\n const options = apstate.jitsiOptions;\r\n options.roomName = vsstate.roomName ? vsstate.roomName : tmstate.enrollData.enrollCode;\r\n const displayName = tmstate?.personalData?.firstName + ' ' + tmstate?.personalData?.lastName;\r\n options.userInfo = {\r\n displayName: displayName,\r\n };\r\n if (!options.configOverwrite) {\r\n options.configOverwrite = jitsiOptions.configOverwrite;\r\n }\r\n includeExternalScript(url, function () {\r\n const jp = document.getElementById('jitsiParent');\r\n if (!api && jp && eval('typeof JitsiMeetExternalAPI') === 'function') {\r\n options.parentNode = document.getElementById('jitsiParent');\r\n if (!options.parentNode.querySelector('IFRAME')) {\r\n api = new JitsiMeetExternalAPI(apstate.jitsiDomain, options);\r\n\r\n api.addEventListener('readyToClose', () => {\r\n if (props.onVideoHangup) {\r\n props.onVideoHangup();\r\n setVcContext({ jitsiDomain: '', jitsiAllowed: false });\r\n if (isFullscreenMode()) {\r\n disableFullscreenMode();\r\n }\r\n }\r\n });\r\n }\r\n } else {\r\n if (jp === null || jp.querySelector('IFRAME') === null) {\r\n api = null;\r\n }\r\n }\r\n });\r\n return
    ;\r\n };\r\n\r\n const waitScreen = (errmsg: string) => {\r\n return (\r\n \r\n \r\n \r\n {errmsg ? (\r\n <>\r\n
    Informationen zu Ihrem Videotermin
    \r\n

    {errmsg}

    \r\n \r\n ) : (\r\n <>\r\n
    Warte auf den Beginn des Videochats
    \r\n

    Der Videochat beginnt automatisch, sobald der Arzt bereit ist.

    \r\n \r\n )}\r\n
    \r\n
    \r\n
    \r\n );\r\n };\r\n\r\n const contentToShow = () => {\r\n if (vcContext.jitsiDomain) {\r\n if (vcContext.jitsiAllowed) {\r\n return jitsiContent();\r\n } else {\r\n return waitScreen(vsstate.jitsiError);\r\n }\r\n }\r\n };\r\n\r\n return <>{contentToShow()};\r\n};\r\n\r\nexport default VideochatWL;\r\n","import Alert from 'react-bootstrap/Alert';\r\nimport Row from 'react-bootstrap/esm/Row';\r\nimport Modal from 'react-bootstrap/Modal';\r\nimport StyledButton from '../../Buttons/StyledButton';\r\nimport StyledCol from '../../Cols/StyledCol';\r\nimport { StyledModal } from '../StyledModal/StyledModal';\r\n\r\ninterface IConsigWaitForLetterModal {\r\n show: boolean;\r\n onHide: () => void;\r\n}\r\n\r\nconst ConsignationWaitForLetterModal = (props: IConsigWaitForLetterModal) => {\r\n return (\r\n
    \r\n \r\n \r\n Aktivierung Ihres Accounts\r\n \r\n \r\n
    \r\n \r\n

    \r\n Um Ihren Account zu aktivieren, benötigen Sie einen Bestätigungscode. Dieser Code wird\r\n Ihnen per Brief zugesandt.\r\n

    \r\n
    \r\n
    \r\n
    \r\n \r\n \r\n
    \r\n \r\n \r\n OK\r\n \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n );\r\n};\r\n\r\nexport default ConsignationWaitForLetterModal;\r\n","import * as React from 'react';\r\nimport Col from 'react-bootstrap/Col';\r\nimport Container from 'react-bootstrap/Container';\r\nimport Form from 'react-bootstrap/Form';\r\nimport Modal from 'react-bootstrap/Modal';\r\nimport Row from 'react-bootstrap/Row';\r\nimport StyledButton from '../../Buttons/StyledButton';\r\nimport StyledCol from '../../Cols/StyledCol';\r\nimport { StyledFormLabelForInput } from '../../StyledForm/SyledForm';\r\nimport { StyledModal } from '../StyledModal/StyledModal';\r\n\r\ninterface IPasswordModal {\r\n show: boolean;\r\n sessionId: string;\r\n userId: string;\r\n onHide: () => void;\r\n onInput: (password: string) => void;\r\n onRepeat: (repPassword: string) => void;\r\n identicalPW: boolean;\r\n onSubmit: () => void;\r\n}\r\n\r\nexport const NewPWDModal = (props: IPasswordModal) => {\r\n const handleSubmit = (event: React.FormEvent) => {\r\n event.preventDefault();\r\n const form = event.currentTarget;\r\n if (form.checkValidity() === false) {\r\n event.preventDefault();\r\n event.stopPropagation();\r\n }\r\n {\r\n props.onSubmit();\r\n }\r\n };\r\n\r\n return (\r\n \r\n \r\n Bitte neues Passwort wählen\r\n \r\n
    \r\n \r\n \r\n \r\n \r\n \r\n Neues Passwort\r\n {\r\n props.onInput(e.target.value);\r\n }}\r\n />\r\n \r\n \r\n \r\n \r\n \r\n \r\n Neues Passwort wiederholen\r\n {\r\n props.onRepeat(e.target.value);\r\n }}\r\n />\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Abbrechen\r\n \r\n \r\n \r\n
    \r\n Neues Passwort speichern\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 NewPWDModal;\r\n","import { useContext, useState } from 'react';\r\nimport AlertContext, { AlertOnHide, AlertType } from '../../context/alertContext';\r\nimport LoginContext from '../../context/loginContext';\r\nimport { setPwd } from '../../services/RestServices';\r\nimport { showAlertMessage } from '../../utils/alertHandling';\r\nimport NewPWDModal from '../Modals/NewPWDModal/NewPWDModal';\r\n\r\ninterface IPasswordInit {\r\n onchange: (newPwd: string) => void;\r\n oncancel: () => void;\r\n}\r\n\r\nconst InitialPassword = (props: IPasswordInit) => {\r\n const { state } = useContext(LoginContext);\r\n const { alertdispatch } = useContext(AlertContext);\r\n const [forcePWModalShow, setForcePwModalShow] = useState(true);\r\n\r\n const [passwordCheck, setPasswordCheck] = useState({ identical: false, password: '', confirmedPassword: '' });\r\n\r\n // const [consignationForm, showConsignationForm] = useState(false);\r\n\r\n const handleSubmit = async () => {\r\n // let pwResponse = await setPwd(state.sessionId, passwordCheck.password);\r\n const pwResponse = await setPwd(state, alertdispatch, passwordCheck.password);\r\n\r\n if (pwResponse) {\r\n if (pwResponse.ERROR) {\r\n showAlertMessage({\r\n alertTitle: 'Passwort setzen',\r\n alertTxt: pwResponse.ERROR,\r\n alertType: AlertType.error,\r\n onHide: AlertOnHide.onlyClose,\r\n alertdispatch: alertdispatch,\r\n });\r\n } else {\r\n setForcePwModalShow(false);\r\n {\r\n props.onchange(passwordCheck.password);\r\n }\r\n // showConsignationForm(true);\r\n }\r\n }\r\n };\r\n\r\n const handleCancel = () => {\r\n setForcePwModalShow(false);\r\n {\r\n props.oncancel();\r\n }\r\n };\r\n\r\n function passwordChangeHandler(newPW: string) {\r\n setPasswordCheck({ ...passwordCheck, identical: newPW === passwordCheck.confirmedPassword, password: newPW });\r\n }\r\n\r\n function passwordValidationHandler(confirmedPW: string) {\r\n setPasswordCheck({\r\n ...passwordCheck,\r\n identical: confirmedPW === passwordCheck.password,\r\n confirmedPassword: confirmedPW,\r\n });\r\n }\r\n\r\n return (\r\n
    \r\n handleCancel()}\r\n onInput={(newPassword: string) => passwordChangeHandler(newPassword)}\r\n onRepeat={(repeatedPassword: string) => passwordValidationHandler(repeatedPassword)}\r\n identicalPW={passwordCheck.identical}\r\n onSubmit={() => handleSubmit()}\r\n />\r\n {/* {consignationForm ? (\r\n
    \r\n ) : (<>)} */}\r\n
    \r\n );\r\n};\r\n\r\nexport default InitialPassword;\r\n","import { useContext, useEffect, useState } from 'react';\r\nimport Alert from 'react-bootstrap/Alert';\r\nimport Modal from 'react-bootstrap/Modal';\r\nimport { useNavigate } from 'react-router-dom';\r\nimport InitialPassword from '../../../components/User/InitialPassword';\r\nimport LoginContext from '../../../context/loginContext';\r\nimport { usePersonalData } from '../../../hooks/usePersonalData';\r\nimport { Paths } from '../../../Routes';\r\nimport { checkConsignation } from '../../../services/RestServices';\r\nimport { StyledModal } from '../StyledModal/StyledModal';\r\n\r\ninterface IConsigWaitModal {\r\n show: boolean;\r\n onHide: () => void;\r\n}\r\n\r\nconst ConsignationWaitModal = (props: IConsigWaitModal) => {\r\n const navigate = useNavigate();\r\n const [consignationFinished, setConsignationFinished] = useState(false);\r\n const [initPassword, setInitPassword] = useState(false);\r\n const { state } = useContext(LoginContext);\r\n const { getAndSetPersonalData } = usePersonalData();\r\n\r\n useEffect(() => {\r\n const isConsignationAccepted = async () => {\r\n const consigRes = await checkConsignation(state.sessionId);\r\n if (consigRes.consignation === 'patFinished') {\r\n clearInterval(interval);\r\n setConsignationFinished(true);\r\n if (consigRes.forceNewPWD === 'true') {\r\n setInitPassword(true);\r\n }\r\n }\r\n };\r\n\r\n let interval;\r\n if (props.show) {\r\n interval = setInterval(() => {\r\n isConsignationAccepted();\r\n }, 1000);\r\n }\r\n\r\n // isConsignationAccepted();\r\n return () => {\r\n if (interval) {\r\n clearInterval(interval);\r\n }\r\n };\r\n }, [props.show, consignationFinished]);\r\n\r\n const handlePWChange = () => {\r\n setInitPassword(false);\r\n props.onHide();\r\n getAndSetPersonalData(state.sessionId, state.activeUserId, state.practitionerRoleId);\r\n navigate(Paths.DOKUMENTE);\r\n };\r\n\r\n const handlePWCancel = () => {\r\n setInitPassword(false);\r\n props.onHide();\r\n navigate(Paths.HOME);\r\n };\r\n\r\n return (\r\n
    \r\n \r\n \r\n Aktivierung Ihres Accounts\r\n \r\n \r\n
    \r\n \r\n

    \r\n Bitte überprüfen Sie Ihren E-Mail Posteingang und klicken Sie auf den enthaltenen Link,\r\n um Ihren Account zu aktivieren.\r\n

    \r\n
    \r\n
    \r\n
    \r\n
    \r\n {initPassword ? (\r\n
    \r\n handlePWChange()} oncancel={() => handlePWCancel()} />\r\n
    \r\n ) : (\r\n <>\r\n )}\r\n
    \r\n );\r\n};\r\n\r\nexport default ConsignationWaitModal;\r\n","import * as React from 'react';\r\nimport { useState } from 'react';\r\nimport Col from 'react-bootstrap/Col';\r\nimport Container from 'react-bootstrap/Container';\r\nimport Form from 'react-bootstrap/Form';\r\nimport Modal from 'react-bootstrap/Modal';\r\nimport Row from 'react-bootstrap/Row';\r\nimport StyledButton from '../../Buttons/StyledButton';\r\nimport StyledCol from '../../Cols/StyledCol';\r\nimport { StyledFormLabelForInput } from '../../StyledForm/SyledForm';\r\nimport { StyledModal } from '../StyledModal/StyledModal';\r\n\r\ninterface IDoDoubleOptInModal {\r\n show: boolean;\r\n username: string;\r\n password: string;\r\n onHide: () => void;\r\n onSubmit: (code: string) => void;\r\n}\r\n\r\nexport const DoDoubleOptInModal = (props: IDoDoubleOptInModal) => {\r\n const [code, setCode] = useState('');\r\n\r\n const handleSubmit = (event: React.FormEvent) => {\r\n event.preventDefault();\r\n // const form = event.currentTarget;\r\n // if (form.checkValidity() === false) {\r\n // event.preventDefault();\r\n // event.stopPropagation();\r\n // }\r\n // {\r\n // props.onSubmit();\r\n // }\r\n props.onSubmit(code);\r\n };\r\n\r\n return (\r\n \r\n \r\n Account aktivieren\r\n \r\n
    \r\n \r\n \r\n \r\n \r\n \r\n \r\n Geben Sie Ihren Bestätigungscode ein. Dieser Code wird Ihnen per Brief\r\n zugesandt.\r\n \r\n setCode(e.target.value)}\r\n />\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Abbrechen\r\n \r\n \r\n \r\n Absenden\r\n \r\n \r\n \r\n \r\n \r\n
    \r\n \r\n );\r\n};\r\n\r\nexport default DoDoubleOptInModal;\r\n","import Alert from 'react-bootstrap/Alert';\r\nimport Row from 'react-bootstrap/esm/Row';\r\nimport Modal from 'react-bootstrap/Modal';\r\nimport StyledButton from '../../Buttons/StyledButton';\r\nimport StyledCol from '../../Cols/StyledCol';\r\nimport { StyledModal } from '../StyledModal/StyledModal';\r\n\r\ninterface IDoDoubleOptInViaLinkModal {\r\n show: boolean;\r\n onHide: () => void;\r\n}\r\n\r\nconst DoDoubleOptInViaLinkModal = (props: IDoDoubleOptInViaLinkModal) => {\r\n return (\r\n
    \r\n \r\n \r\n Aktivierung Ihres Accounts\r\n \r\n \r\n
    \r\n \r\n

    \r\n Um Ihren Account zu aktivieren, klicken Sie auf den Aktivierungslink den Sie per Mail\r\n erhalten haben.\r\n

    \r\n
    \r\n
    \r\n
    \r\n \r\n \r\n
    \r\n \r\n \r\n OK\r\n \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n );\r\n};\r\n\r\nexport default DoDoubleOptInViaLinkModal;\r\n","import * as React from 'react';\r\nimport { useContext, useState } from 'react';\r\nimport Col from 'react-bootstrap/Col';\r\nimport Form from 'react-bootstrap/Form';\r\nimport Image from 'react-bootstrap/Image';\r\nimport Modal from 'react-bootstrap/Modal';\r\nimport Row from 'react-bootstrap/Row';\r\nimport { useNavigate } from 'react-router-dom';\r\nimport LoginContext from '../../../context/loginContext';\r\nimport TerminierungContext from '../../../context/terminierungContext';\r\nimport { PROFILE_HOME, securityItemNames } from '../../../globals/global';\r\nimport { usePersonalData } from '../../../hooks/usePersonalData';\r\nimport { Paths } from '../../../Routes';\r\nimport { getPatientProfilePictureWL } from '../../../services/fhir/FHIRPatientResource';\r\nimport { authorizeAsync, IAuthorizeAsync } from '../../../services/RestServices';\r\nimport StyledButton from '../../Buttons/StyledButton';\r\nimport StyledCol from '../../Cols/StyledCol';\r\nimport { StyledFormLabelForInput } from '../../StyledForm/SyledForm';\r\nimport { StyledModal } from '../StyledModal/StyledModal';\r\ninterface I2FAModal {\r\n show: boolean;\r\n onHide: () => void;\r\n username: string;\r\n password: string;\r\n}\r\n\r\nconst TwoFactorAuthModal = (props: I2FAModal) => {\r\n const navigate = useNavigate();\r\n const { dispatch } = useContext(LoginContext);\r\n const { tmdispatch } = useContext(TerminierungContext);\r\n\r\n const [token, setToken] = useState('');\r\n\r\n const [validated, setValidated] = useState(false);\r\n const [invalid, setInvalid] = useState(false);\r\n\r\n const [errorMessage, setErroMessage] = useState('');\r\n\r\n const { getAndSetPersonalData } = usePersonalData();\r\n\r\n // function getEnabledSecurityItems(securityItems: Object): Array {\r\n // const enabledItems: Array = [];\r\n // const entries = Object.entries(securityItems);\r\n // for (const [item, enabled] of entries) {\r\n // if (enabled === 'true') {\r\n // enabledItems.push(item);\r\n // }\r\n // }\r\n // return enabledItems;\r\n // }\r\n\r\n const handleSubmit = async (event: React.FormEvent, token: string) => {\r\n event.preventDefault();\r\n\r\n const authorizeData: IAuthorizeAsync = {\r\n username: props.username,\r\n password: props.password,\r\n token: token,\r\n };\r\n\r\n const twoFALogin = await authorizeAsync(authorizeData);\r\n\r\n if (twoFALogin.error) {\r\n setErroMessage('Bitte geben Sie ein gültiges Token an.');\r\n setInvalid(true);\r\n setToken('');\r\n } else if (!twoFALogin) {\r\n setErroMessage('Kann keine Verbindung zum Server herstellen.');\r\n setInvalid(true);\r\n } else {\r\n // let enabledSecurityItems = getEnabledSecurityItems(twoFALogin.SecurityItems);\r\n const activeStudy =\r\n twoFALogin.activeStudies !== undefined\r\n ? twoFALogin.activeStudies.find(\r\n (element: { studyPatId: any }) => element.studyPatId === twoFALogin.activePatId,\r\n )\r\n : undefined;\r\n\r\n const activeUserId = twoFALogin.userId; //now default is HOME\r\n const practitionerRoleId = twoFALogin.practitionerRoleId;\r\n\r\n dispatch({\r\n type: 'LOGIN',\r\n userId: twoFALogin.userId,\r\n practitionerRoleId: twoFALogin.practitionerRoleId,\r\n sessionId: twoFALogin.sessionId,\r\n securityItems: {\r\n CHARTS: twoFALogin.SecurityItems[securityItemNames.CHARTS] === 'true' ? true : false,\r\n CHARTS_WEIGHT: twoFALogin.SecurityItems[securityItemNames.CHARTS_WEIGHT] === 'true' ? true : false,\r\n CHARTS_FATMASS:\r\n twoFALogin.SecurityItems[securityItemNames.CHARTS_FATMASS] === 'true' ? true : false,\r\n CHARTS_BLOODSUGAR:\r\n twoFALogin.SecurityItems[securityItemNames.CHARTS_BLOODSUGAR] === 'true' ? true : false,\r\n CHARTS_FLI: twoFALogin.SecurityItems[securityItemNames.CHARTS_FLI] === 'true' ? true : false,\r\n CHARTS_SAM: twoFALogin.SecurityItems[securityItemNames.CHARTS_SAM] === 'true' ? true : false,\r\n CHARTS_ACTIVITY:\r\n twoFALogin.SecurityItems[securityItemNames.CHARTS_ACTIVITY] === 'true' ? true : false,\r\n TABLE_VAL: twoFALogin.SecurityItems[securityItemNames.TABLE_VAL] === 'true' ? true : false,\r\n DOKUMENT: twoFALogin.SecurityItems[securityItemNames.DOKUMENT] === 'true' ? true : false,\r\n FOTOS: twoFALogin.SecurityItems[securityItemNames.FOTOS] === 'true' ? true : false,\r\n FRAGEBOGEN: twoFALogin.SecurityItems[securityItemNames.FRAGEBOGEN] === 'true' ? true : false,\r\n MEDIKATION: twoFALogin.SecurityItems[securityItemNames.MEDIKATION] === 'true' ? true : false,\r\n TAGESPLAN: twoFALogin.SecurityItems[securityItemNames.TAGESPLAN] === 'true' ? true : false,\r\n TERMINE: twoFALogin.SecurityItems[securityItemNames.TERMINE] === 'true' ? true : false,\r\n VIDEO: twoFALogin.SecurityItems[securityItemNames.VIDEO] === 'true' ? true : false,\r\n JOURNEY: twoFALogin.SecurityItems[securityItemNames.JOURNEY] === 'true' ? true : false,\r\n TODO: twoFALogin.SecurityItems[securityItemNames.TODO]\r\n ? twoFALogin.SecurityItems[securityItemNames.TODO]\r\n : [],\r\n TAB_ORDER: twoFALogin.SecurityItems[securityItemNames.TAB_ORDER]\r\n ? twoFALogin.SecurityItems[securityItemNames.TAB_ORDER]\r\n : '',\r\n },\r\n iceServers: twoFALogin.iceServers,\r\n possibleMacros: twoFALogin.PossibleMacros,\r\n activeStudies: twoFALogin.activeStudies,\r\n activeProfile: activeStudy === undefined || activeStudy === '' ? PROFILE_HOME : activeStudy.studyName,\r\n activeUserId: activeUserId,\r\n extraLinks: twoFALogin.extraLinks,\r\n possibleStudies: twoFALogin.possibleStudies ? twoFALogin.possibleStudies : [],\r\n addConsignationsToAsk: twoFALogin.addConsignationsToAsk ? twoFALogin.addConsignationsToAsk : [],\r\n });\r\n\r\n getAndSetPersonalData(twoFALogin.sessionId, activeUserId, practitionerRoleId);\r\n\r\n const photoRes = await getPatientProfilePictureWL(twoFALogin.sessionId, activeUserId);\r\n\r\n if (photoRes.data.entry) {\r\n tmdispatch({\r\n type: 'SETPERSONALDATA_PROFILEPHOTO',\r\n personalData: {\r\n profilePhoto: photoRes.data.entry[0].resource.photo\r\n ? photoRes.data.entry[0].resource.photo[0].data\r\n : '',\r\n },\r\n });\r\n }\r\n\r\n tmdispatch({\r\n type: 'SETWITHLOGIN',\r\n withLogin: true,\r\n });\r\n setValidated(true);\r\n navigate(Paths.DOKUMENTE);\r\n }\r\n };\r\n\r\n return (\r\n \r\n \r\n Code eingeben\r\n \r\n ) => handleSubmit(event, token)}\r\n >\r\n \r\n \r\n \r\n Bitte geben Sie den Sicherheits-Code von Ihrer Authenticator-Extension hier ein:\r\n \r\n 2-Faktor Auth.\r\n setToken(e.target.value)}\r\n />\r\n {errorMessage}\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 Abbrechen\r\n \r\n \r\n
    \r\n
    \r\n \r\n \r\n Anmelden\r\n \r\n \r\n
    \r\n
    \r\n
    \r\n \r\n \r\n );\r\n};\r\n\r\nexport default TwoFactorAuthModal;\r\n","import * as React from 'react';\r\nimport { useContext, useRef, useState } from 'react';\r\nimport Accordion from 'react-bootstrap/Accordion';\r\nimport Alert from 'react-bootstrap/Alert';\r\nimport Button from 'react-bootstrap/Button';\r\nimport Card from 'react-bootstrap/Card';\r\nimport Col from 'react-bootstrap/Col';\r\nimport Form from 'react-bootstrap/Form';\r\nimport Modal from 'react-bootstrap/Modal';\r\nimport Row from 'react-bootstrap/Row';\r\nimport { IoIosArrowDropdownCircle, IoIosArrowDropupCircle } from 'react-icons/io';\r\nimport { ThemeContext } from 'styled-components';\r\nimport LoginContext from '../../../context/loginContext';\r\nimport StyledButton from '../../Buttons/StyledButton';\r\nimport StyledCol from '../../Cols/StyledCol';\r\nimport { ParagraphFontSize, StyledParagraph } from '../../StyledParagraph/StyledParagraph';\r\nimport { StyledModal } from '../StyledModal/StyledModal';\r\nimport { useAppProperties } from '../../../hooks/useAppProperties';\r\nimport { VerticalCenterDiv } from '../../Div/StyledDiv';\r\n\r\ninterface IConsigModal {\r\n show: boolean;\r\n onHide: () => void;\r\n onSubmit: () => void;\r\n onDeny: () => void;\r\n checkbox1: () => void;\r\n checkbox2: () => void;\r\n checkConsignation1: boolean;\r\n checkConsignation2: boolean;\r\n sessionId: string;\r\n userId: string;\r\n notGiven: boolean;\r\n}\r\n\r\nconst ConsignationModal = (props: IConsigModal) => {\r\n const themeContext = useContext(ThemeContext);\r\n\r\n const [activeId, setActiveId] = useState('0');\r\n const { state } = useContext(LoginContext);\r\n const [termsHTMLBottom, setTermsHTMLBottom] = useState(false);\r\n const [privacyHTMLBottom, setPrivacyHTMLBottom] = useState(false);\r\n\r\n const submitButtonRef = useRef(null);\r\n\r\n const { getImpressum } = useAppProperties();\r\n\r\n const handleSubmit = (event: React.FormEvent) => {\r\n submitButtonRef?.current?.setAttribute('disabled', 'disabled');\r\n\r\n event.preventDefault();\r\n const form = event.currentTarget;\r\n if (form.checkValidity() === false) {\r\n event.preventDefault();\r\n event.stopPropagation();\r\n }\r\n {\r\n props.onSubmit();\r\n }\r\n };\r\n\r\n function toggleActive(id: string) {\r\n if (activeId !== id) {\r\n setActiveId(id);\r\n } else {\r\n setActiveId('');\r\n }\r\n }\r\n\r\n const getIcon = (id: string) => {\r\n return activeId === id ? : ;\r\n };\r\n\r\n const termsHTMLScrollHandling = (e: any) => {\r\n let bottom = false;\r\n const scrollHeight = e.target.scrollHeight;\r\n const scrollTop = e.target.scrollTop;\r\n const clientHeight = e.target.clientHeight;\r\n\r\n // console.log('scrollHeight: ', scrollHeight);\r\n // console.log('scrollTop: ', scrollTop);\r\n // console.log('clientHeight: ', clientHeight);\r\n\r\n const diff = scrollHeight - scrollTop;\r\n // console.log('diff: ', diff);\r\n\r\n if (diff - 1 <= clientHeight) {\r\n bottom = true;\r\n }\r\n\r\n if (bottom) {\r\n setTermsHTMLBottom(true);\r\n }\r\n };\r\n\r\n const privacyHTMLScrollHandling = (e: any) => {\r\n let bottom = false;\r\n const scrollHeight = e.target.scrollHeight;\r\n const scrollTop = e.target.scrollTop;\r\n const clientHeight = e.target.clientHeight;\r\n\r\n // console.log('scrollHeight: ', scrollHeight);\r\n // console.log('scrollTop: ', scrollTop);\r\n // console.log('clientHeight: ', clientHeight);\r\n\r\n const diff = scrollHeight - scrollTop;\r\n // console.log('diff: ', diff);\r\n\r\n if (diff - 1 <= clientHeight) {\r\n bottom = true;\r\n }\r\n\r\n if (bottom) {\r\n setPrivacyHTMLBottom(true);\r\n }\r\n };\r\n\r\n const scrollInfoMessage = () => {\r\n if (!termsHTMLBottom) {\r\n return (\r\n <>\r\n \r\n \r\n Lesen Sie die Einwilligungserklärung vollständig bis zum Schluss durch. Am Textende haben\r\n Sie die Möglichkeit, die Zustimmung zu aktivieren.\r\n \r\n \r\n \r\n );\r\n }\r\n\r\n return null;\r\n };\r\n\r\n return (\r\n \r\n \r\n Einwilligungserklärung\r\n \r\n \r\n {props.notGiven ? (\r\n
    \r\n \r\n

    Beim letzten Anmeldungsversuch wurde die Einwilligungserklärung abgelehnt.

    \r\n

    Um sich anmelden zu können, muss der Einwilligungserklärung zugestimmt werden.

    \r\n
    \r\n
    \r\n ) : (\r\n <>\r\n )}\r\n \r\n \r\n \r\n toggleActive('0')}\r\n as={Button}\r\n variant=\"link\"\r\n eventKey=\"0\"\r\n style={{ color: 'white' }}\r\n >\r\n
    \r\n Einwilligungserklärung {getIcon('0')}\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 toggleActive('1')}\r\n as={Button}\r\n variant=\"link\"\r\n eventKey=\"1\"\r\n style={{ color: 'white' }}\r\n >\r\n Datenschutzerklärung {getIcon('1')}\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 {scrollInfoMessage()}\r\n \r\n \r\n
    \r\n \r\n \r\n \r\n
    \r\n \r\n Ich gebe vorstehende Einwilligungserklärung freiwillig ab und\r\n erkläre mich ausdrücklich mit dem Inhalt einverstanden.\r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n {/*
    \r\n \r\n \r\n \r\n
    \r\n \r\n Ich habe die Datenschutzerklärung zur Kenntnis genommen und\r\n stimme dieser zu.\r\n \r\n
    \r\n
    \r\n
    \r\n
    */}\r\n \r\n
    \r\n \r\n \r\n \r\n Abbrechen\r\n \r\n \r\n \r\n \r\n {getImpressum().impressumLink && (\r\n \r\n Impressum\r\n \r\n )}\r\n {getImpressum().impressumLink && getImpressum().datenschutzLink && ' | '}\r\n {getImpressum().impressumLink && (\r\n \r\n Datenschutz\r\n \r\n )}\r\n \r\n \r\n
    \r\n \r\n \r\n Ablehnen\r\n \r\n \r\n
    \r\n
    \r\n \r\n \r\n \r\n Ich stimme zu\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 ConsignationModal;\r\n","import * as React from 'react';\r\nimport { useContext, useEffect, useRef, useState } from 'react';\r\nimport Accordion from 'react-bootstrap/Accordion';\r\nimport Button from 'react-bootstrap/Button';\r\nimport Card from 'react-bootstrap/Card';\r\nimport Col from 'react-bootstrap/Col';\r\nimport Form from 'react-bootstrap/Form';\r\nimport Modal from 'react-bootstrap/Modal';\r\nimport Row from 'react-bootstrap/Row';\r\nimport { IoIosArrowDropdownCircle, IoIosArrowDropupCircle } from 'react-icons/io';\r\nimport { ThemeContext } from 'styled-components';\r\nimport LoginContext from '../../../context/loginContext';\r\nimport { getTermsHTML } from '../../../services/RestServices';\r\nimport StyledButton from '../../Buttons/StyledButton';\r\nimport StyledCol from '../../Cols/StyledCol';\r\nimport { StyledParagraph } from '../../StyledParagraph/StyledParagraph';\r\nimport { StyledModal } from '../StyledModal/StyledModal';\r\n\r\ninterface IConsigAddModal {\r\n show: boolean;\r\n onHide: () => void;\r\n onSubmit: () => void;\r\n onDeny: () => void;\r\n checkbox: () => void;\r\n checkConsignation: boolean;\r\n sessionId: string;\r\n userId: string;\r\n}\r\n\r\nconst ConsignationAddModal = (props: IConsigAddModal) => {\r\n const themeContext = useContext(ThemeContext);\r\n\r\n const [activeId, setActiveId] = useState('0');\r\n const { state } = useContext(LoginContext);\r\n const [termsHTMLBottom, setTermsHTMLBottom] = useState(false);\r\n const [htmlTerm, setHTMLTerm] = useState('');\r\n\r\n const submitButtonRef = useRef(null);\r\n\r\n useEffect(() => {\r\n console.log('getTermsHTML...');\r\n getTermHTML();\r\n }, []);\r\n\r\n const handleSubmit = (event: React.FormEvent) => {\r\n submitButtonRef?.current?.setAttribute('disabled', 'disabled');\r\n\r\n event.preventDefault();\r\n const form = event.currentTarget;\r\n if (form.checkValidity() === false) {\r\n event.preventDefault();\r\n event.stopPropagation();\r\n }\r\n {\r\n props.onSubmit();\r\n }\r\n };\r\n\r\n function toggleActive(id: string) {\r\n if (activeId !== id) {\r\n setActiveId(id);\r\n } else {\r\n setActiveId('');\r\n }\r\n }\r\n\r\n const getIcon = (id: string) => {\r\n return activeId === id ? : ;\r\n };\r\n\r\n const termsHTMLScrollHandling = (e: any) => {\r\n let bottom = false;\r\n //const scrollHeight = e.target.scrollHeight;\r\n const scrollHeight = document.getElementById('termsHTMLAddDiv')?.offsetHeight;\r\n const scrollTop = e.target.scrollTop;\r\n const clientHeight = e.target.clientHeight;\r\n\r\n const diff = (scrollHeight ? scrollHeight : 0) - scrollTop;\r\n\r\n if (diff - 1 <= clientHeight) {\r\n bottom = true;\r\n }\r\n\r\n if (bottom) {\r\n setTermsHTMLBottom(true);\r\n }\r\n };\r\n\r\n const scrollInfoMessage = () => {\r\n if (!termsHTMLBottom) {\r\n return (\r\n <>\r\n \r\n \r\n Lesen Sie die Einwilligungserklärung vollständig bis zum Schluss durch. Am Textende haben\r\n Sie die Möglichkeit, die Zustimmung zu aktivieren.\r\n \r\n \r\n \r\n );\r\n }\r\n\r\n return null;\r\n };\r\n\r\n const getTermHTML = async () => {\r\n if (state.addConsignationsToAsk) {\r\n const htmlText = await getTermsHTML(state.sessionId, state.addConsignationsToAsk[0]);\r\n setHTMLTerm(htmlText);\r\n }\r\n\r\n return '';\r\n };\r\n\r\n return (\r\n \r\n \r\n Einwilligungserklärung\r\n \r\n \r\n \r\n \r\n \r\n toggleActive('0')}\r\n as={Button}\r\n variant=\"link\"\r\n eventKey=\"0\"\r\n style={{ color: 'white' }}\r\n >\r\n
    \r\n Einwilligungserklärung {getIcon('0')}\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 {scrollInfoMessage()}\r\n \r\n \r\n
    \r\n \r\n \r\n \r\n
    \r\n \r\n Ich habe die Einwilligungserklärung zur Kenntnis genommen und\r\n stimme dieser zu.\r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n \r\n \r\n \r\n Abbrechen\r\n \r\n \r\n
    \r\n \r\n \r\n Ablehnen\r\n \r\n \r\n
    \r\n
    \r\n \r\n
    \r\n \r\n Ich stimme zu\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 ConsignationAddModal;\r\n","import { useContext, useState } from 'react';\r\nimport { useNavigate } from 'react-router-dom';\r\nimport AlertContext, { AlertOnHide, AlertType } from '../../context/alertContext';\r\nimport LoginContext from '../../context/loginContext';\r\nimport { getBaseURL } from '../../globals/global';\r\nimport { Paths } from '../../Routes';\r\nimport { consignation } from '../../services/RestServices';\r\nimport { showAlertMessage } from '../../utils/alertHandling';\r\nimport ConsignationAddModal from '../Modals/ConsignationModal/ConsignationAddModal';\r\n\r\ninterface IConsignationAdd {\r\n ondenial: () => void;\r\n oncancel: () => void;\r\n}\r\n\r\nconst ConsignationAdd = (props: IConsignationAdd) => {\r\n const navigate = useNavigate();\r\n const { state } = useContext(LoginContext);\r\n const { alertdispatch } = useContext(AlertContext);\r\n const [consigModalShow, setConsigModalShow] = useState(true);\r\n const [checkConsignation, setCheckConsignation] = useState(false);\r\n\r\n const handleChange1 = () => {\r\n setCheckConsignation(!checkConsignation);\r\n };\r\n\r\n const getUrlTerms = () => {\r\n const urlTerms = getBaseURL() + '/' + state.addConsignationsToAsk[0];\r\n return urlTerms;\r\n };\r\n\r\n const handleSubmit = async () => {\r\n const consigRes = await consignation(state.userId, state.sessionId, 'given', true, getUrlTerms());\r\n\r\n if (consigRes.status === 'success') {\r\n setConsigModalShow(false);\r\n navigate(Paths.DOKUMENTE);\r\n } else {\r\n showAlertMessage({\r\n alertTitle: 'Datenschutzerklärung',\r\n alertTxt: 'Ein Fehler ist aufgetreten!',\r\n alertType: AlertType.error,\r\n onHide: AlertOnHide.onlyClose,\r\n alertdispatch: alertdispatch,\r\n });\r\n }\r\n };\r\n\r\n const handleDenial = async () => {\r\n const consigDenialRes = await consignation(state.userId, state.sessionId, 'not given', true, getUrlTerms());\r\n\r\n if (consigDenialRes.status === 'success') {\r\n setConsigModalShow(false);\r\n {\r\n props.ondenial();\r\n }\r\n } else {\r\n showAlertMessage({\r\n alertTitle: 'Datenschutzerklärung',\r\n alertTxt: 'Ein Fehler ist aufgetreten!',\r\n alertType: AlertType.error,\r\n onHide: AlertOnHide.onlyClose,\r\n alertdispatch: alertdispatch,\r\n });\r\n }\r\n };\r\n\r\n const handleCancel = () => {\r\n setConsigModalShow(false);\r\n {\r\n props.oncancel();\r\n }\r\n };\r\n\r\n return (\r\n
    \r\n handleCancel()}\r\n onSubmit={() => handleSubmit()}\r\n onDeny={() => handleDenial()}\r\n checkbox={() => handleChange1()}\r\n checkConsignation={checkConsignation}\r\n sessionId={state.sessionId}\r\n userId={state.userId}\r\n />\r\n
    \r\n );\r\n};\r\n\r\nexport default ConsignationAdd;\r\n","import { useContext, useState } from 'react';\r\nimport { useNavigate } from 'react-router-dom';\r\nimport AlertContext, { AlertOnHide, AlertType } from '../../context/alertContext';\r\nimport LoginContext from '../../context/loginContext';\r\nimport useHandleLogout from '../../hooks/useHandleLogout';\r\nimport { Paths } from '../../Routes';\r\nimport { consignation } from '../../services/RestServices';\r\nimport { showAlertMessage } from '../../utils/alertHandling';\r\nimport ConsignationModal from '../Modals/ConsignationModal/ConsignationModal';\r\nimport ConsignationWaitForLetterModal from '../Modals/ConsignationModal/ConsignationWaitForLetterModal';\r\nimport ConsignationWaitModal from '../Modals/ConsignationModal/ConsignationWaitModal';\r\nimport ConsignationAdd from './ConsignationAdd';\r\nimport InitialPassword from './InitialPassword';\r\n\r\ninterface IConsignation {\r\n ondenial: () => void;\r\n oncancel: () => void;\r\n notgiven: boolean;\r\n}\r\n\r\nconst Consignation = (props: IConsignation) => {\r\n const navigate = useNavigate();\r\n const { state } = useContext(LoginContext);\r\n const { alertdispatch } = useContext(AlertContext);\r\n const [consigModalShow, setConsigModalShow] = useState(true);\r\n const [consigWaitModalShow, setConsigWaitModalShow] = useState(false);\r\n const [consigWaitForLetterModalShow, setConsigWaitForLetterModalShow] = useState(false);\r\n const [checkConsignation, setCheckConsignation] = useState({ checkbox1: false, checkbox2: false });\r\n const [consigAddModalShow, setConsigAddModalShow] = useState(false);\r\n const [passwordModalShow, setPasswordModalShow] = useState(false);\r\n const { handleLogout } = useHandleLogout();\r\n const [lastConsigRes, setLastConsigRes] = useState({ waitForConsignation: 'false', waitForLetter: 'false' });\r\n\r\n const handleChange1 = () => {\r\n setCheckConsignation({ checkbox1: !checkConsignation.checkbox1, checkbox2: checkConsignation.checkbox2 });\r\n };\r\n\r\n const handleChange2 = () => {\r\n setCheckConsignation({ checkbox1: checkConsignation.checkbox1, checkbox2: !checkConsignation.checkbox2 });\r\n };\r\n\r\n const handleSubmit = async () => {\r\n const consigRes = await consignation(state.userId, state.sessionId, 'given');\r\n\r\n if (consigRes.status === 'success') {\r\n setConsigModalShow(false);\r\n if (consigRes.forceNewPWD == 'true') {\r\n setLastConsigRes({\r\n waitForConsignation: consigRes.waitForConsignation,\r\n waitForLetter: consigRes.waitForLetter,\r\n });\r\n setPasswordModalShow(true);\r\n } else {\r\n if (consigRes.waitForConsignation === 'true') {\r\n setConsigWaitModalShow(true);\r\n } else if (consigRes.waitForLetter === 'true') {\r\n setConsigWaitForLetterModalShow(true);\r\n } else {\r\n if (state.addConsignationsToAsk && state.addConsignationsToAsk.length > 0) {\r\n setConsigAddModalShow(true);\r\n } else {\r\n navigate(Paths.DOKUMENTE);\r\n }\r\n }\r\n }\r\n } else {\r\n showAlertMessage({\r\n alertTitle: 'Datenschutzerklärung',\r\n alertTxt: 'Ein Fehler ist aufgetreten!',\r\n alertType: AlertType.error,\r\n onHide: AlertOnHide.onlyClose,\r\n alertdispatch: alertdispatch,\r\n });\r\n }\r\n };\r\n\r\n const handlePWChange = async () => {\r\n if (lastConsigRes.waitForConsignation === 'true') {\r\n setConsigWaitModalShow(true);\r\n } else if (lastConsigRes.waitForLetter === 'true') {\r\n setConsigWaitForLetterModalShow(true);\r\n } else if (state.addConsignationsToAsk && state.addConsignationsToAsk.length > 0) {\r\n setConsigAddModalShow(true);\r\n } else {\r\n navigate(Paths.DOKUMENTE);\r\n }\r\n };\r\n\r\n const setInitPassword = async () => {\r\n navigate(Paths.HOME);\r\n };\r\n\r\n const handleDenial = async () => {\r\n const consigDenialRes = await consignation(state.userId, state.sessionId, 'not given');\r\n\r\n if (consigDenialRes.status === 'success') {\r\n setConsigModalShow(false);\r\n {\r\n props.ondenial();\r\n }\r\n } else {\r\n showAlertMessage({\r\n alertTitle: 'Datenschutzerklärung',\r\n alertTxt: 'Ein Fehler ist aufgetreten!',\r\n alertType: AlertType.error,\r\n onHide: AlertOnHide.onlyClose,\r\n alertdispatch: alertdispatch,\r\n });\r\n }\r\n };\r\n\r\n const handleCancel = () => {\r\n setConsigModalShow(false);\r\n {\r\n props.oncancel();\r\n }\r\n };\r\n\r\n const handleHideConsignationWaitModal = () => {\r\n setConsigWaitModalShow(false);\r\n navigate(Paths.DOKUMENTE);\r\n };\r\n\r\n const handleHideConsignationWaitForLetterModal = () => {\r\n setConsigWaitForLetterModalShow(false);\r\n handleLogout();\r\n };\r\n\r\n const handleConsigAddDenial = () => {\r\n setConsigAddModalShow(false);\r\n };\r\n\r\n const showConsignationAddForm = () => {\r\n setConsigAddModalShow(false);\r\n };\r\n\r\n return (\r\n
    \r\n handleCancel()}\r\n onSubmit={() => handleSubmit()}\r\n onDeny={() => handleDenial()}\r\n checkbox1={() => handleChange1()}\r\n checkbox2={() => handleChange2()}\r\n checkConsignation1={checkConsignation.checkbox1}\r\n checkConsignation2={checkConsignation.checkbox2}\r\n sessionId={state.sessionId}\r\n userId={state.userId}\r\n notGiven={props.notgiven}\r\n />\r\n handleHideConsignationWaitModal()} />\r\n handleHideConsignationWaitForLetterModal()}\r\n />\r\n {consigAddModalShow && (\r\n handleConsigAddDenial()} oncancel={() => showConsignationAddForm()} />\r\n )}\r\n {passwordModalShow && (\r\n handlePWChange()} oncancel={() => setInitPassword()} />\r\n )}\r\n
    \r\n );\r\n};\r\n\r\nexport default Consignation;\r\n","import * as React from 'react';\r\nimport { useContext, useEffect, useRef, useState } from 'react';\r\nimport Button from 'react-bootstrap/Button';\r\nimport Card from 'react-bootstrap/Card';\r\nimport Col from 'react-bootstrap/Col';\r\nimport Form from 'react-bootstrap/Form';\r\nimport Row from 'react-bootstrap/Row';\r\nimport { useLocation, useNavigate } from 'react-router-dom';\r\nimport { Paths } from '../../Routes';\r\nimport StyledButton from '../../components/Buttons/StyledButton';\r\nimport { StyledMainCardTitle, StyledProfileCard } from '../../components/Cards/StyledCard';\r\nimport { RightDiv } from '../../components/Div/StyledDiv';\r\nimport { LottieButtonLoadingSpinner } from '../../components/Loading/Loading';\r\nimport ConsignationWaitForLetterModal from '../../components/Modals/ConsignationModal/ConsignationWaitForLetterModal';\r\nimport ConsignationWaitModal from '../../components/Modals/ConsignationModal/ConsignationWaitModal';\r\nimport DoDoubleOptInModal from '../../components/Modals/DoDoubleOptInModal/DoDoubleOptInModal';\r\nimport DoDoubleOptInViaLinkModal from '../../components/Modals/DoDoubleOptInModal/DoDoubleOptInViaLinkModal';\r\nimport TwoFactorAuthModal from '../../components/Modals/TwoFALoginModal/TwoFALoginModal';\r\nimport { StyledFormLabelForInput } from '../../components/StyledForm/SyledForm';\r\nimport Consignation from '../../components/User/Consignation';\r\nimport ConsignationAdd from '../../components/User/ConsignationAdd';\r\nimport InitialPassword from '../../components/User/InitialPassword';\r\nimport AlertContext, { AlertOnHide, AlertType } from '../../context/alertContext';\r\nimport AppPropsContext from '../../context/appPropsContext';\r\nimport ExecuteRuleContext from '../../context/executeRuleContext';\r\nimport LoginContext from '../../context/loginContext';\r\nimport TerminierungContext from '../../context/terminierungContext';\r\nimport { PROFILE_HOME, securityItemNames } from '../../globals/global';\r\nimport useHandleLogout from '../../hooks/useHandleLogout';\r\nimport { usePersonalData } from '../../hooks/usePersonalData';\r\nimport { useProfileSwitch } from '../../hooks/useProfileSwitch';\r\nimport {\r\n IAuthorizeAsync,\r\n addPlannedStudy,\r\n authorizeAsync,\r\n executeRule,\r\n getPrivacyHTML,\r\n getTermsHTML,\r\n setActivePatId,\r\n} from '../../services/RestServices';\r\nimport { getPatientProfilePictureWL } from '../../services/fhir/FHIRPatientResource';\r\nimport { showAlertMessage } from '../../utils/alertHandling';\r\nimport { calcButtonPaddingSize } from '../../utils/lottieUtils';\r\nimport { getQueryParams } from '../../utils/urlUtils';\r\n\r\ninterface ILoginURLParams {\r\n addPlannedStudy?: string;\r\n}\r\n\r\nconst Login = () => {\r\n const navigate = useNavigate();\r\n const { apstate } = useContext(AppPropsContext);\r\n\r\n const [username, setUsername] = useState('');\r\n const [password, setPassword] = useState('');\r\n const [initPassword, setInitPassword] = useState(false);\r\n const [consignationForm, showConsignationForm] = useState(false);\r\n const [consignationAddForm, showConsignationAddForm] = useState(false);\r\n const [consignationWaitForm, showConsignationWaitForm] = useState(false);\r\n const [consignationWaitForLetterForm, showConsignationWaitForLetterForm] = useState(false);\r\n const [doubleOptInForm, showDoubleOptInForm] = useState(false);\r\n const [doubleOptInViaLinkForm, showDoubleOptInViaLinkForm] = useState(false);\r\n const [twoFAModalShow, set2FAModalShow] = useState(false);\r\n const [notGiven, setNotGiven] = useState(false);\r\n const [consig, setConsignation] = useState('');\r\n const [doubleOptInMissingAfterPWDChange, setDoubleOptInMissingAfterPWDChange] = useState(false); //wird nur gebraucht wenn forcePWD + doubleOptInMissing kommt, dann muss zuerst forcePWD ziehen\r\n const [autoLogin, setAutoLogin] = useState(false);\r\n const [activeStudyName, setActiveStudyName] = useState('');\r\n\r\n const [showLoginButtonLoadingSpinner, setShowLoginButtonLoadingSpinner] = useState(false);\r\n\r\n const { state, dispatch } = useContext(LoginContext);\r\n const { tmdispatch } = useContext(TerminierungContext);\r\n const { alertdispatch } = useContext(AlertContext);\r\n const { executerulestate } = useContext(ExecuteRuleContext);\r\n\r\n const { getAndSetPersonalData, resetPersonalData } = usePersonalData();\r\n\r\n const { handleLogout } = useHandleLogout();\r\n\r\n const loginButtonRef = useRef(null);\r\n\r\n const { setSecurityItems, getUserId } = useProfileSwitch();\r\n\r\n const location = useLocation();\r\n\r\n useEffect(() => {\r\n if (state.redirectUser && state.redirectUser.length > 0) {\r\n setUsername(state.redirectUser);\r\n setPassword(state.redirectPwd);\r\n setAutoLogin(true);\r\n return () => {\r\n dispatch({\r\n type: 'RESETREDIRECTUSER',\r\n });\r\n };\r\n }\r\n }, []);\r\n\r\n useEffect(() => {\r\n if (autoLogin)\r\n if (loginButtonRef) {\r\n loginButtonRef.current.click();\r\n }\r\n return () => {\r\n setAutoLogin(false);\r\n };\r\n }, [autoLogin]);\r\n\r\n useEffect(() => {\r\n const setCurrentActivePatId = async (activeUserId: string) => {\r\n const changeRes = await setActivePatId(state.sessionId, activeUserId);\r\n if (!changeRes.SUCCESS) {\r\n // console.log('profile change NOT successful');\r\n }\r\n };\r\n\r\n if (activeStudyName !== '') {\r\n setSecurityItems(activeStudyName);\r\n\r\n const activeUserId = getUserId(activeStudyName);\r\n\r\n dispatch({\r\n type: 'SETACTIVEUSERID',\r\n activeUserId: activeUserId,\r\n });\r\n\r\n dispatch({\r\n type: 'SETACTIVEPROFILE',\r\n activeProfile: activeStudyName,\r\n });\r\n\r\n setCurrentActivePatId(activeUserId);\r\n }\r\n return () => {\r\n setActiveStudyName('');\r\n };\r\n }, [activeStudyName]);\r\n\r\n const getAddConsignationToAsk = async (\r\n sessionId: string,\r\n loginData_addConsignationToAsk: string | undefined,\r\n urlParam_addConsignationToAsk: string | undefined,\r\n ) => {\r\n if (loginData_addConsignationToAsk) {\r\n return loginData_addConsignationToAsk;\r\n } else if (urlParam_addConsignationToAsk) {\r\n const response = await addPlannedStudy(sessionId, urlParam_addConsignationToAsk);\r\n if (response.success && response.success === true) {\r\n if (response.addConsignationsToAsk) {\r\n const responseArray: any[] = [];\r\n responseArray.push(response.addConsignationsToAsk);\r\n return responseArray;\r\n }\r\n } else {\r\n showAlertMessage({\r\n alertTitle: 'Einwilligungserklärung (addPlannedStudy)',\r\n alertTxt: response.error,\r\n alertType: AlertType.error,\r\n onHide: AlertOnHide.onlyClose,\r\n alertdispatch: alertdispatch,\r\n });\r\n }\r\n } else {\r\n return [];\r\n }\r\n\r\n return [];\r\n };\r\n\r\n const loginHandling = async (props: IAuthorizeAsync) => {\r\n setShowLoginButtonLoadingSpinner(true);\r\n\r\n loginButtonRef.current.blur();\r\n\r\n const loginData = await authorizeAsync(props);\r\n\r\n setShowLoginButtonLoadingSpinner(false);\r\n\r\n /* get URL Parameters */\r\n const hashParams: ILoginURLParams = getQueryParams(location.search);\r\n let addPlannedStudyUrlParam = false;\r\n /* external addPlannedStudy request */\r\n if (hashParams.addPlannedStudy) {\r\n addPlannedStudyUrlParam = true;\r\n }\r\n\r\n if (loginData.error) {\r\n let msg = loginData.error;\r\n if (loginData.errorMsg && loginData.errorMsg.length > 0) {\r\n msg = loginData.errorMsg;\r\n }\r\n showAlertMessage({\r\n alertTitle: 'Login',\r\n alertTxt: msg,\r\n alertType: AlertType.error,\r\n onHide: AlertOnHide.onlyClose,\r\n alertdispatch: alertdispatch,\r\n });\r\n } else if (!loginData) {\r\n showAlertMessage({\r\n alertTitle: 'Login',\r\n alertTxt: 'Kann keine Verbindung zum Server herstellen',\r\n alertType: AlertType.error,\r\n onHide: AlertOnHide.onlyClose,\r\n alertdispatch: alertdispatch,\r\n });\r\n } else {\r\n /* execute rule in principa after login */\r\n if (executerulestate && executerulestate.ruleName.length > 0) {\r\n const executeRuleRespone = await executeRule(\r\n loginData.userId,\r\n loginData.sessionId,\r\n executerulestate.ruleName,\r\n executerulestate.ruleParam,\r\n executerulestate.persInfo,\r\n );\r\n if (executeRuleRespone === undefined || !executeRuleRespone.SUCCESS) {\r\n console.log('problems to executeRule');\r\n }\r\n }\r\n if (loginData.consignation === 'doubleOptInMissing' && !loginData.forceNewPWD) {\r\n if (loginData.doubleOptInViaLink && loginData.doubleOptInViaLink === 'true') {\r\n showDoubleOptInViaLinkForm(true);\r\n } else {\r\n showDoubleOptInForm(true);\r\n }\r\n } else if (loginData.warning === 'needsfa2Secret') {\r\n set2FAModalShow(true);\r\n } else {\r\n const activeStudy =\r\n loginData.activeStudies !== undefined\r\n ? loginData.activeStudies.find(\r\n (element: { studyPatId: any }) => element.studyPatId === loginData.activePatId,\r\n )\r\n : undefined;\r\n\r\n const activeUserId = loginData.userId;\r\n\r\n /* load termsHTML + privacyHTML*/\r\n let termsHTML = '';\r\n let privacyHTML = '';\r\n\r\n if (loginData.consignation !== 'patFinished') {\r\n termsHTML = await getTermsHTML(loginData.sessionId);\r\n privacyHTML = await getPrivacyHTML(loginData.sessionId);\r\n }\r\n\r\n /* get possible addConsignation (from authorize or from urlParam addPlannedStudy) */\r\n const addConsignationResponse = await getAddConsignationToAsk(\r\n loginData.sessionId,\r\n loginData.addConsignationsToAsk,\r\n hashParams.addPlannedStudy,\r\n );\r\n\r\n dispatch({\r\n type: 'LOGIN',\r\n userId: loginData.userId,\r\n practitionerRoleId: loginData.practitionerRoleId,\r\n userName: username,\r\n sessionId: loginData.sessionId,\r\n securityItems: {\r\n CHARTS: loginData.SecurityItems[securityItemNames.CHARTS] === 'true' ? true : false,\r\n CHARTS_WEIGHT:\r\n loginData.SecurityItems[securityItemNames.CHARTS_WEIGHT] === 'true' ? true : false,\r\n CHARTS_FATMASS:\r\n loginData.SecurityItems[securityItemNames.CHARTS_FATMASS] === 'true' ? true : false,\r\n CHARTS_BLOODSUGAR:\r\n loginData.SecurityItems[securityItemNames.CHARTS_BLOODSUGAR] === 'true' ? true : false,\r\n CHARTS_FLI: loginData.SecurityItems[securityItemNames.CHARTS_FLI] === 'true' ? true : false,\r\n CHARTS_SAM: loginData.SecurityItems[securityItemNames.CHARTS_SAM] === 'true' ? true : false,\r\n CHARTS_ACTIVITY:\r\n loginData.SecurityItems[securityItemNames.CHARTS_ACTIVITY] === 'true' ? true : false,\r\n TABLE_VAL: loginData.SecurityItems[securityItemNames.TABLE_VAL] === 'true' ? true : false,\r\n PATLIST: loginData.SecurityItems[securityItemNames.PATLIST] === 'true' ? true : false,\r\n DOKUMENT: loginData.SecurityItems[securityItemNames.DOKUMENT] === 'true' ? true : false,\r\n FOTOS: loginData.SecurityItems[securityItemNames.FOTOS] === 'true' ? true : false,\r\n FRAGEBOGEN: loginData.SecurityItems[securityItemNames.FRAGEBOGEN] === 'true' ? true : false,\r\n MEDIKATION: loginData.SecurityItems[securityItemNames.MEDIKATION] === 'true' ? true : false,\r\n TAGESPLAN: loginData.SecurityItems[securityItemNames.TAGESPLAN] === 'true' ? true : false,\r\n TERMINE: loginData.SecurityItems[securityItemNames.TERMINE] === 'true' ? true : false,\r\n VIDEO: loginData.SecurityItems[securityItemNames.VIDEO] === 'true' ? true : false,\r\n JOURNEY: loginData.SecurityItems[securityItemNames.JOURNEY] === 'true' ? true : false,\r\n TODO: loginData.SecurityItems[securityItemNames.TODO]\r\n ? loginData.SecurityItems[securityItemNames.TODO]\r\n : [],\r\n TAB_ORDER: loginData.SecurityItems[securityItemNames.TAB_ORDER]\r\n ? loginData.SecurityItems[securityItemNames.TAB_ORDER]\r\n : '',\r\n },\r\n iceServers: loginData.iceServers,\r\n possibleMacros: loginData.PossibleMacros,\r\n departments: loginData.departments ? loginData.departments : [],\r\n activeStudies: loginData.activeStudies,\r\n activeProfile:\r\n activeStudy === undefined || activeStudy === '' ? PROFILE_HOME : activeStudy.studyName,\r\n activeUserId: activeUserId,\r\n termsHTML: termsHTML,\r\n privacyHTML: privacyHTML,\r\n extraLinks: loginData.extraLinks,\r\n possibleStudies: loginData.possibleStudies ? loginData.possibleStudies : [],\r\n // addConsignationsToAsk: loginData.addConsignationsToAsk ? loginData.addConsignationsToAsk : [],\r\n // addConsignationsToAsk: getAddConsignationToAsk(\r\n // loginData.sessionId,\r\n // loginData.addConsignationsToAsk,\r\n // hashParams.addPlannedStudy,\r\n // ),\r\n addConsignationsToAsk: addConsignationResponse,\r\n encounterId: loginData.encounterId,\r\n encounterTitle: loginData.encounterTitle,\r\n lastPatOpened: loginData.lastPatOpened ? loginData.lastPatOpened : [],\r\n anmeldeContexts: loginData.anmeldeContexts ? loginData.anmeldeContexts : [],\r\n });\r\n\r\n /* set SecurityItems for a study */\r\n if (activeStudy !== undefined && activeStudy !== '') {\r\n setActiveStudyName(activeStudy.studyName);\r\n }\r\n\r\n if (true || loginData.consignation === 'patFinished') {\r\n getAndSetPersonalData(loginData.sessionId, activeUserId, loginData.practitionerRoleId);\r\n\r\n const photoRes = await getPatientProfilePictureWL(loginData.sessionId, activeUserId);\r\n\r\n if (photoRes.data.entry) {\r\n tmdispatch({\r\n type: 'SETPERSONALDATA_PROFILEPHOTO',\r\n personalData: {\r\n profilePhoto: photoRes.data.entry[0].resource.photo\r\n ? photoRes.data.entry[0].resource.photo[0].data\r\n : '',\r\n },\r\n });\r\n }\r\n }\r\n\r\n tmdispatch({\r\n type: 'SETWITHLOGIN',\r\n withLogin: true,\r\n });\r\n\r\n setConsignation(loginData.consignation);\r\n loginData.consignation === 'not given' ? setNotGiven(true) : setNotGiven(false);\r\n\r\n if (loginData.forceNewPWD) {\r\n if (loginData.consignation === 'doubleOptInMissing') {\r\n /* wenn beides kommt, muss zuerst forceNewPWD ziehen,\r\n showDoubleOptInForm(true); wird dann in handlePWChange() gemacht*/\r\n setDoubleOptInMissingAfterPWDChange(true);\r\n }\r\n setInitPassword(true);\r\n } else if (loginData.consignation !== 'patFinished' && loginData.consignation !== 'given') {\r\n showConsignationForm(true);\r\n } else if (loginData.consignation === 'given') {\r\n showConsignationWaitForm(true);\r\n } else if (loginData.consignation === 'waitForLetter') {\r\n showConsignationWaitForLetterForm(true);\r\n } else if (\r\n (loginData.addConsignationsToAsk && loginData.addConsignationsToAsk.length > 0) ||\r\n addPlannedStudyUrlParam\r\n ) {\r\n showConsignationAddForm(true);\r\n } else if (loginData.practitionerRoleId) {\r\n navigate(Paths.PATLIST);\r\n } else {\r\n navigate(Paths.DOKUMENTE);\r\n }\r\n }\r\n }\r\n };\r\n\r\n const handleSubmit = async (event: React.FormEvent, username: string, password: string) => {\r\n event.preventDefault();\r\n\r\n const authorizeData: IAuthorizeAsync = {\r\n username: username,\r\n password: password,\r\n };\r\n loginHandling(authorizeData);\r\n };\r\n\r\n const handlePWChange = (newPwd: string) => {\r\n setInitPassword(false);\r\n setPassword(newPwd);\r\n if (consig !== 'patFinished') {\r\n if (doubleOptInMissingAfterPWDChange) {\r\n showDoubleOptInForm(true);\r\n setDoubleOptInMissingAfterPWDChange(false);\r\n } else {\r\n showConsignationForm(true);\r\n }\r\n } else {\r\n navigate(Paths.DOKUMENTE);\r\n }\r\n };\r\n\r\n const handleConsigDenial = () => {\r\n setNotGiven(true);\r\n showConsignationForm(false);\r\n };\r\n\r\n const handleConsigAddDenial = () => {\r\n showConsignationAddForm(false);\r\n navigate(Paths.DOKUMENTE);\r\n };\r\n\r\n const handleHideConsignationWaitModal = () => {\r\n showConsignationWaitForm(false);\r\n navigate(Paths.DOKUMENTE);\r\n };\r\n\r\n const handleHideConsignationWaitForLetterModal = () => {\r\n showConsignationWaitForLetterForm(false);\r\n handleLogout();\r\n };\r\n\r\n const handleHideDoDoubleOptInModal = () => {\r\n showDoubleOptInForm(false);\r\n handleLogout();\r\n };\r\n\r\n const handleHideDoDoubleOptInViaLinkModal = () => {\r\n showDoubleOptInViaLinkForm(false);\r\n // handleLogout();\r\n };\r\n\r\n const handleSubmitDoubleOptInModal = (code: string) => {\r\n showDoubleOptInForm(false);\r\n\r\n const authorizeData: IAuthorizeAsync = {\r\n username: username,\r\n password: password,\r\n doubleOptInCode: code,\r\n };\r\n loginHandling(authorizeData);\r\n };\r\n\r\n const LoginButton = () => {\r\n if (showLoginButtonLoadingSpinner) {\r\n let calcButtonWidth = '35px';\r\n const lottieSize = 24;\r\n calcButtonWidth = calcButtonPaddingSize(loginButtonRef, lottieSize);\r\n\r\n return (\r\n \r\n \r\n \r\n );\r\n } else {\r\n return (\r\n \r\n Anmelden\r\n \r\n );\r\n }\r\n };\r\n\r\n const handleCreateNewAccountButtonClick = () => {\r\n resetPersonalData();\r\n navigate(Paths.NEUER_ACCOUNT);\r\n };\r\n\r\n return (\r\n
    \r\n \r\n \r\n \r\n \r\n Ihre persönliche HOME-Akte \r\n ) =>\r\n handleSubmit(event, username, password)\r\n }\r\n >\r\n \r\n \r\n \r\n Benutzername\r\n setUsername(e.target.value)}\r\n />\r\n \r\n \r\n \r\n \r\n \r\n \r\n Passwort\r\n setPassword(e.target.value)}\r\n />\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
    \r\n navigate(Paths.RESET_PASSWORD)}\r\n >\r\n Zugangsdaten vergessen?\r\n \r\n
    \r\n
    \r\n \r\n
    \r\n {apstate.allowAccountCreateDirect ? (\r\n \r\n
    \r\n handleCreateNewAccountButtonClick()}\r\n >\r\n Neuen Account erstellen\r\n \r\n
    \r\n
    \r\n ) : null}\r\n
    \r\n \r\n
    \r\n {initPassword ? (\r\n
    \r\n handlePWChange(e)} oncancel={() => setInitPassword(false)} />\r\n
    \r\n ) : (\r\n <>\r\n )}\r\n {consignationForm ? (\r\n
    \r\n handleConsigDenial()}\r\n oncancel={() => showConsignationForm(false)}\r\n notgiven={notGiven}\r\n />\r\n
    \r\n ) : (\r\n <>\r\n )}\r\n {consignationAddForm ? (\r\n
    \r\n handleConsigAddDenial()}\r\n oncancel={() => showConsignationAddForm(false)}\r\n />\r\n
    \r\n ) : (\r\n <>\r\n )}\r\n {consignationWaitForm ? (\r\n
    \r\n handleHideConsignationWaitModal()}\r\n />\r\n
    \r\n ) : (\r\n <>\r\n )}\r\n {consignationWaitForLetterForm ? (\r\n
    \r\n handleHideConsignationWaitForLetterModal()}\r\n />\r\n
    \r\n ) : (\r\n <>\r\n )}\r\n {doubleOptInForm ? (\r\n
    \r\n handleHideDoDoubleOptInModal()}\r\n onSubmit={(e) => handleSubmitDoubleOptInModal(e)}\r\n username={username}\r\n password={password}\r\n />\r\n
    \r\n ) : (\r\n <>\r\n )}\r\n {doubleOptInViaLinkForm ? (\r\n
    \r\n handleHideDoDoubleOptInViaLinkModal()}\r\n />\r\n
    \r\n ) : (\r\n <>\r\n )}\r\n set2FAModalShow(false)}\r\n username={username}\r\n password={password}\r\n />\r\n
    \r\n );\r\n};\r\n\r\nexport default Login;\r\n","import { useContext, useEffect, useState } from 'react';\r\nimport { IDisplayAppointments } from '../../container/Termine/Termine';\r\nimport AlertContext from '../../context/alertContext';\r\nimport LoginContext from '../../context/loginContext';\r\nimport useScreenResolution from '../../hooks/useScreenResolution';\r\nimport { getAppointmentsOfPatient, structureAppointments } from '../../services/fhir/FHIRAppointment';\r\nimport { IAppointment, getStickyPosition } from '../../utils/appointmentUtils';\r\nimport AppointmentCard from '../Cards/AppointmentCard';\r\nimport { StickyTitle } from './StyledHeader';\r\n\r\nenum Scheduled {\r\n Past = 0,\r\n Cancelled,\r\n}\r\n\r\nexport const PastAppointments = (props: IDisplayAppointments) => {\r\n const { state } = useContext(LoginContext);\r\n const { alertdispatch } = useContext(AlertContext);\r\n\r\n const screenSize = useScreenResolution();\r\n const stickyPosition = getStickyPosition(screenSize.width);\r\n\r\n const [structuredAppointments, setStructuredAppointments] = useState();\r\n\r\n const getAppointments = async () => {\r\n const response = await getAppointmentsOfPatient(state, alertdispatch);\r\n if (response) {\r\n let apt: IAppointment[] = response.data.entry;\r\n\r\n if (apt === undefined) {\r\n apt = [];\r\n }\r\n\r\n if (apt) {\r\n apt.sort((a, b) => (a.resource.start < b.resource.start ? 1 : -1));\r\n setStructuredAppointments(structureAppointments(apt));\r\n }\r\n }\r\n };\r\n\r\n function PastAppointmentsTitle(category: Scheduled) {\r\n if (structuredAppointments !== undefined) {\r\n return (\r\n \r\n {stickyPosition === '160px' ? (\r\n

    {structuredAppointments[1][category].key}

    \r\n ) : (\r\n

    {structuredAppointments[1][category].key}

    \r\n )}\r\n
    \r\n );\r\n }\r\n return <>;\r\n }\r\n\r\n function PastAppointmentsData(category: Scheduled) {\r\n if (structuredAppointments !== undefined) {\r\n const pastAppointments = structuredAppointments[1][category].data.map(\r\n (data: IAppointment, index: number) => (\r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n ),\r\n );\r\n return pastAppointments;\r\n }\r\n return <>;\r\n }\r\n\r\n useEffect(() => {\r\n getAppointments();\r\n }, [state.activeProfile]);\r\n\r\n useEffect(() => {\r\n if (props.refreshAppointments) {\r\n getAppointments();\r\n props.resetRefresh();\r\n }\r\n }, [props.refreshAppointments]);\r\n\r\n return (\r\n
    \r\n {PastAppointmentsTitle(Scheduled.Past)}\r\n {PastAppointmentsData(Scheduled.Past)}\r\n {PastAppointmentsTitle(Scheduled.Cancelled)}\r\n {PastAppointmentsData(Scheduled.Cancelled)}\r\n
    \r\n );\r\n};\r\n\r\nexport default PastAppointments;\r\n","import styled from 'styled-components';\r\n\r\ninterface IStickyDiv {\r\n stickyBreakpoint?: string;\r\n}\r\n\r\nexport const StickyTitle = styled.div`\r\n background: white;\r\n height: 70px;\r\n line-height: 80px;\r\n padding-left: 10px;\r\n position: -webkit-sticky;\r\n position: sticky;\r\n top: ${(prop) => (prop.stickyBreakpoint ? prop.stickyBreakpoint : '114px')};\r\n z-index: 20;\r\n padding-top: 20px;\r\n`;\r\n","import { useContext, useEffect, useState } from 'react';\r\nimport { IDisplayAppointments } from '../../container/Termine/Termine';\r\nimport AlertContext from '../../context/alertContext';\r\nimport AppPropsContext from '../../context/appPropsContext';\r\nimport LoginContext from '../../context/loginContext';\r\nimport TerminierungContext from '../../context/terminierungContext';\r\nimport useScreenResolution from '../../hooks/useScreenResolution';\r\nimport { getAppointmentsOfPatient, structureAppointments } from '../../services/fhir/FHIRAppointment';\r\nimport { IAppointment, getStickyPosition } from '../../utils/appointmentUtils';\r\nimport AppointmentCard from '../Cards/AppointmentCard';\r\nimport { StickyTitle } from './StyledHeader';\r\n\r\nenum Scheduled {\r\n Today = 0,\r\n Future,\r\n WithoutTime,\r\n Incomplete,\r\n}\r\n\r\nexport const UpcomingAppointments = (props: IDisplayAppointments) => {\r\n const { state } = useContext(LoginContext);\r\n const { apstate } = useContext(AppPropsContext);\r\n const { alertdispatch } = useContext(AlertContext);\r\n const { tmstate, tmdispatch } = useContext(TerminierungContext);\r\n\r\n const [structuredAppointments, setStructuredAppointments] = useState();\r\n\r\n const screenSize = useScreenResolution();\r\n const stickyPosition = getStickyPosition(screenSize.width);\r\n\r\n const getAppointments = async () => {\r\n const response = await getAppointmentsOfPatient(state, alertdispatch);\r\n if (response) {\r\n let apt: IAppointment[] = response.data.entry;\r\n\r\n if (apt === undefined) {\r\n apt = [];\r\n }\r\n\r\n if (apt) {\r\n apt.sort((a, b) => (a.resource.start > b.resource.start ? 1 : -1));\r\n setStructuredAppointments(structureAppointments(apt));\r\n\r\n if (props.checkInVariant) {\r\n let currentApt: IAppointment | undefined = undefined;\r\n if (tmstate?.enrollData?.enrollCode) {\r\n const bestEnrollCode = tmstate.enrollData.enrollCode;\r\n currentApt = apt.find((a) => {\r\n if (a.resource?.extension) {\r\n const extensionData = a.resource.extension;\r\n const enrollCodeData = extensionData.find((ext) => {\r\n if (ext.url && ext.url.endsWith('enrollCode')) {\r\n return true;\r\n }\r\n });\r\n if (enrollCodeData.valueString == bestEnrollCode) {\r\n return true;\r\n }\r\n }\r\n });\r\n }\r\n if (!currentApt) {\r\n const extensionData = apt[0]?.resource?.extension;\r\n if (extensionData) {\r\n const enrollCodeData = extensionData.find((ext) => {\r\n if (ext.url && ext.url.endsWith('enrollCode')) {\r\n return true;\r\n }\r\n });\r\n if (enrollCodeData) {\r\n tmdispatch({\r\n type: 'SETENROLLDATA',\r\n enrollData: {\r\n ...tmstate.enrollData,\r\n enrollCode: enrollCodeData.valueString,\r\n },\r\n });\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n };\r\n\r\n function UpcomingAppointmentsTitle(category: Scheduled) {\r\n if (structuredAppointments !== undefined) {\r\n if (category === Scheduled.Incomplete) {\r\n if (structuredAppointments[0][category].data.length <= 0) {\r\n return <>;\r\n }\r\n }\r\n return (\r\n \r\n {stickyPosition === '160px' ? (\r\n

    {structuredAppointments[0][category].key}

    \r\n ) : (\r\n

    {structuredAppointments[0][category].key}

    \r\n )}\r\n
    \r\n );\r\n }\r\n return <>;\r\n }\r\n\r\n function UpcomingAppointmentsData(category: Scheduled) {\r\n let chatIcon = false;\r\n if (category === Scheduled.Today && apstate.allowChat) {\r\n chatIcon = true;\r\n }\r\n if (structuredAppointments !== undefined) {\r\n if (category === Scheduled.Incomplete) {\r\n if (structuredAppointments[0][category].data.length <= 0) {\r\n return <>;\r\n }\r\n }\r\n const upcomingAppointments = structuredAppointments[0][category].data.map(\r\n (data: IAppointment, index: number) => (\r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n ),\r\n );\r\n return upcomingAppointments;\r\n }\r\n return <>;\r\n }\r\n\r\n useEffect(() => {\r\n getAppointments();\r\n\r\n tmdispatch({\r\n type: 'CANCELEDAPPOINTMENT',\r\n canceledAppointment: false,\r\n });\r\n }, [state.activeProfile, tmstate.canceledAppointment === true, tmstate.cancelNewAppointmentData.showModal]);\r\n\r\n useEffect(() => {\r\n if (props.refreshAppointments) {\r\n getAppointments();\r\n\r\n tmdispatch({\r\n type: 'CANCELEDAPPOINTMENT',\r\n canceledAppointment: false,\r\n });\r\n\r\n props.resetRefresh();\r\n }\r\n }, [props.refreshAppointments]);\r\n\r\n return (\r\n
    \r\n {UpcomingAppointmentsTitle(Scheduled.Incomplete)}\r\n {UpcomingAppointmentsData(Scheduled.Incomplete)}\r\n {UpcomingAppointmentsTitle(Scheduled.Today)}\r\n {UpcomingAppointmentsData(Scheduled.Today)}\r\n {UpcomingAppointmentsTitle(Scheduled.Future)}\r\n {UpcomingAppointmentsData(Scheduled.Future)}\r\n {UpcomingAppointmentsTitle(Scheduled.WithoutTime)}\r\n {UpcomingAppointmentsData(Scheduled.WithoutTime)}\r\n
    \r\n );\r\n};\r\n\r\nexport default UpcomingAppointments;\r\n","import { useContext, useEffect, useState } from 'react';\r\nimport Container from 'react-bootstrap/esm/Container';\r\nimport Row from 'react-bootstrap/esm/Row';\r\nimport Modal from 'react-bootstrap/Modal';\r\nimport styled from 'styled-components';\r\nimport TerminierungContext from '../../../context/terminierungContext';\r\nimport { getAPKNrFromExtension } from '../../../utils/appointmentUtils';\r\nimport StyledButton from '../../Buttons/StyledButton';\r\nimport StyledCol from '../../Cols/StyledCol';\r\n\r\nexport const ModalCst = styled(Modal)`\r\n .modal-dialog {\r\n max-width: 50%;\r\n margin: 1.75rem auto;\r\n }\r\n .modal-content {\r\n border-radius: ${(prop) => (prop.borderRadius ? prop.borderRadius : prop.theme.modal.borderRadius)};\r\n box-shadow: ${(prop) => (prop.boxShadow ? prop.boxShadow : prop.theme.modal.boxShadow)};\r\n }\r\n`;\r\n\r\ninterface IAskNewAppointmentModal {\r\n show: boolean;\r\n onHide: () => void;\r\n onCancelOtherAppointment: () => void;\r\n onRenewAppointment: () => void;\r\n}\r\n\r\nconst AskNewAppointmentModal = (props: IAskNewAppointmentModal) => {\r\n const { tmstate } = useContext(TerminierungContext);\r\n const [cancelAPKNr, setCancelAPKNr] = useState('1');\r\n const [bookedAPKNr, setBookedAPKNr] = useState('1');\r\n\r\n // useEffect(() => {}, [props.show]);\r\n\r\n useEffect(() => {\r\n if (props.show) {\r\n getCancelAPKNr();\r\n }\r\n\r\n // return () => {};\r\n }, [props.show]);\r\n\r\n const getCancelAPKNr = () => {\r\n const cancelNr = getAPKNrFromExtension(tmstate.cancelNewAppointmentData.data.extension);\r\n if (cancelNr === 0) {\r\n setCancelAPKNr('1');\r\n setBookedAPKNr('2');\r\n } else if (cancelNr === 1) {\r\n setCancelAPKNr('2');\r\n setBookedAPKNr('1');\r\n }\r\n };\r\n\r\n return (\r\n <>\r\n \r\n \r\n \r\n \r\n \r\n Möchten Sie einen Ersatz für Termin {cancelAPKNr} suchen?\r\n \r\n \r\n \r\n \r\n \r\n Ersatztermin suchen\r\n \r\n \r\n \r\n \r\n \r\n --------------- ODER ---------------\r\n \r\n \r\n \r\n \r\n Möchten Sie den Termin {bookedAPKNr} auch stornieren?\r\n \r\n \r\n \r\n \r\n \r\n Termin {bookedAPKNr} stornieren\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n};\r\n\r\nexport default AskNewAppointmentModal;\r\n","import * as React from 'react';\r\nimport { useContext, useEffect, useState } from 'react';\r\nimport Col from 'react-bootstrap/Col';\r\nimport Container from 'react-bootstrap/Container';\r\nimport Nav from 'react-bootstrap/Nav';\r\nimport Row from 'react-bootstrap/Row';\r\nimport Tab from 'react-bootstrap/Tab';\r\nimport TabContainer from 'react-bootstrap/TabContainer';\r\nimport { FiPlusCircle } from 'react-icons/fi';\r\nimport { useNavigate } from 'react-router-dom';\r\nimport { ThemeContext } from 'styled-components';\r\nimport { Paths } from '../../Routes';\r\nimport PastAppointments from '../../components/Appointments/PastAppointments';\r\nimport UpcomingAppointments from '../../components/Appointments/UpcomingAppointments';\r\nimport { MainHeaderButtonCol, MainHeaderCol } from '../../components/Cols/StyledCol';\r\nimport { StickyHeaderTabsDiv, StickyHeaderTitleDiv } from '../../components/Div/StyledDiv';\r\nimport { MainH1Title } from '../../components/Header/Header';\r\nimport AskNewAppointmentModal from '../../components/Modals/CancelAppointmentModal/AskNewAppointmentModal';\r\nimport RefreshButton from '../../components/RefreshButton/RefreshButton';\r\nimport { MainHeaderRow } from '../../components/Rows/StyledRow';\r\nimport StyledNavButton from '../../components/Tabs/StyledNavButton';\r\nimport { StyledTabContent, StyledTabRow } from '../../components/Tabs/StyledTab';\r\nimport MyTooltip from '../../components/Tooltip/MyTooltip';\r\nimport AlertContext from '../../context/alertContext';\r\nimport AppPropsContext from '../../context/appPropsContext';\r\nimport LoginContext from '../../context/loginContext';\r\nimport TerminierungContext from '../../context/terminierungContext';\r\nimport useScreenResolution from '../../hooks/useScreenResolution';\r\nimport { useSecurityItems } from '../../hooks/useSecurityItems';\r\nimport { cancelAppointment } from '../../services/fhir/FHIRAppointment';\r\nimport { APPOINTMENT_POSTPONE_REASON, getIdentifierId, getTabHeight } from '../../utils/appointmentUtils';\r\nimport Mainscreen from '../Mainscreen/Mainscreen';\r\nimport { StepperTerminierungAlternateDateContent } from '../Terminierung/TerminierungAlternateDate';\r\n\r\nexport interface IDisplayAppointments {\r\n refreshAppointments: boolean;\r\n resetRefresh: any;\r\n checkInVariant?: boolean;\r\n}\r\n\r\nexport interface ITermineContent {\r\n checkInVariant?: boolean;\r\n paddingLeft?: string;\r\n paddingRight?: string;\r\n handleAppointmentsCancelClick?(): void;\r\n handleAppointmentsFinishClick?(): void;\r\n}\r\n\r\nexport const TermineContent = (props: ITermineContent) => {\r\n const navigate = useNavigate();\r\n const themeContext = useContext(ThemeContext);\r\n const { apstate } = useContext(AppPropsContext);\r\n const [key, setKey] = useState('bevorstehende');\r\n const screenSize = useScreenResolution();\r\n const iPadProPaddinig = screenSize.width === 1024 ? '45px' : null;\r\n const tabHeight = getTabHeight(screenSize.width);\r\n const [refreshAppointments, setRefreshAppointments] = useState(false);\r\n\r\n const { setActiveSidebarItem } = useSecurityItems();\r\n\r\n const isSmallScreen = screenSize.width < 500 ? true : false;\r\n\r\n const [askNewAppModalShow, setAskNewAppModalShow] = React.useState(false);\r\n\r\n const [goToTerminierungAlternateDate, setGoToTerminierungAlternateDate] = React.useState(false);\r\n\r\n const { tmstate, tmdispatch } = useContext(TerminierungContext);\r\n const { state } = useContext(LoginContext);\r\n const { alertdispatch } = useContext(AlertContext);\r\n\r\n useEffect(() => {\r\n setActiveSidebarItem(Paths.TERMINE);\r\n setAskNewAppModalShow(false);\r\n\r\n return () => {\r\n setGoToTerminierungAlternateDate(false);\r\n };\r\n }, []);\r\n\r\n useEffect(() => {\r\n if (tmstate.cancelNewAppointmentData.showModal === true && tmstate.cancelNewAppointmentData.data) {\r\n setAskNewAppModalShow(true);\r\n } else if (\r\n tmstate.cancelNewAppointmentData.showModal === false &&\r\n tmstate.cancelNewAppointmentData.reason === APPOINTMENT_POSTPONE_REASON\r\n ) {\r\n askNewAppHandleSubmit();\r\n }\r\n }, [\r\n tmstate.cancelNewAppointmentData.showModal === true,\r\n tmstate.cancelNewAppointmentData.reason === APPOINTMENT_POSTPONE_REASON,\r\n ]);\r\n\r\n useEffect(() => {\r\n setRefreshAppointments(true);\r\n }, [state.activePatient]);\r\n\r\n const handleRefreshClick = () => {\r\n setRefreshAppointments(true);\r\n };\r\n\r\n const resetRefresh = () => {\r\n setRefreshAppointments(false);\r\n };\r\n\r\n const askNewAppHandleHide = () => {\r\n setAskNewAppModalShow(false);\r\n tmdispatch({\r\n type: 'RESETCANCELNEWAPPOINTMENTDATA',\r\n });\r\n };\r\n\r\n const askNewAppHandleSubmit = () => {\r\n setAskNewAppModalShow(false);\r\n tmdispatch({\r\n type: 'DONTSHOWCANCELNEWAPPOINTMENTDATA',\r\n });\r\n if (props.checkInVariant) {\r\n setGoToTerminierungAlternateDate(true);\r\n } else {\r\n navigate(Paths.TERMINIERUNG_ALTERNATE_DATE);\r\n }\r\n // setGoToTerminierungAlternateDate(true);\r\n };\r\n\r\n const cancelOtherAppointment = async () => {\r\n // console.log(tmstate);\r\n const appId = getIdentifierId(tmstate.cancelNewAppointmentData.data.contained[0].identifier);\r\n const reason = tmstate.cancelNewAppointmentData.reason;\r\n await cancelAppointment(state.sessionId, appId, reason, alertdispatch);\r\n // console.log(cancelRes);\r\n setAskNewAppModalShow(false);\r\n tmdispatch({\r\n type: 'RESETCANCELNEWAPPOINTMENTDATA',\r\n });\r\n };\r\n\r\n /**\r\n * relevant in checkInVariant when we have no history.push\r\n */\r\n const handleAppointmentCancelClick = () => {\r\n setGoToTerminierungAlternateDate(false);\r\n };\r\n\r\n /**\r\n * relevant in checkInVariant when we have no history.push\r\n */\r\n const handleAppointmentFinishClick = () => {\r\n setGoToTerminierungAlternateDate(false);\r\n };\r\n\r\n if (goToTerminierungAlternateDate) {\r\n return (\r\n \r\n );\r\n } else {\r\n return (\r\n \r\n \r\n \r\n {!isSmallScreen && }\r\n \r\n Termine\r\n \r\n \r\n {!props.checkInVariant && apstate.allowAppointments && (\r\n \r\n navigate(Paths.TERMINIERUNG)}>\r\n \r\n }\r\n >\r\n \r\n \r\n )}\r\n \r\n \r\n \r\n \r\n
    \r\n setKey(k)}\r\n >\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Aktuell\r\n \r\n \r\n \r\n \r\n \r\n \r\n Abgeschlossen\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
    \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
    \r\n \r\n
    \r\n \r\n \r\n \r\n
    \r\n );\r\n }\r\n};\r\n\r\nconst Termine = () => {\r\n return (\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 Termine;\r\n","import Step from '@material-ui/core/Step';\r\nimport StepLabel from '@material-ui/core/StepLabel';\r\nimport Stepper from '@material-ui/core/Stepper';\r\nimport { createStyles, makeStyles, Theme } from '@material-ui/core/styles';\r\nimport produce from 'immer';\r\nimport * as React from 'react';\r\nimport { useContext, useEffect, useState } from 'react';\r\nimport Container from 'react-bootstrap/Container';\r\nimport Col from 'react-bootstrap/esm/Col';\r\nimport Row from 'react-bootstrap/Row';\r\nimport Lottie from 'react-lottie';\r\nimport { useLocation, useNavigate } from 'react-router-dom';\r\nimport { isTimeslotDateSet } from '../../components/Calendar/TimeSlots';\r\nimport AppointmentCategoryExtendedPhysician from '../../container/AppointmentCategory/AppointmentCategoryExtendedPhysican';\r\nimport { ITermineContent } from '../../container/Termine/Termine';\r\nimport AppPropsContext from '../../context/appPropsContext';\r\nimport LoginContext from '../../context/loginContext';\r\nimport TerminierungContext from '../../context/terminierungContext';\r\nimport { appointmentStatus } from '../../globals/global';\r\nimport { useAppointmentSelection } from '../../hooks/useAppointmentSelection';\r\nimport { Paths } from '../../Routes';\r\nimport { bookAppointment, bookMultiAppointment } from '../../services/fhir/FHIRAppointment';\r\nimport { blockAppointment, unblockAppointment } from '../../services/RestServices';\r\nimport {\r\n APPOINTMENTTYPE_CAREUNIT,\r\n APPOINTMENTTYPE_DEPARTMENT,\r\n APPOINTMENTTYPE_PRACTITIONER,\r\n APPOINTMENTTYPE_ROOM,\r\n getAPKNrFromExtension,\r\n getCountAPKsFromExtension,\r\n getEnrollCodeFromExtension,\r\n getLocationCareUnitNameFromResource,\r\n getLocationDepartmentNameFromResource,\r\n getLocationRoomNameFromResource,\r\n getMissingAPKsFromExtension,\r\n getPractitionerNameFromResource,\r\n getSelectedReasonDataFromAppointment,\r\n IAppointment,\r\n IParticipant,\r\n} from '../../utils/appointmentUtils';\r\nimport { lottieCheck } from '../../utils/lottieUtils';\r\nimport { getCurrentBaseURL, getTermincodeEnrollIdURL } from '../../utils/urlUtils';\r\nimport AppointmentCalendarWithHeadline from '../AppointmentCalendar/AppointmentCalendarWithHeadline';\r\nimport Booking from '../Booking/Booking';\r\nimport StyledButton from '../Buttons/StyledButton';\r\nimport { onNewAppointments } from '../Calendar/Calendar';\r\nimport AppointmentCard from '../Cards/AppointmentCard';\r\nimport StyledCol from '../Cols/StyledCol';\r\nimport { CenterDiv, StepperContentDiv, StickyButtonRowBottomDiv } from '../Div/StyledDiv';\r\nimport BlockingAppointmentModal from '../Modals/BlockingAppointmentModal/BlockingAppointmentModal';\r\nimport { StyledRowNoMargin } from '../Rows/StyledRow';\r\nimport './Stepper.css';\r\n\r\ninterface IBlockingModalShow {\r\n show: boolean;\r\n}\r\n\r\nconst useStyles = makeStyles((theme: Theme) =>\r\n createStyles({\r\n instructions: {\r\n marginTop: theme.spacing(1),\r\n marginBottom: theme.spacing(1),\r\n },\r\n iconContainer: {\r\n transform: 'scale(1.5)',\r\n },\r\n }),\r\n);\r\n\r\nconst STEP_KATEGORIE_WAEHLEN = 'Kategorie wählen';\r\nconst STEP_TERMIN_WAEHLEN = 'Termin wählen';\r\nconst STEP_TERMIN_BUCHEN = 'Termin buchen';\r\n\r\nfunction isStepMultiAppointment(stepName: string) {\r\n const match = stepName.match(/Termin [0-9]$/);\r\n return match;\r\n}\r\n\r\nfunction getCurrentAppointmentNr(stepName: string) {\r\n if (isStepMultiAppointment(stepName)) {\r\n const numberStr = stepName.charAt(stepName.length - 1);\r\n return parseInt(numberStr);\r\n } else {\r\n return 1;\r\n }\r\n}\r\n\r\nfunction StepperTerminierungAlternateDate(props: ITermineContent) {\r\n const navigate = useNavigate();\r\n const { state } = useContext(LoginContext);\r\n\r\n const { tmstate, tmdispatch } = useContext(TerminierungContext);\r\n const { apstate } = useContext(AppPropsContext);\r\n const classes = useStyles();\r\n const [activeStep, setActiveStep] = React.useState(0);\r\n const [steps, setSteps] = useState([STEP_KATEGORIE_WAEHLEN, STEP_TERMIN_WAEHLEN, STEP_TERMIN_BUCHEN]);\r\n const [nextButtonEnabled, setNextButtonEnabled] = useState(false);\r\n const [bookSuccess, setBookSuccess] = useState(false);\r\n const [enrollCode, setEnrollCode] = useState('');\r\n const [appointmentCardData, setAppointmentCardData] = useState();\r\n const [appointmentCardData_2, setAppointmentCardData_2] = useState();\r\n const [blockingModalShow, setBlockingModalShow] = useState({\r\n show: false,\r\n });\r\n const [appointmentBooked_1, setAppointmentBooked_1] = useState(false);\r\n const [appointmentBooked_2, setAppointmentBooked_2] = useState(false);\r\n\r\n const {\r\n setSelectedResource,\r\n setSelectedTimeslot,\r\n getSelectedResource,\r\n getSelectedTimeslot,\r\n resetAllSelectedTimeslots,\r\n resetAllAvailableTimeslots,\r\n resetAllSelectedResource,\r\n isAppointmentPostpone,\r\n cancelPostponeAppointment,\r\n } = useAppointmentSelection();\r\n\r\n const location = useLocation();\r\n\r\n function getStepContent(steps: string[], stepIndex: number) {\r\n const stepName = steps[stepIndex];\r\n\r\n if (stepName === STEP_KATEGORIE_WAEHLEN) {\r\n return <>;\r\n } else if (isStepMultiAppointment(stepName)) {\r\n return (\r\n \r\n );\r\n } else if (stepName === STEP_TERMIN_BUCHEN) {\r\n return ;\r\n } else if (stepName === STEP_TERMIN_WAEHLEN) {\r\n if (apstate.extendedPhysicians) {\r\n return (\r\n \r\n );\r\n }\r\n return (\r\n \r\n );\r\n } else {\r\n return 'Unknown step';\r\n }\r\n }\r\n\r\n const handleTimeslotClick = (currentActiveStep: number) => {\r\n if (apstate.extendedPhysicians) {\r\n setActiveStep((prevActiveStep) => prevActiveStep + 1);\r\n } else {\r\n setNextButtonEnabled(true);\r\n }\r\n };\r\n\r\n const handleNext = async (e: React.MouseEvent) => {\r\n if (e) {\r\n e.currentTarget.blur();\r\n }\r\n\r\n let gotNewAppointment = false;\r\n\r\n if (activeStep === steps.length - 2) {\r\n setNextButtonEnabled(true); //final step should always be enabled\r\n } else {\r\n setNextButtonEnabled(false);\r\n }\r\n\r\n if (isStepMultiAppointment(steps[activeStep])) {\r\n const appointmentNr = getCurrentAppointmentNr(steps[activeStep]);\r\n\r\n /* blockAppointment */\r\n const resource = getSelectedResource(appointmentNr);\r\n\r\n if (resource) {\r\n const blockResponse = await blockAppointment(resource);\r\n if (blockResponse.success === 'false') {\r\n onNewAppointments(blockResponse.newApp, appointmentNr, setSelectedTimeslot);\r\n gotNewAppointment = true;\r\n setBlockingModalShow({\r\n show: true,\r\n });\r\n } else {\r\n /* nextAppointment */\r\n tmdispatch({\r\n type: 'WORKONAPPOINTMENTNR',\r\n workOnAppointmentNr: appointmentNr + 1,\r\n });\r\n }\r\n }\r\n }\r\n\r\n if (steps[activeStep] === STEP_TERMIN_BUCHEN) {\r\n let multiAppointment = false;\r\n const selectedTimeslot = getSelectedTimeslot(1);\r\n let selectedResource: any = getSelectedResource(1);\r\n\r\n const selectedTimeslot_2 = getSelectedTimeslot(2);\r\n let selectedResource_2: any = getSelectedResource(2);\r\n\r\n if (isTimeslotDateSet(selectedTimeslot)) {\r\n selectedResource = produce(selectedResource, (draft: any) => {\r\n draft.start = selectedTimeslot?.start;\r\n draft.end = selectedTimeslot?.end;\r\n draft.extension = [];\r\n if (tmstate.selectedReason) {\r\n draft.extension.push({\r\n url: 'http://www.principa.siegele-software.com/selectedReason',\r\n valueString: JSON.stringify(tmstate.selectedReason),\r\n });\r\n }\r\n if (!isTimeslotDateSet(selectedTimeslot_2) && tmstate.cancelNewAppointmentData?.data?.id) {\r\n draft.extension.push({\r\n url: 'http://www.principa.siegele-software.com/originalAppointmentId',\r\n valueString: tmstate.cancelNewAppointmentData?.data?.id,\r\n });\r\n }\r\n });\r\n }\r\n let id = null;\r\n if (isTimeslotDateSet(selectedTimeslot_2)) {\r\n selectedResource_2 = produce(selectedResource_2, (draft: any) => {\r\n draft.start = selectedTimeslot_2?.start;\r\n draft.end = selectedTimeslot_2?.end;\r\n });\r\n multiAppointment = true;\r\n } else {\r\n id = tmstate.cancelNewAppointmentData?.data?.id;\r\n }\r\n\r\n let response;\r\n if (multiAppointment) {\r\n response = await bookMultiAppointment(\r\n state,\r\n selectedResource,\r\n selectedResource_2,\r\n tmstate.remark,\r\n tmstate.cancelNewAppointmentData,\r\n );\r\n } else {\r\n response = await bookAppointment(\r\n state.sessionId,\r\n selectedResource,\r\n tmstate.remark,\r\n tmstate.earlierAppointmentWanted,\r\n id,\r\n );\r\n }\r\n\r\n if (!response || response.error === 'Server Error') {\r\n // console.log('problem to book appointment');\r\n setBookSuccess(false);\r\n } else {\r\n setBookSuccess(true);\r\n setEnrollCode(response.enrollCode);\r\n // setEnrollCode('ABC123');\r\n\r\n const participantData: IParticipant[] = [\r\n {\r\n actor: {\r\n display: getLocationDepartmentNameFromResource(selectedResource),\r\n reference: APPOINTMENTTYPE_DEPARTMENT + '/',\r\n },\r\n status: 'accepted',\r\n },\r\n {\r\n actor: {\r\n display: getLocationCareUnitNameFromResource(selectedResource),\r\n reference: APPOINTMENTTYPE_CAREUNIT + '/',\r\n },\r\n status: 'accepted',\r\n },\r\n {\r\n actor: {\r\n display: getLocationRoomNameFromResource(selectedResource),\r\n reference: APPOINTMENTTYPE_ROOM + '/',\r\n },\r\n status: 'accepted',\r\n },\r\n {\r\n actor: {\r\n display: getPractitionerNameFromResource(selectedResource),\r\n reference: APPOINTMENTTYPE_PRACTITIONER + '/',\r\n },\r\n status: 'accepted',\r\n },\r\n ];\r\n\r\n const appointmentCardData: IAppointment = {\r\n id: '',\r\n start: selectedTimeslot?.start,\r\n end: selectedTimeslot?.end,\r\n status: 'geplant',\r\n resource: 'Appointment',\r\n participant: participantData,\r\n comment: '',\r\n type: 'upcoming',\r\n isCancelable: false,\r\n isInError: false,\r\n };\r\n\r\n setAppointmentCardData(appointmentCardData);\r\n\r\n let participantData_2;\r\n let appointmentCardData_2;\r\n if (selectedResource_2) {\r\n participantData_2 = [\r\n {\r\n actor: {\r\n display: getLocationDepartmentNameFromResource(selectedResource_2),\r\n reference: APPOINTMENTTYPE_DEPARTMENT + '/',\r\n },\r\n status: 'accepted',\r\n },\r\n {\r\n actor: {\r\n display: getLocationCareUnitNameFromResource(selectedResource_2),\r\n reference: APPOINTMENTTYPE_CAREUNIT + '/',\r\n },\r\n status: 'accepted',\r\n },\r\n {\r\n actor: {\r\n display: getLocationRoomNameFromResource(selectedResource_2),\r\n reference: APPOINTMENTTYPE_ROOM + '/',\r\n },\r\n status: 'accepted',\r\n },\r\n {\r\n actor: {\r\n display: getPractitionerNameFromResource(selectedResource_2),\r\n reference: APPOINTMENTTYPE_PRACTITIONER + '/',\r\n },\r\n status: 'accepted',\r\n },\r\n ];\r\n\r\n appointmentCardData_2 = {\r\n id: '',\r\n start: selectedTimeslot_2?.start,\r\n end: selectedTimeslot_2?.end,\r\n status: 'geplant',\r\n resource: 'Appointment',\r\n participant: participantData_2,\r\n comment: '',\r\n type: 'upcoming',\r\n isCancelable: false,\r\n };\r\n\r\n setAppointmentCardData_2(appointmentCardData_2);\r\n }\r\n\r\n if (isAppointmentPostpone()) {\r\n // cancelPostponeAppointment();\r\n }\r\n }\r\n setNextButtonEnabled(true);\r\n }\r\n\r\n if (gotNewAppointment) {\r\n /* We got new appointments due blocking. Only enable next button, but don't go to next step. */\r\n setNextButtonEnabled(true);\r\n } else {\r\n if (appointmentBooked_2) {\r\n if (steps[activeStep] === 'Termin 1') {\r\n setNextButtonEnabled(true);\r\n setActiveStep((prevActiveStep) => prevActiveStep + 2);\r\n } else {\r\n setActiveStep((prevActiveStep) => prevActiveStep + 1);\r\n }\r\n } else {\r\n setActiveStep((prevActiveStep) => prevActiveStep + 1);\r\n }\r\n }\r\n };\r\n\r\n const handleBack = async (e: React.MouseEvent) => {\r\n if (e) {\r\n e.currentTarget.blur();\r\n }\r\n\r\n setNextButtonEnabled(true);\r\n\r\n // if (isStepMultiAppointment(steps[activeStep])) {\r\n // let appointmentNr = getCurrentAppointmentNr(steps[activeStep]);\r\n\r\n // /* unblockAppointment */\r\n // let resource;\r\n // if (appointmentNr === 1) {\r\n // resource = tmstate.selectedResource;\r\n // } else if (appointmentNr === 2) {\r\n // resource = tmstate.selectedResource_2;\r\n // }\r\n // let unblockResponse = await unblockAppointment(resource);\r\n\r\n // tmdispatch({\r\n // type: 'WORKONAPPOINTMENTNR',\r\n // workOnAppointmentNr: appointmentNr - 1,\r\n // });\r\n // } else if (steps[activeStep] === STEP_TERMIN_BUCHEN) {\r\n // tmdispatch({\r\n // type: 'WORKONAPPOINTMENTNR',\r\n // workOnAppointmentNr: 2, //TODO: must be the last appointment\r\n // });\r\n // }\r\n\r\n if (steps[activeStep] === STEP_TERMIN_BUCHEN) {\r\n let appointmentNr = 2;\r\n if (appointmentBooked_1) {\r\n appointmentNr = 2;\r\n if (getSelectedResource(2)) {\r\n const resource = getSelectedResource(2);\r\n await unblockAppointment(resource);\r\n }\r\n } else if (appointmentBooked_2) {\r\n appointmentNr = 1;\r\n if (getSelectedResource(1)) {\r\n const resource = getSelectedResource(1);\r\n await unblockAppointment(resource);\r\n }\r\n } else if (isAppointmentPostpone()) {\r\n appointmentNr = 1;\r\n }\r\n tmdispatch({\r\n type: 'WORKONAPPOINTMENTNR',\r\n workOnAppointmentNr: appointmentNr, //TODO: must be the last appointment\r\n });\r\n }\r\n\r\n setActiveStep((prevActiveStep) => prevActiveStep - 1);\r\n };\r\n\r\n const handleCancel = async () => {\r\n /* unblockAppointments */\r\n if (getSelectedResource(1)) {\r\n await unblockAppointment(getSelectedResource(1));\r\n }\r\n if (getSelectedResource(2)) {\r\n await unblockAppointment(getSelectedResource(2));\r\n }\r\n\r\n tmdispatch({\r\n type: 'RESETCANCELNEWAPPOINTMENTDATA',\r\n });\r\n\r\n /* reset all resources */\r\n tmdispatch({\r\n type: 'WORKONAPPOINTMENTNR',\r\n workOnAppointmentNr: 1,\r\n });\r\n resetAllSelectedResource();\r\n resetAllSelectedTimeslots();\r\n resetAllAvailableTimeslots();\r\n tmdispatch({\r\n type: 'SETRENEWAPPOINTMENT',\r\n renewAppointment: false,\r\n });\r\n\r\n tmdispatch({\r\n type: 'RESETCATEGORY',\r\n });\r\n\r\n if (props.checkInVariant) {\r\n if (props.handleAppointmentsCancelClick) {\r\n props.handleAppointmentsCancelClick();\r\n }\r\n } else {\r\n navigate(Paths.TERMINE);\r\n }\r\n };\r\n\r\n const handleFinish = () => {\r\n tmdispatch({\r\n type: 'RESETALL_WITHOUTPERSONALDATA',\r\n });\r\n\r\n if (props.handleAppointmentsFinishClick) {\r\n props.handleAppointmentsFinishClick();\r\n } else {\r\n navigate(Paths.TERMINE);\r\n }\r\n };\r\n\r\n const changeStepsIfMultiAppointments = () => {\r\n const newSteps = [STEP_KATEGORIE_WAEHLEN];\r\n\r\n const newAppData = tmstate.cancelNewAppointmentData.data;\r\n let countAPK = 1;\r\n let completeAPKMode = false;\r\n\r\n let isPostponeAppointment = true;\r\n let isMissingAPKWorkflow = false;\r\n if (newAppData.extension) {\r\n const enrollCode = getEnrollCodeFromExtension(newAppData.extension);\r\n if (enrollCode.length > 0 || tmstate.withCheckIn) {\r\n isPostponeAppointment = true;\r\n isMissingAPKWorkflow = false;\r\n } else {\r\n isPostponeAppointment = false;\r\n isMissingAPKWorkflow = true;\r\n }\r\n }\r\n\r\n if (isPostponeAppointment) {\r\n /* POSTPONE APPOINMENT */\r\n if (newAppData) {\r\n const selectedReasonObject = getSelectedReasonDataFromAppointment(newAppData);\r\n setSelectedResource(1, newAppData);\r\n tmdispatch({\r\n type: 'SELECTCATEGORY',\r\n selectedCategory: {\r\n name: selectedReasonObject ? '' : newAppData.serviceType[0].coding[0].display,\r\n id: newAppData.serviceType[0].coding[0].id,\r\n countAPKs: 1,\r\n oneMacro: false,\r\n },\r\n });\r\n if (newAppData.comment) {\r\n tmdispatch({\r\n type: 'SETREMARK',\r\n remark: newAppData.comment,\r\n });\r\n }\r\n tmdispatch({\r\n type: 'SELECTREASON',\r\n selectedReason: {\r\n ...tmstate.selectedReason,\r\n reasonName: selectedReasonObject?.reasonName ? selectedReasonObject?.reasonName : null,\r\n reasonId: selectedReasonObject?.reasonId ? selectedReasonObject?.reasonId : null,\r\n makroId: selectedReasonObject?.makroId ? selectedReasonObject?.makroId : null,\r\n },\r\n });\r\n } else {\r\n /* NEW APPOINTMENT AFTER QUESTIONNAIERE postStoreAction */\r\n // if (tmstate.selectedCategory.id > 0 && tmstate.selectedCategory.name.length > 0) {\r\n // setSelectedResource(1, newAppData);\r\n // }\r\n }\r\n\r\n setActiveStep(1);\r\n setSteps([STEP_KATEGORIE_WAEHLEN, STEP_TERMIN_WAEHLEN, STEP_TERMIN_BUCHEN]);\r\n }\r\n\r\n if (isMissingAPKWorkflow) {\r\n const missingAPK = getMissingAPKsFromExtension(newAppData.extension);\r\n const missingAPKNr = parseInt(missingAPK);\r\n if (missingAPK.length > 0) {\r\n completeAPKMode = true;\r\n countAPK = missingAPKNr + 1;\r\n } else {\r\n countAPK = getCountAPKsFromExtension(newAppData.extension);\r\n }\r\n\r\n if (countAPK > 1) {\r\n let i;\r\n for (i = 1; i <= countAPK; i++) {\r\n newSteps.push('Termin ' + i.toString());\r\n }\r\n\r\n newSteps.push(STEP_TERMIN_BUCHEN);\r\n\r\n let canceledAppointment;\r\n if (completeAPKMode) {\r\n canceledAppointment = missingAPKNr;\r\n } else {\r\n canceledAppointment = getAPKNrFromExtension(newAppData.extension);\r\n }\r\n\r\n if (canceledAppointment === 0) {\r\n setAppointmentBooked_1(false);\r\n tmdispatch({\r\n type: 'WORKONAPPOINTMENTNR',\r\n workOnAppointmentNr: 1,\r\n });\r\n } else if (canceledAppointment === 1) {\r\n setAppointmentBooked_2(false);\r\n tmdispatch({\r\n type: 'WORKONAPPOINTMENTNR',\r\n workOnAppointmentNr: 2,\r\n });\r\n }\r\n\r\n let bookedAppointment;\r\n if (completeAPKMode) {\r\n bookedAppointment = 0;\r\n } else {\r\n bookedAppointment = getAPKNrFromExtension(newAppData.contained[0].extension);\r\n }\r\n\r\n if (\r\n (newAppData.contained && newAppData.contained[0]?.status === 'booked') ||\r\n (newAppData.contained && newAppData.contained[0]?.status === 'fulfilled') ||\r\n newAppData.status === appointmentStatus.enteredInError\r\n ) {\r\n let bookedResource;\r\n if (completeAPKMode) {\r\n bookedResource = newAppData;\r\n } else {\r\n bookedResource = newAppData.contained[0];\r\n }\r\n const timeslot = {\r\n start: bookedResource.start,\r\n end: bookedResource.end,\r\n };\r\n\r\n if (bookedAppointment === 0) {\r\n setAppointmentBooked_1(true);\r\n // tmdispatch({\r\n // type: 'SETRESOURCE',\r\n // selectedResource: bookedResource,\r\n // });\r\n\r\n // tmdispatch({\r\n // type: 'SELECTTIMESLOT',\r\n // selectedTimeslot: timeslot,\r\n // });\r\n } else if (bookedAppointment === 1) {\r\n setAppointmentBooked_2(true);\r\n // tmdispatch({\r\n // type: 'SETRESOURCE_2',\r\n // selectedResource_2: bookedResource,\r\n // });\r\n\r\n // tmdispatch({\r\n // type: 'SELECTTIMESLOT_2',\r\n // selectedTimeslot_2: timeslot,\r\n // });\r\n }\r\n setSelectedResource(bookedAppointment + 1, bookedResource);\r\n setSelectedTimeslot(bookedAppointment + 1, timeslot);\r\n }\r\n\r\n setSteps(newSteps);\r\n tmdispatch({\r\n type: 'SETRENEWAPPOINTMENT',\r\n renewAppointment: true,\r\n });\r\n } else {\r\n setSteps([STEP_KATEGORIE_WAEHLEN, STEP_TERMIN_WAEHLEN, STEP_TERMIN_BUCHEN]);\r\n }\r\n }\r\n };\r\n\r\n const EnrollCodeWithLink = () => {\r\n if (enrollCode) {\r\n return (\r\n <>\r\n

    Termincode: {enrollCode}

    \r\n \r\n Link für späteren Aufruf\r\n \r\n \r\n );\r\n }\r\n return null;\r\n };\r\n\r\n const SuccessCards = () => {\r\n if (appointmentCardData_2) {\r\n return (\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 } else {\r\n return (\r\n \r\n
    \r\n \r\n \r\n
    \r\n );\r\n }\r\n };\r\n\r\n const SuccessSummary = () => {\r\n return (\r\n <>\r\n \r\n \r\n \r\n );\r\n };\r\n\r\n const SuccessMessage = () => {\r\n if (bookSuccess) {\r\n return ;\r\n } else {\r\n return (\r\n <>\r\n

    Fehler bei der Terminbuchung. Bitte versuchen Sie es erneut.

    \r\n \r\n );\r\n }\r\n };\r\n\r\n const getStep = (label: string, stepscompleted: string) => {\r\n let completed = false;\r\n\r\n let terminbuchen = false;\r\n if (stepscompleted === 'all') {\r\n /* all steps done*/\r\n completed = true;\r\n }\r\n if (stepscompleted === STEP_TERMIN_BUCHEN) {\r\n /* inkl. Termin 2 completed*/\r\n terminbuchen = true;\r\n }\r\n\r\n if (label === STEP_KATEGORIE_WAEHLEN) {\r\n completed = true;\r\n } else if (label === 'Termin 1') {\r\n if (terminbuchen) {\r\n completed = true;\r\n } else if (appointmentBooked_1) {\r\n completed = true;\r\n }\r\n } else if (label === 'Termin 2') {\r\n if (terminbuchen) {\r\n completed = true;\r\n } else if (appointmentBooked_2) {\r\n completed = true;\r\n }\r\n }\r\n return (\r\n \r\n {label}\r\n \r\n );\r\n };\r\n\r\n useEffect(() => {\r\n changeStepsIfMultiAppointments();\r\n }, []);\r\n\r\n useEffect(() => {\r\n if (appointmentBooked_1) {\r\n setActiveStep(2);\r\n } else if (appointmentBooked_2) {\r\n setActiveStep(1);\r\n } else {\r\n setActiveStep(1);\r\n }\r\n }, [tmstate.renewAppointment]);\r\n\r\n useEffect(() => {\r\n if (isTimeslotDateSet(getSelectedTimeslot(1)) && isTimeslotDateSet(getSelectedTimeslot(2))) {\r\n setNextButtonEnabled(true);\r\n } else if (steps[activeStep] === STEP_TERMIN_BUCHEN) {\r\n setNextButtonEnabled(true);\r\n } else if (steps[activeStep] === STEP_TERMIN_WAEHLEN) {\r\n setNextButtonEnabled(true);\r\n }\r\n return () => {\r\n setNextButtonEnabled(false);\r\n };\r\n }, [tmstate.selectedTimeslots && tmstate.selectedTimeslots.length]);\r\n\r\n // useEffect(() => {\r\n // if (isTimeslotDateSet(tmstate.selectedTimeslot) || isTimeslotDateSet(tmstate.selectedTimeslot_2)) {\r\n // setNextButtonEnabled(true);\r\n // } else if (steps[activeStep] === STEP_TERMIN_BUCHEN) {\r\n // setNextButtonEnabled(true);\r\n // }\r\n // return () => {\r\n // setNextButtonEnabled(false);\r\n // };\r\n // }, [tmstate.selectedCategory.name, tmstate.selectedTimeslot, tmstate.selectedTimeslot_2]);\r\n\r\n let stepContent;\r\n\r\n if (activeStep === steps.length) {\r\n stepContent = (\r\n \r\n \r\n
    \r\n \r\n \r\n \r\n Zurück zur Terminierung\r\n \r\n \r\n
    \r\n );\r\n } else {\r\n stepContent = (\r\n \r\n {getStepContent(steps, activeStep)}\r\n \r\n \r\n handleCancel()}>\r\n Abbrechen\r\n \r\n \r\n \r\n ) => handleBack(e)}\r\n >\r\n Zurück\r\n \r\n \r\n \r\n ) => handleNext(e)}\r\n >\r\n {steps[activeStep] === STEP_TERMIN_BUCHEN ? 'Jetzt buchen' : 'Weiter'}\r\n \r\n \r\n \r\n \r\n );\r\n }\r\n\r\n /* recreate steps when finished */\r\n let stepscompleted = '';\r\n if (steps[activeStep] === STEP_TERMIN_BUCHEN) {\r\n stepscompleted = STEP_TERMIN_BUCHEN;\r\n } else if (activeStep === steps.length) {\r\n stepscompleted = 'all';\r\n }\r\n return (\r\n
    \r\n \r\n {steps.map((label) => getStep(label, stepscompleted))}\r\n \r\n
    {stepContent}
    \r\n setBlockingModalShow({ show: false })}\r\n />\r\n
    \r\n );\r\n}\r\n\r\nexport default StepperTerminierungAlternateDate;\r\n","import StepperTerminierungAlternateDate from '../../components/Stepper/StepperTerminierungAlternateDate';\r\nimport Mainscreen from '../Mainscreen/Mainscreen';\r\nimport { ITermineContent } from '../Termine/Termine';\r\n\r\nexport const StepperTerminierungAlternateDateContent = (props: ITermineContent) => {\r\n return (\r\n
    \r\n \r\n
    \r\n );\r\n};\r\n\r\nconst TerminierungAlternateDate = () => {\r\n return (\r\n \r\n \r\n \r\n );\r\n};\r\n\r\nexport default TerminierungAlternateDate;\r\n","import { appointmentStatus } from '../globals/global';\r\n\r\nexport const getGenderEN = (gender: string) => {\r\n switch (gender) {\r\n case 'Männlich':\r\n return 'male';\r\n case 'Weiblich':\r\n return 'female';\r\n case 'Divers':\r\n return 'divers';\r\n case 'Unbekannt':\r\n return 'unknown';\r\n case '':\r\n return 'unknown';\r\n default:\r\n return gender;\r\n }\r\n};\r\n\r\nexport const getGenderDE = (gender: string) => {\r\n switch (gender) {\r\n case 'male':\r\n return 'Männlich';\r\n case 'female':\r\n return 'Weiblich';\r\n case 'divers':\r\n return 'Divers';\r\n case 'unknown':\r\n return 'Unbekannt';\r\n case '':\r\n return '';\r\n default:\r\n return gender;\r\n }\r\n};\r\n\r\nexport const getCountryEN = (country: string) => {\r\n switch (country) {\r\n case 'Deutschland':\r\n return 'Germany';\r\n case 'Österreich':\r\n return 'Austria';\r\n case 'Schweiz':\r\n return 'Switzerland';\r\n default:\r\n return '';\r\n }\r\n};\r\n\r\nexport const getCountryDE = (country: string) => {\r\n switch (country) {\r\n case 'Germany':\r\n return 'Deutschland';\r\n case 'Austria':\r\n return 'Österreich';\r\n case 'Switzerland':\r\n return 'Schweiz';\r\n default:\r\n return '';\r\n }\r\n};\r\n\r\nexport const getCountryLongName = (countryShortName: string) => {\r\n switch (countryShortName) {\r\n case 'D':\r\n return 'Deutschland';\r\n case 'DE':\r\n return 'Deutschland';\r\n case 'A':\r\n return 'Österreich';\r\n case 'AT':\r\n return 'Österreich';\r\n case 'CH':\r\n return 'Schweiz';\r\n default:\r\n return '';\r\n }\r\n};\r\n\r\nexport const translateStatus = (status: string) => {\r\n switch (status) {\r\n case 'cancelled':\r\n return 'abgesagt';\r\n case 'pending':\r\n return 'geplant o. Uhrzeit';\r\n case 'booked':\r\n return 'geplant';\r\n case 'arrived':\r\n return 'aktuell';\r\n case 'fulfilled':\r\n return 'abgeschlossen';\r\n case appointmentStatus.enteredInError:\r\n return 'unvollständig';\r\n default:\r\n break;\r\n }\r\n};\r\n\r\n/**\r\n * format date from yyyy-MM-dd or yyyy.MM.dd to dd.MM.yyyy\r\n *\r\n * @param date\r\n * the date as string\r\n * @returns\r\n * the date with new format\r\n */\r\nexport const getGermanDateFormatFromString = (date: string) => {\r\n const day = date.slice(8);\r\n const month = date.slice(5, -3);\r\n const year = date.slice(0, -6);\r\n return day + '.' + month + '.' + year;\r\n};\r\n\r\nexport const pattern =\r\n /^(([^<>()\\[\\]\\\\.,;:\\s@\"]+(\\.[^<>()\\[\\]\\\\.,;:\\s@\"]+)*)|(\".+\"))@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\])|(([a-zA-Z\\-0-9]+\\.)+[a-zA-Z0-9]{2,}))$/;\r\n\r\nexport const isEmailValid = (email: string) => {\r\n return pattern.test(String(email).toLowerCase());\r\n};\r\n\r\nexport const getBasicAuthBase64Encoded = (basicauth: string) => {\r\n const base64encodedStr = btoa(basicauth);\r\n const basicAuthBase64 = 'Basic ' + base64encodedStr;\r\n return basicAuthBase64;\r\n};\r\n\r\nexport const getDataFromAppProperties = (propRes: any) => {\r\n const appProps = {\r\n Appointment: {\r\n skipBehandlersuche:\r\n propRes.Appointment?.skipBehandlersuche !== undefined ? propRes.Appointment?.skipBehandlersuche : false,\r\n },\r\n AppointmentSummary: {\r\n behandler:\r\n propRes.AppointmentSummary?.behandler !== undefined ? propRes.AppointmentSummary?.behandler : true,\r\n fach: propRes.AppointmentSummary?.fach !== undefined ? propRes.AppointmentSummary?.fach : true,\r\n pflege: propRes.AppointmentSummary?.pflege !== undefined ? propRes.AppointmentSummary?.pflege : true,\r\n raum: propRes.AppointmentSummary?.raum !== undefined ? propRes.AppointmentSummary?.raum : true,\r\n standort: propRes.AppointmentSummary?.standort !== undefined ? propRes.AppointmentSummary?.standort : true,\r\n },\r\n RegistrationMandFields: {\r\n birthDate:\r\n propRes.RegistrationMandFields?.birthDate !== undefined\r\n ? propRes.RegistrationMandFields.birthDate\r\n : null,\r\n city: propRes.RegistrationMandFields?.city !== undefined ? propRes.RegistrationMandFields.city : null,\r\n country:\r\n propRes.RegistrationMandFields?.country !== undefined ? propRes.RegistrationMandFields.country : null,\r\n email: propRes.RegistrationMandFields?.email !== undefined ? propRes.RegistrationMandFields.email : null,\r\n firstName:\r\n propRes.RegistrationMandFields?.firstName !== undefined\r\n ? propRes.RegistrationMandFields.firstName\r\n : null,\r\n gender: propRes.RegistrationMandFields?.gender !== undefined ? propRes.RegistrationMandFields.gender : null,\r\n lastName:\r\n propRes.RegistrationMandFields?.lastName !== undefined ? propRes.RegistrationMandFields.lastName : null,\r\n phone: propRes.RegistrationMandFields?.phone !== undefined ? propRes.RegistrationMandFields.phone : null,\r\n street: propRes.RegistrationMandFields?.street !== undefined ? propRes.RegistrationMandFields.street : null,\r\n zip: propRes.RegistrationMandFields?.zip !== undefined ? propRes.RegistrationMandFields.zip : null,\r\n insuranceNr:\r\n propRes.RegistrationMandFields?.insuranceNr !== undefined\r\n ? propRes.RegistrationMandFields.insuranceNr\r\n : null,\r\n mobilePhone:\r\n propRes.RegistrationMandFields?.mobilePhone !== undefined\r\n ? propRes.RegistrationMandFields.mobilePhone\r\n : null,\r\n academicTitle:\r\n propRes.RegistrationMandFields?.academicTitle !== undefined\r\n ? propRes.RegistrationMandFields.academicTitle\r\n : null,\r\n insuranceName:\r\n propRes.RegistrationMandFields?.insuranceName !== undefined\r\n ? propRes.RegistrationMandFields.insuranceName\r\n : null,\r\n language:\r\n propRes.RegistrationMandFields?.language !== undefined ? propRes.RegistrationMandFields.language : null,\r\n privacyTerms:\r\n propRes.RegistrationMandFields?.privacyTerms !== undefined\r\n ? propRes.RegistrationMandFields.privacyTerms\r\n : null,\r\n },\r\n RegistrationVisibleFields: {\r\n birthDate:\r\n propRes.RegistrationVisibleFields?.birthDate !== undefined\r\n ? propRes.RegistrationVisibleFields.birthDate\r\n : null,\r\n city: propRes.RegistrationVisibleFields?.city !== undefined ? propRes.RegistrationVisibleFields.city : null,\r\n country:\r\n propRes.RegistrationVisibleFields?.country !== undefined\r\n ? propRes.RegistrationVisibleFields.country\r\n : null,\r\n email:\r\n propRes.RegistrationVisibleFields?.email !== undefined ? propRes.RegistrationVisibleFields.email : null,\r\n firstName:\r\n propRes.RegistrationVisibleFields?.firstName !== undefined\r\n ? propRes.RegistrationVisibleFields.firstName\r\n : null,\r\n gender:\r\n propRes.RegistrationVisibleFields?.gender !== undefined\r\n ? propRes.RegistrationVisibleFields.gender\r\n : null,\r\n lastName:\r\n propRes.RegistrationVisibleFields?.lastName !== undefined\r\n ? propRes.RegistrationVisibleFields.lastName\r\n : null,\r\n phone:\r\n propRes.RegistrationVisibleFields?.phone !== undefined ? propRes.RegistrationVisibleFields.phone : null,\r\n street:\r\n propRes.RegistrationVisibleFields?.street !== undefined\r\n ? propRes.RegistrationVisibleFields.street\r\n : null,\r\n zip: propRes.RegistrationVisibleFields?.zip !== undefined ? propRes.RegistrationVisibleFields.zip : null,\r\n insuranceNr:\r\n propRes.RegistrationVisibleFields?.insuranceNr !== undefined\r\n ? propRes.RegistrationVisibleFields.insuranceNr\r\n : null,\r\n mobilePhone:\r\n propRes.RegistrationVisibleFields?.mobilePhone !== undefined\r\n ? propRes.RegistrationVisibleFields.mobilePhone\r\n : null,\r\n academicTitle:\r\n propRes.RegistrationVisibleFields?.academicTitle !== undefined\r\n ? propRes.RegistrationVisibleFields.academicTitle\r\n : null,\r\n insuranceName:\r\n propRes.RegistrationVisibleFields?.insuranceName !== undefined\r\n ? propRes.RegistrationVisibleFields.insuranceName\r\n : null,\r\n language:\r\n propRes.RegistrationVisibleFields?.language !== undefined\r\n ? propRes.RegistrationVisibleFields.language\r\n : null,\r\n privacyTerms:\r\n propRes.RegistrationVisibleFields?.privacyTerms !== undefined\r\n ? propRes.RegistrationVisibleFields.privacyTerms\r\n : null,\r\n },\r\n RegistrationReadOnlyFields: {\r\n birthDate:\r\n propRes.RegistrationReadOnlyFields?.birthDate !== undefined\r\n ? propRes.RegistrationReadOnlyFields.birthDate\r\n : null,\r\n city:\r\n propRes.RegistrationReadOnlyFields?.city !== undefined ? propRes.RegistrationReadOnlyFields.city : null,\r\n country:\r\n propRes.RegistrationReadOnlyFields?.country !== undefined\r\n ? propRes.RegistrationReadOnlyFields.country\r\n : null,\r\n email:\r\n propRes.RegistrationReadOnlyFields?.email !== undefined\r\n ? propRes.RegistrationReadOnlyFields.email\r\n : null,\r\n firstName:\r\n propRes.RegistrationReadOnlyFields?.firstName !== undefined\r\n ? propRes.RegistrationReadOnlyFields.firstName\r\n : null,\r\n gender:\r\n propRes.RegistrationReadOnlyFields?.gender !== undefined\r\n ? propRes.RegistrationReadOnlyFields.gender\r\n : null,\r\n lastName:\r\n propRes.RegistrationReadOnlyFields?.lastName !== undefined\r\n ? propRes.RegistrationReadOnlyFields.lastName\r\n : null,\r\n phone:\r\n propRes.RegistrationReadOnlyFields?.phone !== undefined\r\n ? propRes.RegistrationReadOnlyFields.phone\r\n : null,\r\n street:\r\n propRes.RegistrationReadOnlyFields?.street !== undefined\r\n ? propRes.RegistrationReadOnlyFields.street\r\n : null,\r\n zip: propRes.RegistrationReadOnlyFields?.zip !== undefined ? propRes.RegistrationReadOnlyFields.zip : null,\r\n insuranceNr:\r\n propRes.RegistrationReadOnlyFields?.insuranceNr !== undefined\r\n ? propRes.RegistrationReadOnlyFields.insuranceNr\r\n : null,\r\n mobilePhone:\r\n propRes.RegistrationReadOnlyFields?.mobilePhone !== undefined\r\n ? propRes.RegistrationReadOnlyFields.mobilePhone\r\n : null,\r\n academicTitle:\r\n propRes.RegistrationReadOnlyFields?.academicTitle !== undefined\r\n ? propRes.RegistrationReadOnlyFields.academicTitle\r\n : null,\r\n insuranceName:\r\n propRes.RegistrationReadOnlyFields?.insuranceName !== undefined\r\n ? propRes.RegistrationReadOnlyFields.insuranceName\r\n : null,\r\n language:\r\n propRes.RegistrationReadOnlyFields?.language !== undefined\r\n ? propRes.RegistrationReadOnlyFields.language\r\n : null,\r\n },\r\n allowAccountAfterAppointment: propRes.allowAccountAfterAppointment,\r\n allowAccountCreateDirect: propRes.allowAccountCreateDirect,\r\n allowAppointments: propRes.allowAppointments,\r\n allowAppointmentsWithoutLogin: propRes.allowAppointmentsWithoutLogin,\r\n allowDirectAppointments: propRes.allowDirectAppointments,\r\n allowDirectAppointmentsWithoutLogin: propRes.allowDirectAppointmentsWithoutLogin,\r\n allowLogin: propRes.allowLogin,\r\n allowVideo: propRes.allowVideo,\r\n allowVideoWithoutLogin: propRes.allowVideoWithoutLogin,\r\n allowAccountInAnmeldeworkflow: propRes.allowAccountInAnmeldeworkflow,\r\n brandingBytes: propRes.brandingBytes,\r\n brandigType: propRes.brandigType,\r\n extraLinks: propRes.extraLinks,\r\n customTexts: propRes.customTexts,\r\n showMobileQR: propRes.showMobileQR,\r\n jitsiDomain: propRes.jitsiDomain,\r\n jitsiOptions: propRes.jitsiOptions,\r\n impressum: propRes.impressum,\r\n anmeldeContexts: propRes.anmeldeContexts,\r\n countDaysToVisualize: propRes.countDaysToVisualize,\r\n extendedPhysicians: propRes.extendedPhysicians,\r\n allowChat: propRes.allowChat,\r\n googleAnalyticsID: propRes.googleAnalyticsID,\r\n };\r\n\r\n return appProps;\r\n};\r\n\r\nexport const setDataFromAppProperties = (propRes: any, apdispatch: any) => {\r\n const appProps = getDataFromAppProperties(propRes);\r\n\r\n apdispatch({\r\n type: 'SETAPPPROPS',\r\n ...appProps,\r\n });\r\n};\r\n\r\nexport const getFullOTPAuthorization = (prefix: string, otp: string, userId: string | number, t0: string) => {\r\n let _userId = userId;\r\n if (typeof userId === 'number') {\r\n _userId = userId.toString();\r\n }\r\n\r\n let _prefix = '';\r\n if (prefix.length > 0) {\r\n _prefix = prefix + ' ';\r\n }\r\n\r\n const otpAuth = _prefix + otp + '&userId=' + _userId + '&t0=' + t0;\r\n return otpAuth;\r\n};\r\n\r\nexport const isDEVMode = () => {\r\n if (process.env.NODE_ENV === 'development' || window.location.hostname === 'localhost') {\r\n return true;\r\n }\r\n};\r\n","import { Form } from 'react-bootstrap';\r\nimport FormLabel from 'react-bootstrap/FormLabel';\r\nimport styled from 'styled-components';\r\n\r\ninterface IForm {\r\n marginBottom?: string;\r\n color?: string;\r\n}\r\n\r\nexport const StyledFormLabel = styled(FormLabel)`\r\n margin-bottom: ${(prop) => (prop.marginBottom ? prop.marginBottom : '1rem')};\r\n`;\r\n\r\nexport const StyledFormLabelForInput = styled(FormLabel)`\r\n margin-bottom: 0.3rem;\r\n font-size: 0.85rem;\r\n color: ${(prop) => (prop.Color ? prop.Color : 'rgb(116, 118, 130)')};\r\n`;\r\n\r\nexport const StyledFormRowNoMargin = styled(Form.Row)`\r\n margin: 0;\r\n`;\r\n\r\nexport const StyledFormGroupMaxWidth = styled(Form.Group)`\r\n width: 100%;\r\n`;\r\n","import { getBaseURL } from '../../globals/global';\r\n\r\nexport const getFHIRConfig = (sessionId: string, baseURL?: string) => {\r\n let baseurl = getBaseURL() + '/fhir';\r\n if (baseURL) {\r\n baseurl = baseURL;\r\n }\r\n\r\n return {\r\n baseUrl: baseurl,\r\n headers: {\r\n Authorization: sessionId,\r\n },\r\n };\r\n};\r\n","import styled, { css } from 'styled-components';\r\nimport { MainHeaderCol } from '../Cols/StyledCol';\r\nimport { StickyHeaderTitleDiv } from '../Div/StyledDiv';\r\nimport { MainHeaderRow } from '../Rows/StyledRow';\r\n\r\nconst headerBaseStyle = css`\r\n color: white;\r\n vertical-align: middle;\r\n margin: auto;\r\n padding: 0;\r\n text-align: center;\r\n overflow: hidden;\r\n white-space: nowrap;\r\n text-overflow: ellipsis;\r\n`;\r\n\r\ninterface IHeader {\r\n color?: string;\r\n}\r\n\r\nexport const MainH1Title = styled.h1`\r\n ${headerBaseStyle}\r\n color: ${(prop) => (prop.color ? prop.color : prop.theme.header.main.color)};\r\n`;\r\n\r\nexport const MainH2Title = styled.h2`\r\n ${headerBaseStyle}\r\n color: ${(prop) => (prop.color ? prop.color : prop.theme.header.main.color)};\r\n`;\r\n\r\nexport const MainH3Title = styled.h3`\r\n ${headerBaseStyle}\r\n color: ${(prop) => (prop.color ? prop.color : prop.theme.header.main.color)};\r\n`;\r\n\r\nexport const MainH4Title = styled.h4`\r\n ${headerBaseStyle}\r\n color: ${(prop) => (prop.color ? prop.color : prop.theme.header.main.color)};\r\n`;\r\n\r\nexport const MainH5Title = styled.h5`\r\n ${headerBaseStyle}\r\n color: ${(prop) => (prop.color ? prop.color : prop.theme.header.main.color)};\r\n`;\r\n\r\nexport const containerHeader = (title: string) => {\r\n return (\r\n \r\n \r\n \r\n {title}\r\n \r\n \r\n \r\n );\r\n};\r\n","import { Placement } from 'react-bootstrap/esm/Overlay';\r\nimport OverlayTrigger from 'react-bootstrap/OverlayTrigger';\r\nimport Tooltip from 'react-bootstrap/Tooltip';\r\nimport { IconDiv } from '../Div/StyledDiv';\r\n\r\ninterface ITooltip {\r\n id: string;\r\n text: string;\r\n iconDiv: boolean;\r\n divWidth?: string;\r\n marginLeft?: string;\r\n marginRight?: string;\r\n // icon: IconBaseProps;\r\n icon: any;\r\n placement?: Placement;\r\n}\r\n\r\nconst MyTooltip = (props: ITooltip) => {\r\n let placement: Placement = 'bottom';\r\n if (props.placement && placement.length > 0) {\r\n placement = props.placement;\r\n }\r\n\r\n if (props.iconDiv) {\r\n return (\r\n {props.text}}>\r\n \r\n {props.icon}\r\n \r\n \r\n );\r\n } else {\r\n return (\r\n {props.text}}>\r\n {props.icon}\r\n \r\n );\r\n }\r\n};\r\n\r\nexport default MyTooltip;\r\n","import { version } from '../../package.json';\r\nimport { charts, tables } from '../utils/chartUtils';\r\n\r\nconst appVersion = version;\r\n\r\nconst baseURL = (window as any).pcpconfig.baseURL;\r\nconst homepageURL = (window as any).pcpconfig.homepageURL;\r\nconst contextConfig = (window as any).pcpconfig.context;\r\nconst qrCodeConfig = (window as any).pcpconfig.qrcode;\r\nconst themeConfig = (window as any).pcpconfig.theme;\r\n// const basicauthConfig = (window as any).pcpconfig.basicauth;\r\n\r\nexport const getBaseURL = () => {\r\n return baseURL;\r\n};\r\n\r\nexport const getRestURL = () => {\r\n return baseURL + '/rest/';\r\n};\r\n\r\nexport const getFhirURL = () => {\r\n return baseURL + '/fhir';\r\n};\r\n\r\nexport const getTermsURL = () => {\r\n return baseURL + '/C.hd?calcWith=TermsHTML';\r\n};\r\n\r\nexport const getPrivacyURL = () => {\r\n return baseURL + '/C.hd?calcWith=PrivacyHTML';\r\n};\r\n\r\nexport const getHomepageURL = () => {\r\n return homepageURL;\r\n};\r\n\r\nexport const getContextConfig = () => {\r\n return contextConfig;\r\n};\r\n\r\nexport const getQRCodeConfig = () => {\r\n return qrCodeConfig;\r\n};\r\n\r\n// export const getBasicAuthConfig = () => {\r\n// return basicauthConfig;\r\n// };\r\n\r\nexport const getAppVersion = () => {\r\n return appVersion;\r\n};\r\n\r\nexport const getThemeConfig = () => {\r\n return themeConfig;\r\n};\r\n\r\nexport const localStorageKey = {\r\n // lastInteraction: 'lastInteraction',\r\n};\r\n\r\nexport const moment = require('moment/min/moment-with-locales');\r\nmoment.locale('de');\r\n\r\nexport const appointmentStatus = {\r\n booked: 'booked',\r\n cancelled: 'cancelled',\r\n enteredInError: 'entered-in-error',\r\n arrived: 'arrived',\r\n};\r\n\r\nexport const PROFILE_HOME = 'HOME';\r\n\r\nexport const securityItemNames = {\r\n CHARTS: 'CHARTS',\r\n CHARTS_WEIGHT: charts.WEIGHT.id,\r\n CHARTS_FATMASS: charts.FATMASS.id,\r\n CHARTS_BLOODSUGAR: charts.BLOODSUGAR.id,\r\n CHARTS_FLI: charts.FLI.id,\r\n CHARTS_SAM: charts.SAM.id,\r\n CHARTS_ACTIVITY: charts.ACTIVITY.id,\r\n TABLE_VAL: tables.VALTBL.id,\r\n PATLIST: 'PATLIST',\r\n DOKUMENT: 'DOKUMENT',\r\n FOTOS: 'FOTOS',\r\n FRAGEBOGEN: 'FRAGEBOGEN',\r\n MEDIKATION: 'MEDIKATION',\r\n TAGESPLAN: 'TAGESPLAN',\r\n TERMINE: 'TERMINE',\r\n VIDEO: 'VIDEO',\r\n JOURNEY: 'JOURNEY',\r\n TODO: 'TODO',\r\n TAB_ORDER: 'TAB_ORDER',\r\n};\r\n\r\nexport const jitsiOptions = {\r\n configOverwrite: {\r\n toolbarButtons: [\r\n 'camera',\r\n 'chat',\r\n // 'closedcaptions',\r\n 'desktop',\r\n // 'download',\r\n // 'embedmeeting',\r\n // 'etherpad',\r\n // 'feedback',\r\n 'filmstrip',\r\n 'fullscreen',\r\n 'hangup',\r\n // 'help',\r\n 'highlight',\r\n // 'invite',\r\n // 'linktosalesforce',\r\n // 'livestreaming',\r\n 'microphone',\r\n 'noisesuppression',\r\n 'participants-pane',\r\n 'profile',\r\n 'raisehand',\r\n // 'recording',\r\n // 'security',\r\n // 'select-background',\r\n 'settings',\r\n // 'shareaudio',\r\n // 'sharedvideo',\r\n // 'shortcuts',\r\n // 'stats',\r\n 'tileview',\r\n 'toggle-camera',\r\n 'videoquality',\r\n // 'whiteboard',\r\n ],\r\n breakoutRooms: {\r\n // Hides the add breakout room button. This replaces `hideAddRoomButton`.\r\n hideAddRoomButton: true,\r\n // Hides the auto assign participants button.\r\n hideAutoAssignButton: true,\r\n // Hides the join breakout room button.\r\n hideJoinRoomButton: true,\r\n },\r\n },\r\n};\r\n","import { useContext } from 'react';\r\nimport ReactGA from 'react-ga4';\r\nimport AppPropsContext from '../context/appPropsContext';\r\nimport { isDEVMode } from '../utils/pcpUtils';\r\n\r\nexport interface IGoogleAnalyticsPageView {\r\n page: string;\r\n title: string;\r\n}\r\n\r\nexport interface IGoogleAnalyticsEvent {\r\n category: GoogleAnalyticsCategory;\r\n action: GoogleAnalyticsAction;\r\n label?: string;\r\n value?: number;\r\n nonInteraction?: boolean;\r\n transport?: 'beacon' | 'xhr' | 'image';\r\n}\r\n\r\nexport enum GoogleAnalyticsCategory {\r\n HOMESCREEN = 'HomeScreen',\r\n APPOINTMENT_BOOKING = 'AppointmentBooking',\r\n}\r\n\r\nexport enum GoogleAnalyticsAction {\r\n CLICK = 'button_click',\r\n SUBMIT = 'button_submit',\r\n}\r\n\r\nexport const useGoogleAnalytics = () => {\r\n const { apstate } = useContext(AppPropsContext);\r\n\r\n const isGoogleAnalyticsEnabled = () => {\r\n if (isDEVMode()) {\r\n return false;\r\n }\r\n if (apstate.googleAnalyticsID && apstate.googleAnalyticsID.length > 0) {\r\n return true;\r\n }\r\n };\r\n\r\n const sendGoogleAnalyticsPageView = (props: IGoogleAnalyticsPageView) => {\r\n if (isGoogleAnalyticsEnabled()) {\r\n ReactGA.send({ hitType: 'pageview', page: props.page, title: props.title });\r\n }\r\n };\r\n\r\n const sendGoogleAnalyticsEvent = (props: IGoogleAnalyticsEvent) => {\r\n if (isGoogleAnalyticsEnabled()) {\r\n // Send a custom event\r\n ReactGA.event({\r\n category: props.category,\r\n action: props.action,\r\n label: props.label ? props.label : undefined, // optional\r\n value: props.value ? props.value : undefined, // optional, must be a number\r\n nonInteraction: props.nonInteraction ? props.nonInteraction : false, // optional, true/false\r\n transport: props.transport ? props.transport : undefined, // optional, beacon/xhr/image\r\n });\r\n }\r\n };\r\n\r\n return {\r\n isGoogleAnalyticsEnabled,\r\n sendGoogleAnalyticsPageView,\r\n sendGoogleAnalyticsEvent,\r\n };\r\n};\r\n","import Nav from 'react-bootstrap/Nav';\r\nimport SidebarItemList from '../../components/SidebarItems/SidebarItemList';\r\nimport { StyledNavbar } from './StyledNavbar';\r\n\r\nconst NavbarBottom = () => {\r\n return (\r\n \r\n \r\n \r\n );\r\n};\r\n\r\nexport default NavbarBottom;\r\n","import * as React from 'react';\r\nimport { useContext, useEffect, useState } from 'react';\r\nimport Col from 'react-bootstrap/Col';\r\nimport Container from 'react-bootstrap/Container';\r\nimport Row from 'react-bootstrap/Row';\r\nimport { useLocation, useNavigate } from 'react-router-dom';\r\nimport { ThemeContext } from 'styled-components';\r\nimport DragNDropArea from '../../components/Div/DragNDropArea';\r\nimport { CenterDiv } from '../../components/Div/StyledDiv';\r\nimport TelephoneModal from '../../components/Modals/TelephoneModal/TelephoneModal';\r\nimport { ITelephoneCallIcon, stopRingTone } from '../../components/Telephone/Telephone';\r\nimport LoginContext from '../../context/loginContext';\r\nimport TerminierungContext from '../../context/terminierungContext';\r\nimport MyThemeContext from '../../context/themeContext';\r\nimport VideochatContext from '../../context/videochatContext';\r\nimport useScreenResolution from '../../hooks/useScreenResolution';\r\nimport { initWebSocket } from '../../services/VideochatService';\r\nimport { isMobile } from '../../utils/screenResolution';\r\nimport Navbar from '../Navbar/Navbar';\r\nimport NavbarBottom from '../Navbar/NavbarBottom';\r\nimport Sidebar from '../Sidebar/Sidebar';\r\n\r\nconst Mainscreen = ({ children }: React.PropsWithChildren) => {\r\n const navigate = useNavigate();\r\n const location = useLocation();\r\n const themeContext = useContext(ThemeContext);\r\n const { state } = useContext(LoginContext);\r\n const { themestate } = useContext(MyThemeContext);\r\n const { vsstate, vsdispatch } = useContext(VideochatContext);\r\n const { tmstate } = useContext(TerminierungContext);\r\n const [showTelephoneModal, setShowTelephoneModal] = useState(false);\r\n\r\n const screenSize = useScreenResolution();\r\n\r\n // window.localStorage.setItem(localStorageKey.lastInteraction, moment().format('DD.MM.YYYY HH:mm:ss'));\r\n\r\n const callProps: ITelephoneCallIcon = {\r\n state: state,\r\n vsstate: vsstate,\r\n vsdispatch: vsdispatch,\r\n tmstate: tmstate,\r\n };\r\n\r\n useEffect(() => {\r\n if (state.sessionId !== '') {\r\n if (!window.app.wsconnect) {\r\n initWebSocket(state.iceServers, state.sessionId, vsstate, vsdispatch, tmstate, navigate, location);\r\n // console.log('before WS');\r\n // console.log('ws: ', window.app.wsconnect);\r\n }\r\n }\r\n }, [state.sessionId, showTelephoneModal, window.app.wsconnect]);\r\n\r\n useEffect(() => {\r\n if (vsstate.incomingCall) {\r\n if (!showTelephoneModal) {\r\n setShowTelephoneModal(true);\r\n }\r\n }\r\n }, [vsstate.incomingCall]);\r\n\r\n const onTelephoneCallOff = () => {\r\n setShowTelephoneModal(false);\r\n };\r\n\r\n const onTelephoneCallAccept = () => {\r\n setShowTelephoneModal(false);\r\n };\r\n\r\n const onTelephoneHide = () => {\r\n stopRingTone();\r\n setShowTelephoneModal(false);\r\n };\r\n\r\n return (\r\n
    \r\n
    \r\n \r\n
    \r\n \r\n \r\n {!isMobile(screenSize.width) && (\r\n \r\n \r\n \r\n )}\r\n\r\n \r\n \r\n {children}\r\n onTelephoneCallAccept()}\r\n onCallOff={() => onTelephoneCallOff()}\r\n onCallHide={() => onTelephoneHide()}\r\n />\r\n \r\n \r\n \r\n \r\n {isMobile(screenSize.width) && }\r\n
    \r\n );\r\n};\r\n\r\nexport default Mainscreen;\r\n","import { createContext } from 'react';\r\nimport { IAppointmentChat, IChat, IIncomingMessage } from '../components/Chat/Chat';\r\n\r\nexport type InitialVideochatType = {\r\n incomingCall: boolean;\r\n callAccepted: boolean;\r\n caller: string;\r\n remoteSid: string;\r\n roomName: string;\r\n localStream: any;\r\n remoteStream: any;\r\n iceServer: Array;\r\n chatMessages: IIncomingMessage[];\r\n numberUnreadMessages: number;\r\n lastIncomingTextChatMsg: string;\r\n appointmentChat: IAppointmentChat[];\r\n lastIncomingAppChatMsg: IChat;\r\n audioMuted: boolean;\r\n jitsiAllowed: boolean;\r\n jitsiError: string;\r\n};\r\n\r\nexport const initialVideochatState = {\r\n incomingCall: false,\r\n callAccepted: false,\r\n caller: '',\r\n remoteSid: '',\r\n localStream: null,\r\n remoteStream: null,\r\n roomName: '',\r\n iceServer: [],\r\n chatMessages: [],\r\n numberUnreadMessages: 0,\r\n lastIncomingTextChatMsg: '',\r\n appointmentChat: [],\r\n lastIncomingAppChatMsg: {\r\n id: '',\r\n incomingMessages: [],\r\n },\r\n audioMuted: false,\r\n jitsiAllowed: false,\r\n jitsiError: '',\r\n};\r\n\r\nconst VideochatContext = createContext<{\r\n vsstate: InitialVideochatType;\r\n vsdispatch: React.Dispatch;\r\n}>({\r\n vsstate: initialVideochatState,\r\n vsdispatch: () => null,\r\n});\r\n\r\nexport default VideochatContext;\r\n","import { useCallback, useContext } from 'react';\r\nimport AlertContext, { AlertOnHide, AlertType } from '../context/alertContext';\r\nimport LoginContext from '../context/loginContext';\r\nimport TerminierungContext, { IAvailableTimeslot, ITimeslot } from '../context/terminierungContext';\r\nimport { cancelAppointment } from '../services/fhir/FHIRAppointment';\r\nimport { showAlertMessage } from '../utils/alertHandling';\r\nimport {\r\n APPOINTMENT_POSTPONE_REASON,\r\n getOriginalAppointmentDate,\r\n resetAvailableTimeslotsWithNr,\r\n resetSelectedResourceWithNr,\r\n resetSelectedTimeslotsWithNr,\r\n updateAvailableTimeslots,\r\n updateSelectedResources,\r\n updateSelectedTimeslot,\r\n} from '../utils/appointmentUtils';\r\n\r\nexport const useAppointmentSelection = () => {\r\n const { tmstate, tmdispatch } = useContext(TerminierungContext);\r\n const { alertdispatch } = useContext(AlertContext);\r\n const { state } = useContext(LoginContext);\r\n\r\n const setSelectedResource = useCallback(\r\n (appointmentNr: number, selectedResource: any) => {\r\n let appNr = 1;\r\n if (appointmentNr) {\r\n appNr = appointmentNr;\r\n }\r\n\r\n if (selectedResource !== undefined) {\r\n const updatedSelectedResource = updateSelectedResources(\r\n tmstate.selectedResources,\r\n appNr,\r\n selectedResource,\r\n );\r\n tmdispatch({\r\n type: 'SETRESOURCE',\r\n selectedResources: updatedSelectedResource,\r\n });\r\n }\r\n },\r\n [tmdispatch, tmstate.selectedResources],\r\n );\r\n\r\n const resetSelectedResource = useCallback(\r\n (appointmentNr: number) => {\r\n let appNr = 1;\r\n if (appointmentNr) {\r\n appNr = appointmentNr;\r\n }\r\n\r\n const resetedResource = resetSelectedResourceWithNr(tmstate.selectedResources, appNr);\r\n tmdispatch({\r\n type: 'SETRESOURCE',\r\n selectedResources: resetedResource,\r\n });\r\n },\r\n [tmdispatch, tmstate.selectedResources],\r\n );\r\n\r\n const setAvailableTimeslots = useCallback(\r\n (appointmentNr: number, availableTimeslots: IAvailableTimeslot[], supressDuration: boolean) => {\r\n let appNr = 1;\r\n if (appointmentNr) {\r\n appNr = appointmentNr;\r\n }\r\n\r\n if (availableTimeslots !== undefined) {\r\n const updatedAvailableTimeslot = updateAvailableTimeslots(\r\n tmstate.availableTimeslots,\r\n appNr,\r\n availableTimeslots,\r\n supressDuration,\r\n );\r\n tmdispatch({\r\n type: 'SETAVAILABLETIMESLOTS',\r\n availableTimeslots: updatedAvailableTimeslot,\r\n });\r\n }\r\n },\r\n\r\n [tmdispatch, tmstate.availableTimeslots],\r\n );\r\n\r\n const resetAvailableTimeslots = useCallback(\r\n (appointmentNr: number) => {\r\n let appNr = 1;\r\n if (appointmentNr) {\r\n appNr = appointmentNr;\r\n }\r\n\r\n const resetedAvailableTimeslot = resetAvailableTimeslotsWithNr(tmstate.availableTimeslots, appNr);\r\n tmdispatch({\r\n type: 'SETAVAILABLETIMESLOTS',\r\n availableTimeslots: resetedAvailableTimeslot,\r\n });\r\n },\r\n [tmdispatch, tmstate.availableTimeslots],\r\n );\r\n\r\n const getSelectedResource = (appointmentNr: number) => {\r\n let appNr = 1;\r\n if (appointmentNr) {\r\n appNr = appointmentNr;\r\n }\r\n const foundResource = tmstate.selectedResources?.find((e) => e.appointmentNr === appNr);\r\n return foundResource?.resource;\r\n };\r\n\r\n const getAvailableTimeslots = (appointmentNr: number) => {\r\n let appNr = 1;\r\n if (appointmentNr) {\r\n appNr = appointmentNr;\r\n }\r\n const foundAvailableTimeslots = tmstate.availableTimeslots?.find((e) => e.appointmentNr === appNr);\r\n return foundAvailableTimeslots;\r\n };\r\n\r\n const getSelectedTimeslot = (appointmentNr: number) => {\r\n let appNr = 1;\r\n if (appointmentNr) {\r\n appNr = appointmentNr;\r\n }\r\n const foundSelectedTimeslots = tmstate.selectedTimeslots?.find((e) => e.appointmentNr === appNr);\r\n return foundSelectedTimeslots?.selectedTimeslot;\r\n };\r\n\r\n const setSelectedTimeslot = useCallback(\r\n (appointmentNr: number, selectedTimeslot: ITimeslot) => {\r\n let appNr = 1;\r\n if (appointmentNr) {\r\n appNr = appointmentNr;\r\n }\r\n\r\n if (selectedTimeslot !== undefined) {\r\n const updatedSelectedTimeslot = updateSelectedTimeslot(\r\n tmstate.selectedTimeslots,\r\n appNr,\r\n selectedTimeslot,\r\n );\r\n tmdispatch({\r\n type: 'SELECTTIMESLOT',\r\n selectedTimeslots: updatedSelectedTimeslot,\r\n });\r\n tmdispatch({\r\n type: 'TIMESLOTCLICKED',\r\n timeslotClicked: true,\r\n });\r\n }\r\n },\r\n\r\n [tmdispatch, tmstate.selectedTimeslots],\r\n );\r\n\r\n const resetSelectedTimeslots = useCallback(\r\n (appointmentNr: number) => {\r\n let appNr = 1;\r\n if (appointmentNr) {\r\n appNr = appointmentNr;\r\n }\r\n\r\n const resetedSelectedTimeslot = resetSelectedTimeslotsWithNr(tmstate.selectedTimeslots, appNr);\r\n tmdispatch({\r\n type: 'SELECTTIMESLOT',\r\n selectedTimeslots: resetedSelectedTimeslot,\r\n });\r\n },\r\n [tmdispatch, tmstate.selectedTimeslots],\r\n );\r\n\r\n const resetAllSelectedTimeslots = useCallback(() => {\r\n tmdispatch({\r\n type: 'SELECTTIMESLOT',\r\n selectedTimeslot: [],\r\n });\r\n }, [tmdispatch]);\r\n\r\n const resetAllAvailableTimeslots = useCallback(() => {\r\n tmdispatch({\r\n type: 'SETAVAILABLETIMESLOTS',\r\n availableTimeslots: [],\r\n });\r\n }, [tmdispatch]);\r\n\r\n const resetAllSelectedResource = useCallback(() => {\r\n tmdispatch({\r\n type: 'SETRESOURCE',\r\n selectedResources: [],\r\n });\r\n }, [tmdispatch]);\r\n\r\n const isAppointmentPostpone = useCallback(() => {\r\n if (tmstate.cancelNewAppointmentData.reason === APPOINTMENT_POSTPONE_REASON) {\r\n return true;\r\n } else {\r\n return false;\r\n }\r\n }, [tmdispatch]);\r\n\r\n const cancelPostponeAppointment = useCallback(async () => {\r\n if (isAppointmentPostpone()) {\r\n const originalAppointmentDetails = getOriginalAppointmentDate(tmstate);\r\n\r\n const cancelRes = await cancelAppointment(\r\n state.sessionId,\r\n tmstate.cancelNewAppointmentData.data.id,\r\n 'Termin verschoben' + originalAppointmentDetails,\r\n alertdispatch,\r\n );\r\n if (cancelRes) {\r\n if (cancelRes.ERROR) {\r\n showAlertMessage({\r\n alertTitle: 'Termin verschieben - Fehler beim absagen des alten Termins',\r\n alertTxt: cancelRes.ERROR,\r\n alertType: AlertType.error,\r\n onHide: AlertOnHide.onlyClose,\r\n alertdispatch: alertdispatch,\r\n });\r\n }\r\n }\r\n }\r\n }, [tmdispatch]);\r\n\r\n const isEarlierAppointmentPossible = useCallback(() => {\r\n if (tmstate.selectedDepartment.fruehererTermin !== undefined) {\r\n return tmstate.selectedDepartment.fruehererTermin;\r\n }\r\n return false;\r\n }, [tmdispatch]);\r\n\r\n const isEarliestAppointmentClicked = useCallback(() => {\r\n if (tmstate.selectedPhysician.id <= 0) {\r\n return true;\r\n }\r\n return false;\r\n }, [tmdispatch]);\r\n\r\n const getAllMakroIdsFromFilteredReasons = useCallback(() => {\r\n let makroId = '0';\r\n const makroIdArray: string[] = [];\r\n\r\n tmstate.filteredReasons.forEach((reason) => {\r\n makroIdArray.push(reason.makroId.toString());\r\n });\r\n\r\n makroId = makroIdArray.join(',');\r\n return makroId;\r\n }, [tmdispatch]);\r\n\r\n const getMakroIdFromResourceServiceType = useCallback(\r\n (resource: any) => {\r\n let foundMakroId = null;\r\n if (resource.serviceType) {\r\n const subCoding = resource.serviceType.find((st: any) => st.coding);\r\n if (subCoding) {\r\n const subExtension = subCoding.coding.find((sc: any) => sc.extension);\r\n if (subExtension) {\r\n const subMakro = subExtension.extension.find((se: any) => se.url && se.url.endsWith('makroId'));\r\n if (subMakro) {\r\n const makroId = subMakro.valueInteger;\r\n if (makroId && makroId > 0) {\r\n foundMakroId = makroId;\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n return foundMakroId;\r\n },\r\n [tmdispatch],\r\n );\r\n\r\n return {\r\n setSelectedResource,\r\n resetSelectedResource,\r\n setAvailableTimeslots,\r\n resetAvailableTimeslots,\r\n getSelectedResource,\r\n getAvailableTimeslots,\r\n getSelectedTimeslot,\r\n setSelectedTimeslot,\r\n resetSelectedTimeslots,\r\n resetAllSelectedTimeslots,\r\n resetAllAvailableTimeslots,\r\n resetAllSelectedResource,\r\n isAppointmentPostpone,\r\n cancelPostponeAppointment,\r\n isEarlierAppointmentPossible,\r\n isEarliestAppointmentClicked,\r\n getAllMakroIdsFromFilteredReasons,\r\n getMakroIdFromResourceServiceType,\r\n };\r\n};\r\n","import ToggleButton from 'react-bootstrap/esm/ToggleButton';\r\nimport ToggleButtonGroup from 'react-bootstrap/ToggleButtonGroup';\r\nimport styled from 'styled-components';\r\n\r\ninterface IToggleButtonProps {\r\n width: string;\r\n marginRight?: string;\r\n marginBottom?: string;\r\n marginTop?: string;\r\n requiredmissing: string;\r\n}\r\n\r\nexport const ToggleButtonGroupFlex = styled(ToggleButtonGroup)`\r\n display: flex;\r\n flex-wrap: wrap;\r\n padding-left: 10px;\r\n`;\r\n\r\nexport const StyledToggleButton = styled(ToggleButton)`\r\n width: ${(props) => (props.width ? props.width : '200px')};\r\n color: ${(props) => (props.requiredmissing === 'true' ? '#7B001D' : 'rgb(36, 94, 173)')};\r\n background-color: ${(props) => (props.requiredmissing === 'true' ? '#FED3D9' : 'rgb(221, 232, 247)')};\r\n border-color: rgb(236, 242, 250);\r\n margin-right: ${(props) => (props.marginRight ? props.marginRight : '3px')};\r\n margin-bottom: ${(props) => (props.marginBottom ? props.marginBottom : '3px')};\r\n margin-top: ${(props) => (props.marginTop ? props.marginTop : '3px')};\r\n word-wrap: break-word;\r\n padding-right: 5px;\r\n padding-left: 5px;\r\n`;\r\n\r\nexport const StyledResetButton = styled(ToggleButton)`\r\n margin-right: 3px;\r\n margin-bottom: 3px;\r\n margin-top: 3px;\r\n padding-left: 28px;\r\n`;\r\n","import { Paths } from '../Routes';\r\n\r\nexport const getHashParam = (hashLocation: string) => {\r\n const hashSub1 = hashLocation.substring(0, 1);\r\n const hashSub2 = hashLocation.substring(0, 2);\r\n let hash = '';\r\n\r\n if (hashSub2 === '#/') {\r\n hash = hashLocation.replace(hashLocation.substring(0, 2), '');\r\n } else if (hashSub1 === '#') {\r\n hash = hashLocation.replace(hashLocation.substring(0, 1), '');\r\n } else {\r\n hash = hashLocation;\r\n }\r\n\r\n const result = hash.split('&').reduce(function (result: any, item: string) {\r\n const parts = item.split('=');\r\n result[parts[0]] = parts[1];\r\n return result;\r\n }, {});\r\n\r\n return result;\r\n};\r\n\r\nexport const getQueryParams = (url: string) => {\r\n const regex = /[?&]([^=#]+)=([^&#]*)/g;\r\n const params: any = {};\r\n let match: any;\r\n\r\n while ((match = regex.exec(url))) {\r\n if (!isNaN(match[2])) {\r\n params[match[1]] = parseInt(match[2]);\r\n } else if (match[2] === 'true' || match[2] === 'false') {\r\n params[match[1]] = match[2] === 'true';\r\n } else {\r\n params[match[1]] = match[2];\r\n }\r\n }\r\n\r\n return params;\r\n};\r\n\r\nexport const getCurrentBaseURL = (currentPathName: string) => {\r\n const completeUrl = window.location.href;\r\n const baseUrl = completeUrl.split(currentPathName)[0];\r\n return baseUrl;\r\n};\r\n\r\nexport const getTermincodeEnrollIdURL = (baseUrl: string, enrollId: string) => {\r\n return baseUrl + Paths.TERMINCODE + '#enrollId=' + enrollId;\r\n};\r\n\r\nexport const addParamToURL = (url: string, key: string, value: string): string => {\r\n let questChar = '?';\r\n let andChar = '&';\r\n\r\n if (url.includes('?')) {\r\n questChar = '';\r\n } else {\r\n andChar = '';\r\n }\r\n\r\n url = url + questChar + andChar + key + '=' + value;\r\n\r\n return url;\r\n};\r\n","import produce from 'immer';\r\nimport * as React from 'react';\r\nimport { isTimeslotDateSet } from '../../components/Calendar/TimeSlots';\r\nimport { AlertOnHide, AlertType } from '../../context/alertContext';\r\nimport { InitialLoginType } from '../../context/loginContext';\r\nimport { InitialTerminierungType } from '../../context/terminierungContext';\r\nimport { appointmentStatus } from '../../globals/global';\r\nimport { IAppointment, getAPKNrFromExtension, getMissingAPKsFromExtension } from '../../utils/appointmentUtils';\r\nimport { responseErrorHandling } from '../../utils/errorHandling';\r\nimport { getFHIRConfig } from './fhirConstants';\r\nimport { setDataFromAppProperties } from '../../utils/pcpUtils';\r\n\r\nconst fhir = require('fhir.js');\r\n\r\nconst moment = require('moment');\r\n\r\nexport interface IAppointmentResult {\r\n key: string;\r\n data: IAppointment[];\r\n}\r\n\r\nexport interface IFreeAppointmentSearch {\r\n makroId: string;\r\n date: string;\r\n physicianId?: string;\r\n selectedReason?: string;\r\n selectedDepartment?: string;\r\n selectedInsurance?: string;\r\n}\r\n\r\nexport const getAppointmentsOfPatient = async (state: InitialLoginType, alertdispatch: React.Dispatch) => {\r\n const sessionId = state.sessionId;\r\n const userId = state.activeUserId;\r\n\r\n return await fhir(getFHIRConfig(sessionId))\r\n .search({\r\n type: 'Appointment',\r\n query: {\r\n actor: 'Patient/' + userId,\r\n _sort: '-date',\r\n },\r\n })\r\n .catch(function (e: any) {\r\n responseErrorHandling({\r\n response: e,\r\n alertdispatch: alertdispatch,\r\n });\r\n });\r\n};\r\n\r\nexport const getFreeAppointmentTimeSlots = async (\r\n state: InitialLoginType,\r\n tmstate: InitialTerminierungType,\r\n freeAppointment: IFreeAppointmentSearch,\r\n) => {\r\n const query: any = {\r\n actor: 'Patient/' + state.activeUserId,\r\n date: freeAppointment.date,\r\n _makroId: freeAppointment.makroId,\r\n _sort: '-date',\r\n };\r\n\r\n if (freeAppointment.physicianId) {\r\n query._physicianId = freeAppointment.physicianId;\r\n }\r\n\r\n if (tmstate.workOnAppointmentNr > 1) {\r\n const foundSelectedTimeslots = tmstate.selectedTimeslots.find((e) => e.appointmentNr === 1);\r\n const selectedTimeslot = foundSelectedTimeslots?.selectedTimeslot;\r\n const res0Date = moment(selectedTimeslot?.start).format('yyyy-MM-DD');\r\n\r\n query.apkNr = tmstate.workOnAppointmentNr - 1;\r\n query.res0 = res0Date;\r\n }\r\n return await fhir(getFHIRConfig(state.sessionId)).search({\r\n type: 'Appointment',\r\n query,\r\n });\r\n};\r\n\r\nexport const getFreeAppointmentTimeSlotsRenew = async (\r\n state: InitialLoginType,\r\n tmstate: InitialTerminierungType,\r\n freeAppointment: IFreeAppointmentSearch,\r\n) => {\r\n const foundSelectedTimeslots = tmstate.selectedTimeslots.find((e) => e.appointmentNr === 1);\r\n const selectedTimeslot = foundSelectedTimeslots?.selectedTimeslot;\r\n\r\n const foundSelectedTimeslots_2 = tmstate.selectedTimeslots.find((e) => e.appointmentNr === 2);\r\n const selectedTimeslot_2 = foundSelectedTimeslots_2?.selectedTimeslot;\r\n\r\n let res1Date = '';\r\n let res0Date = '';\r\n if (isTimeslotDateSet(selectedTimeslot_2)) {\r\n res1Date = moment(selectedTimeslot_2?.start).format('yyyy-MM-DD');\r\n }\r\n if (isTimeslotDateSet(selectedTimeslot)) {\r\n res0Date = moment(selectedTimeslot?.start).format('yyyy-MM-DD');\r\n }\r\n\r\n const makroId = tmstate.cancelNewAppointmentData.data.serviceType[0].coding[0].id;\r\n\r\n let apkNr;\r\n const missingAPK = getMissingAPKsFromExtension(tmstate.cancelNewAppointmentData.data.extension);\r\n if (missingAPK.length > 0) {\r\n apkNr = missingAPK;\r\n } else {\r\n apkNr = getAPKNrFromExtension(tmstate.cancelNewAppointmentData.data.extension);\r\n }\r\n\r\n const query: any = {\r\n actor: 'Patient/' + state.activeUserId,\r\n date: freeAppointment.date,\r\n _makroId: makroId,\r\n _sort: '-date',\r\n apkNr: apkNr,\r\n res0: res0Date,\r\n res1: res1Date,\r\n };\r\n\r\n if (freeAppointment.physicianId) {\r\n query._physicianId = freeAppointment.physicianId;\r\n }\r\n\r\n return await fhir(getFHIRConfig(state.sessionId)).search({\r\n type: 'Appointment',\r\n query,\r\n });\r\n};\r\n\r\nexport const bookAppointment = async (\r\n sessionId: string,\r\n resource: any,\r\n remark: string,\r\n earlierAppointmentWanted: boolean,\r\n id?: string | null,\r\n) => {\r\n const mResource = produce(resource, (draft: any) => {\r\n draft.comment = remark;\r\n draft.earlierAppointmentWanted = earlierAppointmentWanted;\r\n if (id) {\r\n draft.id = id;\r\n }\r\n });\r\n\r\n return await fhir(getFHIRConfig(sessionId))\r\n .create({\r\n type: 'Appointment',\r\n resource: mResource,\r\n })\r\n .catch(function (e: any) {\r\n console.log('An error happened while updating Appointment: \\n', e);\r\n });\r\n};\r\n\r\nexport const bookMultiAppointment = async (\r\n state: InitialLoginType,\r\n resource: any,\r\n resource_2: any,\r\n remark: string,\r\n cancelNewAppointmentData: any,\r\n) => {\r\n const appointments: any[] = [];\r\n\r\n const request = {\r\n method: 'POST',\r\n url: 'Appointment',\r\n };\r\n\r\n if (cancelNewAppointmentData.data?.contained) {\r\n /* Ersatztermin Variante */\r\n let mResource;\r\n if (resource.status === 'booked' || resource.status === 'fulfilled') {\r\n mResource = produce(resource_2, (draft: any) => {\r\n draft.comment = remark;\r\n draft.status = resource.status;\r\n draft.contained = resource;\r\n });\r\n } else if (resource_2.status === 'booked' || resource_2.status === 'fulfilled') {\r\n mResource = produce(resource, (draft: any) => {\r\n draft.comment = remark;\r\n draft.status = resource_2.status;\r\n draft.contained = resource_2;\r\n });\r\n }\r\n\r\n appointments.push({\r\n request: request,\r\n resource: mResource,\r\n });\r\n } else {\r\n /* Normale Variante */\r\n const mResource = produce(resource, (draft: any) => {\r\n draft.comment = remark;\r\n draft.status = 'booked';\r\n });\r\n const mResource_2 = produce(resource_2, (draft: any) => {\r\n draft.comment = remark;\r\n draft.status = 'booked';\r\n });\r\n\r\n appointments.push({\r\n request: request,\r\n resource: mResource,\r\n });\r\n appointments.push({\r\n request: request,\r\n resource: mResource_2,\r\n });\r\n }\r\n\r\n const trBunde = {\r\n resourceType: 'Bundle',\r\n entry: appointments,\r\n type: 'transaction',\r\n };\r\n\r\n const config = {\r\n ...getFHIRConfig(state.sessionId),\r\n };\r\n\r\n return await fhir(config)\r\n .transaction({\r\n type: 'Bundle',\r\n id: Math.random().toString(),\r\n resource: trBunde,\r\n })\r\n .catch(function (e: any) {\r\n console.log('An error happened while updating Appointment: \\n', e);\r\n });\r\n\r\n // const mResource = produce(resource, (draft: any) => {\r\n // draft.comment = remark;\r\n // });\r\n\r\n // return await fhir(getFHIRConfig(state.sessionId))\r\n // .create({\r\n // type: 'Appointment',\r\n // resource: mResource,\r\n // })\r\n // .catch(function (e: any) {\r\n // console.log('An error happened while updating Appointment: \\n', e);\r\n // });\r\n};\r\n\r\nexport const cancelAppointment = async (\r\n sessionId: string,\r\n id: string,\r\n comment: string,\r\n alertdispatch: React.Dispatch,\r\n) => {\r\n const cmt = comment ? comment : 'Absage von Patient';\r\n return await fhir(getFHIRConfig(sessionId))\r\n .update({\r\n type: 'Appointment',\r\n id,\r\n resource: {\r\n id,\r\n comment: cmt,\r\n status: 'cancelled',\r\n resourceType: 'Appointment',\r\n },\r\n })\r\n .catch(function (e: any) {\r\n responseErrorHandling({\r\n response: e,\r\n alertdispatch: alertdispatch,\r\n alertMessage: {\r\n alertTitle: 'Termin stornieren',\r\n alertTxt: 'Es ist ein Fehler beim stornieren des Termins aufgetreten',\r\n alertType: AlertType.error,\r\n onHide: AlertOnHide.onlyClose,\r\n },\r\n });\r\n });\r\n};\r\n\r\nexport const structureAppointments = (appointments: IAppointment[]) => {\r\n const resultsUpcomming: IAppointmentResult[] = [];\r\n const resultsPast: IAppointmentResult[] = [];\r\n\r\n const todayAppt: IAppointment[] = [];\r\n const futureAppt: IAppointment[] = [];\r\n const plannedWithoutDateAppt: IAppointment[] = [];\r\n const pastAppt: IAppointment[] = [];\r\n const incompleteAppt: IAppointment[] = [];\r\n const incompleteApptPast: IAppointment[] = [];\r\n let incompleteApptTotal: IAppointment[] = [];\r\n const canceledAppt: IAppointment[] = [];\r\n\r\n const today = moment();\r\n // console.log('today: ', today.format());\r\n\r\n appointments.forEach((item) => {\r\n const appointment = item.resource;\r\n const dateStart = moment(appointment.start);\r\n const dateEnd = moment(appointment.end);\r\n\r\n // console.log('appointment dateEnd: ', dateEnd.format());\r\n // console.log('same? ', dateEnd.isBefore(today, 'hour'));\r\n\r\n if (appointment.status === appointmentStatus.enteredInError) {\r\n if (appointment.start === undefined || dateStart.isSame(today, 'day') || dateStart.isAfter(today)) {\r\n incompleteAppt.push(appointment);\r\n } else {\r\n incompleteApptPast.push(appointment);\r\n }\r\n incompleteApptTotal = incompleteAppt.concat(incompleteApptPast);\r\n } else if (appointment.status === appointmentStatus.cancelled) {\r\n canceledAppt.push(appointment);\r\n } else if (appointment.start === undefined) {\r\n plannedWithoutDateAppt.push(appointment);\r\n } else {\r\n // if (dateStart.isSame(today) || (dateStart.isSameOrAfter(today) && dateEnd.isBefore(today))) {\r\n if (dateStart.isSame(today, 'day')) {\r\n todayAppt.push(appointment);\r\n } else if (dateStart.isAfter(today) && dateEnd.isAfter(today)) {\r\n futureAppt.push(appointment);\r\n } else if (dateStart.isBefore(today) && dateEnd.isSameOrAfter(today)) {\r\n todayAppt.push(appointment);\r\n } else {\r\n pastAppt.push(appointment);\r\n }\r\n }\r\n });\r\n\r\n resultsUpcomming.push({\r\n key: 'Heute (' + todayAppt.length + ')',\r\n data: todayAppt,\r\n });\r\n resultsUpcomming.push({\r\n key: 'Kommende Termine (' + futureAppt.length + ')',\r\n data: futureAppt,\r\n });\r\n resultsUpcomming.push({\r\n key: 'Geplante Termine ohne Uhrzeit (' + plannedWithoutDateAppt.length + ')',\r\n data: plannedWithoutDateAppt,\r\n });\r\n\r\n resultsUpcomming.push({\r\n key: 'Unvollständige Termine (' + incompleteAppt.length + ')',\r\n // data: incompleteAppt,\r\n data: incompleteApptTotal,\r\n });\r\n\r\n resultsPast.push({\r\n key: 'Vergangene Termine (' + pastAppt.length + ')',\r\n data: pastAppt,\r\n });\r\n\r\n resultsPast.push({\r\n key: 'Abgesagte Termine (' + canceledAppt.length + ')',\r\n data: canceledAppt,\r\n });\r\n\r\n // resultsUpcomming.forEach((obj) => obj.data.forEach((app) => (app.isCancelable = true)));\r\n resultsUpcomming.forEach((obj) => {\r\n obj.data.forEach((app) => {\r\n /* if appointment is an incomplete appointment, check if cancellable, otherwise an upcomming appointment is always cancellable*/\r\n if (app.status === appointmentStatus.enteredInError) {\r\n app.isInError = true;\r\n app.extension.forEach((ext: any) => {\r\n if (ext.url.endsWith('isCancellable')) {\r\n app.isCancelable = ext.valueBoolean;\r\n }\r\n });\r\n } else {\r\n app.isCancelable = true;\r\n }\r\n });\r\n });\r\n\r\n resultsPast.forEach((obj) => {\r\n obj.data.forEach((app) => {\r\n /* if appointment is an incomplete appointment, check if cancellable, otherwise an upcomming appointment is always cancellable*/\r\n if (app.status === appointmentStatus.enteredInError) {\r\n app.isInError = true;\r\n app.extension.forEach((ext: any) => {\r\n if (ext.url.endsWith('isCancellable')) {\r\n app.isCancelable = ext.valueBoolean;\r\n }\r\n });\r\n } else {\r\n app.isCancelable = false;\r\n }\r\n });\r\n });\r\n\r\n // console.log('upcoming ', resultsUpcomming);\r\n // console.log('resultsPast', resultsPast);\r\n\r\n return [resultsUpcomming, resultsPast];\r\n};\r\n","import { createContext } from 'react';\r\nimport { IURLToCallResponse } from '../container/Splashscreen/CheckInSplashscreen';\r\n\r\nexport type InitialCheckInType = {\r\n urlToCallResponse: IURLToCallResponse;\r\n key: string;\r\n reason: string;\r\n requesttype: string;\r\n wpName: string;\r\n userId?: string;\r\n t0?: string;\r\n otp?: string;\r\n};\r\n\r\nexport const initialCheckInState = {\r\n urlToCallResponse: {\r\n state: '',\r\n url: '',\r\n eGK: '',\r\n kvBarcode: '',\r\n birthday: '',\r\n city: '',\r\n country: '',\r\n firstName: '',\r\n gender: '',\r\n street: '',\r\n houseNumber: '',\r\n nameLast: '',\r\n zip: '',\r\n insuranceNr: '',\r\n insuranceName: '',\r\n language: '',\r\n },\r\n key: '',\r\n reason: '',\r\n requesttype: '',\r\n wpName: '',\r\n userId: '',\r\n t0: '',\r\n otp: '',\r\n};\r\n\r\nconst CheckInContext = createContext<{\r\n checkinstate: InitialCheckInType;\r\n checkindispatch: React.Dispatch;\r\n}>({\r\n checkinstate: initialCheckInState,\r\n checkindispatch: () => null,\r\n});\r\n\r\nexport default CheckInContext;\r\n"],"sourceRoot":""}