{"version":3,"sources":["components/EpButton/index.jsx","utils/numberMeasurementFormat.js","components/EpHighlightIndicator/index.jsx","assets/images/records/record_uci-uruguayas.png","assets/images/records/record_uti-brasileiras.png","assets/images/records/record_anzics.png","assets/images/records/record_nice.png","assets/images/records/record_crit-care-asia.png","assets/images/records/record_cubrea.png","assets/images/records/record_satiq.png","assets/images/records/record_jipad.png","assets/images/records/record_iris.png","assets/images/records/record_alberta-critical-care.png","components/EpSponsorsSlider/index.jsx","components/EpAlert/index.jsx","assets/icons/padlock.svg","assets/icons/indicators/indicator_registers.svg","assets/icons/indicators/indicator_icus.svg","assets/icons/indicators/indicator_countries.svg","constants/indicatorsConstants.js","hooks/useTranslation.js","components/EpToaster/index.jsx","services/httpService.js","services/indicatorsService.js","constants/authConstants.js","redux/types.js","redux/actions/authAction.js","redux/reducers/authReducer.js","redux/reducers/filterReducer.js","redux/reducers/globalizationReducer.js","redux/store.js","services/axiosService.js","redux/actions/globalizationAction.js","services/globalizationService.js","constants/globalizationConstants.js","services/authService.js","components/EpLoadingPage/index.jsx","constants/filterConstants.js","redux/actions/filterAction.js","services/filterService.js","assets/images/sponsors/logo_epimed.svg","assets/images/sponsors/logo_logic.svg","components/EpFormSelect/index.jsx","components/EpGlobalFooter/index.jsx","pages/Login/index.jsx","components/EpBrowsableFilter/index.jsx","components/EpFilter/index.jsx","utils/interactions.js","components/EpGlobalNavigation/index.jsx","components/EpCardIndicator/index.jsx","components/EpTable/index.jsx","components/EpModal/index.jsx","components/EpRecordInformationsModal/index.jsx","assets/images/records/record_mica.png","components/EpTendencyChart/EpTendencyChart.jsx","utils/table.js","pages/Benchmarking/index.jsx","pages/SharedError/index.jsx","utils/privateRoute.js","routes.js","utils/googleAnalytics.js","utils/hotjar.js","App.jsx","reportWebVitals.js","index.jsx"],"names":["EpButton","buttonText","buttonStartIcon","buttonEndIcon","customClass","disabled","actionType","buttonType","buttonWidthType","buttonId","dataBsToggle","ariaExpanded","autoClose","onClickFunc","isActive","buttonSize","dataBsTarget","ariaControls","onClick","type","className","id","defaultProps","formatNumberWithAbbreviation","value","digits","currentUserLanguage","i","valueFormat","rx","valueLookup","symbol","length","toString","toFixed","replace","Intl","NumberFormat","style","minimumFractionDigits","maximumFractionDigits","format","Number","EpHighlightIndicator","valueSymbol","valueDigits","description","iconPath","iconAlt","isAuthorizedUser","useSelector","state","auth","useState","valueSymbolFormatted","setValueSymbolFormatted","formattedValue","setFormattedValue","useEffect","alt","src","EpSponsorsSlider","dots","infinite","lazyLoad","pauseOnHover","autoplay","speed","slidesToShow","slidesToScroll","initialSlide","responsive","breakpoint","settings","href","target","rel","UCIUruguayasLogoImage","UTIsBrasileirasLogoImage","AnzicsLogoImage","NICELogoImage","CritCareAsiaLogoImage","CubreaLogoImage","SATIQLogoImage","JipadLogoImage","IRISLogoImage","AlbertaCriticalCareLogoImage","EpAlert","alertType","icon","title","customId","role","BI_BASE_API_URL","process","useTranslation","tag","culture","globalization","language","currentCultureTranslationsArr","translationsCache","termTranslated","setTermTranslated","existingTagInfos","filter","termsObj","term","translation","undefined","Success","Warning","ErrorTitle","EpToaster","position","duration","hideProgressBar","newestOnTop","closeOnClick","rtl","pauseOnFocusLoss","draggable","EpCustomToast","hasTitle","showToast","color","toast","showToastDefault","res","toasterTitle","toasterDescription","status","response","statusText","message","httpService","get","url","data","hasSuccessToaster","hideErrorToaster","axios","params","post","put","remove","indicatorsService","getConsolidatedTotalizers","selectedYear","selectedPatientGroup","result","getConsolidatedIndicators","getEvolutiveIndicators","selectedIndicator","getLoginTotalizer","BI_AUTH_NECESSARY_ROLES","STORE_USER","LOADING_AUTHENTICATION","STORE_LAST_FILTERS_APPLIED","STORE_FILTER_OPTIONS","STORE_USER_LANGUAGE","STORE_TRANSLATIONS","storeUser","user","initialState","isLoadingAuthentication","authReducer","action","lastFiltersApplied","reportType","patientGroupItemCode","year","indicator","filterCache","patientsGroups","years","indicators","lastCacheTime","filterReducer","payload","globalizationReducer","rootReducer","combineReducers","composeEnhancers","compose","store","createStore","setAuthHeader","token","localStorage","getItem","defaults","headers","common","Authorization","storeUserLanguage","storeTranslations","globalizationService","getTermAndTranslationsByTag","systemId","productId","product","SystemId","Tag","Culture","ProductId","Product","GLOBALIZATION_BASE_API_URL","getDataTermAndTranslationsByTag","timeNow","Date","getTime","cacheTimeNow","moment","lastCacheTimeSaved","expiresCacheTime","add","portugueseResponseJSON","portugueseTranslationsList","englishResponseJSON","englishTranslationsList","newTranslationsCache","dispatch","authService","authTime","expiresIn","postAuthenticationBySerialNumber","serialNumber","clientCallerURI","SerialNumber","ClientCallerURI","getAuthenticationByToken","getURLQueryStringValues","queryStringValuesObj","keyValuePairs","window","location","search","slice","split","forEach","keyValuePair","transformedKeyName","transformedKeyValue","decodeURIComponent","parseJwt","base64","jsonPayload","atob","map","c","charCodeAt","join","JSON","parse","checkNecessaryRoles","userRoles","necessaryRolesArr","Array","isArray","some","option","includes","signinBySerialNumber","receivedQueryStringObj","ref","referrer","btoa","parent","document","responseJSON","authenticationResponse","authenticationStatusCode","access_token","parsedAuthenticationResponse","auth_time","expires_in","setTimeout","history","pushState","signinByToken","exp","defineSigninMethod","selectedCulture","setItem","Object","prototype","hasOwnProperty","call","EpLoadingPage","isVisible","appBody","getElementById","overflow","height","width","removeAttribute","storeLastFiltersApplied","storeFilterOptions","filterService","getYears","PatientGroupItemCode","getPatientsGroups","getYearsByPatientGroup","filterPatientGroupSelected","patientsGroupsCache","yearsCache","filterYearsOptions","yearsResponseJSON","yearsList","label","filterYearsOptionsDescending","sort","a","b","parseFloat","newFilterCache","getInitialBenchmarkingFiltersData","filterPatientsGroupsOptions","patientsGroupsResponseJSON","patientsGroupsList","code","name","changeSelectValue","selectRef","current","setValue","EpFormSelect","forwardRef","labelText","selectOptions","inputId","isSearchable","placeholderText","classError","inputName","selectDefaultValue","selectClassNamePrefix","onBlurFunc","onChangeFunc","customRef","minPortalWidth","customStyles","menuPortal","provided","zIndex","minWidth","menu","htmlFor","classNamePrefix","menuPortalTarget","body","menuPosition","styles","placeholder","defaultValue","menuPlacement","onBlur","onChange","options","maxMenuHeight","menuShouldBlockScroll","EpGlobalFooter","login","handleChangeLanguage","languageOptions","languageDefaultOption","matches","innerWidth","mQuery","setMQuery","EndorsedBy","PoweredBy","Select","mediaQuery","matchMedia","addListener","removeListener","loginFooter","LogicLogoImage","EpimedLogoImage","values","Login","useHistory","isLoadingPage","setIsLoadingPage","InternationalBenchmarking","InternationalBenchmarkingDescription","Enter","Registry","ICUs","Countries","Participants","AccessDenied","ThePageIsRestrictedAndItCannotBeShown","RegistersIndicatorImage","CountriesIndicatorImage","ICUsIndicatorImage","setIndicators","updateIndicators","apiData","updatedIndicators","updatedIndicator","registryCount","countryCount","icuCount","fetchAndUpdateIndicators","apiResponse","console","error","innerHTML","handleGoToDefaultIndicatorsPage","e","preventDefault","push","pathname","PadlockIcon","EpBrowsableFilter","selectIsSearchable","horizontalAlign","setConsolidatedTotalizerIndicatorsDataFunc","setConsolidatedIndicatorsDataFunc","setEvolutiveIndicatorsDataFunc","setIsLoadingPageFunc","browsableFilterSelectRef","Previous","Next","useDispatch","totalOptions","hasPreviousControls","setHasPreviousControls","hasNextControls","setHasNextControls","selectValue","setSelectValue","findIndex","currentFilterIndex","setCurrentFilterIndex","updateFiltersAppliedStorage","selectedValue","newFiltersAppliedObj","browsableFilterInitialValues","handleBrowsableFilterSubmit","setValuesFunc","queryStrings","consolidatedIndicatorsTotalizersResponseJSON","consolidatedIndicatorsTotalizersList","consolidatedIndicatorsResponseJSON","consolidatedIndicatorsList","evolutiveIndicatorsResponseJSON","evolutiveIndicatorsList","handleGoToFilterOption","indicatorIndex","handleChangeFunc","setFieldValueFunc","newIndicatorIndex","Math","max","min","indicatorOptionObj","handleMoveToPreviousFilterOption","lastOptionsElementIndex","handleControlsVisibility","initialValues","onSubmit","actions","setValues","handleSubmit","handleChange","setFieldValue","EpFilter","selectPatientsGroupsOptions","selectPatientsGroupsDefaultValue","patientsGroupsSelectRef","filterIndicatorsDefaultOptionObj","filterYearsDefaultOptionObj","setFilterYearsDefaultOptionObjFunc","Report","Consolidated","Evolutive","PatientGroups","Apply","filterReportTypeSelected","setFilterReportTypeSelected","setFilterPatientGroupSelected","filterInitialValues","handleFilterSubmit","newFilterYearsOptions","newFilterYearsDefaultOptionObj","setSubmitting","printScreen","print","EpGlobalNavigation","languageSelectRef","fullscreenStatus","setFullscreenStatus","elem","documentElement","fullScreenElement","msFullscreenElement","mozFullScreen","webkitIsFullScreen","requestFullScreen","mozRequestFullScreen","webkitRequestFullScreen","Element","ALLOW_KEYBOARD_INPUT","msRequestFullscreen","cancelFullScreen","mozCancelFullScreen","webkitCancelFullScreen","msExitFullscreen","toggleFullscreen","IndicatorValue","indicatorSubtitle","indicatorValuePrimary","indicatorPercentage","indicatorValueSecondary","indicatorMeasureUnitPrimary","indicatorMeasureUnitSecondary","indicatorCustomClass","indicatorId","indicatorValuePrimaryDigits","indicatorValueSecondaryDigits","indicatorPercentageDigits","formattedIndicatorValuePrimary","formattedIndicatorValueSecondary","formattedIndicatorPercentage","EpCardIndicator","indicatorType","indicatorTitle","indicatorName","defaultPropGetter","EpTable","tableData","columns","getCellProps","defaultColumnsSize","useMemo","tableContainer","querySelector","tableParent","parentNode","useTable","sortBy","desc","useFlexLayout","useSticky","useSortBy","getTableProps","getTableBodyProps","headerGroups","rows","prepareRow","handleHighlightRowOnClick","row","trElement","querySelectorAll","el","classList","navigator","userAgent","indexOf","appVersion","evt","createEvent","initUIEvent","dispatchEvent","Event","resizeBrowser","popoverInstances","instances","triggerEl","existingPopover","bootstrap","Popover","getInstance","setContent","getAttribute","newPopover","trigger","placement","initializeOrUpdatePopovers","headerGroup","column","helpText","setAttribute","popover","dispose","getHeaderGroupProps","scope","getHeaderProps","getSortByToggleProps","render","isSorted","isSortedDesc","cursor","background","borderRadius","padding","size","getRowProps","cells","cell","hiddenColumns","cellInfo","lastAction","modalInstance","handleToggleModal","modalId","modalOptions","modalEl","Modal","getOrCreateInstance","show","hide","EpModal","noHeader","headerTitle","headerContent","bodyContent","footerContent","alignFooter","EpRecordInformationsModal","modalTitle","modalRecordLogo","modalRecordCountryName","modalRecordHospitalsCount","modalRecordUnitsCount","modalRecordSourceSite","modalRecordDescription","NumberOfHospitals","NumberOfICUs","RegistrySite","Close","Plot","createPlotlyComponent","Plotly","EpTendencyChart","xaxisValues","yaxisValues","filterIndicatorSelected","chartData","x","y","mode","line","shape","dash","simplify","fill","fillcolor","hovertext","hoverinfo","linePointsLength","currentXaxisValues","currentYaxisValues","config","displaylogo","toImageButtonOptions","modeBarButtonsToRemove","layout","font","family","xaxis","showticklabels","showgrid","fixedrange","yaxis","autosize","margin","l","r","t","plot_bgcolor","paper_bgcolor","useResizeHandler","generateRanges","minRange","maxRange","minValue","maxValue","scales","ranges","range","emptyNumberCell","emptyStringCell","uniquePercentValueCell","doubleIndicatorsCell","primaryValueProp","primaryValuePropDigits","isPrimaryValuePropPercentage","secondaryValueProp","secondaryValuePropDigits","isSecondaryValuePropPercentage","formattedPrimaryValue","formattedSecondaryValue","recordsHoverableCell","setRecordInformationsTitleFunc","setModalRecordInformationsLogoFunc","setModalRecordInformationsCountryNameFunc","setModalRecordInformationsHospitalsCountFunc","setModalRecordInformationsUnitsCountFunc","setModalRecordInformationsSourceSiteFunc","setModalRecordInformationsDescription","MoreInformation","cellContent","recordsImagesArr","MICALogoImage","recordName","original","regionName","recordCode","regionCode","recordCountryCode","countryCode","recordCountryName","countryName","recordHospitalsCount","hospitalsCount","recordUnitsCount","unitsCount","recordSourceSite","sourceSite","recordDescription","descriptionGroup","recordLogoIndex","colorsArr","coloredConsolidatedIndicatorCell","columnId","columnValuesArr","item","minColumValue","maxColumValue","colorRanges","currentRange","currentColorsObj","backgroundColor","coloredEvolutiveIndicatorCell","columnOptions","columnHeader","Header","columnHeaderAsNumber","parseInt","linesWithColumnValueArr","columnsObjValuesArr","columnOptionsLength","columnsMatchArr","yearValues","columnsMatchObj","find","mainValue","Benchmarking","Year","Years","Indicator","Admissions","Age","FortyEightreadmissions","SOFA","RenalReplacementTherapy","LOSICU","LOSHospital","MortalityICU","MortalityHospitalar","MechanicalVentilation","Patients","Mean","LOS","ICU","Hospital","Mortality","Points","Days","Country","MechanicalVentilationDurationDays","MechanicalVentilationDuration","ICULOSDays","HospitalLOSDays","ICUMortality","HospitalMortality","Trending","To","All","English","Portuguese","Median","useRef","filterPatientsGroupsDefaultOption","filterPatientsGroupsDefaultOptionObj","setFilterYearsDefaultOptionObj","filterIndicatorsOptions","filterIndicatorsDefaultOption","modalRecordInformationsTitle","setRecordInformationsTitle","modalRecordInformationsLogo","setModalRecordInformationsLogo","modalRecordInformationsCountryName","setModalRecordInformationsCountryName","modalRecordInformationsHospitalsCount","setModalRecordInformationsHospitalsCount","modalRecordInformationsUnitsCount","setModalRecordInformationsUnitsCount","modalRecordInformationsSourceSite","setModalRecordInformationsSourceSite","modalRecordInformationsDescription","evolutiveIndicatorsData","setEvolutiveIndicatorsData","evolutiveIndicatorsTableColumns","setEvolutiveIndicatorsTableColumns","evolutiveTableYearColumns","setEvolutiveTableYearColumns","evolutiveBeginYear","setEvolutiveBeginYear","evolutiveEndYear","setEvolutiveEndYear","consolidatedIndicatorsData","setConsolidatedIndicatorsData","consolidatedIndicatorsTableColumns","setConsolidatedIndicatorsTableColumns","consolidatedTotalizerIndicatorsData","setConsolidatedTotalizerIndicatorsData","selectedLanguage","selectedLanguageCode","firstYear","lastYear","yearStringArr","evolutiveColumnsArr","newYearTitle","filterYearsOptionsAscending","newEvolutiveColumnObj","accessor","Cell","cellinfo","secondaryValue","currentLanguageVisibleOption","getValue","currentPatientsGroupsVisibleOption","currentBrowsableFilterVisibleOption","currentBrowsableFilterVisibleValue","currentYearsOptionTranslation","currentIndicatorsOptionTranslation","sticky","fortyEightReadmissionsPercent","renalReplacementTherapyPercent","renalReplacementTherapyCount","mechanicalVentilationPercent","mechanicalVentilationCount","mortalityICUUnitMeanInDays","mortalityICUUnitCount","mortalityICUHospitalMeanInDays","mortalityICUHospitalCount","yearValuesArr","yearValuesXaxisArr","yearValuesYaxisArr","divId","tendencyChartCell","disableSortBy","admissionsCount","ageMeanInYears","sofaMeanPoints","mechanicalVentilationDurationMeanInDays","lengthOfStayICUUnitMeanInDays","lengthOfStayICUHospitalMeanInDays","SharedError","NotFoundMessage","BackToTheSite","AllRightsReserved","statusCode","setStatusCode","errorDescription","setErrorDescription","ProtectedRoute","children","Component","component","rest","to","Routes","exact","path","withRouter","LoginPage","BenchmarkingPage","SharedErrorPage","appendGoogleAnalyticsTrackingCode","scriptBaseOne","createElement","async","scriptBaseTwo","head","appendChild","appendHotjarTrackingCode","script","App","reportWebVitals","onPerfEntry","Function","then","getCLS","getFID","getFCP","getLCP","getTTFB","ReactDOM","StrictMode"],"mappings":"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","file":"static/js/main.1681b213.chunk.js","sourcesContent":["import React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport './styles.scss';\r\n\r\nconst EpButton = ({\r\n buttonText, buttonStartIcon, buttonEndIcon, customClass, disabled, actionType, buttonType,\r\n buttonWidthType, buttonId, dataBsToggle, ariaExpanded, autoClose, onClickFunc, isActive,\r\n buttonSize, dataBsTarget, ariaControls,\r\n}) => (\r\n \r\n {buttonStartIcon &&
{buttonStartIcon}
}\r\n {buttonText !== '' && {buttonText}}\r\n {buttonEndIcon &&
{buttonEndIcon}
}\r\n \r\n);\r\n\r\nexport default EpButton;\r\n\r\nEpButton.defaultProps = {\r\n buttonText: '',\r\n buttonType: '',\r\n buttonWidthType: 'default',\r\n ariaExpanded: 'false',\r\n autoClose: 'true',\r\n dataBsToggle: '',\r\n customClass: '',\r\n buttonStartIcon: null,\r\n buttonEndIcon: null,\r\n disabled: false,\r\n buttonId: null,\r\n onClickFunc: null,\r\n isActive: false,\r\n buttonSize: 'md',\r\n dataBsTarget: '',\r\n ariaControls: '',\r\n actionType: 'button',\r\n};\r\n\r\nEpButton.propTypes = {\r\n buttonText: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\r\n actionType: PropTypes.oneOf(['submit', 'button', 'reset']),\r\n buttonType: PropTypes.oneOf(['link', 'link-secondary', 'primary', 'secondary-outline']),\r\n buttonWidthType: PropTypes.oneOf(['default', 'fullsize']),\r\n buttonId: PropTypes.string,\r\n customClass: PropTypes.string,\r\n buttonStartIcon: PropTypes.element,\r\n buttonEndIcon: PropTypes.element,\r\n disabled: PropTypes.bool,\r\n dataBsToggle: PropTypes.string,\r\n ariaExpanded: PropTypes.string,\r\n autoClose: PropTypes.string,\r\n onClickFunc: PropTypes.func,\r\n isActive: PropTypes.bool,\r\n buttonSize: PropTypes.oneOf(['sm', 'md', 'lg']),\r\n dataBsTarget: PropTypes.string,\r\n ariaControls: PropTypes.string,\r\n};\r\n","const formatNumberWithAbbreviation = (value, digits, currentUserLanguage) => {\r\n let i;\r\n let valueFormat;\r\n const rx = /\\.0+$|(\\.[0-9]*[1-9])0+$/;\r\n\r\n const valueLookup = [\r\n { value: 1, symbol: '' },\r\n // ? Tirar o comentário da linha abaixo para formatar a partir de 6 dígitos\r\n // { value: 1e3, symbol: 'K' },\r\n // { value: 1e6, symbol: 'M' },\r\n { value: 1e9, symbol: 'B' },\r\n { value: 1e12, symbol: 'T' },\r\n { value: 1e15, symbol: 'P' },\r\n { value: 1e18, symbol: 'E' },\r\n ];\r\n\r\n if (value === null && value !== 0) {\r\n return '--';\r\n }\r\n\r\n // Quando o valor é 0, não deve ter casas decimais\r\n if (value === 0) {\r\n return '0';\r\n }\r\n\r\n for (i = valueLookup.length - 1; i > 0; i--) {\r\n if (value >= valueLookup[i].value) {\r\n break;\r\n }\r\n }\r\n\r\n if (value.toString()[0] === '0') {\r\n valueFormat = (value / valueLookup[i].value).toFixed(2).replace(rx, '$1');\r\n } else {\r\n valueFormat = (value / valueLookup[i].value).toFixed(digits || 0).replace(rx, '$1');\r\n }\r\n\r\n const valueCultureFormat = new Intl\r\n .NumberFormat(currentUserLanguage || 'en-US', {\r\n style: 'decimal',\r\n minimumFractionDigits: digits || 0,\r\n maximumFractionDigits: digits || 0,\r\n })\r\n .format(Number(valueFormat));\r\n\r\n return valueCultureFormat + valueLookup[i].symbol;\r\n};\r\n\r\nexport default formatNumberWithAbbreviation;\r\n","import React, { useEffect, useState } from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport './styles.scss';\r\nimport { useSelector } from 'react-redux';\r\nimport formatNumberWithAbbreviation from '../../utils/numberMeasurementFormat';\r\n\r\nconst EpHighlightIndicator = ({\r\n value, valueSymbol, valueDigits, description, iconPath, iconAlt, currentUserLanguage,\r\n}) => {\r\n const isAuthorizedUser = useSelector(state => state.auth.isAuthorizedUser);\r\n const [valueSymbolFormatted, setValueSymbolFormatted] = useState(valueSymbol);\r\n const [formattedValue, setFormattedValue] = useState(\r\n formatNumberWithAbbreviation(value, valueDigits, currentUserLanguage),\r\n );\r\n\r\n useEffect(() => {\r\n if (value === null) {\r\n setValueSymbolFormatted('');\r\n }\r\n\r\n setFormattedValue(formatNumberWithAbbreviation(value, valueDigits, currentUserLanguage));\r\n }, [currentUserLanguage, isAuthorizedUser]);\r\n\r\n return (\r\n
\r\n {iconAlt}\r\n {valueSymbolFormatted}{formattedValue}\r\n {description}\r\n
\r\n );\r\n};\r\n\r\nexport default EpHighlightIndicator;\r\n\r\nEpHighlightIndicator.defaultProps = {\r\n value: null,\r\n valueSymbol: '',\r\n};\r\n\r\nEpHighlightIndicator.propTypes = {\r\n value: PropTypes.number,\r\n valueSymbol: PropTypes.string,\r\n valueDigits: PropTypes.number.isRequired,\r\n description: PropTypes.string.isRequired,\r\n iconPath: PropTypes.string.isRequired,\r\n iconAlt: PropTypes.string.isRequired,\r\n currentUserLanguage: PropTypes.string.isRequired,\r\n};\r\n","export default \"data:image/png;base64,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\"","export default \"data:image/png;base64,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\"","export default \"data:image/png;base64,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\"","export default \"data:image/png;base64,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\"","export default \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADEAAABDCAYAAAA1du3WAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA0hpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMTQ1IDc5LjE2MzQ5OSwgMjAxOC8wOC8xMy0xNjo0MDoyMiAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6MTM0RkZFMDI1MzQ3MTFFQTlEOThDNUM0RTFDRjE3RTkiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6MTM0RkZFMDE1MzQ3MTFFQTlEOThDNUM0RTFDRjE3RTkiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTkgV2luZG93cyI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJhZG9iZTpkb2NpZDpwaG90b3Nob3A6OGZmYTNhYTEtNGU2YS00YzQwLWEwNDYtZTYwZjJlMzEyZmUxIiBzdFJlZjpkb2N1bWVudElEPSJhZG9iZTpkb2NpZDpwaG90b3Nob3A6OGZmYTNhYTEtNGU2YS00YzQwLWEwNDYtZTYwZjJlMzEyZmUxIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8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\"","export default \"data:image/png;base64,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\"","export default \"data:image/png;base64,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\"","export default \"data:image/png;base64,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\"","export default \"data:image/png;base64,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\"","export default __webpack_public_path__ + \"static/media/record_alberta-critical-care.8caa340b.png\";","import React from 'react';\r\nimport Slider from 'react-slick';\r\nimport UCIUruguayasLogoImage from '../../assets/images/records/record_uci-uruguayas.png';\r\nimport UTIsBrasileirasLogoImage from '../../assets/images/records/record_uti-brasileiras.png';\r\nimport AnzicsLogoImage from '../../assets/images/records/record_anzics.png';\r\nimport NICELogoImage from '../../assets/images/records/record_nice.png';\r\nimport CritCareAsiaLogoImage from '../../assets/images/records/record_crit-care-asia.png';\r\n// import MICALogoImage from '../../assets/images/records/record_mica.png';\r\nimport CubreaLogoImage from '../../assets/images/records/record_cubrea.png';\r\nimport SATIQLogoImage from '../../assets/images/records/record_satiq.png';\r\nimport JipadLogoImage from '../../assets/images/records/record_jipad.png';\r\nimport IRISLogoImage from '../../assets/images/records/record_iris.png';\r\nimport AlbertaCriticalCareLogoImage from '../../assets/images/records/record_alberta-critical-care.png';\r\nimport './styles.scss';\r\n\r\nconst EpSponsorsSlider = () => {\r\n const sliderSettings = {\r\n dots: false,\r\n infinite: true,\r\n lazyLoad: true,\r\n pauseOnHover: true,\r\n autoplay: true,\r\n speed: 300,\r\n slidesToShow: 8,\r\n slidesToScroll: 1,\r\n initialSlide: 0,\r\n responsive: [\r\n {\r\n breakpoint: 992,\r\n settings: {\r\n slidesToShow: 6,\r\n slidesToScroll: 6,\r\n infinite: true,\r\n },\r\n },\r\n {\r\n breakpoint: 768,\r\n settings: {\r\n slidesToShow: 4,\r\n slidesToScroll: 4,\r\n },\r\n },\r\n {\r\n breakpoint: 575,\r\n settings: {\r\n slidesToShow: 1,\r\n slidesToScroll: 1,\r\n },\r\n },\r\n ],\r\n };\r\n\r\n return (\r\n
\r\n \r\n
\r\n \r\n \"\"\r\n \r\n
\r\n
\r\n \r\n \"\"\r\n \r\n
\r\n
\r\n \r\n \"\"\r\n \r\n
\r\n
\r\n \r\n \"\"\r\n \r\n
\r\n
\r\n \r\n \"\"\r\n \r\n
\r\n {/*
\r\n \r\n \"\"\r\n \r\n
*/}\r\n
\r\n {/* Confirme confirmado com o Jorge Salluh, o CUB-REA não tem site disponível */}\r\n \r\n \"\"\r\n \r\n
\r\n
\r\n \r\n \"\"\r\n \r\n
\r\n
\r\n \r\n \"\"\r\n \r\n
\r\n
\r\n \r\n \"\"\r\n \r\n
\r\n
\r\n \r\n \"\"\r\n \r\n
\r\n
\r\n
\r\n );\r\n};\r\n\r\nexport default EpSponsorsSlider;\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport './styles.scss';\r\n\r\nconst EpAlert = ({\r\n alertType, icon, title, description, customId,\r\n}) => (\r\n
\r\n {icon &&
{icon}
}\r\n
\r\n {title &&
{title}
}\r\n

{description}

\r\n
\r\n
\r\n);\r\n\r\nexport default EpAlert;\r\n\r\nEpAlert.defaultProps = {\r\n icon: '',\r\n title: '',\r\n customId: '',\r\n};\r\n\r\nEpAlert.propTypes = {\r\n alertType: PropTypes.oneOf(['warning']).isRequired,\r\n icon: PropTypes.node,\r\n title: PropTypes.string,\r\n description: PropTypes.string.isRequired,\r\n customId: PropTypes.string,\r\n};\r\n","export default __webpack_public_path__ + \"static/media/padlock.cd458576.svg\";","export default __webpack_public_path__ + \"static/media/indicator_registers.d4c3c7d5.svg\";","export default __webpack_public_path__ + \"static/media/indicator_icus.e7f46761.svg\";","export default __webpack_public_path__ + \"static/media/indicator_countries.c756b82a.svg\";","export const BI_BASE_API_URL = process.env.REACT_APP_BI_BASE_API_URL;\r\n\r\n// GET - Obtém dados dos totalizadores consolidados\r\nexport const BI_GET_CONSOLIDATED_TOTALIZERS_ENDPOINT = '/benchmarking/international/consolidated/totalizers';\r\n\r\n// GET - Obtém dados dos indicadores consolidados\r\nexport const BI_GET_CONSOLIDATED_INDICATORS_ENDPOINT = '/benchmarking/international/consolidated/regions';\r\n\r\n// GET - Obtém dados dos indicadores evolutivos\r\nexport const BI_GET_EVOLUTIVE_INDICATORS_ENDPOINT = '/benchmarking/international/evolutive/regions';\r\n\r\n// GET - Obtém dados dos totalizadores da tela inicial\r\nexport const BI_GET_LOGIN_TOTALIZER_ENDPOINT = '/benchmarking/international/initialPage';\r\n","import { useEffect, useState } from 'react';\r\nimport { useSelector } from 'react-redux';\r\n\r\nconst useTranslation = (tag) => {\r\n const culture = useSelector(state => state.globalization.language);\r\n const translationsCache = useSelector(state => state.globalization.translationsCache);\r\n const currentCultureTranslationsArr = translationsCache[culture];\r\n const [termTranslated, setTermTranslated] = useState(tag);\r\n\r\n // Verifica se o termo está cadastrado no Globalization na cultura selecionada\r\n const existingTagInfos = currentCultureTranslationsArr\r\n ? currentCultureTranslationsArr.filter(termsObj => termsObj.term === tag) : null;\r\n\r\n // Se o termo estiver cadastrado no Globalization e tiver tradução no idioma, usa esse valor\r\n // Se o termo não estiver cadastrado no Globalization, usa o valor da tag como tradução\r\n // Assim como se estiver cadastrado no Globalization, mas não tiver tradução no idioma\r\n useEffect(() => {\r\n if (\r\n existingTagInfos !== null\r\n && existingTagInfos.length > 0\r\n && existingTagInfos[0].translation !== null\r\n && existingTagInfos[0].translation !== undefined\r\n && existingTagInfos[0].translation !== ''\r\n ) {\r\n setTermTranslated(existingTagInfos[0].translation);\r\n }\r\n }, [culture]);\r\n\r\n return termTranslated;\r\n};\r\n\r\nexport default useTranslation;\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { ToastContainer, toast } from 'react-toastify';\r\nimport useTranslation from '../../hooks/useTranslation';\r\nimport './styles.scss';\r\n\r\nlet Success = 'Success';\r\nlet Warning = 'Warning';\r\nlet ErrorTitle = 'Error';\r\n\r\nconst EpToaster = ({\r\n position, duration, hideProgressBar, newestOnTop,\r\n}) => {\r\n // Tags do Globalization\r\n Success = useTranslation('Success');\r\n Warning = useTranslation('Warning');\r\n ErrorTitle = useTranslation('Error');\r\n\r\n return (\r\n \r\n );\r\n};\r\n\r\nconst EpCustomToast = ({\r\n title, description, hasTitle,\r\n}) => (\r\n
\r\n {!hasTitle && (\r\n
{title}
\r\n )}\r\n

