{"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","cbxShowAboutbutton","cbxShowPIDEinweiser","cbxShowPatAddrEinweiser","cbxShowPatOrganization","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","getAndSetAppProperties","getImpressum","impressumLink","datenschutzLink","textColor","button","secondary","isExtendedPhysicians","isFullscreenMode","enableFullscreenMode","disableFullscreenMode","getCountDaysToVisualize","w","innerWidth","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","createAddressLine","houseNr","addressLine","modifyPatientResource","originalPatientResource","newData","newPatientResource","formatedBirthdate","address","i","use","telecom","getGenderEN","foundInsuranceNrEntry","given","family","prefixPosition","_prefix","j","z","valueCode","prefix","line","_line","streetNameFound","houseNumberFound","foundPhoneEntry","postalCode","patientResource","newPlannedStudies","foundEntry","studyEntries","updatePatientResourcePlannedStudies","getPatientId","patientdataJson","getPatientNumber","ele","element","getFamilyName","nameArr","familyName","getGivenName","givenName","getInsuranceNr","getOrganizationName","orga","managingOrganization","getGender","getHomePhone","telecomArr","getMobilePhone","getAcademicTitle","arrayPosition","getCountry","addressArr","getCountryLongName","getHomeEmail","getHomeCity","getHomeStreet","lineExtensions","getHomeHouseNr","getHomePostalCode","getLanguage","communication","communcationArr","getInsuranceName","getPlannedStudies","allPlannedStudies","plannedStudySelection","birthdayFormated","getBirthdayPrettyFormatedWithAge","getBirthDate","patientId","patientNumber","organization","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","charAt","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","screenSize","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","substring","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","tellEnrollId","wsc","lnr","initWebSocket","wsLocation","WebSocket","onopen","isWebApp","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","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","trim","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.c019e9a8.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 cbxShowAboutbutton: boolean;\r\n cbxShowPIDEinweiser: boolean;\r\n cbxShowPatAddrEinweiser: boolean;\r\n cbxShowPatOrganization: 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 cbxShowAboutbutton: action.cbxShowAboutbutton,\r\n cbxShowPIDEinweiser: action.cbxShowPIDEinweiser,\r\n cbxShowPatAddrEinweiser: action.cbxShowPatAddrEinweiser,\r\n cbxShowPatOrganization: action.cbxShowPatOrganization,\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 const w = window.innerWidth;\r\n if (!apstate.countDaysToVisualize) {\r\n return 0;\r\n } else if (w >= 768 && w < 890) {\r\n return MAX_DAYS_SMALL_DEVICES;\r\n } else if (w > 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 managingOrganization?: 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\nconst createAddressLine = (street: string | undefined, houseNr: string | undefined) => {\r\n let addressLine = '';\r\n if (street !== undefined) {\r\n addressLine += street;\r\n if (houseNr !== undefined) {\r\n addressLine += ' ';\r\n }\r\n }\r\n if (houseNr !== undefined) {\r\n addressLine += houseNr;\r\n }\r\n return addressLine;\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 use: 'home',\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 || newData.streetNr !== 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] = createAddressLine(\r\n newData.street,\r\n newData.streetNr,\r\n );\r\n } else {\r\n newPatientResource.data.address[i].line = [createAddressLine(newData.street, newData.streetNr)];\r\n }\r\n if (newPatientResource.data.address[i]._line !== undefined) {\r\n if (newPatientResource.data.address[i]._line[0].extension) {\r\n let streetNameFound = false;\r\n let houseNumberFound = false;\r\n for (let j = 0; j < newPatientResource.data.address[i]._line[0].extension.length; j++) {\r\n if (\r\n newPatientResource.data.address[i]._line[0].extension[j].url ===\r\n 'http://hl7.org/fhir/StructureDefinition/iso21090-ADXP-streetName'\r\n ) {\r\n if (newData.street !== undefined && newData.street.length > 0) {\r\n newPatientResource.data.address[i]._line[0].extension[j].valueString =\r\n newData.street;\r\n } else {\r\n newPatientResource.data.address[i]._line[0].extension[j].valueString = '';\r\n }\r\n streetNameFound = true;\r\n }\r\n if (\r\n newPatientResource.data.address[i]._line[0].extension[j].url ===\r\n 'http://hl7.org/fhir/StructureDefinition/iso21090-ADXP-houseNumber'\r\n ) {\r\n if (newData.streetNr !== undefined && newData.streetNr.length > 0) {\r\n newPatientResource.data.address[i]._line[0].extension[j].valueString =\r\n newData.streetNr;\r\n } else {\r\n newPatientResource.data.address[i]._line[0].extension[j].valueString = '';\r\n }\r\n houseNumberFound = true;\r\n }\r\n }\r\n if (!streetNameFound && newData.street !== undefined && newData.street !== '') {\r\n newPatientResource.data.address[i]._line[0].extension.push({\r\n url: 'http://hl7.org/fhir/StructureDefinition/iso21090-ADXP-streetName',\r\n valueString: newData.street,\r\n });\r\n }\r\n if (!houseNumberFound && newData.streetNr !== undefined && newData.streetNr !== '') {\r\n newPatientResource.data.address[i]._line[0].extension.push({\r\n url: 'http://hl7.org/fhir/StructureDefinition/iso21090-ADXP-houseNumber',\r\n valueString: newData.streetNr,\r\n });\r\n }\r\n } else {\r\n newPatientResource.data.address[i]._line = [\r\n {\r\n extension: [],\r\n },\r\n ];\r\n if (newData.street !== undefined && newData.street !== '') {\r\n newPatientResource.data.address[i]._line[0].extension.push({\r\n url: 'http://hl7.org/fhir/StructureDefinition/iso21090-ADXP-streetName',\r\n valueString: newData.street,\r\n });\r\n }\r\n if (newData.streetNr !== undefined && newData.streetNr !== '') {\r\n newPatientResource.data.address[i]._line[0].extension.push({\r\n url: 'http://hl7.org/fhir/StructureDefinition/iso21090-ADXP-houseNumber',\r\n valueString: newData.streetNr,\r\n });\r\n }\r\n }\r\n } else {\r\n // add _line with extensions, but add only values in extension if we have a street and/ or streetNr\r\n if (\r\n (newData.street !== undefined && newData.street.length > 0) ||\r\n (newData.streetNr !== undefined && newData.streetNr.length > 0)\r\n ) {\r\n newPatientResource.data.address[i]._line = [\r\n {\r\n extension: [],\r\n },\r\n ];\r\n if (newData.street !== undefined) {\r\n newPatientResource.data.address[i]._line[0].extension.push({\r\n url: 'http://hl7.org/fhir/StructureDefinition/iso21090-ADXP-streetName',\r\n valueString: newData.street,\r\n });\r\n }\r\n if (newData.streetNr !== undefined) {\r\n newPatientResource.data.address[i]._line[0].extension.push({\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 if (newData.street !== undefined || newData.streetNr !== undefined) {\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 newPatientResource.data.address[0].line[0] = newData.street + ' ' + newData.streetNr;\r\n }\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 use: 'home',\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 getOrganizationName = (patientdataJson: IPatientResource) => {\r\n const orga = patientdataJson.managingOrganization;\r\n\r\n if (orga !== undefined) {\r\n if (orga.display) {\r\n return orga.display;\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 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' && addressArr[i]._line) {\r\n const lineExtensions = addressArr[i]._line[0].extension;\r\n for (let j = 0; j < lineExtensions.length; j++) {\r\n if (lineExtensions[j].url === 'http://hl7.org/fhir/StructureDefinition/iso21090-ADXP-streetName') {\r\n return lineExtensions[j].valueString;\r\n }\r\n }\r\n }\r\n }\r\n }\r\n return undefined;\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 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' && addressArr[i]._line) {\r\n const lineExtensions = addressArr[i]._line[0].extension;\r\n for (let j = 0; j < lineExtensions.length; j++) {\r\n if (lineExtensions[j].url === 'http://hl7.org/fhir/StructureDefinition/iso21090-ADXP-houseNumber') {\r\n return lineExtensions[j].valueString;\r\n }\r\n }\r\n }\r\n }\r\n }\r\n return undefined;\r\n};\r\n\r\n// export 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\n// export 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\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 organization: getOrganizationName(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 cbxShowAboutbutton: boolean;\r\n cbxShowPIDEinweiser: boolean;\r\n cbxShowPatAddrEinweiser: boolean;\r\n cbxShowPatOrganization: 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 cbxShowAboutbutton: true,\r\n cbxShowPIDEinweiser: false,\r\n cbxShowPatAddrEinweiser: false,\r\n cbxShowPatOrganization: true,\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 cbxShowAboutbutton: propRes.cbxShowAboutbutton,\r\n cbxShowPIDEinweiser: propRes.cbxShowPIDEinweiser,\r\n cbxShowPatAddrEinweiser: propRes.cbxShowPatAddrEinweiser,\r\n cbxShowPatOrganization: propRes.cbxShowPatOrganization,\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