{"version":3,"mappings":"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","names":["ColumnNames","toColumnName","value","Urls","HelsenorgeUrls","HelseRegion","BEHANDLINGER_LOAD","BEHANDLINGER_LOAD_SUCCESS","BEHANDLINGER_LOAD_FAIL","loadBehandlinger","successBehandlinger","hovedgrupper","failedBehandlinger","error","initialState","behandlinger","createReducer","builder","state","action","getBehandlingerState","getBehandlingerLoading","getBehandlingerError","getHovedgrupper","hentBehandlinger","resources","dispatch","getState","get","data","HN_VELG_BEHANDLINGSSTED_FRONTEND","getResources","projectName","language","LanguageLocales","defaultResources","__variableDynamicImportRuntimeHelper","__vitePreload","React","AutosuggestComponent","label","allSuggestions","handleSuggestionSelected","setValue","suggestions","setSuggestions","onChange","_event","params","onSuggestionsClearRequested","hasMatchingLabel","suggestion","toMatch","hasMatchingSynonym","onSuggestionsFetchRequested","requestParams","points","a","b","onSuggestionSelected","e","highlightText","text","highlight","highlightStartIndex","highlightEndIndex","textStart","textHighlight","textEnd","jsx","autoSuggestionClass","showSynonym","search","matchingSynonym","x","highlightedText","jsxs","Autosuggest","s","Fragment","SOK_BEHANDLINGER_LOAD","SOK_BEHANDLINGER_LOAD_SUCCESS","SOK_BEHANDLINGER_LOAD_FAIL","loadSokBehandlinger","successSokBehandlinger","failedSokBehandlinger","sokBehandlinger","getSokBehandlingerState","getSokBehandlingerLoading","getSokBehandlinger","getBehandlinger","getSokBehandlingerSuggestions","createSelector","item","hentSokBehandlinger","useAppDispatch","useDispatch","useAppSelector","useSelector","behandlingSvgIkonMapper","kode","Behandlinger","navigate","useNavigate","loadingBehandlinger","errorBehandlinger","loadingSokBehandlinger","useResources","PageLoader","getSidetittelId","PageHeader","HighlightPanel","hovedgruppe","index","Title","ExpanderList","undergruppe","index2","LazyIcon","designsystemtypography","_a","behandling","Link","getFiltersStrings","sortFilterValues","filterValues","fv1","fv2","hentUkeString","uker","hentVentetidString","ventetider","ventetiderOverNull","ventetid","sortedVentetider","v1","v2","ukerLavest","ukerHoyest","hentHelseregionString","helseregion","hentHelseregionAvtaleString","filterValueOffentlige","filterValuePrivate","adresseHasSearchString","adresse","searchText","getFilteredBehandlingssteder","behandlingssteder","activeFilters","helseregionCheckedFilters","filter","behandlingstilbudCheckedFilters","_b","behandlingsstedCheckedFilters","_c","offentligeFilterChecked","privateFilterChecked","behandlingssted","lowerCaseSearchText","searchTextMatch","tilbud","helseregionMatch","helseRegion","behandlingstilbudMatch","offentligeMatch","privateMatch","getInitialFilters","helseregionFilterValues","behandlingstilbudFilterValues","behandlingsstederFilterValues","filterOffentlige","filterPrivate","filterValue","ventetidSortOrder","sortVentetidTypes","sortVentetider","getBehandlingsstilbudString","behandlingstilbud","behandlingsstilbud","getVentetidString","getVentetidElement","ventetidText","getBehandlingsstederTabellData","getBehandlingerTabellData","getBehandlingTabellClass","ventetidTypesCount","getTotalVentetidForBehandlingsgruppe","ventetiderMin","ventetiderMax","getBehandlingsstederBehandlingTableCaption","gruppe","convertFirstCharacterToUpperCase","fylkeCheckedFilters","tilbudCheckedFilters","filterRettighetsvurdering","fylkeMatch","tilbudMatch","rettighetvurderingMatch","v","hentAntallBehandlingerString","antallBehandlinger","skalVisesIVentetidCell","getTabellData","fylkeFilterValues","tilbudFilterValues","currentTilbudFilter","filterToAdd","nyeTilbudFiltre","getTableCaption","navn","BehandlingCell","rowData","columnName","other","Cell","BehandlingerTable","behandlingsGruppe","tabellData","caption","ventetidTypes","o","tabellDataMedVentetider","key","Table","simpleConfig","Column","ventetidType","i","VENTETIDER_FOR_BEHANDLINGSSTED_LOAD","VENTETIDER_FOR_BEHANDLINGSSTED_LOAD_SUCCESS","VENTETIDER_FOR_BEHANDLINGSSTED_LOAD_FAIL","loadVentetiderForBehandlingssted","orgnr","successVentetiderForBehandlingssted","behandlingsGrupper","failedVentetiderForBehandlingssted","ventetiderForBehandlingssted","getVentetiderForBehandlingsstedState","getVentetiderForBehandlingssted","getVentetiderForBehandlingsstedLoading","getVentetiderForBehandlingsstedLoaded","getVentetiderForBehandlingsstedError","getVentetiderForBehandlingsstedBehandlingsgrupper","hentVentetiderForBehandlingssted","AdresseComponent","TelefonComponent","telefon","AnchorLink","BehandlingsstedExpanded","expanded","loading","loaded","behandlingsstedData","Loader","NotificationPanel","BEHANDLINGSSTEDER_LOAD","BEHANDLINGSSTEDER_LOAD_SUCCESS","BEHANDLINGSSTEDER_LOAD_FAIL","loadBehandlingssteder","successBehandlingssteder","failedBehandlingssteder","getBehandlingsstederState","getBehandlingsstederLoading","getBehandlingsstederError","getBehandlingssteder","shouldHenteBehandlingssteder","hentBehandlingssteder","BehandlingstilbudCell","showComma","BehandlingsstedCell","styles","Behandlingssteder","filters","setDelayedFilter","updateFilters","searchQuery","setSearchQuery","useFilters","sortColumnKey","setSortColumnKey","sortDirIsAsc","setSortDirIsAsc","filterData","setFilterData","setTabellData","onFilterSearch","newSearchText","onSortColumns","asc","filtersStrings","renderFilterDropdowns","fv","Checkbox","Filter","FilterSearch","ExpandableRow","Forside","getHelsenorgeUrl","PageContainer","children","pageClass","breadcrumbLink","hasFullwidth","webcomppromopanel","visPersonvelger","getVisPersonvelger","HNaddEventListener","CommonEvents","HNeventSetHiddenPromopanel","PageRoot","getPath","ScrollRestoration","VENTETIDER_FOR_BEHANDLING_LOAD","VENTETIDER_FOR_BEHANDLING_LOAD_SUCCESS","VENTETIDER_FOR_BEHANDLING_LOAD_FAIL","VENTETIDER_FOR_BEHANDLING_RESET_ERROR","loadVentetiderForBehandling","successLoadVentetiderForBehandling","bid","ventetiderForBehandling","failedVentetiderForBehandling","resetErrorVentetiderForBehandling","getVentetiderForBehandlingState","getVentetiderForBehandlingLoading","getVentetiderForBehandlingError","getVentetiderForBehandlingByBid","shouldHenteVentetiderForBehandling","hentVentetiderForBehandling","rootReducer","combineReducers","hjelpeskuff","sokBehadlinger","cmsTjenesteTekster","store","configureStore","AntallCell","VentetidComponent","lineBreak","ventetidString","getLinks","showContent","setShowContent","lenker","setLenker","lenkerOrgNr","setLenkerOrgNr","harVentetider","seVentetiderUrl","getHostname","url","mounted","getFeatureToggle","links","region","Button","VentetidCell","ikkeOppdatert","VentetiderForBehandlingComponent","ventetiderForBehandlingByBid","searchparams","useSearchParams","harAntall","onSort","sortAscending","fetchLinks","orgNr","trackSearch","VentetiderForBehandlingContainer","vbsBreadCrumbResourceId","router","createBrowserRouter","VentetiderForBehandling","NotFound","VelgBehandlingsstedRoot","RouterProvider","enableMocking","ReactDOM","Provider","WebCompConsumer","getAssetsUrl"],"ignoreList":[],"sources":["../../../src/types/ExtendEnums.ts","../../../src/behandlinger/behandlinger.ts","../../../src/utils/resources-project.ts","../../../src/resources/index.ts","../../../src/shared/autosuggest/index.tsx","../../../src/shared/autosuggest/sok-behandlinger.ts","../../../src/store/hooks.ts","../../../src/utils/behandling-ikon-mapper.ts","../../../src/behandlinger/index.tsx","../../../src/utils/filters.ts","../../../src/utils/strings.ts","../../../src/behandlingssteder/filters-helper.ts","../../../src/behandlingssteder/table-helper.tsx","../../../src/ventetider-for-behandling/helper.ts","../../../src/behandlingssteder/behandling-cell.tsx","../../../src/behandlingssteder/behandlinger-table.tsx","../../../src/behandlingssteder/ventetider-for-behandlingssted.ts","../../../src/shared/adresse/index.tsx","../../../src/shared/telefon/index.tsx","../../../src/behandlingssteder/behandlingssted-expanded.tsx","../../../src/behandlingssteder/behandlingssteder.ts","../../../src/behandlingssteder/behandlingstilbud-cell.tsx","../../../src/shared/behandlingssted-cell/index.tsx","../../../src/behandlingssteder/index.tsx","../../../src/forside/index.tsx","../../../src/shared/page-container/index.tsx","../../../src/ventetider-for-behandling/ventetider-for-behandling.ts","../../../src/store/reducer.ts","../../../src/store/index.ts","../../../src/ventetider-for-behandling/antall-cell.tsx","../../../src/ventetider-for-behandling/ventetid.tsx","../../../src/ventetider-for-behandling/behandlingssted-expanded.tsx","../../../src/ventetider-for-behandling/ventetid-cell.tsx","../../../src/ventetider-for-behandling/ventetider-for-behandling-component.tsx","../../../src/ventetider-for-behandling/index.tsx","../../../src/index.tsx"],"sourcesContent":["export enum ColumnNames {\n Behandlingssted = 'behandlingssted',\n Behandlingstilbud = 'behandlingstilbud',\n Ventetid = 'ventetid',\n Antall = 'antall',\n Behandling = 'behandling',\n}\n\nexport const toColumnName = (value: string): ColumnNames => {\n if (Object.values(ColumnNames).includes(value as ColumnNames)) {\n return value as ColumnNames;\n }\n throw new Error(`Invalid column name ${value}`);\n};\n\nexport enum Urls {\n Behandlinger = '/behandlinger',\n VentetiderForBehandling = '/behandlinger/ventetider-for',\n Behandlingssteder = '/behandlingssteder',\n SlikVelgerDu = '/rettigheter/fritt-behandlingsvalg/slik-velger-du-steg-for-steg',\n}\n\nexport enum HelsenorgeUrls {\n Avtalespesialister = '/behandlere/avtalespesialist/',\n}\n\nexport enum HelseRegion {\n HelseMidt = 'HelseMidt',\n HelseNord = 'HelseNord',\n HelseSorOst = 'HelseSorOst',\n HelseVest = 'HelseVest',\n Helfo = 'Helfo',\n Unknown = 'Unknown',\n}\n","import { createReducer, ThunkDispatch } from '@reduxjs/toolkit';\n\nimport { BehandlingerResponse, BehandlingsHovedGruppe } from '../types/Helsenorge.VelgBehandlingssted.Libraries.EntitiesEntities';\nimport { HNVelgBehandlingsstedFrontend } from '../types/Resources';\n\nimport { get } from '@helsenorge/framework-utils/hn-proxy-service';\nimport { error } from '@helsenorge/framework-utils/logger';\n\nimport { RootState } from '../store';\nimport { GlobalAction } from '../store/reducer';\n\n/** ACTION TYPES */\n\nconst BEHANDLINGER_LOAD = 'velg-behandlingssted/BEHANDLINGER_LOAD';\nconst BEHANDLINGER_LOAD_SUCCESS = 'velg-behandlingssted/BEHANDLINGER_LOAD_SUCCESS';\nconst BEHANDLINGER_LOAD_FAIL = 'velg-behandlingssted/BEHANDLINGER_LOAD_FAIL';\n\n/** ACTIONS */\n\ninterface BehandlingerLoadAction {\n type: typeof BEHANDLINGER_LOAD;\n}\n\ninterface BehandlingerLoadSuccessAction {\n type: typeof BEHANDLINGER_LOAD_SUCCESS;\n hovedgrupper: Array | null;\n}\n\ninterface BehandlingerLoadFailAction {\n type: typeof BEHANDLINGER_LOAD_FAIL;\n error: string;\n}\n\nexport type BehandlingerAction = BehandlingerLoadAction | BehandlingerLoadSuccessAction | BehandlingerLoadFailAction;\n\n/** ACTION CREATORS */\n\nexport const loadBehandlinger = (): BehandlingerLoadAction => {\n return { type: BEHANDLINGER_LOAD };\n};\n\nexport const successBehandlinger = (hovedgrupper: Array | null): BehandlingerLoadSuccessAction => {\n return { type: BEHANDLINGER_LOAD_SUCCESS, hovedgrupper: hovedgrupper };\n};\n\nexport const failedBehandlinger = (error: string): BehandlingerLoadFailAction => {\n return { type: BEHANDLINGER_LOAD_FAIL, error: error };\n};\n\n/** REDUCER */\n\nexport type BehandlingerState = {\n loading: boolean;\n hovedgrupper?: Array | null;\n error?: string;\n};\n\nexport const initialState = { loading: false };\n\nconst behandlinger = createReducer(initialState, builder => {\n builder\n .addCase(BEHANDLINGER_LOAD, state => {\n state.loading = true;\n })\n .addCase(BEHANDLINGER_LOAD_SUCCESS, (state, action: BehandlingerLoadSuccessAction) => {\n state.loading = false;\n state.hovedgrupper = action.hovedgrupper;\n })\n .addCase(BEHANDLINGER_LOAD_FAIL, (state, action: BehandlingerLoadFailAction) => {\n state.loading = false;\n state.error = action.error;\n });\n});\n\n/** STATE SELECTORS */\n\nexport function getBehandlingerState(state: RootState): BehandlingerState {\n if (!state.behandlinger) {\n error('the behandlinger state is missing in this reducer');\n }\n return state.behandlinger;\n}\n\nexport function getBehandlingerLoading(state: RootState): boolean {\n return getBehandlingerState(state).loading;\n}\n\nexport function getBehandlingerError(state: RootState): string | undefined {\n return getBehandlingerState(state).error;\n}\n\nexport function getHovedgrupper(state: RootState): Array | undefined | null {\n return getBehandlingerState(state).hovedgrupper;\n}\n\n/** API */\n\nexport function hentBehandlinger(resources: HNVelgBehandlingsstedFrontend) {\n return (dispatch: ThunkDispatch, getState: () => RootState): Promise | undefined => {\n const state = getState();\n\n if (!getBehandlingerLoading(state) && !getHovedgrupper(state)) {\n dispatch(loadBehandlinger());\n\n return get('VelgBehandlingssted', 'api/v1/Behandlinger')\n .then(data => {\n if (data) {\n dispatch(successBehandlinger(data.behandlingsGrupper));\n } else {\n throw new Error('Teknisk feil');\n }\n })\n .catch(() => {\n dispatch(failedBehandlinger(resources.tekniskFeilBehandlinger));\n });\n }\n };\n}\n\nexport default behandlinger;\n","export const HN_VELG_BEHANDLINGSSTED_FRONTEND = 'HN.VelgBehandlingssted.Frontend';\n","import { HNVelgBehandlingsstedFrontend } from '../types/Resources';\n\nimport LanguageLocales from '@helsenorge/core-utils/constants/languages';\nimport { getModifiedResourcesForTest } from '@helsenorge/framework-utils/resources';\n\nimport defaultResources from './HN.VelgBehandlingssted.Frontend.nb-NO.json';\nimport { HN_VELG_BEHANDLINGSSTED_FRONTEND } from '../utils/resources-project';\n\ntype ResourceItem = { [key: string]: string } | Record;\n\nexport const getResources = async (\n projectName: string,\n language: LanguageLocales = LanguageLocales.NORWEGIAN\n): Promise => {\n if (projectName === HN_VELG_BEHANDLINGSSTED_FRONTEND && language === LanguageLocales.NORWEGIAN) {\n return defaultResources as unknown as T;\n }\n\n try {\n const resources: { default: T } = await import(`./${projectName}.${language}.json`);\n\n return resources.default;\n } catch (error) {\n throw new Error(`Failed to load resources for ${projectName} in ${language}: ${error}`);\n }\n};\n\nexport function getResourcesTestHelper(): HNVelgBehandlingsstedFrontend {\n return getModifiedResourcesForTest(defaultResources) as HNVelgBehandlingsstedFrontend;\n}\n","import React, { FormEvent } from 'react';\n\nimport {\n ChangeEvent,\n OnSuggestionsClearRequested,\n SuggestionsFetchRequested,\n OnSuggestionSelected,\n SuggestionsFetchRequestedParams,\n} from 'react-autosuggest';\n\nimport Autosuggest, { Suggestion } from '@helsenorge/autosuggest/components/autosuggest';\n\nimport './styles.scss';\n\ninterface Props {\n label: string;\n allSuggestions: Array;\n handleSuggestionSelected: (suggestion: Suggestion, e?: React.FormEvent) => void;\n}\n\nconst AutosuggestComponent: React.FunctionComponent = ({ label, allSuggestions, handleSuggestionSelected }: Props) => {\n const [value, setValue] = React.useState('');\n const [suggestions, setSuggestions] = React.useState([] as Array);\n\n const onChange = (_event: FormEvent, params: ChangeEvent): void => {\n setValue(params.newValue);\n };\n\n const onSuggestionsClearRequested: OnSuggestionsClearRequested = () => {\n setSuggestions([]);\n };\n\n const hasMatchingLabel = (suggestion: Suggestion, toMatch: string): boolean => {\n return !!suggestion.label && suggestion.label.toLowerCase().includes(toMatch.toLowerCase().trim());\n };\n\n const hasMatchingSynonym = (suggestion: Suggestion, toMatch: string): boolean => {\n return !!suggestion.optionalLabel && suggestion.optionalLabel.toLowerCase().includes(toMatch.toLowerCase().trim());\n };\n\n const onSuggestionsFetchRequested: SuggestionsFetchRequested = (requestParams: SuggestionsFetchRequestedParams) => {\n if (requestParams.value.trim().length >= 2) {\n setSuggestions(\n allSuggestions\n .filter((suggestion: Suggestion) => {\n return hasMatchingLabel(suggestion, requestParams.value) || hasMatchingSynonym(suggestion, requestParams.value);\n })\n .map(suggestion => {\n let points = 0;\n\n if (hasMatchingLabel(suggestion, requestParams.value)) {\n points += 2;\n }\n\n if (hasMatchingSynonym(suggestion, requestParams.value)) {\n points += 1;\n }\n\n return { ...suggestion, points };\n })\n .sort((a, b) => b.points - a.points)\n );\n } else {\n setSuggestions([]);\n }\n };\n\n const onSuggestionSelected: OnSuggestionSelected = (e, data) => {\n handleSuggestionSelected(data.suggestion, e);\n };\n\n const highlightText = (text: string, highlight: string): JSX.Element | string => {\n const highlightStartIndex: number = text.toLowerCase().indexOf(highlight.toLowerCase());\n if (highlightStartIndex >= 0) {\n const highlightEndIndex: number = highlightStartIndex + highlight.length;\n const textStart: string = text.substr(0, highlightStartIndex);\n const textHighlight: string = text.substr(highlightStartIndex, highlight.length);\n const textEnd: string = text.substr(highlightEndIndex);\n return (\n \n {textStart}\n {textHighlight}\n {textEnd}\n \n );\n }\n return text;\n };\n\n const autoSuggestionClass = 'vbs-autosuggestion';\n\n const showSynonym = (label: string): JSX.Element | null => {\n const search = value.toLowerCase().trim();\n\n const matchingSynonym = label.split(',').filter(x => x.toLowerCase().includes(search));\n\n const highlightedText = highlightText(matchingSynonym.join(', ').trim(), value);\n\n if (matchingSynonym.length > 0) {\n return (\n \n {' ('}\n {highlightedText}\n {')'}\n \n );\n }\n\n return null;\n };\n return (\n (\n <>\n {highlightText(`${s.label}`, value)}\n {s.optionalLabel && showSynonym(s.optionalLabel)}\n \n )}\n onSuggestionSelected={onSuggestionSelected}\n />\n );\n};\n\nexport default AutosuggestComponent;\n","import { createReducer, createSelector, ThunkDispatch } from '@reduxjs/toolkit';\n\nimport { SokBehandlingerResponse, Behandling } from '../../types/Helsenorge.VelgBehandlingssted.Libraries.EntitiesEntities';\n\nimport { Suggestion } from '@helsenorge/autosuggest/components/autosuggest';\nimport { get } from '@helsenorge/framework-utils/hn-proxy-service';\nimport { error } from '@helsenorge/framework-utils/logger';\n\nimport { RootState } from '../../store';\nimport { GlobalAction } from '../../store/reducer';\n\n/** ACTION TYPES */\n\nconst SOK_BEHANDLINGER_LOAD = 'velg-behandlingssted/SOK_BEHANDLINGER_LOAD';\nconst SOK_BEHANDLINGER_LOAD_SUCCESS = 'velg-behandlingssted/SOK_BEHANDLINGER_LOAD_SUCCESS';\nconst SOK_BEHANDLINGER_LOAD_FAIL = 'velg-behandlingssted/SOK_BEHANDLINGER_LOAD_FAIL';\n\n/** ACTIONS */\n\ninterface SokBehandlingerLoadAction {\n type: typeof SOK_BEHANDLINGER_LOAD;\n}\n\ninterface SokBehandlingerLoadSuccessAction {\n type: typeof SOK_BEHANDLINGER_LOAD_SUCCESS;\n behandlinger: Array | null;\n}\n\ninterface SokBehandlingerLoadFailAction {\n type: typeof SOK_BEHANDLINGER_LOAD_FAIL;\n}\n\nexport type SokBehandlingerAction = SokBehandlingerLoadAction | SokBehandlingerLoadSuccessAction | SokBehandlingerLoadFailAction;\n\n/** ACTION CREATORS */\n\nexport const loadSokBehandlinger = (): SokBehandlingerLoadAction => {\n return { type: SOK_BEHANDLINGER_LOAD };\n};\n\nexport const successSokBehandlinger = (behandlinger: Array | null): SokBehandlingerLoadSuccessAction => {\n return { type: SOK_BEHANDLINGER_LOAD_SUCCESS, behandlinger: behandlinger };\n};\n\nexport const failedSokBehandlinger = (): SokBehandlingerLoadFailAction => {\n return { type: SOK_BEHANDLINGER_LOAD_FAIL };\n};\n\n/** REDUCER */\n\nexport type SokBehandlingerState = {\n loading: boolean;\n behandlinger?: Array | null;\n};\n\nexport const initialState = { loading: false };\n\nconst sokBehandlinger = createReducer(initialState, builder => {\n builder\n .addCase(SOK_BEHANDLINGER_LOAD, state => {\n state.loading = true;\n })\n .addCase(SOK_BEHANDLINGER_LOAD_SUCCESS, (state, action: SokBehandlingerLoadSuccessAction) => {\n state.loading = false;\n state.behandlinger = action.behandlinger;\n })\n .addCase(SOK_BEHANDLINGER_LOAD_FAIL, state => {\n state.loading = false;\n });\n});\n\n/** STATE SELECTORS */\n\nexport function getSokBehandlingerState(state: RootState): SokBehandlingerState {\n if (!state.sokBehadlinger) {\n error('the sokBehandlinger state is missing in this reducer');\n }\n return state.sokBehadlinger;\n}\n\nexport function getSokBehandlingerLoading(state: RootState): boolean {\n return getSokBehandlingerState(state).loading;\n}\n\nexport function getSokBehandlinger(state: RootState): Array | undefined | null {\n return getSokBehandlingerState(state).behandlinger;\n}\n\nconst getBehandlinger = (state: RootState): Array | null | undefined => getSokBehandlingerState(state).behandlinger;\n\nexport const getSokBehandlingerSuggestions = createSelector([getBehandlinger], behandlinger => {\n let suggestions: Array = [];\n\n if (behandlinger && behandlinger.length > 0) {\n suggestions = behandlinger.map(item => {\n return {\n label: item.navn ? item.navn : '',\n value: item.behandlingsId ? item.behandlingsId : '',\n optionalLabel: item.synonym ? `${item.synonym}` : '',\n };\n });\n }\n\n return suggestions;\n});\n\n/** API */\n\nexport function hentSokBehandlinger() {\n return (dispatch: ThunkDispatch, getState: () => RootState): Promise | undefined => {\n const state = getState();\n\n if (!getSokBehandlingerLoading(state) && !getSokBehandlinger(state)) {\n dispatch(loadSokBehandlinger());\n\n return get('VelgBehandlingssted', 'api/v1/SokBehandlinger')\n .then(data => {\n if (data) {\n dispatch(successSokBehandlinger(data.behandlinger));\n } else {\n throw new Error('Teknisk feil');\n }\n })\n .catch(() => {\n dispatch(failedSokBehandlinger());\n });\n }\n };\n}\n\nexport default sokBehandlinger;\n","import { useDispatch, useSelector } from 'react-redux';\n\nimport type { RootState, AppDispatch } from '.';\n\nexport const useAppDispatch = useDispatch.withTypes();\n\nexport const useAppSelector = useSelector.withTypes();\n","import { IconName } from '@helsenorge/designsystem-react/components/Icons/IconNames';\n\nexport const behandlingSvgIkonMapper = (kode: string | null): IconName => {\n switch (kode) {\n case 'FY01':\n return 'ElderlyPerson';\n case 'FY02':\n return 'FirstAidKit';\n case 'FY03':\n return 'PersonInXRayMachine';\n case 'FY04':\n return 'Breasts';\n case 'FY05':\n return 'DigestiveSystem';\n case 'FY06':\n return 'MaleDoctor';\n case 'FY07':\n return 'Pregnant';\n case 'FY08':\n return 'Heart';\n case 'FY09':\n return 'Hormone';\n case 'FY10':\n return 'Skin';\n case 'FY11':\n return 'PersonWithJaw';\n case 'FY12':\n return 'Female';\n case 'FY13':\n return 'MaleGenitalia';\n case 'FY14':\n return 'ArmFlexing';\n case 'FY15':\n return 'MuscleLeg';\n case 'FY16':\n return 'MuscleBack';\n case 'FY17':\n return 'PersonWithBrain';\n case 'FY18':\n return 'Kidney';\n case 'FY19':\n return 'JointPain';\n case 'FY20':\n return 'BandAid';\n case 'FY21':\n return 'MaleDoctorAndPerson';\n case 'FY22':\n return 'EarNoseThroat';\n case 'FY23':\n return 'Eye';\n case 'FY24':\n return 'Lungs';\n case 'FY25':\n return 'TeddyBear';\n case 'RE01':\n return 'Skeleton';\n case 'RE02':\n return 'JointPain';\n case 'RE03':\n return 'Amputation';\n case 'RE04':\n return 'PersonRelaxing';\n case 'RE05':\n return 'Cancer';\n case 'RE06':\n return 'Brain';\n case 'RE07':\n return 'PersonWithBrain';\n case 'RE08':\n return 'Heart';\n case 'RE09':\n return 'Lungs';\n case 'RE10':\n return 'ArmFlexing';\n case 'RE11':\n return 'PersonOverweight';\n case 'RE12':\n return 'PersonWithSenses';\n case 'RE13':\n return 'Hiker';\n case 'RE14':\n return 'PersonWorking';\n case 'RE15':\n return 'Puzzle';\n case 'REHAB':\n return 'PersonWorking';\n case 'REHA':\n return 'PersonWorking';\n case 'HABU':\n return 'ChildPlaying';\n case 'HAVO':\n return 'PersonWithCrutches';\n case 'TSB':\n return 'BeerAndPills';\n case 'VOP':\n return 'MentalHealthAdult';\n case 'BUP':\n return 'MentalHealthChild';\n default:\n return 'Minus';\n }\n};\n","import React from 'react';\n\nimport { Link, useNavigate } from 'react-router-dom';\n\nimport { Urls } from '../types/ExtendEnums';\nimport {\n BehandlingsHovedGruppe,\n BehandlingsUnderGruppe,\n Behandling,\n} from '../types/Helsenorge.VelgBehandlingssted.Libraries.EntitiesEntities';\nimport { HNVelgBehandlingsstedFrontend } from '../types/Resources';\n\nimport ExpanderList from '@helsenorge/designsystem-react/components/ExpanderList';\nimport HighlightPanel from '@helsenorge/designsystem-react/components/HighlightPanel';\nimport LazyIcon from '@helsenorge/designsystem-react/components/LazyIcon';\nimport Title from '@helsenorge/designsystem-react/components/Title';\nimport designsystemtypography from '@helsenorge/designsystem-react/scss/typography.module.scss';\n\nimport { Suggestion } from '@helsenorge/autosuggest/components/autosuggest';\nimport PageHeader from '@helsenorge/core-framework/page-header';\nimport PageLoader from '@helsenorge/core-framework/page-loader/page-loader';\nimport { getSidetittelId } from '@helsenorge/framework-utils/hn-page';\nimport useResources from '@helsenorge/framework-utils/resources/useResources';\n\nimport { hentBehandlinger, getBehandlingerLoading, getBehandlingerError, getHovedgrupper } from './behandlinger';\nimport { getResources } from '../resources';\nimport AutosuggestComponent from '../shared/autosuggest';\nimport { hentSokBehandlinger, getSokBehandlingerLoading, getSokBehandlingerSuggestions } from '../shared/autosuggest/sok-behandlinger';\nimport { useAppDispatch, useAppSelector } from '../store/hooks';\nimport { behandlingSvgIkonMapper } from '../utils/behandling-ikon-mapper';\nimport { HN_VELG_BEHANDLINGSSTED_FRONTEND } from '../utils/resources-project';\n\nimport './styles.scss';\n\nconst Behandlinger: React.FunctionComponent = () => {\n const dispatch = useAppDispatch();\n const navigate = useNavigate();\n\n const loadingBehandlinger = useAppSelector(getBehandlingerLoading);\n const errorBehandlinger = useAppSelector(getBehandlingerError);\n const hovedgrupper = useAppSelector(getHovedgrupper);\n\n const loadingSokBehandlinger = useAppSelector(getSokBehandlingerLoading);\n const allSuggestions = useAppSelector(getSokBehandlingerSuggestions);\n\n const resources = useResources(HN_VELG_BEHANDLINGSSTED_FRONTEND, getResources);\n\n const handleSuggestionSelected = (suggestion: Suggestion): void => {\n navigate(`${Urls.VentetiderForBehandling}?bid=${suggestion.value}`);\n };\n\n React.useEffect(() => {\n if (resources) {\n dispatch(hentBehandlinger(resources));\n }\n }, [resources]);\n\n React.useEffect(() => {\n dispatch(hentSokBehandlinger());\n }, []);\n\n return (\n resources && (\n \n \n\n \n \n \n\n {hovedgrupper?.map((hovedgruppe: BehandlingsHovedGruppe | null, index: number) => {\n return (\n hovedgruppe && (\n
\n \n {hovedgruppe.navn}\n \n\n \n {hovedgruppe.behandlingsUnderGrupper?.map((undergruppe: BehandlingsUnderGruppe, index2: number) => {\n return (\n }\n title={undergruppe.navn ? undergruppe.navn : ''}\n color=\"white\"\n >\n \n {undergruppe.behandlinger?.map((behandling: Behandling, index: number) => {\n return (\n
  • \n {behandling.navn}\n
  • \n );\n })}\n \n \n );\n })}\n
    \n
    \n )\n );\n })}\n \n )\n );\n};\n\nexport default Behandlinger;\n","import { HNVelgBehandlingsstedFrontend } from '../types/Resources';\n\nimport { FilterResources } from '@helsenorge/filter/components/filter';\n\nimport { FilterValue } from '../behandlingssteder/filters-helper';\n\nexport const getFiltersStrings = (resources: HNVelgBehandlingsstedFrontend | null): FilterResources => {\n return {\n filterTitle: resources?.filterTitle,\n hideFilter: resources?.filterHide,\n showFilter: resources?.filterShow,\n resetFilters: resources?.filterReset,\n selectedFilters: resources?.filterSelected,\n numResults: resources?.filterResultsNum,\n showResults: resources?.filterResultsShow,\n filterOn: resources?.filterOn,\n useFilter: resources?.filterUse,\n filterHeading: resources?.filterHeading,\n cancel: resources?.filterCancel,\n filterMobileNavigateBack: resources?.filterMobileBack,\n chosen: resources?.filterChosen,\n searchButtonText: resources?.filterSearchText,\n hideSecondaryFilters: resources?.filterSecondaryHide,\n showSecondaryFilters: resources?.filterSecondaryShow,\n toggleFilterAndSort: resources?.filterToggleFilterAndSort,\n };\n};\n\nexport const sortFilterValues = (filterValues: Array): Array => {\n return filterValues.sort((fv1: FilterValue, fv2: FilterValue) => {\n return fv1.displayName && fv2.displayName ? fv1.displayName.localeCompare(fv2.displayName, 'nb') : 0;\n });\n};\n","import { HelseRegion } from '../types/ExtendEnums';\nimport { Ventetid } from '../types/Helsenorge.VelgBehandlingssted.Libraries.EntitiesEntities';\nimport { HNVelgBehandlingsstedFrontend } from '../types/Resources';\n\nexport const hentUkeString = (resources: HNVelgBehandlingsstedFrontend | null, uker: number): string | undefined => {\n return uker === 1 ? resources?.tabellUke : resources?.tabellUker;\n};\n\nexport const hentVentetidString = (\n resources: HNVelgBehandlingsstedFrontend | null,\n ventetider?: Array | null\n): string | undefined => {\n if (ventetider && ventetider.length) {\n const ventetiderOverNull = ventetider.filter(ventetid => ventetid.ukerTotalt > 0);\n\n if (ventetiderOverNull.length === 0) {\n return resources?.ikkeOppdatert;\n }\n\n if (ventetiderOverNull.length === 1) {\n return `${ventetiderOverNull[0].ukerTotalt} ${hentUkeString(resources, ventetiderOverNull[0].ukerTotalt)}`;\n }\n\n const sortedVentetider: Array = Object.assign([], ventetiderOverNull);\n sortedVentetider.sort((v1: Ventetid, v2: Ventetid) => v1.ukerTotalt - v2.ukerTotalt);\n\n const ukerLavest = sortedVentetider[0].ukerTotalt;\n const ukerHoyest = sortedVentetider[sortedVentetider.length - 1].ukerTotalt;\n\n if (ukerLavest === ukerHoyest) {\n return `${ukerLavest} ${hentUkeString(resources, ukerLavest)}`;\n }\n\n return `${ukerLavest} - ${ukerHoyest} ${resources?.tabellUker}`;\n }\n return '-';\n};\n\nexport const hentHelseregionString = (helseregion: string | null, resources: HNVelgBehandlingsstedFrontend): string => {\n switch (helseregion) {\n case HelseRegion.Unknown:\n return '';\n case HelseRegion.HelseMidt:\n return resources.filterHelseregionHelseMidt;\n case HelseRegion.HelseNord:\n return resources.filterHelseregionHelseNord;\n case HelseRegion.HelseVest:\n return resources.filterHelseregionHelseVest;\n case HelseRegion.HelseSorOst:\n return resources.filterHelseregionHelseSorOst;\n case HelseRegion.Helfo:\n return resources.filterHelseregionHelfo;\n default:\n return '';\n }\n};\n\nexport const hentHelseregionAvtaleString = (helseregion: string | null, resources: HNVelgBehandlingsstedFrontend): string => {\n switch (helseregion) {\n case HelseRegion.Unknown:\n return '';\n case HelseRegion.HelseMidt:\n return resources.ventetiderForBehandlingAvtaleMedHelseMidt;\n case HelseRegion.HelseNord:\n return resources.ventetiderForBehandlingAvtaleMedHelseNord;\n case HelseRegion.HelseVest:\n return resources.ventetiderForBehandlingAvtaleMedHelseVest;\n case HelseRegion.HelseSorOst:\n return resources.ventetiderForBehandlingAvtaleMedHelseSorOst;\n default:\n return '';\n }\n};\n","import { HelseRegion } from '../types/ExtendEnums';\nimport {\n BehandlingsstederBehandlingssted,\n Behandlingstilbud,\n Adresse,\n} from '../types/Helsenorge.VelgBehandlingssted.Libraries.EntitiesEntities';\nimport { HNVelgBehandlingsstedFrontend } from '../types/Resources';\n\nimport { ActiveFilter } from '@helsenorge/filter/components/filter/useFilters';\n\nimport { sortFilterValues } from '../utils/filters';\nimport { hentHelseregionString } from '../utils/strings';\n\nconst filterValueOffentlige = 'offentlige';\nconst filterValuePrivate = 'private';\n\nexport const adresseHasSearchString = (adresse: Adresse | null, searchText: string): boolean => {\n return adresse\n ? (!!adresse.gateadresse && adresse.gateadresse.toLowerCase().includes(searchText)) ||\n (!!adresse.postnr && adresse.postnr.includes(searchText)) ||\n (!!adresse.poststed && adresse.poststed.toLowerCase().includes(searchText))\n : false;\n};\n\nexport type FilterObject = { name?: string; id?: string; values: Array; index: number };\nexport type FilterValue = { checked?: boolean; id?: string; value: string; displayName?: string };\n\nexport const getFilteredBehandlingssteder = (\n resources: HNVelgBehandlingsstedFrontend | null,\n behandlingssteder: Array,\n activeFilters: Array | undefined,\n searchText?: string\n): Array => {\n const helseregionCheckedFilters =\n activeFilters?.filter(filter => filter.name.split(';')[0] === resources?.filterHelseregion).map(filter => filter.value) ?? [];\n const behandlingstilbudCheckedFilters =\n activeFilters?.filter(filter => filter.name.split(';')[0] === resources?.filterBehandlingstilbud).map(filter => filter.value) ?? [];\n const behandlingsstedCheckedFilters =\n activeFilters?.filter(filter => filter.name.split(';')[0] === resources?.filterBehandlingssted).map(filter => filter.value) ?? [];\n const offentligeFilterChecked = behandlingsstedCheckedFilters.some(filter => filter === filterValueOffentlige);\n const privateFilterChecked = behandlingsstedCheckedFilters.some(filter => filter === filterValuePrivate);\n\n return helseregionCheckedFilters.length ||\n behandlingstilbudCheckedFilters.length ||\n searchText ||\n offentligeFilterChecked ||\n privateFilterChecked\n ? behandlingssteder.filter((behandlingssted: BehandlingsstederBehandlingssted) => {\n const lowerCaseSearchText = searchText ? searchText.toLowerCase() : '';\n\n const searchTextMatch = searchText\n ? (!!behandlingssted.navn && behandlingssted.navn.toLowerCase().includes(lowerCaseSearchText)) ||\n (!!behandlingssted.navnBedriftsregister && behandlingssted.navnBedriftsregister.toLowerCase().includes(lowerCaseSearchText)) ||\n (!!behandlingssted.orgnr && behandlingssted.orgnr.toString().includes(lowerCaseSearchText)) ||\n (behandlingssted.behandlingstilbud &&\n behandlingssted.behandlingstilbud.some(tilbud => !!tilbud.navn && tilbud.navn.toLowerCase().includes(lowerCaseSearchText))) ||\n adresseHasSearchString(behandlingssted.besoksAdresse, lowerCaseSearchText) ||\n adresseHasSearchString(behandlingssted.postAdresse, lowerCaseSearchText)\n : true;\n\n let helseregionMatch = helseregionCheckedFilters.length ? false : true;\n if (helseregionCheckedFilters.length && !!behandlingssted.helseRegioner && behandlingssted.helseRegioner.length) {\n for (const helseRegion of behandlingssted.helseRegioner) {\n if (helseregionCheckedFilters.includes(helseRegion)) {\n helseregionMatch = true;\n break;\n }\n }\n }\n\n const behandlingstilbudMatch = behandlingstilbudCheckedFilters.length\n ? !!behandlingssted.behandlingstilbud &&\n behandlingssted.behandlingstilbud.some(tilbud => !!tilbud.navn && behandlingstilbudCheckedFilters.includes(tilbud.navn))\n : true;\n\n const offentligeMatch = offentligeFilterChecked && !privateFilterChecked ? !behandlingssted.erPrivat : true;\n const privateMatch = privateFilterChecked && !offentligeFilterChecked ? behandlingssted.erPrivat : true;\n\n return searchTextMatch && helseregionMatch && behandlingstilbudMatch && offentligeMatch && privateMatch;\n })\n : behandlingssteder;\n};\n\nexport const getInitialFilters = (\n resources: HNVelgBehandlingsstedFrontend,\n behandlingssteder: Array\n): Array => {\n let helseregionFilterValues: Array = [];\n let behandlingstilbudFilterValues: Array = [];\n let behandlingsstederFilterValues: Array = [];\n let filterOffentlige = false;\n let filterPrivate = false;\n\n behandlingssteder.forEach((behandlingssted: BehandlingsstederBehandlingssted, index: number) => {\n if (!!behandlingssted.helseRegioner && behandlingssted.helseRegioner.length) {\n for (const helseRegion of behandlingssted.helseRegioner) {\n if (\n !helseregionFilterValues.some(\n filterValue => helseRegion !== HelseRegion.Unknown && !!helseRegion && filterValue.value === helseRegion\n )\n ) {\n helseregionFilterValues = helseregionFilterValues.concat({\n checked: false,\n id: `helseregion-${helseRegion}`,\n displayName: hentHelseregionString(helseRegion, resources),\n value: helseRegion ? helseRegion : '',\n });\n }\n }\n }\n\n if (behandlingssted.behandlingstilbud) {\n behandlingssted.behandlingstilbud.forEach((tilbud: Behandlingstilbud, index2: number) => {\n if (!behandlingstilbudFilterValues.some(filterValue => filterValue.value === tilbud.navn)) {\n behandlingstilbudFilterValues = behandlingstilbudFilterValues.concat({\n checked: false,\n id: `behandlingstilbud${index}${index2}`,\n displayName: tilbud.navn ? tilbud.navn : '',\n value: tilbud.navn ? tilbud.navn : '',\n });\n }\n });\n }\n\n if (!filterOffentlige && !behandlingssted.erPrivat) {\n filterOffentlige = true;\n behandlingsstederFilterValues = behandlingsstederFilterValues.concat({\n checked: false,\n id: `behandlingssted-offentlige`,\n displayName: resources.filterBehandlingsstedOffentlige,\n value: filterValueOffentlige,\n });\n }\n if (!filterPrivate && behandlingssted.erPrivat) {\n filterPrivate = true;\n behandlingsstederFilterValues = behandlingsstederFilterValues.concat({\n checked: false,\n id: `behandlingssted-private`,\n displayName: resources.filterBehandlingsstedPrivate,\n value: filterValuePrivate,\n });\n }\n });\n\n return [\n {\n index: 0,\n values: sortFilterValues(helseregionFilterValues),\n name: resources.filterHelseregion,\n },\n {\n index: 1,\n values: sortFilterValues(behandlingstilbudFilterValues),\n name: resources.filterBehandlingstilbud,\n },\n {\n index: 2,\n values: sortFilterValues(behandlingsstederFilterValues),\n name: resources.filterBehandlingssted,\n },\n ];\n};\n","import { ColumnNames } from '../types/ExtendEnums';\nimport {\n BehandlingsstederBehandlingssted,\n Behandlingstilbud,\n BehandlingMedVentetider,\n Ventetid,\n} from '../types/Helsenorge.VelgBehandlingssted.Libraries.EntitiesEntities';\nimport { HNVelgBehandlingsstedFrontend } from '../types/Resources';\n\nimport { ActiveFilter } from '@helsenorge/filter/components/filter/useFilters';\n\nimport { getFilteredBehandlingssteder } from './filters-helper';\nimport { hentUkeString, hentVentetidString } from '../utils/strings';\n\nconst ventetidSortOrder = [\n 'utredning',\n 'undersøkelse',\n 'utredning/undersøkelse',\n 'poliklinisk utredning/behandling',\n 'undersøkelse/utredning',\n 'dagbehandling',\n 'poliklinisk gruppebehandling',\n 'innleggelse',\n 'innleggelse, individuelt tilbud',\n 'innleggelse, gruppetilbud',\n];\n\nexport const sortVentetidTypes = (a: string, b: string): number => ventetidSortOrder.indexOf(a) - ventetidSortOrder.indexOf(b);\n\nexport const sortVentetider = (a: Ventetid, b: Ventetid): number =>\n ventetidSortOrder.indexOf(a.type ?? '') - ventetidSortOrder.indexOf(b.type ?? '');\n\nconst getBehandlingsstilbudString = (behandlingstilbud: Array | null): string => {\n let behandlingsstilbud = '';\n\n if (behandlingstilbud) {\n behandlingstilbud.forEach((tilbud: Behandlingstilbud) => {\n behandlingsstilbud += tilbud.navn + ' ' + tilbud.antall;\n });\n }\n\n return behandlingsstilbud;\n};\n\nexport const getVentetidString = (resources: HNVelgBehandlingsstedFrontend, ventetid: Ventetid | null | undefined): string | null => {\n if (!ventetid || (ventetid.uker === null && ventetid.erGyldig === null)) {\n return resources.behandlingsstederTilbysIkke;\n } else if (ventetid?.erGyldig === false) {\n return resources.ikkeOppdatert;\n } else if (ventetid !== null && ventetid?.uker) {\n return `${ventetid.uker} ${hentUkeString(resources, ventetid?.uker)}`;\n }\n return null;\n};\n\nexport const getVentetidElement = (resources: HNVelgBehandlingsstedFrontend, ventetid: Ventetid | null | undefined): JSX.Element | null => {\n const ventetidText = getVentetidString(resources, ventetid);\n\n if (!ventetidText) {\n return null;\n }\n\n return {ventetidText};\n};\n\nexport interface TabellData {\n behandlingsstedData: BehandlingsstederBehandlingssted;\n [ColumnNames.Behandlingssted]: string;\n orgnr: string;\n behandlingstilbud: string;\n ventetid: string;\n}\n\nexport const getBehandlingsstederTabellData = (\n resources: HNVelgBehandlingsstedFrontend | null,\n behandlingssteder: Array,\n activeFilters: Array | undefined = undefined,\n searchText?: string\n): Array => {\n return getFilteredBehandlingssteder(resources, behandlingssteder, activeFilters, searchText).map(\n (behandlingssted: BehandlingsstederBehandlingssted) => {\n let ventetider: Array = [{ uker: behandlingssted.ukerMin, ukerTotalt: behandlingssted.ukerMin, type: '', erGyldig: true }];\n\n if (behandlingssted.ukerMax > behandlingssted.ukerMin) {\n ventetider = ventetider.concat({\n uker: behandlingssted.ukerMax,\n ukerTotalt: behandlingssted.ukerMax,\n type: '',\n erGyldig: true,\n });\n }\n\n return {\n behandlingsstedData: behandlingssted,\n orgnr: behandlingssted.orgnr.toString(),\n [ColumnNames.Behandlingssted]: behandlingssted.navn ? behandlingssted.navn : '',\n [ColumnNames.Behandlingstilbud]: getBehandlingsstilbudString(behandlingssted.behandlingstilbud),\n [ColumnNames.Ventetid]: `${hentVentetidString(resources, ventetider)}`,\n };\n }\n );\n};\n\nexport interface BehandlingTabellData {\n behandlingData: BehandlingMedVentetider;\n [ColumnNames.Behandling]: string;\n [ColumnNames.Antall]: string;\n}\n\nexport const getBehandlingerTabellData = (\n resources: HNVelgBehandlingsstedFrontend,\n behandlinger: Array | null\n): Array => {\n return behandlinger\n ? behandlinger.map((behandling: BehandlingMedVentetider) => {\n return {\n behandlingData: behandling,\n [ColumnNames.Behandling]: behandling.navn ? behandling.navn : '',\n [ColumnNames.Antall]: behandling.antall ? behandling.antall.toString() : resources.behandlingsstederIkkeBeregnet,\n };\n })\n : [];\n};\n\nexport const getBehandlingTabellClass = (ventetidTypesCount: number): string => {\n if (ventetidTypesCount === 2) {\n return 'vbs-behandlingssteder__behandling-tabell--three-columns';\n }\n if (ventetidTypesCount === 3) {\n return 'vbs-behandlingssteder__behandling-tabell--four-columns';\n }\n if (ventetidTypesCount === 4) {\n return 'vbs-behandlingssteder__behandling-tabell--five-columns';\n }\n if (ventetidTypesCount >= 5) {\n return 'vbs-behandlingssteder__behandling-tabell--six-columns';\n } else return '';\n};\n\nexport const getTotalVentetidForBehandlingsgruppe = (\n resources: HNVelgBehandlingsstedFrontend,\n ventetiderMin: number,\n ventetiderMax: number\n): string => {\n if (ventetiderMin === 0 && ventetiderMax === 0) {\n return resources.behandlingsstederOppgisIkke;\n }\n\n if (ventetiderMin === 0 && ventetiderMax > 0) {\n return `${ventetiderMax} ${ventetiderMax === 1 ? resources.tabellUkes : resources.tabellUkers}`;\n }\n\n if (ventetiderMin > 0 && ventetiderMax === 0) {\n return `${ventetiderMin} ${ventetiderMin === 1 ? resources.tabellUkes : resources.tabellUkers}`;\n }\n\n if (ventetiderMin === ventetiderMax) {\n return `${ventetiderMax} ${ventetiderMax === 1 ? resources.tabellUkes : resources.tabellUkers}`;\n }\n\n return `${ventetiderMin}-${ventetiderMax} ${resources.tabellUkers}`;\n};\n\nexport const getBehandlingsstederBehandlingTableCaption = (\n resources: HNVelgBehandlingsstedFrontend,\n behandlingssted: string,\n gruppe: string\n): string => {\n return `${resources.behandlingsstederBehandlingTable} ${behandlingssted}${resources.behandlingsstederBehandlingTable2} ${gruppe}${resources.behandlingsstederBehandlingTable3}`;\n};\n","import { IAvailableFilters, IVentetid } from '../types/ExtendEntities';\nimport { ColumnNames, HelseRegion } from '../types/ExtendEnums';\nimport { Ventetid, VentetiderForBehandlingBehandlingssted } from '../types/Helsenorge.VelgBehandlingssted.Libraries.EntitiesEntities';\nimport { HNVelgBehandlingsstedFrontend } from '../types/Resources';\n\nimport { ActiveFilter } from '@helsenorge/filter/components/filter/useFilters';\n\nimport { TabellData } from './behandlingssted-expanded';\nimport { FilterObject, FilterValue } from '../behandlingssteder/filters-helper';\nimport { sortFilterValues } from '../utils/filters';\nimport { hentVentetidString, hentHelseregionString } from '../utils/strings';\n\nfunction convertFirstCharacterToUpperCase(text: string): string {\n if (text) {\n return text.charAt(0).toUpperCase() + text.slice(1);\n }\n return '';\n}\n\nexport const getFilteredBehandlingssteder = (\n resources: HNVelgBehandlingsstedFrontend,\n behandlingssteder: Array,\n activeFilters?: Array\n): Array => {\n const helseregionCheckedFilters =\n activeFilters?.filter(filter => filter.name.split(';')[0] === resources.filterHelseregion).map(filter => filter.value) ?? [];\n const fylkeCheckedFilters =\n activeFilters?.filter(filter => filter.name.split(';')[0] === resources.filterFylke).map(filter => filter.value) ?? [];\n const tilbudCheckedFilters =\n activeFilters\n ?.filter(filter => filter.name.split(';')[0] === resources.filterTilbud)\n .filter(filter => filter.value !== resources.filterRettighetvurdering)\n .map(filter => filter.value) ?? [];\n\n const filterRettighetsvurdering = activeFilters?.some(filter => filter.value === resources.filterRettighetvurdering);\n\n return helseregionCheckedFilters.length || fylkeCheckedFilters.length || tilbudCheckedFilters.length || filterRettighetsvurdering\n ? behandlingssteder\n .filter((behandlingssted: VentetiderForBehandlingBehandlingssted) => {\n let helseregionMatch = helseregionCheckedFilters.length ? false : true;\n if (helseregionCheckedFilters.length && !!behandlingssted.helseRegioner && behandlingssted.helseRegioner.length) {\n for (const helseRegion of behandlingssted.helseRegioner) {\n if (helseregionCheckedFilters.includes(helseRegion)) {\n helseregionMatch = true;\n break;\n }\n }\n }\n\n let fylkeMatch = true;\n if (fylkeCheckedFilters.length) {\n fylkeMatch = behandlingssted.fylke ? fylkeCheckedFilters.includes(behandlingssted.fylke.toLowerCase()) : false;\n }\n\n let tilbudMatch = true;\n if (tilbudCheckedFilters.length) {\n tilbudMatch = !!behandlingssted.ventetider?.find(x => x.type && tilbudCheckedFilters.includes(x.type.toLowerCase()));\n }\n\n let rettighetvurderingMatch = true;\n if (filterRettighetsvurdering) {\n rettighetvurderingMatch = behandlingssted.harVurderingskompetanse;\n }\n\n return helseregionMatch && fylkeMatch && tilbudMatch && rettighetvurderingMatch;\n })\n .map(behandlingssted => {\n let ventetider: Ventetid[] | null = behandlingssted.ventetider;\n if (tilbudCheckedFilters.length > 0) {\n ventetider =\n behandlingssted.ventetider?.map(ventetid => {\n const v = { ...ventetid };\n if (ventetid.type && tilbudCheckedFilters.includes(ventetid.type)) {\n (v as IVentetid).skalVisesIVentetidCell = true;\n } else {\n (v as IVentetid).skalVisesIVentetidCell = false;\n }\n return v;\n }) || [];\n }\n return { ...behandlingssted, ventetider };\n })\n : behandlingssteder;\n};\n\nexport const hentAntallBehandlingerString = (resources: HNVelgBehandlingsstedFrontend, antallBehandlinger: number | null): string => {\n if (!antallBehandlinger) {\n return '-';\n } else if (antallBehandlinger === 1) {\n return `${antallBehandlinger} ${resources.tabellAntallBehandling}`;\n }\n return `${antallBehandlinger} ${resources.tabellAntallBehandlinger}`;\n};\n\nexport const getFiltersAvailableFromDataSet = (data: TabellData[], resources: HNVelgBehandlingsstedFrontend): IAvailableFilters => {\n let region: string[] = [];\n let tilgjengeligTilbud: string[] = [];\n let fylker: string[] = [];\n\n data.forEach(behandlingssted => {\n const regioner = behandlingssted.behandlingsstedData.helseRegioner as string[];\n const fylke = behandlingssted.behandlingsstedData.fylke;\n const tilbud = behandlingssted.behandlingsstedData.ventetider\n ?.map(x => x.type)\n ?.filter(x => {\n return x !== null;\n }) as string[];\n\n region = [...region, ...regioner];\n\n if (behandlingssted.behandlingsstedData.harVurderingskompetanse) {\n tilgjengeligTilbud.push(resources.filterRettighetvurdering);\n }\n\n if (!!tilbud && tilbud.length > 0) {\n tilgjengeligTilbud = [...tilgjengeligTilbud, ...tilbud];\n }\n\n if (fylke) {\n fylker = [...fylker, fylke.toLowerCase()];\n }\n });\n\n return { regioner: [...new Set(region)], fylker: [...new Set(fylker)], tilbud: [...new Set(tilgjengeligTilbud)] };\n};\n\nexport const skalVisesIVentetidCell = (x: Ventetid): boolean =>\n (x as IVentetid).skalVisesIVentetidCell ||\n (x as IVentetid).skalVisesIVentetidCell === null ||\n (x as IVentetid).skalVisesIVentetidCell === undefined;\n\nexport const getTabellData = (\n resources: HNVelgBehandlingsstedFrontend,\n behandlingssteder: Array,\n activeFilters: Array | undefined = undefined\n): Array => {\n return getFilteredBehandlingssteder(resources, behandlingssteder, activeFilters).map(\n (behandlingssted: VentetiderForBehandlingBehandlingssted) => {\n return {\n behandlingsstedData: behandlingssted,\n [ColumnNames.Behandlingssted]: behandlingssted.navn ? behandlingssted.navn : '',\n [ColumnNames.Ventetid]: hentVentetidString(resources, behandlingssted.ventetider?.filter(skalVisesIVentetidCell)),\n [ColumnNames.Antall]: hentAntallBehandlingerString(resources, behandlingssted.antall),\n };\n }\n );\n};\n\nexport const getInitialFilters = (\n resources: HNVelgBehandlingsstedFrontend,\n behandlingssteder: Array\n): Array => {\n let helseregionFilterValues: FilterValue[] = [];\n let fylkeFilterValues: FilterValue[] = [];\n let tilbudFilterValues: FilterValue[] = [\n {\n checked: false,\n id: resources.filterRettighetvurdering,\n displayName: convertFirstCharacterToUpperCase(resources.filterRettighetvurdering),\n value: resources.filterRettighetvurdering,\n },\n ];\n\n behandlingssteder.forEach((behandlingssted: VentetiderForBehandlingBehandlingssted, index: number) => {\n if (!!behandlingssted.helseRegioner && behandlingssted.helseRegioner.length) {\n for (const helseRegion of behandlingssted.helseRegioner) {\n if (\n !helseregionFilterValues.some(\n filterValue => helseRegion !== HelseRegion.Unknown && !!helseRegion && filterValue.value === helseRegion\n )\n ) {\n helseregionFilterValues = helseregionFilterValues.concat({\n checked: false,\n id: `helseregion-${helseRegion}`,\n displayName: hentHelseregionString(helseRegion, resources),\n value: helseRegion ? helseRegion : '',\n });\n }\n }\n }\n\n if (behandlingssted.fylke) {\n const fylkeFilter = fylkeFilterValues.find(\n filterValue => !!filterValue.value && !!behandlingssted.fylke && filterValue.value === behandlingssted.fylke.toLowerCase()\n );\n\n if (!fylkeFilter) {\n fylkeFilterValues = fylkeFilterValues.concat({\n checked: false,\n id: `fylke${index}`,\n displayName: behandlingssted.fylke,\n value: behandlingssted.fylke.toLowerCase(),\n });\n }\n }\n\n if (behandlingssted.ventetider && behandlingssted.ventetider?.length > 0) {\n const tilbud = behandlingssted.ventetider.map(x => x.type?.toLowerCase() || '');\n\n const currentTilbudFilter = tilbudFilterValues.map(x => x.value);\n const filterToAdd = tilbud.filter(x => !currentTilbudFilter.includes(x) && x !== '');\n\n if (filterToAdd.length > 0) {\n const nyeTilbudFiltre = filterToAdd.map(\n x =>\n ({\n checked: false,\n id: x,\n displayName: convertFirstCharacterToUpperCase(x),\n value: x.toLowerCase(),\n }) as FilterValue\n );\n\n tilbudFilterValues = [...tilbudFilterValues, ...nyeTilbudFiltre];\n }\n }\n });\n\n return [\n {\n index: 0,\n values: sortFilterValues(helseregionFilterValues),\n name: resources.filterHelseregion,\n },\n {\n index: 1,\n values: sortFilterValues(fylkeFilterValues),\n name: resources.filterFylke,\n },\n {\n index: 2,\n values: tilbudFilterValues,\n name: resources.filterTilbud,\n },\n ];\n};\n\nconst onlyOneFilterIsInUse = (\n filters: FilterObject[],\n resources: HNVelgBehandlingsstedFrontend,\n filterType: 'fylke' | 'region'\n): boolean => {\n let fylkeChecked = false;\n let regionChecked = false;\n\n for (const filter of filters) {\n if (filter.name === resources.filterFylke) {\n fylkeChecked = !!filter.values?.some(value => {\n return value.checked;\n });\n }\n if (filter.name === resources.filterHelseregion) {\n regionChecked = !!filter.values?.some(value => {\n return value.checked;\n });\n }\n }\n const kunFylke = filterType === 'fylke' && fylkeChecked && !regionChecked;\n const kunRegion = filterType === 'region' && !fylkeChecked && regionChecked;\n return kunFylke || kunRegion;\n};\n\nexport const findFilterObject = (\n filterObjects: FilterObject[],\n resources: HNVelgBehandlingsstedFrontend,\n filterType: 'fylke' | 'region'\n): FilterObject | undefined => {\n for (const filterObject of filterObjects) {\n if (filterType === 'fylke' && filterObject.name === resources.filterFylke) {\n return filterObject;\n }\n if (filterType === 'region' && filterObject.name === resources.filterHelseregion) {\n return filterObject;\n }\n }\n return undefined;\n};\n\nexport const getAvailableFilters = (\n availableFilters: IAvailableFilters,\n filters: FilterObject[],\n resources: HNVelgBehandlingsstedFrontend,\n behandlingssteder: Array\n): FilterObject[] => {\n return filters.map(filter => {\n if (filter.name === resources.filterFylke) {\n const originalFilterObeject = findFilterObject(getInitialFilters(resources, behandlingssteder), resources, 'fylke');\n if (onlyOneFilterIsInUse(filters, resources, 'fylke') && originalFilterObeject) {\n filter.values = originalFilterObeject.values?.map(x => {\n return { ...x, disable: false, checked: filter.values?.find(e => e.displayName === x.displayName)?.checked };\n });\n return filter;\n }\n filter.values = filter.values?.map(x => {\n const isDisabled = !!x.value && !availableFilters.fylker.includes(x.value as string);\n return { ...x, disable: isDisabled };\n });\n return filter;\n }\n if (filter.name === resources.filterHelseregion) {\n const originalFilterObeject = findFilterObject(getInitialFilters(resources, behandlingssteder), resources, 'region');\n if (onlyOneFilterIsInUse(filters, resources, 'region') && originalFilterObeject) {\n filter.values = originalFilterObeject.values?.map(x => {\n return { ...x, disable: false, checked: filter.values?.find(e => e.displayName === x.displayName)?.checked };\n });\n return filter;\n }\n filter.values = filter.values?.map(x => {\n const isDisabled = !!x.value && !availableFilters.regioner.includes(x.value as string);\n return { ...x, disable: isDisabled };\n });\n return filter;\n }\n if (filter.name === resources.filterTilbud) {\n filter.values = filter.values?.map(x => {\n const isDisabled = !!x.value && !availableFilters.tilbud.includes(x.value as string);\n return { ...x, disable: isDisabled };\n });\n }\n return filter;\n });\n};\n\nexport const getTableCaption = (resources: HNVelgBehandlingsstedFrontend, navn: string): string => {\n return `${resources.ventetiderForBehandlingTableCaption} ${navn}${resources.ventetiderForBehandlingTableCaption2}`;\n};\n","import React from 'react';\n\nimport { Link } from 'react-router-dom';\n\nimport { ColumnNames, Urls } from '../types/ExtendEnums';\nimport { HNVelgBehandlingsstedFrontend } from '../types/Resources';\n\nimport { Cell } from '@helsenorge/data-table/components/table';\n\nimport { BehandlingTabellData, getVentetidElement } from './table-helper';\nimport { hentAntallBehandlingerString } from '../ventetider-for-behandling/helper';\n\ninterface Props {\n rowData?: BehandlingTabellData;\n columnName: string;\n resources: HNVelgBehandlingsstedFrontend;\n}\n\nexport default class BehandlingCell extends React.PureComponent {\n render(): JSX.Element | null {\n const { rowData, columnName, resources, ...other } = this.props;\n\n if (rowData) {\n switch (columnName) {\n case ColumnNames.Behandling:\n return (\n \n {rowData.behandlingData.navn}\n \n );\n\n case ColumnNames.Antall:\n return (\n \n {rowData.behandlingData.antall ? (\n <>\n {hentAntallBehandlingerString(resources, rowData.behandlingData.antall)}\n
    \n {`${resources.tabellAntallBehandlingerIAar} ${rowData.behandlingData.antallAr}`}\n \n ) : (\n {resources.behandlingsstederIkkeBeregnet}\n )}\n
    \n );\n default:\n return (\n \n {getVentetidElement(\n resources,\n rowData.behandlingData?.ventetider?.find(v => v.type === columnName)\n )}\n \n );\n }\n }\n\n return null;\n }\n}\n","import React from 'react';\n\nimport { ColumnNames } from '../types/ExtendEnums';\nimport { Behandlingsgruppe, Ventetid } from '../types/Helsenorge.VelgBehandlingssted.Libraries.EntitiesEntities';\nimport { HNVelgBehandlingsstedFrontend } from '../types/Resources';\n\nimport { simpleConfig } from '@helsenorge/designsystem-react/components/Table';\n\nimport { Table, Column } from '@helsenorge/data-table/components/table';\n\nimport BehandlingCell from './behandling-cell';\nimport {\n getBehandlingerTabellData,\n BehandlingTabellData,\n getBehandlingTabellClass,\n getBehandlingsstederBehandlingTableCaption,\n getVentetidString,\n sortVentetidTypes,\n} from './table-helper';\n\ninterface Props {\n resources: HNVelgBehandlingsstedFrontend;\n behandlingsGruppe: Behandlingsgruppe;\n behandlingssted: string;\n index: number;\n}\n\nconst BehandlingerTable: React.FunctionComponent = ({ resources, behandlingsGruppe, behandlingssted, index }: Props) => {\n const tabellData: Array = getBehandlingerTabellData(resources, behandlingsGruppe.behandlinger);\n const caption = getBehandlingsstederBehandlingTableCaption(\n resources,\n behandlingssted,\n behandlingsGruppe.navn ? behandlingsGruppe.navn : ''\n );\n\n const ventetidTypes = [\n ...new Set(\n tabellData\n .map(o => o.behandlingData)\n .map(o => o.ventetider || ([] as Ventetid[]))\n .reduce((a, b) => a.concat(b)) // Bytt ut .map() .reduce() med flatmap når det kommer støtte for dette. Det fungerer nå i Chrome\n .map(o => o.type || '')\n ),\n ];\n\n ventetidTypes.sort(sortVentetidTypes);\n\n const tabellDataMedVentetider = tabellData.map(rowData => ({\n ...rowData,\n ...Object.fromEntries(\n ventetidTypes.map(key => [\n key,\n getVentetidString(\n resources,\n rowData.behandlingData?.ventetider?.find(v => v.type === key)\n ),\n ])\n ),\n }));\n\n return (\n \n }\n />\n {ventetidTypes.map((ventetidType, i) => (\n }\n />\n ))}\n {behandlingsGruppe.harAntall && (\n }\n />\n )}\n \n );\n};\n\nexport default BehandlingerTable;\n","import { createReducer, ThunkDispatch } from '@reduxjs/toolkit';\n\nimport {\n VentetiderForBehandlingsstedResponse,\n Behandlingsgruppe,\n} from '../types/Helsenorge.VelgBehandlingssted.Libraries.EntitiesEntities';\nimport { HNVelgBehandlingsstedFrontend } from '../types/Resources';\n\nimport { get } from '@helsenorge/framework-utils/hn-proxy-service';\nimport { error } from '@helsenorge/framework-utils/logger';\n\nimport { RootState } from '../store';\nimport { GlobalAction } from '../store/reducer';\n\n/** ACTION TYPES */\n\nconst VENTETIDER_FOR_BEHANDLINGSSTED_LOAD = 'velg-behandlingssted/VENTETIDER_FOR_BEHANDLINGSSTED_LOAD';\nconst VENTETIDER_FOR_BEHANDLINGSSTED_LOAD_SUCCESS = 'velg-behandlingssted/VENTETIDER_FOR_BEHANDLINGSSTED_LOAD_SUCCESS';\nconst VENTETIDER_FOR_BEHANDLINGSSTED_LOAD_FAIL = 'velg-behandlingssted/VENTETIDER_FOR_BEHANDLINGSSTED_LOAD_FAIL';\n\n/** ACTIONS */\n\ninterface VentetiderForBehandlingsstedBaseAction {\n orgnr: string;\n}\n\ninterface VentetiderForBehandlingsstedLoadAction extends VentetiderForBehandlingsstedBaseAction {\n type: typeof VENTETIDER_FOR_BEHANDLINGSSTED_LOAD;\n}\n\ninterface VentetiderForBehandlingsstedLoadSuccessAction extends VentetiderForBehandlingsstedBaseAction {\n type: typeof VENTETIDER_FOR_BEHANDLINGSSTED_LOAD_SUCCESS;\n behandlingsGrupper: Array | null;\n}\n\ninterface VentetiderForBehandlingsstedLoadFailAction extends VentetiderForBehandlingsstedBaseAction {\n type: typeof VENTETIDER_FOR_BEHANDLINGSSTED_LOAD_FAIL;\n error: string;\n}\n\nexport type VentetiderForBehandlingsstedAction =\n | VentetiderForBehandlingsstedLoadAction\n | VentetiderForBehandlingsstedLoadSuccessAction\n | VentetiderForBehandlingsstedLoadFailAction;\n\n/** ACTION CREATORS */\n\nexport const loadVentetiderForBehandlingssted = (orgnr: string): VentetiderForBehandlingsstedLoadAction => {\n return { type: VENTETIDER_FOR_BEHANDLINGSSTED_LOAD, orgnr: orgnr };\n};\n\nexport const successVentetiderForBehandlingssted = (\n orgnr: string,\n behandlingsGrupper: Array | null\n): VentetiderForBehandlingsstedLoadSuccessAction => {\n return { type: VENTETIDER_FOR_BEHANDLINGSSTED_LOAD_SUCCESS, orgnr: orgnr, behandlingsGrupper: behandlingsGrupper };\n};\n\nexport const failedVentetiderForBehandlingssted = (error: string, orgnr: string): VentetiderForBehandlingsstedLoadFailAction => {\n return { type: VENTETIDER_FOR_BEHANDLINGSSTED_LOAD_FAIL, error: error, orgnr: orgnr };\n};\n\n/** STATE */\n\ninterface VentetiderForBehandlingssted {\n loading: boolean;\n loaded: boolean;\n error?: string;\n behandlingsGrupper?: Array | null;\n}\n\nexport type VentetiderForBehandlingsstedState = {\n ventetiderForBehandlingsstedMap: { [orgnr: string]: VentetiderForBehandlingssted };\n};\n\n/** REDUCER */\n\nexport const initialState = { ventetiderForBehandlingsstedMap: {} };\n\nconst ventetiderForBehandlingssted = createReducer(initialState, builder => {\n builder\n .addCase(VENTETIDER_FOR_BEHANDLINGSSTED_LOAD, (state, action: VentetiderForBehandlingsstedLoadAction) => {\n state.ventetiderForBehandlingsstedMap[action.orgnr] = { loading: true, loaded: false };\n })\n .addCase(VENTETIDER_FOR_BEHANDLINGSSTED_LOAD_SUCCESS, (state, action: VentetiderForBehandlingsstedLoadSuccessAction) => {\n state.ventetiderForBehandlingsstedMap[action.orgnr].loading = false;\n state.ventetiderForBehandlingsstedMap[action.orgnr].loaded = true;\n state.ventetiderForBehandlingsstedMap[action.orgnr].behandlingsGrupper = action.behandlingsGrupper;\n })\n .addCase(VENTETIDER_FOR_BEHANDLINGSSTED_LOAD_FAIL, (state, action: VentetiderForBehandlingsstedLoadFailAction) => {\n state.ventetiderForBehandlingsstedMap[action.orgnr].loading = false;\n state.ventetiderForBehandlingsstedMap[action.orgnr].error = action.error;\n });\n});\n\n/** STATE SELECTORS */\n\nexport function getVentetiderForBehandlingsstedState(state: RootState): VentetiderForBehandlingsstedState {\n if (!state.ventetiderForBehandlingssted) {\n error('the ventetiderForBehandlingssted state is missing in this reducer');\n }\n return state.ventetiderForBehandlingssted;\n}\n\nexport function getVentetiderForBehandlingssted(state: RootState, orgnr: string): VentetiderForBehandlingssted | undefined {\n return getVentetiderForBehandlingsstedState(state).ventetiderForBehandlingsstedMap[orgnr];\n}\n\nexport function getVentetiderForBehandlingsstedLoading(state: RootState, orgnr: string): boolean {\n const ventetiderForBehandlingssted = getVentetiderForBehandlingssted(state, orgnr);\n return ventetiderForBehandlingssted ? ventetiderForBehandlingssted.loading : false;\n}\n\nexport function getVentetiderForBehandlingsstedLoaded(state: RootState, orgnr: string): boolean {\n const ventetiderForBehandlingssted = getVentetiderForBehandlingssted(state, orgnr);\n return ventetiderForBehandlingssted ? ventetiderForBehandlingssted.loaded : false;\n}\n\nexport function getVentetiderForBehandlingsstedError(state: RootState, orgnr: string): string | undefined {\n const ventetiderForBehandlingssted = getVentetiderForBehandlingssted(state, orgnr);\n return ventetiderForBehandlingssted ? ventetiderForBehandlingssted.error : undefined;\n}\n\nexport function getVentetiderForBehandlingsstedBehandlingsgrupper(\n state: RootState,\n orgnr: string\n): Array | undefined | null {\n const ventetiderForBehandlingssted = getVentetiderForBehandlingssted(state, orgnr);\n return ventetiderForBehandlingssted ? ventetiderForBehandlingssted.behandlingsGrupper : undefined;\n}\n\n/** API */\n\nexport function hentVentetiderForBehandlingssted(orgnr: string, resources: HNVelgBehandlingsstedFrontend | null) {\n return (dispatch: ThunkDispatch, getState: () => RootState): Promise | undefined => {\n const state = getState();\n\n if (!getVentetiderForBehandlingsstedLoading(state, orgnr) && !getVentetiderForBehandlingsstedLoaded(state, orgnr)) {\n dispatch(loadVentetiderForBehandlingssted(orgnr));\n\n return get('VelgBehandlingssted', 'api/v1/VentetiderForBehandlingssted', {\n behandlingsstedId: parseInt(orgnr, 10),\n })\n .then(data => {\n if (data?.ventetiderForBehandlingssted) {\n dispatch(successVentetiderForBehandlingssted(orgnr, data.ventetiderForBehandlingssted.behandlingsGrupper));\n } else {\n throw new Error('Teknisk feil');\n }\n })\n .catch(() => {\n dispatch(failedVentetiderForBehandlingssted(resources?.tekniskFeilVentetiderForBehandlingssted ?? 'Teknisk feil', orgnr));\n });\n }\n };\n}\n\nexport default ventetiderForBehandlingssted;\n","import React from 'react';\n\nimport { Adresse } from '../../types/Helsenorge.VelgBehandlingssted.Libraries.EntitiesEntities';\n\ninterface Props {\n adresse: Adresse;\n}\n\nconst AdresseComponent: React.FunctionComponent = ({ adresse }: Props) => {\n return (\n

    \n {adresse.gateadresse}\n\n {adresse.postnr || adresse.poststed ? (\n <>\n
    \n {`${adresse.postnr} ${adresse.poststed}`}\n \n ) : null}\n

    \n );\n};\n\nexport default AdresseComponent;\n","import React from 'react';\n\nimport AnchorLink from '@helsenorge/designsystem-react/components/AnchorLink';\n\ninterface Props {\n telefon: string;\n}\n\nconst TelefonComponent: React.FunctionComponent = ({ telefon }: Props) => {\n return (\n

    \n {telefon}\n

    \n );\n};\n\nexport default TelefonComponent;\n","import React from 'react';\n\nimport { Behandlingsgruppe } from '../types/Helsenorge.VelgBehandlingssted.Libraries.EntitiesEntities';\nimport { HNVelgBehandlingsstedFrontend } from '../types/Resources';\n\nimport ExpanderList from '@helsenorge/designsystem-react/components/ExpanderList';\nimport LazyIcon from '@helsenorge/designsystem-react/components/LazyIcon';\nimport Loader from '@helsenorge/designsystem-react/components/Loader';\nimport NotificationPanel from '@helsenorge/designsystem-react/components/NotificationPanel';\nimport Title from '@helsenorge/designsystem-react/components/Title';\n\nimport useResources from '@helsenorge/framework-utils/resources/useResources';\n\nimport BehandlingerTable from './behandlinger-table';\nimport { TabellData, getTotalVentetidForBehandlingsgruppe } from './table-helper';\nimport {\n hentVentetiderForBehandlingssted,\n getVentetiderForBehandlingsstedLoading,\n getVentetiderForBehandlingsstedLoaded,\n getVentetiderForBehandlingsstedError,\n getVentetiderForBehandlingsstedBehandlingsgrupper,\n} from './ventetider-for-behandlingssted';\nimport { getResources } from '../resources';\nimport AdresseComponent from '../shared/adresse';\nimport TelefonComponent from '../shared/telefon';\nimport { useAppDispatch, useAppSelector } from '../store/hooks';\nimport { behandlingSvgIkonMapper } from '../utils/behandling-ikon-mapper';\nimport { HN_VELG_BEHANDLINGSSTED_FRONTEND } from '../utils/resources-project';\n\ninterface Props {\n rowData?: TabellData;\n expanded?: boolean;\n}\n\nconst BehandlingsstedExpanded: React.FunctionComponent = ({ rowData, expanded }: Props) => {\n const dispatch = useAppDispatch();\n const resources = useResources(HN_VELG_BEHANDLINGSSTED_FRONTEND, getResources);\n\n const orgnr = rowData?.orgnr ?? '';\n\n const loading = useAppSelector(state => getVentetiderForBehandlingsstedLoading(state, orgnr));\n const loaded = useAppSelector(state => getVentetiderForBehandlingsstedLoaded(state, orgnr));\n const error = useAppSelector(state => getVentetiderForBehandlingsstedError(state, orgnr));\n const behandlingsGrupper = useAppSelector(state => getVentetiderForBehandlingsstedBehandlingsgrupper(state, orgnr));\n const behandlingsstedData = rowData?.behandlingsstedData;\n\n React.useEffect(() => {\n if (expanded && orgnr) {\n dispatch(hentVentetiderForBehandlingssted(orgnr, resources));\n }\n }, [expanded, orgnr]);\n\n if (!orgnr) {\n return null;\n }\n\n if (loading) {\n return (\n
    \n \n
    \n );\n }\n\n if (error) {\n return (\n
    \n \n
    \n );\n }\n\n return loaded && behandlingsstedData && resources ? (\n <>\n
    \n \n {behandlingsstedData.navnBedriftsregister}\n \n\n

    {`${resources.behandlingsstederOrgnr} ${behandlingsstedData.orgnr}`}

    \n\n {!!behandlingsstedData.besoksAdresse && !!behandlingsstedData.besoksAdresse.gateadresse && (\n <>\n \n {resources.tabellBesoksadresse}\n \n \n \n )}\n\n {!!behandlingsstedData.telefon && (\n <>\n \n {resources.tabellTelefon}\n \n \n \n )}\n\n
    \n
    \n\n {behandlingsGrupper && (\n \n {behandlingsGrupper.map((behandlingsGruppe: Behandlingsgruppe, index: number) => {\n return (\n }\n title={\n
    \n {`${getTotalVentetidForBehandlingsgruppe(\n resources,\n behandlingsGruppe.ventetidMin,\n behandlingsGruppe.ventetidMax\n )} ${behandlingsGruppe.navn} `}\n {`(${behandlingsGruppe.behandlinger?.length})`}\n
    \n }\n >\n \n \n );\n })}\n
    \n )}\n \n ) : null;\n};\n\nexport default BehandlingsstedExpanded;\n","import { createReducer, ThunkDispatch } from '@reduxjs/toolkit';\n\nimport {\n BehandlingsstederResponse,\n BehandlingsstederBehandlingssted,\n} from '../types/Helsenorge.VelgBehandlingssted.Libraries.EntitiesEntities';\nimport { HNVelgBehandlingsstedFrontend } from '../types/Resources';\n\nimport { get } from '@helsenorge/framework-utils/hn-proxy-service';\nimport { error } from '@helsenorge/framework-utils/logger';\n\nimport { RootState } from '../store';\nimport { GlobalAction } from '../store/reducer';\n\n/** ACTION TYPES */\n\nconst BEHANDLINGSSTEDER_LOAD = 'velg-behandlingssted/BEHANDLINGSSTEDER_LOAD';\nconst BEHANDLINGSSTEDER_LOAD_SUCCESS = 'velg-behandlingssted/BEHANDLINGSSTEDER_LOAD_SUCCESS';\nconst BEHANDLINGSSTEDER_LOAD_FAIL = 'velg-behandlingssted/BEHANDLINGSSTEDER_LOAD_FAIL';\n\n/** ACTIONS */\n\ninterface BehandlingsstederLoadAction {\n type: typeof BEHANDLINGSSTEDER_LOAD;\n}\n\ninterface BehandlingsstederLoadSuccessAction {\n type: typeof BEHANDLINGSSTEDER_LOAD_SUCCESS;\n behandlingssteder: Array | null;\n}\n\ninterface BehandlingsstederLoadFailAction {\n type: typeof BEHANDLINGSSTEDER_LOAD_FAIL;\n error: string;\n}\n\nexport type BehandlingsstederAction = BehandlingsstederLoadAction | BehandlingsstederLoadSuccessAction | BehandlingsstederLoadFailAction;\n\n/** ACTION CREATORS */\n\nexport const loadBehandlingssteder = (): BehandlingsstederLoadAction => {\n return { type: BEHANDLINGSSTEDER_LOAD };\n};\n\nexport const successBehandlingssteder = (\n behandlingssteder: Array | null\n): BehandlingsstederLoadSuccessAction => {\n return { type: BEHANDLINGSSTEDER_LOAD_SUCCESS, behandlingssteder: behandlingssteder };\n};\n\nexport const failedBehandlingssteder = (error: string): BehandlingsstederLoadFailAction => {\n return { type: BEHANDLINGSSTEDER_LOAD_FAIL, error: error };\n};\n\n/** REDUCER */\n\nexport type BehandlingsstederState = {\n loading: boolean;\n error?: string;\n behandlingssteder?: Array | null;\n};\n\nexport const initialState = { loading: false };\n\nconst behandlingssteder = createReducer(initialState, builder => {\n builder\n .addCase(BEHANDLINGSSTEDER_LOAD, state => {\n state.loading = true;\n })\n .addCase(BEHANDLINGSSTEDER_LOAD_SUCCESS, (state, action: BehandlingsstederLoadSuccessAction) => {\n state.loading = false;\n state.behandlingssteder = action.behandlingssteder;\n })\n .addCase(BEHANDLINGSSTEDER_LOAD_FAIL, (state, action: BehandlingsstederLoadFailAction) => {\n state.loading = false;\n state.error = action.error;\n });\n});\n\n/** STATE SELECTORS */\n\nexport function getBehandlingsstederState(state: RootState): BehandlingsstederState {\n if (!state.behandlingssteder) {\n error('the behandlingssteder state is missing in this reducer');\n }\n return state.behandlingssteder;\n}\n\nexport function getBehandlingsstederLoading(state: RootState): boolean {\n return getBehandlingsstederState(state).loading;\n}\n\nexport function getBehandlingsstederError(state: RootState): string | undefined {\n return getBehandlingsstederState(state).error;\n}\n\nexport function getBehandlingssteder(state: RootState): Array | undefined | null {\n return getBehandlingsstederState(state).behandlingssteder;\n}\n\n/** API */\n\nfunction shouldHenteBehandlingssteder(state: RootState): boolean {\n return !getBehandlingsstederLoading(state) && !getBehandlingssteder(state);\n}\n\nexport function hentBehandlingssteder(resources: HNVelgBehandlingsstedFrontend) {\n return (dispatch: ThunkDispatch, getState: () => RootState): Promise | undefined => {\n if (shouldHenteBehandlingssteder(getState())) {\n dispatch(loadBehandlingssteder());\n\n return get('VelgBehandlingssted', 'api/v1/Behandlingssteder')\n .then(data => {\n if (data) {\n dispatch(successBehandlingssteder(data.behandlingssteder));\n } else {\n throw new Error('Teknisk feil');\n }\n })\n .catch(() => {\n dispatch(failedBehandlingssteder(resources.tekniskFeilBehandlingssteder));\n });\n }\n };\n}\n\nexport default behandlingssteder;\n","import React from 'react';\n\nimport { Behandlingstilbud } from '../types/Helsenorge.VelgBehandlingssted.Libraries.EntitiesEntities';\n\nimport { Cell } from '@helsenorge/data-table/components/table';\n\nimport { TabellData } from './table-helper';\n\ninterface Props {\n rowData?: TabellData;\n}\n\nexport default class BehandlingstilbudCell extends React.PureComponent {\n render(): JSX.Element | null {\n const { rowData, ...other } = this.props;\n\n return (\n \n {rowData && (\n <>\n {rowData.behandlingsstedData.behandlingstilbud &&\n rowData.behandlingsstedData.behandlingstilbud.map((behandlingstilbud: Behandlingstilbud, index: number) => {\n const showComma =\n rowData.behandlingsstedData.behandlingstilbud && index < rowData.behandlingsstedData.behandlingstilbud.length - 1;\n\n return (\n \n {behandlingstilbud.navn}\n {`(${behandlingstilbud.antall})`}\n {showComma && ', '}\n \n );\n })}\n \n )}\n \n );\n }\n}\n","import React from 'react';\n\nimport { ColumnNames } from '../../types/ExtendEnums';\nimport {\n VentetiderForBehandlingBehandlingssted,\n BehandlingsstederBehandlingssted,\n} from '../../types/Helsenorge.VelgBehandlingssted.Libraries.EntitiesEntities';\n\nimport { Cell } from '@helsenorge/data-table/components/table';\n\nimport styles from './styles.module.scss';\n\nexport interface BehandlingsstedTabellData {\n behandlingsstedData: VentetiderForBehandlingBehandlingssted & BehandlingsstederBehandlingssted;\n [ColumnNames.Behandlingssted]: string;\n}\n\ninterface Props {\n rowData?: BehandlingsstedTabellData;\n}\n\nexport default class BehandlingsstedCell extends React.PureComponent {\n render(): JSX.Element | null {\n const { rowData, ...other } = this.props;\n\n return (\n \n {rowData && (\n
    \n {rowData.behandlingsstedData.navn}\n
    \n\n {!!rowData.behandlingsstedData.besoksAdresse && {rowData.behandlingsstedData.besoksAdresse.gateadresse}}\n {!!rowData.behandlingsstedData.kommune && {`, ${rowData.behandlingsstedData.kommune}`}}\n
    \n )}\n
    \n );\n }\n}\n","import React from 'react';\n\nimport { ColumnNames, toColumnName } from '../types/ExtendEnums';\nimport { HNVelgBehandlingsstedFrontend } from '../types/Resources';\n\nimport Checkbox from '@helsenorge/designsystem-react/components/Checkbox';\nimport { simpleConfig } from '@helsenorge/designsystem-react/components/Table';\n\nimport PageHeader from '@helsenorge/core-framework/page-header';\nimport PageLoader from '@helsenorge/core-framework/page-loader/page-loader';\nimport { Table, Column, ExpandableRow } from '@helsenorge/data-table/components/table';\nimport Filter, { DropDownFilterOption } from '@helsenorge/filter/components/filter';\nimport FilterSearch from '@helsenorge/filter/components/filter/filter-search';\nimport { useFilters } from '@helsenorge/filter/components/filter/useFilters';\nimport { getSidetittelId } from '@helsenorge/framework-utils/hn-page';\nimport useResources from '@helsenorge/framework-utils/resources/useResources';\n\nimport BehandlingsstedExpanded from './behandlingssted-expanded';\nimport { hentBehandlingssteder, getBehandlingsstederLoading, getBehandlingsstederError, getBehandlingssteder } from './behandlingssteder';\nimport BehandlingstilbudCell from './behandlingstilbud-cell';\nimport { FilterObject, getInitialFilters } from './filters-helper';\nimport { getBehandlingsstederTabellData } from './table-helper';\nimport { getResources } from '../resources';\nimport BehandlingsstedCell from '../shared/behandlingssted-cell';\nimport { useAppDispatch, useAppSelector } from '../store/hooks';\nimport { getFiltersStrings } from '../utils/filters';\nimport { HN_VELG_BEHANDLINGSSTED_FRONTEND } from '../utils/resources-project';\n\nimport './styles.scss';\n\nexport type Filters = {\n [key: string]: string;\n};\n\nconst Behandlingssteder: React.FC = () => {\n const dispatch = useAppDispatch();\n\n const loading = useAppSelector(getBehandlingsstederLoading);\n const error = useAppSelector(getBehandlingsstederError);\n const behandlingssteder = useAppSelector(getBehandlingssteder);\n const resources = useResources(HN_VELG_BEHANDLINGSSTED_FRONTEND, getResources);\n\n const { filters, setDelayedFilter, updateFilters, activeFilters, searchQuery, setSearchQuery } = useFilters();\n\n const [sortColumnKey, setSortColumnKey] = React.useState(ColumnNames.Behandlingssted);\n const [sortDirIsAsc, setSortDirIsAsc] = React.useState(true);\n const [filterData, setFilterData] = React.useState>([]);\n const [tabellData, setTabellData] = React.useState(getBehandlingsstederTabellData(resources, []));\n\n const onFilterSearch = (newSearchText: string): void => {\n if (behandlingssteder) {\n setSearchQuery(newSearchText);\n }\n };\n\n // Oppdaterer standard column sortering med nåværende, slik at ny rendring av komponentet ikke setter sortering tilbake til standard\n const onSortColumns = (key: string, asc: boolean): void => {\n setSortColumnKey(toColumnName(key));\n setSortDirIsAsc(asc);\n };\n\n const filtersStrings = getFiltersStrings(resources);\n\n React.useEffect(() => {\n if (resources) {\n dispatch(hentBehandlingssteder(resources));\n }\n }, [resources]);\n\n React.useEffect(() => {\n if (resources && behandlingssteder) {\n setFilterData(getInitialFilters(resources, behandlingssteder));\n setTabellData(getBehandlingsstederTabellData(resources, behandlingssteder));\n }\n }, [resources, behandlingssteder]);\n\n React.useEffect(() => {\n if (resources && behandlingssteder) {\n setTabellData(getBehandlingsstederTabellData(resources, behandlingssteder, activeFilters, searchQuery));\n }\n }, [filters, searchQuery]);\n\n const renderFilterDropdowns = (filterData: FilterObject[]): DropDownFilterOption[] => {\n return filterData.map((filter: FilterObject) => ({\n placeholder: filter?.name,\n label: filter?.name,\n type: 'dropdown',\n onClose: () => updateFilters(),\n children: filter?.values?.map(fv => (\n {\n setDelayedFilter(filter.name + ';' + fv.value, e.target.checked ? e.target.value : '');\n }}\n />\n )),\n }));\n };\n\n return (\n resources && (\n \n \n ) => onFilterSearch(e?.target.value ?? '')}\n onSearch={() => onFilterSearch(searchQuery ?? '')}\n />\n }\n statusText={`${tabellData?.length} ${resources.behandlingsstederFilterUnit}`}\n filterOptions={renderFilterDropdowns(filterData)}\n />\n \n }\n />\n }\n />\n \n\n \n \n \n \n \n )\n );\n};\n\nexport default Behandlingssteder;\n","import React from 'react';\n\nimport { Link, useNavigate } from 'react-router-dom';\n\nimport { HelsenorgeUrls, Urls } from '../types/ExtendEnums';\nimport { HNVelgBehandlingsstedFrontend } from '../types/Resources';\n\nimport AnchorLink from '@helsenorge/designsystem-react/components/AnchorLink';\nimport Title from '@helsenorge/designsystem-react/components/Title';\nimport designsystemtypography from '@helsenorge/designsystem-react/scss/typography.module.scss';\n\nimport { Suggestion } from '@helsenorge/autosuggest/components/autosuggest';\nimport PageHeader from '@helsenorge/core-framework/page-header';\nimport PageLoader from '@helsenorge/core-framework/page-loader/page-loader';\nimport { getSidetittelId } from '@helsenorge/framework-utils/hn-page';\nimport { getHelsenorgeUrl } from '@helsenorge/framework-utils/hn-proxy-service';\nimport useResources from '@helsenorge/framework-utils/resources/useResources';\n\nimport { getResources } from '../resources';\nimport AutosuggestComponent from '../shared/autosuggest';\nimport { hentSokBehandlinger, getSokBehandlingerLoading, getSokBehandlingerSuggestions } from '../shared/autosuggest/sok-behandlinger';\nimport { useAppDispatch, useAppSelector } from '../store/hooks';\nimport { HN_VELG_BEHANDLINGSSTED_FRONTEND } from '../utils/resources-project';\n\nimport './styles.scss';\n\nconst Forside: React.FunctionComponent = () => {\n const navigate = useNavigate();\n const dispatch = useAppDispatch();\n const resources = useResources(HN_VELG_BEHANDLINGSSTED_FRONTEND, getResources);\n\n const loadingSokBehandlinger = useAppSelector(getSokBehandlingerLoading);\n const allSuggestions = useAppSelector(getSokBehandlingerSuggestions);\n\n const handleSuggestionSelected = (suggestion: Suggestion): void => {\n navigate(`${Urls.VentetiderForBehandling}?bid=${suggestion.value}`);\n };\n\n React.useEffect(() => {\n dispatch(hentSokBehandlinger());\n }, []);\n\n return (\n resources && (\n \n
    \n \n
    \n\n
    \n
    \n \n {resources.forsideBehandlingerOgUndersokelser}\n \n\n \n\n
      \n
    • \n {resources.forsideLinkBehandlinger}\n
    • \n
    • \n {resources.forsideLinkBehandlingssteder}\n
    • \n
    • \n \n {resources.forsideLinkAvtalespesialister}\n \n
    • \n
    \n
    \n
    \n
    \n )\n );\n};\n\nexport default Forside;\n","import React from 'react';\n\nimport { ScrollRestoration } from 'react-router-dom';\n\nimport { BreadcrumbLink } from '@helsenorge/core-framework/breadcrumb';\nimport PageRoot from '@helsenorge/core-framework/pageroot/index';\nimport { getPath, getSidetittelId } from '@helsenorge/framework-utils/hn-page';\nimport { getVisPersonvelger } from '@helsenorge/framework-utils/hn-user';\nimport { CommonEvents } from '@helsenorge/framework-utils/web-component/constants';\nimport { HNeventSetHiddenPromopanel, HNaddEventListener } from '@helsenorge/framework-utils/web-component/events';\n\ninterface Props {\n pageClass: string;\n breadcrumbLink?: BreadcrumbLink;\n hasFullwidth?: boolean;\n}\n\nconst PageContainer: React.FunctionComponent> = ({ children, pageClass, breadcrumbLink, hasFullwidth }) => {\n const webcomppromopanel = document.querySelector('hn-webcomp-cms-block-promopanel');\n const visPersonvelger = getVisPersonvelger();\n\n HNaddEventListener(CommonEvents.isMounted, webcomppromopanel, () => {\n HNeventSetHiddenPromopanel(!!visPersonvelger);\n });\n\n React.useEffect(() => {\n HNeventSetHiddenPromopanel(!!visPersonvelger);\n }, []);\n\n return (\n \n \n {children}\n \n );\n};\nexport default PageContainer;\n","import { createReducer, ThunkDispatch } from '@reduxjs/toolkit';\n\nimport {\n VentetiderForBehandlingResponse,\n VentetiderForbehandling,\n VentetiderForBehandlingBehandlingssted,\n} from '../types/Helsenorge.VelgBehandlingssted.Libraries.EntitiesEntities';\nimport { HNVelgBehandlingsstedFrontend } from '../types/Resources';\n\nimport { get } from '@helsenorge/framework-utils/hn-proxy-service';\nimport { error } from '@helsenorge/framework-utils/logger';\n\nimport { RootState } from '../store';\nimport { GlobalAction } from '../store/reducer';\n\n/** ACTION TYPES */\n\nconst VENTETIDER_FOR_BEHANDLING_LOAD = 'velg-behandlingssted/VENTETIDER_FOR_BEHANDLING_LOAD';\nconst VENTETIDER_FOR_BEHANDLING_LOAD_SUCCESS = 'velg-behandlingssted/VENTETIDER_FOR_BEHANDLING_LOAD_SUCCESS';\nconst VENTETIDER_FOR_BEHANDLING_LOAD_FAIL = 'velg-behandlingssted/VENTETIDER_FOR_BEHANDLING_LOAD_FAIL';\nconst VENTETIDER_FOR_BEHANDLING_RESET_ERROR = 'velg-behandlingssted/VENTETIDER_FOR_BEHANDLING_RESET_ERROR';\n\n/** ACTIONS */\n\ninterface VentetiderForBehandlingLoadAction {\n type: typeof VENTETIDER_FOR_BEHANDLING_LOAD;\n}\n\ninterface VentetiderForBehandlingLoadSuccessAction {\n type: typeof VENTETIDER_FOR_BEHANDLING_LOAD_SUCCESS;\n bid: string;\n ventetiderForBehandling: VentetiderForbehandling | null;\n}\n\ninterface VentetiderForBehandlingLoadFailAction {\n type: typeof VENTETIDER_FOR_BEHANDLING_LOAD_FAIL;\n error: string;\n}\n\ninterface VentetiderForBehandlingResetErrorAction {\n type: typeof VENTETIDER_FOR_BEHANDLING_RESET_ERROR;\n}\n\nexport type VentetiderForBehandlingAction =\n | VentetiderForBehandlingLoadAction\n | VentetiderForBehandlingLoadSuccessAction\n | VentetiderForBehandlingLoadFailAction\n | VentetiderForBehandlingResetErrorAction;\n\n/** ACTION CREATORS */\n\nexport const loadVentetiderForBehandling = (): VentetiderForBehandlingLoadAction => {\n return { type: VENTETIDER_FOR_BEHANDLING_LOAD };\n};\n\nexport const successLoadVentetiderForBehandling = (\n bid: string,\n ventetiderForBehandling: VentetiderForbehandling | null\n): VentetiderForBehandlingLoadSuccessAction => {\n return { type: VENTETIDER_FOR_BEHANDLING_LOAD_SUCCESS, bid: bid, ventetiderForBehandling: ventetiderForBehandling };\n};\n\nexport const failedVentetiderForBehandling = (error: string): VentetiderForBehandlingLoadFailAction => {\n return { type: VENTETIDER_FOR_BEHANDLING_LOAD_FAIL, error: error };\n};\n\nexport const resetErrorVentetiderForBehandling = (): VentetiderForBehandlingResetErrorAction => {\n return { type: VENTETIDER_FOR_BEHANDLING_RESET_ERROR };\n};\n\n/** REDUCER */\n\nexport interface VentetiderForBehandlingByBid {\n navn: string | null;\n harAntall: boolean;\n behandlingssteder: Array | null;\n kommentar: string | null;\n}\n\nexport type VentetiderForBehandlingState = {\n loading: boolean;\n ventetiderForBehandlingByBid: { [bid: string]: VentetiderForBehandlingByBid };\n error?: string;\n};\n\nexport const initialState = { loading: false, ventetiderForBehandlingByBid: {} };\n\nconst ventetiderForBehandling = createReducer(initialState, builder => {\n builder\n .addCase(VENTETIDER_FOR_BEHANDLING_LOAD, state => {\n state.loading = true;\n })\n .addCase(VENTETIDER_FOR_BEHANDLING_LOAD_SUCCESS, (state, action: VentetiderForBehandlingLoadSuccessAction) => {\n state.loading = false;\n\n if (action.ventetiderForBehandling) {\n state.ventetiderForBehandlingByBid[action.bid] = {\n navn: action.ventetiderForBehandling.navn,\n harAntall: action.ventetiderForBehandling.harAntall,\n behandlingssteder: action.ventetiderForBehandling.behandlingssteder,\n kommentar: action.ventetiderForBehandling.kommentar,\n };\n }\n })\n .addCase(VENTETIDER_FOR_BEHANDLING_LOAD_FAIL, (state, action: VentetiderForBehandlingLoadFailAction) => {\n state.loading = false;\n state.error = action.error;\n })\n .addCase(VENTETIDER_FOR_BEHANDLING_RESET_ERROR, state => {\n state.error = undefined;\n });\n});\n\n/** STATE SELECTORS */\n\nexport function getVentetiderForBehandlingState(state: RootState): VentetiderForBehandlingState {\n if (!state.ventetiderForBehandling) {\n error('the ventetiderForBehandling state is missing in this reducer');\n }\n return state.ventetiderForBehandling;\n}\n\nexport function getVentetiderForBehandlingLoading(state: RootState): boolean {\n return getVentetiderForBehandlingState(state).loading;\n}\n\nexport function getVentetiderForBehandlingError(state: RootState): string | undefined {\n return getVentetiderForBehandlingState(state).error;\n}\n\nexport function getVentetiderForBehandlingByBid(state: RootState, bid: string): VentetiderForBehandlingByBid | undefined {\n return getVentetiderForBehandlingState(state).ventetiderForBehandlingByBid[bid];\n}\n\n/** API */\n\nfunction shouldHenteVentetiderForBehandling(state: RootState, bid: string): boolean {\n return !getVentetiderForBehandlingByBid(state, bid) && !getVentetiderForBehandlingLoading(state);\n}\n\nexport function hentVentetiderForBehandling(bid: string, resources: HNVelgBehandlingsstedFrontend) {\n return (dispatch: ThunkDispatch, getState: () => RootState): Promise | undefined => {\n const state = getState();\n\n if (!parseInt(bid, 10)) {\n dispatch(failedVentetiderForBehandling(`${resources.tekniskFeilVentetiderForBehandling} ${bid}`));\n } else if (shouldHenteVentetiderForBehandling(state, bid)) {\n dispatch(loadVentetiderForBehandling());\n\n return get('VelgBehandlingssted', 'api/v1/VentetiderForBehandling', { behandlingId: bid })\n .then(data => {\n if (data) {\n dispatch(successLoadVentetiderForBehandling(bid, data.ventetiderForBehandling));\n } else {\n throw new Error('Teknisk feil');\n }\n })\n .catch(() => {\n dispatch(failedVentetiderForBehandling(`${resources.tekniskFeilVentetiderForBehandling} ${bid}`));\n });\n }\n };\n}\n\nexport default ventetiderForBehandling;\n","import { combineReducers } from 'redux';\n\nimport hjelpeskuff from '@helsenorge/core-framework/prosesshjelp/hjelpeskuff/hjelpeskuff-state';\nimport cmsTjenesteTekster from '@helsenorge/framework-utils/cms-tjeneste-tekster';\nimport language from '@helsenorge/framework-utils/language';\nimport resources from '@helsenorge/framework-utils/resources';\n\nimport behandlinger, { BehandlingerAction } from '../behandlinger/behandlinger';\nimport behandlingssteder, { BehandlingsstederAction } from '../behandlingssteder/behandlingssteder';\nimport ventetiderForBehandlingssted, { VentetiderForBehandlingsstedAction } from '../behandlingssteder/ventetider-for-behandlingssted';\nimport sokBehadlinger, { SokBehandlingerAction } from '../shared/autosuggest/sok-behandlinger';\nimport ventetiderForBehandling, { VentetiderForBehandlingAction } from '../ventetider-for-behandling/ventetider-for-behandling';\n\nconst rootReducer = combineReducers({\n language,\n resources,\n hjelpeskuff,\n behandlinger,\n ventetiderForBehandling,\n behandlingssteder,\n ventetiderForBehandlingssted,\n sokBehadlinger,\n cmsTjenesteTekster,\n});\n\nexport type GlobalAction =\n | BehandlingerAction\n | VentetiderForBehandlingAction\n | BehandlingsstederAction\n | VentetiderForBehandlingsstedAction\n | SokBehandlingerAction;\n\nexport default rootReducer;\n","import { configureStore } from '@reduxjs/toolkit';\n\nimport rootReducer from './reducer';\n\nexport const store = configureStore({ reducer: rootReducer });\n\nexport type RootState = ReturnType;\n\nexport type AppDispatch = typeof store.dispatch;\n","import React from 'react';\n\nimport { VentetiderForBehandlingBehandlingssted } from '../types/Helsenorge.VelgBehandlingssted.Libraries.EntitiesEntities';\nimport { HNVelgBehandlingsstedFrontend } from '../types/Resources';\n\nimport { Cell } from '@helsenorge/data-table/components/table';\n\nimport { hentAntallBehandlingerString } from './helper';\n\nexport interface RowData {\n behandlingsstedData: VentetiderForBehandlingBehandlingssted;\n}\n\ninterface Props {\n resources: HNVelgBehandlingsstedFrontend;\n rowData?: RowData;\n}\n\nexport default class AntallCell extends React.PureComponent {\n render(): JSX.Element | null {\n const { resources, rowData, ...other } = this.props;\n\n return (\n \n {rowData && rowData.behandlingsstedData.antall ? (\n <>\n {hentAntallBehandlingerString(resources, rowData.behandlingsstedData.antall)}\n
    \n {`${resources.tabellAntallBehandlingerIAar} ${rowData.behandlingsstedData.antallAr}`}\n \n ) : (\n {resources.behandlingsstederIkkeBeregnet}\n )}\n
    \n );\n }\n}\n","import React from 'react';\n\nimport { Ventetid } from '../types/Helsenorge.VelgBehandlingssted.Libraries.EntitiesEntities';\nimport { HNVelgBehandlingsstedFrontend } from '../types/Resources';\n\nimport { hentUkeString } from '../utils/strings';\n\ninterface Props {\n resources: HNVelgBehandlingsstedFrontend;\n ventetid: Ventetid;\n lineBreak?: boolean;\n}\n\nconst VentetidComponent: React.FunctionComponent = ({ ventetid, resources, lineBreak }: Props) => {\n let ventetidString = '';\n\n if (ventetid.uker > 0) {\n ventetidString = `${ventetid.uker} ${hentUkeString(resources, ventetid.uker)} ${resources.ventetiderTil} ${ventetid.type}`;\n\n if (ventetid.ukerTotalt > ventetid.uker) {\n ventetidString += ` (${ventetid.ukerTotalt} ${resources.ventetiderForBehandlingUkerTotalt})`;\n }\n } else {\n ventetidString = `${resources.ikkeOppdatertVentetid} ${ventetid.type}`;\n }\n\n return (\n \n {ventetidString}\n {lineBreak &&
    }\n
    \n );\n};\n\nexport default VentetidComponent;\n","import React from 'react';\n\nimport { Urls, ColumnNames } from '../types/ExtendEnums';\nimport {\n HentBehandlingLenkerResponse,\n Ventetid,\n VentetiderForBehandlingBehandlingssted,\n} from '../types/Helsenorge.VelgBehandlingssted.Libraries.EntitiesEntities';\nimport { HNVelgBehandlingsstedFrontend } from '../types/Resources';\n\nimport AnchorLink from '@helsenorge/designsystem-react/components/AnchorLink';\nimport Button from '@helsenorge/designsystem-react/components/Button';\nimport Title from '@helsenorge/designsystem-react/components/Title';\n\nimport getFeatureToggle from '@helsenorge/framework-utils/hn-feature-toggle';\nimport { getHelsenorgeUrl } from '@helsenorge/framework-utils/hn-proxy-service';\n\nimport VentetidComponent from './ventetid';\nimport { sortVentetider } from '../behandlingssteder/table-helper';\nimport AdresseComponent from '../shared/adresse';\nimport TelefonComponent from '../shared/telefon';\nimport { hentHelseregionAvtaleString } from '../utils/strings';\n\nexport interface TabellData {\n behandlingsstedData: VentetiderForBehandlingBehandlingssted;\n [ColumnNames.Behandlingssted]: string;\n ventetid: string | undefined;\n}\n\ninterface Props {\n rowData?: TabellData;\n expanded?: boolean;\n resources: HNVelgBehandlingsstedFrontend;\n getLinks: (orgNr: number) => Promise;\n}\n\nconst BehandlingsstedExpanded: React.FunctionComponent = ({ rowData, expanded, resources, getLinks }: Props) => {\n const behandlingsstedData = rowData?.behandlingsstedData;\n const [showContent, setShowContent] = React.useState(false);\n const [lenker, setLenker] = React.useState(null);\n const [lenkerOrgNr, setLenkerOrgNr] = React.useState(0);\n const harVentetider = !!behandlingsstedData?.ventetider && behandlingsstedData.ventetider.length > 0;\n const seVentetiderUrl = `${getHelsenorgeUrl()}${Urls.SlikVelgerDu}`;\n\n const getHostname = (url: string): string => {\n const domain = new URL(url);\n return domain.hostname.replace('www.', '');\n };\n\n React.useEffect(() => {\n if (lenkerOrgNr !== behandlingsstedData?.orgnummer) {\n setLenker(null);\n setLenkerOrgNr(0);\n }\n }, [behandlingsstedData?.orgnummer]);\n\n React.useEffect(() => {\n let mounted = true;\n\n if (\n expanded &&\n lenkerOrgNr !== behandlingsstedData?.orgnummer &&\n getFeatureToggle('VBSBehandlingsLenker') &&\n behandlingsstedData?.orgnummer\n ) {\n getLinks(behandlingsstedData.orgnummer).then(links => {\n if (!mounted) return;\n setLenkerOrgNr(behandlingsstedData.orgnummer);\n setLenker(links);\n });\n }\n if (expanded && !showContent) {\n setShowContent(true);\n }\n\n return (): void => {\n mounted = false;\n };\n }, [expanded]);\n\n const ventetider = behandlingsstedData?.ventetider ? [...behandlingsstedData.ventetider] : undefined;\n\n ventetider?.sort(sortVentetider);\n\n return showContent && behandlingsstedData ? (\n
    \n \n {behandlingsstedData.navn}\n \n\n {behandlingsstedData.helseRegioner || behandlingsstedData.avtaleMedHelfo || !!behandlingsstedData.kommentar ? (\n
    \n {behandlingsstedData.avtaleMedHelfo && {resources.ventetiderForBehandlingAvtaleMedHelfo}}\n
    \n {behandlingsstedData.helseRegioner && behandlingsstedData.erPrivat ? (\n
    \n {behandlingsstedData.helseRegioner.map((region: string, index: number) => (\n
    {hentHelseregionAvtaleString(region, resources)}
    \n ))}\n
    \n ) : null}\n\n {!!behandlingsstedData.kommentar &&

    {behandlingsstedData.kommentar}

    }\n
    \n ) : null}\n\n {harVentetider && (\n \n {resources.ventetiderForBehandlingTabellVentetid}\n \n )}\n\n {harVentetider || !behandlingsstedData.harVurderingskompetanse ? (\n

    \n {ventetider?.map((ventetid: Ventetid, index: number) => (\n \n ))}\n\n {!behandlingsstedData.harVurderingskompetanse && (\n \n
    \n {resources.ventetiderForBehandlingHenvisningVurderingObs} \n {resources.ventetiderForBehandlingHenvisningVurdering}\n
    \n )}\n

    \n ) : null}\n\n {lenker && lenker.behandlingLenke && lenker.behandlingTittel && (\n <>\n \n {resources.behandlingsstederTabellBehandling}\n \n
    \n \n {`${lenker.behandlingTittel} (${getHostname(lenker.behandlingLenke)})`}\n \n
    \n \n )}\n\n \n {resources.ventetiderForBehandlingKontakt}\n \n\n {lenker?.avdelingLenke && lenker.avdelingTittel && (\n
    \n \n {`${lenker.avdelingTittel} (${getHostname(lenker.avdelingLenke)})`}\n \n
    \n
    \n )}\n\n
    \n
    \n {!!behandlingsstedData.besoksAdresse && !!behandlingsstedData.besoksAdresse.gateadresse && (\n <>\n \n {resources.tabellBesoksadresse}\n \n \n \n )}\n\n {behandlingsstedData.telefon && (\n <>\n \n {resources.tabellTelefon}\n \n \n \n )}\n
    \n\n
    \n {!!behandlingsstedData.postAdresse && !!behandlingsstedData.postAdresse.gateadresse && (\n <>\n \n {resources.ventetiderForBehandlingPostadresse}\n \n \n \n )}\n
    \n
    \n\n \n
    \n ) : null;\n};\n\nexport default BehandlingsstedExpanded;\n","import React from 'react';\n\nimport { IVentetid } from '../types/ExtendEntities';\nimport { VentetiderForBehandlingBehandlingssted } from '../types/Helsenorge.VelgBehandlingssted.Libraries.EntitiesEntities';\nimport { HNVelgBehandlingsstedFrontend } from '../types/Resources';\n\nimport { Cell } from '@helsenorge/data-table/components/table';\n\nimport { skalVisesIVentetidCell } from './helper';\nimport { hentVentetidString } from '../utils/strings';\n\nexport interface RowData {\n behandlingsstedData: VentetiderForBehandlingBehandlingssted;\n}\n\ninterface Props {\n resources: HNVelgBehandlingsstedFrontend;\n rowData?: RowData;\n}\n\nexport default class VentetidCell extends React.PureComponent {\n render(): JSX.Element | null {\n const { resources, rowData, ...other } = this.props;\n\n const ikkeOppdatert =\n !!rowData &&\n !!rowData.behandlingsstedData.ventetider &&\n rowData.behandlingsstedData.ventetider.length > 0 &&\n rowData.behandlingsstedData.ventetider.filter(\n ventetid =>\n ventetid.ukerTotalt > 0 &&\n ((ventetid as IVentetid).skalVisesIVentetidCell || (ventetid as IVentetid).skalVisesIVentetidCell === undefined)\n ).length === 0;\n\n return (\n \n {rowData && (\n \n {hentVentetidString(resources, rowData.behandlingsstedData.ventetider?.filter(skalVisesIVentetidCell))}\n \n )}\n \n );\n }\n}\n","import React from 'react';\n\nimport { useSearchParams } from 'react-router-dom';\n\nimport { ColumnNames, toColumnName } from '../types/ExtendEnums';\nimport { HentBehandlingLenkerResponse } from '../types/Helsenorge.VelgBehandlingssted.Libraries.EntitiesEntities';\nimport { HNVelgBehandlingsstedFrontend } from '../types/Resources';\n\nimport Checkbox from '@helsenorge/designsystem-react/components/Checkbox';\nimport { simpleConfig } from '@helsenorge/designsystem-react/components/Table';\n\nimport PageHeader from '@helsenorge/core-framework/page-header';\nimport PageLoader from '@helsenorge/core-framework/page-loader/page-loader';\nimport { Table, Column, ExpandableRow } from '@helsenorge/data-table/components/table';\nimport Filter, { DropDownFilterOption } from '@helsenorge/filter/components/filter';\nimport { useFilters } from '@helsenorge/filter/components/filter/useFilters';\nimport { trackSearch } from '@helsenorge/framework-utils/adobe-analytics';\nimport { getSidetittelId } from '@helsenorge/framework-utils/hn-page';\nimport { get } from '@helsenorge/framework-utils/hn-proxy-service';\n\nimport AntallCell from './antall-cell';\nimport BehandlingsstedExpanded from './behandlingssted-expanded';\nimport { getTabellData, getInitialFilters, getTableCaption } from './helper';\nimport VentetidCell from './ventetid-cell';\nimport { VentetiderForBehandlingByBid } from './ventetider-for-behandling';\nimport { Filters } from '../behandlingssteder';\nimport { FilterObject } from '../behandlingssteder/filters-helper';\nimport BehandlingsstedCell from '../shared/behandlingssted-cell';\nimport { getFiltersStrings } from '../utils/filters';\n\nimport './styles.scss';\n\ninterface Props {\n resources: HNVelgBehandlingsstedFrontend;\n loading: boolean;\n error?: string;\n ventetiderForBehandlingByBid?: VentetiderForBehandlingByBid;\n}\n\nconst VentetiderForBehandlingComponent: React.FunctionComponent = ({\n resources,\n loading,\n error,\n ventetiderForBehandlingByBid,\n}: Props) => {\n const [searchparams] = useSearchParams();\n const bid = searchparams.get('bid') ?? '';\n const harAntall = ventetiderForBehandlingByBid?.harAntall;\n\n const { filters, setDelayedFilter, updateFilters, activeFilters } = useFilters();\n\n const [sortColumnKey, setSortColumnKey] = React.useState(ColumnNames.Behandlingssted);\n const [sortDirIsAsc, setSortDirIsAsc] = React.useState(true);\n const [filterData, setFilterData] = React.useState>([]);\n const [tabellData, setTabellData] = React.useState(getTabellData(resources, []));\n\n const onSort = (sortColumnKey: string, sortAscending: boolean): void => {\n setSortColumnKey(toColumnName(sortColumnKey));\n setSortDirIsAsc(sortAscending);\n };\n\n const filtersStrings = getFiltersStrings(resources);\n const caption = getTableCaption(\n resources,\n ventetiderForBehandlingByBid && ventetiderForBehandlingByBid.navn ? ventetiderForBehandlingByBid.navn : ''\n );\n\n async function fetchLinks(orgNr: number): Promise {\n const url = `api/v1/BehandlingLenke`;\n try {\n const response = await get('VelgBehandlingssted', url, {\n behandlingId: bid,\n orgNr: orgNr,\n });\n return response;\n } catch {\n return null;\n }\n }\n\n React.useEffect(() => {\n if (ventetiderForBehandlingByBid && ventetiderForBehandlingByBid.behandlingssteder) {\n setFilterData(getInitialFilters(resources, ventetiderForBehandlingByBid.behandlingssteder));\n setTabellData(getTabellData(resources, ventetiderForBehandlingByBid.behandlingssteder));\n\n if (ventetiderForBehandlingByBid.navn) {\n trackSearch(\n ventetiderForBehandlingByBid.navn,\n 'Internsøk – Velg behandlingssted',\n ventetiderForBehandlingByBid.behandlingssteder.length\n );\n }\n }\n }, [ventetiderForBehandlingByBid]);\n\n React.useEffect(() => {\n if (ventetiderForBehandlingByBid && ventetiderForBehandlingByBid.behandlingssteder) {\n setTabellData(getTabellData(resources, ventetiderForBehandlingByBid.behandlingssteder, activeFilters));\n }\n }, [filters]);\n\n const renderFilterDropdowns = (filterData: FilterObject[]): DropDownFilterOption[] => {\n return filterData.map((filter: FilterObject) => ({\n placeholder: filter?.name,\n label: filter?.name,\n type: 'dropdown',\n onClose: () => updateFilters(),\n children: filter?.values?.map(fv => (\n {\n setDelayedFilter(filter.name + ';' + fv.value, e.target.checked ? e.target.value : '');\n }}\n />\n )),\n }));\n };\n\n return (\n \n \n \n \n }\n />\n }\n />\n {harAntall && (\n }\n />\n )}\n\n \n \n \n \n \n );\n};\n\nexport default VentetiderForBehandlingComponent;\n","import React from 'react';\n\nimport { useSearchParams } from 'react-router-dom';\n\nimport { HNVelgBehandlingsstedFrontend } from '../types/Resources';\n\nimport useResources from '@helsenorge/framework-utils/resources/useResources';\n\nimport {\n hentVentetiderForBehandling,\n getVentetiderForBehandlingByBid,\n getVentetiderForBehandlingError,\n getVentetiderForBehandlingLoading,\n resetErrorVentetiderForBehandling,\n} from './ventetider-for-behandling';\nimport VentetiderForBehandlingComponent from './ventetider-for-behandling-component';\nimport { getResources } from '../resources';\nimport { useAppDispatch, useAppSelector } from '../store/hooks';\nimport { HN_VELG_BEHANDLINGSSTED_FRONTEND } from '../utils/resources-project';\n\nconst VentetiderForBehandlingContainer: React.FunctionComponent = () => {\n const [searchparams] = useSearchParams();\n const bid = searchparams.get('bid') ?? '';\n const dispatch = useAppDispatch();\n\n const resources = useResources(HN_VELG_BEHANDLINGSSTED_FRONTEND, getResources);\n\n const ventetiderForBehandlingByBid = useAppSelector(state => getVentetiderForBehandlingByBid(state, bid));\n const loading = useAppSelector(getVentetiderForBehandlingLoading);\n const error = useAppSelector(getVentetiderForBehandlingError);\n\n React.useEffect(() => {\n if (resources) {\n dispatch(hentVentetiderForBehandling(bid, resources));\n }\n\n return (): void => {\n dispatch(resetErrorVentetiderForBehandling());\n };\n }, [bid, resources]);\n\n return (\n resources && (\n \n )\n );\n};\n\nexport default VentetiderForBehandlingContainer;\n","import React from 'react';\n\nimport ReactDOM from 'react-dom/client';\nimport { Provider } from 'react-redux';\nimport { createBrowserRouter, RouterProvider } from 'react-router-dom';\n\nimport NotFound from '@helsenorge/core-framework/page-not-found';\nimport { getPath, getAssetsUrl } from '@helsenorge/framework-utils/hn-page';\nimport useResources from '@helsenorge/framework-utils/resources/useResources';\nimport WebCompConsumer from '@helsenorge/framework-utils/web-component/consumer';\n\nimport Behandlinger from './behandlinger';\nimport Behandlingssteder from './behandlingssteder';\nimport Forside from './forside';\nimport { getResources } from './resources';\nimport PageContainer from './shared/page-container';\nimport { store } from './store';\nimport { Urls } from './types/ExtendEnums';\nimport { HNVelgBehandlingsstedFrontend } from './types/Resources';\nimport { HN_VELG_BEHANDLINGSSTED_FRONTEND } from './utils/resources-project';\nimport VentetiderForBehandling from './ventetider-for-behandling';\n\nimport './styles.scss';\n\nconst vbsBreadCrumbResourceId = 'page_VelgBehandlingssted_NavigateBackLinkTitle';\n\nconst router = createBrowserRouter(\n [\n {\n path: '/',\n element: (\n \n \n \n ),\n },\n\n {\n path: Urls.Behandlinger,\n element: (\n \n \n \n ),\n },\n {\n path: Urls.VentetiderForBehandling,\n element: (\n \n \n \n ),\n },\n {\n path: Urls.Behandlingssteder,\n element: (\n \n \n \n ),\n },\n {\n path: Urls.Behandlingssteder,\n element: (\n \n \n \n ),\n },\n {\n path: '*',\n element: ,\n },\n ],\n { basename: '/' + getPath() }\n);\n\nconst VelgBehandlingsstedRoot: React.FunctionComponent = () => {\n const resources = useResources(HN_VELG_BEHANDLINGSSTED_FRONTEND, getResources);\n\n return resources && ;\n};\n\nasync function enableMocking(): Promise {\n if (import.meta.env.MODE !== 'mocks') {\n return;\n }\n\n const { worker } = await import('./mocks/browser');\n\n return worker.start({\n onUnhandledRequest: 'bypass',\n });\n}\n\nenableMocking().then(() => {\n ReactDOM.createRoot(document.getElementById('main-content-wrapper')!).render(\n \n \n \n \n \n\n \n \n \n );\n});\n"],"file":"static/js/index.DizXniMj.js"}