{"version":3,"file":"main.js","mappings":"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","sources":["./src/app/app-routing.module.ts","./src/app/app.component.ts","./src/app/app.component.html","./src/app/app.module.ts","./src/app/auth/auth.component.ts","./src/app/auth/auth.component.html","./src/app/pre-auth/pre-auth.component.ts","./src/app/pre-auth/pre-auth.component.html","./src/app/questionnair/followup-questions/followup-questions.component.ts","./src/app/questionnair/followup-questions/followup-questions.component.html","./src/app/questionnair/questionnair.component.ts","./src/app/questionnair/questionnair.component.html","./src/app/shared/components/build-version/build-version.component.ts","./src/app/shared/components/build-version/build-version.component.html","./src/app/shared/components/common-dialog/common-dialog.component.ts","./src/app/shared/components/common-dialog/common-dialog.component.html","./src/app/shared/components/content-media/content-media.component.ts","./src/app/shared/components/content-media/content-media.component.html","./src/app/shared/components/dev/dev.component.ts","./src/app/shared/components/error-dialog/error-dialog.component.ts","./src/app/shared/components/error-dialog/error-dialog.component.html","./src/app/shared/components/footer/footer.component.ts","./src/app/shared/components/footer/footer.component.html","./src/app/shared/components/form-header/form-header.component.ts","./src/app/shared/components/form-header/form-header.component.html","./src/app/shared/components/progressbar/progressbar.component.ts","./src/app/shared/components/progressbar/progressbar.component.html","./src/app/shared/components/toaster/toaster.component.ts","./src/app/shared/components/toaster/toaster.component.html","./src/app/shared/components/tooltip/tooltip.component.ts","./src/app/shared/components/tooltip/tooltip.component.html","./src/app/shared/components/video-dialog/video-dialog.component.ts","./src/app/shared/components/video-dialog/video-dialog.component.html","./src/app/shared/components/video-js/video-js-component.ts","./src/app/shared/defs/defs.ts","./src/app/shared/directives/date-formatter.directive.ts","./src/app/shared/directives/error-class.directive.ts","./src/app/shared/directives/only-numbers.directive.ts","./src/app/shared/directives/phone-formatter.directive.ts","./src/app/shared/interceptors/caching-interceptor.ts","./src/app/shared/material.module.ts","./src/app/shared/models/csrf.module.ts","./src/app/shared/models/questionnaire-document.ts","./src/app/shared/models/questionnaire-form.ts","./src/app/shared/pages/confirmation/confirmation.component.ts","./src/app/shared/pages/confirmation/confirmation.component.html","./src/app/shared/pages/review-details/review-details.component.ts","./src/app/shared/pages/review-details/review-details.component.html","./src/app/shared/pipes/remove-sub-string.pipe.ts","./src/app/shared/pipes/safe-html.pipe.ts","./src/app/shared/pipes/telephone.pipe.ts","./src/app/shared/pipes/validation-error.pipe.ts","./src/app/shared/services/api.service.ts","./src/app/shared/services/date.service.ts","./src/app/shared/services/dev.service.ts","./src/app/shared/services/dialog.service.ts","./src/app/shared/services/logging.service.ts","./src/app/shared/services/properties.service.ts","./src/app/shared/services/questionnair.service.ts","./src/app/shared/services/user-session.service.ts","./src/app/shared/shared.module.ts","./src/app/shared/utils/date-validator.ts","./src/app/shared/utils/payload-processing/tree-walker.ts","./src/app/shared/utils/payload-processing/validate-and-fix-qa-responses.ts","./src/app/shared/utils/questionnaire.ts","./src/app/shared/utils/regex-patterns.ts","./src/app/shared/utils/service-registry.ts","./src/app/shared/utils/sparsify-qa-payload.ts","./src/app/shared/utils/validators.ts","./src/app/toolbar/toolbar-auth/toolbar-auth.component.ts","./src/app/toolbar/toolbar-auth/toolbar-auth.component.html","./src/app/toolbar/toolbar-unauth/toolbar-unauth.component.ts","./src/app/toolbar/toolbar-unauth/toolbar-unauth.component.html","./src/app/toolbar/toolbar.module.ts","./src/app/toolbar/toolbar/toolbar.component.ts","./src/app/toolbar/toolbar/toolbar.component.html","./src/build-version.ts","./src/environments/config-environment.ts","./src/main.ts","ignored|/builds/questdiagnostics/consumergenomics/questions-portal-ui/node_modules/crypto-js|crypto","ignored|/builds/questdiagnostics/consumergenomics/questions-portal-ui/node_modules/global|min-document"],"sourcesContent":["import { NgModule } from '@angular/core';\nimport { RouterModule, Routes } from '@angular/router';\nimport { AuthComponent } from './auth/auth.component';\nimport { PreAuthComponent } from './pre-auth/pre-auth.component';\nimport { QuestionnairComponent } from './questionnair/questionnair.component';\nimport { ConfirmationComponent } from './shared/pages/confirmation/confirmation.component';\nimport { ReviewDetailsComponent } from './shared/pages/review-details/review-details.component';\nimport { BuildVersionComponent } from './shared/components/build-version/build-version.component';\nimport { DevComponent } from './shared/components/dev/dev.component';\nimport { environment } from 'src/environments/config-environment';\n\nlet routes: Routes = [\n {\n path: 'questions',\n pathMatch: 'full',\n redirectTo: 'question-portal/pre-auth'\n },\n { path: 'question-portal/pre-auth', component: PreAuthComponent },\n { path: 'question-portal/auth', component: AuthComponent },\n { path: 'questions/:id', component: QuestionnairComponent },\n { path: 'review-details', component: ReviewDetailsComponent },\n { path: 'confirmation', component: ConfirmationComponent },\n { path: 'build-version', component: BuildVersionComponent }\n];\n\nif (!environment['production'] && !environment['stage']) {\n routes.push({ path: 'dev', component: DevComponent });\n}\n\n@NgModule({\n imports: [RouterModule.forRoot(routes)],\n exports: [RouterModule]\n})\nexport class AppRoutingModule {}\n","import { Component, OnInit } from '@angular/core';\nimport { Router, RoutesRecognized } from '@angular/router';\nimport { filter, pairwise, tap } from 'rxjs/operators';\nimport { ApiService } from './shared/services/api.service';\nimport { QuestionnairService } from './shared/services/questionnair.service';\nimport { UserSessionService } from './shared/services/user-session.service';\n@Component({\n selector: 'gss-root',\n templateUrl: './app.component.html',\n styleUrls: ['./app.component.scss']\n})\nexport class AppComponent implements OnInit {\n PageTitle: any;\n testcode: string;\n title = 'activation-portal-ui';\n\n constructor(\n private api: ApiService,\n public qs: QuestionnairService,\n private route: Router,\n private userSessionService: UserSessionService\n ) {\n this.api.setCsrfToken();\n this.route.events\n .pipe(\n filter(e => e instanceof RoutesRecognized),\n pairwise()\n )\n .subscribe((event: any[]) => {\n this.qs.previousRoute = event[0].urlAfterRedirects;\n });\n\n this.userSessionService\n .idleEvent$()\n .pipe(\n tap(res => {\n if (res) {\n setTimeout(() => {\n this.route.navigate(['/question-portal/pre-auth'], {\n queryParams: this.qs.urlQueryParams\n });\n }, 500);\n }\n })\n )\n .subscribe();\n }\n\n // eslint-disable-next-line @angular-eslint/no-empty-lifecycle-method\n ngOnInit() {}\n}\n","\n\n\n","import { NgModule } from '@angular/core';\nimport { BrowserModule } from '@angular/platform-browser';\n\nimport { AppComponent } from './app.component';\nimport { BrowserAnimationsModule } from '@angular/platform-browser/animations';\nimport { ToolbarModule } from './toolbar/toolbar.module';\nimport { SharedModule } from './shared/shared.module';\nimport { FlexLayoutModule } from '@angular/flex-layout';\nimport { MatFormFieldModule, MAT_FORM_FIELD_DEFAULT_OPTIONS } from '@angular/material/form-field';\nimport { MaterialModule } from './shared/material.module';\nimport { QuestionnairComponent } from './questionnair/questionnair.component';\nimport { ReactiveFormsModule } from '@angular/forms';\nimport { AppRoutingModule } from './app-routing.module';\nimport { HttpClientModule, HTTP_INTERCEPTORS } from '@angular/common/http';\nimport { ApiService } from './shared/services/api.service';\nimport { CachingInterceptor } from './shared/interceptors/caching-interceptor';\nimport { CsrfModule } from './shared/models/csrf.module';\nimport { FollowupQuestionsComponent } from './questionnair/followup-questions/followup-questions.component';\nimport { AuthComponent } from './auth/auth.component';\nimport { PreAuthComponent } from './pre-auth/pre-auth.component';\nimport { MAT_SELECT_CONFIG } from '@angular/material/select';\nimport { MAT_DIALOG_DEFAULT_OPTIONS } from '@angular/material/dialog';\nimport { MatSnackBarModule } from '@angular/material/snack-bar';\nimport { FormHeaderComponent } from './shared/components/form-header/form-header.component';\n\nconst appearance: MatFormFieldModule = {\n floatLabel: 'always'\n};\n@NgModule({\n declarations: [\n AppComponent,\n QuestionnairComponent,\n FollowupQuestionsComponent,\n AuthComponent,\n PreAuthComponent,\n FormHeaderComponent\n ],\n imports: [\n BrowserModule,\n BrowserAnimationsModule,\n ToolbarModule,\n SharedModule,\n FlexLayoutModule,\n MaterialModule,\n ReactiveFormsModule,\n AppRoutingModule,\n HttpClientModule,\n CsrfModule,\n MatSnackBarModule\n ],\n providers: [\n ApiService,\n {\n provide: MAT_FORM_FIELD_DEFAULT_OPTIONS,\n useValue: appearance\n },\n {\n provide: HTTP_INTERCEPTORS,\n useClass: CachingInterceptor,\n multi: true\n },\n {\n provide: MAT_SELECT_CONFIG,\n useValue: { overlayPanelClass: 'ds-overlay-panel' }\n },\n {\n provide: MAT_DIALOG_DEFAULT_OPTIONS,\n useValue: {\n panelClass: ['ds-modal', 'ds-grid--12', 'ds-elevation--L3'],\n hasBackdrop: true,\n role: 'dialog',\n ariaLabelledBy: 'mat-dialog-title',\n autoFocus: true\n }\n }\n ],\n bootstrap: [AppComponent]\n})\nexport class AppModule {}\n","import { HttpClient, HttpParams } from '@angular/common/http';\nimport { Component, OnInit } from '@angular/core';\nimport { ActivatedRoute, Router } from '@angular/router';\nimport { environment } from 'src/environments/config-environment';\nimport { QuestionnairService } from '../shared/services/questionnair.service';\n\n@Component({\n selector: 'gss-auth',\n templateUrl: './auth.component.html'\n})\nexport class AuthComponent implements OnInit {\n constructor(\n private activatedRoute: ActivatedRoute,\n private router: Router,\n private http: HttpClient,\n private questionnairService: QuestionnairService\n ) {}\n\n ngOnInit(): void {\n this.activatedRoute.queryParams.subscribe(params => {\n const urlParams = JSON.parse(JSON.stringify(params));\n if (params['code']) {\n this.getAccessTokenAndUserInfo(params['code'], params['state']);\n }\n delete urlParams.state;\n delete urlParams.code;\n this.questionnairService.urlQueryParams = urlParams;\n });\n }\n\n getAccessTokenAndUserInfo(code: string, state: string) {\n if (state !== (window.sessionStorage.getItem('state') as string)) {\n return;\n }\n const payload = new HttpParams()\n .append('grant_type', 'authorization_code')\n .append('code', code)\n .append('code_verifier', window.sessionStorage.getItem('codeVerifier') as string)\n .append('redirect_uri', window.location.origin + environment.oauthCallbackUrl)\n .append('client_id', environment.oauthClientId)\n .append('client_secret', '');\n this.http\n .post(environment.oauthTokenUrl, payload, {\n headers: {\n 'Content-Type': 'application/x-www-form-urlencoded'\n }\n })\n .subscribe(\n (response: any) => {\n let sessionInfo = {\n accessToken: response.access_token,\n refreshToken: response.refresh_token,\n expiresAt: 1000 * response.expires_in + Date.now()\n };\n sessionStorage.setItem('sessionInfo', JSON.stringify(sessionInfo));\n sessionStorage.setItem('authToken', response.access_token);\n sessionStorage.setItem('idToken', response.id_token);\n let token = response.token_type + ' ' + response.access_token;\n this.router.navigate(['/questions/1'], {\n queryParams: this.questionnairService.urlQueryParams\n });\n },\n err => this.handleAuthError(err)\n );\n }\n\n private handleAuthError(err) {\n console.log(err);\n }\n}\n","

auth works!

\n","import { Component, OnInit } from '@angular/core';\nimport { environment } from 'src/environments/config-environment';\nimport * as CryptoJS from 'crypto-js';\nimport { ActivatedRoute } from '@angular/router';\n\n@Component({\n selector: 'gss-pre-auth',\n templateUrl: './pre-auth.component.html'\n})\nexport class PreAuthComponent implements OnInit {\n urlParams: any = [];\n constructor(private activatedRoute: ActivatedRoute) {}\n\n ngOnInit() {\n const state = this.generateRandomString(40);\n const codeVerifier = this.generateRandomString(128);\n\n window.sessionStorage.setItem('state', state);\n window.sessionStorage.setItem('codeVerifier', codeVerifier);\n\n const codeVerifierHash = CryptoJS.SHA256(codeVerifier).toString(CryptoJS.enc.Base64);\n const codeChallenge = codeVerifierHash.replace(/=/g, '').replace(/\\+/g, '-').replace(/\\//g, '_');\n\n const params = [\n 'response_type=code',\n 'state=' + state,\n 'client_id=' + environment.oauthClientId,\n 'scope=openidprofilequestCas',\n 'code_challenge=' + codeChallenge,\n 'code_challenge_method=S256'\n ];\n\n this.activatedRoute.queryParams.subscribe(qParams => {\n if (qParams['activation-code'] && qParams['fulfillment-order']) {\n Object.entries(qParams).forEach(([key, value]) => {\n this.urlParams.push(`${key}=${value}`);\n });\n params.push(\n 'redirect_uri=' +\n encodeURIComponent(\n window.location.origin + environment.oauthCallbackUrl + '?' + this.urlParams.join('&')\n )\n );\n } else {\n params.push(\n 'redirect_uri=' + encodeURIComponent(window.location.origin + environment.oauthCallbackUrl)\n );\n }\n let url = environment.oauthLoginUrl + '?' + params.join('&');\n window.location.href = url;\n });\n }\n\n private generateRandomString(length: number): string {\n const characters = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789';\n const charactersLength = characters.length;\n\n let result = '';\n for (let i = 0; i < length; i++) {\n const randomIndex = Math.abs(CryptoJS.lib.WordArray.random(1).words[0]) % charactersLength;\n result += characters.charAt(randomIndex);\n }\n\n return result;\n }\n}\n","

pre-auth works!

\n","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport { FormArray, FormBuilder, FormControl, FormGroup } from '@angular/forms';\nimport { MAT_SELECT_CONFIG } from '@angular/material/select';\nimport { BehaviorSubject } from 'rxjs/internal/BehaviorSubject';\nimport { QuestionnairService } from 'src/app/shared/services/questionnair.service';\n\n@Component({\n selector: 'gss-followup-questions',\n templateUrl: './followup-questions.component.html',\n styleUrls: ['./followup-questions.component.scss'],\n providers: [\n {\n provide: MAT_SELECT_CONFIG,\n useValue: { overlayPanelClass: 'ds-overlay-panel' }\n }\n ]\n})\nexport class FollowupQuestionsComponent implements OnInit {\n @Input() index: any; //index of current followUpGroup in followUpArray\n @Input() followUpGroup: FormGroup; // formGroup for current followup question\n @Input() parentArray: any; // the formArray where current followUpGroup resides\n @Input() response: any; // entire jSON\n @Input() followUpArray: any[]; // entire array where current followup question resides\n @Input() currentPage: any; // current page number\n @Input() parentValue: any; //key of each checkbox value\n @Input() nestedFollowUpResponses: any; //saved responses for nested followupQuestion\n @Output() isControlValid = new EventEmitter(); // emit value when control of current followup question is valid\n followUpQ: any;\n userAge;\n disabledCheckbox = [];\n disabledList$ = new BehaviorSubject([]);\n showAdd: any;\n uniqueId: string;\n\n private followUpArrayAdded: boolean = false;\n private originalParentArrayLength: number = 0;\n\n constructor(\n private fb: FormBuilder,\n public questionnairService: QuestionnairService\n ) {\n this.userAge = this.questionnairService.getQuestionnaireDocument().getUserAge();\n }\n\n ngOnInit(): void {\n this.originalParentArrayLength = this.parentArray.length;\n this.followUpQ = this.followUpArray[this.index];\n this.uniqueId = this.generateRandomId();\n\n /* \n If a followupQuestion have more followup questions, another followUp array has to be added\n for those followUp questions\n */\n if (this.followUpQ.answerConfig?.controlType !== 'checkbox' && this.followUpQ.followUpQAndA?.length > 0) {\n this.addNestedFollowUpArray(this.followUpGroup, this.followUpQ);\n }\n\n /* \n track the value changes in followup control and act on it, like show further followup questions \n */\n this.followUpGroup.get(this.followUpQ.questionId).valueChanges.subscribe(data => {\n this.handleDropdownOrRadioChange(this.index, this.followUpQ, { value: data }, data);\n });\n\n /* \n to trigger the valueChange when visited back to the page\n */\n if (this.followUpGroup.get(this.followUpQ.questionId).value) {\n this.followUpGroup\n .get(this.followUpQ.questionId)\n .patchValue(this.followUpGroup.get(this.followUpQ.questionId).value);\n }\n }\n\n // eslint-disable-next-line @angular-eslint/use-lifecycle-interface\n ngOnDestroy(): void {\n // errors set to null when followup questions are closed due to mismatch condition\n this.followUpGroup.get(this.followUpQ.questionId).setErrors(null);\n\n if (this.followUpArrayAdded) {\n this.followUpGroup.removeControl('followUpArray');\n }\n\n for (let i = this.parentArray.length; i > this.originalParentArrayLength; i--) {\n this.parentArray.removeAt(i - 1);\n }\n }\n\n /**\n * add followup array and controls for followup questions of current followup question\n * @param questionsGroup formGroup that created in parent component for current followup question\n * @param parentQuestions current followup question (this has further followup questions)\n */\n addNestedFollowUpArray(questionsGroup, parentQuestions) {\n // folloUpArray needed for entire array of followup questions\n questionsGroup.addControl('followUpArray', new FormArray([]));\n this.followUpArrayAdded = true;\n let followUpArray = questionsGroup.get('followUpArray') as FormArray;\n\n // when there are multiple followup questions, then each question will be in separate formGroup\n // inside the group a formcontrol will be created using questionIds\n if (parentQuestions.followUpQAndA?.length > 0) {\n parentQuestions.followUpQAndA.forEach((questionFollow: any, ind: number) => {\n let followUpGroup = this.fb.group({});\n followUpGroup.addControl(questionFollow.questionId, new FormControl(null));\n // is there are values present from previous responses then patch value to the control\n const nestedFollowUpResponsesByValue = this.nestedFollowUpResponses[\n this.followUpGroup.get(this.followUpQ.questionId).value + this.parentValue\n ]\n ? this.nestedFollowUpResponses[\n this.followUpGroup.get(this.followUpQ.questionId).value + this.parentValue\n ]\n : null;\n if (nestedFollowUpResponsesByValue?.length > 0) {\n followUpGroup.get(questionFollow.questionId).patchValue(nestedFollowUpResponsesByValue[ind].key);\n }\n followUpArray.push(followUpGroup);\n });\n }\n }\n\n /**\n * click event listener tied to the ADD button which add similar new followup question\n * ADD button will only be shown when the controlType has 'dynamic-multiple' in it\n * it is only tested with dropdown. so it wil work fine for 'dropdown-dynamic-multiple\n */\n addQuestion() {\n let followUpGroup = this.fb.group({});\n followUpGroup.addControl(this.followUpQ.questionId, new FormControl(''));\n this.followUpArray.push(this.followUpQ);\n this.parentArray.push(followUpGroup);\n }\n\n /**\n * click event listener tied to the REMOVE button which removes a followup question\n * REMOVE button will only be shown when the controlType has 'dynamic-multiple' in it\n * it is only tested with dropdown. so it wil work fine for 'dropdown-dynamic-multiple\n */\n removeQuestion() {\n this.followUpArray.splice(this.index, 1);\n this.parentArray.removeAt(this.index);\n }\n\n /**\n * Handles change event of radio button or dropdown\n * also subscribed on valueChanges observable of the control\n * @param index index of current followUpGroup in followUpArray\n * @param question current followup question\n * @param event when call from the template, it is formcontrol event or\n * when call from valueChanges observable it is control value that mimic formcontrol event object\n * @param value actual value of the control\n */\n handleDropdownOrRadioChange(index: any, question: any, event: any, value: any) {\n value = event.value;\n if (question.followUpQAndA) {\n question.followUpQAndA.forEach((ques: any) => {\n const uniqIdentifier = this.currentPage + (index + this.parentValue + ques.conditionToAskMe);\n if (\n this.getConditionAnswer(ques.conditionToAskMe, value) &&\n !this.questionnairService.indexesToShow.includes(uniqIdentifier)\n ) {\n this.questionnairService.indexesToShow.push(uniqIdentifier);\n } else if (\n !this.getConditionAnswer(ques.conditionToAskMe, value) &&\n this.questionnairService.indexesToShow.includes(uniqIdentifier)\n ) {\n var ind = this.questionnairService.indexesToShow.indexOf(uniqIdentifier);\n\n if (ind !== -1) {\n this.questionnairService.indexesToShow.splice(ind, 1);\n }\n }\n });\n this.questionnairService.showFollowUp$.next(this.questionnairService.indexesToShow);\n }\n\n this.isControlValid.next(this.followUpGroup.get(question.questionId).valid);\n }\n\n /** \n Event Listener to followup checkbox input\n If there are followup questions related to checkbox inputs,\n then build unique identifier, that will connect the checkbox\n input value to a followup question. page value added to the identifier,\n so that it won't mess with any identifier in other pages.\n unique identifier is pushed to an array when the checkbox value\n matches the condition. if doesn't match then the identifier is removed\n and form field get reset.\n */\n handleCheckboxChange(index: any, question: any, event: any, value: any) {\n value = event.checked ? value : null;\n if (question.followUpQAndA) {\n question.followUpQAndA.forEach((ques: any, followUpIndex) => {\n const uniqIdentifier = this.currentPage + (index + this.parentValue + ques.conditionToAskMe);\n if (\n this.getConditionAnswer(ques.conditionToAskMe, value) &&\n !this.questionnairService.indexesToShow.includes(uniqIdentifier)\n ) {\n this.questionnairService.indexesToShow.push(uniqIdentifier);\n } else if (\n !this.getConditionAnswer(ques.conditionToAskMe, value) &&\n this.questionnairService.indexesToShow.includes(uniqIdentifier)\n ) {\n var ind = this.questionnairService.indexesToShow.indexOf(uniqIdentifier);\n if (ind !== -1) {\n this.questionnairService.indexesToShow.splice(ind, 1);\n let formArray = this.followUpGroup.get(question.questionId) as FormArray;\n formArray.at(index).reset();\n }\n }\n });\n this.questionnairService.showFollowUp$.next(this.questionnairService.indexesToShow);\n }\n\n this.disableCheckboxesOnSingletonSelect(value, question, index);\n }\n\n /** \n If a singleton checkbox value (None, I don't Know) gets selected,\n then other checkboxes are disabled and followup form fields along\n with the checkbox itself is reset.\n The disabled attribute is used to avoid removal of controls from array\n when field are disabled with abstract control.\n */\n disableCheckboxesOnSingletonSelect(value, question, index) {\n if (value && question.answerConfig.config[index].singleton) {\n question.answerConfig.config.forEach((config, ind) => {\n if (ind !== index) {\n this.questionnairService.indexesToShow.length = 0;\n let formArray = this.followUpGroup.get(question.questionId) as FormArray;\n this.disabledCheckbox.push(ind + question.questionId);\n this.disabledList$.next(this.disabledCheckbox);\n formArray.at(ind).reset();\n }\n });\n } else {\n question.answerConfig.config.forEach((config, ind) => {\n if (ind !== index) {\n let formArray = this.followUpGroup.get(question.questionId) as FormArray;\n formArray.at(ind).enable();\n let indexOfItem = this.disabledCheckbox.indexOf(ind + question.questionId);\n if (indexOfItem !== -1) {\n this.disabledCheckbox.splice(indexOfItem, 1);\n }\n this.disabledList$.next(this.disabledCheckbox);\n }\n });\n }\n }\n\n showAddButton(data) {\n this.showAdd = data;\n }\n\n /** \n Matches a input value to a condition\n if the values match, then return true\n else null\n */\n getConditionAnswer(conditionToAsk: string, value: any) {\n const conditionName = conditionToAsk as keyof typeof this.response.condition;\n const condition = this.response.condition[conditionName];\n\n if (condition && value) {\n if (condition.type === 'ONPARENTNOTINVAL') {\n return !condition.promptOnParentNotInSet.includes(value);\n } else if (condition.type === 'ONPARENTINVAL') {\n return condition.promptOnParentInSet.includes(value);\n } else if (condition.type === 'ONPARENTANY') {\n return true;\n } else {\n return null;\n }\n } else {\n return null;\n }\n }\n\n // Generates a random ID that can be used for form fields that have duplicate Question ID's\n generateRandomId() {\n const randomNumber = Math.floor(Math.random() * 9000000) + 1000000;\n return `${this.followUpQ.questionId}-${randomNumber}`;\n }\n}\n","\n
\n
\n \n
\n \n {{ followUpQ.subtitleAscii }}\n \n \n {{ followUpQ.titleAscii }}\n \n \n \n
\n
\n
\n {{ followUpQ.titleAscii }}\n \n \n \n \n \n
\n \n
\n \n \n \n \n \n
\n
\n \n
\n \n {{ followUpQ.subtitleAscii }}\n \n \n {{ followUpQ.titleAscii }}\n \n \n \n \n \n \n \n
\n
\n {{ followUpQ.titleAscii }}\n \n \n \n \n \n
\n \n
\n \n \n \n \n \n
\n
\n \n \n \n {{ followUpQ.subtitleAscii }}\n {{ followUpQ?.answerRequired ? '*' : '' }}\n \n \n {{ followUpQ.titleAscii }}\n {{ followUpQ?.answerRequired ? '*' : '' }}\n \n \n \n
\n {{ followUpQ.answerConfig?.config.defaultText }}\n
\n
\n {{ followUpGroup.get(followUpQ.questionId).errors | validationError }}\n
\n
\n \n \n \n \n {{ followUpQ.subtitleAscii }}\n {{ followUpQ?.answerRequired ? '*' : '' }}\n \n \n {{ followUpQ.titleAscii }}\n {{ followUpQ?.answerRequired ? '*' : '' }}\n \n \n \n
\n {{ followUpQ.answerConfig?.config.defaultText }}\n
\n
\n {{ followUpGroup.get(followUpQ.questionId).errors | validationError }}\n
\n
\n
\n 0\"\n formArrayName=\"followUpArray\"\n >\n \n \n \n \n \n \n \n \n
\n \n {{ followUpQ.subtitleAscii }}\n \n \n {{ followUpQ.titleAscii }}\n \n \n
\n \n \n \n \n 0\" formArrayName=\"followUpArray\">\n \n \n \n \n \n \n \n \n
\n
\n \n = 0 &&\n index !== parentArray.length - 1 &&\n (parentValue === 'breastCancer' || parentValue === 'colonCancer')\n \"\n >\n
\n \n
\n \n \n \n
\n \n \n \n \n \n
\n \n \n\n","import { Location } from '@angular/common';\nimport { AfterViewChecked, Component, ChangeDetectorRef, OnInit } from '@angular/core';\nimport { AbstractControl, FormArray, FormBuilder, FormControl, FormGroup, Validators } from '@angular/forms';\nimport { MatDialog } from '@angular/material/dialog';\nimport { MAT_SELECT_CONFIG } from '@angular/material/select';\nimport { ActivatedRoute, Router } from '@angular/router';\nimport { BehaviorSubject, combineLatest } from 'rxjs';\nimport { environment } from 'src/environments/config-environment';\nimport gssPopupData from '../../assets/json-config-files/11957.json';\nimport { default as defaultContent } from '../../assets/json-config-files/default.json';\nimport hraData from '../../assets/json-config-files/hra.json';\nimport { CommonDialogComponent } from '../shared/components/common-dialog/common-dialog.component';\nimport { ErrorDialogComponent } from '../shared/components/error-dialog/error-dialog.component';\nimport { QuestionnaireDocument } from '../shared/models/questionnaire-document';\nimport { ApiService } from '../shared/services/api.service';\nimport { DialogService } from '../shared/services/dialog.service';\nimport { DateService } from '../shared/services/date.service';\nimport { LogType, LoggingService } from '../shared/services/logging.service';\nimport { QuestionnairService } from '../shared/services/questionnair.service';\nimport { CustomDateValidators } from '../shared/utils/date-validator';\nimport { CustomValidators } from '../shared/utils/validators';\nimport { DialogKey, SaveRequest, SaveResult } from '../shared/defs/defs';\nimport { ServiceRegistry } from '../shared/utils/service-registry';\n\n@Component({\n selector: 'gss-questionnair',\n templateUrl: './questionnair.component.html',\n styleUrls: ['./questionnair.component.scss'],\n providers: [\n {\n provide: MAT_SELECT_CONFIG,\n useValue: { overlayPanelClass: 'ds-overlay-panel' }\n }\n ]\n})\nexport class QuestionnairComponent implements OnInit, AfterViewChecked {\n confContent: any;\n pageTitle: string;\n group: any;\n form: FormGroup;\n answers: any;\n currentPage: any;\n progress: any;\n interests: any;\n interestFormGroup: any;\n satisfactoryConditions = [];\n interests1: any;\n parentAnswerLists: any;\n questionsGroup: FormGroup;\n indexesToShow: number[] = [];\n showFollowUp$ = new BehaviorSubject([]);\n disabledList$ = new BehaviorSubject([]);\n loading = true;\n response: any;\n id: any[] = [];\n disabledCheckbox = [];\n formDataForCurrentForm: any;\n dynamicFollowUpList = {};\n nestedFollowUpResponses = {};\n isPageRefreshModelOpened = false;\n indexToShowEditProfile: number;\n idleTimeout: any = environment.idleTimeOut;\n\n constructor(\n private _location: Location,\n private fb: FormBuilder,\n private activatedRoute: ActivatedRoute,\n private route: Router,\n public dialogService: DialogService,\n public questionnairService: QuestionnairService,\n private dialog: MatDialog,\n private dateService: DateService,\n private api: ApiService,\n private logging: LoggingService,\n private cdr: ChangeDetectorRef\n ) {\n ServiceRegistry.dateService = dateService;\n }\n\n ngOnInit(): void {\n combineLatest([this.activatedRoute.paramMap, this.activatedRoute.queryParams]).subscribe(\n ([paramMap, qparams]: any) => {\n if (paramMap.get('id')) {\n this.currentPage = +paramMap.get('id');\n }\n this.questionnairService.urlQueryParams = qparams;\n if (\n !environment.local &&\n (!sessionStorage.getItem('authToken') || !sessionStorage.getItem('idToken'))\n ) {\n this.route.navigate(['/question-portal/pre-auth'], {\n queryParams: this.questionnairService.urlQueryParams\n });\n return;\n }\n this.response = this.questionnairService.getDocData();\n if (!this.response) {\n let eventLogEntry = {\n method: 'QuestionnairComponent/ngOnInit',\n requestBody: qparams\n };\n this.logging.log(eventLogEntry, LogType.Event);\n this.getQuestionaireResponse();\n } else {\n this.addResponseToPage();\n }\n window.scroll({\n top: 0,\n left: 0,\n behavior: 'smooth'\n });\n }\n );\n }\n\n private doc(): QuestionnaireDocument {\n return this.questionnairService.getQuestionnaireDocument();\n }\n\n // rename later - used in .html\n checkIfHraDataLoaded() {\n return this.doc().isHra();\n }\n\n // rename later - used in .html\n checkHraPages() {\n return this.currentPage === this.questionnairService.totalPages;\n }\n\n addResponseToPage() {\n this.loading = false;\n this.group = this.doc().getQAndAGroupBySequence(this.currentPage);\n\n this.buildForm();\n\n this.setProgressbarData();\n }\n\n /**\n pre-populate form fields if json already have responses stored\n can be re-used with some modifications for save and exit story\n */\n prePopulateFromJsonResponse(control: AbstractControl, question) {\n let responses = question.responses;\n if (question.answerConfig.controlType !== 'dropdown-multiselect') {\n let response = responses[0];\n if (response && response.key) {\n if (question.answerConfig.controlType === 'checkbox') {\n control.patchValue(response.key ? true : false);\n } else {\n control.patchValue(response.key);\n }\n } else {\n if (question.answerConfig.controlType === 'date_input') {\n response = this.dateService.toDate(response);\n }\n control.patchValue(response);\n }\n } else if (question.answerConfig.controlType === 'dropdown-multiselect') {\n let response = responses.map(resp => {\n return resp.valueHtml;\n });\n control.patchValue(response);\n }\n }\n\n /**\n get JSON response from activation portal\n */\n getQuestionaireResponse() {\n this.questionnairService.getQuestionaireData$().then(\n (res: any) => {\n const questionnaireDocument = new QuestionnaireDocument(res);\n this.questionnairService.setQuestionnaireDocument(questionnaireDocument);\n this.response = this.questionnairService.getDocData();\n\n const testCode = questionnaireDocument.isHra()\n ? this.response.header.kitId\n : this.response.header.testCode;\n this.setPageTitle(testCode);\n\n if (this.response.header.complete) {\n this.route.navigate([`/confirmation`], {\n queryParams: this.questionnairService.urlQueryParams\n });\n } else {\n if (this.response.header && this.response.header.lastPage >= 0) {\n let lastPage = this.response.header.lastPage === 0 ? 1 : this.response.header.lastPage;\n if (questionnaireDocument.getQAndAGroupBySequence(lastPage)) {\n this.questionnairService.isPageReloaded = true;\n this.questionnairService.previousPageNo = lastPage;\n this.route.navigate([`questions/${lastPage}`], {\n queryParams: this.questionnairService.urlQueryParams\n });\n } else {\n this.route.navigate([`review-details`], {\n queryParams: this.questionnairService.urlQueryParams\n });\n }\n }\n }\n this.addResponseToPage();\n },\n err => {\n this.loading = false;\n let error = {\n status: err.status,\n message: err.message,\n desc: err.error?.correlationId + ' ' + err.error?.fault?.type + ' ' + err.error?.fault?.message[0]\n };\n this.logging.log(error, LogType.Error);\n this.dialogService.invokeDialog(this.dialog, DialogKey.LoadError);\n }\n );\n }\n\n setPageTitle(testCode: string) {\n const url = `/assets/json-config-files/${testCode}.json`;\n this.api.get(url).subscribe(\n (data: any) =>\n (this.questionnairService.pageTitle =\n data && data.pageTitle ? data.pageTitle : defaultContent.pageTitle),\n () => (this.questionnairService.pageTitle = defaultContent.pageTitle)\n );\n this.loading = false;\n }\n\n /**\n set value in progressbar\n */\n setProgressbarData() {\n this.progress =\n this.currentPage < 2 ? 0 : Math.round(((this.currentPage - 1) / this.questionnairService.totalPages) * 100);\n }\n\n /**\n Build form from each questions of JSON.\n Pre-populate fields if the JSON already has response stored\n */\n buildForm() {\n this.form = this.fb.group({});\n this.group.itemConfig.forEach((question: any) => {\n // Build controls for checkboxes when these checkboxes are not tied to another question by condition\n if (\n question.answerConfig &&\n question.answerConfig.controlType === 'checkbox' &&\n !question.conditionToAskMe\n ) {\n this.form.addControl(\n question.questionId,\n new FormArray([], CustomValidators.requireCheckboxesToBeCheckedValidator(question.questionId, 1))\n );\n let formArray = this.form.get(question.questionId) as FormArray;\n question.answerConfig.config.forEach((item: any, index: number) => {\n // when each checkbox has it's followup questions item is single checkbox index is it's position\n\n this.addFollowUpQuestions(\n formArray,\n question,\n index,\n item.key,\n question.responses ? question.responses : null\n );\n });\n } else if (question.questionId && !question.conditionToAskMe) {\n let validator: any[] = [];\n validator =\n question.answerConfig.controlType === 'date_input'\n ? [CustomDateValidators.generalValidations()]\n : [];\n this.form.addControl(question.questionId, new FormControl('', validator));\n let control = this.form.get(question.questionId);\n if (control) {\n this.addValuechangeEvent(control, question);\n }\n } else if (question.popUpConfig) {\n question.popUpConfig.forEach(popUpQues => {\n if (popUpQues.type === 'multiConfigPopup') {\n popUpQues.itemConfig.forEach(popQuest => {\n if (popQuest.questionId) {\n let validator: any[] = [Validators.required];\n if (question.answerConfig && question.answerConfig.controlType === 'date_input') {\n validator = [Validators.required, CustomDateValidators.generalValidations()];\n }\n this.form.addControl(popQuest.questionId, new FormControl('', validator));\n }\n });\n } else {\n popUpQues.forEach(popQuest => {\n if (popQuest.questionId) {\n let validator: any[] = [Validators.required];\n if (question.answerConfig && question.answerConfig.controlType === 'date_input') {\n validator = [Validators.required, CustomDateValidators.generalValidations()];\n }\n this.form.addControl(popQuest.questionId, new FormControl('', validator));\n }\n });\n }\n });\n } else if (question.scrollWindow) {\n question.scrollWindow.forEach(popQuest => {\n if (popQuest.questionId) {\n let validator: any[] = [];\n if (question.answerConfig && question.answerConfig.controlType === 'date_input') {\n validator = [Validators.required, CustomDateValidators.generalValidations()];\n }\n this.form.addControl(popQuest.questionId, new FormControl('', validator));\n let control = this.form.get(popQuest.questionId);\n if (control) {\n this.addValuechangeEvent(control, popQuest);\n }\n }\n });\n }\n });\n }\n\n /**\n * add form fields when questions have their own followup questions, like-\n * if checkbox clicked a followup form field will be shown\n * @param formArray FormArray of all the checkboxex in the question\n * @param parentQuestions the parent Question that consist all checkbox as answersConfig.config\n * @param index index of each checkbox in answerConfig.config\n * @param parentValue value actually meant key of each checkbox in JSON ( in JSON value is used for label of checkbox)\n * @param responseArray if this question is answered previously then question.response value, else null\n */\n\n addFollowUpQuestions(formArray: FormArray, parentQuestions: any, index, parentValue, responseArray = null) {\n /**\n For each checkbox followup question count can be different (for -dynamic-multiple control) though\n in json followup question is one. suppose if we click add more relative then it will add another\n set of followup question of same kind. main reason to create this list(JSON Object) is to avoid any overwriting of\n original JSON. followup questions are map to their respective checkbox key(parentValue param)\n */\n if (!this.dynamicFollowUpList[parentValue] && parentQuestions.followUpQAndA) {\n this.dynamicFollowUpList[parentValue] = JSON.parse(JSON.stringify(parentQuestions.followUpQAndA));\n }\n\n // if there are previuosly saved responses when user visited back to this page\n if (responseArray) {\n responseArray.forEach(element => {\n if (element.key === parentValue && element.followUps && element.followUps.length > 0) {\n this.dynamicFollowUpList[parentValue] = [];\n for (let i = 0; i < element.followUps.length; i++) {\n this.dynamicFollowUpList[parentValue].push(...parentQuestions.followUpQAndA);\n }\n }\n });\n }\n\n // inside the formArray there will be another form group which will have the checkbox feild form control\n // each checkbox will be subscribe to valuechange event so that we can detect if any value saved previously\n let questionsGroup = this.fb.group({});\n questionsGroup.addControl(parentQuestions.questionId, new FormControl(null));\n questionsGroup.get(parentQuestions.questionId).valueChanges.subscribe(data => {\n if (data === true) {\n this.handleCheckboxChange(index, parentQuestions, { checked: true }, parentValue);\n }\n });\n\n // find if any response object saved previously using key of each checkbox\n\n let responseObject;\n if (responseArray) {\n responseObject = responseArray.find(item => {\n return item.key === parentValue;\n });\n }\n\n // if there's responses saved for any checkbox we'll patch the value/check the checkbox\n questionsGroup.get(parentQuestions.questionId).patchValue(responseObject ? true : false);\n\n // followupArray added to add array of follow up questions for each checkbox\n questionsGroup.addControl('followUpArray', new FormArray([]));\n let followUpArray = questionsGroup.get('followUpArray') as FormArray;\n\n // if dynamicFollowUpList has followup questions for each checkbox, then each question will have its own formGroup\n if (this.dynamicFollowUpList[parentValue] && this.dynamicFollowUpList[parentValue].length > 0) {\n this.dynamicFollowUpList[parentValue].forEach((questionFollow: any, ind: number) => {\n /*\n each followupQuestion will have its own formGroup because there might be more followup questions for\n each followup question\n */\n let followUpGroup = this.fb.group({});\n\n // if followup question is of type checkbox. E.G. when each parent checkbox is clicked there might be a question\n // consists of more checkbox\n if (questionFollow.answerConfig.controlType === 'checkbox') {\n followUpGroup.addControl(questionFollow.questionId, new FormArray([]));\n let followupFormArray = followUpGroup.get(questionFollow.questionId) as FormArray;\n questionFollow.answerConfig.config.forEach((item: any, indx: number) => {\n this.addFollowUpQuestions(\n followupFormArray,\n questionFollow,\n indx,\n item.key,\n responseObject ? responseObject.followUps : null\n );\n });\n }\n // if question is of type anything other thatn checkbox a formcontrol will be created for each question using questionId\n else if (questionFollow.answerConfig.controlType !== 'checkbox') {\n followUpGroup.addControl(questionFollow.questionId, new FormControl(null));\n // After creating the control, it's time to see if there's any value to patch in the field\n // since it's followUp question, the answer will be in folowUps array of response object\n // if there are followup responses and control type is anything other than string input\n if (\n responseObject &&\n responseObject.followUps &&\n questionFollow.answerConfig.controlType !== 'string_input'\n ) {\n responseObject.followUps.forEach((element, jInd) => {\n if (\n element.responses &&\n element.responses[0].key &&\n element.questionId === questionFollow.questionId\n ) {\n followUpGroup.get(questionFollow.questionId).patchValue(element.responses[0].key);\n } else if (\n !element.responses &&\n element.key &&\n questionFollow.answerConfig.controlType === 'dropdown-dynamic-multiple' &&\n ind === jInd &&\n element.questionId === questionFollow.questionId\n ) {\n followUpGroup.get(questionFollow.questionId).patchValue(element.key);\n if (element.followUps && element.followUps.length > 0) {\n this.nestedFollowUpResponses[element.key + parentValue] = element.followUps;\n }\n } else if (\n !element.responses &&\n element.key &&\n questionFollow.answerConfig.controlType !== 'dropdown-dynamic-multiple' &&\n element.questionId === questionFollow.questionId\n ) {\n followUpGroup.get(questionFollow.questionId).patchValue(element.key);\n if (element.followUps && element.followUps.length > 0) {\n this.nestedFollowUpResponses[element.key + parentValue] = element.followUps;\n }\n }\n });\n }\n\n // if there are followup responses and control type includes substring age_input (age_input_single/age_input_multiple)\n if (\n responseObject &&\n responseObject.followUps[ind] &&\n questionFollow.answerConfig.controlType.includes('age_input')\n ) {\n followUpGroup\n .get(questionFollow.questionId)\n .patchValue(responseObject.followUps[ind].responses);\n }\n }\n followUpArray.push(followUpGroup);\n });\n }\n\n formArray.push(questionsGroup);\n }\n\n /**\n * subscribs to controls valueChange observable\n * @param control control that'll tracked using valueChanges observable\n * @param question the question from which controle is created\n */\n addValuechangeEvent(control: AbstractControl, question: any) {\n if (question.answerConfig.controlType === 'date_input') {\n control.valueChanges.subscribe(value => {\n this.dateInput(question, value);\n });\n } else if (\n question.answerConfig.controlType === 'radio_button' ||\n question.answerConfig.controlType === 'dropdown' ||\n question.answerConfig.controlType === 'string_input_single'\n ) {\n control.valueChanges.subscribe(value => {\n this.handleRadioChange(question, { value: value });\n });\n } else if (question.answerConfig.controlType === 'string_input') {\n control.valueChanges.subscribe(value => {\n this.handleState(question, value);\n });\n }\n\n if (question.responses) {\n this.prePopulateFromJsonResponse(control, question);\n }\n }\n\n handleState(question: any, value: any) {\n if (question.questionKey === 'state') {\n if (question.conditionToTerminateAll) {\n const terminator = question.conditionToTerminateAll as keyof typeof this.response.condition;\n const condition = this.response.condition[terminator] as any;\n if (condition && condition.answerToTerminateInSet) {\n condition.answerToTerminateInSet.forEach((ele: any, indx: number) => {\n condition.answerToTerminateInSet[indx] = ele.toString();\n });\n }\n if (condition.answerToTerminateInSet && condition.answerToTerminateInSet.includes(value)) {\n this.addToActiveTerminatorList(terminator, condition);\n } else {\n this.removeFromActiveTerminatorList(terminator);\n }\n }\n }\n }\n\n ngAfterViewChecked() {\n // if there's any popup button in consent page click listener will be added to that\n this.addClickListenerToPopUpButton();\n }\n\n ngAfterContentChecked() {\n this.cdr.detectChanges();\n }\n\n /**\n * add click listener to each button that opens pop-up,\n * each button will have distinct id that will be used\n * to query the element.\n */\n addClickListenerToPopUpButton() {\n if (this.group) {\n this.group.itemConfig.forEach((ques: any, ind: any) => {\n if (ques.popUpConfig) {\n if (!this.id.includes('#' + ques.statementId + '\\\\.' + 0)) {\n this.id.push('#' + ques.statementId + '\\\\.' + 0);\n this.id.forEach(id => {\n if (document.querySelector(id)) {\n document\n .querySelector(id)\n .addEventListener('click', this.openPopup.bind(this, ques.popUpConfig[ind]));\n if (document.getElementById(ques.statementId + '.0')) {\n document\n .getElementById(ques.statementId + '.0')\n .classList.add('ds-font--16', 'ds-link');\n }\n }\n });\n }\n }\n });\n }\n }\n\n openPopup(popupConfig: any = null) {\n if (popupConfig && popupConfig.type === 'multiConfigPopup') {\n this.showDialogs(popupConfig.itemConfig, 0);\n } else if (popupConfig) {\n this.dialog.open(CommonDialogComponent, {\n data: { popupConfig, form: this.form }\n });\n }\n }\n\n showDialogs(data: string[], idx: number): void {\n if (idx >= data.length) return;\n const config = {\n data: data[idx],\n disableClose: true\n };\n const dialog = this.dialog.open(CommonDialogComponent, config);\n const sub = dialog.afterClosed().subscribe(res => {\n sub.unsubscribe();\n if (res) {\n this.showDialogs(data, idx + 1); // recursively open next dialog\n }\n });\n }\n\n /**\n When radio button value changes\n check if the radio button is tied to terminator\n if it is then match the value to the condition\n if found guilty then, terminate the whole flow\n by showing a message\n\n Check if any other question in same page or any other page\n is tied to the radio button using condition, if found then\n add the condition key to satisfactoryConditions subject,\n if the value doesn't satisfy the condition, the key is removed\n and form is reset\n\n QuestionSource which is used to tie a question to a condition\n is suppose to look like below\n \"questionSource\": \"11.FHGENETICCONDITION\"\n PAGE + page number of the parent question + . + parent questionId\n\n */\n handleRadioChange(question: any, ev: any) {\n if (question.conditionToTerminateAll) {\n /*\n if there's a conditionToTerminateAll attached to the question, then\n find the terminator name and condition.\n */\n const terminator = question.conditionToTerminateAll as keyof typeof this.response.condition;\n const condition = this.response.condition[terminator] as any;\n /*\n if the radio button value matches with the condition, then add that terminator to\n the activeTerminatorList object with terminator name as key and condition as value\n if the radio button value doesn't match and the terminator is in the activeTerminatorList\n then remove the terminator from activeTerminatorList\n */\n if (condition && condition.answerToTerminateInSet) {\n condition.answerToTerminateInSet.forEach((ele: any, indx: number) => {\n condition.answerToTerminateInSet[indx] = ele.toString();\n });\n }\n if (condition.answerToTerminateInSet && condition.answerToTerminateInSet.includes(ev.value)) {\n this.addToActiveTerminatorList(terminator, condition);\n } else {\n this.removeFromActiveTerminatorList(terminator);\n }\n this.buildConditionalQuestions(question, ev);\n } else {\n this.buildConditionalQuestions(question, ev);\n }\n }\n\n buildConditionalQuestions(question: any, ev: any) {\n /*\n questionSource is a bridge that connects two question in different pages via a condition\n it is a string (\"11.FHGENETICCONDITION\") consists of sequence number of the group of parent question\n and questionId of the parent question. using that question source condition is found.\n */\n let questionSource = `${this.group.sequence}.${question.questionId}`;\n if (this.doc().isHra() && this.doc().getData().header.gender === 'Male' && this.currentPage > 3) {\n questionSource = `${this.group.sequence + 1}.${question.questionId}`;\n }\n const condition = this.filterConditionBySource(this.response.condition, questionSource);\n let conditionKey = Object.keys(condition)[0];\n let conditionValue = Object.values(condition)[0];\n\n /** HRA related code */\n if (this.doc().isHra()) {\n if (Object.keys(condition).length === 2) {\n for (let condi in condition) {\n this.questionnairService.removeSatisfactoryConditions(condi);\n // update the form i.e remove controls from the form using conditionKey\n this.updateFormRelatedToCondition(condi, 'REMOVE', this.form.touched);\n if (ev.value == condition[condi].answerToOpenGroupInSet[0]) {\n conditionKey = condi;\n conditionValue = condition[condi];\n }\n }\n }\n\n if (conditionValue && conditionValue.answerToOpenGroupInSet.length > 1 && !this.form.pristine) {\n this.questionnairService.removeSatisfactoryConditions(conditionKey);\n // update the form i.e remove controls from the form using conditionKey\n this.updateFormRelatedToCondition(conditionKey, 'REMOVE', true);\n }\n }\n\n /*\n if the radio button value matches the condition then the conditionKey or name of the condition\n is pushed in the satisfactoryConditions array. also add new control that depended on the condition\n */\n if (conditionValue && conditionValue.answerToOpenGroupInSet) {\n conditionValue.answerToOpenGroupInSet.forEach((ele: any, indx: number) => {\n conditionValue.answerToOpenGroupInSet[indx] = ele.toString();\n });\n }\n if (conditionValue && conditionValue.answerToOpenGroupInSet.includes(ev.value)) {\n // there will be local and global copy of satisfactoryConditions.\n // global copy consists satisfied conditions for entire app in one place\n // local copy will only consists condition for this page.\n // the need for local copy - when user click previous button from current page\n // we are not supposed to save current page form state in this case we will remove\n // all the conditions of current page from global copy.\n if (!this.satisfactoryConditions.includes(conditionKey)) {\n this.satisfactoryConditions.push(conditionKey);\n }\n this.questionnairService.setSatisfactoryConditions(conditionKey);\n\n // update the form i.e add controls ito the form using conditionKey\n this.updateFormRelatedToCondition(conditionKey, 'ADD');\n } else {\n /*\n if radio button value doesn't match with the condition then get rd of the condition\n from local and global both array also remove all the controls that were depended on the\n condition\n */\n var index = this.satisfactoryConditions.indexOf(condition);\n if (index !== -1) {\n this.satisfactoryConditions.splice(index, 1);\n }\n this.questionnairService.removeSatisfactoryConditions(conditionKey);\n\n // update the form i.e remove controls from the form using conditionKey\n this.updateFormRelatedToCondition(conditionKey, 'REMOVE', true);\n }\n }\n\n /**\n * There can be multiple terminator at a time the active terminators will be\n * added to a list so that template can loop through it and show as stacked message\n * @param terminator name of the terminator\n * @param condition the condition at which the terminator will be active\n */\n addToActiveTerminatorList(terminator, condition) {\n let terminatorCondition = {\n name: terminator,\n ...condition\n };\n var ind = this.questionnairService.activeTerminatorList.findIndex(terminatorItem => {\n return terminatorItem.name === terminator;\n });\n\n if (ind === -1) {\n this.questionnairService.activeTerminatorList.push(terminatorCondition);\n this.questionnairService.activeTerminators$.next(this.questionnairService.activeTerminatorList);\n this.dialog\n .open(ErrorDialogComponent, {\n disableClose: true,\n autoFocus: false,\n width: '696px',\n data: {\n content: this.questionnairService.activeTerminatorList\n }\n })\n .afterClosed()\n .subscribe(() => { });\n }\n }\n\n /**\n * This removes a terminator from activeTerminatorList.\n * @param terminator name of the terminator that needs to be removed\n */\n removeFromActiveTerminatorList(terminator) {\n var ind = this.questionnairService.activeTerminatorList.findIndex(terminatorItem => {\n return terminatorItem.name === terminator;\n });\n if (ind !== -1) {\n this.questionnairService.activeTerminatorList.splice(ind, 1);\n }\n }\n\n /**\n find questions tied to a provided condition and add or remove control\n tied to the condition.\n */\n updateFormRelatedToCondition(condition, update, removeResponse = null) {\n /*\n filteredArray consists of questions that suppose to be showed based on a condition,\n later those formControls will be added or removed (based on the update flag) from\n the form based on this array. remove response flag is used to remove reponses save in json\n for previous selection\n */\n\n let filteredArray = [];\n this.group.itemConfig.forEach(item => {\n if (item.conditionToAskMe === condition) {\n filteredArray.push(item);\n }\n if (item.scrollWindow) {\n item.scrollWindow.forEach(itemSc => {\n if (itemSc.conditionToAskMe === condition) {\n filteredArray.push(itemSc);\n }\n });\n }\n });\n\n if (filteredArray.length > 0 && update === 'REMOVE') {\n this.removeFormControl(filteredArray, removeResponse);\n } else if (filteredArray.length > 0 && update == 'ADD') {\n this.addFormControl(filteredArray);\n }\n }\n\n /**\n remove form fields related to array of questions\n */\n removeFormControl(array, removeResponse = null) {\n array.forEach(question => {\n if (this.form.get(question.questionId)) {\n this.form.get(question.questionId)?.reset();\n if (question.answerConfig.controlType === 'checkbox') {\n question.answerConfig.config.forEach((item: any, index: number) => {\n this.handleCheckboxChange(index, question, { checked: false }, item.key);\n });\n }\n }\n this.form.removeControl(question.questionId);\n this.disabledCheckbox = [];\n if (removeResponse) {\n question.responses = [];\n }\n });\n }\n\n /**\n add form fields related to array of questions\n */\n addFormControl(array) {\n array.forEach(question => {\n if (\n question.answerConfig &&\n question.answerConfig.controlType === 'checkbox' &&\n question.conditionToAskMe\n ) {\n this.form.addControl(\n question.questionId,\n new FormArray([], CustomValidators.requireCheckboxesToBeCheckedValidator(question.questionId, 1))\n );\n let formArray = this.form.get(question.questionId) as FormArray;\n question.answerConfig.config.forEach((item: any, index: number) => {\n this.addFollowUpQuestions(\n formArray,\n question,\n index,\n item.key,\n question.responses ? question.responses : null\n );\n });\n } else if (question.questionId && question.conditionToAskMe) {\n let validator: any[] = [];\n validator =\n question.answerConfig.controlType === 'date_input'\n ? [CustomDateValidators.generalValidations()]\n : [];\n this.form.addControl(question.questionId, new FormControl('', validator));\n let control = this.form.get(question.questionId);\n if (control) {\n this.addValuechangeEvent(control, question);\n }\n }\n });\n }\n\n /**\n event listener to input events of date_input\n Check if the input value is tied to terminator.\n If it is, then match the value to the condition.\n If found guilty then, terminate the whole flow\n by showing a message\n */\n dateInput(question: any, value: any) {\n if (question.questionKey === 'birthDate') {\n const age = this.dateService.getAge(value);\n if (value.match(/^\\d{4}-\\d{2}-\\d{2}$/)) {\n const terminator = question.conditionToTerminateAll as keyof typeof this.response.condition;\n const condition = this.response.condition[terminator] as any;\n if (\n (condition.answerToTerminateMin && age > condition.answerToTerminateMin) ||\n (condition.answerToTerminateMax && age < condition.answerToTerminateMax)\n ) {\n this.addToActiveTerminatorList(terminator, condition);\n } else {\n this.removeFromActiveTerminatorList(terminator);\n }\n }\n }\n }\n\n /**\n Event Listener to checkbox input\n If there are followup questions related to checkbox inputs,\n then build unique identifier, that will connect the checkbox\n input value to a followup question. page value added to the identifier,\n so that it won't mess with any identifier in other pages.\n unique identifier is pushed to an array when the checkbox value\n matches the condition. if doesn't match then the identifier is removed\n and form field get reset.\n */\n\n handleCheckboxChange(index: any, question: any, event: any, value: any) {\n value = event.checked ? value : null;\n if (question.followUpQAndA) {\n question.followUpQAndA.forEach((ques: any) => {\n const uniqIdentifier: string = this.currentPage + (index + ques.conditionToAskMe);\n if (\n this.getConditionAnswer(ques.conditionToAskMe, value) &&\n !this.questionnairService.indexesToShow.includes(uniqIdentifier)\n ) {\n this.questionnairService.indexesToShow.push(uniqIdentifier);\n } else if (\n !this.getConditionAnswer(ques.conditionToAskMe, value) &&\n this.questionnairService.indexesToShow.includes(uniqIdentifier)\n ) {\n var ind = this.questionnairService.indexesToShow.indexOf(uniqIdentifier);\n if (ind !== -1) {\n this.questionnairService.indexesToShow.splice(ind, 1);\n let formArray = this.form.get(question.questionId) as FormArray;\n if (formArray.at(index)) {\n formArray.at(index).reset();\n formArray.at(index).setErrors(null);\n }\n }\n }\n });\n this.questionnairService.showFollowUp$.next(this.questionnairService.indexesToShow);\n }\n this.disableCheckboxesOnSingletonSelect(value, question, index);\n }\n\n handleMultiSelectChange(question: any, event: any, value: any) {\n let selectAnswerConfig = question.answerConfig.config;\n let singletonOption = selectAnswerConfig.filter(e => e.singleton);\n if (singletonOption && singletonOption.length > 0) {\n let control = this.form.get(question.questionId);\n if (control) {\n const isSingletonSelected = singletonOption.some(option => event.value.includes(option.valueHtml));\n if (isSingletonSelected) {\n control.reset(); //singleton option selected - clear the other selected options.\n let singletonOptionSelected = singletonOption.filter(option =>\n event.value.includes(option.valueHtml)\n );\n control.patchValue([singletonOptionSelected[0].valueHtml]);\n question.answerConfig.config.forEach(element => {\n if (element.valueHtml != singletonOptionSelected[0].valueHtml) {\n element.disable = true;\n this.setCSSonElementInDropdown(element.disable, element);\n }\n });\n } else {\n // re-enable option if singleton option is not selected\n question.answerConfig.config.forEach(element => {\n element.disable = false;\n this.setCSSonElementInDropdown(element.disable, element);\n });\n }\n }\n }\n }\n\n /** Applying css to each element **/\n setCSSonElementInDropdown(value: boolean, element) {\n if (value) {\n if (document.getElementById(`dropdown-item${element.valueHtml}`)) {\n document\n .getElementById(`dropdown-item${element.valueHtml}`)\n .setAttribute('style', 'opacity: 0.5; pointer-events: none');\n }\n } else {\n if (document.getElementById(`dropdown-item${element.valueHtml}`)) {\n document.getElementById(`dropdown-item${element.valueHtml}`).setAttribute('style', 'opacity: 1;');\n }\n }\n }\n\n /**\n If a singleton checkbox value (None, I don't Know) gets selected,\n then other checkboxes are disabled and followup form fields along\n with the checkbox itself is reset.\n The disabled attribute is used to avoid removal of controls from array\n when field are disabled with abstract control.\n */\n\n disableCheckboxesOnSingletonSelect(value, question, index) {\n if (value && question.answerConfig.config[index].singleton) {\n question.answerConfig.config.forEach((config, ind) => {\n if (ind !== index && !this.disabledCheckbox.includes(ind + question.questionId)) {\n this.questionnairService.indexesToShow.length = 0;\n let formArray = this.form.get(question.questionId) as FormArray;\n this.disabledCheckbox.push(ind + question.questionId);\n this.disabledList$.next(this.disabledCheckbox);\n if (formArray.at(ind)) {\n formArray.at(ind).reset();\n }\n }\n });\n } else if (!value && question.answerConfig.config[index].singleton) {\n question.answerConfig.config.forEach((config, ind) => {\n if (ind !== index) {\n let formArray = this.form.get(question.questionId) as FormArray;\n if (formArray.length > 0) {\n formArray.at(ind).enable();\n }\n let indexOfItem = this.disabledCheckbox.indexOf(ind + question.questionId);\n if (indexOfItem !== -1) {\n this.disabledCheckbox.splice(indexOfItem, 1);\n }\n this.disabledList$.next(this.disabledCheckbox);\n }\n });\n }\n }\n\n /**\n Matches a input value to a condition\n if the values match, then return true\n else null\n */\n getConditionAnswer(conditionToAsk: string, value: any) {\n const conditionName = conditionToAsk as keyof typeof this.response.condition;\n const condition = this.response.condition[conditionName] as any;\n\n if (condition && value) {\n if (condition.type === 'ONPARENTNOTINVAL') {\n return !condition.promptOnParentNotInSet.includes(value);\n } else if (condition.type === 'ONPARENTINVAL') {\n return condition.promptOnParentInSet.includes(value);\n } else if (condition.type === 'ONPARENTANY' && value) {\n return true;\n } else {\n return null;\n }\n } else {\n return null;\n }\n }\n\n /**\n find a question object by its sequence\n */\n getQuestionBySequence(questions: any[], sequence: Number) {\n return questions.find((question: any) => {\n return question.sequence === sequence;\n });\n }\n\n getAnswerById(id: string) {\n return this.answers.find((answer: any) => {\n return answer.answerId === id;\n });\n }\n\n /**\n if json has questions for next page set form data in\n formData (in questionnairService) store by sequence and go to next page\n else at the end of the pages traverse through formData and set\n responses in the JSON, if user coming from review page using edit button\n then set the formData and jsonData and go back to review page.\n */\n onNext() {\n this.removeListener();\n let nextPage = this.currentPage + 1;\n this.questionnairService.previousPageNo = nextPage;\n let previousRoute = this.questionnairService.previousRoute ?? '';\n if (this.doc().isHra() && this.doc().getTotalPages() === this.currentPage) {\n this.onSubmit();\n } else if (!previousRoute.includes('/review-details') && this.doc().getQAndAGroupBySequence(nextPage)) {\n this.questionnairService.saveFormData(this.currentPage, this.form.value);\n this.route.navigate([`questions/${nextPage}`], {\n queryParams: this.questionnairService.urlQueryParams\n });\n } else {\n this.questionnairService.saveFormData(this.currentPage, this.form.value);\n this.route.navigate([`review-details`], {\n queryParams: this.questionnairService.urlQueryParams\n });\n }\n this.dynamicFollowUpList = {};\n }\n\n /**\n Remove the Event Listener for the pop up buttons\n */\n removeListener() {\n this.id.forEach((id, ind) => {\n if (document.querySelector(id)) {\n document.querySelector(id).removeEventListener('click', this.openPopup.bind(this));\n }\n this.id.splice(ind, 1);\n });\n }\n\n /**\n Event Listener for the previous button\n it removes the popup button event listener\n and go back to the previous route\n */\n onPrevious() {\n this.removeListener();\n this.dynamicFollowUpList = {};\n /* if(!this.checkIfHraDataLoaded()) {\n this.satisfactoryConditions.forEach(condition => {\n this.questionnairService.removeSatisfactoryConditions(condition)\n this.updateFormRelatedToCondition(condition, 'REMOVE')\n });\n } */\n this.questionnairService.saveFormData(this.currentPage, this.form.value);\n this.questionnairService.previousPageNo =\n this.questionnairService.previousPageNo > 1\n ? this.questionnairService.previousPageNo - 1\n : this.questionnairService.previousPageNo;\n if (this.questionnairService.isPageReloaded) {\n this.route.navigate([`questions/${this.questionnairService.previousPageNo}`], {\n queryParams: this.questionnairService.urlQueryParams\n });\n } else {\n this._location.back();\n }\n }\n\n /**\n Filter a condition object by the question source.\n question source suppose to look like below\n \"questionSource\": \"11.FHGENETICCONDITION\"\n page/sequence number of the parent question + . + parent questionId\n */\n filterConditionBySource(obj: Object, source: string) {\n const asArray = Object.entries(obj);\n const filtered = asArray.filter(([key, value]) => value.questionSource === source);\n const condition = Object.fromEntries(filtered);\n return condition;\n }\n\n saveAndExit() {\n this.loading = true;\n const saveRequest: SaveRequest = {\n origin: 'QuestionnairComponent/saveAndExit',\n currentPage: this.currentPage,\n formData: this.form.value,\n saveAsCompleted: false\n };\n\n this.questionnairService.save$(saveRequest).then(\n (res: SaveResult) => {\n this.loading = false;\n if (res.payloadDataFixed) {\n window.location.reload();\n } else {\n this.showSaveAndExitDialog();\n }\n },\n err => {\n this.loading = false;\n this.dialogService.invokeDialog(this.dialog, DialogKey.SaveError);\n }\n );\n }\n\n onSubmit() {\n this.loading = true;\n const saveRequest: SaveRequest = {\n origin: 'QuestionnairComponent/onSubmit',\n currentPage: this.currentPage,\n formData: this.form.value,\n saveAsCompleted: true\n };\n\n this.questionnairService.save$(saveRequest).then(\n (res: SaveResult) => {\n this.loading = false;\n if (res.payloadDataFixed) {\n window.location.reload();\n } else {\n this.route.navigate([`/confirmation`], {\n queryParams: this.questionnairService.urlQueryParams\n });\n }\n },\n err => {\n this.loading = false;\n this.dialogService.invokeDialog(this.dialog, DialogKey.SaveError);\n }\n );\n }\n\n openRefreshModel() {\n window.open(environment.accountUrl, '_blank');\n this.isPageRefreshModelOpened = true;\n this.dialog\n .open(CommonDialogComponent, {\n disableClose: true,\n autoFocus: false,\n panelClass: ['ds-modal', 'ds-grid--12', 'ds-elevation--L3'],\n data: {\n pageRefresh: true\n }\n })\n .afterClosed()\n .subscribe(() => {\n this.isPageRefreshModelOpened = false;\n window.location.reload();\n });\n }\n\n nextActions(question) {\n if (question.popUpConfig.length) {\n this.openPopup(question.popUpConfig[0]);\n }\n }\n\n showSaveAndExitDialog() {\n this.dialog\n .open(CommonDialogComponent, {\n disableClose: true,\n data: {\n data: this.doc().isHra() ? hraData.saveAndExit : gssPopupData.saveAndExit,\n showOnlySaveAndExitDialog: true\n }\n })\n .afterClosed()\n .subscribe((response: string) => {\n if (response) {\n window.location.href = environment.accountUrl;\n } else {\n this.isPageRefreshModelOpened = false;\n window.location.reload();\n }\n });\n }\n}\n","\n\n
\n \n
\n\n\n
\n
\n
\n

\n {{ questionnairService.pageTitle }}\n

\n \n
\n \n
\n \n 0\">\n
\n
\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n
\n
\n \n
\n \n {{ scWindow.titleAscii }}\n \n \n \n \n \n \n \n \n
\n \n \n {{ scWindow.titleAscii }}\n \n \n
\n \n \n \n
\n
\n
\n \n
\n
\n \n \n \n {{ question.subtitleAscii }}\n \n \n {{ question.titleAscii }}\n \n \n \n
\n {{ form.get(question.questionId)?.errors | validationError }}\n
\n
\n \n \n \n {{ question.subtitleAscii }}\n \n \n {{ question.titleAscii }}\n \n \n \n
\n {{ form.get(question.questionId)?.errors | validationError }}\n
\n
\n \n \n \n \n
\n \n

\n

\n \n \n
\n
\n \n
\n
\n
\n
\n
\n
\n \n \n \n
\n
\n

\n
\n \n \n \n \n \n \n \n \n \n \n \n \n
\n \n

\n
\n
\n
\n \n \n \n \n \n \n \n \n
\n
\n
\n \n {{ question.titleAscii }}\n \n \n
\n
\n \n {{ question.subtitleAscii }}\n \n \n
\n
\n \n \n \n \n \n
\n \n\n \n \n
\n
\n \n \n \n
\n
\n
\n \n\n \n \n \n \n \n {{ question.titleAscii }}\n \n \n \n \n {{ question.subtitleAscii }}\n \n
\n \n
\n \n \n
\n \n \n
\n 2\"\n >\n +{{ (form.get(question.questionId).value?.length || 0) - 2 }}\n \n
\n \n \n \n \n
\n
\n
\n\n \n \n \n {{ question.titleAscii }}\n \n \n \n \n {{ question.subtitleAscii }}\n \n
\n \n
\n \n \n \n {{\n question?.titleAscii ? '′' : '″'\n }}\n \n \n \n
\n\n \n \n \n \n {{ question.titleAscii }}\n \n \n {{ question.subtitleAscii }}\n \n \n \n
\n {{ question.answerConfig?.config.defaultText }}\n
\n
\n {{\n form.get(question.questionId)?.errors\n | validationError: question.answerConfig?.config\n }}\n
\n \n
\n\n \n \n \n \n {{ question.subtitleAscii }}\n \n \n {{ question.titleAscii }}\n \n \n \n \n \n \n \n 0\"\n formArrayName=\"followUpArray\"\n >\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 0) ||\n !form.valid ||\n isPageRefreshModelOpened\n }\"\n [disabled]=\"\n ((questionnairService.activeTerminators$ | async) &&\n (questionnairService.activeTerminators$ | async).length > 0) ||\n !form.valid ||\n isPageRefreshModelOpened\n \"\n (click)=\"onNext()\"\n class=\"ds-button --primary\"\n [attr.aria-label]=\"checkIfHraDataLoaded() && checkHraPages() ? 'Submit' : 'Continue'\"\n >\n \n \n \n \n\n\n \n\n","import { Component } from '@angular/core';\nimport { buildVersion as bv } from 'src/build-version';\n\n@Component({\n // eslint-disable-next-line\n selector: 'build-version',\n templateUrl: './build-version.component.html',\n styleUrls: ['./build-version.component.scss']\n})\nexport class BuildVersionComponent {\n buildVersion = bv;\n}\n","
{{ buildVersion | json }}
\n","import { Component, Inject, OnInit } from '@angular/core';\nimport { FormBuilder, FormGroup } from '@angular/forms';\nimport { MatDialogRef, MAT_DIALOG_DATA } from '@angular/material/dialog';\n\n@Component({\n selector: 'gss-common-dialog',\n templateUrl: './common-dialog.component.html',\n styleUrls: ['./common-dialog.component.scss']\n})\nexport class CommonDialogComponent implements OnInit {\n consentForm: FormGroup;\n data;\n pageRefresh: boolean;\n constructor(\n @Inject(MAT_DIALOG_DATA) public popupData: any,\n private fb: FormBuilder,\n public dialogRef: MatDialogRef\n ) {\n this.data = popupData.popupConfig;\n this.consentForm = this.popupData.form;\n this.pageRefresh = popupData.pageRefresh;\n }\n\n // eslint-disable-next-line @angular-eslint/no-empty-lifecycle-method\n ngOnInit(): void {}\n\n nextAction(item: any) {\n if (item.type === 'link') {\n window.open(item.linkSource, '_blank');\n this.dialogRef.close(true);\n } else if (item.type === 'refresh') {\n this.dialogRef.close(true);\n window.location.reload();\n }\n }\n\n onContinueClicked() {\n this.dialogRef.close(true);\n }\n\n closePopup(data: boolean) {\n this.dialogRef.close(data);\n }\n}\n","
\n
\n \n \n

\n
\n
\n\n
\n \n \n \n \n \n \n
\n\n \n \n
\n \n \n \n
\n
\n
\n \n
\n
\n\n
\n \n \n \n
\n\n \n
\n

\n {{ popupData?.headerHtml }}\n

\n \n {{ bodyItem?.statement?.bodyHtml }}\n \n
\n \n\n \n
\n
\n \n \n {{ bodyItem.button?.buttonHtml }}\n \n \n \n \n \n
\n
\n
\n \n\n\n
\n
\n \n
\n \n
\n

\n {{ popupData.data.header }}\n

\n \n

\n

\n
\n
\n
\n \n
\n
\n \n \n \n
\n
\n
\n
\n\n
\n \n
\n \n \n
\n \n
\n

\n {{ popupData.data.header }}\n

\n \n

\n

\n
\n
\n
\n \n
\n
\n \n \n \n
\n
\n
\n
\n\n","import { AfterViewInit, ChangeDetectorRef, Component, ElementRef, Input, OnInit, ViewChild } from '@angular/core';\nimport { FormBuilder, FormControl, FormGroup } from '@angular/forms';\nimport { MatCheckbox } from '@angular/material/checkbox';\nimport { MatDialog } from '@angular/material/dialog';\nimport { ApiService } from '../../services/api.service';\nimport { QuestionnairService } from '../../services/questionnair.service';\nimport { VideoDialogComponent } from '../video-dialog/video-dialog.component';\nimport { default as defaultContent } from '../../../../assets/json-config-files/default.json';\n\n@Component({\n selector: 'gss-content-media',\n templateUrl: './content-media.component.html',\n styleUrls: ['./content-media.component.scss']\n})\nexport class ContentMediaComponent implements OnInit, AfterViewInit {\n @ViewChild('cb', { static: true }) cb: MatCheckbox;\n\n @Input() response: any; // entire jSON\n @Input() currentGroup: any; // entire array where current followup question resides\n @Input() currentPage: any; // current page number\n itemConfig: any;\n form: FormGroup;\n loading = true;\n isCbChecked = false;\n @ViewChild('videoPlayer', { static: false }) videoplayer: ElementRef;\n supposedCurrentTime = 0;\n displayObj: any = {};\n pageTitle: string;\n videoOptions = {\n autoplay: false,\n fluid: true,\n controls: true,\n muted: false,\n sources: [\n {\n src: null,\n type: 'application/x-mpegURL'\n }\n ]\n };\n videoSourceType = {\n m3u8: 'application/x-mpegURL',\n mpd: 'application/dash+xml'\n };\n controlName: any;\n constructor(\n public questionnairService: QuestionnairService,\n private dialog: MatDialog,\n private fb: FormBuilder,\n private ref: ChangeDetectorRef,\n private api: ApiService\n ) {}\n\n ngOnInit(): void {\n this.itemConfig = this.currentGroup;\n this.itemConfig.forEach((item: any) => {\n if (item.videoId) {\n this.displayObj['videoId'] = item;\n this.videoOptions.sources[0] = this.videoSourcesConfig(item);\n } else if (item.answerConfig?.controlType === 'checkbox') {\n this.displayObj['checkbox'] = item;\n } else if (item.statement?.type === 'link') {\n this.displayObj['link'] = item;\n } else if (item.popUp) {\n this.displayObj['popUp'] = item.popUp;\n } else if (item.statement?.type === 'header') {\n this.displayObj['header'] = item;\n }\n });\n this.buildForm();\n this.getJsonFromValue(this.response.header.testCode);\n }\n\n ngAfterViewInit(): void {\n const fullName = document.getElementById('fullName') as HTMLElement;\n const ORDERING_PHYSICIAN_NAME = document.getElementById('physicanName') as HTMLElement;\n\n const firstName = this.questionnairService.getQuestionnaireDocument().getUserDemographics()['firstName'];\n const lastName = this.questionnairService.getQuestionnaireDocument().getUserDemographics()['lastName'];\n\n fullName.innerHTML = fullName.innerHTML.replace('{firstName} {lastName}', `${firstName} ${lastName}`);\n ORDERING_PHYSICIAN_NAME.innerHTML = ORDERING_PHYSICIAN_NAME.innerHTML.replace(\n '{ORDERING_PHYSICIAN_NAME}',\n `${this.response.header.physician.name.first} ${this.response.header.physician.name.last}`\n );\n\n this.loading = false;\n this.ref.detectChanges();\n }\n\n videoSourcesConfig(item) {\n const src = item?.video?.source;\n let ext = undefined;\n if (src) {\n ext = src.split('.').pop();\n }\n // the video file should always have a valid extension, but if not, default to mpd\n return {\n src: src,\n type: this.videoSourceType[ext ? ext : 'mpd']\n };\n }\n\n videoEnded(question: any) {\n const condition = this.filterConditionById(this.response.condition, question.videoId);\n const conditionKey = Object.keys(condition)[0];\n if (conditionKey) {\n this.questionnairService.setSatisfactoryConditions(conditionKey);\n }\n }\n\n onCbClick(isWatched: boolean) {\n this.isCbChecked = !this.isCbChecked;\n this.form.get(this.controlName).patchValue(isWatched);\n if (this.isCbChecked && isWatched) {\n this.dialog\n .open(VideoDialogComponent, {\n disableClose: true,\n autoFocus: false,\n data: {\n content: this.displayObj.popUp\n }\n })\n .afterClosed()\n .subscribe(() => {\n this.questionnairService.saveFormData(this.currentPage, this.form.value);\n });\n }\n }\n\n seeking(e: Event) {\n e.preventDefault();\n const video = document.getElementById('video-player') as HTMLMediaElement;\n const forwardedTime = video.currentTime - this.supposedCurrentTime;\n if (forwardedTime > 0.01) {\n video.currentTime = this.supposedCurrentTime;\n }\n }\n timeupdate(e: Event) {\n const video = document.getElementById('video-player') as HTMLMediaElement;\n if (!video.seeking) {\n this.supposedCurrentTime = video.currentTime;\n }\n }\n\n downloadPDF(link: any) {\n this.questionnairService.downloadPDF().subscribe(res => {\n const fileURL = URL.createObjectURL(res);\n window.open(fileURL, '_blank');\n });\n }\n\n buildForm() {\n this.form = this.fb.group({});\n let videoId = null;\n this.itemConfig.forEach((question: any) => {\n if (question.videoId) {\n videoId = question.videoId;\n }\n\n // Build controls for checkboxes when these checkboxes are not tied to another question by condition\n if (question.answerConfig && question.answerConfig.controlType === 'checkbox') {\n this.controlName = question.questionId;\n this.form.addControl(question.questionId, new FormControl(null));\n if (question?.responses?.length) {\n const condition = this.filterConditionById(this.response.condition, videoId);\n const conditionKey = Object.keys(condition)[0];\n if (conditionKey) {\n this.questionnairService.setSatisfactoryConditions(conditionKey);\n }\n }\n }\n });\n }\n\n filterConditionById(obj: Object, source: string) {\n const asArray = Object.entries(obj);\n const filtered = asArray.filter(([key, value]) => value.video === source);\n return Object.fromEntries(filtered);\n }\n\n getJsonFromValue(testCode: string) {\n const url = `/assets/json-config-files/${testCode}.json`;\n this.api.get(url).subscribe(\n (data: any) => (this.pageTitle = data && data.pageTitle ? data.pageTitle : defaultContent.pageTitle),\n () => (this.pageTitle = defaultContent.pageTitle)\n );\n }\n}\n","
\n \n
\n
\n

\n {{ response.qAndAGroups[1].titleHtml }}\n

\n
\n
\n
\n \n \n \n \n \n
\n \n \n \n
\n
\n
\n
\n
\n
\n
\n
\n \n

\n {{ displayObj.header?.statement?.headerHtml }}\n

\n
\n
\n \n \n
\n
\n
\n \n
\n
\n \n
\n \n \n \n \n
\n \n \n \n \n \n
\n \n
\n \n \n \n \n\n","import { Component, OnInit } from '@angular/core';\nimport { ActivatedRoute } from '@angular/router';\n\nimport { DevService } from 'src/app/shared/services/dev.service';\n\n@Component({\n // eslint-disable-next-line\n selector: 'dev',\n template: '
DEV
'\n})\nexport class DevComponent implements OnInit {\n constructor(\n private activatedRoute: ActivatedRoute,\n private devService: DevService\n ) {}\n\n ngOnInit(): void {\n this.activatedRoute.queryParams.subscribe(params => {\n const value = params['dev'];\n const enable = value === '1' || 'true'.toUpperCase() === value.toUpperCase();\n this.devService.enableDev(enable);\n location.href = '/';\n });\n }\n}\n","import { Component, Inject, OnInit } from '@angular/core';\nimport { MAT_DIALOG_DATA } from '@angular/material/dialog';\nimport { QuestionnairService } from '../../services/questionnair.service';\n\n@Component({\n selector: 'gss-error-dialog',\n templateUrl: './error-dialog.component.html',\n styleUrls: ['./error-dialog.component.scss']\n})\nexport class ErrorDialogComponent implements OnInit {\n content: any;\n constructor(\n @Inject(MAT_DIALOG_DATA) public popupData: any,\n public questionnairService: QuestionnairService\n ) {\n this.content = popupData.content[0];\n }\n\n // eslint-disable-next-line @angular-eslint/no-empty-lifecycle-method\n ngOnInit(): void {}\n}\n","
\n \n
\n\n
\n

\n \n Something went wrong\n

\n \n
\n
\n","import { Component } from '@angular/core';\n\n@Component({\n selector: 'gss-footer',\n templateUrl: './footer.component.html',\n styleUrls: ['./footer.component.scss']\n})\nexport class FooterComponent {\n year = new Date().getFullYear();\n constructor() {}\n}\n","
\n
\n
\n
\n
\n \n
\n
\n \n \n \n \n
\n
\n
\n
\n
\n
\n
\n
    \n \n \n \n \n \n \n \n
\n
\n
\n \n Quest® is the brand name used for services offered by Quest Diagnostics Incorporated\n and its affiliated companies. Quest Diagnostics Incorporated and certain affiliates are CLIA\n certified laboratories that provide HIPAA covered services. Other affiliates operated under the\n Quest® brand, such as Quest Consumer Inc., do not provide HIPAA covered services.\n \n \n Quest, Quest Diagnostics, the associated logo, Nichols Institute and all associated Quest\n Diagnostics marks are the registered trademarks of Quest Diagnostics. All third party marks — ®\n and ™ — are the property of their respective owners. © {{ year }} Quest Diagnostics\n Incorporated. All rights reserved.\n \n \n Testing purchased by you through Quest's online store is ordered by a licensed healthcare\n professional authorized to order laboratory testing in accordance with state laws.\n \n
\n
\n
\n
\n\n\n
\n \n \n \n
\n
\n\n
  • \n \n \n {{ title }}\n \n
  • \n
    \n","import { Component, Input, OnInit } from '@angular/core';\n\n@Component({\n selector: 'gss-form-header',\n templateUrl: './form-header.component.html',\n styleUrls: ['./form-header.component.scss']\n})\nexport class FormHeaderComponent {\n @Input() group: any;\n constructor() {}\n}\n","
    \n

    \n {{ group.titleAscii }}\n

    \n
    \n

    \n {{ group.subtitleAscii }}\n

    \n
    \n","import { Component, Input } from '@angular/core';\n\n@Component({\n selector: 'gss-progressbar',\n templateUrl: './progressbar.component.html',\n styleUrls: ['./progressbar.component.scss']\n})\nexport class ProgressbarComponent {\n @Input() value!: string;\n\n constructor() {}\n}\n","
    \n \n {{ value }}%\n
    \n","import { Component, Inject } from '@angular/core';\nimport { MatSnackBarRef, MAT_SNACK_BAR_DATA } from '@angular/material/snack-bar';\n\n@Component({\n selector: 'gss-toaster',\n templateUrl: './toaster.component.html',\n styleUrls: ['./toaster.component.scss']\n})\nexport class ToasterComponent {\n constructor(\n public snackBarRef: MatSnackBarRef,\n @Inject(MAT_SNACK_BAR_DATA) public data: any\n ) {}\n}\n","
    \n \n {{ data?.message }}\n \n \n
    \n","import { Component, HostListener, Input, OnInit, ViewChild, ViewEncapsulation } from '@angular/core';\nimport { NgbTooltip } from '@ng-bootstrap/ng-bootstrap';\n\n@Component({\n selector: 'gss-tooltip',\n templateUrl: './tooltip.component.html',\n styleUrls: ['./tooltip.component.scss'],\n encapsulation: ViewEncapsulation.ShadowDom\n})\nexport class TooltipComponent implements OnInit {\n /*---------- DesignSystem Tooltip ----------*/\n /*\n _position!: string;\n _color!: string;\n _size!: string;\n _icon!: string;\n\n @Input() tooltip = 'Quest Diagnostics';\n @Input() set color(value: string) {\n this._color = 'ds-' + value\n }\n @Input() set position(value: string) {\n this._position = '--' + value\n }\n\n @Input() set size(value: string) {\n this._size = 'ds-font--' + value\n }\n @Input() set icon(value: string) {\n this._icon = 'ds-icon--' + value\n } */\n\n @Input() tooltip = 'Quest Diagnostics';\n @ViewChild('bsTooltip') bsTooltip: NgbTooltip;\n\n constructor() {}\n // eslint-disable-next-line @angular-eslint/no-empty-lifecycle-method\n ngOnInit(): void {}\n\n @HostListener('window:resize')\n onResize() {\n this.bsTooltip.close();\n }\n}\n","\n
    \n
    \n
    \n
    \n\n","import { Component, Inject } from '@angular/core';\nimport { MAT_DIALOG_DATA } from '@angular/material/dialog';\nimport { Router } from '@angular/router';\nimport { QuestionnairService } from '../../services/questionnair.service';\n\n@Component({\n selector: 'gss-video-dialog',\n templateUrl: './video-dialog.component.html',\n styleUrls: ['./video-dialog.component.scss']\n})\nexport class VideoDialogComponent {\n data;\n content: any;\n constructor(\n @Inject(MAT_DIALOG_DATA) public popupData: any,\n private route: Router,\n public questionnairService: QuestionnairService\n ) {\n this.data = popupData.popupConfig;\n this.content = popupData.content;\n }\n\n onContinueClick() {\n this.route.navigate([`questions/${this.questionnairService.previousPageNo + 1}`], {\n queryParams: this.questionnairService.urlQueryParams\n });\n }\n}\n","
    \n \n
    \n

    \n {{ content.bodyConfig[0].statement.headerHtml }}\n

    \n \n
    \n
    \n \n
    \n
    \n \n \n \n
    \n
    \n
    \n
    \n","import {\n Component,\n ElementRef,\n EventEmitter,\n Input,\n OnDestroy,\n OnInit,\n Output,\n ViewChild,\n ViewEncapsulation\n} from '@angular/core';\nimport { environment } from 'src/environments/config-environment';\nimport videojs from 'video.js';\n\n@Component({\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: 'app-vjs-player',\n template: ``,\n styleUrls: ['./video-js-component.scss'],\n\n encapsulation: ViewEncapsulation.None\n})\nexport class VideoJsComponent implements OnInit, OnDestroy {\n @ViewChild('target', { static: true }) target: ElementRef;\n\n // See options: https://videojs.com/guides/options\n // eslint-disable-next-line @angular-eslint/no-output-on-prefix\n @Output() onVideoEnded = new EventEmitter();\n @Input() options: {\n fluid?: boolean;\n aspectRatio?: string;\n autoplay?: boolean;\n controls?: boolean;\n sources: {\n src: string;\n type: string;\n }[];\n };\n\n player: videojs.Players;\n\n constructor(private elementRef: ElementRef) {}\n\n // Instantiate a Video.js player OnInit\n ngOnInit() {\n this.player = videojs(this.target.nativeElement, this.options, function onPlayerReady() {\n console.log('onPlayerReady', this);\n });\n\n this.player.controlBar.progressControl.disable();\n\n // Enables Devs/QA's to fast-forward the required video in lesser environments so they can increase productivity.\n if (environment.local || environment.qa) {\n this.player.controlBar.progressControl.enable();\n }\n\n this.player.on('ended', () => {\n this.onVideoEnded.emit();\n });\n }\n\n // Dispose the player OnDestroy\n ngOnDestroy() {\n if (this.player) {\n this.player.dispose();\n }\n }\n}\n","export interface SaveRequest {\n origin: string; // who is calling this service\n currentPage: number;\n formData: any;\n saveAsCompleted: boolean; // whether the questionnaire should be saved as completed\n}\n\nexport interface SaveResult {\n savedAsCompleted?: boolean; // whether the questionnaire was saved as completed\n payloadDataFixed?: boolean; // whether the payload data was fixed and then saved\n}\n\nexport enum DialogKey {\n SaveError = 'SaveError',\n LoadError = 'LoadError'\n}\n","import { Directive, ElementRef, HostListener, Input, OnInit } from '@angular/core';\n\n@Directive({\n selector: '[gssDateFormatter]'\n})\nexport class DateFormatterDirective implements OnInit {\n private el: HTMLInputElement;\n @Input() formFieldName: any;\n @Input() formName: any;\n\n constructor(private elementRef: ElementRef) {\n this.el = this.elementRef.nativeElement;\n }\n\n // eslint-disable-next-line @angular-eslint/no-empty-lifecycle-method\n ngOnInit() {}\n\n @HostListener('keyup', ['$event', '$event.target'])\n onkeyup(event: any, dateElement: any) {\n const currentValue = dateElement.value;\n const arrDOB = currentValue.split('/');\n const letters = /^[0-9/]+$/;\n if (!String(currentValue).match(letters)) {\n return false;\n }\n /** for every key press adding slash to the input control */\n if (\n event.keyCode !== 8 &&\n (currentValue.match(/^\\d{2}$/) !== null || currentValue.match(/^\\d{2}\\/\\/$/) !== null)\n ) {\n dateElement.value = currentValue.substring(0, 2) + '/';\n } else if (\n event.keyCode !== 8 &&\n (currentValue.match(/^\\d{2}\\/\\d{2}$/) !== null || currentValue.match(/^\\d{2}\\/\\d{2}\\/\\/$/) !== null)\n ) {\n dateElement.value = currentValue.substring(0, 5) + '/';\n }\n\n /** to add prefix zero for month and day */\n if (arrDOB.length === 3 && (currentValue.length === 8 || currentValue.length === 10)) {\n dateElement.value = this.prefixZeroForDate(arrDOB);\n }\n\n /**to handle pasted data*/\n if (currentValue.indexOf('/') === -1 && currentValue.length === 8) {\n dateElement.value = `${currentValue.substr(0, 2)}/${currentValue.substr(2, 2)}/${currentValue.substr(\n 4,\n 4\n )}`;\n }\n }\n\n @HostListener('focusout', ['$event'])\n focusOut(event: any) {\n /** when fousing out from DOB field and checking month and day are prefixed with zero when single digit. */\n const controlValue = event.target.value;\n const arrDOB = controlValue.split('/');\n if (arrDOB.length === 3 && arrDOB[2].length === 4) {\n event.target.value = this.prefixZeroForDate(arrDOB);\n } else {\n if (controlValue.length > 0) {\n this.formName.get(this.formFieldName).setErrors({ invalidDateNew: true });\n }\n }\n }\n\n @HostListener('keypress', ['$event'])\n onKeyPress(event: any) {\n /** allowing only numbers and forward slash */\n const charCode = event.which ? event.which : event.keyCode;\n if ((charCode < 48 || charCode > 57) && charCode !== 47) {\n event.preventDefault();\n }\n }\n\n prefixZeroForDate(arrDOB: string[]): any {\n if (arrDOB.length === 3) {\n for (let i = 0; i <= arrDOB.length; i++) {\n /** adding prefix zero to month and day if their length is 1 */\n if (i === 0 || i === 1) {\n if (arrDOB[i].length === 1) {\n arrDOB[i] = `0${arrDOB[i]}`;\n }\n }\n }\n return `${arrDOB[0]}/${arrDOB[1]}/${arrDOB[2]}`;\n }\n }\n}\n","import { Directive, HostBinding } from '@angular/core';\nimport { NgControl } from '@angular/forms';\n\n@Directive({\n selector: '[gssErrorClass]'\n})\nexport class ErrorClassDirective {\n constructor(private ngControl: NgControl) {}\n\n @HostBinding('class.--error') get isInvalid() {\n return this.ngControl.invalid;\n }\n}\n","import { DOCUMENT } from '@angular/common';\nimport { Directive, HostBinding, HostListener, Inject, Input, OnInit } from '@angular/core';\nimport { NgControl } from '@angular/forms';\n\n@Directive({\n selector: '[gssOnlyNumbers]'\n})\nexport class OnlyNumbersDirective implements OnInit {\n @Input() ingress: any;\n @Input() egress: any;\n @Input() limit: any;\n @Input() control: any;\n @Input() valueType: any;\n\n @HostBinding('autocomplete') public autocomplete;\n constructor(\n @Inject(DOCUMENT) private document: Document,\n private controlDir: NgControl\n ) {\n this.autocomplete = 'off';\n }\n\n ngOnInit(): void {\n let value = this.controlDir.value;\n if (value) {\n this.controlDir.control?.markAsTouched();\n value =\n this.valueType === 'multiple' && !Array.isArray(value)\n ? value\n ?.trim()\n .split(/(?:,| )+/)\n .map(Number)\n : value;\n this.checkValueAgainstRestrictions(value);\n }\n }\n\n @HostListener('keypress', ['$event']) public disableKeys(e: any) {\n if (this.valueType === 'multiple') {\n return e.keyCode == 8 || e.keyCode == 32 || e.keyCode == 44 || (e.keyCode >= 48 && e.keyCode <= 57);\n } else {\n return e.keyCode >= 48 && e.keyCode <= 57;\n }\n }\n\n @HostListener('paste', ['$event']) public disablePaste(e: any) {\n e.preventDefault();\n }\n\n @HostListener('focusout', ['$event'])\n focusOut(event: any) {\n const controlValue = event.target.value;\n const value =\n this.valueType === 'multiple'\n ? controlValue\n ?.trim()\n .split(/(?:,| )+/)\n .map(Number)\n : controlValue;\n this.checkValueAgainstRestrictions(value);\n }\n\n checkValueAgainstRestrictions(value) {\n if (value && this.valueType === 'multiple') {\n const ages = value;\n if (ages.length > this.limit) {\n this.controlDir.control?.setErrors({ invalidAges: true });\n } else {\n ages.forEach((age: any) => {\n if (age < this.ingress || age > this.egress) {\n this.controlDir.control?.setErrors({\n invalidAges: true\n });\n }\n });\n }\n } else if (value && this.valueType === 'single') {\n const age = +value;\n if (age < this.ingress || age > this.egress) {\n this.controlDir.control?.setErrors({ invalidAges: true });\n }\n } else if (value && this.valueType === 'singleValue') {\n const age = +value;\n if (age < this.ingress || age > this.egress) {\n this.controlDir.control?.setErrors({ invalidRange: true });\n }\n }\n }\n}\n","import { Directive, HostListener, Input } from '@angular/core';\nimport { NgControl } from '@angular/forms';\n\n@Directive({\n selector: '[gssPhoneFormatter]'\n})\nexport class PhoneFormatterDirective {\n // eslint-disable-next-line @angular-eslint/no-input-rename\n @Input('gssPhoneFormatter') gssPhoneFormatter;\n constructor(private controlDir: NgControl) {}\n\n // eslint-disable-next-line @angular-eslint/use-lifecycle-interface\n ngOnInit(): void {\n let value = this.controlDir.value;\n if (value && this.gssPhoneFormatter) {\n value = value.replace(/^(\\d{0,3})(\\d{0,3})(.*)/, '($1) $2-$3');\n this.controlDir.valueAccessor.writeValue(value);\n }\n }\n\n @HostListener('keyup', ['$event', '$event.target'])\n onKeyUp(event, phoneElement) {\n if (this.gssPhoneFormatter) {\n const currentValue = phoneElement.value;\n if (currentValue) {\n const phone = currentValue.replace(/\\-+/g, '');\n if (phone.length > 10) {\n this.controlDir.control?.setErrors({\n invalidPhoneno: true\n });\n }\n }\n if (event.keyCode !== 8 && currentValue.match(/^\\d{3}$/) !== null) {\n phoneElement.value = currentValue.substring(0, 3) + '-';\n } else if (event.keyCode !== 8 && currentValue.match(/^\\d{3}\\-\\d{3}$/) !== null) {\n phoneElement.value = currentValue.substring(0, 7) + '-';\n }\n }\n }\n}\n","import {\n HttpErrorResponse,\n HttpEvent,\n HttpHandler,\n HttpInterceptor,\n HttpRequest,\n HttpResponse\n} from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { of, Observable, Subject } from 'rxjs';\nimport { filter, finalize, tap } from 'rxjs/operators';\nimport { environment } from 'src/environments/config-environment';\n\ninterface CacheContent {\n expireAt: number;\n value: HttpResponse;\n}\n\nconst CACHE_BLACKLIST = [''];\nconst CACHE_BLACKLIST_REGEX = new RegExp(CACHE_BLACKLIST.join('|'));\nconst CACHE_WHITELIST = [''];\nconst CACHE_WHITELIST_REGEX = new RegExp(CACHE_WHITELIST.join('|'));\n\n@Injectable()\nexport class CachingInterceptor implements HttpInterceptor {\n private cache = new Map();\n private inFlightRequests = new Map>();\n\n constructor() {}\n\n intercept(req: HttpRequest, next: HttpHandler): any {\n const requestKey = this.getKey(req);\n\n if (this.inFlightRequests.has(requestKey)) {\n return this.inFlightRequests.get(requestKey);\n }\n\n if (!this.isCachable(req)) {\n return this.sendRequest(req, next);\n }\n\n const cachedValue = this.getFromCache(requestKey);\n return cachedValue ? of(cachedValue) : this.sendCachableRequest(req, next);\n }\n\n getCacheSize() {\n return this.cache.size;\n }\n\n clearCache() {\n this.cache.clear();\n }\n\n private isCachable(req: HttpRequest): boolean {\n if (CACHE_BLACKLIST_REGEX.test(req.url)) {\n return false;\n }\n if (CACHE_WHITELIST_REGEX.test(req.url)) {\n return true;\n }\n return req.url.includes('/get') || req.method === 'GET';\n }\n\n private getKey(req: HttpRequest) {\n return JSON.stringify({\n urlWithParams: req.urlWithParams,\n body: req.body\n });\n }\n\n private getFromCache(key: string) {\n if (!this.cache.has(key)) {\n return null;\n }\n const cachedResponse: any = this.cache.get(key);\n if (cachedResponse.expireAt < Date.now()) {\n this.cache.delete(key);\n return null;\n }\n return cachedResponse.value;\n }\n\n private sendRequest(req: HttpRequest, next: HttpHandler): Observable> {\n const requestKey = this.getKey(req);\n this.inFlightRequests.set(requestKey, new Subject());\n\n return next.handle(req).pipe(\n filter((event: any) => event instanceof HttpResponse),\n tap(\n (response: HttpResponse) => {\n this.handleInFlightResponse(requestKey, response);\n },\n (error: HttpErrorResponse) => {\n this.handleInFlightResponse(requestKey, error, 'error');\n }\n ),\n finalize(() => {\n // This handles the scenario where an api call gets canceled mid-flight.\n // Only the finalize operator triggers during a subscription cancelation (can easily happen with switchMaps)\n // so we need to remove the inflight request so any new request still gets made.\n // This can happen when clearing the cache multiple times in a row quickly.\n if (this.inFlightRequests.has(requestKey)) {\n this.inFlightRequests.delete(requestKey);\n }\n })\n );\n }\n\n private sendCachableRequest(req: HttpRequest, next: HttpHandler): Observable> {\n return this.sendRequest(req, next).pipe(\n tap((response: any) => {\n const cacheContent = {\n expireAt: Date.now() + environment.httpCacheAge,\n value: response\n };\n const requestKey = this.getKey(req);\n\n this.cache.set(requestKey, cacheContent);\n })\n );\n }\n\n private handleInFlightResponse(key: string, response: HttpResponse | HttpErrorResponse, type = 'next') {\n if (this.inFlightRequests.has(key)) {\n const inFlightRequest: any = this.inFlightRequests.get(key);\n inFlightRequest[type](response);\n inFlightRequest.complete();\n this.inFlightRequests.delete(key);\n }\n }\n}\n","import { CdkTableModule } from '@angular/cdk/table';\nimport { NgModule } from '@angular/core';\nimport { MatAutocompleteModule } from '@angular/material/autocomplete';\nimport { MatCheckboxModule } from '@angular/material/checkbox';\nimport { MatNativeDateModule } from '@angular/material/core';\nimport { MatDatepickerModule } from '@angular/material/datepicker';\nimport { MatDialogModule } from '@angular/material/dialog';\nimport { MatExpansionModule } from '@angular/material/expansion';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatInputModule } from '@angular/material/input';\nimport { MatMenuModule } from '@angular/material/menu';\nimport { MatPaginatorModule } from '@angular/material/paginator';\nimport { MatProgressBarModule } from '@angular/material/progress-bar';\nimport { MatProgressSpinnerModule } from '@angular/material/progress-spinner';\nimport { MatRadioModule } from '@angular/material/radio';\nimport { MatSelectModule } from '@angular/material/select';\nimport { MatSidenavModule } from '@angular/material/sidenav';\nimport { MatSnackBarModule } from '@angular/material/snack-bar';\nimport { MatSortModule } from '@angular/material/sort';\nimport { MatStepperModule } from '@angular/material/stepper';\nimport { MatTableModule } from '@angular/material/table';\nimport { MatTooltipModule } from '@angular/material/tooltip';\nimport { OverlayModule } from '@angular/cdk/overlay';\n\n@NgModule({\n exports: [\n CdkTableModule,\n MatAutocompleteModule,\n MatCheckboxModule,\n MatDatepickerModule,\n MatDialogModule,\n MatExpansionModule,\n MatFormFieldModule,\n MatInputModule,\n MatMenuModule,\n MatNativeDateModule,\n MatPaginatorModule,\n MatProgressBarModule,\n MatProgressSpinnerModule,\n MatRadioModule,\n MatSelectModule,\n MatSidenavModule,\n MatSnackBarModule,\n MatSortModule,\n MatStepperModule,\n MatTableModule,\n MatTooltipModule,\n OverlayModule\n ]\n})\nexport class MaterialModule {}\n","import { HttpClientXsrfModule } from '@angular/common/http';\nimport { NgModule } from '@angular/core';\n\n@NgModule({\n imports: [\n HttpClientXsrfModule.withOptions({\n headerName: 'X-CSRF-TOKEN',\n cookieName: 'CSRF-TOKEN'\n })\n ],\n exports: [HttpClientXsrfModule]\n})\nexport class CsrfModule {}\n","import { ServiceRegistry } from '../utils/service-registry';\n\n/**\n * This class represents a questionnaire document .. the raw data as retrieved from the server\n * and the methods to access aspects of the document.\n */\nexport class QuestionnaireDocument {\n private static readonly HRA_KIT_ID = 'hra';\n private data: any; // the document data (Json) as retrieved from the server\n private userDemographics: any = undefined;\n\n constructor(data: any) {\n this.data = data;\n this.adjustForHra();\n }\n\n getData(): any {\n return this.data;\n }\n\n getTotalPages(): number {\n return this.data.qAndAGroups.length;\n }\n\n getUserDemographics(): any {\n if (this.userDemographics !== undefined) {\n return this.userDemographics;\n }\n this.userDemographics = {};\n this.data.qAndAGroups.forEach(group => {\n group.itemConfig.forEach(ques => {\n if (ques.tag === 'demographics') {\n if (ques.responses && ques.responses[0]?.key !== (null || undefined)) {\n this.userDemographics[ques.questionKey] = ques.responses[0].key;\n } else if (ques.responses && ques.responses[0]?.key === (null || undefined)) {\n this.userDemographics[ques.questionKey] = ques.responses[0];\n }\n }\n });\n });\n return this.userDemographics;\n }\n\n getQAndAGroupBySequence(sequence: Number) {\n return this.data.qAndAGroups.find((group: any) => {\n return group.sequence === sequence;\n });\n }\n\n getUserAge(): Number {\n return ServiceRegistry.dateService.getAge(this.getUserDemographics()['birthDate']);\n }\n\n isHra(): boolean {\n return this.data.header.kitId === QuestionnaireDocument.HRA_KIT_ID;\n }\n\n private adjustForHra(): void {\n if (!this.isHra() || this.data.header.gender !== 'Male' || this.data.qAndAGroups.length !== 9) {\n return;\n }\n const adjusted = this.data.qAndAGroups\n .filter((ques, index) => index != 3)\n .map((ques, ind) => {\n ques.sequence = ind + 1;\n return ques;\n });\n this.data.qAndAGroups = adjusted;\n }\n}\n","import { ServiceRegistry } from '../utils/service-registry';\nimport { QuestionnaireDocument } from './questionnaire-document';\n\n/**\n * This class is a helper class to persist the form data to the questionnaire document\n */\nexport class QuestionnaireForm {\n private static INPUT_CONTROLS: string[] = ['string_input', 'string_input_single', 'date_input'];\n private questionnaireDoc: QuestionnaireDocument = undefined;\n\n constructor(questionnaireDocument: QuestionnaireDocument) {\n this.questionnaireDoc = questionnaireDocument;\n }\n\n // update the questionnaire document with the form data\n setFormAnswerInJsonBySequence(sequence, formData) {\n let group = this.questionnaireDoc.getQAndAGroupBySequence(+sequence).itemConfig;\n group.forEach(question => {\n question.responses = question.responses || [];\n if (question.questionId && QuestionnaireForm.INPUT_CONTROLS.includes(question.answerConfig.controlType)) {\n question.responses = [];\n if (question.answerConfig.controlType === 'date_input') {\n question.responses.push(ServiceRegistry.dateService.toDateMMddYYY(formData[question.questionId]));\n } else {\n this.pushNonNullValueToArray(question.responses, formData[question.questionId]);\n }\n } else if (\n question.questionId &&\n (question.answerConfig.controlType === 'radio_button' ||\n question.answerConfig.controlType === 'dropdown')\n ) {\n question.responses = [];\n this.pushNonNullValueToArray(\n question.responses,\n QuestionnaireForm.getKeyValueAnswer(question, formData[question.questionId])\n );\n } else if (question.questionId && question.answerConfig.controlType === 'checkbox') {\n this.addResponsesFormCheckbox(formData, question);\n } else if (question.questionId && question.answerConfig.controlType === 'dropdown-multiselect') {\n this.addResponsesFormCheckbox(formData, question);\n } else if (question.popupConfig) {\n this.addResponseToPopupForm(formData, question);\n } else if (question.scrollWindow) {\n this.addResponseToScrollConsentForm(formData, question);\n }\n });\n }\n\n private addResponseToScrollConsentForm(formData, question) {\n question.scrollWindow.forEach(popUpItem => {\n if (popUpItem.questionId && popUpItem.answerConfig.controlType === 'radio_button') {\n popUpItem.responses = [];\n this.pushNonNullValueToArray(\n popUpItem.responses,\n QuestionnaireForm.getKeyValueAnswer(popUpItem, formData[popUpItem.questionId])\n );\n } else if (popUpItem.questionId && popUpItem.answerConfig.controlType === 'checkbox') {\n this.addResponsesFormCheckbox(formData, popUpItem);\n }\n });\n }\n\n private addResponseToPopupForm(formData, question) {\n question.popupConfig.forEach(popUpItemArray => {\n popUpItemArray.forEach(popUpItem => {\n if (popUpItem.questionId && popUpItem.answerConfig.controlType === 'radio_button') {\n popUpItem.responses = [];\n this.pushNonNullValueToArray(\n popUpItem.responses,\n QuestionnaireForm.getKeyValueAnswer(popUpItem, formData[popUpItem.questionId])\n );\n } else if (popUpItem.questionId && popUpItem.answerConfig.controlType === 'checkbox') {\n this.addResponsesFormCheckbox(formData, popUpItem);\n }\n });\n });\n }\n\n private addResponsesFormCheckbox(formData, question) {\n // all responses get repopulated on each save\n question.responses = [];\n if (Array.isArray(formData[question.questionId])) {\n formData[question.questionId].forEach((answer: any, index: any) => {\n if (answer[question.questionId] && question.answerConfig.controlType !== 'dropdown-multiselect') {\n if (question.followUpQAndA && question.followUpQAndA.length > 0) {\n let followUpList;\n followUpList = QuestionnaireForm.getFollowupAnswer(\n answer.followUpArray,\n question.followUpQAndA\n );\n const completeAnswer = {\n ...QuestionnaireForm.getKeyValueAnswer(question, question.answerConfig.config[index].key),\n followUps: followUpList\n };\n question.responses.push(completeAnswer);\n } else {\n this.pushNonNullValueToArray(\n question.responses,\n QuestionnaireForm.getKeyValueAnswer(question, question.answerConfig.config[index].key)\n );\n }\n } else if (question.answerConfig.controlType === 'dropdown-multiselect') {\n this.pushNonNullValueToArray(\n question.responses,\n QuestionnaireForm.getKeyValueAnswer(question, answer)\n );\n }\n });\n } else {\n if (formData[question.questionId]) {\n this.pushNonNullValueToArray(\n question.responses,\n QuestionnaireForm.getKeyValueAnswer(question, question.answerConfig.config[0].key)\n );\n }\n }\n }\n\n private pushNonNullValueToArray(arr: any[], value: any) {\n if (value !== undefined && value !== null) {\n arr.push(value);\n }\n }\n\n private static getKeyValueAnswer(question, answerKey) {\n let answer = question.answerConfig.config.find((kvp: any) => {\n if (typeof kvp.key === 'boolean') {\n kvp.key = kvp.key.toString();\n }\n if (question.answerConfig.controlType === 'dropdown-multiselect') {\n let getObjectByValueHtml = question.answerConfig.config.find(getKey => getKey.valueHtml === answerKey);\n return getObjectByValueHtml.key === kvp.key;\n }\n return answerKey === kvp.key;\n });\n return answer;\n }\n\n private static generateAnswer(followUpQAndA, answer) {\n let responses;\n let completeAnswer;\n let relatedQuestion = followUpQAndA?.find(ques => {\n return ques.questionId === Object.keys(answer)[0];\n });\n\n if (\n relatedQuestion?.answerConfig.controlType === 'dropdown-dynamic-multiple' ||\n relatedQuestion?.answerConfig.controlType === 'radio_button' ||\n relatedQuestion?.answerConfig.controlType === 'dropdown'\n ) {\n responses = this.getKeyValueAnswer(relatedQuestion, answer[relatedQuestion.questionId]);\n } else if (relatedQuestion?.answerConfig.controlType.includes('age_input')) {\n if (typeof answer[relatedQuestion?.questionId] === 'string') {\n responses = {\n responses: answer[relatedQuestion.questionId]\n .replace(/(^,)|(,$)/g, '')\n ?.trim()\n .split(/(?:,| )+/)\n .map(Number)\n };\n } else {\n responses = { responses: answer[relatedQuestion.questionId] };\n }\n }\n\n return (completeAnswer = {\n sequence: relatedQuestion?.sequence,\n questionId: relatedQuestion?.questionId,\n questionKey: relatedQuestion?.questionKey,\n ...responses\n });\n }\n\n // TODO: refactor using recursion\n private static getFollowupAnswer(followUpArray: any[], followUpQAndA: any[]) {\n let followUps = [];\n\n if (followUpArray) {\n followUpArray.forEach((answer, i) => {\n if (followUpQAndA[i] && followUpQAndA[i].answerConfig.controlType === 'checkbox') {\n answer[followUpQAndA[i].questionId].forEach((fAnswer: any, index: any) => {\n if (\n fAnswer[followUpQAndA[i].questionId] &&\n followUpQAndA[i].answerConfig.controlType !== 'dropdown-multiselect'\n ) {\n if (followUpQAndA[i].followUpQAndA && followUpQAndA[i].followUpQAndA.length > 0) {\n let followUpList;\n followUpList = this.getFollowupAnswer(\n fAnswer.followUpArray,\n followUpQAndA[i].followUpQAndA\n );\n const completeAnswer = {\n ...this.getKeyValueAnswer(\n followUpQAndA[i],\n followUpQAndA[i].answerConfig.config[index].key\n ),\n followUps: followUpList\n };\n\n followUps.push(completeAnswer);\n }\n }\n });\n } else {\n if (Object.values(answer)[0] !== null) {\n let fArray = [];\n let completeAnswer = {};\n completeAnswer = {\n ...this.generateAnswer(followUpQAndA, answer)\n };\n if (answer.followUpArray && answer.followUpArray.length > 0) {\n answer.followUpArray.forEach((answer, j) => {\n let completeAnswer = {};\n completeAnswer = {\n ...this.generateAnswer(followUpQAndA[j]?.followUpQAndA, answer)\n };\n fArray.push(completeAnswer);\n });\n }\n completeAnswer['followUps'] = fArray;\n followUps.push(completeAnswer);\n }\n }\n });\n }\n\n return followUps;\n }\n}\n","import { Component, OnInit } from '@angular/core';\nimport { ActivatedRoute } from '@angular/router';\nimport { environment } from 'src/environments/config-environment';\nimport { default as defaultContent } from '../../../../assets/json-config-files/default.json';\nimport { ApiService } from '../../services/api.service';\nimport { QuestionnairService } from '../../services/questionnair.service';\nimport config from '../../../../config.json';\n\nconst GSS_ACTIVATION_URL = environment.gssActivationUrl;\n\n@Component({\n selector: 'gss-confirmation',\n templateUrl: './confirmation.component.html',\n styleUrls: ['./confirmation.component.scss']\n})\nexport class ConfirmationComponent implements OnInit {\n confContent: any;\n response: any;\n loading = true;\n valueToJson: string;\n constructor(\n private api: ApiService,\n private activatedRoute: ActivatedRoute,\n public questionnairService: QuestionnairService\n ) {}\n\n ngOnInit() {\n this.disableBack();\n this.response = this.questionnairService.getDocData();\n if (!this.response) {\n this.activatedRoute.queryParams.subscribe(qparams => {\n this.questionnairService.urlQueryParams = qparams;\n this.getQuestionaireResponse();\n });\n } else {\n this.getJsonFromValue(this.getValueToJson());\n }\n }\n\n getValueToJson() {\n return (this.valueToJson = this.checkIfHraDataLoaded()\n ? this.response.header.kitId\n : this.response.header.testCode);\n }\n\n getQuestionaireResponse() {\n this.questionnairService.getQuestionaireData$().then((res: any) => {\n this.response = res;\n this.getJsonFromValue(this.getValueToJson());\n });\n }\n\n checkIfHraDataLoaded() {\n return this.response.header.kitId === config.jsonConfig.hrakitId;\n }\n\n getJsonFromValue(testCode: string) {\n this.api.get(`../assets/json-config-files/${testCode}.json`).subscribe(\n (data: any) =>\n (this.confContent = data && data.confirmation ? data.confirmation : defaultContent.confirmation),\n () => (this.confContent = defaultContent.confirmation)\n );\n this.loading = false;\n }\n\n disableBack() {\n history.pushState(null, null, document.URL);\n window.addEventListener('popstate', event => {\n history.pushState(null, null, document.URL);\n });\n }\n\n onNext() {\n window.location.href = GSS_ACTIVATION_URL;\n }\n}\n","
    \n \n
    \n\n
    \n
    \n
    \n {{ confContent?.header }}\n
    \n {{ confContent?.subHeader }}\n \n
    \n
    \n
    \n \n {{ stepContent?.header }}\n \n
    \n
    \n
    \n
    \n \n
    \n \n
    \n
    \n
    \n","import { Component, OnInit } from '@angular/core';\nimport { FormGroup } from '@angular/forms';\nimport { MatDialog } from '@angular/material/dialog';\nimport { ActivatedRoute, Router } from '@angular/router';\nimport { Location } from '@angular/common';\nimport { BehaviorSubject } from 'rxjs';\nimport { DialogService } from '../../services/dialog.service';\nimport { QuestionnairService } from '../../services/questionnair.service';\nimport { environment } from 'src/environments/config-environment';\nimport { LogType, LoggingService } from '../../services/logging.service';\nimport { QuestionnaireDocument } from '../../models/questionnaire-document';\nimport { DialogKey, SaveRequest, SaveResult } from '../../defs/defs';\nimport { SparsifyQaPayload } from '../../utils/sparsify-qa-payload';\n@Component({\n selector: 'gss-review-details',\n templateUrl: './review-details.component.html',\n styleUrls: ['./review-details.component.scss']\n})\nexport class ReviewDetailsComponent implements OnInit {\n group: any;\n questions: any;\n answers: any;\n totalPages: any;\n progress: any;\n interests: any;\n interestFormGroup: any;\n satisfactoryConditions;\n interests1: any;\n parentAnswerLists: any;\n questionsGroup: FormGroup;\n indexesToShow: number[] = [];\n showTerminator = false;\n showFollowUp$ = new BehaviorSubject([]);\n loading = false;\n response: any;\n terminatorText: any;\n recursive: false;\n qAndAStore = [];\n\n constructor(\n private _location: Location,\n private activatedRoute: ActivatedRoute,\n private route: Router,\n public questionnairService: QuestionnairService,\n private dialog: MatDialog,\n private logging: LoggingService,\n public dialogService: DialogService\n ) { }\n\n ngOnInit(): void {\n const filterTitle = {};\n this.response = this.questionnairService.getDocData();\n this.response?.qAndAGroups.forEach(group => {\n if (filterTitle[group.titleAscii]) {\n filterTitle[group.titleAscii].push(group);\n } else {\n filterTitle[group.titleAscii] = [group];\n }\n });\n for (var key in filterTitle) {\n if (key) {\n this.qAndAStore.push(filterTitle[key]);\n }\n }\n\n if (!this.response) {\n this.activatedRoute.queryParams.subscribe(qparams => {\n this.questionnairService.urlQueryParams = qparams;\n this.getQuestionaireResponse();\n });\n }\n\n window.scroll({\n top: 0,\n left: 0,\n behavior: 'smooth'\n });\n }\n\n private doc(): QuestionnaireDocument {\n return this.questionnairService.getQuestionnaireDocument();\n }\n\n /**\n get JSON response from activation portal\n */\n getQuestionaireResponse() {\n this.loading = true;\n this.questionnairService.getQuestionaireData$().then(\n (res: any) => {\n const questionnaireDocument = new QuestionnaireDocument(res);\n this.questionnairService.setQuestionnaireDocument(questionnaireDocument);\n this.response = this.questionnairService.getDocData();\n if (this.response.header.complete) {\n this.route.navigate([`/confirmation`], {\n queryParams: this.questionnairService.urlQueryParams\n });\n } else {\n if (this.response.header && this.response.header.lastPage >= 0) {\n let lastPage = this.response.header.lastPage === 0 ? 1 : this.response.header.lastPage;\n if (this.doc().getQAndAGroupBySequence(lastPage)) {\n this.route.navigate([`questions/${lastPage}`], {\n queryParams: this.questionnairService.urlQueryParams\n });\n } else {\n this.questionnairService.isPageReloaded = true;\n this.questionnairService.previousPageNo = this.questionnairService.totalPages;\n this.route.navigate([`review-details`], {\n queryParams: this.questionnairService.urlQueryParams\n });\n }\n }\n }\n this.loading = false;\n },\n err => {\n this.loading = false;\n let error = {\n status: err.status,\n message: err.message,\n desc: err.error?.correlationId + ' ' + err.error?.fault?.type + ' ' + err.error?.fault?.message[0]\n };\n this.logging.log(error);\n this.dialogService.invokeDialog(this.dialog, DialogKey.LoadError);\n }\n );\n }\n\n saveAndExit() {\n this.loading = true;\n const saveRequest: SaveRequest = {\n origin: 'ReviewDetailsComponent/saveAndExit',\n currentPage: this.doc().getTotalPages(),\n formData: undefined,\n saveAsCompleted: false\n };\n\n this.questionnairService.save$(saveRequest).then(\n (res: SaveResult) => {\n this.loading = false;\n if (res.payloadDataFixed) {\n window.location.reload();\n } else {\n window.location.href = environment.orderHistoryUrl;\n }\n },\n err => {\n this.loading = false;\n this.dialogService.invokeDialog(this.dialog, DialogKey.SaveError);\n }\n );\n }\n\n onSubmit() {\n this.loading = true;\n const saveRequest: SaveRequest = {\n origin: 'ReviewDetailsComponent/onSubmit',\n currentPage: this.doc().getTotalPages(),\n formData: undefined,\n saveAsCompleted: true\n };\n\n const requestLogEntry = {\n method: 'ReviewDetailsComponent/onSubmit/saveQuestionnaireData',\n requestBody: SparsifyQaPayload.sparsify(saveRequest)\n };\n this.logging.log(requestLogEntry, LogType.Event);\n\n this.questionnairService.save$(saveRequest).then(\n (res: SaveResult) => {\n this.loading = false;\n if (res.payloadDataFixed) {\n window.location.reload();\n } else {\n this.route.navigate([`/confirmation`], {\n queryParams: this.questionnairService.urlQueryParams\n });\n }\n },\n (err) => {\n this.loading = false;\n const error = {\n status: err.status,\n message: err.message,\n desc: err.error?.correlationId + ' ' + err.error?.fault?.type + ' ' + err.error?.fault?.message[0]\n };\n this.logging.log(error, LogType.Error);\n this.dialogService.invokeDialog(this.dialog, DialogKey.SaveError);\n }\n );\n }\n\n onPrevious() {\n this.indexesToShow.length = 0;\n if (this.questionnairService.isPageReloaded) {\n this.route.navigate([`questions/${this.questionnairService.totalPages}`], {\n queryParams: this.questionnairService.urlQueryParams\n });\n } else {\n this._location.back();\n }\n }\n\n onEdit(page) {\n this.route.navigate([`questions/${page}`], {\n queryParams: this.questionnairService.urlQueryParams\n });\n this.questionnairService.setEditMode(true);\n }\n}\n","
    \n \n
    \n\n
    \n
    \n \n
    \n
    \n \n
    \n
    \n
    \n
    \n
    \n \n
    \n
    \n
    \n \n
    \n
    \n \n
    \n
    \n
    \n \n
    \n \n
    \n

    Let's review your answers

    \n
    \n

    \n Please make sure the following information is correct before you activate your Genetic Insights kit.\n

    \n
    \n \n
    \n \n

    \n {{ group[0].titleAscii }}\n

    \n \n \n \n
    \n
    \n
    \n \n
    \n
    \n
    1\">\n

    \n {{ item[0].titleAscii }}\n

    \n
    \n
    \n \n
    \n
    \n \n \n \n
    \n
    \n
    \n
    \n \n
    \n \n \n \n
    \n \n\n\n \n
    \n 0 &&\n question.responses[0] !== null &&\n question.responses[0] !== undefined;\n else statementTemplate\n \"\n >\n \n
    \n \n
    \n
    \n \n \n \n \n {{\n question.questionKey === 'phone'\n ? (question.responses[0] | telephone)\n : question.responses[0]\n }}\n \n \n \n
    \n
    \n \n
    \n \n
    \n
      \n 0\"\n *ngFor=\"let answer of question.responses\"\n >\n \n \n \n \n {{ question.questionKey === 'phone' ? (answer | telephone) : answer }}\n \n \n \n \n
    \n
    \n \n

    \n \n Cancer type and age at time of diagnosis\n \n \n Event type and age at time of event\n \n \n {{\n question.titleAscii ||\n question.titleHtml ||\n question.subtitleAscii ||\n question.subtitleHtml\n }}\n \n

    \n

    \n {{ question.titleAscii || question.titleHtml }}\n

    \n
    \n \n \n \n \n \n \n
    \n \n

    \n
    \n
    \n
    \n \n \n \n \n \n \n
    \n

    \n {{\n question.displayAscii || question.displayHtml\n | removeSubString\n : ['(Check all that apply)', '(Check all that apply.)']\n }}\n

    \n
    \n
    \n \n \n \n \n {{ question.responses[0] }}\n \n
    \n
    \n \n
    \n

    \n {{\n question.titleAscii || question.titleHtml\n | removeSubString\n : ['(Check all that apply)', '(Check all that apply.)']\n }}\n

    \n
    \n
      \n 0\"\n *ngFor=\"let answer of question.responses\"\n >\n \n \n \n \n {{ answer }}\n \n \n
    \n
    \n
    \n
    \n
    \n \n \n \n \n \n
    \n

    \n {{ scWindow.titleAscii || scWindow.titleHtml }}\n

    \n
    \n
    \n \n \n \n \n {{ scWindow.responses[0] }}\n \n
    \n
    \n \n
    \n

    \n {{ scWindow.titleAscii || scWindow.titleHtml }}\n

    \n
    \n
      \n 0\"\n *ngFor=\"let answer of scWindow.responses\"\n >\n \n \n \n \n {{ answer }}\n \n \n
    \n
    \n
    \n
    \n \n
    \n
    \n
    \n
    \n\n 0\">\n \n \n \n \n {{\n followUpQues.titleAscii || followUpQues.titleHtml\n | removeSubString: ['(Check all that apply)', '(Check all that apply.)']\n }}\n \n \n {{\n followUpQues.subtitleAscii || followUpQues.subtitleHtml\n | removeSubString: ['Select Relative']\n }}\n \n \n \n \n \n : {{ followUpAnswer.responses }}\n \n \n {{ followUpAnswer.responses }}\n \n \n \n {{\n followUpAnswer.questionKey === 'fhCancerRelativeDecade'\n ? ': ' + followUpAnswer.valueHtml\n : followUpAnswer.value\n }}\n \n \n \n \n \n\n","import { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({\n name: 'removeSubString'\n})\nexport class RemoveSubStringPipe implements PipeTransform {\n transform(value, substringList: string[]) {\n let newValue = value;\n substringList.forEach(substring => {\n if (value.includes(substring)) {\n newValue = newValue.replace(substring, '');\n }\n });\n\n return newValue;\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { DomSanitizer } from '@angular/platform-browser';\n\n@Pipe({\n name: 'safeHtml'\n})\nexport class SafeHtmlPipe implements PipeTransform {\n constructor(private sanitized: DomSanitizer) {}\n transform(value: any) {\n return this.sanitized.bypassSecurityTrustHtml(value);\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({\n name: 'telephone'\n})\nexport class TelephonePipe implements PipeTransform {\n transform(value: any) {\n return value.replace(/^(\\d{0,3})(\\d{0,3})(.*)/, '($1) $2-$3');\n }\n}\n","import { DatePipe } from '@angular/common';\nimport { Pipe, PipeTransform } from '@angular/core';\nimport { regex } from '../utils/regex-patterns';\n\n@Pipe({\n name: 'validationError'\n})\nexport class ValidationErrorPipe implements PipeTransform {\n private cachedMessages: any = {};\n private cachedErrors: any = {};\n private patternMessages = {\n [regex.name]: `Valid characters are letters, spaces, and symbols: ,.'-`,\n [regex.questionAnswer]: `Valid characters are letters, numbers, spaces, and symbols: !@$^&*()_~?.`,\n [regex.zipCode]: 'Valid zip code format is 55555 or 55555-4444',\n [regex.firstName]: 'Valid characters are letters and spaces (remove spaces at both start and end of name).',\n [regex.lastName]:\n 'Valid characters include letters, spaces, and a hyphen (remove spaces at both start and end of name).​​​​​​​',\n [regex.messageText]: `Remove spaces and symbols at start of the message`,\n [regex.address]: `Valid characters are letters, numbers, spaces, and symbols: -,'.# (remove spaces at both start and end of the address)`,\n [regex.city]: 'Valid characters are letters, and symbols: -./',\n [regex.noRandomCharacters1]: `Can not use the symbols: <>\"'`,\n [regex.noRandomCharacters2]: `Can not use the symbols: ~&^_|\\\\`,\n [regex.alphaNumericWithRandomCharacters]: `Valid characters are letters, numbers, spaces, and symbols: -./'`,\n [regex.alphaWithRandomCharacters]: `Valid characters are letters, spaces, and symbols: -./'`,\n [regex.phoneNumber]: 'Invalid phone number. Please re-enter',\n [regex.ssn]: 'Must be 4 digits',\n [regex.username]: `Valid characters are letters, numbers, spaces, and symbols: !@$^&*_.\n (remove spaces start and end)`,\n [regex.password]: `Valid characters are letters, numbers, spaces, and symbols: !@#$%^&*()_+<>~?`,\n [regex.directEmailAddress]: 'Valid characters are letters, numbers, and symbols: -.',\n [regex.directEmailAddress2]: 'Can not start or end with a period or hyphen.',\n [regex.physicianName]: 'Valid characters are letters and spaces (remove spaces at both start and end of name).',\n [regex.noWhiteSpace]: 'Remove spaces at both start and end of name.',\n [regex.invalidCharcters]: 'This field contains invalid characters',\n [regex.invalidId]: 'Invalid Value',\n [regex.faxNumber]: 'Enter a valid fax number to proceed.',\n [regex.faxRecipient]:\n 'Fax recipient must be 1-32 characters in length and must not contain invalid characters.',\n [regex.noSpaceMemberId]: `Valid Member IDs cannot include spaces.`,\n [regex.noSpaceGroupId]: `Valid Group IDs cannot include spaces.`\n };\n\n constructor(private datePipe: DatePipe) {}\n\n validChars(errors: any): string {\n if (!('pattern' in errors)) return '';\n\n if (errors.pattern.requiredPattern in this.patternMessages) {\n return this.patternMessages[errors.pattern.requiredPattern];\n }\n\n return 'This field contains invalid characters';\n }\n\n validCharsId(errors: any): string {\n if (!('pattern' in errors)) return '';\n\n if (errors.pattern.requiredPattern in this.patternMessages) {\n return this.patternMessages[errors.pattern.requiredPattern];\n }\n\n return 'Invalid value';\n }\n\n transform(errors: any, field?: any) {\n if (errors !== this.cachedErrors) {\n this.cachedErrors = errors || {};\n // matDatepickerParse detects the Invalid Date.\n if (this.cachedErrors.matDatepickerParse) {\n delete this.cachedErrors.required;\n delete this.cachedErrors.matDatepickerParse;\n this.cachedErrors.invalidDate = true;\n }\n this.cachedMessages = {\n required: 'This field is required',\n email: `E-Mail must be a valid email address (username@domain)`,\n maxlength: `The maximum length for this field is {{maxLength}}`,\n minlength: `The minimum length for this field is {{minLength}}`,\n notEqual: `This field does not match`,\n notEqualEmail: `Email addresses must match`,\n notEqualFaxNumber: `Fax number confirmation is required and should match the number entered for the first fax number.`,\n pattern: this.validChars(this.cachedErrors),\n patternId: this.validCharsId(this.cachedErrors),\n notUnique: 'Value must be unique',\n noneChecked: 'At least one must be selected',\n encodedError: 'There was an error reading your file, please add a new file.',\n fileError: 'There was an error uploading your file',\n fileSizeInBytes: 'Max file size allowed is {{fileSize}}MB',\n validFileTypes: 'Valid file types are: {{fileTypes}}',\n differentAs: `Password cannot be the same as username`,\n sameAs: `Password must match.`,\n invalidUsername: 'This user does not exist.',\n matDatepickerMax: 'Date cannot be after today',\n matDatepickerMin: 'Date cannot be older than {{minDate}}',\n nameTaken: 'This username has already been taken',\n directAddressTaken: 'This Message ID is already taken. Please pick another.',\n requiresAlpha: 'Password requires at least one letter',\n requiresNumber: 'Password requires at least one number',\n requiresNumberOrSpecial: 'Password requires at least one number or special character',\n requiresEmail: 'Please provide a valid email',\n phoneOrEmail: 'Please enter either Phone or Email',\n dobMinimumAge: 'Minimum age required is {{minAge}}',\n ageExcluded: 'You are outside of the age requirements for one or more of your products',\n outsideUsa: 'Location must be within the United States',\n invalidAddress: '',\n invalidzipCode: 'The zip code entered does not exist',\n invalidCity: 'The zipcode does not belong to selected city',\n invalidState: 'The zipcode does not belong to selected state',\n invalidPhoneno: 'Invalid phone number. Please re-enter',\n invalidRosterLastName: 'We’re sorry, your last name does not match our records. Please try again.',\n invalidDate: 'Invalid Date, Date must be in MM/DD/YYYY format.',\n invalidDateNew: 'Invalid Date of Birth: Please type your date of birth as MM/DD/YYYY.',\n invalidDateMonth: 'Invalid Date: Please type your date as MM/DD.',\n invalidDay: 'Invalid Date: Please verify that the day is correct.',\n invalidMonth: 'Invalid Date: Please verify that the month is correct.',\n invalidYear: 'Invalid Date: Please verify that the year is correct.',\n invalidSSN: 'Invalid SSN: Please enter valid SSN number.',\n invalidMaxSSN: 'The maximum length for this field is 9',\n invalidMinSSN: 'The minimum length for this field is 9',\n invalidInsuranceProvider:\n 'The insurance provider you entered is not available in our list. Please type your insurance provider again, or select My insurance provider is not listed.',\n maxDate: 'Date cannot be after today',\n invalidAges: 'Please check ages',\n invalidRange: `${field?.errorText} should be between ${field?.ingress} and ${field?.egress}.`\n };\n\n return this.cachedMessages[Object.keys(this.cachedErrors)[0]] || '';\n }\n }\n}\n","import {\n HttpClient,\n HttpErrorResponse,\n HttpHeaders,\n HttpInterceptor,\n HttpResponse,\n HTTP_INTERCEPTORS\n} from '@angular/common/http';\nimport { Inject, Injectable, LOCALE_ID } from '@angular/core';\nimport { Router } from '@angular/router';\nimport { throwError, BehaviorSubject, Observable } from 'rxjs';\nimport { catchError, map } from 'rxjs/operators';\nimport { environment } from 'src/environments/config-environment';\nimport { CachingInterceptor } from '../interceptors/caching-interceptor';\n\nconst API_BASE_URL = environment.apiURI;\nconst ERROR_WHITELIST = [''];\n\n@Injectable({\n providedIn: 'root'\n})\nexport class ApiService {\n private cachingInterceptor = this.interceptors.find(i => i instanceof CachingInterceptor) as CachingInterceptor;\n private cacheClearedSubject = new BehaviorSubject(false);\n constructor(\n private http: HttpClient,\n private router: Router,\n @Inject(HTTP_INTERCEPTORS) private interceptors: HttpInterceptor[],\n @Inject(LOCALE_ID) private locale: string\n ) {}\n\n defaultHttpOptions = {\n headers: new HttpHeaders({\n 'Content-Type': 'application/json',\n Accept: 'application/json',\n 'Accept-Language': this.locale,\n 'Access-Control-Allow-Origin': '*'\n }),\n observe: 'response'\n };\n\n post(path: string, body?: any, options?: Object): Observable {\n options = Object.assign({}, options, {\n body: this.formatBodyObject(body)\n });\n return this.request('POST', path, options);\n }\n\n get(path: string, options?: Object): Observable {\n return this.request('GET', path, options);\n }\n\n request(method: string, path: string, options?: Object): Observable {\n options = Object.assign({}, this.defaultHttpOptions, options);\n return (\n this.http\n .request>(method, this.buildPath(path), options)\n // tslint:disable-next-line: max-line-length\n .pipe(\n map((res: HttpResponse) => this.formatResponse(res, path)),\n catchError((httpError: HttpErrorResponse) => this.handleError(httpError, path))\n )\n );\n }\n\n clearCache() {\n this.cachingInterceptor.clearCache();\n this.cacheClearedSubject.next(true);\n }\n\n setCsrfToken() {\n document.cookie = this.getCsrfToken();\n }\n\n getCsrfToken() {\n const cookie = this.generateCsrfToken();\n return `CSRF-TOKEN=${cookie}; path=/;`;\n }\n\n getCacheCleared(): Observable {\n return this.cacheClearedSubject.asObservable();\n }\n\n private buildPath(path: string) {\n const urlPath = path.startsWith('/') ? path.slice(1) : path;\n return `${API_BASE_URL}${urlPath}`;\n }\n\n /**\n * Recursively traverses the nested object to replace any empty strings\n * with null.\n *\n * NOTE: This was needed for the API, as it will fail validation (min-length=1)\n * if an object value is an empty string.\n * @param obj - Body object to modify\n */\n private formatBodyObject(obj: any) {\n if (!obj) return;\n\n Object.keys(obj).forEach(key => {\n if (obj[key] !== null && typeof obj[key] === 'object') {\n obj[key] = this.formatBodyObject(obj[key]);\n } else if (obj[key] === '') {\n obj[key] = null;\n }\n });\n\n return obj;\n }\n\n private formatResponse(res: HttpResponse, path: string) {\n const { body } = res;\n if (body === null || !(body instanceof Object) || !Object.keys(body).includes('data')) {\n return body;\n } else {\n return body.data;\n }\n }\n\n private handleError(httpError: HttpErrorResponse, path: string) {\n if (httpError.status === 401) {\n this.router.navigate(['/login'], {\n queryParams: { returnUrl: this.router.url }\n });\n }\n\n // TODO: These don't appear to handle any error because the conditionals are all commented-out.\n //If appointment or order creation is failed then it will show's appropriate message.\n if (httpError.status === 500 || httpError.status === 400) {\n //Below commented code is display the message what ever we get in error responce, but now our requirement is hardcode the error message.\n // this.snackbarService.showError(this.i18n(httpError.error.errors ? httpError.error.errors[0].detail:httpError.error[0].detail));\n // this.snackbarService.showError(\n // this.i18n('We’re sorry, we are unable to process your transaction at the moment. Please try again later.')\n // );\n }\n if (!ERROR_WHITELIST.includes(path)) {\n try {\n const listerror = httpError.error;\n if (\n !(\n listerror.errors &&\n listerror.errors.length > 0 &&\n listerror.errors[0].error &&\n listerror.errors[0].error.id &&\n listerror.errors[0].error.id === 'network.minorCaregiver' &&\n listerror.message === 'Verification PIN does not match.'\n )\n ) {\n // this.snackbarService.showError(this.i18n('Oops something went wrong. Try again.'));\n }\n } catch (ex) {\n // this.snackbarService.showError(this.i18n('Oops something went wrong. Try again.'));\n }\n }\n\n // Get the \"errors\" property of the response body if it exists,\n // otherwise get the entire response body.\n const errorResponse = httpError.error ? httpError.error.errors || httpError.error : httpError.message;\n let options = { body: errorResponse };\n options = Object.assign({}, this.defaultHttpOptions, options);\n return throwError(errorResponse);\n }\n\n private generateCsrfToken(seed = null): any {\n /* tslint:disable: no-bitwise */\n return seed\n ? (seed ^ ((Math.random() * 16) >> (seed / 4))).toString(16)\n : ('' + 1e7 + -1e3 + -4e3 + -8e3 + -1e11).replace(/[01]/g, this.generateCsrfToken);\n /* tslint:enable: no-bitwise */\n }\n}\n","import { formatDate } from '@angular/common';\nimport { Inject, Injectable, LOCALE_ID } from '@angular/core';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class DateService {\n constructor(@Inject(LOCALE_ID) private locale: string) {}\n\n /**\n * Returns a string representation of the date in the\n * format `yyyy-mm-dd`\n * @param dateTime - DateTime to retrieve year/month/day\n */\n toDate(dateTime: string): string {\n if (!dateTime) return dateTime;\n\n return formatDate(dateTime, 'yyyy-MM-dd', this.locale);\n }\n\n toDateTime(date: string): string {\n if (!date) return date;\n\n return `${date}T00:00:00`;\n }\n\n toDateMMddYYY(dateTime: string): string {\n if (!dateTime) return dateTime;\n\n return formatDate(dateTime, 'MM/dd/yyyy', this.locale);\n }\n\n getAge(dateOfBirth: string): number {\n // https://stackoverflow.com/a/7091965\n\n if (typeof dateOfBirth === 'string' && dateOfBirth.includes('-')) {\n dateOfBirth = dateOfBirth.split('-').join('/'); // 2020-04-03 giving a day off changing format to 2020/04/03\n }\n\n const today = new Date();\n const birthDate = new Date(dateOfBirth);\n\n let age = today.getFullYear() - birthDate.getFullYear();\n const monthDiff = today.getMonth() - birthDate.getMonth();\n if (monthDiff < 0 || (monthDiff === 0 && today.getDate() < birthDate.getDate())) {\n age--;\n }\n\n return age;\n }\n\n lessThanToday(date: Date): boolean {\n const compareDate = new Date(date);\n const today = new Date();\n today.setHours(0, 0, 0, 0);\n compareDate.setHours(0, 0, 0, 0);\n return compareDate.getTime() < today.getTime();\n }\n\n timeZoneReset(date: string) {\n if (!date.includes('T00:00:00')) {\n return date + 'T00:00:00';\n } else {\n return date;\n }\n }\n dateToString(date: Date): string {\n return (\n date.getFullYear() +\n '-' +\n (date.getMonth() + 1 < 10 ? '0' + (date.getMonth() + 1) : date.getMonth() + 1) +\n '-' +\n (date.getDate() < 10 ? '0' + date.getDate() : date.getDate())\n );\n }\n getTimezoneOffset(data: any) {\n const date = new Date(data);\n date.setMinutes(date.getMinutes() + date.getTimezoneOffset());\n return date;\n }\n}\n","import { Injectable } from '@angular/core';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class DevService {\n isDev() {\n let devConfig = undefined;\n try {\n devConfig = localStorage.getItem('__qp_dev_config');\n } catch (ex) {\n console.log('Nonexisting or invalid sessionInfo in sessionStorage');\n return;\n }\n return !!devConfig;\n }\n\n enableDev(yesOrNo: boolean) {\n if (yesOrNo) {\n localStorage.setItem('__qp_dev_config', 'true');\n } else {\n localStorage.removeItem('__qp_dev_config');\n }\n }\n}\n","import { Injectable } from '@angular/core';\nimport { MatDialog } from '@angular/material/dialog';\nimport { CommonDialogComponent } from 'src/app/shared/components/common-dialog/common-dialog.component';\nimport { environment } from 'src/environments/config-environment';\nimport { DialogKey } from '../defs/defs';\nimport { default as defaultContent } from 'src/assets/json-config-files/default.json';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class DialogService {\n private dialogSrc: { [key in DialogKey]: string } = {\n [DialogKey.LoadError]: 'dialogLoadError',\n [DialogKey.SaveError]: 'dialogSaveError'\n };\n\n invokeDialog(dialog: MatDialog, key: DialogKey) {\n let data = this.dialogSrc[key];\n\n dialog\n .open(CommonDialogComponent, {\n disableClose: true,\n data: {\n data: defaultContent[data],\n errorDialog: true\n }\n })\n .afterClosed()\n .subscribe((response: string) => {\n if (response) {\n window.location.href = environment.accountUrl;\n } else {\n window.location.reload();\n }\n });\n }\n}\n","import { HttpClient } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { environment } from 'src/environments/config-environment';\n\nexport enum LogType {\n Event = 'event',\n Error = 'error'\n}\n\n/**\n * Log an error object to the nginx webserver by requesting a resource with the encoded error object\n * as a query parameter.\n * - stringify and base64 encode the error object\n * - store error object(s) in sessionStorage (localStorage?) so that sending it to the backend gets retried in case of failures\n *\n * Use in the app:\n *\n * const err = {statusCode: res.status, message: res.message, userId: , queryUrl: this.processLoqQueue())\n }\n\n log(logObj: any, logType?: LogType) {\n if (!logObj) {\n return;\n }\n let logObjAsString = undefined;\n\n for (let key in logObj) {\n if (logObj.hasOwnProperty(key)) {\n let value = logObj[key];\n if (value instanceof Object) {\n // stringify and base64 encode log object properties that are objects\n value = JSON.stringify(value);\n value = btoa(value);\n }\n logObjAsString = logObjAsString ? logObjAsString + ',' + key + '=' + value : key + '=' + value;\n }\n }\n this.processLoqQueue(logObjAsString, logType);\n }\n\n private processLoqQueue(logObjAsString, logType?: LogType) {\n if (!logObjAsString) {\n return;\n }\n\n let logUrl = logType === LogType.Event ? environment.eventLogUrl : environment.errorLogUrl;\n let url = window.location.origin + logUrl;\n\n this.processing = true;\n this.http.post(url, logObjAsString, { responseType: 'text' }).subscribe(\n res => {\n this.processing = false;\n },\n err => {\n console.log('error:', err);\n this.processing = false;\n }\n );\n }\n\n private getHeadEntry(): string {\n const entries = sessionStorage.getItem(this.LOG_QUEUE_KEY);\n if (!entries) {\n return undefined;\n }\n let entry = entries.substring(0, entries.indexOf(this.SEP));\n return entry;\n }\n\n private removeHeadEntry() {\n let entries = sessionStorage.getItem(this.LOG_QUEUE_KEY);\n if (!entries) {\n return;\n }\n entries = entries.substring(entries.indexOf(this.SEP) + 1, entries.length);\n sessionStorage.setItem(this.LOG_QUEUE_KEY, entries);\n }\n}\n","import { Injectable } from '@angular/core';\nimport { ApiService } from './api.service';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class PropertiesService {\n constructor(private api: ApiService) {}\n}\n","import { HttpClient, HttpHeaders, HttpParams } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { map } from 'rxjs/operators';\nimport { Observable, ReplaySubject, from } from 'rxjs';\nimport { ApiService } from './api.service';\nimport { PropertiesService } from './properties.service';\nimport { BehaviorSubject } from 'rxjs/internal/BehaviorSubject';\nimport { DateService } from './date.service';\nimport { UserSessionService } from './user-session.service';\nimport { LogType, LoggingService } from './logging.service';\nimport { environment } from 'src/environments/config-environment';\nimport { DevService } from 'src/app/shared/services/dev.service';\nimport { QuestionnaireDocument } from '../models/questionnaire-document';\nimport { QuestionnaireForm } from '../models/questionnaire-form';\nimport { Questionnaire } from '../utils/questionnaire';\nimport {\n ValidateAndFixQaResponsesResult,\n validateAndFixQaResponses\n} from '../../shared/utils/payload-processing/validate-and-fix-qa-responses';\nimport { SaveRequest, SaveResult } from '../defs/defs';\nimport { SparsifyQaPayload } from '../../shared/utils/sparsify-qa-payload';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class QuestionnairService {\n private satisfactoryConditions = new Array();\n\n private conditionSubject = new ReplaySubject(1);\n conditionSubject$: Observable = this.conditionSubject.asObservable();\n activationPortalApiEndPoint: string;\n\n private formData = {};\n previousRoute: any;\n indexesToShow: string[] = [];\n showFollowUp$ = new BehaviorSubject([]);\n activeTerminatorList = [];\n activeTerminators$ = new BehaviorSubject([]);\n totalPages: number;\n saveUrl = 'health-question-responses';\n getUrl = 'health-questions';\n urlQueryParams = {};\n isPageReloaded = false;\n previousPageNo = null;\n pageTitle = null;\n private editMode = false;\n\n private questionnaireDocument: QuestionnaireDocument = undefined;\n private questionnaireForm: QuestionnaireForm = undefined;\n\n constructor(\n public apiService: ApiService,\n public propertiesService: PropertiesService,\n private http: HttpClient,\n private dateService: DateService,\n private userSessionService: UserSessionService,\n private devService: DevService,\n private logging: LoggingService\n ) { }\n\n setEditMode(editMode) {\n this.editMode = editMode;\n }\n\n getEditMode() {\n return this.editMode;\n }\n\n getDocData() {\n return this.questionnaireDocument ? this.questionnaireDocument.getData() : undefined;\n }\n\n setQuestionnaireDocument(questionnaireDocument: QuestionnaireDocument) {\n this.questionnaireDocument = questionnaireDocument;\n this.totalPages = this.questionnaireDocument.getTotalPages();\n this.questionnaireForm = new QuestionnaireForm(questionnaireDocument);\n }\n\n getQuestionnaireDocument(): QuestionnaireDocument {\n return this.questionnaireDocument;\n }\n\n /**\n * Find questions of each page from JSON qAndAGroups by page/sequence number\n * @param groups Array of Q/A groups or pages, qAndAGroups in JSON\n * @param sequence group sequence number or page number\n * @returns Q/A from each group/page\n */\n\n setSatisfactoryConditions(condition: any) {\n if (!this.satisfactoryConditions.includes(condition)) {\n this.satisfactoryConditions.push(condition);\n this.conditionSubject.next(this.satisfactoryConditions);\n }\n }\n getSatisfactoryConditions() {\n return this.satisfactoryConditions;\n }\n\n removeSatisfactoryConditions(condition: any) {\n var index = this.satisfactoryConditions.indexOf(condition);\n if (index !== -1) {\n this.satisfactoryConditions.splice(index, 1);\n }\n }\n async getQuestionaireData$(): Promise {\n const backendRequest = () => {\n let queryParams = new HttpParams();\n queryParams = queryParams.append('kitId', this.urlQueryParams['activation-code']);\n queryParams = queryParams.append('fullfillmentOrderId', this.urlQueryParams['fulfillment-order']);\n let headers = new HttpHeaders();\n headers = headers.append('x-Access-Token', sessionStorage.getItem('authToken'));\n const prsId = JSON.parse(atob(sessionStorage.getItem('idToken').split('.')[1])).PatientProfileId;\n return this.http\n .get(this.getActivationPortalApiEndPoint() + `${prsId}/` + this.getUrl, {\n params: queryParams,\n headers: headers\n })\n .toPromise();\n };\n return this.executeWithRetry$(backendRequest);\n }\n\n saveFormData(currentPage, formData) {\n this.questionnaireForm.setFormAnswerInJsonBySequence(currentPage, formData);\n }\n\n // save\n async save$(saveRequest: SaveRequest): Promise {\n if (saveRequest.formData) {\n this.questionnaireForm.setFormAnswerInJsonBySequence(saveRequest.currentPage, saveRequest.formData);\n }\n let body = this.questionnaireDocument.getData();\n\n let saveResult: SaveResult = { savedAsCompleted: false, payloadDataFixed: false };\n\n // validate payload\n let validateAndFixQaResponsesResult: ValidateAndFixQaResponsesResult = undefined;\n\n // only validate non-HRA QA for now ... HRA still writes 'null' values in some scenarios ... need to fix\n if (!this.questionnaireDocument.isHra()) {\n validateAndFixQaResponsesResult = validateAndFixQaResponses(body);\n }\n if (validateAndFixQaResponsesResult && validateAndFixQaResponsesResult.fixedPayload) {\n body = validateAndFixQaResponsesResult.fixedPayload;\n body.header.lastPage = validateAndFixQaResponsesResult.qAndAGroupSequence; // set last page to the page where the payload was fixed\n saveResult.payloadDataFixed = true;\n } else {\n body.header.lastPage = saveRequest.currentPage;\n if (saveRequest.saveAsCompleted) {\n body.header.complete = true;\n saveResult.savedAsCompleted = true;\n }\n }\n\n if (this.questionnaireDocument.isHra()) {\n body.hraUserResponse = {\n QuestionaireResponses: Questionnaire.hraResponsesSummary(body)\n };\n }\n\n try {\n await this.saveQuestionaireData$(body);\n\n const requestLogEntry = {\n method: saveRequest.origin,\n requestBody: SparsifyQaPayload.sparsify(body)\n };\n this.logging.log(requestLogEntry, LogType.Event);\n return saveResult;\n } catch (err) {\n const error = {\n status: err.status,\n message: err.message,\n desc: err.error?.correlationId + ' ' + err.error?.fault?.type + ' ' + err.error?.fault?.message[0]\n };\n this.logging.log(error, LogType.Error);\n return Promise.reject(err);\n }\n }\n\n private async saveQuestionaireData$(body: any): Promise {\n const backendRequest = () => {\n const prsId = JSON.parse(atob(sessionStorage.getItem('idToken').split('.')[1])).PatientProfileId;\n let headers = new HttpHeaders();\n headers = headers.append('x-Access-Token', sessionStorage.getItem('authToken'));\n return this.http\n .post(this.getActivationPortalApiEndPoint() + `${prsId}/` + this.saveUrl, body, {\n headers: headers\n })\n .toPromise();\n };\n return this.executeWithRetry$(backendRequest);\n }\n\n // attempt backend request twice, refreshing access token if needed\n private async executeWithRetry$(backendRequest: () => Promise): Promise {\n for (let numAttempts = 0; numAttempts < 2; numAttempts++) {\n let headers = new HttpHeaders();\n headers = headers.append('x-Access-Token', sessionStorage.getItem('authToken'));\n\n try {\n let res = await backendRequest();\n return Promise.resolve(res);\n } catch (err) {\n if (numAttempts < 1) {\n try {\n await this.userSessionService.refreshAccessToken().toPromise();\n } catch (err) {\n return Promise.reject(err);\n }\n } else {\n return Promise.reject(err);\n }\n }\n }\n }\n\n downloadPDF(): Observable {\n const options = { responseType: 'blob' as 'json' };\n return this.http\n .get('../../assets/Activation _FAQs.pdf', options)\n .pipe(map(res => new Blob([res], { type: 'application/pdf' })));\n }\n\n private getActivationPortalApiEndPoint(): string {\n return this.devService.isDev()\n ? environment.activationPortalMockApiEndPoint\n : environment.activationPortalApiEndPoint;\n }\n}\n","import { Injectable } from '@angular/core';\nimport { HttpClient, HttpParams } from '@angular/common/http';\n\nimport { fromEvent, merge, Subject, Observable, throwError, of } from 'rxjs';\nimport { finalize, map } from 'rxjs/operators';\n\nimport { environment } from 'src/environments/config-environment';\n\n/**\n * Track user activity on the Portal pages and refresh CAS access tokens\n * if they get close to expiration.\n */\n@Injectable({\n providedIn: 'root'\n})\nexport class UserSessionService {\n private checkSessionStateIntervalInMilliSeconds = 2 * 60 * 1000;\n private idleTimeoutInMilliSeconds = environment.idleTimeOut * 60 * 1000;\n private accessTokenRetirementSeasonInMilliSeconds = 8 * 60 * 1000; // refresh access token before it expires\n private accessTokenRefreshInProgress = false;\n private lastActivityTimestamp: number; // Unix Epoch milliseconds\n private idleEventSubject$: Subject = new Subject();\n private userActivityEvents$;\n\n constructor(private http: HttpClient) {\n this.lastActivityTimestamp = Date.now();\n\n this.userActivityEvents$ = merge(\n fromEvent(document, 'mousemove'),\n fromEvent(document, 'click'),\n fromEvent(document, 'mousedown'),\n fromEvent(document, 'keypress'),\n fromEvent(document, 'DOMMouseScroll'),\n fromEvent(document, 'mousewheel'),\n fromEvent(document, 'touchmove'),\n fromEvent(document, 'MSPointerMove'),\n fromEvent(window, 'mousemove'),\n fromEvent(window, 'resize')\n );\n this.userActivityEvents$.subscribe(ev => {\n this.lastActivityTimestamp = Date.now();\n });\n\n setInterval(() => {\n this.checkSessionState();\n }, this.checkSessionStateIntervalInMilliSeconds);\n }\n\n checkSessionState() {\n let now = Date.now();\n\n // send idle event when there hasn't been activity\n if (now - this.lastActivityTimestamp > this.idleTimeoutInMilliSeconds) {\n this.idleEventSubject$.next(true);\n return;\n }\n\n this.refreshAccessTokenIfNecessary();\n }\n\n idleEvent$(): Subject {\n return this.idleEventSubject$;\n }\n\n public refreshAccessToken(): Observable {\n return this.refreshAccessTokenInternal(true);\n }\n\n private refreshAccessTokenInternal(force: boolean = false): Observable {\n if (environment.local || this.accessTokenRefreshInProgress) {\n return of(undefined);\n }\n\n let sessionInfo = undefined;\n try {\n sessionInfo = JSON.parse(sessionStorage.getItem('sessionInfo'));\n } catch (ex) {\n console.log('Nonexisting or invalid sessionInfo in sessionStorage');\n return throwError('Nonexisting or invalid sessionInfo in sessionStorage');\n }\n\n if (!force && sessionInfo.expiresAt - this.accessTokenRetirementSeasonInMilliSeconds > Date.now()) {\n return of(undefined);\n }\n\n const payload = new HttpParams()\n .append('grant_type', 'refresh_token')\n .append('refresh_token', sessionInfo.refreshToken)\n .append('client_id', environment.oauthClientId);\n\n this.accessTokenRefreshInProgress = true;\n\n return this.http\n .post(environment.oauthTokenUrl, payload, {\n headers: {\n 'Content-Type': 'application/x-www-form-urlencoded'\n }\n })\n .pipe(\n finalize(() => (this.accessTokenRefreshInProgress = false)),\n map((response: any) => {\n let refreshedSessionInfo = {\n accessToken: response.access_token,\n refreshToken: sessionInfo.refreshToken,\n expiresAt: 1000 * response.expires_in + Date.now()\n };\n sessionStorage.setItem('sessionInfo', JSON.stringify(refreshedSessionInfo));\n sessionStorage.setItem('authToken', response.access_token);\n sessionStorage.setItem('idToken', response.id_token);\n return response;\n })\n );\n }\n\n private refreshAccessTokenIfNecessary() {\n this.refreshAccessTokenInternal().subscribe(\n () => {},\n err => this.handleAuthError(err)\n );\n }\n\n private handleAuthError(err) {\n console.log(err);\n }\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule, DatePipe } from '@angular/common';\nimport { RouterModule } from '@angular/router';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatButtonModule } from '@angular/material/button';\nimport { FlexLayoutModule } from '@angular/flex-layout';\nimport { CommonDialogComponent } from './components/common-dialog/common-dialog.component';\nimport { TooltipComponent } from './components/tooltip/tooltip.component';\nimport { MatTooltipModule } from '@angular/material/tooltip';\nimport { ProgressbarComponent } from './components/progressbar/progressbar.component';\nimport { MatProgressBarModule } from '@angular/material/progress-bar';\nimport { SafeHtmlPipe } from './pipes/safe-html.pipe';\nimport { ReactiveFormsModule } from '@angular/forms';\nimport { MaterialModule } from './material.module';\nimport { DateFormatterDirective } from './directives/date-formatter.directive';\nimport { ValidationErrorPipe } from './pipes/validation-error.pipe';\nimport { OnlyNumbersDirective } from './directives/only-numbers.directive';\nimport { ErrorClassDirective } from './directives/error-class.directive';\nimport { ReviewDetailsComponent } from './pages/review-details/review-details.component';\nimport { PhoneFormatterDirective } from './directives/phone-formatter.directive';\nimport { ConfirmationComponent } from './pages/confirmation/confirmation.component';\nimport { NgbTooltipModule } from '@ng-bootstrap/ng-bootstrap';\nimport { RemoveSubStringPipe } from './pipes/remove-sub-string.pipe';\nimport { TelephonePipe } from './pipes/telephone.pipe';\nimport { ToasterComponent } from './components/toaster/toaster.component';\nimport { ContentMediaComponent } from './components/content-media/content-media.component';\nimport { VideoDialogComponent } from './components/video-dialog/video-dialog.component';\nimport { ErrorDialogComponent } from './components/error-dialog/error-dialog.component';\nimport { FooterComponent } from './components/footer/footer.component';\nimport { VideoJsComponent } from './components/video-js/video-js-component';\nimport { BuildVersionComponent } from './components/build-version/build-version.component';\n\n@NgModule({\n declarations: [\n CommonDialogComponent,\n TooltipComponent,\n ProgressbarComponent,\n SafeHtmlPipe,\n DateFormatterDirective,\n ValidationErrorPipe,\n OnlyNumbersDirective,\n ErrorClassDirective,\n ReviewDetailsComponent,\n PhoneFormatterDirective,\n ConfirmationComponent,\n RemoveSubStringPipe,\n TelephonePipe,\n ToasterComponent,\n ContentMediaComponent,\n VideoDialogComponent,\n ErrorDialogComponent,\n FooterComponent,\n VideoJsComponent,\n BuildVersionComponent\n ],\n imports: [\n CommonModule,\n RouterModule,\n MatIconModule,\n MatButtonModule,\n FlexLayoutModule,\n MatTooltipModule,\n MatProgressBarModule,\n ReactiveFormsModule,\n MaterialModule,\n NgbTooltipModule\n ],\n exports: [\n CommonDialogComponent,\n TooltipComponent,\n ProgressbarComponent,\n SafeHtmlPipe,\n DateFormatterDirective,\n ValidationErrorPipe,\n OnlyNumbersDirective,\n ErrorClassDirective,\n ReviewDetailsComponent,\n PhoneFormatterDirective,\n ConfirmationComponent,\n RemoveSubStringPipe,\n TelephonePipe,\n ToasterComponent,\n ContentMediaComponent,\n VideoDialogComponent,\n ErrorDialogComponent,\n FooterComponent,\n VideoJsComponent,\n BuildVersionComponent\n ],\n providers: [DatePipe],\n entryComponents: [ToasterComponent]\n})\nexport class SharedModule {}\n","import { FormControl } from '@angular/forms';\nimport { DateService } from '../services/date.service';\n\nexport class CustomDateValidators {\n static generalValidations(): any {\n return (control: any) => {\n return this.triggerValidations(control, null, null, false);\n };\n }\n\n static triggerValidations(\n control: any,\n restrictions: any,\n dateService: any,\n includeAgeRestrictions: boolean = true\n ) {\n let controlValue: string = control.value;\n if (controlValue && controlValue.indexOf('-') === -1 && controlValue.length === 8) {\n controlValue = `${controlValue.substring(0, 4)}-${controlValue.substring(4, 2)}-${controlValue.substring(\n 6,\n 2\n )}`;\n }\n\n if (this.checkingDateFormat(controlValue)) {\n return { invalidDateNew: true };\n } else if (this.checkInvalidMonth(controlValue)) {\n return this.checkInvalidMonth(controlValue);\n } else if (this.checkInvalidDay(controlValue)) {\n return this.checkInvalidDay(controlValue);\n } else if (this.checkInvalidYear(controlValue)) {\n return this.checkInvalidYear(controlValue);\n } else if (this.checkMinMaxYearDay(controlValue)) {\n return this.checkMinMaxYearDay(controlValue);\n } else if (\n includeAgeRestrictions &&\n this.checkCartProductMinMaxValidation(controlValue, restrictions, dateService)\n ) {\n return this.checkCartProductMinMaxValidation(controlValue, restrictions, dateService);\n }\n }\n\n static checkingDateFormat(controlValue: string) {\n const letters = /^\\d{4}-\\d{2}-\\d{2}$/;\n return !controlValue.match(letters);\n }\n\n static checkInvalidYear(controlValue: string) {\n const minDate = new Date();\n const currentYear = minDate.getFullYear();\n minDate.setFullYear(currentYear - 120);\n if (\n controlValue.split('-').length === 3 &&\n (+controlValue.split('-')[0] < minDate.getFullYear() || controlValue.split('-')[0].length < 3)\n ) {\n return { invalidYear: true };\n }\n }\n\n static checkInvalidMonth(controlValue: string, isMMDD: boolean = false) {\n if (+controlValue.split('-')[1] > 12 || +controlValue.split('-')[1] <= 0) {\n if (isMMDD) {\n return { invalidDateMonth: true };\n } else {\n return { invalidMonth: true };\n }\n }\n }\n\n static checkInvalidDay(controlValue: string, isMMDD: boolean = false) {\n if (!isMMDD) {\n if (\n !this.isValid(+controlValue.split('-')[1] - 1, +controlValue.split('-')[2], +controlValue.split('-')[0])\n ) {\n return { invalidDay: true };\n }\n } else {\n if (\n !this.isValid(+controlValue.split('-')[1] - 1, +controlValue.split('-')[2], +new Date().getFullYear())\n ) {\n return { invalidDateMonth: true };\n }\n }\n }\n\n static checkMinMaxYearDay(controlValue: string) {\n const selectedDate = new Date(controlValue);\n const minDate = new Date();\n const currentYear = minDate.getFullYear();\n minDate.setFullYear(currentYear - 120);\n if (selectedDate > new Date()) {\n return { maxDate: new Date() };\n }\n if (selectedDate < minDate) {\n return { minDate: minDate };\n }\n }\n\n static checkCartProductMinMaxValidation(controlValue: any, restrictions: any, dateService: DateService) {\n if (\n restrictions.min <= dateService.getAge(controlValue) &&\n restrictions.max >= dateService.getAge(controlValue)\n ) {\n return null;\n } else {\n return { ageExcluded: true };\n }\n }\n\n static daysInMonth(month: any, year: any) {\n // m is 0 indexed: 0-11\n switch (month) {\n case 1:\n return (year % 4 === 0 && year % 100) || year % 400 === 0 ? 29 : 28;\n case 8:\n case 3:\n case 5:\n case 10:\n return 30;\n default:\n return 31;\n }\n }\n\n static isValid(month: any, day: any, year: any) {\n return month >= 0 && month < 12 && day > 0 && day <= this.daysInMonth(month, year);\n }\n static generalDDMMValidations(): any {\n return (control: FormControl) => {\n return this.triggerDDMMValidations(control);\n };\n }\n\n static triggerDDMMValidations(control: any) {\n let controlValue: string = control.value;\n\n if (controlValue && controlValue.indexOf('/') === -1 && controlValue.length === 4) {\n //01012000\n controlValue = `${controlValue.substr(0, 2)}/${controlValue.substr(2, 2)}`;\n }\n\n if (this.checkingDateFormat(controlValue)) {\n return { invalidDateMonth: true };\n } else if (this.checkInvalidMonth(controlValue, true)) {\n return this.checkInvalidMonth(controlValue, true);\n } else if (this.checkInvalidDay(controlValue, true)) {\n return this.checkInvalidDay(controlValue, true);\n }\n }\n}\n","export enum VisitationResult {\n CONTINUE,\n ABORT\n}\n\nexport class NodeStack {\n nodes: any = [];\n\n constructor(rootNode: any) {\n this.nodes.push(rootNode);\n }\n\n push(node: any): void {\n this.nodes.push(node);\n }\n pop(): any {\n return this.nodes.pop();\n }\n current(): any {\n return this.nodes[this.nodes.length - 1];\n }\n}\n\n/*\n * The client provides a TraversalContext to the TreeWalker. It allows the client to\n * keep track of the state of the traversal. For example, the client may want to keep\n * track of the current path in the tree.\n * On each node that the TreeWalker visits, the TraversalContext's visit method is called\n * on which the client can perform any action it wants.\n *\n * The TraversalContext is also be used to abort the traversal.\n */\nexport abstract class TraversalContext {\n abstract visit(nodeStack: NodeStack): VisitationResult;\n}\n\nexport class TreeWalker {\n static walk(nodeStack: NodeStack, tc: TraversalContext): VisitationResult {\n const node = nodeStack.current();\n let res = tc.visit(nodeStack);\n\n if (res === VisitationResult.ABORT) {\n return VisitationResult.ABORT;\n }\n\n if (Array.isArray(node)) {\n for (let i = 0; i < node.length; ++i) {\n nodeStack.push(node[i]);\n res = this.walk(nodeStack, tc);\n if (res === VisitationResult.ABORT) {\n return VisitationResult.ABORT;\n }\n nodeStack.pop();\n }\n } else if (node && typeof node === 'object') {\n for (let key of Object.keys(node)) {\n nodeStack.push(node[key]);\n res = this.walk(nodeStack, tc);\n if (res === VisitationResult.ABORT) {\n return VisitationResult.ABORT;\n }\n nodeStack.pop();\n }\n }\n\n return VisitationResult.CONTINUE;\n }\n}\n","import { VisitationResult, TraversalContext, TreeWalker, NodeStack } from './tree-walker';\n\n/* TraversalContext for detecting invalid 'responses' arrays.\n * We do two things here:\n * 1. Abort the traversal if we find an invalid 'responses' array\n * 2. Keep track of the current qAndAGroupSequence we are in\n */\nclass DetectTraversalContext extends TraversalContext {\n qAndAGroupSequence: number = -1; // in which qAndAGroup are we currently iterating\n\n constructor() {\n super();\n }\n\n visit(nodeStack: NodeStack): VisitationResult {\n // things become only interesting, if we are at least 3 levels deep\n // as we need a grandparent to check for 'qAndAGroups'/'sequence' we are in\n if (nodeStack.nodes.length < 3) {\n return VisitationResult.CONTINUE;\n }\n const node = nodeStack.current();\n const grandParent = nodeStack.nodes[nodeStack.nodes.length - 3];\n\n if (!node || typeof node !== 'object') {\n return VisitationResult.CONTINUE;\n }\n\n if (node['responses'] && !this.isResponsesArrayValid(node['responses'])) {\n return VisitationResult.ABORT;\n }\n\n if (grandParent['qAndAGroups'] && node['sequence']) {\n // set the current qAndAGroupSequence we are in\n this.qAndAGroupSequence = node['sequence'];\n }\n return VisitationResult.CONTINUE;\n }\n\n private isResponsesArrayValid(node: any): boolean {\n if (!Array.isArray(node)) {\n return false;\n }\n\n for (let i = 0; i < node.length; ++i) {\n if (node[i] === null || node[i] === undefined) {\n return false;\n }\n }\n return true;\n }\n}\n\n/* TraversalContext to fix the QA payload.\n * We do this setting all 'responses' arrays to empty arrays, starting from the\n * specified qAndAGroupSequenceCutoff.\n */\nclass FixTraversalContext extends TraversalContext {\n qAndAGroupSequence: number = -1; // in which qAndAGroup are we currently iterating\n qAndAGroupSequenceCutoff: number; // at which node do we start cleaning up the tree\n\n constructor(cutoff?: number) {\n super();\n this.qAndAGroupSequenceCutoff = cutoff ?? Number.MAX_SAFE_INTEGER;\n }\n\n visit(nodeStack: NodeStack): VisitationResult {\n const node = nodeStack.current();\n if (!node || typeof node !== 'object') {\n return VisitationResult.CONTINUE;\n }\n\n if (nodeStack.nodes.length > 2) {\n const grandParent = nodeStack.nodes[nodeStack.nodes.length - 3];\n if (grandParent['qAndAGroups'] && node['sequence']) {\n // set the current qAndAGroupSequence we are in\n this.qAndAGroupSequence = node['sequence'];\n }\n }\n\n if (node['responses'] && this.qAndAGroupSequence >= this.qAndAGroupSequenceCutoff) {\n node['responses'] = [];\n }\n\n return VisitationResult.CONTINUE;\n }\n}\n\nexport interface ValidateAndFixQaResponsesResult {\n fixedPayload?: any;\n qAndAGroupSequence?: number;\n}\nexport function validateAndFixQaResponses(obj: any): ValidateAndFixQaResponsesResult {\n const tcDetect = new DetectTraversalContext();\n let res: VisitationResult = TreeWalker.walk(new NodeStack(obj), tcDetect);\n\n if (res === VisitationResult.CONTINUE) {\n // no invalid 'responses' found\n return {};\n }\n\n let clone = JSON.parse(JSON.stringify(obj));\n\n const tcCleanup = new FixTraversalContext(tcDetect.qAndAGroupSequence);\n TreeWalker.walk(new NodeStack(clone), tcCleanup);\n\n return { fixedPayload: clone, qAndAGroupSequence: tcDetect.qAndAGroupSequence };\n}\n","/**\n * This class is used to get the summary of the HRA responses as they need to be\n * attached to the HRA submission request.\n */\nexport class Questionnaire {\n public static hraResponsesSummary(questionnaire: any): any {\n const qAndAGroupsHra = questionnaire.qAndAGroups;\n return qAndAGroupsHra.reduce((acc, group) => {\n return [...acc, ...this.hraItemSummary(group)];\n }, []);\n }\n\n private static hraItemSummary(group: any): any {\n const itemConfigArray = group.itemConfig;\n const allCompleted = itemConfigArray.every(entry => entry.responses);\n\n if (itemConfigArray.length === 0 || !allCompleted) {\n return [];\n }\n return itemConfigArray.reduce((acc, itemConfig) => {\n let controlType = itemConfig?.answerConfig?.controlType;\n const responses =\n controlType === 'checkbox'\n ? this.hraCheckboxResponses(itemConfig)\n : this.hraNonCheckboxResponses(itemConfig);\n return [...acc, ...responses];\n }, []);\n }\n\n private static hraCheckboxResponses(itemConfig): any {\n const checkBoxesList = itemConfig?.answerConfig?.config;\n return checkBoxesList.map(checkbox => {\n const checkValue = itemConfig.responses.find(b => b.value === checkbox.value);\n return {\n Question: checkbox.value,\n Calculate: itemConfig.answerConfig.Calculate,\n Answer: checkbox.PossibleAnswers[checkValue ? 0 : 1].value,\n AnswerType: checkbox.PossibleAnswers[checkValue ? 0 : 1].AnswerType,\n AnswerTag: checkbox.PossibleAnswers[checkValue ? 0 : 1].AnswerTag\n };\n });\n }\n\n private static hraNonCheckboxResponses(itemConfig): any {\n let pAnswers: any;\n let PossibleAnswers = itemConfig?.answerConfig?.PossibleAnswers;\n return itemConfig.responses\n .filter(itemResponse => itemResponse)\n .map(resp => {\n if (PossibleAnswers && !resp.value) {\n pAnswers = this.getHraAnswerRangeDetails(PossibleAnswers, resp);\n }\n return {\n Question: itemConfig.subtitleInResponse ? itemConfig.subtitleAscii : itemConfig.titleAscii,\n Calculate: itemConfig.answerConfig.Calculate,\n Answer: resp?.value ? resp.value : resp,\n AnswerTag: resp?.AnswerTag || pAnswers?.AnswerTag || null,\n AnswerType: resp?.AnswerType || pAnswers?.AnswerType || null\n };\n });\n }\n\n private static getHraAnswerRangeDetails(PossibleAnswers, answer) {\n return PossibleAnswers.find(each => {\n let range = each.AnswerRange.split('-');\n return parseInt(range[0]) <= parseInt(answer) && parseInt(range[1]) >= parseInt(answer);\n });\n }\n}\n","export const regex = {\n lastName: `^([A-Za-z]+[A-Za-z' \\\\.,-]*[A-Za-z]+|[A-Za-z])$`,\n firstName: `^([A-Za-z]+[A-Za-z' ]*[A-Za-z]+|[A-Za-z])$`,\n password: `^[!@#\\\\$%\\\\^&\\\\*\\\\(\\\\)_\\\\+<>~\\\\?A-Za-z\\\\d ]+$`,\n //username: `^[!@\\\\$\\\\^&\\\\*\\\\(\\\\)_~\\\\?A-Za-z\\\\d \\\\.]+$`,\n username: `^([A-Za-z0-9]+[A-Za-z0-9 @.!$^&*_]*[A-Za-z0-9@.!$^&*_])$`,\n usernameCovid: `^([A-Za-z0-9-]+[A-Za-z0-9 @.!$^&*_-]*[A-Za-z0-9@.!$^&*_])$`,\n questionAnswer: `^[!@\\\\$\\\\^&\\\\*\\\\(\\\\)_~\\\\?A-Za-z\\\\d \\\\.]+$`,\n // address: `^[0-9A-Za-z,.#-]+[0-9A-Za-z' ]*$`,\n address: `^[0-9A-Za-z-,.#']+(\\\\s+[0-9A-Za-z-,.#']+)*$`,\n pin: `^[0-9A-Za-z]*$`,\n notPin: `[^0-9A-Za-z]`,\n name: `^[A-Za-z ,.''-]+$`,\n city: `^[A-Za-z]+[A-Za-z-./' ]*$`,\n middleInitial: `^[A-Za-z]$`,\n // phoneNumber: '^\\\\d{10}$',\n //phoneNumber: '^\\\\d{10}$|(\\\\d{3}-\\\\d{3}-\\\\d{4})$',\n phoneNumber: '^[2-9]\\\\d{10}$|([2-9]\\\\d{2}([-]?)\\\\d{3}([-]?)\\\\d{4})$',\n zipCode: `^\\\\d{5}(-\\\\d{4})?$`,\n noRandomCharacters1: `^([^<>\\\\\"'])*$`,\n noRandomCharacters2: `^([^~&^_|\\\\\\\\])*$`,\n alphaNumericWithRandomCharacters: `^[a-zA-Z0-9-' ]*$`,\n alphaWithRandomCharacters: `^[A-Za-z-./' ]*$`,\n ssn: '^\\\\d{4}$',\n directEmailAddress: '^[0-9a-zA-Z]([-.\\\\w]*[0-9a-zA-Z])*$',\n directEmailAddress2: '^[^\\\\.-].*[^\\\\.-]$',\n physicianName: `^([A-Za-z]+[A-Za-z' ]*[A-Za-z]+|[A-Za-z])$`,\n messageText: `^(?:[a-zA-Z0-9][a-zA-Z0-9 @.#!|%+=~;\"<>/\\n'-_(){}&$]*)?$`,\n noWhiteSpace: '^[^\\\\s]+(\\\\s+[^\\\\s]+)*$',\n invalidCharcters: `^[0-9A-Za-z']+(\\\\s+[0-9A-Za-z']+)*$`,\n invalidId: ``,\n ssnMask: `^[0-9]{9}$`,\n stateOrDlId: `^[0-9A-Za-z\\\\s]*$`,\n noSpaceGroupId: `^[^\\\\s^]*$`,\n groupNumber: `^[0-9A-Za-z-]*$`,\n insuranceName: `^[0-9A-Za-z\\\\s'-.]*$`,\n faxNumber: `^[0-9]\\\\d{10}$|([0-9]\\\\d{2}([-]?)\\\\d{3}([-]?)\\\\d{4})$`,\n faxRecipient: `^([A-Za-z0-z]+[A-Za-z' \\]*[A-Za-z]+|[A-Za-z])$`,\n noSpaceMemberId: `^[^\\\\s]*$`\n};\n","import { DateService } from '../services/date.service';\n\nexport class ServiceRegistry {\n static dateService: DateService = undefined;\n}\n","/*\nSparsify the QP payload to avoid sending unwanted data to the server.\nThis is intended to reduce the size of the payload so that the nginx 'client_body_buffer_size'\ndoesn't get exceeded.\n*/\nexport class SparsifyQaPayload {\n public static sparsify(obj: any) {\n if (!obj) {\n return obj;\n }\n // deep clone the object so we don't modify the original\n let clone = JSON.parse(JSON.stringify(obj));\n this.deleteUnwanted(clone);\n return clone;\n }\n\n private static deleteUnwanted(obj: any) {\n if (!obj) {\n return;\n }\n\n // first pass: delete all unwanted properties\n for (let key of Object.keys(obj)) {\n let value = obj[key];\n\n if (value === null || value === undefined) {\n delete obj[key];\n } else if (typeof value === 'object') {\n if (this.shouldPreserveObject(key)) {\n return;\n }\n this.deleteUnwanted(obj[key]);\n } else if (!this.isWanted(key)) {\n delete obj[key];\n }\n }\n\n // now delete all objects that are empty - i.e. empty arrays or empty objects\n this.isEmpty(obj);\n }\n\n private static isEmpty(obj: any): boolean {\n if (!obj) {\n return true;\n }\n if (typeof obj !== 'object') {\n return false;\n }\n if (Array.isArray(obj)) {\n while (true) {\n let index = this.findEmptyArrayEntry(obj);\n if (index === -1) {\n break;\n }\n obj.splice(index, 1);\n }\n return obj.length === 0;\n }\n\n for (let key of Object.keys(obj)) {\n if (this.isEmpty(obj[key])) {\n delete obj[key];\n }\n }\n return Object.keys(obj).length === 0;\n }\n\n private static findEmptyArrayEntry(arr: any): number {\n if (arr.length === 0) {\n return -1;\n }\n\n for (let i = 0; i < arr.length; i++) {\n if (this.isEmpty(arr[i])) {\n return i;\n }\n }\n return -1;\n }\n\n private static preserveObjects = ['responses'];\n static shouldPreserveObject(key: string) {\n return this.preserveObjects.includes(key);\n }\n\n private static wantedPrimitives = ['sequence', 'questionId', 'questionKey'];\n static isWanted(key: string) {\n return this.wantedPrimitives.includes(key);\n }\n}\n","import { FormArray, ValidatorFn } from '@angular/forms';\n\nexport class CustomValidators {\n static requireCheckboxesToBeCheckedValidator(id, minRequired = 1): ValidatorFn {\n return (formArray: FormArray) => {\n const totalSelected = formArray.controls\n .map(control => {\n return control.value[id];\n })\n .reduce((prev, next) => (next ? prev + next : prev), 0);\n return totalSelected >= minRequired ? null : { required: true };\n };\n }\n}\n","import { Component } from '@angular/core';\n\n@Component({\n selector: 'gss-toolbar-auth',\n templateUrl: './toolbar-auth.component.html'\n})\nexport class ToolbarAuthComponent {\n constructor() {}\n}\n","

    toolbar-auth works!

    \n","import { Component } from '@angular/core';\n\n@Component({\n selector: 'gss-toolbar-unauth',\n templateUrl: './toolbar-unauth.component.html'\n})\nexport class ToolbarUnauthComponent {\n constructor() {}\n}\n","

    toolbar-unauth works!

    \n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ToolbarAuthComponent } from './toolbar-auth/toolbar-auth.component';\nimport { ToolbarUnauthComponent } from './toolbar-unauth/toolbar-unauth.component';\nimport { ToolbarComponent } from './toolbar/toolbar.component';\nimport { FlexLayoutModule } from '@angular/flex-layout';\n\n@NgModule({\n declarations: [ToolbarAuthComponent, ToolbarUnauthComponent, ToolbarComponent],\n imports: [CommonModule, FlexLayoutModule],\n exports: [ToolbarAuthComponent, ToolbarUnauthComponent, ToolbarComponent]\n})\nexport class ToolbarModule {}\n","import { Component } from '@angular/core';\nimport { environment } from 'src/environments/config-environment';\nimport { DevService } from 'src/app/shared/services/dev.service';\n\n@Component({\n selector: 'gss-toolbar',\n templateUrl: './toolbar.component.html',\n styleUrls: ['./toolbar.component.scss']\n})\nexport class ToolbarComponent {\n designSystemUrl = environment.designSystemUrl;\n\n constructor(private devService: DevService) {}\n\n isDev(): boolean {\n return this.devService.isDev();\n }\n}\n","
    \n
    \n \n
    \n
    \n","export const buildVersion = {\n commitSha: '24a7ea98e4d5b460a934aaa1a332c2b5b8d7ea5a',\n commitBranch: 'release/1.1.0'\n};\n","// @ts-ignore\nexport const environment = window.__qp___config;\n","import { enableProdMode } from '@angular/core';\nimport { platformBrowserDynamic } from '@angular/platform-browser-dynamic';\n\nimport { AppModule } from './app/app.module';\nimport { environment } from './environments/config-environment';\n\nif (environment.production) {\n enableProdMode();\n}\n\nif (environment.local) {\n window.sessionStorage.setItem('idToken', environment.local.idToken);\n window.sessionStorage.setItem('authToken', environment.local.authToken);\n}\n\nplatformBrowserDynamic()\n .bootstrapModule(AppModule)\n .catch(err => console.error(err));\n","/* (ignored) */","/* (ignored) */"],"names":["EventEmitter","FormArray","FormControl","MAT_SELECT_CONFIG","BehaviorSubject","i0","ctx_r0","ctx_r20","ctx_r2","ctx_r27","ctx_r34","ctx_r5","ctx_r6","ctx_r7","ctx_r48","followUpQGroup_r45","ctx_r47","followUpQGroup_r59","ctx_r61","ctx_r65","ctx_r67","ctx_r71","ctx_r73","FollowupQuestionsComponent","constructor","fb","questionnairService","userAge","getQuestionnaireDocument","getUserAge","ngOnInit","originalParentArrayLength","parentArray","length","followUpQ","followUpArray","index","uniqueId","generateRandomId","answerConfig","_a","controlType","followUpQAndA","_b","addNestedFollowUpArray","followUpGroup","get","questionId","valueChanges","subscribe","data","handleDropdownOrRadioChange","value","patchValue","ngOnDestroy","setErrors","followUpArrayAdded","removeControl","i","removeAt","questionsGroup","parentQuestions","addControl","forEach","questionFollow","ind","group","nestedFollowUpResponsesByValue","nestedFollowUpResponses","parentValue","key","push","addQuestion","removeQuestion","splice","question","event","ques","uniqIdentifier","currentPage","conditionToAskMe","getConditionAnswer","indexesToShow","includes","indexOf","showFollowUp$","next","isControlValid","valid","handleCheckboxChange","checked","followUpIndex","formArray","at","reset","disableCheckboxesOnSingletonSelect","config","singleton","disabledCheckbox","disabledList$","enable","indexOfItem","showAddButton","showAdd","conditionToAsk","conditionName","condition","response","type","promptOnParentNotInSet","promptOnParentInSet","randomNumber","Math","floor","random","selectors","inputs","outputs","features","provide","useValue","overlayPanelClass","decls","vars","consts","template","i1","pipes","styles","Validators","combineLatest","environment","gssPopupData","default","defaultContent","hraData","CommonDialogComponent","ErrorDialogComponent","QuestionnaireDocument","LogType","CustomDateValidators","CustomValidators","DialogKey","ServiceRegistry","scWindow_r25","question_r15","ctx_r77","ctx_r125","option_r147","ctx_r150","question_r154","question_r170","followUpQGroup_r194","group_r190","ctx_r196","ctx_r203","ctx_r208","ctx_r210","ctx_r212","QuestionnairComponent","_location","activatedRoute","route","dialogService","dialog","dateService","api","logging","cdr","idleTimeOut","paramMap","queryParams","qparams","urlQueryParams","local","sessionStorage","getItem","navigate","getDocData","eventLogEntry","method","requestBody","log","Event","getQuestionaireResponse","addResponseToPage","window","scroll","top","left","behavior","doc","checkIfHraDataLoaded","isHra","checkHraPages","totalPages","loading","getQAndAGroupBySequence","buildForm","setProgressbarData","prePopulateFromJsonResponse","control","responses","toDate","map","resp","valueHtml","getQuestionaireData$","then","res","questionnaireDocument","setQuestionnaireDocument","testCode","header","kitId","setPageTitle","complete","lastPage","isPageReloaded","previousPageNo","err","error","status","message","desc","correlationId","fault","_c","_d","_e","Error","invokeDialog","LoadError","url","pageTitle","progress","round","form","itemConfig","requireCheckboxesToBeCheckedValidator","item","addFollowUpQuestions","validator","generalValidations","addValuechangeEvent","popUpConfig","popUpQues","popQuest","required","scrollWindow","responseArray","dynamicFollowUpList","JSON","parse","stringify","element","followUps","responseObject","find","followupFormArray","indx","jInd","dateInput","handleRadioChange","handleState","questionKey","conditionToTerminateAll","terminator","answerToTerminateInSet","ele","toString","addToActiveTerminatorList","removeFromActiveTerminatorList","ngAfterViewChecked","addClickListenerToPopUpButton","ngAfterContentChecked","detectChanges","id","statementId","document","querySelector","addEventListener","openPopup","bind","getElementById","classList","add","popupConfig","showDialogs","open","idx","disableClose","sub","afterClosed","unsubscribe","ev","buildConditionalQuestions","questionSource","sequence","getData","gender","filterConditionBySource","conditionKey","Object","keys","conditionValue","values","condi","removeSatisfactoryConditions","updateFormRelatedToCondition","touched","answerToOpenGroupInSet","pristine","satisfactoryConditions","setSatisfactoryConditions","terminatorCondition","name","activeTerminatorList","findIndex","terminatorItem","activeTerminators$","autoFocus","width","content","update","removeResponse","filteredArray","itemSc","removeFormControl","addFormControl","array","age","getAge","match","answerToTerminateMin","answerToTerminateMax","handleMultiSelectChange","selectAnswerConfig","singletonOption","filter","e","isSingletonSelected","some","option","singletonOptionSelected","disable","setCSSonElementInDropdown","setAttribute","getQuestionBySequence","questions","getAnswerById","answers","answer","answerId","onNext","removeListener","nextPage","previousRoute","getTotalPages","onSubmit","saveFormData","removeEventListener","onPrevious","back","obj","source","asArray","entries","filtered","fromEntries","saveAndExit","saveRequest","origin","formData","saveAsCompleted","save$","payloadDataFixed","location","reload","showSaveAndExitDialog","SaveError","openRefreshModel","accountUrl","isPageRefreshModelOpened","panelClass","pageRefresh","nextActions","showOnlySaveAndExitDialog","href","VideoDialogComponent","ctx_r14","ctx_r16","ctx_r18","ctx_r23","conditions_r20","ContentMediaComponent","ref","autoplay","fluid","controls","muted","sources","src","m3u8","mpd","currentGroup","videoId","displayObj","videoOptions","videoSourcesConfig","statement","popUp","getJsonFromValue","ngAfterViewInit","fullName","ORDERING_PHYSICIAN_NAME","firstName","getUserDemographics","lastName","innerHTML","replace","physician","first","last","video","ext","undefined","split","pop","videoSourceType","videoEnded","filterConditionById","onCbClick","isWatched","isCbChecked","controlName","seeking","preventDefault","forwardedTime","currentTime","supposedCurrentTime","timeupdate","downloadPDF","link","fileURL","URL","createObjectURL","viewQuery","SparsifyQaPayload","ctx_r26","ctx_r31","_r47","_r57","_r41","_r97","_r105","_r94","_r120","_r128","_r117","_r38","ReviewDetailsComponent","filterTitle","qAndAGroups","titleAscii","qAndAStore","orderHistoryUrl","requestLogEntry","sparsify","onEdit","page","setEditMode","HttpHeaders","HttpParams","ReplaySubject","QuestionnaireForm","Questionnaire","validateAndFixQaResponses","QuestionnairService","apiService","propertiesService","http","userSessionService","devService","Array","conditionSubject","asObservable","editMode","getEditMode","questionnaireForm","getSatisfactoryConditions","backendRequest","append","headers","prsId","atob","PatientProfileId","getActivationPortalApiEndPoint","getUrl","params","toPromise","executeWithRetry$","setFormAnswerInJsonBySequence","body","saveResult","savedAsCompleted","validateAndFixQaResponsesResult","fixedPayload","qAndAGroupSequence","hraUserResponse","QuestionaireResponses","hraResponsesSummary","saveQuestionaireData$","Promise","reject","post","saveUrl","numAttempts","resolve","refreshAccessToken","options","responseType","pipe","Blob","isDev","activationPortalMockApiEndPoint","activationPortalApiEndPoint","factory","providedIn"],"sourceRoot":"webpack:///"}