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

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

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

Something went wrong.

\r\n

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

\r\n

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

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

{alertstate.alertMessage.alertTxt}

\r\n ) : (\r\n

{alertstate.alertMessage.alertTxt}

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

{props.loadingText}

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

X

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

\r\n handleWeekBack()}\r\n disabled={firstYearOfData > backwardCheck()}\r\n >\r\n \r\n \r\n Woche {selectedWeekNumber}\r\n handleWeekForward()}\r\n disabled={lastYearOfData < forwardCheck()}\r\n >\r\n \r\n \r\n

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

404 Error

\r\n

cannot find page

\r\n
\r\n );\r\n};\r\n\r\nexport default Error;\r\n","import { useContext } from 'react';\r\nimport { useNavigate } from 'react-router-dom';\r\nimport ExecuteRuleContext from '../../context/executeRuleContext';\r\nimport { Paths } from '../../Routes';\r\nimport { setRuleProperties } from '../../utils/executeRuleUtils';\r\nimport { getQueryParams } from '../../utils/urlUtils';\r\n\r\nconst ExecuteRule = () => {\r\n const navigate = useNavigate();\r\n const { executeruledispatch } = useContext(ExecuteRuleContext);\r\n\r\n const hashParams = getQueryParams(location.hash);\r\n setRuleProperties(hashParams, executeruledispatch);\r\n navigate(Paths.HOME);\r\n return null;\r\n};\r\n\r\nexport default ExecuteRule;\r\n","import { useContext, useState } from 'react';\r\nimport { Container, Form } from 'react-bootstrap';\r\nimport Card from 'react-bootstrap/esm/Card';\r\nimport Col from 'react-bootstrap/esm/Col';\r\nimport Row from 'react-bootstrap/esm/Row';\r\nimport { FaRegCalendarAlt } from 'react-icons/fa';\r\nimport { useNavigate } from 'react-router-dom';\r\nimport { ThemeContext } from 'styled-components';\r\nimport { Paths } from '../../Routes';\r\nimport AppPropsContext from '../../context/appPropsContext';\r\nimport { GoogleAnalyticsAction, GoogleAnalyticsCategory, useGoogleAnalytics } from '../../hooks/useGoogleAnalytics';\r\nimport StyledButton from '../Buttons/StyledButton';\r\nimport { StyledMainCardTitle, StyledProfileCard } from '../Cards/StyledCard';\r\nimport { CenterDiv, RightDiv } from '../Div/StyledDiv';\r\nconst EnrollCodeBox = () => {\r\n const navigate = useNavigate();\r\n const themeContext = useContext(ThemeContext);\r\n const { apstate } = useContext(AppPropsContext);\r\n\r\n const { sendGoogleAnalyticsEvent } = useGoogleAnalytics();\r\n //const screenSize = useScreenResolution();\r\n\r\n const [anmeldKatSelected, setAnmeldKatSelected] = useState();\r\n\r\n // const getMarginRightLeft = () => {\r\n // if (screenSize.width > 1700) {\r\n // return '50px';\r\n // } else if (screenSize.width > 1300) {\r\n // return '20px';\r\n // } else {\r\n // return '10px';\r\n // }\r\n // };\r\n\r\n const handleSetAnmeldKat = (e: any) => {\r\n setAnmeldKatSelected(e.target.value.toString());\r\n };\r\n\r\n const getAnmeldKatOptions = () => {\r\n // if (props.departments.versicherungsArt && props.departments.versicherungsArt.length > 0) {\r\n // return props.departments.versicherungsArt.map((versicherungsArt) => (\r\n // \r\n // ));\r\n // } else {\r\n // return (\r\n // <>\r\n // \r\n // \r\n // \r\n // );\r\n // }\r\n\r\n if (apstate.anmeldeContexts && apstate.anmeldeContexts.length > 0) {\r\n return apstate.anmeldeContexts.map((anmeldeContext) => (\r\n \r\n ));\r\n } else {\r\n return null;\r\n }\r\n\r\n // return (\r\n // <>\r\n // \r\n // \r\n // \r\n // );\r\n };\r\n\r\n const handleTerminAnfordernClick = () => {\r\n sendGoogleAnalyticsEvent({\r\n category: GoogleAnalyticsCategory.HOMESCREEN,\r\n action: GoogleAnalyticsAction.CLICK,\r\n label: 'Standort ' + anmeldKatSelected + ' ausgewählt',\r\n });\r\n navigate(Paths.NEUER_ACCOUNT_WL + '?reason=' + anmeldKatSelected + '&type=NewAccount');\r\n };\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n Ihre Terminplanung ohne Account\r\n \r\n \r\n \r\n \r\n \r\n handleSetAnmeldKat(e)}\r\n >\r\n \r\n {getAnmeldKatOptions()}\r\n \r\n \r\n \r\n handleTerminAnfordernClick()}\r\n >\r\n Neuen Termin anfordern\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n /* ALTE VARIANTE \r\n return (\r\n \r\n \r\n \r\n \r\n Sie haben einen Termincode?\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n navigate(Paths.TERMINIERUNG_WL)}>\r\n Neuen Termin anfordern\r\n \r\n
\r\n
\r\n
\r\n \r\n
\r\n );\r\n */\r\n};\r\n\r\nexport default EnrollCodeBox;\r\n","import { useContext, useEffect, useState } from 'react';\r\nimport Col from 'react-bootstrap/Col';\r\nimport Container from 'react-bootstrap/Container';\r\nimport Image from 'react-bootstrap/Image';\r\nimport Row from 'react-bootstrap/Row';\r\nimport Nav from 'react-bootstrap/esm/Nav';\r\nimport EnrollCodeBox from '../../components/EnrollCodeBox/EnrollCodeBox';\r\nimport ExtraLinks from '../../components/ExtraLinks/ExtraLinks';\r\nimport QRCodeForApp from '../../components/QRCode/QRCodeForApp';\r\nimport AlertContext from '../../context/alertContext';\r\nimport AppPropsContext from '../../context/appPropsContext';\r\nimport { useAppProperties } from '../../hooks/useAppProperties';\r\nimport { resetShowAlertMessage } from '../../utils/alertHandling';\r\nimport Login from '../Login/Login';\r\nimport FullScreenImpressum from '../Mainscreen/FullScreenImpressum';\r\n\r\nconst Home = () => {\r\n interface IShowHomeElements {\r\n showLogin: boolean;\r\n showEnrollCodeBox: boolean;\r\n showQRCodeForApp: boolean;\r\n row_lg: number;\r\n }\r\n\r\n const { apstate } = useContext(AppPropsContext);\r\n const { alertdispatch } = useContext(AlertContext);\r\n // const themeContext = useContext(ThemeContext);\r\n\r\n const { getImpressum } = useAppProperties();\r\n\r\n const [homeElements, setHomeElements] = useState({\r\n showLogin: false,\r\n showEnrollCodeBox: false,\r\n showQRCodeForApp: false,\r\n row_lg: 0,\r\n });\r\n\r\n useEffect(() => {\r\n resetShowAlertMessage(alertdispatch);\r\n }, []);\r\n\r\n useEffect(() => {\r\n const homeEle = {\r\n showLogin: false,\r\n showEnrollCodeBox: false,\r\n showQRCodeForApp: false,\r\n row_lg: 0,\r\n };\r\n let row_lg_counter = 0;\r\n\r\n if (apstate.allowLogin) {\r\n homeEle.showLogin = true;\r\n row_lg_counter++;\r\n }\r\n if (apstate.allowAppointmentsWithoutLogin) {\r\n homeEle.showEnrollCodeBox = true;\r\n row_lg_counter++;\r\n }\r\n if (apstate.showMobileQR !== false) {\r\n homeEle.showQRCodeForApp = true;\r\n row_lg_counter++;\r\n }\r\n\r\n homeEle.row_lg = row_lg_counter;\r\n\r\n setHomeElements(homeEle);\r\n }, [apstate]);\r\n\r\n const brandingSrc = 'data:image/jpg;base64,' + apstate.brandingBytes;\r\n\r\n const impressum = getImpressum();\r\n\r\n return (\r\n \r\n
\r\n \r\n \r\n {apstate.extraLinks ? : null}\r\n \r\n
\r\n \r\n
\r\n \r\n {apstate.extraLinks ? (\r\n \r\n
\r\n \r\n
\r\n \r\n ) : null}\r\n
\r\n \r\n {homeElements.showEnrollCodeBox ? (\r\n \r\n \r\n \r\n ) : null}\r\n {homeElements.showLogin ? (\r\n \r\n \r\n \r\n ) : null}\r\n\r\n {homeElements.showQRCodeForApp ? (\r\n \r\n \r\n \r\n ) : null}\r\n \r\n
\r\n
\r\n )\r\n
\r\n );\r\n};\r\n\r\nexport default Home;\r\n","import { useContext, useEffect, useState } from 'react';\r\nimport AppPropsContext from '../../context/appPropsContext';\r\nimport { getBaseURL } from '../../globals/global';\r\nimport { usePersonalData } from '../../hooks/usePersonalData';\r\nimport { getQuestionnaireJourney } from '../../services/RestServices';\r\nimport CheckInWL from '../CheckIn/CheckInWL';\r\nimport Mainscreen from '../Mainscreen/Mainscreen';\r\n\r\nexport interface INeuerAccountWL {\r\n type?: string;\r\n key?: string;\r\n reason?: string;\r\n handleFinishClick?(response: any): void;\r\n}\r\n\r\nconst NeuerAccountPhysLogin = () => {\r\n const { apstate, apdispatch } = useContext(AppPropsContext);\r\n\r\n const [journeyData, setJourneyData] = useState();\r\n const [loaded, setLoaded] = useState(false);\r\n const { resetPersonalDataPhysPat } = usePersonalData();\r\n\r\n const hashParams: INeuerAccountWL = {\r\n type: 'NewAccount',\r\n reason: 'ANMELDKARD',\r\n key: getBaseURL(),\r\n };\r\n\r\n useEffect(() => {\r\n const getQuestJourney = async () => {\r\n const questionnaireJourneyResponse = await getQuestionnaireJourney('ANMELDKARD', '', '');\r\n if (questionnaireJourneyResponse) {\r\n /* override appProperties */\r\n apdispatch({\r\n type: 'SETAPPPROPS',\r\n ...apstate,\r\n allowAccountCreateDirect: false,\r\n allowDirectAppointmentsWithoutLogin: false,\r\n });\r\n setJourneyData(questionnaireJourneyResponse);\r\n }\r\n setLoaded(true);\r\n };\r\n\r\n resetPersonalDataPhysPat();\r\n getQuestJourney();\r\n }, []);\r\n\r\n const innerContent = () => {\r\n if (loaded) {\r\n if (journeyData) {\r\n return (\r\n \r\n );\r\n } else {\r\n return <>;\r\n }\r\n }\r\n };\r\n\r\n const showContent = () => {\r\n return (\r\n \r\n
{innerContent()}
\r\n
\r\n );\r\n };\r\n\r\n return showContent();\r\n};\r\n\r\nexport default NeuerAccountPhysLogin;\r\n","export default __webpack_public_path__ + \"static/media/CardSim.11c82f64.png\";","import { Image } from 'react-bootstrap';\r\nimport { BsSim } from 'react-icons/bs';\r\nimport cardSim from '../../images/CardSim.png';\r\nimport { SpaceBetweenDiv, VerticalCenterFlexDiv } from '../Div/StyledDiv';\r\nimport StyledButton from './StyledButton';\r\n\r\ninterface IReadCardButton {\r\n width?: string;\r\n textSize?: string;\r\n disabled: boolean;\r\n onClick(): void;\r\n}\r\n\r\nconst ReadCardButton = (props: IReadCardButton) => {\r\n return (\r\n {\r\n props.onClick();\r\n }}\r\n >\r\n \r\n \r\n \r\n \r\n \r\n Karte einlesen\r\n \r\n \r\n \r\n );\r\n};\r\n\r\nexport default ReadCardButton;\r\nBsSim;\r\n","import { 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","export const setRuleProperties = (hashParams: any, executeruledispatch: any) => {\r\n if (hashParams && hashParams.type === 'ExecuteRule' && hashParams.ruleName) {\r\n executeruledispatch({\r\n type: 'SETRULEPROPERTIES',\r\n ruleName: hashParams.ruleName ? hashParams.ruleName : '',\r\n ruleParam: hashParams.ruleParam ? hashParams.ruleParam : '',\r\n persInfo: hashParams.persInfo ? hashParams.persInfo : '',\r\n });\r\n }\r\n};\r\n","export const findLongestWord = (str: string) => {\r\n const strSplit = str.split(' ');\r\n let longestWord = 0;\r\n for (let i = 0; i < strSplit.length; i++) {\r\n if (strSplit[i].length > longestWord) {\r\n longestWord = strSplit[i].length;\r\n }\r\n }\r\n return longestWord;\r\n};\r\n\r\nexport const simulateClick = (element: HTMLElement | null) => {\r\n if (element) {\r\n const mouseClickEvents = ['mousedown', 'click', 'mouseup'];\r\n mouseClickEvents.forEach((mouseEventType) =>\r\n element.dispatchEvent(\r\n new MouseEvent(mouseEventType, {\r\n view: window,\r\n bubbles: true,\r\n cancelable: true,\r\n buttons: 1,\r\n }),\r\n ),\r\n );\r\n element.focus();\r\n }\r\n};\r\n","import * as React from 'react';\r\nimport { useEffect, useRef, useState } from 'react';\r\nimport { Col, Container, Row } from 'react-bootstrap';\r\nimport SigPad from 'react-signature-canvas';\r\nimport { ISigData } from '../../context/sigpadContext';\r\nimport StyledButton from '../Buttons/StyledButton';\r\n\r\n/* ### Usage for for Mouse Signature without device ###\r\n\r\n use either onSave OR onWriteEnd\r\n\r\n const onSignaturePadSave = (sigData) => {\r\n setSignatureData(sigData);\r\n };\r\n\r\n const onSignaturePadWriteEnd = (sigData) => {\r\n setSignatureData(sigData);\r\n };\r\n\r\n \r\n \r\n */\r\n\r\ninterface ISignaturePad {\r\n onSave?: (sigData: ISigData) => void; // callback when click on buttonSave\r\n onWriteEnd?: (sigData: ISigData) => void; // callback when end of write\r\n onCancel?: () => void; // callback when click on buttonCancel\r\n onSign?: () => void; // callback when click on buttonSign\r\n onClickClear?: () => void; // clear signature pad done\r\n clickClear?: boolean; // clear signature pad\r\n clickSign?: boolean; // sign signature pad\r\n embedded?: boolean; // embedded mode\r\n width?: number; // override width\r\n height?: number; // override height\r\n offsetTop?: number; // Abstand von oben\r\n offsetLeft?: number; // Abstand von links\r\n margin?: string;\r\n}\r\n\r\nconst SignaturePad = (props: ISignaturePad) => {\r\n const signatureRef = useRef(null);\r\n const [divWidth, setDivWidth] = useState(700);\r\n const [divHeight, setDivHeight] = useState(300);\r\n const [offsetTop, setOffsetTop] = useState(0);\r\n const [offsetLeft, setOffsetLeft] = useState(0);\r\n const [signaturePadWidth, setSignaturePadWidth] = useState(690);\r\n const [signaturePadHeight, setSignaturePadHeight] = useState(240);\r\n\r\n useEffect(() => {\r\n /* clickClear clicked */\r\n if (props.clickClear) {\r\n onSignaturePadClear();\r\n }\r\n\r\n /* clickSign clicked */\r\n if (props.clickSign) {\r\n if (props.onSign) {\r\n props.onSign();\r\n }\r\n }\r\n\r\n /* explicity set width and height override all other sizes */\r\n if (props.width && props.width > 0) {\r\n setDivWidth(props.width);\r\n setSignaturePadWidth(props.width - 10);\r\n }\r\n if (props.height && props.height > 0) {\r\n setDivHeight(props.height);\r\n setSignaturePadHeight(props.height - 60);\r\n }\r\n if (props.offsetTop && props.offsetTop > 0) {\r\n setOffsetTop(props.offsetTop);\r\n }\r\n if (props.offsetLeft && props.offsetLeft > 0) {\r\n setOffsetLeft(props.offsetLeft);\r\n }\r\n }, [props.width, props.height, props.offsetTop, props.offsetLeft, props.clickClear, props.clickSign]);\r\n\r\n const onSignaturePadClear = (e?: React.MouseEvent) => {\r\n if (e) {\r\n e.currentTarget.blur();\r\n }\r\n if (signatureRef) {\r\n signatureRef?.current.clear();\r\n }\r\n\r\n if (props.onClickClear) {\r\n props.onClickClear();\r\n }\r\n };\r\n\r\n const onSignaturePadSave = (e: React.MouseEvent) => {\r\n if (e) {\r\n e.currentTarget.blur();\r\n }\r\n if (signatureRef && props.onSave) {\r\n // const sigDataPicture = signatureRef.current.getTrimmedCanvas().toDataURL('image/png');\r\n const sigDataPicture = signatureRef.current.getCanvas().toDataURL('image/png');\r\n\r\n // const sigDataPicture = signatureRef.current.toDataURL('image/svg+xml');\r\n const sigData: ISigData = {\r\n certId: '',\r\n pictureData: sigDataPicture,\r\n rsaSignature: '',\r\n signData: '',\r\n signingCert: '',\r\n };\r\n\r\n props.onSave(sigData);\r\n }\r\n };\r\n\r\n const onSignaturePadWriteEnd = () => {\r\n if (signatureRef && props.onWriteEnd) {\r\n // const sigDataPicture = signatureRef.current.getTrimmedCanvas().toDataURL('image/png');\r\n const sigDataPicture = signatureRef.current.getCanvas().toDataURL('image/png');\r\n\r\n // const sigDataPicture = signatureRef.current.toDataURL('image/svg+xml');\r\n const sigData: ISigData = {\r\n certId: '',\r\n pictureData: sigDataPicture,\r\n rsaSignature: '',\r\n signData: '',\r\n signingCert: '',\r\n };\r\n\r\n props.onWriteEnd(sigData);\r\n }\r\n };\r\n\r\n return props.embedded ? (\r\n \r\n \r\n \r\n ) : (\r\n \r\n
\r\n \r\n
\r\n \r\n \r\n \r\n onSignaturePadClear(e)}>\r\n Löschen\r\n \r\n \r\n {props.onSave !== undefined && (\r\n \r\n onSignaturePadSave(e)}>Speichern\r\n \r\n )}\r\n {props.onCancel !== undefined && (\r\n \r\n \r\n Abbrechen\r\n \r\n \r\n )}\r\n {props.onSign !== undefined && (\r\n \r\n Jetzt signieren\r\n \r\n )}\r\n \r\n \r\n \r\n );\r\n};\r\n\r\nexport default SignaturePad;\r\n","type IPhyscianSelectionDescriptionList = {\r\n description?: string[];\r\n firstFreeDateElement?: JSX.Element;\r\n};\r\n\r\nconst PhysicianSelectionDescriptionList = (props: IPhyscianSelectionDescriptionList) => {\r\n const descriptionList = () => {\r\n if (props.description && props.description.length > 0) {\r\n const allDescrItems: any[] = [];\r\n props.description?.forEach((e) => {\r\n // allDescrItems.push(
  • {e}
  • );\r\n allDescrItems.push(

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

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

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

    Ihre Profildaten wurden erfolgreich geändert!

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

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

    \r\n

    Ihr Account wurde erfolgreich eingerichtet!

    \r\n

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

    \r\n

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

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

    Bitte erfassen Sie Ihre persönlichen Informationen:

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

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

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

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

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

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

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

    Alles erledigt

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

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

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

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

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

    Wählen Sie die gewünschte Fachrichtung aus

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

    Wählen Sie den gwünschten Standort aus

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

    Behandler wählen

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

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

    \r\n

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

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

    {props.hints.Hinweis}

    \r\n
    \r\n \r\n
    \r\n \r\n )}\r\n \r\n \r\n
    \r\n {showQuestions()}\r\n \r\n \r\n Weiter\r\n \r\n \r\n
    \r\n \r\n
    \r\n \r\n );\r\n};\r\n\r\nexport default AppointmentCategoryReasonHints;\r\n","import { useContext, useEffect, useState } from 'react';\r\nimport { Col, Form } from 'react-bootstrap';\r\nimport { ThemeContext } from 'styled-components';\r\nimport { CategoryBadgeSelected } from '../../components/Badges/StyledBadge';\r\nimport { StyledColNoPadding } from '../../components/Cols/StyledCol';\r\nimport { LeftDivMain } from '../../components/Div/StyledDiv';\r\nimport { StyledRowNoMargin } from '../../components/Rows/StyledRow';\r\nimport { StyledFormRowNoMargin } from '../../components/StyledForm/SyledForm';\r\nimport { ParagraphFontSize } from '../../components/StyledParagraph/StyledParagraph';\r\nimport { StyledMainHeader, StyledSubHeader } from '../../components/StyledText/StyledHeader';\r\nimport { IDepartmentReasons, IDepartments } from '../../context/loginContext';\r\nimport TerminierungContext, { IHints, IHintsAnswers } from '../../context/terminierungContext';\r\nimport { useGoogleAnalytics } from '../../hooks/useGoogleAnalytics';\r\nimport AppointmentCategoryReasonHints from './AppointmentCategoryReasonHints';\r\n\r\ninterface IAppointmentCategoryReason {\r\n departments: IDepartments;\r\n hints?: IHints[];\r\n handleReasonClick(): void;\r\n}\r\n\r\nconst AppointmentCategoryReason = (props: IAppointmentCategoryReason) => {\r\n const themeContext = useContext(ThemeContext);\r\n const { tmstate, tmdispatch } = useContext(TerminierungContext);\r\n const [reasonSelected, setReasonSelected] = useState();\r\n const [reasonSelected1, setReasonSelected1] = useState();\r\n const [reasonMainCodeSelected, setReasonMainCodeSelected] = useState();\r\n const [insuranceSelected, setInsuranceSelected] = useState();\r\n const [appTypeSelected, setAppTypeSelected] = useState();\r\n const [hints, setHints] = useState();\r\n const { sendGoogleAnalyticsPageView } = useGoogleAnalytics();\r\n\r\n const VERSICHERUNG_VOR_ORT_LONG = 'vor Ort';\r\n const VERSICHERUNG_VOR_ORT_SHORT = 'O';\r\n\r\n const VERSICHERUNG_PER_VIDEO_LONG = 'per Video';\r\n const VERSICHERUNG_PER_VIDEO_SHORT = 'V';\r\n\r\n const VERSICHERUNG_PER_TELEFON_LONG = 'per Telefon';\r\n const VERSICHERUNG_PER_TELEFON_SHORT = 'T';\r\n\r\n const TERMINART_PRIVAT_LONG = 'Private Krankenversicherung (PKV)';\r\n const TERMINART_PRIVAT_SHORT = 'P';\r\n\r\n const TERMINART_GESETZLICH_LONG = 'Gesetzliche Krankenversicherung (GKV)';\r\n const TERMINART_GESETZLICH_SHORT = 'G';\r\n\r\n const TERMINART_BG_LONG = 'Berufsgenossenschaft (BG)';\r\n const TERMINART_BG_SHORT = 'B';\r\n\r\n const TERMINART_SELBSTZAHLER_LONG = 'Selbstzahler (SZ)';\r\n const TERMINART_SELBSTZAHLER_SHORT = 'S';\r\n\r\n const getShortVersicherungsart = (versicherungsartLong: string) => {\r\n let versicherungsArtShort = '';\r\n if (versicherungsartLong) {\r\n if (versicherungsartLong === TERMINART_PRIVAT_LONG) {\r\n versicherungsArtShort = TERMINART_PRIVAT_SHORT;\r\n } else if (versicherungsartLong === TERMINART_GESETZLICH_LONG) {\r\n versicherungsArtShort = TERMINART_GESETZLICH_SHORT;\r\n } else if (versicherungsartLong === TERMINART_BG_LONG) {\r\n versicherungsArtShort = TERMINART_BG_SHORT;\r\n } else if (versicherungsartLong === TERMINART_SELBSTZAHLER_LONG) {\r\n versicherungsArtShort = TERMINART_SELBSTZAHLER_SHORT;\r\n }\r\n }\r\n\r\n return versicherungsArtShort;\r\n };\r\n\r\n const getShortTerminart = (terminartLong: string) => {\r\n let terminartShort = '';\r\n if (terminartLong) {\r\n if (terminartLong === VERSICHERUNG_VOR_ORT_LONG) {\r\n terminartShort = VERSICHERUNG_VOR_ORT_SHORT;\r\n } else if (terminartLong === VERSICHERUNG_PER_VIDEO_LONG) {\r\n terminartShort = VERSICHERUNG_PER_VIDEO_SHORT;\r\n } else if (terminartLong === VERSICHERUNG_PER_TELEFON_LONG) {\r\n terminartShort = VERSICHERUNG_PER_TELEFON_SHORT;\r\n }\r\n }\r\n\r\n return terminartShort;\r\n };\r\n\r\n const getLongVersicherungsart = (versicherungsartShort: string) => {\r\n let versicherungsArtLong = '';\r\n if (versicherungsartShort) {\r\n if (versicherungsartShort === TERMINART_PRIVAT_SHORT) {\r\n versicherungsArtLong = TERMINART_PRIVAT_LONG;\r\n } else if (versicherungsartShort === TERMINART_GESETZLICH_SHORT) {\r\n versicherungsArtLong = TERMINART_GESETZLICH_LONG;\r\n }\r\n }\r\n\r\n return versicherungsArtLong;\r\n };\r\n\r\n const getLongTerminart = (terminartShort: string) => {\r\n let terminartLong = '';\r\n if (terminartShort) {\r\n if (terminartShort === VERSICHERUNG_VOR_ORT_SHORT) {\r\n terminartLong = VERSICHERUNG_VOR_ORT_LONG;\r\n } else if (terminartShort === VERSICHERUNG_PER_VIDEO_SHORT) {\r\n terminartLong = VERSICHERUNG_PER_VIDEO_LONG;\r\n } else if (terminartShort === VERSICHERUNG_PER_TELEFON_SHORT) {\r\n terminartLong = VERSICHERUNG_PER_TELEFON_LONG;\r\n }\r\n }\r\n\r\n return terminartLong;\r\n };\r\n\r\n let filteredReasonsLocal: IDepartmentReasons[] = [];\r\n\r\n useEffect(() => {\r\n sendGoogleAnalyticsPageView({ page: '/AppointmentCategoryReason', title: 'Besuchsgrund wählen' });\r\n }, []);\r\n\r\n useEffect(() => {\r\n if (\r\n reasonSelected &&\r\n reasonSelected.length > 0 &&\r\n insuranceSelected &&\r\n insuranceSelected.length > 0 &&\r\n appTypeSelected &&\r\n appTypeSelected.length > 0\r\n ) {\r\n const filterVersicherungsart = getShortVersicherungsart(insuranceSelected);\r\n const filterTerminart = getShortTerminart(appTypeSelected);\r\n\r\n const filteredReasons = props.departments.reasons.filter((reason) => {\r\n if (\r\n reason.reasonName === reasonSelected &&\r\n ((reason.pFilter && reason.pFilter.length > 0 && reason.pFilter.includes(filterVersicherungsart)) ||\r\n reason.pFilter === '') &&\r\n ((reason.aFilter && reason.aFilter.length > 0 && reason.aFilter.includes(filterTerminart)) ||\r\n reason.aFilter === '')\r\n ) {\r\n return true;\r\n }\r\n });\r\n let foundHint: IHints | undefined;\r\n if (filteredReasons) {\r\n tmdispatch({\r\n type: 'SETFILTEREDREASONS',\r\n filteredReasons: filteredReasons,\r\n });\r\n filteredReasonsLocal = filteredReasons;\r\n tmdispatch({\r\n type: 'SELECTINSURANCE',\r\n selectedInsurance: insuranceSelected,\r\n });\r\n tmdispatch({\r\n type: 'SELECTAPPOINTMENTTYPE',\r\n selectedAppointmentType: appTypeSelected,\r\n });\r\n\r\n /* check for possible hints questions */\r\n\r\n if (props.hints) {\r\n let hints = props.hints;\r\n\r\n /* filter for department */\r\n const selectedDepartment = tmstate.selectedDepartment.name;\r\n hints = props.hints.filter((hint) => {\r\n if (\r\n hint.department === undefined ||\r\n (hint.department && hint.department === selectedDepartment)\r\n ) {\r\n return true;\r\n }\r\n });\r\n\r\n /* filter for rest */\r\n for (let i = 0; i < filteredReasons.length; i++) {\r\n for (let j = 0; j < hints.length; j++) {\r\n if (hints[j].reason === filteredReasons[i].reasonCode) {\r\n let aFilterChecked = false;\r\n let pFilterChecked = false;\r\n\r\n const hintAFilter = hints[j].aFilter;\r\n if (hintAFilter && hintAFilter.length > 0) {\r\n if (hintAFilter.includes(filterTerminart)) {\r\n aFilterChecked = true;\r\n }\r\n } else {\r\n aFilterChecked = true;\r\n }\r\n\r\n const hintPFilter = hints[j].pFilter;\r\n if (hintPFilter && hintPFilter.length > 0) {\r\n if (hintPFilter.includes(filterVersicherungsart)) {\r\n pFilterChecked = true;\r\n }\r\n } else {\r\n pFilterChecked = true;\r\n }\r\n\r\n if (aFilterChecked && pFilterChecked) {\r\n foundHint = hints[j];\r\n break;\r\n }\r\n }\r\n }\r\n\r\n if (foundHint) {\r\n break;\r\n }\r\n }\r\n }\r\n }\r\n\r\n if (foundHint) {\r\n setHints(foundHint);\r\n } else {\r\n handleReasonClick();\r\n }\r\n }\r\n }, [reasonSelected, insuranceSelected, appTypeSelected]);\r\n\r\n const handleReasonClick = () => {\r\n let selectedReasonId: string | null = null;\r\n for (const v of filteredReasonsLocal) {\r\n if (v.reasonName == reasonSelected) {\r\n selectedReasonId = v.reasonId;\r\n }\r\n v.reasonId;\r\n }\r\n tmdispatch({\r\n type: 'SELECTREASON',\r\n selectedReason: {\r\n ...tmstate.selectedReason,\r\n reasonName: reasonSelected,\r\n reasonId: selectedReasonId,\r\n },\r\n });\r\n props.handleReasonClick();\r\n };\r\n\r\n const onHintsSubmit = (answers: IHintsAnswers[]) => {\r\n if (answers) {\r\n tmdispatch({\r\n type: 'SELECTREASONHINTS',\r\n selectedReasonHints: answers,\r\n });\r\n }\r\n handleReasonClick();\r\n };\r\n\r\n const handleSetComboboxReason = (e: any) => {\r\n const reason = e.target.value.toString();\r\n const filteredReason = props.departments.reasons.find((freason) => {\r\n if ((freason.reasonMainCode && freason.reasonMainCode === reason) || freason.reasonName == reason) {\r\n return true;\r\n }\r\n });\r\n\r\n if (filteredReason?.reasonMainCode) {\r\n setReasonMainCodeSelected(filteredReason.reasonMainCode);\r\n setReasonSelected1(filteredReason.reasonMainCode);\r\n setReasonSelected('');\r\n setHints({\r\n reason: '',\r\n });\r\n } else {\r\n setReasonMainCodeSelected('');\r\n setReasonSelected1(e.target.value.toString());\r\n setReasonSelected(e.target.value.toString());\r\n }\r\n };\r\n\r\n const handleSetComboboxReasonSub = (e: any) => {\r\n const reason = e.target.value.toString();\r\n if (reason.startsWith('Main|')) {\r\n setReasonMainCodeSelected(reason.split('|')[1]);\r\n } else {\r\n setReasonSelected(e.target.value.toString());\r\n }\r\n };\r\n\r\n const handleSetComboboxInsurance = (e: any) => {\r\n setInsuranceSelected(e.target.value.toString());\r\n };\r\n\r\n const handleSetComboboxAppType = (e: any) => {\r\n setAppTypeSelected(e.target.value.toString());\r\n };\r\n\r\n const getVersicherungsartOptions = () => {\r\n if (props.departments.versicherungsArt && props.departments.versicherungsArt.length > 0) {\r\n return props.departments.versicherungsArt.map((versicherungsArt) => (\r\n \r\n ));\r\n } else {\r\n return (\r\n <>\r\n \r\n \r\n \r\n \r\n \r\n );\r\n }\r\n };\r\n\r\n const getVersicherungsartDefault = () => {\r\n if (props.departments.versicherungsArt && props.departments.versicherungsArt.length == 1) {\r\n // setInsuranceSelected(props.departments.versicherungsArt[0]);\r\n if (!insuranceSelected) {\r\n setInsuranceSelected(props.departments.versicherungsArt[0]);\r\n }\r\n return props.departments.versicherungsArt[0];\r\n }\r\n return '';\r\n };\r\n\r\n const getVersicherungsartDisabled = () => {\r\n if (props.departments.versicherungsArt && props.departments.versicherungsArt.length == 1) {\r\n return true;\r\n }\r\n return false;\r\n };\r\n\r\n const getKontaktartOptions = () => {\r\n if (props.departments.kontaktArt && props.departments.kontaktArt.length > 0) {\r\n return props.departments.kontaktArt.map((kontaktArt) => (\r\n \r\n ));\r\n } else {\r\n return (\r\n <>\r\n \r\n \r\n \r\n \r\n );\r\n }\r\n };\r\n\r\n const getKontaktartDefault = () => {\r\n if (props.departments.kontaktArt && props.departments.kontaktArt.length == 1) {\r\n // setAppTypeSelected(props.departments.kontaktArt[0]);\r\n if (!appTypeSelected) {\r\n setAppTypeSelected(props.departments.kontaktArt[0]);\r\n }\r\n return props.departments.kontaktArt[0];\r\n }\r\n return '';\r\n };\r\n\r\n const getKontaktartDisabled = () => {\r\n if (props.departments.kontaktArt && props.departments.kontaktArt.length == 1) {\r\n return true;\r\n }\r\n return false;\r\n };\r\n\r\n const getBesuchsgrundOptions = (mainReason: string | null) => {\r\n let filterVersicherungsart = '';\r\n if (insuranceSelected) {\r\n filterVersicherungsart = getShortVersicherungsart(insuranceSelected);\r\n }\r\n let filterTerminart = '';\r\n if (appTypeSelected) {\r\n filterTerminart = getShortTerminart(appTypeSelected);\r\n }\r\n\r\n const usedReasons: string[] = [];\r\n const usedReasonMainCodes: string[] = [];\r\n const reasonsDone = {};\r\n const reasons = props.departments.reasons.map((reason) => {\r\n if (mainReason) {\r\n if (!reason.reasonMainCode || reason.reasonMainCode !== mainReason) {\r\n return null;\r\n } else {\r\n if (reasonsDone[reason.reasonId]) {\r\n return null;\r\n }\r\n if (\r\n (reason.pFilter && !reason.pFilter.includes(filterVersicherungsart) && reason.pFilter !== '') ||\r\n (reason.aFilter && !reason.aFilter.includes(filterTerminart) && reason.aFilter !== '')\r\n ) {\r\n return null;\r\n }\r\n reasonsDone[reason.reasonId] = true;\r\n const name = reason.reasonName;\r\n return (\r\n <>\r\n \r\n \r\n );\r\n }\r\n } else {\r\n if (\r\n (reason.pFilter && !reason.pFilter.includes(filterVersicherungsart) && reason.pFilter !== '') ||\r\n (reason.aFilter && !reason.aFilter.includes(filterTerminart) && reason.aFilter !== '')\r\n ) {\r\n return null;\r\n } else {\r\n if (\r\n (reason.reasonMainCode && usedReasonMainCodes.includes(reason.reasonMainCode)) ||\r\n usedReasons.includes(reason.reasonId)\r\n ) {\r\n return null;\r\n } else {\r\n usedReasons.push(reason.reasonId);\r\n\r\n let name = reason.reasonName;\r\n let valueSub = reason.reasonName;\r\n if (reason.reasonMainCode && reason.reasonMainCode.length > 0) {\r\n usedReasonMainCodes.push(reason.reasonMainCode);\r\n name = reason.reasonMainCode;\r\n valueSub = name;\r\n }\r\n return (\r\n <>\r\n \r\n \r\n );\r\n }\r\n }\r\n }\r\n });\r\n\r\n return reasons;\r\n };\r\n\r\n const getBesuchsgrundDefault = () => {\r\n if (\r\n props.departments.reasons &&\r\n props.departments.reasons.length == 1 &&\r\n !props.departments.reasons[0].reasonMainCode\r\n ) {\r\n // setAppTypeSelected(props.departments.kontaktArt[0]);\r\n if (!reasonSelected) {\r\n setReasonSelected(props.departments.reasons[0].reasonName);\r\n }\r\n return props.departments.reasons[0].reasonName;\r\n }\r\n return '';\r\n };\r\n\r\n const getBesuchsgrundDisabled = () => {\r\n if (\r\n props.departments.reasons &&\r\n props.departments.reasons.length == 1 &&\r\n !props.departments.reasons[0].reasonMainCode\r\n ) {\r\n return true;\r\n }\r\n return false;\r\n };\r\n\r\n const displayHints = () => {\r\n if (hints?.reason && hints?.reason.length > 0) {\r\n return ;\r\n }\r\n };\r\n\r\n return (\r\n \r\n Besuchsgrund wählen\r\n
    \r\n
    \r\n \r\n Fachrichtung\r\n \r\n {props.departments.name}\r\n \r\n \r\n
    \r\n\r\n
    \r\n \r\n \r\n \r\n \r\n Versichertentyp\r\n \r\n handleSetComboboxInsurance(e)}\r\n >\r\n \r\n {getVersicherungsartOptions()}\r\n \r\n \r\n \r\n \r\n \r\n \r\n
    \r\n \r\n \r\n Terminart\r\n \r\n handleSetComboboxAppType(e)}\r\n >\r\n \r\n {getKontaktartOptions()}\r\n \r\n \r\n
    \r\n
    \r\n
    \r\n \r\n \r\n \r\n Besuchsgrund\r\n \r\n \r\n \r\n handleSetComboboxReason(e)}\r\n >\r\n \r\n {getBesuchsgrundOptions(null)}\r\n \r\n \r\n\r\n \r\n {reasonMainCodeSelected && reasonMainCodeSelected.length > 0 && (\r\n handleSetComboboxReasonSub(e)}\r\n >\r\n \r\n {getBesuchsgrundOptions(reasonMainCodeSelected)}\r\n \r\n )}\r\n \r\n \r\n \r\n \r\n {hints && displayHints()}\r\n
    \r\n );\r\n};\r\n\r\nexport default AppointmentCategoryReason;\r\n","import StyledButton from '../../components/Buttons/StyledButton';\r\nimport StyledCol from '../../components/Cols/StyledCol';\r\nimport { StickyButtonRowBottomDiv } from '../../components/Div/StyledDiv';\r\nimport { StyledRowNoMargin } from '../../components/Rows/StyledRow';\r\nimport { TermineContent } from './Termine';\r\n\r\ninterface ITermineCheckIn {\r\n showNextButton: boolean;\r\n handleNextWithActiveStep?(currentActiveStep: number): void;\r\n currentActiveStep: number;\r\n}\r\n\r\ninterface ITermineButtons {\r\n handleNext(): void;\r\n}\r\n\r\nconst TermineButtons = (props: ITermineButtons) => {\r\n const handleNext = () => {\r\n props.handleNext();\r\n };\r\n\r\n return (\r\n \r\n \r\n \r\n handleNext()}>Weiter\r\n \r\n \r\n \r\n );\r\n};\r\n\r\nconst TermineCheckIn = (props: ITermineCheckIn) => {\r\n const handleNextClick = () => {\r\n if (props.handleNextWithActiveStep) {\r\n props.handleNextWithActiveStep(props.currentActiveStep);\r\n }\r\n };\r\n\r\n return (\r\n <>\r\n \r\n {props.showNextButton && }\r\n \r\n );\r\n};\r\n\r\nexport default TermineCheckIn;\r\n","import { useContext, useEffect } from 'react';\r\nimport StyledButton from '../../components/Buttons/StyledButton';\r\nimport StyledCol from '../../components/Cols/StyledCol';\r\nimport { StickyButtonRowBottomDiv } from '../../components/Div/StyledDiv';\r\nimport { StyledRowNoMargin } from '../../components/Rows/StyledRow';\r\nimport AlertContext from '../../context/alertContext';\r\nimport LoginContext, { InitialLoginType } from '../../context/loginContext';\r\nimport { getDiagnosticReportsOfPatient, IDRDataEntry } from '../../services/fhir/FHIRDiagnosticReports';\r\nimport UploadContent from '../UploadContent/UploadContent';\r\n\r\ninterface ITermineButtons {\r\n handleNext(): void;\r\n nextButtonEnabled: boolean;\r\n}\r\n\r\ninterface IUpload {\r\n showNextButton: boolean;\r\n nextButtonEnabled?: boolean;\r\n handleNextWithActiveStep?(currentActiveStep: number): void;\r\n currentActiveStep: number;\r\n}\r\n\r\nconst UploadButtons = (props: ITermineButtons) => {\r\n const handleNext = () => {\r\n props.handleNext();\r\n };\r\n\r\n const buttonEnabled = () => {\r\n let enabled = true;\r\n if (props.nextButtonEnabled === false) {\r\n enabled = false;\r\n }\r\n return enabled;\r\n };\r\n\r\n return (\r\n \r\n \r\n \r\n handleNext()}>\r\n Weiter\r\n \r\n \r\n \r\n \r\n );\r\n};\r\n\r\nconst Upload = (props: IUpload) => {\r\n const { state } = useContext(LoginContext);\r\n const { alertdispatch } = useContext(AlertContext);\r\n\r\n useEffect(() => {\r\n getDiagnosticReports(state, alertdispatch);\r\n }, []);\r\n\r\n const handleNextClick = () => {\r\n if (props.handleNextWithActiveStep) {\r\n props.handleNextWithActiveStep(props.currentActiveStep);\r\n }\r\n };\r\n\r\n const getDiagnosticReports = async (state: InitialLoginType, alertdispatch: any) => {\r\n const response = await getDiagnosticReportsOfPatient(state, alertdispatch);\r\n if (response) {\r\n const rep: IDRDataEntry[] = response.data.entry;\r\n console.log(rep);\r\n // setReports(rep);\r\n }\r\n };\r\n\r\n const buttonEnabled = () => {\r\n let enabled = true;\r\n if (props.nextButtonEnabled === false) {\r\n enabled = false;\r\n }\r\n return enabled;\r\n };\r\n\r\n return (\r\n
    \r\n \r\n {props.showNextButton && }\r\n
    \r\n );\r\n};\r\n\r\nexport default Upload;\r\n","import { useContext, useEffect, useState } from 'react';\r\nimport Container from 'react-bootstrap/esm/Container';\r\nimport { useLocation, useNavigate } from 'react-router-dom';\r\nimport { ThemeContext } from 'styled-components';\r\nimport { Paths } from '../../Routes';\r\nimport AppointmentCalendarWithHeadline from '../../components/AppointmentCalendar/AppointmentCalendarWithHeadline';\r\nimport AppointmentPersonalDataWithCardRead from '../../components/AppointmentPersonalData/AppointmentPersonalDataWithCardRead';\r\nimport AppointmentPersonalDataWithLogin from '../../components/AppointmentPersonalData/AppointmentPersonalDataWithLogin';\r\nimport BookingAppointment from '../../components/Booking/BookingAppointment';\r\nimport { IIncomingMessage } from '../../components/Chat/Chat';\r\nimport { CenterDiv, LeftDivCheckIn, StickyStepperDiv, StickyStepperWithNavbar } from '../../components/Div/StyledDiv';\r\nimport FinalCheckIn from '../../components/FinalCheckIn/FinalCheckIn';\r\nimport { IFrameInternal } from '../../components/IFrame/IFrame';\r\nimport IFramePDF from '../../components/IFrame/IFramePDF';\r\nimport LoadingSpinnerWithText from '../../components/Loading/LoadingSpinnerWithText';\r\nimport LoginCardModal, { ILoginCardModalShow } from '../../components/Modals/LoginCardModal/LoginCardModal';\r\nimport 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 { 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 { 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]);\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 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 showAvatarIcon = () => {\r\n if (isRegisteredUser()) {\r\n return true;\r\n }\r\n return false;\r\n };\r\n\r\n const showLoginIcon = () => {\r\n if (isRegisteredUser()) {\r\n return false;\r\n } else if (isLoggedIn) {\r\n return false;\r\n } else if (apstate.allowAccountInAnmeldeworkflow) {\r\n return apstate.allowAccountInAnmeldeworkflow;\r\n }\r\n\r\n return false;\r\n };\r\n\r\n const handleProfileClick = () => {\r\n if (isRegisteredUser()) {\r\n const reloadData: IReloadPageData = {\r\n reload: true,\r\n withJourneyReload: false,\r\n nextActiveStep: 0,\r\n newStepValues: [\r\n {\r\n id: ID_MYDATA,\r\n clickable: true,\r\n active: true,\r\n completed: false,\r\n draft: false,\r\n },\r\n ],\r\n };\r\n setReloadPageData(reloadData);\r\n } else {\r\n setActiveContent();\r\n }\r\n };\r\n\r\n const showAccountInAnmeldeworkflow = () => {\r\n if (apstate.allowAccountInAnmeldeworkflow) {\r\n return !isLoggedIn;\r\n }\r\n return false;\r\n };\r\n\r\n const handleLoginIconClick = () => {\r\n setLoginModalShow({\r\n show: true,\r\n });\r\n };\r\n\r\n const handleOnCardReadClick = () => {\r\n setCardReadClickedInPersData(true);\r\n };\r\n\r\n const handleFinalCheckInClick = () => {\r\n if (props.useLoginContext) {\r\n return;\r\n }\r\n handleLogout();\r\n };\r\n\r\n const handleClosePDFModal = () => {\r\n setPdfModalShow({\r\n show: false,\r\n modalTitle: '',\r\n pdfData: '',\r\n isSignable: false,\r\n isSigned: false,\r\n });\r\n 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 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: 'Fachrichtung',\r\n typ: StepTyp.Normal,\r\n completed: false,\r\n draft: false,\r\n active: false,\r\n clickable: true,\r\n });\r\n steps.push({\r\n id: ID_CATEGORY_REASON,\r\n name: 'Besuchsgrund',\r\n typ: StepTyp.Normal,\r\n completed: false,\r\n draft: false,\r\n active: false,\r\n clickable: false,\r\n });\r\n steps.push({\r\n id: ID_APPOINTMENT_SELECTION_WITH_PHYSICIAN,\r\n name: 'Termin buchen',\r\n typ: StepTyp.Normal,\r\n completed: false,\r\n draft: false,\r\n active: false,\r\n clickable: false,\r\n });\r\n steps.push({\r\n id: ID_PERSONALDATA,\r\n name: 'Daten eingeben',\r\n typ: StepTyp.Normal,\r\n completed: false,\r\n draft: false,\r\n active: false,\r\n clickable: false,\r\n });\r\n steps.push({\r\n id: ID_BOOKING,\r\n name: 'Termin bestätigen',\r\n typ: StepTyp.Normal,\r\n completed: false,\r\n draft: false,\r\n active: false,\r\n clickable: false,\r\n });\r\n } else {\r\n steps.push({\r\n id: ID_CATEGORY_DEPARTMENT,\r\n name: 'Fachrichtung',\r\n typ: StepTyp.Normal,\r\n completed: false,\r\n draft: false,\r\n active: false,\r\n clickable: true,\r\n });\r\n steps.push({\r\n id: ID_CATEGORY_REASON,\r\n name: 'Besuchsgrund',\r\n typ: StepTyp.Normal,\r\n completed: false,\r\n draft: false,\r\n active: false,\r\n clickable: false,\r\n });\r\n if (!apstate.Appointment?.skipBehandlersuche) {\r\n steps.push({\r\n id: ID_CATEGORY_PHYSICIAN,\r\n name: 'Behandler',\r\n typ: StepTyp.Normal,\r\n completed: false,\r\n draft: false,\r\n active: false,\r\n clickable: false,\r\n });\r\n }\r\n\r\n steps.push({\r\n id: ID_APPOINTMENT_SELECTION,\r\n name: 'Termin buchen',\r\n typ: StepTyp.Normal,\r\n completed: false,\r\n draft: false,\r\n active: false,\r\n clickable: false,\r\n });\r\n steps.push({\r\n id: ID_PERSONALDATA,\r\n name: 'Daten eingeben',\r\n typ: StepTyp.Normal,\r\n completed: false,\r\n draft: false,\r\n active: false,\r\n clickable: false,\r\n });\r\n steps.push({\r\n id: ID_BOOKING,\r\n name: 'Termin bestätigen',\r\n typ: StepTyp.Normal,\r\n completed: false,\r\n draft: false,\r\n active: false,\r\n clickable: false,\r\n });\r\n }\r\n } else if (props.useLoginContext) {\r\n if (isExtendedPhysicians()) {\r\n if (hasAnmeldContexts()) {\r\n steps.push({\r\n id: ID_CATEGORY_LOCATION,\r\n name: 'Standort',\r\n typ: StepTyp.Normal,\r\n completed: false,\r\n draft: false,\r\n active: false,\r\n clickable: true,\r\n });\r\n }\r\n steps.push({\r\n id: ID_CATEGORY_DEPARTMENT,\r\n name: 'Fachrichtung',\r\n typ: StepTyp.Normal,\r\n completed: false,\r\n draft: false,\r\n active: false,\r\n clickable: true,\r\n });\r\n steps.push({\r\n id: ID_CATEGORY_REASON,\r\n name: 'Besuchsgrund',\r\n typ: StepTyp.Normal,\r\n completed: false,\r\n draft: false,\r\n active: false,\r\n clickable: false,\r\n });\r\n steps.push({\r\n id: ID_APPOINTMENT_SELECTION_WITH_PHYSICIAN,\r\n name: 'Termin buchen',\r\n typ: StepTyp.Normal,\r\n completed: false,\r\n draft: false,\r\n active: false,\r\n clickable: false,\r\n });\r\n steps.push({\r\n id: ID_BOOKING,\r\n name: 'Termin bestätigen',\r\n typ: StepTyp.Normal,\r\n completed: false,\r\n draft: false,\r\n active: false,\r\n clickable: false,\r\n });\r\n /* physicians and timeslots in seperated steps*/\r\n } else {\r\n if (hasAnmeldContexts()) {\r\n steps.push({\r\n id: ID_CATEGORY_LOCATION,\r\n name: 'Standort',\r\n typ: StepTyp.Normal,\r\n completed: false,\r\n draft: false,\r\n active: false,\r\n clickable: true,\r\n });\r\n }\r\n steps.push({\r\n id: ID_CATEGORY_DEPARTMENT,\r\n name: 'Fachrichtung',\r\n typ: StepTyp.Normal,\r\n completed: false,\r\n draft: false,\r\n active: false,\r\n clickable: true,\r\n });\r\n steps.push({\r\n id: ID_CATEGORY_REASON,\r\n name: 'Besuchsgrund',\r\n typ: StepTyp.Normal,\r\n completed: false,\r\n draft: false,\r\n active: false,\r\n clickable: false,\r\n });\r\n if (!apstate.Appointment?.skipBehandlersuche) {\r\n steps.push({\r\n id: ID_CATEGORY_PHYSICIAN,\r\n name: 'Behandler',\r\n typ: StepTyp.Normal,\r\n completed: false,\r\n draft: false,\r\n active: false,\r\n clickable: false,\r\n });\r\n }\r\n\r\n steps.push({\r\n id: ID_APPOINTMENT_SELECTION,\r\n name: 'Termin buchen',\r\n typ: StepTyp.Normal,\r\n completed: false,\r\n draft: false,\r\n active: false,\r\n clickable: false,\r\n });\r\n steps.push({\r\n id: ID_BOOKING,\r\n name: 'Termin bestätigen',\r\n typ: StepTyp.Normal,\r\n completed: false,\r\n draft: false,\r\n active: false,\r\n clickable: false,\r\n });\r\n }\r\n } else {\r\n if (props.newAccountHashParams) {\r\n /* Termin / Reigistrierung */\r\n if (journeyResp !== undefined && journeyResp?.departments?.length > 0) {\r\n /* Kein Termin buchen wenn an einem CheckInDesk -> wpName kommt mit -> Soforttermin */\r\n if (isCheckInWorkplace()) {\r\n steps.push({\r\n id: ID_CATEGORY_DEPARTMENT,\r\n name: 'Fachrichtung',\r\n typ: StepTyp.Normal,\r\n completed: false,\r\n draft: false,\r\n active: false,\r\n clickable: true,\r\n });\r\n steps.push({\r\n id: ID_CATEGORY_REASON,\r\n name: 'Besuchsgrund',\r\n typ: StepTyp.Normal,\r\n completed: false,\r\n draft: false,\r\n active: false,\r\n clickable: false,\r\n });\r\n if (!apstate.Appointment?.skipBehandlersuche) {\r\n steps.push({\r\n id: ID_CATEGORY_PHYSICIAN,\r\n name: 'Behandler',\r\n typ: StepTyp.Normal,\r\n completed: false,\r\n draft: false,\r\n active: false,\r\n clickable: false,\r\n });\r\n }\r\n\r\n steps.push({\r\n id: ID_PERSONALDATA,\r\n name: 'Daten eingeben',\r\n typ: StepTyp.Normal,\r\n completed: false,\r\n draft: false,\r\n active: false,\r\n clickable: false,\r\n });\r\n steps.push({\r\n id: ID_BOOKING,\r\n name: 'Termin bestätigen',\r\n typ: StepTyp.Normal,\r\n completed: false,\r\n draft: false,\r\n active: false,\r\n clickable: false,\r\n });\r\n /* Ohne CheckInDesk, wpName kommt nicht mit -> Buchung von daheim -> Termin buchen muss angezeigt werden */\r\n } else {\r\n /* physicans and timeslots in one step */\r\n if (isExtendedPhysicians()) {\r\n steps.push({\r\n id: ID_CATEGORY_DEPARTMENT,\r\n name: 'Fachrichtung',\r\n typ: StepTyp.Normal,\r\n completed: false,\r\n draft: false,\r\n active: false,\r\n clickable: true,\r\n });\r\n steps.push({\r\n id: ID_CATEGORY_REASON,\r\n name: 'Besuchsgrund',\r\n typ: StepTyp.Normal,\r\n completed: false,\r\n draft: false,\r\n active: false,\r\n clickable: false,\r\n });\r\n steps.push({\r\n id: ID_APPOINTMENT_SELECTION_WITH_PHYSICIAN,\r\n name: 'Termin buchen',\r\n typ: StepTyp.Normal,\r\n completed: false,\r\n draft: false,\r\n active: false,\r\n clickable: false,\r\n });\r\n steps.push({\r\n id: ID_PERSONALDATA,\r\n name: 'Daten eingeben',\r\n typ: StepTyp.Normal,\r\n completed: false,\r\n draft: false,\r\n active: false,\r\n clickable: false,\r\n });\r\n steps.push({\r\n id: ID_BOOKING,\r\n name: 'Termin bestätigen',\r\n typ: StepTyp.Normal,\r\n completed: false,\r\n draft: false,\r\n active: false,\r\n clickable: false,\r\n });\r\n /* physicians and timeslots in seperated steps*/\r\n } else {\r\n steps.push({\r\n id: ID_CATEGORY_DEPARTMENT,\r\n name: 'Fachrichtung',\r\n typ: StepTyp.Normal,\r\n completed: false,\r\n draft: false,\r\n active: false,\r\n clickable: true,\r\n });\r\n steps.push({\r\n id: ID_CATEGORY_REASON,\r\n name: 'Besuchsgrund',\r\n typ: StepTyp.Normal,\r\n completed: false,\r\n draft: false,\r\n active: false,\r\n clickable: false,\r\n });\r\n if (!apstate.Appointment?.skipBehandlersuche) {\r\n steps.push({\r\n id: ID_CATEGORY_PHYSICIAN,\r\n name: 'Behandler',\r\n typ: StepTyp.Normal,\r\n completed: false,\r\n draft: false,\r\n active: false,\r\n clickable: false,\r\n });\r\n }\r\n steps.push({\r\n id: ID_APPOINTMENT_SELECTION,\r\n name: 'Termin buchen',\r\n typ: StepTyp.Normal,\r\n completed: false,\r\n draft: false,\r\n active: false,\r\n clickable: false,\r\n });\r\n steps.push({\r\n id: ID_PERSONALDATA,\r\n name: 'Daten eingeben',\r\n typ: StepTyp.Normal,\r\n completed: false,\r\n draft: false,\r\n active: false,\r\n clickable: false,\r\n });\r\n steps.push({\r\n id: ID_BOOKING,\r\n name: 'Termin bestätigen',\r\n typ: StepTyp.Normal,\r\n completed: false,\r\n draft: false,\r\n active: false,\r\n clickable: false,\r\n });\r\n }\r\n }\r\n } else {\r\n steps.push({\r\n id: ID_REGISTRATION,\r\n name: 'Registrierung',\r\n typ: StepTyp.Normal,\r\n completed: false,\r\n draft: false,\r\n active: true,\r\n clickable: true,\r\n });\r\n }\r\n }\r\n }\r\n }\r\n\r\n setAllSteps(steps);\r\n };\r\n\r\n const getContent = (step?: number) => {\r\n let journeyResp = props.journeyResponse;\r\n if (journeyData !== undefined) {\r\n journeyResp = journeyData;\r\n }\r\n\r\n let stepContent = activeStep;\r\n if (step !== undefined) {\r\n stepContent = step;\r\n }\r\n\r\n allowMessages();\r\n\r\n conState.done = true;\r\n if (allSteps.length <= 0) {\r\n conState.done = false;\r\n return null;\r\n }\r\n if (isRegisteredUser()) {\r\n if (allSteps.length > 0) {\r\n if (allSteps[stepContent].id === ID_VIDEO) {\r\n // forbidMessages();\r\n return ;\r\n } else if (allSteps[stepContent].id === ID_MYDATA) {\r\n return (\r\n \r\n \r\n \r\n );\r\n } else if (allSteps[stepContent].id === ID_MYAPPOINTMENTS) {\r\n if (updateEnrollmentRequest) {\r\n updateEnrollment();\r\n setUpdateEnrollmentRequest(false);\r\n }\r\n\r\n return (\r\n \r\n \r\n \r\n );\r\n } else if (allSteps[stepContent].id === ID_UPLOAD) {\r\n return (\r\n \r\n \r\n \r\n );\r\n } else if (allSteps[stepContent].id === ID_ROUTE) {\r\n return (\r\n \r\n \r\n \r\n );\r\n } else if (allSteps[stepContent].id === ID_FINALCHECKIN) {\r\n return ;\r\n } else {\r\n return {showQuestionnaireEntries(stepContent)};\r\n }\r\n }\r\n } else if (false && props.isPhysicianLogin) {\r\n /* Als Arzt angemeldet -> will neuen Account fuer Patienten anlegen */\r\n /*\r\n if (stepContent === 0) {\r\n if (journeyResp !== undefined && journeyResp?.departments?.length > 0) {\r\n return (\r\n \r\n );\r\n } else if (props.useLoginContext) {\r\n return (\r\n \r\n );\r\n }\r\n } else if (allSteps[stepContent].id === ID_CATEGORY_REASON) {\r\n return (\r\n \r\n );\r\n } else if (allSteps[stepContent].id === ID_CATEGORY_PHYSICIAN) {\r\n return (\r\n \r\n );\r\n } else if (allSteps[stepContent].id === ID_APPOINTMENT_SELECTION) {\r\n return (\r\n \r\n \r\n \r\n );\r\n } else if (allSteps[stepContent].id === ID_PERSONALDATA) {\r\n return (\r\n \r\n \r\n \r\n );\r\n } else if (allSteps[stepContent].id === ID_BOOKING) {\r\n return (\r\n \r\n \r\n \r\n );\r\n } else {\r\n return showQuestionnaireEntries(stepContent);\r\n }\r\n */\r\n } else {\r\n /* Kein Termin buchen wenn an einem CheckInDesk -> wpName kommt mit -> Soforttermin */\r\n if (isCheckInWorkplace()) {\r\n if (stepContent === 0) {\r\n if (journeyResp !== undefined && journeyResp?.departments?.length > 0) {\r\n return (\r\n \r\n );\r\n } else {\r\n return (\r\n \r\n );\r\n }\r\n } else if (allSteps[stepContent].id === ID_CATEGORY_REASON) {\r\n return (\r\n \r\n );\r\n } else if (allSteps[stepContent].id === ID_CATEGORY_PHYSICIAN) {\r\n return (\r\n \r\n );\r\n } else if (allSteps[stepContent].id === ID_PERSONALDATA) {\r\n return (\r\n \r\n \r\n \r\n );\r\n } else if (allSteps[stepContent].id === ID_BOOKING) {\r\n return (\r\n \r\n \r\n \r\n );\r\n } else {\r\n return showQuestionnaireEntries(stepContent);\r\n }\r\n } else {\r\n if (isExtendedPhysicians()) {\r\n /* Terminauswahl und Arztauswahl in einem Step */\r\n if (allSteps[stepContent].id == ID_CATEGORY_LOCATION) {\r\n return ;\r\n } else if (allSteps[stepContent].id == ID_CATEGORY_DEPARTMENT) {\r\n if (journeyResp !== undefined && journeyResp?.departments?.length > 0) {\r\n return (\r\n \r\n );\r\n } else if (props.useLoginContext) {\r\n return (\r\n \r\n );\r\n } else {\r\n return (\r\n \r\n );\r\n }\r\n } else if (allSteps[stepContent].id === ID_CATEGORY_REASON) {\r\n return (\r\n \r\n );\r\n } else if (allSteps[stepContent].id === ID_APPOINTMENT_SELECTION_WITH_PHYSICIAN) {\r\n return (\r\n \r\n );\r\n } else if (allSteps[stepContent].id === ID_PERSONALDATA) {\r\n return (\r\n \r\n \r\n \r\n );\r\n } else if (allSteps[stepContent].id === ID_BOOKING) {\r\n return (\r\n \r\n \r\n \r\n );\r\n } else {\r\n return showQuestionnaireEntries(stepContent);\r\n }\r\n } else {\r\n /* Ohne CheckInDesk, wpName kommt nicht mit -> Buchung von daheim -> Termin buchen muss angezeigt werden */\r\n if (allSteps[stepContent].id == ID_CATEGORY_LOCATION) {\r\n return ;\r\n } else if (allSteps[stepContent].id == ID_CATEGORY_DEPARTMENT) {\r\n if (journeyResp !== undefined && journeyResp?.departments?.length > 0) {\r\n return (\r\n \r\n );\r\n } else if (props.useLoginContext) {\r\n return (\r\n \r\n );\r\n } else {\r\n return (\r\n \r\n );\r\n }\r\n } else if (allSteps[stepContent].id === ID_CATEGORY_REASON) {\r\n return (\r\n \r\n );\r\n } else if (allSteps[stepContent].id === ID_CATEGORY_PHYSICIAN) {\r\n return (\r\n \r\n );\r\n } else if (allSteps[stepContent].id === ID_APPOINTMENT_SELECTION) {\r\n return (\r\n \r\n \r\n \r\n );\r\n } else if (allSteps[stepContent].id === ID_PERSONALDATA) {\r\n return (\r\n \r\n \r\n \r\n );\r\n } else if (allSteps[stepContent].id === ID_BOOKING) {\r\n return (\r\n \r\n \r\n \r\n );\r\n } else {\r\n return showQuestionnaireEntries(stepContent);\r\n }\r\n }\r\n }\r\n }\r\n\r\n conState.done = false;\r\n return null;\r\n };\r\n\r\n const inMeineDatan = () => {\r\n if (allSteps[activeStep]?.id == ID_MYDATA || allSteps[activeStep]?.id == ID_PERSONALDATA) {\r\n return true;\r\n }\r\n return false;\r\n };\r\n\r\n const contentToShow = () => {\r\n if (showLoadingSpinner) {\r\n return (\r\n
    \r\n \r\n
    \r\n );\r\n } else if (inMeineDatan() && (isLoggedIn || (isRegisteredUser() && !isCheckInWorkplace()))) {\r\n /* we must unmount the PersonalData Page with this dummy LoadingSpinner to be sure that the personal data is filled in correctly when tmstate.personalData is set with values */\r\n if (tmstate.personalData.lastName.length <= 0) {\r\n return (\r\n
    \r\n \r\n
    \r\n );\r\n } else {\r\n return getContent();\r\n }\r\n } else if (isCheckInWorkplace()) {\r\n /* we must unmount the PersonalData Page with this dummy LoadingSpinner to be sure that the personal data is filled in correctly when tmstate.personalData is set with values */\r\n if (\r\n cardReadClickedInPersData ||\r\n !initPageDone ||\r\n (isRegisteredUser() && tmstate.personalData.lastName.length <= 0)\r\n ) {\r\n return (\r\n
    \r\n \r\n
    \r\n );\r\n } else {\r\n // return getContent();\r\n return
    {activeContent}
    ;\r\n }\r\n } else {\r\n return
    {activeContent}
    ;\r\n }\r\n };\r\n\r\n interface INavbarAndStepper {\r\n fullscreenMode: boolean;\r\n }\r\n const NavbarAndStepper = (props: INavbarAndStepper) => {\r\n if (props.fullscreenMode) {\r\n return null;\r\n } else {\r\n return (\r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n );\r\n }\r\n };\r\n\r\n /**\r\n * --------------------------------------------------------\r\n * ############### END STEPS AND CONTENT ##################\r\n * --------------------------------------------------------\r\n */\r\n\r\n const impressum = getImpressum();\r\n\r\n const showImpressum = () => {\r\n if (props.useLoginContext) {\r\n return false;\r\n }\r\n if (isFullscreenMode()) {\r\n return false;\r\n }\r\n return true;\r\n };\r\n\r\n return (\r\n \r\n \r\n {props.useLoginContext ? (\r\n \r\n \r\n \r\n \r\n \r\n ) : (\r\n \r\n )}\r\n {contentToShow()}\r\n\r\n handleClosePDFModal()}\r\n modalTitle={pdfModalShow.modalTitle}\r\n pdfData={pdfModalShow.pdfData}\r\n isSignable={pdfModalShow.isSignable}\r\n isSigned={pdfModalShow.isSigned}\r\n diagnosticReportData={pdfModalShow.diagnosticReportData}\r\n fullScreen={true}\r\n />\r\n 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","import Row from 'react-bootstrap/Row';\r\nimport styled from 'styled-components';\r\n\r\ninterface IRow {\r\n height?: string;\r\n justifyContent?: string;\r\n marginLeft?: string;\r\n marginRight?: string;\r\n}\r\n\r\nexport const StyledRow = styled(Row)`\r\n justify-content: ${(prop) => (prop.justifyContent ? prop.justifyContent : null)};\r\n`;\r\n\r\nexport const CenterRow = styled(Row)`\r\n justify-content: center;\r\n align-items: center;\r\n text-align: center;\r\n`;\r\n\r\nexport const MainHeaderRow = styled(Row)`\r\n height: 100%;\r\n`;\r\n\r\nexport const AppointmentCardStatusButtonRow = styled(Row)`\r\n height: 100%;\r\n flex-wrap: inherit;\r\n`;\r\n\r\nexport const StyledRowNoMargin = styled(Row)`\r\n margin-left: 0px;\r\n margin-right: 0px;\r\n`;\r\n\r\nexport const StyledRowPersonalDataBottom = styled(Row)`\r\n margin-left: 0px;\r\n margin-right: 0px;\r\n margin-bottom: 10px;\r\n`;\r\n\r\nexport const StyledVerticalCenterRow = styled(Row).attrs({ className: 'align-items-center' })`\r\n height: 100%;\r\n`;\r\n\r\nexport const TimeslotRow = styled(Row).attrs({ className: 'align-items-center' })`\r\n /* height: 45px; */\r\n flex-wrap: nowrap;\r\n`;\r\n\r\nexport const DateSwitcherRow = styled(Row).attrs({ className: 'align-items-center' })`\r\n height: 45px;\r\n flex-wrap: nowrap;\r\n`;\r\n\r\nexport const QuestionnaireSwitcherRow = styled(Row).attrs({ className: 'align-items-center' })`\r\n flex-wrap: nowrap;\r\n`;\r\n","import { ListGroup } from 'react-bootstrap';\r\nimport Card from 'react-bootstrap/Card';\r\nimport styled from 'styled-components';\r\n\r\ninterface ICard {\r\n width?: string;\r\n backgroundcolor?: string;\r\n marginbottom?: string;\r\n}\r\n\r\nexport const StyledAppointmentCard = styled(Card)`\r\n width: ${(prop) => (prop.width ? prop.width : '35rem')};\r\n align-self: center;\r\n border-radius: ${(props) => props.theme.appointmentCard.borderRadius};\r\n border-color: #e0e1e1;\r\n overflow: hidden;\r\n text-align: left;\r\n box-shadow: 0 2px 4px 0 #e0e1e1, 0 3px 10px 0 #e0e1e1;\r\n margin-bottom: 10px;\r\n margin-top: 10px;\r\n`;\r\n\r\nexport const StyledAppointmentCardHeader = styled(Card.Header)`\r\n background-color: ${(props) => (props.type === 'upcoming' ? '#c9d2df' : '#e0e1e1')};\r\n`;\r\n\r\nexport const StyledMainCardTitle = styled(Card.Title)`\r\n text-align: center;\r\n color: ${(props) => props.theme.icon.passive};\r\n`;\r\n\r\nexport const StyledAppointmentCardBody = styled(Card.Body)`\r\n background-color: white;\r\n border-top-style: solid;\r\n border-top-width: thin;\r\n border-top-color: black;\r\n`;\r\n\r\nexport const StyledAppointmentCardFooter = styled(Card.Footer)`\r\n color: ${(props) => (props.status === 'cancelled' ? 'red' : 'black')};\r\n background-color: white;\r\n`;\r\n\r\nexport const StyledMainCard = styled(Card)`\r\n color: ${(props) => props.theme.mainColor};\r\n background-color: ${(props) => props.theme.passiveColor};\r\n border-color: #e0e1e1;\r\n margin-top: 10px;\r\n margin-bottom: 10px;\r\n border-radius: 10px;\r\n width: ${(prop) => (prop.cardwidth ? prop.cardwidth : '380px')};\r\n height: 190px;\r\n box-shadow: 0 2px 4px 0 #e0e1e1, 0 3px 10px 0 #e0e1e1;\r\n text-align: center;\r\n align-self: center;\r\n &:hover {\r\n background-color: white;\r\n color: ${(props) => props.theme.font.mainColorHover};\r\n box-shadow: 0 4px 8px 0 #e0e1e1, 0 6px 20px 0 #e0e1e1;\r\n }\r\n`;\r\n\r\nexport const StyledProfileCard = styled(Card)`\r\n width: 600px;\r\n border-radius: 10px;\r\n border-color: #e0e1e1;\r\n overflow: hidden;\r\n box-shadow: 0 2px 4px 0 #e0e1e1, 0 3px 10px 0 #e0e1e1;\r\n margin: auto;\r\n margin-bottom: 10px;\r\n margin-top: 10px;\r\n`;\r\n\r\nexport const StyledPhysicianSelectionCard = styled(Card)`\r\n width: 100%;\r\n border-radius: 10px;\r\n border-color: #e0e1e1;\r\n overflow: hidden;\r\n box-shadow: 0 2px 4px 0 #e0e1e1, 0 3px 10px 0 #e0e1e1;\r\n margin: auto;\r\n margin-bottom: 10px;\r\n margin-top: 0px;\r\n margin-left: 0px;\r\n background-color: white;\r\n color: black;\r\n`;\r\n\r\nexport const StyledNewRegistrationCard = styled(Card)`\r\n height: 400px;\r\n width: 90%;\r\n border-radius: 10px;\r\n border-color: #e0e1e1;\r\n overflow: hidden;\r\n box-shadow: 0 2px 4px 0 #e0e1e1, 0 3px 10px 0 #e0e1e1;\r\n margin: auto;\r\n margin-bottom: 10px;\r\n align-self: center;\r\n text-align: left;\r\n`;\r\n\r\nexport const StyledNewRegistrationCardBody = styled(Card.Body)`\r\n background-color: rgb(36, 94, 173);\r\n border-top-style: solid;\r\n border-top-width: thin;\r\n border-top-color: black;\r\n color: white;\r\n`;\r\n\r\nexport const StyledNewRegistrationCardImg = styled(Card.Img)`\r\n width: 60%;\r\n margin: 20px 20px;\r\n`;\r\n\r\nexport const StyledPhotoCard = styled(Card)`\r\n color: ${(props) => props.theme.mainColor};\r\n background-color: ${(props) => props.theme.passiveColor};\r\n border-color: #e0e1e1;\r\n margin-top: 10px;\r\n margin-bottom: 10px;\r\n border-radius: 25px;\r\n width: ${(prop) => (prop.cardwidth ? prop.cardwidth : '300px')};\r\n height: ${(prop) => (prop.cardwidth ? prop.cardwidth : '300px')};\r\n box-shadow: 0 2px 4px 0 #e0e1e1, 0 3px 10px 0 #e0e1e1;\r\n text-align: center;\r\n align-self: center;\r\n &:hover {\r\n background-color: white;\r\n color: ${(props) => props.theme.font.mainColorHover};\r\n box-shadow: 0 4px 8px 0 #e0e1e1, 0 6px 20px 0 #e0e1e1;\r\n }\r\n`;\r\n\r\nexport const StyledAppoinmentCategoryCard = styled(Card)`\r\n background-color: ${(prop) => (prop.backgroundcolor ? prop.backgroundcolor : 'white')};\r\n margin-bottom: ${(prop) => (prop.marginbottom ? prop.marginbottom : null)};\r\n`;\r\n\r\nexport const ListGroupCst = styled(ListGroup)`\r\n font-size: 0.85rem;\r\n`;\r\n\r\nexport const ListGroupItemCst = styled(ListGroup.Item)`\r\n padding: 0.2rem 1.25rem;\r\n`;\r\n\r\nexport const StyledWaitingCard = styled(Card)`\r\n color: ${(props) => props.theme.mainColor};\r\n background-color: ${(props) => props.theme.passiveColor};\r\n border-color: #e0e1e1;\r\n margin-top: 10px;\r\n margin-bottom: 10px;\r\n border-radius: 10px;\r\n width: ${(prop) => (prop.cardwidth ? prop.cardwidth : '380px')};\r\n height: 190px;\r\n box-shadow: 0 2px 4px 0 #e0e1e1, 0 3px 10px 0 #e0e1e1;\r\n text-align: center;\r\n align-self: center;\r\n`;\r\n\r\nexport const StyledWaitingCardBody = styled(Card.Body)`\r\n /* border-top-style: solid; */\r\n /* border-top-width: thin; */\r\n`;\r\n\r\nexport const StyledPhysicianSelectionCardTitle = styled(Card.Title)`\r\n font-weight: bold;\r\n color: rgb(36, 94, 173);\r\n`;\r\n","import * as React from 'react';\r\nimport { AlertOnHide, AlertType } from '../context/alertContext';\r\nimport { IAlertMessageWithoutDispatch, showAlertMessage } from './alertHandling';\r\n\r\n/* #### ERROR MESSAGES #### */\r\nexport const ERROR_MESSAGE_DEFAULT = 'Es ist ein Fehler aufgetreten.';\r\n\r\n/* ######################## */\r\n\r\ninterface IResponseErrorHandling {\r\n response: any;\r\n alertdispatch: React.Dispatch;\r\n alertMessage?: IAlertMessageWithoutDispatch;\r\n}\r\n\r\nexport const responseErrorHandling = (props: IResponseErrorHandling) => {\r\n let responseMsg = '';\r\n if (props.response) {\r\n if (props.response.data) {\r\n if (props.response.data.issue) {\r\n if (props.response.data.issue[0].diagnostics !== undefined) {\r\n responseMsg = props.response.data.issue[0].diagnostics;\r\n }\r\n } else {\r\n responseMsg = props.response.data;\r\n }\r\n } else if (props.response.message) {\r\n responseMsg = props.response.message;\r\n } else if (typeof props.response === 'string') {\r\n responseMsg = props.response;\r\n }\r\n }\r\n\r\n /* check if responseMsg is a string */\r\n if (typeof responseMsg !== 'string') {\r\n responseMsg = 'responseErrorHandling(): Keine error responseMsg gefunden.';\r\n }\r\n\r\n /* Priority Error Messages */\r\n if (responseMsg.includes('Authorization failed')) {\r\n showAlertMessage({\r\n alertTitle: 'Authorization',\r\n alertTxt: 'Authorization failed',\r\n alertType: AlertType.error,\r\n onHide: AlertOnHide.goToHome,\r\n // onHideCustom: onHideAlertModal,\r\n alertdispatch: props.alertdispatch,\r\n });\r\n\r\n /* Custom Error Message OR Default Error Message*/\r\n } else {\r\n showAlertMessage({\r\n alertTitle: props.alertMessage ? props.alertMessage.alertTitle : ERROR_MESSAGE_DEFAULT,\r\n alertTxt: props.alertMessage ? props.alertMessage.alertTxt : responseMsg,\r\n alertType: props.alertMessage ? props.alertMessage.alertType : AlertType.error,\r\n onHide: props.alertMessage ? props.alertMessage.onHide : AlertOnHide.onlyClose,\r\n onHideCustom: props.alertMessage?.onHideCustom ? props.alertMessage.onHideCustom : undefined,\r\n alertdispatch: props.alertdispatch,\r\n });\r\n }\r\n};\r\n","import { Container } from '@material-ui/core';\r\nimport { useContext, useEffect, useState } from 'react';\r\nimport Card from 'react-bootstrap/Card';\r\nimport Col from 'react-bootstrap/Col';\r\nimport Image from 'react-bootstrap/Image';\r\nimport OverlayTrigger from 'react-bootstrap/OverlayTrigger';\r\nimport Row from 'react-bootstrap/Row';\r\nimport Tooltip from 'react-bootstrap/Tooltip';\r\nimport LoginContext from '../../context/loginContext';\r\nimport { getQRCodeConfig } from '../../globals/global';\r\nimport { getBarcodeForApp } from '../../services/RestServices';\r\nimport { StyledMainCardTitle, StyledProfileCard } from '../Cards/StyledCard';\r\n\r\nconst QRCodeForApp = () => {\r\n const { state } = useContext(LoginContext);\r\n\r\n const [qrCode, setQrCode] = useState('');\r\n const [applinksURL, setAppLinksURL] = useState('');\r\n\r\n useEffect(() => {\r\n const getQRCodes4App = async () => {\r\n const response = await getBarcodeForApp(state.sessionId);\r\n\r\n const qrCodeConfig = getQRCodeConfig();\r\n const qrCodeData = response[qrCodeConfig];\r\n // let applinksURL = '';\r\n\r\n if (qrCodeConfig === 'pngSSG') {\r\n setAppLinksURL(response['applinksURLSSG']);\r\n } else if (qrCodeConfig === 'pngPOI') {\r\n setAppLinksURL(response['applinksURLPOI']);\r\n }\r\n\r\n if (qrCodeData) {\r\n setQrCode(qrCodeData);\r\n } else {\r\n console.log('cannot find qrcode with config: ', qrCodeConfig);\r\n }\r\n };\r\n getQRCodes4App();\r\n }, []);\r\n\r\n const qrCodeSrc = 'data:image/jpg;base64,' + qrCode;\r\n\r\n const handleQRClick = () => {\r\n window.open(applinksURL, '_self');\r\n };\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n Die App für Ihr Handy\r\n \r\n \r\n \r\n
    \r\n \r\n Öffnen Sie die Kamera-App Ihres Gerätes und richten\r\n Sie den Sucher auf diesen QR-Code.\r\n \r\n }\r\n >\r\n \r\n \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n );\r\n};\r\n\r\nexport default QRCodeForApp;\r\n","import { CenterDiv, ImpressumBottom } from '../Div/StyledDiv';\r\nimport { ParagraphFontSize } from '../StyledParagraph/StyledParagraph';\r\n\r\nexport interface IImpressumElement {\r\n impressumLink: string;\r\n datenschutzLink: string;\r\n textColor?: string;\r\n}\r\n\r\nconst Impressum = (props: IImpressumElement) => {\r\n const textColor = props.textColor ? props.textColor : '#007bff';\r\n\r\n return (\r\n \r\n {props.impressumLink && (\r\n \r\n Impressum\r\n \r\n )}\r\n {props.datenschutzLink && props.impressumLink && ' | '}\r\n {props.datenschutzLink && (\r\n \r\n Datenschutz\r\n \r\n )}\r\n \r\n );\r\n};\r\n\r\nexport const ImpressumNormal = (props: IImpressumElement) => {\r\n const textColor = props.textColor ? props.textColor : '#007bff';\r\n return (\r\n \r\n {props.impressumLink && (\r\n \r\n Impressum\r\n \r\n )}\r\n {props.datenschutzLink && props.impressumLink && ' | '}\r\n {props.datenschutzLink && (\r\n \r\n Datenschutz\r\n \r\n )}\r\n \r\n );\r\n};\r\n\r\nexport default Impressum;\r\n","import { 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 { 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 { useContext, useEffect, useState } from 'react';\r\nimport { ThemeContext } from 'styled-components';\r\nimport { StyledWaitingCard, StyledWaitingCardBody } from '../../components/Cards/StyledCard';\r\nimport { CenterDiv } from '../../components/Div/StyledDiv';\r\nimport AppPropsContext from '../../context/appPropsContext';\r\nimport TerminierungContext from '../../context/terminierungContext';\r\nimport VideochatContext from '../../context/videochatContext';\r\nimport { jitsiOptions } from '../../globals/global';\r\nimport { useAppProperties } from '../../hooks/useAppProperties';\r\nimport { useResizedScreenResolution } from '../../hooks/useScreenResolution';\r\n\r\ninterface IVideochatWL {\r\n checkInVariant?: boolean;\r\n onVideoHangup?(): void;\r\n}\r\n\r\ndeclare class JitsiMeetExternalAPI {\r\n constructor(domain: string, options: any);\r\n}\r\n\r\ninterface VCContext {\r\n jitsiDomain: string;\r\n jitsiAllowed: boolean;\r\n}\r\nlet api: JitsiMeetExternalAPI | null | any;\r\nconst VideochatWL = (props: IVideochatWL) => {\r\n const { vsstate } = useContext(VideochatContext);\r\n const { tmstate } = useContext(TerminierungContext);\r\n const { apstate } = useContext(AppPropsContext);\r\n const themeContext = useContext(ThemeContext);\r\n const [vcContext, setVcContext] = useState({ jitsiDomain: '', jitsiAllowed: false });\r\n\r\n const { disableFullscreenMode, enableFullscreenMode, isFullscreenMode } = useAppProperties();\r\n\r\n const includeExternalScript = (url, whenFinished) => {\r\n let script: any;\r\n script = document.querySelector(`script[src=\"${url}\"]`);\r\n\r\n const handleScript = (e) => {\r\n if (e.type === 'load') {\r\n whenFinished();\r\n }\r\n };\r\n\r\n if (!script) {\r\n script = document.createElement('script');\r\n script.type = 'application/javascript';\r\n script.src = url;\r\n script.async = true;\r\n document.body.appendChild(script);\r\n script.addEventListener('load', handleScript);\r\n script.addEventListener('error', handleScript);\r\n } else {\r\n whenFinished();\r\n }\r\n\r\n script.addEventListener('load', handleScript);\r\n script.addEventListener('error', handleScript);\r\n };\r\n\r\n useEffect(() => {\r\n let jitsNowAllowed = false;\r\n if (vcContext.jitsiAllowed || vsstate.jitsiAllowed) {\r\n jitsNowAllowed = true;\r\n if (!isFullscreenMode()) {\r\n enableFullscreenMode();\r\n }\r\n }\r\n if (vcContext.jitsiDomain != apstate.jitsiDomain || (!vcContext.jitsiAllowed && jitsNowAllowed)) {\r\n setVcContext({ jitsiDomain: apstate.jitsiDomain, jitsiAllowed: jitsNowAllowed });\r\n }\r\n }, [apstate, vsstate]);\r\n\r\n const [getResizedHeight] = useResizedScreenResolution();\r\n const jitsiContent = () => {\r\n const style = {\r\n height: getResizedHeight(isFullscreenMode() ? 100 : 75)?.toString() + 'px',\r\n };\r\n const url = 'https://' + apstate.jitsiDomain + '/external_api.js';\r\n const options = apstate.jitsiOptions;\r\n options.roomName = vsstate.roomName ? vsstate.roomName : tmstate.enrollData.enrollCode;\r\n const displayName = tmstate?.personalData?.firstName + ' ' + tmstate?.personalData?.lastName;\r\n options.userInfo = {\r\n displayName: displayName,\r\n };\r\n if (!options.configOverwrite) {\r\n options.configOverwrite = jitsiOptions.configOverwrite;\r\n }\r\n includeExternalScript(url, function () {\r\n const jp = document.getElementById('jitsiParent');\r\n if (!api && jp && eval('typeof JitsiMeetExternalAPI') === 'function') {\r\n options.parentNode = document.getElementById('jitsiParent');\r\n if (!options.parentNode.querySelector('IFRAME')) {\r\n api = new JitsiMeetExternalAPI(apstate.jitsiDomain, options);\r\n\r\n api.addEventListener('readyToClose', () => {\r\n if (props.onVideoHangup) {\r\n props.onVideoHangup();\r\n setVcContext({ jitsiDomain: '', jitsiAllowed: false });\r\n if (isFullscreenMode()) {\r\n disableFullscreenMode();\r\n }\r\n }\r\n });\r\n }\r\n } else {\r\n if (jp === null || jp.querySelector('IFRAME') === null) {\r\n api = null;\r\n }\r\n }\r\n });\r\n return
    ;\r\n };\r\n\r\n const waitScreen = (errmsg: string) => {\r\n return (\r\n \r\n \r\n \r\n {errmsg ? (\r\n <>\r\n
    Informationen zu Ihrem Videotermin
    \r\n

    {errmsg}

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

    Der Videochat beginnt automatisch, sobald der Arzt bereit ist.

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

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

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

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

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

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

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

    Beim letzten Anmeldungsversuch wurde die Einwilligungserklärung abgelehnt.

    \r\n

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

    \r\n
    \r\n
    \r\n ) : (\r\n <>\r\n )}\r\n \r\n \r\n \r\n toggleActive('0')}\r\n as={Button}\r\n variant=\"link\"\r\n eventKey=\"0\"\r\n style={{ color: 'white' }}\r\n >\r\n
    \r\n Einwilligungserklärung {getIcon('0')}\r\n
    \r\n \r\n
    \r\n \r\n \r\n {/*\r\n \r\n */}\r\n
    \r\n \r\n \r\n \r\n {/* \r\n \r\n toggleActive('1')}\r\n as={Button}\r\n variant=\"link\"\r\n eventKey=\"1\"\r\n style={{ color: 'white' }}\r\n >\r\n Datenschutzerklärung {getIcon('1')}\r\n \r\n \r\n \r\n \r\n
    \r\n \r\n \r\n */}\r\n \r\n \r\n \r\n
    \r\n {scrollInfoMessage()}\r\n \r\n \r\n
    \r\n \r\n \r\n \r\n
    \r\n \r\n Ich gebe vorstehende Einwilligungserklärung freiwillig ab und\r\n erkläre mich ausdrücklich mit dem Inhalt einverstanden.\r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n {/*
    \r\n \r\n \r\n \r\n
    \r\n \r\n Ich habe die Datenschutzerklärung zur Kenntnis genommen und\r\n stimme dieser zu.\r\n \r\n
    \r\n
    \r\n
    \r\n
    */}\r\n \r\n
    \r\n \r\n \r\n \r\n Abbrechen\r\n \r\n \r\n \r\n \r\n {getImpressum().impressumLink && (\r\n \r\n Impressum\r\n \r\n )}\r\n {getImpressum().impressumLink && getImpressum().datenschutzLink && ' | '}\r\n {getImpressum().impressumLink && (\r\n \r\n Datenschutz\r\n \r\n )}\r\n \r\n \r\n
    \r\n \r\n \r\n Ablehnen\r\n \r\n \r\n
    \r\n
    \r\n \r\n \r\n \r\n Ich stimme zu\r\n \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n \r\n \r\n );\r\n};\r\n\r\nexport default ConsignationModal;\r\n","import * as React from 'react';\r\nimport { useContext, useEffect, useRef, useState } from 'react';\r\nimport Accordion from 'react-bootstrap/Accordion';\r\nimport Button from 'react-bootstrap/Button';\r\nimport Card from 'react-bootstrap/Card';\r\nimport Col from 'react-bootstrap/Col';\r\nimport Form from 'react-bootstrap/Form';\r\nimport Modal from 'react-bootstrap/Modal';\r\nimport Row from 'react-bootstrap/Row';\r\nimport { IoIosArrowDropdownCircle, IoIosArrowDropupCircle } from 'react-icons/io';\r\nimport { ThemeContext } from 'styled-components';\r\nimport LoginContext from '../../../context/loginContext';\r\nimport { getTermsHTML } from '../../../services/RestServices';\r\nimport StyledButton from '../../Buttons/StyledButton';\r\nimport StyledCol from '../../Cols/StyledCol';\r\nimport { StyledParagraph } from '../../StyledParagraph/StyledParagraph';\r\nimport { StyledModal } from '../StyledModal/StyledModal';\r\n\r\ninterface IConsigAddModal {\r\n show: boolean;\r\n onHide: () => void;\r\n onSubmit: () => void;\r\n onDeny: () => void;\r\n checkbox: () => void;\r\n checkConsignation: boolean;\r\n sessionId: string;\r\n userId: string;\r\n}\r\n\r\nconst ConsignationAddModal = (props: IConsigAddModal) => {\r\n const themeContext = useContext(ThemeContext);\r\n\r\n const [activeId, setActiveId] = useState('0');\r\n const { state } = useContext(LoginContext);\r\n const [termsHTMLBottom, setTermsHTMLBottom] = useState(false);\r\n const [htmlTerm, setHTMLTerm] = useState('');\r\n\r\n const submitButtonRef = useRef(null);\r\n\r\n useEffect(() => {\r\n console.log('getTermsHTML...');\r\n getTermHTML();\r\n }, []);\r\n\r\n const handleSubmit = (event: React.FormEvent) => {\r\n submitButtonRef?.current?.setAttribute('disabled', 'disabled');\r\n\r\n event.preventDefault();\r\n const form = event.currentTarget;\r\n if (form.checkValidity() === false) {\r\n event.preventDefault();\r\n event.stopPropagation();\r\n }\r\n {\r\n props.onSubmit();\r\n }\r\n };\r\n\r\n function toggleActive(id: string) {\r\n if (activeId !== id) {\r\n setActiveId(id);\r\n } else {\r\n setActiveId('');\r\n }\r\n }\r\n\r\n const getIcon = (id: string) => {\r\n return activeId === id ? : ;\r\n };\r\n\r\n const termsHTMLScrollHandling = (e: any) => {\r\n let bottom = false;\r\n //const scrollHeight = e.target.scrollHeight;\r\n const scrollHeight = document.getElementById('termsHTMLAddDiv')?.offsetHeight;\r\n const scrollTop = e.target.scrollTop;\r\n const clientHeight = e.target.clientHeight;\r\n\r\n const diff = (scrollHeight ? scrollHeight : 0) - scrollTop;\r\n\r\n if (diff - 1 <= clientHeight) {\r\n bottom = true;\r\n }\r\n\r\n if (bottom) {\r\n setTermsHTMLBottom(true);\r\n }\r\n };\r\n\r\n const scrollInfoMessage = () => {\r\n if (!termsHTMLBottom) {\r\n return (\r\n <>\r\n \r\n \r\n Lesen Sie die Einwilligungserklärung vollständig bis zum Schluss durch. Am Textende haben\r\n Sie die Möglichkeit, die Zustimmung zu aktivieren.\r\n \r\n \r\n \r\n );\r\n }\r\n\r\n return null;\r\n };\r\n\r\n const getTermHTML = async () => {\r\n if (state.addConsignationsToAsk) {\r\n const htmlText = await getTermsHTML(state.sessionId, state.addConsignationsToAsk[0]);\r\n setHTMLTerm(htmlText);\r\n }\r\n\r\n return '';\r\n };\r\n\r\n return (\r\n \r\n \r\n Einwilligungserklärung\r\n \r\n \r\n \r\n \r\n \r\n toggleActive('0')}\r\n as={Button}\r\n variant=\"link\"\r\n eventKey=\"0\"\r\n style={{ color: 'white' }}\r\n >\r\n
    \r\n Einwilligungserklärung {getIcon('0')}\r\n
    \r\n \r\n
    \r\n \r\n \r\n
    \r\n \r\n \r\n \r\n \r\n \r\n \r\n
    \r\n {scrollInfoMessage()}\r\n \r\n \r\n
    \r\n \r\n \r\n \r\n
    \r\n \r\n Ich habe die Einwilligungserklärung zur Kenntnis genommen und\r\n stimme dieser zu.\r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n \r\n \r\n \r\n Abbrechen\r\n \r\n \r\n
    \r\n \r\n \r\n Ablehnen\r\n \r\n \r\n
    \r\n
    \r\n \r\n
    \r\n \r\n Ich stimme zu\r\n \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n \r\n \r\n );\r\n};\r\n\r\nexport default ConsignationAddModal;\r\n","import { useContext, useState } from 'react';\r\nimport { useNavigate } from 'react-router-dom';\r\nimport AlertContext, { AlertOnHide, AlertType } from '../../context/alertContext';\r\nimport LoginContext from '../../context/loginContext';\r\nimport { getBaseURL } from '../../globals/global';\r\nimport { Paths } from '../../Routes';\r\nimport { consignation } from '../../services/RestServices';\r\nimport { showAlertMessage } from '../../utils/alertHandling';\r\nimport ConsignationAddModal from '../Modals/ConsignationModal/ConsignationAddModal';\r\n\r\ninterface IConsignationAdd {\r\n ondenial: () => void;\r\n oncancel: () => void;\r\n}\r\n\r\nconst ConsignationAdd = (props: IConsignationAdd) => {\r\n const navigate = useNavigate();\r\n const { state } = useContext(LoginContext);\r\n const { alertdispatch } = useContext(AlertContext);\r\n const [consigModalShow, setConsigModalShow] = useState(true);\r\n const [checkConsignation, setCheckConsignation] = useState(false);\r\n\r\n const handleChange1 = () => {\r\n setCheckConsignation(!checkConsignation);\r\n };\r\n\r\n const getUrlTerms = () => {\r\n const urlTerms = getBaseURL() + '/' + state.addConsignationsToAsk[0];\r\n return urlTerms;\r\n };\r\n\r\n const handleSubmit = async () => {\r\n const consigRes = await consignation(state.userId, state.sessionId, 'given', true, getUrlTerms());\r\n\r\n if (consigRes.status === 'success') {\r\n setConsigModalShow(false);\r\n navigate(Paths.DOKUMENTE);\r\n } else {\r\n showAlertMessage({\r\n alertTitle: 'Datenschutzerklärung',\r\n alertTxt: 'Ein Fehler ist aufgetreten!',\r\n alertType: AlertType.error,\r\n onHide: AlertOnHide.onlyClose,\r\n alertdispatch: alertdispatch,\r\n });\r\n }\r\n };\r\n\r\n const handleDenial = async () => {\r\n const consigDenialRes = await consignation(state.userId, state.sessionId, 'not given', true, getUrlTerms());\r\n\r\n if (consigDenialRes.status === 'success') {\r\n setConsigModalShow(false);\r\n {\r\n props.ondenial();\r\n }\r\n } else {\r\n showAlertMessage({\r\n alertTitle: 'Datenschutzerklärung',\r\n alertTxt: 'Ein Fehler ist aufgetreten!',\r\n alertType: AlertType.error,\r\n onHide: AlertOnHide.onlyClose,\r\n alertdispatch: alertdispatch,\r\n });\r\n }\r\n };\r\n\r\n const handleCancel = () => {\r\n setConsigModalShow(false);\r\n {\r\n props.oncancel();\r\n }\r\n };\r\n\r\n return (\r\n
    \r\n handleCancel()}\r\n onSubmit={() => handleSubmit()}\r\n onDeny={() => handleDenial()}\r\n checkbox={() => handleChange1()}\r\n checkConsignation={checkConsignation}\r\n sessionId={state.sessionId}\r\n userId={state.userId}\r\n />\r\n
    \r\n );\r\n};\r\n\r\nexport default ConsignationAdd;\r\n","import { useContext, useState } from 'react';\r\nimport { useNavigate } from 'react-router-dom';\r\nimport AlertContext, { AlertOnHide, AlertType } from '../../context/alertContext';\r\nimport LoginContext from '../../context/loginContext';\r\nimport useHandleLogout from '../../hooks/useHandleLogout';\r\nimport { Paths } from '../../Routes';\r\nimport { consignation } from '../../services/RestServices';\r\nimport { showAlertMessage } from '../../utils/alertHandling';\r\nimport ConsignationModal from '../Modals/ConsignationModal/ConsignationModal';\r\nimport ConsignationWaitForLetterModal from '../Modals/ConsignationModal/ConsignationWaitForLetterModal';\r\nimport ConsignationWaitModal from '../Modals/ConsignationModal/ConsignationWaitModal';\r\nimport ConsignationAdd from './ConsignationAdd';\r\nimport InitialPassword from './InitialPassword';\r\n\r\ninterface IConsignation {\r\n ondenial: () => void;\r\n oncancel: () => void;\r\n notgiven: boolean;\r\n}\r\n\r\nconst Consignation = (props: IConsignation) => {\r\n const navigate = useNavigate();\r\n const { state } = useContext(LoginContext);\r\n const { alertdispatch } = useContext(AlertContext);\r\n const [consigModalShow, setConsigModalShow] = useState(true);\r\n const [consigWaitModalShow, setConsigWaitModalShow] = useState(false);\r\n const [consigWaitForLetterModalShow, setConsigWaitForLetterModalShow] = useState(false);\r\n const [checkConsignation, setCheckConsignation] = useState({ checkbox1: false, checkbox2: false });\r\n const [consigAddModalShow, setConsigAddModalShow] = useState(false);\r\n const [passwordModalShow, setPasswordModalShow] = useState(false);\r\n const { handleLogout } = useHandleLogout();\r\n const [lastConsigRes, setLastConsigRes] = useState({ waitForConsignation: 'false', waitForLetter: 'false' });\r\n\r\n const handleChange1 = () => {\r\n setCheckConsignation({ checkbox1: !checkConsignation.checkbox1, checkbox2: checkConsignation.checkbox2 });\r\n };\r\n\r\n const handleChange2 = () => {\r\n setCheckConsignation({ checkbox1: checkConsignation.checkbox1, checkbox2: !checkConsignation.checkbox2 });\r\n };\r\n\r\n const handleSubmit = async () => {\r\n const consigRes = await consignation(state.userId, state.sessionId, 'given');\r\n\r\n if (consigRes.status === 'success') {\r\n setConsigModalShow(false);\r\n if (consigRes.forceNewPWD == 'true') {\r\n setLastConsigRes({\r\n waitForConsignation: consigRes.waitForConsignation,\r\n waitForLetter: consigRes.waitForLetter,\r\n });\r\n setPasswordModalShow(true);\r\n } else {\r\n if (consigRes.waitForConsignation === 'true') {\r\n setConsigWaitModalShow(true);\r\n } else if (consigRes.waitForLetter === 'true') {\r\n setConsigWaitForLetterModalShow(true);\r\n } else {\r\n if (state.addConsignationsToAsk && state.addConsignationsToAsk.length > 0) {\r\n setConsigAddModalShow(true);\r\n } else {\r\n navigate(Paths.DOKUMENTE);\r\n }\r\n }\r\n }\r\n } else {\r\n showAlertMessage({\r\n alertTitle: 'Datenschutzerklärung',\r\n alertTxt: 'Ein Fehler ist aufgetreten!',\r\n alertType: AlertType.error,\r\n onHide: AlertOnHide.onlyClose,\r\n alertdispatch: alertdispatch,\r\n });\r\n }\r\n };\r\n\r\n const handlePWChange = async () => {\r\n if (lastConsigRes.waitForConsignation === 'true') {\r\n setConsigWaitModalShow(true);\r\n } else if (lastConsigRes.waitForLetter === 'true') {\r\n setConsigWaitForLetterModalShow(true);\r\n } else if (state.addConsignationsToAsk && state.addConsignationsToAsk.length > 0) {\r\n setConsigAddModalShow(true);\r\n } else {\r\n navigate(Paths.DOKUMENTE);\r\n }\r\n };\r\n\r\n const setInitPassword = async () => {\r\n navigate(Paths.HOME);\r\n };\r\n\r\n const handleDenial = async () => {\r\n const consigDenialRes = await consignation(state.userId, state.sessionId, 'not given');\r\n\r\n if (consigDenialRes.status === 'success') {\r\n setConsigModalShow(false);\r\n {\r\n props.ondenial();\r\n }\r\n } else {\r\n showAlertMessage({\r\n alertTitle: 'Datenschutzerklärung',\r\n alertTxt: 'Ein Fehler ist aufgetreten!',\r\n alertType: AlertType.error,\r\n onHide: AlertOnHide.onlyClose,\r\n alertdispatch: alertdispatch,\r\n });\r\n }\r\n };\r\n\r\n const handleCancel = () => {\r\n setConsigModalShow(false);\r\n {\r\n props.oncancel();\r\n }\r\n };\r\n\r\n const handleHideConsignationWaitModal = () => {\r\n setConsigWaitModalShow(false);\r\n navigate(Paths.DOKUMENTE);\r\n };\r\n\r\n const handleHideConsignationWaitForLetterModal = () => {\r\n setConsigWaitForLetterModalShow(false);\r\n handleLogout();\r\n };\r\n\r\n const handleConsigAddDenial = () => {\r\n setConsigAddModalShow(false);\r\n };\r\n\r\n const showConsignationAddForm = () => {\r\n setConsigAddModalShow(false);\r\n };\r\n\r\n return (\r\n
    \r\n handleCancel()}\r\n onSubmit={() => handleSubmit()}\r\n onDeny={() => handleDenial()}\r\n checkbox1={() => handleChange1()}\r\n checkbox2={() => handleChange2()}\r\n checkConsignation1={checkConsignation.checkbox1}\r\n checkConsignation2={checkConsignation.checkbox2}\r\n sessionId={state.sessionId}\r\n userId={state.userId}\r\n notGiven={props.notgiven}\r\n />\r\n handleHideConsignationWaitModal()} />\r\n handleHideConsignationWaitForLetterModal()}\r\n />\r\n {consigAddModalShow && (\r\n handleConsigAddDenial()} oncancel={() => showConsignationAddForm()} />\r\n )}\r\n {passwordModalShow && (\r\n handlePWChange()} oncancel={() => setInitPassword()} />\r\n )}\r\n
    \r\n );\r\n};\r\n\r\nexport default Consignation;\r\n","import * as React from 'react';\r\nimport { useContext, useEffect, useRef, useState } from 'react';\r\nimport Button from 'react-bootstrap/Button';\r\nimport Card from 'react-bootstrap/Card';\r\nimport Col from 'react-bootstrap/Col';\r\nimport Form from 'react-bootstrap/Form';\r\nimport Row from 'react-bootstrap/Row';\r\nimport { useLocation, useNavigate } from 'react-router-dom';\r\nimport { Paths } from '../../Routes';\r\nimport StyledButton from '../../components/Buttons/StyledButton';\r\nimport { StyledMainCardTitle, StyledProfileCard } from '../../components/Cards/StyledCard';\r\nimport { RightDiv } from '../../components/Div/StyledDiv';\r\nimport { LottieButtonLoadingSpinner } from '../../components/Loading/Loading';\r\nimport ConsignationWaitForLetterModal from '../../components/Modals/ConsignationModal/ConsignationWaitForLetterModal';\r\nimport ConsignationWaitModal from '../../components/Modals/ConsignationModal/ConsignationWaitModal';\r\nimport DoDoubleOptInModal from '../../components/Modals/DoDoubleOptInModal/DoDoubleOptInModal';\r\nimport DoDoubleOptInViaLinkModal from '../../components/Modals/DoDoubleOptInModal/DoDoubleOptInViaLinkModal';\r\nimport TwoFactorAuthModal from '../../components/Modals/TwoFALoginModal/TwoFALoginModal';\r\nimport { StyledFormLabelForInput } from '../../components/StyledForm/SyledForm';\r\nimport Consignation from '../../components/User/Consignation';\r\nimport ConsignationAdd from '../../components/User/ConsignationAdd';\r\nimport InitialPassword from '../../components/User/InitialPassword';\r\nimport AlertContext, { AlertOnHide, AlertType } from '../../context/alertContext';\r\nimport AppPropsContext from '../../context/appPropsContext';\r\nimport ExecuteRuleContext from '../../context/executeRuleContext';\r\nimport LoginContext from '../../context/loginContext';\r\nimport TerminierungContext from '../../context/terminierungContext';\r\nimport { PROFILE_HOME, securityItemNames } from '../../globals/global';\r\nimport useHandleLogout from '../../hooks/useHandleLogout';\r\nimport { usePersonalData } from '../../hooks/usePersonalData';\r\nimport { useProfileSwitch } from '../../hooks/useProfileSwitch';\r\nimport {\r\n IAuthorizeAsync,\r\n addPlannedStudy,\r\n authorizeAsync,\r\n executeRule,\r\n getPrivacyHTML,\r\n getTermsHTML,\r\n setActivePatId,\r\n} from '../../services/RestServices';\r\nimport { getPatientProfilePictureWL } from '../../services/fhir/FHIRPatientResource';\r\nimport { showAlertMessage } from '../../utils/alertHandling';\r\nimport { calcButtonPaddingSize } from '../../utils/lottieUtils';\r\nimport { getQueryParams } from '../../utils/urlUtils';\r\n\r\ninterface ILoginURLParams {\r\n addPlannedStudy?: string;\r\n}\r\n\r\nconst Login = () => {\r\n const navigate = useNavigate();\r\n const { apstate } = useContext(AppPropsContext);\r\n\r\n const [username, setUsername] = useState('');\r\n const [password, setPassword] = useState('');\r\n const [initPassword, setInitPassword] = useState(false);\r\n const [consignationForm, showConsignationForm] = useState(false);\r\n const [consignationAddForm, showConsignationAddForm] = useState(false);\r\n const [consignationWaitForm, showConsignationWaitForm] = useState(false);\r\n const [consignationWaitForLetterForm, showConsignationWaitForLetterForm] = useState(false);\r\n const [doubleOptInForm, showDoubleOptInForm] = useState(false);\r\n const [doubleOptInViaLinkForm, showDoubleOptInViaLinkForm] = useState(false);\r\n const [twoFAModalShow, set2FAModalShow] = useState(false);\r\n const [notGiven, setNotGiven] = useState(false);\r\n const [consig, setConsignation] = useState('');\r\n const [doubleOptInMissingAfterPWDChange, setDoubleOptInMissingAfterPWDChange] = useState(false); //wird nur gebraucht wenn forcePWD + doubleOptInMissing kommt, dann muss zuerst forcePWD ziehen\r\n const [autoLogin, setAutoLogin] = useState(false);\r\n const [activeStudyName, setActiveStudyName] = useState('');\r\n\r\n const [showLoginButtonLoadingSpinner, setShowLoginButtonLoadingSpinner] = useState(false);\r\n\r\n const { state, dispatch } = useContext(LoginContext);\r\n const { tmdispatch } = useContext(TerminierungContext);\r\n const { alertdispatch } = useContext(AlertContext);\r\n const { executerulestate } = useContext(ExecuteRuleContext);\r\n\r\n const { getAndSetPersonalData, resetPersonalData } = usePersonalData();\r\n\r\n const { handleLogout } = useHandleLogout();\r\n\r\n const loginButtonRef = useRef(null);\r\n\r\n const { setSecurityItems, getUserId } = useProfileSwitch();\r\n\r\n const location = useLocation();\r\n\r\n useEffect(() => {\r\n if (state.redirectUser && state.redirectUser.length > 0) {\r\n setUsername(state.redirectUser);\r\n setPassword(state.redirectPwd);\r\n setAutoLogin(true);\r\n return () => {\r\n dispatch({\r\n type: 'RESETREDIRECTUSER',\r\n });\r\n };\r\n }\r\n }, []);\r\n\r\n useEffect(() => {\r\n if (autoLogin)\r\n if (loginButtonRef) {\r\n loginButtonRef.current.click();\r\n }\r\n return () => {\r\n setAutoLogin(false);\r\n };\r\n }, [autoLogin]);\r\n\r\n useEffect(() => {\r\n const setCurrentActivePatId = async (activeUserId: string) => {\r\n const changeRes = await setActivePatId(state.sessionId, activeUserId);\r\n if (!changeRes.SUCCESS) {\r\n // console.log('profile change NOT successful');\r\n }\r\n };\r\n\r\n if (activeStudyName !== '') {\r\n setSecurityItems(activeStudyName);\r\n\r\n const activeUserId = getUserId(activeStudyName);\r\n\r\n dispatch({\r\n type: 'SETACTIVEUSERID',\r\n activeUserId: activeUserId,\r\n });\r\n\r\n dispatch({\r\n type: 'SETACTIVEPROFILE',\r\n activeProfile: activeStudyName,\r\n });\r\n\r\n setCurrentActivePatId(activeUserId);\r\n }\r\n return () => {\r\n setActiveStudyName('');\r\n };\r\n }, [activeStudyName]);\r\n\r\n const getAddConsignationToAsk = async (\r\n sessionId: string,\r\n loginData_addConsignationToAsk: string | undefined,\r\n urlParam_addConsignationToAsk: string | undefined,\r\n ) => {\r\n if (loginData_addConsignationToAsk) {\r\n return loginData_addConsignationToAsk;\r\n } else if (urlParam_addConsignationToAsk) {\r\n const response = await addPlannedStudy(sessionId, urlParam_addConsignationToAsk);\r\n if (response.success && response.success === true) {\r\n if (response.addConsignationsToAsk) {\r\n const responseArray: any[] = [];\r\n responseArray.push(response.addConsignationsToAsk);\r\n return responseArray;\r\n }\r\n } else {\r\n showAlertMessage({\r\n alertTitle: 'Einwilligungserklärung (addPlannedStudy)',\r\n alertTxt: response.error,\r\n alertType: AlertType.error,\r\n onHide: AlertOnHide.onlyClose,\r\n alertdispatch: alertdispatch,\r\n });\r\n }\r\n } else {\r\n return [];\r\n }\r\n\r\n return [];\r\n };\r\n\r\n const loginHandling = async (props: IAuthorizeAsync) => {\r\n setShowLoginButtonLoadingSpinner(true);\r\n\r\n loginButtonRef.current.blur();\r\n\r\n const loginData = await authorizeAsync(props);\r\n\r\n setShowLoginButtonLoadingSpinner(false);\r\n\r\n /* get URL Parameters */\r\n const hashParams: ILoginURLParams = getQueryParams(location.search);\r\n let addPlannedStudyUrlParam = false;\r\n /* external addPlannedStudy request */\r\n if (hashParams.addPlannedStudy) {\r\n addPlannedStudyUrlParam = true;\r\n }\r\n\r\n if (loginData.error) {\r\n let msg = loginData.error;\r\n if (loginData.errorMsg && loginData.errorMsg.length > 0) {\r\n msg = loginData.errorMsg;\r\n }\r\n showAlertMessage({\r\n alertTitle: 'Login',\r\n alertTxt: msg,\r\n alertType: AlertType.error,\r\n onHide: AlertOnHide.onlyClose,\r\n alertdispatch: alertdispatch,\r\n });\r\n } else if (!loginData) {\r\n showAlertMessage({\r\n alertTitle: 'Login',\r\n alertTxt: 'Kann keine Verbindung zum Server herstellen',\r\n alertType: AlertType.error,\r\n onHide: AlertOnHide.onlyClose,\r\n alertdispatch: alertdispatch,\r\n });\r\n } else {\r\n /* execute rule in principa after login */\r\n if (executerulestate && executerulestate.ruleName.length > 0) {\r\n const executeRuleRespone = await executeRule(\r\n loginData.userId,\r\n loginData.sessionId,\r\n executerulestate.ruleName,\r\n executerulestate.ruleParam,\r\n executerulestate.persInfo,\r\n );\r\n if (executeRuleRespone === undefined || !executeRuleRespone.SUCCESS) {\r\n console.log('problems to executeRule');\r\n }\r\n }\r\n if (loginData.consignation === 'doubleOptInMissing' && !loginData.forceNewPWD) {\r\n if (loginData.doubleOptInViaLink && loginData.doubleOptInViaLink === 'true') {\r\n showDoubleOptInViaLinkForm(true);\r\n } else {\r\n showDoubleOptInForm(true);\r\n }\r\n } else if (loginData.warning === 'needsfa2Secret') {\r\n set2FAModalShow(true);\r\n } else {\r\n const activeStudy =\r\n loginData.activeStudies !== undefined\r\n ? loginData.activeStudies.find(\r\n (element: { studyPatId: any }) => element.studyPatId === loginData.activePatId,\r\n )\r\n : undefined;\r\n\r\n const activeUserId = loginData.userId;\r\n\r\n /* load termsHTML + privacyHTML*/\r\n let termsHTML = '';\r\n let privacyHTML = '';\r\n\r\n if (loginData.consignation !== 'patFinished') {\r\n termsHTML = await getTermsHTML(loginData.sessionId);\r\n privacyHTML = await getPrivacyHTML(loginData.sessionId);\r\n }\r\n\r\n /* get possible addConsignation (from authorize or from urlParam addPlannedStudy) */\r\n const addConsignationResponse = await getAddConsignationToAsk(\r\n loginData.sessionId,\r\n loginData.addConsignationsToAsk,\r\n hashParams.addPlannedStudy,\r\n );\r\n\r\n dispatch({\r\n type: 'LOGIN',\r\n userId: loginData.userId,\r\n practitionerRoleId: loginData.practitionerRoleId,\r\n userName: username,\r\n sessionId: loginData.sessionId,\r\n securityItems: {\r\n CHARTS: loginData.SecurityItems[securityItemNames.CHARTS] === 'true' ? true : false,\r\n CHARTS_WEIGHT:\r\n loginData.SecurityItems[securityItemNames.CHARTS_WEIGHT] === 'true' ? true : false,\r\n CHARTS_FATMASS:\r\n loginData.SecurityItems[securityItemNames.CHARTS_FATMASS] === 'true' ? true : false,\r\n CHARTS_BLOODSUGAR:\r\n loginData.SecurityItems[securityItemNames.CHARTS_BLOODSUGAR] === 'true' ? true : false,\r\n CHARTS_FLI: loginData.SecurityItems[securityItemNames.CHARTS_FLI] === 'true' ? true : false,\r\n CHARTS_SAM: loginData.SecurityItems[securityItemNames.CHARTS_SAM] === 'true' ? true : false,\r\n CHARTS_ACTIVITY:\r\n loginData.SecurityItems[securityItemNames.CHARTS_ACTIVITY] === 'true' ? true : false,\r\n TABLE_VAL: loginData.SecurityItems[securityItemNames.TABLE_VAL] === 'true' ? true : false,\r\n PATLIST: loginData.SecurityItems[securityItemNames.PATLIST] === 'true' ? true : false,\r\n DOKUMENT: loginData.SecurityItems[securityItemNames.DOKUMENT] === 'true' ? true : false,\r\n FOTOS: loginData.SecurityItems[securityItemNames.FOTOS] === 'true' ? true : false,\r\n FRAGEBOGEN: loginData.SecurityItems[securityItemNames.FRAGEBOGEN] === 'true' ? true : false,\r\n MEDIKATION: loginData.SecurityItems[securityItemNames.MEDIKATION] === 'true' ? true : false,\r\n TAGESPLAN: loginData.SecurityItems[securityItemNames.TAGESPLAN] === 'true' ? true : false,\r\n TERMINE: loginData.SecurityItems[securityItemNames.TERMINE] === 'true' ? true : false,\r\n VIDEO: loginData.SecurityItems[securityItemNames.VIDEO] === 'true' ? true : false,\r\n JOURNEY: loginData.SecurityItems[securityItemNames.JOURNEY] === 'true' ? true : false,\r\n TODO: loginData.SecurityItems[securityItemNames.TODO]\r\n ? loginData.SecurityItems[securityItemNames.TODO]\r\n : [],\r\n TAB_ORDER: loginData.SecurityItems[securityItemNames.TAB_ORDER]\r\n ? loginData.SecurityItems[securityItemNames.TAB_ORDER]\r\n : '',\r\n },\r\n iceServers: loginData.iceServers,\r\n possibleMacros: loginData.PossibleMacros,\r\n departments: loginData.departments ? loginData.departments : [],\r\n activeStudies: loginData.activeStudies,\r\n activeProfile:\r\n activeStudy === undefined || activeStudy === '' ? PROFILE_HOME : activeStudy.studyName,\r\n activeUserId: activeUserId,\r\n termsHTML: termsHTML,\r\n privacyHTML: privacyHTML,\r\n extraLinks: loginData.extraLinks,\r\n possibleStudies: loginData.possibleStudies ? loginData.possibleStudies : [],\r\n // addConsignationsToAsk: loginData.addConsignationsToAsk ? loginData.addConsignationsToAsk : [],\r\n // addConsignationsToAsk: getAddConsignationToAsk(\r\n // loginData.sessionId,\r\n // loginData.addConsignationsToAsk,\r\n // hashParams.addPlannedStudy,\r\n // ),\r\n addConsignationsToAsk: addConsignationResponse,\r\n encounterId: loginData.encounterId,\r\n encounterTitle: loginData.encounterTitle,\r\n lastPatOpened: loginData.lastPatOpened ? loginData.lastPatOpened : [],\r\n anmeldeContexts: loginData.anmeldeContexts ? loginData.anmeldeContexts : [],\r\n });\r\n\r\n /* set SecurityItems for a study */\r\n if (activeStudy !== undefined && activeStudy !== '') {\r\n setActiveStudyName(activeStudy.studyName);\r\n }\r\n\r\n if (true || loginData.consignation === 'patFinished') {\r\n getAndSetPersonalData(loginData.sessionId, activeUserId, loginData.practitionerRoleId);\r\n\r\n const photoRes = await getPatientProfilePictureWL(loginData.sessionId, activeUserId);\r\n\r\n if (photoRes.data.entry) {\r\n tmdispatch({\r\n type: 'SETPERSONALDATA_PROFILEPHOTO',\r\n personalData: {\r\n profilePhoto: photoRes.data.entry[0].resource.photo\r\n ? photoRes.data.entry[0].resource.photo[0].data\r\n : '',\r\n },\r\n });\r\n }\r\n }\r\n\r\n tmdispatch({\r\n type: 'SETWITHLOGIN',\r\n withLogin: true,\r\n });\r\n\r\n setConsignation(loginData.consignation);\r\n loginData.consignation === 'not given' ? setNotGiven(true) : setNotGiven(false);\r\n\r\n if (loginData.forceNewPWD) {\r\n if (loginData.consignation === 'doubleOptInMissing') {\r\n /* wenn beides kommt, muss zuerst forceNewPWD ziehen,\r\n showDoubleOptInForm(true); wird dann in handlePWChange() gemacht*/\r\n setDoubleOptInMissingAfterPWDChange(true);\r\n }\r\n setInitPassword(true);\r\n } else if (loginData.consignation !== 'patFinished' && loginData.consignation !== 'given') {\r\n showConsignationForm(true);\r\n } else if (loginData.consignation === 'given') {\r\n showConsignationWaitForm(true);\r\n } else if (loginData.consignation === 'waitForLetter') {\r\n showConsignationWaitForLetterForm(true);\r\n } else if (\r\n (loginData.addConsignationsToAsk && loginData.addConsignationsToAsk.length > 0) ||\r\n addPlannedStudyUrlParam\r\n ) {\r\n showConsignationAddForm(true);\r\n } else if (loginData.practitionerRoleId) {\r\n navigate(Paths.PATLIST);\r\n } else {\r\n navigate(Paths.DOKUMENTE);\r\n }\r\n }\r\n }\r\n };\r\n\r\n const handleSubmit = async (event: React.FormEvent, username: string, password: string) => {\r\n event.preventDefault();\r\n\r\n const authorizeData: IAuthorizeAsync = {\r\n username: username,\r\n password: password,\r\n };\r\n loginHandling(authorizeData);\r\n };\r\n\r\n const handlePWChange = (newPwd: string) => {\r\n setInitPassword(false);\r\n setPassword(newPwd);\r\n if (consig !== 'patFinished') {\r\n if (doubleOptInMissingAfterPWDChange) {\r\n showDoubleOptInForm(true);\r\n setDoubleOptInMissingAfterPWDChange(false);\r\n } else {\r\n showConsignationForm(true);\r\n }\r\n } else {\r\n navigate(Paths.DOKUMENTE);\r\n }\r\n };\r\n\r\n const handleConsigDenial = () => {\r\n setNotGiven(true);\r\n showConsignationForm(false);\r\n };\r\n\r\n const handleConsigAddDenial = () => {\r\n showConsignationAddForm(false);\r\n navigate(Paths.DOKUMENTE);\r\n };\r\n\r\n const handleHideConsignationWaitModal = () => {\r\n showConsignationWaitForm(false);\r\n navigate(Paths.DOKUMENTE);\r\n };\r\n\r\n const handleHideConsignationWaitForLetterModal = () => {\r\n showConsignationWaitForLetterForm(false);\r\n handleLogout();\r\n };\r\n\r\n const handleHideDoDoubleOptInModal = () => {\r\n showDoubleOptInForm(false);\r\n handleLogout();\r\n };\r\n\r\n const handleHideDoDoubleOptInViaLinkModal = () => {\r\n showDoubleOptInViaLinkForm(false);\r\n // handleLogout();\r\n };\r\n\r\n const handleSubmitDoubleOptInModal = (code: string) => {\r\n showDoubleOptInForm(false);\r\n\r\n const authorizeData: IAuthorizeAsync = {\r\n username: username,\r\n password: password,\r\n doubleOptInCode: code,\r\n };\r\n loginHandling(authorizeData);\r\n };\r\n\r\n const LoginButton = () => {\r\n if (showLoginButtonLoadingSpinner) {\r\n let calcButtonWidth = '35px';\r\n const lottieSize = 24;\r\n calcButtonWidth = calcButtonPaddingSize(loginButtonRef, lottieSize);\r\n\r\n return (\r\n \r\n \r\n \r\n );\r\n } else {\r\n return (\r\n \r\n Anmelden\r\n \r\n );\r\n }\r\n };\r\n\r\n const handleCreateNewAccountButtonClick = () => {\r\n resetPersonalData();\r\n navigate(Paths.NEUER_ACCOUNT);\r\n };\r\n\r\n return (\r\n
    \r\n \r\n \r\n \r\n \r\n Ihre persönliche HOME-Akte \r\n ) =>\r\n handleSubmit(event, username, password)\r\n }\r\n >\r\n \r\n \r\n \r\n Benutzername\r\n setUsername(e.target.value)}\r\n />\r\n \r\n \r\n \r\n \r\n \r\n \r\n Passwort\r\n setPassword(e.target.value)}\r\n />\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
    \r\n navigate(Paths.RESET_PASSWORD)}\r\n >\r\n Zugangsdaten vergessen?\r\n \r\n
    \r\n
    \r\n \r\n
    \r\n {apstate.allowAccountCreateDirect ? (\r\n \r\n
    \r\n handleCreateNewAccountButtonClick()}\r\n >\r\n Neuen Account erstellen\r\n \r\n
    \r\n
    \r\n ) : null}\r\n
    \r\n \r\n
    \r\n {initPassword ? (\r\n
    \r\n handlePWChange(e)} oncancel={() => setInitPassword(false)} />\r\n
    \r\n ) : (\r\n <>\r\n )}\r\n {consignationForm ? (\r\n
    \r\n handleConsigDenial()}\r\n oncancel={() => showConsignationForm(false)}\r\n notgiven={notGiven}\r\n />\r\n
    \r\n ) : (\r\n <>\r\n )}\r\n {consignationAddForm ? (\r\n
    \r\n handleConsigAddDenial()}\r\n oncancel={() => showConsignationAddForm(false)}\r\n />\r\n
    \r\n ) : (\r\n <>\r\n )}\r\n {consignationWaitForm ? (\r\n
    \r\n handleHideConsignationWaitModal()}\r\n />\r\n
    \r\n ) : (\r\n <>\r\n )}\r\n {consignationWaitForLetterForm ? (\r\n
    \r\n handleHideConsignationWaitForLetterModal()}\r\n />\r\n
    \r\n ) : (\r\n <>\r\n )}\r\n {doubleOptInForm ? (\r\n
    \r\n handleHideDoDoubleOptInModal()}\r\n onSubmit={(e) => handleSubmitDoubleOptInModal(e)}\r\n username={username}\r\n password={password}\r\n />\r\n
    \r\n ) : (\r\n <>\r\n )}\r\n {doubleOptInViaLinkForm ? (\r\n
    \r\n handleHideDoDoubleOptInViaLinkModal()}\r\n />\r\n
    \r\n ) : (\r\n <>\r\n )}\r\n set2FAModalShow(false)}\r\n username={username}\r\n password={password}\r\n />\r\n
    \r\n );\r\n};\r\n\r\nexport default Login;\r\n","import { useContext, useEffect, useState } from 'react';\r\nimport { IDisplayAppointments } from '../../container/Termine/Termine';\r\nimport AlertContext from '../../context/alertContext';\r\nimport LoginContext from '../../context/loginContext';\r\nimport useScreenResolution from '../../hooks/useScreenResolution';\r\nimport { getAppointmentsOfPatient, structureAppointments } from '../../services/fhir/FHIRAppointment';\r\nimport { IAppointment, getStickyPosition } from '../../utils/appointmentUtils';\r\nimport AppointmentCard from '../Cards/AppointmentCard';\r\nimport { StickyTitle } from './StyledHeader';\r\n\r\nenum Scheduled {\r\n Past = 0,\r\n Cancelled,\r\n}\r\n\r\nexport const PastAppointments = (props: IDisplayAppointments) => {\r\n const { state } = useContext(LoginContext);\r\n const { alertdispatch } = useContext(AlertContext);\r\n\r\n const screenSize = useScreenResolution();\r\n const stickyPosition = getStickyPosition(screenSize.width);\r\n\r\n const [structuredAppointments, setStructuredAppointments] = useState();\r\n\r\n const getAppointments = async () => {\r\n const response = await getAppointmentsOfPatient(state, alertdispatch);\r\n if (response) {\r\n let apt: IAppointment[] = response.data.entry;\r\n\r\n if (apt === undefined) {\r\n apt = [];\r\n }\r\n\r\n if (apt) {\r\n apt.sort((a, b) => (a.resource.start < b.resource.start ? 1 : -1));\r\n setStructuredAppointments(structureAppointments(apt));\r\n }\r\n }\r\n };\r\n\r\n function PastAppointmentsTitle(category: Scheduled) {\r\n if (structuredAppointments !== undefined) {\r\n return (\r\n \r\n {stickyPosition === '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 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 { appointmentStatus } from '../globals/global';\r\n\r\nexport const getGenderEN = (gender: string) => {\r\n switch (gender) {\r\n case 'Männlich':\r\n return 'male';\r\n case 'Weiblich':\r\n return 'female';\r\n case 'Divers':\r\n return 'divers';\r\n case 'Unbekannt':\r\n return 'unknown';\r\n case '':\r\n return 'unknown';\r\n default:\r\n return gender;\r\n }\r\n};\r\n\r\nexport const getGenderDE = (gender: string) => {\r\n switch (gender) {\r\n case 'male':\r\n return 'Männlich';\r\n case 'female':\r\n return 'Weiblich';\r\n case 'divers':\r\n return 'Divers';\r\n case 'unknown':\r\n return 'Unbekannt';\r\n case '':\r\n return '';\r\n default:\r\n return gender;\r\n }\r\n};\r\n\r\nexport const getCountryEN = (country: string) => {\r\n switch (country) {\r\n case 'Deutschland':\r\n return 'Germany';\r\n case 'Österreich':\r\n return 'Austria';\r\n case 'Schweiz':\r\n return 'Switzerland';\r\n default:\r\n return '';\r\n }\r\n};\r\n\r\nexport const getCountryDE = (country: string) => {\r\n switch (country) {\r\n case 'Germany':\r\n return 'Deutschland';\r\n case 'Austria':\r\n return 'Österreich';\r\n case 'Switzerland':\r\n return 'Schweiz';\r\n default:\r\n return '';\r\n }\r\n};\r\n\r\nexport const getCountryLongName = (countryShortName: string) => {\r\n switch (countryShortName) {\r\n case 'D':\r\n return 'Deutschland';\r\n case 'DE':\r\n return 'Deutschland';\r\n case 'A':\r\n return 'Österreich';\r\n case 'AT':\r\n return 'Österreich';\r\n case 'CH':\r\n return 'Schweiz';\r\n default:\r\n return '';\r\n }\r\n};\r\n\r\nexport const translateStatus = (status: string) => {\r\n switch (status) {\r\n case 'cancelled':\r\n return 'abgesagt';\r\n case 'pending':\r\n return 'geplant o. Uhrzeit';\r\n case 'booked':\r\n return 'geplant';\r\n case 'arrived':\r\n return 'aktuell';\r\n case 'fulfilled':\r\n return 'abgeschlossen';\r\n case appointmentStatus.enteredInError:\r\n return 'unvollständig';\r\n default:\r\n break;\r\n }\r\n};\r\n\r\n/**\r\n * format date from yyyy-MM-dd or yyyy.MM.dd to dd.MM.yyyy\r\n *\r\n * @param date\r\n * the date as string\r\n * @returns\r\n * the date with new format\r\n */\r\nexport const getGermanDateFormatFromString = (date: string) => {\r\n const day = date.slice(8);\r\n const month = date.slice(5, -3);\r\n const year = date.slice(0, -6);\r\n return day + '.' + month + '.' + year;\r\n};\r\n\r\nexport const pattern =\r\n /^(([^<>()\\[\\]\\\\.,;:\\s@\"]+(\\.[^<>()\\[\\]\\\\.,;:\\s@\"]+)*)|(\".+\"))@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\])|(([a-zA-Z\\-0-9]+\\.)+[a-zA-Z0-9]{2,}))$/;\r\n\r\nexport const isEmailValid = (email: string) => {\r\n return pattern.test(String(email).toLowerCase());\r\n};\r\n\r\nexport const getBasicAuthBase64Encoded = (basicauth: string) => {\r\n const base64encodedStr = btoa(basicauth);\r\n const basicAuthBase64 = 'Basic ' + base64encodedStr;\r\n return basicAuthBase64;\r\n};\r\n\r\nexport const getDataFromAppProperties = (propRes: any) => {\r\n const appProps = {\r\n Appointment: {\r\n skipBehandlersuche:\r\n propRes.Appointment?.skipBehandlersuche !== undefined ? propRes.Appointment?.skipBehandlersuche : false,\r\n },\r\n AppointmentSummary: {\r\n behandler:\r\n propRes.AppointmentSummary?.behandler !== undefined ? propRes.AppointmentSummary?.behandler : true,\r\n fach: propRes.AppointmentSummary?.fach !== undefined ? propRes.AppointmentSummary?.fach : true,\r\n pflege: propRes.AppointmentSummary?.pflege !== undefined ? propRes.AppointmentSummary?.pflege : true,\r\n raum: propRes.AppointmentSummary?.raum !== undefined ? propRes.AppointmentSummary?.raum : true,\r\n standort: propRes.AppointmentSummary?.standort !== undefined ? propRes.AppointmentSummary?.standort : true,\r\n },\r\n RegistrationMandFields: {\r\n birthDate:\r\n propRes.RegistrationMandFields?.birthDate !== undefined\r\n ? propRes.RegistrationMandFields.birthDate\r\n : null,\r\n city: propRes.RegistrationMandFields?.city !== undefined ? propRes.RegistrationMandFields.city : null,\r\n country:\r\n propRes.RegistrationMandFields?.country !== undefined ? propRes.RegistrationMandFields.country : null,\r\n email: propRes.RegistrationMandFields?.email !== undefined ? propRes.RegistrationMandFields.email : null,\r\n firstName:\r\n propRes.RegistrationMandFields?.firstName !== undefined\r\n ? propRes.RegistrationMandFields.firstName\r\n : null,\r\n gender: propRes.RegistrationMandFields?.gender !== undefined ? propRes.RegistrationMandFields.gender : null,\r\n lastName:\r\n propRes.RegistrationMandFields?.lastName !== undefined ? propRes.RegistrationMandFields.lastName : null,\r\n phone: propRes.RegistrationMandFields?.phone !== undefined ? propRes.RegistrationMandFields.phone : null,\r\n street: propRes.RegistrationMandFields?.street !== undefined ? propRes.RegistrationMandFields.street : null,\r\n zip: propRes.RegistrationMandFields?.zip !== undefined ? propRes.RegistrationMandFields.zip : null,\r\n insuranceNr:\r\n propRes.RegistrationMandFields?.insuranceNr !== undefined\r\n ? propRes.RegistrationMandFields.insuranceNr\r\n : null,\r\n mobilePhone:\r\n propRes.RegistrationMandFields?.mobilePhone !== undefined\r\n ? propRes.RegistrationMandFields.mobilePhone\r\n : null,\r\n academicTitle:\r\n propRes.RegistrationMandFields?.academicTitle !== undefined\r\n ? propRes.RegistrationMandFields.academicTitle\r\n : null,\r\n insuranceName:\r\n propRes.RegistrationMandFields?.insuranceName !== undefined\r\n ? propRes.RegistrationMandFields.insuranceName\r\n : null,\r\n language:\r\n propRes.RegistrationMandFields?.language !== undefined ? propRes.RegistrationMandFields.language : null,\r\n privacyTerms:\r\n propRes.RegistrationMandFields?.privacyTerms !== undefined\r\n ? propRes.RegistrationMandFields.privacyTerms\r\n : null,\r\n },\r\n RegistrationVisibleFields: {\r\n birthDate:\r\n propRes.RegistrationVisibleFields?.birthDate !== undefined\r\n ? propRes.RegistrationVisibleFields.birthDate\r\n : null,\r\n city: propRes.RegistrationVisibleFields?.city !== undefined ? propRes.RegistrationVisibleFields.city : null,\r\n country:\r\n propRes.RegistrationVisibleFields?.country !== undefined\r\n ? propRes.RegistrationVisibleFields.country\r\n : null,\r\n email:\r\n propRes.RegistrationVisibleFields?.email !== undefined ? propRes.RegistrationVisibleFields.email : null,\r\n firstName:\r\n propRes.RegistrationVisibleFields?.firstName !== undefined\r\n ? propRes.RegistrationVisibleFields.firstName\r\n : null,\r\n gender:\r\n propRes.RegistrationVisibleFields?.gender !== undefined\r\n ? propRes.RegistrationVisibleFields.gender\r\n : null,\r\n lastName:\r\n propRes.RegistrationVisibleFields?.lastName !== undefined\r\n ? propRes.RegistrationVisibleFields.lastName\r\n : null,\r\n phone:\r\n propRes.RegistrationVisibleFields?.phone !== undefined ? propRes.RegistrationVisibleFields.phone : null,\r\n street:\r\n propRes.RegistrationVisibleFields?.street !== undefined\r\n ? propRes.RegistrationVisibleFields.street\r\n : null,\r\n zip: propRes.RegistrationVisibleFields?.zip !== undefined ? propRes.RegistrationVisibleFields.zip : null,\r\n insuranceNr:\r\n propRes.RegistrationVisibleFields?.insuranceNr !== undefined\r\n ? propRes.RegistrationVisibleFields.insuranceNr\r\n : null,\r\n mobilePhone:\r\n propRes.RegistrationVisibleFields?.mobilePhone !== undefined\r\n ? propRes.RegistrationVisibleFields.mobilePhone\r\n : null,\r\n academicTitle:\r\n propRes.RegistrationVisibleFields?.academicTitle !== undefined\r\n ? propRes.RegistrationVisibleFields.academicTitle\r\n : null,\r\n insuranceName:\r\n propRes.RegistrationVisibleFields?.insuranceName !== undefined\r\n ? propRes.RegistrationVisibleFields.insuranceName\r\n : null,\r\n language:\r\n propRes.RegistrationVisibleFields?.language !== undefined\r\n ? propRes.RegistrationVisibleFields.language\r\n : null,\r\n privacyTerms:\r\n propRes.RegistrationVisibleFields?.privacyTerms !== undefined\r\n ? propRes.RegistrationVisibleFields.privacyTerms\r\n : null,\r\n },\r\n RegistrationReadOnlyFields: {\r\n birthDate:\r\n propRes.RegistrationReadOnlyFields?.birthDate !== undefined\r\n ? propRes.RegistrationReadOnlyFields.birthDate\r\n : null,\r\n city:\r\n propRes.RegistrationReadOnlyFields?.city !== undefined ? propRes.RegistrationReadOnlyFields.city : null,\r\n country:\r\n propRes.RegistrationReadOnlyFields?.country !== undefined\r\n ? propRes.RegistrationReadOnlyFields.country\r\n : null,\r\n email:\r\n propRes.RegistrationReadOnlyFields?.email !== undefined\r\n ? propRes.RegistrationReadOnlyFields.email\r\n : null,\r\n firstName:\r\n propRes.RegistrationReadOnlyFields?.firstName !== undefined\r\n ? propRes.RegistrationReadOnlyFields.firstName\r\n : null,\r\n gender:\r\n propRes.RegistrationReadOnlyFields?.gender !== undefined\r\n ? propRes.RegistrationReadOnlyFields.gender\r\n : null,\r\n lastName:\r\n propRes.RegistrationReadOnlyFields?.lastName !== undefined\r\n ? propRes.RegistrationReadOnlyFields.lastName\r\n : null,\r\n phone:\r\n propRes.RegistrationReadOnlyFields?.phone !== undefined\r\n ? propRes.RegistrationReadOnlyFields.phone\r\n : null,\r\n street:\r\n propRes.RegistrationReadOnlyFields?.street !== undefined\r\n ? propRes.RegistrationReadOnlyFields.street\r\n : null,\r\n zip: propRes.RegistrationReadOnlyFields?.zip !== undefined ? propRes.RegistrationReadOnlyFields.zip : null,\r\n insuranceNr:\r\n propRes.RegistrationReadOnlyFields?.insuranceNr !== undefined\r\n ? propRes.RegistrationReadOnlyFields.insuranceNr\r\n : null,\r\n mobilePhone:\r\n propRes.RegistrationReadOnlyFields?.mobilePhone !== undefined\r\n ? propRes.RegistrationReadOnlyFields.mobilePhone\r\n : null,\r\n academicTitle:\r\n propRes.RegistrationReadOnlyFields?.academicTitle !== undefined\r\n ? propRes.RegistrationReadOnlyFields.academicTitle\r\n : null,\r\n insuranceName:\r\n propRes.RegistrationReadOnlyFields?.insuranceName !== undefined\r\n ? propRes.RegistrationReadOnlyFields.insuranceName\r\n : null,\r\n language:\r\n propRes.RegistrationReadOnlyFields?.language !== undefined\r\n ? propRes.RegistrationReadOnlyFields.language\r\n : null,\r\n },\r\n allowAccountAfterAppointment: propRes.allowAccountAfterAppointment,\r\n allowAccountCreateDirect: propRes.allowAccountCreateDirect,\r\n allowAppointments: propRes.allowAppointments,\r\n allowAppointmentsWithoutLogin: propRes.allowAppointmentsWithoutLogin,\r\n allowDirectAppointments: propRes.allowDirectAppointments,\r\n allowDirectAppointmentsWithoutLogin: propRes.allowDirectAppointmentsWithoutLogin,\r\n allowLogin: propRes.allowLogin,\r\n allowVideo: propRes.allowVideo,\r\n allowVideoWithoutLogin: propRes.allowVideoWithoutLogin,\r\n allowAccountInAnmeldeworkflow: propRes.allowAccountInAnmeldeworkflow,\r\n brandingBytes: propRes.brandingBytes,\r\n brandigType: propRes.brandigType,\r\n extraLinks: propRes.extraLinks,\r\n customTexts: propRes.customTexts,\r\n showMobileQR: propRes.showMobileQR,\r\n jitsiDomain: propRes.jitsiDomain,\r\n jitsiOptions: propRes.jitsiOptions,\r\n impressum: propRes.impressum,\r\n anmeldeContexts: propRes.anmeldeContexts,\r\n countDaysToVisualize: propRes.countDaysToVisualize,\r\n extendedPhysicians: propRes.extendedPhysicians,\r\n allowChat: propRes.allowChat,\r\n googleAnalyticsID: propRes.googleAnalyticsID,\r\n tileTexts: propRes.tileTexts,\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 Step from '@material-ui/core/Step';\r\nimport StepLabel from '@material-ui/core/StepLabel';\r\nimport Stepper from '@material-ui/core/Stepper';\r\nimport { createStyles, makeStyles, Theme } from '@material-ui/core/styles';\r\nimport produce from 'immer';\r\nimport * as React from 'react';\r\nimport { useContext, useEffect, useState } from 'react';\r\nimport Container from 'react-bootstrap/Container';\r\nimport Col from 'react-bootstrap/esm/Col';\r\nimport Row from 'react-bootstrap/Row';\r\nimport Lottie from 'react-lottie';\r\nimport { useLocation, useNavigate } from 'react-router-dom';\r\nimport { isTimeslotDateSet } from '../../components/Calendar/TimeSlots';\r\nimport AppointmentCategoryExtendedPhysician from '../../container/AppointmentCategory/AppointmentCategoryExtendedPhysican';\r\nimport { ITermineContent } from '../../container/Termine/Termine';\r\nimport AppPropsContext from '../../context/appPropsContext';\r\nimport LoginContext from '../../context/loginContext';\r\nimport TerminierungContext from '../../context/terminierungContext';\r\nimport { appointmentStatus } from '../../globals/global';\r\nimport { useAppointmentSelection } from '../../hooks/useAppointmentSelection';\r\nimport { Paths } from '../../Routes';\r\nimport { bookAppointment, bookMultiAppointment } from '../../services/fhir/FHIRAppointment';\r\nimport { blockAppointment, unblockAppointment } from '../../services/RestServices';\r\nimport {\r\n APPOINTMENTTYPE_CAREUNIT,\r\n APPOINTMENTTYPE_DEPARTMENT,\r\n APPOINTMENTTYPE_PRACTITIONER,\r\n APPOINTMENTTYPE_ROOM,\r\n getAPKNrFromExtension,\r\n getCountAPKsFromExtension,\r\n getEnrollCodeFromExtension,\r\n getLocationCareUnitNameFromResource,\r\n getLocationDepartmentNameFromResource,\r\n getLocationRoomNameFromResource,\r\n getMissingAPKsFromExtension,\r\n getPractitionerNameFromResource,\r\n getSelectedReasonDataFromAppointment,\r\n IAppointment,\r\n IParticipant,\r\n} from '../../utils/appointmentUtils';\r\nimport { lottieCheck } from '../../utils/lottieUtils';\r\nimport { getCurrentBaseURL, getTermincodeEnrollIdURL } from '../../utils/urlUtils';\r\nimport AppointmentCalendarWithHeadline from '../AppointmentCalendar/AppointmentCalendarWithHeadline';\r\nimport Booking from '../Booking/Booking';\r\nimport StyledButton from '../Buttons/StyledButton';\r\nimport { onNewAppointments } from '../Calendar/Calendar';\r\nimport AppointmentCard from '../Cards/AppointmentCard';\r\nimport StyledCol from '../Cols/StyledCol';\r\nimport { CenterDiv, StepperContentDiv, StickyButtonRowBottomDiv } from '../Div/StyledDiv';\r\nimport BlockingAppointmentModal from '../Modals/BlockingAppointmentModal/BlockingAppointmentModal';\r\nimport { StyledRowNoMargin } from '../Rows/StyledRow';\r\nimport './Stepper.css';\r\n\r\ninterface IBlockingModalShow {\r\n show: boolean;\r\n}\r\n\r\nconst useStyles = makeStyles((theme: Theme) =>\r\n createStyles({\r\n instructions: {\r\n marginTop: theme.spacing(1),\r\n marginBottom: theme.spacing(1),\r\n },\r\n iconContainer: {\r\n transform: 'scale(1.5)',\r\n },\r\n }),\r\n);\r\n\r\nconst STEP_KATEGORIE_WAEHLEN = 'Kategorie wählen';\r\nconst STEP_TERMIN_WAEHLEN = 'Termin wählen';\r\nconst STEP_TERMIN_BUCHEN = 'Termin buchen';\r\n\r\nfunction isStepMultiAppointment(stepName: string) {\r\n const match = stepName.match(/Termin [0-9]$/);\r\n return match;\r\n}\r\n\r\nfunction getCurrentAppointmentNr(stepName: string) {\r\n if (isStepMultiAppointment(stepName)) {\r\n const numberStr = stepName.charAt(stepName.length - 1);\r\n return parseInt(numberStr);\r\n } else {\r\n return 1;\r\n }\r\n}\r\n\r\nfunction StepperTerminierungAlternateDate(props: ITermineContent) {\r\n const navigate = useNavigate();\r\n const { state } = useContext(LoginContext);\r\n\r\n const { tmstate, tmdispatch } = useContext(TerminierungContext);\r\n const { apstate } = useContext(AppPropsContext);\r\n const classes = useStyles();\r\n const [activeStep, setActiveStep] = React.useState(0);\r\n const [steps, setSteps] = useState([STEP_KATEGORIE_WAEHLEN, STEP_TERMIN_WAEHLEN, STEP_TERMIN_BUCHEN]);\r\n const [nextButtonEnabled, setNextButtonEnabled] = useState(false);\r\n const [bookSuccess, setBookSuccess] = useState(false);\r\n const [enrollCode, setEnrollCode] = useState('');\r\n const [appointmentCardData, setAppointmentCardData] = useState();\r\n const [appointmentCardData_2, setAppointmentCardData_2] = useState();\r\n const [blockingModalShow, setBlockingModalShow] = useState({\r\n show: false,\r\n });\r\n const [appointmentBooked_1, setAppointmentBooked_1] = useState(false);\r\n const [appointmentBooked_2, setAppointmentBooked_2] = useState(false);\r\n\r\n const {\r\n setSelectedResource,\r\n setSelectedTimeslot,\r\n getSelectedResource,\r\n getSelectedTimeslot,\r\n resetAllSelectedTimeslots,\r\n resetAllAvailableTimeslots,\r\n resetAllSelectedResource,\r\n isAppointmentPostpone,\r\n cancelPostponeAppointment,\r\n } = useAppointmentSelection();\r\n\r\n const location = useLocation();\r\n\r\n function getStepContent(steps: string[], stepIndex: number) {\r\n const stepName = steps[stepIndex];\r\n\r\n if (stepName === STEP_KATEGORIE_WAEHLEN) {\r\n return <>;\r\n } else if (isStepMultiAppointment(stepName)) {\r\n return (\r\n \r\n );\r\n } else if (stepName === STEP_TERMIN_BUCHEN) {\r\n return ;\r\n } else if (stepName === STEP_TERMIN_WAEHLEN) {\r\n if (apstate.extendedPhysicians) {\r\n return (\r\n \r\n );\r\n }\r\n return (\r\n \r\n );\r\n } else {\r\n return 'Unknown step';\r\n }\r\n }\r\n\r\n const handleTimeslotClick = (currentActiveStep: number) => {\r\n if (apstate.extendedPhysicians) {\r\n setActiveStep((prevActiveStep) => prevActiveStep + 1);\r\n } else {\r\n setNextButtonEnabled(true);\r\n }\r\n };\r\n\r\n const handleNext = async (e: React.MouseEvent) => {\r\n if (e) {\r\n e.currentTarget.blur();\r\n }\r\n\r\n let gotNewAppointment = false;\r\n\r\n if (activeStep === steps.length - 2) {\r\n setNextButtonEnabled(true); //final step should always be enabled\r\n } else {\r\n setNextButtonEnabled(false);\r\n }\r\n\r\n if (isStepMultiAppointment(steps[activeStep])) {\r\n const appointmentNr = getCurrentAppointmentNr(steps[activeStep]);\r\n\r\n /* blockAppointment */\r\n const resource = getSelectedResource(appointmentNr);\r\n\r\n if (resource) {\r\n const blockResponse = await blockAppointment(resource);\r\n if (blockResponse.success === 'false') {\r\n onNewAppointments(blockResponse.newApp, appointmentNr, setSelectedTimeslot);\r\n gotNewAppointment = true;\r\n setBlockingModalShow({\r\n show: true,\r\n });\r\n } else {\r\n /* nextAppointment */\r\n tmdispatch({\r\n type: 'WORKONAPPOINTMENTNR',\r\n workOnAppointmentNr: appointmentNr + 1,\r\n });\r\n }\r\n }\r\n }\r\n\r\n if (steps[activeStep] === STEP_TERMIN_BUCHEN) {\r\n let multiAppointment = false;\r\n const selectedTimeslot = getSelectedTimeslot(1);\r\n let selectedResource: any = getSelectedResource(1);\r\n\r\n const selectedTimeslot_2 = getSelectedTimeslot(2);\r\n let selectedResource_2: any = getSelectedResource(2);\r\n\r\n if (isTimeslotDateSet(selectedTimeslot)) {\r\n selectedResource = produce(selectedResource, (draft: any) => {\r\n draft.start = selectedTimeslot?.start;\r\n draft.end = selectedTimeslot?.end;\r\n draft.extension = [];\r\n if (tmstate.selectedReason) {\r\n draft.extension.push({\r\n url: 'http://www.principa.siegele-software.com/selectedReason',\r\n valueString: JSON.stringify(tmstate.selectedReason),\r\n });\r\n }\r\n if (!isTimeslotDateSet(selectedTimeslot_2) && tmstate.cancelNewAppointmentData?.data?.id) {\r\n draft.extension.push({\r\n url: 'http://www.principa.siegele-software.com/originalAppointmentId',\r\n valueString: tmstate.cancelNewAppointmentData?.data?.id,\r\n });\r\n }\r\n });\r\n }\r\n let id = null;\r\n if (isTimeslotDateSet(selectedTimeslot_2)) {\r\n selectedResource_2 = produce(selectedResource_2, (draft: any) => {\r\n draft.start = selectedTimeslot_2?.start;\r\n draft.end = selectedTimeslot_2?.end;\r\n });\r\n multiAppointment = true;\r\n } else {\r\n id = tmstate.cancelNewAppointmentData?.data?.id;\r\n }\r\n\r\n let response;\r\n if (multiAppointment) {\r\n response = await bookMultiAppointment(\r\n state,\r\n selectedResource,\r\n selectedResource_2,\r\n tmstate.remark,\r\n tmstate.cancelNewAppointmentData,\r\n );\r\n } else {\r\n response = await bookAppointment(\r\n state.sessionId,\r\n selectedResource,\r\n tmstate.remark,\r\n tmstate.earlierAppointmentWanted,\r\n id,\r\n );\r\n }\r\n\r\n if (!response || response.error === 'Server Error') {\r\n // console.log('problem to book appointment');\r\n setBookSuccess(false);\r\n } else {\r\n setBookSuccess(true);\r\n setEnrollCode(response.enrollCode);\r\n // setEnrollCode('ABC123');\r\n\r\n const participantData: IParticipant[] = [\r\n {\r\n actor: {\r\n display: getLocationDepartmentNameFromResource(selectedResource),\r\n reference: APPOINTMENTTYPE_DEPARTMENT + '/',\r\n },\r\n status: 'accepted',\r\n },\r\n {\r\n actor: {\r\n display: getLocationCareUnitNameFromResource(selectedResource),\r\n reference: APPOINTMENTTYPE_CAREUNIT + '/',\r\n },\r\n status: 'accepted',\r\n },\r\n {\r\n actor: {\r\n display: getLocationRoomNameFromResource(selectedResource),\r\n reference: APPOINTMENTTYPE_ROOM + '/',\r\n },\r\n status: 'accepted',\r\n },\r\n {\r\n actor: {\r\n display: getPractitionerNameFromResource(selectedResource),\r\n reference: APPOINTMENTTYPE_PRACTITIONER + '/',\r\n },\r\n status: 'accepted',\r\n },\r\n ];\r\n\r\n const appointmentCardData: IAppointment = {\r\n id: '',\r\n start: selectedTimeslot?.start,\r\n end: selectedTimeslot?.end,\r\n status: 'geplant',\r\n resource: 'Appointment',\r\n participant: participantData,\r\n comment: '',\r\n type: 'upcoming',\r\n isCancelable: false,\r\n isInError: false,\r\n };\r\n\r\n setAppointmentCardData(appointmentCardData);\r\n\r\n let participantData_2;\r\n let appointmentCardData_2;\r\n if (selectedResource_2) {\r\n participantData_2 = [\r\n {\r\n actor: {\r\n display: getLocationDepartmentNameFromResource(selectedResource_2),\r\n reference: APPOINTMENTTYPE_DEPARTMENT + '/',\r\n },\r\n status: 'accepted',\r\n },\r\n {\r\n actor: {\r\n display: getLocationCareUnitNameFromResource(selectedResource_2),\r\n reference: APPOINTMENTTYPE_CAREUNIT + '/',\r\n },\r\n status: 'accepted',\r\n },\r\n {\r\n actor: {\r\n display: getLocationRoomNameFromResource(selectedResource_2),\r\n reference: APPOINTMENTTYPE_ROOM + '/',\r\n },\r\n status: 'accepted',\r\n },\r\n {\r\n actor: {\r\n display: getPractitionerNameFromResource(selectedResource_2),\r\n reference: APPOINTMENTTYPE_PRACTITIONER + '/',\r\n },\r\n status: 'accepted',\r\n },\r\n ];\r\n\r\n appointmentCardData_2 = {\r\n id: '',\r\n start: selectedTimeslot_2?.start,\r\n end: selectedTimeslot_2?.end,\r\n status: 'geplant',\r\n resource: 'Appointment',\r\n participant: participantData_2,\r\n comment: '',\r\n type: 'upcoming',\r\n isCancelable: false,\r\n };\r\n\r\n setAppointmentCardData_2(appointmentCardData_2);\r\n }\r\n\r\n if (isAppointmentPostpone()) {\r\n // cancelPostponeAppointment();\r\n }\r\n }\r\n setNextButtonEnabled(true);\r\n }\r\n\r\n if (gotNewAppointment) {\r\n /* We got new appointments due blocking. Only enable next button, but don't go to next step. */\r\n setNextButtonEnabled(true);\r\n } else {\r\n if (appointmentBooked_2) {\r\n if (steps[activeStep] === 'Termin 1') {\r\n setNextButtonEnabled(true);\r\n setActiveStep((prevActiveStep) => prevActiveStep + 2);\r\n } else {\r\n setActiveStep((prevActiveStep) => prevActiveStep + 1);\r\n }\r\n } else {\r\n setActiveStep((prevActiveStep) => prevActiveStep + 1);\r\n }\r\n }\r\n };\r\n\r\n const handleBack = async (e: React.MouseEvent) => {\r\n if (e) {\r\n e.currentTarget.blur();\r\n }\r\n\r\n setNextButtonEnabled(true);\r\n\r\n // if (isStepMultiAppointment(steps[activeStep])) {\r\n // let appointmentNr = getCurrentAppointmentNr(steps[activeStep]);\r\n\r\n // /* unblockAppointment */\r\n // let resource;\r\n // if (appointmentNr === 1) {\r\n // resource = tmstate.selectedResource;\r\n // } else if (appointmentNr === 2) {\r\n // resource = tmstate.selectedResource_2;\r\n // }\r\n // let unblockResponse = await unblockAppointment(resource);\r\n\r\n // tmdispatch({\r\n // type: 'WORKONAPPOINTMENTNR',\r\n // workOnAppointmentNr: appointmentNr - 1,\r\n // });\r\n // } else if (steps[activeStep] === STEP_TERMIN_BUCHEN) {\r\n // tmdispatch({\r\n // type: 'WORKONAPPOINTMENTNR',\r\n // workOnAppointmentNr: 2, //TODO: must be the last appointment\r\n // });\r\n // }\r\n\r\n if (steps[activeStep] === STEP_TERMIN_BUCHEN) {\r\n let appointmentNr = 2;\r\n if (appointmentBooked_1) {\r\n appointmentNr = 2;\r\n if (getSelectedResource(2)) {\r\n const resource = getSelectedResource(2);\r\n await unblockAppointment(resource);\r\n }\r\n } else if (appointmentBooked_2) {\r\n appointmentNr = 1;\r\n if (getSelectedResource(1)) {\r\n const resource = getSelectedResource(1);\r\n await unblockAppointment(resource);\r\n }\r\n } else if (isAppointmentPostpone()) {\r\n appointmentNr = 1;\r\n }\r\n tmdispatch({\r\n type: 'WORKONAPPOINTMENTNR',\r\n workOnAppointmentNr: appointmentNr, //TODO: must be the last appointment\r\n });\r\n }\r\n\r\n setActiveStep((prevActiveStep) => prevActiveStep - 1);\r\n };\r\n\r\n const handleCancel = async () => {\r\n /* unblockAppointments */\r\n if (getSelectedResource(1)) {\r\n await unblockAppointment(getSelectedResource(1));\r\n }\r\n if (getSelectedResource(2)) {\r\n await unblockAppointment(getSelectedResource(2));\r\n }\r\n\r\n tmdispatch({\r\n type: 'RESETCANCELNEWAPPOINTMENTDATA',\r\n });\r\n\r\n /* reset all resources */\r\n tmdispatch({\r\n type: 'WORKONAPPOINTMENTNR',\r\n workOnAppointmentNr: 1,\r\n });\r\n resetAllSelectedResource();\r\n resetAllSelectedTimeslots();\r\n resetAllAvailableTimeslots();\r\n tmdispatch({\r\n type: 'SETRENEWAPPOINTMENT',\r\n renewAppointment: false,\r\n });\r\n\r\n tmdispatch({\r\n type: 'RESETCATEGORY',\r\n });\r\n\r\n if (props.checkInVariant) {\r\n if (props.handleAppointmentsCancelClick) {\r\n props.handleAppointmentsCancelClick();\r\n }\r\n } else {\r\n navigate(Paths.TERMINE);\r\n }\r\n };\r\n\r\n const handleFinish = () => {\r\n tmdispatch({\r\n type: 'RESETALL_WITHOUTPERSONALDATA',\r\n });\r\n\r\n if (props.handleAppointmentsFinishClick) {\r\n props.handleAppointmentsFinishClick();\r\n } else {\r\n navigate(Paths.TERMINE);\r\n }\r\n };\r\n\r\n const changeStepsIfMultiAppointments = () => {\r\n const newSteps = [STEP_KATEGORIE_WAEHLEN];\r\n\r\n const newAppData = tmstate.cancelNewAppointmentData.data;\r\n let countAPK = 1;\r\n let completeAPKMode = false;\r\n\r\n let isPostponeAppointment = true;\r\n let isMissingAPKWorkflow = false;\r\n if (newAppData.extension) {\r\n const enrollCode = getEnrollCodeFromExtension(newAppData.extension);\r\n if (enrollCode.length > 0 || tmstate.withCheckIn) {\r\n isPostponeAppointment = true;\r\n isMissingAPKWorkflow = false;\r\n } else {\r\n isPostponeAppointment = false;\r\n isMissingAPKWorkflow = true;\r\n }\r\n }\r\n\r\n if (isPostponeAppointment) {\r\n /* POSTPONE APPOINMENT */\r\n if (newAppData) {\r\n const selectedReasonObject = getSelectedReasonDataFromAppointment(newAppData);\r\n setSelectedResource(1, newAppData);\r\n tmdispatch({\r\n type: 'SELECTCATEGORY',\r\n selectedCategory: {\r\n name: selectedReasonObject ? '' : newAppData.serviceType[0].coding[0].display,\r\n id: newAppData.serviceType[0].coding[0].id,\r\n countAPKs: 1,\r\n oneMacro: false,\r\n },\r\n });\r\n if (newAppData.comment) {\r\n tmdispatch({\r\n type: 'SETREMARK',\r\n remark: newAppData.comment,\r\n });\r\n }\r\n tmdispatch({\r\n type: 'SELECTREASON',\r\n selectedReason: {\r\n ...tmstate.selectedReason,\r\n reasonName: selectedReasonObject?.reasonName ? selectedReasonObject?.reasonName : null,\r\n reasonId: selectedReasonObject?.reasonId ? selectedReasonObject?.reasonId : null,\r\n makroId: selectedReasonObject?.makroId ? selectedReasonObject?.makroId : null,\r\n },\r\n });\r\n } else {\r\n /* NEW APPOINTMENT AFTER QUESTIONNAIERE postStoreAction */\r\n // if (tmstate.selectedCategory.id > 0 && tmstate.selectedCategory.name.length > 0) {\r\n // setSelectedResource(1, newAppData);\r\n // }\r\n }\r\n\r\n setActiveStep(1);\r\n setSteps([STEP_KATEGORIE_WAEHLEN, STEP_TERMIN_WAEHLEN, STEP_TERMIN_BUCHEN]);\r\n }\r\n\r\n if (isMissingAPKWorkflow) {\r\n const missingAPK = getMissingAPKsFromExtension(newAppData.extension);\r\n const missingAPKNr = parseInt(missingAPK);\r\n if (missingAPK.length > 0) {\r\n completeAPKMode = true;\r\n countAPK = missingAPKNr + 1;\r\n } else {\r\n countAPK = getCountAPKsFromExtension(newAppData.extension);\r\n }\r\n\r\n if (countAPK > 1) {\r\n let i;\r\n for (i = 1; i <= countAPK; i++) {\r\n newSteps.push('Termin ' + i.toString());\r\n }\r\n\r\n newSteps.push(STEP_TERMIN_BUCHEN);\r\n\r\n let canceledAppointment;\r\n if (completeAPKMode) {\r\n canceledAppointment = missingAPKNr;\r\n } else {\r\n canceledAppointment = getAPKNrFromExtension(newAppData.extension);\r\n }\r\n\r\n if (canceledAppointment === 0) {\r\n setAppointmentBooked_1(false);\r\n tmdispatch({\r\n type: 'WORKONAPPOINTMENTNR',\r\n workOnAppointmentNr: 1,\r\n });\r\n } else if (canceledAppointment === 1) {\r\n setAppointmentBooked_2(false);\r\n tmdispatch({\r\n type: 'WORKONAPPOINTMENTNR',\r\n workOnAppointmentNr: 2,\r\n });\r\n }\r\n\r\n let bookedAppointment;\r\n if (completeAPKMode) {\r\n bookedAppointment = 0;\r\n } else {\r\n bookedAppointment = getAPKNrFromExtension(newAppData.contained[0].extension);\r\n }\r\n\r\n if (\r\n (newAppData.contained && newAppData.contained[0]?.status === 'booked') ||\r\n (newAppData.contained && newAppData.contained[0]?.status === 'fulfilled') ||\r\n newAppData.status === appointmentStatus.enteredInError\r\n ) {\r\n let bookedResource;\r\n if (completeAPKMode) {\r\n bookedResource = newAppData;\r\n } else {\r\n bookedResource = newAppData.contained[0];\r\n }\r\n const timeslot = {\r\n start: bookedResource.start,\r\n end: bookedResource.end,\r\n };\r\n\r\n if (bookedAppointment === 0) {\r\n setAppointmentBooked_1(true);\r\n // tmdispatch({\r\n // type: 'SETRESOURCE',\r\n // selectedResource: bookedResource,\r\n // });\r\n\r\n // tmdispatch({\r\n // type: 'SELECTTIMESLOT',\r\n // selectedTimeslot: timeslot,\r\n // });\r\n } else if (bookedAppointment === 1) {\r\n setAppointmentBooked_2(true);\r\n // tmdispatch({\r\n // type: 'SETRESOURCE_2',\r\n // selectedResource_2: bookedResource,\r\n // });\r\n\r\n // tmdispatch({\r\n // type: 'SELECTTIMESLOT_2',\r\n // selectedTimeslot_2: timeslot,\r\n // });\r\n }\r\n setSelectedResource(bookedAppointment + 1, bookedResource);\r\n setSelectedTimeslot(bookedAppointment + 1, timeslot);\r\n }\r\n\r\n setSteps(newSteps);\r\n tmdispatch({\r\n type: 'SETRENEWAPPOINTMENT',\r\n renewAppointment: true,\r\n });\r\n } else {\r\n setSteps([STEP_KATEGORIE_WAEHLEN, STEP_TERMIN_WAEHLEN, STEP_TERMIN_BUCHEN]);\r\n }\r\n }\r\n };\r\n\r\n const EnrollCodeWithLink = () => {\r\n if (enrollCode) {\r\n return (\r\n <>\r\n

    Termincode: {enrollCode}

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

    Fehler bei der Terminbuchung. Bitte versuchen Sie es erneut.

    \r\n \r\n );\r\n }\r\n };\r\n\r\n const getStep = (label: string, stepscompleted: string) => {\r\n let completed = false;\r\n\r\n let terminbuchen = false;\r\n if (stepscompleted === 'all') {\r\n /* all steps done*/\r\n completed = true;\r\n }\r\n if (stepscompleted === STEP_TERMIN_BUCHEN) {\r\n /* inkl. Termin 2 completed*/\r\n terminbuchen = true;\r\n }\r\n\r\n if (label === STEP_KATEGORIE_WAEHLEN) {\r\n completed = true;\r\n } else if (label === 'Termin 1') {\r\n if (terminbuchen) {\r\n completed = true;\r\n } else if (appointmentBooked_1) {\r\n completed = true;\r\n }\r\n } else if (label === 'Termin 2') {\r\n if (terminbuchen) {\r\n completed = true;\r\n } else if (appointmentBooked_2) {\r\n completed = true;\r\n }\r\n }\r\n return (\r\n \r\n {label}\r\n \r\n );\r\n };\r\n\r\n useEffect(() => {\r\n changeStepsIfMultiAppointments();\r\n }, []);\r\n\r\n useEffect(() => {\r\n if (appointmentBooked_1) {\r\n setActiveStep(2);\r\n } else if (appointmentBooked_2) {\r\n setActiveStep(1);\r\n } else {\r\n setActiveStep(1);\r\n }\r\n }, [tmstate.renewAppointment]);\r\n\r\n useEffect(() => {\r\n if (isTimeslotDateSet(getSelectedTimeslot(1)) && isTimeslotDateSet(getSelectedTimeslot(2))) {\r\n setNextButtonEnabled(true);\r\n } else if (steps[activeStep] === STEP_TERMIN_BUCHEN) {\r\n setNextButtonEnabled(true);\r\n } else if (steps[activeStep] === STEP_TERMIN_WAEHLEN) {\r\n setNextButtonEnabled(true);\r\n }\r\n return () => {\r\n setNextButtonEnabled(false);\r\n };\r\n }, [tmstate.selectedTimeslots && tmstate.selectedTimeslots.length]);\r\n\r\n // useEffect(() => {\r\n // if (isTimeslotDateSet(tmstate.selectedTimeslot) || isTimeslotDateSet(tmstate.selectedTimeslot_2)) {\r\n // setNextButtonEnabled(true);\r\n // } else if (steps[activeStep] === STEP_TERMIN_BUCHEN) {\r\n // setNextButtonEnabled(true);\r\n // }\r\n // return () => {\r\n // setNextButtonEnabled(false);\r\n // };\r\n // }, [tmstate.selectedCategory.name, tmstate.selectedTimeslot, tmstate.selectedTimeslot_2]);\r\n\r\n let stepContent;\r\n\r\n if (activeStep === steps.length) {\r\n stepContent = (\r\n \r\n \r\n
    \r\n \r\n \r\n \r\n Zurück zur Terminierung\r\n \r\n \r\n
    \r\n );\r\n } else {\r\n stepContent = (\r\n \r\n {getStepContent(steps, activeStep)}\r\n \r\n \r\n handleCancel()}>\r\n Abbrechen\r\n \r\n \r\n \r\n ) => handleBack(e)}\r\n >\r\n Zurück\r\n \r\n \r\n \r\n ) => handleNext(e)}\r\n >\r\n {steps[activeStep] === STEP_TERMIN_BUCHEN ? 'Jetzt buchen' : 'Weiter'}\r\n \r\n \r\n \r\n \r\n );\r\n }\r\n\r\n /* recreate steps when finished */\r\n let stepscompleted = '';\r\n if (steps[activeStep] === STEP_TERMIN_BUCHEN) {\r\n stepscompleted = STEP_TERMIN_BUCHEN;\r\n } else if (activeStep === steps.length) {\r\n stepscompleted = 'all';\r\n }\r\n return (\r\n
    \r\n \r\n {steps.map((label) => getStep(label, stepscompleted))}\r\n \r\n
    {stepContent}
    \r\n setBlockingModalShow({ show: false })}\r\n />\r\n
    \r\n );\r\n}\r\n\r\nexport default StepperTerminierungAlternateDate;\r\n","import StepperTerminierungAlternateDate from '../../components/Stepper/StepperTerminierungAlternateDate';\r\nimport Mainscreen from '../Mainscreen/Mainscreen';\r\nimport { ITermineContent } from '../Termine/Termine';\r\n\r\nexport const StepperTerminierungAlternateDateContent = (props: ITermineContent) => {\r\n return (\r\n
    \r\n \r\n
    \r\n );\r\n};\r\n\r\nconst TerminierungAlternateDate = () => {\r\n return (\r\n \r\n \r\n \r\n );\r\n};\r\n\r\nexport default TerminierungAlternateDate;\r\n","import { Form } from 'react-bootstrap';\r\nimport FormLabel from 'react-bootstrap/FormLabel';\r\nimport styled from 'styled-components';\r\n\r\ninterface IForm {\r\n marginBottom?: string;\r\n color?: string;\r\n}\r\n\r\nexport const StyledFormLabel = styled(FormLabel)`\r\n margin-bottom: ${(prop) => (prop.marginBottom ? prop.marginBottom : '1rem')};\r\n`;\r\n\r\nexport const StyledFormLabelForInput = styled(FormLabel)`\r\n margin-bottom: 0.3rem;\r\n font-size: 0.85rem;\r\n color: ${(prop) => (prop.Color ? prop.Color : 'rgb(116, 118, 130)')};\r\n`;\r\n\r\nexport const StyledFormRowNoMargin = styled(Form.Row)`\r\n margin: 0;\r\n`;\r\n\r\nexport const StyledFormGroupMaxWidth = styled(Form.Group)`\r\n width: 100%;\r\n`;\r\n","import { getBaseURL } from '../../globals/global';\r\n\r\nexport const getFHIRConfig = (sessionId: string, baseURL?: string) => {\r\n let baseurl = getBaseURL() + '/fhir';\r\n if (baseURL) {\r\n baseurl = baseURL;\r\n }\r\n\r\n return {\r\n baseUrl: baseurl,\r\n headers: {\r\n Authorization: sessionId,\r\n },\r\n };\r\n};\r\n","import { Placement } from 'react-bootstrap/esm/Overlay';\r\nimport OverlayTrigger from 'react-bootstrap/OverlayTrigger';\r\nimport Tooltip from 'react-bootstrap/Tooltip';\r\nimport { IconDiv } from '../Div/StyledDiv';\r\n\r\ninterface ITooltip {\r\n id: string;\r\n text: string;\r\n iconDiv: boolean;\r\n divWidth?: string;\r\n marginLeft?: string;\r\n marginRight?: string;\r\n // icon: IconBaseProps;\r\n icon: any;\r\n placement?: Placement;\r\n}\r\n\r\nconst MyTooltip = (props: ITooltip) => {\r\n let placement: Placement = 'bottom';\r\n if (props.placement && placement.length > 0) {\r\n placement = props.placement;\r\n }\r\n\r\n if (props.iconDiv) {\r\n return (\r\n {props.text}}>\r\n \r\n {props.icon}\r\n \r\n \r\n );\r\n } else {\r\n return (\r\n {props.text}}>\r\n {props.icon}\r\n \r\n );\r\n }\r\n};\r\n\r\nexport default MyTooltip;\r\n","import { version } from '../../package.json';\r\nimport { charts, tables } from '../utils/chartUtils';\r\n\r\nconst appVersion = version;\r\n\r\nconst baseURL = (window as any).pcpconfig.baseURL;\r\nconst homepageURL = (window as any).pcpconfig.homepageURL;\r\nconst contextConfig = (window as any).pcpconfig.context;\r\nconst qrCodeConfig = (window as any).pcpconfig.qrcode;\r\nconst themeConfig = (window as any).pcpconfig.theme;\r\n// const basicauthConfig = (window as any).pcpconfig.basicauth;\r\n\r\nexport const getBaseURL = () => {\r\n return baseURL;\r\n};\r\n\r\nexport const getRestURL = () => {\r\n return baseURL + '/rest/';\r\n};\r\n\r\nexport const getFhirURL = () => {\r\n return baseURL + '/fhir';\r\n};\r\n\r\nexport const getTermsURL = () => {\r\n return baseURL + '/C.hd?calcWith=TermsHTML';\r\n};\r\n\r\nexport const getPrivacyURL = () => {\r\n return baseURL + '/C.hd?calcWith=PrivacyHTML';\r\n};\r\n\r\nexport const getHomepageURL = () => {\r\n return homepageURL;\r\n};\r\n\r\nexport const getContextConfig = () => {\r\n return contextConfig;\r\n};\r\n\r\nexport const getQRCodeConfig = () => {\r\n return qrCodeConfig;\r\n};\r\n\r\n// export const getBasicAuthConfig = () => {\r\n// return basicauthConfig;\r\n// };\r\n\r\nexport const getAppVersion = () => {\r\n return appVersion;\r\n};\r\n\r\nexport const getThemeConfig = () => {\r\n return themeConfig;\r\n};\r\n\r\nexport const localStorageKey = {\r\n // lastInteraction: 'lastInteraction',\r\n};\r\n\r\nexport const moment = require('moment/min/moment-with-locales');\r\nmoment.locale('de');\r\n\r\nexport const appointmentStatus = {\r\n booked: 'booked',\r\n cancelled: 'cancelled',\r\n enteredInError: 'entered-in-error',\r\n arrived: 'arrived',\r\n};\r\n\r\nexport const PROFILE_HOME = 'HOME';\r\n\r\nexport const securityItemNames = {\r\n CHARTS: 'CHARTS',\r\n CHARTS_WEIGHT: charts.WEIGHT.id,\r\n CHARTS_FATMASS: charts.FATMASS.id,\r\n CHARTS_BLOODSUGAR: charts.BLOODSUGAR.id,\r\n CHARTS_FLI: charts.FLI.id,\r\n CHARTS_SAM: charts.SAM.id,\r\n CHARTS_ACTIVITY: charts.ACTIVITY.id,\r\n TABLE_VAL: tables.VALTBL.id,\r\n PATLIST: 'PATLIST',\r\n DOKUMENT: 'DOKUMENT',\r\n FOTOS: 'FOTOS',\r\n FRAGEBOGEN: 'FRAGEBOGEN',\r\n MEDIKATION: 'MEDIKATION',\r\n TAGESPLAN: 'TAGESPLAN',\r\n TERMINE: 'TERMINE',\r\n VIDEO: 'VIDEO',\r\n JOURNEY: 'JOURNEY',\r\n TODO: 'TODO',\r\n TAB_ORDER: 'TAB_ORDER',\r\n};\r\n\r\nexport const jitsiOptions = {\r\n configOverwrite: {\r\n toolbarButtons: [\r\n 'camera',\r\n 'chat',\r\n // 'closedcaptions',\r\n 'desktop',\r\n // 'download',\r\n // 'embedmeeting',\r\n // 'etherpad',\r\n // 'feedback',\r\n 'filmstrip',\r\n 'fullscreen',\r\n 'hangup',\r\n // 'help',\r\n 'highlight',\r\n // 'invite',\r\n // 'linktosalesforce',\r\n // 'livestreaming',\r\n 'microphone',\r\n 'noisesuppression',\r\n 'participants-pane',\r\n 'profile',\r\n 'raisehand',\r\n // 'recording',\r\n // 'security',\r\n // 'select-background',\r\n 'settings',\r\n // 'shareaudio',\r\n // 'sharedvideo',\r\n // 'shortcuts',\r\n // 'stats',\r\n 'tileview',\r\n 'toggle-camera',\r\n 'videoquality',\r\n // 'whiteboard',\r\n ],\r\n breakoutRooms: {\r\n // Hides the add breakout room button. This replaces `hideAddRoomButton`.\r\n hideAddRoomButton: true,\r\n // Hides the auto assign participants button.\r\n hideAutoAssignButton: true,\r\n // Hides the join breakout room button.\r\n hideJoinRoomButton: true,\r\n },\r\n },\r\n};\r\n","import 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 Nav from 'react-bootstrap/Nav';\r\nimport SidebarItemList from '../../components/SidebarItems/SidebarItemList';\r\nimport { StyledNavbar } from './StyledNavbar';\r\n\r\nconst NavbarBottom = () => {\r\n return (\r\n \r\n \r\n \r\n );\r\n};\r\n\r\nexport default NavbarBottom;\r\n","import * as React from 'react';\r\nimport { useContext, useEffect, useState } from 'react';\r\nimport Col from 'react-bootstrap/Col';\r\nimport Container from 'react-bootstrap/Container';\r\nimport Row from 'react-bootstrap/Row';\r\nimport { useLocation, useNavigate } from 'react-router-dom';\r\nimport { ThemeContext } from 'styled-components';\r\nimport DragNDropArea from '../../components/Div/DragNDropArea';\r\nimport { CenterDiv } from '../../components/Div/StyledDiv';\r\nimport TelephoneModal from '../../components/Modals/TelephoneModal/TelephoneModal';\r\nimport { ITelephoneCallIcon, stopRingTone } from '../../components/Telephone/Telephone';\r\nimport LoginContext from '../../context/loginContext';\r\nimport TerminierungContext from '../../context/terminierungContext';\r\nimport MyThemeContext from '../../context/themeContext';\r\nimport VideochatContext from '../../context/videochatContext';\r\nimport useScreenResolution from '../../hooks/useScreenResolution';\r\nimport { initWebSocket } from '../../services/VideochatService';\r\nimport { isMobile } from '../../utils/screenResolution';\r\nimport Navbar from '../Navbar/Navbar';\r\nimport NavbarBottom from '../Navbar/NavbarBottom';\r\nimport Sidebar from '../Sidebar/Sidebar';\r\n\r\nconst Mainscreen = ({ children }: React.PropsWithChildren) => {\r\n const navigate = useNavigate();\r\n const location = useLocation();\r\n const themeContext = useContext(ThemeContext);\r\n const { state } = useContext(LoginContext);\r\n const { themestate } = useContext(MyThemeContext);\r\n const { vsstate, vsdispatch } = useContext(VideochatContext);\r\n const { tmstate } = useContext(TerminierungContext);\r\n const [showTelephoneModal, setShowTelephoneModal] = useState(false);\r\n\r\n const screenSize = useScreenResolution();\r\n\r\n // window.localStorage.setItem(localStorageKey.lastInteraction, moment().format('DD.MM.YYYY HH:mm:ss'));\r\n\r\n const callProps: ITelephoneCallIcon = {\r\n state: state,\r\n vsstate: vsstate,\r\n vsdispatch: vsdispatch,\r\n tmstate: tmstate,\r\n };\r\n\r\n useEffect(() => {\r\n if (state.sessionId !== '') {\r\n if (!window.app.wsconnect) {\r\n initWebSocket(state.iceServers, state.sessionId, vsstate, vsdispatch, tmstate, navigate, location);\r\n // console.log('before WS');\r\n // console.log('ws: ', window.app.wsconnect);\r\n }\r\n }\r\n }, [state.sessionId, showTelephoneModal, window.app.wsconnect]);\r\n\r\n useEffect(() => {\r\n if (vsstate.incomingCall) {\r\n if (!showTelephoneModal) {\r\n setShowTelephoneModal(true);\r\n }\r\n }\r\n }, [vsstate.incomingCall]);\r\n\r\n const onTelephoneCallOff = () => {\r\n setShowTelephoneModal(false);\r\n };\r\n\r\n const onTelephoneCallAccept = () => {\r\n setShowTelephoneModal(false);\r\n };\r\n\r\n const onTelephoneHide = () => {\r\n stopRingTone();\r\n setShowTelephoneModal(false);\r\n };\r\n\r\n return (\r\n
    \r\n
    \r\n \r\n
    \r\n \r\n \r\n {!isMobile(screenSize.width) && (\r\n \r\n \r\n \r\n )}\r\n\r\n \r\n \r\n {children}\r\n onTelephoneCallAccept()}\r\n onCallOff={() => onTelephoneCallOff()}\r\n onCallHide={() => onTelephoneHide()}\r\n />\r\n \r\n \r\n \r\n \r\n {isMobile(screenSize.width) && }\r\n
    \r\n );\r\n};\r\n\r\nexport default Mainscreen;\r\n","import { createContext } from 'react';\r\nimport { IAppointmentChat, IChat, IIncomingMessage } from '../components/Chat/Chat';\r\n\r\nexport type InitialVideochatType = {\r\n incomingCall: boolean;\r\n callAccepted: boolean;\r\n caller: string;\r\n remoteSid: string;\r\n roomName: string;\r\n localStream: any;\r\n remoteStream: any;\r\n iceServer: Array;\r\n chatMessages: IIncomingMessage[];\r\n numberUnreadMessages: number;\r\n lastIncomingTextChatMsg: string;\r\n appointmentChat: IAppointmentChat[];\r\n lastIncomingAppChatMsg: IChat;\r\n audioMuted: boolean;\r\n jitsiAllowed: boolean;\r\n jitsiError: string;\r\n};\r\n\r\nexport const initialVideochatState = {\r\n incomingCall: false,\r\n callAccepted: false,\r\n caller: '',\r\n remoteSid: '',\r\n localStream: null,\r\n remoteStream: null,\r\n roomName: '',\r\n iceServer: [],\r\n chatMessages: [],\r\n numberUnreadMessages: 0,\r\n lastIncomingTextChatMsg: '',\r\n appointmentChat: [],\r\n lastIncomingAppChatMsg: {\r\n id: '',\r\n incomingMessages: [],\r\n },\r\n audioMuted: false,\r\n jitsiAllowed: false,\r\n jitsiError: '',\r\n};\r\n\r\nconst VideochatContext = createContext<{\r\n vsstate: InitialVideochatType;\r\n vsdispatch: React.Dispatch;\r\n}>({\r\n vsstate: initialVideochatState,\r\n vsdispatch: () => null,\r\n});\r\n\r\nexport default VideochatContext;\r\n","import { useCallback, useContext } from 'react';\r\nimport AlertContext, { AlertOnHide, AlertType } from '../context/alertContext';\r\nimport LoginContext from '../context/loginContext';\r\nimport TerminierungContext, { IAvailableTimeslot, ITimeslot } from '../context/terminierungContext';\r\nimport { cancelAppointment } from '../services/fhir/FHIRAppointment';\r\nimport { showAlertMessage } from '../utils/alertHandling';\r\nimport {\r\n APPOINTMENT_POSTPONE_REASON,\r\n getOriginalAppointmentDate,\r\n resetAvailableTimeslotsWithNr,\r\n resetSelectedResourceWithNr,\r\n resetSelectedTimeslotsWithNr,\r\n updateAvailableTimeslots,\r\n updateSelectedResources,\r\n updateSelectedTimeslot,\r\n} from '../utils/appointmentUtils';\r\n\r\nexport const useAppointmentSelection = () => {\r\n const { tmstate, tmdispatch } = useContext(TerminierungContext);\r\n const { alertdispatch } = useContext(AlertContext);\r\n const { state } = useContext(LoginContext);\r\n\r\n const setSelectedResource = useCallback(\r\n (appointmentNr: number, selectedResource: any) => {\r\n let appNr = 1;\r\n if (appointmentNr) {\r\n appNr = appointmentNr;\r\n }\r\n\r\n if (selectedResource !== undefined) {\r\n const updatedSelectedResource = updateSelectedResources(\r\n tmstate.selectedResources,\r\n appNr,\r\n selectedResource,\r\n );\r\n tmdispatch({\r\n type: 'SETRESOURCE',\r\n selectedResources: updatedSelectedResource,\r\n });\r\n }\r\n },\r\n [tmdispatch, tmstate.selectedResources],\r\n );\r\n\r\n const resetSelectedResource = useCallback(\r\n (appointmentNr: number) => {\r\n let appNr = 1;\r\n if (appointmentNr) {\r\n appNr = appointmentNr;\r\n }\r\n\r\n const resetedResource = resetSelectedResourceWithNr(tmstate.selectedResources, appNr);\r\n tmdispatch({\r\n type: 'SETRESOURCE',\r\n selectedResources: resetedResource,\r\n });\r\n },\r\n [tmdispatch, tmstate.selectedResources],\r\n );\r\n\r\n const setAvailableTimeslots = useCallback(\r\n (appointmentNr: number, availableTimeslots: IAvailableTimeslot[], supressDuration: boolean) => {\r\n let appNr = 1;\r\n if (appointmentNr) {\r\n appNr = appointmentNr;\r\n }\r\n\r\n if (availableTimeslots !== undefined) {\r\n const updatedAvailableTimeslot = updateAvailableTimeslots(\r\n tmstate.availableTimeslots,\r\n appNr,\r\n availableTimeslots,\r\n supressDuration,\r\n );\r\n tmdispatch({\r\n type: 'SETAVAILABLETIMESLOTS',\r\n availableTimeslots: updatedAvailableTimeslot,\r\n });\r\n }\r\n },\r\n\r\n [tmdispatch, tmstate.availableTimeslots],\r\n );\r\n\r\n const resetAvailableTimeslots = useCallback(\r\n (appointmentNr: number) => {\r\n let appNr = 1;\r\n if (appointmentNr) {\r\n appNr = appointmentNr;\r\n }\r\n\r\n const resetedAvailableTimeslot = resetAvailableTimeslotsWithNr(tmstate.availableTimeslots, appNr);\r\n tmdispatch({\r\n type: 'SETAVAILABLETIMESLOTS',\r\n availableTimeslots: resetedAvailableTimeslot,\r\n });\r\n },\r\n [tmdispatch, tmstate.availableTimeslots],\r\n );\r\n\r\n const getSelectedResource = (appointmentNr: number) => {\r\n let appNr = 1;\r\n if (appointmentNr) {\r\n appNr = appointmentNr;\r\n }\r\n const foundResource = tmstate.selectedResources?.find((e) => e.appointmentNr === appNr);\r\n return foundResource?.resource;\r\n };\r\n\r\n const getAvailableTimeslots = (appointmentNr: number) => {\r\n let appNr = 1;\r\n if (appointmentNr) {\r\n appNr = appointmentNr;\r\n }\r\n const foundAvailableTimeslots = tmstate.availableTimeslots?.find((e) => e.appointmentNr === appNr);\r\n return foundAvailableTimeslots;\r\n };\r\n\r\n const getSelectedTimeslot = (appointmentNr: number) => {\r\n let appNr = 1;\r\n if (appointmentNr) {\r\n appNr = appointmentNr;\r\n }\r\n const foundSelectedTimeslots = tmstate.selectedTimeslots?.find((e) => e.appointmentNr === appNr);\r\n return foundSelectedTimeslots?.selectedTimeslot;\r\n };\r\n\r\n const setSelectedTimeslot = useCallback(\r\n (appointmentNr: number, selectedTimeslot: ITimeslot) => {\r\n let appNr = 1;\r\n if (appointmentNr) {\r\n appNr = appointmentNr;\r\n }\r\n\r\n if (selectedTimeslot !== undefined) {\r\n const updatedSelectedTimeslot = updateSelectedTimeslot(\r\n tmstate.selectedTimeslots,\r\n appNr,\r\n selectedTimeslot,\r\n );\r\n tmdispatch({\r\n type: 'SELECTTIMESLOT',\r\n selectedTimeslots: updatedSelectedTimeslot,\r\n });\r\n tmdispatch({\r\n type: 'TIMESLOTCLICKED',\r\n timeslotClicked: true,\r\n });\r\n }\r\n },\r\n\r\n [tmdispatch, tmstate.selectedTimeslots],\r\n );\r\n\r\n const resetSelectedTimeslots = useCallback(\r\n (appointmentNr: number) => {\r\n let appNr = 1;\r\n if (appointmentNr) {\r\n appNr = appointmentNr;\r\n }\r\n\r\n const resetedSelectedTimeslot = resetSelectedTimeslotsWithNr(tmstate.selectedTimeslots, appNr);\r\n tmdispatch({\r\n type: 'SELECTTIMESLOT',\r\n selectedTimeslots: resetedSelectedTimeslot,\r\n });\r\n },\r\n [tmdispatch, tmstate.selectedTimeslots],\r\n );\r\n\r\n const resetAllSelectedTimeslots = useCallback(() => {\r\n tmdispatch({\r\n type: 'SELECTTIMESLOT',\r\n selectedTimeslot: [],\r\n });\r\n }, [tmdispatch]);\r\n\r\n const resetAllAvailableTimeslots = useCallback(() => {\r\n tmdispatch({\r\n type: 'SETAVAILABLETIMESLOTS',\r\n availableTimeslots: [],\r\n });\r\n }, [tmdispatch]);\r\n\r\n const resetAllSelectedResource = useCallback(() => {\r\n tmdispatch({\r\n type: 'SETRESOURCE',\r\n selectedResources: [],\r\n });\r\n }, [tmdispatch]);\r\n\r\n const isAppointmentPostpone = useCallback(() => {\r\n if (tmstate.cancelNewAppointmentData.reason === APPOINTMENT_POSTPONE_REASON) {\r\n return true;\r\n } else {\r\n return false;\r\n }\r\n }, [tmdispatch]);\r\n\r\n const cancelPostponeAppointment = useCallback(async () => {\r\n if (isAppointmentPostpone()) {\r\n const originalAppointmentDetails = getOriginalAppointmentDate(tmstate);\r\n\r\n const cancelRes = await cancelAppointment(\r\n state.sessionId,\r\n tmstate.cancelNewAppointmentData.data.id,\r\n 'Termin verschoben' + originalAppointmentDetails,\r\n alertdispatch,\r\n );\r\n if (cancelRes) {\r\n if (cancelRes.ERROR) {\r\n showAlertMessage({\r\n alertTitle: 'Termin verschieben - Fehler beim absagen des alten Termins',\r\n alertTxt: cancelRes.ERROR,\r\n alertType: AlertType.error,\r\n onHide: AlertOnHide.onlyClose,\r\n alertdispatch: alertdispatch,\r\n });\r\n }\r\n }\r\n }\r\n }, [tmdispatch]);\r\n\r\n const isEarlierAppointmentPossible = useCallback(() => {\r\n if (tmstate.selectedDepartment.fruehererTermin !== undefined) {\r\n return tmstate.selectedDepartment.fruehererTermin;\r\n }\r\n return false;\r\n }, [tmdispatch]);\r\n\r\n const isEarliestAppointmentClicked = useCallback(() => {\r\n if (tmstate.selectedPhysician.id <= 0) {\r\n return true;\r\n }\r\n return false;\r\n }, [tmdispatch]);\r\n\r\n const getAllMakroIdsFromFilteredReasons = useCallback(() => {\r\n let makroId = '0';\r\n const makroIdArray: string[] = [];\r\n\r\n tmstate.filteredReasons.forEach((reason) => {\r\n makroIdArray.push(reason.makroId.toString());\r\n });\r\n\r\n makroId = makroIdArray.join(',');\r\n return makroId;\r\n }, [tmdispatch]);\r\n\r\n const getMakroIdFromResourceServiceType = useCallback(\r\n (resource: any) => {\r\n let foundMakroId = null;\r\n if (resource.serviceType) {\r\n const subCoding = resource.serviceType.find((st: any) => st.coding);\r\n if (subCoding) {\r\n const subExtension = subCoding.coding.find((sc: any) => sc.extension);\r\n if (subExtension) {\r\n const subMakro = subExtension.extension.find((se: any) => se.url && se.url.endsWith('makroId'));\r\n if (subMakro) {\r\n const makroId = subMakro.valueInteger;\r\n if (makroId && makroId > 0) {\r\n foundMakroId = makroId;\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n return foundMakroId;\r\n },\r\n [tmdispatch],\r\n );\r\n\r\n return {\r\n setSelectedResource,\r\n resetSelectedResource,\r\n setAvailableTimeslots,\r\n resetAvailableTimeslots,\r\n getSelectedResource,\r\n getAvailableTimeslots,\r\n getSelectedTimeslot,\r\n setSelectedTimeslot,\r\n resetSelectedTimeslots,\r\n resetAllSelectedTimeslots,\r\n resetAllAvailableTimeslots,\r\n resetAllSelectedResource,\r\n isAppointmentPostpone,\r\n cancelPostponeAppointment,\r\n isEarlierAppointmentPossible,\r\n isEarliestAppointmentClicked,\r\n getAllMakroIdsFromFilteredReasons,\r\n getMakroIdFromResourceServiceType,\r\n };\r\n};\r\n","import ToggleButton from 'react-bootstrap/esm/ToggleButton';\r\nimport ToggleButtonGroup from 'react-bootstrap/ToggleButtonGroup';\r\nimport styled from 'styled-components';\r\n\r\ninterface IToggleButtonProps {\r\n width: string;\r\n marginRight?: string;\r\n marginBottom?: string;\r\n marginTop?: string;\r\n requiredmissing: string;\r\n}\r\n\r\nexport const ToggleButtonGroupFlex = styled(ToggleButtonGroup)`\r\n display: flex;\r\n flex-wrap: wrap;\r\n padding-left: 10px;\r\n`;\r\n\r\nexport const StyledToggleButton = styled(ToggleButton)`\r\n width: ${(props) => (props.width ? props.width : '200px')};\r\n color: ${(props) => (props.requiredmissing === 'true' ? '#7B001D' : 'rgb(36, 94, 173)')};\r\n background-color: ${(props) => (props.requiredmissing === 'true' ? '#FED3D9' : 'rgb(221, 232, 247)')};\r\n border-color: rgb(236, 242, 250);\r\n margin-right: ${(props) => (props.marginRight ? props.marginRight : '3px')};\r\n margin-bottom: ${(props) => (props.marginBottom ? props.marginBottom : '3px')};\r\n margin-top: ${(props) => (props.marginTop ? props.marginTop : '3px')};\r\n word-wrap: break-word;\r\n padding-right: 5px;\r\n padding-left: 5px;\r\n`;\r\n\r\nexport const StyledResetButton = styled(ToggleButton)`\r\n margin-right: 3px;\r\n margin-bottom: 3px;\r\n margin-top: 3px;\r\n padding-left: 28px;\r\n`;\r\n","import { Paths } from '../Routes';\r\n\r\nexport const getHashParam = (hashLocation: string) => {\r\n const hashSub1 = hashLocation.substring(0, 1);\r\n const hashSub2 = hashLocation.substring(0, 2);\r\n let hash = '';\r\n\r\n if (hashSub2 === '#/') {\r\n hash = hashLocation.replace(hashLocation.substring(0, 2), '');\r\n } else if (hashSub1 === '#') {\r\n hash = hashLocation.replace(hashLocation.substring(0, 1), '');\r\n } else {\r\n hash = hashLocation;\r\n }\r\n\r\n const result = hash.split('&').reduce(function (result: any, item: string) {\r\n const parts = item.split('=');\r\n result[parts[0]] = parts[1];\r\n return result;\r\n }, {});\r\n\r\n return result;\r\n};\r\n\r\nexport const getQueryParams = (url: string) => {\r\n const regex = /[?&]([^=#]+)=([^&#]*)/g;\r\n const params: any = {};\r\n let match: any;\r\n\r\n while ((match = regex.exec(url))) {\r\n if (!isNaN(match[2])) {\r\n params[match[1]] = parseInt(match[2]);\r\n } else if (match[2] === 'true' || match[2] === 'false') {\r\n params[match[1]] = match[2] === 'true';\r\n } else {\r\n params[match[1]] = match[2];\r\n }\r\n }\r\n\r\n return params;\r\n};\r\n\r\nexport const getCurrentBaseURL = (currentPathName: string) => {\r\n const completeUrl = window.location.href;\r\n const baseUrl = completeUrl.split(currentPathName)[0];\r\n return baseUrl;\r\n};\r\n\r\nexport const getTermincodeEnrollIdURL = (baseUrl: string, enrollId: string) => {\r\n return baseUrl + Paths.TERMINCODE + '#enrollId=' + enrollId;\r\n};\r\n\r\nexport const addParamToURL = (url: string, key: string, value: string): string => {\r\n let questChar = '?';\r\n let andChar = '&';\r\n\r\n if (url.includes('?')) {\r\n questChar = '';\r\n } else {\r\n andChar = '';\r\n }\r\n\r\n url = url + questChar + andChar + key + '=' + value;\r\n\r\n return url;\r\n};\r\n","import produce from 'immer';\r\nimport * as React from 'react';\r\nimport { isTimeslotDateSet } from '../../components/Calendar/TimeSlots';\r\nimport { AlertOnHide, AlertType } from '../../context/alertContext';\r\nimport { InitialLoginType } from '../../context/loginContext';\r\nimport { InitialTerminierungType } from '../../context/terminierungContext';\r\nimport { appointmentStatus } from '../../globals/global';\r\nimport { IAppointment, getAPKNrFromExtension, getMissingAPKsFromExtension } from '../../utils/appointmentUtils';\r\nimport { responseErrorHandling } from '../../utils/errorHandling';\r\nimport { getFHIRConfig } from './fhirConstants';\r\nimport { setDataFromAppProperties } from '../../utils/pcpUtils';\r\n\r\nconst fhir = require('fhir.js');\r\n\r\nconst moment = require('moment');\r\n\r\nexport interface IAppointmentResult {\r\n key: string;\r\n data: IAppointment[];\r\n}\r\n\r\nexport interface IFreeAppointmentSearch {\r\n makroId: string;\r\n date: string;\r\n physicianId?: string;\r\n selectedReason?: string;\r\n selectedDepartment?: string;\r\n selectedInsurance?: string;\r\n}\r\n\r\nexport const getAppointmentsOfPatient = async (state: InitialLoginType, alertdispatch: React.Dispatch) => {\r\n const sessionId = state.sessionId;\r\n const userId = state.activeUserId;\r\n\r\n return await fhir(getFHIRConfig(sessionId))\r\n .search({\r\n type: 'Appointment',\r\n query: {\r\n actor: 'Patient/' + userId,\r\n _sort: '-date',\r\n },\r\n })\r\n .catch(function (e: any) {\r\n responseErrorHandling({\r\n response: e,\r\n alertdispatch: alertdispatch,\r\n });\r\n });\r\n};\r\n\r\nexport const getFreeAppointmentTimeSlots = async (\r\n state: InitialLoginType,\r\n tmstate: InitialTerminierungType,\r\n freeAppointment: IFreeAppointmentSearch,\r\n) => {\r\n const query: any = {\r\n actor: 'Patient/' + state.activeUserId,\r\n date: freeAppointment.date,\r\n _makroId: freeAppointment.makroId,\r\n _sort: '-date',\r\n };\r\n\r\n if (freeAppointment.physicianId) {\r\n query._physicianId = freeAppointment.physicianId;\r\n }\r\n\r\n if (tmstate.workOnAppointmentNr > 1) {\r\n const foundSelectedTimeslots = tmstate.selectedTimeslots.find((e) => e.appointmentNr === 1);\r\n const selectedTimeslot = foundSelectedTimeslots?.selectedTimeslot;\r\n const res0Date = moment(selectedTimeslot?.start).format('yyyy-MM-DD');\r\n\r\n query.apkNr = tmstate.workOnAppointmentNr - 1;\r\n query.res0 = res0Date;\r\n }\r\n return await fhir(getFHIRConfig(state.sessionId)).search({\r\n type: 'Appointment',\r\n query,\r\n });\r\n};\r\n\r\nexport const getFreeAppointmentTimeSlotsRenew = async (\r\n state: InitialLoginType,\r\n tmstate: InitialTerminierungType,\r\n freeAppointment: IFreeAppointmentSearch,\r\n) => {\r\n const foundSelectedTimeslots = tmstate.selectedTimeslots.find((e) => e.appointmentNr === 1);\r\n const selectedTimeslot = foundSelectedTimeslots?.selectedTimeslot;\r\n\r\n const foundSelectedTimeslots_2 = tmstate.selectedTimeslots.find((e) => e.appointmentNr === 2);\r\n const selectedTimeslot_2 = foundSelectedTimeslots_2?.selectedTimeslot;\r\n\r\n let res1Date = '';\r\n let res0Date = '';\r\n if (isTimeslotDateSet(selectedTimeslot_2)) {\r\n res1Date = moment(selectedTimeslot_2?.start).format('yyyy-MM-DD');\r\n }\r\n if (isTimeslotDateSet(selectedTimeslot)) {\r\n res0Date = moment(selectedTimeslot?.start).format('yyyy-MM-DD');\r\n }\r\n\r\n const makroId = tmstate.cancelNewAppointmentData.data.serviceType[0].coding[0].id;\r\n\r\n let apkNr;\r\n const missingAPK = getMissingAPKsFromExtension(tmstate.cancelNewAppointmentData.data.extension);\r\n if (missingAPK.length > 0) {\r\n apkNr = missingAPK;\r\n } else {\r\n apkNr = getAPKNrFromExtension(tmstate.cancelNewAppointmentData.data.extension);\r\n }\r\n\r\n const query: any = {\r\n actor: 'Patient/' + state.activeUserId,\r\n date: freeAppointment.date,\r\n _makroId: makroId,\r\n _sort: '-date',\r\n apkNr: apkNr,\r\n res0: res0Date,\r\n res1: res1Date,\r\n };\r\n\r\n if (freeAppointment.physicianId) {\r\n query._physicianId = freeAppointment.physicianId;\r\n }\r\n\r\n return await fhir(getFHIRConfig(state.sessionId)).search({\r\n type: 'Appointment',\r\n query,\r\n });\r\n};\r\n\r\nexport const bookAppointment = async (\r\n sessionId: string,\r\n resource: any,\r\n remark: string,\r\n earlierAppointmentWanted: boolean,\r\n id?: string | null,\r\n) => {\r\n const mResource = produce(resource, (draft: any) => {\r\n draft.comment = remark;\r\n draft.earlierAppointmentWanted = earlierAppointmentWanted;\r\n if (id) {\r\n draft.id = id;\r\n }\r\n });\r\n\r\n return await fhir(getFHIRConfig(sessionId))\r\n .create({\r\n type: 'Appointment',\r\n resource: mResource,\r\n })\r\n .catch(function (e: any) {\r\n console.log('An error happened while updating Appointment: \\n', e);\r\n });\r\n};\r\n\r\nexport const bookMultiAppointment = async (\r\n state: InitialLoginType,\r\n resource: any,\r\n resource_2: any,\r\n remark: string,\r\n cancelNewAppointmentData: any,\r\n) => {\r\n const appointments: any[] = [];\r\n\r\n const request = {\r\n method: 'POST',\r\n url: 'Appointment',\r\n };\r\n\r\n if (cancelNewAppointmentData.data?.contained) {\r\n /* Ersatztermin Variante */\r\n let mResource;\r\n if (resource.status === 'booked' || resource.status === 'fulfilled') {\r\n mResource = produce(resource_2, (draft: any) => {\r\n draft.comment = remark;\r\n draft.status = resource.status;\r\n draft.contained = resource;\r\n });\r\n } else if (resource_2.status === 'booked' || resource_2.status === 'fulfilled') {\r\n mResource = produce(resource, (draft: any) => {\r\n draft.comment = remark;\r\n draft.status = resource_2.status;\r\n draft.contained = resource_2;\r\n });\r\n }\r\n\r\n appointments.push({\r\n request: request,\r\n resource: mResource,\r\n });\r\n } else {\r\n /* Normale Variante */\r\n const mResource = produce(resource, (draft: any) => {\r\n draft.comment = remark;\r\n draft.status = 'booked';\r\n });\r\n const mResource_2 = produce(resource_2, (draft: any) => {\r\n draft.comment = remark;\r\n draft.status = 'booked';\r\n });\r\n\r\n appointments.push({\r\n request: request,\r\n resource: mResource,\r\n });\r\n appointments.push({\r\n request: request,\r\n resource: mResource_2,\r\n });\r\n }\r\n\r\n const trBunde = {\r\n resourceType: 'Bundle',\r\n entry: appointments,\r\n type: 'transaction',\r\n };\r\n\r\n const config = {\r\n ...getFHIRConfig(state.sessionId),\r\n };\r\n\r\n return await fhir(config)\r\n .transaction({\r\n type: 'Bundle',\r\n id: Math.random().toString(),\r\n resource: trBunde,\r\n })\r\n .catch(function (e: any) {\r\n console.log('An error happened while updating Appointment: \\n', e);\r\n });\r\n\r\n // const mResource = produce(resource, (draft: any) => {\r\n // draft.comment = remark;\r\n // });\r\n\r\n // return await fhir(getFHIRConfig(state.sessionId))\r\n // .create({\r\n // type: 'Appointment',\r\n // resource: mResource,\r\n // })\r\n // .catch(function (e: any) {\r\n // console.log('An error happened while updating Appointment: \\n', e);\r\n // });\r\n};\r\n\r\nexport const cancelAppointment = async (\r\n sessionId: string,\r\n id: string,\r\n comment: string,\r\n alertdispatch: React.Dispatch,\r\n) => {\r\n const cmt = comment ? comment : 'Absage von Patient';\r\n return await fhir(getFHIRConfig(sessionId))\r\n .update({\r\n type: 'Appointment',\r\n id,\r\n resource: {\r\n id,\r\n comment: cmt,\r\n status: 'cancelled',\r\n resourceType: 'Appointment',\r\n },\r\n })\r\n .catch(function (e: any) {\r\n responseErrorHandling({\r\n response: e,\r\n alertdispatch: alertdispatch,\r\n alertMessage: {\r\n alertTitle: 'Termin stornieren',\r\n alertTxt: 'Es ist ein Fehler beim stornieren des Termins aufgetreten',\r\n alertType: AlertType.error,\r\n onHide: AlertOnHide.onlyClose,\r\n },\r\n });\r\n });\r\n};\r\n\r\nexport const structureAppointments = (appointments: IAppointment[]) => {\r\n const resultsUpcomming: IAppointmentResult[] = [];\r\n const resultsPast: IAppointmentResult[] = [];\r\n\r\n const todayAppt: IAppointment[] = [];\r\n const futureAppt: IAppointment[] = [];\r\n const plannedWithoutDateAppt: IAppointment[] = [];\r\n const pastAppt: IAppointment[] = [];\r\n const incompleteAppt: IAppointment[] = [];\r\n const incompleteApptPast: IAppointment[] = [];\r\n let incompleteApptTotal: IAppointment[] = [];\r\n const canceledAppt: IAppointment[] = [];\r\n\r\n const today = moment();\r\n // console.log('today: ', today.format());\r\n\r\n appointments.forEach((item) => {\r\n const appointment = item.resource;\r\n const dateStart = moment(appointment.start);\r\n const dateEnd = moment(appointment.end);\r\n\r\n // console.log('appointment dateEnd: ', dateEnd.format());\r\n // console.log('same? ', dateEnd.isBefore(today, 'hour'));\r\n\r\n if (appointment.status === appointmentStatus.enteredInError) {\r\n if (appointment.start === undefined || dateStart.isSame(today, 'day') || dateStart.isAfter(today)) {\r\n incompleteAppt.push(appointment);\r\n } else {\r\n incompleteApptPast.push(appointment);\r\n }\r\n incompleteApptTotal = incompleteAppt.concat(incompleteApptPast);\r\n } else if (appointment.status === appointmentStatus.cancelled) {\r\n canceledAppt.push(appointment);\r\n } else if (appointment.start === undefined) {\r\n plannedWithoutDateAppt.push(appointment);\r\n } else {\r\n // if (dateStart.isSame(today) || (dateStart.isSameOrAfter(today) && dateEnd.isBefore(today))) {\r\n if (dateStart.isSame(today, 'day')) {\r\n todayAppt.push(appointment);\r\n } else if (dateStart.isAfter(today) && dateEnd.isAfter(today)) {\r\n futureAppt.push(appointment);\r\n } else if (dateStart.isBefore(today) && dateEnd.isSameOrAfter(today)) {\r\n todayAppt.push(appointment);\r\n } else {\r\n pastAppt.push(appointment);\r\n }\r\n }\r\n });\r\n\r\n resultsUpcomming.push({\r\n key: 'Heute (' + todayAppt.length + ')',\r\n data: todayAppt,\r\n });\r\n resultsUpcomming.push({\r\n key: 'Kommende Termine (' + futureAppt.length + ')',\r\n data: futureAppt,\r\n });\r\n resultsUpcomming.push({\r\n key: 'Geplante Termine ohne Uhrzeit (' + plannedWithoutDateAppt.length + ')',\r\n data: plannedWithoutDateAppt,\r\n });\r\n\r\n resultsUpcomming.push({\r\n key: 'Unvollständige Termine (' + incompleteAppt.length + ')',\r\n // data: incompleteAppt,\r\n data: incompleteApptTotal,\r\n });\r\n\r\n resultsPast.push({\r\n key: 'Vergangene Termine (' + pastAppt.length + ')',\r\n data: pastAppt,\r\n });\r\n\r\n resultsPast.push({\r\n key: 'Abgesagte Termine (' + canceledAppt.length + ')',\r\n data: canceledAppt,\r\n });\r\n\r\n // resultsUpcomming.forEach((obj) => obj.data.forEach((app) => (app.isCancelable = true)));\r\n resultsUpcomming.forEach((obj) => {\r\n obj.data.forEach((app) => {\r\n /* if appointment is an incomplete appointment, check if cancellable, otherwise an upcomming appointment is always cancellable*/\r\n if (app.status === appointmentStatus.enteredInError) {\r\n app.isInError = true;\r\n app.extension.forEach((ext: any) => {\r\n if (ext.url.endsWith('isCancellable')) {\r\n app.isCancelable = ext.valueBoolean;\r\n }\r\n });\r\n } else {\r\n app.isCancelable = true;\r\n }\r\n });\r\n });\r\n\r\n resultsPast.forEach((obj) => {\r\n obj.data.forEach((app) => {\r\n /* if appointment is an incomplete appointment, check if cancellable, otherwise an upcomming appointment is always cancellable*/\r\n if (app.status === appointmentStatus.enteredInError) {\r\n app.isInError = true;\r\n app.extension.forEach((ext: any) => {\r\n if (ext.url.endsWith('isCancellable')) {\r\n app.isCancelable = ext.valueBoolean;\r\n }\r\n });\r\n } else {\r\n app.isCancelable = false;\r\n }\r\n });\r\n });\r\n\r\n // console.log('upcoming ', resultsUpcomming);\r\n // console.log('resultsPast', resultsPast);\r\n\r\n return [resultsUpcomming, resultsPast];\r\n};\r\n","import { createContext } from 'react';\r\nimport { IURLToCallResponse } from '../container/Splashscreen/CheckInSplashscreen';\r\n\r\nexport type InitialCheckInType = {\r\n urlToCallResponse: IURLToCallResponse;\r\n key: string;\r\n reason: string;\r\n requesttype: string;\r\n wpName: string;\r\n userId?: string;\r\n t0?: string;\r\n otp?: string;\r\n};\r\n\r\nexport const initialCheckInState = {\r\n urlToCallResponse: {\r\n state: '',\r\n url: '',\r\n eGK: '',\r\n kvBarcode: '',\r\n birthday: '',\r\n city: '',\r\n country: '',\r\n firstName: '',\r\n gender: '',\r\n street: '',\r\n houseNumber: '',\r\n nameLast: '',\r\n zip: '',\r\n insuranceNr: '',\r\n insuranceName: '',\r\n language: '',\r\n },\r\n key: '',\r\n reason: '',\r\n requesttype: '',\r\n wpName: '',\r\n userId: '',\r\n t0: '',\r\n otp: '',\r\n};\r\n\r\nconst CheckInContext = createContext<{\r\n checkinstate: InitialCheckInType;\r\n checkindispatch: React.Dispatch;\r\n}>({\r\n checkinstate: initialCheckInState,\r\n checkindispatch: () => null,\r\n});\r\n\r\nexport default CheckInContext;\r\n"],"sourceRoot":""}