{"version":3,"sources":["models/getCancerScreeningsModel.ts","components/Button.tsx","context/LangContext.tsx","context/UserContext.tsx","constants/enums.ts","constants/localStorageKeys.ts","utils.ts","hooks/useNotifier.tsx","components/Home.tsx","models/Models.ts","services/httpService.ts","components/Navbar.tsx","utils/SnackbarUtilsConfigurator.js","components/TitleArea.tsx","components/LoadingIndicator.tsx","components/Section.tsx","components/CancerScreening/IdleTimerContainer.tsx","components/Layout.tsx","pages/HomePage.tsx","api.ts","services/httpService.v2.ts","components/Login.tsx","pages/LoginPage.tsx","models/cancerScreeningResultModel.ts","models/getCancerScreeningResultModel.ts","models/createAnalysisRequest.ts","models/getCancerScreeningInfoModel.ts","models/getCancerScreeningsResultModel.ts","services/cancerScreeningService.ts","components/CancerScreening/NewScreeningRequestDetails.tsx","constants/index.ts","theme.ts","components/CancerScreening/CancerScreeningInfo.tsx","helpers/CefSharpShell.ts","components/ConfirmDialog.tsx","components/CancerScreening/ScreeningRequestDetail.tsx","components/CancerScreening/ScreeningRequestsOverviewList.tsx","components/CancerScreening/SentScreeningRequestDetails.tsx","pages/CancerScreening/NewScreeningRequestsDetailPage.tsx","components/DatePicker.tsx","components/CancerScreening/NewScreeningRequestsFilter.tsx","components/NoResults.tsx","components/CancerScreening/NewScreeningRequestsList.tsx","pages/CancerScreening/NewScreeningRequestsPage.tsx","pages/NotFoundPage.tsx","components/CancerScreening/TestResults.tsx","components/CancerScreening/ScreeningRequestOverviewDetails.tsx","pages/CancerScreening/ScreeningRequestsOverviewDetailPage.tsx","pages/CancerScreening/ScreeningRequestsOverviewPage.tsx","pages/CancerScreening/SentScreeningRequestsDetailPage.tsx","components/CancerScreening/SentScreeningRequestsFilter.tsx","components/CancerScreening/SentScreeningRequestsList.tsx","pages/CancerScreening/SentScreeningRequestsPage.tsx","components/Autocomplete.tsx","components/AccessGroupTabPanel.tsx","components/UserForm.tsx","components/UserList.tsx","pages/UserControlPage.tsx","Routes.tsx","context/PosContext.tsx","App.tsx","serviceWorker.ts","index.tsx"],"names":["ScreeningStatus","useStyles","makeStyles","theme","padding","spacing","success","backgroundColor","palette","main","dark","error","errorOutlined","color","borderColor","additionalProps","Button","props","classes","allProps","muiProps","Object","keys","filter","key","includes","reduce","obj","variant","className","cx","LangContext","React","createContext","UserContext","borderControlStatus","REGISTERED_IN_QUARANTINE","NEGATIVE_TRANSMISSION_CERTIFICATE","REGISTERED_FOR_SAMPLING","CHILD_UNVERIFIED","EXEMPT_FROM_SAMPLING","CHILD_VERIFIED","WAITING_FOR_SAMPLING","SAMPLING_COMPLETED","QUARANTINE_APPROVED","EXEMPTION_CONFIRMED","REGISTERED_TO_TRANSIT","REGISTERED_WITH_CERTIFICATE","TRANSIT_CONFIRMED","REGISTERED_FOR_5DAYS_SAMPLING","REGISTERED_FOR_5DAYS_SAMPLING_APPROVED","VERIFIED_VACCINATION_CERTIFICATE","ANTIBODY_ASSAY_CERTIFICATE","VERIFIED_OTHER_CERTIFICATES_DOCUMENTS","PCR_CERTIFICATE_SAMPLING","CHECKED_OUT","CERTIFICATE_ACCEPTED_BY_AIRLINE","REGISTERED_WITH_CERTIFICATE_ELECTRONIC","PRE_BORDER_CERTIFICATE_REVIEW_PENDING","PRE_BORDER_CERTIFICATE_REVIEW_APPROVED","PRE_BORDER_CERTIFICATE_REVIEW_REJECTED","REGISTERED_FOR_SAMPLING_PAYMENT_COMPLETED","REGISTERED_FOR_SAMPLING_PAYMENT_NOT_REQUIRED","REGISTERED_FOR_SAMPLING_PAYMENT_NEEDED","REGISTERED_FOR_SYMPTOM_SAMPLING","accessControl","accessListType","screeningStatuses","USER","hasUserAccess","id","user","undefined","accessList","find","item","formatSsn","ssn","replace","getAgeInYearsFromSsnAtDate","date","lang","birthDate","century","slice","getCenturyFromSsn","moment","getDateOfBirthFromSsn","ageInYears","diff","translations","yearAgeText","yearsAgeText","notComputable","clearSavedNewScreeningRequest","localStorage","removeItem","clearSavedSentScreeningRequest","getScreeningStatusText","screeningStatus","Created","new","RequestsSent","requestsSent","SomeResultsArrived","someResultsArrived","AllResultsArrived","allResultsArrived","Completed","confirmed","Canceled","deleted","SentToSkrin","sentToSkrin","unknown","useNotifier","enqueueSnackbar","useSnackbar","notifySuccess","message","notifyError","autoHideDuration","notifyWarning","createStyles","root","width","height","dimensions","navbarHeight","display","justifyContent","alignItems","paper","flex","margin","textAlign","maxWidth","boxWidth","typographyTitle","Home","samplingMenu","history","useHistory","useContext","window","logPrinterError","Paper","elevation","Grid","container","xs","sm","Typography","actions","Fragment","fullWidth","onClick","push","newScreeningRequests","sentScreeningRequests","screeningRequestsOverview","User","mobile","name","location","hasError","sessionId","encodedSessionId","loginType","isRapidTestLocation","allowSampleTypeConversion","this","map","i","AccessItem","btoa","accessItem","description","CreateUser","form","userAccesses","userVaccinationRegionAccesses","userResidenceLocationAccesses","samplingLocationsAccesses","access","borderControlAccess","parseInt","value","concat","vaccinationAccess","vaccinationRegions","r","residenceLocations","samplingLocations","UserItem","vaccinationAccesses","forEach","a","accessGroup","residenceLocationListModel","samplingLocationAccesses","logout","JSON","parse","getItem","localStorageKeys","fetch","process","method","headers","Authorization","response","data","isOk","ok","statusCode","status","body","stringify","userList","Array","json","users","useSnackbarRef","toolbar","maxContentWidth","title","cursor","hideTitle","breakpoints","down","language","grey","languageMargin","marginRight","activeLang","fontWeight","inactiveLang","opacity","userInfo","flexDirection","Navbar","loggedIn","useTheme","xsDown","useMediaQuery","userContext","setUserContext","setLang","AppBar","position","Toolbar","samplingTitle","vaccinationTitle","style","splitName","split","length","getUserName","fontStyle","locationLabel","getUserLocation","newLang","setItem","httpService","whiteSpace","logOut","marginBottom","fontSize","buttonSpacing","marginLeft","subtitles","paddingBottom","TitleArea","backButton","backButtonClick","otherButton","direction","justify","startIcon","icon","label","backToMenu","subtitle","index","LoadingIndicator","CircularProgress","size","Section","children","loading","renderContent","IdleTimerContainer","idleTimerRef","useRef","ref","timeout","onIdle","console","log","minHeight","overflowX","background","default","content","defaultSpacing","marginTop","loadingContainer","Layout","contentClassName","useDefaultSpacing","isLoading","HomePage","InnerSnackbarUtilsConfigurator","setUseSnackbarRef","useSnackbarRefProp","SnackbarUtilsConfigurator","snackActions","msg","toast","warning","info","apiRequest","path","payload","autoErrorHandling","rawLangValue","version","versionFile","reqConfig","Headers","Accept","Pragma","res","createBrowserHistory","pathname","state","from","go","status401","noAccessGeneric","errorMessage","errorOccurred","versionUpdateNeeded","setTimeout","reload","err","requestToBackendFailed","get","post","put","delete","getBlob","responseType","blob","loginRequest","phoneNumber","tabs","typographyError","loginSchema","Yup","shape","matches","required","Login","useState","showError","setShowError","setLoading","authenticating","enableReinitialize","initialValues","onSubmit","values","then","extendedUser","noCancerAccess","catch","e","validationSchema","renderLoginForm","formik","errors","handleChange","handleBlur","handleSubmit","isSubmitting","submitCount","loginWithCertificates","TextField","autoFocus","autoComplete","inputProps","type","pattern","maxLength","onChange","target","validity","valid","onBlur","disabled","logIn","loginFailed","paddingTop","LoginPage","CancerScreeningResultModel","personSsn","personName","specimenId","requestorSsn","requestorName","requestorNumber","createDateTime","examinationDateTime","locationNumber","companyOperatorName","companyOperatorLocation","examinationReason","examinationReasonDescription","sentDirectlyToSkrin","examinationNotes","otherActiveRequests","hpvTestCreateDate","pathologyTestCreateDate","hpvTestConclusionDate","pathologyTestConclusionDate","positiveHPVResultCode","GetCancerScreeningResultModel","cancerScreening","GetCancerScreeningResultWithQueryModel","hpvTestResult","pathologyTestResult","cancerScreeningWithResults","HpvTestResult","hpvTestRequestedByName","PathologyTestResult","pathologyTestRequestedByName","createdDate","conclusionNote","conclusionDate","specimenArrivalDate","codes","HpvTestResultCode","details","PathologyTestResultDetails","code","CreateCancerScreeningAnalysisResultModel","GetCancerScreeningInfoModel","patientCancerScreeningInfo","PatientCancerScreeningInfo","age","address","visits","PatientVisits","PatientStatus","komuDagur","komuDagurBrj","bodunarTidni","bodunarTidniBrj","eftirlit","eftirlitBrj","resultHtml","cervix","breast","translationKey","GetCancerScreeningsResultModel","cancerScreenings","getCancerScreenings","getCancerScreeningsModel","api","getCancerScreening","getCancerScreeningWithQuery","cancelCancerScreening","userSsn","completeCancerScreening","createAnalysisRequest","userName","originalUserSsn","analysisType","screeningLabStatus","resendAnalysisRequest","removeCancerScreeningTests","getCancerScreeningInfo","payLoad","changeCancerScreeningStatus","newStatus","AnalysisTypeEnum","TABLE_ROWS_OPTIONS","toString","defaultPalette","primary","secondary","text","defaultTheme","createMuiTheme","customPalette","typography","fontFamily","join","h1","h2","h3","h4","h5","h6","testContainer","CancerScreeningInfo","patientInfo","TableContainer","Table","aria-label","TableHead","TableRow","TableCell","TableBody","day","result","hover","format","noDataFound","CefSharpShell","CefSharp","isShellMode","REACT_APP_POS_CONNECTED","PostMessage","Callback","statusText","successCallback","failCallback","Type","reply","amount","Amount","barcode","LabelBarcode","successCallBack","patient","LabelDocumentName","LabelTemplateParameters","nationalId","samplingDate","institutionId","doctorId","ConfirmDialog","open","confirmText","cancelText","leftButtonText","leftButtonColor","extraButtonText","onConfirm","onCancel","onLeftButtonClick","onExtraButtonClick","disableConfirm","setDisableConfirm","useEffect","Dialog","onClose","close","DialogTitle","transform","DialogContent","dividers","DialogContentText","DialogActions","wrap","confirm","cancel","descriptionTitle","descriptionDetails","ScreeningRequestDetail","screeningRequest","screeningRequestDetails","getVal","SSN","examinationDate","notRegistered","category","registeredBy","registrationDate","companyOperator","render","comment","renderInfoItem","hide","NewScreeningRequestDetails","cancelCancerScreeningInParent","createAnalysisRequestInParent","openDeleteRequestDialog","setOpenDeleteRequestDialog","openCreateTestRequestDialog","setOpenCreateTestRequestDialog","infoLoading","setInfoLoading","setAnalysisType","Alert","severity","renderAlert","createTestRequest","deleteScreeningRequest","back","clearDialogs","create","FormControlLabel","hpvResearch","HPV","control","Radio","checked","cellularResearch","Pathology","both","Both","deleteScreeningRequestText","NewScreeningRequestsDetailPage","match","shellHelper","requestLoading","setRequestLoading","cancerScreeningRequest","setCancerScreeningRequest","cancerScreeningInfo","setCancerScreeningInfo","params","fetchScreeningRequest","cancerScreeningService","fetchScreeningInfo","newScreeningRequest","deleteScreeningRequestConfirmed","printTemplateLabel","createTestAnalysisConfirmed","DatePicker","autoOk","inputVariant","invalidDateMessage","minDateMessage","maxDateMessage","PopoverProps","transformOrigin","vertical","horizontal","anchorOrigin","NewScreeningRequestsFilter","onClear","loadForm","formCleared","smDown","setFieldValue","md","patientSsn","minLength","examinationDateFrom","disableToolbar","maxDate","examinationDateTo","startOf","minDate","endOf","search","clear","renderFilters","NoResults","noResults","tableColumns","translation","sort","b","oldNorseSort","kennitala","localeCompare","isAfter","NewScreeningRequestsList","screeningRequests","currentPage","rowsPerPage","count","setCurrentPage","setRowsPerPage","sortKey","setSortKey","sortDirection","setSortDirection","sortedScreeningRequests","setSortedScreeningRequests","startIndex","localStorageSortDirection","localStorageSortKey","sorted","reverse","columnKey","TableSortLabel","active","onSortClick","clickOnRequest","TablePagination","labelRowsPerPage","numberOfRowsPerPage","rowsPerPageOptions","component","page","onChangePage","_","p","onChangeRowsPerPage","noScreeningRequestsFound","NewScreeningRequestsPage","loadingScreeningRequests","setloadingScreeningRequests","initialLoad","setInitialLoad","setCount","allScreeningRequests","setAllScreeningRequests","setLoadForm","setFormCleared","initialForm","subtract","pageSize","Number","formJson","formValues","dateTimeFrom","Date","toISOString","dateTimeTo","NotFoundPage","pageNotFound","topItems","only","titleDivider","titleSerialNumber","otherDetails","resultsWrapper","lighten","light","TestResults","hpvTestResults","sentToLab","createdBy","sampleReceived","startsWith","dateNotReceived","DateOfConclusion","pathologyTestResults","ScreeningRequestOverviewDetails","reopenScreeningRequestInParent","sendToSkrinInParent","resetScreeningRequestInParent","openSendToSkrinDialog","setOpenSendToSkrinDialog","openResetDialog","setOpenResetDialog","openReopenDialog","setOpenReopenDialog","resetOrWithdrawScreening","sendToSkrin","reopen","send","sendToSkrinDialogContent","reopenScreeningRequest","reopenDialogContent","resetScreeningRequest","resetDialogContent","ScreeningRequestsOverviewDetailPage","screeningRequestOverview","reopenedSuccess","sentToSkrinSuccess","resetScreeningSuccess","screeningRequestStatus","ScreeningRequestsOverviewList","SentScreeningRequestDetails","completeCancerScreeningInParent","resendAnalysisRequestInParent","removeScreeningTestsAndNotifyInParent","openCompleteRequestDialog","setOpenCompleteRequestDialog","openRemoveTestsDialog","setOpenRemoveDialog","openResendTestRequestDialog","setOpenResendTestRequestDialog","openPrintDialog","setOpenPrintDialog","completeResults","resendTestRequestDisabled","resendTestRequest","reprintScreeningNumber","removeScreeningTests","getCreateTestRequestDialogContent","resend","completeScreeningResultsText","print","reprintScreeningNumberTitle","renderDialogs","screeningResultsCompleted","resendTestAnalysisConfirmed","removeScreeningTestsConfirmed","SentScreeningRequestsFilter","HPVResultPending","Checkbox","showPendingHPVResult","pathologyResultPending","showPendingPathologyResult","allResultsReceived","showAllResultsReceived","HPVPositiveAndNoPathologyRequest","showHPVPositiveAndNoPathologyRequest","HPVSent","pathologySent","HPVReceived","pathologyReceived","SentScreeningRequestsList","NewScreeningRequests","cancerScreeningRequests","filterCancerScreeningRequests","filteredOutScreeningRequests","c","Autocomplete","items","inputValue","onInputChange","checkBox","searchText","setSearchText","CheckBoxOutlineBlank","checkedIcon","CheckBox","renderCheckBox","multiple","disableCloseOnSelect","options","val","updateSearch","getOptionLabel","opt","getOptionSelected","renderOption","renderInput","option","selected","AccessGroupTabPanel","buttonGrid","buttonFormContainer","dialogContent","overflow","UserForm","onSubmitForm","editUser","clearEditUser","adminAccessList","vaccinationAccessListAdmin","borderControlAccessListAdmin","showVaccinationRegions","setShowVaccinationRegions","showSamplingLocations","setShowSamplingLocations","requireSamplingAccess","setRequireSamplingAccess","openDialog","tabValue","setTabValue","handleTabChange","event","newValue","schema","min","borderControlUserAccess","vaccinationUserAccess","BorderControlAccessList","VaccinationAcessList","userValues","initializeFormik","Box","borderBottom","Tabs","getTabValue","Tab","accessGroupSampling","accessGroupVaccination","renderForm","dirty","createUser","renderButtons","searchContainer","searchBox","deleteButton","minWidth","editButton","noUsersFound","UserList","deleteSelectedUser","editSelectedUser","searchInput","filteredUsers","setFilteredUsers","deleteUser","setDeleteUser","selectedVaccinationRegion","setSelectedVaccinationRegion","selectedLocation","setSelectedLocation","filteredData","toLowerCase","searchByName","current","focus","align","edit","deleteUserConfirmation","UserControlPage","setUsers","setEditSelectUser","getUsers","useCallback","getAllUsers","TabPanel","other","role","hidden","aria-labelledby","scrollButtons","searchForUser","resetForm","createUserSuccess","userAlreadyExists","userDeleted","updatedUser","invalidUserAccess","editUserSuccess","Routes","sentScreeningRequestsIndex","newScreeningRequestsIndex","exact","to","SentScreeningRequestsPage","SentScreeningRequestsDetailPage","ScreeningRequestsOverviewPage","getSamplingRouter","PosContext","App","isMobile","langContext","setLangContext","posContext","setPosContext","isPOSConfigured","Provider","utils","MomentUtils","maxSnack","Boolean","hostname","ReactDOM","StrictMode","document","getElementById","navigator","serviceWorker","ready","registration","unregister"],"mappings":"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","file":"static/js/main.d900815a.chunk.js","sourcesContent":["/**\n * CancerScreeningAPI\n * No description provided (generated by Swagger Codegen https://github.com/swagger-api/swagger-codegen)\n *\n * OpenAPI spec version: v1\n * \n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\n\nexport enum ScreeningStatus {\n Created = 0,\n RequestsSent = 1,\n SomeResultsArrived = 2,\n AllResultsArrived = 3,\n Completed = 4,\n Canceled = 5,\n SentToSkrin = 10,\n}\nexport interface GetCancerScreeningsModel { \n requestorSsn?: string;\n requestorName?: string;\n personName?: string;\n personSsn?: string;\n dateTimeFrom?: Date;\n dateTimeTo?: Date;\n specimenId?: string;\n screeningStatus?: Array;\n}","import React from 'react';\nimport {\n makeStyles,\n Button as MuiButton,\n ButtonProps,\n} from '@material-ui/core';\nimport cx from 'classnames';\n\ninterface IProps {\n padding?: boolean;\n success?: boolean;\n error?: boolean;\n}\n\nconst useStyles = makeStyles((theme) => ({\n padding: {\n padding: theme.spacing(2, 3),\n },\n success: {\n backgroundColor: theme.palette.success.main,\n '&:hover': {\n backgroundColor: theme.palette.success.dark,\n },\n },\n error: {\n backgroundColor: theme.palette.error.main,\n '&:hover': {\n backgroundColor: theme.palette.error.dark,\n },\n },\n errorOutlined: {\n color: theme.palette.error.main,\n borderColor: theme.palette.error.main,\n '&:hover': {\n borderColor: theme.palette.error.main,\n backgroundColor: 'rgba(255,0,0,0.02)',\n },\n },\n}));\n\nconst additionalProps = ['padding', 'success', 'error'];\n\nconst Button: React.FC = (props) => {\n const classes = useStyles();\n const { padding = true, success, error } = props;\n\n const allProps: { [key: string]: any } = { ...props };\n const muiProps = Object.keys(allProps)\n .filter((key) => !additionalProps.includes(key))\n .reduce((obj: { [key: string]: any }, key) => {\n obj[key] = allProps[key];\n return obj;\n }, {});\n\n return (\n \n );\n};\n\nexport default Button;\n","import React from 'react';\n\nexport type ILanguage = 'is' | 'en';\n\ntype IContextProps = [\n ILanguage,\n React.Dispatch>\n];\n\nexport const LangContext = React.createContext([\n 'is',\n () => null,\n]);\n","import React from 'react';\n\nexport const UserContext = React.createContext(null);\n","export const borderControlStatus = {\n REGISTERED_IN_QUARANTINE: 0,\n NEGATIVE_TRANSMISSION_CERTIFICATE: 2,\n REGISTERED_FOR_SAMPLING: 3,\n CHILD_UNVERIFIED: 4,\n EXEMPT_FROM_SAMPLING: 5,\n CHILD_VERIFIED: 6,\n WAITING_FOR_SAMPLING: 7,\n SAMPLING_COMPLETED: 8,\n QUARANTINE_APPROVED: 9,\n EXEMPTION_CONFIRMED: 10,\n REGISTERED_TO_TRANSIT: 11,\n REGISTERED_WITH_CERTIFICATE: 12,\n TRANSIT_CONFIRMED: 13,\n REGISTERED_FOR_5DAYS_SAMPLING: 15,\n REGISTERED_FOR_5DAYS_SAMPLING_APPROVED: 16,\n VERIFIED_VACCINATION_CERTIFICATE: 17,\n ANTIBODY_ASSAY_CERTIFICATE: 18,\n VERIFIED_OTHER_CERTIFICATES_DOCUMENTS: 19,\n PCR_CERTIFICATE_SAMPLING: 20,\n CHECKED_OUT: 21,\n CERTIFICATE_ACCEPTED_BY_AIRLINE: 23,\n REGISTERED_WITH_CERTIFICATE_ELECTRONIC: 24,\n PRE_BORDER_CERTIFICATE_REVIEW_PENDING: 25,\n PRE_BORDER_CERTIFICATE_REVIEW_APPROVED: 26,\n PRE_BORDER_CERTIFICATE_REVIEW_REJECTED: 27,\n REGISTERED_FOR_SAMPLING_PAYMENT_COMPLETED: 1000,\n REGISTERED_FOR_SAMPLING_PAYMENT_NOT_REQUIRED: 1001,\n REGISTERED_FOR_SAMPLING_PAYMENT_NEEDED: 1002,\n REGISTERED_FOR_SYMPTOM_SAMPLING: 2000,\n};\n\nexport const preScreeningStatus = {\n NEGATIVE_PCR_TEST_NOT_PROCESSED: 0,\n NEGATIVE_PCR_TEST_ACCEPTED: 1,\n NEGATIVE_PCR_TEST_REJECTED: 2,\n NEGATIVE_PCR_TEST_NOT_PROVIDED: 3,\n NEGATIVE_PCR_TEST_OVERRULED: 4,\n NEGATIVE_PCR_TEST_NOT_NEEDED_BECAUSE_CHILD: 1000,\n NEGATIVE_PCR_TEST_NOT_NEEDED_BECAUSE_CERTIFICATE: 1001,\n};\n\nexport const accessControl = {\n NEW_SCREENING_REQUESTS: 1,\n SENT_SCREENING_REQUESTS_FULL_ACCESS: 2,\n SENT_SCREENING_REQUESTS_PATHOLOGISTS: 3,\n SCREENING_REQUESTS_OVERVIEW: 4,\n SUPER_ADMIN: 5,\n};\n\nexport const accessListType = {\n BORDER_CONTROL: \"BorderControlAccess\",\n VACCINATION: \"VaccinationUserAccess\",\n};\n\nexport const observationStatus = {\n IN_PROGRESS: 0,\n NEGATIVE: 1,\n POSITIVE: 2,\n INCCONCCLUSIVE: 4,\n};\n\nexport const residenceStatus = {\n CREATED: 0,\n IN_TRANSIT: 1,\n CHECKED_IN: 2,\n CHECKED_OUT: 3,\n};\n\nexport const countryStatuses = {\n QUARANTINE_HOTEL_NOT_NEEDED: -1,\n LOW_RISK_QUARANTINE_AT_HOME: 0,\n MEDIUM_RISK_QUARANTINE_AT_HOTEL: 1,\n MEDIUM_RISK_QUARANTINE_AT_HOME: 2,\n HIGH_RISK_QUARANTINE_AT_HOTEL: 3,\n QUARANTINE_HOTEL_EXEMPTION_ACCEPTED: 4,\n QUARANTINE_HOTEL_EXEMPTION_REJECTED: 5,\n SENT_TO_QUARANTINE_HOTEL: 6,\n};\n\nexport const vaccinesAtc = {\n PFIZER: \"J07BX0301\",\n MODERNA: \"J07BX0302\",\n ASTRA_ZENECA: \"J07BX0303\",\n JANSSEN: \"J07BX0304\",\n};\n\nexport const certificateType = {\n ANTIBODY: \"Recovery certificate\",\n VACCINATION: \"Vaccination\",\n PCR: \"Negative Testresult\",\n UNITED: \"United Airlines Precheck\",\n};\nexport const qrCodeErrorSeverity = {\n INFO: 0,\n WARNING: 1,\n INVALID: 2,\n ERROR: 3,\n};\n\nexport const actionStatuses = {\n NEG_PCR: 1,\n NEG_PCR_REJECTED: 2,\n REGISTERED_WITH_CERTIFICATE: 3,\n FINISH_SAMPLING: 4,\n TRANSIT: 5,\n REGISTERED_TO_QUARANTINE: 6,\n CONFIRM_REGISTRATION: 7,\n PROCESS_COMPLETED: 8,\n CONFIRM_REGISTRATION_QUARANTINE: 9,\n CONFIRM_REGISTRATION_SAMPLING: 10,\n CONFIRM_REGISTRATION_CERTIFICATE: 11,\n CONFIRM_REGISTRATION_TRANSIT: 12,\n TAKE_SAMPLE_WITH_VALID_CERTIFICATE: 13,\n CHECKOUT_CERTIFICATE_AND_SAMPLE: 14,\n CHECKOUT_CERTIFICATE_AND_SAMPLE_ELSEWHERE: 15,\n TAKE_SAMPLE_WITH_CHILD: 16,\n CHECKOUT_CHILD_AND_SAMPLE: 17,\n CHECKOUT_CHILD_AND_SAMPLE_ELSEWHERE: 18,\n CHECKOUT_CHILD_NO_ACTION: 19,\n CHECKOUT_CERTIFICATE_WITH_PCR_POSITIVE: 20,\n TAKE_PCR_SAMPLE_NO_PCR_NEGATIVE_CERTIFICATE: 21,\n CHECKOUT_ELECTRONIC_ID_PCR_POSITIVE_CERTIFICATE: 22,\n CHECKOUT_ELECTRONIC_ID_VACCINATION_CERTIFICATE: 23,\n CHECKOUT_ELECTRONIC_ID_VACCINATION_CERTIFICATE_AND_SAMPLE: 24,\n CHECKOUT_ELECTRONIC_ID_VACCINATION_CERTIFICATE_AND_SAMPLE_ELSEWHERE: 25,\n TAKEN_SAMPLE_WITH_VALID_ELECTRONIC_ID_CERTIFICATE: 26,\n INVALID_ELECTRONIC_ID_CERTIFICATE_TAKE_SAMPLE: 27,\n ELECTRONIC_ID_CERTIFICATE_CONFIRM_NEG_PCR: 28,\n TAKE_SAMPLE_WITH_VALID_ELECTRONIC_ID_POSITIVE_CERTIFICATE: 29,\n CHECKOUT_ELECTRONIC_ID_POSITIVE_CERTIFICATE_AND_SAMPLE_ELSEWHERE: 30,\n CHECKOUT_ELECTRONIC_ID_POSITIVE_CERTIFICATE_AND_SAMPLE_TAKEN: 31,\n NEG_PCR_PRE_BORDER_CERTIFICATE: 32,\n TAKE_SAMPLE_PRE_BORDER_CERTIFICATE: 33,\n CHECKOUT_PRE_BORDER_CERTIFICATE: 34,\n CHECKOUT_PRE_BORDER_CERTIFICATE_AND_SAMPLING_ELSEWHERE: 35,\n CHECKOUT_PRE_BORDER_CERTIFICATE_AND_SAMPLE_TAKEN: 36,\n CHECKOUT_PRE_BORDER_CERTIFICATE_PCR_POSITIVE_CERTIFICATE: 37,\n PRE_BORDER_CERTIFICATE_UNRESOLVED: 38,\n PRE_BORDER_CERTIFICATE_REJECTED: 39,\n};\n\nexport const actionStatusesCompleted = {\n NEG_PCR_CONFIRMED: 1,\n NEG_PCR_REJECTED: 2,\n NEG_PCR_OVERRIDDEN: 3,\n CERTIFICATE_ACCEPTED: 4,\n CERTIFICATE_REJECTED_REGISTERED_TO_SAMPLING: 6,\n CERTIFICATE_REJECTED_REGISTERED_TO_QUARANTINE: 7,\n SAMPLING_COMPLETED: 8,\n REGISTERED_TO_QUARANTINE: 9,\n REGISTERED_TO_QUARANTINE_REJECTED: 10,\n REGISTERED_TO_QUARANTINE_ACCEPTED: 11,\n REGISTERED_IN_TRANSIT: 12,\n REGISTERED_IN_TRANSIT_ACCEPTED: 13,\n TRANSIT_REJECTED_REGISTERED_WITH_CERTIFICATE: 14,\n TRANSIT_REJECTED_REGISTERED_TO_SAMPLING: 15,\n TRANSIT_REJECTED_REGISTERED_TO_QUARANTINE: 16,\n REGISTRATION_COMPLETED: 17,\n STATUS_CHANGED_TO_REGISTERED_WITH_CERTIFICATE: 18,\n CERTIFICATE_ACCEPTED_VACCINATION: 19,\n CERTIFICATE_ACCEPTED_ANTIBODIES: 20,\n CERTIFICATE_ACCEPTED_OTHER_DOCUMENTS: 21,\n CERTIFICATE_ACCEPTED_POSITIVE_PREVIOUS: 22,\n CERTIFICATE_ACCEPTED_WITH_SAMPLING: 23,\n CERTIFICATE_ACCEPTED_BY_AIRLINE: 24,\n SAMPLE_TAKEN_DOUBLE_SAMPLING: 25,\n SAMPLE_TAKEN_NO_PCR_NEGATIVE: 26,\n SAMPLE_TAKEN_CHILD: 27,\n SAMPLE_TAKEN_PARTIAL_VACCINATION_CERTIFICATE: 28,\n SAMPLE_TAKEN_VALID_CERTIFICATE_BUT_SAMPLE_STILL_REQUIRED: 29,\n SAMPLE_TAKEN_VALID_ELECTRONICCERTIFICATE_BUT_SAMPLE_STILL_REQUIRED: 30,\n CHECKOUT_VALID_ELECTRONIC_ID_PCR_POSITIVE_CERTIFICATE: 31,\n CHECKOUT_VALID_ELECTRONIC_ID_VACCINATION_CERTIFICATE: 32,\n SAMPLE_TAKEN_DOUBLE_SAMPLING_INVALID_ELECTRONIC_ID_CERTIFICATE: 33,\n SAMPLE_TAKEN_DOUBLE_VALID_ELECTRONIC_ID_POSITIVE_CERTIFICATE_BUT_SAMPLING_STILL_REQUIRED: 34,\n};\n\nexport const reviewCertificateStatuses = {\n UNRESOLVE: 0,\n APPROVE: 1,\n REJECT: 2,\n};\n\nexport const reviewFileStatuses = {\n NOT_CERTIFICATE: 0,\n VALID: 1,\n WARNING: 2,\n ERROR: 3,\n};\n\nexport const reviewFileTypeStatuses = {\n VACCINATION: 1,\n PASSPORT: 2,\n NEGATIVE_PCR: 3,\n PREVIOUS_INFECTION: 4,\n};\n\nexport const screeningStatuses = {\n CREATED: 0,\n REQUEST_SENT: 1,\n SOME_RESULTS_ARRIVED: 2,\n ALL_RESULTS_ARRIVED: 3,\n COMPLETED: 4,\n CANCELED: 5,\n};\n","export const USER = \"user\";\nexport const LANGUAGE = \"language\";\nexport const LOCATION = \"location\";\nexport const LOCATION_DESCRIPTION = \"locationDescription\";\nexport const LOCATION_OPTIONS = \"locationOptions\";\nexport const LOGIN_TYPE = \"loginType\";\nexport const VACCINE_ID = \"vaccineId\";\nexport const SCHEDULE_LOCATION = \"scheduleLocation\";\nexport const GROUP_MEMBER_FILTER_STATUS = \"groupMemberFilterStatus\";\nexport const GROUP_MEMBER_FILTER_VACCINES = \"groupMemberFilterVaccines\";\nexport const GROUP_MEMBER_FILTER_COMMENTS = \"groupMemberFilterComments\";\nexport const GROUP_MEMBER_FILTER_FROM = \"groupMemberFilterFrom\";\nexport const GROUP_MEMBER_FILTER_TO = \"groupMemberFilterTo\";\nexport const GROUP_MEMBER_FILTER_LOCATIONS = \"groupMemberFilterLocations\";\nexport const VACCINATION_LOCATION_ID = \"vaccinationLocationId\";\nexport const FIRST_OR_SECOND_VACCINATION = \"firstOrSecondVaccination\";\nexport const ALLOW_MORE_THAN_TWO_VACCINATIONS = \"allowMoreThanTwoVaccinations\";\nexport const VACCINATION_GROUP_FILTER_SEARCH = \"FilterSearch\";\nexport const VACCINATION_GROUP_FILTER_REGION = \"FilterRegion\";\nexport const GROUP_VACCINATION_FILTER_KEY = \"groupVaccination\";\nexport const VACCINATION_GROUPS_FILTER_KEY = \"vaccinationGroups\";\nexport const VACCINATION_CONDITIONS_YEAR_FROM = \"vaccinationConditionsYearFrom\";\nexport const VACCINATION_CONDITIONS_YEAR_TO = \"vaccinationConditionsYearTo\";\nexport const VACCINATION_CONDITIONS_SUMMONING_FROM =\n \"vaccinationConditionsSummoningFrom\";\nexport const VACCINATION_CONDITIONS_SUMMONING_TO =\n \"vaccinationConditionsSummoningTo\";\nexport const VACCINATION_CONDITIONS_GROUPS = \"vaccinationConditionsGroups\";\nexport const VACCINATION_CONDITIONS_ALWAYS_ALLOW_SECOND =\n \"vaccinationConditionsAlwaysAllowSecond\";\nexport const VACCINATION_REQUEST_FILTER_SEARCH =\n \"VaccinationRequestFilterSearch\";\nexport const VACCINATION_REQUEST_FILTER_REGION =\n \"VaccinationRequestFilterRegion\";\nexport const VACCINATION_REQUEST_FILTER_NUMBER_OF_VACCINATIONS =\n \"VaccinationRequestFilterNumberOfVaccinations\";\nexport const VACCINATION_REQUEST_FILTER_PREGNANT =\n \"VaccinationRequestFilterPregnant\";\nexport const VACCINATION_REQUEST_FILTER_ACCUTE_ALLERGY =\n \"VaccinationRequestFilteAccuteAllergy\";\nexport const VACCINATION_REQUEST_FILTER_USING_MEDICATION =\n \"VaccinationRequestFilterUsingMedication\";\nexport const CERTIFICATE_REVIEW_FILTER_FORM = \"CertificateReviewFilterForm\";\nexport const CERTIFICATE_REVIEW_PAGE_SIZE = \"CertificateReviewPageSize\";\nexport const CERTIFICATE_REVIEW_PAGE_NUMBER = \"CertificateReviewPageNumber\";\n// new keys ---->\nexport const NEW_SCREENING_REQUESTS_FILTER_FORM =\n \"NewScreeningRequestsFilterForm\";\nexport const NEW_SCREENING_REQUESTS_PAGE_SIZE = \"NewScreeningRequestsPageSize\";\nexport const NEW_SCREENING_REQUESTS_SORT_DIRECTION =\n \"NewScreeningRequestsSortDirection\";\nexport const NEW_SCREENING_REQUESTS_SORT_KEY = \"NewScreeningRequestsSortKey\";\n\nexport const SENT_SCREENING_REQUESTS_FILTER_FORM =\n \"SentScreeningRequestsFilterForm\";\nexport const SENT_SCREENING_REQUESTS_PAGE_SIZE =\n \"SentScreeningRequestsPageSize\";\nexport const SENT_SCREENING_REQUESTS_SORT_DIRECTION =\n \"SentScreeningRequestsSortDirection\";\nexport const SENT_SCREENING_REQUESTS_SORT_KEY = \"SentScreeningRequestsSortKey\";\n","import * as localStorageKeys from \"./constants/localStorageKeys\";\n\nimport { AccessItem, Location, User } from \"./models/Models\";\nimport moment, { Moment } from \"moment\";\n\nimport { ILanguage } from \"./context/LangContext\";\nimport { ScreeningStatus } from \"./models/getCancerScreeningsModel\";\nimport { borderControlStatus } from \"./constants/enums\";\nimport translations from \"./assets/json/translations.json\";\n\nexport const hasUserAccess = (id: number, user: User) => {\n const item = user?.accessList?.find((item: AccessItem) => {\n return item.id === id;\n });\n return item !== undefined;\n};\n\nexport function sleep(time: number = 1000) {\n return new Promise((resolve) => setTimeout(resolve, time));\n}\n\nexport function parseTemplateString(str: string, ...args: string[]) {\n args.forEach((arg) => (str = str.replace(/\\$\\{.*?\\}/, arg)));\n return str.replace(/\\$\\{.*?\\}/g, \"\");\n}\n\nexport function getLocationLabel(locationKey: string, locations: Location[]) {\n const result = locations.find((l) => l.key === locationKey);\n if (result) {\n return result.label;\n }\n return null;\n}\n\nexport function showResidenceInfo(testType: string) {\n return (\n !!testType &&\n testType !== borderControlStatus.REGISTERED_FOR_SYMPTOM_SAMPLING.toString()\n );\n}\n\nexport function capitalize(string: string) {\n return string.charAt(0).toUpperCase() + string.slice(1);\n}\n\nexport function compareSSN(a: string, b: string) {\n const pattern = new RegExp(/^[0-9]{10}$/);\n if (!pattern.test(a)) {\n return -1;\n }\n if (!pattern.test(b)) {\n return 1;\n }\n\n const centuryA = !parseInt(a[9]) ? 21 : 20;\n const centuryB = !parseInt(b[9]) ? 21 : 20;\n if (centuryA !== centuryB) {\n return centuryA > centuryB ? -1 : 1;\n }\n\n const yearA = parseInt(a.substr(4, 2));\n const yearB = parseInt(b.substr(4, 2));\n if (yearA !== yearB) {\n return yearA > yearB ? -1 : 1;\n }\n\n const monthA = parseInt(a.substr(2, 2));\n const monthB = parseInt(b.substr(2, 2));\n if (monthA !== monthB) {\n return monthA > monthB ? -1 : 1;\n }\n\n const dayA = parseInt(a.substr(0, 2));\n const dayB = parseInt(b.substr(0, 2));\n return dayA === dayB ? 0 : dayA > dayB ? -1 : 1;\n}\n\nexport function compareFlowDate(a: any, b: any) {\n if (!a.created) {\n return -1;\n }\n if (!b.created) {\n return 1;\n }\n return moment(a.created).isAfter(b.created) ? 1 : -1;\n}\n\nexport function isAccessible(id: number, user: any) {\n const item = user?.accessList?.find((item: AccessItem) => {\n return item.id === id;\n });\n return item !== undefined;\n}\n\nexport function getBirthYearBySSN(ssn: string) {\n const pattern = new RegExp(/^[0-9]{10}$/);\n if (!pattern.test(ssn)) {\n return 0;\n }\n\n const century = !parseInt(ssn[9]) ? 2000 : 1900;\n const year = parseInt(ssn.substr(4, 2));\n return century + year;\n}\n\nexport function toISOStringTimezone(date: Moment) {\n const isoDate = date.toISOString(true);\n if (isoDate.includes(\"+\")) {\n return isoDate.split(\"+\")[0];\n }\n return isoDate;\n}\n\nexport function getYesNoOptions(lang: ILanguage) {\n return [\n {\n label: translations.yes[lang],\n value: \"true\",\n },\n {\n label: translations.no[lang],\n value: \"false\",\n },\n ];\n}\n\nexport function getYesNoNeitherOptions(lang: ILanguage) {\n return [\n {\n label: translations.notSelected[lang],\n value: \"neither\",\n },\n {\n label: translations.yes[lang],\n value: \"true\",\n },\n {\n label: translations.no[lang],\n value: \"false\",\n },\n ];\n}\n\nexport function getFileTypeText(file: string) {\n const splitString = file.split(\"/\");\n if (splitString.length > 1) {\n return splitString[1];\n }\n\n return file;\n}\n\nexport function splitFullName(fullName: string) {\n if (fullName && fullName.length > 0) {\n var names = fullName.split(\" \");\n\n var lastName = names.pop();\n var firstName = \"\";\n if (lastName) {\n firstName = fullName.replace(lastName, \"\").trim();\n }\n return { firstName: firstName, lastName: lastName };\n } else {\n return null;\n }\n}\nexport function getCenturyFromSsn(ssn: string) {\n const lastDigit = ssn.slice(9, 10);\n const isBornAfter2000 = lastDigit === \"0\";\n return isBornAfter2000 ? \"20\" : \"19\";\n}\nexport function getDateOfBirthFromSsn(ssn: string) {\n const century = getCenturyFromSsn(ssn);\n return moment(\n `${ssn.slice(0, 2)}.${ssn.slice(2, 4)}.${century}${ssn.slice(4, 6)}`,\n \"DD.MM.YYYY\"\n );\n}\n\nexport function formatSsn(ssn: string | undefined) {\n return ssn?.replace(/(\\d{6})(\\d{4})/, \"$1-$2\");\n}\n\nexport function getAgeInYearsFromSsnAtDate(ssn: string | undefined, date: Date | undefined, lang: ILanguage) {\n if(ssn !== undefined && date !== undefined)\n {\n const birthDate = getDateOfBirthFromSsn(ssn);\n \n const ageInYears = moment(date).diff(birthDate, 'years');\n \n return ageInYears % 10 === 1 ? \n ageInYears + \" \" + translations.yearAgeText[lang] :\n ageInYears + \" \" + translations.yearsAgeText[lang]\n }\n else\n {\n return translations.notComputable[lang];\n }\n \n}\n\nexport function clearSavedNewScreeningRequest() {\n localStorage.removeItem(localStorageKeys.NEW_SCREENING_REQUESTS_FILTER_FORM);\n localStorage.removeItem(localStorageKeys.NEW_SCREENING_REQUESTS_PAGE_SIZE);\n localStorage.removeItem(\n localStorageKeys.NEW_SCREENING_REQUESTS_SORT_DIRECTION\n );\n localStorage.removeItem(localStorageKeys.NEW_SCREENING_REQUESTS_SORT_KEY);\n}\n\nexport function clearSavedSentScreeningRequest() {\n localStorage.removeItem(localStorageKeys.SENT_SCREENING_REQUESTS_FILTER_FORM);\n localStorage.removeItem(localStorageKeys.SENT_SCREENING_REQUESTS_PAGE_SIZE);\n localStorage.removeItem(\n localStorageKeys.SENT_SCREENING_REQUESTS_SORT_DIRECTION\n );\n localStorage.removeItem(localStorageKeys.SENT_SCREENING_REQUESTS_SORT_KEY);\n}\n\nexport function clearLocalStorage() {\n clearSavedNewScreeningRequest();\n clearSavedSentScreeningRequest();\n}\n\nexport function getScreeningStatusText(screeningStatus: number, lang: ILanguage): string {\n switch (screeningStatus) {\n case ScreeningStatus.Created:\n return translations.new[lang];\n case ScreeningStatus.RequestsSent:\n return translations.requestsSent[lang];\n case ScreeningStatus.SomeResultsArrived:\n return translations.someResultsArrived[lang];\n case ScreeningStatus.AllResultsArrived:\n return translations.allResultsArrived[lang];\n case ScreeningStatus.Completed:\n return translations.confirmed[lang];\n case ScreeningStatus.Canceled:\n return translations.deleted[lang];\n case ScreeningStatus.SentToSkrin:\n return translations.sentToSkrin[lang];\n default:\n return translations.unknown[lang];\n }\n}\n","import { useSnackbar } from 'notistack';\n\nfunction useNotifier() {\n const { enqueueSnackbar } = useSnackbar();\n\n return {\n notifySuccess: (message: string) =>\n enqueueSnackbar(message, { variant: 'success' }),\n notifyError: (message: string) =>\n enqueueSnackbar(message, { variant: 'error', autoHideDuration: 4000 }),\n notifyWarning: (message: string) =>\n enqueueSnackbar(message, { variant: 'warning', autoHideDuration: 4000 }),\n };\n}\n\nexport default useNotifier;\n","import {\n Grid,\n Paper,\n Theme,\n Typography,\n createStyles,\n makeStyles,\n} from \"@material-ui/core\";\nimport React, { useContext } from \"react\";\n\nimport Button from \"./Button\";\nimport { LangContext } from \"../context/LangContext\";\nimport { UserContext } from \"../context/UserContext\";\nimport { accessControl } from \"../constants/enums\";\nimport { hasUserAccess } from \"../utils\";\nimport translations from \"../assets/json/translations.json\";\nimport { useHistory } from \"react-router-dom\";\nimport useNotifier from \"../hooks/useNotifier\";\n\ninterface IProps {\n samplingMenu?: boolean;\n}\n\nconst useStyles = makeStyles((theme: Theme) =>\n createStyles({\n root: {\n width: \"100%\",\n height: `calc(100vh - ${theme.dimensions.navbarHeight}px)`,\n display: \"flex\",\n justifyContent: \"center\",\n alignItems: \"center\",\n },\n paper: {\n flex: 1,\n padding: theme.spacing(3),\n margin: theme.spacing(3),\n textAlign: \"center\",\n maxWidth: theme.dimensions.boxWidth,\n },\n typographyTitle: {\n padding: theme.spacing(2),\n },\n })\n);\n\nconst Home: React.FC = ({ samplingMenu = true }) => {\n const { notifyError } = useNotifier();\n const classes = useStyles({});\n const history = useHistory();\n const [user] = useContext(UserContext);\n const [lang] = useContext(LangContext);\n\n if ((window as any).logPrinterError === undefined) {\n (window as any).logPrinterError = notifyError;\n }\n\n return (\n
\n \n \n \n \n {translations.actions[lang]}\n \n \n {renderSamplingItems()}\n \n \n
\n );\n\n function renderSamplingItems() {\n return (\n \n {hasUserAccess(accessControl.NEW_SCREENING_REQUESTS, user) && (\n \n history.push(\"/new-screening-requests\")}\n >\n {translations.newScreeningRequests[lang]}\n \n \n )}\n {(hasUserAccess(accessControl.SENT_SCREENING_REQUESTS_FULL_ACCESS, user) \n || hasUserAccess(accessControl.SENT_SCREENING_REQUESTS_PATHOLOGISTS, user)) && (\n \n history.push(\"/sent-screening-requests\")}\n >\n {translations.sentScreeningRequests[lang]}\n \n \n )}\n {hasUserAccess(accessControl.SCREENING_REQUESTS_OVERVIEW, user) && (\n \n history.push(\"/screening-requests-overview\")}\n >\n {translations.screeningRequestsOverview[lang]}\n \n \n )}\n {hasUserAccess(accessControl.SUPER_ADMIN, user) && (\n \n \n \n )}\n \n );\n }\n};\n\nexport default Home;\n","import { IResidenceLocation } from \"../interfaces/residenceLocation\";\nimport { IFormValues as IUserFormValues } from \"../components/UserForm\";\nimport accessList from \"../assets/json/accessList.json\";\nimport { accessListType } from \"../constants/enums\";\n\nexport class User {\n mobile: string;\n ssn: string;\n name: string;\n location: string;\n accessList: Array;\n hasError: boolean;\n sessionId: string;\n encodedSessionId: string;\n loginType: \"sampling\" | \"vaccination\";\n isRapidTestLocation: boolean;\n allowSampleTypeConversion: boolean;\n\n constructor(user: any) {\n this.mobile = user !== undefined ? user[\"mobile\"] : null;\n this.ssn = user !== undefined ? user[\"ssn\"] : null;\n this.name = user !== undefined ? user[\"name\"] : null;\n this.location = user !== undefined ? user[\"location\"] : null;\n this.accessList =\n user !== undefined\n ? user.accessList && user.accessList.map((i: any) => new AccessItem(i))\n : null;\n this.hasError = user !== undefined ? user[\"hasError\"] : null;\n this.sessionId = user !== undefined ? user.sessionId : \"\";\n this.encodedSessionId = btoa(this.sessionId);\n this.encodedSessionId = btoa(this.sessionId);\n this.loginType =\n user !== undefined && user.loginType === \"vaccination\"\n ? \"vaccination\"\n : \"sampling\";\n this.isRapidTestLocation =\n user !== undefined ? user[\"isRapidTestLocation\"] : false;\n this.allowSampleTypeConversion =\n user !== undefined ? user[\"allowSampleTypeConversion\"] : false;\n }\n}\n\nexport class AccessItem {\n id: number;\n description: string;\n\n constructor(accessItem: any) {\n this.id = accessItem !== undefined ? accessItem[\"id\"] : 0;\n this.description =\n accessItem !== undefined ? accessItem[\"description\"] : \"\";\n }\n}\n\nexport class CreateUser {\n name: string;\n userAccesses: number[];\n userVaccinationRegionAccesses?: number[];\n userResidenceLocationAccesses?: number[];\n samplingLocationsAccesses?: number[];\n\n constructor(form: IUserFormValues) {\n const access = form.borderControlAccess\n .map((item) => parseInt(item.value))\n .concat(form.vaccinationAccess.map((item) => parseInt(item.value)));\n this.name = form.name;\n this.userAccesses = access;\n this.userVaccinationRegionAccesses = form.vaccinationRegions.map((r) =>\n parseInt(r.value)\n );\n this.userResidenceLocationAccesses = form.residenceLocations.map((r) =>\n parseInt(r.value)\n );\n this.samplingLocationsAccesses = form.samplingLocations.map((r) =>\n parseInt(r.value)\n );\n }\n}\n\nexport class UserItem {\n name: string;\n ssn: string;\n access: {\n id: number;\n description: { is: string; en: string };\n }[];\n borderControlAccess: {\n id: number;\n description: { is: string; en: string };\n }[];\n vaccinationAccesses: {\n id: number;\n description: { is: string; en: string };\n }[];\n residenceLocations?: IResidenceLocation[];\n samplingLocations?: IResidenceLocation[];\n\n constructor(user: any) {\n const borderControlAccess: {\n id: number;\n description: { is: string; en: string };\n }[] = [];\n const vaccinationAccesses: {\n id: number;\n description: { is: string; en: string };\n }[] = [];\n\n if (user && user.userAccesses) {\n user.userAccesses.forEach((a: any) => {\n const accessItem = accessList.find(\n (item) =>\n item.id === a.id &&\n item.accessGroup === accessListType.BORDER_CONTROL\n );\n if (accessItem) {\n borderControlAccess.push(accessItem);\n } else {\n }\n });\n user.userAccesses.forEach((a: any) => {\n const accessItem = accessList.find(\n (item) =>\n item.id === a.id && item.accessGroup === accessListType.VACCINATION\n );\n if (accessItem) {\n vaccinationAccesses.push(accessItem);\n }\n });\n }\n this.borderControlAccess = borderControlAccess;\n this.vaccinationAccesses = vaccinationAccesses;\n // keeping all accesses in one array might be useful for other things\n this.access = this.borderControlAccess.concat(this.vaccinationAccesses);\n\n this.name = user && user.name ? user.name : \"\";\n this.ssn = user && user.ssn ? user.ssn : \"\";\n this.residenceLocations = user.residenceLocationListModel\n ? user.residenceLocationListModel\n : null;\n this.samplingLocations = user.samplingLocationAccesses\n ? user.samplingLocationAccesses\n : null;\n }\n}\n\nexport class Location {\n id: string;\n key: string;\n label: string;\n\n constructor(location: any) {\n this.id = location && location.id;\n this.key = location && location.locationKey ? location.locationKey : \"\";\n this.label =\n location && location.locationDescription\n ? location.locationDescription\n : \"\";\n }\n}\n\nexport class ErrorInfo {\n errorCode: number;\n errorMessage: string;\n\n constructor(errorCode: number, errorMessage: string) {\n this.errorCode = errorCode;\n this.errorMessage = errorMessage;\n }\n}\n","import { User, CreateUser, UserItem, Location } from \"../models/Models\";\n\nimport { IHttpAnswer } from \"../interfaces/httpAnswer\";\nimport * as versionFile from \"../version.json\";\nimport * as localStorageKeys from \"../constants/localStorageKeys\";\n\nconst API_URL = process.env.REACT_APP_API_URL;\n\nasync function login(\n mobile: string,\n location: string,\n loginType: string\n): Promise> {\n const version = `${versionFile.major}.${versionFile.minor}`;\n const loginRequest = {\n phoneNumber: mobile,\n location: location,\n version: version,\n loginType: loginType,\n };\n const response = await fetch(`${API_URL}/Authentication/GetUserAccess`, {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n },\n body: JSON.stringify(loginRequest),\n });\n if (response.ok) {\n const data = await response.json();\n return { data: data, isOk: response.ok, statusCode: response.status };\n }\n const data = await response.json();\n return { data: data, isOk: response.ok, statusCode: response.status };\n}\n\nasync function logout(): Promise> {\n const sessionId = new User(\n JSON.parse(localStorage.getItem(localStorageKeys.USER) ?? \"{}\") ?? {}\n ).encodedSessionId;\n\n const response = await fetch(\n `${API_URL}/Authentication/InvalidateCurrentSession`,\n {\n method: \"POST\",\n headers: {\n Authorization: `Bearer ${sessionId}`,\n },\n }\n );\n return { data: true, isOk: response.ok, statusCode: response.status };\n}\n\nasync function getLoginLocations(): Promise> {\n const response = await fetch(`${API_URL}/Authentication/GetLoginLocations`);\n\n if (response.ok) {\n const data = await response.json();\n const locations = data.locations.map(\n (location: any) => new Location(location)\n );\n return {\n data: locations,\n isOk: response.ok,\n statusCode: response.status,\n };\n }\n\n return { data: [], isOk: response.ok, statusCode: response.status };\n}\n\nasync function updateTravelDetails(barCode: string, text: string) {\n const sessionId = new User(\n JSON.parse(localStorage.getItem(localStorageKeys.USER) ?? \"{}\") ?? {}\n ).encodedSessionId;\n\n const response = await fetch(\n `${API_URL}/Passenger/UpdateTravelDetails/${barCode}`,\n {\n method: \"POST\",\n headers: {\n Authorization: `Bearer ${sessionId}`,\n \"Content-Type\": \"application/json\",\n },\n body: JSON.stringify(text),\n }\n );\n\n if (response.ok) {\n return {\n isOk: response.ok,\n statusCode: response.status,\n };\n }\n return { isOk: response.ok, statusCode: response.status };\n}\n\nasync function createUser(ssn: string, user: CreateUser) {\n const sessionId = new User(\n JSON.parse(localStorage.getItem(localStorageKeys.USER) ?? \"{}\") ?? {}\n ).encodedSessionId;\n\n const response = await fetch(`${API_URL}/Admin/AddUser/${ssn}`, {\n method: \"POST\",\n headers: {\n Authorization: `Bearer ${sessionId}`,\n \"Content-Type\": \"application/json\",\n },\n body: JSON.stringify(user),\n });\n\n if (response.ok) {\n return {\n isOk: response.ok,\n statusCode: response.status,\n };\n }\n return { isOk: response.ok, statusCode: response.status };\n}\n\nasync function editUser(ssn: string, user: CreateUser) {\n const sessionId = new User(\n JSON.parse(localStorage.getItem(localStorageKeys.USER) ?? \"{}\") ?? {}\n ).encodedSessionId;\n\n const response = await fetch(`${API_URL}/Admin/UpdateUser/${ssn}`, {\n method: \"PUT\",\n headers: {\n Authorization: `Bearer ${sessionId}`,\n \"Content-Type\": \"application/json\",\n },\n body: JSON.stringify(user),\n });\n\n if (response.ok) {\n return {\n isOk: response.ok,\n statusCode: response.status,\n };\n }\n return { isOk: response.ok, statusCode: response.status };\n}\n\nasync function getAllUsers(): Promise>> {\n const userList = new Array();\n const sessionId = new User(\n JSON.parse(localStorage.getItem(localStorageKeys.USER) ?? \"{}\") ?? {}\n ).encodedSessionId;\n\n const response = await fetch(`${API_URL}/Admin/GetUsers`, {\n method: \"GET\",\n headers: {\n Authorization: `Bearer ${sessionId}`,\n \"Content-Type\": \"application/json\",\n },\n });\n if (response.status === 200) {\n const data: { users: any[] } = await response.json();\n data.users.map((item) => userList.push(new UserItem(item)));\n }\n return {\n data: userList,\n isOk: response.ok,\n statusCode: response.status,\n };\n}\n\nasync function deleteSelectedUser(ssn: string) {\n const sessionId = new User(\n JSON.parse(localStorage.getItem(localStorageKeys.USER) ?? \"{}\") ?? {}\n ).encodedSessionId;\n\n const response = await fetch(`${API_URL}/Admin/DeleteUser/${ssn}`, {\n method: \"DELETE\",\n headers: {\n Authorization: `Bearer ${sessionId}`,\n \"Content-Type\": \"application/json\",\n },\n });\n\n if (response.ok) {\n return {\n isOk: response.ok,\n statusCode: response.status,\n };\n }\n return { isOk: response.ok, statusCode: response.status };\n}\n\nexport {\n login,\n logout,\n getLoginLocations,\n createUser,\n editUser,\n getAllUsers,\n deleteSelectedUser,\n updateTravelDetails,\n};\n","import React, { useContext } from \"react\";\nimport AppBar from \"@material-ui/core/AppBar\";\nimport Toolbar from \"@material-ui/core/Toolbar\";\nimport Typography from \"@material-ui/core/Typography\";\nimport makeStyles from \"@material-ui/core/styles/makeStyles\";\nimport useTheme from \"@material-ui/core/styles/useTheme\";\nimport useMediaQuery from \"@material-ui/core/useMediaQuery\";\nimport { useHistory } from \"react-router-dom\";\nimport cx from \"classnames\";\n\nimport Button from \"./Button\";\nimport { UserContext } from \"../context/UserContext\";\nimport { LangContext } from \"../context/LangContext\";\nimport translations from \"../assets/json/translations.json\";\nimport * as httpService from \"../services/httpService\";\nimport * as localStorageKeys from \"../constants/localStorageKeys\";\nimport {\n clearSavedNewScreeningRequest,\n clearSavedSentScreeningRequest,\n} from \"../utils\";\n\ninterface IProps {\n loggedIn: boolean;\n}\n\nconst useStyles = makeStyles((theme) => ({\n container: {\n padding: theme.spacing(0, 3),\n },\n toolbar: {\n width: \"100%\",\n maxWidth: theme.dimensions.maxContentWidth,\n margin: \"auto\",\n padding: 0,\n },\n title: {\n cursor: \"pointer\",\n color: \"#fff\",\n },\n hideTitle: {\n [theme.breakpoints.down(\"xs\")]: {\n display: \"none\",\n },\n },\n actions: {\n display: \"flex\",\n alignItems: \"center\",\n },\n language: {\n backgroundColor: \"#fff\",\n color: \"#000\",\n \"&:hover\": {\n backgroundColor: theme.palette.grey[400],\n },\n },\n languageMargin: {\n marginRight: theme.spacing(2),\n },\n activeLang: {\n fontWeight: 600,\n },\n inactiveLang: {\n opacity: 0.7,\n },\n userInfo: {\n marginRight: theme.spacing(2),\n textAlign: \"right\",\n display: \"flex\",\n flexDirection: \"column\",\n alignItems: \"flex-end\",\n },\n}));\n\nconst Navbar: React.FC = ({ loggedIn }) => {\n const classes = useStyles({});\n const history = useHistory();\n const theme = useTheme();\n const xsDown = useMediaQuery(theme.breakpoints.down(\"xs\"));\n const [userContext, setUserContext] = useContext(UserContext);\n const [lang, setLang] = useContext(LangContext);\n\n return (\n \n \n userContext && history.push(\"/home\")}\n className={cx(classes.title, { [classes.hideTitle]: loggedIn })}\n >\n {userContext && userContext.loginType\n ? userContext.loginType === \"sampling\"\n ? translations.samplingTitle[lang]\n : translations.vaccinationTitle[lang]\n : translations.title[lang]}\n \n
\n
\n {loggedIn && (\n \n \n {getUserName()}\n \n \n {getUserLocation()}\n \n
\n )}\n \n {lang === \"is\" ? \"English\" : \"Íslenska\"}\n \n {loggedIn && (\n {\n httpService.logout();\n localStorage.removeItem(localStorageKeys.USER);\n clearSavedNewScreeningRequest();\n clearSavedSentScreeningRequest();\n setUserContext(null);\n history.push(\"/login\");\n }}\n style={{ whiteSpace: \"nowrap\" }}\n >\n {translations.logOut[lang]}\n \n )}\n
\n
\n
\n );\n\n function changeLanguage() {\n const newLang = lang === \"is\" ? \"en\" : \"is\";\n setLang(newLang);\n localStorage.setItem(localStorageKeys.LANGUAGE, newLang);\n }\n\n function getUserName() {\n if (userContext === null) {\n history.push(\"/login\");\n return;\n }\n\n const name = userContext.name || \"\";\n if (xsDown) {\n const splitName = name.split(\" \");\n if (splitName.length) {\n return splitName[0];\n }\n }\n return name;\n }\n\n function getUserLocation() {\n if (userContext?.locationLabel) {\n return userContext?.locationLabel;\n }\n }\n};\n\nexport default Navbar;\n","import { useSnackbar } from 'notistack'\nimport React from 'react'\n\n\n\nconst InnerSnackbarUtilsConfigurator = (props) => {\n props.setUseSnackbarRef(useSnackbar())\n return null;\n}\n\nlet useSnackbarRef;\nconst setUseSnackbarRef = (useSnackbarRefProp) => {\n useSnackbarRef = useSnackbarRefProp\n}\n\nexport const SnackbarUtilsConfigurator = () => {\n return \n}\n\nexport const snackActions = {\n success(msg, autoHideDuration) {\n this.toast(msg, 'success', autoHideDuration)\n },\n warning(msg, autoHideDuration) {\n this.toast(msg, 'warning', autoHideDuration)\n },\n info(msg, autoHideDuration) {\n this.toast(msg, 'info', autoHideDuration)\n },\n error(msg, autoHideDuration) {\n this.toast(msg, 'error', autoHideDuration)\n },\n toast(msg, variant = 'default', autoHideDuration) {\n useSnackbarRef.enqueueSnackbar(msg, { variant: variant, autoHideDuration: autoHideDuration })\n }\n}","import React, { useContext } from \"react\";\n\nimport { makeStyles, Grid, Typography } from \"@material-ui/core\";\n\nimport { useHistory } from \"react-router-dom\";\nimport cx from \"classnames\";\n\nimport Button from \"./Button\";\nimport { LangContext } from \"../context/LangContext\";\nimport translations from \"../assets/json/translations.json\";\n\ninterface IProps {\n title: string;\n subtitles?: string[];\n backButton?: boolean;\n backButtonClick?: () => void;\n otherButton?: IButton;\n}\n\nexport interface IButton {\n label: string;\n icon?: React.ReactNode;\n onClick: () => void;\n}\n\nconst useStyles = makeStyles((theme) => ({\n container: {\n marginBottom: theme.spacing(2),\n width: \"100%\",\n maxWidth: theme.dimensions.maxContentWidth,\n margin: \"0 auto\",\n },\n title: {\n marginBottom: theme.spacing(1),\n [theme.breakpoints.down(\"md\")]: {\n fontSize: 35,\n },\n },\n spacing: {\n marginBottom: theme.spacing(1),\n },\n buttonSpacing: {\n marginLeft: theme.spacing(2),\n },\n subtitles: {\n fontSize: 18,\n paddingBottom: theme.spacing(1),\n },\n}));\n\nconst TitleArea: React.FC = ({\n title,\n subtitles,\n backButton = true,\n backButtonClick,\n otherButton,\n}) => {\n const classes = useStyles();\n const history = useHistory();\n const [lang] = useContext(LangContext);\n\n return (\n
\n \n \n {title}\n \n
\n {otherButton && (\n \n {otherButton.label}\n \n )}\n {backButton && (\n history.push(\"/home\"))}\n padding={false}\n className={cx(classes.spacing, {\n [classes.buttonSpacing]: otherButton,\n })}\n >\n {translations.backToMenu[lang]}\n \n )}\n
\n \n {subtitles && subtitles.length && (\n
\n {subtitles.map((subtitle, index) => (\n \n {subtitle}\n \n ))}\n
\n )}\n
\n );\n};\n\nexport default TitleArea;\n","import React from 'react';\nimport { CircularProgress } from '@material-ui/core';\n\nconst LoadingIndicator: React.FC = () => {\n return ;\n};\n\nexport default LoadingIndicator;\n","import React from 'react';\nimport Grid from '@material-ui/core/Grid';\nimport Typography from '@material-ui/core/Typography';\nimport makeStyles from '@material-ui/core/styles/makeStyles';\n\nimport LoadingIndicator from './LoadingIndicator';\n\ninterface IProps {\n loading?: boolean;\n error?: string;\n}\n\nconst useStyles = makeStyles((theme) => ({\n container: {\n width: '100%',\n maxWidth: theme.dimensions.maxContentWidth,\n margin: '0 auto',\n },\n}));\n\nconst Section: React.FC = ({ children, loading, error }) => {\n const classes = useStyles({});\n\n return
{renderContent()}
;\n\n function renderContent() {\n if (error) {\n return {error};\n }\n\n if (loading) {\n return (\n \n \n \n );\n }\n\n return children;\n }\n};\n\nexport default Section;\n","import * as httpService from \"../../services/httpService\";\nimport * as localStorageKeys from \"../../constants/localStorageKeys\";\n\nimport React, { useRef } from 'react'\nimport {\n clearSavedNewScreeningRequest,\n clearSavedSentScreeningRequest,\n} from \"../../utils\";\n\nimport IdleTimer from 'react-idle-timer'\nimport { useHistory } from 'react-router-dom';\n\nconst IdleTimerContainer: React.FC = () => {\n const idleTimerRef = useRef(null)\n const history = useHistory();\n const timeout = 30*60*1000;\n\n \n const onIdle = () => {\n console.log(\"User logged out\");\n httpService.logout();\n localStorage.removeItem(localStorageKeys.USER);\n clearSavedNewScreeningRequest();\n clearSavedSentScreeningRequest();\n history.push(\"/login\");\n }\n return (\n
\n \n
\n )\n}\n\nexport default IdleTimerContainer","import React from \"react\";\nimport cx from \"classnames\";\nimport { makeStyles, Typography, Grid } from \"@material-ui/core\";\n\nimport Navbar from \"./Navbar\";\nimport TitleArea, { IButton } from \"./TitleArea\";\nimport LoadingIndicator from \"./LoadingIndicator\";\nimport Section from \"./Section\";\nimport IdleTimerContainer from '../components/CancerScreening/IdleTimerContainer';\n\ninterface IProps {\n loading?: boolean;\n error?: string;\n loggedIn?: boolean;\n title?: string;\n subtitles?: string[];\n backButton?: boolean;\n backButtonClick?: () => void;\n otherButton?: IButton;\n contentClassName?: string;\n useDefaultSpacing?: boolean;\n}\n\nconst useStyles = makeStyles((theme) => ({\n root: {\n display: \"flex\",\n flexDirection: \"column\",\n justifyContent: \"space-between\",\n minHeight: \"100vh\",\n overflowX: \"hidden\",\n backgroundColor: theme.palette.background.default,\n },\n content: {\n flex: 1,\n },\n defaultSpacing: {\n marginTop: theme.spacing(4),\n marginBottom: theme.spacing(8),\n padding: theme.spacing(0, 3),\n [theme.breakpoints.down(\"xs\")]: {\n marginTop: theme.spacing(3),\n marginBottom: theme.spacing(6),\n padding: theme.spacing(0, 2),\n },\n },\n loadingContainer: {\n height: `calc(100vh - ${theme.dimensions.navbarHeight}px)`,\n },\n}));\n\nconst Layout: React.FC = ({\n children,\n loading,\n error,\n loggedIn = true,\n title,\n subtitles,\n backButton,\n backButtonClick,\n otherButton,\n contentClassName,\n useDefaultSpacing,\n}) => {\n const classes = useStyles({});\n const isLoading = loading && !error;\n\n return (\n
\n {(loggedIn && ())}\n \n \n {renderContent()}\n \n
\n );\n\n function renderContent() {\n if (error) {\n return (\n
\n {error}\n
\n );\n }\n\n if (loading) {\n return (\n \n \n \n );\n }\n\n return (\n \n {title && (\n \n )}\n {children}\n \n );\n }\n};\n\nexport default Layout;\n","import Home from '../components/Home';\nimport Layout from '../components/Layout';\nimport React from 'react';\nimport useNotifier from '../hooks/useNotifier';\n\nconst HomePage: React.FC = () => {\n const { notifyError } = useNotifier();\n\n if ((window as any).logPrinterError === undefined) {\n (window as any).logPrinterError = notifyError;\n }\n\n return (\n \n \n \n );\n};\nexport default HomePage;\n","import * as localStorageKeys from './constants/localStorageKeys';\nimport * as versionFile from './version.json';\n\nimport { IHttpAnswer } from './interfaces/httpAnswer';\nimport { ILanguage } from \"./context/LangContext\";\nimport { User } from './models/Models';\nimport { createBrowserHistory } from \"history\";\nimport { snackActions } from \"./utils/SnackbarUtilsConfigurator\";\nimport translations from './assets/json/translations.json';\n\nconst API_URL = process.env.REACT_APP_API_URL;\n\ninterface IRequestConfig {\n method: string;\n body?: string;\n headers: Headers\n}\n\nasync function apiRequest(path: string, method: string, payload: any, autoErrorHandling: boolean, headers: Headers | null): Promise> {\n const sessionId = new User(\n JSON.parse(localStorage.getItem(localStorageKeys.USER) ?? '{}') ?? {}\n ).encodedSessionId;\n const rawLangValue = localStorage.getItem(localStorageKeys.LANGUAGE);\n const lang: ILanguage = rawLangValue === \"en\" ? rawLangValue : \"is\";\n const version = `${versionFile.major}.${versionFile.minor}`;\n var reqConfig: IRequestConfig = {\n method: method,\n headers: headers ? headers : new Headers({\n Accept: \"application/json\",\n \"Content-Type\": \"application/json\",\n Pragma: \"no-cache\",\n Authorization: `Bearer ${sessionId}`,\n \"version\": version,\n }),\n //credentials: \"include\", need to set cors headers on the api side for this to work\n };\n\n if (payload) {\n reqConfig.body = JSON.stringify(payload);\n }\n\n try {\n const res = await fetch(API_URL + path, reqConfig);\n // body is sometimes empty on DELETE responses\n let body;\n try {\n body = await res.json();\n } catch {\n body = {};\n }\n // by default this service will return the error back to the caller.\n // but ifautoErrorhandling is set to true there is no need to handle 401/403/more? errors as this function should be able to handle it\n if (!res.ok) {\n if (res.status === 401 && autoErrorHandling) {\n const history = createBrowserHistory();\n const routesToIgnore = [\"/\", \"/login\"];\n\n if (!routesToIgnore.includes(history.location.pathname)) {\n history.push({\n pathname: \"/login\",\n state: {\n from: history.location,\n },\n });\n history.go(0);\n }\n snackActions.error(translations.status401[lang]);\n } else if (res.status === 403 && autoErrorHandling) {\n const history = createBrowserHistory();\n if (history.location.pathname !== \"/login\") {\n snackActions.error(translations.noAccessGeneric[lang]);\n }\n console.error(\n `Missing privileges ${res.status}: ${body.error?.message}`,\n { body: body }\n );\n return { data: body, isOk: res.ok, statusCode: res.status };\n } else {\n if (autoErrorHandling) {\n let errorMessage = translations.errorOccurred[lang];\n if (body?.errorMessage) {\n errorMessage = errorMessage + \": \" + body?.errorMessage;\n }\n snackActions.error(errorMessage, 5000);\n } \n console.error(\n `Request to backend returned an error ${res.status}: ${body.error?.message}`,\n { body: body }\n );\n //will do a check if the bad request is because the version is too low, otherwise return the bad request\n if (res.status === 400 && body?.error?.includes(\"Version update needed\")) {\n snackActions.warning(translations.versionUpdateNeeded[lang], 100000);\n setTimeout(function () { window.location.reload(); }, 10000);\n }\n return { data: body, isOk: res.ok, statusCode: res.status };\n }\n }\n return { data: body, isOk: res.ok, statusCode: res.status };\n } catch (err) {\n console.error(\"Request to backend failed\", {\n err: err,\n });\n if (autoErrorHandling) {\n snackActions.error(translations.requestToBackendFailed[lang]);\n }\n return {\n data: null, isOk: false, statusCode: 500\n };\n }\n}\n\nexport default {\n // as there are so many components with their own error handling autoErrorHandling must be set to false for now\n get: async (path: string, autoErrorHandling = false) => {\n return apiRequest(path, \"GET\", null, autoErrorHandling, null);\n },\n\n post: async (path: string, payload: any, autoErrorHandling = false) => {\n return apiRequest(path, \"POST\", payload, autoErrorHandling, null);\n },\n\n put: async (path: string, payload: any, autoErrorHandling = false) => {\n return apiRequest(path, \"PUT\", payload, autoErrorHandling, null);\n },\n\n delete: async (path: string, payload: any = null, autoErrorHandling = false) => {\n return apiRequest(path, \"DELETE\", payload, autoErrorHandling, null);\n },\n\n fetch: async (path: string, method: string, payload: any = null) => {\n const version = `${versionFile.major}.${versionFile.minor}`;\n const sessionId = new User(\n JSON.parse(localStorage.getItem(localStorageKeys.USER) ?? '{}') ?? {}\n ).encodedSessionId;\n return await fetch(`${API_URL}${path}`, {\n method: method,\n headers: {\n Authorization: `Bearer ${sessionId}`,\n 'Content-Type': 'application/json',\n Pragma: \"no-cache\",\n \"version\": version,\n },\n body: JSON.stringify(payload),\n });\n },\n\n getBlob: async (path: string) => {\n const sessionId = new User(\n JSON.parse(localStorage.getItem(localStorageKeys.USER) ?? '{}') ?? {} ).encodedSessionId;\n \n const version = `${versionFile.major}.${versionFile.minor}`;\n const headers = new Headers({\n Accept: \"application/json\",\n \"Content-Type\": \"application/json\",\n responseType: \"blob\",\n Pragma: \"no-cache\",\n Authorization: `Bearer ${sessionId}`,\n \"version\": version,\n });\n\n try{\n const res = await fetch(`${API_URL}${path}`, {\n method: 'GET',\n headers: headers\n });\n return res.blob();\n }\n catch(err){\n console.error(\"Request to backend failed\", { err: err });\n }\n }\n};\n\n","// a slimmer version of the httpService that uses the api wrapper in api.ts, will have to wait a bit before we use this as this file contains almost 70 functions that\nimport { User } from \"../models/Models\";\n\nimport { IHttpAnswer } from \"../interfaces/httpAnswer\";\nimport * as versionFile from \"../version.json\";\n\nimport api from \"../api\";\n\nconst API_URL = process.env.REACT_APP_API_URL;\n\nasync function login(mobile: string): Promise> {\n const version = `${versionFile.major}.${versionFile.minor}`;\n const loginRequest = {\n phoneNumber: mobile,\n version: version,\n };\n const response = await fetch(`${API_URL}/Authentication/GetUserAccess`, {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n },\n body: JSON.stringify(loginRequest),\n });\n if (response.ok) {\n const data = await response.json();\n return { data: data, isOk: response.ok, statusCode: response.status };\n }\n const data = await response.json();\n return { data: data, isOk: response.ok, statusCode: response.status };\n}\n\nasync function logout(): Promise> {\n const response = await api.post(\n `/Authentication/InvalidateCurrentSession`,\n null\n );\n return { data: true, isOk: response.isOk, statusCode: response.statusCode };\n}\n\nexport { login, logout };\n","import * as Yup from \"yup\";\nimport * as httpService from \"../services/httpService.v2\";\nimport * as localStorageKeys from \"../constants/localStorageKeys\";\n\nimport { Form, Formik, FormikProps } from \"formik\";\nimport {\n Grid,\n Paper,\n TextField,\n Theme,\n Typography,\n createStyles,\n makeStyles,\n} from \"@material-ui/core\";\nimport React, { useContext, useState } from \"react\";\n\nimport Button from \"./Button\";\nimport { LangContext } from \"../context/LangContext\";\nimport LoadingIndicator from \"./LoadingIndicator\";\nimport { UserContext } from \"../context/UserContext\";\nimport { clearLocalStorage } from \"../utils\";\nimport translations from \"../assets/json/translations.json\";\nimport { useHistory } from \"react-router-dom\";\nimport useNotifier from \"../hooks/useNotifier\";\n\nexport interface IFormValues {\n phoneNumber: string;\n}\n\ntype IFormik = FormikProps;\n\nconst useStyles = makeStyles((theme: Theme) =>\n createStyles({\n root: {\n width: \"100%\",\n height: `calc(100vh - ${theme.dimensions.navbarHeight}px)`,\n display: \"flex\",\n justifyContent: \"center\",\n alignItems: \"center\",\n },\n paper: {\n flex: 1,\n padding: theme.spacing(3),\n margin: theme.spacing(3),\n textAlign: \"center\",\n maxWidth: theme.dimensions.boxWidth,\n },\n typographyTitle: {\n padding: theme.spacing(2),\n [theme.breakpoints.down(\"xs\")]: {\n fontSize: 20,\n },\n },\n tabs: {\n width: \"100%\",\n padding: theme.spacing(1),\n paddingBottom: theme.spacing(2),\n },\n typographyError: {\n color: theme.palette.error.main,\n },\n })\n);\n\nconst loginSchema = Yup.object().shape({\n phoneNumber: Yup.string()\n .matches(/^[0-9]{7}$/)\n .required(),\n});\n\nconst Login: React.FC = () => {\n const [, setUserContext] = useContext(UserContext);\n const [lang] = useContext(LangContext);\n const classes = useStyles();\n const history = useHistory();\n const { notifyError } = useNotifier();\n\n const [showError, setShowError] = useState(false);\n const [loading, setLoading] = useState(false);\n\n if (loading) {\n return (\n
\n \n \n \n {translations.authenticating[lang]}\n \n \n \n \n \n \n
\n );\n }\n\n return (\n
\n \n {renderLoginForm}\n \n
\n );\n\n function renderLoginForm(formik: IFormik) {\n const {\n values,\n errors,\n handleChange,\n handleBlur,\n handleSubmit,\n isSubmitting,\n submitCount,\n } = formik;\n\n return (\n
\n \n \n \n \n {translations.loginWithCertificates[lang]}\n \n \n \n e.target.validity.valid && handleChange(e)}\n onBlur={handleBlur}\n error={!!errors.phoneNumber && !!submitCount}\n />\n \n \n \n \n {showError && (\n \n \n {translations.loginFailed[lang]}\n \n \n )}\n \n \n \n \n
\n );\n }\n\n function onLogin(values: IFormValues) {\n setLoading(true);\n httpService\n .login(values.phoneNumber)\n .then((user: any) => {\n if (user.isOk) {\n setShowError(false);\n const extendedUser = {\n ...user.data,\n };\n setUserContext(extendedUser);\n localStorage.setItem(\n localStorageKeys.USER,\n JSON.stringify(extendedUser)\n );\n\n clearLocalStorage();\n history.push(\"/home\");\n } else {\n notifyError(\n user.data.errorMessage || translations.noCancerAccess[lang]\n );\n setShowError(true);\n setLoading(false);\n }\n })\n .catch((e) => {\n setLoading(false);\n });\n }\n};\n\nexport default Login;\n","import React from 'react';\nimport Layout from '../components/Layout';\nimport Login from '../components/Login';\nimport useNotifier from '../hooks/useNotifier';\n\nconst LoginPage: React.FC = () => {\n const { notifyError } = useNotifier();\n\n if ((window as any).logPrinterError === undefined) {\n (window as any).logPrinterError = notifyError;\n }\n\n return (\n \n \n \n );\n};\nexport default LoginPage;\n","/**\n * CancerScreeningAPI\n * No description provided (generated by Swagger Codegen https://github.com/swagger-api/swagger-codegen)\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\n\nexport class CancerScreeningResultModel {\n id?: number;\n personSsn?: string;\n personName?: string;\n specimenId?: string;\n requestorSsn?: string;\n requestorName?: string;\n requestorNumber?: string;\n createDateTime?: Date;\n screeningStatus?: number;\n examinationDateTime?: Date;\n locationNumber?: string;\n companyOperatorName?: string;\n companyOperatorLocation?: string;\n examinationReason?: number;\n examinationReasonDescription?: string;\n sentDirectlyToSkrin?: boolean;\n examinationNotes?: string;\n otherActiveRequests?: boolean;\n hpvTestCreateDate?: Date;\n pathologyTestCreateDate?: Date;\n hpvTestConclusionDate?: Date;\n pathologyTestConclusionDate?: Date;\n positiveHPVResultCode?: boolean\n\n constructor(i: any) {\n this.id = i.id;\n this.personSsn = i.personSsn;\n this.personName = i.personName;\n this.specimenId = i.specimenId;\n this.requestorSsn = i.requestorSsn;\n this.requestorName = i.requestorName;\n this.requestorNumber = i.requestorNumber;\n this.createDateTime = i.createDateTime;\n this.screeningStatus = i.screeningStatus;\n this.examinationDateTime = i.examinationDateTime;\n this.locationNumber = i.locationNumber;\n this.companyOperatorName = i.companyOperatorName;\n this.companyOperatorLocation = i.companyOperatorLocation;\n this.examinationReason = i.examinationReason;\n this.examinationReasonDescription = i.examinationReasonDescription;\n this.sentDirectlyToSkrin = i.sentDirectlyToSkrin;\n this.examinationNotes = i.examinationNotes;\n this.otherActiveRequests = i.otherActiveRequests;\n this.hpvTestCreateDate = i.hpvTestCreateDate;\n this.pathologyTestCreateDate = i.pathologyTestCreateDate;\n this.hpvTestConclusionDate = i.hpvTestConclusionDate;\n this.pathologyTestConclusionDate = i.pathologyTestConclusionDate;\n this.positiveHPVResultCode = i.positiveHPVResultCode;\n }\n}\n","/**\n * CancerScreeningAPI\n * No description provided (generated by Swagger Codegen https://github.com/swagger-api/swagger-codegen)\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\n\nimport { CancerScreeningResultModel } from \"./cancerScreeningResultModel\";\n\nexport class GetCancerScreeningResultModel {\n\n cancerScreening?: CancerScreeningResultModel;\n\n constructor(i: any) {\n this.cancerScreening = i.cancerScreening\n ? new CancerScreeningResultModel(i.cancerScreening)\n : {};\n }\n}\n\nexport class GetCancerScreeningResultWithQueryModel {\n cancerScreening: CancerScreeningResultModel;\n hpvTestResult?: HpvTestResult;\n pathologyTestResult?: PathologyTestResult;\n\n constructor(i: any) {\n this.cancerScreening = i.cancerScreeningWithResults\n ? new CancerScreeningResultModel(i.cancerScreeningWithResults)\n : {};\n this.hpvTestResult = i?.cancerScreeningWithResults?.hpvTestResult\n ? new HpvTestResult(\n i.cancerScreeningWithResults.hpvTestResult,\n i.cancerScreeningWithResults?.hpvTestCreateDate,\n i.cancerScreeningWithResults?.hpvTestRequestedByName\n )\n : i?.cancerScreeningWithResults?.hpvTestCreateDate\n ? new HpvTestResult(undefined, i.cancerScreeningWithResults?.hpvTestCreateDate, i.cancerScreeningWithResults?.hpvTestRequestedByName) : undefined;\n this.pathologyTestResult = i?.cancerScreeningWithResults\n ?.pathologyTestResult\n ? new PathologyTestResult(\n i.cancerScreeningWithResults.pathologyTestResult,\n i.cancerScreeningWithResults?.pathologyTestCreateDate,\n i.cancerScreeningWithResults?.pathologyTestRequestedByName\n )\n : i?.cancerScreeningWithResults?.pathologyTestCreateDate\n ? new PathologyTestResult(undefined, i.cancerScreeningWithResults?.pathologyTestCreateDate, i.cancerScreeningWithResults?.pathologyTestRequestedByName) : undefined;;\n }\n}\n\nexport class HpvTestResult {\n createdDate?: string;\n hpvTestRequestedByName: string;\n conclusionNote: string;\n conclusionDate?: string;\n specimenArrivalDate?: string;\n codes?: HpvTestResultCode[];\n\n constructor(i: any, createdDate: string | undefined, hpvTestRequestedByName: string | undefined) {\n this.createdDate = createdDate;\n this.hpvTestRequestedByName = hpvTestRequestedByName ?? \"\";\n this.conclusionNote = i?.conclusionNote ? i.conclusionNote : \"\";\n this.conclusionDate = i?.conclusionDate ? i.conclusionDate : undefined;\n this.specimenArrivalDate = i?.specimenArrivalDate\n ? i.specimenArrivalDate\n : undefined;\n this.codes = i?.codes\n ? i.codes.map((item: any) => new HpvTestResultCode(item))\n : undefined;\n }\n}\n\nexport class PathologyTestResult {\n createdDate?: string;\n pathologyTestRequestedByName: string;\n conclusionNote: string;\n conclusionDate?: string;\n specimenArrivalDate?: string;\n details?: PathologyTestResultDetails[];\n\n constructor(i: any, createdDate: string | undefined, pathologyTestRequestedByName: string | undefined) {\n this.createdDate = createdDate;\n this.pathologyTestRequestedByName = pathologyTestRequestedByName ?? \"\";\n this.conclusionNote = i?.conclusionNote ? i.conclusionNote : \"\";\n this.conclusionDate = i?.conclusionDate ? i.conclusionDate : undefined;\n this.specimenArrivalDate = i?.specimenArrivalDate\n ? i.specimenArrivalDate\n : undefined;\n this.details = i?.details\n ? i.details.map((item: any) => new PathologyTestResultDetails(item))\n : undefined;\n }\n}\n\nexport class HpvTestResultCode {\n code: string;\n status: string;\n\n constructor(i: any) {\n this.code = i?.code ? i.code : \"\";\n this.status = i?.status ? i.status : \"\";\n }\n}\n\nexport class PathologyTestResultDetails {\n code: string;\n description: string;\n\n constructor(i: any) {\n this.code = i?.code ? i.code : \"\";\n this.description = i?.description ? i.description : \"\";\n }\n}\n","/**\n * CancerScreeningAPI\n * No description provided (generated by Swagger Codegen https://github.com/swagger-api/swagger-codegen)\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\n\nexport class CreateCancerScreeningAnalysisResultModel {\n specimenId?: string;\n\n constructor(i: any) {\n this.specimenId = i?.specimenId ? i.specimenId : null;\n }\n}\n","export class GetCancerScreeningInfoModel {\n patientCancerScreeningInfo?: PatientCancerScreeningInfo;\n\n constructor(i: any) {\n this.patientCancerScreeningInfo = i.patientCancerScreeningInfo\n ? new PatientCancerScreeningInfo(i.patientCancerScreeningInfo)\n : undefined;\n }\n}\n\nexport class PatientCancerScreeningInfo {\n age?: string;\n address?: string;\n ssn?: string;\n visits?: PatientVisits[];\n status?: PatientStatus[];\n constructor(i: any) {\n this.age = i.age ? i.age : undefined;\n this.address = i.address ? i.address : undefined;\n this.ssn = i.ssn ? i.ssn : undefined;\n this.visits = i.visits\n ? i.visits.map((item: any) => new PatientVisits(item))\n : undefined;\n this.status = i.status\n ? [\n new PatientStatus(\n \"Dag. síðustu komu\",\n i.status?.komuDagur,\n i.status?.komuDagurBrj\n ),\n new PatientStatus(\n \"Boðunartíðni\",\n i.status?.bodunarTidni,\n i.status?.bodunarTidniBrj\n ),\n new PatientStatus(\n \"Eftirlit\",\n i.status?.eftirlit,\n i.status?.eftirlitBrj\n ),\n ]\n : undefined;\n }\n}\n\nexport class PatientVisits {\n date?: string;\n resultHtml: string;\n type: string;\n constructor(i: any) {\n this.date = i.date ? i.date : undefined;\n this.resultHtml = i.resultHtml ? i.resultHtml : \"\";\n this.type = i.type ? i.type : \"\";\n }\n}\n\nexport class PatientStatus {\n translationKey: string;\n cervix: string;\n breast: string;\n constructor(title: string, cervix?: string, breast?: string) {\n this.translationKey = title;\n this.cervix = cervix || \"\";\n this.breast = breast || \"\";\n }\n}\n","/**\n * CancerScreeningAPI\n * No description provided (generated by Swagger Codegen https://github.com/swagger-api/swagger-codegen)\n *\n * OpenAPI spec version: v1\n * \n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\nimport { CancerScreeningResultModel } from './cancerScreeningResultModel';\n\nexport class GetCancerScreeningsResultModel { \n cancerScreenings?: Array;\n\n constructor(i: any) {\n this.cancerScreenings =\n i.cancerScreenings && i.cancerScreenings.length > 0\n ? i.cancerScreenings.map((cancerScreening: any) => new CancerScreeningResultModel(cancerScreening))\n : [];\n }\n}","import {\n GetCancerScreeningResultModel,\n GetCancerScreeningResultWithQueryModel,\n} from \"../models/getCancerScreeningResultModel\";\n\nimport { CreateCancerScreeningAnalysisResultModel } from \"../models/createAnalysisRequest\";\nimport { GetCancerScreeningInfoModel } from \"../models/getCancerScreeningInfoModel\";\nimport { GetCancerScreeningsModel } from \"../models/getCancerScreeningsModel\";\nimport { GetCancerScreeningsResultModel } from \"../models/getCancerScreeningsResultModel\";\nimport { IGetCancerScreeningInfo } from \"../interfaces/cancerScreeningRequest\";\nimport { IHttpAnswer } from \"../interfaces/httpAnswer\";\nimport api from \"../api\";\n\n/* eslint-disable */\n\n/* eslint-enable */\nexport async function getCancerScreenings(\n getCancerScreeningsModel: GetCancerScreeningsModel\n): Promise> {\n const res = await api.post(\n `/CancerScreening/CancerScreeningsQuery`,\n getCancerScreeningsModel,\n true\n );\n return {\n data: new GetCancerScreeningsResultModel(res.data),\n isOk: res.isOk,\n statusCode: res.statusCode,\n };\n}\n\nexport async function getCancerScreening(\n id: string\n): Promise> {\n const res = await api.get(\n `/CancerScreening/CancerScreeningQuery/${id}`,\n true\n );\n return {\n data: new GetCancerScreeningResultModel(res.data),\n isOk: res.isOk,\n statusCode: res.statusCode,\n };\n}\n\nexport async function getCancerScreeningWithQuery(\n id: string\n): Promise> {\n const res = await api.get(\n `/CancerScreening/CancerScreeningWithResultsQuery/${id}`,\n true\n );\n return {\n data: new GetCancerScreeningResultWithQueryModel(res.data),\n isOk: res.isOk,\n statusCode: res.statusCode,\n };\n}\n\nexport async function cancelCancerScreening(\n id: number,\n userSsn: string\n): Promise> {\n const res = await api.delete(\n `/CancerScreening/CancelCancerScreening`,\n { id, userSsn },\n true\n );\n return {\n data: undefined,\n isOk: res.isOk,\n statusCode: res.statusCode,\n };\n}\n\nexport async function completeCancerScreening(\n id: number,\n userSsn: string\n): Promise> {\n const res = await api.post(\n `/CancerScreening/CompleteCancerScreening`,\n { id, userSsn },\n true\n );\n return {\n data: undefined,\n isOk: res.isOk,\n statusCode: res.statusCode,\n };\n}\n\nexport async function createAnalysisRequest(\n id: number,\n userSsn: string,\n userName: string,\n originalUserSsn: string,\n analysisType: number\n): Promise> {\n const res = await api.post(\n `/CancerScreening/CreateCancerScreeningAnalysis`,\n { id, userSsn, userName, originalUserSsn, screeningLabStatus: analysisType },\n true\n );\n return {\n data: new CreateCancerScreeningAnalysisResultModel(res.data),\n isOk: res.isOk,\n statusCode: res.statusCode,\n };\n}\n\nexport async function resendAnalysisRequest(\n id: number,\n userSsn: string,\n userName: string,\n originalUserSsn: string,\n analysisType: number\n): Promise> {\n const res = await api.post(\n `/CancerScreening/ResendCancerScreeningAnalysis`,\n { id, userSsn, userName, originalUserSsn, screeningLabStatus: analysisType },\n true\n );\n return {\n data: new CreateCancerScreeningAnalysisResultModel(res.data),\n isOk: res.isOk,\n statusCode: res.statusCode,\n };\n}\n\nexport async function removeCancerScreeningTests(\n id: number,\n userSsn: string,\n): Promise> {\n const res = await api.post(\n `/CancerScreening/RemoveCancerScreeningTests`,\n { id, userSsn },\n true\n );\n return {\n data: undefined,\n isOk: res.isOk,\n statusCode: res.statusCode,\n };\n}\n\nexport async function getCancerScreeningInfo(\n payLoad: IGetCancerScreeningInfo\n): Promise> {\n const res = await api.post(\n `/CancerScreening/GetCancerScreeningInfo`,\n payLoad,\n true\n );\n return {\n data: new GetCancerScreeningInfoModel(res.data),\n isOk: res.isOk,\n statusCode: res.statusCode,\n };\n}\n\nexport async function changeCancerScreeningStatus(\n id: number,\n userSsn: string,\n newStatus: number\n): Promise> {\n const res = await api.post(\n `/CancerScreening/ChangeCancerScreeningStatus`,\n { id, userSsn, newStatus },\n true\n );\n return {\n data: undefined,\n isOk: res.isOk,\n statusCode: res.statusCode,\n };\n}\n","import {\n FormControlLabel,\n Grid,\n Paper,\n Radio,\n makeStyles,\n useMediaQuery,\n useTheme,\n} from \"@material-ui/core\";\nimport React, { useContext, useState } from \"react\";\n\nimport Alert from \"@material-ui/lab/Alert\";\nimport Button from \"../Button\";\nimport { CancerScreeningResultModel } from \"../../models/cancerScreeningResultModel\";\nimport ConfirmDialog from \"../ConfirmDialog\";\nimport { LangContext } from \"../../context/LangContext\";\nimport ScreeningRequestDetail from \"./ScreeningRequestDetail\";\nimport { UserContext } from \"../../context/UserContext\";\nimport translations from \"../../assets/json/translations.json\";\nimport { useHistory } from \"react-router-dom\";\n\nenum AnalysisTypeEnum {\n Pathology = 0,\n HPV = 1,\n Both = 2,\n}\n\ninterface IProps {\n screeningRequest: CancerScreeningResultModel;\n cancelCancerScreeningInParent: (id: number, userSsn: string) => Promise;\n createAnalysisRequestInParent: (\n id: number,\n userSsn: string,\n userName: string,\n originalUserSsn: string,\n analysisType: number\n ) => Promise;\n}\n\nconst useStyles = makeStyles((theme) => ({\n container: {\n padding: theme.spacing(3),\n paddingBottom: theme.spacing(5),\n },\n}));\n\nconst NewScreeningRequestDetails: React.FC = ({\n screeningRequest,\n cancelCancerScreeningInParent,\n createAnalysisRequestInParent,\n}) => {\n const classes = useStyles();\n const [lang] = useContext(LangContext);\n const history = useHistory();\n const theme = useTheme();\n\n const [openDeleteRequestDialog, setOpenDeleteRequestDialog] = useState(false);\n const [openCreateTestRequestDialog, setOpenCreateTestRequestDialog] =\n useState(false);\n const [infoLoading, setInfoLoading] = useState(false);\n\n const [analysisType, setAnalysisType] = useState(null);\n const [user] = useContext(UserContext);\n const xsDown = useMediaQuery(theme.breakpoints.down(\"xs\"));\n\n return (\n \n \n \n \n \n \n {renderAlert()}\n \n \n {renderButtons()}\n \n \n {renderDialogs()}\n \n );\n\n function renderButtons() {\n return (\n \n \n setOpenCreateTestRequestDialog(true)}\n variant=\"contained\"\n >\n {translations.createTestRequest[lang]}\n \n \n \n setOpenDeleteRequestDialog(true)}\n color=\"secondary\"\n >\n {translations.deleteScreeningRequest[lang]}\n \n \n \n history.push(\"/new-screening-requests\")}\n variant=\"outlined\"\n >\n {translations.back[lang]}\n \n \n \n );\n }\n\n function renderDialogs() {\n return (\n <>\n clearDialogs()}\n onConfirm={() =>\n screeningRequest.id &&\n user.ssn &&\n analysisType !== null &&\n createAnalysisRequest(screeningRequest.id, user.ssn, user.name, screeningRequest.requestorSsn ?? user.ssn, analysisType)\n }\n confirmText={translations.create[lang]}\n text={translations.analysisType[lang]}\n disableConfirm={analysisType === null}\n loading={infoLoading}\n >\n {getCreateTestRequestDialogContent()}\n \n\n clearDialogs()}\n onConfirm={() =>\n screeningRequest.id &&\n user.ssn &&\n cancelCancerScreening(screeningRequest.id, user.ssn)\n }\n confirmText={translations.delete[lang]}\n text={translations.deleteScreeningRequestText[lang]}\n >\n \n );\n }\n\n function getCreateTestRequestDialogContent() {\n return (\n \n \n setAnalysisType(AnalysisTypeEnum.HPV)}\n control={\n \n }\n />\n \n \n setAnalysisType(AnalysisTypeEnum.Pathology)}\n control={\n \n }\n />\n \n \n setAnalysisType(AnalysisTypeEnum.Both)}\n control={\n \n }\n />\n \n \n );\n }\n\n function renderAlert() {\n if (screeningRequest.otherActiveRequests) {\n return (\n \n Það eru til fleiri virkar skimunarbeiðnir fyrir þennan einstakling\n \n );\n }\n }\n\n async function cancelCancerScreening(id: number, userSsn: string) {\n await cancelCancerScreeningInParent(id, userSsn);\n clearDialogs();\n }\n\n async function createAnalysisRequest(\n id: number,\n userSsn: string,\n userName: string,\n originalUserSsn: string,\n analysisType: number\n ) {\n setInfoLoading(true);\n await createAnalysisRequestInParent(id, userSsn, userName, originalUserSsn, analysisType);\n setInfoLoading(false);\n clearDialogs();\n }\n\n function clearDialogs() {\n setOpenCreateTestRequestDialog(false);\n setOpenDeleteRequestDialog(false);\n\n setAnalysisType(null);\n }\n};\n\nexport default NewScreeningRequestDetails;\n","import { borderControlStatus } from './enums';\n\nexport const DEFAULT_PALETTE_PRIMARY = '#4B6CC6';\nexport const DEFAULT_PALETTE_SECONDARY = '#b3d0ff';\nexport const DATE_FORMAT = 'DD.MM.YYYY';\nexport const TIME_FORMAT = 'HH:mm';\nexport const DATE_AND_TIME_FORMAT = 'DD.MM.YYYY - HH:mm';\nexport const TABLE_ROWS_OPTIONS = [10, 25, 50, 100];\nexport const TABLE_ROWS_DEFAULT = 100;\n\nexport const LOCATION_OPTIONS = [\n { label: 'Keflavík', value: 'KEF', id: '1' },\n { label: 'Reykjavík', value: 'REY', id: '2' },\n { label: 'Akureyri', value: 'AEY', id: '3' },\n { label: 'Egilsstaðir', value: 'EGI', id: '4' },\n { label: 'Seyðisfjörður', value: 'SEY', id: '5' },\n { label: 'Ísafjörður', value: 'ÍSA', id: '6' },\n { label: 'Vestmannaeyjar', value: 'VES', id: '7' },\n { label: 'Selfoss', value: 'SEL', id: '8' },\n { label: 'Stykkishólmur', value: 'STY', id: '9' },\n { label: 'Borgarnes', value: 'BOR', id: '10' },\n { label: 'Orkuhúsið', value: 'ORK', id: '11' },\n { label: 'Suðurnes', value: 'SUÐ', id: '12' },\n { label: 'Höfn', value: 'HÖF', id: '13' },\n { label: 'Akranes', value: 'AKR', id: '14' },\n];\n\nexport const TEST_LOCATIONS: {\n key: string;\n translationKey: string;\n}[] = [\n { key: '2', translationKey: 'Suðurlandsbraut' },\n { key: '3', translationKey: 'Akureyri' },\n { key: '4', translationKey: 'Suðurnes' },\n { key: '5', translationKey: 'Ísafjörður' },\n { key: '6', translationKey: 'Patreksfjörður' },\n { key: '7', translationKey: 'Selfoss' },\n { key: '8', translationKey: 'Höfn' },\n { key: '9', translationKey: 'Vestmannaeyjar' },\n { key: '10', translationKey: 'Akranes' },\n { key: '11', translationKey: 'Borgarnes' },\n { key: '12', translationKey: 'Sauðárkrókur' },\n { key: '13', translationKey: 'Húsavík' },\n { key: '15', translationKey: 'Austurland' },\n { key: '18', translationKey: 'Flúðir' },\n { key: '19', translationKey: 'Landspítalinn' },\n];\n\nexport const SEXES: {\n key: string;\n translationKey: 'male' | 'female' | 'other';\n}[] = [\n { key: 'male', translationKey: 'male' },\n { key: 'female', translationKey: 'female' },\n { key: 'other', translationKey: 'other' },\n];\n\nexport const PRIORITY: {\n key: string;\n value: string;\n}[] = [\n { key: '1', value: 'Starfsfólk bráðamóttöku og gjörgæslu' },\n {\n key: '2',\n value:\n 'Starfsfólk covid deilda sjúkrahúsa, starfsfólk í sýnatöku, og starfsfólk hjúkrunar- og dvalarheimila',\n },\n { key: '3', value: 'Einstaklingar á hjúkrunarheimilum' },\n {\n key: '4',\n value:\n 'Sjúkraflutningamenn, útkallslögregla, slökkviliðið, landhelgisgæsla og fangaverðir',\n },\n { key: '5', value: 'Allir heilbrigðisstarfsmenn sem sinna klínísku starfi' },\n { key: '6', value: 'Almenningur > 60 ára' },\n { key: '7', value: 'Einstaklingar með undirliggjandi sjúkdóm' },\n {\n key: '8',\n value:\n 'Starfsmenn leik-, grunn- og framhaldsskóla + starfsmenn félag- og velferðarþjonustu.',\n },\n { key: '9', value: 'Einstaklingar í viðkvæmri félagslegri stöðu' },\n { key: '10', value: 'Allur almenningur' },\n];\n\nexport const GROUP_COLUMNS: {\n key: string;\n translationKey: 'kennitala' | 'name' | 'phoneNumber' | 'foundInNatReg';\n}[] = [\n { key: 'ssn', translationKey: 'kennitala' },\n { key: 'name', translationKey: 'name' },\n { key: 'phoneNumber', translationKey: 'phoneNumber' },\n { key: 'verified', translationKey: 'foundInNatReg' },\n];\n\nexport const PASSENGER_STATUSES: {\n key: string;\n translationKey:\n | 'pcrTest'\n | 'quarantine'\n | 'certificate'\n | 'transit'\n | 'symptomSampling'\n | '5daysPcrTest';\n translationDialogKey:\n | 'registerPassengerInPcr'\n | 'registerPassengerInQuarantine'\n | 'registerPassengerInCertificate'\n | 'registerPassengerInTransit'\n | 'registerPassengerInSymptomSampling'\n | 'registerPassengerIn5daysPcr';\n}[] = [\n {\n key: borderControlStatus.REGISTERED_FOR_SAMPLING.toString(),\n translationKey: 'pcrTest',\n translationDialogKey: 'registerPassengerInPcr',\n },\n {\n key: borderControlStatus.REGISTERED_IN_QUARANTINE.toString(),\n translationKey: 'quarantine',\n translationDialogKey: 'registerPassengerInQuarantine',\n },\n {\n key: borderControlStatus.REGISTERED_WITH_CERTIFICATE.toString(),\n translationKey: 'certificate',\n translationDialogKey: 'registerPassengerInCertificate',\n },\n {\n key: borderControlStatus.REGISTERED_TO_TRANSIT.toString(),\n translationKey: 'transit',\n translationDialogKey: 'registerPassengerInTransit',\n },\n {\n key: borderControlStatus.REGISTERED_FOR_SYMPTOM_SAMPLING.toString(),\n translationKey: 'symptomSampling',\n translationDialogKey: 'registerPassengerInSymptomSampling',\n },\n {\n key: borderControlStatus.REGISTERED_FOR_5DAYS_SAMPLING.toString(),\n translationKey: '5daysPcrTest',\n translationDialogKey: 'registerPassengerIn5daysPcr',\n },\n];\n\nexport const OTHER_COMMENT_STATUS_ID = 'other';\nexport const OTHER_COMMENT_STATUS_TEXT = 'Annað';\n\nexport const RISK_COUNTRIES_LIST_ITEM_HEIGHT = 48;\nexport const RISK_COUNTRIES_LIST_HEIGHT = 415;\n","import createMuiTheme from '@material-ui/core/styles/createMuiTheme';\nimport {\n DEFAULT_PALETTE_PRIMARY,\n DEFAULT_PALETTE_SECONDARY,\n} from './constants';\n\ndeclare module '@material-ui/core/styles/createMuiTheme' {\n interface Theme {\n dimensions: {\n maxContentWidth: number;\n navbarHeight: number;\n boxWidth: number;\n };\n customPalette: {\n dark: string;\n };\n }\n interface ThemeOptions {\n dimensions?: {\n maxContentWidth: number;\n navbarHeight: number;\n boxWidth: number;\n };\n customPalette: {\n dark: string;\n };\n }\n}\n\nconst defaultPalette = {\n primary: {\n main: DEFAULT_PALETTE_PRIMARY,\n },\n secondary: {\n main: DEFAULT_PALETTE_SECONDARY,\n },\n background: {\n default: '#f4f4f7',\n },\n text: {\n primary: '#212121',\n secondary: '#616161',\n },\n};\n\nconst defaultTheme = createMuiTheme();\n\nexport default createMuiTheme({\n palette: {\n ...defaultPalette,\n },\n customPalette: {\n dark: '#263343',\n },\n typography: {\n fontFamily: ['Helvetica'].join(','),\n h1: {\n fontSize: 45,\n fontWeight: 400,\n color: defaultPalette.text.primary,\n [defaultTheme.breakpoints.down('xs')]: {\n fontSize: 35,\n },\n },\n h2: {\n fontSize: 45,\n color: defaultPalette.text.primary,\n },\n h3: {\n fontSize: 40,\n color: defaultPalette.text.primary,\n },\n h4: {\n fontSize: 35,\n color: defaultPalette.text.primary,\n [defaultTheme.breakpoints.down('xs')]: {\n fontSize: 25,\n },\n },\n h5: {\n color: defaultPalette.text.primary,\n },\n h6: {\n color: defaultPalette.text.primary,\n },\n },\n dimensions: {\n maxContentWidth: 1440,\n navbarHeight: 64,\n boxWidth: 444,\n },\n\n /* overrides: {\n MuiStepIcon: {\n root: {\n '&$completed': {\n color: defaultTheme.palette.success.main,\n },\n },\n active: {},\n completed: {},\n },\n }, */\n});\n","import { DATE_FORMAT } from \"../../constants\";\nimport {\n Paper,\n Table,\n TableBody,\n TableCell,\n TableContainer,\n TableHead,\n TableRow,\n makeStyles,\n Typography,\n Grid,\n} from \"@material-ui/core\";\nimport React, { useContext } from \"react\";\n\nimport { LangContext } from \"../../context/LangContext\";\n\nimport moment from \"moment\";\nimport translations from \"../../assets/json/translations.json\";\nimport { PatientCancerScreeningInfo } from \"../../models/getCancerScreeningInfoModel\";\nimport theme from \"../../theme\";\n\ninterface IProps {\n patientInfo: PatientCancerScreeningInfo;\n}\n\nconst useStyles = makeStyles((theme) => ({\n container: {\n padding: theme.spacing(3),\n\n marginTop: theme.spacing(2),\n \"& th\": {\n fontWeight: 600,\n fontSize: 15,\n },\n \"& td\": {\n color: theme.palette.text.secondary,\n fontSize: 15,\n },\n },\n testContainer: {\n \"& th\": {\n fontWeight: 600,\n fontSize: 12,\n padding: 2,\n },\n \"& td\": {\n color: theme.palette.text.secondary,\n fontSize: 12,\n padding: 2,\n },\n },\n}));\n\nconst CancerScreeningInfo: React.FC = ({ patientInfo }) => {\n const classes = useStyles({});\n const [lang] = useContext(LangContext);\n\n return (\n \n \n \n Komusaga\n \n \n \n \n \n \n \n Legháls\n Brjóst\n \n \n \n {patientInfo.status?.map((item, index) => (\n \n \n {item.translationKey}\n \n {item.cervix}\n {item.breast}\n \n ))}\n \n
\n
\n
\n \n\n {patientInfo.visits?.length ? (\n \n \n \n \n {translations.day[lang]}\n {translations.type[lang]}\n {translations.result[lang]}\n \n \n \n {patientInfo.visits.map((info, index) => (\n \n \n {info.date && moment(info.date).format(DATE_FORMAT)}\n \n {info.type}\n {info.resultHtml}\n \n ))}\n \n
\n
\n ) : (\n \n {translations.noDataFound[lang]}\n \n )}\n
\n );\n};\n\nexport default CancerScreeningInfo;\n","import moment from \"moment\";\nimport { DATE_FORMAT } from \"../constants\";\nimport { POSResponse } from \"../interfaces/posResponse\";\nimport { CancerScreeningResultModel } from \"../models/cancerScreeningResultModel\";\n\nexport class CefSharpShell {\n protected CefSharp: any;\n public isShellMode: boolean;\n\n constructor() {\n this.CefSharp = (window as any).CefSharp;\n if (process.env.REACT_APP_POS_CONNECTED === \"true\") {\n this.CefSharp = {\n PostMessage: function (obj: any) {\n obj.Callback({ success: true, statusText: \"OK\" });\n },\n };\n }\n this.isShellMode = this.CefSharp !== undefined;\n }\n\n checkPosConnection(\n successCallback: (isConnected: boolean) => void,\n failCallback: (errorText: string) => void\n ) {\n if (this.isShellMode) {\n this.CefSharp.PostMessage({\n Type: \"PosCheckConnection\",\n Callback: (reply: POSResponse) => {\n if (!reply.success) {\n failCallback(reply.statusText);\n }\n successCallback(reply.success);\n },\n });\n }\n }\n\n isPOSConfigured(successCallback: (shouldHavePos: boolean) => void) {\n if (this.isShellMode) {\n this.CefSharp.PostMessage({\n Type: \"PosCheckConfigured\",\n Callback: (reply: POSResponse) => {\n if (reply.success) {\n successCallback(true);\n }\n },\n });\n }\n }\n\n chargeCard(\n amount: number,\n successCallback: (reply: POSResponse) => void,\n failCallback: (statusText: string) => void\n ) {\n if (this.isShellMode) {\n this.CefSharp.PostMessage({\n Type: \"Purchase\",\n Amount: amount,\n Callback: (reply: POSResponse) => {\n if (!reply.success) {\n failCallback(reply.statusText);\n } else {\n successCallback(reply);\n }\n },\n });\n }\n }\n\n printBarcode(barcode: string) {\n if (this.isShellMode) {\n this.CefSharp.PostMessage({\n Type: \"PrintLabel\",\n LabelBarcode: barcode,\n Callback: () => {},\n });\n }\n }\n\n sendPOSBatch(\n successCallBack: (reply: POSResponse) => void,\n failCallback: (reply: POSResponse) => void\n ) {\n if (this.isShellMode) {\n this.CefSharp.PostMessage({\n Type: \"PosSendBatch\",\n Callback: (reply: POSResponse) => {\n if (reply.success) {\n successCallBack(reply);\n } else {\n failCallback(reply);\n }\n },\n });\n }\n }\n\n printTemplateLabel(patient: CancerScreeningResultModel, barcode: string) {\n if (this.isShellMode) {\n this.CefSharp.PostMessage({\n Type: \"PrintTemplateLabel\",\n LabelDocumentName: \"documentName\",\n LabelTemplateParameters: {\n name: patient?.personName || \"\",\n nationalId: patient?.personSsn || \"\",\n samplingDate: patient?.examinationDateTime\n ? moment(patient.examinationDateTime).format(DATE_FORMAT)\n : \"\",\n barcode: barcode,\n institutionId: patient?.locationNumber || \"\",\n doctorId: patient?.requestorNumber || \"\",\n },\n Callback: () => {},\n });\n }\n }\n}\n","import {\n CircularProgress,\n Dialog,\n DialogActions,\n DialogContent,\n DialogContentText,\n DialogTitle,\n Grid,\n useTheme,\n} from '@material-ui/core';\nimport React, { useContext, useEffect, useState } from 'react';\n\nimport Button from './Button';\nimport ErrorIcon from '@material-ui/icons/Warning';\nimport { LangContext } from '../context/LangContext';\nimport translations from '../assets/json/translations.json';\n\ninterface IProps {\n open: boolean;\n title: string;\n text?: string;\n confirmText?: string;\n cancelText?: string;\n loading?: boolean;\n disableConfirm?: boolean;\n error?: boolean;\n leftButtonText?: string;\n leftButtonColor?: 'primary' | 'secondary' | 'error';\n extraButtonText?: string;\n maxWidth?: 'lg' | 'md' | 'sm' | 'xl' | 'xs';\n onConfirm?: () => void;\n onCancel: () => void;\n onLeftButtonClick?: () => void;\n onExtraButtonClick?: () => void;\n}\n\nconst ConfirmDialog: React.FC = ({\n open,\n title,\n text,\n children,\n confirmText,\n cancelText,\n loading,\n error,\n leftButtonText,\n leftButtonColor = 'primary',\n extraButtonText,\n maxWidth = 'sm',\n onConfirm,\n onCancel,\n onLeftButtonClick,\n onExtraButtonClick,\n ...props\n}) => {\n const [lang] = useContext(LangContext);\n const theme = useTheme();\n const [disableConfirm, setDisableConfirm] = useState(false);\n\n useEffect(() => {\n if (!open) {\n setDisableConfirm(false);\n }\n }, [open]);\n\n return (\n disableConfirm && setDisableConfirm(false)}\n >\n \n \n {error ? (\n \n ) : null}\n \n {title}\n \n \n \n \n {text && {text}}\n {children}\n \n {renderButtons()}\n \n );\n\n function renderButtons() {\n return (\n \n {onLeftButtonClick && leftButtonText && (\n \n \n {leftButtonText}\n \n \n )}\n \n \n {loading && (\n \n \n \n )}\n {onConfirm && (\n \n \n {confirmText || translations.confirm[lang]}\n \n \n )}\n {onExtraButtonClick && extraButtonText && (\n \n \n {extraButtonText}\n \n \n )}\n \n \n {cancelText || translations.cancel[lang]}\n \n \n \n \n \n );\n }\n\n function confirm() {\n if (onConfirm) {\n setDisableConfirm(true);\n onConfirm();\n }\n }\n\n function close() {\n onCancel();\n setDisableConfirm(false);\n }\n};\n\nexport default ConfirmDialog;\n","import {\n Grid,\n Typography,\n makeStyles,\n useMediaQuery,\n useTheme,\n} from \"@material-ui/core\";\nimport React, { useContext } from \"react\";\nimport { formatSsn, getAgeInYearsFromSsnAtDate, getScreeningStatusText } from \"../../utils\";\n\nimport { CancerScreeningResultModel } from \"../../models/cancerScreeningResultModel\";\nimport { DATE_FORMAT } from '../../constants';\nimport { ICancerScreeningRequestDetails } from \"../../interfaces/cancerScreeningRequest\";\nimport { LangContext } from \"../../context/LangContext\";\nimport moment from \"moment\";\nimport translations from \"../../assets/json/translations.json\";\n\ninterface IProps {\n screeningRequest: CancerScreeningResultModel;\n}\n\nconst useStyles = makeStyles((theme) => ({\n container: {\n padding: theme.spacing(3),\n paddingBottom: theme.spacing(5),\n },\n descriptionTitle: {\n fontWeight: \"bold\",\n marginRight: theme.spacing(1),\n },\n descriptionDetails: {\n color: theme.palette.text.secondary,\n },\n}));\n\nconst ScreeningRequestDetail: React.FC = ({\n screeningRequest\n}) => {\n const classes = useStyles({});\n const theme = useTheme();\n const xsDown = useMediaQuery(theme.breakpoints.down(\"xs\"));\n const [lang] = useContext(LangContext);\n\n const screeningRequestDetails: ICancerScreeningRequestDetails[] = \n [\n {\n label: translations.name[lang],\n getVal: (screeningRequest: CancerScreeningResultModel) =>\n screeningRequest.personName,\n },\n {\n label: translations.SSN[lang],\n getVal: (screeningRequest: CancerScreeningResultModel) =>\n formatSsn(screeningRequest.personSsn),\n },\n {\n label: translations.age[lang],\n getVal: (screeningRequest: CancerScreeningResultModel) =>\n getAgeInYearsFromSsnAtDate(screeningRequest.personSsn, screeningRequest.examinationDateTime, lang),\n },\n {\n label: translations.examinationDate[lang],\n getVal: (screeningRequest: CancerScreeningResultModel) =>\n screeningRequest.examinationDateTime\n ? moment(screeningRequest.examinationDateTime).format(DATE_FORMAT)\n : translations.notRegistered[lang],\n },\n {\n label: translations.category[lang],\n getVal: (screeningRequest: CancerScreeningResultModel) =>\n screeningRequest.examinationReasonDescription\n ? screeningRequest.examinationReasonDescription.toString()\n : undefined,\n },\n {\n label: translations.specimenId[lang],\n getVal: (screeningRequest: CancerScreeningResultModel) =>\n screeningRequest.specimenId\n ? screeningRequest.specimenId.toString()\n : undefined,\n },\n {\n label: translations.status[lang],\n getVal: (screeningRequest: CancerScreeningResultModel) =>\n screeningRequest.screeningStatus !== undefined\n ? getScreeningStatusText(screeningRequest.screeningStatus, lang)\n : undefined,\n },\n {\n label: translations.registeredBy[lang],\n getVal: (screeningRequest: CancerScreeningResultModel) =>\n screeningRequest.requestorName,\n },\n {\n label: translations.registrationDate[lang],\n getVal: (screeningRequest: CancerScreeningResultModel) =>\n screeningRequest.createDateTime\n ? moment(screeningRequest.createDateTime).format(DATE_FORMAT)\n : translations.notRegistered[lang],\n },\n {\n label: translations.companyOperator[lang],\n render: (screeningRequest: CancerScreeningResultModel) => (\n <>\n \n {screeningRequest.locationNumber}\n \n \n {screeningRequest.companyOperatorName}\n \n \n {screeningRequest.companyOperatorLocation}\n \n ),\n },\n {\n label: translations.comment[lang],\n getVal: (screeningRequest: CancerScreeningResultModel) =>\n screeningRequest.examinationNotes,\n },\n ];\n\n return (\n \n \n \n {screeningRequestDetails.slice(0, 3).map((item, index) => (\n \n {renderInfoItem(item)}\n \n ))}\n \n \n \n \n {screeningRequestDetails.slice(3, 7).map((item, index) => (\n \n {renderInfoItem(item)}\n \n ))}\n \n \n \n \n {screeningRequestDetails.slice(7, 10).map((item, index) => (\n \n {renderInfoItem(item)}\n \n ))}\n \n \n \n \n {screeningRequestDetails.slice(10).map((item, index) => (\n \n {renderInfoItem(item)}\n \n ))}\n \n \n \n );\n\n function renderInfoItem({\n label,\n getVal = () => \"\",\n render,\n hide,\n }: ICancerScreeningRequestDetails) {\n if (hide && hide(screeningRequest)) {\n return null;\n }\n return (\n \n {label}:\n \n {getVal && getVal(screeningRequest)}\n {render && render(screeningRequest)}\n \n \n );\n }\n};\nexport default ScreeningRequestDetail;\n","import * as localStorageKeys from \"../../constants/localStorageKeys\";\n\nimport { DATE_FORMAT, TABLE_ROWS_OPTIONS } from \"../../constants\";\nimport { ILanguage, LangContext } from \"../../context/LangContext\";\nimport {\n Paper,\n Table,\n TableBody,\n TableCell,\n TableContainer,\n TableHead,\n TablePagination,\n TableRow,\n TableSortLabel,\n makeStyles,\n} from \"@material-ui/core\";\nimport React, { useContext, useEffect, useState } from \"react\";\nimport { formatSsn, getScreeningStatusText } from \"../../utils\";\n\nimport { CancerScreeningResultModel } from \"../../models/cancerScreeningResultModel\";\nimport NoResults from \"../NoResults\";\nimport moment from \"moment\";\nimport {oldNorseSort} from \"old-norse-alphabet-sort\";\nimport translations from \"../../assets/json/translations.json\";\nimport { useHistory } from \"react-router-dom\";\n\ninterface IProps {\n screeningRequests: CancerScreeningResultModel[];\n currentPage: number;\n rowsPerPage: number;\n count: number;\n setCurrentPage: (page: number) => void;\n setRowsPerPage: (rows: number) => void;\n}\n\nconst useStyles = makeStyles((theme) => ({\n container: {\n \"& th\": {\n fontWeight: 600,\n fontSize: 15,\n },\n \"& td\": {\n color: theme.palette.text.secondary,\n fontSize: 15,\n },\n },\n}));\n\nlet lang: ILanguage;\n\nconst ScreeningRequestsOverviewList: React.FC = ({\n screeningRequests,\n currentPage,\n rowsPerPage,\n count,\n setCurrentPage,\n setRowsPerPage,\n}) => {\n const classes = useStyles({});\n [lang] = useContext(LangContext);\n const history = useHistory();\n\n const [sortKey, setSortKey] = useState(\"\");\n const [sortDirection, setSortDirection] = useState<\"asc\" | \"desc\">(\"asc\");\n const [sortedScreeningRequests, setSortedScreeningRequests] = useState<\n CancerScreeningResultModel[]\n >([]);\n const startIndex = currentPage * rowsPerPage;\n\n useEffect(() => {\n const localStorageSortDirection = localStorage.getItem(\n `${localStorageKeys.NEW_SCREENING_REQUESTS_SORT_DIRECTION}`\n );\n const localStorageSortKey = localStorage.getItem(\n `${localStorageKeys.NEW_SCREENING_REQUESTS_SORT_KEY}`\n );\n if (localStorageSortDirection) {\n setSortDirection(localStorageSortDirection as \"asc\" | \"desc\");\n }\n if (localStorageSortKey) {\n setSortKey(localStorageSortKey);\n }\n }, []);\n\n useEffect(() => {\n if (sortKey && tableColumns[sortKey]) {\n const sorted = tableColumns[sortKey].sort\n ? [...screeningRequests].sort(tableColumns[sortKey].sort)\n : [...screeningRequests];\n setSortedScreeningRequests(\n sortDirection === \"asc\" ? sorted : sorted.reverse()\n );\n } else {\n setSortedScreeningRequests(screeningRequests);\n }\n }, [screeningRequests, sortKey, sortDirection]);\n\n return (\n \n {screeningRequests.length ? (\n \n \n \n \n \n {Object.keys(tableColumns).map((columnKey) => (\n \n {tableColumns[columnKey].sort ? (\n onSortClick(columnKey)}\n >\n {tableColumns[columnKey].translation[lang]}\n \n ) : (\n tableColumns[columnKey].translation[lang]\n )}\n \n ))}\n \n \n \n {sortedScreeningRequests\n .slice(startIndex, startIndex + rowsPerPage)\n .map((screeningRequest, index) => (\n clickOnRequest(screeningRequest)}\n >\n {screeningRequest.personName}\n \n {formatSsn(screeningRequest.personSsn)}\n \n \n {screeningRequest.examinationDateTime &&\n moment(screeningRequest.examinationDateTime).format(\n DATE_FORMAT\n )}\n \n \n {screeningRequest.examinationReasonDescription}\n \n \n {screeningRequest.createDateTime &&\n moment(screeningRequest.createDateTime).format(\n DATE_FORMAT\n )}\n \n {screeningRequest.requestorName}\n \n {screeningRequest.examinationNotes && \"Já\"}\n \n \n {getScreeningStatusText(screeningRequest.screeningStatus ?? -1, lang)}\n \n \n ))}\n \n
\n
\n setCurrentPage(p)}\n onChangeRowsPerPage={(e) => {\n setCurrentPage(0);\n setRowsPerPage(parseInt(e.target.value, 10));\n }}\n />\n
\n ) : (\n \n )}\n
\n );\n\n function onSortClick(columnKey: string) {\n if (sortKey === columnKey) {\n setSortDirection(sortDirection === \"asc\" ? \"desc\" : \"asc\");\n } else {\n setSortKey(columnKey);\n setSortDirection(\"asc\");\n }\n }\n\n function clickOnRequest(screeningRequest: CancerScreeningResultModel) {\n localStorage.setItem(\n `${localStorageKeys.NEW_SCREENING_REQUESTS_SORT_DIRECTION}`,\n sortDirection\n );\n localStorage.setItem(\n `${localStorageKeys.NEW_SCREENING_REQUESTS_SORT_KEY}`,\n sortKey\n );\n history.push(`/screening-request-overview/${screeningRequest.id}`);\n }\n};\n\nconst tableColumns: {\n [key: string]: {\n translation: { is: string; en: string };\n sort?: (\n a: CancerScreeningResultModel,\n b: CancerScreeningResultModel\n ) => number;\n };\n} = {\n name: {\n translation: translations.name,\n sort: (a: CancerScreeningResultModel, b: CancerScreeningResultModel) => {\n if (!a.personName) {\n return -1;\n }\n if (!b.personName) {\n return 1;\n }\n return oldNorseSort(a.personName, b.personName);\n },\n },\n ssn: {\n translation: translations.kennitala,\n sort: (a: CancerScreeningResultModel, b: CancerScreeningResultModel) => {\n if (!a.personSsn) {\n return -1;\n }\n if (!b.personSsn) {\n return 1;\n }\n return a.personSsn.localeCompare(b.personSsn) < 0 ? 1 : -1;\n },\n },\n examinationDate: {\n translation: translations.examinationDate,\n sort: (a: CancerScreeningResultModel, b: CancerScreeningResultModel) => {\n if (!a.examinationDateTime) {\n return -1;\n }\n if (!b.examinationDateTime) {\n return 1;\n }\n return moment(a.examinationDateTime).isAfter(b.examinationDateTime)\n ? 1\n : -1;\n },\n },\n category: {\n translation: translations.category,\n sort: (a: CancerScreeningResultModel, b: CancerScreeningResultModel) => {\n if (!a.examinationReasonDescription) {\n return -1;\n }\n if (!b.examinationReasonDescription) {\n return 1;\n }\n return oldNorseSort(a.examinationReasonDescription, b.examinationReasonDescription);\n },\n },\n registrationDate: {\n translation: translations.registrationDate,\n sort: (a: CancerScreeningResultModel, b: CancerScreeningResultModel) => {\n if (!a.createDateTime) {\n return -1;\n }\n if (!b.createDateTime) {\n return 1;\n }\n return moment(a.createDateTime).isAfter(b.createDateTime) ? 1 : -1;\n },\n },\n registeredBy: {\n translation: translations.registeredBy,\n sort: (a: CancerScreeningResultModel, b: CancerScreeningResultModel) => {\n if (!a.requestorName) {\n return -1;\n }\n if (!b.requestorName) {\n return 1;\n }\n return oldNorseSort(a.requestorName, b.requestorName);\n },\n },\n comment: {\n translation: translations.comment,\n sort: (a: CancerScreeningResultModel, b: CancerScreeningResultModel) => {\n if (!a.examinationNotes) {\n return -1;\n }\n if (!b.examinationNotes) {\n return 1;\n }\n return oldNorseSort(a.examinationNotes, b.examinationNotes);\n },\n },\n screeningRequestStatus: {\n translation: translations.status,\n sort: (a: CancerScreeningResultModel, b: CancerScreeningResultModel) => {\n return oldNorseSort(getScreeningStatusText(a.screeningStatus ?? -1, lang), getScreeningStatusText(b.screeningStatus ?? -1, lang));\n },\n },\n};\n\nexport default ScreeningRequestsOverviewList;\n","import {\n FormControlLabel,\n Grid,\n Paper,\n Radio,\n lighten,\n makeStyles,\n useMediaQuery,\n useTheme,\n} from \"@material-ui/core\";\nimport React, { useContext, useState } from \"react\";\nimport { accessControl, screeningStatuses } from \"../../constants/enums\";\n\nimport Button from \"../Button\";\nimport { CefSharpShell } from \"../../helpers/CefSharpShell\";\nimport ConfirmDialog from \"../ConfirmDialog\";\nimport { GetCancerScreeningResultWithQueryModel } from \"../../models/getCancerScreeningResultModel\";\nimport { LangContext } from \"../../context/LangContext\";\nimport ScreeningRequestDetail from \"./ScreeningRequestDetail\";\nimport TestResults from \"./TestResults\";\nimport { UserContext } from \"../../context/UserContext\";\nimport { hasUserAccess } from \"../../utils\";\nimport translations from \"../../assets/json/translations.json\";\nimport { useHistory } from \"react-router-dom\";\n\nenum AnalysisTypeEnum {\n Pathology = 0,\n HPV = 1,\n Both = 2,\n}\n\ninterface IProps {\n screeningRequest: GetCancerScreeningResultWithQueryModel;\n completeCancerScreeningInParent: (\n id: number,\n userSsn: string\n ) => Promise;\n createAnalysisRequestInParent: (\n id: number,\n userSsn: string,\n userName: string,\n originalUserSsn: string,\n analysisType: number\n ) => Promise;\n resendAnalysisRequestInParent: (\n id: number,\n userSsn: string,\n userName: string,\n originalUserSsn: string,\n analysisType: number\n ) => Promise;\n removeScreeningTestsAndNotifyInParent: (\n id: number,\n userSsn: string\n ) => Promise;\n}\n\nconst useStyles = makeStyles((theme) => ({\n container: {\n padding: theme.spacing(3),\n paddingBottom: theme.spacing(5),\n },\n topItems: {\n marginBottom: theme.spacing(4),\n [theme.breakpoints.only(\"md\")]: {\n marginBottom: theme.spacing(2),\n },\n [theme.breakpoints.down(\"xs\")]: {\n marginBottom: theme.spacing(2),\n },\n },\n titleDivider: {\n display: \"inline-block\",\n margin: theme.spacing(0, 1),\n },\n titleSerialNumber: {\n display: \"inline-block\",\n marginRight: theme.spacing(1),\n },\n otherDetails: {\n backgroundColor: theme.palette.grey[100],\n padding: theme.spacing(2),\n },\n descriptionTitle: {\n fontWeight: \"bold\",\n marginRight: theme.spacing(1),\n display: \"inline-block\",\n },\n descriptionDetails: {\n color: theme.palette.text.secondary,\n display: \"inline-block\",\n },\n resultsWrapper: {\n backgroundColor: lighten(theme.palette.secondary.light, 0.8),\n padding: theme.spacing(2),\n },\n}));\n\nconst SentScreeningRequestDetails: React.FC = ({\n screeningRequest,\n completeCancerScreeningInParent,\n createAnalysisRequestInParent,\n resendAnalysisRequestInParent,\n removeScreeningTestsAndNotifyInParent,\n}) => {\n const classes = useStyles();\n const [lang] = useContext(LangContext);\n const history = useHistory();\n const theme = useTheme();\n const shellHelper = new CefSharpShell();\n\n const [openCompleteRequestDialog, setOpenCompleteRequestDialog] =\n useState(false);\n const [openRemoveTestsDialog, setOpenRemoveDialog] = useState(false);\n const [openCreateTestRequestDialog, setOpenCreateTestRequestDialog] =\n useState(false);\n const [openResendTestRequestDialog, setOpenResendTestRequestDialog] =\n useState(false);\n const [openPrintDialog, setOpenPrintDialog] = useState(false);\n const [infoLoading, setInfoLoading] = useState(false);\n\n const [analysisType, setAnalysisType] = useState(null);\n const [user] = useContext(UserContext);\n const xsDown = useMediaQuery(theme.breakpoints.down(\"xs\"));\n\n return (\n \n \n \n \n \n \n \n \n\n \n {renderButtons()}\n \n \n {renderDialogs()}\n \n );\n\n function renderButtons() {\n return (\n \n \n {hasUserAccess(\n accessControl.SENT_SCREENING_REQUESTS_FULL_ACCESS,\n user\n ) && (\n setOpenCompleteRequestDialog(true)}\n variant=\"contained\"\n disabled={\n screeningRequest.cancerScreening.screeningStatus !==\n screeningStatuses.ALL_RESULTS_ARRIVED\n }\n >\n {translations.completeResults[lang]}\n \n )}\n \n \n setOpenCreateTestRequestDialog(true)}\n color=\"secondary\"\n disabled={\n screeningRequest.cancerScreening.hpvTestCreateDate !== null &&\n screeningRequest.cancerScreening.pathologyTestCreateDate !== null\n }\n >\n {translations.createTestRequest[lang]}\n \n \n \n setOpenResendTestRequestDialog(true)}\n color=\"secondary\"\n disabled={resendTestRequestDisabled(screeningRequest)}\n >\n {translations.resendTestRequest[lang]}\n \n \n \n \n \n {hasUserAccess(\n accessControl.SENT_SCREENING_REQUESTS_FULL_ACCESS,\n user\n ) && (\n \n setOpenRemoveDialog(true)}\n variant=\"contained\"\n >\n {translations.removeScreeningTests[lang]}\n \n \n )}\n \n history.push(\"/sent-screening-requests\")}\n variant=\"outlined\"\n >\n {translations.back[lang]}\n \n \n \n );\n }\n\n function renderDialogs() {\n return (\n <>\n clearDialogs()}\n onConfirm={() =>\n screeningRequest.cancerScreening.id &&\n user.ssn &&\n (analysisType === AnalysisTypeEnum.Pathology ||\n analysisType === AnalysisTypeEnum.HPV) &&\n createAnalysisRequest(\n screeningRequest.cancerScreening.id,\n user.ssn,\n user.name,\n screeningRequest.cancerScreening.requestorSsn ?? user.ssn,\n analysisType\n )\n }\n confirmText={translations.create[lang]}\n text={translations.analysisType[lang]}\n disableConfirm={\n analysisType === null ||\n analysisType === AnalysisTypeEnum.Both ||\n (analysisType === AnalysisTypeEnum.HPV &&\n screeningRequest.cancerScreening.hpvTestCreateDate !== null) ||\n (analysisType === AnalysisTypeEnum.Pathology &&\n screeningRequest.cancerScreening.pathologyTestCreateDate !== null)\n }\n loading={infoLoading}\n >\n {getCreateTestRequestDialogContent()}\n \n\n clearDialogs()}\n onConfirm={() =>\n screeningRequest.cancerScreening.id &&\n user.ssn &&\n (analysisType === AnalysisTypeEnum.Pathology ||\n analysisType === AnalysisTypeEnum.HPV) &&\n resendAnalysisRequest(\n screeningRequest.cancerScreening.id,\n user.ssn,\n user.name,\n screeningRequest.cancerScreening.requestorSsn ?? user.ssn,\n analysisType\n )\n }\n confirmText={translations.resend[lang]}\n text={translations.analysisType[lang]}\n disableConfirm={\n analysisType === null ||\n analysisType === AnalysisTypeEnum.Both ||\n (analysisType === AnalysisTypeEnum.HPV &&\n (screeningRequest.hpvTestResult?.createdDate == null || // Disabled if test request has never been sent\n (screeningRequest.hpvTestResult?.createdDate != null &&\n screeningRequest.hpvTestResult?.conclusionDate != null))) || // Disabled if test request sent and result received\n (analysisType === AnalysisTypeEnum.Pathology &&\n (screeningRequest.pathologyTestResult?.createdDate == null || // Disabled if test request has never been sent\n (screeningRequest.pathologyTestResult?.createdDate != null &&\n screeningRequest.pathologyTestResult?.conclusionDate !=\n null))) // Disabled if test request sent and result received\n }\n loading={infoLoading}\n >\n {getCreateTestRequestDialogContent()}\n \n\n clearDialogs()}\n onConfirm={() =>\n screeningRequest.cancerScreening.id &&\n user.ssn &&\n completeCancerScreening(\n screeningRequest.cancerScreening.id,\n user.ssn\n )\n }\n confirmText={translations.confirm[lang]}\n text={translations.completeScreeningResultsText[lang]}\n disableConfirm={\n screeningRequest.cancerScreening.screeningStatus !==\n screeningStatuses.ALL_RESULTS_ARRIVED\n }\n >\n clearDialogs()}\n onConfirm={() => {\n shellHelper.printTemplateLabel(\n screeningRequest.cancerScreening,\n screeningRequest.cancerScreening?.specimenId || \"\"\n );\n clearDialogs();\n }}\n confirmText={translations.print[lang]}\n text={translations.reprintScreeningNumberTitle[lang]}\n >\n clearDialogs()}\n onConfirm={() => {\n if (screeningRequest.cancerScreening.id && user.ssn) {\n removeScreeningTestsAndNotifyInParent(\n screeningRequest.cancerScreening.id,\n user.ssn\n );\n clearDialogs();\n }\n }}\n confirmText={translations.removeScreeningTests[lang]}\n text={translations.removeScreeningTests[lang]}\n >\n \n );\n }\n\n function getCreateTestRequestDialogContent() {\n return (\n \n \n setAnalysisType(AnalysisTypeEnum.HPV)}\n control={\n \n }\n />\n \n \n setAnalysisType(AnalysisTypeEnum.Pathology)}\n control={\n \n }\n />\n \n \n );\n }\n\n async function completeCancerScreening(id: number, userSsn: string) {\n await completeCancerScreeningInParent(id, userSsn);\n\n clearDialogs();\n }\n\n async function createAnalysisRequest(\n id: number,\n userSsn: string,\n userName: string,\n originalUserSsn: string,\n analysisType: number\n ) {\n setInfoLoading(true);\n await createAnalysisRequestInParent(\n id,\n userSsn,\n userName,\n originalUserSsn,\n analysisType\n );\n setInfoLoading(false);\n clearDialogs();\n }\n\n function resendTestRequestDisabled(\n screeningRequest: GetCancerScreeningResultWithQueryModel\n ): boolean {\n if (\n (screeningRequest.hpvTestResult?.createdDate != null &&\n screeningRequest.hpvTestResult?.conclusionDate == null) ||\n (screeningRequest.pathologyTestResult?.createdDate != null &&\n screeningRequest.pathologyTestResult?.conclusionDate == null)\n ) {\n // Not disabled if a test request has been sent and no result has been received\n return false;\n }\n return true;\n }\n\n async function resendAnalysisRequest(\n id: number,\n userSsn: string,\n userName: string,\n originalUserSsn: string,\n analysisType: number\n ) {\n setInfoLoading(true);\n await resendAnalysisRequestInParent(\n id,\n userSsn,\n userName,\n originalUserSsn,\n analysisType\n );\n setInfoLoading(false);\n clearDialogs();\n }\n\n function clearDialogs() {\n setOpenCreateTestRequestDialog(false);\n setOpenResendTestRequestDialog(false);\n setOpenCompleteRequestDialog(false);\n setOpenPrintDialog(false);\n setOpenRemoveDialog(false);\n setAnalysisType(null);\n }\n};\n\nexport default SentScreeningRequestDetails;\n","import * as cancerScreeningService from \"../../services/cancerScreeningService\";\n\nimport { Grid, useTheme } from \"@material-ui/core\";\nimport React, { useContext, useEffect, useState } from \"react\";\nimport { RouteComponentProps, useHistory } from \"react-router-dom\";\n\nimport CancerScreeningInfo from \"../../components/CancerScreening/CancerScreeningInfo\";\nimport { CancerScreeningResultModel } from \"../../models/cancerScreeningResultModel\";\nimport { CefSharpShell } from \"../../helpers/CefSharpShell\";\nimport { GetCancerScreeningInfoModel } from \"../../models/getCancerScreeningInfoModel\";\nimport { LangContext } from \"../../context/LangContext\";\nimport Layout from \"../../components/Layout\";\nimport LoadingIndicator from \"../../components/LoadingIndicator\";\nimport NewScreeningRequestDetails from \"../../components/CancerScreening/NewScreeningRequestDetails\";\nimport Section from \"../../components/Section\";\nimport { UserContext } from \"../../context/UserContext\";\nimport translations from \"../../assets/json/translations.json\";\nimport useNotifier from \"../../hooks/useNotifier\";\n\nconst NewScreeningRequestsDetailPage: React.FC<\n RouteComponentProps<{ id: string }>\n> = ({ match }) => {\n const theme = useTheme();\n const [lang] = useContext(LangContext);\n const history = useHistory();\n const shellHelper = new CefSharpShell();\n\n const [requestLoading, setRequestLoading] = useState(false);\n const [infoLoading, setInfoLoading] = useState(false);\n const [cancerScreeningRequest, setCancerScreeningRequest] =\n useState(null);\n const [cancerScreeningInfo, setCancerScreeningInfo] =\n useState(null);\n const id = match.params.id;\n\n const { notifySuccess } = useNotifier();\n const [user] = useContext(UserContext);\n\n useEffect(() => {\n const fetchScreeningRequest = async () => {\n setRequestLoading(true);\n\n const response = await cancerScreeningService.getCancerScreening(id);\n setRequestLoading(false);\n\n if (response.isOk) {\n setCancerScreeningRequest(response?.data?.cancerScreening || {});\n fetchScreeningInfo(response.data?.cancerScreening); \n }\n };\n\n const fetchScreeningInfo = async (\n data: CancerScreeningResultModel | undefined\n ) => {\n setInfoLoading(true);\n \n const response = await cancerScreeningService.getCancerScreeningInfo({\n userSsn: user?.ssn || \"\",\n userName: user?.name || \"\",\n personName: data?.personName || \"\",\n personSsn: data?.personSsn || \"\",\n });\n setInfoLoading(false);\n\n if (response.isOk && response.data) {\n setCancerScreeningInfo(response.data);\n }\n };\n\n fetchScreeningRequest();\n /* eslint-disable */\n }, [id]);\n\n return (\n history.push(\"/new-screening-requests\"),\n }}\n >\n
\n {requestLoading ? (\n \n \n \n ) : (\n <>\n {cancerScreeningRequest && (\n \n )}\n \n {infoLoading ? (\n \n \n \n ) : (\n <>\n {cancerScreeningInfo?.patientCancerScreeningInfo && (\n \n )}\n \n )}\n \n )}\n
\n \n );\n\n async function cancelScreeningAndNotify(id: number, userSsn: string) {\n const response = await cancerScreeningService.cancelCancerScreening(\n id,\n userSsn\n );\n if (response.isOk) {\n notifySuccess(translations.deleteScreeningRequestConfirmed[lang]);\n history.push(`/new-screening-requests`);\n }\n }\n async function createAnalysisRequestAndNotify(\n id: number,\n userSsn: string,\n userName: string,\n originalUserSsn: string,\n analysisType: number\n ) {\n const response = await cancerScreeningService.createAnalysisRequest(\n id,\n userSsn,\n userName,\n originalUserSsn,\n analysisType\n );\n if (response.isOk) {\n if (cancerScreeningRequest) {\n shellHelper.printTemplateLabel(\n cancerScreeningRequest,\n response.data?.specimenId || \"\"\n );\n }\n notifySuccess(\n translations.createTestAnalysisConfirmed[lang] +\n response.data?.specimenId\n );\n history.push(`/new-screening-requests`);\n }\n }\n\n};\n\nexport default NewScreeningRequestsDetailPage;\n","import React from 'react';\nimport { Moment } from 'moment';\nimport { KeyboardDatePicker } from '@material-ui/pickers';\n\nimport { DATE_FORMAT } from '../constants';\n\ninterface IProps {\n id: string;\n value: Moment | null;\n label: string;\n onChange: (val: Moment | null) => void;\n onBlur?: (\n e: React.FocusEvent\n ) => void;\n muiProps?: object;\n inputProps?: object;\n required?: boolean;\n autoFocus?: boolean;\n error?: boolean;\n disabled?: boolean;\n}\n\nconst DatePicker: React.FC = ({\n id,\n value,\n label,\n onChange,\n onBlur,\n muiProps,\n inputProps,\n required,\n autoFocus,\n error,\n disabled,\n}) => {\n return (\n \n );\n};\n\nexport default DatePicker;\n","import { Form, Formik, FormikProps } from \"formik\";\nimport {\n Grid,\n Paper,\n TextField,\n useMediaQuery,\n useTheme,\n} from \"@material-ui/core\";\nimport React, { useContext, useEffect } from \"react\";\nimport moment, { Moment } from \"moment\";\n\nimport Button from \"../Button\";\nimport DatePicker from \"../DatePicker\";\nimport { LangContext } from \"../../context/LangContext\";\nimport translations from \"../../assets/json/translations.json\";\n\ninterface IProps {\n onSubmit: (values: IFormValues, initialLoad?: boolean) => void;\n onClear: () => void;\n loadForm: IFormValues;\n formCleared: boolean;\n}\n\nexport interface IFormValues {\n patientSsn: string;\n requestorSsn: string;\n examinationDateFrom: Moment | null;\n examinationDateTo: Moment | null;\n}\n\ntype IFormik = FormikProps;\n\nconst NewScreeningRequestsFilter: React.FC = ({\n onSubmit,\n onClear,\n loadForm,\n formCleared,\n}) => {\n const theme = useTheme();\n const [lang] = useContext(LangContext);\n const smDown = useMediaQuery(theme.breakpoints.down(\"sm\"));\n\n useEffect(() => {\n if (loadForm && !formCleared) {\n onSubmit(loadForm, true);\n }\n /* eslint-disable */\n }, [loadForm]);\n\n return (\n onSubmit(values)}\n initialValues={getInitalValues()}\n enableReinitialize\n >\n {(formik) => (\n
{renderFilters(formik)}
\n )}\n \n );\n\n function renderFilters(formik: IFormik) {\n const { values, handleChange, handleBlur, setFieldValue, isSubmitting } =\n formik;\n return (\n \n \n \n \n \n\n \n \n \n\n \n \n setFieldValue(\"examinationDateFrom\", e ? moment(e).startOf('day') : null)\n }\n onBlur={handleBlur}\n />\n \n\n \n \n setFieldValue(\"examinationDateTo\", e ? moment(e).endOf('day') : null)\n }\n onBlur={handleBlur}\n />\n \n\n \n \n \n \n {\n clearForm();\n }}\n >\n {translations.clear[lang]}\n \n \n \n \n );\n }\n\n function clearForm() {\n onClear();\n }\n\n function getInitalValues() {\n return loadForm;\n }\n};\n\nexport default NewScreeningRequestsFilter;\n","import React, { useContext } from \"react\";\nimport { makeStyles, Paper, Typography } from \"@material-ui/core\";\nimport translations from \"../assets/json/translations.json\";\nimport { LangContext } from \"../context/LangContext\";\n\ninterface IProps {\n message?: string;\n elevation?: number;\n}\n\nconst useStyles = makeStyles((theme) => ({\n container: {\n padding: theme.spacing(4),\n height: 50,\n },\n}));\n\nconst NoResults: React.FC = ({ message, elevation = 2 }) => {\n const classes = useStyles();\n const [lang] = useContext(LangContext);\n\n return (\n \n \n {message || translations.noResults[lang]}\n \n \n );\n};\n\nexport default NoResults;\n","import * as localStorageKeys from \"../../constants/localStorageKeys\";\n\nimport { DATE_FORMAT, TABLE_ROWS_OPTIONS } from \"../../constants\";\nimport {\n Paper,\n Table,\n TableBody,\n TableCell,\n TableContainer,\n TableHead,\n TablePagination,\n TableRow,\n TableSortLabel,\n makeStyles,\n} from \"@material-ui/core\";\nimport React, { useContext, useEffect, useState } from \"react\";\n\nimport { CancerScreeningResultModel } from \"../../models/cancerScreeningResultModel\";\nimport { LangContext } from \"../../context/LangContext\";\nimport NoResults from \"../NoResults\";\nimport { formatSsn } from \"../../utils\";\nimport moment from \"moment\";\nimport {oldNorseSort} from \"old-norse-alphabet-sort\";\nimport translations from \"../../assets/json/translations.json\";\nimport { useHistory } from \"react-router-dom\";\n\ninterface IProps {\n screeningRequests: CancerScreeningResultModel[];\n currentPage: number;\n rowsPerPage: number;\n count: number;\n setCurrentPage: (page: number) => void;\n setRowsPerPage: (rows: number) => void;\n}\n\nconst useStyles = makeStyles((theme) => ({\n container: {\n \"& th\": {\n fontWeight: 600,\n fontSize: 15,\n },\n \"& td\": {\n color: theme.palette.text.secondary,\n fontSize: 15,\n },\n },\n}));\n\nconst NewScreeningRequestsList: React.FC = ({\n screeningRequests,\n currentPage,\n rowsPerPage,\n count,\n setCurrentPage,\n setRowsPerPage,\n}) => {\n const classes = useStyles({});\n const [lang] = useContext(LangContext);\n const history = useHistory();\n\n const [sortKey, setSortKey] = useState(\"\");\n const [sortDirection, setSortDirection] = useState<\"asc\" | \"desc\">(\"asc\");\n const [sortedScreeningRequests, setSortedScreeningRequests] = useState<\n CancerScreeningResultModel[]\n >([]);\n const startIndex = currentPage * rowsPerPage;\n\n useEffect(() => {\n const localStorageSortDirection = localStorage.getItem(\n `${localStorageKeys.NEW_SCREENING_REQUESTS_SORT_DIRECTION}`\n );\n const localStorageSortKey = localStorage.getItem(\n `${localStorageKeys.NEW_SCREENING_REQUESTS_SORT_KEY}`\n );\n if (localStorageSortDirection) {\n setSortDirection(localStorageSortDirection as \"asc\" | \"desc\");\n }\n if (localStorageSortKey) {\n setSortKey(localStorageSortKey);\n }\n }, []);\n\n useEffect(() => {\n if (sortKey && tableColumns[sortKey]) {\n const sorted = tableColumns[sortKey].sort\n ? [...screeningRequests].sort(tableColumns[sortKey].sort)\n : [...screeningRequests];\n setSortedScreeningRequests(\n sortDirection === \"asc\" ? sorted : sorted.reverse()\n );\n } else {\n setSortedScreeningRequests(screeningRequests);\n }\n }, [screeningRequests, sortKey, sortDirection]);\n\n return (\n \n {screeningRequests.length ? (\n \n \n \n \n \n {Object.keys(tableColumns).map((columnKey) => (\n \n {tableColumns[columnKey].sort ? (\n onSortClick(columnKey)}\n >\n {tableColumns[columnKey].translation[lang]}\n \n ) : (\n tableColumns[columnKey].translation[lang]\n )}\n \n ))}\n \n \n \n {sortedScreeningRequests\n .slice(startIndex, startIndex + rowsPerPage)\n .map((screeningRequest, index) => (\n clickOnRequest(screeningRequest)}\n >\n {screeningRequest.personName}\n \n {formatSsn(screeningRequest.personSsn)}\n \n \n {screeningRequest.examinationDateTime &&\n moment(screeningRequest.examinationDateTime).format(\n DATE_FORMAT\n )}\n \n \n {screeningRequest.examinationReasonDescription}\n \n \n {screeningRequest.createDateTime &&\n moment(screeningRequest.createDateTime).format(\n DATE_FORMAT\n )}\n \n {screeningRequest.requestorName}\n \n {screeningRequest.examinationNotes && \"Já\"}\n \n \n ))}\n \n
\n
\n setCurrentPage(p)}\n onChangeRowsPerPage={(e) => {\n setCurrentPage(0);\n setRowsPerPage(parseInt(e.target.value, 10));\n }}\n />\n
\n ) : (\n \n )}\n
\n );\n\n function onSortClick(columnKey: string) {\n if (sortKey === columnKey) {\n setSortDirection(sortDirection === \"asc\" ? \"desc\" : \"asc\");\n } else {\n setSortKey(columnKey);\n setSortDirection(\"asc\");\n }\n }\n\n function clickOnRequest(screeningRequest: CancerScreeningResultModel) {\n localStorage.setItem(\n `${localStorageKeys.NEW_SCREENING_REQUESTS_SORT_DIRECTION}`,\n sortDirection\n );\n localStorage.setItem(\n `${localStorageKeys.NEW_SCREENING_REQUESTS_SORT_KEY}`,\n sortKey\n );\n history.push(`/new-screening-requests/${screeningRequest.id}`);\n }\n};\n\nconst tableColumns: {\n [key: string]: {\n translation: { is: string; en: string };\n sort?: (\n a: CancerScreeningResultModel,\n b: CancerScreeningResultModel\n ) => number;\n };\n} = {\n name: {\n translation: translations.name,\n sort: (a: CancerScreeningResultModel, b: CancerScreeningResultModel) => {\n if (!a.personName) {\n return -1;\n }\n if (!b.personName) {\n return 1;\n }\n return oldNorseSort(a.personName, b.personName);\n },\n },\n ssn: {\n translation: translations.kennitala,\n sort: (a: CancerScreeningResultModel, b: CancerScreeningResultModel) => {\n if (!a.personSsn) {\n return -1;\n }\n if (!b.personSsn) {\n return 1;\n }\n return a.personSsn.localeCompare(b.personSsn) < 0 ? 1 : -1;\n },\n },\n examinationDate: {\n translation: translations.examinationDate,\n sort: (a: CancerScreeningResultModel, b: CancerScreeningResultModel) => {\n if (!a.examinationDateTime) {\n return -1;\n }\n if (!b.examinationDateTime) {\n return 1;\n }\n return moment(a.examinationDateTime).isAfter(b.examinationDateTime)\n ? 1\n : -1;\n },\n },\n category: {\n translation: translations.category,\n sort: (a: CancerScreeningResultModel, b: CancerScreeningResultModel) => {\n if (!a.examinationReasonDescription) {\n return -1;\n }\n if (!b.examinationReasonDescription) {\n return 1;\n }\n return oldNorseSort(a.examinationReasonDescription, b.examinationReasonDescription);\n },\n },\n registrationDate: {\n translation: translations.registrationDate,\n sort: (a: CancerScreeningResultModel, b: CancerScreeningResultModel) => {\n if (!a.createDateTime) {\n return -1;\n }\n if (!b.createDateTime) {\n return 1;\n }\n return moment(a.createDateTime).isAfter(b.createDateTime) ? 1 : -1;\n },\n },\n registeredBy: {\n translation: translations.registeredBy,\n sort: (a: CancerScreeningResultModel, b: CancerScreeningResultModel) => {\n if (!a.requestorName) {\n return -1;\n }\n if (!b.requestorName) {\n return 1;\n }\n return oldNorseSort(a.requestorName, b.requestorName);\n },\n },\n comment: {\n translation: translations.comment,\n sort: (a: CancerScreeningResultModel, b: CancerScreeningResultModel) => {\n if (!a.examinationNotes) {\n return -1;\n }\n if (!b.examinationNotes) {\n return 1;\n }\n return oldNorseSort(a.examinationNotes, b.examinationNotes);\n },\n },\n};\n\nexport default NewScreeningRequestsList;\n","import * as cancerScreeningService from \"../../services/cancerScreeningService\";\nimport * as localStorageKeys from \"../../constants/localStorageKeys\";\n\nimport { Grid, useTheme } from \"@material-ui/core\";\nimport NewScreeningRequestsFilter, {\n IFormValues,\n} from \"../../components/CancerScreening/NewScreeningRequestsFilter\";\nimport React, { useContext, useEffect, useState } from \"react\";\nimport moment, { Moment } from \"moment\";\n\nimport { CancerScreeningResultModel } from \"../../models/cancerScreeningResultModel\";\nimport { LangContext } from \"../../context/LangContext\";\nimport Layout from \"../../components/Layout\";\nimport LoadingIndicator from \"../../components/LoadingIndicator\";\nimport NewScreeningRequestsList from \"../../components/CancerScreening/NewScreeningRequestsList\";\nimport Section from \"../../components/Section\";\nimport { TABLE_ROWS_DEFAULT } from \"../../constants\";\nimport { clearSavedNewScreeningRequest } from \"../../utils\";\nimport { screeningStatuses } from \"../../constants/enums\";\nimport translations from \"../../assets/json/translations.json\";\n\nconst NewScreeningRequestsPage: React.FC = () => {\n const theme = useTheme();\n const [lang] = useContext(LangContext);\n\n\n const [loadingScreeningRequests, setloadingScreeningRequests] =\n useState(false);\n const [initialLoad, setInitialLoad] = useState(true);\n const [currentPage, setCurrentPage] = useState(0);\n const [rowsPerPage, setRowsPerPage] = useState(TABLE_ROWS_DEFAULT);\n const [count, setCount] = useState(0);\n const [allScreeningRequests, setAllScreeningRequests] = useState<\n CancerScreeningResultModel[] | null\n >(null);\n const [loadForm, setLoadForm] = useState(null);\n const [formCleared, setFormCleared] = useState(false);\n\n const initialForm: IFormValues = {\n patientSsn: \"\",\n requestorSsn: \"\",\n examinationDateFrom: moment().subtract(6, \"months\").startOf('day') as Moment | null,\n examinationDateTo: moment().endOf('day') as Moment | null,\n };\n\n useEffect(() => {\n const form = localStorage.getItem(\n `${localStorageKeys.NEW_SCREENING_REQUESTS_FILTER_FORM}`\n );\n\n const pageSize = localStorage.getItem(\n `${localStorageKeys.NEW_SCREENING_REQUESTS_PAGE_SIZE}`\n );\n\n if (pageSize) {\n setRowsPerPage(Number(pageSize));\n }\n\n if (form) {\n const formJson = JSON.parse(form);\n\n const formValues: IFormValues = {\n patientSsn: formJson?.patientSsn || \"\",\n requestorSsn: formJson?.requestorSsn || \"\",\n examinationDateFrom: formJson?.examinationDateFrom\n ? (moment(formJson.examinationDateFrom) as Moment | null)\n : (null as Moment | null),\n examinationDateTo: formJson?.examinationDateTo\n ? (moment(formJson.examinationDateTo) as Moment | null)\n : (null as Moment | null),\n };\n\n setLoadForm(formValues);\n } else {\n setLoadForm({ ...initialForm });\n }\n /* eslint-disable */\n }, []);\n /* eslint-enable */\n\n useEffect(() => {\n if (!initialLoad) {\n // save rowsPerPage in localStorage everytime rowsPerPage changes\n localStorage.setItem(\n `${localStorageKeys.NEW_SCREENING_REQUESTS_PAGE_SIZE}`,\n JSON.stringify(rowsPerPage)\n );\n }\n /* eslint-disable */\n }, [rowsPerPage]);\n /* eslint-enable */\n\n return (\n \n
\n {loadForm && (\n {\n setFormCleared(true);\n setAllScreeningRequests(null);\n setCurrentPage(0);\n clearForm();\n clearSavedNewScreeningRequest();\n }}\n loadForm={loadForm || undefined}\n formCleared={formCleared}\n />\n )}\n\n {loadingScreeningRequests ? (\n \n \n \n ) : (\n allScreeningRequests && (\n \n )\n )}\n
\n
\n );\n\n async function getNewScreeningRequests(\n values: IFormValues,\n initialLoad?: boolean\n ) {\n setloadingScreeningRequests(true);\n if (!initialLoad) {\n localStorage.setItem(\n `${localStorageKeys.NEW_SCREENING_REQUESTS_FILTER_FORM}`,\n JSON.stringify(values)\n );\n }\n\n const response = await cancerScreeningService.getCancerScreenings({\n requestorSsn: values?.requestorSsn,\n requestorName: \"\",\n personSsn: values?.patientSsn,\n personName: \"\",\n dateTimeFrom: values?.examinationDateFrom\n ? new Date(values?.examinationDateFrom.toISOString())\n : undefined,\n dateTimeTo: values?.examinationDateTo\n ? new Date(values.examinationDateTo.toISOString())\n : undefined,\n screeningStatus: [screeningStatuses.CREATED],\n });\n\n if (response.isOk) {\n setAllScreeningRequests(response?.data?.cancerScreenings || []);\n\n setCount(response?.data?.cancerScreenings?.length || 0);\n setloadingScreeningRequests(false);\n setFormCleared(false);\n setCurrentPage(0);\n if (initialLoad) {\n setInitialLoad(false);\n setLoadForm(values);\n }\n } else {\n setloadingScreeningRequests(false);\n setAllScreeningRequests(null);\n }\n }\n\n function clearForm() {\n setLoadForm(initialForm);\n }\n};\n\nexport default NewScreeningRequestsPage;\n","import React, { useContext } from 'react';\nimport Layout from '../components/Layout';\nimport { LangContext } from '../context/LangContext';\nimport translations from '../assets/json/translations.json';\nimport useNotifier from '../hooks/useNotifier';\n\nconst NotFoundPage: React.FC = () => {\n const { notifyError } = useNotifier();\n\n if ((window as any).logPrinterError === undefined) {\n (window as any).logPrinterError = notifyError;\n }\n\n const [lang] = useContext(LangContext);\n return (\n \n );\n};\nexport default NotFoundPage;\n","import { GetCancerScreeningResultWithQueryModel, HpvTestResult, PathologyTestResult } from \"../../models/getCancerScreeningResultModel\";\nimport {\n Grid,\n Typography,\n lighten,\n makeStyles,\n} from \"@material-ui/core\";\nimport { IHpvTestResultDetails, IPathologyTestResultDetails } from \"../../interfaces/cancerScreeningRequest\";\nimport React, { useContext } from \"react\";\n\nimport { DATE_FORMAT } from '../../constants';\nimport { LangContext } from \"../../context/LangContext\";\nimport moment from \"moment\";\nimport translations from \"../../assets/json/translations.json\";\n\ninterface IProps {\n screeningRequest: GetCancerScreeningResultWithQueryModel;\n}\n\nconst useStyles = makeStyles((theme) => ({\n container: {\n padding: theme.spacing(3),\n paddingBottom: theme.spacing(5),\n },\n topItems: {\n marginBottom: theme.spacing(4),\n [theme.breakpoints.only(\"md\")]: {\n marginBottom: theme.spacing(2),\n },\n [theme.breakpoints.down(\"xs\")]: {\n marginBottom: theme.spacing(2),\n },\n },\n titleDivider: {\n display: \"inline-block\",\n margin: theme.spacing(0, 1),\n },\n titleSerialNumber: {\n display: \"inline-block\",\n marginRight: theme.spacing(1),\n },\n otherDetails: {\n backgroundColor: theme.palette.grey[100],\n padding: theme.spacing(2),\n },\n descriptionTitle: {\n fontWeight: \"bold\",\n marginRight: theme.spacing(1),\n display: \"inline-block\",\n },\n descriptionDetails: {\n color: theme.palette.text.secondary,\n display: \"inline-block\",\n },\n resultsWrapper: {\n backgroundColor: lighten(theme.palette.secondary.light, 0.8),\n padding: theme.spacing(2),\n },\n}));\n\nconst TestResults: React.FC = ({\n screeningRequest,\n}) => {\n const classes = useStyles({});\n const [lang] = useContext(LangContext);\n\n const hpvTestResults: IHpvTestResultDetails[] = \n [\n {\n label: translations.sentToLab[lang],\n getVal: (hpvTestResult: HpvTestResult) =>\n hpvTestResult?.createdDate\n ? moment(hpvTestResult.createdDate).format(DATE_FORMAT)\n : \"\",\n },\n {\n label: translations.createdBy[lang],\n getVal: (hpvTestResult: HpvTestResult) =>\n !hpvTestResult ? \"\" : hpvTestResult?.hpvTestRequestedByName ? hpvTestResult?.hpvTestRequestedByName : translations.notRegistered[lang],\n },\n {\n label: translations.sampleReceived[lang],\n getVal: (hpvTestResult: HpvTestResult) =>\n hpvTestResult?.specimenArrivalDate && !moment(hpvTestResult.specimenArrivalDate).format(DATE_FORMAT).startsWith('01.01.0001')\n ? moment(hpvTestResult.specimenArrivalDate).format(DATE_FORMAT)\n : hpvTestResult?.specimenArrivalDate ? translations.dateNotReceived[lang] : \"\",\n },\n {\n label: translations.DateOfConclusion[lang],\n getVal: (hpvTestResult: HpvTestResult) =>\n hpvTestResult?.conclusionDate\n ? moment(hpvTestResult.conclusionDate).format(DATE_FORMAT)\n : \"\",\n },\n {\n label: translations.result[lang],\n render: (hpvTestResult: HpvTestResult) => (\n <>\n {hpvTestResult?.conclusionNote}\n \n {hpvTestResult?.codes?.map((item: any, index) => (\n \n {`${item.code} - ${item.status}`}\n \n ))}\n \n \n ),\n },\n ];\n\n const pathologyTestResults: IPathologyTestResultDetails[] = \n [\n {\n label: translations.sentToLab[lang],\n getVal: (pathologyTestResult: PathologyTestResult) =>\n pathologyTestResult?.createdDate\n ? moment(pathologyTestResult.createdDate).format(DATE_FORMAT)\n : \"\",\n },\n {\n label: translations.createdBy[lang],\n getVal: (pathologyTestResult: PathologyTestResult) =>\n !pathologyTestResult ? \"\" : pathologyTestResult?.pathologyTestRequestedByName ? pathologyTestResult?.pathologyTestRequestedByName : translations.notRegistered[lang],\n },\n {\n label: translations.sampleReceived[lang],\n getVal: (pathologyTestResult: PathologyTestResult) =>\n pathologyTestResult?.specimenArrivalDate && !moment(pathologyTestResult.specimenArrivalDate).format(DATE_FORMAT).startsWith('01.01.0001')\n ? moment(pathologyTestResult.specimenArrivalDate).format(DATE_FORMAT)\n : pathologyTestResult?.specimenArrivalDate ? translations.dateNotReceived[lang] : \"\",\n },\n {\n label: translations.DateOfConclusion[lang],\n getVal: (pathologyTestResult: PathologyTestResult) =>\n pathologyTestResult?.conclusionDate\n ? moment(pathologyTestResult.conclusionDate).format(DATE_FORMAT)\n : \"\",\n },\n {\n label: translations.result[lang],\n render: (pathologyTestResult: PathologyTestResult) => (\n <>\n \n {pathologyTestResult?.conclusionNote}\n \n \n {pathologyTestResult?.details?.map((item: any, index) => (\n \n {`${item.code} - ${item.description}`}\n \n ))}\n \n \n ),\n },\n ];\n \n return (\n renderResults()\n );\n\n function renderResults() {\n return (\n
\n \n \n {renderHpvResults()}\n \n\n \n {renderPathologyResults()}\n \n \n
\n );\n }\n\n function renderHpvResults() {\n return (\n \n \n \n {translations.hpvResearch[lang]}\n \n \n {hpvTestResults.map((item: any, index) => (\n \n {!(item.hide && item.hide(screeningRequest?.hpvTestResult)) && (\n \n
{item.label}:
\n
\n {item?.render && item.render(screeningRequest?.hpvTestResult)}\n {item?.getVal && item.getVal(screeningRequest?.hpvTestResult)}\n
\n \n )}\n
\n ))}\n
\n );\n }\n\n function renderPathologyResults() {\n return (\n \n \n \n {translations.cellularResearch[lang]}\n \n \n {pathologyTestResults.map((item: any, index) => (\n \n {!(\n item.hide && item.hide(screeningRequest?.pathologyTestResult)\n ) && (\n \n
{item.label}:
\n
\n {item?.render &&\n item.render(screeningRequest?.pathologyTestResult)}\n {item?.getVal &&\n item.getVal(screeningRequest?.pathologyTestResult)}\n
\n \n )}\n
\n ))}\n
\n );\n }\n};\n\nexport default TestResults;\n","import {\n Grid,\n Paper,\n lighten,\n makeStyles,\n useMediaQuery,\n useTheme,\n} from \"@material-ui/core\";\nimport React, { useContext, useState } from \"react\";\n\nimport Button from \"../Button\";\nimport ConfirmDialog from \"../ConfirmDialog\";\nimport { GetCancerScreeningResultWithQueryModel } from \"../../models/getCancerScreeningResultModel\";\nimport { LangContext } from \"../../context/LangContext\";\nimport ScreeningRequestDetail from \"./ScreeningRequestDetail\";\nimport { ScreeningStatus } from \"../../models/getCancerScreeningsModel\";\nimport TestResults from \"./TestResults\";\nimport { UserContext } from \"../../context/UserContext\";\nimport translations from \"../../assets/json/translations.json\";\nimport { useHistory } from \"react-router-dom\";\n\ninterface IProps {\n screeningRequest: GetCancerScreeningResultWithQueryModel;\n reopenScreeningRequestInParent: (\n id: number,\n userSsn: string\n ) => Promise;\n sendToSkrinInParent: (id: number, userSsn: string) => Promise;\n resetScreeningRequestInParent: (id: number, userSsn: string) => Promise;\n}\n\nconst useStyles = makeStyles((theme) => ({\n container: {\n padding: theme.spacing(3),\n paddingBottom: theme.spacing(5),\n },\n topItems: {\n marginBottom: theme.spacing(4),\n [theme.breakpoints.only(\"md\")]: {\n marginBottom: theme.spacing(2),\n },\n [theme.breakpoints.down(\"xs\")]: {\n marginBottom: theme.spacing(2),\n },\n },\n titleDivider: {\n display: \"inline-block\",\n margin: theme.spacing(0, 1),\n },\n titleSerialNumber: {\n display: \"inline-block\",\n marginRight: theme.spacing(1),\n },\n otherDetails: {\n backgroundColor: theme.palette.grey[100],\n padding: theme.spacing(2),\n },\n descriptionTitle: {\n fontWeight: \"bold\",\n marginRight: theme.spacing(1),\n display: \"inline-block\",\n },\n descriptionDetails: {\n color: theme.palette.text.secondary,\n display: \"inline-block\",\n },\n resultsWrapper: {\n backgroundColor: lighten(theme.palette.secondary.light, 0.8),\n padding: theme.spacing(2),\n },\n}));\n\nconst ScreeningRequestOverviewDetails: React.FC = ({\n screeningRequest,\n reopenScreeningRequestInParent,\n sendToSkrinInParent,\n resetScreeningRequestInParent,\n}) => {\n const classes = useStyles();\n const [lang] = useContext(LangContext);\n const history = useHistory();\n const theme = useTheme();\n\n const [openSendToSkrinDialog, setOpenSendToSkrinDialog] = useState(false);\n const [openResetDialog, setOpenResetDialog] = useState(false);\n const [openReopenDialog, setOpenReopenDialog] = useState(false);\n\n const [user] = useContext(UserContext);\n const xsDown = useMediaQuery(theme.breakpoints.down(\"xs\"));\n\n return (\n \n \n \n \n \n \n {screeningRequest.cancerScreening.screeningStatus ===\n ScreeningStatus.Completed && (\n \n )}\n \n\n \n {renderButtons()}\n \n \n {renderDialogs()}\n \n );\n\n function renderButtons() {\n return (\n \n {screeningRequest.cancerScreening.screeningStatus ===\n ScreeningStatus.Completed && (\n \n setOpenResetDialog(true)}\n variant=\"contained\"\n >\n {translations.resetOrWithdrawScreening[lang]}\n \n \n )}\n {screeningRequest.cancerScreening.screeningStatus ===\n ScreeningStatus.Created && (\n \n setOpenSendToSkrinDialog(true)}\n variant=\"contained\"\n >\n {translations.sendToSkrin[lang]}\n \n \n )}\n {(screeningRequest.cancerScreening.screeningStatus ===\n ScreeningStatus.Canceled ||\n screeningRequest.cancerScreening.screeningStatus ===\n ScreeningStatus.SentToSkrin) && (\n \n setOpenReopenDialog(true)}\n variant=\"contained\"\n >\n {translations.reopen[lang]}\n \n \n )}\n \n history.push(\"/screening-requests-overview\")}\n variant=\"outlined\"\n >\n {translations.back[lang]}\n \n \n \n );\n }\n\n function renderDialogs() {\n return (\n <>\n setOpenSendToSkrinDialog(false)}\n onConfirm={() =>\n screeningRequest.cancerScreening.id &&\n user.ssn &&\n sendToSkrin(screeningRequest.cancerScreening.id, user.ssn)\n }\n confirmText={translations.send[lang]}\n text={translations.sendToSkrinDialogContent[lang]}\n >\n\n setOpenReopenDialog(false)}\n onConfirm={() =>\n screeningRequest.cancerScreening.id &&\n user.ssn &&\n reopenScreeningRequest(\n screeningRequest.cancerScreening.id,\n user.ssn\n )\n }\n confirmText={translations.reopen[lang]}\n text={translations.reopenDialogContent[lang]}\n >\n setOpenResetDialog(false)}\n onConfirm={() =>\n screeningRequest.cancerScreening.id &&\n user.ssn &&\n resetScreeningRequest(\n screeningRequest.cancerScreening.id,\n user.ssn\n )\n }\n confirmText={translations.resetOrWithdrawScreening[lang]}\n text={translations.resetDialogContent[lang]}\n >\n \n );\n }\n\n async function reopenScreeningRequest(id: number, userSsn: string) {\n await reopenScreeningRequestInParent(id, userSsn);\n setOpenReopenDialog(false);\n }\n\n async function sendToSkrin(id: number, userSsn: string) {\n await sendToSkrinInParent(id, userSsn);\n\n setOpenSendToSkrinDialog(false);\n }\n async function resetScreeningRequest(id: number, userSsn: string) {\n await resetScreeningRequestInParent(id, userSsn);\n\n setOpenResetDialog(false);\n }\n};\n\nexport default ScreeningRequestOverviewDetails;\n","import * as cancerScreeningService from \"../../services/cancerScreeningService\";\n\nimport { Grid, useTheme } from \"@material-ui/core\";\nimport React, { useContext, useEffect, useState } from \"react\";\nimport { RouteComponentProps, useHistory } from \"react-router-dom\";\n\nimport CancerScreeningInfo from \"../../components/CancerScreening/CancerScreeningInfo\";\nimport { CancerScreeningResultModel } from \"../../models/cancerScreeningResultModel\";\nimport { GetCancerScreeningInfoModel } from \"../../models/getCancerScreeningInfoModel\";\nimport {\n GetCancerScreeningResultWithQueryModel,\n} from \"../../models/getCancerScreeningResultModel\";\nimport { LangContext } from \"../../context/LangContext\";\nimport Layout from \"../../components/Layout\";\nimport LoadingIndicator from \"../../components/LoadingIndicator\";\nimport ScreeningRequestOverviewDetails from \"../../components/CancerScreening/ScreeningRequestOverviewDetails\";\nimport { ScreeningStatus } from \"../../models/getCancerScreeningsModel\";\nimport Section from \"../../components/Section\";\nimport { UserContext } from \"../../context/UserContext\";\nimport translations from \"../../assets/json/translations.json\";\nimport useNotifier from \"../../hooks/useNotifier\";\n\nconst ScreeningRequestsOverviewDetailPage: React.FC<\n RouteComponentProps<{ id: string }>\n> = ({ match }) => {\n const theme = useTheme();\n const [lang] = useContext(LangContext);\n const history = useHistory();\n const [requestLoading, setRequestLoading] = useState(false);\n const [infoLoading, setInfoLoading] = useState(false);\n const [cancerScreeningRequest, setCancerScreeningRequest] =\n useState(null);\n const [cancerScreeningInfo, setCancerScreeningInfo] =\n useState(null);\n const id = match.params.id;\n\n const { notifySuccess } = useNotifier();\n const [user] = useContext(UserContext);\n\n useEffect(() => {\n\n const fetchScreeningRequest = async () => {\n setRequestLoading(true);\n const response = await cancerScreeningService.getCancerScreeningWithQuery(\n id\n );\n setRequestLoading(false);\n\n if (response.isOk && response.data) {\n setCancerScreeningRequest(response.data);\n fetchScreeningInfo(response.data?.cancerScreening);\n }\n };\n\n const fetchScreeningInfo = async (\n data: CancerScreeningResultModel | undefined\n ) => {\n setInfoLoading(true);\n const response = await cancerScreeningService.getCancerScreeningInfo({\n userSsn: user?.ssn || \"\",\n userName: user?.name || \"\",\n personName: data?.personName || \"\",\n personSsn: data?.personSsn || \"\",\n });\n setInfoLoading(false);\n\n if (response.isOk && response.data) {\n setCancerScreeningInfo(response.data);\n }\n };\n\n fetchScreeningRequest();\n /* eslint-disable */\n }, [id]);\n\n return (\n history.push(\"/screening-requests-overview\"),\n }}\n >\n
\n {requestLoading ? (\n \n \n \n ) : (\n <>\n {cancerScreeningRequest && (\n \n )}\n {infoLoading ? (\n \n \n \n ) : (\n <>\n {cancerScreeningInfo?.patientCancerScreeningInfo && (\n \n )}\n \n )}\n \n )}\n
\n \n );\n\n async function reopenScreeningAndNotify(id: number, userSsn: string) {\n const response = await cancerScreeningService.changeCancerScreeningStatus(\n id,\n userSsn,\n ScreeningStatus.Created\n );\n if (response.isOk) {\n notifySuccess(translations.reopenedSuccess[lang]);\n history.push(`/screening-requests-overview`);\n }\n }\n\n async function sendToSkrinAndNotify(id: number, userSsn: string) {\n const response = await cancerScreeningService.changeCancerScreeningStatus(\n id,\n userSsn,\n ScreeningStatus.SentToSkrin\n );\n if (response.isOk) {\n notifySuccess(translations.sentToSkrinSuccess[lang]);\n history.push(`/screening-requests-overview`);\n }\n }\n async function resetScreeningAndNotify(id: number, userSsn: string) {\n const response = await cancerScreeningService.changeCancerScreeningStatus(\n id,\n userSsn,\n ScreeningStatus.AllResultsArrived\n );\n if (response.isOk) {\n notifySuccess(translations.resetScreeningSuccess[lang]);\n history.push(`/screening-requests-overview`);\n }\n }\n};\n\nexport default ScreeningRequestsOverviewDetailPage;\n","import * as cancerScreeningService from \"../../services/cancerScreeningService\";\nimport * as localStorageKeys from \"../../constants/localStorageKeys\";\n\nimport { Grid, useTheme } from \"@material-ui/core\";\nimport NewScreeningRequestsFilter, {\n IFormValues,\n} from \"../../components/CancerScreening/NewScreeningRequestsFilter\";\nimport React, { useContext, useEffect, useState } from \"react\";\nimport moment, { Moment } from \"moment\";\n\nimport { CancerScreeningResultModel } from \"../../models/cancerScreeningResultModel\";\nimport { LangContext } from \"../../context/LangContext\";\nimport Layout from \"../../components/Layout\";\nimport LoadingIndicator from \"../../components/LoadingIndicator\";\nimport ScreeningRequestsOverviewList from \"../../components/CancerScreening/ScreeningRequestsOverviewList\";\nimport { ScreeningStatus } from \"../../models/getCancerScreeningsModel\";\nimport Section from \"../../components/Section\";\nimport { TABLE_ROWS_DEFAULT } from \"../../constants\";\nimport { clearSavedNewScreeningRequest } from \"../../utils\";\nimport translations from \"../../assets/json/translations.json\";\n\nconst NewScreeningRequestsPage: React.FC = () => {\n const theme = useTheme();\n const [lang] = useContext(LangContext);\n\n\n const [loadingScreeningRequests, setloadingScreeningRequests] =\n useState(false);\n const [initialLoad, setInitialLoad] = useState(true);\n const [currentPage, setCurrentPage] = useState(0);\n const [rowsPerPage, setRowsPerPage] = useState(TABLE_ROWS_DEFAULT);\n const [count, setCount] = useState(0);\n const [allScreeningRequests, setAllScreeningRequests] = useState<\n CancerScreeningResultModel[] | null\n >(null);\n const [loadForm, setLoadForm] = useState(null);\n const [formCleared, setFormCleared] = useState(false);\n\n const initialForm: IFormValues = {\n patientSsn: \"\",\n requestorSsn: \"\",\n examinationDateFrom: moment().subtract(6, \"months\").startOf('day') as Moment | null,\n examinationDateTo: moment().endOf('day') as Moment | null,\n };\n\n useEffect(() => {\n const form = localStorage.getItem(\n `${localStorageKeys.NEW_SCREENING_REQUESTS_FILTER_FORM}`\n );\n\n const pageSize = localStorage.getItem(\n `${localStorageKeys.NEW_SCREENING_REQUESTS_PAGE_SIZE}`\n );\n\n if (pageSize) {\n setRowsPerPage(Number(pageSize));\n }\n\n if (form) {\n const formJson = JSON.parse(form);\n\n const formValues: IFormValues = {\n patientSsn: formJson?.patientSsn || \"\",\n requestorSsn: formJson?.requestorSsn || \"\",\n examinationDateFrom: formJson?.examinationDateFrom\n ? (moment(formJson.examinationDateFrom) as Moment | null)\n : (null as Moment | null),\n examinationDateTo: formJson?.examinationDateTo\n ? (moment(formJson.examinationDateTo) as Moment | null)\n : (null as Moment | null),\n };\n\n setLoadForm(formValues);\n } else {\n setLoadForm({ ...initialForm });\n }\n /* eslint-disable */\n }, []);\n /* eslint-enable */\n\n useEffect(() => {\n if (!initialLoad) {\n // save rowsPerPage in localStorage everytime rowsPerPage changes\n localStorage.setItem(\n `${localStorageKeys.NEW_SCREENING_REQUESTS_PAGE_SIZE}`,\n JSON.stringify(rowsPerPage)\n );\n }\n /* eslint-disable */\n }, [rowsPerPage]);\n /* eslint-enable */\n\n return (\n \n
\n {loadForm && (\n {\n setFormCleared(true);\n setAllScreeningRequests(null);\n setCurrentPage(0);\n clearForm();\n clearSavedNewScreeningRequest();\n }}\n loadForm={loadForm || undefined}\n formCleared={formCleared}\n />\n )}\n\n {loadingScreeningRequests ? (\n \n \n \n ) : (\n allScreeningRequests && (\n \n )\n )}\n
\n
\n );\n\n async function getNewScreeningRequests(\n values: IFormValues,\n initialLoad?: boolean\n ) {\n setloadingScreeningRequests(true);\n if (!initialLoad) {\n localStorage.setItem(\n `${localStorageKeys.NEW_SCREENING_REQUESTS_FILTER_FORM}`,\n JSON.stringify(values)\n );\n }\n\n const response = await cancerScreeningService.getCancerScreenings({\n requestorSsn: values?.requestorSsn,\n requestorName: \"\",\n personSsn: values?.patientSsn,\n personName: \"\",\n dateTimeFrom: values?.examinationDateFrom\n ? new Date(values?.examinationDateFrom.toISOString())\n : undefined,\n dateTimeTo: values?.examinationDateTo\n ? new Date(values.examinationDateTo.toISOString())\n : undefined,\n screeningStatus: [ScreeningStatus.Created, ScreeningStatus.Completed, ScreeningStatus.Canceled, ScreeningStatus.SentToSkrin],\n });\n\n if (response.isOk) {\n setAllScreeningRequests(response?.data?.cancerScreenings || []);\n\n setCount(response?.data?.cancerScreenings?.length || 0);\n setloadingScreeningRequests(false);\n setFormCleared(false);\n setCurrentPage(0);\n if (initialLoad) {\n setInitialLoad(false);\n setLoadForm(values);\n }\n } else {\n setloadingScreeningRequests(false);\n setAllScreeningRequests(null);\n }\n }\n\n function clearForm() {\n setLoadForm(initialForm);\n }\n};\n\nexport default NewScreeningRequestsPage;\n","import * as cancerScreeningService from \"../../services/cancerScreeningService\";\n\nimport { Grid, useTheme } from \"@material-ui/core\";\nimport React, { useContext, useEffect, useState } from \"react\";\nimport { RouteComponentProps, useHistory } from \"react-router-dom\";\n\nimport CancerScreeningInfo from \"../../components/CancerScreening/CancerScreeningInfo\";\nimport { CancerScreeningResultModel } from \"../../models/cancerScreeningResultModel\";\nimport { GetCancerScreeningInfoModel } from \"../../models/getCancerScreeningInfoModel\";\nimport { GetCancerScreeningResultWithQueryModel } from \"../../models/getCancerScreeningResultModel\";\nimport { LangContext } from \"../../context/LangContext\";\nimport Layout from \"../../components/Layout\";\nimport LoadingIndicator from \"../../components/LoadingIndicator\";\nimport Section from \"../../components/Section\";\nimport SentScreeningRequestDetails from \"../../components/CancerScreening/SentScreeningRequestDetails\";\nimport { UserContext } from \"../../context/UserContext\";\nimport translations from \"../../assets/json/translations.json\";\nimport useNotifier from \"../../hooks/useNotifier\";\n\nconst NewScreeningRequestsDetailPage: React.FC<\n RouteComponentProps<{ id: string }>\n> = ({ match }) => {\n const theme = useTheme();\n const [lang] = useContext(LangContext);\n const history = useHistory();\n const [requestLoading, setRequestLoading] = useState(false);\n const [infoLoading, setInfoLoading] = useState(false);\n const [cancerScreeningRequest, setCancerScreeningRequest] =\n useState(null);\n const [cancerScreeningInfo, setCancerScreeningInfo] =\n useState(null);\n const id = match.params.id;\n\n const { notifySuccess } = useNotifier();\n const [user] = useContext(UserContext);\n\n const fetchScreeningRequest = async () => {\n setRequestLoading(true);\n const response = await cancerScreeningService.getCancerScreeningWithQuery(\n id\n );\n setRequestLoading(false);\n\n if (response.isOk && response.data) {\n setCancerScreeningRequest(response.data);\n fetchScreeningInfo(response.data?.cancerScreening);\n }\n };\n\n const fetchScreeningInfo = async (\n data: CancerScreeningResultModel | undefined\n ) => {\n setInfoLoading(true);\n const response = await cancerScreeningService.getCancerScreeningInfo({\n userSsn: user?.ssn || \"\",\n userName: user?.name || \"\",\n personName: data?.personName || \"\",\n personSsn: data?.personSsn || \"\",\n });\n setInfoLoading(false);\n\n if (response.isOk && response.data) {\n setCancerScreeningInfo(response.data);\n }\n };\n\n useEffect(() => {\n fetchScreeningRequest();\n /* eslint-disable */\n }, [id]);\n\n return (\n history.push(\"/sent-screening-requests\"),\n }}\n >\n
\n {requestLoading ? (\n \n \n \n ) : (\n <>\n {cancerScreeningRequest && (\n \n )}\n {infoLoading ? (\n \n \n \n ) : (\n <>\n {cancerScreeningInfo?.patientCancerScreeningInfo && (\n \n )}\n \n )}\n \n )}\n
\n \n );\n\n async function completeScreeningAndNotify(id: number, userSsn: string) {\n const response = await cancerScreeningService.completeCancerScreening(\n id,\n userSsn\n );\n if (response.isOk) {\n notifySuccess(translations.screeningResultsCompleted[lang]);\n history.push(`/sent-screening-requests`);\n }\n }\n\n async function createAnalysisRequestAndNotify(\n id: number,\n userSsn: string,\n userName: string,\n originalUserSsn: string,\n analysisType: number\n ) {\n const response = await cancerScreeningService.createAnalysisRequest(\n id,\n userSsn,\n userName,\n originalUserSsn,\n analysisType\n );\n if (response.isOk) {\n notifySuccess(\n translations.createTestAnalysisConfirmed[lang] +\n response.data?.specimenId\n );\n history.push(`/sent-screening-requests`);\n }\n }\n\n async function resendAnalysisRequestAndNotify(\n id: number,\n userSsn: string,\n userName: string,\n originalUserSsn: string,\n analysisType: number\n ) {\n const response = await cancerScreeningService.resendAnalysisRequest(\n id,\n userSsn,\n userName,\n originalUserSsn,\n analysisType\n );\n if (response.isOk) {\n notifySuccess(\n translations.resendTestAnalysisConfirmed[lang] +\n response.data?.specimenId\n );\n fetchScreeningRequest();\n }\n }\n async function removeScreeningTestsAndNotify(id: number, userSsn: string) {\n const response = await cancerScreeningService.removeCancerScreeningTests(\n id,\n userSsn\n );\n if (response.isOk) {\n notifySuccess(translations.removeScreeningTestsConfirmed[lang]);\n history.push(`/new-screening-requests/${id}`);\n }\n }\n};\n\nexport default NewScreeningRequestsDetailPage;\n","import {\n Checkbox,\n FormControlLabel,\n Grid,\n Paper,\n TextField,\n useTheme,\n} from \"@material-ui/core\";\nimport { Form, Formik, FormikProps } from \"formik\";\nimport React, { useContext, useEffect } from \"react\";\nimport moment, { Moment } from \"moment\";\n\nimport Button from \"../Button\";\nimport DatePicker from \"../DatePicker\";\nimport { LangContext } from \"../../context/LangContext\";\nimport { UserContext } from \"../../context/UserContext\";\nimport { accessControl } from \"../../constants/enums\";\nimport { hasUserAccess } from \"../../utils\";\nimport translations from \"../../assets/json/translations.json\";\n\ninterface IProps {\n onSubmit: (values: IFormValues, initialLoad?: boolean) => void;\n onClear: () => void;\n loadForm: IFormValues;\n formCleared: boolean;\n}\n\nexport interface IFormValues {\n patientSsn: string;\n requestorSsn: string;\n examinationDateFrom: Moment | null;\n examinationDateTo: Moment | null;\n specimenId: string;\n showPendingHPVResult: boolean;\n showPendingPathologyResult: boolean;\n showAllResultsReceived: boolean;\n showHPVPositiveAndNoPathologyRequest: boolean;\n}\n\ntype IFormik = FormikProps;\n\nconst SentScreeningRequestsFilter: React.FC = ({\n onSubmit,\n onClear,\n loadForm,\n formCleared,\n}) => {\n const theme = useTheme();\n const [lang] = useContext(LangContext);\n const [user] = useContext(UserContext);\n\n useEffect(() => {\n if (loadForm && !formCleared) {\n onSubmit(loadForm, true);\n }\n /* eslint-disable */\n }, [loadForm]);\n\n return (\n onSubmit(values)}\n initialValues={getInitalValues()}\n enableReinitialize\n >\n {(formik) => (\n
{renderFilters(formik)}
\n )}\n \n );\n\n function renderFilters(formik: IFormik) {\n const { values, handleChange, handleBlur, setFieldValue, isSubmitting } =\n formik;\n return (\n \n \n \n \n \n\n \n \n \n\n \n \n \n\n \n \n setFieldValue(\"examinationDateFrom\", e ? moment(e).startOf('day') : null)\n }\n onBlur={handleBlur}\n />\n \n\n \n \n setFieldValue(\"examinationDateTo\", e ? moment(e).endOf('day') : null)\n }\n onBlur={handleBlur}\n />\n \n \n \n \n {\n setFieldValue(\"showPendingHPVResult\", !values.showPendingHPVResult)\n }}\n onBlur={handleBlur}\n />\n }\n />\n \n\n \n {\n setFieldValue(\"showPendingPathologyResult\", !values.showPendingPathologyResult)\n }}\n onBlur={handleBlur} \n />\n }\n />\n \n\n \n {\n setFieldValue(\"showAllResultsReceived\", !values.showAllResultsReceived)\n }}\n onBlur={handleBlur}\n />\n }\n />\n \n \n \n {\n setFieldValue(\"showHPVPositiveAndNoPathologyRequest\", !values.showHPVPositiveAndNoPathologyRequest)\n }}\n onBlur={handleBlur}\n />\n }\n />\n \n\n \n \n \n \n \n \n );\n }\n\n function onFilterChange(summoningFilter: boolean, commentFilter: boolean) {\n }\n\n function clearForm() {\n onClear();\n }\n\n function getInitalValues() {\n return loadForm;\n }\n};\n\nexport default SentScreeningRequestsFilter;\n","import * as localStorageKeys from \"../../constants/localStorageKeys\";\n\nimport { DATE_FORMAT, TABLE_ROWS_OPTIONS } from \"../../constants\";\nimport {\n Paper,\n Table,\n TableBody,\n TableCell,\n TableContainer,\n TableHead,\n TablePagination,\n TableRow,\n TableSortLabel,\n makeStyles,\n} from \"@material-ui/core\";\nimport React, { useContext, useEffect, useState } from \"react\";\n\nimport { CancerScreeningResultModel } from \"../../models/cancerScreeningResultModel\";\nimport { LangContext } from \"../../context/LangContext\";\nimport NoResults from \"../NoResults\";\nimport { formatSsn } from \"../../utils\";\nimport moment from \"moment\";\nimport {oldNorseSort} from \"old-norse-alphabet-sort\";\nimport translations from \"../../assets/json/translations.json\";\nimport { useHistory } from \"react-router-dom\";\n\ninterface IProps {\n screeningRequests: CancerScreeningResultModel[];\n currentPage: number;\n rowsPerPage: number;\n count: number;\n setCurrentPage: (page: number) => void;\n setRowsPerPage: (rows: number) => void;\n}\n\nconst useStyles = makeStyles((theme) => ({\n container: {\n \"& th\": {\n fontWeight: 600,\n fontSize: 15,\n },\n \"& td\": {\n color: theme.palette.text.secondary,\n fontSize: 15,\n },\n },\n}));\n\nconst SentScreeningRequestsList: React.FC = ({\n screeningRequests,\n currentPage,\n rowsPerPage,\n count,\n setCurrentPage,\n setRowsPerPage,\n}) => {\n const classes = useStyles({});\n const [lang] = useContext(LangContext);\n const history = useHistory();\n const [sortKey, setSortKey] = useState(\"\");\n const [sortDirection, setSortDirection] = useState<\"asc\" | \"desc\">(\"asc\");\n const [sortedScreeningRequests, setSortedScreeningRequests] = useState<\n CancerScreeningResultModel[]\n >([]);\n\n const startIndex = currentPage * rowsPerPage;\n\n useEffect(() => {\n const localStorageSortDirection = localStorage.getItem(\n `${localStorageKeys.SENT_SCREENING_REQUESTS_SORT_DIRECTION}`\n );\n const localStorageSortKey = localStorage.getItem(\n `${localStorageKeys.SENT_SCREENING_REQUESTS_SORT_KEY}`\n );\n if (localStorageSortDirection) {\n setSortDirection(localStorageSortDirection as \"asc\" | \"desc\");\n }\n if (localStorageSortKey) {\n setSortKey(localStorageSortKey);\n }\n }, []);\n\n useEffect(() => {\n if (sortKey && tableColumns[sortKey]) {\n const sorted = tableColumns[sortKey].sort\n ? [...screeningRequests].sort(tableColumns[sortKey].sort)\n : [...screeningRequests];\n setSortedScreeningRequests(\n sortDirection === \"asc\" ? sorted : sorted.reverse()\n );\n } else {\n setSortedScreeningRequests(screeningRequests);\n }\n }, [screeningRequests, sortKey, sortDirection]);\n\n return (\n \n {screeningRequests.length ? (\n \n \n \n \n \n {Object.keys(tableColumns).map((columnKey) => (\n \n {tableColumns[columnKey].sort ? (\n onSortClick(columnKey)}\n >\n {tableColumns[columnKey].translation[lang]}\n \n ) : (\n tableColumns[columnKey].translation[lang]\n )}\n \n ))}\n \n \n \n {sortedScreeningRequests\n .slice(startIndex, startIndex + rowsPerPage)\n .map((screeningRequests) => (\n clickOnRequest(screeningRequests)}\n >\n {screeningRequests.personName}\n \n {formatSsn(screeningRequests.personSsn)}\n \n \n {screeningRequests.examinationDateTime &&\n moment(screeningRequests.examinationDateTime).format(\n DATE_FORMAT\n )}\n \n \n {screeningRequests.examinationReasonDescription}\n \n {screeningRequests.requestorName}\n {screeningRequests.specimenId}\n \n {screeningRequests.hpvTestCreateDate &&\n moment(screeningRequests.hpvTestCreateDate).format(\n DATE_FORMAT\n )}\n \n \n {screeningRequests.pathologyTestCreateDate &&\n moment(\n screeningRequests.pathologyTestCreateDate\n ).format(DATE_FORMAT)}\n \n \n {screeningRequests.hpvTestConclusionDate &&\n moment(\n screeningRequests.hpvTestConclusionDate\n ).format(DATE_FORMAT)}\n \n \n {screeningRequests.pathologyTestConclusionDate &&\n moment(\n screeningRequests.pathologyTestConclusionDate\n ).format(DATE_FORMAT)}\n \n \n ))}\n \n
\n
\n setCurrentPage(p)}\n onChangeRowsPerPage={(e) => {\n setCurrentPage(0);\n setRowsPerPage(parseInt(e.target.value, 10));\n }}\n />\n
\n ) : (\n \n )}\n
\n );\n\n function onSortClick(columnKey: string) {\n if (sortKey === columnKey) {\n setSortDirection(sortDirection === \"asc\" ? \"desc\" : \"asc\");\n } else {\n setSortKey(columnKey);\n setSortDirection(\"asc\");\n }\n }\n\n function clickOnRequest(screeningRequest: CancerScreeningResultModel) {\n localStorage.setItem(\n `${localStorageKeys.SENT_SCREENING_REQUESTS_SORT_DIRECTION}`,\n sortDirection\n );\n localStorage.setItem(\n `${localStorageKeys.SENT_SCREENING_REQUESTS_SORT_KEY}`,\n sortKey\n );\n history.push(`/sent-screening-request/${screeningRequest.id}`);\n }\n};\n\nconst tableColumns: {\n [key: string]: {\n translation: { is: string; en: string };\n sort?: (\n a: CancerScreeningResultModel,\n b: CancerScreeningResultModel\n ) => number;\n };\n} = {\n name: {\n translation: translations.name,\n sort: (a: CancerScreeningResultModel, b: CancerScreeningResultModel) => {\n if (!a.personName) {\n return -1;\n }\n if (!b.personName) {\n return 1;\n }\n return oldNorseSort(a.personName, b.personName);\n },\n },\n ssn: {\n translation: translations.kennitala,\n sort: (a: CancerScreeningResultModel, b: CancerScreeningResultModel) => {\n if (!a.personSsn) {\n return -1;\n }\n if (!b.personSsn) {\n return 1;\n }\n return a.personSsn.localeCompare(b.personSsn) < 0 ? 1 : -1;\n },\n },\n examinationDate: {\n translation: translations.examinationDate,\n sort: (a: CancerScreeningResultModel, b: CancerScreeningResultModel) => {\n if (!a.examinationDateTime) {\n return -1;\n }\n if (!b.examinationDateTime) {\n return 1;\n }\n return moment(a.examinationDateTime).isAfter(b.examinationDateTime)\n ? 1\n : -1;\n },\n },\n category: {\n translation: translations.category,\n sort: (a: CancerScreeningResultModel, b: CancerScreeningResultModel) => {\n if (!a.examinationReasonDescription) {\n return -1;\n }\n if (!b.examinationReasonDescription) {\n return 1;\n }\n return oldNorseSort(a.examinationReasonDescription, b.examinationReasonDescription);\n },\n },\n registeredBy: {\n translation: translations.registeredBy,\n sort: (a: CancerScreeningResultModel, b: CancerScreeningResultModel) => {\n if (!a.requestorName) {\n return -1;\n }\n if (!b.requestorName) {\n return 1;\n }\n return oldNorseSort(a.requestorName, b.requestorName);\n },\n },\n specimenId: {\n translation: translations.specimenId,\n sort: (a: CancerScreeningResultModel, b: CancerScreeningResultModel) => {\n if (!a.specimenId) {\n return -1;\n }\n if (!b.specimenId) {\n return 1;\n }\n return a.specimenId.localeCompare(b.specimenId) < 0 ? 1 : -1;\n },\n },\n HPVSent: {\n translation: translations.HPVSent,\n sort: (a: CancerScreeningResultModel, b: CancerScreeningResultModel) => {\n if (!a.hpvTestCreateDate) {\n return -1;\n }\n if (!b.hpvTestCreateDate) {\n return 1;\n }\n return moment(a.hpvTestCreateDate).isAfter(b.hpvTestCreateDate) ? 1 : -1;\n },\n },\n pathologySent: {\n translation: translations.pathologySent,\n sort: (a: CancerScreeningResultModel, b: CancerScreeningResultModel) => {\n if (!a.pathologyTestCreateDate) {\n return -1;\n }\n if (!b.pathologyTestCreateDate) {\n return 1;\n }\n return moment(a.pathologyTestCreateDate).isAfter(\n b.pathologyTestCreateDate\n )\n ? 1\n : -1;\n },\n },\n HPVReceived: {\n translation: translations.HPVReceived,\n sort: (a: CancerScreeningResultModel, b: CancerScreeningResultModel) => {\n if (!a.hpvTestConclusionDate) {\n return -1;\n }\n if (!b.hpvTestConclusionDate) {\n return 1;\n }\n return moment(a.hpvTestConclusionDate).isAfter(b.hpvTestConclusionDate)\n ? 1\n : -1;\n },\n },\n pathologyReceived: {\n translation: translations.pathologyReceived,\n sort: (a: CancerScreeningResultModel, b: CancerScreeningResultModel) => {\n if (!a.pathologyTestConclusionDate) {\n return -1;\n }\n if (!b.pathologyTestConclusionDate) {\n return 1;\n }\n return moment(a.pathologyTestConclusionDate).isAfter(\n b.pathologyTestConclusionDate\n )\n ? 1\n : -1;\n },\n },\n};\n\nexport default SentScreeningRequestsList;\n","import * as cancerScreeningService from \"../../services/cancerScreeningService\";\nimport * as localStorageKeys from \"../../constants/localStorageKeys\";\n\nimport { Grid, useTheme } from \"@material-ui/core\";\nimport React, { useContext, useEffect, useState } from \"react\";\nimport moment, { Moment } from \"moment\";\n\nimport { CancerScreeningResultModel } from \"../../models/cancerScreeningResultModel\";\nimport {\n IFormValues,\n} from \"../../components/CancerScreening/SentScreeningRequestsFilter\";\nimport { LangContext } from \"../../context/LangContext\";\nimport Layout from \"../../components/Layout\";\nimport LoadingIndicator from \"../../components/LoadingIndicator\";\nimport Section from \"../../components/Section\";\nimport SentScreeningRequestsFilter from \"../../components/CancerScreening/SentScreeningRequestsFilter\";\nimport SentScreeningRequestsList from \"../../components/CancerScreening/SentScreeningRequestsList\";\nimport { TABLE_ROWS_DEFAULT } from \"../../constants\";\nimport { clearSavedSentScreeningRequest } from \"../../utils\";\nimport { screeningStatuses } from \"../../constants/enums\";\nimport translations from \"../../assets/json/translations.json\";\nimport { useHistory } from \"react-router-dom\";\n\nconst NewScreeningRequests: React.FC = () => {\n const theme = useTheme();\n const [lang] = useContext(LangContext);\n\n\n const [loadingScreeningRequests, setloadingScreeningRequests] =\n useState(false);\n const [initialLoad, setInitialLoad] = useState(true);\n const [currentPage, setCurrentPage] = useState(0);\n const [rowsPerPage, setRowsPerPage] = useState(TABLE_ROWS_DEFAULT);\n const [count, setCount] = useState(0);\n const [allScreeningRequests, setAllScreeningRequests] = useState<\n CancerScreeningResultModel[] | null\n >(null);\n const [loadForm, setLoadForm] = useState(null);\n const [formCleared, setFormCleared] = useState(false);\n const history = useHistory();\n\n const initialForm: IFormValues = {\n patientSsn: \"\",\n requestorSsn: \"\",\n examinationDateFrom: moment().subtract(6, \"months\").startOf('day') as Moment | null,\n examinationDateTo: moment().endOf('day') as Moment | null,\n specimenId: \"\",\n showPendingHPVResult: false,\n showPendingPathologyResult: false,\n showAllResultsReceived: false,\n showHPVPositiveAndNoPathologyRequest: false\n };\n\n useEffect(() => {\n const form = localStorage.getItem(\n `${localStorageKeys.SENT_SCREENING_REQUESTS_FILTER_FORM}`\n );\n\n const pageSize = localStorage.getItem(\n `${localStorageKeys.SENT_SCREENING_REQUESTS_PAGE_SIZE}`\n );\n\n if (pageSize) {\n setRowsPerPage(Number(pageSize));\n }\n\n if (form) {\n const formJson = JSON.parse(form);\n\n const formValues: IFormValues = {\n patientSsn: formJson?.patientSsn || \"\",\n requestorSsn: formJson?.requestorSsn || \"\",\n examinationDateFrom: formJson?.examinationDateFrom\n ? (moment(formJson.examinationDateFrom) as Moment | null)\n : (null as Moment | null),\n examinationDateTo: formJson?.examinationDateTo\n ? (moment(formJson.examinationDateTo) as Moment | null)\n : (null as Moment | null),\n specimenId: \"\", // SpecimenId should always start as empty\n showPendingHPVResult: formJson?.showPendingHPVResult,\n showPendingPathologyResult: formJson?.showPendingPathologyResult,\n showAllResultsReceived: formJson?.showAllResultsReceived,\n showHPVPositiveAndNoPathologyRequest: formJson?.showHPVPositiveAndNoPathologyRequest,\n };\n\n setLoadForm(formValues);\n } else {\n setLoadForm({ ...initialForm });\n }\n /* eslint-disable */\n }, []);\n /* eslint-enable */\n\n useEffect(() => {\n if (!initialLoad) {\n // save rowsPerPage in localStorage everytime rowsPerPage changes\n localStorage.setItem(\n `${localStorageKeys.SENT_SCREENING_REQUESTS_PAGE_SIZE}`,\n JSON.stringify(rowsPerPage)\n );\n }\n /* eslint-disable */\n }, [rowsPerPage]);\n /* eslint-enable */\n\n return (\n \n
\n {loadForm && (\n {\n setFormCleared(true);\n setAllScreeningRequests(null);\n setCurrentPage(0);\n clearForm();\n clearSavedSentScreeningRequest();\n }}\n loadForm={loadForm || undefined}\n formCleared={formCleared}\n />\n )}\n\n {loadingScreeningRequests ? (\n \n \n \n ) : (\n allScreeningRequests && (\n \n )\n )}\n
\n
\n );\n\n async function getNewScreeningRequests(\n values: IFormValues,\n initialLoad?: boolean\n ) {\n setloadingScreeningRequests(true);\n if (!initialLoad) {\n localStorage.setItem(\n `${localStorageKeys.SENT_SCREENING_REQUESTS_FILTER_FORM}`,\n JSON.stringify(values)\n );\n }\n const response = await cancerScreeningService.getCancerScreenings({\n requestorSsn: values?.requestorSsn,\n requestorName: \"\",\n personSsn: values?.patientSsn,\n personName: \"\",\n dateTimeFrom: values?.examinationDateFrom\n ? new Date(values?.examinationDateFrom.toISOString())\n : undefined,\n dateTimeTo: values?.examinationDateTo\n ? new Date(values.examinationDateTo.toISOString())\n : undefined,\n specimenId: values.specimenId,\n screeningStatus: [\n screeningStatuses.REQUEST_SENT,\n screeningStatuses.SOME_RESULTS_ARRIVED,\n screeningStatuses.ALL_RESULTS_ARRIVED,\n ],\n });\n\n if (response.isOk) {\n let cancerScreeningRequests = response?.data?.cancerScreenings;\n\n if (cancerScreeningRequests?.length === 1 && (values.specimenId.length === 11 || values.specimenId.length === 12)) {\n // Automatically open this screening request\n history.push(`/sent-screening-request/${cancerScreeningRequests[0].id}`)\n return;\n }\n \n if (\n cancerScreeningRequests !== null &&\n (values.showPendingHPVResult || values.showPendingPathologyResult || values.showAllResultsReceived || values.showHPVPositiveAndNoPathologyRequest)\n ) {\n cancerScreeningRequests = filterCancerScreeningRequests(cancerScreeningRequests, values)\n }\n\n setAllScreeningRequests(cancerScreeningRequests || []);\n\n setCount(cancerScreeningRequests?.length || 0);\n setloadingScreeningRequests(false);\n setFormCleared(false);\n setCurrentPage(0);\n if (initialLoad) {\n setInitialLoad(false);\n setLoadForm(values);\n }\n } else {\n setloadingScreeningRequests(false);\n setAllScreeningRequests(null);\n }\n }\n\n function filterCancerScreeningRequests(cancerScreenings: CancerScreeningResultModel[] | undefined, values: IFormValues): CancerScreeningResultModel[] | undefined {\n const filteredOutScreeningRequests: { [id: string]: boolean } = {};\n\n cancerScreenings?.forEach((c) => {\n if (c.id) {\n if (values.showPendingHPVResult) {\n // Show screening requests that have been sent to hpv test but are still waiting for the result\n if (!(c.hpvTestCreateDate != null && c.hpvTestConclusionDate == null)) {\n // Filter this screening request out\n filteredOutScreeningRequests[c.id] = true;\n }\n }\n\n if (values.showPendingPathologyResult) {\n // Show screening requests that have been sent to pathology test but are still waiting for the result\n if (!(c.pathologyTestCreateDate != null && c.pathologyTestConclusionDate == null)) {\n // Filter this screening request out\n filteredOutScreeningRequests[c.id] = true;\n }\n }\n\n if (values.showAllResultsReceived) {\n // Show screening requests that have gotten results from all tests that they were sent to\n if ((c.hpvTestCreateDate != null && c.hpvTestConclusionDate == null)\n || (c.pathologyTestCreateDate != null && c.pathologyTestConclusionDate == null)) {\n filteredOutScreeningRequests[c.id] = true;\n }\n }\n\n if (values.showHPVPositiveAndNoPathologyRequest) {\n // Show screening requests that have a postive HPV code and a pathology request hasn't been sent\n if (!(c.positiveHPVResultCode && c.pathologyTestCreateDate == null)) {\n filteredOutScreeningRequests[c.id] = true;\n }\n }\n }\n });\n\n return cancerScreenings?.filter(\n (c) => c.id && !filteredOutScreeningRequests[c.id]\n );\n }\n\n function clearForm() {\n setLoadForm(initialForm);\n }\n};\n\nexport default NewScreeningRequests;\n","import React, { useState } from 'react';\nimport { TextField, Checkbox } from '@material-ui/core';\nimport {\n Autocomplete as MaterialUIAutocomplete,\n AutocompleteRenderInputParams,\n} from '@material-ui/lab';\n\nimport { CheckBoxOutlineBlank, CheckBox } from '@material-ui/icons';\n\ninterface IProps {\n id?: string;\n value?: IOption | null;\n values?: IOption[];\n label: string;\n items: IOption[];\n onChange: (value: unknown) => void;\n error?: boolean;\n disabled?: boolean;\n required?: boolean;\n fullWidth?: boolean;\n className?: string;\n inputValue?: string;\n onInputChange?: (text: string) => void;\n checkBox?: boolean;\n}\n\nexport interface IOption {\n value: string;\n label: string;\n}\n\nconst Autocomplete: React.FC = ({\n id,\n value,\n values,\n label,\n items,\n onChange,\n error,\n disabled,\n required,\n fullWidth,\n className,\n inputValue = '',\n onInputChange,\n checkBox,\n}) => {\n const [searchText, setSearchText] = useState(inputValue);\n\n const icon = ;\n const checkedIcon = ;\n\n if (values) {\n if (checkBox) {\n return renderCheckBox();\n }\n return (\n {\n onChange(val);\n updateSearch('');\n }}\n getOptionLabel={(opt) => opt.label}\n getOptionSelected={(opt, val) => val.value === opt.value}\n renderOption={(opt) => opt.label}\n renderInput={renderInput}\n inputValue={searchText}\n />\n );\n }\n if (checkBox) {\n return renderCheckBox();\n }\n return (\n onChange(val)}\n getOptionLabel={(opt) => opt.label}\n getOptionSelected={(opt, val) => val.value === opt.value}\n renderOption={(opt) => opt.label}\n renderInput={renderInput}\n />\n );\n\n function renderInput(params: AutocompleteRenderInputParams) {\n return (\n !!values && updateSearch(e.target.value)}\n variant=\"outlined\"\n label={`${label}${required ? ' *' : ''}`}\n error={error}\n disabled={disabled}\n inputProps={{\n ...params.inputProps,\n autoComplete: 'off',\n form: {\n autoComplete: 'off',\n },\n }}\n />\n );\n }\n\n function renderCheckBox() {\n return (\n {\n onChange(val);\n updateSearch('');\n }}\n getOptionLabel={(opt) => opt.label}\n getOptionSelected={(opt, val) => val.value === opt.value}\n renderOption={(\n option: IOption,\n { selected }: { selected: boolean }\n ) => (\n \n \n {option.label}\n \n )}\n renderInput={renderInput}\n inputValue={searchText}\n />\n );\n }\n\n function updateSearch(text: string) {\n setSearchText(text);\n if (onInputChange) {\n onInputChange(text);\n }\n }\n};\n\nexport default Autocomplete;\n","import React, { Fragment } from 'react';\nimport PropTypes from 'prop-types';\n\nexport function AccessGroupTabPanel(props: any) {\n const { children, value, index, className } = props;\n\n return (\n \n {value === index &&
{children}
}\n
\n );\n}\nAccessGroupTabPanel.propTypes = {\n children: PropTypes.node,\n index: PropTypes.number.isRequired,\n value: PropTypes.number.isRequired,\n className: PropTypes.string,\n};\n","import React, { useContext, useEffect, useState } from \"react\";\nimport {\n makeStyles,\n Grid,\n TextField,\n Dialog,\n DialogTitle,\n DialogContent,\n Tabs,\n Tab,\n Box,\n} from \"@material-ui/core\";\nimport { Formik, Form, FormikProps, FormikHelpers, FormikErrors } from \"formik\";\nimport * as Yup from \"yup\";\nimport Autocomplete, { IOption } from \"./Autocomplete\";\nimport { LangContext } from \"../context/LangContext\";\nimport { accessControl, accessListType } from \"../constants/enums\";\nimport translations from \"../assets/json/translations.json\";\nimport Button from \"./Button\";\nimport accessList from \"../assets/json/accessList.json\";\nimport { UserItem } from \"../models/Models\";\nimport { AccessGroupTabPanel } from \"./AccessGroupTabPanel\";\nimport theme from \"../theme\";\n\ninterface IProps {\n onSubmitForm: (\n values: IFormValues,\n { resetForm }: FormikHelpers\n ) => void;\n editUser?: UserItem | null;\n clearEditUser?: () => void;\n}\n\nexport interface IFormValues {\n ssn: string;\n name: string;\n vaccinationAccess: IOption[];\n borderControlAccess: IOption[];\n vaccinationRegions: IOption[];\n residenceLocations: IOption[];\n samplingLocations: IOption[];\n}\n\ntype IFormik = FormikProps;\n\nconst useStyles = makeStyles((theme) => ({\n paper: {\n padding: theme.spacing(3),\n },\n buttonGrid: {\n textAlign: \"right\",\n },\n buttonFormContainer: {\n marginLeft: theme.spacing(2),\n },\n dialogContent: {\n padding: \"0px\",\n overflow: \"hidden\",\n },\n}));\n\nconst UserForm: React.FC = ({\n onSubmitForm,\n editUser,\n clearEditUser,\n}) => {\n const classes = useStyles();\n const [lang] = useContext(LangContext);\n const adminAccessList = accessList.filter(\n (a) => a.id !== accessControl.SUPER_ADMIN\n );\n const vaccinationAccessListAdmin = adminAccessList.filter((a) =>\n a.accessGroup.includes(accessListType.VACCINATION)\n );\n const borderControlAccessListAdmin = adminAccessList.filter((a) =>\n a.accessGroup.includes(accessListType.BORDER_CONTROL)\n );\n const [showVaccinationRegions, setShowVaccinationRegions] = useState(false);\n const [showSamplingLocations, setShowSamplingLocations] = useState(false);\n const [requireSamplingAccess, setRequireSamplingAccess] = useState(false);\n const [openDialog] = useState(true);\n const [tabValue, setTabValue] = React.useState(0);\n const handleTabChange = (event: any, newValue: any) => {\n setTabValue(newValue);\n };\n\n useEffect(() => {\n if (editUser) {\n if (editUser.borderControlAccess.length > 0) {\n setShowSamplingLocations(true);\n }\n if (editUser.samplingLocations && editUser.samplingLocations.length > 0) {\n setRequireSamplingAccess(true);\n }\n }\n }, [editUser]);\n\n const schema = Yup.object().shape({\n ssn: Yup.string()\n .matches(/^[0-3]\\d[01]\\d{6}[09]$/)\n .required(),\n name: Yup.string().required(),\n borderControlAccess: requireSamplingAccess\n ? Yup.array().min(1)\n : Yup.array(),\n });\n\n if (editUser) {\n const borderControlUserAccess = editUser.borderControlAccess.map((access) =>\n access.id.toString()\n );\n const vaccinationUserAccess = editUser.vaccinationAccesses.map((access) =>\n access.id.toString()\n );\n\n const BorderControlAccessList = borderControlAccessListAdmin.map((a) => ({\n label: a.description[lang],\n value: a.id.toString(),\n }));\n const VaccinationAcessList = vaccinationAccessListAdmin.map((a) => ({\n label: a.description[lang],\n value: a.id.toString(),\n }));\n const userValues: IFormValues = {\n ssn: editUser.ssn,\n name: editUser.name,\n borderControlAccess: BorderControlAccessList.filter((a) =>\n borderControlUserAccess.includes(a.value)\n ),\n vaccinationAccess: VaccinationAcessList.filter((a) =>\n vaccinationUserAccess.includes(a.value)\n ),\n vaccinationRegions: [],\n residenceLocations:\n editUser.residenceLocations?.map((r) => {\n return { value: r.id.toString(), label: r.name } as IOption;\n }) ?? [],\n samplingLocations:\n editUser.samplingLocations?.map((r) => {\n return { value: r.id.toString(), label: r.name } as IOption;\n }) ?? [],\n };\n\n return (\n {\n clearEditUser && clearEditUser();\n }}\n maxWidth=\"md\"\n fullWidth\n >\n {editUser.name}\n \n {initializeFormik(userValues)}\n \n \n );\n }\n\n return {initializeFormik(null)};\n\n function initializeFormik(user: IFormValues | null) {\n return (\n \n {(formik) => (\n
\n \n {renderForm(formik)}\n {renderButtons(formik)}\n \n
\n )}\n \n );\n }\n\n function renderForm({\n values,\n errors,\n handleChange,\n handleBlur,\n setFieldValue,\n submitCount,\n }: IFormik) {\n return (\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n ({\n label: a.description[lang],\n value: a.id.toString(),\n }))}\n onChange={(val: any) => {\n setFieldValue(\"borderControlAccess\", val);\n if (val?.length > 0) {\n setShowSamplingLocations(true);\n } else {\n setShowSamplingLocations(false);\n }\n }}\n error={!!errors.borderControlAccess && !!submitCount}\n checkBox\n />\n \n \n \n \n ({\n label: a.description[lang],\n value: a.id.toString(),\n }))}\n onChange={(val: any) => {\n setFieldValue(\"vaccinationAccess\", val);\n if (val?.length > 0) {\n setShowVaccinationRegions(true);\n } else {\n setShowVaccinationRegions(false);\n }\n }}\n error={!!errors.vaccinationAccess && !!submitCount}\n checkBox\n />\n \n \n \n \n \n );\n }\n\n function renderButtons(formik: IFormik) {\n if (editUser) {\n return (\n \n \n {\n clearEditUser && clearEditUser();\n }}\n variant=\"outlined\"\n >\n {translations.cancel[lang]}\n \n \n );\n }\n return (\n \n \n \n );\n }\n\n function getTabValue(errors: FormikErrors, submitCount: number) {\n if (!!errors.samplingLocations && !!submitCount && showSamplingLocations) {\n return 0;\n } else if (\n !!errors.vaccinationRegions &&\n !!submitCount &&\n showVaccinationRegions\n ) {\n return 1;\n }\n return tabValue;\n }\n};\n\nexport default UserForm;\n","import React, { useState, useContext, useRef, useEffect } from \"react\";\nimport {\n makeStyles,\n TableContainer,\n Table,\n TableHead,\n TableRow,\n TableCell,\n TableBody,\n TablePagination,\n Typography,\n TextField,\n Grid,\n useMediaQuery,\n useTheme,\n} from \"@material-ui/core\";\n\nimport Button from \"./Button\";\nimport ConfirmDialog from \"./ConfirmDialog\";\nimport { UserItem } from \"../models/Models\";\nimport { TABLE_ROWS_OPTIONS, TABLE_ROWS_DEFAULT } from \"../constants\";\nimport { LangContext } from \"../context/LangContext\";\nimport translations from \"../assets/json/translations.json\";\nimport { IOption } from \"./Autocomplete\";\n\ninterface IProps {\n users: UserItem[];\n deleteSelectedUser: (ssn: string) => void;\n editSelectedUser: (ssn: UserItem) => void;\n accessGroup?: string;\n}\n\nconst useStyles = makeStyles((theme) => ({\n container: {\n \"& th\": {\n fontWeight: 600,\n fontSize: 15,\n },\n \"& td\": {\n color: theme.palette.text.secondary,\n fontSize: 15,\n },\n },\n searchContainer: {\n padding: theme.spacing(3, 2, 1, 2),\n display: \"flex\",\n alignItems: \"center\",\n },\n searchBox: {\n marginRight: theme.spacing(2),\n },\n deleteButton: {\n margin: theme.spacing(1),\n backgroundColor: theme.palette.error.main,\n \"&:hover\": {\n backgroundColor: theme.palette.error.dark,\n },\n minWidth: 90,\n },\n editButton: {\n margin: theme.spacing(1),\n minWidth: 90,\n },\n noUsersFound: {\n padding: theme.spacing(2.5),\n paddingBottom: theme.spacing(4),\n },\n}));\n\nconst UserList: React.FC = ({\n users,\n deleteSelectedUser,\n editSelectedUser,\n accessGroup,\n}) => {\n const classes = useStyles({});\n const [lang] = useContext(LangContext);\n const theme = useTheme();\n const smDown = useMediaQuery(theme.breakpoints.down(\"sm\"));\n const searchInput = useRef(null);\n\n const [searchText, setSearchText] = useState(\"\");\n const [filteredUsers, setFilteredUsers] = useState([]);\n const [deleteUser, setDeleteUser] = useState(null);\n const [currentPage, setCurrentPage] = useState(0);\n const [rowsPerPage, setRowsPerPage] = useState(TABLE_ROWS_DEFAULT);\n const [selectedVaccinationRegion, setSelectedVaccinationRegion] =\n useState(null);\n const [selectedLocation, setSelectedLocation] = useState(\n null\n );\n\n const startIndex = currentPage * rowsPerPage;\n\n useEffect(() => {\n let filteredData = users.filter((user) =>\n user.name.toLowerCase().includes(searchText.toLowerCase())\n );\n\n if (selectedLocation) {\n filteredData = filteredData.filter((item) =>\n item.samplingLocations\n ?.map((location) => location.id)\n .includes(Number(selectedLocation.value))\n );\n }\n setFilteredUsers(filteredData);\n }, [users, searchText, selectedVaccinationRegion, selectedLocation]);\n return (\n
\n
\n \n \n setSearchText(e.target.value)}\n className={classes.searchBox}\n />\n \n \n \n \n \n
\n {filteredUsers.length ? (\n \n \n \n \n \n {translations.name[lang]}\n {translations.SSN[lang]}\n {translations.access[lang]}\n \n {translations.deleteUser[lang]}\n \n \n \n \n {filteredUsers\n .slice(startIndex, startIndex + rowsPerPage)\n .map((user) => (\n \n {user.name}\n {user.ssn}\n \n {user.access.map((a) => a.description[lang]).join(\", \")}\n \n \n editSelectedUser(user)}\n padding={false}\n className={classes.editButton}\n >\n {translations.edit[lang]}\n \n setDeleteUser(user)}\n padding={false}\n className={classes.deleteButton}\n >\n {translations.delete[lang]}\n \n \n \n ))}\n \n
\n
\n setCurrentPage(p)}\n onChangeRowsPerPage={(e) => {\n setCurrentPage(0);\n setRowsPerPage(parseInt(e.target.value, 10));\n }}\n />\n
\n ) : (\n \n {translations.noUsersFound[lang]}\n \n )}\n {deleteUser && (\n {\n // Delete user\n deleteSelectedUser(deleteUser.ssn);\n setDeleteUser(null);\n }}\n onCancel={() => setDeleteUser(null)}\n confirmText={translations.delete[lang]}\n />\n )}\n
\n );\n\n function clearSearch() {\n setSearchText(\"\");\n setSelectedVaccinationRegion(null);\n setSelectedLocation(null);\n focusSearchInput();\n }\n\n function focusSearchInput() {\n if (searchInput && searchInput.current) {\n searchInput.current.focus();\n }\n }\n};\n\nexport default UserList;\n","import React, { useContext, useState, useEffect, useCallback } from 'react';\nimport { AppBar, Tabs, Tab, Typography, Box, Paper } from '@material-ui/core';\nimport { useHistory } from 'react-router-dom';\nimport { LangContext } from '../context/LangContext';\nimport translations from '../assets/json/translations.json';\nimport useNotifier from '../hooks/useNotifier';\nimport Section from '../components/Section';\nimport UserForm, { IFormValues } from '../components/UserForm';\n//import UserFormAccessRestricted from '../components/UserFormAccessRestricted'; to be used when we want to restrict locations on users\nimport { getAllUsers } from '../services/httpService';\nimport { UserItem } from '../models/Models';\nimport UserList from '../components/UserList';\nimport { deleteSelectedUser } from '../services/httpService';\nimport { FormikHelpers } from 'formik';\nimport { CreateUser } from '../models/Models';\nimport { createUser, editUser } from '../services/httpService';\nimport Layout from '../components/Layout';\nimport { accessListType } from '../constants/enums';\n\ninterface TabPanelProps {\n children?: React.ReactNode;\n index: any;\n value: any;\n}\n\nconst UserControlPage: React.FC = () => {\n const history = useHistory();\n //const [user, setUser] = useState(null);\n const [tabValue, setTabValue] = useState(0);\n const [users, setUsers] = useState(null);\n const [editSelectedUser, setEditSelectUser] = useState(null);\n const { notifyError, notifySuccess } = useNotifier();\n const getUsers = useCallback(() => {\n getAllUsers()\n .then((response) => {\n if (response.isOk) {\n setUsers(response.data);\n } else if (response.statusCode === 401) {\n history.push('/login');\n }\n })\n .catch((e) => {\n setUsers([]);\n });\n }, [history]);\n\n useEffect(() => {\n getUsers();\n }, [getUsers]);\n\n if ((window as any).logPrinterError === undefined) {\n (window as any).logPrinterError = notifyError;\n }\n\n const handleTabChange = (event: React.ChangeEvent<{}>, newValue: number) => {\n setTabValue(newValue);\n setEditSelectUser(null);\n };\n\n function TabPanel(props: TabPanelProps) {\n const { children, value, index, ...other } = props;\n\n return (\n