{"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","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","$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 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 }]);\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"]}