{description}

\r\n
\r\n);\r\n\r\nexport function showToast(\r\n color, title, description, hasTitle,\r\n) {\r\n toast(\r\n ,\r\n { type: color },\r\n );\r\n}\r\n\r\nexport const showToastDefault = (res, toasterTitle, toasterDescription) => {\r\n const errorCode = res.status || res.response.status;\r\n\r\n switch (errorCode) {\r\n case 200:\r\n return showToast('success', toasterTitle || Success, toasterDescription || res.statusText);\r\n case 204:\r\n return showToast('success', toasterTitle || Success, toasterDescription || res.statusText);\r\n case 422:\r\n return showToast('warning', toasterTitle || Warning, toasterDescription || res.message);\r\n default:\r\n return showToast('error', toasterTitle || ErrorTitle, toasterDescription || res.message);\r\n }\r\n};\r\n\r\nexport default EpToaster;\r\n\r\nEpCustomToast.defaultProps = {\r\n hasTitle: false,\r\n};\r\n\r\nEpCustomToast.propTypes = {\r\n description: PropTypes.string.isRequired,\r\n title: PropTypes.string.isRequired,\r\n hasTitle: PropTypes.bool,\r\n};\r\n\r\nEpToaster.defaultProps = {\r\n position: 'top-right',\r\n duration: 5000,\r\n hideProgressBar: false,\r\n newestOnTop: true,\r\n};\r\n\r\nEpToaster.propTypes = {\r\n position: PropTypes.oneOf(['top-left', 'top-right', 'bottom-left', 'bottom-right']),\r\n duration: PropTypes.number,\r\n hideProgressBar: PropTypes.bool,\r\n newestOnTop: PropTypes.bool,\r\n};\r\n","import axios from 'axios';\r\nimport { showToastDefault } from '../components/EpToaster';\r\n\r\nconst httpService = () => {\r\n const get = async ({\r\n url, data, hasSuccessToaster, hideErrorToaster, toasterTitle, toasterDescription,\r\n }) => {\r\n try {\r\n const response = await axios.get(url, { params: data });\r\n if (hasSuccessToaster) { showToastDefault(response, toasterTitle, toasterDescription); }\r\n return response;\r\n } catch (error) {\r\n if (!hideErrorToaster) { showToastDefault(error, toasterTitle, toasterDescription); }\r\n return error;\r\n }\r\n };\r\n\r\n const post = async ({\r\n url, data, hasSuccessToaster, hideErrorToaster, toasterTitle, toasterDescription,\r\n }) => {\r\n try {\r\n const response = await axios.post(url, data);\r\n if (hasSuccessToaster) { showToastDefault(response, toasterTitle, toasterDescription); }\r\n return response;\r\n } catch (error) {\r\n if (!hideErrorToaster) { showToastDefault(error, toasterTitle, toasterDescription); }\r\n return error;\r\n }\r\n };\r\n\r\n const put = async ({\r\n url, data, hasSuccessToaster, hideErrorToaster, toasterTitle, toasterDescription,\r\n }) => {\r\n try {\r\n const response = await axios.put(url, data);\r\n if (hasSuccessToaster) { showToastDefault(response, toasterTitle, toasterDescription); }\r\n return response;\r\n } catch (error) {\r\n if (!hideErrorToaster) { showToastDefault(error, toasterTitle, toasterDescription); }\r\n return error;\r\n }\r\n };\r\n\r\n const remove = async ({\r\n url, data, hasSuccessToaster, hideErrorToaster, toasterTitle, toasterDescription,\r\n }) => {\r\n try {\r\n const response = await axios.delete(url, data);\r\n if (hasSuccessToaster) { showToastDefault(response, toasterTitle, toasterDescription); }\r\n return response;\r\n } catch (error) {\r\n if (!hideErrorToaster) { showToastDefault(error, toasterTitle, toasterDescription); }\r\n return error;\r\n }\r\n };\r\n\r\n return {\r\n get, post, put, remove,\r\n };\r\n};\r\n\r\nexport default httpService;\r\n","import {\r\n BI_BASE_API_URL,\r\n BI_GET_CONSOLIDATED_TOTALIZERS_ENDPOINT,\r\n BI_GET_CONSOLIDATED_INDICATORS_ENDPOINT,\r\n BI_GET_EVOLUTIVE_INDICATORS_ENDPOINT,\r\n BI_GET_LOGIN_TOTALIZER_ENDPOINT,\r\n} from '../constants/indicatorsConstants';\r\nimport httpService from './httpService';\r\n\r\nconst indicatorsService = () => {\r\n // GET - Obtém dados dos totalizadores consolidados\r\n const getConsolidatedTotalizers = async ({ selectedYear, selectedPatientGroup }) => {\r\n const { get } = httpService();\r\n const params = null;\r\n\r\n const result = await get({\r\n url: `${BI_BASE_API_URL + BI_GET_CONSOLIDATED_TOTALIZERS_ENDPOINT}/?year=${selectedYear}&patientGroupItemCode=${selectedPatientGroup}`,\r\n data: params,\r\n });\r\n\r\n return result;\r\n };\r\n\r\n // GET - Obtém dados dos totalizadores consolidados\r\n const getConsolidatedIndicators = async ({ selectedYear, selectedPatientGroup }) => {\r\n const { get } = httpService();\r\n const params = null;\r\n\r\n const result = await get({\r\n url: `${BI_BASE_API_URL + BI_GET_CONSOLIDATED_INDICATORS_ENDPOINT}/?year=${selectedYear}&patientGroupItemCode=${selectedPatientGroup}`,\r\n data: params,\r\n });\r\n\r\n return result;\r\n };\r\n\r\n // GET - Obtém dados dos totalizadores consolidados\r\n const getEvolutiveIndicators = async ({ selectedPatientGroup, selectedIndicator }) => {\r\n const { get } = httpService();\r\n const params = null;\r\n\r\n const result = await get({\r\n url: `${BI_BASE_API_URL + BI_GET_EVOLUTIVE_INDICATORS_ENDPOINT}/?patientGroupItemCode=${selectedPatientGroup}&indicator=${selectedIndicator}`,\r\n data: params,\r\n });\r\n\r\n return result;\r\n };\r\n\r\n // GET - Obtém dados dos totalizadores da tela inicial\r\n const getLoginTotalizer = async () => {\r\n const { get } = httpService();\r\n const params = null;\r\n\r\n const result = await get({\r\n url: `${BI_BASE_API_URL + BI_GET_LOGIN_TOTALIZER_ENDPOINT}`,\r\n data: params,\r\n });\r\n\r\n return result;\r\n };\r\n\r\n return {\r\n getConsolidatedTotalizers,\r\n getConsolidatedIndicators,\r\n getEvolutiveIndicators,\r\n getLoginTotalizer,\r\n };\r\n};\r\n\r\nexport default indicatorsService;\r\n","export const BI_BASE_API_URL = process.env.REACT_APP_BI_BASE_API_URL_UNAUTHORIZED;\r\n\r\n// GET - Obtém token a partir de uma chave serial\r\nexport const BI_POST_AUTHENTICATION_BY_SERIAL_NUMBER_ENDPOINT = '/authentication/serial-number';\r\n\r\n// GET - Valida um token\r\nexport const BI_GET_AUTHENTICATION_BY_TOKEN_ENDPOINT = '/authentication/token/validate-token';\r\n\r\nexport const BI_AUTH_NECESSARY_ROLES = ['ICU International Benchmarking', 'SuperAdministrator', 'Administrator'];\r\n","export const STORE_USER = 'STORE_USER';\r\nexport const LOADING_AUTHENTICATION = 'LOADING_AUTHENTICATION';\r\n\r\nexport const STORE_LAST_FILTERS_APPLIED = 'STORE_LAST_FILTERS_APPLIED';\r\nexport const STORE_FILTER_OPTIONS = 'STORE_FILTER_OPTIONS';\r\n\r\nexport const STORE_USER_LANGUAGE = 'STORE_USER_LANGUAGE';\r\nexport const STORE_TRANSLATIONS = 'STORE_TRANSLATIONS';\r\n","import {\r\n STORE_USER,\r\n LOADING_AUTHENTICATION,\r\n} from '../types';\r\n\r\nexport const storeUser = (user, isAuthorizedUser) => ({\r\n type: STORE_USER,\r\n user,\r\n isAuthorizedUser,\r\n});\r\n\r\nexport const loadingAuthentication = () => ({\r\n type: LOADING_AUTHENTICATION,\r\n});\r\n","import {\r\n LOADING_AUTHENTICATION,\r\n STORE_USER,\r\n} from '../types';\r\n\r\nconst initialState = {\r\n user: null,\r\n isAuthorizedUser: false,\r\n isLoadingAuthentication: true,\r\n};\r\n\r\nconst authReducer = (state = initialState, action) => {\r\n switch (action.type) {\r\n case STORE_USER:\r\n return {\r\n ...state,\r\n user: action.user,\r\n isAuthorizedUser: action.isAuthorizedUser,\r\n isLoadingAuthentication: false,\r\n };\r\n case LOADING_AUTHENTICATION:\r\n return {\r\n ...state,\r\n isLoadingAuthentication: true,\r\n };\r\n default:\r\n return state;\r\n }\r\n};\r\n\r\nexport default authReducer;\r\n","import { STORE_LAST_FILTERS_APPLIED, STORE_FILTER_OPTIONS } from '../types';\r\n\r\nconst initialState = {\r\n lastFiltersApplied: {\r\n reportType: 0,\r\n patientGroupItemCode: null,\r\n year: null,\r\n indicator: null,\r\n },\r\n filterCache: {\r\n patientsGroups: null,\r\n years: null,\r\n indicators: null,\r\n },\r\n lastCacheTime: null,\r\n};\r\n\r\nconst filterReducer = (state = initialState, action) => {\r\n switch (action.type) {\r\n case STORE_LAST_FILTERS_APPLIED:\r\n return {\r\n ...state,\r\n type: action.type,\r\n lastFiltersApplied: action.payload,\r\n };\r\n case STORE_FILTER_OPTIONS:\r\n return {\r\n ...state,\r\n type: action.type,\r\n filterCache: action.filterCache,\r\n lastCacheTime: action.lastCacheTime,\r\n };\r\n default:\r\n return state;\r\n }\r\n};\r\n\r\nexport default filterReducer;\r\n","import { STORE_USER_LANGUAGE, STORE_TRANSLATIONS } from '../types';\r\n\r\nconst initialState = {\r\n language: null,\r\n translationsCache: [],\r\n lastCacheTime: null,\r\n};\r\n\r\nconst globalizationReducer = (state = initialState, action) => {\r\n switch (action.type) {\r\n case STORE_USER_LANGUAGE:\r\n return {\r\n ...state,\r\n type: action.type,\r\n language: action.language,\r\n };\r\n case STORE_TRANSLATIONS:\r\n return {\r\n ...state,\r\n type: action.type,\r\n translationsCache: action.translationsCache,\r\n lastCacheTime: action.lastCacheTime,\r\n };\r\n default:\r\n return state;\r\n }\r\n};\r\n\r\nexport default globalizationReducer;\r\n","import { createStore, compose, combineReducers } from 'redux';\r\nimport authReducer from './reducers/authReducer';\r\nimport filterReducer from './reducers/filterReducer';\r\nimport globalizationReducer from './reducers/globalizationReducer';\r\n\r\nconst initialState = {};\r\n\r\nconst rootReducer = combineReducers({\r\n auth: authReducer,\r\n globalization: globalizationReducer,\r\n filter: filterReducer,\r\n});\r\n\r\nconst composeEnhancers = (process.env.NODE_ENV !== 'production' && typeof window !== 'undefined' && window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__) || compose;\r\n\r\nconst store = createStore(\r\n rootReducer,\r\n initialState,\r\n composeEnhancers(),\r\n);\r\n\r\nexport default store;\r\n","import axios from 'axios';\r\n\r\nconst setAuthHeader = (token) => {\r\n const currentUserLanguage = localStorage.getItem('bi.userLanguage');\r\n\r\n axios.defaults.headers.common.Authorization = token ? `Bearer ${token}` : '';\r\n axios.defaults.headers.common['Accept-Language'] = currentUserLanguage || 'en-US';\r\n};\r\n\r\nexport default setAuthHeader;\r\n","import { STORE_USER_LANGUAGE, STORE_TRANSLATIONS } from '../types';\r\n\r\nexport const storeUserLanguage = language => ({\r\n type: STORE_USER_LANGUAGE,\r\n language,\r\n});\r\n\r\nexport const storeTranslations = (translationsCache, lastCacheTime) => ({\r\n type: STORE_TRANSLATIONS,\r\n translationsCache,\r\n lastCacheTime,\r\n});\r\n","import moment from 'moment';\r\nimport { storeTranslations } from '../redux/actions/globalizationAction';\r\nimport store from '../redux/store';\r\nimport {\r\n GLOBALIZATION_SYSTEM_ID,\r\n GLOBALIZATION_BASE_API_URL,\r\n GLOBALIZATION_GET_TERMS_AND_TRANSLATIONS_BY_TAG_ENDPOINT,\r\n} from '../constants/globalizationConstants';\r\nimport httpService from './httpService';\r\n\r\nconst globalizationService = () => {\r\n const getTermAndTranslationsByTag = async ({\r\n systemId, tag, culture, productId, product,\r\n }) => {\r\n const { get } = httpService();\r\n const params = {\r\n SystemId: systemId, // int\r\n Tag: tag, // string\r\n Culture: culture, // string\r\n ProductId: productId, // int\r\n Product: product, // string\r\n };\r\n\r\n const result = await get({\r\n url: GLOBALIZATION_BASE_API_URL\r\n + GLOBALIZATION_GET_TERMS_AND_TRANSLATIONS_BY_TAG_ENDPOINT,\r\n data: params,\r\n });\r\n\r\n return result;\r\n };\r\n\r\n // Requisição das traduções no idioma atualmente selecionado\r\n // se tiver e o tempo do cache do cache não tiver acabado\r\n // não deve ser feita uma nova requisição\r\n const getDataTermAndTranslationsByTag = async (culture, translationsCache, lastCacheTime) => {\r\n const currentUserLanguage = localStorage.getItem('userLanguage');\r\n const timeNow = new Date().getTime();\r\n const cacheTimeNow = moment(timeNow).format('YYYY-MM-DD hh:mm:ss');\r\n const lastCacheTimeSaved = lastCacheTime ? moment(lastCacheTime).format('YYYY-MM-DD hh:mm:ss') : null;\r\n const expiresCacheTime = lastCacheTime ? moment(lastCacheTime).add(1, 'hours').format('YYYY-MM-DD hh:mm:ss') : null;\r\n\r\n const params = {\r\n systemId: GLOBALIZATION_SYSTEM_ID,\r\n tag: 'Global',\r\n culture: culture || currentUserLanguage,\r\n };\r\n\r\n // Verifica os dados em cache para fazer ou não a requisição da tradução no idioma atual\r\n // Se já houver no cache traduções do idioma selecionado, não é feita nova requisição\r\n // Mas se feita após 1 hora desde o último cache salvo, é feita outra requisição\r\n if (\r\n translationsCache === []\r\n || translationsCache === null\r\n || !translationsCache[culture]\r\n || lastCacheTimeSaved === null\r\n || expiresCacheTime <= cacheTimeNow\r\n ) {\r\n // const responseJSON = await getTermAndTranslationsByTag(params);\r\n // const translationsList = responseJSON && responseJSON.data\r\n // ? responseJSON.data.response : null;\r\n\r\n // Carrega todos os idiomas da aplicação ao atenticar\r\n // Solução para resolver demora da requisição de tradução em Produção\r\n // pelo servidor ser da Bélgica e demorar muito para trazer response\r\n params.culture = 'pt-BR';\r\n const portugueseResponseJSON = await getTermAndTranslationsByTag(params);\r\n const portugueseTranslationsList = portugueseResponseJSON && portugueseResponseJSON.data\r\n ? portugueseResponseJSON.data.response : null;\r\n\r\n params.culture = 'en-US';\r\n const englishResponseJSON = await getTermAndTranslationsByTag(params);\r\n const englishTranslationsList = englishResponseJSON && englishResponseJSON.data\r\n ? englishResponseJSON.data.response : null;\r\n\r\n const newTranslationsCache = {\r\n ...translationsCache,\r\n // [culture || currentUserLanguage]: translationsList,\r\n 'pt-BR': portugueseTranslationsList,\r\n 'en-US': englishTranslationsList,\r\n };\r\n\r\n // Atualiza objeto de traduções na store (cache)\r\n store.dispatch(storeTranslations(newTranslationsCache, cacheTimeNow));\r\n }\r\n\r\n return translationsCache;\r\n };\r\n\r\n return {\r\n getTermAndTranslationsByTag,\r\n getDataTermAndTranslationsByTag,\r\n };\r\n};\r\n\r\nexport default globalizationService;\r\n","export const GLOBALIZATION_SYSTEM_ID = process.env.REACT_APP_GLOBALIZATION_SYSTEM_ID;\r\n\r\nexport const GLOBALIZATION_BASE_API_URL = process.env.REACT_APP_GLOBALIZATION_BASE_API_URL;\r\n\r\n// GET - Retorna termos e traduções para uma tag\r\nexport const GLOBALIZATION_GET_TERMS_AND_TRANSLATIONS_BY_TAG_ENDPOINT = '/terms/translations/tags';\r\n","import {\r\n BI_BASE_API_URL,\r\n BI_POST_AUTHENTICATION_BY_SERIAL_NUMBER_ENDPOINT,\r\n BI_GET_AUTHENTICATION_BY_TOKEN_ENDPOINT,\r\n BI_AUTH_NECESSARY_ROLES,\r\n} from '../constants/authConstants';\r\nimport { storeUser } from '../redux/actions/authAction';\r\nimport store from '../redux/store';\r\nimport httpService from './httpService';\r\nimport setAuthHeader from './axiosService';\r\nimport { storeUserLanguage } from '../redux/actions/globalizationAction';\r\nimport globalizationService from './globalizationService';\r\n\r\nconst authService = () => {\r\n const user = {\r\n authTime: null, // Momento da autenticação\r\n expiresIn: null, // Tempo até o token expirar\r\n };\r\n\r\n let isAuthorizedUser = false;\r\n\r\n const postAuthenticationBySerialNumber = async ({ serialNumber, clientCallerURI }) => {\r\n const { post } = httpService();\r\n const params = {\r\n SerialNumber: serialNumber,\r\n ClientCallerURI: clientCallerURI,\r\n };\r\n\r\n const result = await post({\r\n url: BI_BASE_API_URL + BI_POST_AUTHENTICATION_BY_SERIAL_NUMBER_ENDPOINT,\r\n data: params,\r\n hideErrorToaster: true,\r\n });\r\n\r\n return result;\r\n };\r\n\r\n const getAuthenticationByToken = async () => {\r\n const { get } = httpService();\r\n const params = null;\r\n\r\n const result = await get({\r\n url: BI_BASE_API_URL + BI_GET_AUTHENTICATION_BY_TOKEN_ENDPOINT,\r\n data: params,\r\n hideErrorToaster: true,\r\n });\r\n\r\n return result;\r\n };\r\n\r\n const getURLQueryStringValues = () => {\r\n const queryStringValuesObj = {};\r\n const keyValuePairs = window.location.search !== null && window.location.search !== undefined ? window.location.search.slice(1).split('&') : null;\r\n\r\n if (keyValuePairs !== null) {\r\n keyValuePairs.forEach((keyValuePair) => {\r\n const transformedKeyName = keyValuePair.split('=')[0];\r\n const transformedKeyValue = keyValuePair.split(/=(.+)/)[1];\r\n queryStringValuesObj[decodeURIComponent(transformedKeyName || '')] = decodeURIComponent(transformedKeyValue) || '';\r\n });\r\n }\r\n\r\n return queryStringValuesObj;\r\n };\r\n\r\n const parseJwt = (token) => {\r\n const base64Url = token.split('.')[1];\r\n const base64 = base64Url.replace(/-/g, '+').replace(/_/g, '/');\r\n const jsonPayload = decodeURIComponent(atob(base64).split('').map(c => `%${(`00${c.charCodeAt(0).toString(16)}`).slice(-2)}`).join(''));\r\n\r\n return JSON.parse(jsonPayload);\r\n };\r\n\r\n const checkNecessaryRoles = (userRoles) => {\r\n const necessaryRolesArr = BI_AUTH_NECESSARY_ROLES;\r\n let hasNecessaryHole = false;\r\n\r\n if (Array.isArray(userRoles)) {\r\n hasNecessaryHole = userRoles.some(option => necessaryRolesArr.includes(option));\r\n } else {\r\n hasNecessaryHole = necessaryRolesArr.includes(userRoles);\r\n }\r\n\r\n if (hasNecessaryHole) {\r\n isAuthorizedUser = true;\r\n return isAuthorizedUser;\r\n }\r\n\r\n return isAuthorizedUser;\r\n };\r\n\r\n const signinBySerialNumber = async (receivedQueryStringObj, currentUserLanguage) => {\r\n // Recebe via querystring um numero serial (Guid)\r\n const { serialNumber } = receivedQueryStringObj;\r\n let { ref } = receivedQueryStringObj;\r\n\r\n if (ref === null || ref === undefined) {\r\n const referrer = btoa((window.location !== window.parent.location)\r\n ? document.referrer.split('?')[0]\r\n : document.location.href.split('?')[0]);\r\n ref = referrer;\r\n }\r\n\r\n // Identifica se usuário está sem autorização por falta do serial number na URL como querystring\r\n if (serialNumber !== null && serialNumber !== undefined && ref !== null && ref !== undefined) {\r\n const params = {\r\n serialNumber,\r\n clientCallerURI: ref,\r\n };\r\n\r\n const responseJSON = await postAuthenticationBySerialNumber(params);\r\n\r\n const authenticationResponse = responseJSON !== null && responseJSON !== undefined\r\n && responseJSON.data !== null && responseJSON.data !== undefined\r\n ? responseJSON.data.response : null;\r\n\r\n const authenticationStatusCode = authenticationResponse !== null\r\n && authenticationResponse !== undefined\r\n ? responseJSON.status : 401;\r\n\r\n // Verifica se o serial number é de usuário autorizado ou não\r\n if (authenticationResponse !== null\r\n && authenticationStatusCode === 200\r\n && authenticationResponse.access_token !== undefined\r\n && authenticationResponse.access_token !== null) {\r\n // Salva token no header para cada requisição\r\n setAuthHeader(authenticationResponse.access_token);\r\n\r\n // Decodifica token jwt\r\n const parsedAuthenticationResponse = parseJwt(authenticationResponse.access_token);\r\n const { role } = parsedAuthenticationResponse;\r\n const authTime = parsedAuthenticationResponse.auth_time;\r\n\r\n user.authTime = authTime;\r\n user.expiresIn = authenticationResponse.expires_in;\r\n\r\n // Verifica se o usuário tem a role necessária e token\r\n const hasNecessaryHole = checkNecessaryRoles(role);\r\n\r\n if (hasNecessaryHole && authenticationResponse.access_token) {\r\n isAuthorizedUser = true;\r\n }\r\n\r\n // Faz requisição das traduções do Globalization\r\n await globalizationService()\r\n .getDataTermAndTranslationsByTag(currentUserLanguage, null, null);\r\n\r\n setTimeout(() => {\r\n window.history.pushState({}, document.title, '/');\r\n store.dispatch(storeUserLanguage(currentUserLanguage));\r\n store.dispatch(storeUser(user, isAuthorizedUser));\r\n }, 300);\r\n\r\n return user;\r\n }\r\n }\r\n\r\n window.history.pushState({}, document.title, '/');\r\n\r\n return store.dispatch(storeUser(user, isAuthorizedUser));\r\n };\r\n\r\n const signinByToken = async (receivedQueryStringObj, currentUserLanguage) => {\r\n // Recebe via querystring um token\r\n const { token } = receivedQueryStringObj;\r\n\r\n // Salva token no header para cada requisição\r\n setAuthHeader(token);\r\n\r\n // Chama API passando o token para validação\r\n if (token !== null && token !== undefined) {\r\n const params = null;\r\n const responseJSON = await getAuthenticationByToken(params);\r\n\r\n const authenticationResponse = responseJSON !== null && responseJSON !== undefined\r\n && responseJSON.data !== null && responseJSON.data !== undefined\r\n ? responseJSON : null;\r\n\r\n const authenticationStatusCode = authenticationResponse !== null\r\n && authenticationResponse !== undefined\r\n ? responseJSON.status : 401;\r\n\r\n // Verifica se o token é de usuário autorizado ou não\r\n if (authenticationStatusCode === 200) {\r\n // Decodifica token jwt\r\n const parsedAuthenticationResponse = parseJwt(token);\r\n const { role, exp } = parsedAuthenticationResponse;\r\n const authTime = parsedAuthenticationResponse.auth_time;\r\n\r\n user.authTime = authTime;\r\n user.expiresIn = exp - authTime;\r\n\r\n // Verifica se o usuário tem a role necessária e token\r\n const hasNecessaryHole = checkNecessaryRoles(role);\r\n\r\n if (hasNecessaryHole && token) {\r\n isAuthorizedUser = true;\r\n }\r\n\r\n // Faz requisição das traduções do Globalization\r\n await globalizationService()\r\n .getDataTermAndTranslationsByTag(currentUserLanguage, null, null);\r\n\r\n setTimeout(() => {\r\n window.history.pushState({}, document.title, '/');\r\n store.dispatch(storeUserLanguage(currentUserLanguage));\r\n store.dispatch(storeUser(user, isAuthorizedUser));\r\n }, 300);\r\n\r\n return user;\r\n }\r\n }\r\n\r\n return store.dispatch(storeUser(user, isAuthorizedUser));\r\n };\r\n\r\n const defineSigninMethod = () => {\r\n const receivedQueryStringObj = getURLQueryStringValues();\r\n const { culture } = receivedQueryStringObj;\r\n\r\n let selectedCulture = culture;\r\n const availableCultures = ['pt-BR', 'en-US'];\r\n const currentUserLanguage = localStorage.getItem('bi.userLanguage');\r\n\r\n // Troca idioma do sistema caso seja passado via querystring\r\n if (culture === null || culture === undefined || !availableCultures.includes(culture)) {\r\n selectedCulture = currentUserLanguage !== null && currentUserLanguage !== undefined\r\n ? currentUserLanguage : 'en-US';\r\n }\r\n\r\n localStorage.setItem('bi.userLanguage', selectedCulture);\r\n\r\n // Verifica se a URL tem serialNumber ou token para identificar o tipo de autenticação\r\n if (Object.prototype.hasOwnProperty.call(receivedQueryStringObj, 'serialNumber')) {\r\n return signinBySerialNumber(receivedQueryStringObj, selectedCulture);\r\n } if (Object.prototype.hasOwnProperty.call(receivedQueryStringObj, 'token')) {\r\n return signinByToken(receivedQueryStringObj, selectedCulture);\r\n }\r\n\r\n setTimeout(() => {\r\n window.history.pushState({}, document.title, '/');\r\n store.dispatch(storeUserLanguage(selectedCulture));\r\n store.dispatch(storeUser(user, isAuthorizedUser));\r\n }, 300);\r\n\r\n return user;\r\n };\r\n\r\n return {\r\n postAuthenticationBySerialNumber,\r\n getAuthenticationByToken,\r\n getURLQueryStringValues,\r\n signinBySerialNumber,\r\n signinByToken,\r\n defineSigninMethod,\r\n };\r\n};\r\n\r\nexport default authService;\r\n","import React, { useEffect } from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport './styles.scss';\r\n\r\nconst EpLoadingPage = ({ isVisible }) => {\r\n useEffect(() => {\r\n const appBody = document.getElementById('app__container');\r\n\r\n if (isVisible) {\r\n appBody.style.overflow = 'hidden';\r\n appBody.style.height = '100vh';\r\n appBody.style.width = '100vw';\r\n } else {\r\n appBody.removeAttribute('style');\r\n }\r\n }, [isVisible]);\r\n\r\n return (\r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n );\r\n};\r\n\r\nexport default EpLoadingPage;\r\n\r\nEpLoadingPage.defaultProps = {\r\n isVisible: false,\r\n};\r\n\r\nEpLoadingPage.propTypes = {\r\n isVisible: PropTypes.bool,\r\n};\r\n","export const BI_BASE_API_URL = process.env.REACT_APP_BI_BASE_API_URL;\r\n\r\n// GET - Obtém anos com dados para exibição do filtro\r\nexport const BI_GET_YEARS_ENDPOINT = '/benchmarking/international/years';\r\n\r\n// GET - Obtém grupos de pacientes\r\nexport const BI_GET_PATIENTS_GROUPS_ENDPOINT = '/benchmarking/international/patients/groups/items';\r\n","import { STORE_LAST_FILTERS_APPLIED, STORE_FILTER_OPTIONS } from '../types';\r\n\r\nexport const storeLastFiltersApplied = lastFiltersApplied => ({\r\n type: STORE_LAST_FILTERS_APPLIED,\r\n payload: lastFiltersApplied,\r\n});\r\n\r\nexport const storeFilterOptions = (filterCache, lastCacheTime) => ({\r\n type: STORE_FILTER_OPTIONS,\r\n filterCache,\r\n lastCacheTime,\r\n});\r\n","import moment from 'moment';\r\nimport {\r\n BI_BASE_API_URL,\r\n BI_GET_YEARS_ENDPOINT,\r\n BI_GET_PATIENTS_GROUPS_ENDPOINT,\r\n} from '../constants/filterConstants';\r\nimport { storeFilterOptions } from '../redux/actions/filterAction';\r\nimport store from '../redux/store';\r\nimport httpService from './httpService';\r\n\r\nconst filterService = () => {\r\n // GET - Options de ano\r\n const getYears = async ({ patientGroupItemCode }) => {\r\n const { get } = httpService();\r\n const params = {\r\n PatientGroupItemCode: patientGroupItemCode,\r\n };\r\n\r\n const result = await get({\r\n url: BI_BASE_API_URL + BI_GET_YEARS_ENDPOINT,\r\n data: params,\r\n });\r\n\r\n return result;\r\n };\r\n\r\n // GET - Options de ano\r\n const getPatientsGroups = async () => {\r\n const { get } = httpService();\r\n const params = null;\r\n\r\n const result = await get({\r\n url: BI_BASE_API_URL + BI_GET_PATIENTS_GROUPS_ENDPOINT,\r\n data: params,\r\n });\r\n\r\n return result;\r\n };\r\n\r\n const getYearsByPatientGroup = async (\r\n culture, filterCache, filterPatientGroupSelected,\r\n ) => {\r\n const currentUserLanguage = localStorage.getItem('bi.userLanguage');\r\n const timeNow = new Date().getTime();\r\n const cacheTimeNow = moment(timeNow).format('YYYY-MM-DD hh:mm:ss');\r\n const patientsGroupsCache = filterCache.patientsGroups;\r\n const yearsCache = filterCache.years;\r\n let filterYearsOptions = [];\r\n\r\n const params = {\r\n patientGroupItemCode: filterPatientGroupSelected,\r\n };\r\n\r\n const yearsResponseJSON = await getYears(params);\r\n const yearsList = yearsResponseJSON ? yearsResponseJSON.data.response : null;\r\n\r\n // Transforma retorno para o padrão esperado pelo react-select\r\n if (yearsList) {\r\n filterYearsOptions = yearsList ? yearsList.map((option) => { // (option, index)\r\n const optionsList = {\r\n value: option, // index\r\n label: option,\r\n };\r\n\r\n return optionsList;\r\n }) : null;\r\n\r\n // Organiza em ordem decrescente os anos\r\n const filterYearsOptionsDescending = filterYearsOptions.sort(\r\n (a, b) => parseFloat(b.value) - parseFloat(a.value),\r\n );\r\n\r\n const newFilterCache = {\r\n ...filterCache,\r\n patientsGroups: {\r\n ...patientsGroupsCache,\r\n },\r\n years: {\r\n ...yearsCache,\r\n [culture || currentUserLanguage]: filterYearsOptionsDescending,\r\n },\r\n };\r\n\r\n // Atualiza objeto de filtro na store (cache)\r\n store.dispatch(storeFilterOptions(newFilterCache, cacheTimeNow));\r\n return newFilterCache.years[culture || currentUserLanguage];\r\n }\r\n\r\n return yearsCache;\r\n };\r\n\r\n const getInitialBenchmarkingFiltersData = async (culture, filterCache, lastCacheTime) => {\r\n const currentUserLanguage = localStorage.getItem('bi.userLanguage');\r\n const timeNow = new Date().getTime();\r\n const cacheTimeNow = moment(timeNow).format('YYYY-MM-DD hh:mm:ss');\r\n const lastCacheTimeSaved = lastCacheTime ? moment(lastCacheTime).format('YYYY-MM-DD hh:mm:ss') : null;\r\n const expiresCacheTime = lastCacheTime ? moment(lastCacheTime).add(1, 'hours').format('YYYY-MM-DD hh:mm:ss') : null;\r\n const patientsGroupsCache = filterCache.patientsGroups;\r\n const yearsCache = filterCache.years;\r\n\r\n let filterPatientsGroupsOptions = [];\r\n let filterYearsOptions = [];\r\n\r\n // Verifica os dados em cache para fazer ou não a requisição da tradução no idioma atual\r\n // Se já houver no cache traduções do idioma selecionado, não é feita nova requisição\r\n // Mas se feita após 1 hora desde o último cache salvo, é feita outra requisição\r\n if (\r\n filterCache === []\r\n || filterCache === null\r\n || !filterCache.patientsGroups\r\n || !filterCache.patientsGroups[culture]\r\n || !filterCache.years\r\n || !filterCache.years[culture]\r\n || lastCacheTimeSaved === null\r\n || expiresCacheTime <= cacheTimeNow\r\n ) {\r\n const patientsGroupsResponseJSON = await getPatientsGroups();\r\n const patientsGroupsList = patientsGroupsResponseJSON\r\n ? patientsGroupsResponseJSON.data.response : null;\r\n\r\n const params = {\r\n patientGroupItemCode: filterCache\r\n && filterCache.patientsGroups\r\n && filterCache.patientsGroups[culture]\r\n ? filterCache.patientsGroups[culture] : 0,\r\n };\r\n\r\n const yearsResponseJSON = await getYears(params);\r\n const yearsList = yearsResponseJSON ? yearsResponseJSON.data.response : null;\r\n\r\n // Transforma retorno para o padrão esperado pelo react-select\r\n if (patientsGroupsList || yearsList) {\r\n filterPatientsGroupsOptions = patientsGroupsList ? patientsGroupsList.map((option) => {\r\n const optionsList = {\r\n value: option.code,\r\n label: option.name,\r\n };\r\n\r\n return optionsList;\r\n }) : null;\r\n\r\n filterYearsOptions = yearsList ? yearsList.map((option) => { // (option, index)\r\n const optionsList = {\r\n value: option, // index\r\n label: option,\r\n };\r\n\r\n return optionsList;\r\n }) : null;\r\n\r\n // Organiza em ordem decrescente os anos\r\n const filterYearsOptionsDescending = filterYearsOptions.sort(\r\n (a, b) => parseFloat(b.value) - parseFloat(a.value),\r\n );\r\n\r\n const newFilterCache = {\r\n ...filterCache,\r\n patientsGroups: {\r\n ...patientsGroupsCache,\r\n [culture || currentUserLanguage]: filterPatientsGroupsOptions,\r\n },\r\n years: {\r\n ...yearsCache,\r\n [culture || currentUserLanguage]: filterYearsOptionsDescending,\r\n },\r\n };\r\n\r\n // Atualiza objeto de filtro na store (cache)\r\n store.dispatch(storeFilterOptions(newFilterCache, cacheTimeNow));\r\n\r\n return newFilterCache;\r\n }\r\n }\r\n\r\n return filterCache;\r\n };\r\n\r\n return {\r\n getYears,\r\n getPatientsGroups,\r\n getYearsByPatientGroup,\r\n getInitialBenchmarkingFiltersData,\r\n };\r\n};\r\n\r\nexport default filterService;\r\n","export default __webpack_public_path__ + \"static/media/logo_epimed.03022590.svg\";","export default __webpack_public_path__ + \"static/media/logo_logic.b2796caa.svg\";","import React, { forwardRef } from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport Select from 'react-select';\r\nimport './styles.scss';\r\n\r\nexport const changeSelectValue = (selectRef, value) => {\r\n if (selectRef.current) { selectRef.current.setValue(value || ''); }\r\n};\r\n\r\nexport const cancelSelectValue = (selectRef, value) => {\r\n if (selectRef.current) { selectRef.current.select.setValue(value || ''); }\r\n};\r\n\r\nexport const clearSelectValue = (selectRef) => {\r\n if (selectRef.current) { selectRef.current.select.setValue(''); }\r\n};\r\n\r\nconst EpFormSelect = forwardRef(({\r\n labelText, selectOptions, inputId, isSearchable,\r\n placeholderText, classError, inputName, selectDefaultValue,\r\n selectClassNamePrefix, onBlurFunc, onChangeFunc,\r\n customRef, minPortalWidth, customClass,\r\n}) => {\r\n const customStyles = {\r\n menuPortal: provided => ({\r\n ...provided, zIndex: 9999, minWidth: minPortalWidth,\r\n }),\r\n menu: provided => ({ ...provided, zIndex: 9999 }),\r\n };\r\n\r\n return (\r\n
\r\n {labelText && }\r\n \r\n
\r\n );\r\n});\r\n\r\nexport default EpFormSelect;\r\n\r\nEpFormSelect.defaultProps = {\r\n placeholderText: '',\r\n selectOptions: [],\r\n labelText: '',\r\n classError: '',\r\n isSearchable: true,\r\n selectDefaultValue: null,\r\n selectClassNamePrefix: 'select',\r\n customRef: null,\r\n onBlurFunc: null,\r\n minPortalWidth: null,\r\n customClass: '',\r\n};\r\n\r\nEpFormSelect.propTypes = {\r\n minPortalWidth: PropTypes.number,\r\n placeholderText: PropTypes.string,\r\n selectOptions: PropTypes.arrayOf(PropTypes.object),\r\n labelText: PropTypes.string,\r\n inputName: PropTypes.string.isRequired,\r\n inputId: PropTypes.string.isRequired,\r\n isSearchable: PropTypes.bool,\r\n classError: PropTypes.string,\r\n selectDefaultValue: PropTypes.objectOf(PropTypes.any),\r\n selectClassNamePrefix: PropTypes.string,\r\n onBlurFunc: PropTypes.func,\r\n onChangeFunc: PropTypes.func.isRequired,\r\n customRef: PropTypes.objectOf(PropTypes.any),\r\n customClass: PropTypes.string,\r\n};\r\n","import React, { useState, useEffect } from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport './styles.scss';\r\n\r\nimport EpimedLogoImage from '../../assets/images/sponsors/logo_epimed.svg';\r\nimport LogicLogoImage from '../../assets/images/sponsors/logo_logic.svg';\r\nimport useTranslation from '../../hooks/useTranslation';\r\nimport EpFormSelect from '../EpFormSelect';\r\n\r\nconst EpGlobalFooter = ({\r\n login, handleChangeLanguage, languageOptions, languageDefaultOption,\r\n}) => {\r\n const [mQuery, setMQuery] = useState({\r\n matches: window.innerWidth < 1045,\r\n });\r\n\r\n const EndorsedBy = useTranslation('Endorsed by');\r\n const PoweredBy = useTranslation('Powered by');\r\n const Select = useTranslation('Select');\r\n\r\n // Atuliza o estado MQuery quando ele chega no tamanho 1045px\r\n useEffect(() => {\r\n const mediaQuery = window.matchMedia('(max-width: 1045px)');\r\n\r\n mediaQuery.addListener(setMQuery);\r\n return () => mediaQuery.removeListener(setMQuery);\r\n }, []);\r\n\r\n const loginFooter = (\r\n
\r\n \r\n
\r\n );\r\n\r\n const mediaQueryFooter = () => (\r\n <>\r\n { (mQuery && mQuery.matches) && (\r\n
\r\n {loginFooter}\r\n
\r\n handleChangeLanguage(values)}\r\n />\r\n
\r\n
\r\n )}\r\n \r\n );\r\n return (\r\n
\r\n {login ? loginFooter\r\n : mediaQueryFooter()}\r\n
\r\n\r\n );\r\n};\r\n\r\nexport default EpGlobalFooter;\r\n\r\nEpGlobalFooter.defaultProps = {\r\n login: false,\r\n handleChangeLanguage: null,\r\n languageDefaultOption: null,\r\n languageOptions: null,\r\n\r\n};\r\n\r\nEpGlobalFooter.propTypes = {\r\n login: PropTypes.bool,\r\n handleChangeLanguage: PropTypes.func,\r\n languageOptions: PropTypes.arrayOf(PropTypes.object),\r\n languageDefaultOption: PropTypes.objectOf(PropTypes.string),\r\n\r\n};\r\n","import React, { useEffect, useState } from 'react';\r\nimport { useSelector } from 'react-redux';\r\nimport { useHistory } from 'react-router-dom';\r\nimport EpButton from '../../components/EpButton';\r\nimport EpHighlightIndicator from '../../components/EpHighlightIndicator';\r\nimport EpSponsorsSlider from '../../components/EpSponsorsSlider';\r\nimport EpAlert from '../../components/EpAlert';\r\nimport PadlockIcon from '../../assets/icons/padlock.svg';\r\nimport RegistersIndicatorImage from '../../assets/icons/indicators/indicator_registers.svg';\r\nimport ICUsIndicatorImage from '../../assets/icons/indicators/indicator_icus.svg';\r\nimport CountriesIndicatorImage from '../../assets/icons/indicators/indicator_countries.svg';\r\nimport indicatorsService from '../../services/indicatorsService';\r\n// eslint-disable-next-line max-len\r\n// import AdmissionsIndicatorImage from '../../assets/icons/indicators/indicator_admissions.svg';\r\nimport authService from '../../services/authService';\r\nimport EpLoadingPage from '../../components/EpLoadingPage';\r\nimport EpToaster from '../../components/EpToaster';\r\nimport filterService from '../../services/filterService';\r\nimport useTranslation from '../../hooks/useTranslation';\r\nimport EpGlobalFooter from '../../components/EpGlobalFooter';\r\nimport './styles.scss';\r\n\r\nconst Login = () => {\r\n const history = useHistory();\r\n const currentUserLanguage = localStorage.getItem('bi.userLanguage');\r\n const isLoadingAuthentication = useSelector(state => state.auth.isLoadingAuthentication);\r\n const isAuthorizedUser = useSelector(state => state.auth.isAuthorizedUser);\r\n const [isLoadingPage, setIsLoadingPage] = useState(true);\r\n // Tags do Globalization\r\n const InternationalBenchmarking = currentUserLanguage === 'pt-BR'\r\n ? 'Benchmarking Internacional'\r\n : 'International Benchmarking';\r\n const InternationalBenchmarkingDescription = useTranslation('An independent consortium of ICU registries to promote quality improvement, research and benchmaking in intensive care.');\r\n const Enter = useTranslation('enter');\r\n const Registry = useTranslation('Registry');\r\n const ICUs = useTranslation('ICUs');\r\n const Countries = useTranslation('Countries');\r\n // const Admissions = useTranslation('Admissions');\r\n const Participants = useTranslation('Participants');\r\n\r\n const AccessDenied = useTranslation('Access denied');\r\n const ThePageIsRestrictedAndItCannotBeShown = useTranslation('The page is restricted and it cannot be shown.');\r\n const [indicators, setIndicators] = useState([\r\n {\r\n id: 1,\r\n value: null,\r\n description: Registry,\r\n iconPath: RegistersIndicatorImage,\r\n iconAlt: 'Ícone de registros',\r\n },\r\n {\r\n id: 2,\r\n value: null,\r\n description: Countries,\r\n iconPath: CountriesIndicatorImage,\r\n iconAlt: 'Ícone de países',\r\n },\r\n {\r\n id: 3,\r\n value: null,\r\n description: ICUs,\r\n iconPath: ICUsIndicatorImage,\r\n iconAlt: 'Ícone de UTIs',\r\n },\r\n ]);\r\n\r\n useEffect(() => {\r\n authService().defineSigninMethod();\r\n }, []);\r\n\r\n const updateIndicators = (apiData) => {\r\n const updatedIndicators = indicators.map((indicator) => {\r\n const updatedIndicator = { ...indicator };\r\n\r\n if (indicator.id === 1) {\r\n updatedIndicator.value = apiData.registryCount;\r\n updatedIndicator.description = Registry;\r\n } else if (indicator.id === 2) {\r\n updatedIndicator.value = apiData.countryCount;\r\n updatedIndicator.description = Countries;\r\n } else if (indicator.id === 3) {\r\n updatedIndicator.value = apiData.icuCount;\r\n updatedIndicator.description = ICUs;\r\n }\r\n\r\n return updatedIndicator;\r\n });\r\n\r\n setIndicators([]);\r\n setIndicators(updatedIndicators);\r\n };\r\n\r\n useEffect(() => {\r\n const fetchAndUpdateIndicators = async () => {\r\n if (isAuthorizedUser && !isLoadingAuthentication) {\r\n try {\r\n const apiResponse = await indicatorsService().getLoginTotalizer();\r\n updateIndicators(apiResponse.data.response);\r\n } catch (error) {\r\n console.error('Failed to fetch indicator data:', error);\r\n }\r\n }\r\n };\r\n\r\n fetchAndUpdateIndicators();\r\n }, [isAuthorizedUser, isLoadingAuthentication]);\r\n\r\n useEffect(() => {\r\n setTimeout(() => {\r\n setIsLoadingPage(isLoadingAuthentication);\r\n }, 200);\r\n }, [isLoadingAuthentication]);\r\n\r\n // Insere traduções com html nos lugares corretos\r\n useEffect(() => {\r\n document.getElementById('login-page__title').innerHTML = InternationalBenchmarking;\r\n document.getElementById('login-page__description--bi').innerHTML = InternationalBenchmarkingDescription;\r\n }, [currentUserLanguage, InternationalBenchmarkingDescription]);\r\n\r\n const handleGoToDefaultIndicatorsPage = async (e) => {\r\n e.preventDefault();\r\n setIsLoadingPage(true);\r\n\r\n // Faz chamada dos dados inicias dos filtros para benchmarking\r\n const lastCacheTime = null;\r\n const filterCache = {\r\n years: null,\r\n patientsGroups: null,\r\n };\r\n\r\n await filterService().getInitialBenchmarkingFiltersData(\r\n currentUserLanguage, filterCache, lastCacheTime,\r\n );\r\n\r\n history.push({\r\n pathname: '/benchmarking',\r\n });\r\n\r\n setIsLoadingPage(false);\r\n };\r\n\r\n return (\r\n <>\r\n \r\n\r\n \r\n\r\n
\r\n
\r\n
\r\n {/* Bloco esquerdo */}\r\n
\r\n

