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

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

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

Something went wrong.

\r\n

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

\r\n

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

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

{alertstate.alertMessage.alertTxt}

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

{props.loadingText}

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

X

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

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

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

404 Error

\r\n

cannot find page

\r\n
\r\n );\r\n};\r\n\r\nexport default Error;\r\n","import { useContext } from 'react';\r\nimport { useNavigate } from 'react-router-dom';\r\nimport ExecuteRuleContext from '../../context/executeRuleContext';\r\nimport { Paths } from '../../Routes';\r\nimport { setRuleProperties } from '../../utils/executeRuleUtils';\r\nimport { getQueryParams } from '../../utils/urlUtils';\r\n\r\nconst ExecuteRule = () => {\r\n const navigate = useNavigate();\r\n const { executeruledispatch } = useContext(ExecuteRuleContext);\r\n\r\n const hashParams = getQueryParams(location.hash);\r\n setRuleProperties(hashParams, executeruledispatch);\r\n navigate(Paths.HOME);\r\n return null;\r\n};\r\n\r\nexport default ExecuteRule;\r\n","import { useContext, useState } from 'react';\r\nimport { Container, Form } from 'react-bootstrap';\r\nimport Card from 'react-bootstrap/esm/Card';\r\nimport Col from 'react-bootstrap/esm/Col';\r\nimport Row from 'react-bootstrap/esm/Row';\r\nimport { FaRegCalendarAlt } from 'react-icons/fa';\r\nimport { useNavigate } from 'react-router-dom';\r\nimport { ThemeContext } from 'styled-components';\r\nimport { Paths } from '../../Routes';\r\nimport AppPropsContext from '../../context/appPropsContext';\r\nimport { GoogleAnalyticsAction, GoogleAnalyticsCategory, useGoogleAnalytics } from '../../hooks/useGoogleAnalytics';\r\nimport StyledButton from '../Buttons/StyledButton';\r\nimport { StyledMainCardTitle, StyledProfileCard } from '../Cards/StyledCard';\r\nimport { CenterDiv, RightDiv } from '../Div/StyledDiv';\r\nconst EnrollCodeBox = () => {\r\n const navigate = useNavigate();\r\n const themeContext = useContext(ThemeContext);\r\n const { apstate } = useContext(AppPropsContext);\r\n\r\n const { sendGoogleAnalyticsEvent } = useGoogleAnalytics();\r\n //const screenSize = useScreenResolution();\r\n\r\n const [anmeldKatSelected, setAnmeldKatSelected] = useState();\r\n\r\n // const getMarginRightLeft = () => {\r\n // if (screenSize.width > 1700) {\r\n // return '50px';\r\n // } else if (screenSize.width > 1300) {\r\n // return '20px';\r\n // } else {\r\n // return '10px';\r\n // }\r\n // };\r\n\r\n const handleSetAnmeldKat = (e: any) => {\r\n setAnmeldKatSelected(e.target.value.toString());\r\n };\r\n\r\n const getAnmeldKatOptions = () => {\r\n // if (props.departments.versicherungsArt && props.departments.versicherungsArt.length > 0) {\r\n // return props.departments.versicherungsArt.map((versicherungsArt) => (\r\n // \r\n // ));\r\n // } else {\r\n // return (\r\n // <>\r\n // \r\n // \r\n // \r\n // );\r\n // }\r\n\r\n if (apstate.anmeldeContexts && apstate.anmeldeContexts.length > 0) {\r\n return apstate.anmeldeContexts.map((anmeldeContext) => (\r\n \r\n ));\r\n } else {\r\n return null;\r\n }\r\n\r\n // return (\r\n // <>\r\n // \r\n // \r\n // \r\n // );\r\n };\r\n\r\n const handleTerminAnfordernClick = () => {\r\n sendGoogleAnalyticsEvent({\r\n category: GoogleAnalyticsCategory.HOMESCREEN,\r\n action: GoogleAnalyticsAction.CLICK,\r\n label: 'Standort ' + anmeldKatSelected + ' ausgewählt',\r\n });\r\n navigate(Paths.NEUER_ACCOUNT_WL + '?reason=' + anmeldKatSelected + '&type=NewAccount');\r\n };\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n Ihre Terminplanung ohne Account\r\n \r\n \r\n \r\n \r\n \r\n handleSetAnmeldKat(e)}\r\n >\r\n \r\n {getAnmeldKatOptions()}\r\n \r\n \r\n \r\n handleTerminAnfordernClick()}\r\n >\r\n Neuen Termin anfordern\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n /* ALTE VARIANTE \r\n return (\r\n \r\n \r\n \r\n \r\n Sie haben einen Termincode?\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n navigate(Paths.TERMINIERUNG_WL)}>\r\n Neuen Termin anfordern\r\n \r\n
\r\n
\r\n
\r\n \r\n
\r\n );\r\n */\r\n};\r\n\r\nexport default EnrollCodeBox;\r\n","import { useContext, useEffect, useState } from 'react';\r\nimport Col from 'react-bootstrap/Col';\r\nimport Container from 'react-bootstrap/Container';\r\nimport Image from 'react-bootstrap/Image';\r\nimport Row from 'react-bootstrap/Row';\r\nimport Nav from 'react-bootstrap/esm/Nav';\r\nimport EnrollCodeBox from '../../components/EnrollCodeBox/EnrollCodeBox';\r\nimport ExtraLinks from '../../components/ExtraLinks/ExtraLinks';\r\nimport QRCodeForApp from '../../components/QRCode/QRCodeForApp';\r\nimport AlertContext from '../../context/alertContext';\r\nimport AppPropsContext from '../../context/appPropsContext';\r\nimport { useAppProperties } from '../../hooks/useAppProperties';\r\nimport { resetShowAlertMessage } from '../../utils/alertHandling';\r\nimport Login from '../Login/Login';\r\nimport FullScreenImpressum from '../Mainscreen/FullScreenImpressum';\r\n\r\nconst Home = () => {\r\n interface IShowHomeElements {\r\n showLogin: boolean;\r\n showEnrollCodeBox: boolean;\r\n showQRCodeForApp: boolean;\r\n row_lg: number;\r\n }\r\n\r\n const { apstate } = useContext(AppPropsContext);\r\n const { alertdispatch } = useContext(AlertContext);\r\n // const themeContext = useContext(ThemeContext);\r\n\r\n const { getImpressum } = useAppProperties();\r\n\r\n const [homeElements, setHomeElements] = useState({\r\n showLogin: false,\r\n showEnrollCodeBox: false,\r\n showQRCodeForApp: false,\r\n row_lg: 0,\r\n });\r\n\r\n useEffect(() => {\r\n resetShowAlertMessage(alertdispatch);\r\n }, []);\r\n\r\n useEffect(() => {\r\n const homeEle = {\r\n showLogin: false,\r\n showEnrollCodeBox: false,\r\n showQRCodeForApp: false,\r\n row_lg: 0,\r\n };\r\n let row_lg_counter = 0;\r\n\r\n if (apstate.allowLogin) {\r\n homeEle.showLogin = true;\r\n row_lg_counter++;\r\n }\r\n if (apstate.allowAppointmentsWithoutLogin) {\r\n homeEle.showEnrollCodeBox = true;\r\n row_lg_counter++;\r\n }\r\n if (apstate.showMobileQR !== false) {\r\n homeEle.showQRCodeForApp = true;\r\n row_lg_counter++;\r\n }\r\n\r\n homeEle.row_lg = row_lg_counter;\r\n\r\n setHomeElements(homeEle);\r\n }, [apstate]);\r\n\r\n const brandingSrc = 'data:image/jpg;base64,' + apstate.brandingBytes;\r\n\r\n const impressum = getImpressum();\r\n\r\n return (\r\n \r\n
\r\n \r\n \r\n {apstate.extraLinks ? : null}\r\n \r\n
\r\n \r\n
\r\n \r\n {apstate.extraLinks ? (\r\n \r\n
\r\n \r\n
\r\n \r\n ) : null}\r\n
\r\n \r\n {homeElements.showEnrollCodeBox ? (\r\n \r\n \r\n \r\n ) : null}\r\n {homeElements.showLogin ? (\r\n \r\n \r\n \r\n ) : null}\r\n\r\n {homeElements.showQRCodeForApp ? (\r\n \r\n \r\n \r\n ) : null}\r\n \r\n
\r\n
\r\n )\r\n
\r\n );\r\n};\r\n\r\nexport default Home;\r\n","import { useContext, useEffect, useState } from 'react';\r\nimport AppPropsContext from '../../context/appPropsContext';\r\nimport { getBaseURL } from '../../globals/global';\r\nimport { usePersonalData } from '../../hooks/usePersonalData';\r\nimport { getQuestionnaireJourney } from '../../services/RestServices';\r\nimport CheckInWL from '../CheckIn/CheckInWL';\r\nimport Mainscreen from '../Mainscreen/Mainscreen';\r\n\r\nexport interface INeuerAccountWL {\r\n type?: string;\r\n key?: string;\r\n reason?: string;\r\n handleFinishClick?(response: any): void;\r\n}\r\n\r\nconst NeuerAccountPhysLogin = () => {\r\n const { apstate, apdispatch } = useContext(AppPropsContext);\r\n\r\n const [journeyData, setJourneyData] = useState();\r\n const [loaded, setLoaded] = useState(false);\r\n const { resetPersonalDataPhysPat } = usePersonalData();\r\n\r\n const hashParams: INeuerAccountWL = {\r\n type: 'NewAccount',\r\n reason: 'ANMELDKARD',\r\n key: getBaseURL(),\r\n };\r\n\r\n useEffect(() => {\r\n const getQuestJourney = async () => {\r\n const questionnaireJourneyResponse = await getQuestionnaireJourney('ANMELDKARD', '', '');\r\n if (questionnaireJourneyResponse) {\r\n /* override appProperties */\r\n apdispatch({\r\n type: 'SETAPPPROPS',\r\n ...apstate,\r\n allowAccountCreateDirect: false,\r\n allowDirectAppointmentsWithoutLogin: false,\r\n });\r\n setJourneyData(questionnaireJourneyResponse);\r\n }\r\n setLoaded(true);\r\n };\r\n\r\n resetPersonalDataPhysPat();\r\n getQuestJourney();\r\n }, []);\r\n\r\n const innerContent = () => {\r\n if (loaded) {\r\n if (journeyData) {\r\n return (\r\n \r\n );\r\n } else {\r\n return <>;\r\n }\r\n }\r\n };\r\n\r\n const showContent = () => {\r\n return (\r\n \r\n
{innerContent()}
\r\n
\r\n );\r\n };\r\n\r\n return showContent();\r\n};\r\n\r\nexport default NeuerAccountPhysLogin;\r\n","export default __webpack_public_path__ + \"static/media/CardSim.11c82f64.png\";","import { Image } from 'react-bootstrap';\r\nimport { BsSim } from 'react-icons/bs';\r\nimport cardSim from '../../images/CardSim.png';\r\nimport { SpaceBetweenDiv, VerticalCenterFlexDiv } from '../Div/StyledDiv';\r\nimport StyledButton from './StyledButton';\r\n\r\ninterface IReadCardButton {\r\n width?: string;\r\n textSize?: string;\r\n disabled: boolean;\r\n onClick(): void;\r\n}\r\n\r\nconst ReadCardButton = (props: IReadCardButton) => {\r\n return (\r\n {\r\n props.onClick();\r\n }}\r\n >\r\n \r\n \r\n \r\n \r\n \r\n Karte einlesen\r\n \r\n \r\n \r\n );\r\n};\r\n\r\nexport default ReadCardButton;\r\nBsSim;\r\n","import { 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 });\r\n } else if (response && response.state == 'info') {\r\n showAlertMessage({\r\n alertTitle: response.info.alertTitle,\r\n alertTxt: response.info.alertTxt,\r\n alertType: AlertType.info,\r\n onHide: AlertOnHide.onlyClose,\r\n alertdispatch: alertdispatch,\r\n });\r\n setVisibleTiles({\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') {\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 });\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 });\r\n }\r\n } else if (response && response.state == 'info') {\r\n showAlertMessage({\r\n alertTitle: response.info.alertTitle,\r\n alertTxt: response.info.alertTxt,\r\n alertType: AlertType.info,\r\n onHide: AlertOnHide.reload,\r\n alertdispatch: alertdispatch,\r\n });\r\n }\r\n }\r\n };\r\n\r\n const handleClickWithCard = () => {\r\n setShowLoadingSpinner(true);\r\n getURLToCallWorkflow();\r\n };\r\n\r\n const getArrowImageWidth = () => {\r\n if (screenSize.width > 1600) {\r\n return '50%';\r\n } else if (screenSize.width > 1000) {\r\n return '70%';\r\n } else {\r\n return '80%';\r\n }\r\n };\r\n\r\n const UeberweisungTile = () => {\r\n if (visibleTiles.tileUeberweisung) {\r\n return (\r\n \r\n \r\n

