{"version":3,"sources":["../../modules/account/app.js","../../modules/account/app.approutes.js","../../modules/account/app.templates.js","../../modules/account/components/ChangePasswordCtrl.js","../../modules/app/app.js","../../modules/app/apFacilityPortal/apFacilityPortal.js","../../modules/app/app.approutes.js","../../modules/app/app.templates.js","../../modules/app/modals/MultiDownloadModal.js","../../modules/app/modals/ViewDocumentModalCtrl.js","../../modules/app/partials/desktopRuler/directives/apDesktopRuler.js","../../modules/app/partials/footer/directives/apFooter.js","../../modules/app/partials/header/directives/apHeader.js","../../modules/app/partials/mobileNav/directives/apMobileNav.js","../../modules/app/partials/toolbar/directives/apToolbar.js","../../modules/app/services/ContentAttributeService.js","../../modules/app/services/CurrentUserRepository.js","../../modules/app/services/FacilitySettingsService.js","../../modules/app/services/GatewayFactory.js","../../modules/app/services/LoginFactory.js","../../modules/app/services/MultipleUserAccountsError.js","../../modules/app/services/SessionService.js","../../modules/display/app.js","../../modules/display/app.approutes.js","../../modules/display/app.templates.js","../../modules/display/components/display.js","../../modules/display/services/DisplayService.js","../../modules/home/app.js","../../modules/home/app.approutes.js","../../modules/home/app.templates.js","../../modules/home/components/home.js","../../modules/login/app.js","../../modules/login/app.approutes.js","../../modules/login/app.templates.js","../../modules/login/components/login.js","../../modules/login/services/LoginService.js","../../modules/common/app.js","../../modules/common/init.js","../../modules/common/routeDefs.js"],"names":["angular","module","config","AppRoutesProvider","$stateProvider","appRoutes","changepassword","state","route","setupAppRoutes","url","component","run","$templateCache","put","bindings","templateUrl","controller","$stateParams","FacilitySecurityRepository","gettext","LocalStorageRepository","toaster","TransitionManager","vm","this","confirmNewPassword","loading","userName","model","Id","getUserID","OldPassword","NewPassword","back","goBack","submit","form","$invalid","postChangePassword","then","pop","transition","appRoute","catch","error","data","finally","$onInit","isActiveDirectoryUser","getIsActiveDirectoryUser","getUserName","constant","PracticeName","MessageSubHeader","IdleProvider","interrupt","autoResume","keepalive","idle","timeout","ApFacilityPortalCtrl","$rootScope","$scope","CustomModuleRunService","loadedAngular","isLoginView","loginView","onAngularInitialized","shouldHideFooter","hideFooter","shouldHideToolbar","hideHeader","window","directive","restrict","factory","$modal","openMultiModal","multiVisitObj","selectedList","sourceList","all","sortBy","patientId","externalId","open","backdrop","windowClass","controllerAs","resolve","result","$modalInstance","FacilityVisitRepository","Downloading","cancel","dismiss","downloadMultipleVisits","visitIds","_","forEach","item","push","VisitId","getPdfsByVisits","close","Data","Extension","FileName","$uibModal","openViewDocumentModal","modalConfig","$uibModalInstance","ok","loadDocument","documentId","requestSettings","loadingDocument","DocumentLoad","downloadDocument","downloadingDocument","DocumentDownload","Title","EnableDownload","DownloadFileName","DocumentId","DisableInlinePdf","scope","transclude","link","BrowserService","ConsentRepository","ViewDocumentModal","apFooter","viewPrivacyPolicyImage","isModalDisplayed","getAgreementPrivacyPolicyImage","downloadAgreementPrivacyPolicy","response","addHttpError","supportsInlinePdf","$on","CurrentUserRepository","LogOffService","SessionService","$log","activeUser","headerDataListener","event","requestor","headerData","activeUserId","apHeader","activeUserFullName","$broadcast","getActiveUser","id","fullName","practiceName","toggleMobileNav","setShowMobileNav","getShowMobileNav","signOff","info","logoff","showMobileNav","transitionAndCloseNav","headerUpdateListener","setActiveUser","personId","showMobileNavListener","$transitions","AppRoutes","blankToolbar","IsActive","BackToHome","hideToolbar","stateChangeListener","onSuccess","toState","targetState","toStateName","name","find","toolbarItem","portalSettings","notifications","toolbarButton","resetToolbarState","backToHome","UrlParsingService","getClientConfig","parsePortalUrl","storage","get","activeDirectoryUser","firstName","lastName","set","removeActiveUse","remove","$q","FacilitySettingsRepository","clinicalSummaryTemplates","settingsPromise","userSetting","harmonyCaresIP","getSettings","getTemplates","getUserSetting","getHarmonyCaresIP","ignoreCache","getSettingsFromServer","ClinicalSummaryTemplates","UserSetting","HarmonyCaresIntegrationPartner","reject","Restangular","LoginFactory","configuration","$qHelpers","gateways","GATEWAYS","map","gateway","restangular","withConfig","setBaseUrl","setDefaultHeaders","ApiKey","API_KEY","prefix","login","clientId","username","password","gatewayPrefix","userId","DEV_HOSTED","clientUrl","getClientURL","deferred","defer","promise","filteredGateways","filter","some","Error","gatewayRequests","one","value","whenFirstSuccess","serverInfo","setClientURL","AppServerUrl","status","getServerUrl","loginWithUrl","clearAll","setClientID","postLogin","CLIENT_FEATURES","AprimaRestangular","Bridge","ServerInfoRepository","VersionService","MultipleUserAccountsError","loginErrorCodes","clientURL","_clientId","_username","_password","clientFeatures","customPOST","Username","Password","ClientId","DeviceId","getDeviceId","UserId","ClientFeatures","userLoginInfo","msg","authToken","JsonWebToken","checkVersions","SupportedApiVersions","MinClientVersion","validationSuccesful","warn","trackException","setIsActiveDirectoryUser","IsActiveDirectoryUser","setDeviceId","setJsonWebToken","setUserName","setUserFullName","FirstName","LastName","setUserID","ProductVersions","PrmAssemblyVersion","setPrmAssemblyVersion","PrmDatabaseVersion","setPrmDatabaseVersion","PrmDatabaseBuild","setPrmDatabaseBuild","AppServiceVersion","setMobileAssemblyVersion","SupportedFeatures","setSupportedFeatures","updateVersionInfo","setNewPasswordRequired","IsNewPasswordRequired","changeUserInfo","when","errorCode","isNumber","ErrorCode","UserOptions","message","userOptions","isArray","prototype","constructor","sessionParams","PatientAuthenticated","PracticeConsentAccepted","DisplayDashboardToolbar","ShowHeaderNavigationMenu","NewPasswordRequired","ShowMobileNav","resetSessionParams","sessionsParams","getNewPasswordRequired","display","DisplayService","MultiDownloadModal","FacilitySettingsService","currentVisitNoteIndex","disableInlinePdf","patient","patientName","multiVisit","showAttestation","HcIpConfig","IsLicensed","patientSearchResult","substring","length","usageMetricSubTypeName","getOrderedVisitNoteList","PatientId","orderedVisitNoteList","success","visitNoteList","i","updateUsageMetric","backToSearch","downloadVisit","getPdfByVisit","formatDate","date","format","getVisit","multiVisitModal","ExternalId","openAttestation","Url","console","selectNextNote","nextIndex","selectVisitNote","warning","selectPreviousNote","previousIndex","updateUsageMetricDto","MetricTypeName","MetricSubTypeName","IncrementFactor","index","visit","metricSubTypeName","postUsageMetricUpdate","getVisitNoteList","visitList","processedVisitList","each","Date","moment","sort","a","b","home","ContentAttributeService","GatewayFactory","FpSearchService","errorMessage","submitted","loadingAssistance","loginAssistanceInfo","selectUserMode","clientID","getClientID","cloneDeep","g","oldClientId","newClientId","hostUrl","createModalAlert","title","buttons","clearLastSearch","err","$location","splitResult","absUrl","toLowerCase","split","clientConfig","HostUrl","add","Idle","onStart","to","running","unwatch","watch","$urlRouterProvider","$urlServiceProvider","getAppRoutes","deferIntercept"],"mappings":"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","file":"aprima-facilityportal.min.js","sourcesContent":["angular\r\n .module('account',[\r\n 'ngCookies',\r\n 'gettext',\r\n 'restangular',\r\n 'lodash',\r\n\r\n 'aprima-core',\r\n 'aprima-bridge',\r\n 'aprima-config',\r\n 'aprima-legacy-common',\r\n 'aprima-provider-api',\r\n 'aprima-patient-api',\r\n 'aprima-facility-api',\r\n ]);","angular.module('account').config([\r\n 'AppRoutesProvider',\r\n '$stateProvider',\r\n function config(\r\n AppRoutesProvider,\r\n $stateProvider\r\n ) {\r\n 'use strict';\r\n\r\n var appRoutes = {\r\n 'changepassword': {\r\n state: 'change-password',\r\n route: '/changepassword',\r\n },\r\n };\r\n\r\n AppRoutesProvider.setupAppRoutes(appRoutes);\r\n\r\n $stateProvider\r\n .state(appRoutes.changepassword.state, {\r\n url: appRoutes.changepassword.route,\r\n component: 'changePassword'\r\n });\r\n }]);\r\n","angular.module('account').run(['$templateCache', function($templateCache) {\n 'use strict';\r\n\r\n $templateCache.put('/account/views/changepassword.html',\r\n \"
\\r\" +\r\n \"\\n\" +\r\n \"
\\r\" +\r\n \"\\n\" +\r\n \"
\\r\" +\r\n \"\\n\" +\r\n \" {{::'Active Directory User Passwords Must Be Changed Through Windows' | translate}}\\r\" +\r\n \"\\n\" +\r\n \"
\\r\" +\r\n \"\\n\" +\r\n \"
\\r\" +\r\n \"\\n\" +\r\n \"
\\r\" +\r\n \"\\n\" +\r\n \"
\\r\" +\r\n \"\\n\" +\r\n \" {{::'Please create a new password:' | translate}}\\r\" +\r\n \"\\n\" +\r\n \"
\\r\" +\r\n \"\\n\" +\r\n \"
\\r\" +\r\n \"\\n\" +\r\n \"
\\r\" +\r\n \"\\n\" +\r\n \"
\\r\" +\r\n \"\\n\" +\r\n \" \\r\" +\r\n \"\\n\" +\r\n \"
\\r\" +\r\n \"\\n\" +\r\n \" \\r\" +\r\n \"\\n\" +\r\n \" \\r\" +\r\n \"\\n\" +\r\n \" {{::'Not valid.' | translate}}\\r\" +\r\n \"\\n\" +\r\n \" \\r\" +\r\n \"\\n\" +\r\n \"
\\r\" +\r\n \"\\n\" +\r\n \"
\\r\" +\r\n \"\\n\" +\r\n \"
\\r\" +\r\n \"\\n\" +\r\n \"
\\r\" +\r\n \"\\n\" +\r\n \"
\\r\" +\r\n \"\\n\" +\r\n \"
\\r\" +\r\n \"\\n\" +\r\n \"
\\r\" +\r\n \"\\n\" +\r\n \" \\r\" +\r\n \"\\n\" +\r\n \" \\r\" +\r\n \"\\n\" +\r\n \" \\r\" +\r\n \"\\n\" +\r\n \" {{::'Password must be at least 5 characters.' | translate}}\\r\" +\r\n \"\\n\" +\r\n \" \\r\" +\r\n \"\\n\" +\r\n \"
\\r\" +\r\n \"\\n\" +\r\n \"
\\r\" +\r\n \"\\n\" +\r\n \"
\\r\" +\r\n \"\\n\" +\r\n \"
\\r\" +\r\n \"\\n\" +\r\n \"
\\r\" +\r\n \"\\n\" +\r\n \"
\\r\" +\r\n \"\\n\" +\r\n \" \\r\" +\r\n \"\\n\" +\r\n \" \\r\" +\r\n \"\\n\" +\r\n \" \\r\" +\r\n \"\\n\" +\r\n \" {{::'Passwords do not match.' | translate}}\\r\" +\r\n \"\\n\" +\r\n \" \\r\" +\r\n \"\\n\" +\r\n \"
\\r\" +\r\n \"\\n\" +\r\n \"
\\r\" +\r\n \"\\n\" +\r\n \"
\\r\" +\r\n \"\\n\" +\r\n \" \\r\" +\r\n \"\\n\" +\r\n \"
\\r\" +\r\n \"\\n\" +\r\n \"
\\r\" +\r\n \"\\n\" +\r\n \"
\\r\" +\r\n \"\\n\" +\r\n \" \\r\" +\r\n \"\\n\" +\r\n \"
\\r\" +\r\n \"\\n\" +\r\n \"
\\r\" +\r\n \"\\n\" +\r\n \" {{\\\"An error has occurred and the page could not be loaded.\\\" | translate}}\\r\" +\r\n \"\\n\" +\r\n \"
\\r\" +\r\n \"\\n\" +\r\n \"
\\r\" +\r\n \"\\n\" +\r\n \" {{\\\"You do not have access to this info.\\\"| translate}}\\r\" +\r\n \"\\n\" +\r\n \"
\\r\" +\r\n \"\\n\" +\r\n \"
\\r\" +\r\n \"\\n\" +\r\n \"
\"\r\n );\r\n\n}]);\n","(function() {\r\n 'use strict';\r\n\r\n angular\r\n .module('account')\r\n .component('changePassword', {\r\n bindings: { },\r\n templateUrl: '/account/views/changepassword.html',\r\n controller: [\r\n '$stateParams',\r\n 'FacilitySecurityRepository',\r\n 'gettext',\r\n 'LocalStorageRepository',\r\n 'toaster',\r\n 'TransitionManager',\r\n ChangePassword\r\n ],\r\n });\r\n\r\n function ChangePassword(\r\n $stateParams,\r\n FacilitySecurityRepository,\r\n gettext,\r\n LocalStorageRepository,\r\n toaster,\r\n TransitionManager\r\n ) {\r\n var vm = this;\r\n \r\n vm.confirmNewPassword = '';\r\n vm.loading = false;\r\n vm.userName = '';\r\n\r\n vm.model = {\r\n Id: LocalStorageRepository.getUserID(),\r\n OldPassword: '',\r\n NewPassword: ''\r\n };\r\n \r\n vm.back = back;\r\n vm.submit = submit;\r\n \r\n vm.$onInit = function() {\r\n vm.isActiveDirectoryUser = LocalStorageRepository.getIsActiveDirectoryUser();\r\n vm.userName = LocalStorageRepository.getUserName();\r\n };\r\n\r\n function back() {\r\n TransitionManager.goBack();\r\n }\r\n\r\n function submit(form) {\r\n if (form.$invalid) {\r\n return;\r\n } \r\n\r\n vm.loading = true;\r\n\r\n FacilitySecurityRepository.postChangePassword(vm.model)\r\n .then(function () {\r\n toaster.pop('success', '', gettext('Password has been changed successfully. Please login with new password.'));\r\n TransitionManager.transition({appRoute: 'login'});\r\n })\r\n .catch(function (error) {\r\n toaster.pop('error', '', gettext(error.data));\r\n })\r\n .finally(function () {\r\n vm.loading = false;\r\n });\r\n }\r\n }\r\n})();","angular.module('app', [\r\n 'ngCookies',\r\n 'restangular',\r\n 'ui.router',\r\n 'ui.router.upgrade',\r\n 'gettext',\r\n 'restangular',\r\n 'lodash',\r\n 'ngIdle',\r\n\r\n\r\n 'aprima-core',\r\n 'aprima-bridge',\r\n 'aprima-config',\r\n 'aprima-facility-api',\r\n 'aprima-legacy-common',\r\n 'aprima-provider-api',\r\n 'aprima-patient-api',\r\n 'aprima-utils'\r\n]).constant('AppId', {\r\n PracticeName: '2AD081A3-A195-4093-9C7F-1563BD3179A3',\r\n MessageSubHeader: 'B348F800-1FCB-4397-9E1A-2226AFD836E4'\r\n}).config(['IdleProvider', function(IdleProvider) {\r\n 'use strict';\r\n\r\n\r\n // Application timeout logic is in the following locations :\r\n // =======================================================\r\n // 1 - modules\\app\\app.js\r\n // ng-idle configuration and links to documentation are located here.\r\n //\r\n // 2 - modules\\app\\controllers\\LoginCtrl.js\r\n // After user logs in, IdleStartWatch is broadcast to start application timeout.\r\n // Listener is located in modules\\common\\init.js\r\n //\r\n // 3 - modules\\common\\init.js\r\n // IdleStartWatch listener. Event is broadcast from LoginCtrl.js once user is logged in. Idle.watch() is called here.\r\n // IdleTimeout listener. fires when IdleProvider.idle() + IdleProvider.timeout() expire. Log out logic is located here.\r\n //\r\n // 4 - ng-idle documentation can be found at the following locations\r\n // http://hackedbychinese.github.io/ng-idle/\r\n // https://github.com/HackedByChinese/ng-idle/wiki/Idle-and-Idleprovider\r\n // https://github.com/HackedByChinese/ng-idle/wiki\r\n\r\n\r\n // List of DOM events the Idle service will watch to reset the idle timeout\r\n // IdleProvider.interrupt('mousemove keydown DOMMouseScroll mousewheel mousedown')\r\n IdleProvider.interrupt('keydown mousedown mousewheel'); // Exclude mousemove DOM event. ng-idle has bug with mousemove.\r\n\r\n IdleProvider.autoResume(true); // FALSE - you will need to manually call watch() to start watching for idleness\r\n IdleProvider.keepalive(false); // FALSE - turn off keepalive\r\n\r\n // The idle timeout duration in seconds. After this amount of time passes without the user\r\n // performing an action that triggers one of the watched DOM events, the user is considered\r\n // idle. Default is 20 minutes.\r\n IdleProvider.idle(600); // Set timeout to 10 minutes (60*10)\r\n\r\n // The amount of time the user has to respond (in seconds) before they have been considered timed out.\r\n // Set to 0 or false to disable this feature. Default is 30 seconds.\r\n IdleProvider.timeout(1);\r\n}]);\r\n","(function(angular){\r\n 'use strict';\r\n\r\n angular.module('app').directive('apFacilityPortal', ApFacilityPortalDirective);\r\n\r\n function ApFacilityPortalDirective() {\r\n return {\r\n restrict: 'E',\r\n controller: [\r\n '$rootScope',\r\n '$scope',\r\n 'CustomModuleRunService',\r\n ApFacilityPortalCtrl,\r\n ],\r\n templateUrl: '/app/views/apFacilityPortal.html',\r\n };\r\n }\r\n\r\n function ApFacilityPortalCtrl(\r\n $rootScope,\r\n $scope,\r\n CustomModuleRunService\r\n ) {\r\n var vm = {\r\n loadedAngular: false,\r\n \r\n isLoginView: isLoginView,\r\n onAngularInitialized: onAngularInitialized,\r\n shouldHideFooter: shouldHideFooter,\r\n shouldHideToolbar: shouldHideToolbar,\r\n };\r\n\r\n $scope.vm = vm;\r\n\r\n function isLoginView() {\r\n return $rootScope.loginView;\r\n }\r\n\r\n function onAngularInitialized() {\r\n CustomModuleRunService.run();\r\n vm.loadedAngular = true;\r\n }\r\n\r\n function shouldHideFooter() {\r\n return $rootScope.hideFooter;\r\n }\r\n\r\n function shouldHideToolbar() {\r\n return $rootScope.hideHeader;\r\n }\r\n }\r\n})(window.angular);\r\n","angular.module('app').config([\r\n 'AppRoutesProvider',\r\n function config(\r\n AppRoutesProvider\r\n ) {\r\n 'use strict';\r\n\r\n var appRoutes = {\r\n\r\n };\r\n\r\n AppRoutesProvider.setupAppRoutes(appRoutes);\r\n\r\n }]);\r\n","angular.module('app').run(['$templateCache', function($templateCache) {\n 'use strict';\r\n\r\n $templateCache.put('/app/partials/desktopRuler/views/apDesktopRuler.html',\r\n \"
\\r\" +\r\n \"\\n\" +\r\n \"
P-L
\\r\" +\r\n \"\\n\" +\r\n \"\\r\" +\r\n \"\\n\" +\r\n \"
01
\\r\" +\r\n \"\\n\" +\r\n \"
\\r\" +\r\n \"\\n\" +\r\n \"\\r\" +\r\n \"\\n\" +\r\n \"
02
\\r\" +\r\n \"\\n\" +\r\n \"
\\r\" +\r\n \"\\n\" +\r\n \"\\r\" +\r\n \"\\n\" +\r\n \"
03
\\r\" +\r\n \"\\n\" +\r\n \"
\\r\" +\r\n \"\\n\" +\r\n \"\\r\" +\r\n \"\\n\" +\r\n \"
04
\\r\" +\r\n \"\\n\" +\r\n \"
\\r\" +\r\n \"\\n\" +\r\n \"\\r\" +\r\n \"\\n\" +\r\n \"
05
\\r\" +\r\n \"\\n\" +\r\n \"
\\r\" +\r\n \"\\n\" +\r\n \"\\r\" +\r\n \"\\n\" +\r\n \"
06
\\r\" +\r\n \"\\n\" +\r\n \"
\\r\" +\r\n \"\\n\" +\r\n \"\\r\" +\r\n \"\\n\" +\r\n \"
07
\\r\" +\r\n \"\\n\" +\r\n \"
\\r\" +\r\n \"\\n\" +\r\n \"\\r\" +\r\n \"\\n\" +\r\n \"
08
\\r\" +\r\n \"\\n\" +\r\n \"
\\r\" +\r\n \"\\n\" +\r\n \"
09
\\r\" +\r\n \"\\n\" +\r\n \"\\r\" +\r\n \"\\n\" +\r\n \"
\\r\" +\r\n \"\\n\" +\r\n \"
10
\\r\" +\r\n \"\\n\" +\r\n \"\\r\" +\r\n \"\\n\" +\r\n \"
\\r\" +\r\n \"\\n\" +\r\n \"
11
\\r\" +\r\n \"\\n\" +\r\n \"\\r\" +\r\n \"\\n\" +\r\n \"
\\r\" +\r\n \"\\n\" +\r\n \"
12
\\r\" +\r\n \"\\n\" +\r\n \"\\r\" +\r\n \"\\n\" +\r\n \"
\\r\" +\r\n \"\\n\" +\r\n \"
13
\\r\" +\r\n \"\\n\" +\r\n \"\\r\" +\r\n \"\\n\" +\r\n \"
\\r\" +\r\n \"\\n\" +\r\n \"
14
\\r\" +\r\n \"\\n\" +\r\n \"\\r\" +\r\n \"\\n\" +\r\n \"
\\r\" +\r\n \"\\n\" +\r\n \"
15
\\r\" +\r\n \"\\n\" +\r\n \"\\r\" +\r\n \"\\n\" +\r\n \"
\\r\" +\r\n \"\\n\" +\r\n \"
16
\\r\" +\r\n \"\\n\" +\r\n \"\\r\" +\r\n \"\\n\" +\r\n \"
P-R
\\r\" +\r\n \"\\n\" +\r\n \"
\"\r\n );\r\n\r\n\r\n $templateCache.put('/app/partials/footer/views/apFooter.html',\r\n \"
\\r\" +\r\n \"\\n\" +\r\n \" \\r\" +\r\n \"\\n\" +\r\n \"
\"\r\n );\r\n\r\n\r\n $templateCache.put('/app/partials/header/views/apHeader.html',\r\n \"\\r\" +\r\n \"\\n\" +\r\n \"
\\r\" +\r\n \"\\n\" +\r\n \"
\\r\" +\r\n \"\\n\" +\r\n \" \\r\" +\r\n \"\\n\" +\r\n \" Facility Portal\\r\" +\r\n \"\\n\" +\r\n \" \\r\" +\r\n \"\\n\" +\r\n \" \\r\" +\r\n \"\\n\" +\r\n \" \\r\" +\r\n \"\\n\" +\r\n \"
\\r\" +\r\n \"\\n\" +\r\n \"\\r\" +\r\n \"\\n\" +\r\n \"
\\r\" +\r\n \"\\n\" +\r\n \" \\r\" +\r\n \"\\n\" +\r\n \"\\r\" +\r\n \"\\n\" +\r\n \"
\\r\" +\r\n \"\\n\" +\r\n \" \\r\" +\r\n \"\\n\" +\r\n \"
    \\r\" +\r\n \"\\n\" +\r\n \"
  • \\r\" +\r\n \"\\n\" +\r\n \" {{'Sign Out' | translate}}\\r\" +\r\n \"\\n\" +\r\n \"
  • \\r\" +\r\n \"\\n\" +\r\n \"
\\r\" +\r\n \"\\n\" +\r\n \"
\\r\" +\r\n \"\\n\" +\r\n \"
\\r\" +\r\n \"\\n\" +\r\n \"\\r\" +\r\n \"\\n\" +\r\n \"
\\r\" +\r\n \"\\n\" +\r\n \" \\r\" +\r\n \"\\n\" +\r\n \"
\\r\" +\r\n \"\\n\" +\r\n \"\\r\" +\r\n \"\\n\" +\r\n \" \\r\" +\r\n \"\\n\" +\r\n \"
\\r\" +\r\n \"\\n\" +\r\n \"
\"\r\n );\r\n\r\n\r\n $templateCache.put('/app/partials/mobileNav/views/apMobileNav.html',\r\n \"\\r\" +\r\n \"\\n\" +\r\n \"
\\r\" +\r\n \"\\n\" +\r\n \"
\\r\" +\r\n \"\\n\" +\r\n \"\\r\" +\r\n \"\\n\" +\r\n \"
\\r\" +\r\n \"\\n\" +\r\n \" {{:: 'Welcome' | translate}}, {{ ::headerData.activeUserFullName }}\\r\" +\r\n \"\\n\" +\r\n \"
\\r\" +\r\n \"\\n\" +\r\n \"\\r\" +\r\n \"\\n\" +\r\n \"
\\r\" +\r\n \"\\n\" +\r\n \" \\r\" +\r\n \"\\n\" +\r\n \" \\r\" +\r\n \"\\n\" +\r\n \" {{:: 'Sign out' | translate}}\\r\" +\r\n \"\\n\" +\r\n \" \\r\" +\r\n \"\\n\" +\r\n \"
\\r\" +\r\n \"\\n\" +\r\n \"
\\r\" +\r\n \"\\n\" +\r\n \"
\\r\" +\r\n \"\\n\"\r\n );\r\n\r\n\r\n $templateCache.put('/app/partials/toolbar/views/apToolbar.html',\r\n \"
\\r\" +\r\n \"\\n\" +\r\n \"
\\r\" +\r\n \"\\n\" +\r\n \" \\r\" +\r\n \"\\n\" +\r\n \"\\r\" +\r\n \"\\n\" +\r\n \" \\r\" +\r\n \"\\n\" +\r\n \" \\r\" +\r\n \"\\n\" +\r\n \"
\\r\" +\r\n \"\\n\" +\r\n \" {{:: 'Welcome' | translate}}\\r\" +\r\n \"\\n\" +\r\n \"
\\r\" +\r\n \"\\n\" +\r\n \" \\r\" +\r\n \"\\n\" +\r\n \"
\\r\" +\r\n \"\\n\" +\r\n \"
\"\r\n );\r\n\r\n\r\n $templateCache.put('/app/views/apFacilityPortal.html',\r\n \"
\\r\" +\r\n \"\\n\" +\r\n \" \\r\" +\r\n \"\\n\" +\r\n \"
\\r\" +\r\n \"\\n\" +\r\n \"
\\r\" +\r\n \"\\n\" +\r\n \" \\r\" +\r\n \"\\n\" +\r\n \" \\r\" +\r\n \"\\n\" +\r\n \" \\r\" +\r\n \"\\n\" +\r\n \"\\r\" +\r\n \"\\n\" +\r\n \"
\\r\" +\r\n \"\\n\" +\r\n \" \\r\" +\r\n \"\\n\" +\r\n \"
\\r\" +\r\n \"\\n\" +\r\n \"\\r\" +\r\n \"\\n\" +\r\n \" \\r\" +\r\n \"\\n\" +\r\n \" \\r\" +\r\n \"\\n\" +\r\n \"
\\r\" +\r\n \"\\n\" +\r\n \"\"\r\n );\r\n\r\n\r\n $templateCache.put('/app/views/modals/multiDownloadModal.html',\r\n \"
\\r\" +\r\n \"\\n\" +\r\n \"
\\r\" +\r\n \"\\n\" +\r\n \"
\\r\" +\r\n \"\\n\" +\r\n \"
\\r\" +\r\n \"\\n\" +\r\n \" \\r\" +\r\n \"\\n\" +\r\n \"
\\r\" +\r\n \"\\n\" +\r\n \"
\\r\" +\r\n \"\\n\" +\r\n \"
\\r\" +\r\n \"\\n\" +\r\n \"
\\r\" +\r\n \"\\n\" +\r\n \"
\\r\" +\r\n \"\\n\" +\r\n \"
\\r\" +\r\n \"\\n\" +\r\n \" \\r\" +\r\n \"\\n\" +\r\n \"
\\r\" +\r\n \"\\n\" +\r\n \"
\\r\" +\r\n \"\\n\" +\r\n \"
\\r\" +\r\n \"\\n\" +\r\n \"
\\r\" +\r\n \"\\n\" +\r\n \"
\\r\" +\r\n \"\\n\" +\r\n \"
\\r\" +\r\n \"\\n\" +\r\n \"
\\r\" +\r\n \"\\n\" +\r\n \"
\\r\" +\r\n \"\\n\" +\r\n \" \\r\" +\r\n \"\\n\" +\r\n \"
\\r\" +\r\n \"\\n\" +\r\n \"
\\r\" +\r\n \"\\n\" +\r\n \"
\\r\" +\r\n \"\\n\" +\r\n \"
\\r\" +\r\n \"\\n\"\r\n );\r\n\r\n\r\n $templateCache.put('/app/views/modals/viewDocumentModal.html',\r\n \"
\\r\" +\r\n \"\\n\" +\r\n \"
\\r\" +\r\n \"\\n\" +\r\n \" \\r\" +\r\n \"\\n\" +\r\n \" {{vm.model.Title}}\\r\" +\r\n \"\\n\" +\r\n \"
\\r\" +\r\n \"\\n\" +\r\n \"\\r\" +\r\n \"\\n\" +\r\n \"
\\r\" +\r\n \"\\n\" +\r\n \" \\r\" +\r\n \"\\n\" +\r\n \"
\\r\" +\r\n \"\\n\" +\r\n \"\\r\" +\r\n \"\\n\" +\r\n \"
\\r\" +\r\n \"\\n\" +\r\n \" \\r\" +\r\n \"\\n\" +\r\n \"
\\r\" +\r\n \"\\n\" +\r\n \"
\"\r\n );\r\n\n}]);\n","(function(angular) {\r\n 'use strict';\r\n\r\n\r\n angular.module('app').factory('MultiDownloadModal', [\r\n '$uibModal',\r\n MultiDownloadModal\r\n ]);\r\n\r\n angular.module('app').controller('MultiDownloadModalCtrl', [\r\n '$uibModalInstance',\r\n 'FacilityVisitRepository',\r\n 'selectedList',\r\n 'sourceList',\r\n 'all',\r\n 'sortBy',\r\n 'patientId',\r\n 'externalId',\r\n MultiDownloadModalCtrl\r\n ]);\r\n\r\n function MultiDownloadModal(\r\n $modal\r\n ) {\r\n return {\r\n openMultiModal: openMultiModal,\r\n };\r\n\r\n function openMultiModal(multiVisitObj) {\r\n var selectedList = multiVisitObj.selectedList;\r\n var sourceList = multiVisitObj.sourceList;\r\n var all = multiVisitObj.all;\r\n var sortBy = multiVisitObj.sortBy;\r\n var patientId = multiVisitObj.patientId;\r\n var externalId = multiVisitObj.externalId;\r\n\r\n var multiModal = $modal.open({\r\n backdrop: 'static',\r\n templateUrl: '/app/views/modals/multiDownloadModal.html',\r\n windowClass: 'modal-full',\r\n controller: 'MultiDownloadModalCtrl',\r\n controllerAs: 'vm',\r\n resolve: {\r\n selectedList: function() { return selectedList; },\r\n sourceList: function() { return sourceList; },\r\n all: function() { return all; },\r\n sortBy: function() { return sortBy; },\r\n patientId : function() { return patientId; },\r\n externalId : function() { return externalId; },\r\n }\r\n });\r\n\r\n return multiModal.result;\r\n }\r\n }\r\n\r\n function MultiDownloadModalCtrl(\r\n $modalInstance,\r\n FacilityVisitRepository,\r\n selectedList,\r\n sourceList,\r\n all,\r\n sortBy,\r\n patientId,\r\n externalId\r\n ) {\r\n var vm = this;\r\n\r\n vm.selectedList = selectedList;\r\n vm.sourceList = sourceList;\r\n vm.all = all;\r\n vm.sortBy = sortBy;\r\n vm.patientId = patientId;\r\n vm.externalId = externalId;\r\n vm.Downloading = false;\r\n\r\n vm.cancel = cancel;\r\n vm.downloadMultipleVisits = downloadMultipleVisits;\r\n\r\n function cancel() {\r\n vm.selectedList = [];\r\n $modalInstance.dismiss();\r\n }\r\n\r\n function downloadMultipleVisits() {\r\n vm.Downloading = true;\r\n var visitIds = [];\r\n _.forEach(vm.selectedList, function(item){\r\n visitIds.push(item.VisitId);\r\n });\r\n\r\n return FacilityVisitRepository.getPdfsByVisits(vm.patientId, visitIds)\r\n .then(function (data){\r\n if(data === null){\r\n $modalInstance.close('error');\r\n }\r\n else{\r\n $modalInstance.close('success');\r\n }\r\n return {\r\n Data: data.Data,\r\n Extension: 'pdf',\r\n FileName: 'ID' + vm.externalId + '_' + 'Visits',\r\n };\r\n });\r\n }\r\n }\r\n})(window.angular);\r\n","(function (angular) {\r\n 'use strict';\r\n\r\n angular.module('app').factory('ViewDocumentModal', [\r\n '$uibModal',\r\n ViewDocumentModal\r\n ]);\r\n\r\n angular.module('app').controller('ViewDocumentModalCtrl', [\r\n '$uibModalInstance',\r\n 'modalConfig',\r\n ViewDocumentModalCtrl\r\n ]);\r\n\r\n function ViewDocumentModal(\r\n $uibModal\r\n ) {\r\n return {\r\n openViewDocumentModal: openViewDocumentModal,\r\n };\r\n\r\n function openViewDocumentModal(modalConfig) {\r\n $uibModal.open({\r\n templateUrl: '/app/views/modals/viewDocumentModal.html',\r\n controller: 'ViewDocumentModalCtrl',\r\n windowClass: 'modal-full',\r\n controllerAs: 'vm',\r\n resolve: {\r\n modalConfig: function () {\r\n return modalConfig;\r\n }\r\n }\r\n });\r\n }\r\n }\r\n\r\n function ViewDocumentModalCtrl(\r\n $uibModalInstance,\r\n modalConfig\r\n ) {\r\n var vm = this;\r\n\r\n vm.ok = ok;\r\n vm.cancel = cancel;\r\n vm.loadDocument = loadDocument;\r\n vm.downloadDocument = downloadDocument;\r\n\r\n vm.downloadingDocument = false;\r\n vm.model = {\r\n Title: modalConfig.Title,\r\n EnableDownload: !!modalConfig.DocumentDownload,\r\n DownloadFileName: modalConfig.DownloadFileName,\r\n DocumentId: modalConfig.DocumentId,\r\n DisableInlinePdf: modalConfig.DisableInlinePdf,\r\n };\r\n\r\n function loadDocument(documentId, requestSettings) {\r\n vm.loadingDocument = true;\r\n return modalConfig.DocumentLoad(documentId, requestSettings)\r\n .finally(function () {\r\n vm.loadingDocument = false;\r\n });\r\n }\r\n\r\n function downloadDocument(documentId) {\r\n vm.downloadingDocument = true;\r\n return modalConfig.DocumentDownload(documentId)\r\n .finally(function () {\r\n vm.downloadingDocument = false;\r\n });\r\n }\r\n\r\n function ok() {\r\n $uibModalInstance.close();\r\n }\r\n\r\n function cancel() {\r\n $uibModalInstance.dismiss();\r\n }\r\n }\r\n})(window.angular);\r\n","angular.module('app').directive('apDesktopRuler', [\r\n function () {\r\n 'use strict';\r\n return {\r\n restrict: 'E',\r\n templateUrl: '/app/partials/desktopRuler/views/apDesktopRuler.html',\r\n scope: true,\r\n transclude: false,\r\n link: function () {\r\n\r\n function onLoad() {\r\n }\r\n\r\n onLoad();\r\n }\r\n };\r\n }]);","angular.module('app').directive('apFooter', [\r\n 'BrowserService',\r\n 'ConsentRepository',\r\n 'aprgettext',\r\n 'ViewDocumentModal',\r\n function (\r\n BrowserService,\r\n ConsentRepository,\r\n gettext,\r\n ViewDocumentModal\r\n ) {\r\n 'use strict';\r\n return {\r\n restrict: 'E',\r\n templateUrl: '/app/partials/footer/views/apFooter.html',\r\n scope: true,\r\n transclude: false,\r\n link: function (scope) {\r\n\r\n scope.apFooter = {\r\n //PatientAuthenticated: SessionService.getPatientAuthenticated()\r\n };\r\n\r\n function viewPrivacyPolicyImage() {\r\n scope.isModalDisplayed = true;\r\n\r\n var modalConfig = {\r\n Title: gettext('Privacy Policy'),\r\n DocumentId: 'privacypolicy',\r\n DocumentLoad: getPrivacyPolicyImage,\r\n DocumentDownload: downloadPrivacyPolicy,\r\n DisableInlinePdf: !BrowserService.supportsInlinePdf(),\r\n };\r\n\r\n\r\n function getPrivacyPolicyImage(documentId, requestSettings) {\r\n return ConsentRepository.getAgreementPrivacyPolicyImage(requestSettings);\r\n }\r\n\r\n function downloadPrivacyPolicy(){\r\n return ConsentRepository.downloadAgreementPrivacyPolicy()\r\n .then(function (data) {\r\n return {Data: data.Data, FileName: 'PrivacyPolicy', Extension: 'pdf'};\r\n })\r\n .catch(function (response) {\r\n scope.addHttpError(response);\r\n })\r\n .finally(function() {\r\n });\r\n }\r\n\r\n ViewDocumentModal.openViewDocumentModal(modalConfig);\r\n }\r\n\r\n scope.viewPrivacyPolicyImage = viewPrivacyPolicyImage;\r\n\r\n scope.$on('$destroy', function () {\r\n });\r\n\r\n }\r\n };\r\n }\r\n ]\r\n);","angular.module('app').directive('apHeader', ['aprgettext', 'CurrentUserRepository', 'LogOffService', 'TransitionManager', 'SessionService', '$rootScope', '$log',\r\n function (gettext, CurrentUserRepository, LogOffService, TransitionManager, SessionService, $rootScope, $log) {\r\n 'use strict';\r\n return {\r\n restrict: 'E',\r\n templateUrl: '/app/partials/header/views/apHeader.html',\r\n scope: true,\r\n transclude: false,\r\n link: function (scope) {\r\n\r\n function onLoad() {\r\n var activeUser = CurrentUserRepository.getActiveUser();\r\n\r\n scope.apHeader = {\r\n activeUserId : activeUser.id,\r\n activeUserFullName: activeUser.fullName,\r\n practiceName: ''\r\n };\r\n }\r\n\r\n var headerDataListener = $rootScope.$on('HeaderData:requested', function(event, requestor) {\r\n var headerData = {\r\n activeUserId: scope.apHeader.activeUserId,\r\n activeUserFullName: scope.apHeader.activeUserFullName,\r\n requestor : requestor\r\n };\r\n $rootScope.$broadcast('HeaderData:updated', headerData);\r\n });\r\n\r\n function toggleMobileNav() {\r\n SessionService.setShowMobileNav(!SessionService.getShowMobileNav());\r\n }\r\n\r\n function signOff() {\r\n $log.info('User has selected the Sign Out option from the header drop down menu.');\r\n\r\n LogOffService.logoff().then(function () {\r\n TransitionManager.transition({appRoute: 'login'});\r\n });\r\n }\r\n\r\n onLoad();\r\n\r\n scope.$on('$destroy', function () {\r\n headerDataListener();\r\n });\r\n\r\n scope.toggleMobileNav = toggleMobileNav;\r\n scope.signOff = signOff;\r\n }\r\n };\r\n }]);","angular.module('app').directive('apMobileNav', ['$rootScope', 'SessionService', 'TransitionManager', 'LogOffService',\r\n function ($rootScope, SessionService, TransitionManager, LogOffService) {\r\n 'use strict';\r\n\r\n return {\r\n restrict: 'E',\r\n templateUrl: '/app/partials/mobileNav/views/apMobileNav.html',\r\n scope: true,\r\n transclude: false,\r\n link: function (scope) {\r\n\r\n scope.showMobileNav = SessionService.getShowMobileNav();\r\n \r\n scope.headerData = {\r\n };\r\n\r\n scope.transitionAndCloseNav = function(transition) {\r\n TransitionManager.transition(transition);\r\n SessionService.setShowMobileNav(false);\r\n };\r\n\r\n var headerUpdateListener = $rootScope.$on('HeaderData:updated', function(event, data) {\r\n if(!(data && (data.requestor || 'apMobileNav') !== 'apMobileNav'))\r\n scope.headerData = data;\r\n });\r\n\r\n scope.signOff = function() {\r\n LogOffService.logoff().then(function() {\r\n TransitionManager.transition({appRoute: 'login'});\r\n SessionService.setShowMobileNav(false);\r\n });\r\n };\r\n \r\n scope.setActiveUser = function(personId) {\r\n $rootScope.$broadcast('ActiveUser:updated', personId);\r\n SessionService.setShowMobileNav(false);\r\n };\r\n\r\n function loadMobileNav() {\r\n $rootScope.$broadcast('HeaderData:requested', 'apMobileNav');\r\n }\r\n loadMobileNav();\r\n\r\n var showMobileNavListener = scope.$on('ShowMobileNav:updated', function(event, data) {\r\n scope.showMobileNav = data;\r\n });\r\n\r\n scope.$on('$destroy', function () {\r\n showMobileNavListener();\r\n headerUpdateListener();\r\n });\r\n }\r\n };\r\n}]);\r\n","angular.module('app').directive('apToolbar', ['$rootScope', '$transitions', 'AppRoutes', 'TransitionManager',\r\n function ($rootScope, $transitions, AppRoutes, TransitionManager) {\r\n 'use strict';\r\n\r\n return {\r\n restrict: 'E',\r\n templateUrl: '/app/partials/toolbar/views/apToolbar.html',\r\n scope: true,\r\n transclude: false,\r\n link: function (scope) {\r\n\r\n scope.blankToolbar = {\r\n IsActive: false,\r\n BackToHome: { IsActive: false}\r\n };\r\n\r\n function loadToolbar() {\r\n if (!!$rootScope.hideToolbar) {\r\n return;\r\n }\r\n }\r\n\r\n loadToolbar();\r\n\r\n var stateChangeListener = $transitions.onSuccess({}, function onTransitionSuccess(transition) {\r\n var toState = transition.targetState() || {};\r\n var toStateName = toState && toState.name() || '';\r\n var appRoute = _.find(AppRoutes, {state: toStateName});\r\n scope.toolbarItem = (appRoute && appRoute.portalSettings && appRoute.portalSettings.toolbarItem);\r\n\r\n if (scope.toolbarItem === 'blank') {\r\n _.forEach(scope.notifications, function (toolbarButton) {\r\n toolbarButton.IsActive = false;\r\n });\r\n\r\n scope.blankToolbar.IsActive = true;\r\n scope.blankToolbar.BackToHome.IsActive = true;\r\n }\r\n else {\r\n if (scope.blankToolbar.IsActive) {\r\n resetToolbarState();\r\n }\r\n }\r\n });\r\n\r\n scope.$on('$destroy', function () {\r\n stateChangeListener();\r\n });\r\n\r\n function resetToolbarState() {\r\n scope.blankToolbar.IsActive = false;\r\n scope.blankToolbar.BackToHome.IsActive = false;\r\n }\r\n\r\n function backToHome() {\r\n resetToolbarState();\r\n TransitionManager.transition({appRoute: 'dashboard'});\r\n }\r\n\r\n scope.backToHome = backToHome;\r\n }\r\n };\r\n }]);","(function(angular) {\r\n 'use strict';\r\n\r\n angular.module('app').factory('ContentAttributeService', [\r\n 'UrlParsingService',\r\n ContentAttributeService\r\n ]);\r\n\r\n function ContentAttributeService(\r\n UrlParsingService\r\n ) {\r\n return {\r\n getClientConfig: getClientConfig,\r\n };\r\n\r\n function getClientConfig() {\r\n return UrlParsingService.parsePortalUrl('/facilityportal/');\r\n }\r\n }\r\n})(window.angular);","angular.module('app').factory('CurrentUserRepository',\r\n ['storage', '$timeout', 'LocalStorageRepository',\r\n function (storage) {\r\n 'use strict';\r\n\r\n function removeActiveUser() {\r\n storage.remove('activeUser');\r\n }\r\n\r\n function getActiveUser() {\r\n var activeUser = storage.get('activeUser');\r\n return {\r\n id: activeUser && activeUser.id,\r\n fullName: activeUser && activeUser.fullName,\r\n userName: activeUser && activeUser.userName,\r\n activeDirectoryUser: activeUser && activeUser.activeDirectoryUser\r\n };\r\n }\r\n\r\n function setActiveUser(id, firstName, lastName, userName, activeDirectoryUser) {\r\n var activeUser = {\r\n id: id,\r\n fullName: firstName + ' ' + lastName,\r\n userName: userName,\r\n activeDirectoryUser: activeDirectoryUser\r\n };\r\n\r\n storage.set('activeUser', activeUser);\r\n }\r\n\r\n return {\r\n getActiveUser : getActiveUser,\r\n setActiveUser : setActiveUser,\r\n removeActiveUse : removeActiveUser\r\n };\r\n }\r\n]);\r\n","(function(angular) {\r\n 'use strict';\r\n\r\n angular.module('app').factory('FacilitySettingsService', [\r\n '$q',\r\n 'FacilitySettingsRepository',\r\n FacilitySettingsService\r\n ]);\r\n\r\n function FacilitySettingsService(\r\n $q,\r\n FacilitySettingsRepository\r\n ) {\r\n var clinicalSummaryTemplates;\r\n var settingsPromise;\r\n var userSetting;\r\n var harmonyCaresIP;\r\n\r\n return {\r\n getSettings: getSettings,\r\n getTemplates: getTemplates,\r\n getUserSetting: getUserSetting,\r\n getHarmonyCaresIP : getHarmonyCaresIP\r\n };\r\n\r\n function getSettings(ignoreCache) {\r\n if(!ignoreCache && settingsPromise) {\r\n return settingsPromise.catch(function() {\r\n settingsPromise = getSettingsFromServer();\r\n return settingsPromise;\r\n });\r\n }\r\n\r\n settingsPromise = getSettingsFromServer();\r\n return settingsPromise;\r\n }\r\n\r\n function getSettingsFromServer() {\r\n return FacilitySettingsRepository.getSettings().then(function(data) {\r\n if(!data) {\r\n return $q.reject('Invalid Settings data');\r\n }\r\n clinicalSummaryTemplates = data.ClinicalSummaryTemplates;\r\n userSetting = data.UserSetting;\r\n harmonyCaresIP = data.HarmonyCaresIntegrationPartner;\r\n return data;\r\n });\r\n }\r\n\r\n function getTemplates() {\r\n return getSettings().then(function() {\r\n return clinicalSummaryTemplates;\r\n });\r\n }\r\n\r\n function getUserSetting() {\r\n return getSettings().then(function() {\r\n return userSetting;\r\n });\r\n }\r\n\r\n function getHarmonyCaresIP() {\r\n return getSettings().then(function() {\r\n return harmonyCaresIP;\r\n });\r\n }\r\n }\r\n})(window.angular);","angular.module('app').factory('GatewayFactory',[\r\n 'Restangular',\r\n 'LoginFactory',\r\n 'LocalStorageRepository',\r\n 'configuration',\r\n '$q',\r\n '$qHelpers',\r\n 'aprgettext',\r\n function (\r\n Restangular,\r\n LoginFactory,\r\n LocalStorageRepository,\r\n configuration,\r\n $q,\r\n $qHelpers,\r\n gettext\r\n ) {\r\n 'use strict';\r\n\r\n var gateways = _(configuration.GATEWAYS).map(function (gateway) {\r\n var restangular = Restangular.withConfig(function () {\r\n });\r\n\r\n restangular.setBaseUrl(gateway.url);\r\n restangular.setDefaultHeaders({\r\n 'ApiKey': configuration.API_KEY\r\n });\r\n\r\n return {\r\n prefix: gateway.prefix,\r\n restangular: restangular\r\n };\r\n });\r\n\r\n function getServerUrl(clientId, gatewayPrefix) {\r\n var clientUrl = LocalStorageRepository.getClientURL();\r\n// var clientUrl = 'http://MobileAppService:8000';\r\n// LocalStorageRepository.setClientURL(clientUrl);\r\n\r\n if (clientUrl) {\r\n var deferred = $q.defer();\r\n deferred.resolve(clientUrl);\r\n return deferred.promise;\r\n }\r\n else {\r\n var filteredGateways = gateways;\r\n\r\n if (gatewayPrefix) {\r\n filteredGateways = filteredGateways.filter(function (gateway) {\r\n return gateway.prefix === gatewayPrefix;\r\n });\r\n\r\n if (!filteredGateways.some()) {\r\n return $q.reject(new Error(gettext('Gateway prefix is not recognized.')));\r\n }\r\n }\r\n\r\n var gatewayRequests = filteredGateways.map(function (gateway) {\r\n return gateway.restangular.one('home', clientId).get();\r\n }).map(function (promise) {\r\n return $qHelpers.timeout(promise, 5000);\r\n }).value();\r\n\r\n return $qHelpers\r\n .whenFirstSuccess(gatewayRequests)\r\n .then(function (serverInfo) {\r\n LocalStorageRepository.setClientURL(serverInfo.AppServerUrl);\r\n return serverInfo.AppServerUrl;\r\n }, function (response) {\r\n return $q.reject(new Error(gettext('Gateway connection error') + ' (' + response.status + ')'));\r\n });\r\n }\r\n }\r\n\r\n function login(clientId, username, password, gatewayPrefix, userId) {\r\n if (!configuration.DEV_HOSTED) {\r\n var url = LocalStorageRepository.getClientURL();\r\n return loginWithUrl(url);\r\n }\r\n\r\n return getServerUrl(clientId, gatewayPrefix)\r\n .then(loginWithUrl);\r\n \r\n function loginWithUrl(url) {\r\n LocalStorageRepository.clearAll();\r\n LocalStorageRepository.setClientURL(url);\r\n LocalStorageRepository.setClientID(clientId);\r\n return LoginFactory.postLogin(url, clientId, username, password, userId, configuration.CLIENT_FEATURES);\r\n }\r\n }\r\n\r\n return {\r\n login: login\r\n };\r\n }]);\r\n\r\n","(function() {\r\n 'use strict';\r\n angular.module('app').factory('LoginFactory',\r\n ['$log',\r\n '$q',\r\n 'AprimaRestangular',\r\n 'Bridge',\r\n 'CurrentUserRepository',\r\n 'LocalStorageRepository',\r\n 'aprgettext',\r\n 'ServerInfoRepository',\r\n 'SessionService',\r\n 'VersionService',\r\n 'MultipleUserAccountsError',\r\n function ($log,\r\n $q,\r\n AprimaRestangular,\r\n Bridge,\r\n CurrentUserRepository,\r\n LocalStorageRepository,\r\n gettext,\r\n ServerInfoRepository,\r\n SessionService,\r\n VersionService,\r\n MultipleUserAccountsError) {\r\n\r\n var loginErrorCodes = {\r\n UnknownError: 1,\r\n InvalidRequest: 2,\r\n UnknownClientId: 4,\r\n LoginFailed: 8,\r\n NotMobileUser: 16,\r\n InactiveUser: 32,\r\n NotAllowedToLogin: 64,\r\n PrmVersionUnsupported: 128,\r\n MultipleUserAccounts: 256\r\n };\r\n\r\n function updateVersionInfo(userLoginInfo) {\r\n if (userLoginInfo && userLoginInfo.ProductVersions) {\r\n if (userLoginInfo.ProductVersions.PrmAssemblyVersion) {\r\n ServerInfoRepository.setPrmAssemblyVersion(userLoginInfo.ProductVersions.PrmAssemblyVersion);\r\n }\r\n if (userLoginInfo.ProductVersions.PrmDatabaseVersion) {\r\n ServerInfoRepository.setPrmDatabaseVersion(userLoginInfo.ProductVersions.PrmDatabaseVersion);\r\n }\r\n if (userLoginInfo.ProductVersions.PrmDatabaseBuild) {\r\n ServerInfoRepository.setPrmDatabaseBuild(userLoginInfo.ProductVersions.PrmDatabaseBuild);\r\n }\r\n if (userLoginInfo.ProductVersions.AppServiceVersion) {\r\n ServerInfoRepository.setMobileAssemblyVersion(userLoginInfo.ProductVersions.AppServiceVersion);\r\n }\r\n if (userLoginInfo.SupportedFeatures) {\r\n ServerInfoRepository.setSupportedFeatures(userLoginInfo.SupportedFeatures);\r\n }\r\n }\r\n }\r\n\r\n function postLogin(clientURL, _clientId, _username, _password, userId, clientFeatures) {\r\n var restangular = AprimaRestangular.get('facility');\r\n return restangular.one('login').customPOST({\r\n Username: _username,\r\n Password: _password,\r\n ClientId: _clientId,\r\n DeviceId: LocalStorageRepository.getDeviceId(),\r\n UserId: userId,\r\n ClientFeatures: clientFeatures\r\n }).then(function (userLoginInfo) {\r\n var authToken = userLoginInfo.JsonWebToken,\r\n msg;\r\n return VersionService.checkVersions(userLoginInfo.SupportedApiVersions, userLoginInfo.MinClientVersion).then(function (validationSuccesful) {\r\n if (validationSuccesful === false) {\r\n return $q.reject(new Error(gettext('Client Version not compatible with api server. Please update your app.')));\r\n }\r\n if (!userLoginInfo) {\r\n msg = gettext('Unexpected null result from server in Login');\r\n } else if (!userLoginInfo.DeviceId) {\r\n return $q.reject(new Error(gettext('Client Version not compatible with api server. Please update your app.')));\r\n }\r\n if (msg) {\r\n $log.warn(msg);\r\n Bridge.trackException(msg);\r\n }\r\n LocalStorageRepository.setIsActiveDirectoryUser(userLoginInfo.IsActiveDirectoryUser);\r\n LocalStorageRepository.setDeviceId(userLoginInfo.DeviceId);\r\n LocalStorageRepository.setJsonWebToken(authToken);\r\n LocalStorageRepository.setUserName(_username);\r\n LocalStorageRepository.setUserFullName(userLoginInfo.FirstName + ' ' + userLoginInfo.LastName);\r\n LocalStorageRepository.setUserID(userLoginInfo.Id);\r\n updateVersionInfo(userLoginInfo);\r\n SessionService.setNewPasswordRequired(userLoginInfo.IsNewPasswordRequired);\r\n Bridge.changeUserInfo(authToken, clientURL, userLoginInfo.Id);\r\n\r\n CurrentUserRepository.setActiveUser(userLoginInfo.Id, userLoginInfo.FirstName, userLoginInfo.LastName, _username ,userLoginInfo.IsActiveDirectoryUser);\r\n\r\n return $q.when(userLoginInfo);\r\n });\r\n }).catch(function(response)\r\n {\r\n var msg = gettext('login error'),\r\n errorCode = null;\r\n if (response.status === 401) {\r\n msg = gettext('Invalid username or password');\r\n\r\n errorCode = angular.isNumber(response.data.ErrorCode) ? response.data.ErrorCode : 0;\r\n\r\n if(errorCode & loginErrorCodes.MultipleUserAccounts) {\r\n var error = new MultipleUserAccountsError(response.data.UserOptions);\r\n return $q.reject(error);\r\n }\r\n\r\n if (errorCode & loginErrorCodes.UnknownClientId) {\r\n msg = gettext('Unknown clientId (' + _clientId + ').');\r\n } else if (errorCode & loginErrorCodes.LoginFailed) {\r\n msg = gettext('Invalid username or password');\r\n } else if (errorCode & loginErrorCodes.InactiveUser) {\r\n msg = gettext('This user account is not active and cannot login.');\r\n } else if (errorCode & loginErrorCodes.NotAllowedToLogin) {\r\n msg = gettext('This user account does not have the required permissions to login.');\r\n } else if (errorCode & loginErrorCodes.PrmVersionUnsupported) {\r\n msg = gettext('PRM version out of date. Please contact customer support about upgrading.');\r\n }\r\n }\r\n return $q.reject(new Error(msg));\r\n });\r\n\r\n\r\n }\r\n\r\n return {\r\n postLogin : postLogin\r\n };\r\n }]);\r\n})();\r\n","(function() {\r\n 'use strict';\r\n\r\n function MultipleUserAccountsError(message, userOptions) {\r\n if(angular.isArray(message)) {\r\n userOptions = message;\r\n message = null;\r\n }\r\n\r\n this.name = 'MultipleUserAccountsError';\r\n this.message = message || 'Cannot login due to multiple user accounts';\r\n this.userOptions = userOptions;\r\n }\r\n\r\n MultipleUserAccountsError.prototype = new Error();\r\n MultipleUserAccountsError.prototype.constructor = MultipleUserAccountsError;\r\n\r\n angular.module('app').constant('MultipleUserAccountsError', MultipleUserAccountsError);\r\n})();","angular.module('app').factory('SessionService',\r\n [\r\n '$rootScope',\r\n\r\n function($rootScope) {\r\n 'use strict';\r\n\r\n var sessionParams = {\r\n PatientAuthenticated: false,\r\n PracticeConsentAccepted: false,\r\n DisplayDashboardToolbar: false,\r\n ShowHeaderNavigationMenu: false,\r\n NewPasswordRequired: false,\r\n ShowMobileNav: false\r\n };\r\n\r\n function setNewPasswordRequired (value){\r\n sessionParams.NewPasswordRequired = value;\r\n }\r\n\r\n function getNewPasswordRequired() {\r\n return sessionParams.NewPasswordRequired;\r\n }\r\n\r\n\r\n var resetSessionParams = function (sessionsParams) {\r\n sessionsParams.NewPasswordRequired = false;\r\n };\r\n\r\n var setShowMobileNav = function (value){\r\n sessionParams.ShowMobileNav = value;\r\n $rootScope.$broadcast('ShowMobileNav:updated', sessionParams.ShowMobileNav);\r\n };\r\n var getShowMobileNav = function (){\r\n return sessionParams.ShowMobileNav;\r\n };\r\n\r\n return {\r\n resetSessionParams: resetSessionParams,\r\n getNewPasswordRequired: getNewPasswordRequired,\r\n setNewPasswordRequired: setNewPasswordRequired,\r\n setShowMobileNav : setShowMobileNav,\r\n getShowMobileNav : getShowMobileNav\r\n };\r\n }\r\n ]);","angular\r\n .module('display',[\r\n 'ngCookies',\r\n 'gettext',\r\n 'restangular',\r\n 'lodash',\r\n 'app',\r\n\r\n 'aprima-core',\r\n 'aprima-bridge',\r\n 'aprima-config',\r\n 'aprima-legacy-common',\r\n 'aprima-facility-api',\r\n 'aprima-provider-api',\r\n 'aprima-patient-api',\r\n ]);","angular.module('display').config([\r\n 'AppRoutesProvider',\r\n '$stateProvider',\r\n function config(\r\n AppRoutesProvider,\r\n $stateProvider\r\n ) {\r\n 'use strict';\r\n\r\n var appRoutes = {\r\n 'display':{\r\n state: 'display',\r\n route: '/display/{patientSearchResult:json}',\r\n portalSettings: {\r\n hideHeader: false\r\n }\r\n }\r\n };\r\n\r\n AppRoutesProvider.setupAppRoutes(appRoutes);\r\n\r\n $stateProvider\r\n .state(appRoutes.display.state, {\r\n url: appRoutes.display.route,\r\n component: 'display'\r\n });\r\n }]);\r\n","angular.module('display').run(['$templateCache', function($templateCache) {\n 'use strict';\r\n\r\n $templateCache.put('/display/views/display.html',\r\n \"
\\r\" +\r\n \"\\n\" +\r\n \"
\\r\" +\r\n \"\\n\" +\r\n \"\\r\" +\r\n \"\\n\" +\r\n \"
\\r\" +\r\n \"\\n\" +\r\n \" \\r\" +\r\n \"\\n\" +\r\n \"
\\r\" +\r\n \"\\n\" +\r\n \"
{{$ctrl.patient.FirstName + ' ' + $ctrl.patient.LastName}}
\\r\" +\r\n \"\\n\" +\r\n \" \\r\" +\r\n \"\\n\" +\r\n \"
\\r\" +\r\n \"\\n\" +\r\n \"
\\r\" +\r\n \"\\n\" +\r\n \"\\r\" +\r\n \"\\n\" +\r\n \" \\r\" +\r\n \"\\n\" +\r\n \"\\r\" +\r\n \"\\n\" +\r\n \"
\\r\" +\r\n \"\\n\" +\r\n \"
\\r\" +\r\n \"\\n\" +\r\n \"
\\r\" +\r\n \"\\n\" +\r\n \"
\\r\" +\r\n \"\\n\" +\r\n \" \\r\" +\r\n \"\\n\" +\r\n \"
\\r\" +\r\n \"\\n\" +\r\n \"
\\r\" +\r\n \"\\n\" +\r\n \"
\\r\" +\r\n \"\\n\" +\r\n \"
\\r\" +\r\n \"\\n\" +\r\n \"\\r\" +\r\n \"\\n\" +\r\n \"
\\r\" +\r\n \"\\n\" +\r\n \"
\"\r\n );\r\n\n}]);\n","(function(angular) {\r\n 'use strict';\r\n\r\n angular\r\n .module('display')\r\n .component('display', {\r\n bindings: { },\r\n templateUrl: '/display/views/display.html',\r\n controller: [\r\n '$stateParams',\r\n 'aprgettext',\r\n 'BrowserService',\r\n 'DisplayService',\r\n 'FacilityVisitRepository',\r\n 'MultiDownloadModal',\r\n 'toaster',\r\n 'TransitionManager',\r\n 'FacilitySettingsService',\r\n 'LocalStorageRepository',\r\n Display\r\n ],\r\n });\r\n\r\n function Display(\r\n $stateParams,\r\n gettext,\r\n BrowserService,\r\n DisplayService,\r\n FacilityVisitRepository,\r\n MultiDownloadModal,\r\n toaster,\r\n TransitionManager,\r\n FacilitySettingsService,\r\n LocalStorageRepository\r\n ) {\r\n var vm = this;\r\n\r\n vm.currentVisitNoteIndex = null;\r\n vm.documentId = null;\r\n vm.disableInlinePdf = !BrowserService.supportsInlinePdf();\r\n vm.patient = null;\r\n vm.patientName = '';\r\n vm.multiVisit = {\r\n selectedList: [],\r\n sourceList: [],\r\n all: true,\r\n sortBy: 'Date',\r\n patientId: '',\r\n externalId: '',\r\n };\r\n vm.showAttestation = false;\r\n vm.userId = '';\r\n vm.HcIpConfig = null;\r\n\r\n vm.$onInit = $onInit;\r\n vm.backToSearch = backToSearch;\r\n vm.downloadVisit = downloadVisit;\r\n vm.formatDate = formatDate;\r\n vm.getVisit = getVisit;\r\n vm.multiVisitModal = multiVisitModal;\r\n vm.openAttestation = openAttestation;\r\n vm.selectNextNote = selectNextNote;\r\n vm.selectPreviousNote = selectPreviousNote;\r\n vm.selectVisitNote = selectVisitNote;\r\n\r\n var updateUsageMetricDto = {\r\n MetricTypeName: '170.315(e)(1) - View, Download, and Transmit to 3rd Party',\r\n MetricSubTypeName: 'Success',\r\n IncrementFactor: 1,\r\n };\r\n\r\n function $onInit() {\r\n FacilitySettingsService.getHarmonyCaresIP().then(function(harmonyCaresIP) {\r\n vm.HcIpConfig = harmonyCaresIP;\r\n vm.showAttestation = harmonyCaresIP.IsLicensed;\r\n });\r\n\r\n if($stateParams.patientSearchResult) {\r\n vm.patient = $stateParams.patientSearchResult.patient;\r\n }\r\n if(vm.patient) {\r\n vm.patientName = vm.patient.FirstName + ' ' + vm.patient.LastName.substring(0, vm.patient.LastName.length - 2);\r\n vm.documentId = vm.patient.VisitId;\r\n }\r\n \r\n loadVisits();\r\n }\r\n\r\n // called when user clicks search button\r\n function backToSearch() {\r\n TransitionManager.transition({ appRoute: 'home'});\r\n }\r\n\r\n function multiVisitModal() {\r\n vm.multiVisit.sourceList = vm.visitNoteList;\r\n vm.multiVisit.patientId = vm.patient.PatientId;\r\n vm.multiVisit.externalId = vm.patient.ExternalId;\r\n\r\n MultiDownloadModal.openMultiModal(vm.multiVisit)\r\n .then(function(result) {\r\n if(result === 'error') {\r\n toaster.pop('error', '', gettext('An error occurred while downloading visit. Please try again or contact your practice for further assistance.'));\r\n }\r\n if(result === 'success') {\r\n toaster.pop('success', '', gettext('Download successful. Please check your downloads folder for your file.'));\r\n }\r\n });\r\n }\r\n\r\n function openAttestation(){\r\n var url = vm.HcIpConfig.Url;\r\n\r\n if (url) {\r\n window.open(url + '?patientId=' + vm.patient.PatientId + '¤tUserId=' + LocalStorageRepository.getUserID() +'&origin=facilityPortal'+'&visitid=' + vm.documentId, '_blank');\r\n } else {\r\n console.error('URL is undefined');\r\n }\r\n }\r\n\r\n function downloadVisit(documentId) {\r\n var usageMetricSubTypeName = 'Success';\r\n return FacilityVisitRepository.getPdfByVisit(vm.patient.PatientId, documentId)\r\n .catch(function(){\r\n usageMetricSubTypeName = 'Failure';\r\n toaster.pop('error', '', gettext('An error occurred while downloading visit. Please try again or contact your practice for further assistance.'));\r\n })\r\n .finally(function() {\r\n updateUsageMetric(usageMetricSubTypeName);\r\n }); \r\n }\r\n\r\n function formatDate(date) {\r\n return date.format('YYYY-MM-DD');\r\n }\r\n\r\n function getNextNoteIndex() {\r\n if (!vm.visitNoteList || !vm.visitNoteList.length) {\r\n return null;\r\n }\r\n if (!vm.currentVisitNoteIndex && vm.currentVisitNoteIndex !== 0) {\r\n return null;\r\n }\r\n return vm.currentVisitNoteIndex + 1;\r\n }\r\n\r\n function getPreviousNoteIndex() {\r\n if (!vm.visitNoteList || !vm.visitNoteList.length) {\r\n return null;\r\n }\r\n if (!vm.currentVisitNoteIndex && vm.currentVisitNoteIndex !== 0) {\r\n return null;\r\n }\r\n return vm.currentVisitNoteIndex - 1;\r\n }\r\n\r\n function getVisit(documentId) {\r\n return FacilityVisitRepository.getPdfByVisit(vm.patient.PatientId, documentId);\r\n }\r\n\r\n function loadVisits() {\r\n var usageMetricSubTypeName = 'Success';\r\n DisplayService.getOrderedVisitNoteList(vm.patient.PatientId).then(function(orderedVisitNoteList) {\r\n if(orderedVisitNoteList.success) {\r\n vm.visitNoteList = orderedVisitNoteList.data; // ordered by visit date, lease recent to most\r\n\r\n vm.currentVisitNoteIndex = null;\r\n if(vm.visitNoteList && vm.visitNoteList.length) {\r\n for(var i = 0; i < vm.visitNoteList.length; i++) {\r\n if (vm.visitNoteList[i].VisitId === vm.documentId) {\r\n vm.currentVisitNoteIndex = i;\r\n break;\r\n }\r\n }\r\n }\r\n } else {\r\n usageMetricSubTypeName = 'Failure';\r\n toaster.pop('error', '', 'Failed to get Notes');\r\n }\r\n\r\n updateUsageMetric(usageMetricSubTypeName);\r\n });\r\n }\r\n\r\n function selectNextNote() {\r\n var nextIndex = getNextNoteIndex();\r\n if(nextIndex !== null && nextIndex < vm.visitNoteList.length) {\r\n selectVisitNote(nextIndex);\r\n } else {\r\n toaster.warning('This is the last note');\r\n }\r\n }\r\n\r\n function selectPreviousNote() {\r\n var previousIndex = getPreviousNoteIndex();\r\n if(previousIndex !== null && previousIndex >= 0) {\r\n selectVisitNote(previousIndex);\r\n } else {\r\n toaster.warning('This is the first note');\r\n }\r\n }\r\n\r\n // change current visit note to specified index and display\r\n function selectVisitNote(index) {\r\n var visit = vm.visitNoteList[index];\r\n if (visit) {\r\n vm.documentId = visit.VisitId;\r\n vm.currentVisitNoteIndex = index;\r\n }\r\n }\r\n\r\n function updateUsageMetric(metricSubTypeName) {\r\n updateUsageMetricDto.MetricSubTypeName = metricSubTypeName;\r\n FacilityVisitRepository.postUsageMetricUpdate(updateUsageMetricDto);\r\n }\r\n }\r\n})(window.angular);\r\n","(function () {\r\n 'use strict';\r\n\r\n angular\r\n .module('display')\r\n .factory('DisplayService', [\r\n '_',\r\n 'FacilityVisitRepository',\r\n DisplayService\r\n ]);\r\n\r\n function DisplayService(\r\n _,\r\n FacilityVisitRepository\r\n ) {\r\n return {\r\n getOrderedVisitNoteList: getOrderedVisitNoteList,\r\n };\r\n\r\n // returns list of visit notes of patient in the specified time frame ordered by date (least to most recent)\r\n function getOrderedVisitNoteList(patientId) {\r\n return FacilityVisitRepository.getVisitNoteList(patientId)\r\n .then(function(data) {\r\n var visitList = data;\r\n\r\n if(visitList !== null) {\r\n var processedVisitList = [];\r\n _.each(visitList, function(visit) {\r\n processedVisitList.push({\r\n VisitId: visit.VisitId,\r\n Date: moment(visit.Date),\r\n });\r\n });\r\n processedVisitList.sort(function (a, b) {\r\n return b.Date - a.Date;\r\n });\r\n\r\n return {\r\n success: true,\r\n data: processedVisitList,\r\n };\r\n } else{\r\n return visitList;\r\n }\r\n\r\n });\r\n }\r\n }\r\n\r\n})();","angular\r\n .module('home',[\r\n 'app',\r\n 'ngCookies',\r\n 'gettext',\r\n 'restangular',\r\n 'lodash',\r\n\r\n 'aprima-core',\r\n 'aprima-bridge',\r\n 'aprima-config',\r\n 'aprima-legacy-common',\r\n 'aprima-facility-api',\r\n 'aprima-provider-api',\r\n 'aprima-patient-api',\r\n ]);","angular.module('home').config([\r\n 'AppRoutesProvider',\r\n '$stateProvider',\r\n function config(\r\n AppRoutesProvider,\r\n $stateProvider\r\n ) {\r\n 'use strict';\r\n\r\n var appRoutes = {\r\n 'home':{\r\n state: 'home',\r\n route: '/home',\r\n portalSettings: {\r\n hideToolbar: true,\r\n hideHeader : false\r\n }\r\n\r\n }\r\n };\r\n\r\n AppRoutesProvider.setupAppRoutes(appRoutes);\r\n\r\n $stateProvider\r\n .state(appRoutes.home.state, {\r\n url: appRoutes.home.route,\r\n component: 'home'\r\n });\r\n }]);\r\n","angular.module('home').run(['$templateCache', function($templateCache) {\n 'use strict';\r\n\r\n $templateCache.put('/home/views/home.html',\r\n \"\"\r\n );\r\n\n}]);\n","(function() {\r\n 'use strict';\r\n\r\n angular\r\n .module('home')\r\n .component('home', {\r\n bindings: { },\r\n templateUrl: '/home/views/home.html',\r\n controller: [\r\n Home\r\n ],\r\n });\r\n \r\n function Home(\r\n \r\n ) {\r\n var vm = this;\r\n\r\n vm.$onInit = function () {\r\n\r\n };\r\n }\r\n})();","angular\r\n .module('login',[\r\n 'app',\r\n 'ngCookies',\r\n 'gettext',\r\n 'restangular',\r\n 'lodash',\r\n\r\n 'aprima-core',\r\n 'aprima-bridge',\r\n 'aprima-config',\r\n 'aprima-facility-api',\r\n 'aprima-legacy-common',\r\n 'aprima-provider-api',\r\n 'aprima-patient-api'\r\n ]);","angular.module('login').config([\r\n 'AppRoutesProvider',\r\n '$stateProvider',\r\n function config(\r\n AppRoutesProvider,\r\n $stateProvider\r\n ) {\r\n 'use strict';\r\n\r\n var appRoutes = {\r\n 'login':{\r\n state: 'login',\r\n route: '/login',\r\n portalSettings: {\r\n hideToolbar: true,\r\n hideHeader : true,\r\n toolbarItem: 'login'\r\n }\r\n }\r\n };\r\n\r\n AppRoutesProvider.setupAppRoutes(appRoutes);\r\n\r\n $stateProvider\r\n .state(appRoutes.login.state, {\r\n url: appRoutes.login.route,\r\n component: 'login'\r\n });\r\n }]);\r\n","angular.module('login').run(['$templateCache', function($templateCache) {\n 'use strict';\r\n\r\n $templateCache.put('/login/views/login.html',\r\n \"
\\r\" +\r\n \"\\n\" +\r\n \"
\\r\" +\r\n \"\\n\" +\r\n \"
\\r\" +\r\n \"\\n\" +\r\n \"
\\r\" +\r\n \"\\n\" +\r\n \"
\\r\" +\r\n \"\\n\" +\r\n \"
 
\\r\" +\r\n \"\\n\" +\r\n \"
\\r\" +\r\n \"\\n\" +\r\n \"
\\r\" +\r\n \"\\n\" +\r\n \"
\\r\" +\r\n \"\\n\" +\r\n \"
\\r\" +\r\n \"\\n\" +\r\n \"
\\r\" +\r\n \"\\n\" +\r\n \"
\\r\" +\r\n \"\\n\" +\r\n \"
\\r\" +\r\n \"\\n\" +\r\n \" Facility Portal\\r\" +\r\n \"\\n\" +\r\n \"
\\r\" +\r\n \"\\n\" +\r\n \" {{::'Login' | translate}}\\r\" +\r\n \"\\n\" +\r\n \"
\\r\" +\r\n \"\\n\" +\r\n \" {{model.practiceName}}\\r\" +\r\n \"\\n\" +\r\n \"
\\r\" +\r\n \"\\n\" +\r\n \"
\\r\" +\r\n \"\\n\" +\r\n \"
\\r\" +\r\n \"\\n\" +\r\n \"
\\r\" +\r\n \"\\n\" +\r\n \"
\\r\" +\r\n \"\\n\" +\r\n \"
\\r\" +\r\n \"\\n\" +\r\n \"
\\r\" +\r\n \"\\n\" +\r\n \"\\r\" +\r\n \"\\n\" +\r\n \" \\r\" +\r\n \"\\n\" +\r\n \"\\r\" +\r\n \"\\n\" +\r\n \" \\r\" +\r\n \"\\n\" +\r\n \"\\r\" +\r\n \"\\n\" +\r\n \" \\r\" +\r\n \"\\n\" +\r\n \" {{::'Not valid.' | translate}}\\r\" +\r\n \"\\n\" +\r\n \" \\r\" +\r\n \"\\n\" +\r\n \"
\\r\" +\r\n \"\\n\" +\r\n \"\\r\" +\r\n \"\\n\" +\r\n \"
\\r\" +\r\n \"\\n\" +\r\n \" \\r\" +\r\n \"\\n\" +\r\n \"\\r\" +\r\n \"\\n\" +\r\n \" \\r\" +\r\n \"\\n\" +\r\n \" \\r\" +\r\n \"\\n\" +\r\n \" \\r\" +\r\n \"\\n\" +\r\n \" {{::'Enter your password' | translate}}\\r\" +\r\n \"\\n\" +\r\n \" \\r\" +\r\n \"\\n\" +\r\n \" \\r\" +\r\n \"\\n\" +\r\n \" {{::'Not valid.' | translate}}\\r\" +\r\n \"\\n\" +\r\n \" \\r\" +\r\n \"\\n\" +\r\n \"
\\r\" +\r\n \"\\n\" +\r\n \"
\\r\" +\r\n \"\\n\" +\r\n \"
\\r\" +\r\n \"\\n\" +\r\n \"
\\r\" +\r\n \"\\n\" +\r\n \" \\r\" +\r\n \"\\n\" +\r\n \" \\r\" +\r\n \"\\n\" +\r\n \" \\r\" +\r\n \"\\n\" +\r\n \" \\r\" +\r\n \"\\n\" +\r\n \" \\r\" +\r\n \"\\n\" +\r\n \" {{::'Not valid.' | translate}}\\r\" +\r\n \"\\n\" +\r\n \" \\r\" +\r\n \"\\n\" +\r\n \"
\\r\" +\r\n \"\\n\" +\r\n \"
\\r\" +\r\n \"\\n\" +\r\n \" \\r\" +\r\n \"\\n\" +\r\n \" Your login is associated with multiple users. Please select the user you would like to login as.\\r\" +\r\n \"\\n\" +\r\n \" \\r\" +\r\n \"\\n\" +\r\n \"
\\r\" +\r\n \"\\n\" +\r\n \"
\\r\" +\r\n \"\\n\" +\r\n \"
\\r\" +\r\n \"\\n\" +\r\n \" \\r\" +\r\n \"\\n\" +\r\n \" {{::'Login could not be completed.' | translate}}\\r\" +\r\n \"\\n\" +\r\n \" \\r\" +\r\n \"\\n\" +\r\n \"\\r\" +\r\n \"\\n\" +\r\n \"
\\r\" +\r\n \"\\n\" +\r\n \" \\r\" +\r\n \"\\n\" +\r\n \" {{$ctrl.errorMessage | translate}}\\r\" +\r\n \"\\n\" +\r\n \" \\r\" +\r\n \"\\n\" +\r\n \"
\\r\" +\r\n \"\\n\" +\r\n \"
\\r\" +\r\n \"\\n\" +\r\n \"
\\r\" +\r\n \"\\n\" +\r\n \" \\r\" +\r\n \"\\n\" +\r\n \"
\\r\" +\r\n \"\\n\" +\r\n \"
\\r\" +\r\n \"\\n\" +\r\n \"
\\r\" +\r\n \"\\n\" +\r\n \"
\\r\" +\r\n \"\\n\" +\r\n \"
\\r\" +\r\n \"\\n\" +\r\n \"
\\r\" +\r\n \"\\n\" +\r\n \"
\\r\" +\r\n \"\\n\" +\r\n \"
\\r\" +\r\n \"\\n\" +\r\n \"
\\r\" +\r\n \"\\n\" +\r\n \"
\\r\" +\r\n \"\\n\" +\r\n \" \\r\" +\r\n \"\\n\" +\r\n \"
\\r\" +\r\n \"\\n\" +\r\n \"
\\r\" +\r\n \"\\n\" +\r\n \"
\\r\" +\r\n \"\\n\" +\r\n \"
\\r\" +\r\n \"\\n\" +\r\n \"
\\r\" +\r\n \"\\n\"\r\n );\r\n\n}]);\n","(function() {\r\n 'use strict';\r\n angular.module('login')\r\n .component('login', {\r\n bindings: {},\r\n templateUrl: '/login/views/login.html',\r\n controller: [\r\n '$rootScope',\r\n 'Bridge',\r\n 'configuration',\r\n 'ContentAttributeService',\r\n 'FacilitySettingsService',\r\n 'GatewayFactory',\r\n 'gettext',\r\n 'LocalStorageRepository',\r\n 'FpSearchService',\r\n 'SessionService',\r\n 'TransitionManager',\r\n 'MultipleUserAccountsError',\r\n Login\r\n ],\r\n });\r\n\r\n function Login(\r\n $rootScope,\r\n Bridge,\r\n configuration,\r\n ContentAttributeService,\r\n FacilitySettingsService,\r\n GatewayFactory,\r\n gettext,\r\n LocalStorageRepository,\r\n FpSearchService,\r\n SessionService,\r\n TransitionManager,\r\n MultipleUserAccountsError\r\n ) {\r\n var vm = this;\r\n vm.errorMessage = '';\r\n vm.submitted = false;\r\n vm.loading = false;\r\n vm.loadingAssistance = false;\r\n vm.loginAssistanceInfo = null;\r\n vm.model = {};\r\n vm.practiceName = null;\r\n vm.selectUserMode = false;\r\n\r\n vm.$onInit = $onInit;\r\n vm.login = login;\r\n\r\n function $onInit() {\r\n vm.model = {\r\n clientID: LocalStorageRepository.getClientID() || '0',\r\n username: LocalStorageRepository.getUserName() || '',\r\n userId: LocalStorageRepository.getUserID() || null,\r\n password: '',\r\n gateway: null,\r\n };\r\n\r\n vm.gateways = _.map(_.cloneDeep(configuration.GATEWAYS), function(g) {\r\n g.display = g.prefix + ' - ' + g.url;\r\n return g;\r\n });\r\n\r\n if(!configuration.DEV_HOSTED) {\r\n ContentAttributeService.getClientConfig()\r\n .then(function(data) {\r\n var oldClientId = LocalStorageRepository.getClientID();\r\n var newClientId = data.clientId;\r\n if(oldClientId !== newClientId) {\r\n LocalStorageRepository.clearAll();\r\n }\r\n LocalStorageRepository.setClientURL(data.hostUrl);\r\n LocalStorageRepository.setClientID(newClientId);\r\n vm.model.clientID = newClientId;\r\n })\r\n .catch(function() {\r\n vm.errorMessage = gettext('Error loading page. Unknown Client Id');\r\n Bridge.createModalAlert({\r\n title: gettext('Loading Error'),\r\n message: vm.errorMessage,\r\n buttons: [gettext('Okay')]\r\n });\r\n });\r\n }\r\n }\r\n\r\n function login() {\r\n vm.errorMessage = null;\r\n vm.loading = true; // turns on loading symbol\r\n var userId = vm.selectUserMode ? vm.model.userId : null;\r\n GatewayFactory.login(vm.model.clientID, vm.model.username, vm.model.password, vm.model.gateway ? vm.model.gateway.prefix : null, userId)\r\n .then(function() {\r\n FacilitySettingsService.getSettings(true)\r\n .then(function (data) {\r\n if (data && data.UserSetting){\r\n FpSearchService.clearLastSearch();\r\n if (SessionService.getNewPasswordRequired() === true) {\r\n TransitionManager.transition({appRoute: 'changepassword'});\r\n }\r\n else {\r\n $rootScope.$broadcast('IdleStartWatch');\r\n TransitionManager.transition({\r\n appRoute: 'home'\r\n });\r\n }\r\n }\r\n else {\r\n vm.errorMessage = 'Facility portal settings invalid,\\n contact practice';\r\n }\r\n })\r\n .catch( function(err) {\r\n vm.errorMessage = err.message;\r\n Bridge.createModalAlert({\r\n title: gettext('Facility portal settings invalid,\\n contact practice'),\r\n message: err.message,\r\n buttons: [gettext('Okay')]\r\n });\r\n });\r\n })\r\n .catch(function(err) {\r\n if(err instanceof MultipleUserAccountsError) {\r\n vm.selectUserMode = true;\r\n vm.userOptions = err.userOptions;\r\n }\r\n else {\r\n vm.errorMessage = err.message;\r\n\r\n Bridge.createModalAlert({\r\n title: gettext('Login Error'),\r\n message: err.message,\r\n buttons: [gettext('Okay')]\r\n });\r\n }\r\n })\r\n .finally(function() {\r\n vm.loading = false;\r\n });\r\n }\r\n }\r\n})();","angular.module('login').factory('LoginService',\r\n ['LocalStorageRepository',\r\n '$q',\r\n '$location',\r\n function(\r\n LocalStorageRepository,\r\n $q,\r\n $location) {\r\n 'use strict';\r\n\r\n function getClientConfig(){\r\n var url = $location.absUrl();\r\n var splitResult = url.toLowerCase().split('/portal/');\r\n if (splitResult.length === 2) {\r\n var hostUrl = splitResult[0];\r\n var clientIdResult = splitResult[1].split('/');\r\n var clientId = clientIdResult[0];\r\n var clientConfig = {\r\n ClientId: clientId,\r\n HostUrl: hostUrl\r\n };\r\n return $q.when(clientConfig);\r\n\r\n } else {\r\n\r\n return $q.when(false);\r\n }\r\n }\r\n\r\n return {\r\n getClientConfig: getClientConfig\r\n };\r\n\r\n }]);","angular.module('all', [\r\n 'ngFacilityPortal',\r\n 'account',\r\n 'app',\r\n 'display',\r\n 'home',\r\n 'login',\r\n 'ngIdle',\r\n 'ui.bootstrap',\r\n\r\n 'aprima-legacy-common',\r\n 'aprima-provider-api',\r\n 'aprima-core-ui',\r\n 'aprima-patient-api',\r\n 'aprima-utils'\r\n]);","angular.module('all').run([ 'CustomModuleRunService', function(CustomModuleRunService) {\r\n 'use strict';\r\n CustomModuleRunService.add(\r\n [ '$log','$rootScope', 'AppRoutes', '_', 'Idle', 'LogOffService','$transitions', 'TransitionManager',\r\n function ($log, $rootScope, AppRoutes, _, Idle, LogOffService, $transitions, TransitionManager) {\r\n\r\n $rootScope.hideToolbar = true;\r\n $rootScope.hideHeader = false;\r\n\r\n $transitions.onStart({}, function(transition) {\r\n var appRoute = _.find(AppRoutes, {state: transition.to().name});\r\n $rootScope.hideHeader = !!(appRoute && appRoute.portalSettings && appRoute.portalSettings.hideHeader);\r\n $rootScope.hideFooter = !!(appRoute && appRoute.portalSettings && appRoute.portalSettings.hideFooter);\r\n $rootScope.loginView = !!(appRoute && appRoute.state && appRoute.state === 'login');\r\n if (!$rootScope.loginView) {\r\n $rootScope.$broadcast('IdleStartWatch');\r\n }\r\n });\r\n\r\n// ng-idle event listeners\r\n// Please see 'modules\\app\\app.js' for application timeout configuration and documentation.\r\n//\r\n// IdleTimeout - logout logic is implemented here\r\n $rootScope.$on('IdleTimeout', function () {\r\n $log.info('Idle timeout has expired. Logging client out and transitioning to login view. ' + moment().format('lll'));\r\n\r\n // Has watch() been called and is watching for idleness\r\n if (Idle.running()) {\r\n Idle.unwatch(); // stop watching for idleness\r\n }\r\n\r\n\r\n // Call log off service and go back to login view\r\n LogOffService.logoff().then(function () {\r\n TransitionManager.transition({appRoute: 'login'});\r\n });\r\n });\r\n\r\n // IdleStartWatch - startup logic is implemented here\r\n $rootScope.$on('IdleStartWatch', function() {\r\n Idle.watch(); // start watching for idleness. $broadcast() is located in LoginCtrl.js\r\n });\r\n }]);\r\n }]);","angular.module('all').config(['$urlRouterProvider', '$urlServiceProvider', 'AppRoutesProvider',\r\n function ($urlRouterProvider, $urlServiceProvider, AppRoutesProvider) {\r\n\r\n 'use strict';\r\n\r\n var appRoutes = AppRoutesProvider.getAppRoutes();\r\n\r\n $urlRouterProvider\r\n .when('', appRoutes.login.route)\r\n .when('/', appRoutes.login.route);\r\n\r\n $urlServiceProvider.deferIntercept();\r\n }\r\n]\r\n);\r\n"]}