{"version":3,"sources":["components/Buttons/ToggleButtonGroupCst.tsx","hooks/usePersonalData.ts","services/fhir/FHIRAppointment.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","context/checkInContext.ts","components/Div/StyledDiv.tsx","components/Calendar/TimeSlots.tsx","hooks/useAppProperties.ts","services/fhir/FHIRDiagnosticReports.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","context/alertContext.ts","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","services/fhir/FHIRQuestionnaire.ts","context/themeContext.ts","context/sigpadContext.ts","utils/chartUtils.ts","utils/dateUtils.ts","components/IFrame/IFramePDF.tsx","components/Buttons/StyledButton.tsx","container/Mainscreen/FullScreenImpressum.tsx","components/Cols/StyledCol.tsx","components/Modals/PDFModal/PDFModal.tsx","components/Buttons/SelectButton.tsx","container/PersonalDataSummary/PersonalDataSummary.tsx","utils/documentUtils.ts","components/Modals/BlockingAppointmentModal/BlockingAppointmentModal.tsx","context/loginContext.ts","components/AppointmentPersonalData/AppointmentPersonalData.tsx","components/Div/DragNDropArea.tsx","components/SidebarItems/Avatar.tsx","container/Sidebar/Sidebar.tsx","hooks/barcodeKeyHandler.ts","components/Tabs/StyledNavButton.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/CheckInSplashscreenMultifragebogenWaiting.tsx","container/Splashscreen/CheckInSplashscreen.tsx","container/Splashscreen/CheckInSplashscreenWaiting.tsx","container/Splashscreen/LoggedOutSplashscreen.tsx","components/Tables/VAL/VALTable.tsx","container/Tables/TableVAL/TableVAL.tsx","Routes.tsx","components/Text/TextSwitch.tsx","components/Buttons/EncounterTitle.tsx","components/ProfileSwitch/PatientSwitch.tsx","components/ProfileSwitch/ProfileSwitch.tsx","hooks/useNavbar.ts","container/Navbar/Navbar.tsx","context/dokumenteContext.ts","utils/appointmentUtils.ts","components/AppointmentCalendar/AppointmentCalendar.tsx","components/AppointmentCalendar/AppointmentCalendarWithHeadline.tsx","context/iframeContext.ts","services/RestServices.ts","components/Modals/PDFModal/EmbeddedPDF.tsx","components/Modals/PDFModal/EmbeddedPDFInModal.tsx","globals/theme.ts","components/Div/ImageDiv.tsx","components/Modals/ForeignQRModal/ForeignQRModal.tsx","components/Toast/ErrorToast.tsx","container/Fragebogen/FragebogenDetail.tsx","utils/questionnaireUtils.ts","utils/photoUtils.ts","hooks/useLoadQuestionnaireAnswers.ts","components/RefreshButton/RefreshButton.tsx","components/Modals/TelephoneModal/TelephoneModal.tsx","services/VideochatService.ts","context/terminierungContext.ts","hooks/useSecurityItems.ts","hooks/useScreenResolution.ts","components/Booking/EarlierAppointment.tsx","components/Booking/Booking.tsx","hooks/usePatientSwitch.ts","components/Calendar/StyledCalendar.tsx","components/Calendar/Calendar.tsx","components/ExtraLinks/ExtraLinks.tsx","hooks/useProfileSwitch.ts","container/Navbar/StyledNavbar.tsx","components/IFrame/IFrame.tsx","utils/screenResolution.ts","utils/executeRuleUtils.ts","components/LanguageSwitch/LanguageSwitch.tsx","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","utils/alertHandling.ts","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","components/Stepper/StepperCheckIn.tsx","context/appPropsContext.ts","components/Inputs/RemarkInputField.tsx","components/AppointmentPersonalData/AppointmentPersonalDataWithCardRead.tsx","components/AppointmentPersonalData/AppointmentPersonalDataWithLogin.tsx","components/Modals/CancelConfirmModal/CancelConfirmModal.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","languages/languageMap.ts","hooks/useLanguage.ts","components/Cards/StyledCard.tsx","components/Rows/StyledRow.tsx","components/Modals/StyledModal/StyledModal.tsx","utils/pcpUtils.ts","components/QRCode/QRCodeForApp.tsx","components/Impressum/Impressum.tsx","components/StyledForm/SyledForm.tsx","components/Modals/WebcamModal/WebcamModal.tsx","components/Toast/ConfirmationToast.tsx","container/Fragebogen/MultiFragebogen.tsx","utils/errorHandling.ts","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","services/fhir/fhirConstants.ts","components/Tooltip/MyTooltip.tsx","components/Header/Header.tsx","hooks/useGoogleAnalytics.ts","globals/global.ts","container/Navbar/NavbarBottom.tsx","container/Mainscreen/Mainscreen.tsx","context/videochatContext.ts","hooks/useAppointmentSelection.ts","components/Combobox/Combobox.tsx","utils/urlUtils.ts"],"names":["ToggleButtonGroupFlex","styled","ToggleButtonGroup","StyledToggleButton","ToggleButton","props","width","requiredmissing","marginRight","marginBottom","marginTop","StyledResetButton","usePersonalData","useContext","TerminierungContext","tmstate","tmdispatch","state","LoginContext","checkinstate","CheckInContext","useAppointmentSelection","getSelectedTimeslot","getSelectedResource","shouldCreateAccount","personalData","username","length","password","getAndSetPersonalData","useCallback","sessionId","activeUserId","practitionerRoleId","a","getPractitionerResource","getPatientResource","patdata","patdataExt","extractPatData","type","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","selectedTimeslot","selectedResource","isTimeslotDateSet","produce","draft","start","end","blockId","identifier","id","system","value","getEnrollDataContactPerson","contactPerson","enrollData","nameFirst","makroId","undefined","selectedReason","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","enrollDataContactPerson","personalDataContactPerson","fhir","require","moment","getAppointmentsOfPatient","alertdispatch","userId","getFHIRConfig","search","query","actor","_sort","catch","e","responseErrorHandling","getFreeAppointmentTimeSlots","freeAppointment","date","_makroId","physicianId","_physicianId","workOnAppointmentNr","foundSelectedTimeslots","selectedTimeslots","appointmentNr","res0Date","format","apkNr","res0","getFreeAppointmentTimeSlotsRenew","foundSelectedTimeslots_2","selectedTimeslot_2","res1Date","cancelNewAppointmentData","data","serviceType","coding","missingAPK","getMissingAPKsFromExtension","extension","getAPKNrFromExtension","res1","bookAppointment","resource","mResource","comment","create","issue","diagnostics","error","console","log","bookMultiAppointment","resource_2","appointments","request","method","url","contained","status","push","mResource_2","trBunde","resourceType","entry","config","transaction","Math","random","cancelAppointment","cmt","update","alertMessage","alertTitle","alertTxt","alertType","AlertType","onHide","AlertOnHide","onlyClose","structureAppointments","resultsUpcomming","resultsPast","todayAppt","futureAppt","plannedWithoutDateAppt","pastAppt","incompleteAppt","incompleteApptPast","incompleteApptTotal","canceledAppt","today","forEach","item","appointment","dateStart","dateEnd","appointmentStatus","enteredInError","isSame","isAfter","concat","cancelled","isBefore","isSameOrAfter","key","obj","app","isInError","ext","endsWith","isCancelable","valueBoolean","ErrorBoundary","hasError","errorInfo","stack","componentStack","this","setState","children","Component","AlertModal","navigate","useNavigate","AlertContext","alertstate","handleLogoutAfterIdleTime","useHandleLogoutAfterIdleTime","useState","errorType","setErrorType","useEffect","info","StyledModal","show","showModal","size","centered","Modal","Header","doBig","Title","style","fontSize","Body","Alert","variant","doHTML","dangerouslySetInnerHTML","__html","Footer","StyledButton","onClick","resetShowAlertMessage","custom","onHideCustom","goToHome","Paths","HOME","reload","window","location","buttonName","alertReducer","action","appPropsReducer","appPropsSet","Appointment","skipBehandlersuche","AppointmentSummary","behandler","fach","pflege","raum","standort","RegistrationMandFields","birthDate","phone","privacyTerms","RegistrationVisibleFields","RegistrationReadOnlyFields","allowAccountAfterAppointment","allowAccountCreateDirect","allowAppointments","allowAppointmentsEinweiser","allowAppointmentsWithoutLogin","allowDirectAppointments","allowDirectAppointmentsWithoutLogin","allowLogin","allowVideo","allowVideoWithoutLogin","allowAccountInAnmeldeworkflow","allowContactPerson","brandingBytes","brandigType","extraLinks","customTexts","showMobileQR","jitsiDomain","jitsiOptions","impressum","anmeldeContexts","countDaysToVisualize","extendedPhysicians","allowChat","googleAnalyticsID","tileTexts","smtpUser","mailFromAddress","possibleCountries","availableLanguages","disableTerms","fullscreenMode","checkinReducer","urlToCallResponse","reason","requesttype","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","activeLanguage","questionnaireReducer","qData","selectedQuestionnaire","selectedAnswers","questionnaireBody","isExternalRequest","externalUserId","externalOTP","externalT0","externalBaseURL","linkId","text","valueString","valueReference","reference","authored","context","meta","versionId","lastUpdated","questionnaire","source","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","filteredReasons","countAPKs","oneMacro","macroCode","macroType","availableTimeslots","timeslotClicked","selectedResources","renewAppointment","enrollCode","patNameFirst","patNameLast","scheduleTime","participant","waitNumber","requestFromDirectLink","isToday","res","changePersonalData","canceledAppointment","journeyData","site","hints","reasons","makroCode","makroName","pFilter","aFilter","reasonCode","reasonId","reasonName","lines","pict","selectedDeparment","themeReducer","theme","navbarCollapsed","videochatReducer","incomingCall","callAccepted","caller","remoteSid","roomName","jitsiAllowed","wsconnect","readyState","peerConnection","close","localStream","getTracks","track","stop","remoteStream","chatMessages","numberUnreadMessages","appointmentChat","lastIncomingAppChatMsg","incomingMessages","iceServer","lastIncomingTextChatMsg","appChat","map","chatOpen","appointmentChatEntry","getAppointmentChatEntry","numberUnreadMsg","appChatValue","newAppointmentChat","numberUnread","audioMuted","jitsiError","GlobalStyles","createGlobalStyle","Inter","Roboto","App","locale","useReducer","initialLoginState","dispatch","initialAlertState","initialVideochatState","vsstate","vsdispatch","initialTerminierungState","initialDokumenteState","docstate","docdispatch","initialQuestionnaireState","qstate","qdispatch","InitialAppPropsState","apstate","apdispatch","initialThemeState","themestate","themedispatch","initialExecuteRuleState","executerulestate","executeruledispatch","initialSigPadState","sigpadstate","sigpaddispatch","initialIFrameState","iframestate","iframedispatch","initialCheckInState","checkindispatch","useLocation","useLanguage","getSystemLanguageData","setSystemLanguage","refreshPage","getProperties","getAppProperties","propRes","setDataFromAppProperties","ReactGA","initialize","showAlertMessage","systemLanguage","allowVideochatMessages","hashParams","getQueryParams","user","pwd","replace","hash","lastIndexOf","setRuleProperties","pTheme","getThemeConfig","getTheme","Provider","className","getAppVersion","Boolean","hostname","match","ReactDOM","render","document","getElementById","navigator","serviceWorker","ready","then","registration","unregister","createContext","LeftDiv","div","prop","marginLeft","LeftDivMain","AnmeldBaseDiv","AnmeldBaseHeader","AnmeldBaseHeaderLogin","LeftDivCheckIn","RightDiv","CenterDiv","height","margin","paddingTop","paddingBottom","paddingLeft","paddingRight","overflowX","overflowY","color","backgroundColor","zIndex","position","bottom","top","right","left","maxHeight","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","TimeSlots","AppPropsContext","setSelectedResource","setSelectedTimeslot","getAvailableTimeslots","getMakroIdFromResourceServiceType","t","blockingModalShow","setBlockingModalShow","getTime","resource_1","unblockAppointment","clickedTimeslot","timeslot","supressDuration","updatedResource","setReplacedRoomForResource","replacedRoom","setReplacedStartEndForResource","setReplacedPractitionerForResource","replacedPractitioner","setReplacedCareUnitForResource","replacedCareUnit","setReplacedDepartmentForResource","replacedDepartment","setReplacedServiceTypeForResource","replacedServiceType","blockAppointment","success","filteredSelectedReason","filter","getTimeRange","slot","selectedDay","getGermanDateFormatFromString","xs","sm","md","lg","xl","availableTimeslot","index","display","placement","overlay","selected","block","displayAllTimeslots","useAppProperties","themeContext","ThemeContext","screenSize","getAndSetAppProperties","getImpressum","impressumLink","datenschutzLink","textColor","button","secondary","isExtendedPhysicians","isFullscreenMode","enableFullscreenMode","disableFullscreenMode","getCountDaysToVisualize","getPossibleCountries","split","DIAGNOSTIC_REPORT","getDiagnosticReportsOfPatient","patient","getDiagnosticReportsByCategory","category","_targetDevice","getDiagnosticReport","documentId","authData","myAuthData","read","uploadPDF","file","dataTrim","dataResource","effectiveDateTime","presentedForm","contentType","sendPhotoDiagnosticReport","imageArr","img","photoResource","QuestionnaireContext","StyledBadge","Badge","borderwidth","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","getNewPlannedStudiesEntry","plannedStudy","valueCoding","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","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","loadingText","ExecuteRuleContext","playSound","audioFile","load","currentTime","muted","audioPromise","play","err","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","startTime","modifierExtension","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","ERROR","InpatientAppointment","inpatientAppointment","Participants","showDepartment","showCareUnit","showRoom","showPractitioner","ptype","getParticipantType","displayValue","getLongNameFromAppointmentData","APPOINTMENTTYPE_DEPARTMENT","passive","APPOINTMENTTYPE_CAREUNIT","APPOINTMENTTYPE_ROOM","APPOINTMENTTYPE_PRACTITIONER","renderActor","PostponeAppointment","postponeAppointment","APPOINTMENT_POSTPONE_REASON","DetailsButtonParentDiv","DetailsButton","displayParticipants","sortedParticipant","sortParticipantsForCard","allParticipants","participants","AppointmentCard","setChatOpen","isInpatient","getEncounterTitle","department","justifyContent","cardPosition","alignItems","bg","cardWidth","arrived","showIcon","isAppSeriesAppointment","showPostponeAppointmentIcon","showChatIcon","getSelectedReasonFromAppointment","macroName","getMacroNameFromAppointment","showReason","QUESSTIONNAIRE_RESPONSE","fetchOptions","headers","Accept","Authorization","getQuestionnaires","patRoleId","requestTime","toISOString","getQuestionnaireById","getQuestionnaireByFHIRId","fhirId","getQuestionnaireContent","getQuestionnaireOTPAuth","session","baseUrl","baseURL","sendQuestionnaire","targetPatId","qr","getFhirURL","baseurl","getBaseURL","fetch","body","updateQuestionnaireContent","SigPadContext","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","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","diff","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","hour","minute","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","isDateBeforeToday","getCalculatedElapsedTimeFromEndFormat","times","fromNow","getCurrentDateTime","setTimeOnDate","timeParts","set","parseInt","getCurrentTime","monthNameConverter","month","convertedMonth","getWeekDay","IFramePDF","useResizedScreenResolution","buttonProps","bp","primary","colorHover","borderRadiusTopLeft","borderRadiusTopRight","borderRadiusBottomLeft","borderRadiusBottomRight","border","borderColorHover","boxShadow","warning","danger","borderHover","FullScreenImpressum","borderLeft","MainHeaderCol","ChartsHeaderCol","MainHeaderButtonCol","ChartsButtonCol","AppointmentCardHeaderCol","AppointmentCardHeaderStatusButtonCol","AppointmentCardDateCol","AppointmentCardStatusCol","AppointmentCardButtonCol","StyledColNoPadding","DateSwitcherTimeslotCol","DateSwitcherTimeslotColStartEnd","DateCol","DatePlaceholderCol","QuestionnaireSwitcherColStartEnd","QuestionnaireSwitcherColTitle","ButtonColLeft","ButtonColMiddle","ButtonColRight","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","PersonalDataSummary","DataItem","ContactPersonSummary","getGenderDE","studyList","getPlannedStudiesList","getPDFDataFromDiagnosticReportResponse","filename","pdfsrc","signPosData","diagReport","BlockingAppointmentModal","changedFromUser","AppointmentPersonalData","allCurrentStudies","setAllCurrentStudies","mandFields","setMandFields","cbxRegistrationSelected","setCbxRegistrationSelected","cbxPrivacyPolicySelected","setCbxPrivacyPolicySelected","cbxContactPerson","setCbxContactPerson","sendGoogleAnalyticsPageView","useGoogleAnalytics","page","allStudies","participated","isPhysPat","formatBirthdayForFormik","isValid","dateFormated","labelName","isFieldReadOnly","registrationReadOnlyField","CancelButton","showCancelButton","handleCancel","BackButton","showBackButton","handleBack","NextButton","showNextButton","buttonEnabled","showPrivacyPolicyCbx","nextButtonEnabled","SubmitButton","showFormGroupInsuranceNr","propsFG","as","values","handleChange","isInvalid","errors","readOnly","Feedback","showFormGroupInsuranceName","showFormGroupLastName","showFormGroupBirthday","getGenderOptions","genderSelect","showFormGroupGender","createSelectComboboxOption","isSearchable","setFieldValue","showFormGroupLanguage","showFormGroupTelephone","showFormGroupMobilePhone","showFormGroupAcademicTitle","showFormGroupEmail","showFormGroupZip","showFormGroupCity","showFormGroupStreet","showFormGroupHouseNr","handleCbxRegistrationSelected","handleCbxPrivacyPolicySelected","handleCbxContactPersonSelected","FormGroupRegistrationCbx","showRegistrationCbx","Check","checked","showFormGroupRegistrationUsername","showFormGroupRegistrationPassword","getCountryOptions","countries","createSelectComboboxOptions","showFormGroupCountry","showFormGroupStudies","cbxId","isParticipated","foundStudy","Input","modifiedAllCurrentStudies","studyChange","Label","FormGroupContactPersonCbx","showFormGroupLastName_ContactPerson","lastNameCP","showFormGroupFirstName_ContactPerson","firstNameCP","showFormGroupTelephone_ContactPerson","phoneCP","showFormGroupEmail_ContactPerson","emailCP","showFormGroupCountry_ContactPerson","countryCP","showFormGroupZip_ContactPerson","zipCP","showFormGroupCity_ContactPerson","cityCP","showFormGroupStreet_ContactPerson","streetCP","showFormGroupHouseNr_ContactPerson","houseNumberCP","setFirstNameCP","setLastNameCP","setEmailCP","setTelephoneCP","setStreetCP","setHouseNrCP","setCityCP","setZipCP","setCountryCP","ContactPerson","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","href","rel","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","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","isTableIncluded","handleValueChange","ActivityCharts","setChartData","getData","BloodSugarCharts","targetCeiling","BodyFatCharts","FLICharts","SAMCharts","WeightCharts","AppCharts","chartType","IFrameContent","formId","n","patId","iFrame","setIFrame","iFrameSrc","getLinkForIFrame","getIFrameURL","iframeResp","IFrameFragebogen","Navbar","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","menuPortalTarget","querySelector","anmeldKatOptions","anmeldeContext","optionSelect","getAnmeldKatOptions","option","handleSetAnmeldKat","GoogleAnalyticsCategory","HOMESCREEN","GoogleAnalyticsAction","CLICK","NEUER_ACCOUNT_WL","Home","isLanguageChangedFromUser","showLogin","showEnrollCodeBox","showQRCodeForApp","row_lg","homeElements","setHomeElements","homeEle","row_lg_counter","brandingSrc","LanguageSwitch","Image","ExtraLinks","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","fromOnlinebuchung","visibleTiles","setVisibleTiles","checkedAppointmentData","setCheckedAppointmentData","scanInputRefUEB","scanInputRefOBU","scanInputRefTUE","bc","barcodeScannerCallback","ueb","obu","tue","tileUEB","tileOBU","tilePAN","tileTUE","handleUrlTextAfterScan","scannedText","fromTUE","urlStart","indexOf","urlToCall","hashParamsResponse","checkAppointment","getOTPFromAppID","secret","newOTPData","QUESTIONNAIRE_WL","loadingSplashWait","LottieSplashWait","onclickMainsplacscreen","getURLToCallWorkflow","getURLToCall","stayInWorkflow","handleClickWithCard","UeberweisungTile","htmlBeforeOrAfter","UEBBEFORE","marginBlockEnd","autoFocus","UEBAFTER","OnlinebuchungTile","OBUBEFORE","OBUAFTER","cancelClick","PraxisanmeldungTile","PANBEFORE","PANAFTER","html","TerminueberpruefenTile","TUEBEFORE","TUEAFTER","mainWindow","firstInp","focus","firstButton","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","TextSwitch","textParts","setText","intervalId","nextIndex","switchText","intervalSec","EncounterTitle","smallScreen","PatientSwitch","allPatients","setAllPatients","setNewPatient","usePatientSwitch","getDropdownItems","handlePatSwitch","pat","allItems","Array","isArray","Dropdown","Item","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","StyledNavbar","fixed","Brand","alt","Collapse","navbarScroll","to","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","getEnrollCodeFromExtension","getIdentifierId","dataIdentifier","originalId","getSelectedReasonDataFromAppointment","selectedReasonObj","getMacroNameFromSelectedResource","isAppSeries","getStickyPosition","getTabHeight","updateSelectedResources","currentSelectedResources","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","appointmentName","getDayTimeTextForLanguage","IFrameContext","POST","GET","getFetchOptions","addContextToUrl","addParamToURL","getContextConfig","addLanguageToUrl","authorizeAsync","getRestURL","bodyObj","token","fa2Secret","doubleOptInCode","releaseCode","json","getParticipants","resp","re","searchAppointments","slice","jbody","from","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","verifyCovidCert","qrContent","taskList","callTaskListFunction","callFunction","parameter","auth","authorization","wp","bh","reportData","report","getPhysiciansFor","currentPhys","scantxt","pushActivePatient","checkEnrollCodeViaWS","isActive","pdfjs","GlobalWorkerOptions","workerSrc","EmbeddedPDF","numPages","setNumPages","pageNumber","setPageNumber","scale","setScale","initScaleDone","setInitScaleDone","isHorizontalScrollable","setIsHorizontalScrollable","clickedClear","setClickedClear","clickedSign","setClickedSign","signPos","setSignPos","pdfPage","isWithModalMsg","resizeObserver","ResizeObserver","getSignRectPos","observe","disconnect","changePage","prevPageNumber","signDone","isPageSignable","modalMsg","getModalMsg","transformDim","dim","parseFloat","isNaN","NaN","parentElement","scrollTop","d0x","offsetLeft","d0y","offsetTop","bx","by","offsetHeight","ay","ax","transformedSignPosData","onLoadSuccess","onLoadError","parentDiv","pageScale","clientHeight","originalHeight","scrollElement","scrollLeft","scrollWidth","clientWidth","onPageLoadSuccess","clickClear","clickSign","onClickClear","showButtons","transition","borderStyle","previousPage","verticalAlign","nextPage","minWidth","newScale","zoomOut","zoomIn","showDownloadButton","base64WithoutContentType","binary","atob","len","buffer","ArrayBuffer","Uint8Array","charCodeAt","linkElement","createElement","hrefUrl","blob","Blob","URL","createObjectURL","setAttribute","clickEvent","MouseEvent","bubbles","cancelable","dispatchEvent","ex","handleDownload","handleClear","handleSign","showCloseButton","EmbeddedPDFInModal","scrollable","themeName","toUpperCase","betaTheme","pcpTheme","pcpV2Theme","pcpColors","pcpValues","passiveColor","card","boxShadowHover","strokeWidth","alertColor","mainColorHover","accordionMenu","newMessageBadge","step","active","completed","buttonColor","sidebar","itemBackground","list","medication","acceptColor","rejectColor","laterColor","resultAcceptColor","hint","pcpV2Colors","pcpV2Values","betaColors","betaValues","imageProps","textDirection","imageDescProps","ImageDiv","ImageDescDiv","StyledImageFloatDiv","direction","ImageFloatDiv","QImageDiv","ForeignQRModal","closeButton","ErrorToast","Toast","onClose","delay","autohide","QDiv","QCheckboxRow","RequiredAsterisk","DeactivatedThumb","ActivatedThumb","calcInputWidth","maxLength","NOINFO_CBX_VALUE","steps","setSteps","actualStep","setActualStep","answers","setAnswers","initialAnswers","setInitialAnswers","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","reset","respJson","respStatus","responseError","severity","makroData","getPostStoreStartAppointmentSearch","getPostStoreDocumentRefId","submitResp","sendQ","isDraft","getNumberOfDrafts","firstSaveResp","firstSaveRespJson","respId","respData","stepData","handleQuestionnaireSave","updateResp","saveQ","scrollToRequiredMessageAlert","scrollToTopOfPage","verifyCovidCertResponse","covidCertValueSuccessWorkflow","handleClosePDFExternalView","isCheckin","resetPDFModalShow","handleQuestionnairePDFClose","activeStepNumber","handleSignDone","handleQuestionnaireFinished","handleClosePDFInternal","handleButtonFinish","pageNr","allSteps","requiredCheckItem","doCheck","enableWhen","qEnableWhenHandling","answerEnableWhenCheck","foundAnswer","requiredCheck","stepItems","subItem","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","lidInitial","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","getAnswerInitialIntegerOption","feedbackMessage","fieldWidthType","getExtensionAppearanceValue","fieldWidth","wrapperWidth","invalid","currentSetAnswer","decimalInput","feedbackMessageRange","onBlur","qTypeString","maxLengthStr","inputWidth","appearance","initialString","valueStr","getAnswerInitialTextOption","qTypeChoice","allOptions","rowLimit_sm","rowLimit_lg","rowLimit_md","rowLimit_xs","rowLimit_xl","transform","maxValue","myOptions","dropdownWidth","o","setAnswerDropdownOption","initialCoding","requiredMissing","allOptionTexts","itemOptions","getAllOptionTextsAsArray","buttonWidthVal","buttonText","maxWordLength","longestWord","findLongestWord","buttonWidth","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","nm","sc","tr","tc","r","fr","df","du","setCovidCertValues","handleSelectedPhoto","buttonType","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","hidden","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","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","qTypeDisplay","rows","qTypeText","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","ConfirmationToast","hasOwnProperty","responseData","resourceFromEntry","round","getExtensionOperator","andExpArray","minutes","presetVal","hasSingleSelection","opt","minValue","rowtype","stepWidth","sizeVal","numberOfDrafts","getDraft","resultExtension","positionVal","appearanceValue","resourceData","tempStorageDisabled","questionnaireResponse","questData","_valueString","extValStr","fullSrc","dataSrc","RefreshButton","iconSize","handleClick","TelephoneModal","onCallHide","onCallOff","onCallAccept","pingInterval","clearPingInterval","leaveSession","initWebSocket","wsLocation","WebSocket","onopen","wsc","isWebApp","tellEnrollId","lnr","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","reasonMainCode","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","windowSize","setWindowSize","handleResize","innerWidth","innerHeight","factor","EarlierAppointmentPossible","setter","cbxValue","setCbxValue","Booking","multiAppointment","locationDetail","locationRoom","appointmentCardData","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","firstDayOfMonth","setFirstDayOfMonth","freeAppointments","setFreeAppointments","initMonthDone","setInitMonthDone","showPossibleNoFreeAppointmentsPopUp","setShowPossibleNoFreeAppointmentsPopUp","getFreeAppointments","freeAppointmentSearch","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","linkObj","restmethod","tokenRes","trj","turl","tempUrl","myIcon","displayLink","innerHTML","linkText","linkList","allLinks","linkItem","myExtraLink","getSecurityItems","getActiveStudyEntry","SecurityItems","isSecurityItemEnabled","securityItem","securityItemsFound","newActiveUserId","studyPatId","setActiveUserId","securityItemNames","IFrameInternal","Mobile","useMediaQuery","maxWidth","Default","isBootstrap_md","allLanguages","setAllLanguages","setActiveLanguage","getAvailableLanguages","handleLanguageSwitch","visibility","str","strSplit","mouseEventType","buttons","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","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","showLogoutButton","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","getTimeSlotsForDate","resourceAppointment","rowNrToShow","rowNr","maxRowNr","allPossibleTimeslots","stepWith","floor","timeslotCol","allCols","myDateFormated","maxTimeSlots","possibleTimeslots","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","physiciansForData","newAccountHashParam","physiciansData","physicians","allPhysicianIds","getNewPhyscianData","join","toDate","MyAnmeldBaseHeader","showSummaryBadgeHeader","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","SignDocumentModal","mouseSignData","setMouseSignData","setSendClicked","signotecProps","loadSignaturePad","unloadSignaturePad","clearSignaturePad","sendSignaturePad","useSignaturePad","onSignatureSend","onSignatureCancel","SignaturePadComponent","onSignatureClear","SidebarItem","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","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","AppointmentPersonalDataWithCardRead","readEGKCard","onCardReadClick","showCardReadButton","handleCardReadClick","AppointmentPersonalDataWithLogin","handleLoginClick","CancelConfirmModal","CodeInputModal","setCode","modalText","BookingAppointment","isEarlierAppointmentPossible","setBookingCode","showBookingButtonLoadingSpinner","setShowBookingButtonLoadingSpinner","bookingSuccess","setBookingSuccess","bookingButtonRef","innerBookAppointment","codeModalShow","setCodeModalShow","cancelConfirmModalShow","setCancelConfirmModalShow","BookNowButton","showWithSpaceBetween","APPOINTMENT_BOOKING","SUBMIT","handleBooking","BookingButtons","getEnrollDataForBooking","handleBookingClick","timeslot_1","timeslot_2","onBookingError","handleErrorAfterBooking","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","reasonsSelect","valueSub","insuranceSelect","versicherungsArt","optionSelectGesetzlich","optionSelectPrivat","optionSelectSelbst","optionSelectBG","getVersicherungsartOptions","getVersicherungsartDefault","handleSetComboboxInsurance","kontaktArtSelect","kontaktArt","optionVorOrt","optionVideo","optionTelefon","getKontaktartOptions","getKontaktartDefault","handleSetComboboxAppType","getBesuchsgrundDefault","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","forceClosePDF","setForceClosePDF","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","isUsedAsWidget","isWidget","handleProfileClick","ID_MYDATA","showAccountInAnmeldeworkflow","handleLoginIconClick","handleOnCardReadClick","handleFinalCheckInClick","handleClosePDFModal","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","setApointmentSelectionStepAndContent","handleBookingCancelClick","getRestHeight","stepbar","vh","newStepsToSet","newStep","newValues","setAllOtherStepsInactive","changeStep","journeyResp","videoIsActive","finished","onVideoHangup","NavbarAndStepper","Horizontal","Bottom","inMeineDatan","cardwidth","Text","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","languageElements","BUTTONS","en","Weiter","Abbrechen","COMBOBOX","Anmelden","Benutzername","Passwort","ANMELD","de","Fachrichtung","Besuchsgrund","Versichertentyp","Terminart","Behandler","Termin","Bemerkung","PERSONALDATA","Vorname","Nachname","Titel","Geburtstag","Geschlecht","Telefonnummer","Postleitzahl","Ort","Straße","Hausnummer","Land","Versichertennummer","Krankenkasse","Sprache","COMMON","Impressum","Datenschutz","languages","lang","getActiveLanguage","getSystemLanguage","Intl","DateTimeFormat","resolvedOptions","getLanguageDataWithId","sysLanguage","module","refText","translationText","moduleData","languageData","lookupTranslation","StyledAppointmentCard","StyledAppointmentCardHeader","StyledMainCardTitle","StyledAppointmentCardBody","StyledAppointmentCardFooter","StyledMainCard","StyledProfileCard","StyledPhysicianSelectionCard","StyledNewRegistrationCard","StyledNewRegistrationCardBody","StyledNewRegistrationCardImg","Img","StyledPhotoCard","StyledAppoinmentCategoryCard","backgroundcolor","marginbottom","ListGroupCst","ListGroup","ListGroupItemCst","StyledWaitingCard","StyledWaitingCardBody","StyledPhysicianSelectionCardTitle","CenterRow","MainHeaderRow","AppointmentCardStatusButtonRow","StyledRowNoMargin","StyledRowPersonalDataBottom","StyledVerticalCenterRow","attrs","TimeslotRow","DateSwitcherRow","QuestionnaireSwitcherRow","StyledModalMedicationDetail","countryShortName","isEmailValid","toLowerCase","appProps","getDataFromAppProperties","_userId","isDEVMode","qrCode","setQrCode","applinksURL","setAppLinksURL","qrCodeConfig","getQRCodeConfig","qrCodeData","getQRCodes4App","qrCodeSrc","thumbnail","ImpressumNormal","StyledFormLabelForInput","FormLabel","Color","StyledFormRowNoMargin","StyledFormGroupMaxWidth","WebcamModal","setPhoto","newQuestionnaireStep","formName","responseMsg","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","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","addConsignationResponse","doubleOptInViaLink","LoginButton","newPwd","Scheduled","StickyTitle","stickyBreakpoint","PastAppointments","stickyPosition","structuredAppointments","setStructuredAppointments","getAppointments","apt","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","getNavTextSize","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","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","headerBaseStyle","css","MainH1Title","h1","MainH2Title","h2","MainH3Title","MainH4Title","MainH5Title","h5","isGoogleAnalyticsEnabled","hitType","nonInteraction","transport","appVersion","version","pcpconfig","homepageURL","contextConfig","qrcode","themeConfig","getTermsURL","getPrivacyURL","getHomepageURL","booked","toolbarButtons","breakoutRooms","hideAddRoomButton","hideAutoAssignButton","hideJoinRoomButton","NavbarBottom","appNr","updatedSelectedResource","resetSelectedResource","resetedResource","updatedAvailableTimeslot","resetAvailableTimeslots","resetedAvailableTimeslot","updatedSelectedTimeslot","resetSelectedTimeslots","resetedSelectedTimeslot","fruehererTermin","makroIdArray","foundMakroId","subCoding","st","subMakro","se","foundResource","SelectCombobox","getBorderColor","menuIsOpen","control","styles","isFocused","isDisabled","backgroundRepeat","backgroundPosition","backgroundSize","dropdownIndicator","indicatorsContainer","isSelected","getReactSelectComboBoxDefaultStyles","noOptionsMessage","getHashParam","hashLocation","hashSub1","reduce","parts","params","exec","currentPathName","enrollId","questChar","andChar"],"mappings":"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","file":"static/js/main.e8300c75.chunk.js","sourcesContent":["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 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, { IPersonalDataContactPerson } 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 let blockId = '';\r\n if (selectedResource.identifier) {\r\n for (const id of selectedResource.identifier) {\r\n if (id.system == 'http://www.principa.siegele-software.com/appBlockId') {\r\n blockId = id.value;\r\n }\r\n }\r\n }\r\n\r\n const contactPerson = await getEnrollDataContactPerson();\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 blockId: blockId ? blockId : '',\r\n contactPerson: contactPerson.lastName ? contactPerson : undefined,\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 const getEnrollDataContactPerson = useCallback(async () => {\r\n const enrollDataContactPerson: IPersonalDataContactPerson = {\r\n firstName: tmstate.personalDataContactPerson.firstName,\r\n lastName: tmstate.personalDataContactPerson.lastName,\r\n email: tmstate.personalDataContactPerson.email,\r\n telephone: tmstate.personalDataContactPerson.telephone,\r\n street: tmstate.personalDataContactPerson.street,\r\n housenr: tmstate.personalDataContactPerson.housenr,\r\n city: tmstate.personalDataContactPerson.city,\r\n zip: tmstate.personalDataContactPerson.zip,\r\n country: tmstate.personalDataContactPerson.country,\r\n };\r\n\r\n return enrollDataContactPerson;\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 getEnrollDataContactPerson,\r\n readKVDataAndSetPersonalData,\r\n };\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 if (e?.data?.issue[0]?.diagnostics) {\r\n const errorMsg = e.data.issue[0].diagnostics;\r\n return { error: errorMsg };\r\n } else {\r\n console.log('An error happened while updating Appointment: \\n', e);\r\n }\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 { 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 const getAlertBody = () => {\r\n if (alertstate.alertMessage.doBig) {\r\n return

{alertstate.alertMessage.alertTxt}

;\r\n }\r\n if (alertstate.alertMessage.doHTML) {\r\n return
;\r\n }\r\n return

{alertstate.alertMessage.alertTxt}

;\r\n };\r\n\r\n return (\r\n \r\n \r\n {alertstate.alertMessage.doBig ? (\r\n \r\n {alertstate.alertMessage.alertTitle}\r\n \r\n ) : (\r\n {alertstate.alertMessage.alertTitle}\r\n )}\r\n \r\n \r\n {getAlertBody()}\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 doBig?: boolean;\r\n doHTML?: boolean;\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 doBig: action.alertMessage.doBig ? true : false,\r\n doHTML: action.alertMessage.doHTML ? true : false,\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 doBig: false,\r\n doHTML: false,\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 allowAppointmentsEinweiser: 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 allowContactPerson: 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 tileTexts?: any;\r\n smtpUser?: string;\r\n mailFromAddress?: string;\r\n possibleCountries: string;\r\n availableLanguages: string;\r\n disableTerms: boolean;\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 allowAppointmentsEinweiser: action.allowAppointmentsEinweiser,\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 allowContactPerson: action.allowContactPerson,\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 tileTexts: action.tileTexts,\r\n smtpUser: action.smtpUser,\r\n mailFromAddress: action.mailFromAddress,\r\n possibleCountries: action.possibleCountries,\r\n availableLanguages: action.availableLanguages,\r\n disableTerms: action.disableTerms,\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 ILanguageData,\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 activeLanguage: ILanguageData;\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\n type: 'SETACTIVELANGUAGE';\r\n activeLanguage: ILanguageData;\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 case 'SETACTIVELANGUAGE':\r\n return {\r\n ...state,\r\n activeLanguage: action.activeLanguage,\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: 'SETPERSONALDATA_CONTACTPERSON_FIRSTNAME';\r\n personalDataContactPerson: {\r\n firstName: string;\r\n };\r\n }\r\n | {\r\n type: 'SETPERSONALDATA_CONTACTPERSON_LASTNAME';\r\n personalDataContactPerson: {\r\n lastName: string;\r\n };\r\n }\r\n | {\r\n type: 'SETPERSONALDATA_CONTACTPERSON_EMAIL';\r\n personalDataContactPerson: {\r\n email: string;\r\n };\r\n }\r\n | {\r\n type: 'SETPERSONALDATA_CONTACTPERSON_TELEPHONE';\r\n personalDataContactPerson: {\r\n telephone: string;\r\n };\r\n }\r\n | {\r\n type: 'SETPERSONALDATA_CONTACTPERSON_STREET';\r\n personalDataContactPerson: {\r\n street: string;\r\n };\r\n }\r\n | {\r\n type: 'SETPERSONALDATA_CONTACTPERSON_HOUSENR';\r\n personalDataContactPerson: {\r\n housenr: string;\r\n };\r\n }\r\n | {\r\n type: 'SETPERSONALDATA_CONTACTPERSON_CITY';\r\n personalDataContactPerson: {\r\n city: string;\r\n };\r\n }\r\n | {\r\n type: 'SETPERSONALDATA_CONTACTPERSON_ZIP';\r\n personalDataContactPerson: {\r\n zip: string;\r\n };\r\n }\r\n | {\r\n type: 'SETPERSONALDATA_CONTACTPERSON_COUNTRY';\r\n personalDataContactPerson: {\r\n country: string;\r\n };\r\n }\r\n | {\r\n type: 'SETPERSONALDATA_CONTACTPERSON';\r\n personalDataContactPerson: {\r\n firstName: string;\r\n lastName: 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 };\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: 'RESETPERSONALDATA_CONTACTPERSON';\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 'SETPERSONALDATA_CONTACTPERSON_FIRSTNAME':\r\n return {\r\n ...state,\r\n personalDataContactPerson: {\r\n ...state.personalDataContactPerson,\r\n firstName: action.personalDataContactPerson.firstName,\r\n },\r\n };\r\n case 'SETPERSONALDATA_CONTACTPERSON_LASTNAME':\r\n return {\r\n ...state,\r\n personalDataContactPerson: {\r\n ...state.personalDataContactPerson,\r\n lastName: action.personalDataContactPerson.lastName,\r\n },\r\n };\r\n case 'SETPERSONALDATA_CONTACTPERSON_EMAIL':\r\n return {\r\n ...state,\r\n personalDataContactPerson: {\r\n ...state.personalDataContactPerson,\r\n email: action.personalDataContactPerson.email,\r\n },\r\n };\r\n case 'SETPERSONALDATA_CONTACTPERSON_TELEPHONE':\r\n return {\r\n ...state,\r\n personalDataContactPerson: {\r\n ...state.personalDataContactPerson,\r\n telephone: action.personalDataContactPerson.telephone,\r\n },\r\n };\r\n case 'SETPERSONALDATA_CONTACTPERSON_STREET':\r\n return {\r\n ...state,\r\n personalDataContactPerson: {\r\n ...state.personalDataContactPerson,\r\n street: action.personalDataContactPerson.street,\r\n },\r\n };\r\n case 'SETPERSONALDATA_CONTACTPERSON_HOUSENR':\r\n return {\r\n ...state,\r\n personalDataContactPerson: {\r\n ...state.personalDataContactPerson,\r\n housenr: action.personalDataContactPerson.housenr,\r\n },\r\n };\r\n case 'SETPERSONALDATA_CONTACTPERSON_CITY':\r\n return {\r\n ...state,\r\n personalDataContactPerson: {\r\n ...state.personalDataContactPerson,\r\n city: action.personalDataContactPerson.city,\r\n },\r\n };\r\n case 'SETPERSONALDATA_CONTACTPERSON_ZIP':\r\n return {\r\n ...state,\r\n personalDataContactPerson: {\r\n ...state.personalDataContactPerson,\r\n zip: action.personalDataContactPerson.zip,\r\n },\r\n };\r\n case 'SETPERSONALDATA_CONTACTPERSON_COUNTRY':\r\n return {\r\n ...state,\r\n personalDataContactPerson: {\r\n ...state.personalDataContactPerson,\r\n country: action.personalDataContactPerson.country,\r\n },\r\n };\r\n\r\n case 'SETPERSONALDATA_CONTACTPERSON':\r\n return {\r\n ...state,\r\n personalDataContactPerson: {\r\n firstName: action.personalDataContactPerson.firstName,\r\n lastName: action.personalDataContactPerson.lastName,\r\n email: action.personalDataContactPerson.email,\r\n telephone: action.personalDataContactPerson.telephone,\r\n street: action.personalDataContactPerson.street,\r\n housenr: action.personalDataContactPerson.housenr,\r\n city: action.personalDataContactPerson.city,\r\n zip: action.personalDataContactPerson.zip,\r\n country: action.personalDataContactPerson.country,\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 'RESETPERSONALDATA_CONTACTPERSON':\r\n return {\r\n ...state,\r\n personalDataContactPerson: {\r\n firstName: '',\r\n lastName: '',\r\n email: '',\r\n telephone: '',\r\n street: '',\r\n housenr: '',\r\n city: '',\r\n zip: '',\r\n country: '',\r\n },\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 personalDataContactPerson: {\r\n firstName: '',\r\n lastName: '',\r\n email: '',\r\n telephone: '',\r\n street: '',\r\n housenr: '',\r\n city: '',\r\n zip: '',\r\n country: '',\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 { useLanguage } from './hooks/useLanguage';\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 { getSystemLanguageData, setSystemLanguage } = useLanguage();\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 if (!(window as any).app.language) {\r\n const systemLanguage = getSystemLanguageData();\r\n (window as any).app.language = systemLanguage.id;\r\n setSystemLanguage();\r\n }\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 { 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","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: 50px;\r\n margin-left: 50px;\r\n /* @media only screen and (max-width: 800px) {\r\n margin-left: 60px;\r\n margin-right: 60px;\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\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: 90px;\r\n }\r\n @media only screen and (max-height: 500px) {\r\n top: 90px;\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: 50px;\r\n margin-right: 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 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: 90px;\r\n }\r\n @media only screen and (max-height: 500px) {\r\n height: 90px;\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 z-index: 20;\r\n height: ${(prop) => (prop.height ? prop.height : '90%')};\r\n width: 200%;\r\n overflow-y: scroll;\r\n overflow-x: ${(prop) => (prop.overflowX ? prop.overflowX : '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 display: flex;\r\n position: fixed;\r\n width: 100%;\r\n left: 0px;\r\n right: 0px;\r\n bottom: 25px;\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 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 { useLanguage } from '../../hooks/useLanguage';\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 const { t } = useLanguage();\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 {t('ANMELD', 'Verfügbare Zeiten für den')}\r\n {': '}\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 { 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\r\n if (!apstate.countDaysToVisualize) {\r\n return 0;\r\n } else if (screenSize.width >= 768 && screenSize.width < 890) {\r\n return MAX_DAYS_SMALL_DEVICES;\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 const getPossibleCountries = () => {\r\n let countries;\r\n if (apstate.possibleCountries) {\r\n countries = apstate.possibleCountries.split(',');\r\n } else {\r\n countries = ['Deutschland', 'Österreich', 'Schweiz'];\r\n }\r\n return countries;\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 getPossibleCountries,\r\n };\r\n};\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 { 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 { 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 doBig?: boolean;\r\n doHTML?: boolean;\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 doBig: false,\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 { 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 * 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 '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 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 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 { 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 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 * 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 { 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 Row from 'react-bootstrap/Row';\r\nimport { ListGroupCst, ListGroupItemCst, StyledProfileCard } from '../../components/Cards/StyledCard';\r\nimport AppPropsContext from '../../context/appPropsContext';\r\nimport TerminierungContext from '../../context/terminierungContext';\r\nimport { useLanguage } from '../../hooks/useLanguage';\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 const { t } = useLanguage();\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 const ContactPersonSummary = () => {\r\n return (\r\n <>\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Kontaktperson\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {tmstate.personalDataContactPerson.firstName?.length > 0 && (\r\n \r\n )}\r\n {tmstate.personalDataContactPerson.lastName?.length > 0 && (\r\n \r\n )}\r\n {tmstate.personalDataContactPerson.telephone?.length > 0 && (\r\n \r\n )}\r\n {tmstate.personalDataContactPerson.email?.length > 0 && (\r\n \r\n )}\r\n {tmstate.personalDataContactPerson.zip?.length > 0 && (\r\n \r\n )}\r\n {tmstate.personalDataContactPerson.city?.length > 0 && (\r\n \r\n )}\r\n {tmstate.personalDataContactPerson.street?.length > 0 && (\r\n \r\n )}\r\n {tmstate.personalDataContactPerson.housenr?.length > 0 && (\r\n \r\n )}\r\n {tmstate.personalDataContactPerson.country?.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 E-Mails werden an folgende Adresse gesendet:{' '}\r\n \r\n {tmstate.personalData.email\r\n ? tmstate.personalData.email\r\n : tmstate.personalDataContactPerson.email}\r\n \r\n \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 {t('ANMELD', '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 tmstate.personalData.academicTitle?.length > 0 && (\r\n \r\n )}\r\n {apstate.RegistrationVisibleFields.firstName === true &&\r\n tmstate.personalData.firstName?.length > 0 && (\r\n \r\n )}\r\n {apstate.RegistrationVisibleFields.lastName === true &&\r\n tmstate.personalData.lastName?.length > 0 && (\r\n \r\n )}\r\n {apstate.RegistrationVisibleFields.birthDate === true &&\r\n tmstate.personalData.birthday?.length > 0 && (\r\n \r\n )}\r\n {apstate.RegistrationVisibleFields.gender === true &&\r\n tmstate.personalData.gender?.length > 0 && (\r\n \r\n )}\r\n {apstate.RegistrationVisibleFields.phone === true &&\r\n tmstate.personalData.telephone?.length > 0 && (\r\n \r\n )}\r\n {apstate.RegistrationVisibleFields.mobilePhone === true &&\r\n tmstate.personalData.mobilePhone?.length > 0 && (\r\n \r\n )}\r\n {apstate.RegistrationVisibleFields.email === true &&\r\n tmstate.personalData.email?.length > 0 && (\r\n \r\n )}\r\n {apstate.RegistrationVisibleFields.zip === true &&\r\n tmstate.personalData.zip?.length > 0 && (\r\n \r\n )}\r\n {apstate.RegistrationVisibleFields.city === true &&\r\n tmstate.personalData.city?.length > 0 && (\r\n \r\n )}\r\n {apstate.RegistrationVisibleFields.street === true &&\r\n tmstate.personalData.street?.length > 0 && (\r\n \r\n )}\r\n {apstate.RegistrationVisibleFields.street === true &&\r\n tmstate.personalData.housenr?.length > 0 && (\r\n \r\n )}\r\n {apstate.RegistrationVisibleFields.country === true &&\r\n tmstate.personalData.country?.length > 0 && (\r\n \r\n )}\r\n {apstate.RegistrationVisibleFields.insuranceNr === true &&\r\n tmstate.personalData.insuranceNr?.length > 0 && (\r\n \r\n )}\r\n {apstate.RegistrationVisibleFields.insuranceName === true &&\r\n tmstate.personalData.insuranceName?.length > 0 && (\r\n \r\n )}\r\n {apstate.RegistrationVisibleFields.language === true &&\r\n tmstate.personalData.language?.length > 0 && (\r\n \r\n )}\r\n {tmstate.personalData.plannedStudies?.length > 0 && (\r\n \r\n )}\r\n \r\n \r\n \r\n {tmstate.personalDataContactPerson.lastName?.length > 0 && }\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 modalMsg?: string;\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 { createContext } from 'react';\r\n\r\nexport interface ILanguage {\r\n id: string;\r\n name: string;\r\n changedFromUser?: boolean;\r\n}\r\n\r\nexport interface ILanguageData {\r\n language: ILanguage;\r\n changedFromUser: boolean;\r\n}\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 activeLanguage: ILanguageData;\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 activeLanguage: { language: { id: 'de', name: 'Deutsch' }, changedFromUser: false },\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 { 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 { useAppProperties } from '../../hooks/useAppProperties';\r\nimport { useGoogleAnalytics } from '../../hooks/useGoogleAnalytics';\r\nimport { useLanguage } from '../../hooks/useLanguage';\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 {\r\n createSelectComboboxOption,\r\n createSelectComboboxOptions,\r\n ISelectComboboxOption,\r\n SelectCombobox,\r\n} from '../Combobox/Combobox';\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 allowContactPerson?: 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 [cbxContactPerson, setCbxContactPerson] = useState(false);\r\n\r\n const { getPlannedStudyParticipation } = usePersonalData();\r\n const { sendGoogleAnalyticsPageView } = useGoogleAnalytics();\r\n const { getPossibleCountries } = useAppProperties();\r\n\r\n const { t } = useLanguage();\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 setFirstNameCP(event.firstNameCP);\r\n setLastNameCP(event.lastNameCP);\r\n setTelephoneCP(event.phoneCP);\r\n setEmailCP(event.emailCP);\r\n setStreetCP(event.streetCP);\r\n setHouseNrCP(event.houseNumberCP);\r\n setZipCP(event.zipCP);\r\n setCityCP(event.cityCP);\r\n setCountryCP(event.countryCP);\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(t('PERSONALDATA', '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(t('PERSONALDATA', '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(t('PERSONALDATA', '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(t('PERSONALDATA', '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(t('PERSONALDATA', '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(t('PERSONALDATA', '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(t('PERSONALDATA', 'Bitte geben Sie Ihre E-Mail-Adresse an.'))\r\n .matches(pattern, t('PERSONALDATA', 'Ungültiges E-Mail-Format'))\r\n : yup.string().notRequired().matches(pattern, t('PERSONALDATA', 'Ungültiges E-Mail-Format')),\r\n phone:\r\n mandFields.phone && !isFieldReadOnly(apstate.RegistrationReadOnlyFields.phone)\r\n ? yup.string().required(t('PERSONALDATA', '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(t('PERSONALDATA', '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(t('PERSONALDATA', '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(t('PERSONALDATA', '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(t('PERSONALDATA', '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(t('PERSONALDATA', '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(t('PERSONALDATA', '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(t('PERSONALDATA', '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(t('PERSONALDATA', 'Bitte geben Sie Ihren Titel an.'))\r\n : yup.string().notRequired(),\r\n username: cbxRegistrationSelected\r\n ? yup.string().required(t('PERSONALDATA', 'Bitte geben Sie einen Benutzernamen an.'))\r\n : yup.string().notRequired(),\r\n password: cbxRegistrationSelected\r\n ? yup.string().required(t('PERSONALDATA', 'Bitte geben Sie ein Passwort an.'))\r\n : yup.string().notRequired(),\r\n /* Kontaktperson */\r\n firstNameCP:\r\n cbxContactPerson &&\r\n mandFields.firstName &&\r\n !isFieldReadOnly(apstate.RegistrationReadOnlyFields.firstName)\r\n ? yup.string().required(t('PERSONALDATA', 'Bitte geben Sie Ihren Vornamen an.'))\r\n : yup.string().notRequired(),\r\n lastNameCP:\r\n cbxContactPerson && mandFields.lastName && !isFieldReadOnly(apstate.RegistrationReadOnlyFields.lastName)\r\n ? yup.string().required(t('PERSONALDATA', 'Bitte geben Sie Ihren Nachnamen an.'))\r\n : yup.string().notRequired(),\r\n phoneCP:\r\n cbxContactPerson && mandFields.phone && !isFieldReadOnly(apstate.RegistrationReadOnlyFields.phone)\r\n ? yup.string().required(t('PERSONALDATA', 'Bitte geben Sie Ihre Telefonnummer an.'))\r\n : yup.string().notRequired(),\r\n emailCP:\r\n cbxContactPerson &&\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(t('PERSONALDATA', 'Bitte geben Sie Ihre E-Mail-Adresse an.'))\r\n .matches(pattern, t('PERSONALDATA', 'Ungültiges E-Mail-Format'))\r\n : yup.string().notRequired().matches(pattern, t('PERSONALDATA', 'Ungültiges E-Mail-Format')),\r\n countryCP:\r\n cbxContactPerson && mandFields.country && !isFieldReadOnly(apstate.RegistrationReadOnlyFields.country)\r\n ? yup.string().required(t('PERSONALDATA', 'Bitte geben Sie Ihr Land an.'))\r\n : yup.string().notRequired(),\r\n streetCP:\r\n cbxContactPerson && mandFields.street && !isFieldReadOnly(apstate.RegistrationReadOnlyFields.street)\r\n ? yup.string().required(t('PERSONALDATA', 'Bitte geben Sie Ihre Straße an.'))\r\n : yup.string().notRequired(),\r\n houseNumberCP:\r\n cbxContactPerson && mandFields.street && !isFieldReadOnly(apstate.RegistrationReadOnlyFields.street)\r\n ? yup.string().required(t('PERSONALDATA', 'Bitte geben Sie Ihre Hausnummer an.'))\r\n : yup.string().notRequired(),\r\n zipCP:\r\n cbxContactPerson && mandFields.zip && !isFieldReadOnly(apstate.RegistrationReadOnlyFields.zip)\r\n ? yup.string().required(t('PERSONALDATA', 'Bitte geben Sie Ihre Postleitzahl an.'))\r\n : yup.string().notRequired(),\r\n cityCP:\r\n cbxContactPerson && mandFields.city && !isFieldReadOnly(apstate.RegistrationReadOnlyFields.city)\r\n ? yup.string().required(t('PERSONALDATA', 'Bitte geben Sie Ihren Ort 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 {t('BUTTONS', '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 setFieldValue: any;\r\n }\r\n\r\n const showFormGroupInsuranceNr = (propsFG: IFormGroup) => {\r\n if (apstate.RegistrationVisibleFields.insuranceNr === true) {\r\n return (\r\n \r\n {label(mandFields.insuranceNr, t('PERSONALDATA', '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 showFormGroupInsuranceName = (propsFG: IFormGroup) => {\r\n if (apstate.RegistrationVisibleFields.insuranceName === true) {\r\n return (\r\n \r\n {label(mandFields.insuranceName, t('PERSONALDATA', '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 showFormGroupLastName = (propsFG: IFormGroup) => {\r\n if (apstate.RegistrationVisibleFields.lastName === true) {\r\n return (\r\n \r\n {label(mandFields.lastName, t('PERSONALDATA', '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 showFormGroupFirstName = (propsFG: IFormGroup) => {\r\n if (apstate.RegistrationVisibleFields.firstName === true) {\r\n return (\r\n \r\n {label(mandFields.firstName, t('PERSONALDATA', '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 showFormGroupBirthday = (propsFG: IFormGroup) => {\r\n if (apstate.RegistrationVisibleFields.birthDate === true) {\r\n return (\r\n \r\n {label(mandFields.birthDate, t('PERSONALDATA', '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 getGenderOptions = () => {\r\n const genderSelect: ISelectComboboxOption[] = [];\r\n\r\n const optionSelectWeiblich: ISelectComboboxOption = {\r\n value: 'Weiblich',\r\n label: 'Weiblich',\r\n };\r\n const optionSelectMaennlich: ISelectComboboxOption = {\r\n value: 'Männlich',\r\n label: 'Männlich',\r\n };\r\n const optionSelectDivers: ISelectComboboxOption = {\r\n value: 'Divers',\r\n label: 'Divers',\r\n };\r\n const optionSelectUnbekannt: ISelectComboboxOption = {\r\n value: 'Unbekannt',\r\n label: 'Unbekannt',\r\n };\r\n genderSelect.push(optionSelectWeiblich);\r\n genderSelect.push(optionSelectMaennlich);\r\n genderSelect.push(optionSelectDivers);\r\n genderSelect.push(optionSelectUnbekannt);\r\n\r\n return genderSelect;\r\n };\r\n\r\n const showFormGroupGender = (propsFG: IFormGroup) => {\r\n if (apstate.RegistrationVisibleFields.gender === true) {\r\n return (\r\n \r\n {label(mandFields.gender, t('PERSONALDATA', '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.setFieldValue('gender', e.value)}\r\n />\r\n \r\n {propsFG.errors.gender}\r\n \r\n \r\n );\r\n } else {\r\n return null;\r\n }\r\n };\r\n\r\n const showFormGroupLanguage = (propsFG: IFormGroup) => {\r\n if (apstate.RegistrationVisibleFields.language === true) {\r\n return (\r\n \r\n {label(mandFields.language, t('PERSONALDATA', '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 showFormGroupTelephone = (propsFG: IFormGroup) => {\r\n if (apstate.RegistrationVisibleFields.phone === true) {\r\n return (\r\n \r\n {label(mandFields.phone, t('PERSONALDATA', '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 showFormGroupMobilePhone = (propsFG: IFormGroup) => {\r\n if (apstate.RegistrationVisibleFields.mobilePhone === true) {\r\n return (\r\n \r\n {label(mandFields.mobilePhone, t('PERSONALDATA', '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 showFormGroupAcademicTitle = (propsFG: IFormGroup) => {\r\n if (apstate.RegistrationVisibleFields.academicTitle === true) {\r\n return (\r\n \r\n {label(mandFields.academicTitle, t('PERSONALDATA', '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 showFormGroupEmail = (propsFG: IFormGroup) => {\r\n if (apstate.RegistrationVisibleFields.email === true) {\r\n return (\r\n \r\n {label(mandFields.email && checkinstate.wpName.length <= 0, t('PERSONALDATA', '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 showFormGroupZip = (propsFG: IFormGroup) => {\r\n if (apstate.RegistrationVisibleFields.zip === true) {\r\n return (\r\n \r\n {label(mandFields.zip, t('PERSONALDATA', '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 showFormGroupCity = (propsFG: IFormGroup) => {\r\n if (apstate.RegistrationVisibleFields.city === true) {\r\n return (\r\n \r\n {label(mandFields.city, t('PERSONALDATA', '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 showFormGroupStreet = (propsFG: IFormGroup) => {\r\n if (apstate.RegistrationVisibleFields.street === true) {\r\n return (\r\n \r\n {label(mandFields.street, t('PERSONALDATA', '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 showFormGroupHouseNr = (propsFG: IFormGroup) => {\r\n if (apstate.RegistrationVisibleFields.street === true) {\r\n return (\r\n \r\n {label(mandFields.street, t('PERSONALDATA', '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 handleCbxContactPersonSelected = () => {\r\n setCbxContactPerson(!cbxContactPerson);\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 showFormGroupPrivacyPolicyRegistrationCbx = () => {\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 showFormGroupRegistrationUsername = (propsFG: IFormGroup) => {\r\n if (props.showRegistrationCbx && cbxRegistrationSelected) {\r\n return (\r\n \r\n {label(true, t('LOGIN', '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 showFormGroupRegistrationPassword = (propsFG: IFormGroup) => {\r\n if (props.showRegistrationCbx && cbxRegistrationSelected) {\r\n return (\r\n \r\n {label(true, t('LOGIN', '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 makeOption = (country: string) => {\r\n return ;\r\n };\r\n\r\n const getCountryOptions = (countries: string[]) => {\r\n return createSelectComboboxOptions(countries);\r\n };\r\n\r\n const showFormGroupCountry = (propsFG: IFormGroup) => {\r\n if (apstate.RegistrationVisibleFields.country === true) {\r\n const countries = ['Deutschland', 'Österreich', 'Schweiz', 'Italien'];\r\n return (\r\n \r\n {label(mandFields.country, t('PERSONALDATA', 'Land'))}\r\n {/* \r\n \r\n {getPossibleCountries().map(makeOption)}\r\n readOnly={isFieldReadOnly(apstate.RegistrationReadOnlyFields.country)}\r\n */}\r\n propsFG.setFieldValue('country', e.value)}\r\n />\r\n \r\n {propsFG.errors.country}\r\n \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 showFormGroupStudies = () => {\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 /* ### Kontaktperson ### */\r\n\r\n const FormGroupContactPersonCbx = () => {\r\n if (props.allowContactPerson) {\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 showFormGroupLastName_ContactPerson = (propsFG: IFormGroup) => {\r\n if (apstate.RegistrationVisibleFields.lastName === true) {\r\n return (\r\n \r\n {label(mandFields.lastName, t('PERSONALDATA', 'Nachname'))}\r\n \r\n {propsFG.errors.lastNameCP}\r\n \r\n );\r\n } else {\r\n return null;\r\n }\r\n };\r\n\r\n const showFormGroupFirstName_ContactPerson = (propsFG: IFormGroup) => {\r\n if (apstate.RegistrationVisibleFields.firstName === true) {\r\n return (\r\n \r\n {label(mandFields.firstName, t('PERSONALDATA', 'Vorname'))}\r\n \r\n {propsFG.errors.firstNameCP}\r\n \r\n );\r\n } else {\r\n return null;\r\n }\r\n };\r\n\r\n const showFormGroupTelephone_ContactPerson = (propsFG: IFormGroup) => {\r\n if (apstate.RegistrationVisibleFields.phone === true) {\r\n return (\r\n \r\n {label(mandFields.phone, t('PERSONALDATA', 'Telefonnummer'))}\r\n \r\n {propsFG.errors.phoneCP}\r\n \r\n );\r\n } else {\r\n return null;\r\n }\r\n };\r\n\r\n const showFormGroupEmail_ContactPerson = (propsFG: IFormGroup) => {\r\n if (apstate.RegistrationVisibleFields.email === true) {\r\n return (\r\n \r\n {label(mandFields.email && checkinstate.wpName.length <= 0, t('PERSONALDATA', 'E-Mail'))}\r\n \r\n {propsFG.errors.emailCP}\r\n \r\n );\r\n } else {\r\n return null;\r\n }\r\n };\r\n\r\n const showFormGroupCountry_ContactPerson = (propsFG: IFormGroup) => {\r\n if (apstate.RegistrationVisibleFields.country === true) {\r\n const countries = ['Deutschland', 'Österreich', 'Schweiz', 'Italien'];\r\n return (\r\n \r\n {label(mandFields.country, t('PERSONALDATA', 'Land'))}\r\n propsFG.setFieldValue('countryCP', e.value)}\r\n />\r\n \r\n {propsFG.errors.countryCP}\r\n \r\n \r\n );\r\n } else {\r\n return null;\r\n }\r\n };\r\n\r\n const showFormGroupZip_ContactPerson = (propsFG: IFormGroup) => {\r\n if (apstate.RegistrationVisibleFields.zip === true) {\r\n return (\r\n \r\n {label(mandFields.zip, t('PERSONALDATA', 'Postleitzahl'))}\r\n \r\n {propsFG.errors.zipCP}\r\n \r\n );\r\n } else {\r\n return null;\r\n }\r\n };\r\n\r\n const showFormGroupCity_ContactPerson = (propsFG: IFormGroup) => {\r\n if (apstate.RegistrationVisibleFields.city === true) {\r\n return (\r\n \r\n {label(mandFields.city, t('PERSONALDATA', 'Ort'))}\r\n \r\n {propsFG.errors.cityCP}\r\n \r\n );\r\n } else {\r\n return null;\r\n }\r\n };\r\n\r\n const showFormGroupStreet_ContactPerson = (propsFG: IFormGroup) => {\r\n if (apstate.RegistrationVisibleFields.street === true) {\r\n return (\r\n \r\n {label(mandFields.street, t('PERSONALDATA', 'Straße'))}\r\n \r\n {propsFG.errors.streetCP}\r\n \r\n );\r\n } else {\r\n return null;\r\n }\r\n };\r\n\r\n const showFormGroupHouseNr_ContactPerson = (propsFG: IFormGroup) => {\r\n if (apstate.RegistrationVisibleFields.street === true) {\r\n return (\r\n \r\n {label(mandFields.street, t('PERSONALDATA', 'Hausnummer'))}\r\n \r\n {propsFG.errors.houseNumberCP}\r\n \r\n );\r\n } else {\r\n return null;\r\n }\r\n };\r\n\r\n const setFirstNameCP = (value: string) => {\r\n tmdispatch({\r\n type: 'SETPERSONALDATA_CONTACTPERSON_FIRSTNAME',\r\n personalDataContactPerson: {\r\n firstName: value,\r\n },\r\n });\r\n };\r\n\r\n const setLastNameCP = (value: string) => {\r\n tmdispatch({\r\n type: 'SETPERSONALDATA_CONTACTPERSON_LASTNAME',\r\n personalDataContactPerson: {\r\n lastName: value,\r\n },\r\n });\r\n };\r\n\r\n const setEmailCP = (value: string) => {\r\n tmdispatch({\r\n type: 'SETPERSONALDATA_CONTACTPERSON_EMAIL',\r\n personalDataContactPerson: {\r\n email: value,\r\n },\r\n });\r\n };\r\n\r\n const setTelephoneCP = (value: string) => {\r\n tmdispatch({\r\n type: 'SETPERSONALDATA_CONTACTPERSON_TELEPHONE',\r\n personalDataContactPerson: {\r\n telephone: value,\r\n },\r\n });\r\n };\r\n\r\n const setStreetCP = (value: string) => {\r\n tmdispatch({\r\n type: 'SETPERSONALDATA_CONTACTPERSON_STREET',\r\n personalDataContactPerson: {\r\n street: value,\r\n },\r\n });\r\n };\r\n\r\n const setHouseNrCP = (value: string) => {\r\n tmdispatch({\r\n type: 'SETPERSONALDATA_CONTACTPERSON_HOUSENR',\r\n personalDataContactPerson: {\r\n housenr: value,\r\n },\r\n });\r\n };\r\n\r\n const setCityCP = (value: string) => {\r\n tmdispatch({\r\n type: 'SETPERSONALDATA_CONTACTPERSON_CITY',\r\n personalDataContactPerson: {\r\n city: value,\r\n },\r\n });\r\n };\r\n\r\n const setZipCP = (value: string) => {\r\n tmdispatch({\r\n type: 'SETPERSONALDATA_CONTACTPERSON_ZIP',\r\n personalDataContactPerson: {\r\n zip: value,\r\n },\r\n });\r\n };\r\n\r\n const setCountryCP = (value: string) => {\r\n tmdispatch({\r\n type: 'SETPERSONALDATA_CONTACTPERSON_COUNTRY',\r\n personalDataContactPerson: {\r\n country: value,\r\n },\r\n });\r\n };\r\n\r\n const ContactPerson = (propsFG: IFormGroup) => {\r\n if (cbxContactPerson) {\r\n return (\r\n
\r\n

\r\n Kontaktperson\r\n

\r\n \r\n {showFormGroupFirstName_ContactPerson(propsFG)}\r\n {showFormGroupLastName_ContactPerson(propsFG)}\r\n \r\n \r\n {showFormGroupTelephone_ContactPerson(propsFG)}\r\n {showFormGroupEmail_ContactPerson(propsFG)}\r\n {showFormGroupCountry_ContactPerson(propsFG)}\r\n \r\n \r\n {showFormGroupZip_ContactPerson(propsFG)}\r\n {showFormGroupCity_ContactPerson(propsFG)}\r\n {showFormGroupStreet_ContactPerson(propsFG)}\r\n {showFormGroupHouseNr_ContactPerson(propsFG)}\r\n \r\n
\r\n );\r\n } else {\r\n return null;\r\n }\r\n };\r\n\r\n /* ####################*/\r\n\r\n return (\r\n \r\n \r\n {({ handleSubmit, handleChange, values, errors, setFieldValue }) => (\r\n
\r\n \r\n {showFormGroupFirstName({ values, handleChange, errors, setFieldValue })}\r\n {showFormGroupLastName({ values, handleChange, errors, setFieldValue })}\r\n {showFormGroupAcademicTitle({ values, handleChange, errors, setFieldValue })}\r\n {showFormGroupGender({ values, handleChange, errors, setFieldValue })}\r\n \r\n \r\n {showFormGroupBirthday({ values, handleChange, errors, setFieldValue })}\r\n {showFormGroupTelephone({ values, handleChange, errors, setFieldValue })}\r\n {showFormGroupMobilePhone({ values, handleChange, errors, setFieldValue })}\r\n {showFormGroupEmail({ values, handleChange, errors, setFieldValue })}\r\n \r\n \r\n {showFormGroupZip({ values, handleChange, errors, setFieldValue })}\r\n {showFormGroupCity({ values, handleChange, errors, setFieldValue })}\r\n {showFormGroupStreet({ values, handleChange, errors, setFieldValue })}\r\n {showFormGroupHouseNr({ values, handleChange, errors, setFieldValue })}\r\n \r\n \r\n {showFormGroupCountry({ values, handleChange, errors, setFieldValue })}\r\n {showFormGroupInsuranceNr({ values, handleChange, errors, setFieldValue })}\r\n {showFormGroupInsuranceName({ values, handleChange, errors, setFieldValue })}\r\n \r\n {showFormGroupLanguage({ values, handleChange, errors, setFieldValue })}\r\n {showFormGroupStudies()}\r\n {props.allowContactPerson && (\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 {showFormGroupRegistrationUsername({ values, handleChange, errors, setFieldValue })}\r\n {showFormGroupRegistrationPassword({ values, handleChange, errors, setFieldValue })}\r\n \r\n
\r\n )}\r\n {props.showPrivacyPolicyCbx && (\r\n {showFormGroupPrivacyPolicyRegistrationCbx()}\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 { 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 '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 } 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 { useLanguage } from '../../hooks/useLanguage';\r\nimport StyledButton from '../Buttons/StyledButton';\r\nimport { StyledMainCardTitle, StyledProfileCard } from '../Cards/StyledCard';\r\nimport { createSelectComboboxOption, ISelectComboboxOption, SelectCombobox } from '../Combobox/Combobox';\r\nimport { CenterDiv, RightDiv } from '../Div/StyledDiv';\r\nconst EnrollCodeBox = () => {\r\n const navigate = useNavigate();\r\n\r\n const { t } = useLanguage();\r\n const themeContext = useContext(ThemeContext);\r\n const { apstate } = useContext(AppPropsContext);\r\n\r\n const { sendGoogleAnalyticsEvent } = useGoogleAnalytics();\r\n\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 const option: ISelectComboboxOption = createSelectComboboxOption(e.value.toString());\r\n setAnmeldKatSelected(option);\r\n };\r\n\r\n const getAnmeldKatOptions = () => {\r\n const anmeldKatOptions: ISelectComboboxOption[] = [];\r\n\r\n if (apstate.anmeldeContexts && apstate.anmeldeContexts.length > 0) {\r\n // return apstate.anmeldeContexts.map((anmeldeContext) => (\r\n // \r\n // ));\r\n apstate.anmeldeContexts.forEach((anmeldeContext) => {\r\n const optionSelect: ISelectComboboxOption = { value: anmeldeContext.code, label: anmeldeContext.name };\r\n anmeldKatOptions.push(optionSelect);\r\n });\r\n\r\n return anmeldKatOptions;\r\n } else {\r\n return null;\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?.value + ' ausgewählt',\r\n });\r\n navigate(Paths.NEUER_ACCOUNT_WL + '?reason=' + anmeldKatSelected?.value + '&type=NewAccount');\r\n };\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n {t('LOGIN', '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 handleSetAnmeldKat(e)}\r\n />\r\n \r\n \r\n handleTerminAnfordernClick()}\r\n >\r\n {t('LOGIN', '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 LanguageSwitch from '../../components/LanguageSwitch/LanguageSwitch';\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 { useLanguage } from '../../hooks/useLanguage';\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 const { t, setSystemLanguage, isLanguageChangedFromUser } = useLanguage();\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 if (!isLanguageChangedFromUser()) {\r\n setSystemLanguage();\r\n }\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 \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 { 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 { 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 IconDiv,\r\n RightDiv,\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\nimport AppPropsContext from '../../context/appPropsContext';\r\nimport { Divider } from '@material-ui/core';\r\nimport StyledButton from '../../components/Buttons/StyledButton';\r\nimport MyTooltip from '../../components/Tooltip/MyTooltip';\r\nimport { RiLogoutBoxRLine } from 'react-icons/ri';\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 fromOnlinebuchung: 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 { apstate } = useContext(AppPropsContext);\r\n const [visibleTiles, setVisibleTiles] = useState({\r\n tileUeberweisung: false,\r\n tileOnlinebuchung: false,\r\n tilePraxisanmeldung: false,\r\n tileTerminueberpruefung: false,\r\n fromOnlinebuchung: 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 fromOnlinebuchung: false,\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 doBig: true,\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 doBig: true,\r\n });\r\n setVisibleTiles({\r\n ...visibleTiles,\r\n tilePraxisanmeldung: true,\r\n tileTerminueberpruefung: false,\r\n fromOnlinebuchung: true,\r\n });\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 window.setTimeout(function () {\r\n cancelClick();\r\n }, 60000);\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 onHideAlertModal = () => {\r\n setShowLoadingSpinner(false);\r\n onclickMainsplacscreen();\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 if (response.error.alertTitle == 'Karte nicht gesteckt' || response.error.stayInWorkflow) {\r\n showAlertMessage({\r\n alertTitle: response.error.alertTitle,\r\n alertTxt: response.error.alertTxt,\r\n alertType: AlertType.error,\r\n onHide: AlertOnHide.custom,\r\n onHideCustom: onHideAlertModal,\r\n alertdispatch: alertdispatch,\r\n doBig: true,\r\n });\r\n } else {\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 doBig: true,\r\n });\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 doBig: true,\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 {htmlBeforeOrAfter('UEBBEFORE', apstate.tileTexts.UEBBEFORE)}\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 {htmlBeforeOrAfter('UEBAFTER', apstate.tileTexts.UEBAFTER)}\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 {htmlBeforeOrAfter('OBUBEFORE', apstate.tileTexts.OBUBEFORE)}\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 {htmlBeforeOrAfter('OBUAFTER', apstate.tileTexts.OBUAFTER)}\r\n
\r\n \r\n );\r\n } else {\r\n return null;\r\n }\r\n };\r\n\r\n const cancelClick = () => {\r\n window.location.reload();\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 {htmlBeforeOrAfter('PANBEFORE', apstate.tileTexts.PANBEFORE)}\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 {htmlBeforeOrAfter('PANAFTER', apstate.tileTexts.PANAFTER)}\r\n {visibleTiles.fromOnlinebuchung && (\r\n \r\n \r\n \r\n }\r\n >\r\n \r\n Startbildschirm\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 htmlBeforeOrAfter = (id: string, html: string) => {\r\n if (html) {\r\n return
;\r\n }\r\n return null;\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 {htmlBeforeOrAfter('TUEBEFORE', apstate.tileTexts.TUEBEFORE)}\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 {htmlBeforeOrAfter('TUEAFTER', apstate.tileTexts.TUEAFTER)}\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 onclickMainsplacscreen = () => {\r\n const mainWindow = document.getElementById('MainSplashscreen');\r\n if (mainWindow) {\r\n const firstInp = mainWindow.querySelector('input');\r\n if (firstInp) {\r\n window.setTimeout(function () {\r\n firstInp.focus();\r\n }, 0);\r\n } else {\r\n const firstButton = mainWindow.querySelector('button');\r\n if (firstButton) {\r\n window.setTimeout(function () {\r\n firstButton.focus();\r\n }, 0);\r\n }\r\n }\r\n }\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 { 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","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","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","import { useContext, useEffect, useState } from 'react';\r\nimport { Badge } from 'react-bootstrap';\r\nimport Dropdown from 'react-bootstrap/Dropdown';\r\nimport { TbWorld } from 'react-icons/tb';\r\nimport { JsxElement } from 'typescript';\r\nimport AppPropsContext from '../../context/appPropsContext';\r\nimport LoginContext, { ILanguage } from '../../context/loginContext';\r\nimport { useLanguage } from '../../hooks/useLanguage';\r\nimport StyledButton from '../Buttons/StyledButton';\r\n\r\nconst LanguageSwitch = () => {\r\n const [allLanguages, setAllLanguages] = useState([]);\r\n\r\n const { state } = useContext(LoginContext);\r\n const { apstate } = useContext(AppPropsContext);\r\n const { setActiveLanguage, getAvailableLanguages } = useLanguage();\r\n\r\n useEffect(() => {\r\n getDropdownItems();\r\n }, [state.activeLanguage, apstate.availableLanguages]);\r\n\r\n const handleLanguageSwitch = async (e: any, language: ILanguage) => {\r\n if (e && e.currentTarget) {\r\n e.preventDefault();\r\n e.currentTarget.blur();\r\n }\r\n setActiveLanguage(language);\r\n };\r\n\r\n const getDropdownItems = () => {\r\n const allItems: any[] = [];\r\n const availableLanguages = getAvailableLanguages();\r\n\r\n if (Array.isArray(availableLanguages) && availableLanguages.length) {\r\n availableLanguages.forEach((language: ILanguage) => {\r\n allItems.push(\r\n handleLanguageSwitch(e, language)}>\r\n {language.name}\r\n ,\r\n );\r\n });\r\n }\r\n\r\n setAllLanguages(allItems);\r\n };\r\n\r\n return (\r\n 1 ? 'visible' : 'hidden' }}>\r\n \r\n \r\n \r\n \r\n {state.activeLanguage.language.id}\r\n \r\n {allLanguages}\r\n \r\n );\r\n};\r\n\r\nexport default LanguageSwitch;\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 LanguageSwitch from '../../components/LanguageSwitch/LanguageSwitch';\r\nimport Avatar from '../../components/SidebarItems/Avatar';\r\nimport MyTooltip from '../../components/Tooltip/MyTooltip';\r\n\r\nexport interface INavbarCheckInWL {\r\n showLogoutButton: boolean;\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 { 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 doBig?: boolean;\r\n doHTML?: boolean;\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 doBig: props.doBig ? props.doBig : false,\r\n doHTML: props.doHTML ? props.doHTML : false,\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 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 { useLanguage } from '../../hooks/useLanguage';\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 const { t } = useLanguage();\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 { useLanguage } from '../../hooks/useLanguage';\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 showSummaryBadgeHeader?: boolean;\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 { t } = useLanguage();\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 {t('ANMELD', 'Behandler und Termin wählen')}\r\n \r\n {props.showSummaryBadgeHeader && (\r\n <>\r\n \r\n \r\n {t('ANMELD', 'Fachrichtung')}\r\n \r\n {props.department ? props.department : ''}\r\n \r\n \r\n \r\n \r\n \r\n {t('ANMELD', 'Besuchsgrund')}\r\n \r\n {props.reason?.reasonName ? props.reason.reasonName : ''}\r\n \r\n \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 title?: string | null;\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 {props.title ? props.title : '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 { 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 allowAppointmentsEinweiser: 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 allowContactPerson: 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 tileTexts?: any;\r\n smtpUser?: string;\r\n mailFromAddress?: string;\r\n possibleCountries: string;\r\n availableLanguages: string;\r\n disableTerms: boolean;\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 allowAppointmentsEinweiser: 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 allowContactPerson: false,\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 tileTexts: {},\r\n smtpUser: '',\r\n mailFromAddress: '',\r\n possibleCountries: '',\r\n availableLanguages: 'de',\r\n disableTerms: false,\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 { Form } from 'react-bootstrap';\r\nimport TerminierungContext from '../../context/terminierungContext';\r\nimport { StyledFormLabelForInput } from '../StyledForm/SyledForm';\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 {/* {t('LOGIN', 'Benutzername')} */}\r\n {props.groupText ? props.groupText : 'Grund für Termin'}\r\n \r\n setRemark(e.target.value)} />\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 { useLanguage } from '../../hooks/useLanguage';\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 { t } = useLanguage();\r\n\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 {t('ANMELD', '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 { Alert, Row } from 'react-bootstrap';\r\nimport Container from 'react-bootstrap/Container';\r\nimport Form from 'react-bootstrap/Form';\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\nexport interface ICancelConfirmModalShow {\r\n show: boolean;\r\n}\r\n\r\ninterface ICancelConfirmModal extends ICancelConfirmModalShow {\r\n onHide: () => void;\r\n onSubmit: () => void;\r\n}\r\n\r\nconst CancelConfirmModal = (props: ICancelConfirmModal) => {\r\n const handleSubmit = (event: React.FormEvent) => {\r\n event.preventDefault();\r\n {\r\n props.onSubmit();\r\n }\r\n };\r\n\r\n return (\r\n \r\n \r\n Abbrechen\r\n \r\n
    \r\n \r\n
    \r\n \r\n
    \r\n \r\n

    Möchten Sie wirklich abbrechen? Ihre eingegebenen Daten gehen dabei verloren.

    \r\n
    \r\n
    \r\n
    \r\n \r\n \r\n \r\n \r\n \r\n Zurück\r\n \r\n \r\n \r\n Abbrechen\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 CancelConfirmModal;\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 { useLanguage } from '../../hooks/useLanguage';\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 CancelConfirmModal, { ICancelConfirmModalShow } from '../Modals/CancelConfirmModal/CancelConfirmModal';\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 handleErrorAfterBooking(): void;\r\n showCancelButton: boolean;\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 showCancelButton: boolean;\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 { t } = useLanguage();\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 [cancelConfirmModalShow, setCancelConfirmModalShow] = useState({\r\n show: false,\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 {t('BUTTONS', '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 {props.showCancelButton && (\r\n handleCancel()}>\r\n {t('BUTTONS', 'Abbrechen')}\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 {props.showCancelButton && (\r\n handleCancel()}>\r\n {t('BUTTONS', 'Abbrechen')}\r\n \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 setShowBookingButtonLoadingSpinner(false);\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 setShowBookingButtonLoadingSpinner(false);\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.custom,\r\n onHideCustom: onBookingError,\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 setShowBookingButtonLoadingSpinner(false);\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.custom,\r\n onHideCustom: onBookingError,\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 onBookingError = () => {\r\n props.handleErrorAfterBooking();\r\n };\r\n\r\n const handleBookingClick = () => {\r\n innerBookAppointment();\r\n };\r\n\r\n const handleCancelClick = () => {\r\n setCancelConfirmModalShow({ show: true });\r\n };\r\n\r\n const handleCancelClickAfterConfirm = () => {\r\n setCancelConfirmModalShow({ show: false });\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 setCancelConfirmModalShow({ show: false })}\r\n onSubmit={() => handleCancelClickAfterConfirm()}\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 { useLanguage } from '../../hooks/useLanguage';\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 { t } = useLanguage();\r\n\r\n const { sendGoogleAnalyticsPageView } = useGoogleAnalytics();\r\n\r\n const screenSize = useScreenResolution();\r\n\r\n useEffect(() => {\r\n sendGoogleAnalyticsPageView({\r\n page: '/AppointmentCategoryDepartment',\r\n title: 'Fachrichtung wählen',\r\n });\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 {t('ANMELD', 'Fachrichtung wählen')}\r\n

    {t('ANMELD', '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 { useLanguage } from '../../hooks/useLanguage';\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 { t } = useLanguage();\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

    {t('ANMELD', 'Behandler wählen')}

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

    \r\n {t('ANMELD', 'Fachrichtung')}\r\n \r\n {props.department}\r\n \r\n

    \r\n

    \r\n {t('ANMELD', '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 { createSelectComboboxOption, ISelectComboboxOption, SelectCombobox } from '../../components/Combobox/Combobox';\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 { useLanguage } from '../../hooks/useLanguage';\r\nimport AppointmentCategoryReasonHints from './AppointmentCategoryReasonHints';\r\n\r\ninterface IAppointmentCategoryReason {\r\n departments: IDepartments;\r\n hints?: IHints[];\r\n handleReasonClick(): void;\r\n showSummaryBadgeHeader?: boolean;\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 { t } = useLanguage();\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.value.length > 0 &&\r\n insuranceSelected &&\r\n insuranceSelected.value.length > 0 &&\r\n appTypeSelected &&\r\n appTypeSelected.value.length > 0\r\n ) {\r\n const filterVersicherungsart = getShortVersicherungsart(insuranceSelected.value);\r\n const filterTerminart = getShortTerminart(appTypeSelected.value);\r\n\r\n const filteredReasons = props.departments.reasons.filter((reason) => {\r\n if (\r\n reason.reasonName === reasonSelected.value &&\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.value,\r\n });\r\n tmdispatch({\r\n type: 'SELECTAPPOINTMENTTYPE',\r\n selectedAppointmentType: appTypeSelected.value,\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?.value) {\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?.value,\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.value;\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 const option = createSelectComboboxOption(filteredReason.reasonMainCode);\r\n setReasonMainCodeSelected(filteredReason.reasonMainCode);\r\n setReasonSelected1(option);\r\n setReasonSelected(null);\r\n setHints({\r\n reason: '',\r\n });\r\n } else {\r\n setReasonMainCodeSelected('');\r\n setReasonSelected1(e);\r\n setReasonSelected(e);\r\n }\r\n };\r\n\r\n const handleSetComboboxReasonSub = (e: any) => {\r\n const reason = e.value;\r\n if (reason.startsWith('Main|')) {\r\n setReasonMainCodeSelected(reason.split('|')[1]);\r\n } else {\r\n setReasonSelected(e);\r\n }\r\n };\r\n\r\n const handleSetComboboxInsurance = (e: any) => {\r\n const option: ISelectComboboxOption = createSelectComboboxOption(e.value.toString());\r\n setInsuranceSelected(option);\r\n // setInsuranceSelected(e.target.value.toString());\r\n };\r\n\r\n const handleSetComboboxAppType = (e: any) => {\r\n const option: ISelectComboboxOption = createSelectComboboxOption(e.value.toString());\r\n setAppTypeSelected(option);\r\n // setAppTypeSelected(e.target.value.toString());\r\n };\r\n\r\n const getVersicherungsartOptions = () => {\r\n const insuranceSelect: ISelectComboboxOption[] = [];\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 if (props.departments.versicherungsArt && props.departments.versicherungsArt.length > 0) {\r\n props.departments.versicherungsArt.forEach((versicherungsArt) => {\r\n const optionSelect: ISelectComboboxOption = { value: versicherungsArt, label: versicherungsArt };\r\n insuranceSelect.push(optionSelect);\r\n });\r\n } else {\r\n const optionSelectGesetzlich: ISelectComboboxOption = {\r\n value: TERMINART_GESETZLICH_LONG,\r\n label: TERMINART_GESETZLICH_LONG,\r\n };\r\n const optionSelectPrivat: ISelectComboboxOption = {\r\n value: TERMINART_PRIVAT_LONG,\r\n label: TERMINART_PRIVAT_LONG,\r\n };\r\n const optionSelectSelbst: ISelectComboboxOption = {\r\n value: TERMINART_SELBSTZAHLER_LONG,\r\n label: TERMINART_SELBSTZAHLER_LONG,\r\n };\r\n const optionSelectBG: ISelectComboboxOption = { value: TERMINART_BG_LONG, label: TERMINART_BG_LONG };\r\n insuranceSelect.push(optionSelectGesetzlich);\r\n insuranceSelect.push(optionSelectPrivat);\r\n insuranceSelect.push(optionSelectSelbst);\r\n insuranceSelect.push(optionSelectBG);\r\n }\r\n\r\n return insuranceSelect;\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 const option = createSelectComboboxOption(props.departments.versicherungsArt[0]);\r\n setInsuranceSelected(option);\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 const kontaktArtSelect: ISelectComboboxOption[] = [];\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 if (props.departments.kontaktArt && props.departments.kontaktArt.length > 0) {\r\n props.departments.kontaktArt.forEach((kontaktArt) => {\r\n const optionSelect: ISelectComboboxOption = { value: kontaktArt, label: kontaktArt };\r\n kontaktArtSelect.push(optionSelect);\r\n });\r\n } else {\r\n const optionVorOrt: ISelectComboboxOption = {\r\n value: VERSICHERUNG_VOR_ORT_LONG,\r\n label: VERSICHERUNG_VOR_ORT_LONG,\r\n };\r\n const optionVideo: ISelectComboboxOption = {\r\n value: VERSICHERUNG_PER_VIDEO_LONG,\r\n label: VERSICHERUNG_PER_VIDEO_LONG,\r\n };\r\n const optionTelefon: ISelectComboboxOption = {\r\n value: VERSICHERUNG_PER_TELEFON_LONG,\r\n label: VERSICHERUNG_PER_TELEFON_LONG,\r\n };\r\n kontaktArtSelect.push(optionVorOrt);\r\n kontaktArtSelect.push(optionVideo);\r\n kontaktArtSelect.push(optionTelefon);\r\n }\r\n\r\n return kontaktArtSelect;\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 const option = createSelectComboboxOption(props.departments.kontaktArt[0]);\r\n setAppTypeSelected(option);\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.value);\r\n }\r\n let filterTerminart = '';\r\n if (appTypeSelected) {\r\n filterTerminart = getShortTerminart(appTypeSelected.value);\r\n }\r\n\r\n const usedReasons: string[] = [];\r\n const usedReasonMainCodes: string[] = [];\r\n const reasonsDone = {};\r\n const reasonsSelect: ISelectComboboxOption[] = [];\r\n props.departments.reasons.forEach((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 const optionSelect: ISelectComboboxOption = { value: reason.reasonName, label: name };\r\n reasonsSelect.push(optionSelect);\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 const optionSelect: ISelectComboboxOption = { value: valueSub, label: name };\r\n reasonsSelect.push(optionSelect);\r\n }\r\n }\r\n }\r\n });\r\n\r\n return reasonsSelect;\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 const option = createSelectComboboxOption(props.departments.reasons[0].reasonName);\r\n setReasonSelected(option);\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 {t('ANMELD', 'Besuchsgrund wählen')}\r\n
    \r\n {props.showSummaryBadgeHeader && (\r\n
    \r\n \r\n {t('ANMELD', 'Besuchsgrund')}\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 {t('ANMELD', 'Versichertentyp')}\r\n \r\n \r\n \r\n {/* handleSetComboboxInsurance(e)}\r\n >\r\n \r\n {getVersicherungsartOptions()}\r\n */}\r\n handleSetComboboxInsurance(e)}\r\n />\r\n \r\n \r\n \r\n \r\n
    \r\n \r\n \r\n \r\n {t('ANMELD', 'Terminart')}\r\n \r\n \r\n \r\n {/* handleSetComboboxAppType(e)}\r\n >\r\n \r\n {getKontaktartOptions()}\r\n */}\r\n handleSetComboboxAppType(e)}\r\n />\r\n \r\n \r\n \r\n \r\n
    \r\n \r\n \r\n \r\n {t('ANMELD', 'Besuchsgrund')}\r\n \r\n \r\n \r\n {/* handleSetComboboxReason(e)}\r\n >\r\n \r\n {getBesuchsgrundOptions(null)}\r\n */}\r\n handleSetComboboxReason(e)}\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, false)}\r\n // \r\n handleSetComboboxReasonSub(e)}\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 EmbeddedPDF, { IEmbeddedPDFShow } from '../../components/Modals/PDFModal/EmbeddedPDF';\r\nimport EmbeddedPDFInModal from '../../components/Modals/PDFModal/EmbeddedPDFInModal';\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 { useLanguage } from '../../hooks/useLanguage';\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 { ISignPosData, 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 { t } = useLanguage();\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\r\n const [embeddedPdfModalShow, setEmbeddedPdfModalShow] = useState({\r\n show: false,\r\n modalTitle: '',\r\n pdfData: '',\r\n isSignable: false,\r\n isSigned: false,\r\n diagnosticReportData: '',\r\n signPosData: undefined,\r\n });\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 [forceClosePDF, setForceClosePDF] = 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, state.activeLanguage]);\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 let foundIndex = -1;\r\n if (forceClosePDF) {\r\n foundIndex = allSteps.findIndex((step) => {\r\n if (step.active === true) {\r\n return true;\r\n }\r\n });\r\n } else {\r\n 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 }\r\n\r\n if (foundIndex >= 0) {\r\n setActiveStep(foundIndex);\r\n setForceClosePDF(false);\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 setApointmentSelectionStepAndContent = () => {\r\n const foundIndex = allSteps.findIndex((step) => {\r\n if (step.id == ID_APPOINTMENT_SELECTION_WITH_PHYSICIAN || step.id == ID_APPOINTMENT_SELECTION) {\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 return foundIndex;\r\n }\r\n return 0;\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 let useEmbeddedPDF = false;\r\n let spd: ISignPosData[] | undefined = undefined;\r\n if (signPosData && signPosData.length > 0) {\r\n spd = JSON.parse(signPosData);\r\n if (spd && spd.length > 0) {\r\n useEmbeddedPDF = true;\r\n }\r\n }\r\n if (isSigned === 'true') {\r\n useEmbeddedPDF = true;\r\n }\r\n\r\n let pdfShowData: IPDFModalShow | undefined = undefined;\r\n let embeddedPdfShowData: IEmbeddedPDFShow | undefined = undefined;\r\n\r\n useEmbeddedPDF = true; //OVERRIDDEN, USE ALWAYS EMBEDDED PDF (because PDFModal with iFrame make problems on Tablet Browsers)\r\n\r\n if (useEmbeddedPDF) {\r\n embeddedPdfShowData = {\r\n show: useEmbeddedPDF,\r\n modalTitle: modalTitle,\r\n isSignable: isSignable === 'true' ? true : false,\r\n isSigned: isSigned === 'true' ? true : false,\r\n pdfData: pdfsrc,\r\n diagnosticReportData: response.data ? response.data : response,\r\n signPosData: spd,\r\n };\r\n } else {\r\n pdfShowData = {\r\n show: useEmbeddedPDF ? false : 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.data ? response.data : response,\r\n };\r\n }\r\n\r\n setPDFShow(pdfShowData, embeddedPdfShowData);\r\n };\r\n\r\n const setPDFShow = (pdfShowData?: IPDFModalShow, embeddedPdfShow?: IEmbeddedPDFShow) => {\r\n if (pdfShowData) {\r\n setPdfModalShow({\r\n show: true,\r\n modalTitle: pdfShowData.modalTitle,\r\n isSignable: pdfShowData.isSignable && pdfShowData.isSignable === true ? true : false,\r\n isSigned: pdfShowData.isSigned && pdfShowData.isSigned === true ? true : false,\r\n pdfData: pdfShowData.pdfData,\r\n diagnosticReportData: pdfShowData.diagnosticReportData,\r\n });\r\n } else if (embeddedPdfShow) {\r\n setEmbeddedPdfModalShow({\r\n show: true,\r\n modalTitle: embeddedPdfShow.modalTitle,\r\n isSignable: embeddedPdfShow.isSignable && embeddedPdfShow.isSignable === true ? true : false,\r\n isSigned: embeddedPdfShow.isSigned && embeddedPdfShow.isSigned === true ? true : false,\r\n pdfData: embeddedPdfShow.pdfData,\r\n diagnosticReportData: embeddedPdfShow.diagnosticReportData,\r\n signPosData: embeddedPdfShow.signPosData,\r\n });\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 isUsedAsWidget = () => {\r\n if (props.newAccountHashParams?.behFilter) {\r\n return true; // we assume that the AnmeldePage is used as a Widget in an iFrame\r\n } else if (props.newAccountHashParams?.isWidget && props.newAccountHashParams?.isWidget === true) {\r\n return true; // we assume that the AnmeldePage is used as a Widget in an iFrame\r\n }\r\n\r\n return false;\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 showLogoutButton = () => {\r\n if (isUsedAsWidget()) {\r\n return false;\r\n }\r\n return true;\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 setEmbeddedPdfModalShow({\r\n show: false,\r\n isSignable: false,\r\n isSigned: false,\r\n pdfData: '',\r\n diagnosticReportData: '',\r\n signPosData: undefined,\r\n });\r\n setForceClosePDF(true);\r\n const reloadData: IReloadPageData = {\r\n reload: true,\r\n withJourneyReload: true,\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\r\n const handleErrorAfterBooking = () => {\r\n const currentActiveStep = setApointmentSelectionStepAndContent();\r\n const reloadData: IReloadPageData = {\r\n reload: true,\r\n withJourneyReload: false,\r\n nextActiveStep: currentActiveStep,\r\n newStepValues: [\r\n {\r\n id: allSteps[currentActiveStep].id,\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 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 if (form.isSignable !== undefined && form.isSignable === true) {\r\n if (form.isSigned !== undefined && form.isSigned === true) {\r\n finished = true;\r\n }\r\n } else {\r\n finished = true;\r\n }\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 and all others not to avoid double active\r\n (e.g. pdf closed -> handleClosePDF() -> getNextUnfinishedStepNumber() -> reload)\r\n */\r\n if (reloadPageData.reload) {\r\n for (let i = 0; i < steps.length; i++) {\r\n steps[i].active = false;\r\n }\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: t('ANMELD', '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: t('ANMELD', '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: t('ANMELD', '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: t('ANMELD', '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: t('ANMELD', '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: t('ANMELD', '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: t('ANMELD', '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: t('ANMELD', '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: t('ANMELD', '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: t('ANMELD', '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: t('ANMELD', '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: t('ANMELD', '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: t('ANMELD', '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: t('ANMELD', '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: t('ANMELD', '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: t('ANMELD', '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: t('ANMELD', '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: t('ANMELD', '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: t('ANMELD', '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: t('ANMELD', '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: t('ANMELD', '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: t('ANMELD', '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: t('ANMELD', '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: t('ANMELD', '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: t('ANMELD', '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: t('ANMELD', '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: t('ANMELD', '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: t('ANMELD', '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: t('ANMELD', '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: t('ANMELD', '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: t('ANMELD', '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: t('ANMELD', '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: t('ANMELD', '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: t('ANMELD', '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: t('ANMELD', '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: t('ANMELD', '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 {\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 } else if (isFullscreenMode()) {\r\n return false;\r\n } else if (isUsedAsWidget()) {\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 handleClosePDFModal()}\r\n modalTitle={embeddedPdfModalShow.modalTitle ? embeddedPdfModalShow.modalTitle : ''}\r\n >\r\n handleClosePDFModal()}\r\n pdfData={embeddedPdfModalShow.pdfData}\r\n isSignable={embeddedPdfModalShow.isSignable}\r\n isSigned={embeddedPdfModalShow.isSigned}\r\n diagnosticReportData={embeddedPdfModalShow.diagnosticReportData}\r\n signPosData={embeddedPdfModalShow.signPosData}\r\n />\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","export const languageElements = {\r\n BUTTONS: {\r\n en: {\r\n Weiter: 'Next',\r\n Abbrechen: 'Cancel',\r\n 'Jetzt buchen': 'Book now',\r\n },\r\n },\r\n COMBOBOX: {\r\n en: {\r\n 'Keine Treffer gefunden': 'No results found',\r\n },\r\n },\r\n LOGIN: {\r\n en: {\r\n Anmelden: 'Login',\r\n Benutzername: 'Username',\r\n Passwort: 'Password',\r\n 'Ihr persönliches Portal': 'Your personal portal access',\r\n 'Die App für Ihr Handy': 'The app for your mobile phone',\r\n 'Zugangsdaten vergessen?': 'Forgot your login details?',\r\n 'Ihre Terminplanung ohne Account': 'Your scheduling without account',\r\n 'Neuen Termin anfordern': 'Request a new appointment',\r\n 'Standort wählen': 'Select location',\r\n },\r\n },\r\n ANMELD: {\r\n de: {\r\n 'Termin wählen': '{{appointmentName}} wählen',\r\n },\r\n en: {\r\n Fachrichtung: 'Medical Specialty',\r\n 'Fachrichtung wählen': 'Select Medical Specialty',\r\n 'Wählen Sie die gewünschte Fachrichtung aus': 'Select the desired specialization',\r\n 'Besuchsgrund wählen': 'Choose reason for visit',\r\n Besuchsgrund: 'Reason for visit',\r\n Versichertentyp: 'Type of insurance',\r\n 'Wählen Sie den Versichertentyp': 'Select the type of insurance',\r\n Terminart: 'Type of appointment',\r\n 'Wählen Sie die Terminart': 'Select the type of appointment',\r\n 'Wählen Sie den Besuchsgrund': 'Select the reason for your visit',\r\n Behandler: 'Physician',\r\n 'Behandler wählen': 'Choose physician',\r\n 'Termin wählen': 'Choose {{appointmentName}}',\r\n Termin: 'appointment',\r\n 'Wählen Sie Tag und Uhrzeit für': 'Select day and time for',\r\n 'Verfügbare Zeiten für den': 'Available times for',\r\n 'Termin buchen': 'Schedule Appointment',\r\n 'Daten eingeben': 'Enter data',\r\n 'Haben Sie bereits einen Account?': 'Already have an account?',\r\n 'Hier anmelden': 'Log in here',\r\n 'Account erstellen': 'Create account',\r\n 'Personendaten eingeben': 'Enter personal data',\r\n 'Termin bestätigen': 'Confirm appointment',\r\n 'Prüfen Sie Ihre Angaben.': 'Check your details.',\r\n 'Ihre persönlichen Daten': 'Your personal data',\r\n Bemerkung: 'Note',\r\n 'Behandler und Termin wählen': 'Choose physician and appointment',\r\n 'Mehr Termine anzeigen': 'Show more appointments',\r\n 'Weniger Termine anzeigen': 'Show fewer appointments',\r\n },\r\n },\r\n PERSONALDATA: {\r\n en: {\r\n Vorname: 'First name',\r\n Nachname: 'Last name',\r\n Titel: 'Academic title',\r\n Geburtstag: 'Date of birth',\r\n Geschlecht: 'Gender',\r\n Telefonnummer: 'Phone number',\r\n 'Mobil Telefonnummer': 'Mobile phone number',\r\n 'Mobil-Telefonnummer': 'Mobile phone number',\r\n 'E-Mail': 'Email',\r\n Postleitzahl: 'Zip code',\r\n Ort: 'City',\r\n Straße: 'Street',\r\n Hausnummer: 'House number',\r\n Land: 'Country',\r\n Versichertennummer: 'Insurance number',\r\n 'Versichertennr.': 'Insurance number',\r\n Krankenkasse: 'Health insurance',\r\n Sprache: 'Language',\r\n 'Bitte geben Sie Ihre Versichertennummer an.': 'Please enter your insurance number.',\r\n 'Bitte geben Sie Ihre Krankenkassse an.': 'Please enter your health insurance.',\r\n 'Bitte geben Sie Ihre Sprache an.': 'Please enter your language.',\r\n 'Bitte geben Sie Ihren Vornamen an.': 'Please enter your first name.',\r\n 'Bitte geben Sie Ihren Nachnamen an.': 'Please enter your last name.',\r\n 'Bitte geben Sie Ihren Geburtstag an.': 'Please enter your date of birth.',\r\n 'Bitte geben Sie Ihre E-Mail-Adresse an.': 'Please enter your email address.',\r\n 'Ungültiges E-Mail-Format': 'Invalid email format',\r\n 'Bitte geben Sie Ihre Telefonnummer an.': 'Please enter your phone number.',\r\n 'Bitte geben Sie Ihr Geschlecht an.': 'Please enter your gender',\r\n 'Bitte geben Sie Ihre Straße an.': 'Please enter your street.',\r\n 'Bitte geben Sie Ihre Hausnummer an.': 'Please enter your house number.',\r\n 'Bitte geben Sie Ihre Postleitzahl an.': 'Please enter your zip code.',\r\n 'Bitte geben Sie Ihren Ort an.': 'Please enter your city.',\r\n 'Bitte geben Sie Ihr Land an.': 'Please enter your country.',\r\n 'Bitte geben Sie Ihre Mobil-Telefonnummer an.': 'Please enter your mobile phone number.',\r\n 'Bitte geben Sie Ihren Titel an.': 'Please enter your academic title.',\r\n 'Bitte geben Sie einen Benutzernamen an.': 'Please enter a username.',\r\n 'Bitte geben Sie ein Passwort an.': 'Please enter a password.',\r\n 'Gewünschte Studienteilnahmen': 'Desired study participations',\r\n 'Kontaktperson hinzufügen': 'Add contact person',\r\n },\r\n },\r\n COMMON: {\r\n en: {\r\n Impressum: 'Legal information',\r\n Datenschutz: 'Data privacy',\r\n },\r\n },\r\n};\r\n","import { useCallback, useContext } from 'react';\r\nimport AppPropsContext from '../context/appPropsContext';\r\nimport LoginContext, { ILanguage, ILanguageData } from '../context/loginContext';\r\nimport { languageElements } from '../languages/languageMap';\r\n\r\nexport const useLanguage = () => {\r\n const { state, dispatch } = useContext(LoginContext);\r\n const { apstate } = useContext(AppPropsContext);\r\n\r\n /**\r\n * get the available languages from the app properties 'availableLanguages'\r\n * @returns an array of available languages with id and name (e.g. [{id: 'de', name: 'Deutsch'}, {id: 'en', name: 'Englisch'}]), default is 'de'\r\n */\r\n const getAvailableLanguages = useCallback(() => {\r\n let languages: string[] = [];\r\n if (apstate.availableLanguages) {\r\n languages = apstate.availableLanguages.split(',');\r\n } else {\r\n languages = ['de'];\r\n }\r\n\r\n const availableLanguages: ILanguage[] = [];\r\n if (Array.isArray(languages) && languages.length) {\r\n availableLanguages.push({\r\n id: 'de',\r\n name: 'Deutsch',\r\n });\r\n languages.forEach((lang: string) => {\r\n if ('en' === lang) {\r\n availableLanguages.push({\r\n id: 'en',\r\n name: 'Englisch',\r\n });\r\n }\r\n });\r\n }\r\n\r\n return availableLanguages;\r\n }, [apstate.availableLanguages]);\r\n\r\n /**\r\n * get the active language from state\r\n */\r\n const getActiveLanguage = useCallback((): ILanguageData | undefined => {\r\n return state.activeLanguage;\r\n }, [state.activeLanguage]);\r\n\r\n /**\r\n * set the selected language as active language\r\n */\r\n const setActiveLanguage = useCallback(\r\n (props: ILanguage) => {\r\n (window as any).app.language = props.id;\r\n dispatch({\r\n type: 'SETACTIVELANGUAGE',\r\n activeLanguage: {\r\n language: props,\r\n changedFromUser: true,\r\n },\r\n });\r\n },\r\n [state.activeLanguage],\r\n );\r\n\r\n /**\r\n * get the language data with the given id from the available languages\r\n *\r\n * @param language the language id\r\n * @returns the language data with id and name (e.g. {id: 'de', name: 'Deutsch'}), default is 'de'\r\n */\r\n const getLanguageDataWithId = (language: string) => {\r\n const availableLanguages = getAvailableLanguages();\r\n for (const lang of availableLanguages) {\r\n if (lang.id === language) {\r\n return lang;\r\n }\r\n }\r\n return { id: 'de', name: 'Deutsch' };\r\n };\r\n\r\n /**\r\n * get the system language from the browser\r\n */\r\n const getSystemLanguage = useCallback(() => {\r\n return Intl.DateTimeFormat().resolvedOptions().locale;\r\n }, [state.activeLanguage]);\r\n\r\n /**\r\n * get the system language data\r\n */\r\n const getSystemLanguageData = useCallback(() => {\r\n const systemLanguage = getSystemLanguage();\r\n const sysLanguage = getLanguageDataWithId(systemLanguage);\r\n return sysLanguage;\r\n }, [state.activeLanguage]);\r\n\r\n /**\r\n * set the system language as active language (only if available), default is 'de'\r\n */\r\n const setSystemLanguage = useCallback(() => {\r\n const sysLanguage = getSystemLanguageData();\r\n\r\n (window as any).app.language = sysLanguage.id;\r\n dispatch({\r\n type: 'SETACTIVELANGUAGE',\r\n activeLanguage: {\r\n language: sysLanguage,\r\n changedFromUser: false,\r\n },\r\n });\r\n }, [state.activeLanguage]);\r\n\r\n /**\r\n * check if the language was changed from the user\r\n */\r\n const isLanguageChangedFromUser = useCallback(() => {\r\n return state.activeLanguage.changedFromUser;\r\n }, [state.activeLanguage]);\r\n\r\n const lookupTranslation = (module: string, language: string, refText: string) => {\r\n const moduleData = languageElements[module];\r\n if (!moduleData) {\r\n return undefined;\r\n }\r\n const languageData = moduleData[language];\r\n if (!languageData) {\r\n return undefined;\r\n }\r\n return languageData[refText];\r\n };\r\n\r\n /**\r\n * translate the given reference text with the given module and language\r\n * e.g. {t('MODULE', 'refText')} or with parameter {t('MODULE', 'refText', { name: 'ParamValue' })}\r\n * @param module the module name (e.g. LOGIN)\r\n * @param refText the reference text to translate\r\n * @param param optional parameter object to replace in the translation text\r\n * @returns the translated text or the reference text if not found\r\n */\r\n const t = (module: string, refText: string, param?: any) => {\r\n let translationText = lookupTranslation(module, state.activeLanguage.language.id, refText);\r\n if (!translationText) {\r\n return refText;\r\n }\r\n if (param) {\r\n for (const key in param) {\r\n translationText = translationText.replace(`{{${key}}}`, param[key]);\r\n }\r\n }\r\n return translationText;\r\n };\r\n\r\n return {\r\n getAvailableLanguages,\r\n setActiveLanguage,\r\n getActiveLanguage,\r\n setSystemLanguage,\r\n isLanguageChangedFromUser,\r\n getSystemLanguageData,\r\n t,\r\n };\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.card.borderRadius};\r\n border-color: #e0e1e1;\r\n overflow: hidden;\r\n text-align: left;\r\n box-shadow: ${(props) => props.theme.card.boxShadow};\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: ${(props) => props.theme.card.borderRadius};\r\n width: ${(prop) => (prop.cardwidth ? prop.cardwidth : '380px')};\r\n height: 190px;\r\n box-shadow: ${(props) => props.theme.card.boxShadow};\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: ${(props) => props.theme.card.borderRadius};\r\n border-color: #e0e1e1;\r\n overflow: hidden;\r\n box-shadow: ${(props) => props.theme.card.boxShadow};\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: ${(props) => props.theme.card.borderRadius};\r\n border-color: #e0e1e1;\r\n overflow: hidden;\r\n box-shadow: ${(props) => props.theme.card.boxShadow};\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: ${(props) => props.theme.card.borderRadius};\r\n border-color: #e0e1e1;\r\n overflow: hidden;\r\n box-shadow: ${(props) => props.theme.card.boxShadow};\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: ${(props) => props.theme.card.borderRadius};\r\n width: ${(prop) => (prop.cardwidth ? prop.cardwidth : '300px')};\r\n height: ${(prop) => (prop.cardwidth ? prop.cardwidth : '300px')};\r\n box-shadow: ${(props) => props.theme.card.boxShadow};\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: ${(props) => props.theme.card.borderRadius};\r\n width: ${(prop) => (prop.cardwidth ? prop.cardwidth : '380px')};\r\n height: 190px;\r\n box-shadow: ${(props) => props.theme.card.boxShadow};\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 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 { 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 { 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 case 'LU':\r\n case 'L':\r\n return 'Luxemburg';\r\n case 'IT':\r\n case 'I':\r\n return 'Italien';\r\n case 'FR':\r\n case 'F':\r\n return 'Frankreich';\r\n case 'ES':\r\n case 'E':\r\n return 'Spanien';\r\n case 'NL':\r\n return 'Niederlande';\r\n case 'HU':\r\n case 'H':\r\n return 'Ungarn';\r\n case 'DK':\r\n return 'Dänemark';\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 allowAppointmentsEinweiser: propRes.allowAppointmentsEinweiser,\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 allowContactPerson: propRes.allowContactPerson,\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 tileTexts: propRes.tileTexts,\r\n smtpUser: propRes.smtpUser,\r\n mailFromAddress: propRes.mailFromAddress,\r\n possibleCountries: propRes.possibleCountries,\r\n availableLanguages: propRes.availableLanguages,\r\n disableTerms: propRes.disableTerms,\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 { 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 { useLanguage } from '../../hooks/useLanguage';\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 { t } = useLanguage();\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 {t('LOGIN', '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 { useLanguage } from '../../hooks/useLanguage';\r\nimport { 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 { t } = useLanguage();\r\n\r\n const textColor = props.textColor ? props.textColor : '#007bff';\r\n\r\n return (\r\n \r\n {props.impressumLink && (\r\n \r\n {t('COMMON', 'Impressum')}\r\n \r\n )}\r\n {props.datenschutzLink && props.impressumLink && ' | '}\r\n {props.datenschutzLink && (\r\n \r\n {t('COMMON', 'Datenschutz')}\r\n \r\n )}\r\n \r\n );\r\n};\r\n\r\nexport const ImpressumNormal = (props: IImpressumElement) => {\r\n const { t } = useLanguage();\r\n\r\n const textColor = props.textColor ? props.textColor : '#007bff';\r\n return (\r\n \r\n {props.impressumLink && (\r\n \r\n {t('COMMON', 'Impressum')}\r\n \r\n )}\r\n {props.datenschutzLink && props.impressumLink && ' | '}\r\n {props.datenschutzLink && (\r\n \r\n {t('COMMON', 'Datenschutz')}\r\n \r\n )}\r\n \r\n );\r\n};\r\n\r\nexport default Impressum;\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 { 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 { 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 * 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 { 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 AppPropsContext from '../../../context/appPropsContext';\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 const { apstate } = useContext(AppPropsContext);\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 Zur Verifizierung haben wir Ihnen eine E-Mail von {apstate.mailFromAddress} mit einem\r\n Aktivierungslink zugesendet. Bitte überprüfen Sie Ihren E-Mail Posteingang und klicken\r\n Sie auf den enthaltenen Link, um Ihren Account zu aktivieren. Prüfen Sie ggf. auch Ihren\r\n Spam-Ordner.\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 { useContext, useEffect, useState } from 'react';\r\nimport Alert from 'react-bootstrap/Alert';\r\nimport Row from 'react-bootstrap/esm/Row';\r\nimport Modal from 'react-bootstrap/Modal';\r\nimport { useNavigate } from 'react-router-dom';\r\nimport AppPropsContext from '../../../context/appPropsContext';\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 StyledButton from '../../Buttons/StyledButton';\r\nimport StyledCol from '../../Cols/StyledCol';\r\nimport InitialPassword from '../../User/InitialPassword';\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 const navigate = useNavigate();\r\n const { apstate } = useContext(AppPropsContext);\r\n const { state } = useContext(LoginContext);\r\n const [consignationFinished, setConsignationFinished] = useState(false);\r\n const [initPassword, setInitPassword] = useState(false);\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 Zur Verifizierung haben wir Ihnen eine E-Mail von {apstate.mailFromAddress} mit einem\r\n Aktivierungslink zugesendet. Bitte überprüfen Sie Ihren E-Mail Posteingang und klicken\r\n Sie auf den enthaltenen Link, um Ihren Account zu aktivieren. Prüfen Sie ggf. auch Ihren\r\n Spam-Ordner.\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 {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 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 { useLanguage } from '../../hooks/useLanguage';\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 { t } = useLanguage();\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\r\n 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.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.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 {t('LOGIN', '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 {t('LOGIN', 'Ihr persönliches Portal')} \r\n ) =>\r\n handleSubmit(event, username, password)\r\n }\r\n >\r\n \r\n \r\n \r\n \r\n {t('LOGIN', 'Benutzername')}\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 {/* {t('LOGIN', 'Passwort', { name: 'Test' })} */}\r\n {t('LOGIN', '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 navigate(Paths.RESET_PASSWORD)}\r\n >\r\n {t('LOGIN', '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 === '120px' ? (\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 === '120px' ? (\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 const getNavTextSize = () => {\r\n if (screenSize.width < 410) {\r\n return '0.8rem';\r\n } else if (screenSize.width > 990 && screenSize.width < 1100) {\r\n return '0.8rem';\r\n } else {\r\n return '1rem';\r\n }\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\nimport { showAlertMessage } from '../../utils/alertHandling';\r\nimport AlertContext, { AlertOnHide, AlertType } from '../../context/alertContext';\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 const { alertdispatch } = useContext(AlertContext);\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(currentActiveStep);\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 | null) => {\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) {\r\n // console.log('problem to book appointment');\r\n if (response.error === 'Server Error') {\r\n setBookSuccess(false);\r\n } else {\r\n setBookSuccess(false);\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 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 { 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 { 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 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 { 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 { 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 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 produce from 'immer';\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 if (state.activeUserId && foundResource?.resource) {\r\n const resResource = produce(foundResource?.resource, (draft: any) => {\r\n draft.participant.forEach((p) => {\r\n if (p.actor.reference === 'Patient/unknown') {\r\n p.actor.reference = 'Patient/'.concat(state.activeUserId);\r\n }\r\n });\r\n });\r\n return resResource;\r\n }\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 { default as Select, StylesConfig } from 'react-select';\r\nimport { useLanguage } from '../../hooks/useLanguage';\r\n\r\nexport interface ISelectComboboxOption {\r\n value: string;\r\n label: string;\r\n}\r\n\r\nexport interface ISelectComboboxStyle {\r\n isInvalid?: boolean;\r\n}\r\n\r\nexport const createSelectComboboxOption = (option: string): ISelectComboboxOption => {\r\n return {\r\n value: option,\r\n label: option,\r\n };\r\n};\r\n\r\nexport const createSelectComboboxOptions = (options: string[]): ISelectComboboxOption[] => {\r\n return options.map((option) => {\r\n return {\r\n value: option,\r\n label: option,\r\n };\r\n });\r\n};\r\n\r\nexport const getReactSelectComboBoxDefaultStyles = (props: ISelectComboboxStyle) => {\r\n const getBorderColor = (menuIsOpen: boolean, isInvalid: boolean | undefined) => {\r\n if (isInvalid) {\r\n return '#dc3545';\r\n } else if (menuIsOpen) {\r\n return '#80bdff';\r\n } else {\r\n return '#ced4da';\r\n }\r\n };\r\n\r\n const getBackgroundImage = (isInvalid: boolean | undefined) => {\r\n if (isInvalid) {\r\n //return 'url(\"data:image/svg+xml,%3Csvg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%220 0 24 24%22 fill=%22none%22 stroke=%22%23dc3545%22 stroke-width=%222%22 stroke-linecap=%22round%22 stroke-linejoin=%22round%22%3E%3Ccircle cx=%2212%22 cy=%2212%22 r=%2210%22/%3E%3Cline x1=%2212%22 y1=%2216%22 x2=%2212%22 y2=%2212%22/%3E%3Cline x1=%2212%22 y1=%2218%22 x2=%2212%22 y2=%2218%22/%3E%3C/svg%3E\")';\r\n return \"url(\\\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' fill='none' stroke='%23dc3545' viewBox='0 0 12 12'%3e%3ccircle cx='6' cy='6' r='4.5'/%3e%3cpath stroke-linejoin='round' d='M5.8 3.6h.4L6 6.5z'/%3e%3ccircle cx='6' cy='8.2' r='.6' fill='%23dc3545' stroke='none'/%3e%3c/svg%3e\\\")\";\r\n }\r\n return 'none';\r\n };\r\n\r\n const colourStyles: StylesConfig = {\r\n control: (styles, { menuIsOpen, isFocused, isDisabled }) => ({\r\n ...styles,\r\n backgroundColor: 'white',\r\n boxShadow: menuIsOpen ? '0 0 0 0.2rem rgba(0, 123, 255, 0.25)' : undefined,\r\n borderColor: getBorderColor(menuIsOpen, props.isInvalid),\r\n backgroundImage: getBackgroundImage(props.isInvalid),\r\n backgroundRepeat: 'no-repeat',\r\n backgroundPosition: 'right calc(.375em + .1875rem) center',\r\n backgroundSize: 'calc(.75em + .375rem) calc(.75em + .375rem)',\r\n fontWeight: 400,\r\n lineHeight: '1.5',\r\n fontSize: '1rem',\r\n textAlign: 'left',\r\n paddingLeft: '0.375rem',\r\n '&:hover': getBorderColor(menuIsOpen, props.isInvalid),\r\n }),\r\n placeholder: (styles, {}) => {\r\n return {\r\n ...styles,\r\n color: '#495057',\r\n };\r\n },\r\n dropdownIndicator: (styles, {}) => {\r\n return {\r\n ...styles,\r\n color: '#60666C',\r\n width: '1.97rem',\r\n };\r\n },\r\n indicatorsContainer: (styles, {}) => {\r\n const showIndicator = () => {\r\n if (props.isInvalid) {\r\n return 'none';\r\n }\r\n return 'flex';\r\n };\r\n\r\n return {\r\n ...styles,\r\n display: showIndicator(),\r\n };\r\n },\r\n option: (styles, { isDisabled, isFocused, isSelected }) => {\r\n return {\r\n ...styles,\r\n /* CHANGE FOR CUSTOM STYLES IN OPENED COMBOBOX\r\n backgroundColor: isDisabled\r\n ? undefined\r\n : isSelected\r\n ? 'rgb(25, 103, 210)'\r\n : isFocused\r\n ? 'rgb(25, 103, 210)'\r\n : undefined,\r\n color: isDisabled ? '#495057' : isSelected ? 'white' : isFocused ? 'white' : '#495057',*/\r\n fontWeight: 400,\r\n lineHeight: '1.5',\r\n fontSize: '1rem',\r\n };\r\n },\r\n };\r\n\r\n return colourStyles;\r\n};\r\n\r\ntype ISelectComboboxProps = React.ComponentProps & {\r\n isInvalid?: boolean;\r\n};\r\n\r\nexport const SelectCombobox = (props: ISelectComboboxProps) => {\r\n const { t } = useLanguage();\r\n\r\n let style = getReactSelectComboBoxDefaultStyles({ isInvalid: props.isInvalid });\r\n if (props.styles) {\r\n style = props.styles;\r\n }\r\n return