Überweisung

\r\n

Daten übertragen

\r\n {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 { useContext } from 'react';\r\nimport Nav from 'react-bootstrap/Nav';\r\nimport Navbar from 'react-bootstrap/Navbar';\r\nimport { AiOutlineUser } from 'react-icons/ai';\r\nimport { RiLogoutBoxRLine } from 'react-icons/ri';\r\nimport { ThemeContext } from 'styled-components';\r\nimport { IconDiv } from '../../components/Div/StyledDiv';\r\nimport Avatar from '../../components/SidebarItems/Avatar';\r\nimport MyTooltip from '../../components/Tooltip/MyTooltip';\r\n\r\nexport interface INavbarCheckInWL {\r\n onLogout?(): void;\r\n showAvatarIcon: boolean;\r\n onProfileClick?(): void;\r\n showLoginIcon: boolean;\r\n onLoginClick?(): void;\r\n wpName?: string;\r\n}\r\n\r\nconst NavbarCheckInWL = (props: INavbarCheckInWL) => {\r\n const themeContext = useContext(ThemeContext);\r\n\r\n return (\r\n \r\n \r\n {props.wpName && props.wpName.length > 0 && (\r\n
    \r\n

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

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

    Ihre Profildaten wurden erfolgreich geändert!

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

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

    \r\n

    Ihr Account wurde erfolgreich eingerichtet!

    \r\n

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

    \r\n

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

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

    Bitte erfassen Sie Ihre persönlichen Informationen:

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

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

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

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

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

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

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

    Alles erledigt

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

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

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

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

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

    Wählen Sie die gewünschte Fachrichtung aus

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

    Wählen Sie den gwünschten Standort aus

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

    Behandler wählen

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

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

    \r\n

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

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

    {props.hints.Hinweis}

    \r\n
    \r\n \r\n
    \r\n \r\n )}\r\n \r\n \r\n
    \r\n {showQuestions()}\r\n \r\n \r\n Weiter\r\n \r\n \r\n
    \r\n \r\n
    \r\n \r\n );\r\n};\r\n\r\nexport default AppointmentCategoryReasonHints;\r\n","import { useContext, useEffect, useState } from 'react';\r\nimport { Col, Form } from 'react-bootstrap';\r\nimport { ThemeContext } from 'styled-components';\r\nimport { CategoryBadgeSelected } from '../../components/Badges/StyledBadge';\r\nimport { StyledColNoPadding } from '../../components/Cols/StyledCol';\r\nimport { LeftDivMain } from '../../components/Div/StyledDiv';\r\nimport { StyledRowNoMargin } from '../../components/Rows/StyledRow';\r\nimport { StyledFormRowNoMargin } from '../../components/StyledForm/SyledForm';\r\nimport { ParagraphFontSize } from '../../components/StyledParagraph/StyledParagraph';\r\nimport { StyledMainHeader, StyledSubHeader } from '../../components/StyledText/StyledHeader';\r\nimport { IDepartmentReasons, IDepartments } from '../../context/loginContext';\r\nimport TerminierungContext, { IHints, IHintsAnswers } from '../../context/terminierungContext';\r\nimport { useGoogleAnalytics } from '../../hooks/useGoogleAnalytics';\r\nimport AppointmentCategoryReasonHints from './AppointmentCategoryReasonHints';\r\n\r\ninterface IAppointmentCategoryReason {\r\n departments: IDepartments;\r\n hints?: IHints[];\r\n handleReasonClick(): void;\r\n}\r\n\r\nconst AppointmentCategoryReason = (props: IAppointmentCategoryReason) => {\r\n const themeContext = useContext(ThemeContext);\r\n const { tmstate, tmdispatch } = useContext(TerminierungContext);\r\n const [reasonSelected, setReasonSelected] = useState();\r\n const [reasonSelected1, setReasonSelected1] = useState();\r\n const [reasonMainCodeSelected, setReasonMainCodeSelected] = useState();\r\n const [insuranceSelected, setInsuranceSelected] = useState();\r\n const [appTypeSelected, setAppTypeSelected] = useState();\r\n const [hints, setHints] = useState();\r\n const { sendGoogleAnalyticsPageView } = useGoogleAnalytics();\r\n\r\n const VERSICHERUNG_VOR_ORT_LONG = 'vor Ort';\r\n const VERSICHERUNG_VOR_ORT_SHORT = 'O';\r\n\r\n const VERSICHERUNG_PER_VIDEO_LONG = 'per Video';\r\n const VERSICHERUNG_PER_VIDEO_SHORT = 'V';\r\n\r\n const VERSICHERUNG_PER_TELEFON_LONG = 'per Telefon';\r\n const VERSICHERUNG_PER_TELEFON_SHORT = 'T';\r\n\r\n const TERMINART_PRIVAT_LONG = 'Private Krankenversicherung (PKV)';\r\n const TERMINART_PRIVAT_SHORT = 'P';\r\n\r\n const TERMINART_GESETZLICH_LONG = 'Gesetzliche Krankenversicherung (GKV)';\r\n const TERMINART_GESETZLICH_SHORT = 'G';\r\n\r\n const TERMINART_BG_LONG = 'Berufsgenossenschaft (BG)';\r\n const TERMINART_BG_SHORT = 'B';\r\n\r\n const TERMINART_SELBSTZAHLER_LONG = 'Selbstzahler (SZ)';\r\n const TERMINART_SELBSTZAHLER_SHORT = 'S';\r\n\r\n const getShortVersicherungsart = (versicherungsartLong: string) => {\r\n let versicherungsArtShort = '';\r\n if (versicherungsartLong) {\r\n if (versicherungsartLong === TERMINART_PRIVAT_LONG) {\r\n versicherungsArtShort = TERMINART_PRIVAT_SHORT;\r\n } else if (versicherungsartLong === TERMINART_GESETZLICH_LONG) {\r\n versicherungsArtShort = TERMINART_GESETZLICH_SHORT;\r\n } else if (versicherungsartLong === TERMINART_BG_LONG) {\r\n versicherungsArtShort = TERMINART_BG_SHORT;\r\n } else if (versicherungsartLong === TERMINART_SELBSTZAHLER_LONG) {\r\n versicherungsArtShort = TERMINART_SELBSTZAHLER_SHORT;\r\n }\r\n }\r\n\r\n return versicherungsArtShort;\r\n };\r\n\r\n const getShortTerminart = (terminartLong: string) => {\r\n let terminartShort = '';\r\n if (terminartLong) {\r\n if (terminartLong === VERSICHERUNG_VOR_ORT_LONG) {\r\n terminartShort = VERSICHERUNG_VOR_ORT_SHORT;\r\n } else if (terminartLong === VERSICHERUNG_PER_VIDEO_LONG) {\r\n terminartShort = VERSICHERUNG_PER_VIDEO_SHORT;\r\n } else if (terminartLong === VERSICHERUNG_PER_TELEFON_LONG) {\r\n terminartShort = VERSICHERUNG_PER_TELEFON_SHORT;\r\n }\r\n }\r\n\r\n return terminartShort;\r\n };\r\n\r\n const getLongVersicherungsart = (versicherungsartShort: string) => {\r\n let versicherungsArtLong = '';\r\n if (versicherungsartShort) {\r\n if (versicherungsartShort === TERMINART_PRIVAT_SHORT) {\r\n versicherungsArtLong = TERMINART_PRIVAT_LONG;\r\n } else if (versicherungsartShort === TERMINART_GESETZLICH_SHORT) {\r\n versicherungsArtLong = TERMINART_GESETZLICH_LONG;\r\n }\r\n }\r\n\r\n return versicherungsArtLong;\r\n };\r\n\r\n const getLongTerminart = (terminartShort: string) => {\r\n let terminartLong = '';\r\n if (terminartShort) {\r\n if (terminartShort === VERSICHERUNG_VOR_ORT_SHORT) {\r\n terminartLong = VERSICHERUNG_VOR_ORT_LONG;\r\n } else if (terminartShort === VERSICHERUNG_PER_VIDEO_SHORT) {\r\n terminartLong = VERSICHERUNG_PER_VIDEO_LONG;\r\n } else if (terminartShort === VERSICHERUNG_PER_TELEFON_SHORT) {\r\n terminartLong = VERSICHERUNG_PER_TELEFON_LONG;\r\n }\r\n }\r\n\r\n return terminartLong;\r\n };\r\n\r\n let filteredReasonsLocal: IDepartmentReasons[] = [];\r\n\r\n useEffect(() => {\r\n sendGoogleAnalyticsPageView({ page: '/AppointmentCategoryReason', title: 'Besuchsgrund wählen' });\r\n }, []);\r\n\r\n useEffect(() => {\r\n if (\r\n reasonSelected &&\r\n reasonSelected.length > 0 &&\r\n insuranceSelected &&\r\n insuranceSelected.length > 0 &&\r\n appTypeSelected &&\r\n appTypeSelected.length > 0\r\n ) {\r\n const filterVersicherungsart = getShortVersicherungsart(insuranceSelected);\r\n const filterTerminart = getShortTerminart(appTypeSelected);\r\n\r\n const filteredReasons = props.departments.reasons.filter((reason) => {\r\n if (\r\n reason.reasonName === reasonSelected &&\r\n ((reason.pFilter && reason.pFilter.length > 0 && reason.pFilter.includes(filterVersicherungsart)) ||\r\n reason.pFilter === '') &&\r\n ((reason.aFilter && reason.aFilter.length > 0 && reason.aFilter.includes(filterTerminart)) ||\r\n reason.aFilter === '')\r\n ) {\r\n return true;\r\n }\r\n });\r\n let foundHint: IHints | undefined;\r\n if (filteredReasons) {\r\n tmdispatch({\r\n type: 'SETFILTEREDREASONS',\r\n filteredReasons: filteredReasons,\r\n });\r\n filteredReasonsLocal = filteredReasons;\r\n tmdispatch({\r\n type: 'SELECTINSURANCE',\r\n selectedInsurance: insuranceSelected,\r\n });\r\n tmdispatch({\r\n type: 'SELECTAPPOINTMENTTYPE',\r\n selectedAppointmentType: appTypeSelected,\r\n });\r\n\r\n /* check for possible hints questions */\r\n\r\n if (props.hints) {\r\n let hints = props.hints;\r\n\r\n /* filter for department */\r\n const selectedDepartment = tmstate.selectedDepartment.name;\r\n hints = props.hints.filter((hint) => {\r\n if (\r\n hint.department === undefined ||\r\n (hint.department && hint.department === selectedDepartment)\r\n ) {\r\n return true;\r\n }\r\n });\r\n\r\n /* filter for rest */\r\n for (let i = 0; i < filteredReasons.length; i++) {\r\n for (let j = 0; j < hints.length; j++) {\r\n if (hints[j].reason === filteredReasons[i].reasonCode) {\r\n let aFilterChecked = false;\r\n let pFilterChecked = false;\r\n\r\n const hintAFilter = hints[j].aFilter;\r\n if (hintAFilter && hintAFilter.length > 0) {\r\n if (hintAFilter.includes(filterTerminart)) {\r\n aFilterChecked = true;\r\n }\r\n } else {\r\n aFilterChecked = true;\r\n }\r\n\r\n const hintPFilter = hints[j].pFilter;\r\n if (hintPFilter && hintPFilter.length > 0) {\r\n if (hintPFilter.includes(filterVersicherungsart)) {\r\n pFilterChecked = true;\r\n }\r\n } else {\r\n pFilterChecked = true;\r\n }\r\n\r\n if (aFilterChecked && pFilterChecked) {\r\n foundHint = hints[j];\r\n break;\r\n }\r\n }\r\n }\r\n\r\n if (foundHint) {\r\n break;\r\n }\r\n }\r\n }\r\n }\r\n\r\n if (foundHint) {\r\n setHints(foundHint);\r\n } else {\r\n handleReasonClick();\r\n }\r\n }\r\n }, [reasonSelected, insuranceSelected, appTypeSelected]);\r\n\r\n const handleReasonClick = () => {\r\n let selectedReasonId: string | null = null;\r\n for (const v of filteredReasonsLocal) {\r\n if (v.reasonName == reasonSelected) {\r\n selectedReasonId = v.reasonId;\r\n }\r\n v.reasonId;\r\n }\r\n tmdispatch({\r\n type: 'SELECTREASON',\r\n selectedReason: {\r\n ...tmstate.selectedReason,\r\n reasonName: reasonSelected,\r\n reasonId: selectedReasonId,\r\n },\r\n });\r\n props.handleReasonClick();\r\n };\r\n\r\n const onHintsSubmit = (answers: IHintsAnswers[]) => {\r\n if (answers) {\r\n tmdispatch({\r\n type: 'SELECTREASONHINTS',\r\n selectedReasonHints: answers,\r\n });\r\n }\r\n handleReasonClick();\r\n };\r\n\r\n const handleSetComboboxReason = (e: any) => {\r\n const reason = e.target.value.toString();\r\n const filteredReason = props.departments.reasons.find((freason) => {\r\n if ((freason.reasonMainCode && freason.reasonMainCode === reason) || freason.reasonName == reason) {\r\n return true;\r\n }\r\n });\r\n\r\n if (filteredReason?.reasonMainCode) {\r\n setReasonMainCodeSelected(filteredReason.reasonMainCode);\r\n setReasonSelected1(filteredReason.reasonMainCode);\r\n setReasonSelected('');\r\n setHints({\r\n reason: '',\r\n });\r\n } else {\r\n setReasonMainCodeSelected('');\r\n setReasonSelected1(e.target.value.toString());\r\n setReasonSelected(e.target.value.toString());\r\n }\r\n };\r\n\r\n const handleSetComboboxReasonSub = (e: any) => {\r\n const reason = e.target.value.toString();\r\n if (reason.startsWith('Main|')) {\r\n setReasonMainCodeSelected(reason.split('|')[1]);\r\n } else {\r\n setReasonSelected(e.target.value.toString());\r\n }\r\n };\r\n\r\n const handleSetComboboxInsurance = (e: any) => {\r\n setInsuranceSelected(e.target.value.toString());\r\n };\r\n\r\n const handleSetComboboxAppType = (e: any) => {\r\n setAppTypeSelected(e.target.value.toString());\r\n };\r\n\r\n const getVersicherungsartOptions = () => {\r\n if (props.departments.versicherungsArt && props.departments.versicherungsArt.length > 0) {\r\n return props.departments.versicherungsArt.map((versicherungsArt) => (\r\n \r\n ));\r\n } else {\r\n return (\r\n <>\r\n \r\n \r\n \r\n \r\n \r\n );\r\n }\r\n };\r\n\r\n const getVersicherungsartDefault = () => {\r\n if (props.departments.versicherungsArt && props.departments.versicherungsArt.length == 1) {\r\n // setInsuranceSelected(props.departments.versicherungsArt[0]);\r\n if (!insuranceSelected) {\r\n setInsuranceSelected(props.departments.versicherungsArt[0]);\r\n }\r\n return props.departments.versicherungsArt[0];\r\n }\r\n return '';\r\n };\r\n\r\n const getVersicherungsartDisabled = () => {\r\n if (props.departments.versicherungsArt && props.departments.versicherungsArt.length == 1) {\r\n return true;\r\n }\r\n return false;\r\n };\r\n\r\n const getKontaktartOptions = () => {\r\n if (props.departments.kontaktArt && props.departments.kontaktArt.length > 0) {\r\n return props.departments.kontaktArt.map((kontaktArt) => (\r\n \r\n ));\r\n } else {\r\n return (\r\n <>\r\n \r\n \r\n \r\n \r\n );\r\n }\r\n };\r\n\r\n const getKontaktartDefault = () => {\r\n if (props.departments.kontaktArt && props.departments.kontaktArt.length == 1) {\r\n // setAppTypeSelected(props.departments.kontaktArt[0]);\r\n if (!appTypeSelected) {\r\n setAppTypeSelected(props.departments.kontaktArt[0]);\r\n }\r\n return props.departments.kontaktArt[0];\r\n }\r\n return '';\r\n };\r\n\r\n const getKontaktartDisabled = () => {\r\n if (props.departments.kontaktArt && props.departments.kontaktArt.length == 1) {\r\n return true;\r\n }\r\n return false;\r\n };\r\n\r\n const getBesuchsgrundOptions = (mainReason: string | null) => {\r\n let filterVersicherungsart = '';\r\n if (insuranceSelected) {\r\n filterVersicherungsart = getShortVersicherungsart(insuranceSelected);\r\n }\r\n let filterTerminart = '';\r\n if (appTypeSelected) {\r\n filterTerminart = getShortTerminart(appTypeSelected);\r\n }\r\n\r\n const usedReasons: string[] = [];\r\n const usedReasonMainCodes: string[] = [];\r\n const reasonsDone = {};\r\n const reasons = props.departments.reasons.map((reason) => {\r\n if (mainReason) {\r\n if (!reason.reasonMainCode || reason.reasonMainCode !== mainReason) {\r\n return null;\r\n } else {\r\n if (reasonsDone[reason.reasonId]) {\r\n return null;\r\n }\r\n if (\r\n (reason.pFilter && !reason.pFilter.includes(filterVersicherungsart) && reason.pFilter !== '') ||\r\n (reason.aFilter && !reason.aFilter.includes(filterTerminart) && reason.aFilter !== '')\r\n ) {\r\n return null;\r\n }\r\n reasonsDone[reason.reasonId] = true;\r\n const name = reason.reasonName;\r\n return (\r\n <>\r\n \r\n \r\n );\r\n }\r\n } else {\r\n if (\r\n (reason.pFilter && !reason.pFilter.includes(filterVersicherungsart) && reason.pFilter !== '') ||\r\n (reason.aFilter && !reason.aFilter.includes(filterTerminart) && reason.aFilter !== '')\r\n ) {\r\n return null;\r\n } else {\r\n if (\r\n (reason.reasonMainCode && usedReasonMainCodes.includes(reason.reasonMainCode)) ||\r\n usedReasons.includes(reason.reasonId)\r\n ) {\r\n return null;\r\n } else {\r\n usedReasons.push(reason.reasonId);\r\n\r\n let name = reason.reasonName;\r\n let valueSub = reason.reasonName;\r\n if (reason.reasonMainCode && reason.reasonMainCode.length > 0) {\r\n usedReasonMainCodes.push(reason.reasonMainCode);\r\n name = reason.reasonMainCode;\r\n valueSub = name;\r\n }\r\n return (\r\n <>\r\n \r\n \r\n );\r\n }\r\n }\r\n }\r\n });\r\n\r\n return reasons;\r\n };\r\n\r\n const getBesuchsgrundDefault = () => {\r\n if (\r\n props.departments.reasons &&\r\n props.departments.reasons.length == 1 &&\r\n !props.departments.reasons[0].reasonMainCode\r\n ) {\r\n // setAppTypeSelected(props.departments.kontaktArt[0]);\r\n if (!reasonSelected) {\r\n setReasonSelected(props.departments.reasons[0].reasonName);\r\n }\r\n return props.departments.reasons[0].reasonName;\r\n }\r\n return '';\r\n };\r\n\r\n const getBesuchsgrundDisabled = () => {\r\n if (\r\n props.departments.reasons &&\r\n props.departments.reasons.length == 1 &&\r\n !props.departments.reasons[0].reasonMainCode\r\n ) {\r\n return true;\r\n }\r\n return false;\r\n };\r\n\r\n const displayHints = () => {\r\n if (hints?.reason && hints?.reason.length > 0) {\r\n return ;\r\n }\r\n };\r\n\r\n return (\r\n \r\n Besuchsgrund wählen\r\n
    \r\n
    \r\n \r\n Fachrichtung\r\n \r\n {props.departments.name}\r\n \r\n \r\n
    \r\n\r\n
    \r\n \r\n \r\n \r\n \r\n Versichertentyp\r\n \r\n handleSetComboboxInsurance(e)}\r\n >\r\n \r\n {getVersicherungsartOptions()}\r\n \r\n \r\n \r\n \r\n \r\n \r\n
    \r\n \r\n \r\n Terminart\r\n \r\n handleSetComboboxAppType(e)}\r\n >\r\n \r\n {getKontaktartOptions()}\r\n \r\n \r\n
    \r\n
    \r\n
    \r\n \r\n \r\n \r\n Besuchsgrund\r\n \r\n \r\n \r\n handleSetComboboxReason(e)}\r\n >\r\n \r\n {getBesuchsgrundOptions(null)}\r\n \r\n \r\n\r\n \r\n {reasonMainCodeSelected && reasonMainCodeSelected.length > 0 && (\r\n handleSetComboboxReasonSub(e)}\r\n >\r\n \r\n {getBesuchsgrundOptions(reasonMainCodeSelected)}\r\n \r\n )}\r\n \r\n \r\n \r\n \r\n {hints && displayHints()}\r\n
    \r\n );\r\n};\r\n\r\nexport default AppointmentCategoryReason;\r\n","import StyledButton from '../../components/Buttons/StyledButton';\r\nimport StyledCol from '../../components/Cols/StyledCol';\r\nimport { StickyButtonRowBottomDiv } from '../../components/Div/StyledDiv';\r\nimport { StyledRowNoMargin } from '../../components/Rows/StyledRow';\r\nimport { TermineContent } from './Termine';\r\n\r\ninterface ITermineCheckIn {\r\n showNextButton: boolean;\r\n handleNextWithActiveStep?(currentActiveStep: number): void;\r\n currentActiveStep: number;\r\n}\r\n\r\ninterface ITermineButtons {\r\n handleNext(): void;\r\n}\r\n\r\nconst TermineButtons = (props: ITermineButtons) => {\r\n const handleNext = () => {\r\n props.handleNext();\r\n };\r\n\r\n return (\r\n \r\n \r\n \r\n handleNext()}>Weiter\r\n \r\n \r\n \r\n );\r\n};\r\n\r\nconst TermineCheckIn = (props: ITermineCheckIn) => {\r\n const handleNextClick = () => {\r\n if (props.handleNextWithActiveStep) {\r\n props.handleNextWithActiveStep(props.currentActiveStep);\r\n }\r\n };\r\n\r\n return (\r\n <>\r\n \r\n {props.showNextButton && }\r\n \r\n );\r\n};\r\n\r\nexport default TermineCheckIn;\r\n","import { useContext, useEffect } from 'react';\r\nimport StyledButton from '../../components/Buttons/StyledButton';\r\nimport StyledCol from '../../components/Cols/StyledCol';\r\nimport { StickyButtonRowBottomDiv } from '../../components/Div/StyledDiv';\r\nimport { StyledRowNoMargin } from '../../components/Rows/StyledRow';\r\nimport AlertContext from '../../context/alertContext';\r\nimport LoginContext, { InitialLoginType } from '../../context/loginContext';\r\nimport { getDiagnosticReportsOfPatient, IDRDataEntry } from '../../services/fhir/FHIRDiagnosticReports';\r\nimport UploadContent from '../UploadContent/UploadContent';\r\n\r\ninterface ITermineButtons {\r\n handleNext(): void;\r\n nextButtonEnabled: boolean;\r\n}\r\n\r\ninterface IUpload {\r\n showNextButton: boolean;\r\n nextButtonEnabled?: boolean;\r\n handleNextWithActiveStep?(currentActiveStep: number): void;\r\n currentActiveStep: number;\r\n}\r\n\r\nconst UploadButtons = (props: ITermineButtons) => {\r\n const handleNext = () => {\r\n props.handleNext();\r\n };\r\n\r\n const buttonEnabled = () => {\r\n let enabled = true;\r\n if (props.nextButtonEnabled === false) {\r\n enabled = false;\r\n }\r\n return enabled;\r\n };\r\n\r\n return (\r\n \r\n \r\n \r\n handleNext()}>\r\n Weiter\r\n \r\n \r\n \r\n \r\n );\r\n};\r\n\r\nconst Upload = (props: IUpload) => {\r\n const { state } = useContext(LoginContext);\r\n const { alertdispatch } = useContext(AlertContext);\r\n\r\n useEffect(() => {\r\n getDiagnosticReports(state, alertdispatch);\r\n }, []);\r\n\r\n const handleNextClick = () => {\r\n if (props.handleNextWithActiveStep) {\r\n props.handleNextWithActiveStep(props.currentActiveStep);\r\n }\r\n };\r\n\r\n const getDiagnosticReports = async (state: InitialLoginType, alertdispatch: any) => {\r\n const response = await getDiagnosticReportsOfPatient(state, alertdispatch);\r\n if (response) {\r\n const rep: IDRDataEntry[] = response.data.entry;\r\n console.log(rep);\r\n // setReports(rep);\r\n }\r\n };\r\n\r\n const buttonEnabled = () => {\r\n let enabled = true;\r\n if (props.nextButtonEnabled === false) {\r\n enabled = false;\r\n }\r\n return enabled;\r\n };\r\n\r\n return (\r\n
    \r\n \r\n {props.showNextButton && }\r\n
    \r\n );\r\n};\r\n\r\nexport default Upload;\r\n","import { useContext, useEffect, useState } from 'react';\r\nimport Container from 'react-bootstrap/esm/Container';\r\nimport { useLocation, useNavigate } from 'react-router-dom';\r\nimport { ThemeContext } from 'styled-components';\r\nimport { Paths } from '../../Routes';\r\nimport AppointmentCalendarWithHeadline from '../../components/AppointmentCalendar/AppointmentCalendarWithHeadline';\r\nimport AppointmentPersonalDataWithCardRead from '../../components/AppointmentPersonalData/AppointmentPersonalDataWithCardRead';\r\nimport AppointmentPersonalDataWithLogin from '../../components/AppointmentPersonalData/AppointmentPersonalDataWithLogin';\r\nimport BookingAppointment from '../../components/Booking/BookingAppointment';\r\nimport { IIncomingMessage } from '../../components/Chat/Chat';\r\nimport { CenterDiv, LeftDivCheckIn, StickyStepperDiv, StickyStepperWithNavbar } from '../../components/Div/StyledDiv';\r\nimport FinalCheckIn from '../../components/FinalCheckIn/FinalCheckIn';\r\nimport { IFrameInternal } from '../../components/IFrame/IFrame';\r\nimport IFramePDF from '../../components/IFrame/IFramePDF';\r\nimport LoadingSpinnerWithText from '../../components/Loading/LoadingSpinnerWithText';\r\nimport LoginCardModal, { ILoginCardModalShow } from '../../components/Modals/LoginCardModal/LoginCardModal';\r\nimport PDFModal from '../../components/Modals/PDFModal/PDFModal';\r\nimport TelephoneModal from '../../components/Modals/TelephoneModal/TelephoneModal';\r\nimport StepperCheckIn, {\r\n IStepperCheckInStep,\r\n StepTyp,\r\n StepperLabelOrientation,\r\n StepperOrientation,\r\n} from '../../components/Stepper/StepperCheckIn';\r\nimport { ITelephoneCallIcon, stopRingTone } from '../../components/Telephone/Telephone';\r\nimport AlertContext, { AlertOnHide, AlertType } from '../../context/alertContext';\r\nimport AppPropsContext from '../../context/appPropsContext';\r\nimport CheckInContext from '../../context/checkInContext';\r\nimport LoginContext, { IActivePatients, ICodeName } from '../../context/loginContext';\r\nimport { IQAnswers, IQData } from '../../context/questionnaireContext';\r\nimport TerminierungContext from '../../context/terminierungContext';\r\nimport VideochatContext from '../../context/videochatContext';\r\nimport { PROFILE_HOME, securityItemNames } from '../../globals/global';\r\nimport { useAppProperties } from '../../hooks/useAppProperties';\r\nimport { useAppointmentSelection } from '../../hooks/useAppointmentSelection';\r\nimport { useAuth } from '../../hooks/useAuth';\r\nimport { useHandleLogoutCheckIn } from '../../hooks/useHandleLogout';\r\nimport { useLoadQuestionnaireAnswers } from '../../hooks/useLoadQuestionnaireAnswers';\r\nimport { useMessages } from '../../hooks/useMessages';\r\nimport { usePatientSwitch } from '../../hooks/usePatientSwitch';\r\nimport { usePersonalData } from '../../hooks/usePersonalData';\r\nimport useScreenResolution from '../../hooks/useScreenResolution';\r\nimport {\r\n IAuthorizeAsync,\r\n IEnrollData,\r\n IQuestionnaireJourneyData,\r\n authorizeAsync,\r\n getEnrollStatus,\r\n getQuestionnaireJourney,\r\n unblockAppointment,\r\n updateEnroll,\r\n} from '../../services/RestServices';\r\nimport { initWebSocket } from '../../services/VideochatService';\r\nimport { getDiagnosticReport } from '../../services/fhir/FHIRDiagnosticReports';\r\nimport { getQuestionnaireContent, getQuestionnaireOTPAuth } from '../../services/fhir/FHIRQuestionnaire';\r\nimport { showAlertMessage } from '../../utils/alertHandling';\r\nimport { getPDFDataFromDiagnosticReportResponse } from '../../utils/documentUtils';\r\nimport { getFullOTPAuthorization } from '../../utils/pcpUtils';\r\nimport { getQuestionnaireResourceFromRequest } from '../../utils/questionnaireUtils';\r\nimport AppointmentCategoryDepartment from '../AppointmentCategory/AppointmentCategoryDepartment';\r\nimport AppointmentCategoryExtendedPhysician from '../AppointmentCategory/AppointmentCategoryExtendedPhysican';\r\nimport AppointmentCategoryLocation from '../AppointmentCategory/AppointmentCategoryLocation';\r\nimport AppointmentCategoryPhysician from '../AppointmentCategory/AppointmentCategoryPhysician';\r\nimport AppointmentCategoryReason from '../AppointmentCategory/AppointmentCategoryReason';\r\nimport { IPDFModalShow } from '../Dokumente/Dokumente';\r\nimport FragebogenDetail from '../Fragebogen/FragebogenDetail';\r\nimport { IQuestionnaireStepData, IQuestionnaireWL } from '../Fragebogen/QuestionnaireWL';\r\nimport FullScreenImpressum from '../Mainscreen/FullScreenImpressum';\r\nimport NavbarCheckInWL from '../Navbar/NavbarCheckInWL';\r\nimport NeuerAccount from '../NeuerAccount/NeuerAccount';\r\nimport { INeuerAccountWL } from '../NeuerAccount/NeuerAccountWL';\r\nimport PersonalDataSummary from '../PersonalDataSummary/PersonalDataSummary';\r\nimport TermineCheckIn from '../Termine/TermineCheckIn';\r\nimport Upload from '../Upload/Upload';\r\nimport VideochatWL from '../Videochat/VideochatWL';\r\n// import {s} from '../../services/SignaturePad/signotec/STPadServerLib-3.2.0'\r\n\r\nexport interface IRegisteredUserParams {\r\n reason: string;\r\n userId: string;\r\n t0: string;\r\n otp: string;\r\n isCheckin?: boolean;\r\n}\r\n\r\nexport interface ICheckInWL {\r\n newAccountHashParams?: INeuerAccountWL;\r\n registeredUserHashParams?: IRegisteredUserParams;\r\n journeyResponse?: IQuestionnaireJourneyData;\r\n useLoginContext: boolean;\r\n isPhysicianLogin?: boolean;\r\n}\r\n\r\nexport interface IAuthData {\r\n finalURL?: string;\r\n otp: string;\r\n t0: string;\r\n userId: number;\r\n}\r\n\r\ninterface IReloadPageData {\r\n reload: boolean;\r\n withJourneyReload: boolean;\r\n nextActiveStep: number;\r\n newStepValues?: IChangeStep[];\r\n}\r\n\r\ninterface IChangeStep {\r\n id: string;\r\n completed: boolean;\r\n draft: boolean;\r\n active: boolean;\r\n clickable: boolean;\r\n}\r\n\r\nconst CheckInWL = (props: ICheckInWL) => {\r\n const navigate = useNavigate();\r\n const location = useLocation();\r\n const screenSize = useScreenResolution();\r\n // const location = useLocation();\r\n // const hashParams: ICheckInWL = getQueryParams(location.search);\r\n\r\n const { state, dispatch } = useContext(LoginContext);\r\n const { tmstate, tmdispatch } = useContext(TerminierungContext);\r\n const { alertdispatch } = useContext(AlertContext);\r\n const { getAndSetPersonalData, getEnrollData } = usePersonalData();\r\n const { apstate, apdispatch } = useContext(AppPropsContext);\r\n const { vsstate, vsdispatch } = useContext(VideochatContext);\r\n const { checkinstate } = useContext(CheckInContext);\r\n const themeContext = useContext(ThemeContext);\r\n\r\n const { handleLogoutCheckIn } = useHandleLogoutCheckIn();\r\n\r\n const { allowMessages, forbidMessages, videochatMessagesAllowed } = useMessages();\r\n\r\n const [\r\n setSelectedQuestionnaire,\r\n setQuestionnaireBody,\r\n loadQuestionnaireAnswers,\r\n setSelectedQuestionnaireAnswers,\r\n setQuestionnaireData,\r\n ] = useLoadQuestionnaireAnswers();\r\n\r\n const { setCheckInAuth, hasAnmeldContexts } = useAuth();\r\n\r\n const { setNewPatient } = usePatientSwitch();\r\n\r\n const { getImpressum, isExtendedPhysicians, enableFullscreenMode, disableFullscreenMode, isFullscreenMode } =\r\n useAppProperties();\r\n\r\n const { getSelectedResource } = useAppointmentSelection();\r\n\r\n const [allSteps, setAllSteps] = useState([]);\r\n const [activeStep, setActiveStep] = useState(0);\r\n const [stepClicked, setStepClicked] = useState(false);\r\n const [activeContent, setActiveContent] = useState(<>);\r\n const [authData, setAuthData] = useState({ finalURL: '', otp: '', t0: '', userId: 0 });\r\n const [journeyData, setJourneyData] = useState();\r\n const [pdfModalShow, setPdfModalShow] = useState({\r\n show: false,\r\n modalTitle: '',\r\n pdfData: '',\r\n isSignable: false,\r\n diagnosticReportData: '',\r\n });\r\n\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 setPdfModalShow({\r\n show: true,\r\n modalTitle: modalTitle,\r\n pdfData: ,\r\n isSignable: isSignable === 'true' ? true : false,\r\n isSigned: isSigned === 'true' ? true : false,\r\n diagnosticReportData: response.data,\r\n });\r\n };\r\n\r\n const handleClickQuestionnaireDraft = async (\r\n auth: string,\r\n questionnaireId: string,\r\n stepData: IQuestionnaireStepData,\r\n stepName: string,\r\n ) => {\r\n let answers: IQAnswers[] = [];\r\n\r\n const questionnaireAuth: IQuestionnaireWL = {\r\n type: 'Questionnaire',\r\n baseURL: props.newAccountHashParams?.key,\r\n name: stepName,\r\n otp: auth,\r\n t0: authData.t0,\r\n userId: authData.userId.toString(),\r\n stepData: stepData,\r\n };\r\n\r\n const selectedResource = await getQuestionnaireOTPAuth(questionnaireAuth);\r\n if (selectedResource) {\r\n const rep: IQData = selectedResource.data;\r\n setQuestionnaireData(rep);\r\n const qResource = getQuestionnaireResourceFromRequest(rep);\r\n const contentRes = await getQuestionnaireContent('PCP ' + auth, questionnaireId, alertdispatch);\r\n\r\n // set correct questionnaire id\r\n const qId = questionnaireId.split('/')[1];\r\n selectedResource.id = qId;\r\n selectedResource.status = contentRes.data.status; //in-progress\r\n\r\n setQuestionnaireBody(contentRes.data);\r\n\r\n answers = loadQuestionnaireAnswers(contentRes.data);\r\n\r\n setSelectedQuestionnaireAnswers(answers);\r\n\r\n qResource.status = contentRes.data.status; //in-progress\r\n setSelectedQuestionnaire(qResource);\r\n\r\n setQuestionnaireLoaded(true);\r\n }\r\n };\r\n\r\n // const handleClickAppointmentRegisteredUser = () => {\r\n // if (journeyData?.makros && journeyData.makros.length > 0) {\r\n // const auth = getFullOTPAuthorization('PCP', authData.otp, authData.userId, authData.t0);\r\n // setActiveContent(\r\n // ,\r\n // );\r\n // }\r\n // };\r\n\r\n // const handleClickAppointmentNewUser = (journeyData: IQuestionnaireJourneyData) => {\r\n // if (journeyData?.makros && journeyData.makros.length > 0) {\r\n // if (checkinstate.urlToCallResponse.eGK && checkinstate.urlToCallResponse.eGK.length > 0) {\r\n // setActiveContent(\r\n // ,\r\n // );\r\n // } else {\r\n // setActiveContent(\r\n // ,\r\n // );\r\n // }\r\n // }\r\n // };\r\n\r\n const getAndSetPersData = (authData: IAuthData) => {\r\n const auth = getFullOTPAuthorization('PCP', authData.otp, authData.userId, authData.t0);\r\n getAndSetPersonalData(auth, authData.userId.toString(), '');\r\n };\r\n\r\n const showQuestionnaireEntries = (stepContent: number) => {\r\n if (allSteps.length > 0) {\r\n // const activeHashParams = allSteps[activeStep].hashParams;\r\n const stepData: IQuestionnaireStepData = {\r\n activeStepNumber: stepContent,\r\n handleQuestionnaireFinished: handleQuestFinished,\r\n handleQuestionnairePDFClose: handleQuestPDFClose,\r\n handleQuestionnaireSave: handleQuestSave,\r\n };\r\n\r\n // const otp = authData.otp + '&userId=' + authData.userId + '&t0=' + authData.t0;\r\n const otp = getFullOTPAuthorization('', authData.otp, authData.userId, authData.t0);\r\n const step = allSteps[stepContent];\r\n\r\n const documentId = getJourneyFinalURLId(step.id);\r\n const draftId = getJourneyDraftURLId(step.id);\r\n if (documentId && documentId.length > 0) {\r\n /* it's a pdf document */\r\n handleClickPDFDocment('PCP ' + otp, documentId);\r\n } else if (draftId && draftId.length > 0) {\r\n /* it's a draft questionnaire */\r\n handleClickQuestionnaireDraft(otp, draftId, stepData, step.id);\r\n } else {\r\n return (\r\n \r\n );\r\n }\r\n }\r\n };\r\n\r\n const handlePossibleChangeOfNextSteps = (stepNumberClicked: number) => {\r\n let setInactive = false;\r\n const clickedId = allSteps[stepNumberClicked].id;\r\n if (\r\n clickedId === ID_CATEGORY_DEPARTMENT ||\r\n clickedId === ID_CATEGORY_REASON ||\r\n clickedId === ID_CATEGORY_PHYSICIAN ||\r\n clickedId === ID_APPOINTMENT_SELECTION\r\n ) {\r\n setInactive = true;\r\n }\r\n\r\n if (setInactive) {\r\n setAllStepsGreaterInactive(stepNumberClicked);\r\n }\r\n };\r\n\r\n const handleStepClick = (stepNumberClicked: number) => {\r\n setActiveStep(stepNumberClicked);\r\n setStepClicked(true);\r\n handlePossibleChangeOfNextSteps(stepNumberClicked);\r\n };\r\n\r\n const handleLogout = () => {\r\n if (!props.useLoginContext) {\r\n handleLogoutCheckIn();\r\n }\r\n\r\n if (isCheckInWorkplace()) {\r\n navigate(Paths.SPLASHSCREEN_CHECKIN + '?wpName=' + checkinstate.wpName);\r\n } else {\r\n // navigate(Paths.SPLASHSCREEN_LOGGEDOUT);\r\n navigate(Paths.HOME);\r\n // window.location.reload();\r\n }\r\n };\r\n\r\n const showAvatarIcon = () => {\r\n if (isRegisteredUser()) {\r\n return true;\r\n }\r\n return false;\r\n };\r\n\r\n const showLoginIcon = () => {\r\n if (isRegisteredUser()) {\r\n return false;\r\n } else if (isLoggedIn) {\r\n return false;\r\n } else if (apstate.allowAccountInAnmeldeworkflow) {\r\n return apstate.allowAccountInAnmeldeworkflow;\r\n }\r\n\r\n return false;\r\n };\r\n\r\n const handleProfileClick = () => {\r\n if (isRegisteredUser()) {\r\n const reloadData: IReloadPageData = {\r\n reload: true,\r\n withJourneyReload: false,\r\n nextActiveStep: 0,\r\n newStepValues: [\r\n {\r\n id: ID_MYDATA,\r\n clickable: true,\r\n active: true,\r\n completed: false,\r\n draft: false,\r\n },\r\n ],\r\n };\r\n setReloadPageData(reloadData);\r\n } else {\r\n setActiveContent();\r\n }\r\n };\r\n\r\n const showAccountInAnmeldeworkflow = () => {\r\n if (apstate.allowAccountInAnmeldeworkflow) {\r\n return !isLoggedIn;\r\n }\r\n return false;\r\n };\r\n\r\n const handleLoginIconClick = () => {\r\n setLoginModalShow({\r\n show: true,\r\n });\r\n };\r\n\r\n const handleOnCardReadClick = () => {\r\n setCardReadClickedInPersData(true);\r\n };\r\n\r\n const handleFinalCheckInClick = () => {\r\n if (props.useLoginContext) {\r\n return;\r\n }\r\n handleLogout();\r\n };\r\n\r\n const handleClosePDFModal = () => {\r\n setPdfModalShow({\r\n show: false,\r\n modalTitle: '',\r\n pdfData: '',\r\n isSignable: false,\r\n isSigned: false,\r\n });\r\n 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 handleCloseLoginModal()}\r\n onLoginClick={handleLogin}\r\n />\r\n onTelephoneCallAccept()}\r\n onCallOff={() => onTelephoneCallOff()}\r\n onCallHide={() => onTelephoneHide()}\r\n />\r\n \r\n \r\n );\r\n};\r\n\r\nexport default CheckInWL;\r\n","import { useCallback } from 'react';\r\n\r\nexport const useMessages = () => {\r\n const allowMessages = useCallback(() => {\r\n window.app.allowVideochatMessages = true;\r\n }, []);\r\n\r\n const forbidMessages = useCallback(() => {\r\n window.app.allowVideochatMessages = false;\r\n }, []);\r\n\r\n const videochatMessagesAllowed = useCallback(() => {\r\n return window.app.allowVideochatMessages;\r\n }, []);\r\n\r\n return {\r\n allowMessages,\r\n forbidMessages,\r\n videochatMessagesAllowed,\r\n };\r\n};\r\n","import { useCallback, useContext } from 'react';\r\nimport { IAuthData } from '../container/CheckIn/CheckInWL';\r\nimport LoginContext from '../context/loginContext';\r\nimport TerminierungContext from '../context/terminierungContext';\r\nimport { getFullOTPAuthorization } from '../utils/pcpUtils';\r\n\r\nexport const useAuth = () => {\r\n const { state, dispatch } = useContext(LoginContext);\r\n const { tmdispatch } = useContext(TerminierungContext);\r\n\r\n const setCheckInAuth = useCallback(\r\n (authData: IAuthData) => {\r\n const auth = getFullOTPAuthorization('PCP', authData.otp, authData.userId, authData.t0);\r\n dispatch({\r\n type: 'SETCHECKINAUTH',\r\n userId: authData.userId,\r\n activeUserId: authData.userId,\r\n sessionId: auth,\r\n });\r\n tmdispatch({\r\n type: 'SETWITHCHECKIN',\r\n withCheckIn: true,\r\n });\r\n },\r\n [dispatch],\r\n );\r\n\r\n const hasAnmeldContexts = () => {\r\n if (state.anmeldeContexts && state.anmeldeContexts.length > 0) {\r\n return true;\r\n }\r\n return false;\r\n };\r\n\r\n return {\r\n setCheckInAuth,\r\n hasAnmeldContexts,\r\n };\r\n};\r\n","import Card from 'react-bootstrap/Card';\r\nimport Col from 'react-bootstrap/Col';\r\nimport Nav from 'react-bootstrap/Nav';\r\nimport { IconBaseProps } from 'react-icons/lib';\r\nimport { Link, useNavigate } from 'react-router-dom';\r\nimport useScreenResolution from '../../hooks/useScreenResolution';\r\nimport { isMobile, isTablet } from '../../utils/screenResolution';\r\nimport { StyledMainCard } from '../Cards/StyledCard';\r\n\r\ninterface ICardContent {\r\n type: string;\r\n route: string;\r\n title: string;\r\n text?: string;\r\n icon?: IconBaseProps;\r\n}\r\n\r\nfunction getCardWidth(screenWidth: number) {\r\n if (isTablet(screenWidth)) {\r\n return '380px';\r\n } else if (isMobile(screenWidth)) {\r\n return '300px';\r\n } else {\r\n return '380px';\r\n }\r\n}\r\n\r\nconst StyledCardContent = (props: ICardContent) => {\r\n const navigate = useNavigate();\r\n const screenSize = useScreenResolution();\r\n const cardWidth = getCardWidth(screenSize.width);\r\n\r\n if (props.type === 'link' && props.icon) {\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n {props.title}\r\n {props.icon}\r\n \r\n \r\n \r\n \r\n \r\n );\r\n }\r\n if (props.type === 'link' && props.text) {\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n {props.title}\r\n {props.text}\r\n \r\n \r\n \r\n \r\n \r\n );\r\n }\r\n if (props.type === 'clickOpen') {\r\n const url: string = props.route;\r\n return (\r\n \r\n window.open(url, '_blank')}>\r\n \r\n \r\n \r\n {props.title}\r\n {props.icon}\r\n \r\n \r\n \r\n \r\n \r\n );\r\n }\r\n if (props.type === 'clickPush') {\r\n return (\r\n \r\n navigate(props.route)}>\r\n \r\n \r\n \r\n {props.title}\r\n {props.icon}\r\n \r\n \r\n \r\n \r\n \r\n );\r\n } else {\r\n return

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

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

    {props.modalDate}

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

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

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

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

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

    Content nicht gefunden

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

    {errmsg}

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

    Der Videochat beginnt automatisch, sobald der Arzt bereit ist.

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

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

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

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

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

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

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

    Beim letzten Anmeldungsversuch wurde die Einwilligungserklärung abgelehnt.

    \r\n

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

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

    {structuredAppointments[1][category].key}

    \r\n ) : (\r\n

    {structuredAppointments[1][category].key}

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

    {structuredAppointments[0][category].key}

    \r\n ) : (\r\n

    {structuredAppointments[0][category].key}

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

    Termincode: {enrollCode}

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

    Fehler bei der Terminbuchung. Bitte versuchen Sie es erneut.

    \r\n \r\n );\r\n }\r\n };\r\n\r\n const getStep = (label: string, stepscompleted: string) => {\r\n let completed = false;\r\n\r\n let terminbuchen = false;\r\n if (stepscompleted === 'all') {\r\n /* all steps done*/\r\n completed = true;\r\n }\r\n if (stepscompleted === STEP_TERMIN_BUCHEN) {\r\n /* inkl. Termin 2 completed*/\r\n terminbuchen = true;\r\n }\r\n\r\n if (label === STEP_KATEGORIE_WAEHLEN) {\r\n completed = true;\r\n } else if (label === 'Termin 1') {\r\n if (terminbuchen) {\r\n completed = true;\r\n } else if (appointmentBooked_1) {\r\n completed = true;\r\n }\r\n } else if (label === 'Termin 2') {\r\n if (terminbuchen) {\r\n completed = true;\r\n } else if (appointmentBooked_2) {\r\n completed = true;\r\n }\r\n }\r\n return (\r\n \r\n {label}\r\n \r\n );\r\n };\r\n\r\n useEffect(() => {\r\n changeStepsIfMultiAppointments();\r\n }, []);\r\n\r\n useEffect(() => {\r\n if (appointmentBooked_1) {\r\n setActiveStep(2);\r\n } else if (appointmentBooked_2) {\r\n setActiveStep(1);\r\n } else {\r\n setActiveStep(1);\r\n }\r\n }, [tmstate.renewAppointment]);\r\n\r\n useEffect(() => {\r\n if (isTimeslotDateSet(getSelectedTimeslot(1)) && isTimeslotDateSet(getSelectedTimeslot(2))) {\r\n setNextButtonEnabled(true);\r\n } else if (steps[activeStep] === STEP_TERMIN_BUCHEN) {\r\n setNextButtonEnabled(true);\r\n } else if (steps[activeStep] === STEP_TERMIN_WAEHLEN) {\r\n setNextButtonEnabled(true);\r\n }\r\n return () => {\r\n setNextButtonEnabled(false);\r\n };\r\n }, [tmstate.selectedTimeslots && tmstate.selectedTimeslots.length]);\r\n\r\n // useEffect(() => {\r\n // if (isTimeslotDateSet(tmstate.selectedTimeslot) || isTimeslotDateSet(tmstate.selectedTimeslot_2)) {\r\n // setNextButtonEnabled(true);\r\n // } else if (steps[activeStep] === STEP_TERMIN_BUCHEN) {\r\n // setNextButtonEnabled(true);\r\n // }\r\n // return () => {\r\n // setNextButtonEnabled(false);\r\n // };\r\n // }, [tmstate.selectedCategory.name, tmstate.selectedTimeslot, tmstate.selectedTimeslot_2]);\r\n\r\n let stepContent;\r\n\r\n if (activeStep === steps.length) {\r\n stepContent = (\r\n \r\n \r\n
    \r\n \r\n \r\n \r\n Zurück zur Terminierung\r\n \r\n \r\n
    \r\n );\r\n } else {\r\n stepContent = (\r\n \r\n {getStepContent(steps, activeStep)}\r\n \r\n \r\n handleCancel()}>\r\n Abbrechen\r\n \r\n \r\n \r\n ) => handleBack(e)}\r\n >\r\n Zurück\r\n \r\n \r\n \r\n ) => handleNext(e)}\r\n >\r\n {steps[activeStep] === STEP_TERMIN_BUCHEN ? 'Jetzt buchen' : 'Weiter'}\r\n \r\n \r\n \r\n \r\n );\r\n }\r\n\r\n /* recreate steps when finished */\r\n let stepscompleted = '';\r\n if (steps[activeStep] === STEP_TERMIN_BUCHEN) {\r\n stepscompleted = STEP_TERMIN_BUCHEN;\r\n } else if (activeStep === steps.length) {\r\n stepscompleted = 'all';\r\n }\r\n return (\r\n
    \r\n \r\n {steps.map((label) => getStep(label, stepscompleted))}\r\n \r\n
    {stepContent}
    \r\n setBlockingModalShow({ show: false })}\r\n />\r\n
    \r\n );\r\n}\r\n\r\nexport default StepperTerminierungAlternateDate;\r\n","import StepperTerminierungAlternateDate from '../../components/Stepper/StepperTerminierungAlternateDate';\r\nimport Mainscreen from '../Mainscreen/Mainscreen';\r\nimport { ITermineContent } from '../Termine/Termine';\r\n\r\nexport const StepperTerminierungAlternateDateContent = (props: ITermineContent) => {\r\n return (\r\n
    \r\n \r\n
    \r\n );\r\n};\r\n\r\nconst TerminierungAlternateDate = () => {\r\n return (\r\n \r\n \r\n \r\n );\r\n};\r\n\r\nexport default TerminierungAlternateDate;\r\n","import { appointmentStatus } from '../globals/global';\r\n\r\nexport const getGenderEN = (gender: string) => {\r\n switch (gender) {\r\n case 'Männlich':\r\n return 'male';\r\n case 'Weiblich':\r\n return 'female';\r\n case 'Divers':\r\n return 'divers';\r\n case 'Unbekannt':\r\n return 'unknown';\r\n case '':\r\n return 'unknown';\r\n default:\r\n return gender;\r\n }\r\n};\r\n\r\nexport const getGenderDE = (gender: string) => {\r\n switch (gender) {\r\n case 'male':\r\n return 'Männlich';\r\n case 'female':\r\n return 'Weiblich';\r\n case 'divers':\r\n return 'Divers';\r\n case 'unknown':\r\n return 'Unbekannt';\r\n case '':\r\n return '';\r\n default:\r\n return gender;\r\n }\r\n};\r\n\r\nexport const getCountryEN = (country: string) => {\r\n switch (country) {\r\n case 'Deutschland':\r\n return 'Germany';\r\n case 'Österreich':\r\n return 'Austria';\r\n case 'Schweiz':\r\n return 'Switzerland';\r\n default:\r\n return '';\r\n }\r\n};\r\n\r\nexport const getCountryDE = (country: string) => {\r\n switch (country) {\r\n case 'Germany':\r\n return 'Deutschland';\r\n case 'Austria':\r\n return 'Österreich';\r\n case 'Switzerland':\r\n return 'Schweiz';\r\n default:\r\n return '';\r\n }\r\n};\r\n\r\nexport const getCountryLongName = (countryShortName: string) => {\r\n switch (countryShortName) {\r\n case 'D':\r\n return 'Deutschland';\r\n case 'DE':\r\n return 'Deutschland';\r\n case 'A':\r\n return 'Österreich';\r\n case 'AT':\r\n return 'Österreich';\r\n case 'CH':\r\n return 'Schweiz';\r\n default:\r\n return '';\r\n }\r\n};\r\n\r\nexport const translateStatus = (status: string) => {\r\n switch (status) {\r\n case 'cancelled':\r\n return 'abgesagt';\r\n case 'pending':\r\n return 'geplant o. Uhrzeit';\r\n case 'booked':\r\n return 'geplant';\r\n case 'arrived':\r\n return 'aktuell';\r\n case 'fulfilled':\r\n return 'abgeschlossen';\r\n case appointmentStatus.enteredInError:\r\n return 'unvollständig';\r\n default:\r\n break;\r\n }\r\n};\r\n\r\n/**\r\n * format date from yyyy-MM-dd or yyyy.MM.dd to dd.MM.yyyy\r\n *\r\n * @param date\r\n * the date as string\r\n * @returns\r\n * the date with new format\r\n */\r\nexport const getGermanDateFormatFromString = (date: string) => {\r\n const day = date.slice(8);\r\n const month = date.slice(5, -3);\r\n const year = date.slice(0, -6);\r\n return day + '.' + month + '.' + year;\r\n};\r\n\r\nexport const pattern =\r\n /^(([^<>()\\[\\]\\\\.,;:\\s@\"]+(\\.[^<>()\\[\\]\\\\.,;:\\s@\"]+)*)|(\".+\"))@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\])|(([a-zA-Z\\-0-9]+\\.)+[a-zA-Z0-9]{2,}))$/;\r\n\r\nexport const isEmailValid = (email: string) => {\r\n return pattern.test(String(email).toLowerCase());\r\n};\r\n\r\nexport const getBasicAuthBase64Encoded = (basicauth: string) => {\r\n const base64encodedStr = btoa(basicauth);\r\n const basicAuthBase64 = 'Basic ' + base64encodedStr;\r\n return basicAuthBase64;\r\n};\r\n\r\nexport const getDataFromAppProperties = (propRes: any) => {\r\n const appProps = {\r\n Appointment: {\r\n skipBehandlersuche:\r\n propRes.Appointment?.skipBehandlersuche !== undefined ? propRes.Appointment?.skipBehandlersuche : false,\r\n },\r\n AppointmentSummary: {\r\n behandler:\r\n propRes.AppointmentSummary?.behandler !== undefined ? propRes.AppointmentSummary?.behandler : true,\r\n fach: propRes.AppointmentSummary?.fach !== undefined ? propRes.AppointmentSummary?.fach : true,\r\n pflege: propRes.AppointmentSummary?.pflege !== undefined ? propRes.AppointmentSummary?.pflege : true,\r\n raum: propRes.AppointmentSummary?.raum !== undefined ? propRes.AppointmentSummary?.raum : true,\r\n standort: propRes.AppointmentSummary?.standort !== undefined ? propRes.AppointmentSummary?.standort : true,\r\n },\r\n RegistrationMandFields: {\r\n birthDate:\r\n propRes.RegistrationMandFields?.birthDate !== undefined\r\n ? propRes.RegistrationMandFields.birthDate\r\n : null,\r\n city: propRes.RegistrationMandFields?.city !== undefined ? propRes.RegistrationMandFields.city : null,\r\n country:\r\n propRes.RegistrationMandFields?.country !== undefined ? propRes.RegistrationMandFields.country : null,\r\n email: propRes.RegistrationMandFields?.email !== undefined ? propRes.RegistrationMandFields.email : null,\r\n firstName:\r\n propRes.RegistrationMandFields?.firstName !== undefined\r\n ? propRes.RegistrationMandFields.firstName\r\n : null,\r\n gender: propRes.RegistrationMandFields?.gender !== undefined ? propRes.RegistrationMandFields.gender : null,\r\n lastName:\r\n propRes.RegistrationMandFields?.lastName !== undefined ? propRes.RegistrationMandFields.lastName : null,\r\n phone: propRes.RegistrationMandFields?.phone !== undefined ? propRes.RegistrationMandFields.phone : null,\r\n street: propRes.RegistrationMandFields?.street !== undefined ? propRes.RegistrationMandFields.street : null,\r\n zip: propRes.RegistrationMandFields?.zip !== undefined ? propRes.RegistrationMandFields.zip : null,\r\n insuranceNr:\r\n propRes.RegistrationMandFields?.insuranceNr !== undefined\r\n ? propRes.RegistrationMandFields.insuranceNr\r\n : null,\r\n mobilePhone:\r\n propRes.RegistrationMandFields?.mobilePhone !== undefined\r\n ? propRes.RegistrationMandFields.mobilePhone\r\n : null,\r\n academicTitle:\r\n propRes.RegistrationMandFields?.academicTitle !== undefined\r\n ? propRes.RegistrationMandFields.academicTitle\r\n : null,\r\n insuranceName:\r\n propRes.RegistrationMandFields?.insuranceName !== undefined\r\n ? propRes.RegistrationMandFields.insuranceName\r\n : null,\r\n language:\r\n propRes.RegistrationMandFields?.language !== undefined ? propRes.RegistrationMandFields.language : null,\r\n privacyTerms:\r\n propRes.RegistrationMandFields?.privacyTerms !== undefined\r\n ? propRes.RegistrationMandFields.privacyTerms\r\n : null,\r\n },\r\n RegistrationVisibleFields: {\r\n birthDate:\r\n propRes.RegistrationVisibleFields?.birthDate !== undefined\r\n ? propRes.RegistrationVisibleFields.birthDate\r\n : null,\r\n city: propRes.RegistrationVisibleFields?.city !== undefined ? propRes.RegistrationVisibleFields.city : null,\r\n country:\r\n propRes.RegistrationVisibleFields?.country !== undefined\r\n ? propRes.RegistrationVisibleFields.country\r\n : null,\r\n email:\r\n propRes.RegistrationVisibleFields?.email !== undefined ? propRes.RegistrationVisibleFields.email : null,\r\n firstName:\r\n propRes.RegistrationVisibleFields?.firstName !== undefined\r\n ? propRes.RegistrationVisibleFields.firstName\r\n : null,\r\n gender:\r\n propRes.RegistrationVisibleFields?.gender !== undefined\r\n ? propRes.RegistrationVisibleFields.gender\r\n : null,\r\n lastName:\r\n propRes.RegistrationVisibleFields?.lastName !== undefined\r\n ? propRes.RegistrationVisibleFields.lastName\r\n : null,\r\n phone:\r\n propRes.RegistrationVisibleFields?.phone !== undefined ? propRes.RegistrationVisibleFields.phone : null,\r\n street:\r\n propRes.RegistrationVisibleFields?.street !== undefined\r\n ? propRes.RegistrationVisibleFields.street\r\n : null,\r\n zip: propRes.RegistrationVisibleFields?.zip !== undefined ? propRes.RegistrationVisibleFields.zip : null,\r\n insuranceNr:\r\n propRes.RegistrationVisibleFields?.insuranceNr !== undefined\r\n ? propRes.RegistrationVisibleFields.insuranceNr\r\n : null,\r\n mobilePhone:\r\n propRes.RegistrationVisibleFields?.mobilePhone !== undefined\r\n ? propRes.RegistrationVisibleFields.mobilePhone\r\n : null,\r\n academicTitle:\r\n propRes.RegistrationVisibleFields?.academicTitle !== undefined\r\n ? propRes.RegistrationVisibleFields.academicTitle\r\n : null,\r\n insuranceName:\r\n propRes.RegistrationVisibleFields?.insuranceName !== undefined\r\n ? propRes.RegistrationVisibleFields.insuranceName\r\n : null,\r\n language:\r\n propRes.RegistrationVisibleFields?.language !== undefined\r\n ? propRes.RegistrationVisibleFields.language\r\n : null,\r\n privacyTerms:\r\n propRes.RegistrationVisibleFields?.privacyTerms !== undefined\r\n ? propRes.RegistrationVisibleFields.privacyTerms\r\n : null,\r\n },\r\n RegistrationReadOnlyFields: {\r\n birthDate:\r\n propRes.RegistrationReadOnlyFields?.birthDate !== undefined\r\n ? propRes.RegistrationReadOnlyFields.birthDate\r\n : null,\r\n city:\r\n propRes.RegistrationReadOnlyFields?.city !== undefined ? propRes.RegistrationReadOnlyFields.city : null,\r\n country:\r\n propRes.RegistrationReadOnlyFields?.country !== undefined\r\n ? propRes.RegistrationReadOnlyFields.country\r\n : null,\r\n email:\r\n propRes.RegistrationReadOnlyFields?.email !== undefined\r\n ? propRes.RegistrationReadOnlyFields.email\r\n : null,\r\n firstName:\r\n propRes.RegistrationReadOnlyFields?.firstName !== undefined\r\n ? propRes.RegistrationReadOnlyFields.firstName\r\n : null,\r\n gender:\r\n propRes.RegistrationReadOnlyFields?.gender !== undefined\r\n ? propRes.RegistrationReadOnlyFields.gender\r\n : null,\r\n lastName:\r\n propRes.RegistrationReadOnlyFields?.lastName !== undefined\r\n ? propRes.RegistrationReadOnlyFields.lastName\r\n : null,\r\n phone:\r\n propRes.RegistrationReadOnlyFields?.phone !== undefined\r\n ? propRes.RegistrationReadOnlyFields.phone\r\n : null,\r\n street:\r\n propRes.RegistrationReadOnlyFields?.street !== undefined\r\n ? propRes.RegistrationReadOnlyFields.street\r\n : null,\r\n zip: propRes.RegistrationReadOnlyFields?.zip !== undefined ? propRes.RegistrationReadOnlyFields.zip : null,\r\n insuranceNr:\r\n propRes.RegistrationReadOnlyFields?.insuranceNr !== undefined\r\n ? propRes.RegistrationReadOnlyFields.insuranceNr\r\n : null,\r\n mobilePhone:\r\n propRes.RegistrationReadOnlyFields?.mobilePhone !== undefined\r\n ? propRes.RegistrationReadOnlyFields.mobilePhone\r\n : null,\r\n academicTitle:\r\n propRes.RegistrationReadOnlyFields?.academicTitle !== undefined\r\n ? propRes.RegistrationReadOnlyFields.academicTitle\r\n : null,\r\n insuranceName:\r\n propRes.RegistrationReadOnlyFields?.insuranceName !== undefined\r\n ? propRes.RegistrationReadOnlyFields.insuranceName\r\n : null,\r\n language:\r\n propRes.RegistrationReadOnlyFields?.language !== undefined\r\n ? propRes.RegistrationReadOnlyFields.language\r\n : null,\r\n },\r\n allowAccountAfterAppointment: propRes.allowAccountAfterAppointment,\r\n allowAccountCreateDirect: propRes.allowAccountCreateDirect,\r\n allowAppointments: propRes.allowAppointments,\r\n allowAppointmentsWithoutLogin: propRes.allowAppointmentsWithoutLogin,\r\n allowDirectAppointments: propRes.allowDirectAppointments,\r\n allowDirectAppointmentsWithoutLogin: propRes.allowDirectAppointmentsWithoutLogin,\r\n allowLogin: propRes.allowLogin,\r\n allowVideo: propRes.allowVideo,\r\n allowVideoWithoutLogin: propRes.allowVideoWithoutLogin,\r\n allowAccountInAnmeldeworkflow: propRes.allowAccountInAnmeldeworkflow,\r\n brandingBytes: propRes.brandingBytes,\r\n brandigType: propRes.brandigType,\r\n extraLinks: propRes.extraLinks,\r\n customTexts: propRes.customTexts,\r\n showMobileQR: propRes.showMobileQR,\r\n jitsiDomain: propRes.jitsiDomain,\r\n jitsiOptions: propRes.jitsiOptions,\r\n impressum: propRes.impressum,\r\n anmeldeContexts: propRes.anmeldeContexts,\r\n countDaysToVisualize: propRes.countDaysToVisualize,\r\n extendedPhysicians: propRes.extendedPhysicians,\r\n allowChat: propRes.allowChat,\r\n googleAnalyticsID: propRes.googleAnalyticsID,\r\n tileTexts: propRes.tileTexts,\r\n };\r\n\r\n return appProps;\r\n};\r\n\r\nexport const setDataFromAppProperties = (propRes: any, apdispatch: any) => {\r\n const appProps = getDataFromAppProperties(propRes);\r\n\r\n apdispatch({\r\n type: 'SETAPPPROPS',\r\n ...appProps,\r\n });\r\n};\r\n\r\nexport const getFullOTPAuthorization = (prefix: string, otp: string, userId: string | number, t0: string) => {\r\n let _userId = userId;\r\n if (typeof userId === 'number') {\r\n _userId = userId.toString();\r\n }\r\n\r\n let _prefix = '';\r\n if (prefix.length > 0) {\r\n _prefix = prefix + ' ';\r\n }\r\n\r\n const otpAuth = _prefix + otp + '&userId=' + _userId + '&t0=' + t0;\r\n return otpAuth;\r\n};\r\n\r\nexport const isDEVMode = () => {\r\n if (process.env.NODE_ENV === 'development' || window.location.hostname === 'localhost') {\r\n return true;\r\n }\r\n};\r\n","import { 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":""}