\r\n
\r\n {isAuthorizedUser ? (\r\n handleGoToDefaultIndicatorsPage(e)}\r\n disabled={!isAuthorizedUser || isLoadingAuthentication}\r\n buttonType=\"primary\"\r\n buttonWidthType=\"fullsize\"\r\n buttonSize=\"lg\"\r\n customClass=\"\"\r\n />\r\n ) : (\r\n }\r\n title={AccessDenied}\r\n description={ThePageIsRestrictedAndItCannotBeShown}\r\n />\r\n )}\r\n
\r\n\r\n
\r\n\r\n {/* Bloco direito */}\r\n
\r\n

\r\n\r\n {/* Seção dos indicadores */}\r\n
\r\n {indicators.map(indicator => (\r\n \r\n ))}\r\n
\r\n
\r\n
\r\n\r\n {/* Bloco de Slider de Participantes */}\r\n
\r\n

{Participants}

\r\n
\r\n\r\n \r\n
\r\n
\r\n\r\n {/* Bloco de Patrocinadores */}\r\n \r\n
\r\n
\r\n \r\n );\r\n};\r\n\r\nexport default Login;\r\n","import React, { useEffect, useState } from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { useDispatch } from 'react-redux';\r\nimport { Form, Formik } from 'formik';\r\nimport EpButton from '../EpButton';\r\nimport EpFormSelect, { changeSelectValue } from '../EpFormSelect';\r\nimport { storeLastFiltersApplied } from '../../redux/actions/filterAction';\r\nimport indicatorsService from '../../services/indicatorsService';\r\nimport useTranslation from '../../hooks/useTranslation';\r\nimport './styles.scss';\r\n\r\nconst EpBrowsableFilter = ({\r\n labelText, selectOptions, inputId, selectIsSearchable,\r\n placeholderText, classError, onBlurFunc, inputName, horizontalAlign,\r\n selectDefaultValue, lastFiltersApplied,\r\n setConsolidatedTotalizerIndicatorsDataFunc, setConsolidatedIndicatorsDataFunc,\r\n setEvolutiveIndicatorsDataFunc, setIsLoadingPageFunc, browsableFilterSelectRef,\r\n}) => {\r\n // Tags do Globalization\r\n const Previous = useTranslation('Previous');\r\n const Next = useTranslation('Next');\r\n\r\n const dispatch = useDispatch();\r\n\r\n const totalOptions = selectOptions ? selectOptions.length : 0;\r\n const [hasPreviousControls, setHasPreviousControls] = useState(false);\r\n const [hasNextControls, setHasNextControls] = useState(false);\r\n const [selectValue, setSelectValue] = useState(selectDefaultValue);\r\n const [currentFilterIndex, setCurrentFilterIndex] = useState(\r\n selectOptions ? selectOptions.findIndex(option => option === selectDefaultValue) : null,\r\n );\r\n\r\n // Atualiza filtros aplicados na store\r\n const updateFiltersAppliedStorage = (selectedValue) => {\r\n const newFiltersAppliedObj = {\r\n ...lastFiltersApplied,\r\n [inputName]: selectedValue,\r\n };\r\n\r\n dispatch(storeLastFiltersApplied(newFiltersAppliedObj));\r\n return newFiltersAppliedObj;\r\n };\r\n\r\n // Valores iniciais dos campos do filtro\r\n const browsableFilterInitialValues = {\r\n [inputName]: selectDefaultValue,\r\n };\r\n\r\n // Método para tratar aplicação do filtro\r\n const handleBrowsableFilterSubmit = async (values, setValuesFunc) => {\r\n setIsLoadingPageFunc(true);\r\n setCurrentFilterIndex(selectOptions.findIndex(\r\n option => option.value === values[inputName].value,\r\n ));\r\n\r\n const newFiltersAppliedObj = updateFiltersAppliedStorage(values[inputName].value);\r\n\r\n let queryStrings = {\r\n selectedPatientGroup: newFiltersAppliedObj.patientGroupItemCode,\r\n selectedIndicator: newFiltersAppliedObj.indicator,\r\n };\r\n\r\n if (lastFiltersApplied.reportType === 0) {\r\n queryStrings = {\r\n selectedYear: newFiltersAppliedObj.year,\r\n selectedPatientGroup: newFiltersAppliedObj.patientGroupItemCode,\r\n };\r\n\r\n const consolidatedIndicatorsTotalizersResponseJSON = await indicatorsService()\r\n .getConsolidatedTotalizers(queryStrings);\r\n const consolidatedIndicatorsTotalizersList = consolidatedIndicatorsTotalizersResponseJSON\r\n && consolidatedIndicatorsTotalizersResponseJSON.data\r\n ? consolidatedIndicatorsTotalizersResponseJSON.data.response : null;\r\n\r\n const consolidatedIndicatorsResponseJSON = await indicatorsService()\r\n .getConsolidatedIndicators(queryStrings);\r\n const consolidatedIndicatorsList = consolidatedIndicatorsResponseJSON\r\n && consolidatedIndicatorsResponseJSON.data\r\n ? consolidatedIndicatorsResponseJSON.data.response : null;\r\n\r\n setConsolidatedTotalizerIndicatorsDataFunc(consolidatedIndicatorsTotalizersList || null);\r\n setConsolidatedIndicatorsDataFunc(consolidatedIndicatorsList || null);\r\n } else {\r\n const evolutiveIndicatorsResponseJSON = await indicatorsService()\r\n .getEvolutiveIndicators(queryStrings);\r\n\r\n const evolutiveIndicatorsList = evolutiveIndicatorsResponseJSON\r\n && evolutiveIndicatorsResponseJSON.data\r\n ? evolutiveIndicatorsResponseJSON.data.response : null;\r\n setEvolutiveIndicatorsDataFunc(evolutiveIndicatorsList || null);\r\n }\r\n\r\n setIsLoadingPageFunc(false);\r\n setValuesFunc(values[inputName]);\r\n };\r\n\r\n // Métodos para trocar a opção selecionada no filtro através dos controles de anterior e próximo\r\n const handleGoToFilterOption = (\r\n indicatorIndex, handleChangeFunc, setFieldValueFunc, // setValuesFunc,\r\n ) => {\r\n const newIndicatorIndex = Math.max(0, Math.min(indicatorIndex, totalOptions - 1));\r\n const indicatorOptionObj = {\r\n [inputName]: selectOptions[newIndicatorIndex],\r\n };\r\n\r\n handleChangeFunc(inputName);\r\n setFieldValueFunc(inputName, indicatorOptionObj[inputName]);\r\n setSelectValue(indicatorOptionObj[inputName]);\r\n setCurrentFilterIndex(newIndicatorIndex);\r\n changeSelectValue(browsableFilterSelectRef, selectOptions[newIndicatorIndex]);\r\n };\r\n\r\n const handleMoveToPreviousFilterOption = (handleChangeFunc, setFieldValueFunc, setValuesFunc) => {\r\n handleGoToFilterOption(\r\n inputName === 'year' ? currentFilterIndex + 1 : currentFilterIndex - 1, handleChangeFunc, setFieldValueFunc, setValuesFunc,\r\n );\r\n };\r\n\r\n const handleMoveToNextFilterOption = (handleChangeFunc, setFieldValueFunc, setValuesFunc) => {\r\n handleGoToFilterOption(\r\n inputName === 'year' ? currentFilterIndex - 1 : currentFilterIndex + 1, handleChangeFunc, setFieldValueFunc, setValuesFunc,\r\n );\r\n };\r\n\r\n // Método para habilitar ou não controles de anterior e próximo\r\n const handleControlsVisibility = () => {\r\n const lastOptionsElementIndex = selectOptions ? totalOptions - 1 : 0;\r\n\r\n setHasPreviousControls(true);\r\n setHasNextControls(true);\r\n\r\n if (selectOptions === undefined || selectOptions === null || totalOptions <= 0) {\r\n setHasPreviousControls(false);\r\n setHasNextControls(false);\r\n }\r\n\r\n if (selectOptions === null || selectOptions === undefined || currentFilterIndex === 0) {\r\n if (inputName === 'year') {\r\n setHasNextControls(false);\r\n } else {\r\n setHasPreviousControls(false);\r\n }\r\n }\r\n\r\n if (selectOptions === null || selectOptions === undefined\r\n || currentFilterIndex === lastOptionsElementIndex) {\r\n if (inputName === 'year') {\r\n setHasPreviousControls(false);\r\n } else {\r\n setHasNextControls(false);\r\n }\r\n }\r\n };\r\n\r\n useEffect(() => {\r\n handleControlsVisibility();\r\n }, [currentFilterIndex]);\r\n\r\n return (\r\n
\r\n handleBrowsableFilterSubmit(values, actions.setValues)}\r\n >\r\n {({\r\n handleSubmit, handleChange, setFieldValue, setValues,\r\n }) => (\r\n
\r\n {\r\n handleMoveToPreviousFilterOption(\r\n handleChange, setFieldValue, setValues,\r\n );\r\n }}\r\n disabled={!hasPreviousControls}\r\n buttonSize=\"sm\"\r\n />\r\n\r\n {\r\n setSelectValue(option);\r\n handleChange(inputName);\r\n setFieldValue(inputName, option);\r\n handleSubmit();\r\n }}\r\n selectOptions={selectOptions}\r\n />\r\n\r\n
\r\n {\r\n handleMoveToPreviousFilterOption(\r\n handleChange, setFieldValue, setValues,\r\n );\r\n }}\r\n disabled={!hasPreviousControls}\r\n buttonSize=\"sm\"\r\n />\r\n\r\n handleMoveToNextFilterOption(\r\n handleChange, setFieldValue, setValues,\r\n )}\r\n disabled={!hasNextControls}\r\n buttonSize=\"sm\"\r\n />\r\n
\r\n \r\n )}\r\n \r\n
\r\n );\r\n};\r\n\r\nexport default EpBrowsableFilter;\r\n\r\nEpBrowsableFilter.defaultProps = {\r\n placeholderText: '',\r\n selectOptions: null,\r\n selectDefaultValue: null,\r\n selectIsSearchable: true,\r\n classError: '',\r\n horizontalAlign: 'space-between',\r\n browsableFilterSelectRef: null,\r\n onBlurFunc: null,\r\n};\r\n\r\nEpBrowsableFilter.propTypes = {\r\n placeholderText: PropTypes.string,\r\n selectOptions: PropTypes.arrayOf(PropTypes.object),\r\n labelText: PropTypes.string.isRequired,\r\n inputName: PropTypes.string.isRequired,\r\n selectDefaultValue: PropTypes.objectOf(PropTypes.any),\r\n inputId: PropTypes.string.isRequired,\r\n selectIsSearchable: PropTypes.bool,\r\n classError: PropTypes.string,\r\n onBlurFunc: PropTypes.func,\r\n horizontalAlign: PropTypes.oneOf(['space-between', 'center']),\r\n lastFiltersApplied: PropTypes.objectOf(PropTypes.any).isRequired,\r\n setConsolidatedTotalizerIndicatorsDataFunc: PropTypes.func.isRequired,\r\n setConsolidatedIndicatorsDataFunc: PropTypes.func.isRequired,\r\n setEvolutiveIndicatorsDataFunc: PropTypes.func.isRequired,\r\n setIsLoadingPageFunc: PropTypes.func.isRequired,\r\n browsableFilterSelectRef: PropTypes.objectOf(PropTypes.any),\r\n};\r\n","import React, { useState } from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { useDispatch, useSelector } from 'react-redux';\r\nimport { Field, Form, Formik } from 'formik';\r\nimport { BsFunnelFill } from 'react-icons/bs';\r\nimport EpFormSelect, { changeSelectValue } from '../EpFormSelect';\r\nimport EpButton from '../EpButton';\r\nimport indicatorsService from '../../services/indicatorsService';\r\nimport { storeLastFiltersApplied } from '../../redux/actions/filterAction';\r\nimport useTranslation from '../../hooks/useTranslation';\r\nimport filterService from '../../services/filterService';\r\nimport './styles.scss';\r\n\r\nconst EpFilter = ({\r\n selectPatientsGroupsOptions, selectPatientsGroupsDefaultValue, lastFiltersApplied,\r\n setConsolidatedTotalizerIndicatorsDataFunc, setConsolidatedIndicatorsDataFunc,\r\n setEvolutiveIndicatorsDataFunc, setIsLoadingPageFunc,\r\n browsableFilterSelectRef, patientsGroupsSelectRef,\r\n filterIndicatorsDefaultOptionObj, filterYearsDefaultOptionObj, setFilterYearsDefaultOptionObjFunc,\r\n}) => {\r\n // Tags do Globalization\r\n const Report = useTranslation('Report');\r\n const Consolidated = useTranslation('Consolidated');\r\n const Evolutive = useTranslation('Evolutive');\r\n const PatientGroups = useTranslation('Patient Groups');\r\n const Select = useTranslation('Select');\r\n const Apply = useTranslation('Apply');\r\n\r\n const dispatch = useDispatch();\r\n const currentUserLanguage = localStorage.getItem('bi.userLanguage');\r\n const filterCache = useSelector(state => state.filter.filterCache);\r\n\r\n const [filterReportTypeSelected, setFilterReportTypeSelected] = useState(\r\n lastFiltersApplied ? lastFiltersApplied.reportType : 0,\r\n );\r\n const [filterPatientGroupSelected, setFilterPatientGroupSelected] = useState(\r\n lastFiltersApplied ? lastFiltersApplied.patientGroupItemCode : 0,\r\n );\r\n\r\n // Valores iniciais dos campos do filtro\r\n const filterInitialValues = {\r\n reportType: '0',\r\n patientsGroups: selectPatientsGroupsDefaultValue,\r\n };\r\n\r\n const updateFiltersAppliedStorage = (inputName, selectedValue) => {\r\n const newFiltersAppliedObj = {\r\n ...lastFiltersApplied,\r\n [inputName]: selectedValue,\r\n };\r\n\r\n dispatch(storeLastFiltersApplied(newFiltersAppliedObj));\r\n };\r\n\r\n // Método para tratar aplicação do filtro\r\n const handleFilterSubmit = async (values, actions) => {\r\n setIsLoadingPageFunc(true);\r\n\r\n // Busca novas opções do filtro local de anos\r\n const newFilterYearsOptions = await filterService().getYearsByPatientGroup(\r\n currentUserLanguage, filterCache,\r\n lastFiltersApplied.patientGroupItemCode,\r\n );\r\n\r\n // Define o novo valor padrão conforme opções do filtro local de anos\r\n const newFilterYearsDefaultOptionObj = newFilterYearsOptions\r\n ? newFilterYearsOptions[0] : null;\r\n\r\n setFilterYearsDefaultOptionObjFunc(newFilterYearsDefaultOptionObj);\r\n\r\n let queryStrings = {\r\n selectedPatientGroup: lastFiltersApplied.patientGroupItemCode,\r\n selectedIndicator: lastFiltersApplied.indicator,\r\n };\r\n\r\n if (filterReportTypeSelected === 0) {\r\n updateFiltersAppliedStorage('reportType', 0);\r\n\r\n queryStrings = {\r\n selectedYear: lastFiltersApplied.year,\r\n selectedPatientGroup: lastFiltersApplied.patientGroupItemCode,\r\n };\r\n\r\n // Reseta filtro local para o valor padrão\r\n if (filterReportTypeSelected !== lastFiltersApplied.reportType\r\n || filterPatientGroupSelected !== lastFiltersApplied.patientGroupItemCode) {\r\n queryStrings.selectedYear = newFilterYearsDefaultOptionObj\r\n ? newFilterYearsDefaultOptionObj.value : filterYearsDefaultOptionObj.value;\r\n\r\n changeSelectValue(\r\n browsableFilterSelectRef,\r\n newFilterYearsDefaultOptionObj || filterYearsDefaultOptionObj,\r\n );\r\n }\r\n\r\n const consolidatedIndicatorsTotalizersResponseJSON = await indicatorsService()\r\n .getConsolidatedTotalizers(queryStrings);\r\n const consolidatedIndicatorsTotalizersList = consolidatedIndicatorsTotalizersResponseJSON\r\n && consolidatedIndicatorsTotalizersResponseJSON.data\r\n ? consolidatedIndicatorsTotalizersResponseJSON.data.response : null;\r\n\r\n const consolidatedIndicatorsResponseJSON = await indicatorsService()\r\n .getConsolidatedIndicators(queryStrings);\r\n const consolidatedIndicatorsList = consolidatedIndicatorsResponseJSON\r\n && consolidatedIndicatorsResponseJSON.data\r\n ? consolidatedIndicatorsResponseJSON.data.response : null;\r\n\r\n setConsolidatedTotalizerIndicatorsDataFunc(consolidatedIndicatorsTotalizersList || null);\r\n setConsolidatedIndicatorsDataFunc(consolidatedIndicatorsList || null);\r\n setFilterPatientGroupSelected(lastFiltersApplied.patientGroupItemCode);\r\n } else {\r\n updateFiltersAppliedStorage('reportType', 1);\r\n\r\n // Reseta filtro local para o valor padrão\r\n if (filterReportTypeSelected !== lastFiltersApplied.reportType\r\n || filterPatientGroupSelected !== lastFiltersApplied.patientGroupItemCode) {\r\n queryStrings.selectedIndicator = filterIndicatorsDefaultOptionObj.value;\r\n changeSelectValue(browsableFilterSelectRef, filterIndicatorsDefaultOptionObj);\r\n }\r\n\r\n const evolutiveIndicatorsResponseJSON = await indicatorsService()\r\n .getEvolutiveIndicators(queryStrings);\r\n const evolutiveIndicatorsList = evolutiveIndicatorsResponseJSON\r\n && evolutiveIndicatorsResponseJSON.data\r\n ? evolutiveIndicatorsResponseJSON.data.response : null;\r\n\r\n setEvolutiveIndicatorsDataFunc(evolutiveIndicatorsList || null);\r\n setFilterPatientGroupSelected(lastFiltersApplied.patientGroupItemCode);\r\n }\r\n\r\n setIsLoadingPageFunc(false);\r\n actions.setSubmitting(false);\r\n };\r\n\r\n return (\r\n
\r\n
\r\n\r\n handleFilterSubmit(values, actions)}\r\n >\r\n {({\r\n handleSubmit, handleChange, setFieldValue, values,\r\n }) => (\r\n
\r\n
\r\n \r\n
    \r\n\r\n {/* Relatório - Radio - Opção 1 */}\r\n
  • \r\n \r\n setFilterReportTypeSelected(0)}\r\n />\r\n {Consolidated}\r\n \r\n
  • \r\n\r\n {/* Relatório - Radio - Opção 2 */}\r\n
  • \r\n \r\n setFilterReportTypeSelected(1)}\r\n />\r\n {Evolutive}\r\n \r\n
  • \r\n
