{"version":3,"sources":["components/Calendar/TimeSlots.tsx","hooks/useAppProperties.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","hooks/usePersonalData.ts","services/fhir/FHIRDiagnosticReports.ts","components/Div/StyledDiv.tsx","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/Text/TextSwitch.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","useAppProperties","apdispatch","themeContext","ThemeContext","screenSize","useScreenResolution","getAndSetAppProperties","useCallback","getAppProperties","propRes","setDataFromAppProperties","getImpressum","impressumLink","impressum","datenschutzLink","textColor","button","secondary","color","isExtendedPhysicians","extendedPhysicians","countDaysToVisualize","isFullscreenMode","fullscreenMode","enableFullscreenMode","disableFullscreenMode","getCountDaysToVisualize","getPossibleCountries","possibleCountries","split","ErrorBoundary","state","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","doHTML","dangerouslySetInnerHTML","__html","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","city","country","email","firstName","gender","lastName","phone","street","zip","insuranceNr","insuranceName","language","mobilePhone","academicTitle","privacyTerms","RegistrationVisibleFields","RegistrationReadOnlyFields","allowAccountAfterAppointment","allowAccountCreateDirect","allowAppointments","allowAppointmentsEinweiser","allowAppointmentsWithoutLogin","allowDirectAppointments","allowDirectAppointmentsWithoutLogin","allowLogin","allowVideo","allowVideoWithoutLogin","allowAccountInAnmeldeworkflow","brandingBytes","brandigType","extraLinks","customTexts","showMobileQR","jitsiDomain","jitsiOptions","anmeldeContexts","allowChat","googleAnalyticsID","tileTexts","smtpUser","checkinReducer","urlToCallResponse","url","eGK","kvBarcode","birthday","houseNumber","nameLast","key","reason","requesttype","wpName","userId","t0","otp","dokumenteReducer","filedata","name","lastModified","lastModifiedDate","title","conclusion","uploaded","Date","executeRuleReducer","ruleName","ruleParam","persInfo","iframeReducer","src","callingPage","loginReducer","isLoggedIn","practitionerRoleId","userName","sessionId","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","activeUserId","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","selectedDepartment","hdBooking","selectedReasonHints","selectedInsurance","selectedPhysician","selectedAppointmentType","countAPKs","oneMacro","macroCode","macroType","selectedTimeslots","timeslotClicked","selectedResources","renewAppointment","personalData","telephone","housenr","username","password","profilePhoto","plannedStudies","enrollData","personalDataPhysPat","remark","earlierAppointmentWanted","ambId","enrollCode","maId","patNameFirst","patNameLast","scheduleTime","fhir","participant","serviceType","waitNumber","requestFromDirectLink","isToday","res","changePersonalData","canceledAppointment","journeyData","site","hints","code","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","length","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","initialThemeState","themestate","themedispatch","initialExecuteRuleState","executerulestate","executeruledispatch","initialSigPadState","sigpadstate","sigpaddispatch","initialIFrameState","iframestate","iframedispatch","initialCheckInState","checkinstate","checkindispatch","useLocation","refreshPage","getProperties","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","usePersonalData","LoginContext","CheckInContext","shouldCreateAccount","getAndSetPersonalData","getPractitionerResource","getPatientResource","patdata","patdataExt","extractPatData","emailHome","telephoneHome","streetHome","houseNrHome","cityHome","zipHome","readCardDataAndSetPersonalData","readCardData","readCardResponse","readKVDataAndSetPersonalData","txt","interpreteKVParams","response","barcode","resetPersonalData","resetPersonalDataPhysPat","getPlannedStudyParticipation","studyCode","study","find","p","participate","getEnrollData","selectedResource","produce","draft","nameFirst","toString","birthdate","streetNr","bsnr","tel","getLocationCareUnitIdFromResource","getParticipantIdFromResource","departmentId","getLocationDepartmentIdFromResource","roomId","getLocationRoomIdFromResource","createAccount","accountName","accountPWD","selectedPhysicianId","selectedAptType","getEnrollDataPhysPat","enrollDataPhysPat","require","DIAGNOSTIC_REPORT","getDiagnosticReportsOfPatient","getFHIRConfig","query","patient","catch","responseErrorHandling","getDiagnosticReportsByCategory","category","_targetDevice","getDiagnosticReport","documentId","authData","myAuthData","read","uploadPDF","file","dataTrim","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","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","EmbeddedPDFContainer","EmbeddedPDFFooter","EmbeddedPDFContent","EmbeddedSignDocumentModalContainer","SpaceBetweenDiv","lineHeight","ImpressumBottom","ContentWithoutImpressum","CenterPositionFixedDiv","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","makeOption","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","TextSwitch","textParts","setText","intervalId","setInterval","indexOf","nextIndex","switchText","intervalSec","clearInterval","EncounterTitle","smallScreen","overflow","PatientSwitch","allPatients","setAllPatients","setNewPatient","usePatientSwitch","getDropdownItems","handlePatSwitch","pat","allItems","Array","isArray","Dropdown","Item","isInNeuesProfilPhysLogin","Toggle","margintop","Menu","ProfileSwitch","allProfiles","setAllProfiles","useProfileSwitch","setSecurityItems","getUserId","handleProfileSwitch","profileName","setActivePatId","SUCCESS","studyName","PROFILE_HOME","useNavbar","showProfileSwitch","setShowProfileSwitch","showPatSwitch","setShowPatSwitch","NavbarMenu","toggleButtonRef","showPatientSwitch","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","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","TerminueberpruefenTile","TUEBEFORE","TUEAFTER","mainWindow","firstInp","querySelector","focus","firstButton","CheckInSplashscreenMultifragebogenWaiting","setFoundData","multifragebogen","setMultifragebogen","startListening","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","initialAnswers","setInitialAnswers","clickedSubmit","setClickedSubmit","clickedSave","setClickedSave","questionnaireSendResponse","setQuestionnaireSendResponse","showRequiredMessage","setShowRequiredMessage","scrollToRequiredMessage","setScrollToRequiredMessage","scrollToTop","setScrollToTop","isExternalQuest","setIsExternalQuest","requiredMessageRef","errorMessageRef","topRef","qDisplayBorderPadding","showSaveToast","setShowSaveToast","showErrorToast","setShowErrorToast","firstSave","setFirstSave","validate","setValidate","tempTime","setTempTime","setTargetPatId","tempDateTimeDate","setTempDateTimeDate","tempDateTimeTime","setTempDateTimeTime","finishButtonName","setFinishButtonName","postStoreDocumentRefId","setPostStoreDocumentRefId","pdfModalShow","setPdfModalShow","embeddedPdfModalShow","setEmbeddedPdfModalShow","allValues","base64Arr","showForeignQRModal","setShowForeignQRModal","useLoadQuestionnaireAnswers","setSelectedQuestionnaire","setQuestionnaireBody","loadQuestionnaireAnswers","setSelectedQuestionnaireAnswers","setQuestionnaireData","tempAnswers","allDecItems","getAllItems","tempValue","answer","valueDecimal","precision","getExtensionPrecision","getAnswers","rep","qResource","getQuestionnaireResourceFromRequest","qResponse","getQuestionnaireResponseResourceFromRequest","qDiagnosticReport","getQuestionnaireDiagnosticReportFromRequest","visualPDF","setAllSteps","mainDiv","fButtonName","getExtensionFinishButtonName","getExternalQuest","reset","respJson","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","lidInitial","getAnswerIntegerOption","valueInt","setAnswerDecimalOption","setValueDecimalLocal","valueDecimalLocal","dotOrComma","toLocaleString","getDotOrCommaForDecimalLocal","convertToLocalString","decimalVal","minimumFractionDigits","maximumFractionDigits","getAnswerDecimalOption","getValueDecimalLocal","valueDec","valueDecLocal","setAnswerTextOption","setAnswerCovidQRValues","pictureLinkId","pictureBase64Arr","idValueArray","valueAttachmentArr","attachment","valueAttachment","getAnswerTextOption","deleteAnswerEntryWithCopy","setAnswerChoiceOption","getAnswerBooleanOption","setAnswerAttachment","valueBase64","getAnswerOpenChoiceOptions","valueCodingEntries","isAnswerOpenChoiceOptionSet","getAnswerChoiceOption","getAnswerChoiceOptionExtended","getAnswerDropdownOption","getTypeOfQuestionnaireItem","getQuestionnaireItem","itemEnableWhen","questionLinkId","question","answerBoolean","answerCoding","linkIdToFind","answersToSearch","answ","linkIdPresent","isTempLinkIdPresent","isAnswerChoiceOptionSet","selectedCode","isSet","getCurrentAnswer","displayType","getExtensionClassValue","getExtensionDisplayType","reqItems","getRequiredItems","questionLinkIds","requiredValues","operators","currentAnswer","requiredAnswer","foundMatchInArray","operator","irequiredAnswer","isTrue","andExp","getAndExpressionAsArray","qMultiEnableWhenHandling","array1","array2","allAnswerLinkIdsPresent","enableWhenAnswers","currentAnswers","every","v","checkInput","input","regex","test","roundDecimalInput","modifyTimeInput","inputNumber","minVal","maxVal","setAnswerAfterCheck","dateTimeDate","myItem","stepToCheck","stepHasInvalidState","RiTreasureMapFill","qTypeInteger","getExtensionMinValue","getExtensionMaxValue","labelLeft","getExtensionLabelLeft","labelRight","getExtensionLabelRight","presetValue","presetValueCmd","getExtensionPresetValue","_val","commandSplit","command","commandVals","sum","commandValArr","choiceAnswer","answerVal","interpretPresetValue","isInteger","tooltip","getExtensionFieldNote","isSlider","getExtensionStepWidth","skipKA","extensionSkipKA","labelKA","getExtensionLabelKA","multiCol","marks","s","noInfoCheckBoxVals","sliderColor","Slider","ThumbComponent","valueLabelDisplay","newVal","NoInfoCheckbox","initialInteger","getAnswerInitialIntegerOption","feedbackMessage","fieldWidthType","getExtensionAppearanceValue","fieldWidth","wrapperWidth","invalid","currentSetAnswer","decimalInput","feedbackMessageRange","onBlur","qTypeString","maxLengthStr","inputWidth","appearance","initialString","valueStr","getAnswerInitialTextOption","qTypeChoice","allOptions","rowLimit_sm","rowLimit_lg","rowLimit_md","rowLimit_xs","rowLimit_xl","option","transform","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","rows","qTypeText","initialAttachment","imageWidth","getExtensionImageWidth","imageHeight","getExtensionImageHeight","descAppearance","getExtensionImageDescAppearance","imageTooltip","imageDescription","alignFromClassName","imageDescDirection","displayFlex","parentDivDirection","alignItemsFloatDiv","floatDivWidth","qTypeAttachment","questions","qi","useEmbeddedPDF","spd","pdfShowData","embeddedPdfShowData","embeddedPdfShow","setPDFShow","getPostStoreDocumentPDF","qContent","showPdf","responseMessage","errorMsg","Big","handleButtonPreviousStep","handleButtonNextStep","questionnaireMainPage","disableTempStorage","isDisableTempStorage","noGutters","ConfirmationToast","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","trj","turl","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","getNavTextSize","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.b82f4923.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 { useCallback, useContext } from 'react';\r\nimport { ThemeContext } from 'styled-components';\r\nimport AppPropsContext from '../context/appPropsContext';\r\nimport { getAppProperties } from '../services/RestServices';\r\nimport { setDataFromAppProperties } from '../utils/pcpUtils';\r\nimport useScreenResolution from './useScreenResolution';\r\n\r\nexport const useAppProperties = () => {\r\n const { apstate, apdispatch } = useContext(AppPropsContext);\r\n\r\n const themeContext = useContext(ThemeContext);\r\n\r\n const screenSize = useScreenResolution();\r\n\r\n const getAndSetAppProperties = useCallback(async () => {\r\n const propRes = await getAppProperties();\r\n if (propRes) {\r\n setDataFromAppProperties(propRes, apdispatch);\r\n } else {\r\n // setError(true); //TODO: add error handling\r\n }\r\n }, [apdispatch]);\r\n\r\n const getImpressum = () => {\r\n const impressum = {\r\n impressumLink: apstate.impressum.impressumLink,\r\n datenschutzLink: apstate.impressum.datenschutzLink,\r\n textColor: themeContext.button.secondary.color,\r\n };\r\n return impressum;\r\n };\r\n\r\n const getCountDaysToVisualize = () => {\r\n const MAX_DAYS_SMALL_DEVICES = 3;\r\n const MAX_SCREEN_WIDTH_SMALL_DEVICES = 414;\r\n\r\n if (!apstate.countDaysToVisualize) {\r\n return 0;\r\n } else if (screenSize.width >= 768 && screenSize.width < 890) {\r\n return MAX_DAYS_SMALL_DEVICES;\r\n } else if (screenSize.width > MAX_SCREEN_WIDTH_SMALL_DEVICES) {\r\n return apstate.countDaysToVisualize;\r\n } else if (apstate.countDaysToVisualize && apstate.countDaysToVisualize < MAX_DAYS_SMALL_DEVICES) {\r\n return apstate.countDaysToVisualize;\r\n } else {\r\n return MAX_DAYS_SMALL_DEVICES;\r\n }\r\n };\r\n\r\n /**\r\n * use extendedPhysicians in Booking (physicians and timeslots in one step)\r\n *\r\n * @returns true if extendedPhysicians is true and countDaysToVisualize is greater than 0\r\n */\r\n const isExtendedPhysicians = () => {\r\n if (\r\n apstate.extendedPhysicians &&\r\n apstate.extendedPhysicians === true &&\r\n apstate.countDaysToVisualize &&\r\n apstate.countDaysToVisualize > 0\r\n ) {\r\n return true;\r\n }\r\n\r\n return false;\r\n };\r\n\r\n const isFullscreenMode = () => {\r\n return apstate.fullscreenMode;\r\n };\r\n\r\n const enableFullscreenMode = () => {\r\n apdispatch({ type: 'SET_FULLSCREEN_MODE', fullscreenMode: true });\r\n };\r\n\r\n const disableFullscreenMode = () => {\r\n apdispatch({ type: 'SET_FULLSCREEN_MODE', fullscreenMode: false });\r\n };\r\n\r\n const getPossibleCountries = () => {\r\n let countries;\r\n if (apstate.possibleCountries) {\r\n countries = apstate.possibleCountries.split(',');\r\n } else {\r\n countries = ['Deutschland', 'Österreich', 'Schweiz'];\r\n }\r\n return countries;\r\n };\r\n\r\n return {\r\n getAndSetAppProperties,\r\n getImpressum,\r\n isExtendedPhysicians,\r\n isFullscreenMode,\r\n enableFullscreenMode,\r\n disableFullscreenMode,\r\n getCountDaysToVisualize,\r\n getPossibleCountries,\r\n };\r\n};\r\n","import { Component } from 'react';\r\n\r\nexport class ErrorBoundary extends Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = { hasError: false, error: '', errorInfo: '' };\r\n }\r\n\r\n static getDerivedStateFromError() {\r\n // Update state so the next render will show the fallback UI.\r\n return { hasError: true };\r\n }\r\n\r\n componentDidCatch(error, errorInfo) {\r\n // You can also log the error to an error reporting service\r\n // logErrorToMyService(error, errorInfo);\r\n // console.log('ErrorBoundary: error = ' + error + ', errorInfo = ' + errorInfo);\r\n let stack = '';\r\n if (errorInfo.componentStack) {\r\n stack = errorInfo.componentStack;\r\n }\r\n\r\n this.setState({\r\n error: error,\r\n errorInfo: stack,\r\n });\r\n }\r\n\r\n render() {\r\n if (this.state.hasError) {\r\n // You can render any custom fallback UI\r\n return (\r\n
\r\n

Something went wrong.

\r\n

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

\r\n

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

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

{alertstate.alertMessage.alertTxt}

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

{alertstate.alertMessage.alertTxt}

;\r\n };\r\n\r\n return (\r\n \r\n \r\n {alertstate.alertMessage.doBig ? (\r\n \r\n {alertstate.alertMessage.alertTitle}\r\n \r\n ) : (\r\n {alertstate.alertMessage.alertTitle}\r\n )}\r\n \r\n \r\n {getAlertBody()}\r\n \r\n \r\n {alertstate.alertMessage.buttonName}\r\n \r\n \r\n );\r\n};\r\n\r\nexport default AlertModal;\r\n","import { AlertOnHide, AlertType, InitialAlertType } from './alertContext';\r\n\r\ntype Action =\r\n | {\r\n type: 'SETSHOWALERTMESSAGE';\r\n alertMessage: {\r\n showModal: boolean;\r\n alertTitle: string;\r\n alertTxt: string;\r\n alertType: AlertType;\r\n onHide: AlertOnHide;\r\n onHideCustom: () => void;\r\n buttonName?: string;\r\n doBig?: boolean;\r\n doHTML?: boolean;\r\n };\r\n }\r\n | {\r\n type: 'RESETSHOWALERTMESSAGE';\r\n };\r\n\r\nexport const alertReducer = (state: InitialAlertType, action: Action) => {\r\n switch (action.type) {\r\n case 'SETSHOWALERTMESSAGE':\r\n return {\r\n ...state,\r\n alertMessage: {\r\n showModal: action.alertMessage.showModal,\r\n alertTitle: action.alertMessage.alertTitle,\r\n alertTxt: action.alertMessage.alertTxt,\r\n alertType: action.alertMessage.alertType,\r\n onHide: action.alertMessage.onHide,\r\n onHideCustom: action.alertMessage.onHideCustom,\r\n buttonName: action.alertMessage.buttonName ? action.alertMessage.buttonName : 'OK',\r\n doBig: action.alertMessage.doBig ? true : false,\r\n doHTML: action.alertMessage.doHTML ? true : false,\r\n },\r\n };\r\n case 'RESETSHOWALERTMESSAGE':\r\n return {\r\n ...state,\r\n alertMessage: {\r\n showModal: false,\r\n alertTitle: '',\r\n alertTxt: '',\r\n alertType: AlertType.info,\r\n onHide: AlertOnHide.onlyClose,\r\n onHideCustom: undefined,\r\n buttonName: 'OK',\r\n doBig: false,\r\n doHTML: false,\r\n },\r\n };\r\n default:\r\n return state;\r\n }\r\n};\r\n","import {\r\n IAnmeldeContexts,\r\n IAppointmentGeneral,\r\n IAppointmentSummary,\r\n ICustomTexts,\r\n IImpressum,\r\n IRegistrationFields,\r\n} from '../context/appPropsContext';\r\nimport { InitialAppPropsType } from './appPropsContext';\r\nimport { ILink } from './loginContext';\r\n\r\ntype Action =\r\n | {\r\n type: 'SETAPPPROPS';\r\n Appointment: IAppointmentGeneral;\r\n AppointmentSummary: IAppointmentSummary;\r\n RegistrationMandFields: IRegistrationFields;\r\n RegistrationVisibleFields: IRegistrationFields;\r\n RegistrationReadOnlyFields: IRegistrationFields;\r\n allowAccountAfterAppointment: boolean;\r\n allowAccountCreateDirect: boolean;\r\n allowAppointments: boolean;\r\n allowAppointmentsEinweiser: boolean;\r\n allowAppointmentsWithoutLogin: boolean;\r\n allowDirectAppointments: boolean;\r\n allowDirectAppointmentsWithoutLogin: boolean;\r\n allowLogin: boolean;\r\n allowVideo: boolean;\r\n allowVideoWithoutLogin: boolean;\r\n allowAccountInAnmeldeworkflow: boolean;\r\n brandingBytes: string;\r\n brandigType: string;\r\n extraLinks: Array;\r\n customTexts: ICustomTexts;\r\n showMobileQR: boolean;\r\n jitsiDomain: string;\r\n jitsiOptions: any;\r\n impressum: IImpressum;\r\n anmeldeContexts: Array;\r\n countDaysToVisualize: number;\r\n extendedPhysicians: boolean;\r\n allowChat: boolean;\r\n googleAnalyticsID?: string;\r\n tileTexts?: any;\r\n smtpUser?: string;\r\n possibleCountries: string;\r\n }\r\n | { type: 'SET_FULLSCREEN_MODE'; fullscreenMode: boolean };\r\n\r\nexport const appPropsReducer = (state: InitialAppPropsType, action: Action) => {\r\n switch (action.type) {\r\n case 'SETAPPPROPS':\r\n return {\r\n ...state,\r\n appPropsSet: true,\r\n Appointment: {\r\n skipBehandlersuche: action.Appointment.skipBehandlersuche,\r\n },\r\n AppointmentSummary: {\r\n behandler:\r\n action.AppointmentSummary.behandler === null\r\n ? state.AppointmentSummary.behandler\r\n : action.AppointmentSummary.behandler,\r\n fach:\r\n action.AppointmentSummary.fach === null\r\n ? state.AppointmentSummary.fach\r\n : action.AppointmentSummary.fach,\r\n pflege:\r\n action.AppointmentSummary.pflege === null\r\n ? state.AppointmentSummary.pflege\r\n : action.AppointmentSummary.pflege,\r\n raum:\r\n action.AppointmentSummary.raum === null\r\n ? state.AppointmentSummary.raum\r\n : action.AppointmentSummary.raum,\r\n standort:\r\n action.AppointmentSummary.standort === null\r\n ? state.AppointmentSummary.standort\r\n : action.AppointmentSummary.standort,\r\n },\r\n RegistrationMandFields: {\r\n birthDate:\r\n action.RegistrationMandFields.birthDate === null\r\n ? state.RegistrationMandFields.birthDate\r\n : action.RegistrationMandFields.birthDate,\r\n city:\r\n action.RegistrationMandFields.city === null\r\n ? state.RegistrationMandFields.city\r\n : action.RegistrationMandFields.city,\r\n country:\r\n action.RegistrationMandFields.country === null\r\n ? state.RegistrationMandFields.country\r\n : action.RegistrationMandFields.country,\r\n email:\r\n action.RegistrationMandFields.email === null\r\n ? state.RegistrationMandFields.email\r\n : action.RegistrationMandFields.email,\r\n firstName:\r\n action.RegistrationMandFields.firstName === null\r\n ? state.RegistrationMandFields.firstName\r\n : action.RegistrationMandFields.firstName,\r\n gender:\r\n action.RegistrationMandFields.gender === null\r\n ? state.RegistrationMandFields.gender\r\n : action.RegistrationMandFields.gender,\r\n lastName:\r\n action.RegistrationMandFields.lastName === null\r\n ? state.RegistrationMandFields.lastName\r\n : action.RegistrationMandFields.lastName,\r\n phone:\r\n action.RegistrationMandFields.phone === null\r\n ? state.RegistrationMandFields.phone\r\n : action.RegistrationMandFields.phone,\r\n street:\r\n action.RegistrationMandFields.street === null\r\n ? state.RegistrationMandFields.street\r\n : action.RegistrationMandFields.street,\r\n zip:\r\n action.RegistrationMandFields.zip === null\r\n ? state.RegistrationMandFields.zip\r\n : action.RegistrationMandFields.zip,\r\n insuranceNr:\r\n action.RegistrationMandFields.insuranceNr === null\r\n ? state.RegistrationMandFields.insuranceNr\r\n : action.RegistrationMandFields.insuranceNr,\r\n insuranceName:\r\n action.RegistrationMandFields.insuranceName === null\r\n ? state.RegistrationMandFields.insuranceName\r\n : action.RegistrationMandFields.insuranceName,\r\n language:\r\n action.RegistrationMandFields.language === null\r\n ? state.RegistrationMandFields.language\r\n : action.RegistrationMandFields.language,\r\n mobilePhone:\r\n action.RegistrationMandFields.mobilePhone === null\r\n ? state.RegistrationMandFields.mobilePhone\r\n : action.RegistrationMandFields.mobilePhone,\r\n academicTitle:\r\n action.RegistrationMandFields.academicTitle === null\r\n ? state.RegistrationMandFields.academicTitle\r\n : action.RegistrationMandFields.academicTitle,\r\n privacyTerms:\r\n action.RegistrationMandFields.privacyTerms === null\r\n ? state.RegistrationMandFields.privacyTerms\r\n : action.RegistrationMandFields.privacyTerms,\r\n },\r\n RegistrationVisibleFields: {\r\n birthDate:\r\n action.RegistrationVisibleFields.birthDate === null\r\n ? state.RegistrationVisibleFields.birthDate\r\n : action.RegistrationVisibleFields.birthDate,\r\n city:\r\n action.RegistrationVisibleFields.city === null\r\n ? state.RegistrationVisibleFields.city\r\n : action.RegistrationVisibleFields.city,\r\n country:\r\n action.RegistrationVisibleFields.country === null\r\n ? state.RegistrationVisibleFields.country\r\n : action.RegistrationVisibleFields.country,\r\n email:\r\n action.RegistrationVisibleFields.email === null\r\n ? state.RegistrationVisibleFields.email\r\n : action.RegistrationVisibleFields.email,\r\n firstName:\r\n action.RegistrationVisibleFields.firstName === null\r\n ? state.RegistrationVisibleFields.firstName\r\n : action.RegistrationVisibleFields.firstName,\r\n gender:\r\n action.RegistrationVisibleFields.gender === null\r\n ? state.RegistrationVisibleFields.gender\r\n : action.RegistrationVisibleFields.gender,\r\n lastName:\r\n action.RegistrationVisibleFields.lastName === null\r\n ? state.RegistrationVisibleFields.lastName\r\n : action.RegistrationVisibleFields.lastName,\r\n phone:\r\n action.RegistrationVisibleFields.phone === null\r\n ? state.RegistrationVisibleFields.phone\r\n : action.RegistrationVisibleFields.phone,\r\n street:\r\n action.RegistrationVisibleFields.street === null\r\n ? state.RegistrationVisibleFields.street\r\n : action.RegistrationVisibleFields.street,\r\n zip:\r\n action.RegistrationVisibleFields.zip === null\r\n ? state.RegistrationVisibleFields.zip\r\n : action.RegistrationVisibleFields.zip,\r\n insuranceNr:\r\n action.RegistrationVisibleFields.insuranceNr === null\r\n ? state.RegistrationVisibleFields.insuranceNr\r\n : action.RegistrationVisibleFields.insuranceNr,\r\n insuranceName:\r\n action.RegistrationVisibleFields.insuranceName === null\r\n ? state.RegistrationVisibleFields.insuranceName\r\n : action.RegistrationVisibleFields.insuranceName,\r\n language:\r\n action.RegistrationVisibleFields.language === null\r\n ? state.RegistrationVisibleFields.language\r\n : action.RegistrationVisibleFields.language,\r\n mobilePhone:\r\n action.RegistrationVisibleFields.mobilePhone === null\r\n ? state.RegistrationVisibleFields.mobilePhone\r\n : action.RegistrationVisibleFields.mobilePhone,\r\n academicTitle:\r\n action.RegistrationVisibleFields.academicTitle === null\r\n ? state.RegistrationVisibleFields.academicTitle\r\n : action.RegistrationVisibleFields.academicTitle,\r\n privacyTerms:\r\n action.RegistrationVisibleFields.privacyTerms === null\r\n ? state.RegistrationVisibleFields.privacyTerms\r\n : action.RegistrationVisibleFields.privacyTerms,\r\n },\r\n RegistrationReadOnlyFields: {\r\n birthDate:\r\n action.RegistrationReadOnlyFields.birthDate === null\r\n ? state.RegistrationReadOnlyFields.birthDate\r\n : action.RegistrationReadOnlyFields.birthDate,\r\n city:\r\n action.RegistrationReadOnlyFields.city === null\r\n ? state.RegistrationReadOnlyFields.city\r\n : action.RegistrationReadOnlyFields.city,\r\n country:\r\n action.RegistrationReadOnlyFields.country === null\r\n ? state.RegistrationReadOnlyFields.country\r\n : action.RegistrationReadOnlyFields.country,\r\n email:\r\n action.RegistrationReadOnlyFields.email === null\r\n ? state.RegistrationReadOnlyFields.email\r\n : action.RegistrationReadOnlyFields.email,\r\n firstName:\r\n action.RegistrationReadOnlyFields.firstName === null\r\n ? state.RegistrationReadOnlyFields.firstName\r\n : action.RegistrationReadOnlyFields.firstName,\r\n gender:\r\n action.RegistrationReadOnlyFields.gender === null\r\n ? state.RegistrationReadOnlyFields.gender\r\n : action.RegistrationReadOnlyFields.gender,\r\n lastName:\r\n action.RegistrationReadOnlyFields.lastName === null\r\n ? state.RegistrationReadOnlyFields.lastName\r\n : action.RegistrationReadOnlyFields.lastName,\r\n phone:\r\n action.RegistrationReadOnlyFields.phone === null\r\n ? state.RegistrationReadOnlyFields.phone\r\n : action.RegistrationReadOnlyFields.phone,\r\n street:\r\n action.RegistrationReadOnlyFields.street === null\r\n ? state.RegistrationReadOnlyFields.street\r\n : action.RegistrationReadOnlyFields.street,\r\n zip:\r\n action.RegistrationReadOnlyFields.zip === null\r\n ? state.RegistrationReadOnlyFields.zip\r\n : action.RegistrationReadOnlyFields.zip,\r\n insuranceNr:\r\n action.RegistrationReadOnlyFields.insuranceNr === null\r\n ? state.RegistrationReadOnlyFields.insuranceNr\r\n : action.RegistrationReadOnlyFields.insuranceNr,\r\n insuranceName:\r\n action.RegistrationReadOnlyFields.insuranceName === null\r\n ? state.RegistrationReadOnlyFields.insuranceName\r\n : action.RegistrationReadOnlyFields.insuranceName,\r\n language:\r\n action.RegistrationReadOnlyFields.language === null\r\n ? state.RegistrationReadOnlyFields.language\r\n : action.RegistrationReadOnlyFields.language,\r\n mobilePhone:\r\n action.RegistrationReadOnlyFields.mobilePhone === null\r\n ? state.RegistrationReadOnlyFields.mobilePhone\r\n : action.RegistrationReadOnlyFields.mobilePhone,\r\n academicTitle:\r\n action.RegistrationReadOnlyFields.academicTitle === null\r\n ? state.RegistrationReadOnlyFields.academicTitle\r\n : action.RegistrationReadOnlyFields.academicTitle,\r\n privacyTerms:\r\n action.RegistrationReadOnlyFields.privacyTerms === null\r\n ? state.RegistrationReadOnlyFields.privacyTerms\r\n : action.RegistrationReadOnlyFields.privacyTerms,\r\n },\r\n allowAccountAfterAppointment: action.allowAccountAfterAppointment,\r\n allowAccountCreateDirect: action.allowAccountCreateDirect,\r\n allowAppointments: action.allowAppointments,\r\n allowAppointmentsEinweiser: action.allowAppointmentsEinweiser,\r\n allowAppointmentsWithoutLogin: action.allowAppointmentsWithoutLogin,\r\n allowDirectAppointments: action.allowDirectAppointments,\r\n allowDirectAppointmentsWithoutLogin: action.allowDirectAppointmentsWithoutLogin,\r\n allowLogin: action.allowLogin,\r\n allowVideo: action.allowVideo,\r\n allowVideoWithoutLogin: action.allowVideoWithoutLogin,\r\n allowAccountInAnmeldeworkflow: action.allowAccountInAnmeldeworkflow,\r\n brandingBytes: action.brandingBytes,\r\n brandigType: action.brandigType,\r\n extraLinks: action.extraLinks,\r\n customTexts: action.customTexts,\r\n showMobileQR: action.showMobileQR,\r\n jitsiDomain: action.jitsiDomain,\r\n jitsiOptions: action.jitsiOptions,\r\n impressum: action.impressum,\r\n anmeldeContexts: action.anmeldeContexts,\r\n countDaysToVisualize: action.countDaysToVisualize,\r\n extendedPhysicians: action.extendedPhysicians,\r\n allowChat: action.allowChat,\r\n googleAnalyticsID: action.googleAnalyticsID,\r\n tileTexts: action.tileTexts,\r\n smtpUser: action.smtpUser,\r\n possibleCountries: action.possibleCountries,\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 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 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 { createContext } from 'react';\r\n\r\nexport interface IQData {\r\n entry: IQDataEntry[];\r\n id: string;\r\n resourceType: string;\r\n type: string;\r\n}\r\n\r\nexport interface IQDataEntry {\r\n resource: IQResource[];\r\n}\r\n\r\nexport interface IQResource {\r\n id: string;\r\n item: IQMainItem[];\r\n name: string;\r\n resourceType: string;\r\n title: string;\r\n extension: IExtension[];\r\n status?: string;\r\n}\r\n\r\nexport interface IQBody {\r\n authored: string;\r\n context: {\r\n reference: string;\r\n };\r\n id: string;\r\n identifier: {\r\n system: string;\r\n value: string;\r\n };\r\n item: IQAnswers[];\r\n meta: {\r\n versionId: string;\r\n lastUpdated: string;\r\n };\r\n questionnaire: {\r\n reference: string;\r\n };\r\n resourceType: string;\r\n source: {\r\n reference: string;\r\n };\r\n status: string;\r\n subject: {\r\n reference: string;\r\n };\r\n}\r\n\r\nexport interface IExtension {\r\n url: string;\r\n valueString: string;\r\n valueBoolean?: boolean;\r\n valueReference: {\r\n reference: string;\r\n };\r\n}\r\n\r\nexport interface IQMainItem {\r\n item: IQItem[];\r\n linkId: string;\r\n text: string;\r\n type: string;\r\n}\r\n\r\nexport interface IAttachment {\r\n contentType: string;\r\n data: string;\r\n}\r\n\r\nexport interface IQItem {\r\n linkId: string;\r\n text: string;\r\n type: string;\r\n initialDate?: string;\r\n initialTime?: string;\r\n initialDateTime?: string;\r\n initialInteger?: string;\r\n initialCoding?: IQItemInitialChoiceOption;\r\n initialString?: string;\r\n initialAttachment?: IAttachment;\r\n modifierExtension?: IQItemExtension[];\r\n option?: IQItemChoiceOption[];\r\n extension?: IQItemExtension[];\r\n required?: boolean;\r\n enableWhen?: IQItemEnableWhen[];\r\n maxLength?: number;\r\n readOnly?: boolean;\r\n item?: IQItem[];\r\n}\r\n\r\nexport interface IQItemChoiceOption {\r\n modifierExtension?: IQOptionExtension[];\r\n valueCoding: {\r\n code: string;\r\n display: string;\r\n extension?: IQOptionExtension[];\r\n };\r\n}\r\n\r\nexport interface IQItemInitialChoiceOption {\r\n code: string;\r\n display: string;\r\n}\r\n\r\nexport interface IQItemExtension {\r\n url: string;\r\n valueString: string;\r\n valueDecimal?: number;\r\n valueInteger?: number;\r\n valueBoolean?: boolean;\r\n}\r\n\r\nexport interface IQOptionExtension {\r\n url: string;\r\n valueBoolean?: boolean;\r\n valueInteger?: number;\r\n}\r\n\r\nexport interface IQItemEnableWhen {\r\n hasAnswer: boolean;\r\n question: string;\r\n answerCoding: {\r\n code: string;\r\n };\r\n answerBoolean: boolean;\r\n modifierExtension?: IQItemExtension[];\r\n}\r\n\r\nexport interface IQAnswers {\r\n linkId: string;\r\n answer?: any; //IQAnswerValueCoding[] | IQAnswerValueInteger;\r\n}\r\n\r\nexport interface IQAnswerValueCoding {\r\n valueCoding: {\r\n code: string;\r\n display: string;\r\n extension?: IQOptionExtension[];\r\n };\r\n}\r\n\r\nexport interface IQAnswerValueInteger {\r\n valueInteger: number;\r\n}\r\n\r\nexport interface InitialQuestionnaireType {\r\n qData: IQData;\r\n selectedQuestionnaire: {\r\n resource: IQResource;\r\n };\r\n selectedAnswers: {\r\n item: IQAnswers[];\r\n };\r\n questionnaireBody: {\r\n data: IQBody;\r\n };\r\n isExternalRequest: boolean;\r\n externalUserId: string;\r\n externalOTP: string;\r\n externalT0: string;\r\n externalBaseURL: string;\r\n callingPage: string;\r\n encounterId: string;\r\n}\r\n\r\nexport const initialQuestionnaireState = {\r\n qData: {\r\n entry: [\r\n {\r\n resource: [\r\n {\r\n id: '',\r\n item: [\r\n {\r\n item: [\r\n {\r\n linkId: '',\r\n text: '',\r\n type: '',\r\n },\r\n ],\r\n linkId: '',\r\n text: '',\r\n type: '',\r\n },\r\n ],\r\n name: '',\r\n resourceType: '',\r\n title: '',\r\n extension: [\r\n {\r\n url: '',\r\n valueString: '',\r\n valueReference: {\r\n reference: '',\r\n },\r\n },\r\n ],\r\n },\r\n ],\r\n },\r\n ],\r\n id: '',\r\n resourceType: '',\r\n type: '',\r\n },\r\n selectedQuestionnaire: {\r\n resource: {\r\n id: '',\r\n item: [],\r\n name: '',\r\n resourceType: '',\r\n title: '',\r\n extension: [\r\n {\r\n url: '',\r\n valueString: '',\r\n valueReference: {\r\n reference: '',\r\n },\r\n },\r\n ],\r\n },\r\n },\r\n selectedAnswers: {\r\n item: [],\r\n },\r\n questionnaireBody: {\r\n data: {\r\n authored: '',\r\n context: {\r\n reference: '',\r\n },\r\n id: '',\r\n identifier: {\r\n system: '',\r\n value: '',\r\n },\r\n item: [],\r\n meta: {\r\n versionId: '',\r\n lastUpdated: '',\r\n },\r\n questionnaire: {\r\n reference: '',\r\n },\r\n resourceType: '',\r\n source: {\r\n reference: '',\r\n },\r\n status: '',\r\n subject: {\r\n reference: '',\r\n },\r\n },\r\n },\r\n isExternalRequest: false,\r\n externalUserId: '',\r\n externalOTP: '',\r\n externalT0: '',\r\n externalBaseURL: '',\r\n callingPage: '',\r\n encounterId: '',\r\n};\r\n\r\nconst QuestionnaireContext = createContext<{\r\n qstate: InitialQuestionnaireType;\r\n qdispatch: React.Dispatch;\r\n}>({\r\n qstate: initialQuestionnaireState,\r\n qdispatch: () => null,\r\n});\r\n\r\nexport default QuestionnaireContext;\r\n","import { Button } from 'react-bootstrap';\r\nimport Badge from 'react-bootstrap/Badge';\r\nimport styled from 'styled-components';\r\nimport { appointmentStatus } from '../../globals/global';\r\nimport { ParagraphFontSize } from '../StyledParagraph/StyledParagraph';\r\n\r\nexport const StyledBadge = styled(Badge)`\r\n align-self: right;\r\n border-width: ${(props) => (props.borderwidth ? props.borderwidth : 'thin')};\r\n border-radius: 10px;\r\n border-style: solid;\r\n border-color: ${(props) =>\r\n props.status === 'cancelled' || props.status === appointmentStatus.enteredInError\r\n ? props.theme.badge.neg.borderColor\r\n : 'black'};\r\n color: ${(props) =>\r\n props.status === 'cancelled' || props.status === appointmentStatus.enteredInError\r\n ? props.theme.badge.neg.color\r\n : 'black'};\r\n font-weight: ${(props) => (props.status === appointmentStatus.enteredInError ? 'bold' : 'normal')};\r\n font-size: 14px;\r\n`;\r\n\r\nexport const Styled2FABadge = styled(Badge)`\r\n align-self: right;\r\n border-width: thin;\r\n border-radius: 10px;\r\n border-style: solid;\r\n border-color: ${(props) =>\r\n props.status === 'deaktiviert' ? props.theme.badge.neg.borderColor : props.theme.badge.pos.borderColor};\r\n color: ${(props) => (props.status === 'deaktiviert' ? props.theme.badge.neg.color : props.theme.badge.pos.color)};\r\n font-weight: bold;\r\n font-size: 14px;\r\n`;\r\n\r\ninterface ICategoryBadge {\r\n backgroundColor?: string;\r\n backgroundColorSelected?: string;\r\n color?: string;\r\n colorSelected?: string;\r\n marginRight?: string;\r\n marginBottom?: string;\r\n fontSize?: string | ParagraphFontSize;\r\n}\r\n\r\nexport const CategoryBadge = styled(Button)`\r\n border-radius: 50px;\r\n background-color: ${(props) => (props.backgroundColor ? props.backgroundColor : null)};\r\n border-color: ${(props) => (props.backgroundColor ? props.backgroundColor : null)};\r\n color: ${(props) => (props.color ? props.color : null)};\r\n margin-right: ${(props) => (props.marginRight ? props.marginRight : null)};\r\n margin-bottom: ${(props) => (props.marginBottom ? props.marginBottom : null)};\r\n font-size: ${(props) => (props.fontSize ? props.fontSize : null)};\r\n &:hover {\r\n background-color: ${(props) => (props.backgroundColorSelected ? props.backgroundColorSelected : null)};\r\n border-color: ${(props) => (props.backgroundColorSelected ? props.backgroundColorSelected : null)};\r\n color: ${(props) => (props.colorSelected ? props.colorSelected : null)};\r\n }\r\n &:focus {\r\n background-color: ${(props) => (props.backgroundColorSelected ? props.backgroundColorSelected : null)};\r\n border-color: ${(props) => (props.backgroundColorSelected ? props.backgroundColorSelected : null)};\r\n color: ${(props) => (props.colorSelected ? props.colorSelected : null)};\r\n }\r\n &:hover:focus:active {\r\n background-color: ${(props) => (props.backgroundColorSelected ? props.backgroundColorSelected : null)};\r\n border-color: ${(props) => (props.backgroundColorSelected ? props.backgroundColorSelected : null)};\r\n color: ${(props) => (props.colorSelected ? props.colorSelected : null)};\r\n }\r\n &:active {\r\n background-color: ${(props) => (props.backgroundColorSelected ? props.backgroundColorSelected : null)};\r\n border-color: ${(props) => (props.backgroundColorSelected ? props.backgroundColorSelected : null)};\r\n color: ${(props) => (props.colorSelected ? props.colorSelected : null)};\r\n }\r\n`;\r\n\r\ninterface ICategoryBadgeSelected {\r\n backgroundColor?: string;\r\n color?: string;\r\n marginLeft?: string;\r\n marginRight?: string;\r\n marginBottom?: string;\r\n fontSize?: string | ParagraphFontSize;\r\n}\r\n\r\nexport const CategoryBadgeSelected = styled(Badge)`\r\n border-radius: 50px;\r\n background-color: ${(props) => (props.backgroundColor ? props.backgroundColor : null)};\r\n border-color: ${(props) => (props.backgroundColor ? props.backgroundColor : null)};\r\n color: ${(props) => (props.color ? props.color : null)};\r\n margin-left: ${(props) => (props.marginLeft ? props.marginLeft : null)};\r\n margin-right: ${(props) => (props.marginRight ? props.marginRight : null)};\r\n margin-bottom: ${(props) => (props.marginBottom ? props.marginBottom : null)};\r\n font-size: ${(props) => (props.fontSize ? props.fontSize : null)};\r\n max-width: 50%;\r\n overflow: hidden;\r\n text-overflow: ellipsis;\r\n`;\r\n\r\ninterface IBadgeWithWordWrap {\r\n padding?: string;\r\n}\r\n\r\nexport const BadgeWithWordWrap = styled(Badge)`\r\n white-space: normal;\r\n text-align: left;\r\n padding: ${(props) => (props.padding ? props.padding : null)};\r\n`;\r\n","import checkAnimation from '../lotties/checkAnimation.json';\r\n\r\nexport const lottieCheck = {\r\n loop: false,\r\n autoplay: true,\r\n animationData: checkAnimation, //fill color = #adcf03 (successGreen from theme)\r\n rendererSettings: {\r\n preserveAspectRatio: 'xMidYMid slice',\r\n },\r\n};\r\n\r\nexport const calcButtonPaddingSize = (buttonRef: React.MutableRefObject, lottieWidth: number) => {\r\n let calcButtonWidth = '35px';\r\n if (buttonRef.current) {\r\n const buttonWidth = buttonRef.current.offsetWidth;\r\n const calcButtonW = (buttonWidth - lottieWidth) / 2;\r\n calcButtonWidth = calcButtonW.toString() + 'px';\r\n }\r\n return calcButtonWidth;\r\n};\r\n","import moment from 'moment';\r\nimport * as React from 'react';\r\nimport { InitialLoginType } from '../../context/loginContext';\r\nimport { getBirthdayPrettyFormatedWithAge } from '../../utils/dateUtils';\r\nimport { responseErrorHandling } from '../../utils/errorHandling';\r\nimport { getCountryLongName, getGenderEN } from '../../utils/pcpUtils';\r\nimport { IRegisterData } from '../RestServices';\r\nimport { getFHIRConfig } from './fhirConstants';\r\nconst fhir = require('fhir.js');\r\n\r\nexport interface IPatientResource {\r\n id: any;\r\n name: any;\r\n birthDate: any;\r\n address: any;\r\n gender: any;\r\n identifier: any;\r\n telecom: any;\r\n communication?: any;\r\n extension?: any;\r\n}\r\n\r\ninterface IPatientResourceAddress {\r\n street: string;\r\n houseNr: string;\r\n}\r\n\r\nexport interface IPlannedStudies {\r\n code: string;\r\n display: string;\r\n participate: boolean;\r\n}\r\n\r\n/**\r\n *\r\n * @param sessionId\r\n * the sessionId OR OTP variant (PCP otp,userId,to)\r\n * @param activeUserId\r\n * the activeUserId\r\n * @returns patientResource\r\n * the patient resource\r\n */\r\nexport const getPatientResource = async (sessionId: string, activeUserId: string) => {\r\n return await fhir(getFHIRConfig(sessionId)).read({\r\n type: 'Patient',\r\n id: activeUserId,\r\n });\r\n};\r\n\r\nexport const getPractitionerResource = async (sessionId: string, practitionerRoleId: string) => {\r\n return await fhir(getFHIRConfig(sessionId)).read({\r\n type: 'Practitioner',\r\n id: practitionerRoleId,\r\n });\r\n};\r\n\r\nexport const changePatientResource = async (state: InitialLoginType, resource: any) => {\r\n return await fhir(getFHIRConfig(state.sessionId)).update({\r\n type: 'Patient',\r\n id: state.userId,\r\n resource: resource.data,\r\n });\r\n};\r\n\r\nconst getNewPlannedStudiesEntry = (plannedStudy: IPlannedStudies) => {\r\n const newEntry = {\r\n url: 'http://www.principa.siegele-software.com/plannedStudies',\r\n valueCoding: {\r\n code: plannedStudy.code,\r\n display: plannedStudy.display,\r\n extension: [\r\n {\r\n url: 'http://www.principa.siegele-software.com/plannedStudySelection',\r\n valueBoolean: plannedStudy.participate,\r\n },\r\n ],\r\n },\r\n };\r\n return newEntry;\r\n};\r\n\r\nexport const updatePatientResourcePlannedStudies = (patientResource: any, newPlannedStudies: IPlannedStudies[]) => {\r\n if (patientResource.data.extension !== undefined) {\r\n newPlannedStudies.forEach((plannedStudy) => {\r\n let foundEntry = false;\r\n for (let i = 0; i < patientResource.data.extension.length; i++) {\r\n if (patientResource.data.extension[i].url.endsWith('plannedStudies')) {\r\n if (patientResource.data.extension[i].valueCoding?.code === plannedStudy.code) {\r\n for (let j = 0; j < patientResource.data.extension[i].valueCoding?.extension.length; j++) {\r\n if (\r\n patientResource.data.extension[i].valueCoding.extension[j]?.url.endsWith(\r\n 'plannedStudySelection',\r\n )\r\n ) {\r\n foundEntry = true;\r\n patientResource.data.extension[i].valueCoding.extension[j].valueBoolean =\r\n plannedStudy.participate;\r\n }\r\n }\r\n }\r\n }\r\n }\r\n if (!foundEntry) {\r\n patientResource.data.extension[patientResource.data.extension.length] =\r\n getNewPlannedStudiesEntry(plannedStudy);\r\n }\r\n });\r\n } else {\r\n const studyEntries: any[] = [];\r\n newPlannedStudies.forEach((plannedStudy) => {\r\n studyEntries.push(getNewPlannedStudiesEntry(plannedStudy));\r\n });\r\n\r\n patientResource.data.extension = [...studyEntries];\r\n // patientResource.data.extension = [studyEntries[0]];\r\n }\r\n return patientResource;\r\n};\r\n\r\nexport const modifyPatientResource = (originalPatientResource: any, newData: IRegisterData) => {\r\n let newPatientResource = {} as any;\r\n\r\n newPatientResource = originalPatientResource;\r\n\r\n if (newData.birthdate !== undefined) {\r\n const formatedBirthdate = moment(newData.birthdate, 'DD.MM.YYYY').format('YYYY-MM-DD');\r\n newPatientResource.data.birthDate = formatedBirthdate;\r\n }\r\n if (newData.city !== undefined) {\r\n if (newPatientResource.data.address !== undefined) {\r\n for (let i = 0; i < newPatientResource.data.address.length; i++) {\r\n if (newPatientResource.data.address[i].use === 'home') {\r\n newPatientResource.data.address[i].city = newData.city;\r\n break;\r\n }\r\n }\r\n } else {\r\n newPatientResource.data.address = [\r\n {\r\n city: newData.city,\r\n },\r\n ];\r\n }\r\n }\r\n if (newData.country !== undefined) {\r\n if (newPatientResource.data.address !== undefined) {\r\n for (let i = 0; i < newPatientResource.data.address.length; i++) {\r\n if (newPatientResource.data.address[i].use === 'home') {\r\n newPatientResource.data.address[i].country = newData.country;\r\n break;\r\n }\r\n }\r\n } else {\r\n newPatientResource.data.address = [\r\n {\r\n country: newData.country,\r\n },\r\n ];\r\n }\r\n }\r\n if (newData.email !== undefined) {\r\n if (newPatientResource.data.telecom !== undefined) {\r\n for (let i = 0; i < newPatientResource.data.telecom.length; i++) {\r\n if (newPatientResource.data.telecom[i].system === 'email') {\r\n newPatientResource.data.telecom[i].value = newData.email;\r\n break;\r\n }\r\n }\r\n } else {\r\n newPatientResource.data.telecom = [\r\n {\r\n system: 'email',\r\n value: newData.email,\r\n },\r\n ];\r\n }\r\n }\r\n if (newData.gender !== undefined) {\r\n newPatientResource.data.gender = getGenderEN(newData.gender);\r\n }\r\n\r\n if (newData.insuranceNr !== undefined) {\r\n if (newPatientResource.data.identifier !== undefined) {\r\n let foundInsuranceNrEntry = false;\r\n for (let i = 0; i < newPatientResource.data.identifier.length; i++) {\r\n if (newPatientResource.data.identifier[i].system === 'http://fhir.de/NamingSystem/gkv/kvid-10') {\r\n foundInsuranceNrEntry = true;\r\n newPatientResource.data.identifier[i].value = newData.insuranceNr;\r\n break;\r\n }\r\n }\r\n if (!foundInsuranceNrEntry) {\r\n newPatientResource.data.identifier[newPatientResource.data.identifier.length] = {\r\n system: 'http://fhir.de/NamingSystem/gkv/kvid-10',\r\n value: newData.insuranceNr,\r\n };\r\n }\r\n } else {\r\n newPatientResource.data.identifier = [\r\n {\r\n system: 'http://fhir.de/NamingSystem/gkv/kvid-10',\r\n value: newData.insuranceNr,\r\n },\r\n ];\r\n }\r\n }\r\n\r\n if (newData.nameFirst !== undefined) {\r\n for (let i = 0; i < newPatientResource.data.name.length; i++) {\r\n if (newPatientResource.data.name[i].use === 'usual') {\r\n newPatientResource.data.name[i].given[0] = newData.nameFirst;\r\n break;\r\n }\r\n }\r\n }\r\n if (newData.nameLast !== undefined) {\r\n for (let i = 0; i < newPatientResource.data.name.length; i++) {\r\n if (newPatientResource.data.name[i].use === 'usual') {\r\n newPatientResource.data.name[i].family = newData.nameLast;\r\n break;\r\n }\r\n }\r\n }\r\n if (newData.academicTitle !== undefined) {\r\n let prefixPosition = 0;\r\n for (let i = 0; i < newPatientResource.data.name.length; i++) {\r\n if (newPatientResource.data.name[i].use === 'usual') {\r\n if (newPatientResource.data.name[i]._prefix !== undefined) {\r\n for (let j = 0; j < newPatientResource.data.name[i]._prefix.length; j++) {\r\n if (newPatientResource.data.name[i]._prefix[j]?.extension) {\r\n for (let z = 0; z < newPatientResource.data.name[i]._prefix[j].extension.length; z++) {\r\n if (\r\n newPatientResource.data.name[i]._prefix[j].extension[z].url ===\r\n 'http://hl7.org/fhir/StructureDefinition/iso21090-EN-qualifier' &&\r\n newPatientResource.data.name[i]._prefix[j].extension[z].valueCode === 'AC'\r\n ) {\r\n prefixPosition = j;\r\n break;\r\n }\r\n }\r\n }\r\n }\r\n\r\n newPatientResource.data.name[i].prefix[prefixPosition] = newData.academicTitle;\r\n } else {\r\n if (newPatientResource.data.name[i].prefix !== undefined) {\r\n prefixPosition = newPatientResource.data.name[i].prefix.length;\r\n }\r\n newPatientResource.data.name[i].prefix[prefixPosition] = newData.academicTitle;\r\n\r\n // newPatientResource.data.name[i]._prefix = [\r\n // {\r\n // extension: [\r\n // {\r\n // url: 'http://hl7.org/fhir/StructureDefinition/iso21090-EN-qualifier',\r\n // valueCode: 'AC',\r\n // },\r\n // ],\r\n // },\r\n // ];\r\n\r\n newPatientResource.data.name[i]._prefix = [];\r\n for (let j = 0; j <= prefixPosition; j++) {\r\n if (prefixPosition === j) {\r\n newPatientResource.data.name[i]._prefix[j] = [\r\n {\r\n extension: [\r\n {\r\n url: 'http://hl7.org/fhir/StructureDefinition/iso21090-EN-qualifier',\r\n valueCode: 'AC',\r\n },\r\n ],\r\n },\r\n ];\r\n } else {\r\n newPatientResource.data.name[i]._prefix[j] = null;\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n if (newData.street !== undefined) {\r\n if (newPatientResource.data.address !== undefined) {\r\n for (let i = 0; i < newPatientResource.data.address.length; i++) {\r\n if (newPatientResource.data.address[i].use === 'home') {\r\n if (newPatientResource.data.address[i].line !== undefined) {\r\n newPatientResource.data.address[i].line[0] = newData.street + ' ' + newData.streetNr;\r\n newPatientResource.data.address[i]._line[0].extension[0].valueString = newData.street;\r\n newPatientResource.data.address[i]._line[0].extension[1].valueString = newData.streetNr;\r\n break;\r\n } else {\r\n newPatientResource.data.address[i].line = [newData.street + ' ' + newData.streetNr];\r\n newPatientResource.data.address[i]._line = [\r\n {\r\n extension: [\r\n {\r\n url: 'http://hl7.org/fhir/StructureDefinition/iso21090-ADXP-streetName',\r\n valueString: newData.street,\r\n },\r\n {\r\n url: 'http://hl7.org/fhir/StructureDefinition/iso21090-ADXP-houseNumber',\r\n valueString: newData.streetNr,\r\n },\r\n ],\r\n },\r\n ];\r\n }\r\n }\r\n }\r\n } else {\r\n newPatientResource.data.address = [\r\n {\r\n use: 'home',\r\n line: [newData.street + ' ' + newData.streetNr],\r\n _line: [\r\n {\r\n extension: [\r\n {\r\n url: 'http://hl7.org/fhir/StructureDefinition/iso21090-ADXP-streetName',\r\n valueString: newData.street,\r\n },\r\n {\r\n url: 'http://hl7.org/fhir/StructureDefinition/iso21090-ADXP-houseNumber',\r\n valueString: newData.streetNr,\r\n },\r\n ],\r\n },\r\n ],\r\n },\r\n ];\r\n\r\n newPatientResource.data.address[0].line[0] = newData.street + ' ' + newData.streetNr;\r\n }\r\n }\r\n if (newData.tel !== undefined) {\r\n if (newPatientResource.data.telecom !== undefined) {\r\n let foundPhoneEntry = false;\r\n for (let i = 0; i < newPatientResource.data.telecom.length; i++) {\r\n if (\r\n newPatientResource.data.telecom[i].system === 'phone' &&\r\n newPatientResource.data.telecom[i].use === 'home'\r\n ) {\r\n foundPhoneEntry = true;\r\n newPatientResource.data.telecom[i].value = newData.tel;\r\n break;\r\n }\r\n }\r\n if (!foundPhoneEntry) {\r\n newPatientResource.data.telecom[newPatientResource.data.telecom.length] = [\r\n {\r\n system: 'phone',\r\n use: 'home',\r\n value: newData.tel,\r\n },\r\n ];\r\n }\r\n } else {\r\n newPatientResource.data.telecom = [\r\n {\r\n system: 'phone',\r\n use: 'home',\r\n value: newData.tel,\r\n },\r\n ];\r\n }\r\n }\r\n if (newData.mobilePhone !== undefined) {\r\n if (newPatientResource.data.telecom !== undefined) {\r\n let foundPhoneEntry = false;\r\n for (let i = 0; i < newPatientResource.data.telecom.length; i++) {\r\n if (\r\n newPatientResource.data.telecom[i].system === 'phone' &&\r\n newPatientResource.data.telecom[i].use === 'mobile'\r\n ) {\r\n foundPhoneEntry = true;\r\n newPatientResource.data.telecom[i].value = newData.mobilePhone;\r\n break;\r\n }\r\n }\r\n if (!foundPhoneEntry) {\r\n newPatientResource.data.telecom[newPatientResource.data.telecom.length] = [\r\n {\r\n system: 'phone',\r\n use: 'mobile',\r\n value: newData.mobilePhone,\r\n },\r\n ];\r\n }\r\n } else {\r\n newPatientResource.data.telecom = [\r\n {\r\n system: 'phone',\r\n use: 'mobile',\r\n value: newData.mobilePhone,\r\n },\r\n ];\r\n }\r\n }\r\n if (newData.zip !== undefined) {\r\n if (newPatientResource.data.address !== undefined) {\r\n for (let i = 0; i < newPatientResource.data.address.length; i++) {\r\n if (newPatientResource.data.address[i].use === 'home') {\r\n newPatientResource.data.address[i].postalCode = newData.zip;\r\n break;\r\n }\r\n }\r\n } else {\r\n newPatientResource.data.address = [\r\n {\r\n postalCode: newData.zip,\r\n },\r\n ];\r\n }\r\n }\r\n if (newData.plannedStudies !== undefined) {\r\n updatePatientResourcePlannedStudies(newPatientResource, newData.plannedStudies);\r\n }\r\n\r\n return newPatientResource;\r\n};\r\n\r\nexport const getPatientId = (patientdataJson: IPatientResource) => {\r\n const id = patientdataJson.id;\r\n if (id !== undefined) {\r\n return id;\r\n }\r\n};\r\n\r\nexport const getPatientNumber = (patientdataJson: IPatientResource) => {\r\n const ele = patientdataJson.identifier?.find((element) => {\r\n return element.system?.endsWith('patientNumber');\r\n });\r\n if (ele) {\r\n return ele.value;\r\n }\r\n};\r\n\r\nexport const getFamilyName = (patientdataJson: IPatientResource) => {\r\n const nameArr = patientdataJson.name;\r\n for (let i = 0; i < nameArr.length; i++) {\r\n if (nameArr[i].use === 'usual') {\r\n const familyName = nameArr[i].family;\r\n if (familyName !== undefined) {\r\n return familyName;\r\n }\r\n }\r\n }\r\n};\r\n\r\nexport const getGivenName = (patientdataJson: IPatientResource) => {\r\n const nameArr = patientdataJson.name;\r\n for (let i = 0; i < nameArr.length; i++) {\r\n if (nameArr[i].use === 'usual') {\r\n const givenName = nameArr[i].given;\r\n if (givenName !== undefined) {\r\n return givenName[0];\r\n }\r\n }\r\n }\r\n};\r\n\r\nexport const getInsuranceNr = (patientdataJson: IPatientResource) => {\r\n const identifier = patientdataJson.identifier;\r\n\r\n if (identifier !== undefined) {\r\n for (let i = 0; i < identifier.length; i++) {\r\n if (identifier[i].system === 'http://fhir.de/NamingSystem/gkv/kvid-10') {\r\n const insuranceNr = identifier[i].value;\r\n if (typeof insuranceNr !== 'undefined') {\r\n return insuranceNr;\r\n }\r\n }\r\n }\r\n }\r\n};\r\n\r\nexport const getBirthDate = (patientdataJson: IPatientResource) => {\r\n const birthdate = patientdataJson.birthDate;\r\n return getBirthdayPrettyFormatedWithAge(birthdate);\r\n};\r\n\r\nexport const getGender = (patientdataJson: IPatientResource) => {\r\n const gender = patientdataJson.gender;\r\n if (gender !== undefined) {\r\n return gender;\r\n }\r\n};\r\n\r\nexport const getHomePhone = (patientdataJson: IPatientResource) => {\r\n const telecomArr = patientdataJson.telecom;\r\n\r\n if (telecomArr !== undefined) {\r\n for (let i = 0; i < telecomArr.length; i++) {\r\n if (telecomArr[i].system === 'phone' && telecomArr[i].use === 'home') {\r\n const phone = telecomArr[i].value;\r\n if (typeof phone !== 'undefined') {\r\n return phone;\r\n }\r\n }\r\n }\r\n }\r\n};\r\n\r\nexport const getMobilePhone = (patientdataJson: IPatientResource) => {\r\n const telecomArr = patientdataJson.telecom;\r\n\r\n if (telecomArr !== undefined) {\r\n for (let i = 0; i < telecomArr.length; i++) {\r\n if (telecomArr[i].system === 'phone' && telecomArr[i].use === 'mobile') {\r\n const phone = telecomArr[i].value;\r\n if (typeof phone !== 'undefined') {\r\n return phone;\r\n }\r\n }\r\n }\r\n }\r\n};\r\n\r\nexport const getAcademicTitle = (patientdataJson: IPatientResource) => {\r\n const nameArr = patientdataJson.name;\r\n\r\n let arrayPosition = -1;\r\n\r\n if (nameArr) {\r\n for (let i = 0; i < nameArr.length; i++) {\r\n if (nameArr[i]._prefix) {\r\n for (let j = 0; j < nameArr[i]._prefix.length; j++) {\r\n if (nameArr[i]._prefix[j]) {\r\n if (nameArr[i]._prefix[j].extension) {\r\n for (let z = 0; z < nameArr[i]._prefix[j].extension.length; z++) {\r\n if (\r\n nameArr[i]._prefix[j].extension[z].url ===\r\n 'http://hl7.org/fhir/StructureDefinition/iso21090-EN-qualifier' &&\r\n nameArr[i]._prefix[j].extension[z].valueCode === 'AC'\r\n ) {\r\n arrayPosition = j;\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n if (arrayPosition >= 0) {\r\n for (let i = 0; i < nameArr.length; i++) {\r\n const value = nameArr[i].prefix[arrayPosition];\r\n if (value) {\r\n return value;\r\n }\r\n }\r\n }\r\n};\r\n\r\nexport const getCountry = (patientdataJson: IPatientResource) => {\r\n const addressArr = patientdataJson.address;\r\n\r\n if (addressArr !== undefined) {\r\n for (let i = 0; i < addressArr.length; i++) {\r\n if (addressArr[i].use === 'home') {\r\n const country = addressArr[i].country;\r\n if (typeof country !== 'undefined') {\r\n const countryLongName = getCountryLongName(country);\r\n return countryLongName;\r\n }\r\n }\r\n }\r\n }\r\n};\r\n\r\nexport const getHomeEmail = (patientdataJson: IPatientResource) => {\r\n const telecomArr = patientdataJson.telecom;\r\n\r\n if (telecomArr !== undefined) {\r\n for (let i = 0; i < telecomArr.length; i++) {\r\n if (telecomArr[i].system === 'email' && telecomArr[i].use === 'home') {\r\n const email = telecomArr[i].value;\r\n if (typeof email !== 'undefined') {\r\n return email;\r\n }\r\n }\r\n }\r\n }\r\n};\r\n\r\nexport const getHomeCity = (patientdataJson: IPatientResource) => {\r\n const addressArr = patientdataJson.address;\r\n\r\n if (addressArr !== undefined) {\r\n for (let i = 0; i < addressArr.length; i++) {\r\n if (addressArr[i].use === 'home') {\r\n const city = addressArr[i].city;\r\n if (typeof city !== 'undefined') {\r\n return city;\r\n }\r\n }\r\n }\r\n }\r\n};\r\n\r\nexport const getHomeStreet = (patientdataJson: IPatientResource) => {\r\n const addressLine = splitAdressLineToStreetAndHouseNr(patientdataJson);\r\n return addressLine.street;\r\n};\r\n\r\nexport const getHomeHouseNr = (patientdataJson: IPatientResource) => {\r\n const addressLine = splitAdressLineToStreetAndHouseNr(patientdataJson);\r\n return addressLine.houseNr;\r\n};\r\n\r\nexport const splitAdressLineToStreetAndHouseNr = (patientdataJson: IPatientResource): IPatientResourceAddress => {\r\n const addressLine = getAddressLine(patientdataJson);\r\n let firstNumberAppearance = 0;\r\n\r\n const address: IPatientResourceAddress = {\r\n street: '',\r\n houseNr: '',\r\n };\r\n\r\n if (addressLine) {\r\n for (let i = 0; i < addressLine.length; i++) {\r\n const character = addressLine.charAt(i);\r\n if (character >= '0' && character <= '9') {\r\n firstNumberAppearance = i;\r\n break;\r\n }\r\n }\r\n\r\n let street = '';\r\n let houseNr = '';\r\n if (firstNumberAppearance === 0) {\r\n street = addressLine.trim();\r\n } else {\r\n street = addressLine.substring(0, firstNumberAppearance).trim();\r\n houseNr = addressLine.substring(firstNumberAppearance, addressLine.length).trim();\r\n }\r\n\r\n address.street = street;\r\n address.houseNr = houseNr;\r\n }\r\n\r\n return address;\r\n};\r\n\r\n/**\r\n * returns street and houseNr in one line -> split it in getHomeStreet and getHomeHouseNr\r\n *\r\n * @param patientdataJson the response from getPatientResource\r\n */\r\nexport const getAddressLine = (patientdataJson: IPatientResource) => {\r\n const addressArr = patientdataJson.address;\r\n\r\n if (addressArr !== undefined) {\r\n for (let i = 0; i < addressArr.length; i++) {\r\n if (addressArr[i].use === 'home') {\r\n const lineArr = addressArr[i].line;\r\n if (typeof lineArr !== 'undefined') {\r\n return lineArr[0];\r\n }\r\n }\r\n }\r\n }\r\n};\r\n\r\n// export const getAddressLine = (patientdataJson: IPatientResource) : IPatientResourceAddress => {\r\n// let address : IPatientResourceAddress = {\r\n// street: '',\r\n// houseNr: '',\r\n// }\r\n\r\n// /* hier aufspliten auf street + houseNr */\r\n\r\n// return address;\r\n// }\r\n\r\nexport const getHomePostalCode = (patientdataJson: IPatientResource) => {\r\n const addressArr = patientdataJson.address;\r\n\r\n if (addressArr !== undefined) {\r\n for (let i = 0; i < addressArr.length; i++) {\r\n if (addressArr[i].use === 'home') {\r\n const postalCode = addressArr[i].postalCode;\r\n if (typeof postalCode !== 'undefined') {\r\n return postalCode;\r\n }\r\n }\r\n }\r\n }\r\n};\r\n\r\nexport const getLanguage = (patientdataJson: IPatientResource) => {\r\n if (patientdataJson.communication !== undefined) {\r\n const communcationArr = patientdataJson.communication;\r\n for (let i = 0; i < communcationArr.length; i++) {\r\n if (communcationArr[i].language !== undefined) {\r\n const language = communcationArr[i].language;\r\n if (language !== undefined) {\r\n if (language.coding !== undefined) {\r\n const languageName = language.coding[0].display;\r\n return languageName;\r\n }\r\n }\r\n }\r\n }\r\n }\r\n};\r\n\r\nexport const getInsuranceName = (patientdataJson: IPatientResource) => {\r\n if (patientdataJson.extension !== undefined) {\r\n const communcationArr = patientdataJson.communication;\r\n if (communcationArr !== undefined) {\r\n for (let i = 0; i < communcationArr.length; i++) {\r\n if (communcationArr[i].language !== undefined) {\r\n const language = communcationArr[i].language;\r\n if (language !== undefined) {\r\n if (language.coding !== undefined) {\r\n const languageName = language.coding[0].display;\r\n return languageName;\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n};\r\n\r\nexport const getPlannedStudies = (patientdataJson: IPatientResource) => {\r\n const allPlannedStudies: IPlannedStudies[] = [];\r\n\r\n if (patientdataJson.extension) {\r\n const plannedStudies = patientdataJson.extension.filter((p: any) => p.url.endsWith('plannedStudies'));\r\n\r\n if (plannedStudies) {\r\n plannedStudies.forEach((plannedStudy) => {\r\n let code = '';\r\n let display = '';\r\n let participate = false;\r\n\r\n if (plannedStudy.valueCoding) {\r\n code = plannedStudy.valueCoding.code;\r\n display = plannedStudy.valueCoding.display;\r\n\r\n if (plannedStudy.valueCoding.extension) {\r\n const plannedStudySelection = plannedStudy.valueCoding.extension.find((p: any) =>\r\n p.url.endsWith('plannedStudySelection'),\r\n );\r\n if (plannedStudySelection) {\r\n if (plannedStudySelection.valueBoolean) {\r\n participate = plannedStudySelection.valueBoolean;\r\n\r\n allPlannedStudies.push({\r\n code: code,\r\n display: display,\r\n participate: participate,\r\n });\r\n }\r\n }\r\n }\r\n }\r\n });\r\n }\r\n }\r\n\r\n return allPlannedStudies;\r\n};\r\n\r\nexport const extractPatData = (patdata: any) => {\r\n const birthdayFormated = getBirthDate(patdata.data);\r\n\r\n const patdataExt = {\r\n insuranceNr: getInsuranceNr(patdata.data),\r\n firstName: getGivenName(patdata.data),\r\n lastName: getFamilyName(patdata.data),\r\n birthday: patdata.data.birthDate,\r\n birthdayFormated: birthdayFormated ? birthdayFormated : '',\r\n gender: getGender(patdata.data),\r\n emailHome: getHomeEmail(patdata.data),\r\n telephoneHome: getHomePhone(patdata.data),\r\n streetHome: getHomeStreet(patdata.data),\r\n houseNrHome: getHomeHouseNr(patdata.data),\r\n cityHome: getHomeCity(patdata.data),\r\n zipHome: getHomePostalCode(patdata.data),\r\n country: getCountry(patdata.data),\r\n mobilePhone: getMobilePhone(patdata.data),\r\n academicTitle: getAcademicTitle(patdata.data),\r\n plannedStudies: getPlannedStudies(patdata.data),\r\n patientId: getPatientId(patdata.data),\r\n patientNumber: getPatientNumber(patdata.data),\r\n insuranceName: getInsuranceName(patdata.data),\r\n language: getLanguage(patdata.data),\r\n };\r\n\r\n return patdataExt;\r\n};\r\n\r\nexport const getPatientProfilePictureWL = async (sessionId: string, userId: string) => {\r\n return await fhir(getFHIRConfig(sessionId)).search({\r\n type: 'Patient',\r\n query: {\r\n _id: userId,\r\n _includePicture: 'true',\r\n },\r\n });\r\n};\r\n\r\nexport const getPatientProfilePicture = async (state: InitialLoginType, alertdispatch: React.Dispatch) => {\r\n if (state.practitionerRoleId) {\r\n return await fhir(getFHIRConfig(state.sessionId))\r\n .search({\r\n type: 'Practitioner',\r\n query: {\r\n _id: state.practitionerRoleId,\r\n _includePicture: 'true',\r\n },\r\n })\r\n .catch(function (e: any) {\r\n responseErrorHandling({\r\n response: e,\r\n alertdispatch: alertdispatch,\r\n });\r\n });\r\n } else {\r\n return await fhir(getFHIRConfig(state.sessionId))\r\n .search({\r\n type: 'Patient',\r\n query: {\r\n _id: state.userId,\r\n _includePicture: 'true',\r\n },\r\n })\r\n .catch(function (e: any) {\r\n responseErrorHandling({\r\n response: e,\r\n alertdispatch: alertdispatch,\r\n });\r\n });\r\n }\r\n};\r\n\r\nexport const getPatientsWithName = async (\r\n state: InitialLoginType,\r\n familyName: string,\r\n givenName: string,\r\n alertdispatch: React.Dispatch,\r\n) => {\r\n return await fhir(getFHIRConfig(state.sessionId))\r\n .search({\r\n type: 'Patient',\r\n query: {\r\n family: familyName,\r\n given: givenName,\r\n _includePicture: 'true',\r\n practitioner: state.practitionerRoleId,\r\n _count: 30,\r\n },\r\n })\r\n .catch(function (e: any) {\r\n responseErrorHandling({\r\n response: e,\r\n alertdispatch: alertdispatch,\r\n });\r\n });\r\n};\r\n","import Lottie from 'react-lottie';\r\nimport Mainscreen from '../../container/Mainscreen/Mainscreen';\r\nimport loadingSpinner from '../../lotties/loadingSpinner.json';\r\nimport loadingSpinnerWhite from '../../lotties/loadingSpinnerWhite.json';\r\nimport { VerticalCenterDiv } from '../Div/StyledDiv';\r\n\r\nconst lottieSpinnerOptions = {\r\n loop: true,\r\n autoplay: true,\r\n animationData: loadingSpinner,\r\n rendererSettings: {\r\n preserveAspectRatio: 'xMidYMid slice',\r\n },\r\n};\r\n\r\nconst lottieSpinnerWhiteOptions = {\r\n loop: true,\r\n autoplay: true,\r\n animationData: loadingSpinnerWhite,\r\n rendererSettings: {\r\n preserveAspectRatio: 'xMidYMid slice',\r\n },\r\n};\r\n\r\nconst LottieSpinner = () => {\r\n return ;\r\n};\r\n\r\nexport const LoadingSpinner = () => {\r\n return (\r\n \r\n \r\n \r\n );\r\n};\r\n\r\nexport const LoadingSpinnerInMainscreen = () => {\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n );\r\n};\r\n\r\ninterface ILottieButtonLoadingSpinner {\r\n size: number;\r\n}\r\n\r\nexport const LottieButtonLoadingSpinner = (props: ILottieButtonLoadingSpinner) => {\r\n return ;\r\n};\r\n","import { useContext } from 'react';\r\nimport Col from 'react-bootstrap/esm/Col';\r\nimport Row from 'react-bootstrap/esm/Row';\r\nimport { ThemeContext } from 'styled-components';\r\nimport { VerticalCenterDiv } from '../Div/StyledDiv';\r\nimport { LoadingSpinner } from './Loading';\r\n\r\nexport interface ILoadingSpinner {\r\n loadingText: string;\r\n}\r\nconst LoadingSpinnerWithText = (props: ILoadingSpinner) => {\r\n const themeContext = useContext(ThemeContext);\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n

{props.loadingText}

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

X

;\r\n } else {\r\n return (\r\n
\r\n \r\n {showUnreadBadge && (\r\n \r\n {props.numberUnreadMsg}\r\n \r\n )}\r\n
\r\n );\r\n }\r\n};\r\n\r\nconst ChatWidgetSymbol = (props: IChatWidgetSymbol) => {\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n};\r\n\r\nexport default ChatWidgetSymbol;\r\n","import styled from 'styled-components';\r\n\r\nexport const StyledH3 = styled.h3`\r\n color: ${(props) => props.theme.font.highlightColor};\r\n`;\r\n\r\nexport const StyledMainHeader = styled.h3`\r\n @media only screen and (max-width: 500px), screen and (max-height: 500px) {\r\n font-size: 1.25rem;\r\n }\r\n`;\r\n\r\nexport const StyledSubHeader = styled.h4`\r\n @media only screen and (max-width: 500px), screen and (max-height: 500px) {\r\n font-size: 1.1rem;\r\n }\r\n`;\r\n","import { createContext } from 'react';\r\n\r\nexport enum AlertOnHide {\r\n onlyClose = 1,\r\n goToHome,\r\n custom,\r\n reload,\r\n}\r\n\r\nexport enum AlertType {\r\n error,\r\n info,\r\n}\r\n\r\nexport type InitialAlertType = {\r\n alertMessage: {\r\n showModal: boolean;\r\n alertTitle: string;\r\n alertTxt: string;\r\n alertType: AlertType;\r\n onHide: AlertOnHide;\r\n onHideCustom: any;\r\n buttonName?: string;\r\n doBig?: boolean;\r\n doHTML?: boolean;\r\n };\r\n};\r\n\r\nexport const initialAlertState = {\r\n alertMessage: {\r\n showModal: false,\r\n alertTitle: '',\r\n alertTxt: '',\r\n alertType: AlertType.info,\r\n onHide: AlertOnHide.onlyClose,\r\n onHideCustom: undefined,\r\n buttonName: 'OK',\r\n doBig: false,\r\n },\r\n};\r\n\r\nconst AlertContext = createContext<{\r\n alertstate: InitialAlertType;\r\n alertdispatch: React.Dispatch;\r\n}>({\r\n alertstate: initialAlertState,\r\n alertdispatch: () => null,\r\n});\r\n\r\nexport default AlertContext;\r\n","import { useContext } from 'react';\r\nimport { useNavigate } from 'react-router-dom';\r\nimport AlertContext, { AlertOnHide, AlertType } from '../context/alertContext';\r\nimport CheckInContext from '../context/checkInContext';\r\nimport ExecuteRuleContext from '../context/executeRuleContext';\r\nimport LoginContext from '../context/loginContext';\r\nimport QuestionnaireContext from '../context/questionnaireContext';\r\nimport TerminierungContext from '../context/terminierungContext';\r\nimport VideochatContext from '../context/videochatContext';\r\nimport { logout, unblockAppointment } from '../services/RestServices';\r\nimport { showAlertMessage } from '../utils/alertHandling';\r\nimport { useAppointmentSelection } from './useAppointmentSelection';\r\n\r\nconst useHandleLogout = () => {\r\n const navigate = useNavigate();\r\n const { state, dispatch } = useContext(LoginContext);\r\n const { vsdispatch } = useContext(VideochatContext);\r\n const { tmdispatch } = useContext(TerminierungContext);\r\n const { alertdispatch } = useContext(AlertContext);\r\n const { qdispatch } = useContext(QuestionnaireContext);\r\n const { executeruledispatch } = useContext(ExecuteRuleContext);\r\n\r\n const handleLogout = async (\r\n event?: React.MouseEvent | React.MouseEvent,\r\n ) => {\r\n if (event !== undefined) {\r\n event.preventDefault();\r\n }\r\n\r\n const loginData = await logout(state.sessionId);\r\n\r\n if (loginData.error) {\r\n if (loginData.error.includes('SID not found')) {\r\n showAlertMessage({\r\n alertTitle: 'Authorization',\r\n alertTxt: 'Authorization failed',\r\n alertType: AlertType.error,\r\n onHide: AlertOnHide.goToHome,\r\n alertdispatch: alertdispatch,\r\n });\r\n }\r\n } else {\r\n dispatch({ type: 'LOGOUT' });\r\n vsdispatch({ type: 'ONDISCONNECT' });\r\n vsdispatch({ type: 'CLOSEALLAPPOINTMENTCHATS' });\r\n vsdispatch({ type: 'SETAUDIOMUTED', audioMuted: false });\r\n tmdispatch({ type: 'RESETALL' });\r\n qdispatch({ type: 'RESETQUESTIONNAIRE' });\r\n executeruledispatch({ type: 'RESETRULEPROPERTIES' });\r\n navigate('/');\r\n }\r\n };\r\n\r\n return {\r\n handleLogout,\r\n };\r\n};\r\n\r\nexport const useHandleLogoutWL = () => {\r\n const navigate = useNavigate();\r\n const { vsdispatch } = useContext(VideochatContext);\r\n const { tmdispatch } = useContext(TerminierungContext);\r\n const { qdispatch } = useContext(QuestionnaireContext);\r\n const { executeruledispatch } = useContext(ExecuteRuleContext);\r\n\r\n const handleLogout = async (\r\n event?: React.MouseEvent | React.MouseEvent,\r\n ) => {\r\n if (event !== undefined) {\r\n event.preventDefault();\r\n }\r\n\r\n vsdispatch({ type: 'ONDISCONNECT' });\r\n vsdispatch({ type: 'SETAUDIOMUTED', audioMuted: false });\r\n tmdispatch({ type: 'RESETALL' });\r\n qdispatch({ type: 'RESETQUESTIONNAIRE' });\r\n executeruledispatch({ type: 'RESETRULEPROPERTIES' });\r\n navigate('/');\r\n };\r\n\r\n return {\r\n handleLogout,\r\n };\r\n};\r\n\r\nexport const useHandleLogoutAfterIdleTime = () => {\r\n const { dispatch } = useContext(LoginContext);\r\n const { vsdispatch } = useContext(VideochatContext);\r\n const { tmdispatch } = useContext(TerminierungContext);\r\n const { qdispatch } = useContext(QuestionnaireContext);\r\n\r\n const { executeruledispatch } = useContext(ExecuteRuleContext);\r\n\r\n const handleLogoutAfterIdleTime = () => {\r\n dispatch({ type: 'LOGOUT' });\r\n vsdispatch({ type: 'ONDISCONNECT' });\r\n vsdispatch({ type: 'CLOSEALLAPPOINTMENTCHATS' });\r\n vsdispatch({ type: 'SETAUDIOMUTED', audioMuted: false });\r\n tmdispatch({ type: 'RESETALL' });\r\n qdispatch({ type: 'RESETQUESTIONNAIRE' });\r\n executeruledispatch({ type: 'RESETRULEPROPERTIES' });\r\n };\r\n\r\n return {\r\n handleLogoutAfterIdleTime,\r\n };\r\n};\r\n\r\nexport const useHandleLogoutCheckIn = () => {\r\n const { dispatch } = useContext(LoginContext);\r\n const { vsdispatch } = useContext(VideochatContext);\r\n const { tmdispatch } = useContext(TerminierungContext);\r\n const { qdispatch } = useContext(QuestionnaireContext);\r\n const { executeruledispatch } = useContext(ExecuteRuleContext);\r\n const { checkindispatch } = useContext(CheckInContext);\r\n\r\n const { getSelectedResource } = useAppointmentSelection();\r\n\r\n const handleLogoutCheckIn = () => {\r\n dispatch({ type: 'LOGOUT' });\r\n vsdispatch({ type: 'ONDISCONNECT' });\r\n vsdispatch({ type: 'CLOSEALLAPPOINTMENTCHATS' });\r\n vsdispatch({ type: 'SETAUDIOMUTED', audioMuted: false });\r\n tmdispatch({ type: 'RESETALL' });\r\n qdispatch({ type: 'RESETQUESTIONNAIRE' });\r\n checkindispatch({ type: 'RESETALL' });\r\n executeruledispatch({ type: 'RESETRULEPROPERTIES' });\r\n\r\n const resource_1 = getSelectedResource(1);\r\n if (resource_1) {\r\n unblockAppointment(resource_1);\r\n }\r\n };\r\n\r\n return {\r\n handleLogoutCheckIn,\r\n };\r\n};\r\n\r\nexport default useHandleLogout;\r\n","import { moment } from '../../globals/global';\r\nimport { IAppointment } from '../../utils/appointmentUtils';\r\n\r\nexport function startDate(data: IAppointment) {\r\n const dateStart = moment(data.start);\r\n const dateEnd = moment(data.end);\r\n if (dateStart.isSame(dateEnd, 'day')) {\r\n // return dateStart.format(dateStart.isSame(moment(), 'year') ? 'dddd, DoMMM' : 'dddd, DoMMM YYYY');\r\n return dateStart.format('dddd, DoMMM YYYY');\r\n } else {\r\n // return (\r\n // dateStart.format(dateStart.isSame(moment(), 'year') ? 'dd, DoMMM' : 'dd, DoMMM YYYY') +\r\n // ' - ' +\r\n // dateEnd.format(dateEnd.isSame(moment(), 'year') ? 'dd, DoMMM' : 'dd, DoMMM YYYY')\r\n // );\r\n return dateStart.format('dd, DoMMM YYYY') + ' - ' + dateEnd.format('dd, DoMMM YYYY');\r\n }\r\n}\r\n\r\nfunction startTime(data: IAppointment) {\r\n const dateStart = moment(data.start);\r\n const dateEnd = moment(data.end);\r\n let supressDuration;\r\n if (data.modifierExtension) {\r\n for (const ext of data.modifierExtension) {\r\n if (ext.url == 'http://www.principa.siegele-software.com/suppressDuration' && ext.valueBoolean) {\r\n supressDuration = true;\r\n }\r\n }\r\n } else {\r\n supressDuration = data.supressDuration;\r\n }\r\n\r\n if (dateStart.isSame(dateEnd, 'day')) {\r\n if (supressDuration) {\r\n return dateStart.format(`HH:mm`);\r\n }\r\n return dateStart.format(`HH:mm - ${dateEnd.format('HH:mm')}`);\r\n }\r\n}\r\n\r\nconst AppointmentDate = (props: IAppointment) => {\r\n return (\r\n
\r\n
{startDate(props)}
\r\n
{startTime(props)} Uhr
\r\n
\r\n );\r\n};\r\n\r\nexport default AppointmentDate;\r\n","import { useContext, useEffect, useState } from 'react';\r\nimport Badge from 'react-bootstrap/Badge';\r\nimport Nav from 'react-bootstrap/Nav';\r\nimport { BsChatDots } from 'react-icons/bs';\r\nimport VideochatContext from '../../context/videochatContext';\r\nimport { IAppointment } from '../../utils/appointmentUtils';\r\nimport { isDateToday } from '../../utils/dateUtils';\r\nimport Chat, { getAppointmentChatEntry, IAppointmentChat, IIncomingMessage, MessageIdType } from '../Chat/Chat';\r\nimport MyTooltip from '../Tooltip/MyTooltip';\r\nimport { StyledAppointmentCardFooter } from './StyledCard';\r\n\r\ninterface IAppointmentChatIcon extends IAppointment {\r\n chatOpen: boolean;\r\n numberUnreadMsg?: number;\r\n}\r\n\r\nexport const AppointmentChatIcon = (props: IAppointmentChatIcon) => {\r\n const { vsstate, vsdispatch } = useContext(VideochatContext);\r\n const [numberUnread, setNumberUnread] = useState(0);\r\n const [showUnreadBadge, setShowUnreadBadge] = useState(false);\r\n\r\n useEffect(() => {\r\n const numberUnreadMsg = getNumberUnreadMessages();\r\n if (!props.chatOpen && numberUnreadMsg && numberUnreadMsg > 0) {\r\n setNumberUnread(numberUnreadMsg);\r\n setShowUnreadBadge(true);\r\n }\r\n }, [vsstate.appointmentChat, vsstate.numberUnreadMessages]);\r\n\r\n const toggleChatOpen = (currentChatOpenStatus: boolean) => {\r\n let appointmentChat;\r\n\r\n const appointmentChatEntry = getAppointmentChatEntry(vsstate.appointmentChat, props.id);\r\n if (appointmentChatEntry) {\r\n appointmentChat = vsstate.appointmentChat.map((item) => {\r\n if (item.id === props.id) {\r\n item.numberUnreadMsg = 0;\r\n }\r\n return item;\r\n });\r\n }\r\n\r\n setNumberUnread(0);\r\n setShowUnreadBadge(false);\r\n\r\n vsdispatch({\r\n type: 'SETAPPOINTMENTCHAT',\r\n appointmentChat: appointmentChat,\r\n });\r\n\r\n return !currentChatOpenStatus;\r\n };\r\n\r\n const getNumberUnreadMessages = () => {\r\n const appointmentChatEntry = getAppointmentChatEntry(vsstate.appointmentChat, props.id);\r\n return appointmentChatEntry?.numberUnreadMsg;\r\n };\r\n\r\n const handleChatIconClick = () => {\r\n let appointmentChat;\r\n\r\n const appointmentChatEntry = getAppointmentChatEntry(vsstate.appointmentChat, props.id);\r\n if (appointmentChatEntry) {\r\n appointmentChat = vsstate.appointmentChat.map((item) => {\r\n if (item.id === props.id) {\r\n if (!item.chatOpen) {\r\n item.numberUnreadMsg = 0;\r\n setNumberUnread(0);\r\n setShowUnreadBadge(false);\r\n }\r\n item.chatOpen = toggleChatOpen(item.chatOpen);\r\n }\r\n return item;\r\n });\r\n } else {\r\n const appChatValue: IAppointmentChat = {\r\n id: props.id,\r\n chatOpen: true,\r\n };\r\n appointmentChat = vsstate.appointmentChat;\r\n appointmentChat.push(appChatValue);\r\n }\r\n\r\n vsdispatch({\r\n type: 'SETAPPOINTMENTCHAT',\r\n appointmentChat: appointmentChat,\r\n });\r\n };\r\n\r\n return (\r\n
\r\n handleChatIconClick()}>\r\n }\r\n >\r\n \r\n {showUnreadBadge && (\r\n \r\n {numberUnread}\r\n \r\n )}\r\n
\r\n );\r\n};\r\n\r\nexport const AppointmentChat = (props: IAppointment) => {\r\n const [allIncomingMessages, setAllIncomingMessages] = useState([]);\r\n const { vsstate } = useContext(VideochatContext);\r\n useEffect(() => {\r\n getAllIncomingMessages(props);\r\n }, []);\r\n\r\n useEffect(() => {\r\n const appointmentChatEntry = getAppointmentChatEntry(vsstate.appointmentChat, props.id);\r\n if (appointmentChatEntry) {\r\n if (appointmentChatEntry.incomingMessages) {\r\n setAllIncomingMessages(appointmentChatEntry.incomingMessages);\r\n }\r\n }\r\n // return () => {\r\n // cleanup\r\n // }\r\n }, [vsstate.appointmentChat]);\r\n\r\n const getAllIncomingMessages = (props: IAppointment) => {\r\n if (props.extension) {\r\n props.extension.forEach((extension: any) => {\r\n if (extension.url.endsWith('ChatEntries')) {\r\n const incomingMessages = extension.valueString;\r\n const allMsg: IIncomingMessage[] = JSON.parse(incomingMessages);\r\n setAllIncomingMessages(allMsg);\r\n }\r\n });\r\n }\r\n };\r\n\r\n return (\r\n
\r\n \r\n \r\n \r\n
\r\n );\r\n};\r\n","import { useContext } from 'react';\r\nimport { useNavigate } from 'react-router-dom';\r\nimport TerminierungContext from '../../context/terminierungContext';\r\nimport { Paths } from '../../Routes';\r\nimport { IAppointment } from '../../utils/appointmentUtils';\r\nimport { translateStatus } from '../../utils/pcpUtils';\r\nimport { StyledBadge } from '../Badges/StyledBadge';\r\nimport MyTooltip from '../Tooltip/MyTooltip';\r\n\r\nconst CompleteAppointmentBadge = (props: IAppointment) => {\r\n const navigate = useNavigate();\r\n const { tmdispatch } = useContext(TerminierungContext);\r\n\r\n const handleCompleteAppointment = () => {\r\n tmdispatch({\r\n type: 'SETCANCELNEWAPPOINTMENTDATA',\r\n cancelNewAppointmentData: {\r\n showModal: false,\r\n data: props,\r\n reason: '',\r\n },\r\n });\r\n tmdispatch({\r\n type: 'SELECTCATEGORY',\r\n selectedCategory: {\r\n name: props.serviceType[0].coding[0].display,\r\n id: props.serviceType[0].coding[0].id,\r\n countAPKs: 2,\r\n oneMacro: false,\r\n },\r\n });\r\n navigate(Paths.TERMINIERUNG_ALTERNATE_DATE);\r\n };\r\n\r\n return (\r\n <>\r\n handleCompleteAppointment()}>\r\n {translateStatus(props.status)}\r\n \r\n }\r\n >\r\n \r\n );\r\n};\r\n\r\nexport default CompleteAppointmentBadge;\r\n","import { StyledBadge } from '../../components/Badges/StyledBadge';\r\nimport { appointmentStatus } from '../../globals/global';\r\nimport { IAppointment } from '../../utils/appointmentUtils';\r\nimport { translateStatus } from '../../utils/pcpUtils';\r\nimport CompleteAppointmentBadge from './CompleteAppointment';\r\n\r\nconst AppointmentStatus = (props: IAppointment) => {\r\n if (props.status === appointmentStatus.enteredInError) {\r\n return ;\r\n } else {\r\n return (\r\n \r\n {translateStatus(props.status)}\r\n \r\n );\r\n }\r\n};\r\n\r\nexport default AppointmentStatus;\r\n","import * as React from 'react';\r\nimport Col from 'react-bootstrap/Col';\r\nimport Container from 'react-bootstrap/Container';\r\nimport Form from 'react-bootstrap/Form';\r\nimport Modal from 'react-bootstrap/Modal';\r\nimport Row from 'react-bootstrap/Row';\r\nimport StyledButton from '../../Buttons/StyledButton';\r\nimport StyledCol from '../../Cols/StyledCol';\r\nimport { StyledFormLabelForInput } from '../../StyledForm/SyledForm';\r\nimport { StyledModal } from '../StyledModal/StyledModal';\r\n\r\ninterface ICancelAppointmentModal {\r\n show: boolean;\r\n onHide: () => void;\r\n onInput: (reason: string) => void;\r\n onSubmit: () => void;\r\n commentPossible: boolean;\r\n}\r\n\r\nconst CancelAppointmentModal = (props: ICancelAppointmentModal) => {\r\n const handleSubmit = (event: React.FormEvent) => {\r\n event.preventDefault();\r\n const form = event.currentTarget;\r\n if (form.checkValidity() === false) {\r\n event.preventDefault();\r\n event.stopPropagation();\r\n }\r\n {\r\n props.onSubmit();\r\n }\r\n };\r\n\r\n return (\r\n \r\n \r\n Termin stornieren\r\n \r\n
\r\n \r\n
\r\n \r\n {props.commentPossible && (\r\n \r\n \r\n \r\n Stornierungsgrund\r\n
\r\n {\r\n props.onInput(e.target.value);\r\n }}\r\n />\r\n
\r\n \r\n
\r\n )}\r\n
\r\n
\r\n \r\n \r\n Abbrechen\r\n \r\n \r\n
\r\n
\r\n \r\n Termin stornieren\r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n {/* \r\n
Wollen Sie den Termin wirklich stornieren?
\r\n
\r\n
\r\n \r\n Abbrechen\r\n \r\n
\r\n
\r\n \r\n Termin stornieren\r\n \r\n
\r\n
\r\n
*/}\r\n \r\n );\r\n};\r\n\r\nexport default CancelAppointmentModal;\r\n","import { useContext, useState } from 'react';\r\nimport * as React from 'react';\r\nimport Nav from 'react-bootstrap/Nav';\r\nimport { AiOutlineMinusCircle } from 'react-icons/ai';\r\nimport { useNavigate } from 'react-router-dom';\r\nimport { ThemeContext } from 'styled-components';\r\nimport AlertContext, { AlertOnHide, AlertType } from '../../context/alertContext';\r\nimport LoginContext from '../../context/loginContext';\r\nimport TerminierungContext from '../../context/terminierungContext';\r\nimport { Paths } from '../../Routes';\r\nimport { cancelAppointment } from '../../services/fhir/FHIRAppointment';\r\nimport { cancelEnrollment } from '../../services/RestServices';\r\nimport { showAlertMessage } from '../../utils/alertHandling';\r\nimport { IAppointment } from '../../utils/appointmentUtils';\r\nimport CancelAppointmentModal from '../Modals/CancelAppointmentModal/CancelAppointmentModal';\r\nimport MyTooltip from '../Tooltip/MyTooltip';\r\n\r\nconst CancelAppointment = (props: IAppointment) => {\r\n const navigate = useNavigate();\r\n const themeContext = useContext(ThemeContext);\r\n const { alertdispatch } = useContext(AlertContext);\r\n const { state } = useContext(LoginContext);\r\n const { tmdispatch } = useContext(TerminierungContext);\r\n const [cancelModalShow, setCancelModalShow] = React.useState(false);\r\n const [reason, setReason] = useState('');\r\n\r\n const handleSubmit = async () => {\r\n /* appointment without login */\r\n if (props.enrollCode) {\r\n const cancelRes: any = await cancelEnrollment(props.enrollCode, alertdispatch, reason);\r\n setCancelModalShow(false);\r\n if (cancelRes.info === 'Die Anmeldung ist erfolgreich abgesagt worden.') {\r\n showAlertMessage({\r\n alertTitle: 'Terminabsage',\r\n alertTxt: 'Der Termin wurde erfolgreich abgesagt',\r\n alertType: AlertType.info,\r\n onHide: AlertOnHide.custom,\r\n onHideCustom: onHideAlertModal,\r\n alertdispatch: alertdispatch,\r\n });\r\n } else {\r\n showAlertMessage({\r\n alertTitle: 'Terminabsage',\r\n alertTxt: 'Es ist ein Fehler bei der Terminabsage aufgetreten.',\r\n alertType: AlertType.error,\r\n onHide: AlertOnHide.custom,\r\n onHideCustom: onHideAlertModal,\r\n alertdispatch: alertdispatch,\r\n });\r\n }\r\n\r\n /* appointment with login */\r\n } else {\r\n const cancelRes = await cancelAppointment(state.sessionId, props.id, reason, alertdispatch);\r\n // console.log('cancelRes: ', cancelRes);\r\n if (cancelRes) {\r\n if (cancelRes.ERROR) {\r\n showAlertMessage({\r\n alertTitle: 'Terminabsage',\r\n alertTxt: cancelRes.ERROR,\r\n alertType: AlertType.error,\r\n onHide: AlertOnHide.custom,\r\n onHideCustom: onHideAlertModal,\r\n alertdispatch: alertdispatch,\r\n });\r\n } else {\r\n setCancelModalShow(false);\r\n setReason('');\r\n tmdispatch({\r\n type: 'CANCELEDAPPOINTMENT',\r\n canceledAppointment: true,\r\n });\r\n\r\n /* ask for making alternative date */\r\n if (cancelRes.data.contained) {\r\n tmdispatch({\r\n type: 'SETCANCELNEWAPPOINTMENTDATA',\r\n cancelNewAppointmentData: {\r\n showModal: true,\r\n data: cancelRes.data,\r\n reason: reason,\r\n },\r\n });\r\n }\r\n }\r\n }\r\n }\r\n };\r\n\r\n const onHideAlertModal = () => {\r\n if (props.enrollCode) {\r\n navigate(Paths.HOME);\r\n }\r\n };\r\n\r\n return (\r\n
\r\n setCancelModalShow(true)}>\r\n }\r\n >\r\n \r\n setCancelModalShow(false)}\r\n onInput={(reason: string) => setReason(reason)}\r\n onSubmit={handleSubmit}\r\n commentPossible={true} //comment only with login appointments\r\n />\r\n
\r\n );\r\n};\r\n\r\nexport default CancelAppointment;\r\n","import { useContext } from 'react';\r\nimport Nav from 'react-bootstrap/Nav';\r\nimport { FaBed } from 'react-icons/fa';\r\nimport { ThemeContext } from 'styled-components';\r\nimport TerminierungContext from '../../context/terminierungContext';\r\nimport MyTooltip from '../Tooltip/MyTooltip';\r\n\r\nconst InpatientAppointment = () => {\r\n const themeContext = useContext(ThemeContext);\r\n const { tmdispatch } = useContext(TerminierungContext);\r\n\r\n const inpatientAppointment = async () => {\r\n /*\r\n tmdispatch({\r\n type: 'SETCANCELNEWAPPOINTMENTDATA',\r\n cancelNewAppointmentData: {\r\n showModal: false,\r\n data: props,\r\n reason: APPOINTMENT_POSTPONE_REASON,\r\n },\r\n });\r\n */\r\n };\r\n\r\n return (\r\n
\r\n inpatientAppointment()}>\r\n }\r\n >\r\n \r\n
\r\n );\r\n};\r\n\r\nexport default InpatientAppointment;\r\n","import { useContext } from 'react';\r\nimport { FaHospitalAlt, FaUserNurse } from 'react-icons/fa';\r\nimport { ThemeContext } from 'styled-components';\r\nimport AppPropsContext from '../../context/appPropsContext';\r\nimport TerminierungContext from '../../context/terminierungContext';\r\nimport {\r\n APPOINTMENTTYPE_CAREUNIT,\r\n APPOINTMENTTYPE_DEPARTMENT,\r\n APPOINTMENTTYPE_PRACTITIONER,\r\n APPOINTMENTTYPE_ROOM,\r\n IParticipant,\r\n getLongNameFromAppointmentData,\r\n getParticipantType,\r\n} from '../../utils/appointmentUtils';\r\n\r\nconst Participants = (props: IParticipant) => {\r\n const themeContext = useContext(ThemeContext);\r\n const { apstate } = useContext(AppPropsContext);\r\n const { tmstate } = useContext(TerminierungContext);\r\n\r\n function renderActor(props: IParticipant) {\r\n const showDepartment = apstate.AppointmentSummary.fach;\r\n const showCareUnit = apstate.AppointmentSummary.pflege;\r\n const showRoom = apstate.AppointmentSummary.raum;\r\n const showPractitioner = apstate.AppointmentSummary.behandler;\r\n\r\n const ptype = getParticipantType(props);\r\n\r\n /* Displaying */\r\n if (props.actor.display === '') {\r\n return <>;\r\n } else {\r\n const displayValue = getLongNameFromAppointmentData(props.actor.display);\r\n //const displayValue = props.actor.display;\r\n\r\n switch (ptype) {\r\n case APPOINTMENTTYPE_DEPARTMENT:\r\n if (showDepartment) {\r\n return (\r\n
\r\n {displayValue}\r\n
\r\n );\r\n } else {\r\n return <>;\r\n }\r\n case APPOINTMENTTYPE_CAREUNIT:\r\n if (showCareUnit) {\r\n return (\r\n
\r\n {displayValue}\r\n
\r\n );\r\n } else {\r\n return <>;\r\n }\r\n\r\n case APPOINTMENTTYPE_ROOM:\r\n if (showRoom) {\r\n return (\r\n
\r\n {displayValue}\r\n
\r\n );\r\n } else {\r\n return <>;\r\n }\r\n\r\n case APPOINTMENTTYPE_PRACTITIONER:\r\n if (showPractitioner) {\r\n return (\r\n
\r\n {displayValue}\r\n
\r\n );\r\n } else {\r\n return <>;\r\n }\r\n\r\n default:\r\n // TODO: add exception for unkown actor.reference\r\n return <>;\r\n }\r\n }\r\n }\r\n\r\n return renderActor(props);\r\n};\r\n\r\nexport default Participants;\r\n","import { useContext } from 'react';\r\nimport Nav from 'react-bootstrap/Nav';\r\nimport { BiCalendarEdit } from 'react-icons/bi';\r\nimport { ThemeContext } from 'styled-components';\r\nimport TerminierungContext from '../../context/terminierungContext';\r\nimport { APPOINTMENT_POSTPONE_REASON, IAppointment } from '../../utils/appointmentUtils';\r\nimport MyTooltip from '../Tooltip/MyTooltip';\r\n\r\nconst PostponeAppointment = (props: IAppointment) => {\r\n const themeContext = useContext(ThemeContext);\r\n const { tmdispatch } = useContext(TerminierungContext);\r\n\r\n const postponeAppointment = async () => {\r\n tmdispatch({\r\n type: 'SETCANCELNEWAPPOINTMENTDATA',\r\n cancelNewAppointmentData: {\r\n showModal: false,\r\n data: props,\r\n reason: APPOINTMENT_POSTPONE_REASON,\r\n },\r\n });\r\n };\r\n\r\n return (\r\n
\r\n postponeAppointment()}>\r\n }\r\n >\r\n \r\n
\r\n );\r\n};\r\n\r\nexport default PostponeAppointment;\r\n","import { useContext, useEffect, useState } from 'react';\r\nimport Col from 'react-bootstrap/Col';\r\nimport Container from 'react-bootstrap/Container';\r\nimport Row from 'react-bootstrap/Row';\r\nimport { FaHospitalAlt } from 'react-icons/fa';\r\nimport { useNavigate } from 'react-router-dom';\r\nimport styled, { ThemeContext } from 'styled-components';\r\nimport { Paths } from '../../Routes';\r\nimport AppointmentDate, { startDate } from '../../components/Cards/AppointmentDate';\r\nimport {\r\n StyledAppointmentCard,\r\n StyledAppointmentCardBody,\r\n StyledAppointmentCardFooter,\r\n StyledAppointmentCardHeader,\r\n} from '../../components/Cards/StyledCard';\r\nimport AppPropsContext from '../../context/appPropsContext';\r\nimport LoginContext from '../../context/loginContext';\r\nimport TerminierungContext from '../../context/terminierungContext';\r\nimport VideochatContext from '../../context/videochatContext';\r\nimport { appointmentStatus } from '../../globals/global';\r\nimport {\r\n APPOINTMENTTYPE_DEPARTMENT,\r\n IAppointment,\r\n IParticipant,\r\n getMacroNameFromAppointment,\r\n getParticipantType,\r\n getSelectedReasonFromAppointment,\r\n isAppSeriesAppointment,\r\n sortParticipantsForCard,\r\n} from '../../utils/appointmentUtils';\r\nimport StyledButton from '../Buttons/StyledButton';\r\nimport { isChatOpen } from '../Chat/Chat';\r\nimport {\r\n AppointmentCardButtonCol,\r\n AppointmentCardDateCol,\r\n AppointmentCardHeaderStatusButtonCol,\r\n AppointmentCardStatusCol,\r\n} from '../Cols/StyledCol';\r\nimport { AppointmentCardStatusButtonRow } from '../Rows/StyledRow';\r\nimport { AppointmentChat, AppointmentChatIcon } from './AppointmentChat';\r\nimport AppointmentStatus from './AppointmentStatus';\r\nimport CancelAppointment from './CancelAppointment';\r\nimport InpatientAppointment from './InpatientAppointment';\r\nimport Participants from './Participants';\r\nimport PostponeAppointment from './PostponeAppointment';\r\nconst moment = require('moment');\r\n\r\nconst DetailsButtonParentDiv = styled.div`\r\n background-color: white;\r\n text-align: right;\r\n`;\r\n\r\nconst DetailsButton = styled(StyledButton)`\r\n width: 50%;\r\n margin-left: 10px;\r\n margin-right: 10px;\r\n margin-bottom: 10px;\r\n`;\r\n\r\nfunction displayParticipants(appointment: IAppointment, standort?: string, color?: string) {\r\n const sortedParticipant = sortParticipantsForCard(appointment.participant);\r\n\r\n const allParticipants: any[] = [];\r\n\r\n if (standort && standort.length > 0) {\r\n allParticipants.push(\r\n
\r\n {standort}\r\n
,\r\n );\r\n }\r\n\r\n const participants = sortedParticipant.map((data: IParticipant, index: number) => (\r\n
\r\n \r\n
\r\n ));\r\n\r\n allParticipants.push(participants);\r\n return allParticipants;\r\n}\r\n\r\nconst AppointmentCard = (props: IAppointment) => {\r\n const { apstate } = useContext(AppPropsContext);\r\n const { vsstate } = useContext(VideochatContext);\r\n const { tmstate } = useContext(TerminierungContext);\r\n const themeContext = useContext(ThemeContext);\r\n const [chatOpen, setChatOpen] = useState(false);\r\n const { state, dispatch } = useContext(LoginContext);\r\n const navigate = useNavigate();\r\n\r\n useEffect(() => {\r\n // const isChatOpen = () => {\r\n // let appointmentChatEntry = vsstate.appointmentChat.find((e) => e.id === props.id);\r\n // if (appointmentChatEntry) {\r\n // return appointmentChatEntry.chatOpen;\r\n // }\r\n // return false;\r\n // };\r\n\r\n if (isChatOpen(vsstate.appointmentChat, props.id)) {\r\n setChatOpen(true);\r\n } else {\r\n setChatOpen(false);\r\n }\r\n }, [JSON.stringify(vsstate.appointmentChat)]);\r\n\r\n const showMacroName = () => {\r\n let macroName = getMacroNameFromAppointment(props);\r\n if (macroName.length <= 0) {\r\n macroName = tmstate.selectedCategory.name;\r\n }\r\n\r\n return (\r\n \r\n \r\n
{macroName}
\r\n \r\n
\r\n );\r\n };\r\n\r\n const showReason = () => {\r\n let name = '';\r\n const selectedReason = getSelectedReasonFromAppointment(props);\r\n\r\n if (selectedReason && selectedReason.length > 0) {\r\n name = selectedReason;\r\n } else if (tmstate.selectedReason && tmstate.selectedReason.reasonName) {\r\n name = tmstate.selectedReason.reasonName;\r\n } else {\r\n /* if no reason, fallback to macro */\r\n const macroName = getMacroNameFromAppointment(props);\r\n if (macroName.length <= 0) {\r\n name = tmstate.selectedCategory.name;\r\n } else {\r\n name = macroName;\r\n }\r\n }\r\n\r\n return (\r\n \r\n \r\n
{name}
\r\n \r\n
\r\n );\r\n };\r\n\r\n const isInpatient = () => {\r\n if (!props.extension) {\r\n return false;\r\n }\r\n for (const ext of props.extension) {\r\n if (ext.url === 'http://www.principa.siegele-software.com/isInpatient' && ext.valueBoolean == true) {\r\n return true;\r\n }\r\n }\r\n return false;\r\n };\r\n\r\n const showPostponeAppointmentIcon = () => {\r\n let showIcon = true;\r\n const dateStart = moment(props.start);\r\n const today = moment();\r\n if (dateStart.isSame(today, 'day')) {\r\n const startHour = dateStart.format('HH');\r\n if (startHour === '00') {\r\n showIcon = false; //then we asume that it is a Soforttermin\r\n }\r\n }\r\n if (isAppSeriesAppointment(props)) {\r\n showIcon = false;\r\n }\r\n if (isInpatient()) {\r\n showIcon = false;\r\n }\r\n\r\n return showIcon;\r\n };\r\n\r\n const getEncounterTitle = () => {\r\n const sortedParticipant = sortParticipantsForCard(props.participant);\r\n let department = '';\r\n for (const data of sortedParticipant) {\r\n const ptype = getParticipantType(data);\r\n if (ptype === APPOINTMENTTYPE_DEPARTMENT) {\r\n department = data.actor.display;\r\n break;\r\n }\r\n }\r\n return startDate(props) + ' - ' + department;\r\n };\r\n const activateEncounter = () => {\r\n dispatch({\r\n type: 'SETENCOUNTER',\r\n encounterId: props.id,\r\n encounterTitle: getEncounterTitle(),\r\n });\r\n navigate(Paths.JOURNEY);\r\n };\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {props.isCancelable &&\r\n props.status !== appointmentStatus.cancelled &&\r\n props.status !== appointmentStatus.arrived ? (\r\n <>\r\n {showPostponeAppointmentIcon() ? (\r\n \r\n ) : (\r\n <>\r\n )}\r\n {isInpatient() ? <> : }\r\n \r\n ) : (\r\n <>\r\n )}\r\n {props.showChatIcon && props.showChatIcon === true && !isInpatient() ? (\r\n <>\r\n \r\n \r\n ) : (\r\n <>\r\n )}\r\n {isInpatient() ? (\r\n <>\r\n \r\n \r\n ) : (\r\n <>\r\n )}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {/* {showMacroName()} */}\r\n {showReason()}\r\n \r\n \r\n {displayParticipants(\r\n props,\r\n apstate.AppointmentSummary.standort ? tmstate.journeyData.site : '',\r\n themeContext.icon.passive.color,\r\n )}\r\n \r\n \r\n \r\n {props.comment ? (\r\n <>\r\n
\r\n \r\n {props.comment}\r\n \r\n
\r\n \r\n ) : (\r\n <>\r\n )}\r\n {state.activeUserId && state.activeUserId != '0' && state.isLoggedIn ? (\r\n \r\n \r\n Details\r\n \r\n \r\n ) : (\r\n <>\r\n )}\r\n {chatOpen ? : <>}\r\n
\r\n \r\n );\r\n};\r\n\r\nexport default AppointmentCard;\r\n","import * as React from 'react';\r\nimport { IQuestionnaireWL } from '../../container/Fragebogen/QuestionnaireWL';\r\nimport { AlertOnHide, AlertType } from '../../context/alertContext';\r\nimport { InitialLoginType } from '../../context/loginContext';\r\nimport { InitialQuestionnaireType } from '../../context/questionnaireContext';\r\nimport { getBaseURL, getFhirURL } from '../../globals/global';\r\nimport { responseErrorHandling } from '../../utils/errorHandling';\r\nimport { getFHIRConfig } from './fhirConstants';\r\n\r\nconst fhir = require('fhir.js');\r\n\r\nconst QUESSTIONNAIRE_RESPONSE = 'QuestionnaireResponse';\r\n\r\nexport const GET = 'GET';\r\nexport const POST = 'POST';\r\nexport const PUT = 'PUT';\r\n\r\nexport const fetchOptions = (method: string, sessionId: string) => ({\r\n method: method,\r\n headers: {\r\n Accept: '*/*',\r\n 'Content-Type': 'application/json',\r\n Authorization: sessionId,\r\n },\r\n});\r\n\r\nexport const getQuestionnaires = async (state: InitialLoginType, alertdispatch: React.Dispatch) => {\r\n return await fhir(getFHIRConfig(state.sessionId))\r\n .search({\r\n type: 'Questionnaire',\r\n query: { patRoleId: state.activeUserId, requestTime: new Date().toISOString() },\r\n })\r\n .catch(function (e: any) {\r\n responseErrorHandling({\r\n response: e,\r\n alertdispatch: alertdispatch,\r\n });\r\n });\r\n};\r\n\r\nexport const getQuestionnaireById = async (\r\n state: InitialLoginType,\r\n request: string,\r\n alertdispatch: React.Dispatch,\r\n) => {\r\n return await fhir(getFHIRConfig(state.sessionId))\r\n .search({\r\n type: 'Questionnaire',\r\n query: { name: request, patRoleId: state.activeUserId, requestTime: new Date().toISOString() },\r\n })\r\n .catch(function (e: any) {\r\n responseErrorHandling({\r\n response: e,\r\n alertdispatch: alertdispatch,\r\n });\r\n });\r\n};\r\n\r\nexport const getQuestionnaireByFHIRId = async (\r\n state: InitialLoginType,\r\n fhirId: string,\r\n encounterId: string,\r\n alertdispatch: React.Dispatch,\r\n) => {\r\n return await fhir(getFHIRConfig(state.sessionId))\r\n .search({\r\n type: 'Questionnaire',\r\n query: {\r\n id: fhirId,\r\n patRoleId: state.activeUserId,\r\n encounterId: encounterId,\r\n requestTime: new Date().toISOString(),\r\n },\r\n })\r\n .catch(function (e: any) {\r\n responseErrorHandling({\r\n response: e,\r\n alertdispatch: alertdispatch,\r\n });\r\n });\r\n};\r\n\r\nexport const getQuestionnaireContent = async (\r\n sessionId: string,\r\n request: string,\r\n alertdispatch: React.Dispatch,\r\n) => {\r\n return await fhir(getFHIRConfig(sessionId))\r\n .search({\r\n type: request,\r\n })\r\n .catch(function (e: any) {\r\n responseErrorHandling({\r\n response: e,\r\n alertdispatch: alertdispatch,\r\n });\r\n });\r\n};\r\n\r\nexport const deleteQuestionnaireContent = async (\r\n state: InitialLoginType,\r\n qId: string,\r\n alertdispatch: React.Dispatch,\r\n) => {\r\n return await fhir(getFHIRConfig(state.sessionId))\r\n .delete({\r\n type: 'QuestionnaireResponse/' + qId,\r\n })\r\n .catch(function (e: any) {\r\n responseErrorHandling({\r\n response: e,\r\n alertdispatch: alertdispatch,\r\n });\r\n });\r\n};\r\n\r\nexport const getQuestionnaireOTPAuth = async (state: IQuestionnaireWL) => {\r\n const session = 'PCP ' + state.otp;\r\n\r\n const query: IQuestionnaireWL = {\r\n name: state.name,\r\n userId: state.userId,\r\n t0: state.t0,\r\n requestTime: new Date().toISOString(),\r\n };\r\n\r\n if (state.reason) {\r\n query.reason = state.reason;\r\n }\r\n\r\n let baseUrl = state.baseURL;\r\n if (baseUrl !== undefined && !baseUrl?.endsWith('/fhir')) {\r\n baseUrl = baseUrl + '/fhir';\r\n }\r\n\r\n const response = await fhir(getFHIRConfig(session, baseUrl)).search({\r\n type: 'Questionnaire',\r\n query,\r\n });\r\n\r\n if (response?.data && response.data?.entry && response.data.entry.length > 0) {\r\n return response;\r\n } else {\r\n return null;\r\n }\r\n};\r\n\r\nexport const sendQuestionnaire = async (\r\n state: InitialLoginType,\r\n qstate: InitialQuestionnaireType,\r\n alertdispatch: React.Dispatch,\r\n status: string,\r\n targetPatId: number,\r\n) => {\r\n let userId = '';\r\n let sessionId = '';\r\n if (qstate.isExternalRequest) {\r\n userId = qstate.externalUserId;\r\n sessionId = qstate.externalOTP;\r\n } else {\r\n userId = state.activeUserId;\r\n sessionId = state.sessionId;\r\n }\r\n\r\n if (targetPatId > 0) {\r\n userId = targetPatId?.toString();\r\n }\r\n\r\n const qr = {\r\n resourceType: QUESSTIONNAIRE_RESPONSE,\r\n status: status,\r\n questionnaire: { reference: 'Questionnaire/' + qstate.selectedQuestionnaire.resource.id },\r\n subject: { reference: 'Patient/' + userId },\r\n authored: new Date(),\r\n context: { reference: 'Encounter/' + userId + (qstate.encounterId ? '_' + qstate.encounterId : '_null') },\r\n // context: { reference: 'Encounter/' + userId },\r\n request: {\r\n method: 'PUT',\r\n url: getFhirURL() + '/' + QUESSTIONNAIRE_RESPONSE + '/qr_' + qstate.qData.id,\r\n },\r\n item: qstate.selectedAnswers.item,\r\n };\r\n\r\n let baseurl = getBaseURL();\r\n if (qstate.externalBaseURL) {\r\n baseurl = qstate.externalBaseURL;\r\n }\r\n if (qstate.isExternalRequest) {\r\n try {\r\n const url =\r\n baseurl +\r\n '/fhir/' +\r\n 'QuestionnaireResponse?name=' +\r\n qstate.selectedQuestionnaire.resource.id +\r\n '&userId=' +\r\n userId +\r\n '&t0=' +\r\n qstate.externalT0;\r\n\r\n return await fetch(url, {\r\n ...fetchOptions(POST, sessionId),\r\n body: JSON.stringify(qr),\r\n });\r\n // return await res.json();\r\n } catch (error) {\r\n responseErrorHandling({\r\n response: error,\r\n alertdispatch: alertdispatch,\r\n alertMessage: {\r\n alertTitle: 'Fragebogen',\r\n alertTxt: 'Fehler beim senden des Fragebogens',\r\n alertType: AlertType.error,\r\n onHide: AlertOnHide.onlyClose,\r\n },\r\n });\r\n }\r\n } else {\r\n return await fhir(getFHIRConfig(sessionId))\r\n .create({\r\n resource: qr,\r\n })\r\n .catch(function (e: any) {\r\n responseErrorHandling({\r\n response: e,\r\n alertdispatch: alertdispatch,\r\n alertMessage: {\r\n alertTitle: 'Fragebogen',\r\n alertTxt: 'Fehler beim senden des Fragebogens',\r\n alertType: AlertType.error,\r\n onHide: AlertOnHide.onlyClose,\r\n },\r\n });\r\n });\r\n }\r\n};\r\n\r\nexport const updateQuestionnaireContent = async (\r\n state: InitialLoginType,\r\n qstate: InitialQuestionnaireType,\r\n alertdispatch: React.Dispatch,\r\n) => {\r\n let userId = '';\r\n let sessionId = '';\r\n if (qstate.isExternalRequest) {\r\n userId = qstate.externalUserId;\r\n sessionId = qstate.externalOTP;\r\n } else {\r\n userId = state.activeUserId;\r\n sessionId = state.sessionId;\r\n }\r\n\r\n let baseurl = getBaseURL();\r\n if (qstate.externalBaseURL) {\r\n baseurl = qstate.externalBaseURL;\r\n }\r\n if (qstate.isExternalRequest) {\r\n try {\r\n const url =\r\n baseurl +\r\n '/fhir/' +\r\n 'QuestionnaireResponse/' +\r\n qstate.questionnaireBody.data.id +\r\n '?name=' +\r\n qstate.selectedQuestionnaire.resource.name +\r\n '&userId=' +\r\n userId +\r\n '&t0=' +\r\n qstate.externalT0;\r\n\r\n return await fetch(url, {\r\n ...fetchOptions(PUT, sessionId),\r\n body: JSON.stringify(qstate.questionnaireBody.data),\r\n });\r\n // return await res.json();\r\n } catch (error) {\r\n responseErrorHandling({\r\n response: error,\r\n alertdispatch: alertdispatch,\r\n alertMessage: {\r\n alertTitle: 'Fragebogen',\r\n alertTxt: 'Fehler beim Speichern des Fragebogens',\r\n alertType: AlertType.error,\r\n onHide: AlertOnHide.onlyClose,\r\n },\r\n });\r\n }\r\n } else {\r\n return await fhir(getFHIRConfig(sessionId))\r\n .update({\r\n resource: qstate.questionnaireBody.data,\r\n })\r\n .catch(function (e: any) {\r\n responseErrorHandling({\r\n response: e,\r\n alertdispatch: alertdispatch,\r\n alertMessage: {\r\n alertTitle: 'Fragebogen',\r\n alertTxt: 'Fehler beim Speichern des Fragebogens',\r\n alertType: AlertType.error,\r\n onHide: AlertOnHide.onlyClose,\r\n },\r\n });\r\n });\r\n }\r\n};\r\n","import { createContext } from 'react';\r\n\r\nexport type InitialThemeType = {\r\n theme: string;\r\n navbarCollapsed: boolean;\r\n};\r\n\r\nexport const initialThemeState = {\r\n theme: 'PCP',\r\n navbarCollapsed: false,\r\n};\r\n\r\n// const LoginContext = createContext(initialLoginState);\r\nconst ThemeContext = createContext<{\r\n themestate: InitialThemeType;\r\n themedispatch: React.Dispatch;\r\n}>({\r\n themestate: initialThemeState,\r\n themedispatch: () => null,\r\n});\r\n\r\nexport default ThemeContext;\r\n","import { createContext } from 'react';\r\n\r\nexport interface ISignaturePadDevice {\r\n deviceName: string;\r\n serialNumber: string;\r\n firmwareVersion: string;\r\n supportsRSA: boolean;\r\n canStoreEncryptKey: boolean;\r\n padConnectionType: string;\r\n padIndex: number;\r\n displayWidth: number;\r\n displayHeight: number;\r\n xResolution: number;\r\n yResolution: number;\r\n scaleFactorX: number;\r\n scaleFactorY: number;\r\n sampleRate: number;\r\n}\r\n\r\nexport interface ISigData {\r\n pictureData: string;\r\n certId: string;\r\n rsaSignature: string;\r\n signData: string;\r\n signingCert: string;\r\n}\r\n\r\nexport interface ISignotecDeviceActions {\r\n sendClicked: boolean;\r\n cancelClicked: boolean;\r\n}\r\n\r\nexport type InitialSigPadType = {\r\n deviceData: ISignaturePadDevice;\r\n sigData: ISigData;\r\n deviceActions: ISignotecDeviceActions; //action that are clicked direct on the Signature Device\r\n canvasRef: any;\r\n};\r\n\r\nexport const initialSigPadState = {\r\n deviceData: {\r\n deviceName: '',\r\n canStoreEncryptKey: false,\r\n firmwareVersion: '',\r\n serialNumber: '',\r\n supportsRSA: false,\r\n padConnectionType: '',\r\n padIndex: 0,\r\n displayHeight: 0,\r\n displayWidth: 0,\r\n sampleRate: 0,\r\n scaleFactorX: 0,\r\n scaleFactorY: 0,\r\n xResolution: 0,\r\n yResolution: 0,\r\n },\r\n sigData: {\r\n certId: '',\r\n pictureData: '',\r\n rsaSignature: '',\r\n signData: '',\r\n signingCert: '',\r\n },\r\n deviceActions: {\r\n sendClicked: false,\r\n cancelClicked: false,\r\n },\r\n canvasRef: null,\r\n};\r\n\r\nconst SigPadContext = createContext<{\r\n sigpadstate: InitialSigPadType;\r\n sigpaddispatch: React.Dispatch;\r\n}>({\r\n sigpadstate: initialSigPadState,\r\n sigpaddispatch: () => null,\r\n});\r\n\r\nexport default SigPadContext;\r\n","import 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\nimport { useAppProperties } from '../../hooks/useAppProperties';\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 const { getPossibleCountries } = useAppProperties();\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 makeOption = (country: string) => {\r\n return ;\r\n };\r\n\r\n const FormGroupCountry = (propsFG: IFormGroup) => {\r\n if (apstate.RegistrationVisibleFields.country === true) {\r\n const countries = ['Deutschland', 'Österreich', 'Schweiz', 'Italien'];\r\n return (\r\n \r\n {label(mandFields.country, 'Land')}\r\n \r\n \r\n {getPossibleCountries().map(makeOption)}\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 { useEffect, useState } from 'react';\r\n\r\ninterface ITextSwitch {\r\n textParts: string[];\r\n intervalSec: number;\r\n}\r\n\r\nconst TextSwitch = (props: ITextSwitch) => {\r\n const [text, setText] = useState(props.textParts.length > 0 ? props.textParts[0] : '');\r\n\r\n const switchText = () => {\r\n const index = props.textParts.indexOf(text);\r\n const nextIndex = index + 1 === props.textParts.length ? 0 : index + 1;\r\n setText(props.textParts[nextIndex]);\r\n };\r\n\r\n useEffect(() => {\r\n let intervalId;\r\n if (props.textParts.length > 0 && props.textParts[0] !== '') {\r\n intervalId = setInterval(() => {\r\n switchText();\r\n }, props.intervalSec * 1000);\r\n }\r\n\r\n return () => {\r\n if (intervalId) {\r\n clearInterval(intervalId);\r\n }\r\n };\r\n }, [text]);\r\n\r\n return <>{text};\r\n};\r\n\r\nexport default TextSwitch;\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 useScreenResolution from '../../hooks/useScreenResolution';\r\nimport { Paths } from '../../Routes';\r\nimport TextSwitch from '../Text/TextSwitch';\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 screenSize = useScreenResolution();\r\n\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 const getWidth = () => {\r\n if (props.smallScreen) {\r\n if (screenSize.width > 430) {\r\n return '200px';\r\n } else if (screenSize.width > 380) {\r\n return '150px';\r\n } else {\r\n return '50px';\r\n }\r\n }\r\n return null;\r\n };\r\n\r\n return (\r\n Terminauswahl aufheben}\r\n >\r\n \r\n \r\n \r\n \r\n {props.smallScreen ? (\r\n \r\n ) : (\r\n state.encounterTitle\r\n )}\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 doHTML?: boolean;\r\n}\r\nexport interface IAlertMessage extends IAlertMessageWithoutDispatch {\r\n alertdispatch: React.Dispatch;\r\n}\r\n\r\nexport const showAlertMessage = (props: IAlertMessage) => {\r\n props.alertdispatch({\r\n type: 'SETSHOWALERTMESSAGE',\r\n alertMessage: {\r\n showModal: true,\r\n alertTitle: props.alertTitle,\r\n alertTxt: props.alertTxt,\r\n alertType: props.alertType,\r\n onHide: props.onHide,\r\n onHideCustom: props.onHideCustom,\r\n buttonName: props.buttonName ? props.buttonName : 'OK',\r\n doBig: props.doBig ? props.doBig : false,\r\n doHTML: props.doHTML ? props.doHTML : false,\r\n },\r\n });\r\n};\r\n\r\nexport const resetShowAlertMessage = (alertdispatch: any) => {\r\n alertdispatch({\r\n type: 'RESETSHOWALERTMESSAGE',\r\n });\r\n};\r\n","import { makeStyles, Step, StepButton, StepLabel, Stepper } from '@material-ui/core';\r\nimport { useEffect, useState } from 'react';\r\nimport OverlayTrigger from 'react-bootstrap/esm/OverlayTrigger';\r\nimport Tooltip from 'react-bootstrap/esm/Tooltip';\r\nimport { IQuestionnaireWL } from '../../container/Fragebogen/QuestionnaireWL';\r\nimport { pcpTheme } from '../../globals/theme';\r\nimport './Stepper.css';\r\nimport useScreenResolution from '../../hooks/useScreenResolution';\r\nimport { BsStackOverflow } from 'react-icons/bs';\r\nimport { MdVisibility } from 'react-icons/md';\r\n\r\nexport enum StepperOrientation {\r\n Horizontal,\r\n Vertical,\r\n}\r\n\r\nexport enum StepperLabelOrientation {\r\n Right,\r\n Bottom,\r\n}\r\n\r\nexport enum StepTyp {\r\n Normal = 'NORMAL',\r\n Journey = 'JOURNEY',\r\n}\r\n\r\nexport interface IStepperCheckInStep {\r\n id: string;\r\n name: string;\r\n typ: StepTyp;\r\n completed: boolean;\r\n draft: boolean;\r\n active: boolean;\r\n clickable: boolean;\r\n url?: string;\r\n hashParams?: IQuestionnaireWL;\r\n}\r\n\r\nexport interface IStepperCheckIn {\r\n steps: IStepperCheckInStep[];\r\n backgroundColor?: string;\r\n handleStepClick(stepNumberClicked: number): void;\r\n stepperOrientation: StepperOrientation;\r\n labelOrientation: StepperLabelOrientation;\r\n paddingTop?: number | string;\r\n paddingBottom?: number | string;\r\n}\r\n\r\nconst useStyles = makeStyles({\r\n root: {\r\n '& .MuiStepIcon-root': { color: 'gray' },\r\n '& .MuiStepIcon-completed': { color: pcpTheme.step.completed + ' !important' },\r\n '& .MuiStepIcon-active': { color: pcpTheme.step.active + ' !important' } /*{ color: 'rgb(36, 94, 173)' },*/,\r\n '& .Mui-disabled .MuiStepIcon-root': { color: '#bab9b9 !important' },\r\n // '& .MuiStepLabel-alternativeLabel': { marginTop: '10px', marginBottom: '30px', color: 'white', width: '100%' },\r\n '& .MuiStep-alternativeLabel': { overflow: 'clip', minWidth: '0px', overflowClipMargin: 'content-box 500px' },\r\n '& .MuiStepLabel-alternativeLabel': { overflow: 'hidden' },\r\n '& .MuiStepLabel-label': {\r\n color: 'black',\r\n textAlign: 'left',\r\n whiteSpace: 'nowrap',\r\n textOverflow: 'ellipsis',\r\n overflow: 'hidden',\r\n },\r\n '& .MuiStepLabel-active .MuiStepLabel-label': {\r\n fontWeight: '530',\r\n },\r\n '& .MuiStepConnector-lineVertical': { minHeight: '60px' },\r\n '& .MuiStepConnector-horizontal': { visibility: 'visible', position: 'absolute' },\r\n '& .MuiStepConnector-lineHorizontal': { visibility: 'visible !important', position: 'static' },\r\n },\r\n stepButtonDraft: {\r\n '& .MuiStepIcon-root': { color: '#0080009c' },\r\n },\r\n});\r\n// const useStyles = makeStyles({\r\n// root: {\r\n// '& .MuiStepIcon-root': { color: 'gray' },\r\n// '& .MuiStepIcon-completed': { color: pcpTheme.step.completed + ' !important' },\r\n// '& .MuiStepIcon-active': { color: pcpTheme.step.active + ' !important' } /*{ color: 'rgb(36, 94, 173)' },*/,\r\n// '& .Mui-disabled .MuiStepIcon-root': { color: '#bab9b9 !important' },\r\n// '& .MuiStepLabel-alternativeLabel': { marginTop: '10px', marginBottom: '30px', color: 'white', width: '100%' },\r\n// '& .MuiStepLabel-label': { color: 'white', width: '100%', textAlign: 'left' },\r\n// '& .MuiStepConnector-lineVertical': { minHeight: '60px' },\r\n// },\r\n// stepButtonDraft: {\r\n// '& .MuiStepIcon-root': { color: '#0080009c' },\r\n// },\r\n// });\r\n\r\nconst StepperCheckIn = (props: IStepperCheckIn) => {\r\n const classes = useStyles();\r\n\r\n const [activeStep, setActiveStep] = useState(0);\r\n const [completed, setCompleted] = useState({});\r\n const [steps, setSteps] = useState([\r\n {\r\n id: '',\r\n name: '',\r\n typ: StepTyp.Normal,\r\n completed: false,\r\n draft: false,\r\n active: false,\r\n clickable: false,\r\n url: '',\r\n },\r\n ]);\r\n\r\n const screenSize = useScreenResolution();\r\n\r\n // const steps = ['Select campaign settings', 'Create an ad group', 'Create an ad'];\r\n\r\n const haveStepsChanged = () => {\r\n let isSame = false;\r\n let currentSteps;\r\n let newSteps;\r\n\r\n if (props.steps) {\r\n currentSteps = steps.map((step) => step.id);\r\n newSteps = props.steps.map((step) => step.id);\r\n }\r\n\r\n isSame =\r\n currentSteps.length === newSteps.length && currentSteps.every((value, index) => value === newSteps[index]);\r\n return !isSame;\r\n };\r\n\r\n useEffect(() => {\r\n let newCompleted = completed;\r\n let activeIndex = 0;\r\n\r\n if (props.steps) {\r\n if (haveStepsChanged()) {\r\n newCompleted = {};\r\n setActiveStep(0);\r\n }\r\n if (props.steps.length > 0) {\r\n props.steps.forEach((step, index) => {\r\n if (step.active) {\r\n activeIndex = index;\r\n }\r\n if (step.completed) {\r\n newCompleted[index] = true;\r\n }\r\n });\r\n }\r\n setCompleted(newCompleted);\r\n setActiveStep(activeIndex);\r\n\r\n setSteps(props.steps);\r\n }\r\n }, [props.steps]);\r\n\r\n const totalSteps = () => {\r\n return steps.length;\r\n };\r\n\r\n const completedSteps = () => {\r\n return Object.keys(completed).length;\r\n };\r\n\r\n const allStepsCompleted = () => {\r\n return completedSteps() === totalSteps();\r\n };\r\n\r\n const handleStep = (step) => () => {\r\n setActiveStep(step);\r\n props.handleStepClick(step);\r\n };\r\n\r\n // const handleComplete = () => {\r\n // const newCompleted = completed;\r\n // newCompleted[activeStep] = true;\r\n // setCompleted(newCompleted);\r\n // };\r\n\r\n const getTooltipText = (isCompleted: boolean, isDraft: boolean) => {\r\n let text = 'noch offen';\r\n if (isCompleted) {\r\n text = 'abgeschlossen';\r\n } else if (isDraft) {\r\n text = 'zwischengespeichert';\r\n }\r\n return text;\r\n };\r\n\r\n const getStepperOrientation = () => {\r\n if (props.stepperOrientation === StepperOrientation.Vertical) {\r\n return 'vertical';\r\n } else {\r\n return 'horizontal';\r\n }\r\n };\r\n\r\n const getStepperLabelOrientation = () => {\r\n if (props.labelOrientation === StepperLabelOrientation.Right) {\r\n return false;\r\n } else {\r\n return true;\r\n }\r\n };\r\n\r\n return (\r\n <>\r\n \r\n {steps.map((label, index) => (\r\n \r\n \r\n \r\n {getTooltipText(completed[index], label.draft)}\r\n \r\n }\r\n >\r\n {label.name}\r\n \r\n \r\n \r\n ))}\r\n \r\n
    {allStepsCompleted() ? <>{/*

    Alles erledigt

    */} : <>}
    \r\n \r\n );\r\n};\r\n\r\nexport default StepperCheckIn;\r\n","import { createContext } from 'react';\r\nimport { ILink } from './loginContext';\r\n\r\nexport interface IRegistrationFields {\r\n birthDate: boolean;\r\n city: boolean;\r\n country: boolean;\r\n email: boolean;\r\n firstName: boolean;\r\n gender: boolean;\r\n lastName: boolean;\r\n phone: boolean;\r\n street: boolean;\r\n zip: boolean;\r\n insuranceNr: boolean;\r\n mobilePhone: boolean;\r\n academicTitle: boolean;\r\n insuranceName: boolean;\r\n language: boolean;\r\n privacyTerms: boolean;\r\n}\r\n\r\nexport interface IAppointmentSummary {\r\n behandler: boolean;\r\n fach: boolean;\r\n pflege: boolean;\r\n raum: boolean;\r\n standort: boolean;\r\n}\r\n\r\nexport interface IAppointmentGeneral {\r\n skipBehandlersuche?: boolean;\r\n}\r\n\r\nexport interface ICustomTexts {\r\n CredentialsLost: string;\r\n}\r\n\r\nexport interface IImpressum {\r\n impressumLink: string;\r\n datenschutzLink: string;\r\n}\r\n\r\nexport interface IAnmeldeContexts {\r\n code: string;\r\n name: string;\r\n}\r\n\r\nexport type InitialAppPropsType = {\r\n appPropsSet: boolean;\r\n Appointment?: IAppointmentGeneral;\r\n AppointmentSummary: IAppointmentSummary;\r\n RegistrationMandFields: IRegistrationFields;\r\n RegistrationVisibleFields: IRegistrationFields;\r\n RegistrationReadOnlyFields: IRegistrationFields;\r\n allowAccountAfterAppointment: boolean;\r\n allowAccountCreateDirect: boolean;\r\n allowAppointments: boolean;\r\n allowAppointmentsEinweiser: boolean;\r\n allowAppointmentsWithoutLogin: boolean;\r\n allowDirectAppointments: boolean;\r\n allowDirectAppointmentsWithoutLogin: boolean;\r\n allowLogin: boolean;\r\n allowVideo: boolean;\r\n allowVideoWithoutLogin: boolean;\r\n allowAccountInAnmeldeworkflow: boolean;\r\n brandingBytes: string;\r\n brandigType: string;\r\n extraLinks: Array;\r\n customTexts: ICustomTexts;\r\n showMobileQR: boolean;\r\n jitsiDomain: string;\r\n jitsiOptions: any;\r\n impressum: IImpressum;\r\n anmeldeContexts: Array;\r\n countDaysToVisualize?: number;\r\n extendedPhysicians: boolean;\r\n allowChat: boolean;\r\n fullscreenMode: boolean;\r\n googleAnalyticsID?: string;\r\n tileTexts?: any;\r\n smtpUser?: string;\r\n possibleCountries: string;\r\n};\r\n\r\nexport const InitialAppPropsState = {\r\n appPropsSet: false,\r\n Appointment: {\r\n skipBehandlersuche: false,\r\n },\r\n AppointmentSummary: {\r\n behandler: true,\r\n fach: true,\r\n pflege: true,\r\n raum: true,\r\n standort: true,\r\n },\r\n RegistrationMandFields: {\r\n birthDate: false,\r\n city: false,\r\n country: false,\r\n email: true,\r\n firstName: true,\r\n gender: false,\r\n lastName: true,\r\n phone: false,\r\n street: false,\r\n zip: false,\r\n insuranceNr: false,\r\n mobilePhone: false,\r\n academicTitle: false,\r\n insuranceName: false,\r\n language: false,\r\n privacyTerms: false,\r\n },\r\n RegistrationVisibleFields: {\r\n birthDate: true,\r\n city: true,\r\n country: true,\r\n email: true,\r\n firstName: true,\r\n gender: true,\r\n lastName: true,\r\n phone: true,\r\n street: true,\r\n zip: true,\r\n insuranceNr: false,\r\n mobilePhone: true,\r\n academicTitle: true,\r\n insuranceName: true,\r\n language: true,\r\n privacyTerms: false,\r\n },\r\n RegistrationReadOnlyFields: {\r\n birthDate: false,\r\n city: false,\r\n country: false,\r\n email: false,\r\n firstName: false,\r\n gender: false,\r\n lastName: false,\r\n phone: false,\r\n street: false,\r\n zip: false,\r\n insuranceNr: false,\r\n mobilePhone: false,\r\n academicTitle: false,\r\n insuranceName: false,\r\n language: false,\r\n privacyTerms: false,\r\n },\r\n allowAccountAfterAppointment: false,\r\n allowAccountCreateDirect: false,\r\n allowAppointments: false,\r\n allowAppointmentsEinweiser: false,\r\n allowAppointmentsWithoutLogin: false,\r\n allowDirectAppointments: false,\r\n allowDirectAppointmentsWithoutLogin: false,\r\n allowLogin: false,\r\n allowVideo: false,\r\n allowVideoWithoutLogin: false,\r\n allowAccountInAnmeldeworkflow: true,\r\n brandingBytes: '',\r\n brandigType: '',\r\n extraLinks: [],\r\n customTexts: {\r\n CredentialsLost: '',\r\n },\r\n showMobileQR: true,\r\n jitsiDomain: '',\r\n jitsiOptions: null,\r\n impressum: {\r\n impressumLink: '',\r\n datenschutzLink: '',\r\n },\r\n anmeldeContexts: [],\r\n countDaysToVisualize: 0,\r\n extendedPhysicians: false,\r\n allowChat: false,\r\n fullscreenMode: false,\r\n googleAnalyticsID: '',\r\n tileTexts: {},\r\n smtpUser: '',\r\n possibleCountries: '',\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\nimport AppPropsContext from '../../../context/appPropsContext';\r\n\r\ninterface IConsigWaitModal {\r\n show: boolean;\r\n onHide: () => void;\r\n}\r\n\r\nconst ConsignationWaitModal = (props: IConsigWaitModal) => {\r\n const navigate = useNavigate();\r\n const [consignationFinished, setConsignationFinished] = useState(false);\r\n const [initPassword, setInitPassword] = useState(false);\r\n const { state } = useContext(LoginContext);\r\n const { getAndSetPersonalData } = usePersonalData();\r\n const { apstate } = useContext(AppPropsContext);\r\n\r\n useEffect(() => {\r\n const isConsignationAccepted = async () => {\r\n const consigRes = await checkConsignation(state.sessionId);\r\n if (consigRes.consignation === 'patFinished') {\r\n clearInterval(interval);\r\n setConsignationFinished(true);\r\n if (consigRes.forceNewPWD === 'true') {\r\n setInitPassword(true);\r\n }\r\n }\r\n };\r\n\r\n let interval;\r\n if (props.show) {\r\n interval = setInterval(() => {\r\n isConsignationAccepted();\r\n }, 1000);\r\n }\r\n\r\n // isConsignationAccepted();\r\n return () => {\r\n if (interval) {\r\n clearInterval(interval);\r\n }\r\n };\r\n }, [props.show, consignationFinished]);\r\n\r\n const handlePWChange = () => {\r\n setInitPassword(false);\r\n props.onHide();\r\n getAndSetPersonalData(state.sessionId, state.activeUserId, state.practitionerRoleId);\r\n navigate(Paths.DOKUMENTE);\r\n };\r\n\r\n const handlePWCancel = () => {\r\n setInitPassword(false);\r\n props.onHide();\r\n navigate(Paths.HOME);\r\n };\r\n\r\n return (\r\n
    \r\n \r\n \r\n Aktivierung Ihres Accounts\r\n \r\n \r\n
    \r\n \r\n

    \r\n Bitte überprüfen Sie Ihren E-Mail Posteingang auf eine E-Mail von {apstate.smtpUser} und\r\n klicken Sie auf den enthaltenen Link, um Ihren Account zu aktivieren. Prüfen Sie ggf.\r\n auch Ihren Spam-Ordner\r\n

    \r\n
    \r\n
    \r\n
    \r\n
    \r\n {initPassword ? (\r\n
    \r\n handlePWChange()} oncancel={() => handlePWCancel()} />\r\n
    \r\n ) : (\r\n <>\r\n )}\r\n
    \r\n );\r\n};\r\n\r\nexport default ConsignationWaitModal;\r\n","import * as React from 'react';\r\nimport { useState } from 'react';\r\nimport Col from 'react-bootstrap/Col';\r\nimport Container from 'react-bootstrap/Container';\r\nimport Form from 'react-bootstrap/Form';\r\nimport Modal from 'react-bootstrap/Modal';\r\nimport Row from 'react-bootstrap/Row';\r\nimport StyledButton from '../../Buttons/StyledButton';\r\nimport StyledCol from '../../Cols/StyledCol';\r\nimport { StyledFormLabelForInput } from '../../StyledForm/SyledForm';\r\nimport { StyledModal } from '../StyledModal/StyledModal';\r\n\r\ninterface IDoDoubleOptInModal {\r\n show: boolean;\r\n username: string;\r\n password: string;\r\n onHide: () => void;\r\n onSubmit: (code: string) => void;\r\n}\r\n\r\nexport const DoDoubleOptInModal = (props: IDoDoubleOptInModal) => {\r\n const [code, setCode] = useState('');\r\n\r\n const handleSubmit = (event: React.FormEvent) => {\r\n event.preventDefault();\r\n // const form = event.currentTarget;\r\n // if (form.checkValidity() === false) {\r\n // event.preventDefault();\r\n // event.stopPropagation();\r\n // }\r\n // {\r\n // props.onSubmit();\r\n // }\r\n props.onSubmit(code);\r\n };\r\n\r\n return (\r\n \r\n \r\n Account aktivieren\r\n \r\n
    \r\n \r\n \r\n \r\n \r\n \r\n \r\n Geben Sie Ihren Bestätigungscode ein. Dieser Code wird Ihnen per Brief\r\n zugesandt.\r\n \r\n setCode(e.target.value)}\r\n />\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Abbrechen\r\n \r\n \r\n \r\n Absenden\r\n \r\n \r\n \r\n \r\n \r\n
    \r\n \r\n );\r\n};\r\n\r\nexport default DoDoubleOptInModal;\r\n","import 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\nimport { useContext } from 'react';\r\nimport AppPropsContext from '../../../context/appPropsContext';\r\n\r\ninterface IDoDoubleOptInViaLinkModal {\r\n show: boolean;\r\n onHide: () => void;\r\n}\r\n\r\nconst DoDoubleOptInViaLinkModal = (props: IDoDoubleOptInViaLinkModal) => {\r\n const { apstate } = useContext(AppPropsContext);\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 auf eine E-Mail von {apstate.smtpUser} und\r\n klicken Sie auf den enthaltenen Link, um Ihren Account zu aktivieren. Prüfen Sie ggf.\r\n auch Ihren Spam-Ordner\r\n

    \r\n
    \r\n
    \r\n
    \r\n \r\n \r\n
    \r\n \r\n \r\n OK\r\n \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \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 const getNavTextSize = () => {\r\n if (screenSize.width < 410) {\r\n return '0.8rem';\r\n } else if (screenSize.width > 990 && screenSize.width < 1100) {\r\n return '0.8rem';\r\n } else {\r\n return '1rem';\r\n }\r\n };\r\n\r\n if (goToTerminierungAlternateDate) {\r\n return (\r\n \r\n );\r\n } else {\r\n return (\r\n \r\n \r\n \r\n {!isSmallScreen && }\r\n \r\n Termine\r\n \r\n \r\n {!props.checkInVariant && apstate.allowAppointments && (\r\n \r\n navigate(Paths.TERMINIERUNG)}>\r\n \r\n }\r\n >\r\n \r\n \r\n )}\r\n \r\n \r\n \r\n \r\n
    \r\n setKey(k)}\r\n >\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Aktuell\r\n \r\n \r\n \r\n \r\n \r\n \r\n Abgeschlossen\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
    \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
    \r\n \r\n
    \r\n \r\n \r\n \r\n
    \r\n );\r\n }\r\n};\r\n\r\nconst Termine = () => {\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n};\r\n\r\nexport default Termine;\r\n","import { appointmentStatus } from '../globals/global';\r\n\r\nexport const getGenderEN = (gender: string) => {\r\n switch (gender) {\r\n case 'Männlich':\r\n return 'male';\r\n case 'Weiblich':\r\n return 'female';\r\n case 'Divers':\r\n return 'divers';\r\n case 'Unbekannt':\r\n return 'unknown';\r\n case '':\r\n return 'unknown';\r\n default:\r\n return gender;\r\n }\r\n};\r\n\r\nexport const getGenderDE = (gender: string) => {\r\n switch (gender) {\r\n case 'male':\r\n return 'Männlich';\r\n case 'female':\r\n return 'Weiblich';\r\n case 'divers':\r\n return 'Divers';\r\n case 'unknown':\r\n return 'Unbekannt';\r\n case '':\r\n return '';\r\n default:\r\n return gender;\r\n }\r\n};\r\n\r\nexport const getCountryEN = (country: string) => {\r\n switch (country) {\r\n case 'Deutschland':\r\n return 'Germany';\r\n case 'Österreich':\r\n return 'Austria';\r\n case 'Schweiz':\r\n return 'Switzerland';\r\n default:\r\n return '';\r\n }\r\n};\r\n\r\nexport const getCountryDE = (country: string) => {\r\n switch (country) {\r\n case 'Germany':\r\n return 'Deutschland';\r\n case 'Austria':\r\n return 'Österreich';\r\n case 'Switzerland':\r\n return 'Schweiz';\r\n default:\r\n return '';\r\n }\r\n};\r\n\r\nexport const getCountryLongName = (countryShortName: string) => {\r\n switch (countryShortName) {\r\n case 'D':\r\n return 'Deutschland';\r\n case 'DE':\r\n return 'Deutschland';\r\n case 'A':\r\n return 'Österreich';\r\n case 'AT':\r\n return 'Österreich';\r\n case 'CH':\r\n return 'Schweiz';\r\n case 'LU':\r\n case 'L':\r\n return 'Luxemburg';\r\n case 'IT':\r\n case 'I':\r\n return 'Italien';\r\n case 'FR':\r\n case 'F':\r\n return 'Frankreich';\r\n case 'ES':\r\n case 'E':\r\n return 'Spanien';\r\n case 'NL':\r\n return 'Niederlande';\r\n case 'HU':\r\n case 'H':\r\n return 'Ungarn';\r\n case 'DK':\r\n return 'Dänemark';\r\n default:\r\n return '';\r\n }\r\n};\r\n\r\nexport const translateStatus = (status: string) => {\r\n switch (status) {\r\n case 'cancelled':\r\n return 'abgesagt';\r\n case 'pending':\r\n return 'geplant o. Uhrzeit';\r\n case 'booked':\r\n return 'geplant';\r\n case 'arrived':\r\n return 'aktuell';\r\n case 'fulfilled':\r\n return 'abgeschlossen';\r\n case appointmentStatus.enteredInError:\r\n return 'unvollständig';\r\n default:\r\n break;\r\n }\r\n};\r\n\r\n/**\r\n * format date from yyyy-MM-dd or yyyy.MM.dd to dd.MM.yyyy\r\n *\r\n * @param date\r\n * the date as string\r\n * @returns\r\n * the date with new format\r\n */\r\nexport const getGermanDateFormatFromString = (date: string) => {\r\n const day = date.slice(8);\r\n const month = date.slice(5, -3);\r\n const year = date.slice(0, -6);\r\n return day + '.' + month + '.' + year;\r\n};\r\n\r\nexport const pattern =\r\n /^(([^<>()\\[\\]\\\\.,;:\\s@\"]+(\\.[^<>()\\[\\]\\\\.,;:\\s@\"]+)*)|(\".+\"))@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\])|(([a-zA-Z\\-0-9]+\\.)+[a-zA-Z0-9]{2,}))$/;\r\n\r\nexport const isEmailValid = (email: string) => {\r\n return pattern.test(String(email).toLowerCase());\r\n};\r\n\r\nexport const getBasicAuthBase64Encoded = (basicauth: string) => {\r\n const base64encodedStr = btoa(basicauth);\r\n const basicAuthBase64 = 'Basic ' + base64encodedStr;\r\n return basicAuthBase64;\r\n};\r\n\r\nexport const getDataFromAppProperties = (propRes: any) => {\r\n const appProps = {\r\n Appointment: {\r\n skipBehandlersuche:\r\n propRes.Appointment?.skipBehandlersuche !== undefined ? propRes.Appointment?.skipBehandlersuche : false,\r\n },\r\n AppointmentSummary: {\r\n behandler:\r\n propRes.AppointmentSummary?.behandler !== undefined ? propRes.AppointmentSummary?.behandler : true,\r\n fach: propRes.AppointmentSummary?.fach !== undefined ? propRes.AppointmentSummary?.fach : true,\r\n pflege: propRes.AppointmentSummary?.pflege !== undefined ? propRes.AppointmentSummary?.pflege : true,\r\n raum: propRes.AppointmentSummary?.raum !== undefined ? propRes.AppointmentSummary?.raum : true,\r\n standort: propRes.AppointmentSummary?.standort !== undefined ? propRes.AppointmentSummary?.standort : true,\r\n },\r\n RegistrationMandFields: {\r\n birthDate:\r\n propRes.RegistrationMandFields?.birthDate !== undefined\r\n ? propRes.RegistrationMandFields.birthDate\r\n : null,\r\n city: propRes.RegistrationMandFields?.city !== undefined ? propRes.RegistrationMandFields.city : null,\r\n country:\r\n propRes.RegistrationMandFields?.country !== undefined ? propRes.RegistrationMandFields.country : null,\r\n email: propRes.RegistrationMandFields?.email !== undefined ? propRes.RegistrationMandFields.email : null,\r\n firstName:\r\n propRes.RegistrationMandFields?.firstName !== undefined\r\n ? propRes.RegistrationMandFields.firstName\r\n : null,\r\n gender: propRes.RegistrationMandFields?.gender !== undefined ? propRes.RegistrationMandFields.gender : null,\r\n lastName:\r\n propRes.RegistrationMandFields?.lastName !== undefined ? propRes.RegistrationMandFields.lastName : null,\r\n phone: propRes.RegistrationMandFields?.phone !== undefined ? propRes.RegistrationMandFields.phone : null,\r\n street: propRes.RegistrationMandFields?.street !== undefined ? propRes.RegistrationMandFields.street : null,\r\n zip: propRes.RegistrationMandFields?.zip !== undefined ? propRes.RegistrationMandFields.zip : null,\r\n insuranceNr:\r\n propRes.RegistrationMandFields?.insuranceNr !== undefined\r\n ? propRes.RegistrationMandFields.insuranceNr\r\n : null,\r\n mobilePhone:\r\n propRes.RegistrationMandFields?.mobilePhone !== undefined\r\n ? propRes.RegistrationMandFields.mobilePhone\r\n : null,\r\n academicTitle:\r\n propRes.RegistrationMandFields?.academicTitle !== undefined\r\n ? propRes.RegistrationMandFields.academicTitle\r\n : null,\r\n insuranceName:\r\n propRes.RegistrationMandFields?.insuranceName !== undefined\r\n ? propRes.RegistrationMandFields.insuranceName\r\n : null,\r\n language:\r\n propRes.RegistrationMandFields?.language !== undefined ? propRes.RegistrationMandFields.language : null,\r\n privacyTerms:\r\n propRes.RegistrationMandFields?.privacyTerms !== undefined\r\n ? propRes.RegistrationMandFields.privacyTerms\r\n : null,\r\n },\r\n RegistrationVisibleFields: {\r\n birthDate:\r\n propRes.RegistrationVisibleFields?.birthDate !== undefined\r\n ? propRes.RegistrationVisibleFields.birthDate\r\n : null,\r\n city: propRes.RegistrationVisibleFields?.city !== undefined ? propRes.RegistrationVisibleFields.city : null,\r\n country:\r\n propRes.RegistrationVisibleFields?.country !== undefined\r\n ? propRes.RegistrationVisibleFields.country\r\n : null,\r\n email:\r\n propRes.RegistrationVisibleFields?.email !== undefined ? propRes.RegistrationVisibleFields.email : null,\r\n firstName:\r\n propRes.RegistrationVisibleFields?.firstName !== undefined\r\n ? propRes.RegistrationVisibleFields.firstName\r\n : null,\r\n gender:\r\n propRes.RegistrationVisibleFields?.gender !== undefined\r\n ? propRes.RegistrationVisibleFields.gender\r\n : null,\r\n lastName:\r\n propRes.RegistrationVisibleFields?.lastName !== undefined\r\n ? propRes.RegistrationVisibleFields.lastName\r\n : null,\r\n phone:\r\n propRes.RegistrationVisibleFields?.phone !== undefined ? propRes.RegistrationVisibleFields.phone : null,\r\n street:\r\n propRes.RegistrationVisibleFields?.street !== undefined\r\n ? propRes.RegistrationVisibleFields.street\r\n : null,\r\n zip: propRes.RegistrationVisibleFields?.zip !== undefined ? propRes.RegistrationVisibleFields.zip : null,\r\n insuranceNr:\r\n propRes.RegistrationVisibleFields?.insuranceNr !== undefined\r\n ? propRes.RegistrationVisibleFields.insuranceNr\r\n : null,\r\n mobilePhone:\r\n propRes.RegistrationVisibleFields?.mobilePhone !== undefined\r\n ? propRes.RegistrationVisibleFields.mobilePhone\r\n : null,\r\n academicTitle:\r\n propRes.RegistrationVisibleFields?.academicTitle !== undefined\r\n ? propRes.RegistrationVisibleFields.academicTitle\r\n : null,\r\n insuranceName:\r\n propRes.RegistrationVisibleFields?.insuranceName !== undefined\r\n ? propRes.RegistrationVisibleFields.insuranceName\r\n : null,\r\n language:\r\n propRes.RegistrationVisibleFields?.language !== undefined\r\n ? propRes.RegistrationVisibleFields.language\r\n : null,\r\n privacyTerms:\r\n propRes.RegistrationVisibleFields?.privacyTerms !== undefined\r\n ? propRes.RegistrationVisibleFields.privacyTerms\r\n : null,\r\n },\r\n RegistrationReadOnlyFields: {\r\n birthDate:\r\n propRes.RegistrationReadOnlyFields?.birthDate !== undefined\r\n ? propRes.RegistrationReadOnlyFields.birthDate\r\n : null,\r\n city:\r\n propRes.RegistrationReadOnlyFields?.city !== undefined ? propRes.RegistrationReadOnlyFields.city : null,\r\n country:\r\n propRes.RegistrationReadOnlyFields?.country !== undefined\r\n ? propRes.RegistrationReadOnlyFields.country\r\n : null,\r\n email:\r\n propRes.RegistrationReadOnlyFields?.email !== undefined\r\n ? propRes.RegistrationReadOnlyFields.email\r\n : null,\r\n firstName:\r\n propRes.RegistrationReadOnlyFields?.firstName !== undefined\r\n ? propRes.RegistrationReadOnlyFields.firstName\r\n : null,\r\n gender:\r\n propRes.RegistrationReadOnlyFields?.gender !== undefined\r\n ? propRes.RegistrationReadOnlyFields.gender\r\n : null,\r\n lastName:\r\n propRes.RegistrationReadOnlyFields?.lastName !== undefined\r\n ? propRes.RegistrationReadOnlyFields.lastName\r\n : null,\r\n phone:\r\n propRes.RegistrationReadOnlyFields?.phone !== undefined\r\n ? propRes.RegistrationReadOnlyFields.phone\r\n : null,\r\n street:\r\n propRes.RegistrationReadOnlyFields?.street !== undefined\r\n ? propRes.RegistrationReadOnlyFields.street\r\n : null,\r\n zip: propRes.RegistrationReadOnlyFields?.zip !== undefined ? propRes.RegistrationReadOnlyFields.zip : null,\r\n insuranceNr:\r\n propRes.RegistrationReadOnlyFields?.insuranceNr !== undefined\r\n ? propRes.RegistrationReadOnlyFields.insuranceNr\r\n : null,\r\n mobilePhone:\r\n propRes.RegistrationReadOnlyFields?.mobilePhone !== undefined\r\n ? propRes.RegistrationReadOnlyFields.mobilePhone\r\n : null,\r\n academicTitle:\r\n propRes.RegistrationReadOnlyFields?.academicTitle !== undefined\r\n ? propRes.RegistrationReadOnlyFields.academicTitle\r\n : null,\r\n insuranceName:\r\n propRes.RegistrationReadOnlyFields?.insuranceName !== undefined\r\n ? propRes.RegistrationReadOnlyFields.insuranceName\r\n : null,\r\n language:\r\n propRes.RegistrationReadOnlyFields?.language !== undefined\r\n ? propRes.RegistrationReadOnlyFields.language\r\n : null,\r\n },\r\n allowAccountAfterAppointment: propRes.allowAccountAfterAppointment,\r\n allowAccountCreateDirect: propRes.allowAccountCreateDirect,\r\n allowAppointments: propRes.allowAppointments,\r\n allowAppointmentsEinweiser: propRes.allowAppointmentsEinweiser,\r\n allowAppointmentsWithoutLogin: propRes.allowAppointmentsWithoutLogin,\r\n allowDirectAppointments: propRes.allowDirectAppointments,\r\n allowDirectAppointmentsWithoutLogin: propRes.allowDirectAppointmentsWithoutLogin,\r\n allowLogin: propRes.allowLogin,\r\n allowVideo: propRes.allowVideo,\r\n allowVideoWithoutLogin: propRes.allowVideoWithoutLogin,\r\n allowAccountInAnmeldeworkflow: propRes.allowAccountInAnmeldeworkflow,\r\n brandingBytes: propRes.brandingBytes,\r\n brandigType: propRes.brandigType,\r\n extraLinks: propRes.extraLinks,\r\n customTexts: propRes.customTexts,\r\n showMobileQR: propRes.showMobileQR,\r\n jitsiDomain: propRes.jitsiDomain,\r\n jitsiOptions: propRes.jitsiOptions,\r\n impressum: propRes.impressum,\r\n anmeldeContexts: propRes.anmeldeContexts,\r\n countDaysToVisualize: propRes.countDaysToVisualize,\r\n extendedPhysicians: propRes.extendedPhysicians,\r\n allowChat: propRes.allowChat,\r\n googleAnalyticsID: propRes.googleAnalyticsID,\r\n tileTexts: propRes.tileTexts,\r\n smtpUser: propRes.smtpUser,\r\n possibleCountries: propRes.possibleCountries,\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":""}