{"version":3,"sources":["../../src/legacy-common/module.js","../../src/legacy-common/app.js","../../src/legacy-common/configuration/app.config.http.js","../../src/legacy-common/configuration/app.config.rootScope.js","../../src/legacy-common/configuration/app.config.translate.js","../../src/legacy-common/configuration/app.config.views.js","../../src/legacy-common/configuration/momentSetup.js","../../src/legacy-common/configuration/RestangularAbortable.js","../../src/legacy-common/decorators/AprimaExceptionHandler.js","../../src/legacy-common/filters/apPatientThumbnailSrc.js","../../src/legacy-common/filters/apPersonThumbnailSrc.js","../../src/legacy-common/services/AprimaRestangular.js","../../src/legacy-common/services/AuthorizationService.js","../../src/legacy-common/services/debugLogService.js","../../src/legacy-common/services/ErrorService.js","../../src/legacy-common/services/LanguageFactory.js","../../src/legacy-common/services/ListNavigationService.js","../../src/legacy-common/services/LocalStorageRepository.js","../../src/legacy-common/services/LogoffService.js","../../src/legacy-common/services/navigation/AppointmentTransitionToHelper.js","../../src/legacy-common/services/navigation/AppRoutes.js","../../src/legacy-common/services/navigation/MessageTransitionToHelper.js","../../src/legacy-common/services/NoteTypeRepository.js","../../src/legacy-common/services/promises/%24qHelpers.js","../../src/legacy-common/services/promises/HttpAbortableContext.js","../../src/legacy-common/services/security/Permissions.js","../../src/legacy-common/services/security/SecurityRepository.js","../../src/legacy-common/services/TileGroup.js"],"names":["angular","module","value","window","moment","messageTypes","LabResultMessageGuid","TaskMessageGuid","PortalAppointmentQuestionMessageGuid","PortalBillingQuestionMessageGuid","PortalDemographicsQuestionMessageGuid","PortalGeneralQuestionMessageGuid","PortalRxQuestionMessageGuid","PhoneMessageGuid","LabMessageGuid","AttachmentApprovalGuid","ServiceOrderApprovalMessageGuid","RxRefillRequestMessageGuid","PatientRxRefillRequestMessageGuid","PharmacyRefillRequestMessageGuid","RxRefillAndErxRequestMessageGuid","SupportedMessageTypesForCreate","Types","id","requiredFeature","SubTypes","appointmentScheduleTypes","PatientVisit","name","Event","BlockingEvent","GroupVisit","List","_","values","constant","listData","default","run","CustomModuleRunService","add","$rootScope","ErrorService","RequestTypes","$transitions","requestTypes","addHttpError","httpResponse","messages","type","isAborted","addHttpErrorToScope","this","removeHttpError","removeHttpErrorFromScope","setupDirectiveScope","$scope","onSuccess","TransitionManager","AprimaAnalytics","DeviceSettings","toaster","goBack","sendEvent","isEmpty","obj","isPhone","isPhoneOrOverride","isTablet","isTabletOrOverride","isBrowser","isBrowserOrOverride","tryToastModelStateError","response","modelState","ModelState","data","commandResult","forEach","e","pop","factory","gettextCatalog","text","getString","$uibModalStack","dismissAll","momentSetup","fn","removeOffset","utcOffset","utc","formatRemoveOffset","format","startOfDate","startOf","toDate","Restangular","HttpAbortableContext","$qHelpers","abortableFields","wrapCallsToRestangularizedElement","restangularizedElement","promiseInterceptor","functions","key","elementFn","wrappedKey","result","apply","arguments","isPromise","setRestangularFields","setOnElemRestangularized","element","isCollection","route","restangularObject","configuration","isRestangularized","promisesToAbort","promise","abortPromises","abortableContext","httpConfig","restangularFields","defaults","timeout","abortPromise","wrap","config","$provide","decorator","$delegate","$injector","ApErrorHandler","exception","cause","message","get","handleError","sendException","ex","filter","patientId","height","width","url","ServerInfoRepository","personId","isFeatureSupported","$log","Bridge","BrowserService","debugLogService","LocalStorageRepository","LogOffService","alwaysIgnoreCache","debugModeValue","getSupportedFeatures","endpointBase","options","isString","ignoreCache","isLegacyIE","debugMode","withConfig","RestangularConfigurer","clientUrl","getClientURL","Error","urlComponents","replace","SERVER_API_VERSION","baseUrl","c","isNull","join","setBaseUrl","headers","Auth-Token","getJsonWebToken","ApiKey","API_KEY","fireEvent","Pragma","Expires","Date","setDefaultHeaders","debugModeFeature","features","isArray","supportedFeatures","intersection","length","addFullRequestInterceptor","operation","what","_5","parameters","toLowerCase","getDebugMode","params","assignIn","t","toJSON","debug","levels","addResponseInterceptor","log","JSON","stringify","setErrorInterceptor","status","logoffFromUnauthorizedResponse","errorCode","parseInt","getUrl","parent","disableCaching","CurrentUser","isUserProvider","user","permissions","IsProvider","icd10User","ICD10User","disableDebugMode","enableDebugMode","gettext","convertToErrorMessages","displayErrorMessages","error","asHtml","errors","err","title","body","bodyOutputType","scope","reason","responseMessage","unhandled","httpError","hasOwnProperty","push","getGenericError","flatMap","validationResult","ValidationResult","IsValid","Errors","ErrorMessage","statusText","genericError","Message","setLang","language","currentLanguage","$filter","cachedEnumerators","activeItems","buildAndCacheEnumerator","enumeratorName","list","orderPredicate","transitionFunction","enumerator","buildEnumerator","setActiveItemById","getEnumerator","callbackFunction","info","currentIndex","item","indexOf","next","lookupIndex","canGoNext","currentItem","previous","first","last","moveToNextItem","moveToPreviousItem","moveToFirstItem","moveToLastItem","moveToItem","Exception","canGoPrevious","getNavStatus","canGoForward","canGoBack","i","Id","toArray","oldIndex","arr","hydrateListNavigationProperties","settings","phone","modes","headerValue","requiresNavSettings","listNavigationProperties","tablet","setAsBridgeHandler","on","navigationType","registerActiveItemForList","listType","itemId","deregisterActiveItemForList","setActiveItemByIdForEnumerator","storage","WebCommonStorageRepository","clearAll","getIsActiveDirectoryUser","setIsActiveDirectoryUser","getClientID","getClientId","setClientID","setClientId","getNotificationTimeout","setNotificationTimeout","set","setIdentityHint","getIdentityHint","getClientUrl","setClientURL","setClientUrl","getGatewayUrl","setGatewayUrl","setJsonWebToken","jwt","removeJsonWebToken","setUserName","username","getUserName","setBirthDate","birthDate","getBirthDate","setAccessCode","statementId","getAccessCode","setUserFullName","getUserFullName","removeUserName","remove","setUserID","userid","setUserId","getUserID","getUserId","getIsPatient","setIsPatient","isPatient","removeUserID","removeUserId","lang","getLang","setDefaultSuperbillSubmissionMethod","methodId","getDefaultSuperbillSubmissionMethod","setKey","keyType","keyDictionary","activeKeys","split","includes","getKey","k","removeKey","setPatientDashboardWidgets","widget","getPatientDashboardWidgets","setPatientDashboardConfigurations","newList","removePatientDashboardWidgets","getPatientDashboardConfigurations","removePatientDashboardConfigurations","getDashboardTileSettings","setDashboardTileSettings","setDefaultDashboardTileSettings","getAppointmentsListSettings","setAppointmentsListSettings","setDefaultAppointmentsListSettings","getMessagesListSettings","setMessagesListSettings","setDefaultMessagesListSettings","getAppointmentsBadgeSettings","setAppointmentsBadgeSettings","setDefaultAppointmentsBadgeSettings","getDefaultServiceSiteId","setDefaultServiceSiteId","serviceSiteId","getDeviceId","setDeviceId","deviceId","getPhoneMessageGeneralNoteTypeId","setPhoneMessageGeneralNoteTypeId","getTaskMessageGeneralNoteTypeId","setTaskMessageGeneralNoteTypeId","getPharmacyGeneralNoteTypeId","setPharmacyGeneralNoteTypeId","getPortalMessageGeneralNoteTypeId","setPortalMessageGeneralNoteTypeId","getRxRefillMessageGeneralNoteTypeId","setRxRefillMessageGeneralNoteTypeId","getPharmacyRefillMessageGeneralNoteTypeId","setPharmacyRefillMessageGeneralNoteTypeId","getPatientVitalsDefaultSettingId","setPatientVitalsDefaultSettingId","getMedicationOverrideGeneralNoteTypeId","setMedicationOverrideGeneralNoteTypeId","getCurrentUserLicenses","setCurrentUserLicenses","licenses","getIsERxEnabled","setIsERxEnabled","enabled","getAllowImperialUnits","setAllowImperialUnits","allowed","getApplicationVersion","setApplicationVersion","version","getUserPermissions","setUserPermissions","getAskedUserForTouchID","setAskedUserForTouchID","prompt","getUserEnabledTouchID","setUserEnabledTouchID","getOncePerLoginChartConsent","setOncePerLoginChartConsent","clearKeysOfType","clearSessionStorage","clearOldVersionCache","setIsCacheUser","$q","LogOffServiceTs","logoff","when","apFilterFeature","AppointmentScheduleTypes","routes","view","edit","getTransition","apptScheduleType","calendarId","apptId","filteredRoutes","transition","opts","lowerScheduleType","property","appRoute","patientid","provider","appRoutes","findByStateName","stateName","find","getAppRoutes","state","findKeyByStateName","findKey","setupAppRoutes","newAppRoutes","$get","MessageTypes","getTransitionForMessage","messageTypeId","messageId","messageSubTypeId","createNew","merge","lowerMessageTypeId","lowerMessageSubTypeId","SystemGuid","supportedTabs","UIControl_Note_CC","UIControl_Note_CCHPI","UIControl_Note_Confidential","UIControl_Note_DX","UIControl_Note_DXDSM","UIControl_Note_GeneralNote","UIControl_Note_HPI","UIControl_Note_HX","UIControl_Note_PE","UIControl_Note_Plan","UIControl_Note_Results","UIControl_Note_ROS","UIControl_Note_ROSPE","UIControl_Note_RX","UIControl_Note_SO","UIControl_Note_SP","UIControl_Note_VisitText","UIControl_Note_Vitals","supportedSliders","isNoteTabsSupported","note","isNil","noteTabs","map","Tabs","isNoteSlidersSupported","noteSliders","Sliders","isNoteTypeSupported","$timeout","whenFirstSuccess","promises","deferred","defer","results","resolved","rejectionFlagValue","tryResolveToFirstSuccess","index","undefined","resolve","reject","then","time","timeoutPromise","catch","finally","cancel","delay","abortablePromise","isFunction","previousPromises","shouldRejectOnAbort","once","msg","abort","shouldAbort","replaceChainFnsWithAbortableFns","chainFnKey","wrappedFn","noop","chained","previousPromiseToAbort","abortDeferred","abortedError","assign","Schedule","FullNoteComposer","StrikeoutVisits","PermissionService","getPermissions","permissionName","getPermissionsJs","AprimaCache","groupStates","userPreference","allExpanded","allCollapsed","tileGroupName","storageType","disablePersistence","setupTile","tileId","defaultValue","forceDefault","tile","tiles","isCollapsed","groupState","persist","save","toggle","nextState","updateTiles","changeConfiguration","getName","setPersistence","enable","cache","getOrCreateOverride","storagePrefix","setStorageMode","put","newValue","val"],"mappings":"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","file":"aprima-legacy-common.min.js","sourcesContent":["angular.module('aprima-legacy-common', [\r\n 'ui.router',\r\n 'restangular',\r\n 'ngTouch',\r\n 'ngAnimate',\r\n 'ui.bootstrap',\r\n 'angularLocalStorage',\r\n 'gettext',\r\n 'lodash',\r\n 'toaster',\r\n 'rt.debounce',\r\n 'hmTouchEvents',\r\n\r\n //aprima\r\n 'aprima-core',\r\n 'aprima-bridge',\r\n 'aprima-config'\r\n]);","angular.module('aprima-legacy-common').value('moment', window.moment);\r\n\r\n(function() {\r\n 'use strict';\r\n\r\n var messageTypes = {\r\n LabResultMessageGuid: '',\r\n TaskMessageGuid: '10101010-0000-0000-0000-000000000005',\r\n PortalAppointmentQuestionMessageGuid: 'fd4e2c5d-29c6-4a51-bd20-551d6ed90843',\r\n PortalBillingQuestionMessageGuid: '73366ba8-0149-47e0-875b-cb12bb4cb250',\r\n PortalDemographicsQuestionMessageGuid: 'dffb40d0-2318-41a9-8eef-94c58babb9b9',\r\n PortalGeneralQuestionMessageGuid: '9af1089b-e98b-4758-80f8-0435b143426d',\r\n PortalRxQuestionMessageGuid: 'e94b7146-407d-4f92-a393-de8429b7bfbf',\r\n PhoneMessageGuid: '10101010-0000-0000-0000-000000000003',\r\n LabMessageGuid: 'f05f9c71-a893-46c3-a7fe-37988f48a782',\r\n AttachmentApprovalGuid: '10101010-0000-0000-0000-000000000002',\r\n ServiceOrderApprovalMessageGuid: '10101010-0000-0000-0000-000000000008',\r\n\r\n // These refill message types still need to be handled to keep compatibility with older versions of PRM\r\n // where they are still commonly used.\r\n // Also, there still could be messages of this type in the database even in newer versions of PRM that were created\r\n // before the upgrade where this new message type below was introduced.\r\n // We may want to handle these differently at some point\r\n RxRefillRequestMessageGuid: '136d8762-82ec-487d-9448-f52469a3cdcd',\r\n PatientRxRefillRequestMessageGuid: 'b1b7d286-1fb2-43d0-a883-7946b1cd8751',\r\n PharmacyRefillRequestMessageGuid: 'd7716f70-61d6-4ec0-8ba6-01afc95e99f2',\r\n\r\n // This is the new message type that was recently created.\r\n // Description: Messages of this type are created by the user as part of the manual and electronic Rx Refill workflow.\r\n // Also, currently the patient portal rx refill request messages are a subtype of this message type.\r\n RxRefillAndErxRequestMessageGuid: 'eb31df6b-3685-4639-81f6-026f6278e1dc',\r\n };\r\n\r\n messageTypes.SupportedMessageTypesForCreate = {\r\n Types: [{id: messageTypes.TaskMessageGuid}, {id: messageTypes.PhoneMessageGuid, requiredFeature: 'PhoneMessageCreation'}],\r\n SubTypes: [{id: messageTypes.PortalGeneralQuestionMessageGuid}]\r\n };\r\n\r\n var appointmentScheduleTypes = {\r\n PatientVisit: {\r\n id: 'patientvisit',\r\n name: 'Patient Visit'\r\n },\r\n Event: {\r\n id: 'event',\r\n name: 'Event',\r\n requiredFeature: 'Appointments_DifferentScheduleTypes'\r\n },\r\n BlockingEvent: {\r\n id: 'blockingevent',\r\n name: 'Blocking Event',\r\n requiredFeature: 'Appointments_DifferentScheduleTypes'\r\n },\r\n GroupVisit: {\r\n id: 'groupvisit',\r\n name: 'Group Visit',\r\n requiredFeature: 'Appointments_DifferentScheduleTypes'\r\n }\r\n };\r\n appointmentScheduleTypes.List = _.values(appointmentScheduleTypes);\r\n\r\n var requestTypes = {\r\n listData: 'listData',\r\n default: 'default'\r\n };\r\n\r\n angular.module('aprima-legacy-common').constant('MessageTypes', messageTypes);\r\n angular.module('aprima-legacy-common').constant('AppointmentScheduleTypes', appointmentScheduleTypes);\r\n angular.module('aprima-legacy-common').constant('RequestTypes', requestTypes);\r\n})();","angular.module('aprima-legacy-common').run(['CustomModuleRunService', function(CustomModuleRunService) {\r\n 'use strict';\r\n CustomModuleRunService.add(['$rootScope', 'ErrorService', 'RequestTypes', '$transitions', function ($rootScope, ErrorService, RequestTypes, $transitions) {\r\n\r\n $rootScope.requestTypes = RequestTypes;\r\n\r\n $rootScope.addHttpError = function (httpResponse, messages, type) {\r\n var innerScope = this;\r\n\r\n if(!httpResponse.isAborted) {\r\n return ErrorService.addHttpErrorToScope(innerScope, httpResponse, messages, type);\r\n }\r\n\r\n return httpResponse;\r\n };\r\n\r\n $rootScope.removeHttpError = function (type) {\r\n var innerScope = this;\r\n return ErrorService.removeHttpErrorFromScope(innerScope, type);\r\n };\r\n\r\n $rootScope.setupDirectiveScope = function setupDirectiveScope($scope) {\r\n $scope.addHttpError = $rootScope.addHttpError;\r\n $scope.removeHttpError = $rootScope.removeHttpError;\r\n };\r\n\r\n $transitions.onSuccess({}, function removeHttpErrors() {\r\n //http errors were being persisted between page views and caused valid pages to be rendered as if they had an http error\r\n $rootScope.removeHttpError();\r\n });\r\n\r\n}]);}]);\r\n","angular.module('aprima-legacy-common').run(['CustomModuleRunService', function(CustomModuleRunService) {\r\n 'use strict';\r\n CustomModuleRunService.add(\r\n ['$rootScope', 'TransitionManager', 'AprimaAnalytics', 'DeviceSettings', '_', 'toaster',\r\n function ($rootScope, TransitionManager, AprimaAnalytics, DeviceSettings, _, toaster) {\r\n\r\n $rootScope.goBack = function () {\r\n TransitionManager.goBack();\r\n AprimaAnalytics.sendEvent('user', 'click', 'back button');\r\n };\r\n\r\n $rootScope.isEmpty = function (obj) {\r\n return _.isEmpty(obj);\r\n };\r\n\r\n $rootScope.isPhone = DeviceSettings.isPhoneOrOverride;\r\n $rootScope.isTablet = DeviceSettings.isTabletOrOverride;\r\n $rootScope.isBrowser = DeviceSettings.isBrowserOrOverride;\r\n\r\n $rootScope.tryToastModelStateError = function tryToastModelStateError(response) {\r\n var modelState = response.ModelState || (response.data && response.data.ModelState);\r\n\r\n if(modelState && modelState.commandResult) {\r\n _(modelState.commandResult).forEach(function(e){\r\n toaster.pop('error', '', e);\r\n });\r\n }\r\n };\r\n }]);\r\n}]);\r\n","angular.module('aprima-legacy-common').factory('aprgettext', ['gettextCatalog', function (gettextCatalog) {\r\n 'use strict';\r\n\r\n //This is a hack. gettext can extract strings from js files much like it can from html files.\r\n //To do this it searches for code that looks like \"gettext('....')\" and extracts the string.\r\n //gettext() however simple returns the string, and doesn't actually translate the string.\r\n //To do this, you have to pass that string to gettextCatalog.getString(), but that prevents\r\n //it from being extracted by the grunt task. The official usage is:\r\n //var translated = gettextCatalog.getString(gettext('Some String'));\r\n //but this usage is overly verbose.\r\n //This hack makes it so that you can use it like:\r\n //var translated = gettext('Some String');\r\n\r\n //When taking a dependency on this, make sure the variable is named 'gettext' and not 'apr_gettext'\r\n\r\n //usage of this should be limited. Most code should be in views. This is useful when calling window.alert\r\n //or toaster.pop();\r\n //todo we should review this and see if anybody has a better solution.\r\n return function (text) {\r\n return gettextCatalog.getString(text);\r\n };\r\n}]);\r\n","angular.module('aprima-legacy-common').run(['CustomModuleRunService', function(CustomModuleRunService) {\r\n 'use strict';\r\n CustomModuleRunService.add(['$transitions', '$uibModalStack', function ($transitions, $uibModalStack) {\r\n\r\n $transitions.onSuccess({}, function dismissAllModals() {\r\n $uibModalStack.dismissAll('pageTransition');\r\n });\r\n }]);\r\n}]);\r\n\r\n","(function(angular) {\r\n 'use strict';\r\n\r\n angular.module('aprima-legacy-common').run(['CustomModuleRunService', customRun]);\r\n\r\n function customRun(CustomModuleRunService) {\r\n CustomModuleRunService.add([\r\n 'moment',\r\n momentSetup,\r\n ]);\r\n }\r\n\r\n function momentSetup(\r\n moment\r\n ) {\r\n moment.fn.removeOffset = function removeOffset() {\r\n return this.add(this.utcOffset(), 'minutes').utc();\r\n };\r\n\r\n // the previous logic was this:\r\n // moment(date).add(-moment(date).zone(), 'minutes').toDate().toJSON();\r\n // OR\r\n // moment(date).add(moment(date).utcOffset(), 'minutes').toDate().toJSON();\r\n moment.fn.formatRemoveOffset = function formatRemoveOffset() {\r\n return this.removeOffset().format();\r\n };\r\n\r\n\r\n moment.fn.startOfDate = function() {\r\n return this.startOf('day').toDate();\r\n };\r\n }\r\n\r\n})(window.angular);\r\n","// Adds abortable and aborts functions to all Restangularized Elements globally\r\n// usage examples:\r\n// Restangular.one('route1').abortable().get() => returns AbortablePromise\r\n// Restangular.all('route3').abortable().put() => returns AbortablePromise\r\n// AprimaRestangular.get().one('route2').abortable(abortablePromise1).get() => aborts abortablePromise1, returns AbortablePromise\r\n// Restangular.all('route4').abortable(abortablePromiseList).put() => aborts all promises in abortablePromiseList, returns AbortablePromise\r\n// etc. you get the picture\r\nangular.module('aprima-legacy-common').run(['CustomModuleRunService', function(CustomModuleRunService) {\r\n 'use strict';\r\n CustomModuleRunService.add(\r\n ['Restangular', '_', 'HttpAbortableContext', '$qHelpers', function(Restangular, _, HttpAbortableContext, $qHelpers) {\r\n\r\n var abortableFn = 'abortable';\r\n var abortsFn = 'aborts';\r\n var abortableFields = {};\r\n abortableFields[abortableFn] = abortableFn;\r\n abortableFields[abortsFn] = abortsFn;\r\n //add these as RestangularFields, so that way they will stripped out correctly when calling .plain()\r\n Restangular.setRestangularFields(abortableFields);\r\n Restangular.setOnElemRestangularized(makeElementRequestAbortable);\r\n\r\n function makeElementRequestAbortable(element, isCollection, route, restangularObject) {\r\n if(element && restangularObject.configuration.isRestangularized(element)) {\r\n // aborts passed in promises after sending out request\r\n element[abortsFn] = function(promisesToAbort) {\r\n wrapCallsToRestangularizedElement(this, function(promise) {\r\n $qHelpers.abortPromises(promisesToAbort);\r\n return promise;\r\n });\r\n return this;\r\n };\r\n\r\n // aborts passed in promises after sending out request, and returns an abortable promise\r\n element[abortableFn] = function(promisesToAbort) {\r\n var abortableContext = new HttpAbortableContext(promisesToAbort);\r\n var httpConfig = restangularObject.configuration.restangularFields.httpConfig;\r\n \r\n // withHttpConfig needs to be called before this, so it doesn't get overwritten\r\n this[httpConfig] = _.defaults(this[httpConfig], {timeout: abortableContext.abortPromise});\r\n wrapCallsToRestangularizedElement(this, abortableContext.wrap);\r\n return this;\r\n };\r\n }\r\n return element;\r\n }\r\n \r\n // ideally would use setRestangularizePromiseInterceptor instead of this but it doesn't expect a return value,\r\n // it only allows you to mutate the promise, not wrap it and return a new one like we are doing here\r\n function wrapCallsToRestangularizedElement(restangularizedElement, promiseInterceptor) {\r\n _(restangularizedElement)\r\n .functions()\r\n .forEach(function(key) {\r\n var elementFn = restangularizedElement[key];\r\n var wrappedKey = '_' + key;\r\n restangularizedElement[wrappedKey] = restangularizedElement[wrappedKey] || elementFn;\r\n\r\n restangularizedElement[key] = function() {\r\n var result = elementFn.apply(this, arguments);\r\n\r\n if ($qHelpers.isPromise(result)) {\r\n result = promiseInterceptor(result);\r\n }\r\n\r\n return result;\r\n };\r\n });\r\n\r\n return restangularizedElement;\r\n }\r\n }]);\r\n}]);\r\n","angular.module('aprima-legacy-common').config(['$provide', function($provide) {\r\n 'use strict';\r\n $provide.decorator('$exceptionHandler', ['$delegate', '$injector', function($delegate, $injector) {\r\n var ApErrorHandler;\r\n var AprimaAnalytics;\r\n\r\n return function customExceptionHandler(exception, cause) {\r\n var message = exception.message + ' (caused by \"' + cause + '\")';\r\n try {\r\n ApErrorHandler = ApErrorHandler || $injector.get('ApErrorHandler');\r\n if (ApErrorHandler) {\r\n ApErrorHandler.handleError(exception);\r\n return;\r\n }\r\n\r\n AprimaAnalytics = AprimaAnalytics || $injector.get('AprimaAnalytics');\r\n AprimaAnalytics.sendException(message);\r\n }\r\n catch(ex) { }\r\n $delegate(exception, cause);\r\n };\r\n }]);\r\n}]);\r\n","angular.module('aprima-legacy-common').filter('apPatientThumbnailSrc', [function () {\r\n 'use strict';\r\n return function (patientId, height, width) {\r\n if(!patientId) {\r\n // if the patientId is null or undefined, return undefined because a valid url can't be formed\r\n // and undefined can be handled accordingly\r\n return;\r\n }\r\n\r\n if(height && !width) {\r\n width = height;\r\n }\r\n\r\n var url = 'patients/' + patientId + '/thumbnail';\r\n\r\n if(height) {\r\n url += '?height=' + height + '&width=' + width;\r\n }\r\n\r\n return url;\r\n };\r\n}]);\r\n","(function() {\r\n 'use strict';\r\n angular.module('aprima-legacy-common').filter('apPersonThumbnailSrc', [\r\n 'ServerInfoRepository',\r\n apPersonThumbnailSrc\r\n ]);\r\n\r\n function apPersonThumbnailSrc(\r\n ServerInfoRepository\r\n ) {\r\n return function (personId, height, width) {\r\n if (!personId || !ServerInfoRepository.isFeatureSupported([ 'PersonPhoto' ])) {\r\n // return undefined because a valid url can't be formed\r\n // and undefined can be handled accordingly\r\n return;\r\n }\r\n\r\n if (height && !width) {\r\n width = height;\r\n }\r\n\r\n var url = 'persons/' + personId + '/thumbnail';\r\n\r\n if (height) {\r\n url += '?height=' + height + '&width=' + width;\r\n }\r\n\r\n return url;\r\n };\r\n }\r\n})();\r\n","angular.module('aprima-legacy-common').factory('AprimaRestangular',\r\n [\r\n '$log',\r\n '_',\r\n 'Bridge',\r\n 'BrowserService',\r\n 'configuration',\r\n 'debugLogService',\r\n 'LocalStorageRepository',\r\n 'Restangular',\r\n 'LogOffService',\r\n function(\r\n $log,\r\n _,\r\n Bridge,\r\n BrowserService,\r\n configuration,\r\n debugLogService,\r\n LocalStorageRepository,\r\n Restangular,\r\n LogOffService\r\n ) {\r\n\r\n 'use strict';\r\n\r\n var alwaysIgnoreCache = false;\r\n var debugModeValue = LocalStorageRepository.getSupportedFeatures();\r\n\r\n //to ignore the cache, you can call this like .get({ignoreCache: true}); or .get('baseurl', {ignoreCache: true});\r\n var get = function(endpointBase, options) {\r\n if (!_.isString(endpointBase) && !options) {\r\n options = endpointBase;\r\n endpointBase = null;\r\n }\r\n\r\n options = _.defaults(options || {}, {\r\n ignoreCache: BrowserService.isLegacyIE(),\r\n debugMode: false\r\n });\r\n\r\n var restangular = Restangular.withConfig(function(RestangularConfigurer) {\r\n\r\n var clientUrl = LocalStorageRepository.getClientURL();\r\n if (!clientUrl) {\r\n throw new Error('Cannot send request (configuration error): empty ClientURL');\r\n }\r\n\r\n var urlComponents = [\r\n clientUrl.replace(/\\/$/, ''),\r\n 'api',\r\n endpointBase ? endpointBase : '',\r\n configuration.SERVER_API_VERSION\r\n ];\r\n\r\n var baseUrl = _.filter(urlComponents, function(c) {\r\n return !_.isNull(c) && !_.isEmpty(c);\r\n }).join('/');\r\n\r\n RestangularConfigurer.setBaseUrl(baseUrl);\r\n\r\n var headers = {\r\n 'Auth-Token': LocalStorageRepository.getJsonWebToken(),\r\n 'ApiKey': configuration.API_KEY\r\n };\r\n\r\n if (options.ignoreCache) {\r\n Bridge.fireEvent('clear-cache', {});\r\n\r\n headers['Cache-Control'] = 'no-cache, no-store, must-revalidate';\r\n headers.Pragma = 'no-cache';\r\n headers.Expires = new Date();\r\n }\r\n\r\n RestangularConfigurer.setDefaultHeaders(headers);\r\n\r\n var isFeatureSupported = function(features) {\r\n\r\n if (!angular.isArray(features)) {\r\n features = [features];\r\n }\r\n\r\n var supportedFeatures = debugModeValue;\r\n\r\n var matchedValues = _.intersection(features, supportedFeatures);\r\n\r\n return matchedValues.length === features.length;\r\n };\r\n\r\n var debugModeFeature = isFeatureSupported('DebuggerFeature');\r\n\r\n if (debugModeFeature) {\r\n\r\n RestangularConfigurer.addFullRequestInterceptor(function(element, operation, what, url, _5, parameters) {\r\n if (alwaysIgnoreCache && operation.toLowerCase() === 'get', 'put', 'post', 'delete') {\r\n if (debugLogService.getDebugMode()) {\r\n return {\r\n params: _.assignIn(parameters, {\r\n t: new Date().toJSON(),\r\n debug: true, //passing debug parameters\r\n levels: 'info,debug,fatal,warn,error'\r\n })\r\n\r\n };\r\n }\r\n }\r\n return element;\r\n });\r\n\r\n //displaying information from the response headers if debugMode is true and status=200\r\n RestangularConfigurer.addResponseInterceptor(function(data, operation, what, url, response/* ,deferred*/) {\r\n if (operation === 'get', 'post', 'put', 'delete') {\r\n if (debugLogService.getDebugMode()) {\r\n $log.log('URL:', url);\r\n $log.log('WHAT:', what);\r\n $log.log('THE HEADERS ARE:', JSON.stringify(response.headers(), null, 2));\r\n\r\n }\r\n }\r\n return data;\r\n });\r\n }\r\n\r\n else {\r\n RestangularConfigurer.addFullRequestInterceptor(function(element, operation, what, url, _5, parameters) {\r\n if (alwaysIgnoreCache && operation.toLowerCase() === 'get') {\r\n return {\r\n params: _.assignIn(parameters, {\r\n t: new Date().toJSON(),\r\n\r\n })\r\n };\r\n }\r\n\r\n return element;\r\n });\r\n }\r\n\r\n RestangularConfigurer.setErrorInterceptor(function(response) {\r\n if (response.status === 401) {\r\n LogOffService.logoffFromUnauthorizedResponse();\r\n }\r\n\r\n //displaying the exception information if debugMode is true and status!=200\r\n else if (debugModeFeature && response.status !== 200) {\r\n if (debugLogService.getDebugMode()) {\r\n $log.log('THE EXCEPTION INFORMATION:', JSON.stringify(response.headers(), null, 2));\r\n\r\n }\r\n }\r\n\r\n if (response.data && response.data.ModelState) {\r\n var errorCode = response.data.ModelState['commandResult-ErrorCode'];\r\n\r\n //errorCode is a string coming from the server. a value of '0' is not falsy.\r\n if (errorCode) {\r\n response.errorCode = parseInt(errorCode);\r\n }\r\n }\r\n\r\n //allows promises to receive these errors\r\n return true;\r\n });\r\n });\r\n\r\n return restangular;\r\n };\r\n\r\n function getUrl(endpointBase, parent){\r\n var urlComponents = [\r\n LocalStorageRepository.getClientURL(),\r\n 'api',\r\n endpointBase ? endpointBase : '',\r\n configuration.SERVER_API_VERSION,\r\n parent\r\n ];\r\n\r\n var baseUrl = _.filter(urlComponents, function(c){\r\n return !_.isNull(c) && !_.isEmpty(c);\r\n }).join('/');\r\n\r\n\r\n var headers = {\r\n 'Auth-Token': LocalStorageRepository.getJsonWebToken(),\r\n 'ApiKey': configuration.API_KEY\r\n };\r\n\r\n return [baseUrl, headers];\r\n\t\t\t}\r\n\r\n return {\r\n get: get,\r\n\t\t\t\tgetUrl: getUrl,\r\n disableCaching: function () {\r\n alwaysIgnoreCache = true;\r\n }\r\n };\r\n }]);\r\n\r\n","(function(angular) {\r\n 'use strict';\r\n\r\n angular.module('aprima-legacy-common').factory('AuthorizationService', [\r\n 'CurrentUser',\r\n 'ServerInfoRepository',\r\n AuthorizationService\r\n ]);\r\n\r\n function AuthorizationService(\r\n CurrentUser,\r\n ServerInfoRepository\r\n ) {\r\n\r\n return {\r\n isUserProvider : isUserProvider,\r\n icd10User: isIcd10User,\r\n };\r\n\r\n function isUserProvider() {\r\n if(ServerInfoRepository.isFeatureSupported('ProviderAuthorization')){\r\n var user = CurrentUser.get();\r\n\r\n // Right now apAuthorization uses this in apPatientContextMenu to determine whether or not to allow the user to add a charge capture.\r\n // In PRM, the permissions aren't filled in, so we can't determine right now whether they are a provider currently with CurrentUser service.\r\n // At least this won't null ref now though:\r\n // This will handle legacy case where it has the string value 'True', or\r\n // the newer case where it is actually bool true\r\n return user.permissions && (user.permissions.IsProvider === 'True' || user.permissions.IsProvider === true);\r\n }\r\n\r\n return true;\r\n }\r\n\r\n function isIcd10User() {\r\n var user = CurrentUser.get();\r\n // This will handle legacy case where it has the string value 'True', or\r\n // the newer case where it is actually bool true\r\n return user.permissions && (user.permissions.ICD10User === 'True' || user.permissions.ICD10User === true);\r\n }\r\n }\r\n\r\n})(window.angular);\r\n","angular.module('aprima-legacy-common').factory('debugLogService',[function( ){\r\n'use strict';\r\nvar debugMode = false;\r\nreturn {\r\n disableDebugMode : function () {\r\n debugMode = false; \r\n },\r\n enableDebugMode : function(){\r\n debugMode = true;\r\n },\r\n getDebugMode : function() {\r\n return debugMode;\r\n }\r\n \r\n\r\n};\r\n }]);","(function(angular) {\r\n 'use strict';\r\n\r\n angular.module('aprima-legacy-common').factory('ErrorService', [\r\n '_',\r\n 'aprgettext',\r\n 'RequestTypes',\r\n 'toaster',\r\n ErrorService,\r\n ]);\r\n\r\n function ErrorService(\r\n _,\r\n gettext,\r\n RequestTypes,\r\n toaster\r\n ) {\r\n\r\n return {\r\n convertToErrorMessages: convertToErrorMessages,\r\n displayErrorMessages: displayErrorMessages,\r\n addHttpErrorToScope: addHttpErrorToScope,\r\n removeHttpErrorFromScope: removeHttpErrorFromScope,\r\n };\r\n\r\n // This can't be moved to Angular because it's relying on translations being returned synchronously.\r\n function convertToErrorMessages(error) {\r\n var errors = [];\r\n\r\n if (!error) {\r\n errors.push(getGenericError());\r\n return errors;\r\n }\r\n\r\n if(_.isString(error)) {\r\n errors.push(error);\r\n return errors;\r\n }\r\n\r\n var modelState = (error.data && error.data.ModelState) || error.ModelState;\r\n if (modelState) {\r\n _(modelState)\r\n .flatMap(function(value) {\r\n return value || [];\r\n })\r\n .forEach(function (err) {\r\n errors.push(gettext(err));\r\n });\r\n\r\n if (errors.length) {\r\n return errors;\r\n }\r\n }\r\n\r\n var validationResult = (error.data && error.data.ValidationResult) || error.ValidationResult;\r\n if (validationResult && !validationResult.IsValid) {\r\n _(validationResult.Errors)\r\n .forEach(function (err) {\r\n errors.push(gettext(err.ErrorMessage));\r\n });\r\n\r\n if (errors.length) {\r\n return errors;\r\n }\r\n }\r\n\r\n if (error.status && error.statusText) {\r\n errors.push(gettext('An error has occurred. Status: ' + error.status + ': ' + error.statusText));\r\n }\r\n else {\r\n var genericError = getGenericError();\r\n if(error.Message) {\r\n genericError += ' ' + error.Message;\r\n }\r\n errors.push(genericError);\r\n }\r\n return errors;\r\n }\r\n\r\n function displayErrorMessages(error, asHtml) {\r\n var errors = _.isArray(error) ? error : convertToErrorMessages(error);\r\n\r\n errors.forEach(function (err) {\r\n toaster.pop({\r\n type: 'error',\r\n title: '',\r\n body: err,\r\n bodyOutputType: asHtml ? 'trustedHtml' : '',\r\n });\r\n });\r\n\r\n return errors;\r\n }\r\n\r\n function getGenericError() {\r\n return gettext('An error has occurred and the process cannot be completed.');\r\n }\r\n\r\n function addHttpErrorToScope(scope, httpResponse, messages, type) {\r\n var error = { type: type || RequestTypes.default };\r\n var key = 'is' + httpResponse.status;\r\n error[key] = true;\r\n error.reason = messages && messages[key];\r\n\r\n if (httpResponse.status === 403) {\r\n error.responseMessage = httpResponse.headers()['reason-phrase'];\r\n }\r\n else {\r\n error.unhandled = true;\r\n }\r\n\r\n error.reason = error.reason || error.responseMessage;\r\n\r\n scope.httpError = error;\r\n\r\n return error;\r\n }\r\n\r\n function removeHttpErrorFromScope(scope, type) {\r\n //only remove it if on this specific scope. This avoids nulling in higher level scopes\r\n //only remove matching types of httpError's\r\n if (scope.hasOwnProperty('httpError') && scope.httpError && ((!type && scope.httpError.type === RequestTypes.default) || scope.httpError.type === type)) {\r\n scope.httpError = null;\r\n }\r\n }\r\n }\r\n\r\n})(window.angular);\r\n","angular.module('aprima-legacy-common').factory(\r\n 'LanguageFactoryJs', ['gettextCatalog', function LanguageFactory(gettextCatalog) {\r\n\r\n 'use strict';\r\n\r\n function setLang(language) {\r\n gettextCatalog.currentLanguage = language;\r\n }\r\n\r\n return {\r\n setLang: setLang,\r\n };\r\n }]);\r\n","angular.module('aprima-legacy-common').\r\n factory('ListNavigationService', ['$log', '$filter', 'Bridge',\r\n function ($log, $filter, Bridge) {\r\n 'use strict';\r\n\r\n var cachedEnumerators = [];\r\n var activeItems = [];\r\n\r\n var registerActiveItemForList = function (listType, itemId, settings, $scope) {\r\n var enumerator = this.getEnumerator(listType);\r\n\r\n if(enumerator){\r\n enumerator.setActiveItemById(itemId);\r\n this.hydrateListNavigationProperties(listType, settings);\r\n this.setAsBridgeHandler(listType, $scope);\r\n }\r\n\r\n activeItems[listType] = itemId;\r\n };\r\n\r\n var deregisterActiveItemForList = function (listType, itemId) {\r\n if (activeItems[listType] && activeItems[listType] === itemId) {\r\n activeItems[listType] = null;\r\n }\r\n };\r\n\r\n //orderPredicate can be prefixed with a '+' or '-' to change the direction of the sort. '+' is ascending and the default.\r\n //'-' is descending\r\n var buildAndCacheEnumerator = function (enumeratorName, list, orderPredicate, transitionFunction) {\r\n var filter = $filter('orderBy');\r\n\r\n var enumerator = this.buildEnumerator(filter(list, orderPredicate), transitionFunction);\r\n\r\n cachedEnumerators[enumeratorName] = enumerator;\r\n\r\n if (activeItems[enumeratorName]) {\r\n enumerator.setActiveItemById(activeItems[enumeratorName]);\r\n }\r\n\r\n return enumerator;\r\n };\r\n\r\n var setActiveItemByIdForEnumerator = function (enumeratorName, id) {\r\n var enumerator = cachedEnumerators[enumeratorName];\r\n if (enumerator) {\r\n enumerator.setActiveItemById(id);\r\n }\r\n };\r\n\r\n var getEnumerator = function (enumeratorName) {\r\n return cachedEnumerators[enumeratorName];\r\n };\r\n\r\n var hydrateListNavigationProperties = function (enumeratorName, settings) {\r\n var enumerator = cachedEnumerators[enumeratorName];\r\n\r\n if (enumerator) {\r\n angular.forEach(settings.phone.modes, function (value) {\r\n angular.forEach(value.headers, function (headerValue) {\r\n if (headerValue.requiresNavSettings) {\r\n headerValue.listNavigationProperties = enumerator.getNavStatus();\r\n }\r\n });\r\n });\r\n\r\n angular.forEach(settings.tablet.modes, function (value) {\r\n angular.forEach(value.headers, function (headerValue) {\r\n if (headerValue.requiresNavSettings) {\r\n headerValue.listNavigationProperties = enumerator.getNavStatus();\r\n }\r\n });\r\n });\r\n }\r\n };\r\n\r\n var setAsBridgeHandler = function (enumeratorName, $scope) {\r\n var enumerator = cachedEnumerators[enumeratorName];\r\n\r\n if (enumerator) {\r\n Bridge.on('navigate-item', $scope, function (data) {\r\n switch (data.navigationType) {\r\n case 'next':\r\n enumerator.moveToNextItem();\r\n break;\r\n case 'previous':\r\n enumerator.moveToPreviousItem();\r\n break;\r\n default:\r\n break;\r\n }\r\n });\r\n }\r\n };\r\n\r\n var buildEnumerator = function (list, callbackFunction) {\r\n $log.info('enumerator built');\r\n\r\n var currentIndex = -1;\r\n\r\n var transitionFunction = function (item) {\r\n currentIndex = list.indexOf(item);\r\n\r\n if (callbackFunction) {\r\n callbackFunction(item);\r\n }\r\n };\r\n\r\n var next = function () {\r\n var lookupIndex;\r\n\r\n if (currentIndex !== -1) {\r\n if (currentIndex === (list.length - 1)) {\r\n return null;\r\n }\r\n else {\r\n lookupIndex = currentIndex + 1;\r\n }\r\n }\r\n else {\r\n if (list.length === 0) {\r\n return null;\r\n }\r\n lookupIndex = 0;\r\n }\r\n\r\n return list[lookupIndex];\r\n };\r\n\r\n var previous = function () {\r\n var lookupIndex;\r\n\r\n if (currentIndex !== -1) {\r\n if (currentIndex === 0) {\r\n return null;\r\n }\r\n else {\r\n lookupIndex = currentIndex - 1;\r\n }\r\n }\r\n else {\r\n if (list.length === 0) {\r\n return null;\r\n }\r\n\r\n lookupIndex = list.length - 1;\r\n }\r\n\r\n return list[lookupIndex];\r\n };\r\n\r\n var first = function () {\r\n if (list.length === 0) {\r\n return null;\r\n }\r\n\r\n return list[0];\r\n };\r\n\r\n var last = function () {\r\n if (list.length === 0) {\r\n return null;\r\n }\r\n\r\n return list[list.length - 1];\r\n };\r\n\r\n var moveToNextItem = function () {\r\n var next = this.next();\r\n\r\n if (next) {\r\n transitionFunction(next);\r\n }\r\n };\r\n\r\n var moveToPreviousItem = function () {\r\n var previous = this.previous();\r\n\r\n if (previous) {\r\n transitionFunction(previous);\r\n }\r\n };\r\n\r\n var moveToFirstItem = function () {\r\n transitionFunction(this.first());\r\n };\r\n\r\n var moveToLastItem = function () {\r\n transitionFunction(this.last());\r\n };\r\n\r\n var moveToItem = function (item) {\r\n var indexOf = list.indexOf(item);\r\n\r\n if (indexOf >= 0) {\r\n currentIndex = indexOf;\r\n transitionFunction(item);\r\n }\r\n else {\r\n throw new Exception('Cannot move to item as it does not exist in the list.');\r\n }\r\n };\r\n\r\n var setActiveItemById = function (id) {\r\n for (var i = 0; i <= list.length - 1; i++) {\r\n if (list[i].Id === id) {\r\n currentIndex = i;\r\n break;\r\n }\r\n }\r\n };\r\n\r\n var canGoNext = function () {\r\n return (currentIndex !== -1) && (currentIndex !== (list.length - 1));\r\n };\r\n\r\n var canGoPrevious = function () {\r\n return (currentIndex !== -1) && (currentIndex !== 0);\r\n };\r\n\r\n var getNavStatus = function () {\r\n return {\r\n canGoForward: this.canGoNext(),\r\n canGoBack: this.canGoPrevious()\r\n };\r\n };\r\n\r\n var currentItem = function () {\r\n if (currentIndex !== -1) {\r\n return list[currentIndex];\r\n }\r\n else {\r\n return null;\r\n }\r\n };\r\n\r\n var toArray = function() {\r\n var oldIndex = currentIndex;\r\n var arr = [];\r\n currentIndex = 0;\r\n\r\n if(currentItem()) {\r\n arr.push(currentItem());\r\n }\r\n\r\n while(canGoNext()){\r\n arr.push(next());\r\n currentIndex++;\r\n }\r\n\r\n currentIndex = oldIndex;\r\n return arr;\r\n };\r\n\r\n return {\r\n next: next,\r\n previous: previous,\r\n first: first,\r\n last: last,\r\n moveToNextItem: moveToNextItem,\r\n moveToPreviousItem: moveToPreviousItem,\r\n moveToFirstItem: moveToFirstItem,\r\n moveToLastItem: moveToLastItem,\r\n moveToItem: moveToItem,\r\n canGoNext: canGoNext,\r\n canGoPrevious: canGoPrevious,\r\n getNavStatus: getNavStatus,\r\n setActiveItemById: setActiveItemById,\r\n currentItem: currentItem,\r\n toArray: toArray\r\n };\r\n };\r\n\r\n return {\r\n buildAndCacheEnumerator: buildAndCacheEnumerator,\r\n getEnumerator: getEnumerator,\r\n buildEnumerator: buildEnumerator,\r\n hydrateListNavigationProperties: hydrateListNavigationProperties,\r\n setAsBridgeHandler: setAsBridgeHandler,\r\n registerActiveItemForList: registerActiveItemForList,\r\n deregisterActiveItemForList: deregisterActiveItemForList,\r\n setActiveItemByIdForEnumerator: setActiveItemByIdForEnumerator\r\n };\r\n }]);","angular.module('aprima-legacy-common').factory('LocalStorageRepository',\r\n ['storage', '_', 'WebCommonStorageRepository',\r\n function (storage, _, WebCommonStorageRepository) {\r\n 'use strict';\r\n\r\n return {\r\n\r\n clearAll: function () {\r\n WebCommonStorageRepository.clearAll();\r\n },\r\n\r\n getIsActiveDirectoryUser: function() {\r\n return WebCommonStorageRepository.getIsActiveDirectoryUser();\r\n },\r\n \r\n setIsActiveDirectoryUser: function(value) {\r\n WebCommonStorageRepository.setIsActiveDirectoryUser(value);\r\n },\r\n\r\n getClientID: function () {\r\n return WebCommonStorageRepository.getClientId();\r\n },\r\n\r\n setClientID: function (value) {\r\n WebCommonStorageRepository.setClientId(value);\r\n },\r\n\r\n getNotificationTimeout: function () {\r\n return storage.get('notificationTimeout');\r\n },\r\n\r\n setNotificationTimeout: function (value) {\r\n storage.set('notificationTimeout', value);\r\n },\r\n\r\n setIdentityHint: function (value) {\r\n storage.set('identityHint', value);\r\n },\r\n \r\n getIdentityHint: function () {\r\n return storage.get('identityHint');\r\n },\r\n\r\n getClientURL: function () {\r\n return WebCommonStorageRepository.getClientUrl();\r\n },\r\n\r\n setClientURL: function (value) {\r\n WebCommonStorageRepository.setClientUrl(value);\r\n },\r\n\r\n getGatewayUrl: function () {\r\n return WebCommonStorageRepository.getGatewayUrl();\r\n },\r\n\r\n setGatewayUrl: function (value) {\r\n WebCommonStorageRepository.setGatewayUrl(value);\r\n },\r\n\r\n setJsonWebToken: function (jwt) {\r\n WebCommonStorageRepository.setJsonWebToken(jwt);\r\n },\r\n getJsonWebToken: function () {\r\n return WebCommonStorageRepository.getJsonWebToken();\r\n },\r\n\r\n removeJsonWebToken: function () {\r\n WebCommonStorageRepository.removeJsonWebToken();\r\n },\r\n\r\n setUserName: function (username) {\r\n WebCommonStorageRepository.setUserName(username);\r\n },\r\n getUserName: function () {\r\n return WebCommonStorageRepository.getUserName();\r\n },\r\n\r\n setBirthDate: function (birthDate) {\r\n storage.set('birthDate', birthDate);\r\n },\r\n\r\n getBirthDate: function () {\r\n return storage.get('birthDate');\r\n },\r\n\r\n setAccessCode: function (statementId) {\r\n storage.set('accessCode', statementId);\r\n },\r\n\r\n getAccessCode: function () {\r\n return storage.get('accessCode');\r\n },\r\n\r\n setUserFullName: function (name) {\r\n WebCommonStorageRepository.setUserFullName(name);\r\n },\r\n\r\n getUserFullName: function () {\r\n return WebCommonStorageRepository.getUserFullName();\r\n },\r\n\r\n removeUserName: function () {\r\n storage.remove('userName');\r\n },\r\n\r\n setUserID: function (userid) {\r\n WebCommonStorageRepository.setUserId(userid);\r\n },\r\n\r\n getUserID: function () {\r\n return WebCommonStorageRepository.getUserId();\r\n },\r\n\r\n getIsPatient: function () {\r\n return storage.get('isPatient');\r\n },\r\n\r\n setIsPatient: function (isPatient) {\r\n storage.set('isPatient', isPatient);\r\n },\r\n\r\n getSupportedFeatures: function () {\r\n return storage.get('apiSupportedFeatures');\r\n },\r\n removeUserID: function () {\r\n WebCommonStorageRepository.removeUserId();\r\n },\r\n\r\n setLang: function (lang) {\r\n WebCommonStorageRepository.setLang(lang);\r\n },\r\n\r\n getLang: function () {\r\n return WebCommonStorageRepository.getLang();\r\n },\r\n\r\n setDefaultSuperbillSubmissionMethod: function (methodId) {\r\n WebCommonStorageRepository.setDefaultSuperbillSubmissionMethod(methodId);\r\n },\r\n\r\n getDefaultSuperbillSubmissionMethod: function() {\r\n return WebCommonStorageRepository.getDefaultSuperbillSubmissionMethod();\r\n },\r\n\r\n setKey: function (key, value, keyType) {\r\n storage.set(key, value);\r\n\r\n if(keyType){\r\n var activeKeys = storage.get(keyType + 'keys');\r\n var keyDictionary;\r\n\r\n if(activeKeys){\r\n keyDictionary = activeKeys.split(',');\r\n }\r\n else{\r\n keyDictionary = [];\r\n }\r\n\r\n if(!_.includes(keyDictionary, key)){\r\n keyDictionary.push(key);\r\n storage.set(keyType + 'keys', keyDictionary.join(','));\r\n }\r\n }\r\n },\r\n\r\n getKey: function (key, keyType) {\r\n var k = storage.get(key);\r\n\r\n // This can be removed after 1 release with it in there. It just needs to be there to build up the initial list.\r\n if(keyType){\r\n var activeKeys = storage.get(keyType + 'keys');\r\n var keyDictionary;\r\n\r\n if(activeKeys){\r\n keyDictionary = activeKeys.split(',');\r\n }\r\n else{\r\n keyDictionary = [];\r\n }\r\n\r\n if(!_.includes(keyDictionary, key)){\r\n keyDictionary.push(key);\r\n storage.set(keyType + 'keys', keyDictionary.join(','));\r\n }\r\n }\r\n\r\n return k;\r\n },\r\n\r\n removeKey: function (key) {\r\n storage.remove(key);\r\n },\r\n setPatientDashboardWidgets: function (widget) {\r\n WebCommonStorageRepository.setPatientDashboardWidgets(widget);\r\n },\r\n\r\n getPatientDashboardWidgets: function () {\r\n return WebCommonStorageRepository.getPatientDashboardWidgets();\r\n },\r\n setPatientDashboardConfigurations: function (newList, type) {\r\n WebCommonStorageRepository.setPatientDashboardConfigurations(newList, type);\r\n },\r\n\r\n removePatientDashboardWidgets: function () {\r\n WebCommonStorageRepository.removePatientDashboardWidgets();\r\n },\r\n\r\n getPatientDashboardConfigurations: function (type) {\r\n return WebCommonStorageRepository.getPatientDashboardConfigurations(type);\r\n },\r\n\r\n removePatientDashboardConfigurations: function (type) {\r\n WebCommonStorageRepository.removePatientDashboardConfigurations(type);\r\n },\r\n\r\n getDashboardTileSettings: function () {\r\n return WebCommonStorageRepository.getDashboardTileSettings();\r\n },\r\n setDashboardTileSettings: function (settings) {\r\n WebCommonStorageRepository.setDashboardTileSettings(settings);\r\n },\r\n setDefaultDashboardTileSettings: function (settings) {\r\n WebCommonStorageRepository.setDefaultDashboardTileSettings(settings);\r\n },\r\n\r\n getAppointmentsListSettings: function () {\r\n return WebCommonStorageRepository.getAppointmentsListSettings();\r\n },\r\n setAppointmentsListSettings: function (settings) {\r\n WebCommonStorageRepository.setAppointmentsListSettings(settings);\r\n },\r\n setDefaultAppointmentsListSettings: function (settings) {\r\n WebCommonStorageRepository.setDefaultAppointmentsListSettings(settings);\r\n },\r\n\r\n getMessagesListSettings: function () {\r\n return WebCommonStorageRepository.getMessagesListSettings();\r\n },\r\n setMessagesListSettings: function (settings) {\r\n WebCommonStorageRepository.setMessagesListSettings(settings);\r\n },\r\n setDefaultMessagesListSettings: function (settings) {\r\n WebCommonStorageRepository.setDefaultMessagesListSettings(settings);\r\n },\r\n\r\n getAppointmentsBadgeSettings: function () {\r\n return WebCommonStorageRepository.getAppointmentsBadgeSettings();\r\n },\r\n setAppointmentsBadgeSettings: function (settings) {\r\n WebCommonStorageRepository.setAppointmentsBadgeSettings(settings);\r\n },\r\n setDefaultAppointmentsBadgeSettings: function (settings) {\r\n WebCommonStorageRepository.setDefaultAppointmentsBadgeSettings(settings);\r\n },\r\n\r\n getDefaultServiceSiteId: function() {\r\n return WebCommonStorageRepository.getDefaultServiceSiteId();\r\n },\r\n\r\n setDefaultServiceSiteId: function(serviceSiteId) {\r\n WebCommonStorageRepository.setDefaultServiceSiteId(serviceSiteId);\r\n },\r\n\r\n getDeviceId: function () {\r\n return WebCommonStorageRepository.getDeviceId();\r\n },\r\n\r\n setDeviceId: function (deviceId) {\r\n WebCommonStorageRepository.setDeviceId(deviceId);\r\n },\r\n\r\n getPhoneMessageGeneralNoteTypeId: function () {\r\n return WebCommonStorageRepository.getPhoneMessageGeneralNoteTypeId();\r\n },\r\n setPhoneMessageGeneralNoteTypeId: function (id) {\r\n WebCommonStorageRepository.setPhoneMessageGeneralNoteTypeId(id);\r\n },\r\n\r\n getTaskMessageGeneralNoteTypeId: function () {\r\n return WebCommonStorageRepository.getTaskMessageGeneralNoteTypeId();\r\n },\r\n setTaskMessageGeneralNoteTypeId: function (id) {\r\n WebCommonStorageRepository.setTaskMessageGeneralNoteTypeId(id);\r\n },\r\n\r\n getPharmacyGeneralNoteTypeId: function () {\r\n return WebCommonStorageRepository.getPharmacyGeneralNoteTypeId();\r\n },\r\n setPharmacyGeneralNoteTypeId: function (id) {\r\n WebCommonStorageRepository.setPharmacyGeneralNoteTypeId(id);\r\n },\r\n\r\n getPortalMessageGeneralNoteTypeId : function () {\r\n return WebCommonStorageRepository.getPortalMessageGeneralNoteTypeId();\r\n },\r\n setPortalMessageGeneralNoteTypeId : function (id) {\r\n WebCommonStorageRepository.setPortalMessageGeneralNoteTypeId(id);\r\n },\r\n\r\n getRxRefillMessageGeneralNoteTypeId : function () {\r\n return WebCommonStorageRepository.getRxRefillMessageGeneralNoteTypeId();\r\n },\r\n setRxRefillMessageGeneralNoteTypeId : function (id) {\r\n WebCommonStorageRepository.setRxRefillMessageGeneralNoteTypeId(id);\r\n },\r\n\r\n getPharmacyRefillMessageGeneralNoteTypeId : function () {\r\n return WebCommonStorageRepository.getPharmacyRefillMessageGeneralNoteTypeId();\r\n },\r\n setPharmacyRefillMessageGeneralNoteTypeId : function (id) {\r\n WebCommonStorageRepository.setPharmacyRefillMessageGeneralNoteTypeId(id);\r\n },\r\n\r\n getPatientVitalsDefaultSettingId: function () {\r\n return WebCommonStorageRepository.getPatientVitalsDefaultSettingId();\r\n },\r\n setPatientVitalsDefaultSettingId: function (id) {\r\n WebCommonStorageRepository.setPatientVitalsDefaultSettingId(id);\r\n },\r\n\r\n getMedicationOverrideGeneralNoteTypeId : function () {\r\n return WebCommonStorageRepository.getMedicationOverrideGeneralNoteTypeId();\r\n },\r\n setMedicationOverrideGeneralNoteTypeId : function (id) {\r\n WebCommonStorageRepository.setMedicationOverrideGeneralNoteTypeId(id);\r\n },\r\n\r\n getCurrentUserLicenses: function getCurrentUserLicenses() {\r\n return WebCommonStorageRepository.getCurrentUserLicenses();\r\n },\r\n setCurrentUserLicenses: function setCurrentUserLicenses(licenses) {\r\n WebCommonStorageRepository.setCurrentUserLicenses(licenses);\r\n },\r\n\r\n getIsERxEnabled: function () {\r\n return WebCommonStorageRepository.getIsERxEnabled();\r\n },\r\n setIsERxEnabled: function (enabled) {\r\n WebCommonStorageRepository.setIsERxEnabled(enabled);\r\n },\r\n\r\n getAllowImperialUnits: function () {\r\n return WebCommonStorageRepository.getAllowImperialUnits();\r\n },\r\n setAllowImperialUnits: function (allowed) {\r\n WebCommonStorageRepository.setAllowImperialUnits(allowed);\r\n },\r\n\r\n getApplicationVersion: function(){\r\n return WebCommonStorageRepository.getApplicationVersion();\r\n },\r\n setApplicationVersion: function(version){\r\n WebCommonStorageRepository.setApplicationVersion(version);\r\n },\r\n getUserPermissions: function(){\r\n return WebCommonStorageRepository.getUserPermissions();\r\n },\r\n setUserPermissions: function(permissions){\r\n WebCommonStorageRepository.setUserPermissions(permissions);\r\n },\r\n getAskedUserForTouchID: function() {\r\n return storage.get('askedUserForTouchID');\r\n },\r\n setAskedUserForTouchID: function(prompt) {\r\n storage.set('askedUserForTouchID', prompt);\r\n },\r\n getUserEnabledTouchID: function() {\r\n return storage.get('userEnabledTouchID');\r\n },\r\n setUserEnabledTouchID: function(enabled) {\r\n storage.set('userEnabledTouchID', enabled);\r\n },\r\n getOncePerLoginChartConsent: function() {\r\n return storage.get('OncePerLoginChartConsent');\r\n },\r\n setOncePerLoginChartConsent: function(enabled) {\r\n storage.set('OncePerLoginChartConsent', enabled);\r\n },\r\n\r\n clearKeysOfType: function(keyType){\r\n WebCommonStorageRepository.clearKeysOfType(keyType);\r\n },\r\n\r\n clearSessionStorage: function(){\r\n clearKeysOfType('list');\r\n clearKeysOfType('metadata');\r\n },\r\n\r\n clearOldVersionCache: function(){\r\n WebCommonStorageRepository.clearOldVersionCache();\r\n },\r\n\r\n setIsCacheUser: function(value){\r\n storage.set('settings.iscacheuser', value);\r\n }\r\n };\r\n }]);\r\n","angular.module('aprima-legacy-common').factory('LogOffService',\r\n ['$q', 'LogOffServiceTs',\r\n function ($q, LogOffServiceTs) {\r\n 'use strict';\r\n\r\n return {\r\n logoff: logoff,\r\n logoffFromUnauthorizedResponse: logoffFromUnauthorizedResponse,\r\n };\r\n\r\n function logoff() {\r\n var promise = LogOffServiceTs.logoff();\r\n return $q.when(promise);\r\n }\r\n\r\n function logoffFromUnauthorizedResponse() {\r\n LogOffServiceTs.logoffFromUnauthorizedResponse();\r\n }\r\n }]);\r\n","angular.module('aprima-legacy-common').factory('AppointmentTransitionToHelper',\r\n ['apFilterFeatureFilter', 'AppointmentScheduleTypes', function (apFilterFeature, AppointmentScheduleTypes) {\r\n 'use strict';\r\n\r\n var routes = {};\r\n routes[AppointmentScheduleTypes.PatientVisit.id] = {\r\n view: 'appointment',\r\n edit: 'editAppointment',\r\n add: 'addAppointment',\r\n requiredFeature: AppointmentScheduleTypes.PatientVisit.requiredFeature\r\n };\r\n routes[AppointmentScheduleTypes.GroupVisit.id] = {\r\n view: 'groupAppointment',\r\n edit: 'editGroupAppointment',\r\n add: 'addGroupAppointment',\r\n requiredFeature: AppointmentScheduleTypes.GroupVisit.requiredFeature\r\n };\r\n routes[AppointmentScheduleTypes.Event.id] = {\r\n view: 'eventAppointment',\r\n edit: 'editEventAppointment',\r\n add: 'addEventAppointment',\r\n requiredFeature: AppointmentScheduleTypes.Event.requiredFeature\r\n };\r\n routes[AppointmentScheduleTypes.BlockingEvent.id] = {\r\n view: 'blockingEventAppointment',\r\n edit: 'editBlockingEventAppointment',\r\n add: 'addBlockingEventAppointment',\r\n requiredFeature: AppointmentScheduleTypes.BlockingEvent.requiredFeature\r\n };\r\n\r\n function getTransition(apptScheduleType, patientId, calendarId, edit, apptId) {\r\n if(!apptScheduleType) {\r\n return false;\r\n }\r\n\r\n var filteredRoutes = apFilterFeature(routes, 'requiredFeature');\r\n var transition = {\r\n opts: {}\r\n };\r\n var lowerScheduleType = apptScheduleType.toLowerCase();\r\n\r\n if(apptId) {\r\n transition.opts.id = apptId;\r\n var property = !!edit ? 'edit' : 'view';\r\n transition.appRoute = (filteredRoutes[lowerScheduleType] && filteredRoutes[lowerScheduleType][property]) || filteredRoutes[AppointmentScheduleTypes.PatientVisit.id][property];\r\n }\r\n else {\r\n transition.appRoute = (filteredRoutes[lowerScheduleType] && filteredRoutes[lowerScheduleType].add) || filteredRoutes[AppointmentScheduleTypes.PatientVisit.id].add;\r\n }\r\n\r\n if(patientId) {\r\n transition.opts.patientid = patientId;\r\n }\r\n if(calendarId) {\r\n transition.opts.calendarId = calendarId;\r\n }\r\n\r\n return transition;\r\n }\r\n\r\n return {\r\n getTransition: getTransition\r\n };\r\n }]);\r\n","angular.module('aprima-legacy-common').provider('AppRoutes', ['_', function(_){\r\n 'use strict';\r\n\r\n var appRoutes = {\r\n findByStateName: findByStateName,\r\n // These functions are used in Angular but not AngularJS.\r\n findKeyByStateName: findKeyByStateName,\r\n getAppRoutes: getAppRoutes,\r\n setupAppRoutes: setupAppRoutes,\r\n };\r\n\r\n this.setupAppRoutes = setupAppRoutes;\r\n\r\n function findByStateName(stateName) {\r\n var appRoute = _.find(getAppRoutes(), {state: stateName});\r\n return appRoute;\r\n }\r\n\r\n function findKeyByStateName(stateName) {\r\n var appRoute = _.findKey(getAppRoutes(), {state: stateName});\r\n return appRoute;\r\n }\r\n\r\n function setupAppRoutes(newAppRoutes) {\r\n //does not overwrite existing properties\r\n _.defaults(appRoutes, newAppRoutes);\r\n }\r\n\r\n function getAppRoutes() {\r\n return appRoutes;\r\n }\r\n\r\n this.getAppRoutes = getAppRoutes;\r\n\r\n this.$get = [function(){\r\n return getAppRoutes();\r\n }];\r\n}]);\r\n","angular.module('aprima-legacy-common').factory('MessageTransitionToHelper',\r\n ['MessageTypes', '_', 'apFilterFeatureFilter', function (MessageTypes, _, apFilterFeature) {\r\n 'use strict';\r\n\r\n var routes = {};\r\n routes[MessageTypes.PhoneMessageGuid] = {\r\n route: 'phonemessage'\r\n };\r\n routes[MessageTypes.TaskMessageGuid] = {\r\n route: 'taskmessage'\r\n };\r\n routes[MessageTypes.LabMessageGuid] = {\r\n route: 'labmessage'\r\n };\r\n routes[MessageTypes.PortalAppointmentQuestionMessageGuid] = {\r\n route: 'portalmessage'\r\n };\r\n routes[MessageTypes.PortalBillingQuestionMessageGuid] = {\r\n route: 'portalmessage'\r\n };\r\n routes[MessageTypes.PortalDemographicsQuestionMessageGuid] = {\r\n route: 'portalmessage'\r\n };\r\n routes[MessageTypes.PortalGeneralQuestionMessageGuid] = {\r\n route: 'portalmessage'\r\n };\r\n routes[MessageTypes.PortalRxQuestionMessageGuid] = {\r\n route: 'portalmessage'\r\n };\r\n routes[MessageTypes.AttachmentApprovalGuid] = {\r\n route: 'aamessage'\r\n };\r\n routes[MessageTypes.ServiceOrderApprovalMessageGuid] = {\r\n route: 'serviceorderapprovalmessage'\r\n };\r\n routes[MessageTypes.RxRefillRequestMessageGuid] = {\r\n route: 'rxrefillmessage',\r\n requiredFeature: 'Messages_RxRefill,Visits_RX'\r\n };\r\n routes[MessageTypes.PatientRxRefillRequestMessageGuid] = {\r\n route: 'rxrefillmessage',\r\n requiredFeature: 'Messages_RxRefill,Visits_RX'\r\n };\r\n routes[MessageTypes.PharmacyRefillRequestMessageGuid] = {\r\n route: 'pharmacyrefillmessage',\r\n requiredFeature: 'Messages_PharmacyRefill,Visits_RX'\r\n };\r\n routes[MessageTypes.RxRefillAndErxRequestMessageGuid] = {\r\n route: 'rxrefillmessagev2',\r\n requiredFeature: 'Messages_PharmacyRefill,Visits_RX,Messages_RxRefillRequestV2,Messages_RxChange'\r\n };\r\n\r\n function getTransitionForMessage(messageTypeId, messageId, messageSubTypeId, createNew, options) {\r\n var transition = {\r\n appRoute: 'message',\r\n opts: {\r\n id: messageId\r\n }\r\n };\r\n \r\n if(options){\r\n _.merge(transition.opts, options);\r\n }\r\n\r\n var lowerMessageTypeId = messageTypeId.toLowerCase();\r\n var lowerMessageSubTypeId = messageSubTypeId.toLowerCase();\r\n\r\n var filteredRoutes = apFilterFeature(routes, 'requiredFeature');\r\n\r\n transition.appRoute = (createNew ? 'create' : '') +\r\n ((filteredRoutes[lowerMessageTypeId] && filteredRoutes[lowerMessageTypeId].route) ||\r\n (filteredRoutes[lowerMessageSubTypeId] && filteredRoutes[lowerMessageSubTypeId].route) ||\r\n 'message');\r\n\r\n return transition;\r\n }\r\n\r\n return {\r\n getTransitionForMessage: getTransitionForMessage\r\n };\r\n }]);\r\n","angular.module('aprima-legacy-common')\r\n .factory('NoteTypeRepository',\r\n ['_', 'SystemGuid', function (_, SystemGuid) {\r\n 'use strict';\r\n\r\n // TODO: before releasing, comment out those that we don't actually support.\r\n /*jshint camelcase: false */\r\n var supportedTabs = [\r\n '3e4888e6-a0be-4e5b-bdbf-3da7d4f71375', //Assessments\r\n SystemGuid.UIControl_Note_CC,\r\n SystemGuid.UIControl_Note_CCHPI,\r\n 'ffbb556f-ab4e-478f-a2d7-b4b863a344e9', //CDS\r\n SystemGuid.UIControl_Note_Confidential,\r\n '2c513cab-0d52-4e06-b64f-dc6391e464b7', //CPP\r\n SystemGuid.UIControl_Note_DX,\r\n SystemGuid.UIControl_Note_DXDSM,\r\n SystemGuid.UIControl_Note_GeneralNote,\r\n '8b40d89b-3511-42a4-b07b-decadc72647e', //General Note CC\r\n SystemGuid.UIControl_Note_HPI,\r\n SystemGuid.UIControl_Note_HX,\r\n '38080e33-7a49-4e4d-9d5c-ff87319d8307', //Observation\r\n SystemGuid.UIControl_Note_PE,\r\n SystemGuid.UIControl_Note_Plan,\r\n SystemGuid.UIControl_Note_Results,\r\n SystemGuid.UIControl_Note_ROS,\r\n SystemGuid.UIControl_Note_ROSPE,\r\n SystemGuid.UIControl_Note_RX,\r\n '871c47ed-372f-4c89-a4b8-c753951ca93e', //Single CPP\r\n SystemGuid.UIControl_Note_SO,\r\n SystemGuid.UIControl_Note_SP,\r\n SystemGuid.UIControl_Note_VisitText,\r\n SystemGuid.UIControl_Note_Vitals,\r\n ];\r\n\r\n var supportedSliders = [\r\n '2f35a3bb-0778-4cd6-a178-7734e7b4836e', //Attachments\r\n '4836176d-e412-47e9-ab6b-b549515c8007', //Calendar\r\n 'bf9d1d68-cdcc-48f0-8080-1815212914fb', //CCM/CPO\r\n '41e171a8-667a-4ade-aba4-dc7ce21c30d7', //Clinical Decision Support\r\n '87d90295-1cbf-41cd-8582-fad6e0a7a4b9', //Dictation\r\n '142937f8-4c55-4c15-9677-f1a2105a019e', //Education Forms\r\n '5b8fa2e2-31fa-40aa-bbf6-9d969ae5cc71', //Follow-up\r\n '41e171a8-667a-4ade-aba4-dc7ce21c30d7', //Health Maintenance\r\n '48606f65-ddf6-4f83-afaf-7dfb842d13d6', //Numeric Keypad\r\n '881ee22a-9193-45b3-85f5-818e4bd6ece9', //Rx Summary\r\n 'b9d820ab-b216-47bf-af2d-b7ebfb79a137', //Text Note\r\n '14266173-8cfc-4b4e-8fa6-8f95ea61e03d', //Visit Information\r\n ];\r\n\r\n function isNoteTabsSupported(note) {\r\n if(_.isNil(note)) { return false; }\r\n var noteTabs = _.map(note.Tabs, 'TabSliderUid');\r\n\r\n var matchedTabs = _.intersection(noteTabs, supportedTabs);\r\n return matchedTabs.length === noteTabs.length;\r\n }\r\n\r\n function isNoteSlidersSupported(note) {\r\n if(_.isNil(note)) { return false; }\r\n var noteSliders = _.map(note.Sliders, 'TabSliderUid');\r\n\r\n var matchedSliders = _.intersection(noteSliders, supportedSliders);\r\n return matchedSliders.length === noteSliders.length;\r\n }\r\n\r\n function isNoteTypeSupported(note) {\r\n if(_.isNil(note)) { return false; }\r\n return isNoteTabsSupported(note) && isNoteSlidersSupported(note);\r\n }\r\n\r\n return {\r\n isNoteTypeSupported: isNoteTypeSupported,\r\n isNoteTabsSupported: isNoteTabsSupported,\r\n isNoteSlidersSupported: isNoteSlidersSupported,\r\n };\r\n }]);\r\n","angular.module('aprima-legacy-common').factory('$qHelpers', ['$q', '_', '$timeout', function ($q, _, $timeout) {\r\n 'use strict';\r\n\r\n return {\r\n whenFirstSuccess: whenFirstSuccess,\r\n timeout: timeout,\r\n delay: delay,\r\n abortablePromise: abortablePromise,\r\n isPromise: isPromise,\r\n abortPromises: abortPromises,\r\n abortPromise: abortPromise\r\n };\r\n\r\n function whenFirstSuccess(promises) {\r\n //Will resolve to the value of the first successful promise in order.\r\n //Ignores rejected promises unless ALL were rejected, then the returned promise will be rejected.\r\n \r\n var deferred = $q.defer();\r\n var results = [];\r\n var resolved = false;\r\n //Use reference instead of value for comparison.\r\n var rejectionFlagValue = {};\r\n\r\n function tryResolveToFirstSuccess() {\r\n var index = -1;\r\n var length = results ? results.length : 0;\r\n\r\n if (!results || resolved) {\r\n return false;\r\n }\r\n\r\n while (++index < length) {\r\n var result = results[index];\r\n\r\n if (result === undefined) {\r\n return false;\r\n }\r\n\r\n if (result !== rejectionFlagValue) {\r\n resolved = true;\r\n deferred.resolve(result);\r\n results = null;\r\n return false;\r\n }\r\n }\r\n\r\n deferred.reject('Could not resolve first successful promise. All promises were rejected.');\r\n }\r\n\r\n _.forEach(promises, function (promise, index) {\r\n results[index] = undefined;\r\n\r\n promise.then(function (result) {\r\n if (!resolved) {\r\n results[index] = result;\r\n tryResolveToFirstSuccess();\r\n }\r\n }, function () {\r\n if (!resolved) {\r\n results[index] = rejectionFlagValue;\r\n tryResolveToFirstSuccess();\r\n }\r\n });\r\n\r\n });\r\n\r\n return deferred.promise;\r\n }\r\n\r\n function timeout(promise, time) {\r\n var deferred = $q.defer(),\r\n timeoutPromise = $timeout(function() {\r\n deferred.reject('Promise took too long to resolve and was rejected.');\r\n }, time);\r\n\r\n promise\r\n .then(function (result) {\r\n deferred.resolve(result);\r\n })\r\n .catch(function (err) {\r\n deferred.reject(err);\r\n })\r\n .finally(function() {\r\n $timeout.cancel(timeoutPromise);\r\n });\r\n\r\n return deferred.promise;\r\n }\r\n\r\n function delay(promise, time) {\r\n var deferred = $q.defer();\r\n\r\n $timeout(function() {\r\n promise\r\n .then(function (result) {\r\n deferred.resolve(result);\r\n })\r\n .catch(function (err) {\r\n deferred.reject(err);\r\n });\r\n }, time);\r\n\r\n return deferred.promise;\r\n }\r\n\r\n function abortablePromise(promise, previousPromises, shouldRejectOnAbort) {\r\n var deferred = $q.defer();\r\n shouldRejectOnAbort = angular.isFunction(shouldRejectOnAbort) ? _.once(shouldRejectOnAbort) : function(){ return true; };\r\n\r\n abortPromises(previousPromises);\r\n\r\n promise\r\n .then(function (result) {\r\n deferred.resolve(result);\r\n }, function (error) {\r\n deferred.reject(error);\r\n });\r\n\r\n var error = {isAborted: true, msg: 'Aborted'};\r\n deferred.promise.abort = function abort() {\r\n var shouldAbort = !!shouldRejectOnAbort(error);\r\n if(shouldAbort) {\r\n deferred.reject(error);\r\n }\r\n return shouldAbort;\r\n };\r\n\r\n replaceChainFnsWithAbortableFns(deferred.promise, 'then');\r\n replaceChainFnsWithAbortableFns(deferred.promise, 'catch');\r\n replaceChainFnsWithAbortableFns(deferred.promise, 'finally');\r\n\r\n return deferred.promise;\r\n }\r\n \r\n function abortPromises(promises) {\r\n if(!_.isArray(promises)) {\r\n abortPromise(promises);\r\n return;\r\n }\r\n\r\n _.forEach(promises, function (promise) {\r\n abortPromise(promise);\r\n });\r\n }\r\n\r\n function abortPromise(promise) {\r\n if(promise && promise.abort){\r\n promise.abort();\r\n }\r\n }\r\n \r\n function replaceChainFnsWithAbortableFns(promise, chainFnKey) {\r\n var wrappedKey = '_' + chainFnKey;\r\n var wrappedFn = promise[wrappedKey] = promise[wrappedKey] || promise[chainFnKey] || angular.noop;\r\n\r\n promise[chainFnKey] = function() {\r\n var chained = wrappedFn.apply(promise, arguments);\r\n if(_.isFunction(chained.abort)) {\r\n return chained;\r\n }\r\n \r\n var newPromise = abortablePromise(chained, null, function() {\r\n return promise.abort();\r\n });\r\n return newPromise;\r\n };\r\n }\r\n\r\n function isPromise(value) {\r\n return !!(value && angular.isFunction(value.then) && angular.isFunction(value.catch) && angular.isFunction(value.finally));\r\n }\r\n}]);","angular.module('aprima-legacy-common').factory('HttpAbortableContext', ['$q', '$qHelpers', '_', function($q, $qHelpers, _) {\r\n 'use strict';\r\n \r\n return HttpAbortableContext;\r\n\r\n function HttpAbortableContext(previousPromiseToAbort) {\r\n var abortDeferred = $q.defer();\r\n var abortPromise = abortDeferred.promise;\r\n\r\n return {\r\n abortPromise: abortPromise,\r\n wrap: function wrap(promise) {\r\n var abortedError;\r\n promise = promise.catch(function(error) {\r\n if(abortedError && error && error.status < 0) {\r\n _.assign(error, abortedError);\r\n }\r\n return $q.reject(error);\r\n });\r\n\r\n return $qHelpers.abortablePromise(promise, previousPromiseToAbort, function(error) {\r\n abortedError = error;\r\n abortDeferred.resolve();\r\n return false;\r\n });\r\n }\r\n };\r\n }\r\n}]);\r\n","(function(angular) {\r\n 'use strict';\r\n\r\n // Can add to this as necessary\r\n // The Angular version of this is PermissionNames\r\n var permissions = {\r\n Schedule: 'schedule',\r\n FullNoteComposer: 'fnc',\r\n StrikeoutVisits: 'strikeoutvisits',\r\n };\r\n\r\n angular.module('aprima-legacy-common').constant('Permissions', permissions);\r\n})(window.angular);\r\n","(function(angular) {\r\n 'use strict';\r\n\r\n angular.module('aprima-legacy-common').factory('SecurityRepository', [\r\n '$q',\r\n 'PermissionService',\r\n SecurityRepository\r\n ]);\r\n\r\n function SecurityRepository(\r\n $q,\r\n PermissionService\r\n ) {\r\n var service = {\r\n getPermissions: getPermissions\r\n };\r\n\r\n return service;\r\n\r\n function getPermissions(permissionName) {\r\n var promise = PermissionService.getPermissionsJs(permissionName);\r\n return $q.when(promise);\r\n }\r\n }\r\n\r\n})(window.angular);\r\n","(function(angular) {\r\n 'use strict';\r\n\r\n angular.module('aprima-legacy-common').factory('TileGroup', [\r\n '_',\r\n 'AprimaCache',\r\n TileGroupFactory,\r\n ]);\r\n\r\n\r\n function TileGroupFactory(\r\n _,\r\n AprimaCache\r\n ) {\r\n\r\n var groupStates = {\r\n userPreference: 0,\r\n allExpanded: 1,\r\n allCollapsed: 2\r\n };\r\n\r\n return TileGroup;\r\n\r\n function TileGroup(tileGroupName, config, storageType, disablePersistence) {\r\n var self = this;\r\n\r\n self.setupTile = setupTile;\r\n self.toggle = toggle;\r\n self.nextState = nextState;\r\n self.changeConfiguration = changeConfiguration;\r\n self.getName = getName;\r\n self.setPersistence = setPersistence;\r\n\r\n var name = tileGroupName;\r\n var persist = !disablePersistence;\r\n var configuration = config || 'default';\r\n var type = 'tileGroup';\r\n var tiles = {};\r\n var groupState = groupStates.userPreference;\r\n var cache = AprimaCache.getOrCreateOverride(cacheName(), {storagePrefix: 'caches.'});\r\n if(persist) {\r\n cache.setStorageMode(storageType || 'localStorage');\r\n }\r\n\r\n updateTiles();\r\n\r\n function setPersistence(enable) {\r\n persist = !!enable;\r\n }\r\n\r\n function getName() {\r\n return name;\r\n }\r\n\r\n function cacheName() {\r\n return type + '.' + name;\r\n }\r\n\r\n function save() {\r\n return cache.put(configuration, tiles);\r\n }\r\n\r\n function get() {\r\n return cache.get(configuration);\r\n }\r\n\r\n function toggle(tileId) {\r\n var tile = tiles[tileId];\r\n if(!tile) {\r\n return;\r\n }\r\n\r\n tile.isCollapsed = !tile.isCollapsed;\r\n if(groupState === groupStates.userPreference && persist) {\r\n save();\r\n }\r\n }\r\n\r\n function setupTile(tileId, defaultValue, forceDefault) {\r\n var tile = tiles[tileId];\r\n\r\n if(!tile || forceDefault) {\r\n tile = tiles[tileId] = {\r\n isCollapsed: defaultValue\r\n };\r\n }\r\n\r\n if(groupState === groupStates.allExpanded) {\r\n tile.isCollapsed = false;\r\n }\r\n else if(groupState === groupStates.allCollapsed) {\r\n tile.isCollapsed = true;\r\n }\r\n else if(groupState === groupStates.userPreference && persist) {\r\n save();\r\n }\r\n\r\n return tile;\r\n }\r\n\r\n function updateTiles() {\r\n if(groupState === groupStates.userPreference) {\r\n _.merge(tiles, get());\r\n return;\r\n }\r\n\r\n var newValue = groupState === groupStates.allCollapsed;\r\n _.forEach(tiles, function (val) {\r\n val.isCollapsed = newValue;\r\n });\r\n }\r\n\r\n function changeConfiguration(config) {\r\n if(!config || configuration === config) {\r\n return;\r\n }\r\n\r\n configuration = config;\r\n updateTiles();\r\n }\r\n\r\n function nextState() {\r\n groupState = groupState !== groupStates.allCollapsed ?\r\n groupState + 1 :\r\n groupStates.userPreference;\r\n updateTiles();\r\n }\r\n }\r\n }\r\n\r\n})(window.angular);\r\n"]}