\r\n
\r\n\r\n
\r\n \r\n\r\n {\r\n handleChange('patientsGroups');\r\n setFieldValue('patientsGroups', option);\r\n updateFiltersAppliedStorage('patientGroupItemCode', option.value);\r\n }}\r\n selectOptions={selectPatientsGroupsOptions}\r\n />\r\n
\r\n\r\n \r\n \r\n )}\r\n \r\n
\r\n );\r\n};\r\n\r\nexport default EpFilter;\r\n\r\nEpFilter.defaultProps = {\r\n selectPatientsGroupsOptions: null,\r\n selectPatientsGroupsDefaultValue: null,\r\n patientsGroupsSelectRef: null,\r\n browsableFilterSelectRef: null,\r\n filterIndicatorsDefaultOptionObj: null,\r\n filterYearsDefaultOptionObj: null,\r\n};\r\n\r\nEpFilter.propTypes = {\r\n selectPatientsGroupsOptions: PropTypes.arrayOf(PropTypes.any),\r\n selectPatientsGroupsDefaultValue: PropTypes.objectOf(PropTypes.any),\r\n lastFiltersApplied: PropTypes.objectOf(PropTypes.any).isRequired,\r\n setConsolidatedTotalizerIndicatorsDataFunc: PropTypes.func.isRequired,\r\n setConsolidatedIndicatorsDataFunc: PropTypes.func.isRequired,\r\n setEvolutiveIndicatorsDataFunc: PropTypes.func.isRequired,\r\n setIsLoadingPageFunc: PropTypes.func.isRequired,\r\n patientsGroupsSelectRef: PropTypes.objectOf(PropTypes.any),\r\n browsableFilterSelectRef: PropTypes.objectOf(PropTypes.any),\r\n filterIndicatorsDefaultOptionObj: PropTypes.objectOf(PropTypes.any),\r\n filterYearsDefaultOptionObj: PropTypes.objectOf(PropTypes.any),\r\n setFilterYearsDefaultOptionObjFunc: PropTypes.func.isRequired,\r\n};\r\n","export const toggleFullscreen = () => {\r\n // const elem = document.getElementById('app__body');\r\n const elem = document.documentElement;\r\n\r\n if (\r\n (document.fullScreenElement !== undefined && document.fullScreenElement === null)\r\n || (document.msFullscreenElement !== undefined && document.msFullscreenElement === null)\r\n || (document.mozFullScreen !== undefined && !document.mozFullScreen)\r\n || (document.webkitIsFullScreen !== undefined && !document.webkitIsFullScreen)\r\n ) {\r\n if (elem.requestFullScreen) {\r\n elem.requestFullScreen();\r\n } else if (elem.mozRequestFullScreen) {\r\n elem.mozRequestFullScreen();\r\n } else if (elem.webkitRequestFullScreen) {\r\n elem.webkitRequestFullScreen(Element.ALLOW_KEYBOARD_INPUT);\r\n } else if (elem.msRequestFullscreen) {\r\n elem.msRequestFullscreen();\r\n }\r\n } else if (document.cancelFullScreen) {\r\n document.cancelFullScreen();\r\n } else if (document.mozCancelFullScreen) {\r\n document.mozCancelFullScreen();\r\n } else if (document.webkitCancelFullScreen) {\r\n document.webkitCancelFullScreen();\r\n } else if (document.msExitFullscreen) {\r\n document.msExitFullscreen();\r\n }\r\n};\r\n\r\nexport const printScreen = () => {\r\n window.print();\r\n};\r\n","import React, { useEffect, useState } from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { BsFillPrinterFill, BsFullscreen, BsFullscreenExit } from 'react-icons/bs';\r\nimport EpimedLogoImage from '../../assets/images/sponsors/logo_epimed.svg';\r\nimport LogicLogoImage from '../../assets/images/sponsors/logo_logic.svg';\r\nimport EpButton from '../EpButton';\r\nimport EpFormSelect from '../EpFormSelect';\r\nimport { printScreen, toggleFullscreen } from '../../utils/interactions';\r\nimport useTranslation from '../../hooks/useTranslation';\r\n\r\nimport './styles.scss';\r\n\r\nconst EpGlobalNavigation = ({\r\n handleChangeLanguage, languageOptions, languageDefaultOption, languageSelectRef,\r\n}) => {\r\n const currentUserLanguage = localStorage.getItem('bi.userLanguage');\r\n\r\n // Tags do Globalization\r\n const InternationalBenchmarking = currentUserLanguage === 'pt-BR'\r\n ? 'Benchmarking Internacional'\r\n : 'International Benchmarking';\r\n const EndorsedBy = useTranslation('Endorsed by');\r\n const PoweredBy = useTranslation('Powered by');\r\n const Select = useTranslation('Select');\r\n\r\n const [fullscreenStatus, setFullscreenStatus] = useState(false);\r\n const [mQuery, setMQuery] = useState({\r\n matches: window.innerWidth > 1045,\r\n });\r\n\r\n // Atuliza o estado MQuery quando ele chega no tamanho 1045px\r\n useEffect(() => {\r\n const mediaQuery = window.matchMedia('(min-width: 1045px)');\r\n\r\n mediaQuery.addListener(setMQuery);\r\n return () => mediaQuery.removeListener(setMQuery);\r\n }, []);\r\n\r\n // Insere traduções com html nos lugares corretos\r\n useEffect(() => {\r\n document.getElementById('global-navigation__title').innerHTML = InternationalBenchmarking;\r\n }, [currentUserLanguage]);\r\n\r\n return (\r\n <>\r\n \r\n\r\n \r\n );\r\n};\r\n\r\nexport default EpGlobalNavigation;\r\n\r\nEpGlobalNavigation.defaultProps = {\r\n languageDefaultOption: null,\r\n languageOptions: null,\r\n languageSelectRef: null,\r\n};\r\n\r\nEpGlobalNavigation.propTypes = {\r\n handleChangeLanguage: PropTypes.func.isRequired,\r\n languageOptions: PropTypes.arrayOf(PropTypes.object),\r\n languageDefaultOption: PropTypes.objectOf(PropTypes.string),\r\n languageSelectRef: PropTypes.objectOf(PropTypes.any),\r\n};\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport './styles.scss';\r\nimport formatNumberWithAbbreviation from '../../utils/numberMeasurementFormat';\r\n\r\nconst IndicatorValue = ({\r\n indicatorSubtitle, indicatorValuePrimary, indicatorPercentage, indicatorValueSecondary,\r\n indicatorMeasureUnitPrimary, indicatorMeasureUnitSecondary, indicatorCustomClass, indicatorId,\r\n indicatorValuePrimaryDigits, indicatorValueSecondaryDigits, indicatorPercentageDigits,\r\n}) => {\r\n const currentUserLanguage = localStorage.getItem('bi.userLanguage');\r\n\r\n const formattedIndicatorValuePrimary = indicatorValuePrimary\r\n || indicatorValuePrimary === 0\r\n ? formatNumberWithAbbreviation(\r\n indicatorValuePrimary, indicatorValuePrimaryDigits, currentUserLanguage,\r\n ) : null;\r\n const formattedIndicatorValueSecondary = indicatorValueSecondary\r\n || indicatorValueSecondary === 0\r\n ? formatNumberWithAbbreviation(\r\n indicatorValueSecondary, indicatorValueSecondaryDigits, currentUserLanguage,\r\n ) : null;\r\n const formattedIndicatorPercentage = indicatorPercentage\r\n || indicatorPercentage === 0 ? formatNumberWithAbbreviation(\r\n indicatorPercentage, indicatorPercentageDigits, currentUserLanguage,\r\n ) : null;\r\n\r\n return (\r\n
\r\n {indicatorSubtitle && (\r\n \r\n {indicatorSubtitle}\r\n \r\n )}\r\n\r\n
\r\n {(formattedIndicatorValuePrimary || formattedIndicatorValuePrimary === 0) && (\r\n \r\n {formattedIndicatorValuePrimary}\r\n \r\n )}\r\n\r\n {(formattedIndicatorPercentage || formattedIndicatorPercentage === 0) && (\r\n \r\n {formattedIndicatorPercentage}%\r\n \r\n )}\r\n\r\n {indicatorMeasureUnitPrimary && (\r\n \r\n {indicatorMeasureUnitPrimary}\r\n \r\n )}\r\n\r\n {(formattedIndicatorValueSecondary || formattedIndicatorValueSecondary === 0) && (\r\n \r\n / {formattedIndicatorValueSecondary}\r\n \r\n )}\r\n\r\n {indicatorMeasureUnitSecondary && (\r\n \r\n {indicatorMeasureUnitSecondary}\r\n \r\n )}\r\n
\r\n
\r\n\r\n );\r\n};\r\n\r\nconst EpCardIndicator = ({\r\n indicatorType, indicatorTitle, indicatorSubtitle, indicatorValuePrimary, indicatorPercentage,\r\n indicatorValueSecondary, indicatorMeasureUnitPrimary, indicatorMeasureUnitSecondary,\r\n indicatorCustomClass, indicatorName, indicatorValuePrimaryDigits, indicatorValueSecondaryDigits,\r\n indicatorPercentageDigits,\r\n}) => {\r\n let indicator = (\r\n <>\r\n \r\n \r\n );\r\n\r\n if (indicatorType === 'double-indicators') {\r\n indicator = (\r\n <>\r\n \r\n \r\n \r\n );\r\n }\r\n\r\n return (\r\n
\r\n {indicatorTitle}\r\n\r\n
\r\n {indicator}\r\n
\r\n
\r\n );\r\n};\r\n\r\nexport default EpCardIndicator;\r\n\r\nIndicatorValue.defaultProps = {\r\n indicatorSubtitle: null,\r\n indicatorValuePrimary: null,\r\n indicatorPercentage: null,\r\n indicatorValueSecondary: null,\r\n indicatorMeasureUnitPrimary: null,\r\n indicatorMeasureUnitSecondary: null,\r\n indicatorCustomClass: null,\r\n indicatorValuePrimaryDigits: [1, 1],\r\n indicatorValueSecondaryDigits: [1, 1],\r\n indicatorPercentageDigits: [2, 2],\r\n};\r\n\r\nIndicatorValue.propTypes = {\r\n indicatorSubtitle: PropTypes.string,\r\n indicatorValuePrimary: PropTypes.oneOfType([PropTypes.number,\r\n PropTypes.arrayOf(PropTypes.number)]),\r\n indicatorPercentage: PropTypes.oneOfType([PropTypes.number,\r\n PropTypes.arrayOf(PropTypes.number)]),\r\n indicatorValueSecondary: PropTypes.oneOfType([PropTypes.number,\r\n PropTypes.arrayOf(PropTypes.number)]),\r\n indicatorMeasureUnitPrimary: PropTypes.oneOfType([PropTypes.string,\r\n PropTypes.arrayOf(PropTypes.string)]),\r\n indicatorMeasureUnitSecondary: PropTypes.oneOfType([PropTypes.string,\r\n PropTypes.arrayOf(PropTypes.string)]),\r\n indicatorCustomClass: PropTypes.string,\r\n indicatorId: PropTypes.string.isRequired,\r\n indicatorValuePrimaryDigits: PropTypes.oneOfType([PropTypes.number,\r\n PropTypes.arrayOf(PropTypes.number)]),\r\n indicatorValueSecondaryDigits: PropTypes.oneOfType([PropTypes.number,\r\n PropTypes.arrayOf(PropTypes.number)]),\r\n indicatorPercentageDigits: PropTypes.oneOfType([PropTypes.number,\r\n PropTypes.arrayOf(PropTypes.number)]),\r\n};\r\n\r\nEpCardIndicator.defaultProps = {\r\n indicatorTitle: null,\r\n indicatorSubtitle: null,\r\n indicatorValuePrimary: null,\r\n indicatorPercentage: null,\r\n indicatorValueSecondary: null,\r\n indicatorMeasureUnitPrimary: null,\r\n indicatorMeasureUnitSecondary: null,\r\n indicatorCustomClass: null,\r\n indicatorValuePrimaryDigits: 0,\r\n indicatorValueSecondaryDigits: 0,\r\n indicatorPercentageDigits: 1,\r\n};\r\n\r\nEpCardIndicator.propTypes = {\r\n indicatorType: PropTypes.oneOf(['single-value', 'double-values', 'double-indicators']).isRequired,\r\n indicatorTitle: PropTypes.string,\r\n indicatorSubtitle: PropTypes.arrayOf(PropTypes.string),\r\n indicatorValuePrimary: PropTypes.oneOfType([PropTypes.number,\r\n PropTypes.arrayOf(PropTypes.number)]),\r\n indicatorPercentage: PropTypes.oneOfType([PropTypes.number, PropTypes.arrayOf(PropTypes.number)]),\r\n indicatorValueSecondary: PropTypes.oneOfType([PropTypes.number,\r\n PropTypes.arrayOf(PropTypes.number)]),\r\n indicatorMeasureUnitPrimary: PropTypes.oneOfType([PropTypes.string,\r\n PropTypes.arrayOf(PropTypes.string)]),\r\n indicatorMeasureUnitSecondary: PropTypes.oneOfType([PropTypes.string,\r\n PropTypes.arrayOf(PropTypes.string)]),\r\n indicatorCustomClass: PropTypes.string,\r\n indicatorName: PropTypes.string.isRequired,\r\n indicatorValuePrimaryDigits: PropTypes.oneOfType([PropTypes.number,\r\n PropTypes.arrayOf(PropTypes.number)]),\r\n indicatorValueSecondaryDigits: PropTypes.oneOfType([PropTypes.number,\r\n PropTypes.arrayOf(PropTypes.number)]),\r\n indicatorPercentageDigits: PropTypes.oneOfType([PropTypes.number,\r\n PropTypes.arrayOf(PropTypes.number)]),\r\n};\r\n","import React, { useMemo, useEffect } from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { useTable, useSortBy, useFlexLayout } from 'react-table';\r\nimport { useSticky } from 'react-table-sticky';\r\n// import ScrollContainer from 'react-indiana-drag-scroll';\r\nimport DoubleScrollbar from 'react-double-scrollbar';\r\nimport { BsFillCaretUpFill, BsFillCaretDownFill } from 'react-icons/bs';\r\nimport './styles.scss';\r\n\r\nimport bootstrap from 'bootstrap/dist/js/bootstrap.bundle.min';\r\nimport { FaInfo } from 'react-icons/fa';\r\n// Cria um getter de propriedade padrão\r\nconst defaultPropGetter = () => ({});\r\n\r\nconst EpTable = ({ tableData, columns, getCellProps = defaultPropGetter }) => {\r\n const defaultColumnsSize = useMemo(\r\n () => ({\r\n minWidth: 50,\r\n width: 160,\r\n }),\r\n [],\r\n );\r\n\r\n const tableContainer = document.querySelector('.table');\r\n\r\n if (tableContainer) {\r\n const tableParent = tableContainer.parentNode;\r\n tableParent.style.height = '540px';\r\n tableParent.style.overflow = 'auto';\r\n }\r\n\r\n const {\r\n getTableProps,\r\n getTableBodyProps,\r\n headerGroups,\r\n rows,\r\n prepareRow,\r\n } = useTable({\r\n columns,\r\n data: tableData,\r\n defaultColumnsSize,\r\n initialState: {\r\n sortBy: [\r\n {\r\n id: 'regionName',\r\n desc: false,\r\n },\r\n ],\r\n },\r\n\r\n },\r\n useFlexLayout,\r\n useSticky,\r\n useSortBy);\r\n\r\n function resizeBrowser() {\r\n if (navigator.userAgent.indexOf('MSIE') !== -1 || navigator.appVersion.indexOf('Trident/') > 0) {\r\n const evt = document.createEvent('UIEvents');\r\n evt.initUIEvent('resize', true, false, window, 0);\r\n window.dispatchEvent(evt);\r\n } else {\r\n window.dispatchEvent(new Event('resize'));\r\n }\r\n }\r\n\r\n const handleHighlightRowOnClick = (row) => {\r\n const trElement = document.getElementById(`table__body-row--${row.id}`);\r\n const highlightElems = document.querySelectorAll('.table__body-row--clicked');\r\n\r\n highlightElems.forEach((el) => {\r\n el.classList.remove('table__body-row--clicked');\r\n });\r\n\r\n trElement.classList.add('table__body-row--clicked');\r\n setTimeout(() => {\r\n resizeBrowser();\r\n }, 1000);\r\n };\r\n\r\n useEffect(() => {\r\n const initializeOrUpdatePopovers = () => {\r\n const instances = [];\r\n document.querySelectorAll('[data-bs-toggle=\"popover\"]').forEach((triggerEl) => {\r\n const existingPopover = bootstrap.Popover.getInstance(triggerEl);\r\n\r\n if (existingPopover) {\r\n existingPopover.setContent({\r\n '.popover-body': triggerEl.getAttribute('data-bs-content'),\r\n });\r\n instances.push(existingPopover);\r\n } else {\r\n const newPopover = new bootstrap.Popover(triggerEl, {\r\n trigger: 'hover',\r\n placement: 'top',\r\n });\r\n instances.push(newPopover);\r\n }\r\n });\r\n\r\n return instances;\r\n };\r\n\r\n const updatePopoverContent = () => {\r\n headerGroups.forEach((headerGroup) => {\r\n headerGroup.headers.forEach((column) => {\r\n if (column.helpText) {\r\n const triggerEl = document.querySelector(`[data-bs-toggle=\"popover\"][data-bs-content=\"${column.helpText}\"]`);\r\n if (triggerEl) {\r\n triggerEl.setAttribute('data-bs-content', column.helpText);\r\n }\r\n }\r\n });\r\n });\r\n };\r\n\r\n const popoverInstances = initializeOrUpdatePopovers();\r\n\r\n updatePopoverContent();\r\n\r\n return () => {\r\n popoverInstances.forEach(popover => popover.dispose());\r\n };\r\n }, [headerGroups]);\r\n\r\n return (\r\n // \r\n \r\n \r\n \r\n {headerGroups.map(headerGroup => (\r\n \r\n {headerGroup.headers.map(column => (\r\n \r\n {column.render('Header')}\r\n\r\n {/* Símbolo da ordenação de cada coluna */}\r\n \r\n {/* eslint-disable-next-line no-nested-ternary */}\r\n {column.isSorted\r\n ? column.isSortedDesc\r\n ? \r\n : \r\n : ''}\r\n \r\n
\r\n {column.helpText\r\n ? (\r\n \r\n \r\n \r\n )\r\n : ''}\r\n \r\n ))}\r\n \r\n ))}\r\n \r\n \r\n {rows.map((row) => {\r\n prepareRow(row);\r\n return (\r\n\r\n handleHighlightRowOnClick(row)} {...row.getRowProps()}>\r\n {row.cells.map(cell => (\r\n \r\n
\r\n {cell.render('Cell')}\r\n
\r\n \r\n ))}\r\n \r\n );\r\n })}\r\n \r\n \r\n
\r\n //
\r\n );\r\n};\r\n\r\nexport default EpTable;\r\n\r\nEpTable.defaultProps = {\r\n tableData: [],\r\n hiddenColumns: [],\r\n getCellProps: cellInfo => cellInfo,\r\n};\r\n\r\nEpTable.propTypes = {\r\n tableData: PropTypes.arrayOf(PropTypes.object),\r\n columns: PropTypes.arrayOf(PropTypes.object).isRequired,\r\n hiddenColumns: PropTypes.arrayOf(PropTypes.string),\r\n getCellProps: PropTypes.func,\r\n};\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { BsXLg } from 'react-icons/bs';\r\nimport { Modal } from 'bootstrap';\r\nimport EpButton from '../EpButton';\r\nimport './styles.scss';\r\n\r\nlet lastAction = 'close';\r\nlet modalInstance = null;\r\n\r\nexport const handleToggleModal = (modalId, modalOptions) => {\r\n const modalEl = document.getElementById(modalId);\r\n modalInstance = Modal.getOrCreateInstance(modalEl, modalOptions);\r\n\r\n if (lastAction === 'close') {\r\n lastAction = 'open';\r\n modalInstance.show();\r\n } else if (lastAction === 'open') {\r\n lastAction = 'close';\r\n modalInstance.hide();\r\n }\r\n};\r\n\r\nconst EpModal = ({\r\n noHeader, headerTitle, headerContent, bodyContent, footerContent, alignFooter, size,\r\n modalId,\r\n}) => (\r\n
\r\n
\r\n
\r\n {!noHeader\r\n && (\r\n
\r\n

{headerTitle}

\r\n {headerContent || ''}\r\n\r\n }\r\n buttonType=\"link-secondary\"\r\n customClass=\"modal__header-button--close\"\r\n onClickFunc={() => handleToggleModal(modalId)}\r\n actionType=\"button\"\r\n buttonSize=\"sm\"\r\n />\r\n
\r\n )}\r\n\r\n
\r\n {bodyContent}\r\n
\r\n\r\n {footerContent\r\n && (\r\n
\r\n {footerContent}\r\n
\r\n )}\r\n
\r\n
\r\n
\r\n);\r\nexport default EpModal;\r\n\r\nEpModal.defaultProps = {\r\n headerTitle: '',\r\n headerContent: null,\r\n noHeader: null,\r\n alignFooter: 'justify-content-between',\r\n size: 'md',\r\n};\r\n\r\nEpModal.propTypes = {\r\n noHeader: PropTypes.bool,\r\n headerTitle: PropTypes.oneOfType([PropTypes.string, PropTypes.object]),\r\n headerContent: PropTypes.element,\r\n bodyContent: PropTypes.element.isRequired,\r\n footerContent: PropTypes.element.isRequired,\r\n alignFooter: PropTypes.oneOf(['justify-content-start', 'justify-content-center', 'justify-content-between', 'justify-content-end', 'justify-content-around']),\r\n size: PropTypes.oneOf(['sm', 'md', 'lg']),\r\n modalId: PropTypes.string.isRequired,\r\n};\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { BsXLg } from 'react-icons/bs';\r\nimport EpModal, { handleToggleModal } from '../EpModal';\r\nimport EpButton from '../EpButton';\r\nimport useTranslation from '../../hooks/useTranslation';\r\nimport './styles.scss';\r\n\r\nconst EpRecordInformationsModal = ({\r\n modalTitle, modalRecordLogo, modalRecordCountryName, modalRecordHospitalsCount,\r\n modalRecordUnitsCount, modalRecordSourceSite, modalRecordDescription,\r\n}) => {\r\n // Tags do Globalization\r\n const NumberOfHospitals = useTranslation('Nº of hospitals');\r\n const NumberOfICUs = useTranslation('Nº of ICUs');\r\n const RegistrySite = useTranslation('Registry Site');\r\n const Close = useTranslation('Close');\r\n\r\n const bodyContent = (\r\n <>\r\n
\r\n \r\n

{modalRecordCountryName}

\r\n {modalRecordDescription &&

{modalRecordDescription}

}\r\n
\r\n\r\n
\r\n
\r\n
{/* col-6 */}\r\n

{NumberOfHospitals}

\r\n {modalRecordHospitalsCount || '-'}\r\n\r\n
\r\n\r\n
{/* col-6 */}\r\n

{NumberOfICUs}

\r\n {modalRecordUnitsCount || '-'}\r\n
\r\n
\r\n\r\n
\r\n
{/* col-12 */}\r\n

{RegistrySite}

\r\n {modalRecordSourceSite ? (\r\n \r\n {modalRecordSourceSite}\r\n \r\n ) : (\r\n -\r\n )}\r\n
\r\n
\r\n
\r\n \r\n );\r\n\r\n const footerContent = (\r\n }\r\n buttonType=\"secondary-outline\"\r\n customClass=\"modal__footer-button--close\"\r\n onClickFunc={() => handleToggleModal('modal--record-infos')}\r\n actionType=\"button\"\r\n buttonText={Close}\r\n buttonSize=\"sm\"\r\n />\r\n );\r\n\r\n return (\r\n \r\n );\r\n};\r\n\r\nexport default EpRecordInformationsModal;\r\n\r\nEpRecordInformationsModal.defaultProps = {\r\n modalRecordHospitalsCount: null,\r\n modalRecordUnitsCount: null,\r\n modalRecordSourceSite: null,\r\n modalRecordDescription: null,\r\n};\r\n\r\nEpRecordInformationsModal.propTypes = {\r\n modalTitle: PropTypes.string.isRequired,\r\n modalRecordLogo: PropTypes.string.isRequired,\r\n modalRecordCountryName: PropTypes.string.isRequired,\r\n modalRecordHospitalsCount: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\r\n modalRecordUnitsCount: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\r\n modalRecordSourceSite: PropTypes.string,\r\n modalRecordDescription: PropTypes.string,\r\n};\r\n","export default __webpack_public_path__ + \"static/media/record_mica.42e67f90.png\";","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport Plotly from 'plotly.js';\r\nimport createPlotlyComponent from 'react-plotly.js/factory';\r\nimport { useSelector } from 'react-redux';\r\nimport formatNumberWithAbbreviation from '../../utils/numberMeasurementFormat';\r\n\r\nconst Plot = createPlotlyComponent(Plotly);\r\n\r\nconst EpTendencyChart = ({\r\n xaxisValues, yaxisValues, culture,\r\n}) => {\r\n const lastFiltersApplied = useSelector(state => state.filter.lastFiltersApplied);\r\n const filterIndicatorSelected = lastFiltersApplied.indicator;\r\n\r\n const chartConfig = {\r\n responsive: true,\r\n displaylogo: false,\r\n toImageButtonOptions: { responsive: true },\r\n modeBarButtonsToRemove: [\r\n 'zoom2d',\r\n 'pan2d',\r\n 'select2d',\r\n 'lasso2d',\r\n 'zoomIn2d',\r\n 'zoomOut2d',\r\n 'autoScale2d',\r\n 'toggleSpikelines',\r\n 'hoverClosestCartesian',\r\n 'hoverCompareCartesian',\r\n 'resetScale2d',\r\n 'toImage',\r\n ],\r\n };\r\n\r\n const chartData = [{\r\n x: xaxisValues,\r\n y: yaxisValues,\r\n type: 'scatter',\r\n mode: 'lines',\r\n line: {\r\n color: 'rgb(66, 133, 244)',\r\n width: 1,\r\n shape: 'linear',\r\n dash: 'solid',\r\n simplify: true,\r\n },\r\n fill: 'tonexty',\r\n fillcolor: 'rgb(232, 240, 254)',\r\n hovertext: [],\r\n hoverinfo: 'text', // opção de hover personalizado\r\n }];\r\n\r\n const chartLayout = {\r\n font: {\r\n color: 'rgba(110, 124, 147, 1)',\r\n family: 'Poppins, sans-serif',\r\n size: 12,\r\n },\r\n xaxis: {\r\n showticklabels: false,\r\n showgrid: false,\r\n fixedrange: true,\r\n },\r\n yaxis: {\r\n showticklabels: false,\r\n showgrid: false,\r\n fixedrange: true,\r\n },\r\n autosize: true,\r\n margin: {\r\n l: 0,\r\n r: 0,\r\n b: 0,\r\n t: 0,\r\n },\r\n plot_bgcolor: 'rgba(255, 255, 255, 0)',\r\n paper_bgcolor: 'rgba(255, 255, 255, 0)',\r\n };\r\n\r\n const linePointsLength = xaxisValues.length;\r\n\r\n for (let i = 0; i < linePointsLength; i++) {\r\n const currentXaxisValues = xaxisValues[i];\r\n let currentYaxisValues = formatNumberWithAbbreviation(yaxisValues[i], 0, culture);\r\n\r\n // Dependendo do tipo de grupo do paciente, a quantidade de casas decimais é alterada\r\n if (filterIndicatorSelected === 2 || filterIndicatorSelected === 4\r\n || filterIndicatorSelected === 7 || filterIndicatorSelected === 8\r\n || filterIndicatorSelected === 9) {\r\n currentYaxisValues = formatNumberWithAbbreviation(yaxisValues[i], 1, culture);\r\n }\r\n\r\n chartData[0].hovertext = [...chartData[0].hovertext, `${currentXaxisValues} - ${currentYaxisValues}`];\r\n }\r\n\r\n return (\r\n \r\n );\r\n};\r\n\r\nexport default EpTendencyChart;\r\n\r\nEpTendencyChart.defaultProps = {\r\n xaxisValues: [],\r\n yaxisValues: [],\r\n culture: 'en-US',\r\n};\r\n\r\nEpTendencyChart.propTypes = {\r\n xaxisValues: PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.string, PropTypes.number])),\r\n yaxisValues: PropTypes.arrayOf(PropTypes.number),\r\n culture: PropTypes.string,\r\n};\r\n","import React from 'react';\r\nimport EpButton from '../components/EpButton';\r\nimport formatNumberWithAbbreviation from './numberMeasurementFormat';\r\nimport UCIUruguayasLogoImage from '../assets/images/records/record_uci-uruguayas.png';\r\nimport UTIsBrasileirasLogoImage from '../assets/images/records/record_uti-brasileiras.png';\r\nimport AnzicsLogoImage from '../assets/images/records/record_anzics.png';\r\nimport NICELogoImage from '../assets/images/records/record_nice.png';\r\nimport CritCareAsiaLogoImage from '../assets/images/records/record_crit-care-asia.png';\r\nimport MICALogoImage from '../assets/images/records/record_mica.png';\r\nimport CubreaLogoImage from '../assets/images/records/record_cubrea.png';\r\nimport SATIQLogoImage from '../assets/images/records/record_satiq.png';\r\nimport JipadLogoImage from '../assets/images/records/record_jipad.png';\r\nimport IRISLogoImage from '../assets/images/records/record_iris.png';\r\nimport AlbertaCriticalCareLogoImage from '../assets/images/records/record_alberta-critical-care.png';\r\nimport { handleToggleModal } from '../components/EpModal';\r\nimport EpTendencyChart from '../components/EpTendencyChart/EpTendencyChart';\r\nimport useTranslation from '../hooks/useTranslation';\r\n\r\nexport const convertToStringWithoutSpacesAndAccents = (content) => {\r\n const characters = 'aaaaaeeeeiiiioooouuuuncsyoarsnpwgnmuxzh------';\r\n const charactersWithAccents = 'àáäâãèéëêìíïîòóöôùúüûñçßÿœæŕśńṕẃǵǹḿǘẍźḧ·/_,:;';\r\n\r\n const p = new RegExp(charactersWithAccents.split('').join('|'), 'g');\r\n\r\n const textFormatted = content.toString().trim()\r\n .replace(p, c => characters.charAt(charactersWithAccents.indexOf(c)))\r\n .replace(/&/g, '-and-')\r\n .replace(/[\\s\\W-]+/g, '');\r\n\r\n return textFormatted;\r\n};\r\n\r\nexport const generateRanges = (minRange, maxRange, minValue, maxValue) => {\r\n const scales = []; // Array para agrupar ranges\r\n const ranges = maxRange - minRange; // Quantidade de ranges\r\n const range = (maxValue - minValue) / ranges; // Diferença entre valor máximo e mínimo\r\n\r\n for (let i = 0; i < ranges; i++) {\r\n scales.push({\r\n range: i + minRange, // Index do range atual\r\n min: minValue + range * i,\r\n max: minValue + range * (i + 1),\r\n });\r\n }\r\n return scales;\r\n};\r\n\r\n// Tipos de célula das tabelas\r\nexport const emptyNumberCell = (value, valueDigits, culture) => (\r\n value !== undefined && value !== null && value !== '' ? {formatNumberWithAbbreviation(value, valueDigits, culture || 'en-US')} : -\r\n);\r\n\r\nexport const emptyStringCell = ({ value }) => (\r\n value !== undefined && value !== null && value !== '' ? {value} : -\r\n);\r\n\r\nexport const uniquePercentValueCell = (value, valueDigits, culture) => (\r\n value !== undefined && value !== null && value !== '' ? {formatNumberWithAbbreviation(value, valueDigits, culture || 'en-US')}% : -\r\n);\r\n\r\nexport const doubleIndicatorsCell = (\r\n primaryValueProp, primaryValuePropDigits, isPrimaryValuePropPercentage,\r\n secondaryValueProp, secondaryValuePropDigits, isSecondaryValuePropPercentage,\r\n culture,\r\n) => {\r\n let formattedPrimaryValue = '-';\r\n let formattedSecondaryValue = '-';\r\n\r\n if (primaryValueProp || primaryValueProp === 0) {\r\n formattedPrimaryValue = isPrimaryValuePropPercentage\r\n ? formatNumberWithAbbreviation(primaryValueProp, primaryValuePropDigits, culture)\r\n : formatNumberWithAbbreviation(primaryValueProp, primaryValuePropDigits, culture || 'en-US');\r\n }\r\n\r\n if (secondaryValueProp || secondaryValueProp === 0) {\r\n formattedSecondaryValue = isSecondaryValuePropPercentage\r\n ? formatNumberWithAbbreviation(secondaryValueProp, secondaryValuePropDigits, culture)\r\n : formatNumberWithAbbreviation(secondaryValueProp, secondaryValuePropDigits, culture || 'en-US');\r\n }\r\n\r\n return (\r\n \r\n \r\n {formattedPrimaryValue}{isPrimaryValuePropPercentage && formattedPrimaryValue !== '-' ? '%' : ''}\r\n | {formattedSecondaryValue}{isSecondaryValuePropPercentage && '%'}\r\n \r\n );\r\n};\r\n\r\nexport const tendencyChartCell = (cellInfo, culture) => {\r\n // Pega dados somente dos anos que retornem dados que não são nulos\r\n const yearValuesArr = cellInfo.row.original.yearValues;\r\n const yearValuesXaxisArr = yearValuesArr\r\n .filter(item => item.year !== null && item.mainValue !== null)\r\n .map(item => item.year);\r\n const yearValuesYaxisArr = yearValuesArr\r\n .filter(item => item.year !== null && item.mainValue !== null)\r\n .map(item => item.mainValue);\r\n const validValuesArr = yearValuesArr\r\n .filter(item => (item.mainValue !== null));\r\n\r\n // Quando a consulta retornar até somente 1 dado, o gráfico evolutivo não deve ser exibido\r\n if (validValuesArr.length <= 1) {\r\n return ( );\r\n }\r\n\r\n return (\r\n \r\n );\r\n};\r\n\r\nexport const recordsHoverableCell = (\r\n cellInfo, setRecordInformationsTitleFunc, setModalRecordInformationsLogoFunc,\r\n setModalRecordInformationsCountryNameFunc, setModalRecordInformationsHospitalsCountFunc,\r\n setModalRecordInformationsUnitsCountFunc, setModalRecordInformationsSourceSiteFunc,\r\n setModalRecordInformationsDescription,\r\n) => {\r\n // Tags do Globalization\r\n const MoreInformation = useTranslation('More Information');\r\n\r\n const currentUserLanguage = localStorage.getItem('bi.userLanguage');\r\n let cellContent = (-);\r\n\r\n const recordsImagesArr = [\r\n UCIUruguayasLogoImage,\r\n AnzicsLogoImage,\r\n CritCareAsiaLogoImage,\r\n NICELogoImage,\r\n CubreaLogoImage,\r\n SATIQLogoImage,\r\n JipadLogoImage,\r\n IRISLogoImage,\r\n UTIsBrasileirasLogoImage,\r\n MICALogoImage,\r\n AlbertaCriticalCareLogoImage,\r\n ];\r\n\r\n const recordName = cellInfo ? cellInfo.row.original.regionName : null;\r\n let recordCode = cellInfo ? cellInfo.row.original.regionCode : null;\r\n const recordCountryCode = cellInfo ? cellInfo.row.original.countryCode : null;\r\n const recordCountryName = cellInfo ? cellInfo.row.original.countryName : null;\r\n const recordHospitalsCount = cellInfo\r\n ? formatNumberWithAbbreviation(\r\n cellInfo.row.original.hospitalsCount, 0, currentUserLanguage,\r\n ) : null;\r\n const recordUnitsCount = cellInfo\r\n ? formatNumberWithAbbreviation(\r\n cellInfo.row.original.unitsCount, 0, currentUserLanguage,\r\n ) : null;\r\n const recordSourceSite = cellInfo ? cellInfo.row.original.sourceSite : null;\r\n const recordDescription = cellInfo ? cellInfo.row.original.descriptionGroup : null;\r\n\r\n // Altera o recordCode de UTIs Uruguaias, UTIs Brasileiras e MICA\r\n // por conta da regra de negócio atual do banco\r\n if (recordCode === 1 && recordCountryCode === 'UY') {\r\n recordCode = 1;\r\n }\r\n\r\n if (recordCode === 1 && recordCountryCode === 'BR') {\r\n recordCode = 9;\r\n }\r\n\r\n if (recordCode === 1 && recordCountryCode === 'BE') {\r\n recordCode = 10;\r\n }\r\n\r\n if (recordCode === 9 && recordCountryCode === 'CA') {\r\n recordCode = 11;\r\n }\r\n\r\n const recordLogoIndex = recordCode - 1;\r\n\r\n if (recordCountryName !== undefined && recordCountryName !== null && recordCountryName !== '') {\r\n cellContent = (\r\n <>\r\n {recordName}\r\n\r\n \r\n\r\n {\r\n setRecordInformationsTitleFunc(recordName);\r\n setModalRecordInformationsLogoFunc(recordsImagesArr[recordLogoIndex]);\r\n setModalRecordInformationsCountryNameFunc(recordCountryName);\r\n setModalRecordInformationsHospitalsCountFunc(recordHospitalsCount);\r\n setModalRecordInformationsUnitsCountFunc(recordUnitsCount);\r\n setModalRecordInformationsSourceSiteFunc(recordSourceSite);\r\n setModalRecordInformationsDescription(recordDescription);\r\n handleToggleModal('modal--record-infos');\r\n }}\r\n // disabled={}\r\n buttonSize=\"sm\"\r\n />\r\n \r\n );\r\n }\r\n\r\n return cellContent;\r\n};\r\n\r\nlet colorsArr = [\r\n { background: 'rgb(254, 254, 252)', color: 'rgb(51, 51, 51)' },\r\n { background: 'rgb(235, 240, 245)', color: 'rgb(51, 51, 51)' },\r\n { background: 'rgb(203, 225, 243)', color: 'rgb(51, 51, 51)' },\r\n { background: 'rgb(165, 203, 236)', color: 'rgb(51, 51, 51)' },\r\n { background: 'rgb(104, 158, 208)', color: 'rgb(0, 0, 0)' },\r\n { background: 'rgb(0, 69, 138)', color: 'rgb(255, 255, 255)' },\r\n];\r\n\r\nif (navigator.userAgent.indexOf('MSIE') !== -1\r\n || navigator.appVersion.indexOf('Trident/') > 0) {\r\n colorsArr = [\r\n { background: 'rgb(254, 254, 252) !important', color: 'rgb(51, 51, 51)' },\r\n { background: 'rgb(235, 240, 245) !important', color: 'rgb(51, 51, 51)' },\r\n { background: 'rgb(203, 225, 243) !important', color: 'rgb(51, 51, 51)' },\r\n { background: 'rgb(165, 203, 236) !important', color: 'rgb(51, 51, 51)' },\r\n { background: 'rgb(104, 158, 208) !important', color: 'rgb(0, 0, 0)' },\r\n { background: 'rgb(0, 69, 138) !important', color: 'rgb(255, 255, 255)' },\r\n ];\r\n}\r\n\r\n// Método para definir a regra de cor das células da tabela\r\nexport const coloredConsolidatedIndicatorCell = (cellInfo, tableData) => {\r\n const columnId = cellInfo.column.id;\r\n\r\n // Monta ranges de cor a partir dos valores por coluna\r\n const columnValuesArr = tableData.map(item => item[columnId]);\r\n const minColumValue = typeof columnValuesArr[0] === 'number' ? Math.min(...columnValuesArr) : null;\r\n const maxColumValue = typeof columnValuesArr[0] === 'number' ? Math.max(...columnValuesArr) : null;\r\n const colorRanges = generateRanges(0, 6, minColumValue, maxColumValue);\r\n\r\n // Pega valores por linha comparando com o range da coluna respectiva\r\n const currentRange = colorRanges ? colorRanges.filter(range => cellInfo.value >= range.min\r\n && cellInfo.value <= range.max).map(option => option.range) : null;\r\n\r\n const currentColorsObj = currentRange ? colorsArr[currentRange] : null;\r\n\r\n return ({\r\n style: {\r\n color: currentColorsObj ? currentColorsObj.color : null,\r\n backgroundColor: currentColorsObj ? currentColorsObj.background : '#fff', // Deixa célula branca quando não tem dado\r\n },\r\n });\r\n};\r\n\r\n// Método para definir a regra de cor das células da tabela evolutiva\r\nexport const coloredEvolutiveIndicatorCell = (cellInfo, tableData, columnOptions) => {\r\n const columnHeader = cellInfo.column.Header;\r\n const columnHeaderAsNumber = parseInt(columnHeader, 10);\r\n\r\n let linesWithColumnValueArr = [];\r\n let columnsObjValuesArr = [];\r\n let columnValuesArr = [];\r\n\r\n const columnOptionsLength = columnOptions !== null && columnOptions !== undefined\r\n ? columnOptions.length : 0;\r\n\r\n // Descobre todos os valores por coluna\r\n for (let i = 0; i < columnOptionsLength; i++) {\r\n const columnsMatchArr = tableData\r\n .filter(item => (item.yearValues[i]\r\n ? item.yearValues[i].year === columnHeaderAsNumber : null));\r\n\r\n linesWithColumnValueArr = [...linesWithColumnValueArr, ...columnsMatchArr];\r\n }\r\n\r\n for (let i = 0; i < linesWithColumnValueArr.length; i++) {\r\n const columnsMatchObj = linesWithColumnValueArr[i].yearValues\r\n .find(item => (item.year === columnHeaderAsNumber));\r\n\r\n columnsObjValuesArr = [...columnsObjValuesArr, columnsMatchObj];\r\n }\r\n\r\n columnValuesArr = columnsObjValuesArr.map(item => (item.mainValue));\r\n\r\n // Define os ranges de cor\r\n const minColumValue = typeof columnValuesArr[0] === 'number' ? Math.min(...columnValuesArr) : null;\r\n const maxColumValue = typeof columnValuesArr[0] === 'number' ? Math.max(...columnValuesArr) : null;\r\n const colorRanges = generateRanges(0, 6, minColumValue, maxColumValue);\r\n\r\n // Pega valores por linha comparando com o range da coluna respectiva\r\n const currentRange = colorRanges ? colorRanges.filter(range => cellInfo.value >= range.min\r\n && cellInfo.value <= range.max).map(option => option.range) : null;\r\n\r\n const currentColorsObj = currentRange ? colorsArr[currentRange] : null;\r\n\r\n return ({\r\n style: {\r\n color: currentColorsObj ? currentColorsObj.color : null,\r\n backgroundColor: currentColorsObj ? currentColorsObj.background : '#fff', // Deixa célula branca quando não tem dado\r\n },\r\n });\r\n};\r\n","import React, {\r\n useEffect, useMemo, useRef, useState,\r\n} from 'react';\r\nimport { useDispatch, useSelector } from 'react-redux';\r\nimport axios from 'axios';\r\nimport globalizationService from '../../services/globalizationService';\r\nimport filterService from '../../services/filterService';\r\nimport { storeUserLanguage } from '../../redux/actions/globalizationAction';\r\nimport EpToaster from '../../components/EpToaster';\r\nimport EpBrowsableFilter from '../../components/EpBrowsableFilter';\r\nimport EpFilter from '../../components/EpFilter';\r\nimport EpGlobalNavigation from '../../components/EpGlobalNavigation';\r\nimport EpGlobalFooter from '../../components/EpGlobalFooter';\r\nimport EpCardIndicator from '../../components/EpCardIndicator';\r\nimport EpTable from '../../components/EpTable';\r\nimport EpLoadingPage from '../../components/EpLoadingPage';\r\nimport { storeLastFiltersApplied } from '../../redux/actions/filterAction';\r\nimport indicatorsService from '../../services/indicatorsService';\r\nimport EpRecordInformationsModal from '../../components/EpRecordInformationsModal';\r\nimport useTranslation from '../../hooks/useTranslation';\r\nimport {\r\n emptyNumberCell,\r\n emptyStringCell,\r\n uniquePercentValueCell,\r\n doubleIndicatorsCell,\r\n coloredConsolidatedIndicatorCell,\r\n recordsHoverableCell,\r\n tendencyChartCell,\r\n coloredEvolutiveIndicatorCell,\r\n} from '../../utils/table';\r\nimport './styles.scss';\r\nimport { changeSelectValue } from '../../components/EpFormSelect';\r\n\r\nconst Benchmarking = () => {\r\n // Tags do Globalization\r\n const Year = useTranslation('year');\r\n const Years = useTranslation('years');\r\n const Indicator = useTranslation('Indicator');\r\n const Admissions = useTranslation('Admissions');\r\n const Age = useTranslation('Age');\r\n const FortyEightreadmissions = useTranslation('Readmission <48h');\r\n const SOFA = useTranslation('SOFA');\r\n const RenalReplacementTherapy = useTranslation('Renal Replacement Therapy');\r\n // const MechanicalVentilationPatients = useTranslation('Mechanical Ventilation (patients)');\r\n // const MechanicalVentilationMean = useTranslation('Mechanical Ventilation (mean)');\r\n const LOSICU = useTranslation('LOS (ICU)');\r\n const LOSHospital = useTranslation('LOS (hospital)');\r\n const MortalityICU = useTranslation('Mortality (ICU)');\r\n const MortalityHospitalar = useTranslation('Mortality (hospitalar)');\r\n const MechanicalVentilation = useTranslation('Mechanical Ventilation');\r\n const Patients = useTranslation('Patients');\r\n const Mean = useTranslation('Mean');\r\n const LOS = useTranslation('LOS');\r\n const ICU = useTranslation('ICU');\r\n const Hospital = useTranslation('Hospital');\r\n const Mortality = useTranslation('Mortality');\r\n const Points = useTranslation('Points');\r\n const Days = useTranslation('Days');\r\n const Registry = useTranslation('Registry');\r\n const Country = useTranslation('Country');\r\n const MechanicalVentilationDurationDays = useTranslation('Mechanical Ventilation Duration (days)');\r\n const MechanicalVentilationDuration = useTranslation('Mechanical ventilation duration');\r\n const ICULOSDays = useTranslation('ICU LOS (days)');\r\n const HospitalLOSDays = useTranslation('Hospital LOS (days)');\r\n const ICUMortality = useTranslation('ICU Mortality');\r\n const HospitalMortality = useTranslation('Hospital Mortality');\r\n const Trending = useTranslation('Trending');\r\n const To = useTranslation('To');\r\n const All = useTranslation('All');\r\n const English = useTranslation('English');\r\n const Portuguese = useTranslation('Portuguese');\r\n const Median = useTranslation('Median');\r\n\r\n const dispatch = useDispatch();\r\n const [isLoadingPage, setIsLoadingPage] = useState(true);\r\n const currentUserLanguage = localStorage.getItem('bi.userLanguage');\r\n\r\n // Estados do selec de idioma\r\n const languageSelectRef = useRef();\r\n\r\n const languageOptions = [\r\n {\r\n value: 'en-US',\r\n label: English,\r\n },\r\n {\r\n value: 'pt-BR',\r\n label: Portuguese,\r\n },\r\n ];\r\n\r\n // Estados dos filtros\r\n const lastFiltersApplied = useSelector(state => state.filter.lastFiltersApplied);\r\n const filterCache = useSelector(state => state.filter.filterCache);\r\n const translationsCache = useSelector(state => state.globalization.translationsCache);\r\n const lastCacheTime = useSelector(state => state.globalization.lastCacheTime);\r\n\r\n // Estados do filtro global\r\n const filterReportTypeSelected = lastFiltersApplied.reportType;\r\n const filterIndicatorSelected = lastFiltersApplied.indicator;\r\n\r\n const filterPatientsGroupsOptions = filterCache.patientsGroups\r\n ? filterCache.patientsGroups[currentUserLanguage] : null;\r\n const filterPatientsGroupsDefaultOption = filterPatientsGroupsOptions\r\n ? filterPatientsGroupsOptions.filter(option => option.label === All || option.value === 0)\r\n : null;\r\n const filterPatientsGroupsDefaultOptionObj = filterPatientsGroupsDefaultOption\r\n ? filterPatientsGroupsDefaultOption[0] : { label: All, value: 0 };\r\n\r\n // Estados do filtro local - Anos - Dados Consolidados\r\n const filterYearsOptions = filterCache.years ? filterCache.years[currentUserLanguage] : null;\r\n const [filterYearsDefaultOptionObj, setFilterYearsDefaultOptionObj] = useState(filterYearsOptions\r\n ? filterYearsOptions[0] : null);\r\n\r\n // Estados do filtro local\r\n const patientsGroupsSelectRef = useRef();\r\n const browsableFilterSelectRef = useRef();\r\n\r\n // Estados do filtro local - Indicadores - Dados Evolutivos\r\n const filterIndicatorsOptions = [\r\n {\r\n label: Admissions,\r\n value: 1,\r\n },\r\n {\r\n label: Age,\r\n value: 2,\r\n },\r\n {\r\n label: FortyEightreadmissions,\r\n value: 3,\r\n },\r\n {\r\n label: SOFA,\r\n value: 4,\r\n },\r\n {\r\n label: RenalReplacementTherapy,\r\n value: 5,\r\n },\r\n {\r\n label: MechanicalVentilation,\r\n value: 6,\r\n },\r\n {\r\n label: MechanicalVentilationDuration,\r\n value: 7,\r\n },\r\n {\r\n label: LOSICU,\r\n value: 8,\r\n },\r\n {\r\n label: LOSHospital,\r\n value: 9,\r\n },\r\n {\r\n label: MortalityICU,\r\n value: 10,\r\n },\r\n {\r\n label: MortalityHospitalar,\r\n value: 11,\r\n },\r\n ];\r\n const filterIndicatorsDefaultOption = filterIndicatorsOptions\r\n ? filterIndicatorsOptions.filter(option => option.label === Admissions || option.value === 0)\r\n : null;\r\n const filterIndicatorsDefaultOptionObj = filterIndicatorsDefaultOption\r\n ? filterIndicatorsDefaultOption[0] : null;\r\n\r\n // Estados do modal de registros para\r\n const [modalRecordInformationsTitle, setRecordInformationsTitle] = useState('');\r\n const [modalRecordInformationsLogo, setModalRecordInformationsLogo] = useState('');\r\n const [modalRecordInformationsCountryName, setModalRecordInformationsCountryName] = useState('');\r\n const [modalRecordInformationsHospitalsCount, setModalRecordInformationsHospitalsCount] = useState('');\r\n const [modalRecordInformationsUnitsCount, setModalRecordInformationsUnitsCount] = useState('');\r\n const [modalRecordInformationsSourceSite, setModalRecordInformationsSourceSite] = useState('');\r\n const [modalRecordInformationsDescription, setModalRecordInformationsDescription] = useState('');\r\n\r\n // Estados dos indicatores\r\n const [evolutiveIndicatorsData, setEvolutiveIndicatorsData] = useState([]);\r\n const [evolutiveIndicatorsTableColumns, setEvolutiveIndicatorsTableColumns] = useState([]);\r\n const [evolutiveTableYearColumns, setEvolutiveTableYearColumns] = useState([]);\r\n const [evolutiveBeginYear, setEvolutiveBeginYear] = useState('');\r\n const [evolutiveEndYear, setEvolutiveEndYear] = useState('');\r\n\r\n const [consolidatedIndicatorsData, setConsolidatedIndicatorsData] = useState([]);\r\n const [consolidatedIndicatorsTableColumns, setConsolidatedIndicatorsTableColumns] = useState([]);\r\n const [consolidatedTotalizerIndicatorsData, setConsolidatedTotalizerIndicatorsData] = useState(\r\n null,\r\n );\r\n\r\n // Atualiza os filtros aplicados\r\n const updateFiltersAppliedStorage = async () => {\r\n const newFiltersAppliedObj = {\r\n ...lastFiltersApplied,\r\n patientGroupItemCode: filterPatientsGroupsDefaultOptionObj\r\n ? filterPatientsGroupsDefaultOptionObj.value : null,\r\n year: filterYearsDefaultOptionObj ? filterYearsDefaultOptionObj.value : null,\r\n indicator: filterIndicatorsDefaultOptionObj ? filterIndicatorsDefaultOptionObj.value : null,\r\n };\r\n\r\n let queryStrings = {\r\n selectedPatientGroup: newFiltersAppliedObj.patientGroupItemCode,\r\n selectedIndicator: newFiltersAppliedObj.indicator,\r\n };\r\n\r\n if (newFiltersAppliedObj.reportType === 0) {\r\n queryStrings = {\r\n selectedYear: newFiltersAppliedObj.year,\r\n selectedPatientGroup: newFiltersAppliedObj.patientGroupItemCode,\r\n };\r\n\r\n const consolidatedIndicatorsTotalizersResponseJSON = await indicatorsService()\r\n .getConsolidatedTotalizers(queryStrings);\r\n\r\n const consolidatedIndicatorsTotalizersList = consolidatedIndicatorsTotalizersResponseJSON\r\n && consolidatedIndicatorsTotalizersResponseJSON.data\r\n ? consolidatedIndicatorsTotalizersResponseJSON.data.response : null;\r\n\r\n const consolidatedIndicatorsResponseJSON = await indicatorsService()\r\n .getConsolidatedIndicators(queryStrings);\r\n\r\n const consolidatedIndicatorsList = consolidatedIndicatorsResponseJSON\r\n && consolidatedIndicatorsResponseJSON.data\r\n ? consolidatedIndicatorsResponseJSON.data.response : null;\r\n\r\n setConsolidatedTotalizerIndicatorsData(consolidatedIndicatorsTotalizersList || null);\r\n setConsolidatedIndicatorsData(consolidatedIndicatorsList || null);\r\n } else {\r\n const evolutiveIndicatorsResponseJSON = await indicatorsService()\r\n .getEvolutiveIndicators(queryStrings);\r\n\r\n const evolutiveIndicatorsList = evolutiveIndicatorsResponseJSON\r\n && evolutiveIndicatorsResponseJSON.data\r\n ? evolutiveIndicatorsResponseJSON.data.response : null;\r\n\r\n const updatedIndicatorsData = evolutiveIndicatorsList;\r\n\r\n setEvolutiveIndicatorsData(updatedIndicatorsData || null);\r\n }\r\n\r\n dispatch(storeLastFiltersApplied(newFiltersAppliedObj));\r\n setIsLoadingPage(false);\r\n };\r\n\r\n // Método para alterar o idioma do sistema\r\n const handleChangeLanguage = (selectedLanguage) => {\r\n const selectedLanguageCode = selectedLanguage.value;\r\n\r\n if (selectedLanguageCode !== currentUserLanguage) {\r\n setIsLoadingPage(true);\r\n\r\n axios.defaults.headers.common['Accept-Language'] = selectedLanguageCode || 'en-US';\r\n\r\n // Faz requisição para trazer dados do idioma selecionado\r\n globalizationService().getDataTermAndTranslationsByTag(\r\n selectedLanguageCode, translationsCache, lastCacheTime,\r\n );\r\n\r\n // Faz requisição para trazer dados dos selects do filtro no idioma correto\r\n filterService().getInitialBenchmarkingFiltersData(\r\n selectedLanguageCode, filterCache, lastCacheTime,\r\n );\r\n\r\n setTimeout(() => {\r\n // Salva e persiste idioma selecionado para cada vez que o usuário logar ter um default\r\n localStorage.setItem('bi.userLanguage', selectedLanguageCode);\r\n dispatch(storeUserLanguage(selectedLanguageCode));\r\n\r\n setIsLoadingPage(false);\r\n }, 300);\r\n }\r\n };\r\n\r\n const handleDefaultLanguageOption = () => {\r\n const defaultSelectOption = languageOptions.filter(\r\n option => option.value === currentUserLanguage,\r\n );\r\n return defaultSelectOption[0];\r\n };\r\n\r\n const languageDefaultOption = handleDefaultLanguageOption();\r\n\r\n useEffect(() => {\r\n if (filterPatientsGroupsDefaultOptionObj !== null && filterYearsDefaultOptionObj !== null\r\n && filterIndicatorsDefaultOptionObj !== null) {\r\n updateFiltersAppliedStorage();\r\n }\r\n }, []);\r\n\r\n useEffect(() => {\r\n // Encontra ano inicial e final dos dados evolutivos\r\n const firstYear = filterYearsOptions\r\n ? filterYearsOptions[filterYearsOptions.length - 1].value : null;\r\n const lastYear = filterYearsOptions ? filterYearsOptions[0].value : null;\r\n\r\n setEvolutiveBeginYear(firstYear);\r\n setEvolutiveEndYear(lastYear);\r\n\r\n // Gera colunas da tabela evolutiva conforme anos retornados da API\r\n let yearStringArr = [];\r\n let evolutiveColumnsArr = [];\r\n\r\n if (\r\n filterYearsOptions !== null && filterYearsOptions !== undefined\r\n && filterYearsOptions.length > 0\r\n ) {\r\n // Pega titulo das colunas\r\n filterYearsOptions.map((year) => {\r\n const newYearTitle = year.label.toString();\r\n yearStringArr = [...yearStringArr, newYearTitle];\r\n return yearStringArr;\r\n });\r\n\r\n // Organiza em ordem decrescente crescente os anos\r\n const filterYearsOptionsAscending = yearStringArr.sort(\r\n (a, b) => parseFloat(b) - parseFloat(a),\r\n );\r\n\r\n // Para cada coluna, pegar um dado diferente conforme o index no array de anos\r\n // Atualização do Evolutivo\r\n for (let i = 0; i < filterYearsOptionsAscending.length; i++) {\r\n const getYear = Number(yearStringArr[i]);\r\n if (getYear >= 2023) {\r\n let newEvolutiveColumnObj = {};\r\n newEvolutiveColumnObj = {\r\n Header: yearStringArr[i],\r\n accessor: `yearValues[${i}].mainValue`,\r\n Cell: cellinfo => emptyNumberCell(cellinfo.value, 1, currentUserLanguage),\r\n };\r\n\r\n // Dependendo do tipo de grupo do paciente, a quantidade de casas decimais é alterada\r\n if (filterIndicatorSelected === 1) {\r\n newEvolutiveColumnObj.Cell = cellinfo => emptyNumberCell(\r\n cellinfo.value, 0, currentUserLanguage,\r\n );\r\n }\r\n\r\n // Dependendo do tipo de grupo do paciente, o tipo de célula da tabela é alterado\r\n if (filterIndicatorSelected === 3) {\r\n newEvolutiveColumnObj.Cell = cellInfo => uniquePercentValueCell(\r\n cellInfo.row.original.yearValues[i].secondaryValue, 2, currentUserLanguage,\r\n );\r\n }\r\n\r\n if (filterIndicatorSelected === 5) {\r\n newEvolutiveColumnObj.Cell = cellInfo => uniquePercentValueCell(\r\n cellInfo.row.original.yearValues[i].secondaryValue, 2, currentUserLanguage,\r\n );\r\n }\r\n\r\n if (filterIndicatorSelected === 6) {\r\n newEvolutiveColumnObj.Cell = cellInfo => emptyNumberCell(\r\n cellInfo.row.original.yearValues[i].mainValue, 0, currentUserLanguage,\r\n );\r\n }\r\n\r\n if (filterIndicatorSelected === 10) {\r\n newEvolutiveColumnObj.Cell = cellInfo => uniquePercentValueCell(\r\n cellInfo.row.original.yearValues[i].secondaryValue, 2, currentUserLanguage,\r\n );\r\n }\r\n\r\n if (filterIndicatorSelected === 11) {\r\n newEvolutiveColumnObj.Cell = cellInfo => uniquePercentValueCell(\r\n cellInfo.row.original.yearValues[i].secondaryValue, 2, currentUserLanguage,\r\n );\r\n }\r\n\r\n evolutiveColumnsArr = [...evolutiveColumnsArr, newEvolutiveColumnObj];\r\n } else {\r\n let newEvolutiveColumnObj = {};\r\n newEvolutiveColumnObj = {\r\n Header: yearStringArr[i],\r\n accessor: `yearValues[${i}].mainValue`,\r\n Cell: cellinfo => emptyNumberCell(cellinfo.value, 1, currentUserLanguage),\r\n };\r\n\r\n // Dependendo do tipo de grupo do paciente, a quantidade de casas decimais é alterada\r\n if (filterIndicatorSelected === 1) {\r\n newEvolutiveColumnObj.Cell = cellinfo => emptyNumberCell(\r\n cellinfo.value, 0, currentUserLanguage,\r\n );\r\n }\r\n\r\n // Dependendo do tipo de grupo do paciente, o tipo de célula da tabela é alterado\r\n if (\r\n filterIndicatorSelected === 5\r\n || filterIndicatorSelected === 6 || filterIndicatorSelected === 10\r\n || filterIndicatorSelected === 11\r\n ) {\r\n newEvolutiveColumnObj.Cell = cellInfo => doubleIndicatorsCell(\r\n cellInfo.row.original.yearValues[i]\r\n ? cellInfo.row.original.yearValues[i].secondaryValue : null, 2, true,\r\n cellInfo.row.original.yearValues[i]\r\n ? cellInfo.row.original.yearValues[i].mainValue : null, 0, false,\r\n currentUserLanguage,\r\n );\r\n }\r\n\r\n if (filterIndicatorSelected === 3) {\r\n newEvolutiveColumnObj.Cell = cellInfo => uniquePercentValueCell(\r\n cellInfo.row.original.yearValues[i].secondaryValue, 1, currentUserLanguage,\r\n );\r\n }\r\n evolutiveColumnsArr = [...evolutiveColumnsArr, newEvolutiveColumnObj];\r\n }\r\n // Atualiza o estado global das colunas de anos\r\n setEvolutiveTableYearColumns(evolutiveColumnsArr);\r\n }\r\n }\r\n }, [filterYearsOptions, filterIndicatorSelected]);\r\n\r\n useEffect(() => {\r\n const currentLanguageVisibleOption = languageSelectRef.current.getValue();\r\n const currentLanguageVisibleLabel = currentLanguageVisibleOption\r\n && currentLanguageVisibleOption[0]\r\n ? currentLanguageVisibleOption[0].label : null;\r\n const currentLanguageOptionTranslation = languageDefaultOption\r\n ? languageDefaultOption.label : null;\r\n\r\n if (currentLanguageVisibleLabel !== currentLanguageOptionTranslation) {\r\n changeSelectValue(languageSelectRef, languageDefaultOption);\r\n }\r\n\r\n // Atualiza valor selecionado no select de grupo de paciente do filtro\r\n const currentPatientsGroupsVisibleOption = patientsGroupsSelectRef.current.getValue();\r\n const currentPatientsGroupsVisibleValue = currentPatientsGroupsVisibleOption\r\n && currentPatientsGroupsVisibleOption[0]\r\n ? currentPatientsGroupsVisibleOption[0].label : null;\r\n const currentPatientsGroupsOptionTranslation = filterPatientsGroupsDefaultOptionObj\r\n ? filterPatientsGroupsDefaultOptionObj.label : null;\r\n\r\n if (currentPatientsGroupsVisibleValue !== currentPatientsGroupsOptionTranslation) {\r\n changeSelectValue(patientsGroupsSelectRef, filterPatientsGroupsDefaultOptionObj);\r\n }\r\n\r\n // Atualiza valor selecionado no select de ano no filtro local\r\n const currentBrowsableFilterVisibleOption = browsableFilterSelectRef.current.getValue();\r\n const currentBrowsableFilterVisibleValue = currentBrowsableFilterVisibleOption\r\n && currentBrowsableFilterVisibleOption[0]\r\n ? currentBrowsableFilterVisibleOption[0].label : null;\r\n const currentYearsOptionTranslation = filterYearsDefaultOptionObj\r\n ? filterYearsDefaultOptionObj.label : null;\r\n const currentIndicatorsOptionTranslation = filterIndicatorsDefaultOptionObj\r\n ? filterIndicatorsDefaultOptionObj.label : null;\r\n\r\n if (filterReportTypeSelected === 0\r\n && currentBrowsableFilterVisibleValue !== currentYearsOptionTranslation) {\r\n changeSelectValue(browsableFilterSelectRef, filterYearsDefaultOptionObj);\r\n }\r\n\r\n // Atualiza valor selecionado no select de indicador no filtro local\r\n if (filterReportTypeSelected === 1\r\n && currentBrowsableFilterVisibleValue !== currentIndicatorsOptionTranslation) {\r\n changeSelectValue(browsableFilterSelectRef, filterIndicatorsDefaultOptionObj);\r\n }\r\n }, [currentUserLanguage, Portuguese]); // filterPatientsGroupsDefaultOptionObj\r\n\r\n useEffect(() => {\r\n // Reseta filtro local para o valor padrão ao mudar de idioma\r\n if (filterPatientsGroupsDefaultOptionObj !== null && filterYearsDefaultOptionObj !== null\r\n && filterIndicatorsDefaultOptionObj !== null) {\r\n updateFiltersAppliedStorage();\r\n }\r\n }, [currentUserLanguage]);\r\n\r\n // Atualiza estados das colunas das tabelas\r\n useMemo(() => {\r\n setConsolidatedIndicatorsTableColumns([\r\n {\r\n Header: Registry,\r\n accessor: 'regionName',\r\n id: 'regionName',\r\n Cell: cellinfo => recordsHoverableCell(\r\n cellinfo, setRecordInformationsTitle, setModalRecordInformationsLogo,\r\n setModalRecordInformationsCountryName, setModalRecordInformationsHospitalsCount,\r\n setModalRecordInformationsUnitsCount, setModalRecordInformationsSourceSite,\r\n setModalRecordInformationsDescription,\r\n ),\r\n sticky: 'left', // Propriedade que deixa a coluna fixa\r\n width: 160,\r\n },\r\n {\r\n Header: Country,\r\n accessor: 'countryName',\r\n id: 'countryName',\r\n Cell: emptyStringCell,\r\n sticky: 'left',\r\n width: 160,\r\n },\r\n {\r\n Header: Admissions,\r\n accessor: 'admissionsCount',\r\n id: 'admissionsCount',\r\n Cell: cellinfo => emptyNumberCell(cellinfo.value, 0, currentUserLanguage),\r\n width: 120,\r\n },\r\n {\r\n Header: Age,\r\n accessor: 'ageMeanInYears',\r\n id: 'ageMeanInYears',\r\n Cell: cellinfo => emptyNumberCell(cellinfo.value, 1, currentUserLanguage),\r\n width: 80,\r\n },\r\n {\r\n Header: FortyEightreadmissions,\r\n accessor: 'fortyEightReadmissionsPercent',\r\n id: 'fortyEightReadmissionsPercent',\r\n Cell: cellInfo => uniquePercentValueCell(\r\n cellInfo.row.original.fortyEightReadmissionsPercent, 2, currentUserLanguage,\r\n ),\r\n width: 160,\r\n },\r\n {\r\n Header: SOFA,\r\n accessor: 'sofaMeanPoints',\r\n id: 'sofaMeanPoints',\r\n Cell: cellinfo => emptyNumberCell(cellinfo.value, 1, currentUserLanguage),\r\n width: 112,\r\n },\r\n {\r\n Header: RenalReplacementTherapy,\r\n accessor: 'renalReplacementTherapyPercent',\r\n id: 'renalReplacementTherapyPercent',\r\n Cell: (cellInfo) => {\r\n if (cellInfo.row.original.year <= 2022) {\r\n return doubleIndicatorsCell(\r\n cellInfo.row.original.renalReplacementTherapyPercent, 2, true,\r\n cellInfo.row.original.renalReplacementTherapyCount, 0, false,\r\n currentUserLanguage,\r\n );\r\n }\r\n return uniquePercentValueCell(\r\n cellInfo.row.original.renalReplacementTherapyPercent, 2, currentUserLanguage,\r\n );\r\n },\r\n width: 200,\r\n },\r\n {\r\n Header: MechanicalVentilation,\r\n accessor: 'mechanicalVentilationCount',\r\n id: 'mechanicalVentilationCount',\r\n Cell: (cellInfo) => {\r\n if (cellInfo.row.original.year <= 2022) {\r\n return doubleIndicatorsCell(\r\n cellInfo.row.original.mechanicalVentilationPercent, 2, true,\r\n cellInfo.row.original.mechanicalVentilationCount, 0, false,\r\n currentUserLanguage,\r\n );\r\n }\r\n return emptyNumberCell(cellInfo.value, 0, currentUserLanguage);\r\n },\r\n width: 176,\r\n },\r\n {\r\n Header: MechanicalVentilationDurationDays,\r\n accessor: 'mechanicalVentilationDurationMeanInDays',\r\n id: 'mechanicalVentilationDurationMeanInDays',\r\n Cell: cellinfo => emptyNumberCell(cellinfo.value, 1, currentUserLanguage),\r\n width: 216,\r\n helpText: Median,\r\n },\r\n {\r\n Header: ICULOSDays,\r\n accessor: 'lengthOfStayICUUnitMeanInDays',\r\n id: 'lengthOfStayICUUnitMeanInDays',\r\n Cell: cellinfo => emptyNumberCell(cellinfo.value, 1, currentUserLanguage),\r\n width: 144,\r\n helpText: Median,\r\n },\r\n {\r\n Header: HospitalLOSDays,\r\n accessor: 'lengthOfStayICUHospitalMeanInDays',\r\n id: 'lengthOfStayICUHospitalMeanInDays',\r\n Cell: cellinfo => emptyNumberCell(cellinfo.value, 1, currentUserLanguage),\r\n width: 144,\r\n helpText: Median,\r\n },\r\n {\r\n Header: ICUMortality,\r\n accessor: 'mortalityICUUnitMeanInDays',\r\n id: 'mortalityICUUnitMeanInDays',\r\n Cell: (cellInfo) => {\r\n if (cellInfo.row.original.year <= 2022) {\r\n return doubleIndicatorsCell(\r\n cellInfo.row.original.mortalityICUUnitMeanInDays, 2, true,\r\n cellInfo.row.original.mortalityICUUnitCount, 0, false,\r\n currentUserLanguage,\r\n );\r\n }\r\n return uniquePercentValueCell(\r\n cellInfo.row.original.mortalityICUUnitMeanInDays, 2, currentUserLanguage,\r\n );\r\n },\r\n width: 160,\r\n },\r\n {\r\n Header: HospitalMortality,\r\n accessor: 'mortalityICUHospitalMeanInDays',\r\n id: 'mortalityICUHospitalMeanInDays',\r\n Cell: (cellInfo) => {\r\n if (cellInfo.row.original.year <= 2022) {\r\n return doubleIndicatorsCell(\r\n cellInfo.row.original.mortalityICUHospitalMeanInDays, 2, true,\r\n cellInfo.row.original.mortalityICUHospitalCount, 0, false,\r\n currentUserLanguage,\r\n );\r\n }\r\n return uniquePercentValueCell(\r\n cellInfo.row.original.mortalityICUHospitalMeanInDays, 2, currentUserLanguage,\r\n );\r\n },\r\n width: 160,\r\n },\r\n ]);\r\n\r\n setEvolutiveIndicatorsTableColumns([\r\n {\r\n Header: Registry,\r\n accessor: 'regionName',\r\n id: 'regionName',\r\n Cell: cellinfo => recordsHoverableCell(\r\n cellinfo, setRecordInformationsTitle, setModalRecordInformationsLogo,\r\n setModalRecordInformationsCountryName, setModalRecordInformationsHospitalsCount,\r\n setModalRecordInformationsUnitsCount, setModalRecordInformationsSourceSite,\r\n setModalRecordInformationsDescription,\r\n ),\r\n sticky: 'left',\r\n width: 160,\r\n },\r\n {\r\n Header: Country,\r\n accessor: 'countryName',\r\n id: 'countryName',\r\n Cell: emptyStringCell,\r\n sticky: 'left',\r\n width: 160,\r\n },\r\n {\r\n Header: `${Trending} (${evolutiveBeginYear} ${To} ${evolutiveEndYear})`,\r\n accessor: '',\r\n id: '',\r\n Cell: cellinfo => tendencyChartCell(cellinfo, currentUserLanguage),\r\n sticky: 'left',\r\n disableSortBy: true, // propriedade para desabilitar a ordenação dos dados da coluna\r\n width: 240,\r\n },\r\n ...evolutiveTableYearColumns,\r\n ]);\r\n }, [evolutiveBeginYear, evolutiveEndYear, evolutiveTableYearColumns]);\r\n\r\n // Alteração Totalizadores\r\n if (lastFiltersApplied.year >= 2023) {\r\n return (\r\n <>\r\n \r\n\r\n \r\n\r\n \r\n\r\n
\r\n \r\n\r\n \r\n\r\n
\r\n {filterReportTypeSelected === 0 && (\r\n <>\r\n {/* Filtro Navegável dos Dados Consolidados */}\r\n \r\n\r\n {/* Totalizadores dos Dados Consolidados */}\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n\r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n\r\n
\r\n \r\n
\r\n
\r\n
\r\n\r\n {/* Tabela dos Dados Consolidados */}\r\n
\r\n {consolidatedTotalizerIndicatorsData\r\n && (\r\n coloredConsolidatedIndicatorCell(\r\n cellInfo, consolidatedIndicatorsData,\r\n )}\r\n />\r\n )}\r\n
\r\n \r\n )}\r\n\r\n {filterReportTypeSelected === 1 && (\r\n <>\r\n {/* Filtro Navegável dos Dados Evolutivos */}\r\n \r\n\r\n {/* Tabela dos Dados Evolutivos */}\r\n
\r\n coloredEvolutiveIndicatorCell(\r\n cellInfo, evolutiveIndicatorsData, filterYearsOptions,\r\n )}\r\n />\r\n
\r\n \r\n )}\r\n \r\n
\r\n
\r\n \r\n );\r\n }\r\n return (\r\n <>\r\n \r\n\r\n \r\n\r\n \r\n\r\n
\r\n \r\n\r\n \r\n\r\n
\r\n {filterReportTypeSelected === 0 && (\r\n <>\r\n {/* Filtro Navegável dos Dados Consolidados */}\r\n \r\n\r\n {/* Totalizadores dos Dados Consolidados */}\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n\r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n\r\n
\r\n \r\n
\r\n
\r\n
\r\n\r\n {/* Tabela dos Dados Consolidados */}\r\n
\r\n {consolidatedTotalizerIndicatorsData\r\n && (\r\n coloredConsolidatedIndicatorCell(\r\n cellInfo, consolidatedIndicatorsData,\r\n )}\r\n />\r\n )}\r\n
\r\n \r\n )}\r\n\r\n {filterReportTypeSelected === 1 && (\r\n <>\r\n {/* Filtro Navegável dos Dados Evolutivos */}\r\n \r\n\r\n {/* Tabela dos Dados Evolutivos */}\r\n
\r\n coloredEvolutiveIndicatorCell(\r\n cellInfo, evolutiveIndicatorsData, filterYearsOptions,\r\n )}\r\n />\r\n
\r\n \r\n )}\r\n \r\n
\r\n
\r\n \r\n );\r\n};\r\n\r\nexport default Benchmarking;\r\n","import React, { useEffect, useState } from 'react'; // , { useEffect, useState }\r\nimport { useHistory } from 'react-router-dom';\r\nimport EpimedLogoImage from '../../assets/images/sponsors/logo_epimed.svg';\r\nimport LogicLogoImage from '../../assets/images/sponsors/logo_logic.svg';\r\nimport EpButton from '../../components/EpButton';\r\nimport useTranslation from '../../hooks/useTranslation';\r\nimport './styles.scss';\r\n\r\nconst SharedError = () => {\r\n // Tags do Globalization\r\n const EndorsedBy = useTranslation('Endorsed by');\r\n const PoweredBy = useTranslation('Powered by');\r\n const ErrorTitle = useTranslation('Error');\r\n const NotFoundMessage = useTranslation('The page you are looking for does not exist or is down.');\r\n const BackToTheSite = useTranslation('Back to the site');\r\n const AllRightsReserved = useTranslation('©2021 All rights reserved');\r\n\r\n const history = useHistory();\r\n\r\n const [statusCode, setStatusCode] = useState('');\r\n const [errorDescription, setErrorDescription] = useState('');\r\n\r\n useEffect(() => {\r\n if (window.history.state) {\r\n setStatusCode(window.history.state.state.code);\r\n setErrorDescription(window.history.state.state.message);\r\n } else {\r\n setStatusCode(404);\r\n setErrorDescription(NotFoundMessage);\r\n }\r\n }, []);\r\n\r\n return (\r\n <>\r\n
\r\n
\r\n
\r\n

\r\n {ErrorTitle}\r\n
\r\n {statusCode}\r\n

\r\n

{errorDescription}

\r\n history.push('/benchmarking')}\r\n buttonType=\"primary\"\r\n buttonSize=\"lg\"\r\n size=\"sm\"\r\n />\r\n
\r\n\r\n {/* Bloco de Patrocinadores */}\r\n
\r\n {AllRightsReserved}\r\n\r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n \r\n );\r\n};\r\n\r\nexport default SharedError;\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { Route, Redirect } from 'react-router-dom';\r\nimport { useSelector } from 'react-redux';\r\n\r\nfunction ProtectedRoute({ children, component: Component, ...rest }) {\r\n const isAuthorizedUser = useSelector(state => state.auth.isAuthorizedUser);\r\n\r\n return isAuthorizedUser\r\n ? ()\r\n : ();\r\n}\r\n\r\nexport default ProtectedRoute;\r\n\r\nProtectedRoute.defaultProps = {\r\n children: null,\r\n component: null,\r\n\r\n};\r\nProtectedRoute.propTypes = {\r\n children: PropTypes.node,\r\n component: PropTypes.func,\r\n};\r\n","import React from 'react';\r\nimport {\r\n BrowserRouter, Route, Switch, withRouter,\r\n} from 'react-router-dom';\r\nimport LoginPage from './pages/Login';\r\nimport BenchmarkingPage from './pages/Benchmarking';\r\nimport SharedErrorPage from './pages/SharedError';\r\nimport PrivateRoute from './utils/privateRoute';\r\n\r\nconst Routes = () => (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n);\r\n\r\nexport default Routes;\r\n","// Injeção do código base do Google Analytics\r\nconst appendGoogleAnalyticsTrackingCode = () => {\r\n try {\r\n const scriptBaseOne = window.document.createElement('script');\r\n scriptBaseOne.src = `https://www.googletagmanager.com/gtag/js?id=G-SKS56C309N`;\r\n scriptBaseOne.async = true;\r\n\r\n const scriptBaseTwo = document.createElement('script');\r\n scriptBaseTwo.innerHTML = `\r\n window.dataLayer = window.dataLayer || [];\r\n function gtag(){dataLayer.push(arguments);}\r\n gtag('js', new Date());\r\n gtag('config', 'G-SKS56C309N');\r\n `;\r\n\r\n document.head.appendChild(scriptBaseOne);\r\n document.head.appendChild(scriptBaseTwo);\r\n } catch (error) {\r\n console.error('Erro ao injetar analytics:', error);\r\n }\r\n};\r\n\r\nexport default appendGoogleAnalyticsTrackingCode;\r\n","// Injeção do código base do Hotjar\r\nconst appendHotjarTrackingCode = () => {\r\n try {\r\n const script = document.createElement('script');\r\n script.innerHTML = `\r\n (function(h,o,t,j,a,r){\r\n h.hj=h.hj||function(){(h.hj.q=h.hj.q||[]).push(arguments)};\r\n h._hjSettings={hjid:2694366,hjsv:6};\r\n a=o.getElementsByTagName('head')[0];\r\n r=o.createElement('script');r.async=1;\r\n r.src=t+h._hjSettings.hjid+j+h._hjSettings.hjsv;\r\n a.appendChild(r);\r\n })(window,document,'https://static.hotjar.com/c/hotjar-','.js?sv=');\r\n `;\r\n document.head.appendChild(script);\r\n } catch (error) {\r\n console.error('Erro ao injetar hotjar:', error);\r\n }\r\n};\r\n\r\nexport default appendHotjarTrackingCode;\r\n","import React, { useEffect } from 'react';\r\nimport { Provider } from 'react-redux';\r\nimport Routes from './routes';\r\nimport store from './redux/store';\r\nimport appendGoogleAnalyticsTrackingCode from './utils/googleAnalytics';\r\nimport appendHotjarTrackingCode from './utils/hotjar';\r\nimport './styles/global.scss';\r\n\r\nfunction App() {\r\n useEffect(() => {\r\n // Insere o Google Analytics e o Hotjar em Ambiente de Produção\r\n if (process.env.REACT_APP_ENVIRONMENT === 'Production-BR' || process.env.REACT_APP_ENVIRONMENT === 'Production-EU') {\r\n appendGoogleAnalyticsTrackingCode();\r\n appendHotjarTrackingCode();\r\n }\r\n }, []);\r\n\r\n return (\r\n \r\n
\r\n \r\n
\r\n
\r\n );\r\n}\r\n\r\nexport default App;\r\n","const reportWebVitals = (onPerfEntry) => {\r\n if (onPerfEntry && onPerfEntry instanceof Function) {\r\n import('web-vitals').then(({\r\n getCLS, getFID, getFCP, getLCP, getTTFB,\r\n }) => {\r\n getCLS(onPerfEntry);\r\n getFID(onPerfEntry);\r\n getFCP(onPerfEntry);\r\n getLCP(onPerfEntry);\r\n getTTFB(onPerfEntry);\r\n });\r\n }\r\n};\r\n\r\nexport default reportWebVitals;\r\n","import 'core-js/stable';\r\nimport 'core-js/es/symbol';\r\nimport 'core-js/es/object';\r\nimport 'core-js/es/function';\r\nimport 'core-js/es/parse-int';\r\nimport 'core-js/es/parse-float';\r\nimport 'core-js/es/number';\r\nimport 'core-js/es/math';\r\nimport 'core-js/es/string';\r\nimport 'core-js/es/date';\r\nimport 'core-js/es/array';\r\nimport 'core-js/es/regexp';\r\nimport 'core-js/es/map';\r\nimport 'core-js/es/weak-map';\r\nimport 'core-js/es/set';\r\nimport 'regenerator-runtime/runtime';\r\nimport 'react-app-polyfill/ie11';\r\nimport 'react-app-polyfill/stable';\r\nimport 'core-js/features/array/find';\r\nimport 'core-js/features/array/includes';\r\nimport 'core-js/features/number/is-nan';\r\n// import 'fast-text-encoding/text';\r\n\r\nimport React from 'react';\r\nimport ReactDOM from 'react-dom';\r\nimport App from './App';\r\nimport reportWebVitals from './reportWebVitals';\r\nimport '@popperjs/core';\r\nimport 'bootstrap/dist/js/bootstrap.esm';\r\n\r\nReactDOM.render(\r\n \r\n \r\n ,\r\n document.getElementById('root'),\r\n);\r\n\r\n// If you want to start measuring performance in your app, pass a function\r\n// to log results (for example: reportWebVitals(console.log))\r\n// or send to an analytics endpoint. Learn more: https://bit.ly/CRA-vitals\r\nreportWebVitals();\r\n"],"sourceRoot":""}